diff options
Diffstat (limited to 'keyboards/planck/keymaps')
-rw-r--r-- | keyboards/planck/keymaps/cbbrowne/config.h | 17 | ||||
-rw-r--r-- | keyboards/planck/keymaps/cbbrowne/keymap.c | 146 | ||||
-rw-r--r-- | keyboards/planck/keymaps/cbbrowne/readme.md | 15 | ||||
-rw-r--r-- | keyboards/planck/keymaps/cbbrowne/rules.mk | 2 |
4 files changed, 169 insertions, 11 deletions
diff --git a/keyboards/planck/keymaps/cbbrowne/config.h b/keyboards/planck/keymaps/cbbrowne/config.h index 3a4ee907f..d92790635 100644 --- a/keyboards/planck/keymaps/cbbrowne/config.h +++ b/keyboards/planck/keymaps/cbbrowne/config.h @@ -1,3 +1,19 @@ +/* Copyright 2017 Christopher Browne + * + * 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/>. + */ + #ifndef CONFIG_USER_H #define CONFIG_USER_H @@ -23,6 +39,7 @@ * borrowed from basic keymap */ #define _______ KC_TRNS +#define _____ KC_NO #endif diff --git a/keyboards/planck/keymaps/cbbrowne/keymap.c b/keyboards/planck/keymaps/cbbrowne/keymap.c index 0448a8d11..d1214dda1 100644 --- a/keyboards/planck/keymaps/cbbrowne/keymap.c +++ b/keyboards/planck/keymaps/cbbrowne/keymap.c @@ -40,11 +40,11 @@ /* Some interesting things implemented - - There is a macro that writes out "cbbrowne" to show that I could + - There is a macro that writes out "cbbrowne" just to show that I + could - There is a (somewhat cruddy) linear congruential random number generator. - - I would like to be seeding it with clock info to make it look - more random + - I seed it somewhat with clock info to make it look more random - There are two macros that use the random number generators - one, M_RANDDIGIT, generates a random digit based on state of the random number generator @@ -59,10 +59,12 @@ - Need to think about what zsh and readline actions I use lots - Ought to ensure that Control-Alt-Delete is convenient enough - - How about Alt-F1 thru Alt-F8? + - How about Alt-F1 thru Alt-F8? Not yet... - What's the keystroke to get from X to console these days? - A layer for doing console switching would not be a bad idea - - I haven't got page-up/page-down, let's have that... + + - I'm messing with jeremy-dev's keymap that shifts everything + outwards. Gotta figure out how to make it sensible... */ enum layers { @@ -71,6 +73,21 @@ enum layers { _RAISE, /* Raised layer, where top line has digits 1234567890 */ _KEYPAD, /* Key pad */ _ADJUST, /* Special Adjust layer coming via tri-placement */ + +}; + +enum my_keycodes { + MY_ABVE = SAFE_RANGE, + MY_BELW, + MY_TERM, + MY_DEQL, // /= + MY_MEQL, // *= + MY_SEQL, // -= + MY_PEQL, // += + MY_NEQL, // != + MY_LTGT, // <> + MY_DPIP, // || + MY_DAMP, // && }; enum macro_id { @@ -132,9 +149,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {_______, RANDDIG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, {_______, RANDALP, _______, _______, _______, RESET, RESET, _______, _______, _______, _______, _______ }, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ } -} +} }; + /* What is fn_actions actually used for??? */ const uint16_t PROGMEM fn_actions[] = { }; @@ -233,3 +251,119 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) } return MACRO_NONE; }; + +void press_key(uint16_t key) { + register_code(key); + unregister_code(key); +} + +void press_two_keys(uint16_t key1, uint16_t key2) { + register_code(key1); + register_code(key2); + unregister_code(key2); + unregister_code(key1); +} + +void press_three_keys(uint16_t key1, uint16_t key2, uint16_t key3) { + register_code(key1); + register_code(key2); + register_code(key3); + unregister_code(key3); + unregister_code(key2); + unregister_code(key1); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case MY_BELW: + if (record->event.pressed) { + press_two_keys(KC_LGUI, KC_RGHT); + press_key(KC_ENT); + } + + return false; + + case MY_ABVE: + if (record->event.pressed) { + press_two_keys(KC_LGUI, KC_LEFT); + press_key(KC_ENT); + press_key(KC_UP); + } + + return false; + + case MY_TERM: + if (record->event.pressed) { + press_three_keys(KC_LGUI, KC_LSFT, KC_ENT); + } + + return false; + + case MY_DEQL: // /= + if (record->event.pressed) { + press_key(KC_SLSH); + press_key(KC_EQL); + } + + return false; + + case MY_MEQL: // *= + if (record->event.pressed) { + press_two_keys(KC_LSFT, KC_ASTR); + press_key(KC_EQL); + } + + return false; + + case MY_SEQL: // -= + if (record->event.pressed) { + press_key(KC_MINS); + press_key(KC_EQL); + } + + return false; + + case MY_PEQL: // += + if (record->event.pressed) { + press_two_keys(KC_LSFT, KC_PLUS); + press_key(KC_EQL); + } + + return false; + + case MY_NEQL: // != + if (record->event.pressed) { + press_two_keys(KC_LSFT, KC_EXLM); + press_key(KC_EQL); + } + + return false; + + case MY_LTGT: // <> + if (record->event.pressed) { + press_two_keys(KC_LSFT, KC_LABK); + press_two_keys(KC_LSFT, KC_RABK); + } + + return false; + + case MY_DPIP: // || + if (record->event.pressed) { + press_two_keys(KC_LSFT, KC_PIPE); + press_two_keys(KC_LSFT, KC_PIPE); + } + + return false; + + case MY_DAMP: // && + if (record->event.pressed) { + press_two_keys(KC_LSFT, KC_AMPR); + press_two_keys(KC_LSFT, KC_AMPR); + } + + return false; + } + + return true; +} + diff --git a/keyboards/planck/keymaps/cbbrowne/readme.md b/keyboards/planck/keymaps/cbbrowne/readme.md index 184142e0c..e55b130ef 100644 --- a/keyboards/planck/keymaps/cbbrowne/readme.md +++ b/keyboards/planck/keymaps/cbbrowne/readme.md @@ -61,7 +61,7 @@ doing sundry experimentation: interesting idea to express the maps rotated 90%, so that you only need to fit 4 symbols onto each line, rather than 12. - I used enums to manage layer IDs and macro IDs so that I don't need + I use enums to manage layer IDs and macro IDs so that I don't need to care (beyond "start at 0", and arguably even that's not needed) about their values. @@ -102,12 +102,21 @@ unwise things again... * I use tmux quite a lot; the mollat keymap seems to have some interesting helpers. It might be interesting to add a "tmux layer," or to have a few keys in a layer oriented towards that + - Keys for... + - Picking windows 0 thru 8 + - next/prev/new window * The mollat tmux layer also suggests some thoughts about Emacs - helpers. + helpers. * I do not presently have anything that handles X11 screen switching, as with Control-Alt-various * I ought to probably look into KC_LEAD, to have some key combos that do not need to be concurrent * The jeebak keymap seems to have some neat ideas: - Number layer which is aggressive about having numbers in several places - - Touch layer seems interesting + - TouchCursor layer seems interesting + - It sets up a layer with cursor keys on the home keys + * The jeremy-dev keymap has some very interesting concepts + - Shift hands outwards; the special keys go in the center + - Symbol layer has some compound keys for C operators like /=, *=, -=, +=, ... + - This is likely what I'll use for my XD75re, and maybe I'll fork a + planck keymap for similar diff --git a/keyboards/planck/keymaps/cbbrowne/rules.mk b/keyboards/planck/keymaps/cbbrowne/rules.mk index 19e5c2a84..d5026e2d9 100644 --- a/keyboards/planck/keymaps/cbbrowne/rules.mk +++ b/keyboards/planck/keymaps/cbbrowne/rules.mk @@ -1,5 +1,3 @@ - - # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically |