1.1--- a/.config/kbd/moonlander/50-zsa.rules Fri Aug 30 17:07:30 2024 -0400
1.2+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
1.3@@ -1,2 +0,0 @@
1.4-# Keymapp / Wally Flashing rules for the Moonlander and Planck EZ
1.5-SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", MODE:="0666", SYMLINK+="stm32_dfu"
1.6\ No newline at end of file
2.1--- a/.config/kbd/moonlander/config.h Fri Aug 30 17:07:30 2024 -0400
2.2+++ b/.config/kbd/moonlander/config.h Sat Sep 07 22:40:44 2024 -0400
2.3@@ -2,12 +2,23 @@
2.4 Set any config.h overrides for your specific keymap here.
2.5 See config.h options at https://docs.qmk.fm/#/config_options?id=the-configh-file
2.6 */
2.7-#pragma once
2.8 #define ORYX_CONFIGURATOR
2.9+#define IGNORE_MOD_TAP_INTERRUPT
2.10+#undef TAPPING_TERM
2.11+#define TAPPING_TERM 174
2.12+
2.13+#undef RGB_DISABLE_TIMEOUT
2.14+#define RGB_DISABLE_TIMEOUT 600000
2.15+
2.16 #define USB_SUSPEND_WAKEUP_DELAY 0
2.17-#define FIRMWARE_VERSION u8"xbJpL/AaEdK"
2.18+#undef MOUSEKEY_INTERVAL
2.19+#define MOUSEKEY_INTERVAL 12
2.20+
2.21+#define AUTO_SHIFT_TIMEOUT 174
2.22+#define CAPS_LOCK_STATUS
2.23+#define FIRMWARE_VERSION u8"PDwV9/9yMR3"
2.24 #define RAW_USAGE_PAGE 0xFF60
2.25 #define RAW_USAGE_ID 0x61
2.26 #define LAYER_STATE_8BIT
2.27+
2.28 #define RGB_MATRIX_STARTUP_SPD 60
2.29-
3.1--- a/.config/kbd/moonlander/keymap.c Fri Aug 30 17:07:30 2024 -0400
3.2+++ b/.config/kbd/moonlander/keymap.c Sat Sep 07 22:40:44 2024 -0400
3.3@@ -46,21 +46,24 @@
3.4 #define SE_SECT_MAC ALGR(KC_6)
3.5 #define MOON_LED_LEVEL LED_LEVEL
3.6
3.7-enum layers {
3.8- MAIN,
3.9+enum custom_keycodes {
3.10+ RGB_SLD = ML_SAFE_RANGE,
3.11 };
3.12
3.13-enum custom_keycodes {
3.14- VRSN = SAFE_RANGE,
3.15- HSV_0_245_245,
3.16- HSV_74_255_206,
3.17- HSV_152_255_255,
3.18+enum tap_dance_codes {
3.19+ DANCE_0,
3.20+ DANCE_1,
3.21+ DANCE_2,
3.22+ DANCE_3,
3.23+ DANCE_4,
3.24+ DANCE_5,
3.25+ DANCE_6,
3.26+ DANCE_7,
3.27+ DANCE_8,
3.28 };
3.29
3.30-
3.31-
3.32 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
3.33- [MAIN] = LAYOUT_moonlander(
3.34+ [0] = LAYOUT_moonlander(
3.35 // 1
3.36 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_EQL,
3.37 KC_GRAVE, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS,
3.38@@ -74,25 +77,471 @@
3.39 KC_LSFT, KC_Z ,KC_X, KC_C, KC_V, KC_B,
3.40 KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLASH, KC_BSPC,
3.41 // 5
3.42- KC_UP, KC_DOWN, KC_LBRC, KC_LPRN, KC_SPC, LCTL,
3.43- LALT, KC_SPC, KC_RPRN, KC_RBRC, KC_LEFT, KC_RIGHT,
3.44+ KC_UP, KC_DOWN, KC_LBRC, KC_LPRN, KC_SPC, KC_LCTL,
3.45+ KC_LALT, KC_SPC, KC_RPRN, KC_RBRC, KC_LEFT, KC_RIGHT,
3.46 // 6
3.47 A(KC_X), C(KC_C), KC_LGUI,
3.48 ALT_T(KC_PASTE), RGB_MODE_FORWARD, QK_LOCK
3.49 ),
3.50+ [1] = LAYOUT_moonlander(
3.51+ KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_PSCREEN, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
3.52+ KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
3.53+ KC_ESCAPE, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
3.54+ KC_LSHIFT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_RSHIFT,
3.55+ TT(2), TD(DANCE_6), KC_9, KC_0, KC_ENTER, MO(4), LT(4,KC_ENTER), KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, TT(3),
3.56+ KC_LALT, KC_SPACE, KC_LCTRL, KC_DELETE, KC_SPACE, KC_BSPACE
3.57+ ),
3.58+ [2] = LAYOUT_moonlander(
3.59+ KC_NUMLOCK, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_TRANSPARENT, KC_NUMLOCK, KC_KP_SLASH, KC_KP_ASTERISK, KC_NO, KC_SCROLLLOCK, KC_PAUSE,
3.60+ KC_KP_DOT, KC_KP_ASTERISK, KC_KP_PLUS, KC_KP_7, KC_KP_8, KC_KP_9, KC_F7, KC_TRANSPARENT, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_MINUS, KC_PGUP, KC_PGDOWN,
3.61+ KC_TRANSPARENT, KC_KP_SLASH, KC_KP_MINUS, KC_KP_4, KC_KP_5, KC_KP_6, KC_F8, KC_TRANSPARENT, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_PLUS, KC_HOME, KC_END,
3.62+ TD(DANCE_7), KC_F11, KC_F12, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_ENTER, KC_TRANSPARENT, TD(DANCE_8),
3.63+ KC_TRANSPARENT, KC_INSERT, KC_F9, KC_F10, KC_KP_0, KC_KP_ENTER, CAPS_WORD, KC_KP_0, KC_KP_DOT, KC_EQUAL, KC_TRANSPARENT, TO(0),
3.64+ MT(MOD_LALT, KC_PGUP),KC_SPACE, MT(MOD_LCTL, KC_PGDOWN), KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT
3.65+ ),
3.66+ [3] = LAYOUT_moonlander(
3.67+ KC_TRANSPARENT, KC_TRANSPARENT, KC_MS_ACCEL0, KC_MS_ACCEL1, KC_MS_ACCEL2, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_AUDIO_MUTE, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, RESET,
3.68+ KC_TRANSPARENT, KC_MS_BTN5, KC_MS_WH_LEFT, KC_MS_UP, KC_MS_WH_RIGHT, KC_MS_WH_UP, KC_TRANSPARENT, KC_MS_WH_LEFT, KC_TRANSPARENT, KC_AUDIO_VOL_DOWN,KC_AUDIO_VOL_UP,KC_TRANSPARENT, KC_MEDIA_PREV_TRACK,KC_MEDIA_NEXT_TRACK,
3.69+ KC_TRANSPARENT, KC_MS_BTN4, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_WH_DOWN, KC_TRANSPARENT, KC_MS_WH_RIGHT, LCTL(LSFT(KC_LEFT)),LCTL(KC_LEFT), LCTL(KC_RIGHT), LCTL(LSFT(KC_RIGHT)),KC_MEDIA_STOP, KC_MEDIA_PLAY_PAUSE,
3.70+ MT(MOD_LSFT, KC_LBRACKET),KC_TRANSPARENT, KC_MS_BTN1, KC_MS_BTN3, KC_MS_BTN2, KC_TRANSPARENT, KC_TRANSPARENT, LCTL(LSFT(KC_T)),LCTL(KC_PGUP), LCTL(KC_PGDOWN),KC_TRANSPARENT, MT(MOD_RSFT, KC_RBRACKET),
3.71+ TO(0), TO(1), LGUI(LCTL(KC_LEFT)),LGUI(LCTL(KC_RIGHT)),KC_TRANSPARENT, KC_ASTG, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
3.72+ KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, MT(MOD_RCTL, KC_INSERT),KC_SPACE, KC_TRANSPARENT
3.73+ ),
3.74+ [4] = LAYOUT_moonlander(
3.75+ KC_INSERT, KC_LCBR, KC_RCBR, KC_LBRACKET, KC_RBRACKET, KC_MINUS, KC_EQUAL, KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6,
3.76+ KC_DELETE, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLASH, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_7,
3.77+ KC_BSPACE, KC_H, KC_J, KC_K, KC_L, KC_SCOLON, KC_QUOTE, KC_ESCAPE, KC_A, KC_S, KC_D, KC_F, KC_G, KC_8,
3.78+ KC_RSPC, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLASH, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LSPO,
3.79+ KC_ENTER, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, TO(0), TO(0), KC_LGUI, KC_9, KC_0, KC_HOME, KC_END,
3.80+ OSM(MOD_LALT), KC_SPACE, OSM(MOD_LCTL), OSM(MOD_LCTL), KC_SPACE, OSM(MOD_LALT)
3.81+ ),
3.82 // [MACRO]
3.83 // [LISP]
3.84 // [CTL]
3.85 // [CMD]
3.86 };
3.87
3.88+extern rgb_config_t rgb_matrix_config;
3.89+
3.90+void keyboard_post_init_user(void) {
3.91+ rgb_matrix_enable();
3.92+}
3.93+
3.94+
3.95+const uint8_t PROGMEM ledmap[][DRIVER_LED_TOTAL][3] = {
3.96+ [0] = { {188,255,255}, {188,255,255}, {188,255,255}, {151,255,255}, {25,255,255}, {102,255,255}, {151,255,255}, {151,255,255}, {151,255,255}, {188,255,255}, {102,255,255}, {151,255,255}, {151,255,255}, {151,255,255}, {102,255,255}, {102,255,255}, {151,255,255}, {151,255,255}, {151,255,255}, {102,255,255}, {102,255,255}, {151,255,255}, {151,255,255}, {151,255,255}, {188,255,255}, {102,255,255}, {151,255,255}, {151,255,255}, {151,255,255}, {102,255,255}, {102,255,255}, {102,255,255}, {151,255,255}, {25,255,255}, {152,255,255}, {7,255,255}, {102,255,255}, {102,255,255}, {102,255,255}, {151,255,255}, {25,255,255}, {102,255,255}, {151,255,255}, {102,255,255}, {102,255,255}, {188,255,255}, {102,255,255}, {151,255,255}, {151,255,255}, {102,255,255}, {188,255,255}, {102,255,255}, {151,255,255}, {151,255,255}, {102,255,255}, {188,255,255}, {102,255,255}, {151,255,255}, {151,255,255}, {151,255,255}, {188,255,255}, {102,255,255}, {151,255,255}, {151,255,255}, {151,255,255}, {188,255,255}, {188,255,255}, {188,255,255}, {152,255,255}, {25,255,255}, {152,255,255}, {7,255,255} },
3.97+
3.98+ [1] = { {188,255,255}, {188,255,255}, {188,255,255}, {188,255,255}, {0,245,245}, {102,255,255}, {151,255,255}, {25,255,255}, {151,255,255}, {25,255,255}, {102,255,255}, {25,255,255}, {25,255,255}, {151,255,255}, {102,255,255}, {102,255,255}, {151,255,255}, {25,255,255}, {151,255,255}, {102,255,255}, {102,255,255}, {151,255,255}, {151,255,255}, {151,255,255}, {25,255,255}, {102,255,255}, {151,255,255}, {151,255,255}, {151,255,255}, {102,255,255}, {102,255,255}, {102,255,255}, {151,255,255}, {25,255,255}, {151,255,255}, {0,245,245}, {102,255,255}, {102,255,255}, {102,255,255}, {151,255,255}, {0,245,245}, {102,255,255}, {151,255,255}, {102,255,255}, {102,255,255}, {25,255,255}, {102,255,255}, {151,255,255}, {151,255,255}, {102,255,255}, {25,255,255}, {102,255,255}, {151,255,255}, {151,255,255}, {102,255,255}, {25,255,255}, {102,255,255}, {151,255,255}, {151,255,255}, {151,255,255}, {25,255,255}, {102,255,255}, {151,255,255}, {151,255,255}, {151,255,255}, {188,255,255}, {188,255,255}, {188,255,255}, {151,255,255}, {25,255,255}, {151,255,255}, {25,255,255} },
3.99+
3.100+ [2] = { {41,255,255}, {102,255,255}, {0,0,0}, {188,255,255}, {151,255,255}, {188,255,255}, {102,255,255}, {102,255,255}, {188,255,255}, {25,255,255}, {188,255,255}, {102,255,255}, {102,255,255}, {188,255,255}, {188,255,255}, {188,255,255}, {151,255,255}, {0,0,255}, {151,255,255}, {188,255,255}, {188,255,255}, {0,0,255}, {151,255,255}, {0,0,255}, {151,255,255}, {188,255,255}, {151,255,255}, {0,0,255}, {151,255,255}, {188,255,255}, {188,255,255}, {188,255,255}, {151,255,255}, {0,0,0}, {151,255,255}, {41,255,255}, {188,255,255}, {25,255,255}, {25,255,255}, {188,255,255}, {151,255,255}, {188,255,255}, {25,255,255}, {25,255,255}, {0,0,0}, {0,0,0}, {0,0,0}, {102,255,255}, {102,255,255}, {102,255,255}, {41,255,255}, {102,255,255}, {151,255,255}, {0,0,255}, {151,255,255}, {102,255,255}, {102,255,255}, {0,0,255}, {151,255,255}, {0,0,255}, {151,255,255}, {41,255,255}, {151,255,255}, {0,0,255}, {151,255,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {41,255,255} },
3.101+
3.102+ [3] = { {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {151,255,255}, {0,0,0}, {25,255,255}, {25,255,255}, {0,0,0}, {25,255,255}, {0,245,245}, {188,255,255}, {74,255,255}, {25,255,255}, {188,255,255}, {0,245,245}, {74,255,255}, {74,255,255}, {25,255,255}, {188,255,255}, {0,245,245}, {188,255,255}, {74,255,255}, {25,255,255}, {0,0,0}, {0,0,0}, {188,255,255}, {188,255,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {41,255,255}, {41,255,255}, {0,245,245}, {0,245,245}, {0,0,0}, {152,255,255}, {0,0,0}, {0,245,245}, {255,245,245}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {151,255,255}, {25,255,255}, {0,0,0}, {0,0,0}, {41,255,255}, {74,255,255}, {25,255,255}, {0,0,0}, {41,255,255}, {41,255,255}, {74,255,255}, {25,255,255}, {0,0,0}, {0,0,0}, {0,0,0}, {151,255,255}, {0,0,0}, {0,0,0}, {188,255,255}, {188,255,255}, {0,0,0}, {0,0,0}, {151,255,255}, {0,0,0} },
3.103+
3.104+ [4] = { {188,255,255}, {188,255,255}, {188,255,255}, {188,255,255}, {25,255,255}, {151,255,255}, {102,255,255}, {102,255,255}, {102,255,255}, {188,255,255}, {151,255,255}, {102,255,255}, {102,255,255}, {102,255,255}, {188,255,255}, {151,255,255}, {102,255,255}, {102,255,255}, {151,255,255}, {188,255,255}, {151,255,255}, {102,255,255}, {102,255,255}, {151,255,255}, {188,255,255}, {151,255,255}, {102,255,255}, {151,255,255}, {151,255,255}, {151,255,255}, {151,255,255}, {151,255,255}, {25,255,255}, {151,255,255}, {25,255,255}, {25,255,255}, {151,255,255}, {151,255,255}, {151,255,255}, {188,255,255}, {188,255,255}, {151,255,255}, {102,255,255}, {102,255,255}, {102,255,255}, {188,255,255}, {151,255,255}, {102,255,255}, {102,255,255}, {102,255,255}, {151,255,255}, {151,255,255}, {102,255,255}, {102,255,255}, {102,255,255}, {151,255,255}, {151,255,255}, {102,255,255}, {102,255,255}, {102,255,255}, {188,255,255}, {151,255,255}, {102,255,255}, {102,255,255}, {102,255,255}, {188,255,255}, {188,255,255}, {188,255,255}, {25,255,255}, {151,255,255}, {25,255,255}, {25,255,255} },
3.105+
3.106+};
3.107+
3.108+void set_layer_color(int layer) {
3.109+ for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
3.110+ HSV hsv = {
3.111+ .h = pgm_read_byte(&ledmap[layer][i][0]),
3.112+ .s = pgm_read_byte(&ledmap[layer][i][1]),
3.113+ .v = pgm_read_byte(&ledmap[layer][i][2]),
3.114+ };
3.115+ if (!hsv.h && !hsv.s && !hsv.v) {
3.116+ rgb_matrix_set_color( i, 0, 0, 0 );
3.117+ } else {
3.118+ RGB rgb = hsv_to_rgb( hsv );
3.119+ float f = (float)rgb_matrix_config.hsv.v / UINT8_MAX;
3.120+ rgb_matrix_set_color( i, f * rgb.r, f * rgb.g, f * rgb.b );
3.121+ }
3.122+ }
3.123+}
3.124+
3.125+void rgb_matrix_indicators_user(void) {
3.126+ if (rawhid_state.rgb_control) {
3.127+ return;
3.128+ }
3.129+ if (keyboard_config.disable_layer_led) { return; }
3.130+ switch (biton32(layer_state)) {
3.131+ case 0:
3.132+ set_layer_color(0);
3.133+ break;
3.134+ case 1:
3.135+ set_layer_color(1);
3.136+ break;
3.137+ case 2:
3.138+ set_layer_color(2);
3.139+ break;
3.140+ case 3:
3.141+ set_layer_color(3);
3.142+ break;
3.143+ case 4:
3.144+ set_layer_color(4);
3.145+ break;
3.146+ default:
3.147+ if (rgb_matrix_get_flags() == LED_FLAG_NONE)
3.148+ rgb_matrix_set_color_all(0, 0, 0);
3.149+ break;
3.150+ }
3.151+}
3.152+
3.153 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
3.154- if (record->event.pressed) {
3.155- switch (keycode) {
3.156- case VRSN:
3.157- SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
3.158+ switch (keycode) {
3.159+
3.160+ case RGB_SLD:
3.161+ if (rawhid_state.rgb_control) {
3.162 return false;
3.163 }
3.164+ if (record->event.pressed) {
3.165+ rgblight_mode(1);
3.166+ }
3.167+ return false;
3.168+ }
3.169+ return true;
3.170+}
3.171+
3.172+
3.173+typedef struct {
3.174+ bool is_press_action;
3.175+ uint8_t step;
3.176+} tap;
3.177+
3.178+enum {
3.179+ SINGLE_TAP = 1,
3.180+ SINGLE_HOLD,
3.181+ DOUBLE_TAP,
3.182+ DOUBLE_HOLD,
3.183+ DOUBLE_SINGLE_TAP,
3.184+ MORE_TAPS
3.185+};
3.186+
3.187+static tap dance_state[9];
3.188+
3.189+uint8_t dance_step(qk_tap_dance_state_t *state);
3.190+
3.191+uint8_t dance_step(qk_tap_dance_state_t *state) {
3.192+ if (state->count == 1) {
3.193+ if (state->interrupted || !state->pressed) return SINGLE_TAP;
3.194+ else return SINGLE_HOLD;
3.195+ } else if (state->count == 2) {
3.196+ if (state->interrupted) return DOUBLE_SINGLE_TAP;
3.197+ else if (state->pressed) return DOUBLE_HOLD;
3.198+ else return DOUBLE_TAP;
3.199 }
3.200- return true;
3.201+ return MORE_TAPS;
3.202+}
3.203+
3.204+
3.205+void on_dance_0(qk_tap_dance_state_t *state, void *user_data);
3.206+void dance_0_finished(qk_tap_dance_state_t *state, void *user_data);
3.207+void dance_0_reset(qk_tap_dance_state_t *state, void *user_data);
3.208+
3.209+void on_dance_0(qk_tap_dance_state_t *state, void *user_data) {
3.210+ if(state->count == 3) {
3.211+ tap_code16(LCTL(KC_GRAVE));
3.212+ tap_code16(LCTL(KC_GRAVE));
3.213+ tap_code16(LCTL(KC_GRAVE));
3.214+ }
3.215+ if(state->count > 3) {
3.216+ tap_code16(LCTL(KC_GRAVE));
3.217+ }
3.218+}
3.219+
3.220+void dance_0_finished(qk_tap_dance_state_t *state, void *user_data) {
3.221+ dance_state[0].step = dance_step(state);
3.222+ switch (dance_state[0].step) {
3.223+ case SINGLE_TAP: register_code16(LCTL(KC_GRAVE)); break;
3.224+ case SINGLE_HOLD: register_code16(LCTL(KC_V)); break;
3.225+ case DOUBLE_TAP: register_code16(LCTL(KC_GRAVE)); register_code16(LCTL(KC_GRAVE)); break;
3.226+ case DOUBLE_SINGLE_TAP: tap_code16(LCTL(KC_GRAVE)); register_code16(LCTL(KC_GRAVE));
3.227+ }
3.228+}
3.229+
3.230+void dance_0_reset(qk_tap_dance_state_t *state, void *user_data) {
3.231+ wait_ms(10);
3.232+ switch (dance_state[0].step) {
3.233+ case SINGLE_TAP: unregister_code16(LCTL(KC_GRAVE)); break;
3.234+ case SINGLE_HOLD: unregister_code16(LCTL(KC_V)); break;
3.235+ case DOUBLE_TAP: unregister_code16(LCTL(KC_GRAVE)); break;
3.236+ case DOUBLE_SINGLE_TAP: unregister_code16(LCTL(KC_GRAVE)); break;
3.237+ }
3.238+ dance_state[0].step = 0;
3.239+}
3.240+void on_dance_1(qk_tap_dance_state_t *state, void *user_data);
3.241+void dance_1_finished(qk_tap_dance_state_t *state, void *user_data);
3.242+void dance_1_reset(qk_tap_dance_state_t *state, void *user_data);
3.243+
3.244+void on_dance_1(qk_tap_dance_state_t *state, void *user_data) {
3.245+ if(state->count == 3) {
3.246+ tap_code16(KC_9);
3.247+ tap_code16(KC_9);
3.248+ tap_code16(KC_9);
3.249+ }
3.250+ if(state->count > 3) {
3.251+ tap_code16(KC_9);
3.252+ }
3.253+}
3.254+
3.255+void dance_1_finished(qk_tap_dance_state_t *state, void *user_data) {
3.256+ dance_state[1].step = dance_step(state);
3.257+ switch (dance_state[1].step) {
3.258+ case SINGLE_TAP: register_code16(KC_9); break;
3.259+ case SINGLE_HOLD: register_code16(LCTL(KC_X)); break;
3.260+ case DOUBLE_TAP: register_code16(KC_9); register_code16(KC_9); break;
3.261+ case DOUBLE_SINGLE_TAP: tap_code16(KC_9); register_code16(KC_9);
3.262+ }
3.263+}
3.264+
3.265+void dance_1_reset(qk_tap_dance_state_t *state, void *user_data) {
3.266+ wait_ms(10);
3.267+ switch (dance_state[1].step) {
3.268+ case SINGLE_TAP: unregister_code16(KC_9); break;
3.269+ case SINGLE_HOLD: unregister_code16(LCTL(KC_X)); break;
3.270+ case DOUBLE_TAP: unregister_code16(KC_9); break;
3.271+ case DOUBLE_SINGLE_TAP: unregister_code16(KC_9); break;
3.272+ }
3.273+ dance_state[1].step = 0;
3.274+}
3.275+void on_dance_2(qk_tap_dance_state_t *state, void *user_data);
3.276+void dance_2_finished(qk_tap_dance_state_t *state, void *user_data);
3.277+void dance_2_reset(qk_tap_dance_state_t *state, void *user_data);
3.278+
3.279+void on_dance_2(qk_tap_dance_state_t *state, void *user_data) {
3.280+ if(state->count == 3) {
3.281+ tap_code16(KC_0);
3.282+ tap_code16(KC_0);
3.283+ tap_code16(KC_0);
3.284+ }
3.285+ if(state->count > 3) {
3.286+ tap_code16(KC_0);
3.287+ }
3.288+}
3.289+
3.290+void dance_2_finished(qk_tap_dance_state_t *state, void *user_data) {
3.291+ dance_state[2].step = dance_step(state);
3.292+ switch (dance_state[2].step) {
3.293+ case SINGLE_TAP: register_code16(KC_0); break;
3.294+ case SINGLE_HOLD: register_code16(LCTL(KC_C)); break;
3.295+ case DOUBLE_TAP: register_code16(KC_0); register_code16(KC_0); break;
3.296+ case DOUBLE_SINGLE_TAP: tap_code16(KC_0); register_code16(KC_0);
3.297+ }
3.298+}
3.299+
3.300+void dance_2_reset(qk_tap_dance_state_t *state, void *user_data) {
3.301+ wait_ms(10);
3.302+ switch (dance_state[2].step) {
3.303+ case SINGLE_TAP: unregister_code16(KC_0); break;
3.304+ case SINGLE_HOLD: unregister_code16(LCTL(KC_C)); break;
3.305+ case DOUBLE_TAP: unregister_code16(KC_0); break;
3.306+ case DOUBLE_SINGLE_TAP: unregister_code16(KC_0); break;
3.307+ }
3.308+ dance_state[2].step = 0;
3.309+}
3.310+void on_dance_3(qk_tap_dance_state_t *state, void *user_data);
3.311+void dance_3_finished(qk_tap_dance_state_t *state, void *user_data);
3.312+void dance_3_reset(qk_tap_dance_state_t *state, void *user_data);
3.313+
3.314+void on_dance_3(qk_tap_dance_state_t *state, void *user_data) {
3.315+ if(state->count == 3) {
3.316+ tap_code16(LALT(KC_SPACE));
3.317+ tap_code16(LALT(KC_SPACE));
3.318+ tap_code16(LALT(KC_SPACE));
3.319+ }
3.320+ if(state->count > 3) {
3.321+ tap_code16(LALT(KC_SPACE));
3.322+ }
3.323+}
3.324+
3.325+void dance_3_finished(qk_tap_dance_state_t *state, void *user_data) {
3.326+ dance_state[3].step = dance_step(state);
3.327+ switch (dance_state[3].step) {
3.328+ case SINGLE_TAP: register_code16(LALT(KC_SPACE)); break;
3.329+ case SINGLE_HOLD: register_code16(KC_LGUI); break;
3.330+ case DOUBLE_TAP: register_code16(LALT(KC_SPACE)); register_code16(LALT(KC_SPACE)); break;
3.331+ case DOUBLE_SINGLE_TAP: tap_code16(LALT(KC_SPACE)); register_code16(LALT(KC_SPACE));
3.332+ }
3.333+}
3.334+
3.335+void dance_3_reset(qk_tap_dance_state_t *state, void *user_data) {
3.336+ wait_ms(10);
3.337+ switch (dance_state[3].step) {
3.338+ case SINGLE_TAP: unregister_code16(LALT(KC_SPACE)); break;
3.339+ case SINGLE_HOLD: unregister_code16(KC_LGUI); break;
3.340+ case DOUBLE_TAP: unregister_code16(LALT(KC_SPACE)); break;
3.341+ case DOUBLE_SINGLE_TAP: unregister_code16(LALT(KC_SPACE)); break;
3.342+ }
3.343+ dance_state[3].step = 0;
3.344+}
3.345+void on_dance_4(qk_tap_dance_state_t *state, void *user_data);
3.346+void dance_4_finished(qk_tap_dance_state_t *state, void *user_data);
3.347+void dance_4_reset(qk_tap_dance_state_t *state, void *user_data);
3.348+
3.349+void on_dance_4(qk_tap_dance_state_t *state, void *user_data) {
3.350+ if(state->count == 3) {
3.351+ tap_code16(LGUI(KC_2));
3.352+ tap_code16(LGUI(KC_2));
3.353+ tap_code16(LGUI(KC_2));
3.354+ }
3.355+ if(state->count > 3) {
3.356+ tap_code16(LGUI(KC_2));
3.357+ }
3.358 }
3.359+
3.360+void dance_4_finished(qk_tap_dance_state_t *state, void *user_data) {
3.361+ dance_state[4].step = dance_step(state);
3.362+ switch (dance_state[4].step) {
3.363+ case SINGLE_TAP: register_code16(LGUI(KC_2)); break;
3.364+ case SINGLE_HOLD: layer_on(4); break;
3.365+ case DOUBLE_TAP: register_code16(LGUI(KC_2)); register_code16(LGUI(KC_2)); break;
3.366+ case DOUBLE_SINGLE_TAP: tap_code16(LGUI(KC_2)); register_code16(LGUI(KC_2));
3.367+ }
3.368+}
3.369+
3.370+void dance_4_reset(qk_tap_dance_state_t *state, void *user_data) {
3.371+ wait_ms(10);
3.372+ switch (dance_state[4].step) {
3.373+ case SINGLE_TAP: unregister_code16(LGUI(KC_2)); break;
3.374+ case SINGLE_HOLD: layer_off(4); break;
3.375+ case DOUBLE_TAP: unregister_code16(LGUI(KC_2)); break;
3.376+ case DOUBLE_SINGLE_TAP: unregister_code16(LGUI(KC_2)); break;
3.377+ }
3.378+ dance_state[4].step = 0;
3.379+}
3.380+void on_dance_5(qk_tap_dance_state_t *state, void *user_data);
3.381+void dance_5_finished(qk_tap_dance_state_t *state, void *user_data);
3.382+void dance_5_reset(qk_tap_dance_state_t *state, void *user_data);
3.383+
3.384+void on_dance_5(qk_tap_dance_state_t *state, void *user_data) {
3.385+ if(state->count == 3) {
3.386+ tap_code16(KC_PSCREEN);
3.387+ tap_code16(KC_PSCREEN);
3.388+ tap_code16(KC_PSCREEN);
3.389+ }
3.390+ if(state->count > 3) {
3.391+ tap_code16(KC_PSCREEN);
3.392+ }
3.393+}
3.394+
3.395+void dance_5_finished(qk_tap_dance_state_t *state, void *user_data) {
3.396+ dance_state[5].step = dance_step(state);
3.397+ switch (dance_state[5].step) {
3.398+ case SINGLE_TAP: register_code16(KC_PSCREEN); break;
3.399+ case SINGLE_HOLD: register_code16(LGUI(LSFT(KC_S))); break;
3.400+ case DOUBLE_TAP: register_code16(KC_PSCREEN); register_code16(KC_PSCREEN); break;
3.401+ case DOUBLE_SINGLE_TAP: tap_code16(KC_PSCREEN); register_code16(KC_PSCREEN);
3.402+ }
3.403+}
3.404+
3.405+void dance_5_reset(qk_tap_dance_state_t *state, void *user_data) {
3.406+ wait_ms(10);
3.407+ switch (dance_state[5].step) {
3.408+ case SINGLE_TAP: unregister_code16(KC_PSCREEN); break;
3.409+ case SINGLE_HOLD: unregister_code16(LGUI(LSFT(KC_S))); break;
3.410+ case DOUBLE_TAP: unregister_code16(KC_PSCREEN); break;
3.411+ case DOUBLE_SINGLE_TAP: unregister_code16(KC_PSCREEN); break;
3.412+ }
3.413+ dance_state[5].step = 0;
3.414+}
3.415+void dance_6_finished(qk_tap_dance_state_t *state, void *user_data);
3.416+void dance_6_reset(qk_tap_dance_state_t *state, void *user_data);
3.417+
3.418+void dance_6_finished(qk_tap_dance_state_t *state, void *user_data) {
3.419+ dance_state[6].step = dance_step(state);
3.420+ switch (dance_state[6].step) {
3.421+ case SINGLE_TAP: layer_move(0); break;
3.422+ case SINGLE_HOLD: layer_on(4); break;
3.423+ case DOUBLE_TAP: layer_move(0); break;
3.424+ case DOUBLE_SINGLE_TAP: layer_move(0); break;
3.425+ }
3.426+}
3.427+
3.428+void dance_6_reset(qk_tap_dance_state_t *state, void *user_data) {
3.429+ wait_ms(10);
3.430+ switch (dance_state[6].step) {
3.431+ case SINGLE_HOLD: layer_off(4); break;
3.432+ }
3.433+ dance_state[6].step = 0;
3.434+}
3.435+void on_dance_7(qk_tap_dance_state_t *state, void *user_data);
3.436+void dance_7_finished(qk_tap_dance_state_t *state, void *user_data);
3.437+void dance_7_reset(qk_tap_dance_state_t *state, void *user_data);
3.438+
3.439+void on_dance_7(qk_tap_dance_state_t *state, void *user_data) {
3.440+ if(state->count == 3) {
3.441+ tap_code16(KC_LCBR);
3.442+ tap_code16(KC_LCBR);
3.443+ tap_code16(KC_LCBR);
3.444+ }
3.445+ if(state->count > 3) {
3.446+ tap_code16(KC_LCBR);
3.447+ }
3.448+}
3.449+
3.450+void dance_7_finished(qk_tap_dance_state_t *state, void *user_data) {
3.451+ dance_state[7].step = dance_step(state);
3.452+ switch (dance_state[7].step) {
3.453+ case SINGLE_TAP: register_code16(KC_LCBR); break;
3.454+ case SINGLE_HOLD: register_code16(KC_LSHIFT); break;
3.455+ case DOUBLE_TAP: register_code16(KC_LCBR); register_code16(KC_LCBR); break;
3.456+ case DOUBLE_SINGLE_TAP: tap_code16(KC_LCBR); register_code16(KC_LCBR);
3.457+ }
3.458+}
3.459+
3.460+void dance_7_reset(qk_tap_dance_state_t *state, void *user_data) {
3.461+ wait_ms(10);
3.462+ switch (dance_state[7].step) {
3.463+ case SINGLE_TAP: unregister_code16(KC_LCBR); break;
3.464+ case SINGLE_HOLD: unregister_code16(KC_LSHIFT); break;
3.465+ case DOUBLE_TAP: unregister_code16(KC_LCBR); break;
3.466+ case DOUBLE_SINGLE_TAP: unregister_code16(KC_LCBR); break;
3.467+ }
3.468+ dance_state[7].step = 0;
3.469+}
3.470+void on_dance_8(qk_tap_dance_state_t *state, void *user_data);
3.471+void dance_8_finished(qk_tap_dance_state_t *state, void *user_data);
3.472+void dance_8_reset(qk_tap_dance_state_t *state, void *user_data);
3.473+
3.474+void on_dance_8(qk_tap_dance_state_t *state, void *user_data) {
3.475+ if(state->count == 3) {
3.476+ tap_code16(KC_RCBR);
3.477+ tap_code16(KC_RCBR);
3.478+ tap_code16(KC_RCBR);
3.479+ }
3.480+ if(state->count > 3) {
3.481+ tap_code16(KC_RCBR);
3.482+ }
3.483+}
3.484+
3.485+void dance_8_finished(qk_tap_dance_state_t *state, void *user_data) {
3.486+ dance_state[8].step = dance_step(state);
3.487+ switch (dance_state[8].step) {
3.488+ case SINGLE_TAP: register_code16(KC_RCBR); break;
3.489+ case SINGLE_HOLD: register_code16(KC_RSHIFT); break;
3.490+ case DOUBLE_TAP: register_code16(KC_RCBR); register_code16(KC_RCBR); break;
3.491+ case DOUBLE_SINGLE_TAP: tap_code16(KC_RCBR); register_code16(KC_RCBR);
3.492+ }
3.493+}
3.494+
3.495+void dance_8_reset(qk_tap_dance_state_t *state, void *user_data) {
3.496+ wait_ms(10);
3.497+ switch (dance_state[8].step) {
3.498+ case SINGLE_TAP: unregister_code16(KC_RCBR); break;
3.499+ case SINGLE_HOLD: unregister_code16(KC_RSHIFT); break;
3.500+ case DOUBLE_TAP: unregister_code16(KC_RCBR); break;
3.501+ case DOUBLE_SINGLE_TAP: unregister_code16(KC_RCBR); break;
3.502+ }
3.503+ dance_state[8].step = 0;
3.504+}
3.505+
3.506+qk_tap_dance_action_t tap_dance_actions[] = {
3.507+ [DANCE_0] = ACTION_TAP_DANCE_FN_ADVANCED(on_dance_0, dance_0_finished, dance_0_reset),
3.508+ [DANCE_1] = ACTION_TAP_DANCE_FN_ADVANCED(on_dance_1, dance_1_finished, dance_1_reset),
3.509+ [DANCE_2] = ACTION_TAP_DANCE_FN_ADVANCED(on_dance_2, dance_2_finished, dance_2_reset),
3.510+ [DANCE_3] = ACTION_TAP_DANCE_FN_ADVANCED(on_dance_3, dance_3_finished, dance_3_reset),
3.511+ [DANCE_4] = ACTION_TAP_DANCE_FN_ADVANCED(on_dance_4, dance_4_finished, dance_4_reset),
3.512+ [DANCE_5] = ACTION_TAP_DANCE_FN_ADVANCED(on_dance_5, dance_5_finished, dance_5_reset),
3.513+ [DANCE_6] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_6_finished, dance_6_reset),
3.514+ [DANCE_7] = ACTION_TAP_DANCE_FN_ADVANCED(on_dance_7, dance_7_finished, dance_7_reset),
3.515+ [DANCE_8] = ACTION_TAP_DANCE_FN_ADVANCED(on_dance_8, dance_8_finished, dance_8_reset),
3.516+};
4.1--- a/.config/kbd/moonlander/rules.mk Fri Aug 30 17:07:30 2024 -0400
4.2+++ b/.config/kbd/moonlander/rules.mk Sat Sep 07 22:40:44 2024 -0400
4.3@@ -2,8 +2,9 @@
4.4 # See rules at https://docs.qmk.fm/#/config_options?id=the-rulesmk-file
4.5 CONSOLE_ENABLE = no
4.6 COMMAND_ENABLE = no
4.7+AUTO_SHIFT_ENABLE = yes
4.8 ORYX_ENABLE = yes
4.9-RAW_ENABLE = yes
4.10-SPACE_CADET_ENABLE = no
4.11+RGB_MATRIX_CUSTOM_KB = yes
4.12+TAP_DANCE_ENABLE = yes
4.13 CAPS_WORD_ENABLE = yes
4.14 SRC = matrix.c
5.1--- a/.emacs.d/ellis.el Fri Aug 30 17:07:30 2024 -0400
5.2+++ b/.emacs.d/ellis.el Sat Sep 07 22:40:44 2024 -0400
5.3@@ -112,12 +112,12 @@
5.4 notmuch-show-logo nil
5.5 notmuch-search-oldest-first nil
5.6 notmuch-hello-hide-tags '("kill")
5.7- notmuch-saved-searches '((:name "inbox" :query "tag:inbox" :key "i")
5.8- (:name "unread" :query "tag:unread" :key "u")
5.9+ notmuch-saved-searches '((:name "unread" :query "tag:unread" :key "u")
5.10+ (:name "inbox" :query "tag:inbox" :key "i")
5.11 (:name "new" :query "tag:new" :key "n")
5.12+ (:name "drafts" :query "tag:draft" :key "d")
5.13 (:name "sent" :query "tag:sent" :key "e")
5.14- (:name "drafts" :query "tag:draft" :key "d")
5.15- (:name "all mail" :query "*" :key "a")
5.16+ (:name "all" :query "*" :key "a")
5.17 (:name "todo" :query "tag:todo" :key "t")))
5.18 :config
5.19 ;;;###autoload
5.20@@ -187,8 +187,6 @@
5.21 ("http://arxiv.org/rss/econ" econ rnd)
5.22 ;; John Wiegley
5.23 ("http://newartisans.com/rss.xml" dev blog)
5.24- ;; comp
5.25- ;; ("https://lab.rwest.io/comp.atom?feed_token=pHu9qwLkjy4CWJHx9rrJ" comp vc)
5.26 ("https://www.reddit.com/r/listentothis/.rss" music reddit)
5.27 ("https://www.ftc.gov/feeds/press-release-consumer-protection.xml" gov ftc)
5.28 ("https://api2.fcc.gov/edocs/public/api/v1/rss/" gov fcc)
5.29@@ -269,10 +267,11 @@
5.30 (setq
5.31 org-timeline-insert-before-text "›"
5.32 org-timeline-beginning-of-day-hour 8
5.33+ org-timeline-default-duration 30
5.34 org-timeline-keep-elapsed 2
5.35- org-timeline-start-hour 5
5.36+ org-timeline-start-hour 8
5.37 org-timeline-show-text-in-blocks t
5.38- org-timeline-prepend t))
5.39+ org-timeline-prepend nil))
5.40
5.41 ;;; IRC
5.42 (setq erc-format-nick-function 'erc-format-@nick)
5.43@@ -339,7 +338,7 @@
5.44 (while (< (point) end)
5.45 (cond
5.46 ;; Ignore comments.
5.47- ((or (org-in-commented-line) (org-at-table-p))
5.48+ ((or (org-at-comment-p) (org-at-table-p))
5.49 nil)
5.50 ;; Ignore hyperlinks. But if link has a description, count
5.51 ;; the words within the description.
5.52@@ -353,7 +352,7 @@
5.53 ((looking-at org-any-link-re)
5.54 (goto-char (match-end 0)))
5.55 ;; Ignore source code blocks.
5.56- ((org-in-regexps-block-p "^#\\+BEGIN_SRC\\W" "^#\\+END_SRC\\W")
5.57+ ((org-between-regexps-p "^#\\+BEGIN_SRC\\W" "^#\\+END_SRC\\W")
5.58 nil)
5.59 ;; Ignore inline source blocks, counting them as 1 word.
5.60 ((save-excursion
5.61@@ -393,8 +392,8 @@
5.62 (t
5.63 (cl-incf wc))))))
5.64 (re-search-forward "\\w+\\W*")))
5.65- (message (format "%d words in %s." wc
5.66- (if mark-active "region" "buffer")))))
5.67+ (format "%d words in %s." wc
5.68+ (if mark-active "region" "buffer"))))
5.69
5.70 (defun org-check-misformatted-subtree ()
5.71 "Check misformatted entries in the current buffer."
5.72@@ -505,15 +504,15 @@
5.73
5.74 (require 'mm-url) ; to include mm-url-decode-entities-string
5.75
5.76-(defun org-insert-link-with-title ()
5.77- "Insert org link where default description is set to html title."
5.78- (interactive)
5.79- (let* ((url (read-string "URL: "))
5.80- (title (get-html-title-from-url url)))
5.81- (org-insert-link nil url title)))
5.82+(cl-defun get-first-url (&optional (match (rx bol "http" (optional "s") "://")))
5.83+ "Return URL in clipboard, or first URL in the `kill-ring' matching MATCH."
5.84+ (cl-loop for item in (cons (current-kill 0) kill-ring)
5.85+ when (and item (string-match-p match item))
5.86+ return item))
5.87
5.88 (defun get-html-title-from-url (url)
5.89 "Return content in <title> tag."
5.90+ (interactive (list (get-first-url)))
5.91 (let (x1 x2 (download-buffer (url-retrieve-synchronously url)))
5.92 (save-excursion
5.93 (set-buffer download-buffer)
5.94@@ -523,6 +522,17 @@
5.95 (setq x2 (search-backward "<"))
5.96 (mm-url-decode-entities-string (buffer-substring-no-properties x1 x2)))))
5.97
5.98+(defun org-insert-link-with-title (url)
5.99+ "Insert org link where default description is set to html title."
5.100+ (interactive (list (get-first-url match)))
5.101+ (let ((title (get-html-title-from-url url)))
5.102+ (org-insert-link nil url title)))
5.103+
5.104+(defun org-insert-so-link (url)
5.105+ (interactive (list (get-first-url (rx bol "https://" (* anychar) "stackoverflow.com"))))
5.106+ (let ((title (get-html-title-from-url url)))
5.107+ (org-insert-link nil url title)))
5.108+
5.109 (defun org-remove-empty-propert-drawers ()
5.110 "*Remove all empty property drawers in current file."
5.111 (interactive)
5.112@@ -585,6 +595,8 @@
5.113 (defvar org-agenda-extensions '(".org")
5.114 "List of extensions of agenda files")
5.115
5.116+(setq org-agenda-default-appointment-duration 30)
5.117+(setq org-agenda-span 5)
5.118 (defun org-set-agenda-files ()
5.119 (interactive)
5.120 (setq org-agenda-files
5.121@@ -597,6 +609,28 @@
5.122 (with-eval-after-load 'org
5.123 (org-set-agenda-files))
5.124
5.125+;; org-agenda-auto-update
5.126+(defvar org-agenda-update-interval 300)
5.127+(defvar org-agenda-update-timer nil)
5.128+(defvar org-agenda-update-idle t)
5.129+
5.130+(defun org-agenda-update ()
5.131+ (org-agenda-redo-all t))
5.132+
5.133+(defun org-agenda-auto-update ()
5.134+ (when org-agenda-update-timer
5.135+ (setq org-agenda-update-timer
5.136+ (cancel-timer org-agenda-update-timer)))
5.137+ (setq org-agenda-update-timer
5.138+ (if org-agenda-update-idle
5.139+ (run-with-idle-timer org-agenda-update-interval t 'org-agenda-update)
5.140+ ;; when we refresh the org-agenda buffer, also reset the timer
5.141+ (add-hook 'org-agenda-finalize-hook 'org-agenda-auto-update)
5.142+ (run-with-timer org-agenda-update-interval org-agenda-update-interval 'org-agenda-update))))
5.143+
5.144+(with-eval-after-load 'org-agenda
5.145+ (org-agenda-auto-update))
5.146+
5.147 ;;; Skel Config
5.148 (use-package skel
5.149 :requires skel
5.150@@ -754,7 +788,15 @@
5.151 (skt-register-auto-insert ".*[.]lisp" #'skt-template-lisp-head)
5.152 (skt-register-auto-insert ".*[.].rs" #'skt-template-rust-head)
5.153 (auto-insert-mode t)
5.154- (keymap-set skel-minor-mode-map "C-<return>" 'company-tempo))
5.155+ ;; (keymap-set skel-minor-mode-map "C-<return>" 'company-tempo)
5.156+ )
5.157+
5.158+;;; ical2org
5.159+;; go install github.com/rjhorniii/ical2org@latest
5.160+(defun ical2org (file)
5.161+ "Convert ics FILE to an org-mode heading."
5.162+ (interactive "ffile: ")
5.163+ (shell-command (format "ical2org %s -a %s" file org-inbox-file)))
5.164
5.165 ;;; glossary
5.166 ;; (with-eval-after-load 'org-glossary
6.1--- a/.offlineimaprc Fri Aug 30 17:07:30 2024 -0400
6.2+++ b/.offlineimaprc Sat Sep 07 22:40:44 2024 -0400
6.3@@ -1,5 +1,6 @@
6.4 [general]
6.5-accounts = ellis, demon, postmaster
6.6+accounts = ellis, demon
6.7+# postmaster
6.8 pythonfile = ~/.config/offlineimap/get_pass.py
6.9
6.10 [Account ellis]
6.11@@ -47,26 +48,26 @@
6.12 folderfilter = lambda foldername: foldername in ['[Gmail]/All Mail']
6.13 nametrans = lambda foldername: re.sub('^\[Gmail\]/All Mail$', 'all',foldername)
6.14
6.15-[Account postmaster]
6.16-synclabels = yes
6.17-localrepository = postmaster
6.18-remoterepository = postmaster-imap
6.19-postsynchook = ~/.config/offlineimap/postsync.sh
6.20+# [Account postmaster]
6.21+# synclabels = yes
6.22+# localrepository = postmaster
6.23+# remoterepository = postmaster-imap
6.24+# postsynchook = ~/.config/offlineimap/postsync.sh
6.25
6.26-[Repository postmaster]
6.27-type = Maildir
6.28-localfolders = ~/mail/postmaster
6.29+# [Repository postmaster]
6.30+# type = Maildir
6.31+# localfolders = ~/mail/postmaster
6.32
6.33-[Repository postmaster-imap]
6.34-type = IMAP
6.35-remotepasseval = get_authinfo_password("mail.compiler.company", "postmaster", 993)
6.36-remotehost = mail.compiler.company
6.37-remoteuser = postmaster@compiler.company
6.38-# Necessary to work around https://github.com/OfflineIMAP/offlineimap/issues/573 (versions 7.0.12, 7.2.1)
6.39-# macos only
6.40-#sslcacertfile = /opt/local/etc/openssl/cert.pem
6.41-#ssl_version = tls1_2
6.42-# linux only
6.43-sslcacertfile = /etc/ssl/certs/ca-certificates.crt
6.44-#folderfilter = lambda foldername: foldername in ['[Gmail]/All Mail']
6.45-#nametrans = lambda foldername: re.sub('^\[Gmail\]/All Mail$', 'all',foldername)
6.46+# [Repository postmaster-imap]
6.47+# type = IMAP
6.48+# remotepasseval = get_authinfo_password("mail.compiler.company", "postmaster", 993)
6.49+# remotehost = mail.compiler.company
6.50+# remoteuser = postmaster@compiler.company
6.51+# # Necessary to work around https://github.com/OfflineIMAP/offlineimap/issues/573 (versions 7.0.12, 7.2.1)
6.52+# # macos only
6.53+# #sslcacertfile = /opt/local/etc/openssl/cert.pem
6.54+# #ssl_version = tls1_2
6.55+# # linux only
6.56+# sslcacertfile = /etc/ssl/certs/ca-certificates.crt
6.57+# #folderfilter = lambda foldername: foldername in ['[Gmail]/All Mail']
6.58+# #nametrans = lambda foldername: re.sub('^\[Gmail\]/All Mail$', 'all',foldername)
7.1--- a/.stash/scripts/qmk-flash-moonlander.sh Fri Aug 30 17:07:30 2024 -0400
7.2+++ b/.stash/scripts/qmk-flash-moonlander.sh Sat Sep 07 22:40:44 2024 -0400
7.3@@ -1,3 +1,4 @@
7.4 #!/bin/sh
7.5-cp -rf ~/.config/kbd/moonlander/* ~/qmk_firmware/keyboards/moonlander/keymaps/ellis/
7.6+cd ~/.stash/qmk_firmware
7.7+cp -rf ~/.config/kbd/moonlander/* keyboards/moonlander/keymaps/ellis/
7.8 qmk flash -kb moonlander -km ellis
8.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
8.2+++ b/.stash/scripts/rec.sh Sat Sep 07 22:40:44 2024 -0400
8.3@@ -0,0 +1,4 @@
8.4+#!/usr/bin/env bash
8.5+slop=$(slop -f "%x %y %w %h %g %i") || exit 1
8.6+read -r X Y W H G ID <<< $slop
8.7+ffmpeg -f x11grab -s "$W"x"$H" -i :0.0+$X,$Y ${1:-"${HOME}/$(date +%s).gif"}
9.1--- a/.stash/scripts/sc.sh Fri Aug 30 17:07:30 2024 -0400
9.2+++ b/.stash/scripts/sc.sh Sat Sep 07 22:40:44 2024 -0400
9.3@@ -1,4 +1,4 @@
9.4-#!/usr/local/env bash
9.5+#!/usr/bin/env bash
9.6 import png:- >> ${1:-"$(date +%s).png"}
9.7 # take screenshot of current window on sway
9.8 # swaymsg -t get_tree | jq -r '.. | select(.focused?) | .rect | "\(.x),\(.y) \(.width)x\(.height)"' | grim -g - ${1:-"$(date +%s).png"}
10.1--- a/.stumpwm.d/init.lisp Fri Aug 30 17:07:30 2024 -0400
10.2+++ b/.stumpwm.d/init.lisp Sat Sep 07 22:40:44 2024 -0400
10.3@@ -5,7 +5,12 @@
10.4 (stumpwm:set-prefix-key (kbd "s-SPC"))
10.5
10.6 (ignore-errors
10.7- (ql:quickload '(:std :core :prelude :user)))
10.8+ (ql:quickload '(:std :core :prelude :user :swank)))
10.9+
10.10+(defcommand quickload (system)
10.11+ ((:rest "System: "))
10.12+ "Load a system with QL:QUICKLOAD"
10.13+ (ql:quickload system))
10.14
10.15 (defcommand load-std () ()
10.16 (ql:quickload :std))
10.17@@ -39,7 +44,7 @@
10.18 (unless swm-golden-ratio:*golden-ratio-on*
10.19 (swm-golden-ratio:toggle-golden-ratio))
10.20
10.21-;; (load-module "stumptray")
10.22+(load-module "screenshot")
10.23 (load-module "cpu")
10.24 (load-module "hostname")
10.25 (load-module "mpd")
10.26@@ -51,8 +56,6 @@
10.27
10.28 (ql:quickload :xml-emitter)
10.29 (ql:quickload :dbus)
10.30-(load-module "notify")
10.31-(notify:notify-server-toggle)
10.32
10.33 (set-fg-color "#ffffff")
10.34 (set-bg-color "#000000")
11.1--- a/.xinitrc Fri Aug 30 17:07:30 2024 -0400
11.2+++ b/.xinitrc Sat Sep 07 22:40:44 2024 -0400
11.3@@ -2,6 +2,7 @@
11.4 xrdb .Xresources &
11.5 xset r rate 200 40 &
11.6 xset s off -dpms &
11.7+systemctl --user import-environment DISPLAY
11.8 case $session in
11.9 sway ) exec sway;;
11.10 stumpwm ) /usr/local/bin/stumpwm;;