diff options
-rw-r--r-- | jack/introspection.c | 33 | ||||
-rw-r--r-- | jack/jack.c | 65 | ||||
-rw-r--r-- | jack/jack.h | 15 | ||||
-rw-r--r-- | jack/oled.c | 1 | ||||
-rw-r--r-- | jack/post_rules.mk | 11 | ||||
-rw-r--r-- | jack/rules.mk | 24 | ||||
-rw-r--r-- | keyboards/pseusplit/keymaps/jack/keymap.c | 26 | ||||
-rw-r--r-- | keyboards/sweep/keymaps/jack/keymap.c | 9 | ||||
-rw-r--r-- | keymaps/crkbd/rules.mk | 1 | ||||
-rw-r--r-- | keymaps/kyria/rules.mk | 2 | ||||
-rw-r--r-- | readme.md | 18 | ||||
-rwxr-xr-x | util/link.sh | 2 |
12 files changed, 120 insertions, 87 deletions
diff --git a/jack/introspection.c b/jack/introspection.c new file mode 100644 index 0000000..86f453b --- /dev/null +++ b/jack/introspection.c @@ -0,0 +1,33 @@ +// Copyright 2025 [email protected] +// SPDX-License-Identifier: GPL-2.0-or-later +#include "jack.h" + +#ifdef TAP_DANCE_ENABLE +tap_dance_action_t tap_dance_actions[] = { + [EM_DASH_MINS] = ACTION_TAP_DANCE_FN(em_dash_mins), + [PLY_NXT_PRV] = ACTION_TAP_DANCE_FN(ply_nxt_prv), + [PASTE_RAISE] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, raise_paste, td_reset), + [CBRACKET] = ACTION_TAP_DANCE_DOUBLE(KC_LCBR, KC_RCBR), + [SBRACKET] = ACTION_TAP_DANCE_DOUBLE(KC_LBRC, KC_RBRC), +}; +#endif + +#ifdef ENCODER_MAP_ENABLE +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [_BASE] = {{KC_VOLU, KC_VOLD}, {KC_MNXT, KC_MPRV}}, + [_LOWER] = {{XRGB_SAI, XRGB_SAD}, {XRGB_HUI, XRGB_HUD}}, + [_RAISE] = {{C(KC_LEFT), C(KC_RGHT)}, {C(S(KC_TAB)), C(KC_TAB)}}}; +#endif + +#ifdef COMBO_ENABLE +#define CMB(name, action, ...) \ + uint16_t const name##_combo[] PROGMEM = {__VA_ARGS__, COMBO_END}; +#include "combos.def" +#undef CMB + +#define CMB(name, action, ...) [name] = COMBO(name##_combo, action), +combo_t key_combos[] = { +#include "combos.def" +}; +#undef CMB +#endif diff --git a/jack/jack.c b/jack/jack.c index f2e9944..274a011 100644 --- a/jack/jack.c +++ b/jack/jack.c @@ -2,35 +2,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later #include "jack.h" -#ifdef TAP_DANCE_ENABLE -tap_dance_action_t tap_dance_actions[] = { - [EM_DASH_MINS] = ACTION_TAP_DANCE_FN(em_dash_mins), - [PLY_NXT_PRV] = ACTION_TAP_DANCE_FN(ply_nxt_prv), - [PASTE_RAISE] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, raise_paste, td_reset), - [CBRACKET] = ACTION_TAP_DANCE_DOUBLE(KC_LCBR, KC_RCBR), - [SBRACKET] = ACTION_TAP_DANCE_DOUBLE(KC_LBRC, KC_RBRC), -}; -#endif - -#ifdef COMBO_ENABLE -#define CMB(name, action, ...) name, -enum combos { -#include "combos.def" -}; -#undef CMB - -#define CMB(name, action, ...) \ - uint16_t const name##_combo[] PROGMEM = {__VA_ARGS__, COMBO_END}; -#include "combos.def" -#undef CMB - -#define CMB(name, action, ...) [name] = COMBO(name##_combo, action), -combo_t key_combos[] = { -#include "combos.def" -}; -#undef CMB -#endif - #if defined(SPLIT_KEYBOARD) && defined(OLED_ENABLE) #include "transactions.h" extern char keylog_str[KEYLOG_LEN + 1]; @@ -41,25 +12,31 @@ void keylogger_sync(uint8_t initiator2target_buffer_size, if (initiator2target_buffer_size == 5) memcpy(&keylog_str, initiator2target_buffer, initiator2target_buffer_size); } +#endif +__attribute__((weak)) void housekeeping_task_keymap(void) {} void housekeeping_task_user(void) { +#if defined(SPLIT_KEYBOARD) && defined(OLED_ENABLE) if (is_keyboard_master()) { static uint32_t last_sync; bool needs_sync = false; static char tmp_keylog[5] = {0}; - if (memcmp(&keylog_str, &tmp_keylog, 5)) { + if (memcmp(&keylog_str, &tmp_keylog, sizeof(tmp_keylog))) { needs_sync = true; - memcpy(&tmp_keylog, &keylog_str, 5); + memcpy(&tmp_keylog, &keylog_str, sizeof(tmp_keylog)); } if (timer_elapsed32(last_sync) > 250) needs_sync = true; if (needs_sync) - if (transaction_rpc_send(RPC_ID_USER_KEYLOG_STR, 5, &keylog_str)) + if (transaction_rpc_send(RPC_ID_USER_KEYLOG_STR, sizeof(tmp_keylog), + &keylog_str)) last_sync = timer_read32(); } -} #endif + housekeeping_task_keymap(); +} +__attribute__((weak)) void keyboard_post_init_keymap(void) {} void keyboard_post_init_user(void) { #if defined(SPLIT_KEYBOARD) && defined(OLED_ENABLE) transaction_register_rpc(RPC_ID_USER_KEYLOG_STR, keylogger_sync); @@ -71,7 +48,8 @@ void keyboard_post_init_user(void) { rgblight_enable_noeeprom(); rgblight_sethsv_noeeprom(HSV_CYAN); rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); -#elif RGB_MATRIX_ENABLE +#endif +#ifdef RGB_MATRIX_ENABLE rgb_matrix_enable_noeeprom(); rgb_matrix_sethsv_noeeprom(HSV_CYAN); rgb_matrix_mode_noeeprom(RGB_MATRIX_SOLID_COLOR); @@ -89,32 +67,23 @@ void matrix_scan_user(void) { #endif } -#ifdef ENCODER_MAP_ENABLE -const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { - [_BASE] = {{KC_VOLU, KC_VOLD}, {KC_MNXT, KC_MPRV}}, - [_LOWER] = {{RGB_SAI, RGB_SAD}, {RGB_HUI, RGB_HUD}}, - [_RAISE] = {{C(KC_LEFT), C(KC_RGHT)}, {C(S(KC_TAB)), C(KC_TAB)}}}; -#endif - #ifndef MAGIC_ENABLE uint16_t keycode_config(uint16_t keycode) { return keycode; } -#endif - -#ifndef MAGIC_ENABLE uint8_t mod_config(uint8_t mod) { return mod; } #endif -__attribute__((weak)) void keyboard_post_init_keymap(void) {} - #ifdef RP2040_MATH_IN_ROM typedef void (*init_fn)(void); - extern init_fn __preinit_array_base__; extern init_fn __preinit_array_end__; +#endif +__attribute__((weak)) void keyboard_pre_init_keymap(void) {} void keyboard_pre_init_user(void) { +#ifdef RP2040_MATH_IN_ROM for (init_fn *func = &__preinit_array_base__; func < &__preinit_array_end__; func++) (*func)(); -} #endif + keyboard_pre_init_keymap(); +} diff --git a/jack/jack.h b/jack/jack.h index eb9182c..3d3b1c9 100644 --- a/jack/jack.h +++ b/jack/jack.h @@ -21,6 +21,12 @@ enum custom_keycodes { UC_SUPER }; +#define CMB(name, action, ...) name, +enum combos { +#include "combos.def" +}; +#undef CMB + bool process_record_unicode(uint16_t keycode, keyrecord_t *record); bool process_record_taps(uint16_t keycode, keyrecord_t *record); extern uint8_t extract_mod_bits(uint16_t code); @@ -29,15 +35,15 @@ void tap_code_register(uint8_t code, uint8_t mods, uint16_t delay, bool register_tap); void process_tap_code_buffer(void); void tap_string(const char *str); -void keyboard_post_init_keymap(void); + #ifdef TAP_DANCE_ENABLE void td_reset(tap_dance_state_t *state, void *user_data); void em_dash_mins(tap_dance_state_t *state, void *user_data); void ply_nxt_prv(tap_dance_state_t *state, void *user_data); void raise_paste(tap_dance_state_t *state, void *user_data); #endif + void oled_timer_reset(void); -bool oled_task_keymap(void); void anim_frame(uint16_t size, char const action[][size]); void wpm_graph(void); void felix_dog(void); @@ -49,6 +55,11 @@ void render_keylog(void); void render_wpm(void); void render_scan_rate(void); +void keyboard_pre_init_keymap(void); +void keyboard_post_init_keymap(void); +void housekeeping_task_keymap(void); +bool oled_task_keymap(void); + #define KEYLOG_LEN 5 #define PNP TD(PLY_NXT_PRV) #define PSTRSE TD(PASTE_RAISE) diff --git a/jack/oled.c b/jack/oled.c index adaad3d..ec52705 100644 --- a/jack/oled.c +++ b/jack/oled.c @@ -11,7 +11,6 @@ extern OLED_BLOCK_TYPE oled_dirty; void oled_timer_reset(void) { oled_timer = timer_read32(); } __attribute__((weak)) bool oled_task_keymap(void) { return true; } - bool oled_task_user(void) { if (is_keyboard_master()) { if (timer_elapsed32(oled_timer) > 300000) { diff --git a/jack/post_rules.mk b/jack/post_rules.mk index 9880cdb..fb10049 100644 --- a/jack/post_rules.mk +++ b/jack/post_rules.mk @@ -1,3 +1,14 @@ ifeq ($(MCU_SERIES), RP2040) include picosdk_math.mk endif + +ifeq ($(strip $(RP2040_MATH_IN_ROM)), yes) + OPT_DEFS += -DRP2040_MATH_IN_ROM + MCU_LDSCRIPT = RP2040_FLASH_TIMECRIT_ROM_MATH +endif + +ifeq ($(strip $(MOUSE_JIGGLE_ENABLE)), yes) + OPT_DEFS += -DMOUSE_JIGGLE_ENABLE + MOUSEKEY_ENABLE = yes + DEFERRED_EXEC_ENABLE = yes +endif diff --git a/jack/rules.mk b/jack/rules.mk index bd2c377..71ddad7 100644 --- a/jack/rules.mk +++ b/jack/rules.mk @@ -16,44 +16,34 @@ MOUSE_JIGGLE_ENABLE = yes CUSTOM_TAP_CODE_ENABLE = no DEBOUNCE_TYPE = asym_eager_defer_pk AVR_CFLAGS += -mrelax -INTROSPECTION_KEYMAP_C = jack.c +INTROSPECTION_KEYMAP_C = introspection.c -SRC += tapping.c +SRC += $(USER_PATH)/jack.c $(USER_PATH)/tapping.c ifeq ($(strip $(OLED_ENABLE)), yes) - SRC += oled.c + SRC += $(USER_PATH)/oled.c WPM_ENABLE = yes endif ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes) RGB_MATRIX_CUSTOM_USER = yes - SRC += color.c + SRC += $(USER_PATH)/color.c endif ifeq ($(strip $(UNICODE_COMMON)), yes) UNICODE_ENABLE = no - SRC += unicode.c + SRC += $(USER_PATH)/unicode.c endif ifeq ($(strip $(CUSTOM_TAP_CODE_ENABLE)), yes) OPT_DEFS += -DCUSTOM_TAP_CODE_ENABLE - SRC += tap_code.c + SRC += $(USER_PATH)tap_code.c endif ifeq ($(PLATFORM), CHIBIOS) ifeq ($(MCU_SERIES), RP2040) RP2040_MATH_IN_ROM = no + PROGRAM_CMD = doas picotool load $(BUILD_DIR)/$(TARGET).uf2 endif EXTRAFLAGS += -O3 endif - -ifeq ($(strip $(RP2040_MATH_IN_ROM)), yes) - OPT_DEFS += -DRP2040_MATH_IN_ROM - MCU_LDSCRIPT = RP2040_FLASH_TIMECRIT_ROM_MATH -endif - -ifeq ($(strip $(MOUSE_JIGGLE_ENABLE)), yes) - OPT_DEFS += -DMOUSE_JIGGLE_ENABLE - MOUSEKEY_ENABLE = yes - DEFERRED_EXEC_ENABLE = yes -endif diff --git a/keyboards/pseusplit/keymaps/jack/keymap.c b/keyboards/pseusplit/keymaps/jack/keymap.c new file mode 100644 index 0000000..1a9c5cb --- /dev/null +++ b/keyboards/pseusplit/keymaps/jack/keymap.c @@ -0,0 +1,26 @@ +// Copyright 2025 [email protected] +// SPDX-License-Identifier: GPL-3.0-or-later +#include "jack.h" + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_jack( + ___BASE1___, + ___BASE2___, + ___BASE3___, + ___BASE4___ + ), + [_LOWER] = LAYOUT_jack( + ___LOWER1___, + ___LOWER2___, + ___LOWER3___, + ___LOWER4___ + ), + [_RAISE] = LAYOUT_jack( + ___RAISE1___, + ___RAISE2___, + ___RAISE3___, + ___RAISE4___ + ) +}; +// clang-format on diff --git a/keyboards/sweep/keymaps/jack/keymap.c b/keyboards/sweep/keymaps/jack/keymap.c index 135fa17..5f836e8 100644 --- a/keyboards/sweep/keymaps/jack/keymap.c +++ b/keyboards/sweep/keymaps/jack/keymap.c @@ -1,6 +1,7 @@ // Copyright 2025 [email protected] // SPDX-License-Identifier: GPL-2.0-or-later #include "jack.h" +#include "analog.h" #define NUM_ADC_READS 32 @@ -16,13 +17,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ___LOWER1___, ___LOWER2___, ___LOWER3___, - _______, _______, _______, PNP + _______, _______, _______, UPDIR ), [_RAISE] = LAYOUT_jack( ___RAISE1___, ___RAISE2___, ___RAISE3___, - REMOVE, _______, _______, _______ + PNP, _______, _______, _______ ) }; // clang-format on @@ -62,8 +63,8 @@ void housekeeping_task_keymap(void) { total_current_ma += current_reads[i]; total_voltage_mv += voltage_reads[i]; } - int16_t avg_current_ma = (int16_t)(total_current_ma / NUM_ADC_READS); - int16_t avg_voltage_mv = (int16_t)(total_voltage_mv / NUM_ADC_READS); + // int16_t avg_current_ma = (int16_t)(total_current_ma / NUM_ADC_READS); + // int16_t avg_voltage_mv = (int16_t)(total_voltage_mv / NUM_ADC_READS); last_draw = timer_read32(); } } diff --git a/keymaps/crkbd/rules.mk b/keymaps/crkbd/rules.mk index a0d37aa..42387df 100644 --- a/keymaps/crkbd/rules.mk +++ b/keymaps/crkbd/rules.mk @@ -5,6 +5,5 @@ OLED_ENABLE = yes AUDIO_ENABLE = no AUDIO_DRIVER = dac_basic ENCODER_ENABLE = yes -ENCODER_MAP_ENABLE = yes POINTING_DEVICE_ENABLE = no POINTING_DEVICE_DRIVER = pimoroni_trackball diff --git a/keymaps/kyria/rules.mk b/keymaps/kyria/rules.mk index 2694171..cd88dc8 100644 --- a/keymaps/kyria/rules.mk +++ b/keymaps/kyria/rules.mk @@ -1,7 +1,5 @@ CONVERT_TO = blok RGBLIGHT_ENABLE = no RGB_MATRIX_ENABLE = yes -ENCODER_MAP_ENABLE = yes POINTING_DEVICE_ENABLE = yes POINTING_DEVICE_DRIVER = cirque_pinnacle_i2c -PROGRAM_CMD = doas picotool load $(BUILD_DIR)/$(TARGET).uf2 @@ -1,23 +1,21 @@ -### qmk.me -this is a self-contained repository for my personal [qmk](https://github.com/qmk/qmk_firmware) userspace & keyboard code. +## qmk.me +This is a self-contained repository for my personal [QMK](https://github.com/qmk/qmk_firmware) userspace & keyboard code.  ### building -symlinks are used to compile this code in a proper `qmk_firmware` repository. +Symlinks are used to compile this code in a proper `qmk_firmware` repository. eg. ```shell -ln -s ~/qmk.me/jack ~/qmk_firmware/users/jack -ln -s ~/qmk.me/keyboards/relic ~/qmk_firmware/keyboards/relic -echo "users/jack\nkeyboards/relic" >> ~/qmk_firmware/.git/info/exclude +ln -s qmk.me/jack qmk_firmware/users/jack +ln -s qmk.me/keyboards/relic qmk_firmware/keyboards/relic +echo "users/jack\nkeyboards/relic" >> qmk_firmware/.git/info/exclude qmk compile -kb relic -km jack ``` -the official [userspace feature](https://docs.qmk.fm/newbs_external_userspace) -is not used as this repository contains personal keyboards, which are not supported. +The official external [userspace feature](https://docs.qmk.fm/newbs_external_userspace) is not used as this repository contains personal keyboards, which are not supported. ### layout -a simple 34-key layout that makes use of 2 (primary) layers, home-row mods, & combos for many symbols. -mostly used in sway, vim (c, python), & other generic computing tasks. +A simple 34-key layout that makes use of 2 (primary) layers, home-row mods, & combos for many symbols. Mostly used in Sway, Vim (C, Python), & other generic computing tasks.  diff --git a/util/link.sh b/util/link.sh index ba9d147..c0231bf 100755 --- a/util/link.sh +++ b/util/link.sh @@ -26,8 +26,6 @@ link crkbd crkbd link beiwagon boardsource/beiwagon link bully mkh_studio/bully link f60 bioi/f60 -link ferris ferris link kyria splitkb/kyria link relic projectcain/relic link vault35 projectcain/vault35 -link qaz tominabox1/qaz |