Как отключить тачпад с помощью командной строки?

Есть ли способ отключить сенсорную панель с помощью команды терминала?

39
задан 6 June 2016 в 07:34

7 ответов

Чтобы выключить сенсорную панель:

synclient TouchpadOff=1

Чтобы снова включить ее:

synclient TouchpadOff=0
0
ответ дан 6 June 2016 в 07:34

Есть как минимум два метода (о которых я знаю), которые вы можете попробовать.

synclient

Если ваш ноутбук оснащен сенсорной панелью Synaptics (или ALPS), вы действительно можете использовать synclient, как уже упоминалось в Shutupsquare. Я использую Ubuntu 14.04, и на моей машине она была установлена ​​по умолчанию.

Проверить, установлен ли синхронизатор: synclient -V (он должен сообщать номер версии)

Включить сенсорную панель: synclient TouchpadOff=0

Выключить сенсорную панель: synclient TouchpadOff=1

[ 1135] Я сам не проверял это, но если ваша цель - не двигать мышь, когда ваши руки лежат на сенсорной панели, это может помочь.

Включить обнаружение ладони: synclient PalmDetect=1

Выключить обнаружение ладони: synclient PalmDetect=0

Как правило, вы можете настроить любое свойство сенсорной панели Synaptics с помощью synclient property=value. Где это свойство является одним из доступных свойств, показанных synclient -l

Ссылки для дальнейшего чтения

ubuntu - справка по удобству для пользователей - SynapticsTouchpad

archlinux - wiki - Сенсорная панель Synaptics

спрашивает Ubuntu - Как мне сохранить настройки моего синклиента? - Ubuntu

xinput

Если вы не хотите или не можете использовать 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.

Ссылки для дальнейшего чтения

ubuntu - wiki - input

ПРИМЕЧАНИЕ

При настройке свойств через xinput или synclient свойства не установлены для другого инструмента. Они также не установлены в едином контрольном центре.

0
ответ дан 6 June 2016 в 07:34

synclient и xinput не будет работать, если Вы будете использовать гнома (или единица, корица) среда, потому что она переопределит настройки, поэтому если Вы захотите synclient или xinput для принятия этих настроек необходимо отключить это сначала:

  1. установка dconf-editor если не установленный:

    apt-get install dconf-editor
    
  2. выполненный dconf-editor

    dconf-editor 
    
  3. откройте каталог /org/gnome/settings-daemon/plugins/mouse/ или /org/cinnamon/settings-daemon/plugins/mouse/, и не нажмите флажок для active.

  4. logout или reboot

Это должно сделать synclient или xinput работа.

4
ответ дан 6 June 2016 в 07:34
  1. Список устройств ввода:

    xinput list
    

    В моем случае у меня есть этот список:

    Virtual core XTEST pointer                  id=4
    Logitech M510                               id=11   
    ETPS/2 Elantech Touchpad                    id=15
    
  2. Отключить сенсорную панель передавая удостоверение личности

    xinput set-prop 15 "Device Enabled" 0
    
0
ответ дан 6 June 2016 в 07:34

В Gnome моя функциональная клавиша для переключения тачпада по какой-то причине не работала, поэтому я сделал скрипт, используя gsettings.

  • Преимущество: не зависит от поставщика
  • Недостаток: в Gnome щелчки тачпада (не касание) по-прежнему обрабатываются по какой-то причине, тогда как решение 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, но я не проверял.

0
ответ дан 6 June 2016 в 07:34

Я написал фрагмент кода на python, чтобы вы могли использовать технику xinput, не выполняя всю ручную работу. Copyleft, как есть, без гарантии, используйте на свой страх и риск. Прекрасно работает для меня: и если вы используете gnome, просто сопоставьте его с сочетанием клавиш, например Ctrl Shift T .

#!/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()
0
ответ дан 6 June 2016 в 07:34

Отключение любой сенсорной панели одной командой, подходит для скрипта.

xinput list |
  sed '/Touch[Pp]ad/!d; s/.*id=//;s/\s.*//' |
    xargs -i xinput --disable {}
0
ответ дан 7 December 2020 в 07:10

Другие вопросы по тегам:

Похожие вопросы: