Как изменить статус блокировки шапки без нажатия клавиши - PullRequest
12 голосов
/ 31 января 2010

Я использую программу на Python, которая активируется при нажатии клавиши Caps Lock, и я хочу иметь возможность включать / выключать статус Caps Lock при активной программе.

Я пытался отправить ключи с помощью virtkey, но это, очевидно, не работает, поскольку ключи просто активируют приложение и не меняют статус блокировки прописных букв. Каков наилучший способ добиться этого с помощью Python?

Я использую Ubuntu

Ответы [ 2 ]

6 голосов
/ 31 января 2010

В Linux:

import fcntl
import os

KDSETLED = 0x4B32

console_fd = os.open('/dev/console', os.O_NOCTTY)

# Turn on caps lock
fcntl.ioctl(console_fd, KDSETLED, 0x04)

# Turn off caps lock
fcntl.ioctl(console_fd, KDSETLED, 0)

Источник: Бенджи Йорк - Переполнение стека: изменение блокировки клавиатуры в Python


В Windows:

Вы можете использовать для этого SendKeys , как в следующем примере:

import SendKeys

SendKeys.SendKeys("""
{CAPSLOCK}
""")
2 голосов
/ 31 января 2010

Используйте sendkeys для изменения статуса и keyboardleds для изменения светодиодных индикаторов.

SendKeys:

С еще одно SO * предположение :

import SendKeys

SendKeys.SendKeys("""
{CAPSLOCK}
{SCROLLOCK}
{NUMLOCK}
""")

keyboardleds:

Этот пакет, похоже, работает только для POSIX (что нормально, если вы используете Ubuntu), и вы можете узнать больше здесь .

...