Keyboard Mapping

Requests and discussion of possible enhancements of the CCS64 emulator.

Moderator: Håkan Sundell

Post Reply
uvulapie
Posts: 1
Joined: Mon May 22, 2006 11:23 pm

Keyboard Mapping

Post by uvulapie »

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
Stuart Toomer
Site Co-Admin
Posts: 786
Joined: Wed Aug 20, 2003 2:46 pm
Location: East Yorkshire, England

Post by Stuart Toomer »

No. Certain special keys are pre-mapped. Refer to the CCS64.HTML file for more information. All emulators need to behave in this manner.
Kind regards,

Stuart Toomer.
SJ2571
Posts: 3
Joined: Sat May 22, 2010 2:47 pm

Re: Keyboard Mapping

Post by SJ2571 »

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.
Stuart Toomer
Site Co-Admin
Posts: 786
Joined: Wed Aug 20, 2003 2:46 pm
Location: East Yorkshire, England

Re: Keyboard Mapping

Post by Stuart Toomer »

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.
K.C.
Posts: 115
Joined: Fri Nov 12, 2004 12:12 pm
Location: The Netherlands

Re: Keyboard Mapping

Post by K.C. »

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.

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      */ 
Post Reply