Vô hiệu hóa chuột (không phải bàn di chuột!) Trong Xorg khi không hoạt động


17

Tôi là một người sử dụng bàn phím khao khát, nhưng tôi vẫn cần chuột mọi lúc mọi nơi. Để giảm thiểu việc di chuyển bằng tay, tôi có con chuột nằm bên dưới bàn phím của tôi. (Trên một lưu ý phụ, sử dụng chuột theo cách này cảm thấy tự nhiên hơn với bàn tay của tôi.)

Tôi hiện đang sử dụng unclutter để ẩn con trỏ trong khi tôi không sử dụng chuột. Thật không may, đôi khi tôi gõ nó trong khi gõ, điều này khiến con trỏ xuất hiện trở lại. Đôi khi điều này sẽ di chuyển con trỏ qua một cửa sổ khác, điều này sẽ lấy tiêu điểm ra khỏi cửa sổ hiện tại của tôi. (Tôi đang sử dụng tiêu điểm cẩu thả và thay đổi điều này không phải là một tùy chọn.)

Bây giờ tôi đang tìm kiếm một khả năng không chỉ ẩn con trỏ sau một khoảng thời gian nhàn rỗi nhất định, mà còn vô hiệu hóa chuột hoàn toàn. Nhấp vào bất kỳ nút chuột hoặc sử dụng bánh xe chuột sau đó sẽ kích hoạt lại chuột.

Câu trả lời:


16

Điều đầu tiên mà chúng ta cần thực hiện là tắt chuột, nhưng chỉ trong X. Đối với điều này, chúng ta có thể sử dụng xinput.

Chúng ta cần khám phá các thiết bị đầu vào được kết nối với máy tính (với máy chủ X):

pbm@tauri ~ $ xinput list
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ A4Tech USB Mouse                          id=10   [slave  pointer  (2)]
⎜   ↳ Macintosh mouse button emulation          id=11   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
     [...]

Thiết bị mà chúng ta cần sử dụng là A4Tech USB Mousevới id=10. Tiếp theo chúng ta cần kiểm tra thuộc tính của thiết bị đó:

pbm@tauri ~ $ xinput list-props "A4Tech USB Mouse"
Device 'A4Tech USB Mouse':
       Device Enabled (121):   1
       [....]

Để tắt thiết bị, chúng ta cần thay đổi thuộc tính Device Enabled:

xinput set-prop DEV PROP STATE
xinput set-prop "A4Tech USB Mouse" "Device Enabled" 0

Bật lên:

xinput set-prop "A4Tech USB Mouse" "Device Enabled" 1

Điều tiếp theo là tự động làm điều đó ...;) Trong ví dụ này, chúng tôi sẽ vô hiệu hóa chuột bằng phím tắt và bật nó bằng cách nhấn nút chuột trái + chuột phải.

Để làm điều này, chúng ta có thể sử dụng Actkbd - daemon bàn phím (nhưng không chỉ) hoạt động bên ngoài máy chủ X.

Đầu tiên chúng ta cần tạo tập tin cấu hình trống cho actkbd : touch /etc/actkbd.conf. Điều tiếp theo là khám phá các thiết bị kết nối với máy tính:

pbm@tauri ~ $ cat /proc/bus/input/devices 
I: Bus=0003 Vendor=046d Product=c312 Version=0110
N: Name="BTC USB Multimedia Keyboard"
P: Phys=usb-0000:00:1d.0-1.6/input0
S: Sysfs=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.6/2-1.6:1.0/input/input6
U: Uniq=
H: Handlers=kbd event3 
B: EV=120013
B: KEY=1000000000007 ff9f207ac14057ff febeffdfffefffff fffffffffffffffe
B: MSC=10
B: LED=7

I: Bus=0003 Vendor=09da Product=000a Version=0110
N: Name="A4Tech USB Mouse"
P: Phys=usb-0000:00:1d.0-1.5/input0
S: Sysfs=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.5/2-1.5:1.0/input/input8
U: Uniq=
H: Handlers=mouse1 event5 
B: EV=17
B: KEY=ff0000 0 0 0 0
B: REL=343
B: MSC=10

