ТЛ; др
Я только что купил Logitech T630 . Это мышь Bluetooth, которая поддерживает несколько событий клавиатуры с помощью жестов (PDF). Эти жесты хороши, но я их мало использую. У меня ужасное время избавляться от них.
Я хочу сделать следующее в порядке уменьшения приоритета:
- отключить эти жесты
- переназначить жесты (я думаю, что без взлома прошивки или обратного инжиниринга драйверов устройств Windows / OS X это невозможно)
Я не хочу:
- использовать Windows
- отключить все жесты
Для получения дополнительной информации читайте дальше ...
кнопки и жесты
Тринадцать возможных событий мыши:
- щелчок левой кнопкой мыши
- средний щелчок
- щелкните правой кнопкой мыши
- прокрутить вверх
- прокрутить вниз
- прокрутить влево
- прокрутить вправо
- проведите край влево
- проведите край вправо
- два пальца влево
- два пальца вправо
- двойное нажатие
- двойное касание двумя пальцами
Первые семь расположены в порядке того, как ОС отображает их.
Только первые три являются механическими - все остальные используют сенсорную поверхность:
Параметры графического интерфейса
Настроить в 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
указанная мышь не находится в базе данных pin-кода. Излишне говорить, что дальнейшие комментарии по этому вопросу официально являются оффтопическими в этом отчете об ошибке, но ссылки могут помочь добавить некоторое представление о природе этой проблемы.
Вот вывод 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
vmmouse_detect
утилите.xmodmap
иxinput
дажеxorg.conf
будет полезен под вашей Kubuntu, но не под Windows VM. Таким образом, в WinVM вы сможете настроить мышь с помощью стандартных утилит Logitech для Windows.Ответы:
После большой боли мне удалось создать карту ключей, которая делает что-то полезное.
Сначала пара замечаний (я пока не могу комментировать) предыдущего ответа:
сценарий fixMouse, предоставленный Mr-back-up, не работает, потому что иногда в сообщении Keyboard мыши появляется неверное имя в xinput, то есть в моем случае оно показывает:
с другой стороны, вы можете использовать lsinput из input-utils, чтобы найти правильный идентификатор:
По какой-то причине при сбросе карты для мыши некоторые коды дублируются (от 0x700e0 до 0x700e7), будьте осторожны, чтобы найти и устранить их, иначе вы сойдете с ума.
замена всех кодов клавиш на KEY_UNKNOWN предотвращает всплески случайных символов, но делает специальные сенсорные действия бесполезными. Вместо этого я обнаружил, что некоторые жесты можно переназначить на полезные комбинации. В частности, «пролистывание слева» отправляет коды 0x700e0 + 0x700e3 + 0x7002b, а «пролистывание справа» отправляет 0x700e3 + 0x700e3 + 0x70072. Я сопоставил 0x700e3, который является общим для обоих жестов, с KEY_UNKNOW, чтобы убрать его с дороги. Затем я использовал оставшиеся коды клавиш для создания CTRL + F8 (сетка рабочего стола) и ALT-F2 (бегун), но, конечно, вы можете создать любую комбинацию любых двух ключей. Вот моя карта, будьте осторожны при копировании / вставке, чтобы не оставлять пустых строк и начальных пробелов (они нарушают input-kbd):
Я не смог получить правильные коды для ударов двумя пальцами, но опять-таки мне все равно, потому что эти жесты невозможно выполнить.
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
пакета:Используя индекс устройства ввода (например, 4 для
/dev/input/event4
, который может быть найден черезlsinput
который обязательно отличается от идентификатора, используемого вxinput
), вы можете перенастроить карту клавиатуры, передав ей файл с-f
переключателем, напримергде
some-file
принимает формуscancode = keycode|keyname
, где следующие эквивалентны:Вы можете найти текущую карту с
sudo input-kbd 4
. Так как вам нужно открыть файл/dev
, вам нужно использовать superuser для чтения этого события.Также обратите внимание, что, несмотря на явно вводящее в заблуждение название, оно работает и с мышами.
источник
awk '/KEY_/ { $3 = 240 } { print }'
.KEY_UNKNOWN
или в этом отношенииBTN_EXTRA
?sudo input-events 4
чтобы увидеть, какая кнопка мыши какая. KEY_UNKNOWN (надеюсь) не печатает и не запускает никаких действий.name.sh
там, чтобы изменить имя ключа -> отображение кода, чтобы позволить input_kbd печатать имена для кодов ключей.Чтобы отключить жесты, вы можете изменить отображение кнопок с помощью
evdev
драйвера, чтобы последние 6 «кнопок» были отключены следующим образом:добавление следующего к
/usr/share/X11/xorg.conf.d/10-evdev.conf
или в/etc/X11/xorg.conf.d/10-evdev.conf
зависимости от того, что у вас есть:перезапуск
X
сервера сsudo service lightdm restart
xinput --get-button-map "Ultrathin Touch Mouse"
Вы можете изменить значение,
InputDevice Identifier
если хотите, но важно сохранить значениеInputDevice Name
иInputClass Identifier
как «Ультратонкая сенсорная мышь», поскольку именно такxinput
оно и распознается.Протестировано с версией Mac, T631.
Если вам нужна дополнительная информация
evdev
, этот пост Джо Шоу особенно проницателен в том, как он вписывается во весь стек ввода.источник
X
файлы конфигурации, особенно глобально определенные. Некоторые пути обновления перезаписывают их, что не идеально. Кроме того, это не идеально, потому что не ясно, как переназначить ключи. Я не говорю, что это неверное решение, но когда дело доходит до щедрости, другой ответ может победить. ☺ Наконец, обидно, что это невозможно реализовать без перезапуска. Может быть, если бы вы моглиevdev
найти какой- то способ иметь дело напрямую, это было бы неплохо, но я не нашел такой вещи.evemu-record
. не работает :(Мне удалось настроить жесты «смахивание по левому краю» и «смахивание по правому краю» с помощью xbindkeys; это, вероятно, может относиться и к двум пальцам, но я не стал беспокоиться о них, так как мне все равно сложно их выполнять.
Это мой .xbindkeysrc
Я сопоставил их с полезными ярлыками KDE, конечно, вы можете сделать что-нибудь еще. Вам нужно запустить xbindkeys при входе в систему, я создал файл .desktop, как объяснено в любых руководствах по xbindkeys:
НТН
источник
Я был разочарован этой вещью, потому что я никогда не мог заставить ее работать, несмотря на все предоставленные решения, включая те, которые предоставлены кем-то, кто фактически пишет
X
входной код. Тем не менее, я отошел от него и просто использовал обычную проводную мышь.Вчера я нашел Ultrathin и решил попробовать снова, и он просто работает ™. Это верно по крайней мере в том смысле, что причина этого вопроса в том, что эти жесты интерпретировались странным образом и мешали моему рабочему процессу. Теперь они, кажется, не имеют никакого реального эффекта, за исключением того, что пролистывание по левому краю позволяет мне переключаться между последними использованными вкладками в Firefox.
Странно то, что эти жесты никоим образом не отключены. Все 13 "кнопок" возвращены
xinput --get-button-map "Ultrathin Touch Mouse"
. Иgrep Ultrathin /usr/share/X11/xorg.conf.d
ничего не возвращает. Нет соответствующихNoSymbol
s (и вообще нетVoidSymbol
s) сxkbcomp
соответствующимиKEY_UNKNOWN
sinput-kbd
.С другой стороны, все выглядит одинаково, за
evemu-record
исключением того факта, что жесты двойного касания воспринимаются как простыеBTN_LEFT
события.Тем не менее, что-то изменилось по отношению к этому, но я не уверен, что.
Кроме того, я не проверял переназначение вещей, но это не было действительно в рамках оригинального вопроса.
источник
Я прочитал все ответы и написал скрипт для input-kbd (часть input-utils), чтобы автоматически решить эту проблему.
Вы должны запускать fixMouse из этого хранилища один раз при каждом входе в систему. Это будет:
Стандартные функции мыши (левая кнопка; прокрутка и т. Д.) По-прежнему работают нормально. Только странные клавиши клавиатуры останавливаются.
Он выживает в режиме ожидания, сна Bluetooth, включения-выключения мыши и т. Д.
Меня устраивает.
источник