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

There are key combinations that don't work with Helix, such as "Ctrl + º" #4933

Open
varaskkar opened this issue Feb 1, 2024 · 13 comments
Open
Labels
bug Something isn't working

Comments

@varaskkar
Copy link

varaskkar commented Feb 1, 2024

What Operating System(s) are you seeing this problem on?

Linux X11

Which Wayland compositor or X11 Window manager(s) are you using?

Kwin

WezTerm version

wezterm 20230712-072601-f4abf8fd

Did you try the latest nightly build to see if the issue is better (or worse!) than your current version?

Yes, and I updated the version box above to show the version of the nightly that I tried

Describe the bug

There's key combinations I can't use with Helix Editor, even with disable_default_key_bindings enabled , for example Ctrl + º , Ctrl + . , Ctrl + backspace , and so on.

Do you know if it's really a bug or just that Wezterm doesn't allow them?

To Reproduce

Open Wezterm and run Helix, which has the following configuration in the config.toml file

[keys.normal]
"C-º" = ":config-reload"

Inside Helix, when pressing this key combination, it doesn't perform the indicated action (reload the configuration file). Instead, it seems to execute the key combination Ctrl + Space (since I've configured those keys to open a popup).

Configuration

local wezterm = require 'wezterm'
return {
disable_default_key_bindings = true
}

Expected Behavior

No response

Logs

No response

Anything else?

No response

@varaskkar varaskkar added the bug Something isn't working label Feb 1, 2024
@varaskkar varaskkar changed the title There're key combinations that don't work with Helix, such as "Ctrl + º" There are key combinations that don't work with Helix, such as "Ctrl + º" Feb 1, 2024
@zw963
Copy link

zw963 commented Feb 2, 2024

You can try debug use following process:

  1. Add config.debug_key_events = true to your's config.
  2. start wezterm from another terminal, e.g. konsole
  3. pressing the keybiding, and check the log from konsole.

@wez
Copy link
Owner

wez commented Feb 2, 2024

Please upgrade to at least the current version of wezterm, 20240128-202157-1e552d76 where there have been improvements to X11 keyboard handling. If it is still not quite right, then try a nightly build.

If you are still experiencing problems, see https://wezfurlong.org/wezterm/troubleshooting.html#debugging-keyboard-related-issues and share the debugging information here. It would also be helpful to know what keyboard layout is configured for your system.

@wez wez added the waiting-on-op Waiting for more information from the original poster label Feb 2, 2024
@varaskkar
Copy link
Author

varaskkar commented Feb 2, 2024

I've installed the latest version of flatpak but the error keeps happening. Running Wezterm from konsole and pressing Ctrl+º returns this:

~ on  master [?] took 31s 
➜ /usr/bin/flatpak run --branch=stable --arch=x86_64 --command=wezterm org.wezfurlong.wezterm start --cwd . 
15:01:25.915  INFO   wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(LeftControl), modifiers: NONE, leds: (empty), phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
15:01:25.915  INFO   wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: LeftControl, modifiers: NONE, leds: (empty), repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(LeftControl), modifiers: NONE, leds: (empty), phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
15:01:25.915  INFO   wezterm_gui::termwindow::keyevent > send to pane DOWN key=LeftControl mods=NONE
15:01:26.673  INFO   wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Grave), modifiers: CTRL, leds: (empty), phys_code: Some(Grave), raw_code: 49, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
15:01:26.673  INFO   wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('`'), modifiers: CTRL, leds: (empty), repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Grave), modifiers: CTRL, leds: (empty), phys_code: Some(Grave), raw_code: 49, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
15:01:26.674  INFO   wezterm_gui::termwindow::keyevent > send to pane DOWN key=Char('`') mods=CTRL
15:01:26.674  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "\0", Char('`') CTRL
15:01:26.949  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('º'), modifiers: CTRL, leds: (empty), repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Grave), modifiers: CTRL, leds: (empty), phys_code: Some(Grave), raw_code: 49, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
15:01:26.949  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Char('º') mods=CTRL
15:01:26.950  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(Grave), modifiers: CTRL, leds: (empty), phys_code: Some(Grave), raw_code: 49, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
15:01:26.950  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('`'), modifiers: CTRL, leds: (empty), repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Grave), modifiers: CTRL, leds: (empty), phys_code: Some(Grave), raw_code: 49, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
15:01:26.950  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Char('`') mods=CTRL
15:01:26.950  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "\0", Char('`') CTRL
15:01:26.951  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('º'), modifiers: CTRL, leds: (empty), repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Grave), modifiers: CTRL, leds: (empty), phys_code: Some(Grave), raw_code: 49, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
15:01:26.951  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Char('º') mods=CTRL
15:01:26.983  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: LeftControl, modifiers: CTRL, leds: (empty), repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(LeftControl), modifiers: CTRL, leds: (empty), phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
15:01:26.983  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=LeftControl mods=CTRL

If I press Ctrl + . it returns this:

~ on  master [?] took 3m28s 
➜ /usr/bin/flatpak run --branch=stable --arch=x86_64 --command=wezterm org.wezfurlong.wezterm start --cwd . 
15:10:18.023  INFO   wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(LeftControl), modifiers: NONE, leds: (empty), phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
15:10:18.023  INFO   wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: LeftControl, modifiers: NONE, leds: (empty), repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(LeftControl), modifiers: NONE, leds: (empty), phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
15:10:18.023  INFO   wezterm_gui::termwindow::keyevent > send to pane DOWN key=LeftControl mods=NONE
15:10:18.280  INFO   wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Period), modifiers: CTRL, leds: (empty), phys_code: Some(Period), raw_code: 60, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
15:10:18.280  INFO   wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('.'), modifiers: CTRL, leds: (empty), repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Period), modifiers: CTRL, leds: (empty), phys_code: Some(Period), raw_code: 60, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
15:10:18.280  INFO   wezterm_gui::termwindow::keyevent > send to pane DOWN key=Char('.') mods=CTRL
15:10:18.280  INFO   wezterm_term::terminalstate::keyboard > key_down: sending ".", Char('.') CTRL
15:10:18.366  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('.'), modifiers: CTRL, leds: (empty), repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Period), modifiers: CTRL, leds: (empty), phys_code: Some(Period), raw_code: 60, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
15:10:18.366  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Char('.') mods=CTRL
15:10:18.567  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: LeftControl, modifiers: CTRL, leds: (empty), repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(LeftControl), modifiers: CTRL, leds: (empty), phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
15:10:18.567  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=LeftControl mods=CTRL

