Comments (7)
A PR is already open for this 🙂
from kanata.
Can add the logs from running with --debug while reproducing the issue?
Knowing the implementation of release-key, my first guess would be an OS issue, but not a guarantee.
from kanata.
Sure, and what I did: held a
and ;
tapped 3x h
(for jumping three words to the left) and 3x l
(for jumping three
words to the right). What is interesting, sometimes it only works with the first held of a
and ;
and then never again.
08:24:00.7422 [DEBUG] (1) kanata_state_machine::kanata::windows::llhook: event loop: KeyEvent { code: KEY_A, value: Press }
08:24:00.7439 [DEBUG] (2) kanata_state_machine::kanata: process recv ev KeyEvent { code: KEY_A, value: Press }
08:24:00.9673 [DEBUG] (2) kanata_state_machine::kanata: key press LCtrl
08:24:01.3216 [DEBUG] (1) kanata_state_machine::kanata::windows::llhook: event loop: KeyEvent { code: KEY_SEMICOLON, value: Press }
08:24:01.3226 [DEBUG] (2) kanata_state_machine::kanata: process recv ev KeyEvent { code: KEY_SEMICOLON, value: Press }
08:24:01.5460 [DEBUG] (2) kanata_state_machine::kanata: key press RCtrl
08:24:01.9708 [DEBUG] (1) kanata_state_machine::kanata::windows::llhook: event loop: KeyEvent { code: KEY_SEMICOLON, value: Press }
08:24:01.9728 [DEBUG] (2) kanata_state_machine::kanata: process recv ev KeyEvent { code: KEY_SEMICOLON, value: Repeat }
08:24:01.9735 [DEBUG] (2) kanata_state_machine::kanata::key_repeat: key outs for active layer-while-held: [KEY_LEFTSHIFT, KEY_SEMICOLON];
08:24:01.9741 [DEBUG] (2) kanata_state_machine::kanata::key_repeat: key outs for active layer-while-held: [KEY_BACKSPACE, KEY_RIGHTCTRL, KEY_LEFTSHIFT, KEY_SEMICOLON];
08:24:01.9748 [DEBUG] (2) kanata_state_machine::kanata::key_repeat: repeat RCtrl
08:24:01.9793 [DEBUG] (1) kanata_state_machine::kanata::windows::llhook: event loop: KeyEvent { code: KEY_H, value: Press }
08:24:01.9801 [DEBUG] (2) kanata_state_machine::kanata: process recv ev KeyEvent { code: KEY_H, value: Press }
08:24:02.0410 [DEBUG] (2) kanata_state_machine::kanata: key release RCtrl
08:24:02.0422 [DEBUG] (2) kanata_state_machine::kanata: key press Left
08:24:02.1334 [DEBUG] (1) kanata_state_machine::kanata::windows::llhook: event loop: KeyEvent { code: KEY_H, value: Release }
08:24:02.1350 [DEBUG] (2) kanata_state_machine::kanata: process recv ev KeyEvent { code: KEY_H, value: Release }
08:24:02.1355 [DEBUG] (2) kanata_state_machine::kanata: key release Left
08:24:02.4340 [DEBUG] (1) kanata_state_machine::kanata::windows::llhook: event loop: KeyEvent { code: KEY_H, value: Press }
08:24:02.4349 [DEBUG] (2) kanata_state_machine::kanata: process recv ev KeyEvent { code: KEY_H, value: Press }
08:24:02.4965 [DEBUG] (2) kanata_state_machine::kanata: key press Left
08:24:02.5495 [DEBUG] (1) kanata_state_machine::kanata::windows::llhook: event loop: KeyEvent { code: KEY_H, value: Release }
08:24:02.5503 [DEBUG] (2) kanata_state_machine::kanata: process recv ev KeyEvent { code: KEY_H, value: Release }
08:24:02.5507 [DEBUG] (2) kanata_state_machine::kanata: key release Left
08:24:02.8322 [DEBUG] (1) kanata_state_machine::kanata::windows::llhook: event loop: KeyEvent { code: KEY_H, value: Press }
08:24:02.8342 [DEBUG] (2) kanata_state_machine::kanata: process recv ev KeyEvent { code: KEY_H, value: Press }
08:24:02.8952 [DEBUG] (2) kanata_state_machine::kanata: key press Left
08:24:02.9678 [DEBUG] (1) kanata_state_machine::kanata::windows::llhook: event loop: KeyEvent { code: KEY_H, value: Release }
08:24:02.9695 [DEBUG] (2) kanata_state_machine::kanata: process recv ev KeyEvent { code: KEY_H, value: Release }
08:24:02.9699 [DEBUG] (2) kanata_state_machine::kanata: key release Left
08:24:03.4541 [DEBUG] (1) kanata_state_machine::kanata::windows::llhook: event loop: KeyEvent { code: KEY_L, value: Press }
08:24:03.4552 [DEBUG] (2) kanata_state_machine::kanata: process recv ev KeyEvent { code: KEY_L, value: Press }
08:24:03.5168 [DEBUG] (2) kanata_state_machine::kanata: key press Right
08:24:03.5928 [DEBUG] (1) kanata_state_machine::kanata::windows::llhook: event loop: KeyEvent { code: KEY_L, value: Release }
08:24:03.5940 [DEBUG] (2) kanata_state_machine::kanata: process recv ev KeyEvent { code: KEY_L, value: Release }
08:24:03.5944 [DEBUG] (2) kanata_state_machine::kanata: key release Right
08:24:03.8146 [DEBUG] (1) kanata_state_machine::kanata::windows::llhook: event loop: KeyEvent { code: KEY_L, value: Press }
08:24:03.8162 [DEBUG] (2) kanata_state_machine::kanata: process recv ev KeyEvent { code: KEY_L, value: Press }
08:24:03.8772 [DEBUG] (2) kanata_state_machine::kanata: key press Right
08:24:03.9001 [DEBUG] (1) kanata_state_machine::kanata::windows::llhook: event loop: KeyEvent { code: KEY_L, value: Release }
08:24:03.9009 [DEBUG] (2) kanata_state_machine::kanata: process recv ev KeyEvent { code: KEY_L, value: Release }
08:24:03.9012 [DEBUG] (2) kanata_state_machine::kanata: key release Right
08:24:04.1497 [DEBUG] (1) kanata_state_machine::kanata::windows::llhook: event loop: KeyEvent { code: KEY_L, value: Press }
08:24:04.1517 [DEBUG] (2) kanata_state_machine::kanata: process recv ev KeyEvent { code: KEY_L, value: Press }
08:24:04.2123 [DEBUG] (2) kanata_state_machine::kanata: key press Right
08:24:04.2586 [DEBUG] (1) kanata_state_machine::kanata::windows::llhook: event loop: KeyEvent { code: KEY_L, value: Release }
08:24:04.2600 [DEBUG] (2) kanata_state_machine::kanata: process recv ev KeyEvent { code: KEY_L, value: Release }
08:24:04.2605 [DEBUG] (2) kanata_state_machine::kanata: key release Right
08:24:04.3852 [DEBUG] (1) kanata_state_machine::kanata::windows::llhook: event loop: KeyEvent { code: KEY_SEMICOLON, value: Release }
08:24:04.3867 [DEBUG] (2) kanata_state_machine::kanata: process recv ev KeyEvent { code: KEY_SEMICOLON, value: Release }
08:24:04.4417 [DEBUG] (1) kanata_state_machine::kanata::windows::llhook: event loop: KeyEvent { code: KEY_A, value: Release }
08:24:04.4432 [DEBUG] (2) kanata_state_machine::kanata: process recv ev KeyEvent { code: KEY_A, value: Release }
08:24:04.4437 [DEBUG] (2) kanata_state_machine::kanata: key release LCtrl
from kanata.
My guess was correct; you should use either the winiov2 or the send scancodes variant.
Or if compiling from source, use --features win_sendinput_send_scancodes
or win_sendinput_send_scancodes,win_llhook_read_scancodes
.
from kanata.
Closing since SendInput vkey output has known issues+workarounds. But happy to reopen if I'm mistaken about the problem and solution.
from kanata.
Recompiled just with the first flag, --features win_sendinput_send_scancodes
, and it works like a charm, thanks! 😊
from kanata.
Stupid question but what about making this feature flag the default or is it too experimental?
from kanata.
Related Issues (20)
- Feature request: modular per-platform config.adoc HOT 9
- Feature request: togglable `caps-word` HOT 2
- Bug: In WSL space is inserted after shift or control when running kanata in host HOT 1
- Bug: windows iconbar icon isn't removed when app is killed HOT 1
- Bug: Dead keys cause keyboard modifier state to get corrupt - witnessed on colemak HOT 7
- Feature request: support platform-specific IPC which has greater convenience than TCP
- Feature request: Auto Mouse Keys layer HOT 2
- Feature request: support BSD HOT 5
- Unable to send key input due to key having not been physically released yet. HOT 3
- Bug: Release 1.6.1 macos_x86_64 executable isn't what it says. HOT 6
- Feature request: Show keystroke or can let other app know the real key is stroked. HOT 2
- Feature request: Can we have a more flexible unmod? HOT 1
- See if windows shift workaround can be compiled out for winiov2 HOT 1
- Bug: kanata does not work properly with listary HOT 3
- Feature request: Compile-time conditional mappings HOT 1
- chordsv2 activation does not trigger early interruption of `tap-hold-press|release` HOT 9
- make macro-release-cancel also cancel virtual keys HOT 1
- Bug: switch's layer logic not recognized HOT 2
- Feature request: remove dependency on AutohotKey for EnableUIAccess
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from kanata.