JRazor
@JRazor
Senior StarkOverFlow Programmer

Python: как отловить сочетания клавиш?

Здраствуйте. Использую win32api для эмуляции нажатия клавиш. Тут все понятно и просто. Но чем можно отловить нажатие клавиш?

К примеру, я назначил сочетание клавиш Ctrl + Shift + Home, и если они нажаты - запускался скрипт.

Заранее спасибо.
  • Вопрос задан
  • 10504 просмотра
Решения вопроса 1
TomasHuk
@TomasHuk
Тоже очень интересует этот вопрос. Если есть решение, сбросьте сюда в комментарии код на питоне.
P.S.(через два дня) Решил вопрос.
import win32api
import pythoncom
import pyHook

def OnKeyboardEvent(event):
    # проверяем статусы клавиш-модификаторов
    # возвращаемые значения:
    # 0 или 1 - клавиша отжата
    # (-127) или (-128) - клавиша нажата
    ALT     = win32api.GetKeyState(0x12)    #
    CTRL    = win32api.GetKeyState(0x11)
    SHIFT   = win32api.GetKeyState(0x10)
    LWIN    = win32api.GetKeyState(0x5B)
    HOME    = win32api.GetKeyState(0x24)
    if event.Key=='Home' and event.MessageName == 'key down':
        if CTRL<0 and SHIFT<0 and ALT<0:
            print('Нажата комбинация клавиш CTRL+SHIFT+ALT+HOME')
        elif CTRL<0 and SHIFT<0:
            print('Нажата комбинация клавиш CTRL+SHIFT+HOME')
        elif ALT<0 and SHIFT<0:
            print('Нажата комбинация клавиш SHIFT+ALT+HOME')
        elif CTRL<0 and ALT<0:
            print('Нажата комбинация клавиш CTRL+ALT+HOME')
        elif CTRL<0:
            print('Нажата комбинация клавиш CTRL+HOME')
        elif SHIFT<0:
            print('Нажата комбинация клавиш SHIFT+HOME')
        else:
            print('Нажата клавиша HOME')
    return True

hm = pyHook.HookManager()       # создание экземпляра класса HookManager
hm.KeyAll = OnKeyboardEvent     # отслеживаем нажатия клавиш
hm.HookKeyboard()               # вешаем хук
pythoncom.PumpMessages()        # ловим сообщения

Проверял на Win7, python 3.3.
Помог этот пост, таблица виртуальных кодов клавиш и документация по win32api и pyHook.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы