Kiểm soát cử chỉ chuột Bluetooth đăng ký các sự kiện bàn phím


9

tl; dr

Tôi mới mua một chiếc Logitech T630 . Đó là chuột Bluetooth hỗ trợ một số sự kiện bàn phím thông qua cử chỉ (PDF). Những cử chỉ này là tốt và bảnh bao nhưng tôi có ít sử dụng cho chúng. Tôi đang có một thời gian khủng khiếp để thoát khỏi chúng.

Tôi muốn làm như sau, theo thứ tự ưu tiên giảm dần:

  1. vô hiệu hóa những cử chỉ này
  2. ánh xạ lại các cử chỉ (Tôi nghĩ rằng không cần hack phần sụn hoặc thiết kế ngược trình điều khiển thiết bị Windows / OS X, điều này là không thể)

Tôi không muốn:

  • sử dụng Windows
  • vô hiệu hóa mọi cử chỉ

Để biết thêm thông tin, hãy đọc trên mạng

nút và cử chỉ

Mười ba sự kiện chuột có thể là:

  1. ấn chuột trái
  2. Nhấp chuột giữa
  3. nhấp chuột phải
  4. cuộn lên
  5. cuộn xuống
  6. cuộn sang trái
  7. cuộn sang phải
  8. vuốt cạnh trái
  9. vuốt cạnh phải
  10. hai ngón tay vuốt sang trái
  11. hai ngón tay vuốt sang phải
  12. chạm hai lần
  13. chạm hai ngón tay

Bảy cái đầu tiên theo thứ tự hệ điều hành ánh xạ chúng.

Chỉ có ba người đầu tiên là cơ khí, tất cả những người khác sử dụng bề mặt cảm ứng:

cử chỉ chạm

Tùy chọn GUI

Thiết lập trong Kubfox Trusty rất đơn giản, nhưng nó cung cấp rất ít hỗ trợ để định cấu hình các cử chỉ khác này.

Những cử chỉ này không liên quan đến:

  • bàn di chuột ( synapticskhông chạy)
  • khả năng tiếp cận
  • góc nóng
  • cử chỉ chuột tiêu chuẩn

Tất cả các cài đặt liên quan đến những cài đặt đã được kiểm tra và tất cả chúng đều tắt.

cài đặt dòng lệnh

lomoco

Các lomocotiện ích để giúp đỡ cấu hình tính năng đặc biệt của Logitech USB chuột không được áp dụng.

xinput

Tôi nghĩ xinputcó thể cung cấp một số trợ giúp:

$ xinput --list | grep pointer
 Virtual core pointer                          id=2    [master pointer  (3)]
    Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
    Ultrathin Touch Mouse                     id=13   [slave  pointer  (2)]
$ xinput --list-props 13
Device 'Ultrathin Touch Mouse':
    Device Enabled (144):   1
    Coordinate Transformation Matrix (146): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
    Device Accel Profile (266): 0
    Device Accel Constant Deceleration (267):   1.000000
    Device Accel Adaptive Deceleration (268):   1.000000
    Device Accel Velocity Scaling (269):    10.000000
    Device Product ID (261):    1133, 45069
    Device Node (262):  "/dev/input/event11"
    Evdev Axis Inversion (270): 0, 0
    Evdev Axes Swap (272):  0
    Axis Labels (273):  "Rel X" (154), "Rel Y" (155), "Rel Horiz Wheel" (746), "Rel Vert Wheel" (265)
    Button Labels (274):    "Button Left" (147), "Button Middle" (148), "Button Right" (149), "Button Wheel Up" (150), "Button Wheel Down" (151), "Button Horiz Wheel Left" (152), "Button Horiz Wheel Right" (153), "Button Side" (1032), "Button Extra" (1033), "Button Unknown" (264), "Button Unknown" (264), "Button Unknown" (264), "Button Unknown" (264)
    Evdev Middle Button Emulation (275):    0
    Evdev Middle Button Timeout (276):  50
    Evdev Third Button Emulation (277): 0
    Evdev Third Button Emulation Timeout (278): 1000
    Evdev Third Button Emulation Button (279):  3
    Evdev Third Button Emulation Threshold (280):   20
    Evdev Wheel Emulation (281):    0
    Evdev Wheel Emulation Axes (282):   0, 0, 4, 5
    Evdev Wheel Emulation Inertia (283):    10
    Evdev Wheel Emulation Timeout (284):    200
    Evdev Wheel Emulation Button (285): 4
    Evdev Drag Lock Buttons (286):  0

Lưu ý nhãn 13 nút:

$ xinput --get-button-map "Ultrathin Touch Mouse"
1 2 3 4 5 6 7 8 9 10 11 12 13

Tắt chúng đi không giúp được gì:

$ xinput --set-button-map "Ultrathin Touch Mouse" 1 2 3 4 5 6 7 0 0 0 0 0 0

Mặc dù, ví dụ, nó có thể biến nút chuột giữa thành nhấp chuột trái:

$ xinput --set-button-map "Ultrathin Touch Mouse" 1 1 3 4 5 6 7 0 0 0 0 0 0

xmodmap

Tương tự xinput, kết quả tương tự:

$ xmodmap -e "pointer = 1 2 3 4 5 6 7 0 0 0 0 0 0"

inputkbd

Được đề xuất bởi elmicha dưới đây , điều này đang hoạt động ở cấp độ kernel, cố gắng thực hiện các cử chỉ dẫn đến các sự kiện bàn phím rỗng. Nên làm việc, nhưng cũng không có may mắn ở đây, với quy trình sau:

