Привязка Кнопки мыши к Другой Кнопке мыши с xbindkeys - ошибки XEV

У меня есть Logitech M720 Mouse, что я надеюсь связать боковую кнопку (обычно страница вперед) к кнопке щелчка средней кнопкой - что-то, что я сделал в своем Windows с Logitech Options.

После исследования я нашел, что должен буду сделать это через xbindkeys и xautomation.

Я проверил нажатия клавиш с xev и найденный, который боковая кнопка button 9, и середина scrollwheel кнопка button 2.

Я затем сделал мой .xbindkeysrc файл как таковой:

"xte 'mouseclick 2'"
  b:9

Однако после переопроса емкостно-резистивного файла на xbindkeys, ключ связывает, не распознан нигде в моей системе и выполнении xev протестируйте возвращает специфический результат:

РЕЗУЛЬТАТ USUALS ПРИ УГНЕТЕНИИ КНОПКИ 9

ButtonPress event, serial 37, synthetic NO, window 0x4a00001,
    root 0x1dd, subw 0x0, time 38400097, (160,106), root:(160,169),
    state 0x0, button 9, same_screen YES

ButtonRelease event, serial 37, synthetic NO, window 0x4a00001,
    root 0x1dd, subw 0x0, time 38400237, (160,106), root:(160,169),
    state 0x0, button 9, same_screen YES

РЕЗУЛЬТАТЫ ПОСЛЕ МОДИФИКАЦИИ ФАЙЛА XBINDKEYSRC (КНОПКА 9)

KeymapNotify event, serial 37, synthetic NO, window 0x0,
    keys:  4294967261 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   

даже после убирания моего .xbindkeysrc файл, вывод является все еще тем же и только возвратится к нормальному после того, как я killall xbindkeys и перезапуск путем ввода xbindkeys в терминале.

Я нашел этот этот поток с потенциальным решением, но к сожалению не работал на меня.

Привязка нажатия кнопки к чему-либо еще, например, "xte 'key a'" работы как ожидалось.

Кто-либо с какими-либо указателями, что я мог бы делать неправильно?

Удачи.

2
задан 25 March 2019 в 19:32

1 ответ

xbindkeys

Я думаю, что Вам нужна третья строка для каждого из Ваших ярлыков. Возможно, это не необходимость, но я смотрю на примеры, которые я настроил:

"pactl set-sink-volume @DEFAULT_SINK@ +5%"
    m:0x4 + c:112
    Control + Prior

"pactl set-sink-volume @DEFAULT_SINK@ -10%"
    m:0x4 + c:117
    Control + Next

# xautomation package
# Print Date
'"xte "keyup Super_L" "keyup Insert" "str `date +%Y.%m.%d`" "usleep 10" "keydown Super_L""'
    m:0x40 + c:118
    Mod4 + Insert

Так, каждая из моих записей имеет третью строку, которая определяет ярлык. Кроме того, мы должны отпустить нажатые клавиши сами, и обычно перед командой, которую мы выполняем. Это далее сложно со Сдвигом, поскольку я нашел, что Сдвиг выпуска вызывает проблемы.


xmodmap (конкретный пользователь)

Как правило, xbindkeys используется для сложной привязки, или выполнять сценарии/команды. Вы могли дать modmap попытка, которая могла бы быть ближе к ядру того, что Вы пытаетесь выполнить. Используя xev, или evtest, можно определить Код клавиши, который используется мышью, и затем скажите X интерпретировать его как другой Код клавиши.

~/.Xmodmap

keycode 97 = Control_R NoSymbol Control_R

~/.xinitrc

[[ -f ~/.Xmodmap ]] && xmodmap ~/.Xmodmap

Это говорит X, как обработать Код клавиши 97 (случайный, немышь) при нормальном нажатии, или с модификаторами (Сдвиг, Высокий звук, и т.д.). У Вас были бы отображения в ~/.Xmodmap и загрузите его через $ modmap ~/.Xmodmap, обычно рядом X, таким образом, в ~/.xinitrc. evtest 'лучше', чем xev в этом это поможет Вам найти устройство, которое Вы хотите протестировать, по сравнению с заставляют Вас возиться вокруг системы, находящей его в /dev списки.


udev (в масштабе всей системы)

Другое решение состоит в том, чтобы использовать udev/evdev, и иметь систему выполняют этот перевод, независимо от того, если/когда Вы запускаете X, и с каждым соединением устройства. Это немного более сложно, но после того как Вы привыкаете к некоторым настройкам, можно работать для миграции их здесь.

Пользовательские правила являются местами в /etc/udev/hwdb.d/ Это - аппаратная база данных [конфигурация] каталог. Они загружаются в порядке, таким образом, файлы обычно снабжаются префиксом две цифры, но это только имеет значение, когда более поздние правила перезаписывают более ранние правила. Это - список устройств, Шиной USB, устройством и идентификаторами поставщика. Этот метод идеален, потому что можно повторно отобразить ключи для определенной клавиатуры и не всех клавиатур.

/etc/udev/hwdb.d/99-myMouse.hwdb

evdev:input:bIDvIDpID1*
  KEYBOARD_KEY_210=menu

evdev:input:bIDvIDpID2*
  KEYBOARD_KEY_210=menu

Этот пример находит два устройства ввода данных, на той же Шине USB, и от того же Поставщика, но с различными идентификаторами. Обе карты Код клавиши 210 к Кнопке меню. Можно учиться повторно отображать ключи мыши этот путь также.

Система будет иметь hwdb файлы в другом каталоге, /usr/lib/udev/hwdb.d. Эти файлы не должны быть отредактированы, но можно использовать их в качестве примеров для помощи по пути.

После внесения изменений должна быть обновлена база данных:

sudo systemd-hwdb update
1
ответ дан 2 December 2019 в 04:38

Другие вопросы по тегам:

Похожие вопросы: