if( ( ( bWindowがアクティブ中 && ( this.devKeyboard != null ) ) && !this.devKeyboard.Acquire().IsFailure ) && !this.devKeyboard.Poll().IsFailure )\r
{\r
this.list入力イベント = new List<STInputEvent>( 32 );\r
+ int posEnter = -1;\r
\r
if( bバッファ入力を使用する )\r
{\r
{\r
foreach( KeyboardState data in bufferedData )\r
{\r
- foreach( Key key3 in data.PressedKeys )\r
+ foreach( Key key in data.PressedKeys )\r
{\r
- STInputEvent event4 = new STInputEvent();\r
- STInputEvent item = event4;\r
- item.nKey = (int) key3;\r
+ STInputEvent item = new STInputEvent();\r
+ item.nKey = (int) key;\r
item.b押された = true;\r
item.b離された = false;\r
item.nTimeStamp = data.TimeStamp;\r
item.nVelocity = CInput管理.n通常音量;\r
this.list入力イベント.Add( item );\r
\r
- this.bKeyState[ (int) key3 ] = true;\r
- this.bKeyPushDown[ (int) key3 ] = true;\r
+ this.bKeyState[ (int) key ] = true;\r
+ this.bKeyPushDown[ (int) key ] = true;\r
+ if ( (int)key == (int)SlimDX.DirectInput.Key.Return )\r
+ {\r
+ posEnter = this.list入力イベント.Count - 1; // #23708 2011.1.16 yyagiEnterのlist位置を記憶\r
+ }\r
}\r
- foreach( Key key4 in data.ReleasedKeys )\r
+ foreach( Key key in data.ReleasedKeys )\r
{\r
- STInputEvent event5 = new STInputEvent();\r
- STInputEvent event3 = event5;\r
- event3.nKey = (int) key4;\r
+ STInputEvent event3 = new STInputEvent();\r
+ event3.nKey = (int) key;\r
event3.b押された = false;\r
event3.b離された = true;\r
event3.nTimeStamp = data.TimeStamp;\r
event3.nVelocity = CInput管理.n通常音量;\r
this.list入力イベント.Add( event3 );\r
\r
- this.bKeyState[ (int) key4 ] = false;\r
- this.bKeyPullUp[ (int) key4 ] = true;\r
+ this.bKeyState[ (int) key ] = false;\r
+ this.bKeyPullUp[ (int) key ] = true;\r
}\r
}\r
}\r
\r
this.bKeyState[ (int) key ] = true;\r
this.bKeyPushDown[ (int) key ] = true;\r
+\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
}\r
}\r
- foreach( Key key2 in currentState.ReleasedKeys )\r
+ foreach( Key key in currentState.ReleasedKeys )\r
{\r
- if( this.bKeyState[ (int) key2 ] == true )\r
+ if( this.bKeyState[ (int) key ] == true )\r
{\r
var ev = new STInputEvent() {\r
- nKey = (int) key2,\r
+ nKey = (int) key,\r
b押された = false,\r
b離された = true,\r
nTimeStamp = this.timer.nシステム時刻,\r
};\r
this.list入力イベント.Add( ev );\r
\r
- this.bKeyState[ (int) key2 ] = false;\r
- this.bKeyPullUp[ (int) key2 ] = true;\r
+ this.bKeyState[ (int) key ] = false;\r
+ this.bKeyPullUp[ (int) key ] = true;\r
}\r
}\r
}\r
//-----------------------------\r
#endregion\r
}\r
+ #region [#23708 2011.1.16 yyagi Alt+Enter発生時、Enter押下情報を削除する]\r
+ if ( this.bKeyPushDown[ (int) SlimDX.DirectInput.Key.Return ] == true )\r
+ {\r
+ if ( this.bKeyPullUp[ (int) SlimDX.DirectInput.Key.Return ] == true )\r
+ {\r
+ // #23708 2011.1.16 yyagi\r
+ // フルスクリーンとウインドウを切り替える際、バッファ内でEnterのPushDownとPullUpが両方ともtrueとなることがある。\r
+ // その際はどちらもfalseにして、Enter入力を無かったことにし、フルスクリーンとウインドウ切り替え時の\r
+ // 余分なEnter動作を回避する。(対処療法的なやり方だが・・・)\r
+ this.bKeyPushDown[ (int) SlimDX.DirectInput.Key.Return ] =\r
+ this.bKeyPullUp[ (int) SlimDX.DirectInput.Key.Return ] = false;\r
+ }\r
+ if ( this.bKeyState[ (int) SlimDX.DirectInput.Key.LeftAlt ] == true || this.bKeyState[ (int) SlimDX.DirectInput.Key.RightAlt ] == true )\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
+ }\r
+ }\r
+ #endregion\r
}\r
}\r
public bool bキーが押された( int nKey )\r