You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 03:19:45