Есть ли способ заблокировать все клавиши, кроме CAPS, с помощью pyhook?

Я пытаюсь заблокировать все клавиши на клавиатуре, кроме клавиши Caps Locks, используя pyHook. Ниже приведен код, который блокирует только клавиши a и A, я хочу сделать наоборот. Что мне нужно сделать, чтобы обратить это вспять?

Я пытался поместить все клавиши на клавиатуре рядом с заглавными буквами, но это кажется неправильным подходом.

def OnKeyboardEvent(event):
# блокировать только буквы A, строчные и прописные
return (event.Ascii не в (ord('a'), ord('A')))


person Robbysav    schedule 02.02.2019    source источник


Ответы (2)


Кажется, что если функция возвращает True, событие не блокируется.

import string
def OnKeyboardEvent(event):
    return event.Ascii in string.ascii_uppercase

Или, возможно, return.Ascii in map(ord, string.ascii_uppercase).

person Dan D.    schedule 02.02.2019
comment
Кажется, это работает очень хорошо, за исключением того факта, что он не определяет это как ключ ascii. Похоже, CAPS не обозначается в Ascii, поэтому я не знаю, как мне получить эту информацию. - person Robbysav; 02.02.2019

Поскольку заглавные буквы не печатаются, это не отражается в атрибуте Ascii вашего события.

Но есть и другие атрибуты, а именно KeyID:

http://pyhook.sourceforge.net/doc_1.5.0/

Используйте это, чтобы найти заглавные буквы в соответствии с этой таблицей:

https://docs.microsoft.com/en-us/windows/desktop/inputdev/virtual-key-codes

person deets    schedule 02.02.2019