Commodore 64, the C64DTV, the C128, the VIC20, practically all PET models, the PLUS4 and the CBM-II (aka C610/C510). An extra emulator is provided for C64 expanded with the CMD SuperCPU.
Emulator last updated:
Current Official Version:
Development and History
Variants and Forks
This is quite a convoluted area. There are two .vkm files under the relevant system folder (e.g. C64) entitled win_pos.vkm and win_sym.vkm. There are two ways to map your PC keyboard to the C64 keyboard:
- Positional (win_pos) keyboard mapping - that's where your PC keyboard keys are mapped directly onto the C64 keyboard layout (that is ketying 'minus' then 'plus' on your PC keyboard will produce "plus" then "minus" on the C64 emulator)
- Symbolic - where keyboard are matched 'symbol for symbol' i.e. if you type 'minus' on your PC keyboard you get 'minus' on the C64 screen.
I'd advise using symbolic. However, problem being that VICE comes matched to US keyboards, so if you're in the UK, your keys will be out. I've edited the standard win_sym.vkm for UK keyboards and the C64. You can download it here:
File:Win sym uk.7z
Make sure you point VICE to it in Settings>Keyboard settings>Symbolic(user) and browse to the file.
The rest of remapping is quite complicated. Basically, a map consists of 4 numbers:
1 2 3 4
e.g. in the file you'll see:
1 7 7 8 /* ESC -> Run/Stop */
The first number corresponds to the key on your PC keyboard.
The Second and Third number identify the Commodore key to map it against (row/column format). Ref here
The Fourth number tells the C64 what to do with the key (e.g. shift it first) (See the vkm file itself for guide on this)
If you change a shifted key (e.g. you change "2" to produce an "@" rather than the normal commodore shifted symbol of """ (i.e. a quote), then you have to tell it to ignore the normal shifted function of that key when first refeerencing that key and to expect the new shifted symbol on the next line. E.g.:
3 7 3 40 /* 2 -> 2 */ 3 5 6 16 /* @ -> @ */
Where 40 is the sum of 32 and 8, being:
- 8 key can be shifted or not with this keysym/scancode
- 32 another definition for this keysym/scancode follows