mirror of
https://github.com/libretro/scummvm.git
synced 2025-01-06 18:00:44 +00:00
3b27b9fa43
svn-id: r31034
551 lines
18 KiB
C++
551 lines
18 KiB
C++
/* ScummVM - Graphic Adventure Engine
|
|
*
|
|
* ScummVM is the legal property of its developers, whose names
|
|
* are too numerous to list here. Please refer to the COPYRIGHT
|
|
* file distributed with this source distribution.
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; either version 2
|
|
* of the License, or (at your option) any later version.
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
*
|
|
* $URL$
|
|
* $Id$
|
|
*
|
|
*/
|
|
|
|
#include <kernel.h>
|
|
#include <malloc.h>
|
|
#include <assert.h>
|
|
#include <libmouse.h>
|
|
#include "backends/platform/ps2/rpckbd.h"
|
|
#include "backends/platform/ps2/ps2input.h"
|
|
#include "backends/platform/ps2/ps2pad.h"
|
|
#include "backends/platform/ps2/systemps2.h"
|
|
#include "common/events.h"
|
|
#include "common/system.h"
|
|
|
|
Ps2Input::Ps2Input(OSystem_PS2 *system, bool mouseLoaded, bool kbdLoaded) {
|
|
_system = system;
|
|
_mouseLoaded = mouseLoaded;
|
|
_kbdLoaded = kbdLoaded;
|
|
_pad = new Ps2Pad(system);
|
|
_lastPadCheck = 0;
|
|
_posX = _posY = _mButtons = _padLastButtons = 0;
|
|
_padAccel = 0;
|
|
_minx = _miny = 0;
|
|
_maxy = 239;
|
|
_maxx = 319;
|
|
_keyFlags = 0;
|
|
if (_mouseLoaded) {
|
|
if (PS2MouseInit() >= 0) {
|
|
PS2MouseSetReadMode(PS2MOUSE_READMODE_ABS);
|
|
printf("PS2Mouse initialized\n");
|
|
} else { // shouldn't happen if the drivers were correctly loaded
|
|
printf("unable to initialize PS2Mouse!\n");
|
|
_mouseLoaded = false;
|
|
}
|
|
}
|
|
if (_kbdLoaded) {
|
|
if (PS2KbdInit() >= 0) {
|
|
PS2KbdSetReadmode(PS2KBD_READMODE_RAW);
|
|
printf("PS2Kbd initialized\n");
|
|
} else {
|
|
printf("unable to initialize PS2Kbd!\n");
|
|
_kbdLoaded = false;
|
|
}
|
|
}
|
|
}
|
|
|
|
Ps2Input::~Ps2Input(void) {
|
|
}
|
|
|
|
void Ps2Input::newRange(uint16 minx, uint16 miny, uint16 maxx, uint16 maxy) {
|
|
_minx = minx;
|
|
_miny = miny;
|
|
_maxx = maxx;
|
|
_maxy = maxy;
|
|
if (_mouseLoaded)
|
|
PS2MouseSetBoundary(minx, maxx, miny, maxy);
|
|
warpTo(_posX, _posY);
|
|
}
|
|
|
|
void Ps2Input::warpTo(uint16 x, uint16 y) {
|
|
if ((x >= _minx) && (x <= _maxx) && (y >= _miny) && (y <= _maxy)) {
|
|
_posX = x;
|
|
_posY = y;
|
|
} else {
|
|
_posX = (x < _minx) ? (_minx) : ((x > _maxx) ? (_maxx) : (x));
|
|
_posY = (y < _miny) ? (_miny) : ((y > _maxy) ? (_maxy) : (y));
|
|
}
|
|
if (_mouseLoaded)
|
|
PS2MouseSetPosition(_posX, _posY);
|
|
}
|
|
|
|
#define JOY_THRESHOLD 30
|
|
#define PAD_CHECK_TIME 20
|
|
|
|
int Ps2Input::mapKey(int key, int mod) { // copied from sdl backend
|
|
if (key >= Common::KEYCODE_F1 && key <= Common::KEYCODE_F9) {
|
|
return key - Common::KEYCODE_F1 + Common::ASCII_F1;
|
|
} else if (key >= Common::KEYCODE_KP0 && key <= Common::KEYCODE_KP9) {
|
|
return key - Common::KEYCODE_KP0 + '0';
|
|
} else if (key >= Common::KEYCODE_UP && key <= Common::KEYCODE_PAGEDOWN) {
|
|
return key;
|
|
} else if (key >= 'a' && key <= 'z' && mod & Common::KBD_SHIFT) {
|
|
return key & ~0x20;
|
|
} else if (key >= Common::KEYCODE_NUMLOCK && key <= Common::KEYCODE_EURO) {
|
|
return 0;
|
|
}
|
|
return key;
|
|
}
|
|
|
|
bool Ps2Input::pollEvent(Common::Event *event) {
|
|
bool checkPadMouse, checkPadKbd;
|
|
checkPadMouse = checkPadKbd = _pad->padAlive();
|
|
|
|
if (_mouseLoaded && (PS2MouseEnum() > 0)) { // usb mouse connected
|
|
mouse_data mData;
|
|
PS2MouseRead(&mData);
|
|
if ((_posX != mData.x) || (_posY != mData.y)) {
|
|
event->mouse.x = _posX = mData.x;
|
|
event->mouse.y = _posY = mData.y;
|
|
event->type = Common::EVENT_MOUSEMOVE;
|
|
return true;
|
|
}
|
|
if (mData.buttons != _mButtons) {
|
|
uint16 change = _mButtons ^ mData.buttons;
|
|
_mButtons = mData.buttons;
|
|
if (change & (PS2MOUSE_BTN1 | PS2MOUSE_BTN2)) {
|
|
if (change & PS2MOUSE_BTN1)
|
|
event->type = (_mButtons & PS2MOUSE_BTN1) ? Common::EVENT_LBUTTONDOWN : Common::EVENT_LBUTTONUP;
|
|
else
|
|
event->type = (_mButtons & PS2MOUSE_BTN2) ? Common::EVENT_RBUTTONDOWN : Common::EVENT_RBUTTONUP;
|
|
event->mouse.x = _posX;
|
|
event->mouse.y = _posY;
|
|
return true;
|
|
}
|
|
}
|
|
checkPadMouse = false;
|
|
}
|
|
if (_kbdLoaded) { // there's no way to tell if there's actually a keyboard connected
|
|
PS2KbdRawKey key;
|
|
if (PS2KbdReadRaw(&key) == 1) {
|
|
if (_usbToSdlk[key.key]) {
|
|
if ((_usbToSdlk[key.key] == Common::KEYCODE_LSHIFT) || (_usbToSdlk[key.key] == Common::KEYCODE_RSHIFT)) {
|
|
if (key.state & 1)
|
|
_keyFlags |= Common::KBD_SHIFT;
|
|
else
|
|
_keyFlags &= ~Common::KBD_SHIFT;
|
|
} else if ((_usbToSdlk[key.key] == Common::KEYCODE_LCTRL) || (_usbToSdlk[key.key] == Common::KEYCODE_RCTRL)) {
|
|
if (key.state & 1)
|
|
_keyFlags |= Common::KBD_CTRL;
|
|
else
|
|
_keyFlags &= ~Common::KBD_CTRL;
|
|
} else if ((_usbToSdlk[key.key] == Common::KEYCODE_LALT) || (_usbToSdlk[key.key] == Common::KEYCODE_RALT)) {
|
|
if (key.state & 1)
|
|
_keyFlags |= Common::KBD_ALT;
|
|
else
|
|
_keyFlags &= ~Common::KBD_ALT;
|
|
}
|
|
if (key.state & 1) // down
|
|
event->type = Common::EVENT_KEYDOWN;
|
|
else
|
|
event->type = Common::EVENT_KEYUP;
|
|
event->kbd.flags = 0;
|
|
event->kbd.keycode = _usbToSdlk[key.key];
|
|
event->kbd.ascii = mapKey(_usbToSdlk[key.key], _keyFlags);
|
|
return true;
|
|
} else
|
|
printf("unknown keycode %02X - %02X\n", key.state, key.key);
|
|
}
|
|
}
|
|
if (checkPadMouse || checkPadKbd) {
|
|
// no usb mouse, simulate it using the pad
|
|
uint16 buttons;
|
|
int16 joyh, joyv;
|
|
_pad->readPad(&buttons, &joyh, &joyv);
|
|
uint16 btnChange = buttons ^ _padLastButtons;
|
|
|
|
if (checkPadMouse) {
|
|
if (btnChange & (PAD_CROSS | PAD_CIRCLE)) {
|
|
if (btnChange & PAD_CROSS)
|
|
event->type = (buttons & PAD_CROSS) ? Common::EVENT_LBUTTONDOWN : Common::EVENT_LBUTTONUP;
|
|
else
|
|
event->type = (buttons & PAD_CIRCLE) ? Common::EVENT_RBUTTONDOWN : Common::EVENT_RBUTTONUP;
|
|
event->mouse.x = _posX;
|
|
event->mouse.y = _posY;
|
|
_padLastButtons = buttons;
|
|
return true;
|
|
}
|
|
uint32 time = _system->getMillis();
|
|
if (time - _lastPadCheck > PAD_CHECK_TIME) {
|
|
_lastPadCheck = time;
|
|
int16 newX = _posX;
|
|
int16 newY = _posY;
|
|
if ((ABS(joyh) > JOY_THRESHOLD) || (ABS(joyv) > JOY_THRESHOLD)) {
|
|
newX += joyh / 20;
|
|
newY += joyv / 20;
|
|
} else if (buttons & PAD_DIR_MASK) {
|
|
if (_padLastButtons & PAD_DIR_MASK) {
|
|
if (_padAccel < 16)
|
|
_padAccel++;
|
|
} else
|
|
_padAccel = 0;
|
|
_padLastButtons = buttons;
|
|
if (buttons & PAD_LEFT)
|
|
newX -= _padAccel >> 2;
|
|
if (buttons & PAD_RIGHT)
|
|
newX += _padAccel >> 2;
|
|
if (buttons & PAD_UP)
|
|
newY -= _padAccel >> 2;
|
|
if (buttons & PAD_DOWN)
|
|
newY += _padAccel >> 2;
|
|
}
|
|
newX = ((newX < (int16)_minx) ? (_minx) : ((newX > (int16)_maxx) ? (_maxx) : ((int16)newX)));
|
|
newY = ((newY < (int16)_miny) ? (_miny) : ((newY > (int16)_maxy) ? (_maxy) : ((int16)newY)));
|
|
if ((_posX != newX) || (_posY != newY)) {
|
|
event->type = Common::EVENT_MOUSEMOVE;
|
|
event->mouse.x = _posX = newX;
|
|
event->mouse.y = _posY = newY;
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
if (checkPadKbd) {
|
|
if (getKeyEvent(event, btnChange, (btnChange & buttons) != 0)) {
|
|
_padLastButtons = buttons;
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
bool Ps2Input::getKeyEvent(Common::Event *event, uint16 buttonCode, bool down) {
|
|
// for simulating key presses with the pad
|
|
if (buttonCode) {
|
|
uint8 entry = 0;
|
|
while (!(buttonCode & 1)) {
|
|
entry++;
|
|
buttonCode >>= 1;
|
|
}
|
|
if (_padCodes[entry]) {
|
|
event->type = (down) ? Common::EVENT_KEYDOWN : Common::EVENT_KEYUP;
|
|
event->kbd.keycode = _padCodes[entry];
|
|
event->kbd.flags = _padFlags[entry];
|
|
event->kbd.ascii = mapKey(_padCodes[entry], _padFlags[entry]);
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
const Common::KeyCode Ps2Input::_usbToSdlk[0x100] = {
|
|
/* 00 */ Common::KEYCODE_INVALID,
|
|
/* 01 */ Common::KEYCODE_INVALID,
|
|
/* 02 */ Common::KEYCODE_INVALID,
|
|
/* 03 */ Common::KEYCODE_INVALID,
|
|
/* 04 */ Common::KEYCODE_a,
|
|
/* 05 */ Common::KEYCODE_b,
|
|
/* 06 */ Common::KEYCODE_c,
|
|
/* 07 */ Common::KEYCODE_d,
|
|
/* 08 */ Common::KEYCODE_e,
|
|
/* 09 */ Common::KEYCODE_f,
|
|
/* 0A */ Common::KEYCODE_g,
|
|
/* 0B */ Common::KEYCODE_h,
|
|
/* 0C */ Common::KEYCODE_i,
|
|
/* 0D */ Common::KEYCODE_j,
|
|
/* 0E */ Common::KEYCODE_k,
|
|
/* 0F */ Common::KEYCODE_l,
|
|
/* 10 */ Common::KEYCODE_m,
|
|
/* 11 */ Common::KEYCODE_n,
|
|
/* 12 */ Common::KEYCODE_o,
|
|
/* 13 */ Common::KEYCODE_p,
|
|
/* 14 */ Common::KEYCODE_q,
|
|
/* 15 */ Common::KEYCODE_r,
|
|
/* 16 */ Common::KEYCODE_s,
|
|
/* 17 */ Common::KEYCODE_t,
|
|
/* 18 */ Common::KEYCODE_u,
|
|
/* 19 */ Common::KEYCODE_v,
|
|
/* 1A */ Common::KEYCODE_w,
|
|
/* 1B */ Common::KEYCODE_x,
|
|
/* 1C */ Common::KEYCODE_y,
|
|
/* 1D */ Common::KEYCODE_z,
|
|
/* 1E */ Common::KEYCODE_1,
|
|
/* 1F */ Common::KEYCODE_2,
|
|
/* 20 */ Common::KEYCODE_3,
|
|
/* 21 */ Common::KEYCODE_4,
|
|
/* 22 */ Common::KEYCODE_5,
|
|
/* 23 */ Common::KEYCODE_6,
|
|
/* 24 */ Common::KEYCODE_7,
|
|
/* 25 */ Common::KEYCODE_8,
|
|
/* 26 */ Common::KEYCODE_9,
|
|
/* 27 */ Common::KEYCODE_0,
|
|
/* 28 */ Common::KEYCODE_RETURN,
|
|
/* 29 */ Common::KEYCODE_ESCAPE,
|
|
/* 2A */ Common::KEYCODE_BACKSPACE,
|
|
/* 2B */ Common::KEYCODE_TAB,
|
|
/* 2C */ Common::KEYCODE_SPACE,
|
|
/* 2D */ Common::KEYCODE_MINUS,
|
|
/* 2E */ Common::KEYCODE_EQUALS,
|
|
/* 2F */ Common::KEYCODE_LEFTBRACKET,
|
|
/* 30 */ Common::KEYCODE_RIGHTBRACKET,
|
|
/* 31 */ Common::KEYCODE_BACKSLASH,
|
|
/* 32 */ Common::KEYCODE_HASH,
|
|
/* 33 */ Common::KEYCODE_SEMICOLON,
|
|
/* 34 */ Common::KEYCODE_QUOTE,
|
|
/* 35 */ Common::KEYCODE_BACKQUOTE,
|
|
/* 36 */ Common::KEYCODE_COMMA,
|
|
/* 37 */ Common::KEYCODE_PERIOD,
|
|
/* 38 */ Common::KEYCODE_SLASH,
|
|
/* 39 */ Common::KEYCODE_CAPSLOCK,
|
|
/* 3A */ Common::KEYCODE_F1,
|
|
/* 3B */ Common::KEYCODE_F2,
|
|
/* 3C */ Common::KEYCODE_F3,
|
|
/* 3D */ Common::KEYCODE_F4,
|
|
/* 3E */ Common::KEYCODE_F5,
|
|
/* 3F */ Common::KEYCODE_F6,
|
|
/* 40 */ Common::KEYCODE_F7,
|
|
/* 41 */ Common::KEYCODE_F8,
|
|
/* 42 */ Common::KEYCODE_F9,
|
|
/* 43 */ Common::KEYCODE_F10,
|
|
/* 44 */ Common::KEYCODE_F11,
|
|
/* 45 */ Common::KEYCODE_F12,
|
|
/* 46 */ Common::KEYCODE_PRINT,
|
|
/* 47 */ Common::KEYCODE_SCROLLOCK,
|
|
/* 48 */ Common::KEYCODE_PAUSE,
|
|
/* 49 */ Common::KEYCODE_INSERT,
|
|
/* 4A */ Common::KEYCODE_HOME,
|
|
/* 4B */ Common::KEYCODE_PAGEUP,
|
|
/* 4C */ Common::KEYCODE_DELETE,
|
|
/* 4D */ Common::KEYCODE_END,
|
|
/* 4E */ Common::KEYCODE_PAGEDOWN,
|
|
/* 4F */ Common::KEYCODE_RIGHT,
|
|
/* 50 */ Common::KEYCODE_LEFT,
|
|
/* 51 */ Common::KEYCODE_DOWN,
|
|
/* 52 */ Common::KEYCODE_UP,
|
|
/* 53 */ Common::KEYCODE_NUMLOCK,
|
|
/* 54 */ Common::KEYCODE_KP_DIVIDE,
|
|
/* 55 */ Common::KEYCODE_KP_MULTIPLY,
|
|
/* 56 */ Common::KEYCODE_KP_MINUS,
|
|
/* 57 */ Common::KEYCODE_KP_PLUS,
|
|
/* 58 */ Common::KEYCODE_KP_ENTER,
|
|
/* 59 */ Common::KEYCODE_KP1,
|
|
/* 5A */ Common::KEYCODE_KP2,
|
|
/* 5B */ Common::KEYCODE_KP3,
|
|
/* 5C */ Common::KEYCODE_KP4,
|
|
/* 5D */ Common::KEYCODE_KP5,
|
|
/* 5E */ Common::KEYCODE_KP6,
|
|
/* 5F */ Common::KEYCODE_KP7,
|
|
/* 60 */ Common::KEYCODE_KP8,
|
|
/* 61 */ Common::KEYCODE_KP9,
|
|
/* 62 */ Common::KEYCODE_KP0,
|
|
/* 63 */ Common::KEYCODE_KP_PERIOD,
|
|
/* 64 */ Common::KEYCODE_INVALID,
|
|
/* 65 */ Common::KEYCODE_INVALID,
|
|
/* 66 */ Common::KEYCODE_INVALID,
|
|
/* 67 */ Common::KEYCODE_KP_EQUALS,
|
|
/* 68 */ Common::KEYCODE_INVALID,
|
|
/* 69 */ Common::KEYCODE_INVALID,
|
|
/* 6A */ Common::KEYCODE_INVALID,
|
|
/* 6B */ Common::KEYCODE_INVALID,
|
|
/* 6C */ Common::KEYCODE_INVALID,
|
|
/* 6D */ Common::KEYCODE_INVALID,
|
|
/* 6E */ Common::KEYCODE_INVALID,
|
|
/* 6F */ Common::KEYCODE_INVALID,
|
|
/* 70 */ Common::KEYCODE_INVALID,
|
|
/* 71 */ Common::KEYCODE_INVALID,
|
|
/* 72 */ Common::KEYCODE_INVALID,
|
|
/* 73 */ Common::KEYCODE_INVALID,
|
|
/* 74 */ Common::KEYCODE_INVALID,
|
|
/* 75 */ Common::KEYCODE_INVALID,
|
|
/* 76 */ Common::KEYCODE_INVALID,
|
|
/* 77 */ Common::KEYCODE_INVALID,
|
|
/* 78 */ Common::KEYCODE_INVALID,
|
|
/* 79 */ Common::KEYCODE_INVALID,
|
|
/* 7A */ Common::KEYCODE_INVALID,
|
|
/* 7B */ Common::KEYCODE_INVALID,
|
|
/* 7C */ Common::KEYCODE_INVALID,
|
|
/* 7D */ Common::KEYCODE_INVALID,
|
|
/* 7E */ Common::KEYCODE_INVALID,
|
|
/* 7F */ Common::KEYCODE_INVALID,
|
|
/* 80 */ Common::KEYCODE_INVALID,
|
|
/* 81 */ Common::KEYCODE_INVALID,
|
|
/* 82 */ Common::KEYCODE_INVALID,
|
|
/* 83 */ Common::KEYCODE_INVALID,
|
|
/* 84 */ Common::KEYCODE_INVALID,
|
|
/* 85 */ Common::KEYCODE_INVALID,
|
|
/* 86 */ Common::KEYCODE_INVALID,
|
|
/* 87 */ Common::KEYCODE_INVALID,
|
|
/* 88 */ Common::KEYCODE_INVALID,
|
|
/* 89 */ Common::KEYCODE_INVALID,
|
|
/* 8A */ Common::KEYCODE_INVALID,
|
|
/* 8B */ Common::KEYCODE_INVALID,
|
|
/* 8C */ Common::KEYCODE_INVALID,
|
|
/* 8D */ Common::KEYCODE_INVALID,
|
|
/* 8E */ Common::KEYCODE_INVALID,
|
|
/* 8F */ Common::KEYCODE_INVALID,
|
|
/* 90 */ Common::KEYCODE_INVALID,
|
|
/* 91 */ Common::KEYCODE_INVALID,
|
|
/* 92 */ Common::KEYCODE_INVALID,
|
|
/* 93 */ Common::KEYCODE_INVALID,
|
|
/* 94 */ Common::KEYCODE_INVALID,
|
|
/* 95 */ Common::KEYCODE_INVALID,
|
|
/* 96 */ Common::KEYCODE_INVALID,
|
|
/* 97 */ Common::KEYCODE_INVALID,
|
|
/* 98 */ Common::KEYCODE_INVALID,
|
|
/* 99 */ Common::KEYCODE_INVALID,
|
|
/* 9A */ Common::KEYCODE_INVALID,
|
|
/* 9B */ Common::KEYCODE_INVALID,
|
|
/* 9C */ Common::KEYCODE_INVALID,
|
|
/* 9D */ Common::KEYCODE_INVALID,
|
|
/* 9E */ Common::KEYCODE_INVALID,
|
|
/* 9F */ Common::KEYCODE_INVALID,
|
|
/* A0 */ Common::KEYCODE_INVALID,
|
|
/* A1 */ Common::KEYCODE_INVALID,
|
|
/* A2 */ Common::KEYCODE_INVALID,
|
|
/* A3 */ Common::KEYCODE_INVALID,
|
|
/* A4 */ Common::KEYCODE_INVALID,
|
|
/* A5 */ Common::KEYCODE_INVALID,
|
|
/* A6 */ Common::KEYCODE_INVALID,
|
|
/* A7 */ Common::KEYCODE_INVALID,
|
|
/* A8 */ Common::KEYCODE_INVALID,
|
|
/* A9 */ Common::KEYCODE_INVALID,
|
|
/* AA */ Common::KEYCODE_INVALID,
|
|
/* AB */ Common::KEYCODE_INVALID,
|
|
/* AC */ Common::KEYCODE_INVALID,
|
|
/* AD */ Common::KEYCODE_INVALID,
|
|
/* AE */ Common::KEYCODE_INVALID,
|
|
/* AF */ Common::KEYCODE_INVALID,
|
|
/* B0 */ Common::KEYCODE_INVALID,
|
|
/* B1 */ Common::KEYCODE_INVALID,
|
|
/* B2 */ Common::KEYCODE_INVALID,
|
|
/* B3 */ Common::KEYCODE_INVALID,
|
|
/* B4 */ Common::KEYCODE_INVALID,
|
|
/* B5 */ Common::KEYCODE_INVALID,
|
|
/* B6 */ Common::KEYCODE_INVALID,
|
|
/* B7 */ Common::KEYCODE_INVALID,
|
|
/* B8 */ Common::KEYCODE_INVALID,
|
|
/* B9 */ Common::KEYCODE_INVALID,
|
|
/* BA */ Common::KEYCODE_INVALID,
|
|
/* BB */ Common::KEYCODE_INVALID,
|
|
/* BC */ Common::KEYCODE_INVALID,
|
|
/* BD */ Common::KEYCODE_INVALID,
|
|
/* BE */ Common::KEYCODE_INVALID,
|
|
/* BF */ Common::KEYCODE_INVALID,
|
|
/* C0 */ Common::KEYCODE_INVALID,
|
|
/* C1 */ Common::KEYCODE_INVALID,
|
|
/* C2 */ Common::KEYCODE_INVALID,
|
|
/* C3 */ Common::KEYCODE_INVALID,
|
|
/* C4 */ Common::KEYCODE_INVALID,
|
|
/* C5 */ Common::KEYCODE_INVALID,
|
|
/* C6 */ Common::KEYCODE_INVALID,
|
|
/* C7 */ Common::KEYCODE_INVALID,
|
|
/* C8 */ Common::KEYCODE_INVALID,
|
|
/* C9 */ Common::KEYCODE_INVALID,
|
|
/* CA */ Common::KEYCODE_INVALID,
|
|
/* CB */ Common::KEYCODE_INVALID,
|
|
/* CC */ Common::KEYCODE_INVALID,
|
|
/* CD */ Common::KEYCODE_INVALID,
|
|
/* CE */ Common::KEYCODE_INVALID,
|
|
/* CF */ Common::KEYCODE_INVALID,
|
|
/* D0 */ Common::KEYCODE_INVALID,
|
|
/* D1 */ Common::KEYCODE_INVALID,
|
|
/* D2 */ Common::KEYCODE_INVALID,
|
|
/* D3 */ Common::KEYCODE_INVALID,
|
|
/* D4 */ Common::KEYCODE_INVALID,
|
|
/* D5 */ Common::KEYCODE_INVALID,
|
|
/* D6 */ Common::KEYCODE_INVALID,
|
|
/* D7 */ Common::KEYCODE_INVALID,
|
|
/* D8 */ Common::KEYCODE_INVALID,
|
|
/* D9 */ Common::KEYCODE_INVALID,
|
|
/* DA */ Common::KEYCODE_INVALID,
|
|
/* DB */ Common::KEYCODE_INVALID,
|
|
/* DC */ Common::KEYCODE_INVALID,
|
|
/* DD */ Common::KEYCODE_INVALID,
|
|
/* DE */ Common::KEYCODE_INVALID,
|
|
/* DF */ Common::KEYCODE_INVALID,
|
|
/* E0 */ Common::KEYCODE_LCTRL,
|
|
/* E1 */ Common::KEYCODE_LSHIFT,
|
|
/* E2 */ Common::KEYCODE_LALT,
|
|
/* E3 */ Common::KEYCODE_INVALID,
|
|
/* E4 */ Common::KEYCODE_RCTRL,
|
|
/* E5 */ Common::KEYCODE_RSHIFT,
|
|
/* E6 */ Common::KEYCODE_RALT,
|
|
/* E7 */ Common::KEYCODE_INVALID,
|
|
/* E8 */ Common::KEYCODE_INVALID,
|
|
/* E9 */ Common::KEYCODE_INVALID,
|
|
/* EA */ Common::KEYCODE_INVALID,
|
|
/* EB */ Common::KEYCODE_INVALID,
|
|
/* EC */ Common::KEYCODE_INVALID,
|
|
/* ED */ Common::KEYCODE_INVALID,
|
|
/* EE */ Common::KEYCODE_INVALID,
|
|
/* EF */ Common::KEYCODE_INVALID,
|
|
/* F0 */ Common::KEYCODE_INVALID,
|
|
/* F1 */ Common::KEYCODE_INVALID,
|
|
/* F2 */ Common::KEYCODE_INVALID,
|
|
/* F3 */ Common::KEYCODE_INVALID,
|
|
/* F4 */ Common::KEYCODE_INVALID,
|
|
/* F5 */ Common::KEYCODE_INVALID,
|
|
/* F6 */ Common::KEYCODE_INVALID,
|
|
/* F7 */ Common::KEYCODE_INVALID,
|
|
/* F8 */ Common::KEYCODE_INVALID,
|
|
/* F9 */ Common::KEYCODE_INVALID,
|
|
/* FA */ Common::KEYCODE_INVALID,
|
|
/* FB */ Common::KEYCODE_INVALID,
|
|
/* FC */ Common::KEYCODE_INVALID,
|
|
/* FD */ Common::KEYCODE_INVALID,
|
|
/* FE */ Common::KEYCODE_INVALID,
|
|
/* FF */ Common::KEYCODE_INVALID
|
|
};
|
|
|
|
const Common::KeyCode Ps2Input::_padCodes[16] = {
|
|
Common::KEYCODE_1, // Select
|
|
Common::KEYCODE_INVALID, // L3
|
|
Common::KEYCODE_INVALID, // R3
|
|
Common::KEYCODE_F5, // Start
|
|
Common::KEYCODE_INVALID, // Up
|
|
Common::KEYCODE_INVALID, // Right
|
|
Common::KEYCODE_INVALID, // Down
|
|
Common::KEYCODE_INVALID, // Left
|
|
Common::KEYCODE_KP0, // L2
|
|
Common::KEYCODE_INVALID, // R2
|
|
Common::KEYCODE_n, // L1
|
|
Common::KEYCODE_y, // R1
|
|
Common::KEYCODE_ESCAPE, // Triangle
|
|
Common::KEYCODE_INVALID, // Circle => Right mouse button
|
|
Common::KEYCODE_INVALID, // Cross => Left mouse button
|
|
Common::KEYCODE_RETURN // Square
|
|
};
|
|
|
|
const Common::KeyCode Ps2Input::_padFlags[16] = {
|
|
Common::KEYCODE_INVALID, // Select
|
|
Common::KEYCODE_INVALID, // L3
|
|
Common::KEYCODE_INVALID, // R3
|
|
Common::KEYCODE_INVALID, // Start
|
|
Common::KEYCODE_INVALID, // Up
|
|
Common::KEYCODE_INVALID, // Right
|
|
Common::KEYCODE_INVALID, // Down
|
|
Common::KEYCODE_INVALID, // Left
|
|
Common::KEYCODE_INVALID, // L2
|
|
Common::KEYCODE_INVALID, // R2
|
|
Common::KEYCODE_INVALID, // L1
|
|
Common::KEYCODE_INVALID, // R1
|
|
Common::KEYCODE_INVALID, // Triangle
|
|
Common::KEYCODE_INVALID, // Circle
|
|
Common::KEYCODE_INVALID, // Cross
|
|
Common::KEYCODE_INVALID // Square
|
|
};
|
|
|
|
|