Làm cách nào để tắt touchpad trong khi sử dụng trackpoint trên Thinkpad?


21

Thinkpad (ví dụ X230 mà tôi đang sử dụng) có cả trackpoint và touchpad. Bàn di chuột bị vô hiệu hóa khi gõ.

Tuy nhiên, khi tôi đang sử dụng trackpoint, tôi cũng thường chạm vào bàn di chuột và tạo các nhấp chuột mà tôi muốn tránh. Có ai có ý tưởng làm thế nào để vô hiệu hóa nhấp chuột trên bàn di chuột khi trackpoint được sử dụng không?

EDIT: đồng thời, ai đó có thể giải thích cách tùy chọn tắt bàn di chuột khi gõ hoạt động không? Điều gì đang được thực hiện đằng sau hậu trường? Đây có phải là lệnh cấu hình xinput không, và nếu có, cái nào?

EDIT2: làm rõ; vô hiệu hóa thủ công Touchpad (ngay cả với phím tắt) không phải là vấn đề ở đây. Điều này sẽ hoạt động giống như tùy chọn "vô hiệu hóa bàn di chuột khi gõ", vì tôi sử dụng Touchpad và Trackpoint thay thế cho nhau (thường xuyên nhất, tôi sử dụng Touchpad để cuộn và Trackpoint để di chuyển con trỏ).


Điều này sẽ rất thú vị. Cách bàn phím được đặt ra góp phần vào những cử chỉ đi lạc cản trở hoạt động đúng đắn. Tôi không nghĩ rằng điều này là có thể với các lựa chọn hiện tại, nhưng có lẽ trong tương lai? Tôi thấy tôi phải sử dụng hai tay để gõ và chỉ, cong bàn tay (phải) của mình lên cao, để tránh đánh / gạt bàn di chuột.
fleamour

Hiện tại, tôi đã vô hiệu hóa các lần nhấp chuột bằng bàn di chuột - tôi thấy rằng trong hầu hết các trường hợp, tôi sử dụng các nút trên đỉnh của bàn phím cảm ứng.
tháng 1

Câu trả lời:


10

Vô hiệu hóa bàn di chuột khi sử dụng bàn phím

Chức năng này được thực hiện bởi các syndaemontiện ích, từ xserver-xorg-input-synapticsgói. Bạn có thể đặt các tùy chọn như thời gian rảnh, tần suất bỏ phiếu, v.v (xem trợ giúp thời gian chạy ):

Cách sử dụng: syndaemon [-i idle-time] [-m poll-delay] [-d] [-t] [-k]
  -i Bao nhiêu giây để đợi sau lần nhấn phím cuối cùng trước
     cho phép bàn di chuột. (mặc định là 2.0)
  -m Có bao nhiêu mili giây để chờ đến cuộc thăm dò tiếp theo.
     (mặc định là 200ms)
  ...
  -t Chỉ tắt chức năng chạm và cuộn, không di chuyển chuột.

Đây là mã nguồn cho syndaemon.c.

  • Các chức năng quan trọng là keyboard_activity(...)main_loop(...)
  • keyboard_activitysử dụng lệnh gọi API XQueryKeyMap để lấy trạng thái hiện tại của bàn phím (1 bit cho mỗi phím) và sau đó so sánh là trạng thái cuối cùng (cũ); nếu chúng khác nhau, nó trả về 1
  • main_loopthăm dò ý kiến keyboard_activitymỗi mmili giây và dựa trên "thời gian hoạt động cuối cùng" và liệu keyboard_activitytrả về đúng hay sai, nó quyết định vô hiệu hóa hay bật bàn di chuột.
  • Các dp_get_devicechức năng minh họa cách các thiết bị đầu vào X được liệt kê; bạn sẽ có thể sửa đổi điều này và keyboard_activitychức năng để kiểm tra mọi hoạt động của trackpoint.

  • Công xinputcụ liệt kê các thiết bị và ID, ví dụ "

    Con trỏ lõi ảo id = 2 [con trỏ chính (3)]
    ⎜ Lõi ảo con trỏ XTEST id = 4 [con trỏ nô lệ (2)]
    ⎜ SynPS / 2 Synaptics TouchPad id = 11 [con trỏ nô lệ (2)]
    ⎜ TPPS / 2 IBM Trackpoint id = 12 [con trỏ nô lệ (2)]

  • Bạn có thể lấy (ID) này thông qua chức năng XListInputDevices

  • Sau đó, bạn phải lấy một thiết bị xử lý từ ID bằng XOpenDevice
  • Sau đó, bạn sử dụng hàm XQueryDeviceState để lấy tọa độ của con trỏ Trackpoint; tương tự như vòng lặp hiện có, bạn thường xuyên thăm dò ý kiến ​​này và kiểm tra xem tọa độ có thay đổi không (tức là Trackpoint đang được sử dụng) và sử dụng nút đó để bật hoặc tắt bàn di chuột
  • Bạn có thể sử dụng xinputtiện ích với công query-statetắc và ID thiết bị để kiểm tra xem chương trình của bạn có đúng không, ví dụ:

    $ xinput trạng thái truy vấn 12
    2 lớp:
    Nút bấm
    nút [1] = lên
    nút [2] = lên
    nút [3] = lên
    nút [4] = lên
    nút [5] = lên
    nút [6] = lên
    nút [7] = lên
    Chế độ ValuatorClass = Khoảng cách tương đối = Trong
    người định giá [0] = 854
    người định giá [1] = 867
    
  • Bạn quan tâm đến các giá trị định giá, là tọa độ X và Y của Trackpoint
  • Xem xinputnguồn để biết thêm lời khuyên
  • Để sửa đổi và xây dựng lại gói này:

    1. Lấy nguồn với apt-get source...
    2. Thực hiện các sửa đổi của bạn để tools/syndaemon.c
    3. Vô hiệu hóa các syndaemonbản vá hiện có bằng cách bình luận 118...124...các dòng trongdebian/patches/series
    4. Xây dựng gói sửa đổi của bạn với dpkg-buildpackage -us -ucvà các tệp deb sẽ nằm trong thư mục cha.

