Привяжите Alt + Tab к кнопке мыши Logitech на Kubuntu

Примечание: это не дубликат этого или этого, как я поясню.

У меня есть эта мышь . В Windows 10 я установил одну из своих кнопок (маленькую, помеченную «G9» над мышью), чтобы отобразить список задач, которые могут быть подняты с помощью клавиш Win + Tab. Обратите внимание, что это продолжается, даже если вы отпустите клавиши «Win» и «Tab», она просто уходит, как только вы нажимаете на Окно, в которое хотите перейти. Итак, рабочий процесс: нажмите и отпустите кнопку мыши G9, щелкните окно, которое я хочу.

Мне нужно аналогичное поведение в Kubuntu 15.04. AFAIK, нет никакого способа воссоздать аналогичный список задач, который остается до тех пор, пока вы не нажмете на что-то, без необходимости удерживать клавиши.

Итак, моя идея состояла в том, чтобы эмулировать Alt + Tab с помощью этой кнопки , Рабочий процесс, который я имею в виду, это: нажать G9 (ярлык для «push alt, push tab, вкладка realease») => выбрать окно, которое я хочу, отпустить G9 (ярлык для «release alt»).

Проблема в том, что, насколько я могу судить, эта кнопка G9 не читается ОС как обычная кнопка мыши. Если я запустил:

xbindkeys -mk

И нажмите кнопку G9, я получаю этот вывод:

"(Scheme function)"
m:0x40 + c:23
Mod4 + Tab
"(Scheme function)"
m:0x40 + c:133
Mod4 + Super_L

Примечание: Я запускаю это в VM для целей тестирования. Дайте мне знать, может ли это повлиять на вещи, хотя мне понадобится и работа в этом случае.

Если я запустил:

xev | grep button

Я не получаю выход, когда я нажмите кнопку G9, в которой я заинтересован. Если я нажму на другие кнопки, я получу ожидаемые выходные данные, например:

state 0x0, button 2, same_screen YES

Это странно, но я подумал, что могу просто добавить то, что xbindkeys -mk выводит на мой ~/.xbindkeysrc:

"xte 'keydown Alt_L' 'key Tab'"
  m:0x40 + c:23 + Release

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

xbindkeys -v -n

Что выдает это предупреждение:

Пожалуйста, убедитесь, что нет другой программы, которая захватывает один из ключей, захваченных xbindkeys. Кажется, что есть конфликт, и xbindkeys не могут захватить все ключи, определенные в его файле конфигурации.

Если я наберу команду xte в консоли, она отобразит меню выбора alt + tab.

Если я назначу один и тот же вызов xte на другую кнопку, показанную на выходе xev (я попробовал правую кнопку мыши), он все еще не выполнен (похоже, что только табуляция выполняется, так как она вставляет вкладки в текстовый редактор), но предупреждение исчезло, и регулярная функция кнопки также исчезла:

Как я могу получить [ f12], которое я описал при нажатии кнопки G9? Как насчет другой кнопки, которую xev обнаруживает, например b:3?

Примечание: эта мышь сохраняет конфигурацию, сделанную из программного обеспечения Windows, изнутри. Таким образом, все мои другие кнопки сохраняют свои функции в виртуальной машине: назад / вперед в браузере, переключают вкладки браузера и т. Д. Программное обеспечение Logitech позволяет выполнять макрозапись в Windows, но не позволяет указывать разные действия для событий push / release, AFAIK.

Если есть способ записать правильный макрос под Windows, или есть способ упростить то, что я хочу достичь под Kubuntu, то есть использовать кнопку G9, чтобы получить аналогичную функциональность для вкладки alt + - Я бы тоже принял эти решения.

1
задан 13 April 2017 в 15:24

1 ответ

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

Прежде всего, макрос Win+Tab, установленный на кнопке G9 в Windows, мешал тому, как Linux обнаруживает мышь. Вместо того, чтобы обнаруживать кнопку мыши, он просто обнаружил клавиши Win и Tab в xev. Я полагаю, что мышь внутренне настроена на отправку этих данных, если вы сконфигурируете кнопку в качестве «Multikey Macro» в своем программном обеспечении Windows. Чтобы исправить это, не устанавливайте кнопку для использования макрокоманды Multikey в Windows. Установите его на что-нибудь еще. Я установил его как средний клик. Теперь xev | grep button обнаружил G9 как кнопку 2. Я написал этот скрипт в ~/alttab.sh, который представляет собой комбинацию скриптов Велкана:
#!/bin/bash

if [ -e /tmp/alt-tab-mouse-script-???? ]; then
   xte 'usleep 100000' 'keyup Alt_L'
   rm /tmp/alt-tab-mouse-script-????
else
   mktemp /tmp/alt-tab-mouse-script-XXXX
   xte 'usleep 100000' 'keydown Alt_L' 'usleep 50000' 'key Tab'
fi
Я добавил это в свой ~/.xbindkeysrc. Нам нужны две строки, чтобы сделать работу щелчка в обоих состояниях: когда alt выключен, а когда нет.
"~/alttab.sh"
  b:2 + Release 

"~/alttab.sh"
  Alt + b:2

Это отлично поработало для меня. Поток: нажмите G9 (нажмите и отпустите), выберите нужное окно (левый клик или колесо мыши), затем снова нажмите G9, чтобы перейти к этому окну. Вы можете изменить первый if в файле .sh, чтобы также отправить mouseclick 1 перед нажатием клавиши alt, если вы хотите перейти непосредственно к окну, на которое вы нажимаете кнопку G9 на экране Windows.

Я также экспериментировал с удалением вызовов usleep. Это работало для меня без них.

Поведение не совсем похоже на Windows, но я нахожу его достаточно близко. Возможно, еще удобнее, так как вы можете сделать выбор с помощью одной и той же кнопки, поэтому вам не нужно перемещать палец на другую кнопку!

3
ответ дан 23 May 2018 в 17:16

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

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