-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathkeyboard.cpp
74 lines (68 loc) · 2.01 KB
/
keyboard.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include "keyboard.h"
Keyboard::Keyboard()
{
}
char Keyboard::GetKeyCharacter(const unsigned char code)
{
switch(code)
{
case KEYS::A: return 'A';
case KEYS::B: return 'B';
case KEYS::C: return 'C';
case KEYS::D: return 'D';
case KEYS::E: return 'E';
case KEYS::F: return 'F';
case KEYS::G: return 'G';
case KEYS::H: return 'H';
case KEYS::I: return 'I';
case KEYS::J: return 'J';
case KEYS::K: return 'K';
case KEYS::L: return 'L';
case KEYS::M: return 'M';
case KEYS::N: return 'N';
case KEYS::O: return 'O';
case KEYS::P: return 'P';
case KEYS::Q: return 'Q';
case KEYS::R: return 'R';
case KEYS::S: return 'S';
case KEYS::T: return 'T';
case KEYS::U: return 'U';
case KEYS::V: return 'V';
case KEYS::W: return 'W';
case KEYS::X: return 'X';
case KEYS::Y: return 'Y';
case KEYS::Z: return 'Z';
case KEYS::_1: return '1';
case KEYS::_2: return '2';
case KEYS::_3: return '3';
case KEYS::_4: return '4';
case KEYS::_5: return '5';
case KEYS::_6: return '6';
case KEYS::_7: return '7';
case KEYS::_8: return '8';
case KEYS::_9: return '9';
case KEYS::_0: return '0';
case KEYS::SPACE: return ' ';
case KEYS::OPEN_BRACKET: return '[';
case KEYS::CLOSE_BRACKET: return ']';
case KEYS::COMMA: return ',';
case KEYS::DOT: return '.';
case KEYS::SEMICOLON: return ';';
case KEYS::FORWARD_SLASH: return '/';
case KEYS::SLASH: return '\\';
default: return 0;
}
}
char Keyboard::GetInput()
{
char key = 0;
asm volatile("inb %1, %0" : "=a" (key) : "d" (Addresses::keyboard_port));
if(key == KEYS::ENTER)
{
return '\n';
}
else
{
return this->GetKeyCharacter(key);
}
}