Pressing Ctrl + backspace it returns this:

~ on  master [?] took 59s 
➜ /usr/bin/flatpak run --branch=stable --arch=x86_64 --command=wezterm org.wezfurlong.wezterm start --cwd . 
15:11:17.888  INFO   wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(LeftControl), modifiers: NONE, leds: (empty), phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
15:11:17.888  INFO   wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: LeftControl, modifiers: NONE, leds: (empty), repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(LeftControl), modifiers: NONE, leds: (empty), phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
15:11:17.888  INFO   wezterm_gui::termwindow::keyevent > send to pane DOWN key=LeftControl mods=NONE
15:11:18.117  INFO   wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Backspace), modifiers: CTRL, leds: (empty), phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
15:11:18.117  INFO   wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('\u{8}'), modifiers: CTRL, leds: (empty), repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Backspace), modifiers: CTRL, leds: (empty), phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
15:11:18.117  INFO   wezterm_gui::termwindow::keyevent > send to pane DOWN key=Backspace mods=CTRL
15:11:18.117  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "\u{8}", Backspace CTRL
15:11:18.173  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('\u{8}'), modifiers: CTRL, leds: (empty), repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Backspace), modifiers: CTRL, leds: (empty), phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
15:11:18.173  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Backspace mods=CTRL
15:11:18.350  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: LeftControl, modifiers: CTRL, leds: (empty), repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(LeftControl), modifiers: CTRL, leds: (empty), phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
15:11:18.350  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=LeftControl mods=CTRL

I'm from Spain and I use a standard Spanish keyboard with my KDE Manjaro (X11).
I don't really understand about keyboard layouts but I use the generic one that comes with KDE after installation.

keyboard layout

These last days I've been testing several terminals (for Helix) and the truth is that these key combinations don't work with Wezterm or Kitty but they do work with Alacritty.

I like Wezterm a lot and I would prefer to use it since it has a built-in multiplexer.

@github-actions github-actions bot removed the waiting-on-op Waiting for more information from the original poster label Feb 2, 2024
@wez
Copy link
Owner

wez commented Feb 2, 2024

Please try the nightly appimage download; the nightly is not available in flatpak due to flatpak release policies.

@wez wez added the waiting-on-op Waiting for more information from the original poster label Feb 2, 2024
@varaskkar
Copy link
Author

I also have the same problem with WezTerm-20240128-202157-1e552d76-Ubuntu20.04.AppImage

When I run it from konsole to debug, and press Ctrl + º return this:

~/Descargas on  master [?] 
➜ ./WezTerm-20240128-202157-1e552d76-Ubuntu20.04.AppImage
16:37:43.242  INFO   wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(LeftControl), modifiers: NONE, leds: (empty), phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
16:37:43.242  INFO   wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: LeftControl, modifiers: NONE, leds: (empty), repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(LeftControl), modifiers: NONE, leds: (empty), phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
16:37:43.242  INFO   wezterm_gui::termwindow::keyevent > send to pane DOWN key=LeftControl mods=NONE
16:37:43.507  INFO   wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Grave), modifiers: CTRL, leds: (empty), phys_code: Some(Grave), raw_code: 49, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
16:37:43.507  INFO   wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('`'), modifiers: CTRL, leds: (empty), repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Grave), modifiers: CTRL, leds: (empty), phys_code: Some(Grave), raw_code: 49, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
16:37:43.507  INFO   wezterm_gui::termwindow::keyevent > send to pane DOWN key=Char('`') mods=CTRL
16:37:43.507  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "\0", Char('`') CTRL
16:37:43.664  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('º'), modifiers: CTRL, leds: (empty), repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Grave), modifiers: CTRL, leds: (empty), phys_code: Some(Grave), raw_code: 49, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
16:37:43.664  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Char('º') mods=CTRL
16:37:43.730  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: LeftControl, modifiers: CTRL, leds: (empty), repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(LeftControl), modifiers: CTRL, leds: (empty), phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
16:37:43.730  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=LeftControl mods=CTRL

Pressing Ctrl + . return this:

~/Descargas on  master [?] 
➜ ./WezTerm-20240128-202157-1e552d76-Ubuntu20.04.AppImage
16:39:43.833  INFO   wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(LeftControl), modifiers: NONE, leds: (empty), phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
16:39:43.834  INFO   wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: LeftControl, modifiers: NONE, leds: (empty), repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(LeftControl), modifiers: NONE, leds: (empty), phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
16:39:43.834  INFO   wezterm_gui::termwindow::keyevent > send to pane DOWN key=LeftControl mods=NONE
16:39:44.085  INFO   wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Period), modifiers: CTRL, leds: (empty), phys_code: Some(Period), raw_code: 60, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
16:39:44.086  INFO   wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('.'), modifiers: CTRL, leds: (empty), repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Period), modifiers: CTRL, leds: (empty), phys_code: Some(Period), raw_code: 60, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
16:39:44.086  INFO   wezterm_gui::termwindow::keyevent > send to pane DOWN key=Char('.') mods=CTRL
16:39:44.086  INFO   wezterm_term::terminalstate::keyboard > key_down: sending ".", Char('.') CTRL
16:39:44.147  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('.'), modifiers: CTRL, leds: (empty), repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Period), modifiers: CTRL, leds: (empty), phys_code: Some(Period), raw_code: 60, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
16:39:44.147  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Char('.') mods=CTRL
16:39:44.326  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: LeftControl, modifiers: CTRL, leds: (empty), repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(LeftControl), modifiers: CTRL, leds: (empty), phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
16:39:44.326  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=LeftControl mods=CTRL

And pressing Ctrl + backspace:

~/Descargas on  master [?] took 44s 
➜ ./WezTerm-20240128-202157-1e552d76-Ubuntu20.04.AppImage
16:40:27.823  INFO   wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(LeftControl), modifiers: NONE, leds: (empty), phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
16:40:27.824  INFO   wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: LeftControl, modifiers: NONE, leds: (empty), repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(LeftControl), modifiers: NONE, leds: (empty), phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
16:40:27.824  INFO   wezterm_gui::termwindow::keyevent > send to pane DOWN key=LeftControl mods=NONE
16:40:28.118  INFO   wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Backspace), modifiers: CTRL, leds: (empty), phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
16:40:28.118  INFO   wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('\u{8}'), modifiers: CTRL, leds: (empty), repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Backspace), modifiers: CTRL, leds: (empty), phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
16:40:28.118  INFO   wezterm_gui::termwindow::keyevent > send to pane DOWN key=Backspace mods=CTRL
16:40:28.119  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "\u{8}", Backspace CTRL
16:40:28.180  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('\u{8}'), modifiers: CTRL, leds: (empty), repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Backspace), modifiers: CTRL, leds: (empty), phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
16:40:28.180  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Backspace mods=CTRL
16:40:28.361  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: LeftControl, modifiers: CTRL, leds: (empty), repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(LeftControl), modifiers: CTRL, leds: (empty), phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
16:40:28.361  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=LeftControl mods=CTRL

Using this appimage, I'm also running Helix and it happens the same, the key combination doesn't work either (it's as if other keys were being pressed).

@github-actions github-actions bot removed the waiting-on-op Waiting for more information from the original poster label Feb 2, 2024
@wez
Copy link
Owner

wez commented Feb 2, 2024

Thanks; with that appimage, please run it like this to capture a little bit more debug info:

WEZTERM_LOG=window::os::x11::keyboard=trace,info ./WezTerm-20240128-202157-1e552d76-Ubuntu20.04.AppImage

@wez
Copy link
Owner

wez commented Feb 2, 2024

hmm, that appimage version is older than I was expecting. b8d93ed is the commit I'd like you to be on or beyond.

Please download the nightly appimage: https://github.com/wez/wezterm/releases/download/nightly/WezTerm-nightly-Ubuntu20.04.AppImage

@wez wez added the waiting-on-op Waiting for more information from the original poster label Feb 2, 2024
@varaskkar
Copy link
Author

No problem, I've downloaded this nightly and the bug persists using Helix as well.

Ctrl + º

~/Descargas on  master [?] took 38s 
➜ WEZTERM_LOG=window::os::x11::keyboard=trace,info ./WezTerm-nightly-Ubuntu20.04.AppImage
17:07:12.127  TRACE  window::os::x11::keyboard > update_state(selected) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
17:07:12.127  TRACE  window::os::x11::keyboard > update_state(fallback) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
17:07:12.962  TRACE  window::os::x11::keyboard > update_state(selected) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
17:07:12.963  TRACE  window::os::x11::keyboard > update_state(fallback) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
17:07:14.267  TRACE  window::os::x11::keyboard > update_state(selected) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
17:07:14.267  TRACE  window::os::x11::keyboard > update_state(fallback) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
17:07:14.735  TRACE  window::os::x11::keyboard > update_state(selected) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
17:07:14.735  TRACE  window::os::x11::keyboard > update_state(fallback) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
17:07:19.109  TRACE  window::os::x11::keyboard > merge_current_xcb_modifiers(selected); state before=StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }, mods=0
17:07:19.109  TRACE  window::os::x11::keyboard > merge_current_xcb_modifiers(fallback); state before=StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }, mods=0
17:07:19.109  INFO   wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(LeftControl), modifiers: NONE, leds: (empty), phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
17:07:19.116  TRACE  window::os::x11::keyboard         > Compose::feed(fallback) XK_Control_L -> result=Ignored status=Nothing
17:07:19.117  TRACE  window::os::x11::keyboard         > Compose::feed(selected) XK_Control_L -> result=Ignored status=Nothing
17:07:19.117  TRACE  window::os::x11::keyboard         > process_key_event: RawKeyEvent FeedResult::Nothing: "", XK_Control_L. kc -> None fallback_feed=Nothing("", XK_Control_L)
17:07:19.117  INFO   wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: LeftControl, modifiers: NONE, leds: (empty), repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(LeftControl), modifiers: NONE, leds: (empty), phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
17:07:19.117  INFO   wezterm_gui::termwindow::keyevent > send to pane DOWN key=LeftControl mods=NONE
17:07:19.117  TRACE  window::os::x11::keyboard         > update_state(selected) with StateFromXcbStateNotify { depressed_mods: 4, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
17:07:19.117  TRACE  window::os::x11::keyboard         > update_state(fallback) with StateFromXcbStateNotify { depressed_mods: 4, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
17:07:19.409  TRACE  window::os::x11::keyboard         > merge_current_xcb_modifiers(selected); state before=StateFromXcbStateNotify { depressed_mods: 4, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }, mods=4
17:07:19.409  TRACE  window::os::x11::keyboard         > merge_current_xcb_modifiers(fallback); state before=StateFromXcbStateNotify { depressed_mods: 4, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }, mods=4
17:07:19.410  INFO   wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Grave), modifiers: CTRL, leds: (empty), phys_code: Some(Grave), raw_code: 49, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
17:07:19.410  TRACE  window::os::x11::keyboard         > Compose::feed(fallback) XK_grave -> result=Accepted status=Nothing
17:07:19.410  TRACE  window::os::x11::keyboard         > Compose::feed(selected) XK_masculine -> result=Accepted status=Nothing
17:07:19.410  TRACE  window::os::x11::keyboard         > process_key_event: RawKeyEvent FeedResult::Nothing: "º", XK_masculine. kc -> None fallback_feed=Nothing("\0", XK_grave)
17:07:19.410  TRACE  window::os::x11::keyboard         > process_key_event: RawKeyEvent using fallback sym XK_grave because layout would expand to non-ascii text 'º'
17:07:19.410  INFO   wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('`'), modifiers: CTRL, leds: (empty), repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Grave), modifiers: CTRL, leds: (empty), phys_code: Some(Grave), raw_code: 49, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
17:07:19.410  INFO   wezterm_gui::termwindow::keyevent > send to pane DOWN key=Char('`') mods=CTRL
17:07:19.411  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "\0", Char('`') CTRL
17:07:19.586  TRACE  window::os::x11::keyboard             > merge_current_xcb_modifiers(selected); state before=StateFromXcbStateNotify { depressed_mods: 4, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }, mods=4
17:07:19.586  TRACE  window::os::x11::keyboard             > merge_current_xcb_modifiers(fallback); state before=StateFromXcbStateNotify { depressed_mods: 4, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }, mods=4
17:07:19.586  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('º'), modifiers: CTRL, leds: (empty), repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Grave), modifiers: CTRL, leds: (empty), phys_code: Some(Grave), raw_code: 49, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
17:07:19.586  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Char('º') mods=CTRL
17:07:19.635  TRACE  window::os::x11::keyboard             > merge_current_xcb_modifiers(selected); state before=StateFromXcbStateNotify { depressed_mods: 4, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }, mods=4
17:07:19.636  TRACE  window::os::x11::keyboard             > merge_current_xcb_modifiers(fallback); state before=StateFromXcbStateNotify { depressed_mods: 4, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }, mods=4
17:07:19.636  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: LeftControl, modifiers: CTRL, leds: (empty), repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(LeftControl), modifiers: CTRL, leds: (empty), phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
17:07:19.636  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=LeftControl mods=CTRL
17:07:19.636  TRACE  window::os::x11::keyboard             > update_state(selected) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
17:07:19.636  TRACE  window::os::x11::keyboard             > update_state(fallback) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
17:07:22.147  TRACE  window::os::x11::keyboard             > update_state(selected) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
17:07:22.147  TRACE  window::os::x11::keyboard             > update_state(fallback) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }

Ctrl + .

~/Descargas on  master [?] 
➜ WEZTERM_LOG=window::os::x11::keyboard=trace,info ./WezTerm-nightly-Ubuntu20.04.AppImage
17:07:56.919  TRACE  window::os::x11::keyboard > update_state(selected) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
17:07:56.919  TRACE  window::os::x11::keyboard > update_state(fallback) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
17:07:57.538  TRACE  window::os::x11::keyboard > update_state(selected) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
17:07:57.539  TRACE  window::os::x11::keyboard > update_state(fallback) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
17:07:58.874  TRACE  window::os::x11::keyboard > update_state(selected) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
17:07:58.875  TRACE  window::os::x11::keyboard > update_state(fallback) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
17:07:59.679  TRACE  window::os::x11::keyboard > update_state(selected) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
17:07:59.679  TRACE  window::os::x11::keyboard > update_state(fallback) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
17:08:01.221  TRACE  window::os::x11::keyboard > merge_current_xcb_modifiers(selected); state before=StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }, mods=0
17:08:01.221  TRACE  window::os::x11::keyboard > merge_current_xcb_modifiers(fallback); state before=StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }, mods=0
17:08:01.222  INFO   wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(LeftControl), modifiers: NONE, leds: (empty), phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
17:08:01.228  TRACE  window::os::x11::keyboard         > Compose::feed(fallback) XK_Control_L -> result=Ignored status=Nothing
17:08:01.228  TRACE  window::os::x11::keyboard         > Compose::feed(selected) XK_Control_L -> result=Ignored status=Nothing
17:08:01.228  TRACE  window::os::x11::keyboard         > process_key_event: RawKeyEvent FeedResult::Nothing: "", XK_Control_L. kc -> None fallback_feed=Nothing("", XK_Control_L)
17:08:01.229  INFO   wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: LeftControl, modifiers: NONE, leds: (empty), repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(LeftControl), modifiers: NONE, leds: (empty), phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
17:08:01.229  INFO   wezterm_gui::termwindow::keyevent > send to pane DOWN key=LeftControl mods=NONE
17:08:01.229  TRACE  window::os::x11::keyboard         > update_state(selected) with StateFromXcbStateNotify { depressed_mods: 4, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
17:08:01.229  TRACE  window::os::x11::keyboard         > update_state(fallback) with StateFromXcbStateNotify { depressed_mods: 4, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
17:08:01.492  TRACE  window::os::x11::keyboard         > merge_current_xcb_modifiers(selected); state before=StateFromXcbStateNotify { depressed_mods: 4, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }, mods=4
17:08:01.492  TRACE  window::os::x11::keyboard         > merge_current_xcb_modifiers(fallback); state before=StateFromXcbStateNotify { depressed_mods: 4, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }, mods=4
17:08:01.492  INFO   wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Period), modifiers: CTRL, leds: (empty), phys_code: Some(Period), raw_code: 60, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
17:08:01.492  TRACE  window::os::x11::keyboard         > Compose::feed(fallback) XK_period -> result=Accepted status=Nothing
17:08:01.492  TRACE  window::os::x11::keyboard         > Compose::feed(selected) XK_period -> result=Accepted status=Nothing
17:08:01.492  TRACE  window::os::x11::keyboard         > process_key_event: RawKeyEvent FeedResult::Nothing: ".", XK_period. kc -> None fallback_feed=Nothing(".", XK_period)
17:08:01.492  INFO   wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('.'), modifiers: CTRL, leds: (empty), repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Period), modifiers: CTRL, leds: (empty), phys_code: Some(Period), raw_code: 60, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
17:08:01.493  INFO   wezterm_gui::termwindow::keyevent > send to pane DOWN key=Char('.') mods=CTRL
17:08:01.493  INFO   wezterm_term::terminalstate::keyboard > key_down: sending ".", Char('.') CTRL
17:08:01.558  TRACE  window::os::x11::keyboard             > merge_current_xcb_modifiers(selected); state before=StateFromXcbStateNotify { depressed_mods: 4, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }, mods=4
17:08:01.558  TRACE  window::os::x11::keyboard             > merge_current_xcb_modifiers(fallback); state before=StateFromXcbStateNotify { depressed_mods: 4, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }, mods=4
17:08:01.558  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('.'), modifiers: CTRL, leds: (empty), repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Period), modifiers: CTRL, leds: (empty), phys_code: Some(Period), raw_code: 60, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
17:08:01.558  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Char('.') mods=CTRL
17:08:01.789  TRACE  window::os::x11::keyboard             > merge_current_xcb_modifiers(selected); state before=StateFromXcbStateNotify { depressed_mods: 4, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }, mods=4
17:08:01.790  TRACE  window::os::x11::keyboard             > merge_current_xcb_modifiers(fallback); state before=StateFromXcbStateNotify { depressed_mods: 4, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }, mods=4
17:08:01.790  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: LeftControl, modifiers: CTRL, leds: (empty), repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(LeftControl), modifiers: CTRL, leds: (empty), phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
17:08:01.790  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=LeftControl mods=CTRL
17:08:01.790  TRACE  window::os::x11::keyboard             > update_state(selected) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
17:08:01.790  TRACE  window::os::x11::keyboard             > update_state(fallback) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
17:08:03.878  TRACE  window::os::x11::keyboard             > update_state(selected) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
17:08:03.878  TRACE  window::os::x11::keyboard             > update_state(fallback) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }

