Ticket #24901

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

Date d'ouverture: 2011-04-16 23:41 Dernière mise à jour: 2013-05-05 19:02

Rapporteur:
Propriétaire:
(Aucun)
Type:
État:
Ouvert
Composant:
(Aucun)
Jalon:
(Aucun)
Priorité:
6
Sévérité:
6
Résolution:
Aucun
Fichier:
Aucun

Détails

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

今後、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使用

Ticket History (3/4 Histories)

2011-04-16 23:41 Updated by: applet
  • New Ticket "キーマップ使用時にモディファイヤキーが真のモディファイヤになってしまう。" created
2011-04-19 21:49 Updated by: applet
Commentaire

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 Updated by: applet
Commentaire

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 Updated by: applet
  • Priorité Update from 5 - moyen to 6

Attachment File List

No attachments

Modifier

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Connexion