Этот вопрос уже был задан, но так и не получил правильного ответа. После очистки с @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 в те времена. Но я думаю, сегодня есть и другие мыши, которые могут сделать то же самое.