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

如何以编程方式访问macOS特殊字符列表开发Alfred工作流?

解决方案:无需维护字符列表,实现Alfred快速插入特殊字符

我完全懂你的痛点——macOS字符查看器确实难用,而emojilib又只覆盖表情符号。下面几个方案能帮你不用手动维护字符列表,快速实现Alfred里的特殊字符检索:

1. 用Python内置模块unicodedata(零依赖,推荐)

Python自带的unicodedata模块可以直接访问完整的Unicode字符数据库,不需要额外安装任何库。你可以写一个小脚本,根据字符名称搜索目标符号(比如希腊字母、数学符号),完全符合纯键盘操作的需求。

示例脚本(适配Alfred Script Filter):

import unicodedata
import sys
import json

def find_symbols(query):
    results = []
    # 覆盖常用特殊字符的Unicode码点范围:希腊字母、数学运算符、集合符号等
    ranges = [
        (0x0370, 0x03FF),    # 希腊字母及扩展
        (0x2200, 0x22FF),    # 数学运算符
        (0x2190, 0x21FF),    # 箭头符号
        (0x25A0, 0x25FF),    # 几何图形
        (0x2600, 0x26FF)     # 杂项符号(可选)
    ]
    
    for start, end in ranges:
        for codepoint in range(start, end + 1):
            char = chr(codepoint)
            name = unicodedata.name(char, "")
            if not name:
                continue
            # 支持大小写不敏感搜索,同时可以扩展中文关键词映射
            if query.upper() in name.upper() or query in get_chinese_aliases(char):
                results.append({
                    "title": f"{char} ({name})",
                    "subtitle": "Press Enter to insert",
                    "arg": char,
                    "icon": {"type": "font", "value": char}
                })
    return results

def get_chinese_aliases(char):
    # 自定义常用符号的中文别名,方便中文搜索
    aliases = {
        "∈": ["属于", "in"],
        "⇒": ["蕴含", "推出", "implies"],
        "Σ": ["求和", "西格玛", "sigma"],
        "α": ["阿尔法", "alpha"],
        "β": ["贝塔", "beta"],
        "∩": ["交集", "intersection"],
        "∪": ["并集", "union"]
    }
    return aliases.get(char, [])

if __name__ == "__main__":
    query = sys.argv[1] if len(sys.argv) > 1 else ""
    items = find_symbols(query)
    print(json.dumps({"items": items}))

把这个脚本作为Alfred的Script Filter,设置触发关键词(比如char),输入char sigma就能找到所有Sigma相关字符,选中后直接插入。

2. 使用第三方库symbols(类emojilib体验)

如果你想要更接近emojilib的键值对结构,可以用symbols库,它专门整理了数学符号、希腊字母等特殊字符,安装后直接调用即可:

首先安装库:

pip install symbols

然后编写Alfred适配脚本:

from symbols import symbols
import sys
import json

def search_symbols(query):
    results = []
    query_lower = query.lower()
    for char, info in symbols.items():
        if query_lower in info["name"].lower() or query_lower in info["keywords"]:
            results.append({
                "title": f"{char} ({info['name']})",
                "subtitle": "Press Enter to insert",
                "arg": char,
                "icon": {"type": "font", "value": char}
            })
    return results

if __name__ == "__main__":
    query = sys.argv[1] if len(sys.argv) > 1 else ""
    items = search_symbols(query)
    print(json.dumps({"items": items}))

这个库的结构和emojilib几乎一致,你可以直接复用现有emoji工作流的逻辑,只需要替换数据源即可。

3. 扩展技巧:优化搜索体验

  • 快捷别名:在脚本里添加常用符号的缩写映射,比如输入impl直接匹配⇒,输入alpha直接匹配α
  • 排序优化:把常用字符放在结果顶部,比如根据使用频率记录(可以用Alfred的Workflow Data存储使用次数)
  • 离线可用:以上方案都是完全离线的,不需要联网访问外部服务

内容的提问来源于stack exchange,提问作者GTF

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 09:20:46