Bagaimana cara menonaktifkan touchpad menggunakan baris perintah?


Jawaban:


55

Untuk mematikan panel sentuh:

synclient TouchpadOff=1

Untuk mengaktifkannya kembali:

synclient TouchpadOff=0

Sederhana tapi langsung ke intinya.
Ade Malsasa Akbar

7
tidak bekerja di komputer saya ...
Casper

Menarik, senang tahu.
aleroxac

2
Perintah dijalankan tanpa kesalahan pada Ubuntu 14.04 LTS saya pada Dell XPS 13 tetapi tidak berpengaruh.
IJ Kennedy

Beralih akan menyenangkan - Saya ingin mengaturnya sebagai jalan pintas atau sesuatu. Lebih baik lagi, ketika sudah merapat, saya ingin touchpad dimatikan
Christian Bongiorno

22

Setidaknya ada dua metode (yang saya tahu) yang bisa Anda coba.

sinkronisasi

Jika laptop Anda dilengkapi dengan touchpad Synaptics (atau ALPS), Anda memang dapat menggunakannya synclient sebagaimana telah disebutkan oleh Shutupsquare. Saya menjalankan Ubuntu 14.04 dan pada mesin saya diinstal secara default.

Uji apakah sinkronisasi diinstal: synclient -V (harus melaporkan nomor versi)

Aktifkan touchpad: synclient TouchpadOff=0

Matikan touchpad: synclient TouchpadOff=1

Saya belum mengujinya sendiri, tetapi jika tujuan Anda adalah untuk tidak menggerakkan mouse saat lengan Anda diletakkan di atas bantalan sentuh, ini mungkin membantu.

Nyalakan deteksi telapak tangan: synclient PalmDetect=1

Nonaktifkan deteksi telapak tangan: synclient PalmDetect=0

Secara umum Anda dapat mengkonfigurasi properti apa pun dari touchpad Synaptics Anda dengan synclient property=value. Di mana properti adalah salah satu properti yang tersedia ditunjukkan olehsynclient -l

Tautan untuk bacaan lebih lanjut

ubuntu - comminity help wiki - SynapticsTouchpad

archlinux - wiki - Touchpad Synaptics

ask ubuntu - Bagaimana cara membuat pengaturan sinkronisasi saya tetap? - Ubuntu

xinput

Jika Anda tidak ingin atau tidak dapat menggunakan sinkronisasi, Anda juga bisa menggunakan xinput. Prosedurnya agak mirip.

daftar semua perangkat xinput: xinput

Bagian dari ouput dapat terlihat seperti ini:

⎡ 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)]

Dalam kasus khusus ini touchpad saya memiliki id = 17 dan nama lengkapnya adalah "ETPS / 2 Elantech Touchpad".

Perintah untuk mengatur properti adalah xinput set-prop. Properti untuk mengaktifkan atau menonaktifkan touchpad adalahDevice Enabled , jadi untuk mengaktifkan atau menonaktifkannya ketik:

Aktifkan touchpad: xinput set-prop <id> "Device Enabled" 1(di mana <id>id perangkat Anda, dalam kasus saya 17)

Matikan touchpad: xinput set-prop <id> "Device Enabled" 0

Nyalakan deteksi telapak tangan: xinput set-prop <id> "Palm Detection" 1

Nonaktifkan deteksi telapak tangan: xinput set-prop <id> "Palm Detection" 0

Untuk menanyakan properti yang tersedia: xinput list-props <id>ATAU xinput list-props <full-name>, ini harus cukup serupa synclient -l.

Tautan untuk bacaan lebih lanjut

ubuntu - wiki - input

CATATAN

Saat mengatur properti melalui salah satu xinputatau synclientproperti tidak diatur ke alat lain. Mereka juga tidak diatur di pusat kontrol kesatuan.


1
Terima kasih atas jawaban kedua. synclienttidak bekerja untukku, xinputtidak.
Robin Winslow

1
Perhatikan bahwa xinputid dapat berubah saat dimulai ulang. Jadi mengandalkan id ini dalam skrip atau pintasan tidak akan berfungsi.
Lode

synclientbenar-benar berfungsi di Arch Linux. Terima kasih begitu banyak !!!
Theodore R. Smith

Ini berhasil untukku. Secara khusus, saya menemukan saya harus menjalankan xinput <enable/disable> <id>, karena pengaturan TouchpadOffvia synclienttidak efektif.
Michael Mol

Terima kasih atas pengantar untuk xinput. Saya agak acar dengan keyboard bawaan saya dan tombol trackpoint yang tampaknya mengirimkan input buruk yang mengganggu input dari keyboard eksternal. Ini memungkinkan saya untuk menonaktifkan perangkat bawaan. Tepuk tangan! :)
sjakobi

4

synclientdan xinputtidak akan berfungsi jika Anda menggunakan lingkungan gnome (atau unity, cinnamon), karena itu akan mengesampingkan pengaturan, jadi jika Anda ingin synclientatau xinputmengambil alih pengaturan ini, Anda harus menonaktifkannya terlebih dahulu:

  1. instal dconf-editorjika tidak diinstal:

    apt-get install dconf-editor
    
  2. menjalankan dconf-editor

    dconf-editor 
    
  3. buka direktori /org/gnome/settings-daemon/plugins/mouse/atau /org/cinnamon/settings-daemon/plugins/mouse/, dan hapus centang pada kotak centang untuk active.

  4. logout atau reboot

Ini seharusnya membuat synclientatau xinputbekerja.


1
  1. Daftar perangkat input Anda:

    xinput list
    

    Dalam kasus saya, saya memiliki daftar ini:

    Virtual core XTEST pointer                  id=4
    Logitech M510                               id=11   
    ETPS/2 Elantech Touchpad                    id=15
    
  2. Nonaktifkan touchpad Anda dengan memberikan ID

    xinput set-prop 15 "Device Enabled" 0
    

Saat mengetik secara manual, Anda bisa menggunakan xinput enable [device]dan xinput disable [device]langsung. Namun ketika scripting, menggunakan set-prop [device] "Device Enabled" [value]mungkin sedikit lebih mudah, seperti dalam jawaban Pengembang Python Dunia.
hsandt

1

Saya menulis sepotong kode python sehingga Anda dapat menggunakan xinputteknik tanpa melakukan semua pekerjaan manual. Copyleft, SEBAGAIMANA ADANYA, tanpa jaminan, gunakan dengan risiko Anda sendiri. Berfungsi bagus untuk saya: dan jika Anda menggunakan gnome, cukup petakan ke pintasan kunci seperti 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

Di Gnome, tombol fungsi saya untuk mengaktifkan touchpad tidak berfungsi karena beberapa alasan, jadi saya membuat skrip menggunakan gsettings.

  • Keuntungan: tidak khusus vendor
  • Kekurangan: pada Gnome, klik touchpad (bukan ketuk) masih ditangani karena beberapa alasan, sedangkan xinputsolusi sepenuhnya menonaktifkan touchpad seperti yang diharapkan. Jika seperti saya, satu-satunya masalah Anda adalah Anda secara tidak sengaja memindahkan kursor saat mengetik, meskipun, itu sudah cukup.

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()

Ini juga harus bekerja pada Unity, tetapi saya belum menguji.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.