Linux

解決有問題的鍵盤/破解輸入流?

  • October 4, 2015

當我oun快速鍵入鍵序列時,鍵序列oun<F12>由我的鍵盤發出。

(更新:實際上,您必須按住序列中的每個鍵才能觸發問題。如果在按 ‘u’ 之前釋放 ‘o’,則不會觸發問題)。

我在使用Google瀏覽器輸入網站時首先註意到了這個問題,並註意到開發者控制台會在輸入時隨機彈出。<F12>直到我輸入 vim 並突然出現在我的文本中時,我才弄清楚具體細節。

幾分鐘的實驗產生了以下結果:

  • 這是 100% 可重複的,每次
  • 它由鍵序列“oun”專門觸發
  • 在您按下第三個鍵時,必須仍然按下第一個鍵。在按下下一個鍵之前釋放每個鍵不會觸發問題(這就是為什麼只有在快速鍵入時才會遇到問題)。

作為開發人員,這似乎是一個需要解決的直截了當的問題(如果您按順序看到這四個輸入,則放棄第四個)。但是,我不知道從哪裡開始:Linux 上有哪些低級輸入流過濾可用,或者如何破解設備驅動程序等。

我的問題是,我將在哪裡實施這樣的改變?在核心中?是否有接受過濾器的鍵盤輸入處理機制?

額外細節:

這是在 HP ProBook 4530s(2011 年的商務筆記型電腦)上。我在 Windows 7 主機上的 VirtualBox VM 中執行 Debian 8。我還沒有啟動 Knoppix 來驗證問題在 100% 純 Linux 環境中仍然存在,但我非常有信心這是在作業系統級別以下發生的問題。

其他人在 2012 年用全新的 4530 報告了完全相同的問題(相同的鍵序列):http ://www.tomsguide.com/forum/75276-35-keys-activate-typing-help

更新:

我使用 Knoppix 引導 4530 並執行 xev 以確認這是一個硬體問題。這是輸出的摘錄,您可以在其中看到oun<F12>序列:https ://gist.github.com/cellularmitosis/018d822e5ccc5c1a64e6

更新 2:

好吧,我很幸運,BIOS 更新足以解決問題。請參閱http://h20564.www2.hp.com/hpsc/swd/public/detail?sp4ts.oid=5060881&swItemId=ob_146941_1&swEnvOid=4059

我接受了 Dmitry 的回答,因為如果 BIOS 更新沒有解決問題,我接下來會嘗試這樣做。

GitHub 上有一個名為inputty的項目,它可以完成您想要實現的目標 - 它從真實的 HID 設備讀取 evdev 事件並創建 uinput 設備來模擬虛擬 HID 硬體。例如,這是一個qml 腳本,它添加了一個虛擬鍵盤,它在真實鍵盤上的x按鍵之後輸出額外的按鍵。f

你應該能夠用它來實現你的算法,或者F12如果你可以不用它就放棄它。

引用自:https://unix.stackexchange.com/questions/233506