OSDN Git Service

#23708 ALT+ENTER 押下時に ENTER の単独入力が同時に聞いてしまう問題に対処。
authoryyagi <yyagi@16f42ceb-6dc6-49c8-ba94-f2d53467949d>
Sat, 19 Mar 2016 02:37:32 +0000 (02:37 +0000)
committeryyagi <yyagi@16f42ceb-6dc6-49c8-ba94-f2d53467949d>
Sat, 19 Mar 2016 02:37:32 +0000 (02:37 +0000)
結局、Form側の SuppressKeyPress では DirectInput の制御はできないため、FDK側でEnter入力を受け付ける条件を追加し対処した。

git-svn-id: http://svn.osdn.jp/svnroot/dtxmania/trunk@932 16f42ceb-6dc6-49c8-ba94-f2d53467949d

FDK17プロジェクト/コード/02.入力/CInputKeyboard.cs

index 20b7725..d957b0d 100644 (file)
@@ -85,19 +85,25 @@ namespace FDK
                                                {\r
                                                        foreach ( Key key in data.PressedKeys )\r
                                                        {\r
-                                                               STInputEvent item = new STInputEvent()\r
+                                                               // #23708 2016.3.19 yyagi; Even if we remove ALT+ENTER key input by SuppressKeyPress = true in Form,\r
+                                                               // it doesn't affect to DirectInput (ALT+ENTER does not remove)\r
+                                                               // So we ignore ENTER input in ALT+ENTER combination here.\r
+                                                               // Note: ENTER will be alived if you keyup ALT after ALT+ENTER.\r
+                                                               if ( key != Key.Return || ( bKeyState[ (int)Key.LeftAlt ] == false && bKeyState[ (int)Key.RightAlt ] == false ) )\r
                                                                {\r
-                                                                       nKey = (int) key,\r
-                                                                       b押された = true,\r
-                                                                       b離された = false,\r
-                                                                       nTimeStamp = CSound管理.rc演奏用タイマ.nサウンドタイマーのシステム時刻msへの変換( data.TimeStamp ),\r
-                                                                       nVelocity = CInput管理.n通常音量\r
-                                                               };\r
-                                                               this.list入力イベント.Add( item );\r
-\r
-                                                               this.bKeyState[ (int) key ] = true;\r
-                                                               this.bKeyPushDown[ (int) key ] = true;\r
+                                                                       STInputEvent item = new STInputEvent()\r
+                                                                       {\r
+                                                                               nKey = (int) key,\r
+                                                                               b押された = true,\r
+                                                                               b離された = false,\r
+                                                                               nTimeStamp = CSound管理.rc演奏用タイマ.nサウンドタイマーのシステム時刻msへの変換( data.TimeStamp ),\r
+                                                                               nVelocity = CInput管理.n通常音量\r
+                                                                       };\r
+                                                                       this.list入力イベント.Add( item );\r
 \r
+                                                                       this.bKeyState[ (int) key ] = true;\r
+                                                                       this.bKeyPushDown[ (int) key ] = true;\r
+                                                               }\r
                                                                //if ( item.nKey == (int) SlimDX.DirectInput.Key.Space )\r
                                                                //{\r
                                                                //    Trace.TraceInformation( "FDK(buffered): SPACE key registered. " + ct.nシステム時刻 );\r
@@ -134,18 +140,21 @@ namespace FDK
                                                {\r
                                                        if ( this.bKeyState[ (int) key ] == false )\r
                                                        {\r
-                                                               var ev = new STInputEvent()\r
+                                                               if ( key != Key.Return || ( bKeyState[ (int) Key.LeftAlt ] == false && bKeyState[ (int) Key.RightAlt ] == false ) )     // #23708 2016.3.19 yyagi\r
                                                                {\r
-                                                                       nKey = (int) key,\r
-                                                                       b押された = true,\r
-                                                                       b離された = false,\r
-                                                                       nTimeStamp = CSound管理.rc演奏用タイマ.nシステム時刻,     // 演奏用タイマと同じタイマを使うことで、BGMと譜面、入力ずれを防ぐ。\r
-                                                                       nVelocity = CInput管理.n通常音量,\r
-                                                               };\r
-                                                               this.list入力イベント.Add( ev );\r
+                                                                       var ev = new STInputEvent()\r
+                                                                       {\r
+                                                                               nKey = (int) key,\r
+                                                                               b押された = true,\r
+                                                                               b離された = false,\r
+                                                                               nTimeStamp = CSound管理.rc演奏用タイマ.nシステム時刻,     // 演奏用タイマと同じタイマを使うことで、BGMと譜面、入力ずれを防ぐ。\r
+                                                                               nVelocity = CInput管理.n通常音量,\r
+                                                                       };\r
+                                                                       this.list入力イベント.Add( ev );\r
 \r
-                                                               this.bKeyState[ (int) key ] = true;\r
-                                                               this.bKeyPushDown[ (int) key ] = true;\r
+                                                                       this.bKeyState[ (int) key ] = true;\r
+                                                                       this.bKeyPushDown[ (int) key ] = true;\r
+                                                               }\r
 \r
                                                                //if ( (int) key == (int) SlimDX.DirectInput.Key.Space )\r
                                                                //{\r