如何在macOS系统中使用Python获取当前键盘布局?
如何在macOS系统中使用Python获取当前键盘布局?
嘿,看你已经搞定了Windows和Linux下的键盘布局获取,下面给你补上macOS的两种实现方案,都能完美获取当前的键盘布局:
方法一:调用AppleScript(无需额外依赖)
这种方法借助系统自带的AppleScript来实现,不需要安装任何第三方库,简单快捷:
import subprocess def get_current_keyboard_layout_macos(): try: # 通过AppleScript获取当前输入源的名称 result = subprocess.run( ["osascript", "-e", 'tell application "System Events" to get the name of current input source'], capture_output=True, text=True ) if result.returncode == 0: # 去除输出中的多余换行符 return result.stdout.strip() else: print(f"执行脚本出错: {result.stderr}") return None except Exception as e: print(f"获取键盘布局失败: {e}") return None
调用这个函数后,会返回类似"U.S."、"简体拼音"这样的布局名称,和系统显示的一致。
方法二:使用pyobjc调用原生API(更灵活)
如果需要获取更详细的键盘布局信息(比如布局ID),可以用pyobjc库直接调用macOS的Cocoa框架,首先需要安装依赖:
pip install pyobjc
然后实现代码:
from Foundation import NSWorkspace def get_current_keyboard_layout_macos(): try: # 获取当前活跃的输入源 input_source = NSWorkspace.sharedWorkspace().currentInputSource() # 获取本地化名称(和系统显示一致) layout_name = input_source.localizedName() # 也可以获取布局ID,比如"com.apple.keylayout.US" # layout_id = input_source.inputSourceID() return layout_name except Exception as e: print(f"获取键盘布局失败: {e}") return None
这个方法能直接和系统底层交互,返回的信息更全面,适合有进阶需求的场景。
备注:内容来源于stack exchange,提问作者sh3ifu
相关产品推荐
相关产品推荐

