# 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 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)
# '!SHIFTL shiftkey'     shift lock 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
# 64     shift lock
# 256    key is used for an alternative keyboard mapping
#
# 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
# 'keysym -4 1' CAPS (ASCII/DIN) key
# 'keysym -5 n' joyport keypad, key n
#
# 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.

!CLEAR
!LSHIFT 1 7
!RSHIFT 6 4
!VSHIFT RSHIFT

# Tab = CTRL
Tab 7 2 8
# Shift + Tab = CTRL
ISO_Left_Tab 7 2 8

# Control_L = CBM
Control_L 7 5 8

BackSpace 0 0 8
Delete 0 0 8
Down 0 7 8
Escape 7 7 8
F1 0 4 8
F2 0 4 1
F3 0 5 8
F4 0 5 1
F5 0 6 8
F6 0 6 1
F7 0 3 8
F8 0 3 1
Home 6 3 8
Insert 6 0 8
Left 0 2 1
Return 0 1 8
Right 0 2 8
Shift_L 1 7 2
Shift_R 6 4 4
Up 0 7 1

ampersand 3 0 8
apostrophe 6 2 8
asciicircum 2 3 8
asciitilde 7 1 8
asterisk 3 3 8
at 7 3 8
backslash 6 5 8
bar 6 5 8
braceleft 5 6 8
braceright 6 1 8
bracketleft 5 6 8
bracketright 6 1 8
colon 5 5 8
comma 5 7 8
dollar 1 3 8
equal 5 3 8
exclam 7 0 8
grave 7 1 8
greater 5 4 1
greater 5 4 8
less 5 7 8
minus 5 0 8
numbersign 1 0 8
parenleft 4 0 8
parenright 4 3 8
percent 2 0 8
period 5 4 8
plus 5 3 8
question 6 7 8
quotedbl 6 2 8
semicolon 5 5 8
slash 6 7 8
space 7 4 8
sterling 6 0 8
underscore 5 0 8

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

#
# 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
#
q -2 7
w -2 8
e -2 9
a -2 4
s -2 5
d -2 6
z -2 1
x -2 2
c -2 3
space -2 0

# Restore key mappings
Page_Up -3 0
Prior -3 1

# Dead keys support for those using US-International keyboard layout.
dead_circumflex 2 3 8  # &
dead_tilde      7 1 8  # A_LFT <-
dead_grave      7 1 8  # A_LFT <-
dead_acute      6 2 8  # ;
dead_diaeresis  6 2 8  # ]

#
# joyport attached keypad
#
Num_Lock    -5 0
KP_7        -5 1
KP_8        -5 2
KP_9        -5 3
KP_Divide   -5 4
Scroll_Lock -5 5
KP_4        -5 6
KP_5        -5 7
KP_6        -5 8
KP_Multiply -5 9
Sys_Req     -5 10
KP_1        -5 11
KP_2        -5 12
KP_3        -5 13
KP_Subtract -5 14
Print       -5 15
KP_0        -5 16
KP_Delete   -5 17
KP_Enter    -5 18
KP_Add      -5 19
