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 >
C/C++ Source or Header  |  1999-12-17  |  5KB  |  210 lines

  1. /*
  2.  *    IKBD 6301 update routines
  3.  *
  4.  *    Patrice Mandin
  5.  */
  6.  
  7. #include <osbind.h>
  8.  
  9. #include "doomdef.h"
  10. #include "d_main.h"
  11. #include "d_event.h"
  12. #include "i_system.h"
  13. #include "control/ikbd.h"
  14.  
  15. short cur_mouseb=0;
  16. unsigned char cur_clavier[128];
  17. short cur_joystick=0;
  18.  
  19. int IkbdInited=0;
  20.  
  21. void I_InitControl_6301(void)
  22. {
  23.     /* Clear variables */
  24.  
  25.     atari_mousex = 0;
  26.     atari_mousey = 0;
  27.     atari_mouseb = 0;
  28.  
  29.     atari_joystick = 0;
  30.  
  31.     atari_CtrlCPressed = 0;
  32.  
  33.     memset(atari_clavier,0,128);
  34.  
  35.     /* Start keyboard routine */
  36.     Supexec(I_Asm_InitControl_6301);
  37.  
  38.     IkbdInited=1;
  39. }
  40.  
  41. void I_ShutdownControl_6301(void)
  42. {
  43.     if (!IkbdInited)
  44.         return;
  45.  
  46.     /* Shutdown keyboard routine */
  47.     Supexec(I_Asm_ShutdownControl_6301);
  48. }
  49.  
  50. void I_UpdateKeyboard_6301 (void)
  51. {
  52.     event_t event;    
  53.  
  54.     if (atari_CtrlCPressed)
  55.         I_Quit();
  56.  
  57.     /* Scan keyboard changes */
  58.  
  59. #define KEY_DOWN(a) (atari_clavier[a])
  60. #define KEY_PRESS(a) (atari_clavier[a] && !cur_clavier[a])
  61. #define KEY_WASPRESSED(a) (cur_clavier[a] && !atari_clavier[a])
  62. #define PROCESS_KEY(k,t)                    \
  63.     if (KEY_PRESS(k))                    \
  64.     {                            \
  65.             event.type = ev_keydown;        \
  66.             event.data1 = t;            \
  67.             D_PostEvent(&event);            \
  68.     }                            \
  69.     if (KEY_WASPRESSED(k))                    \
  70.     {                            \
  71.             event.type = ev_keyup;            \
  72.             event.data1 = t;            \
  73.             D_PostEvent(&event);            \
  74.     }
  75.  
  76.     PROCESS_KEY(SCANCODE_CURSORBLOCKRIGHT, KEY_RIGHTARROW);
  77.     PROCESS_KEY(SCANCODE_CURSORBLOCKLEFT, KEY_LEFTARROW);
  78.     PROCESS_KEY(SCANCODE_CURSORBLOCKDOWN, KEY_DOWNARROW);
  79.     PROCESS_KEY(SCANCODE_CURSORBLOCKUP, KEY_UPARROW);
  80.  
  81.     PROCESS_KEY(SCANCODE_ESCAPE, KEY_ESCAPE);
  82.     PROCESS_KEY(SCANCODE_ENTER, KEY_ENTER);
  83.     PROCESS_KEY(SCANCODE_KEYPADENTER, KEY_ENTER);
  84.     PROCESS_KEY(SCANCODE_TAB, KEY_TAB);
  85.     PROCESS_KEY(SCANCODE_SPACE, ' ');
  86.  
  87.     PROCESS_KEY(SCANCODE_F1, KEY_F1);
  88.     PROCESS_KEY(SCANCODE_F2, KEY_F2);
  89.     PROCESS_KEY(SCANCODE_F3, KEY_F3);
  90.     PROCESS_KEY(SCANCODE_F4, KEY_F4);
  91.     PROCESS_KEY(SCANCODE_F5, KEY_F5);
  92.     PROCESS_KEY(SCANCODE_F6, KEY_F6);
  93.     PROCESS_KEY(SCANCODE_F7, KEY_F7);
  94.     PROCESS_KEY(SCANCODE_F8, KEY_F8);
  95.     PROCESS_KEY(SCANCODE_F9, KEY_F9);
  96.     PROCESS_KEY(SCANCODE_F10, KEY_F10);
  97.     PROCESS_KEY(SCANCODE_F11, KEY_F11);
  98.     PROCESS_KEY(SCANCODE_F12, KEY_F12);
  99.         
  100.     PROCESS_KEY(SCANCODE_1, '1');
  101.     PROCESS_KEY(SCANCODE_2, '2');
  102.     PROCESS_KEY(SCANCODE_3, '3');
  103.     PROCESS_KEY(SCANCODE_4, '4');
  104.     PROCESS_KEY(SCANCODE_5, '5');
  105.     PROCESS_KEY(SCANCODE_6, '6');
  106.     PROCESS_KEY(SCANCODE_7, '7');
  107.     PROCESS_KEY(SCANCODE_8, '8');
  108.     PROCESS_KEY(SCANCODE_9, '9');
  109.     PROCESS_KEY(SCANCODE_0, '0');
  110.  
  111.     PROCESS_KEY(SCANCODE_MINUS, KEY_MINUS);
  112.     PROCESS_KEY(SCANCODE_KEYPADMINUS, KEY_MINUS);
  113.     PROCESS_KEY(SCANCODE_EQUAL, KEY_EQUALS);
  114.     PROCESS_KEY(SCANCODE_KEYPADPLUS, KEY_EQUALS);
  115.  
  116.     PROCESS_KEY(SCANCODE_BACKSPACE, KEY_BACKSPACE);
  117.     PROCESS_KEY(SCANCODE_BREAK, KEY_PAUSE);
  118.  
  119.     PROCESS_KEY(SCANCODE_LEFTSHIFT, KEY_RSHIFT);
  120.     PROCESS_KEY(SCANCODE_RIGHTSHIFT, KEY_RSHIFT);
  121.     PROCESS_KEY(SCANCODE_LEFTCONTROL, KEY_RCTRL);
  122.     PROCESS_KEY(SCANCODE_LEFTALT, KEY_RALT);
  123.  
  124.     PROCESS_KEY(SCANCODE_Q, 'q');
  125.     PROCESS_KEY(SCANCODE_W, 'w');
  126.     PROCESS_KEY(SCANCODE_E, 'e');
  127.     PROCESS_KEY(SCANCODE_R, 'r');
  128.     PROCESS_KEY(SCANCODE_T, 't');
  129.     PROCESS_KEY(SCANCODE_Y, 'y');
  130.     PROCESS_KEY(SCANCODE_U, 'u');
  131.     PROCESS_KEY(SCANCODE_I, 'i');
  132.     PROCESS_KEY(SCANCODE_O, 'o');
  133.     PROCESS_KEY(SCANCODE_P, 'p');
  134.  
  135.     PROCESS_KEY(SCANCODE_A, 'a');
  136.     PROCESS_KEY(SCANCODE_S, 's');
  137.     PROCESS_KEY(SCANCODE_D, 'd');
  138.     PROCESS_KEY(SCANCODE_F, 'f');
  139.     PROCESS_KEY(SCANCODE_G, 'g');
  140.     PROCESS_KEY(SCANCODE_H, 'h');
  141.     PROCESS_KEY(SCANCODE_J, 'j');
  142.     PROCESS_KEY(SCANCODE_K, 'k');
  143.     PROCESS_KEY(SCANCODE_L, 'l');
  144.  
  145.     PROCESS_KEY(SCANCODE_Z, 'z');
  146.     PROCESS_KEY(SCANCODE_X, 'x');
  147.     PROCESS_KEY(SCANCODE_C, 'c');
  148.     PROCESS_KEY(SCANCODE_V, 'v');
  149.     PROCESS_KEY(SCANCODE_B, 'b');
  150.     PROCESS_KEY(SCANCODE_N, 'n');
  151.     PROCESS_KEY(SCANCODE_M, 'm');
  152.  
  153.     memcpy(cur_clavier,atari_clavier,128);
  154. }
  155.  
  156. void I_UpdateMouse_6301(void)
  157. {
  158.     event_t    event;
  159.  
  160.     /* Scan mouse changes */
  161.  
  162.     if ((atari_mouseb != cur_mouseb) || atari_mousex || atari_mousey)
  163.     {
  164.         event.type = ev_mouse;
  165.         event.data1 = atari_mouseb;
  166.         event.data2 = atari_mousex << 2;
  167.         event.data3 = atari_mousey << 2;
  168.  
  169.         D_PostEvent(&event);        
  170.  
  171.         cur_mouseb=atari_mouseb;
  172.         atari_mousex=atari_mousey=0;
  173.     }
  174. }
  175.  
  176. void I_UpdateJoystick_6301(void)
  177. {
  178.     event_t    event;
  179.  
  180.     /* Scan joystick changes */
  181.  
  182. #define JOY_DOWN(a) (atari_joystick & a)
  183. #define JOY_PRESS(a) ( (atari_joystick & a) && !(cur_joystick & a) )
  184. #define JOY_WASPRESSED(a) ( (cur_joystick & a) && !(atari_joystick & a) )
  185. #define PROCESS_JOY(k,t)         \
  186.     if (JOY_PRESS(k))        \
  187.     {                \
  188.         event.type = ev_keydown;\
  189.         event.data1 = t;    \
  190.         D_PostEvent(&event);    \
  191.     }                \
  192.     if (JOY_WASPRESSED(k))        \
  193.     {                \
  194.         event.type = ev_keyup;    \
  195.         event.data1 = t;    \
  196.         D_PostEvent(&event);    \
  197.     }
  198.  
  199.     if (atari_joystick != cur_joystick)
  200.     {
  201.         PROCESS_JOY(JS_UP,KEY_UPARROW);
  202.         PROCESS_JOY(JS_DOWN,KEY_DOWNARROW);
  203.         PROCESS_JOY(JS_LEFT,KEY_LEFTARROW);
  204.         PROCESS_JOY(JS_RIGHT,KEY_RIGHTARROW);
  205.         PROCESS_JOY(JS_FIRE,KEY_RCTRL);
  206.  
  207.         cur_joystick=atari_joystick;
  208.     }
  209. }
  210.