var bufferedData = this.devKeyboard.GetBufferedData();\r
//if ( Result.Last.IsSuccess && bufferedData != null )\r
{\r
- foreach ( KeyboardUpdate data in bufferedData )\r
+ foreach( KeyboardUpdate data in bufferedData )\r
{\r
+ // #xxxxx: 2017.5.7: from: DIK (SharpDX.DirectInput.Key) を SlimDX.DirectInput.Key に変換。\r
+ var key = DeviceConstantConverter.DIKtoKey( data.Key );\r
+ if( SlimDXKey.Unknown == key )\r
+ continue; // 未対応キーは無視。\r
+\r
//foreach ( Key key in data.PressedKeys )\r
if( data.IsPressed )\r
{\r
- var key = data.Key;\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
+ if( key != SlimDXKey.Return || ( bKeyState[ (int) SlimDXKey.LeftAlt ] == false && bKeyState[ (int) SlimDXKey.RightAlt ] == false ) )\r
{\r
- STInputEvent item = new STInputEvent()\r
- {\r
+ STInputEvent item = new STInputEvent() {\r
nKey = (int) key,\r
b押された = true,\r
b離された = false,\r
this.bKeyState[ (int) key ] = true;\r
this.bKeyPushDown[ (int) key ] = true;\r
}\r
- //if ( item.nKey == (int) SharpDX.DirectInput.Key.Space )\r
+ //if ( item.nKey == (int) SlimDXKey.Space )\r
//{\r
// Trace.TraceInformation( "FDK(buffered): SPACE key registered. " + ct.nシステム時刻 );\r
//}\r
//foreach ( Key key in data.ReleasedKeys )\r
if( data.IsReleased )\r
{\r
- var key = data.Key;\r
- STInputEvent item = new STInputEvent()\r
- {\r
+ STInputEvent item = new STInputEvent() {\r
nKey = (int) key,\r
b押された = false,\r
b離された = true,\r
KeyboardState currentState = this.devKeyboard.GetCurrentState();\r
//if ( Result.Last.IsSuccess && currentState != null )\r
{\r
- foreach ( Key key in currentState.PressedKeys )\r
+ foreach( SharpDXKey dik in currentState.PressedKeys )\r
{\r
- if ( this.bKeyState[ (int) key ] == false )\r
+ // #xxxxx: 2017.5.7: from: DIK (SharpDX.DirectInput.Key) を SlimDX.DirectInput.Key に変換。\r
+ var key = DeviceConstantConverter.DIKtoKey( dik );\r
+ if( SlimDXKey.Unknown == key )\r
+ continue; // 未対応キーは無視。\r
+\r
+ if( this.bKeyState[ (int) key ] == false )\r
{\r
- if ( key != Key.Return || ( bKeyState[ (int) Key.LeftAlt ] == false && bKeyState[ (int) Key.RightAlt ] == false ) ) // #23708 2016.3.19 yyagi\r
+ if( key != SlimDXKey.Return || ( bKeyState[ (int) SlimDXKey.LeftAlt ] == false && bKeyState[ (int) SlimDXKey.RightAlt ] == false ) ) // #23708 2016.3.19 yyagi\r
{\r
- var ev = new STInputEvent()\r
- {\r
+ var ev = new STInputEvent() {\r
nKey = (int) key,\r
b押された = true,\r
b離された = false,\r
- nTimeStamp = CSound管理.rc演奏用タイマ.nシステム時刻, // 演奏用タイマと同じタイマを使うことで、BGMと譜面、入力ずれを防ぐ。\r
+ nTimeStamp = CSound管理.rc演奏用タイマ.nシステム時刻, // 演奏用タイマと同じタイマを使うことで、BGMと譜面、入力ずれを防ぐ。\r
nVelocity = CInput管理.n通常音量,\r
};\r
this.list入力イベント.Add( ev );\r
this.bKeyPushDown[ (int) key ] = true;\r
}\r
\r
- //if ( (int) key == (int) SharpDX.DirectInput.Key.Space )\r
+ //if ( (int) key == (int) SlimDXKey.Space )\r
//{\r
// Trace.TraceInformation( "FDK(direct): SPACE key registered. " + ct.nシステム時刻 );\r
//}\r
}\r
}\r
//foreach ( Key key in currentState.ReleasedKeys )\r
- foreach( Key key in currentState.AllKeys )\r
+ foreach( SharpDXKey dik in currentState.AllKeys )\r
{\r
- if( this.bKeyState[ (int) key ] == true && !currentState.IsPressed( key ) ) // 前回は押されているのに今回は押されていない → 離された\r
+ // DIK (SharpDX.DirectInput.Key) を SlimDX.DirectInput.Key に変換。\r
+ var key = DeviceConstantConverter.DIKtoKey( dik );\r
+ if( SlimDXKey.Unknown == key )\r
+ continue; // 未対応キーは無視。\r
+\r
+ if( this.bKeyState[ (int) key ] == true && !currentState.IsPressed( dik ) ) // 前回は押されているのに今回は押されていない → 離された\r
{\r
var ev = new STInputEvent() {\r
nKey = (int) key,\r
#endregion\r
}\r
#region [#23708 2011.4.8 yyagi Altが押されているときは、Enter押下情報を削除する -> 副作用が見つかり削除]\r
- //if ( this.bKeyState[ (int) SharpDX.DirectInput.Key.RightAlt ] ||\r
- // this.bKeyState[ (int) SharpDX.DirectInput.Key.LeftAlt ] )\r
+ //if ( this.bKeyState[ (int) SlimDXKey.RightAlt ] ||\r
+ // this.bKeyState[ (int) SlimDXKey.LeftAlt ] )\r
//{\r
- // int cr = (int) SharpDX.DirectInput.Key.Return;\r
+ // int cr = (int) SlimDXKey.Return;\r
// this.bKeyPushDown[ cr ] = false;\r
// this.bKeyPullUp[ cr ] = false;\r
// this.bKeyState[ cr ] = false;\r
#endregion\r
}\r
}\r
+\r
+ /// <param name="nKey">\r
+ /// 調べる SlimDX.DirectInput.Key を int にキャストした値。(SharpDX.DirectInput.Key ではないので注意。)\r
+ /// </param>\r
public bool bキーが押された( int nKey )\r
{\r
return this.bKeyPushDown[ nKey ];\r
}\r
+\r
+ /// <param name="nKey">\r
+ /// 調べる SlimDX.DirectInput.Key を int にキャストした値。(SharpDX.DirectInput.Key ではないので注意。)\r
+ /// </param>\r
public bool bキーが押されている( int nKey )\r
{\r
return this.bKeyState[ nKey ];\r
}\r
+\r
+ /// <param name="nKey">\r
+ /// 調べる SlimDX.DirectInput.Key を int にキャストした値。(SharpDX.DirectInput.Key ではないので注意。)\r
+ /// </param>\r
public bool bキーが離された( int nKey )\r
{\r
return this.bKeyPullUp[ nKey ];\r
}\r
+\r
+ /// <param name="nKey">\r
+ /// 調べる SlimDX.DirectInput.Key を int にキャストした値。(SharpDX.DirectInput.Key ではないので注意。)\r
+ /// </param>\r
public bool bキーが離されている( int nKey )\r
{\r
return !this.bKeyState[ nKey ];\r
#region [ private ]\r
//-----------------\r
private bool bDispose完了済み;\r
- private bool[] bKeyPullUp = new bool[ 0x100 ];\r
- private bool[] bKeyPushDown = new bool[ 0x100 ];\r
- private bool[] bKeyState = new bool[ 0x100 ];\r
+ private bool[] bKeyPullUp = new bool[ 256 ];\r
+ private bool[] bKeyPushDown = new bool[ 256 ];\r
+ private bool[] bKeyState = new bool[ 256 ];\r
private Keyboard devKeyboard;\r
//private CTimer timer;\r
//private CTimer ct;\r