From a07d1f22aa111d3aaf0903a3cbaeb27b98f2c55e Mon Sep 17 00:00:00 2001 From: Christopher Browne Date: Thu, 14 Sep 2017 14:02:49 -0400 Subject: Some revisions to cbbrowne Planck keymap, and a preliminary xd75 keymap (#1715) * Add HOME/END keys as upper/lower on arrow-up/down * Reduce .hex file size by turning off unneeded options * Put digit keypad onto left hand upon RAISE; this will sometimes be preferable to double-hits of right hand * Latest super latest version merge * cbbrowne keymap for XD75re * starting notes on XD75re keymap plans * First draft of bottom row of QWERTY * Switch my special bottom line over to QCENT * Dunno * Filling in wanted keys, bit by bit... * Add copyright, extra macro * Clean up comments, remove some experimental code I didn't like * TODO plans for xd75re * clean up keyboard layout * QCENT2 is my new experiment for the main keyboard... * Add a few more main layer keys, and modify LOWER to shift things outwards to conform with main layer * Clean up RAISE layer to conform with main layer, remove QCENT layer as QCENT2 is the new thing * More xd75 changes, now that I actually have it in hand * shift keymap around, as original attempt was a bit too aggressive in keeping to the edges * more revs to XD75 * Dropping parts of the centre keypad in favor of Keys I Really Need * Improve documentation to conform with how builds are done now * Improve documentation to conform with how builds are done now * Add cbbrowne rules file as alternative to having the rules in Makefile * Makefile not needed anymore for individual keymap --- keyboards/planck/keymaps/cbbrowne/config.h | 17 ++++ keyboards/planck/keymaps/cbbrowne/keymap.c | 146 ++++++++++++++++++++++++++-- keyboards/planck/keymaps/cbbrowne/readme.md | 15 ++- keyboards/planck/keymaps/cbbrowne/rules.mk | 2 - 4 files changed, 169 insertions(+), 11 deletions(-) (limited to 'keyboards/planck/keymaps/cbbrowne') diff --git a/keyboards/planck/keymaps/cbbrowne/config.h b/keyboards/planck/keymaps/cbbrowne/config.h index 3a4ee907f4..d92790635e 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 . + */ + #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 0448a8d11c..d1214dda12 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 184142e0c1..e55b130eff 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 19e5c2a844..d5026e2d9b 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 -- cgit v1.2.3