keyboard stuff
1/*
2Copyright 2011 Jun Wako <wakojun@gmail.com>
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#pragma once
19
20/* FIXME: Add doxygen comments for the behavioral defines in here. */
21
22/* TODO: Refactoring */
23typedef enum { ONESHOT, CONSOLE, MOUSEKEY } command_state_t;
24extern command_state_t command_state;
25
26/* This allows to extend commands. Return false when command is not processed. */
27bool command_extra(uint8_t code);
28bool command_console_extra(uint8_t code);
29
30#ifdef COMMAND_ENABLE
31bool command_proc(uint8_t code);
32#else
33# define command_proc(code) false
34#endif
35
36#ifndef IS_COMMAND
37# define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT)
38#endif
39
40#ifndef MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
41# define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
42#endif
43
44#ifndef MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
45# define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
46#endif
47
48#ifndef MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
49# define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
50#endif
51
52#ifndef MAGIC_KEY_HELP
53# define MAGIC_KEY_HELP H
54#endif
55
56#ifndef MAGIC_KEY_HELP_ALT
57# define MAGIC_KEY_HELP_ALT SLASH
58#endif
59
60#ifndef MAGIC_KEY_DEBUG
61# define MAGIC_KEY_DEBUG D
62#endif
63
64#ifndef MAGIC_KEY_DEBUG_MATRIX
65# define MAGIC_KEY_DEBUG_MATRIX X
66#endif
67
68#ifndef MAGIC_KEY_DEBUG_KBD
69# define MAGIC_KEY_DEBUG_KBD K
70#endif
71
72#ifndef MAGIC_KEY_DEBUG_MOUSE
73# define MAGIC_KEY_DEBUG_MOUSE M
74#endif
75
76#ifndef MAGIC_KEY_VERSION
77# define MAGIC_KEY_VERSION V
78#endif
79
80#ifndef MAGIC_KEY_STATUS
81# define MAGIC_KEY_STATUS S
82#endif
83
84#ifndef MAGIC_KEY_CONSOLE
85# define MAGIC_KEY_CONSOLE C
86#endif
87
88#ifndef MAGIC_KEY_LAYER0
89# define MAGIC_KEY_LAYER0 0
90#endif
91
92#ifndef MAGIC_KEY_LAYER0_ALT
93# define MAGIC_KEY_LAYER0_ALT GRAVE
94#endif
95
96#ifndef MAGIC_KEY_LAYER1
97# define MAGIC_KEY_LAYER1 1
98#endif
99
100#ifndef MAGIC_KEY_LAYER2
101# define MAGIC_KEY_LAYER2 2
102#endif
103
104#ifndef MAGIC_KEY_LAYER3
105# define MAGIC_KEY_LAYER3 3
106#endif
107
108#ifndef MAGIC_KEY_LAYER4
109# define MAGIC_KEY_LAYER4 4
110#endif
111
112#ifndef MAGIC_KEY_LAYER5
113# define MAGIC_KEY_LAYER5 5
114#endif
115
116#ifndef MAGIC_KEY_LAYER6
117# define MAGIC_KEY_LAYER6 6
118#endif
119
120#ifndef MAGIC_KEY_LAYER7
121# define MAGIC_KEY_LAYER7 7
122#endif
123
124#ifndef MAGIC_KEY_LAYER8
125# define MAGIC_KEY_LAYER8 8
126#endif
127
128#ifndef MAGIC_KEY_LAYER9
129# define MAGIC_KEY_LAYER9 9
130#endif
131
132#ifndef MAGIC_KEY_BOOTLOADER
133# define MAGIC_KEY_BOOTLOADER B
134#endif
135
136#ifndef MAGIC_KEY_BOOTLOADER_ALT
137# define MAGIC_KEY_BOOTLOADER_ALT ESC
138#endif
139
140#ifndef MAGIC_KEY_LOCK
141# define MAGIC_KEY_LOCK CAPS
142#endif
143
144#ifndef MAGIC_KEY_EEPROM
145# define MAGIC_KEY_EEPROM E
146#endif
147
148#ifndef MAGIC_KEY_EEPROM_CLEAR
149# define MAGIC_KEY_EEPROM_CLEAR BACKSPACE
150#endif
151
152#ifndef MAGIC_KEY_NKRO
153# define MAGIC_KEY_NKRO N
154#endif
155
156#ifndef MAGIC_KEY_SLEEP_LED
157# define MAGIC_KEY_SLEEP_LED Z
158
159#endif
160
161#define XMAGIC_KC(key) KC_##key
162#define MAGIC_KC(key) XMAGIC_KC(key)