Как исправить xbindkeys клавиатуру на кнопке мыши, повторяя нажатия клавиш при их удержании?

Как исправить xbindkeys клавиатуру на кнопке мыши, повторяя нажатия клавиш при их удержании?

У меня есть мышь Logitech MX Revolution, на которой есть клавиша XF86Search. Я использовал xdotool, чтобы назначить ее средней кнопкой мыши в файле xbindkeys.

Этот щелчок мыши больше не действует как одно нажатие кнопки, а вместо этого мерцает между включенным и выключенным состояниями при удержании. Это нежелательное поведение делает его непригодным для работы. Например, он не позволяет мне панорамировать холст в графических программах или панорамировать в области просмотра Blender.

Использование xev для считывания сопоставления кнопок показывает чередующиеся мерцающие состояния, похожие на повторные нажатия клавиш на клавиатуре.

Кто-нибудь знает, в чем проблема? У меня однажды была эта проблема в моей новой установке Mint 18.2, но она исчезла после перезагрузки и подзарядки батарей. На этот раз это решение не является ответом, так как это произошло снова при обновлении Mint 18.2 и снова на новой установке Ubuntu.

Я отвязал клавишу поиска в сочетаниях клавиш.

решение1

Решением для прекращения повторения нажатия клавиши является добавление команды xset -r keycode в файл xbindkeys. Это ведет себя так же, как отключение повтора клавиши в settings/keyboard.

Код на месте выглядит так:

"xset -r 225; xdotool mousedown 2"
    m:0x0 + c:225
    XF86Search

"xdotool mouseup 2"
    m:0x0 + c:225 + release
    XF86Search

Хотя это решило эту проблему, реальная проблема, с которой я столкнулся, не была устранена, а именно, кнопка поиска работала идеально как средняя кнопка мыши в таких программах, как Blender. Вышеуказанное решение не работает с модификатором Shift по непонятной мне причине.

Лучшим решением этой проблемы было бы полностью отказаться от xbindkeys и вместо этого включить эмуляцию среднего щелчка, добавив следующий код /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"

Связанный контент