From 7578257a1708431f47eaf1fd679b0772fa6242fe Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Sun, 16 Feb 2003 01:35:48 +0000 Subject: [PATCH] Use SDL events for keyboard and joystick input. It's simpler. It's also the "preferred" way of doing it, according to the SDL docs, so maybe it'll work better. This will reliably queue events, so we can handle coin events during loads. It'll queue events a little too reliably; we might want to flush some events when we load screens. --- stepmania/src/InputFilter.cpp | 115 ++++------ stepmania/src/InputFilter.h | 20 +- stepmania/src/RageInput.cpp | 363 +++++------------------------- stepmania/src/RageInput.h | 31 +-- stepmania/src/RageInputDevice.cpp | 3 +- stepmania/src/StepMania.cpp | 26 +-- stepmania/src/StepMania.dsp | 20 +- stepmania/src/StepMania.vcproj | 13 ++ 8 files changed, 169 insertions(+), 422 deletions(-) diff --git a/stepmania/src/InputFilter.cpp b/stepmania/src/InputFilter.cpp index 5bf1c4c83a..07e3b6784d 100644 --- a/stepmania/src/InputFilter.cpp +++ b/stepmania/src/InputFilter.cpp @@ -10,17 +10,17 @@ ----------------------------------------------------------------------------- */ -#include // for fmod #include "InputFilter.h" #include "RageLog.h" #include "RageInput.h" -#include "SDL_keyboard.h" InputFilter* INPUTFILTER = NULL; // global and accessable from anywhere in our program InputFilter::InputFilter() { + memset(m_BeingHeld, 0, sizeof(m_BeingHeld)); + for( int i=0; iBeingPressed(di, Prev); + m_BeingHeld[di.device][di.button] = Down; + m_fSecsHeld[di.device][di.button] = 0; + + InputEventType iet = Down? IET_FIRST_PRESS:IET_RELEASE; + queue.push_back( InputEvent(di,iet) ); } -bool InputFilter::WasBeingPressed( DeviceInput di ) +void InputFilter::Update(float fDeltaTime) { - return BeingPressed(di, true); + INPUTMAN->Update( fDeltaTime ); + + for( int d=0; d TIME_BEFORE_SLOW_REPEATS ) + { + if( fOldHoldTime > TIME_BEFORE_FAST_REPEATS ) + { + fTimeBetweenRepeats = TIME_BETWEEN_FAST_REPEATS; + iet = IET_FAST_REPEAT; + } + else + { + fTimeBetweenRepeats = TIME_BETWEEN_SLOW_REPEATS; + iet = IET_SLOW_REPEAT; + } + if( int(fOldHoldTime/fTimeBetweenRepeats) != int(fNewHoldTime/fTimeBetweenRepeats) ) + queue.push_back( InputEvent(InputDevice(d),b,iet) ); + + } + } + } + } bool InputFilter::IsBeingPressed( DeviceInput di ) { - return BeingPressed(di, false); + return m_BeingHeld[di.device][di.button]; } float InputFilter::GetSecsHeld( DeviceInput di ) @@ -57,56 +88,8 @@ float InputFilter::GetSecsHeld( DeviceInput di ) return m_fSecsHeld[di.device][di.button]; } -void InputFilter::GetInputEvents( InputEventArray &array, float fDeltaTime ) +void InputFilter::GetInputEvents( InputEventArray &array ) { - INPUTMAN->Update( fDeltaTime ); - - for( int d=0; d TIME_BEFORE_SLOW_REPEATS ) - { - if( fOldHoldTime > TIME_BEFORE_FAST_REPEATS ) - { - fTimeBetweenRepeats = TIME_BETWEEN_FAST_REPEATS; - iet = IET_FAST_REPEAT; - } - else - { - fTimeBetweenRepeats = TIME_BETWEEN_SLOW_REPEATS; - iet = IET_SLOW_REPEAT; - } - if( int(fOldHoldTime/fTimeBetweenRepeats) != int(fNewHoldTime/fTimeBetweenRepeats) ) - array.push_back( InputEvent(di,iet) ); - } - } - else { // !IsBeingPressed(di) - m_fSecsHeld[d][b] = 0; - array.push_back( InputEvent(di,IET_RELEASE) ); - } - } - else // !WasBeingPressed(di) - { - if( IsBeingPressed(di) ) - array.push_back( InputEvent(di,IET_FIRST_PRESS) ); - else // !IsBeingPressed(di) - ; // don't care - } - } - } + array = queue; + queue.clear(); } diff --git a/stepmania/src/InputFilter.h b/stepmania/src/InputFilter.h index 926c691b22..180bad299c 100644 --- a/stepmania/src/InputFilter.h +++ b/stepmania/src/InputFilter.h @@ -24,12 +24,11 @@ const float TIME_BETWEEN_FAST_REPEATS = 0.125f; enum InputEventType { IET_FIRST_PRESS, IET_SLOW_REPEAT, IET_FAST_REPEAT, IET_RELEASE }; -class InputEvent : public DeviceInput +struct InputEvent : public DeviceInput { -public: InputEvent() { type=IET_FIRST_PRESS; }; - InputEvent( InputDevice d, int b, InputEventType t ) { device=d; button=b; type=t; }; - InputEvent( DeviceInput di, InputEventType t ) { device=di.device; button=di.button; type=t; }; + InputEvent( InputDevice d, int b, InputEventType t ): DeviceInput(d, b) { type=t; }; + InputEvent( DeviceInput di, InputEventType t ): DeviceInput(di) { type=t; }; InputEventType type; }; @@ -38,17 +37,20 @@ typedef vector InputEventArray; class InputFilter { + bool m_BeingHeld[NUM_INPUT_DEVICES][NUM_DEVICE_BUTTONS]; + float m_fSecsHeld[NUM_INPUT_DEVICES][NUM_DEVICE_BUTTONS]; + + InputEventArray queue; + public: + void ButtonPressed( DeviceInput di, bool Down ); InputFilter(); + void Update(float fDeltaTime); - bool BeingPressed( DeviceInput di, bool Prev = false); - bool WasBeingPressed( DeviceInput di ); bool IsBeingPressed( DeviceInput di ); float GetSecsHeld( DeviceInput di ); - void GetInputEvents( InputEventArray &array, float fDeltaTime ); - - float m_fSecsHeld[NUM_INPUT_DEVICES][NUM_DEVICE_BUTTONS]; + void GetInputEvents( InputEventArray &array ); }; diff --git a/stepmania/src/RageInput.cpp b/stepmania/src/RageInput.cpp index 810df38f1b..57ce4d7a1a 100644 --- a/stepmania/src/RageInput.cpp +++ b/stepmania/src/RageInput.cpp @@ -10,40 +10,14 @@ ----------------------------------------------------------------------------- */ -//----------------------------------------------------------------------------- -// In-line Links -//----------------------------------------------------------------------------- -#pragma comment(lib, "ddk/setupapi.lib") -#pragma comment(lib, "ddk/hid.lib") - -//----------------------------------------------------------------------------- -// Includes -//----------------------------------------------------------------------------- #include "RageInput.h" -#include "SDL.h" -#include "SDL_keyboard.h" -#include "RageUtil.h" +#include "SDL_utils.h" #include "RageLog.h" -#include "RageException.h" - +#include "InputFilter.h" RageInput* INPUTMAN = NULL; // globally accessable input device -struct RageInput::pump_t -{ - HANDLE h; - OVERLAPPED ov; - long buf; - bool pending; - pump_t(); - ~pump_t(); - void Update(); - bool init(int devno); - int GetPadEvent(); - - bool current_state[NUM_PUMP_PAD_BUTTONS]; -}; RageInput::RageInput() { @@ -51,9 +25,6 @@ RageInput::RageInput() SDL_InitSubSystem( SDL_INIT_JOYSTICK ); - // init state info - memset( state, 0, sizeof(state) ); - // // Init keyboard @@ -68,310 +39,92 @@ RageInput::RageInput() // // Init joysticks // - memset( m_pJoystick, 0, sizeof(m_pJoystick) ); int iNumJoySticks = min( SDL_NumJoysticks(), NUM_JOYSTICKS ); LOG->Info( "Found %d joysticks", iNumJoySticks ); for( int i=0; iInfo( " %d: '%s' axes: %d, hats: %d, buttons: %d", i, SDL_JoystickName(i), - SDL_JoystickNumAxes(m_pJoystick[i]), - SDL_JoystickNumHats(m_pJoystick[i]), - SDL_JoystickNumButtons(m_pJoystick[i]) ); + SDL_JoystickNumAxes(pJoystick), + SDL_JoystickNumHats(pJoystick), + SDL_JoystickNumButtons(pJoystick) ); + SDL_JoystickClose(pJoystick); } - SDL_JoystickEventState( SDL_IGNORE ); - + SDL_JoystickEventState( SDL_ENABLE ); // - // Init pumps + // Init pump // - m_Pumps = new pump_t[NUM_PUMPS]; - - for(int pumpNo = 0; pumpNo < NUM_PUMPS; ++pumpNo) - { - if(m_Pumps[pumpNo].init(pumpNo)) - LOG->Info("Found Pump pad %i", pumpNo); - } + m_Pump = new PumpPadDevice; } RageInput::~RageInput() { // - // De-init keyboard + // De-init pump // - - // - // De-init joysticks - // - for( int i=0; ibutton, 0, sizeof(dev->button) ); // clear current state - SDL_Joystick* pJoy = m_pJoystick[joy]; - if( !pJoy ) - continue; - - int iNumJoyAxes = min(NUM_JOYSTICK_AXES,SDL_JoystickNumAxes(pJoy)); - for( int axis=0; axisTrace( "axis %d = %d", axis, val ); - if( val < -16000 ) - { - JoystickButton b = (JoystickButton)(JOY_LEFT+2*axis); - dev->button[b] = true; - } - else if( val > +16000 ) - { - JoystickButton b = (JoystickButton)(JOY_RIGHT+2*axis); - dev->button[b] = true; - } - } - - int iNumJoyHats = min(NUM_JOYSTICK_HATS,SDL_JoystickNumHats(pJoy)); - for( int hat=0; hatbutton[JOY_HAT_UP] = (val & SDL_HAT_UP) != 0; - dev->button[JOY_HAT_RIGHT] = (val & SDL_HAT_RIGHT) != 0; - dev->button[JOY_HAT_DOWN] = (val & SDL_HAT_DOWN) != 0; - dev->button[JOY_HAT_LEFT] = (val & SDL_HAT_LEFT) != 0; - } - - int iNumJoyButtons = MIN(NUM_JOYSTICK_BUTTONS,SDL_JoystickNumButtons(pJoy)); - for( int button=0; buttonbutton[b] = SDL_JoystickGetButton(pJoy,button) != 0; - } - } - - // // Update Pump // - for( int i=0; iUpdate(); } -bool RageInput::BeingPressed( DeviceInput di, bool bPrevState ) +bool RageInput::FeedSDLEvent(const SDL_Event &event) { - ASSERT(di.button < NUM_DEVICE_BUTTONS); - ASSERT(di.device < NUM_INPUT_DEVICES); - - State s = bPrevState? LAST:CURRENT; - - return state[s].m_Devices[di.device].button[ di.button ]; -} - -extern "C" { -#include "ddk/setupapi.h" -/* Quiet header warning: */ -#pragma warning( push ) -#pragma warning (disable : 4201) -#include "ddk/hidsdi.h" -#pragma warning( pop ) -} - -char *USB::GetUSBDevicePath (int num) -{ - GUID guid; - HidD_GetHidGuid(&guid); - - HDEVINFO DeviceInfo = SetupDiGetClassDevs (&guid, - NULL, NULL, (DIGCF_PRESENT | DIGCF_DEVICEINTERFACE)); - - SP_DEVICE_INTERFACE_DATA DeviceInterface; - DeviceInterface.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA); - - char *ret = NULL; - PSP_INTERFACE_DEVICE_DETAIL_DATA DeviceDetail = NULL; - - if (!SetupDiEnumDeviceInterfaces (DeviceInfo, - NULL, &guid, num, &DeviceInterface)) - goto err; - - unsigned long size; - SetupDiGetDeviceInterfaceDetail (DeviceInfo, &DeviceInterface, NULL, 0, &size, 0); - - DeviceDetail = (PSP_INTERFACE_DEVICE_DETAIL_DATA) malloc(size); - DeviceDetail->cbSize = sizeof(SP_INTERFACE_DEVICE_DETAIL_DATA); - - if (SetupDiGetDeviceInterfaceDetail (DeviceInfo, &DeviceInterface, - DeviceDetail, size, &size, NULL)) - { - ret = strdup(DeviceDetail->DevicePath); - } - -err: - SetupDiDestroyDeviceInfoList (DeviceInfo); - free (DeviceDetail); - return ret; -} - -HANDLE USB::OpenUSB (int VID, int PID, int num) -{ - DWORD index = 0; - - char *path; - HANDLE h = INVALID_HANDLE_VALUE; - - while ((path = GetUSBDevicePath (index++)) != NULL) - { - if(h != INVALID_HANDLE_VALUE) - CloseHandle (h); - - h = CreateFile (path, GENERIC_READ, - FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL); - - free(path); - - if(h == INVALID_HANDLE_VALUE) - continue; - - HIDD_ATTRIBUTES attr; - if (!HidD_GetAttributes (h, &attr)) - continue; - - if ((VID != -1 && attr.VendorID != VID) && - (PID != -1 && attr.ProductID != PID)) - continue; /* This isn't it. */ - - /* The VID and PID match. */ - if(num-- == 0) - return h; - } - if(h != INVALID_HANDLE_VALUE) - CloseHandle (h); - - return INVALID_HANDLE_VALUE; -} - -RageInput::pump_t::pump_t() -{ - ZeroMemory( &ov, sizeof(ov) ); - memset(current_state, 0, sizeof(current_state)); - pending=false; - h = INVALID_HANDLE_VALUE; -} - -RageInput::pump_t::~pump_t() -{ - if(h != INVALID_HANDLE_VALUE) - CloseHandle(h); -} - -bool RageInput::pump_t::init(int devno) -{ - const int pump_usb_vid = 0x0d2f, pump_usb_pid = 0x0001; - h = USB::OpenUSB (pump_usb_vid, pump_usb_pid, devno); - return h != INVALID_HANDLE_VALUE; -} - -int RageInput::pump_t::GetPadEvent() -{ - int ret; - - if(!pending) - { - /* Request feedback from the device. */ - unsigned long r; - ret = ReadFile(h, &buf, sizeof(buf), &r, &ov); - pending=true; - } - - /* See if we have a response for our request (which we may - * have made on a previous cal): */ - if(WaitForSingleObjectEx(h, 0, TRUE) == WAIT_TIMEOUT) - return -1; - - /* We do; get the result. It'll go into the original &buf - * we supplied on the original call; that's why buf is a - * member instead of a local. */ - unsigned long cnt; - ret = GetOverlappedResult(h, &ov, &cnt, FALSE); - pending=false; - - if(ret == 0 && (GetLastError() == ERROR_IO_PENDING || GetLastError() == ERROR_IO_INCOMPLETE)) - return -1; - - if(ret == 0) { - LOG->Warn(werr_ssprintf(GetLastError(), "Error reading Pump pad")); - return -1; - } - - return buf; -} - -void RageInput::pump_t::Update() -{ - if(h == INVALID_HANDLE_VALUE) return; - - int ret = GetPadEvent(); - - if(ret == -1) - return; /* no event */ - - /* Since we're checking for messages, and not polling, - * only zero this out when we actually *have* a new - * message. */ - - memset( ¤t_state, 0, sizeof(current_state) ); - - int bits[] = { - /* P1 */ (1<<9), (1<<12), (1<<13), (1<<11), (1<<10), - /* ESC */ (1<<16), - /* P1 */ (1<<17), (1<<20), (1<<21), (1<<19), (1<<18), - }; - - for (int butno = 0 ; butno < NUM_PUMP_PAD_BUTTONS ; butno++) + switch(event.type) { - if(!(ret & bits[butno])) - current_state[butno] = true; + case SDL_KEYDOWN: + case SDL_KEYUP: + { + DeviceInput di(DEVICE_KEYBOARD, event.key.keysym.sym); + INPUTFILTER->ButtonPressed(di, event.key.state == SDL_PRESSED); + return true; } + + case SDL_JOYBUTTONDOWN: + case SDL_JOYBUTTONUP: + { + InputDevice i = InputDevice(DEVICE_JOY1 + event.jbutton.which); + JoystickButton Button = JoystickButton(JOY_1 + event.jbutton.button); + if(Button >= NUM_JOYSTICK_BUTTONS) + { + LOG->Warn("Ignored joystick event (button too high)"); + return true; + } + DeviceInput di(i, Button); + INPUTFILTER->ButtonPressed(di, event.jbutton.state == SDL_PRESSED); + return true; + } + + case SDL_JOYAXISMOTION: + { + InputDevice i = InputDevice(DEVICE_JOY1 + event.jaxis.which); + JoystickButton neg = (JoystickButton)(JOY_LEFT+2*event.jaxis.axis); + JoystickButton pos = (JoystickButton)(JOY_RIGHT+2*event.jaxis.axis); + INPUTFILTER->ButtonPressed(DeviceInput(i, neg), event.jaxis.value < -16000); + INPUTFILTER->ButtonPressed(DeviceInput(i, pos), event.jaxis.value > +16000); + return true; + } + + case SDL_JOYHATMOTION: + { + InputDevice i = InputDevice(DEVICE_JOY1 + event.jhat.which); + INPUTFILTER->ButtonPressed(DeviceInput(i, JOY_HAT_UP), !!(event.jhat.value & SDL_HAT_UP)); + INPUTFILTER->ButtonPressed(DeviceInput(i, JOY_HAT_DOWN), !!(event.jhat.value & JOY_HAT_DOWN)); + INPUTFILTER->ButtonPressed(DeviceInput(i, JOY_HAT_LEFT), !!(event.jhat.value & JOY_HAT_LEFT)); + INPUTFILTER->ButtonPressed(DeviceInput(i, JOY_HAT_RIGHT), !!(event.jhat.value & JOY_HAT_RIGHT)); + return true; + } + } + return false; } diff --git a/stepmania/src/RageInput.h b/stepmania/src/RageInput.h index c8e4f430c1..1e72ceeeee 100644 --- a/stepmania/src/RageInput.h +++ b/stepmania/src/RageInput.h @@ -5,46 +5,25 @@ File: RageInput.h Desc: Wrapper for SDL's input routines. Generates InputEvents. - - Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved. - Chris Danford ----------------------------------------------------------------------------- */ #include "RageInputDevice.h" +#include "SDL_utils.h" -struct _SDL_Joystick; -typedef struct _SDL_Joystick SDL_Joystick; +#include "arch/InputHandler/InputHandler_Win32_Pump.h" class RageInput { - SDL_Joystick* m_pJoystick[NUM_JOYSTICKS]; - - enum State { CURRENT = 0, LAST, NUM_STATES }; - - struct state_t { - struct device_t { - bool button[NUM_DEVICE_BUTTONS]; - } m_Devices[NUM_INPUT_DEVICES]; - } state[NUM_STATES]; - /* Structure for reading Pump pads: */ - struct pump_t; - pump_t *m_Pumps; + PumpPadDevice *m_Pump; public: RageInput(); ~RageInput(); void Update( float fDeltaTime ); - bool BeingPressed( DeviceInput di, bool bPrevState ); - bool IsBeingPressed( DeviceInput di ) { return BeingPressed(di, false); } - bool WasBeingPressed( DeviceInput di ) { return BeingPressed(di, true); } -}; - -namespace USB { - char *GetUSBDevicePath (int num); - HANDLE OpenUSB (int VID, int PID, int num); + bool FeedSDLEvent(const SDL_Event &event); }; extern RageInput* INPUTMAN; // global and accessable from anywhere in our program @@ -52,7 +31,7 @@ extern RageInput* INPUTMAN; // global and accessable from anywhere in our prog #endif /* - * Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved. + * Copyright (c) 2001-2003 by the person(s) listed below. All rights reserved. * Chris Danford * Glenn Maynard */ diff --git a/stepmania/src/RageInputDevice.cpp b/stepmania/src/RageInputDevice.cpp index 9d5dc96347..65c6e8129e 100644 --- a/stepmania/src/RageInputDevice.cpp +++ b/stepmania/src/RageInputDevice.cpp @@ -1,5 +1,6 @@ /* - * Define all of the input devices we know about. + * Define all of the input devices we know about. This is the public + * interface for describing input devices. */ #include "stdafx.h" diff --git a/stepmania/src/StepMania.cpp b/stepmania/src/StepMania.cpp index 080d263e66..2d2ffe5a8d 100644 --- a/stepmania/src/StepMania.cpp +++ b/stepmania/src/StepMania.cpp @@ -420,8 +420,8 @@ bool HandleGlobalInputs( DeviceInput DeviceI, InputEventType type, GameInput Gam if(DeviceI == DeviceInput(DEVICE_KEYBOARD, SDLK_F4)) { if(type != IET_FIRST_PRESS) return true; - if( INPUTMAN->IsBeingPressed( DeviceInput(DEVICE_KEYBOARD, SDLK_RALT)) || - INPUTMAN->IsBeingPressed( DeviceInput(DEVICE_KEYBOARD, SDLK_LALT)) ) + if( INPUTFILTER->IsBeingPressed( DeviceInput(DEVICE_KEYBOARD, SDLK_RALT)) || + INPUTFILTER->IsBeingPressed( DeviceInput(DEVICE_KEYBOARD, SDLK_LALT)) ) { // pressed Alt+F4 SDL_Event *event; @@ -458,8 +458,8 @@ bool HandleGlobalInputs( DeviceInput DeviceI, InputEventType type, GameInput Gam if(DeviceI == DeviceInput(DEVICE_KEYBOARD, SDLK_RETURN)) { - if( INPUTMAN->IsBeingPressed(DeviceInput(DEVICE_KEYBOARD, SDLK_RALT)) || - INPUTMAN->IsBeingPressed(DeviceInput(DEVICE_KEYBOARD, SDLK_LALT)) ) + if( INPUTFILTER->IsBeingPressed(DeviceInput(DEVICE_KEYBOARD, SDLK_RALT)) || + INPUTFILTER->IsBeingPressed(DeviceInput(DEVICE_KEYBOARD, SDLK_LALT)) ) { if(type != IET_FIRST_PRESS) return true; /* alt-enter */ @@ -474,9 +474,11 @@ bool HandleGlobalInputs( DeviceInput DeviceI, InputEventType type, GameInput Gam static void HandleInputEvents(float fDeltaTime) { + INPUTFILTER->Update( fDeltaTime ); + static InputEventArray ieArray; ieArray.clear(); // empty the array - INPUTFILTER->GetInputEvents( ieArray, fDeltaTime ); + INPUTFILTER->GetInputEvents( ieArray ); for( unsigned i=0; iInput( DeviceI, type, GameI, MenuI, StyleI ); } @@ -521,6 +518,9 @@ static void GameLoop() SDL_Event event; while(SDL_PollEvent(&event)) { + if(INPUTMAN->FeedSDLEvent(event)) + continue; /* it took care of it */ + switch(event.type) { case SDL_QUIT: @@ -554,13 +554,13 @@ static void GameLoop() */ float fDeltaTime = timer.GetDeltaTime(); - if( INPUTMAN->IsBeingPressed( DeviceInput(DEVICE_KEYBOARD, SDLK_TAB) ) ) { - if( INPUTMAN->IsBeingPressed( DeviceInput(DEVICE_KEYBOARD, SDLK_BACKQUOTE) ) ) + if( INPUTFILTER->IsBeingPressed( DeviceInput(DEVICE_KEYBOARD, SDLK_TAB) ) ) { + if( INPUTFILTER->IsBeingPressed( DeviceInput(DEVICE_KEYBOARD, SDLK_BACKQUOTE) ) ) fDeltaTime = 0; /* both; stop time */ else fDeltaTime *= 4; } else - if( INPUTMAN->IsBeingPressed( DeviceInput(DEVICE_KEYBOARD, SDLK_BACKQUOTE) ) ) + if( INPUTFILTER->IsBeingPressed( DeviceInput(DEVICE_KEYBOARD, SDLK_BACKQUOTE) ) ) fDeltaTime /= 4; TEXTUREMAN->Update( fDeltaTime ); diff --git a/stepmania/src/StepMania.dsp b/stepmania/src/StepMania.dsp index 59a02e93e4..95117117a4 100644 --- a/stepmania/src/StepMania.dsp +++ b/stepmania/src/StepMania.dsp @@ -60,7 +60,7 @@ IntDir=.\../Release6 TargetDir=\temp\stepmania TargetName=StepMania SOURCE="$(InputPath)" -PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\ +PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\ PostBuild_Cmds=disasm\mapconv $(IntDir)\$(TargetName).map $(TargetDir)\StepMania.vdi ia32.vdi # End Special Build Tool @@ -95,7 +95,7 @@ IntDir=.\../Debug6 TargetDir=\temp\stepmania TargetName=StepMania-debug SOURCE="$(InputPath)" -PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\ +PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\ PostBuild_Cmds=disasm\mapconv $(IntDir)\$(TargetName).map $(TargetDir)\StepMania.vdi ia32.vdi # End Special Build Tool @@ -688,6 +688,22 @@ SOURCE=.\arch\ArchHooks\ArchHooks_Win32.cpp SOURCE=.\arch\ArchHooks\ArchHooks_Win32.h # End Source File # End Group +# Begin Group "InputHandler" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=.\arch\InputHandler\InputHandler.h +# End Source File +# Begin Source File + +SOURCE=.\arch\InputHandler\InputHandler_Win32_Pump.cpp +# End Source File +# Begin Source File + +SOURCE=.\arch\InputHandler\InputHandler_Win32_Pump.h +# End Source File +# End Group # Begin Source File SOURCE=.\arch\arch.cpp diff --git a/stepmania/src/StepMania.vcproj b/stepmania/src/StepMania.vcproj index 4320f0fc1d..83ab7578fd 100644 --- a/stepmania/src/StepMania.vcproj +++ b/stepmania/src/StepMania.vcproj @@ -808,6 +808,19 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\ RelativePath="arch\ArchHooks\ArchHooks_none.h"> + + + + + + + +