星期一, 8月 08, 2011

在Linux底下自訂滑鼠的額外按鍵

我之前一直使用筆電附贈的滑鼠,後來以體積太小不好握的藉口,買了羅技M705滑鼠。很幸運的,在我所使用的Kubuntu 11.04中,可以不用安裝任何驅動程式,即可正常使用大部分的功能,包括在瀏覽器中切換上下頁。然而,大拇指鍵(thumb buttom)卻無法像Windows或Mac一樣,顯示程式縮圖。搜尋了網路上的資料,以及實際測試的結果,這個鍵在系統中是可以被抓到的,以我這邊為例,是button 10。然而要如何設定按下此鍵後,系統對應的動作,在沒有官方驅動程式的情況下,就是個難題。

後來在網路上搜尋到一個解決方案,在我的環境下實驗成功。然而就如同大部分在本網誌介紹的教學一樣,我相信並非是最佳解,但至少是可以參考的方向。

本文乃是參考以下連結:

Getting Started With Linux: Fine-Tuning Your Hardware | Gizmodo Australia
這個方法使用了xbindkeys修改滑鼠按鍵的動作,並使用xte模擬產生「假的」鍵盤或滑鼠的輸入訊號。然而與該文不同的是,由於我是個依賴GUI的人,加上文中修改.xbindkeysrc的方法,在我的電腦似乎起不了作用,因此本文要介紹的是使用圖形化前端:xbindkeys-config來修改。

除此之外,還有幾個對策可以考慮。一是使用btnx,一個可以自訂滑鼠按鍵的程式,這個方法應該比較簡單,但該程式因不明原因在我的系統無法啟動;二應該就是修改xinput的設定,但這部份我實在不熟,因此暫不考慮。

1.確認按鍵的代碼
在設定之前,你要先確認將要設定的按鍵,在系統中的代號。首先,請先開啟終端機(如KDE下的Konsole),輸入以下指令
xev
此時在螢幕上會出現一個白色的小視窗,請將滑鼠鼠標移至上方,並且按下欲設定的按鍵,例如我想要設定的thumb buttom。
 按壓或移動滑鼠,在終端機都會出現一大串很可怕的東西,暫且不要驚慌,請尋找開頭為「ButtonPress event」的項目,之後應該就會看到類似這樣的東西。
ButtonPress event, serial 35, synthetic NO, window 0x1e00001,
    root 0x15d, subw 0x0, time 8010384, (105,138), root:(109,689),
    state 0x0, button 10, same_screen YES
 上面的buttom 10,就是這個按鍵的代碼。

查完之後按下Ctrl+c即可關閉程式。


2.安裝xbindkeys和xte
接著要來安裝所需的程式,使用Debian/Ubuntu的使用者,可以直接在終端機執行一下指令:
sudo apt-get install xbindkeys xbindkeys-config xautomation
這個指令的意思是取得系統管理員權限(sudo)執行apt-get這個套件管理程式,來安裝(install)後面那三個套件。因此即使不下指令,一下可以藉由圖形化介面的Synaptic等程式安裝。

輸入該指令後,會要求輸入密碼。之後還會顯示消耗的空間和是否要安裝,按下y即可繼續,讓程式自己跑,即可安裝完成。


3. 設定滑鼠按鍵的動作:xbindkeys-config
在設定滑鼠按鍵之前,我們要先開啟xbindkeys-config這個程式。雖然這個程式應該不會顯示於程式選單,但仍有許多方法可以將其啟動,在此僅舉幾個例子。
一、在終端機輸入xbindkeys-config
二、在Gnome或KDE底下同時按下Alt+F2,輸入xbindkeys-config後按下enter
三、在KDE底下,程式選單的上面有個搜尋欄,輸入xbindkeys-config後執行
該程式的畫面應該會類似上圖,預設的選項如果用不到的話,可以將其移除。而這次的考試重點......不,應該說這次會用到的部份,主要是紅色框圈出的部份。

首先按下New來新增一個設定,接著來到Edit:
Name: 
這個設定的名稱,僅供識別用。簡單來說,是給人看的,不是給電腦的。
Key:
 在這裡指定所要設定的按鍵。
在這個程式中,可以設定鍵盤或滑鼠,在此指介紹滑鼠(其實鍵盤沒試過)。
滑鼠的部份是「b:代號」,代號的部份就是我們在第一步所查到的。
例如我要設定的是buttom 10,那麼在這裡輸入的就是b:10。

Action:
這裡就是指定按下按鍵後的動作了。
這裡就因人而異了。基本上輸入程式名稱即可,不過要注意輸入的不是全名,而是所對應的指令。例如我希望按下該鍵即可啟動Firefox,那麼就是「firefox」;啟動Dolphin,就是「dolphin」。

設定完之後,按下Apply就可以套用設定了。

但如果希望取代某些鍵盤的組合鍵,例如Alt+F4關閉視窗呢?這就要借用到一開始提到的xte,有這方面需求的,請參考下一步。

3.a.設定xte指令
這個部份我認為比較複雜,而且自己設定時也是搞得亂七八糟(默)

如果對英文沒有恐懼症的人,可以直接參考xte的說明,以下僅大略帶過

首先,套用在xbindkeys中的指令,最基本的樣式像這樣:
xte '第一個動作' '第二個動作' '第三個動作'......
我們在使用鍵盤時,有按下、放開等動作,在這個程式也一樣。可以想像成將打字的動作,轉變為文字形式:
key k :按下並放開K鍵
keydown "k" (keydown k):按下k鍵(之後一直維持按住的狀態)
keyup k :放開k 鍵
 在說明中,也介紹了幾個有用的鍵
