# FR-FR keyboard updated by Eric Lassauge
#
include modifiers
map 0x40c
#
# Top row
#
twosuperior 0x29
notsign 0x29 altgr

ampersand 0x02
1 0x02 shift
onesuperior 0x02 altgr
exclamdown 0x02 shift altgr

eacute 0x03
2 0x03 shift
asciitilde 0x03 altgr
oneeighth 0x03 shift altgr

quotedbl 0x04
3 0x04 shift
numbersign 0x04 altgr

apostrophe 0x05
4 0x05 shift
braceleft 0x05 altgr

parenleft 0x06
5 0x06 shift
bracketleft 0x06 altgr
threeeighths 0x06 shift altgr

minus 0x07
6 0x07 shift
bar 0x07 altgr
fiveeighths 0x07 shift altgr

egrave 0x08
7 0x08 shift
grave 0x08 altgr
seveneighths 0x08 shift altgr

underscore 0x09
8 0x09 shift
backslash 0x09 altgr
trademark 0x09 shift altgr

ccedilla 0x0a
9 0x0a shift
asciicircum 0x0a altgr
plusminus 0x0a shift altgr

agrave 0x0b
0 0x0b shift
at 0x0b altgr

parenright 0x0c
degree 0x0c shift
bracketright 0x0c altgr
questiondown 0x0c shift altgr

equal 0x0d
plus 0x0d shift
braceright 0x0d altgr
dead_ogonek 0x0d shift altgr

BackSpace 0xe
#
# AZERTY first row
#
Tab 0xf localstate
ISO_Left_Tab 0xf shift

a 0x10 addupper
ae 0x10 altgr
AE 0x10 shift altgr

z 0x11 addupper
guillemotleft 0x11 altgr

e 0x12 addupper
EuroSign 0x12 altgr

r 0x13 addupper
paragraph 0x13 altgr
registered 0x13 shift altgr

t 0x14 addupper
tslash 0x14 altgr
Tslash 0x14 shift altgr

y 0x15 addupper
leftarrow 0x15 altgr
yen 0x15 shift altgr

u 0x16 addupper
downarrow 0x16 altgr
uparrow 0x16 shift altgr

i 0x17 addupper
rightarrow 0x17 altgr
idotless 0x17 shift altgr

o 0x18 addupper
oslash 0x18 altgr
Ooblique 0x18 shift altgr

p 0x19 addupper
thorn 0x19 altgr
THORN 0x19 shift altgr

dead_circumflex 0x1a
dead_diaeresis 0x1a shift
dead_abovering 0x1a shift altgr

dollar 0x1b
sterling 0x1b shift
currency 0x1b altgr
dead_macron 0x1b shift altgr

#
# AZERTY second row
#
q 0x1e addupper
Greek_OMEGA 0x1e shift altgr

s 0x1f addupper
ssharp 0x1f altgr

d 0x20 addupper
eth 0x20 altgr
ETH 0x20 shift altgr

f 0x21 addupper
dstroke 0x21 altgr
ordfeminine 0x21 shift altgr

g 0x22 addupper
eng 0x22 altgr
ENG 0x22 shift altgr

h 0x23 addupper
hstroke 0x23 altgr
Hstroke 0x23 shift altgr

j 0x24 addupper

k 0x25 addupper
kra 0x25 altgr

l 0x26 addupper
lstroke 0x26 altgr
Lstroke 0x26 shift altgr

m 0x27 addupper
masculine 0x27 shift altgr

ugrave 0x28
percent 0x28 shift
dead_caron 0x28 shift altgr

asterisk 0x2b
mu 0x2b shift
dead_grave 0x2b altgr
dead_breve 0x2b shift altgr

Return 0x1c localstate

#
# AZERTY third row
#
less 0x56
greater 0x56 shift

w 0x2c addupper

x 0x2d addupper
guillemotright 0x2d altgr

c 0x2e addupper
cent 0x2e altgr
copyright 0x2e shift altgr

v 0x2f addupper
leftdoublequotemark 0x2f altgr

b 0x30 addupper
rightdoublequotemark 0x30 altgr

n 0x31 addupper

comma 0x32
question 0x32 shift
dead_acute 0x32 altgr
dead_doubleacute 0x32 shift altgr

semicolon 0x33
period 0x33 shift
horizconnector 0x33 altgr
multiply 0x33 shift altgr

colon 0x34
slash 0x34 shift
periodcentered 0x34 altgr
division 0x34 shift altgr

exclam 0x35
section 0x35 shift
dead_belowdot 0x35 altgr
dead_abovedot 0x35 shift altgr

space 0x39 localstate
#
# Esc and Function keys
#
Escape 0x1 localstate
F1 0x3b localstate
F2 0x3c localstate
F3 0x3d localstate
F4 0x3e localstate
F5 0x3f localstate
F6 0x40 localstate
F7 0x41 localstate
F8 0x42 localstate
F9 0x43 localstate
F10 0x44 localstate
F11 0x57 localstate
F12 0x58 localstate

# Printscreen, Scrollock and Pause
# Printscreen really requires four scancodes (0xe0, 0x2a, 0xe0, 0x37),
# but (0xe0, 0x37) seems to work.
Print 0xb7 localstate
Sys_Req 0xb7 localstate
Execute 0xb7 localstate
Scroll_Lock 0x46

#
# Insert - PgDown
#
Insert 0xd2 localstate
Delete 0xd3 localstate
Home 0xc7 localstate
End 0xcf localstate
Page_Up 0xc9 localstate
Page_Down 0xd1 localstate

#
# Arrow keys
#
Left 0xcb localstate
Up 0xc8 localstate
Down 0xd0 localstate
Right 0xcd localstate

#
# Numpad
#
Num_Lock 0x45
KP_Divide 0xb5
KP_Multiply 0x37
KP_Subtract 0x4a
KP_Add 0x4e
KP_Enter 0x9c

KP_Decimal 0x53 numlock
KP_Separator 0x53 numlock
KP_Delete 0x53

KP_0 0x52 numlock
KP_Insert 0x52

KP_1 0x4f numlock
KP_End 0x4f

KP_2 0x50 numlock
KP_Down 0x50

KP_3 0x51 numlock
KP_Next 0x51

KP_4 0x4b numlock
KP_Left 0x4b

KP_5 0x4c numlock
KP_Begin 0x4c

KP_6 0x4d numlock
KP_Right 0x4d

KP_7 0x47 numlock
KP_Home 0x47

KP_8 0x48 numlock
KP_Up 0x48

KP_9 0x49 numlock
KP_Prior 0x49

Caps_Lock 0x3a
#
# Inhibited keys
#
Multi_key 0x0 inhibit