Deriving a modified Keybaord.h / Keyboard.cpp that supports modifier-keys Ctrl & Alt problems to understand what the existing code does

For fun, I scraped the Microsoft page layout for the German keyboard. This is what I got. It's missing the control characters (like Tab, CR, LF, Spacebar...) and it doesn't handle the three Deadkey accent keys, but it's a start.

const uint16_t NONE  = 0x0000;
const uint16_t SHIFT = 0x0100;
const uint16_t ALTGR = 0x0200;

const uint16_t kbdgr[] PROGMEM =
{
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 
30 | SHIFT, // Exclamation Mark
31 | SHIFT, // Quotation Mark
40 | NONE, // Number Sign
33 | SHIFT, // Dollar Sign
34 | SHIFT, // Percent Sign
35 | SHIFT, // Ampersand
40 | SHIFT, // Apostrophe
37 | SHIFT, // Left Parenthesis
38 | SHIFT, // Right Parenthesis
48 | SHIFT, // Asterisk
48 | NONE, // Plus Sign
54 | NONE, // Comma
56 | NONE, // Hyphen-Minus
55 | NONE, // Full Stop
36 | SHIFT, // Solidus
39 | NONE, // Digit Zero
30 | NONE, // Digit One
31 | NONE, // Digit Two
32 | NONE, // Digit Three
33 | NONE, // Digit Four
34 | NONE, // Digit Five
35 | NONE, // Digit Six
36 | NONE, // Digit Seven
37 | NONE, // Digit Eight
38 | NONE, // Digit Nine
55 | SHIFT, // Colon
54 | SHIFT, // Semicolon
100 | NONE, // Less-Than Sign
39 | SHIFT, // Equals Sign
100 | SHIFT, // Greater-Than Sign
45 | SHIFT, // Question Mark
20 | ALTGR, // Commercial At
4 | SHIFT, // Latin Capital Letter A
5 | SHIFT, // Latin Capital Letter B
6 | SHIFT, // Latin Capital Letter C
7 | SHIFT, // Latin Capital Letter D
8 | SHIFT, // Latin Capital Letter E
9 | SHIFT, // Latin Capital Letter F
10 | SHIFT, // Latin Capital Letter G
11 | SHIFT, // Latin Capital Letter H
12 | SHIFT, // Latin Capital Letter I
13 | SHIFT, // Latin Capital Letter J
14 | SHIFT, // Latin Capital Letter K
15 | SHIFT, // Latin Capital Letter L
16 | SHIFT, // Latin Capital Letter M
17 | SHIFT, // Latin Capital Letter N
18 | SHIFT, // Latin Capital Letter O
19 | SHIFT, // Latin Capital Letter P
20 | SHIFT, // Latin Capital Letter Q
21 | SHIFT, // Latin Capital Letter R
22 | SHIFT, // Latin Capital Letter S
23 | SHIFT, // Latin Capital Letter T
160 | SHIFT, // Latin Capital Letter U
25 | SHIFT, // Latin Capital Letter V
26 | SHIFT, // Latin Capital Letter W
27 | SHIFT, // Latin Capital Letter X
29 | SHIFT, // Latin Capital Letter Y
28 | SHIFT, // Latin Capital Letter Z
37 | ALTGR, // Left Square Bracket
45 | ALTGR, // Reverse Solidus
38 | ALTGR, // Right Square Bracket
53 | NONE, // Circumflex Accent (DeadKey : ^ â Â ê Ê î Î ô Ô û Û)
56 | SHIFT, // Low Line
46 | SHIFT, // Grave Accent (DeadKey : ` à À è È ì Ì ò Ò ù Ù)
4 | NONE, // Latin Small Letter A
5 | NONE, // Latin Small Letter B
6 | NONE, // Latin Small Letter C
7 | NONE, // Latin Small Letter D
8 | NONE, // Latin Small Letter E
9 | NONE, // Latin Small Letter F
10 | NONE, // Latin Small Letter G
11 | NONE, // Latin Small Letter H
12 | NONE, // Latin Small Letter I
13 | NONE, // Latin Small Letter J
14 | NONE, // Latin Small Letter K
15 | NONE, // Latin Small Letter L
16 | NONE, // Latin Small Letter M
17 | NONE, // Latin Small Letter N
18 | NONE, // Latin Small Letter O
19 | NONE, // Latin Small Letter P
20 | NONE, // Latin Small Letter Q
21 | NONE, // Latin Small Letter R
22 | NONE, // Latin Small Letter S
23 | NONE, // Latin Small Letter T
160 | NONE, // Latin Small Letter U
25 | NONE, // Latin Small Letter V
26 | NONE, // Latin Small Letter W
27 | NONE, // Latin Small Letter X
29 | NONE, // Latin Small Letter Y
28 | NONE, // Latin Small Letter Z
36 | ALTGR, // Left Curly Bracket
100 | ALTGR, // Vertical Line
39 | ALTGR, // Right Curly Bracket
48 | ALTGR, // Tilde
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 
0, 
0, 
0, 
0, 
0, 
0, 
0, 
32 | SHIFT, // Section Sign
0, 
0, 
0, 
0, 
0, 
0, 
0, 
0, 
53 | SHIFT, // Degree Sign
0, 
31 | ALTGR, // Superscript Two
32 | ALTGR, // Superscript Three
46 | NONE, // Acute Accent (DeadKey : ´ á Á é É í Í ó Ó ú Ú ý Ý)
16 | ALTGR, // Micro Sign
0, 
0, 
0, 
0, 
0, 
0, 
0, 
0, 
0, 
0, 
0, 
0, 
0, 
0, 
52 | SHIFT, // Latin Capital Letter A With Diaeresis
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 
51 | SHIFT, // Latin Capital Letter O With Diaeresis
0, 
0, 
0, 
0, 
0, 
47 | SHIFT, // Latin Capital Letter U With Diaeresis
0, 
0, 
45 | NONE, // Latin Small Letter Sharp S (German)
0, 
0, 
0, 
0, 
52 | NONE, // Latin Small Letter A With Diaeresis
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 
51 | NONE, // Latin Small Letter O With Diaeresis
0, 
0, 
0, 
0, 
0, 
47 | NONE, // Latin Small Letter U With Diaeresis
0, 
0, 
0,
};