$ sudo input-kbd 4 > keymap # note the 4 is from /dev/input/event4
# edit the keymap to map any combination of keys to either 0 or 240 (KEY_UNKNOWN)
# e.g. change this:
# 0x700e0 =  29 # KEY_LEFTCTRL
# to this:
# 0x700e0 =   0 # KEY_LEFTCTRL
# or this:
# 0x700e0 = 240 # KEY_LEFTCTRL
$ sudo input-kbd -f keymap 4
$ sudo input-kbd 4 # should return the updated keymap

Sau khi làm điều này, sơ đồ cho thấy không có thay đổi.

xkbcomp

Điều này được đề xuất bởi Xhacker đầu vào Peter Hutterer , chắc chắn là một người đàn ông nên biết những gì anh ta đang làm. Tuy nhiên, không có may mắn:

$ xkbcomp -xkb $DISPLAY t630.xkb
# edit the keyboard description and replace the definition of any key to NoSymbol or VoidSymbol
# e.g. change this:
#     key <LCTL> {         [       Control_L  ] };
# to this:
#     key <LCTL> {         [       NoSymbol   ] };
# or this:
#     key <LCTL> {         [       VoidSymbol ] };
$ sudo xkbcomp -i 8 t630.xkb $DISPLAY # here the 8 is the id in xinput, names don't work
$ xkbcomp -xkb -i 8 $DISPLAY - # should return the updated keyboard description

Sau khi làm điều này, mô tả bàn phím cho thấy không có thay đổi.

Peter cảm thấy rằng điều này có khả năng là do thực tế Xbị nhầm lẫn về bản chất của thiết bị là bàn phím hoặc chuột, giống như lỗi này có vấn đề ngược lại. Điều này có thể giải thích tại sao tất cả các mặt hàng dự kiến ​​khác không hoạt động. Tuy nhiên, ông cũng nói rằng sử dụng evdevkhông nên hoạt động vì lý do tương tự.

evdev

Ban đầu có vẻ như nó hoạt động, nhưng nó cũng không. Điều này cố gắng tận dụng trình điều khiển đầu vào chung Xđể đặt ánh xạ nút bằng cách nối thêm phần sau vào /usr/share/X11/xorg.conf.d/10-evdev.confhoặc /etc/X11/xorg.conf.d/10-evdev.conf:

# custom for Logitech Ultrathin Touch mouse

Section "InputDevice"
    Identifier "Logitech bluetooth Touch Mouse"
    Driver "evdev"
    Option "Name"   "Ultrathin Touch Mouse"
    Option "ButtonMapping" "1 2 3 4 5 6 7 0 0 0 0 0 0"
EndSection

Section "InputClass"
    Identifier  "Ultrathin Touch Mouse"
    Option "ButtonMapping" "1 2 3 4 5 6 7 0 0 0 0 0 0"
EndSection

Điều này dường như hoạt động mà không có lỗi trong /var/log/Xorg.0.log(sử dụng grep EE) và xinputxác nhận ánh xạ nút, nhưng nó không dẫn đến hiệu ứng mong muốn.

Điều này được biết hoạt động cho T631, tuy nhiên.

sự kiện bàn phím

Vấn đề nằm ở chỗ, tôi nghĩ, trong thực tế là những cử chỉ này tạo ra các sự kiện bàn phím:

