aboutsummaryrefslogtreecommitdiffstats
path: root/src/ginput/ginput_keyboard_microcode.c
blob: 7f91643759e00467d7d7ceb092177d33638fce45 (plain)
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
/*
 * This file is subject to the terms of the GFX License. If a copy of
 * the license was not distributed with this file, you can obtain one at:
 *
 *              http://ugfx.io/license.html
 */

/**
 * @file    src/ginput/ginput_keyboard_microcode.c
 * @brief   GINPUT keyboard standard microcode definitions.
 */

#include "../../gfx.h"

#if GFX_USE_GINPUT && GINPUT_NEED_KEYBOARD && !GKEYBOARD_LAYOUT_OFF

#include "ginput_keyboard_microcode.h"

#if GKEYBOARD_LAYOUT_SCANCODE2_US

	#error "Keyboard Layout SCANCODE2_US is not fully implemented yet"

	uint8_t	KeyboardLayout_ScancodeSet2_US[] = {
		KMC_HEADERSTART, KMC_HEADER_ID1, KMC_HEADER_ID2, KMC_HEADER_VER_1,

		KMC_RECORDSTART, 0x03,													// Handle E0 codes (ignore for now assuming a single character)
			KMC_TEST_LASTCODE, 0xE0,
			KMC_ACT_DONE,
		KMC_RECORDSTART, 0x03,
			KMC_TEST_CODE, 0xE0,
			KMC_ACT_STOP,

		KMC_RECORDSTART, 0x03,													// Handle E1 codes (ignore for now assuming a single character)
			KMC_TEST_LASTCODE, 0xE1,
			KMC_ACT_DONE,
		KMC_RECORDSTART, 0x03,
			KMC_TEST_CODE, 0xE1,
			KMC_ACT_STOP,

		KMC_RECORDSTART, 0x03,													// Handle E2 codes (ignore for now assuming a single character)
			KMC_TEST_LASTCODE, 0xE2,
			KMC_ACT_DONE,
		KMC_RECORDSTART, 0x03,
			KMC_TEST_CODE, 0xE2,
			KMC_ACT_STOP,

		KMC_RECORDSTART, 0x06,													// KeyUp
			KMC_TEST_CODEBIT, 0x80,
			KMC_ACT_STATEBIT, GKEYSTATE_KEYUP_BIT,
			KMC_ACT_CODEBIT, 0x80 | KMC_BIT_CLEAR,

		KMC_RECORDSTART, 0x05,													// CapsLock (on keyup to avoid repeats)
			KMC_TEST_CODE, 0x58,
			KMC_TEST_STATEBIT, GKEYSTATE_KEYUP_BIT | KMC_BIT_CLEAR,
			KMC_ACT_DONE,
		KMC_RECORDSTART, 0x05,
			KMC_TEST_CODE, 0x58,
			KMC_ACT_STATEBIT, GKEYSTATE_CAPSLOCK_BIT | KMC_BIT_INVERT,
			KMC_ACT_DONE,

		KMC_RECORDSTART, 0x05,													// Detect Shift Keys
			//KMC_ACT_LAYOUTBIT, SCANCODESET2_LAYOUT_E0_BIT | KMC_BIT_CLEAR,
			KMC_ACT_STOP,

		KMC_RECORDSTART, 0x03,
			KMC_ACT_CHARRANGE, 0x00,
			KMC_ACT_DONE,

		KMC_RECORDSTART, 0x00,
	};
#endif // GKEYBOARD_LAYOUT_SCANCODE2_US

#endif // GFX_USE_GINPUT && GINPUT_NEED_KEYBOARD && !GKEYBOARD_LAYOUT_OFF