在 Thinkpad 上使用 trackpoint 时如何禁用触摸板?

Jan*_*ary 21 touchpad thinkpad trackpoint

Thinkpads(例如我使用的X230)有一个轨迹点和一个触摸板。打字时触摸板被禁用。

然而,当我使用轨迹点时,我也经常触摸触摸板,并产生我想避免的鼠标点击。有谁知道如何在使用轨迹点时禁用触摸板上的鼠标点击?

编辑:另外,有人可以解释一下打字时禁用触摸板的选项是如何工作的吗?幕后正在做什么?它是一个 xinput 配置命令,如果是,是哪个?

EDIT2:澄清;手动禁用触摸板(即使使用快捷方式)也不是这里的问题。这应该像选项“打字时禁用触摸板”一样工作,因为我交替使用触摸板和轨迹点(最常见的是,我使用触摸板进行滚动,使用轨迹点移动光标)。

ish*_*ish 10

使用键盘时禁用触摸板

此功能由syndaemon实用程序从xserver-xorg-input-synaptics包中执行。您可以设置诸如空闲时间、轮询频率等选项(请参阅运行时帮助):

用法:syndaemon [-i idle-time] [-m poll-delay] [-d] [-t] [-k]
  -i 最后一次按键后等待的秒数
     启用触摸板。(默认为 2.0 秒)
  -m 等待下一次轮询的毫秒数。
     (默认为 200 毫秒)
  ...
  -t 仅禁用点击和滚动,而不是鼠标移动。

这里的源代码syndaemon.c

  • 重要的功能是keyboard_activity(...)main_loop(...)
  • keyboard_activity使用XQueryKeyMap API 调用获取键盘的当前状态(每个键 1 位),然后与上次(旧)状态进行比较;如果它们不同,则返回 1
  • main_loopkeyboard_activitym毫秒轮询一次,并根据“上次活动时间”以及是否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),并使用它来打开或关闭触摸板
  • 您可以使用xinput带有query-state开关和设备 ID的实用程序来检查您的编程是否正确,例如:

    $ xinput 查询状态 12
    2个班级:
    按钮类
    按钮[1]=向上
    按钮[2]=向上
    按钮[3]=向上
    按钮[4]=向上
    按钮[5]=向上
    按钮[6]=向上
    按钮[7]=向上
    ValuatorClass 模式=Relative Proximity=In
    估价员[0]=854
    估价员[1]=867
    
  • 您对评估器值感兴趣,即 TrackPoint 的 X 和 Y 坐标
  • 请参阅xinput来源以获取更多提示
  • 要修改和重建这个包:

    1. 获取源 apt-get source...
    2. 进行修改 tools/syndaemon.c
    3. syndaemon通过注释掉118...124...行来禁用现有补丁debian/patches/series
    4. 使用 构建修改后的包,dpkg-buildpackage -us -ucdeb 文件将位于父目录中。


new*_*ser 5

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

首先打开终端并运行此命令

~$ xinput --list
Run Code Online (Sandbox Code Playgroud)

在这里我们得到这个 Touchpad id = <id Number>

之后打开键盘快捷键,然后使用键盘快捷键在两个命令下方添加此命令。

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

# Enable Touchpad:
xinput set-prop <id number> 'Device Enabled' 1
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明 在此处输入图片说明