[S7換機紀錄] 完全自訂S7的實體按鍵

從M7換到M8的時候其實我有點不習慣虛擬按鍵,但用久了覺得螢幕上的虛擬按鍵(on-screen buttons或是navigation bar)真的是比較理想的設計,不但可以由使用者自訂按鍵的順序,或是新增非預設的功能鍵,同時也免除了實體按鍵(capacitive buttons)損耗的風險,反應時間也比較理想(這個其實我不太確定,但我個人感覺是這樣)。

但總之,S7用的是實體按鍵,而且內建也沒有可以調整按鍵順序的功能,因此也只好找其他工具來調整了。說實話,實體按鍵不給更改也是合理的做法,畢竟圖案就印在上面,對不那麼執著的絕大多數使用者來說,可以互換才奇怪勒。但對想完全掌控手機的人來說就不是這樣了... 系統內建不能更改,三星root又直接破保,在不修改系統的情況下自訂按鍵雖然可行,但都是不完美的解決方案。

好了,先從Home鍵講起吧。

關於想要可以碰到就算觸發Home鍵這件事情,如果你做了一些搜尋的話,應該會首先發現easyHome這個App。不過雖然這個App宣稱是對Samsung Galaxy系列最佳化的,我實際使用的過程卻覺得它很容易就失效,時好時壞的,非常不穩定,這樣我實在不如接受按壓Home鍵這種事情算了,至少它一定會觸發啊。

後來我又陸陸續續找了幾款類似的App,其中一個是我曾經在XDA上看過的Fingerprint Gestures。畢竟是在XDA上看到的,因此信任度也比較高一點。這款的穩定度其實也不佳,但是它卻支援超多功能,而且是只要任何有指紋辨識的裝置都可以使用。

但穩定度實在是太重要了,我一點也不希望在我明明按到的時候卻什麼事情也沒發生,最後終於讓我找到了Finger Home Gestures這個App,極度穩定,任何狀況下都可以觸發,從來沒有一次失效的。不過相較於前兩者來說,這個App的功能真的非常陽春,就是只有Touch跟Swipe Up兩種動作可以定義。但穩定度大於一切,最後我留下了這個App。

值得注意的是,easyHome看起來似乎跟後兩者的原理不太一樣。後兩者都是調用到指紋辨識的功能來處發Home鍵效果,甚至可以在只有辨識到正確指紋的時候才起作用。但easyHome看起來卻是發現了Galaxy的指紋辨識器中心處有個sensor,並且用這個sensor當作判斷的依據。衡量起來,假如這是真的,代表easyHome可以不用讓指紋辨識功能一直開著,對於電量跟系統loading應該都比較友善。所以雖然它現階段看起來還是非常不穩定,我還是決定也把它留下來,看看日後的更新會不會有所改善。

2018 Jun. 21 Updated:
忘記上述所有處理Home鍵的App吧!雖然我確實持續使用Finger Home Gestures好一陣子,但它一直很困擾我的問題就是只要其他App需要使用指紋辨識作為其中的功能,例如以指紋取代密碼登入等,我就只能把那個App加入例外清單,所以在使用這些App時我就只能實際地按下Home鍵回到桌面。
後來我終於發現了Fingertouch這個App,基於Samsung SDK開發,沒有任何權限!直到最近一版 (1.2.9版, 2018 Jun. 19) 加入了開機時啟動、控制震動等功能,才有要求一些依然非常乾淨的權限。最了不起的是,這個App完全不需要本文末段提到的Accessibility Services,依然可以做到在其他App使用指紋辨識功能時自動停止4秒鐘的能力。也因此在我將Finger Home Gestures換成Fingertouch之後整支手機的使用流暢度大幅提升!試著用看看吧,我相信所有的S7使用者都會覺得這是神一般的App。
比較可惜的是不知為何原作者將Pro版從Play商店下架,我試著寄信詢問也沒有得到回覆。好在Pro版的功能幾乎全都在上述說到的這次更新中下放了,所以就開心使用吧。

接著來講這位置莫名的Back跟Recent鍵吧。

由於三星的Back跟Recent鍵跟絕大多數的Android裝置都是相反的,因此你只要稍微搜尋一下就會發現一堆人很希望把這兩顆按鍵互換,而你會找到的第一個App大概會是Buttons remapper。其實這個App也沒什麼不好的,只不過我後來找到了Button Mapper這個App,而且居然是由flar2這個製作了ElementalX kernel的知名開發者做的(ElementalX在M7上簡直是神一般的kernel),那當然是選Button Mapper啊!

我主要目的是將Back跟Recent鍵互換,這個功能在Button Mapper中是免費版就有的功能。如果你有需要其他更進階的功能,可以用66 NTD內購解鎖Pro版。當然互換兩顆按鍵還會遇到一個問題,那就是按鍵的光。因為預設的情況下,S7在按下Back或Recent鍵時會暫時亮起1.5秒,而這個短暫的發光會讓你明明把按鍵互換了,看到圖案的時候又變得極度混亂,因此我建議同時將這兩顆按鍵的LED燈保持常暗。奇怪的是... 這種事情系統居然沒有內建功能可以關掉,你得靠著flar2做的另一個App Button Light and Touch,或是其他類似的App比方說Galaxy Button Lights 2來做到這件事情。這兩個App都可以用,而且他們的權限都很乾淨,就是修改系統設定而已... 真奇怪了明明就是開放的系統設定到底三星為什麼不自己做個開關在系統裡真的是匪夷所思...

順帶一提,假如你的手機有root的話(顯然我的目前是沒有),最完美的解決方案是直接修改 /system/usr/keylayout/Generic.kl,將key 158改為APP_SWITCH、key 254改為BACK,詳情請見XDA上Switch back and multitasking buttons - root requiredSwap back and recent buttons這兩篇文章。

靠著以上的工具,你應該就可以完全自訂S7的實體按鍵了。

最後要提醒的是,這些工具都會需要開到Accessibility Services,而App其實可以透過Accessibility Services取得非常多資訊(會在你開啟特定App的Accessibility Services時跳出視窗告訴你這個App在開啟後可以取得什麼資訊,一般來說都是監控你當前開著的App啊、你按下的按鍵啊等等的)。因此,如果你對此有隱私疑慮,別忘記之前說的防火牆,這些App都是可以在完全沒有網路的狀況下運行的,就放心地將他們的網路存取權限都阻擋掉吧。

其實有許多有趣的Android功能,尤其是許多的自動化工具(ex: Tasker),都會像這樣需要開啟Accessibility Services。然而,除了上述提到的隱私問題外,Accessibility Services其實也是造成Android系統Lag的原因之一。在XDA上“Working As Intended” – An Exploration into Android’s Accessibility Lag這篇文章中就提到為什麼Accessibility Services會造成Lag的原因,而我想這大概也會造成系統額外的運算而讓裝置變得比較耗電吧。也就是說這其實是一種取捨,既然手機廠商不願意提供這種功能,使用者只能選擇在接受預設設定以及付出額外的代價下調整兩者間做選擇了。

只不過... 我原本也在懷疑是不是因為我開了Accessibility Services才會讓S7下面這三鍵的反應有點遲鈍,後來把Accessibility Services全關掉後才發現... S7這三鍵的反應時間本來就很不理想啊啊啊啊啊,三星的Slag難道是一開始就會被我發現的程度嗎...

留言

這個網誌中的熱門文章

[macOS High Sierra] 避免High Sierra將檔案系統升級為APFS

[S7換機紀錄] 如何減輕AMOLED傷害你的眼睛