Python 3.x — получение состояния caps-lock/num-lock/scroll-lock в Windows

Как и в вопросе, я знаю, что это возможно в Linux, но я не смог найти ничего нового для Windows. Это вообще возможно?


person EnronEvolved    schedule 16.01.2014    source источник
comment
Если вам просто нужны настраиваемые ключи блокировки блокировки, вы всегда можете сделать логическое значение в классе, например, в программе Tkinter. Затем вы можете изменить свое состояние при нажатии определенной клавиши, и вещи будут вести себя по-разному в разных состояниях. Это эффективно избавляет от необходимости беспокоиться о том, все ли замки официально включены или выключены. Конечно, это может показаться слишком упрощенным и требует много работы (не затрагивая подсветку замков), но, по крайней мере, это кросс-платформенное решение. Причина, по которой я не опубликовал это как ответ, заключается в том, что речь идет о создании вашего собственного состояния (а не о проверке состояния).   -  person Brōtsyorfuzthrāx    schedule 30.04.2014
comment
Но проблема с этим подходом заключается в том, что «Caps» уже нажат, т.е. «включен» во время запуска программы.   -  person Vivek    schedule 21.12.2018


Ответы (2)


Вы можете использовать ctypes для загрузки user32.dll, а затем вызвать GetKeyState с nVirtKey = VK_CAPITAL ( 0x14)

def get_capslock_state():
    import ctypes
    hllDll = ctypes.WinDLL ("User32.dll")
    VK_CAPITAL = 0x14
    return hllDll.GetKeyState(VK_CAPITAL)
person Abhijit    schedule 16.01.2014

Установите pywin32 для Python 3.x

Вот пример проверки состояния CapsLock.

from win32api import GetKeyState 
from win32con import VK_CAPITAL 
GetKeyState(VK_CAPITAL)
person Jakob Bowyer    schedule 16.01.2014
comment
Также работает для Python 2.7. Для импорта numlock VK_NUMLOCK - person Marjoram; 22.07.2016