Kanata does not detect keyboard
Author: bowlofneighsCreated Nov 23, 2025Updated Aug 29, 2026
Labelsbugquestionlinux
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
When launching Kanata, it does not detect my keyboard
14:48:23.8430 [INFO] kanata v1.10.0 starting
14:48:23.8431 [INFO] process unmapped keys: true
14:48:23.8432 [INFO] NOTE: kanata was compiled to never allow cmd
14:48:23.8433 [INFO] config file is valid
14:48:23.8436 [INFO] Created device "/dev/input/event19"
14:48:23.8437 [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:48:25.8438 [INFO] entering the processing loop
14:48:25.8439 [INFO] entering the event loop
14:48:25.8439 [INFO] looking for devices in /dev/input
14:48:25.8439 [INFO] Init: catching only releases and sending immediately
14:48:26.0453 [ERROR] failed to open keyboard device(s): No keyboard devices were found. Try:
1. Run 'kanata --list' to see available devices
2. Check permissions: sudo usermod -a -G input $USER
3. Log out and back in for group changes to take effect
4. Ensure devices are connected and working
Press enter to exit
14:48:26.3732 [INFO] Starting kanata proper
14:48:26.3732 [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:48:26.3732 [ERROR] channel disconnected
`
this happens on Omarchy 3.1.7 with a Razer Cynosa V2
also `lctl+spc+esc` does not kill Kanata
### Relevant kanata config
```text
(defcfg
process-unmapped-keys yes
)
(defsrc
d s a f j k l ;
)
(defvar
tap-time 200
hold-time 200
)
(defalias
d-mod (tap-hold $tap-time $hold-time d lsft ) ;;tap timeout, hold timeout, tap action, hold action
s-mod (tap-hold $tap-time $hold-time s lctl )
a-mod (tap-hold $tap-time $hold-time a lalt )
f-mod (tap-hold $tap-time $hold-time f lmet )
j-mod (tap-hold $tap-time $hold-time j lmet )
k-mod (tap-hold $tap-time $hold-time k rsft ) ;;tap timeout, hold timeout, tap action, hold action
l-mod (tap-hold $tap-time $hold-time l lctl ) ;;tap timeout, hold timeout, tap action, hold action
;-mod (tap-hold $tap-time $hold-time ; ralt ) ;;tap timeout, hold timeout, tap action, hold action
)
(deflayer base
@d-mod @s-mod @a-mod @f-mod @j-mod @k-mod @l-mod @;-mod
)To Reproduce
Run kanata on Omarchy Linux 3.1.7 with a Razer Cynosa V2
Expected behavior
I expect kanata to run and detect my keyboard, then stop when I press lctrl + space + esc.
Kanata version
kanata 1.1.0
Debug logs
14:55:51.5136 [INFO] kanata v1.10.0 starting
14:55:51.5138 [INFO] process unmapped keys: true
14:55:51.5138 [INFO] NOTE: kanata was compiled to never allow cmd
14:55:51.5138 [DEBUG] (1) kanata_parser::cfg::alloc: freeing allocations of length 0
14:55:51.5138 [DEBUG] (1) kanata_parser::cfg::alloc: sref type: kanata_keyberon::action::Action<'_, &&[&kanata_parser::custom_action::CustomAction]>, ptr:0x556342da84d0 sz:16
14:55:51.5139 [DEBUG] (1) kanata_parser::cfg::alloc: sref type: kanata_keyberon::action::Action<'_, &&[&kanata_parser::custom_action::CustomAction]>, ptr:0x556342da2190 sz:16
14:55:51.5139 [DEBUG] (1) kanata_parser::cfg::alloc: sref type: kanata_keyberon::action::HoldTapAction<'_, &&[&kanata_parser::custom_action::CustomAction]>, ptr:0x556342da9480 sz:80
14:55:51.5139 [DEBUG] (1) kanata_parser::cfg::alloc: sref type: kanata_keyberon::action::Action<'_, &&[&kanata_parser::custom_action::CustomAction]>, ptr:0x556342da84f0 sz:16
14:55:51.5139 [DEBUG] (1) kanata_parser::cfg::alloc: sref type: kanata_keyberon::action::Action<'_, &&[&kanata_parser::custom_action::CustomAction]>, ptr:0x556342da8470 sz:16
14:55:51.5139 [DEBUG] (1) kanata_parser::cfg::alloc: sref type: kanata_keyberon::action::Action<'_, &&[&kanata_parser::custom_action::CustomAction]>, ptr:0x556342da86b0 sz:16
14:55:51.5139 [DEBUG] (1) kanata_parser::cfg::alloc: sref type: kanata_keyberon::action::HoldTapAction<'_, &&[&kanata_parser::custom_action::CustomAction]>, ptr:0x556342da9630 sz:80
14:55:51.5139 [DEBUG] (1) kanata_parser::cfg::alloc: sref type: kanata_keyberon::action::Action<'_, &&[&kanata_parser::custom_action::CustomAction]>, ptr:0x556342d9f370 sz:16
14:55:51.5139 [DEBUG] (1) kanata_parser::cfg::alloc: sref type: kanata_keyberon::action::Action<'_, &&[&kanata_parser::custom_action::CustomAction]>, ptr:0x556342da9610 sz:16
14:55:51.5139 [DEBUG] (1) kanata_parser::cfg::alloc: sref type: kanata_keyberon::action::Action<'_, &&[&kanata_parser::custom_action::CustomAction]>, ptr:0x556342da9690 sz:16
14:55:51.5139 [DEBUG] (1) kanata_parser::cfg::alloc: sref type: kanata_keyberon::action::HoldTapAction<'_, &&[&kanata_parser::custom_action::CustomAction]>, ptr:0x556342da9820 sz:80
14:55:51.5139 [DEBUG] (1) kanata_parser::cfg::alloc: sref type: kanata_keyberon::action::Action<'_, &&[&kanata_parser::custom_action::CustomAction]>, ptr:0x556342da8690 sz:16
14:55:51.5139 [DEBUG] (1) kanata_parser::cfg::alloc: sref type: kanata_keyberon::action::Action<'_, &&[&kanata_parser::custom_action::CustomAction]>, ptr:0x556342da9800 sz:16
14:55:51.5139 [DEBUG] (1) kanata_parser::cfg::alloc: sref type: kanata_keyberon::action::Action<'_, &&[&kanata_parser::custom_action::CustomAction]>, ptr:0x556342da9880 sz:16
14:55:51.5139 [DEBUG] (1) kanata_parser::cfg::alloc: sref type: kanata_keyberon::action::HoldTapAction<'_, &&[&kanata_parser::custom_action::CustomAction]>, ptr:0x556342daa180 sz:80
14:55:51.5139 [DEBUG] (1) kanata_parser::cfg::alloc: sref type: kanata_keyberon::action::Action<'_, &&[&kanata_parser::custom_action::CustomAction]>, ptr:0x556342da96d0 sz:16
14:55:51.5139 [DEBUG] (1) kanata_parser::cfg::alloc: sref type: kanata_keyberon::action::Action<'_, &&[&kanata_parser::custom_action::CustomAction]>, ptr:0x556342da95c0 sz:16
14:55:51.5139 [DEBUG] (1) kanata_parser::cfg::alloc: sref type: kanata_keyberon::action::Action<'_, &&[&kanata_parser::custom_action::CustomAction]>, ptr:0x556342daa1e0 sz:16
14:55:51.5139 [DEBUG] (1) kanata_parser::cfg::alloc: sref type: kanata_keyberon::action::HoldTapAction<'_, &&[&kanata_parser::custom_action::CustomAction]>, ptr:0x556342da9710 sz:80
14:55:51.5139 [DEBUG] (1) kanata_parser::cfg::alloc: sref type: kanata_keyberon::action::Action<'_, &&[&kanata_parser::custom_action::CustomAction]>, ptr:0x556342da95a0 sz:16
14:55:51.5139 [DEBUG] (1) kanata_parser::cfg::alloc: sref type: kanata_keyberon::action::Action<'_, &&[&kanata_parser::custom_action::CustomAction]>, ptr:0x556342da96f0 sz:16
14:55:51.5139 [DEBUG] (1) kanata_parser::cfg::alloc: sref type: kanata_keyberon::action::Action<'_, &&[&kanata_parser::custom_action::CustomAction]>, ptr:0x556342da9770 sz:16
14:55:51.5139 [DEBUG] (1) kanata_parser::cfg::alloc: sref type: kanata_keyberon::action::HoldTapAction<'_, &&[&kanata_parser::custom_action::CustomAction]>, ptr:0x556342daa450 sz:80
14:55:51.5139 [DEBUG] (1) kanata_parser::cfg::alloc: sref type: kanata_keyberon::action::Action<'_, &&[&kanata_parser::custom_action::CustomAction]>, ptr:0x556342daa220 sz:16
14:55:51.5139 [DEBUG] (1) kanata_parser::cfg::alloc: sref type: kanata_keyberon::action::Action<'_, &&[&kanata_parser::custom_action::CustomAction]>, ptr:0x556342daa4b0 sz:16
14:55:51.5139 [DEBUG] (1) kanata_parser::cfg::alloc: sref type: kanata_keyberon::action::Action<'_, &&[&kanata_parser::custom_action::CustomAction]>, ptr:0x556342daa4d0 sz:16
14:55:51.5139 [DEBUG] (1) kanata_parser::cfg::alloc: sref type: kanata_keyberon::action::HoldTapAction<'_, &&[&kanata_parser::custom_action::CustomAction]>, ptr:0x556342daa550 sz:80
14:55:51.5139 [DEBUG] (1) kanata_parser::cfg::alloc: sref type: kanata_keyberon::action::Action<'_, &&[&kanata_parser::custom_action::CustomAction]>, ptr:0x556342da97b0 sz:16
14:55:51.5139 [DEBUG] (1) kanata_parser::cfg::alloc: sref type: kanata_keyberon::action::Action<'_, &&[&kanata_parser::custom_action::CustomAction]>, ptr:0x556342daa530 sz:16
14:55:51.5140 [DEBUG] (1) kanata_parser::cfg::alloc: sref type: kanata_keyberon::action::Action<'_, &&[&kanata_parser::custom_action::CustomAction]>, ptr:0x556342daa5b0 sz:16
14:55:51.5140 [DEBUG] (1) kanata_parser::cfg::alloc: sref type: kanata_keyberon::action::HoldTapAction<'_, &&[&kanata_parser::custom_action::CustomAction]>, ptr:0x556342daa630 sz:80
14:55:51.5140 [DEBUG] (1) kanata_parser::cfg::alloc: sref type: kanata_keyberon::action::Action<'_, &&[&kanata_parser::custom_action::CustomAction]>, ptr:0x556342daa510 sz:16
14:55:51.5140 [DEBUG] (1) kanata_parser::cfg::alloc: bref_slice type: [[kanata_keyberon::action::Action<'_, &&[&kanata_parser::custom_action::CustomAction]>; 767]; 2], ptr:0x556342daa7c0 sz:24544
14:55:51.5140 [DEBUG] (1) kanata_parser::cfg::alloc: sref type: [kanata_keyberon::action::Action<'_, &&[&kanata_parser::custom_action::CustomAction]>; 767], ptr:0x556342db0bc0 sz:12272
14:55:51.5140 [INFO] config file is valid
14:55:51.5144 [INFO] Created device "/dev/input/event19"
14:55:51.5144 [DEBUG] (1) kanata_state_machine::kanata::output_logic::zippychord: zchd reset state
14:55:51.5144 [DEBUG] (1) kanata_state_machine::kanata::output_logic::zippychord: zchd soft reset state
14:55:51.5144 [DEBUG] (1) kanata_state_machine::kanata::output_logic::zippychord: zchd clear historical data
14:55:51.5144 [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:55:53.5146 [INFO] entering the processing loop
14:55:53.5147 [INFO] entering the event loop
14:55:53.5147 [INFO] looking for devices in /dev/input
14:55:53.5148 [INFO] Init: catching only releases and sending immediately
14:55:53.5183 [DEBUG] (1) kanata_state_machine::oskbd::linux: Use for input autodetect: false. Non-input device: HDA Intel PCH Front Headphone
14:55:53.5353 [DEBUG] (1) kanata_state_machine::oskbd::linux: Use for input autodetect: false. Non-input device: HDA Intel PCH Line Out
14:55:53.5553 [DEBUG] (1) kanata_state_machine::oskbd::linux: Use for input autodetect: false. Non-input device: HDA Intel PCH Line
14:55:53.5873 [DEBUG] (1) kanata_state_machine::oskbd::linux: Use for input autodetect: false. Non-input device: HDA Intel PCH Front Mic
14:55:53.6093 [DEBUG] (1) kanata_state_machine::oskbd::linux: Use for input autodetect: false. Non-input device: HDA Intel PCH Rear Mic
14:55:53.6423 [DEBUG] (1) kanata_state_machine::oskbd::linux: Use for input autodetect: false. Non-input device: HDA ATI HDMI HDMI/DP,pcm=9
14:55:53.6583 [DEBUG] (1) kanata_state_machine::oskbd::linux: Use for input autodetect: false. Non-input device: HDA ATI HDMI HDMI/DP,pcm=8
14:55:53.6773 [DEBUG] (1) kanata_state_machine::oskbd::linux: Use for input autodetect: false. Non-input device: HDA ATI HDMI HDMI/DP,pcm=7
14:55:53.7043 [DEBUG] (1) kanata_state_machine::oskbd::linux: Use for input autodetect: false. Non-input device: HDA ATI HDMI HDMI/DP,pcm=3
14:55:53.7393 [DEBUG] (1) kanata_state_machine::oskbd::linux: Use for input autodetect: false. Non-input device: PC Speaker
14:55:53.8103 [DEBUG] (1) kanata_state_machine::oskbd::linux: Use for input autodetect: false. Non-input device: Logitech Extreme 3D pro
14:55:53.8303 [DEBUG] (1) kanata_state_machine::oskbd::linux: Use for input autodetect: false. detect type KeyboardMice; device type Mouse, device name: HID 04b3:310b
14:55:53.8353 [DEBUG] (1) kanata_state_machine::oskbd::linux: Use for input autodetect: false. Non-input device: Power Button
14:55:53.8443 [DEBUG] (1) kanata_state_machine::oskbd::linux: Use for input autodetect: false. Non-input device: Power Button
14:55:53.8603 [DEBUG] (1) kanata_state_machine::oskbd::linux: Use for input autodetect: false. Non-input device: Sleep Button
14:55:53.8723 [ERROR] failed to open keyboard device(s): No keyboard devices were found. Try:
1. Run 'kanata --list' to see available devices
2. Check permissions: sudo usermod -a -G input $USER
3. Log out and back in for group changes to take effect
4. Ensure devices are connected and working
Press enter to exit
14:55:54.0445 [INFO] Starting kanata proper
14:55:54.0446 [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:55:54.0446 [ERROR] channel disconnected
14:55:54.1004 [DEBUG] (3) kanata_parser::cfg::alloc: freeing allocations of length 34
14:55:54.1004 [DEBUG] (3) kanata_parser::cfg::alloc: freeing ptr 0x556342db0bc0 len12272
14:55:54.1004 [DEBUG] (3) kanata_parser::cfg::alloc: freeing ptr 0x556342daa7c0 len24544
14:55:54.1004 [DEBUG] (3) kanata_parser::cfg::alloc: freeing ptr 0x556342daa510 len16
14:55:54.1004 [DEBUG] (3) kanata_parser::cfg::alloc: freeing ptr 0x556342daa630 len80
14:55:54.1004 [DEBUG] (3) kanata_parser::cfg::alloc: freeing ptr 0x556342daa5b0 len16
14:55:54.1004 [DEBUG] (3) kanata_parser::cfg::alloc: freeing ptr 0x556342daa530 len16
14:55:54.1004 [DEBUG] (3) kanata_parser::cfg::alloc: freeing ptr 0x556342da97b0 len16
14:55:54.1004 [DEBUG] (3) kanata_parser::cfg::alloc: freeing ptr 0x556342daa550 len80
14:55:54.1004 [DEBUG] (3) kanata_parser::cfg::alloc: freeing ptr 0x556342daa4d0 len16
14:55:54.1004 [DEBUG] (3) kanata_parser::cfg::alloc: freeing ptr 0x556342daa4b0 len16
14:55:54.1004 [DEBUG] (3) kanata_parser::cfg::alloc: freeing ptr 0x556342daa220 len16
14:55:54.1004 [DEBUG] (3) kanata_parser::cfg::alloc: freeing ptr 0x556342daa450 len80
14:55:54.1004 [DEBUG] (3) kanata_parser::cfg::alloc: freeing ptr 0x556342da9770 len16
14:55:54.1004 [DEBUG] (3) kanata_parser::cfg::alloc: freeing ptr 0x556342da96f0 len16
14:55:54.1004 [DEBUG] (3) kanata_parser::cfg::alloc: freeing ptr 0x556342da95a0 len16
14:55:54.1004 [DEBUG] (3) kanata_parser::cfg::alloc: freeing ptr 0x556342da9710 len80
14:55:54.1004 [DEBUG] (3) kanata_parser::cfg::alloc: freeing ptr 0x556342daa1e0 len16
14:55:54.1004 [DEBUG] (3) kanata_parser::cfg::alloc: freeing ptr 0x556342da95c0 len16
14:55:54.1004 [DEBUG] (3) kanata_parser::cfg::alloc: freeing ptr 0x556342da96d0 len16
14:55:54.1004 [DEBUG] (3) kanata_parser::cfg::alloc: freeing ptr 0x556342daa180 len80
14:55:54.1004 [DEBUG] (3) kanata_parser::cfg::alloc: freeing ptr 0x556342da9880 len16
14:55:54.1004 [DEBUG] (3) kanata_parser::cfg::alloc: freeing ptr 0x556342da9800 len16
14:55:54.1004 [DEBUG] (3) kanata_parser::cfg::alloc: freeing ptr 0x556342da8690 len16
14:55:54.1004 [DEBUG] (3) kanata_parser::cfg::alloc: freeing ptr 0x556342da9820 len80
14:55:54.1004 [DEBUG] (3) kanata_parser::cfg::alloc: freeing ptr 0x556342da9690 len16
14:55:54.1004 [DEBUG] (3) kanata_parser::cfg::alloc: freeing ptr 0x556342da9610 len16
14:55:54.1004 [DEBUG] (3) kanata_parser::cfg::alloc: freeing ptr 0x556342d9f370 len16
14:55:54.1004 [DEBUG] (3) kanata_parser::cfg::alloc: freeing ptr 0x556342da9630 len80
14:55:54.1004 [DEBUG] (3) kanata_parser::cfg::alloc: freeing ptr 0x556342da86b0 len16
14:55:54.1004 [DEBUG] (3) kanata_parser::cfg::alloc: freeing ptr 0x556342da8470 len16
14:55:54.1004 [DEBUG] (3) kanata_parser::cfg::alloc: freeing ptr 0x556342da84f0 len16
14:55:54.1004 [DEBUG] (3) kanata_parser::cfg::alloc: freeing ptr 0x556342da9480 len80
14:55:54.1004 [DEBUG] (3) kanata_parser::cfg::alloc: freeing ptr 0x556342da2190 len16
14:55:54.1004 [DEBUG] (3) kanata_parser::cfg::alloc: freeing ptr 0x556342da84d0 len16
`Operating system and I/O mechanism
Linux, USB
Additional context
No response
Source: jtroo/kanata