Настройка мыши.

Автор Stels, 12 Сентября 2008, 00:32

« предыдущая тема - следующая тема »

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

Stels

Есть мышь с дополнительными кнопками.
Существует ли возможность их настроить?

Vicpo

Настройка мыши Logitech VX Revolution
1. Подключение.
После того как приемник мыши был воткнут в свободный USB порт, она сразу заработала smile.gif. Благо предыдущая мышь также была привязана к USB порту, были некие минимальные настройки, позволившие заработать и новой. Однако кроме стандартных кнопок (3 кнопки мыши + колесо) остальные не работали. Ради интереса я посмотрел вывод cat /proc/bus/input/devices (как оказалось потом, не зря). Вывелось много чего, здесь я привожу только то, что касается мыши:
I: Bus=0003 Vendor=046d Product=c518 Version=4204
N: Name="Logitech USB Receiver"
P: Phys=usb-0000:00:1d.0-2/input0
S: Sysfs=/class/input/input3
H: Handlers=mouse1 event3 ts1
B: EV=7
B: KEY=ffff0000 0 0 0 0 0 0 0 0
B: REL=143

I: Bus=0003 Vendor=046d Product=c518 Version=4204
N: Name="Logitech USB Receiver"
P: Phys=usb-0000:00:1d.0-2/input1
S: Sysfs=/class/input/input4
H: Handlers=kbd event4
B: EV=10000f
B: KEY=7 c0002 1400 0 0 1 f80 7c000 6639fa d84157ed 8e0000 0 0 0
B: REL=40
B: ABS=1 0
Сначала было немного непонятно, откуда взялось два устройства, причем второе - какая-то клавиатура. Как оказалось потом, в роли клавиатуры выступает кнопка поиска, расположенная над колесом прокрутки.

2. Настройка мыши в X-ах через evdev.
Полазив в сети, я обнаружил, что лучше использовать протокол evdev.
Стоит отметить, что evdev должен поддерживаться в ядре, должны быть отмечены следующие опции:
Device Drivers ->
     Input Device Support ->
          <*> Event Interface
USB Support --->
     <*> USB Human Interface Device (full HID) support
     [*] HID input layer support
Кроме того, в системе должен присутствовать evdev драйвер X-ов. в Арче он называется xf86-input-evdev.
Далее я подкорректировал файл /etc/X11/xorg.conf.
Я взял конфигурацию, как это было предложено в Gentoo-Wiki для мыши Logitech LX3:
Section "InputDevice"
        Identifier      "USB Mouse"
        Driver          "evdev"
        Option "Name" "Logitech USB Receiver"
        Option "HWHEELRelativeAxisButtons" "7 6"
        Option          "ZAxisMapping"          "4 5"
        Option          "Buttons"               "14"
EndSection
Подробнее о параметрах: первые две строчки и так понятны, далее в третьей строке я указываю драйверу, какое устройство, собственно, использовать. В том же Gentoo-Wiki предложено 3 способа определения необходимого устройства: по адресу устройства, по имени устройства и с помощью автоматического обнаружения. Я использовал второй способ, так как недостаток первого - необходимость привязки к конкретному адресу устройства, а он, как я понял, может изменяться после перезагрузки; третий же способ я откровенно не понял. Впрочем, ниже привожу примеры для всех трех, может кому-то и понравится.
Способ 1 - определение по адресу устройства:
Section "InputDevice"
    Identifier "Mouse0"
    Driver "evdev"
    Option "Device" "/dev/input/event0"
EndSection
Способ 2 - определение по имени устройства:
Section "InputDevice"
    Identifier  "Mouse0"
    Driver      "evdev"
    Option      "Name" "Logitech USB Receiver"
EndSection
Способ 3 - автоматическое обнаружение устройства:
Section "InputDevice"
    Identifier  "Mouse0"
    Driver      "evdev"
    Option      "evBits"        "+1-2"
    Option      "keyBits"       "~272-287"
    Option      "relBits"       "~0-2 ~6 ~8"
