OSDN Git Service

DTXManiaソリューション、DTXManiaプロジェクト、DTXCreatorプロジェクト、FDKプロジェクトについて英語化。
[dtxmania/dtxmania.git] / FDK17プロジェクト / コード / 02.入力 / CInputKeyboard.cs
diff --git a/FDK17プロジェクト/コード/02.入力/CInputKeyboard.cs b/FDK17プロジェクト/コード/02.入力/CInputKeyboard.cs
deleted file mode 100644 (file)
index f3dc3ea..0000000
+++ /dev/null
@@ -1,295 +0,0 @@
-using System;\r
-using System.Collections.Generic;\r
-using System.Text;\r
-using System.Diagnostics;\r
-using SharpDX;\r
-using SharpDX.DirectInput;\r
-\r
-using SlimDXKey = SlimDX.DirectInput.Key;\r
-using SharpDXKey = SharpDX.DirectInput.Key;\r
-\r
-namespace FDK\r
-{\r
-       public class CInputKeyboard : IInputDevice, IDisposable\r
-       {\r
-               // コンストラクタ\r
-\r
-               public CInputKeyboard( IntPtr hWnd, DirectInput directInput )\r
-               {\r
-                       this.e入力デバイス種別 = E入力デバイス種別.Keyboard;\r
-                       this.GUID = "";\r
-                       this.ID = 0;\r
-                       try\r
-                       {\r
-                               this.devKeyboard = new Keyboard( directInput );\r
-                               this.devKeyboard.SetCooperativeLevel( hWnd, CooperativeLevel.NoWinKey | CooperativeLevel.Foreground | CooperativeLevel.NonExclusive );\r
-                               this.devKeyboard.Properties.BufferSize = 32;\r
-                               Trace.TraceInformation( this.devKeyboard.Information.ProductName + " を生成しました。" );\r
-                       }\r
-                       catch\r
-                       {\r
-                               if( this.devKeyboard != null )\r
-                               {\r
-                                       this.devKeyboard.Dispose();\r
-                                       this.devKeyboard = null;\r
-                               }\r
-                               Trace.TraceWarning( "Keyboard デバイスの生成に失敗しました。" );\r
-                               throw;\r
-                       }\r
-                       try\r
-                       {\r
-                               this.devKeyboard.Acquire();\r
-                       }\r
-                       catch\r
-                       {\r
-                       }\r
-\r
-                       for( int i = 0; i < this.bKeyState.Length; i++ )\r
-                               this.bKeyState[ i ] = false;\r
-\r
-                       //this.timer = new CTimer( CTimer.E種別.MultiMedia );\r
-                       this.list入力イベント = new List<STInputEvent>( 32 );\r
-                       // this.ct = new CTimer( CTimer.E種別.PerformanceCounter );\r
-               }\r
-\r
-\r
-               // メソッド\r
-\r
-               #region [ IInputDevice 実装 ]\r
-               //-----------------\r
-               public E入力デバイス種別 e入力デバイス種別 { get; private set; }\r
-               public string GUID { get; private set; }\r
-               public int ID { get; private set; }\r
-               public List<STInputEvent> list入力イベント { get; private set; }\r
-\r
-               public void tポーリング( bool bWindowがアクティブ中, bool bバッファ入力を使用する )\r
-               {\r
-                       for ( int i = 0; i < 256; i++ )\r
-                       {\r
-                               this.bKeyPushDown[ i ] = false;\r
-                               this.bKeyPullUp[ i ] = false;\r
-                       }\r
-\r
-                       if ( bWindowがアクティブ中 && ( this.devKeyboard != null ) )\r
-                       {\r
-                               this.devKeyboard.Acquire();\r
-                               this.devKeyboard.Poll();\r
-\r
-                               //this.list入力イベント = new List<STInputEvent>( 32 );\r
-                               this.list入力イベント.Clear();                    // #xxxxx 2012.6.11 yyagi; To optimize, I removed new();\r
-                               int posEnter = -1;\r
-                               //string d = DateTime.Now.ToString( "yyyy/MM/dd HH:mm:ss.ffff" );\r
-\r
-                               if ( bバッファ入力を使用する )\r
-                               {\r
-                                       #region [ a.バッファ入力 ]\r
-                                       //-----------------------------\r
-                                       var bufferedData = this.devKeyboard.GetBufferedData();\r
-                                       //if ( Result.Last.IsSuccess && bufferedData != null )\r
-                                       {\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
-                                                               // #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 != SlimDXKey.Return || ( bKeyState[ (int) SlimDXKey.LeftAlt ] == false && bKeyState[ (int) SlimDXKey.RightAlt ] == false ) )\r
-                                                               {\r
-                                                                       STInputEvent item = new STInputEvent() {\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) SlimDXKey.Space )\r
-                                                               //{\r
-                                                               //    Trace.TraceInformation( "FDK(buffered): SPACE key registered. " + ct.nシステム時刻 );\r
-                                                               //}\r
-                                                       }\r
-                                                       //foreach ( Key key in data.ReleasedKeys )\r
-                                                       if( data.IsReleased )\r
-                                                       {\r
-                                                               STInputEvent item = new STInputEvent() {\r
-                                                                       nKey = (int) key,\r
-                                                                       b押された = false,\r
-                                                                       b離された = true,\r
-                                                                       nTimeStamp = CSound管理.rc演奏用タイマ.nサウンドタイマーのシステム時刻msへの変換( data.Timestamp ),\r
-                                                                       nVelocity = CInput管理.n通常音量\r
-                                                               };\r
-                                                               this.list入力イベント.Add( item );\r
-\r
-                                                               this.bKeyState[ (int) key ] = false;\r
-                                                               this.bKeyPullUp[ (int) key ] = true;\r
-                                                       }\r
-                                               }\r
-                                       }\r
-                                       //-----------------------------\r
-                                       #endregion\r
-                               }\r
-                               else\r
-                               {\r
-                                       #region [ b.状態入力 ]\r
-                                       //-----------------------------\r
-                                       KeyboardState currentState = this.devKeyboard.GetCurrentState();\r
-                                       //if ( Result.Last.IsSuccess && currentState != null )\r
-                                       {\r
-                                               foreach( SharpDXKey dik in currentState.PressedKeys )\r
-                                               {\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 != SlimDXKey.Return || ( bKeyState[ (int) SlimDXKey.LeftAlt ] == false && bKeyState[ (int) SlimDXKey.RightAlt ] == false ) )    // #23708 2016.3.19 yyagi\r
-                                                               {\r
-                                                                       var ev = new STInputEvent() {\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
-                                                               }\r
-\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( SharpDXKey dik in currentState.AllKeys )\r
-                                               {\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 ] == true && !currentState.IsPressed( dik ) ) // 前回は押されているのに今回は押されていない → 離された\r
-                                                       {\r
-                                                               var ev = new STInputEvent() {\r
-                                                                       nKey = (int) key,\r
-                                                                       b押された = false,\r
-                                                                       b離された = true,\r
-                                                                       nTimeStamp = CSound管理.rc演奏用タイマ.nシステム時刻, // 演奏用タイマと同じタイマを使うことで、BGMと譜面、入力ずれを防ぐ。\r
-                                                                       nVelocity = CInput管理.n通常音量,\r
-                                                               };\r
-                                                               this.list入力イベント.Add( ev );\r
-\r
-                                                               this.bKeyState[ (int) key ] = false;\r
-                                                               this.bKeyPullUp[ (int) key ] = true;\r
-                                                       }\r
-                                               }\r
-                                       }\r
-                                       //-----------------------------\r
-                                       #endregion\r
-                               }\r
-                               #region [#23708 2011.4.8 yyagi Altが押されているときは、Enter押下情報を削除する -> 副作用が見つかり削除]\r
-                               //if ( this.bKeyState[ (int) SlimDXKey.RightAlt ] ||\r
-                               //     this.bKeyState[ (int) SlimDXKey.LeftAlt ] )\r
-                               //{\r
-                               //    int cr = (int) SlimDXKey.Return;\r
-                               //    this.bKeyPushDown[ cr ] = false;\r
-                               //    this.bKeyPullUp[ cr ] = false;\r
-                               //    this.bKeyState[ cr ] = false;\r
-                               //}\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
-               }\r
-               //-----------------\r
-               #endregion\r
-\r
-               #region [ IDisposable 実装 ]\r
-               //-----------------\r
-               public void Dispose()\r
-               {\r
-                       if( !this.bDispose完了済み )\r
-                       {\r
-                               if( this.devKeyboard != null )\r
-                               {\r
-                                       this.devKeyboard.Dispose();\r
-                                       this.devKeyboard = null;\r
-                               }\r
-                               //if( this.timer != null )\r
-                               //{\r
-                               //    this.timer.Dispose();\r
-                               //    this.timer = null;\r
-                               //}\r
-                               if ( this.list入力イベント != null )\r
-                               {\r
-                                       this.list入力イベント = null;\r
-                               }\r
-                               this.bDispose完了済み = true;\r
-                       }\r
-               }\r
-               //-----------------\r
-               #endregion\r
-\r
-\r
-               // その他\r
-\r
-               #region [ private ]\r
-               //-----------------\r
-               private bool bDispose完了済み;\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
-               //-----------------\r
-               #endregion\r
-       }\r
-}\r