Керування жестами миші Bluetooth, які реєструють події клавіатури


9

тл; д-р

Я щойно купив Logitech T630 . Це миша Bluetooth, яка підтримує декілька подій на клавіатурі за допомогою жестів (PDF). Ці жести витончені та денді, але я їх мало використовую. Мені страшний час позбутися їх.

Я хочу зробити наступне, щоб зменшити пріоритетність:

  1. відключити ці жести
  2. перекроюйте жести (я думаю, що без злому вбудованого програмного забезпечення або зворотної інженерії драйверів пристроїв Windows / OS X це неможливо)

Я не хочу:

  • використовувати Windows
  • відключити всі жести

Більше інформації читайте на…

кнопки та жести

Тринадцять можливих подій миші:

  1. клацання лівою кнопкою миші
  2. середній клацання
  3. клацніть правою кнопкою миші
  4. прокрутити вгору
  5. прокрути вниз
  6. прокрутіть ліворуч
  7. прокрутити праворуч
  8. проведіть по краю вліво
  9. проведіть по краю праворуч
  10. проведіть пальцем ліворуч
  11. проведіть двома пальцями праворуч
  12. двічі натисніть
  13. подвійний дотик двома пальцями

Перші сім є в порядку того, як ОС їх відображає.

Тільки перші три є механічними, всі інші використовують сенсорну поверхню:

дотикові жести

Параметри графічного інтерфейсу

Налаштування в Kubuntu Trusty було легким вітром, але він не підтримує налаштування цих інших жестів.

Ці жести не пов'язані з:

  • тачпад ( synapticsне працює)
  • доступність
  • гарячі куточки
  • стандартні жести миші

Усі налаштування, пов’язані з тими, були перевірені, і всі вони вимкнено.

налаштування командного рядка

lomoco

lomocoУтиліта для допомоги в налаштуванні спеціальних функцій Logitech мишей USB не застосовується.

xinput

Я думав, xinputможе запропонувати допомогу:

$ 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

Зверніть увагу на 13 міток кнопок:

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

Відключення їх не допомогло:

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

Незважаючи на те, що, наприклад, вона може перетворити середню кнопку миші на клацання лівою кнопкою миші:

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

xmodmap

Схожий на ті xinputж результати:

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

inputkbd

Запропонований elmicha нижче , це працює на рівні ядра, намагаючись зробити так, щоб жести призводили до подій нульової клавіатури. Потрібно працювати, але не пощастило і з наступним процесом:

$ 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

Після цього карта клавіш не показує змін.

xkbcomp

Про це запропонував Xхакер на запитання Пітер Хаттерр , безумовно, людина, яка повинна знати, що він робить. Все-таки не щастить:

$ 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

Після цього опис клавіатури не показує змін.

Петро відчув, що це, ймовірно, пов’язано з тим, що Xплутається характер природи пристрою як клавіатури чи миші, подібний до цієї помилки, яка має протилежну проблему. Це може пояснити, чому всі інші очікувані елементи не працюють. Однак він також сказав, що використання evdevне повинно працювати з тієї ж причини.

evdev

Спочатку здавалося, що це працює, але це теж не відбувається. Це намагається використовувати загальний драйвер введення для Xвстановлення відображення кнопок, додаючи наступне до /usr/share/X11/xorg.conf.d/10-evdev.confабо /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

Здається, це працює без помилок у /var/log/Xorg.0.log(використанні grep EE) та xinputпідтверджує відображення кнопки, але це не призводить до ефекту бажання.

Однак, як відомо, це працює для T631.

події на клавіатурі

Я думаю, що проблема полягає в тому, що ці жести генерують події на клавіатурі:

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

Що стосується ключової карти , вони стосуються:

$ 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

Подвійне торкання , здається, нічого не робить.

інші посилання

Це також може допомогти вказати на посилання на подібні проблеми в помилку, коли вищезазначена миша не знаходиться в gnome-bluetoothбазі даних pincode. Потрібно говорити, що подальший коментар до цієї теми офіційно не є темою цього звіту про помилку, але посилання можуть допомогти додати певну точку зору на суть цієї проблеми.

Ось вихід evemu-describe /dev/input/event4FWIW.

Bluetooth адаптери

FWIW Я використовував два різні адаптери Bluetooth Bluetooth:

$ 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
Коментарі не для розширеного обговорення; ця розмова була переміщена до чату .
Мітч

тому я вирішив проблему: я думаю, вам потрібно встановити свій Windows VM - стандартний драйвер Windows Logitech і звернутися до vmmouse_detectутиліти. xmodmapі xinputнавіть xorg.confстане в нагоді під вашим Kubuntu, але не під Windows VM. Отже, під WinVM ви маєте можливість налаштувати мишу за допомогою стандартних утиліт Logitech для Windows.
стрімкий

Ви коли-небудь вирішували це?
Сет

ні, це не було виправлено. отримали ідеї?
wxl

Відповіді:


3

