commanderx16 / x16-rom

Other
153 stars 43 forks source link

Support user-defined keyboard layouts #258

Closed mist64 closed 2 years ago

mist64 commented 2 years ago

There should be a range of banked memory reserved for uploading a user-defined keyboard layout. This layout can then be activated using autoboot from SD.

mist64 commented 2 years ago
Keymap is now a $516 byte data structure that resides
at $A000 in bank 0.
* $A000-$A07F: PS/2 scancode -> PETSCII (unshifted)
* $A080-$A0FF: PS/2 scancode -> PETSCII (shift)
* $A100-$A17F: PS/2 scancode -> PETSCII (ctrl)
* $A180-$A1FF: PS/2 scancode -> PETSCII (alt)
* $A200-$A27F: PS/2 scancode -> PETSCII (altgr)
* $A280-$A07F: PS/2 scancode -> ISO (unshifted)
* $A300-$A37F: PS/2 scancode -> ISO (shift)
* $A380-$A3FF: PS/2 scancode -> ISO (ctrl)
* $A400-$A47F: PS/2 scancode -> ISO (alt)
* $A480-$A4FF: PS/2 scancode -> ISO (altgr)
* $A500-$A50F: big-endian bitfield, PS/2 scancodes
               for which CAPS means SHIFT
* $A510-$A515: uppercase ASCIIZ locale (e.g. "EN-US")

This allows loading custom tables using
        LOAD"KEYMAP",8,0,$A000