Linux-Mint

如何讓 MS Natural Ergonomic 4000 滑塊在 Linux Mint 上工作?

  • April 21, 2017

我正在嘗試使 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_ZOOMINKEY_ZOOMOUT)。所以在這方面,它已經“工作”了:你可以接收事件並用它做一些有用的事情。

但是,X 鍵盤翻譯僅支持最多 255 個鍵碼(請參閱此答案,這是 X 協議的限制)。所以你不能將它們轉換為 X 鍵符。(無論如何,這可能不是您想要的,因為縮放通常由應用程序中的滑鼠按鈕事件處理,即按鈕 4 和 5。因此,即使您確實將其轉換為鍵符,它們也不會放大或縮小)。

但是從您嘗試做的事情來看,您似乎想將它們重新映射到updown鍵,與鍵盤上已經可用作其他鍵的向上和向下箭頭鍵相同。

  1. 如已連結的答案中所述,為了使 X 能夠重新映射大於 255 的鍵碼,有人創建了X驅動程序的修補變體。evdev所以你需要編譯安裝這個打更新檔的變種,然後這個選項event_key_remap才會被辨識。它不會被標準evdev驅動程序辨識,因此您的xorg.conf輸入沒有做任何事情也就不足為奇了。

這可能是最乾淨的方法。 2. 在接管所有 Linux 的過程中,systemd顯然現在也有自己的硬體數據庫並且可以覆蓋鍵盤映射。我不確定它在核心的哪個級別上工作,所以我不知道它是否會有所幫助,而且“硬體數據庫”的格式似乎沒有記錄。所以在這方面我幫不了你太多。

但是,匹配的格式似乎已經改變,所以如果你包括巴士號碼,也許你會更幸運,如前所述。

編輯:閱讀核心原始碼,我發現每個輸入設備都有自己的掃描碼(硬體依賴,最多 8 個字節,儘管在許多地方只有核心中的 1/2/4 個字節被傳輸)到鍵碼(你看到的evtest) 翻譯映射。可以使用設備上的EVIOCGKEYCODE_V2EVIOCSKEYCODE_V2ioctl 設置和獲取較大的程式碼值。類似於xmodmaploadkeys/dumpkeys似乎不存在的通用工具,儘管一些 IR 接收器相關工具顯然使用這些 ioctl。如果這就是systemd數據庫的工作方式,那麼更靈活的替代方法是在udev規則中使用這樣的工具(也更易於測試)。我寫了一個快速的 C 程序來轉儲映射,也許我應該把它放在 github 上…… 3. 原則上,您已經可以使用自己的程序或腳本處理事件,並做任何您想做的事情。例如,evtest在其上執行,使用 bash 腳本解析輸出,並通過xdotool按下 4 或 5 次按鈕來呼叫,以獲得與滑塊按鈕的滑鼠滾輪相同的效果。等等,pp。(有一個用於類似目的的帶有基本腳本的stackexchange問題,但我現在找不到它。如有必要,我可以搜尋更多)。

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