Patchwork add bepo (french dvorak) keyboard layout

login
register
mail settings
Submitter Fred Boiteux
Date Jan. 9, 2011, 1:24 p.m.
Message ID <20110109142459.1d0922ab@trolle.local>
Download mbox | patch
Permalink /patch/78018/
State New
Headers show

Comments

Fred Boiteux - Jan. 9, 2011, 1:24 p.m.
Hello,

  It's my first message here, and I'm not a git user, so I hope the
patch format will be good (I've done a "git diff -cached" in the qemu
tree).
  I'm using the Qemu program with VNC I/O, and I had some problems with
my keyboard layout, so I've prepared a definition to be included in
Qemu, built from Xorg description. I've tested here, it works for me.

  If you have any remark/question about that, tell me.

	Fred.



Signed-off-by: Frédéric Boiteux <fboiteux@free.fr>

---
Aurelien Jarno - Jan. 20, 2011, 11:45 a.m.
On Sun, Jan 09, 2011 at 02:24:59PM +0100, Fred Boiteux wrote:
> 	Hello,
> 
>   It's my first message here, and I'm not a git user, so I hope the
> patch format will be good (I've done a "git diff -cached" in the qemu
> tree).
>   I'm using the Qemu program with VNC I/O, and I had some problems with
> my keyboard layout, so I've prepared a definition to be included in
> Qemu, built from Xorg description. I've tested here, it works for me.
> 
>   If you have any remark/question about that, tell me.
> 
> 	Fred.
> 
> 
> 
> Signed-off-by: Frédéric Boiteux <fboiteux@free.fr>
> 
> ---

Thanks, applied.

