Voxia OS v0.0.1
Hobby Project Operating System Targeting x86-64
Loading...
Searching...
No Matches
keymap.c
Go to the documentation of this file.
1#include "type.h"
2#include <input.h>
3#include <input/keymap.h>
4
5static const char keymap_us[512][2] = {
6 [KEY_A] = {'a', 'A'},
7 [KEY_B] = {'b', 'B'},
8 [KEY_C] = {'c', 'C'},
9 [KEY_D] = {'d', 'D'},
10 [KEY_E] = {'e', 'E'},
11 [KEY_F] = {'f', 'F'},
12 [KEY_G] = {'g', 'G'},
13 [KEY_H] = {'h', 'H'},
14 [KEY_I] = {'i', 'I'},
15 [KEY_J] = {'j', 'J'},
16 [KEY_K] = {'k', 'K'},
17 [KEY_L] = {'l', 'L'},
18 [KEY_M] = {'m', 'M'},
19 [KEY_N] = {'n', 'N'},
20 [KEY_O] = {'o', 'O'},
21 [KEY_P] = {'p', 'P'},
22 [KEY_Q] = {'q', 'Q'},
23 [KEY_R] = {'r', 'R'},
24 [KEY_S] = {'s', 'S'},
25 [KEY_T] = {'t', 'T'},
26 [KEY_U] = {'u', 'U'},
27 [KEY_V] = {'v', 'V'},
28 [KEY_W] = {'w', 'W'},
29 [KEY_X] = {'x', 'X'},
30 [KEY_Y] = {'y', 'Y'},
31 [KEY_Z] = {'z', 'Z'},
32
33 [KEY_1] = {'1', '!'},
34 [KEY_2] = {'2', '@'},
35 [KEY_3] = {'3', '#'},
36 [KEY_4] = {'4', '$'},
37 [KEY_5] = {'5', '%'},
38 [KEY_6] = {'6', '^'},
39 [KEY_7] = {'7', '&'},
40 [KEY_8] = {'8', '*'},
41 [KEY_9] = {'9', '('},
42 [KEY_0] = {'0', ')'},
43
44 [KEY_ENTER] = {'\n', '\n'},
45 [KEY_BACKSPACE] = {'\b', '\b'},
46 [KEY_TAB] = {'\t', '\t'},
47 [KEY_SPACE] = {' ', ' '},
48
49 [KEY_MINUS] = {'-', '_'},
50 [KEY_EQUAL] = {'=', '+'},
51 [KEY_LEFTBRACE] = {'[', '{'},
52 [KEY_RIGHTBRACE] = {']', '}'},
53 [KEY_BACKSLASH] = {'\\', '|'},
54 [KEY_SEMICOLON] = {';', ':'},
55 [KEY_APOSTROPHE] = {'\'', '\"'},
56 [KEY_GRAVE] = {'`', '~'},
57 [KEY_COMMA] = {',', '<'},
58 [KEY_DOT] = {'.', '>'},
59 [KEY_SLASH] = {'/', '?'},
60};
61
63 int shift_idx = shift ? 1 : 0;
64
65 if ((size_t)scancode < sizeof(keymap_us)) {
66 return (uint16_t)keymap_us[scancode][shift_idx];
67 }
68 return 0;
69}
@ KEY_SPACE
Definition input.h:58
@ KEY_P
Definition input.h:29
@ KEY_M
Definition input.h:26
@ KEY_B
Definition input.h:15
@ KEY_2
Definition input.h:43
@ KEY_SEMICOLON
Definition input.h:67
@ KEY_ENTER
Definition input.h:54
@ KEY_E
Definition input.h:18
@ KEY_I
Definition input.h:22
@ KEY_W
Definition input.h:36
@ KEY_D
Definition input.h:17
@ KEY_6
Definition input.h:47
@ KEY_1
Definition input.h:42
@ KEY_GRAVE
Definition input.h:69
@ KEY_F
Definition input.h:19
@ KEY_H
Definition input.h:21
@ KEY_X
Definition input.h:37
@ KEY_G
Definition input.h:20
@ KEY_SLASH
Definition input.h:72
@ KEY_Y
Definition input.h:38
@ KEY_MINUS
Definition input.h:61
@ KEY_9
Definition input.h:50
@ KEY_TAB
Definition input.h:57
@ KEY_T
Definition input.h:33
@ KEY_K
Definition input.h:24
@ KEY_0
Definition input.h:51
@ KEY_C
Definition input.h:16
@ KEY_BACKSPACE
Definition input.h:56
@ KEY_R
Definition input.h:31
@ KEY_N
Definition input.h:27
@ KEY_A
Definition input.h:14
@ KEY_8
Definition input.h:49
@ KEY_LEFTBRACE
Definition input.h:63
@ KEY_Z
Definition input.h:39
@ KEY_DOT
Definition input.h:71
@ KEY_S
Definition input.h:32
@ KEY_J
Definition input.h:23
@ KEY_Q
Definition input.h:30
@ KEY_EQUAL
Definition input.h:62
@ KEY_U
Definition input.h:34
@ KEY_7
Definition input.h:48
@ KEY_O
Definition input.h:28
@ KEY_RIGHTBRACE
Definition input.h:64
@ KEY_4
Definition input.h:45
@ KEY_APOSTROPHE
Definition input.h:68
@ KEY_L
Definition input.h:25
@ KEY_5
Definition input.h:46
@ KEY_3
Definition input.h:44
@ KEY_BACKSLASH
Definition input.h:65
@ KEY_COMMA
Definition input.h:70
@ KEY_V
Definition input.h:35
uint16_t scancode_to_ascii(uint16_t scancode, boolean_t shift)
Definition keymap.c:62
static const char keymap_us[512][2]
Definition keymap.c:5
unsigned short uint16_t
Definition type.h:13
uint8_t boolean_t
Definition type.h:89