如何讓 MS Natural Ergonomic 4000 滑塊在 Linux Mint 上工作?
我正在嘗試使 MS 鍵盤上的滑塊工作,但它仍然沒有。
我已經嘗試過的:
在
/etc/udev/hwdb.d/61-keyboard-local.hwdb
keyboard:usb:v045Ep00DB* KEYBOARD_KEY_c022d=up KEYBOARD_KEY_c022e=down
和
evdev:input:b0003v045Ep00DB* KEYBOARD_KEY_c022d=up KEYBOARD_KEY_c022e=down
下列的
sudo udevadm hwdb --update sudo udevadm control --reload
並且重新啟動沒有做任何事情。
在
/lib/udev/keymaps/microsoft-ergonomic-keyboard
0xC022D 0xC1 # Zoom Up which we wish to be Scroll up 0xC022E 0xC2 # Zoom Down which we wish to be Scroll down
並且重新啟動沒有做任何事情。
在
/etc/X11/xorg.conf.d/10-keyboard.conf
Section "InputDevice" Identifier "Keyboard1" Driver "evdev" Option "Device" "/dev/input/event9" Option "event_key_remap" "418=185 419=186 423=101 425=156 421=157" EndSection
並且重新啟動沒有做任何事情。
我所擁有的是
> sudo evtest /dev/input/event9 Input driver version is 1.0.1 Input device ID: bus 0x3 vendor 0x45e product 0xdb version 0x111 Input device name: "Microsoft Natural® Ergonomic Keyboard 4000" ... Testing ... (interrupt to exit) Event: time 1478692111.766327, type 4 (EV_MSC), code 4 (MSC_SCAN), value c022d Event: time 1478692111.766327, type 1 (EV_KEY), code 418 (KEY_ZOOMIN), value 1 Event: time 1478692111.766327, -------------- SYN_REPORT ------------ Event: time 1478692111.886318, type 4 (EV_MSC), code 4 (MSC_SCAN), value c022d Event: time 1478692111.886318, type 1 (EV_KEY), code 418 (KEY_ZOOMIN), value 0 Event: time 1478692111.886318, -------------- SYN_REPORT ------------ Event: time 1478692112.678287, type 4 (EV_MSC), code 4 (MSC_SCAN), value c022e Event: time 1478692112.678287, type 1 (EV_KEY), code 419 (KEY_ZOOMOUT), value 1 Event: time 1478692112.678287, -------------- SYN_REPORT ------------ Event: time 1478692112.798370, type 4 (EV_MSC), code 4 (MSC_SCAN), value c022e Event: time 1478692112.798370, type 1 (EV_KEY), code 419 (KEY_ZOOMOUT), value 0 Event: time 1478692112.798370, -------------- SYN_REPORT ------------
所以滑塊工作,
evtest
可以看到事件,但xev
不顯示任何東西。還有什麼我可以嘗試讓它在 2016 年工作的嗎?我正在使用帶有 4.4.0-34 通用核心的 Linux Mint 18 Sarah。
背景:您的鍵盤是一個HID USB 設備,核心正確辨識您的滑塊鍵的 HID USB 事件,並將它們轉換為鍵碼(
KEY_ZOOMIN
和KEY_ZOOMOUT
)。所以在這方面,它已經“工作”了:你可以接收事件並用它做一些有用的事情。但是,X 鍵盤翻譯僅支持最多 255 個鍵碼(請參閱此答案,這是 X 協議的限制)。所以你不能將它們轉換為 X 鍵符。(無論如何,這可能不是您想要的,因為縮放通常由應用程序中的滑鼠按鈕事件處理,即按鈕 4 和 5。因此,即使您確實將其轉換為鍵符,它們也不會放大或縮小)。
但是從您嘗試做的事情來看,您似乎想將它們重新映射到
up
和down
鍵,與鍵盤上已經可用作其他鍵的向上和向下箭頭鍵相同。
- 如已連結的答案中所述,為了使 X 能夠重新映射大於 255 的鍵碼,有人創建了X驅動程序的修補變體。
evdev
所以你需要編譯安裝這個打更新檔的變種,然後這個選項event_key_remap
才會被辨識。它不會被標準evdev
驅動程序辨識,因此您的xorg.conf
輸入沒有做任何事情也就不足為奇了。這可能是最乾淨的方法。 2. 在接管所有 Linux 的過程中,
systemd
顯然現在也有自己的硬體數據庫並且可以覆蓋鍵盤映射。我不確定它在核心的哪個級別上工作,所以我不知道它是否會有所幫助,而且“硬體數據庫”的格式似乎沒有記錄。所以在這方面我幫不了你太多。但是,匹配的格式似乎已經改變,所以如果你包括巴士號碼,也許你會更幸運,如前所述。
編輯:閱讀核心原始碼,我發現每個輸入設備都有自己的掃描碼(硬體依賴,最多 8 個字節,儘管在許多地方只有核心中的 1/2/4 個字節被傳輸)到鍵碼(你看到的
evtest
) 翻譯映射。可以使用設備上的EVIOCGKEYCODE_V2
和EVIOCSKEYCODE_V2
ioctl 設置和獲取較大的程式碼值。類似於xmodmap
或loadkeys/dumpkeys
似乎不存在的通用工具,儘管一些 IR 接收器相關工具顯然使用這些 ioctl。如果這就是systemd
數據庫的工作方式,那麼更靈活的替代方法是在udev
規則中使用這樣的工具(也更易於測試)。我寫了一個快速的 C 程序來轉儲映射,也許我應該把它放在 github 上…… 3. 原則上,您已經可以使用自己的程序或腳本處理事件,並做任何您想做的事情。例如,evtest
在其上執行,使用 bash 腳本解析輸出,並通過xdotool
按下 4 或 5 次按鈕來呼叫,以獲得與滑塊按鈕的滑鼠滾輪相同的效果。等等,pp。(有一個用於類似目的的帶有基本腳本的stackexchange問題,但我現在找不到它。如有必要,我可以搜尋更多)。