EndSection
Назание устройства можно выцепить из вывода cat /proc/bus/input/devices
Четвертая строчка, Option "HWHEELRelativeAxisButtons" "7 6", как я понял, привязывает кнопки 7 и 6 мыши (на самом деле это отклонение колеса прокрутки вправо и влево) к прокрутке по горизонтали, за что в мышке отвечает отклонение колеса прокрутки в соответствующую сторону. По крайней мере у меня именно так работает smile.gif.
Пятая строчка, Option "ZAxisMapping" "4 5", включает колесо прокрутки, последняя показывает количество кнопок. Оказывается в мышке 14 кнопок!
После успешной перезагрузки Х-сервера сразу заработало перемещение по горизонтали (за него, как я уже говорил, отвечает отклонение колеса прокрутки) и кнопка поиска, расположенная над колесом прокрутки.
3. Назначение на действий на остальные кнопки мыши.
Чтобы посмотреть, как работают остальные кнопки, я использовал xev. В результате получилось следующее:
Левая кнопка - кнопка 1,
Нажатие на колесо прокрутки - кнопка 2,
Правая кнопка - кнопка 3,
Прокрутка вперед - кнопка 4,
Прокрутка назад - кнопка 5,
Боковая кнопка со стрелкой назад - кнопка 8,
Боковая кнопка со стрелкой вперед - кнопка 9,
Кнопка Zoom+ - кнопка 13,
Кнопка Zoom- - кнопка 14,
Кнопка поиск генерировала код нажатия 144 (у меня такой же код генерирует на клавиатуре кнопка перемотки музыки вперед, поэтому, к сожалению, по-разному их использовать не удастся)
Для назначения действий на дополнительные кнопки мыши раньше я использовал утилитку imwheel, однако, насколько я понял, она не поддерживает более 9 кнопок, поэтому от imwheel пришлось отказаться.
Выход - не очень изящный, но какой есть (если кто знает лучше, подскажите!) - я нашел на форуме Ubuntu. Здесь предлагалось воспользоваться связкой xbinbkeys+xvkbd. xbindkeys позволяет привязать выполнение программ к событиям нажатия на кнопки клавиатуры или мыши, а xvkbd способна генерировать коды нажатия на кнопки. Т. е. в целом осуществляется трансляция событий нажатия на кнопки мыши в коды кнопок клавиатуры. Для задействования этой возможности я написал файл ~/.xbindkeysrc такого содержания:
"/usr/bin/xvkbd -xsendevent -text "[End]""
  m:0x0 + b:8
"/usr/bin/xvkbd -xsendevent -text "[Home]""
  m:0x0 + b:9
"/usr/bin/xvkbd -xsendevent -text "[XF86Launch0]""
  m:0x0 + b:13
"/usr/bin/xvkbd -xsendevent -text "[XF86Launch1]""
  m:0x0 + b:14
Таким образом, я связал с нажатиями на боковые кнопки нажатия на кнопки «Home» и «End». С кнопками Zoom пришлось повозиться, так как существующие коды «XF86ZoomIn» и «XF86ZoomOut» ни одно приложение почему-то не воспринимало sad.gif. Пришлось выбрать нейтральные «XF86Launch0» и «XF86Launch1», которые, к счастью, воспринимались без проблем. Список кодов кнопок можно посмотреть в файлах /usr/include/X11/keysym.h, /usr/include/X11/keysymdef.h и /usr/include/X11/XF86keysym.h.
После сохранения файла я запустил xbindkeys и с помощью xev убедился, что назначение кодов прошло успешно.
Чтобы каждый раз не запускать руками xbindkeys, необходимо сделать, чтобы он автоматически запускался при запуске X-сервера. Так как это весьма специфично (зависит от дистрибутива, способа запуска Х-сервера), описывать эти действия тут я не буду.
Вот собственно и все! Теперь можно назначать кнопки в конкретных приложениях на необходимые действия.

Источник

Stels

А не подскажете как изменятьс очетания клавишь, допустим Win+M сверенуть окна?

Iskander

Если под кедами, то есть там Kde Control Center (settings kioslave)
Перейдите в конке settings:/Accessibility/ там будет Keyboard Shortcuts. Как под гномом не помню, но думаю аналогично.
Любовь и массовые расстрелы спасут мир.

Stels

вроде KDE 3.5 на русском. Нашел "Клавиатура - центр управления", даже нашел Комбинации клавишь.
А что-то типа "Свернуть все окна" Нету. И вообще какой-то скудный набор действий для клавиатуры.

И еще, клавишу Win этот центр управления не видет из-за вредности?  LOL  LOL  LOL

Vicpo

она по-моему имеет маркировку Super или что-то в этом роде