Есть ли способ отключить сенсорную панель с помощью команды терминала?
Чтобы выключить сенсорную панель:
synclient TouchpadOff=1
Чтобы снова включить ее:
synclient TouchpadOff=0
Есть как минимум два метода (о которых я знаю), которые вы можете попробовать.
Если ваш ноутбук оснащен сенсорной панелью Synaptics (или ALPS), вы действительно можете использовать synclient
, как уже упоминалось в Shutupsquare. Я использую Ubuntu 14.04, и на моей машине она была установлена по умолчанию.
Проверить, установлен ли синхронизатор: synclient -V
(он должен сообщать номер версии)
Включить сенсорную панель: synclient TouchpadOff=0
Выключить сенсорную панель: synclient TouchpadOff=1
Включить обнаружение ладони: synclient PalmDetect=1
Выключить обнаружение ладони: synclient PalmDetect=0
Как правило, вы можете настроить любое свойство сенсорной панели Synaptics с помощью synclient property=value
. Где это свойство является одним из доступных свойств, показанных synclient -l
ubuntu - справка по удобству для пользователей - SynapticsTouchpad
archlinux - wiki - Сенсорная панель Synaptics
спрашивает Ubuntu - Как мне сохранить настройки моего синклиента? - 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 Touchpad".
Команда для установки свойства - xinput set-prop
. Свойство для включения или отключения сенсорной панели имеет значение Device Enabled
, поэтому для включения или отключения ее введите:
Включить сенсорную панель: xinput set-prop <id> "Device Enabled" 1
(где <id>
- идентификатор вашего устройства, в моем случае 17) [ 1147]
Выключить сенсорную панель: 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>
ИЛИ xinput list-props <full-name>
, это должно быть очень похоже на synclient -l
.
При настройке свойств через xinput
или synclient
свойства не установлены для другого инструмента. Они также не установлены в едином контрольном центре.
synclient
и xinput
не будет работать, если Вы будете использовать гнома (или единица, корица) среда, потому что она переопределит настройки, поэтому если Вы захотите 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
Отключить сенсорную панель передавая удостоверение личности
xinput set-prop 15 "Device Enabled" 0
В 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, но я не проверял.
Я написал фрагмент кода на python, чтобы вы могли использовать технику xinput
, не выполняя всю ручную работу. Copyleft, как есть, без гарантии, используйте на свой страх и риск. Прекрасно работает для меня: и если вы используете gnome, просто сопоставьте его с сочетанием клавиш, например Ctrl kbd> Shift kbd> T kbd>.
#!/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()
Отключение любой сенсорной панели одной командой, подходит для скрипта.
xinput list |
sed '/Touch[Pp]ad/!d; s/.*id=//;s/\s.*//' |
xargs -i xinput --disable {}