Ctrl + backspace

~/Descargas on  master [?] took 22s 
➜ WEZTERM_LOG=window::os::x11::keyboard=trace,info ./WezTerm-nightly-Ubuntu20.04.AppImage
17:08:20.649  TRACE  window::os::x11::keyboard > update_state(selected) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
17:08:20.649  TRACE  window::os::x11::keyboard > update_state(fallback) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
17:08:21.319  TRACE  window::os::x11::keyboard > update_state(selected) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
17:08:21.319  TRACE  window::os::x11::keyboard > update_state(fallback) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
17:08:22.765  TRACE  window::os::x11::keyboard > update_state(selected) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
17:08:22.765  TRACE  window::os::x11::keyboard > update_state(fallback) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
17:08:23.499  TRACE  window::os::x11::keyboard > update_state(selected) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
17:08:23.500  TRACE  window::os::x11::keyboard > update_state(fallback) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
17:08:25.661  TRACE  window::os::x11::keyboard > merge_current_xcb_modifiers(selected); state before=StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }, mods=0
17:08:25.661  TRACE  window::os::x11::keyboard > merge_current_xcb_modifiers(fallback); state before=StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }, mods=0
17:08:25.661  INFO   wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(LeftControl), modifiers: NONE, leds: (empty), phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
17:08:25.666  TRACE  window::os::x11::keyboard         > Compose::feed(fallback) XK_Control_L -> result=Ignored status=Nothing
17:08:25.666  TRACE  window::os::x11::keyboard         > Compose::feed(selected) XK_Control_L -> result=Ignored status=Nothing
17:08:25.667  TRACE  window::os::x11::keyboard         > process_key_event: RawKeyEvent FeedResult::Nothing: "", XK_Control_L. kc -> None fallback_feed=Nothing("", XK_Control_L)
17:08:25.667  INFO   wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: LeftControl, modifiers: NONE, leds: (empty), repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(LeftControl), modifiers: NONE, leds: (empty), phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
17:08:25.667  INFO   wezterm_gui::termwindow::keyevent > send to pane DOWN key=LeftControl mods=NONE
17:08:25.667  TRACE  window::os::x11::keyboard         > update_state(selected) with StateFromXcbStateNotify { depressed_mods: 4, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
17:08:25.667  TRACE  window::os::x11::keyboard         > update_state(fallback) with StateFromXcbStateNotify { depressed_mods: 4, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
17:08:25.912  TRACE  window::os::x11::keyboard         > merge_current_xcb_modifiers(selected); state before=StateFromXcbStateNotify { depressed_mods: 4, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }, mods=4
17:08:25.912  TRACE  window::os::x11::keyboard         > merge_current_xcb_modifiers(fallback); state before=StateFromXcbStateNotify { depressed_mods: 4, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }, mods=4
17:08:25.912  INFO   wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Backspace), modifiers: CTRL, leds: (empty), phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
17:08:25.912  TRACE  window::os::x11::keyboard         > Compose::feed(fallback) XK_BackSpace -> result=Accepted status=Nothing
17:08:25.912  TRACE  window::os::x11::keyboard         > Compose::feed(selected) XK_BackSpace -> result=Accepted status=Nothing
17:08:25.913  TRACE  window::os::x11::keyboard         > process_key_event: RawKeyEvent FeedResult::Nothing: "\u{8}", XK_BackSpace. kc -> None fallback_feed=Nothing("\u{8}", XK_BackSpace)
17:08:25.913  INFO   wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('\u{8}'), modifiers: CTRL, leds: (empty), repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Backspace), modifiers: CTRL, leds: (empty), phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
17:08:25.913  INFO   wezterm_gui::termwindow::keyevent > send to pane DOWN key=Backspace mods=CTRL
17:08:25.913  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "\u{8}", Backspace CTRL
17:08:25.988  TRACE  window::os::x11::keyboard             > merge_current_xcb_modifiers(selected); state before=StateFromXcbStateNotify { depressed_mods: 4, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }, mods=4
17:08:25.988  TRACE  window::os::x11::keyboard             > merge_current_xcb_modifiers(fallback); state before=StateFromXcbStateNotify { depressed_mods: 4, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }, mods=4
17:08:25.988  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('\u{8}'), modifiers: CTRL, leds: (empty), repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Backspace), modifiers: CTRL, leds: (empty), phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
17:08:25.988  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Backspace mods=CTRL
17:08:26.189  TRACE  window::os::x11::keyboard             > merge_current_xcb_modifiers(selected); state before=StateFromXcbStateNotify { depressed_mods: 4, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }, mods=4
17:08:26.189  TRACE  window::os::x11::keyboard             > merge_current_xcb_modifiers(fallback); state before=StateFromXcbStateNotify { depressed_mods: 4, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }, mods=4
17:08:26.189  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: LeftControl, modifiers: CTRL, leds: (empty), repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(LeftControl), modifiers: CTRL, leds: (empty), phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
17:08:26.189  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=LeftControl mods=CTRL
17:08:26.190  TRACE  window::os::x11::keyboard             > update_state(selected) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
17:08:26.190  TRACE  window::os::x11::keyboard             > update_state(fallback) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
17:08:29.355  TRACE  window::os::x11::keyboard             > update_state(selected) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
17:08:29.355  TRACE  window::os::x11::keyboard             > update_state(fallback) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }

@github-actions github-actions bot removed the waiting-on-op Waiting for more information from the original poster label Feb 2, 2024
wez added a commit that referenced this issue Feb 2, 2024
The workaround was to allow ctrl-c to behave as expected for users
of cyrillic layouts, but it was scoped too broadly, as it impacted
eg: pressing ctrl-grave; in a spanish layout that is expected to
expand to º

