Skip to content

Commit

Permalink
[Keymap] Clean up my ergo keymaps and userspace (qmk#8857)
Browse files Browse the repository at this point in the history
* Remove more mouse keys settings missed in qmk#8836

* Turn off more unwanted make options

* clang-format my userspace

* Reword ergo layout docs so Crkbd is canonical

* Add a basic readme to my userspace

* Tweak Crkbd readme wording and fix typos

* Enable SPLIT_USB_DETECT for Lily58 w/ Elite-C bug
  • Loading branch information
bcat authored and jakobaa committed Jul 7, 2020
1 parent 0a5aa84 commit 1aed380
Show file tree
Hide file tree
Showing 7 changed files with 175 additions and 106 deletions.
100 changes: 96 additions & 4 deletions keyboards/crkbd/keymaps/bcat/readme.md
Original file line number Diff line number Diff line change
@@ -1,30 +1,122 @@
# bcat's Corne layout

This split ergo layout mirrors
[my Lily58 layout](https://github.com/qmk/qmk_firmware/tree/master/keyboards/lily58/keymaps/bcat)
with the number row removed and RGB controls added. See that layout's docs for
more details on the principles that went into the layout.
This is my favorite split ergo layout for typing, featuring the traditional
four ortho/ergo layers (Default, Lower, Raise, Adjust). It is loosely inspired
by the default Planck (numbers on Lower, symbols on Raise) and Crkbd (Space on
left, Enter on right) layouts, but has since been redesigned heavily according
to the principles described below:

* Since most of the modifiers are on the left half, keys frequently pressed
together with mods (e.g., numbers, function keys, etc.) are on the Raise layer
activated by the right thumb.

* Navigation can be done on the right half alone, to enable simultaneous
left-handed mousing. Additionally, Web pages can be scrolled with Space or
Shift+Space on the left half alone, to enable taking notes with the right hand
at the same time.

* Other than Right Shift (which I seldom use), mods aren't rebound on layers.

* Likewise, Backspace is not rebound on layers to avoid having to let go of
layer-switch keys to correct mistakes.

## Default layer

![Default layer layout](https://i.imgur.com/s1LDlSQ.png)

([KLE](http://www.keyboard-layout-editor.com/#/gists/08d9827d916662a9414f48805aa895a5))

* The alpha keys are a standard QWERTY layout, no funny business there.

* Tab and Backspace are in familiar locations from my row-staggered boards
(almost all of which use HHKB-style split backspace).

* Likewise, the Ctrl key is in the same place as on my row-staggered boards
(where I've been remapping Caps Lock as Ctrl since before even using QMK).

* There are two Shift keys, because I do use Right Shift on occasion (even
though I'm predominately a Left Shift-er).

* Lower and Raise layer-switch keys are below the left and right thumb,
respectively, when resting my fingers on the home row.

* Space and Enter are on the big thumb keys so they're easy to press.

* Alt is on the left so I can navigate back (Alt+Raise+H) and forward
(Alt+Raise+L) without having to uncomfortably hit two thumb keys on the same
half. This puts Super on the right by the process of elimination.

* Escape shares a mod-tap key with Ctrl, which is convenient for Vim, but not
something I'm totally in love with, as even after tweaking `TAPPING_TERM` I
still get occasional spurious Esc taps. (I might move Esc up a key and put Tab
on a layer, but that'd take some getting used to....)

## Lower layer

![Lower layer layout](https://i.imgur.com/rDlSmrA.png)

([KLE](http://www.keyboard-layout-editor.com/#/gists/c3fba5eaa2cd70fdfbdbc0f9e34d3bc0))

* This could also be called the "symbol layer".

* Shifted numbers are bound in their usual positions on the top row.

* Hyphen/Underscore and Equals/Plus are in the right index- and middle-finger
columns for easy reach. They share the same relative position as on a
row-staggered keyboard, and the shifted versions are physically above the
unshifted versions as a mnemonic device.

* Brackets and braces are placed below the parens for easy recall. Once again,
the shifted versions are on the home row and the unshifted versions are on the
bottom row.

* Forward Slash/Pipe and Backtick/Tilde fill out the remaining positions on the
right half, with the same relative positions as on a row-staggered HHKB layout.
And yup, the shifted versions are above the unshifted versions.

* Caps Lock is bound in the same position as on an HHKB, for lack of an obvious
better location.

* Some extra keys are placed on the bottom row of the left half, ensuring every
key on a TKL has a binding.

* The left-half home row is reversed for future use. (It's free real estate.)

## Raise layer

![Raise layer layout](https://i.imgur.com/cVoKygg.png)

([KLE](http://www.keyboard-layout-editor.com/#/gists/08b44355d4ca85d294bad9e2821f91d7))

* This could also be called the "number layer".

* Unshifted numbers are bound in their usual positions on the top row.

* Arrow keys are on VIM-style HJKL keys.

* Home/End and Page Up/Page Down are in the same column as the arrow keys, but
translated down one row. (This means that the comma and period keys are not
bound on the number layer, which makes data entry a bit funky. I might add a
dedicated numpad layer to compensate.)

* Function keys F1–F10 take up most of remaining space on the left half, with
F11 and F12 spilling over to the right half. (This puts the most used function
keys (F1–F5) on the home row.)

* Insert and Delete are on the rightmost column, because there didn't seem to
be a better place to put them.

## Adjust layer

![Adjust layer layout](https://i.imgur.com/LEHM4DU.png)

([KLE](http://www.keyboard-layout-editor.com/#/gists/77e7572e077b36a23eb2086017e16fee))

* Media keys are centered around the ESDF cluster, just like I arrange them on
row-staggered keyboards. (It's even more sensible with columnar stagger.)

* The navigation keys are replaced by RGB controls. Again, this mirrors the
positioning I use on my row-staggered keyboards.

* Finally, reset keys live at the top-left corner of the right half where it's
reasonably hard to press them by accident.
3 changes: 3 additions & 0 deletions keyboards/lily58/keymaps/bcat/config.h
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
#pragma once

#define EE_HANDS

/* Work around Elite-C v3 with broken VBUS detection. */
#define SPLIT_USB_DETECT
51 changes: 10 additions & 41 deletions keyboards/lily58/keymaps/bcat/readme.md
Original file line number Diff line number Diff line change
@@ -1,49 +1,18 @@
# bcat's Lily58 layout

This split ergo layout is standard QWERTY on the default layer, with symbols on
the lower layer, numbers/navigation on the raise layer, and media keys centered
around the ESDF cluster in the adjust (raise + lower) layer. A few general
principles went into this layout:
This split ergo layout follows my preferred [Crkbd
layout](https://github.com/qmk/qmk_firmware/tree/master/keyboards/crkbd/keymaps/bcat)
with the following changes:

* The number row is optional, as are the outermost bottom row keys and the
"extra" keys on the innnermost columns below the controllers. This allows me to
switch between this keyboard and a 40% like the
[Crkbd](https://github.com/qmk/qmk_firmware/tree/master/keyboards/lily58/keymaps/bcat)
without breaking muscle memory.
* There's an optional number row at the top of the keyboard. I am quite used to
using layers for numbers and symbols, so in practice this goes unused.

* Space and Enter are on the big thumb keys so they're easy to press.
* The dedicated Hyphen/Underscore and Equals/Plus keys on the number row are
placed in the same positions as on the ErgoDox EZ. (There's no real reason for
this; I just had to do _something_ with those keys.)

* There are two shift keys because Right Shift is all that important, but just
because I don't have any better ideas for what to put there.

* Arrow keys are on VIM-style HJKL keys.

* Home/End and Page Up/Page Down are equivalent to the arrow keys, but
translated down one row.

* Navigation is usable with just the right hand, to enable left-handed mousing
at the same time. Additionally, Web page scrolling (Space, Shift+Space) is
possible with just the left hand, for writing at the same time as scrolling.

* Escape is easy to reach because Vim is life.

* Since most of the modifiers are on the left half, keys frequently pressed
together with mods (e.g., numbers, function keys, etc.) are on the Raise layer
activated by the right thumb.

* Every key on a TKL has a binding.

* Backspace is bound in the same place on every layer to avoid having to let go
of layer-shift keys to fix a mistake.

* Likewise, the comma and period keys are not rebound on the raise layer to
allow typing numbers with thousand separators and decimal points without
releasing the layer key.

* Brackets and braces are on or near the home row for quick access when coding.
They're positioned below the parens on the Raise layer for easy recall.

* For consistency, mods aren't rebound on layers (except for the Tab key).
* The extra thumb keys are used for dedicated Ctrl/Menu keys (not super useful)
and browser back/forward navigation keys (actually more useful than expected).

## Default layer

Expand Down
4 changes: 2 additions & 2 deletions users/bcat/bcat.c
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#include "quantum.h"

#if defined(RGBLIGHT_ENABLE)
/* Adjust RGB static hue ranges for shorter gradients than default. */
const uint8_t RGBLED_GRADIENT_RANGES[] PROGMEM = {255, 127, 63, 31, 15};
/* Adjust RGB static hue ranges for shorter gradients than default. */
const uint8_t RGBLED_GRADIENT_RANGES[] PROGMEM = {255, 127, 63, 31, 15};
#endif
82 changes: 31 additions & 51 deletions users/bcat/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,65 +26,45 @@
#define TAPPING_FORCE_HOLD

#if defined(RGB_MATRIX_ENABLE)
/* Turn off per-key RGB when the host goes to sleep. */
#define RGB_DISABLE_WHEN_USB_SUSPENDED true

/* Keep per-key RGB increments consistent across keyboards. */
#undef RGB_MATRIX_HUE_STEP
#undef RGB_MATRIX_SAT_STEP
#undef RGB_MATRIX_VAL_STEP
#undef RGB_MATRIX_SPD_STEP

#define RGB_MATRIX_HUE_STEP 8
#define RGB_MATRIX_SAT_STEP 17
#define RGB_MATRIX_VAL_STEP 17
#define RGB_MATRIX_SPD_STEP 17

/* Turn on additional RGB animations. */
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
#define RGB_MATRIX_KEYPRESSES
/* Turn off per-key RGB when the host goes to sleep. */
# define RGB_DISABLE_WHEN_USB_SUSPENDED true

/* Keep per-key RGB increments consistent across keyboards. */
# undef RGB_MATRIX_HUE_STEP
# undef RGB_MATRIX_SAT_STEP
# undef RGB_MATRIX_VAL_STEP
# undef RGB_MATRIX_SPD_STEP

# define RGB_MATRIX_HUE_STEP 8
# define RGB_MATRIX_SAT_STEP 17
# define RGB_MATRIX_VAL_STEP 17
# define RGB_MATRIX_SPD_STEP 17

/* Turn on additional RGB animations. */
# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
# define RGB_MATRIX_KEYPRESSES
#endif

#if defined(RGBLIGHT_ENABLE)
/* Turn off RGB underglow when the host goes to sleep. */
#define RGBLIGHT_SLEEP
/* Turn off RGB underglow when the host goes to sleep. */
# define RGBLIGHT_SLEEP

/* Keep RGB underglow level increments consistent across keyboards. */
#undef RGBLIGHT_HUE_STEP
#undef RGBLIGHT_SAT_STEP
#undef RGBLIGHT_VAL_STEP
/* Keep RGB underglow level increments consistent across keyboards. */
# undef RGBLIGHT_HUE_STEP
# undef RGBLIGHT_SAT_STEP
# undef RGBLIGHT_VAL_STEP

#define RGBLIGHT_HUE_STEP 8
#define RGBLIGHT_SAT_STEP 17
#define RGBLIGHT_VAL_STEP 17
# define RGBLIGHT_HUE_STEP 8
# define RGBLIGHT_SAT_STEP 17
# define RGBLIGHT_VAL_STEP 17
#endif

#if defined(BACKLIGHT_ENABLE)
/* Enable backlight breathing across the board. */
#define BACKLIGHT_BREATHING

/* Keep backlight level increments consistent across keyboards. */
#undef BACKLIGHT_LEVELS

#define BACKLIGHT_LEVELS 7
#endif

#if defined(MOUSEKEY_ENABLE)
/* Make mouse operation smoother. */
#undef MOUSEKEY_DELAY
#undef MOUSEKEY_INTERVAL

#define MOUSEKEY_DELAY 0
#define MOUSEKEY_INTERVAL 16
/* Enable backlight breathing across the board. */
# define BACKLIGHT_BREATHING

/* Lower mouse speed to adjust for reduced MOUSEKEY_INTERVAL. */
#undef MOUSEKEY_MAX_SPEED
#undef MOUSEKEY_TIME_TO_MAX
#undef MOUSEKEY_WHEEL_MAX_SPEED
#undef MOUSEKEY_WHEEL_TIME_TO_MAX
/* Keep backlight level increments consistent across keyboards. */
# undef BACKLIGHT_LEVELS

#define MOUSEKEY_MAX_SPEED 7
#define MOUSEKEY_TIME_TO_MAX 150
#define MOUSEKEY_WHEEL_MAX_SPEED 3
#define MOUSEKEY_WHEEL_TIME_TO_MAX 150
# define BACKLIGHT_LEVELS 7
#endif
13 changes: 13 additions & 0 deletions users/bcat/readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# bcat's userspace

This is some code and config shared by all of [my](https://github.com/bcat)
keyboards. I have a few different keymaps spread throughout the repo; however,
they are all derived from two "canonical" keymaps for my preferred layouts:

* For typing, my canonical layout is my
[Crkbd](https://github.com/qmk/qmk_firmware/tree/master/keyboards/crkbd/keymaps/bcat)
(split ergo, columnar-staggered) layout.

* For gaming, my canonical layout is my
[Tsangan](https://github.com/qmk/qmk_firmware/tree/master/layouts/community/60_tsangan_hhkb/bcat)
(row-staggered) layout.
28 changes: 20 additions & 8 deletions users/bcat/rules.mk
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,30 @@ BOOTMAGIC_ENABLE = lite
# Enable media keys on all keyboards.
EXTRAKEY_ENABLE = yes

# Disable some unwanted features on all keyboards.
API_SYSEX_ENABLE = no
# Enable link-time optimization to reduce binary size.
LINK_TIME_OPTIMIZATION_ENABLE = yes

# Disable unused build options on all keyboards.
COMMAND_ENABLE = no
CONSOLE_ENABLE = no
FAUXCLICKY_ENABLE = no
MIDI_ENABLE = no
MOUSEKEY_ENABLE = no
NKRO_ENABLE = no
TERMINAL_ENABLE = no

# Disable unused hardware options on all keyboards.
FAUXCLICKY_ENABLE = no
MIDI_ENABLE = no
SLEEP_LED_ENABLE = no

# Disable unused other options.
API_SYSEX_ENABLE = no
AUTO_SHIFT_ENABLE = no
COMBO_ENABLE = no
KEYBOARD_LOCK_ENABLE = no
KEY_LOCK_ENABLE = no
LEADER_ENABLE = no
SWAP_HANDS_ENABLE = no
TAP_DANCE_ENABLE = no
UCIS_ENABLE = no
UNICODE_ENABLE = no
UNICODEMAP_ENABLE = no

# Enable link-time optimization to reduce binary size.
LINK_TIME_OPTIMIZATION_ENABLE = yes
UNICODE_ENABLE = no

0 comments on commit 1aed380

Please sign in to comment.