Diff for /np2/macos9/mackbd.cpp between versions 1.3 and 1.5

version 1.3, 2003/11/13 07:47:17 version 1.5, 2003/11/14 10:04:56
Line 12 Line 12
   
 #if TARGET_API_MAC_CARBON  #if TARGET_API_MAC_CARBON
   
 static  BYTE    keymap[16];  typedef struct {
 static  UINT32  shiftchktick = 0;          UINT32  tick;
           BYTE    keymap[16];
           BOOL    active;
           UINT32  repbase;
           UINT32  reptick;
           BYTE    repkey;
   } MACKBD;
   
   static  MACKBD          mackbd;
   
   
 static const BYTE keymac[128] = {  static const BYTE keymac[128] = {
                         //        £Á,  £Ó,  £Ä,  £Æ,  £È,  £Ç,  £Ú,  £Ø         ; 0x00                          //        £Á,  £Ó,  £Ä,  £Æ,  £È,  £Ç,  £Ú,  £Ø         ; 0x00
Line 49  static const BYTE keymac[128] = { Line 58  static const BYTE keymac[128] = {
                         //        F2,  rd,  F1,  ¢«,  ¢ª,  ¢­,  ¢¬,             ; 0x78                          //        F2,  rd,  F1,  ¢«,  ¢ª,  ¢­,  ¢¬,             ; 0x78
                                 0x63,0x36,0x62,0x3b,0x3c,0x3d,0x3a,  NC};                                  0x63,0x36,0x62,0x3b,0x3c,0x3d,0x3a,  NC};
   
   static const BYTE repkey[16] = {
                   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
                   0xff, 0xff, 0xc1, 0xff, 0xc0, 0x0f, 0x07, 0x07};
   
   
 void mackbd_initialize(void) {  void mackbd_initialize(void) {
   
         shiftchktick = GETTICK();          mackbd.tick = GETTICK();
         ZeroMemory(&keymap, sizeof(keymap));          ZeroMemory(&mackbd.keymap, sizeof(mackbd.keymap));
           mackbd.active = TRUE;
           mackbd.repkey = NC;
 }  }
   
 void mackbd_callback(void) {  void mackbd_callback(void) {
Line 64  void mackbd_callback(void) { Line 80  void mackbd_callback(void) {
         UINT    j;          UINT    j;
         BYTE    keycode;          BYTE    keycode;
   
           if (!mackbd.active) {
                   return;
           }
   
         tick = GETTICK();          tick = GETTICK();
         if (shiftchktick == tick) {          if (mackbd.tick == tick) {
                 return;                  return;
         }          }
         shiftchktick = tick;          mackbd.tick = tick;
 #if TARGET_API_MAC_CARBON  #if TARGET_API_MAC_CARBON
         GetKeys((long *)key);          GetKeys((long *)key);
 #else  #else
         GetKeys((unsigned long *)key);          GetKeys((unsigned long *)key);
 #endif  #endif
         for (i=0; i<16; i++) {          for (i=0; i<16; i++) {
                 update = keymap[i] ^ key[i];                  update = mackbd.keymap[i] ^ key[i];
                 if (update) {                  if (update) {
                         keymap[i] = key[i];                          mackbd.keymap[i] = key[i];
                         for (j=0; j<8; j++) {                          for (j=0; j<8; j++) {
                                 if (update & (1 << j)) {                                  if (update & (1 << j)) {
 TRACEOUT(("key %x %d", i * 8 + j, (key[i] & (1 << j))?1:0));  
                                         keycode = keymac[i * 8 + j];                                          keycode = keymac[i * 8 + j];
                                         if (keycode != NC) {                                          if (keycode != NC) {
                                                 if (key[i] & (1 << j)) {                                                  if (key[i] & (1 << j)) {
                                                         keystat_senddata(keycode);                                                          keystat_senddata(keycode);
                                                           if ((repkey[keycode >> 3] << (keycode & 7))
                                                                                                                                           & 0x80) {
                                                                   mackbd.repkey = keycode;
                                                                   mackbd.repbase = tick;
                                                                   mackbd.reptick = 500;
                                                           }
                                                 }                                                  }
                                                 else {                                                  else {
                                                           if (mackbd.repkey == keycode) {
                                                                   mackbd.repkey = NC;
                                                           }
                                                         keystat_senddata(keycode + 0x80);                                                          keystat_senddata(keycode + 0x80);
                                                 }                                                  }
                                         }                                          }
Line 94  TRACEOUT(("key %x %d", i * 8 + j, (key[i Line 122  TRACEOUT(("key %x %d", i * 8 + j, (key[i
                         }                          }
                 }                  }
         }          }
   
           // ¥­¡¼¥ê¥Ô¡¼¥È½èÍý
           if (mackbd.repkey != NC) {
                   if ((tick - mackbd.repbase) >= mackbd.reptick) {
                           keystat_senddata(mackbd.repkey);                // keystat¦¤Çbreak¤¹¤ë
                           mackbd.repbase = tick;
                           mackbd.reptick = 40;
                   }
           }
 }  }
   
 BOOL mackbd_keydown(int keycode) {  BOOL mackbd_keydown(int keycode) {
Line 126  BOOL mackbd_keyup(int keycode) { Line 163  BOOL mackbd_keyup(int keycode) {
         return(FALSE);          return(FALSE);
 }  }
   
   void mackbd_activate(BOOL active) {
   
           if (mackbd.active != active) {
                   mackbd.active = active;
                   if (!active) {
                           ZeroMemory(&mackbd.keymap, sizeof(mackbd.keymap));
                           keystat_allrelease();
                   }
           }
   }
   
 #else  #else
   
 enum {  enum {
Line 187  static const BYTE keymac[128] = { Line 235  static const BYTE keymac[128] = {
 typedef struct {  typedef struct {
         UINT32  tick;          UINT32  tick;
         UINT16  shift;          UINT16  shift;
           BOOL    active;
 } MACKBD;  } MACKBD;
   
 static  MACKBD          mackbd;  static  MACKBD          mackbd;
Line 194  static MACKBD  mackbd; Line 243  static MACKBD  mackbd;
 void mackbd_initialize(void) {  void mackbd_initialize(void) {
   
         ZeroMemory(&mackbd, sizeof(mackbd));          ZeroMemory(&mackbd, sizeof(mackbd));
           mackbd.active = TRUE;
 }  }
   
 void mackbd_callback(void) {  void mackbd_callback(void) {
Line 204  void mackbd_callback(void) { Line 254  void mackbd_callback(void) {
         UINT16  shiftchg;          UINT16  shiftchg;
         UINT    i;          UINT    i;
   
           if (!mackbd.active) {
                   return;
           }
   
         tick = GETTICK();          tick = GETTICK();
         if (mackbd.tick != tick) {          if (mackbd.tick != tick) {
                 mackbd.tick = tick;                  mackbd.tick = tick;
Line 274  BOOL mackbd_keyup(int keycode) { Line 328  BOOL mackbd_keyup(int keycode) {
         }          }
 }  }
   
   void mackbd_activate(BOOL active) {
   
           if (mackbd.active != active) {
                   mackbd.active = active;
                   if (!active) {
                           keystat_allrelease();
                   }
           }
   }
   
 #endif  #endif
   
   

Removed from v.1.3  
changed lines
  Added in v.1.5


RetroPC.NET-CVS <cvs@retropc.net>