@ -0,0 +1,118 @@ | |||
# AJP10304 Custom Shark Layout | |||
# Also available for the Planck, JJ40 and Atreus50 | |||
**Note:** In the tables below where there are two characters on a key, | |||
the second is the output when shift is applied. | |||
**Note:** The below tables assume a UK layout. | |||
#### Flashing | |||
`make acheron/shark:ajp10304:flash` | |||
##### Main Qwerty Layer | |||
* Tab: when held, operates as shift. | |||
* Enter: when held, operates as shift. | |||
* MENU: perform right-click | |||
| | | | | | | | | | | | | | |||
| ---- |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| ----:| | |||
| Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp | | |||
| Tab | A | S | D | F | G | H | J | K | L | ;: | Enter| | |||
| Shft | Z | X | C | V | B | N | M | ,< | .> | /? | Shft | | |||
| Fn | Ctrl | Alt | GUI |Lower | Bksp |Space |Raise | Shift| MENU | Ctrl | Fn2 | | |||
##### Function Layer | |||
Activated when `fn` held in the above `qwerty` layer. | |||
| | | | | | | | | | | | | | |||
| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| | |||
| F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | | |||
| 1! | 2" | 3£ | 4$ | 5% | 6^ | 7& | 8* | 9( | 0) | ~ |INSERT| | |||
| Shift | \| | `¬ | #~ | * | -_ | =+ | \| | [{ | ]} | '@ |Shift | | |||
| Fn | Ctrl | Alt | GUI |Lower | Bksp |Space |Mouse | MENU | Alt | Ctrl | Fn2 | | |||
##### Lower Layer | |||
Activated when `Lower` is held in the above `qwerty` layer. | |||
* Numbers are along the top row, their shifted counterparts are on row 2. | |||
* WrdBks: `backspace` with `ctrl` applied. I.e. delete a word. | |||
* WrdDel: `delete` with `ctrl` applied. I.e. forward delete a word. | |||
| | | | | | | | | | | | | | |||
| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| | |||
| 1! | 2" | 3£ | 4$ | 5% | 6^ | 7& | 8* | 9( | 0) | DEL | Bksp | | |||
| ! | " | £ | $ | % | ^ | & | * | ( | ) |WrdDel|WrdBks| | |||
| Shift | \| | `¬ | #~ | '@ | -_ | =+ | #~ | [{ | ]} | '@ |Shift | | |||
| | | | |Lower | Del |Space | | Next | Vol- | Vol+ | Play | | |||
##### Raise Layer | |||
Activated when `Raise` is held in the above `qwerty` layer. | |||
* Preferred layer for typing brackets. | |||
* Allows for cursor navigation to be used solely with the right hand. | |||
* WRDSEL: Select the word where the cursor is. | |||
* |< and >|: Apply `ctrl` to `left` and `right` respectively for word jumping. | |||
| | | | | | | | | | | | | | |||
| :---: |:----:| :---:| :---:| :---:| :---:| :---: | :---:| :---:| :---:| :---: | :---:| | |||
| ` | |WRDSEL| [ | ] | | | PGUP | HOME |PGDOWN| |PRNTSC| | |||
| ` | | | ( | ) | | | HOME | UP | END | |ZOOM +| | |||
| | | | { | } | ||<| LEFT | DOWN |RIGHT |>||ZOOM -| | |||
| Mouse | | | | | Alt | Enter |Raise | | | | | | |||
##### Lower + Raise | |||
Activated when `Lower` and `Raise` are held together in the above `qwerty` layer. | |||
* Audio controls in the same position as cursor keys from the `Raise` layer. | |||
* ????: Runs a macro for outputting a text string. Do not use this store passwords. | |||
* Reset: Enter bootloader for flashing firmware to the keyboard. | |||
* CAPS: Toggle caps lock. | |||
* Macro functions: Allows recording of macros. To start recording the macro, press either REC1 or REC2. | |||
To finish the recording, press STOP. To replay the macro, press either PLAY1 or PLAY2. | |||
* MAC: Toggle MAC OS extensions to layers. This allows MLWR to be enabled with LOWER, | |||
MRSE with RAISE, MFNC with FUNC and MFNC2 with FUNC2 respectively. | |||
| | | | | | | | | | | | | | |||
| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| | |||
| ???? | Reset|Qwerty| | | REC1 | REC2 | | | | | Del | | |||
| CAPS | | | | | PLAY1|PLAY2 | Mute | Vol+ | Play | | | | |||
| MAC | | | | | STOP1|STOP2 | Prev | Vol- | Next | | | | |||
| | | | | | | | | DYN | | | | | |||
##### Function 2 Layer | |||
Activated when `fn` held in the above `qwerty` layer. | |||
* WRDSEL: Select the word where the cursor is. | |||
* LNDEL: Delete the line where the cursor is. | |||
* LNSEL: Select the line where the cursor is. | |||
* DUP: Duplicate the selected text. | |||
* LNJOIN: Join the line where the cursor is with the following line. | |||
* MODE: Print either `PC` or `OSX` depending on what layer mode is active. | |||
| | | | | | | | | | | | | | |||
| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| | |||
| | |WRDSEL| | | | LNDEL| | | | | | | |||
| | | LNSEL| DUP | | | | |LNJOIN| | | | | |||
| | UNDO | CUT | COPY | PASTE| | | | | | | MODE | | |||
| | | | | | | | | | | | | | |||
##### Mouse Layer | |||
Activated when `fn` and `raise` held together. | |||
| | | | | | | | | | | | | | |||
| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| | |||
| ESC | | | | | | | | BTN3 | | | | | |||
| ACC0 | ACC1 | ACC2 | | | | | BTN1 | UP | BTN2 | | | | |||
| ACC0 | ACC1 | ACC2 | | | | | LEFT | DOWN | RIGHT| | | | |||
| | | | | | | | | | | | | | |||
##### Number Pad Layout | |||
Activated when holding `Esc` key. | |||
| | | | | | | | | | | | | | |||
| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| | |||
| | | | | | |NMLOCK| 7 | 8 | 9 | / | | | |||
| | | | | | | | 4 | 5 | 6 | * | | | |||
| | | | | | | | 1 | 2 | 3 | + | | | |||
| | | | | | | | 0 | . | , | - | | |
@ -1,8 +1,3 @@ | |||
AUDIO_ENABLE = no | |||
MOUSEKEY_ENABLE = yes | |||
TEMP := $(OPT_DEFS) | |||
OPT_DEFS = $(filter-out -DBOOTLOADER_SIZE=4096,$(TEMP)) | |||
OPT_DEFS += -DBOOTLOADER_SIZE=512 | |||
BOOTLOADER = halfkay |
@ -1,342 +0,0 @@ | |||
#include QMK_KEYBOARD_H | |||
#include "keymap_uk.h" | |||
extern keymap_config_t keymap_config; | |||
enum jj40_layers { | |||
_QWERTY, | |||
_MAC, | |||
_LOWER, | |||
_MLWR, | |||
_RAISE, | |||
_MRSE, | |||
_FUNC, | |||
_MFNC, | |||
_FUNC2, | |||
_MFNC2, | |||
_ADJUST, | |||
_MOUSE | |||
}; | |||
enum jj40_keycodes { | |||
QWERTY = SAFE_RANGE, | |||
MAC, | |||
FUNC, | |||
MFNC, | |||
FUNC2, | |||
MFNC2, | |||
LOWER, | |||
MLWR, | |||
RAISE, | |||
MRSE, | |||
MOUSE, | |||
DYNAMIC_MACRO_RANGE | |||
}; | |||
#include "dynamic_macro.h" | |||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
/* Qwerty | |||
* ,-----------------------------------------------------------------------------------. | |||
* | Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp | | |||
* |------+------+------+------+------+-------------+------+------+------+------+------| | |||
* | Tab | A | S | D | F | G | H | J | K | L | ;: | Enter| | |||
* |------+------+------+------+------+------|------+------+------+------+------+------| | |||
* | Shft | Z | X | C | V | B | N | M | ,< | .> | /? | Shft | | |||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||
* | Fn | Ctrl | Alt | GUI |Lower | Bksp |Space |Raise | Shift| MENU | Ctrl | Fn2 | | |||
* `-----------------------------------------------------------------------------------' | |||
*/ | |||
[_QWERTY] = LAYOUT_ortho_4x12(\ | |||
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC ,\ | |||
MT(MOD_LSFT, KC_TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, MT(MOD_RSFT, KC_ENT) ,\ | |||
KC_LSHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSHIFT ,\ | |||
MO(_FUNC), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_BSPC, KC_SPC, RAISE, KC_LSHIFT, KC_BTN2, KC_RCTL, MO(_FUNC2) \ | |||
), | |||
/* Function | |||
* ,-----------------------------------------------------------------------------------. | |||
* | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | | |||
* |------+------+------+------+------+-------------+------+------+------+------+------| | |||
* | 1! | 2" | 3£ | 4$ | 5% | 6^ | 7& | 8* | 9( | 0) | ~ |INSERT| | |||
* |------+------+------+------+------+------|------+------+------+------+------+------| | |||
* | Shift| \| | `¬ | #~ | * | -_ | =+ | \| | [{ | ]} | '@ |Shift | | |||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||
* | Fn | Ctrl | Alt | GUI |Lower | Bksp |Space |Mouse | MENU | Alt | Ctrl | Fn | | |||
* `-----------------------------------------------------------------------------------' | |||
*/ | |||
[_FUNC] = LAYOUT_ortho_4x12(\ | |||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12 ,\ | |||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, UK_TILD, KC_INSERT ,\ | |||
KC_LSHIFT, KC_NONUS_BSLASH, KC_GRAVE, KC_NONUS_HASH, KC_PAST, KC_MINS, KC_EQL, KC_BSLASH, KC_LBRC, KC_RBRC, KC_QUOT, MT(MOD_RSFT, KC_ENT) ,\ | |||
_______, _______, _______, _______, _______, _______, _______, MO(_MOUSE), _______, _______, _______, _______ \ | |||
), | |||
/* Lower | |||
* ,-----------------------------------------------------------------------------------. | |||
* | 1! | 2" | 3£ | 4$ | 5% | 6^ | 7& | 8* | 9( | 0) | DEL | Bksp | | |||
* |------+------+------+------+------+-------------+------+------+------+------+------| | |||
* | ! | " | £ | $ | % | ^ | & | * | ( | ) |WrdDel|WrdBks| | |||
* |------+------+------+------+------+------|------+------+------+------+------+------| | |||
* | Shift| \| | `¬ | #~ | '@ | -_ | =+ | #~ | [{ | ]} | '@ |Shift | | |||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||
* | | | | |Lower | Del |Space | | Next | Vol- | Vol+ | Play | | |||
* `-----------------------------------------------------------------------------------' | |||
*/ | |||
[_LOWER] = LAYOUT_ortho_4x12(\ | |||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, KC_BSPC ,\ | |||
LSFT(KC_1), LSFT(KC_2), LSFT(KC_3), LSFT(KC_4), LSFT(KC_5), LSFT(KC_6), LSFT(KC_7), LSFT(KC_8), LSFT(KC_9), LSFT(KC_0), LCTL(KC_DEL), LCTL(KC_BSPC) ,\ | |||
KC_LSPO, KC_NONUS_BSLASH, KC_GRAVE, KC_NONUS_HASH, KC_QUOT, KC_MINS, KC_EQL, KC_NONUS_HASH, KC_LBRC, KC_RBRC, KC_QUOT, MT(MOD_RSFT, KC_ENT) ,\ | |||
_______, _______, _______, _______, _______, KC_DEL, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ | |||
), | |||
/* Raise | |||
* ,-----------------------------------------------------------------------------------. | |||
* | ` | |WRDSEL| [ | ] | | | PGUP | HOME |PGDOWN| |PRNTSC| | |||
* |------+------+------+------+------+-------------+------+------+------+------+------| | |||
* | ` | | | ( | ) | | | HOME | UP | END | |ZOOM +| | |||
* |------+------+------+------+------+------|------+------+------+------+------+------| | |||
* | | | | { | } | | |< | LEFT | DOWN |RIGHT | >| |ZOOM -| | |||
* |------+------+------+------+------+------|------+------+------+------+------+------| | |||
* | Mouse| | | | | Alt | Enter|Raise | | | | | | |||
* `-----------------------------------------------------------------------------------' | |||
*/ | |||
[_RAISE] = LAYOUT_ortho_4x12(\ | |||
KC_GRV, XXXXXXX, M(1), KC_LBRC, KC_RBRC, XXXXXXX, XXXXXXX, KC_PGUP, KC_HOME, KC_PGDOWN, XXXXXXX, KC_PSCREEN ,\ | |||
KC_GRV, XXXXXXX, XXXXXXX, LSFT(KC_9), LSFT(KC_0), XXXXXXX, XXXXXXX, KC_HOME, KC_UP, KC_END, XXXXXXX, LCTL(LSFT(KC_EQL)) ,\ | |||
_______, XXXXXXX, XXXXXXX, LSFT(KC_LBRC), LSFT(KC_RBRC), XXXXXXX, LCTL(KC_LEFT), KC_LEFT, KC_DOWN, KC_RIGHT, LCTL(KC_RIGHT), LCTL(KC_MINS) ,\ | |||
MO(_MOUSE), _______, _______, _______, _______, KC_LALT, KC_ENT, _______, XXXXXXX, _______, _______, _______ \ | |||
), | |||
/* Adjust (Lower + Raise) | |||
* ,-----------------------------------------------------------------------------------. | |||
* | ???? | Reset|Qwerty| | | REC1 | REC2 | | | | | Del | | |||
* |------+------+------+------+------+-------------+------+------+------+------+------| | |||
* | CAPS | | | | | PLAY1| PLAY2| Mute | Vol+ | Play | | | | |||
* |------+------+------+------+------+------|------+------+------+------+------+------| | |||
* | PC/MC| | | | | STOP | STOP | Prev | Vol- | Next | | | | |||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||
* | | | | | | | | | | | | | |||
* `-----------------------------------------------------------------------------------' | |||
*/ | |||
[_ADJUST] = LAYOUT_ortho_4x12(\ | |||
M(0), RESET, QWERTY, BL_ON, BL_OFF, DYN_REC_START1, DYN_REC_START2, _______, _______, _______, _______, KC_DEL ,\ | |||
KC_CAPS, RGB_TOG, RGB_MOD, RGB_VAD, RGB_VAI, DYN_MACRO_PLAY1, DYN_MACRO_PLAY2, KC_AUDIO_MUTE, KC_AUDIO_VOL_UP, KC_MEDIA_PLAY_PAUSE, _______, _______ ,\ | |||
TG(_MAC), RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, DYN_REC_STOP, DYN_REC_STOP, KC_MEDIA_PREV_TRACK, KC_AUDIO_VOL_DOWN, KC_MEDIA_NEXT_TRACK, _______, _______ ,\ | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ | |||
), | |||
/* Mouse | |||
* ,-----------------------------------------------------------------------------------. | |||
* | ESC | | | | | | | | | | | | | |||
* |------+------+------+------+------+-------------+------+------+------+------+------| | |||
* | ACC0 | ACC1 | ACC2 | | | | | BTN1 | UP | BTN2 | | | | |||
* |------+------+------+------+------+------|------+------+------+------+------+------| | |||
* | ACC0 | ACC1 | ACC2 | | | | | LEFT | DOWN |RIGHT | | | | |||
* |------+------+------+------+------+------|------+------+------+------+------+------| | |||
* | | | | | | | | | | | | | | |||
* `-----------------------------------------------------------------------------------' | |||
*/ | |||
[_MOUSE] = LAYOUT_ortho_4x12(\ | |||
KC_ESC , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,\ | |||
KC_MS_ACCEL0, KC_MS_ACCEL1, KC_MS_ACCEL2, _______, _______, _______, _______, KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2, _______, _______,\ | |||
KC_MS_ACCEL0, KC_MS_ACCEL1, KC_MS_ACCEL2, _______, _______, _______, _______, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, _______, _______,\ | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______\ | |||
), | |||
/* Function 2 (Right hand side) | |||
* ,-----------------------------------------------------------------------------------. | |||
* | | |WRDSEL| | | | LNDEL| | | | | | | |||
* |------+------+------+------+------+-------------+------+------+------+------+------| | |||
* | | | LNSEL| DUP | | | | |LNJOIN| | | | | |||
* |------+------+------+------+------+------|------+------+------+------+------+------| | |||
* | | UNDO | CUT | COPY | PASTE| | | | | | | MODE | | |||
* |------+------+------+------+------+------|------+------+------+------+------+------| | |||
* | | | | | | | | | | | | | | |||
* `-----------------------------------------------------------------------------------' | |||
*/ | |||
[_FUNC2] = LAYOUT_ortho_4x12(\ | |||
_______, _______, M(1), _______, _______, _______, M(5), _______, _______, _______, _______, _______,\ | |||
_______, _______, M(3), M(7), _______, _______, _______, M(10), _______, _______, _______, _______,\ | |||
_______, LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), LCTL(KC_V), _______, _______, _______, _______, _______, _______, M(98), \ | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ | |||
), | |||
[_MAC]= LAYOUT_ortho_4x12(\ | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,\ | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,\ | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,\ | |||
MFNC, _______, _______, _______, MLWR, _______, _______, MRSE, _______, _______, _______, MFNC2 \ | |||
), | |||
[_MLWR] = LAYOUT_ortho_4x12(\ | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,\ | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,\ | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,\ | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ | |||
), | |||
[_MRSE] = LAYOUT_ortho_4x12(\ | |||
_______, _______, M(2), _______, _______, _______, _______, _______, _______, _______, _______, _______ ,\ | |||
_______, _______, _______, _______, _______, _______, _______, LCTL(KC_A), _______, LCTL(KC_E), _______, LGUI(KC_EQL) ,\ | |||
_______, _______, _______, _______, _______, _______, LALT(KC_LEFT), _______, _______, _______, LALT(KC_RIGHT), LGUI(KC_MINS) ,\ | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ | |||
), | |||
[_MFNC]= LAYOUT_ortho_4x12(\ | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ,\ | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, LGUI(KC_PENT) ,\ | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ,\ | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ | |||
), | |||
[_MFNC2] = LAYOUT_ortho_4x12(\ | |||
_______, _______, M(2), _______, _______, _______, M(6), _______, _______, _______, _______, _______,\ | |||
_______, _______, M(4), M(8), _______, _______, _______, M(10), _______, _______, _______, _______,\ | |||
_______, LGUI(KC_Z), LGUI(KC_X), LGUI(KC_C), LGUI(KC_V), _______, _______, _______, _______, _______, _______, M(99), \ | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ | |||
) | |||
}; | |||
void persistant_default_layer_set(uint16_t default_layer) { | |||
eeconfig_update_default_layer(default_layer); | |||
default_layer_set(default_layer); | |||
} | |||
bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||
if (!process_record_dynamic_macro(keycode, record)) { | |||
return false; | |||
} | |||
switch (keycode) { | |||
case QWERTY: | |||
if (record->event.pressed) { | |||
persistant_default_layer_set(1UL<<_QWERTY); | |||
} | |||
return false; | |||
case LOWER: | |||
if (record->event.pressed) { | |||
layer_on(_LOWER); | |||
update_tri_layer(_LOWER, _RAISE, _ADJUST); | |||
} else { | |||
layer_off(_LOWER); | |||
update_tri_layer(_LOWER, _RAISE, _ADJUST); | |||
} | |||
return false; | |||
case RAISE: | |||
if (record->event.pressed) { | |||
layer_on(_RAISE); | |||
update_tri_layer(_LOWER, _RAISE, _ADJUST); | |||
} else { | |||
layer_off(_RAISE); | |||
update_tri_layer(_LOWER, _RAISE, _ADJUST); | |||
} | |||
return false; | |||
case MLWR: | |||
if (record->event.pressed) { | |||
layer_on(_LOWER); | |||
layer_on(_MLWR); | |||
update_tri_layer(_LOWER, _RAISE, _ADJUST); | |||
} else { | |||
layer_off(_LOWER); | |||
layer_off(_MLWR); | |||
update_tri_layer(_LOWER, _RAISE, _ADJUST); | |||
} | |||
return false; | |||
case MRSE: | |||
if (record->event.pressed) { | |||
layer_on(_RAISE); | |||
layer_on(_MRSE); | |||
update_tri_layer(_LOWER, _RAISE, _ADJUST); | |||
} else { | |||
layer_off(_RAISE); | |||
layer_off(_MRSE); | |||
update_tri_layer(_LOWER, _RAISE, _ADJUST); | |||
} | |||
return false; | |||
case MFNC: | |||
if (record->event.pressed) { | |||
layer_on(_FUNC); | |||
layer_on(_MFNC); | |||
} else { | |||
layer_off(_FUNC); | |||
layer_off(_MFNC); | |||
} | |||
return false; | |||
case MFNC2: | |||
if (record->event.pressed) { | |||
layer_on(_FUNC2); | |||
layer_on(_MFNC2); | |||
} else { | |||
layer_off(_FUNC2); | |||
layer_off(_MFNC2); | |||
} | |||
return false; | |||
} | |||
return true; | |||
} | |||
const macro_t *action_get_macro(keyrecord_t *record, uint8_t keycode, uint8_t opt) { | |||
// These would trigger when you hit a key mapped as M(0) | |||
if (record->event.pressed) { | |||
switch(keycode) { | |||
case 0: // Some custom string here | |||
SEND_STRING(""); | |||
return false; | |||
case 1: // Word Select | |||
SEND_STRING(SS_DOWN(X_LCTRL) SS_TAP(X_RIGHT) SS_DOWN(X_LSHIFT) SS_TAP(X_LEFT) SS_UP(X_LSHIFT) SS_UP(X_LCTRL)); | |||
return false; | |||
case 2: // Word Select Mac | |||
SEND_STRING(SS_DOWN(X_LALT) SS_TAP(X_RIGHT) SS_DOWN(X_LSHIFT) SS_TAP(X_LEFT) SS_UP(X_LSHIFT) SS_UP(X_LALT)); | |||
return false; | |||
case 3: // Line Select | |||
SEND_STRING(SS_TAP(X_HOME) SS_DOWN(X_LSHIFT) SS_TAP(X_END) SS_UP(X_LSHIFT)); | |||
return false; | |||
case 4: // Line Select Mac | |||
SEND_STRING(SS_LCTRL("a") SS_DOWN(X_LSHIFT) SS_LCTRL("e") SS_UP(X_LSHIFT)); | |||
return false; | |||
case 5: // Line Delete | |||
SEND_STRING(SS_TAP(X_HOME) SS_DOWN(X_LSHIFT) SS_TAP(X_END) SS_UP(X_LSHIFT)); | |||
SEND_STRING(SS_TAP(X_BSPACE)); | |||
return false; | |||
case 6: // Line Delete Mac | |||
SEND_STRING(SS_LCTRL("a") SS_DOWN(X_LSHIFT) SS_LCTRL("e") SS_UP(X_LSHIFT)); | |||
SEND_STRING(SS_TAP(X_BSPACE)); | |||
return false; | |||
case 7: // Duplicate Selection | |||
SEND_STRING(SS_LCTRL("c") SS_TAP(X_RIGHT) SS_LCTRL("v")); | |||
return false; | |||
case 8: // Duplicate Selection Mac | |||
SEND_STRING(SS_LGUI("c") SS_TAP(X_RIGHT) SS_LGUI("v")); | |||
return false; | |||
case 9: // Join line | |||
SEND_STRING(SS_TAP(X_END) SS_TAP(X_DELETE)); | |||
return false; | |||
case 10: // Join line Mac | |||
SEND_STRING(SS_LCTRL("e") SS_TAP(X_DELETE)); | |||
return false; | |||
case 98: // Print mode | |||
SEND_STRING("PC"); | |||
return false; | |||
case 99: // Print mode | |||
SEND_STRING("OSX"); | |||
return false; | |||
} | |||
} | |||
return MACRO_NONE; | |||
}; |
@ -1,3 +0,0 @@ | |||
AUDIO_ENABLE = no | |||
MOUSEKEY_ENABLE = yes | |||
@ -0,0 +1,117 @@ | |||
# AJP10304 Ortho 4x12 Layout | |||
# For Planck, Shark, JJ40 and Atreus50 | |||
**Note:** In the tables below where there are two characters on a key, | |||
the second is the output when shift is applied. | |||
**Note:** The below tables assume a UK layout. | |||
#### Flashing | |||
Refer to the README.md of the keyboard you want to flash. | |||
##### Main Qwerty Layer | |||
* Tab: when held, operates as shift. | |||
* Enter: when held, operates as shift. | |||
* MENU: perform right-click | |||
| | | | | | | | | | | | | | |||
| ---- |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| ----:| | |||
| Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp | | |||
| Tab | A | S | D | F | G | H | J | K | L | ;: | Enter| | |||
| Shft | Z | X | C | V | B | N | M | ,< | .> | /? | Shft | | |||
| Fn | Ctrl | Alt | GUI |Lower | Bksp |Space |Raise | Shift| MENU | Ctrl | Fn2 | | |||
##### Function Layer | |||
Activated when `fn` held in the above `qwerty` layer. | |||
| | | | | | | | | | | | | | |||
| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| | |||
| F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | | |||
| 1! | 2" | 3£ | 4$ | 5% | 6^ | 7& | 8* | 9( | 0) | ~ |INSERT| | |||
| Shift | \| | `¬ | #~ | * | -_ | =+ | \| | [{ | ]} | '@ |Shift | | |||
| Fn | Ctrl | Alt | GUI |Lower | Bksp |Space |Mouse | MENU | Alt | Ctrl | Fn2 | | |||
##### Lower Layer | |||
Activated when `Lower` is held in the above `qwerty` layer. | |||
* Numbers are along the top row, their shifted counterparts are on row 2. | |||
* WrdBks: `backspace` with `ctrl` applied. I.e. delete a word. | |||
* WrdDel: `delete` with `ctrl` applied. I.e. forward delete a word. | |||
| | | | | | | | | | | | | | |||
| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| | |||
| 1! | 2" | 3£ | 4$ | 5% | 6^ | 7& | 8* | 9( | 0) | DEL | Bksp | | |||
| ! | " | £ | $ | % | ^ | & | * | ( | ) |WrdDel|WrdBks| | |||
| Shift | \| | `¬ | #~ | '@ | -_ | =+ | #~ | [{ | ]} | '@ |Shift | | |||
| | | | |Lower | Del |Space | | Next | Vol- | Vol+ | Play | | |||
##### Raise Layer | |||
Activated when `Raise` is held in the above `qwerty` layer. | |||
* Preferred layer for typing brackets. | |||
* Allows for cursor navigation to be used solely with the right hand. | |||
* WRDSEL: Select the word where the cursor is. | |||
* |< and >|: Apply `ctrl` to `left` and `right` respectively for word jumping. | |||
| | | | | | | | | | | | | | |||
| :---: |:----:| :---:| :---:| :---:| :---:| :---: | :---:| :---:| :---:| :---: | :---:| | |||
| ` | |WRDSEL| [ | ] | | | PGUP | HOME |PGDOWN| |PRNTSC| | |||
| ` | | | ( | ) | | | HOME | UP | END | |ZOOM +| | |||
| | | | { | } | ||<| LEFT | DOWN |RIGHT |>||ZOOM -| | |||
| Mouse | | | | | Alt | Enter |Raise | | | | | | |||
##### Lower + Raise | |||
Activated when `Lower` and `Raise` are held together in the above `qwerty` layer. | |||
* Audio controls in the same position as cursor keys from the `Raise` layer. | |||
* ????: Runs a macro for outputting a text string. Do not use this store passwords. | |||
* Reset: Enter bootloader for flashing firmware to the keyboard. | |||
* CAPS: Toggle caps lock. | |||
* Macro functions: Allows recording of macros. To start recording the macro, press either REC1 or REC2. | |||
To finish the recording, press STOP. To replay the macro, press either PLAY1 or PLAY2. | |||
* MAC: Toggle MAC OS extensions to layers. This allows MLWR to be enabled with LOWER, | |||
MRSE with RAISE, MFNC with FUNC and MFNC2 with FUNC2 respectively. | |||
| | | | | | | | | | | | | | |||
| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| | |||
| ???? | Reset|Qwerty| | | REC1 | REC2 | | | | | Del | | |||
| CAPS | | | | | PLAY1|PLAY2 | Mute | Vol+ | Play | | | | |||
| MAC | | | | | STOP1|STOP2 | Prev | Vol- | Next | | | | |||
| | | | | | | | | DYN | | | | | |||
##### Function 2 Layer | |||
Activated when `fn` held in the above `qwerty` layer. | |||
* WRDSEL: Select the word where the cursor is. | |||
* LNDEL: Delete the line where the cursor is. | |||
* LNSEL: Select the line where the cursor is. | |||
* DUP: Duplicate the selected text. | |||
* LNJOIN: Join the line where the cursor is with the following line. | |||
* MODE: Print either `PC` or `OSX` depending on what layer mode is active. | |||
| | | | | | | | | | | | | | |||
| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| | |||
| | |WRDSEL| | | | LNDEL| | | | | | | |||
| | | LNSEL| DUP | | | | |LNJOIN| | | | | |||
| | UNDO | CUT | COPY | PASTE| | | | | | | MODE | | |||
| | | | | | | | | | | | | | |||
##### Mouse Layer | |||
Activated when `fn` and `raise` held together. | |||
| | | | | | | | | | | | | | |||
| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| | |||
| ESC | | | | | | | | BTN3 | | | | | |||
| ACC0 | ACC1 | ACC2 | | | | | BTN1 | UP | BTN2 | | | | |||
| ACC0 | ACC1 | ACC2 | | | | | LEFT | DOWN | RIGHT| | | | |||
| | | | | | | | | | | | | | |||
##### Number Pad Layout | |||
Activated when holding `Esc` key. | |||
| | | | | | | | | | | | | | |||
| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| | |||
| | | | | | |NMLOCK| 7 | 8 | 9 | / | | | |||
| | | | | | | | 4 | 5 | 6 | * | | | |||
| | | | | | | | 1 | 2 | 3 | + | | | |||
| | | | | | | | 0 | . | , | - | | |
@ -1,3 +1,3 @@ | |||
AUDIO_ENABLE = no | |||
MOUSEKEY_ENABLE = yes | |||
DYNAMIC_MACRO_ENABLE = yes |
@ -0,0 +1,154 @@ | |||
#include "ajp10304.h" | |||
bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||
switch (keycode) { | |||
case QWERTY: | |||
if (record->event.pressed) { | |||
set_single_persistent_default_layer(_QWERTY); | |||
} | |||
return false; | |||
case LOWER: | |||
if (record->event.pressed) { | |||
layer_on(_LOWER); | |||
update_tri_layer(_LOWER, _RAISE, _ADJUST); | |||
} else { | |||
layer_off(_LOWER); | |||
update_tri_layer(_LOWER, _RAISE, _ADJUST); | |||
} | |||
return false; | |||
case RAISE: | |||
if (record->event.pressed) { | |||
layer_on(_RAISE); | |||
update_tri_layer(_LOWER, _RAISE, _ADJUST); | |||
} else { | |||
layer_off(_RAISE); | |||
update_tri_layer(_LOWER, _RAISE, _ADJUST); | |||
} | |||
return false; | |||
case MLWR: | |||
if (record->event.pressed) { | |||
layer_on(_LOWER); | |||
layer_on(_MLWR); | |||
update_tri_layer(_LOWER, _RAISE, _ADJUST); | |||
} else { | |||
layer_off(_LOWER); | |||
layer_off(_MLWR); | |||
update_tri_layer(_LOWER, _RAISE, _ADJUST); | |||
} | |||
return false; | |||
case MRSE: | |||
if (record->event.pressed) { | |||
layer_on(_RAISE); | |||
layer_on(_MRSE); | |||
update_tri_layer(_LOWER, _RAISE, _ADJUST); | |||
} else { | |||
layer_off(_RAISE); | |||
layer_off(_MRSE); | |||
update_tri_layer(_LOWER, _RAISE, _ADJUST); | |||
} | |||
return false; | |||
case MFNC: | |||
if (record->event.pressed) { | |||
layer_on(_FUNC); | |||
layer_on(_MFNC); | |||
} else { | |||
layer_off(_FUNC); | |||
layer_off(_MFNC); | |||
} | |||
return false; | |||
case MFNC2: | |||
if (record->event.pressed) { | |||
layer_on(_FUNC2); | |||
layer_on(_MFNC2); | |||
} else { | |||
layer_off(_FUNC2); | |||
layer_off(_MFNC2); | |||
} | |||
return false; | |||
case M_CUSTOM: | |||
if (record->event.pressed) { | |||
SEND_STRING("Custom text here"); | |||
} | |||
break; | |||
case M_WORD_SEL: | |||
if (record->event.pressed) { | |||
register_mods(MOD_LCTL); | |||
tap_code(KC_RGHT); | |||
tap_code16(S(KC_LEFT)); | |||
unregister_mods(MOD_LCTL); | |||
} | |||
break; | |||
case M_WORD_SEL_MAC: | |||
if (record->event.pressed) { | |||
register_mods(MOD_LALT); | |||
tap_code(KC_RGHT); | |||
tap_code16(S(KC_LEFT)); | |||
unregister_mods(MOD_LALT); | |||
} | |||
break; | |||
case M_LINE_SEL: | |||
if (record->event.pressed) { | |||
tap_code(KC_HOME); | |||
tap_code16(S(KC_END)); | |||
} | |||
break; | |||
case M_LINE_SEL_MAC: | |||
if (record->event.pressed) { | |||
tap_code16(C(KC_A)); | |||
tap_code16(C(S(KC_E))); | |||
} | |||
break; | |||
case M_LINE_DEL: | |||
if (record->event.pressed) { | |||
tap_code(KC_HOME); | |||
tap_code16(S(KC_END)); | |||
tap_code(KC_BSPC); | |||
} | |||
break; | |||
case M_LINE_DEL_MAC: | |||
if (record->event.pressed) { | |||
tap_code16(C(KC_A)); | |||
tap_code16(C(S(KC_E))); | |||
tap_code(KC_BSPC); | |||
} | |||
break; | |||
case M_DUP: | |||
if (record->event.pressed) { | |||
tap_code16(C(KC_C)); | |||
tap_code(KC_RGHT); | |||
tap_code16(C(KC_V)); | |||
} | |||
break; | |||
case M_DUP_MAC: | |||
if (record->event.pressed) { | |||
tap_code16(G(KC_C)); | |||
tap_code(KC_RGHT); | |||
tap_code16(G(KC_V)); | |||
} | |||
break; | |||
case M_JOIN: | |||
if (record->event.pressed) { | |||
tap_code(KC_END); | |||
tap_code(KC_DEL); | |||
} | |||
break; | |||
case M_JOIN_MAC: | |||
if (record->event.pressed) { | |||
tap_code16(C(KC_E)); | |||
tap_code(KC_DEL); | |||
} | |||
break; | |||
case M_MODE: | |||
if (record->event.pressed) { | |||
SEND_STRING("PC"); | |||
} | |||
break; | |||
case M_MODE_MAC: | |||
if (record->event.pressed) { | |||
SEND_STRING("OSX"); | |||
} | |||
break; | |||
} | |||
return true; | |||
} |
@ -0,0 +1,45 @@ | |||
#include QMK_KEYBOARD_H | |||
enum ajp10304_layers { | |||
_QWERTY, | |||
_MAC, | |||
_LOWER, | |||
_MLWR, | |||
_RAISE, | |||
_MRSE, | |||
_FUNC, | |||
_MFNC, | |||
_FUNC2, | |||
_MFNC2, | |||
_ADJUST, | |||
_MOUSE, | |||
_NUMPAD | |||
}; | |||
enum ajp10304_keycodes { | |||
QWERTY = SAFE_RANGE, | |||
MAC, | |||
FUNC, | |||
MFNC, | |||
FUNC2, | |||
MFNC2, | |||
LOWER, | |||
MLWR, | |||
RAISE, | |||
MRSE, | |||
MOUSE, | |||
NUMPAD, | |||
M_CUSTOM, | |||
M_WORD_SEL, | |||
M_WORD_SEL_MAC, | |||
M_LINE_SEL, | |||
M_LINE_SEL_MAC, | |||
M_LINE_DEL, | |||
M_LINE_DEL_MAC, | |||
M_DUP, | |||
M_DUP_MAC, | |||
M_JOIN, | |||
M_JOIN_MAC, | |||
M_MODE, | |||
M_MODE_MAC | |||
}; |
@ -0,0 +1,132 @@ | |||
Copyright 2020 Alan Pocklington <ajp10304@gmail.com> @ajp10304 | |||
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/>. | |||
# AJP10304 Custom 40% Layout | |||
# For the Planck, Shark, JJ40 and Atreus50 | |||
**Note:** In the tables below where there are two characters on a key, | |||
the second is the output when shift is applied. | |||
**Note:** The below tables assume a UK layout. | |||
#### Flashing | |||
Refer to the README.md of the keyboard you want to flash. | |||
##### Main Qwerty Layer | |||
* Tab: when held, operates as shift. | |||
* Enter: when held, operates as shift. | |||
* MENU: perform right-click | |||
| | | | | | | | | | | | | | |||
| ---- |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| ----:| | |||
| Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp | | |||
| Tab | A | S | D | F | G | H | J | K | L | ;: | Enter| | |||
| Shft | Z | X | C | V | B | N | M | ,< | .> | /? | Shft | | |||
| Fn | Ctrl | Alt | GUI |Lower | Bksp |Space |Raise | Shift| MENU | Ctrl | Fn2 | | |||
##### Function Layer | |||
Activated when `fn` held in the above `qwerty` layer. | |||
| | | | | | | | | | | | | | |||
| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| | |||
| F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | | |||
| 1! | 2" | 3£ | 4$ | 5% | 6^ | 7& | 8* | 9( | 0) | ~ |INSERT| | |||
| Shift | \| | `¬ | #~ | * | -_ | =+ | \| | [{ | ]} | '@ |Shift | | |||
| Fn | Ctrl | Alt | GUI |Lower | Bksp |Space |Mouse | MENU | Alt | Ctrl | Fn2 | | |||
##### Lower Layer | |||
Activated when `Lower` is held in the above `qwerty` layer. | |||
* Numbers are along the top row, their shifted counterparts are on row 2. | |||
* WrdBks: `backspace` with `ctrl` applied. I.e. delete a word. | |||
* WrdDel: `delete` with `ctrl` applied. I.e. forward delete a word. | |||
| | | | | | | | | | | | | | |||
| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| | |||
| 1! | 2" | 3£ | 4$ | 5% | 6^ | 7& | 8* | 9( | 0) | DEL | Bksp | | |||
| ! | " | £ | $ | % | ^ | & | * | ( | ) |WrdDel|WrdBks| | |||
| Shift | \| | `¬ | #~ | '@ | -_ | =+ | #~ | [{ | ]} | '@ |Shift | | |||
| | | | |Lower | Del |Space | | Next | Vol- | Vol+ | Play | | |||
##### Raise Layer | |||
Activated when `Raise` is held in the above `qwerty` layer. | |||
* Preferred layer for typing brackets. | |||
* Allows for cursor navigation to be used solely with the right hand. | |||
* WRDSEL: Select the word where the cursor is. | |||
* |< and >|: Apply `ctrl` to `left` and `right` respectively for word jumping. | |||
| | | | | | | | | | | | | | |||
| :---: |:----:| :---:| :---:| :---:| :---:| :---: | :---:| :---:| :---:| :---: | :---:| | |||
| ` | |WRDSEL| [ | ] | | | PGUP | HOME |PGDOWN| |PRNTSC| | |||
| ` | | | ( | ) | | | HOME | UP | END | |ZOOM +| | |||
| | | | { | } | ||<| LEFT | DOWN |RIGHT |>||ZOOM -| | |||
| Mouse | | | | | Alt | Enter |Raise | | | | | | |||
##### Lower + Raise | |||
Activated when `Lower` and `Raise` are held together in the above `qwerty` layer. | |||
* Audio controls in the same position as cursor keys from the `Raise` layer. | |||
* ????: Runs a macro for outputting a text string. Do not use this store passwords. | |||
* Reset: Enter bootloader for flashing firmware to the keyboard. | |||
* CAPS: Toggle caps lock. | |||
* Macro functions: Allows recording of macros. To start recording the macro, press either REC1 or REC2. | |||
To finish the recording, press STOP. To replay the macro, press either PLAY1 or PLAY2. | |||
* MAC: Toggle MAC OS extensions to layers. This allows MLWR to be enabled with LOWER, | |||
MRSE with RAISE, MFNC with FUNC and MFNC2 with FUNC2 respectively. | |||
| | | | | | | | | | | | | | |||
| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| | |||
| ???? | Reset|Qwerty| | | REC1 | REC2 | | | | | Del | | |||
| CAPS | | | | | PLAY1|PLAY2 | Mute | Vol+ | Play | | | | |||
| MAC | | | | | STOP1|STOP2 | Prev | Vol- | Next | | | | |||
| | | | | | | | | DYN | | | | | |||
##### Function 2 Layer | |||
Activated when `fn` held in the above `qwerty` layer. | |||
* WRDSEL: Select the word where the cursor is. | |||
* LNDEL: Delete the line where the cursor is. | |||
* LNSEL: Select the line where the cursor is. | |||
* DUP: Duplicate the selected text. | |||
* LNJOIN: Join the line where the cursor is with the following line. | |||
* MODE: Print either `PC` or `OSX` depending on what layer mode is active. | |||
| | | | | | | | | | | | | | |||
| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| | |||
| | |WRDSEL| | | | LNDEL| | | | | | | |||
| | | LNSEL| DUP | | | | |LNJOIN| | | | | |||
| | UNDO | CUT | COPY | PASTE| | | | | | | MODE | | |||
| | | | | | | | | | | | | | |||
##### Mouse Layer | |||
Activated when `fn` and `raise` held together. | |||
| | | | | | | | | | | | | | |||
| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| | |||
| ESC | | | | | | | | BTN3 | | | | | |||
| ACC0 | ACC1 | ACC2 | | | | | BTN1 | UP | BTN2 | | | | |||
| ACC0 | ACC1 | ACC2 | | | | | LEFT | DOWN | RIGHT| | | | |||
| | | | | | | | | | | | | | |||
##### Number Pad Layout | |||
Activated when holding `Esc` key. | |||
| | | | | | | | | | | | | | |||
| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| | |||
| | | | | | |NMLOCK| 7 | 8 | 9 | / | | | |||
| | | | | | | | 4 | 5 | 6 | * | | | |||
| | | | | | | | 1 | 2 | 3 | + | | | |||
| | | | | | | | 0 | . | , | - | | |
@ -0,0 +1 @@ | |||
SRC += ajp10304.c |