summaryrefslogtreecommitdiff
path: root/tmk_core/common/command.h
blob: e7c7b0ea1d2296c692b440d849ecc46edffc7fd1 (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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
/*
Copyright 2011 Jun Wako <wakojun@gmail.com>

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

#pragma once

/* FIXME: Add doxygen comments for the behavioral defines in here. */

/* TODO: Refactoring */
typedef enum { ONESHOT, CONSOLE, MOUSEKEY } command_state_t;
extern command_state_t command_state;

/* This allows to extend commands. Return false when command is not processed. */
bool command_extra(uint8_t code);
bool command_console_extra(uint8_t code);

#ifdef COMMAND_ENABLE
uint8_t numkey2num(uint8_t code);
bool command_proc(uint8_t code);
#else
#define command_proc(code)      false
#endif

#ifndef IS_COMMAND
#define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)))
#endif

#ifndef MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS  true
#endif

#ifndef MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS  true
#endif

#ifndef MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
#endif

#ifndef MAGIC_KEY_HELP
#define MAGIC_KEY_HELP           H
#endif

#ifndef MAGIC_KEY_HELP_ALT
#define MAGIC_KEY_HELP_ALT       SLASH
#endif

#ifndef MAGIC_KEY_DEBUG
#define MAGIC_KEY_DEBUG          D
#endif

#ifndef MAGIC_KEY_DEBUG_MATRIX
#define MAGIC_KEY_DEBUG_MATRIX   X
#endif

#ifndef MAGIC_KEY_DEBUG_KBD
#define MAGIC_KEY_DEBUG_KBD      K
#endif

#ifndef MAGIC_KEY_DEBUG_MOUSE
#define MAGIC_KEY_DEBUG_MOUSE    M
#endif

#ifndef MAGIC_KEY_VERSION
#define MAGIC_KEY_VERSION        V
#endif

#ifndef MAGIC_KEY_STATUS
#define MAGIC_KEY_STATUS         S
#endif

#ifndef MAGIC_KEY_CONSOLE
#define MAGIC_KEY_CONSOLE        C
#endif

#ifndef MAGIC_KEY_LAYER0
#define MAGIC_KEY_LAYER0         0
#endif

#ifndef MAGIC_KEY_LAYER0_ALT
#define MAGIC_KEY_LAYER0_ALT     GRAVE
#endif

#ifndef MAGIC_KEY_LAYER1
#define MAGIC_KEY_LAYER1         1
#endif

#ifndef MAGIC_KEY_LAYER2
#define MAGIC_KEY_LAYER2         2
#endif

#ifndef MAGIC_KEY_LAYER3
#define MAGIC_KEY_LAYER3         3
#endif

#ifndef MAGIC_KEY_LAYER4
#define MAGIC_KEY_LAYER4         4
#endif

#ifndef MAGIC_KEY_LAYER5
#define MAGIC_KEY_LAYER5         5
#endif

#ifndef MAGIC_KEY_LAYER6
#define MAGIC_KEY_LAYER6         6
#endif

#ifndef MAGIC_KEY_LAYER7
#define MAGIC_KEY_LAYER7         7
#endif

#ifndef MAGIC_KEY_LAYER8
#define MAGIC_KEY_LAYER8         8
#endif

#ifndef MAGIC_KEY_LAYER9
#define MAGIC_KEY_LAYER9         9
#endif

#ifndef MAGIC_KEY_BOOTLOADER
#define MAGIC_KEY_BOOTLOADER     B
#endif

#ifndef MAGIC_KEY_BOOTLOADER_ALT
#define MAGIC_KEY_BOOTLOADER_ALT ESC
#endif

#ifndef MAGIC_KEY_LOCK
#define MAGIC_KEY_LOCK           CAPS
#endif

#ifndef MAGIC_KEY_EEPROM
#define MAGIC_KEY_EEPROM         E
#endif

#ifndef MAGIC_KEY_EEPROM_CLEAR
#define MAGIC_KEY_EEPROM_CLEAR   BSPACE
#endif

#ifndef MAGIC_KEY_NKRO
#define MAGIC_KEY_NKRO           N
#endif

#ifndef MAGIC_KEY_SLEEP_LED
#define MAGIC_KEY_SLEEP_LED      Z

#endif

#define XMAGIC_KC(key)  KC_ ## key
#define MAGIC_KC(key)   XMAGIC_KC(key)