将键序列向量转换为用户可读的字符串表示?

eal*_*nso 5 emacs elisp key vector

如何将emacs keysequence向量(即read-key-sequence-vector的结果)转换为用户可读的字符串?即,给定[7],返回'C-g'.

我需要一种可靠的方法来检查任意长度的关键序列之间的相等性,以及以非矢量格式(即人类可读)显示关键序列.

有关详细信息,我的功能必须执行以下操作:

  • 定义值(字符串)的键序列的哈希映射.密钥序列具有任意长度(例如,"q""w"3""4"),并且不受emacs的键映射限制.
  • 在缓冲区中向用户显示映射(keysequence - > string).因此,用户必须能够理解关键序列,即不能采用矢量格式.
  • 从用户读取一个keysequence,返回相应的字符串.

我可以使用两个函数,read-key-sequenceread-key-sequence-vector.前者有时以字符串形式返回,有时以向量形式返回,即用户键入的键序列.例如,有时它返回"1",但有时,[49],键"一".这种不可预测的行为不允许我测试相等性.

后者将键作为向量返回,正如我所提到的那样对我没用,因为我需要用户查看可能的键序列.

我想我可以在当前机器的键盘上手动创建所有键的hasmap.但我担心这不适用于其他机器.

hua*_*uan 8

(key-description [7]) => "C-g"
Run Code Online (Sandbox Code Playgroud)