forked from qmk/qmk_firmware
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added an additional clueboard layout. (qmk#1252)
* Current building keymap * Working media keys * Added mute key. Fixed volume. Fixed media * Updating readme * Swapped readme order
- Loading branch information
1 parent
973e910
commit 187c78f
Showing
6 changed files
with
130 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
|
||
MOUSEKEY_ENABLE = yes | ||
EXTRAKEY_ENABLE = yes | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,103 @@ | ||
#include "clueboard.h" | ||
|
||
// Helpful defines | ||
#define GRAVE_MODS (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)|MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)|MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT)) | ||
#define _______ KC_TRNS | ||
|
||
// Each layer gets a name for readability, which is then used in the keymap matrix below. | ||
// The underscores don't mean anything - you can have a layer called STUFF or any other name. | ||
// Layer names don't all need to be of the same length, obviously, and you can also skip them | ||
// entirely and just use numbers. | ||
#define _BL 0 | ||
#define _FL 1 | ||
#define _ME 2 | ||
#define _CL 3 | ||
|
||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
/* Keymap _BL: Base Layer (Default Layer) | ||
*/ | ||
[_BL] = KEYMAP( | ||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, KC_PGUP, \ | ||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, \ | ||
F(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, \ | ||
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_RSFT, KC_UP, \ | ||
KC_LCTL, KC_LGUI, KC_LALT, KC_MHEN, KC_SPC,KC_SPC, KC_HENK, KC_RGUI, MO(_FL), MO(_ME), KC_LEFT, KC_DOWN, KC_RGHT), | ||
|
||
/* Keymap _FL: Function Layer | ||
*/ | ||
[_FL] = KEYMAP( | ||
KC_ESC, 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_DEL, KC_HOME, \ | ||
_______, _______, _______,_______,_______,_______,_______,_______,KC_PSCR,KC_SLCK, KC_PAUS, _______, _______, KC_PSCR, KC_END, \ | ||
_______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \ | ||
_______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, KC_PGUP, \ | ||
_______, _______, _______, _______, _______,_______, _______, _______, MO(_FL), MO(_ME), KC_HOME, KC_PGDN, KC_END), | ||
|
||
/* Keymap _FL: Function Layer | ||
*/ | ||
[_ME] = KEYMAP( | ||
_______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, KC_MUTE, KC_VOLU, \ | ||
_______, _______, _______,_______,_______,_______,_______,_______,KC_PSCR,KC_SLCK, KC_PAUS, _______, _______, _______, KC_VOLD, \ | ||
_______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \ | ||
_______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______ , _______, _______, \ | ||
_______, _______, _______, _______, _______,_______, _______, _______, MO(_FL), MO(_ME), KC_MPRV, KC_MPLY, KC_MNXT), | ||
|
||
|
||
/* Keymap _CL: Control layer | ||
*/ | ||
[_CL] = KEYMAP( | ||
_______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_TOG, RGB_VAI, \ | ||
_______, _______, _______,_______,RESET, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD, \ | ||
_______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \ | ||
MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, MO(_FL), _______, RGB_SAI, \ | ||
_______, _______, _______,_______, RGB_MOD, RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI), | ||
}; | ||
|
||
/* This is a list of user defined functions. F(N) corresponds to item N | ||
of this list. | ||
*/ | ||
const uint16_t PROGMEM fn_actions[] = { | ||
[0] = ACTION_FUNCTION(0), // Calls action_function() | ||
[1] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_ESC), | ||
}; | ||
|
||
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { | ||
static uint8_t mods_pressed; | ||
static bool mod_flag; | ||
|
||
switch (id) { | ||
case 0: | ||
/* Handle the combined Grave/Esc key | ||
*/ | ||
mods_pressed = get_mods()&GRAVE_MODS; // Check to see what mods are pressed | ||
|
||
if (record->event.pressed) { | ||
/* The key is being pressed. | ||
*/ | ||
if (mods_pressed) { | ||
mod_flag = true; | ||
add_key(KC_GRV); | ||
send_keyboard_report(); | ||
} else { | ||
add_key(KC_ESC); | ||
send_keyboard_report(); | ||
} | ||
} else { | ||
/* The key is being released. | ||
*/ | ||
if (mod_flag) { | ||
mod_flag = false; | ||
del_key(KC_GRV); | ||
send_keyboard_report(); | ||
} else { | ||
del_key(KC_ESC); | ||
send_keyboard_report(); | ||
} | ||
} | ||
break; | ||
case 1: | ||
if(record->event.pressed) { | ||
del_key(KC_ESC); | ||
} | ||
break; | ||
} | ||
} |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
``` | ||
___ _____ _ _ _ __ __ _ __ | ||
|__ \ / ____| | | | | | / / / /(_) / / | ||
||) | | | | |_ _ ___| |__ ___ __ _ _ __ __| | / /_ / /_ / / | ||
|/ / | | | | | | |/ _ \ '_ \ / _ \ / _` | '__/ _` | | '_ \| '_ \ / / | ||
|_| | |____| | |_| | __/ |_) | (_) | (_| | | | (_| | | (_) | (_) / / _ | ||
(_) \_____|_|\__,_|\___|_.__/ \___/ \__,_|_| \__,_| \___/ \___/_/ (_) | ||
``` | ||
|
||
# Serubin's Clueboard Layout | ||
|
||
This is the layout based on the clueboard default, modified for development on Mac, PC, and Windows. This layout also handles media and volume keys on all the previously listed platforms. Most importantly, Capslock has been replaced by a dual function Esc/Ctrl key. This is particularly handy for use in Vim. | ||
|
||
#### Base Layer | ||
![Base Layout Image](layout-base.png) | ||
|
||
#### Fn Layer | ||
![Fn Layout Image](layout-fn.png) | ||
|
||
#### Media Layer | ||
![Media Layer Image](layout-media.png) | ||
|
||
|