wezterm icon indicating copy to clipboard operation
wezterm copied to clipboard

Capital cyrrillic letters are not displayed when using TMUX with `ModifyOtherKeys` option

Open appomsk opened this issue 6 months ago • 0 comments

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

Linux X11

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

XFCE4 on Manjaro

WezTerm version

wezterm 20240203-110809-5046fc22

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

I belive it is the same problem as in https://github.com/wez/wezterm/issues/4234.

In Tmux wiki is said:

tmux must be told to turn it [ModifyOtherKeys] on:

set -s extended-keys on

tmux must recognise that the terminal supports it. tmux will automatically detect newer versions of these three terminals, but if it does not then the terminal-features option can also be modified to enable it manually:

set -as terminal-features 'xterm*:extkeys'

Well, when i set extended-keys on nothing happens. When I add the second option (set -as terminal-features ...) then <C-1>, etc. work but capital cyrrillic letters stop displaying.

Tmux with these options works without problems in xterm.

Debug log with WEZTERM_LOG=window::os::x11::keyboard=trace,info wezterm -n --config debug_key_events=true shows something like this - pressing first lowercase "ф" and then uppercase "Ф":

07:38:31.327  TRACE  window::os::x11::keyboard         > Compose::feed(fallback) XK_a -> result=Accepted status=Nothing
07:38:31.328  TRACE  window::os::x11::keyboard         > Compose::feed(selected) XK_Cyrillic_ef -> result=Accepted status=Nothing
07:38:31.328  TRACE  window::os::x11::keyboard         > process_key_event: RawKeyEvent FeedResult::Nothing: "ф", XK_Cyrillic_ef. kc -> Some(Char('ф')) fallback_feed=Nothing("a", XK_a)
07:38:31.328  INFO   wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('ф'), modifiers: NONE, leds: (empty), repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(A), modifiers: NONE, leds: (empty), phys_code: Some(A), raw_code: 38, repeat_count: 1, key_is_down: true, handled: Handled(false) }) }
07:38:31.329  INFO   wezterm_gui::termwindow::keyevent > send to pane DOWN key=Char('ф') mods=NONE
07:38:31.329  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "ф", Char('ф') NONE
07:38:31.491  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: 1 }, mods=8192
07:38:31.491  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: 1 }, mods=8192
07:38:31.491  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('ф'), modifiers: NONE, leds: (empty), repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(A), modifiers: NONE, leds: (empty), phys_code: Some(A), raw_code: 38, repeat_count: 1, key_is_down: false, handled: Handled(false) }) }
07:38:31.492  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Char('ф') mods=NONE
07:38:32.997  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: 1 }, mods=8192
07:38:32.998  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: 1 }, mods=8192
07:38:32.998  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(LeftShift), modifiers: NONE, leds: (empty), phys_code: Some(LeftShift), raw_code: 50, repeat_count: 1, key_is_down: true, handled: Handled(false) }
07:38:32.998  TRACE  window::os::x11::keyboard             > Compose::feed(fallback) XK_Shift_L -> result=Ignored status=Nothing
07:38:32.999  TRACE  window::os::x11::keyboard             > Compose::feed(selected) XK_Shift_L -> result=Ignored status=Nothing
07:38:32.999  TRACE  window::os::x11::keyboard             > process_key_event: RawKeyEvent FeedResult::Nothing: "", XK_Shift_L. kc -> None fallback_feed=Nothing("", XK_Shift_L)
07:38:32.999  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: LeftShift, modifiers: NONE, leds: (empty), repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(LeftShift), modifiers: NONE, leds: (empty), phys_code: Some(LeftShift), raw_code: 50, repeat_count: 1, key_is_down: true, handled: Handled(false) }) }
07:38:32.999  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=LeftShift mods=NONE
07:38:33.000  TRACE  window::os::x11::keyboard             > update_state(selected) with StateFromXcbStateNotify { depressed_mods: 1, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 1 }
07:38:33.000  TRACE  window::os::x11::keyboard             > update_state(fallback) with StateFromXcbStateNotify { depressed_mods: 1, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 1 }
07:38:33.391  TRACE  window::os::x11::keyboard             > merge_current_xcb_modifiers(selected); state before=StateFromXcbStateNotify { depressed_mods: 1, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 1 }, mods=8193
07:38:33.391  TRACE  window::os::x11::keyboard             > merge_current_xcb_modifiers(fallback); state before=StateFromXcbStateNotify { depressed_mods: 1, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 1 }, mods=8193
07:38:33.391  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(A), modifiers: SHIFT, leds: (empty), phys_code: Some(A), raw_code: 38, repeat_count: 1, key_is_down: true, handled: Handled(false) }
07:38:33.392  TRACE  window::os::x11::keyboard             > Compose::feed(fallback) XK_A -> result=Accepted status=Nothing
07:38:33.392  TRACE  window::os::x11::keyboard             > Compose::feed(selected) XK_Cyrillic_EF -> result=Accepted status=Nothing
07:38:33.393  TRACE  window::os::x11::keyboard             > process_key_event: RawKeyEvent FeedResult::Nothing: "Ф", XK_Cyrillic_EF. kc -> Some(Char('Ф')) fallback_feed=Nothing("A", XK_A)
07:38:33.393  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('Ф'), modifiers: SHIFT, leds: (empty), repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(A), modifiers: SHIFT, leds: (empty), phys_code: Some(A), raw_code: 38, repeat_count: 1, key_is_down: true, handled: Handled(false) }) }
07:38:33.393  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Char('Ф') mods=SHIFT
07:38:33.394  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "Ф", Char('Ф') SHIFT
07:38:33.550  TRACE  window::os::x11::keyboard             > merge_current_xcb_modifiers(selected); state before=StateFromXcbStateNotify { depressed_mods: 1, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 1 }, mods=8193
07:38:33.550  TRACE  window::os::x11::keyboard             > merge_current_xcb_modifiers(fallback); state before=StateFromXcbStateNotify { depressed_mods: 1, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 1 }, mods=8193
07:38:33.551  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('Ф'), modifiers: SHIFT, leds: (empty), repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(A), modifiers: SHIFT, leds: (empty), phys_code: Some(A), raw_code: 38, repeat_count: 1, key_is_down: false, handled: Handled(false) }) }
07:38:33.551  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Char('Ф') mods=SHIFT
07:38:33.571  TRACE  window::os::x11::keyboard             > merge_current_xcb_modifiers(selected); state before=StateFromXcbStateNotify { depressed_mods: 1, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 1 }, mods=8193
07:38:33.571  TRACE  window::os::x11::keyboard             > merge_current_xcb_modifiers(fallback); state before=StateFromXcbStateNotify { depressed_mods: 1, latched_mods: 0, locked_mods: 0, depressed_layout: 0, latched_layout: 0, locked_layout: 1 }, mods=8193
07:38:33.571  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: LeftShift, modifiers: SHIFT, leds: (empty), repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(LeftShift), modifiers: SHIFT, leds: (empty), phys_code: Some(LeftShift), raw_code: 50, repeat_count: 1, key_is_down: false, handled: Handled(false) }) }
07:38:33.572  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=LeftShift mods=SHIFT
07:38:33.572  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: 1 }

To Reproduce

Use tmux with described options or emac -nw. In emacs capital cyrrillic leters (without tmux) behave as in https://github.com/wez/wezterm/issues/4234.

It affects 20240203 and the last night build too.

Configuration

no config

Expected Behavior

ModifyOtherKeys protocol should work.

Logs

No response

Anything else?

This bug makes it impossible for me to use wezterm. I am a long-time user of tmux and do not want to give up it. And using extended keys is now a "must have" for me to work in neovim.

appomsk avatar Aug 22 '24 04:08 appomsk