Linux

如何使用 NixOS 配置 USB 踏板

  • June 29, 2020

我有一套我希望(需要!)用 NixOS 配置的 USB 踏板,因為坦率地說,我的手快要死了。

踏板在 lsusb 中標識:

Bus 001 Device 006: ID 413d:2107

evtest 顯示以下預設鍵分配:

sudo evtest /dev/input/event6
...
Input device ID: bus 0x3 vendor 0x413d product 0x2107 version 0x111
Input device name: "HID 413d:2107 Keyboard"
Supported events:
 Event type 0 (EV_SYN)
 Event type 1 (EV_Key)
   Event code 1 (KEY_ESC)
...
   Event code 240 (KEY_UNKNOWN)
 Event type 4 (EV_MSC)
   Event code 3 (MSC SCAN)
...
Event: time 1593452123.539558, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70004
Event: time 1593452123.539558, type 1 (EV_KEY), code 30 (KEY_A), value 1
Event: time 1593452123.539558, -------------- SYN_REPORT ------------
...

因此,在techtrickery.comyulistic.gitlab.io 之後,使用相關的NixOS Option,我在我的 extraHwdb 規則中添加了幾行:

services.udev.extraHwdb = ''
 evdev:input:b*v413Dp2107e*-*
   KEYBOARD_KEY_70004=f13
'';

我在設備線上嘗試了一些變體,尤其是keyboard:usb:v413Dp2107*evdev:input:b*v413Dp2107e*.

將其添加到我的 configuration.nix 中,重建(並切換!),然後……什麼都沒有。踏板繼續產生“a”鍵。

我相信更改正在被採納(如果我故意刪除文件中的“;”,它將不會建構)。但是使用 udevadm 進行測試:

sudo udevadm info /dev/input/event6

P: /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0/0003:413D:2107.0004/input/input25/event6
N: input/event6
L: 0
S: input/by-path/pci-0000:00:14.0-usb-0:2:1.0-event-kbd
S: input/by-id/usb-413d_2107-event-kbd
E: DEVPATH=/devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0/0003:413D:2107.0004/input/input25/event6
E: DEVNAME=/dev/input/event6
E: MAJOR=13
E: MINOR=70
E: SUBSYSTEM=input
E: USEC_INITIALIZED=1296521621
E: PATH=/nix/store/k3hi6q6y10zrrgli0xa54zbvzs6pwdl1-udev-path/bin:/nix/store/k3hi6q6y10zrrgli0xa54zbvzs6pwdl1-udev-path/sbin
E: ID_INPUT=1
E: ID_INPUT_KEY=1
E: ID_INPUT_KEYBOARD=1
E: ID_VENDOR=413d
E: ID_VENDOR_ENC=413d
E: ID_VENDOR_ID=413d
E: ID_MODEL=2107
E: ID_MODEL_ENC=2107
E: ID_MODEL_ID=2107
E: ID_REVISION=0000
E: ID_SERIAL=413d_2107
E: ID_TYPE=hid
E: ID_BUS=usb
E: ID_USB_INTERFACES=:030101:030102:
E: ID_USB_INTERFACE_NUM=00
E: ID_USB_DRIVER=usbhid
E: ID_PATH=pci-0000:00:14.0-usb-0:2:1.0
E: ID_PATH_TAG=pci-0000_00_14_0-usb-0_2_1_0
E: LIBINPUT_DEVICE_GROUP=3/413d/2107:usb-0000:00:14.0-2
E: DEVLINKS=/dev/input/by-path/pci-0000:00:14.0-usb-0:2:1.0-event-kbd /dev/input/by-id/usb-413d_2107-event-kbd
E: TAGS=:power-switch:

沒有證據表明所要求的配置。所以大概我在做一些愚蠢的事情,但無論我怎麼看,我都看不到它。

我懷疑鍵盤程式碼(70004)超出了標題中 evtest 報告的範圍

$$ 0..240 $$; 但我不知道這是否相關。 任何指針將不勝感激。

您可以嘗試Footswitch,它支持您的模型並允許您對事件進行程式。

用於程式 PCsensor 和 Scythe 腳踏開關的命令行實用程序。支持單踏板設備和三踏板設備。

footswitch [-123] [-r] [-s <string>] [-S <raw_string>] [-ak <key>] [-m <modifier>] [-b <button>] [-xyw <XYW>]
  -r          - read all pedals
  -1          - program the first pedal
  -2          - program the second pedal (default)
  -3          - program the third pedal
  -s string   - append the specified string
  -S rstring  - append the specified raw string (hex numbers delimited with spaces)
  -a key      - append the specified key
  -k key      - write the specified key
  -m modifier - ctrl|shift|alt|win
  -b button   - mouse_left|mouse_middle|mouse_right
  -x X        - move the mouse cursor horizontally by X pixels
  -y Y        - move the mouse cursor vertically by Y pixels
  -w W        - move the mouse wheel by W

引用自:https://unix.stackexchange.com/questions/595750