Автор Тема: Как задействовать доп. кнопки многокнопочных мышей  (Прочитано 9551 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ludoed

  • Местный
  • *****
  • Автор темы
  • Сообщений: 861
  • ludoed1970@jabber.ru
По материалам журнала OpenSource c моими собственными модификациями:

Итак, предположим, есть многокнопочная мышь (тестил на Microsoft Intellimouse Optical, в журнале описывалась мышь A4Tech с 2мя колесами прокрутки)
Задача - задействовать доп кнопки, привязывая к ним произвольные действия
В винде к Microsoft Intellimouse Optical идет специальная утилита Intellipoint, позволяющая в разных приложениях привязать к кнопкам мыши разные действия. Мне очень понравилось вешать на мышь кнопки управления буфером обмена. Про вставку нажатием на колесо я знаю :) Хотелось повесить на доп кнопки копирование в буфер и удаление в буфер
1. Надо задействовать доп кнопки в Xserver. Для этого правим xorg.conf к виду:
Section "InputDevice"
    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
#    Option         "Protocol" "auto"
    Option         "Protocol" "ExplorerPS/2"
    Option         "Device" "/dev/psaux"
    Option         "Emulate3Buttons" "no"
    Option         "Buttons" "7"
    Option         "ButtonMapping" "1 2 3 6 7"
    Option         "ZAxisMapping" "4 5"
EndSection
Это для мыши с одним колесом
с 2мя колесами будет
    Option         "ButtonMapping" "1 2 3 8 9"
    Option         "ZAxisMapping" "4 5 6 7"
2. Перезапускаем X (я просто перезагрузился)
3. в терминале запускаем
xevнажимаем доп кнопки мыши и смотрим на реакцию xev
Как ни странно, вместо ожидаемых button 6 и button 7 я увидел button 8 и button 9
Ну и фиг с ним, лишь бы работало
Теперь надо научиться привязывать на доп кнопки нажатия произвольных клавиш
Я использовал пакеты xbindkeys и xdotool. В журнале рекомендовалось xvkbd, но я так и не смог заставить ее работать, а с xdotool все получилось
4. Итак, ставим указанные пакеты. В /usr/share/doc/xbindkeys/examples берем копию xbindkeysrc и копируем в домашний каталог под именем .xbindkeysrc
5. В хвост этого файла дописываем
"xdotool key Control+Insert"
b:8

"xdotool key Control+X"
b:9
То есть, привязываем управление буфером обмена к button 8 и button 9
Почему Control+Insert, а не Control+С? - А чтобы и в терминале работало
6. Запускаем в терминале
xbindkeysи проверяем как оно работает
Если работает правильно - идем в Гноме в Система->Параметры->Запускаемые приложения и добавляем xbindkeys в автозагрузку

С помощью xbindkeys и xdotool можно делать еще более интересные вещи, в частности, менять размеры и расположение окон и эмулировать нажатия клавиш и кнопок мыши. man достаточно понятный
все юниксы очень дружелюбны.. они просто очень разборчивы в друзьях ;)

Настоящее труЪ: самописное ядро, выращенные на кухне кристаллы и программирование перемычками :)

Оффлайн apelsecs

  • Прохожий
  • *
  • Сообщений: 5
вопрос такой:
а если мне надо сделать сочетания ctrl+Ins / shift+Ins  как copy / paste ?

я сделал так:
"xdotool key ctrl+v"
Shift + KP_Insert

"xdotool key ctrl+c"
Control + KP_Insert
и оно не работает. копирование не копирует, а вставление почему-то переключает раскладку клавы...

любопытно, что по отдельности всё работает, то есть если вместо xdotool попытаться запустить, скажем терминал - он запускается, а если наоборот, вместо Shift + KP_Insert написать, скажем b:2, то по щелчку мыши вставляется текст...

пробовал вместо xdotool использовать xte из пакета xautomation:
"xte 'keydown Control_L' 'key c' 'keyup Control_L'"и те же грабли...

Оффлайн ludoed

  • Местный
  • *****
  • Автор темы
  • Сообщений: 861
  • ludoed1970@jabber.ru
На стандартной десктопной клаве есть клавиша Ins на цифровой клавиатуре, и клавиша Insert рядом с Home над стрелками курсора. (На ноутах обычно одна)
Ctrl + Ins и Shift + Ins не работают с буфером, работают Ctrl + Insert и Shift + Insert - сейчас проверял
Попробуйте их задействовать
все юниксы очень дружелюбны.. они просто очень разборчивы в друзьях ;)

Настоящее труЪ: самописное ядро, выращенные на кухне кристаллы и программирование перемычками :)

Оффлайн apelsecs

  • Прохожий
  • *
  • Сообщений: 5
не могли бы вы привести кусок настроек, которые вы проверяли?

я вот щас проверил вот так с тем инсёртом, что у кнопки home...
Цитировать
"xdotool key Control+v"
Shift + Insert

"xdotool key Control+c"
b:2
кнопки пробиваю не по xev, как у вас, а через
xbindkeys -mk
по колёсику текст попадает в буфер, а вот контрол+инсёрт у кнопки home ведёт себя так же, как описал выше для нумпадовского инсёрта...
« Последнее редактирование: Май 07, 2011, 20:48:40 от apelsecs »