Этот вопрос уже был задан, но так и не получил правильного ответа. После очистки с @Seth я теперь спрашиваю это снова. Это позволит мне ответить и, возможно, изменить вопрос намного проще. Оригинальный вопрос можно найти здесь:
Привязать Ctrl и Alt к кнопкам большого пальца мыши
Выпуск:
Хотя очень просто сопоставить любые нажатия клавиш с кнопкой мыши, используя их xbindkeys
вместе xdotool
или xte
кажется намного более проблематичным сопоставить клавишу-модификатор (например, ALT , CTRL , SHIFT и т. Д.) С ней.
Окончательный soloution должен позволять И.А. CTRL + щелчок (например , для выбора нескольких записей из списка) только с помощью мыши.
Несколько возможных подходов к решению этой проблемы можно найти здесь, на Stack Exchange, а также на других форумах, связанных с Linux. Но ни одна из этих работ не работает так, как ожидается, поскольку они приводят к другим проблемам и побочным эффектам.
Примечания:
В некоторых из приведенных ниже примеров используется синтаксис Guile with Scheme и .xbindkeysrc.scm
файл, в то время как другие полагаются на .xbindkeysrc
файл с соответствующим синтаксисом. Я знаю, что они не будут работать вместе.
Кроме того, приведенные ниже фрагменты основаны xdotool
только на том, но я открыт для подходов, связанных с другими приложениями, такими как, например, xte
также - хотя, похоже, оба приводят к одним и тем же результатам, и поэтому я использую только xdotool
действия здесь.
Подход А:
Обновление .xbindkeysrc
файла с помощью:
"xdotool keydown ctrl"
b:8
"xdotool keyup ctrl"
release + b:8
Это то, что я сначала попробовал, но у него есть побочный эффект, что модификатор удерживается и не может быть освобожден.
Подход Б:
Обновление .xbindkeysrc.scm
файла с помощью:
(xbindkey '("b:8") "xdotool keydown ctrl")
(xbindkey '(release "b:8") "xdotool keyup ctrl")
(xbindkey '("m:0x14" "b:8") "xdotool keydown ctrl")
(xbindkey '(release "m:0x14" "b:8") "xdotool keyup ctrl")
Находится по адресу http://www.linuxforums.org/forum/hardware-peripherals/169773-solved-map-mouse-button-modifier-key.html и пытается решить проблему, где хранится модификатор (как описано в подходе а).
Хотя это исправляет, что это работает только частично, поскольку невозможно выполнить другие щелчки мыши, пока нажата кнопка большого пальца.
Подход C:
Обновление .xbindkeysrc
файла с помощью:
"xdotool keydown ctrl"
b:8
"xdotool keyup ctrl"
release + control + b:8
Опробовано OP связанного вопроса здесь, в askubuntu. Намного проще и надежнее, так как в нем нет состояний модификаторов. Тем не менее, вопрос остается, т.е. CTRL + щелчок не представляется возможным.
Кажется, что xbindkeys
здесь проблема заключается в том, что он распознает щелчок, но не выполняет его. Это можно проверить с помощью xev | grep button
и xbindkeys -v
:
Обычный щелчок мыши, записанный пользователем, xev
должен выглядеть следующим образом:
state 0x10, button 1, same_screen YES
state 0x110, button 1, same_screen YES
Как и для кнопки большого пальца:
state 0x10, button 8, same_screen YES
state 0x10, button 8, same_screen YES
Но при xbindkeys
включенной выше конфигурации он ничего не записывает. Хотя это имеет смысл для кнопки большого пальца, поскольку она отображается на CTRL и, следовательно, больше не является кнопкой мыши, странно, что кнопка 1 также не записывается. Это вероятно потому, xbindkeys
что не выполняет его, но само распознает:
Button press !
e.xbutton.button=8
e.xbutton.state=16
"xdotool keydown ctrl"
m:0x0 + b:8 (mouse)
got screen 0 for window 16d
Start program with fork+exec call
Button press !
e.xbutton.button=1
e.xbutton.state=20
Button release !
e.xbutton.button=1
e.xbutton.state=276
Button release !
e.xbutton.button=8
e.xbutton.state=20
"xdotool keyup ctrl"
Release + m:0x4 + b:8 (mouse)
got screen 0 for window 16d
Start program with fork+exec call
Подход D:
Обновление .xbindkeysrc
файла с помощью:
"xdotool keydown ctrl"
b:8
"xdotool keyup ctrl"
release + control + b:8
"xdotool click 1"
b:1
Просто слишком просто ... но приводит к бесконечному циклу кликов.
ОБНОВИТЬ:
Тем временем я купил Logitech G502 и заметил, что однажды настроенный через драйвер в Windows не только сам профиль сохраняется в памяти устройства, но и фактическое нажатие клавиши осуществляется мышью. Это фактически решило мою проблему в Linux!
Единственная другая мышь, которую я помню, которая была способна сделать это, была Razer Copperhead в те времена. Но я думаю, сегодня есть и другие мыши, которые могут сделать то же самое.