home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ST-Computer Leser-CD 2000 January
/
LCD_01_2000.iso
/
games
/
doom
/
pmdoom
/
src
/
control
/
ikbd.c
< prev
next >
Wrap
C/C++ Source or Header
|
1999-12-17
|
5KB
|
210 lines
/*
* IKBD 6301 update routines
*
* Patrice Mandin
*/
#include <osbind.h>
#include "doomdef.h"
#include "d_main.h"
#include "d_event.h"
#include "i_system.h"
#include "control/ikbd.h"
short cur_mouseb=0;
unsigned char cur_clavier[128];
short cur_joystick=0;
int IkbdInited=0;
void I_InitControl_6301(void)
{
/* Clear variables */
atari_mousex = 0;
atari_mousey = 0;
atari_mouseb = 0;
atari_joystick = 0;
atari_CtrlCPressed = 0;
memset(atari_clavier,0,128);
/* Start keyboard routine */
Supexec(I_Asm_InitControl_6301);
IkbdInited=1;
}
void I_ShutdownControl_6301(void)
{
if (!IkbdInited)
return;
/* Shutdown keyboard routine */
Supexec(I_Asm_ShutdownControl_6301);
}
void I_UpdateKeyboard_6301 (void)
{
event_t event;
if (atari_CtrlCPressed)
I_Quit();
/* Scan keyboard changes */
#define KEY_DOWN(a) (atari_clavier[a])
#define KEY_PRESS(a) (atari_clavier[a] && !cur_clavier[a])
#define KEY_WASPRESSED(a) (cur_clavier[a] && !atari_clavier[a])
#define PROCESS_KEY(k,t) \
if (KEY_PRESS(k)) \
{ \
event.type = ev_keydown; \
event.data1 = t; \
D_PostEvent(&event); \
} \
if (KEY_WASPRESSED(k)) \
{ \
event.type = ev_keyup; \
event.data1 = t; \
D_PostEvent(&event); \
}
PROCESS_KEY(SCANCODE_CURSORBLOCKRIGHT, KEY_RIGHTARROW);
PROCESS_KEY(SCANCODE_CURSORBLOCKLEFT, KEY_LEFTARROW);
PROCESS_KEY(SCANCODE_CURSORBLOCKDOWN, KEY_DOWNARROW);
PROCESS_KEY(SCANCODE_CURSORBLOCKUP, KEY_UPARROW);
PROCESS_KEY(SCANCODE_ESCAPE, KEY_ESCAPE);
PROCESS_KEY(SCANCODE_ENTER, KEY_ENTER);
PROCESS_KEY(SCANCODE_KEYPADENTER, KEY_ENTER);
PROCESS_KEY(SCANCODE_TAB, KEY_TAB);
PROCESS_KEY(SCANCODE_SPACE, ' ');
PROCESS_KEY(SCANCODE_F1, KEY_F1);
PROCESS_KEY(SCANCODE_F2, KEY_F2);
PROCESS_KEY(SCANCODE_F3, KEY_F3);
PROCESS_KEY(SCANCODE_F4, KEY_F4);
PROCESS_KEY(SCANCODE_F5, KEY_F5);
PROCESS_KEY(SCANCODE_F6, KEY_F6);
PROCESS_KEY(SCANCODE_F7, KEY_F7);
PROCESS_KEY(SCANCODE_F8, KEY_F8);
PROCESS_KEY(SCANCODE_F9, KEY_F9);
PROCESS_KEY(SCANCODE_F10, KEY_F10);
PROCESS_KEY(SCANCODE_F11, KEY_F11);
PROCESS_KEY(SCANCODE_F12, KEY_F12);
PROCESS_KEY(SCANCODE_1, '1');
PROCESS_KEY(SCANCODE_2, '2');
PROCESS_KEY(SCANCODE_3, '3');
PROCESS_KEY(SCANCODE_4, '4');
PROCESS_KEY(SCANCODE_5, '5');
PROCESS_KEY(SCANCODE_6, '6');
PROCESS_KEY(SCANCODE_7, '7');
PROCESS_KEY(SCANCODE_8, '8');
PROCESS_KEY(SCANCODE_9, '9');
PROCESS_KEY(SCANCODE_0, '0');
PROCESS_KEY(SCANCODE_MINUS, KEY_MINUS);
PROCESS_KEY(SCANCODE_KEYPADMINUS, KEY_MINUS);
PROCESS_KEY(SCANCODE_EQUAL, KEY_EQUALS);
PROCESS_KEY(SCANCODE_KEYPADPLUS, KEY_EQUALS);
PROCESS_KEY(SCANCODE_BACKSPACE, KEY_BACKSPACE);
PROCESS_KEY(SCANCODE_BREAK, KEY_PAUSE);
PROCESS_KEY(SCANCODE_LEFTSHIFT, KEY_RSHIFT);
PROCESS_KEY(SCANCODE_RIGHTSHIFT, KEY_RSHIFT);
PROCESS_KEY(SCANCODE_LEFTCONTROL, KEY_RCTRL);
PROCESS_KEY(SCANCODE_LEFTALT, KEY_RALT);
PROCESS_KEY(SCANCODE_Q, 'q');
PROCESS_KEY(SCANCODE_W, 'w');
PROCESS_KEY(SCANCODE_E, 'e');
PROCESS_KEY(SCANCODE_R, 'r');
PROCESS_KEY(SCANCODE_T, 't');
PROCESS_KEY(SCANCODE_Y, 'y');
PROCESS_KEY(SCANCODE_U, 'u');
PROCESS_KEY(SCANCODE_I, 'i');
PROCESS_KEY(SCANCODE_O, 'o');
PROCESS_KEY(SCANCODE_P, 'p');
PROCESS_KEY(SCANCODE_A, 'a');
PROCESS_KEY(SCANCODE_S, 's');
PROCESS_KEY(SCANCODE_D, 'd');
PROCESS_KEY(SCANCODE_F, 'f');
PROCESS_KEY(SCANCODE_G, 'g');
PROCESS_KEY(SCANCODE_H, 'h');
PROCESS_KEY(SCANCODE_J, 'j');
PROCESS_KEY(SCANCODE_K, 'k');
PROCESS_KEY(SCANCODE_L, 'l');
PROCESS_KEY(SCANCODE_Z, 'z');
PROCESS_KEY(SCANCODE_X, 'x');
PROCESS_KEY(SCANCODE_C, 'c');
PROCESS_KEY(SCANCODE_V, 'v');
PROCESS_KEY(SCANCODE_B, 'b');
PROCESS_KEY(SCANCODE_N, 'n');
PROCESS_KEY(SCANCODE_M, 'm');
memcpy(cur_clavier,atari_clavier,128);
}
void I_UpdateMouse_6301(void)
{
event_t event;
/* Scan mouse changes */
if ((atari_mouseb != cur_mouseb) || atari_mousex || atari_mousey)
{
event.type = ev_mouse;
event.data1 = atari_mouseb;
event.data2 = atari_mousex << 2;
event.data3 = atari_mousey << 2;
D_PostEvent(&event);
cur_mouseb=atari_mouseb;
atari_mousex=atari_mousey=0;
}
}
void I_UpdateJoystick_6301(void)
{
event_t event;
/* Scan joystick changes */
#define JOY_DOWN(a) (atari_joystick & a)
#define JOY_PRESS(a) ( (atari_joystick & a) && !(cur_joystick & a) )
#define JOY_WASPRESSED(a) ( (cur_joystick & a) && !(atari_joystick & a) )
#define PROCESS_JOY(k,t) \
if (JOY_PRESS(k)) \
{ \
event.type = ev_keydown;\
event.data1 = t; \
D_PostEvent(&event); \
} \
if (JOY_WASPRESSED(k)) \
{ \
event.type = ev_keyup; \
event.data1 = t; \
D_PostEvent(&event); \
}
if (atari_joystick != cur_joystick)
{
PROCESS_JOY(JS_UP,KEY_UPARROW);
PROCESS_JOY(JS_DOWN,KEY_DOWNARROW);
PROCESS_JOY(JS_LEFT,KEY_LEFTARROW);
PROCESS_JOY(JS_RIGHT,KEY_RIGHTARROW);
PROCESS_JOY(JS_FIRE,KEY_RCTRL);
cur_joystick=atari_joystick;
}
}