Solved Lemokey X1 keyboard is not recognized?

I just got myself a really nice Lemokey X1 QMK/VIA Wired Mechanical Keyboard. With brown switches only 18.94 € on Amazon: https://www.amazon.com/dp/B0CTJR6KJ8

The problem is that FreeBSD does not see the keypresses from this keyboard.

I have FreeBSD 14.3-RELEASE-p5 and sway v1.11_1. From dmesg:
Code:
ugen0.2: <Keychron Lemokey X1> at usbus0
ukbd0 on uhub0
ukbd0: <Keychron Lemokey X1, class 0/0, rev 2.00/1.02, addr 16> on usbus0
kbd2 at ukbd0
uhid0 on uhub0
uhid0: <Keychron Lemokey X1, class 0/0, rev 2.00/1.02, addr 16> on usbus0
ums1 on uhub0
ums1: <Keychron Lemokey X1, class 0/0, rev 2.00/1.02, addr 16> on usbus0
ums1: 8 buttons and [XYZT] coordinates ID=2
I have upgraded the firmware in keyboard from v1.01 to latest v1.02.

This keyboard works without problems in Windows and Linux.

I would appreciate any suggestions on how to get this keyboard to work in FreeBSD.
 
USB HID keyboard protocol is standardized, and ukbd(4) is attached. But it also attaches ums(4) (USB HID mouse), that's odd. Keyboard doesn't appear to have a touchpad, nipple/pointing stick, or some other "mouse" like control?
 
Code:
ums1: <Keychron Lemokey X1, class 0/0, rev 2.00/1.02, addr 16> on usbus0
ums1: 8 buttons and [XYZT] coordinates ID=2

Does this Keyboard have some kind of "mouse mode" where it will only move the cursor and emulate some buttons? This suspiciously looks like that...

It's also a bit odd that it doesn't attach to hkbd(4) as pretty much all keyboards do nowadays...
 
There is no physical "mouse" like control on the keyboard.

I'm not yet familiar with QMK, but perhaps it's possible to program the keyboard to emulate mouse events.


If it helps, Linux's dmesg is more verbose:
Code:
[   52.183952] usb 2-4: new full-speed USB device number 5 using xhci_hcd
[   52.309367] usb 2-4: New USB device found, idVendor=362d, idProduct=0210, bcdDevice= 1.02
[   52.309388] usb 2-4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[   52.309395] usb 2-4: Product: Lemokey X1
[   52.309400] usb 2-4: Manufacturer: Keychron
[   52.311984] input: Keychron Lemokey X1 as /devices/pci0000:00/0000:00:14.0/usb2/2-4/2-4:1.0/0003:362D:0210.0005/input/input31
[   52.379611] hid-generic 0003:362D:0210.0005: input,hidraw4: USB HID v1.11 Keyboard [Keychron Lemokey X1] on usb-0000:00:14.0-4/input0
[   52.381620] hid-generic 0003:362D:0210.0006: hiddev97,hidraw5: USB HID v1.11 Device [Keychron Lemokey X1] on usb-0000:00:14.0-4/input1
[   52.384473] input: Keychron Lemokey X1 Mouse as /devices/pci0000:00/0000:00:14.0/usb2/2-4/2-4:1.2/0003:362D:0210.0007/input/input32
[   52.384682] input: Keychron Lemokey X1 System Control as /devices/pci0000:00/0000:00:14.0/usb2/2-4/2-4:1.2/0003:362D:0210.0007/input/input33
[   52.436321] input: Keychron Lemokey X1 Consumer Control as /devices/pci0000:00/0000:00:14.0/usb2/2-4/2-4:1.2/0003:362D:0210.0007/input/input34
[   52.437269] input: Keychron Lemokey X1 Keyboard as /devices/pci0000:00/0000:00:14.0/usb2/2-4/2-4:1.2/0003:362D:0210.0007/input/input35
[   52.462916] hid-generic 0003:362D:0210.0007: input,hidraw6: USB HID v1.11 Mouse [Keychron Lemokey X1] on usb-0000:00:14.0-4/input2

I tried using a different keyboard on this laptop. This keyboard works okay, but I found that it doesn't connect to hkbd(4) either.
Code:
ugen0.2: <GenesysLogic USB2.1 Hub> at usbus0
uhub1 on uhub0
uhub1: <GenesysLogic USB2.1 Hub, class 9/0, rev 2.10/76.91, addr 19> on usbus0
uhub1: MTT enabled
uhub1: 2 ports with 1 removable, self powered
ugen0.3: <Mountain Mountain Everest Keyboard> at usbus0
ukbd0 on uhub1
ukbd0: <Mountain Mountain Everest Keyboard, class 0/0, rev 2.00/0.57, addr 20> on usbus0
kbd2 at ukbd0
ums1 on uhub1
ums1: <Mountain Mountain Everest Keyboard, class 0/0, rev 2.00/0.57, addr 20> on usbus0
ums1: 16 buttons and [XYZ] coordinates ID=4
ukbd1 on uhub1
ukbd1: <Mountain Mountain Everest Keyboard, class 0/0, rev 2.00/0.57, addr 20> on usbus0
kbd3 at ukbd1
uhid0 on uhub1
uhid0: <Mountain Mountain Everest Keyboard, class 0/0, rev 2.00/0.57, addr 20> on usbus0
 
With
Code:
hw.usb.usbhid.enable=1
in loader.conf the keyboard works.

dmesg:
Code:
ugen0.8: <Keychron Lemokey X1> at usbus0
usbhid8 on uhub0
usbhid8: <Keychron Lemokey X1, class 0/0, rev 2.00/1.02, addr 8> on usbus0
hidbus8: <HID bus> on usbhid8
hkbd3: <Keychron Lemokey X1 Keyboard> on hidbus8
kbd5 at hkbd3
usbhid9 on uhub0
usbhid9: <Keychron Lemokey X1, class 0/0, rev 2.00/1.02, addr 8> on usbus0
hidbus9: <HID bus> on usbhid9
usbhid10 on uhub0
usbhid10: <Keychron Lemokey X1, class 0/0, rev 2.00/1.02, addr 8> on usbus0
hidbus10: <HID bus> on usbhid10
hms2: <Keychron Lemokey X1 Mouse> on hidbus10
hms2: 8 buttons and [XYWH] coordinates ID=2
hsctrl1: <Keychron Lemokey X1 System Control> on hidbus10
hcons2: <Keychron Lemokey X1 Consumer Control> on hidbus10
hkbd4: <Keychron Lemokey X1 Keyboard> on hidbus10
kbd6 at hkbd4
 
Back
Top