progress on all fronts
[com32] / src / keyb.c
index 2b01408..ea32945 100644 (file)
@@ -272,8 +272,30 @@ static void kbintr()
                num_pressed++;
        }
 
-       key = ext ? scantbl_set1_ext[code] : scantbl_set1[code];
-       ext = 0;
+       if(!ext) {
+               key = code < 0x59 ? scantbl_set1[code] : 0;
+       } else {
+               switch(code) {
+               case 0x1c: key = '\r'; break;
+               case 0x1d: key = KB_RCTRL; break;
+               //case 0x35: key = KB_NUM_MINUS; break;
+               //case 0x37: key = KB_SYSRQ; break;
+               case 0x38: key = KB_RALT; break;
+               case 0x47: key = KB_HOME; break;
+               case 0x48: key = KB_UP; break;
+               case 0x49: key = KB_PGUP; break;
+               case 0x4b: key = KB_LEFT; break;
+               case 0x4d: key = KB_RIGHT; break;
+               case 0x4f: key = KB_END; break;
+               case 0x50: key = KB_DOWN; break;
+               case 0x51: key = KB_PGDN; break;
+               case 0x52: key = KB_INSERT; break;
+               case 0x53: key = KB_DEL; break;
+               default:
+                       key = 0;
+               }
+               ext = 0;
+       }
 
        if(press) {
                if(key == KB_DEL && (keystate[KB_LALT] || keystate[KB_RALT]) && (keystate[KB_LCTRL] || keystate[KB_RCTRL])) {