Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bocaj Layout and Userspace Refactor #4753

Merged
merged 44 commits into from
Jan 2, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
59c6870
Bocaj Layout Revamp
JacobJerrell Apr 10, 2018
eeba0ce
Pull in Upstream (#1)
JacobJerrell Apr 11, 2018
b17fa50
Revert "Pull in Upstream (#1)"
JacobJerrell Apr 11, 2018
0a945eb
Merge pull request #2 from JacobJerrell/revert-1-master
JacobJerrell Apr 11, 2018
9b7e1e9
Merge pull request #3 from qmk/master
JacobJerrell Apr 11, 2018
3aaab4e
Updates to Bocaj Files
JacobJerrell Apr 20, 2018
6211b78
Merge remote-tracking branch 'upstream/master'
JacobJerrell May 19, 2018
638c005
Merge remote-tracking branch 'upstream/master'
JacobJerrell May 31, 2018
850f7c6
Merge remote-tracking branch 'upstream/master'
JacobJerrell May 31, 2018
603f9e2
Updates to Bocaj
JacobJerrell Jul 10, 2018
10dd01f
Merge remote-tracking branch 'upstream/master'
JacobJerrell Jul 10, 2018
e106f84
Removed 'secrets.h'
JacobJerrell Jul 10, 2018
b46a20e
Updates to Bocaj
JacobJerrell Jul 10, 2018
b94845e
Merge branch 'master' of https://github.com/JacobJerrell/qmk_firmware
JacobJerrell Jul 10, 2018
cbc7673
Total revisioning of keymap and layout structure
JacobJerrell Jul 24, 2018
59a18c6
Missed readme.md file
JacobJerrell Jul 24, 2018
cb723cc
Merge remote-tracking branch 'upstream/master'
JacobJerrell Jul 25, 2018
9414e91
Bocaj - Permissive Hold setting enabled
JacobJerrell Jul 25, 2018
23898fd
Merge remote-tracking branch 'upstream/master'
JacobJerrell Aug 25, 2018
beb30dd
Switching from ErgoDox EZ centric configuration to the layout/user ap…
JacobJerrell Aug 25, 2018
a4539a7
Bocaj - Create Userspace and Ergodox layout
JacobJerrell Aug 25, 2018
90b1506
Update settings.json
JacobJerrell Aug 27, 2018
b8261d1
Pushing local updates
JacobJerrell Oct 29, 2018
e7b52ee
Merge branch 'master' of https://github.com/JacobJerrell/qmk_firmware
JacobJerrell Oct 29, 2018
7a2f2f4
Reverting .vscode/settings.json
JacobJerrell Oct 29, 2018
9734427
Merge remote-tracking branch 'upstream/master'
JacobJerrell Oct 29, 2018
4f0ba55
Adds pretty_osx and _win wrappers
JacobJerrell Oct 29, 2018
de4d404
Utilize Windows and Mac Wrappers
JacobJerrell Oct 29, 2018
8f99d4d
Update layouts/community/ergodox/bocaj/keymap.c
JacobJerrell Oct 29, 2018
41e6e4d
Updates to Bocaj keymap.c
JacobJerrell Oct 30, 2018
8bf314e
Updates to Bocaj
JacobJerrell Oct 30, 2018
37cdbc6
Add LShift to _Adjust layer
JacobJerrell Oct 31, 2018
c1d2a9c
Minor changes to bocaj
JacobJerrell Nov 7, 2018
36b975a
Merge remote-tracking branch 'upstream/master' into bocaj
JacobJerrell Dec 21, 2018
99eba51
Updates to Bocaj config & keymap; Fixed problem with process_leader.c
JacobJerrell Dec 21, 2018
f5e36bf
Bocaj - Updates to Layout and Userspace
JacobJerrell Dec 24, 2018
5184a40
Remove type_traits
JacobJerrell Dec 24, 2018
4d132aa
Merge remote-tracking branch 'upstream/master' into bocaj
JacobJerrell Dec 28, 2018
4d2b630
Merge remote-tracking branch 'upstream/master' into bocaj_refactor
JacobJerrell Dec 29, 2018
2a08975
refactor stage 1
JacobJerrell Dec 31, 2018
0ce51d0
Bocaj Refactor Phase II
JacobJerrell Dec 31, 2018
6220995
Updates to Bocaj
JacobJerrell Jan 2, 2019
cedfa6b
Bocaj Refactor Phase 3 Part 2
JacobJerrell Jan 2, 2019
be0de32
Slight adjustment to KC_MAKE
JacobJerrell Jan 2, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions layouts/community/ergodox/bocaj/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@

#include QMK_KEYBOARD_CONFIG_H

#undef PRODUCT
#define PRODUCT BocajEZ - Frankensteined ErgoDox EZ
#define LEADER_TIMEOUT 250
#define LEADER_PER_KEY_TIMING
292 changes: 121 additions & 171 deletions layouts/community/ergodox/bocaj/keymap.c

Large diffs are not rendered by default.

37 changes: 37 additions & 0 deletions layouts/community/ergodox/bocaj/readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Bocaj Layout

While I've put my own spin on most things, much of the credit for these ideas belongs to Drashna and/or the people he derived things from. Please see his [layout](../drashna/) and [userspace](../../../../users/drashna/) for lots of ideas and inspiration.

## Layers Overview

* Default
* Workman
* Qwerty
* Windows Workman (swaps GUI and CTRL buttons)
* Lower
* F1-12 Top Row
* Grave / Layer Switch macro at Caps Lock position
* Navigation at QWERTY 'ESDF' position
* Numpad under right hand
* Adjust
* Volume Control
* Mac Lock Macro
* Make / Reset/ EEPROM keys
* Default Layer changing keys
* Diablo Layer
* Moved shortcuts within left hands reach
* Macros to spam 1-4 every ~1 second
* Shift in thumb cluster to prevent pinky fatique

## LEDs Overview

* Used for _LOWER, _ADJUST, and _DIABLO layer indication
* Used for Ctrl/GUI, Shift, and Alt indication when on a default layer

## Wrappers Overview

While it isn't a novel idea, I feel the need to mention it because it really appeals to me as a person that doesn't like repetitive code.

We've all come to know and love the pretty wrapper for Ergodox because it makes for such a beautiful, self-documenting keymap. In this keymap, we are building ontop of the pretty wrapper to wrap our default layers with our keys that aren't unique to the layer.

Now you can wrap your keymap with `LAYOUT_ergodox_pretty_base_wrapper()` and only feed it the alpha keys, having the top, side, bottom, and thumb clusters automatically filled in. If you make a key to any of the top, side, bottom, or thumb cluster keys, it will propegate to all layers that have this wrapper, or have KC_TRNS keycodes in the same location
5 changes: 5 additions & 0 deletions layouts/community/ergodox/bocaj/rules.mk
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,8 @@ SWAP_HANDS_ENABLE = no
TAP_DANCE_ENABLE = yes
EXTRAKEY_ENABLE = no
KEY_LOCK_ENABLE = yes
LEADER_ENABLE = yes

UNICODE_ENABLE = yes
UNICODEMAP_ENABLE = no
UCIS_ENABLE = no
200 changes: 106 additions & 94 deletions users/bocaj/bocaj.c
Original file line number Diff line number Diff line change
@@ -1,14 +1,30 @@
/*
Copyright 2018 Jacob Jerrell <[email protected]> @JacobJerrell
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 "bocaj.h"
#include "eeprom.h"
#include "version.h"
#include "tap_dances.h"

static uint16_t copy_paste_timer;
userspace_config_t userspace_config;
#if (defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE))
#define BOCAJ_UNICODE_MODE UC_OSX
#else
// set to 2 for UC_WIN, set to 4 for UC_WINC
#define BOCAJ_UNICODE_MODE 2
#endif

/* *** *** *** *** *
* Helper Functions *
* *** *** *** *** */
void tap(uint16_t keycode){ register_code(keycode); unregister_code(keycode); };

// Add reconfigurable functions here, for keymap customization
Expand Down Expand Up @@ -36,10 +52,7 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
}

