Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

Espanso doesn't work #3840

Closed
dodalovicgran opened this issue Jun 9, 2023 · 37 comments
Closed

Espanso doesn't work #3840

dodalovicgran opened this issue Jun 9, 2023 · 37 comments
Labels
bug Something isn't working fixed-in-nightly This is (or is assumed to be) fixed in the nightly builds.

Comments

@dodalovicgran
Copy link

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

Linux X11

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

No response

WezTerm version

➜ ~ wezterm -V zsh: command not found: wezterm

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

No, and I'll explain why below

Describe the bug

When using https://espanso.org/ nothing happens, the expansions don't take place. On alacritty, for instance, it works fine.

To Reproduce

When using https://espanso.org/ nothing happens, the expansions don't take place. On alacrity, for instance, it works fine.

Configuration

not important, didn't work even with no config file initially

Expected Behavior

No response

Logs

No response

Anything else?

No response

@dodalovicgran dodalovicgran added the bug Something isn't working label Jun 9, 2023
@kimat
Copy link

kimat commented Jun 9, 2023

Expansion works fine on my setup using espanso defaults:

$ wezterm --version
wezterm 20230408-112425-69ae8472

$ espanso --version
espanso 2.1.8

@wez
Copy link
Owner

wez commented Jun 13, 2023

Please run through https://wezfurlong.org/wezterm/troubleshooting.html#debugging-keyboard-related-issues and provide more information.

@wez wez added the waiting-on-op Waiting for more information from the original poster label Jun 13, 2023
@dodalovicgran
Copy link
Author

dodalovicgran commented Jun 13, 2023

Espanso seem to lowercase what actually needs to be expanded.
My use-case, i have a root password in espanso

- trigger: ":rp"
  replace: "aAbB"

when I do this in wezterm, it gets expanded as aabb. In other terminals it works fine. I'm not sure if this is an issue of wezterm or espanso, tbh

➜  ~ espanso --version
espanso 2.1.8
➜  ~ wezterm --version
zsh: command not found: wezterm

wezterm installed as flatpack @ Pop!_OS 22.04 LTS

@github-actions github-actions bot removed the waiting-on-op Waiting for more information from the original poster label Jun 13, 2023
@kimat
Copy link

kimat commented Jun 13, 2023

I could reproduce this issue, espanso matches do indeed get expanded in lowercase only, when expanding them in wezterm.

@wez
Copy link
Owner

wez commented Jun 13, 2023

I'm not going to install espanso; I simply don't have the time.
I would love to see some actual information from wezterm here; there's no version information and no debug output.
Could someone please add that here?

@wez wez added the waiting-on-op Waiting for more information from the original poster label Jun 13, 2023
@dodalovicgran
Copy link
Author

Nothing got printed out that I could understand. Bunch of DEBUG statements, no ERROR or whatsoever.
I understand that you're busy.
I'll switch back to alacritty. Feel free to close, if you feel like.

Thanks

@github-actions github-actions bot removed the waiting-on-op Waiting for more information from the original poster label Jun 14, 2023
@wez
Copy link
Owner

wez commented Jun 14, 2023

The debug is for me to understand, rather than you. Without it, I have nothing to act upon.
If you don't wish to bother, then let's close this.
Otherwise, please add that information and re-open it.

@wez wez closed this as completed Jun 14, 2023
@dodalovicgran
Copy link
Author

@stravid
Copy link

stravid commented Jun 15, 2023

I'm using Windows and have the same problem and narrowed down the circumstances. It only happens if I open WezTerm as administrator. But I'm uncertain if this is a problem with WezTerm. The same problem occurs if I'm using cmd.exe. Espanso correctly works in a normal cmd.exe instance. Once I open it as administrator it also stops working.

wezterm-gui.exe-log-20548.txt

wezterm --version
wezterm 20230408-112425-69ae8472

espansod --version
espanso 2.1.8

@wez wez reopened this Jun 15, 2023
@kimat
Copy link

kimat commented Jun 16, 2023

Here's another debug log:
wezterm.log

This log was generated by doing:

  1. WEZTERM_LOG=debug wezterm 1>wezterm.log 2>&1
  2. typing :espanso in wezterm (which is configured to expand to Hi there! in espanso)
  3. wezterm was closed after espanso replaced the :espanso string in wezterm by hi there! instead of Hi there!
$ wezterm --version
wezterm 20230408-112425-69ae8472
$ espanso --version
espanso 2.1.8

espanso's config is the default one with the following match:

matches:
  # Simple text replacement
  - trigger: ":espanso"
    replace: "Hi there!"

@AndydeCleyre
Copy link

3. wezterm was closed after espanso replaced the `:espanso` string in wezterm by `hi there!` instead of `Hi there!`

Can you confirm that it's producing hi there!? Just because in my case it would be hi there1.

@kimat
Copy link

kimat commented Jun 20, 2023

Can you confirm that it's producing hi there!? Just because in my case it would be hi there1.

@AndydeCleyre yes:
espanso

@AndydeCleyre
Copy link

  • Pop OS
  • X11
  • Kwin
  • wezterm 20230619-104421-c1f49509

image

$ wezterm -e zsh -f &>wez.log  # in wezterm, type: :wez3840
`wez.log`
12:36:34.412  INFO   wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(LeftShift), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(LeftShift), raw_code: 50, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
12:36:34.412  INFO   wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: LeftShift, modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(LeftShift), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(LeftShift), raw_code: 50, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
12:36:34.412  INFO   wezterm_gui::termwindow::keyevent > send to pane DOWN key=LeftShift mods=NONE
12:36:34.690  INFO   wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Semicolon), modifiers: SHIFT, leds: NUM_LOCK, phys_code: Some(Semicolon), raw_code: 47, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
12:36:34.690  INFO   wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char(':'), modifiers: SHIFT, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Semicolon), modifiers: SHIFT, leds: NUM_LOCK, phys_code: Some(Semicolon), raw_code: 47, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
12:36:34.690  INFO   wezterm_gui::termwindow::keyevent > send to pane DOWN key=Char(':') mods=SHIFT
12:36:34.690  INFO   wezterm_term::terminalstate::keyboard > key_down: sending ":", Char(':') SHIFT
12:36:34.819  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char(':'), modifiers: SHIFT, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Semicolon), modifiers: SHIFT, leds: NUM_LOCK, phys_code: Some(Semicolon), raw_code: 47, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
12:36:34.819  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Char(':') mods=SHIFT
12:36:35.056  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: LeftShift, modifiers: SHIFT, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(LeftShift), modifiers: SHIFT, leds: NUM_LOCK, phys_code: Some(LeftShift), raw_code: 50, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
12:36:35.057  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=LeftShift mods=SHIFT
12:36:35.644  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(W), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(W), raw_code: 25, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
12:36:35.645  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('w'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(W), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(W), raw_code: 25, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
12:36:35.645  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Char('w') mods=NONE
12:36:35.645  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "w", Char('w') NONE
12:36:35.770  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('w'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(W), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(W), raw_code: 25, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
12:36:35.770  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Char('w') mods=NONE
12:36:35.972  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(E), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(E), raw_code: 26, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
12:36:35.972  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('e'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(E), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(E), raw_code: 26, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
12:36:35.972  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Char('e') mods=NONE
12:36:35.972  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "e", Char('e') NONE
12:36:36.072  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('e'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(E), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(E), raw_code: 26, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
12:36:36.072  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Char('e') mods=NONE
12:36:36.516  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(Z), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Z), raw_code: 52, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
12:36:36.516  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('z'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Z), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Z), raw_code: 52, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
12:36:36.516  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Char('z') mods=NONE
12:36:36.516  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "z", Char('z') NONE
12:36:36.658  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('z'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Z), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Z), raw_code: 52, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
12:36:36.658  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Char('z') mods=NONE
12:36:37.246  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(K3), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(K3), raw_code: 12, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
12:36:37.246  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('3'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(K3), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(K3), raw_code: 12, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
12:36:37.246  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Char('3') mods=NONE
12:36:37.246  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "3", Char('3') NONE
12:36:37.381  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('3'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(K3), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(K3), raw_code: 12, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
12:36:37.381  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Char('3') mods=NONE
12:36:37.599  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(K8), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(K8), raw_code: 17, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
12:36:37.599  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('8'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(K8), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(K8), raw_code: 17, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
12:36:37.599  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Char('8') mods=NONE
12:36:37.599  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "8", Char('8') NONE
12:36:37.701  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('8'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(K8), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(K8), raw_code: 17, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
12:36:37.701  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Char('8') mods=NONE
12:36:38.032  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(K4), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(K4), raw_code: 13, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
12:36:38.032  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('4'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(K4), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(K4), raw_code: 13, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
12:36:38.032  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Char('4') mods=NONE
12:36:38.032  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "4", Char('4') NONE
12:36:38.138  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('4'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(K4), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(K4), raw_code: 13, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
12:36:38.138  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Char('4') mods=NONE
12:36:38.429  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(K0), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(K0), raw_code: 19, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
12:36:38.429  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('0'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(K0), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(K0), raw_code: 19, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
12:36:38.429  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Char('0') mods=NONE
12:36:38.429  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "0", Char('0') NONE
12:36:38.432  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
12:36:38.432  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('\u{8}'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
12:36:38.432  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Backspace mods=NONE
12:36:38.432  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "\u{7f}", Backspace NONE
12:36:38.432  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('\u{8}'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
12:36:38.432  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Backspace mods=NONE
12:36:38.432  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
12:36:38.432  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('\u{8}'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
12:36:38.432  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Backspace mods=NONE
12:36:38.432  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "\u{7f}", Backspace NONE
12:36:38.432  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('\u{8}'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
12:36:38.432  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Backspace mods=NONE
12:36:38.432  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
12:36:38.432  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('\u{8}'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
12:36:38.432  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Backspace mods=NONE
12:36:38.432  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "\u{7f}", Backspace NONE
12:36:38.432  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('\u{8}'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
12:36:38.432  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Backspace mods=NONE
12:36:38.432  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
12:36:38.433  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('\u{8}'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
12:36:38.433  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Backspace mods=NONE
12:36:38.433  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "\u{7f}", Backspace NONE
12:36:38.433  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('\u{8}'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
12:36:38.433  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Backspace mods=NONE
12:36:38.433  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
12:36:38.433  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('\u{8}'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
12:36:38.433  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Backspace mods=NONE
12:36:38.433  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "\u{7f}", Backspace NONE
12:36:38.433  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('\u{8}'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
12:36:38.433  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Backspace mods=NONE
12:36:38.433  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
12:36:38.433  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('\u{8}'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
12:36:38.433  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Backspace mods=NONE
12:36:38.433  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "\u{7f}", Backspace NONE
12:36:38.433  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('\u{8}'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
12:36:38.433  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Backspace mods=NONE
12:36:38.433  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
12:36:38.433  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('\u{8}'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
12:36:38.433  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Backspace mods=NONE
12:36:38.433  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "\u{7f}", Backspace NONE
12:36:38.433  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('\u{8}'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
12:36:38.433  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Backspace mods=NONE
12:36:38.434  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
12:36:38.434  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('\u{8}'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
12:36:38.434  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Backspace mods=NONE
12:36:38.434  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "\u{7f}", Backspace NONE
12:36:38.434  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('\u{8}'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
12:36:38.434  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Backspace mods=NONE
12:36:38.434  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(S), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(S), raw_code: 39, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
12:36:38.434  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('s'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(S), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(S), raw_code: 39, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
12:36:38.434  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Char('s') mods=NONE
12:36:38.434  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "s", Char('s') NONE
12:36:38.434  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('s'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(S), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(S), raw_code: 39, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
12:36:38.434  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Char('s') mods=NONE
12:36:38.434  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(Y), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Y), raw_code: 29, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
12:36:38.434  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('y'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Y), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Y), raw_code: 29, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
12:36:38.434  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Char('y') mods=NONE
12:36:38.434  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "y", Char('y') NONE
12:36:38.434  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('y'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Y), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Y), raw_code: 29, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
12:36:38.434  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Char('y') mods=NONE
12:36:38.434  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(M), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(M), raw_code: 58, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
12:36:38.434  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('m'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(M), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(M), raw_code: 58, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
12:36:38.434  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Char('m') mods=NONE
12:36:38.434  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "m", Char('m') NONE
12:36:38.434  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('m'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(M), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(M), raw_code: 58, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
12:36:38.434  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Char('m') mods=NONE
12:36:38.434  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(K1), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(K1), raw_code: 10, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
12:36:38.434  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('1'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(K1), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(K1), raw_code: 10, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
12:36:38.434  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Char('1') mods=NONE
12:36:38.434  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "1", Char('1') NONE
12:36:38.435  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('1'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(K1), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(K1), raw_code: 10, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
12:36:38.435  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Char('1') mods=NONE
12:36:38.435  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(K2), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(K2), raw_code: 11, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
12:36:38.435  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('2'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(K2), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(K2), raw_code: 11, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
12:36:38.435  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Char('2') mods=NONE
12:36:38.435  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "2", Char('2') NONE
12:36:38.435  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('2'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(K2), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(K2), raw_code: 11, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
12:36:38.435  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Char('2') mods=NONE
12:36:38.435  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(K3), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(K3), raw_code: 12, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
12:36:38.435  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('3'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(K3), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(K3), raw_code: 12, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
12:36:38.435  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Char('3') mods=NONE
12:36:38.435  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "3", Char('3') NONE
12:36:38.435  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('3'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(K3), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(K3), raw_code: 12, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
12:36:38.435  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Char('3') mods=NONE
12:36:38.435  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(K4), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(K4), raw_code: 13, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
12:36:38.435  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('4'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(K4), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(K4), raw_code: 13, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
12:36:38.435  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Char('4') mods=NONE
12:36:38.435  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "4", Char('4') NONE
12:36:38.435  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('4'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(K4), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(K4), raw_code: 13, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
12:36:38.435  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Char('4') mods=NONE
12:36:38.435  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(K5), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(K5), raw_code: 14, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
12:36:38.435  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('5'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(K5), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(K5), raw_code: 14, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
12:36:38.435  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Char('5') mods=NONE
12:36:38.435  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "5", Char('5') NONE
12:36:38.435  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('5'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(K5), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(K5), raw_code: 14, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
12:36:38.435  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Char('5') mods=NONE
12:36:38.435  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(K6), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(K6), raw_code: 15, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
12:36:38.435  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('6'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(K6), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(K6), raw_code: 15, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
12:36:38.435  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Char('6') mods=NONE
12:36:38.435  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "6", Char('6') NONE
12:36:38.436  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('6'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(K6), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(K6), raw_code: 15, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
12:36:38.436  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Char('6') mods=NONE
12:36:38.436  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(K7), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(K7), raw_code: 16, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
12:36:38.436  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('7'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(K7), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(K7), raw_code: 16, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
12:36:38.436  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Char('7') mods=NONE
12:36:38.436  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "7", Char('7') NONE
12:36:38.436  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('7'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(K7), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(K7), raw_code: 16, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
12:36:38.436  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Char('7') mods=NONE
12:36:38.436  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(K8), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(K8), raw_code: 17, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
12:36:38.436  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('8'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(K8), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(K8), raw_code: 17, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
12:36:38.436  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Char('8') mods=NONE
12:36:38.436  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "8", Char('8') NONE
12:36:38.436  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('8'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(K8), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(K8), raw_code: 17, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
12:36:38.436  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Char('8') mods=NONE
12:36:38.437  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(K9), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(K9), raw_code: 18, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
12:36:38.437  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('9'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(K9), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(K9), raw_code: 18, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
12:36:38.437  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Char('9') mods=NONE
12:36:38.437  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "9", Char('9') NONE
12:36:38.437  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('9'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(K9), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(K9), raw_code: 18, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
12:36:38.437  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Char('9') mods=NONE
12:36:38.437  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(K0), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(K0), raw_code: 19, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
12:36:38.437  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('0'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(K0), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(K0), raw_code: 19, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
12:36:38.437  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Char('0') mods=NONE
12:36:38.437  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "0", Char('0') NONE
12:36:38.437  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('0'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(K0), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(K0), raw_code: 19, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
12:36:38.438  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Char('0') mods=NONE
12:36:38.438  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(Minus), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Minus), raw_code: 20, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
12:36:38.438  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('-'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Minus), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Minus), raw_code: 20, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
12:36:38.438  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Char('-') mods=NONE
12:36:38.438  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "-", Char('-') NONE
12:36:38.438  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('-'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Minus), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Minus), raw_code: 20, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
12:36:38.438  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Char('-') mods=NONE
12:36:38.438  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(Equal), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Equal), raw_code: 21, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
12:36:38.438  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('='), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Equal), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Equal), raw_code: 21, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
12:36:38.438  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Char('=') mods=NONE
12:36:38.438  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "=", Char('=') NONE
12:36:38.438  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('='), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Equal), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Equal), raw_code: 21, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
12:36:38.438  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Char('=') mods=NONE
12:36:38.509  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('0'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(K0), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(K0), raw_code: 19, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
12:36:38.509  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Char('0') mods=NONE

  • Same behavior with use_ime set to false.

OK, after more fiddling with espanso options, I found that it all seems to work ok if I set disable_x11_fast_inject: true in espanso's config. The docs say for that option:

NOTE: This is only relevant on Linux under X11 environments. Switch to a slower (but sometimes more supported) way of injecting key events based on XTestFakeKeyEvent instead of XSendEvent. From my experiements, disabling fast inject becomes particularly slow when using the Gnome desktop environment.

@dodalovicgran
Copy link
Author

disable_x11_fast_inject: true

didn't help in my case 😞

@AndydeCleyre
Copy link

Even with my config, I have now found issues with inputting Ŧ and Ł into wezterm (only) with espanso.

$ tail -n 4 ~/.config/espanso/match/chars.yml
  - trigger: ":ten"
    replace: Ŧ
  - trigger: ":lem"
    replace: Ł

:ten:

wez.log
14:21:19.000  INFO   wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(LeftShift), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(LeftShift), raw_code: 50, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
14:21:19.000  INFO   wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: LeftShift, modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(LeftShift), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(LeftShift), raw_code: 50, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
14:21:19.000  INFO   wezterm_gui::termwindow::keyevent > send to pane DOWN key=LeftShift mods=NONE
14:21:19.258  INFO   wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Semicolon), modifiers: SHIFT, leds: NUM_LOCK, phys_code: Some(Semicolon), raw_code: 47, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
14:21:19.258  INFO   wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char(':'), modifiers: SHIFT, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Semicolon), modifiers: SHIFT, leds: NUM_LOCK, phys_code: Some(Semicolon), raw_code: 47, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
14:21:19.258  INFO   wezterm_gui::termwindow::keyevent > send to pane DOWN key=Char(':') mods=SHIFT
14:21:19.258  INFO   wezterm_term::terminalstate::keyboard > key_down: sending ":", Char(':') SHIFT
14:21:19.371  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char(':'), modifiers: SHIFT, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Semicolon), modifiers: SHIFT, leds: NUM_LOCK, phys_code: Some(Semicolon), raw_code: 47, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
14:21:19.371  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Char(':') mods=SHIFT
14:21:19.430  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: LeftShift, modifiers: SHIFT, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(LeftShift), modifiers: SHIFT, leds: NUM_LOCK, phys_code: Some(LeftShift), raw_code: 50, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
14:21:19.431  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=LeftShift mods=SHIFT
14:21:19.757  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(T), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(T), raw_code: 28, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
14:21:19.757  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('t'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(T), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(T), raw_code: 28, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
14:21:19.757  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Char('t') mods=NONE
14:21:19.757  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "t", Char('t') NONE
14:21:19.876  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('t'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(T), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(T), raw_code: 28, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
14:21:19.876  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Char('t') mods=NONE
14:21:19.886  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(E), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(E), raw_code: 26, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
14:21:19.886  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('e'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(E), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(E), raw_code: 26, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
14:21:19.886  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Char('e') mods=NONE
14:21:19.886  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "e", Char('e') NONE
14:21:20.009  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('e'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(E), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(E), raw_code: 26, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
14:21:20.009  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Char('e') mods=NONE
14:21:20.128  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(N), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(N), raw_code: 57, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
14:21:20.128  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('n'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(N), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(N), raw_code: 57, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
14:21:20.128  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Char('n') mods=NONE
14:21:20.128  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "n", Char('n') NONE
14:21:20.130  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('n'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(N), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(N), raw_code: 57, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
14:21:20.130  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Char('n') mods=NONE
14:21:20.130  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
14:21:20.131  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('\u{8}'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
14:21:20.131  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Backspace mods=NONE
14:21:20.131  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "\u{7f}", Backspace NONE
14:21:20.131  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('\u{8}'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
14:21:20.131  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Backspace mods=NONE
14:21:20.131  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
14:21:20.131  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('\u{8}'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
14:21:20.131  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Backspace mods=NONE
14:21:20.131  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "\u{7f}", Backspace NONE
14:21:20.132  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('\u{8}'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
14:21:20.132  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Backspace mods=NONE
14:21:20.132  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
14:21:20.132  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('\u{8}'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
14:21:20.132  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Backspace mods=NONE
14:21:20.132  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "\u{7f}", Backspace NONE
14:21:20.135  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('\u{8}'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
14:21:20.135  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Backspace mods=NONE
14:21:20.135  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
14:21:20.135  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('\u{8}'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
14:21:20.135  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Backspace mods=NONE
14:21:20.135  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "\u{7f}", Backspace NONE
14:21:20.136  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('\u{8}'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
14:21:20.136  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Backspace mods=NONE
14:21:20.249  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(LeftControl), modifiers: CTRL, leds: NUM_LOCK, phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
14:21:20.249  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: LeftControl, modifiers: CTRL, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(LeftControl), modifiers: CTRL, leds: NUM_LOCK, phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
14:21:20.249  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=LeftControl mods=CTRL
14:21:20.250  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(RightControl), modifiers: CTRL, leds: NUM_LOCK, phys_code: Some(RightControl), raw_code: 105, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
14:21:20.250  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: RightControl, modifiers: CTRL, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(RightControl), modifiers: CTRL, leds: NUM_LOCK, phys_code: Some(RightControl), raw_code: 105, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
14:21:20.250  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=RightControl mods=CTRL
14:21:20.260  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(V), modifiers: CTRL, leds: NUM_LOCK, phys_code: Some(V), raw_code: 55, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
14:21:20.260  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('v'), modifiers: CTRL, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(V), modifiers: CTRL, leds: NUM_LOCK, phys_code: Some(V), raw_code: 55, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
14:21:20.260  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Char('v') mods=CTRL
14:21:20.260  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "\u{16}", Char('v') CTRL
14:21:20.270  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: LeftControl, modifiers: CTRL, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(LeftControl), modifiers: CTRL, leds: NUM_LOCK, phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
14:21:20.270  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=LeftControl mods=CTRL
14:21:20.270  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: RightControl, modifiers: CTRL, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(RightControl), modifiers: CTRL, leds: NUM_LOCK, phys_code: Some(RightControl), raw_code: 105, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
14:21:20.270  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=RightControl mods=CTRL
14:21:20.271  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('v'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(V), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(V), raw_code: 55, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
14:21:20.271  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Char('v') mods=NONE

:lem:

wez.log
14:16:06.604  INFO   wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(LeftShift), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(LeftShift), raw_code: 50, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
14:16:06.604  INFO   wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: LeftShift, modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(LeftShift), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(LeftShift), raw_code: 50, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
14:16:06.604  INFO   wezterm_gui::termwindow::keyevent > send to pane DOWN key=LeftShift mods=NONE
14:16:06.850  INFO   wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Semicolon), modifiers: SHIFT, leds: NUM_LOCK, phys_code: Some(Semicolon), raw_code: 47, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
14:16:06.850  INFO   wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char(':'), modifiers: SHIFT, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Semicolon), modifiers: SHIFT, leds: NUM_LOCK, phys_code: Some(Semicolon), raw_code: 47, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
14:16:06.850  INFO   wezterm_gui::termwindow::keyevent > send to pane DOWN key=Char(':') mods=SHIFT
14:16:06.850  INFO   wezterm_term::terminalstate::keyboard > key_down: sending ":", Char(':') SHIFT
14:16:07.004  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char(':'), modifiers: SHIFT, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Semicolon), modifiers: SHIFT, leds: NUM_LOCK, phys_code: Some(Semicolon), raw_code: 47, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
14:16:07.004  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Char(':') mods=SHIFT
14:16:07.048  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: LeftShift, modifiers: SHIFT, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(LeftShift), modifiers: SHIFT, leds: NUM_LOCK, phys_code: Some(LeftShift), raw_code: 50, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
14:16:07.048  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=LeftShift mods=SHIFT
14:16:07.189  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(L), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(L), raw_code: 46, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
14:16:07.190  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('l'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(L), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(L), raw_code: 46, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
14:16:07.190  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Char('l') mods=NONE
14:16:07.190  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "l", Char('l') NONE
14:16:07.314  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('l'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(L), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(L), raw_code: 46, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
14:16:07.315  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Char('l') mods=NONE
14:16:07.330  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(E), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(E), raw_code: 26, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
14:16:07.330  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('e'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(E), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(E), raw_code: 26, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
14:16:07.331  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Char('e') mods=NONE
14:16:07.331  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "e", Char('e') NONE
14:16:07.463  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('e'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(E), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(E), raw_code: 26, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
14:16:07.463  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Char('e') mods=NONE
14:16:07.487  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(M), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(M), raw_code: 58, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
14:16:07.487  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('m'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(M), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(M), raw_code: 58, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
14:16:07.487  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Char('m') mods=NONE
14:16:07.487  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "m", Char('m') NONE
14:16:07.489  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('m'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(M), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(M), raw_code: 58, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
14:16:07.489  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Char('m') mods=NONE
14:16:07.490  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
14:16:07.490  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('\u{8}'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
14:16:07.490  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Backspace mods=NONE
14:16:07.490  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "\u{7f}", Backspace NONE
14:16:07.490  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('\u{8}'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
14:16:07.490  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Backspace mods=NONE
14:16:07.490  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
14:16:07.490  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('\u{8}'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
14:16:07.490  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Backspace mods=NONE
14:16:07.490  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "\u{7f}", Backspace NONE
14:16:07.490  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('\u{8}'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
14:16:07.490  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Backspace mods=NONE
14:16:07.491  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
14:16:07.491  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('\u{8}'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
14:16:07.491  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Backspace mods=NONE
14:16:07.491  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "\u{7f}", Backspace NONE
14:16:07.491  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('\u{8}'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
14:16:07.491  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Backspace mods=NONE
14:16:07.491  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
14:16:07.491  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('\u{8}'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
14:16:07.491  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Backspace mods=NONE
14:16:07.491  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "\u{7f}", Backspace NONE
14:16:07.491  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('\u{8}'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
14:16:07.491  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Backspace mods=NONE
14:16:07.605  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(LeftControl), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
14:16:07.606  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: LeftControl, modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(LeftControl), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
14:16:07.606  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=LeftControl mods=NONE
14:16:07.606  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(RightControl), modifiers: CTRL, leds: NUM_LOCK, phys_code: Some(RightControl), raw_code: 105, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
14:16:07.606  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: RightControl, modifiers: CTRL, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(RightControl), modifiers: CTRL, leds: NUM_LOCK, phys_code: Some(RightControl), raw_code: 105, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
14:16:07.606  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=RightControl mods=CTRL
14:16:07.616  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(V), modifiers: CTRL, leds: NUM_LOCK, phys_code: Some(V), raw_code: 55, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
14:16:07.616  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('v'), modifiers: CTRL, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(V), modifiers: CTRL, leds: NUM_LOCK, phys_code: Some(V), raw_code: 55, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
14:16:07.616  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Char('v') mods=CTRL
14:16:07.616  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "\u{16}", Char('v') CTRL
14:16:07.631  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: LeftControl, modifiers: CTRL, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(LeftControl), modifiers: CTRL, leds: NUM_LOCK, phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
14:16:07.631  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=LeftControl mods=CTRL
14:16:07.631  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: RightControl, modifiers: CTRL, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(RightControl), modifiers: CTRL, leds: NUM_LOCK, phys_code: Some(RightControl), raw_code: 105, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
14:16:07.631  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=RightControl mods=CTRL
14:16:07.632  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('v'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(V), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(V), raw_code: 55, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
14:16:07.632  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Char('v') mods=NONE

While pasting the characters manually via ctrl+v does work.

@wez
Copy link
Owner

wez commented Jul 19, 2023

@AndydeCleyre try starting wezterm like this:

$ WEZTERM_LOG=window::os::x11::keyboard=trace,info wezterm --config debug_key_events=true

that will log more information about the X11 events being received; then retry your :ten scenario and share the output

@AndydeCleyre
Copy link

Thanks!

wez.log
14:55:19.892  INFO   wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(LeftShift), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(LeftShift), raw_code: 50, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
14:55:19.892  TRACE  window::os::x11::keyboard         > process_key_event: RawKeyEvent FeedResult::Nothing: "", 65505. kc -> None def_sym=65505
14:55:19.892  INFO   wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: LeftShift, modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(LeftShift), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(LeftShift), raw_code: 50, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
14:55:19.893  INFO   wezterm_gui::termwindow::keyevent > send to pane DOWN key=LeftShift mods=NONE
14:55:20.154  INFO   wezterm_gui::termwindow::keyevent > key_event RawKeyEvent { key: Physical(Semicolon), modifiers: SHIFT, leds: NUM_LOCK, phys_code: Some(Semicolon), raw_code: 47, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
14:55:20.155  TRACE  window::os::x11::keyboard         > process_key_event: RawKeyEvent FeedResult::Nothing: ":", 58. kc -> Some(Char(':')) def_sym=59
14:55:20.155  INFO   wezterm_gui::termwindow::keyevent > key_event KeyEvent { key: Char(':'), modifiers: SHIFT, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Semicolon), modifiers: SHIFT, leds: NUM_LOCK, phys_code: Some(Semicolon), raw_code: 47, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
14:55:20.155  INFO   wezterm_gui::termwindow::keyevent > send to pane DOWN key=Char(':') mods=SHIFT
14:55:20.155  INFO   wezterm_term::terminalstate::keyboard > key_down: sending ":", Char(':') SHIFT
14:55:20.281  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char(':'), modifiers: SHIFT, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Semicolon), modifiers: SHIFT, leds: NUM_LOCK, phys_code: Some(Semicolon), raw_code: 47, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
14:55:20.281  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Char(':') mods=SHIFT
14:55:20.360  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: LeftShift, modifiers: SHIFT, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(LeftShift), modifiers: SHIFT, leds: NUM_LOCK, phys_code: Some(LeftShift), raw_code: 50, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
14:55:20.360  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=LeftShift mods=SHIFT
14:55:20.658  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(T), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(T), raw_code: 28, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
14:55:20.658  TRACE  window::os::x11::keyboard             > process_key_event: RawKeyEvent FeedResult::Nothing: "t", 116. kc -> Some(Char('t')) def_sym=116
14:55:20.658  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('t'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(T), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(T), raw_code: 28, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
14:55:20.658  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Char('t') mods=NONE
14:55:20.659  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "t", Char('t') NONE
14:55:20.758  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('t'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(T), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(T), raw_code: 28, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
14:55:20.759  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Char('t') mods=NONE
14:55:20.767  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(E), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(E), raw_code: 26, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
14:55:20.767  TRACE  window::os::x11::keyboard             > process_key_event: RawKeyEvent FeedResult::Nothing: "e", 101. kc -> Some(Char('e')) def_sym=101
14:55:20.767  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('e'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(E), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(E), raw_code: 26, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
14:55:20.767  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Char('e') mods=NONE
14:55:20.767  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "e", Char('e') NONE
14:55:20.878  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('e'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(E), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(E), raw_code: 26, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
14:55:20.878  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Char('e') mods=NONE
14:55:21.034  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(N), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(N), raw_code: 57, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
14:55:21.034  TRACE  window::os::x11::keyboard             > process_key_event: RawKeyEvent FeedResult::Nothing: "n", 110. kc -> Some(Char('n')) def_sym=110
14:55:21.034  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('n'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(N), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(N), raw_code: 57, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
14:55:21.034  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Char('n') mods=NONE
14:55:21.034  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "n", Char('n') NONE
14:55:21.037  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('n'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(N), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(N), raw_code: 57, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
14:55:21.037  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Char('n') mods=NONE
14:55:21.037  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
14:55:21.037  TRACE  window::os::x11::keyboard             > process_key_event: RawKeyEvent FeedResult::Nothing: "\u{8}", 65288. kc -> Some(Char('\u{8}')) def_sym=65288
14:55:21.037  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('\u{8}'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
14:55:21.037  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Backspace mods=NONE
14:55:21.037  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "\u{7f}", Backspace NONE
14:55:21.038  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('\u{8}'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
14:55:21.038  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Backspace mods=NONE
14:55:21.038  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
14:55:21.038  TRACE  window::os::x11::keyboard             > process_key_event: RawKeyEvent FeedResult::Nothing: "\u{8}", 65288. kc -> Some(Char('\u{8}')) def_sym=65288
14:55:21.038  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('\u{8}'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
14:55:21.038  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Backspace mods=NONE
14:55:21.038  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "\u{7f}", Backspace NONE
14:55:21.047  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('\u{8}'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
14:55:21.047  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Backspace mods=NONE
14:55:21.047  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
14:55:21.047  TRACE  window::os::x11::keyboard             > process_key_event: RawKeyEvent FeedResult::Nothing: "\u{8}", 65288. kc -> Some(Char('\u{8}')) def_sym=65288
14:55:21.048  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('\u{8}'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
14:55:21.048  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Backspace mods=NONE
14:55:21.048  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "\u{7f}", Backspace NONE
14:55:21.048  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('\u{8}'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
14:55:21.048  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Backspace mods=NONE
14:55:21.048  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
14:55:21.048  TRACE  window::os::x11::keyboard             > process_key_event: RawKeyEvent FeedResult::Nothing: "\u{8}", 65288. kc -> Some(Char('\u{8}')) def_sym=65288
14:55:21.048  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('\u{8}'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
14:55:21.048  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Backspace mods=NONE
14:55:21.048  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "\u{7f}", Backspace NONE
14:55:21.048  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('\u{8}'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(Backspace), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(Backspace), raw_code: 22, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
14:55:21.048  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Backspace mods=NONE
14:55:21.156  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(LeftControl), modifiers: CTRL, leds: NUM_LOCK, phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
14:55:21.156  TRACE  window::os::x11::keyboard             > process_key_event: RawKeyEvent FeedResult::Nothing: "", 65507. kc -> None def_sym=65507
14:55:21.156  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: LeftControl, modifiers: CTRL, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(LeftControl), modifiers: CTRL, leds: NUM_LOCK, phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
14:55:21.156  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=LeftControl mods=CTRL
14:55:21.173  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(RightControl), modifiers: CTRL, leds: NUM_LOCK, phys_code: Some(RightControl), raw_code: 105, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
14:55:21.173  TRACE  window::os::x11::keyboard             > process_key_event: RawKeyEvent FeedResult::Nothing: "", 65508. kc -> None def_sym=65508
14:55:21.173  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: RightControl, modifiers: CTRL, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(RightControl), modifiers: CTRL, leds: NUM_LOCK, phys_code: Some(RightControl), raw_code: 105, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
14:55:21.173  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=RightControl mods=CTRL
14:55:21.175  INFO   wezterm_gui::termwindow::keyevent     > key_event RawKeyEvent { key: Physical(V), modifiers: CTRL, leds: NUM_LOCK, phys_code: Some(V), raw_code: 55, repeat_count: 1, key_is_down: true, handled: Handled(false) } 
14:55:21.175  TRACE  window::os::x11::keyboard             > process_key_event: RawKeyEvent FeedResult::Nothing: "\u{16}", 118. kc -> None def_sym=118
14:55:21.175  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('v'), modifiers: CTRL, leds: NUM_LOCK, repeat_count: 1, key_is_down: true, raw: Some(RawKeyEvent { key: Physical(V), modifiers: CTRL, leds: NUM_LOCK, phys_code: Some(V), raw_code: 55, repeat_count: 1, key_is_down: true, handled: Handled(false) }) } 
14:55:21.175  INFO   wezterm_gui::termwindow::keyevent     > send to pane DOWN key=Char('v') mods=CTRL
14:55:21.175  INFO   wezterm_term::terminalstate::keyboard > key_down: sending "\u{16}", Char('v') CTRL
14:55:21.186  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: LeftControl, modifiers: CTRL, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(LeftControl), modifiers: CTRL, leds: NUM_LOCK, phys_code: Some(LeftControl), raw_code: 37, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
14:55:21.186  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=LeftControl mods=CTRL
14:55:21.186  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: RightControl, modifiers: CTRL, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(RightControl), modifiers: CTRL, leds: NUM_LOCK, phys_code: Some(RightControl), raw_code: 105, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
14:55:21.186  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=RightControl mods=CTRL
14:55:21.186  INFO   wezterm_gui::termwindow::keyevent     > key_event KeyEvent { key: Char('v'), modifiers: NONE, leds: NUM_LOCK, repeat_count: 1, key_is_down: false, raw: Some(RawKeyEvent { key: Physical(V), modifiers: NONE, leds: NUM_LOCK, phys_code: Some(V), raw_code: 55, repeat_count: 1, key_is_down: false, handled: Handled(false) }) } 
14:55:21.186  INFO   wezterm_gui::termwindow::keyevent     > send to pane UP key=Char('v') mods=NONE

@wez
Copy link
Owner

wez commented Jul 19, 2023

Do you know why it is sending CTRL-v at the end? Is it trying to paste?
Can you tell espanso to use ctrl-shift-v for pasting?

Alternatively, you could try adding a keybinding:

config.keys = {
  { key = 'v', mods = 'CTRL', action = wezterm.action.PasteFrom 'Clipboard' },
}

but note that some terminal programs want CTRL-v to do things, and that key assignment would prevent them from seeing it.

@AndydeCleyre
Copy link

Do you know why it is sending CTRL-v at the end? Is it trying to paste?

Yeah, when it uses the Clipboard backend (and often when it uses the default Auto backend it's effectively Clipboard) that's how it's doing the snippet expansion, with an automated paste.

Can you tell espanso to use ctrl-shift-v for pasting?

Ahh lemme see . . . yes!

paste_shortcut
Customize the keyboard shortcut used to paste an expansion. This should follow this format: CTRL+SHIFT+V

Trying it . . . yes it works! Thanks very much.

@wez
Copy link
Owner

wez commented Jul 19, 2023

So does that mean that the other folks having problems here in this issue probably also need to change that same config? Could you share a summary of what espanso config working for you in wezterm @AndydeCleyre ?

@AndydeCleyre
Copy link

So here's my working (AFAICT) espanso config:

disable_x11_fast_inject: true
paste_shortcut: "CTRL+SHIFT+V"

I'll note that the paste_shortcut option can be set on a per-app basis.

@dodalovicgran
Copy link
Author

Unfortunately, it didn't help.

@bew
Copy link
Sponsor Contributor

bew commented Aug 14, 2023

Hello @wez 👋

Trying out Espanso now, and trying to get it to work under wezterm..

My wezterm config uses Ctrl-shift-v to paste, it works when I do it manually, and I get this key event log (I close the window before up events):
wz-standalone-ctrl-shift-v.log

With Espanso I made a trigger !wez, which for some reason ONLY sends v to the pane instead of triggering PasteFrom action 🤔 :
wz-espanso-trigger-then-ctrl-shift-v.log (with comments)


To reproduce

Wezterm version: 20230712-072601-f4abf8fd
Install method: Flatpak (works well for Signal also installed via Flatpak, so shouldn't be a factor?)

Espanso version: v2.1.8
Install method: Nix

OS: Linux X11

File ~/.config/espanso/config/wezterm.yml:

filter_class: org.wezfurlong.wezterm

backend: Clipboard
paste_shortcut: "CTRL+SHIFT+V"

extra_includes:
  - "../match/_wezterm.yml"

File ~/.config/espanso/match/_wezterm.yml:

matches:
  - trigger: "!wez"
    replace: Yes!123

Run Espanso in foreground using: espanso daemon

Run wezterm: WEZTERM_LOG=window::os::x11::keyboard=trace,info wezterm -n --config debug_key_events=true
Type !wez

@wez
Copy link
Owner

wez commented Aug 14, 2023

@bew: Hi! The v key press event has no modifiers set; neither Shift nor Control.

Others reported that they also needed disable_x11_fast_inject: true to be set in espanso config; is that missing from your config?

@bew
Copy link
Sponsor Contributor

bew commented Aug 14, 2023

And that works with disable_x11_fast_inject: true, forgot to test it again after some change of espanso version 😬

Good catch on the missing modifiers, but that's weird isn't it?
Who/What is supposed to tell you which modifiers are pressed?

  1. Does that come from the X event? (and the espanso key injector is missing filling them in maybe?)
  2. Isn't wezterm using its previous knowledge of which modifiers are pressed (like ctrl, shift) to deduce which modifiers are active when a non-modifier key (like v) is pressed?

@wez
Copy link
Owner

wez commented Aug 14, 2023

wezterm uses the standard libxkbcommon-x11.so.0 under the covers; X events are fed into an internal state machine in that library, which produces decoded events and modifiers that respect both the keyboard layout and modifier mapping that may be configured by the user. wezterm doesn't have direct knowledge of that mapping; it leaves all of that to xkbdcommon and consumes its results.

espanso is simulating input for wezterm. It's espanso's responsibility to send appropriate input events in order for xkbdcommon to produce the normal output.

I don't know exactly what effect disable_x11_fast_inject: false has, but from the name I'd assume that it is taking some shortcuts that aren't guaranteed to work with every application.

@bew
Copy link
Sponsor Contributor

bew commented Aug 15, 2023

I think I've found something:

Looking at the xcb event with this diff:

diff --git a/window/src/os/x11/keyboard.rs b/window/src/os/x11/keyboard.rs
index 11c37b5dd..cce83ac35 100644
--- a/window/src/os/x11/keyboard.rs
+++ b/window/src/os/x11/keyboard.rs
@@ -174,6 +174,7 @@ impl KeyboardWithFallback {
         xcb_ev: &xcb::x::KeyPressEvent,
         events: &mut WindowEventSender,
     ) {
+        dbg!(xcb_ev);
         let xcode = xkb::Keycode::from(xcb_ev.detail());
         self.process_key_event_impl(xcode, true, events, false);
     }

The Ctrl-Shift-v sent by Espanso does have the modifers:
(albeit shifted: ctrl has ctrl modifier even though ctrl wasn't pressed yet, I made a PR to fix that)
wz-debug-xcb-event.log (commented)

I'm digging

@bew
Copy link
Sponsor Contributor

bew commented Aug 16, 2023

Ok so the main issue is that key press events sent by Espanso through XSendEvent are rather direct, and doesn't seem to pass through XKB' state handling, and thus don't send XkbStateNotify events that would tell Wezterm to update its knowledge of the modifiers.

Option A (change Wezterm, don't change Espanso)

  • Update rust-xcb to nicely expose (response_type & 0x80) on event type to detect synthetic events
    (note: I think I'll do this one regardless of the chosen option here)
  • Update Wezterm to detect synthetic key events (the ones sent via XSendEvent directly) and use the event's modifiers instead of the Xkb state known modifiers
  • No change on Espanso
    (except challenge them on why xsendevent is the default (kinda broken w.r.t modifiers))

Option B (change Espanso, don't change Wezterm)


What do you think would be the best option to solve this?

@dodalovicgran
Copy link
Author

The one that works. I would assume Wezterm.

wez pushed a commit that referenced this issue Jan 11, 2024
This is a working tentative at fixing text expansion/injection done by
Espanso by default, where XKB doesn't seem to detect the pressed
modifiers `Ctrl+Shift` before pressing `v`.

refs: #3840
wez added a commit that referenced this issue Jan 11, 2024
@Pistahh
Copy link

Pistahh commented Jan 22, 2024

Hi, I have a very similar issue, triggered on a QMK keyboard. In my case it looked related to ibus and as I can "fix" it by 1. not using ibus 2. using ibus but killing the ibus daemon, I assumed it is an ibus issue so filed a bug report for ibus: ibus/ibus#2600

Do you think it could be a wezterm issue? Happy to re-file the issue here if needed.

My issue also happens on wezterm-nightly 20240121-180215-76028ca1

@wez
Copy link
Owner

wez commented Jan 22, 2024

I don't think it is a wezterm bug per-se, but rather a weird interaction between ibus, the X server and xkbdcommon that wezterm is sensitive to

wez added a commit that referenced this issue Jan 24, 2024
test scenario is:

```
bash -c "sleep 5; for((i=0;i<30;i++)); do xdotool keydown --delay 0 Shift_L keydown --delay 0 9 keyup --delay 0 Shift_L keyup --delay 0 9; done"
```

That should cause a series of `(` characters to be emitted, but prior to
this commit is was usually mostly `9`'s.

What's changing here is:
* We copy the pertinent fields from the last xcb StateNotify event.
  That ostensibly has the current modifier and layout state, but
  because it comes from the X server, it doesn't factor in knowledge
  from the IME.
* When processing an XCB key event, compute the current modifier
  mask and override the XKB state with it.
* Now XKB will produce correct information about the key syms
* Restore the modifier state from the saved StateNotify information.

refs: #4151
refs: #4615
refs: fcitx/fcitx5#893
refs: ibus/ibus#2600
refs: #3840
@wez wez added the fixed-in-nightly This is (or is assumed to be) fixed in the nightly builds. label Jan 24, 2024
@wez
Copy link
Owner

wez commented Jan 24, 2024

This should be resolved now in main.

It typically takes about an hour before commits are available as nightly builds for all platforms. Linux builds are the fastest to build and are often available within about 20 minutes. Windows and macOS builds take a bit longer.

Please take a few moments to try out the fix and let me know how that works out. You can find the nightly downloads for your system in the wezterm installation docs.

If you prefer to use packages provided by your distribution or package manager of choice and don't want to replace that with a nightly download, keep in mind that you can download portable packages (eg: a .dmg file on macOS, a .zip file on Windows and an .AppImage file on Linux) that can be run without permanently installing or replacing an existing package, and can then simply be deleted once you no longer need them.

If you are eager and can build from source then you may be able to try this out more quickly.

@AndydeCleyre
Copy link

Excellent! As far as I can tell, I no longer need to set disable_x11_fast_inject: true in the Espanso config, which in turn helps me avoid some Espanso bugs. Thank you!

@Pistahh
Copy link

Pistahh commented Jan 26, 2024

This should be resolved now in main.

Can confirm, I don't see the issue anymore with the latest nightly.

@wez wez closed this as completed Jan 27, 2024
bew added a commit to bew/dotfiles that referenced this issue Jan 29, 2024
@HaleTom
Copy link

HaleTom commented Feb 6, 2024

For a temporary work-around for those not yet using the latest main commit:

~/.config/espanso/config/wezterm-TEMP.yml:

filter_class: org.wezfurlong.wezterm
disable_x11_fast_inject: true

@wez
Copy link
Owner

wez commented Feb 6, 2024

note that these changes have also been in the most recent couple of releases

Copy link

github-actions bot commented Mar 8, 2024

I'm going to lock this issue because it has been closed for 30 days ⏳. This helps our maintainers find and focus on the active issues. If you have found a problem that seems similar to this, please open a new issue and complete the issue template so we can capture all the details necessary to investigate further.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Mar 8, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
bug Something isn't working fixed-in-nightly This is (or is assumed to be) fixed in the nightly builds.
Projects
None yet
Development

No branches or pull requests

8 participants