pretty code

2022年4月6日 星期三

武林絕學 - 金星幻式 - 七星連線

標題雖然是布袋戲的招式名稱,但我想不到比這個貼切的標題了XD

從 3 月下旬開始,為了研究 Libra 2 的藍牙,不但買了 Libra 2 本人回來研究,還陸續買了 E-PCG233 藍牙滑鼠以及 8BitDo Zero 2 搖桿回來,正所謂孩子的學習不能等呀?

好不容易大概釐清了 Libra 2 的藍牙問題?但後續還有一個小尾巴卡在我心中,那就是為什麼滑鼠以及我的 R500 翻頁器都會按下一次鍵後觸發 2 次事件?雖然我大概已經能猜測出問題出在哪裡就是了(按下及放開的事件,Key Scan Value 都一樣)。

我認為天底下的問題只有兩種,一種是目前可以解決的,另一種則是目前無法解決的。

很顯然的,我認為這個小尾巴是屬於前者的範疇!

今天還蠻早起來的,故想直接用 cat 抓 raw data 來看,畢竟我在 KoboPageTurner 專案就已經有相關經驗了,但不知為什麼,早上突然想用 PC Linux 來測試,想說順手用 evtest 來看一下,結果發現 Linux 版的 evtest  (1.34),居然可以判讀更多的 raw data,故可以一目了然的確定問題便是出在放開按鍵的事件沒錯。


Raw Data 長這樣(不同時間抓的)。


那我們要怎麼解決 kobo-btpt 收到兩次事件的問題?一個是我之前寫的 filter,過短時間內收到相同的 event 便忽略它,可惜的是一樣的 code 只在 Elipsa 生效,Libra 2 沒有辦法成功(後來發現自己耍笨,同時執行了原本的 kobo-btpt 及自己修改的版本)。另外一個則是希望 Kobo 的 Input Subsystem 也能收到 type 1, code 272 的事件,那我們只要在 value = 1(1 是按下,0 是放開)時觸發 Kobo 藍牙翻頁函式即可,換句話說,kobo-btpt config file 要如下設定,注意這裡都是 10 進制:

prevPage 1 272 1
nextPage 1 273 1

雖然我還沒測試,但我想八九不離十可以成功。

那這個跟我們的布袋戲標題有啥關係?

此招式是天宇一好漢的武功之一,我認為作學問也是如此,雖然我們從 Google 搜尋來的都是片斷屬於點的知識,但當你一點一滴的累積之後,知識自然會從點擴展到線,最後則變成面的學問。

因此,只要是屬於目前可以解決的問題,我希望都能把它搞懂,也許將來的某一天就會派上用場也說不定。

期許自己能夠永遠的不忘初心。

題外話:我想懂 Linux Input Subsystem 的人,應該會覺得這麼簡單的事,哪來這麼多感想XD

沒有留言: