Logitech MX Revolution и Linux: как достичь счастья

Беспроводную красавицу мне подарили на день рождения. Она была приятна на ощупь, обладала потрясающей функциональностью и комфортом, долго держала заряд. Но, как это нередко случается с красавицами, обладала скверным характером, и до ее сердца достучаться было непросто.

Тогда основной моей осью была Windows 2003 Server. Удобная и надежная система, под которую драйверы и серьезные программы отказывались ставиться буквально через одного. Мол, у вас серверная ОС, мы вас боимся. Вдруг к нам придет ваш бородатый админ и будет ругаться? И вообще, купите лучше серверную версию нашего продукта втрое дороже. Или поставьте XP. Или пойдите еще куда-нибудь. Запуск установщика в режиме эмуляции XP иногда помогал, но чаще — нет. Это несколько напрягало, но обычно нужным программам находились альтернативы. С драйверами сложнее.

Вот и когда я распаковал шедевр коробочного искусства и извлек оттуда пресловутый космический девайс, со всей остротой встал вопрос — как заставить работать все эти 11 кнопок и 1 колесико? Фирменный SetPoint, увидев серверную винду, прикинулся шлангом, и припарки не помогли. Альтернатив этому поделию не предусмотрено. Впрочем, со временем я эту проблему решил (если кому будет интересно, расскажу как).

Затем я перешел на Linux. Собственно, я и не ожидал, что моя MX Revo будет нормально там работать. Две кнопки и колесико — что еще нужно настоящему программисту? Но Fedora 10 далеко превзошла мои ожидания, автоматически и правильно опознав 8 кнопок из 11. Единственное, что меня расстраивало — невозможность использовать вместо нажатия на центральное колесико нажатие на боковое псевдо-колесико (нажатие на центральное колесико у меня меняет режим вращения). Удобно, знаете ли, ссылки в Firefox открывать и вкладки закрывать.

Итак, я хотел, чтобы нажатие на боковое колесико имело тот же эффект, что и нажатие на вторую кнопку мыши (основное колесико у большинства смертных). После вознесения правильной молитвы Гуглу, нашлось решение. Подробно описывать не буду — там и так все понятно. Решение прекрасное, но у него есть один недостаток — оно не работает. Точнее, в моем случае не работает.

С помощью xbindkeys, действительно, можно сопоставить команде оболочки некоторые нажатия мышиных и клавиатурных кнопок. Осталась самая малость — соответствующей командой оболочки сэмулировать нажатие второй кнопки мыши. Если верить документации на xvkbd, то это можно сделать так:

#~/.xbindkeysrc
"/usr/bin/xvkbd -xsendevent -text "\m2""
b:17

Проблема в том, что xvkbd не желает эмулировать мышиные клики. Что ж, незаменимых у нас нет. После непродолжительных поисков нахожу xdotool. Проверяю вручную, набрав в консоли:

xdotool click 2

Действительно, нажатие второй кнопки происходит. Теперь меняем ~/.xbindkeysrc:

#~/.xbindkeysrc
"~/bin/xdotool click 2"
b:17

Запустив xbindkeys в режиме отладки (ключ -v), вижу, что при нажатии на 17-ю кнопку (то самое псевдоколесико) действительно происходит эмуляция нажатия на 2-ю. Но видимого эффекта почему-то нет. Мистика. Подумав немного, решаю, что xdotool конфликтует c xbindkeys. Решение очевидно: разнести их по времени.

#~/.xbindkeysrc
"sleep 0.15; ~/bin/xdotool click 2"
b:17

Работает! Величина задержки подбирается экспериментально. У меня при 0.1 все еще есть конфликт, а при 0.15 — работает. Такая маленькая задержка практически не заметна, и неудобств не доставляет.

Ну, а как сменить кнопку, по которой переключается режим работы колесика, давно уже написали на Хабре.

УжасноПлохоНормальноХорошоОтлично (1 голосов, средний: 5,00 из 5)
Loading ... Loading ...

Один комментарий

Оставьте свой отзыв

Или введите OpenId:

XHTML: Можно использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">