$ sudo evemu-record /dev/input/event4 | grep "E: "
# swipe edge right
E: 0.000000 0004 0004 458976    # EV_MSC / MSC_SCAN             458976
E: 0.000000 0001 001d 0001      # EV_KEY / KEY_LEFTCTRL         1
E: 0.000000 0004 0004 458979    # EV_MSC / MSC_SCAN             458979
E: 0.000000 0001 007d 0001      # EV_KEY / KEY_LEFTMETA         1
E: 0.000000 0004 0004 458795    # EV_MSC / MSC_SCAN             458795
E: 0.000000 0001 000f 0001      # EV_KEY / KEY_TAB              1
E: 0.000000 0000 0000 0000      # ------------ SYN_REPORT (0) ----------
E: 0.002980 0004 0004 458976    # EV_MSC / MSC_SCAN             458976
E: 0.002980 0001 001d 0000      # EV_KEY / KEY_LEFTCTRL         0
E: 0.002980 0004 0004 458979    # EV_MSC / MSC_SCAN             458979
E: 0.002980 0001 007d 0000      # EV_KEY / KEY_LEFTMETA         0
E: 0.002980 0004 0004 458795    # EV_MSC / MSC_SCAN             458795
E: 0.002980 0001 000f 0000      # EV_KEY / KEY_TAB              0
E: 0.002980 0000 0000 0000      # ------------ SYN_REPORT (0) ----------
# swipe edge left
E: 3.306977 0004 0004 458978    # EV_MSC / MSC_SCAN             458978
E: 3.306977 0001 0038 0001      # EV_KEY / KEY_LEFTALT          1
E: 3.306977 0004 0004 458979    # EV_MSC / MSC_SCAN             458979
E: 3.306977 0001 007d 0001      # EV_KEY / KEY_LEFTMETA         1
E: 3.306977 0004 0004 458866    # EV_MSC / MSC_SCAN             458866
E: 3.306977 0001 00c1 0001      # EV_KEY / KEY_F23              1
E: 3.306977 0000 0000 0000      # ------------ SYN_REPORT (0) ----------
E: 3.310979 0004 0004 458978    # EV_MSC / MSC_SCAN             458978
E: 3.310979 0001 0038 0000      # EV_KEY / KEY_LEFTALT          0
E: 3.310979 0004 0004 458979    # EV_MSC / MSC_SCAN             458979
E: 3.310979 0001 007d 0000      # EV_KEY / KEY_LEFTMETA         0
E: 3.310979 0004 0004 458866    # EV_MSC / MSC_SCAN             458866
E: 3.310979 0001 00c1 0000      # EV_KEY / KEY_F23              0
E: 3.310979 0000 0000 0000      # ------------ SYN_REPORT (0) ----------
# two finger double tap
E: 10.225976 0004 0004 458983   # EV_MSC / MSC_SCAN             458983
E: 10.225976 0001 007e 0001     # EV_KEY / KEY_RIGHTMETA        1
E: 10.225976 0000 0000 0000     # ------------ SYN_REPORT (0) ----------
E: 10.229986 0004 0004 458983   # EV_MSC / MSC_SCAN             458983
E: 10.229986 0001 007e 0000     # EV_KEY / KEY_RIGHTMETA        0
E: 10.229986 0000 0000 0000     # ------------ SYN_REPORT (0) ----------
# two finger swipe left
E: 27.934977 0004 0004 589828   # EV_MSC / MSC_SCAN             589828
E: 27.934977 0001 0113 0001     # EV_KEY / BTN_SIDE             1
E: 27.934977 0000 0000 0000     # ------------ SYN_REPORT (0) ----------
E: 27.937983 0004 0004 589828   # EV_MSC / MSC_SCAN             589828
E: 27.937983 0001 0113 0000     # EV_KEY / BTN_SIDE             0
E: 27.937983 0000 0000 0000     # ------------ SYN_REPORT (0) ----------
# two finger swipe right
E: 32.513990 0004 0004 589829   # EV_MSC / MSC_SCAN             589829
E: 32.513990 0001 0114 0001     # EV_KEY / BTN_EXTRA            1
E: 32.513990 0000 0000 0000     # ------------ SYN_REPORT (0) ----------
E: 32.516994 0004 0004 589829   # EV_MSC / MSC_SCAN             589829
E: 32.516994 0001 0114 0000     # EV_KEY / BTN_EXTRA            0
E: 32.516994 0000 0000 0000     # ------------ SYN_REPORT (0) ----------

Theo như sơ đồ liên quan, chúng đề cập đến:

$ sudo input-kbd 4 | grep -e KEY_LEFTCTL -e KEY_LEFTMETA -e KEY_TAB -e KEY_LEFTALT -e KEY_F23 -e KEY_RIGHTMETA -e BTN_SIDE -e BTN_EXTRA
0x700e2 =  56  # KEY_LEFTALT
0x700e3 = 125  # KEY_LEFTMETA
0x700e7 = 126  # KEY_RIGHTMETA
0x7002b =  15  # KEY_TAB
0x70072 = 193  # KEY_F23
0x700e2 =  56  # KEY_LEFTALT
0x700e3 = 125  # KEY_LEFTMETA
0x700e7 = 126  # KEY_RIGHTMETA
0x90004 = 275  # BTN_SIDE
0x90005 = 276  # BTN_EXTRA

Double tap dường như không làm gì cả.

tài liệu tham khảo khác

Nó cũng có thể giúp chỉ ra một tham chiếu đến các vấn đề tương tự trong một lỗi với con chuột đã nói ở trên không có trong gnome-bluetoothcơ sở dữ liệu mã pin. Không cần phải nói, bình luận thêm về chủ đề này chính thức không chính thức về báo cáo lỗi đó, nhưng các tài liệu tham khảo có thể giúp thêm một số quan điểm về bản chất của vấn đề này.

Đây là đầu ra của evemu-describe /dev/input/event4FWIW.

Bộ điều hợp Bluetooth

FWIW Tôi đã sử dụng hai bộ điều hợp USB Bluetooth khác nhau:

$ lsusb | grep Bluetooth
Bus 007 Device 010: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
$ lsusb | grep Bluetooth
Bus 007 Device 011: ID 0a5c:21e8 Broadcom Corp. BCM20702A0 Bluetooth 4.0

2
Bình luận không dành cho thảo luận mở rộng; cuộc trò chuyện này đã được chuyển sang trò chuyện .
Mitch

Vì vậy, tôi đã tìm ra vấn đề: Tôi nghĩ bạn cần cài đặt vào Windows VM - trình điều khiển Windows Logitech tiêu chuẩn và tham khảo vmmouse_detecttiện ích. xmodmapxinputthậm chí xorg.confsẽ hữu ích trong Kubfox của bạn nhưng không phải trong Windows VM. Vì vậy, trong WinVM, bạn sẽ có thể định cấu hình chuột của mình với các tiện ích Logitech tiêu chuẩn cho Windows.
nhanh chóng

Bạn đã bao giờ giải quyết điều này?
Seth

Không, nó đã không được sửa chữa. có ý tưởng gì không?
wxl

Câu trả lời:


3

Sau rất nhiều đau đớn, tôi đã xoay sở để tạo ra một bản đồ quan trọng thực hiện điều gì đó hữu ích.

