home *** CD-ROM | disk | FTP | other *** search
- /*
- * 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;
- }
- }
-