Komut satırını kullanarak bir dokunmatik yüzeyi nasıl devre dışı bırakabilirim?


39

Terminal komutunu kullanarak bir dokunmatik yüzeyi devre dışı bırakmanın bir yolu var mı?

Yanıtlar:


55

Dokunmatik yüzeyi kapatmak için:

synclient TouchpadOff=1

Tekrar açmak için:

synclient TouchpadOff=0

Basit ama konuya gitmek.
Ade Malsasa Akbar,

7
bilgisayarımda çalışmıyor ...
Casper

İlginç, bilmek güzel.
aleroxac,

2
Komut, Dell XPS 13'teki Ubuntu 14.04 LTS cihazımda hatasız çalıştı ancak hiçbir etkisi olmadı.
IJ Kennedy

Toggle iyi olurdu - Kısa yol veya başka bir şey olarak ayarlamak istiyorum. Daha da iyisi, yerleştirildiğinde dokunmatik yüzeyin kapalı olmasını istiyorum
Christian Bongiorno

22

Deneyebileceğiniz en az iki yöntem var.

synclient

Dizüstü bilgisayarınızda bir Synaptics (veya ALPS) touchpad varsa, synclientShutupsquare tarafından daha önce belirtildiği gibi kullanabilirsiniz . Ubuntu 14.04 kullanıyorum ve makinemde varsayılan olarak kuruldu.

Synclient'in kurulu olup olmadığını test edin: synclient -V(sürüm numarasını bildirmelidir)

Dokunmatik ekranı açın: synclient TouchpadOff=0

Dokunmatik ekranı KAPALI konuma getirin: synclient TouchpadOff=1

Bunu kendim test etmedim, ancak hedefiniz fareler dokunmatik yüzey üzerinde dururken fareyi hareket ettirmek değilse, bu yardımcı olabilir.

Avuç içi algılamayı AÇIK konuma getirin: synclient PalmDetect=1

Avuç içi algılamayı KAPALI konuma getirin: synclient PalmDetect=0

Genel olarak Synaptics dokunmatik yüzeyinizin herhangi bir özelliğini, tarafından yapılandırabilirsiniz synclient property=value. Özelliğin, gösterilen özelliklerden biri olduğu yersynclient -l

Daha fazla okumak için linkler

ubuntu - comminity yardım wiki - SynapticsTouchpad

archlinux - wiki - Dokunmatik Yüzey Synaptics

ask ubuntu - Eşlik eden ayarlarımı nasıl yapıştırabilirim? - Ubuntu

Xinput

İstemciyi istemiyorsanız veya kullanamıyorsanız, kullanabilirsiniz xinput. Prosedür biraz benzer.

tüm xinput cihazlarını listele: xinput

Çıkışın bir parçası şöyle görünebilir:

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

Bu özel durumun touchpad'imde id = 17 ve tam adı "ETPS / 2 Elantech Touchpad".

Bir özelliği ayarlama komutu xinput set-prop. Dokunmatik yüzeyi etkinleştirme veya devre dışı bırakma özelliği, onu etkinleştirme veya devre dışı bırakma özelliğidir Device Enabled:

Dokunmatik ekranı açın: xinput set-prop <id> "Device Enabled" 1( <id>cihaz kimliğiniz nerede , benim durumumda 17)

Dokunmatik ekranı KAPALI konuma getirin: xinput set-prop <id> "Device Enabled" 0

Avuç içi algılamayı AÇIK konuma getirin: xinput set-prop <id> "Palm Detection" 1

Avuç içi algılamayı KAPALI konuma getirin: xinput set-prop <id> "Palm Detection" 0

Kullanılabilir özellikleri sorgulamak için: xinput list-props <id>VEYA xinput list-props <full-name>, bu oldukça sessiz olmalıdır synclient -l.

Daha fazla okumak için linkler

ubuntu - wiki - giriş

NOT

Aracılığıyla ya özelliklerini ayarlarken xinputveya synclientözellikleri diğer alete ayarlanmamış. Aynı zamanda birlik kontrol merkezinde ayarlanmamışlar.


1
İkinci cevap için teşekkürler. synclientbenim için işe xinputyaramadı.
Robin Winslow

1
xinputKimliklerin yeniden başlatmalar arasında değişebileceğini unutmayın . Bu yüzden komut dosyalarında veya kısayollarda bu kimliklere güvenmek işe yaramaz.
Lode

synclienttamamen Arch Linux'ta çalışıyor. Teşekkürler bu kadar çok !!!
Theodore R. Smith,

Bu benim için yaptı. Özellikle, ben vadede gerek keşfetti xinput <enable/disable> <id>ayarlama gibi, TouchpadOffüzeri synclientetkisizdi.
Michael Mol,

Giriş için teşekkür ederiz xinput. Dahili klavyem ve trackpoint düğmelerimin dış klavyeden gelen girişi engelleyen kötü girdiler gönderdiği anlaşılıyordu. Bu, yerleşik cihazları devre dışı bırakmama izin verdi. Şerefe! :)
sjakobi

4

synclientve xinputeğer gnome (veya birlik, tarçın) ortamı kullanıyorsanız çalışmaz, çünkü ayarları geçersiz kılar, bu yüzden bu ayarları devralmak istiyorsanız synclientveya xinputönce

  1. dconf-editoryüklü değilse kur :

    apt-get install dconf-editor
    
  2. Çalıştırmak dconf-editor

    dconf-editor 
    
  3. dizini açın /org/gnome/settings-daemon/plugins/mouse/veya /org/cinnamon/settings-daemon/plugins/mouse/, ve onay kutusundaki işareti kaldırın active.

  4. logout veya reboot

Bu yapmalı synclientveya xinputçalışmalı.


1
  1. Giriş cihazlarınızı listeleyin:

    xinput list
    

    Benim durumumda bu liste var:

    Virtual core XTEST pointer                  id=4
    Logitech M510                               id=11   
    ETPS/2 Elantech Touchpad                    id=15
    
  2. Kimliğinizi ileterek dokunmatik yüzeyinizi devre dışı bırakın

    xinput set-prop 15 "Device Enabled" 0
    

Manuel olarak yazarken, xinput enable [device]ve xinput disable [device]doğrudan kullanabilirsiniz . Ancak komut dosyası yazarken, set-prop [device] "Device Enabled" [value]World Python Developer'in cevabında olduğu gibi kullanımı biraz daha kolay olabilir.
Saat 20

1

Tek bir kod parçasını yazdım, böylece xinputtüm manuel işleri yapmadan tekniği kullanabiliyordunuz . Copyleft, AS-IS, garanti yok, kendi sorumluluğunuzdadır kullanın. Benim için harika çalışıyor: ve gnome kullanıyorsanız, bunu sadece gibi bir anahtar kısayolla eşleştirin 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'da touchpad'i değiştirmek için kullanılan fonksiyon tuşum bir nedenden dolayı işe yaramadı, bu yüzden gsettings kullanarak bir senaryo yazdım.

  • Avantaj: satıcıya özel değil
  • Dezavantaj: Gnome'da, dokunmatik yüzey tıklamaları (dokunmayan) hala bir nedenden ötürü kullanılır, ancak xinputçözüm dokunmatik yüzeyi beklendiği gibi tamamen devre dışı bırakır. Benim gibiyseniz, tek probleminiz yazarken imleci yanlışlıkla hareket ettirmenizdir, ancak bu yeterli olacaktır.

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

Aynı zamanda Birlik üzerinde çalışmalı, ama henüz test etmedim.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.