2016-07-22 17 views
3

Я пытаюсь написать свое первое расширение Shell и - как каждый блог там - я тоже борюсь с отсутствием уточненных документаций ...Как захватить нажатия клавиш в Gnome Shell

а именно я пытаюсь захватить все нажатия клавиш с клавиатуры, и - глядя на код онлайн и старый список рассылки сообщений - это, кажется, что до недавнего времени правильный способ делать не было:

const Shell = imports.gi.Shell; 
global.set_stage_input_mode(Shell.StageInputMode.FULLSCREEN); 
global.stage.connect('key-press-event', myCallbackHere); 

Однако это не кажется работать. Как функция set_stage_input_mode, так и свойство StageInputMode, похоже, прошли, по крайней мере, на моей Fedora 24, работающей на GTK 3.20.6.

Каков правильный, текущий способ, чтобы мое расширение захватывало все нажатия клавиш, выполненные пользователем?

ответ

4

Я не думаю, что есть правильный способ сделать это в данный момент. Вы могли бы взломать что-то вместе, либо конкретное, либо специфичное для Wayland, либо, возможно, вы могли бы установить Gnome Shell для предоставления этой информации.

Для Wayland вы можете начать с https://github.com/MaartenBaert/wayland-keylogger, а для X вы можете начать с поиска повторного использования обнаружения ключа из autokey (https://github.com/autokey/autokey/blob/master/src/lib/interface.py).

Я могу предположить, что это не тот ответ, на который вы надеялись, потому что на IRC вы написали, что хотите написать замену autokey. Для получения информации от внешней программы вы можете использовать GLib.spawn_async_with_pipes (https://people.gnome.org/~gcampagna/docs/GLib-2.0/GLib.spawn_async_with_pipes.html).

Я написал некоторое время назад некоторый код расширения Shell для опроса xinput test и записывает примерно то, что происходит (подумайте о любом буквенно-цифровом ключе против левого ctrl vs return key). Вы можете посмотреть этот код здесь: https://gist.github.com/daniellandau/7679741bf8bbc5c345591593ca05e9f6. Он недостаточно прочен для выполнения каких-либо макрорасширений, поэтому я рекомендую повторно использовать код обнаружения из autokey.

В целом документы в https://people.gnome.org/~gcampagna/docs - это место, где можно найти ссылки API для библиотек, которые можно использовать с расширениями Gnome Shell. Надеюсь, вы продолжите свой проект. Начало написания расширений вызывает разочарование, но в конечном итоге очень весело, когда вы получите его.

+0

Эй! Спасибо тебе за это. Я проверю ссылки, как только у меня будет свободное время для личных проектов, теперь спасибо за то, что написал это. Я вернусь к этому и одобрю/последую с вопросами. :) – mac