Move XInputBase from PadSimple to InputCommon,

Start work on X11 input for wiimote plugin mapping (copy XTra-KrazzY's fix for PadSimple)

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3721 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
LPFaint99
2009-07-09 06:50:22 +00:00
parent 19ad53ea58
commit 722ee4cd06
12 changed files with 55 additions and 32 deletions

View File

@ -106,7 +106,7 @@ inline void AddControl(wxPanel *pan, wxButton **button, wxStaticBoxSizer *sizer,
#ifdef _WIN32
DInput::DIKToString(pad[controller].keyForControl[ctl], keyStr);
#elif defined(HAVE_X11) && HAVE_X11
XKeyToString(pad[controller].keyForControl[ctl], keyStr);
InputCommon::XKeyToString(pad[controller].keyForControl[ctl], keyStr);
#endif
// Add the button to its sizer
@ -355,9 +355,9 @@ void PADConfigDialogSimple::OnKeyDown(wxKeyEvent& event)
}
}
#elif defined(HAVE_X11) && HAVE_X11
pad[page].keyForControl[ClickedButton->GetId()] = wxCharCodeWXToX(event.GetKeyCode());
pad[page].keyForControl[ClickedButton->GetId()] = InputCommon::wxCharCodeWXToX(event.GetKeyCode());
XKeyToString(pad[page].keyForControl[ClickedButton->GetId()], keyStr);
InputCommon::XKeyToString(pad[page].keyForControl[ClickedButton->GetId()], keyStr);
ClickedButton->SetLabel(wxString::FromAscii(keyStr));
#endif
ClickedButton->Disconnect();

View File

@ -30,7 +30,7 @@
#include <wx/gbsizer.h>
#if defined(HAVE_X11) && HAVE_X11
#include "../XInputBase.h"
#include "X11InputBase.h"
#endif
class PADConfigDialogSimple : public wxDialog

View File

@ -28,15 +28,10 @@ if padenv['HAVE_WX']:
"GUI/ConfigDlg.cpp",
]
if env['HAVE_X11']:
files += [
"XInputBase.cpp",
]
if padenv['HAVE_COCOA']:
padenv.Append( CXXFLAGS = compileFlags,
LIBS = [ 'common' ])
else:
padenv.Append(LIBS = [ 'common' ])
padenv.Append(LIBS = [ 'common', 'inputcommon' ])
padenv.SharedLibrary(env['plugin_dir']+name, files)

View File

