当前位置: 首页>>技术教程>>正文


在 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/article/12277.html,未经允许,请勿转载。