diff --git a/src/main/cpp/JXInputManager.cpp b/src/main/cpp/JXInputManager.cpp index f21cb22..a4985b4 100644 --- a/src/main/cpp/JXInputManager.cpp +++ b/src/main/cpp/JXInputManager.cpp @@ -13,55 +13,55 @@ mhWnd( hWnd ), mDeviceCounter( 0 ) { - for ( int i = 0; i < MAX_JXINPUTS; ++i ) - { - mDevices[ i ] = NULL; - } + for ( int i = 0; i < MAX_JXINPUTS; ++i ) + { + mDevices[ i ] = NULL; + } - if ( FAILED( InitDirectInput( hWnd ) ) ) - { - FreeDirectInput(); - } + if ( FAILED( InitDirectInput( hWnd ) ) ) + { + FreeDirectInput(); + } } JXInputManager::~JXInputManager() { - for ( int i = 0; i < getNumberOfJXInputs(); ++i ) - { - delete mDevices[ i ]; - mDevices[ i ] = NULL; - } + for ( int i = 0; i < getNumberOfJXInputs(); ++i ) + { + delete mDevices[ i ]; + mDevices[ i ] = NULL; + } - FreeDirectInput(); + FreeDirectInput(); } int JXInputManager::getNumberOfJXInputs() const { - return mDeviceCounter; + return mDeviceCounter; } JXInput& JXInputManager::getJXInput( int idx ) const { - assert( idx < mDeviceCounter ); - return * mDevices[ idx ]; + assert( idx < mDeviceCounter ); + return * mDevices[ idx ]; } int JXInputManager::getMaxNumberOfAxes() const { - return JXINPUT_MAX_AXES; + return JXINPUT_MAX_AXES; } int JXInputManager::getMaxNumberOfButtons() const { - return JXINPUT_MAX_BUTTONS; + return JXINPUT_MAX_BUTTONS; } int JXInputManager::getMaxNumberOfDirectionals() const { - return JXINPUT_MAX_DIRECTIONALS; + return JXINPUT_MAX_DIRECTIONALS; } @@ -87,7 +87,7 @@ HRESULT JXInputManager::InitDirectInput( HWND hWnd ) (VOID*)this, DIEDFL_ALLDEVICES /*| DIEDFL_INCLUDEPHANTOMS*/ ) ) ) return hr; - // Look for a other devices + // Look for a other devices if( FAILED( hr = mpDI->EnumDevices( DI8DEVCLASS_DEVICE, EnumJoysticksCallback, (VOID*)this, DIEDFL_ALLDEVICES /*| DIEDFL_INCLUDEPHANTOMS*/ ) ) ) @@ -104,9 +104,9 @@ HRESULT JXInputManager::InitDirectInput( HWND hWnd ) HRESULT JXInputManager::FreeDirectInput() { - if ( NULL != mpDI ) - mpDI->Release(); - mpDI = NULL; + if ( NULL != mpDI ) + mpDI->Release(); + mpDI = NULL; return S_OK; } @@ -120,43 +120,43 @@ BOOL CALLBACK JXInputManager::EnumJoysticksCallback( const DIDEVICEINSTANCE* pdi VOID* pContext ) { HRESULT hr; - LPDIRECTINPUTDEVICE8 pJoystick; + LPDIRECTINPUTDEVICE8 pJoystick; - JXInputManager* pThis = (JXInputManager*)pContext; + JXInputManager* pThis = (JXInputManager*)pContext; - // - // if the maximum number of devices is already registered, - // issue a warning and stop enumeration. - // - if( MAX_JXINPUTS == pThis->mDeviceCounter ) - { - OutputDebugString( "Max. number of devices exceeded!" ); - return DIENUM_STOP; - } + // + // if the maximum number of devices is already registered, + // issue a warning and stop enumeration. + // + if( MAX_JXINPUTS == pThis->mDeviceCounter ) + { + OutputDebugString( "Max. number of devices exceeded!" ); + return DIENUM_STOP; + } // Obtain an interface to the enumerated joystick. - hr = pThis->mpDI->CreateDevice( pdidInstance->guidInstance, &pJoystick, NULL ); + hr = pThis->mpDI->CreateDevice( pdidInstance->guidInstance, &pJoystick, NULL ); // If it failed, then we can't use this joystick. (Maybe the user unplugged // it while we were in the middle of enumerating it.) if( FAILED(hr) ) return DIENUM_CONTINUE; - JXInput* pJ = new JXInput( pJoystick, pThis->mhWnd ); + JXInput* pJ = new JXInput( pJoystick, pThis->mhWnd ); - // - // only register useful devices - // - if( pJ->getNumberOfAxes() + pJ->getNumberOfButtons() + pJ->getNumberOfDirectionals() > 0 ) - { - pThis->addJXInput( pJ ); - } - else - { - delete pJ; - } + // + // only register useful devices + // + if( pJ->getNumberOfAxes() + pJ->getNumberOfButtons() + pJ->getNumberOfDirectionals() > 0 ) + { + pThis->addJXInput( pJ ); + } + else + { + delete pJ; + } return DIENUM_CONTINUE; } @@ -167,8 +167,8 @@ BOOL CALLBACK JXInputManager::EnumJoysticksCallback( const DIDEVICEINSTANCE* pdi */ void JXInputManager::addJXInput( JXInput* pJ ) { - assert( mDeviceCounter < MAX_JXINPUTS ); + assert( mDeviceCounter < MAX_JXINPUTS ); - if( mDeviceCounter < MAX_JXINPUTS ) - mDevices[ mDeviceCounter++ ] = pJ; + if( mDeviceCounter < MAX_JXINPUTS ) + mDevices[ mDeviceCounter++ ] = pJ; } diff --git a/src/main/cpp/de_hardcode_jxinput_directinput_DirectInputDriver.cpp b/src/main/cpp/de_hardcode_jxinput_directinput_DirectInputDriver.cpp index 94398f2..1ddd510 100644 --- a/src/main/cpp/de_hardcode_jxinput_directinput_DirectInputDriver.cpp +++ b/src/main/cpp/de_hardcode_jxinput_directinput_DirectInputDriver.cpp @@ -8,47 +8,47 @@ // extern HINSTANCE g_hInst; -static JXInputManager* pJXInputManager = NULL; -static JXInput* apJXInput[ MAX_JXINPUTS ]; -static HWND hWndJava; +static JXInputManager* pJXInputManager = NULL; +static JXInput* apJXInput[ MAX_JXINPUTS ]; +static HWND hWndJava; // // IDs of the static Java arrays. // -static jfieldID sAxesFieldID; -static jfieldID sButtonsFieldID; -static jfieldID sDirectionsFieldID; +static jfieldID sAxesFieldID; +static jfieldID sButtonsFieldID; +static jfieldID sDirectionsFieldID; /** * Remove all resources allocated by the Java binding. */ void shutdownJavaResources() { - if ( NULL != pJXInputManager ) - delete pJXInputManager; + if ( NULL != pJXInputManager ) + delete pJXInputManager; - if ( NULL != hWndJava ) - DestroyWindow( hWndJava ); + if ( NULL != hWndJava ) + DestroyWindow( hWndJava ); - pJXInputManager = NULL; + pJXInputManager = NULL; - for( int i = 0; i < MAX_JXINPUTS; ++i ) - apJXInput[ i ] = NULL; + for( int i = 0; i < MAX_JXINPUTS; ++i ) + apJXInput[ i ] = NULL; - hWndJava = NULL; + hWndJava = NULL; } JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) { - return JNI_VERSION_1_2; + return JNI_VERSION_1_2; } JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *vm, void *reserved) { - shutdownJavaResources(); + shutdownJavaResources(); } @@ -56,39 +56,39 @@ JNIEXPORT jboolean JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDrive (JNIEnv * penv, jclass pClazz ) { - // - // Create a non-visible window as 'owner' of the DI device. - // - hWndJava = CreateWindowEx( - 0/*WS_EX_APPWINDOW*/, // DWORD dwExStyle, // extended window style - "STATIC", // LPCTSTR lpClassName, // pointer to registered class name - NULL, // LPCTSTR lpWindowName, // pointer to window name - 0/*WS_CAPTION*/, // DWORD dwStyle, // window style - 0, // int x, // horizontal position of window - 0, // int y, // vertical position of window - 0, // int nWidth, // window width - 0, // int nHeight, // window height - NULL, // HWND hWndParent, // handle to parent or owner window - NULL, // HMENU hMenu, // handle to menu, or child-window identifier - g_hInst, // HINSTANCE hInstance, // handle to application instance - NULL // LPVOID lpParam // pointer to window-creation data - ); - - - if ( NULL == pJXInputManager ) - { - pJXInputManager = new JXInputManager( hWndJava ); + // + // Create a non-visible window as 'owner' of the DI device. + // + hWndJava = CreateWindowEx( + 0/*WS_EX_APPWINDOW*/, // DWORD dwExStyle, // extended window style + "STATIC", // LPCTSTR lpClassName, // pointer to registered class name + NULL, // LPCTSTR lpWindowName, // pointer to window name + 0/*WS_CAPTION*/, // DWORD dwStyle, // window style + 0, // int x, // horizontal position of window + 0, // int y, // vertical position of window + 0, // int nWidth, // window width + 0, // int nHeight, // window height + NULL, // HWND hWndParent, // handle to parent or owner window + NULL, // HMENU hMenu, // handle to menu, or child-window identifier + g_hInst, // HINSTANCE hInstance, // handle to application instance + NULL // LPVOID lpParam // pointer to window-creation data + ); + + + if ( NULL == pJXInputManager ) + { + pJXInputManager = new JXInputManager( hWndJava ); - for( int i = 0; i < MAX_JXINPUTS; ++i ) - apJXInput[ i ] = NULL; + for( int i = 0; i < MAX_JXINPUTS; ++i ) + apJXInput[ i ] = NULL; - for ( int i = 0; i < pJXInputManager->getNumberOfJXInputs(); ++i ) - { - apJXInput[ i ] = & pJXInputManager->getJXInput( i ); - } - } + for ( int i = 0; i < pJXInputManager->getNumberOfJXInputs(); ++i ) + { + apJXInput[ i ] = & pJXInputManager->getJXInput( i ); + } + } - return true; + return true; } @@ -96,7 +96,7 @@ JNIEXPORT jboolean JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDrive JNIEXPORT void JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_nativeexit (JNIEnv *, jclass ) { - shutdownJavaResources(); + shutdownJavaResources(); } @@ -106,111 +106,111 @@ JNIEXPORT void JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_na JNIEXPORT void JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_bind (JNIEnv * penv, jclass pClazz) { - // - // All fields are static. - // - sAxesFieldID = penv->GetStaticFieldID( pClazz, "sAxisValues", "[[D" ); - sButtonsFieldID = penv->GetStaticFieldID( pClazz, "sButtonStates", "[[Z" ); - sDirectionsFieldID = penv->GetStaticFieldID( pClazz, "sDirectionalValues", "[[I" ); + // + // All fields are static. + // + sAxesFieldID = penv->GetStaticFieldID( pClazz, "sAxisValues", "[[D" ); + sButtonsFieldID = penv->GetStaticFieldID( pClazz, "sButtonStates", "[[Z" ); + sDirectionsFieldID = penv->GetStaticFieldID( pClazz, "sDirectionalValues", "[[I" ); } JNIEXPORT jint JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_getNumberOfDevices (JNIEnv *penv, jclass) { - return pJXInputManager->getNumberOfJXInputs(); + return pJXInputManager->getNumberOfJXInputs(); } JNIEXPORT jstring JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_getName (JNIEnv *penv, jclass, jint dev) { - return penv->NewStringUTF( apJXInput[ dev ]->getName() ); + return penv->NewStringUTF( apJXInput[ dev ]->getName() ); } JNIEXPORT jint JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_getNumberOfAxes (JNIEnv *, jclass, jint dev) { - return apJXInput[ dev ]->getNumberOfAxes(); + return apJXInput[ dev ]->getNumberOfAxes(); } JNIEXPORT jint JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_getNumberOfButtons (JNIEnv *, jclass, jint dev) { - return apJXInput[ dev ]->getNumberOfButtons(); + return apJXInput[ dev ]->getNumberOfButtons(); } JNIEXPORT jint JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_getNumberOfDirectionals (JNIEnv *, jclass, jint dev) { - return apJXInput[ dev ]->getNumberOfDirectionals(); + return apJXInput[ dev ]->getNumberOfDirectionals(); } JNIEXPORT jint JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_getMaxNumberOfAxes (JNIEnv *, jclass) { - return pJXInputManager->getMaxNumberOfAxes(); + return pJXInputManager->getMaxNumberOfAxes(); } JNIEXPORT jint JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_getMaxNumberOfButtons (JNIEnv *, jclass) { - return pJXInputManager->getMaxNumberOfButtons(); + return pJXInputManager->getMaxNumberOfButtons(); } JNIEXPORT jint JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_getMaxNumberOfDirectionals (JNIEnv *, jclass) { - return pJXInputManager->getMaxNumberOfDirectionals(); + return pJXInputManager->getMaxNumberOfDirectionals(); } JNIEXPORT jboolean JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_isAxisAvailable (JNIEnv *, jclass, jint dev, jint idx ) { - return apJXInput[ dev ]->isAxisAvailable( idx ); + return apJXInput[ dev ]->isAxisAvailable( idx ); } JNIEXPORT jstring JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_getAxisName (JNIEnv *penv, jclass, jint dev, jint idx ) { - return penv->NewStringUTF( apJXInput[ dev ]->getAxisName( idx ) ); + return penv->NewStringUTF( apJXInput[ dev ]->getAxisName( idx ) ); } JNIEXPORT jint JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_getAxisType (JNIEnv *, jclass, jint dev, jint idx ) { - return apJXInput[ dev ]->getAxisType( idx ); + return apJXInput[ dev ]->getAxisType( idx ); } JNIEXPORT jboolean JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_isButtonAvailable (JNIEnv *, jclass, jint dev, jint idx ) { - return apJXInput[ dev ]->isButtonAvailable( idx ); + return apJXInput[ dev ]->isButtonAvailable( idx ); } JNIEXPORT jstring JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_getButtonName (JNIEnv *penv, jclass, jint dev, jint idx ) { - return penv->NewStringUTF( apJXInput[ dev ]->getButtonName( idx ) ); + return penv->NewStringUTF( apJXInput[ dev ]->getButtonName( idx ) ); } JNIEXPORT jint JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_getButtonType (JNIEnv *, jclass, jint dev, jint idx ) { - return apJXInput[ dev ]->getButtonType( idx ); + return apJXInput[ dev ]->getButtonType( idx ); } JNIEXPORT jboolean JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_isDirectionalAvailable (JNIEnv *, jclass, jint dev, jint idx ) { - return apJXInput[ dev ]->isDirectionalAvailable( idx ); + return apJXInput[ dev ]->isDirectionalAvailable( idx ); } JNIEXPORT jstring JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_getDirectionalName (JNIEnv *penv, jclass, jint dev, jint idx ) { - return penv->NewStringUTF( apJXInput[ dev ]->getDirectionalName( idx ) ); + return penv->NewStringUTF( apJXInput[ dev ]->getDirectionalName( idx ) ); } @@ -223,53 +223,53 @@ JNIEXPORT void JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_na (JNIEnv * penv, jclass pClazz ) { - static jdouble axes [ MAX_JXINPUTS ][ JXINPUT_MAX_AXES ]; - static jboolean buttons [ MAX_JXINPUTS ][ JXINPUT_MAX_BUTTONS ]; - static jint directions [ MAX_JXINPUTS ][ JXINPUT_MAX_DIRECTIONALS ]; + static jdouble axes [ MAX_JXINPUTS ][ JXINPUT_MAX_AXES ]; + static jboolean buttons [ MAX_JXINPUTS ][ JXINPUT_MAX_BUTTONS ]; + static jint directions [ MAX_JXINPUTS ][ JXINPUT_MAX_DIRECTIONALS ]; - static jobjectArray axisarrayarray; - static jobjectArray buttonarrayarray; - static jobjectArray directionarrayarray; + static jobjectArray axisarrayarray; + static jobjectArray buttonarrayarray; + static jobjectArray directionarrayarray; - static jdoubleArray axisarray; - static jbooleanArray buttonarray; - static jintArray directionarray; + static jdoubleArray axisarray; + static jbooleanArray buttonarray; + static jintArray directionarray; - axisarrayarray = (jobjectArray)penv->GetStaticObjectField( pClazz, sAxesFieldID ); - buttonarrayarray = (jobjectArray)penv->GetStaticObjectField( pClazz, sButtonsFieldID ); - directionarrayarray = (jobjectArray)penv->GetStaticObjectField( pClazz, sDirectionsFieldID ); + axisarrayarray = (jobjectArray)penv->GetStaticObjectField( pClazz, sAxesFieldID ); + buttonarrayarray = (jobjectArray)penv->GetStaticObjectField( pClazz, sButtonsFieldID ); + directionarrayarray = (jobjectArray)penv->GetStaticObjectField( pClazz, sDirectionsFieldID ); - // - // For each device.... - // - for ( int dev = 0; dev < pJXInputManager->getNumberOfJXInputs(); ++dev ) - { - // Do the update of the device. - apJXInput[ dev ]->update(); + // + // For each device.... + // + for ( int dev = 0; dev < pJXInputManager->getNumberOfJXInputs(); ++dev ) + { + // Do the update of the device. + apJXInput[ dev ]->update(); - // - // Copy all values into my arrays. - // - for ( int i = 0; i < JXINPUT_MAX_AXES; ++i ) - axes[ dev ][ i ] = apJXInput[ dev ]->getAxisValue( i ); - for ( int i = 0; i < JXINPUT_MAX_BUTTONS; ++i ) - buttons[ dev ][ i ] = apJXInput[ dev ]->isButtonDown( i ); - for ( int i = 0; i < JXINPUT_MAX_DIRECTIONALS; ++i ) - directions[ dev ][ i ] = apJXInput[ dev ]->getDirection( i ); + // + // Copy all values into my arrays. + // + for ( int i = 0; i < JXINPUT_MAX_AXES; ++i ) + axes[ dev ][ i ] = apJXInput[ dev ]->getAxisValue( i ); + for ( int i = 0; i < JXINPUT_MAX_BUTTONS; ++i ) + buttons[ dev ][ i ] = apJXInput[ dev ]->isButtonDown( i ); + for ( int i = 0; i < JXINPUT_MAX_DIRECTIONALS; ++i ) + directions[ dev ][ i ] = apJXInput[ dev ]->getDirection( i ); - // - // Move my arrays to the Java arrays. - // - axisarray = (jdoubleArray)penv->GetObjectArrayElement( axisarrayarray, dev ); - penv->SetDoubleArrayRegion( axisarray, 0, JXINPUT_MAX_AXES, axes[ dev ] ); + // + // Move my arrays to the Java arrays. + // + axisarray = (jdoubleArray)penv->GetObjectArrayElement( axisarrayarray, dev ); + penv->SetDoubleArrayRegion( axisarray, 0, JXINPUT_MAX_AXES, axes[ dev ] ); - buttonarray = (jbooleanArray)penv->GetObjectArrayElement( buttonarrayarray, dev ); - penv->SetBooleanArrayRegion( buttonarray, 0, JXINPUT_MAX_BUTTONS, buttons[ dev ] ); + buttonarray = (jbooleanArray)penv->GetObjectArrayElement( buttonarrayarray, dev ); + penv->SetBooleanArrayRegion( buttonarray, 0, JXINPUT_MAX_BUTTONS, buttons[ dev ] ); - directionarray = (jintArray)penv->GetObjectArrayElement( directionarrayarray, dev ); - penv->SetIntArrayRegion( directionarray, 0, JXINPUT_MAX_DIRECTIONALS, directions[ dev ] ); - } + directionarray = (jintArray)penv->GetObjectArrayElement( directionarrayarray, dev ); + penv->SetIntArrayRegion( directionarray, 0, JXINPUT_MAX_DIRECTIONALS, directions[ dev ] ); + } } diff --git a/src/main/cpp/jxinput.cpp b/src/main/cpp/jxinput.cpp index f264e0b..d4b2858 100644 --- a/src/main/cpp/jxinput.cpp +++ b/src/main/cpp/jxinput.cpp @@ -11,19 +11,19 @@ extern HINSTANCE g_hInst; * Ctor: Connect with DI */ JXInput::JXInput( LPDIRECTINPUTDEVICE8 pJoystick, HWND hWnd ) : - mpJoystick( pJoystick ), - mSliderCount( 0 ), - mPOVCount( 0 ), - mButtonCount( 0 ) + mpJoystick( pJoystick ), + mSliderCount( 0 ), + mPOVCount( 0 ), + mButtonCount( 0 ) { - initAxisConfig(); - initButtonsConfig(); - initDirectionalsConfig(); + initAxisConfig(); + initButtonsConfig(); + initDirectionalsConfig(); - if ( FAILED( InitDirectInput( hWnd ) ) ) - { - FreeDirectInput(); - } + if ( FAILED( InitDirectInput( hWnd ) ) ) + { + FreeDirectInput(); + } } @@ -34,113 +34,113 @@ JXInput::JXInput( LPDIRECTINPUTDEVICE8 pJoystick, HWND hWnd ) : */ JXInput::~JXInput() { - FreeDirectInput(); + FreeDirectInput(); } void JXInput::update() { - UpdateInputState(); + UpdateInputState(); } TCHAR * const JXInput::getName() const { - return (TCHAR*)mdiDevInfo.tszInstanceName; + return (TCHAR*)mdiDevInfo.tszInstanceName; } int JXInput::getNumberOfAxes() const { - return mdiDevCaps.dwAxes; + return mdiDevCaps.dwAxes; } int JXInput::getNumberOfButtons() const { - return mButtonCount; + return mButtonCount; } int JXInput::getNumberOfDirectionals() const { - return mPOVCount; + return mPOVCount; } double JXInput::getAxisValueHelper( LONG val, int idx ) const { - const AxisConfig& cfg = mAxisConfig[ idx ]; + const AxisConfig& cfg = mAxisConfig[ idx ]; - double span = (double)( cfg.mMaxValue - cfg.mMinValue ); - double ret = (double)(val - cfg.mMinValue) / span; - - if ( TYPE_SLIDER != cfg.mType ) - return ret*2.0 - 1.0; - return ret; + double span = (double)( cfg.mMaxValue - cfg.mMinValue ); + double ret = (double)(val - cfg.mMinValue) / span; + + if ( TYPE_SLIDER != cfg.mType ) + return ret*2.0 - 1.0; + return ret; } double JXInput::getX() const { - return getAxisValueHelper( mJS.lX, ID_X ); + return getAxisValueHelper( mJS.lX, ID_X ); } double JXInput::getY() const { - return getAxisValueHelper( mJS.lY, ID_Y ); + return getAxisValueHelper( mJS.lY, ID_Y ); } double JXInput::getZ() const { - return getAxisValueHelper( mJS.lZ, ID_Z ); + return getAxisValueHelper( mJS.lZ, ID_Z ); } double JXInput::getRotX() const { - return getAxisValueHelper( mJS.lRx, ID_ROTX ); + return getAxisValueHelper( mJS.lRx, ID_ROTX ); } double JXInput::getRotY() const { - return getAxisValueHelper( mJS.lRy, ID_ROTY ); + return getAxisValueHelper( mJS.lRy, ID_ROTY ); } double JXInput::getRotZ() const { - return getAxisValueHelper( mJS.lRz, ID_ROTZ ); + return getAxisValueHelper( mJS.lRz, ID_ROTZ ); } double JXInput::getSlider0() const { - return getAxisValueHelper( mJS.rglSlider[ 0 ], ID_SLIDER0 ); + return getAxisValueHelper( mJS.rglSlider[ 0 ], ID_SLIDER0 ); } double JXInput::getSlider1() const { - return getAxisValueHelper( mJS.rglSlider[ 1 ], ID_SLIDER1 ); + return getAxisValueHelper( mJS.rglSlider[ 1 ], ID_SLIDER1 ); } bool JXInput::isAxisAvailable( int idx ) const { - assert( idx < JXINPUT_MAX_AXES ); - return mAxisConfig[ idx ].mIsAvailable; + assert( idx < JXINPUT_MAX_AXES ); + return mAxisConfig[ idx ].mIsAvailable; } TCHAR * const JXInput::getAxisName( int idx ) const { - assert( idx < JXINPUT_MAX_AXES ); - return (char*const)mAxisConfig[ idx ].mName; + assert( idx < JXINPUT_MAX_AXES ); + return (char*const)mAxisConfig[ idx ].mName; } int JXInput::getAxisType( int idx ) const { - assert( idx < JXINPUT_MAX_AXES ); - return mAxisConfig[ idx ].mType; + assert( idx < JXINPUT_MAX_AXES ); + return mAxisConfig[ idx ].mType; } double JXInput::getAxisValue( int idx ) const { - assert( idx < JXINPUT_MAX_AXES ); + assert( idx < JXINPUT_MAX_AXES ); - // Failsafe if called accidentally - if ( ! mAxisConfig[ idx ].mIsAvailable ) - return 0.0; + // Failsafe if called accidentally + if ( ! mAxisConfig[ idx ].mIsAvailable ) + return 0.0; - return (this->*mAxisConfig[ idx ].mGetValueMethod)(); + return (this->*mAxisConfig[ idx ].mGetValueMethod)(); } @@ -149,45 +149,45 @@ double JXInput::getAxisValue( int idx ) const bool JXInput::isButtonAvailable( int idx ) const { - assert( idx < JXINPUT_MAX_BUTTONS ); - return mButtonConfig[ idx ].mIsAvailable; + assert( idx < JXINPUT_MAX_BUTTONS ); + return mButtonConfig[ idx ].mIsAvailable; } TCHAR * const JXInput::getButtonName( int idx ) const { - assert( idx < JXINPUT_MAX_BUTTONS ); - return (char*const)mButtonConfig[ idx ].mName; + assert( idx < JXINPUT_MAX_BUTTONS ); + return (char*const)mButtonConfig[ idx ].mName; } int JXInput::getButtonType( int idx ) const { - assert( idx < JXINPUT_MAX_BUTTONS ); - return mButtonConfig[ idx ].mType; + assert( idx < JXINPUT_MAX_BUTTONS ); + return mButtonConfig[ idx ].mType; } bool JXInput::isButtonDown( int idx ) const { - assert( idx < JXINPUT_MAX_BUTTONS ); - return 0 != mJS.rgbButtons[ idx ] ; + assert( idx < JXINPUT_MAX_BUTTONS ); + return 0 != mJS.rgbButtons[ idx ] ; } bool JXInput::isDirectionalAvailable( int idx ) const { - assert( idx < JXINPUT_MAX_DIRECTIONALS ); - return mDirectionalConfig[ idx ].mIsAvailable; + assert( idx < JXINPUT_MAX_DIRECTIONALS ); + return mDirectionalConfig[ idx ].mIsAvailable; } TCHAR * const JXInput::getDirectionalName( int idx ) const { - assert( idx < JXINPUT_MAX_DIRECTIONALS ); - return (char*const)mDirectionalConfig[ idx ].mName; + assert( idx < JXINPUT_MAX_DIRECTIONALS ); + return (char*const)mDirectionalConfig[ idx ].mName; } int JXInput::getDirection( int idx ) const { - assert( idx < JXINPUT_MAX_DIRECTIONALS ); - return mJS.rgdwPOV[ idx ] ; + assert( idx < JXINPUT_MAX_DIRECTIONALS ); + return mJS.rgdwPOV[ idx ] ; } @@ -196,37 +196,37 @@ int JXInput::getDirection( int idx ) const */ void JXInput::initAxisConfig() { - mAxisConfig[ ID_X ].mIsAvailable = false; - mAxisConfig[ ID_X ].mType = TYPE_TRANSLATION; - mAxisConfig[ ID_X ].mGetValueMethod = &JXInput::getX; + mAxisConfig[ ID_X ].mIsAvailable = false; + mAxisConfig[ ID_X ].mType = TYPE_TRANSLATION; + mAxisConfig[ ID_X ].mGetValueMethod = &JXInput::getX; - mAxisConfig[ ID_Y ].mIsAvailable = false; - mAxisConfig[ ID_Y ].mType = TYPE_TRANSLATION; - mAxisConfig[ ID_Y ].mGetValueMethod = &JXInput::getY; + mAxisConfig[ ID_Y ].mIsAvailable = false; + mAxisConfig[ ID_Y ].mType = TYPE_TRANSLATION; + mAxisConfig[ ID_Y ].mGetValueMethod = &JXInput::getY; - mAxisConfig[ ID_Z ].mIsAvailable = false; - mAxisConfig[ ID_Z ].mType = TYPE_TRANSLATION; - mAxisConfig[ ID_Z ].mGetValueMethod = &JXInput::getZ; + mAxisConfig[ ID_Z ].mIsAvailable = false; + mAxisConfig[ ID_Z ].mType = TYPE_TRANSLATION; + mAxisConfig[ ID_Z ].mGetValueMethod = &JXInput::getZ; - mAxisConfig[ ID_ROTX ].mIsAvailable = false; - mAxisConfig[ ID_ROTX ].mType = TYPE_ROTATION; - mAxisConfig[ ID_ROTX ].mGetValueMethod = &JXInput::getRotX; + mAxisConfig[ ID_ROTX ].mIsAvailable = false; + mAxisConfig[ ID_ROTX ].mType = TYPE_ROTATION; + mAxisConfig[ ID_ROTX ].mGetValueMethod = &JXInput::getRotX; - mAxisConfig[ ID_ROTY ].mIsAvailable = false; - mAxisConfig[ ID_ROTY ].mType = TYPE_ROTATION; - mAxisConfig[ ID_ROTY ].mGetValueMethod = &JXInput::getRotY; + mAxisConfig[ ID_ROTY ].mIsAvailable = false; + mAxisConfig[ ID_ROTY ].mType = TYPE_ROTATION; + mAxisConfig[ ID_ROTY ].mGetValueMethod = &JXInput::getRotY; - mAxisConfig[ ID_ROTZ ].mIsAvailable = false; - mAxisConfig[ ID_ROTZ ].mType = TYPE_ROTATION; - mAxisConfig[ ID_ROTZ ].mGetValueMethod = &JXInput::getRotZ; - - mAxisConfig[ ID_SLIDER0 ].mIsAvailable = false; - mAxisConfig[ ID_SLIDER0 ].mType = TYPE_SLIDER; - mAxisConfig[ ID_SLIDER0 ].mGetValueMethod = &JXInput::getSlider0; + mAxisConfig[ ID_ROTZ ].mIsAvailable = false; + mAxisConfig[ ID_ROTZ ].mType = TYPE_ROTATION; + mAxisConfig[ ID_ROTZ ].mGetValueMethod = &JXInput::getRotZ; + + mAxisConfig[ ID_SLIDER0 ].mIsAvailable = false; + mAxisConfig[ ID_SLIDER0 ].mType = TYPE_SLIDER; + mAxisConfig[ ID_SLIDER0 ].mGetValueMethod = &JXInput::getSlider0; - mAxisConfig[ ID_SLIDER1 ].mIsAvailable = false; - mAxisConfig[ ID_SLIDER1 ].mType = TYPE_SLIDER; - mAxisConfig[ ID_SLIDER1 ].mGetValueMethod = &JXInput::getSlider1; + mAxisConfig[ ID_SLIDER1 ].mIsAvailable = false; + mAxisConfig[ ID_SLIDER1 ].mType = TYPE_SLIDER; + mAxisConfig[ ID_SLIDER1 ].mGetValueMethod = &JXInput::getSlider1; } @@ -235,12 +235,12 @@ void JXInput::initAxisConfig() */ void JXInput::initButtonsConfig() { - for ( int i = 0; i < JXINPUT_MAX_BUTTONS; ++i ) - { - mButtonConfig[ i ].mIsAvailable = false; - mButtonConfig[ i ].mName[ 0 ] = '\0'; - mButtonConfig[ i ].mType = TYPE_PUSHBUTTON; - } + for ( int i = 0; i < JXINPUT_MAX_BUTTONS; ++i ) + { + mButtonConfig[ i ].mIsAvailable = false; + mButtonConfig[ i ].mName[ 0 ] = '\0'; + mButtonConfig[ i ].mType = TYPE_PUSHBUTTON; + } } @@ -250,11 +250,11 @@ void JXInput::initButtonsConfig() */ void JXInput::initDirectionalsConfig() { - for ( int i = 0; i < JXINPUT_MAX_DIRECTIONALS; ++i ) - { - mDirectionalConfig[ i ].mIsAvailable = false; - mDirectionalConfig[ i ].mName[ 0 ] = '\0'; - } + for ( int i = 0; i < JXINPUT_MAX_DIRECTIONALS; ++i ) + { + mDirectionalConfig[ i ].mIsAvailable = false; + mDirectionalConfig[ i ].mName[ 0 ] = '\0'; + } } @@ -267,46 +267,46 @@ void JXInput::initDirectionalsConfig() BOOL CALLBACK JXInput::EnumAxesCallback( const DIDEVICEOBJECTINSTANCE* pdidoi, VOID* pContext ) { - JXInput* pThis = (JXInput*)pContext; + JXInput* pThis = (JXInput*)pContext; - AxisConfig* pAxCfg = NULL; + AxisConfig* pAxCfg = NULL; // Set the UI to reflect what objects the joystick supports - // Code derived from M$ samples, really sucks, eh? + // Code derived from M$ samples, really sucks, eh? if (pdidoi->guidType == GUID_XAxis) { - pAxCfg = & pThis->mAxisConfig[ ID_X ]; + pAxCfg = & pThis->mAxisConfig[ ID_X ]; } if (pdidoi->guidType == GUID_YAxis) { - pAxCfg = & pThis->mAxisConfig[ ID_Y ]; + pAxCfg = & pThis->mAxisConfig[ ID_Y ]; } if (pdidoi->guidType == GUID_ZAxis) { - pAxCfg = & pThis->mAxisConfig[ ID_Z ]; + pAxCfg = & pThis->mAxisConfig[ ID_Z ]; } if (pdidoi->guidType == GUID_RxAxis) { - pAxCfg = & pThis->mAxisConfig[ ID_ROTX ]; + pAxCfg = & pThis->mAxisConfig[ ID_ROTX ]; } if (pdidoi->guidType == GUID_RyAxis) { - pAxCfg = & pThis->mAxisConfig[ ID_ROTY ]; + pAxCfg = & pThis->mAxisConfig[ ID_ROTY ]; } if (pdidoi->guidType == GUID_RzAxis) { - pAxCfg = & pThis->mAxisConfig[ ID_ROTZ ]; - } + pAxCfg = & pThis->mAxisConfig[ ID_ROTZ ]; + } if (pdidoi->guidType == GUID_Slider) { switch( pThis->mSliderCount++ ) { case 0 : - pAxCfg = & pThis->mAxisConfig[ ID_SLIDER0 ]; + pAxCfg = & pThis->mAxisConfig[ ID_SLIDER0 ]; break; case 1 : - pAxCfg = & pThis->mAxisConfig[ ID_SLIDER1 ]; + pAxCfg = & pThis->mAxisConfig[ ID_SLIDER1 ]; break; } } @@ -316,25 +316,25 @@ BOOL CALLBACK JXInput::EnumAxesCallback( const DIDEVICEOBJECTINSTANCE* pdidoi, return DIENUM_CONTINUE; - // - // Perform config. - // + // + // Perform config. + // DIPROPRANGE diprg; diprg.diph.dwSize = sizeof(DIPROPRANGE); diprg.diph.dwHeaderSize = sizeof(DIPROPHEADER); - diprg.diph.dwHow = DIPH_BYID; + diprg.diph.dwHow = DIPH_BYID; diprg.diph.dwObj = pdidoi->dwType; // Specify the enumerated axis // Get the range for the axis if( FAILED( pThis->mpJoystick->GetProperty( DIPROP_RANGE, &diprg.diph ) ) ) return DIENUM_CONTINUE; - pAxCfg->mMinValue = diprg.lMin; - pAxCfg->mMaxValue = diprg.lMax; + pAxCfg->mMinValue = diprg.lMin; + pAxCfg->mMaxValue = diprg.lMax; - strcpy( (char*)pAxCfg->mName, (char*)pdidoi->tszName ); - pAxCfg->mIsAvailable = true; + strcpy( (char*)pAxCfg->mName, (char*)pdidoi->tszName ); + pAxCfg->mIsAvailable = true; return DIENUM_CONTINUE; } @@ -348,39 +348,39 @@ BOOL CALLBACK JXInput::EnumAxesCallback( const DIDEVICEOBJECTINSTANCE* pdidoi, BOOL CALLBACK JXInput::EnumButtonsCallback( const DIDEVICEOBJECTINSTANCE* pdidoi, VOID* pContext ) { - JXInput* pThis = (JXInput*)pContext; + JXInput* pThis = (JXInput*)pContext; - // - // if the maximum number of buttons is already registered, - // issue a warning and stop enumeration. - // - if( JXINPUT_MAX_BUTTONS == pThis->mButtonCount ) - { - OutputDebugString( "Max. number of buttons exceeded!" ); - return DIENUM_STOP; - } + // + // if the maximum number of buttons is already registered, + // issue a warning and stop enumeration. + // + if( JXINPUT_MAX_BUTTONS == pThis->mButtonCount ) + { + OutputDebugString( "Max. number of buttons exceeded!" ); + return DIENUM_STOP; + } - ButtonConfig* pBtCfg = NULL; + ButtonConfig* pBtCfg = NULL; if ( pdidoi->guidType == GUID_Button ) { - assert( JXINPUT_MAX_BUTTONS > pThis->mButtonCount ); - pBtCfg = & pThis->mButtonConfig[ pThis->mButtonCount++ ]; - } + assert( JXINPUT_MAX_BUTTONS > pThis->mButtonCount ); + pBtCfg = & pThis->mButtonConfig[ pThis->mButtonCount++ ]; + } // fail-safe if( NULL == pBtCfg ) // e.g. unknown stuff return DIENUM_CONTINUE; - assert( NULL != pBtCfg ); + assert( NULL != pBtCfg ); - // - // Perform config. - // + // + // Perform config. + // - strcpy( (char*)pBtCfg->mName, (char*)pdidoi->tszName ); - pBtCfg->mIsAvailable = true; + strcpy( (char*)pBtCfg->mName, (char*)pdidoi->tszName ); + pBtCfg->mIsAvailable = true; return DIENUM_CONTINUE; } @@ -393,38 +393,38 @@ BOOL CALLBACK JXInput::EnumButtonsCallback( const DIDEVICEOBJECTINSTANCE* pdidoi BOOL CALLBACK JXInput::EnumPOVsCallback( const DIDEVICEOBJECTINSTANCE* pdidoi, VOID* pContext ) { - JXInput* pThis = (JXInput*)pContext; + JXInput* pThis = (JXInput*)pContext; - // - // if the maximum number of buttons is already registered, - // issue a warning and stop enumeration. - // - if( JXINPUT_MAX_DIRECTIONALS == pThis->mPOVCount ) - { - OutputDebugString( "Max. number of POVs exceeded!" ); - return DIENUM_STOP; - } + // + // if the maximum number of buttons is already registered, + // issue a warning and stop enumeration. + // + if( JXINPUT_MAX_DIRECTIONALS == pThis->mPOVCount ) + { + OutputDebugString( "Max. number of POVs exceeded!" ); + return DIENUM_STOP; + } - DirectionalConfig* pDirCfg = NULL; + DirectionalConfig* pDirCfg = NULL; if (pdidoi->guidType == GUID_POV) { - assert( JXINPUT_MAX_DIRECTIONALS > pThis->mPOVCount ); - pDirCfg = & pThis->mDirectionalConfig[ pThis->mPOVCount++ ]; + assert( JXINPUT_MAX_DIRECTIONALS > pThis->mPOVCount ); + pDirCfg = & pThis->mDirectionalConfig[ pThis->mPOVCount++ ]; } // fail-safe if( NULL == pDirCfg ) // e.g. unknown stuff return DIENUM_CONTINUE; - assert( NULL != pDirCfg ); + assert( NULL != pDirCfg ); - // - // Perform config. - // + // + // Perform config. + // - strcpy( (char*)pDirCfg->mName, (char*)pdidoi->tszName ); - pDirCfg->mIsAvailable = true; + strcpy( (char*)pDirCfg->mName, (char*)pdidoi->tszName ); + pDirCfg->mIsAvailable = true; return DIENUM_CONTINUE; } @@ -436,13 +436,13 @@ BOOL CALLBACK JXInput::EnumPOVsCallback( const DIDEVICEOBJECTINSTANCE* pdidoi, // Desc: Callback function for enumerating the effects of a joystick //----------------------------------------------------------------------------- BOOL CALLBACK JXInput::EnumEffectsCallback( const DIEFFECTINFO* pdidoi, - VOID* pContext ) + VOID* pContext ) { - //JXInput* pThis = (JXInput*)pContext; + //JXInput* pThis = (JXInput*)pContext; - // - // Work on that!! - // + // + // Work on that!! + // return DIENUM_CONTINUE; } @@ -463,12 +463,12 @@ HRESULT JXInput::InitDirectInput( HWND hWnd ) return E_FAIL; } - - // - // Ask the device for some useful information. - // - mdiDevInfo.dwSize = sizeof( DIDEVICEINSTANCE ); - hr = mpJoystick->GetDeviceInfo( &mdiDevInfo ); + + // + // Ask the device for some useful information. + // + mdiDevInfo.dwSize = sizeof( DIDEVICEINSTANCE ); + hr = mpJoystick->GetDeviceInfo( &mdiDevInfo ); if( FAILED(hr) ) return hr; @@ -484,10 +484,10 @@ HRESULT JXInput::InitDirectInput( HWND hWnd ) // Set the cooperative level to let DInput know how this device should // interact with the system and with other DInput applications. // hr = g_pJoystick->SetCooperativeLevel( hDlg, DISCL_EXCLUSIVE|DISCL_FOREGROUND ); - DWORD mode = ( NULL == hWnd ? DISCL_NONEXCLUSIVE|DISCL_BACKGROUND : DISCL_EXCLUSIVE|DISCL_BACKGROUND ); - hr = mpJoystick->SetCooperativeLevel( hWnd, mode ); - if( FAILED(hr) ) - return hr; + DWORD mode = ( NULL == hWnd ? DISCL_NONEXCLUSIVE|DISCL_BACKGROUND : DISCL_EXCLUSIVE|DISCL_BACKGROUND ); + hr = mpJoystick->SetCooperativeLevel( hWnd, mode ); + if( FAILED(hr) ) + return hr; // Determine how many axis the joystick has (so we don't error out setting // properties for unavailable axis) @@ -500,14 +500,14 @@ HRESULT JXInput::InitDirectInput( HWND hWnd ) // Enumerate the axes of the joyctick and set the range of each axis. Note: // we could just use the defaults, but we're just trying to show an example // of enumerating device objects (axes, buttons, etc.). - mpJoystick->EnumObjects( EnumAxesCallback, (VOID*)this, DIDFT_AXIS ); - mpJoystick->EnumObjects( EnumButtonsCallback, (VOID*)this, DIDFT_BUTTON ); - mpJoystick->EnumObjects( EnumPOVsCallback, (VOID*)this, DIDFT_POV ); + mpJoystick->EnumObjects( EnumAxesCallback, (VOID*)this, DIDFT_AXIS ); + mpJoystick->EnumObjects( EnumButtonsCallback, (VOID*)this, DIDFT_BUTTON ); + mpJoystick->EnumObjects( EnumPOVsCallback, (VOID*)this, DIDFT_POV ); - mpJoystick->EnumEffects( EnumEffectsCallback, (VOID*)this, DIEFT_ALL ); + mpJoystick->EnumEffects( EnumEffectsCallback, (VOID*)this, DIEFT_ALL ); - // For FF sticks, switch on autocenter as long as we do not use real FF - SwitchAutoCenter( true ); + // For FF sticks, switch on autocenter as long as we do not use real FF + SwitchAutoCenter( true ); return S_OK; } @@ -527,27 +527,27 @@ HRESULT JXInput::UpdateInputState() if( mpJoystick ) { - // Poll the device to read the current state - hr = mpJoystick->Poll(); - if( FAILED(hr) ) - { - // DInput is telling us that the input stream has been - // interrupted. We aren't tracking any state between polls, so - // we don't have any special reset that needs to be done. We - // just re-acquire and try again. - hr = mpJoystick->Acquire(); - while( hr == DIERR_INPUTLOST ) - hr = mpJoystick->Acquire(); + // Poll the device to read the current state + hr = mpJoystick->Poll(); + if( FAILED(hr) ) + { + // DInput is telling us that the input stream has been + // interrupted. We aren't tracking any state between polls, so + // we don't have any special reset that needs to be done. We + // just re-acquire and try again. + hr = mpJoystick->Acquire(); + while( hr == DIERR_INPUTLOST ) + hr = mpJoystick->Acquire(); - // hr may be DIERR_OTHERAPPHASPRIO or other errors. This - // may occur when the app is minimized or in the process of - // switching, so just try again later - return S_OK; - } + // hr may be DIERR_OTHERAPPHASPRIO or other errors. This + // may occur when the app is minimized or in the process of + // switching, so just try again later + return S_OK; + } - // Get the input's device state - if( FAILED( hr = mpJoystick->GetDeviceState( sizeof(DIJOYSTATE2), &mJS ) ) ) - return hr; // The device should have been acquired during the Poll() + // Get the input's device state + if( FAILED( hr = mpJoystick->GetDeviceState( sizeof(DIJOYSTATE2), &mJS ) ) ) + return hr; // The device should have been acquired during the Poll() } @@ -570,8 +570,8 @@ HRESULT JXInput::FreeDirectInput() // the app tried to exit while the device is still acquired. mpJoystick->Unacquire(); - mpJoystick->Release(); - mpJoystick = NULL; + mpJoystick->Release(); + mpJoystick = NULL; } return S_OK; @@ -583,14 +583,14 @@ HRESULT JXInput::SwitchAutoCenter( bool onoff ) { HRESULT hr; - DIPROPDWORD DIPropAutoCenter; + DIPROPDWORD DIPropAutoCenter; - DIPropAutoCenter.diph.dwSize = sizeof(DIPropAutoCenter); - DIPropAutoCenter.diph.dwHeaderSize = sizeof(DIPROPHEADER); - DIPropAutoCenter.diph.dwObj = 0; - DIPropAutoCenter.diph.dwHow = DIPH_DEVICE; - DIPropAutoCenter.dwData = ( onoff ? DIPROPAUTOCENTER_ON : DIPROPAUTOCENTER_OFF ); + DIPropAutoCenter.diph.dwSize = sizeof(DIPropAutoCenter); + DIPropAutoCenter.diph.dwHeaderSize = sizeof(DIPROPHEADER); + DIPropAutoCenter.diph.dwObj = 0; + DIPropAutoCenter.diph.dwHow = DIPH_DEVICE; + DIPropAutoCenter.dwData = ( onoff ? DIPROPAUTOCENTER_ON : DIPROPAUTOCENTER_OFF ); - hr = mpJoystick->SetProperty( DIPROP_AUTOCENTER, &DIPropAutoCenter.diph ); - return hr; + hr = mpJoystick->SetProperty( DIPROP_AUTOCENTER, &DIPropAutoCenter.diph ); + return hr; } diff --git a/src/main/cpp/main.cpp b/src/main/cpp/main.cpp index 567e8d4..54cc16b 100644 --- a/src/main/cpp/main.cpp +++ b/src/main/cpp/main.cpp @@ -6,19 +6,19 @@ HINSTANCE g_hInst; BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved - ) + ) { switch (ul_reason_for_call) - { - case DLL_PROCESS_ATTACH: - g_hInst = (HINSTANCE)hModule; - break; - case DLL_THREAD_ATTACH: - case DLL_THREAD_DETACH: - break; - case DLL_PROCESS_DETACH: - g_hInst = NULL; - break; + { + case DLL_PROCESS_ATTACH: + g_hInst = (HINSTANCE)hModule; + break; + case DLL_THREAD_ATTACH: + case DLL_THREAD_DETACH: + break; + case DLL_PROCESS_DETACH: + g_hInst = NULL; + break; } return TRUE; } diff --git a/src/main/headers/JXInputManager.h b/src/main/headers/JXInputManager.h index 67327db..568cd1d 100644 --- a/src/main/headers/JXInputManager.h +++ b/src/main/headers/JXInputManager.h @@ -5,29 +5,29 @@ class JXInput; class JXINPUT_API JXInputManager { public: - JXInputManager( HWND hWnd ); - virtual ~JXInputManager(); + JXInputManager( HWND hWnd ); + virtual ~JXInputManager(); - int getNumberOfJXInputs() const; - JXInput& getJXInput( int idx ) const; + int getNumberOfJXInputs() const; + JXInput& getJXInput( int idx ) const; - // - // Numbering methods - // - int getMaxNumberOfAxes() const; - int getMaxNumberOfButtons() const; - int getMaxNumberOfDirectionals() const; + // + // Numbering methods + // + int getMaxNumberOfAxes() const; + int getMaxNumberOfButtons() const; + int getMaxNumberOfDirectionals() const; private: - LPDIRECTINPUT8 mpDI; - HWND mhWnd; - JXInput* mDevices[ MAX_JXINPUTS ]; - int mDeviceCounter; + LPDIRECTINPUT8 mpDI; + HWND mhWnd; + JXInput* mDevices[ MAX_JXINPUTS ]; + int mDeviceCounter; - HRESULT InitDirectInput( HWND hWnd = NULL ); - HRESULT FreeDirectInput(); + HRESULT InitDirectInput( HWND hWnd = NULL ); + HRESULT FreeDirectInput(); - static BOOL CALLBACK EnumJoysticksCallback( const DIDEVICEINSTANCE* pdidInstance, + static BOOL CALLBACK EnumJoysticksCallback( const DIDEVICEINSTANCE* pdidInstance, VOID* pContext ); - void addJXInput( JXInput* pJ ); + void addJXInput( JXInput* pJ ); }; diff --git a/src/main/java/de/hardcode/jxinput/Axis.java b/src/main/java/de/hardcode/jxinput/Axis.java index 9f1d710..966cb23 100644 --- a/src/main/java/de/hardcode/jxinput/Axis.java +++ b/src/main/java/de/hardcode/jxinput/Axis.java @@ -1,10 +1,10 @@ //********************************************************************************************** -// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development -// All rights reserved. Copying, modification, -// distribution or publication without the prior written -// consent of the author is prohibited. +// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development +// All rights reserved. Copying, modification, +// distribution or publication without the prior written +// consent of the author is prohibited. // -// Created on 19. Dezember 2001, 21:58 +// Created on 19. Dezember 2001, 21:58 //********************************************************************************************** package de.hardcode.jxinput; @@ -15,49 +15,49 @@ package de.hardcode.jxinput; */ public interface Axis extends Feature { - // Enumeration of axes. - final static int ID_X = 0; - final static int ID_Y = 1; - final static int ID_Z = 2; - final static int ID_ROTX = 3; - final static int ID_ROTY = 4; - final static int ID_ROTZ = 5; - final static int ID_SLIDER0 = 6; - final static int ID_SLIDER1 = 7; - final static int NUMBER_OF_ID = 8; - - // Enumeration of axis types - final static int TRANSLATION = 0; - final static int ROTATION = 1; - final static int SLIDER = 2; + // Enumeration of axes. + final static int ID_X = 0; + final static int ID_Y = 1; + final static int ID_Z = 2; + final static int ID_ROTX = 3; + final static int ID_ROTY = 4; + final static int ID_ROTZ = 5; + final static int ID_SLIDER0 = 6; + final static int ID_SLIDER1 = 7; + final static int NUMBER_OF_ID = 8; + + // Enumeration of axis types + final static int TRANSLATION = 0; + final static int ROTATION = 1; + final static int SLIDER = 2; - /** - * Retrieve the type of the axis. - * The type is describes the meaning and the range of values of the axis. - *
- * TRANSLATION typed axes denote a translational deviation from a center
- * position. This can be e.g. the common, basic joystick axes.
- * The range of getValue() is [-1.0,1.0].
- *
- * ROTATION typed axes denote a rotational deviation from a center
- * position. Something on the stick is turned or twisted.
- * The range of getValue() is [-1.0,1.0].
- *
- * SLIDER typed axes denote a shifting device without a center position.
- * A good sample is a throttle control.
- * The range of getValue() is [0.0,1.0].
- *
- * @return [ TRANSLATION | ROTATION | SLIDER ]
- */
- int getType();
+ /**
+ * Retrieve the type of the axis.
+ * The type is describes the meaning and the range of values of the axis.
+ *
+ * TRANSLATION typed axes denote a translational deviation from a center
+ * position. This can be e.g. the common, basic joystick axes.
+ * The range of getValue() is [-1.0,1.0].
+ *
+ * ROTATION typed axes denote a rotational deviation from a center
+ * position. Something on the stick is turned or twisted.
+ * The range of getValue() is [-1.0,1.0].
+ *
+ * SLIDER typed axes denote a shifting device without a center position.
+ * A good sample is a throttle control.
+ * The range of getValue() is [0.0,1.0].
+ *
+ * @return [ TRANSLATION | ROTATION | SLIDER ]
+ */
+ int getType();
- /**
- * Returns the current value of the axis.
- * The range of the result depends on the axis type.
- *
- * @return value [-1.0,1.0] or [0.0,1.0]
- */
- double getValue();
+ /**
+ * Returns the current value of the axis.
+ * The range of the result depends on the axis type.
+ *
+ * @return value [-1.0,1.0] or [0.0,1.0]
+ */
+ double getValue();
/**
diff --git a/src/main/java/de/hardcode/jxinput/Button.java b/src/main/java/de/hardcode/jxinput/Button.java
index 418e2b6..818c843 100644
--- a/src/main/java/de/hardcode/jxinput/Button.java
+++ b/src/main/java/de/hardcode/jxinput/Button.java
@@ -1,10 +1,10 @@
//**********************************************************************************************
-// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
-// All rights reserved. Copying, modification,
-// distribution or publication without the prior written
-// consent of the author is prohibited.
+// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
+// All rights reserved. Copying, modification,
+// distribution or publication without the prior written
+// consent of the author is prohibited.
//
-// Created on 19. Dezember 2001, 21:58
+// Created on 19. Dezember 2001, 21:58
//**********************************************************************************************
package de.hardcode.jxinput;
@@ -14,22 +14,22 @@ package de.hardcode.jxinput;
*/
public interface Button extends Feature
{
- // Enumeration of button types
- final static int PUSHBUTTON = 0;
- final static int TOGGLEBUTTON = 1;
-
- /**
- * Retrieve the type of the button.
- * Pushbutton will deliver true==getState() as long as they are pressed down.
- * Togglebuttons will change their state once they are pressed and keep that state
- * until they are pressed again.
- * @return [ PUSHBUTTON | TOGGLEBUTTON ]
- */
- int getType();
-
- /**
- * Tells the state of the button at last update.
- */
- boolean getState();
+ // Enumeration of button types
+ final static int PUSHBUTTON = 0;
+ final static int TOGGLEBUTTON = 1;
+
+ /**
+ * Retrieve the type of the button.
+ * Pushbutton will deliver true==getState() as long as they are pressed down.
+ * Togglebuttons will change their state once they are pressed and keep that state
+ * until they are pressed again.
+ * @return [ PUSHBUTTON | TOGGLEBUTTON ]
+ */
+ int getType();
+
+ /**
+ * Tells the state of the button at last update.
+ */
+ boolean getState();
}
diff --git a/src/main/java/de/hardcode/jxinput/Directional.java b/src/main/java/de/hardcode/jxinput/Directional.java
index ccd27c1..a2d0d34 100644
--- a/src/main/java/de/hardcode/jxinput/Directional.java
+++ b/src/main/java/de/hardcode/jxinput/Directional.java
@@ -1,10 +1,10 @@
//**********************************************************************************************
-// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
-// All rights reserved. Copying, modification,
-// distribution or publication without the prior written
-// consent of the author is prohibited.
+// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
+// All rights reserved. Copying, modification,
+// distribution or publication without the prior written
+// consent of the author is prohibited.
//
-// Created on 27. Dezember 2001, 23:33
+// Created on 27. Dezember 2001, 23:33
//**********************************************************************************************
package de.hardcode.jxinput;
@@ -14,32 +14,32 @@ package de.hardcode.jxinput;
*/
public interface Directional extends Feature
{
- /**
- * If the Directional has a center position where it points to no direction, this
- * flag is true when this position is reached.
- */
- boolean isCentered();
-
- /**
- * Retrieve the direction pointed to.
- * Value is given in 1/100 degree, [0,36000]
- */
- int getDirection();
+ /**
+ * If the Directional has a center position where it points to no direction, this
+ * flag is true when this position is reached.
+ */
+ boolean isCentered();
+
+ /**
+ * Retrieve the direction pointed to.
+ * Value is given in 1/100 degree, [0,36000]
+ */
+ int getDirection();
- /**
- * Retrieve the analog value pointing to the angle described by
- * getDirection().
- * For coolie hats this will be either 1,0 for any direction or 0.0
- * when isCentered()==true.
- */
- double getValue();
+ /**
+ * Retrieve the analog value pointing to the angle described by
+ * getDirection().
+ * For coolie hats this will be either 1,0 for any direction or 0.0
+ * when isCentered()==true.
+ */
+ double getValue();
- /**
- * Inform about the resolution of the value returned by getValue().
- *
- * @return resolution, e.g. 1.0 for coolie hats
- */
- double getResolution();
+ /**
+ * Inform about the resolution of the value returned by getValue().
+ *
+ * @return resolution, e.g. 1.0 for coolie hats
+ */
+ double getResolution();
}
diff --git a/src/main/java/de/hardcode/jxinput/Feature.java b/src/main/java/de/hardcode/jxinput/Feature.java
index 20c396f..a529158 100644
--- a/src/main/java/de/hardcode/jxinput/Feature.java
+++ b/src/main/java/de/hardcode/jxinput/Feature.java
@@ -1,10 +1,10 @@
//**********************************************************************************************
-// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
-// All rights reserved. Copying, modification,
-// distribution or publication without the prior written
-// consent of the author is prohibited.
+// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
+// All rights reserved. Copying, modification,
+// distribution or publication without the prior written
+// consent of the author is prohibited.
//
-// Created on 27. Dezember 2001, 00:19
+// Created on 27. Dezember 2001, 00:19
//**********************************************************************************************
package de.hardcode.jxinput;
@@ -24,15 +24,15 @@ package de.hardcode.jxinput;
*/
public abstract interface Feature
{
- /**
+ /**
* Features may have a name provided e.g. by the driver.
*/
- String getName();
-
- /**
- * Denote wether this feature has changed beyond it's resolution since it got last
- * updated.
- */
- boolean hasChanged();
+ String getName();
+
+ /**
+ * Denote wether this feature has changed beyond it's resolution since it got last
+ * updated.
+ */
+ boolean hasChanged();
}
diff --git a/src/main/java/de/hardcode/jxinput/JXInputDevice.java b/src/main/java/de/hardcode/jxinput/JXInputDevice.java
index d8a8bc8..7875242 100644
--- a/src/main/java/de/hardcode/jxinput/JXInputDevice.java
+++ b/src/main/java/de/hardcode/jxinput/JXInputDevice.java
@@ -1,10 +1,10 @@
//**********************************************************************************************
-// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
-// All rights reserved. Copying, modification,
-// distribution or publication without the prior written
-// consent of the author is prohibited.
+// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
+// All rights reserved. Copying, modification,
+// distribution or publication without the prior written
+// consent of the author is prohibited.
//
-// Created on 19. Dezember 2001, 21:47
+// Created on 19. Dezember 2001, 21:47
//**********************************************************************************************
package de.hardcode.jxinput;
@@ -30,42 +30,42 @@ package de.hardcode.jxinput;
*/
public interface JXInputDevice
{
- /**
- * @directed
- */
+ /**
+ * @directed
+ */
/*#Features lnkFeatures;*/
- /**
- *@link aggregationByValue
- */
+ /**
+ *@link aggregationByValue
+ */
/*#Feature lnkFeature;*/
- /**
- * Devices may have a name.
- * This name might be provided by a system dependant driver.
- */
- String getName();
-
- /** Actual number of available axes. */
- int getNumberOfAxes();
+ /**
+ * Devices may have a name.
+ * This name might be provided by a system dependant driver.
+ */
+ String getName();
+
+ /** Actual number of available axes. */
+ int getNumberOfAxes();
- /** Actual number of available buttons. */
- int getNumberOfButtons();
+ /** Actual number of available buttons. */
+ int getNumberOfButtons();
- /** Actual number of available directional features. */
- int getNumberOfDirectionals();
-
- /** Maximum number of axes as an upper bound for index values. */
- int getMaxNumberOfAxes();
+ /** Actual number of available directional features. */
+ int getNumberOfDirectionals();
+
+ /** Maximum number of axes as an upper bound for index values. */
+ int getMaxNumberOfAxes();
- /** Maximum number of buttons as an upper bound for index values. */
- int getMaxNumberOfButtons();
+ /** Maximum number of buttons as an upper bound for index values. */
+ int getMaxNumberOfButtons();
- /** Maximum number of directional features as an upper bound for index values. */
- int getMaxNumberOfDirectionals();
-
- Axis getAxis( int idx );
- Button getButton( int idx );
- Directional getDirectional( int idx );
+ /** Maximum number of directional features as an upper bound for index values. */
+ int getMaxNumberOfDirectionals();
+
+ Axis getAxis( int idx );
+ Button getButton( int idx );
+ Directional getDirectional( int idx );
}
diff --git a/src/main/java/de/hardcode/jxinput/JXInputManager.java b/src/main/java/de/hardcode/jxinput/JXInputManager.java
index 8c3e050..328afec 100644
--- a/src/main/java/de/hardcode/jxinput/JXInputManager.java
+++ b/src/main/java/de/hardcode/jxinput/JXInputManager.java
@@ -1,10 +1,10 @@
//**********************************************************************************************
-// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
-// All rights reserved. Copying, modification,
-// distribution or publication without the prior written
-// consent of the author is prohibited.
+// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
+// All rights reserved. Copying, modification,
+// distribution or publication without the prior written
+// consent of the author is prohibited.
//
-// Created on 29. Dezember 2001, 02:17
+// Created on 29. Dezember 2001, 02:17
//**********************************************************************************************
package de.hardcode.jxinput;
@@ -29,44 +29,44 @@ import java.awt.Component;
*/
public class JXInputManager
{
-
- /** Remember when the last update took place. */
- private static long mTimeOfLastUpdate;
+
+ /** Remember when the last update took place. */
+ private static long mTimeOfLastUpdate;
- /** Maintain a list of devices. */
- private final static ArrayList mDevices = new ArrayList();
-
- /** Maintain a list of direct input devices. */
- private final static ArrayList mDIDevices = new ArrayList();
+ /** Maintain a list of devices. */
+ private final static ArrayList mDevices = new ArrayList();
+
+ /** Maintain a list of direct input devices. */
+ private final static ArrayList mDIDevices = new ArrayList();
- /** Maintain a list of virtual devices. */
- private final static ArrayList mVirtualDevices = new ArrayList();
+ /** Maintain a list of virtual devices. */
+ private final static ArrayList mVirtualDevices = new ArrayList();
- /** Maintain a list of keyboard devices. */
- private final static ArrayList mKBDevices = new ArrayList();
-
- /**
- * Statically retrieve all DirectInputDevices available.
- */
+ /** Maintain a list of keyboard devices. */
+ private final static ArrayList mKBDevices = new ArrayList();
+
+ /**
+ * Statically retrieve all DirectInputDevices available.
+ */
static
{
- reset();
- }
+ reset();
+ }
-
+
/**
- * @directed
- */
+ * @directed
+ */
/*#JXInputDevice lnkJXInputDevice;*/
- /**
- * Creates a new instance of JXInputManager.
- * This is prohibited - it only has static members.
- */
- private JXInputManager()
- {
- }
-
+ /**
+ * Creates a new instance of JXInputManager.
+ * This is prohibited - it only has static members.
+ */
+ private JXInputManager()
+ {
+ }
+
/**
* Retrieve the number of available input devices.
@@ -76,158 +76,158 @@ public class JXInputManager
return mDevices.size();
}
- /**
- * Delivers the JXInputDevice with the desired index.
- *
+ /** + * Delivers the JXInputDevice with the desired index. + *
* Take care that idx < getNumberOfDevices()!
*/
- public static JXInputDevice getJXInputDevice( int idx )
- {
- //
- // Be well-behaved even if idx is out of range.
- //
- if ( idx >= mDevices.size() )
- return null;
+ public static JXInputDevice getJXInputDevice( int idx )
+ {
+ //
+ // Be well-behaved even if idx is out of range.
+ //
+ if ( idx >= mDevices.size() )
+ return null;
return (JXInputDevice)mDevices.get( idx );
}
-
- /**
- * Master reset for all devices and events.
- * After calling reset(), better forget all devices created or retrieved.
- * They are no longer valid.
- * Event listeners will no longer be called and should be discarded.
- */
- synchronized public static void reset()
- {
- JXInputEventManager.reset();
-
- mDevices.clear();
+
+ /**
+ * Master reset for all devices and events.
+ * After calling reset(), better forget all devices created or retrieved.
+ * They are no longer valid.
+ * Event listeners will no longer be called and should be discarded.
+ */
+ synchronized public static void reset()
+ {
+ JXInputEventManager.reset();
+
+ mDevices.clear();
- mVirtualDevices.clear();
- mDIDevices.clear();
+ mVirtualDevices.clear();
+ mDIDevices.clear();
- DirectInputDevice.reset();
-
+ DirectInputDevice.reset();
+
for ( int i = 0; i < DirectInputDevice.getNumberOfDevices(); ++i )
{
- DirectInputDevice dev = new DirectInputDevice( i );
+ DirectInputDevice dev = new DirectInputDevice( i );
mDevices.add( dev );
mDIDevices.add( dev );
}
-
- // I have to call updateFeatures one time here during initialization
- // bc. I experienced difficulties otherwise while running with the
- // J3D sensoring stuff!
-// updateFeatures();
- DirectInputDevice.update();
-
- int n = mKBDevices.size();
- for ( int i = 0; i < n; ++i )
- ((JXKeyboardInputDevice)mKBDevices.get( i )).shutdown();
- mKBDevices.clear();
- }
-
+
+ // I have to call updateFeatures one time here during initialization
+ // bc. I experienced difficulties otherwise while running with the
+ // J3D sensoring stuff!
+// updateFeatures();
+ DirectInputDevice.update();
+
+ int n = mKBDevices.size();
+ for ( int i = 0; i < n; ++i )
+ ((JXKeyboardInputDevice)mKBDevices.get( i )).shutdown();
+ mKBDevices.clear();
+ }
+
- /**
- * Update the (shared) state of all features in one step.
- * This method asks the actual device for a consistant state.
- * After calling this method, all features may have new values.
- * updateFeatures() is meant to be called e.g. once per frame in a gaming environment.
- */
- public static void updateFeatures()
+ /**
+ * Update the (shared) state of all features in one step.
+ * This method asks the actual device for a consistant state.
+ * After calling this method, all features may have new values.
+ * updateFeatures() is meant to be called e.g. once per frame in a gaming environment.
+ */
+ public static void updateFeatures()
{
// Get timing
- long now = System.currentTimeMillis();
- long deltaT = now - mTimeOfLastUpdate;
-
- // Update available driver
- DirectInputDevice.update();
+ long now = System.currentTimeMillis();
+ long deltaT = now - mTimeOfLastUpdate;
- //
- // Update the virtual devices.
- //
- Iterator vdevices = mVirtualDevices.iterator();
- while ( vdevices.hasNext() )
- {
- ((JXVirtualInputDevice)vdevices.next()).update( deltaT );
- }
-
+ // Update available driver
+ DirectInputDevice.update();
+
+ //
+ // Update the virtual devices.
+ //
+ Iterator vdevices = mVirtualDevices.iterator();
+ while ( vdevices.hasNext() )
+ {
+ ((JXVirtualInputDevice)vdevices.next()).update( deltaT );
+ }
+
// Remember time
- mTimeOfLastUpdate = now;
+ mTimeOfLastUpdate = now;
- // Fire all events.
+ // Fire all events.
JXInputEventManager.trigger();
}
- /**
- * Get time when last update occurred.
- * @return tickervalue in milliseconds
- */
- public static long getLastUpdateTime()
+ /**
+ * Get time when last update occurred.
+ * @return tickervalue in milliseconds
+ */
+ public static long getLastUpdateTime()
{
- return mTimeOfLastUpdate;
- }
+ return mTimeOfLastUpdate;
+ }
-
- /**
- * Create a new pseudo-device.
- */
- public static JXKeyboardInputDevice createKeyboardDevice()
- {
- JXKeyboardInputDevice d = new JXKeyboardInputDevice();
- mDevices.add( d );
- mKBDevices.add( d );
- return d;
- }
-
-
- /**
- * Create a new pseudo-device listening to a Swing component.
- * Make sure that the component also has the keyboard focus!!
- */
- public static JXKeyboardInputDevice createKeyboardDevice( Component comp )
- {
- JXKeyboardInputDevice d = new JXKeyboardInputDevice( comp );
- mDevices.add( d );
- mKBDevices.add( d );
- return d;
- }
+
+ /**
+ * Create a new pseudo-device.
+ */
+ public static JXKeyboardInputDevice createKeyboardDevice()
+ {
+ JXKeyboardInputDevice d = new JXKeyboardInputDevice();
+ mDevices.add( d );
+ mKBDevices.add( d );
+ return d;
+ }
+
+
+ /**
+ * Create a new pseudo-device listening to a Swing component.
+ * Make sure that the component also has the keyboard focus!!
+ */
+ public static JXKeyboardInputDevice createKeyboardDevice( Component comp )
+ {
+ JXKeyboardInputDevice d = new JXKeyboardInputDevice( comp );
+ mDevices.add( d );
+ mKBDevices.add( d );
+ return d;
+ }
-
- /**
- * Delete a keyboard device again e.g. when the corresponding
- * JComponent gets deleted.
- */
- public static void deleteKeyboardDevice( JXKeyboardInputDevice dev )
- {
- mDevices.remove( dev );
- mKBDevices.remove( dev );
- ((JXKeyboardInputDevice)dev).shutdown();
- }
+
+ /**
+ * Delete a keyboard device again e.g. when the corresponding
+ * JComponent gets deleted.
+ */
+ public static void deleteKeyboardDevice( JXKeyboardInputDevice dev )
+ {
+ mDevices.remove( dev );
+ mKBDevices.remove( dev );
+ ((JXKeyboardInputDevice)dev).shutdown();
+ }
- /**
- * Create a new pseudo-device.
- */
- public static JXVirtualInputDevice createVirtualDevice()
- {
- JXVirtualInputDevice d = new JXVirtualInputDevice();
- mDevices.add( d );
- mVirtualDevices.add( d );
- return d;
- }
+ /**
+ * Create a new pseudo-device.
+ */
+ public static JXVirtualInputDevice createVirtualDevice()
+ {
+ JXVirtualInputDevice d = new JXVirtualInputDevice();
+ mDevices.add( d );
+ mVirtualDevices.add( d );
+ return d;
+ }
-
- /**
- * Delete a virtual device again.
- */
- public static void deleteVirtualDevice( JXVirtualInputDevice dev )
- {
- mDevices.remove( dev );
- mVirtualDevices.remove( dev );
- }
+
+ /**
+ * Delete a virtual device again.
+ */
+ public static void deleteVirtualDevice( JXVirtualInputDevice dev )
+ {
+ mDevices.remove( dev );
+ mVirtualDevices.remove( dev );
+ }
}
diff --git a/src/main/java/de/hardcode/jxinput/directinput/DIAxis.java b/src/main/java/de/hardcode/jxinput/directinput/DIAxis.java
index a6d0eac..1107679 100644
--- a/src/main/java/de/hardcode/jxinput/directinput/DIAxis.java
+++ b/src/main/java/de/hardcode/jxinput/directinput/DIAxis.java
@@ -1,10 +1,10 @@
//**********************************************************************************************
-// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
-// All rights reserved. Copying, modification,
-// distribution or publication without the prior written
-// consent of the author is prohibited.
+// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
+// All rights reserved. Copying, modification,
+// distribution or publication without the prior written
+// consent of the author is prohibited.
//
-// Created on 27. Dezember 2001, 00:14
+// Created on 27. Dezember 2001, 00:14
//**********************************************************************************************
package de.hardcode.jxinput.directinput;
@@ -17,53 +17,53 @@ import de.hardcode.jxinput.Axis;
class DIAxis implements Axis
{
private final int mDeviceIdx;
- private final int mIdx;
+ private final int mIdx;
- /**
- * Creates a new instance of DIAxis.
- */
- DIAxis( int devidx, int idx )
- {
+ /**
+ * Creates a new instance of DIAxis.
+ */
+ DIAxis( int devidx, int idx )
+ {
mDeviceIdx = devidx;
- mIdx = idx;
- }
+ mIdx = idx;
+ }
- public String getName()
- {
- return DirectInputDriver.getAxisName( mDeviceIdx, mIdx );
- }
-
-
- /**
- * Denote wether this feature has changed beyond it's resolution since it got last
- * updated.
- */
- public boolean hasChanged()
- {
- return true;
- }
+ public String getName()
+ {
+ return DirectInputDriver.getAxisName( mDeviceIdx, mIdx );
+ }
+
+
+ /**
+ * Denote wether this feature has changed beyond it's resolution since it got last
+ * updated.
+ */
+ public boolean hasChanged()
+ {
+ return true;
+ }
- public double getValue()
- {
- return DirectInputDriver.getAxisValue( mDeviceIdx, mIdx );
- }
-
- public int getType()
- {
- return DirectInputDriver.getAxisType( mDeviceIdx, mIdx );
- }
+ public double getValue()
+ {
+ return DirectInputDriver.getAxisValue( mDeviceIdx, mIdx );
+ }
+
+ public int getType()
+ {
+ return DirectInputDriver.getAxisType( mDeviceIdx, mIdx );
+ }
- /**
- * Inform about the resolution of the axis.
- *
- * @return resolution, e.g. 2^-16
- */
- public double getResolution()
- {
- // extend the driver here!!
- // Here I assume typical 16 bit resolution
- return ( getType() == Axis.SLIDER ? 1.0/65536.0 : 2.0/65536.0 ) ;
- }
+ /**
+ * Inform about the resolution of the axis.
+ *
+ * @return resolution, e.g. 2^-16
+ */
+ public double getResolution()
+ {
+ // extend the driver here!!
+ // Here I assume typical 16 bit resolution
+ return ( getType() == Axis.SLIDER ? 1.0/65536.0 : 2.0/65536.0 ) ;
+ }
}
diff --git a/src/main/java/de/hardcode/jxinput/directinput/DIButton.java b/src/main/java/de/hardcode/jxinput/directinput/DIButton.java
index 5419550..e6554c9 100644
--- a/src/main/java/de/hardcode/jxinput/directinput/DIButton.java
+++ b/src/main/java/de/hardcode/jxinput/directinput/DIButton.java
@@ -1,10 +1,10 @@
//**********************************************************************************************
-// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
-// All rights reserved. Copying, modification,
-// distribution or publication without the prior written
-// consent of the author is prohibited.
+// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
+// All rights reserved. Copying, modification,
+// distribution or publication without the prior written
+// consent of the author is prohibited.
//
-// Created on 27. Dezember 2001, 00:14
+// Created on 27. Dezember 2001, 00:14
//**********************************************************************************************
package de.hardcode.jxinput.directinput;
@@ -18,38 +18,38 @@ import de.hardcode.jxinput.Button;
class DIButton implements Button
{
private final int mDeviceIdx;
- private final int mIdx;
+ private final int mIdx;
- /**
- * Creates a new instance of DIButton.
- */
- DIButton( int devidx, int idx )
- {
+ /**
+ * Creates a new instance of DIButton.
+ */
+ DIButton( int devidx, int idx )
+ {
mDeviceIdx = devidx;
- mIdx = idx;
- }
-
- public String getName()
- {
- return DirectInputDriver.getButtonName( mDeviceIdx, mIdx );
- }
+ mIdx = idx;
+ }
+
+ public String getName()
+ {
+ return DirectInputDriver.getButtonName( mDeviceIdx, mIdx );
+ }
- /**
- * Denote wether this feature has changed beyond it's resolution since it got last
- * updated.
- */
- public boolean hasChanged()
- {
- return true;
- }
-
- public int getType()
- {
- return DirectInputDriver.getButtonType( mDeviceIdx, mIdx );
- }
-
- public boolean getState()
- {
- return DirectInputDriver.getButtonState( mDeviceIdx, mIdx );
- }
+ /**
+ * Denote wether this feature has changed beyond it's resolution since it got last
+ * updated.
+ */
+ public boolean hasChanged()
+ {
+ return true;
+ }
+
+ public int getType()
+ {
+ return DirectInputDriver.getButtonType( mDeviceIdx, mIdx );
+ }
+
+ public boolean getState()
+ {
+ return DirectInputDriver.getButtonState( mDeviceIdx, mIdx );
+ }
}
\ No newline at end of file
diff --git a/src/main/java/de/hardcode/jxinput/directinput/DIDirectional.java b/src/main/java/de/hardcode/jxinput/directinput/DIDirectional.java
index 9da2d3d..fc62596 100644
--- a/src/main/java/de/hardcode/jxinput/directinput/DIDirectional.java
+++ b/src/main/java/de/hardcode/jxinput/directinput/DIDirectional.java
@@ -1,10 +1,10 @@
//**********************************************************************************************
-// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
-// All rights reserved. Copying, modification,
-// distribution or publication without the prior written
-// consent of the author is prohibited.
+// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
+// All rights reserved. Copying, modification,
+// distribution or publication without the prior written
+// consent of the author is prohibited.
//
-// Created on 27. Dezember 2001, 23:40
+// Created on 27. Dezember 2001, 23:40
//**********************************************************************************************
package de.hardcode.jxinput.directinput;
@@ -17,62 +17,62 @@ import de.hardcode.jxinput.Directional;
class DIDirectional implements Directional
{
private final int mDeviceIdx;
- private final int mIdx;
-
- /**
- * Creates a new instance of DIDirectional.
- */
- DIDirectional( int devidx, int idx )
- {
+ private final int mIdx;
+
+ /**
+ * Creates a new instance of DIDirectional.
+ */
+ DIDirectional( int devidx, int idx )
+ {
mDeviceIdx = devidx;
- mIdx = idx;
- }
-
- /** Features may have a name provided e.g. by the driver. */
- public String getName()
- {
- return DirectInputDriver.getDirectionalName( mDeviceIdx, mIdx );
- }
-
- /**
- * Denote wether this feature has changed beyond it's resolution since it got last
- * updated.
- */
- public boolean hasChanged()
- {
- return true;
- }
+ mIdx = idx;
+ }
+
+ /** Features may have a name provided e.g. by the driver. */
+ public String getName()
+ {
+ return DirectInputDriver.getDirectionalName( mDeviceIdx, mIdx );
+ }
+
+ /**
+ * Denote wether this feature has changed beyond it's resolution since it got last
+ * updated.
+ */
+ public boolean hasChanged()
+ {
+ return true;
+ }
-
- public boolean isCentered()
- {
- return ( 0xffff == (DirectInputDriver.getDirection( mDeviceIdx, mIdx ) & 0xffff) );
- }
-
- public int getDirection()
- {
- return isCentered() ? 0 : DirectInputDriver.getDirection( mDeviceIdx, mIdx );
- }
+
+ public boolean isCentered()
+ {
+ return ( 0xffff == (DirectInputDriver.getDirection( mDeviceIdx, mIdx ) & 0xffff) );
+ }
+
+ public int getDirection()
+ {
+ return isCentered() ? 0 : DirectInputDriver.getDirection( mDeviceIdx, mIdx );
+ }
- public double getValue()
- {
- if ( isCentered() )
- return 0.0;
- return 1.0;
- }
+ public double getValue()
+ {
+ if ( isCentered() )
+ return 0.0;
+ return 1.0;
+ }
- /**
- * Inform about the resolution of the value returned by getValue().
- *
- * @return resolution, e.g. 1.0 for coolie hats
- */
- public double getResolution()
- {
- // DI POV always return 0.0 or 1.0, so the resolution is 1.0.
- return 1.0;
- }
-
-
+ /**
+ * Inform about the resolution of the value returned by getValue().
+ *
+ * @return resolution, e.g. 1.0 for coolie hats
+ */
+ public double getResolution()
+ {
+ // DI POV always return 0.0 or 1.0, so the resolution is 1.0.
+ return 1.0;
+ }
+
+
}
diff --git a/src/main/java/de/hardcode/jxinput/directinput/DirectInputDevice.java b/src/main/java/de/hardcode/jxinput/directinput/DirectInputDevice.java
index a20eab3..6680b2b 100644
--- a/src/main/java/de/hardcode/jxinput/directinput/DirectInputDevice.java
+++ b/src/main/java/de/hardcode/jxinput/directinput/DirectInputDevice.java
@@ -1,10 +1,10 @@
//**********************************************************************************************
-// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
-// All rights reserved. Copying, modification,
-// distribution or publication without the prior written
-// consent of the author is prohibited.
+// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
+// All rights reserved. Copying, modification,
+// distribution or publication without the prior written
+// consent of the author is prohibited.
//
-// Created on 26. Dezember 2001, 00:40
+// Created on 26. Dezember 2001, 00:40
//**********************************************************************************************
package de.hardcode.jxinput.directinput;
@@ -18,151 +18,151 @@ import de.hardcode.jxinput.Button;
* @author Herkules
*/
public class DirectInputDevice implements JXInputDevice
-{
+{
int mDeviceIdx;
- private DIAxis[] mAxes;
- private DIButton[] mButtons;
- private DIDirectional[] mDirectionals;
-
- /**
- * The number of DirectInput devices available with the driver.
- */
+ private DIAxis[] mAxes;
+ private DIButton[] mButtons;
+ private DIDirectional[] mDirectionals;
+
+ /**
+ * The number of DirectInput devices available with the driver.
+ */
public static int getNumberOfDevices()
- {
- if ( DirectInputDriver.isAvailable() )
- return DirectInputDriver.getNumberOfDevices();
- return 0;
- }
-
-
- /**
- * Update the state of all devices.
- */
- public static void update()
- {
- if ( DirectInputDriver.isAvailable() )
- DirectInputDriver.nativeupdate();
+ {
+ if ( DirectInputDriver.isAvailable() )
+ return DirectInputDriver.getNumberOfDevices();
+ return 0;
+ }
+
+
+ /**
+ * Update the state of all devices.
+ */
+ public static void update()
+ {
+ if ( DirectInputDriver.isAvailable() )
+ DirectInputDriver.nativeupdate();
}
-
- /**
- * Creates a new instance of DirectInputDevice.
- */
- public DirectInputDevice( int devidx )
- {
+
+ /**
+ * Creates a new instance of DirectInputDevice.
+ */
+ public DirectInputDevice( int devidx )
+ {
mDeviceIdx = devidx;
- init();
- }
+ init();
+ }
/**
* Reset the DirectInput connection.
*/
public static void reset()
{
- if ( DirectInputDriver.isAvailable() )
+ if ( DirectInputDriver.isAvailable() )
DirectInputDriver.reset();
}
-
- /**
- * Initialisation of fields.
- */
- private final void init()
- {
+
+ /**
+ * Initialisation of fields.
+ */
+ private final void init()
+ {
//
// Allocate arrays for max. number of features
//
- mAxes = new DIAxis [ getMaxNumberOfAxes() ];
- mButtons = new DIButton [ getMaxNumberOfButtons() ];
- mDirectionals = new DIDirectional [ getMaxNumberOfDirectionals() ];
-
+ mAxes = new DIAxis [ getMaxNumberOfAxes() ];
+ mButtons = new DIButton [ getMaxNumberOfButtons() ];
+ mDirectionals = new DIDirectional [ getMaxNumberOfDirectionals() ];
+
//
// Fill arrays due to the state of the driver.
//
- for ( int i = 0; i < mAxes.length; ++i )
- {
- if ( DirectInputDriver.isAxisAvailable( mDeviceIdx, i ) )
- mAxes[ i ] = new DIAxis( mDeviceIdx, i );
- }
-
- for ( int i = 0; i < mButtons.length; ++i )
- {
- if ( DirectInputDriver.isButtonAvailable( mDeviceIdx, i ) )
- mButtons[ i ] = new DIButton( mDeviceIdx, i );
- }
+ for ( int i = 0; i < mAxes.length; ++i )
+ {
+ if ( DirectInputDriver.isAxisAvailable( mDeviceIdx, i ) )
+ mAxes[ i ] = new DIAxis( mDeviceIdx, i );
+ }
+
+ for ( int i = 0; i < mButtons.length; ++i )
+ {
+ if ( DirectInputDriver.isButtonAvailable( mDeviceIdx, i ) )
+ mButtons[ i ] = new DIButton( mDeviceIdx, i );
+ }
- for ( int i = 0; i < mDirectionals.length; ++i )
- {
- if ( DirectInputDriver.isDirectionalAvailable( mDeviceIdx, i ) )
- mDirectionals[ i ] = new DIDirectional( mDeviceIdx, i );
- }
- }
-
+ for ( int i = 0; i < mDirectionals.length; ++i )
+ {
+ if ( DirectInputDriver.isDirectionalAvailable( mDeviceIdx, i ) )
+ mDirectionals[ i ] = new DIDirectional( mDeviceIdx, i );
+ }
+ }
+
/** Devices may have a name. */
- public String getName()
- {
- String name = DirectInputDriver.getName( mDeviceIdx );
- if ( null == name )
- return "Win32 DirectInput Joystick";
- return name;
- }
-
-
- /** Actual number of available buttons. */
- public int getNumberOfButtons()
- {
- return DirectInputDriver.getNumberOfButtons( mDeviceIdx );
- }
-
- /** Actual number of available axes. */
- public int getNumberOfAxes()
- {
- return DirectInputDriver.getNumberOfAxes( mDeviceIdx );
- }
-
- /** Actual number of available directional features. */
- public int getNumberOfDirectionals()
- {
- return DirectInputDriver.getNumberOfDirectionals( mDeviceIdx );
- }
-
- /** Maximum number of buttons as an upper bound for index values. */
- public int getMaxNumberOfButtons()
- {
- return DirectInputDriver.getMaxNumberOfButtons();
- }
-
- /** Maximum number of axes as an upper bound for index values. */
- public int getMaxNumberOfAxes()
- {
- return DirectInputDriver.getMaxNumberOfAxes();
- }
-
- /** Maximum number of available directional features. */
- public int getMaxNumberOfDirectionals()
- {
- return DirectInputDriver.getMaxNumberOfDirectionals();
- }
+ public String getName()
+ {
+ String name = DirectInputDriver.getName( mDeviceIdx );
+ if ( null == name )
+ return "Win32 DirectInput Joystick";
+ return name;
+ }
- public Axis getAxis(int idx)
- {
- return mAxes[ idx ];
- }
+ /** Actual number of available buttons. */
+ public int getNumberOfButtons()
+ {
+ return DirectInputDriver.getNumberOfButtons( mDeviceIdx );
+ }
- public Button getButton(int idx)
- {
- return mButtons[ idx ];
- }
+ /** Actual number of available axes. */
+ public int getNumberOfAxes()
+ {
+ return DirectInputDriver.getNumberOfAxes( mDeviceIdx );
+ }
- public Directional getDirectional(int idx)
- {
- return mDirectionals[ idx ];
- }
+ /** Actual number of available directional features. */
+ public int getNumberOfDirectionals()
+ {
+ return DirectInputDriver.getNumberOfDirectionals( mDeviceIdx );
+ }
+
+ /** Maximum number of buttons as an upper bound for index values. */
+ public int getMaxNumberOfButtons()
+ {
+ return DirectInputDriver.getMaxNumberOfButtons();
+ }
+
+ /** Maximum number of axes as an upper bound for index values. */
+ public int getMaxNumberOfAxes()
+ {
+ return DirectInputDriver.getMaxNumberOfAxes();
+ }
+
+ /** Maximum number of available directional features. */
+ public int getMaxNumberOfDirectionals()
+ {
+ return DirectInputDriver.getMaxNumberOfDirectionals();
+ }
+
+
+ public Axis getAxis(int idx)
+ {
+ return mAxes[ idx ];
+ }
+
+ public Button getButton(int idx)
+ {
+ return mButtons[ idx ];
+ }
+
+ public Directional getDirectional(int idx)
+ {
+ return mDirectionals[ idx ];
+ }
}
diff --git a/src/main/java/de/hardcode/jxinput/directinput/DirectInputDriver.java b/src/main/java/de/hardcode/jxinput/directinput/DirectInputDriver.java
index f4e4756..b643931 100644
--- a/src/main/java/de/hardcode/jxinput/directinput/DirectInputDriver.java
+++ b/src/main/java/de/hardcode/jxinput/directinput/DirectInputDriver.java
@@ -1,10 +1,10 @@
//**********************************************************************************************
-// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
-// All rights reserved. Copying, modification,
-// distribution or publication without the prior written
-// consent of the author is prohibited.
+// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
+// All rights reserved. Copying, modification,
+// distribution or publication without the prior written
+// consent of the author is prohibited.
//
-// Created on 19. Dezember 2001, 22:44
+// Created on 19. Dezember 2001, 22:44
//**********************************************************************************************
package de.hardcode.jxinput.directinput;
@@ -27,115 +27,115 @@ import com.github.boukefalos.jlibloader.Native;
*/
class DirectInputDriver
{
- private final static String NATIVE_LIB_NAME = "jxinput";
-
- /** Remember wether nativeinit() succeeded. */
- static boolean sIsOperational = false;
-
- //
- // Static arrays to hold the values.
- //
- private static double [][] sAxisValues;
- private static boolean [][] sButtonStates;
- private static int [][] sDirectionalValues;
+ private final static String NATIVE_LIB_NAME = "jxinput";
+
+ /** Remember wether nativeinit() succeeded. */
+ static boolean sIsOperational = false;
+
+ //
+ // Static arrays to hold the values.
+ //
+ private static double [][] sAxisValues;
+ private static boolean [][] sButtonStates;
+ private static int [][] sDirectionalValues;
- /**
- * Perform the static initialization.
- */
- static
- {
- try
- {
- Native.load("com.github.boukefalos", "jlibxinput");
+ /**
+ * Perform the static initialization.
+ */
+ static
+ {
+ try
+ {
+ Native.load("com.github.boukefalos", "jlibxinput");
init();
- }
- catch( SecurityException e )
- {
- Log.logger.warning("Native library jxinput not loaded due to a SecurityException.");
- }
- catch( UnsatisfiedLinkError e )
- {
- Log.logger.info("Native library jxinput not loaded due to an UnsatisfiedLinkError.");
- }
- }
-
-
+ }
+ catch( SecurityException e )
+ {
+ Log.logger.warning("Native library jxinput not loaded due to a SecurityException.");
+ }
+ catch( UnsatisfiedLinkError e )
+ {
+ Log.logger.info("Native library jxinput not loaded due to an UnsatisfiedLinkError.");
+ }
+ }
+
+
private final static void init()
{
- sIsOperational = false;
+ sIsOperational = false;
//
// Initialize it.
//
if ( nativeinit() )
{
- int devs = getNumberOfDevices();
- sAxisValues = new double [ devs ][ DirectInputDriver.getMaxNumberOfAxes() ];
- sButtonStates = new boolean [ devs ][ DirectInputDriver.getMaxNumberOfButtons() ];
- sDirectionalValues = new int [ devs ][ DirectInputDriver.getMaxNumberOfDirectionals() ];
+ int devs = getNumberOfDevices();
+ sAxisValues = new double [ devs ][ DirectInputDriver.getMaxNumberOfAxes() ];
+ sButtonStates = new boolean [ devs ][ DirectInputDriver.getMaxNumberOfButtons() ];
+ sDirectionalValues = new int [ devs ][ DirectInputDriver.getMaxNumberOfDirectionals() ];
// Bind the native lib to my variables.
bind();
// Remember I am fine.
- sIsOperational = true;
+ sIsOperational = true;
}
}
- /**
- * Static ctor of DirectInputDriver.
- * No object will be created due to the static layout.
- */
- private DirectInputDriver()
- {
- }
-
- // Administration
- private static native boolean nativeinit();
- private static native void nativeexit();
- private static native void bind();
+ /**
+ * Static ctor of DirectInputDriver.
+ * No object will be created due to the static layout.
+ */
+ private DirectInputDriver()
+ {
+ }
+
+ // Administration
+ private static native boolean nativeinit();
+ private static native void nativeexit();
+ private static native void bind();
static native int getNumberOfDevices();
- // Configuration
- static native String getName( int dev );
- static native int getNumberOfAxes( int dev );
- static native int getNumberOfButtons( int dev );
- static native int getNumberOfDirectionals( int dev );
- static native int getMaxNumberOfAxes();
- static native int getMaxNumberOfButtons();
- static native int getMaxNumberOfDirectionals();
-
- static native boolean isAxisAvailable( int dev, int idx );
- static native String getAxisName( int dev, int idx );
- static native int getAxisType( int dev, int idx );
+ // Configuration
+ static native String getName( int dev );
+ static native int getNumberOfAxes( int dev );
+ static native int getNumberOfButtons( int dev );
+ static native int getNumberOfDirectionals( int dev );
+ static native int getMaxNumberOfAxes();
+ static native int getMaxNumberOfButtons();
+ static native int getMaxNumberOfDirectionals();
+
+ static native boolean isAxisAvailable( int dev, int idx );
+ static native String getAxisName( int dev, int idx );
+ static native int getAxisType( int dev, int idx );
- static native boolean isButtonAvailable( int dev, int idx );
- static native String getButtonName( int dev, int idx );
- static native int getButtonType( int dev, int idx );
+ static native boolean isButtonAvailable( int dev, int idx );
+ static native String getButtonName( int dev, int idx );
+ static native int getButtonType( int dev, int idx );
- static native boolean isDirectionalAvailable( int dev, int idx );
- static native String getDirectionalName( int dev, int idx );
-
- // Operation
- static native void nativeupdate();
+ static native boolean isDirectionalAvailable( int dev, int idx );
+ static native String getDirectionalName( int dev, int idx );
+
+ // Operation
+ static native void nativeupdate();
-
- public static boolean isAvailable()
- {
- return sIsOperational;
- }
-
-
+
+ public static boolean isAvailable()
+ {
+ return sIsOperational;
+ }
+
+
/**
* Shutdown the device and free all Win32 resources.
* It is not a good idea to access any joystick features after
* shutdown().
*/
- static void shutdown()
- {
- nativeexit();
+ static void shutdown()
+ {
+ nativeexit();
sAxisValues = null;
sButtonStates = null;
sDirectionalValues = null;
@@ -145,40 +145,40 @@ class DirectInputDriver
/**
* Reset the device and free all Win32 resources.
*/
- static void reset()
- {
- shutdown();
+ static void reset()
+ {
+ shutdown();
init();
}
-
- static double getAxisValue( int dev, int idx )
- {
- return sAxisValues[ dev ][ idx ];
- }
-
- static boolean getButtonState( int dev, int idx )
- {
- return sButtonStates[ dev ][ idx ];
- }
+
+ static double getAxisValue( int dev, int idx )
+ {
+ return sAxisValues[ dev ][ idx ];
+ }
+
+ static boolean getButtonState( int dev, int idx )
+ {
+ return sButtonStates[ dev ][ idx ];
+ }
- static int getDirection( int dev, int idx )
- {
- return sDirectionalValues[ dev ][ idx ];
- }
+ static int getDirection( int dev, int idx )
+ {
+ return sDirectionalValues[ dev ][ idx ];
+ }
/**
* @param args the command line arguments
*/
public static void main (String args[])
- {
+ {
- if ( ! sIsOperational )
- return;
-
- for( int i = 0; i < 5000; ++i )
- nativeupdate();
+ if ( ! sIsOperational )
+ return;
+
+ for( int i = 0; i < 5000; ++i )
+ nativeupdate();
- shutdown();
- }
+ shutdown();
+ }
}
diff --git a/src/main/java/de/hardcode/jxinput/directinput/Log.java b/src/main/java/de/hardcode/jxinput/directinput/Log.java
index 95e586c..bd04bca 100644
--- a/src/main/java/de/hardcode/jxinput/directinput/Log.java
+++ b/src/main/java/de/hardcode/jxinput/directinput/Log.java
@@ -1,8 +1,8 @@
//**********************************************************************************************
-// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
-// All rights reserved. Copying, modification,
-// distribution or publication without the prior written
-// consent of the author is prohibited.
+// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
+// All rights reserved. Copying, modification,
+// distribution or publication without the prior written
+// consent of the author is prohibited.
//
// Created on 29. Oktober 2002, 22:57
//**********************************************************************************************
diff --git a/src/main/java/de/hardcode/jxinput/event/JXInputAxisEvent.java b/src/main/java/de/hardcode/jxinput/event/JXInputAxisEvent.java
index c353b5e..dd70dbc 100644
--- a/src/main/java/de/hardcode/jxinput/event/JXInputAxisEvent.java
+++ b/src/main/java/de/hardcode/jxinput/event/JXInputAxisEvent.java
@@ -1,10 +1,10 @@
//**********************************************************************************************
-// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
-// All rights reserved. Copying, modification,
-// distribution or publication without the prior written
-// consent of the author is prohibited.
+// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
+// All rights reserved. Copying, modification,
+// distribution or publication without the prior written
+// consent of the author is prohibited.
//
-// Created on 31. Januar 2002, 23:33
+// Created on 31. Januar 2002, 23:33
//**********************************************************************************************
package de.hardcode.jxinput.event;
@@ -18,15 +18,15 @@ import de.hardcode.jxinput.Axis;
public class JXInputAxisEvent
{
private final Axis mAxis;
- double mDelta;
-
- /**
+ double mDelta;
+
+ /**
* Creates a new instance of JXInputEvent.
- */
- JXInputAxisEvent( Axis axis )
- {
+ */
+ JXInputAxisEvent( Axis axis )
+ {
mAxis = axis;
- }
+ }
/**
* The feature that caused the event.
diff --git a/src/main/java/de/hardcode/jxinput/event/JXInputAxisEventListener.java b/src/main/java/de/hardcode/jxinput/event/JXInputAxisEventListener.java
index d8adf46..61bb392 100644
--- a/src/main/java/de/hardcode/jxinput/event/JXInputAxisEventListener.java
+++ b/src/main/java/de/hardcode/jxinput/event/JXInputAxisEventListener.java
@@ -1,10 +1,10 @@
//**********************************************************************************************
-// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
-// All rights reserved. Copying, modification,
-// distribution or publication without the prior written
-// consent of the author is prohibited.
+// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
+// All rights reserved. Copying, modification,
+// distribution or publication without the prior written
+// consent of the author is prohibited.
//
-// Created on 31. Januar 2002, 23:54
+// Created on 31. Januar 2002, 23:54
//**********************************************************************************************
package de.hardcode.jxinput.event;
@@ -14,6 +14,6 @@ package de.hardcode.jxinput.event;
*/
public interface JXInputAxisEventListener
{
- void changed( JXInputAxisEvent ev );
+ void changed( JXInputAxisEvent ev );
}
diff --git a/src/main/java/de/hardcode/jxinput/event/JXInputButtonEvent.java b/src/main/java/de/hardcode/jxinput/event/JXInputButtonEvent.java
index d82d0b9..32b3182 100644
--- a/src/main/java/de/hardcode/jxinput/event/JXInputButtonEvent.java
+++ b/src/main/java/de/hardcode/jxinput/event/JXInputButtonEvent.java
@@ -1,10 +1,10 @@
//**********************************************************************************************
-// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
-// All rights reserved. Copying, modification,
-// distribution or publication without the prior written
-// consent of the author is prohibited.
+// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
+// All rights reserved. Copying, modification,
+// distribution or publication without the prior written
+// consent of the author is prohibited.
//
-// Created on 31. Januar 2002, 23:33
+// Created on 31. Januar 2002, 23:33
//**********************************************************************************************
package de.hardcode.jxinput.event;
@@ -18,14 +18,14 @@ import de.hardcode.jxinput.Button;
public class JXInputButtonEvent
{
final Button mButton;
-
- /**
+
+ /**
* Creates a new instance of JXInputEvent.
- */
- JXInputButtonEvent( Button button )
- {
- mButton = button;
- }
+ */
+ JXInputButtonEvent( Button button )
+ {
+ mButton = button;
+ }
/**
* The feature that caused the event.
diff --git a/src/main/java/de/hardcode/jxinput/event/JXInputButtonEventListener.java b/src/main/java/de/hardcode/jxinput/event/JXInputButtonEventListener.java
index afdc323..e0dbd78 100644
--- a/src/main/java/de/hardcode/jxinput/event/JXInputButtonEventListener.java
+++ b/src/main/java/de/hardcode/jxinput/event/JXInputButtonEventListener.java
@@ -1,10 +1,10 @@
//**********************************************************************************************
-// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
-// All rights reserved. Copying, modification,
-// distribution or publication without the prior written
-// consent of the author is prohibited.
+// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
+// All rights reserved. Copying, modification,
+// distribution or publication without the prior written
+// consent of the author is prohibited.
//
-// Created on 31. Januar 2002, 23:54
+// Created on 31. Januar 2002, 23:54
//**********************************************************************************************
package de.hardcode.jxinput.event;
@@ -14,6 +14,6 @@ package de.hardcode.jxinput.event;
*/
public interface JXInputButtonEventListener
{
- void changed( JXInputButtonEvent ev );
+ void changed( JXInputButtonEvent ev );
}
diff --git a/src/main/java/de/hardcode/jxinput/event/JXInputDirectionalEvent.java b/src/main/java/de/hardcode/jxinput/event/JXInputDirectionalEvent.java
index 70e6bcd..f046604 100644
--- a/src/main/java/de/hardcode/jxinput/event/JXInputDirectionalEvent.java
+++ b/src/main/java/de/hardcode/jxinput/event/JXInputDirectionalEvent.java
@@ -1,10 +1,10 @@
//**********************************************************************************************
-// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
-// All rights reserved. Copying, modification,
-// distribution or publication without the prior written
-// consent of the author is prohibited.
+// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
+// All rights reserved. Copying, modification,
+// distribution or publication without the prior written
+// consent of the author is prohibited.
//
-// Created on 31. Januar 2002, 23:33
+// Created on 31. Januar 2002, 23:33
//**********************************************************************************************
package de.hardcode.jxinput.event;
@@ -18,16 +18,16 @@ import de.hardcode.jxinput.Directional;
public class JXInputDirectionalEvent
{
private final Directional mDirectional;
- double mValueDelta;
- int mDirectionDelta;
-
- /**
+ double mValueDelta;
+ int mDirectionDelta;
+
+ /**
* Creates a new instance of JXInputEvent.
- */
- JXInputDirectionalEvent( Directional directional )
- {
- mDirectional = directional;
- }
+ */
+ JXInputDirectionalEvent( Directional directional )
+ {
+ mDirectional = directional;
+ }
/**
* The feature that caused the event.
@@ -45,7 +45,7 @@ public class JXInputDirectionalEvent
return mValueDelta;
}
- /**
+ /**
* Return the change in direction that caused the event.
*/
public int getDirectionDelta()
diff --git a/src/main/java/de/hardcode/jxinput/event/JXInputDirectionalEventListener.java b/src/main/java/de/hardcode/jxinput/event/JXInputDirectionalEventListener.java
index 65c7efa..06a5a41 100644
--- a/src/main/java/de/hardcode/jxinput/event/JXInputDirectionalEventListener.java
+++ b/src/main/java/de/hardcode/jxinput/event/JXInputDirectionalEventListener.java
@@ -1,10 +1,10 @@
//**********************************************************************************************
-// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
-// All rights reserved. Copying, modification,
-// distribution or publication without the prior written
-// consent of the author is prohibited.
+// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
+// All rights reserved. Copying, modification,
+// distribution or publication without the prior written
+// consent of the author is prohibited.
//
-// Created on 31. Januar 2002, 23:54
+// Created on 31. Januar 2002, 23:54
//**********************************************************************************************
package de.hardcode.jxinput.event;
@@ -14,6 +14,6 @@ package de.hardcode.jxinput.event;
*/
public interface JXInputDirectionalEventListener
{
- void changed( JXInputDirectionalEvent ev );
+ void changed( JXInputDirectionalEvent ev );
}
diff --git a/src/main/java/de/hardcode/jxinput/event/JXInputEventManager.java b/src/main/java/de/hardcode/jxinput/event/JXInputEventManager.java
index aa196d7..42d9749 100644
--- a/src/main/java/de/hardcode/jxinput/event/JXInputEventManager.java
+++ b/src/main/java/de/hardcode/jxinput/event/JXInputEventManager.java
@@ -1,10 +1,10 @@
//**********************************************************************************************
-// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
-// All rights reserved. Copying, modification,
-// distribution or publication without the prior written
-// consent of the author is prohibited.
+// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
+// All rights reserved. Copying, modification,
+// distribution or publication without the prior written
+// consent of the author is prohibited.
//
-// Created on 31. Januar 2002, 23:42
+// Created on 31. Januar 2002, 23:42
//**********************************************************************************************
package de.hardcode.jxinput.event;
@@ -24,13 +24,13 @@ import de.hardcode.jxinput.Directional;
*/
public class JXInputEventManager
{
-
- private final static ArrayList mAxisEventListeners = new ArrayList();
- private final static ArrayList mButtonEventListeners = new ArrayList();
- private final static ArrayList mDirectionalEventListeners = new ArrayList();
+
+ private final static ArrayList mAxisEventListeners = new ArrayList();
+ private final static ArrayList mButtonEventListeners = new ArrayList();
+ private final static ArrayList mDirectionalEventListeners = new ArrayList();
- private static autotrigger mAutoTrigger = null;
-
+ private static autotrigger mAutoTrigger = null;
+
/**
* Inner class combining a listener with its scheduling parameters.
*/
@@ -39,29 +39,29 @@ public class JXInputEventManager
final JXInputAxisEventListener mListener;
final double mTreshold;
final JXInputAxisEvent mEvent;
- double mLastValueFired = 0.0;
+ double mLastValueFired = 0.0;
- axislistener( JXInputAxisEventListener l, Axis axis, double treshold )
+ axislistener( JXInputAxisEventListener l, Axis axis, double treshold )
{
mListener = l;
mTreshold = treshold;
- mEvent = new JXInputAxisEvent( axis );
+ mEvent = new JXInputAxisEvent( axis );
}
-
- final void checkTrigger()
- {
- double curval = mEvent.getAxis().getValue();
- double delta = curval - mLastValueFired;
+
+ final void checkTrigger()
+ {
+ double curval = mEvent.getAxis().getValue();
+ double delta = curval - mLastValueFired;
- if ( Math.abs( delta ) >= mTreshold )
- {
- mLastValueFired = curval;
- mEvent.mDelta = delta;
- mListener.changed( mEvent );
- }
- }
- }
-
+ if ( Math.abs( delta ) >= mTreshold )
+ {
+ mLastValueFired = curval;
+ mEvent.mDelta = delta;
+ mListener.changed( mEvent );
+ }
+ }
+ }
+
/**
* Inner class combining a listener with its scheduling parameters.
*/
@@ -69,142 +69,142 @@ public class JXInputEventManager
{
final JXInputButtonEventListener mListener;
final JXInputButtonEvent mEvent;
- boolean mLastValueFired = false;
+ boolean mLastValueFired = false;
- buttonlistener( JXInputButtonEventListener l, Button button )
+ buttonlistener( JXInputButtonEventListener l, Button button )
{
mListener = l;
- mEvent = new JXInputButtonEvent( button );
+ mEvent = new JXInputButtonEvent( button );
}
-
- final void checkTrigger()
- {
- boolean curstate = mEvent.getButton().getState();
- if ( curstate != mLastValueFired )
- {
- mLastValueFired = curstate;
- mListener.changed( mEvent );
- }
- }
- }
-
+
+ final void checkTrigger()
+ {
+ boolean curstate = mEvent.getButton().getState();
+ if ( curstate != mLastValueFired )
+ {
+ mLastValueFired = curstate;
+ mListener.changed( mEvent );
+ }
+ }
+ }
+
private static class directionallistener
{
final JXInputDirectionalEventListener mListener;
final double mValueTreshold;
final JXInputDirectionalEvent mEvent;
- double mLastValueFired = 0.0;
- boolean mLastCenteredFired = true;
- int mLastDirectionFired = 0;
-
- directionallistener( JXInputDirectionalEventListener l, Directional directional, double valuetreshold )
+ double mLastValueFired = 0.0;
+ boolean mLastCenteredFired = true;
+ int mLastDirectionFired = 0;
+
+ directionallistener( JXInputDirectionalEventListener l, Directional directional, double valuetreshold )
{
mListener = l;
mValueTreshold = valuetreshold;
- mEvent = new JXInputDirectionalEvent( directional );
+ mEvent = new JXInputDirectionalEvent( directional );
}
-
- final void checkTrigger()
- {
- double curval = mEvent.getDirectional().getValue();
- int curdir = mEvent.getDirectional().getDirection();
- boolean curctr = mEvent.getDirectional().isCentered();
-
- double delta = curval - mLastValueFired;
- int dirdelta = curdir - mLastDirectionFired;
- boolean centeredchanged = mLastCenteredFired != curctr;
+
+ final void checkTrigger()
+ {
+ double curval = mEvent.getDirectional().getValue();
+ int curdir = mEvent.getDirectional().getDirection();
+ boolean curctr = mEvent.getDirectional().isCentered();
+
+ double delta = curval - mLastValueFired;
+ int dirdelta = curdir - mLastDirectionFired;
+ boolean centeredchanged = mLastCenteredFired != curctr;
- if ( Math.abs( delta ) >= mValueTreshold
- || Math.abs( dirdelta ) > 0
- || centeredchanged )
- {
- mLastValueFired = curval;
- mLastDirectionFired = curdir;
- mLastCenteredFired = curctr;
-
- mEvent.mValueDelta = delta;
- mEvent.mDirectionDelta = dirdelta;
- mListener.changed( mEvent );
- }
- }
- }
-
- /**
- * Creates a new instance of JXInputEventManager.
- */
- private JXInputEventManager()
- {
- }
+ if ( Math.abs( delta ) >= mValueTreshold
+ || Math.abs( dirdelta ) > 0
+ || centeredchanged )
+ {
+ mLastValueFired = curval;
+ mLastDirectionFired = curdir;
+ mLastCenteredFired = curctr;
+
+ mEvent.mValueDelta = delta;
+ mEvent.mDirectionDelta = dirdelta;
+ mListener.changed( mEvent );
+ }
+ }
+ }
+
+ /**
+ * Creates a new instance of JXInputEventManager.
+ */
+ private JXInputEventManager()
+ {
+ }
+
+
+ /**
+ * Remove all listeners at once.
+ */
+ public static void reset()
+ {
+ mAxisEventListeners.clear();
+ mButtonEventListeners.clear();
+ mDirectionalEventListeners.clear();
+ }
+
-
- /**
- * Remove all listeners at once.
- */
- public static void reset()
- {
- mAxisEventListeners.clear();
- mButtonEventListeners.clear();
- mDirectionalEventListeners.clear();
- }
-
-
/**
* Query devices and fire all occuring events.
* trigger() is thought to be called by JXInputManager#updateFeatures().
*/
public static void trigger()
{
- int n = mAxisEventListeners.size();
- for ( int i = 0; i < n; i++ )
- {
- axislistener l = (axislistener)mAxisEventListeners.get( i );
- l.checkTrigger();
- }
+ int n = mAxisEventListeners.size();
+ for ( int i = 0; i < n; i++ )
+ {
+ axislistener l = (axislistener)mAxisEventListeners.get( i );
+ l.checkTrigger();
+ }
- n = mButtonEventListeners.size();
- for ( int i = 0; i < n; i++ )
- {
- buttonlistener l = (buttonlistener)mButtonEventListeners.get( i );
- l.checkTrigger();
- }
+ n = mButtonEventListeners.size();
+ for ( int i = 0; i < n; i++ )
+ {
+ buttonlistener l = (buttonlistener)mButtonEventListeners.get( i );
+ l.checkTrigger();
+ }
- n = mDirectionalEventListeners.size();
- for ( int i = 0; i < n; i++ )
- {
- directionallistener l = (directionallistener)mDirectionalEventListeners.get( i );
- l.checkTrigger();
- }
- }
-
-
- private final static class autotrigger extends Thread
- {
- boolean mFinish = false;
- final int mDelay;
-
- autotrigger( int delay )
- {
- mDelay = delay;
- }
-
- public void run()
- {
- while ( ! mFinish )
- {
- try
- {
- Thread.sleep( mDelay );
- JXInputManager.updateFeatures();
- }
- catch ( InterruptedException ex )
- {
- }
- }
- }
- }
-
-
+ n = mDirectionalEventListeners.size();
+ for ( int i = 0; i < n; i++ )
+ {
+ directionallistener l = (directionallistener)mDirectionalEventListeners.get( i );
+ l.checkTrigger();
+ }
+ }
+
+
+ private final static class autotrigger extends Thread
+ {
+ boolean mFinish = false;
+ final int mDelay;
+
+ autotrigger( int delay )
+ {
+ mDelay = delay;
+ }
+
+ public void run()
+ {
+ while ( ! mFinish )
+ {
+ try
+ {
+ Thread.sleep( mDelay );
+ JXInputManager.updateFeatures();
+ }
+ catch ( InterruptedException ex )
+ {
+ }
+ }
+ }
+ }
+
+
/**
* Set the intervall in ms that is used to check for new values of the features.
* Set it to <= 0 to prohibit automatic triggering. Events will then only be fired
@@ -212,30 +212,30 @@ public class JXInputEventManager
*/
public static void setTriggerIntervall( int ms )
{
- //
- // Kill current thread, if any
- //
- if ( null != mAutoTrigger )
- {
- mAutoTrigger.mFinish = true;
- try
- {
- mAutoTrigger.join();
- }
- catch ( InterruptedException ex )
- {
- }
- }
-
- mAutoTrigger = null;
-
- if ( ms > 0 )
- {
- mAutoTrigger = new autotrigger( ms );
- mAutoTrigger.start();
- }
+ //
+ // Kill current thread, if any
+ //
+ if ( null != mAutoTrigger )
+ {
+ mAutoTrigger.mFinish = true;
+ try
+ {
+ mAutoTrigger.join();
+ }
+ catch ( InterruptedException ex )
+ {
+ }
+ }
+
+ mAutoTrigger = null;
+
+ if ( ms > 0 )
+ {
+ mAutoTrigger = new autotrigger( ms );
+ mAutoTrigger.start();
+ }
- }
+ }
@@ -245,40 +245,40 @@ public class JXInputEventManager
mAxisEventListeners.add( new JXInputEventManager.axislistener( l, axis, treshold ) );
}
- public static void addListener( JXInputAxisEventListener l, Axis axis )
+ public static void addListener( JXInputAxisEventListener l, Axis axis )
{
mAxisEventListeners.add( new JXInputEventManager.axislistener( l, axis, axis.getResolution() ) );
}
- public static void removeListener( JXInputAxisEventListener l )
- {
- mAxisEventListeners.remove( l );
- }
-
-
- public static void addListener( JXInputButtonEventListener l, Button button )
+ public static void removeListener( JXInputAxisEventListener l )
+ {
+ mAxisEventListeners.remove( l );
+ }
+
+
+ public static void addListener( JXInputButtonEventListener l, Button button )
{
mButtonEventListeners.add( new JXInputEventManager.buttonlistener( l, button ) );
}
-
- public static void removeListener( JXInputButtonEventListener l )
- {
- mButtonEventListeners.remove( l );
- }
+
+ public static void removeListener( JXInputButtonEventListener l )
+ {
+ mButtonEventListeners.remove( l );
+ }
- public static void addListener( JXInputDirectionalEventListener l, Directional directional, double valuetreshold )
+ public static void addListener( JXInputDirectionalEventListener l, Directional directional, double valuetreshold )
{
mDirectionalEventListeners.add( new JXInputEventManager.directionallistener( l, directional, valuetreshold ) );
}
-
- public static void addListener( JXInputDirectionalEventListener l, Directional directional )
+
+ public static void addListener( JXInputDirectionalEventListener l, Directional directional )
{
mDirectionalEventListeners.add( new JXInputEventManager.directionallistener( l, directional, directional.getResolution() ) );
}
- public static void removeListener( JXInputDirectionalEventListener l )
- {
- mDirectionalEventListeners.remove( l );
- }
+ public static void removeListener( JXInputDirectionalEventListener l )
+ {
+ mDirectionalEventListeners.remove( l );
+ }
}
diff --git a/src/main/java/de/hardcode/jxinput/j3d/DeviceConfiguration.java b/src/main/java/de/hardcode/jxinput/j3d/DeviceConfiguration.java
index 8c1288a..c00ee41 100644
--- a/src/main/java/de/hardcode/jxinput/j3d/DeviceConfiguration.java
+++ b/src/main/java/de/hardcode/jxinput/j3d/DeviceConfiguration.java
@@ -1,10 +1,10 @@
//**********************************************************************************************
-// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
-// All rights reserved. Copying, modification,
-// distribution or publication without the prior written
-// consent of the author is prohibited.
+// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
+// All rights reserved. Copying, modification,
+// distribution or publication without the prior written
+// consent of the author is prohibited.
//
-// Created on 23. Februar 2002, 14:05
+// Created on 23. Februar 2002, 14:05
//**********************************************************************************************
package de.hardcode.jxinput.j3d;
@@ -18,78 +18,78 @@ import de.hardcode.jxinput.Axis;
*/
public class DeviceConfiguration
{
- public final static int AXIS_X = 0;
- public final static int AXIS_Y = 1;
- public final static int AXIS_Z = 2;
-
- private final static class axisvalue
- {
- private final Axis mAxis;
- private final IsActiveCondition mIsActive;
- private final IsActiveCondition mIsIncremental;
- private final double mScale;
- private final double mOffset;
- private double mValue;
-
- axisvalue( Axis axis, IsActiveCondition active, IsActiveCondition incremental, double offset, double scale )
- {
- mAxis = axis;
- mIsActive = active;
- mIsIncremental = incremental;
- mValue = mOffset = offset;
- mScale = scale;
- }
-
- double value()
- {
- if ( mIsActive.isActive() )
- {
- double newval = mAxis.getValue() * mScale;
-
- if ( mIsIncremental.isActive() )
- mValue += newval;
- else
- mValue = newval + mOffset;
- }
- return mValue;
- }
- }
+ public final static int AXIS_X = 0;
+ public final static int AXIS_Y = 1;
+ public final static int AXIS_Z = 2;
+
+ private final static class axisvalue
+ {
+ private final Axis mAxis;
+ private final IsActiveCondition mIsActive;
+ private final IsActiveCondition mIsIncremental;
+ private final double mScale;
+ private final double mOffset;
+ private double mValue;
+
+ axisvalue( Axis axis, IsActiveCondition active, IsActiveCondition incremental, double offset, double scale )
+ {
+ mAxis = axis;
+ mIsActive = active;
+ mIsIncremental = incremental;
+ mValue = mOffset = offset;
+ mScale = scale;
+ }
+
+ double value()
+ {
+ if ( mIsActive.isActive() )
+ {
+ double newval = mAxis.getValue() * mScale;
+
+ if ( mIsIncremental.isActive() )
+ mValue += newval;
+ else
+ mValue = newval + mOffset;
+ }
+ return mValue;
+ }
+ }
- DeviceConfiguration.axisvalue [] mAxisTrans = new DeviceConfiguration.axisvalue[ 3 ];
- DeviceConfiguration.axisvalue [] mAxisRot = new DeviceConfiguration.axisvalue[ 3 ];
-
- /**
- * Creates a new instance of DeviceConfiguration.
- */
- public DeviceConfiguration()
- {
- }
-
-
- double getTranslational( int axisid )
- {
- DeviceConfiguration.axisvalue val = mAxisTrans[ axisid ];
- return null == val ? 0.0 : val.value();
- }
-
- double getRotational( int axisid )
- {
- DeviceConfiguration.axisvalue val = mAxisRot[ axisid ];
- return null == val ? 0.0 : val.value();
- }
+ DeviceConfiguration.axisvalue [] mAxisTrans = new DeviceConfiguration.axisvalue[ 3 ];
+ DeviceConfiguration.axisvalue [] mAxisRot = new DeviceConfiguration.axisvalue[ 3 ];
+
+ /**
+ * Creates a new instance of DeviceConfiguration.
+ */
+ public DeviceConfiguration()
+ {
+ }
+
+
+ double getTranslational( int axisid )
+ {
+ DeviceConfiguration.axisvalue val = mAxisTrans[ axisid ];
+ return null == val ? 0.0 : val.value();
+ }
+
+ double getRotational( int axisid )
+ {
+ DeviceConfiguration.axisvalue val = mAxisRot[ axisid ];
+ return null == val ? 0.0 : val.value();
+ }
- public void setTranslational( int axisid, Axis axis, IsActiveCondition active, IsActiveCondition incremental, double offset, double scale )
- {
- if ( axisid < 0 || axisid > AXIS_Z )
- throw new IllegalArgumentException();
- mAxisTrans[ axisid ] = new DeviceConfiguration.axisvalue( axis, active, incremental, offset, scale );
- }
+ public void setTranslational( int axisid, Axis axis, IsActiveCondition active, IsActiveCondition incremental, double offset, double scale )
+ {
+ if ( axisid < 0 || axisid > AXIS_Z )
+ throw new IllegalArgumentException();
+ mAxisTrans[ axisid ] = new DeviceConfiguration.axisvalue( axis, active, incremental, offset, scale );
+ }
- public void setRotational( int axisid, Axis axis, IsActiveCondition active, IsActiveCondition incremental, double offset, double scale )
- {
- if ( axisid < 0 || axisid > AXIS_Z )
- throw new IllegalArgumentException();
- mAxisRot[ axisid ] = new DeviceConfiguration.axisvalue( axis, active, incremental, offset, scale );
- }
-
+ public void setRotational( int axisid, Axis axis, IsActiveCondition active, IsActiveCondition incremental, double offset, double scale )
+ {
+ if ( axisid < 0 || axisid > AXIS_Z )
+ throw new IllegalArgumentException();
+ mAxisRot[ axisid ] = new DeviceConfiguration.axisvalue( axis, active, incremental, offset, scale );
+ }
+
}
diff --git a/src/main/java/de/hardcode/jxinput/j3d/IsActiveCondition.java b/src/main/java/de/hardcode/jxinput/j3d/IsActiveCondition.java
index af6ca08..b0777e1 100644
--- a/src/main/java/de/hardcode/jxinput/j3d/IsActiveCondition.java
+++ b/src/main/java/de/hardcode/jxinput/j3d/IsActiveCondition.java
@@ -1,10 +1,10 @@
//**********************************************************************************************
-// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
-// All rights reserved. Copying, modification,
-// distribution or publication without the prior written
-// consent of the author is prohibited.
+// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
+// All rights reserved. Copying, modification,
+// distribution or publication without the prior written
+// consent of the author is prohibited.
//
-// Created on 25. Februar 2002, 22:41
+// Created on 25. Februar 2002, 22:41
//**********************************************************************************************
package de.hardcode.jxinput.j3d;
@@ -14,12 +14,12 @@ package de.hardcode.jxinput.j3d;
*/
public interface IsActiveCondition
{
- public final static IsActiveCondition ALWAYS = IsAlwaysActiveCondition.ALWAYS;
- public final static IsActiveCondition NEVER = IsAlwaysActiveCondition.NEVER;
+ public final static IsActiveCondition ALWAYS = IsAlwaysActiveCondition.ALWAYS;
+ public final static IsActiveCondition NEVER = IsAlwaysActiveCondition.NEVER;
- /**
- * Tell wether a certain thing is active.
- */
- boolean isActive();
+ /**
+ * Tell wether a certain thing is active.
+ */
+ boolean isActive();
}
diff --git a/src/main/java/de/hardcode/jxinput/j3d/IsActiveOnButtonCondition.java b/src/main/java/de/hardcode/jxinput/j3d/IsActiveOnButtonCondition.java
index 98da7bb..32eef8b 100644
--- a/src/main/java/de/hardcode/jxinput/j3d/IsActiveOnButtonCondition.java
+++ b/src/main/java/de/hardcode/jxinput/j3d/IsActiveOnButtonCondition.java
@@ -1,10 +1,10 @@
//**********************************************************************************************
-// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
-// All rights reserved. Copying, modification,
-// distribution or publication without the prior written
-// consent of the author is prohibited.
+// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
+// All rights reserved. Copying, modification,
+// distribution or publication without the prior written
+// consent of the author is prohibited.
//
-// Created on 25. Februar 2002, 22:43
+// Created on 25. Februar 2002, 22:43
//**********************************************************************************************
package de.hardcode.jxinput.j3d;
@@ -15,25 +15,25 @@ import de.hardcode.jxinput.Button;
* @author Herkules
*/
public class IsActiveOnButtonCondition implements IsActiveCondition
-{
- private final boolean mActiveState;
- private final Button mButton;
-
- /**
- * Creates a new instance of IsAlwayActiveCondition.
- */
- public IsActiveOnButtonCondition( Button button, boolean activestate )
- {
- mActiveState = activestate;
- mButton = button;
- }
-
- /**
- * Tell wether a certain thing is active.
- */
- public boolean isActive()
- {
- return mButton.getState() == mActiveState;
- }
-
+{
+ private final boolean mActiveState;
+ private final Button mButton;
+
+ /**
+ * Creates a new instance of IsAlwayActiveCondition.
+ */
+ public IsActiveOnButtonCondition( Button button, boolean activestate )
+ {
+ mActiveState = activestate;
+ mButton = button;
+ }
+
+ /**
+ * Tell wether a certain thing is active.
+ */
+ public boolean isActive()
+ {
+ return mButton.getState() == mActiveState;
+ }
+
}
diff --git a/src/main/java/de/hardcode/jxinput/j3d/IsAlwaysActiveCondition.java b/src/main/java/de/hardcode/jxinput/j3d/IsAlwaysActiveCondition.java
index cd8b1fe..b3ed1ed 100644
--- a/src/main/java/de/hardcode/jxinput/j3d/IsAlwaysActiveCondition.java
+++ b/src/main/java/de/hardcode/jxinput/j3d/IsAlwaysActiveCondition.java
@@ -1,10 +1,10 @@
//**********************************************************************************************
-// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
-// All rights reserved. Copying, modification,
-// distribution or publication without the prior written
-// consent of the author is prohibited.
+// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
+// All rights reserved. Copying, modification,
+// distribution or publication without the prior written
+// consent of the author is prohibited.
//
-// Created on 25. Februar 2002, 22:43
+// Created on 25. Februar 2002, 22:43
//**********************************************************************************************
package de.hardcode.jxinput.j3d;
@@ -14,25 +14,25 @@ package de.hardcode.jxinput.j3d;
*/
final class IsAlwaysActiveCondition implements IsActiveCondition
{
- private final boolean mIsActive;
-
- public final static IsActiveCondition ALWAYS = new IsAlwaysActiveCondition( true );
- public final static IsActiveCondition NEVER = new IsAlwaysActiveCondition( false );
-
- /**
- * Creates a new instance of IsAlwayActiveCondition.
- */
- private IsAlwaysActiveCondition(boolean isactive)
- {
- mIsActive = isactive;
- }
-
- /**
- * Tell wether a certain thing is active.
- */
- public boolean isActive()
- {
- return mIsActive;
- }
-
+ private final boolean mIsActive;
+
+ public final static IsActiveCondition ALWAYS = new IsAlwaysActiveCondition( true );
+ public final static IsActiveCondition NEVER = new IsAlwaysActiveCondition( false );
+
+ /**
+ * Creates a new instance of IsAlwayActiveCondition.
+ */
+ private IsAlwaysActiveCondition(boolean isactive)
+ {
+ mIsActive = isactive;
+ }
+
+ /**
+ * Tell wether a certain thing is active.
+ */
+ public boolean isActive()
+ {
+ return mIsActive;
+ }
+
}
diff --git a/src/main/java/de/hardcode/jxinput/j3d/J3DInputDevice.java b/src/main/java/de/hardcode/jxinput/j3d/J3DInputDevice.java
index f5b08f2..7508475 100644
--- a/src/main/java/de/hardcode/jxinput/j3d/J3DInputDevice.java
+++ b/src/main/java/de/hardcode/jxinput/j3d/J3DInputDevice.java
@@ -1,10 +1,10 @@
//**********************************************************************************************
-// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
-// All rights reserved. Copying, modification,
-// distribution or publication without the prior written
-// consent of the author is prohibited.
+// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
+// All rights reserved. Copying, modification,
+// distribution or publication without the prior written
+// consent of the author is prohibited.
//
-// Created on 22. Februar 2002, 13:21
+// Created on 22. Februar 2002, 13:21
//**********************************************************************************************
package de.hardcode.jxinput.j3d;
@@ -22,121 +22,121 @@ import de.hardcode.jxinput.JXInputManager;
* @author Herkules
*/
public class J3DInputDevice
- implements InputDevice
+ implements InputDevice
{
private Vector3d mPosition = new Vector3d();
private Transform3D mNewTransform = new Transform3D();
- private Transform3D mRotTransX = new Transform3D();
+ private Transform3D mRotTransX = new Transform3D();
private Transform3D mRotTransY = new Transform3D();
private Transform3D mRotTransZ = new Transform3D();
private Vector3d mInitPos = new Vector3d( 0.0, 0.0, 0.0 );
- private Sensor mSensor = new Sensor( this );
- private SensorRead mSensorRead = new SensorRead();
-
- private DeviceConfiguration mConfig;
-
- /**
- * Creates a new instance of J3DInputDevice.
- */
- public J3DInputDevice( DeviceConfiguration config )
- {
- mConfig = config;
- setNominalPositionAndOrientation();
- }
-
-
- public void close()
- {
- // Intentionally empty
- }
-
-
- /**
- * Retrieve processing mode.
- * For this device, it always is NON_BLOCKING.
- */
- public int getProcessingMode()
- {
- return InputDevice.NON_BLOCKING;
- }
-
-
- /**
- * Don't care for the index, I only support one sensor.
- * And I deliver that.
- */
- public Sensor getSensor( int param )
- {
- return mSensor;
- }
-
+ private Sensor mSensor = new Sensor( this );
+ private SensorRead mSensorRead = new SensorRead();
+
+ private DeviceConfiguration mConfig;
+
+ /**
+ * Creates a new instance of J3DInputDevice.
+ */
+ public J3DInputDevice( DeviceConfiguration config )
+ {
+ mConfig = config;
+ setNominalPositionAndOrientation();
+ }
+
+
+ public void close()
+ {
+ // Intentionally empty
+ }
+
+
+ /**
+ * Retrieve processing mode.
+ * For this device, it always is NON_BLOCKING.
+ */
+ public int getProcessingMode()
+ {
+ return InputDevice.NON_BLOCKING;
+ }
+
+
+ /**
+ * Don't care for the index, I only support one sensor.
+ * And I deliver that.
+ */
+ public Sensor getSensor( int param )
+ {
+ return mSensor;
+ }
+
- /**
- * Tell the world about the only one sensor I support.
- */
- public int getSensorCount()
- {
- return 1;
- }
-
+ /**
+ * Tell the world about the only one sensor I support.
+ */
+ public int getSensorCount()
+ {
+ return 1;
+ }
+
- /**
- * Well - initialize!
- * Nothing to do here.
- */
- public boolean initialize()
- {
- return true;
- }
-
-
- /**
- * The main update method.
- */
- public void pollAndProcessInput()
- {
- JXInputManager.updateFeatures();
-
+ /**
+ * Well - initialize!
+ * Nothing to do here.
+ */
+ public boolean initialize()
+ {
+ return true;
+ }
+
+
+ /**
+ * The main update method.
+ */
+ public void pollAndProcessInput()
+ {
+ JXInputManager.updateFeatures();
+
mSensorRead.setTime( JXInputManager.getLastUpdateTime() );
- mRotTransX.rotX( mConfig.getRotational( DeviceConfiguration.AXIS_X ) );
+ mRotTransX.rotX( mConfig.getRotational( DeviceConfiguration.AXIS_X ) );
mRotTransY.rotY( mConfig.getRotational( DeviceConfiguration.AXIS_Y ) );
mRotTransZ.rotZ( mConfig.getRotational( DeviceConfiguration.AXIS_Z ) );
mPosition.set(
- mConfig.getTranslational( DeviceConfiguration.AXIS_X ),
- mConfig.getTranslational( DeviceConfiguration.AXIS_Y ),
- mConfig.getTranslational( DeviceConfiguration.AXIS_Z )
- );
+ mConfig.getTranslational( DeviceConfiguration.AXIS_X ),
+ mConfig.getTranslational( DeviceConfiguration.AXIS_Y ),
+ mConfig.getTranslational( DeviceConfiguration.AXIS_Z )
+ );
- mNewTransform.set( mPosition );
-
+ mNewTransform.set( mPosition );
+
mNewTransform.mul( mRotTransX );
mNewTransform.mul( mRotTransY );
mNewTransform.mul( mRotTransZ );
- mSensorRead.set( mNewTransform );
+ mSensorRead.set( mNewTransform );
mSensor.setNextSensorRead( mSensorRead );
- }
-
-
- /**
- * Not called by current j3d implementation.
- */
- public void processStreamInput()
- {
- // Intentionally empty
- }
-
-
- /**
- * Reset state.
- */
- public void setNominalPositionAndOrientation()
- {
+ }
+
+
+ /**
+ * Not called by current j3d implementation.
+ */
+ public void processStreamInput()
+ {
+ // Intentionally empty
+ }
+
+
+ /**
+ * Reset state.
+ */
+ public void setNominalPositionAndOrientation()
+ {
mSensorRead.setTime( JXInputManager.getLastUpdateTime() );
mRotTransX.rotX( 0.0 );
@@ -153,19 +153,19 @@ public class J3DInputDevice
mSensorRead.set( mNewTransform );
mSensor.setNextSensorRead( mSensorRead );
-
- }
-
-
- /**
- * Set the processing mode.
- * Only NON_BLOCKING is allowed!
- */
- public void setProcessingMode(int param)
- {
+
+ }
+
+
+ /**
+ * Set the processing mode.
+ * Only NON_BLOCKING is allowed!
+ */
+ public void setProcessingMode(int param)
+ {
if ( param != InputDevice.NON_BLOCKING )
- throw new IllegalArgumentException("Processing mode must be NON_BLOCKING");
-
- }
-
+ throw new IllegalArgumentException("Processing mode must be NON_BLOCKING");
+
+ }
+
}
diff --git a/src/main/java/de/hardcode/jxinput/keyboard/InvalidKeyCodeException.java b/src/main/java/de/hardcode/jxinput/keyboard/InvalidKeyCodeException.java
index f44ee6b..47b2979 100644
--- a/src/main/java/de/hardcode/jxinput/keyboard/InvalidKeyCodeException.java
+++ b/src/main/java/de/hardcode/jxinput/keyboard/InvalidKeyCodeException.java
@@ -1,10 +1,10 @@
//**********************************************************************************************
-// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
-// All rights reserved. Copying, modification,
-// distribution or publication without the prior written
-// consent of the author is prohibited.
+// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
+// All rights reserved. Copying, modification,
+// distribution or publication without the prior written
+// consent of the author is prohibited.
//
-// Created on 16. April 2002, 23:31
+// Created on 16. April 2002, 23:31
//**********************************************************************************************
package de.hardcode.jxinput.keyboard;
@@ -14,22 +14,22 @@ package de.hardcode.jxinput.keyboard;
* @author Herkules
*/
public class InvalidKeyCodeException
- extends IllegalArgumentException
+ extends IllegalArgumentException
{
-
- /**
- * Creates a new instance of InvalidKeyCodeException.
- */
- public InvalidKeyCodeException()
- {
- }
-
+
+ /**
+ * Creates a new instance of InvalidKeyCodeException.
+ */
+ public InvalidKeyCodeException()
+ {
+ }
+
- /**
- * Creates a new instance of InvalidKeyCodeException.
- */
- public InvalidKeyCodeException( String s )
- {
- super( s );
- }
+ /**
+ * Creates a new instance of InvalidKeyCodeException.
+ */
+ public InvalidKeyCodeException( String s )
+ {
+ super( s );
+ }
}
diff --git a/src/main/java/de/hardcode/jxinput/keyboard/JXKeyboardInputDevice.java b/src/main/java/de/hardcode/jxinput/keyboard/JXKeyboardInputDevice.java
index 858bdb7..17763c7 100644
--- a/src/main/java/de/hardcode/jxinput/keyboard/JXKeyboardInputDevice.java
+++ b/src/main/java/de/hardcode/jxinput/keyboard/JXKeyboardInputDevice.java
@@ -1,10 +1,10 @@
//**********************************************************************************************
-// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
-// All rights reserved. Copying, modification,
-// distribution or publication without the prior written
-// consent of the author is prohibited.
+// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
+// All rights reserved. Copying, modification,
+// distribution or publication without the prior written
+// consent of the author is prohibited.
//
-// Created on 9. April 2002, 22:40
+// Created on 9. April 2002, 22:40
//**********************************************************************************************
package de.hardcode.jxinput.keyboard;
@@ -19,157 +19,157 @@ import java.awt.Component;
* @author Herkules
*/
public class JXKeyboardInputDevice
- implements JXInputDevice
+ implements JXInputDevice
{
- private static final String DEVICENAME = "Swing Keyboard";
+ private static final String DEVICENAME = "Swing Keyboard";
- /** The driver doing all the real work. */
- private final KeyboardDriver mDriver = new KeyboardDriver();
+ /** The driver doing all the real work. */
+ private final KeyboardDriver mDriver = new KeyboardDriver();
- /** The Component I am listening to. */
- private Component mComponent = null;
-
- /** Hold the biggest keycode for which a button has been created. */
- private int mMaxIdxCreated = 0;
-
-
- /**
- * Creates a new instance of JXKeyboardInputDevice.
- */
- public JXKeyboardInputDevice()
- {
- }
+ /** The Component I am listening to. */
+ private Component mComponent = null;
+
+ /** Hold the biggest keycode for which a button has been created. */
+ private int mMaxIdxCreated = 0;
+
+
+ /**
+ * Creates a new instance of JXKeyboardInputDevice.
+ */
+ public JXKeyboardInputDevice()
+ {
+ }
-
- /**
- * Creates a new instance of JXKeyboardInputDevice
- * immediately listening to a JComponent.
- */
- public JXKeyboardInputDevice( Component comp )
- {
- listenTo( comp );
- }
-
- /**
- * Makes this device listen to a certain JComponent.
- */
- public final void listenTo( Component comp )
- {
- shutdown();
- mComponent = comp;
- mComponent.addKeyListener( mDriver );
- }
-
- /**
- * Shut down. No longer listen to my JComponent.
- */
- public final void shutdown()
- {
- if ( null != mComponent )
- mComponent.removeKeyListener( mDriver );
- }
-
-
- /**
- * Create a button object for a certain keycode.
- */
- public Button createButton( int keycode )
- {
- if ( 0 > keycode || 0x100 < keycode )
- throw new InvalidKeyCodeException();
+
+ /**
+ * Creates a new instance of JXKeyboardInputDevice
+ * immediately listening to a JComponent.
+ */
+ public JXKeyboardInputDevice( Component comp )
+ {
+ listenTo( comp );
+ }
+
+ /**
+ * Makes this device listen to a certain JComponent.
+ */
+ public final void listenTo( Component comp )
+ {
+ shutdown();
+ mComponent = comp;
+ mComponent.addKeyListener( mDriver );
+ }
+
+ /**
+ * Shut down. No longer listen to my JComponent.
+ */
+ public final void shutdown()
+ {
+ if ( null != mComponent )
+ mComponent.removeKeyListener( mDriver );
+ }
+
+
+ /**
+ * Create a button object for a certain keycode.
+ */
+ public Button createButton( int keycode )
+ {
+ if ( 0 > keycode || 0x100 < keycode )
+ throw new InvalidKeyCodeException();
- KeyButton b;
- if ( null == (b = mDriver.getButton( keycode ) ) )
- {
- b = new KeyButton( keycode );
- mDriver.registerKeyButton( b );
- if ( keycode > mMaxIdxCreated )
- mMaxIdxCreated = keycode;
- }
- return b;
- }
-
+ KeyButton b;
+ if ( null == (b = mDriver.getButton( keycode ) ) )
+ {
+ b = new KeyButton( keycode );
+ mDriver.registerKeyButton( b );
+ if ( keycode > mMaxIdxCreated )
+ mMaxIdxCreated = keycode;
+ }
+ return b;
+ }
+
- public void removeButton( Button b )
- {
- mDriver.unregisterKeyButton( (KeyButton) b );
- }
-
-
-
- //*********************************************************************************************
- //
- // Implement JXInputDevice
- //
- //*********************************************************************************************
-
- public Axis getAxis(int idx)
- {
- // No axes on keyboard.
- return null;
- }
-
-
- public Button getButton(int idx)
- {
- // idx is interpreted as the keycode
- return mDriver.getButton( idx );
- }
-
- public Directional getDirectional(int idx)
- {
- // No directionals on keyboard.
- return null;
- }
-
- /** Maximum number of axes as an upper bound for index values. */
- public int getMaxNumberOfAxes()
- {
- // No axes on keyboard.
- return 0;
- }
-
- /** Maximum number of buttons as an upper bound for index values. */
- public int getMaxNumberOfButtons()
- {
- // Return biggest keycode (inclusive).
- return mMaxIdxCreated + 1;
- }
-
- /** Maximum number of directional features as an upper bound for index values. */
- public int getMaxNumberOfDirectionals()
- {
- // No directionals on keyboard.
- return 0;
- }
-
- /**
- * Devices may have a name.
- * This name might be provided by a system dependant driver.
- */
- public String getName()
- {
- return DEVICENAME;
- }
-
- /** Actual number of available axes. */
- public int getNumberOfAxes()
- {
- // No axes on keyboard.
- return 0;
- }
-
- /** Actual number of available buttons. */
- public int getNumberOfButtons()
- {
- return mDriver.getNumberOfButtons();
- }
-
- /** Actual number of available directional features. */
- public int getNumberOfDirectionals()
- {
- // No directionals on keyboard.
- return 0;
- }
-
+ public void removeButton( Button b )
+ {
+ mDriver.unregisterKeyButton( (KeyButton) b );
+ }
+
+
+
+ //*********************************************************************************************
+ //
+ // Implement JXInputDevice
+ //
+ //*********************************************************************************************
+
+ public Axis getAxis(int idx)
+ {
+ // No axes on keyboard.
+ return null;
+ }
+
+
+ public Button getButton(int idx)
+ {
+ // idx is interpreted as the keycode
+ return mDriver.getButton( idx );
+ }
+
+ public Directional getDirectional(int idx)
+ {
+ // No directionals on keyboard.
+ return null;
+ }
+
+ /** Maximum number of axes as an upper bound for index values. */
+ public int getMaxNumberOfAxes()
+ {
+ // No axes on keyboard.
+ return 0;
+ }
+
+ /** Maximum number of buttons as an upper bound for index values. */
+ public int getMaxNumberOfButtons()
+ {
+ // Return biggest keycode (inclusive).
+ return mMaxIdxCreated + 1;
+ }
+
+ /** Maximum number of directional features as an upper bound for index values. */
+ public int getMaxNumberOfDirectionals()
+ {
+ // No directionals on keyboard.
+ return 0;
+ }
+
+ /**
+ * Devices may have a name.
+ * This name might be provided by a system dependant driver.
+ */
+ public String getName()
+ {
+ return DEVICENAME;
+ }
+
+ /** Actual number of available axes. */
+ public int getNumberOfAxes()
+ {
+ // No axes on keyboard.
+ return 0;
+ }
+
+ /** Actual number of available buttons. */
+ public int getNumberOfButtons()
+ {
+ return mDriver.getNumberOfButtons();
+ }
+
+ /** Actual number of available directional features. */
+ public int getNumberOfDirectionals()
+ {
+ // No directionals on keyboard.
+ return 0;
+ }
+
}
diff --git a/src/main/java/de/hardcode/jxinput/keyboard/KeyButton.java b/src/main/java/de/hardcode/jxinput/keyboard/KeyButton.java
index 3fd7130..fd22dd2 100644
--- a/src/main/java/de/hardcode/jxinput/keyboard/KeyButton.java
+++ b/src/main/java/de/hardcode/jxinput/keyboard/KeyButton.java
@@ -1,10 +1,10 @@
//**********************************************************************************************
-// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
-// All rights reserved. Copying, modification,
-// distribution or publication without the prior written
-// consent of the author is prohibited.
+// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
+// All rights reserved. Copying, modification,
+// distribution or publication without the prior written
+// consent of the author is prohibited.
//
-// Created on 9. April 2002, 22:51
+// Created on 9. April 2002, 22:51
//**********************************************************************************************
package de.hardcode.jxinput.keyboard;
@@ -18,77 +18,77 @@ import java.awt.event.KeyEvent;
* @author Herkules
*/
class KeyButton
- implements Button
+ implements Button
{
- private final int mKeyCode;
- private boolean mIsPressed;
- private boolean mHasChanged;
-
- /**
- * Creates a new instance of KeyButton.
- */
- public KeyButton( int keycode )
- {
- mKeyCode = keycode;
- }
-
-
- /**
- * Return the keycode assigned with this button.
- */
- public final int getKeyCode()
- {
- return mKeyCode;
- }
+ private final int mKeyCode;
+ private boolean mIsPressed;
+ private boolean mHasChanged;
+
+ /**
+ * Creates a new instance of KeyButton.
+ */
+ public KeyButton( int keycode )
+ {
+ mKeyCode = keycode;
+ }
+
+
+ /**
+ * Return the keycode assigned with this button.
+ */
+ public final int getKeyCode()
+ {
+ return mKeyCode;
+ }
- final void setIsPressed( boolean flag )
- {
- mIsPressed = flag;
- }
-
- //*********************************************************************************************
- //
- // Implement Button
- //
- //*********************************************************************************************
-
+ final void setIsPressed( boolean flag )
+ {
+ mIsPressed = flag;
+ }
+
+ //*********************************************************************************************
+ //
+ // Implement Button
+ //
+ //*********************************************************************************************
+
- /**
- * Features may have a name provided e.g. by the driver.
- */
- public String getName()
- {
- return KeyEvent.getKeyText( mKeyCode );
- }
-
- /**
- * Tells the state of the button at last update.
- */
- public boolean getState()
- {
- return mIsPressed;
- }
-
- /**
- * Retrieve the type of the button.
- * Pushbutton will deliver true==getState() as long as they are pressed down.
- * Togglebuttons will change their state once they are pressed and keep that state
- * until they are pressed again.
- * @return [ PUSHBUTTON | TOGGLEBUTTON ]
- */
- public int getType()
- {
- return Button.PUSHBUTTON;
- }
+ /**
+ * Features may have a name provided e.g. by the driver.
+ */
+ public String getName()
+ {
+ return KeyEvent.getKeyText( mKeyCode );
+ }
+
+ /**
+ * Tells the state of the button at last update.
+ */
+ public boolean getState()
+ {
+ return mIsPressed;
+ }
+
+ /**
+ * Retrieve the type of the button.
+ * Pushbutton will deliver true==getState() as long as they are pressed down.
+ * Togglebuttons will change their state once they are pressed and keep that state
+ * until they are pressed again.
+ * @return [ PUSHBUTTON | TOGGLEBUTTON ]
+ */
+ public int getType()
+ {
+ return Button.PUSHBUTTON;
+ }
-
- /**
- * Denote wether this feature has changed beyond it's resolution since it got last
- * updated.
- */
- public boolean hasChanged()
- {
- return true;
- }
-
+
+ /**
+ * Denote wether this feature has changed beyond it's resolution since it got last
+ * updated.
+ */
+ public boolean hasChanged()
+ {
+ return true;
+ }
+
}
diff --git a/src/main/java/de/hardcode/jxinput/keyboard/KeyboardDriver.java b/src/main/java/de/hardcode/jxinput/keyboard/KeyboardDriver.java
index 7eb6232..5750f89 100644
--- a/src/main/java/de/hardcode/jxinput/keyboard/KeyboardDriver.java
+++ b/src/main/java/de/hardcode/jxinput/keyboard/KeyboardDriver.java
@@ -1,10 +1,10 @@
//**********************************************************************************************
-// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
-// All rights reserved. Copying, modification,
-// distribution or publication without the prior written
-// consent of the author is prohibited.
+// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
+// All rights reserved. Copying, modification,
+// distribution or publication without the prior written
+// consent of the author is prohibited.
//
-// Created on 9. April 2002, 22:43
+// Created on 9. April 2002, 22:43
//**********************************************************************************************
package de.hardcode.jxinput.keyboard;
@@ -23,119 +23,119 @@ import java.security.InvalidParameterException;
*/
class KeyboardDriver implements KeyListener
{
-// HashMap mKeysToObserveMap = new HashMap();
-
- int mNumberOfKeysObserved = 0;
- KeyButton [] mKeysObserved = new KeyButton [ 0x100 ];
-
-
- /**
- * Creates a new instance of KeyboardDriver.
- */
- public KeyboardDriver()
- {
- }
+// HashMap mKeysToObserveMap = new HashMap();
+
+ int mNumberOfKeysObserved = 0;
+ KeyButton [] mKeysObserved = new KeyButton [ 0x100 ];
+
+
+ /**
+ * Creates a new instance of KeyboardDriver.
+ */
+ public KeyboardDriver()
+ {
+ }
-
- /**
- * How many buttons are registered?
- */
- final int getNumberOfButtons()
- {
- return mNumberOfKeysObserved;
-// return mKeysToObserveMap.size();
- }
-
-
- /**
- * Place a new button under my observation.
- */
- final boolean registerKeyButton( KeyButton b )
- {
- final int keycode = b.getKeyCode();
+
+ /**
+ * How many buttons are registered?
+ */
+ final int getNumberOfButtons()
+ {
+ return mNumberOfKeysObserved;
+// return mKeysToObserveMap.size();
+ }
+
+
+ /**
+ * Place a new button under my observation.
+ */
+ final boolean registerKeyButton( KeyButton b )
+ {
+ final int keycode = b.getKeyCode();
- if ( 0 > keycode || 0x100 < keycode )
- throw new InvalidKeyCodeException();
-
- if ( null == mKeysObserved[ keycode ] )
- {
- mKeysObserved[ keycode ] = b;
- mNumberOfKeysObserved++;
- return true;
- }
- else
- {
- return false;
- }
-
-// Integer code = new Integer( b.getKeyCode() );
-// if ( ! mKeysToObserveMap.containsKey( code ) )
-// {
-// mKeysToObserveMap.put( code, b );
-// return true;
-// }
-// else
-// {
-// return false;
-// }
- }
-
- final void unregisterKeyButton( KeyButton b )
- {
- final int keycode = b.getKeyCode();
-
- if ( 0 > keycode || 0x100 < keycode )
- throw new InvalidKeyCodeException();
+ if ( 0 > keycode || 0x100 < keycode )
+ throw new InvalidKeyCodeException();
+
+ if ( null == mKeysObserved[ keycode ] )
+ {
+ mKeysObserved[ keycode ] = b;
+ mNumberOfKeysObserved++;
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+
+// Integer code = new Integer( b.getKeyCode() );
+// if ( ! mKeysToObserveMap.containsKey( code ) )
+// {
+// mKeysToObserveMap.put( code, b );
+// return true;
+// }
+// else
+// {
+// return false;
+// }
+ }
+
+ final void unregisterKeyButton( KeyButton b )
+ {
+ final int keycode = b.getKeyCode();
+
+ if ( 0 > keycode || 0x100 < keycode )
+ throw new InvalidKeyCodeException();
- if ( null != mKeysObserved[ b.getKeyCode() ] )
- {
- mKeysObserved[ keycode ] = null;
- mNumberOfKeysObserved--;
- }
-
-// Integer code = new Integer( b.getKeyCode() );
-// mKeysToObserveMap.remove( code );
- }
-
-
- /**
- * Retrieve the button from its keycode.
- */
- final KeyButton getButton( int keycode )
- {
- if ( 0 > keycode || 0x100 < keycode )
- throw new InvalidKeyCodeException();
+ if ( null != mKeysObserved[ b.getKeyCode() ] )
+ {
+ mKeysObserved[ keycode ] = null;
+ mNumberOfKeysObserved--;
+ }
+
+// Integer code = new Integer( b.getKeyCode() );
+// mKeysToObserveMap.remove( code );
+ }
+
+
+ /**
+ * Retrieve the button from its keycode.
+ */
+ final KeyButton getButton( int keycode )
+ {
+ if ( 0 > keycode || 0x100 < keycode )
+ throw new InvalidKeyCodeException();
- return mKeysObserved[ keycode ];
+ return mKeysObserved[ keycode ];
-// Integer code = new Integer( keycode );
-// return (KeyButton)mKeysToObserveMap.get( code );
- }
-
-
- //*********************************************************************************************
- //
- // Implement KeyListener
- //
- //*********************************************************************************************
-
- public void keyPressed( KeyEvent keyEvent )
- {
- KeyButton b = getButton( keyEvent.getKeyCode() );
- if ( null != b )
- b.setIsPressed( true );
- }
-
- public void keyReleased( KeyEvent keyEvent )
- {
- KeyButton b = getButton( keyEvent.getKeyCode() );
- if ( null != b )
- b.setIsPressed( false );
- }
-
- public void keyTyped( KeyEvent keyEvent )
- {
- // Intentionally empty.
- }
-
+// Integer code = new Integer( keycode );
+// return (KeyButton)mKeysToObserveMap.get( code );
+ }
+
+
+ //*********************************************************************************************
+ //
+ // Implement KeyListener
+ //
+ //*********************************************************************************************
+
+ public void keyPressed( KeyEvent keyEvent )
+ {
+ KeyButton b = getButton( keyEvent.getKeyCode() );
+ if ( null != b )
+ b.setIsPressed( true );
+ }
+
+ public void keyReleased( KeyEvent keyEvent )
+ {
+ KeyButton b = getButton( keyEvent.getKeyCode() );
+ if ( null != b )
+ b.setIsPressed( false );
+ }
+
+ public void keyTyped( KeyEvent keyEvent )
+ {
+ // Intentionally empty.
+ }
+
}
diff --git a/src/main/java/de/hardcode/jxinput/test/AxisListener.java b/src/main/java/de/hardcode/jxinput/test/AxisListener.java
index 7d2b138..6932413 100644
--- a/src/main/java/de/hardcode/jxinput/test/AxisListener.java
+++ b/src/main/java/de/hardcode/jxinput/test/AxisListener.java
@@ -1,10 +1,10 @@
//**********************************************************************************************
-// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
-// All rights reserved. Copying, modification,
-// distribution or publication without the prior written
-// consent of the author is prohibited.
+// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
+// All rights reserved. Copying, modification,
+// distribution or publication without the prior written
+// consent of the author is prohibited.
//
-// Created on 20. Februar 2002, 22:19
+// Created on 20. Februar 2002, 22:19
//**********************************************************************************************
package de.hardcode.jxinput.test;
@@ -19,21 +19,21 @@ import de.hardcode.jxinput.Axis;
* @author Herkules
*/
public class AxisListener
- implements JXInputAxisEventListener
+ implements JXInputAxisEventListener
{
-
- /**
- * Creates a new instance of AxisListener.
- */
- public AxisListener( Axis axis )
- {
- JXInputEventManager.addListener( this, axis, 0.1 );
- }
-
-
- public void changed( JXInputAxisEvent ev )
- {
- System.out.println( "Axis " + ev.getAxis().getName() + " changed : value=" + ev.getAxis().getValue() + ", event causing delta=" + ev.getDelta() );
- }
-
+
+ /**
+ * Creates a new instance of AxisListener.
+ */
+ public AxisListener( Axis axis )
+ {
+ JXInputEventManager.addListener( this, axis, 0.1 );
+ }
+
+
+ public void changed( JXInputAxisEvent ev )
+ {
+ System.out.println( "Axis " + ev.getAxis().getName() + " changed : value=" + ev.getAxis().getValue() + ", event causing delta=" + ev.getDelta() );
+ }
+
}
diff --git a/src/main/java/de/hardcode/jxinput/test/ButtonListener.java b/src/main/java/de/hardcode/jxinput/test/ButtonListener.java
index 604002d..a2e9115 100644
--- a/src/main/java/de/hardcode/jxinput/test/ButtonListener.java
+++ b/src/main/java/de/hardcode/jxinput/test/ButtonListener.java
@@ -1,10 +1,10 @@
//**********************************************************************************************
-// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
-// All rights reserved. Copying, modification,
-// distribution or publication without the prior written
-// consent of the author is prohibited.
+// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
+// All rights reserved. Copying, modification,
+// distribution or publication without the prior written
+// consent of the author is prohibited.
//
-// Created on 20. Februar 2002, 22:19
+// Created on 20. Februar 2002, 22:19
//**********************************************************************************************
package de.hardcode.jxinput.test;
@@ -20,19 +20,19 @@ import de.hardcode.jxinput.Button;
*/
public class ButtonListener implements JXInputButtonEventListener
{
-
- /**
- * Creates a new instance of AxisListener.
- */
- public ButtonListener( Button button )
- {
- JXInputEventManager.addListener( this, button );
- }
-
-
- public void changed( JXInputButtonEvent ev )
- {
- System.out.println( "Button " + ev.getButton().getName() + " changed : state=" + ev.getButton().getState() );
- }
-
+
+ /**
+ * Creates a new instance of AxisListener.
+ */
+ public ButtonListener( Button button )
+ {
+ JXInputEventManager.addListener( this, button );
+ }
+
+
+ public void changed( JXInputButtonEvent ev )
+ {
+ System.out.println( "Button " + ev.getButton().getName() + " changed : state=" + ev.getButton().getState() );
+ }
+
}
diff --git a/src/main/java/de/hardcode/jxinput/test/DirectionalListener.java b/src/main/java/de/hardcode/jxinput/test/DirectionalListener.java
index 9f79796..344e36d 100644
--- a/src/main/java/de/hardcode/jxinput/test/DirectionalListener.java
+++ b/src/main/java/de/hardcode/jxinput/test/DirectionalListener.java
@@ -1,10 +1,10 @@
//**********************************************************************************************
-// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
-// All rights reserved. Copying, modification,
-// distribution or publication without the prior written
-// consent of the author is prohibited.
+// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
+// All rights reserved. Copying, modification,
+// distribution or publication without the prior written
+// consent of the author is prohibited.
//
-// Created on 20. Februar 2002, 22:19
+// Created on 20. Februar 2002, 22:19
//**********************************************************************************************
package de.hardcode.jxinput.test;
@@ -20,18 +20,18 @@ import de.hardcode.jxinput.Directional;
*/
public class DirectionalListener implements JXInputDirectionalEventListener
{
- /**
- * Creates a new instance of AxisListener.
- */
- public DirectionalListener( Directional directional )
- {
- JXInputEventManager.addListener( this, directional, 1.0 );
- }
-
-
- public void changed( JXInputDirectionalEvent ev )
- {
- System.out.println( "Directional " + ev.getDirectional().getName() + " changed : direction=" + ev.getDirectional().getDirection() + ", value=" + ev.getDirectional().getValue() + ", event causing delta=" + ev.getDirectionDelta() );
- }
-
+ /**
+ * Creates a new instance of AxisListener.
+ */
+ public DirectionalListener( Directional directional )
+ {
+ JXInputEventManager.addListener( this, directional, 1.0 );
+ }
+
+
+ public void changed( JXInputDirectionalEvent ev )
+ {
+ System.out.println( "Directional " + ev.getDirectional().getName() + " changed : direction=" + ev.getDirectional().getDirection() + ", value=" + ev.getDirectional().getValue() + ", event causing delta=" + ev.getDirectionDelta() );
+ }
+
}
diff --git a/src/main/java/de/hardcode/jxinput/test/JXInputDevicePanel.java b/src/main/java/de/hardcode/jxinput/test/JXInputDevicePanel.java
index 81fbef3..3e7ef54 100644
--- a/src/main/java/de/hardcode/jxinput/test/JXInputDevicePanel.java
+++ b/src/main/java/de/hardcode/jxinput/test/JXInputDevicePanel.java
@@ -28,34 +28,34 @@ public class JXInputDevicePanel extends javax.swing.JPanel
{
private static final Font AXIS_SLIDER_FONT = new Font( "Verdana", Font.PLAIN, 9 );
- private final JXInputDevice mDev;
- private final ArrayList mAxisSliders = new ArrayList();
- private final ArrayList mButtonCheckboxes = new ArrayList();
- private final ArrayList mDirectionalLabels = new ArrayList();
+ private final JXInputDevice mDev;
+ private final ArrayList mAxisSliders = new ArrayList();
+ private final ArrayList mButtonCheckboxes = new ArrayList();
+ private final ArrayList mDirectionalLabels = new ArrayList();
/** Creates new form JXInputDevicePanel */
public JXInputDevicePanel( JXInputDevice dev )
{
- mDev = dev;
+ mDev = dev;
initComponents();
initFromDevice();
}
- /**
- * Helper class connecting a JSlider with an Axis.
- */
- private class AxisSlider extends JSlider
- {
- Axis mAxis;
- AxisSlider( Axis axis )
- {
- super( ( Axis.SLIDER == axis.getType() ? 0 : -100 ), 100 );
+ /**
+ * Helper class connecting a JSlider with an Axis.
+ */
+ private class AxisSlider extends JSlider
+ {
+ Axis mAxis;
+ AxisSlider( Axis axis )
+ {
+ super( ( Axis.SLIDER == axis.getType() ? 0 : -100 ), 100 );
this.setMajorTickSpacing( Axis.SLIDER == axis.getType() ? 25 : 50 );
this.setMinorTickSpacing( 5 );
this.setPaintTicks( true );
this.setPaintLabels( true );
- this.setEnabled( false );
+ this.setEnabled( false );
Dictionary labeldict = this.getLabelTable();
Enumeration labels = labeldict.elements();
@@ -67,166 +67,166 @@ public class JXInputDevicePanel extends javax.swing.JPanel
label.setHorizontalAlignment( SwingConstants.LEFT );
}
- mAxis = axis;
- }
-
- void update()
- {
- int ax = (int)(mAxis.getValue() * 100.0);
+ mAxis = axis;
+ }
+
+ void update()
+ {
+ int ax = (int)(mAxis.getValue() * 100.0);
- //
- // Only if value really changes
- //
- if ( ax != this.getValue() )
- {
- this.setValue( ax );
- this.setToolTipText( mAxis.getName() + ": " + Double.toString( mAxis.getValue() ) );
- }
- }
-
- }
-
-
- private class ButtonCheckbox extends JCheckBox
- {
- Button mButton;
- ButtonCheckbox( Button button )
- {
- super( button.getName() );
- this.setEnabled( false );
- mButton = button;
- }
-
- void update()
- {
- boolean state = mButton.getState();
-
- //
- // Only if value really changes
- //
- if ( state != this.isSelected() )
- {
- this.setSelected( state );
- }
- }
- }
-
-
- private class DirectionalLabel extends JLabel
- {
- Directional mDirectional;
- int mCurrent = 0;
-
- DirectionalLabel( Directional directional )
- {
- super( directional.getName() );
- mDirectional = directional;
- }
-
- void update()
- {
- int dir = mDirectional.getDirection();
-
- //
- // Only if value really changes
- //
- if ( dir != mCurrent )
- {
- this.setText( mDirectional.getName() + ": " + ( mDirectional.isCentered() ? "-" : Integer.toString( dir ) ) );
- mCurrent = dir;
- }
- }
- }
+ //
+ // Only if value really changes
+ //
+ if ( ax != this.getValue() )
+ {
+ this.setValue( ax );
+ this.setToolTipText( mAxis.getName() + ": " + Double.toString( mAxis.getValue() ) );
+ }
+ }
+
+ }
- /**
- * Setup the dialogs content from the JXInputDevice.
- */
- void initFromDevice()
- {
- if ( null != mDev )
- {
- ((GridLayout)mAxesPanel.getLayout()).setRows( mDev.getNumberOfAxes() );
-
- for ( int i = 0; i < mDev.getMaxNumberOfAxes(); ++i )
- {
- if ( null != mDev.getAxis( i ) )
- {
- AxisSlider slider = new AxisSlider( mDev.getAxis( i ) );
+ private class ButtonCheckbox extends JCheckBox
+ {
+ Button mButton;
+ ButtonCheckbox( Button button )
+ {
+ super( button.getName() );
+ this.setEnabled( false );
+ mButton = button;
+ }
+
+ void update()
+ {
+ boolean state = mButton.getState();
+
+ //
+ // Only if value really changes
+ //
+ if ( state != this.isSelected() )
+ {
+ this.setSelected( state );
+ }
+ }
+ }
+
+
+ private class DirectionalLabel extends JLabel
+ {
+ Directional mDirectional;
+ int mCurrent = 0;
+
+ DirectionalLabel( Directional directional )
+ {
+ super( directional.getName() );
+ mDirectional = directional;
+ }
+
+ void update()
+ {
+ int dir = mDirectional.getDirection();
+
+ //
+ // Only if value really changes
+ //
+ if ( dir != mCurrent )
+ {
+ this.setText( mDirectional.getName() + ": " + ( mDirectional.isCentered() ? "-" : Integer.toString( dir ) ) );
+ mCurrent = dir;
+ }
+ }
+ }
+
+
+ /**
+ * Setup the dialogs content from the JXInputDevice.
+ */
+ void initFromDevice()
+ {
+ if ( null != mDev )
+ {
+ ((GridLayout)mAxesPanel.getLayout()).setRows( mDev.getNumberOfAxes() );
+
+ for ( int i = 0; i < mDev.getMaxNumberOfAxes(); ++i )
+ {
+ if ( null != mDev.getAxis( i ) )
+ {
+ AxisSlider slider = new AxisSlider( mDev.getAxis( i ) );
- JLabel name = new JLabel( mDev.getAxis( i ).getName() );
+ JLabel name = new JLabel( mDev.getAxis( i ).getName() );
name.setVerticalAlignment( SwingConstants.TOP );
name.setHorizontalAlignment( SwingConstants.CENTER );
- name.setPreferredSize( new java.awt.Dimension( 90, 0 ) );
+ name.setPreferredSize( new java.awt.Dimension( 90, 0 ) );
JPanel p = new JPanel();
p.setLayout( new BorderLayout() );
p.add( name, BorderLayout.WEST );
- p.add( slider, BorderLayout.CENTER );
+ p.add( slider, BorderLayout.CENTER );
mAxesPanel.add( p );
// Add to list of all AxisSlider controls
mAxisSliders.add( slider );
-
- // Add an event listener:
- new AxisListener( mDev.getAxis( i ) );
- }
- }
+
+ // Add an event listener:
+ new AxisListener( mDev.getAxis( i ) );
+ }
+ }
-
- ((GridLayout)mButtonsPanel.getLayout()).setRows( mDev.getNumberOfButtons() );
- for ( int i = 0; i < mDev.getMaxNumberOfButtons(); ++i )
- {
- if ( null != mDev.getButton( i ) )
- {
- ButtonCheckbox chk = new ButtonCheckbox( mDev.getButton( i ) );
- mButtonCheckboxes.add( chk );
- mButtonsPanel.add( chk );
+
+ ((GridLayout)mButtonsPanel.getLayout()).setRows( mDev.getNumberOfButtons() );
+ for ( int i = 0; i < mDev.getMaxNumberOfButtons(); ++i )
+ {
+ if ( null != mDev.getButton( i ) )
+ {
+ ButtonCheckbox chk = new ButtonCheckbox( mDev.getButton( i ) );
+ mButtonCheckboxes.add( chk );
+ mButtonsPanel.add( chk );
- // Add an event listener:
- new ButtonListener( mDev.getButton( i ) );
- }
- }
-
- ((GridLayout)mDirectionalPanel.getLayout()).setRows( mDev.getNumberOfDirectionals() / 2 );
- for ( int i = 0; i < mDev.getMaxNumberOfDirectionals(); ++i )
- {
- if ( null != mDev.getDirectional( i ) )
- {
- DirectionalLabel lbl = new DirectionalLabel( mDev.getDirectional( i ) );
- mDirectionalLabels.add( lbl );
- mDirectionalPanel.add( lbl );
+ // Add an event listener:
+ new ButtonListener( mDev.getButton( i ) );
+ }
+ }
+
+ ((GridLayout)mDirectionalPanel.getLayout()).setRows( mDev.getNumberOfDirectionals() / 2 );
+ for ( int i = 0; i < mDev.getMaxNumberOfDirectionals(); ++i )
+ {
+ if ( null != mDev.getDirectional( i ) )
+ {
+ DirectionalLabel lbl = new DirectionalLabel( mDev.getDirectional( i ) );
+ mDirectionalLabels.add( lbl );
+ mDirectionalPanel.add( lbl );
- // Add an event listener:
- new DirectionalListener( mDev.getDirectional( i ) );
- }
- }
- }
- }
+ // Add an event listener:
+ new DirectionalListener( mDev.getDirectional( i ) );
+ }
+ }
+ }
+ }
- public void update()
- {
+ public void update()
+ {
Iterator it = mAxisSliders.iterator();
- while ( it.hasNext() )
- {
- ((AxisSlider)it.next()).update();
- }
+ while ( it.hasNext() )
+ {
+ ((AxisSlider)it.next()).update();
+ }
- it = mButtonCheckboxes.iterator();
- while ( it.hasNext() )
- {
- ((ButtonCheckbox)it.next()).update();
- }
+ it = mButtonCheckboxes.iterator();
+ while ( it.hasNext() )
+ {
+ ((ButtonCheckbox)it.next()).update();
+ }
- it = mDirectionalLabels.iterator();
- while ( it.hasNext() )
- {
- ((DirectionalLabel)it.next()).update();
- }
- }
+ it = mDirectionalLabels.iterator();
+ while ( it.hasNext() )
+ {
+ ((DirectionalLabel)it.next()).update();
+ }
+ }
/** This method is called from within the constructor to
@@ -276,12 +276,12 @@ public class JXInputDevicePanel extends javax.swing.JPanel
}// //GEN-END:initComponents
- private void OnShow(java.awt.event.ComponentEvent evt)//GEN-FIRST:event_OnShow
- {//GEN-HEADEREND:event_OnShow
- // Commented: the focus is held by a parent component
-// System.out.println("OnShow");
-// this.requestFocus();
- }//GEN-LAST:event_OnShow
+ private void OnShow(java.awt.event.ComponentEvent evt)//GEN-FIRST:event_OnShow
+ {//GEN-HEADEREND:event_OnShow
+ // Commented: the focus is held by a parent component
+// System.out.println("OnShow");
+// this.requestFocus();
+ }//GEN-LAST:event_OnShow
diff --git a/src/main/java/de/hardcode/jxinput/test/JXInputTestDialog.java b/src/main/java/de/hardcode/jxinput/test/JXInputTestDialog.java
index 3829aa2..96e3ba6 100644
--- a/src/main/java/de/hardcode/jxinput/test/JXInputTestDialog.java
+++ b/src/main/java/de/hardcode/jxinput/test/JXInputTestDialog.java
@@ -22,143 +22,143 @@ import java.awt.event.KeyEvent;
* @author Herkules
*/
public class JXInputTestDialog extends javax.swing.JDialog
- implements ActionListener
+ implements ActionListener
{
-
- private JXKeyboardInputDevice mKeyboardDevice = null;
- private JXVirtualInputDevice mVirtualDevice = null;
-
- Button mButtonUp;
- Button mButtonDown;
- Button mButtonLeft;
- Button mButtonRight;
- Button mButtonFire;
- Button mButtonSpace;
-
- /** Creates new form JXInputTestDialog */
- public JXInputTestDialog(java.awt.Frame parent, boolean modal)
- {
- super(parent, modal);
- initComponents();
- configureKeyboardInputDevice();
- configureVirtualInputDevice();
- initDevicePanels();
- pack();
-
- // Request the focus so that the keyboarddevice can work
- mMainPanel.requestFocus();
+
+ private JXKeyboardInputDevice mKeyboardDevice = null;
+ private JXVirtualInputDevice mVirtualDevice = null;
+
+ Button mButtonUp;
+ Button mButtonDown;
+ Button mButtonLeft;
+ Button mButtonRight;
+ Button mButtonFire;
+ Button mButtonSpace;
+
+ /** Creates new form JXInputTestDialog */
+ public JXInputTestDialog(java.awt.Frame parent, boolean modal)
+ {
+ super(parent, modal);
+ initComponents();
+ configureKeyboardInputDevice();
+ configureVirtualInputDevice();
+ initDevicePanels();
+ pack();
+
+ // Request the focus so that the keyboarddevice can work
+ mMainPanel.requestFocus();
- new Timer( 50, this ).start();
-
- // Uncomment this line as an alternative to the Timer above.
- // Don't use both!!
- //JXInputEventManager.setTriggerIntervall( 50 );
- }
-
-
+ new Timer( 50, this ).start();
+
+ // Uncomment this line as an alternative to the Timer above.
+ // Don't use both!!
+ //JXInputEventManager.setTriggerIntervall( 50 );
+ }
+
+
/**
* Implement ActionListener#actionPerformed().
- * This is called by the Timer.
+ * This is called by the Timer.
*/
- public void actionPerformed( ActionEvent e )
- {
+ public void actionPerformed( ActionEvent e )
+ {
JXInputManager.updateFeatures();
- SwingUtilities.invokeLater(
- new Runnable()
- {
- public void run()
- {
- for ( int i = 0; i < mDevicesTabbedPane.getComponentCount(); ++i )
- {
- ((JXInputDevicePanel)mDevicesTabbedPane.getComponent( i )).update();
- }
- }
- }
- );
- }
+ SwingUtilities.invokeLater(
+ new Runnable()
+ {
+ public void run()
+ {
+ for ( int i = 0; i < mDevicesTabbedPane.getComponentCount(); ++i )
+ {
+ ((JXInputDevicePanel)mDevicesTabbedPane.getComponent( i )).update();
+ }
+ }
+ }
+ );
+ }
-
- /**
- * Configure a test JXKeyboardInputdevice.
- */
- void configureKeyboardInputDevice()
- {
- mKeyboardDevice = JXInputManager.createKeyboardDevice();
-
- mKeyboardDevice.createButton( KeyEvent.VK_ESCAPE );
-
- mKeyboardDevice.createButton( KeyEvent.VK_F1 );
- mKeyboardDevice.createButton( KeyEvent.VK_F2 );
- mKeyboardDevice.createButton( KeyEvent.VK_F3 );
- mKeyboardDevice.createButton( KeyEvent.VK_F4 );
-
- mKeyboardDevice.createButton( KeyEvent.VK_LEFT );
- mKeyboardDevice.createButton( KeyEvent.VK_RIGHT );
- mKeyboardDevice.createButton( KeyEvent.VK_UP );
- mKeyboardDevice.createButton( KeyEvent.VK_DOWN );
-
- mKeyboardDevice.createButton( KeyEvent.VK_PAGE_UP );
- mKeyboardDevice.createButton( KeyEvent.VK_PAGE_DOWN );
-
- mButtonSpace = mKeyboardDevice.createButton( KeyEvent.VK_SPACE );
- mButtonLeft = mKeyboardDevice.createButton( KeyEvent.VK_A );
- mButtonRight = mKeyboardDevice.createButton( KeyEvent.VK_D );
- mButtonDown = mKeyboardDevice.createButton( KeyEvent.VK_S );
- mButtonUp = mKeyboardDevice.createButton( KeyEvent.VK_W );
-
- // Configure it to make it listen to the main panel.
- // I try to keep the kbd focus on it.
- mKeyboardDevice.listenTo( mMainPanel );
- }
-
-
- /**
- * Configure a test JXVirtualInputdevice.
- */
- void configureVirtualInputDevice()
- {
- mVirtualDevice = JXInputManager.createVirtualDevice();
-
- Button firebutton;
- //
- // Remember 'fire' button of first device for use
- // in the virtual device.
- // For we ran configureKeyboardInputDevice() before,
- // getJXInputDevice( 0 ) should not return null
- //
- firebutton = JXInputManager.getJXInputDevice( 0 ).getButton( 0 );
-
- VirtualAxis x = mVirtualDevice.createAxis( Axis.ID_X );
- x.setButtons( mButtonRight, mButtonLeft );
- x.setName( "x: A-D" );
-
- VirtualAxis y = mVirtualDevice.createAxis( Axis.ID_Y );
- y.setButtons( mButtonUp, mButtonDown );
- y.setSpringSpeed( 0.0 );
- y.setName( "y: S|W" );
-
- VirtualAxis slider = mVirtualDevice.createAxis( Axis.ID_SLIDER0 );
- slider.setIncreaseButton( mButtonSpace );
- slider.setTimeFor0To1( 2000 );
- slider.setName( "Axis.ROTATION,
* Axis.TRANSLATION or Axis.SLIDER.
*/
public void setType( int type )
{
- if ( Axis.ROTATION != type
+ if ( Axis.ROTATION != type
&& Axis.TRANSLATION != type
&& Axis.SLIDER != type
)
- throw new InvalidParameterException( "Invalid type for axis!" );
+ throw new InvalidParameterException( "Invalid type for axis!" );
mType = type;
}
- /**
- * Update features under my control.
- */
- final void update( long deltaT )
- {
- double change = mSpeed * deltaT;
- double springchange = mSpringSpeed * deltaT;
- boolean doincrease = ( null != mButtonIncrease && mButtonIncrease.getState() );
- boolean dodecrease = ( null != mButtonDecrease && mButtonDecrease.getState() );
- boolean iscontrolled = doincrease || dodecrease;
+ /**
+ * Update features under my control.
+ */
+ final void update( long deltaT )
+ {
+ double change = mSpeed * deltaT;
+ double springchange = mSpringSpeed * deltaT;
+ boolean doincrease = ( null != mButtonIncrease && mButtonIncrease.getState() );
+ boolean dodecrease = ( null != mButtonDecrease && mButtonDecrease.getState() );
+ boolean iscontrolled = doincrease || dodecrease;
- double controlledchange = 0.0;
- if ( doincrease )
- controlledchange += change;
- if ( dodecrease )
- controlledchange -= change;
-
- mCurrentValue += controlledchange;
-
- if ( mCurrentValue > 0.0 && ! doincrease )
- {
- springchange = Math.min( mCurrentValue, springchange );
- mCurrentValue -= springchange;
- }
- if ( mCurrentValue < 0.0 && ! dodecrease )
- {
- springchange = Math.min( -mCurrentValue, springchange );
- mCurrentValue += springchange;
- }
-
- //
- // Hold value within range
- //
- if ( mCurrentValue > 1.0 )
- mCurrentValue = 1.0;
- double lowerlimit = Axis.SLIDER == mType ? 0.0 : -1.0;
- if ( mCurrentValue < lowerlimit )
- mCurrentValue = lowerlimit;
- }
+ double controlledchange = 0.0;
+ if ( doincrease )
+ controlledchange += change;
+ if ( dodecrease )
+ controlledchange -= change;
+
+ mCurrentValue += controlledchange;
+
+ if ( mCurrentValue > 0.0 && ! doincrease )
+ {
+ springchange = Math.min( mCurrentValue, springchange );
+ mCurrentValue -= springchange;
+ }
+ if ( mCurrentValue < 0.0 && ! dodecrease )
+ {
+ springchange = Math.min( -mCurrentValue, springchange );
+ mCurrentValue += springchange;
+ }
+
+ //
+ // Hold value within range
+ //
+ if ( mCurrentValue > 1.0 )
+ mCurrentValue = 1.0;
+ double lowerlimit = Axis.SLIDER == mType ? 0.0 : -1.0;
+ if ( mCurrentValue < lowerlimit )
+ mCurrentValue = lowerlimit;
+ }
-
+
/**
* Set the button to increase the axis for a single button axis.
*/
- public final void setIncreaseButton( Button b )
- {
- if ( null == b )
- throw new InvalidParameterException( "Button may not be null!" );
-
- mButtonIncrease = b;
- }
+ public final void setIncreaseButton( Button b )
+ {
+ if ( null == b )
+ throw new InvalidParameterException( "Button may not be null!" );
+
+ mButtonIncrease = b;
+ }
/**
* Set the buttons to increase and descrease the axis.
*/
- public final void setButtons( Button increase, Button decrease )
- {
- if ( null == increase || null == decrease )
- throw new InvalidParameterException( "Buttons may not be null!" );
-
- mButtonIncrease = increase;
- mButtonDecrease = decrease;
- }
+ public final void setButtons( Button increase, Button decrease )
+ {
+ if ( null == increase || null == decrease )
+ throw new InvalidParameterException( "Buttons may not be null!" );
+
+ mButtonIncrease = increase;
+ mButtonDecrease = decrease;
+ }
-
- public final void setSpeed( double speed )
- {
- mSpeed = speed;
- }
+
+ public final void setSpeed( double speed )
+ {
+ mSpeed = speed;
+ }
- public final void setSpringSpeed( double springspeed )
- {
- mSpringSpeed = springspeed;
- }
+ public final void setSpringSpeed( double springspeed )
+ {
+ mSpringSpeed = springspeed;
+ }
-
- public final void setTimeFor0To1( int ms )
- {
- if ( 0 >= ms )
- mSpeed = 0.0;
- else
- mSpeed = 1.0/ ms;
- }
- public final void setTimeFor1To0( int ms )
- {
- if ( 0 >= ms )
- mSpringSpeed = 0.0;
- else
- mSpringSpeed = 1.0/ ms;
- }
-
-
- public final void setName( String name )
- {
- mName = name;
- }
-
- //*********************************************************************************************
- //
- // Implement Axis
- //
- //*********************************************************************************************
-
- /**
- * Features may have a name provided e.g. by the driver.
- */
- public String getName()
- {
- return mName;
- }
-
- /**
- * Inform about the resolution of the axis.
- *
- * @return resolution, e.g. 2^-16
- */
- public double getResolution()
- {
- return 1.0/65536.0;
- }
-
-
- /**
- * Retrieve the type of the axis.
- * @return [ TRANSLATION | ROTATION | SLIDER ]
- */
- public int getType()
- {
- return mType;
- }
-
- /** Returns the current value of the axis.
- * The range of the result depends on the axis type.
- *
- * @return value [-1.0,1.0] or [0.0,1.0]
- */
- public double getValue()
- {
- return mCurrentValue;
- }
-
- /** Denote wether this feature has changed beyond it's resolution since it got last
- * updated.
- */
- public boolean hasChanged()
- {
- return true;
- }
-
+
+ public final void setTimeFor0To1( int ms )
+ {
+ if ( 0 >= ms )
+ mSpeed = 0.0;
+ else
+ mSpeed = 1.0/ ms;
+ }
+ public final void setTimeFor1To0( int ms )
+ {
+ if ( 0 >= ms )
+ mSpringSpeed = 0.0;
+ else
+ mSpringSpeed = 1.0/ ms;
+ }
+
+
+ public final void setName( String name )
+ {
+ mName = name;
+ }
+
+ //*********************************************************************************************
+ //
+ // Implement Axis
+ //
+ //*********************************************************************************************
+
+ /**
+ * Features may have a name provided e.g. by the driver.
+ */
+ public String getName()
+ {
+ return mName;
+ }
+
+ /**
+ * Inform about the resolution of the axis.
+ *
+ * @return resolution, e.g. 2^-16
+ */
+ public double getResolution()
+ {
+ return 1.0/65536.0;
+ }
+
+
+ /**
+ * Retrieve the type of the axis.
+ * @return [ TRANSLATION | ROTATION | SLIDER ]
+ */
+ public int getType()
+ {
+ return mType;
+ }
+
+ /** Returns the current value of the axis.
+ * The range of the result depends on the axis type.
+ *
+ * @return value [-1.0,1.0] or [0.0,1.0]
+ */
+ public double getValue()
+ {
+ return mCurrentValue;
+ }
+
+ /** Denote wether this feature has changed beyond it's resolution since it got last
+ * updated.
+ */
+ public boolean hasChanged()
+ {
+ return true;
+ }
+
}
diff --git a/src/main/java/de/hardcode/jxinput/virtual/VirtualDriver.java b/src/main/java/de/hardcode/jxinput/virtual/VirtualDriver.java
index 5952eff..ad1899a 100644
--- a/src/main/java/de/hardcode/jxinput/virtual/VirtualDriver.java
+++ b/src/main/java/de/hardcode/jxinput/virtual/VirtualDriver.java
@@ -1,10 +1,10 @@
//**********************************************************************************************
-// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
-// All rights reserved. Copying, modification,
-// distribution or publication without the prior written
-// consent of the author is prohibited.
+// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
+// All rights reserved. Copying, modification,
+// distribution or publication without the prior written
+// consent of the author is prohibited.
//
-// Created on 9. April 2002, 22:43
+// Created on 9. April 2002, 22:43
//**********************************************************************************************
package de.hardcode.jxinput.virtual;
@@ -19,77 +19,77 @@ import de.hardcode.jxinput.Axis;
* @author Herkules
*/
class VirtualDriver
-{
+{
- private final VirtualAxis[] mVAxes = new VirtualAxis[ Axis.NUMBER_OF_ID ];
-
- /**
- * Creates a new instance of KeyboardDriver.
- */
- VirtualDriver()
- {
- }
+ private final VirtualAxis[] mVAxes = new VirtualAxis[ Axis.NUMBER_OF_ID ];
+
+ /**
+ * Creates a new instance of KeyboardDriver.
+ */
+ VirtualDriver()
+ {
+ }
-
- /**
- * Update features under my control.
- */
- final void update( long deltaT )
- {
- //
- // Delegate the update call to the axes in use.
- //
- for ( int i = 0; i < mVAxes.length; i++ )
- {
- if ( null != mVAxes[ i ] )
- mVAxes[ i ].update( deltaT );
- }
- }
+
+ /**
+ * Update features under my control.
+ */
+ final void update( long deltaT )
+ {
+ //
+ // Delegate the update call to the axes in use.
+ //
+ for ( int i = 0; i < mVAxes.length; i++ )
+ {
+ if ( null != mVAxes[ i ] )
+ mVAxes[ i ].update( deltaT );
+ }
+ }
-
- /**
- * How many axes are registered?
- */
- final int getNumberOfAxes()
- {
- int ctr = 0;
- for ( int i = 0; i < mVAxes.length; i++ )
- {
- if ( null != mVAxes[ i ] )
- ctr++;
- }
- return ctr;
- }
-
- Axis getAxis(int idx)
- {
- return mVAxes[ idx ];
- }
-
-
- /**
- * Place a new axis under my observation.
- */
- final void registerVirtualAxis( int id, VirtualAxis a )
- {
- mVAxes[ id ] = a;
- }
-
-
- /**
- * Remove an axis from my control.
- */
- final void unregisterVirtualAxis( VirtualAxis a )
- {
- for ( int i = 0; i < mVAxes.length; ++i )
- {
- if ( mVAxes[ i ] == a )
- {
- mVAxes[ i ] = null;
- break;
- }
- }
- }
-
-
+
+ /**
+ * How many axes are registered?
+ */
+ final int getNumberOfAxes()
+ {
+ int ctr = 0;
+ for ( int i = 0; i < mVAxes.length; i++ )
+ {
+ if ( null != mVAxes[ i ] )
+ ctr++;
+ }
+ return ctr;
+ }
+
+ Axis getAxis(int idx)
+ {
+ return mVAxes[ idx ];
+ }
+
+
+ /**
+ * Place a new axis under my observation.
+ */
+ final void registerVirtualAxis( int id, VirtualAxis a )
+ {
+ mVAxes[ id ] = a;
+ }
+
+
+ /**
+ * Remove an axis from my control.
+ */
+ final void unregisterVirtualAxis( VirtualAxis a )
+ {
+ for ( int i = 0; i < mVAxes.length; ++i )
+ {
+ if ( mVAxes[ i ] == a )
+ {
+ mVAxes[ i ] = null;
+ break;
+ }
+ }
+ }
+
+
}