1
Vì tiền thưởng sẽ hết hạn sau ba ngày, tôi sẽ có thỏa thuận với bạn (trừ khi có câu trả lời hay hơn): Tôi sẽ chỉ định tiền thưởng cho bạn nếu bạn sẽ chỉ cho tôi API để truy vấn thiết bị bằng mã định danh xinput và cung cấp một liên kết đến một trang mô tả cách tạo gói deb từ các nguồn được sửa đổi. Sau đó, tôi sẽ có thể áp dụng phương pháp này. Đó sẽ là tốt?
Ngày

Xin lỗi, tôi đã đi xa. Nghe có vẻ ổn, tôi sẽ cố gắng tìm thông tin và chỉnh sửa câu trả lời trong vài giờ.
ish

đừng lo lắng! không sao đâu
ngày 1 tháng

1
Như đã hứa, bạn có được tiền thưởng. Tuy nhiên, tôi không chấp nhận câu trả lời vì tôi cần mã hóa giải pháp trước.
Ngày

1
@ Tháng một, không chắc bạn đã quản lý để mã hóa giải pháp của bạn chưa? Tôi đã vá syndaemon để hỗ trợ theo dõi trackpoint. github.com/eyko/xf86-input-synaptics (cam kết tại đây github.com/eyko/xf86-input-synaptics/commit/ .
Vince

4

Điều đầu tiên cần làm là biết id bàn phím cảm ứng của bạn. Vì vậy, hãy làm theo các bước sau

Mở terminal đầu tiên và chạy lệnh này

~$ xinput --list

Ở đây chúng tôi nhận được điều này Touchpad id = <id Number>

Sau đó mở các phím tắt bàn phím, sau đó thêm lệnh này bên dưới hai lệnh bằng các phím tắt bàn phím của bạn.

# Disable Touchpad:
xinput set-prop <id number> 'Device Enabled' 0

# Enable Touchpad:
xinput set-prop <id number> 'Device Enabled' 1

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây


Cảm ơn, nhưng vô hiệu hóa Touchpad thủ công không phải là vấn đề ở đây (ngay cả với một phím tắt) và tôi biết cách thực hiện. Ý tưởng là tự động tắt Touchpad trong khi Trackpoint đang được sử dụng, theo cách tương tự Touchpad sẽ tự động bị tắt khi sử dụng bàn phím (xem cài đặt "tắt touchpad trong khi gõ" trong cài đặt "Chuột và Touchpad").
tháng 1

0

Đây là một giải pháp công nghệ thấp có thể không tốt cho việc sử dụng năng lượng (bản vá syndaemon -T không hoạt động với tôi).

#!/bin/sh

TRACKPOINT_DEV="TPPS/2 IBM TrackPoint"
SLEEP_TIME=5

OLD_XY=0,0,
while true; do
  NEW_XY=`xinput query-state "$TRACKPOINT_DEV" |grep valu|awk 'BEGIN { FS = "=" } ; {print $2 ","}'|xargs`
    if [ ! "$OLD_XY" = "$NEW_XY" ]; then
      synclient TouchpadOff=1
    else
      synclient TouchpadOff=0
    fi
    sleep $SLEEP_TIME
    OLD_XY="$NEW_XY"
done

Phải có một chút may mắn khi nhận thấy rằng bạn đang sử dụng trackpoint, bởi vì nó chỉ có thể cho biết tọa độ trong mỗi khoảng thời gian 5s. Nói cách khác, cần thận trọng trong việc vô hiệu hóa bàn di chuột nhưng không nên bật lại một cách đáng tin cậy khi điểm truy cập không hoạt động.

Dù sao, nó giúp tôi rất nhiều trên ultrabook của tôi với con trỏ lang thang từ ấn tay.

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.