__attribute__ ((weak))
bool process_record_secrets(uint16_t keycode, keyrecord_t *record) {
return true;
}

void matrix_scan_secrets(void) {}

__attribute__ ((weak))
uint32_t layer_state_set_keymap (uint32_t state) {
Expand All @@ -57,7 +70,14 @@ void led_set_keymap(uint8_t usb_led) {}
// Call user matrix init, set default RGB colors and then
// call the keymap's init function
void matrix_init_user(void) {
userspace_config.raw = eeprom_read_byte(EECONFIG_USERSPACE);
userspace_config.raw = eeconfig_read_user();

#if (defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE))
set_unicode_input_mode(BOCAJ_UNICODE_MODE);
get_unicode_input_mode();
#endif //UNICODE_ENABLE


matrix_init_keymap();
}

Expand All @@ -78,6 +98,18 @@ void suspend_wakeup_init_user(void)
#endif
}

void eeconfig_init_user(void) {
userspace_config.raw = 0;
eeconfig_update_user(userspace_config.raw);
#if (defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE))
set_unicode_input_mode(BOCAJ_UNICODE_MODE);
get_unicode_input_mode();
#else
eeprom_update_byte(EECONFIG_UNICODEMODE, BOCAJ_UNICODE_MODE);
#endif
}

