-
Notifications
You must be signed in to change notification settings - Fork 231
Description
Requirements
- I've searched platform-specific issues, issues and discussions to see if this has been reported before.
- My issue does not involve multiple simultaneous key presses, OR it does but I've confirmed it is not key rollover or ghosting.
Describe the bug
Describe the bug
deflocalkeys-winiov2 defined keycodes (Y=220, B=219, A=192,S=221) conflict/duplicate in defsrc, preventing correct transparent (_) output. Want to avoid JIS keyboard keycode duplication while maintaining distinct physical key behavior.
Relevant kanata config
(defcfg
process-unmapped-keys no
)
(deflocalkeys-winiov2
;; JIS keyboard keycord
;; https://www.toptal.com/developers/keycode
Y 220 ;;JIS \(|)
B 219 ;;JIS [({)
A 192 ;;JIS @(`)
S 221 ;;JIS ](})
)
(defsrc
Y
B
A
S
)
(deflayer base
_ ;;KEY_BACKSLASH (220)
_ ;;KEY_RIGHTBRACE (221)
_ ;;KEY_LEFTBRACE (219)
_ ;;KEY_BACKSLASH (220)
;; JIS zenkaku/hankaku →KEY_GRAVE (192)
)
To Reproduce
kanata_windows_tty_winIOv2_x64.exe -c config.kbd --debug
pressing Y/B/A/S keys
Y: Expected 220 → Actual KEY_BACKSLASH (220)
B: Expected 219 → Actual KEY_RIGHTBRACE (221)
A: Expected 192 → Actual KEY_LEFTBRACE (219)
S: Expected 221 → Actual KEY_BACKSLASH (220) DUPLICATE
zenkaku/hankaku: → KEY_GRAVE (192) UNMAPPED
Expected behavior
I want the transparent (_) layer to output exactly the keycodes specified in deflocalkeys-winiov2 (Y=220, B=219, A=192,S=221) without any modification, matching the Windows native behavior for these JIS keyboard positions.
Or I want to avoid duplicate keycodes.
Kanata version
kanata v1.10.0
Debug logs
14:03:07.2407 [INFO] kanata v1.10.0 starting
14:03:07.2412 [INFO] using LLHOOK+SendInput for keyboard IO
14:03:07.2429 [DEBUG] (1) kanata_parser::cfg: custom mapping: Y 220
14:03:07.2447 [DEBUG] (1) kanata_parser::cfg: custom mapping: B 219
14:03:07.2449 [DEBUG] (1) kanata_parser::cfg: custom mapping: A 192
14:03:07.2450 [DEBUG] (1) kanata_parser::cfg: custom mapping: S 221
14:03:07.2452 [INFO] process unmapped keys: false
14:03:07.2454 [DEBUG] (1) kanata_parser::cfg::alloc: freeing allocations of length 0
14:03:07.2455 [DEBUG] (1) kanata_parser::cfg::alloc: sref type: kanata_keyberon::action::Action<', &&[&kanata_parser::custom_action::CustomAction]>, ptr:0x19e022ea7b0 sz:16
14:03:07.2457 [DEBUG] (1) kanata_parser::cfg::alloc: sref type: kanata_keyberon::action::Action<', &&[&kanata_parser::custom_action::CustomAction]>, ptr:0x19e022ea850 sz:16
14:03:07.2458 [DEBUG] (1) kanata_parser::cfg::alloc: sref type: kanata_keyberon::action::Action<', &&[&kanata_parser::custom_action::CustomAction]>, ptr:0x19e022eaa70 sz:16
14:03:07.2460 [DEBUG] (1) kanata_parser::cfg::alloc: sref type: kanata_keyberon::action::Action<', &&[&kanata_parser::custom_action::CustomAction]>, ptr:0x19e022eaad0 sz:16
14:03:07.2461 [DEBUG] (1) kanata_parser::cfg::alloc: bref_slice type: [[kanata_keyberon::action::Action<', &&[&kanata_parser::custom_action::CustomAction]>; 767]; 2], ptr:0x19e022fa650 sz:24544
14:03:07.2463 [DEBUG] (1) kanata_parser::cfg::alloc: sref type: [kanata_keyberon::action::Action<', &&[&kanata_parser::custom_action::CustomAction]>; 767], ptr:0x19e02300640 sz:12272
14:03:07.2464 [INFO] config file is valid
14:03:07.2466 [INFO] Asking Windows to improve timer precision
14:03:07.2467 [INFO] Asking Windows to increase process priority
14:03:07.2470 [DEBUG] (1) kanata_state_machine::kanata::output_logic::zippychord: zchd reset state
14:03:07.2471 [DEBUG] (1) kanata_state_machine::kanata::output_logic::zippychord: zchd soft reset state
14:03:07.2472 [DEBUG] (1) kanata_state_machine::kanata::output_logic::zippychord: zchd clear historical data
14:03:07.2473 [INFO] Sleeping for 2s. Please release all keys and don't press additional ones. Run kanata with --help to see how understand more and how to disable this sleep.
14:03:09.2480 [INFO] entering the processing loop
14:03:09.2490 [INFO] No mouse inputs were in defsrc on startup. Not activating mouse hook.
14:03:09.2518 [INFO] Init: catching only releases and sending immediately
14:03:10.0748 [INFO] Starting kanata proper
14:03:10.0757 [INFO] You may forcefully exit kanata by pressing lctl+spc+esc at any time. These keys refer to defsrc input, meaning BEFORE kanata remaps keys.
14:03:29.3682 [DEBUG] (1) kanata_state_machine::kanata::windows::llhook: event loop: KeyEvent { code: KEY_BACKSLASH (220), value: Press }
14:03:29.3706 [DEBUG] (2) kanata_state_machine::kanata: process recv ev KeyEvent { code: KEY_BACKSLASH (220), value: Press }
14:03:29.3715 [DEBUG] (2) kanata_state_machine::kanata: key press Bslash
14:03:29.4473 [DEBUG] (1) kanata_state_machine::kanata::windows::llhook: event loop: KeyEvent { code: KEY_BACKSLASH (220), value: Release }
14:03:29.4485 [DEBUG] (2) kanata_state_machine::kanata: process recv ev KeyEvent { code: KEY_BACKSLASH (220), value: Release }
14:03:29.4509 [DEBUG] (2) kanata_state_machine::kanata: key release Bslash
14:03:30.3755 [DEBUG] (1) kanata_state_machine::kanata::windows::llhook: event loop: KeyEvent { code: KEY_RIGHTBRACE (221), value: Press }
14:03:30.3762 [DEBUG] (2) kanata_state_machine::kanata: process recv ev KeyEvent { code: KEY_RIGHTBRACE (221), value: Press }
14:03:30.3768 [DEBUG] (2) kanata_state_machine::kanata: key press RBracket
14:03:30.4491 [DEBUG] (1) kanata_state_machine::kanata::windows::llhook: event loop: KeyEvent { code: KEY_RIGHTBRACE (221), value: Release }
14:03:30.4516 [DEBUG] (2) kanata_state_machine::kanata: process recv ev KeyEvent { code: KEY_RIGHTBRACE (221), value: Release }
14:03:30.4537 [DEBUG] (2) kanata_state_machine::kanata: key release RBracket
14:03:30.9526 [DEBUG] (1) kanata_state_machine::kanata::windows::llhook: event loop: KeyEvent { code: KEY_LEFTBRACE (219), value: Press }
14:03:30.9558 [DEBUG] (2) kanata_state_machine::kanata: process recv ev KeyEvent { code: KEY_LEFTBRACE (219), value: Press }
14:03:30.9581 [DEBUG] (2) kanata_state_machine::kanata: key press LBracket
14:03:31.0312 [DEBUG] (1) kanata_state_machine::kanata::windows::llhook: event loop: KeyEvent { code: KEY_LEFTBRACE (219), value: Release }
14:03:31.0319 [DEBUG] (2) kanata_state_machine::kanata: process recv ev KeyEvent { code: KEY_LEFTBRACE (219), value: Release }
14:03:31.0329 [DEBUG] (2) kanata_state_machine::kanata: key release LBracket
14:03:32.6472 [DEBUG] (1) kanata_state_machine::kanata::windows::llhook: event loop: KeyEvent { code: KEY_BACKSLASH (220), value: Press }
14:03:32.6481 [DEBUG] (2) kanata_state_machine::kanata: process recv ev KeyEvent { code: KEY_BACKSLASH (220), value: Press }
14:03:32.6509 [DEBUG] (2) kanata_state_machine::kanata: key press Bslash
14:03:32.7193 [DEBUG] (1) kanata_state_machine::kanata::windows::llhook: event loop: KeyEvent { code: KEY_BACKSLASH (220), value: Release }
14:03:32.7213 [DEBUG] (2) kanata_state_machine::kanata: process recv ev KeyEvent { code: KEY_BACKSLASH (220), value: Release }
14:03:32.7217 [DEBUG] (2) kanata_state_machine::kanata: key release Bslash
14:03:39.5273 [DEBUG] (1) kanata_state_machine::kanata::windows::llhook: event loop: KeyEvent { code: KEY_GRAVE (192), value: Release }
14:03:39.5279 [DEBUG] (1) kanata_state_machine::kanata::windows::llhook: event loop: KeyEvent { code: KEY_GRAVE (192), value: Press }
14:03:39.5293 [DEBUG] (2) kanata_state_machine::kanata: process recv ev KeyEvent { code: KEY_GRAVE (192), value: Release }
14:03:39.5296 [DEBUG] (2) kanata_state_machine::kanata: process recv ev KeyEvent { code: KEY_GRAVE (192), value: Press }
14:03:39.5298 [DEBUG] (2) kanata_state_machine::kanata: key press Grave
14:03:39.5300 [DEBUG] (1) kanata_state_machine::kanata::windows::llhook: event loop: KeyEvent { code: KEY_GRAVE (192), value: Release }
14:03:39.5313 [DEBUG] (2) kanata_state_machine::kanata: process recv ev KeyEvent { code: KEY_GRAVE (192), value: Release }
14:03:39.5315 [DEBUG] (2) kanata_state_machine::kanata: key release Grave
Operating system and I/O mechanism
Windows 11 Japanese environment, winiov2 backend, JIS keyboard layout
Additional context
No response