The key maps are a bit of a mess in Gtk3VICE & SDL2.
the UK key maps were only included this year (because i made them).
depending on the version of VICE you are using, the script might not be able to select the correct one you need.
so use latest version (nightly builds).
for best results use a POSITIONAL keymap.
this is the same key location as that on the real C64.
* = ]
when you learn the C64 key location it will improve your C64 gaming.
no need to press SHIFT/EQUALS for PLUS.
Just press MINUS.
SYMBOLIC is mapping C64 key at PC location.
* = SHIFT+8
Using this mode will make typing some CBM/SHIFT key GFX impossible in listings.
edit the script
change this...
; British Keyboard - Positional.
; keyboard [positional]
Add_CLP( -keymap 1)
Add_CLP( -keyboardmapping 2)
to one of these...
;positional user
ADD_CLP( -keymap 3 -poskeymap gtk3_pos_uk.vkm)
;symbolic user
ADD_CLP( -keymap 2 -symkeymap gtk3_sym_uk.vkm)
All the VKM keymap files are in this folder
\GTK3VICE-3.6.2\C64\
Code: Select all
# VICE keyboard mapping file
#
# A Keyboard map is read in as patch to the current map.
#
# File format:
# - comment lines start with '#'
# - keyword lines start with '!keyword'
# - normal lines have '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)
# '!SHIFTL shiftkey' shift lock key (RSHIFT or LSHIFT)
# for emulated keyboards that have only one shift key, set both LSHIFT
# and RSHIFT to the same row/col and use RSHIFT for VSHIFT and SHIFTL.
# '!LCTRL row col' left control keyboard row/column
# '!VCTRL ctrlkey' virtual control key (LCTRL)
# '!LCBM row col' left CBM keyboard row/column
# '!VCBM cbmkey' virtual CBM key (LCBM)
# '!UNDEF keysym' remove keysym from table
#
# Shiftflag can have these values, flags can be ORed to combine them:
# 0x0000 0 key is not shifted for this keysym/scancode
# 0x0001 1 key is combined with shift for this keysym/scancode
# 0x0002 2 key is left shift on emulated machine
# 0x0004 4 key is right shift on emulated machine (use only this one
# for emulated keyboards that have only one shift key)
# 0x0008 8 key can be shifted or not with this keysym/scancode
# 0x0010 16 deshift key for this keysym/scancode
# 0x0020 32 another definition for this keysym/scancode follows
# 0x0040 64 key is shift-lock on emulated machine
# 0x0080 128 shift modifier required on host
# 0x0100 256 key is used for an alternative keyboard mapping, e.g. C64 mode in x128
# 0x0200 512 alt-r (alt-gr) modifier required on host
# 0x0400 1024 ctrl modifier required on host
# 0x0800 2048 key is combined with cbm for this keysym/scancode
# 0x1000 4096 key is combined with ctrl for this keysym/scancode
# 0x2000 8192 key is (left) cbm on emulated machine
# 0x4000 16384 key is (left) ctrl on emulated machine
#
# Negative row values:
# 'keysym -1 n' joystick keymap A, direction n
# 'keysym -2 n' joystick keymap B, direction n
# 'keysym -3 0' first RESTORE key
# 'keysym -3 1' second RESTORE key
# 'keysym -4 0' 40/80 column key (x128)
# 'keysym -4 1' CAPS (ASCII/DIN) key (x128)
# 'keysym -5 n' joyport keypad, key n (not supported in x128)
#
# Joystick direction values:
# 0 Fire
# 1 South/West
# 2 South
# 3 South/East
# 4 West
# 5 East
# 6 North/West
# 7 North
# 8 North/East
#
# Joyport keypad key layout:
# --------------------------
# | 0 | 1 | 2 | 3 | 4 |
# --------------------------
# | 5 | 6 | 7 | 8 | 9 |
# --------------------------
# | 10 | 11 | 12 | 13 | 14 |
# --------------------------
# | 15 | 16 | 17 | 18 | 19 |
# --------------------------
#
# When a bigger spaced key is used,
# it uses the upper left most key value.
# Positional Mapping, UK Layout, C64, GTK
# C64 keyboard matrix:
#
# +-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 0|Bit 1|Bit 2|Bit 3|Bit 4|Bit 5|Bit 6|Bit 7|
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 0| DEL |Retrn|C_L/R| F7 | F1 | F3 | F5 |C_U/D|
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 1| 3 # | W | A | 4 $ | Z | S | E | S_L |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 2| 5 % | R | D | 6 & | C | F | T | X |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 3| 7 ' | Y | G | 8 ( | B | H | U | V |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 4| 9 ) | I | J | 0 | M | K | O | N |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 5| + | P | L | - | . > | : [ | @ | , < |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 6|POUND| * | ; ] | HOME| S_R | = | A_UP| / ? |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 7| 1 ! |A_LFT| CTRL| 2 " |SPACE| C= | Q | R/S |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# C64 Keyboard layout:
#
# arrow 1! 2" 3# 4$ 5% 6& 7' 8( 9) 0 + - pound clr del f1/f2
# ctrl q w e r t y u i o p @ * ^ restore f3/f4
# r/s SL a s d f g h j k l :[ ;] = return f5/f6
# CBM LS z x c v b n m ,< .> /? RS u/d l/r f7/f8
# space
!CLEAR
!LSHIFT 1 7
!RSHIFT 6 4
!VSHIFT RSHIFT
!SHIFTL LSHIFT
!LCBM 7 5
!VCBM LCBM
!LCTRL 7 2
!VCTRL LCTRL
### Not used#####################################
#bar 0 0 0 # (|)
#backslash 0 0 0 # (\)
#Page_Down 0 0 0 # (PgDn/ SysRq)
#End 7 7 8 # (End / Break)
#################################################
Insert 6 0 8 # £ (Insert)
Delete 6 6 8 # Up Arrow (Delete) [pi]
Home 6 3 8 # CLR/HOME (Home)
Page_Up -3 0 # RESTORE (PgUp)
BackSpace 0 0 8 # Inst/Del (BackSpace)
Return 0 1 8 # RETURN (Enter)
Tab 7 2 16392 # CTRL (Tab)
ISO_Left_Tab 7 2 16392 # CTRL (Shift + Tab)
space 7 4 8 # Space (SPACE)
Shift_L 1 7 2 # Shift (Left Shift)
Caps_Lock 1 7 64
Shift_R 6 4 4 # Shift (Right Shift)
Control_L 7 5 8200 # CBM (Ctrl)
Escape 7 7 8 # Run/Stop (Esc)
Left 0 2 1 # (Cursor Left)
Right 0 2 8 # (Cursor Right)
Up 0 7 1 # (Cursor Up)
Down 0 7 8 # (Cursor Down)
F1 0 4 8 # (F1)
F2 0 4 1 # (F2)
F3 0 5 8 # (F3)
F4 0 5 1 # (F4)
F5 0 6 8 # (F5)
F6 0 6 1 # (F6)
F7 0 3 8 # (F7)
F8 0 3 1 # (F8)
# gtk3 name Map C64 PC
grave 7 1 8 # Back Arrow (`)
notsign 7 1 1 # Back Arrow (¬)
exclam 7 0 1 # ! (!) 1
quotedbl 7 3 1 # " (") 2
sterling 1 0 1 # # (£) 3
dollar 1 3 1 # $ ($) 4
percent 2 0 1 # % (%) 5
asciicircum 2 3 1 # & (^) 6
ampersand 3 0 1 # ' (&) 7
asterisk 3 3 1 # ( (*) 8
parenleft 4 0 1 # ) (() 9
parenright 4 3 1 # ()) 0
minus 5 0 8 # + (-)
underscore 5 0 1 # [gfx] (_)
equal 5 3 8 # - (=)
plus 5 3 1 # [gfx] (+)
bracketleft 5 6 8 # @ ([)
braceleft 5 6 1 # [gfx] ({)
bracketright 6 1 8 # * (])
braceright 6 1 1 # [gfx] (})
semicolon 5 5 8 # : (;)
colon 5 5 1 # [ (:)
apostrophe 6 2 8 # ; (')
at 6 2 1 # ] (@)
numbersign 6 5 8 # = (#)
asciitilde 6 5 1 # = (~)
comma 5 7 8 # , (,)
less 5 7 1 # < (<)
period 5 4 8 # . (.)
greater 5 4 1 # > (>)
question 6 7 8 # ? (?)
slash 6 7 1 # / (/)
#####################
# letters and numbers
0 4 3 8
1 7 0 8
2 7 3 8
3 1 0 8
4 1 3 8
5 2 0 8
6 2 3 8
7 3 0 8
8 3 3 8
9 4 0 8
A 1 2 8
B 3 4 8
C 2 4 8
D 2 2 8
E 1 6 8
F 2 5 8
G 3 2 8
H 3 5 8
I 4 1 8
J 4 2 8
K 4 5 8
L 5 2 8
M 4 4 8
N 4 7 8
O 4 6 8
P 5 1 8
Q 7 6 8
R 2 1 8
S 1 5 8
T 2 6 8
U 3 6 8
V 3 7 8
W 1 1 8
X 2 7 8
Y 3 1 8
Z 1 4 8
a 1 2 8
b 3 4 8
c 2 4 8
d 2 2 8
e 1 6 8
f 2 5 8
g 3 2 8
h 3 5 8
i 4 1 8
j 4 2 8
k 4 5 8
l 5 2 8
m 4 4 8
n 4 7 8
o 4 6 8
p 5 1 8
q 7 6 8
r 2 1 8
s 1 5 8
t 2 6 8
u 3 6 8
v 3 7 8
w 1 1 8
x 2 7 8
y 3 1 8
z 1 4 8