Làm cách nào để tắt bàn di chuột bằng dòng lệnh?


Câu trả lời:


55

Để tắt bàn phím cảm ứng:

synclient TouchpadOff=1

Để bật lại:

synclient TouchpadOff=0

Đơn giản nhưng đi vào vấn đề.
Ade Malsasa Akbar

7
không hoạt động trên máy tính của tôi ...
Casper

Thú vị, tốt để biết.
aleroxac

2
Lệnh chạy không có lỗi trên Ubuntu 14.04 LTS của tôi trên Dell XPS 13 nhưng không có hiệu lực.
IJ Kennedy

Toggle sẽ rất tuyệt - tôi muốn thiết lập nó dưới dạng cắt ngắn hoặc một cái gì đó. Tốt hơn nữa, khi nó được cập cảng, tôi muốn tắt bàn di chuột
Christian Bongiorno

22

Có ít nhất hai phương pháp (mà tôi biết) bạn có thể thử.

đồng bộ

Nếu máy tính xách tay của bạn được trang bị bàn di chuột Synaptics (hoặc ALPS), bạn thực sự có thể sử dụng synclientnhư đã được đề cập bởi Shutupsapes. Tôi đang chạy Ubuntu 14.04 và trên máy của tôi, nó được cài đặt theo mặc định.

Kiểm tra nếu synclient được cài đặt: synclient -V(cần báo cáo số phiên bản)

BẬT bàn di chuột: synclient TouchpadOff=0

TẮT bàn di chuột: synclient TouchpadOff=1

Tôi đã không tự mình kiểm tra điều này, nhưng nếu mục tiêu của bạn là không di chuyển chuột khi cánh tay của bạn nằm trên bàn di chuột, điều này có thể giúp ích.

Bật phát hiện lòng bàn tay: synclient PalmDetect=1

Tắt phát hiện lòng bàn tay: synclient PalmDetect=0

Nói chung, bạn có thể định cấu hình bất kỳ thuộc tính nào trên bàn di chuột Synaptics của mình synclient property=value. Trong đó tài sản là một trong những thuộc tính có sẵn được hiển thị bởisynclient -l

Liên kết để đọc thêm

ubfox - commality trợ wiki - SynapticsTouchpad

archlinux - wiki - Synaptics

hỏi ubfox - Làm cách nào để cài đặt đồng bộ hóa của tôi? - Ubuntu

xin thông báo

Nếu bạn không muốn hoặc không thể sử dụng synclient, bạn cũng có thể sử dụng xinput. Thủ tục có phần giống nhau.

liệt kê tất cả các thiết bị xinput: xinput

Một phần của ouput có thể trông như thế này:

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

Trong trường hợp cụ thể, bàn di chuột của tôi có id = 17 và tên đầy đủ của nó là "ETPS / 2 Elantech Touchpad".

Lệnh để đặt một thuộc tính là xinput set-prop. Thuộc tính để bật hoặc tắt bàn di chuột là Device Enabled, vì vậy, để bật hoặc tắt loại này:

BẬT bàn di chuột: xinput set-prop <id> "Device Enabled" 1( <id>id thiết bị của bạn ở đâu, trong trường hợp của tôi 17)

TẮT bàn di chuột: xinput set-prop <id> "Device Enabled" 0

Bật phát hiện lòng bàn tay: xinput set-prop <id> "Palm Detection" 1

Tắt phát hiện lòng bàn tay: xinput set-prop <id> "Palm Detection" 0

Để truy vấn các thuộc tính có sẵn: xinput list-props <id>HOẶC xinput list-props <full-name>, điều này sẽ khá giống với synclient -l.

Liên kết để đọc thêm

Ubuntu - wiki - đầu vào

CHÚ THÍCH

Khi cài đặt thuộc tính thông qua một trong hai xinputhoặc synclientthuộc tính không được đặt thành công cụ khác. Họ cũng không được đặt trong trung tâm kiểm soát thống nhất.


