當前位置: 首頁>>技術教程>>正文


在 Thinkpad 上使用軌跡點時如何禁用觸摸板?

, ,

問題描述

Thinkpad(例如我正在使用的 X230)同時具有軌跡點和觸摸板。打字時觸摸板被禁用。

然而,當我使用軌跡點時,我也經常觸摸觸摸板,並產生我想避免的鼠標點擊。有誰知道在使用軌跡點時如何在觸摸板上禁用 mouse-clicks?

編輯:另外,有人可以解釋一下打字時禁用觸摸板的選項是如何工作的嗎?幕後正在做什麽?它是一個 xinput 配置命令,如果是,是哪個?

EDIT2:澄清;手動禁用觸摸板(即使使用快捷方式)也不是這裏的問題。這應該像選項“打字時禁用觸摸板”一樣工作,因為我交替使用觸摸板和軌跡點(最常見的是,我使用觸摸板進行滾動,使用軌跡點移動光標)。

最佳思路

使用鍵盤時禁用觸摸板

此功能由 xserver-xorg-input-synaptics 包中的 syndaemon 實用程序執行。您可以設置空閑時間、輪詢頻率等選項(請參閱 runtime help ):


Usage: syndaemon [-i idle-time] [-m poll-delay] [-d] [-t] [-k]
  -i How many seconds to wait after the last key press before
     enabling the touchpad. (default is 2.0s)
  -m How many milli-seconds to wait until next poll.
     (default is 200ms)
  ...
  -t Only disable tapping and scrolling, not mouse movements.

Here’s the source code 代表 syndaemon.c

  • 重要的函數是 keyboard_activity(...)main_loop(...)

  • keyboard_activity 使用 XQueryKeyMap API 調用獲取鍵盤的當前狀態(每個鍵 1 位),然後與上一個(舊)狀態進行比較;如果它們不同,則返回 1

  • main_loopm 毫秒輪詢一次 keyboard_activity,並根據“上次活動時間”以及 keyboard_activity 返回 true 或 false 來決定是否禁用或啟用觸摸板。

  • dp_get_device 函數說明了如何枚舉 X 輸入設備;您應該能夠修改它和 keyboard_activity 函數以檢查任何跟蹤點活動。


  • xinput 工具列出設備和 ID,例如“虛擬核心指針 id=2 [主指針 (3)] ⎜ ↳ 虛擬核心 XTEST 指針 id=4 [從指針 (2)] ⎜ ↳ SynPS/2 Synaptics TouchPad id=11 [從指針(2)] ⎜ ↳ TPPS/2 IBM TrackPoint id=12 [從指針(2)]

  • 您可以通過 XListInputDevices 函數獲取此(ID)

  • 之後,您必須使用 XOpenDevice 從 ID 中獲取設備句柄

  • 然後,您使用 XQueryDeviceState 函數獲取 TrackPoint 指針的坐標;類似於現有的循環,您經常輪詢它並檢查坐標是否已更改(即正在使用 TrackPoint),並使用它來打開或關閉觸摸板

  • 您可以使用帶有 query-state 開關和設備 ID 的 xinput 實用程序來檢查您的編程是否正確,例如: $ xinput query-state 12 2 classes : ButtonClass button[1]=up button[2]=up button[3]=up button[4]=up button[5]=up button[6]=up button[7]=up ValuatorClass Mode=Relative Proximity=In valuator[0]=854 valuator[1]=867

  • 您對評估器值感興趣,即 TrackPoint 的 X 和 Y 坐標

  • 有關更多提示,請參閱 xinput 源代碼

  • 要修改和重建這個包:

    1. 使用 apt-get source... 獲取源代碼

    2. tools/syndaemon.c 進行修改

    3. 通過注釋掉 debian/patches/series 中的 118...124... 行來禁用現有的 syndaemon 補丁

    4. 使用 dpkg-buildpackage -us -uc 構建修改後的包,deb 文件將位於父目錄中。

次佳思路

要做的第一件事是知道您的觸摸板 ID。因此,請按照以下步驟操作

首先打開終端並運行此命令

~$ xinput --list

在這裏我們得到這個 Touchpad id = <id Number>

之後打開鍵盤快捷鍵,然後使用鍵盤快捷鍵在兩個命令下方添加此命令。

# Disable Touchpad:
xinput set-prop <id number> 'Device Enabled' 0

# Enable Touchpad:
xinput set-prop <id number> 'Device Enabled' 1

參考資料

本文由Ubuntu問答整理, 博文地址: https://ubuntuqa.com/zh-tw/article/12277.html,未經允許,請勿轉載。