[...]

Trong phần này thú vị nhất để sử dụng là tên và trình xử lý của các thiết bị bàn phím và chuột.

Đầu tiên chúng tôi xử lý tắt chuột bằng phím tắt, vì vậy chúng tôi cần khám phá các id chính:

pbm@tauri ~ $ sudo actkbd -s -d /dev/input/event3
Keys: 29+41+42 //we need to press keys that will turn off mouse, 29+41+42 is Ctrl + Shift + `

Khi chúng ta biết id khóa là gì, chúng ta cần đặt chúng vào tệp cấu hình ( /etc/actkbd.conf):

29+41+42:::sudo -u pbm DISPLAY=:0 xinput set-prop "A4Tech USB Mouse" "Device Enabled" 0

Để kiểm tra nó, chúng ta cần chạy actkbdtrong chế độ daemon:

pbm@tauri ~ $ sudo actkbd -d /dev/input/event3 -D

Theo cùng một cách chúng ta cần xử lý sự kiện "bật":

  1. Kiểm tra xử lý của thiết bị chuột
  2. Kiểm tra mã khóa của nút chuột trái + chuột phải bằng cách sử dụng actkbd
  3. Đặt nó vào actkbd.conf
  4. Chạy trình nền Actkbd để theo dõi thiết bị nhập chuột

Chạy trình tiện ích có thể được nhận ra dưới dạng init script hoặc autorun script trong môi trường.

Để tự động tắt chuột, chúng tôi có thể theo dõi thiết bị đầu vào ( cat /dev/input/event5) và tắt nó khi không có đầu vào ...

Tôi hy vọng rằng phần giới thiệu ngắn của tôi sẽ giúp bạn ...;)


Cảm ơn các gợi ý với actkbd! Sau khi đăng câu hỏi của tôi, tôi đã tìm ra cách sử dụng xinput, nhưng tôi đã không tìm ra cách tôi sẽ kích hoạt lại chuột bằng cách nhấn các nút chuột.
igor

Đây là một câu trả lời bằng văn bản rất tốt.
pjc50

Cảm ơn thông tin đó, đặc biệt là gợi ý với atkkbd

Thay vì sử dụng tùy chọn --set-prop cùng với thuộc tính Có thể bật / Tắt của Thiết bị, người ta cũng có thể sử dụng các tùy chọn --enable và --dable, ví dụ: xinput --enable [device] và xinput --disable [device] .
thebodzio

1

Bạn đã thử một applet bảng điều khiển Gnome "Bắt con trỏ" chưa?

Con trỏ chuột có thể được khóa vào một khu vực của màn hình để thiết bị trỏ được miễn phí cho các tác vụ khác. Ví dụ, khả năng này cho phép người dùng xe lăn điều khiển cả con lăn và con trỏ chuột bằng một phím điều khiển

Các applet của bảng điều khiển Con trỏ Ghi tạo một khu vực như vậy trên bảng, trong đó người dùng có thể khóa con trỏ cho đến khi được giải phóng theo cách xác định.

Có thể cài đặt applet của bảng điều khiển Con trỏ bằng cách bấm chuột phải vào thanh menu / bảng hệ thống của Gnome Desktop, chọn Thêm vào Bảng điều khiển, chọn Chụp con trỏ và bấm vào nút Thêm

Trong trường hợp mô tả từ gnome.org không rõ ràng, điều này sẽ tạo ra một khu vực trong bảng điều khiển khi chuột vào (hoặc bạn bấm), con trỏ sẽ biến mất và sẽ không xuất hiện lại cho đến khi xảy ra hành động xác định, ví dụ như nhấp chuột thứ hai. Âm thanh như chính xác những gì bạn cần?


Tôi đã sử dụng điều này nhưng tạo ra một số vấn đề. Tôi không thể sử dụng Alt + F1để mở bằng menu ứng dụng. Tôi không biết điều gì đã gây ra điều đó. Tôi là một người dùng Ubuntu.
balki
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.