Diff for /np2/keystat.c between versions 1.4 and 1.5

version 1.4, 2004/02/19 11:32:11 version 1.5, 2004/02/21 04:48:35
Line 1 Line 1
 #include        "compiler.h"  #include        "compiler.h"
   #include        "dosio.h"
 #include        "textfile.h"  #include        "textfile.h"
 #include        "pccore.h"  #include        "pccore.h"
 #include        "iocore.h"  #include        "iocore.h"
Line 24  static KEYSTAT  keystat; Line 25  static KEYSTAT  keystat;
   
 void keystat_initialize(void) {  void keystat_initialize(void) {
   
           char    path[MAX_PATH];
   
         ZeroMemory(&keystat, sizeof(keystat));          ZeroMemory(&keystat, sizeof(keystat));
         FillMemory(keystat.ref, sizeof(keystat.ref), NKEYREF_NC);          FillMemory(keystat.ref, sizeof(keystat.ref), NKEYREF_NC);
         keystat_tblreset();          keystat_tblreset();
           getbiospath(path, "key.txt", sizeof(path));
           keystat_tblload(path);
 }  }
   
 void keystat_tblreset(void) {  void keystat_tblreset(void) {
Line 40  void keystat_tblreset(void) { Line 45  void keystat_tblreset(void) {
         }          }
 }  }
   
   void keystat_tblset(REG8 ref, const UINT8 *key, UINT cnt) {
   
           UINT8   keycode;
           NKEYM   *nkey;
   
           keycode = ref & 0x7f;
           if ((keycode != NKEY_USER1) && (keycode != NKEY_USER2)) {
                   nkey = (NKEYM *)(nkeytbl.key + keycode);
           }
           else {
                   nkey = (NKEYM *)(nkeytbl.user + (keycode - NKEY_USER1));
                   cnt = min(cnt, 15);
           }
           cnt = min(cnt, 3);
           nkey->keys = (UINT8)cnt;
           if (cnt) {
                   CopyMemory(nkey->key, key, cnt);
           }
   }
   
   
 // ---- config...  // ---- config...
   
 static REG8 searchkeynum(const char *str) {  static const char str_userkey1[] = "userkey1";
   static const char str_userkey2[] = "userkey2";
   
   static REG8 searchkeynum(const char *str, BOOL user) {
   
 const KEYNAME   *n;  const KEYNAME   *n;
 const KEYNAME   *nterm;  const KEYNAME   *nterm;
Line 56  const KEYNAME *nterm; Line 84  const KEYNAME *nterm;
                 }                  }
                 n++;                  n++;
         }          }
           if (user) {
                   if (!milstr_cmp(str_userkey1, str)) {
                           return(NKEY_USER1);
                   }
                   if (!milstr_cmp(str_userkey2, str)) {
                           return(NKEY_USER2);
                   }
           }
         return(0xff);          return(0xff);
 }  }
   
 void keystat_tblload(const char *filename) {  void keystat_tblload(const char *filename) {
   
         TEXTFILEH       tfh;          TEXTFILEH       tfh;
         char            work[128];          char            work[256];
         char            *p;          char            *p;
         char            *q;          char            *q;
         char            *r;          char            *r;
         REG8            key;          UINT8           ref;
           UINT8           key[15];
           UINT            cnt;
   
         tfh = textfile_open(filename, 0x800);          tfh = textfile_open(filename, 0x800);
         if (tfh == NULL) {          if (tfh == NULL) {
Line 82  void keystat_tblload(const char *filenam Line 120  void keystat_tblload(const char *filenam
                         continue;                          continue;
                 }                  }
                 *q++ = '\0';                  *q++ = '\0';
                 r = (char *)milstr_chr(p, ' ');                  r = milstr_chr(p, ' ');
                 if (r != NULL) {                  if (r != NULL) {
                         *r = '\0';                          *r = '\0';
                 }                  }
                 key = searchkeynum(p);                  ref = searchkeynum(p, TRUE);
                   if (ref == 0xff) {
                 while(q) {                          continue;
                   }
                   cnt = 0;
                   while((q) && (cnt < 16)) {
                         p = milstr_nextword(q);                          p = milstr_nextword(q);
                         q = milstr_chr(p, ' ');                          q = milstr_chr(p, ' ');
                         if (q != NULL) {                          if (q != NULL) {
                                 *q++ = '\0';                                  *q++ = '\0';
                         }                          }
                         key = searchkeynum(p);                          key[cnt] = searchkeynum(p, FALSE);
                           if (key[cnt] != 0xff) {
                                   cnt++;
                           }
                 }                  }
                   keystat_tblset(ref, key, cnt);
         }          }
         textfile_close(tfh);          textfile_close(tfh);
   
Line 213  void keystat_resendstat(void) { Line 257  void keystat_resendstat(void) {
   
 void keystat_keydown(REG8 ref) {  void keystat_keydown(REG8 ref) {
   
         UINT8           keycode;          UINT8   keycode;
         UINT8           shift;          UINT8   shift;
 const NKEYM3    *nkey3;  const NKEYM     *nkey;
 const NKEYM15   *nkey15;  
   
         keycode = ref & 0x7f;          keycode = ref & 0x7f;
         if (np2cfg.KEY_MODE) {          if (np2cfg.KEY_MODE) {
Line 227  const NKEYM15 *nkey15; Line 270  const NKEYM15 *nkey15;
                 }                  }
         }          }
         if ((keycode != NKEY_USER1) && (keycode != NKEY_USER2)) {          if ((keycode != NKEY_USER1) && (keycode != NKEY_USER2)) {
                 nkey3 = nkeytbl.key + keycode;                  nkey = (NKEYM *)(nkeytbl.key + keycode);
                 keystat_down(nkey3->key, nkey3->keys, keycode);                  keystat_down(nkey->key, nkey->keys, keycode);
         }          }
         else {          else {
 #if 0                  nkey = (NKEYM *)(nkeytbl.user + (keycode - NKEY_USER1));
                 nkey15 = nkeytbl.user + (keycode - NKEY_USER1);                  keystat_down(nkey->key, nkey->keys, NKEYREF_USER);
 #else  
                 nkey15 = (NKEYM15 *)(np2cfg.userkey + (keycode - NKEY_USER1));  
 #endif  
                 keystat_down(nkey15->key, nkey15->keys, NKEYREF_USER);  
         }          }
 }  }
   
 void keystat_keyup(REG8 ref) {  void keystat_keyup(REG8 ref) {
   
         UINT8           keycode;          UINT8   keycode;
         UINT8           shift;          UINT8   shift;
 const NKEYM3    *nkey3;  const NKEYM     *nkey;
 const NKEYM15   *nkey15;  
   
         keycode = ref & 0x7f;          keycode = ref & 0x7f;
         if (np2cfg.KEY_MODE) {          if (np2cfg.KEY_MODE) {
Line 256  const NKEYM15 *nkey15; Line 294  const NKEYM15 *nkey15;
                 }                  }
         }          }
         if ((keycode != NKEY_USER1) && (keycode != NKEY_USER2)) {          if ((keycode != NKEY_USER1) && (keycode != NKEY_USER2)) {
                 nkey3 = nkeytbl.key + keycode;                  nkey = (NKEYM *)(nkeytbl.key + keycode);
                 keystat_up(nkey3->key, nkey3->keys, keycode);                  keystat_up(nkey->key, nkey->keys, keycode);
         }          }
         else {          else {
 #if 0                  nkey = (NKEYM *)(nkeytbl.user + (keycode - NKEY_USER1));
                 nkey15 = nkeytbl.user + (keycode - NKEY_USER1);                  keystat_up(nkey->key, nkey->keys, NKEYREF_USER);
 #else  
                 nkey15 = (NKEYM15 *)(np2cfg.userkey + (keycode - NKEY_USER1));  
 #endif  
                 keystat_up(nkey15->key, nkey15->keys, NKEYREF_USER);  
         }          }
 }  }
   

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


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