Після сильного болю мені вдалося створити ключову карту, яка робить щось корисне.

Спочатку пару приміток (я поки не можу коментувати) попередньої відповіді:

  1. скрипт fixMouse, наданий містом резервного копіювання, не працює, тому що іноді запис клавіатури миші з'являється з неправильним ім'ям у xinput, тобто в моєму випадку він показує:

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

    з іншого боку, ви можете використовувати lsinput від input-utils, щоб знайти правильний ідентифікатор:

    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. чомусь під час скидання карти миші деякі коди дублюються (ті, що знаходяться між 0x700e0 та 0x700e7), будьте обережні, щоб їх знайти та усунути, інакше ви зійдете з розуму.

  3. заміна всіх клавішних кодів на KEY_UNKNOWN запобігає сплеску випадкових символів, але робить спеціальні дії дотику марними. Натомість я виявив, що ви можете переробити деякі жести до корисних комбінацій. Зокрема, "проведіть пальцем зліва" надсилає коди 0x700e0 + 0x700e3 + 0x7002b, тоді як "проведіть праворуч" надсилає 0x700e3 + 0x700e3 + 0x70072. Я скопіював 0x700e3, що є спільним для обох жестів, KEY_UNKNOW, щоб вимкнути це. Тоді я використовував решта кодів ключів для створення CTRL + F8 (настільна сітка) та ALT-F2 (бігун), але, звичайно, ви можете створити будь-яку комбінацію будь-яких двох клавіш. Ось моя карта, будьте обережні, коли копіюєте / вставляєте, щоб не залишалося порожніх рядків і жодних початкових пробілів (вони порушують 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
    

Мені не вдалося отримати належних кодів для проведення пальців двома пальцями, але знову це мені байдуже, оскільки ці жести неможливо виконати.

PS Якщо ви хочете спробувати налаштувати інші жести, ось як я дійшов:

  1. Я відсортував записи на карті, очистив дублікати і помітив, що вона містить 252 символи (плюс 5 кнопок).

  2. Я встановив перші десять символів KEY_A, наступні десять - KEY_B і так далі, поки останні 2 не стали KEY_Z; тоді я завантажив цю карту.

  3. Я виконую жести у текстовому вікні (або ви можете використовувати "xbindkeys -mk") і беру до відома створені літери.

  4. На карті я змінюю всі літери, які НЕ створюються на KEY_UNKNOWN, три залишилися на KEY_A, KEY_B, KEY_C .. KEY_Z, KEY_1, .., KEY_4, потім завантажую цю нову карту.

  5. Я знову виконую жест, беру до відома випущені букви / цифри: це коди, які можна визначити, до чого потрібно, щоб скласти певну комбінацію клавіш.


2

Ви можете спробувати використовувати input-kbdз input-utilsпакета:

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

Використовуючи індекс пристрою введення (наприклад, 4 для /dev/input/event4, який можна знайти, за допомогою lsinputякого обов'язково відрізняється від використовуваного ідентифікатора xinput), ви можете переконфігурувати карту клавіатури, подаючи в неї файл за допомогою -fперемикача, наприклад

$ sudo input-kbd -f some-file 4

де some-fileформа приймає форму scancode = keycode|keyname, де такі еквіваленти:

0x0001 = KEY_F9
0x0001 = 67

Ви можете знайти поточну карту за допомогою sudo input-kbd 4. Оскільки вам потрібно відкрити файл із /dev, вам потрібно скористатися суперпользователем, щоб прочитати це.

Також зауважте, незважаючи на те, що це ім'я очевидно вводить в оману, воно працює і з мишами.


Ви могли б бути на правильний механізм, але, на жаль , дивлячись на розкладці клавіатури , не ясно , що сканкод зміни, особливо з урахуванням того, що деякі з цих найменуванні ключів повністю НЕ визначені. Можливо, якщо ви зможете знайти механізм з'ясування визначення ключових імен, це було б корисно. +1 для наближення.
wxl

Що станеться, якщо зіставити всі KEY_ * на 0 або одне з KEY_UNKNOWN значень (наприклад, 240)? Або це відключає деякі жести, які ви хочете зберегти? Щоб створити нову карту, ви можете передати поточну карту awk '/KEY_/ { $3 = 240 } { print }'.
elmicha

Я думаю, питання полягає в тому, де я можу дізнатись визначення KEY_UNKNOWNабо з цього приводу BTN_EXTRA?
wxl

Ви можете використовувати, sudo input-events 4щоб побачити, яка кнопка миші, яка. KEY_UNKNOWN (сподіваємось) не друкує і не викликає жодних дій.
elmicha

1
Визначення імен ключів міститься в /usr/include/linux/input.h, де зазначено, що імена моделюються після USB HUT 1.12 , в якому говориться, що коди ключів 232-65535 є "Зарезервовані". input-kbd використовує name.shтам, щоб змінити ім'я ключа -> зіставлення коду, щоб включити input_kbd для друку імен для ключових кодів.
elmicha

2

Щоб відключити жести, ви можете змінити відображення кнопок із evdevдрайвером, щоб усі 6 останніх кнопок були відключені так:

  1. додаючи наступне до /usr/share/X11/xorg.conf.d/10-evdev.confабо /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
  2. перезапуск Xсервера за допомогоюsudo service lightdm restart

  3. підтвердити с xinput --get-button-map "Ultrathin Touch Mouse"

Ви можете змінити значення властивості , InputDevice Identifierякщо ви хочете, але важливо , щоб зберегти значення InputDevice Nameі InputClass Identifierяк «ультратонкой Touch Mouse» , так як це, як xinputце визнає.

Тестовано з версією Mac, T631.

Якщо ви хочете трохи більше інформації про evdevце, ця публікація блогу Джо Шоу особливо проникливою щодо того, як вона вписується у весь вхідний стек.


Це потенційно вдале рішення. Однак я не люблю використовувати Xконфігураційні файли, особливо глобально визначені. Окремі шляхи оновлення замінять їх, що не ідеально. Крім того, це не ідеально, оскільки не зрозуміло, як перевпорядкувати клавіші. Я не кажу, що це не правильне рішення, але якщо справа доходить до душі, інша відповідь може виграти. Нарешті, це проміжок, який неможливо реалізувати без перезавантаження. Можливо, якби ви могли придумати якийсь спосіб вирішити напрямок evdev, це може бути приємно, але я такого не знайшов.
wxl

З повагою, я думаю, ви просите занадто багато. Але в будь-якому випадку, я не публікував, щоб отримати винагороду, просто щоб допомогти тим, у кого є подібні проблеми. Якщо у них менше обмежень щодо рішення, то ви, тоді це повинно бути їм корисним. З цього приводу я впевнений, що якщо ви хочете перезапустити X, ви могли б досягти такого ж результату без перезавантаження. Це було б просто безладно. Але я чую про оновлення. Я повинен бути дуже обережним, щоб я не порушував речі під час оновлення.
steev

1
з повагою, я згоден, але я сподіваюся, що завжди допоможу більше, ніж просто я. як сказано, я ціную вашу відповідь, саме тому я поставив це +1!
wxl

ну, вітаю, бо твоя насправді працює;)
wxl

1
omg, я помилявся. це, здавалося, веде себе, але я не зміг насправді випробувати evemu-record. не працює :(
wxl

1

Мені вдалося налаштувати жести "пальцем по лівому краю" та "пальцем правого краю" за допомогою xbindkeys; це, мабуть, може стосуватися і двох пальців, але я не турбувався з тими, оскільки мені це важко зробити.

Це мій .xbindkeysrc

    #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

Я перерахував їх на корисні ярлики KDE, звичайно, ви можете зробити все інше. Вам потрібно запустити xbindkeys при вході в систему, я створив файл .desktop, як пояснено в будь-яких навчальних посібниках xbindkeys:

    #./.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

Я розчарувався в цій справі, тому що я ніколи не міг змусити її працювати, незважаючи на всі надані рішення, включаючи ті, які надає хтось, хто насправді пише Xвхідний код. Це сказало, що я пішов від цього і просто використав звичайну, зав'язану мишкою.

Вчора я знайшов Ultrathin і вирішив спробувати його ще раз, і це просто працює ™. Це вірно принаймні в тому сенсі, що причина цього питання полягає в тому, що ці жести інтерпретувались дивними способами і псували мій робочий процес. Тепер вони, схоже, не мають реального ефекту, за винятком того, що пальцем лівий край дозволяє мені переходити між останніми використаними вкладками у Firefox.

Що дивно - це те, що жести фактично не вимкнені. Усі 13 "кнопок" повертаються xinput --get-button-map "Ultrathin Touch Mouse". Також grep Ultrathin /usr/share/X11/xorg.conf.dнічого не повертає. Немає відповідних NoSymbols (і жодних VoidSymbols взагалі) не знайдено, xkbcompані будь-яких відповідних KEY_UNKNOWNs input-kbd.

З іншого боку, все виглядає так само, за evemu-recordвинятком того факту, що жести подвійного натискання просто сприймаються як прості BTN_LEFTподії.

Це сказало, що щось змінилося стосовно цього, але я не впевнений у чому.

Крім того, я не перевіряв перекомпонування речей, але це насправді не входило в рамки оригінального питання.


0

Я прочитав усі відповіді і написав сценарій навколо input-kbd (частина вхідних утиліт), щоб автоматично виправити цю проблему.

Ви повинні запустити fixMouse з цього сховища раз на кожен вхід. Це буде:

  1. слухати dbus для цієї миші
  2. налаштуйте всі натискання клавіш на KEY_UNKNOWN

Стандартні функції миші (ліва кнопка; прокрутка тощо) як і раніше добре працюють. Зупиняються лише дивні клавіші клавіатури.

Він витримує призупинення, сон Bluetooth, ввімкнення миші тощо.

Це працює для мене.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.