OSDN Git Service

#23708 Alt+Enterの問題修正を一旦取り消し。副作用でEnterが聞かなくなることがある問題が見つかったため。
authoryyagi <yyagi@16f42ceb-6dc6-49c8-ba94-f2d53467949d>
Mon, 17 Jan 2011 12:36:53 +0000 (12:36 +0000)
committeryyagi <yyagi@16f42ceb-6dc6-49c8-ba94-f2d53467949d>
Mon, 17 Jan 2011 12:36:53 +0000 (12:36 +0000)
git-svn-id: http://svn.osdn.jp/svnroot/dtxmania/trunk@85 16f42ceb-6dc6-49c8-ba94-f2d53467949d

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

index 61beeac..5475197 100644 (file)
@@ -69,6 +69,7 @@ namespace FDK
                        {\r
                                this.list入力イベント = new List<STInputEvent>( 32 );\r
                                int posEnter = -1;\r
+                               string d = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.ffff");\r
 \r
                                if( bバッファ入力を使用する )\r
                                {\r
@@ -91,10 +92,15 @@ namespace FDK
 \r
                                                                this.bKeyState[ (int) key ] = true;\r
                                                                this.bKeyPushDown[ (int) key ] = true;\r
+#if TEST_CancelEnterCodeInAltEnter\r
                                                                if ( (int)key == (int)SlimDX.DirectInput.Key.Return )\r
                                                                {\r
-                                                                       posEnter = this.list入力イベント.Count - 1;       //  #23708 2011.1.16 yyagiEnterのlist位置を記憶\r
+                                                                       posEnter = this.list入力イベント.Count - 1;       //  #23708 2011.1.16 yyagi Enterのlist位置を記憶\r
                                                                }\r
+if ( (int)key == (int)SlimDX.DirectInput.Key.RightAlt) {\r
+Debug.WriteLine( d + ": RAlt State/PushDown=true");\r
+}\r
+#endif\r
                                                        }\r
                                                        foreach( Key key in data.ReleasedKeys )\r
                                                        {\r
@@ -108,6 +114,11 @@ namespace FDK
 \r
                                                                this.bKeyState[ (int) key ] = false;\r
                                                                this.bKeyPullUp[ (int) key ] = true;\r
+#if TEST_CancelEnterCodeInAltEnter\r
+if ( (int)key == (int)SlimDX.DirectInput.Key.RightAlt) {\r
+Debug.WriteLine( d + ": RAlt State = false PullUp=true");\r
+}\r
+#endif\r
                                                        }\r
                                                }\r
                                        }\r
@@ -137,10 +148,12 @@ namespace FDK
                                                                this.bKeyState[ (int) key ] = true;\r
                                                                this.bKeyPushDown[ (int) key ] = true;\r
 \r
+#if TEST_CancelEnterCodeInAltEnter\r
                                                                if ( (int)key == (int)SlimDX.DirectInput.Key.Return )\r
                                                                {\r
                                                                        posEnter = this.list入力イベント.Count - 1;       //  #23708 2011.1.16 yyagi Enterのlist位置を記憶\r
                                                                }\r
+#endif\r
                                                        }\r
                                                }\r
                                                foreach( Key key in currentState.ReleasedKeys )\r
@@ -164,11 +177,14 @@ namespace FDK
                                        //-----------------------------\r
                                        #endregion\r
                                }\r
+#if TEST_CancelEnterCodeInAltEnter\r
                                #region [#23708 2011.1.16 yyagi Alt+Enter発生時、Enter押下情報を削除する]\r
                                if ( this.bKeyPushDown[ (int) SlimDX.DirectInput.Key.Return ] == true )\r
                                {\r
+Debug.WriteLine( d + ": Enter PushDown=true" );\r
                                        if ( this.bKeyPullUp[ (int) SlimDX.DirectInput.Key.Return ] == true )\r
                                        {\r
+Debug.WriteLine( d + ": Enter PullUp=true" );\r
                                                // #23708 2011.1.16 yyagi\r
                                                // フルスクリーンとウインドウを切り替える際、バッファ内でEnterのPushDownとPullUpが両方ともtrueとなることがある。\r
                                                // その際はどちらもfalseにして、Enter入力を無かったことにし、フルスクリーンとウインドウ切り替え時の\r
@@ -178,16 +194,24 @@ namespace FDK
                                        }\r
                                        if ( this.bKeyState[ (int) SlimDX.DirectInput.Key.LeftAlt ] == true || this.bKeyState[ (int) SlimDX.DirectInput.Key.RightAlt ] == true )\r
                                        {\r
+Debug.WriteLine( d + ": Alt LALTstate=" + this.bKeyState[ (int)SlimDX.DirectInput.Key.LeftAlt] + ", RALTstate=" + this.bKeyState[ (int)SlimDX.DirectInput.Key.RightAlt] );\r
+Debug.WriteLine( d + ": Alt LALTPushDown=" + this.bKeyPushDown[ (int) SlimDX.DirectInput.Key.LeftAlt ] + ", RALTPushDown=" + this.bKeyPushDown[ (int) SlimDX.DirectInput.Key.RightAlt ] );\r
+Debug.WriteLine( d + ": Alt LALTPullUp=" + this.bKeyPullUp[ (int) SlimDX.DirectInput.Key.LeftAlt ] + ", RALTPullUp=" + this.bKeyPullUp[ (int) SlimDX.DirectInput.Key.RightAlt ] );\r
+\r
                                                // #23708 2011.1.16 yyagi\r
                                                // alt-enter押下時は、DTXMania内部としては Enter押下を無かったことにする。\r
                                                // (しかしFormの処理としてはEnter押下が残るので、フルスクリーンとウインドウの切り替えのみ実行され、\r
                                                //  選曲画面等での実行動作は無くなる。)\r
-                                               this.bKeyState[ (int) SlimDX.DirectInput.Key.Return ] = false;\r
-                                               this.bKeyPushDown[ (int) SlimDX.DirectInput.Key.Return ] = false;\r
-                                               this.list入力イベント.RemoveAt( posEnter );\r
+                                               if ( posEnter >= 0 )\r
+                                               {\r
+                                                       this.bKeyState[ (int) SlimDX.DirectInput.Key.Return ] = false;\r
+                                                       this.bKeyPushDown[ (int) SlimDX.DirectInput.Key.Return ] = false;\r
+                                                       this.list入力イベント.RemoveAt( posEnter );\r
+                                               }\r
                                        }\r
                                }\r
                                #endregion\r
+#endif\r
                        }\r
                }\r
                public bool bキーが押された( int nKey )\r