Python отключить / перенаправить ввод с клавиатуры - PullRequest
3 голосов
/ 06 июня 2009

Я пишу генератор макросов / переназначение клавиатуры на python для xubuntu.

Я понял, как перехватывать и записывать нажатия клавиш и отправлять нажатия клавиш, которые я хочу записать, но я не понял, как блокировать нажатия клавиш. Мне нужно отключить ввод с клавиатуры, чтобы переназначить клавишу. Например, если я хочу отправить «а», когда я нажимаю клавишу «s», я могу в настоящее время записать нажатие клавиши «а» и установить его на воспроизведение, когда я нажимаю клавишу «s». Однако я не могу удержать нажатие клавиши «s» рядом с ним.

Я использовал модуль pyxhook из клавиатурного регистратора с открытым исходным кодом для хуков, и снова, xtest, ложный метод ввода из библиотеки python x.

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

Мне нужно что-то, что блокирует все нажатия клавиш, но не отключает мои нажатия клавиш.

Ответы [ 2 ]

1 голос
/ 11 июня 2009

Я думаю, что это будет сильно зависеть от окружения: curses и рецепт activestate хороши для командной строки, но если вы хотите, чтобы он запускался в DE, вам понадобятся некоторые крючки для этого DE. Вы можете посмотреть привязки Qt или GTK для python, или есть библиотека python-xlib, которая может позволить вам связываться прямо с системой X.

Так что я думаю, что ответ "это зависит". Вы ищете консольную функциональность noecho, или программу замены текста для DE, или средство изменения макета в стиле xmodmap?

0 голосов
/ 14 июня 2009

У меня есть клавиатурный хук, который обнаруживает события X. Я ищу способ глобально предотвратить отправку отдельного события клавиатуры в окно. То, что работает, получая доступ к очереди событий и удаляя из нее событие клавиатуры, было бы идеально. Похоже, это возможно с помощью Python Xlib, но я не могу понять это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...