為了設定 xenta se340d 紅外線電腦遙控器/接收器, 爬了好多鍵盤設定相關文章。 最終勉強成功; 那這一大堆有用到和沒用到的網址... 就順便筆記一下吧。
一、 各種方案
想設定鍵盤, 有好幾種不同的方法 ( 不太順的中文翻譯), 包含以下:
- udev hwdb: 最上游/最底層的機制, 釜底抽薪。 不只 xorg, 連 vt 環境也一併有效。 複雜。
- ===== 以下其他方法都只適用於 xorg 環境 =====
- xmodmap: 較舊。
- xbindkeys: 較新, 彈性夠,又不會太複雜。 <== 我的選擇, 本文重點
- xkb: 彈性大; 複雜。
- 各家視窗環境 (例如 xfce) 自己的設定檔: 這是很下游/很上層的設定, 適用情境較小, 受限於特定的視窗環境。
二、 xbindkeys
用 ps x | grep xbindkeys
可以發現
xbindkeys 是一個本來就 (以普通用戶身份) 執行的程序,
不需要另外去啟動什麼服務。 手冊也清楚地說了:
(1) 預設會去讀取 ~/.xbindkeysrc 設定檔
(2) 每次修改過設定檔之後, 它也會自動去讀取。
如果沒把握, 也可以更明確地直接指示它去讀取更新過的設定檔:
xbindkeys -p
或是
killall -HUP xbindkeys
或是更暴力更直白的:
killall xbindkeys ; xbindkeys -f ~/.xbindkeysrc
。
如果不小心把 ~/.xbindkeysrc 砍掉了, xbindkeys 會默默地無法啟動。
這時可以 xbindkeys -d > ~/.xbindkeysrc
先產生一個預設的設定檔, 再試著啟動並檢查 xbindkeys 程序。
更詳盡教學請見
archlinux 的 xbindkeys 文件。
~/.xbindkeysrc 裡面的語法很簡單, 例如我想要把 se340d 的 「www」 鍵設定成 「叫出視窗選單」, 那就這樣設定:
"xfdesktop -W" XF86HomePage
意謂著 「每當接收到 XF86HomePage 鍵, 就執行 xfdesktop -W 指令」。
兩句之間不可插入任何東西, 連註解也不行;
第二句前面至少要有一個空格。
如何查詢按鍵代碼? 可以用 xbindkeys -mk
測試。
在 /usr/include/X11/XF86keysym.h (來自 x11proto-dev 套件)
裡面有著對應的定義, 但名稱略有不同, 稱為 XF86XK_HomePage。
三、 攔截與設定四顆彩色鍵
se340d 有一些鍵一口氣送出好幾個碼, 好像是專門為 win7 設計的。
其中第二排的四個彩色鍵, 在 linux 下產生的效果是切換到 vt1 至 vt4。
用 xbindkeys -mk
查看, 原來按下最左邊的綠鍵時,
它會依序送出 ctrl+alt+a、 ctrl+alt+1、 ctrl+alt+F1 等鍵。 其他三鍵類推。
如果想要重新定義這幾個鍵的功能, 就必須放棄切換虛擬終端機的功能。
但是
在 /etc/X11/xorg.conf.d/*.conf 裡面設定 DontVTSwitch
只會取消切換功能, xbindkeys 卻還是抓不到按鍵。
真正的解法在 這個問答 或
這個問答:
下了 setxkbmap -option srvrkeys:none
指令之後,
xorg 就不會處理 ctrl+alt+F1 等鍵了。
但是登出再登入後又會恢復預設值。
若要永久生效, 就要在 /etc/default/keyboard 裡面加一句:
XKBOPTIONS="srvrkeys:none"
。
但是這樣還不夠。 ctrl+alt+b 會叫出 fcitx 的虛擬鍵盤。 必須從主選單叫出 「設定值」 => 「fcitx 設定」 (或直接下 fcitx-config-gtk3 指令) 叫出設定對話框、 選 「附加元件」 分頁、 勾選 「Advanced」、 取消最下方的 「虛擬鍵盤」。 另外, ctrl+alt+d 是 xfce 的快速鍵 之一, 用來清空/還原桌面 (縮小/還原所有視窗)。 必須從主選單叫出 「設定值」 => 「視窗管理程式」 (或直接下 xfwm4-settings 指令) 叫出設定對話框、 選 「鍵盤」 分頁、 點選 「顯示桌面」、 點兩次 「清除」。
以上設定完成後, 現在對著紅外線接收器按四顆彩色鍵, 終端機終於可以接收得到。 而且會印出 PQRS 等等四個字母, 那是因為如先前所說的, 每個彩色鍵都會送出好幾個鍵盤碼。 而且對應到 ctrl+alt+c 的第三個鍵還會中斷目前的命令。 隨便啦, 沒力修飾這些細節了, 假設這些鍵對你想開的應用軟體沒有影響, 我們就直接忽略它們吧。 接下來在 ~/.xbindkeysrc 裡面加上這幾列:
"geeqie" control + alt + 1 "kmag" control + alt + 2 "xfce4-terminal" control + alt + 3 "thunar" control + alt + 4
終於可以用四顆彩色鍵叫出我常用的應用軟體了! 那麼... 下一步就是找一些鍵盤可操作的 apps 或 web apps 再搭配 遙控器切換視窗、切換火狐分頁 來實作有趣的生活應用囉~
為了設定這個個彩色鍵, 需要放棄六個虛擬終端機、 一個虛擬鍵盤還有桌面清除/還原功能, 犧牲還蠻大的... 如果買得到的話, 還是 HP 那一款紅外線接收器 比較划算。
過年期間四處問親戚小輩誰有興趣用遙控器操作電腦, 想要技術移轉出去; 大家都客氣地笑笑說不需要。 老婆殘酷地評論: 「現在大家都喜歡用手機裝 apps 直接跟電視連線, 誰還會想用遙控器啊? 你這... 太老氣了吧?」 瞬時間阿伯的玻璃心碎了一地~
沒有留言:
張貼留言
因為垃圾留言太多,現在改為審核後才發佈,請耐心等候一兩天。