# Default key mapping table for Free42 (Mac version)
#
# Format: [Ctrl|Alt|Shift]* <Character> : <macro>
# <Character> is either a printable character, or a unicode character code
# written in hexadecimal with a 0x prefix. So, for example, the character 0
# (zero) can be written as "0" or "0x30" (without the quotes); the two
# representations are equivalent.
# <macro> is a sequence of zero or more HP-42S key codes. The key codes must be
# between 1 and 255; codes 1..37 correspond to actual keys on the calculator's
# keyboard, while codes 38..255 can be used to refer to extra keys defined by
# customized skins.
#
# Anything from a "#" until the end of the line is a comment, and is ignored.
# White space (Space, Tab) separates tokens in the key map, but is otherwise
# ignored. Note that this means that if you want to define mappings for "#" or
# white space, you must use Unicode character codes.
#
# NOTE: Key events that translate to a single character in the printable ASCII
# range (32..126) are matched without regard of the state of the Shift key --
# so you don't have to use "Shift A" to match uppercase "A", etc. For other key
# events, shift *is* relevant (e.g. "Return" is not the same as "Shift Return").

0xF704       : 1       # menu key 1
Shift 0xF704 : 28 1    # menu key 1, shifted
0xF705       : 2       # menu key 2
Shift 0xF705 : 28 2    # menu key 2, shifted
0xF706       : 3       # menu key 3
Shift 0xF706 : 28 3    # menu key 3, shifted
0xF707       : 4       # menu key 4
Shift 0xF707 : 28 4    # menu key 4, shifted
0xF708       : 5       # menu key 5
Shift 0xF708 : 28 5    # menu key 5, shifted
0xF709       : 6       # menu key 6
Shift 0xF709 : 28 6    # menu key 6, shifted
a            : 1       # Sigma+ ("Accumulate")
A            : 28 1    # Sigma-
v            : 2       # 1/X ("inVerse")
V            : 28 2    # Y^X
q            : 3       # sqrt(X) ("sQuare root")
Q            : 28 3    # X^2
o            : 4       # LOG ("lOg, not Ln")
O            : 28 4    # 10^X
l            : 5       # LN ("Ln, not lOg")
L            : 28 5    # E^X
x            : 6       # XEQ
X            : 28 6    # GTO
m            : 7       # STO (m as in memory)
M            : 28 7    # COMPLEX
r            : 8       # RCL
R            : 28 8    # %
d            : 9       # RDN (d as in down)
D            : 28 9    # PI
s            : 10      # SIN
S            : 28 10   # ASIN
c            : 11      # COS
C            : 28 11   # ACOS
t            : 12      # TAN
T            : 28 12   # ATAN
0xD          : 13      # ENTER
0x3          : 13      # ENTER
Shift 0xD    : 28 13   # ALPHA
Shift 0x3    : 28 13   # ALPHA
w            : 14      # X<>Y ("sWap")
W            : 28 14   # LASTX
n            : 15      # +/- ("Negative")
N            : 28 15   # MODES
e            : 16      # E
E            : 28 16   # DISP
0x7F         : 17      # <-
Shift 0x7F   : 28 17   # CLEAR
0xF700       : 18      # up
Shift 0xF700 : 28 18   # BST
7            : 19      # 7
&            : 28 19   # SOLVER
8            : 20      # 8
Alt 0x2022   : 28 20   # Integ f(x) (note: can't use "Shift 8" because that's "*", which we use for "multiply")
9            : 21      # 9
(            : 28 21   # MATRIX
/            : 22      # divide
?            : 28 22   # STAT
0xF701       : 23      # down
Shift 0xF701 : 28 23   # SST
4            : 24      # 4
$            : 28 24   # BASE
5            : 25      # 5
%            : 28 25   # CONVERT
6            : 26      # 6
^            : 28 26   # FLAGS
*            : 27      # multiply
Ctrl 8       : 28 27   # PROB ("*" is already shifted so we have to do something odd here)
1            : 29      # 1
!            : 28 29   # ASSIGN
2            : 30      # 2
@            : 28 30   # CUSTOM
3            : 31      # 3
0x23         : 28 31   # PGM.FCN
-            : 32      # -
_            : 28 32   # PRINT
0x1B         : 33      # EXIT
Shift 0x1B   : 28 33   # OFF
0            : 34      # 0
)            : 28 34   # TOP.FCN
.            : 35      # .
,            : 35      # .
>            : 28 35   # SHOW
<            : 28 35   # SHOW
\            : 36      # R/S
|            : 28 36   # PRGM
+            : 37      # +
=            : 28 37   # CATALOG ("+" is already shifted so we have to do something odd here)

# Convenience key codes for GTO and PI
g            : 28 6    # GTO
p            : 28 9    # PI
