scomper's blog

鼠须管 Emoji 表情输入

2018.04.09

鼠须管中 Emoji 表情的输入有几种方式,以前采用的是 dict 词典的方式,是将表情符号和对应的拼音写入 luna_pinyin.emoji.dict.yaml 文件,通过扩展词库的方式调用。不过由于词频的原因很多时候翻出想要的表情需要好几页,而且维护起来也不是很方便。

@LEOYoon-Tsaw 提供的基于 OpenCCDict 的加载 Emoji 的方式更科学,可以在输入法设置中随时打开和关闭。表情候选支持分类和单个的输出。

要换成这种 Emoji 的输入方案,需要几个步骤:
1 . 复制文件到用户目录,在 Rime 用户目录下新建一个 opencc 的文件夹,复制 emoji_word.txt、emoji_category.txt、emoji.json 三个文件到其中;

2 . 调整配置文件,以 double_pinyin_flypy.custom.yaml 小鹤双拼为例,在文件中增加绿色高亮的部分,如果在朙月拼音中也想用这种实现,修改 luna_pinyin_simp.custom.yaml。

需要添加的代码

switches:
  - name: show_emoji
    reset: 1
    states: [ "🈚️️\uFE0E", "🈶️️\uFE0F" ]
engine:
  filters:
    - simplifier@emoji_conversion
emoji_conversion:
  opencc_config: emoji.json
  option_name: show_emoji
  tags: abc

3 . 修改完成后「重新部署」。

试试效果如何 😄️,既支持表情分类的输入,例如:做运动,也支持单个的表情对应,具体的内容可以查看 emoji_word.txt 和 emoji_category.txt,也可以按照类似的格式补充。

为了便于集中维护,修改好的配置文件包依旧在老地方,《「鼠须管」的调教笔记》一文的最后包含 Dropbox 下载链接。


※ 文中提到的配置文件和扩充词典文件的 Squirrel-Patch.zip // Dropbox网盘下载。

※ 最新编译好的程序 Squirrel-Release.zip可依据下面步骤自行替换。

- 先停用(输入源里移除鼠须管,等替换完成后再添加回来)「鼠须管」;
- Finder 定位到 /Library/Input Methods 用下载的编译版本替换旧的程序;
- 右键运行一次替换的新程序,给它提权(在 app 上右键选择「打开」);
- 输入源中添加「鼠须管」重新部署即可。
Comments
Write a Comment
  • Voleking reply

    simplifier@emoji_conversion 放到 uniquifier 后面会导致重复过滤失效,例如输入vz或着jr时,详见:

    https://github.com/rime/squirrel/issues/213

  • @Voleking 谢谢反馈,已经按你的方案调整了 simplifier@emoji_conversion 顺序。

  • Voleking reply

    @scomper 客气了,一直以来你的各种配置文件对我的帮助很大,节省了我很多折腾的时间🙏🏻

  • Leezb101 reply

    为什么我照着这个教程增加了代码在double_pinyin.custom.yaml之后,切换输入法选项是看到了变化,但是自然码双拼本身直接失效了,只能输入字母,无法输入中文,不出候选框……求大佬指点。。。

  • scomper reply

    @Leezb101 没有生效应该是代码部分有问题,检查缩进和语法。

  • Leezb101 reply

    @scomper emm,不是没有生效,是生效了把输入法方案搞死了,在[切换输入方案]时已经能看到有了,但是选了该方案(这里我改的自然码双拼)后,就只能像美式键盘一样单纯输入字母,没法显示候选框了

  • scomper reply

    @Leezb101 Squirrel 对配置的容错度很低,只要配置有问题就会表现出各种不正常。具体的报错可以看看日志,或者先套用范例配置排查问题。

  • Leezb101 reply

    @scomper 谢谢回复~!查到了……问题出在engine那一段,按照图片示例里改成engine/filters: 的格式就可以……如果按照下面markDown里的写法换行写engine: /n/t filters: ,就不行。。。

    然后还有个问题是,为什么我完成之后的效果是只能单字匹配,而没有像截图一样可以直接用emoji_word.txt里定义的词汇进行显示呢?不管输入了几个字,都只按照第一个字去匹配或者不匹配。。。忧伤。。

    求大神解答……

  • scomper reply

    @Leezb101 配置文件可以访问 https://github.com/scomper/Rime,博客中贴的代码内容容易受 md 格式的影响发生变化。