Управление жестами мыши Bluetooth, которые регистрируют события клавиатуры
ТЛ; др
Я только что купил Logitech T630. Это мышь Bluetooth, которая поддерживает несколько событий клавиатуры с помощью жестов (PDF). Эти жесты хороши, но я их мало использую. У меня ужасное время избавляться от них.
Я хочу сделать следующее в порядке уменьшения приоритета:
- отключить эти жесты
- переназначить жесты (я думаю, что без взлома прошивки или обратного инжиниринга драйверов устройств Windows/OS X это невозможно)
Я не хочу:
- использовать Windows
- отключить все жесты
Для получения дополнительной информации читайте дальше...
кнопки и жесты
Тринадцать возможных событий мыши:
- щелчок левой кнопкой мыши
- средний щелчок
- щелкните правой кнопкой мыши
- прокрутить вверх
- прокрутить вниз
- прокрутить влево
- прокрутить вправо
- проведите край влево
- проведите край вправо
- два пальца влево
- два пальца вправо
- двойное нажатие
- двойное касание двумя пальцами
Первые семь расположены в порядке того, как ОС отображает их.
Только первые три являются механическими - все остальные используют сенсорную поверхность:
Параметры графического интерфейса
Настроить в Kubuntu Trusty было очень просто, но он мало поддерживает настройку этих других жестов.
Эти жесты не связаны с:
- сенсорная панель (
synaptics
не работает) - доступность
- горячие углы
- стандартные жесты мыши
Все настройки, связанные с ними, были проверены, и все они отключены.
настройки командной строки
lomoco
lomoco
Утилита для настройки специальных функций USB-мышей Logitech не применяется.
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
база данных пин-кодов Излишне говорить, что дальнейшие комментарии по этому вопросу официально являются оффтопическими в этом отчете об ошибках, но ссылки могут помочь добавить некоторое представление о природе этой проблемы.
Вот вывод evemu-describe /dev/input/event4
FWIW.
Адаптеры Bluetooth
Я использовал два разных USB-адаптера 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
6 ответов
После большой боли мне удалось создать карту ключей, которая делает что-то полезное.
Сначала пара замечаний (пока не могу комментировать) предыдущего ответа:
Сценарий fixMouse, предоставленный резервной копией Mr, не работает, потому что иногда в сообщении Keyboard мыши появляется неверное имя в 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"
по какой-то причине при сбросе карты для мыши некоторые коды дублируются (коды от 0x700e0 до 0x700e7), будьте осторожны, чтобы найти и устранить их, иначе вы сойдете с ума.
замена всех кодов клавиш на 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 Если вы хотите попробовать настроить другие жесты, вот как я поступил:
Я отсортировал записи на карте, очистил дубликаты и заметил, что она состоит из 252 символов (плюс 5 кнопок).
Я установил первые десять символов на KEY_A, следующие десять на KEY_B и так далее до последних двух, которые стали KEY_Z; Затем я загрузил эту карту.
Я выполняю жесты в текстовых окнах (или вы можете использовать "xbindkeys -mk") и записывает полученные буквы.
На карте я заменяю все буквы, НЕ созданные на KEY_UNKNOWN, оставшиеся три на KEY_A, KEY_B, KEY_C.. KEY_Z, KEY_1,.., KEY_4, затем загружаю эту новую MAP.
Я снова выполняю этот жест, отмечая полученные буквы / цифры: это коды, которые можно определить для любой комбинации клавиш.
Вы можете попробовать использовать 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
Вам нужно использовать суперпользователя, чтобы событие прочитало это.
Также обратите внимание, что, несмотря на явно вводящее в заблуждение название, оно работает и с мышами.
Чтобы отключить жесты, вы можете изменить отображение кнопок с помощью evdev
драйвер, так что последние 6 "кнопок" все отключены так:
добавив следующее к
/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
перезапуск
X
сервер сsudo service lightdm restart
- подтвердить с
xinput --get-button-map "Ultrathin Touch Mouse"
Вы можете изменить значение InputDevice Identifier
если хотите, но важно сохранить значение для InputDevice Name
а также InputClass Identifier
как "Ультратонкая сенсорная мышь", так как это как xinput
признает это.
Протестировано с версией Mac, T631.
Если вы хотите немного больше информации о evdev
Этот пост в блоге Джо Шоу особенно проницателен о том, как он вписывается во весь стек ввода.
Я был разочарован этой вещью, потому что я никогда не мог заставить это работать, несмотря на все предоставленные решения, включая те, которые предоставлены кем-то, кто фактически пишет X
Введите код Тем не менее, я отошел от него и просто использовал обычную проводную мышь.
Вчера я нашел Ultrathin и решил попробовать еще раз, и он просто работает ™. Это верно, по крайней мере, в том смысле, что причина этого вопроса в том, что эти жесты интерпретировались странным образом и мешали моему рабочему процессу. Теперь они, кажется, не имеют никакого реального эффекта, за исключением того, что смахивание по левому краю позволяет мне переключаться между последними использованными вкладками в Firefox.
Странно то, что эти жесты никоим образом не отключены. Все 13 "кнопок" возвращены xinput --get-button-map "Ultrathin Touch Mouse"
, Также grep Ultrathin /usr/share/X11/xorg.conf.d
ничего не возвращает Там нет соответствующих NoSymbol
с (и нет VoidSymbol
ы вообще) нашел с xkbcomp
ни какие-либо соответствующие KEY_UNKNOWN
с input-kbd
,
С другой стороны, все выглядит одинаково в evemu-record
за исключением того факта, что жесты двойного касания просто принимаются как простые BTN_LEFT
События.
Тем не менее, что-то изменилось по отношению к этому, но я не уверен, что.
Кроме того, я не проверял переназначение вещей, но это не было в рамках оригинального вопроса.
Мне удалось настроить жесты "смахивание по левому краю" и "смахивание по правому краю" с помощью 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=
НТН
Я прочитал все ответы и написал скрипт для input-kbd (часть input-utils), чтобы автоматически решить эту проблему.
Вы должны запускать fixMouse из этого хранилища один раз при каждом входе в систему. Будет:
- слушайте dbus для этой мыши
- настроить все нажатия клавиш на KEY_UNKNOWN
Стандартные функции мыши (левая кнопка; прокрутка и т. Д.) По-прежнему работают нормально. Только странные клавиши клавиатуры останавливаются.
Он выживает в режиме ожидания, сна Bluetooth, включения-выключения мыши и т. Д.
Меня устраивает.