2021年2月15日 星期一

用遙控器切換視窗、 切換火狐分頁

今天的目標是要用紅外線遙控器切換視窗、 切換火狐分頁。 假設你已設定好 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 影音媒體平臺。 再加上切換視窗與切換瀏覽器分頁的功能, 應該就可以變成完整的 [遙控器操作之] 家庭資訊站了吧? 只是我們家好像沒有人想用... 我自己也沒在看影片... 也許以後老了可以用?

沒有留言:

張貼留言

因為垃圾留言太多,現在改為審核後才發佈,請耐心等候一兩天。