mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-23 14:19:46 -06:00
Run code through the advanced tool 'sed' to remove trailing whitespace.
This commit is contained in:
@ -42,7 +42,7 @@ enum
|
||||
SETTING_SQUARE,
|
||||
};
|
||||
|
||||
const char * const named_directions[] =
|
||||
const char * const named_directions[] =
|
||||
{
|
||||
"Up",
|
||||
"Down",
|
||||
@ -109,7 +109,7 @@ public:
|
||||
|
||||
ControlGroup(const char* const _name, const unsigned int _type = GROUP_TYPE_OTHER) : name(_name), type(_type) {}
|
||||
virtual ~ControlGroup();
|
||||
|
||||
|
||||
virtual void LoadConfig(IniFile::Section *sec, const std::string& defdev = "", const std::string& base = "" );
|
||||
virtual void SaveConfig(IniFile::Section *sec, const std::string& defdev = "", const std::string& base = "" );
|
||||
|
||||
@ -325,7 +325,7 @@ public:
|
||||
{
|
||||
// this section might be all wrong, but its working good enough, I think
|
||||
|
||||
ControlState ang = atan2(yy, xx);
|
||||
ControlState ang = atan2(yy, xx);
|
||||
ControlState ang_sin = sin(ang);
|
||||
ControlState ang_cos = cos(ang);
|
||||
|
||||
@ -352,7 +352,7 @@ public:
|
||||
|
||||
// this is kinda silly here
|
||||
// gui being open will make this happen 2x as fast, o well
|
||||
|
||||
|
||||
// silly
|
||||
if (step)
|
||||
{
|
||||
@ -391,7 +391,7 @@ public:
|
||||
m_z = std::max(m_z - 0.1f, zz);
|
||||
|
||||
*z = m_z;
|
||||
|
||||
|
||||
// hide
|
||||
if (controls[6]->control_ref->State() > 0.5f)
|
||||
{
|
||||
|
@ -249,7 +249,7 @@ Device::Control* ControllerInterface::InputReference::Detect(const unsigned int
|
||||
if (device->Inputs().size() == 0)
|
||||
return NULL;
|
||||
|
||||
// get starting state of all inputs,
|
||||
// get starting state of all inputs,
|
||||
// so we can ignore those that were activated at time of Detect start
|
||||
std::vector<Device::Input*>::const_iterator
|
||||
i = device->Inputs().begin(),
|
||||
@ -308,7 +308,7 @@ Device::Control* ControllerInterface::OutputReference::Detect(const unsigned int
|
||||
device->UpdateOutput();
|
||||
Common::SleepCurrentThread(10);
|
||||
}
|
||||
|
||||
|
||||
State(0);
|
||||
device->UpdateOutput();
|
||||
}
|
||||
|
@ -109,7 +109,7 @@ public:
|
||||
};
|
||||
|
||||
ControllerInterface() : m_is_init(false), m_hwnd(NULL) {}
|
||||
|
||||
|
||||
void SetHwnd(void* const hwnd);
|
||||
void Initialize();
|
||||
void Shutdown();
|
||||
|
@ -76,17 +76,17 @@ void GetXInputGUIDS( std::vector<DWORD>& guids )
|
||||
bstrNamespace = SysAllocString( L"\\\\.\\root\\cimv2" );if( bstrNamespace == NULL ) goto LCleanup;
|
||||
bstrClassName = SysAllocString( L"Win32_PNPEntity" ); if( bstrClassName == NULL ) goto LCleanup;
|
||||
bstrDeviceID = SysAllocString( L"DeviceID" ); if( bstrDeviceID == NULL ) goto LCleanup;
|
||||
|
||||
// Connect to WMI
|
||||
|
||||
// Connect to WMI
|
||||
hr = pIWbemLocator->ConnectServer( bstrNamespace, NULL, NULL, 0L, 0L, NULL, NULL, &pIWbemServices );
|
||||
if( FAILED(hr) || pIWbemServices == NULL )
|
||||
goto LCleanup;
|
||||
|
||||
// Switch security level to IMPERSONATE.
|
||||
CoSetProxyBlanket( pIWbemServices, RPC_C_AUTHN_WINNT, RPC_C_AUTHZ_NONE, NULL,
|
||||
// Switch security level to IMPERSONATE.
|
||||
CoSetProxyBlanket( pIWbemServices, RPC_C_AUTHN_WINNT, RPC_C_AUTHZ_NONE, NULL,
|
||||
RPC_C_AUTHN_LEVEL_CALL, RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE );
|
||||
|
||||
hr = pIWbemServices->CreateInstanceEnum( bstrClassName, 0, NULL, &pEnumDevices );
|
||||
hr = pIWbemServices->CreateInstanceEnum( bstrClassName, 0, NULL, &pEnumDevices );
|
||||
if( FAILED(hr) || pEnumDevices == NULL )
|
||||
goto LCleanup;
|
||||
|
||||
@ -105,7 +105,7 @@ void GetXInputGUIDS( std::vector<DWORD>& guids )
|
||||
if( SUCCEEDED( hr ) && var.vt == VT_BSTR && var.bstrVal != NULL )
|
||||
{
|
||||
// Check if the device ID contains "IG_". If it does, then it's an XInput device
|
||||
// This information can not be found from DirectInput
|
||||
// This information can not be found from DirectInput
|
||||
if( wcsstr( var.bstrVal, L"IG_" ) )
|
||||
{
|
||||
// If it does, then get the VID/PID from var.bstrVal
|
||||
@ -122,7 +122,7 @@ void GetXInputGUIDS( std::vector<DWORD>& guids )
|
||||
guids.push_back( dwVidPid );
|
||||
//bIsXinputDevice = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
SAFE_RELEASE( pDevices[iDevice] );
|
||||
}
|
||||
}
|
||||
@ -324,7 +324,7 @@ Joystick::Joystick( /*const LPCDIDEVICEINSTANCE lpddi, */const LPDIRECTINPUTDEVI
|
||||
{
|
||||
eff.cbTypeSpecificParams = sizeof(DIPERIODIC);
|
||||
}
|
||||
|
||||
|
||||
LPDIRECTINPUTEFFECT pEffect;
|
||||
if (SUCCEEDED(m_device->CreateEffect(force_type_names[f].guid, &eff, &pEffect, NULL)))
|
||||
{
|
||||
|
@ -88,7 +88,7 @@ public:
|
||||
|
||||
Joystick(const LPDIRECTINPUTDEVICE8 device, const unsigned int index);
|
||||
~Joystick();
|
||||
|
||||
|
||||
std::string GetName() const;
|
||||
int GetId() const;
|
||||
std::string GetSource() const;
|
||||
|
@ -14,7 +14,7 @@ namespace ciface
|
||||
{
|
||||
namespace SDL
|
||||
{
|
||||
|
||||
|
||||
std::string GetJoystickName(int index)
|
||||
{
|
||||
#if SDL_VERSION_ATLEAST(2, 0, 0)
|
||||
@ -25,7 +25,7 @@ std::string GetJoystickName(int index)
|
||||
}
|
||||
|
||||
void Init( std::vector<Core::Device*>& devices )
|
||||
{
|
||||
{
|
||||
// this is used to number the joysticks
|
||||
// multiple joysticks with the same name shall get unique ids starting at 0
|
||||
std::map<std::string, int> name_counts;
|
||||
@ -79,7 +79,7 @@ Joystick::Joystick(SDL_Joystick* const joystick, const int sdl_index, const unsi
|
||||
// get buttons
|
||||
for (u8 i = 0; i != SDL_JoystickNumButtons(m_joystick); ++i)
|
||||
AddInput(new Button(i, m_joystick));
|
||||
|
||||
|
||||
// get hats
|
||||
for (u8 i = 0; i != SDL_JoystickNumHats(m_joystick); ++i)
|
||||
{
|
||||
@ -151,7 +151,7 @@ Joystick::~Joystick()
|
||||
{
|
||||
#ifdef USE_SDL_HAPTIC
|
||||
if (m_haptic)
|
||||
{
|
||||
{
|
||||
// stop/destroy all effects
|
||||
SDL_HapticStopAll(m_haptic);
|
||||
std::list<EffectIDState>::iterator
|
||||
@ -306,7 +306,7 @@ bool Joystick::UpdateInput()
|
||||
{
|
||||
// each joystick is doin this, o well
|
||||
SDL_JoystickUpdate();
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -10,7 +10,7 @@ static const struct
|
||||
{
|
||||
const char* const name;
|
||||
const WORD bitmask;
|
||||
} named_buttons[] =
|
||||
} named_buttons[] =
|
||||
{
|
||||
{ "Button A", XINPUT_GAMEPAD_A },
|
||||
{ "Button B", XINPUT_GAMEPAD_B },
|
||||
@ -153,7 +153,7 @@ Device::Device(const XINPUT_CAPABILITIES& caps, u8 index)
|
||||
|
||||
void Device::ClearInputState()
|
||||
{
|
||||
ZeroMemory(&m_state_in, sizeof(m_state_in));
|
||||
ZeroMemory(&m_state_in, sizeof(m_state_in));
|
||||
}
|
||||
|
||||
std::string Device::GetName() const
|
||||
|
@ -8,8 +8,8 @@
|
||||
#include <cmath>
|
||||
|
||||
// This is an input plugin using the XInput 2.0 extension to the X11 protocol,
|
||||
// loosely based on the old XLib plugin. (Has nothing to do with the XInput
|
||||
// API on Windows.)
|
||||
// loosely based on the old XLib plugin. (Has nothing to do with the XInput
|
||||
// API on Windows.)
|
||||
|
||||
// This plugin creates one KeyboardMouse object for each master pointer/
|
||||
// keyboard pair. Each KeyboardMouse object exports four types of controls:
|
||||
@ -20,20 +20,20 @@
|
||||
// center of the emulator window.
|
||||
// * Mouse axis controls: one for each cardinal direction. Calculated using
|
||||
// a running average of relative mouse motion on each axis.
|
||||
// * Key controls: these correspond to a limited subset of the keyboard
|
||||
// * Key controls: these correspond to a limited subset of the keyboard
|
||||
// keys.
|
||||
|
||||
|
||||
// Mouse axis control tuning. Unlike absolute mouse position, relative mouse
|
||||
// motion data needs to be tweaked and smoothed out a bit to be usable.
|
||||
|
||||
// Mouse axis control output is simply divided by this number. In practice,
|
||||
// Mouse axis control output is simply divided by this number. In practice,
|
||||
// that just means you can use a smaller "dead zone" if you bind axis controls
|
||||
// to a joystick. No real need to make this customizable.
|
||||
#define MOUSE_AXIS_SENSITIVITY 8.0f
|
||||
|
||||
// The mouse axis controls use a weighted running average. Each frame, the new
|
||||
// value is the average of the old value and the amount of relative mouse
|
||||
// value is the average of the old value and the amount of relative mouse
|
||||
// motion during that frame. The old value is weighted by a ratio of
|
||||
// MOUSE_AXIS_SMOOTHING:1 compared to the new value. Increasing
|
||||
// MOUSE_AXIS_SMOOTHING makes the controls smoother, decreasing it makes them
|
||||
@ -49,31 +49,31 @@ namespace XInput2
|
||||
void Init(std::vector<Core::Device*>& devices, void* const hwnd)
|
||||
{
|
||||
Display* dpy;
|
||||
|
||||
|
||||
dpy = XOpenDisplay(NULL);
|
||||
|
||||
// xi_opcode is important; it will be used to identify XInput events by
|
||||
|
||||
// xi_opcode is important; it will be used to identify XInput events by
|
||||
// the polling loop in UpdateInput.
|
||||
int xi_opcode, event, error;
|
||||
|
||||
|
||||
// verify that the XInput extension is available
|
||||
if (!XQueryExtension(dpy, "XInputExtension", &xi_opcode, &event, &error))
|
||||
return;
|
||||
|
||||
|
||||
// verify that the XInput extension is at at least version 2.0
|
||||
int major = 2, minor = 0;
|
||||
|
||||
|
||||
if (XIQueryVersion(dpy, &major, &minor) != Success)
|
||||
return;
|
||||
|
||||
|
||||
// register all master devices with Dolphin
|
||||
|
||||
|
||||
XIDeviceInfo* all_masters;
|
||||
XIDeviceInfo* current_master;
|
||||
int num_masters;
|
||||
|
||||
|
||||
all_masters = XIQueryDevice(dpy, XIAllMasterDevices, &num_masters);
|
||||
|
||||
|
||||
for (int i = 0; i < num_masters; i++)
|
||||
{
|
||||
current_master = &all_masters[i];
|
||||
@ -82,34 +82,34 @@ void Init(std::vector<Core::Device*>& devices, void* const hwnd)
|
||||
// be a master keyboard.
|
||||
devices.push_back(new KeyboardMouse((Window)hwnd, xi_opcode, current_master->deviceid, current_master->attachment));
|
||||
}
|
||||
|
||||
|
||||
XCloseDisplay(dpy);
|
||||
|
||||
|
||||
XIFreeDeviceInfo(all_masters);
|
||||
}
|
||||
|
||||
// Apply the event mask to the device and all its slaves. Only used in the
|
||||
// Apply the event mask to the device and all its slaves. Only used in the
|
||||
// constructor. Remember, each KeyboardMouse has its own copy of the event
|
||||
// stream, which is how multiple event masks can "coexist."
|
||||
void KeyboardMouse::SelectEventsForDevice(Window window, XIEventMask *mask, int deviceid)
|
||||
{
|
||||
// Set the event mask for the master device.
|
||||
|
||||
|
||||
mask->deviceid = deviceid;
|
||||
XISelectEvents(m_display, window, mask, 1);
|
||||
|
||||
|
||||
// Query all the master device's slaves and set the same event mask for
|
||||
// those too. There are two reasons we want to do this. For mouse devices,
|
||||
// we want the raw motion events, and only slaves (i.e. physical hardware
|
||||
// devices) emit those. For keyboard devices, selecting slaves avoids
|
||||
// dealing with key focus.
|
||||
|
||||
|
||||
XIDeviceInfo* all_slaves;
|
||||
XIDeviceInfo* current_slave;
|
||||
int num_slaves;
|
||||
|
||||
|
||||
all_slaves = XIQueryDevice(m_display, XIAllDevices, &num_slaves);
|
||||
|
||||
|
||||
for (int i = 0; i < num_slaves; i++)
|
||||
{
|
||||
current_slave = &all_slaves[i];
|
||||
@ -118,33 +118,33 @@ void KeyboardMouse::SelectEventsForDevice(Window window, XIEventMask *mask, int
|
||||
mask->deviceid = current_slave->deviceid;
|
||||
XISelectEvents(m_display, window, mask, 1);
|
||||
}
|
||||
|
||||
|
||||
XIFreeDeviceInfo(all_slaves);
|
||||
}
|
||||
|
||||
KeyboardMouse::KeyboardMouse(Window window, int opcode, int pointer, int keyboard)
|
||||
KeyboardMouse::KeyboardMouse(Window window, int opcode, int pointer, int keyboard)
|
||||
: m_window(window), xi_opcode(opcode), pointer_deviceid(pointer), keyboard_deviceid(keyboard)
|
||||
{
|
||||
memset(&m_state, 0, sizeof(m_state));
|
||||
|
||||
|
||||
// The cool thing about each KeyboardMouse object having its own Display
|
||||
// is that each one gets its own separate copy of the X11 event stream,
|
||||
// which it can individually filter to get just the events it's interested
|
||||
// in. So be aware that each KeyboardMouse object actually has its own X11
|
||||
// "context."
|
||||
m_display = XOpenDisplay(NULL);
|
||||
|
||||
|
||||
int min_keycode, max_keycode;
|
||||
XDisplayKeycodes(m_display, &min_keycode, &max_keycode);
|
||||
|
||||
|
||||
int unused; // should always be 1
|
||||
XIDeviceInfo* pointer_device = XIQueryDevice(m_display, pointer_deviceid, &unused);
|
||||
name = std::string(pointer_device->name);
|
||||
XIFreeDeviceInfo(pointer_device);
|
||||
|
||||
|
||||
XIEventMask mask;
|
||||
unsigned char mask_buf[(XI_LASTEVENT + 7)/8];
|
||||
|
||||
|
||||
mask.mask_len = sizeof(mask_buf);
|
||||
mask.mask = mask_buf;
|
||||
memset(mask_buf, 0, sizeof(mask_buf));
|
||||
@ -155,9 +155,9 @@ KeyboardMouse::KeyboardMouse(Window window, int opcode, int pointer, int keyboar
|
||||
XISetMask(mask_buf, XI_KeyPress);
|
||||
XISetMask(mask_buf, XI_KeyRelease);
|
||||
|
||||
SelectEventsForDevice(DefaultRootWindow(m_display), &mask, pointer_deviceid);
|
||||
SelectEventsForDevice(DefaultRootWindow(m_display), &mask, pointer_deviceid);
|
||||
SelectEventsForDevice(DefaultRootWindow(m_display), &mask, keyboard_deviceid);
|
||||
|
||||
|
||||
// Keyboard Keys
|
||||
for (int i = min_keycode; i <= max_keycode; ++i)
|
||||
{
|
||||
@ -175,7 +175,7 @@ KeyboardMouse::KeyboardMouse(Window window, int opcode, int pointer, int keyboar
|
||||
// Mouse Cursor, X-/+ and Y-/+
|
||||
for (int i = 0; i != 4; ++i)
|
||||
AddInput(new Cursor(!!(i & 2), !!(i & 1), (&m_state.cursor.x)[!!(i & 2)]));
|
||||
|
||||
|
||||
// Mouse Axis, X-/+ and Y-/+
|
||||
for (int i = 0; i != 4; ++i)
|
||||
AddInput(new Axis(!!(i & 2), !!(i & 1), (&m_state.axis.x)[!!(i & 2)]));
|
||||
@ -191,15 +191,15 @@ void KeyboardMouse::UpdateCursor()
|
||||
{
|
||||
double root_x, root_y, win_x, win_y;
|
||||
Window root, child;
|
||||
|
||||
// unused-- we're not interested in button presses here, as those are
|
||||
|
||||
// unused-- we're not interested in button presses here, as those are
|
||||
// updated using events
|
||||
XIButtonState button_state;
|
||||
XIModifierState mods;
|
||||
XIGroupState group;
|
||||
|
||||
|
||||
XIQueryPointer(m_display, pointer_deviceid, m_window, &root, &child, &root_x, &root_y, &win_x, &win_y, &button_state, &mods, &group);
|
||||
|
||||
|
||||
free (button_state.mask);
|
||||
|
||||
XWindowAttributes win_attribs;
|
||||
@ -213,32 +213,32 @@ void KeyboardMouse::UpdateCursor()
|
||||
bool KeyboardMouse::UpdateInput()
|
||||
{
|
||||
XFlush(m_display);
|
||||
|
||||
|
||||
// Get the absolute position of the mouse pointer
|
||||
UpdateCursor();
|
||||
|
||||
|
||||
// for the axis controls
|
||||
float delta_x = 0.0f, delta_y = 0.0f;
|
||||
double delta_delta;
|
||||
|
||||
|
||||
// Iterate through the event queue - update the axis controls, mouse
|
||||
// button controls, and keyboard controls.
|
||||
XEvent event;
|
||||
while (XPending(m_display))
|
||||
while (XPending(m_display))
|
||||
{
|
||||
XNextEvent(m_display, &event);
|
||||
|
||||
|
||||
if (event.xcookie.type != GenericEvent)
|
||||
continue;
|
||||
if (event.xcookie.extension != xi_opcode)
|
||||
continue;
|
||||
if (!XGetEventData(m_display, &event.xcookie))
|
||||
continue;
|
||||
|
||||
|
||||
// only one of these will get used
|
||||
XIDeviceEvent* dev_event = (XIDeviceEvent*)event.xcookie.data;
|
||||
XIRawEvent* raw_event = (XIRawEvent*)event.xcookie.data;
|
||||
|
||||
|
||||
switch (event.xcookie.evtype)
|
||||
{
|
||||
case XI_ButtonPress:
|
||||
@ -254,7 +254,7 @@ bool KeyboardMouse::UpdateInput()
|
||||
m_state.keyboard[dev_event->detail / 8] &= ~(1<<(dev_event->detail % 8));
|
||||
break;
|
||||
case XI_RawMotion:
|
||||
// always safe because there is always at least one byte in
|
||||
// always safe because there is always at least one byte in
|
||||
// raw_event->valuators.mask, and if a bit is set in the mask,
|
||||
// then the value in raw_values is also available.
|
||||
if (XIMaskIsSet(raw_event->valuators.mask, 0))
|
||||
@ -273,10 +273,10 @@ bool KeyboardMouse::UpdateInput()
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
XFreeEventData(m_display, &event.xcookie);
|
||||
}
|
||||
|
||||
|
||||
// apply axis smoothing
|
||||
m_state.axis.x *= MOUSE_AXIS_SMOOTHING;
|
||||
m_state.axis.x += delta_x;
|
||||
@ -284,7 +284,7 @@ bool KeyboardMouse::UpdateInput()
|
||||
m_state.axis.y *= MOUSE_AXIS_SMOOTHING;
|
||||
m_state.axis.y += delta_y;
|
||||
m_state.axis.y /= MOUSE_AXIS_SMOOTHING+1.0f;
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -322,10 +322,10 @@ KeyboardMouse::Key::Key(Display* const display, KeyCode keycode, const char* key
|
||||
}
|
||||
while (keysym == NoSymbol && i < 8);
|
||||
|
||||
// Convert to upper case for the keyname
|
||||
// Convert to upper case for the keyname
|
||||
if (keysym >= 97 && keysym <= 122)
|
||||
keysym -= 32;
|
||||
|
||||
|
||||
// 0x0110ffff is the top of the unicode character range according
|
||||
// to keysymdef.h although it is probably more than we need.
|
||||
if (keysym == NoSymbol || keysym > 0x0110ffff ||
|
||||
|
@ -35,7 +35,7 @@ private:
|
||||
float x, y;
|
||||
} cursor, axis;
|
||||
};
|
||||
|
||||
|
||||
class Key : public Input
|
||||
{
|
||||
friend class KeyboardMouse;
|
||||
@ -43,21 +43,21 @@ private:
|
||||
std::string GetName() const { return m_keyname; }
|
||||
Key(Display* display, KeyCode keycode, const char* keyboard);
|
||||
ControlState GetState() const;
|
||||
|
||||
|
||||
private:
|
||||
std::string m_keyname;
|
||||
Display* const m_display;
|
||||
const char* const m_keyboard;
|
||||
const KeyCode m_keycode;
|
||||
};
|
||||
|
||||
|
||||
class Button : public Input
|
||||
{
|
||||
public:
|
||||
std::string GetName() const { return name; }
|
||||
Button(unsigned int index, unsigned int& buttons);
|
||||
ControlState GetState() const;
|
||||
|
||||
|
||||
private:
|
||||
const unsigned int& m_buttons;
|
||||
const unsigned int m_index;
|
||||
@ -71,14 +71,14 @@ private:
|
||||
bool IsDetectable() { return false; }
|
||||
Cursor(u8 index, bool positive, const float& cursor);
|
||||
ControlState GetState() const;
|
||||
|
||||
|
||||
private:
|
||||
const float& m_cursor;
|
||||
const u8 m_index;
|
||||
const bool m_positive;
|
||||
std::string name;
|
||||
};
|
||||
|
||||
|
||||
class Axis : public Input
|
||||
{
|
||||
public:
|
||||
@ -93,22 +93,22 @@ private:
|
||||
const bool m_positive;
|
||||
std::string name;
|
||||
};
|
||||
|
||||
|
||||
private:
|
||||
void SelectEventsForDevice(Window window, XIEventMask *mask, int deviceid);
|
||||
void UpdateCursor();
|
||||
|
||||
|
||||
public:
|
||||
bool UpdateInput();
|
||||
bool UpdateOutput();
|
||||
|
||||
|
||||
KeyboardMouse(Window window, int opcode, int pointer_deviceid, int keyboard_deviceid);
|
||||
~KeyboardMouse();
|
||||
|
||||
|
||||
std::string GetName() const;
|
||||
std::string GetSource() const;
|
||||
int GetId() const;
|
||||
|
||||
|
||||
private:
|
||||
Window m_window;
|
||||
Display* m_display;
|
||||
|
@ -20,7 +20,7 @@ KeyboardMouse::KeyboardMouse(Window window) : m_window(window)
|
||||
|
||||
int min_keycode, max_keycode;
|
||||
XDisplayKeycodes(m_display, &min_keycode, &max_keycode);
|
||||
|
||||
|
||||
// Keyboard Keys
|
||||
for (int i = min_keycode; i <= max_keycode; ++i)
|
||||
{
|
||||
@ -99,7 +99,7 @@ KeyboardMouse::Key::Key(Display* const display, KeyCode keycode, const char* key
|
||||
i++;
|
||||
}
|
||||
while (keysym == NoSymbol && i < 8);
|
||||
|
||||
|
||||
// Convert to upper case for the keyname
|
||||
if (keysym >= 97 && keysym <= 122)
|
||||
keysym -= 32;
|
||||
|
@ -26,7 +26,7 @@ private:
|
||||
float x, y;
|
||||
} cursor;
|
||||
};
|
||||
|
||||
|
||||
class Key : public Input
|
||||
{
|
||||
friend class KeyboardMouse;
|
||||
@ -34,14 +34,14 @@ private:
|
||||
std::string GetName() const;
|
||||
Key(Display* display, KeyCode keycode, const char* keyboard);
|
||||
ControlState GetState() const;
|
||||
|
||||
|
||||
private:
|
||||
std::string m_keyname;
|
||||
Display* const m_display;
|
||||
const char* const m_keyboard;
|
||||
const KeyCode m_keycode;
|
||||
};
|
||||
|
||||
|
||||
class Button : public Input
|
||||
{
|
||||
public:
|
||||
@ -49,7 +49,7 @@ private:
|
||||
Button(unsigned int index, unsigned int& buttons)
|
||||
: m_buttons(buttons), m_index(index) {}
|
||||
ControlState GetState() const;
|
||||
|
||||
|
||||
private:
|
||||
const unsigned int& m_buttons;
|
||||
const unsigned int m_index;
|
||||
@ -69,18 +69,18 @@ private:
|
||||
const u8 m_index;
|
||||
const bool m_positive;
|
||||
};
|
||||
|
||||
|
||||
public:
|
||||
bool UpdateInput();
|
||||
bool UpdateOutput();
|
||||
|
||||
|
||||
KeyboardMouse(Window window);
|
||||
~KeyboardMouse();
|
||||
|
||||
|
||||
std::string GetName() const;
|
||||
std::string GetSource() const;
|
||||
int GetId() const;
|
||||
|
||||
|
||||
private:
|
||||
Window m_window;
|
||||
Display* m_display;
|
||||
|
@ -59,12 +59,12 @@ struct UDPWiimote::_d
|
||||
|
||||
int UDPWiimote::noinst = 0;
|
||||
|
||||
UDPWiimote::UDPWiimote(const char *_port, const char * name, int _index) :
|
||||
UDPWiimote::UDPWiimote(const char *_port, const char * name, int _index) :
|
||||
port(_port), displayName(name),
|
||||
d(new _d) ,x(0),y(0),z(1.0f),naX(0),naY(0),naZ(-1.0f),nunX(0),nunY(0),
|
||||
pointerX(1001.0f/2),pointerY(0),nunMask(0),mask(0),index(_index), int_port(atoi(_port))
|
||||
{
|
||||
|
||||
|
||||
static bool sranded=false;
|
||||
if (!sranded)
|
||||
{
|
||||
@ -72,7 +72,7 @@ UDPWiimote::UDPWiimote(const char *_port, const char * name, int _index) :
|
||||
sranded=true;
|
||||
}
|
||||
bcastMagic=rand() & 0xFFFF;
|
||||
|
||||
|
||||
#ifdef _WIN32
|
||||
u_long iMode = 1;
|
||||
#endif
|
||||
@ -88,21 +88,21 @@ UDPWiimote::UDPWiimote(const char *_port, const char * name, int _index) :
|
||||
WSAStartup(sockVersion, &wsaData);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
noinst++;
|
||||
|
||||
memset(&hints, 0, sizeof hints);
|
||||
hints.ai_family = AF_INET;
|
||||
hints.ai_socktype = SOCK_DGRAM;
|
||||
hints.ai_flags = AI_PASSIVE; // use my IP
|
||||
|
||||
|
||||
if (!int_port)
|
||||
{
|
||||
cleanup;
|
||||
err=-1;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if ((rv = getaddrinfo(NULL, _port, &hints, &servinfo)) != 0)
|
||||
{
|
||||
cleanup;
|
||||
@ -126,14 +126,14 @@ UDPWiimote::UDPWiimote(const char *_port, const char * name, int _index) :
|
||||
}
|
||||
d->sockfds.push_back(sock);
|
||||
}
|
||||
|
||||
|
||||
if (d->sockfds.empty())
|
||||
{
|
||||
cleanup;
|
||||
err=-2;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
freeaddrinfo(servinfo);
|
||||
err=0;
|
||||
d->exit=false;
|
||||
@ -168,7 +168,7 @@ void UDPWiimote::mainThread()
|
||||
maxfd=(fd)+1;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
u64 tleft=timeout.tv_sec*1000+timeout.tv_usec/1000;
|
||||
u64 telapsed=time.GetTimeDifference();
|
||||
time.Update();
|
||||
@ -184,14 +184,14 @@ void UDPWiimote::mainThread()
|
||||
timeout.tv_sec=(long)(tleft/1000);
|
||||
timeout.tv_usec=(tleft%1000)*1000;
|
||||
}
|
||||
|
||||
|
||||
lk.unlock(); //VERY hacky. don't like it
|
||||
if (d->exit) return;
|
||||
if (d->exit) return;
|
||||
int rt=select(maxfd,&fds,NULL,NULL,&timeout);
|
||||
if (d->exit) return;
|
||||
lk.lock();
|
||||
if (d->exit) return;
|
||||
|
||||
|
||||
if (rt)
|
||||
{
|
||||
for (sock_t fd : d->sockfds)
|
||||
@ -203,9 +203,9 @@ void UDPWiimote::mainThread()
|
||||
size_t addr_len;
|
||||
struct sockaddr_storage their_addr;
|
||||
addr_len = sizeof their_addr;
|
||||
if ((size = recvfrom(fd,
|
||||
(dataz)bf,
|
||||
size , 0,(struct sockaddr *)&their_addr, (socklen_t*)&addr_len)) == -1)
|
||||
if ((size = recvfrom(fd,
|
||||
(dataz)bf,
|
||||
size , 0,(struct sockaddr *)&their_addr, (socklen_t*)&addr_len)) == -1)
|
||||
{
|
||||
ERROR_LOG(WIIMOTE,"UDPWii Packet error");
|
||||
}
|
||||
@ -327,7 +327,7 @@ void UDPWiimote::initBroadcastIPv4()
|
||||
WARN_LOG(WIIMOTE,"socket() failed");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
int broad=1;
|
||||
if (setsockopt(d->bipv4_fd,SOL_SOCKET,SO_BROADCAST, (const dataz)(&broad), sizeof broad) == -1)
|
||||
{
|
||||
@ -344,7 +344,7 @@ void UDPWiimote::broadcastIPv4(const void * data, size_t size)
|
||||
their_addr.sin_port = htons(4431);
|
||||
their_addr.sin_addr.s_addr = INADDR_BROADCAST;
|
||||
memset(their_addr.sin_zero, '\0', sizeof their_addr.sin_zero);
|
||||
|
||||
|
||||
int num;
|
||||
if ((num=sendto(d->bipv4_fd,(const dataz)data,(int)size,0,(struct sockaddr *) &their_addr, sizeof their_addr)) == -1)
|
||||
{
|
||||
|
@ -38,7 +38,7 @@ private:
|
||||
std::string port,displayName;
|
||||
int pharsePacket(u8 * data, size_t size);
|
||||
struct _d; //using pimpl because Winsock2.h doesn't have include guards -_-
|
||||
_d *d;
|
||||
_d *d;
|
||||
double x,y,z;
|
||||
double naX,naY,naZ;
|
||||
double nunX,nunY;
|
||||
|
@ -12,7 +12,7 @@ const char* DefaultPort(const int index)
|
||||
return s.c_str();
|
||||
}
|
||||
|
||||
UDPWrapper::UDPWrapper(int indx, const char* const _name) :
|
||||
UDPWrapper::UDPWrapper(int indx, const char* const _name) :
|
||||
ControllerEmu::ControlGroup(_name,GROUP_TYPE_UDPWII),
|
||||
inst(NULL), index(indx),
|
||||
updIR(false),updAccel(false),
|
||||
|
@ -105,7 +105,7 @@ KeySym wxCharCodeWXToX(int id)
|
||||
if (id >= 65 && id <= 90)
|
||||
// Standard uppercase letter: return lowercase keycode
|
||||
keySym = (KeySym)id + 32;
|
||||
else
|
||||
else
|
||||
// All other keyboard characters
|
||||
keySym = id <= 255 ? (KeySym)id : 0;
|
||||
}
|
||||
@ -126,7 +126,7 @@ int wxKeyModWXToX(int modstate)
|
||||
#endif
|
||||
void XKeyToString(unsigned int keycode, char *keyStr) {
|
||||
switch (keycode)
|
||||
{
|
||||
{
|
||||
case XK_Insert:
|
||||
sprintf(keyStr, "INSERT");
|
||||
break;
|
||||
@ -148,10 +148,10 @@ void XKeyToString(unsigned int keycode, char *keyStr) {
|
||||
case XK_Left:
|
||||
sprintf(keyStr, "LEFT");
|
||||
break;
|
||||
case XK_Up:
|
||||
case XK_Up:
|
||||
sprintf(keyStr, "UP");
|
||||
break;
|
||||
case XK_Right:
|
||||
case XK_Right:
|
||||
sprintf(keyStr, "RIGHT");
|
||||
break;
|
||||
case XK_Down:
|
||||
@ -178,10 +178,10 @@ void XKeyToString(unsigned int keycode, char *keyStr) {
|
||||
case XK_KP_Left:
|
||||
sprintf(keyStr, "KP LEFT");
|
||||
break;
|
||||
case XK_KP_Up:
|
||||
case XK_KP_Up:
|
||||
sprintf(keyStr, "KP UP");
|
||||
break;
|
||||
case XK_KP_Right:
|
||||
case XK_KP_Right:
|
||||
sprintf(keyStr, "KP RIGHT");
|
||||
break;
|
||||
case XK_KP_Down:
|
||||
|
Reference in New Issue
Block a user