Home
Left
Up
Right
Down
Page_Up
Page_Down
End
Return
BackSpace
Tab
Escape
Delete
Shift_L
Shift_R
Control_L
Control_R
Meta_L
Meta_R
Alt_L
Alt_R
*註1:後面有分_L或_R者,代表有左右側均有的按鍵。如Control_L是左側的Ctrl,Control_R即為右側的Ctrl。
*註2:Meta鍵在PC上通常是有Windows圖示的鍵。
根據上面的說明,我們就可以實作了。
  • Alt+F4(關閉目前視窗)
    =xte 'keydown Alt_L' 'key F4' 'keyup Alt_L'
  • Ctrl+T(Firefox開新分頁)
    =xte 'keydown Control_L' 'key T' 'keyup Control_L'
  • Ctrl+W(Firefox關閉分頁)
    =xte 'keydown Control_L' 'key W' 'keyup Control_L'
其餘的Hotkey組合,請依照常用的程式做最適合的組合。然後將調整好的指令(如上面的例子,不包含等號)貼到上一步xbindkeys-config設定中的Action即可。

比較可惜的,這篇所介紹的方法不能如官方的Setpoint,對個別的程式進行調整,這是設定時要衡量的。

3.b.對應Kwin特效或KDE的快速鍵
作為一個不曾進行回饋的KDE使用者(默),之前一直希望可以將這個額外的按鍵與KDE預設的視窗管理員-Kwin進行整合,尤其是類似於底下的特效:
在Kwin中,一樣有展開顯示目前程式的特效 ,名稱叫做「Present Windows」,與Mac的Expose似乎有些神似。然而我們要如何得知這個特效的快捷鍵(Hotkey),乃至於修改它呢?這就要提到KDE關於快捷鍵的設定了。

KDE SC中的程式,普遍有個我蠻喜歡的功能。只要選擇「設定」-「設定快捷鍵」,就可以設定該程式的快捷鍵。這個選項在KDE SC的程式中的位置幾乎都相同,因此不用花時間去尋找,這種整合性也是我喜歡KDE的原因之一。
即使是不同的程式,配置仍大同小異
點開之後,即可看到各個動作所對應的快捷鍵,之後只要搭配3.a中的方法套用在xbindkeys即可。

然而,如果要設定的並非是個別程式,而是系統的全域設定呢?這個部份在KDE中,有整合在系統設定的「捷徑與手勢(Shortcut and Gesture)」中。

首先開啟KDE的程式選單(預設為kickoff),選擇「系統設定」→「捷徑與手勢」
開啟之後,即可設定各項關於KDE的快捷鍵。以我要修改的KWin為例,位置在「全域鍵盤捷徑」-「KDE組件:KWin」
以本步驟一開始的抓圖中,所使用的特效「Present Windows」為例,預設值是Ctrl+F10。

講到這裡,似乎已經偏離了文章主題(默)。總之由以上的步驟,應該可以讓你查到想要的動作,所對應的快捷鍵為何。之後再套用3.和3.a.所提到的技巧,即可將thumb鍵與視窗縮圖整合,以下仍以「Present Windows」的預設快捷鍵示範 。

  • 觸發Present Windows(所有桌面的視窗)=Alt+F10
    xte 'keydown Control_L'  'key F10'  'keyup Control_L'
  • 觸發Present Windows(目前桌面的視窗)=Alt+F9
    xte 'keydown Control_L'  'key F9'  'keyup Control_L'
一樣貼到xbindkeys-config設定中的Action後,按下Apply套用即大功告成。

4.開機時自動啟動xbindkeys
以上的步驟完成後,理論上應該已經可以正常使用了。然而還存在著一個麻煩的問題,xbindkeys預設不會在開機時啟動,因此若要套用它的設定,勢必每次進入系統後再啟動。為了避免這個麻煩,可以考慮將xbindkeys加入開機時自動啟動的項目中。

如同這篇文章一貫的風格,我很懶,所以以下仍是以圖形化介面設定。

KDE
1.開啟程式選單,選擇「系統設定」
2.選擇「啟動與關閉」(KDE 4.5以下則是「進階」-「自動啟動」)

3.選擇左邊的「自動啟動」。右側會出現列表,請點選「新增程式」
4.在下圖紅色方塊的地方輸入「xbindkeys」,然後選擇「確定」。至於是否一定要點選「於終端機內執行」,老實說沒試過。不管你有沒有選,反正我是選了。(誤)

基本上在你輸入完程式名稱之前,xbindkeys就會出現在底下的列表了,這也是Linux中貼心的設計。
5.接著會跳出設定畫面,選擇「權限」標籤,並勾選「是可執行檔」,並選擇「確定」
最後可以看到xbindkeys出現在選單內,也就代表這一連串的設定終於完成,從今之後就可以快樂的使用滑鼠了!

Gnome2.x
雖然我沒在Gnome底下試過,但方法應該也是大同小異。
1.選擇「System」-「Preferences」-「Startup Applications」
2.選擇「Add」,並在Command的地方輸入「xbindkeys」,並選「Add」
這樣一來就可以更充分使用各個按鍵了。

0 則回應:

張貼留言

歡迎光臨本月台,留言時請遵守以下幾點:
1.請不要張貼商業廣告,不然環保局會開單
2.用什麼語言留言都可以,只不過我不一定看得懂。
火星文、注音文可能因為難以解讀而不與回覆