qmk_me

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

commit 720bfba7125ba26af0dae4147e84a30707402623
parent fcad308bee5b958e14e49758a05a73c32a6aa0ef
Author: Jack Sangdahl <jack@pngu.org>
Date:   Sun,  7 Dec 2025 11:02:20 +0100

Tidy up some other code

Diffstat:
Dkeyboards/crkbd/keymaps/jack/config.h | 35-----------------------------------
Dkeyboards/crkbd/keymaps/jack/halconf.h | 7-------
Dkeyboards/crkbd/keymaps/jack/keymap.c | 85-------------------------------------------------------------------------------
Dkeyboards/crkbd/keymaps/jack/keymap.json | 13-------------
Dkeyboards/crkbd/keymaps/jack/mcuconf.h | 8--------
Dkeyboards/crkbd/keymaps/jack/readme.md | 8--------
Dkeyboards/crkbd/keymaps/jack/rules.mk | 9---------
Mkeyboards/splitkb/kyria/keymaps/jack/keymap.c | 8++++----
Dusers/jack/combos.def | 16----------------
Musers/jack/jack.c | 133+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Musers/jack/jack.h | 10++--------
Dusers/jack/post_rules.mk | 5-----
Musers/jack/rules.mk | 9+--------
Dusers/jack/tapping.c | 115-------------------------------------------------------------------------------
Dusers/jack/user_introspection.c | 32--------------------------------
Rusers/jack/autocorrect_dict.txt -> util/autocorrect_dict.txt | 0
Dutil/raw.py | 49-------------------------------------------------
17 files changed, 140 insertions(+), 402 deletions(-)

diff --git a/keyboards/crkbd/keymaps/jack/config.h b/keyboards/crkbd/keymaps/jack/config.h @@ -1,35 +0,0 @@ -// Copyright 2025 jack@pngu.org -// SPDX-License-Identifier: GPL-2.0-or-later -#pragma once - -#undef SOFT_SERIAL_PIN -#define SOFT_SERIAL_PIN D3 -#define CRC8_USE_TABLE -#define CRC8_OPTIMIZE_SPEED -#define SERIAL_USART_SPEED 921600 - -#ifdef RGB_MATRIX_ENABLE -#undef WS2812_DI_PIN -#define WS2812_DI_PIN B5 -#define WS2812_PWM_DRIVER PWMD3 -#define WS2812_PWM_CHANNEL 3 -#define WS2812_PWM_DMA_STREAM STM32_DMA1_STREAM3 -#define WS2812_PWM_DMA_CHANNEL 3 -#define WS2812_PWM_DMAMUX_ID STM32_DMAMUX1_TIM3_UP -#endif - -#ifdef ENCODER_ENABLE -#define ENCODER_A_PINS {B2} -#define ENCODER_B_PINS {B6} -#endif - -#ifdef AUDIO_ENABLE -#define AUDIO_PIN A5 -#define STARTUP_SONG SONG(ODE_TO_JOY) -#define AUDIO_CLICKY -#endif - -#ifdef POINTING_DEVICE_ENABLE -#define SPLIT_POINTING_ENABLE -#define POINTING_DEVICE_RIGHT -#endif diff --git a/keyboards/crkbd/keymaps/jack/halconf.h b/keyboards/crkbd/keymaps/jack/halconf.h @@ -1,7 +0,0 @@ -// Copyright 2025 jack@pngu.org -// SPDX-License-Identifier: GPL-2.0-or-later -#pragma once - -#define HAL_USE_SERIAL TRUE - -#include_next <halconf.h> diff --git a/keyboards/crkbd/keymaps/jack/keymap.c b/keyboards/crkbd/keymaps/jack/keymap.c @@ -1,85 +0,0 @@ -// Copyright 2025 jack@pngu.org -// SPDX-License-Identifier: GPL-2.0-or-later -#include "jack.h" - -void housekeeping_task_keymap(void) { - if (last_input_activity_elapsed() > 300000) { - const pin_t row_pins[] = MATRIX_ROW_PINS, col_pins[] = MATRIX_COL_PINS; - for (uint8_t i = 0; i < ARRAY_SIZE(col_pins); ++i) { - gpio_set_pin_output(col_pins[i]); - gpio_write_pin_low(col_pins[i]); - } - for (uint8_t i = 0; i < ARRAY_SIZE(row_pins); ++i) { - gpio_set_pin_input_high(row_pins[i]); - palEnableLineEvent(row_pins[i], PAL_EVENT_MODE_BOTH_EDGES); - } - __WFI(); - for (uint8_t i = 0; i < ARRAY_SIZE(row_pins); ++i) { - palDisableLineEvent(row_pins[i]); - gpio_write_pin_high(row_pins[i]); - gpio_set_pin_input_high(row_pins[i]); - } - for (uint8_t i = 0; i < ARRAY_SIZE(col_pins); ++i) { - gpio_write_pin_high(col_pins[i]); - gpio_set_pin_input_high(col_pins[i]); - } - } -} - -#ifdef AUDIO_ENABLE -void keyboard_pre_init_user(void) { // thank you to @sigprof for this - palSetLineMode(A5, PAL_MODE_INPUT_ANALOG); - palSetLineMode(B1, PAL_MODE_INPUT_ANALOG); -} - -void keyboard_post_init_keymap(void) { - // enable OPAMP1 as A5 → B1 follower - OPAMP3->CSR = OPAMP3_CSR_VMSEL_1 | OPAMP3_CSR_VMSEL_0 | OPAMP3_CSR_VPSEL_0 | - OPAMP3_CSR_OPAMP3EN; -} -#endif // audio - -#ifdef OLED_ENABLE -oled_rotation_t oled_init_user(oled_rotation_t rotation) { - return is_keyboard_master() ? OLED_ROTATION_180 : OLED_ROTATION_270; -} -#endif // oled - -#ifdef RGB_MATRIX_ENABLE -void matrix_init_user(void) { - g_led_config = (led_config_t){ - {{15, 16, 17, 18, 19, 20}, - {14, 13, 12, 11, 10, 9}, - {3, 4, 5, 6, 7, 8}, - {NO_LED, NO_LED, NO_LED, 2, 1, 0}, - {47, 46, 45, 44, 43, 42}, - {36, 37, 38, 39, 40, 41}, - {35, 34, 33, 32, 31, 30}, - {NO_LED, NO_LED, NO_LED, 27, 28, 29}}, - { - {95, 63}, {85, 39}, {85, 21}, {85, 4}, {68, 2}, {68, 19}, - {68, 37}, {80, 58}, {60, 55}, {50, 35}, {50, 13}, {50, 0}, - {33, 3}, {33, 20}, {33, 37}, {16, 42}, {16, 24}, {16, 7}, - {0, 7}, {0, 24}, {0, 41}, {85, 16}, {50, 13}, {16, 20}, - {16, 38}, {50, 48}, {85, 52}, {129, 63}, {139, 39}, {139, 21}, - {139, 4}, {156, 2}, {156, 19}, {156, 37}, {144, 58}, {164, 55}, - {174, 35}, {174, 13}, {174, 0}, {191, 3}, {191, 20}, {191, 37}, - {208, 42}, {208, 24}, {208, 7}, {224, 7}, {224, 24}, {224, 41}, - {139, 16}, {174, 13}, {208, 20}, {208, 38}, {174, 48}, {139, 52}, - }, - {1, 1, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, - 4, 4, 4, 2, 2, 2, 2, 2, 2, 1, 1, 1, 4, 4, 4, 4, 4, 1, - 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 2, 2, 2, 2, 2, 2}}; -} - -extern LED_TYPE rgb_matrix_ws2812_array[RGB_MATRIX_LED_COUNT]; -bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { - pimoroni_trackball_set_rgbw(rgb_matrix_ws2812_array[29].r, - rgb_matrix_ws2812_array[29].g, - rgb_matrix_ws2812_array[29].b, 0); - for (uint8_t i = led_min; i <= led_max; i++) - if (g_led_config.flags[i] & LED_FLAG_UNDERGLOW) - rgb_matrix_set_color(i, RGB_YELLOW); - return false; -} -#endif // rgb matrix diff --git a/keyboards/crkbd/keymaps/jack/keymap.json b/keyboards/crkbd/keymaps/jack/keymap.json @@ -1,13 +0,0 @@ -{ - "keyboard": "crkbd/rev1", - "keymap": "jack", - "layout": "LAYOUT_split_3x6_3", - "layers": [ - [ - "KC_TAB", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_BSPC", - "KC_LCTL", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_QUOT", - "KC_LSFT", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_ESC", - "KC_LGUI", "KC_LPRN", "KC_SPC", "KC_ENT", "KC_RPRN", "KC_RALT" - ] - ] -} diff --git a/keyboards/crkbd/keymaps/jack/mcuconf.h b/keyboards/crkbd/keymaps/jack/mcuconf.h @@ -1,8 +0,0 @@ -// Copyright 2025 jack@pngu.org -// SPDX-License-Identifier: GPL-2.0-or-later -#pragma once - -#include_next <mcuconf.h> - -#undef STM32_PWM_USE_TIM3 -#define STM32_PWM_USE_TIM3 TRUE diff --git a/keyboards/crkbd/keymaps/jack/readme.md b/keyboards/crkbd/keymaps/jack/readme.md @@ -1,8 +0,0 @@ -# [Proton-C crkbd](https://git.pngu.org/protoncrkbd) - -![img](https://i.imgur.com/ob8D0hY.jpeg) - -## Miscellaneous Notes -- [Low Scan Mode](https://github.com/waffle87/qmk.me/blob/master/keymaps/crkbd/keymap.c#L5-#L27) to avoid unnecessary scans if there's no matrix activity (5s timeout) -- [Audio Configuration](https://github.com/waffle87/qmk.me/blob/master/keymaps/crkbd/keymap.c#L30-#L39) to pass output from B1 to A5 (proper DAC pin) -- [Align Pimoroni Trackball LED](https://github.com/waffle87/qmk.me/blob/master/keymaps/crkbd/keymap.c#L90-#L99) with active RGB Matrix animation/colour, and sets underglow LEDs to yellow diff --git a/keyboards/crkbd/keymaps/jack/rules.mk b/keyboards/crkbd/keymaps/jack/rules.mk @@ -1,9 +0,0 @@ -CONVERT_TO = proton_c -SERIAL_DRIVER = usart -WS2812_DRIVER = pwm -OLED_ENABLE = yes -AUDIO_ENABLE = yes -AUDIO_DRIVER = dac_basic -ENCODER_ENABLE = yes -POINTING_DEVICE_ENABLE = yes -POINTING_DEVICE_DRIVER = pimoroni_trackball diff --git a/keyboards/splitkb/kyria/keymaps/jack/keymap.c b/keyboards/splitkb/kyria/keymaps/jack/keymap.c @@ -19,10 +19,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [LAYER3] = LAYOUT_jack( - _______, XRGB_TOG, XRGB_NXT, XRGB_HUI, XRGB_SAI, XRGB_VAI, _______, _______, _______, _______, QK_MAKE, _______, - _______, MS_JIGGLE, XRGB_PRV, XRGB_HUD, XRGB_SAD, XRGB_VAD, _______, _______, _______, _______, QK_BOOT, _______, - _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, _______, _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + _______, XRGB_TOG, XRGB_NXT, XRGB_HUI, XRGB_SAI, XRGB_VAI, _______, _______, _______, _______, QK_MAKE, _______, + _______, LUMINO, XRGB_PRV, XRGB_HUD, XRGB_SAD, XRGB_VAD, _______, _______, _______, _______, QK_BOOT, _______, + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, _______, _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ) }; // clang-format on diff --git a/users/jack/combos.def b/users/jack/combos.def @@ -1,16 +0,0 @@ -// Copyright 2025 jack@pngu.org -// SPDX-License-Identifier: GPL-2.0-or-later - -// name output keys -CMB(fg_eqal, KC_EQL, KC_W, KC_E) -CMB(er_cbkt, TD(CBRACKET), KC_E, KC_R) -CMB(rt_bsls, KC_BSLS, KC_R, KC_T) -CMB(yu_quot, KC_QUOT, KC_Y, KC_U) -CMB(ui_brkt, TD(SBRACKET), KC_U, KC_I) -CMB(io_mins, TD(EM_DASH_MINS), KC_I, KC_O) -CMB(sd_plus, KC_PLUS, LGUI_T(KC_S), LCTL_T(KC_D)) -CMB(df_coln, KC_COLN, LCTL_T(KC_D), LSFT_T(KC_F)) -CMB(fg_pipe, KC_PIPE, LSFT_T(KC_F), KC_G) -CMB(hj_dquo, KC_DQUO, KC_H, RSFT_T(KC_J)) -CMB(jk_entr, KC_ENT, RSFT_T(KC_J), RCTL_T(KC_K)) -CMB(kl_unds, KC_UNDS, RCTL_T(KC_K), RGUI_T(KC_L)) diff --git a/users/jack/jack.c b/users/jack/jack.c @@ -51,3 +51,136 @@ bool oled_task_user(void) { return false; } #endif + +#define INTERCEPT_MOD_TAP(mod, keycode) \ + case mod(keycode): \ + if (record->tap.count && record->event.pressed) { \ + tap_code16(keycode); \ + return false; \ + } \ + break; + +uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case ESCLWR: + case PSTRSE: + case LWRSPC: + 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; + } +} + +#ifdef TAP_DANCE_ENABLE +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; + } +} + +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), + [CBRACKET] = ACTION_TAP_DANCE_DOUBLE(KC_LCBR, KC_RCBR), + [SBRACKET] = ACTION_TAP_DANCE_DOUBLE(KC_LBRC, KC_RBRC), +}; +#endif + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { +#ifdef OLED_ENABLE + if (record->event.pressed) + oled_timer_reset(); +#endif + switch (keycode) { + case UPDIR: + if (record->event.pressed) + SEND_STRING("../"); + break; + case REMOVE: + if (record->event.pressed) { + SEND_STRING("```suggestion\n```"); + tap_code(KC_UP); + tap_code(KC_UP); + tap_code(KC_ENT); + tap_code(KC_UP); + } + 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) + } + return true; +} + +#ifdef ENCODER_MAP_ENABLE +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [LAYER0] = {{KC_VOLU, KC_VOLD}, {KC_MNXT, KC_MPRV}}, + [LAYER1] = {{XRGB_SAI, XRGB_SAD}, {XRGB_HUI, XRGB_HUD}}, + [LAYER3] = {{C(KC_LEFT), C(KC_RGHT)}, {C(S(KC_TAB)), C(KC_TAB)}}}; +#endif + +#ifdef COMBO_ENABLE +const uint16_t PROGMEM we_eqal[] = {KC_W, KC_E, COMBO_END}; +const uint16_t PROGMEM er_cbkt[] = {KC_E, KC_R COMBO_END}; +const uint16_t PROGMEM rt_bsls[] = {KC_R, KC_T, COMBO_END}; +const uint16_t PROGMEM yu_quot[] = {KC_Y, KC_U, COMBO_END}; +const uint16_t PROGMEM ui_brkt[] = {KC_U, KC_I, COMBO_END}; +const uint16_t PROGMEM io_mins[] = {KC_I, KC_O, COMBO_END}; +const uint16_t PROGMEM sd_plus[] = {LGUI_T(KC_S), LCTL_T(KC_D), COMBO_END}; +const uint16_t PROGMEM df_coln[] = {LCTL_T(KC_D), LSFT_T(KC_F), COMBO_END}; +const uint16_t PROGMEM fg_pipe[] = {LSFT_T(KC_F), KC_G, COMBO_END}; +const uint16_t PROGMEM hj_dquo[] = {KC_H, RSFT_T(KC_J), COMBO_END}; +const uint16_t PROGMEM jk_entr[] = {RSFT_T(KC_J), RCTL_T(KC_K), COMBO_END}; +const uint16_t PROGMEM kl_unds[] = {RCTL_T(KC_K), RGUI_T(KC_L), COMBO_END}; + +combo_t key_combos[] = { + // clang-format off + COMBO(we_eqal, KC_EQL), + COMBO(er_cbkt, TD(CBRACKET)), + COMBO(rt_bsls, KC_BSLS), + COMBO(yu_quot, KC_QUOT), + COMBO(ui_brkt, TD(SBRACKET)), + COMBO(io_mins, TD(EM_DASH_MINS)), + COMBO(sd_plus, KC_PLUS), + COMBO(df_coln, KC_COLN), + COMBO(fg_pipe, KC_PIPE), + COMBO(hj_dquo, KC_DQUO), + COMBO(jk_entr, KC_ENT), + COMBO(kl_unds, KC_UNDS) + // clang-format on +}; +#endif diff --git a/users/jack/jack.h b/users/jack/jack.h @@ -7,13 +7,7 @@ enum layers { LAYER0, LAYER1, LAYER3 }; enum tapdances { EM_DASH_MINS, PLY_NXT_PRV, CBRACKET, SBRACKET }; -enum custom_keycodes { UPDIR = QK_USER, REMOVE, MS_JIGGLE }; - -#define CMB(name, action, ...) name, -enum combos { -#include "combos.def" -}; -#undef CMB +enum custom_keycodes { UPDIR = QK_USER, REMOVE }; #ifdef TAP_DANCE_ENABLE void em_dash_mins(tap_dance_state_t *state, void *user_data); @@ -97,7 +91,7 @@ void keyboard_post_init_keymap(void); // #define ___LAYER13___ _______, _______, _______, _______ #define ___LAYER30___ XRGB_TOG, XRGB_NXT, XRGB_HUI, XRGB_SAI, XRGB_VAI, _______, _______, _______, _______, QK_MAKE -#define ___LAYER31___ MS_JIGGLE, XRGB_PRV, XRGB_HUD, XRGB_SAD, XRGB_VAD, _______, _______, _______, _______, QK_BOOT +#define ___LAYER31___ LUMINO, XRGB_PRV, XRGB_HUD, XRGB_SAD, XRGB_VAD, _______, _______, _______, _______, QK_BOOT #define ___LAYER32___ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10 #define ___LAYER33___ _______, _______, _______, _______ // clang-format on diff --git a/users/jack/post_rules.mk b/users/jack/post_rules.mk @@ -1,5 +0,0 @@ -ifeq ($(strip $(MOUSE_JIGGLE_ENABLE)), yes) - OPT_DEFS += -DMOUSE_JIGGLE_ENABLE - MOUSEKEY_ENABLE = yes - DEFERRED_EXEC_ENABLE = yes -endif diff --git a/users/jack/rules.mk b/users/jack/rules.mk @@ -11,16 +11,9 @@ CAPS_WORD_ENABLE = yes TAP_DANCE_ENABLE = yes SPACE_CADET_ENABLE = no AUTOCORRECT_ENABLE = yes -MOUSE_JIGGLE_ENABLE = yes OS_DETECTION_ENABLE = yes -INTROSPECTION_KEYMAP_C = user_introspection.c - -SRC += $(USER_PATH)/jack.c $(USER_PATH)/tapping.c +INTROSPECTION_KEYMAP_C = jack.c ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes) SRC += $(USER_PATH)/colour.c endif - -ifeq ($(PLATFORM), CHIBIOS) - EXTRAFLAGS += -O3 -endif diff --git a/users/jack/tapping.c b/users/jack/tapping.c @@ -1,115 +0,0 @@ -// Copyright 2025 jack@pngu.org -// SPDX-License-Identifier: GPL-2.0-or-later -#include "jack.h" - -#define INTERCEPT_MOD_TAP(mod, keycode) \ - case mod(keycode): \ - if (record->tap.count && record->event.pressed) { \ - tap_code16(keycode); \ - return false; \ - } \ - break; - -uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case ESCLWR: - case PSTRSE: - case LWRSPC: - 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; - } -} - -#ifdef TAP_DANCE_ENABLE -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; - } -} -#endif - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { -#ifdef OLED_ENABLE - if (record->event.pressed) - oled_timer_reset(); -#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 == MS_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 REMOVE: - if (record->event.pressed) { - SEND_STRING("```suggestion\n```"); - tap_code(KC_UP); - tap_code(KC_UP); - tap_code(KC_ENT); - tap_code(KC_UP); - } - 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) - } - return true; -} diff --git a/users/jack/user_introspection.c b/users/jack/user_introspection.c @@ -1,32 +0,0 @@ -// Copyright 2025 jack@pngu.org -// SPDX-License-Identifier: GPL-2.0-or-later -#include "jack.h" - -#ifdef TAP_DANCE_ENABLE -tap_dance_action_t tap_dance_actions[] = { - [EM_DASH_MINS] = ACTION_TAP_DANCE_FN(em_dash_mins), - [PLY_NXT_PRV] = ACTION_TAP_DANCE_FN(ply_nxt_prv), - [CBRACKET] = ACTION_TAP_DANCE_DOUBLE(KC_LCBR, KC_RCBR), - [SBRACKET] = ACTION_TAP_DANCE_DOUBLE(KC_LBRC, KC_RBRC), -}; -#endif - -#ifdef ENCODER_MAP_ENABLE -const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { - [LAYER0] = {{KC_VOLU, KC_VOLD}, {KC_MNXT, KC_MPRV}}, - [LAYER1] = {{XRGB_SAI, XRGB_SAD}, {XRGB_HUI, XRGB_HUD}}, - [LAYER3] = {{C(KC_LEFT), C(KC_RGHT)}, {C(S(KC_TAB)), C(KC_TAB)}}}; -#endif - -#ifdef COMBO_ENABLE -#define CMB(name, action, ...) \ - uint16_t const name##_combo[] PROGMEM = {__VA_ARGS__, COMBO_END}; -#include "combos.def" -#undef CMB - -#define CMB(name, action, ...) [name] = COMBO(name##_combo, action), -combo_t key_combos[] = { -#include "combos.def" -}; -#undef CMB -#endif diff --git a/users/jack/autocorrect_dict.txt b/util/autocorrect_dict.txt diff --git a/util/raw.py b/util/raw.py @@ -1,49 +0,0 @@ -# Copyright 2025 jack@pngu.org -# SPDX-License-Identifier: GPL-2.0-or-later -import hid -import sys -import psutil -import math -import time -import datetime - -vendor_id = 0x6A73 -product_id = 0x6B62 -usage_page = 0xFF60 -usage = 0x61 - - -def get_raw_hid_interface(): - device_interfaces = hid.enumerate(vendor_id, product_id) - raw_hid_interfaces = [ - i - for i in device_interfaces - if i["usage_page"] == usage_page and i["usage"] == usage - ] - if len(raw_hid_interfaces) == 0: - return None - interface = hid.Device(path=raw_hid_interfaces[0]["path"]) - return interface - - -def send_packet(data): - interface = get_raw_hid_interface() - if interface is None: - print("no device found") - sys.exit(1) - request_data = [0x00] * 32 - request_data[1 : len(data) + 1] = data - request_packet = bytes(request_data) - try: - interface.write(request_packet) - finally: - interface.close() - - -if __name__ == "__main__": - while True: - time.sleep(30) - cpu_temp = psutil.sensors_temperatures()["gigabyte_wmi"][2] - cur_hour = datetime.datetime.now().strftime("%H") - cur_minute = datetime.datetime.now().strftime("%M") - send_packet([math.trunc(cpu_temp.current), int(cur_hour), int(cur_minute)])