qmk_me

QMK Firmware userspace, keyboards, & keymaps
git clone git://git.pngu.org.org/qmk_me
Log | Files | Refs | Submodules | README | LICENSE

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:
Rwaffle/autocorrect_data.h -> jack/autocorrect_data.h | 0
Rwaffle/autocorrect_dict.txt -> jack/autocorrect_dict.txt | 0
Rwaffle/color.c -> jack/color.c | 0
Rwaffle/combos.def -> jack/combos.def | 0
Rwaffle/combos.h -> jack/combos.h | 0
Ajack/config.h | 51+++++++++++++++++++++++++++++++++++++++++++++++++++
Rwaffle/dict.h -> jack/dict.h | 0
Ajack/jack.c | 117+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Ajack/jack.h | 113+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Ajack/oled.c | 237+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Rwaffle/oled.h -> jack/oled.h | 0
Rwaffle/oledfont.h -> jack/oledfont.h | 0
Rwaffle/raw.py -> jack/raw.py | 0
Ajack/rules.mk | 50++++++++++++++++++++++++++++++++++++++++++++++++++
Ajack/tapping.c | 200+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Ajack/unicode.c | 280+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Akeyboards/grumpy/keymaps/jack/keymap.c | 13+++++++++++++
Dkeyboards/grumpy/keymaps/waffle/keymap.c | 13-------------
Akeyboards/leftover30/keymaps/jack/keymap.c | 20++++++++++++++++++++
Dkeyboards/leftover30/keymaps/waffle/keymap.c | 20--------------------
Akeyboards/locus/keymaps/jack/keymap.c | 26++++++++++++++++++++++++++
Dkeyboards/locus/keymaps/waffle/keymap.c | 26--------------------------
Dkeyboards/relic/keyboard.json | 60------------------------------------------------------------
Dkeyboards/relic/keymaps/waffle/keymap.c | 26--------------------------
Akeyboards/sweep/keymaps/jack/keymap.c | 26++++++++++++++++++++++++++
Dkeyboards/sweep/keymaps/waffle/keymap.c | 26--------------------------
Mkeyboards/tornish/keymaps/default/keymap.c | 12++++++------
Dkeyboards/vault35/keyboard.json | 72------------------------------------------------------------------------
Dkeyboards/vault35/keymaps/waffle/keymap.c | 26--------------------------
Akeyboards/xyz60/keymaps/jack/keymap.c | 32++++++++++++++++++++++++++++++++
Dkeyboards/xyz60/keymaps/waffle/keymap.c | 32--------------------------------
Mkeymaps/bully/keymap.c | 14+++++++-------
Mkeymaps/crkbd/config.h | 1-
Mkeymaps/crkbd/keymap.c | 26+++++++++++++-------------
Mkeymaps/f60/keymap.c | 8++++----
Mkeymaps/ferris/keymap.c | 12++++++------
Mkeymaps/kyria/keymap.c | 18+++++++++---------
Akeymaps/relic/keymap.c | 26++++++++++++++++++++++++++
Rkeyboards/relic/readme.md -> keymaps/relic/readme.md | 0
Dkeymaps/the_q/config.h | 7-------
Dkeymaps/the_q/keymap.c | 43-------------------------------------------
Dkeymaps/the_q/rules.mk | 1-
Akeymaps/vault35/config.h | 16++++++++++++++++
Akeymaps/vault35/keymap.c | 26++++++++++++++++++++++++++
Rkeyboards/vault35/readme.md -> keymaps/vault35/readme.md | 0
Akeymaps/vault35/rules.mk | 2++
Mreadme.md | 6+++---
Mutil/link.sh | 12++++++------
Dwaffle/config.h | 51---------------------------------------------------
Dwaffle/oled.c | 237-------------------------------------------------------------------------------
Dwaffle/rules.mk | 50--------------------------------------------------
Dwaffle/tapping.c | 200-------------------------------------------------------------------------------
Dwaffle/unicode.c | 280-------------------------------------------------------------------------------
Dwaffle/waffle.c | 117-------------------------------------------------------------------------------
Dwaffle/waffle.h | 102-------------------------------------------------------------------------------
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__)