本文目录导读:

- Windows (PowerShell)
- Windows (VBScript)
- Linux (使用 xdotool)
- Python (跨平台)
- C# (Windows)
- 检查当前状态 (Python)
- 简易批处理文件 (Windows)
- 使用建议
我来帮你创建控制键盘大写锁定(Caps Lock)灯的脚本,这里提供几个不同平台的解决方案:
Windows (PowerShell)
# 切换大写锁定灯
$wsh = New-Object -ComObject WScript.Shell
$wsh.SendKeys('{CAPSLOCK}')
保存为 toggle_capslock.ps1
Windows (VBScript)
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.SendKeys "{CAPSLOCK}"
保存为 toggle_capslock.vbs
Linux (使用 xdotool)
#!/bin/bash # 切换大写锁定 xdotool key Caps_Lock # 或者使用 setxkbmap # setxkbmap -option caps:internal
安装 xdotool:
sudo apt-get install xdotool # Debian/Ubuntu sudo yum install xdotool # CentOS/RHEL
Python (跨平台)
import ctypes
import time
def toggle_caps_lock():
"""切换大写锁定灯"""
# Windows
ctypes.windll.user32.keybd_event(0x14, 0, 0, 0) # 按下
time.sleep(0.1)
ctypes.windll.user32.keybd_event(0x14, 0, 2, 0) # 释放
if __name__ == "__main__":
toggle_caps_lock()
C# (Windows)
using System;
using System.Runtime.InteropServices;
class Program
{
[DllImport("user32.dll")]
static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, UIntPtr dwExtraInfo);
const uint KEYEVENTF_KEYUP = 0x0002;
static void Main()
{
// 切换大写锁定
keybd_event(0x14, 0, 0, UIntPtr.Zero); // 按下
keybd_event(0x14, 0, KEYEVENTF_KEYUP, UIntPtr.Zero); // 释放
}
}
检查当前状态 (Python)
import ctypes
def get_caps_lock_state():
"""获取大写锁定状态"""
return ctypes.windll.user32.GetKeyState(0x14) & 1
# 使用示例
if get_caps_lock_state():
print("大写锁定已开启")
else:
print("大写锁定已关闭")
简易批处理文件 (Windows)
@echo off
:: 创建VBS脚本来控制
echo Set WshShell = WScript.CreateObject("WScript.Shell") > %temp%\caps.vbs
echo WshShell.SendKeys "{CAPSLOCK}" >> %temp%\caps.vbs
cscript //nologo %temp%\caps.vbs
del %temp%\caps.vbs
保存为 capslock_toggle.bat
使用建议
- Windows 用户:推荐使用 VBScript 或 PowerShell 版本
- Linux 用户:使用 xdotool 版本
- 开发用途:使用 Python 版本,便于扩展功能
这些脚本可以轻松集成到热键自动化和批量脚本中,需要特定的功能(如定时控制、状态监控等)我可以帮你扩展。