Đầu tiên một vài ghi chú (tôi chưa thể bình luận) về câu trả lời trước:

  1. tập lệnh fixMouse do Mr back-up cung cấp không hoạt động, vì đôi khi mục Bàn phím của chuột xuất hiện với tên sai trong xinput, tức là trong trường hợp của tôi, nó hiển thị:

    ⎡ Virtual core pointer                          id=2    [master pointer  (3)]
    ...
    ⎜   ↳ Ultrathin Touch Mouse                     id=11   [slave  pointer  (2)]
    ⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    
    ...
        ↳ AT Translated Set 2 keyboard              id=12   [slave  keyboard (3)]
    

    mặt khác, bạn có thể sử dụng lsinput từ các tiện ích đầu vào để tìm id chính xác:

    lsinput 2>&1|grep -B5 "Ultrathin Touch Mouse"
    /dev/input/event12
       bustype : BUS_BLUETOOTH
       vendor  : 0x46d
       product : 0xb00d
       version : 1792
       name    : "Ultrathin Touch Mouse"
    
  2. vì một số lý do khi đổ bản đồ cho chuột, một số mã được sao chép (các mã trong khoảng từ 0x700e0 đến 0x700e7), hãy cẩn thận để tìm và loại bỏ chúng, hoặc bạn sẽ phát điên.

  3. thay thế tất cả các mã phím bằng KEY_UNKNOWN sẽ ngăn chặn các cụm ký tự ngẫu nhiên, nhưng làm cho các hành động chạm đặc biệt trở nên vô dụng. Thay vào đó, tôi thấy rằng bạn có thể sắp xếp lại một số cử chỉ cho các kết hợp hữu ích. Cụ thể, "vuốt từ trái" gửi mã 0x700e0 + 0x700e3 + 0x7002b, trong khi "vuốt vào từ phải" sẽ gửi 0x700e3 + 0x700e3 + 0x70072. Tôi đã ánh xạ 0x700e3, phổ biến cho cả hai cử chỉ, tới KEY_UNKNOW, để tránh điều đó. Sau đó, tôi đã sử dụng các mã khóa còn lại để tạo CTRL + F8 (lưới máy tính để bàn) và ALT-F2 (người chạy), nhưng tất nhiên bạn có thể tạo bất kỳ kết hợp nào của hai phím bất kỳ. Đây là bản đồ của tôi, hãy cẩn thận khi sao chép / dán để không có dòng trống và không có khoảng trống ban đầu (chúng phá vỡ input-kbd):

    0x700e3 = KEY_UNKNOWN
    0x700e0 = KEY_LEFTCTRL
    0x7002b = KEY_F8
    0x700e2 = KEY_LEFTALT
    0x70072 = KEY_F2
    0x70004 = KEY_UNKNOWN
    0x70005 = KEY_UNKNOWN
    0x70006 = KEY_UNKNOWN
    0x70007 = KEY_UNKNOWN
    0x70008 = KEY_UNKNOWN
    0x70009 = KEY_UNKNOWN
    0x7000a = KEY_UNKNOWN
    0x7000b = KEY_UNKNOWN
    0x7000c = KEY_UNKNOWN
    0x7000d = KEY_UNKNOWN
    0x7000e = KEY_UNKNOWN
    0x7000f = KEY_UNKNOWN
    0x70010 = KEY_UNKNOWN
    0x70011 = KEY_UNKNOWN
    0x70012 = KEY_UNKNOWN
    0x70013 = KEY_UNKNOWN
    0x70014 = KEY_UNKNOWN
    0x70015 = KEY_UNKNOWN
    0x70016 = KEY_UNKNOWN
    0x70017 = KEY_UNKNOWN
    0x70018 = KEY_UNKNOWN
    0x70019 = KEY_UNKNOWN
    0x7001a = KEY_UNKNOWN
    0x7001b = KEY_UNKNOWN
    0x7001c = KEY_UNKNOWN
    0x7001d = KEY_UNKNOWN
    0x7001e = KEY_UNKNOWN
    0x7001f = KEY_UNKNOWN
    0x70020 = KEY_UNKNOWN
    0x70021 = KEY_UNKNOWN
    0x70022 = KEY_UNKNOWN
    0x70023 = KEY_UNKNOWN
    0x70024 = KEY_UNKNOWN
    0x70025 = KEY_UNKNOWN
    0x70026 = KEY_UNKNOWN
    0x70027 = KEY_UNKNOWN
    0x70028 = KEY_UNKNOWN
    0x70029 = KEY_UNKNOWN
    0x7002a = KEY_UNKNOWN
    0x7002c = KEY_UNKNOWN
    0x7002d = KEY_UNKNOWN
    0x7002e = KEY_UNKNOWN
    0x7002f = KEY_UNKNOWN
    0x70030 = KEY_UNKNOWN
    0x70031 = KEY_UNKNOWN
    0x70032 = KEY_UNKNOWN
    0x70033 = KEY_UNKNOWN
    0x70034 = KEY_UNKNOWN
    0x70035 = KEY_UNKNOWN
    0x70036 = KEY_UNKNOWN
    0x70037 = KEY_UNKNOWN
    0x70038 = KEY_UNKNOWN
    0x70039 = KEY_UNKNOWN
    0x7003a = KEY_UNKNOWN
    0x7003b = KEY_UNKNOWN
    0x7003c = KEY_UNKNOWN
    0x7003d = KEY_UNKNOWN
    0x7003e = KEY_UNKNOWN
    0x7003f = KEY_UNKNOWN
    0x70040 = KEY_UNKNOWN
    0x70041 = KEY_UNKNOWN
    0x70042 = KEY_UNKNOWN
    0x70043 = KEY_UNKNOWN
    0x70044 = KEY_UNKNOWN
    0x70045 = KEY_UNKNOWN
    0x70046 = KEY_UNKNOWN
    0x70047 = KEY_UNKNOWN
    0x70048 = KEY_UNKNOWN
    0x70049 = KEY_UNKNOWN
    0x7004a = KEY_UNKNOWN
    0x7004b = KEY_UNKNOWN
    0x7004c = KEY_UNKNOWN
    0x7004d = KEY_UNKNOWN
    0x7004e = KEY_UNKNOWN
    0x7004f = KEY_UNKNOWN
    0x70050 = KEY_UNKNOWN
    0x70051 = KEY_UNKNOWN
    0x70052 = KEY_UNKNOWN
    0x70053 = KEY_UNKNOWN
    0x70054 = KEY_UNKNOWN
    0x70055 = KEY_UNKNOWN
    0x70056 = KEY_UNKNOWN
    0x70057 = KEY_UNKNOWN
    0x70058 = KEY_UNKNOWN
    0x70059 = KEY_UNKNOWN
    0x7005a = KEY_UNKNOWN
    0x7005b = KEY_UNKNOWN
    0x7005c = KEY_UNKNOWN
    0x7005d = KEY_UNKNOWN
    0x7005e = KEY_UNKNOWN
    0x7005f = KEY_UNKNOWN
    0x70060 = KEY_UNKNOWN
    0x70061 = KEY_UNKNOWN
    0x70062 = KEY_UNKNOWN
    0x70063 = KEY_UNKNOWN
    0x70064 = KEY_UNKNOWN
    0x70065 = KEY_UNKNOWN
    0x70066 = KEY_UNKNOWN
    0x70067 = KEY_UNKNOWN
    0x70068 = KEY_UNKNOWN
    0x70069 = KEY_UNKNOWN
    0x7006a = KEY_UNKNOWN
    0x7006b = KEY_UNKNOWN
    0x7006c = KEY_UNKNOWN
    0x7006d = KEY_UNKNOWN
    0x7006e = KEY_UNKNOWN
    0x7006f = KEY_UNKNOWN
    0x70070 = KEY_UNKNOWN
    0x70071 = KEY_UNKNOWN
    0x70073 = KEY_UNKNOWN
    0x70074 = KEY_UNKNOWN
    0x70075 = KEY_UNKNOWN
    0x70076 = KEY_UNKNOWN
    0x70077 = KEY_UNKNOWN
    0x70078 = KEY_UNKNOWN
    0x70079 = KEY_UNKNOWN
    0x7007a = KEY_UNKNOWN
    0x7007b = KEY_UNKNOWN
    0x7007c = KEY_UNKNOWN
    0x7007d = KEY_UNKNOWN
    0x7007e = KEY_UNKNOWN
    0x7007f = KEY_UNKNOWN
    0x70080 = KEY_UNKNOWN
    0x70081 = KEY_UNKNOWN
    0x70082 = KEY_UNKNOWN
    0x70083 = KEY_UNKNOWN
    0x70084 = KEY_UNKNOWN
    0x70085 = KEY_UNKNOWN
    0x70086 = KEY_UNKNOWN
    0x70087 = KEY_UNKNOWN
    0x70088 = KEY_UNKNOWN
    0x70089 = KEY_UNKNOWN
    0x7008a = KEY_UNKNOWN
    0x7008b = KEY_UNKNOWN
    0x7008c = KEY_UNKNOWN
    0x7008d = KEY_UNKNOWN
    0x7008e = KEY_UNKNOWN
    0x7008f = KEY_UNKNOWN
    0x70090 = KEY_UNKNOWN
    0x70091 = KEY_UNKNOWN
    0x70092 = KEY_UNKNOWN
    0x70093 = KEY_UNKNOWN
    0x70094 = KEY_UNKNOWN
    0x70095 = KEY_UNKNOWN
    0x70096 = KEY_UNKNOWN
    0x70097 = KEY_UNKNOWN
    0x70098 = KEY_UNKNOWN
    0x70099 = KEY_UNKNOWN
    0x7009a = KEY_UNKNOWN
    0x7009b = KEY_UNKNOWN
    0x7009c = KEY_UNKNOWN
    0x7009d = KEY_UNKNOWN
    0x7009e = KEY_UNKNOWN
    0x7009f = KEY_UNKNOWN
    0x700a0 = KEY_UNKNOWN
    0x700a1 = KEY_UNKNOWN
    0x700a2 = KEY_UNKNOWN
    0x700a3 = KEY_UNKNOWN
    0x700a4 = KEY_UNKNOWN
    0x700a5 = KEY_UNKNOWN
    0x700a6 = KEY_UNKNOWN
    0x700a7 = KEY_UNKNOWN
    0x700a8 = KEY_UNKNOWN
    0x700a9 = KEY_UNKNOWN
    0x700aa = KEY_UNKNOWN
    0x700ab = KEY_UNKNOWN
    0x700ac = KEY_UNKNOWN
    0x700ad = KEY_UNKNOWN
    0x700ae = KEY_UNKNOWN
    0x700af = KEY_UNKNOWN
    0x700b0 = KEY_UNKNOWN
    0x700b1 = KEY_UNKNOWN
    0x700b2 = KEY_UNKNOWN
    0x700b3 = KEY_UNKNOWN
    0x700b4 = KEY_UNKNOWN
    0x700b5 = KEY_UNKNOWN
    0x700b6 = KEY_UNKNOWN
    0x700b7 = KEY_UNKNOWN
    0x700b8 = KEY_UNKNOWN
    0x700b9 = KEY_UNKNOWN
    0x700ba = KEY_UNKNOWN
    0x700bb = KEY_UNKNOWN
    0x700bc = KEY_UNKNOWN
    0x700bd = KEY_UNKNOWN
    0x700be = KEY_UNKNOWN
    0x700bf = KEY_UNKNOWN
    0x700c0 = KEY_UNKNOWN
    0x700c1 = KEY_UNKNOWN
    0x700c2 = KEY_UNKNOWN
    0x700c3 = KEY_UNKNOWN
    0x700c4 = KEY_UNKNOWN
    0x700c5 = KEY_UNKNOWN
    0x700c6 = KEY_UNKNOWN
    0x700c7 = KEY_UNKNOWN
    0x700c8 = KEY_UNKNOWN
    0x700c9 = KEY_UNKNOWN
    0x700ca = KEY_UNKNOWN
    0x700cb = KEY_UNKNOWN
    0x700cc = KEY_UNKNOWN
    0x700cd = KEY_UNKNOWN
    0x700ce = KEY_UNKNOWN
    0x700cf = KEY_UNKNOWN
    0x700d0 = KEY_UNKNOWN
    0x700d1 = KEY_UNKNOWN
    0x700d2 = KEY_UNKNOWN
    0x700d3 = KEY_UNKNOWN
    0x700d4 = KEY_UNKNOWN
    0x700d5 = KEY_UNKNOWN
    0x700d6 = KEY_UNKNOWN
    0x700d7 = KEY_UNKNOWN
    0x700d8 = KEY_UNKNOWN
    0x700d9 = KEY_UNKNOWN
    0x700da = KEY_UNKNOWN
    0x700db = KEY_UNKNOWN
    0x700dc = KEY_UNKNOWN
    0x700dd = KEY_UNKNOWN
    0x700de = KEY_UNKNOWN
    0x700df = KEY_UNKNOWN
    0x700e1 = KEY_UNKNOWN
    0x700e4 = KEY_UNKNOWN
    0x700e5 = KEY_UNKNOWN
    0x700e6 = KEY_UNKNOWN
    0x700e7 = KEY_UNKNOWN
    0x700e8 = KEY_UNKNOWN
    0x700e9 = KEY_UNKNOWN
    0x700ea = KEY_UNKNOWN
    0x700eb = KEY_UNKNOWN
    0x700ec = KEY_UNKNOWN
    0x700ed = KEY_UNKNOWN
    0x700ee = KEY_UNKNOWN
    0x700ef = KEY_UNKNOWN
    0x700f0 = KEY_UNKNOWN
    0x700f1 = KEY_UNKNOWN
    0x700f2 = KEY_UNKNOWN
    0x700f3 = KEY_UNKNOWN
    0x700f4 = KEY_UNKNOWN
    0x700f5 = KEY_UNKNOWN
    0x700f6 = KEY_UNKNOWN
    0x700f7 = KEY_UNKNOWN
    0x700f8 = KEY_UNKNOWN
    0x700f9 = KEY_UNKNOWN
    0x700fa = KEY_UNKNOWN
    0x700fb = KEY_UNKNOWN
    0x700fc = KEY_UNKNOWN
    0x700fd = KEY_UNKNOWN
    0x700fe = KEY_UNKNOWN
    0x700ff = KEY_UNKNOWN
    0x90001 = 272  # BTN_LEFT
    0x90002 = 273  # BTN_RIGHT
    0x90003 = 274  # BTN_MIDDLE
    0x90004 = 275  # BTN_SIDE
    0x90005 = 276  # BTN_EXTRA
    

