commit 42fc0e65c572ff1cb258ec750a45d34ee5ba0049
parent 2ef7a462a119dd9365a72092fc5d7a4b5fb04de2
Author: Jack Sangdahl <jack@pngu.org>
Date: Fri, 20 Dec 2024 12:37:07 -0700
Renaming and moving keymaps around
Diffstat:
55 files changed, 1289 insertions(+), 1444 deletions(-)
diff --git a/waffle/autocorrect_data.h b/jack/autocorrect_data.h
diff --git a/waffle/autocorrect_dict.txt b/jack/autocorrect_dict.txt
diff --git a/waffle/color.c b/jack/color.c
diff --git a/waffle/combos.def b/jack/combos.def
diff --git a/waffle/combos.h b/jack/combos.h
diff --git a/jack/config.h b/jack/config.h
@@ -0,0 +1,51 @@
+// Copyright 2024 jack@pngu.org
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#define TAPPING_TERM_PER_KEY
+#define TAPPING_TERM 140
+#define FORCE_NKRO
+#define BOTH_SHIFTS_TURNS_ON_CAPS_WORD
+#define COMBO_TERM 40
+#define NO_ACTION_ONESHOT
+#define UNICODE_SELECTED_MODES UNICODE_MODE_LINUX
+#define ENABLE_COMPILE_KEYCODE
+#undef MANUFACTURER
+#define MANUFACTURER "jacks"
+
+#ifdef OLED_ENABLE
+#define OLED_FONT_H "users/jack/oledfont.h"
+#define OLED_UPDATE_INTERVAL 50
+#define OLED_DISABLE_TIMEOUT
+#endif
+
+#ifdef SPLIT_KEYBOARD
+#define MASTER_RIGHT
+#define SPLIT_MODS_ENABLE
+#define SPLIT_WPM_ENABLE
+#define SPLIT_LAYER_STATE_ENABLE
+#define SPLIT_OLED_ENABLE
+#define SPLIT_LED_STATE_ENABLE
+#define SPLIT_ACTIVITY_ENABLE
+#define SPLIT_TRANSACTION_IDS_USER RPC_ID_USER_KEYLOG_STR
+#endif
+
+#ifdef RGB_MATRIX_ENABLE
+#define RGB_MATRIX_SLEEP
+#define RGB_MATRIX_TIMEOUT 300000
+#undef RGB_MATRIX_DEFAULT_MODE
+#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_ALPHAS_MODS
+#define ENABLE_RGB_MATRIX_ALPHAS_MODS
+#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+#define ENABLE_RGB_MATRIX_RAINDROPS
+#define ENABLE_RGB_MATRIX_FRAMEBUFFER_EFFECTS
+#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+#define ENABLE_RGB_MATRIX_KEYPRESSES
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+#define RGB_MATRIX_KEYPRESSES
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+#endif
diff --git a/waffle/dict.h b/jack/dict.h
diff --git a/jack/jack.c b/jack/jack.c
@@ -0,0 +1,117 @@
+// Copyright 2024 jack@pngu.org
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include "jack.h"
+#include "combos.h"
+
+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),
+};
+
+#if defined(SPLIT_KEYBOARD) && defined(OLED_ENABLE)
+#include "transactions.h"
+extern char keylog_str[KEYLOG_LEN + 1];
+void keylogger_sync(uint8_t initiator2target_buffer_size,
+ const void *initiator2target_buffer,
+ uint8_t target2initiator_buffer_size,
+ void *target2initiator_buffer) {
+ if (initiator2target_buffer_size == 5)
+ memcpy(&keylog_str, initiator2target_buffer, initiator2target_buffer_size);
+}
+
+void housekeeping_task_user(void) {
+ 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)) {
+ needs_sync = true;
+ memcpy(&tmp_keylog, &keylog_str, 5);
+ }
+ if (timer_elapsed32(last_sync) > 250)
+ needs_sync = true;
+ if (needs_sync) {
+ if (transaction_rpc_send(RPC_ID_USER_KEYLOG_STR, 5, &keylog_str))
+ last_sync = timer_read32();
+ }
+ }
+}
+#endif
+
+void keyboard_post_init_user(void) {
+#if defined(SPLIT_KEYBOARD) && defined(OLED_ENABLE)
+ transaction_register_rpc(RPC_ID_USER_KEYLOG_STR, keylogger_sync);
+#endif
+#ifdef RGBLIGHT_ENABLE
+ rgblight_enable_noeeprom();
+ rgblight_sethsv_noeeprom(HSV_CYAN);
+ rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
+#elif RGB_MATRIX_ENABLE
+ rgb_matrix_enable_noeeprom();
+ rgb_matrix_sethsv_noeeprom(HSV_CYAN);
+ rgb_matrix_mode_noeeprom(RGB_MATRIX_SOLID_COLOR);
+#endif
+#ifdef CONSOLE_ENABLE
+ debug_keyboard = true;
+ debug_enable = true;
+ debug_matrix = true;
+ debug_mouse = true;
+#endif
+#ifdef AUTOCORRECT_ENABLE
+ if (!autocorrect_is_enabled())
+ autocorrect_enable();
+#endif
+}
+
+bool shutdown_user(bool jump_to_bootloader) {
+#ifdef OLED_ENABLE
+ oled_render_boot(jump_to_bootloader);
+#endif
+ return true;
+}
+
+#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
+
+#ifdef POINTING_DEVICE_ENABLE
+static bool scrolling = false;
+layer_state_t layer_state_set_user(layer_state_t state) {
+ switch (get_highest_layer(state)) {
+ case _LOWER:
+ scrolling = true;
+#ifdef POINTING_DEVICE_DRIVER_pimoroni_trackball
+ pimoroni_trackball_set_cpi(0.1);
+#else
+ pointing_device_set_cpi(64);
+#endif
+ break;
+ default:
+ if (scrolling) {
+ scrolling = false;
+#ifdef POINTING_DEVICE_DRIVER_pimoroni_trackball
+ pimoroni_trackball_set_cpi(1);
+#else
+ pointing_device_set_cpi(1024);
+#endif
+ }
+ }
+ return state;
+}
+
+report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) {
+ if (scrolling) {
+ mouse_report.h = mouse_report.x;
+ mouse_report.v = -mouse_report.y;
+ mouse_report.x = 0;
+ mouse_report.y = 0;
+ }
+ return mouse_report;
+}
+#endif
diff --git a/jack/jack.h b/jack/jack.h
@@ -0,0 +1,113 @@
+// Copyright 2024 jack@pngu.org
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+#include QMK_KEYBOARD_H
+#ifdef OLED_ENABLE
+#include "oled.h"
+#endif
+
+enum layers { _BASE, _LOWER, _RAISE };
+
+enum tapdances { EM_DASH_MINS, PLY_NXT_PRV, PASTE_RAISE, CBRACKET, SBRACKET };
+
+enum sw_state { NONE, SELECTED, WORD, FIRST_LINE, LINE };
+
+enum custom_keycodes {
+ UPDIR = QK_USER,
+ NUKE,
+ SELWORD,
+ M_JIGGLE,
+ TABLE1,
+ TABLE2,
+ KC_NOMODE,
+ KC_WIDE,
+ KC_SCRIPT,
+ KC_BLOCKS,
+ KC_REGIONAL,
+ KC_AUSSIE,
+ KC_ZALGO,
+ KC_SUPER,
+ RWORD
+};
+
+#ifdef UNICODE_COMMON_ENABLE
+bool process_record_unicode(uint16_t keycode, keyrecord_t *record);
+
+enum unicode_mode {
+ NOMODE,
+ WIDE,
+ SCRIPT,
+ BLOCKS,
+ REGIONAL,
+ AUSSIE,
+ ZALGO,
+ SUPER
+};
+#endif
+
+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);
+
+#define PNP TD(PLY_NXT_PRV)
+#define PSTRSE TD(PASTE_RAISE)
+#define ESCLWR LT(_LOWER, KC_ESC)
+#define LWRSPC LT(_LOWER, KC_SPC)
+#define RSEBSP LT(_RAISE, KC_BSPC)
+#define HRML(k1, k2, k3, k4) LALT_T(k1), LGUI_T(k2), LCTL_T(k3), LSFT_T(k4)
+#define HRMR(k1, k2, k3, k4) RSFT_T(k1), RCTL_T(k2), RGUI_T(k3), RALT_T(k4)
+
+#ifdef RGB_MATRIX_ENABLE
+#define XRGB_TOG RM_TOGG
+#define XRGB_NXT RM_NEXT
+#define XRGB_PRV RM_PREV
+#define XRGB_HUI RM_HUEU
+#define XRGB_HUD RM_HUED
+#define XRGB_SAI RM_SATU
+#define XRGB_SAD RM_SATD
+#define XRGB_VAI RM_VALU
+#define XRGB_VAD RM_VALD
+#elif RGBLIGHT_ENABLE
+#define XRGB_TOG UG_TOGG
+#define XRGB_NXT UG_NEXT
+#define XRGB_PRV UG_PREV
+#define XRGB_HUI UG_HUEU
+#define XRGB_HUD UG_HUED
+#define XRGB_SAI UG_SATU
+#define XRGB_SAD UG_SATD
+#define XRGB_VAI UG_VALU
+#define XRGB_VAD UG_VALD
+#else
+#define XRGB_TOG _______
+#define XRGB_NXT _______
+#define XRGB_PRV _______
+#define XRGB_HUI _______
+#define XRGB_HUD _______
+#define XRGB_SAI _______
+#define XRGB_SAD _______
+#define XRGB_VAI _______
+#define XRGB_VAD _______
+#endif
+
+// clang-format off
+#define ___BASE1___ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P
+#define ___BASE2___ HRML(KC_A, KC_S, KC_D, KC_F), KC_G, KC_H, HRMR(KC_J, KC_K, KC_L, KC_SCLN)
+#define ___BASE3___ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH
+#define ___BASE4___ UPDIR, ESCLWR, KC_SPC, KC_BSPC, PSTRSE, PNP
+
+#define ___LOWER1___ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0
+#define ___LOWER2___ HRML(KC_EXLM, KC_AT, KC_HASH, KC_DLR), KC_PERC, KC_CIRC, HRMR(KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN)
+#define ___LOWER3___ KC_VOLD, KC_TAB, KC_CAPS, SELWORD, KC_GRV, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_VOLU
+#define ___LOWER4___ _______, _______, _______, _______, NUKE, _______
+
+#define ___RAISE1___ XRGB_TOG, XRGB_NXT, XRGB_HUI, XRGB_SAI, XRGB_VAI, KC_NOMODE, KC_SCRIPT, KC_BLOCKS, KC_REGIONAL, QK_MAKE
+#define ___RAISE2___ M_JIGGLE, XRGB_PRV, XRGB_HUD, XRGB_SAD, XRGB_VAD, KC_WIDE, KC_AUSSIE, KC_ZALGO, KC_SUPER, QK_BOOT
+#define ___RAISE3___ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10
+#define ___RAISE4___ _______, RWORD, _______, _______, _______, _______
+// clang-format on
+
+#define LAYOUT_jack_60_ts(...) LAYOUT_60_ansi_tsangan(__VA_ARGS__)
+#define LAYOUT_jack_3x6(...) LAYOUT_split_3x6_3(__VA_ARGS__)
+#define LAYOUT_jack_all(...) LAYOUT_all(__VA_ARGS__)
+#define LAYOUT_jack(...) LAYOUT(__VA_ARGS__)
diff --git a/jack/oled.c b/jack/oled.c
@@ -0,0 +1,237 @@
+// Copyright 2024 jack@pngu.org
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include "oled.h"
+#include "jack.h"
+
+uint32_t oled_timer = 0;
+char keylog_str[KEYLOG_LEN + 1] = {0};
+
+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) {
+ oled_off();
+ return false;
+ } else
+ oled_on();
+ }
+ oled_task_keymap();
+ return false;
+}
+
+void anim_frame(uint16_t size, char const action[][size]) {
+ static uint8_t current_frame = 0;
+ current_frame = (current_frame + 1) & 1;
+ oled_write_raw(action[current_frame], size);
+}
+
+#ifdef OLED_DISPLAY_128X64
+void wpm_graph(void) {
+ static uint8_t height = OLED_DISPLAY_HEIGHT - 1, vert_count = 0,
+ max_wpm = 160;
+ static uint16_t graph_timer = 0;
+ if (timer_elapsed(graph_timer) > 100) {
+ height = 63 - ((get_current_wpm() / (float)max_wpm) * 63);
+ for (uint8_t i = 0; i <= 1; i++)
+ oled_write_pixel(3, height + i, true);
+ if (vert_count == 3) {
+ vert_count = 0;
+ while (height <= 63) {
+ oled_write_pixel(3, height, true);
+ height++;
+ }
+ } else {
+ for (uint8_t i = 63; i > height; i--)
+ if (!(i % 3))
+ oled_write_pixel(3, i, true);
+ vert_count++;
+ }
+ for (uint16_t y = 0; y < 8; y++) {
+ for (uint16_t x = 124; x > 0; x--) {
+ uint16_t i = y * OLED_DISPLAY_WIDTH + x;
+ oled_buffer[i] = oled_buffer[i - 1];
+ oled_dirty |= ((OLED_BLOCK_TYPE)1 << (i / OLED_BLOCK_SIZE));
+ }
+ }
+ graph_timer = timer_read();
+ }
+}
+#endif
+
+void felix_dog(void) {
+ static uint16_t felix_anim_timer = 0;
+ bool shifted =
+ get_mods() & MOD_MASK_SHIFT || host_keyboard_led_state().caps_lock;
+ if (timer_elapsed(felix_anim_timer) > 200) {
+ felix_anim_timer = timer_read();
+ if (shifted || is_caps_word_on())
+ anim_frame(96, felix_bark);
+ else if (get_mods() & MOD_MASK_CAG)
+ anim_frame(96, felix_sneak);
+ else if (get_current_wpm() > 60)
+ anim_frame(96, felix_run);
+ else if (get_current_wpm() && get_current_wpm() <= 60)
+ anim_frame(96, felix_walk);
+ else
+ anim_frame(96, felix_sit);
+ }
+}
+
+void layer_anim(void) {
+ static uint16_t layer_anim_timer = 0;
+ if (timer_elapsed(layer_anim_timer) > 200) {
+ layer_anim_timer = timer_read();
+ switch (get_highest_layer(layer_state)) {
+ case _BASE:
+ anim_frame(520, tap_num);
+ break;
+ case _LOWER:
+ anim_frame(650, tap_sym);
+ break;
+ case _RAISE:
+ anim_frame(520, tap_sys);
+ break;
+ }
+ }
+}
+
+void layer_status(void) {
+ static const char PROGMEM base[] = {0x20, 0x94, 0x95, 0x96, 0x20,
+ 0x20, 0xb4, 0xb5, 0xb6, 0x20,
+ 0x20, 0xd4, 0xd5, 0xd6, 0x20};
+ static const char PROGMEM lower[] = {0x20, 0x9a, 0x9b, 0x9c, 0x20,
+ 0x20, 0xba, 0xbb, 0xbc, 0x20,
+ 0x20, 0xda, 0xdb, 0xdc, 0x20};
+ static const char PROGMEM raise[] = {0x20, 0x97, 0x98, 0x99, 0x20,
+ 0x20, 0xb7, 0xb8, 0xb9, 0x20,
+ 0x20, 0xd7, 0xd8, 0xd9, 0x20};
+ switch (get_highest_layer(layer_state)) {
+ case _LOWER:
+ oled_write(lower, false);
+ break;
+ case _RAISE:
+ oled_write(raise, false);
+ break;
+ default:
+ oled_write(base, false);
+ }
+}
+
+void render_mod_status(void) {
+ const uint8_t mods = get_mods();
+ static const char PROGMEM
+ gui_off_1[] = {0x85, 0x86},
+ gui_off_2[] = {0xa5, 0xa6}, gui_on_1[] = {0x8d, 0x8e},
+ gui_on_2[] = {0xad, 0xae}, alt_off_1[] = {0x87, 0x88},
+ alt_off_2[] = {0xa7, 0xa8}, alt_on_1[] = {0x8f, 0x90},
+ alt_on_2[] = {0xaf, 0xb0}, ctrl_off_1[] = {0x89, 0x8a},
+ ctrl_off_2[] = {0xa9, 0xaa}, ctrl_on_1[] = {0x91, 0x92},
+ ctrl_on_2[] = {0xb1, 0xb2}, shift_off_1[] = {0x8b, 0x8c},
+ shift_off_2[] = {0xab, 0xac}, shift_on_1[] = {0xcd, 0xce},
+ shift_on_2[] = {0xcf, 0xd0}, off_off_1[] = {0xc5}, off_off_2[] = {0xc6},
+ on_off_1[] = {0xc7}, on_off_2[] = {0xc8}, off_on_1[] = {0xc9},
+ off_on_2[] = {0xca}, on_on_1[] = {0xcb}, on_on_2[] = {0xcc};
+
+ oled_write(mods & MOD_MASK_GUI ? gui_on_1 : gui_off_1, false);
+ if ((mods & MOD_MASK_GUI) && (mods & MOD_MASK_ALT))
+ oled_write(on_on_1, false);
+ else if (mods & MOD_MASK_GUI)
+ oled_write(on_off_1, false);
+ else if (mods & MOD_MASK_ALT)
+ oled_write(off_on_1, false);
+ else
+ oled_write(off_off_1, false);
+ oled_write(mods & MOD_MASK_ALT ? alt_on_1 : alt_off_1, false);
+ oled_write(mods & MOD_MASK_GUI ? gui_on_2 : gui_off_2, false);
+ if ((mods & MOD_MASK_GUI) && (mods & MOD_MASK_ALT))
+ oled_write(on_on_2, false);
+ else if (mods & MOD_MASK_GUI)
+ oled_write(on_off_2, false);
+ else if (mods & MOD_MASK_ALT)
+ oled_write(off_on_2, false);
+ else
+ oled_write(off_off_2, false);
+ oled_write(mods & MOD_MASK_ALT ? alt_on_2 : alt_off_2, false);
+ oled_write(mods & MOD_MASK_CTRL ? ctrl_on_1 : ctrl_off_1, false);
+ if ((mods & MOD_MASK_CTRL) && (mods & MOD_MASK_SHIFT))
+ oled_write(on_on_1, false);
+ else if (mods & MOD_MASK_CTRL)
+ oled_write(on_off_1, false);
+ else if (mods & MOD_MASK_SHIFT)
+ oled_write(off_on_1, false);
+ else
+ oled_write(off_off_1, false);
+ oled_write(mods & MOD_MASK_SHIFT ? shift_on_1 : shift_off_1, false);
+ oled_write(mods & MOD_MASK_CTRL ? ctrl_on_2 : ctrl_off_2, false);
+ if ((mods & MOD_MASK_CTRL) && (mods & MOD_MASK_SHIFT))
+ oled_write(on_on_2, false);
+ else if (mods & MOD_MASK_CTRL)
+ oled_write(on_off_2, false);
+ else if (mods & MOD_MASK_SHIFT)
+ oled_write(off_on_2, false);
+ else
+ oled_write(off_off_2, false);
+ oled_write(mods & MOD_MASK_SHIFT ? shift_on_2 : shift_off_2, false);
+}
+
+void add_keylog(uint16_t keycode, keyrecord_t *record) {
+ if (IS_QK_MOD_TAP(keycode))
+ keycode =
+ record->tap.count
+ ? keycode_config(QK_MOD_TAP_GET_TAP_KEYCODE(keycode))
+ : keycode_config(0xE0 + biton(QK_MOD_TAP_GET_MODS(keycode) & 0xF) +
+ biton(QK_MOD_TAP_GET_MODS(keycode) & 0x10));
+ else if (IS_QK_LAYER_TAP(keycode) && (record->tap.count))
+ keycode = keycode_config(QK_LAYER_TAP_GET_TAP_KEYCODE(keycode));
+ else if (IS_QK_MODS(keycode))
+ keycode = keycode_config(QK_MODS_GET_BASIC_KEYCODE(keycode));
+ else if (IS_QK_BASIC(keycode))
+ keycode = keycode_config(keycode);
+ if ((keycode == KC_BSPC) && mod_config(get_mods()) & MOD_MASK_CTRL) {
+ memset(keylog_str, ' ', KEYLOG_LEN);
+ keylog_str[KEYLOG_LEN] = '\0';
+ return;
+ }
+ char code = 0;
+ if (keycode < ARRAY_SIZE(code_to_name))
+ code = pgm_read_byte(&code_to_name[keycode]);
+ if (code) {
+ memmove(keylog_str, keylog_str + 1, KEYLOG_LEN - 1);
+ keylog_str[KEYLOG_LEN - 1] = code;
+ }
+}
+
+void render_keylog(void) {
+ oled_write(PSTR("KLG: "), false);
+ oled_write_ln(keylog_str, false);
+}
+
+void render_wpm(void) {
+ oled_write(PSTR("WPM: "), false);
+ oled_write_ln(get_u8_str(get_current_wpm(), ' '), false);
+}
+
+#ifdef DEBUG_MATRIX_SCAN_RATE
+void render_scan_rate(void) {
+ oled_write(PSTR("MSR: "), false);
+ oled_write_ln(get_u16_str(get_matrix_scan_rate(), ' '), false);
+}
+#endif
+
+void oled_render_boot(bool jump_to_bootloader) {
+ oled_clear();
+ static const char PROGMEM qmk_logo[16] = {0x80, 0x81, 0x82, 0x83, 0x84,
+ 0xA0, 0xA1, 0xA2, 0xA3, 0xA4,
+ 0xC0, 0xC1, 0xC2, 0xC3, 0xC4};
+ oled_write(qmk_logo, false);
+ oled_set_cursor(0, 4);
+ oled_write(qmk_logo, false);
+ oled_set_cursor(0, 8);
+ oled_write(qmk_logo, false);
+ oled_set_cursor(0, 12);
+ oled_write(qmk_logo, false);
+ oled_render_dirty(true);
+}
diff --git a/waffle/oled.h b/jack/oled.h
diff --git a/waffle/oledfont.h b/jack/oledfont.h
diff --git a/waffle/raw.py b/jack/raw.py
diff --git a/jack/rules.mk b/jack/rules.mk
@@ -0,0 +1,50 @@
+LTO_ENABLE = yes
+TOP_SYMBOLS = yes
+NRKO_ENABLE = yes
+COMBO_ENABLE = yes
+MAGIC_ENABLE = no
+UNICODE_COMMON = yes
+EXTRAKEY_ENABLE = yes
+BOOTMAGIC_ENABLE = yes
+CAPS_WORD_ENABLE = yes
+TAP_DANCE_ENABLE = yes
+AUTOCORRECT_ENABLE = yes
+MOUSE_JIGGLE_ENABLE = yes
+DEBOUNCE_TYPE = asym_eager_defer_pk
+AVR_CFLAGS += -mrelax
+INTROSPECTION_KEYMAP_C = jack.c
+
+SRC += tapping.c
+
+ifeq ($(strip $(OLED_ENABLE)), yes)
+ SRC += oled.c
+ WPM_ENABLE = yes
+endif
+
+ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes)
+ SRC += color.c
+endif
+
+ifeq ($(strip $(UNICODE_COMMON)), yes)
+ UNICODE_ENABLE = no
+ SRC += unicode.c
+endif
+
+ifeq ($(PLATFORM), CHIBIOS)
+ RANDWORD = yes
+ EXTRAFLAGS += -Os
+endif
+
+ifneq ($(findstring Gentoo, $(shell arm-none-eabi-gcc --version)),)
+ EXTRAFLAGS += -U_FORTIFY_SOURCE
+endif
+
+ifeq ($(strip $(RANDWORD)), yes)
+ OPT_DEFS += -DRANDWORD
+endif
+
+ifeq ($(strip $(MOUSE_JIGGLE_ENABLE)), yes)
+ OPT_DEFS += -DMOUSE_JIGGLE_ENABLE
+ MOUSEKEY_ENABLE = yes
+ DEFERRED_EXEC_ENABLE = yes
+endif
diff --git a/jack/tapping.c b/jack/tapping.c
@@ -0,0 +1,200 @@
+// Copyright 2024 jack@pngu.org
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include "jack.h"
+#ifdef RANDWORD
+#include "dict.h"
+uint16_t word = 0;
+#endif
+
+#define INTERCEPT_MOD_TAP(mod, keycode) \
+ case mod(keycode): \
+ if (record->tap.count && record->event.pressed) { \
+ tap_code16(keycode); \
+ return false; \
+ } \
+ break;
+
+static uint8_t select_word_state = NONE;
+
+bool process_select_word(uint16_t keycode, keyrecord_t *record) {
+ if (keycode == KC_LSFT || keycode == KC_RSFT)
+ return true;
+ if (keycode == SELWORD && record->event.pressed) {
+ const bool shifted = get_mods() & MOD_MASK_SHIFT;
+ if (!shifted) {
+ set_mods(MOD_BIT(KC_LCTL));
+ if (select_word_state == NONE) {
+ send_keyboard_report();
+ tap_code(KC_RGHT);
+ tap_code(KC_LEFT);
+ }
+ register_mods(MOD_BIT(KC_LSFT));
+ register_code(KC_RGHT);
+ select_word_state = WORD;
+ } else {
+ if (select_word_state == NONE) {
+ clear_mods();
+ send_keyboard_report();
+ tap_code(KC_HOME);
+ register_mods(MOD_BIT(KC_LSFT));
+ tap_code(KC_END);
+ set_mods(get_mods());
+ select_word_state = FIRST_LINE;
+ } else {
+ register_code(KC_DOWN);
+ select_word_state = LINE;
+ }
+ }
+ return false;
+ }
+ switch (select_word_state) {
+ case WORD:
+ unregister_code(KC_RGHT);
+ unregister_mods(MOD_BIT(KC_LSFT) | MOD_BIT(KC_LCTL));
+ select_word_state = SELECTED;
+ break;
+ case FIRST_LINE:
+ select_word_state = SELECTED;
+ break;
+ case LINE:
+ unregister_code(KC_DOWN);
+ select_word_state = SELECTED;
+ break;
+ case SELECTED:
+ if (keycode == KC_ESC) {
+ tap_code(KC_RGHT);
+ select_word_state = NONE;
+ return false;
+ }
+ default:
+ select_word_state = NONE;
+ }
+ return true;
+}
+
+uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case LWRSPC:
+ case ESCLWR:
+ case RSEBSP:
+ return TAPPING_TERM - 40;
+ case TD(EM_DASH_MINS):
+ case TD(PLY_NXT_PRV):
+ case TD(CBRACKET):
+ case TD(SBRACKET):
+ return TAPPING_TERM + 60;
+ default:
+ return TAPPING_TERM;
+ }
+}
+
+void td_reset(tap_dance_state_t *state, void *user_data) {
+ clear_keyboard();
+ layer_clear();
+}
+
+void em_dash_mins(tap_dance_state_t *state, void *user_data) {
+ switch (state->count) {
+ case 3:
+#ifdef UNICODE_COMMON_ENABLE
+ register_unicode(0x2014); // —
+#endif
+ break;
+ case 2:
+ tap_code(KC_MINS), tap_code(KC_MINS);
+ break;
+ default:
+ tap_code(KC_MINS);
+ }
+}
+
+void ply_nxt_prv(tap_dance_state_t *state, void *user_data) {
+ switch (state->count) {
+ case 1:
+ tap_code(KC_MPLY);
+ break;
+ case 2:
+ tap_code(KC_MNXT);
+ break;
+ case 3:
+ tap_code(KC_MPRV);
+ break;
+ }
+}
+
+void raise_paste(tap_dance_state_t *state, void *user_data) {
+ if (state->pressed && !state->interrupted)
+ layer_on(_RAISE);
+ else if (state->count == 1)
+ tap_code16(C(S(KC_V)));
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+#ifdef UNICODE_COMMON_ENABLE
+ if (!process_record_unicode(keycode, record))
+ return false;
+#endif
+ if (!process_select_word(keycode, record))
+ return false;
+#ifdef OLED_ENABLE
+ if (record->event.pressed) {
+ oled_timer_reset();
+ add_keylog(keycode, record);
+ }
+#endif
+#ifdef MOUSE_JIGGLE_ENABLE
+ if (record->event.pressed) {
+ static deferred_token token = INVALID_DEFERRED_TOKEN;
+ static report_mouse_t report = {0};
+ if (token) {
+ cancel_deferred_exec(token);
+ token = INVALID_DEFERRED_TOKEN;
+ report = (report_mouse_t){};
+ host_mouse_send(&report);
+ } else if (keycode == M_JIGGLE) {
+ uint32_t jiggle_callback(uint32_t trigger_time, void *cb_arg) {
+ static const int8_t deltas[32] = {
+ 0, -1, -2, -2, -3, -3, -4, -4, -4, -4, -3, -3, -2, -2, -1, 0,
+ 0, 1, 2, 2, 3, 3, 4, 4, 4, 4, 3, 3, 2, 2, 1, 0};
+ static uint8_t phase = 0;
+ report.x = deltas[phase];
+ report.y = deltas[(phase + 8) & 31];
+ phase = (phase + 1) & 31;
+ host_mouse_send(&report);
+ return 16;
+ }
+ token = defer_exec(1, jiggle_callback, NULL);
+ }
+ }
+#endif
+ switch (keycode) {
+ case UPDIR:
+ if (record->event.pressed)
+ SEND_STRING("../");
+ break;
+ case NUKE:
+ if (record->event.pressed) {
+ tap_code16(C(KC_A));
+ SEND_STRING("\b```suggestion\n```");
+ }
+ break;
+ INTERCEPT_MOD_TAP(LALT_T, KC_EXLM)
+ INTERCEPT_MOD_TAP(LGUI_T, KC_AT)
+ INTERCEPT_MOD_TAP(LCTL_T, KC_HASH)
+ INTERCEPT_MOD_TAP(LSFT_T, KC_DLR)
+ INTERCEPT_MOD_TAP(RSFT_T, KC_AMPR)
+ INTERCEPT_MOD_TAP(RCTL_T, KC_ASTR)
+ INTERCEPT_MOD_TAP(RGUI_T, KC_LPRN)
+ INTERCEPT_MOD_TAP(RALT_T, KC_RPRN)
+ case RWORD:
+#ifdef RANDWORD
+ word = rand() % NUM_WORDS;
+ if (record->event.pressed) {
+ send_string(dict[word]);
+ tap_code(KC_SPC);
+ }
+#endif
+ break;
+ }
+ return true;
+}
diff --git a/jack/unicode.c b/jack/unicode.c
@@ -0,0 +1,280 @@
+// Copyright 2024 jack@pngu.org
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include "jack.h"
+
+uint8_t typing_mode = NOMODE;
+typedef uint32_t (*translator_function_t)(bool is_shifted, uint32_t keycode);
+
+void tap_unicode_glyph_nomods(uint32_t glyph) {
+ uint8_t temp_mod = get_mods();
+ clear_mods();
+ register_unicode(glyph);
+ set_mods(temp_mod);
+}
+
+void tap_code16_nomods(uint16_t kc) {
+ uint8_t temp_mod = get_mods();
+ clear_mods();
+ tap_code16(kc);
+ set_mods(temp_mod);
+}
+
+#define DEFINE_UNICODE_RANGE_TRANSLATOR(translator_name, lower_alpha, \
+ upper_alpha, zero_glyph, number_one, \
+ space_glyph) \
+ static inline uint32_t translator_name(bool is_shifted, uint32_t keycode) { \
+ switch (keycode) { \
+ case KC_A ... KC_Z: \
+ return (is_shifted ? upper_alpha : lower_alpha) + keycode - KC_A; \
+ case KC_0: \
+ return zero_glyph; \
+ case KC_1 ... KC_9: \
+ return (number_one + keycode - KC_1); \
+ case KC_SPACE: \
+ return space_glyph; \
+ } \
+ return keycode; \
+ }
+
+#define DEFINE_UNICODE_LUT_TRANSLATOR(translator_name, ...) \
+ static inline uint32_t translator_name(bool is_shifted, uint32_t keycode) { \
+ static const uint32_t translation[] = {__VA_ARGS__}; \
+ uint32_t ret = keycode; \
+ if ((keycode - KC_A) < ARRAY_SIZE(translation)) \
+ ret = translation[keycode - KC_A]; \
+ return ret; \
+ }
+
+bool process_record_glyph_replacement(uint16_t keycode, keyrecord_t *record,
+ translator_function_t translator) {
+ uint8_t temp_mod = get_mods();
+ bool is_shifted = (temp_mod)&MOD_MASK_SHIFT;
+ if (((temp_mod) & (MOD_MASK_CTRL | MOD_MASK_ALT | MOD_MASK_GUI)) == 0) {
+ if (KC_A <= keycode && keycode <= KC_Z) {
+ if (record->event.pressed)
+ tap_unicode_glyph_nomods(translator(is_shifted, keycode));
+ return false;
+ } else if (KC_1 <= keycode && keycode <= KC_0) {
+ if (is_shifted)
+ return true;
+ if (record->event.pressed)
+ register_unicode(translator(is_shifted, keycode));
+ return false;
+ } else if (keycode == KC_SPACE) {
+ if (record->event.pressed)
+ register_unicode(translator(is_shifted, keycode));
+ return false;
+ }
+ }
+ return true;
+}
+
+DEFINE_UNICODE_RANGE_TRANSLATOR(unicode_range_translator_wide, 0xFF41, 0xFF21,
+ 0xFF10, 0xFF11, 0x2003);
+DEFINE_UNICODE_RANGE_TRANSLATOR(unicode_range_translator_script, 0x1D4EA,
+ 0x1D4D0, 0x1D7CE, 0x1D7C1, 0x2002);
+DEFINE_UNICODE_RANGE_TRANSLATOR(unicode_range_translator_boxes, 0x1F170,
+ 0x1F170, '0', '1', 0x2002);
+DEFINE_UNICODE_RANGE_TRANSLATOR(unicode_range_translator_regional, 0x1F1E6,
+ 0x1F1E6, '0', '1', 0x2003);
+
+DEFINE_UNICODE_LUT_TRANSLATOR(unicode_lut_translator_aussie,
+ 0x0250, // a
+ 'q', // b
+ 0x0254, // c
+ 'p', // d
+ 0x01DD, // e
+ 0x025F, // f
+ 0x0183, // g
+ 0x0265, // h
+ 0x1D09, // i
+ 0x027E, // j
+ 0x029E, // k
+ 'l', // l
+ 0x026F, // m
+ 'u', // n
+ 'o', // o
+ 'd', // p
+ 'b', // q
+ 0x0279, // r
+ 's', // s
+ 0x0287, // t
+ 'n', // u
+ 0x028C, // v
+ 0x028D, // w
+ 0x2717, // x
+ 0x028E, // y
+ 'z', // z
+ 0x0269, // 1
+ 0x3139, // 2
+ 0x0190, // 3
+ 0x3123, // 4
+ 0x03DB, // 5
+ '9', // 6
+ 0x3125, // 7
+ '8', // 8
+ '6', // 9
+ '0' // 0
+);
+
+DEFINE_UNICODE_LUT_TRANSLATOR(unicode_lut_translator_super,
+ 0x1D43, // a
+ 0x1D47, // b
+ 0x1D9C, // c
+ 0x1D48, // d
+ 0x1D49, // e
+ 0x1DA0, // f
+ 0x1D4D, // g
+ 0x02B0, // h
+ 0x2071, // i
+ 0x02B2, // j
+ 0x1D4F, // k
+ 0x02E1, // l
+ 0x1D50, // m
+ 0x207F, // n
+ 0x1D52, // o
+ 0x1D56, // p
+ 0x06F9, // q
+ 0x02B3, // r
+ 0x02E2, // s
+ 0x1D57, // t
+ 0x1D58, // u
+ 0x1D5B, // v
+ 0x02B7, // w
+ 0x02E3, // x
+ 0x02B8, // y
+ 0x1DBB, // z
+ 0x00B9, // 1
+ 0x00B2, // 2
+ 0x00B3, // 3
+ 0x2074, // 4
+ 0x2075, // 5
+ 0x2076, // 6
+ 0x2077, // 7
+ 0x2078, // 8
+ 0x2079, // 9
+ 0x2070 // 0
+);
+
+bool process_record_aussie(uint16_t keycode, keyrecord_t *record) {
+ bool is_shifted = (get_mods()) & MOD_MASK_SHIFT;
+ if ((KC_A <= keycode) && (keycode <= KC_0)) {
+ if (record->event.pressed)
+ if (!process_record_glyph_replacement(keycode, record,
+ unicode_lut_translator_aussie)) {
+ tap_code16_nomods(KC_LEFT);
+ return false;
+ }
+ } else if (record->event.pressed && keycode == KC_SPACE) {
+ tap_code16_nomods(KC_SPACE);
+ tap_code16_nomods(KC_LEFT);
+ return false;
+ } else if (record->event.pressed && keycode == KC_ENTER) {
+ tap_code16_nomods(KC_END);
+ tap_code16_nomods(KC_ENTER);
+ return false;
+ } else if (record->event.pressed && keycode == KC_HOME) {
+ tap_code16_nomods(KC_END);
+ return false;
+ } else if (record->event.pressed && keycode == KC_END) {
+ tap_code16_nomods(KC_HOME);
+ return false;
+ } else if (record->event.pressed && keycode == KC_BSPC) {
+ tap_code16_nomods(KC_DEL);
+ return false;
+ } else if (record->event.pressed && keycode == KC_DEL) {
+ tap_code16_nomods(KC_BSPC);
+ return false;
+ } else if (record->event.pressed && keycode == KC_QUOT) {
+ tap_unicode_glyph_nomods(is_shifted ? 0x201E : 0x201A);
+ tap_code16_nomods(KC_LEFT);
+ return false;
+ } else if (record->event.pressed && keycode == KC_COMMA) {
+ tap_unicode_glyph_nomods(is_shifted ? '<' : 0x2018);
+ tap_code16_nomods(KC_LEFT);
+ return false;
+ } else if (record->event.pressed && keycode == KC_DOT) {
+ tap_unicode_glyph_nomods(is_shifted ? '>' : 0x02D9);
+ tap_code16_nomods(KC_LEFT);
+ return false;
+ } else if (record->event.pressed && keycode == KC_SLASH) {
+ tap_unicode_glyph_nomods(is_shifted ? 0x00BF : '/');
+ tap_code16_nomods(KC_LEFT);
+ return false;
+ }
+ return true;
+}
+
+bool process_record_zalgo(uint16_t keycode, keyrecord_t *record) {
+ if ((KC_A <= keycode) && (keycode <= KC_0)) {
+ if (record->event.pressed) {
+ tap_code16_nomods(keycode);
+ int num = (rand() % (8 + 1 - 2)) + 2;
+ for (int i = 0; i < num; i++) {
+ uint16_t hex = (rand() % (0x036F + 1 - 0x0300)) + 0x0300;
+ register_unicode(hex);
+ }
+ return false;
+ }
+ }
+ return true;
+}
+
+bool process_record_unicode(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case TABLE1:
+ if (record->event.pressed) {
+ send_unicode_string("┬──┬ ノ( ゜-゜ノ)");
+ }
+ break;
+ case TABLE2:
+ if (record->event.pressed) {
+ send_unicode_string("(╯°□°)╯︵┻━┻");
+ }
+ break;
+ case KC_NOMODE ... KC_SUPER:
+ if (record->event.pressed) {
+ if (typing_mode != keycode - KC_NOMODE)
+ typing_mode = keycode - KC_NOMODE;
+ else
+ typing_mode = NOMODE;
+ }
+ break;
+ }
+ if (((get_mods()) & ~MOD_MASK_SHIFT) != 0)
+ return true;
+ if (((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) ||
+ (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) &&
+ record->tap.count)
+ keycode &= 0xFF;
+ if (typing_mode == WIDE) {
+ if (((KC_A <= keycode) && (keycode <= KC_0)) || keycode == KC_SPACE)
+ return process_record_glyph_replacement(keycode, record,
+ unicode_range_translator_wide);
+ } else if (typing_mode == SCRIPT) {
+ if (((KC_A <= keycode) && (keycode <= KC_0)) || keycode == KC_SPACE)
+ return process_record_glyph_replacement(keycode, record,
+ unicode_range_translator_script);
+ } else if (typing_mode == BLOCKS) {
+ if (((KC_A <= keycode) && (keycode <= KC_0)) || keycode == KC_SPACE)
+ return process_record_glyph_replacement(keycode, record,
+ unicode_range_translator_boxes);
+ } else if (typing_mode == REGIONAL) {
+ if (((KC_A <= keycode) && (keycode <= KC_0)) || keycode == KC_SPACE) {
+ if (!process_record_glyph_replacement(
+ keycode, record, unicode_range_translator_regional)) {
+ wait_us(500);
+ tap_unicode_glyph_nomods(0x200C);
+ return false;
+ }
+ }
+ } else if (typing_mode == SUPER) {
+ if (((KC_A <= keycode) && (keycode <= KC_0)))
+ return process_record_glyph_replacement(keycode, record,
+ unicode_lut_translator_super);
+ } else if (typing_mode == AUSSIE)
+ return process_record_aussie(keycode, record);
+ else if (typing_mode == ZALGO)
+ return process_record_zalgo(keycode, record);
+ return true;
+}
diff --git a/keyboards/grumpy/keymaps/jack/keymap.c b/keyboards/grumpy/keymaps/jack/keymap.c
@@ -0,0 +1,13 @@
+// Copyright 2024 jack@pngu.org
+// 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(
+ KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O,
+ KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH
+ )
+};
+// clang-format on
diff --git a/keyboards/grumpy/keymaps/waffle/keymap.c b/keyboards/grumpy/keymaps/waffle/keymap.c
@@ -1,13 +0,0 @@
-// Copyright 2024 jack@pngu.org
-// SPDX-License-Identifier: GPL-3.0-or-later
-#include "waffle.h"
-
-// clang-format off
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_BASE] = LAYOUT(
- KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O,
- KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
- KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH
- )
-};
-// clang-format on
diff --git a/keyboards/leftover30/keymaps/jack/keymap.c b/keyboards/leftover30/keymaps/jack/keymap.c
@@ -0,0 +1,20 @@
+// Copyright 2024 jack@pngu.org
+// 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___, KC_BSPC,
+ ___BASE2___,
+ ___BASE3___,
+ KC_MPLY, XXXXXXX, LWRSPC, C(S(KC_V)), RWORD
+ ),
+ [_LOWER] = LAYOUT_jack(
+ ___LOWER1___, KC_DEL,
+ ___LOWER2___,
+ ___LOWER3___,
+ KC_MUTE, _______, _______, RGB_MOD, RGB_TOG
+ )
+};
+// clang-format on
diff --git a/keyboards/leftover30/keymaps/waffle/keymap.c b/keyboards/leftover30/keymaps/waffle/keymap.c
@@ -1,20 +0,0 @@
-// Copyright 2024 jack@pngu.org
-// SPDX-License-Identifier: GPL-3.0-or-later
-#include "waffle.h"
-
-// clang-format off
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_BASE] = LAYOUT_waffle(
- ___BASE1___, KC_BSPC,
- ___BASE2___,
- ___BASE3___,
- KC_MPLY, KC_NO, LWRSPC, C(S(KC_V)), RWORD
- ),
- [_LOWER] = LAYOUT_waffle(
- ___LOWER1___, KC_DEL,
- ___LOWER2___,
- ___LOWER3___,
- KC_MUTE, _______, _______, RGB_MOD, RGB_TOG
- )
-};
-// clang-format on
diff --git a/keyboards/locus/keymaps/jack/keymap.c b/keyboards/locus/keymaps/jack/keymap.c
@@ -0,0 +1,26 @@
+// Copyright 2024 jack@pngu.org
+// 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___,
+ UPDIR, KC_ESC, LWRSPC, RSEBSP, C(S(KC_V)), PNP
+ ),
+ [_LOWER] = LAYOUT_jack(
+ _______, ___LOWER1___, _______,
+ _______, ___LOWER2___,
+ _______, ___LOWER3___,
+ _______, _______, _______, _______, _______, _______
+ ),
+ [_RAISE] = LAYOUT_jack(
+ _______, ___RAISE1___, _______,
+ _______, ___RAISE2___,
+ _______, ___RAISE3___,
+ _______, _______, _______, _______, _______, _______
+ )
+};
+// clang-format on
diff --git a/keyboards/locus/keymaps/waffle/keymap.c b/keyboards/locus/keymaps/waffle/keymap.c
@@ -1,26 +0,0 @@
-// Copyright 2024 jack@pngu.org
-// SPDX-License-Identifier: GPL-3.0-or-later
-#include "waffle.h"
-
-// clang-format off
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_BASE] = LAYOUT_waffle(
- _______, ___BASE1___, _______,
- _______, ___BASE2___,
- _______, ___BASE3___,
- UPDIR, KC_ESC, LWRSPC, RSEBSP, C(S(KC_V)), PNP
- ),
- [_LOWER] = LAYOUT_waffle(
- _______, ___LOWER1___, _______,
- _______, ___LOWER2___,
- _______, ___LOWER3___,
- _______, _______, _______, _______, _______, _______
- ),
- [_RAISE] = LAYOUT_waffle(
- _______, ___RAISE1___, _______,
- _______, ___RAISE2___,
- _______, ___RAISE3___,
- _______, _______, _______, _______, _______, _______
- )
-};
-// clang-format on
diff --git a/keyboards/relic/keyboard.json b/keyboards/relic/keyboard.json
@@ -1,60 +0,0 @@
-{
- "keyboard_name": "relic",
- "manufacturer": "jacks",
- "maintainer": "pngu.org",
- "processor": "atmega32u4",
- "bootloader": "atmel-dfu",
- "diode_direction": "COL2ROW",
- "matrix_pins": {
- "cols": ["D3", "D5", "B0", "F0", "F1", "F4", "F5", "F6", "C7", "C6", "B4"],
- "rows": ["D7", "B2", "B6", "B5"]
- },
- "usb": {
- "vid": "0x6A73",
- "pid": "0x7263",
- "device_version": "1.0.0"
- },
- "layouts": {
- "LAYOUT": {
- "layout": [
- {"label": "q", "matrix": [0, 0], "x": 0, "y": 0},
- {"label": "w", "matrix": [0, 1], "x": 1, "y": 0},
- {"label": "e", "matrix": [0, 2], "x": 2, "y": 0},
- {"label": "r", "matrix": [0, 3], "x": 3, "y": 0},
- {"label": "t", "matrix": [0, 4], "x": 4, "y": 0},
- {"label": "y", "matrix": [0, 5], "x": 6, "y": 0},
- {"label": "u", "matrix": [0, 6], "x": 7, "y": 0},
- {"label": "i", "matrix": [0, 7], "x": 8, "y": 0},
- {"label": "o", "matrix": [0, 8], "x": 9, "y": 0},
- {"label": "p", "matrix": [0, 9], "x": 10, "y": 0},
- {"label": "", "matrix": [0, 10], "x": 11, "y": 0},
- {"label": "a", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.25},
- {"label": "s", "matrix": [1, 1], "x": 1.25, "y": 1},
- {"label": "d", "matrix": [1, 2], "x": 2.25, "y": 1},
- {"label": "f", "matrix": [1, 3], "x": 3.25, "y": 1},
- {"label": "g", "matrix": [1, 4], "x": 4.25, "y": 1},
- {"label": "h", "matrix": [1, 5], "x": 6.25, "y": 1},
- {"label": "j", "matrix": [1, 6], "x": 7.25, "y": 1},
- {"label": "k", "matrix": [1, 7], "x": 8.25, "y": 1},
- {"label": "l", "matrix": [1, 8], "x": 9.25, "y": 1},
- {"label": ";", "matrix": [1, 9], "x": 10.25, "y": 1, "w": 1.75},
- {"label": "z", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
- {"label": "x", "matrix": [2, 1], "x": 1.75, "y": 2},
- {"label": "c", "matrix": [2, 2], "x": 2.75, "y": 2},
- {"label": "v", "matrix": [2, 3], "x": 3.75, "y": 2},
- {"label": "b", "matrix": [2, 4], "x": 4.75, "y": 2},
- {"label": "n", "matrix": [2, 5], "x": 6.75, "y": 2},
- {"label": "m", "matrix": [2, 6], "x": 7.75, "y": 2},
- {"label": ",", "matrix": [2, 7], "x": 8.75, "y": 2},
- {"label": ".", "matrix": [2, 8], "x": 9.75, "y": 2},
- {"label": "/", "matrix": [2, 9], "x": 10.75, "y": 2, "w": 1.25},
- {"label": "", "matrix": [3, 0], "x": 0.25, "y": 3, "w": 1.25},
- {"label": "esc", "matrix": [3, 1], "x": 1.5, "y": 3, "w": 1.25},
- {"label": "spc", "matrix": [3, 4], "x": 2.75, "y": 3, "w": 3},
- {"label": "bspc", "matrix": [3, 6], "x": 5.75, "y": 3, "w": 3},
- {"label": "", "matrix": [3, 8], "x": 8.75, "y": 3, "w": 1.25},
- {"label": "", "matrix": [3, 9], "x": 10, "y": 3, "w": 1.25}
- ]
- }
- }
-}
diff --git a/keyboards/relic/keymaps/waffle/keymap.c b/keyboards/relic/keymaps/waffle/keymap.c
@@ -1,26 +0,0 @@
-// Copyright 2024 jack@pngu.org
-// SPDX-License-Identifier: GPL-3.0-or-later
-#include "waffle.h"
-
-// clang-format off
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_BASE] = LAYOUT_waffle(
- ___BASE1___, PNP,
- ___BASE2___,
- ___BASE3___,
- KC_VOLD, KC_ESC, LWRSPC, RSEBSP, C(S(KC_V)), KC_VOLU
- ),
- [_LOWER] = LAYOUT_waffle(
- ___LOWER1___, _______,
- ___LOWER2___,
- ___LOWER3___,
- _______, TABLE1, _______, _______, TABLE2, _______
- ),
- [_RAISE] = LAYOUT_waffle(
- ___RAISE1___, _______,
- ___RAISE2___,
- ___RAISE3___,
- _______, _______, _______, _______, _______, _______
- )
-};
-// clang-format on
diff --git a/keyboards/sweep/keymaps/jack/keymap.c b/keyboards/sweep/keymaps/jack/keymap.c
@@ -0,0 +1,26 @@
+// Copyright 2024 jack@pngu.org
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include "jack.h"
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_jack(
+ ___BASE1___,
+ ___BASE2___,
+ ___BASE3___,
+ ESCLWR, KC_SPC, KC_BSPC, PSTRSE
+ ),
+ [_LOWER] = LAYOUT_jack(
+ ___LOWER1___,
+ ___LOWER2___,
+ ___LOWER3___,
+ KC_TRNS, KC_TRNS, KC_TRNS, PNP
+ ),
+ [_RAISE] = LAYOUT_jack(
+ ___RAISE1___,
+ ___RAISE2___,
+ ___RAISE3___,
+ NUKE, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
+// clang-format on
diff --git a/keyboards/sweep/keymaps/waffle/keymap.c b/keyboards/sweep/keymaps/waffle/keymap.c
@@ -1,26 +0,0 @@
-// Copyright 2024 jack@pngu.org
-// SPDX-License-Identifier: GPL-2.0-or-later
-#include "waffle.h"
-
-// clang-format off
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_BASE] = LAYOUT_waffle(
- ___BASE1___,
- ___BASE2___,
- ___BASE3___,
- ESCLWR, KC_SPC, KC_BSPC, PSTRSE
- ),
- [_LOWER] = LAYOUT_waffle(
- ___LOWER1___,
- ___LOWER2___,
- ___LOWER3___,
- KC_TRNS, KC_TRNS, KC_TRNS, PNP
- ),
- [_RAISE] = LAYOUT_waffle(
- ___RAISE1___,
- ___RAISE2___,
- ___RAISE3___,
- NUKE, KC_TRNS, KC_TRNS, KC_TRNS
- )
-};
-// clang-format on
diff --git a/keyboards/tornish/keymaps/default/keymap.c b/keyboards/tornish/keymaps/default/keymap.c
@@ -9,14 +9,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
DAY, KC_Q, KC_W, KC_E, KC_R, KC_T,
CLEAR, KC_A, KC_S, KC_D, KC_F, KC_G,
- KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B,
- KC_ESC, MO(1), KC_SPC, KC_NO
+ XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B,
+ KC_ESC, MO(1), KC_SPC, XXXXXXX
),
[1] = LAYOUT(
- KC_NO, KC_1, KC_2, KC_3, KC_4, KC_5,
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
- KC_NO, _______, KC_NO, KC_NO
+ XXXXXXX, KC_1, KC_2, KC_3, KC_4, KC_5,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, _______, XXXXXXX, XXXXXXX
)
};
// clang-format on
diff --git a/keyboards/vault35/keyboard.json b/keyboards/vault35/keyboard.json
@@ -1,72 +0,0 @@
-{
- "keyboard_name": "vault35",
- "manufacturer": "jacks",
- "maintainer": "pngu.org",
- "processor": "atmega32u4",
- "bootloader": "atmel-dfu",
- "diode_direction": "COL2ROW",
- "matrix_pins": {
- "cols": ["B1", "D3", "F0", "F1", "F4", "F5", "F6", "F7", "C6", "B6", "B5"],
- "rows": ["B4", "D4", "B0", "C7"]
- },
- "usb": {
- "vid": "0x6A73",
- "pid": "0x3335",
- "device_version": "1.0.0"
- },
- "features": { "rgblight": true },
- "ws2812": { "pin": "D5" },
- "rgblight": {
- "led_count": 12,
- "sleep": true,
- "default": {
- "hue": 104,
- "sat": 255,
- "val": 255
- }
- },
- "debounce": 8,
- "layouts": {
- "LAYOUT": {
- "layout": [
- {"label": "q", "matrix": [0, 0], "x": 0, "y": 0},
- {"label": "w", "matrix": [0, 1], "x": 1, "y": 0},
- {"label": "e", "matrix": [0, 2], "x": 2, "y": 0},
- {"label": "r", "matrix": [0, 3], "x": 3, "y": 0},
- {"label": "t", "matrix": [0, 4], "x": 4, "y": 0},
- {"label": "y", "matrix": [0, 5], "x": 5, "y": 0},
- {"label": "u", "matrix": [0, 6], "x": 6, "y": 0},
- {"label": "i", "matrix": [0, 7], "x": 7, "y": 0},
- {"label": "o", "matrix": [0, 8], "x": 8, "y": 0},
- {"label": "p", "matrix": [0, 9], "x": 9, "y": 0},
- {"label": "", "matrix": [0, 10], "x": 10, "y": 0},
- {"label": "a", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.25},
- {"label": "s", "matrix": [1, 1], "x": 1.25, "y": 1},
- {"label": "d", "matrix": [1, 2], "x": 2.25, "y": 1},
- {"label": "f", "matrix": [1, 3], "x": 3.25, "y": 1},
- {"label": "g", "matrix": [1, 4], "x": 4.25, "y": 1},
- {"label": "h", "matrix": [1, 5], "x": 5.25, "y": 1},
- {"label": "j", "matrix": [1, 6], "x": 6.25, "y": 1},
- {"label": "k", "matrix": [1, 7], "x": 7.25, "y": 1},
- {"label": "l", "matrix": [1, 8], "x": 8.25, "y": 1},
- {"label": ";", "matrix": [1, 9], "x": 9.25, "y": 1, "w": 1.75},
- {"label": "z", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
- {"label": "x", "matrix": [2, 1], "x": 1.75, "y": 2},
- {"label": "c", "matrix": [2, 2], "x": 2.75, "y": 2},
- {"label": "v", "matrix": [2, 3], "x": 3.75, "y": 2},
- {"label": "b", "matrix": [2, 4], "x": 4.75, "y": 2},
- {"label": "n", "matrix": [2, 5], "x": 5.75, "y": 2},
- {"label": "m", "matrix": [2, 6], "x": 6.75, "y": 2},
- {"label": ",", "matrix": [2, 7], "x": 7.75, "y": 2},
- {"label": ".", "matrix": [2, 8], "x": 8.75, "y": 2},
- {"label": "/", "matrix": [2, 9], "x": 9.75, "y": 2, "w": 1.25},
- {"label": "../", "matrix": [3, 1], "x": 1.5, "y": 3},
- {"label": "", "matrix": [3, 2], "x": 2.5, "y": 3, "w": 1.25},
- {"label": "spc", "matrix": [3, 3], "x": 3.75, "y": 3, "w": 1.75},
- {"label": "bspc", "matrix": [3, 5], "x": 5.5, "y": 3, "w": 1.75},
- {"label": "", "matrix": [3, 6], "x": 7.25, "y": 3, "w": 1.25},
- {"label": "", "matrix": [3, 7], "x": 8.5, "y": 3}
- ]
- }
- }
-}
diff --git a/keyboards/vault35/keymaps/waffle/keymap.c b/keyboards/vault35/keymaps/waffle/keymap.c
@@ -1,26 +0,0 @@
-// Copyright 2024 jack@pngu.org
-// SPDX-License-Identifier: GPL-3.0-or-later
-#include "waffle.h"
-
-// clang-format off
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_BASE] = LAYOUT_waffle(
- ___BASE1___, KC_NO,
- ___BASE2___,
- ___BASE3___,
- UPDIR, KC_ESC, LWRSPC, RSEBSP, C(S(KC_V)), PNP
- ),
- [_LOWER] = LAYOUT_waffle(
- ___LOWER1___, KC_NO,
- ___LOWER2___,
- ___LOWER3___,
- ___LOWER4___
- ),
- [_RAISE] = LAYOUT_waffle(
- ___RAISE1___, KC_NO,
- ___RAISE2___,
- ___RAISE3___,
- ___RAISE4___
- )
-};
-// clang-format on
diff --git a/keyboards/xyz60/keymaps/jack/keymap.c b/keyboards/xyz60/keymaps/jack/keymap.c
@@ -0,0 +1,32 @@
+// Copyright 2024 jack@pngu.org
+// SPDX-License-Identifier: GPL-3.0-or-later
+#include "jack.h"
+#define ___NONE___ \
+ _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_jack_60_ts(
+ _______, ___NONE___,
+ _______, ___BASE1___, KC_BSPC, _______, PNP,
+ _______, ___BASE2___, _______, _______,
+ _______, ___BASE3___, _______,
+ _______, _______, KC_ESC, LWRSPC, PSTRSE, _______, _______
+ ),
+ [_LOWER] = LAYOUT_jack_60_ts(
+ _______, ___NONE___,
+ _______, ___LOWER1___, _______, _______, _______,
+ _______, ___LOWER2___, _______, _______,
+ _______, ___LOWER3___, _______,
+ _______, _______, _______, _______, _______, _______, _______
+ ),
+ [_RAISE] = LAYOUT_jack_60_ts(
+ _______, ___NONE___,
+ _______, ___RAISE1___, _______, _______, _______,
+ _______, ___RAISE2___, _______, _______,
+ _______, ___RAISE3___, _______,
+ _______, _______, _______, _______, _______, _______, _______
+ )
+};
+// clang-format on
diff --git a/keyboards/xyz60/keymaps/waffle/keymap.c b/keyboards/xyz60/keymaps/waffle/keymap.c
@@ -1,32 +0,0 @@
-// Copyright 2024 jack@pngu.org
-// SPDX-License-Identifier: GPL-3.0-or-later
-#include "waffle.h"
-#define ___NONE___ \
- _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______
-
-// clang-format off
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_BASE] = LAYOUT_waffle_60_ts(
- _______, ___NONE___,
- _______, ___BASE1___, KC_BSPC, _______, PNP,
- _______, ___BASE2___, _______, _______,
- _______, ___BASE3___, _______,
- _______, _______, KC_ESC, LWRSPC, PSTRSE, _______, _______
- ),
- [_LOWER] = LAYOUT_waffle_60_ts(
- _______, ___NONE___,
- _______, ___LOWER1___, _______, _______, _______,
- _______, ___LOWER2___, _______, _______,
- _______, ___LOWER3___, _______,
- _______, _______, _______, _______, _______, _______, _______
- ),
- [_RAISE] = LAYOUT_waffle_60_ts(
- _______, ___NONE___,
- _______, ___RAISE1___, _______, _______, _______,
- _______, ___RAISE2___, _______, _______,
- _______, ___RAISE3___, _______,
- _______, _______, _______, _______, _______, _______, _______
- )
-};
-// clang-format on
diff --git a/keymaps/bully/keymap.c b/keymaps/bully/keymap.c
@@ -1,22 +1,22 @@
// Copyright 2024 jack@pngu.org
// SPDX-License-Identifier: GPL-3.0-or-later
-#include "waffle.h"
+#include "jack.h"
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_BASE] = LAYOUT_waffle(
- KC_NO, ___BASE1___, KC_BSPC, KC_BSPC,
+ [_BASE] = LAYOUT_jack(
+ XXXXXXX, ___BASE1___, KC_BSPC, KC_BSPC,
NUKE, ___BASE2___, PNP,
- KC_NO, ___BASE3___, KC_NO,
- KC_VOLD, UPDIR, KC_ESC, _______, LT(_LOWER, KC_SPC), _______, PSTRSE, KC_NO, KC_VOLU
+ XXXXXXX, ___BASE3___, XXXXXXX,
+ KC_VOLD, UPDIR, KC_ESC, _______, LT(_LOWER, KC_SPC), _______, PSTRSE, XXXXXXX, KC_VOLU
),
- [_LOWER] = LAYOUT_waffle(
+ [_LOWER] = LAYOUT_jack(
_______, ___LOWER1___, _______, _______,
_______, ___LOWER2___, _______,
_______, ___LOWER3___, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______
),
- [_RAISE] = LAYOUT_waffle(
+ [_RAISE] = LAYOUT_jack(
_______, ___RAISE1___, _______, _______,
_______, ___RAISE2___, _______,
_______, ___RAISE3___, _______,
diff --git a/keymaps/crkbd/config.h b/keymaps/crkbd/config.h
@@ -11,7 +11,6 @@
#ifdef RGB_MATRIX_ENABLE
#undef WS2812_DI_PIN
#define WS2812_DI_PIN B5
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150
#define WS2812_PWM_DRIVER PWMD3
#define WS2812_PWM_CHANNEL 3
#define WS2812_DMA_STREAM STM32_DMA1_STREAM3
diff --git a/keymaps/crkbd/keymap.c b/keymaps/crkbd/keymap.c
@@ -1,25 +1,25 @@
// Copyright 2024 jack@pngu.org
// SPDX-License-Identifier: GPL-2.0-or-later
-#include "waffle.h"
+#include "jack.h"
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_BASE] = LAYOUT_waffle_3x6(
- KC_NO, ___BASE1___, KC_NO,
- KC_NO, ___BASE2___, RWORD,
- KC_NO, ___BASE3___, KC_NO,
+ [_BASE] = LAYOUT_jack_3x6(
+ XXXXXXX, ___BASE1___, XXXXXXX,
+ XXXXXXX, ___BASE2___, RWORD,
+ XXXXXXX, ___BASE3___, XXXXXXX,
___BASE4___
),
- [_LOWER] = LAYOUT_waffle_3x6(
- KC_NO, ___LOWER1___, KC_NO,
- KC_NO, ___LOWER2___, KC_NO,
- KC_NO, ___LOWER3___, KC_NO,
+ [_LOWER] = LAYOUT_jack_3x6(
+ XXXXXXX, ___LOWER1___, XXXXXXX,
+ XXXXXXX, ___LOWER2___, XXXXXXX,
+ XXXXXXX, ___LOWER3___, XXXXXXX,
___LOWER4___
),
- [_RAISE] = LAYOUT_waffle_3x6(
- KC_NO, ___RAISE1___, KC_NO,
- KC_NO, ___RAISE2___, KC_NO,
- KC_NO, ___RAISE3___, KC_NO,
+ [_RAISE] = LAYOUT_jack_3x6(
+ XXXXXXX, ___RAISE1___, XXXXXXX,
+ XXXXXXX, ___RAISE2___, XXXXXXX,
+ XXXXXXX, ___RAISE3___, XXXXXXX,
___RAISE4___
)
};
diff --git a/keymaps/f60/keymap.c b/keymaps/f60/keymap.c
@@ -1,27 +1,27 @@
// Copyright 2024 jack@pngu.org
// SPDX-License-Identifier: GPL-2.0-or-later
-#include "waffle.h"
+#include "jack.h"
#define ___NONE___ \
_______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_BASE] = LAYOUT_waffle_60_ts(
+ [_BASE] = LAYOUT_jack_60_ts(
_______, ___NONE___,
_______, ___BASE1___, KC_BSPC, _______, PNP,
_______, ___BASE2___, _______, _______,
_______, ___BASE3___, _______,
_______, _______, KC_ESC, LWRSPC, PSTRSE, _______, _______
),
- [_LOWER] = LAYOUT_waffle_60_ts(
+ [_LOWER] = LAYOUT_jack_60_ts(
_______, ___NONE___,
_______, ___LOWER1___, _______, _______, _______,
_______, ___LOWER2___, _______, _______,
_______, ___LOWER3___, _______,
_______, _______, _______, _______, _______, _______, _______
),
- [_RAISE] = LAYOUT_waffle_60_ts(
+ [_RAISE] = LAYOUT_jack_60_ts(
_______, ___NONE___,
_______, ___RAISE1___, _______, _______, _______,
_______, ___RAISE2___, _______, _______,
diff --git a/keymaps/ferris/keymap.c b/keymaps/ferris/keymap.c
@@ -1,27 +1,27 @@
// Copyright 2024 jack@pngu.org
// SPDX-License-Identifier: GPL-2.0-or-later
-#include "waffle.h"
+#include "jack.h"
#define XX NO_LED
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_BASE] = LAYOUT_waffle(
+ [_BASE] = LAYOUT_jack(
___BASE1___,
___BASE2___,
___BASE3___,
ESCLWR, KC_SPC, KC_BSPC, PSTRSE
),
- [_LOWER] = LAYOUT_waffle(
+ [_LOWER] = LAYOUT_jack(
___LOWER1___,
___LOWER2___,
___LOWER3___,
- KC_NO, KC_NO, KC_NO, PNP
+ XXXXXXX, XXXXXXX, XXXXXXX, PNP
),
- [_RAISE] = LAYOUT_waffle(
+ [_RAISE] = LAYOUT_jack(
___RAISE1___,
___RAISE2___,
___RAISE3___,
- UPDIR, KC_NO, KC_NO, KC_NO
+ UPDIR, XXXXXXX, XXXXXXX, XXXXXXX
)
};
diff --git a/keymaps/kyria/keymap.c b/keymaps/kyria/keymap.c
@@ -1,25 +1,25 @@
// Copyright 2024 jack@pngu.org
// SPDX-License-Identifier: GPL-2.0-or-later
-#include "waffle.h"
+#include "jack.h"
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_BASE] = LAYOUT_waffle(
- KC_NO, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_NO,
- KC_NO, HRML(KC_A, KC_S, KC_D, KC_F), KC_G, KC_H, HRMR(KC_J, KC_K, KC_L, KC_SCLN), KC_NO,
- KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, RWORD, KC_NO, KC_NO, NUKE, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO,
- KC_NO, UPDIR, ESCLWR, KC_SPC, KC_NO, KC_NO, KC_BSPC, PSTRSE, PNP, KC_NO
+ [_BASE] = LAYOUT_jack(
+ XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, XXXXXXX,
+ XXXXXXX, HRML(KC_A, KC_S, KC_D, KC_F), KC_G, KC_H, HRMR(KC_J, KC_K, KC_L, KC_SCLN), XXXXXXX,
+ XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, RWORD, XXXXXXX, XXXXXXX, NUKE, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, XXXXXXX,
+ XXXXXXX, UPDIR, ESCLWR, KC_SPC, XXXXXXX, XXXXXXX, KC_BSPC, PSTRSE, PNP, XXXXXXX
),
- [_LOWER] = LAYOUT_waffle(
+ [_LOWER] = LAYOUT_jack(
_______, KC_1, KC_2 , KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
_______, HRML(KC_EXLM, KC_AT, KC_HASH, KC_DLR), KC_PERC, KC_CIRC, HRMR(KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN), _______,
_______, KC_VOLD, KC_TAB, KC_CAPS, KC_TILD, KC_GRV, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_VOLU, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
- [_RAISE] = LAYOUT_waffle(
- _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_NOMODE, KC_SCRIPT, KC_BLOCKS, KC_REGIONAL, QK_MAKE, _______,
+ [_RAISE] = LAYOUT_jack(
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXXMODE, KC_SCRIPT, KC_BLOCKS, KC_REGIONAL, QK_MAKE, _______,
_______, _______, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, KC_WIDE, KC_AUSSIE, KC_ZALGO, KC_SUPER, QK_BOOT, _______,
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, _______, _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keymaps/relic/keymap.c b/keymaps/relic/keymap.c
@@ -0,0 +1,26 @@
+// Copyright 2024 jack@pngu.org
+// 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_all(
+ ___BASE1___, PNP,
+ ___BASE2___,
+ ___BASE3___,
+ KC_VOLD, KC_ESC, _______, LWRSPC, _______, RSEBSP, _______, C(S(KC_V)), KC_VOLU
+ ),
+ [_LOWER] = LAYOUT_jack_all(
+ ___LOWER1___, _______,
+ ___LOWER2___,
+ ___LOWER3___,
+ _______, TABLE1, _______, _______, _______, _______, _______, TABLE2, _______
+ ),
+ [_RAISE] = LAYOUT_jack_all(
+ ___RAISE1___, _______,
+ ___RAISE2___,
+ ___RAISE3___,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
+// clang-format on
diff --git a/keyboards/relic/readme.md b/keymaps/relic/readme.md
diff --git a/keymaps/the_q/config.h b/keymaps/the_q/config.h
@@ -1,7 +0,0 @@
-// Copyright 2024 jack@pngu.org
-// SPDX-License-Identifier: GPL-2.0-or-later
-#pragma once
-
-#undef RGB_MATRIX_MAXIMUM_BRIGHTNESS
-#define BOOTMAGIC_LITE_ROW 0
-#define BOOTMAGIC_LITE_COLUMN 1
diff --git a/keymaps/the_q/keymap.c b/keymaps/the_q/keymap.c
@@ -1,43 +0,0 @@
-// Copyright 2024 jack@pngu.org
-// SPDX-License-Identifier: GPL-2.0-or-later
-#include "waffle.h"
-
-// clang-format off
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_BASE] = LAYOUT_waffle_3x6(
- KC_NO, ___BASE1___, KC_NO,
- KC_NO, ___BASE2___, KC_NO,
- KC_NO, ___BASE3___, KC_NO,
- ___BASE4___
- ),
- [_LOWER] = LAYOUT_waffle_3x6(
- KC_NO, ___LOWER1___, KC_NO,
- KC_NO, ___LOWER2___, KC_NO,
- KC_NO, ___LOWER3___, KC_NO,
- ___LOWER4___
- ),
- [_RAISE] = LAYOUT_waffle_3x6(
- KC_NO, ___RAISE1___, KC_NO,
- KC_NO, ___RAISE2___, KC_NO,
- KC_NO, ___RAISE3___, KC_NO,
- ___RAISE4___
- )
-};
-// clang-format on
-
-#ifdef OLED_ENABLE
-oled_rotation_t oled_init_user(oled_rotation_t rotation) {
- return OLED_ROTATION_270;
-}
-
-bool oled_task_keymap(void) {
- layer_status();
- oled_set_cursor(0, 3);
- felix_dog();
- oled_set_cursor(0, 7);
- render_wpm();
- render_keylog();
- render_mod_status();
- return false;
-}
-#endif // OLED_ENABLE
diff --git a/keymaps/the_q/rules.mk b/keymaps/the_q/rules.mk
@@ -1 +0,0 @@
-CONVERT_TO = blok
diff --git a/keymaps/vault35/config.h b/keymaps/vault35/config.h
@@ -0,0 +1,16 @@
+// Copyright 2024 jack_all@pngu.org
+// SPDX-License-Identifier: GPL-3.0-or-later
+#pragma once
+
+#define RGBLIGHT_DEFAULT_HUE 104
+
+#undef RGBLIGHT_MODE_ALTERNATING
+#undef RGBLIGHT_MODE_BREATHING
+#undef RGBLIGHT_MODE_CHRISTMAS
+#undef RGBLIGHT_MODE_KNIGHT
+#undef RGBLIGHT_MODE_RAINBOW_MOOD
+#undef RGBLIGHT_MODE_RAINBOW_SWIRL
+#undef RGBLIGHT_MODE_RGB_TEST
+#undef RGBLIGHT_MODE_SNAKE
+#undef RGBLIGHT_MODE_STATIC_GRADIENT
+#undef RGBLIGHT_MODE_TWINKLE
diff --git a/keymaps/vault35/keymap.c b/keymaps/vault35/keymap.c
@@ -0,0 +1,26 @@
+// Copyright 2024 jack_all@pngu.org
+// 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_all(
+ ___BASE1___, XXXXXXX,
+ ___BASE2___,
+ ___BASE3___,
+ UPDIR, KC_ESC, LWRSPC, _______, RSEBSP, C(S(KC_V)), PNP
+ ),
+ [_LOWER] = LAYOUT_jack_all(
+ ___LOWER1___, XXXXXXX,
+ ___LOWER2___,
+ ___LOWER3___,
+ _______, _______, _______, _______, _______, _______, _______
+ ),
+ [_RAISE] = LAYOUT_jack_all(
+ ___RAISE1___, XXXXXXX,
+ ___RAISE2___,
+ ___RAISE3___,
+ _______, _______, _______, _______, _______, _______, _______
+ )
+};
+// clang-format on
diff --git a/keyboards/vault35/readme.md b/keymaps/vault35/readme.md
diff --git a/keymaps/vault35/rules.mk b/keymaps/vault35/rules.mk
@@ -0,0 +1,2 @@
+ENCODER_ENABLE = no
+MOUSEKEY_ENABLE = no
diff --git a/readme.md b/readme.md
@@ -8,10 +8,10 @@ symlinks are used to compile this code in a proper `qmk_firmware` repository.
eg.
```shell
-ln -s ~/qmk.me/waffle ~/qmk_firmware/users/waffle
+ln -s ~/qmk.me/jack ~/qmk_firmware/users/jack
ln -s ~/qmk.me/keyboards/relic ~/qmk_firmware/keyboards/relic
-echo "users/waffle\nkeyboards/relic" >> ~/qmk_firmware/.git/info/exclude
-qmk compile -kb relic -km waffle
+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.
diff --git a/util/link.sh b/util/link.sh
@@ -5,8 +5,8 @@ QMKFIRMWARE="$HOME/git/qmk_firmware"
find $QMKFIRMWARE -type l -not -path "$QMKFIRMWARE/.venv/*" -delete
rm $QMKFIRMWARE/.git/info/exclude
-ln -sv $QMKME/waffle $QMKFIRMWARE/users/waffle
-echo "users/waffle" >> $QMKFIRMWARE/.git/info/exclude
+ln -sv $QMKME/jack $QMKFIRMWARE/users/jack
+echo "users/jack" >> $QMKFIRMWARE/.git/info/exclude
for dir in "keyboards"/*; do
src="$QMKME/$dir"
@@ -17,9 +17,9 @@ done
link() {
src="$QMKME/keymaps/$1"
- dst="$QMKFIRMWARE/keyboards/$2/keymaps/waffle"
+ dst="$QMKFIRMWARE/keyboards/$2/keymaps/jack"
ln -sv $src $dst
- echo "keyboards/$2/keymaps/waffle" >> $QMKFIRMWARE/.git/info/exclude
+ echo "keyboards/$2/keymaps/jack" >> $QMKFIRMWARE/.git/info/exclude
}
link crkbd crkbd
@@ -27,5 +27,5 @@ link bully mkh_studio/bully
link f60 bioi/f60
link ferris ferris
link kyria splitkb/kyria
-link microdox boardsource/microdox
-link the_q boardsource/the_q
+link relic projectcain/relic
+link vault35 projectcain/vault35
diff --git a/waffle/config.h b/waffle/config.h
@@ -1,51 +0,0 @@
-// Copyright 2024 jack@pngu.org
-// SPDX-License-Identifier: GPL-2.0-or-later
-#pragma once
-
-#define TAPPING_TERM_PER_KEY
-#define TAPPING_TERM 140
-#define FORCE_NKRO
-#define BOTH_SHIFTS_TURNS_ON_CAPS_WORD
-#define COMBO_TERM 40
-#define NO_ACTION_ONESHOT
-#define UNICODE_SELECTED_MODES UNICODE_MODE_LINUX
-#define ENABLE_COMPILE_KEYCODE
-#undef MANUFACTURER
-#define MANUFACTURER "jacks"
-
-#ifdef OLED_ENABLE
-#define OLED_FONT_H "users/waffle/oledfont.h"
-#define OLED_UPDATE_INTERVAL 50
-#define OLED_DISABLE_TIMEOUT
-#endif
-
-#ifdef SPLIT_KEYBOARD
-#define MASTER_RIGHT
-#define SPLIT_MODS_ENABLE
-#define SPLIT_WPM_ENABLE
-#define SPLIT_LAYER_STATE_ENABLE
-#define SPLIT_OLED_ENABLE
-#define SPLIT_LED_STATE_ENABLE
-#define SPLIT_ACTIVITY_ENABLE
-#define SPLIT_TRANSACTION_IDS_USER RPC_ID_USER_KEYLOG_STR
-#endif
-
-#ifdef RGB_MATRIX_ENABLE
-#define RGB_MATRIX_SLEEP
-#define RGB_MATRIX_TIMEOUT 300000
-#undef RGB_MATRIX_DEFAULT_MODE
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_KEYPRESSES
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define RGB_MATRIX_KEYPRESSES
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#endif
diff --git a/waffle/oled.c b/waffle/oled.c
@@ -1,237 +0,0 @@
-// Copyright 2024 jack@pngu.org
-// SPDX-License-Identifier: GPL-2.0-or-later
-#include "oled.h"
-#include "waffle.h"
-
-uint32_t oled_timer = 0;
-char keylog_str[KEYLOG_LEN + 1] = {0};
-
-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) {
- oled_off();
- return false;
- } else
- oled_on();
- }
- oled_task_keymap();
- return false;
-}
-
-void anim_frame(uint16_t size, char const action[][size]) {
- static uint8_t current_frame = 0;
- current_frame = (current_frame + 1) & 1;
- oled_write_raw(action[current_frame], size);
-}
-
-#ifdef OLED_DISPLAY_128X64
-void wpm_graph(void) {
- static uint8_t height = OLED_DISPLAY_HEIGHT - 1, vert_count = 0,
- max_wpm = 160;
- static uint16_t graph_timer = 0;
- if (timer_elapsed(graph_timer) > 100) {
- height = 63 - ((get_current_wpm() / (float)max_wpm) * 63);
- for (uint8_t i = 0; i <= 1; i++)
- oled_write_pixel(3, height + i, true);
- if (vert_count == 3) {
- vert_count = 0;
- while (height <= 63) {
- oled_write_pixel(3, height, true);
- height++;
- }
- } else {
- for (uint8_t i = 63; i > height; i--)
- if (!(i % 3))
- oled_write_pixel(3, i, true);
- vert_count++;
- }
- for (uint16_t y = 0; y < 8; y++) {
- for (uint16_t x = 124; x > 0; x--) {
- uint16_t i = y * OLED_DISPLAY_WIDTH + x;
- oled_buffer[i] = oled_buffer[i - 1];
- oled_dirty |= ((OLED_BLOCK_TYPE)1 << (i / OLED_BLOCK_SIZE));
- }
- }
- graph_timer = timer_read();
- }
-}
-#endif
-
-void felix_dog(void) {
- static uint16_t felix_anim_timer = 0;
- bool shifted =
- get_mods() & MOD_MASK_SHIFT || host_keyboard_led_state().caps_lock;
- if (timer_elapsed(felix_anim_timer) > 200) {
- felix_anim_timer = timer_read();
- if (shifted || is_caps_word_on())
- anim_frame(96, felix_bark);
- else if (get_mods() & MOD_MASK_CAG)
- anim_frame(96, felix_sneak);
- else if (get_current_wpm() > 60)
- anim_frame(96, felix_run);
- else if (get_current_wpm() && get_current_wpm() <= 60)
- anim_frame(96, felix_walk);
- else
- anim_frame(96, felix_sit);
- }
-}
-
-void layer_anim(void) {
- static uint16_t layer_anim_timer = 0;
- if (timer_elapsed(layer_anim_timer) > 200) {
- layer_anim_timer = timer_read();
- switch (get_highest_layer(layer_state)) {
- case _BASE:
- anim_frame(520, tap_num);
- break;
- case _LOWER:
- anim_frame(650, tap_sym);
- break;
- case _RAISE:
- anim_frame(520, tap_sys);
- break;
- }
- }
-}
-
-void layer_status(void) {
- static const char PROGMEM base[] = {0x20, 0x94, 0x95, 0x96, 0x20,
- 0x20, 0xb4, 0xb5, 0xb6, 0x20,
- 0x20, 0xd4, 0xd5, 0xd6, 0x20};
- static const char PROGMEM lower[] = {0x20, 0x9a, 0x9b, 0x9c, 0x20,
- 0x20, 0xba, 0xbb, 0xbc, 0x20,
- 0x20, 0xda, 0xdb, 0xdc, 0x20};
- static const char PROGMEM raise[] = {0x20, 0x97, 0x98, 0x99, 0x20,
- 0x20, 0xb7, 0xb8, 0xb9, 0x20,
- 0x20, 0xd7, 0xd8, 0xd9, 0x20};
- switch (get_highest_layer(layer_state)) {
- case _LOWER:
- oled_write(lower, false);
- break;
- case _RAISE:
- oled_write(raise, false);
- break;
- default:
- oled_write(base, false);
- }
-}
-
-void render_mod_status(void) {
- const uint8_t mods = get_mods();
- static const char PROGMEM
- gui_off_1[] = {0x85, 0x86},
- gui_off_2[] = {0xa5, 0xa6}, gui_on_1[] = {0x8d, 0x8e},
- gui_on_2[] = {0xad, 0xae}, alt_off_1[] = {0x87, 0x88},
- alt_off_2[] = {0xa7, 0xa8}, alt_on_1[] = {0x8f, 0x90},
- alt_on_2[] = {0xaf, 0xb0}, ctrl_off_1[] = {0x89, 0x8a},
- ctrl_off_2[] = {0xa9, 0xaa}, ctrl_on_1[] = {0x91, 0x92},
- ctrl_on_2[] = {0xb1, 0xb2}, shift_off_1[] = {0x8b, 0x8c},
- shift_off_2[] = {0xab, 0xac}, shift_on_1[] = {0xcd, 0xce},
- shift_on_2[] = {0xcf, 0xd0}, off_off_1[] = {0xc5}, off_off_2[] = {0xc6},
- on_off_1[] = {0xc7}, on_off_2[] = {0xc8}, off_on_1[] = {0xc9},
- off_on_2[] = {0xca}, on_on_1[] = {0xcb}, on_on_2[] = {0xcc};
-
- oled_write(mods & MOD_MASK_GUI ? gui_on_1 : gui_off_1, false);
- if ((mods & MOD_MASK_GUI) && (mods & MOD_MASK_ALT))
- oled_write(on_on_1, false);
- else if (mods & MOD_MASK_GUI)
- oled_write(on_off_1, false);
- else if (mods & MOD_MASK_ALT)
- oled_write(off_on_1, false);
- else
- oled_write(off_off_1, false);
- oled_write(mods & MOD_MASK_ALT ? alt_on_1 : alt_off_1, false);
- oled_write(mods & MOD_MASK_GUI ? gui_on_2 : gui_off_2, false);
- if ((mods & MOD_MASK_GUI) && (mods & MOD_MASK_ALT))
- oled_write(on_on_2, false);
- else if (mods & MOD_MASK_GUI)
- oled_write(on_off_2, false);
- else if (mods & MOD_MASK_ALT)
- oled_write(off_on_2, false);
- else
- oled_write(off_off_2, false);
- oled_write(mods & MOD_MASK_ALT ? alt_on_2 : alt_off_2, false);
- oled_write(mods & MOD_MASK_CTRL ? ctrl_on_1 : ctrl_off_1, false);
- if ((mods & MOD_MASK_CTRL) && (mods & MOD_MASK_SHIFT))
- oled_write(on_on_1, false);
- else if (mods & MOD_MASK_CTRL)
- oled_write(on_off_1, false);
- else if (mods & MOD_MASK_SHIFT)
- oled_write(off_on_1, false);
- else
- oled_write(off_off_1, false);
- oled_write(mods & MOD_MASK_SHIFT ? shift_on_1 : shift_off_1, false);
- oled_write(mods & MOD_MASK_CTRL ? ctrl_on_2 : ctrl_off_2, false);
- if ((mods & MOD_MASK_CTRL) && (mods & MOD_MASK_SHIFT))
- oled_write(on_on_2, false);
- else if (mods & MOD_MASK_CTRL)
- oled_write(on_off_2, false);
- else if (mods & MOD_MASK_SHIFT)
- oled_write(off_on_2, false);
- else
- oled_write(off_off_2, false);
- oled_write(mods & MOD_MASK_SHIFT ? shift_on_2 : shift_off_2, false);
-}
-
-void add_keylog(uint16_t keycode, keyrecord_t *record) {
- if (IS_QK_MOD_TAP(keycode))
- keycode =
- record->tap.count
- ? keycode_config(QK_MOD_TAP_GET_TAP_KEYCODE(keycode))
- : keycode_config(0xE0 + biton(QK_MOD_TAP_GET_MODS(keycode) & 0xF) +
- biton(QK_MOD_TAP_GET_MODS(keycode) & 0x10));
- else if (IS_QK_LAYER_TAP(keycode) && (record->tap.count))
- keycode = keycode_config(QK_LAYER_TAP_GET_TAP_KEYCODE(keycode));
- else if (IS_QK_MODS(keycode))
- keycode = keycode_config(QK_MODS_GET_BASIC_KEYCODE(keycode));
- else if (IS_QK_BASIC(keycode))
- keycode = keycode_config(keycode);
- if ((keycode == KC_BSPC) && mod_config(get_mods()) & MOD_MASK_CTRL) {
- memset(keylog_str, ' ', KEYLOG_LEN);
- keylog_str[KEYLOG_LEN] = '\0';
- return;
- }
- char code = 0;
- if (keycode < ARRAY_SIZE(code_to_name))
- code = pgm_read_byte(&code_to_name[keycode]);
- if (code) {
- memmove(keylog_str, keylog_str + 1, KEYLOG_LEN - 1);
- keylog_str[KEYLOG_LEN - 1] = code;
- }
-}
-
-void render_keylog(void) {
- oled_write(PSTR("KLG: "), false);
- oled_write_ln(keylog_str, false);
-}
-
-void render_wpm(void) {
- oled_write(PSTR("WPM: "), false);
- oled_write_ln(get_u8_str(get_current_wpm(), ' '), false);
-}
-
-#ifdef DEBUG_MATRIX_SCAN_RATE
-void render_scan_rate(void) {
- oled_write(PSTR("MSR: "), false);
- oled_write_ln(get_u16_str(get_matrix_scan_rate(), ' '), false);
-}
-#endif
-
-void oled_render_boot(bool jump_to_bootloader) {
- oled_clear();
- static const char PROGMEM qmk_logo[16] = {0x80, 0x81, 0x82, 0x83, 0x84,
- 0xA0, 0xA1, 0xA2, 0xA3, 0xA4,
- 0xC0, 0xC1, 0xC2, 0xC3, 0xC4};
- oled_write(qmk_logo, false);
- oled_set_cursor(0, 4);
- oled_write(qmk_logo, false);
- oled_set_cursor(0, 8);
- oled_write(qmk_logo, false);
- oled_set_cursor(0, 12);
- oled_write(qmk_logo, false);
- oled_render_dirty(true);
-}
diff --git a/waffle/rules.mk b/waffle/rules.mk
@@ -1,50 +0,0 @@
-LTO_ENABLE = yes
-TOP_SYMBOLS = yes
-NRKO_ENABLE = yes
-COMBO_ENABLE = yes
-MAGIC_ENABLE = no
-UNICODE_COMMON = yes
-EXTRAKEY_ENABLE = yes
-BOOTMAGIC_ENABLE = yes
-CAPS_WORD_ENABLE = yes
-TAP_DANCE_ENABLE = yes
-AUTOCORRECT_ENABLE = yes
-MOUSE_JIGGLE_ENABLE = yes
-DEBOUNCE_TYPE = asym_eager_defer_pk
-AVR_CFLAGS += -mrelax
-INTROSPECTION_KEYMAP_C = waffle.c
-
-SRC += tapping.c
-
-ifeq ($(strip $(OLED_ENABLE)), yes)
- SRC += oled.c
- WPM_ENABLE = yes
-endif
-
-ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes)
- SRC += color.c
-endif
-
-ifeq ($(strip $(UNICODE_COMMON)), yes)
- UNICODE_ENABLE = no
- SRC += unicode.c
-endif
-
-ifeq ($(PLATFORM), CHIBIOS)
- RANDWORD = yes
- EXTRAFLAGS += -Os
-endif
-
-ifneq ($(findstring Gentoo, $(shell arm-none-eabi-gcc --version)),)
- EXTRAFLAGS += -U_FORTIFY_SOURCE
-endif
-
-ifeq ($(strip $(RANDWORD)), yes)
- OPT_DEFS += -DRANDWORD
-endif
-
-ifeq ($(strip $(MOUSE_JIGGLE_ENABLE)), yes)
- OPT_DEFS += -DMOUSE_JIGGLE_ENABLE
- MOUSEKEY_ENABLE = yes
- DEFERRED_EXEC_ENABLE = yes
-endif
diff --git a/waffle/tapping.c b/waffle/tapping.c
@@ -1,200 +0,0 @@
-// Copyright 2024 jack@pngu.org
-// SPDX-License-Identifier: GPL-2.0-or-later
-#include "waffle.h"
-#ifdef RANDWORD
-#include "dict.h"
-uint16_t word = 0;
-#endif
-
-#define INTERCEPT_MOD_TAP(mod, keycode) \
- case mod(keycode): \
- if (record->tap.count && record->event.pressed) { \
- tap_code16(keycode); \
- return false; \
- } \
- break;
-
-static uint8_t select_word_state = NONE;
-
-bool process_select_word(uint16_t keycode, keyrecord_t *record) {
- if (keycode == KC_LSFT || keycode == KC_RSFT)
- return true;
- if (keycode == SELWORD && record->event.pressed) {
- const bool shifted = get_mods() & MOD_MASK_SHIFT;
- if (!shifted) {
- set_mods(MOD_BIT(KC_LCTL));
- if (select_word_state == NONE) {
- send_keyboard_report();
- tap_code(KC_RGHT);
- tap_code(KC_LEFT);
- }
- register_mods(MOD_BIT(KC_LSFT));
- register_code(KC_RGHT);
- select_word_state = WORD;
- } else {
- if (select_word_state == NONE) {
- clear_mods();
- send_keyboard_report();
- tap_code(KC_HOME);
- register_mods(MOD_BIT(KC_LSFT));
- tap_code(KC_END);
- set_mods(get_mods());
- select_word_state = FIRST_LINE;
- } else {
- register_code(KC_DOWN);
- select_word_state = LINE;
- }
- }
- return false;
- }
- switch (select_word_state) {
- case WORD:
- unregister_code(KC_RGHT);
- unregister_mods(MOD_BIT(KC_LSFT) | MOD_BIT(KC_LCTL));
- select_word_state = SELECTED;
- break;
- case FIRST_LINE:
- select_word_state = SELECTED;
- break;
- case LINE:
- unregister_code(KC_DOWN);
- select_word_state = SELECTED;
- break;
- case SELECTED:
- if (keycode == KC_ESC) {
- tap_code(KC_RGHT);
- select_word_state = NONE;
- return false;
- }
- default:
- select_word_state = NONE;
- }
- return true;
-}
-
-uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case LWRSPC:
- case ESCLWR:
- case RSEBSP:
- return TAPPING_TERM - 40;
- case TD(EM_DASH_MINS):
- case TD(PLY_NXT_PRV):
- case TD(CBRACKET):
- case TD(SBRACKET):
- return TAPPING_TERM + 60;
- default:
- return TAPPING_TERM;
- }
-}
-
-void td_reset(tap_dance_state_t *state, void *user_data) {
- clear_keyboard();
- layer_clear();
-}
-
-void em_dash_mins(tap_dance_state_t *state, void *user_data) {
- switch (state->count) {
- case 3:
-#ifdef UNICODE_COMMON_ENABLE
- register_unicode(0x2014); // —
-#endif
- break;
- case 2:
- tap_code(KC_MINS), tap_code(KC_MINS);
- break;
- default:
- tap_code(KC_MINS);
- }
-}
-
-void ply_nxt_prv(tap_dance_state_t *state, void *user_data) {
- switch (state->count) {
- case 1:
- tap_code(KC_MPLY);
- break;
- case 2:
- tap_code(KC_MNXT);
- break;
- case 3:
- tap_code(KC_MPRV);
- break;
- }
-}
-
-void raise_paste(tap_dance_state_t *state, void *user_data) {
- if (state->pressed && !state->interrupted)
- layer_on(_RAISE);
- else if (state->count == 1)
- tap_code16(C(S(KC_V)));
-}
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-#ifdef UNICODE_COMMON_ENABLE
- if (!process_record_unicode(keycode, record))
- return false;
-#endif
- if (!process_select_word(keycode, record))
- return false;
-#ifdef OLED_ENABLE
- if (record->event.pressed) {
- oled_timer_reset();
- add_keylog(keycode, record);
- }
-#endif
-#ifdef MOUSE_JIGGLE_ENABLE
- if (record->event.pressed) {
- static deferred_token token = INVALID_DEFERRED_TOKEN;
- static report_mouse_t report = {0};
- if (token) {
- cancel_deferred_exec(token);
- token = INVALID_DEFERRED_TOKEN;
- report = (report_mouse_t){};
- host_mouse_send(&report);
- } else if (keycode == M_JIGGLE) {
- uint32_t jiggle_callback(uint32_t trigger_time, void *cb_arg) {
- static const int8_t deltas[32] = {
- 0, -1, -2, -2, -3, -3, -4, -4, -4, -4, -3, -3, -2, -2, -1, 0,
- 0, 1, 2, 2, 3, 3, 4, 4, 4, 4, 3, 3, 2, 2, 1, 0};
- static uint8_t phase = 0;
- report.x = deltas[phase];
- report.y = deltas[(phase + 8) & 31];
- phase = (phase + 1) & 31;
- host_mouse_send(&report);
- return 16;
- }
- token = defer_exec(1, jiggle_callback, NULL);
- }
- }
-#endif
- switch (keycode) {
- case UPDIR:
- if (record->event.pressed)
- SEND_STRING("../");
- break;
- case NUKE:
- if (record->event.pressed) {
- tap_code16(C(KC_A));
- SEND_STRING("\b```suggestion\n```");
- }
- break;
- INTERCEPT_MOD_TAP(LALT_T, KC_EXLM)
- INTERCEPT_MOD_TAP(LGUI_T, KC_AT)
- INTERCEPT_MOD_TAP(LCTL_T, KC_HASH)
- INTERCEPT_MOD_TAP(LSFT_T, KC_DLR)
- INTERCEPT_MOD_TAP(RSFT_T, KC_AMPR)
- INTERCEPT_MOD_TAP(RCTL_T, KC_ASTR)
- INTERCEPT_MOD_TAP(RGUI_T, KC_LPRN)
- INTERCEPT_MOD_TAP(RALT_T, KC_RPRN)
- case RWORD:
-#ifdef RANDWORD
- word = rand() % NUM_WORDS;
- if (record->event.pressed) {
- send_string(dict[word]);
- tap_code(KC_SPC);
- }
-#endif
- break;
- }
- return true;
-}
diff --git a/waffle/unicode.c b/waffle/unicode.c
@@ -1,280 +0,0 @@
-// Copyright 2024 jack@pngu.org
-// SPDX-License-Identifier: GPL-2.0-or-later
-#include "waffle.h"
-
-uint8_t typing_mode = NOMODE;
-typedef uint32_t (*translator_function_t)(bool is_shifted, uint32_t keycode);
-
-void tap_unicode_glyph_nomods(uint32_t glyph) {
- uint8_t temp_mod = get_mods();
- clear_mods();
- register_unicode(glyph);
- set_mods(temp_mod);
-}
-
-void tap_code16_nomods(uint16_t kc) {
- uint8_t temp_mod = get_mods();
- clear_mods();
- tap_code16(kc);
- set_mods(temp_mod);
-}
-
-#define DEFINE_UNICODE_RANGE_TRANSLATOR(translator_name, lower_alpha, \
- upper_alpha, zero_glyph, number_one, \
- space_glyph) \
- static inline uint32_t translator_name(bool is_shifted, uint32_t keycode) { \
- switch (keycode) { \
- case KC_A ... KC_Z: \
- return (is_shifted ? upper_alpha : lower_alpha) + keycode - KC_A; \
- case KC_0: \
- return zero_glyph; \
- case KC_1 ... KC_9: \
- return (number_one + keycode - KC_1); \
- case KC_SPACE: \
- return space_glyph; \
- } \
- return keycode; \
- }
-
-#define DEFINE_UNICODE_LUT_TRANSLATOR(translator_name, ...) \
- static inline uint32_t translator_name(bool is_shifted, uint32_t keycode) { \
- static const uint32_t translation[] = {__VA_ARGS__}; \
- uint32_t ret = keycode; \
- if ((keycode - KC_A) < ARRAY_SIZE(translation)) \
- ret = translation[keycode - KC_A]; \
- return ret; \
- }
-
-bool process_record_glyph_replacement(uint16_t keycode, keyrecord_t *record,
- translator_function_t translator) {
- uint8_t temp_mod = get_mods();
- bool is_shifted = (temp_mod)&MOD_MASK_SHIFT;
- if (((temp_mod) & (MOD_MASK_CTRL | MOD_MASK_ALT | MOD_MASK_GUI)) == 0) {
- if (KC_A <= keycode && keycode <= KC_Z) {
- if (record->event.pressed)
- tap_unicode_glyph_nomods(translator(is_shifted, keycode));
- return false;
- } else if (KC_1 <= keycode && keycode <= KC_0) {
- if (is_shifted)
- return true;
- if (record->event.pressed)
- register_unicode(translator(is_shifted, keycode));
- return false;
- } else if (keycode == KC_SPACE) {
- if (record->event.pressed)
- register_unicode(translator(is_shifted, keycode));
- return false;
- }
- }
- return true;
-}
-
-DEFINE_UNICODE_RANGE_TRANSLATOR(unicode_range_translator_wide, 0xFF41, 0xFF21,
- 0xFF10, 0xFF11, 0x2003);
-DEFINE_UNICODE_RANGE_TRANSLATOR(unicode_range_translator_script, 0x1D4EA,
- 0x1D4D0, 0x1D7CE, 0x1D7C1, 0x2002);
-DEFINE_UNICODE_RANGE_TRANSLATOR(unicode_range_translator_boxes, 0x1F170,
- 0x1F170, '0', '1', 0x2002);
-DEFINE_UNICODE_RANGE_TRANSLATOR(unicode_range_translator_regional, 0x1F1E6,
- 0x1F1E6, '0', '1', 0x2003);
-
-DEFINE_UNICODE_LUT_TRANSLATOR(unicode_lut_translator_aussie,
- 0x0250, // a
- 'q', // b
- 0x0254, // c
- 'p', // d
- 0x01DD, // e
- 0x025F, // f
- 0x0183, // g
- 0x0265, // h
- 0x1D09, // i
- 0x027E, // j
- 0x029E, // k
- 'l', // l
- 0x026F, // m
- 'u', // n
- 'o', // o
- 'd', // p
- 'b', // q
- 0x0279, // r
- 's', // s
- 0x0287, // t
- 'n', // u
- 0x028C, // v
- 0x028D, // w
- 0x2717, // x
- 0x028E, // y
- 'z', // z
- 0x0269, // 1
- 0x3139, // 2
- 0x0190, // 3
- 0x3123, // 4
- 0x03DB, // 5
- '9', // 6
- 0x3125, // 7
- '8', // 8
- '6', // 9
- '0' // 0
-);
-
-DEFINE_UNICODE_LUT_TRANSLATOR(unicode_lut_translator_super,
- 0x1D43, // a
- 0x1D47, // b
- 0x1D9C, // c
- 0x1D48, // d
- 0x1D49, // e
- 0x1DA0, // f
- 0x1D4D, // g
- 0x02B0, // h
- 0x2071, // i
- 0x02B2, // j
- 0x1D4F, // k
- 0x02E1, // l
- 0x1D50, // m
- 0x207F, // n
- 0x1D52, // o
- 0x1D56, // p
- 0x06F9, // q
- 0x02B3, // r
- 0x02E2, // s
- 0x1D57, // t
- 0x1D58, // u
- 0x1D5B, // v
- 0x02B7, // w
- 0x02E3, // x
- 0x02B8, // y
- 0x1DBB, // z
- 0x00B9, // 1
- 0x00B2, // 2
- 0x00B3, // 3
- 0x2074, // 4
- 0x2075, // 5
- 0x2076, // 6
- 0x2077, // 7
- 0x2078, // 8
- 0x2079, // 9
- 0x2070 // 0
-);
-
-bool process_record_aussie(uint16_t keycode, keyrecord_t *record) {
- bool is_shifted = (get_mods()) & MOD_MASK_SHIFT;
- if ((KC_A <= keycode) && (keycode <= KC_0)) {
- if (record->event.pressed)
- if (!process_record_glyph_replacement(keycode, record,
- unicode_lut_translator_aussie)) {
- tap_code16_nomods(KC_LEFT);
- return false;
- }
- } else if (record->event.pressed && keycode == KC_SPACE) {
- tap_code16_nomods(KC_SPACE);
- tap_code16_nomods(KC_LEFT);
- return false;
- } else if (record->event.pressed && keycode == KC_ENTER) {
- tap_code16_nomods(KC_END);
- tap_code16_nomods(KC_ENTER);
- return false;
- } else if (record->event.pressed && keycode == KC_HOME) {
- tap_code16_nomods(KC_END);
- return false;
- } else if (record->event.pressed && keycode == KC_END) {
- tap_code16_nomods(KC_HOME);
- return false;
- } else if (record->event.pressed && keycode == KC_BSPC) {
- tap_code16_nomods(KC_DEL);
- return false;
- } else if (record->event.pressed && keycode == KC_DEL) {
- tap_code16_nomods(KC_BSPC);
- return false;
- } else if (record->event.pressed && keycode == KC_QUOT) {
- tap_unicode_glyph_nomods(is_shifted ? 0x201E : 0x201A);
- tap_code16_nomods(KC_LEFT);
- return false;
- } else if (record->event.pressed && keycode == KC_COMMA) {
- tap_unicode_glyph_nomods(is_shifted ? '<' : 0x2018);
- tap_code16_nomods(KC_LEFT);
- return false;
- } else if (record->event.pressed && keycode == KC_DOT) {
- tap_unicode_glyph_nomods(is_shifted ? '>' : 0x02D9);
- tap_code16_nomods(KC_LEFT);
- return false;
- } else if (record->event.pressed && keycode == KC_SLASH) {
- tap_unicode_glyph_nomods(is_shifted ? 0x00BF : '/');
- tap_code16_nomods(KC_LEFT);
- return false;
- }
- return true;
-}
-
-bool process_record_zalgo(uint16_t keycode, keyrecord_t *record) {
- if ((KC_A <= keycode) && (keycode <= KC_0)) {
- if (record->event.pressed) {
- tap_code16_nomods(keycode);
- int num = (rand() % (8 + 1 - 2)) + 2;
- for (int i = 0; i < num; i++) {
- uint16_t hex = (rand() % (0x036F + 1 - 0x0300)) + 0x0300;
- register_unicode(hex);
- }
- return false;
- }
- }
- return true;
-}
-
-bool process_record_unicode(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case TABLE1:
- if (record->event.pressed) {
- send_unicode_string("┬──┬ ノ( ゜-゜ノ)");
- }
- break;
- case TABLE2:
- if (record->event.pressed) {
- send_unicode_string("(╯°□°)╯︵┻━┻");
- }
- break;
- case KC_NOMODE ... KC_SUPER:
- if (record->event.pressed) {
- if (typing_mode != keycode - KC_NOMODE)
- typing_mode = keycode - KC_NOMODE;
- else
- typing_mode = NOMODE;
- }
- break;
- }
- if (((get_mods()) & ~MOD_MASK_SHIFT) != 0)
- return true;
- if (((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) ||
- (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) &&
- record->tap.count)
- keycode &= 0xFF;
- if (typing_mode == WIDE) {
- if (((KC_A <= keycode) && (keycode <= KC_0)) || keycode == KC_SPACE)
- return process_record_glyph_replacement(keycode, record,
- unicode_range_translator_wide);
- } else if (typing_mode == SCRIPT) {
- if (((KC_A <= keycode) && (keycode <= KC_0)) || keycode == KC_SPACE)
- return process_record_glyph_replacement(keycode, record,
- unicode_range_translator_script);
- } else if (typing_mode == BLOCKS) {
- if (((KC_A <= keycode) && (keycode <= KC_0)) || keycode == KC_SPACE)
- return process_record_glyph_replacement(keycode, record,
- unicode_range_translator_boxes);
- } else if (typing_mode == REGIONAL) {
- if (((KC_A <= keycode) && (keycode <= KC_0)) || keycode == KC_SPACE) {
- if (!process_record_glyph_replacement(
- keycode, record, unicode_range_translator_regional)) {
- wait_us(500);
- tap_unicode_glyph_nomods(0x200C);
- return false;
- }
- }
- } else if (typing_mode == SUPER) {
- if (((KC_A <= keycode) && (keycode <= KC_0)))
- return process_record_glyph_replacement(keycode, record,
- unicode_lut_translator_super);
- } else if (typing_mode == AUSSIE)
- return process_record_aussie(keycode, record);
- else if (typing_mode == ZALGO)
- return process_record_zalgo(keycode, record);
- return true;
-}
diff --git a/waffle/waffle.c b/waffle/waffle.c
@@ -1,117 +0,0 @@
-// Copyright 2024 jack@pngu.org
-// SPDX-License-Identifier: GPL-2.0-or-later
-#include "waffle.h"
-#include "combos.h"
-
-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),
-};
-
-#if defined(SPLIT_KEYBOARD) && defined(OLED_ENABLE)
-#include "transactions.h"
-extern char keylog_str[KEYLOG_LEN + 1];
-void keylogger_sync(uint8_t initiator2target_buffer_size,
- const void *initiator2target_buffer,
- uint8_t target2initiator_buffer_size,
- void *target2initiator_buffer) {
- if (initiator2target_buffer_size == 5)
- memcpy(&keylog_str, initiator2target_buffer, initiator2target_buffer_size);
-}
-
-void housekeeping_task_user(void) {
- 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)) {
- needs_sync = true;
- memcpy(&tmp_keylog, &keylog_str, 5);
- }
- if (timer_elapsed32(last_sync) > 250)
- needs_sync = true;
- if (needs_sync) {
- if (transaction_rpc_send(RPC_ID_USER_KEYLOG_STR, 5, &keylog_str))
- last_sync = timer_read32();
- }
- }
-}
-#endif
-
-void keyboard_post_init_user(void) {
-#if defined(SPLIT_KEYBOARD) && defined(OLED_ENABLE)
- transaction_register_rpc(RPC_ID_USER_KEYLOG_STR, keylogger_sync);
-#endif
-#ifdef RGBLIGHT_ENABLE
- rgblight_enable_noeeprom();
- rgblight_sethsv_noeeprom(HSV_CYAN);
- rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
-#elif RGB_MATRIX_ENABLE
- rgb_matrix_enable_noeeprom();
- rgb_matrix_sethsv_noeeprom(HSV_CYAN);
- rgb_matrix_mode_noeeprom(RGB_MATRIX_SOLID_COLOR);
-#endif
-#ifdef CONSOLE_ENABLE
- debug_keyboard = true;
- debug_enable = true;
- debug_matrix = true;
- debug_mouse = true;
-#endif
-#ifdef AUTOCORRECT_ENABLE
- if (!autocorrect_is_enabled())
- autocorrect_enable();
-#endif
-}
-
-bool shutdown_user(bool jump_to_bootloader) {
-#ifdef OLED_ENABLE
- oled_render_boot(jump_to_bootloader);
-#endif
- return true;
-}
-
-#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
-
-#ifdef POINTING_DEVICE_ENABLE
-static bool scrolling = false;
-layer_state_t layer_state_set_user(layer_state_t state) {
- switch (get_highest_layer(state)) {
- case _LOWER:
- scrolling = true;
-#ifdef POINTING_DEVICE_DRIVER_pimoroni_trackball
- pimoroni_trackball_set_cpi(0.1);
-#else
- pointing_device_set_cpi(64);
-#endif
- break;
- default:
- if (scrolling) {
- scrolling = false;
-#ifdef POINTING_DEVICE_DRIVER_pimoroni_trackball
- pimoroni_trackball_set_cpi(1);
-#else
- pointing_device_set_cpi(1024);
-#endif
- }
- }
- return state;
-}
-
-report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) {
- if (scrolling) {
- mouse_report.h = mouse_report.x;
- mouse_report.v = -mouse_report.y;
- mouse_report.x = 0;
- mouse_report.y = 0;
- }
- return mouse_report;
-}
-#endif
diff --git a/waffle/waffle.h b/waffle/waffle.h
@@ -1,102 +0,0 @@
-// Copyright 2024 jack@pngu.org
-// SPDX-License-Identifier: GPL-2.0-or-later
-#pragma once
-#include QMK_KEYBOARD_H
-#ifdef OLED_ENABLE
-#include "oled.h"
-#endif
-
-enum layers { _BASE, _LOWER, _RAISE };
-
-enum tapdances { EM_DASH_MINS, PLY_NXT_PRV, PASTE_RAISE, CBRACKET, SBRACKET };
-
-enum sw_state { NONE, SELECTED, WORD, FIRST_LINE, LINE };
-
-enum custom_keycodes {
- UPDIR = QK_USER,
- NUKE,
- SELWORD,
- M_JIGGLE,
- TABLE1,
- TABLE2,
- KC_NOMODE,
- KC_WIDE,
- KC_SCRIPT,
- KC_BLOCKS,
- KC_REGIONAL,
- KC_AUSSIE,
- KC_ZALGO,
- KC_SUPER,
- RWORD
-};
-
-#ifdef UNICODE_COMMON_ENABLE
-bool process_record_unicode(uint16_t keycode, keyrecord_t *record);
-
-enum unicode_mode {
- NOMODE,
- WIDE,
- SCRIPT,
- BLOCKS,
- REGIONAL,
- AUSSIE,
- ZALGO,
- SUPER
-};
-#endif
-
-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);
-
-#define PNP TD(PLY_NXT_PRV)
-#define PSTRSE TD(PASTE_RAISE)
-#define ESCLWR LT(_LOWER, KC_ESC)
-#define LWRSPC LT(_LOWER, KC_SPC)
-#define RSEBSP LT(_RAISE, KC_BSPC)
-#define HRML(k1, k2, k3, k4) LALT_T(k1), LGUI_T(k2), LCTL_T(k3), LSFT_T(k4)
-#define HRMR(k1, k2, k3, k4) RSFT_T(k1), RCTL_T(k2), RGUI_T(k3), RALT_T(k4)
-
-#ifdef RGB_MATRIX_ENABLE
-#define XRGB_TOG RM_TOGG
-#define XRGB_NXT RM_NEXT
-#define XRGB_PRV RM_PREV
-#define XRGB_HUI RM_HUEU
-#define XRGB_HUD RM_HUED
-#define XRGB_SAI RM_SATU
-#define XRGB_SAD RM_SATD
-#define XRGB_VAI RM_VALU
-#define XRGB_VAD RM_VALD
-#elif RGBLIGHT_ENABLE
-#define XRGB_TOG UG_TOGG
-#define XRGB_NXT UG_NEXT
-#define XRGB_PRV UG_PREV
-#define XRGB_HUI UG_HUEU
-#define XRGB_HUD UG_HUED
-#define XRGB_SAI UG_SATU
-#define XRGB_SAD UG_SATD
-#define XRGB_VAI UG_VALU
-#define XRGB_VAD UG_VALD
-#endif
-
-// clang-format off
-#define ___BASE1___ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P
-#define ___BASE2___ HRML(KC_A, KC_S, KC_D, KC_F), KC_G, KC_H, HRMR(KC_J, KC_K, KC_L, KC_SCLN)
-#define ___BASE3___ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH
-#define ___BASE4___ UPDIR, ESCLWR, KC_SPC, KC_BSPC, PSTRSE, PNP
-
-#define ___LOWER1___ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0
-#define ___LOWER2___ HRML(KC_EXLM, KC_AT, KC_HASH, KC_DLR), KC_PERC, KC_CIRC, HRMR(KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN)
-#define ___LOWER3___ KC_VOLD, KC_TAB, KC_CAPS, SELWORD, KC_GRV, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_VOLU
-#define ___LOWER4___ _______, _______, _______, _______, NUKE, _______
-
-#define ___RAISE1___ XRGB_TOG, XRGB_NXT, XRGB_HUI, XRGB_SAI, XRGB_VAI, KC_NOMODE, KC_SCRIPT, KC_BLOCKS, KC_REGIONAL, QK_MAKE
-#define ___RAISE2___ M_JIGGLE, XRGB_PRV, XRGB_HUD, XRGB_SAD, XRGB_VAD, KC_WIDE, KC_AUSSIE, KC_ZALGO, KC_SUPER, QK_BOOT
-#define ___RAISE3___ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10
-#define ___RAISE4___ _______, RWORD, _______, _______, _______, _______
-// clang-format on
-
-#define LAYOUT_waffle_60_ts(...) LAYOUT_60_ansi_tsangan(__VA_ARGS__)
-#define LAYOUT_waffle_3x6(...) LAYOUT_split_3x6_3(__VA_ARGS__)
-#define LAYOUT_waffle(...) LAYOUT(__VA_ARGS__)