12. N-Trig 觸控式螢幕驅動

版權:

© 2008-2010 Rafi Rubin <rafi@seas.upenn.edu>

版權:

© 2009-2010 Stephane Chatty

此驅動程式為 N-Trig 筆和多點觸控感測器提供支援。單點和多點觸控事件被轉換為 hid 和輸入系統的相應協議。筆事件充分符合 hid 規範,留給 hid 核心處理。該驅動程式還提供額外的過濾和實用程式功能,可以透過 sysfs 和模組引數訪問。

據報告,此驅動程式可以與連線的多個 N-Trig 裝置正常工作。

12.1. 引數

注意:載入時設定的值是全域性的,並將應用於所有適用的裝置。使用 sysfs 調整引數將覆蓋載入時設定的值,但僅適用於該裝置。

以下引數用於配置過濾器以減少噪聲

activate_slack

在處理事件之前要忽略的手指數量

activation_height, activation_width

立即啟用的大小閾值

min_height, min_width

大小閾值,低於該閾值手指將被忽略,以決定啟用以及活動期間

deactivate_slack

在傳播活動結束事件之前要忽略的“無接觸”幀數

當從裝置上移除最後一個手指時,它會發送一些空幀。透過延遲幾幀停用,我們可以容忍錯誤的斷開連線,即感測器可能會錯誤地檢測不到仍然存在的手指。因此,deactivate_slack 可以解決使用者在繪圖期間看到線條中斷或在長時間拖動期間丟棄物件的問題。

12.2. 其他 sysfs 項

這些節點只是提供對裝置報告的範圍的輕鬆訪問。

sensor_logical_height, sensor_logical_width

活動期間報告的位置範圍

sensor_physical_height, sensor_physical_width

未用於正常事件但可用於調優的內部範圍

所有產品 ID 為 1 的 N-Trig 裝置都在以下範圍內報告事件

  • X:0-9600

  • Y:0-7200

但是,並非所有這些裝置都具有相同的物理尺寸。大多數似乎是 12 英寸感測器(Dell Latitude XT 和 XT2 以及 HP TX2),並且至少一個型號(Dell Studio 17)具有 17 英寸感測器。物理尺寸與邏輯尺寸的比率用於調整基於尺寸的過濾器引數。

12.3. 過濾

隨著早期多點觸控韌體的釋出,越來越明顯的是,這些感測器容易發生錯誤事件。使用者報告說,他們看到了不適當地丟棄的接觸和幻影,即報告了實際上沒有手指觸控式螢幕幕的地方的接觸。

Deactivation slack 有助於防止單點觸控使用時的接觸丟失,但不能解決在其他接觸仍然有效時丟失一個或多個接觸的問題。多點觸控環境中的丟失需要額外的處理,並且應與跟蹤一起處理。

正如觀察到的那樣,幻影接觸類似於感測器的實際使用,但它們似乎具有不同的配置檔案。幻影活動通常表現為小而短促的觸控。因此,我假設事件的連續流越長,這些事件來自真實接觸的可能性就越大,並且每個接觸的大小越大,它就越真實。為了平衡防止幻影和快速接受真實事件的目標(以最大限度地減少使用者可觀察到的延遲),過濾器會累積傳入事件的置信度,直到達到閾值並開始傳播。為了儘量減少儲存狀態以及做出決策的操作成本,我保持該決策簡單。

時間是根據報告的手指數量來衡量的,而不是自上次幀開始的時間,因為多個同時幻影的機率預計會隨著數量的增加而急劇下降。我沒有將權重累積為大小的函式,而是僅將其用作二元閾值。足夠大的接觸會立即覆蓋等待期並導致啟用。

將啟用大小閾值設定為較大的值將主要決定啟用延遲。如果您看到持續時間較長的幻影,則在降低大小閾值的同時調高啟用延遲可能足以消除幻影,同時保持螢幕對穩固的點選非常敏感。

即使在滿足初始啟用過濾器之後,接觸仍然會使用 min_height 和 min_width 進行過濾。目的是提供一種機制,用於過濾掉額外的幻影手指,而您實際上正在使用螢幕。在實踐中,這種幻影的問題相對較少或相對罕見,我已將兩個引數的預設值都設定為 0,從而有效地關閉了該過濾器。

我不知道這些過濾器的最佳值是什麼。如果預設值不適合您,請嘗試使用這些引數。如果您確實發現其他值更舒適,我將不勝感激您的反饋。

這些裝置的校準會隨著時間的推移而漂移。如果幻影或接觸丟失惡化並干擾裝置的正常使用,請嘗試重新校準它。

12.4. 校準

N-Trig Windows 工具提供校準和測試例程。此外,還可以從以下網址獲取一套非官方、不受支援的使用者空間工具(包括校準器):http://code.launchpad.net/~rafi-seas/+junk/ntrig_calib

12.5. 跟蹤

到目前為止,所有經過測試的 N-Trig 韌體都不跟蹤手指。當多個接觸處於活動狀態時,它們似乎主要按 Y 位置排序。