SKKにある「Kuten」とは何なんだろう?
SKKを使っている時に Kuten([MM]KKTT)
という表示が出てきたことはないで
しょうか?私はたまに見掛け、なんだろう...と思っていたのですがやっと理
解したのでメモしておきます。
ちなみに、keymapで "kuten"
を指定することで呼び出すことが出来、デフォ
ルトの状態だと \
で起動します。
/usr/share/libskk/rules/default/keymap/default.json
では以下のように
定義されています。
{
"define": {
"keymap": {
...
"\\": "kuten",
...
}
}
}
結論: Kuten は EUC-jp のコード直接入力だった
コードを完全には読み切っていないので若干の推論を含みますが、どうやら EUC-jpの文字コードを直接入力するモードなようです。 EUC-jpの文字コード表を 文字コード表 日本語EUC(euc-jp) -- charset.7jp.net を参考にして入力してみると、表の通りに入力出来ていそうでした。
表に「区」「点」の表示があったので、恐らくその由来なのでしょう。
... K
と T
は理解したけど [MM]
って何なんだろ。
経緯
最初はfcitx/fcitx5-skkの何かなのかな?と思い、そのレポジトリで"Kuten" を検索したのですが見付からず。ueno/libskkを調べてみると、 KutenStateHandlerという実装を見つけました。
(Vala読めないので雰囲気で読んでいますが)コンストラクターを見てみると、 EUC-JPのコンバーターを使っているようなので、なんとなくEUC-JPを調べて 入力してみた所動作した、という感じです。
internal KutenStateHandler () {
try {
// use EUC-JP to get JISX0208 characters by code
// point, this works because EUC-JP maps JISX0208
// characters to equivalent bytes. See:
// https://en.wikipedia.org/wiki/EUC-JP
// this is generally a wrong approach though
converter = new EncodingConverter ("EUC-JP");
} catch (GLib.Error e) {
converter = null;
assert_not_reached ();
}
}