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

Вопрос или проблема

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

Чтобы выключить тачпад:

synclient TouchpadOff=1

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

synclient TouchpadOff=0

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

synclient

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

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

Включить тачпад: synclient TouchpadOff=0

Выключить тачпад: synclient TouchpadOff=1

Я сам это не тестировал, но если ваша цель – не перемещать курсор, когда ваши руки отдыхают на тачпаде, это может помочь.

Включить определение ладоней: synclient PalmDetect=1

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

В общем, вы можете настроить любое свойство вашего тачпада Synaptics с помощью synclient свойство=значение. Где свойство – одно из доступных свойств, показанных с помощью synclient -l

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

ubuntu – вики помощи сообщества – SynapticsTouchpad

archlinux – вики – Touchpad Synaptics

ask ubuntu – Как сохранить настройки synclient? – Ubuntu

xinput

Если вы не хотите или не можете использовать synclient, вы также можете использовать xinput. Процедура довольно похожа.

Список всех устройств xinput: xinput

Часть вывода может выглядеть так:

⎡ Виртуальный основной указатель                          id=2    [основной указатель  (3)]
⎜   ↳ Виртуальный основной указатель XTEST               id=4    [вторичный указатель  (2)]
⎜   ↳ Logitech USB-PS/2 Оптическая мышь                 id=13   [вторичный указатель  (2)]
⎜   ↳ ETPS/2 Elantech Touchpad                          id=17   [вторичный указатель  (2)]

В данном случае мой тачпад имеет id=17, полное название – “ETPS/2 Elantech Touchpad”.

Команда для установки свойства – 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> ИЛИ xinput list-props <полное-имя>, это должно быть довольно похоже на synclient -l.

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

ubuntu – вики – ввода

ПРИМЕЧАНИЕ

При установке свойств через xinput или synclient, эти свойства не устанавливаются для другого инструмента. Они также не устанавливаются в unity-control-center.

synclient и xinput не будут работать, если вы используете окружение gnome (или unity, cinnamon), потому что оно будет переопределять настройки. Поэтому, если вы хотите, чтобы 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 работать.

Я написал кусок кода на Python (теперь обновленный с python2 до python3), чтобы вы могли использовать технику xinput без выполнения всей ручной работы. Copyleft, AS-IS, без гарантии, используйте на ваш страх и риск. У меня отлично работает: и если вы используете gnome, просто назначьте это на сочетание клавиш, например CtrlShiftT.

#!/usr/bin/python3
# -*- coding: utf-8 -*-
'''Программа для переключения состояния тачпада между включенным и выключенным.'''

from subprocess import check_output
import re

def current_id():
    """ Искать в выводе xinput и найти строку, содержащую
    слово Тачпад. На этом этапе, я думаю, мы можем найти ID этого устройства.
    """

    props = check_output(["xinput"]).decode("utf-8").splitlines()
    match = [line for line in props if "Touchpad" in line]
    assert len(match) == 1, "Проблема при поиске строки Touchpad! %s" % match

    pat = re.match(r"(.*)id=(\d+)", match[0])
    assert pat, "Не найдено соответствующее ID!"

    return int(pat.group(2))

def current_status(tpad_id):
    """ Найдите текущий ID устройства
        - в строке должно быть слово Touchpad."""

    props = check_output(
        ['xinput','list-props',str(tpad_id)]).decode("utf-8").splitlines()
    match = [line for line in props if "Device Enabled" in line]
    assert len(match) == 1, "Не удается найти статус устройства #%d" % tpad_id

    pat = re.match(r"(.*):\s*(\d+)", match[0])
    assert pat, "Не найдено соответствующее состояние!"
    return int(pat.group(2))

def flop(tpad_id, status):
    """Измените значение состояния и вызовите xinput, чтобы изменить это состояние."""
    if status == 0:
        status = 1
    else:
        status = 0

    print("Изменение устройства #",tpad_id," на состояние Device Enabled: ",status)
    props = check_output(['xinput',
                          'set-prop',
                          str(tpad_id),
                          'Device Enabled',
                          str(status)])

def main():
    """Получить текущий id устройства и статус, и поменять значение статуса."""
    tpad = current_id()
    stat = current_status(tpad)
    flop(tpad, stat)

