shift key stuck after mapping triggered including insert key
Requirements
- [X] I've searched issues to see if this has not been reported before.
Describe the bug
Hi the shift gets set after I use a mapping in a layer I defined. I am not sure what is wrong, cannot make sense of the debug output...
Relevant kanata config
(defsrc
f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12
grv 1 2 3 4 5 6 7 8 9 0 - = bspc
tab q w e r t y u i o p [ ] \
caps a s d f g h j k l ; ' ret
lsft z x c v b n m , . / rsft
lctl lmet lalt spc ralt rmet apps rctl
)
(deflayer default
_ _ _ @f4 _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _
@caps _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _
_ _ _ @spc _ @w_rmet @w_apps @rctl
)
(deflayer spacemod
_ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ lrld
_ _ C-rght _ pgup C-home C-ins C-z home end S-ins _ _ _
caps _ _ C-x pgdn C-end left down up rght _ _ _
_ _ del _ _ C-left _ _ _ C-y _ _
_ _ _ _ _ _ apps _
)
To Reproduce
- with my config above (have more layers but not relevant I think)
- use Space-p with is mapped to S-ins (shift-insert) in the spacemod layer
- the shit-insert (paste) is done, but Shift is on, and I would expect it to be off, this messes all my workflow from this point on
Expected behavior
Shitf is off after the action has finished (paste)
Kanata version
kanata v1.5.0-prerelease-1
Debug logs
2023-10-08T12:02:44.5957802+02:00 [DEBUG] (1) kanata::kanata::windows::llhook: event loop: KeyEvent { code: KEY_SPACE, value: Press }
2023-10-08T12:02:44.5969958+02:00 [DEBUG] (2) kanata::kanata: process recv ev KeyEvent { code: KEY_SPACE, value: Press }
2023-10-08T12:02:44.7975872+02:00 [INFO] Entered layer:
(deflayer spacemod
_ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ lrld
_ _ C-rght _ pgup C-home C-ins C-z home end S-ins _ _ _
caps _ _ C-x pgdn C-end left down up rght _ _ _
_ _ del _ _ C-left _ _ _ C-y _ _
_ _ _ _ _ _ apps _
)
2023-10-08T12:02:44.8037858+02:00 [DEBUG] (1) kanata::kanata::windows::llhook: event loop: KeyEvent { code: KEY_P, value: Press }
2023-10-08T12:02:44.8055744+02:00 [DEBUG] (2) kanata::kanata: process recv ev KeyEvent { code: KEY_P, value: Press }
2023-10-08T12:02:44.8057336+02:00 [DEBUG] (2) kanata::kanata: key press LShift
2023-10-08T12:02:44.8076723+02:00 [DEBUG] (2) kanata::kanata: key press Insert
2023-10-08T12:02:44.8080443+02:00 [DEBUG] (1) kanata::kanata::windows::llhook: event loop: KeyEvent { code: KEY_LEFTSHIFT, value: Release }
2023-10-08T12:02:44.8094646+02:00 [DEBUG] (2) kanata::kanata: process recv ev KeyEvent { code: KEY_LEFTSHIFT, value: Release }
2023-10-08T12:02:44.8838026+02:00 [DEBUG] (1) kanata::kanata::windows::llhook: event loop: KeyEvent { code: KEY_LEFTSHIFT, value: Press }
2023-10-08T12:02:44.8841244+02:00 [DEBUG] (1) kanata::kanata::windows::llhook: event loop: KeyEvent { code: KEY_P, value: Release }
2023-10-08T12:02:44.8850702+02:00 [DEBUG] (2) kanata::kanata: process recv ev KeyEvent { code: KEY_LEFTSHIFT, value: Press }
2023-10-08T12:02:44.8854079+02:00 [DEBUG] (2) kanata::kanata: process recv ev KeyEvent { code: KEY_P, value: Release }
2023-10-08T12:02:44.8856957+02:00 [DEBUG] (2) kanata::kanata: key release Insert
2023-10-08T12:02:44.8860615+02:00 [DEBUG] (1) kanata::kanata::windows::llhook: event loop: KeyEvent { code: KEY_LEFTSHIFT, value: Release }
2023-10-08T12:02:44.8867148+02:00 [DEBUG] (2) kanata::kanata::windows: lsft-arrowkey workaround: releasing LShift at its typical coordinate
2023-10-08T12:02:44.8868529+02:00 [DEBUG] (2) kanata::kanata::windows: releasing LShift from pressed keys
2023-10-08T12:02:44.8870362+02:00 [DEBUG] (1) kanata::kanata::windows::llhook: event loop: KeyEvent { code: KEY_LEFTSHIFT, value: Press }
2023-10-08T12:02:44.887323+02:00 [DEBUG] (2) kanata::kanata: key release LShift
2023-10-08T12:02:44.8874741+02:00 [DEBUG] (2) kanata::kanata: process recv ev KeyEvent { code: KEY_LEFTSHIFT, value: Release }
2023-10-08T12:02:44.8888775+02:00 [DEBUG] (2) kanata::kanata: process recv ev KeyEvent { code: KEY_LEFTSHIFT, value: Press }
2023-10-08T12:02:44.8890157+02:00 [DEBUG] (2) kanata::kanata: key press LShift
2023-10-08T12:02:45.0357525+02:00 [DEBUG] (1) kanata::kanata::windows::llhook: event loop: KeyEvent { code: KEY_SPACE, value: Release }
2023-10-08T12:02:45.0367611+02:00 [DEBUG] (2) kanata::kanata: process recv ev KeyEvent { code: KEY_SPACE, value: Release }
2023-10-08T12:02:45.0369204+02:00 [INFO] Entered layer:
(deflayer default
_ _ _ @f4 _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _
@caps _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _
_ _ _ @spc _ @w_rmet @w_apps @rctl
)
Operating system
win10
Additional context
2023-10-08T12:32:37.9290345+02:00 [INFO] kanata v1.5.0-prerelease-1 starting
2023-10-08T12:32:37.9291603+02:00 [INFO] using LLHOOK+SendInput for keyboard IO
2023-10-08T12:32:37.9300306+02:00 [INFO] process unmapped keys: false
2023-10-08T12:32:37.9302881+02:00 [WARN] DANGER! cmd action is enabled.
2023-10-08T12:32:37.9320919+02:00 [INFO] config parsed
2023-10-08T12:32:37.9322038+02:00 [INFO] Asking Windows to improve timer precision
2023-10-08T12:32:37.9323704+02:00 [INFO] Asking Windows to increase process priority
2023-10-08T12:32:37.9325565+02:00 [INFO] Sleeping for 2s. Please release all keys and don't press additional ones.
2023-10-08T12:32:39.933412+02:00 [INFO] entering the processing loop
2023-10-08T12:32:39.9339522+02:00 [INFO] Init: catching only releases and sending immediately
2023-10-08T12:32:40.8084565+02:00 [INFO] Starting kanata proper
This is mostly the fault of some arcane Windows weirdness. Snipping the relevant logs:
2023-10-08T12:02:44.8037858+02:00 [DEBUG] (1) kanata::kanata::windows::llhook: event loop: KeyEvent { code: KEY_P, value: Press }
2023-10-08T12:02:44.8854079+02:00 [DEBUG] (2) kanata::kanata: process recv ev KeyEvent { code: KEY_P, value: Release }
2023-10-08T12:02:44.8856957+02:00 [DEBUG] (2) kanata::kanata: key release Insert
2023-10-08T12:02:44.8860615+02:00 [DEBUG] (1) kanata::kanata::windows::llhook: event loop: KeyEvent { code: KEY_LEFTSHIFT, value: Release }
2023-10-08T12:02:44.8867148+02:00 [DEBUG] (2) kanata::kanata::windows: lsft-arrowkey workaround: releasing LShift at its typical coordinate
2023-10-08T12:02:44.8868529+02:00 [DEBUG] (2) kanata::kanata::windows: releasing LShift from pressed keys
2023-10-08T12:02:44.8870362+02:00 [DEBUG] (1) kanata::kanata::windows::llhook: event loop: KeyEvent { code: KEY_LEFTSHIFT, value: Press }
2023-10-08T12:02:44.887323+02:00 [DEBUG] (2) kanata::kanata: key release LShift
2023-10-08T12:02:44.8874741+02:00 [DEBUG] (2) kanata::kanata: process recv ev KeyEvent { code: KEY_LEFTSHIFT, value: Release }
2023-10-08T12:02:44.8888775+02:00 [DEBUG] (2) kanata::kanata: process recv ev KeyEvent { code: KEY_LEFTSHIFT, value: Press }
2023-10-08T12:02:44.8890157+02:00 [DEBUG] (2) kanata::kanata: key press LShift
The llhook: event loop logs show events that Kanata receives from Windows. key press and key release are events sent out to Windows. Can see that Kanata sends releases for insert and shift to Windows. There's also logs showing an attempted workaround for other arcane Windows shift weirdness: lsft+arrowkey workaround.
The problem at the end with the event loop logs is that Windows itself has sent a pair of release+press of Shift to Kanata, in that order. So Kanata itself thinks the key is staying pressed.
You could try figuring out some workaround with release-key or something like that.
Might be worth mentioning that interception has fewer weird Windows issues but has its own different issues.
yeah I considered using interception but that issue mentioned sounds very inconvenient...
how would you try to hack this with release-key, something like invoking this alias on Space-p?
j_paste (multi (release-key lsft) S-ins)
not working at all, now the paste action (shift-insert) is not even done...
thanks for the help!
I see the same issue although I notice that it only happens when the num lock is on
The same is happening to me I change the layout holding pressed alt and then I use shift + ctrl + number in order to move apps between desktops in glazewm In my case it seemingly unstucks if I hold pressed the key mapped as shift
Does using the winiov2 variant help?
Does using the winiov2 variant help?
I didn't know about that, I installed it with scoop so I didn't read the release notes. It seems to be working with that version thanks.