Is there a way to set CCS64 so that it uses the standard PC keyboard to enter data into the C64? For instance I'd love to be able to press the " key instead of remembering shift-2 to double quotes.
Thanks,
Jason Hoffman
Keyboard Mapping
Moderator: Håkan Sundell
-
Stuart Toomer
- Site Co-Admin
- Posts: 786
- Joined: Wed Aug 20, 2003 2:46 pm
- Location: East Yorkshire, England
Re: Keyboard Mapping
When you say "need to", why is that? I am just curious, and not mocking your comment. As a coder myself, I can't see why not?
I agree with the OP here, because trying to type a BASIC program on CCS64 is so hard due to typos. I haven't touched a real C64 keyboard in over 20 years.
I agree with the OP here, because trying to type a BASIC program on CCS64 is so hard due to typos. I haven't touched a real C64 keyboard in over 20 years.
-
Stuart Toomer
- Site Co-Admin
- Posts: 786
- Joined: Wed Aug 20, 2003 2:46 pm
- Location: East Yorkshire, England
Re: Keyboard Mapping
When I talk about 'special' keys, I mean keys that are not normal for the type of keyboard being used. For example, the C= key in not standard on a PC keyboard, so this key need to be mapped to some special PC key-combination instead; so when the user enters this special key-combination on the PC keyboard, the emulator will pretend that the C= key has been pressed on the 'original' (C64) keyboard within its key-input routine(s). Surely, all emulators that need to emulate a non-standard keyboard need to do something like this in code,to achieve such legacy-compatibility.
Kind regards,
Stuart Toomer.
Stuart Toomer.
Re: Keyboard Mapping
I always thought it would be impossible to map a standard US keyboard to a C64 emulator, because a C64 wants a 'Shift-2' to display a double quote character.
But it is indeed possible. If you replace the text in WIN_POS.VKM with the text below, it works perfectly in the VICE emulator.
But it is indeed possible. If you replace the text in WIN_POS.VKM with the text below, it works perfectly in the VICE emulator.
Code: Select all
-----------------------------------------------
# VICE keyboard mapping file
#
# Modified by Leif Bloomquist on March 23/2007 to
# give a proper symbolic mapping on US kbds - finally!!!1
#
# A Keyboard map is read in as patch to the current map.
#
# File format:
# - comment lines start with '#'
# - keyword lines start with '!keyword'
# - normal line has 'keysym/scancode row column shiftflag'
#
# Keywords and their lines are:
# '!CLEAR' clear whole table
# '!INCLUDE filename' read file as mapping file
# '!LSHIFT row col' left shift keyboard row/column
# '!RSHIFT row col' right shift keyboard row/column
# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT)
# '!UNDEF keysym' remove keysym from table
#
# Shiftflag can have the values:
# 0 key is not shifted for this keysym/scancode
# 1 key is shifted for this keysym/scancode
# 2 left shift
# 4 right shift
# 8 key can be shifted or not with this keysym/scancode
# 16 deshift key for this keysym/scancode
# 32 another definition for this keysym/scancode follows
#
# Negative row values:
# 'keysym -1 n' joystick #1, direction n
# 'keysym -2 n' joystick #2, direction n
# 'keysym -3 0' first RESTORE key
# 'keysym -3 1' second RESTORE key
# 'keysym -4 0' 40/80 column key
# 'keysym -4 1' CAPS (ASCII/DIN) key
#
!CLEAR
!LSHIFT 1 7
!RSHIFT 6 4
!VSHIFT RSHIFT
#0 -1 -1 0 /* (no key) */
1 7 7 8 /* ESC -> Run/Stop */
2 7 0 8 /* 1 -> 1 */
3 7 3 40 /* 2 -> 2 */
3 5 6 16 /* @ -> @ */
4 1 0 8 /* 3 -> 3 */
5 1 3 8 /* 4 -> 4 */
6 2 0 8 /* 5 -> 5 */
7 2 3 40 /* 6 -> 6 */
7 6 6 16 /* ^ -> ^ */
8 3 0 40 /* 7 -> 7 */
8 2 3 1 /* & -> & */
9 3 3 40 /* 8 -> 8 */
9 6 1 16 /* * -> * */
10 4 0 40 /* 9 -> 9 */
10 3 3 1 /* ( -> ( */
11 4 3 40 /* 0 -> 0 */
11 4 0 1 /* ) -> ) */
12 5 3 8 /* Minus -> Minus */
13 6 5 40 /* Equal -> Equal */
13 5 0 16 /* + -> + */
14 0 0 8 /* Backspace -> Del */
15 7 2 8 /* TAB -> Ctrl */
16 7 6 8 /* Q -> Q */
17 1 1 8 /* W -> W */
18 1 6 8 /* E -> E */
19 2 1 8 /* R -> R */
20 2 6 8 /* T -> T */
21 3 1 8 /* Y -> Y */
22 3 6 8 /* U -> U */
23 4 1 8 /* I -> I */
24 4 6 8 /* O -> O */
25 5 1 8 /* P -> P */
26 5 5 1 /* [ -> [ */
27 6 2 1 /* ] -> ] */
28 0 1 8 /* Return -> Return */
29 7 5 8 /* Left Ctrl -> CBM */
30 1 2 8 /* A -> A */
31 1 5 8 /* S -> S */
32 2 2 8 /* D -> D */
33 2 5 8 /* F -> F */
34 3 2 8 /* G -> G */
35 3 5 8 /* H -> H */
36 4 2 8 /* J -> J */
37 4 5 8 /* K -> K */
38 5 2 8 /* L -> L */
39 6 2 40 /* ; -> ; */
39 5 5 16 /* : -> : */
40 3 0 33 /* ' -> ' */
40 7 3 1 /* ' -> ' */
41 7 1 40 /* ` -> Left Arrow */
41 6 6 1 /* ~ -> Pi */
42 1 7 2 /* Left Shift -> Left Shift */
43 6 0 8 /* \ -> Pound */
44 1 4 8 /* Z -> Z */
45 2 7 8 /* X -> X */
46 2 4 8 /* C -> C */
47 3 7 8 /* V -> V */
48 3 4 8 /* B -> B */
49 4 7 8 /* N -> N */
50 4 4 8 /* M -> M */
51 5 7 8 /* , -> , */
52 5 4 8 /* . -> . */
53 6 7 8 /* / -> / */
54 6 4 4 /* Right Shift -> Right Shift */
55 6 1 8 /* Grey * -> * */
#56 -1 -1 0 /* Left Alt -> (no key) */
57 7 4 8 /* Space -> Space */
58 7 7 8 /* Caps Lock -> Run/Stop */
59 0 4 8 /* F1 -> F1 */
60 0 4 1 /* F2 -> F2 */
61 0 5 8 /* F3 -> F3 */
62 0 5 1 /* F4 -> F4 */
63 0 6 8 /* F5 -> F5 */
64 0 6 1 /* F6 -> F6 */
65 0 3 8 /* F7 -> F7 */
66 0 3 1 /* F8 -> F8 */
#67 -1 -1 0 /* F9 -> (no key) */
#68 -1 -1 0 /* F10 -> (no key) */
#69 -1 -1 0 /* Num Lock -> (no key) */
#70 -1 -1 0 /* Scroll Lock -> (no key) */
#71 -1 -1 0 /* Numpad 7 -> (no key) */
#72 -1 -1 0 /* Numpad 8 -> (no key) */
#73 -1 -1 0 /* Numpad 9 -> (no key) */
#74 -1 -1 0 /* Numpad - -> (no key) */
#75 -1 -1 0 /* Numpad 4 -> (no key) */
#76 -1 -1 0 /* Numpad 5 -> (no key) */
#77 -1 -1 0 /* Numpad 6 -> (no key) */
#78 -1 -1 0 /* Numpad + -> (no key) */
#79 -1 -1 0 /* Numpad 1 -> (no key) */
#80 -1 -1 0 /* Numpad 2 -> (no key) */
#81 -1 -1 0 /* Numpad 3 -> (no key) */
#82 -1 -1 0 /* Numpad 0 -> (no key) */
#83 -1 -1 0 /* Numpad . -> (no key) */
#84 -1 -1 0 /* SysReq -> (no key) */
#85 -1 -1 0 /* 85 -> (no key) */
#86 -1 -1 0 /* 86 -> (no key) */
#87 -1 -1 0 /* F11 -> (no key) */
#88 -1 -1 0 /* F12 -> (no key) */
89 6 3 8 /* Home -> CLR/HOME */
90 0 7 1 /* Up -> CRSR UP */
#91 -1 -1 0 /* PgUp -> (no key) */
92 0 2 1 /* Left -> CRSR LEFT */
93 0 2 8 /* Right -> CRSR RIGHT */
#94 -1 -1 0 /* End -> (no key) */
95 0 7 8 /* Down -> CRSR DOWN */
#96 -1 -1 0 /* PgDown -> (no key) */
97 0 0 1 /* Ins -> Shift-Del (Ins)*/
98 0 0 8 /* Del -> Del */
#99 -1 -1 0 /* Numpad Enter -> (no key) */
#100 -1 -1 0 /* Right Ctrl -> (no key) */
#101 -1 -1 0 /* Pause -> (no key) */
#102 -1 -1 0 /* PrtScr -> (no key) */
#103 -1 -1 0 /* Numpad / -> (no key) */
#104 -1 -1 0 /* Right Alt -> (no key) */
#105 -1 -1 0 /* Break -> (no key) */
106 7 5 8 /* Left Win95 -> CBM */
#107 -1 -1 0 /* Right Win95 -> (no key) */
#
# Joystick 1
#
#KP_0 -1 0
#KP_1 -1 1
#KP_2 -1 2
#KP_3 -1 3
#KP_4 -1 4
#KP_5 -1 5
#KP_6 -1 6
#KP_7 -1 7
#KP_8 -1 8
#KP_9 -1 9
#
# Joystick 2
#
#w -2 7
#e -2 8
#r -2 9
#s -2 4
#d -2 5
#f -2 6
#x -2 1
#c -2 2
#v -2 3
#space -2 0
# Restore key mappings
91 -3 0 /* PgUp -> RESTORE */