Где я могу начать взломать linux-вход?

Когда вы удерживаете "shift" и прокручиваете мышью на mac, он интерпретирует ваше вертикальное движение прокрутки в действия горизонтальной прокрутки. Это моя самая пропущенная функция при работе с linux, и я бы с удовольствием привел ее в Linux (так как я внимательно посмотрел, и никто еще, похоже, пока не сделал этого).

Надеюсь, это можно сделать с помощью какого-то плагина времени выполнения или, по крайней мере, таким образом, чтобы не требовать от меня перекомпиляции всех моих других приложений для использования этих функций. Мой вопрос: какие библиотеки там могли бы написать такой плагин? Написание своего рода script было бы неплохо, так как это не похоже на то, что функциональность должна быть такой сложной, но при необходимости я могу программировать на C и С++.

Я рассмотрел X-решения, такие как XEvIE (прекращено) и XTrap (похоже, заброшено, похоже). Я был бы рад ограничить себя GTK/GNOME только сейчас, по крайней мере, как доказательство концепции.

Если это невозможно сделать в качестве плагина, в каком проекте с открытым исходным кодом я должен подходить (Xfree86? GNOME? кто-то еще?), чтобы попытаться включить эту функциональность?

- обновление (с помощью решения!):

установите пакеты "xbindkeys" и "xautomation". Затем напишите следующее в файле ~/.xbindkeysrc.scm:

; bind shift + vertical scroll to horizontal scroll events
(xbindkey '(shift "b:4") "xte 'mouseclick 6'")
(xbindkey '(shift "b:5") "xte 'mouseclick 7'")

тогда просто запустите xbindkeys

Ответ 1

Я не уверен, но evdev может делать такие вещи. Например, он может имитировать нажатия клавиш, когда нажата кнопка мыши (прокрутка вверх/вниз - кнопка). Возможно, можно выполнить горизонтальную прокрутку (возможно, с помощью стрелок влево/вправо?).

Ответ 2

Только для информации (по крайней мере, на моем Kubuntu 12.4 LTS) он работает с колесом мыши ALT + Mouse для коробки для приложений KDE.

Это также имеет смысл, потому что ALT-ключ изменяет все кнопки мыши (левая кнопка для захвата окна в любом месте, правая кнопка для изменения размера рядом с границей и т.д.)