Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Event::Mouse doesn't capture modifiers in zellij #850

Open
TornaxO7 opened this issue Dec 8, 2023 · 1 comment
Open

Event::Mouse doesn't capture modifiers in zellij #850

TornaxO7 opened this issue Dec 8, 2023 · 1 comment

Comments

@TornaxO7
Copy link

TornaxO7 commented Dec 8, 2023

Describe the bug
If I'm in a session of zellij, hold shift and create some mouse-events, my shift key doesn't get registered.

To Reproduce
Steps to reproduce the behavior:

  1. Install zellij. (latest version: 0.39.2)
  2. create a session (just execute zellij)
  3. create a new project (cargo init demo && cd demo)
  4. cargo add crossterm
  5. Now add the following code to main.rs:
//! Demonstrates how to block read events.
//!
//! cargo run --example event-read

use std::io;

use crossterm::event::{
    KeyboardEnhancementFlags, PopKeyboardEnhancementFlags, PushKeyboardEnhancementFlags,
};
use crossterm::{
    event::{
        read, DisableBracketedPaste, DisableFocusChange, DisableMouseCapture, EnableBracketedPaste,
        EnableFocusChange, EnableMouseCapture, Event, KeyCode,
    },
    execute, queue,
    terminal::{disable_raw_mode, enable_raw_mode},
};

fn print_events() -> io::Result<()> {
    loop {
        let event = read()?;

        if let Event::Mouse(event) = event {
            println!("{:?}", event.modifiers);
        }

        if event == Event::Key(KeyCode::Esc.into()) {
            break;
        }
    }

    Ok(())
}

fn main() -> io::Result<()> {
    enable_raw_mode()?;

    let mut stdout = io::stdout();

    let supports_keyboard_enhancement = matches!(
        crossterm::terminal::supports_keyboard_enhancement(),
        Ok(true)
    );

    if supports_keyboard_enhancement {
        queue!(
            stdout,
            PushKeyboardEnhancementFlags(KeyboardEnhancementFlags::all())
        )?;
    }

    execute!(
        stdout,
        EnableBracketedPaste,
        EnableFocusChange,
        EnableMouseCapture,
    )?;

    if let Err(e) = print_events() {
        println!("Error: {:?}\r", e);
    }

    if supports_keyboard_enhancement {
        queue!(stdout, PopKeyboardEnhancementFlags)?;
    }

    execute!(
        stdout,
        DisableBracketedPaste,
        PopKeyboardEnhancementFlags,
        DisableFocusChange,
        DisableMouseCapture
    )?;

    disable_raw_mode()
}
6. Now start the program in the session: `cargo run` 7. Hold `shift` and roll your mouse wheel.

The output I'm getting:

KeyModifiers(0x0)
KeyModifiers(0x0)
KeyModifiers(0x0)
KeyModifiers(0x0)
KeyModifiers(0x0)
KeyModifiers(0x0)
KeyModifiers(0x0)
KeyModifiers(0x0)
KeyModifiers(0x0)
KeyModifiers(0x0)

Expected behavior
The following output:

KeyModifiers(SHIFT)
KeyModifiers(SHIFT)
KeyModifiers(SHIFT)
KeyModifiers(SHIFT)
KeyModifiers(SHIFT)
KeyModifiers(SHIFT)
KeyModifiers(SHIFT)

OS
NixOS

Terminal/Console

@TornaxO7
Copy link
Author

TornaxO7 commented Dec 8, 2023

hm... maybe I need to report this to zellij and not here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant