aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--jack/introspection.c33
-rw-r--r--jack/jack.c65
-rw-r--r--jack/jack.h15
-rw-r--r--jack/oled.c1
-rw-r--r--jack/post_rules.mk11
-rw-r--r--jack/rules.mk24
-rw-r--r--keyboards/pseusplit/keymaps/jack/keymap.c26
-rw-r--r--keyboards/sweep/keymaps/jack/keymap.c9
-rw-r--r--keymaps/crkbd/rules.mk1
-rw-r--r--keymaps/kyria/rules.mk2
-rw-r--r--readme.md18
-rwxr-xr-xutil/link.sh2
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
diff --git a/readme.md b/readme.md
index c081265..1f6be41 100644
--- a/readme.md
+++ b/readme.md
@@ -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.
![keyboard](https://i.imgur.com/s0dN0JD.jpeg)
### 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.
![layout](img/layout.svg)
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