main()

  1. Список ваших устройств ввода:

    xinput list
    

    В моем случае у меня есть следующий список:

    Виртуальный основной указатель XTEST                  id=4
    Logitech M510                               id=11   
    ETPS/2 Elantech Touchpad                    id=15
    
  2. Отключите ваш тачпад, передав ID

    xinput set-prop 15 "Device Enabled" 0
    

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

xinput list |
  sed '/Touch[Pp]ad/!d; s/.*id=//;s/\s.*//' |
    xargs -i xinput --disable {}

На 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():
    # строка, возвращаемая get, это репрезентация с кавычками,
    # но строка, отправляемая с помощью set, не должна иметь кавычек
    if get_touchpad_send_events() == b"'enabled'":
        newval="disabled"
    else:
        newval="enabled"
    subprocess.Popen(["gsettings", "set", gsettings_schema, gsettings_key, newval])
    print(f"Установлено {gsettings_schema}:{gsettings_key} на {newval}")

def main():
    toggle_touchpad()

if __name__ == '__main__':
    main()

Это также должно работать на Unity, но я не тестировал.

Используя gsettings (обновление для 2024 года), это решение не зависит от специфических методов или инструментов, которые в настоящее время устарели.

Чтобы отключить тачпад:

gsettings set org.gnome.desktop.peripherals.touchpad send-events disabled

Чтобы включить тачпад:

gsettings set org.gnome.desktop.peripherals.touchpad send-events enabled

Если вы хотите горячую клавишу для этого, подумайте о чем-то аналогичном ответу hsandt.

Ответ или решение

Чтобы отключить сенсорную панель (тачпад) через командную строку, вы можете использовать несколько методов, в зависимости от вашего дистрибутива Linux и установленного оборудования. Основные инструменты для управления сенсорными панелями через терминал — это synclient и xinput.

Метод 1: Использование synclient

Если ваша сенсорная панель поддерживает драйверы Synaptics или ALPS, вы можете использовать synclient для управления её настройками. Убедитесь, что synclient установлен на вашей системе, запустив следующую команду:

synclient -V

Если команда возвращает номер версии, значит, утилита установлена и готова к использованию. Чтобы отключить или включить сенсорную панель, выполните следующие команды:

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

Вы также можете включить или отключить распознавание ладони, используя следующие команды:

  • Включить распознавание ладони:
synclient PalmDetect=1
  • Отключить распознавание ладони:
synclient PalmDetect=0

Метод 2: Использование xinput

Если synclient недоступен или не подходит, вы можете воспользоваться xinput. Для этого выполните следующие команды:

  1. Сначала получите список всех устройств ввода:
xinput list
  1. Найдите ID вашей сенсорной панели в выводе. Например, если ваша панель имеет ID 17, то вы можете отключить её следующим образом:
  • Отключить сенсорную панель:
xinput set-prop 17 "Device Enabled" 0
  • Включить сенсорную панель:
xinput set-prop 17 "Device Enabled" 1

Если вы хотите отключить все сенсорные панели сразу, можно использовать следующую команду:

xinput list | sed '/Touch[Pp]ad/!d; s/.*id=//;s/\s.*//' | xargs -i xinput --disable {}

Использование gsettings в GNOME

В средах рабочего стола, таких как GNOME или Cinnamon, вы также можете использовать gsettings для управления настройками сенсорной панели:

  • Отключить сенсорную панель:
gsettings set org.gnome.desktop.peripherals.touchpad send-events disabled
  • Включить сенсорную панель:
gsettings set org.gnome.desktop.peripherals.touchpad send-events enabled

Примечания

  1. Если вы используете окружение GNOME или Unity, возможно, вам потребуется отключить некоторые из их настроек, чтобы эти команды работали. Например, вы можете использовать dconf-editor, чтобы отключить плагин мыши.

  2. Если вам нужно быстро переключать состояние сенсорной панели, вы можете создать скрипт на Python, который будет использовать xinput для автоматизации этого процесса.

Заключение

Вышеописанные методы позволяют вам отключить и включить сенсорную панель через командную строку на разных дистрибутивах Linux. Выберите тот, который подходит именно для вашего оборудования и окружения рабочего стола.

Оцените материал
Добавить комментарий

Капча загружается...