diff --git a/src/keyboard.c b/src/keyboard.c
index 09120daa9aee5213bb21717538546479313ceb89..a24ceaf2f2fc9adfbceca3e4a23a27fa9744d23f 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -8,6 +8,7 @@ void init_keymapping()
 
     shift_pressed = FALSE;
 
+    // alphabetics letters and space
     KEY_MAPPING[0x1E] = (key_t){'a', 'A'};
     KEY_MAPPING[0x30] = (key_t){'b', 'B'};
     KEY_MAPPING[0x2E] = (key_t){'c', 'C'};
@@ -35,6 +36,32 @@ void init_keymapping()
     KEY_MAPPING[0x15] = (key_t){'y', 'Y'};
     KEY_MAPPING[0x2C] = (key_t){'z', 'Z'};
     KEY_MAPPING[0x39] = (key_t){' ', ' '};
+
+    // Numeric row
+    KEY_MAPPING[0x02] = (key_t){'1', '!'};
+    KEY_MAPPING[0x03] = (key_t){'2', '@'};
+    KEY_MAPPING[0x04] = (key_t){'3', '#'};
+    KEY_MAPPING[0x05] = (key_t){'4', 0};
+    KEY_MAPPING[0x06] = (key_t){'5', 0};
+    KEY_MAPPING[0x07] = (key_t){'6', 0};
+    KEY_MAPPING[0x08] = (key_t){'7', '&'};
+    KEY_MAPPING[0x09] = (key_t){'8', 0};
+    KEY_MAPPING[0x0A] = (key_t){'9', '('};
+    KEY_MAPPING[0x0B] = (key_t){'0', ')'};
+    KEY_MAPPING[0x0C] = (key_t){'-', '_'};
+    KEY_MAPPING[0x28] = (key_t){'\'', '"'};
+
+    // KEY_MAPPING[0x2E] = (key_t){'e', '2'}; // é
+    // KEY_MAPPING[0x20] = (key_t){'"', '3'};
+    // KEY_MAPPING[0x12] = (key_t){'\'', '4'};
+    // KEY_MAPPING[0x21] = (key_t){'(', '5'};
+    // KEY_MAPPING[0x22] = (key_t){0, '6'};   // §
+    // KEY_MAPPING[0x23] = (key_t){'e', '7'}; // è
+    // KEY_MAPPING[0x17] = (key_t){'!', '8'};
+    // KEY_MAPPING[0x24] = (key_t){'c', '9'}; // ç
+    // KEY_MAPPING[0x32] = (key_t){'a', '0'}; // à
+    // KEY_MAPPING[0x25] = (key_t){')', 0};   // °
+    // KEY_MAPPING[0x26] = (key_t){'-', '_'};
 }
 
 char keyboard_map(unsigned char code)
diff --git a/src/main.c b/src/main.c
index bbe2e7e106fffe7802750d6e2b5ab7b129255984..bda70a6d3f47c31baab69ab1e9a5bcdcd1d01e6a 100644
--- a/src/main.c
+++ b/src/main.c
@@ -40,18 +40,15 @@ void main(unsigned int *mboot_info)
   init_keymapping();
   while (1)
   {
-    // puthex(_inb(0x64));
-
     if (_inb(0x64) == (0x1D))
     {
       _outb(0x64, 0x1C);
-      char c = keyboard_map(_inb(0x60));
+      unsigned char s = _inb(0x60);
+      char c = keyboard_map(s);
       if (c)
         putc(c);
-      // puthex(_inb(0x60));
+      // puthex(s);
     }
-
-    // puthex(_inb(0x60));
   }
 
   for (;;)