Answers:
要关闭触摸板:
synclient TouchpadOff=1
要重新打开它:
synclient TouchpadOff=0
(我知道)至少可以尝试两种方法。
如果您的笔记本电脑配备了Synaptics(或ALPS)触摸板,那么您确实可以synclient
按照Shutupsquare所述使用。我正在运行Ubuntu 14.04,并且在我的计算机上默认安装了它。
测试是否安装了synclient :(synclient -V
应报告版本号)
打开触摸板: synclient TouchpadOff=0
关闭触摸板: synclient TouchpadOff=1
我自己尚未对此进行测试,但是如果您的目标是在手臂放在触摸板上时不移动鼠标,则可能会有所帮助。
打开手掌检测: synclient PalmDetect=1
关闭手掌检测: synclient PalmDetect=0
通常,您可以通过来配置Synaptics触摸板的任何属性synclient property=value
。该属性是以下所示的可用属性之一synclient -l
ubuntu-商品帮助Wiki-SynapticsTouchpad
archlinux-Wiki-触摸板突触
问ubuntu-如何使我的synclient设置生效?-Ubuntu
如果您不希望或不能使用synclient,也可以使用xinput
。程序有点类似。
列出所有xinput设备: xinput
输出的一部分可能看起来像这样:
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Logitech USB-PS/2 Optical Mouse id=13 [slave pointer (2)]
⎜ ↳ ETPS/2 Elantech Touchpad id=17 [slave pointer (2)]
在这种特殊情况下,我的触摸板具有id = 17,其全名是“ ETPS / 2 Elantech触摸板”。
设置属性的命令为xinput set-prop
。启用或禁用触摸板的属性是Device Enabled
,因此要启用或禁用触摸板,请输入:
关闭触摸板:xinput set-prop <id> "Device Enabled" 1
(这里<id>
是你的设备ID,在我的情况17)
关闭触摸板: xinput set-prop <id> "Device Enabled" 0
打开手掌检测: xinput set-prop <id> "Palm Detection" 1
关闭手掌检测: xinput set-prop <id> "Palm Detection" 0
要查询可用属性:xinput list-props <id>
OR xinput list-props <full-name>
,这应该与相当相似synclient -l
。
通过其中一个设置属性时,xinput
或未synclient
将属性设置为其他工具。它们也未设置在unity-control-center中。
synclient
没有为我工作,xinput
做了。
xinput
id可以在重启后更改。因此,依靠脚本或快捷方式中的这些ID无效。
synclient
完全可以在Arch Linux上使用。谢谢你这么多!
xinput <enable/disable> <id>
,因为TouchpadOff
via 设置synclient
无效。
xinput
。我的内置键盘和轨迹点按钮让我有些吃惊,显然是在发送不良输入,从而干扰了外部键盘的输入。这使我可以禁用内置设备。干杯! :)
synclient
并且xinput
在使用gnome(或unity,cinnamon)环境时将不起作用,因为它将覆盖设置,因此,如果要synclient
或xinput
接管这些设置,则应首先禁用该设置:
安装dconf-editor
如果没有安装:
apt-get install dconf-editor
跑 dconf-editor
dconf-editor
打开目录/org/gnome/settings-daemon/plugins/mouse/
或/org/cinnamon/settings-daemon/plugins/mouse/
,然后单击的复选框active
。
logout
要么 reboot
这应该使synclient
或xinput
工作。
列出您的输入设备:
xinput list
就我而言,我有以下列表:
Virtual core XTEST pointer id=4
Logitech M510 id=11
ETPS/2 Elantech Touchpad id=15
通过传递ID禁用触摸板
xinput set-prop 15 "Device Enabled" 0
xinput enable [device]
和xinput disable [device]
。但是,在编写脚本时,使用起来set-prop [device] "Device Enabled" [value]
可能会容易一些,如World Python Developer的回答。
我编写了一段python代码,以便您xinput
无需进行所有手动工作即可使用该技术。版权所有,Copyleft,按原样,不保证,使用后果自负。对我来说很棒:如果您使用的是gnome,只需将其映射到诸如的快捷键即可CtrlShiftT。
#!/usr/bin/python2
# -*- coding: utf-8 -*-
'''Program to toggle Touchpad Enable to Disable or vice-versa.'''
import commands
import re
def current_id():
""" Search through the output of xinput and find the line that has the
word TouchPad. At that point, I believe we can find the ID of that device."""
props = commands.getoutput("xinput").split("\n")
match = [line for line in props if "TouchPad" in line]
assert len(match) == 1, "Problem finding Touchpad string! %s" % match
pat = re.match(r"(.*)id=(\d+)", match[0])
assert pat, "No matching ID found!"
return int(pat.group(2))
def current_status(tpad_id):
"""Find the current Device ID, it has to have the word TouchPad in the line."""
props = commands.getoutput("""xinput list-props %d""" % tpad_id).split('\n')
match = [line for line in props if "Device Enabled" in line]
assert len(match) == 1, "Can't find the status of device #%d" % tpad_id
pat = re.match(r"(.*):\s*(\d+)", match[0])
assert pat, "No matching status found!"
return int(pat.group(2))
def flop(tpad_id, status):
"""Change the value of status, and call xinput to reverse that status."""
if status == 0:
status = 1
else:
status = 0
print "Changing Device #%d Device Enabled %d" % (tpad_id, status)
commands.getoutput("""xinput set-prop %d "Device Enabled" %d""" % (tpad_id, status))
def main():
"""Get curent device id and status, and flop status value."""
tpad = current_id()
stat = current_status(tpad)
flop(tpad, stat)
main()
在Gnome上,由于某些原因,切换触摸板的功能键不起作用,因此我使用gsettings编写了脚本。
xinput
解决方案完全可以按预期停用触摸板。如果像我一样,您唯一的问题是键入时不小心移动了光标,这足够了。toggle_touchpad_gsettings.py
#!/usr/bin/python3.6
import sys
import subprocess
gsettings_schema, gsettings_key = "org.gnome.desktop.peripherals.touchpad", "send-events"
def get_touchpad_send_events():
send_events_value = subprocess.check_output(["gsettings", "get", gsettings_schema, gsettings_key])
return send_events_value.strip()
def toggle_touchpad():
# string returned from get is a repr including quotes,
# but string sent with set does not need to have quotes
if get_touchpad_send_events() == b"'enabled'":
newval = 'disabled'
else:
newval = 'enabled'
subprocess.Popen(["gsettings", "set", gsettings_schema, gsettings_key, newval])
print(f"Set {gsettings_schema}:{gsettings_key} to {newval}")
def main():
toggle_touchpad()
if __name__ == '__main__':
main()
它也可以在Unity上工作,但我尚未测试。