Keyboard Stuff
This commit is contained in:
parent
7fa557d685
commit
a1c05dc279
@ -1,6 +1,6 @@
|
||||
/*----------------*\
|
||||
|Nanite OS |
|
||||
|Copyright (C) 2024|
|
||||
|Copyright (C) 2025|
|
||||
|Tyler McGurrin |
|
||||
\*----------------*/
|
||||
#include "keyboard.h"
|
||||
@ -9,365 +9,345 @@
|
||||
#include <arch/i686/io.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#define PS2_KEYBOARD_PORT 0x60
|
||||
|
||||
char* Keyboard_Scanner()
|
||||
{
|
||||
int scancode;
|
||||
char* key = "";
|
||||
scancode = i686_inb(PS2_KEYBOARD_PORT);
|
||||
// Debug Message, unneeded
|
||||
// printf("Keycode = %d Port = %d\n", keycode, PS2_KEYBOARD_PORT);
|
||||
|
||||
switch (scancode) {
|
||||
|
||||
case KEYSCAN_1:
|
||||
key = "1";
|
||||
break;
|
||||
|
||||
case KEYSCAN_2:
|
||||
key = "2";
|
||||
break;
|
||||
|
||||
case KEYSCAN_3:
|
||||
key = "3";
|
||||
break;
|
||||
|
||||
case KEYSCAN_4:
|
||||
key = "4";
|
||||
break;
|
||||
|
||||
case KEYSCAN_5:
|
||||
key = "5";
|
||||
break;
|
||||
|
||||
case KEYSCAN_6:
|
||||
key = "6";
|
||||
break;
|
||||
|
||||
case KEYSCAN_7:
|
||||
key = "7";
|
||||
break;
|
||||
|
||||
case KEYSCAN_8:
|
||||
key = "8";
|
||||
break;
|
||||
|
||||
case KEYSCAN_9:
|
||||
key = "9";
|
||||
break;
|
||||
|
||||
case KEYSCAN_0:
|
||||
key = "0";
|
||||
break;
|
||||
|
||||
case KEYSCAN_Minus:
|
||||
key = "-";
|
||||
break;
|
||||
|
||||
case KEYSCAN_Equals:
|
||||
key = "=";
|
||||
break;
|
||||
|
||||
case KEYSCAN_Q:
|
||||
key = "q";
|
||||
break;
|
||||
|
||||
case KEYSCAN_W:
|
||||
key = "w";
|
||||
break;
|
||||
|
||||
case KEYSCAN_E:
|
||||
key = "e";
|
||||
break;
|
||||
|
||||
case KEYSCAN_R:
|
||||
key = "r";
|
||||
break;
|
||||
|
||||
case KEYSCAN_T:
|
||||
key = "t";
|
||||
break;
|
||||
|
||||
case KEYSCAN_Y:
|
||||
key = "y";
|
||||
break;
|
||||
|
||||
case KEYSCAN_U:
|
||||
key = "u";
|
||||
break;
|
||||
|
||||
case KEYSCAN_I:
|
||||
key = "i";
|
||||
break;
|
||||
|
||||
case KEYSCAN_O:
|
||||
key = "o";
|
||||
break;
|
||||
|
||||
case KEYSCAN_P:
|
||||
key = "p";
|
||||
break;
|
||||
|
||||
case KEYSCAN_LeftBracket:
|
||||
key = "[";
|
||||
break;
|
||||
|
||||
case KEYSCAN_RightBracket:
|
||||
key = "]";
|
||||
break;
|
||||
void Print_Key(int scancode) {
|
||||
char* key;
|
||||
switch (scancode) {
|
||||
|
||||
case KEYSCAN_1:
|
||||
key = "1";
|
||||
break;
|
||||
|
||||
case KEYSCAN_2:
|
||||
key = "2";
|
||||
break;
|
||||
|
||||
case KEYSCAN_3:
|
||||
key = "3";
|
||||
break;
|
||||
|
||||
case KEYSCAN_4:
|
||||
key = "4";
|
||||
break;
|
||||
|
||||
case KEYSCAN_5:
|
||||
key = "5";
|
||||
break;
|
||||
|
||||
case KEYSCAN_6:
|
||||
key = "6";
|
||||
break;
|
||||
|
||||
case KEYSCAN_7:
|
||||
key = "7";
|
||||
break;
|
||||
|
||||
case KEYSCAN_8:
|
||||
key = "8";
|
||||
break;
|
||||
|
||||
case KEYSCAN_9:
|
||||
key = "9";
|
||||
break;
|
||||
|
||||
case KEYSCAN_0:
|
||||
key = "0";
|
||||
break;
|
||||
|
||||
case KEYSCAN_Minus:
|
||||
key = "-";
|
||||
break;
|
||||
|
||||
case KEYSCAN_Equals:
|
||||
key = "=";
|
||||
break;
|
||||
|
||||
case KEYSCAN_Q:
|
||||
key = "q";
|
||||
break;
|
||||
|
||||
case KEYSCAN_W:
|
||||
key = "w";
|
||||
break;
|
||||
|
||||
case KEYSCAN_E:
|
||||
key = "e";
|
||||
break;
|
||||
|
||||
case KEYSCAN_R:
|
||||
key = "r";
|
||||
break;
|
||||
|
||||
case KEYSCAN_T:
|
||||
key = "t";
|
||||
break;
|
||||
|
||||
case KEYSCAN_Y:
|
||||
key = "y";
|
||||
break;
|
||||
|
||||
case KEYSCAN_U:
|
||||
key = "u";
|
||||
break;
|
||||
|
||||
case KEYSCAN_I:
|
||||
key = "i";
|
||||
break;
|
||||
|
||||
case KEYSCAN_O:
|
||||
key = "o";
|
||||
break;
|
||||
|
||||
case KEYSCAN_P:
|
||||
key = "p";
|
||||
break;
|
||||
|
||||
case KEYSCAN_LeftBracket:
|
||||
key = "[";
|
||||
break;
|
||||
|
||||
case KEYSCAN_RightBracket:
|
||||
key = "]";
|
||||
break;
|
||||
|
||||
case KEYSCAN_A:
|
||||
key = "a";
|
||||
break;
|
||||
|
||||
case KEYSCAN_A:
|
||||
key = "a";
|
||||
break;
|
||||
case KEYSCAN_S:
|
||||
key = "s";
|
||||
break;
|
||||
|
||||
case KEYSCAN_S:
|
||||
key = "s";
|
||||
break;
|
||||
case KEYSCAN_D:
|
||||
key = "d";
|
||||
break;
|
||||
|
||||
case KEYSCAN_D:
|
||||
key = "d";
|
||||
break;
|
||||
case KEYSCAN_F:
|
||||
key = "f";
|
||||
break;
|
||||
|
||||
case KEYSCAN_F:
|
||||
key = "f";
|
||||
break;
|
||||
case KEYSCAN_G:
|
||||
key = "g";
|
||||
break;
|
||||
|
||||
case KEYSCAN_G:
|
||||
key = "g";
|
||||
break;
|
||||
case KEYSCAN_H:
|
||||
key = "h";
|
||||
break;
|
||||
|
||||
case KEYSCAN_H:
|
||||
key = "h";
|
||||
break;
|
||||
case KEYSCAN_J:
|
||||
key = "j";
|
||||
break;
|
||||
|
||||
case KEYSCAN_J:
|
||||
key = "j";
|
||||
break;
|
||||
case KEYSCAN_K:
|
||||
key = "k";
|
||||
break;
|
||||
|
||||
case KEYSCAN_K:
|
||||
key = "k";
|
||||
break;
|
||||
case KEYSCAN_L:
|
||||
key = "l";
|
||||
break;
|
||||
|
||||
case KEYSCAN_L:
|
||||
key = "l";
|
||||
break;
|
||||
case KEYSCAN_Semicolon:
|
||||
key = ";";
|
||||
break;
|
||||
|
||||
case KEYSCAN_Semicolon:
|
||||
key = ";";
|
||||
break;
|
||||
case KEYSCAN_Apostrophe:
|
||||
key = "'";
|
||||
break;
|
||||
|
||||
case KEYSCAN_Apostrophe:
|
||||
key = "'";
|
||||
break;
|
||||
case KEYSCAN_Grave:
|
||||
key = "`";
|
||||
break;
|
||||
|
||||
case KEYSCAN_Grave:
|
||||
key = "`";
|
||||
break;
|
||||
case KEYSCAN_Backslash:
|
||||
key = "\\";
|
||||
break;
|
||||
|
||||
case KEYSCAN_Backslash:
|
||||
key = "\\";
|
||||
break;
|
||||
case KEYSCAN_Z:
|
||||
key = "z";
|
||||
break;
|
||||
|
||||
case KEYSCAN_Z:
|
||||
key = "z";
|
||||
break;
|
||||
case KEYSCAN_X:
|
||||
key = "x";
|
||||
break;
|
||||
|
||||
case KEYSCAN_X:
|
||||
key = "x";
|
||||
break;
|
||||
case KEYSCAN_C:
|
||||
key = "c";
|
||||
break;
|
||||
|
||||
case KEYSCAN_C:
|
||||
key = "c";
|
||||
break;
|
||||
case KEYSCAN_V:
|
||||
key = "v";
|
||||
break;
|
||||
|
||||
case KEYSCAN_V:
|
||||
key = "v";
|
||||
break;
|
||||
case KEYSCAN_B:
|
||||
key = "b";
|
||||
break;
|
||||
|
||||
case KEYSCAN_B:
|
||||
key = "b";
|
||||
break;
|
||||
case KEYSCAN_N:
|
||||
key = "n";
|
||||
break;
|
||||
|
||||
case KEYSCAN_N:
|
||||
key = "n";
|
||||
break;
|
||||
case KEYSCAN_M:
|
||||
key = "m";
|
||||
break;
|
||||
|
||||
case KEYSCAN_M:
|
||||
key = "m";
|
||||
break;
|
||||
case KEYSCAN_Comma:
|
||||
key = ",";
|
||||
break;
|
||||
|
||||
case KEYSCAN_Comma:
|
||||
key = ",";
|
||||
break;
|
||||
case KEYSCAN_Period:
|
||||
key = ".";
|
||||
break;
|
||||
|
||||
case KEYSCAN_Period:
|
||||
key = ".";
|
||||
break;
|
||||
case KEYSCAN_Forwardslash:
|
||||
key = "/";
|
||||
break;
|
||||
|
||||
case KEYSCAN_Forwardslash:
|
||||
key = "/";
|
||||
break;
|
||||
case KEYSCAN_Space:
|
||||
key = " ";
|
||||
break;
|
||||
|
||||
case KEYSCAN_Space:
|
||||
key = " ";
|
||||
break;
|
||||
case KEYSCAN_Enter:
|
||||
key = "\n";
|
||||
break;
|
||||
|
||||
case KEYSCAN_Enter:
|
||||
key = "\n";
|
||||
break;
|
||||
case KEYSCAN_BackSpace:
|
||||
key = "\b \b";
|
||||
break;
|
||||
|
||||
case KEYSCAN_BackSpace:
|
||||
key = "\b \b";
|
||||
break;
|
||||
case KEYSCAN_Tab:
|
||||
key = "\t";
|
||||
break;
|
||||
|
||||
case KEYSCAN_Tab:
|
||||
key = "\t";
|
||||
break;
|
||||
case KEYSCAN_CTRL:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_CTRL:
|
||||
key = "";
|
||||
break;
|
||||
case KEYSCAN_LShift:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_LShift:
|
||||
key = "";
|
||||
break;
|
||||
case KEYSCAN_RShift:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_RShift:
|
||||
key = "";
|
||||
break;
|
||||
case KEYSCAN_PrtSc:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_PrtSc:
|
||||
key = "";
|
||||
break;
|
||||
case KEYSCAN_Alt:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_Alt:
|
||||
key = "";
|
||||
break;
|
||||
case KEYSCAN_Caps:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_Caps:
|
||||
key = "";
|
||||
break;
|
||||
case KEYSCAN_F1:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_F1:
|
||||
key = "";
|
||||
break;
|
||||
case KEYSCAN_F2:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_F2:
|
||||
key = "";
|
||||
break;
|
||||
case KEYSCAN_F3:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_F3:
|
||||
key = "";
|
||||
break;
|
||||
case KEYSCAN_F4:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_F4:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_F5:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_F6:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_F7:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_F8:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_F9:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_F10:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_Num:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_Scroll:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_Home:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_Up:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_PgUp:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_Minus2:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_Left:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_Center:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_Right:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_Plus:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_End:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_Down:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_PgDn:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_Ins:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_Delete:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_ESC:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
|
||||
}
|
||||
return key;
|
||||
}
|
||||
|
||||
void Keyboard_Handler()
|
||||
{
|
||||
char* key = Keyboard_Scanner();
|
||||
printf("%s", key);
|
||||
return;
|
||||
}
|
||||
|
||||
void Keyboard_Init()
|
||||
{
|
||||
i686_IRQ_RegisterHandler(1, Keyboard_Handler);
|
||||
case KEYSCAN_F5:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_F6:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_F7:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_F8:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_F9:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_F10:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_Num:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_Scroll:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_Home:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_Up:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_PgUp:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_Minus2:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_Left:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_Center:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_Right:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_Plus:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_End:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_Down:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_PgDn:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_Ins:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_Delete:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
case KEYSCAN_ESC:
|
||||
key = "";
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
|
||||
}
|
||||
printf("%s", key);
|
||||
}
|
||||
@ -1,13 +1,13 @@
|
||||
/*----------------*\
|
||||
|Nanite OS |
|
||||
|Copyright (C) 2024|
|
||||
|Copyright (C) 2025|
|
||||
|Tyler McGurrin |
|
||||
\*----------------*/
|
||||
#pragma once
|
||||
|
||||
void Keyboard_Init();
|
||||
void Print_Key(int scancode);
|
||||
|
||||
typedef enum {
|
||||
typedef enum { // ill do it LATER!
|
||||
KEYSCAN_ESC = 1 ,
|
||||
KEYSCAN_1 = 2 ,
|
||||
KEYSCAN_2 = 3 ,
|
||||
@ -17,78 +17,78 @@ typedef enum {
|
||||
KEYSCAN_6 = 7 ,
|
||||
KEYSCAN_7 = 8 ,
|
||||
KEYSCAN_8 = 9 ,
|
||||
KEYSCAN_9 = 10,
|
||||
KEYSCAN_0 = 11,
|
||||
KEYSCAN_Minus = 12,
|
||||
KEYSCAN_Equals = 13,
|
||||
KEYSCAN_BackSpace = 14,
|
||||
KEYSCAN_Tab = 15,
|
||||
KEYSCAN_Q = 16,
|
||||
KEYSCAN_W = 17,
|
||||
KEYSCAN_E = 18,
|
||||
KEYSCAN_R = 19,
|
||||
KEYSCAN_T = 20,
|
||||
KEYSCAN_Y = 21,
|
||||
KEYSCAN_U = 22,
|
||||
KEYSCAN_I = 23,
|
||||
KEYSCAN_O = 24,
|
||||
KEYSCAN_P = 25,
|
||||
KEYSCAN_LeftBracket = 26,
|
||||
KEYSCAN_RightBracket = 27,
|
||||
KEYSCAN_Enter = 28,
|
||||
KEYSCAN_CTRL = 29,
|
||||
KEYSCAN_A = 30,
|
||||
KEYSCAN_S = 31,
|
||||
KEYSCAN_D = 32,
|
||||
KEYSCAN_F = 33,
|
||||
KEYSCAN_G = 34,
|
||||
KEYSCAN_H = 35,
|
||||
KEYSCAN_J = 36,
|
||||
KEYSCAN_K = 37,
|
||||
KEYSCAN_L = 38,
|
||||
KEYSCAN_Semicolon = 39,
|
||||
KEYSCAN_Apostrophe = 40,
|
||||
KEYSCAN_Grave = 41,
|
||||
KEYSCAN_LShift = 42,
|
||||
KEYSCAN_Backslash = 43,
|
||||
KEYSCAN_Z = 44,
|
||||
KEYSCAN_X = 45,
|
||||
KEYSCAN_C = 46,
|
||||
KEYSCAN_V = 47,
|
||||
KEYSCAN_B = 48,
|
||||
KEYSCAN_N = 49,
|
||||
KEYSCAN_M = 50,
|
||||
KEYSCAN_Comma = 51,
|
||||
KEYSCAN_Period = 52,
|
||||
KEYSCAN_Forwardslash = 53,
|
||||
KEYSCAN_RShift = 54,
|
||||
KEYSCAN_PrtSc = 55,
|
||||
KEYSCAN_Alt = 56,
|
||||
KEYSCAN_Space = 57,
|
||||
KEYSCAN_Caps = 58,
|
||||
KEYSCAN_F1 = 59,
|
||||
KEYSCAN_F2 = 60,
|
||||
KEYSCAN_F3 = 61,
|
||||
KEYSCAN_F4 = 62,
|
||||
KEYSCAN_F5 = 63,
|
||||
KEYSCAN_F6 = 64,
|
||||
KEYSCAN_F7 = 65,
|
||||
KEYSCAN_F8 = 66,
|
||||
KEYSCAN_F9 = 67,
|
||||
KEYSCAN_F10 = 68,
|
||||
KEYSCAN_Num = 69,
|
||||
KEYSCAN_Scroll = 70,
|
||||
KEYSCAN_Home = 71,
|
||||
KEYSCAN_Up = 72,
|
||||
KEYSCAN_PgUp = 73,
|
||||
KEYSCAN_Minus2 = 74,
|
||||
KEYSCAN_Left = 75,
|
||||
KEYSCAN_Center = 76,
|
||||
KEYSCAN_Right = 77,
|
||||
KEYSCAN_Plus = 78,
|
||||
KEYSCAN_End = 79,
|
||||
KEYSCAN_Down = 80,
|
||||
KEYSCAN_PgDn = 81,
|
||||
KEYSCAN_Ins = 82,
|
||||
KEYSCAN_Delete = 83
|
||||
KEYSCAN_9 = 10,
|
||||
KEYSCAN_0 = 11,
|
||||
KEYSCAN_Minus = 12,
|
||||
KEYSCAN_Equals = 13,
|
||||
KEYSCAN_BackSpace = 14,
|
||||
KEYSCAN_Tab = 15,
|
||||
KEYSCAN_Q = 16,
|
||||
KEYSCAN_W = 17,
|
||||
KEYSCAN_E = 18,
|
||||
KEYSCAN_R = 19,
|
||||
KEYSCAN_T = 20,
|
||||
KEYSCAN_Y = 21,
|
||||
KEYSCAN_U = 22,
|
||||
KEYSCAN_I = 23,
|
||||
KEYSCAN_O = 24,
|
||||
KEYSCAN_P = 25,
|
||||
KEYSCAN_LeftBracket = 26,
|
||||
KEYSCAN_RightBracket = 27,
|
||||
KEYSCAN_Enter = 28,
|
||||
KEYSCAN_CTRL = 29,
|
||||
KEYSCAN_A = 30,
|
||||
KEYSCAN_S = 31,
|
||||
KEYSCAN_D = 32,
|
||||
KEYSCAN_F = 33,
|
||||
KEYSCAN_G = 34,
|
||||
KEYSCAN_H = 35,
|
||||
KEYSCAN_J = 36,
|
||||
KEYSCAN_K = 37,
|
||||
KEYSCAN_L = 38,
|
||||
KEYSCAN_Semicolon = 39,
|
||||
KEYSCAN_Apostrophe = 40,
|
||||
KEYSCAN_Grave = 41,
|
||||
KEYSCAN_LShift = 42,
|
||||
KEYSCAN_Backslash = 43,
|
||||
KEYSCAN_Z = 44,
|
||||
KEYSCAN_X = 45,
|
||||
KEYSCAN_C = 46,
|
||||
KEYSCAN_V = 47,
|
||||
KEYSCAN_B = 48,
|
||||
KEYSCAN_N = 49,
|
||||
KEYSCAN_M = 50,
|
||||
KEYSCAN_Comma = 51,
|
||||
KEYSCAN_Period = 52,
|
||||
KEYSCAN_Forwardslash = 53,
|
||||
KEYSCAN_RShift = 54,
|
||||
KEYSCAN_PrtSc = 55,
|
||||
KEYSCAN_Alt = 56,
|
||||
KEYSCAN_Space = 57,
|
||||
KEYSCAN_Caps = 58,
|
||||
KEYSCAN_F1 = 59,
|
||||
KEYSCAN_F2 = 60,
|
||||
KEYSCAN_F3 = 61,
|
||||
KEYSCAN_F4 = 62,
|
||||
KEYSCAN_F5 = 63,
|
||||
KEYSCAN_F6 = 64,
|
||||
KEYSCAN_F7 = 65,
|
||||
KEYSCAN_F8 = 66,
|
||||
KEYSCAN_F9 = 67,
|
||||
KEYSCAN_F10 = 68,
|
||||
KEYSCAN_Num = 69,
|
||||
KEYSCAN_Scroll = 70,
|
||||
KEYSCAN_Home = 71,
|
||||
KEYSCAN_Up = 72,
|
||||
KEYSCAN_PgUp = 73,
|
||||
KEYSCAN_Minus2 = 74,
|
||||
KEYSCAN_Left = 75,
|
||||
KEYSCAN_Center = 76,
|
||||
KEYSCAN_Right = 77,
|
||||
KEYSCAN_Plus = 78,
|
||||
KEYSCAN_End = 79,
|
||||
KEYSCAN_Down = 80,
|
||||
KEYSCAN_PgDn = 81,
|
||||
KEYSCAN_Ins = 82,
|
||||
KEYSCAN_Delete = 83
|
||||
} Scancodes;
|
||||
@ -15,15 +15,25 @@
|
||||
#include "../libs/version.h"
|
||||
#include "../libs/boot/bootparams.h"
|
||||
|
||||
#define PS2_KEYBOARD_PORT 0x60
|
||||
|
||||
extern uint8_t __bss_start;
|
||||
extern uint8_t __end;
|
||||
|
||||
int uptime;
|
||||
void timer(Registers* regs)
|
||||
{
|
||||
int uptime;
|
||||
uptime++;
|
||||
}
|
||||
|
||||
int keyboard_scancode;
|
||||
void keyboard()
|
||||
{
|
||||
keyboard_scancode = i686_inb(PS2_KEYBOARD_PORT);
|
||||
// Debug Message, need to make a serial output thingy :)
|
||||
// printf("Keycode = %d Port = %d\n", keycode, PS2_KEYBOARD_PORT);
|
||||
}
|
||||
|
||||
void __attribute__((section(".entry"))) start(BootParams* bootParams) {
|
||||
|
||||
// print logo
|
||||
@ -40,10 +50,12 @@ void __attribute__((section(".entry"))) start(BootParams* bootParams) {
|
||||
|
||||
i686_IRQ_RegisterHandler(0, timer);
|
||||
printf("Load Keyboard Driver...");
|
||||
Keyboard_Init();
|
||||
i686_IRQ_RegisterHandler(1, keyboard);
|
||||
printf("Done!\n");
|
||||
printf("%d", uptime);
|
||||
|
||||
// Debug Info for Memory :3
|
||||
|
||||
// Debug Info for Memory :3 i REALLY need to make a like serial debug output thingy
|
||||
// printf("Boot Device: %x\n", bootParams->BootDevice);
|
||||
// printf("Memory Region Count: %x\n", bootParams->Memory.RegionCount);
|
||||
// for (int i = 0; i < bootParams->Memory.RegionCount; i++) {
|
||||
|
||||
21
src/kernel/util/util.c
Normal file
21
src/kernel/util/util.c
Normal file
@ -0,0 +1,21 @@
|
||||
/*----------------*\
|
||||
|Nanite OS |
|
||||
|Copyright (C) 2024|
|
||||
|Tyler McGurrin |
|
||||
\*----------------*/
|
||||
|
||||
#include "util.h"
|
||||
|
||||
int string_length(char s[]) {
|
||||
int i = 0;
|
||||
while (s[i] != '\0') {
|
||||
++i;
|
||||
}
|
||||
return i;
|
||||
}
|
||||
|
||||
void append(char s[], char n) {
|
||||
int len = string_length(s);
|
||||
s[len] = n;
|
||||
s[len + 1] = '\0';
|
||||
}
|
||||
7
src/kernel/util/util.h
Normal file
7
src/kernel/util/util.h
Normal file
@ -0,0 +1,7 @@
|
||||
/*----------------*\
|
||||
|Nanite OS |
|
||||
|Copyright (C) 2025|
|
||||
|Tyler McGurrin |
|
||||
\*----------------*/
|
||||
int string_length(char s[]);
|
||||
void append(char s[], char n);
|
||||
Loading…
x
Reference in New Issue
Block a user