Merge remote-tracking branch 'refs/remotes/jackhumbert/master'
# Conflicts: # quantum/template/template.c # quantum/template/template.hexample_keyboards
commit
ec62d9e85c
@ -0,0 +1,19 @@
|
||||
#!/bin/bash
|
||||
#a tool to fix broken keymaps as a result of pull request #190
|
||||
#changing the declaration of matrix_scan_user() and matrix_init_user()
|
||||
#
|
||||
#This script will save a copy of the specified keymap as keymap.c.bak
|
||||
#and then create a new keymap.c with the definion corrected.
|
||||
#this script must be run from the ergodox_ez directory
|
||||
if [ $# -ne 1 ]; then
|
||||
echo $0: usage: ./190hotfix keymap_name
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo Saving backup as ./keymaps/$1/keymap.c.bak ...
|
||||
mv ./keymaps/$1/keymap.c ./keymaps/$1/keymap.c.bak
|
||||
|
||||
echo Modifying ./keymaps/$1/keymap.c ...
|
||||
cat ./keymaps/$1/keymap.c.bak | sed -r 's/^void \* matrix_/void matrix_/'>./keymaps/$1/keymap.c
|
||||
|
||||
echo Complete!
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Before Width: | Height: | Size: 546 KiB After Width: | Height: | Size: 95 KiB |
Binary file not shown.
Before Width: | Height: | Size: 563 KiB After Width: | Height: | Size: 379 KiB |
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,134 @@
|
||||
#include "ergodox_ez.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
|
||||
#define BASE 0
|
||||
#define SYMB 1
|
||||
#define PLVR 2
|
||||
#define ARRW 3
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[BASE] = KEYMAP(
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_F14,
|
||||
KC_TAB, KC_Q, KC_W, KC_D, KC_F, KC_K, TG(PLVR),
|
||||
CTL_T(KC_ESC), KC_A, KC_S, KC_E, KC_T, KC_G,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC,
|
||||
KC_F1, KC_F2, KC_F3, KC_LALT, KC_LGUI,
|
||||
/*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_VOLD, KC_MUTE,
|
||||
/*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_VOLU,
|
||||
/*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_BSPC, CTL_T(KC_ESC), KC_FN1,
|
||||
//
|
||||
/*-*/ KC_F15, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL,
|
||||
/*-*/ KC_BSLS, KC_J, KC_U, KC_R, KC_L, KC_SCLN, KC_MINS,
|
||||
/*-*/ /*-*/ KC_Y, KC_N, KC_I, KC_O, KC_H, KC_ENT,
|
||||
/*-*/ KC_RBRC, KC_P, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
||||
/*-*/ /*-*/ /*-*/ KC_RGUI, KC_RALT, KC_F4, KC_F5, KC_F6,
|
||||
KC_MPLY, KC_MNXT,
|
||||
KC_MPRV,
|
||||
KC_FN3, KC_QUOT, KC_SPC
|
||||
),
|
||||
[SYMB] = KEYMAP(
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS,
|
||||
KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
/*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS,
|
||||
/*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS,
|
||||
/*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
//
|
||||
/*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
/*-*/ KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,
|
||||
/*-*/ /*-*/ KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TRNS,
|
||||
/*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
/*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS,
|
||||
KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
[PLVR] = KEYMAP(
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS,
|
||||
KC_NO, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS,
|
||||
KC_NO, KC_Q, KC_W, KC_E, KC_R, KC_T,
|
||||
KC_NO, KC_A, KC_S, KC_D, KC_F, KC_G, KC_NO,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO,
|
||||
/*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS,
|
||||
/*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS,
|
||||
/*-*/ /*-*/ /*-*/ /*-*/ KC_C, KC_V, KC_NO,
|
||||
//
|
||||
/*-*/ KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
/*-*/ KC_NO, KC_6, KC_7, KC_8, KC_9, KC_0, KC_NO,
|
||||
/*-*/ /*-*/ KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,
|
||||
/*-*/ KC_NO, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||
/*-*/ /*-*/ /*-*/ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
KC_TRNS, KC_TRNS,
|
||||
KC_TRNS,
|
||||
KC_NO, KC_N, KC_M
|
||||
),
|
||||
[ARRW] = KEYMAP(
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_BTN1, KC_MS_U, KC_BTN2, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
/*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS,
|
||||
/*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS,
|
||||
/*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
//
|
||||
/*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
/*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
/*-*/ /*-*/ KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS,
|
||||
/*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
/*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS,
|
||||
KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM fn_actions[] = {
|
||||
[SYMB] = ACTION_LAYER_TAP_TOGGLE(SYMB), // FN1 - Momentary Symbols Layer
|
||||
[PLVR] = ACTION_LAYER_TAP_TOGGLE(PLVR), // FN2 - Momentary Plover Layer
|
||||
[ARRW] = ACTION_LAYER_TAP_TOGGLE(ARRW), // FN3 - Momentary Arrows Layer
|
||||
};
|
||||
|
||||
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
||||
{
|
||||
// MACRODOWN only works in this function
|
||||
switch(id) {
|
||||
case 0:
|
||||
if (record->event.pressed) {
|
||||
register_code(KC_RSFT);
|
||||
} else {
|
||||
unregister_code(KC_RSFT);
|
||||
}
|
||||
break;
|
||||
}
|
||||
return MACRO_NONE;
|
||||
};
|
||||
|
||||
// Runs just one time when the keyboard initializes.
|
||||
void matrix_init_user(void) {
|
||||
};
|
||||
|
||||
// Runs constantly in the background, in a loop.
|
||||
void matrix_scan_user(void) {
|
||||
uint8_t layer = biton32(layer_state);
|
||||
ergodox_board_led_off();
|
||||
ergodox_right_led_1_off();
|
||||
ergodox_right_led_2_off();
|
||||
ergodox_right_led_3_off();
|
||||
switch (layer) {
|
||||
case SYMB:
|
||||
ergodox_right_led_1_on();
|
||||
break;
|
||||
case PLVR:
|
||||
ergodox_right_led_2_on();
|
||||
break;
|
||||
case ARRW:
|
||||
ergodox_right_led_3_on();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
};
|
@ -0,0 +1,43 @@
|
||||
# Roman's Layout
|
||||
|
||||
There are four layers:
|
||||
|
||||
- **BASE** is [Norman layout](https://normanlayout.info/).
|
||||
- **SYMB** for numbers and symbols.
|
||||
- **PLVR** is optimized for [Plover](http://www.openstenoproject.org).
|
||||
- **ARRW** for navigation.
|
||||
|
||||
[![keyboard-layout](romanzolotarev-norman-plover-osx.png)](http://www.keyboard-layout-editor.com/#/gists/8ebcb701ecb763944417)
|
||||
|
||||
## Switching
|
||||
|
||||
- Tap `SYMB` to toggle **SYMB**.
|
||||
- Tap `ARRW` to toggle **ARRW**.
|
||||
- Hold `SYMB` (or `ARRW`) to activate **SYMB** (or **ARRW**) while holding.
|
||||
- Tap `PLVR` to toggle **PLVR**.
|
||||
|
||||
## LEDs
|
||||
|
||||
- Red: SYMB is on.
|
||||
- Green: PLVR is on.
|
||||
- Blue: ARRW is on.
|
||||
|
||||
## Functional Keys
|
||||
|
||||
- Tap `F1` to mute microphone via [Shush](http://mizage.com/shush/).
|
||||
- Tap `F2` to copy screenshot to the clipboard.
|
||||
- Hold `SHIFT` and tap `F2` to save screenshot as a file.
|
||||
- Tap `F3`, `F4`, `F5`, `F6` to resize a window via [Divvy](http://mizage.com/divvy/).
|
||||
- Tap `F14`, `F15` to adjust display brightness.
|
||||
|
||||
## CTRL/ESC
|
||||
|
||||
Both of those keys are frequently used in Vim.
|
||||
|
||||
- Tap `CTRL/ESC` to send `ESC`.
|
||||
- Hold `CTRL/ESC` to use as `CTRL`.
|
||||
|
||||
## Activate N-rollover
|
||||
|
||||
- While in **BASE** hold left `SHIFT` and right `SHIRT` and then tap `N`.
|
||||
- Then you can activate **PLVR** and use ErgoDox EZ for steno.
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
After Width: | Height: | Size: 127 KiB |
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,9 @@
|
||||
#!/bin/bash
|
||||
#a quick tool to rebuild all the hex files for the keymaps in the ./keymaps/ directory
|
||||
make clean
|
||||
for f in ./keymaps/*
|
||||
do
|
||||
MAPNAME=$(echo "$f"|sed -r 's#^./keymaps/##')
|
||||
make KEYMAP=$MAPNAME
|
||||
mv ergodox_ez.hex "$f/$MAPNAME.hex"
|
||||
done
|
@ -1,48 +1,39 @@
|
||||
#include "%KEYBOARD%.h"
|
||||
|
||||
__attribute__ ((weak))
|
||||
void * matrix_init_user(void) {
|
||||
void matrix_init_user(void) {
|
||||
// leave this function blank - it can be defined in a keymap file
|
||||
return NULL;
|
||||
};
|
||||
|
||||
__attribute__ ((weak))
|
||||
void * matrix_scan_user(void) {
|
||||
void matrix_scan_user(void) {
|
||||
// leave this function blank - it can be defined in a keymap file
|
||||
return NULL;
|
||||
};
|
||||
|
||||
__attribute__ ((weak))
|
||||
void * led_set_user(uint8_t usb_led) {
|
||||
void led_set_user(uint8_t usb_led) {
|
||||
// leave this function blank - it can be defined in a keymap file
|
||||
return NULL;
|
||||
};
|
||||
|
||||
void * matrix_init_kb(void) {
|
||||
void matrix_init_kb(void) {
|
||||
// put your keyboard start-up code here
|
||||
// runs once when the firmware starts up
|
||||
|
||||
if (matrix_init_user) {
|
||||
(*matrix_init_user)();
|
||||
}
|
||||
return NULL;
|
||||
matrix_init_user();
|
||||
};
|
||||
|
||||
void * matrix_scan_kb(void) {
|
||||
void matrix_scan_kb(void) {
|
||||
// put your looping keyboard code here
|
||||
// runs every cycle (a lot)
|
||||
|
||||
if (matrix_scan_user) {
|
||||
(*matrix_scan_user)();
|
||||
}
|
||||
return NULL;
|
||||
matrix_scan_user();
|
||||
};
|
||||
|
||||
void * led_set_kb(uint8_t usb_led) {
|
||||
void led_set_kb(uint8_t usb_led) {
|
||||
// put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
|
||||
|
||||
if (led_set_user) {
|
||||
(*led_set_user)(usb_led);
|
||||
}
|
||||
return NULL;
|
||||
led_set_user(usb_led);
|
||||
};
|
Loading…
Reference in New Issue