@ -1,129 +0,0 @@
#include "XInputBase.h"
// Taken from wxw source code
KeySym wxCharCodeWXToX(int id)
{
KeySym keySym;
switch (id)
{
case WXK_CANCEL: keySym = XK_Cancel; break;
case WXK_BACK: keySym = XK_BackSpace; break;
case WXK_TAB: keySym = XK_Tab; break;
case WXK_CLEAR: keySym = XK_Clear; break;
case WXK_RETURN: keySym = XK_Return; break;
case WXK_SHIFT: keySym = XK_Shift_L; break;
case WXK_CONTROL: keySym = XK_Control_L; break;
case WXK_ALT: keySym = XK_Meta_L; break;
case WXK_CAPITAL: keySym = XK_Caps_Lock; break;
case WXK_MENU : keySym = XK_Menu; break;
case WXK_PAUSE: keySym = XK_Pause; break;
case WXK_ESCAPE: keySym = XK_Escape; break;
case WXK_SPACE: keySym = ' '; break;
case WXK_PAGEUP: keySym = XK_Prior; break;
case WXK_PAGEDOWN: keySym = XK_Next; break;
case WXK_END: keySym = XK_End; break;
case WXK_HOME : keySym = XK_Home; break;
case WXK_LEFT : keySym = XK_Left; break;
case WXK_UP: keySym = XK_Up; break;
case WXK_RIGHT: keySym = XK_Right; break;
case WXK_DOWN : keySym = XK_Down; break;
case WXK_SELECT: keySym = XK_Select; break;
case WXK_PRINT: keySym = XK_Print; break;
case WXK_EXECUTE: keySym = XK_Execute; break;
case WXK_INSERT: keySym = XK_Insert; break;
case WXK_DELETE: keySym = XK_Delete; break;
case WXK_HELP : keySym = XK_Help; break;
case WXK_NUMPAD0: keySym = XK_KP_0; break; case WXK_NUMPAD_INSERT: keySym = XK_KP_Insert; break;
case WXK_NUMPAD1: keySym = XK_KP_1; break; case WXK_NUMPAD_END: keySym = XK_KP_End; break;
case WXK_NUMPAD2: keySym = XK_KP_2; break; case WXK_NUMPAD_DOWN: keySym = XK_KP_Down; break;
case WXK_NUMPAD3: keySym = XK_KP_3; break; case WXK_NUMPAD_PAGEDOWN: keySym = XK_KP_Page_Down; break;
case WXK_NUMPAD4: keySym = XK_KP_4; break; case WXK_NUMPAD_LEFT: keySym = XK_KP_Left; break;
case WXK_NUMPAD5: keySym = XK_KP_5; break;
case WXK_NUMPAD6: keySym = XK_KP_6; break; case WXK_NUMPAD_RIGHT: keySym = XK_KP_Right; break;
case WXK_NUMPAD7: keySym = XK_KP_7; break; case WXK_NUMPAD_HOME: keySym = XK_KP_Home; break;
case WXK_NUMPAD8: keySym = XK_KP_8; break; case WXK_NUMPAD_UP: keySym = XK_KP_Up; break;
case WXK_NUMPAD9: keySym = XK_KP_9; break; case WXK_NUMPAD_PAGEUP: keySym = XK_KP_Page_Up; break;
case WXK_NUMPAD_DECIMAL: keySym = XK_KP_Decimal; break; case WXK_NUMPAD_DELETE: keySym = XK_KP_Delete; break;
case WXK_NUMPAD_MULTIPLY: keySym = XK_KP_Multiply; break;
case WXK_NUMPAD_ADD: keySym = XK_KP_Add; break;
case WXK_NUMPAD_SUBTRACT: keySym = XK_KP_Subtract; break;
case WXK_NUMPAD_DIVIDE: keySym = XK_KP_Divide; break;
case WXK_NUMPAD_ENTER: keySym = XK_KP_Enter; break;
case WXK_NUMPAD_SEPARATOR: keySym = XK_KP_Separator; break;
case WXK_F1: keySym = XK_F1; break;
case WXK_F2: keySym = XK_F2; break;
case WXK_F3: keySym = XK_F3; break;
case WXK_F4: keySym = XK_F4; break;
case WXK_F5: keySym = XK_F5; break;
case WXK_F6: keySym = XK_F6; break;
case WXK_F7: keySym = XK_F7; break;
case WXK_F8: keySym = XK_F8; break;
case WXK_F9: keySym = XK_F9; break;
case WXK_F10: keySym = XK_F10; break;
case WXK_F11: keySym = XK_F11; break;
case WXK_F12: keySym = XK_F12; break;
case WXK_F13: keySym = XK_F13; break;
case WXK_F14: keySym = XK_F14; break;
case WXK_F15: keySym = XK_F15; break;
case WXK_F16: keySym = XK_F16; break;
case WXK_F17: keySym = XK_F17; break;
case WXK_F18: keySym = XK_F18; break;
case WXK_F19: keySym = XK_F19; break;
case WXK_F20: keySym = XK_F20; break;
case WXK_F21: keySym = XK_F21; break;
case WXK_F22: keySym = XK_F22; break;
case WXK_F23: keySym = XK_F23; break;
case WXK_F24: keySym = XK_F24; break;
case WXK_NUMLOCK: keySym = XK_Num_Lock; break;
case WXK_SCROLL: keySym = XK_Scroll_Lock; break;
default: keySym = id <= 255 ? (KeySym)id : 0;
}
return keySym;
}
void XKeyToString(unsigned int keycode, char *keyStr) {
switch (keycode) {
case XK_Left:
sprintf(keyStr, "LEFT");
break;
case XK_Up:
sprintf(keyStr, "UP");
break;
case XK_Right:
sprintf(keyStr, "RIGHT");
break;
case XK_Down:
sprintf(keyStr, "DOWN");
break;
case XK_Return:
sprintf(keyStr, "RETURN");
break;
case XK_KP_Enter:
sprintf(keyStr, "KP ENTER");
break;
case XK_KP_Left:
sprintf(keyStr, "KP LEFT");
break;
case XK_KP_Up:
sprintf(keyStr, "KP UP");
break;
case XK_KP_Right:
sprintf(keyStr, "KP RIGHT");
break;
case XK_KP_Down:
sprintf(keyStr, "KP DOWN");
break;
case XK_Shift_L:
sprintf(keyStr, "LShift");
break;
case XK_Control_L:
sprintf(keyStr, "LControl");
break;
default:
sprintf(keyStr, "%c", toupper(keycode));
}
}

View File

@ -1,12 +0,0 @@
#ifndef XINPUTBASE_H
#define XINPUTBASE_H
#include <X11/X.h>
#include <X11/keysym.h>
#include <wx/wx.h>
KeySym wxCharCodeWXToX(int id);
void XKeyToString(unsigned int keycode, char *keyStr);
#endif

View File