Tôi đã không thể có được mã phù hợp cho các lần vuốt bằng hai ngón tay, nhưng một lần nữa tôi không quan tâm vì những cử chỉ đó là không thể thực hiện.

PS Trong trường hợp bạn muốn thử tùy chỉnh các cử chỉ khác, đây là cách tôi tiến hành:

  1. Tôi đã sắp xếp các mục bản đồ, dọn sạch các bản sao và nhận thấy rằng nó bao gồm 252 biểu tượng (cộng với 5 nút).

  2. Tôi đặt mười biểu tượng đầu tiên thành KEY_A, mười biểu tượng sau thành KEY_B và cứ thế cho đến khi 2 biểu tượng cuối cùng trở thành KEY_Z; sau đó tôi tải bản đồ này

  3. Tôi thực hiện các cử chỉ trong một cửa sổ văn bản (hoặc bạn có thể sử dụng "xbindkeys -mk") và ghi chú các chữ cái được tạo ra.

  4. Trong bản đồ, tôi thay đổi tất cả các chữ cái KHÔNG được tạo thành KEY_UNKNOWN, ba chữ cái còn lại thành KEY_A, KEY_B, KEY_C .. KEY_Z, KEY_1, .., KEY_4, sau đó tôi tải MAP mới này.

  5. Tôi thực hiện lại cử chỉ, lưu ý các chữ cái / số được tạo ra: đây là các mã có thể được xác định theo bất cứ điều gì bạn cần để tạo một tổ hợp phím cụ thể.


