Skip to content

Commit

Permalink
Bocaj - Third Annual Refactor (Redux) (qmk#10295)
Browse files Browse the repository at this point in the history
* Reset everything to upstream, reapply Bocaj changes

* Bocaj - address PR comments

* Just in time changes

* Bocaj - Several adjustments after using the layout for a while
  • Loading branch information
JacobJerrell authored Dec 6, 2020
1 parent 6b1f96d commit 3076f86
Show file tree
Hide file tree
Showing 24 changed files with 1,403 additions and 992 deletions.
2 changes: 0 additions & 2 deletions layouts/community/ergodox/bocaj/config.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
#pragma once

#include QMK_KEYBOARD_CONFIG_H

#define LEADER_TIMEOUT 250
#define LEADER_PER_KEY_TIMING
307 changes: 143 additions & 164 deletions layouts/community/ergodox/bocaj/keymap.c

Large diffs are not rendered by default.

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

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.
This is my personal Ergodox EZ configuration, and my daily driver.

## Layers Overview
Most of the code resides in my userspace and is heavily based upon [Drashna's work](https://github.com/qmk/qmk_firmware/tree/master/users/drashna)... although considerably slimmed down.

* 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
## How to build

## LEDs Overview
Put simply:
`make ergodox_ez:bocaj`

* Used for _LOWER, _ADJUST, and _DIABLO layer indication
* Used for Ctrl/GUI, Shift, and Alt indication when on a default layer
On that note, I use a separate workspace when making changes to my layouts or userspace. In that repo, there is a tool that does this for me. See [JacobJerrell/qmk_layouts/tools/](https://github.com/JacobJerrell/qmk_layouts/tree/master/tools)

## Wrappers Overview
## Layers

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.
* WORKMAN: No one uses this board but me and I've never had a reason to switch to QWERTY
* LOWER:
* Left: Grave and navigation arrows
* Right: Numpad
* RAISE:
* Symbols across the top, F-Keys on the second row
* ADJUST
* Audio control, make/reset/version macros
* MOD: mouse navigation

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.
## Ergodox Specifics

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
I don't have the underglow or backlit versions so the 3 LEDs on the right board are used for layer indication if not on the base layer. If you're on the base layer, they're used for mod-key indicators.
23 changes: 13 additions & 10 deletions layouts/community/ergodox/bocaj/rules.mk
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
AUTO_SHIFT_ENABLE = no
COMMAND_ENABLE = no
SWAP_HANDS_ENABLE = no
TAP_DANCE_ENABLE = yes
EXTRAKEY_ENABLE = no
KEY_LOCK_ENABLE = yes
LEADER_ENABLE = yes
BOOTMAGIC_ENABLE = yes
TAP_DANCE_ENABLE = no
COMMAND_ENABLE = no # Commands for debug and configuration
CONSOLE_ENABLE = yes
SPACE_CADET_ENABLE = no
KEY_LOCK_ENABLE = yes
MOUSEKEY_ENABLE = yes
EXTRAKEY_ENABLE = yes
LEADER_ENABLE = yes

UNICODE_ENABLE = yes
UNICODEMAP_ENABLE = no
UCIS_ENABLE = no
UNICODE_ENABLE = no
UNICODEMAP_ENABLE = no
RGB_MATRIX_ENABLE = no
RGBLIGHT_ENABLE = no
109 changes: 109 additions & 0 deletions layouts/community/ortho_4x12/bocaj/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
#pragma once

#define LEADER_TIMEOUT 250
#define LEADER_PER_KEY_TIMING

#if defined(RGBLIGHT_ENABLE) && !defined(RGBLED_NUM)
# if defined(KEYBOARD_planck_light)
# define RGB_DI_PIN A0
# define RGBLED_NUM 13 // Number of LEDs
# endif
# define RGBLIGHT_HUE_STEP 12
# define RGBLIGHT_SAT_STEP 12
# define RGBLIGHT_VAL_STEP 12
# define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
# define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
# ifdef RGB_MATRIX_ENABLE
# define RGBLIGHT_DISABLE_KEYCODES
# endif
#endif // RGBLIGHT_ENABLE

#ifdef RGB_MATRIX_ENABLE
# define RGB_MATRIX_KEYPRESSES // reacts to keypresses (will slow down matrix scan by a lot)
// #define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (not recommened)
# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// #define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
// #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
# undef RGB_MATRIX_LED_PROCESS_LIMIT
# undef RGB_MATRIX_LED_FLUSH_LIMIT
#endif

#if defined(KEYBOARD_planck_ez)
# undef PRODUCT
# define PRODUCT Bocaj Hacked Planck EZ
#endif

#define EEPROM_I2C_RM24C512C

#define ENCODER_DIRECTION_FLIP
/*
* MIDI options
*/

/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1

/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

// #define MIDI_BASIC

/* enable advanced MIDI features:
- MIDI notes can be added to the keymap
- Octave shift and transpose
- Virtual sustain, portamento, and modulation wheel
- etc.
*/
//#define MIDI_ADVANCED

/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
//#define MIDI_TONE_KEYCODE_OCTAVES 2

#define FB_ERM_LRA 1 /* For ERM:0 or LRA:1*/
#define FB_BRAKEFACTOR 6 /* For 1x:0, 2x:1, 3x:2, 4x:3, 6x:4, 8x:5, 16x:6, Disable Braking:7 */
#define FB_LOOPGAIN 1 /* For Low:0, Medium:1, High:2, Very High:3 */

/* default 3V ERM vibration motor voltage and library*/
#if FB_ERM_LRA == 0
# define RATED_VOLTAGE 3
# define V_RMS 2.3
# define V_PEAK 3.30
/* Library Selection */
# define LIB_SELECTION 4 /* For Empty:0' TS2200 library A to D:1-5, LRA Library: 6 */

/* default 2V LRA voltage and library */
#elif FB_ERM_LRA == 1
# define RATED_VOLTAGE 2
# define V_RMS 2.0
# define V_PEAK 2.85
# define F_LRA 200
/* Library Selection */
# define LIB_SELECTION 6 /* For Empty:0' TS2200 library A to D:1-5, LRA Library: 6 */

#endif

/* Control 1 register settings */
#define DRIVE_TIME 25
#define AC_COUPLE 0
#define STARTUP_BOOST 1

/* Control 2 Settings */
#define BIDIR_INPUT 1
#define BRAKE_STAB 1 /* Loopgain is reduced when braking is almost complete to improve stability */
#define SAMPLE_TIME 3
#define BLANKING_TIME 1
#define IDISS_TIME 1

/* Control 3 settings */
#define NG_THRESH 2
#define ERM_OPEN_LOOP 1
#define SUPPLY_COMP_DIS 0
#define DATA_FORMAT_RTO 0
#define LRA_DRIVE_MODE 0
#define N_PWM_ANALOG 0
#define LRA_OPEN_LOOP 0
/* Control 4 settings */
#define ZC_DET_TIME 0
#define AUTO_CAL_TIME 3
Loading

0 comments on commit 3076f86

Please sign in to comment.