@ -26,18 +26,6 @@
#include "EmuDefinitions.h" // for PadMapping
#include "main.h"
// TODO: Figure out what to do for non-Win32
#ifndef _WIN32
#define VK_LEFT 0
#define VK_RIGHT 0
#define VK_UP 0
#define VK_DOWN 0
#define VK_NUMPAD4 0
#define VK_NUMPAD6 0
#define VK_NUMPAD8 0
#define VK_NUMPAD5 0
#endif
Config g_Config;
Config::Config()

View File

@ -199,12 +199,15 @@ static int wmDefaultControls[] =
VK_LEFT, // Regular directional keys
VK_RIGHT,
VK_UP,
VK_DOWN,
VK_DOWN,
#else
0,0,0,0,
#endif
83, // WmShake (S)
51, // WmPitchL (3)
52, // WmPitchR (4)
};
static int nCDefaultControls[] =
{
90, // NcZ Z
@ -214,6 +217,8 @@ static int nCDefaultControls[] =
VK_NUMPAD6, // NcR
VK_NUMPAD8, // NcU
VK_NUMPAD5, // NcD
#else
0,0,0,0,
#endif
68, // NcShake D
};
@ -236,6 +241,8 @@ static int ccDefaultControls[] =
VK_NUMPAD8, // CcDu
VK_NUMPAD6, // CcDr
VK_NUMPAD5, // CcDd
#else
0,0,0,0,
#endif
0x4a, // CcLl J
0x49, // CcLu I

View File

@ -199,6 +199,17 @@ void WiimotePadConfigDialog::UpdateGUIButtonMapping(int controller)
m_Button_GH3[x][controller]->SetLabel(wxString::FromAscii(
InputCommon::VKToString(WiiMoteEmu::PadMapping[controller].GH3c.keyForControls[x]).c_str()));
}
#else
if(g_Config.iExtensionConnected == EXT_GUITARHERO3_CONTROLLER)
{
//TODO: fix this and add for all key settings
for (int x = 0; x < GH3_CONTROLS; x++)
{
char keyStr[10] = {0};
//InputCommon::XKeyToString(WiiMoteEmu::PadMapping[controller].GH3c.keyForControls[x], keyStr);
m_Button_GH3[x][controller]->SetLabel(wxString::FromAscii(keyStr));
}
}
#endif
//INFO_LOG(CONSOLE, "m_bWmA[%i] = %i = %s\n", controller, WiiMoteEmu::PadMapping[controller].Wm.keyForControls[0], InputCommon::VKToString(WiiMoteEmu::PadMapping[controller].Wm.keyForControls[0]).c_str());

View File

@ -142,7 +142,7 @@ void WiimotePadConfigDialog::OnKeyDown(wxKeyEvent& event)
g_Pressed = event.GetKeyCode();
// Handle the keyboard key mapping
std::string StrKey;
char keyStr[64] = {0};
if(ClickedButton != NULL)
{
// Allow the escape key to set a blank key
@ -164,15 +164,17 @@ void WiimotePadConfigDialog::OnKeyDown(wxKeyEvent& event)
// Use the left and right specific keys instead of the common ones
if (i == VK_SHIFT || i == VK_CONTROL || i == VK_MENU) continue;
// Update the button label
char KeyStr[64] = {0}; strcpy(KeyStr, InputCommon::VKToString(i).c_str());
SetButtonText(ClickedButton->GetId(), KeyStr);
strcpy(keyStr, InputCommon::VKToString(i).c_str());
SetButtonText(ClickedButton->GetId(), keyStr);
// Save the setting
SaveKeyboardMapping(Page, ClickedButton->GetId(), i);
}
}
#elif defined(HAVE_X11) && HAVE_X11
//pad[page].keyForControl[ClickedButton->GetId()] = wxCharCodeWXToX(event.GetKeyCode());
//ClickedButton->SetLabel(wxString::Format(_T("%c"), event.GetKeyCode()));
g_Pressed = InputCommon::wxCharCodeWXToX(g_Pressed);
InputCommon::XKeyToString(g_Pressed, keyStr);
SetButtonText(ClickedButton->GetId(), keyStr);
SaveKeyboardMapping(Page, ClickedButton->GetId(), g_Pressed);
#endif
}
ClickedButton = NULL;

View File

@ -31,6 +31,14 @@
#include <wx/panel.h>
#include <wx/gbsizer.h>
#if defined(HAVE_X11) && HAVE_X11
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/keysym.h>
#include <X11/XKBlib.h>
#include "X11InputBase.h"
#endif
#define GH3_CONTROLS 14
class WiimotePadConfigDialog : public wxDialog

View File

@ -26,6 +26,10 @@ if wmenv['HAVE_WX']:
"ConfigRecording.cpp",
"FillReport.cpp",
]
if wmenv['HAVE_X11']:
files += [
"XInputBase.cpp",
]
libs = [ 'common', 'inputcommon' ]