diff options
author | Joel Challis <git@zvecr.com> | 2020-04-01 21:06:22 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-01 21:06:22 +0100 |
commit | 58a9c84d6bb22c7544231f60acace4a85d6f8dd2 (patch) | |
tree | b66824a15543aad635de99fdb4db7768ab0c385b | |
parent | c217186bea9226f87ef4b8acc926c3f21a0fea85 (diff) | |
download | qmk_firmware-58a9c84d6bb22c7544231f60acace4a85d6f8dd2.tar.gz qmk_firmware-58a9c84d6bb22c7544231f60acace4a85d6f8dd2.zip |
Strip out features to allow minimum firmware sizes (#8645)
-rw-r--r-- | quantum/keymap_common.c | 14 | ||||
-rw-r--r-- | quantum/quantum.c | 2 | ||||
-rw-r--r-- | tmk_core/common/action.c | 3 | ||||
-rw-r--r-- | tmk_core/common/action_layer.h | 14 | ||||
-rw-r--r-- | tmk_core/common/util.c | 6 | ||||
-rw-r--r-- | tmk_core/protocol/vusb/vusb.c | 2 |
6 files changed, 30 insertions, 11 deletions
diff --git a/quantum/keymap_common.c b/quantum/keymap_common.c index f34ba26e5a..570d4798de 100644 --- a/quantum/keymap_common.c +++ b/quantum/keymap_common.c @@ -51,17 +51,23 @@ action_t action_for_key(uint8_t layer, keypos_t key) { action_t action = {}; uint8_t action_layer, when, mod; + (void)action_layer; + (void)when; + (void)mod; + switch (keycode) { case KC_A ... KC_EXSEL: case KC_LCTRL ... KC_RGUI: action.code = ACTION_KEY(keycode); break; +#ifdef EXTRAKEY_ENABLE case KC_SYSTEM_POWER ... KC_SYSTEM_WAKE: action.code = ACTION_USAGE_SYSTEM(KEYCODE2SYSTEM(keycode)); break; case KC_AUDIO_MUTE ... KC_BRIGHTNESS_DOWN: action.code = ACTION_USAGE_CONSUMER(KEYCODE2CONSUMER(keycode)); break; +#endif #ifdef MOUSEKEY_ENABLE case KC_MS_UP ... KC_MS_ACCEL2: action.code = ACTION_MOUSEKEY(keycode); @@ -93,6 +99,7 @@ action_t action_for_key(uint8_t layer, keypos_t key) { action.code = ACTION_MACRO(keycode & 0xFF); break; #endif +#ifndef NO_ACTION_LAYER case QK_LAYER_TAP ... QK_LAYER_TAP_MAX: action.code = ACTION_LAYER_TAP_KEY((keycode >> 0x8) & 0xF, keycode & 0xFF); break; @@ -117,6 +124,8 @@ action_t action_for_key(uint8_t layer, keypos_t key) { action_layer = keycode & 0xFF; action.code = ACTION_LAYER_TOGGLE(action_layer); break; +#endif +#ifndef NO_ACTION_ONESHOT case QK_ONE_SHOT_LAYER ... QK_ONE_SHOT_LAYER_MAX:; // OSL(action_layer) - One-shot action_layer action_layer = keycode & 0xFF; @@ -127,6 +136,8 @@ action_t action_for_key(uint8_t layer, keypos_t key) { mod = mod_config(keycode & 0xFF); action.code = ACTION_MODS_ONESHOT(mod); break; +#endif +#ifndef NO_ACTION_LAYER case QK_LAYER_TAP_TOGGLE ... QK_LAYER_TAP_TOGGLE_MAX: action.code = ACTION_LAYER_TAP_TOGGLE(keycode & 0xFF); break; @@ -135,10 +146,13 @@ action_t action_for_key(uint8_t layer, keypos_t key) { action_layer = (keycode >> 4) & 0xF; action.code = ACTION_LAYER_MODS(action_layer, mod); break; +#endif +#ifndef NO_ACTION_TAPPING case QK_MOD_TAP ... QK_MOD_TAP_MAX: mod = mod_config((keycode >> 0x8) & 0x1F); action.code = ACTION_MODS_TAP_KEY(mod, keycode & 0xFF); break; +#endif #ifdef SWAP_HANDS_ENABLE case QK_SWAP_HANDS ... QK_SWAP_HANDS_MAX: action.code = ACTION(ACT_SWAP_HANDS, keycode & 0xff); diff --git a/quantum/quantum.c b/quantum/quantum.c index 03b5704eb4..76a48cc77c 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -284,9 +284,11 @@ bool process_record_quantum(keyrecord_t *record) { if (record->event.pressed) { switch (keycode) { +#ifndef NO_RESET case RESET: reset_keyboard(); return false; +#endif #ifndef NO_DEBUG case DEBUG: debug_enable ^= 1; diff --git a/tmk_core/common/action.c b/tmk_core/common/action.c index 19c3569d55..74db245c12 100644 --- a/tmk_core/common/action.c +++ b/tmk_core/common/action.c @@ -775,11 +775,12 @@ void register_code(uint8_t code) { add_mods(MOD_BIT(code)); send_keyboard_report(); } +#ifdef EXTRAKEY_ENABLE else if IS_SYSTEM(code) { host_system_send(KEYCODE2SYSTEM(code)); } else if IS_CONSUMER(code) { host_consumer_send(KEYCODE2CONSUMER(code)); } - +#endif #ifdef MOUSEKEY_ENABLE else if IS_MOUSEKEY(code) { diff --git a/tmk_core/common/action_layer.h b/tmk_core/common/action_layer.h index b8562f5a46..c283d26232 100644 --- a/tmk_core/common/action_layer.h +++ b/tmk_core/common/action_layer.h @@ -82,13 +82,13 @@ void layer_xor(layer_state_t state); # define layer_debug() # define layer_clear() -# define layer_move(layer) -# define layer_on(layer) -# define layer_off(layer) -# define layer_invert(layer) -# define layer_or(state) -# define layer_and(state) -# define layer_xor(state) +# define layer_move(layer) (void)layer +# define layer_on(layer) (void)layer +# define layer_off(layer) (void)layer +# define layer_invert(layer) (void)layer +# define layer_or(state) (void)state +# define layer_and(state) (void)state +# define layer_xor(state) (void)state #endif layer_state_t layer_state_set_user(layer_state_t state); diff --git a/tmk_core/common/util.c b/tmk_core/common/util.c index f4f018de8d..861cca0054 100644 --- a/tmk_core/common/util.c +++ b/tmk_core/common/util.c @@ -18,7 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #include "util.h" // bit population - return number of on-bit -uint8_t bitpop(uint8_t bits) { +__attribute__((noinline)) uint8_t bitpop(uint8_t bits) { uint8_t c; for (c = 0; bits; c++) bits &= bits - 1; return c; @@ -42,7 +42,7 @@ uint8_t bitpop32(uint32_t bits) { // most significant on-bit - return highest location of on-bit // NOTE: return 0 when bit0 is on or all bits are off -uint8_t biton(uint8_t bits) { +__attribute__((noinline)) uint8_t biton(uint8_t bits) { uint8_t n = 0; if (bits >> 4) { bits >>= 4; @@ -105,7 +105,7 @@ uint8_t biton32(uint32_t bits) { return n; } -uint8_t bitrev(uint8_t bits) { +__attribute__((noinline)) uint8_t bitrev(uint8_t bits) { bits = (bits & 0x0f) << 4 | (bits & 0xf0) >> 4; bits = (bits & 0b00110011) << 2 | (bits & 0b11001100) >> 2; bits = (bits & 0b01010101) << 1 | (bits & 0b10101010) >> 1; diff --git a/tmk_core/protocol/vusb/vusb.c b/tmk_core/protocol/vusb/vusb.c index 95c59d4931..00314ebe83 100644 --- a/tmk_core/protocol/vusb/vusb.c +++ b/tmk_core/protocol/vusb/vusb.c @@ -158,10 +158,12 @@ typedef struct { } __attribute__((packed)) vusb_mouse_report_t; static void send_mouse(report_mouse_t *report) { +#if defined(MOUSE_ENABLE) vusb_mouse_report_t r = {.report_id = REPORT_ID_MOUSE, .report = *report}; if (usbInterruptIsReady3()) { usbSetInterrupt3((void *)&r, sizeof(vusb_mouse_report_t)); } +#endif } #ifdef EXTRAKEY_ENABLE |