@@ -5,7 +5,7 @@ inline char* OS_NAME = "SectorOS";
5
5
6
6
inline char * KERNEL_NAME = "SectorOS" ;
7
7
inline char * KERNEL_VERSION = "V2.1.6" ;
8
- inline char * KERNEL_BUILD = "Build: 2021-12-10 " ;
8
+ inline char * KERNEL_BUILD = "Build: 2021-12-11 " ;
9
9
inline char * KERNEL_ARCH = "x86" ;
10
10
11
11
inline char * SHELL_NAME = "SOSH" ;
@@ -17,9 +17,143 @@ inline int SPIndex = 0; // Shell Prompt Index
17
17
// END Environment variables
18
18
19
19
// START Kernel variables
20
- inline char * key_buffer [256 ]; // To Save the keystrokes in memory to use them later. Max number keystroke to save in the buffer is 256 Chars
21
- inline int key_buffer_index = 0 ; // The index of the key_buffer
22
20
inline bool IsShellDisabled = false; // To disable the shell
21
+ inline bool isShift = false; // To know if the shift key is pressed
22
+
23
23
// END Kernel variables
24
24
25
+ // START Common Functions
26
+
27
+ inline char KeyCodeToChar (uint8_t keyCode )
28
+ {
29
+ char result ;
30
+ if (keyCode < 0x80 )
31
+ {
32
+ switch (keyCode )
33
+ {
34
+ case 0xFA : break ;
35
+ case 0x45 : case 0xC5 : break ;
36
+ case 0x29 :if (!isShift ) result = '`' ; else result = '~' ; break ;
37
+ case 0x02 :if (!isShift ) result = '1' ; else result = '!' ; break ;
38
+ case 0x03 :if (!isShift ) result = '2' ; else result = '@' ; break ;
39
+ case 0x04 :if (!isShift ) result = '3' ; else result = '#' ; break ;
40
+ case 0x05 :if (!isShift ) result = '4' ; else result = '$' ; break ;
41
+ case 0x06 :if (!isShift ) result = '5' ; else result = '%' ; break ;
42
+ case 0x07 :if (!isShift ) result = '6' ; else result = '^' ; break ;
43
+ case 0x08 :if (!isShift ) result = '7' ; else result = '&' ; break ;
44
+ case 0x09 :if (!isShift ) result = '8' ; else result = '*' ; break ;
45
+ case 0x0A :if (!isShift ) result = '9' ; else result = '(' ; break ;
46
+ case 0x0B :if (!isShift ) result = '0' ; else result = ')' ; break ;
47
+ case 0x0C :if (!isShift ) result = '-' ; else result = '_' ; break ;
48
+ case 0x0D :if (!isShift ) result = '=' ; else result = '+' ; break ;
49
+
50
+ case 0x10 :if (!isShift ) result = 'q' ; else result = 'Q' ; break ;
51
+ case 0x11 :if (!isShift ) result = 'w' ; else result = 'W' ; break ;
52
+ case 0x12 :if (!isShift ) result = 'e' ; else result = 'E' ; break ;
53
+ case 0x13 :if (!isShift ) result = 'r' ; else result = 'R' ; break ;
54
+ case 0x14 :if (!isShift ) result = 't' ; else result = 'T' ; break ;
55
+ case 0x15 :if (!isShift ) result = 'y' ; else result = 'Y' ; break ;
56
+ case 0x16 :if (!isShift ) result = 'u' ; else result = 'U' ; break ;
57
+ case 0x17 :if (!isShift ) result = 'i' ; else result = 'I' ; break ;
58
+ case 0x18 :if (!isShift ) result = 'o' ; else result = 'O' ; break ;
59
+ case 0x19 :if (!isShift ) result = 'p' ; else result = 'P' ; break ;
60
+ case 0x1A :if (!isShift ) result = '[' ; else result = '{' ; break ;
61
+ case 0x1B :if (!isShift ) result = ']' ; else result = '}' ; break ;
62
+ case 0x1C :if (!isShift ) result = '\n' ; else result = '\n' ; break ;
63
+
64
+ case 0x1E :if (!isShift ) result = 'a' ; else result = 'A' ; break ;
65
+ case 0x1F :if (!isShift ) result = 's' ; else result = 'S' ; break ;
66
+ case 0x20 :if (!isShift ) result = 'd' ; else result = 'D' ; break ;
67
+ case 0x21 :if (!isShift ) result = 'f' ; else result = 'F' ; break ;
68
+ case 0x22 :if (!isShift ) result = 'g' ; else result = 'G' ; break ;
69
+ case 0x23 :if (!isShift ) result = 'h' ; else result = 'H' ; break ;
70
+ case 0x24 :if (!isShift ) result = 'j' ; else result = 'J' ; break ;
71
+ case 0x25 :if (!isShift ) result = 'k' ; else result = 'K' ; break ;
72
+ case 0x26 :if (!isShift ) result = 'l' ; else result = 'L' ; break ;
73
+ case 0x27 :if (!isShift ) result = ';' ; else result = ':' ; break ;
74
+
75
+ case 0x2C :if (!isShift ) result = 'z' ; else result = 'Z' ; break ;
76
+ case 0x2D :if (!isShift ) result = 'x' ; else result = 'X' ; break ;
77
+ case 0x2E :if (!isShift ) result = 'c' ; else result = 'C' ; break ;
78
+ case 0x2F :if (!isShift ) result = 'v' ; else result = 'V' ; break ;
79
+ case 0x30 :if (!isShift ) result = 'v' ; else result = 'B' ; break ;
80
+ case 0x31 :if (!isShift ) result = 'n' ; else result = 'N' ; break ;
81
+ case 0x32 :if (!isShift ) result = 'm' ; else result = 'M' ; break ;
82
+ case 0x33 :if (!isShift ) result = ',' ; else result = '<' ; break ;
83
+ case 0x34 :if (!isShift ) result = '.' ; else result = '>' ; break ;
84
+ case 0x35 :if (!isShift ) result = '/' ; else result = '?' ; break ;
85
+ case 0x39 :if (!isShift ) result = ' ' ; else result = ' ' ; break ;
86
+ case 0x2B :if (!isShift ) result = '\\' ; else result = '|' ; break ;
87
+ }
88
+ }
89
+ return result ;
90
+ }
91
+
92
+ inline char * KeycodeToASCII (uint8_t Keycode )
93
+ {
94
+ char * result ;
95
+ if (Keycode < 0x80 )
96
+ {
97
+ switch (Keycode )
98
+ {
99
+ case 0xFA : break ;
100
+ case 0x45 : case 0xC5 : break ;
101
+ case 0x29 :if (!isShift ) result = "`" ; else result = "~" ; break ;
102
+ case 0x02 :if (!isShift ) result = "1" ; else result = "!" ; break ;
103
+ case 0x03 :if (!isShift ) result = "2" ; else result = "@" ; break ;
104
+ case 0x04 :if (!isShift ) result = "3" ; else result = "#" ; break ;
105
+ case 0x05 :if (!isShift ) result = "4" ; else result = "$" ; break ;
106
+ case 0x06 :if (!isShift ) result = "5" ; else result = "%" ; break ;
107
+ case 0x07 :if (!isShift ) result = "6" ; else result = "^" ; break ;
108
+ case 0x08 :if (!isShift ) result = "7" ; else result = "&" ; break ;
109
+ case 0x09 :if (!isShift ) result = "8" ; else result = "*" ; break ;
110
+ case 0x0A :if (!isShift ) result = "9" ; else result = "(" ; break ;
111
+ case 0x0B :if (!isShift ) result = "0" ; else result = ")" ; break ;
112
+ case 0x0C :if (!isShift ) result = "-" ; else result = "_" ; break ;
113
+ case 0x0D :if (!isShift ) result = "=" ; else result = "+" ; break ;
114
+
115
+ case 0x10 :if (!isShift ) result = "q" ; else result = "Q" ; break ;
116
+ case 0x11 :if (!isShift ) result = "w" ; else result = "W" ; break ;
117
+ case 0x12 :if (!isShift ) result = "e" ; else result = "E" ; break ;
118
+ case 0x13 :if (!isShift ) result = "r" ; else result = "R" ; break ;
119
+ case 0x14 :if (!isShift ) result = "t" ; else result = "T" ; break ;
120
+ case 0x15 :if (!isShift ) result = "y" ; else result = "Y" ; break ;
121
+ case 0x16 :if (!isShift ) result = "u" ; else result = "U" ; break ;
122
+ case 0x17 :if (!isShift ) result = "i" ; else result = "I" ; break ;
123
+ case 0x18 :if (!isShift ) result = "o" ; else result = "O" ; break ;
124
+ case 0x19 :if (!isShift ) result = "p" ; else result = "P" ; break ;
125
+ case 0x1A :if (!isShift ) result = "[" ; else result = "{" ; break ;
126
+ case 0x1B :if (!isShift ) result = "]" ; else result = "}" ; break ;
127
+ case 0x1C :if (!isShift ) result = "\n" ; else result = "\n" ; break ;
128
+
129
+ case 0x1E :if (!isShift ) result = "a" ; else result = "A" ; break ;
130
+ case 0x1F :if (!isShift ) result = "s" ; else result = "S" ; break ;
131
+ case 0x20 :if (!isShift ) result = "d" ; else result = "D" ; break ;
132
+ case 0x21 :if (!isShift ) result = "f" ; else result = "F" ; break ;
133
+ case 0x22 :if (!isShift ) result = "g" ; else result = "G" ; break ;
134
+ case 0x23 :if (!isShift ) result = "h" ; else result = "H" ; break ;
135
+ case 0x24 :if (!isShift ) result = "j" ; else result = "J" ; break ;
136
+ case 0x25 :if (!isShift ) result = "k" ; else result = "K" ; break ;
137
+ case 0x26 :if (!isShift ) result = "l" ; else result = "L" ; break ;
138
+ case 0x27 :if (!isShift ) result = ";" ; else result = ":" ; break ;
139
+
140
+ case 0x2C :if (!isShift ) result = "z" ; else result = "Z" ; break ;
141
+ case 0x2D :if (!isShift ) result = "x" ; else result = "X" ; break ;
142
+ case 0x2E :if (!isShift ) result = "c" ; else result = "C" ; break ;
143
+ case 0x2F :if (!isShift ) result = "v" ; else result = "V" ; break ;
144
+ case 0x30 :if (!isShift ) result = "v" ; else result = "B" ; break ;
145
+ case 0x31 :if (!isShift ) result = "n" ; else result = "N" ; break ;
146
+ case 0x32 :if (!isShift ) result = "m" ; else result = "M" ; break ;
147
+ case 0x33 :if (!isShift ) result = "," ; else result = "<" ; break ;
148
+ case 0x34 :if (!isShift ) result = "." ; else result = ">" ; break ;
149
+ case 0x35 :if (!isShift ) result = "/" ; else result = "?" ; break ;
150
+ case 0x39 :if (!isShift ) result = " " ; else result = " " ; break ;
151
+ case 0x2B :if (!isShift ) result = "\\" ; else result = "|" ; break ;
152
+ }
153
+ }
154
+ return result ;
155
+ }
156
+
157
+ // END Common Functions
158
+
25
159
#endif
0 commit comments