5

emacs キーシーケンス ベクトル (つまり、read-key-sequence-vector の結果) をユーザーが読み取り可能な文字列に変換するにはどうすればよいですか? つまり、[7] が与えられた場合、'Cg' を返します。

任意の長さのキー シーケンス間の等価性をチェックする信頼できる方法と、キー シーケンスを非ベクトル形式 (つまり人間が読める形式) で表示する方法が必要です。

詳細については、私の関数は次のことを行う必要があります。

  • キーシーケンスから値 (文字列) へのハッシュマップを定義します。キーシーケンスは任意の長さ (たとえば、"q" "w" 3" "4") を持ち、emacs のキーマップによって制限されません。
  • バッファ内のユーザーへのマッピング (キーシーケンス --> 文字列) を表示します。したがって、キーシーケンスはユーザーが理解できるものでなければなりません。つまり、ベクトル形式であってはなりません。
  • ユーザーからキーシーケンスを読み取り、適切な文字列を返します。

使用できる関数は 2 つあります。read-key-sequenceread-key-sequence-vectorです。前者は、ユーザーが入力したキーシーケンスを文字列またはベクトルとして返す場合があります。たとえば、キー「one」に対して「1」を返すこともあれば、[49] を返すこともあります。この予測不可能な動作により、等しいかどうかをテストできません。

後者はキーをベクトルとして返しますが、前述のように、ユーザーが可能なキーシーケンスを確認する必要があるため、これは役に立ちません。

現在のマシンのキーボードのすべてのキーの hasmap を手動で作成できると思います。しかし、残念ながらこれは他のマシンには移植できません。

4

1 に答える 1

8
(key-description [7]) => "C-g"
于 2013-02-26T13:14:50.210 に答える