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

Thinkpad(例如我正在使用的X230)同时具有跟踪点和触摸板。 键入时触摸板被禁用。

但是,当我使用跟踪点时,我经常触摸触摸板,并生成我想要避免的鼠标点击。 有没有人知道在使用trackpoint时如何禁用触控板上的鼠标点击?

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

EDIT2:澄清; 手动禁用触摸板(即使使用快捷方式)也不是问题。 这应该像“键入时禁用触摸板”选项一样工作,因为我可以互换使用触摸板和Trackpoint(最常见的是,我使用触摸板进行滚动,使用Trackpoint来移动光标)。

在使用键盘时禁用触摸板

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

用法:syndaemon [-i idle-time] [-m poll-delay] [-d] [-t] [-k]
   -i在最后一次按键之后等待多长时间
     启用触控板。  (默认为2.0秒)
   -m等到下一次轮询要等多少毫秒。
      (默认为200毫秒)
   ...
   -t仅禁用点击和滚动,而不禁用鼠标移动。

这是 syndaemon.c 的源代码 。

  • 重要的function是keyboard_activity(...)main_loop(...)
  • keyboard_activity使用XQueryKeyMap API调用来获取键盘的当前状态(每个键1位),然后比较最后一个(旧)状态; 如果它们不同,则返回1
  • main_loop每隔m毫秒轮询一次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(ID)

  • 之后,您必须使用XOpenDevice从ID获取设备句柄
  • 然后,使用XQueryDeviceState函数获取TrackPoint指针的坐标; 类似于现有循环,您经常轮询这个并检查坐标是否已更改(即TrackPoint正在使用中),并使用它来打开或关闭触摸板
  • 您可以将xinput实用程序与query-state开关和设备ID一起使用,以检查您的编程是否正确,例如:

     $ xinput query-state 12
     2class:
     ButtonClass
    按钮[1] = UP
    按钮[2] = UP
    按钮[3] = UP
    按钮[4] = UP
    按钮[5] = UP
    按钮[6] = UP
    按钮[7] = UP
     ValuatorClass Mode = Relative Proximity = In
    赋值设备[0] = 854
    赋值设备[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 =

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

 # Disable Touchpad: xinput set-prop  'Device Enabled' 0 # Enable Touchpad: xinput set-prop  'Device Enabled' 1 

在此处输入图像描述在此处输入图像描述

这是一种低技术解决方案,可能对电源使用不利(syndaemon -T补丁对我不起作用)。

 #!/bin/sh TRACKPOINT_DEV="TPPS/2 IBM TrackPoint" SLEEP_TIME=5 OLD_XY=0,0, while true; do NEW_XY=`xinput query-state "$TRACKPOINT_DEV" |grep valu|awk 'BEGIN { FS = "=" } ; {print $2 ","}'|xargs` if [ ! "$OLD_XY" = "$NEW_XY" ]; then synclient TouchpadOff=1 else synclient TouchpadOff=0 fi sleep $SLEEP_TIME OLD_XY="$NEW_XY" done 

它必须有点幸运地注意到你正在使用跟踪点,因为它只能告诉每个5s间隔期间的坐标。 换句话说,禁用触摸板是保守的,但是当轨迹点空闲时不应该可靠地重新启用它。

无论如何,它对我的​​超极本有很大的帮助,手掌上有光标。