aboutsummaryrefslogtreecommitdiff
path: root/quantum/keymap_common.c
diff options
context:
space:
mode:
authorskullY <skullydazed@gmail.com>2019-08-30 11:19:03 -0700
committerskullydazed <skullydazed@users.noreply.github.com>2019-08-30 15:01:52 -0700
commitb624f32f944acdc59dcb130674c09090c5c404cb (patch)
treebc13adbba137d122d9a2c2fb2fafcbb08ac10e25 /quantum/keymap_common.c
parent61af76a10d00aba185b8338604171de490a13e3b (diff)
downloadqmk_firmware-b624f32f944acdc59dcb130674c09090c5c404cb.tar.gz
qmk_firmware-b624f32f944acdc59dcb130674c09090c5c404cb.zip
clang-format changes
Diffstat (limited to 'quantum/keymap_common.c')
-rw-r--r--quantum/keymap_common.c99
1 files changed, 43 insertions, 56 deletions
diff --git a/quantum/keymap_common.c b/quantum/keymap_common.c
index eef739a14..9af951008 100644
--- a/quantum/keymap_common.c
+++ b/quantum/keymap_common.c
@@ -20,8 +20,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
20#include "keycode.h" 20#include "keycode.h"
21#include "action_layer.h" 21#include "action_layer.h"
22#if defined(__AVR__) 22#if defined(__AVR__)
23#include <util/delay.h> 23# include <util/delay.h>
24#include <stdio.h> 24# include <stdio.h>
25#endif 25#endif
26#include "action.h" 26#include "action.h"
27#include "action_macro.h" 27#include "action_macro.h"
@@ -30,7 +30,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
30#include "quantum.h" 30#include "quantum.h"
31 31
32#ifdef MIDI_ENABLE 32#ifdef MIDI_ENABLE
33 #include "process_midi.h" 33# include "process_midi.h"
34#endif 34#endif
35 35
36extern keymap_config_t keymap_config; 36extern keymap_config_t keymap_config;
@@ -38,8 +38,7 @@ extern keymap_config_t keymap_config;
38#include <inttypes.h> 38#include <inttypes.h>
39 39
40/* converts key to action */ 40/* converts key to action */
41action_t action_for_key(uint8_t layer, keypos_t key) 41action_t action_for_key(uint8_t layer, keypos_t key) {
42{
43 // 16bit keycodes - important 42 // 16bit keycodes - important
44 uint16_t keycode = keymap_key_to_keycode(layer, key); 43 uint16_t keycode = keymap_key_to_keycode(layer, key);
45 44
@@ -47,7 +46,7 @@ action_t action_for_key(uint8_t layer, keypos_t key)
47 keycode = keycode_config(keycode); 46 keycode = keycode_config(keycode);
48 47
49 action_t action; 48 action_t action;
50 uint8_t action_layer, when, mod; 49 uint8_t action_layer, when, mod;
51 50
52 switch (keycode) { 51 switch (keycode) {
53 case KC_FN0 ... KC_FN31: 52 case KC_FN0 ... KC_FN31:
@@ -69,18 +68,18 @@ action_t action_for_key(uint8_t layer, keypos_t key)
69 case KC_TRNS: 68 case KC_TRNS:
70 action.code = ACTION_TRANSPARENT; 69 action.code = ACTION_TRANSPARENT;
71 break; 70 break;
72 case QK_MODS ... QK_MODS_MAX: ; 71 case QK_MODS ... QK_MODS_MAX:;
73 // Has a modifier 72 // Has a modifier
74 // Split it up 73 // Split it up
75 action.code = ACTION_MODS_KEY(keycode >> 8, keycode & 0xFF); // adds modifier to key 74 action.code = ACTION_MODS_KEY(keycode >> 8, keycode & 0xFF); // adds modifier to key
76 break; 75 break;
77 case QK_FUNCTION ... QK_FUNCTION_MAX: ; 76 case QK_FUNCTION ... QK_FUNCTION_MAX:;
78 // Is a shortcut for function action_layer, pull last 12bits 77 // Is a shortcut for function action_layer, pull last 12bits
79 // This means we have 4,096 FN macros at our disposal 78 // This means we have 4,096 FN macros at our disposal
80 action.code = keymap_function_id_to_action( (int)keycode & 0xFFF ); 79 action.code = keymap_function_id_to_action((int)keycode & 0xFFF);
81 break; 80 break;
82 case QK_MACRO ... QK_MACRO_MAX: 81 case QK_MACRO ... QK_MACRO_MAX:
83 if (keycode & 0x800) // tap macros have upper bit set 82 if (keycode & 0x800) // tap macros have upper bit set
84 action.code = ACTION_MACRO_TAP(keycode & 0xFF); 83 action.code = ACTION_MACRO_TAP(keycode & 0xFF);
85 else 84 else
86 action.code = ACTION_MACRO(keycode & 0xFF); 85 action.code = ACTION_MACRO(keycode & 0xFF);
@@ -88,50 +87,50 @@ action_t action_for_key(uint8_t layer, keypos_t key)
88 case QK_LAYER_TAP ... QK_LAYER_TAP_MAX: 87 case QK_LAYER_TAP ... QK_LAYER_TAP_MAX:
89 action.code = ACTION_LAYER_TAP_KEY((keycode >> 0x8) & 0xF, keycode & 0xFF); 88 action.code = ACTION_LAYER_TAP_KEY((keycode >> 0x8) & 0xF, keycode & 0xFF);
90 break; 89 break;
91 case QK_TO ... QK_TO_MAX: ; 90 case QK_TO ... QK_TO_MAX:;
92 // Layer set "GOTO" 91 // Layer set "GOTO"
93 when = (keycode >> 0x4) & 0x3; 92 when = (keycode >> 0x4) & 0x3;
94 action_layer = keycode & 0xF; 93 action_layer = keycode & 0xF;
95 action.code = ACTION_LAYER_SET(action_layer, when); 94 action.code = ACTION_LAYER_SET(action_layer, when);
96 break; 95 break;
97 case QK_MOMENTARY ... QK_MOMENTARY_MAX: ; 96 case QK_MOMENTARY ... QK_MOMENTARY_MAX:;
98 // Momentary action_layer 97 // Momentary action_layer
99 action_layer = keycode & 0xFF; 98 action_layer = keycode & 0xFF;
100 action.code = ACTION_LAYER_MOMENTARY(action_layer); 99 action.code = ACTION_LAYER_MOMENTARY(action_layer);
101 break; 100 break;
102 case QK_DEF_LAYER ... QK_DEF_LAYER_MAX: ; 101 case QK_DEF_LAYER ... QK_DEF_LAYER_MAX:;
103 // Set default action_layer 102 // Set default action_layer
104 action_layer = keycode & 0xFF; 103 action_layer = keycode & 0xFF;
105 action.code = ACTION_DEFAULT_LAYER_SET(action_layer); 104 action.code = ACTION_DEFAULT_LAYER_SET(action_layer);
106 break; 105 break;
107 case QK_TOGGLE_LAYER ... QK_TOGGLE_LAYER_MAX: ; 106 case QK_TOGGLE_LAYER ... QK_TOGGLE_LAYER_MAX:;
108 // Set toggle 107 // Set toggle
109 action_layer = keycode & 0xFF; 108 action_layer = keycode & 0xFF;
110 action.code = ACTION_LAYER_TOGGLE(action_layer); 109 action.code = ACTION_LAYER_TOGGLE(action_layer);
111 break; 110 break;
112 case QK_ONE_SHOT_LAYER ... QK_ONE_SHOT_LAYER_MAX: ; 111 case QK_ONE_SHOT_LAYER ... QK_ONE_SHOT_LAYER_MAX:;
113 // OSL(action_layer) - One-shot action_layer 112 // OSL(action_layer) - One-shot action_layer
114 action_layer = keycode & 0xFF; 113 action_layer = keycode & 0xFF;
115 action.code = ACTION_LAYER_ONESHOT(action_layer); 114 action.code = ACTION_LAYER_ONESHOT(action_layer);
116 break; 115 break;
117 case QK_ONE_SHOT_MOD ... QK_ONE_SHOT_MOD_MAX: ; 116 case QK_ONE_SHOT_MOD ... QK_ONE_SHOT_MOD_MAX:;
118 // OSM(mod) - One-shot mod 117 // OSM(mod) - One-shot mod
119 mod = mod_config(keycode & 0xFF); 118 mod = mod_config(keycode & 0xFF);
120 action.code = ACTION_MODS_ONESHOT(mod); 119 action.code = ACTION_MODS_ONESHOT(mod);
121 break; 120 break;
122 case QK_LAYER_TAP_TOGGLE ... QK_LAYER_TAP_TOGGLE_MAX: 121 case QK_LAYER_TAP_TOGGLE ... QK_LAYER_TAP_TOGGLE_MAX:
123 action.code = ACTION_LAYER_TAP_TOGGLE(keycode & 0xFF); 122 action.code = ACTION_LAYER_TAP_TOGGLE(keycode & 0xFF);
124 break; 123 break;
125 case QK_LAYER_MOD ... QK_LAYER_MOD_MAX: 124 case QK_LAYER_MOD ... QK_LAYER_MOD_MAX:
126 mod = mod_config(keycode & 0xF); 125 mod = mod_config(keycode & 0xF);
127 action_layer = (keycode >> 4) & 0xF; 126 action_layer = (keycode >> 4) & 0xF;
128 action.code = ACTION_LAYER_MODS(action_layer, mod); 127 action.code = ACTION_LAYER_MODS(action_layer, mod);
129 break; 128 break;
130 case QK_MOD_TAP ... QK_MOD_TAP_MAX: 129 case QK_MOD_TAP ... QK_MOD_TAP_MAX:
131 mod = mod_config((keycode >> 0x8) & 0x1F); 130 mod = mod_config((keycode >> 0x8) & 0x1F);
132 action.code = ACTION_MODS_TAP_KEY(mod, keycode & 0xFF); 131 action.code = ACTION_MODS_TAP_KEY(mod, keycode & 0xFF);
133 break; 132 break;
134 #ifdef BACKLIGHT_ENABLE 133#ifdef BACKLIGHT_ENABLE
135 case BL_ON: 134 case BL_ON:
136 action.code = ACTION_BACKLIGHT_ON(); 135 action.code = ACTION_BACKLIGHT_ON();
137 break; 136 break;
@@ -150,12 +149,12 @@ action_t action_for_key(uint8_t layer, keypos_t key)
150 case BL_STEP: 149 case BL_STEP:
151 action.code = ACTION_BACKLIGHT_STEP(); 150 action.code = ACTION_BACKLIGHT_STEP();
152 break; 151 break;
153 #endif 152#endif
154 #ifdef SWAP_HANDS_ENABLE 153#ifdef SWAP_HANDS_ENABLE
155 case QK_SWAP_HANDS ... QK_SWAP_HANDS_MAX: 154 case QK_SWAP_HANDS ... QK_SWAP_HANDS_MAX:
156 action.code = ACTION(ACT_SWAP_HANDS, keycode & 0xff); 155 action.code = ACTION(ACT_SWAP_HANDS, keycode & 0xff);
157 break; 156 break;
158 #endif 157#endif
159 158
160 default: 159 default:
161 action.code = ACTION_NO; 160 action.code = ACTION_NO;
@@ -164,42 +163,30 @@ action_t action_for_key(uint8_t layer, keypos_t key)
164 return action; 163 return action;
165} 164}
166 165
167__attribute__ ((weak)) 166__attribute__((weak)) const uint16_t PROGMEM fn_actions[] = {
168const uint16_t PROGMEM fn_actions[] = {
169 167
170}; 168};
171 169
172/* Macro */ 170/* Macro */
173__attribute__ ((weak)) 171__attribute__((weak)) const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { return MACRO_NONE; }
174const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
175{
176 return MACRO_NONE;
177}
178 172
179/* Function */ 173/* Function */
180__attribute__ ((weak)) 174__attribute__((weak)) void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {}
181void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
182{
183}
184 175
185// translates key to keycode 176// translates key to keycode
186__attribute__ ((weak)) 177__attribute__((weak)) uint16_t keymap_key_to_keycode(uint8_t layer, keypos_t key) {
187uint16_t keymap_key_to_keycode(uint8_t layer, keypos_t key)
188{
189 // Read entire word (16bits) 178 // Read entire word (16bits)
190 return pgm_read_word(&keymaps[(layer)][(key.row)][(key.col)]); 179 return pgm_read_word(&keymaps[(layer)][(key.row)][(key.col)]);
191} 180}
192 181
193// translates function id to action 182// translates function id to action
194__attribute__ ((weak)) 183__attribute__((weak)) uint16_t keymap_function_id_to_action(uint16_t function_id) {
195uint16_t keymap_function_id_to_action( uint16_t function_id ) 184// The compiler sees the empty (weak) fn_actions and generates a warning
196{ 185// This function should not be called in that case, so the warning is too strict
197 // The compiler sees the empty (weak) fn_actions and generates a warning 186// If this function is called however, the keymap should have overridden fn_actions, and then the compile
198 // This function should not be called in that case, so the warning is too strict 187// is comparing against the wrong array
199 // If this function is called however, the keymap should have overridden fn_actions, and then the compile 188#pragma GCC diagnostic push
200 // is comparing against the wrong array 189#pragma GCC diagnostic ignored "-Warray-bounds"
201 #pragma GCC diagnostic push 190 return pgm_read_word(&fn_actions[function_id]);
202 #pragma GCC diagnostic ignored "-Warray-bounds" 191#pragma GCC diagnostic pop
203 return pgm_read_word(&fn_actions[function_id]);
204 #pragma GCC diagnostic pop
205} 192}