> diff --git a/pc-bios/keymaps/bepo b/pc-bios/keymaps/bepo
> new file mode 100644
> index 0000000..d40041a
> --- /dev/null
> +++ b/pc-bios/keymaps/bepo
> @@ -0,0 +1,333 @@
> +include common
> +
> +# Bépo : Improved ergonomic french keymap using Dvorak method.
> +# Built by community on 'Dvorak Fr / Bépo' :
> +# see http://www.clavier-dvorak.org/wiki/ to join and help.
> +#
> +# Bépo layout (1.0rc2 version) for a pc105 keyboard (french) :
> +# ┌────┐
> +# │ S A│   S = Shift,  A = AltGr + Shift
> +# │ s a│   s = normal, a = AltGr
> +# └────┘
> +#
> +# ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓
> +# │ # ¶ │ 1 „ │ 2 “ │ 3 ” │ 4 ≤ │ 5 ≥ │ 6   │ 7 ¬ │ 8 ¼ │ 9 ½ │ 0 ¾ │ ° ′ │ ` ″ ┃ ⌫ Retour┃
> +# │ $ – │ " — │ « < │ » > │ ( [ │ ) ] │ @ ^ │ + ± │ - − │ / ÷ │ * × │ = ≠ │ % ‰ ┃  arrière┃
> +# ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫
> +# ┃       ┃ B ¦ │ É ˝ │ P § │ O Œ │ È ` │ !   │ V   │ D Ð │ L   │ J IJ │ Z Ə │ W   ┃Entrée ┃
> +# ┃Tab ↹  ┃ b | │ é ˊ │ p & │ o œ │ è ` │ ˆ ¡ │ v ˇ │ d ð │ l / │ j ij │ z ə │ w ̆ ┃   ⏎   ┃
> +# ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓      ┃
> +# ┃        ┃ A Æ │ U Ù │ I ˙ │ E ¤ │ ; ̛ │ C ſ │ T Þ │ S ẞ │ R ™ │ N   │ M º │ Ç , ┃      ┃
> +# ┃Maj ⇬   ┃ a æ │ u ù │ i ̈ │ e € │ , ’ │ c © │ t þ │ s ß │ r ® │ n ˜ │ m ¯ │ ç ¸ ┃      ┃
> +# ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┷━━━━━┻━━━━━━┫
> +# ┃       ┃ Ê   │ À   │ Y ‘ │ X ’ │ : · │ K   │ ? ̉ │ Q ̣ │ G   │ H ‡ │ F ª ┃             ┃
> +# ┃Shift ⇧┃ ê / │ à \ │ y { │ x } │ . … │ k ~ │ ' ¿ │ q ˚ │ g µ │ h † │ f ˛ ┃Shift ⇧      ┃
> +# ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┻━┳━━━━━━━┳━━━┛
> +# ┃       ┃       ┃       ┃ Espace inséc.   Espace inséc. fin ┃       ┃       ┃       ┃
> +# ┃Ctrl   ┃Meta   ┃Alt    ┃ ␣ (Espace)      _               ␣ ┃AltGr ⇮┃Menu   ┃Ctrl   ┃
> +# ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛
> +
> +
> +# First row
> +## keycode  41 = dollar numbersign       U+2013  U+00b6
> +dollar        0x29
> +numbersign    0x29  shift
> +U2013         0x29        altgr
> +U00b6         0x29  shift altgr
> +
> +## keycode   2 = +quotedbl +one          U+2014  U+201e
> +quotedbl      0x2
> +one           0x2  shift
> +U2014         0x2        altgr
> +U201e         0x2  shift altgr
> +
> +## keycode   3 = +guillemotleft  +two     less    U+201c
> +guillemotleft  0x3
> +two           0x3  shift
> +less          0x3        altgr
> +U201c         0x3  shift altgr
> +
> +## keycode   4 = +guillemotright +three  greater U+201d
> +guillemotright  0x4
> +three         0x4  shift
> +greater       0x4        altgr
> +U201d         0x4  shift altgr
> +
> +## keycode   5 = +parenleft +four        bracketleft  U+2264
> +parenleft     0x5
> +four          0x5  shift
> +bracketleft   0x5        altgr
> +U2264         0x5  shift altgr
> +
> +## keycode   6 = +parenright +five       bracketright  U+2265
> +parenright    0x6
> +five          0x6  shift
> +bracketright  0x6        altgr
> +U2265         0x6  shift altgr
> +
> +## keycode   7 = +at       +six          asciicircum
> +at            0x7
> +six           0x7  shift
> +asciicircum   0x7        altgr
> +
> +## keycode   8 = +plus     +seven        U+00b1  U+00ac
> +plus          0x8
> +seven         0x8  shift
> +U00b1         0x8        altgr
> +U00ac         0x8  shift altgr
> +
> +## keycode   9 = +minus    +eight        U+2212  U+00bc
> +minus         0x9
> +eight         0x9  shift
> +U2212         0x9        altgr
> +U00bc         0x9  shift altgr
> +
> +## keycode  10 = +slash    +nine         U+00f7  U+00bd
> +slash         0xa
> +nine          0xa  shift
> +U00f7         0xa        altgr
> +U00bd         0xa  shift altgr
> +
> +## keycode  11 = +asterisk +zero         U+00d7  U+00be
> +asterisk      0xb
> +zero          0xb  shift
> +U00d7         0xb        altgr
> +U00be         0xb  shift altgr
> +
> +## keycode  12 = equal     U+00b0        U+2260  U+2032
> +equal         0xc
> +U00b0         0xc  shift
> +U2260         0xc        altgr
> +U2032         0xc  shift altgr
> +
> +## keycode  13 = percent   grave         U+2030  U+2033
> +percent       0xd
> +grave         0xd  shift
> +U2030         0xd        altgr
> +U2033         0xd  shift altgr
> +
> +
> +# Second row
> +
> +# simplified letter definitions notation :
> +## keycode 16 = b
> +b             0x10  addupper
> +## keycode 18 = p
> +p             0x12  addupper
> +## keycode 19 = o
> +o             0x13  addupper
> +## keycode 22 = v
> +v             0x16  addupper
> +## keycode 23 = d
> +d             0x17  addupper
> +## keycode 24 = l
> +l             0x18  addupper
> +## keycode 25 = j
> +j             0x19  addupper
> +## keycode 26 = z
> +z             0x1a  addupper
> +## keycode 27 = w
> +w             0x1b  addupper
> +
> +# then, add specific definitions
> +##                    AltGr keycode  16 = bar
> +bar           0x10        altgr
> +##              Shift AltGr keycode  16 = brokenbar
> +brokenbar     0x10  shift altgr
> +
> +## keycode 17 = +eacute +Eacute dead_acute
> +eacute        0x11
> +Eacute        0x11  shift
> +dead_acute    0x11        altgr
> +
> +##                    AltGr keycode  18 = ampersand
> +ampersand     0x12        altgr
> +##              Shift AltGr keycode  18 = U+00a7
> +U00a7         0x12  shift altgr
> +
> +##                    AltGr keycode  19 = +U+0153
> +U+0153        0x13        altgr
> +##              Shift AltGr keycode  19 = +U+0152
> +U+0152        0x13  shift altgr
> +
> +## keycode 20 = +egrave +Egrave dead_grave grave # no Meta !
> +egrave        0x14
> +Egrave        0x14  shift
> +dead_grave    0x14        altgr
> +
> +## keycode 21 = dead_circumflex exclam exclamdown
> +dead_circumflex  0x15
> +exclam        0x15  shift
> +exclamdown    0x15        altgr
> +
> +##                    AltGr keycode  22 = dead_caron
> +dead_caron    0x16        altgr
> +
> +##                    AltGr keycode  23 = eth
> +eth           0x17        altgr
> +##              Shift AltGr keycode  23 = ETH
> +ETH           0x17  shift altgr
> +
> +##                    AltGr keycode  25 = +U+0133
> +U+0133        0x19        altgr
> +##              Shift AltGr keycode  25 = +U+0132
> +U+0132        0x19  shift altgr
> +
> +##                    AltGr keycode  26 = +U+0259
> +U+0259        0x1a        altgr
> +##              Shift AltGr keycode  26 = +U+018f
> +U+018f        0x1a  shift altgr
> +
> +
> +
> +# Third row
> +
> +# simplified letter definitions notation :
> +## keycode 30 = a
> +a             0x1e  addupper
> +## keycode 31 = u
> +u             0x1f  addupper
> +## keycode 32 = i
> +i             0x20  addupper
> +## keycode 33 = e
> +e             0x21  addupper
> +## keycode 35 = c
> +c             0x23  addupper
> +## keycode 36 = t
> +t             0x24  addupper
> +## keycode 37 = s
> +s             0x25  addupper
> +## keycode 38 = r
> +r             0x26  addupper
> +## keycode 39 = n
> +n             0x27  addupper
> +## keycode 40 = m
> +m             0x28  addupper
> +
> +# then, add specific definitions
> +##                    AltGr keycode  30 = +ae
> +ae            0x1e        altgr
> +##              Shift AltGr keycode  30 = +AE
> +AE            0x1e  shift altgr
> +
> +##                    AltGr keycode  31 = +ugrave
> +ugrave        0x1f        altgr
> +##              Shift AltGr keycode  31 = +Ugrave
> +Ugrave        0x1f  shift altgr
> +
> +##                    AltGr keycode  32 = dead_diaeresis
> +dead_diaeresis  0x20        altgr
> +
> +
> +##                    AltGr keycode  33 = U+20ac
> +U20ac         0x21        altgr
> +
> +## keycode 34 = comma semicolon U+2019 +U+031b
> +comma         0x22
> +semicolon     0x22  shift
> +U2019         0x22        altgr
> +U+031b        0x22  shift altgr
> +
> +##                    AltGr keycode  35 = copyright
> +copyright     0x23        altgr
> +##              Shift AltGr keycode  35 = U+017f
> +U017f         0x23  shift altgr
> +
> +##                    AltGr keycode  36 = +thorn
> +thorn         0x24        altgr
> +##              Shift AltGr keycode  36 = +THORN
> +THORN         0x24  shift altgr
> +
> +##                    AltGr keycode  37 = +ssharp
> +ssharp        0x25        altgr
> +##              Shift AltGr keycode  37 = U+1e9e
> +U1e9e         0x25  shift altgr
> +
> +##                    AltGr keycode  38 = registered
> +registered    0x26        altgr
> +##              Shift AltGr keycode  38 = U+2122
> +U2122         0x26  shift altgr
> +
> +##                    AltGr keycode  39 = dead_tilde
> +dead_tilde    0x27        altgr
> +
> +##              Shift AltGr keycode  40 = masculine
> +masculine     0x28  shift altgr
> +
> +## keycode 43 = +ccedilla +Ccedilla dead_cedilla
> +ccedilla      0x2b
> +Ccedilla      0x2b  shift
> +dead_cedilla  0x2b        altgr
> +
> +
> +# Fourth row
> +
> +# simplified letter definitions notation :
> +## keycode 45 = y
> +y             0x2d  addupper
> +## keycode 46 = x
> +x             0x2e  addupper
> +## keycode 48 = k
> +k             0x30  addupper
> +## keycode 50 = q
> +q             0x32  addupper
> +## keycode 51 = g
> +g             0x33  addupper
> +## keycode 52 = h
> +h             0x34  addupper
> +## keycode 53 = f
> +f             0x35  addupper
> +
> +# then, add specific definitions
> +## keycode 86 = +ecircumflex +Ecircumflex slash slash
> +ecircumflex   0x56
> +Ecircumflex   0x56  shift
> +
> +## keycode 44 = +agrave +Agrave backslash
> +agrave        0x2c
> +Agrave        0x2c  shift
> +backslash     0x2c        altgr
> +
> +##                    AltGr keycode  45 = braceleft
> +braceleft     0x2d        altgr
> +##              Shift AltGr keycode  45 = U+2018
> +U2018         0x2d  shift altgr
> +
> +##                    AltGr keycode  46 = braceright
> +braceright    0x2e        altgr
> +
> +## keycode 47 = period colon U+2026 periodcentered
> +period        0x2f
> +colon         0x2f  shift
> +U2026         0x2f        altgr
> +periodcentered  0x2f  shift altgr
> +
> +##                    AltGr keycode  48 = asciitilde
> +asciitilde    0x30        altgr
> +##              Shift AltGr keycode  48 = U+2328
> +U2328         0x30  shift altgr
> +
> +## keycode 49 = apostrophe question questiondown +U+0309
> +apostrophe    0x31
> +question      0x31  shift
> +questiondown  0x31        altgr
> +U+0309        0x31  shift altgr
> +
> +##                    AltGr keycode  51 = mu
> +mu            0x33        altgr
> +
> +##                    AltGr keycode  52 = U+2020
> +U2020         0x34        altgr
> +##              Shift AltGr keycode  52 = U+2021
> +U2021         0x34  shift altgr
> +
> +##              Shift AltGr keycode  53 = ordfeminine
> +ordfeminine   0x35  shift altgr
> +
> +
> +
> +## keycode 57 = space nobreakspace underscore U+202f
> +space         0x39
> +nobreakspace  0x39  shift
> +underscore    0x39        altgr
> +U202f         0x39  shift altgr
> 
>

Patch

diff --git a/pc-bios/keymaps/bepo b/pc-bios/keymaps/bepo
new file mode 100644
index 0000000..d40041a
--- /dev/null
+++ b/pc-bios/keymaps/bepo
@@ -0,0 +1,333 @@ 
+include common
+
+# Bépo : Improved ergonomic french keymap using Dvorak method.
+# Built by community on 'Dvorak Fr / Bépo' :
+# see http://www.clavier-dvorak.org/wiki/ to join and help.
+#
+# Bépo layout (1.0rc2 version) for a pc105 keyboard (french) :
+# ┌────┐
+# │ S A│   S = Shift,  A = AltGr + Shift
+# │ s a│   s = normal, a = AltGr
+# └────┘
+#
+# ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓
+# │ # ¶ │ 1 „ │ 2 “ │ 3 ” │ 4 ≤ │ 5 ≥ │ 6   │ 7 ¬ │ 8 ¼ │ 9 ½ │ 0 ¾ │ ° ′ │ ` ″ ┃ ⌫ Retour┃
+# │ $ – │ " — │ « < │ » > │ ( [ │ ) ] │ @ ^ │ + ± │ - − │ / ÷ │ * × │ = ≠ │ % ‰ ┃  arrière┃
+# ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫
+# ┃       ┃ B ¦ │ É ˝ │ P § │ O Œ │ È ` │ !   │ V   │ D Ð │ L   │ J IJ │ Z Ə │ W   ┃Entrée ┃
+# ┃Tab ↹  ┃ b | │ é ˊ │ p & │ o œ │ è ` │ ˆ ¡ │ v ˇ │ d ð │ l / │ j ij │ z ə │ w ̆ ┃   ⏎   ┃
+# ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓      ┃
+# ┃        ┃ A Æ │ U Ù │ I ˙ │ E ¤ │ ; ̛ │ C ſ │ T Þ │ S ẞ │ R ™ │ N   │ M º │ Ç , ┃      ┃
+# ┃Maj ⇬   ┃ a æ │ u ù │ i ̈ │ e € │ , ’ │ c © │ t þ │ s ß │ r ® │ n ˜ │ m ¯ │ ç ¸ ┃      ┃
+# ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┷━━━━━┻━━━━━━┫
+# ┃       ┃ Ê   │ À   │ Y ‘ │ X ’ │ : · │ K   │ ? ̉ │ Q ̣ │ G   │ H ‡ │ F ª ┃             ┃
+# ┃Shift ⇧┃ ê / │ à \ │ y { │ x } │ . … │ k ~ │ ' ¿ │ q ˚ │ g µ │ h † │ f ˛ ┃Shift ⇧      ┃
+# ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┻━┳━━━━━━━┳━━━┛
+# ┃       ┃       ┃       ┃ Espace inséc.   Espace inséc. fin ┃       ┃       ┃       ┃
+# ┃Ctrl   ┃Meta   ┃Alt    ┃ ␣ (Espace)      _               ␣ ┃AltGr ⇮┃Menu   ┃Ctrl   ┃
+# ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛
+
+
+# First row
+## keycode  41 = dollar numbersign       U+2013  U+00b6
+dollar        0x29
+numbersign    0x29  shift
+U2013         0x29        altgr
+U00b6         0x29  shift altgr
+
+## keycode   2 = +quotedbl +one          U+2014  U+201e
+quotedbl      0x2
+one           0x2  shift
+U2014         0x2        altgr
+U201e         0x2  shift altgr
+
+## keycode   3 = +guillemotleft  +two     less    U+201c
+guillemotleft  0x3
+two           0x3  shift
+less          0x3        altgr
+U201c         0x3  shift altgr
+
+## keycode   4 = +guillemotright +three  greater U+201d
+guillemotright  0x4
+three         0x4  shift
+greater       0x4        altgr
+U201d         0x4  shift altgr
+
+## keycode   5 = +parenleft +four        bracketleft  U+2264
+parenleft     0x5
+four          0x5  shift
+bracketleft   0x5        altgr
+U2264         0x5  shift altgr
+
+## keycode   6 = +parenright +five       bracketright  U+2265
+parenright    0x6
+five          0x6  shift
+bracketright  0x6        altgr
+U2265         0x6  shift altgr
+
+## keycode   7 = +at       +six          asciicircum
+at            0x7
+six           0x7  shift
+asciicircum   0x7        altgr
+
+## keycode   8 = +plus     +seven        U+00b1  U+00ac
+plus          0x8
+seven         0x8  shift
+U00b1         0x8        altgr
+U00ac         0x8  shift altgr
+
+## keycode   9 = +minus    +eight        U+2212  U+00bc
+minus         0x9
+eight         0x9  shift
+U2212         0x9        altgr
+U00bc         0x9  shift altgr
+
+## keycode  10 = +slash    +nine         U+00f7  U+00bd
+slash         0xa
+nine          0xa  shift
+U00f7         0xa        altgr
+U00bd         0xa  shift altgr
+
+## keycode  11 = +asterisk +zero         U+00d7  U+00be
+asterisk      0xb
+zero          0xb  shift
+U00d7         0xb        altgr
+U00be         0xb  shift altgr
+
+## keycode  12 = equal     U+00b0        U+2260  U+2032
+equal         0xc
+U00b0         0xc  shift
+U2260         0xc        altgr
+U2032         0xc  shift altgr
+
+## keycode  13 = percent   grave         U+2030  U+2033
+percent       0xd
+grave         0xd  shift
+U2030         0xd        altgr
+U2033         0xd  shift altgr
+
+
+# Second row
+
+# simplified letter definitions notation :
+## keycode 16 = b
+b             0x10  addupper
+## keycode 18 = p
+p             0x12  addupper
+## keycode 19 = o
+o             0x13  addupper
+## keycode 22 = v
+v             0x16  addupper
+## keycode 23 = d
+d             0x17  addupper
+## keycode 24 = l
+l             0x18  addupper
+## keycode 25 = j
+j             0x19  addupper
+## keycode 26 = z
+z             0x1a  addupper
+## keycode 27 = w
+w             0x1b  addupper
+
+# then, add specific definitions
+##                    AltGr keycode  16 = bar
+bar           0x10        altgr
+##              Shift AltGr keycode  16 = brokenbar
+brokenbar     0x10  shift altgr
+
+## keycode 17 = +eacute +Eacute dead_acute
+eacute        0x11
+Eacute        0x11  shift
+dead_acute    0x11        altgr
+
+##                    AltGr keycode  18 = ampersand
+ampersand     0x12        altgr
+##              Shift AltGr keycode  18 = U+00a7
+U00a7         0x12  shift altgr
+
+##                    AltGr keycode  19 = +U+0153
+U+0153        0x13        altgr
+##              Shift AltGr keycode  19 = +U+0152
+U+0152        0x13  shift altgr
+
+## keycode 20 = +egrave +Egrave dead_grave grave # no Meta !
+egrave        0x14
+Egrave        0x14  shift
+dead_grave    0x14        altgr
+
+## keycode 21 = dead_circumflex exclam exclamdown
+dead_circumflex  0x15
+exclam        0x15  shift
+exclamdown    0x15        altgr
+
+##                    AltGr keycode  22 = dead_caron
+dead_caron    0x16        altgr
+
+##                    AltGr keycode  23 = eth
+eth           0x17        altgr
+##              Shift AltGr keycode  23 = ETH
+ETH           0x17  shift altgr
+
+##                    AltGr keycode  25 = +U+0133
+U+0133        0x19        altgr
+##              Shift AltGr keycode  25 = +U+0132
+U+0132        0x19  shift altgr
+
+##                    AltGr keycode  26 = +U+0259
+U+0259        0x1a        altgr
+##              Shift AltGr keycode  26 = +U+018f
+U+018f        0x1a  shift altgr
+
+
+
+# Third row
+
+# simplified letter definitions notation :
+## keycode 30 = a
+a             0x1e  addupper
+## keycode 31 = u
+u             0x1f  addupper
+## keycode 32 = i
+i             0x20  addupper
+## keycode 33 = e
+e             0x21  addupper
+## keycode 35 = c
+c             0x23  addupper
+## keycode 36 = t
+t             0x24  addupper
+## keycode 37 = s
+s             0x25  addupper
+## keycode 38 = r
+r             0x26  addupper
+## keycode 39 = n
+n             0x27  addupper
+## keycode 40 = m
+m             0x28  addupper
+
+# then, add specific definitions
+##                    AltGr keycode  30 = +ae
+ae            0x1e        altgr
+##              Shift AltGr keycode  30 = +AE
+AE            0x1e  shift altgr
+
+##                    AltGr keycode  31 = +ugrave
+ugrave        0x1f        altgr
+##              Shift AltGr keycode  31 = +Ugrave
+Ugrave        0x1f  shift altgr
+
+##                    AltGr keycode  32 = dead_diaeresis
+dead_diaeresis  0x20        altgr
+
+
+##                    AltGr keycode  33 = U+20ac
+U20ac         0x21        altgr
+
+## keycode 34 = comma semicolon U+2019 +U+031b
+comma         0x22
+semicolon     0x22  shift
+U2019         0x22        altgr
+U+031b        0x22  shift altgr
+
+##                    AltGr keycode  35 = copyright
+copyright     0x23        altgr
+##              Shift AltGr keycode  35 = U+017f
+U017f         0x23  shift altgr
+
+##                    AltGr keycode  36 = +thorn
+thorn         0x24        altgr
+##              Shift AltGr keycode  36 = +THORN
+THORN         0x24  shift altgr
+
+##                    AltGr keycode  37 = +ssharp
+ssharp        0x25        altgr
+##              Shift AltGr keycode  37 = U+1e9e
+U1e9e         0x25  shift altgr
+
+##                    AltGr keycode  38 = registered
+registered    0x26        altgr
+##              Shift AltGr keycode  38 = U+2122
+U2122         0x26  shift altgr
+
+##                    AltGr keycode  39 = dead_tilde
+dead_tilde    0x27        altgr
+
+##              Shift AltGr keycode  40 = masculine
+masculine     0x28  shift altgr
+
+## keycode 43 = +ccedilla +Ccedilla dead_cedilla
+ccedilla      0x2b
+Ccedilla      0x2b  shift
+dead_cedilla  0x2b        altgr
+
+
+# Fourth row
+
+# simplified letter definitions notation :
+## keycode 45 = y
+y             0x2d  addupper
+## keycode 46 = x
+x             0x2e  addupper
+## keycode 48 = k
+k             0x30  addupper
+## keycode 50 = q
+q             0x32  addupper
+## keycode 51 = g
+g             0x33  addupper
+## keycode 52 = h
+h             0x34  addupper
+## keycode 53 = f
+f             0x35  addupper
+
+# then, add specific definitions
+## keycode 86 = +ecircumflex +Ecircumflex slash slash
+ecircumflex   0x56
+Ecircumflex   0x56  shift
+
+## keycode 44 = +agrave +Agrave backslash
+agrave        0x2c
+Agrave        0x2c  shift
+backslash     0x2c        altgr
+
+##                    AltGr keycode  45 = braceleft
+braceleft     0x2d        altgr
+##              Shift AltGr keycode  45 = U+2018
+U2018         0x2d  shift altgr
+
+##                    AltGr keycode  46 = braceright
+braceright    0x2e        altgr
+
+## keycode 47 = period colon U+2026 periodcentered
+period        0x2f
+colon         0x2f  shift
+U2026         0x2f        altgr
+periodcentered  0x2f  shift altgr
+
+##                    AltGr keycode  48 = asciitilde
+asciitilde    0x30        altgr
+##              Shift AltGr keycode  48 = U+2328
+U2328         0x30  shift altgr
+
+## keycode 49 = apostrophe question questiondown +U+0309
+apostrophe    0x31
+question      0x31  shift
+questiondown  0x31        altgr
+U+0309        0x31  shift altgr
+
+##                    AltGr keycode  51 = mu
+mu            0x33        altgr
+
+##                    AltGr keycode  52 = U+2020
+U2020         0x34        altgr
+##              Shift AltGr keycode  52 = U+2021
+U2021         0x34  shift altgr
+
+##              Shift AltGr keycode  53 = ordfeminine
+ordfeminine   0x35  shift altgr
+
+
+
+## keycode 57 = space nobreakspace underscore U+202f
+space         0x39
+nobreakspace  0x39  shift
+underscore    0x39        altgr
+U202f         0x39  shift altgr