slash key在QS原生的設計被賦與兩項功能。
功能一:長按0.25-0.5秒,pane1/pane3顯示root;長按超過0.5秒,pane1/pane3切進root。
功能二:「slash」與「shift + slash(其實是shift + ?)」扮演與「左箭頭」和「右箭頭」等效的功能。
因為中文keyboard layout上,slash代表「ㄥ」,要如何在維持「ㄥ」鍵權益與保留原初設計間取得平衡,是個很重要的議題。
在中文輸入法下,功能二是必定要捨棄的了。
所以考量的點只有,在英文輸入法下要保留功能二(維持原初設計),還是把功能二一併拿掉(保持一致性)?
issue #2: potential tidle key ('`') conflict
tidle key在中文輸入法沒有用到,理論上不成問題,只是擔心萬一哪個國家的keyboard layout用到tidle key,就必須考慮和slash key一樣的問題了。
issue #3: space bug (fixed)
之前發佈的
發現bug#1!Preference->Comman
這部份應該很可能修得好,當初改code時沒有太仔細研究原設計處理空白鍵的函式。
Normal的意思就是把空白鍵拿去搜尋,如此而已。keyDown -> insertSpace -> insertText:' '。
這個bug的來源是,insertText 呼叫 insertSpace,insertSpace又呼叫insertText,無窮function call直到stack爆掉為止。在修改insertSpace後,宣告解決。
issue #4: 計算機module
發現bug#2. 計算機module變得怪怪的
這個莫名的bug真的讓我頭皮發麻。按下'='鍵會跑去搜尋檔名有'='的檔案,而非交給計算機module處理。
與b63進行觀察比較後,發現這個bug根本的問題在於中文輸入法下根本無法開啟Text Mode,而計算機module僅僅是打開Text Mode罷了。
看了stringForEvent這個method,發現原來是QS自定的,之前還以為是系統函式庫ㄎㄎ。
把handleBoundKey還給keyDown後,就解決了。
但這又引出一個問題:'.'代表的「ㄡ」失效了。
應該把'.'移出DefaultBindings.qskeys嗎?
還是讓它在英文輸入法下繼續適用呢?
可是在DefaultBindings.qskeys中,'.'是唯一一個執行transmogrify:的key。
'"'和'''是conditionalTransmogrify:,或許'.'有它無可取代的地位吧?
issue #5: performance down
這是一個很大的隱憂阿!b63的反應速度十分令人滿意,但改過後會有稍微的延遲,少數勝過Alfred的優勢就少一個了>"<
Index不會變大,推測是花在搜尋的時間變長了。
或許要用profiling tool...?
-----
issue #1與issue #4的問題皆出在QS自定的DefaultBindings.qskeys,這種非官方的key binding實作了很強大的hacking,卻也帶來許多限制。
沒有留言:
張貼留言