![]() |
Keymap Editor for C64 |
This utility (available from github) allows the user to specify how to remap physical key locations on the Commodore 64 keyboard to different PETSCII keystrokes.
The original intent is to put punctuation keys where they are supposed to go compared to modern keyboard layouts. If one is using an authentic keyboard or equivalent then you may reach for the wrong key if trying to type an @, quotes, or colon.
![]() |
Control keys revised with numeric keypad |
One scenario you may not have thought of is to create a temporary palette of Commodore graphics characters in a custom configuration for programming a game or screen, where the graphics characters are not presently mapped to the keyboard, or not in intuitive locations. You can always restore to the default keyboard mapping, or load another preferred one.
The popular scenario for non-US users is for international keyboard layouts: to match regional differences in layouts, and to support characters not present in the US character map, including corresponding character font image differences. There are existing ROMs that include modified layouts and character images and are available at zimmers.net. Some have slight differences, and some have great differences; changes may also be focused on the upper/lowercase character set in comparison with the upper/graphics set.
![]() |
Danish ROMs example |
Alternatively to having different ROMs, one could modify in RAM including the character set with a font editor, and manually revise the keyboard layouts with the utility I am describing here.
![]() |
Font editor is also available |
Remapping punctuation example
Here are some step by step instructions for remapping the punctuation
1. Start your Commodore 64
2. Insert c-keymaps disk (or 64keymaps.prg)
3. LOAD "64KEYMAPS 49152",8,1
4. SYS 49152
5. Navigate to full colon key with cursor keys
6. Type new key to use: single quote ', and it will appear in its place
7. Press cursor left to return to that key
8. Press home to switch to mapping when shift key is pressed
9. Type new key to use: double quote ", and it will appear in its place
10. Navigate to the punctuation in the numeric key row (still in shift key map), and update them according to your preferences, e.g. !"#$%^&*()
11. When changes are to your liking, press F7 to Save
12. The program exits to BASIC showing you a driver program entry and has typed SAVE" for you. Complete the filename, end the quotes (probably using the original keystroke if not active yet) and add comma 8 for the disk drive, and press RETURN.
13. Once saved, you are welcome to VERIFY as well, and/or make sure your drive is not blinking red
14. To activate the driver, one need only RUN this program in memory. Validate the keys are mapped as expected.
15. When your computer is restarted, you need only load and run the driver you saved to apply the key mapping. The editor is the 49152 program.
16. Whenever the editor is in upper memory, you can return to it with SYS 49152. Whatever active keyboard mapping is in effect will be displayed for editing, whether that be from ROM or RAM.
17. To return to the ROM keyboard mapping, press STOP+RESTORE and verify normal operation (but if the keyboard is not working, or system is locked up, you may have to reset the C64 computer).
18. Whenever the RAM driver is running, editing will use the new mapping, but changes are not applied until you press F7 for Save. When the program for the driver is displayed be very careful not to LOAD over it (like a directory), or your system will lock up because the system was relying on the keyboard driver between addresses $0800 and $09FF. To avoid this, press RUN or STOP+RESTORE first before loading a new program. RUN will move the start of BASIC programs up to $0A00.
Advanced uses
Character selection "picker" |
To choose a character, navigate to it and press RETURN, and the display will return to the main editor screen with that character replacing the previous one.