diff options
author | rupa <rupa@lrrr.us> | 2020-08-20 20:07:09 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-08-20 17:07:09 -0700 |
commit | dd763f2988f0804fc7a0ff03de5c2a1e5a29e450 (patch) | |
tree | 3cf79015d574a866ca0dcca86c15c79cd5abca80 /users/rupa/process_records.c | |
parent | 83c7c66e8caab77bfb97c937c371ceb165c58102 (diff) | |
download | qmk_firmware-dd763f2988f0804fc7a0ff03de5c2a1e5a29e450.tar.gz qmk_firmware-dd763f2988f0804fc7a0ff03de5c2a1e5a29e450.zip |
[Keymap] userspace and keymap for rupa (#9786)
* first iteration of my keymap
* * move to userspace
* "script" modes
* keymap bling
* OM and RUPA keys
and tryin to micro-optimize in process_records.c
* woops
swap shifted rupas
forgot to add codepoint for OM
* Apply suggestions from code review
Co-authored-by: Drashna Jaelre <drashna@live.com>
* add call to process_record_keymap, per review
* fall through to process_record_keymap
* license headers
Co-authored-by: Drashna Jaelre <drashna@live.com>
Diffstat (limited to 'users/rupa/process_records.c')
-rwxr-xr-x | users/rupa/process_records.c | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/users/rupa/process_records.c b/users/rupa/process_records.c new file mode 100755 index 0000000000..2d72310100 --- /dev/null +++ b/users/rupa/process_records.c @@ -0,0 +1,72 @@ +/* +Copyright 2020 rupa <rupa@lrrr.us> @rupa + +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/>. +*/ + +#include "rupa.h" + +font_t *translator = NULL; + +__attribute__((weak)) +bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { + return true; +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + bool is_shifted = get_mods()&MOD_MASK_SHIFT; + bool is_pressed = record->event.pressed; + + switch(keycode) { + case VRSN: + if (is_pressed) { + send_string_with_delay_P(PSTR( + "# " QMK_KEYBOARD "/" QMK_KEYMAP ":" QMK_VERSION " " QMK_BUILDDATE "\n" + ), TAP_CODE_DELAY); + } + return false; + + case LOD: + case RUPA: + if (is_pressed) { + if (keycode == LOD) { + send_unicode_string((is_shifted ? "¯\\_(ツ)_/¯" : "ಠ_ಠ")); + } else if (keycode == RUPA) { + send_unicode_string((is_shifted ? "Śrīrūpa" : "rūpa")); + } + } + return false; + + // script modes + case U_FRACT: + case U_MONOS: + case U_SCRPT: + if (is_pressed) { + if (keycode == U_SCRPT) { + translator = (translator == &script_bold ? NULL : &script_bold); + } else if (keycode == U_FRACT) { + translator = (translator == &fraktu_bold ? NULL : &fraktu_bold); + } else if (keycode == U_MONOS) { + translator = (translator == &monosp_bold ? NULL : &monosp_bold); + } + } + return true; + + default: + if (is_pressed && translator != NULL) { + return script_mode_translate(translator, is_shifted, keycode); + } + } + return process_record_keymap(keycode, record); +} |