チケット #24901

キーマップ使用時にモディファイヤキーが真のモディファイヤになってしまう。

登録: 2011-04-16 23:41 最終更新: 2013-05-05 19:02

報告者:
担当者:
(未割り当て)
チケットの種類:
状況:
オープン
コンポーネント:
(未割り当て)
マイルストーン:
(未割り当て)
優先度:
6
重要度:
6
解決法:
なし
ファイル:
なし

詳細

メールで御報告があったもの。

今後、mayuなどで、確認し、既存バグか、のどかで作りこんだバグか確認を行い その後、解析方法、ソースコードの確認等を行う。

・キーマップ使用時にモディファイヤキーが真のモディファイヤになってしまう。

以下再現コード

keymap my_map : Global
  key *a = b

keymap Global
  key *a = *a &Prefix(my_map)
  mod control += !!英数
  key C-英数 = BackSpace

「a」を押した後に「英数」を押すと
BackSpaceが入力されて「a」が消されるはずですがなにも起こりません。

logを確認すると
* Modifier Key
* one shot modifier
   0x3a   U-NL-K1-英数
となるべきところ

* Modifier Key
* true modifier	<===========
   0x3a   U-NL-K1-英数
となっておりモディファイヤ種別の判定を間違えているように思えます。

環境
nodoka4.17, 4.12で再現
windows7x64
ATOK使用

チケットの履歴 (4 件中 3 件表示)

2011-04-16 23:41 更新者: applet
  • 新しいチケット "キーマップ使用時にモディファイヤキーが真のモディファイヤになってしまう。" が作成されました
2011-04-19 21:49 更新者: applet
コメント

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となる動きは正しいかどうか調べることにする。

2011-04-19 22:25 更新者: applet
コメント

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	{
		}

2013-05-05 19:02 更新者: applet
  • 優先度5 - 中 から 6 に更新されました

添付ファイルリスト

添付ファイルはありません

編集

ログインしていません。ログインしていない状態では、コメントに記載者の記録が残りません。 » ログインする