Анонс keybind 0.1.1 — глобальные горячие клавиши
О новом пакете, позволяющем настраивать глобальные клавиши на UNIX-подобных системах под X Window System.
Для очередного проекта с GUI на GTK 3 мне понадобилась возможность активировать функции приложения даже когда его окно не находится в фокусе.
Моя Ubuntu работает на X11 (X Window System), в которой имеется возможность перехвата нажатия определённых клавиш на глобальном уровне. То есть, можно запустить перехватчик в отдельной нити процесса приложения, а он будет слушать события X и при наступлении нужных запускать определённые функции.
Казалось бы, учитывая распространённость X11, наверняка существуют готовые пакеты под Python, не слишком большие и при этом гибкие. Однако поиски успехом не увенчались. Пакеты и код похожий на то, что мне нужно действительно встречался во многих местах, но он был привязан к чему-то большему. То к QT, то к GTK, то к выполнению каких-то других задач, в которых тоже требуется перехват.
Короче говоря, так и появился keybind.
Этот пакет можно использовать как из ваших приложений на Python, так и в качестве самостоятельного приложения с CLI.
Рассмотрим примеры использования.
Вызов из Python
В самом простом виде перехват запускается при помощи
Использование CLI
После уставночки пакета по команде
С его помощью можно назначить на нажатие клавиш запуск каких-либо приложений.
В примере выше мы на нажатие
Для гурманов
Как обычно, проект разрабатывается открыто, желающие поучаствовать могут присоединиться.
Навешу на Ctrl-T кипечение воды для чая.
Моя Ubuntu работает на X11 (X Window System), в которой имеется возможность перехвата нажатия определённых клавиш на глобальном уровне. То есть, можно запустить перехватчик в отдельной нити процесса приложения, а он будет слушать события X и при наступлении нужных запускать определённые функции.
Казалось бы, учитывая распространённость X11, наверняка существуют готовые пакеты под Python, не слишком большие и при этом гибкие. Однако поиски успехом не увенчались. Пакеты и код похожий на то, что мне нужно действительно встречался во многих местах, но он был привязан к чему-то большему. То к QT, то к GTK, то к выполнению каких-то других задач, в которых тоже требуется перехват.
Короче говоря, так и появился keybind.
Этот пакет можно использовать как из ваших приложений на Python, так и в качестве самостоятельного приложения с CLI.
Рассмотрим примеры использования.
Вызов из Python
В самом простом виде перехват запускается при помощи
KeyBinder.activate()
, но можно и вручную создать экземпляр KeyBinder
и оперировать им. from keybinder import KeyBinder
def do():
print('done')
KeyBinder.activate({
'Ctrl-K': do, # Это сочетания запустит функцию do.
'Shift-R': None, # А это мы просто перехватим.
# Если требуется запустить перехватчик в отдельной нити,
# то прямо скажем об этом.
}, run_thread=True)
Использование CLI
После уставночки пакета по команде
keybind
вам станет доступен интерфейс командной строки.С его помощью можно назначить на нажатие клавиш запуск каких-либо приложений.
$ keybind -k "Ctrl-K=gnome-calculator &" -k "Ctrl-D=python run.py somearg --someopt"
В примере выше мы на нажатие
Ctrl-K
повесили вызов приложения калькулятор, а на Ctrl-D
— вызов Python для исполнения какого-то нашего скрипта run.py
с неким набором аргументов. Теперь, пока keybind
активен, мы можете использовать указанные сочетания клавиш для вызова нужных приложений.Для гурманов
keybind
предоставляет возможность сканирования кодов клавиш. После запуска этого режима все нажатия клавиш будут перехвачены, а их коды выведены в консоль. Приготовьте мышь, она может понадобиться. $ keybind --sniff
Как обычно, проект разрабатывается открыто, желающие поучаствовать могут присоединиться.
Навешу на Ctrl-T кипечение воды для чая.
Категории
Язык
Окружение
Область
Уровень
На заметку
В разделе «События» можно узнать о надвигающихся событиях мира Python, а также поделиться своими. Если вы являетесь организатором встречи/конференции/спринта, зарегистрируйте это событие в указанном разделе, чтобы о нём узнали все желающие.