在Python中更改键盘锁

23 投票
6 回答
14259 浏览
提问于 2025-04-15 11:33

有没有办法在Python中,程序matically 改变 CAPS LOCK/NUM LOCK/SCROLL LOCK的状态?

这不是开玩笑的问题——更像是一个真实的问题,用于一个搞笑的程序。我打算用它来让指示灯做一些有趣的事情……

6 个回答

7

这对提问者可能没什么帮助,但分享出来也许会对其他人有用,因为我当时也在找这个答案,却找不到不使用第三方模块的解决办法。这是我用来打开大写锁定键的方法。

import ctypes

def turn_capslock():
    dll = ctypes.WinDLL('User32.dll')
    VK_CAPITAL = 0X14
    if not dll.GetKeyState(VK_CAPITAL):
        dll.keybd_event(VK_CAPITAL, 0X3a, 0X1, 0)
        dll.keybd_event(VK_CAPITAL, 0X3a, 0X3, 0)

    return dll.GetKeyState(VK_CAPITAL)
print(turn_capslock())
19

在Linux系统上,这里有一个Python程序,可以让所有键盘上的指示灯闪烁开关:

import fcntl
import os
import time

KDSETLED = 0x4B32
SCR_LED  = 0x01
NUM_LED  = 0x02
CAP_LED  = 0x04

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

all_on = SCR_LED | NUM_LED | CAP_LED
all_off = 0

while 1:
    fcntl.ioctl(console_fd, KDSETLED, all_on)
    time.sleep(1)
    fcntl.ioctl(console_fd, KDSETLED, all_off)
    time.sleep(1)
16

如果你在使用Windows系统的话,我觉得可以用SendKeys来实现这个功能。

你可以查看这个链接了解更多信息:http://www.rutherfurd.net/python/sendkeys

import SendKeys

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

撰写回答