From de9c88e3d6ecbcf30cda1680d37fd9ff6afd30f6 Mon Sep 17 00:00:00 2001
From: Bah Thierno-Souleymane <thiernosouleymane.bah.etu@univ-lille.fr>
Date: Wed, 31 Mar 2021 06:24:22 +0200
Subject: [PATCH] feat(Numeric caracters and some symbols interpretation added)

---
 src/keyboard.c | 27 +++++++++++++++++++++++++++
 src/main.c     |  9 +++------
 2 files changed, 30 insertions(+), 6 deletions(-)

diff --git a/src/keyboard.c b/src/keyboard.c
index 09120da..a24ceaf 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 bbe2e7e..bda70a6 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 (;;)
-- 
GitLab