2

Bạn có thể thử sử dụng input-kbdtừ input-utilsgói:

$ apropos input-kbd
input-kbd (8)        - print or modify keyboard maps for input devices

Sử dụng chỉ mục thiết bị đầu vào (ví dụ 4 cho /dev/input/event4, có thể tìm thấy thông qua lsinputđó nhất thiết phải khác với id được sử dụng xinput), bạn có thể cấu hình lại bản đồ bàn phím bằng cách cung cấp cho nó một tệp bằng công -ftắc, ví dụ:

$ sudo input-kbd -f some-file 4

trong đó some-filecó hình thức scancode = keycode|keyname, trong đó sau đây là tương đương:

0x0001 = KEY_F9
0x0001 = 67

Bạn có thể tìm thấy bản đồ hiện tại với sudo input-kbd 4. Vì bạn cần mở một tệp từ đó /dev, bạn cần phải sử dụng siêu người dùng để đọc sự kiện này.

Cũng lưu ý mặc dù tên rõ ràng gây hiểu lầm, nó cũng hoạt động với chuột.


Bạn có thể đang sử dụng đúng cơ chế, nhưng thật không may, nhìn vào sơ đồ bàn phím , không rõ scancode nào sẽ thay đổi, đặc biệt là một số tên khóa đó hoàn toàn không được xác định. Có lẽ nếu bạn có thể tìm thấy cơ chế để tìm ra định nghĩa của tên khóa, điều đó sẽ hữu ích. +1 để tiến gần hơn.
wxl

