home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Large Pack of OldSkool DOS MOD Trackers
/
goattracker_2.68.zip
/
src
/
bme
/
bme_kbd.c
< prev
next >
Wrap
C/C++ Source or Header
|
2008-04-01
|
4KB
|
210 lines
//
// BME (Blasphemous Multimedia Engine) keyboard module
//
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <SDL/SDL.h>
#include "bme_main.h"
#include "bme_cfg.h"
#include "bme_win.h"
#include "bme_io.h"
#include "bme_err.h"
int kbd_init(void);
void kbd_uninit(void);
int kbd_waitkey(void);
int kbd_getkey(void);
int kbd_checkkey(int rawcode);
int kbd_getascii(void);
unsigned kbd_getvirtualkey(void);
char *kbd_getkeyname(int rawcode);
static KEY keyname[] = {{KEY_BACKSPACE, "BACKSPACE"},
{KEY_CAPSLOCK, "CAPSLOCK"},
{KEY_ENTER, "ENTER"},
{KEY_ESC, "ESC"},
{KEY_NUMLOCK, "NUMLOCK"},
{KEY_LEFTSHIFT, "SHIFT"},
{KEY_RIGHTSHIFT, "SHIFT"},
{KEY_SCROLLLOCK, "SCR. LOCK"},
{KEY_SPACE, "SPACE"},
{KEY_TAB, "TAB"},
{KEY_F1, "F1"},
{KEY_F2, "F2"},
{KEY_F3, "F3"},
{KEY_F4, "F4"},
{KEY_F5, "F5"},
{KEY_F6, "F6"},
{KEY_F7, "F7"},
{KEY_F8, "F8"},
{KEY_F9, "F9"},
{KEY_F10, "F10"},
{KEY_F11, "F11"},
{KEY_F12, "F12"},
{KEY_A, "A"},
{KEY_N, "N"},
{KEY_B, "B"},
{KEY_O, "O"},
{KEY_C, "C"},
{KEY_P, "P"},
{KEY_D, "D"},
{KEY_Q, "Q"},
{KEY_E, "E"},
{KEY_R, "R"},
{KEY_F, "F"},
{KEY_S, "S"},
{KEY_G, "G"},
{KEY_T, "T"},
{KEY_H, "H"},
{KEY_U, "U"},
{KEY_I, "I"},
{KEY_V, "V"},
{KEY_J, "J"},
{KEY_W, "W"},
{KEY_K, "K"},
{KEY_X, "X"},
{KEY_L, "L"},
{KEY_Y, "Y"},
{KEY_M, "M"},
{KEY_Z, "Z"},
{KEY_1, "1"},
{KEY_2, "2"},
{KEY_3, "3"},
{KEY_4, "4"},
{KEY_5, "5"},
{KEY_6, "6"},
{KEY_7, "7"},
{KEY_8, "8"},
{KEY_9, "9"},
{KEY_0, "0"},
{KEY_MINUS, "-"},
{KEY_EQUAL, "="},
{KEY_BRACKETL, "["},
{KEY_BRACKETR, "]"},
{KEY_SEMICOLON, ";"},
{KEY_APOST1, "'"},
{KEY_APOST2, "`"},
{KEY_COMMA, ","},
{KEY_COLON, "."},
{KEY_SLASH, "/"},
{KEY_BACKSLASH, "\\"},
{KEY_ALT, "ALT"},
{KEY_CTRL, "CTRL"},
{KEY_DEL, "DELETE"},
{KEY_DOWN, "CRS. DOWN"},
{KEY_END, "END"},
{KEY_HOME, "HOME"},
{KEY_INS, "INSERT"},
{KEY_LEFT, "CRS. LEFT"},
{KEY_PGDN, "PAGE DOWN"},
{KEY_PGUP, "PAGE UP"},
{KEY_RIGHT, "CRS. RIGHT"},
{KEY_UP, "CRS. UP"},
{KEY_WINDOWSL, "WINDOWS KEY"},
{KEY_WINDOWSR, "WINDOWS KEY"},
{KEY_MENU, "MENU KEY"},
{0xff, "?"}};
int kbd_init(void)
{
return BME_OK;
}
void kbd_uninit(void)
{
}
int kbd_waitkey(void)
{
int index;
win_asciikey = 0;
for (;;)
{
win_checkmessages();
for (index = 0; index < MAX_KEYS; index++)
{
if (win_keytable[index])
{
win_keytable[index] = 0;
return index;
}
}
SDL_Delay(15);
}
}
int kbd_getkey(void)
{
int index;
for (index = 0; index < MAX_KEYS; index++)
{
if (win_keytable[index])
{
win_keytable[index] = 0;
return index;
}
}
return 0;
}
int kbd_checkkey(int rawcode)
{
if (rawcode >= MAX_KEYS) return 0;
if (win_keytable[rawcode])
{
win_keytable[rawcode] = 0;
return 1;
}
return 0;
}
int kbd_getascii(void)
{
int key;
if (win_asciikey)
{
key = win_asciikey;
win_asciikey = 0;
return key;
}
else return 0;
}
unsigned kbd_getvirtualkey(void)
{
unsigned key;
if (win_virtualkey)
{
key = win_virtualkey;
win_virtualkey = 0;
return key;
}
else return 0;
}
char *kbd_getkeyname(int rawcode)
{
KEY *ptr = &keyname[0];
while (ptr->rawcode != 255)
{
if (ptr->rawcode == rawcode)
{
return ptr->name;
}
ptr++;
}
return ptr->name;
}