配置遠端控制Zydacron
我找到了一個舊的紅外遙控器,其接收器連接為 USB。我將它連接到我的 Linux 機器(Mint LMDE 核心 3.2.0-4-amd64)。它被認為
lsusb
是“Zydacron HID 遙控器”。它工作……幾乎……我可以改變音量,啟動/停止媒體播放器,選擇播放列表中的曲目。
但是某些鍵似乎沒有反應(未配置)。
- 如何配置所有的鍵?
- 我應該安裝“lirc”嗎?
所以我必須回來,因為我找到了一個沒有 LIRC 的“更好”的解決方案(恕我直言)!
正如我所說,我第一次連接 USB 接收器時,遙控器上的幾乎所有按鈕都可以工作,無需任何其他軟體或任何配置。
根據不同的建議(不僅在這裡),我為我最常使用的軟體安裝了 LIRC 和外掛。
在經歷了一些困難之後,我配置了 LIRC,因為電腦正在接收掃描碼並且它們被翻譯。在此之後,我啟動了“Totem”並啟動了 LIRC 外掛……但沒有任何效果了!!!:-( 甚至不是以前工作的鑰匙
Banshee 或 VLC 也一樣!
但是,當我關閉應用程序或禁用 LIRC 外掛時,我的鍵再次工作,我可以設置音量、開始、停止和暫停任何 mp3 或影片…等。
據我了解,使遙控器被 LIRC 辨識是不夠的,我必須為我想使用的每個程序編寫一個配置文件……即使是在沒有 LIRC 的情況下工作的密鑰也是如此。聽起來很瘋狂……不談論通過每個外掛找到可接受的 LIRC 操作似乎相當困難的事實,並且某些軟體(例如 Banshee)並沒有提供比沒有 LIRC 的那些(甚至更少)更多的可能性。
於是我搜…
首先發現,從核心2.6.36開始,集成了LIRC的驅動。這就是為什麼我在配置 LIRC 時必須使用“devinput”驅動程序的原因。
從這個版本開始,所有遙控器都被辨識為外接鍵盤!這也解釋了為什麼大多數鍵都是開箱即用的。因此,由於它是一個鍵盤,我們要做的就是將非工作鍵“重新映射”到另一個程式碼/操作上。這是如何:
首先執行“lsusb”並辨識您的遙控器:
Bus 006 Device 002: ID 13ec:0006 Zydacron HID Remote Control
您必須記下 ID 13ec:0006,這將很有用。
現在以長格式顯示 /dev/input/by-id 的內容。
ls -l /dev/input/by-id/ lrwxrwxrwx 1 root root 10 Apr 15 19:27 usb-13ec_0006-event-kbd -> ../event10
由於 ID 和與之關聯的事件,您可以找到正確的行!現在,有了這些資訊,我們將嘗試從遠端讀取
sudo /lib/udev/keymap -i input/event10
當您按下遙控器上的某個鍵時,您應該會看到掃描碼和目前關聯的鍵碼:
scan code: 0xC00CD key code: playpause scan code: 0x70028 key code: enter scan code: 0x7002A key code: backspace scan code: 0x7001E key code: 1 scan code: 0x70022 key code: 5
請注意,某些鍵可能會返回鍵碼,但您的視窗管理器(在我的情況下為 Gnome3)可能無法辨識此鍵碼。或者鍵碼不正確。就我而言,我不得不將鍵號重新映射到小鍵盤(比利時鍵盤),並將特殊鍵(音頻、影片、DVD…)重新映射到一些未使用的功能鍵。
現在我們將編寫我們的鍵盤映射文件。您可以使用任何名稱,就我而言,我將其命名為“zydacron”
sudo vi /lib/udev/keymaps/zydacron
此文件夾中已有多個文件。格式非常簡單:
<scan code> <keycode> <# comment eventually>
例子 :
0x70027 kp0 0x7001E kp1 0x7001F kp2 0xC0047 f13 # music 0xC0049 f14 # photo 0xC004A f15 # video 0xC00CD playpause # Play/Pause
您只能放置需要重新映射的鍵!您將在此頁面上找到所有關鍵程式碼的官方列表。同樣,這並不意味著您的視窗管理器支持此列表中的每個關鍵程式碼,您必須進行測試才能確定。
文件完成後,我們可以使用以下命令對其進行測試:
sudo /lib/udev/keymap input/event10 /lib/udev/keymaps/zydacron
如果某些東西不起作用,您將不得不嘗試另一個鍵碼。然後重做映射。
當一切如您所願時,我們將使其永久化。編輯文件 /lib/udev/rules.d/95-keymap.rules
sudo vi /lib/udev/rules.d/95-keymap.rules
在**LABEL=“keyboard_usbcheck”之後但GOTO=“keyboard_end”**之前的文件中添加以下行:
ENV{ID_VENDOR_ID}=="13ec", ENV{ID_MODEL_ID}=="0006", RUN+="keymap $name zydacron"
您可以將供應商 ID 和型號 ID 辨識為使用lsusb找到的 ID 的 2 部分,以及我的文件的名稱。將其調整為您自己的值。
重啟udev程序:
sudo service udev restart
(或重新啟動電腦),您就完成了。
現在每次插上接收器,不管是哪個USB口,也不管系統給出的事件號,都會自動映射
小提示:我將一個鍵映射為“tab”,另一個映射為“F10”,在 Banshee 中非常有用,可以“跳轉”子視窗並打開主菜單。