1
Cảm ơn câu trả lời thứ hai. synclientđã không làm việc cho tôi, xinputđã làm.
Robin Winslow

1
Lưu ý rằng xinputid có thể thay đổi khi khởi động lại. Vì vậy, việc dựa vào các id này trong tập lệnh hoặc phím tắt sẽ không hoạt động.
Lode

synclienthoàn toàn hoạt động trên Arch Linux. Cảm ơn bạn rất nhiều !!!
Theodore R. Smith

Điều này đã làm điều đó cho tôi. Đặc biệt, tôi phát hiện ra tôi cần phải chạy xinput <enable/disable> <id>, như thiết lập TouchpadOffthông qua synclientlà không hiệu quả.
Michael Mol

Cảm ơn bạn đã giới thiệu xinput. Tôi đã có một chút khó khăn với bàn phím dựng sẵn và các nút theo dõi dường như gửi các đầu vào xấu gây cản trở đầu vào từ bàn phím ngoài. Điều này cho phép tôi vô hiệu hóa các thiết bị dựng sẵn. Chúc mừng! :)
sjakobi

4

synclientxinputsẽ không hoạt động nếu bạn đang sử dụng môi trường gnome (hoặc unity, quế), vì nó sẽ ghi đè cài đặt, vì vậy nếu bạn muốn synclienthoặc xinputtiếp quản các cài đặt này, trước tiên bạn nên tắt nó:

  1. cài đặt dconf-editornếu không cài đặt:

    apt-get install dconf-editor
    
  2. chạy dconf-editor

    dconf-editor 
    
  3. mở thư mục /org/gnome/settings-daemon/plugins/mouse/hoặc /org/cinnamon/settings-daemon/plugins/mouse/và bỏ chọn hộp kiểm cho active.

  4. logout hoặc là reboot

Điều này nên làm synclienthoặc xinputlàm việc.


1
  1. Liệt kê các thiết bị đầu vào của bạn:

    xinput list
    

    Trong trường hợp của tôi, tôi có danh sách này:

    Virtual core XTEST pointer                  id=4
    Logitech M510                               id=11   
    ETPS/2 Elantech Touchpad                    id=15
    
  2. Vô hiệu hóa bàn di chuột của bạn bằng cách chuyển ID

    xinput set-prop 15 "Device Enabled" 0
    

Khi gõ thủ công, bạn có thể sử dụng xinput enable [device]xinput disable [device]trực tiếp. Khi viết kịch bản, việc sử dụng set-prop [device] "Device Enabled" [value]có thể dễ dàng hơn một chút, như trong câu trả lời của World Python Developer.
hsandt

1

Tôi đã viết một đoạn mã trăn để bạn có thể sử dụng xinputkỹ thuật mà không cần thực hiện tất cả các công việc thủ công. Copyleft, AS-IS, không có bảo hành, sử dụng có nguy cơ của riêng bạn. Hoạt động rất tốt cho tôi: và nếu bạn đang sử dụng gnome, chỉ cần ánh xạ nó tới một phím tắt như thế nào 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

Trên Gnome, phím chức năng của tôi để chuyển đổi bàn di chuột không hoạt động vì một số lý do, vì vậy tôi đã tạo một tập lệnh bằng gsinstall.

  • Ưu điểm: không dành riêng cho nhà cung cấp
  • Nhược điểm: trên Gnome, các thao tác bấm (không chạm) vẫn bị xử lý vì một số lý do, trong khi xinputgiải pháp này hoàn toàn vô hiệu hóa bàn di chuột như mong đợi. Nếu giống như tôi, vấn đề duy nhất của bạn là bạn vô tình di chuyển con trỏ trong khi gõ, tuy nhiên, điều đó là đủ.

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

Nó cũng sẽ hoạt động trên Unity, nhưng tôi chưa thử nghiệm.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.