LEADER_EXTERNS();
// No global matrix scan code, so just run keymap's matrix
// scan function
void matrix_scan_user(void) {
Expand All @@ -86,92 +118,72 @@ void matrix_scan_user(void) {
has_ran_yet = true;
startup_user();
}
LEADER_DICTIONARY() {
leading = false;
leader_end();

// Mac Save (Leader -> s)
SEQ_ONE_KEY(KC_S) {
SEND_STRING(SS_LGUI("s"));
}

// Mac copy line down (Leader -> d, d)
SEQ_TWO_KEYS(KC_D, KC_D) {
register_code(KC_LSHIFT);
register_code(KC_HOME);
unregister_code(KC_HOME);
unregister_code(KC_LSHIFT);
SEND_STRING(SS_LGUI("c"));
tap(KC_END);
tap(KC_ENTER);
SEND_STRING(SS_LGUI("v"));
}

// Mac copy line up (Leader -> u, u)
SEQ_TWO_KEYS(KC_U, KC_U) {
register_code(KC_LSHIFT);
register_code(KC_HOME);
unregister_code(KC_HOME);
unregister_code(KC_LSHIFT);
SEND_STRING(SS_LGUI("c"));
tap(KC_UP);
tap(KC_END);
tap(KC_ENTER);
SEND_STRING(SS_LGUI("v"));
}

// Mac VS Debug
SEQ_ONE_KEY(KC_D) {
tap(KC_F5);
}

// Mac VS Stop Debug
SEQ_TWO_KEYS(KC_S, KC_D) {
register_code(KC_LSHIFT);
tap(KC_F5);
unregister_code(KC_LSHIFT);
}

// Start Diablo 3
SEQ_ONE_KEY(KC_3) {
SEND_STRING(SS_LCTRL(" "));
SEND_STRING("Diablo");
tap(KC_ENTER);
}

SEQ_ONE_KEY(KC_B) {
SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION " ");
tap(KC_ENTER);
SEND_STRING ("Built at: " QMK_BUILDDATE);
}
#ifndef NO_SECRETS
matrix_scan_secrets();
#endif // !NO_SECRETS
}

#ifdef TAP_DANCE_ENABLE // Run Diablo 3 macro checking code.
run_diablo_macro_check();
#endif // TAP_DANCE_ENABLE

matrix_scan_keymap();
}

bool process_record_user(uint16_t keycode, keyrecord_t *record) {
/* uint8_t default_layer = 0;
default_layer = eeconfig_read_default_layer(); */
switch (keycode) {
case JJ_COPY:
if (!record->event.pressed) {
SEND_STRING(SS_LGUI("c"));
}
return false;
break;
case JJ_PSTE:
if (!record->event.pressed) {
SEND_STRING(SS_LGUI("v"));
}
return false;
break;
case JJ_ARRW:
if (!record->event.pressed) {
SEND_STRING("->");
}
return false;
break; /*
case KC_SWRK:
if (!record->event.pressed) {
set_single_persistent_default_layer(_SWRKMN);
layer_move(default_layer);
//ergodox_blink_all_leds();
//ergodox_blink_all_leds();
}
return false;
break;
case KC_HWRK:
if (!record->event.pressed) {
set_single_persistent_default_layer(_HWRKMN);
layer_move(default_layer);
//ergodox_blink_all_leds();
//ergodox_blink_all_leds();
}
return false;
break;
case KC_EPRM:
if (!record->event.pressed) {
//ergodox_blink_all_leds();
eeconfig_init();
}
return false;
break;
case MC_LOCK:
if (!record->event.pressed) {
layer_move(default_layer);
SEND_STRING(SS_LCTRL(SS_LGUI("q")));
}
return false;
break; */
case KC_DCLR:
#ifdef TAP_DANCE_ENABLE
if (record->event.pressed) {
uint8_t dtime;
for (dtime = 0; dtime < 4; dtime++) {
diablo_key_time[dtime] = diablo_times[0];
}
}
#endif // !TAP_DANCE_ENABLE
return false;
break;
case KC_CCCV:
if (record->event.pressed) {
copy_paste_timer = timer_read();
} else {
if (timer_elapsed(copy_paste_timer) > TAPPING_TERM) { // Hold, copy
SEND_STRING(SS_LGUI("c"));
} else {
SEND_STRING(SS_LGUI("v"));
}
}
return false;
break;
}
return process_record_keymap(keycode, record);
}

Loading