写了一个不用输入法框架的 key-chord

EDIT:我已经把项目放到了一个独立的 repo 里面,参见:

除了没法绑定两个重复的按键(例如给 hh 绑定一个函数)和不支持键盘宏以外,其他的功能和 key-chord 都是一样的。


key-chord 非常有创意,奈何依赖emacs的输入法框架,因此没法和其他emacs输入法协同运作。所以我写了一个功能类似,但不使用输入法框架的插件。这个插件使用了 key-translation-map 做转换。插件还没有完成,像是删除键绑定之类的功能都还没有做,但是基本功能已经有了。

用法:

(setq mk-two-keys-delay 0.1) ; 两键间隔,0.1 秒是默认值
(mk-bind-key "kl" #'pyim-convert-code-at-point)

地址在: https://github.com/Liu233w/.spacemacs.d/blob/master/libs/multi-keys.el

目前还是在我的配置文件夹里,我打算等到完善一些之后再放到一个单独的repo里面。

第一次写这么长的插件,感觉自己写得特别乱_(:зゝ∠)_

这个插件还有几个重要的问题没有解决:

  • 我没有测试绑定同一个相同按键的情况(比如 (mk-bind-key "hh" #'pyim-convert-code-at-point)),想必是没法正常运作的
  • 目前的 mk-bind-key 是一个宏,因为我还不知道怎么在函数里面动态生成一个 defvar 或者 defun 的定义(特别是名字)
4 个赞

我对输入法很有兴趣,或者说方案,就是打字母出汉字这一过程,不过 elisp 水平不行,都用 yaml 折腾 RIME, 看了 key-chord,感觉以后可以参考一下这个方案: rime-combo-pinyin/combo_pinyin.schema.yaml at master · rime/rime-combo-pinyin · GitHub 做成中文输入法。这个宫保方案基本是以汉语拼音为基础,声母在左韵母在右,两键或多键并击,每完成一组击键出一个完整的汉语音节。

如果是做中文输入的话,还是希望能自定义输入方案,有些小众方案还是很有意思的。

1 个赞

前几天刚刚听说了双拼,今天又看到了“宫保拼音”。世界观又被刷新了_(:зゝ∠)_

今天又更新了一些,现在已经不需要使用宏了,和插件相关的键绑定只定义在一个单独的 key-map 里面,这样取消键绑定也变得方便了。

用法:

    (define-multi-keys "kl" #'pyim-convert-code-at-point)

只是发现了一个奇怪的bug:这个插件在调用 pyim-convert-code-at-point 来转换拼音的时候有时会报错 pyim-dagger-delete-string: Wrong type argument: overlayp, nil 。之前的版本也有这个问题。真是奇怪啊_(:зゝ∠)_

基本完成了,Bug都已经解决了_(:зゝ∠)_

现在的插件已经可以用了

1 个赞

刚刚加入了删除键绑定的功能,虽然还没法复原之前放在 key-translation-map 的键绑定。

源代码的地址移动到了: https://github.com/Liu233w/.spacemacs.d/blob/master/libs/multi-keys.el

项目已经放到了一个单独的 repo 里面,参见开头。

现在修改主题之后怎么没法自动置顶了_(:зゝ∠)_

1 个赞

似乎理论上用这个只要把手指放在主键位上就可以完成绝大部分打字了。

估计音乐游戏大神之类的会喜欢。当然,似乎还需要个耐操的键盘。

中文输入方案我觉得可以做仓颉啊。可以同时支持繁简中文,选词频率少。emacs自带的仓颉输入中文时连按空格选词都不需要(事实上连候选字都不会显示),不过只支持繁体。 如果能做个支持候选字和简体的仓颉会很爽啊。(节约space键寿命)