cjxgm
(兰威举)
1
原问题:
入手了一台 thinkpad,今天刚装 arch
按照各路前辈的做法 proto=bare 之后 trackpoint 是可以用了,touchpad 的边缘滚动、两指滚动都不能用;
去掉 proto=bare 之后,按照 wiki 配置就可以边缘滚动、两指滚动、两指模拟右键、三指模拟中键、手掌识别……但是 trackpoint 没反应
有办法让两者都可以(完美地)使用么?
(由于需要使用各种作图软件,中键点击拖拽和中键滚动同等重要,所以……)
2014-05-18 更新:
yaourt -S elantech-tp-dkms
$ xinput
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ TPPS/2 IBM TrackPoint id=12 [slave pointer (2)]
⎜ ↳ ETPS/2 Elantech Touchpad id=13 [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)]
↳ Video Bus id=8 [slave keyboard (3)]
↳ Sleep Button id=9 [slave keyboard (3)]
↳ Integrated Camera id=10 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=11 [slave keyboard (3)]
↳ ThinkPad Extra Buttons id=14 [slave keyboard (3)]
(此AUR包上传于 2014-01-05)
依云
(lilydjwg)
2
touchpad 和 trackpoint 有关系么?
「中键点击拖拽和中键滚动同等重要」+1
什么型号的?我这里只需要两步
# pacman -S xf86-input-synaptics
新建文件
/etc/X11/xorg.conf.d/10-wheel.conf
内容为
Section "InputClass"
Identifier "Trackpoint Wheel Emulation"
MatchProduct "TPPS/2 IBM TrackPoint|DualPoint Stick|Synaptics Inc. Composite TouchPad / TrackPoint|ThinkPad USB Keyboard with TrackPoint|USB Trackpoint pointing device|Composite TouchPad / TrackPoint"
MatchDevicePath "/dev/input/event*"
Option "EmulateWheel" "true"
Option "EmulateWheelButton" "2"
Option "Emulate3Buttons" "false"
Option "XAxisMapping" "6 7"
Option "YAxisMapping" "4 5"
EndSection
cjxgm
(兰威举)
6
proto=bare 之前识别为 ETPS/2 Elantech Touchpad
proto=bare 之后识别为 PS/2 Generic Mouse
依云
(lilydjwg)
10
>>> xinput
⎡ 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)]
↳ Power Button id=8 [slave keyboard (3)]
↳ Integrated Camera id=9 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=10 [slave keyboard (3)]
↳ ThinkPad Extra Buttons id=13 [slave keyboard (3)]
看 11 和 12,两个哦=w=
cjxgm
(兰威举)
11
新机型合二为一了喵
现在都不是SynPS+TPPS了,是 elantech 的什么输入设备
cjxgm@cjprods ~$ dmesg | grep elantech
[ 6.902814] psmouse serio1: elantech: assuming hardware version 3 (with firmware version 0x350f02)
[ 6.913948] psmouse serio1: elantech: Synaptics capabilities query result 0xb9, 0x15, 0x0c.
cjxgm@cjprods ~$ xinput
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ ETPS/2 Elantech Touchpad 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)]
↳ Video Bus id=8 [slave keyboard (3)]
↳ Sleep Button id=9 [slave keyboard (3)]
↳ Integrated Camera id=10 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=11 [slave keyboard (3)]
↳ ThinkPad Extra Buttons id=13 [slave keyboard (3)]
你是啥型号的机器啊..别跟我讲是E系列的。E的还是乖乖用win吧。
TP X201i
phoenix@Phoenix-X201i ~ % xinput
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Lenovo ThinkPad USB Laser Mouse id=9 [slave pointer (2)]
⎜ ↳ SynPS/2 Synaptics TouchPad id=13 [slave pointer (2)]
⎜ ↳ TPPS/2 IBM TrackPoint id=14 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=10 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Sleep Button id=8 [slave keyboard (3)]
↳ ThinkPad Extra Buttons id=11 [slave keyboard (3)]
↳ Integrated Camera id=12 [slave keyboard (3)]
发现兼容性不好的硬件,建议到 https://bbs.archlinuxcn.org/viewtopic.php?id=1907 这里写一下。
cjxgm
(兰威举)
14
中键问题的解决方案:
目标:按下中键,1秒内移动就是拖拽,1秒后移动就是滚动。
研究了一个下午+晚上(尝试过 Xlib → Xcb → 完全屏蔽鼠标然后完全由我的程序处理 → Xlib XInput 扩展 → 最后才发现原来可以只处理中键),终于搞定了。程序托管在 GitHub 上:https://github.com/cjxgm/hiddle
原理:先用 xinput set-button-map 屏蔽鼠标中键,然后读取 /dev/input/mice 获取鼠标数据,处理后用 libxdo (xdotool)发送鼠标事件。
兼容性列表明天再写吧,今天太迟了喵……
cjxgm
(兰威举)
17
yaourt -S elantech-tp-dkms
$ xinput
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ TPPS/2 IBM TrackPoint id=12 [slave pointer (2)]
⎜ ↳ ETPS/2 Elantech Touchpad id=13 [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)]
↳ Video Bus id=8 [slave keyboard (3)]
↳ Sleep Button id=9 [slave keyboard (3)]
↳ Integrated Camera id=10 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=11 [slave keyboard (3)]
↳ ThinkPad Extra Buttons id=14 [slave keyboard (3)]
(此AUR包上传于 2014-01-05)