2011年11月17日 星期四

代班 MIS

話說一大早正在和同事討論技術上的問題,突然收到有網站掛掉的訊息。本來這件事情不會由我處理,偏偏公司裡苦命的 MIS 今天休假,理由又是帶家裡小朋友去看醫生,多麼正當的理由啊!所以我這個不入流的工程師,就得趕鴨子上架去處理問題。

當時倒是沒有想到會遇到一堆讓人鬱悶的事倩…

由於是網站不通,首先當然是由網頁主機的 HTTP 服務開始查起。發現服務仍然好端端的待在 80 port 上,再進一步去追查,發現一堆 httpd 的程式不知道什麼原因,保持活動卻不吃 CPU ,猜想可能是被某種原因卡住動不了,超過 daemon 上限所以後來的網頁要求無法被處理。

OK ,那就重啟 HTTP 服務吧!反正當下沒有人能上得了網站(已經掛了),就不用擔心有人被踢掉的問題。嗯,服務重啟…等待完成訊息…重啟完成,到網站上看一下,原來應該待在那裡的網頁出現了,滿是成就感的回報問題排除,準備打封信去向 MIS 臭屁一下。

誰知道,回報不到 30 秒,就回覆說網站又開不了了,這次是連不到資料庫。

2011年11月11日 星期五

設定滑鼠按鍵

話説大約快半年前,敗了一隻 Kensington 的軌跡球滑鼠,使用不久就發現手腕沒有之前那縻累,但是也感受到這家少數還在作軌跡球的公司,對於它的重視程度依然不高。除了在無法像前代可以指定雙鍵同時按下時表示特殊的意義(如︰中鍵、上一頁、下一頁…等),另外在 Windows 7 也常常出現應用程式重複啟動的狀況。總之…就是「生理上覺得不錯,但是心理上覺得滿糟糕的」。

在官方網站上面,它只有提供 Windows 和 Mac 的程式,並沒有 Linux 的版本。也就導致我一直認為它不能在 Linux 正常運作。一直到後來看關於 Linux XWindow 的書,裡頭説到在理論上可以支援無限數量按鍵的滑鼠。照這個説法來看,我的這支滑鼠應該可以跑在 Linux 上,而不用接在另一台常常會拿來拿去的 Notebook上(工作用桌機是 Linux,筆電是 Windows 7)。

一開始的嘗試並不順利,原因在於一直以來使用 Windows 的習慣告訴我︰「使用硬體一定要安裝對應的驅動程式」,因為像是 nvidia 的顯示卡,就需要安裝對應的 diver 才能發揮其較能。所以我在工作之餘,斷斷續續花了一個多月的時間在找「給 Kensington 的驅動程式」, 而結果當然是找不到。

就快要放棄的時候,翻到書上關於 XWindow 的設定檔 Xorg.conf,其中定義了關於滑鼠 Driver (又是驅動程式,但我就是找不到)和每個按鈕的定義…咦!定義?當下閃過的念頭就是「也許 Linux 已經抓到 Kensongton 了,只是我沒有去定義左右鍵之外的按鈕所代表的功能。

最後查到設定中有一個「ButtonMapping」的屬性,並且有個 xinput set-button-map 的指令,就是定義每一個滑鼠按鍵代表的意義。由於設定每個按鍵的作用,可以算是每個使用者的自由,因此我將設定的指令放在 ~/.xprofile 裡,加了一行…
xinput set-button-map "Kensington Kensington Slimblade Trackball" 1 8 3 4 5 6 7 2 9 10 11 12
這樣軌軌球的左上及右上的按鈕就會有作用。

其作法是利用 xinput 設定滑鼠的「button-map」,而「Kensington Kensinton Slimblade Trackball」是系統本身抓到的硬體名稱。後頭那一堆數字,就是代表每一個按鍵代表的意思。不同的數字代表的意思可以在這裡看到。

雖然是另外的滑鼠,不過重點放在第一行的 ID 和第三行的 Result。我的猜想是,當滑鼠按鍵(包含移動)會發出 ID 訊號,由電腦作出對應的行為。就像是鍵盤上每一個按鈕都有獨立的 ID 編號,這樣上電腦才能精確的辨別出今天使用者按到的右邊還是左邊的「Ctrl 鍵」。因此,只要這個對應表作好,就能夠正常運作。

Kensington 的 ID 送出排列方式,是…「左下 左上 右下 移動(下上左右) 右上,所以上例的設定表示…
左下 → 左鍵(1)
左上 → 回上一頁(8)
右下 → 右鍵(3)
移動 → (4, 5, 6, 7)
右上 → 中鍵(2)
至於後的 10, 11, 12 我就不清楚了,還沒查到是什麼意思。

到目前為止仍不清楚的是…為什麼沒有設定的時候沒有滾輪的部分,是因為是它模擬鍵盤的行為嗎?還有 Kensington 在上個版本的設定程式,支援兩個按鍵同時按,能夠模擬特別的效果,在 Linux 能不能也實現,就有待之後看看還沒有時間讓我去研究了…