Thinkpad T480s 有一个“触摸板”:触摸板(部分)本身是可按下的,而不是物理专用按钮。
运行X.org 7.7,触摸板底部有一个水平条纹,充当鼠标按钮1、2和3(即左、中、右);基本上它看起来像这样:
+-----------------+
| |
| |
| |
| |
|11111 22222 33333|
|11111 22222 33333|
+-----------------+
如何禁用按钮 2 并将该区域重新分配到按钮 1 和 3 之间?即我想要以下布局:
+-----------------+
| |
| |
| |
| |
|11111111 33333333|
|11111111 33333333|
+-----------------+
笔记这个问题不同于mtrack:如何获取垂直按钮区域?因为我试图在 XInput 的上下文中执行此操作,而不是 mtrack。另外,硬件不是 Synaptics。
有问题的硬件由 XInput 识别为
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ ETPS/2 Elantech Touchpad id=11 [slave pointer (2)]
⎜ ↳ ETPS/2 Elantech TrackPoint id=12 [slave pointer (2)]
答案1
如果我输入:
$ xinput get-button-map 'DLL07BF:01 06CB:7A13 Touchpad'
我得到: 1 2 3 4 5 6 7
我尝试使用:
$ xinput set-button-map 13 1 2 0 4 5 6 7
它禁用了中键和右键单击。
答案2
一旦您弄清楚哪个数字对应于哪个按钮,您就可以用左键单击代替中键单击。
就我而言,第二个数字映射到中键单击:
1 2 3 4 5 6 7
^
所以这用左键单击代替:
xinput set-button-map x 1 1 3 4 5 6 7
x
从xinput中获取的id在哪里
答案3
您可以轻松地使用中间的“按钮”来停止注册,如下所示:
xinput set-button-map 11 1 2 0 4 5 6 7 8 9 10 11 12
这里的第一个参数指定设备 ID(在本例中为 11,基于您上面发布的输出xinput
),而其余参数则将按钮映射到功能。前两个是左按钮和右按钮(1 和 2 是常规单击和上下文菜单),第三个是中间按钮(通常将其设置为3
,但0
告诉 xinput 将其映射到任何内容),而休息覆盖其他东西(滚动等)。
调整其他两个按钮以覆盖垫的整个底部有点棘手,实际上可能是不可能的。像这样的触控板的工作原理是在触控板下方有一个触发点击的开关,然后观察手指在触控板上的位置以确定将其注册为哪个按钮。可以通过三种不同的方式来处理此问题:
- 在垫本身的固件中,没有配置选项。
- 在垫本身的固件中,带有配置选项。
- 在驱动程序的用户空间部分。
第二种方法仅适用于设备未通过旧的 PS/2 样式串行连接进行连接的情况(您的设备可能以这种方式连接,大多数 Thinkpad 都是这样)。 Synaptics 使用方法 3 来实现此目的,并为几乎所有内容提供了大量配置选项。我不确定 Elantech 如何处理它,但我猜这可能是第一种情况,除非它是 USB 或 I2C 连接设备,在这种情况下,技术上它是第三种情况,尽管我很确定他们没有针对 X 的特殊输入驱动程序。
答案4
1. 查找身份证
您的触摸板的xinput list
:
$ xinput list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ SynPS/2 Synaptics TouchPad id=11 [slave pointer (2)]
⎜ ↳ TPPS/2 IBM TrackPoint id=12 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Sleep Button id=8 [slave keyboard (3)]
↳ Integrated Camera: Integrated C id=9 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=10 [slave keyboard (3)]
↳ ThinkPad Extra Buttons id=13 [slave keyboard (3)]
显然,那个叫做“... TouchPad”的有id=11
.
2.获取底部图
与身份证:
xinput get-button-map 11
1 2 3 4 5 6 7
3.尝试设置新的按钮映射
现在你必须通过反复试验来弄清楚按钮图的含义。您通常可以假设 1 是左键单击操作。首先要尝试的是猜测第二个位置是底部中间的按钮。将其替换为左键单击操作 ( 1
):
$ xinput set-button-map 11 1 1 3 4 5 6 7
^
4. 检查它是否有效
谢谢亚当的回答(这启发了这一点)我只需要一次尝试就可以得到我想要的结果:
+-----------------+
| |
| |
| |
| |
|11111 11111 33333|
|11111 11111 33333|
+-----------------+
也就是说,底部条纹的左侧三分之二充当左按钮,而右侧三分之一充当右侧按钮。
5.如果不起作用怎么办?
尝试用与步骤 3 类似的按键替换按钮图的其他部分。1
查看触摸板的反应。如果您无法获得所需的结果,请将按钮映射重置为您在步骤 1 中获得的值,以恢复原始行为。
笔记
我在 ThinkPad T570 上运行了这个,但它应该适用于大多数触摸板。