summary refs log tree commit diff
path: root/users
diff options
context:
space:
mode:
authorCasey Webster <casey.webster@gmail.com>2020-10-18 15:55:38 -0500
committerGitHub <noreply@github.com>2020-10-18 13:55:38 -0700
commit8bb2eeaabb6d79e774c6aae6c651857ce2e380dc (patch)
tree2bed24bc62765fa3aceb3bd771d12ac65652da10 /users
parentc492dd791243b98a119fbf29c9b041d14238b102 (diff)
[Keymap] add cwebster2 userspace and keymaps (#10541)
* Adding my keymap

* Add a starter keymap for kyria

* Updated keymap

* Add auto shift, tapping modifications and gravatar oled bitmap

* Add flashing helper scripts

* Updates to my keymap

* Enable raw hid and rgblight sleep

* Cleanup

* Updated keymap and board features

* Remove some RGB modes for space

* Start working on a miryoku-like keymap.

This adds homerow mods to my keymap on the base layer and adds
a game layer that doesnt have them

* more work on keymaps

* Fine tuning home row mods

* update keymap

* Keymap update

* add split transport

* keymap

* cherry pick from develop

* merge develop

* fix

* keymap iterations

* Refactoring

* continued refactoring

* messing with rgb

* update layer coloring

* continued refactoring

* more features

* modifier color

* Move stuff to userspace

* Moving stuff out to userspace

* refactoring into userspace

* More refactoring

* Fixing some errors in the keymap and changing the oled output

* Sync zen1 keymap to my userspace config

* Update copyright notices and revert transport.c to master

* Swap tab and esc

* Remove a file accidentally created

* Use LTO_ENABLE to turn on Link_Time_Optimization

* Drop modtap thumbs on game layout

* Update game keymap

* More iteration on the game keymap

* Add oled indications of kitty and i3 mod

* Promote colemak to default

* Update tapping term for modtap keys

* Add per key tapping term

* Use left modifiers on right side
Diffstat (limited to 'users')
-rw-r--r--users/cwebster2/config.h57
-rw-r--r--users/cwebster2/cwebster2.c65
-rw-r--r--users/cwebster2/cwebster2.h51
-rw-r--r--users/cwebster2/keycodes.c53
-rw-r--r--users/cwebster2/keycodes.h27
-rw-r--r--users/cwebster2/my_miryoku.h77
-rw-r--r--users/cwebster2/rules.mk13
7 files changed, 343 insertions, 0 deletions
diff --git a/users/cwebster2/config.h b/users/cwebster2/config.h
new file mode 100644
index 0000000000..78733687cc
--- /dev/null
+++ b/users/cwebster2/config.h
@@ -0,0 +1,57 @@
+/* Copyright 2020 Casey Webster <casey@e1337.dev>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#define TAPPING_TOGGLE 1
+#define TAPPING_TERM 200
+#define TAPPING_TERM_PER_KEY
+//#define TAPPING_FORCE_HOLD
+#undef PERMISSIVE_HOLD
+#define IGNORE_MOD_TAP_INTERRUPT
+#define NO_ACTION_ONESHOT
+
+#ifdef AUTO_SHIFT_ENABLE
+  #define AUTO_SHIFT_TIMEOUT 200
+  #define NO_AUTO_SHIFT_SPECIAL
+  #define NO_AUTO_SHIFT_ALPHA
+#endif
+
+#undef MOUSEKEY_DELAY
+#define MOUSEKEY_DELAY          0
+#undef MOUSEKEY_INTERVAL
+#define MOUSEKEY_INTERVAL       16
+#undef MOUSEKEY_WHEEL_DELAY
+#define MOUSEKEY_WHEEL_DELAY    0
+#undef MOUSEKEY_MAX_SPEED
+#define MOUSEKEY_MAX_SPEED      6
+#undef MOUSEKEY_TIME_TO_MAX
+#define MOUSEKEY_TIME_TO_MAX    64
+
+#ifdef LOCKING_SUPPORT_ENABLE
+#    undef LOCKING_SUPPORT_ENABLE
+#endif
+#ifdef LOCKING_RESYNC_ENABLE
+#    undef LOCKING_RESYNC_ENABLE
+#endif
+
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+#ifndef NO_DEBUG
+    #define NO_DEBUG
+#endif // !NO_DEBUG
+#if !defined(NO_PRINT) && !defined(CONSOLE_ENABLE)
+    #define NO_PRINT
+#endif // !NO_PRINT
diff --git a/users/cwebster2/cwebster2.c b/users/cwebster2/cwebster2.c
new file mode 100644
index 0000000000..cfebc12c60
--- /dev/null
+++ b/users/cwebster2/cwebster2.c
@@ -0,0 +1,65 @@
+/* Copyright 2020 Casey Webster <casey@e1337.dev>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "cwebster2.h"
+
+userspace_config_t userspace_config;
+
+__attribute__((weak)) void matrix_scan_keymap(void) {}
+
+void matrix_scan_user(void) {
+    static bool has_ran_yet;
+    if (!has_ran_yet) {
+        has_ran_yet = true;
+        startup_user();
+    }
+
+    matrix_scan_keymap();
+}
+
+void keyboard_post_init_rgb(void) {
+#if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_STARTUP_ANIMATION)
+    /*if (userspace_config.rgb_layer_change) { rgblight_enable_noeeprom(); }*/
+    /*if (rgblight_config.enable) {*/
+        /*layer_state_set_user(layer_state);*/
+        /*uint16_t old_hue = rgblight_config.hue;*/
+        uint16_t old_hue = 170;
+        rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
+        for (uint16_t i = 255; i > 0; i--) {
+            rgblight_sethsv_noeeprom( ( i + old_hue) % 255, 255, 255);
+            matrix_scan();
+            wait_ms(10);
+        }
+    /*}*/
+#endif
+    /*layer_state_set_user(layer_state);*/
+}
+
+__attribute__((weak)) void eeconfig_init_keymap(void) {}
+
+void eeconfig_init_user(void) {
+    userspace_config.raw              = 0;
+    userspace_config.rgb_layer_change = true;
+    eeconfig_update_user(userspace_config.raw);
+    eeconfig_init_keymap();
+    keyboard_init();
+}
+
+bool hasAllBitsInMask(uint8_t value, uint8_t mask) {
+    value &= 0xF;
+    mask &= 0xF;
+
+    return (value & mask) == mask;
+}
diff --git a/users/cwebster2/cwebster2.h b/users/cwebster2/cwebster2.h
new file mode 100644
index 0000000000..3d315d6740
--- /dev/null
+++ b/users/cwebster2/cwebster2.h
@@ -0,0 +1,51 @@
+/* Copyright 2020 Casey Webster <casey@e1337.dev>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "my_miryoku.h"
+#include "keycodes.h"
+#include "eeprom.h"
+
+#define LAYOUT_kyria_wrapper(...)  LAYOUT(__VA_ARGS__)
+#define LAYOUT_zen_wrapper(...)    LAYOUT(__VA_ARGS__)
+
+enum userspace_layers {
+    _COLEMAK = 0,
+    _QWERTY,
+    _GAME,
+    _FN,
+    _SYMBOLS,
+    _NUM,
+    _NAV,
+    _MOUSE,
+    _MEDIA,
+    __LAST
+};
+
+void keyboard_post_init_rgb(void);
+void matrix_scan_keymap(void);
+void eeconfig_init_keymap(void);
+bool hasAllBitsInMask(uint8_t value, uint8_t mask);
+
+
+typedef union {
+    uint32_t raw;
+    struct {
+        bool rgb_layer_change :1;
+    };
+} userspace_config_t;
+
+extern userspace_config_t userspace_config;
diff --git a/users/cwebster2/keycodes.c b/users/cwebster2/keycodes.c
new file mode 100644
index 0000000000..39b4341bd0
--- /dev/null
+++ b/users/cwebster2/keycodes.c
@@ -0,0 +1,53 @@
+/* Copyright 2020 Casey Webster <casey@e1337.dev>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "keycodes.h"
+
+__attribute__((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; }
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+    static uint16_t my_colon_timer;
+
+    switch (keycode) {
+        case KC_LCCL:
+            if (record->event.pressed) {
+                my_colon_timer = timer_read();
+                register_code(KC_LCTL);
+            } else {
+                unregister_code(KC_LCTL);
+                if (timer_elapsed(my_colon_timer) < TAPPING_TERM) {
+                    SEND_STRING(":");
+                }
+            }
+            return false;
+    }
+    return process_record_keymap(keycode, record);
+}
+
+uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
+    switch (keycode) {
+        case LGUI_T(KC_A):
+        case LALT_T(KC_S):
+        case LCTL_T(KC_D):
+        case LSFT_T(KC_F):
+        case RSFT_T(KC_J):
+        case RCTL_T(KC_K):
+        case RALT_T(KC_L):
+        case RGUI_T(KC_SCLN):
+            return TAPPING_TERM + 150;
+        default:
+            return TAPPING_TERM;
+    }
+}
diff --git a/users/cwebster2/keycodes.h b/users/cwebster2/keycodes.h
new file mode 100644
index 0000000000..b6363d646e
--- /dev/null
+++ b/users/cwebster2/keycodes.h
@@ -0,0 +1,27 @@
+/* Copyright 2020 Casey Webster <casey@e1337.dev>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include QMK_KEYBOARD_H
+
+enum userspace_custom_keycodes {
+    KC_LCCL = SAFE_RANGE,
+    NEW_SAFE_RANGE
+};
+
+#define KC_CTLBS CTL_T(KC_BSPC)
+#define KC_ALTCL LALT_T(KC_CAPS)
+#define KC_LOCK  LGUI(LCTL(KC_L))
diff --git a/users/cwebster2/my_miryoku.h b/users/cwebster2/my_miryoku.h
new file mode 100644
index 0000000000..943855ad43
--- /dev/null
+++ b/users/cwebster2/my_miryoku.h
@@ -0,0 +1,77 @@
+/* Copyright 2020 Casey Webster <casey@e1337.dev>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#define _______QWERTY_L1______        KC_Q,         KC_W,         KC_E,         KC_R,         KC_T
+#define _______QWERTY_L2______ LGUI_T(KC_A), LALT_T(KC_S), LCTL_T(KC_D), LSFT_T(KC_F),        KC_G
+#define _______QWERTY_L3______        KC_Z,         KC_X,         KC_C,         KC_V,         KC_B
+#define _______QWERTY_R1______        KC_Y,         KC_U,         KC_I,         KC_O,         KC_P
+#define _______QWERTY_R2______        KC_H,  RSFT_T(KC_J), RCTL_T(KC_K), RALT_T(KC_L), RGUI_T(KC_SCLN)
+#define _______QWERTY_R3______        KC_N,         KC_M,         KC_COMM,      KC_DOT,       KC_SLSH
+
+#define _______COLEMAK_L1_____        KC_Q,         KC_W,         KC_F,         KC_P,         KC_B
+#define _______COLEMAK_L2_____ LGUI_T(KC_A), LALT_T(KC_R), LCTL_T(KC_S), LSFT_T(KC_T),        KC_G
+#define _______COLEMAK_L3_____        KC_Z,         KC_X,         KC_C,         KC_D,         KC_V
+#define _______COLEMAK_R1_____        KC_J,         KC_L,         KC_U,         KC_Y,         KC_QUOT
+#define _______COLEMAK_R2_____        KC_M,  RSFT_T(KC_N), RCTL_T(KC_E), RALT_T(KC_I), RGUI_T(KC_O)
+#define _______COLEMAK_R3_____        KC_K,         KC_H,         KC_COMM,      KC_DOT,       KC_SLSH
+
+#define _______THUMBS_L_______ LT(_MOUSE,KC_ESC), LT(_NAV,KC_SPC),  LT(_MEDIA,  KC_TAB)
+#define _______THUMBS_R_______ LT(_FN,   KC_ENT), LT(_NUM,KC_BSPC), LT(_SYMBOLS,KC_DEL)
+
+#define _______NAKED_R___T____ KC_ENT,   KC_BSPC,  KC_DEL
+#define _______NAKED_L___T____ KC_ESC,   KC_SPC,   KC_TAB
+
+#define _______INACTIVE_R1____ KC_LOCK,  KC_TRNS,  KC_TRNS,  KC_TRNS,  RESET
+#define _______INACTIVE_R2____ KC_TRNS,  KC_LSFT,  KC_LCTL,  KC_LALT,  KC_LGUI
+#define _______INACTIVE_R3____ KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_RALT,  KC_TRNS
+
+#define _______INACTIVE_L1____ KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_LOCK
+#define _______INACTIVE_L2____ KC_LGUI,  KC_LALT,  KC_LCTL,  KC_LSFT,  KC_TRNS
+#define _______INACTIVE_L3____ KC_TRNS,  KC_RALT,  KC_LEFT,  KC_RGHT,  KC_TRNS
+
+#define _______INACTIVE__T____ KC_TRNS,  KC_TRNS,  KC_TRNS
+
+
+#define _______SYM______L1____ KC_RCBR,  KC_AMPR,  KC_ASTR,  KC_LPRN,  KC_LCBR
+#define _______SYM______L2____ KC_COLN,  KC_DLR,   KC_PERC,  KC_CIRC,  KC_PLUS
+#define _______SYM______L3____ KC_TILD,  KC_EXLM,  KC_AT,    KC_HASH,  KC_PIPE
+#define _______SYM_______T____ KC_LPRN,  KC_RPRN,  KC_UNDS
+
+#define _______NUM______L1____ KC_RBRC,  KC_7,  KC_8,  KC_9,  KC_LBRC
+#define _______NUM______L2____ KC_SCLN,  KC_4,  KC_5,  KC_6,  KC_EQL
+#define _______NUM______L3____ KC_GRV,   KC_1,  KC_2,  KC_3,  KC_SLSH
+#define _______NUM_______T____ KC_DOT,   KC_0,  KC_MINS
+
+#define _______FN_______L1____ KC_F12,   KC_F7,    KC_F8,  KC_F9,  KC_SYSREQ
+#define _______FN_______L2____ KC_F11,   KC_F4,    KC_F5,  KC_F6,  KC_TRNS
+#define _______FN_______L3____ KC_F10,   KC_F1,    KC_F2,  KC_F3,  KC_BSLS
+#define _______FN________T____ KC_MENU,  KC_SLSH,  KC_TRNS
+
+#define _______NAV______R1____ KC_UNDO,  KC_CUT,  KC_COPY,  KC_PSTE,  KC_AGIN
+#define _______NAV______R2____ KC_LEFT,  KC_DOWN,  KC_UP,  KC_RGHT,  KC_CAPS
+#define _______NAV______R3____ KC_HOME,  KC_PGDN,  KC_PGUP,  KC_END,  KC_INS
+#define _______NAV_______T____ KC_ENT,   KC_BSPC,  KC_DEL
+
+#define _______MEDIA____R1____ RGB_TOG,  RGB_MOD,  RGB_HUI,  RGB_SAI,  RGB_VAI
+#define _______MEDIA____R2____ KC_MPRV,  KC_VOLD,  KC_VOLU,  KC_MNXT,  KC_TRNS
+#define _______MEDIA____R3____ KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS
+#define _______MEDIA_____T____ KC_MSTP,  KC_MPLY,  KC_MUTE
+
+#define _______MOUSE____R1____ KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS
+#define _______MOUSE____R2____ KC_MS_L,  KC_MS_D,  KC_MS_U,  KC_MS_R,  KC_TRNS
+#define _______MOUSE____R3____ KC_WH_L,  KC_WH_D,  KC_WH_U,  KC_WH_R,  KC_TRNS
+#define _______MOUSE_____T____ KC_BTN1,  KC_BTN3,  KC_BTN2
diff --git a/users/cwebster2/rules.mk b/users/cwebster2/rules.mk
new file mode 100644
index 0000000000..f39d4ebc96
--- /dev/null
+++ b/users/cwebster2/rules.mk
@@ -0,0 +1,13 @@
+AUTO_SHIFT_ENABLE = no  # Enable autoshift
+MOUSEKEY_ENABLE = yes
+EXTRAKEY_ENABLE = yes
+CONSOLE_ENABLE = no
+BOOTMAGIC_ENABLE = no
+GRAVE_ESC_ENABLE = no
+CONSOLE_ENABLE = no
+SPACE_CADET_ENABLE    = no
+GRAVE_ESC_ENABLE      = no
+LTO_ENABLE = yes
+
+SRC += cwebster2.c
+SRC += keycodes.c