yamyで確認を行った。挙動は同じ。
aを押し続けると、ababab となる。 aが表示されたときに、英数キーを押すと、backspaceにはならない。 bが表示されたときに、英数キーを押すと、backspaceになる。
aを押して、aが入力され、keymapが、&Prefix()によって、変更されたあとで、aを押すと bが入力された。 ここで、keymapは、Globalに戻っているはずなので、英数キーを押せば、backspaceになる。 これは正しい。
keymapが &Prefix()によって変更されたときに、英数キーを押しても、未定義なので、Global側の英数キーの処理にならなければならいが ここがおかしい。
だからと言って、変わった方のkeymapで、英数キーの定義を入れても、正しくならない。
従って、keymapの処理というよりも、one shot modifierとして挙動が、正しくないことになる。 one shot modifierは、本来、他のキーと押したときに、発生するものなので、C-英数で処理する方がおかしい感じもする。 なぜなら、英数キーのみで、Ctrlは押されていないからだ。
まず、英数キー単独で押したときに、backspaceとなる動きは正しいかどうか調べることにする。
a を押した後で、英数キーを押すとBackSpaceにならないときのログ。 keymapを移った際、U-Bが発生するのが、おかしい感じがする。 これが無ければ、BackSapceになる感じがする。
One Shot Modifier前後のシーケンスを図にして、状態遷移が正しいか確認する必要がある。
m_currentKeyPressCount:1 0x1e D-K0-A one shot modifier is NULL * Gen Modifiers { } => 0x1e D-A => 0x1e U-A > &Prefix(my_map, true) (my_map, true) m_currentKeyPressCount:1 m_currentKeyPressCount:0 0x1e U-K0-A => (already released) 0x30 U-B m_currentKeyPressCount:0 * No key is pressed * Gen Modifiers { } m_currentKeyPressCount:1 * Modifier Key * true modifier 0x3a D-K0-英数 m_currentKeyPressCount:1 m_currentKeyPressCount:0 * Modifier Key * true modifier 0x3a U-K0-英数 m_currentKeyPressCount:0 * No key is pressed * Gen Modifiers { }
メールで御報告があったもの。
今後、mayuなどで、確認し、既存バグか、のどかで作りこんだバグか確認を行い その後、解析方法、ソースコードの確認等を行う。