wez / wezterm

A GPU-accelerated cross-platform terminal emulator and multiplexer written by @wez and implemented in Rust
https://wezfurlong.org/wezterm/
Other
18.15k stars 811 forks source link

Numlock not properly detected under Mutter Wayland (not XWayland) #1869

Open JonathanxD opened 2 years ago

JonathanxD commented 2 years ago

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

Linux Wayland

WezTerm version

20220408-101518-b908e2dd / 20220412-095203-132377cc

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

Numlock is not properly detect in wezterm running under Wayland (not XWayland). The same does not happen under XWayland (I can't say for Xorg since I does not have X installed).

I've compiled wezterm directly from source, tried both the compilation from 2022-04-08 and today 2022-04-12.

To Reproduce

Just open wezterm with wayland enabled, it will not detect that Num Lock is active and will treat like it's not, sending CTRL+C fixes the problem temporarily, however, if you switch applications and come back to wezterm, it will behave the same way, like Num Lock wasn't enabled, sending CTRL+C fixes again.

It only happens with numpad, top row numbers works fine.

Configuration

local wezterm = require 'wezterm';

return {
  enable_wayland = true,
  font = wezterm.font("Fira Code NerdFont"),
  ssh_domains = {
    -- omitted
  }
}

Expected Behavior

Properly detect that numpad is enabled when wezterm is in focus and capture the number input.

Logs

There is nothing special in the logs:

16:06:46.429 INFO wezterm_gui::termwindow > Ding! (this is the bell) in pane 22
16:06:46.429 INFO wezterm_gui::termwindow > Ding! (this is the bell) in pane 22
16:06:46.615 INFO wezterm_gui::termwindow > Ding! (this is the bell) in pane 22
16:06:46.615 INFO wezterm_gui::termwindow > Ding! (this is the bell) in pane 22
16:06:46.615 INFO wezterm_gui::termwindow > Ding! (this is the bell) in pane 22
16:06:46.786 INFO wezterm_gui::termwindow > Ding! (this is the bell) in pane 22
16:06:46.786 INFO wezterm_gui::termwindow > Ding! (this is the bell) in pane 22
16:06:46.786 INFO wezterm_gui::termwindow > Ding! (this is the bell) in pane 22
16:06:46.961 INFO wezterm_gui::termwindow > Ding! (this is the bell) in pane 22
16:06:46.961 INFO wezterm_gui::termwindow > Ding! (this is the bell) in pane 22
16:06:46.961 INFO wezterm_gui::termwindow > Ding! (this is the bell) in pane 22
16:06:47.115 INFO wezterm_gui::termwindow > Ding! (this is the bell) in pane 22
16:06:47.115 INFO wezterm_gui::termwindow > Ding! (this is the bell) in pane 22
16:06:47.115 INFO wezterm_gui::termwindow > Ding! (this is the bell) in pane 22

Anything else?

Here is a video of the problem occurring (the numpad respective keys are on the bottom right, the scheme is not correct because it is an overlay prototype).

https://user-images.githubusercontent.com/5360060/163038751-65bec316-6ba8-4dd0-b88b-184f0f6e0794.mp4

Keyboard device specification (I don't know if it does matter, but may be helpful):

lsusb -v ``` Bus 005 Device 002: ID 1532:0226 Razer USA, Ltd Huntsman Elite Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 0 bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64 idVendor 0x1532 Razer USA, Ltd idProduct 0x0226 Huntsman Elite bcdDevice 2.00 iManufacturer 1 Razer iProduct 2 Razer Huntsman Elite iSerial 3 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 0x0054 bNumInterfaces 3 bConfigurationValue 1 iConfiguration 0 bmAttributes 0xa0 (Bus Powered) Remote Wakeup MaxPower 500mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 3 Human Interface Device bInterfaceSubClass 1 Boot Interface Subclass bInterfaceProtocol 1 Keyboard iInterface 0 HID Device Descriptor: bLength 9 bDescriptorType 33 bcdHID 1.11 bCountryCode 0 Not supported bNumDescriptors 1 bDescriptorType 34 Report wDescriptorLength 61 Report Descriptors: ** UNAVAILABLE ** Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0008 1x 8 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 3 Human Interface Device bInterfaceSubClass 0 bInterfaceProtocol 1 Keyboard iInterface 0 HID Device Descriptor: bLength 9 bDescriptorType 33 bcdHID 1.11 bCountryCode 0 Not supported bNumDescriptors 1 bDescriptorType 34 Report wDescriptorLength 159 Report Descriptors: ** UNAVAILABLE ** Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0010 1x 16 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 2 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 3 Human Interface Device bInterfaceSubClass 0 bInterfaceProtocol 2 Mouse iInterface 0 HID Device Descriptor: bLength 9 bDescriptorType 33 bcdHID 1.11 bCountryCode 0 Not supported bNumDescriptors 1 bDescriptorType 34 Report wDescriptorLength 94 Report Descriptors: ** UNAVAILABLE ** Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0008 1x 8 bytes bInterval 1 Device Status: 0x0000 (Bus Powered) ```

And output of evtest for Num Lock led:

➜  ~  evtest --query /dev/input/by-id/usb-Razer_Razer_Huntsman_Elite-event-kbd EV_LED LED_NUML
➜  ~  echo $?
10

As stated in the evtest manpage, exit code 10 means that the key is activated.

Package versions:

Wayland:

local/qt5-wayland 5.15.3+kde+r41-1 (qt qt5)
    Provides APIs for Wayland
local/qt6-wayland 6.2.4-1 (qt6)
    Provides APIs for Wayland
local/slurp 1.3.2-2
    Select a region in a Wayland compositor
local/sway 1:1.7-2
    Tiling Wayland compositor and replacement for the i3 window manager
local/swaybg 1.1.1-1
    Wallpaper tool for Wayland compositors
local/wayland 1.20.0-2
    A computer display server protocol
local/wayland-protocols 1.25-1
    Specifications of extended Wayland protocols
local/wlroots 0.15.1-3
    Modular Wayland compositor library
local/xorg-xwayland 22.1.1-1 (xorg)
    run X clients under wayland

Mutter and Gnome:

local/mutter 42.0-2 (gnome)
    A window manager for GNOME
local/gnome-desktop 1:42.0-1
    Library with common API for various GNOME modules (GTK3)
local/gnome-desktop-4 1:42.0-1
    Library with common API for various GNOME modules (GTK4)
local/gnome-desktop-common 1:42.0-1
    Library with common API for various GNOME modules (common files)

Uname -a:

Linux jonathan-arch 5.17.1-arch1-1 #1 SMP PREEMPT Mon, 28 Mar 2022 20:55:33 +0000 x86_64 GNU/Linux

If you need any additional information, feel free to ask.

wez commented 2 years ago

Please set debug_key_events=true and see how to debug key events to see and share the key event debug logs here!

wez commented 2 years ago

Also: WEZTERM_LOG=window::os::x11::keyboard=trace,info wezterm will log more verbose/detailed information about key events than the built-in debugging; please try that together with debug_key_events!

JonathanxD commented 2 years ago

tl;dr: after hours of investigation I discovered that it is a Mutter issue. I explain it further down

collapsed everything, it's a mutter problem Hi, I've set both debug options (the `debug_key_events` in the config and `WEZTERM_LOG` env), here is the complete log:
full log ```rust ➜ ~ WEZTERM_LOG=window::os::x11::keyboard=trace,info wezterm 23:17:48.584 INFO wezterm_mux_server_impl::local > setting up /run/user/1000/wezterm/gui-sock-1954267 23:17:48.663 INFO wezterm_gui::termwindow > OpenGL initialized! AMD Radeon RX 6600 XT (dimgrey_cavefish, LLVM 13.0.1, DRM 3.44, 5.17.1-arch1-1) 4.6 (Compatibility Profile) Mesa 22.0.1 is_context_loss_possible=false wezterm version: 20220408-101518-b908e2dd 23:17:54.010 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:17:54.010 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "", 65436. kc -> None 23:17:54.010 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: End, modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:17:54.010 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=End mods=NONE 23:17:54.010 INFO wezterm_term::terminalstate::keyboard > key_down: sending "\u{1b}OF", End NONE 23:17:54.115 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: End, modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:17:54.115 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=End mods=NONE 23:17:54.887 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:17:54.887 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "", 65436. kc -> None 23:17:54.887 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: End, modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:17:54.887 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=End mods=NONE 23:17:54.887 INFO wezterm_term::terminalstate::keyboard > key_down: sending "\u{1b}OF", End NONE 23:17:55.001 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: End, modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:17:55.001 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=End mods=NONE 23:17:55.315 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:17:55.315 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "", 65436. kc -> None 23:17:55.315 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: End, modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:17:55.315 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=End mods=NONE 23:17:55.315 INFO wezterm_term::terminalstate::keyboard > key_down: sending "\u{1b}OF", End NONE 23:17:55.455 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: End, modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:17:55.455 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=End mods=NONE 23:17:55.952 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:17:55.952 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "", 65436. kc -> None 23:17:55.952 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: End, modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:17:55.952 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=End mods=NONE 23:17:55.952 INFO wezterm_term::terminalstate::keyboard > key_down: sending "\u{1b}OF", End NONE 23:17:56.077 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: End, modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:17:56.077 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=End mods=NONE 23:17:56.451 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad2), modifiers: NONE, phys_code: Some(Keypad2), raw_code: 88, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:17:56.451 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "", 65433. kc -> None 23:17:56.451 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: ApplicationDownArrow, modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad2), modifiers: NONE, phys_code: Some(Keypad2), raw_code: 88, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:17:56.451 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=ApplicationDownArrow mods=NONE 23:17:56.451 INFO wezterm_term::terminalstate::keyboard > key_down: sending "\u{1b}OB", ApplicationDownArrow NONE 23:17:56.452 INFO wezterm_gui::termwindow > Ding! (this is the bell) in pane 0 23:17:56.575 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: ApplicationDownArrow, modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad2), modifiers: NONE, phys_code: Some(Keypad2), raw_code: 88, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:17:56.575 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=ApplicationDownArrow mods=NONE 23:17:57.586 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad2), modifiers: NONE, phys_code: Some(Keypad2), raw_code: 88, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:17:57.586 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "", 65433. kc -> None 23:17:57.586 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: ApplicationDownArrow, modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad2), modifiers: NONE, phys_code: Some(Keypad2), raw_code: 88, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:17:57.586 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=ApplicationDownArrow mods=NONE 23:17:57.586 INFO wezterm_term::terminalstate::keyboard > key_down: sending "\u{1b}OB", ApplicationDownArrow NONE 23:17:57.587 INFO wezterm_gui::termwindow > Ding! (this is the bell) in pane 0 23:17:57.738 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: ApplicationDownArrow, modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad2), modifiers: NONE, phys_code: Some(Keypad2), raw_code: 88, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:17:57.738 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=ApplicationDownArrow mods=NONE 23:17:58.517 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(LeftControl), modifiers: NONE, phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:17:58.517 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "", 65507. kc -> None 23:17:58.517 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Control, modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(LeftControl), modifiers: NONE, phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:17:58.517 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=Control mods=NONE 23:17:58.983 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(C), modifiers: CTRL, phys_code: Some(C), raw_code: 54, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:17:58.983 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "\u{3}", 99. kc -> Some(Char('\u{3}')) 23:17:58.983 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('c'), modifiers: CTRL, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(C), modifiers: CTRL, phys_code: Some(C), raw_code: 54, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:17:58.983 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=Char('c') mods=CTRL 23:17:58.983 INFO wezterm_term::terminalstate::keyboard > key_down: sending "\u{3}", Char('c') CTRL 23:17:59.083 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('c'), modifiers: CTRL, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(C), modifiers: CTRL, phys_code: Some(C), raw_code: 54, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:17:59.083 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=Char('c') mods=CTRL 23:17:59.129 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Control, modifiers: CTRL, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(LeftControl), modifiers: CTRL, phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:17:59.129 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=Control mods=CTRL 23:18:03.201 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad2), modifiers: NONE, phys_code: Some(Keypad2), raw_code: 88, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:03.201 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "2", 65458. kc -> Some(Char('2')) 23:18:03.201 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('2'), modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad2), modifiers: NONE, phys_code: Some(Keypad2), raw_code: 88, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:18:03.201 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=Char('2') mods=NONE 23:18:03.201 INFO wezterm_term::terminalstate::keyboard > key_down: sending "2", Char('2') NONE 23:18:03.301 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('2'), modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad2), modifiers: NONE, phys_code: Some(Keypad2), raw_code: 88, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:18:03.301 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=Char('2') mods=NONE 23:18:03.592 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:03.592 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "1", 65457. kc -> Some(Char('1')) 23:18:03.592 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('1'), modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:18:03.592 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=Char('1') mods=NONE 23:18:03.592 INFO wezterm_term::terminalstate::keyboard > key_down: sending "1", Char('1') NONE 23:18:03.699 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('1'), modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:18:03.699 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=Char('1') mods=NONE 23:18:04.004 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad2), modifiers: NONE, phys_code: Some(Keypad2), raw_code: 88, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:04.004 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "2", 65458. kc -> Some(Char('2')) 23:18:04.004 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('2'), modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad2), modifiers: NONE, phys_code: Some(Keypad2), raw_code: 88, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:18:04.004 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=Char('2') mods=NONE 23:18:04.004 INFO wezterm_term::terminalstate::keyboard > key_down: sending "2", Char('2') NONE 23:18:04.112 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('2'), modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad2), modifiers: NONE, phys_code: Some(Keypad2), raw_code: 88, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:18:04.112 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=Char('2') mods=NONE 23:18:04.237 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad3), modifiers: NONE, phys_code: Some(Keypad3), raw_code: 89, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:04.237 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "3", 65459. kc -> Some(Char('3')) 23:18:04.237 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('3'), modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad3), modifiers: NONE, phys_code: Some(Keypad3), raw_code: 89, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:18:04.237 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=Char('3') mods=NONE 23:18:04.237 INFO wezterm_term::terminalstate::keyboard > key_down: sending "3", Char('3') NONE 23:18:04.352 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('3'), modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad3), modifiers: NONE, phys_code: Some(Keypad3), raw_code: 89, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:18:04.352 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=Char('3') mods=NONE 23:18:04.563 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad6), modifiers: NONE, phys_code: Some(Keypad6), raw_code: 85, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:04.563 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "6", 65462. kc -> Some(Char('6')) 23:18:04.563 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('6'), modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad6), modifiers: NONE, phys_code: Some(Keypad6), raw_code: 85, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:18:04.563 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=Char('6') mods=NONE 23:18:04.563 INFO wezterm_term::terminalstate::keyboard > key_down: sending "6", Char('6') NONE 23:18:04.676 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('6'), modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad6), modifiers: NONE, phys_code: Some(Keypad6), raw_code: 85, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:18:04.676 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=Char('6') mods=NONE 23:18:04.791 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad5), modifiers: NONE, phys_code: Some(Keypad5), raw_code: 84, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:04.791 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "5", 65461. kc -> Some(Char('5')) 23:18:04.791 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('5'), modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad5), modifiers: NONE, phys_code: Some(Keypad5), raw_code: 84, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:18:04.791 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=Char('5') mods=NONE 23:18:04.791 INFO wezterm_term::terminalstate::keyboard > key_down: sending "5", Char('5') NONE 23:18:04.898 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('5'), modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad5), modifiers: NONE, phys_code: Some(Keypad5), raw_code: 84, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:18:04.898 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=Char('5') mods=NONE 23:18:05.093 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad4), modifiers: NONE, phys_code: Some(Keypad4), raw_code: 83, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:05.093 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "4", 65460. kc -> Some(Char('4')) 23:18:05.093 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('4'), modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad4), modifiers: NONE, phys_code: Some(Keypad4), raw_code: 83, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:18:05.093 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=Char('4') mods=NONE 23:18:05.093 INFO wezterm_term::terminalstate::keyboard > key_down: sending "4", Char('4') NONE 23:18:05.195 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('4'), modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad4), modifiers: NONE, phys_code: Some(Keypad4), raw_code: 83, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:18:05.195 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=Char('4') mods=NONE 23:18:05.361 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(KeypadEnter), modifiers: NONE, phys_code: Some(KeypadEnter), raw_code: 104, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:05.361 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "\r", 65421. kc -> Some(Char('\r')) 23:18:05.361 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('\r'), modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(KeypadEnter), modifiers: NONE, phys_code: Some(KeypadEnter), raw_code: 104, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:18:05.361 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=Enter mods=NONE 23:18:05.361 INFO wezterm_term::terminalstate::keyboard > key_down: sending "\r", Enter NONE 23:18:05.453 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('\r'), modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(KeypadEnter), modifiers: NONE, phys_code: Some(KeypadEnter), raw_code: 104, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:18:05.453 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=Enter mods=NONE 23:18:06.965 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:06.965 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "", 65436. kc -> None 23:18:06.965 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: End, modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:18:06.965 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=End mods=NONE 23:18:06.965 INFO wezterm_term::terminalstate::keyboard > key_down: sending "\u{1b}OF", End NONE 23:18:07.052 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: End, modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:18:07.052 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=End mods=NONE 23:18:07.124 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:07.124 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "", 65436. kc -> None 23:18:07.124 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: End, modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:18:07.124 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=End mods=NONE 23:18:07.124 INFO wezterm_term::terminalstate::keyboard > key_down: sending "\u{1b}OF", End NONE 23:18:07.210 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: End, modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:18:07.210 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=End mods=NONE 23:18:07.276 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:07.276 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "", 65436. kc -> None 23:18:07.276 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: End, modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:18:07.276 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=End mods=NONE 23:18:07.276 INFO wezterm_term::terminalstate::keyboard > key_down: sending "\u{1b}OF", End NONE 23:18:07.365 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: End, modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:18:07.365 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=End mods=NONE 23:18:07.553 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad2), modifiers: NONE, phys_code: Some(Keypad2), raw_code: 88, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:07.553 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "", 65433. kc -> None 23:18:07.553 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: ApplicationDownArrow, modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad2), modifiers: NONE, phys_code: Some(Keypad2), raw_code: 88, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:18:07.553 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=ApplicationDownArrow mods=NONE 23:18:07.553 INFO wezterm_term::terminalstate::keyboard > key_down: sending "\u{1b}OB", ApplicationDownArrow NONE 23:18:07.554 INFO wezterm_gui::termwindow > Ding! (this is the bell) in pane 0 23:18:07.668 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: ApplicationDownArrow, modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad2), modifiers: NONE, phys_code: Some(Keypad2), raw_code: 88, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:18:07.668 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=ApplicationDownArrow mods=NONE 23:18:07.741 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad2), modifiers: NONE, phys_code: Some(Keypad2), raw_code: 88, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:07.741 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "", 65433. kc -> None 23:18:07.741 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: ApplicationDownArrow, modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad2), modifiers: NONE, phys_code: Some(Keypad2), raw_code: 88, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:18:07.741 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=ApplicationDownArrow mods=NONE 23:18:07.741 INFO wezterm_term::terminalstate::keyboard > key_down: sending "\u{1b}OB", ApplicationDownArrow NONE 23:18:07.742 INFO wezterm_gui::termwindow > Ding! (this is the bell) in pane 0 23:18:07.827 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: ApplicationDownArrow, modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad2), modifiers: NONE, phys_code: Some(Keypad2), raw_code: 88, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:18:07.827 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=ApplicationDownArrow mods=NONE 23:18:07.971 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad3), modifiers: NONE, phys_code: Some(Keypad3), raw_code: 89, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:07.971 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "", 65435. kc -> None 23:18:07.971 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: PageDown, modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad3), modifiers: NONE, phys_code: Some(Keypad3), raw_code: 89, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:18:07.971 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=PageDown mods=NONE 23:18:07.971 INFO wezterm_term::terminalstate::keyboard > key_down: sending "\u{1b}[6~", PageDown NONE 23:18:08.086 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: PageDown, modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad3), modifiers: NONE, phys_code: Some(Keypad3), raw_code: 89, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:18:08.086 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=PageDown mods=NONE 23:18:08.226 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad6), modifiers: NONE, phys_code: Some(Keypad6), raw_code: 85, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:08.226 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "", 65432. kc -> None 23:18:08.227 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: ApplicationRightArrow, modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad6), modifiers: NONE, phys_code: Some(Keypad6), raw_code: 85, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:18:08.227 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=ApplicationRightArrow mods=NONE 23:18:08.227 INFO wezterm_term::terminalstate::keyboard > key_down: sending "\u{1b}OC", ApplicationRightArrow NONE 23:18:08.307 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: ApplicationRightArrow, modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad6), modifiers: NONE, phys_code: Some(Keypad6), raw_code: 85, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:18:08.307 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=ApplicationRightArrow mods=NONE 23:18:08.426 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad5), modifiers: NONE, phys_code: Some(Keypad5), raw_code: 84, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:08.426 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "", 65437. kc -> None 23:18:08.426 TRACE window::os::x11::keyboard > keysym_to_keycode for 65437 and 65437 -> None 23:18:08.503 TRACE window::os::x11::keyboard > keysym_to_keycode for 65437 and 65437 -> None 23:18:08.602 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad4), modifiers: NONE, phys_code: Some(Keypad4), raw_code: 83, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:08.602 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "", 65430. kc -> None 23:18:08.602 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: ApplicationLeftArrow, modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad4), modifiers: NONE, phys_code: Some(Keypad4), raw_code: 83, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:18:08.602 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=ApplicationLeftArrow mods=NONE 23:18:08.602 INFO wezterm_term::terminalstate::keyboard > key_down: sending "\u{1b}OD", ApplicationLeftArrow NONE 23:18:08.685 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: ApplicationLeftArrow, modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad4), modifiers: NONE, phys_code: Some(Keypad4), raw_code: 83, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:18:08.685 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=ApplicationLeftArrow mods=NONE 23:18:13.388 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(LeftControl), modifiers: NONE, phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:13.388 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "", 65507. kc -> None 23:18:13.388 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Control, modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(LeftControl), modifiers: NONE, phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:18:13.388 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=Control mods=NONE 23:18:13.486 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(C), modifiers: CTRL, phys_code: Some(C), raw_code: 54, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:13.486 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "\u{3}", 99. kc -> Some(Char('\u{3}')) 23:18:13.486 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('c'), modifiers: CTRL, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(C), modifiers: CTRL, phys_code: Some(C), raw_code: 54, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:18:13.486 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=Char('c') mods=CTRL 23:18:13.486 INFO wezterm_term::terminalstate::keyboard > key_down: sending "\u{3}", Char('c') CTRL 23:18:13.615 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('c'), modifiers: CTRL, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(C), modifiers: CTRL, phys_code: Some(C), raw_code: 54, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:18:13.615 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=Char('c') mods=CTRL 23:18:13.645 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Control, modifiers: CTRL, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(LeftControl), modifiers: CTRL, phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:18:13.645 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=Control mods=CTRL 23:18:15.785 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad3), modifiers: NONE, phys_code: Some(Keypad3), raw_code: 89, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:15.785 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "3", 65459. kc -> Some(Char('3')) 23:18:15.785 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('3'), modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad3), modifiers: NONE, phys_code: Some(Keypad3), raw_code: 89, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:18:15.785 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=Char('3') mods=NONE 23:18:15.785 INFO wezterm_term::terminalstate::keyboard > key_down: sending "3", Char('3') NONE 23:18:15.916 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('3'), modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad3), modifiers: NONE, phys_code: Some(Keypad3), raw_code: 89, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:18:15.916 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=Char('3') mods=NONE 23:18:16.123 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad2), modifiers: NONE, phys_code: Some(Keypad2), raw_code: 88, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:16.123 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "2", 65458. kc -> Some(Char('2')) 23:18:16.123 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('2'), modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad2), modifiers: NONE, phys_code: Some(Keypad2), raw_code: 88, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:18:16.123 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=Char('2') mods=NONE 23:18:16.123 INFO wezterm_term::terminalstate::keyboard > key_down: sending "2", Char('2') NONE 23:18:16.251 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('2'), modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad2), modifiers: NONE, phys_code: Some(Keypad2), raw_code: 88, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:18:16.251 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=Char('2') mods=NONE 23:18:16.382 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:16.382 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "1", 65457. kc -> Some(Char('1')) 23:18:16.382 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('1'), modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:18:16.382 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=Char('1') mods=NONE 23:18:16.382 INFO wezterm_term::terminalstate::keyboard > key_down: sending "1", Char('1') NONE 23:18:16.492 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('1'), modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:18:16.492 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=Char('1') mods=NONE 23:18:16.637 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad4), modifiers: NONE, phys_code: Some(Keypad4), raw_code: 83, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:16.637 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "4", 65460. kc -> Some(Char('4')) 23:18:16.637 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('4'), modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad4), modifiers: NONE, phys_code: Some(Keypad4), raw_code: 83, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:18:16.637 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=Char('4') mods=NONE 23:18:16.637 INFO wezterm_term::terminalstate::keyboard > key_down: sending "4", Char('4') NONE 23:18:16.751 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('4'), modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad4), modifiers: NONE, phys_code: Some(Keypad4), raw_code: 83, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:18:16.751 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=Char('4') mods=NONE 23:18:16.867 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad5), modifiers: NONE, phys_code: Some(Keypad5), raw_code: 84, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:16.867 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "5", 65461. kc -> Some(Char('5')) 23:18:16.867 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('5'), modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad5), modifiers: NONE, phys_code: Some(Keypad5), raw_code: 84, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:18:16.867 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=Char('5') mods=NONE 23:18:16.867 INFO wezterm_term::terminalstate::keyboard > key_down: sending "5", Char('5') NONE 23:18:16.960 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('5'), modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad5), modifiers: NONE, phys_code: Some(Keypad5), raw_code: 84, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:18:16.960 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=Char('5') mods=NONE 23:18:17.084 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad6), modifiers: NONE, phys_code: Some(Keypad6), raw_code: 85, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:17.084 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "6", 65462. kc -> Some(Char('6')) 23:18:17.084 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('6'), modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad6), modifiers: NONE, phys_code: Some(Keypad6), raw_code: 85, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:18:17.084 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=Char('6') mods=NONE 23:18:17.084 INFO wezterm_term::terminalstate::keyboard > key_down: sending "6", Char('6') NONE 23:18:17.179 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('6'), modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad6), modifiers: NONE, phys_code: Some(Keypad6), raw_code: 85, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:18:17.179 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=Char('6') mods=NONE ```
I've also separated them after every `CTRL-C` and window switch:
First
  • Keypad not working with numlock on.
  • Last command: CTRL-C.
```rust 23:17:54.010 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:17:54.010 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "", 65436. kc -> None 23:17:54.010 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: End, modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:17:54.010 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=End mods=NONE 23:17:54.010 INFO wezterm_term::terminalstate::keyboard > key_down: sending "\u{1b}OF", End NONE 23:17:54.115 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: End, modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:17:54.115 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=End mods=NONE 23:17:54.887 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:17:54.887 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "", 65436. kc -> None 23:17:54.887 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: End, modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:17:54.887 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=End mods=NONE 23:17:54.887 INFO wezterm_term::terminalstate::keyboard > key_down: sending "\u{1b}OF", End NONE 23:17:55.001 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: End, modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:17:55.001 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=End mods=NONE 23:17:55.315 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:17:55.315 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "", 65436. kc -> None 23:17:55.315 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: End, modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:17:55.315 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=End mods=NONE 23:17:55.315 INFO wezterm_term::terminalstate::keyboard > key_down: sending "\u{1b}OF", End NONE 23:17:55.455 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: End, modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:17:55.455 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=End mods=NONE 23:17:55.952 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:17:55.952 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "", 65436. kc -> None 23:17:55.952 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: End, modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:17:55.952 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=End mods=NONE 23:17:55.952 INFO wezterm_term::terminalstate::keyboard > key_down: sending "\u{1b}OF", End NONE 23:17:56.077 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: End, modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:17:56.077 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=End mods=NONE 23:17:56.451 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad2), modifiers: NONE, phys_code: Some(Keypad2), raw_code: 88, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:17:56.451 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "", 65433. kc -> None 23:17:56.451 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: ApplicationDownArrow, modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad2), modifiers: NONE, phys_code: Some(Keypad2), raw_code: 88, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:17:56.451 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=ApplicationDownArrow mods=NONE 23:17:56.451 INFO wezterm_term::terminalstate::keyboard > key_down: sending "\u{1b}OB", ApplicationDownArrow NONE 23:17:56.452 INFO wezterm_gui::termwindow > Ding! (this is the bell) in pane 0 23:17:56.575 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: ApplicationDownArrow, modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad2), modifiers: NONE, phys_code: Some(Keypad2), raw_code: 88, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:17:56.575 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=ApplicationDownArrow mods=NONE 23:17:57.586 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad2), modifiers: NONE, phys_code: Some(Keypad2), raw_code: 88, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:17:57.586 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "", 65433. kc -> None 23:17:57.586 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: ApplicationDownArrow, modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad2), modifiers: NONE, phys_code: Some(Keypad2), raw_code: 88, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:17:57.586 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=ApplicationDownArrow mods=NONE 23:17:57.586 INFO wezterm_term::terminalstate::keyboard > key_down: sending "\u{1b}OB", ApplicationDownArrow NONE 23:17:57.587 INFO wezterm_gui::termwindow > Ding! (this is the bell) in pane 0 23:17:57.738 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: ApplicationDownArrow, modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad2), modifiers: NONE, phys_code: Some(Keypad2), raw_code: 88, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:17:57.738 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=ApplicationDownArrow mods=NONE 23:17:58.517 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(LeftControl), modifiers: NONE, phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:17:58.517 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "", 65507. kc -> None 23:17:58.517 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Control, modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(LeftControl), modifiers: NONE, phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:17:58.517 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=Control mods=NONE 23:17:58.983 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(C), modifiers: CTRL, phys_code: Some(C), raw_code: 54, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:17:58.983 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "\u{3}", 99. kc -> Some(Char('\u{3}')) 23:17:58.983 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('c'), modifiers: CTRL, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(C), modifiers: CTRL, phys_code: Some(C), raw_code: 54, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:17:58.983 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=Char('c') mods=CTRL 23:17:58.983 INFO wezterm_term::terminalstate::keyboard > key_down: sending "\u{3}", Char('c') CTRL 23:17:59.083 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('c'), modifiers: CTRL, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(C), modifiers: CTRL, phys_code: Some(C), raw_code: 54, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:17:59.083 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=Char('c') mods=CTRL 23:17:59.129 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Control, modifiers: CTRL, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(LeftControl), modifiers: CTRL, phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:17:59.129 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=Control mods=CTRL 23:18:03.201 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad2), modifiers: NONE, phys_code: Some(Keypad2), raw_code: 88, repeat_count: 1, key_is_down: true, handled: Handled(false) } ```
Second
  • Keypad working with numlock on.
  • Last command: Alt-Tab.
```rust 23:18:03.201 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad2), modifiers: NONE, phys_code: Some(Keypad2), raw_code: 88, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:03.201 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "2", 65458. kc -> Some(Char('2')) 23:18:03.201 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('2'), modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad2), modifiers: NONE, phys_code: Some(Keypad2), raw_code: 88, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:18:03.201 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=Char('2') mods=NONE 23:18:03.201 INFO wezterm_term::terminalstate::keyboard > key_down: sending "2", Char('2') NONE 23:18:03.301 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('2'), modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad2), modifiers: NONE, phys_code: Some(Keypad2), raw_code: 88, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:18:03.301 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=Char('2') mods=NONE 23:18:03.592 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:03.592 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "1", 65457. kc -> Some(Char('1')) 23:18:03.592 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('1'), modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:18:03.592 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=Char('1') mods=NONE 23:18:03.592 INFO wezterm_term::terminalstate::keyboard > key_down: sending "1", Char('1') NONE 23:18:03.699 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('1'), modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:18:03.699 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=Char('1') mods=NONE 23:18:04.004 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad2), modifiers: NONE, phys_code: Some(Keypad2), raw_code: 88, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:04.004 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "2", 65458. kc -> Some(Char('2')) 23:18:04.004 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('2'), modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad2), modifiers: NONE, phys_code: Some(Keypad2), raw_code: 88, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:18:04.004 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=Char('2') mods=NONE 23:18:04.004 INFO wezterm_term::terminalstate::keyboard > key_down: sending "2", Char('2') NONE 23:18:04.112 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('2'), modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad2), modifiers: NONE, phys_code: Some(Keypad2), raw_code: 88, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:18:04.112 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=Char('2') mods=NONE 23:18:04.237 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad3), modifiers: NONE, phys_code: Some(Keypad3), raw_code: 89, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:04.237 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "3", 65459. kc -> Some(Char('3')) 23:18:04.237 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('3'), modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad3), modifiers: NONE, phys_code: Some(Keypad3), raw_code: 89, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:18:04.237 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=Char('3') mods=NONE 23:18:04.237 INFO wezterm_term::terminalstate::keyboard > key_down: sending "3", Char('3') NONE 23:18:04.352 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('3'), modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad3), modifiers: NONE, phys_code: Some(Keypad3), raw_code: 89, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:18:04.352 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=Char('3') mods=NONE 23:18:04.563 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad6), modifiers: NONE, phys_code: Some(Keypad6), raw_code: 85, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:04.563 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "6", 65462. kc -> Some(Char('6')) 23:18:04.563 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('6'), modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad6), modifiers: NONE, phys_code: Some(Keypad6), raw_code: 85, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:18:04.563 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=Char('6') mods=NONE 23:18:04.563 INFO wezterm_term::terminalstate::keyboard > key_down: sending "6", Char('6') NONE 23:18:04.676 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('6'), modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad6), modifiers: NONE, phys_code: Some(Keypad6), raw_code: 85, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:18:04.676 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=Char('6') mods=NONE 23:18:04.791 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad5), modifiers: NONE, phys_code: Some(Keypad5), raw_code: 84, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:04.791 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "5", 65461. kc -> Some(Char('5')) 23:18:04.791 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('5'), modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad5), modifiers: NONE, phys_code: Some(Keypad5), raw_code: 84, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:18:04.791 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=Char('5') mods=NONE 23:18:04.791 INFO wezterm_term::terminalstate::keyboard > key_down: sending "5", Char('5') NONE 23:18:04.898 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('5'), modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad5), modifiers: NONE, phys_code: Some(Keypad5), raw_code: 84, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:18:04.898 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=Char('5') mods=NONE 23:18:05.093 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad4), modifiers: NONE, phys_code: Some(Keypad4), raw_code: 83, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:05.093 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "4", 65460. kc -> Some(Char('4')) 23:18:05.093 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('4'), modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad4), modifiers: NONE, phys_code: Some(Keypad4), raw_code: 83, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:18:05.093 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=Char('4') mods=NONE 23:18:05.093 INFO wezterm_term::terminalstate::keyboard > key_down: sending "4", Char('4') NONE 23:18:05.195 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('4'), modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad4), modifiers: NONE, phys_code: Some(Keypad4), raw_code: 83, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:18:05.195 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=Char('4') mods=NONE 23:18:05.361 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(KeypadEnter), modifiers: NONE, phys_code: Some(KeypadEnter), raw_code: 104, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:05.361 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "\r", 65421. kc -> Some(Char('\r')) 23:18:05.361 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('\r'), modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(KeypadEnter), modifiers: NONE, phys_code: Some(KeypadEnter), raw_code: 104, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:18:05.361 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=Enter mods=NONE 23:18:05.361 INFO wezterm_term::terminalstate::keyboard > key_down: sending "\r", Enter NONE 23:18:05.453 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('\r'), modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(KeypadEnter), modifiers: NONE, phys_code: Some(KeypadEnter), raw_code: 104, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:18:05.453 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=Enter mods=NONE ```
Third
  • Keypad not working with numlock on.
  • Last command: CTRL-C.
```rust 23:18:06.965 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:06.965 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "", 65436. kc -> None 23:18:06.965 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: End, modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:18:06.965 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=End mods=NONE 23:18:06.965 INFO wezterm_term::terminalstate::keyboard > key_down: sending "\u{1b}OF", End NONE 23:18:07.052 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: End, modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:18:07.052 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=End mods=NONE 23:18:07.124 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:07.124 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "", 65436. kc -> None 23:18:07.124 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: End, modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:18:07.124 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=End mods=NONE 23:18:07.124 INFO wezterm_term::terminalstate::keyboard > key_down: sending "\u{1b}OF", End NONE 23:18:07.210 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: End, modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:18:07.210 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=End mods=NONE 23:18:07.276 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:07.276 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "", 65436. kc -> None 23:18:07.276 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: End, modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:18:07.276 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=End mods=NONE 23:18:07.276 INFO wezterm_term::terminalstate::keyboard > key_down: sending "\u{1b}OF", End NONE 23:18:07.365 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: End, modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:18:07.365 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=End mods=NONE 23:18:07.553 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad2), modifiers: NONE, phys_code: Some(Keypad2), raw_code: 88, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:07.553 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "", 65433. kc -> None 23:18:07.553 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: ApplicationDownArrow, modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad2), modifiers: NONE, phys_code: Some(Keypad2), raw_code: 88, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:18:07.553 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=ApplicationDownArrow mods=NONE 23:18:07.553 INFO wezterm_term::terminalstate::keyboard > key_down: sending "\u{1b}OB", ApplicationDownArrow NONE 23:18:07.554 INFO wezterm_gui::termwindow > Ding! (this is the bell) in pane 0 23:18:07.668 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: ApplicationDownArrow, modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad2), modifiers: NONE, phys_code: Some(Keypad2), raw_code: 88, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:18:07.668 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=ApplicationDownArrow mods=NONE 23:18:07.741 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad2), modifiers: NONE, phys_code: Some(Keypad2), raw_code: 88, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:07.741 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "", 65433. kc -> None 23:18:07.741 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: ApplicationDownArrow, modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad2), modifiers: NONE, phys_code: Some(Keypad2), raw_code: 88, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:18:07.741 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=ApplicationDownArrow mods=NONE 23:18:07.741 INFO wezterm_term::terminalstate::keyboard > key_down: sending "\u{1b}OB", ApplicationDownArrow NONE 23:18:07.742 INFO wezterm_gui::termwindow > Ding! (this is the bell) in pane 0 23:18:07.827 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: ApplicationDownArrow, modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad2), modifiers: NONE, phys_code: Some(Keypad2), raw_code: 88, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:18:07.827 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=ApplicationDownArrow mods=NONE 23:18:07.971 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad3), modifiers: NONE, phys_code: Some(Keypad3), raw_code: 89, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:07.971 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "", 65435. kc -> None 23:18:07.971 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: PageDown, modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad3), modifiers: NONE, phys_code: Some(Keypad3), raw_code: 89, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:18:07.971 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=PageDown mods=NONE 23:18:07.971 INFO wezterm_term::terminalstate::keyboard > key_down: sending "\u{1b}[6~", PageDown NONE 23:18:08.086 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: PageDown, modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad3), modifiers: NONE, phys_code: Some(Keypad3), raw_code: 89, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:18:08.086 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=PageDown mods=NONE 23:18:08.226 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad6), modifiers: NONE, phys_code: Some(Keypad6), raw_code: 85, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:08.226 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "", 65432. kc -> None 23:18:08.227 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: ApplicationRightArrow, modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad6), modifiers: NONE, phys_code: Some(Keypad6), raw_code: 85, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:18:08.227 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=ApplicationRightArrow mods=NONE 23:18:08.227 INFO wezterm_term::terminalstate::keyboard > key_down: sending "\u{1b}OC", ApplicationRightArrow NONE 23:18:08.307 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: ApplicationRightArrow, modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad6), modifiers: NONE, phys_code: Some(Keypad6), raw_code: 85, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:18:08.307 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=ApplicationRightArrow mods=NONE 23:18:08.426 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad5), modifiers: NONE, phys_code: Some(Keypad5), raw_code: 84, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:08.426 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "", 65437. kc -> None 23:18:08.426 TRACE window::os::x11::keyboard > keysym_to_keycode for 65437 and 65437 -> None 23:18:08.503 TRACE window::os::x11::keyboard > keysym_to_keycode for 65437 and 65437 -> None 23:18:08.602 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad4), modifiers: NONE, phys_code: Some(Keypad4), raw_code: 83, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:08.602 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "", 65430. kc -> None 23:18:08.602 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: ApplicationLeftArrow, modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad4), modifiers: NONE, phys_code: Some(Keypad4), raw_code: 83, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:18:08.602 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=ApplicationLeftArrow mods=NONE 23:18:08.602 INFO wezterm_term::terminalstate::keyboard > key_down: sending "\u{1b}OD", ApplicationLeftArrow NONE 23:18:08.685 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: ApplicationLeftArrow, modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad4), modifiers: NONE, phys_code: Some(Keypad4), raw_code: 83, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:18:08.685 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=ApplicationLeftArrow mods=NONE 23:18:13.388 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(LeftControl), modifiers: NONE, phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:13.388 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "", 65507. kc -> None 23:18:13.388 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Control, modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(LeftControl), modifiers: NONE, phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:18:13.388 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=Control mods=NONE 23:18:13.486 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(C), modifiers: CTRL, phys_code: Some(C), raw_code: 54, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:13.486 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "\u{3}", 99. kc -> Some(Char('\u{3}')) 23:18:13.486 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('c'), modifiers: CTRL, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(C), modifiers: CTRL, phys_code: Some(C), raw_code: 54, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:18:13.486 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=Char('c') mods=CTRL 23:18:13.486 INFO wezterm_term::terminalstate::keyboard > key_down: sending "\u{3}", Char('c') CTRL 23:18:13.615 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('c'), modifiers: CTRL, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(C), modifiers: CTRL, phys_code: Some(C), raw_code: 54, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:18:13.615 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=Char('c') mods=CTRL 23:18:13.645 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Control, modifiers: CTRL, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(LeftControl), modifiers: CTRL, phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:18:13.645 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=Control mods=CTRL ```
Last
  • Keypad working with numlock on.
```rust 23:18:15.785 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad3), modifiers: NONE, phys_code: Some(Keypad3), raw_code: 89, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:15.785 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "3", 65459. kc -> Some(Char('3')) 23:18:15.785 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('3'), modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad3), modifiers: NONE, phys_code: Some(Keypad3), raw_code: 89, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:18:15.785 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=Char('3') mods=NONE 23:18:15.785 INFO wezterm_term::terminalstate::keyboard > key_down: sending "3", Char('3') NONE 23:18:15.916 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('3'), modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad3), modifiers: NONE, phys_code: Some(Keypad3), raw_code: 89, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:18:15.916 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=Char('3') mods=NONE 23:18:16.123 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad2), modifiers: NONE, phys_code: Some(Keypad2), raw_code: 88, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:16.123 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "2", 65458. kc -> Some(Char('2')) 23:18:16.123 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('2'), modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad2), modifiers: NONE, phys_code: Some(Keypad2), raw_code: 88, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:18:16.123 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=Char('2') mods=NONE 23:18:16.123 INFO wezterm_term::terminalstate::keyboard > key_down: sending "2", Char('2') NONE 23:18:16.251 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('2'), modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad2), modifiers: NONE, phys_code: Some(Keypad2), raw_code: 88, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:18:16.251 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=Char('2') mods=NONE 23:18:16.382 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:16.382 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "1", 65457. kc -> Some(Char('1')) 23:18:16.382 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('1'), modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:18:16.382 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=Char('1') mods=NONE 23:18:16.382 INFO wezterm_term::terminalstate::keyboard > key_down: sending "1", Char('1') NONE 23:18:16.492 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('1'), modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:18:16.492 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=Char('1') mods=NONE 23:18:16.637 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad4), modifiers: NONE, phys_code: Some(Keypad4), raw_code: 83, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:16.637 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "4", 65460. kc -> Some(Char('4')) 23:18:16.637 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('4'), modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad4), modifiers: NONE, phys_code: Some(Keypad4), raw_code: 83, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:18:16.637 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=Char('4') mods=NONE 23:18:16.637 INFO wezterm_term::terminalstate::keyboard > key_down: sending "4", Char('4') NONE 23:18:16.751 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('4'), modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad4), modifiers: NONE, phys_code: Some(Keypad4), raw_code: 83, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:18:16.751 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=Char('4') mods=NONE 23:18:16.867 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad5), modifiers: NONE, phys_code: Some(Keypad5), raw_code: 84, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:16.867 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "5", 65461. kc -> Some(Char('5')) 23:18:16.867 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('5'), modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad5), modifiers: NONE, phys_code: Some(Keypad5), raw_code: 84, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:18:16.867 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=Char('5') mods=NONE 23:18:16.867 INFO wezterm_term::terminalstate::keyboard > key_down: sending "5", Char('5') NONE 23:18:16.960 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('5'), modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad5), modifiers: NONE, phys_code: Some(Keypad5), raw_code: 84, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:18:16.960 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=Char('5') mods=NONE 23:18:17.084 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad6), modifiers: NONE, phys_code: Some(Keypad6), raw_code: 85, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:17.084 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "6", 65462. kc -> Some(Char('6')) 23:18:17.084 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('6'), modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad6), modifiers: NONE, phys_code: Some(Keypad6), raw_code: 85, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:18:17.084 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=Char('6') mods=NONE 23:18:17.084 INFO wezterm_term::terminalstate::keyboard > key_down: sending "6", Char('6') NONE 23:18:17.179 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('6'), modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad6), modifiers: NONE, phys_code: Some(Keypad6), raw_code: 85, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:18:17.179 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=Char('6') mods=NONE ```
Interestingly, I haven't touched the Num Lock key in the entire "test set", its just kept it on all the time. If we compare the same key the time it worked as intented and the time it didn't, we can see that the only different things is the **keysym**: ```rust 23:18:16.382 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:16.382 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "1", 65457. kc -> Some(Char('1')) 23:18:16.382 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('1'), modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:18:16.382 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=Char('1') mods=NONE 23:18:16.382 INFO wezterm_term::terminalstate::keyboard > key_down: sending "1", Char('1') NONE ``` ```rust 23:18:07.276 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:18:07.276 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "", 65436. kc -> None 23:18:07.276 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: End, modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad1), modifiers: NONE, phys_code: Some(Keypad1), raw_code: 87, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:18:07.276 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=End mods=NONE 23:18:07.276 INFO wezterm_term::terminalstate::keyboard > key_down: sending "\u{1b}OF", End NONE ``` If I capture the num lock event, they are those: ```rust 23:51:24.118 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(NumLock), modifiers: NONE, phys_code: Some(NumLock), raw_code: 77, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:51:24.118 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "", 65407. kc -> None 23:51:24.118 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: NumLock, modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(NumLock), modifiers: NONE, phys_code: Some(NumLock), raw_code: 77, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:51:24.118 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=NumLock mods=NONE 23:51:24.202 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: NumLock, modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(NumLock), modifiers: NONE, phys_code: Some(NumLock), raw_code: 77, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:51:24.202 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=NumLock mods=NONE 23:51:24.946 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(NumLock), modifiers: NONE, phys_code: Some(NumLock), raw_code: 77, repeat_count: 1, key_is_down: true, handled: Handled(false) } 23:51:24.946 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "", 65407. kc -> None 23:51:24.946 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: NumLock, modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(NumLock), modifiers: NONE, phys_code: Some(NumLock), raw_code: 77, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 23:51:24.946 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=NumLock mods=NONE 23:51:25.026 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: NumLock, modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(NumLock), modifiers: NONE, phys_code: Some(NumLock), raw_code: 77, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 23:51:25.026 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=NumLock mods=NONE ``` Doing more investigation I found that **any modifier key that I press in the wezterm** window makes Num Lock work again: ```rust ➜ ~ WEZTERM_LOG=window::os::x11::keyboard=trace,info wezterm 00:41:26.390 INFO wezterm_mux_server_impl::local > setting up /run/user/1000/wezterm/gui-sock-1995881 00:41:26.446 INFO wezterm_gui::termwindow > OpenGL initialized! AMD Radeon RX 6600 XT (dimgrey_cavefish, LLVM 13.0.1, DRM 3.44, 5.17.1-arch1-1) 4.6 (Compatibility Profile) Mesa 22.0.1 is_context_loss_possible=false wezterm version: 20220408-101518-b908e2dd 00:41:26.483 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('\r'), modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Return), modifiers: NONE, phys_code: Some(Return), raw_code: 36, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 00:41:26.483 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=Enter mods=NONE 00:41:28.230 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad4), modifiers: NONE, phys_code: Some(Keypad4), raw_code: 83, repeat_count: 1, key_is_down: true, handled: Handled(false) } 00:41:28.230 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "", 65430. kc -> None 00:41:28.230 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: ApplicationLeftArrow, modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad4), modifiers: NONE, phys_code: Some(Keypad4), raw_code: 83, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 00:41:28.230 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=ApplicationLeftArrow mods=NONE 00:41:28.230 INFO wezterm_term::terminalstate::keyboard > key_down: sending "\u{1b}OD", ApplicationLeftArrow NONE 00:41:28.330 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: ApplicationLeftArrow, modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad4), modifiers: NONE, phys_code: Some(Keypad4), raw_code: 83, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } # Here I pressed the LALT modifier 00:41:28.330 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=ApplicationLeftArrow mods=NONE 00:41:28.936 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(LeftAlt), modifiers: NONE, phys_code: Some(LeftAlt), raw_code: 64, repeat_count: 1, key_is_down: true, handled: Handled(false) } 00:41:28.936 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "", 65513. kc -> None 00:41:28.936 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Alt, modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(LeftAlt), modifiers: NONE, phys_code: Some(LeftAlt), raw_code: 64, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 00:41:28.936 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=Alt mods=NONE 00:41:29.065 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Alt, modifiers: ALT, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(LeftAlt), modifiers: ALT, phys_code: Some(LeftAlt), raw_code: 64, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 00:41:29.065 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=Alt mods=ALT # Now it is back working: 00:41:29.561 INFO wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Keypad4), modifiers: NONE, phys_code: Some(Keypad4), raw_code: 83, repeat_count: 1, key_is_down: true, handled: Handled(false) } 00:41:29.561 TRACE window::os::x11::keyboard > process_key_event: RawKeyEvent FeedResult::Nothing: "4", 65460. kc -> Some(Char('4')) 00:41:29.561 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('4'), modifiers: NONE, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Keypad4), modifiers: NONE, phys_code: Some(Keypad4), raw_code: 83, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 00:41:29.561 INFO wezterm_gui::termwindow::keyevent > send to pane DOWN key=Char('4') mods=NONE 00:41:29.561 INFO wezterm_term::terminalstate::keyboard > key_down: sending "4", Char('4') NONE 00:41:29.683 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('4'), modifiers: NONE, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Keypad4), modifiers: NONE, phys_code: Some(Keypad4), raw_code: 83, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 00:41:29.683 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=Char('4') mods=NONE ``` Since it only happens with Wayland but not with XWayland, I'm sure that the Wayland implementation is not tracking the keyboard state after window launch or focus. Also, I discovered that you will not be able to reproduce if you do Alt+Tab and you release the Alt before the Tab, because **wezterm** window will capture `Tab Up` event and will update the keyboard state: ```rust 00:46:24.940 INFO wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char('\t'), modifiers: SHIFT, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Tab), modifiers: SHIFT, phys_code: Some(Tab), raw_code: 23, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 00:46:24.940 INFO wezterm_gui::termwindow::keyevent > send to pane UP key=Tab mods=SHIFT ``` > *Release the Alt and keep Tab pressed, the other way around will not work because holding Alt keeps the window switch selector open.*

It's a mutter problem

I've got extremely curious by this problem and was thinking about opening a PR to fix it, so I investigated a little more (and I think I went too far, so not that little).

It seems like Gnome Mutter is sending Modifiers event before the Enter event here.

I've got very confused by the code since it mentions sending pressed keys with the Enter event, and I thought it was talking about the key modifiers.

I was able to confirm this by adding some tracing to the keyboard_event logic.

It looks like everything should be working fine in the wezterm side, but Mutter is breaking the spec by sending the wl_keyboard::modifiers before wezterm has a proper keyboard_window_id, which is when wl_keyboard::enter is received.

The spec states crearly that modifiers must only be sent (and must be sent) after wl_keyboard::enter. A workaround is possible, but I don't think that spec-breaking implementations of wayland protocol should be supported.

I haven't opened an issue in mutter yet because I spend a bunch of time investigating and it is very late, but feel free to do if you wish, I may do after I rest and comeback refreshed.

wez commented 2 years ago

Thanks for investigating! It's worth reporting to the mutter folks so that they can queue up a fix for it; would you mind doing that when you're feeling more refreshed? I can't run mutter in wayland mode on my nvidia hardware at this time (waiting for Fedora 36 to release and hopefully resolve that!), so I'd essentially be paraphrasing what you've shared here and it would an inefficient way to to work through things!

JonathanxD commented 2 years ago

It totally makes sense, I've opened an issue in Gnome Mutter repo. I also did more investigation and found that KWayland, wlroots (base for a range of tiling WM and some stacking ones) and Weston all implements this correctly, so it is probably a Gnome one issue.

Interestingly, the Gnome Mutter keyboard modifiers logic dates 5 to 7 years ago, so this problem has been there for years without anyone noticing (or bothering reporting it and just did a workaround).