remove usb mouse/keyboard - now using from libogc :)
This commit is contained in:
parent
9d032dd6d9
commit
9b4b52aba7
|
@ -88,13 +88,13 @@ $(BIN_DIR)/%.dol: $(TEST_OBJ_DIR)/%.elf
|
|||
@echo ----
|
||||
|
||||
# Compilation flags.
|
||||
COMMON_FLAGS := -g -O2 -mrvl -Wall -mcpu=750 -meabi -mhard-float $(MACHDEP)
|
||||
COMMON_FLAGS := -g -O2 -Wall $(MACHDEP)
|
||||
INCLUDES := -Iinclude -I$(DEVKITPRO)/libogc/include
|
||||
DEFINES := -DGEKKO
|
||||
CFLAGS := $(COMMON_FLAGS) $(INCLUDES) $(DEFINES)
|
||||
|
||||
# Test link flags.
|
||||
LDFLAGS := $(COMMON_FLAGS) -L$(LIB_DIR) -L$(DEVKITPRO)/libogc/lib/wii -lSDL -lfat -lwiiuse -lbte -logc -lm
|
||||
LDFLAGS := $(COMMON_FLAGS) -L$(LIB_DIR) -L$(DEVKITPRO)/libogc/lib/wii -lSDL -lwiikeyboard -lfat -lwiiuse -lbte -logc -lm
|
||||
|
||||
# How to compile C file (SDL library).
|
||||
$(SDL_OBJ_DIR)/%.o: $(SDL_SRC_DIR)/%.c
|
||||
|
|
|
@ -11,9 +11,8 @@
|
|||
/* OGC includes */
|
||||
#include <ogcsys.h>
|
||||
#include <wiiuse/wpad.h>
|
||||
|
||||
extern void wii_keyboard_init();
|
||||
extern void wii_mouse_init();
|
||||
#include <ogc/usbmouse.h>
|
||||
#include <wiikeyboard/keyboard.h>
|
||||
|
||||
bool TerminateRequested=false, ShutdownRequested=false, ResetRequested=false;
|
||||
|
||||
|
@ -66,9 +65,8 @@ int main(int argc, char *argv[])
|
|||
WPAD_SetDataFormat(0, WPAD_FMT_BTNS_ACC_IR);
|
||||
WPAD_SetVRes(0, 640, 480);
|
||||
|
||||
USB_Initialize();
|
||||
wii_mouse_init(); //must be called first
|
||||
wii_keyboard_init();
|
||||
MOUSE_Init();
|
||||
KEYBOARD_Init();
|
||||
#endif
|
||||
/* Call the user's main function */
|
||||
return(SDL_main(argc, argv));
|
||||
|
|
|
@ -27,6 +27,8 @@
|
|||
#include <wiiuse/wpad.h>
|
||||
#include <malloc.h>
|
||||
#include <unistd.h>
|
||||
#include <ogc/usbmouse.h>
|
||||
#include <wiikeyboard/keyboard.h>
|
||||
|
||||
#include "SDL_wiivideo.h"
|
||||
#include "SDL_wiievents_c.h"
|
||||
|
@ -39,496 +41,13 @@ Uint8 lastButtonStateB = SDL_RELEASED;
|
|||
Uint8 lastButtonStateLeftMouse = SDL_RELEASED;
|
||||
Uint8 lastButtonStateRightMouse = SDL_RELEASED;
|
||||
|
||||
#define USB_CLASS_HID 0x03
|
||||
#define USB_SUBCLASS_BOOT 0x01
|
||||
#define USB_PROTOCOL_KEYBOARD 0x01
|
||||
#define USB_PROTOCOL_MOUSE 0x02
|
||||
|
||||
static SDLKey keymap[512];
|
||||
|
||||
static s32 stat;
|
||||
static s32 mstat;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u32 message;
|
||||
u32 id; // direction
|
||||
u8 modifiers;
|
||||
u8 unknown;
|
||||
u8 keys[6];
|
||||
u8 pad[16];
|
||||
} key_data_t;
|
||||
|
||||
|
||||
static key_data_t key_data ATTRIBUTE_ALIGN(32);
|
||||
|
||||
static u8 prev_keys[6];
|
||||
static u8 prev_modifiers;
|
||||
|
||||
static key_data_t key_data1,key_data2;
|
||||
|
||||
static int keyboard_kb=-1;
|
||||
|
||||
static int keyboard_stop = 1;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
KEYBOARD_PRESSED = 0,
|
||||
KEYBOARD_RELEASED,
|
||||
KEYBOARD_DISCONNECTED,
|
||||
KEYBOARD_CONNECTED
|
||||
}keyboard_eventType;
|
||||
|
||||
|
||||
typedef struct _KeyboardEvent{
|
||||
int type;
|
||||
int modifiers; /* actually, could as well scrap this. */
|
||||
int scancode;
|
||||
} keyboardEvent;
|
||||
|
||||
typedef struct _MouseEvent{
|
||||
u8 button;
|
||||
int rx;
|
||||
int ry;
|
||||
} mouseEvent;
|
||||
|
||||
|
||||
|
||||
static keyboardEvent ke;
|
||||
static mouseEvent me;
|
||||
|
||||
typedef struct _node
|
||||
{
|
||||
lwp_node node;
|
||||
keyboardEvent event;
|
||||
}node;
|
||||
|
||||
typedef struct _mousenode
|
||||
{
|
||||
lwp_node mousenode;
|
||||
mouseEvent event;
|
||||
}mousenode;
|
||||
|
||||
|
||||
lwp_queue *queue;
|
||||
lwp_queue *mousequeue;
|
||||
|
||||
|
||||
static int mouse_initialized =0;
|
||||
|
||||
static int mouse_vid = 0;
|
||||
static int mouse_pid = 0;
|
||||
static s32 mousefd=0;
|
||||
static signed char *mousedata = 0;
|
||||
#define DEVLIST_MAXSIZE 0x08
|
||||
|
||||
//Add an event to the event queue
|
||||
s32 KEYBOARD_addEvent(int type, int scancode, int modifiers)
|
||||
{
|
||||
node *n = (node *)malloc(sizeof(node));
|
||||
n->event.type = type;
|
||||
n->event.scancode = scancode;
|
||||
n->event.modifiers= modifiers;
|
||||
__lwp_queue_append(queue,(lwp_node*)n);
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Add an event to the event queue
|
||||
s32 MOUSE_addEvent(u8 button, int rx, int ry)
|
||||
{
|
||||
mousenode *n = (mousenode *)malloc(sizeof(mousenode));
|
||||
n->event.button = button;
|
||||
n->event.rx = rx;
|
||||
n->event.ry= ry;
|
||||
__lwp_queue_append(mousequeue,(lwp_node*)n);
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Get the first event of the event queue
|
||||
s32 KEYBOARD_getEvent(keyboardEvent* event)
|
||||
{
|
||||
node *n = (node*) __lwp_queue_get(queue);
|
||||
if (!n)
|
||||
return 0;
|
||||
*event = n->event;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
//Get the first event of the event queue
|
||||
s32 MOUSE_getEvent(mouseEvent* event)
|
||||
{
|
||||
mousenode *n = (mousenode*) __lwp_queue_get(mousequeue);
|
||||
if (!n)
|
||||
return 0;
|
||||
*event = n->event;
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* index = bit# from the Wii. value = SDL keycode. */
|
||||
static int modifier_keycodes[] = { SDLK_LCTRL, SDLK_LSHIFT, SDLK_LALT, SDLK_LMETA, SDLK_RCTRL, SDLK_RSHIFT, SDLK_RALT, SDLK_RMETA };
|
||||
|
||||
s32 keyboard_callback(int ret,void * none)
|
||||
{
|
||||
int i, j;
|
||||
SDLKey key;
|
||||
|
||||
if (keyboard_kb >= 0)
|
||||
{
|
||||
if (key_data.message != 0x7fffffff)
|
||||
{
|
||||
if (key_data.message == 2)
|
||||
{
|
||||
for (i = 0; i < 6; i++)
|
||||
{
|
||||
if (key_data.keys[i])
|
||||
{
|
||||
int found = false;
|
||||
for (j = 0; j < 6; j++)
|
||||
{
|
||||
if (prev_keys[j] == key_data.keys[i])
|
||||
{
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!found)
|
||||
KEYBOARD_addEvent(KEYBOARD_PRESSED,
|
||||
keymap[key_data.keys[i]],
|
||||
key_data.modifiers);
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < 6; i++)
|
||||
{
|
||||
if (prev_keys[i])
|
||||
{
|
||||
int found = false;
|
||||
for (j = 0; j < 6; j++)
|
||||
{
|
||||
if (prev_keys[i] == key_data.keys[j])
|
||||
{
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!found)
|
||||
KEYBOARD_addEvent(KEYBOARD_RELEASED,
|
||||
keymap[prev_keys[i]], key_data.modifiers);
|
||||
}
|
||||
}
|
||||
|
||||
if (prev_modifiers != key_data.modifiers)
|
||||
{
|
||||
for (i = 0; i < sizeof(modifier_keycodes)
|
||||
/ sizeof(modifier_keycodes[0]); ++i)
|
||||
{
|
||||
key = modifier_keycodes[i];
|
||||
j = 1 << i; /* bit mask for bit# i */
|
||||
|
||||
if ((key_data.modifiers & j) != 0 && (prev_modifiers
|
||||
& j) == 0)
|
||||
{ /* newly pressed. */
|
||||
KEYBOARD_addEvent(KEYBOARD_PRESSED, key, 0);
|
||||
}
|
||||
else if ((key_data.modifiers & j) == 0
|
||||
&& (prev_modifiers & j) != 0)
|
||||
{ /* newly released. */
|
||||
KEYBOARD_addEvent(KEYBOARD_RELEASED, key, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* unchanged. */
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
memcpy(prev_keys, key_data.keys, 6);
|
||||
prev_modifiers = key_data.modifiers;
|
||||
}
|
||||
|
||||
key_data.message = 0x7fffffff;
|
||||
if (!keyboard_stop)
|
||||
IOS_IoctlAsync(keyboard_kb, 1, (void *) &key_data, 16,
|
||||
(void *) &key_data, 16, keyboard_callback, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void initkeymap()
|
||||
{
|
||||
int i;
|
||||
|
||||
|
||||
for ( i=0; i<SDL_arraysize(keymap); ++i )
|
||||
keymap[i] = SDLK_UNKNOWN;
|
||||
//a-z
|
||||
for (i = 0; i<27; i++) {
|
||||
keymap[4+i] = SDLK_a + i;
|
||||
}
|
||||
|
||||
//numbers
|
||||
for (i = 1; i<10; i++) {
|
||||
keymap[30 + i - 1] = SDLK_1 + i - 1;
|
||||
}
|
||||
keymap[39] = SDLK_0;
|
||||
keymap[40] = SDLK_RETURN;
|
||||
keymap[41] = SDLK_ESCAPE;
|
||||
keymap[42] = SDLK_BACKSPACE;
|
||||
keymap[43] = SDLK_TAB;
|
||||
keymap[44] = SDLK_SPACE;
|
||||
keymap[45] = SDLK_MINUS;
|
||||
keymap[46] = SDLK_EQUALS;
|
||||
keymap[47] = SDLK_LEFTBRACKET;
|
||||
keymap[47] = SDLK_RIGHTBRACKET;
|
||||
keymap[49] = SDLK_BACKSLASH;
|
||||
keymap[51] = SDLK_SEMICOLON;
|
||||
keymap[52] = SDLK_QUOTE;
|
||||
keymap[53] = SDLK_BACKQUOTE;
|
||||
keymap[54] = SDLK_COMMA;
|
||||
keymap[55] = SDLK_PERIOD;
|
||||
keymap[56] = SDLK_SLASH;
|
||||
keymap[57] = SDLK_CAPSLOCK;
|
||||
|
||||
|
||||
//F1 to F12
|
||||
for (i = 1; i<13; i++) {
|
||||
keymap[58 + i - 1] = SDLK_F1 + i - 1;
|
||||
}
|
||||
|
||||
keymap[72] = SDLK_PAUSE;
|
||||
keymap[73] = SDLK_INSERT;
|
||||
keymap[74] = SDLK_HOME;
|
||||
keymap[75] = SDLK_PAGEUP;
|
||||
keymap[76] = SDLK_DELETE;
|
||||
keymap[77] = SDLK_END;
|
||||
keymap[78] = SDLK_PAGEDOWN;
|
||||
|
||||
keymap[79] = SDLK_RIGHT;
|
||||
keymap[80] = SDLK_LEFT;
|
||||
keymap[81] = SDLK_DOWN;
|
||||
keymap[82] = SDLK_UP;
|
||||
keymap[83] = SDLK_NUMLOCK;
|
||||
|
||||
keymap[84] = SDLK_KP_DIVIDE;
|
||||
keymap[85] = SDLK_KP_MULTIPLY;
|
||||
keymap[86] = SDLK_KP_MINUS;
|
||||
keymap[87] = SDLK_KP_PLUS;
|
||||
|
||||
keymap[87] = SDLK_KP_ENTER;
|
||||
|
||||
|
||||
//keypad numbers
|
||||
for (i = 1; i<10; i++) {
|
||||
keymap[89 + i - 1] = SDLK_KP1 + i - 1;
|
||||
}
|
||||
keymap[98] = SDLK_KP0;
|
||||
}
|
||||
|
||||
static int keyboard_initialized =0;
|
||||
|
||||
void wii_keyboard_init()
|
||||
{
|
||||
if (!keyboard_initialized)
|
||||
{
|
||||
//printf("init keyboard");
|
||||
initkeymap();
|
||||
queue = (lwp_queue*) malloc(sizeof(lwp_queue));
|
||||
__lwp_queue_initialize(queue, 0, 0, 0);
|
||||
keyboard_kb = IOS_Open("/dev/usb/kbd", 1);
|
||||
/*
|
||||
if (keyboard_kb>=0) {
|
||||
printf("keyboard kb ok\n");
|
||||
} else{
|
||||
printf("keyboard kb not ok\n");
|
||||
}*/
|
||||
sleep(2);
|
||||
key_data.message = 0x0;
|
||||
key_data1.id = 0;
|
||||
key_data2.id = 0;
|
||||
keyboard_stop = 0;
|
||||
if (keyboard_kb >= 0)
|
||||
IOS_IoctlAsync(keyboard_kb, 1, (void *) &key_data, 16,
|
||||
(void *) &key_data, 16, keyboard_callback, NULL);
|
||||
keyboard_initialized = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (keyboard_kb >= 0)
|
||||
IOS_IoctlAsync(keyboard_kb, 1, (void *) &key_data, 16,
|
||||
(void *) &key_data, 16, keyboard_callback, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
#define USB_REQ_GETPROTOCOL 0x03
|
||||
#define USB_REQ_SETPROTOCOL 0x0B
|
||||
#define USB_REQ_GETREPORT 0x01
|
||||
#define USB_REQ_SETREPORT 0x09
|
||||
#define USB_REPTYPE_INPUT 0x01
|
||||
#define USB_REPTYPE_OUTPUT 0x02
|
||||
#define USB_REPTYPE_FEATURE 0x03
|
||||
|
||||
#define USB_REQTYPE_GET 0xA1
|
||||
#define USB_REQTYPE_SET 0x21
|
||||
|
||||
|
||||
s32 mousecallback(s32 result,void *usrdata)
|
||||
{
|
||||
if (result>0) {
|
||||
u8 button = mousedata[0];
|
||||
|
||||
int x = mousedata[1];
|
||||
int y = mousedata[2];
|
||||
//int w = (-1)<<(data[3]-1);
|
||||
|
||||
MOUSE_addEvent(button, x, y);
|
||||
|
||||
USB_ReadIntrMsgAsync(mousefd, 0x81 ,4, mousedata, mousecallback, 0);
|
||||
} else {
|
||||
mouse_initialized = 0;
|
||||
mousefd =0;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
u8 mouseconfiguration;
|
||||
u32 mouseinterface;
|
||||
u32 mousealtInterface;
|
||||
|
||||
static int wii_find_mouse()
|
||||
{
|
||||
s32 fd = 0;
|
||||
static u8 *buffer = 0;
|
||||
|
||||
if (!buffer)
|
||||
{
|
||||
buffer = (u8*) memalign(32, DEVLIST_MAXSIZE << 3);
|
||||
}
|
||||
if (buffer == NULL)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
memset(buffer, 0, DEVLIST_MAXSIZE << 3);
|
||||
|
||||
u8 dummy;
|
||||
u16 vid, pid;
|
||||
|
||||
if (USB_GetDeviceList("/dev/usb/oh0", buffer, DEVLIST_MAXSIZE, 0, &dummy)
|
||||
< 0)
|
||||
{
|
||||
|
||||
free(buffer);
|
||||
buffer = 0;
|
||||
return -2;
|
||||
}
|
||||
|
||||
u8 mouseep;
|
||||
u32 mouseep_size;
|
||||
|
||||
int i;
|
||||
|
||||
for (i = 0; i < DEVLIST_MAXSIZE; i++)
|
||||
{
|
||||
memcpy(&vid, (buffer + (i << 3) + 4), 2);
|
||||
memcpy(&pid, (buffer + (i << 3) + 6), 2);
|
||||
|
||||
if ((vid == 0) && (pid == 0))
|
||||
continue;
|
||||
fd = 0;
|
||||
|
||||
int err = USB_OpenDevice("oh0", vid, pid, &fd);
|
||||
if (err < 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
//fprintf(stderr, "ok open %04x:%04x\n", vid, pid);
|
||||
//SDL_Delay(1000);
|
||||
|
||||
}
|
||||
|
||||
u32 iConf, iInterface;
|
||||
usb_devdesc udd;
|
||||
usb_configurationdesc *ucd;
|
||||
usb_interfacedesc *uid;
|
||||
usb_endpointdesc *ued;
|
||||
|
||||
USB_GetDescriptors(fd, &udd);
|
||||
|
||||
for (iConf = 0; iConf < udd.bNumConfigurations; iConf++)
|
||||
{
|
||||
ucd = &udd.configurations[iConf];
|
||||
for (iInterface = 0; iInterface < ucd->bNumInterfaces; iInterface++)
|
||||
{
|
||||
uid = &ucd->interfaces[iInterface];
|
||||
|
||||
if ((uid->bInterfaceClass == USB_CLASS_HID)
|
||||
&& (uid->bInterfaceSubClass == USB_SUBCLASS_BOOT)
|
||||
&& (uid->bInterfaceProtocol == USB_PROTOCOL_MOUSE))
|
||||
{
|
||||
int iEp;
|
||||
for (iEp = 0; iEp < uid->bNumEndpoints; iEp++)
|
||||
{
|
||||
ued = &uid->endpoints[iEp];
|
||||
mouse_vid = vid;
|
||||
mouse_pid = pid;
|
||||
|
||||
mouseep = ued->bEndpointAddress;
|
||||
mouseep_size = ued->wMaxPacketSize;
|
||||
mouseconfiguration = ucd->bConfigurationValue;
|
||||
mouseinterface = uid->bInterfaceNumber;
|
||||
mousealtInterface = uid->bAlternateSetting;
|
||||
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
USB_FreeDescriptors(&udd);
|
||||
USB_CloseDevice(&fd);
|
||||
|
||||
}
|
||||
if (mouse_pid != 0 || mouse_vid != 0)
|
||||
return 0;
|
||||
return -1;
|
||||
|
||||
}
|
||||
|
||||
void wii_mouse_init()
|
||||
{
|
||||
if (!mouse_initialized)
|
||||
{
|
||||
|
||||
if (!mousequeue)
|
||||
{
|
||||
mousequeue = (lwp_queue*) malloc(sizeof(lwp_queue));
|
||||
__lwp_queue_initialize(mousequeue, 0, 0, 0);
|
||||
}
|
||||
|
||||
if (wii_find_mouse() != 0)
|
||||
return;
|
||||
|
||||
if (USB_OpenDevice("oh0", mouse_vid, mouse_pid, &mousefd) < 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (!mousedata)
|
||||
{
|
||||
mousedata = (signed char*) memalign(32, 20);
|
||||
}
|
||||
|
||||
//set boot protocol
|
||||
USB_WriteCtrlMsg(mousefd, USB_REQTYPE_SET, USB_REQ_SETPROTOCOL, 0, 0,
|
||||
0, 0);
|
||||
USB_ReadIntrMsgAsync(mousefd, 0x81, 4, mousedata, mousecallback, 0);
|
||||
|
||||
mouse_initialized = 1;
|
||||
}
|
||||
}
|
||||
static keyboard_event ke;
|
||||
static mouse_event me;
|
||||
|
||||
static int posted;
|
||||
|
||||
|
@ -542,8 +61,8 @@ void PumpEvents()
|
|||
#endif
|
||||
WPADData *wd = WPAD_Data(0);
|
||||
|
||||
stat = KEYBOARD_getEvent(&ke);
|
||||
mstat = MOUSE_getEvent(&me);
|
||||
stat = KEYBOARD_GetEvent(&ke);
|
||||
mstat = MOUSE_GetEvent(&me);
|
||||
int x, y;
|
||||
|
||||
SDL_GetMouseState(&x, &y);
|
||||
|
@ -589,13 +108,8 @@ void PumpEvents()
|
|||
memset(&keysym, 0, sizeof(keysym));
|
||||
Uint8 keystate = (ke.type == KEYBOARD_PRESSED) ? SDL_PRESSED
|
||||
: SDL_RELEASED;
|
||||
keysym.sym = ke.scancode;
|
||||
keysym.sym = keymap[ke.keycode];
|
||||
keysym.mod = 0;
|
||||
/* to_SDL_Modifiers(ke.modifiers); don't waste effort,
|
||||
SDL_PrivateKeyboard makes its own mind up about
|
||||
them from the press/release events of the modifier
|
||||
keys. */
|
||||
/*don't do this either. SDL_SetModState(to_SDL_Modifiers(ke.modifiers));*/
|
||||
posted += SDL_PrivateKeyboard(keystate, &keysym);
|
||||
}
|
||||
|
||||
|
@ -634,7 +148,6 @@ void PumpEvents()
|
|||
posted += SDL_PrivateMouseButton(SDL_RELEASED, 3, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -650,5 +163,72 @@ void WII_PumpEvents(_THIS)
|
|||
|
||||
void WII_InitOSKeymap(_THIS)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < SDL_arraysize(keymap); ++i)
|
||||
keymap[i] = SDLK_UNKNOWN;
|
||||
|
||||
//a-z
|
||||
for (i = 0; i < 27; i++)
|
||||
keymap[4 + i] = SDLK_a + i;
|
||||
|
||||
//numbers
|
||||
for (i = 0; i < 10; i++)
|
||||
keymap[30 + i] = SDLK_1 + i;
|
||||
|
||||
keymap[40] = SDLK_RETURN;
|
||||
keymap[41] = SDLK_ESCAPE;
|
||||
keymap[42] = SDLK_BACKSPACE;
|
||||
keymap[43] = SDLK_TAB;
|
||||
keymap[44] = SDLK_SPACE;
|
||||
keymap[45] = SDLK_MINUS;
|
||||
keymap[46] = SDLK_EQUALS;
|
||||
keymap[47] = SDLK_LEFTBRACKET;
|
||||
keymap[47] = SDLK_RIGHTBRACKET;
|
||||
keymap[49] = SDLK_BACKSLASH;
|
||||
keymap[51] = SDLK_SEMICOLON;
|
||||
keymap[52] = SDLK_QUOTE;
|
||||
keymap[53] = SDLK_BACKQUOTE;
|
||||
keymap[54] = SDLK_COMMA;
|
||||
keymap[55] = SDLK_PERIOD;
|
||||
keymap[56] = SDLK_SLASH;
|
||||
keymap[57] = SDLK_CAPSLOCK;
|
||||
|
||||
//F1 to F12
|
||||
for (i = 0; i < 12; i++)
|
||||
keymap[58 + i] = SDLK_F1 + i;
|
||||
|
||||
keymap[72] = SDLK_PAUSE;
|
||||
keymap[73] = SDLK_INSERT;
|
||||
keymap[74] = SDLK_HOME;
|
||||
keymap[75] = SDLK_PAGEUP;
|
||||
keymap[76] = SDLK_DELETE;
|
||||
keymap[77] = SDLK_END;
|
||||
keymap[78] = SDLK_PAGEDOWN;
|
||||
|
||||
keymap[79] = SDLK_RIGHT;
|
||||
keymap[80] = SDLK_LEFT;
|
||||
keymap[81] = SDLK_DOWN;
|
||||
keymap[82] = SDLK_UP;
|
||||
keymap[83] = SDLK_NUMLOCK;
|
||||
|
||||
keymap[84] = SDLK_KP_DIVIDE;
|
||||
keymap[85] = SDLK_KP_MULTIPLY;
|
||||
keymap[86] = SDLK_KP_MINUS;
|
||||
keymap[87] = SDLK_KP_PLUS;
|
||||
|
||||
keymap[88] = SDLK_KP_ENTER;
|
||||
|
||||
//keypad numbers
|
||||
for (i = 0; i < 10; i++)
|
||||
keymap[89 + i] = SDLK_KP1 + i;
|
||||
|
||||
keymap[224] = SDLK_LCTRL;
|
||||
keymap[225] = SDLK_LSHIFT;
|
||||
keymap[226] = SDLK_LALT;
|
||||
keymap[227] = SDLK_LMETA;
|
||||
keymap[228] = SDLK_RCTRL;
|
||||
keymap[229] = SDLK_RSHIFT;
|
||||
keymap[230] = SDLK_RALT;
|
||||
keymap[231] = SDLK_RMETA;
|
||||
}
|
||||
|
|
Reference in a new issue