diff options
author | Christopher Browne <cbbrowne@acm.org> | 2017-09-14 14:02:49 -0400 |
---|---|---|
committer | Jack Humbert <jack.humb@gmail.com> | 2017-09-14 14:02:49 -0400 |
commit | a07d1f22aa111d3aaf0903a3cbaeb27b98f2c55e (patch) | |
tree | 606e2ce9fb34b3d8ecd2a1c756f3be59d50eebac /keyboards/planck/keymaps/cbbrowne/keymap.c | |
parent | 23ce0b43b669c4ca4c9217bbb8927af401556650 (diff) | |
download | qmk_firmware-a07d1f22aa111d3aaf0903a3cbaeb27b98f2c55e.tar.gz |
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
Diffstat (limited to 'keyboards/planck/keymaps/cbbrowne/keymap.c')
-rw-r--r-- | keyboards/planck/keymaps/cbbrowne/keymap.c | 146 |
1 files changed, 140 insertions, 6 deletions
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; +} + |