Điều gì xảy ra nếu bạn ánh xạ tất cả các KEY_ * thành 0 hoặc một trong các giá trị KEY_UNKNOWN (ví dụ 240)? Hay điều đó vô hiệu hóa một số cử chỉ mà bạn muốn giữ? Để tạo bản đồ mới, bạn có thể dẫn bản đồ hiện tại đi qua awk '/KEY_/ { $3 = 240 } { print }'.
elmicha

Tôi đoán câu hỏi là, nơi tôi có thể tìm ra định nghĩa KEY_UNKNOWN, hoặc cho vấn đề đó , BTN_EXTRA?
wxl

Bạn có thể sử dụng sudo input-events 4để xem nút chuột nào. KEY_UNKNOWN (hy vọng) không in hoặc kích hoạt bất kỳ hành động nào.
elmicha

1
Định nghĩa của các tên khóa là trong /usr/include/linux/input.h, trong đó nêu rõ rằng các tên được mô hình hóa sau USB HUT 1.12 , cho biết mã khóa 232-65535 là "Dành riêng". input-kbd sử dụng name.shở đó để đảo ngược tên khóa -> ánh xạ mã, để cho phép input_kbd in tên cho mã khóa.
elmicha

2

Để tắt các cử chỉ, bạn có thể thay đổi ánh xạ nút bằng evdevtrình điều khiển để 6 "nút" cuối cùng bị vô hiệu hóa như vậy:

  1. nối thêm những điều sau vào /usr/share/X11/xorg.conf.d/10-evdev.confhoặc /etc/X11/xorg.conf.d/10-evdev.conftùy thuộc vào những gì bạn có:

    # custom for Logitech Ultrathin Touch mouse
    
    Section "InputDevice"
        Identifier "Logitech bluetooth Touch Mouse"
        Driver "evdev"
        Option "Name"   "Ultrathin Touch Mouse"
        Option "ButtonMapping" "1 2 3 4 5 6 7 0 0 0 0 0 0"
    EndSection
    
    Section "InputClass"
        Identifier  "Ultrathin Touch Mouse"
        Option "ButtonMapping" "1 2 3 4 5 6 7 0 0 0 0 0 0"
    EndSection
  2. khởi động lại Xmáy chủ vớisudo service lightdm restart

  3. xác nhận với xinput --get-button-map "Ultrathin Touch Mouse"

Bạn có thể thay đổi giá trị của InputDevice Identifiernếu bạn muốn, nhưng điều quan trọng là giữ giá trị cho InputDevice NameInputClass Identifierlà "Chuột cảm ứng Ultrathin", vì đây là cách xinputnhận ra nó.

Đã thử nghiệm với phiên bản Mac, T631.

Nếu bạn muốn biết thêm một chút thông tin evdev, bài viết trên blog này của Joe Shaw đặc biệt sâu sắc về cách nó phù hợp với toàn bộ ngăn xếp đầu vào.


Đây có khả năng là một giải pháp tốt. Tuy nhiên, tôi không thích sử dụng Xcác tệp cấu hình, đặc biệt là các tệp được xác định toàn cầu. Một số đường dẫn nâng cấp nhất định sẽ ghi đè lên các đường dẫn này, điều này không lý tưởng. Ngoài ra, điều này không lý tưởng vì không rõ cách sắp xếp lại các phím. Tôi không nói rằng đó không phải là một giải pháp hợp lệ, nhưng khi nói đến tiền thưởng, câu trả lời khác có thể thắng. Cuối cùng, đó là một mánh khóe mà điều này không thể được thực hiện mà không cần khởi động lại. Có lẽ nếu bạn có thể tìm ra cách nào đó để đối phó evdevtrực tiếp, điều đó có thể tốt, nhưng tôi không tìm thấy điều đó.
wxl