This commit adjusts the scope of the workaround to only activate
when the original expansion is itself cyrillic.

I doubt this is the last we'll hear of this, but let's see
how it goes!

refs: #4933
@wez
Copy link
Owner

wez commented Feb 2, 2024

I've pushed a commit to main that should resolve the Ctrl + º issue.
Both ctrl . and ctrl backspace appear to be working as intended; they expand the same way as they do in xterm.

eg: running showkey -a and then pressing those keys results in the same output in both xterm and wezterm.

The commit should show up in a nightly build within about 20 minutes or so.

@wez wez added the waiting-on-op Waiting for more information from the original poster label Feb 2, 2024
@varaskkar
Copy link
Author

varaskkar commented Feb 2, 2024

I just tried the new nightly and now it's different, it seems that the combination now writes the character that is pressed

  • Ctrl + º -> Displays º
  • Ctrl + . -> Displays .
  • Ctrl + backspace -> Displays nothing

Before it was just executing other keys and another key combinations

However, when executing Ctrl + º in Helix it seems that it doesn't run the action assigned to it but it shows the character, could it be a Helix thing?

The command showkey -a show me the following codes:

º       194 0302 0xc2
        186 0272 0xba

.        46 0056 0x2e

^H        8 0010 0x08

Ctrl + º , Ctrl + . and Ctrl + backspace

@github-actions github-actions bot removed the waiting-on-op Waiting for more information from the original poster label Feb 2, 2024
@varaskkar
Copy link
Author

Log of the nightly with the last commit:

Ctrl + º

~/Descargas on  master [?] took 11m39s 
➜ WEZTERM_LOG=window::os::x11::keyboard=trace,info ./WezTerm-nightly-Ubuntu20.04.AppImage
18:28:12.424  TRACE  window::os::x11::keyboard > update_state(selected) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
18:28:12.424  TRACE  window::os::x11::keyboard > update_state(fallback) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
18:28:12.982  TRACE  window::os::x11::keyboard > update_state(selected) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
18:28:12.982  TRACE  window::os::x11::keyboard > update_state(fallback) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
18:28:14.114  TRACE  window::os::x11::keyboard > update_state(selected) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
18:28:14.114  TRACE  window::os::x11::keyboard > update_state(fallback) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
18:28:14.793  TRACE  window::os::x11::keyboard > update_state(selected) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
18:28:14.793  TRACE  window::os::x11::keyboard > update_state(fallback) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
18:28:18.461  TRACE  window::os::x11::keyboard > merge_current_xcb_modifiers(selected); state before=StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }, mods=0
18:28:18.461  TRACE  window::os::x11::keyboard > merge_current_xcb_modifiers(fallback); state before=StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }, mods=0
18:28:18.462  INFO   wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(LeftControl), modifiers: NONE, leds: (empty), phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
18:28:18.468  TRACE  window::os::x11::keyboard         > Compose::feed(fallback) XK_Control_L -> result=Ignored status=Nothing
18:28:18.468  TRACE  window::os::x11::keyboard         > Compose::feed(selected) XK_Control_L -> result=Ignored status=Nothing
18:28:18.469  TRACE  window::os::x11::keyboard         > process_key_event: RawKeyEvent FeedResult::Nothing: "", XK_Control_L. kc -> None fallback_feed=Nothing("", XK_Control_L)
18:28:18.469  INFO   wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: LeftControl, modifiers: NONE, leds: (empty), repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(LeftControl), modifiers: NONE, leds: (empty), phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
18:28:18.469  INFO   wezterm_gui::termwindow::keyevent > send to pane DOWN key=LeftControl mods=NONE
18:28:18.469  TRACE  window::os::x11::keyboard         > update_state(selected) with StateFromXcbStateNotify { depressed_mods: 4, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
18:28:18.469  TRACE  window::os::x11::keyboard         > update_state(fallback) with StateFromXcbStateNotify { depressed_mods: 4, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
18:28:18.761  TRACE  window::os::x11::keyboard         > merge_current_xcb_modifiers(selected); state before=StateFromXcbStateNotify { depressed_mods: 4, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }, mods=4
18:28:18.761  TRACE  window::os::x11::keyboard         > merge_current_xcb_modifiers(fallback); state before=StateFromXcbStateNotify { depressed_mods: 4, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }, mods=4
18:28:18.761  INFO   wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Grave), modifiers: CTRL, leds: (empty), phys_code: Some(Grave), raw_code: 49, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
18:28:18.762  TRACE  window::os::x11::keyboard         > Compose::feed(fallback) XK_grave -> result=Accepted status=Nothing
18:28:18.762  TRACE  window::os::x11::keyboard         > Compose::feed(selected) XK_masculine -> result=Accepted status=Nothing
18:28:18.762  TRACE  window::os::x11::keyboard         > process_key_event: RawKeyEvent FeedResult::Nothing: "º", XK_masculine. kc -> None fallback_feed=Nothing("\0", XK_grave)
18:28:18.762  INFO   wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('º'), modifiers: CTRL, leds: (empty), repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Grave), modifiers: CTRL, leds: (empty), phys_code: Some(Grave), raw_code: 49, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
18:28:18.762  INFO   wezterm_gui::termwindow::keyevent > send to pane DOWN key=Char('º') mods=CTRL
18:28:18.762  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "º", Char('º') CTRL
18:28:18.868  TRACE  window::os::x11::keyboard             > merge_current_xcb_modifiers(selected); state before=StateFromXcbStateNotify { depressed_mods: 4, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }, mods=4
18:28:18.869  TRACE  window::os::x11::keyboard             > merge_current_xcb_modifiers(fallback); state before=StateFromXcbStateNotify { depressed_mods: 4, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }, mods=4
18:28:18.869  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('º'), modifiers: CTRL, leds: (empty), repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Grave), modifiers: CTRL, leds: (empty), phys_code: Some(Grave), raw_code: 49, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
18:28:18.869  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Char('º') mods=CTRL
18:28:18.908  TRACE  window::os::x11::keyboard             > merge_current_xcb_modifiers(selected); state before=StateFromXcbStateNotify { depressed_mods: 4, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }, mods=4
18:28:18.908  TRACE  window::os::x11::keyboard             > merge_current_xcb_modifiers(fallback); state before=StateFromXcbStateNotify { depressed_mods: 4, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }, mods=4
18:28:18.908  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: LeftControl, modifiers: CTRL, leds: (empty), repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(LeftControl), modifiers: CTRL, leds: (empty), phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
18:28:18.908  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=LeftControl mods=CTRL
18:28:18.908  TRACE  window::os::x11::keyboard             > update_state(selected) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
18:28:18.909  TRACE  window::os::x11::keyboard             > update_state(fallback) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
18:28:20.898  TRACE  window::os::x11::keyboard             > update_state(selected) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
18:28:20.898  TRACE  window::os::x11::keyboard             > update_state(fallback) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }

Ctrl + .

~/Descargas on  master [?] took 1m2s 
➜ WEZTERM_LOG=window::os::x11::keyboard=trace,info ./WezTerm-nightly-Ubuntu20.04.AppImage
18:29:15.005  TRACE  window::os::x11::keyboard > update_state(selected) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
18:29:15.005  TRACE  window::os::x11::keyboard > update_state(fallback) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
18:29:15.542  TRACE  window::os::x11::keyboard > update_state(selected) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
18:29:15.542  TRACE  window::os::x11::keyboard > update_state(fallback) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
18:29:16.685  TRACE  window::os::x11::keyboard > update_state(selected) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
18:29:16.685  TRACE  window::os::x11::keyboard > update_state(fallback) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
18:29:17.374  TRACE  window::os::x11::keyboard > update_state(selected) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
18:29:17.374  TRACE  window::os::x11::keyboard > update_state(fallback) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
18:29:19.634  TRACE  window::os::x11::keyboard > merge_current_xcb_modifiers(selected); state before=StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }, mods=0
18:29:19.634  TRACE  window::os::x11::keyboard > merge_current_xcb_modifiers(fallback); state before=StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }, mods=0
18:29:19.634  INFO   wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(LeftControl), modifiers: NONE, leds: (empty), phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
18:29:19.640  TRACE  window::os::x11::keyboard         > Compose::feed(fallback) XK_Control_L -> result=Ignored status=Nothing
18:29:19.640  TRACE  window::os::x11::keyboard         > Compose::feed(selected) XK_Control_L -> result=Ignored status=Nothing
18:29:19.640  TRACE  window::os::x11::keyboard         > process_key_event: RawKeyEvent FeedResult::Nothing: "", XK_Control_L. kc -> None fallback_feed=Nothing("", XK_Control_L)
18:29:19.640  INFO   wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: LeftControl, modifiers: NONE, leds: (empty), repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(LeftControl), modifiers: NONE, leds: (empty), phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
18:29:19.640  INFO   wezterm_gui::termwindow::keyevent > send to pane DOWN key=LeftControl mods=NONE
18:29:19.641  TRACE  window::os::x11::keyboard         > update_state(selected) with StateFromXcbStateNotify { depressed_mods: 4, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
18:29:19.641  TRACE  window::os::x11::keyboard         > update_state(fallback) with StateFromXcbStateNotify { depressed_mods: 4, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
18:29:19.932  TRACE  window::os::x11::keyboard         > merge_current_xcb_modifiers(selected); state before=StateFromXcbStateNotify { depressed_mods: 4, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }, mods=4
18:29:19.932  TRACE  window::os::x11::keyboard         > merge_current_xcb_modifiers(fallback); state before=StateFromXcbStateNotify { depressed_mods: 4, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }, mods=4
18:29:19.932  INFO   wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Period), modifiers: CTRL, leds: (empty), phys_code: Some(Period), raw_code: 60, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
18:29:19.932  TRACE  window::os::x11::keyboard         > Compose::feed(fallback) XK_period -> result=Accepted status=Nothing
18:29:19.932  TRACE  window::os::x11::keyboard         > Compose::feed(selected) XK_period -> result=Accepted status=Nothing
18:29:19.932  TRACE  window::os::x11::keyboard         > process_key_event: RawKeyEvent FeedResult::Nothing: ".", XK_period. kc -> None fallback_feed=Nothing(".", XK_period)
18:29:19.932  INFO   wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('.'), modifiers: CTRL, leds: (empty), repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Period), modifiers: CTRL, leds: (empty), phys_code: Some(Period), raw_code: 60, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
18:29:19.932  INFO   wezterm_gui::termwindow::keyevent > send to pane DOWN key=Char('.') mods=CTRL
18:29:19.932  INFO   wezterm_term::terminalstate::keyboard > key_down: sending ".", Char('.') CTRL
18:29:19.996  TRACE  window::os::x11::keyboard             > merge_current_xcb_modifiers(selected); state before=StateFromXcbStateNotify { depressed_mods: 4, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }, mods=4
18:29:19.996  TRACE  window::os::x11::keyboard             > merge_current_xcb_modifiers(fallback); state before=StateFromXcbStateNotify { depressed_mods: 4, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }, mods=4
18:29:19.996  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('.'), modifiers: CTRL, leds: (empty), repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Period), modifiers: CTRL, leds: (empty), phys_code: Some(Period), raw_code: 60, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
18:29:19.996  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Char('.') mods=CTRL
18:29:20.187  TRACE  window::os::x11::keyboard             > merge_current_xcb_modifiers(selected); state before=StateFromXcbStateNotify { depressed_mods: 4, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }, mods=4
18:29:20.188  TRACE  window::os::x11::keyboard             > merge_current_xcb_modifiers(fallback); state before=StateFromXcbStateNotify { depressed_mods: 4, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }, mods=4
18:29:20.188  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: LeftControl, modifiers: CTRL, leds: (empty), repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(LeftControl), modifiers: CTRL, leds: (empty), phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
18:29:20.188  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=LeftControl mods=CTRL
18:29:20.188  TRACE  window::os::x11::keyboard             > update_state(selected) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
18:29:20.188  TRACE  window::os::x11::keyboard             > update_state(fallback) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
18:29:21.812  TRACE  window::os::x11::keyboard             > update_state(selected) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
18:29:21.813  TRACE  window::os::x11::keyboard             > update_state(fallback) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }

Ctrl + backspace

~/Descargas on  master [?] took 41s 
➜ WEZTERM_LOG=window::os::x11::keyboard=trace,info ./WezTerm-nightly-Ubuntu20.04.AppImage
18:29:59.742  TRACE  window::os::x11::keyboard > update_state(selected) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
18:29:59.743  TRACE  window::os::x11::keyboard > update_state(fallback) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
18:30:00.229  TRACE  window::os::x11::keyboard > update_state(selected) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
18:30:00.230  TRACE  window::os::x11::keyboard > update_state(fallback) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
18:30:02.640  TRACE  window::os::x11::keyboard > update_state(selected) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
18:30:02.640  TRACE  window::os::x11::keyboard > update_state(fallback) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
18:30:03.164  TRACE  window::os::x11::keyboard > update_state(selected) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
18:30:03.164  TRACE  window::os::x11::keyboard > update_state(fallback) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
18:30:05.433  TRACE  window::os::x11::keyboard > merge_current_xcb_modifiers(selected); state before=StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }, mods=0
18:30:05.433  TRACE  window::os::x11::keyboard > merge_current_xcb_modifiers(fallback); state before=StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }, mods=0
18:30:05.433  INFO   wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(LeftControl), modifiers: NONE, leds: (empty), phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
18:30:05.440  TRACE  window::os::x11::keyboard         > Compose::feed(fallback) XK_Control_L -> result=Ignored status=Nothing
18:30:05.440  TRACE  window::os::x11::keyboard         > Compose::feed(selected) XK_Control_L -> result=Ignored status=Nothing
18:30:05.440  TRACE  window::os::x11::keyboard         > process_key_event: RawKeyEvent FeedResult::Nothing: "", XK_Control_L. kc -> None fallback_feed=Nothing("", XK_Control_L)
18:30:05.440  INFO   wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: LeftControl, modifiers: NONE, leds: (empty), repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(LeftControl), modifiers: NONE, leds: (empty), phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
18:30:05.440  INFO   wezterm_gui::termwindow::keyevent > send to pane DOWN key=LeftControl mods=NONE
18:30:05.440  TRACE  window::os::x11::keyboard         > update_state(selected) with StateFromXcbStateNotify { depressed_mods: 4, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
18:30:05.440  TRACE  window::os::x11::keyboard         > update_state(fallback) with StateFromXcbStateNotify { depressed_mods: 4, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
18:30:05.694  TRACE  window::os::x11::keyboard         > merge_current_xcb_modifiers(selected); state before=StateFromXcbStateNotify { depressed_mods: 4, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }, mods=4
18:30:05.694  TRACE  window::os::x11::keyboard         > merge_current_xcb_modifiers(fallback); state before=StateFromXcbStateNotify { depressed_mods: 4, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }, mods=4
18:30:05.694  INFO   wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Backspace), modifiers: CTRL, leds: (empty), phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
18:30:05.694  TRACE  window::os::x11::keyboard         > Compose::feed(fallback) XK_BackSpace -> result=Accepted status=Nothing
18:30:05.694  TRACE  window::os::x11::keyboard         > Compose::feed(selected) XK_BackSpace -> result=Accepted status=Nothing
18:30:05.694  TRACE  window::os::x11::keyboard         > process_key_event: RawKeyEvent FeedResult::Nothing: "\u{8}", XK_BackSpace. kc -> None fallback_feed=Nothing("\u{8}", XK_BackSpace)
18:30:05.695  INFO   wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('\u{8}'), modifiers: CTRL, leds: (empty), repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Backspace), modifiers: CTRL, leds: (empty), phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
18:30:05.695  INFO   wezterm_gui::termwindow::keyevent > send to pane DOWN key=Backspace mods=CTRL
18:30:05.695  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "\u{8}", Backspace CTRL
18:30:05.755  TRACE  window::os::x11::keyboard             > merge_current_xcb_modifiers(selected); state before=StateFromXcbStateNotify { depressed_mods: 4, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }, mods=4
18:30:05.755  TRACE  window::os::x11::keyboard             > merge_current_xcb_modifiers(fallback); state before=StateFromXcbStateNotify { depressed_mods: 4, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }, mods=4
18:30:05.755  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('\u{8}'), modifiers: CTRL, leds: (empty), repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Backspace), modifiers: CTRL, leds: (empty), phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
18:30:05.755  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Backspace mods=CTRL
18:30:05.945  TRACE  window::os::x11::keyboard             > merge_current_xcb_modifiers(selected); state before=StateFromXcbStateNotify { depressed_mods: 4, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }, mods=4
18:30:05.945  TRACE  window::os::x11::keyboard             > merge_current_xcb_modifiers(fallback); state before=StateFromXcbStateNotify { depressed_mods: 4, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }, mods=4
18:30:05.945  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: LeftControl, modifiers: CTRL, leds: (empty), repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(LeftControl), modifiers: CTRL, leds: (empty), phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
18:30:05.945  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=LeftControl mods=CTRL
18:30:05.945  TRACE  window::os::x11::keyboard             > update_state(selected) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
18:30:05.945  TRACE  window::os::x11::keyboard             > update_state(fallback) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
18:30:07.733  TRACE  window::os::x11::keyboard             > update_state(selected) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }
18:30:07.734  TRACE  window::os::x11::keyboard             > update_state(fallback) with StateFromXcbStateNotify { depressed_mods: 0, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 0 }

@wez
Copy link
Owner

wez commented Feb 2, 2024

hmm, actually, I think I may revert that last change. Looking more closely at Terminal (vte) and xterm, wezterm's behavior as of earlier today was consistent with them:

image

I think the issue that you're having is a helix configuration issue, and I can't help with that.

wez added a commit that referenced this issue Feb 2, 2024
This reverts commit 15da2e6.

Let's back this out; I think I was too hasty and didn't fully
compare behavior with xterm prior to working on this.

refs: #4933
@zw963
Copy link

zw963 commented Feb 3, 2024

For the consistent with Terminal (vte) and xterm, i have a issue for compare the Backspace and Ctrl + Backspace behavior on different terminal, you may be interested.

https://gitlab.com/craigbarnes/dte/-/issues/207

Thanks for wezterm behavior respect the most popular terminals instead of xterm.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants