今天的目標是要用紅外線遙控器切換視窗、 切換火狐分頁。 假設你已設定好 HP Media Center infrared transceiver, 把有興趣的按鍵映射到某些平常用不到的按鍵名稱 (KEY_*), 或是你已設定好 xenta se340d 紅外線電腦遙控器/接收器 的少數幾顆可客製化按鍵。 總之請先用簡單的應用程式確認你的遙控器搭配 ~/.xbindkeysrc 已可運作。 (見本月前兩三篇文章)
我的實驗採用 se340d ; 若是採用 HP 的接收器, 應該更不會有問題, 因為你可以從 /usr/include/linux/input-event-codes.h 裡面自己任意挑按鍵名稱。
請先安裝 wmctrl 跟 xdotool 這兩個套件。 再下載
nextwindow.py、 把它改成可執行、 並放到 /usr/bin 底下。
這個小程式會用到上述兩套件裡的指令, 把下一個視窗浮到最上層,
並且把鍵盤滑鼠的焦點交給它。 請這樣測試:
for i in {1..20}; do nextwindow.py ; sleep 0.5 ; done
如果順利的話, 應該看到目前桌面上的幾個視窗輪流浮到最上層。
如果失敗, 請留言貼錯誤訊息。
如果沒有錯誤訊息, 但會卡在某些視窗無法將控制權交出去,
有可能是因為你和我一樣在視窗管理員的設定裡面指定
「焦點跟隨滑鼠」。 請把它改回原始設定 「點擊以獲取焦點」。
(不同的視窗管理員的寫法與設定可能略有不同; 右圖是我用的
xfwm4-settings)
測試成功之後, 請在 ~/.xbindkeysrc 裡面加上這幾句 (或取代原先的設定):
"nextwindow.py" XF86HomePage "xdotool key Control_L Page_Up" control + alt + 1 "xdotool key Control_L Page_Down" control + alt + 2
其中的按鍵名稱請改成你自己選的名稱。 第一段設定某個按鍵會把焦點切到下一個視窗; 第二三段則分別設定 「firefox 切換到下一個分頁/上一個分頁」。 (為什麼不用 se340d 的最右彩色鍵? 因為它會同時送出 control + alt + F4, 會把分頁刪掉。) 以上參考到 Firefox 的鍵盤快捷鍵、 xdotool 的鍵盤碼。
[2/27] 不知道是速度還是其他因素, 我在一顆樹莓派上面測試時, 後兩段需要 分解動作 (按下、 停一下、 放開), 最終改成這樣:
"xdotool keydown Control_L key Page_Up; sleep 0.2; xdotool keyup Control_L" control + alt + 1 "xdotool keydown Control_L key Page_Down; sleep 0.2; xdotool keyup Control_L" control + alt + 2
查詢視窗清單的指令 是 wmctrl -l
;
查詢 active window (目前取得滑鼠鍵盤控制權視窗) 的指令
是 xdotool getwindowfocus getwindowname
。
但是前者查到的清單當中可能還包含 「xfce4-panel」、
「桌面」 等等我們不感興趣的項目, 所以在 nextwindow.py 裡面會先把這些刪掉。
而後者查到的 active window 名稱可能太長,
例如若是瀏覽器的話, 還會包含目前分頁的標題等等,
所以也需要砍掉一長串, 否則跟所有視窗清單會對不起來。
你的 wmctrl -l 所查到的若與我不同, 可能會需要小改程式。
改完後請用上述 bash 迴圈測試;
若直接套用到 xbindkeys 會看不到錯誤訊息, 較難除錯。
過年前買了一個樹莓派, 安裝時發現可以直接選擇讓它變成 kodi 影音媒體平臺。 再加上切換視窗與切換瀏覽器分頁的功能, 應該就可以變成完整的 [遙控器操作之] 家庭資訊站了吧? 只是我們家好像沒有人想用... 我自己也沒在看影片... 也許以後老了可以用?
沒有留言:
張貼留言
因為垃圾留言太多,現在改為審核後才發佈,請耐心等候一兩天。