Trân trọng, tôi nghĩ bạn đang yêu cầu quá nhiều. Nhưng dù sao, tôi đã không đăng bài để nhận tiền thưởng, chỉ để có thể giúp đỡ những người có vấn đề tương tự. Nếu họ có ít ràng buộc hơn đối với một giải pháp thì bạn, nó sẽ hữu ích cho họ. Điều đó nói rằng, tôi chắc chắn nếu bạn muốn khởi động lại X, bạn có thể đạt được kết quả tương tự mà không cần khởi động lại. Nó sẽ chỉ là một chút lộn xộn. Nhưng tôi nghe ya về việc nâng cấp. Tôi sẽ phải rất cẩn thận Tôi không phá vỡ mọi thứ trong khi cập nhật.
steev

1
Trân trọng, tôi đồng ý, nhưng hy vọng của tôi là luôn giúp đỡ nhiều hơn là bản thân tôi. Điều đó đang được nói, tôi đánh giá cao câu trả lời của bạn, đó là lý do tại sao tôi + 1'd nó!
wxl

tốt, xin chúc mừng vì bạn thực sự làm việc;)
wxl

1
ồ, tôi đã sai nó dường như đang cư xử, nhưng tôi đã thất bại trong việc thử nghiệm evemu-record. không hoạt động :(
wxl 16/1/2015

1

Tôi đã quản lý để định cấu hình cử chỉ "vuốt cạnh trái" và "vuốt cạnh phải" bằng xbindkeys; điều này có lẽ cũng có thể áp dụng cho hai lần vuốt ngón tay, nhưng tôi không bận tâm đến những điều đó vì dù sao tôi cũng thấy chúng khó thực hiện.

Đây là .xbindkeysrc của tôi

    #Right edge swipe (Send Alt+F2)
    "xte 'keydown Alt_L' 'key F2' 'keyup Alt_L'"
     Alt+Mod4+XF86TouchpadOff
    #Left edge swipe (Send CTRL+F8)
    "xte 'keydown Control_L' 'key F8' 'keyup Control_L'"
     Control+Mod4 + Tab

Tôi đã ánh xạ chúng tới các phím tắt KDE hữu ích, tất nhiên bạn có thể làm bất cứ điều gì khác. Bạn cần chạy xbindkey khi đăng nhập, tôi đã tạo tệp .desktop như được giải thích trong bất kỳ hướng dẫn xbindkeys nào:

    #./.config/autostart/xbindkeys.desktop
    [Desktop Entry]
    Comment[en_GB]=
    Comment=
    Exec=xbindkeys
    GenericName[en_GB]=
    GenericName=
    Icon=system-run
    MimeType=
    Name[en_GB]=
    Name=
    Path=
    StartupNotify=true
    Terminal=false
    TerminalOptions=
    Type=Application
    X-DBUS-ServiceName=
    X-DBUS-StartupType=
    X-KDE-SubstituteUID=false
    X-KDE-Username=

HTH


1

Tôi đã thất vọng về điều này bởi vì tôi không bao giờ có thể làm cho nó hoạt động, mặc dù tất cả các giải pháp được cung cấp, bao gồm cả những giải pháp được cung cấp bởi một người thực sự viết Xmã đầu vào. Điều đó nói rằng, tôi đi khỏi nó và chỉ sử dụng một con chuột có dây bình thường.

Hôm qua tôi đã tìm thấy Ultrathin và quyết định dùng thử lại và nó chỉ hoạt động ™. Điều này đúng ít nhất theo nghĩa là lý do cho câu hỏi này là những cử chỉ này đã được diễn giải theo những cách kỳ lạ và gây rối với quy trình làm việc của tôi. Bây giờ chúng dường như không có tác dụng thực sự, ngoại trừ việc vuốt cạnh trái cho phép tôi trao đổi giữa các tab được sử dụng cuối cùng trong Firefox.

Điều kỳ lạ là những cử chỉ thực sự bị vô hiệu hóa. Tất cả 13 "nút" được trả lại bởi xinput --get-button-map "Ultrathin Touch Mouse". Cũng grep Ultrathin /usr/share/X11/xorg.conf.dkhông trả lại gì cả. Không có NoSymbols liên quan (và không có VoidSymbols nào ) được tìm thấy cùng với xkbcompbất kỳ KEY_UNKNOWNs có liên quan nào input-kbd.

Mặt khác, mọi thứ trông giống nhau evemu-recordngoại trừ thực tế là các cử chỉ chạm hai lần chỉ được coi là BTN_LEFTcác sự kiện đơn giản .

Điều đó nói rằng, một cái gì đó đã thay đổi liên quan đến điều này, nhưng tôi không chắc chắn những gì.

Ngoài ra, tôi chưa thử nghiệm ánh xạ lại, nhưng điều đó thực sự không nằm trong phạm vi của câu hỏi ban đầu.


0

Tôi đã đọc tất cả các câu trả lời và tôi đã viết một đoạn script xung quanh input-kbd (một phần của utils đầu vào) để tự động khắc phục vấn đề này.

Bạn nên chạy fixMouse từ kho lưu trữ này mỗi lần đăng nhập. Nó sẽ:

  1. lắng nghe dbus cho con chuột này
  2. định cấu hình tất cả các tổ hợp phím thành KEY_UNKNOWN

Các tính năng chuột tiêu chuẩn (nút trái; cuộn; v.v.) vẫn hoạt động tốt. Chỉ có các phím bàn phím kỳ lạ được dừng lại.

Nó tồn tại tạm ngưng, ngủ bluetooth, bật chuột, v.v.

Nó làm việc cho tôi.

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.