У меня есть мышь Logitech MX Revolution, на которой есть клавиатурный ключ XF86Search. Я использовал xdotool, чтобы отобразить его как среднюю кнопку мыши внутри моего файла xbindkeys.
Этот щелчок мыши больше не действует как одно нажатие кнопки, а вместо этого мерцает между состояниями включения и выключения при удержании. Это нежелательное поведение делает его непригодным для работы. Например, это препятствует тому, чтобы я мог панорамировать холст в графических программах или из панорамирования в видовом окне Blender.
Использование xev для чтения отображения кнопок показывает, что чередующиеся состояния мерцают, подобно нажатию клавиатуры повторяющиеся ключи.
Кто-нибудь имеет представление о том, в чем проблема? У меня когда-то была эта проблема в моей новой установке Mint 18.2, но она ушла после перезагрузки и подзарядки моих батарей. На этот раз это решение не является ответом, как это произошло снова при обновлении Mint 18.2, и снова в новой установке Ubuntu.
Я отключил ключ поиска в быстрых комбинациях клавиш.
Решение, чтобы остановить повторное нажатие клавиши, заключается в добавлении команды xset -r keycode в файл xbindkeys. Это ведет себя так же, как отключение повтора клавиш в настройках / клавиатуре.
код выглядит следующим образом:
"xset -r 225; xdotool mousedown 2"
m:0x0 + c:225
XF86Search
"xdotool mouseup 2"
m:0x0 + c:225 + release
XF86Search
Хотя это решило эту проблему, реальной проблемой я был не было исправлено, что привело к тому, что кнопка поиска отлично работала как средняя кнопка мыши в таких программах, как Blender. Вышеупомянутое решение не очень хорошо работает с модификатором Shift по причине, которую я не понимаю.
Лучшим решением этой проблемы было полностью отказаться от xbindkeys и вместо этого включить эмуляцию среднего клика, добавив этот код to /etc/sysctl.conf:
# Enable mouse button emulation
dev.mac_hid.mouse_button_emulation = 1
# Set 2nd button to 217 - the middle button of MX Revolution mouse.
dev.mac_hid.mouse_button2_keycode = 217
После этого мне пришлось создать файл udev в /etc/udev/rules.d/, где он будет вызывать скрипт всякий раз, когда он увидит, что мой ключ подключен. Этот скрипт содержит команду sysctl --system, который необходим для эмуляции мыши 2. По какой-то причине он не включен по умолчанию, что я хотел бы изучить позже.
Это мой файл udev, характерный для моего ключа-logitech:
SUBSYSTEM=="usb", ENV{ID_VENDOR_ID}=="046d", RUN+="/bin/sh /home/user/mouse-initialize-settings.sh"
Решение, чтобы остановить повторное нажатие клавиши, заключается в добавлении команды xset -r keycode в файл xbindkeys. Это ведет себя так же, как отключение повтора клавиш в настройках / клавиатуре.
код выглядит следующим образом:
"xset -r 225; xdotool mousedown 2"
m:0x0 + c:225
XF86Search
"xdotool mouseup 2"
m:0x0 + c:225 + release
XF86Search
Хотя это решило эту проблему, реальной проблемой я был не было исправлено, что привело к тому, что кнопка поиска отлично работала как средняя кнопка мыши в таких программах, как Blender. Вышеупомянутое решение не очень хорошо работает с модификатором Shift по причине, которую я не понимаю.
Лучшим решением этой проблемы было полностью отказаться от xbindkeys и вместо этого включить эмуляцию среднего клика, добавив этот код to /etc/sysctl.conf:
# Enable mouse button emulation
dev.mac_hid.mouse_button_emulation = 1
# Set 2nd button to 217 - the middle button of MX Revolution mouse.
dev.mac_hid.mouse_button2_keycode = 217
После этого мне пришлось создать файл udev в /etc/udev/rules.d/, где он будет вызывать скрипт всякий раз, когда он увидит, что мой ключ подключен. Этот скрипт содержит команду sysctl --system, который необходим для эмуляции мыши 2. По какой-то причине он не включен по умолчанию, что я хотел бы изучить позже.
Это мой файл udev, характерный для моего ключа-logitech:
SUBSYSTEM=="usb", ENV{ID_VENDOR_ID}=="046d", RUN+="/bin/sh /home/user/mouse-initialize-settings.sh"