Linux

配置遠端控制Zydacron

  • April 6, 2019

我找到了一個舊的紅外遙控器,其接收器連接為 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 中非常有用,可以“跳轉”子視窗並打開主菜單。

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