Keyboard-Shortcuts

我可以從 Linux 上的第二個鍵盤啟動宏和快捷方式嗎?

  • February 3, 2021

我有一個小數字鍵盤,我想用它來啟動宏和快捷方式,以及我的正常鍵盤。我可以將宏和快捷方式附加到這些鍵(即,小鍵盤 1 最小化活動視窗),但我的主鍵盤小鍵盤也啟動了快捷方式。

我想要一種方法讓輔助鍵盤完全獨立執行,然後為其附加快捷方式。

這是我從中得到的輸出xinput

⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ LVT Recon gaming mouse                    id=10   [slave  pointer  (2)]
⎜   ↳ LVT Recon gaming mouse                    id=11   [slave  pointer  (2)]
⎜   ↳ Corsair Corsair K30A Gaming Keyboard      id=13   [slave  pointer  (2)]
⎜   ↳ SIGMACHIP USB Keyboard                    id=18   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
   ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
   ↳ Power Button                              id=6    [slave  keyboard (3)]
   ↳ Video Bus                                 id=7    [slave  keyboard (3)]
   ↳ Power Button                              id=8    [slave  keyboard (3)]
   ↳ Sleep Button                              id=9    [slave  keyboard (3)]
   ↳ Corsair Corsair K30A Gaming Keyboard      id=12   [slave  keyboard (3)]
   ↳ Corsair Corsair K30A Gaming Keyboard      id=14   [slave  keyboard (3)]
   ↳ LVT Recon gaming mouse                    id=15   [slave  keyboard (3)]
   ↳ Corsair Corsair K30A Gaming Keyboard      id=16   [slave  keyboard (3)]
   ↳ SIGMACHIP USB Keyboard                    id=17   [slave  keyboard (3)]
   ↳ SIGMACHIP USB Keyboard                    id=19   [slave  keyboard (3)]

雖然我的其他答案可能適用於大多數 Linux,即使它們已有多年曆史,但 SystemD 和 udev 實際上使事情變得更容易:

  • 用於lsusb查找附加鍵盤的供應商和產品程式碼。(在我的例子中,它是供應商 145F,產品 0177。確保字母為大寫。)
  • 創建一個文件/etc/udev/hwdb.d/90-extra-keyboard.hwdb,內容與此類似:
evdev:input:b0003v145Fp0177*
KEYBOARD_KEY_7005b=stopcd

第一行標識設備:v 後面的四個字母是供應商程式碼,p 後面是產品程式碼,來自上一步。每一行都將掃描碼映射到符號名稱。要獲取掃描碼,請執行evtest

Event: time 1553711252.888538, -------------- SYN_REPORT ------------
Event: time 1553711257.656558, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70059
Event: time 1553711257.656558, type 1 (EV_KEY), code 79 (KEY_KP1), value 1

要找出符號名稱的用途,請查看以下行#define KEY_…列表/usr/include/linux/input-event-codes.h

#define KEY_PLAYPAUSE           164
#define KEY_PREVIOUSSONG        165
#define KEY_STOPCD              166
#define KEY_RECORD              167
  • 通過執行重新建構和載入內部數據庫systemd-hwdb update; udevadm trigger
  • evtest通過再次執行或在設置中分配快捷方式來驗證新設置是否有效。

在應用程序中嘗試此操作時,請記住,如果您的桌面環境已經使用該快捷方式,則應用程序甚至不會看到按鍵。

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