Diff for /np2/macosx/mackbd.cpp between versions 1.1 and 1.14

version 1.1, 2003/10/16 17:59:39 version 1.14, 2003/12/04 17:48:17
Line 6 Line 6
 #include        "pccore.h"  #include        "pccore.h"
 #include        "iocore.h"  #include        "iocore.h"
   
   #if defined(NP2GCC)
   #include        "mousemng.h"
   #include        "menu.h"
   #include        "sysmng.h"
   #endif
   
 #define         NC              0xff  #define         NC              0xff
   
Line 24  static const BYTE keymac[128] = { Line 29  static const BYTE keymac[128] = {
                                 0x24,0x26,0x28,0x30,0x32,0x2e,0x2f,0x31,                                  0x24,0x26,0x28,0x30,0x32,0x2e,0x2f,0x31,
                         //       TAB, SPC,    ,  BS,    , ESC,    , apl         ; 0x30                          //       TAB, SPC,    ,  BS,    , ESC,    , apl         ; 0x30
                                 0x0f,0x34,  NC,0x0e,  NC,0x00,  NC,  NC,                                  0x0f,0x34,  NC,0x0e,  NC,0x00,  NC,  NC,
                         //       sft, ctl, alt, cps,    ,    ,    ,             ; 0x38                          //       sft, cps, alt, ctl,    ,    ,    ,             ; 0x38
                                   NC,  NC,  NC,  NC,  NC,  NC,  NC,  NC,                                  0x70,0x79,0x73,0x74,  NC,  NC,  NC,  NC,                // for CW
                         //          , [.],    , [*],    ,    , [+],             ; 0x40                          //          , [.],    , [*],    ,    , [+],             ; 0x40
                                   NC,0x50,  NC,0x45,  NC,  NC,0x49,  NC,                                    NC,0x50,  NC,0x45,  NC,  NC,0x49,  NC,
                         //          ,    ,    ,    , ret,    , [-], clr         ; 0x48                          //          ,    ,    ,    , ret,    , [-], clr         ; 0x48
Line 34  static const BYTE keymac[128] = { Line 39  static const BYTE keymac[128] = {
                                   NC,0x4d,0x4e,0x4a,0x4b,0x4c,0x46,0x47,                                    NC,0x4d,0x4e,0x4a,0x4b,0x4c,0x46,0x47,
                         //       [6], [7],    , [8], [9],  ¡ï,  ¡², [,]         ; 0x58                          //       [6], [7],    , [8], [9],  ¡ï,  ¡², [,]         ; 0x58
                                 0x48,0x42,  NC,0x43,0x44,0x0d,0x33,0x4f,                                  0x48,0x42,  NC,0x43,0x44,0x0d,0x33,0x4f,
                         //        F5,  F6,  F7,  F3,  F8,  F9,    , F11         ; 0x60                          //        F5,  F6,  F7,  F3,  F8,  F9,EISU, F11         ; 0x60
                                 0x66,0x67,0x68,0x64,0x69,0x6a,  NC,0x72,                                  0x66,0x67,0x68,0x64,0x69,0x6a,0x51,0x72,
                         //          , F13,    , F14,    , F10,    , F12         ; 0x68                          //      KANA, F13,    , F14,    , F10,    , F12         ; 0x68
                                   NC,  NC,  NC,  NC,  NC,0x6b,  NC,0x80,                  0x35,  NC,  NC,  NC,  NC,0x6b,  NC,  NC,
                         //          , F15, hlp, hom,  ru, del,  F4, end         ; 0x70                          //          , F15, hlp, hom,  ru, del,  F4, end         ; 0x70
                                   NC,  NC,0x3f,0x3e,0x37,0x39,0x65,0x3f,                                    NC,  NC,0x3f,0x3e,0x37,0x39,0x65,0x3f,
                         //        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 keymac2[128] = {  static const BYTE keymac2[128] = {
                         //        £Á,  £Ó,  £Ä,  £Æ,  £È,  £Ç,  £Ú,  £Ø         ; 0x00                          //        £Á,  £Ó,  £Ä,  £Æ,  £È,  £Ç,  £Ú,  £Ø         ; 0x00
Line 60  static const BYTE keymac2[128] = { Line 64  static const BYTE keymac2[128] = {
                                   NC,  NC,  NC,  NC,  NC,  NC,  NC,  NC,                                    NC,  NC,  NC,  NC,  NC,  NC,  NC,  NC,
                         //       TAB, SPC,    ,  BS,    , ESC,    , apl         ; 0x30                          //       TAB, SPC,    ,  BS,    , ESC,    , apl         ; 0x30
                                   NC,  NC,  NC,  NC,  NC,  NC,  NC,  NC,                                    NC,  NC,  NC,  NC,  NC,  NC,  NC,  NC,
                         //       sft, ctl, alt, cps,    ,    ,    ,             ; 0x38                          //       sft, cps, alt, ctl,    ,    ,    ,             ; 0x38
                                   NC,  NC,  NC,  NC,  NC,  NC,  NC,  NC,                                    NC,  NC,  NC,  NC,  NC,  NC,  NC,  NC,
                         //          , [.],    , [*],    ,    , [+],             ; 0x40                          //          , [.],    , [*],    ,    , [+],             ; 0x40
                                   NC,  NC,  NC,  NC,  NC,  NC,  NC,  NC,                                    NC,  NC,  NC,  NC,  NC,  NC,  NC,  NC,
Line 80  static const BYTE keymac2[128] = { Line 84  static const BYTE keymac2[128] = {
                                   NC,  NC,  NC,  NC,  NC,  NC,  NC,  NC};                                    NC,  NC,  NC,  NC,  NC,  NC,  NC,  NC};
   
   
 enum {  
         kMac_base               = 0x01,  
   
         kMac_kana               = 0x37,  
         kMac_shift              = 0x38,  
         kMac_caps               = 0x39,  
         kMac_alt                = 0x3a,  
         kMac_ctrl               = 0x3b  
 };  
   
 #define kMac_Basebit(a)         (1 << ((a) & 15))  
   
 static  UINT16  shiftback = 0;  
 static  UINT32  shiftchktick = 0;  
   
 typedef struct {  typedef struct {
         UINT16  bit;          BYTE    f11[4];
         BYTE    code;          BYTE    f12[4];
 } KEYSEA;  } BINDTBL;
   
 static const KEYSEA keysea[] = {  static const BINDTBL bindtbl = {
                                         {kMac_Basebit(kMac_shift),      0x70},                                                  //   ¥«¥Ê  Stop  [¡á]  NFER
                                         {kMac_Basebit(kMac_caps),       0x79},                                                          {0x72, 0x60, 0x4d, 0x51},
 //                                      {kMac_Basebit(kMac_kana),       0x72},                                                  //         Copy  [¡¤]  XFER
                                         {kMac_Basebit(kMac_alt),        0x73},                                                          {NC,   0x61, 0x4f, 0x35}};
                                         {kMac_Basebit(kMac_ctrl),       0x74}};  
   
   void mackbd_initialize(void) { };
   
 void mackbd_init(void) {  void mackbd_keydown(int keycode) {
   
         shiftback = 0;          BYTE    data;
         shiftchktick = 0;  
 }  
   
 void mackbd_callback(void) {  
   
         UINT32  tick;          data = NC;
         BYTE    mackeymap[16];          if (keycode == 0x67) {
         UINT16  tmp;                  if (np2oscfg.F11KEY < (sizeof(bindtbl.f11)/sizeof(BYTE))) {
         UINT16  keyxor;                          data = bindtbl.f11[np2oscfg.F11KEY];
         int             i;  
   
         tick = GETTICK();  
         if (shiftchktick != tick) {  
                 shiftchktick = tick;  
   
 #if TARGET_API_MAC_CARBON  
                 GetKeys((long *)mackeymap);  
 #else  
                 GetKeys((unsigned long *)mackeymap);  
 #endif  
                 tmp = (mackeymap[7] << 8) + mackeymap[6];  
                 keyxor = shiftback ^ tmp;  
                 shiftback = tmp;  
                 for (i=0; i<(sizeof(keysea) / sizeof(KEYSEA)); i++) {  
                         if (keyxor & keysea[i].bit) {  
                                 if (shiftback & keysea[i].bit) {  
                                         keystat_senddata(keysea[i].code);  
                                 }  
                                 else {  
                                         keystat_senddata(keysea[i].code | 0x80);  
                                 }  
                         }  
                 }                  }
         }          }
           else if (keycode == 0x6f) {
                   if (np2oscfg.F12KEY < (sizeof(bindtbl.f12)/sizeof(BYTE))) {
                           data = bindtbl.f12[np2oscfg.F12KEY];
               if (data == NC) {
                   mousemng_toggle(MOUSEPROC_SYSTEM);
                   menu_setmouse(np2oscfg.MOUSE_SW ^ 1);
                   sysmng_update(SYS_UPDATECFG);
               }
                   }
           }
       else {
           data = keymac[keycode];
       }
           if (data != NC) {
                   keystat_senddata(data);
           }
 }  }
   
 BOOL mackbd_down(int cmd, int keycode) {  void mackbd_keyup(int keycode) {
   
         BYTE    data;          BYTE    data;
   
         if (keycode >= 0x80) {          data = NC;
                 return(FALSE);          if (keycode == 0x67) {
         }                  if (np2oscfg.F11KEY < (sizeof(bindtbl.f11)/sizeof(BYTE))) {
         if (!cmd) {                          data = bindtbl.f11[np2oscfg.F11KEY];
                 data = keymac[keycode];                  }
         }          }
         else {          else if (keycode == 0x6f) {
                 data = keymac2[keycode];                  if (np2oscfg.F12KEY < (sizeof(bindtbl.f12)/sizeof(BYTE))) {
                           data = bindtbl.f12[np2oscfg.F12KEY];
                   }
         }          }
       else {
           data = keymac[keycode];
       }
         if (data != NC) {          if (data != NC) {
                 if (data == 0x80) {                  keystat_senddata(data | 0x80);
                         if (np2oscfg.F12COPY == 1) {                  return;
                                 data = 0x61;  
                         }  
                         else {  
                                 data = 0x60;  
                         }  
                 }  
                 keystat_senddata(data);  
                 return(TRUE);  
         }          }
         return(FALSE);  
 }  }
   
 void mackbd_up(int keycode) {  void mackbd_resetf11(void) {
   
         BYTE    data, data2;          UINT    i;
   
         if (keycode >= 0x80) {          for (i=1; i<(sizeof(bindtbl.f11)/sizeof(BYTE)); i++) {
                 return;                  keystat_forcerelease(bindtbl.f11[i]);
         }  
         data = keymac[keycode];  
         if (data != NC) {  
                 if (data == 0x80) {  
                         if (np2oscfg.F12COPY == 1) {  
                                 data = 0x61;  
                         }  
                         else {  
                                 data = 0x60;  
                         }  
                 }  
                 keystat_senddata(data | 0x80);  
         }  
         data2 = keymac2[keycode];  
         if (data2 != NC) {  
                 keystat_senddata(data2 | 0x80);  
         }          }
 }  }
   
   void mackbd_resetf12(void) {
   
           UINT    i;
   
           for (i=1; i<(sizeof(bindtbl.f12)/sizeof(BYTE)); i++) {
                   keystat_forcerelease(bindtbl.f12[i]);
           }
   }

Removed from v.1.1  
changed lines
  Added in v.1.14


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