Як відключити тачпад за допомогою командного рядка?


Відповіді:


55

Щоб вимкнути сенсорну панель:

synclient TouchpadOff=1

Щоб увімкнути його:

synclient TouchpadOff=0

Просто, але перейти до справи.
Аде Мальсаса Акбар

7
не працює на моєму комп’ютері ...
Casper

Цікаво, добре знати.
aleroxac

2
Команда виконувалася без помилок на моєму Ubuntu 14.04 LTS на Dell XPS 13, але не мала ефекту.
IJ Kennedy

Перемикати було б добре - я хотів би встановити це як скорочення або щось таке. А ще краще, коли він стикується, я хочу вимкнути тачпад
Крістіан Бонгіорно

22

Є щонайменше два методи (які я знаю), які ви можете спробувати.

синклієнт

Якщо ваш ноутбук оснащений сенсорною панеллю 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

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)

Вимкніть тачпад: 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 - введення

ПРИМІТКА

При встановленні властивостей через один xinputабо synclientвластивості не встановлені для іншого інструменту. Вони також не встановлені в центрі єдності-контролю.


1
Дякую за другу відповідь. synclientне працював для мене, xinputзробив.
Робін Уінслоу

1
Зауважте, що xinputідентифікатори можуть змінюватися під час перезавантаження. Тож покладатися на ці ідентифікатори у скриптах чи ярликах не вийде.
Лоде

synclientповністю працює на Arch Linux. Дякую так багато !!!
Теодор Р. Сміт

Це зробив це для мене. Зокрема, я виявив, що мені потрібно запустити xinput <enable/disable> <id>, оскільки налаштування TouchpadOffчерез synclientбуло неефективним.
Майкл Мол

Дякую за вступ до xinput. Я трохи переймався моїми вбудованими клавішами клавіатури та шляхової точки, мабуть, посилаючи погані входи, які заважали вводу з зовнішньої клавіатури. Це дозволило відключити вбудовані пристрої. Ура! :)
sjakobi

4

synclientі xinputне працюватиме, якщо ви використовуєте середовище gnome (або єдність, кориця), оскільки це буде перекривати налаштування, тому, якщо ви хочете 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працювати.


1
  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
    

Вводячи вручну, ви можете використовувати xinput enable [device]та xinput disable [device]безпосередньо. Хоча в сценаріях використання, set-prop [device] "Device Enabled" [value]можливо, буде трохи простіше, як у відповіді розробника World Python.
hsandt

1

Я написав фрагмент коду python, щоб ви могли використовувати xinputтехніку, не виконуючи всіх ручних робіт. Copyleft, AS-IS, гарантії немає, використовуйте на свій страх і ризик. Для мене це чудово підходить: і якщо ви використовуєте 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()

0

У 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, але я не пройшов тестування.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.