From 1ed03f498fa204178c2696c510ac6a2cd8524e2d Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Sun, 26 Nov 2023 18:36:45 +0000 Subject: Remove userspace keymaps (#22544) --- users/333fred/333fred.c | 144 -- users/333fred/333fred.h | 51 - users/333fred/config.h | 27 - users/333fred/layout_macros.h | 66 - users/333fred/rgb.c | 50 - users/333fred/rules.mk | 10 - users/ajp10304/ajp10304.c | 176 --- users/ajp10304/ajp10304.h | 63 - users/ajp10304/readme.md | 141 -- users/ajp10304/rules.mk | 1 - users/alfrdmalr/alfrdmalr.c | 91 -- users/alfrdmalr/alfrdmalr.h | 286 ---- users/alfrdmalr/config.h | 7 - users/alfrdmalr/readme.md | 46 - users/alfrdmalr/rules.mk | 8 - users/anderson/dmc12.c | 46 - users/anderson/dmc12.h | 9 - users/anderson/seq.c | 38 - users/anderson/seq.h | 14 - users/anderson/smoothled.c | 34 - users/anderson/smoothled.h | 6 - users/arkag/arkag.c | 456 ------ users/arkag/arkag.h | 105 -- users/arkag/config.h | 22 - users/arkag/readme.md | 42 - users/arkag/rules.mk | 4 - users/art/.gitignore | 3 - users/art/art.c | 722 --------- users/art/art.h | 107 -- users/art/art_user_config.h.example | 7 - users/art/config.h | 14 - users/art/custom_definitions.h.example | 8 - users/art/funcs/led_funcs.c | 55 - users/art/funcs/led_funcs.h | 17 - users/art/funcs/string_funcs.c | 307 ---- users/art/funcs/string_funcs.h | 14 - users/art/rules.mk | 15 - users/art/secr.h.example | 9 - users/badger/README.md | 31 - users/badger/badger.c | 49 - users/badger/badger.h | 109 -- users/badger/ortho.c | 151 -- users/badger/ortho.h | 58 - users/badger/rules.mk | 2 - users/bcat/bcat.c | 61 - users/bcat/bcat.h | 58 - users/bcat/bcat_oled.c | 216 --- users/bcat/bcat_oled.h | 55 - users/bcat/bcat_oled_pet.h | 73 - users/bcat/bcat_oled_pet_isda.c | 134 -- users/bcat/bcat_oled_pet_luna.c | 168 --- users/bcat/bcat_rgblight.c | 22 - users/bcat/compile.sh | 52 - users/bcat/config.h | 150 -- users/bcat/readme.md | 51 - users/bcat/rules.mk | 68 - users/billypython/billypython.c | 32 - users/billypython/billypython.h | 34 - users/billypython/config.h | 17 - users/billypython/rules.mk | 6 - users/billypython/tap_dance.c | 33 - users/billypython/tap_dance.h | 9 - users/brandonschlack/brandonschlack.c | 211 --- users/brandonschlack/brandonschlack.h | 84 -- users/brandonschlack/config.h | 55 - users/brandonschlack/process_records.c | 172 --- users/brandonschlack/process_records.h | 152 -- users/brandonschlack/readme.md | 48 - users/brandonschlack/rgb_bs.c | 146 -- users/brandonschlack/rgb_bs.h | 35 - users/brandonschlack/rgb_theme.h | 50 - users/brandonschlack/rgb_theme_user.inc | 95 -- users/brandonschlack/rules.mk | 34 - users/brandonschlack/tap_dances.c | 91 -- users/brandonschlack/tap_dances.h | 52 - users/brett/brett.c | 61 - users/brett/brett.h | 25 - users/brett/rules.mk | 1 - users/byungyoonc/byungyoonc.c | 48 - users/byungyoonc/byungyoonc.h | 27 - users/byungyoonc/readme.md | 14 - users/byungyoonc/rules.mk | 1 - users/byungyoonc/saturated_solid_multisplash.h | 50 - users/callum/callum.c | 130 -- users/callum/oneshot.c | 57 - users/callum/oneshot.h | 31 - users/callum/readme.md | 99 -- users/callum/rules.mk | 3 - users/callum/swapper.c | 27 - users/callum/swapper.h | 20 - users/cameronjlarsen/features/oneshot.c | 66 - users/cameronjlarsen/features/oneshot.h | 41 - users/cameronjlarsen/rules.mk | 5 - users/cbbrowne/cbbrowne.c | 0 users/cbbrowne/cbbrowne.h | 39 - users/cbbrowne/rules.mk | 1 - users/cedrikl/cedrikl.c | 36 - users/cedrikl/cedrikl.h | 21 - users/cedrikl/config.h | 25 - users/cedrikl/rules.mk | 4 - users/charlesrocket/apl.c | 183 --- users/charlesrocket/rules.mk | 3 - users/cjuniet/cjuniet.c | 13 - users/cjuniet/cjuniet.h | 5 - users/cjuniet/glcdfont.c | 230 --- users/cjuniet/readme.md | 14 - users/cjuniet/rules.mk | 1 - users/csc027/csc027.c | 70 - users/csc027/csc027.h | 46 - users/csc027/custom_audio.c | 34 - users/csc027/custom_audio.h | 25 - users/csc027/custom_rgb.c | 42 - users/csc027/custom_rgb.h | 26 - users/csc027/defines.h | 345 ----- users/csc027/rules.mk | 11 - users/csc027/usb_led.c | 49 - users/csc027/usb_led.h | 20 - users/curry/.gitignore | 1 - users/curry/LICENSE | 14 - users/curry/README.md | 30 - users/curry/config.h | 112 -- users/curry/curry.c | 133 -- users/curry/curry.h | 67 - users/curry/glcdfont.c | 232 --- users/curry/leader_user.c | 31 - users/curry/leader_user.h | 3 - users/curry/oled.c | 172 --- users/curry/process_records.c | 76 - users/curry/process_records.h | 101 -- users/curry/rgb_lighting_user.c | 331 ---- users/curry/rgb_lighting_user.h | 19 - users/curry/rgb_matrix_user.c | 153 -- users/curry/rgb_matrix_user.h | 7 - users/curry/rgblight_breathe_table.h | 118 -- users/curry/rules.mk | 71 - users/curry/tap_dances.c | 4 - users/curry/tap_dances.h | 1 - users/curry/wrappers.h | 88 -- users/cwebster2/config.h | 56 - users/cwebster2/cwebster2.c | 65 - users/cwebster2/cwebster2.h | 51 - users/cwebster2/keycodes.c | 54 - users/cwebster2/keycodes.h | 27 - users/cwebster2/my_miryoku.h | 77 - users/cwebster2/rules.mk | 13 - users/d4mation/config.h | 1 - users/d4mation/d4mation.c | 37 - users/d4mation/d4mation.h | 17 - users/d4mation/macros.c | 160 -- users/d4mation/macros.h | 23 - users/d4mation/rules.mk | 15 - users/d4mation/tap-dance.c | 6 - users/d4mation/tap-dance.h | 7 - users/d4mation/tap-hold.c | 28 - users/d4mation/tap-hold.h | 5 - users/d4mation/zalgo.c | 21 - users/d4mation/zalgo.h | 5 - users/danielo515/alt_tab.c | 38 - users/danielo515/alt_tab.h | 4 - users/danielo515/combo.c | 44 - users/danielo515/combo.h | 2 - users/danielo515/config.h | 9 - users/danielo515/danielo515.c | 124 -- users/danielo515/danielo515.h | 7 - users/danielo515/process_records.c | 197 --- users/danielo515/process_records.h | 108 -- users/danielo515/readme.md | 14 - users/danielo515/rules.mk | 11 - users/danielo515/tap_dance.c | 139 -- users/danielo515/tap_dance.h | 81 - users/datagrok/README.md | 63 - users/datagrok/feature_cdeq.c | 47 - users/datagrok/feature_cdeq.h | 2 - users/datagrok/feature_default_layers_selector.c | 46 - users/datagrok/feature_default_layers_selector.h | 69 - users/davidkristoffersen/davidkristoffersen.h | 18 - users/davidkristoffersen/hardware/readme.md | 3 - users/davidkristoffersen/hardware/split_space.c | 23 - users/davidkristoffersen/hardware/split_space.h | 16 - users/davidkristoffersen/macros/debug.c | 36 - users/davidkristoffersen/macros/language.c | 40 - users/davidkristoffersen/macros/macros.c | 16 - users/davidkristoffersen/macros/macros.h | 23 - users/davidkristoffersen/macros/norwegian.h | 19 - users/davidkristoffersen/macros/readme.md | 3 - users/davidkristoffersen/post_config.h | 8 - users/davidkristoffersen/readme.md | 3 - users/davidkristoffersen/rules.mk | 12 - users/davidkristoffersen/util/functions.c | 111 -- users/davidkristoffersen/util/functions.h | 30 - users/davidkristoffersen/util/readme.md | 3 - users/dennytom/chording_engine/README.md | 376 ----- users/dennytom/chording_engine/chord.py | 465 ------ users/dennytom/chording_engine/engine.part.1 | 163 -- users/dennytom/chording_engine/engine.part.2 | 323 ---- users/dennytom/chording_engine/engine.part.3 | 404 ----- .../chording_engine/keymap_def.schema.json | 337 ----- users/dennytom/chording_engine/parser.py | 231 --- users/dennytom/chording_engine/state_machine.dot | 49 - users/dennytom/chording_engine/state_machine.svg | 235 --- users/dennytom/chording_engine/tests/minunit.h | 288 ---- users/dennytom/chording_engine/tests/test.c | 1259 ---------------- users/dennytom/chording_engine/tests/test_full.sh | 11 - .../chording_engine/tests/test_keymap_def.json | 145 -- users/dennytom/chording_engine/tests/test_quick.sh | 6 - users/devdev/config.h | 30 - users/devdev/glcdfont.c | 465 ------ users/dhertz/config.h | 9 - users/dhertz/dhertz.c | 109 -- users/dhertz/dhertz.h | 28 - users/dhertz/rules.mk | 1 - users/doogle999/doogle999.c | 460 ------ users/doogle999/doogle999.h | 99 -- users/doogle999/readme.md | 41 - users/doogle999/rules.mk | 14 - users/draevin/LICENSE | 14 - users/draevin/README.md | 38 - users/draevin/config.h | 26 - users/draevin/draevin.c | 59 - users/draevin/draevin.h | 39 - users/draevin/rules.mk | 12 - users/draevin/wrappers.h | 49 - users/drashna/.gitignore | 3 - users/drashna/.gitlab-ci.yml | 24 - users/drashna/audio_config.h | 33 - users/drashna/autocorrect_data.h | 93 -- users/drashna/bootmagic_better.c | 56 - users/drashna/callbacks.c | 292 ---- users/drashna/callbacks.h | 26 - users/drashna/callbacks.md | 71 - users/drashna/config.h | 115 -- users/drashna/drashna.c | 319 ---- users/drashna/drashna.h | 115 -- users/drashna/eeconfig_users.c | 53 - users/drashna/eeconfig_users.h | 12 - users/drashna/keyrecords/dynamic_macros.c | 283 ---- users/drashna/keyrecords/dynamic_macros.h | 50 - users/drashna/keyrecords/keycodes.md | 13 - users/drashna/keyrecords/process_records.c | 200 --- users/drashna/keyrecords/process_records.h | 150 -- users/drashna/keyrecords/readme.md | 7 - users/drashna/keyrecords/secrets.md | 122 -- users/drashna/keyrecords/tap_dance.md | 121 -- users/drashna/keyrecords/tap_dances.c | 67 - users/drashna/keyrecords/tap_dances.h | 31 - users/drashna/keyrecords/tapping.c | 66 - users/drashna/keyrecords/unicode.c | 446 ------ users/drashna/keyrecords/unicode.h | 21 - users/drashna/keyrecords/unicode.md | 27 - users/drashna/keyrecords/wrappers.h | 266 ---- users/drashna/keyrecords/wrappers.md | 11 - users/drashna/oled/drashna_font.h | 1060 ------------- users/drashna/oled/oled_assets.h | 207 --- users/drashna/oled/oled_config.h | 40 - users/drashna/oled/oled_stuff.c | 830 ---------- users/drashna/oled/oled_stuff.h | 169 --- users/drashna/oled/readme.md | 42 - users/drashna/oled/rules.mk | 12 - users/drashna/pointing/pointing.c | 118 -- users/drashna/pointing/pointing.h | 11 - users/drashna/pointing/pointing_config.h | 6 - users/drashna/pointing/readme.md | 19 - users/drashna/post_config.h | 143 -- users/drashna/readme.md | 17 - users/drashna/rgb/readme.md | 52 - users/drashna/rgb/rgb_matrix_config.h | 106 -- users/drashna/rgb/rgb_matrix_stuff.c | 190 --- users/drashna/rgb/rgb_matrix_stuff.h | 17 - users/drashna/rgb/rgb_stuff.c | 165 -- users/drashna/rgb/rgb_stuff.h | 15 - users/drashna/rgb/rgblight_config.h | 12 - users/drashna/rgblight_breathe_table.h | 121 -- users/drashna/rules.mk | 136 -- users/drashna/split/readme.md | 29 - users/drashna/split/split_config.h | 26 - users/drashna/split/transport_sync.c | 201 --- users/drashna/split/transport_sync.h | 28 - users/drashna/template.c | 57 - users/drashna/template.h | 18 - users/dshields/config.h | 64 - users/dshields/dshields.c | 57 - users/dshields/dshields.h | 65 - users/dshields/rules.mk | 31 - users/dudeofawesome/dudeofawesome.c | 1 - users/dudeofawesome/dudeofawesome.h | 29 - users/dudeofawesome/rules.mk | 1 - users/dvorak_42_key/config.h | 8 - users/dvorak_42_key/dvorak_42_key.c | 205 --- users/dvorak_42_key/dvorak_42_key.h | 161 -- users/dvorak_42_key/rules.mk | 7 - users/dvorak_42_key/vscode_macros.h | 35 - users/edvorakjp/edvorakjp.c | 22 - users/edvorakjp/edvorakjp.h | 90 -- users/edvorakjp/edvorakjp_process_record.c | 89 -- users/edvorakjp/edvorakjp_status.c | 56 - users/edvorakjp/edvorakjp_tap_dance.c | 78 - users/edvorakjp/readme.md | 67 - users/edvorakjp/rules.mk | 7 - users/ericgebhart/base_layers/accents.h | 90 -- users/ericgebhart/base_layers/alt.h | 150 -- users/ericgebhart/base_layers/base_layers.h | 58 - users/ericgebhart/base_layers/beakl.h | 158 -- users/ericgebhart/base_layers/bepo.h | 114 -- users/ericgebhart/base_layers/carpalx.h | 46 - users/ericgebhart/base_layers/dvorak.h | 73 - users/ericgebhart/base_layers/gap.h | 67 - users/ericgebhart/base_layers/hands_down.h | 147 -- users/ericgebhart/base_layers/keymaps.txt | 300 ---- users/ericgebhart/base_layers/maks.h | 61 - users/ericgebhart/base_layers/qwerty.h | 69 - users/ericgebhart/base_layers/toprows.h | 56 - users/ericgebhart/config.h | 321 ---- users/ericgebhart/defs/accented_keys.def | 101 -- users/ericgebhart/defs/alt_shift.def | 6 - users/ericgebhart/defs/altlocal_keys.def | 208 --- users/ericgebhart/defs/combos.def | 139 -- users/ericgebhart/defs/custom_keys.def | 86 -- users/ericgebhart/defs/encoders.def | 65 - users/ericgebhart/defs/key_overrides.def | 23 - users/ericgebhart/defs/mod_lock.def | 19 - users/ericgebhart/defs/not_dead.def | 19 - users/ericgebhart/defs/nshot.def | 45 - users/ericgebhart/defs/oneshot.def | 17 - users/ericgebhart/defs/send_string.def | 7 - users/ericgebhart/defs/smart_lock.def | 123 -- users/ericgebhart/defs/swapper.def | 3 - users/ericgebhart/defs/tap_hold.def | 68 - users/ericgebhart/defs/unicode.def | 5 - users/ericgebhart/ericgebhart.c | 42 - users/ericgebhart/ericgebhart.h | 28 - users/ericgebhart/extensions/accented_keys.c | 50 - users/ericgebhart/extensions/accented_keys.h | 19 - users/ericgebhart/extensions/alt_shift.c | 99 -- users/ericgebhart/extensions/altlocal_keys.c | 82 - users/ericgebhart/extensions/altlocal_keys.h | 56 - users/ericgebhart/extensions/console_key_logger.c | 38 - users/ericgebhart/extensions/console_key_logger.h | 19 - users/ericgebhart/extensions/encoders.c | 83 - users/ericgebhart/extensions/encoders.h | 46 - users/ericgebhart/extensions/extensions.c | 91 -- users/ericgebhart/extensions/extensions.h | 22 - users/ericgebhart/extensions/key_overrides.h | 53 - users/ericgebhart/extensions/keycodes.h | 523 ------- users/ericgebhart/extensions/keymap_combo.h | 136 -- users/ericgebhart/extensions/mod_lock.c | 81 - users/ericgebhart/extensions/mod_lock.h | 39 - users/ericgebhart/extensions/not_dead.c | 36 - users/ericgebhart/extensions/nshot_mod.c | 154 -- users/ericgebhart/extensions/nshot_mod.h | 45 - users/ericgebhart/extensions/oneshot.c | 217 --- users/ericgebhart/extensions/oneshot.h | 37 - users/ericgebhart/extensions/process_locales.h | 29 - users/ericgebhart/extensions/process_nshot.h | 21 - users/ericgebhart/extensions/process_smart_lock.h | 19 - users/ericgebhart/extensions/quick_tap.c | 37 - users/ericgebhart/extensions/send_string.c | 40 - users/ericgebhart/extensions/smart_lock.c | 117 -- users/ericgebhart/extensions/smart_lock.h | 103 -- users/ericgebhart/extensions/swapper.c | 58 - users/ericgebhart/extensions/swapper.h | 37 - users/ericgebhart/extensions/tap_dances.c | 277 ---- users/ericgebhart/extensions/tap_dances.h | 19 - users/ericgebhart/extensions/tap_hold.c | 165 -- users/ericgebhart/extensions/tap_hold.h | 20 - users/ericgebhart/extensions/unicode.c | 34 - users/ericgebhart/extensions/unicode.h | 24 - users/ericgebhart/keyboards/keyboards.h | 115 -- users/ericgebhart/keyboards/layouts.h | 771 ---------- users/ericgebhart/keymap/keymap.c | 142 -- users/ericgebhart/keymap/map_accented.h | 26 - users/ericgebhart/keymap/map_alt.h | 69 - users/ericgebhart/keymap/map_beakl.h | 48 - users/ericgebhart/keymap/map_bepo.h | 40 - users/ericgebhart/keymap/map_carpalx.h | 25 - users/ericgebhart/keymap/map_dvorak.h | 31 - users/ericgebhart/keymap/map_funcs.h | 127 -- users/ericgebhart/keymap/map_gap.h | 31 - users/ericgebhart/keymap/map_hd.h | 117 -- users/ericgebhart/keymap/map_keypads.h | 66 - users/ericgebhart/keymap/map_maks.h | 34 - users/ericgebhart/keymap/map_qwerty.h | 25 - users/ericgebhart/keymap/map_symbols.h | 56 - users/ericgebhart/keymap/map_toprows.h | 45 - users/ericgebhart/lang/lang.h | 106 -- users/ericgebhart/lang/lang_map.h | 78 - users/ericgebhart/lang/locale_layers.h | 27 - users/ericgebhart/lang/locales.c | 60 - users/ericgebhart/lang/locales.h | 42 - users/ericgebhart/layer_names/base_names.h | 173 --- users/ericgebhart/layer_names/func_names.h | 38 - users/ericgebhart/layer_names/layer_names.h | 75 - users/ericgebhart/layer_names/util_names.h | 59 - users/ericgebhart/layers/edge_keys.h | 420 ------ users/ericgebhart/layers/keypads.h | 236 --- users/ericgebhart/layers/layers.h | 112 -- users/ericgebhart/layers/nav.h | 199 --- users/ericgebhart/layers/symbols.h | 225 --- users/ericgebhart/layers/thumbs.h | 276 ---- users/ericgebhart/layers/toprows.h | 80 - users/ericgebhart/layers/utility.h | 125 -- users/ericgebhart/listen_keylogger.sh | 1 - users/ericgebhart/miryoku_hd_gold_config.h | 323 ---- users/ericgebhart/mod_layers/alt_mods.h | 129 -- users/ericgebhart/mod_layers/hrm_gacs.h | 130 -- users/ericgebhart/mod_layers/hrm_gacs_miryoku.h | 130 -- users/ericgebhart/mod_layers/hrm_gasc.h | 130 -- users/ericgebhart/mod_layers/hrm_sacg.h | 130 -- users/ericgebhart/mod_layers/hrs_nav.h | 126 -- users/ericgebhart/mod_layers/mod_layer.h | 155 -- users/ericgebhart/mod_layers/trns_mods.h | 129 -- users/ericgebhart/oled/oled_cartes.c | 325 ---- users/ericgebhart/oled/oled_layers.c | 252 ---- users/ericgebhart/oled/oled_stuff.c | 189 --- users/ericgebhart/oled/oled_stuff.h | 61 - users/ericgebhart/process_records.c | 51 - users/ericgebhart/readme.md | 1584 -------------------- users/ericgebhart/rules.mk | 87 -- users/gary/gary.c | 1 - users/gary/gary.h | 42 - users/gary/readme.md | 14 - users/gary/rules.mk | 1 - users/gourdo1/autocorrect/autocorrection.c | 182 --- users/gourdo1/autocorrect/autocorrection.h | 40 - users/gourdo1/autocorrect/autocorrection_data.h | 722 --------- .../autocorrect/autocorrection_data.h (large) | 722 --------- .../autocorrect/autocorrection_data.h (small) | 152 -- users/gourdo1/autocorrect/autocorrection_dict.txt | 473 ------ .../autocorrect/make_autocorrection_data.py | 303 ---- users/gourdo1/custom_double_taps.h | 101 -- users/gourdo1/gourdo1.c | 631 -------- users/gourdo1/gourdo1.h | 148 -- users/gourdo1/gourdo1_encoder.c | 238 --- users/gourdo1/rules.mk | 31 - users/greatwizard/config.h | 40 - users/greatwizard/fn.h | 21 - users/greatwizard/game.c | 27 - users/greatwizard/game.h | 21 - users/greatwizard/git.c | 127 -- users/greatwizard/git.h | 39 - users/greatwizard/greatwizard.c | 113 -- users/greatwizard/greatwizard.h | 135 -- users/greatwizard/keymap_helpers.h | 61 - users/greatwizard/ortho.c | 21 - users/greatwizard/ortho.h | 24 - users/greatwizard/programmer.c | 174 --- users/greatwizard/programmer.h | 31 - users/greatwizard/readme.md | 32 - users/greatwizard/rules.mk | 31 - users/greatwizard/tap_dances.c | 105 -- users/greatwizard/tap_dances.h | 65 - users/greatwizard/underglow.c | 109 -- users/greatwizard/underglow.h | 24 - users/haervig/config.h | 19 - users/haervig/haervig.c | 234 --- users/haervig/haervig.h | 297 ---- users/haervig/readme.md | 11 - users/haervig/rules.mk | 5 - users/horrortroll/config.h | 64 - users/horrortroll/horrortroll.c | 165 -- users/horrortroll/horrortroll.h | 49 - users/horrortroll/led/cool_diagonal.c | 22 - users/horrortroll/led/custom_gradient.c | 74 - .../led/flower_blooming/flower_blooming.c | 27 - .../led/flower_blooming/flower_blooming.h | 36 - users/horrortroll/led/random_breath_rainbow.c | 55 - users/horrortroll/readme.md | 24 - users/horrortroll/rgb_matrix_user.inc | 13 - users/horrortroll/rules.mk | 6 - users/hvp/config.h | 19 - users/hvp/hvp.c | 2 - users/hvp/hvp.h | 43 - users/hvp/per_key.c | 43 - users/hvp/readme.md | 1 - users/hvp/rules.mk | 9 - users/hvp/tap_dances.c | 103 -- users/hvp/tap_dances.h | 29 - users/ibnuda/abstraction.c | 17 - users/ibnuda/abstraction.h | 117 -- users/ibnuda/combo.c | 1 - users/ibnuda/combo.h | 96 -- users/ibnuda/config.h | 5 - users/ibnuda/ibnuda.c | 1 - users/ibnuda/ibnuda.h | 5 - users/ibnuda/readme.md | 14 - users/ibnuda/rules.mk | 8 - users/ibnuda/wrapper.h | 8 - users/imchipwood/imchipwood.c | 141 -- users/imchipwood/imchipwood.h | 51 - users/imchipwood/rules.mk | 2 - users/ishtob/config.h | 68 - users/ishtob/ishtob.c | 69 - users/ishtob/ishtob.h | 237 --- users/ishtob/readme.md | 87 -- users/ishtob/rules.mk | 7 - users/issmirnov/config.h | 41 - users/issmirnov/issmirnov.c | 41 - users/issmirnov/issmirnov.h | 35 - users/issmirnov/rows.h | 55 - users/issmirnov/rules.mk | 25 - users/issmirnov/tap_tog.c | 52 - users/issmirnov/tap_tog.h | 10 - users/jackhumbert/jackhumbert.c | 1 - users/jackhumbert/jackhumbert.h | 6 - users/jackhumbert/readme.md | 14 - users/jackhumbert/rules.mk | 1 - users/jarred/config.h | 49 - users/jarred/jarred.c | 97 -- users/jarred/jarred.h | 172 --- users/jarred/readme.md | 17 - users/jarred/rules.mk | 16 - users/jdelkins/.gitignore | 1 - users/jdelkins/jdelkins.c | 287 ---- users/jdelkins/jdelkins.h | 134 -- users/jdelkins/rules.mk | 15 - users/jjerrell/.gitignore | 1 - users/jjerrell/config.h | 26 - users/jjerrell/jjerrell.c | 135 -- users/jjerrell/jjerrell.h | 53 - users/jjerrell/process_records.c | 139 -- users/jjerrell/process_records.h | 41 - users/jjerrell/readme.md | 50 - users/jjerrell/rules.mk | 27 - users/jjerrell/wrappers.h | 329 ---- users/jonavin/config.h | 34 - users/jonavin/jonavin.c | 233 --- users/jonavin/jonavin.h | 130 -- users/jonavin/jonavin_encoder.c | 219 --- users/jonavin/readme.md | 124 -- users/jonavin/rules.mk | 29 - users/kageurufu/config.h | 4 - users/kageurufu/custom_rgb.c | 18 - users/kageurufu/custom_rgb.h | 3 - users/kageurufu/kageurufu.c | 12 - users/kageurufu/kageurufu.h | 5 - users/kageurufu/layouts.h | 58 - users/kageurufu/process_records.c | 44 - users/kageurufu/process_records.h | 27 - users/kageurufu/readme.md | 14 - users/kageurufu/rules.mk | 14 - users/klackygears/klackygears.c | 75 - users/klackygears/klackygears.h | 72 - users/klackygears/readme.md | 15 - users/klackygears/rules.mk | 6 - users/klackygears/tap_dances.c | 184 --- users/klackygears/tap_dances.h | 37 - users/klackygears/wrappers.h | 220 --- users/konstantin/config.h | 63 - users/konstantin/konstantin.c | 144 -- users/konstantin/konstantin.h | 104 -- users/konstantin/post_config.h | 22 - users/konstantin/rgb.c | 42 - users/konstantin/rgb.h | 29 - users/konstantin/rules.mk | 18 - users/konstantin/tap_dance.c | 135 -- users/konstantin/tap_dance.h | 45 - users/konstantin/unicode.c | 23 - users/konstantin/unicode.h | 50 - users/kuatsure/kuatsure.c | 122 -- users/kuatsure/kuatsure.h | 65 - users/kuatsure/readme.md | 14 - users/kuatsure/rules.mk | 4 - users/kuchosauronad0/.gitignore | 3 - users/kuchosauronad0/combo.c | 27 - users/kuchosauronad0/combo.h | 20 - users/kuchosauronad0/config.h | 88 -- users/kuchosauronad0/encoder.c | 64 - users/kuchosauronad0/encoder.h | 4 - users/kuchosauronad0/kuchosauronad0.c | 200 --- users/kuchosauronad0/kuchosauronad0.h | 109 -- users/kuchosauronad0/leader_user.c | 113 -- users/kuchosauronad0/leader_user.h | 6 - users/kuchosauronad0/process_records.c | 244 --- users/kuchosauronad0/process_records.h | 91 -- users/kuchosauronad0/readme.md | 217 --- users/kuchosauronad0/rgblight_user.c | 156 -- users/kuchosauronad0/rgblight_user.h | 23 - users/kuchosauronad0/rules.mk | 49 - users/kuchosauronad0/tap_dances.c | 55 - users/kuchosauronad0/tap_dances.h | 26 - users/kuchosauronad0/template.c | 125 -- users/kuchosauronad0/template.h | 18 - users/kuchosauronad0/unicode.c | 62 - users/kuchosauronad0/unicode.h | 64 - users/kuchosauronad0/wrappers.h | 212 --- users/losinggeneration/README.md | 185 --- users/losinggeneration/losinggeneration-common.h | 71 - users/losinggeneration/losinggeneration-config.h | 29 - users/losinggeneration/losinggeneration-keymap.h | 379 ----- users/losinggeneration/rules.mk | 12 - users/manna-harbour_miryoku/config.h | 39 - users/manna-harbour_miryoku/custom_config.h | 7 - users/manna-harbour_miryoku/custom_rules.mk | 3 - .../manna-harbour_miryoku/manna-harbour_miryoku.c | 91 -- .../manna-harbour_miryoku/manna-harbour_miryoku.h | 51 - .../miryoku_babel/miryoku_layer_alternatives.h | 389 ----- .../miryoku_babel/miryoku_layer_list.h | 23 - .../miryoku_babel/miryoku_layer_selection.h | 277 ---- users/manna-harbour_miryoku/post_rules.mk | 42 - users/manna-harbour_miryoku/readme.org | 801 ---------- users/manna-harbour_miryoku/rules.mk | 15 - users/mattly/config.h | 5 - users/mattly/mattly.c | 78 - users/mattly/mattly.h | 121 -- users/mattly/readme.md | 10 - users/mattly/rules.mk | 4 - users/mechmerlin/changelog.md | 44 - users/mechmerlin/config.h | 44 - users/mechmerlin/mechmerlin.c | 27 - users/mechmerlin/mechmerlin.h | 19 - users/mechmerlin/readme.md | 57 - users/mechmerlin/rules.mk | 2 - users/mguterl/config.h | 0 users/mguterl/mguterl.c | 1 - users/mguterl/mguterl.h | 67 - users/mguterl/readme.md | 14 - users/mguterl/rules.mk | 1 - users/miketronic/config.h | 12 - users/miketronic/miketronic.c | 17 - users/miketronic/miketronic.h | 63 - users/miketronic/process_records.c | 151 -- users/miketronic/process_records.h | 38 - users/miketronic/readme.md | 25 - users/miketronic/rules.mk | 4 - users/miketronic/tapdances.c | 33 - users/miketronic/tapdances.h | 57 - users/miketronic/wrappers.h | 226 --- users/miles2go/babblePaste.c | 223 --- users/miles2go/babblePaste.h | 383 ----- users/miles2go/babblePaste.md | 244 --- users/miles2go/babl_chromeos.c | 103 -- users/miles2go/babl_emacs.c | 86 -- users/miles2go/babl_kitty.c | 153 -- users/miles2go/babl_linux.c | 102 -- users/miles2go/babl_mac.c | 152 -- users/miles2go/babl_nano.c | 77 - users/miles2go/babl_readmux.c | 86 -- users/miles2go/babl_vi.c | 77 - users/miles2go/babl_windows.c | 151 -- users/miles2go/config.h | 60 - .../keymaps/handwired/ms_sculpt_mobile/config.h | 50 - .../keymaps/handwired/ms_sculpt_mobile/keymap.c | 461 ------ .../keymaps/handwired/ms_sculpt_mobile/readme.md | 10 - .../keymaps/handwired/ms_sculpt_mobile/rules.mk | 24 - users/miles2go/milestogo.c | 153 -- users/miles2go/milestogo.h | 302 ---- users/miles2go/readme.md | 10 - users/miles2go/rules.mk | 10 - users/mnil/config.h | 22 - users/mnil/mnil.c | 146 -- users/mnil/mnil.h | 85 -- users/mnil/readme.md | 23 - users/mnil/rules.mk | 7 - users/moults31/gdb.c | 59 - users/moults31/gdb.h | 21 - users/moults31/moults31.c | 114 -- users/moults31/moults31.h | 61 - users/moults31/obs.c | 80 - users/moults31/obs.h | 21 - users/moults31/readme.md | 5 - users/moults31/rules.mk | 10 - users/moults31/vscode.c | 90 -- users/moults31/vscode.h | 21 - users/mtei/config.h | 46 - users/mtei/cpp_map.h | 84 -- users/mtei/debug_config.h | 6 - users/mtei/encoder_update_user.c | 33 - users/mtei/key_blocks.h | 40 - users/mtei/layer_number_util.h | 17 - users/mtei/matrix_output_unselect_delay_ondemand.c | 18 - users/mtei/oled_display.c | 147 -- users/mtei/pseudo_sprintf.c | 53 - users/mtei/pseudo_sprintf.h | 8 - users/mtei/rules.mk | 9 - users/mtei/user_featues.mk | 60 - users/mtei/user_options.mk | 127 -- users/muppetjones/.clang-format | 26 - users/muppetjones/config.h | 38 - users/muppetjones/features/casemodes.c | 247 --- users/muppetjones/features/casemodes.h | 47 - users/muppetjones/features/combos.c | 35 - users/muppetjones/features/combos.h | 17 - users/muppetjones/features/dancelayers.c | 98 -- users/muppetjones/features/dancelayers.h | 82 - users/muppetjones/features/etchamouse.c | 101 -- users/muppetjones/features/etchamouse.h | 59 - users/muppetjones/features/rgblayers.c | 69 - users/muppetjones/features/rgblayers.h | 22 - users/muppetjones/muppetjones.c | 52 - users/muppetjones/muppetjones.h | 55 - users/muppetjones/readme.md | 23 - users/muppetjones/readme/dancelayers.md | 73 - users/muppetjones/readme/etchamouse.md | 69 - users/muppetjones/readme/rgblayers.md | 59 - users/muppetjones/readme/tapmods.md | 25 - users/muppetjones/readme/wrappers.md | 153 -- users/muppetjones/rules.mk | 25 - users/muppetjones/tapmods.h | 77 - users/muppetjones/wrappers.h | 247 --- users/mverteuil/.gitignore | 1 - users/mverteuil/mverteuil.c | 2 - users/mverteuil/mverteuil.h | 21 - users/mverteuil/rules.mk | 1 - users/narze/narze.c | 1 - users/narze/narze.h | 13 - users/narze/readme.md | 37 - users/narze/rules.mk | 5 - users/narze/superduper.c | 66 - users/narze/superduper.h | 7 - users/nchristus/nchristus.c | 18 - users/nchristus/nchristus.h | 87 -- users/nchristus/rules.mk | 0 users/ninjonas/.gitignore | 1 - users/ninjonas/README.md | 117 -- users/ninjonas/combos.c | 55 - users/ninjonas/config.h | 20 - users/ninjonas/encoder.c | 105 -- users/ninjonas/ninjonas.c | 39 - users/ninjonas/ninjonas.h | 148 -- users/ninjonas/oled.c | 112 -- users/ninjonas/process_records.c | 117 -- users/ninjonas/process_records.h | 30 - users/ninjonas/rules.mk | 16 - users/ninjonas/tap_dances.c | 122 -- users/ninjonas/tap_dances.h | 37 - users/noroadsleft/noroadsleft.c | 140 -- users/noroadsleft/noroadsleft.h | 37 - users/noroadsleft/readme.md | 85 -- users/noroadsleft/rules.mk | 1 - users/not-quite-neo/nqn-basic-layout.h | 124 -- users/not-quite-neo/nqn-common.h | 9 - users/not-quite-neo/nqn-keys-on-quertz-de-latin1.h | 73 - users/not-quite-neo/readme.md | 24 - users/nstickney/config.h | 63 - users/nstickney/nstickney.c | 96 -- users/nstickney/nstickney.h | 39 - users/nstickney/readme.md | 49 - users/nstickney/rules.mk | 36 - users/nstickney/unicodemap.h | 106 -- users/ollyhayes/ollyhayes.c | 153 -- users/ollyhayes/ollyhayes.h | 41 - users/ollyhayes/rules.mk | 1 - users/pcewing/README.md | 85 -- users/pcewing/key_repeater.c | 168 --- users/pcewing/key_repeater.h | 68 - users/pcewing/rules.mk | 1 - users/pdl/pdl.c | 216 --- users/pdl/pdl.h | 135 -- users/pdl/rules.mk | 1 - users/peej/layout.h | 150 -- users/peej/peej.c | 68 - users/peej/peej.h | 78 - users/peej/rules.mk | 1 - users/peterfalken/config.h | 23 - users/peterfalken/peterfalken.c | 20 - users/peterfalken/peterfalken.h | 27 - users/peterfalken/readme.md | 14 - users/peterfalken/rules.mk | 18 - users/pvinis/config.h | 7 - users/pvinis/pvinis.c | 98 -- users/pvinis/pvinis.h | 172 --- users/pvinis/rules.mk | 19 - users/riblee/readme.md | 14 - users/riblee/riblee.c | 174 --- users/riblee/riblee.h | 59 - users/riblee/rules.mk | 1 - users/ridingqwerty/config.h | 10 - users/ridingqwerty/dict.h | 1012 ------------- users/ridingqwerty/process_records.c | 486 ------ users/ridingqwerty/process_records.h | 58 - users/ridingqwerty/ridingqwerty.c | 65 - users/ridingqwerty/ridingqwerty.h | 61 - users/ridingqwerty/rules.mk | 24 - users/ridingqwerty/tapdances.c | 33 - users/ridingqwerty/tapdances.h | 9 - users/ridingqwerty/unicode.c | 7 - users/ridingqwerty/unicode.h | 295 ---- users/ridingqwerty/wrappers.h | 156 -- users/rishka/rishka.c | 1 - users/rishka/rishka.h | 74 - users/rishka/rules.mk | 1 - users/rmeli/.gitignore | 2 - users/rmeli/config.h | 40 - users/rmeli/keyrecords/tap_dances.c | 139 -- users/rmeli/keyrecords/tap_dances.h | 71 - users/rmeli/keyrecords/unicode.h | 86 -- users/rmeli/keyrecords/wrappers.h | 178 --- users/rmeli/oled/oled.c | 102 -- users/rmeli/oled/oled.h | 26 - users/rmeli/readme.md | 14 - users/rmeli/rmeli.h | 32 - users/rmeli/rules.mk | 26 - users/rmw/encoder_functions.c | 53 - users/rmw/encoder_functions.h | 11 - users/rmw/rmw.c | 1 - users/rmw/rmw.h | 87 -- users/rmw/rules.mk | 9 - users/rmw/tapdances.c | 389 ----- users/rmw/tapdances.h | 46 - users/romus/README.md | 45 - users/romus/config.h | 8 - users/romus/romus.c | 509 ------- users/romus/romus.h | 270 ---- users/romus/rules.mk | 21 - users/rossman360/readme.md | 14 - users/rossman360/rossman360.c | 85 -- users/rossman360/rossman360.h | 38 - users/rossman360/rules.mk | 5 - users/rs/karabiner.json | 154 -- users/rs/readme.md | 30 - users/rs/rs.c | 74 - users/rs/rs.h | 48 - users/rs/rules.mk | 1 - users/rupa/config.h | 11 - users/rupa/process_records.c | 118 -- users/rupa/process_records.h | 21 - users/rupa/readme.md | 7 - users/rupa/rules.mk | 5 - users/rupa/rupa.c | 82 - users/rupa/rupa.h | 82 - users/rupa/unicode.c | 172 --- users/rupa/unicode.h | 77 - users/rupa/wrappers.h | 122 -- users/rverst/config.h | 45 - users/rverst/readme.md | 18 - users/rverst/rules.mk | 9 - users/rverst/rverst.c | 425 ------ users/rverst/rverst.h | 85 -- users/rverst/unicode.h | 31 - users/scheiklp/koy_keys_on_quertz_de_latin1.h | 64 - users/scotto/config.h | 25 - users/scotto/readme.md | 17 - users/scotto/rules.mk | 11 - users/scotto/scotto.c | 15 - users/scotto/scotto.h | 69 - users/scotto/tap_dance.c | 154 -- users/scotto/tap_dance.h | 39 - users/sethBarberee/config.h | 82 - users/sethBarberee/readme.md | 6 - users/sethBarberee/rgb_light.c | 52 - users/sethBarberee/rgb_light.h | 21 - users/sethBarberee/rules.mk | 10 - users/sethBarberee/sethBarberee.c | 100 -- users/sethBarberee/sethBarberee.h | 55 - users/sethBarberee/tap_dance.c | 89 -- users/sethBarberee/tap_dance.h | 43 - users/sethBarberee/wrappers.h | 71 - users/sigma/config.h | 21 - users/sigma/rules.mk | 3 - users/sigma/sigma.c | 271 ---- users/sigma/sigma.h | 58 - users/sigul/.gitignore | 2 - users/sigul/README.md | 17 - users/sigul/config.h | 21 - users/sigul/rules.mk | 8 - users/sigul/sigul.c | 100 -- users/sigul/sigul.h | 42 - users/snowe/luna.c | 229 --- users/snowe/luna.h | 31 - users/snowe/ocean_dream.c | 556 ------- users/snowe/ocean_dream.h | 103 -- users/snowe/oled_setup.c | 146 -- users/snowe/oled_setup.h | 30 - users/snowe/readme.md | 10 - users/snowe/readme_ocean_dream.md | 258 ---- users/snowe/rules.mk | 27 - users/snowe/snowe.h | 42 - users/snowe/wrappers.h | 92 -- users/spacebarracecar/config.h | 2 - users/spacebarracecar/readme.md | 111 -- users/spacebarracecar/rules.mk | 5 - users/spacebarracecar/spacebarracecar.c | 352 ----- users/spacebarracecar/spacebarracecar.h | 247 --- users/spidey3/config.h | 45 - users/spidey3/init.c | 24 - users/spidey3/layer_rgb.c | 486 ------ users/spidey3/readme.md | 14 - users/spidey3/rules.mk | 15 - users/spidey3/spidey3.c | 384 ----- users/spidey3/spidey3.h | 81 - users/spidey3/spidey3_unicode.c | 28 - users/spidey3/spidey3_unicode.h | 31 - users/spotpuff/rules.mk | 1 - users/stanrc85/config.h | 38 - users/stanrc85/indicator_layers_sneakbox.c | 28 - users/stanrc85/layer_rgb.c | 29 - users/stanrc85/readme.md | 57 - users/stanrc85/rgb_layers.c | 36 - users/stanrc85/rgb_timeout.c | 62 - users/stanrc85/rgblight_layers.c | 30 - users/stanrc85/rgblight_layers_osa.c | 68 - users/stanrc85/rules.mk | 55 - users/stanrc85/stanrc85.c | 133 -- users/stanrc85/stanrc85.h | 55 - users/stanrc85/startup_fanfare.c | 43 - users/talljoe/config.h | 22 - users/talljoe/macros.c | 40 - users/talljoe/macros.h | 27 - users/talljoe/readme.md | 7 - users/talljoe/rules.mk | 18 - users/talljoe/talljoe.c | 229 --- users/talljoe/talljoe.h | 184 --- users/talljoe/tapdance/actions/td.function.c | 35 - users/talljoe/tapdance/actions/td.grave.c | 36 - users/talljoe/tapdance/actions/td.lock.c | 35 - users/talljoe/tapdance/actions/td.semicolon.c | 54 - users/talljoe/tapdance/tapdance.h | 26 - users/talljoe/tapdance/tapdance_actions.c | 28 - users/talljoe/tapdance/td_setup.c | 70 - users/talljoe/tapdance/td_setup.h | 29 - users/toinux/keymap_qwerty_fr.h | 153 -- users/tominabox1/.gitignore | 2 - users/tominabox1/config.h | 87 -- users/tominabox1/dimple_rgb.c | 433 ------ users/tominabox1/doug.c | 232 --- users/tominabox1/readme.md | 5 - users/tominabox1/rules.mk | 25 - users/tominabox1/tominabox1.c | 281 ---- users/tominabox1/tominabox1.h | 56 - users/tominabox1/wrappers.h | 142 -- users/turbomech/backupturbomech.c | 390 ----- users/turbomech/turbomech.c | 124 -- users/turbomech/turbomech.h | 50 - users/twschum/config.h | 0 users/twschum/readme.md | 14 - users/twschum/rules.mk | 5 - users/twschum/twschum.c | 256 ---- users/twschum/twschum.h | 131 -- users/twschum/xtonhasvim.c | 593 -------- users/twschum/xtonhasvim.h | 62 - users/uqs/config.h | 38 - users/uqs/rules.mk | 24 - users/uqs/uqs.c | 575 ------- users/uqs/uqs.h | 77 - users/vitoni/readme.adoc | 16 - users/vitoni/rgb_matrix_effects.c | 236 --- users/vitoni/rgb_matrix_effects.h | 174 --- users/vitoni/rules.mk | 4 - users/vitoni/utils.c | 129 -- users/vitoni/utils.h | 80 - users/vitoni/vitoni.c | 131 -- users/vitoni/vitoni.h | 30 - users/vnmm/config.h | 70 - users/vnmm/keymap_user.h | 41 - users/vnmm/readme.md | 10 - users/vnmm/rgb_matrix_user.c | 140 -- users/vnmm/rgb_matrix_user.h | 28 - users/vnmm/rules.mk | 5 - users/vnmm/vnmm.c | 23 - users/vnmm/vnmm.h | 21 - users/vosechu/config.h | 19 - users/vosechu/readme.md | 14 - users/vosechu/rules.mk | 1 - users/vosechu/vosechu.c | 25 - users/vosechu/vosechu.h | 89 -- users/wanleg/config.h | 47 - users/wanleg/readme.md | 125 -- users/wanleg/rules.mk | 45 - users/wanleg/tapdances.c | 264 ---- users/wanleg/wanleg.c | 176 --- users/wanleg/wanleg.h | 322 ---- users/xtonhasvim/fancylighting.c | 172 --- users/xtonhasvim/fancylighting.h | 36 - users/xtonhasvim/readme.md | 10 - users/xtonhasvim/rules.mk | 2 - users/xtonhasvim/xtonhasvim.c | 643 -------- users/xtonhasvim/xtonhasvim.h | 65 - users/xulkal/config.h | 36 - users/xulkal/custom_encoder.c | 73 - users/xulkal/custom_encoder.h | 2 - users/xulkal/custom_keycodes.h | 40 - users/xulkal/custom_oled.c | 189 --- users/xulkal/custom_oled.h | 2 - users/xulkal/custom_rgb.c | 64 - users/xulkal/custom_rgb.h | 17 - users/xulkal/custom_tap_dance.c | 59 - users/xulkal/custom_tap_dance.h | 23 - users/xulkal/layouts.h | 119 -- users/xulkal/process_records.c | 62 - users/xulkal/process_records.h | 18 - users/xulkal/rules.mk | 32 - users/xulkal/xulkal.c | 1 - users/xulkal/xulkal.h | 6 - users/yanfali/config.h | 30 - users/yanfali/rules.mk | 38 - users/yet-another-developer/.gitignore | 2 - users/yet-another-developer/README.md | 7 - users/yet-another-developer/combo.c | 27 - users/yet-another-developer/combo.h | 20 - users/yet-another-developer/config.h | 46 - users/yet-another-developer/leader_user.c | 41 - users/yet-another-developer/leader_user.h | 6 - users/yet-another-developer/process_records.c | 193 --- users/yet-another-developer/process_records.h | 109 -- users/yet-another-developer/rules.mk | 50 - users/yet-another-developer/tap_dances.c | 55 - users/yet-another-developer/tap_dances.h | 26 - users/yet-another-developer/unicode.c | 62 - users/yet-another-developer/unicode.h | 64 - users/yet-another-developer/wrappers.h | 166 -- .../yet-another-developer/yet-another-developer.c | 160 -- .../yet-another-developer/yet-another-developer.h | 87 -- users/zer09/config.h | 23 - users/zer09/lights.c | 189 --- users/zer09/lights.h | 45 - users/zer09/rules.mk | 2 - users/zer09/tap_dance.c | 203 --- users/zer09/tap_dance.h | 55 - users/zer09/zer09.c | 89 -- users/zer09/zer09.h | 25 - users/zigotica/combos.c | 37 - users/zigotica/combos.h | 17 - users/zigotica/rows.h | 211 --- users/zigotica/rules.mk | 18 - users/zigotica/tapdances.c | 34 - users/zigotica/tapdances.h | 24 - users/zigotica/zigotica.c | 14 - users/zigotica/zigotica.h | 51 - users/zyber/config.h | 9 - users/zyber/rules.mk | 8 - users/zyber/zyber.c | 137 -- users/zyber/zyber.h | 33 - 1021 files changed, 88937 deletions(-) delete mode 100644 users/333fred/333fred.c delete mode 100644 users/333fred/333fred.h delete mode 100644 users/333fred/config.h delete mode 100644 users/333fred/layout_macros.h delete mode 100644 users/333fred/rgb.c delete mode 100644 users/333fred/rules.mk delete mode 100644 users/ajp10304/ajp10304.c delete mode 100644 users/ajp10304/ajp10304.h delete mode 100644 users/ajp10304/readme.md delete mode 100644 users/ajp10304/rules.mk delete mode 100644 users/alfrdmalr/alfrdmalr.c delete mode 100644 users/alfrdmalr/alfrdmalr.h delete mode 100644 users/alfrdmalr/config.h delete mode 100644 users/alfrdmalr/readme.md delete mode 100644 users/alfrdmalr/rules.mk delete mode 100644 users/anderson/dmc12.c delete mode 100644 users/anderson/dmc12.h delete mode 100644 users/anderson/seq.c delete mode 100644 users/anderson/seq.h delete mode 100644 users/anderson/smoothled.c delete mode 100644 users/anderson/smoothled.h delete mode 100644 users/arkag/arkag.c delete mode 100644 users/arkag/arkag.h delete mode 100644 users/arkag/config.h delete mode 100644 users/arkag/readme.md delete mode 100644 users/arkag/rules.mk delete mode 100644 users/art/.gitignore delete mode 100644 users/art/art.c delete mode 100644 users/art/art.h delete mode 100644 users/art/art_user_config.h.example delete mode 100644 users/art/config.h delete mode 100644 users/art/custom_definitions.h.example delete mode 100644 users/art/funcs/led_funcs.c delete mode 100644 users/art/funcs/led_funcs.h delete mode 100644 users/art/funcs/string_funcs.c delete mode 100644 users/art/funcs/string_funcs.h delete mode 100644 users/art/rules.mk delete mode 100644 users/art/secr.h.example delete mode 100644 users/badger/README.md delete mode 100644 users/badger/badger.c delete mode 100644 users/badger/badger.h delete mode 100644 users/badger/ortho.c delete mode 100644 users/badger/ortho.h delete mode 100644 users/badger/rules.mk delete mode 100644 users/bcat/bcat.c delete mode 100644 users/bcat/bcat.h delete mode 100644 users/bcat/bcat_oled.c delete mode 100644 users/bcat/bcat_oled.h delete mode 100644 users/bcat/bcat_oled_pet.h delete mode 100644 users/bcat/bcat_oled_pet_isda.c delete mode 100644 users/bcat/bcat_oled_pet_luna.c delete mode 100644 users/bcat/bcat_rgblight.c delete mode 100755 users/bcat/compile.sh delete mode 100644 users/bcat/config.h delete mode 100644 users/bcat/readme.md delete mode 100644 users/bcat/rules.mk delete mode 100644 users/billypython/billypython.c delete mode 100644 users/billypython/billypython.h delete mode 100644 users/billypython/config.h delete mode 100644 users/billypython/rules.mk delete mode 100644 users/billypython/tap_dance.c delete mode 100644 users/billypython/tap_dance.h delete mode 100644 users/brandonschlack/brandonschlack.c delete mode 100644 users/brandonschlack/brandonschlack.h delete mode 100644 users/brandonschlack/config.h delete mode 100644 users/brandonschlack/process_records.c delete mode 100644 users/brandonschlack/process_records.h delete mode 100644 users/brandonschlack/readme.md delete mode 100644 users/brandonschlack/rgb_bs.c delete mode 100644 users/brandonschlack/rgb_bs.h delete mode 100644 users/brandonschlack/rgb_theme.h delete mode 100644 users/brandonschlack/rgb_theme_user.inc delete mode 100644 users/brandonschlack/rules.mk delete mode 100644 users/brandonschlack/tap_dances.c delete mode 100644 users/brandonschlack/tap_dances.h delete mode 100644 users/brett/brett.c delete mode 100644 users/brett/brett.h delete mode 100644 users/brett/rules.mk delete mode 100644 users/byungyoonc/byungyoonc.c delete mode 100644 users/byungyoonc/byungyoonc.h delete mode 100644 users/byungyoonc/readme.md delete mode 100644 users/byungyoonc/rules.mk delete mode 100644 users/byungyoonc/saturated_solid_multisplash.h delete mode 100644 users/callum/callum.c delete mode 100644 users/callum/oneshot.c delete mode 100644 users/callum/oneshot.h delete mode 100644 users/callum/readme.md delete mode 100644 users/callum/rules.mk delete mode 100644 users/callum/swapper.c delete mode 100644 users/callum/swapper.h delete mode 100644 users/cameronjlarsen/features/oneshot.c delete mode 100644 users/cameronjlarsen/features/oneshot.h delete mode 100644 users/cameronjlarsen/rules.mk delete mode 100644 users/cbbrowne/cbbrowne.c delete mode 100644 users/cbbrowne/cbbrowne.h delete mode 100644 users/cbbrowne/rules.mk delete mode 100644 users/cedrikl/cedrikl.c delete mode 100644 users/cedrikl/cedrikl.h delete mode 100644 users/cedrikl/config.h delete mode 100644 users/cedrikl/rules.mk delete mode 100644 users/charlesrocket/apl.c delete mode 100644 users/charlesrocket/rules.mk delete mode 100644 users/cjuniet/cjuniet.c delete mode 100644 users/cjuniet/cjuniet.h delete mode 100644 users/cjuniet/glcdfont.c delete mode 100644 users/cjuniet/readme.md delete mode 100644 users/cjuniet/rules.mk delete mode 100644 users/csc027/csc027.c delete mode 100644 users/csc027/csc027.h delete mode 100644 users/csc027/custom_audio.c delete mode 100644 users/csc027/custom_audio.h delete mode 100644 users/csc027/custom_rgb.c delete mode 100644 users/csc027/custom_rgb.h delete mode 100644 users/csc027/defines.h delete mode 100644 users/csc027/rules.mk delete mode 100644 users/csc027/usb_led.c delete mode 100644 users/csc027/usb_led.h delete mode 100644 users/curry/.gitignore delete mode 100644 users/curry/LICENSE delete mode 100644 users/curry/README.md delete mode 100644 users/curry/config.h delete mode 100644 users/curry/curry.c delete mode 100644 users/curry/curry.h delete mode 100644 users/curry/glcdfont.c delete mode 100644 users/curry/leader_user.c delete mode 100644 users/curry/leader_user.h delete mode 100644 users/curry/oled.c delete mode 100644 users/curry/process_records.c delete mode 100644 users/curry/process_records.h delete mode 100644 users/curry/rgb_lighting_user.c delete mode 100644 users/curry/rgb_lighting_user.h delete mode 100644 users/curry/rgb_matrix_user.c delete mode 100644 users/curry/rgb_matrix_user.h delete mode 100644 users/curry/rgblight_breathe_table.h delete mode 100644 users/curry/rules.mk delete mode 100644 users/curry/tap_dances.c delete mode 100644 users/curry/tap_dances.h delete mode 100644 users/curry/wrappers.h delete mode 100644 users/cwebster2/config.h delete mode 100644 users/cwebster2/cwebster2.c delete mode 100644 users/cwebster2/cwebster2.h delete mode 100644 users/cwebster2/keycodes.c delete mode 100644 users/cwebster2/keycodes.h delete mode 100644 users/cwebster2/my_miryoku.h delete mode 100644 users/cwebster2/rules.mk delete mode 100644 users/d4mation/config.h delete mode 100644 users/d4mation/d4mation.c delete mode 100644 users/d4mation/d4mation.h delete mode 100644 users/d4mation/macros.c delete mode 100644 users/d4mation/macros.h delete mode 100644 users/d4mation/rules.mk delete mode 100644 users/d4mation/tap-dance.c delete mode 100644 users/d4mation/tap-dance.h delete mode 100644 users/d4mation/tap-hold.c delete mode 100644 users/d4mation/tap-hold.h delete mode 100644 users/d4mation/zalgo.c delete mode 100644 users/d4mation/zalgo.h delete mode 100644 users/danielo515/alt_tab.c delete mode 100644 users/danielo515/alt_tab.h delete mode 100644 users/danielo515/combo.c delete mode 100644 users/danielo515/combo.h delete mode 100644 users/danielo515/config.h delete mode 100644 users/danielo515/danielo515.c delete mode 100644 users/danielo515/danielo515.h delete mode 100644 users/danielo515/process_records.c delete mode 100644 users/danielo515/process_records.h delete mode 100644 users/danielo515/readme.md delete mode 100644 users/danielo515/rules.mk delete mode 100644 users/danielo515/tap_dance.c delete mode 100644 users/danielo515/tap_dance.h delete mode 100644 users/datagrok/README.md delete mode 100644 users/datagrok/feature_cdeq.c delete mode 100644 users/datagrok/feature_cdeq.h delete mode 100644 users/datagrok/feature_default_layers_selector.c delete mode 100644 users/datagrok/feature_default_layers_selector.h delete mode 100644 users/davidkristoffersen/davidkristoffersen.h delete mode 100644 users/davidkristoffersen/hardware/readme.md delete mode 100644 users/davidkristoffersen/hardware/split_space.c delete mode 100644 users/davidkristoffersen/hardware/split_space.h delete mode 100644 users/davidkristoffersen/macros/debug.c delete mode 100644 users/davidkristoffersen/macros/language.c delete mode 100644 users/davidkristoffersen/macros/macros.c delete mode 100644 users/davidkristoffersen/macros/macros.h delete mode 100644 users/davidkristoffersen/macros/norwegian.h delete mode 100644 users/davidkristoffersen/macros/readme.md delete mode 100644 users/davidkristoffersen/post_config.h delete mode 100644 users/davidkristoffersen/readme.md delete mode 100644 users/davidkristoffersen/rules.mk delete mode 100644 users/davidkristoffersen/util/functions.c delete mode 100644 users/davidkristoffersen/util/functions.h delete mode 100644 users/davidkristoffersen/util/readme.md delete mode 100644 users/dennytom/chording_engine/README.md delete mode 100644 users/dennytom/chording_engine/chord.py delete mode 100644 users/dennytom/chording_engine/engine.part.1 delete mode 100644 users/dennytom/chording_engine/engine.part.2 delete mode 100644 users/dennytom/chording_engine/engine.part.3 delete mode 100644 users/dennytom/chording_engine/keymap_def.schema.json delete mode 100644 users/dennytom/chording_engine/parser.py delete mode 100644 users/dennytom/chording_engine/state_machine.dot delete mode 100644 users/dennytom/chording_engine/state_machine.svg delete mode 100644 users/dennytom/chording_engine/tests/minunit.h delete mode 100644 users/dennytom/chording_engine/tests/test.c delete mode 100644 users/dennytom/chording_engine/tests/test_full.sh delete mode 100644 users/dennytom/chording_engine/tests/test_keymap_def.json delete mode 100644 users/dennytom/chording_engine/tests/test_quick.sh delete mode 100644 users/devdev/config.h delete mode 100644 users/devdev/glcdfont.c delete mode 100644 users/dhertz/config.h delete mode 100644 users/dhertz/dhertz.c delete mode 100644 users/dhertz/dhertz.h delete mode 100644 users/dhertz/rules.mk delete mode 100644 users/doogle999/doogle999.c delete mode 100644 users/doogle999/doogle999.h delete mode 100644 users/doogle999/readme.md delete mode 100644 users/doogle999/rules.mk delete mode 100644 users/draevin/LICENSE delete mode 100644 users/draevin/README.md delete mode 100644 users/draevin/config.h delete mode 100644 users/draevin/draevin.c delete mode 100644 users/draevin/draevin.h delete mode 100644 users/draevin/rules.mk delete mode 100644 users/draevin/wrappers.h delete mode 100644 users/drashna/.gitignore delete mode 100644 users/drashna/.gitlab-ci.yml delete mode 100644 users/drashna/audio_config.h delete mode 100644 users/drashna/autocorrect_data.h delete mode 100644 users/drashna/bootmagic_better.c delete mode 100644 users/drashna/callbacks.c delete mode 100644 users/drashna/callbacks.h delete mode 100644 users/drashna/callbacks.md delete mode 100644 users/drashna/config.h delete mode 100644 users/drashna/drashna.c delete mode 100644 users/drashna/drashna.h delete mode 100644 users/drashna/eeconfig_users.c delete mode 100644 users/drashna/eeconfig_users.h delete mode 100644 users/drashna/keyrecords/dynamic_macros.c delete mode 100644 users/drashna/keyrecords/dynamic_macros.h delete mode 100644 users/drashna/keyrecords/keycodes.md delete mode 100644 users/drashna/keyrecords/process_records.c delete mode 100644 users/drashna/keyrecords/process_records.h delete mode 100644 users/drashna/keyrecords/readme.md delete mode 100644 users/drashna/keyrecords/secrets.md delete mode 100644 users/drashna/keyrecords/tap_dance.md delete mode 100644 users/drashna/keyrecords/tap_dances.c delete mode 100644 users/drashna/keyrecords/tap_dances.h delete mode 100644 users/drashna/keyrecords/tapping.c delete mode 100644 users/drashna/keyrecords/unicode.c delete mode 100644 users/drashna/keyrecords/unicode.h delete mode 100644 users/drashna/keyrecords/unicode.md delete mode 100644 users/drashna/keyrecords/wrappers.h delete mode 100644 users/drashna/keyrecords/wrappers.md delete mode 100644 users/drashna/oled/drashna_font.h delete mode 100644 users/drashna/oled/oled_assets.h delete mode 100644 users/drashna/oled/oled_config.h delete mode 100644 users/drashna/oled/oled_stuff.c delete mode 100644 users/drashna/oled/oled_stuff.h delete mode 100644 users/drashna/oled/readme.md delete mode 100644 users/drashna/oled/rules.mk delete mode 100644 users/drashna/pointing/pointing.c delete mode 100644 users/drashna/pointing/pointing.h delete mode 100644 users/drashna/pointing/pointing_config.h delete mode 100644 users/drashna/pointing/readme.md delete mode 100644 users/drashna/post_config.h delete mode 100644 users/drashna/readme.md delete mode 100644 users/drashna/rgb/readme.md delete mode 100644 users/drashna/rgb/rgb_matrix_config.h delete mode 100644 users/drashna/rgb/rgb_matrix_stuff.c delete mode 100644 users/drashna/rgb/rgb_matrix_stuff.h delete mode 100644 users/drashna/rgb/rgb_stuff.c delete mode 100644 users/drashna/rgb/rgb_stuff.h delete mode 100644 users/drashna/rgb/rgblight_config.h delete mode 100644 users/drashna/rgblight_breathe_table.h delete mode 100644 users/drashna/rules.mk delete mode 100644 users/drashna/split/readme.md delete mode 100644 users/drashna/split/split_config.h delete mode 100644 users/drashna/split/transport_sync.c delete mode 100644 users/drashna/split/transport_sync.h delete mode 100644 users/drashna/template.c delete mode 100644 users/drashna/template.h delete mode 100644 users/dshields/config.h delete mode 100644 users/dshields/dshields.c delete mode 100644 users/dshields/dshields.h delete mode 100644 users/dshields/rules.mk delete mode 100644 users/dudeofawesome/dudeofawesome.c delete mode 100644 users/dudeofawesome/dudeofawesome.h delete mode 100644 users/dudeofawesome/rules.mk delete mode 100644 users/dvorak_42_key/config.h delete mode 100644 users/dvorak_42_key/dvorak_42_key.c delete mode 100644 users/dvorak_42_key/dvorak_42_key.h delete mode 100644 users/dvorak_42_key/rules.mk delete mode 100644 users/dvorak_42_key/vscode_macros.h delete mode 100644 users/edvorakjp/edvorakjp.c delete mode 100644 users/edvorakjp/edvorakjp.h delete mode 100644 users/edvorakjp/edvorakjp_process_record.c delete mode 100644 users/edvorakjp/edvorakjp_status.c delete mode 100644 users/edvorakjp/edvorakjp_tap_dance.c delete mode 100644 users/edvorakjp/readme.md delete mode 100644 users/edvorakjp/rules.mk delete mode 100644 users/ericgebhart/base_layers/accents.h delete mode 100644 users/ericgebhart/base_layers/alt.h delete mode 100644 users/ericgebhart/base_layers/base_layers.h delete mode 100644 users/ericgebhart/base_layers/beakl.h delete mode 100644 users/ericgebhart/base_layers/bepo.h delete mode 100644 users/ericgebhart/base_layers/carpalx.h delete mode 100644 users/ericgebhart/base_layers/dvorak.h delete mode 100644 users/ericgebhart/base_layers/gap.h delete mode 100644 users/ericgebhart/base_layers/hands_down.h delete mode 100644 users/ericgebhart/base_layers/keymaps.txt delete mode 100644 users/ericgebhart/base_layers/maks.h delete mode 100644 users/ericgebhart/base_layers/qwerty.h delete mode 100644 users/ericgebhart/base_layers/toprows.h delete mode 100644 users/ericgebhart/config.h delete mode 100644 users/ericgebhart/defs/accented_keys.def delete mode 100644 users/ericgebhart/defs/alt_shift.def delete mode 100644 users/ericgebhart/defs/altlocal_keys.def delete mode 100644 users/ericgebhart/defs/combos.def delete mode 100644 users/ericgebhart/defs/custom_keys.def delete mode 100644 users/ericgebhart/defs/encoders.def delete mode 100644 users/ericgebhart/defs/key_overrides.def delete mode 100644 users/ericgebhart/defs/mod_lock.def delete mode 100644 users/ericgebhart/defs/not_dead.def delete mode 100644 users/ericgebhart/defs/nshot.def delete mode 100644 users/ericgebhart/defs/oneshot.def delete mode 100644 users/ericgebhart/defs/send_string.def delete mode 100644 users/ericgebhart/defs/smart_lock.def delete mode 100644 users/ericgebhart/defs/swapper.def delete mode 100644 users/ericgebhart/defs/tap_hold.def delete mode 100644 users/ericgebhart/defs/unicode.def delete mode 100755 users/ericgebhart/ericgebhart.c delete mode 100755 users/ericgebhart/ericgebhart.h delete mode 100644 users/ericgebhart/extensions/accented_keys.c delete mode 100644 users/ericgebhart/extensions/accented_keys.h delete mode 100644 users/ericgebhart/extensions/alt_shift.c delete mode 100644 users/ericgebhart/extensions/altlocal_keys.c delete mode 100644 users/ericgebhart/extensions/altlocal_keys.h delete mode 100644 users/ericgebhart/extensions/console_key_logger.c delete mode 100644 users/ericgebhart/extensions/console_key_logger.h delete mode 100644 users/ericgebhart/extensions/encoders.c delete mode 100644 users/ericgebhart/extensions/encoders.h delete mode 100644 users/ericgebhart/extensions/extensions.c delete mode 100644 users/ericgebhart/extensions/extensions.h delete mode 100644 users/ericgebhart/extensions/key_overrides.h delete mode 100755 users/ericgebhart/extensions/keycodes.h delete mode 100644 users/ericgebhart/extensions/keymap_combo.h delete mode 100644 users/ericgebhart/extensions/mod_lock.c delete mode 100644 users/ericgebhart/extensions/mod_lock.h delete mode 100644 users/ericgebhart/extensions/not_dead.c delete mode 100644 users/ericgebhart/extensions/nshot_mod.c delete mode 100644 users/ericgebhart/extensions/nshot_mod.h delete mode 100644 users/ericgebhart/extensions/oneshot.c delete mode 100644 users/ericgebhart/extensions/oneshot.h delete mode 100644 users/ericgebhart/extensions/process_locales.h delete mode 100644 users/ericgebhart/extensions/process_nshot.h delete mode 100644 users/ericgebhart/extensions/process_smart_lock.h delete mode 100644 users/ericgebhart/extensions/quick_tap.c delete mode 100644 users/ericgebhart/extensions/send_string.c delete mode 100644 users/ericgebhart/extensions/smart_lock.c delete mode 100644 users/ericgebhart/extensions/smart_lock.h delete mode 100644 users/ericgebhart/extensions/swapper.c delete mode 100644 users/ericgebhart/extensions/swapper.h delete mode 100755 users/ericgebhart/extensions/tap_dances.c delete mode 100755 users/ericgebhart/extensions/tap_dances.h delete mode 100644 users/ericgebhart/extensions/tap_hold.c delete mode 100644 users/ericgebhart/extensions/tap_hold.h delete mode 100644 users/ericgebhart/extensions/unicode.c delete mode 100644 users/ericgebhart/extensions/unicode.h delete mode 100644 users/ericgebhart/keyboards/keyboards.h delete mode 100644 users/ericgebhart/keyboards/layouts.h delete mode 100644 users/ericgebhart/keymap/keymap.c delete mode 100644 users/ericgebhart/keymap/map_accented.h delete mode 100644 users/ericgebhart/keymap/map_alt.h delete mode 100644 users/ericgebhart/keymap/map_beakl.h delete mode 100644 users/ericgebhart/keymap/map_bepo.h delete mode 100644 users/ericgebhart/keymap/map_carpalx.h delete mode 100644 users/ericgebhart/keymap/map_dvorak.h delete mode 100644 users/ericgebhart/keymap/map_funcs.h delete mode 100644 users/ericgebhart/keymap/map_gap.h delete mode 100644 users/ericgebhart/keymap/map_hd.h delete mode 100644 users/ericgebhart/keymap/map_keypads.h delete mode 100644 users/ericgebhart/keymap/map_maks.h delete mode 100644 users/ericgebhart/keymap/map_qwerty.h delete mode 100644 users/ericgebhart/keymap/map_symbols.h delete mode 100644 users/ericgebhart/keymap/map_toprows.h delete mode 100644 users/ericgebhart/lang/lang.h delete mode 100644 users/ericgebhart/lang/lang_map.h delete mode 100644 users/ericgebhart/lang/locale_layers.h delete mode 100644 users/ericgebhart/lang/locales.c delete mode 100644 users/ericgebhart/lang/locales.h delete mode 100644 users/ericgebhart/layer_names/base_names.h delete mode 100644 users/ericgebhart/layer_names/func_names.h delete mode 100644 users/ericgebhart/layer_names/layer_names.h delete mode 100644 users/ericgebhart/layer_names/util_names.h delete mode 100644 users/ericgebhart/layers/edge_keys.h delete mode 100644 users/ericgebhart/layers/keypads.h delete mode 100755 users/ericgebhart/layers/layers.h delete mode 100644 users/ericgebhart/layers/nav.h delete mode 100644 users/ericgebhart/layers/symbols.h delete mode 100644 users/ericgebhart/layers/thumbs.h delete mode 100644 users/ericgebhart/layers/toprows.h delete mode 100644 users/ericgebhart/layers/utility.h delete mode 100755 users/ericgebhart/listen_keylogger.sh delete mode 100644 users/ericgebhart/miryoku_hd_gold_config.h delete mode 100644 users/ericgebhart/mod_layers/alt_mods.h delete mode 100644 users/ericgebhart/mod_layers/hrm_gacs.h delete mode 100644 users/ericgebhart/mod_layers/hrm_gacs_miryoku.h delete mode 100644 users/ericgebhart/mod_layers/hrm_gasc.h delete mode 100644 users/ericgebhart/mod_layers/hrm_sacg.h delete mode 100644 users/ericgebhart/mod_layers/hrs_nav.h delete mode 100644 users/ericgebhart/mod_layers/mod_layer.h delete mode 100644 users/ericgebhart/mod_layers/trns_mods.h delete mode 100644 users/ericgebhart/oled/oled_cartes.c delete mode 100644 users/ericgebhart/oled/oled_layers.c delete mode 100755 users/ericgebhart/oled/oled_stuff.c delete mode 100755 users/ericgebhart/oled/oled_stuff.h delete mode 100755 users/ericgebhart/process_records.c delete mode 100755 users/ericgebhart/readme.md delete mode 100755 users/ericgebhart/rules.mk delete mode 100644 users/gary/gary.c delete mode 100644 users/gary/gary.h delete mode 100644 users/gary/readme.md delete mode 100644 users/gary/rules.mk delete mode 100644 users/gourdo1/autocorrect/autocorrection.c delete mode 100644 users/gourdo1/autocorrect/autocorrection.h delete mode 100644 users/gourdo1/autocorrect/autocorrection_data.h delete mode 100644 users/gourdo1/autocorrect/autocorrection_data.h (large) delete mode 100644 users/gourdo1/autocorrect/autocorrection_data.h (small) delete mode 100644 users/gourdo1/autocorrect/autocorrection_dict.txt delete mode 100644 users/gourdo1/autocorrect/make_autocorrection_data.py delete mode 100644 users/gourdo1/custom_double_taps.h delete mode 100644 users/gourdo1/gourdo1.c delete mode 100644 users/gourdo1/gourdo1.h delete mode 100644 users/gourdo1/gourdo1_encoder.c delete mode 100644 users/gourdo1/rules.mk delete mode 100644 users/greatwizard/config.h delete mode 100644 users/greatwizard/fn.h delete mode 100644 users/greatwizard/game.c delete mode 100644 users/greatwizard/game.h delete mode 100644 users/greatwizard/git.c delete mode 100644 users/greatwizard/git.h delete mode 100644 users/greatwizard/greatwizard.c delete mode 100644 users/greatwizard/greatwizard.h delete mode 100644 users/greatwizard/keymap_helpers.h delete mode 100644 users/greatwizard/ortho.c delete mode 100644 users/greatwizard/ortho.h delete mode 100644 users/greatwizard/programmer.c delete mode 100644 users/greatwizard/programmer.h delete mode 100644 users/greatwizard/readme.md delete mode 100644 users/greatwizard/rules.mk delete mode 100644 users/greatwizard/tap_dances.c delete mode 100644 users/greatwizard/tap_dances.h delete mode 100644 users/greatwizard/underglow.c delete mode 100644 users/greatwizard/underglow.h delete mode 100644 users/haervig/config.h delete mode 100644 users/haervig/haervig.c delete mode 100644 users/haervig/haervig.h delete mode 100644 users/haervig/readme.md delete mode 100644 users/haervig/rules.mk delete mode 100644 users/horrortroll/config.h delete mode 100644 users/horrortroll/horrortroll.c delete mode 100644 users/horrortroll/horrortroll.h delete mode 100644 users/horrortroll/led/cool_diagonal.c delete mode 100644 users/horrortroll/led/custom_gradient.c delete mode 100644 users/horrortroll/led/flower_blooming/flower_blooming.c delete mode 100644 users/horrortroll/led/flower_blooming/flower_blooming.h delete mode 100644 users/horrortroll/led/random_breath_rainbow.c delete mode 100644 users/horrortroll/readme.md delete mode 100644 users/horrortroll/rgb_matrix_user.inc delete mode 100644 users/horrortroll/rules.mk delete mode 100644 users/hvp/config.h delete mode 100644 users/hvp/hvp.c delete mode 100644 users/hvp/hvp.h delete mode 100644 users/hvp/per_key.c delete mode 100644 users/hvp/readme.md delete mode 100644 users/hvp/rules.mk delete mode 100644 users/hvp/tap_dances.c delete mode 100644 users/hvp/tap_dances.h delete mode 100644 users/ibnuda/abstraction.c delete mode 100644 users/ibnuda/abstraction.h delete mode 100644 users/ibnuda/combo.c delete mode 100644 users/ibnuda/combo.h delete mode 100644 users/ibnuda/config.h delete mode 100644 users/ibnuda/ibnuda.c delete mode 100644 users/ibnuda/ibnuda.h delete mode 100644 users/ibnuda/readme.md delete mode 100644 users/ibnuda/rules.mk delete mode 100644 users/ibnuda/wrapper.h delete mode 100644 users/imchipwood/imchipwood.c delete mode 100644 users/imchipwood/imchipwood.h delete mode 100644 users/imchipwood/rules.mk delete mode 100755 users/ishtob/config.h delete mode 100644 users/ishtob/ishtob.c delete mode 100644 users/ishtob/ishtob.h delete mode 100644 users/ishtob/readme.md delete mode 100755 users/ishtob/rules.mk delete mode 100644 users/issmirnov/config.h delete mode 100644 users/issmirnov/issmirnov.c delete mode 100644 users/issmirnov/issmirnov.h delete mode 100644 users/issmirnov/rows.h delete mode 100644 users/issmirnov/rules.mk delete mode 100644 users/issmirnov/tap_tog.c delete mode 100644 users/issmirnov/tap_tog.h delete mode 100644 users/jackhumbert/jackhumbert.c delete mode 100644 users/jackhumbert/jackhumbert.h delete mode 100644 users/jackhumbert/readme.md delete mode 100644 users/jackhumbert/rules.mk delete mode 100644 users/jarred/config.h delete mode 100644 users/jarred/jarred.c delete mode 100644 users/jarred/jarred.h delete mode 100644 users/jarred/readme.md delete mode 100644 users/jarred/rules.mk delete mode 100644 users/jdelkins/.gitignore delete mode 100644 users/jdelkins/jdelkins.c delete mode 100644 users/jdelkins/jdelkins.h delete mode 100644 users/jdelkins/rules.mk delete mode 100644 users/jjerrell/.gitignore delete mode 100644 users/jjerrell/config.h delete mode 100644 users/jjerrell/jjerrell.c delete mode 100644 users/jjerrell/jjerrell.h delete mode 100644 users/jjerrell/process_records.c delete mode 100644 users/jjerrell/process_records.h delete mode 100644 users/jjerrell/readme.md delete mode 100644 users/jjerrell/rules.mk delete mode 100644 users/jjerrell/wrappers.h delete mode 100644 users/jonavin/config.h delete mode 100644 users/jonavin/jonavin.c delete mode 100644 users/jonavin/jonavin.h delete mode 100644 users/jonavin/jonavin_encoder.c delete mode 100644 users/jonavin/readme.md delete mode 100644 users/jonavin/rules.mk delete mode 100644 users/kageurufu/config.h delete mode 100644 users/kageurufu/custom_rgb.c delete mode 100644 users/kageurufu/custom_rgb.h delete mode 100644 users/kageurufu/kageurufu.c delete mode 100644 users/kageurufu/kageurufu.h delete mode 100644 users/kageurufu/layouts.h delete mode 100644 users/kageurufu/process_records.c delete mode 100644 users/kageurufu/process_records.h delete mode 100644 users/kageurufu/readme.md delete mode 100644 users/kageurufu/rules.mk delete mode 100644 users/klackygears/klackygears.c delete mode 100644 users/klackygears/klackygears.h delete mode 100644 users/klackygears/readme.md delete mode 100644 users/klackygears/rules.mk delete mode 100644 users/klackygears/tap_dances.c delete mode 100644 users/klackygears/tap_dances.h delete mode 100644 users/klackygears/wrappers.h delete mode 100644 users/konstantin/config.h delete mode 100644 users/konstantin/konstantin.c delete mode 100644 users/konstantin/konstantin.h delete mode 100644 users/konstantin/post_config.h delete mode 100644 users/konstantin/rgb.c delete mode 100644 users/konstantin/rgb.h delete mode 100644 users/konstantin/rules.mk delete mode 100644 users/konstantin/tap_dance.c delete mode 100644 users/konstantin/tap_dance.h delete mode 100644 users/konstantin/unicode.c delete mode 100644 users/konstantin/unicode.h delete mode 100644 users/kuatsure/kuatsure.c delete mode 100644 users/kuatsure/kuatsure.h delete mode 100644 users/kuatsure/readme.md delete mode 100644 users/kuatsure/rules.mk delete mode 100644 users/kuchosauronad0/.gitignore delete mode 100644 users/kuchosauronad0/combo.c delete mode 100644 users/kuchosauronad0/combo.h delete mode 100644 users/kuchosauronad0/config.h delete mode 100644 users/kuchosauronad0/encoder.c delete mode 100644 users/kuchosauronad0/encoder.h delete mode 100644 users/kuchosauronad0/kuchosauronad0.c delete mode 100644 users/kuchosauronad0/kuchosauronad0.h delete mode 100644 users/kuchosauronad0/leader_user.c delete mode 100644 users/kuchosauronad0/leader_user.h delete mode 100644 users/kuchosauronad0/process_records.c delete mode 100644 users/kuchosauronad0/process_records.h delete mode 100644 users/kuchosauronad0/readme.md delete mode 100644 users/kuchosauronad0/rgblight_user.c delete mode 100644 users/kuchosauronad0/rgblight_user.h delete mode 100644 users/kuchosauronad0/rules.mk delete mode 100644 users/kuchosauronad0/tap_dances.c delete mode 100644 users/kuchosauronad0/tap_dances.h delete mode 100644 users/kuchosauronad0/template.c delete mode 100644 users/kuchosauronad0/template.h delete mode 100644 users/kuchosauronad0/unicode.c delete mode 100644 users/kuchosauronad0/unicode.h delete mode 100644 users/kuchosauronad0/wrappers.h delete mode 100644 users/losinggeneration/README.md delete mode 100644 users/losinggeneration/losinggeneration-common.h delete mode 100644 users/losinggeneration/losinggeneration-config.h delete mode 100644 users/losinggeneration/losinggeneration-keymap.h delete mode 100644 users/losinggeneration/rules.mk delete mode 100644 users/manna-harbour_miryoku/config.h delete mode 100644 users/manna-harbour_miryoku/custom_config.h delete mode 100644 users/manna-harbour_miryoku/custom_rules.mk delete mode 100644 users/manna-harbour_miryoku/manna-harbour_miryoku.c delete mode 100644 users/manna-harbour_miryoku/manna-harbour_miryoku.h delete mode 100644 users/manna-harbour_miryoku/miryoku_babel/miryoku_layer_alternatives.h delete mode 100644 users/manna-harbour_miryoku/miryoku_babel/miryoku_layer_list.h delete mode 100644 users/manna-harbour_miryoku/miryoku_babel/miryoku_layer_selection.h delete mode 100644 users/manna-harbour_miryoku/post_rules.mk delete mode 100644 users/manna-harbour_miryoku/readme.org delete mode 100644 users/manna-harbour_miryoku/rules.mk delete mode 100644 users/mattly/config.h delete mode 100644 users/mattly/mattly.c delete mode 100644 users/mattly/mattly.h delete mode 100644 users/mattly/readme.md delete mode 100644 users/mattly/rules.mk delete mode 100644 users/mechmerlin/changelog.md delete mode 100644 users/mechmerlin/config.h delete mode 100644 users/mechmerlin/mechmerlin.c delete mode 100644 users/mechmerlin/mechmerlin.h delete mode 100644 users/mechmerlin/readme.md delete mode 100644 users/mechmerlin/rules.mk delete mode 100644 users/mguterl/config.h delete mode 100644 users/mguterl/mguterl.c delete mode 100644 users/mguterl/mguterl.h delete mode 100644 users/mguterl/readme.md delete mode 100644 users/mguterl/rules.mk delete mode 100644 users/miketronic/config.h delete mode 100644 users/miketronic/miketronic.c delete mode 100644 users/miketronic/miketronic.h delete mode 100644 users/miketronic/process_records.c delete mode 100644 users/miketronic/process_records.h delete mode 100644 users/miketronic/readme.md delete mode 100644 users/miketronic/rules.mk delete mode 100644 users/miketronic/tapdances.c delete mode 100644 users/miketronic/tapdances.h delete mode 100644 users/miketronic/wrappers.h delete mode 100644 users/miles2go/babblePaste.c delete mode 100644 users/miles2go/babblePaste.h delete mode 100644 users/miles2go/babblePaste.md delete mode 100644 users/miles2go/babl_chromeos.c delete mode 100644 users/miles2go/babl_emacs.c delete mode 100644 users/miles2go/babl_kitty.c delete mode 100644 users/miles2go/babl_linux.c delete mode 100644 users/miles2go/babl_mac.c delete mode 100644 users/miles2go/babl_nano.c delete mode 100644 users/miles2go/babl_readmux.c delete mode 100644 users/miles2go/babl_vi.c delete mode 100644 users/miles2go/babl_windows.c delete mode 100644 users/miles2go/config.h delete mode 100644 users/miles2go/keymaps/handwired/ms_sculpt_mobile/config.h delete mode 100644 users/miles2go/keymaps/handwired/ms_sculpt_mobile/keymap.c delete mode 100644 users/miles2go/keymaps/handwired/ms_sculpt_mobile/readme.md delete mode 100644 users/miles2go/keymaps/handwired/ms_sculpt_mobile/rules.mk delete mode 100644 users/miles2go/milestogo.c delete mode 100644 users/miles2go/milestogo.h delete mode 100644 users/miles2go/readme.md delete mode 100644 users/miles2go/rules.mk delete mode 100644 users/mnil/config.h delete mode 100644 users/mnil/mnil.c delete mode 100644 users/mnil/mnil.h delete mode 100644 users/mnil/readme.md delete mode 100644 users/mnil/rules.mk delete mode 100644 users/moults31/gdb.c delete mode 100644 users/moults31/gdb.h delete mode 100644 users/moults31/moults31.c delete mode 100644 users/moults31/moults31.h delete mode 100644 users/moults31/obs.c delete mode 100644 users/moults31/obs.h delete mode 100644 users/moults31/readme.md delete mode 100644 users/moults31/rules.mk delete mode 100644 users/moults31/vscode.c delete mode 100644 users/moults31/vscode.h delete mode 100644 users/mtei/config.h delete mode 100644 users/mtei/cpp_map.h delete mode 100644 users/mtei/debug_config.h delete mode 100644 users/mtei/encoder_update_user.c delete mode 100644 users/mtei/key_blocks.h delete mode 100644 users/mtei/layer_number_util.h delete mode 100644 users/mtei/matrix_output_unselect_delay_ondemand.c delete mode 100644 users/mtei/oled_display.c delete mode 100644 users/mtei/pseudo_sprintf.c delete mode 100644 users/mtei/pseudo_sprintf.h delete mode 100644 users/mtei/rules.mk delete mode 100644 users/mtei/user_featues.mk delete mode 100644 users/mtei/user_options.mk delete mode 100644 users/muppetjones/.clang-format delete mode 100644 users/muppetjones/config.h delete mode 100644 users/muppetjones/features/casemodes.c delete mode 100644 users/muppetjones/features/casemodes.h delete mode 100644 users/muppetjones/features/combos.c delete mode 100644 users/muppetjones/features/combos.h delete mode 100644 users/muppetjones/features/dancelayers.c delete mode 100644 users/muppetjones/features/dancelayers.h delete mode 100644 users/muppetjones/features/etchamouse.c delete mode 100644 users/muppetjones/features/etchamouse.h delete mode 100644 users/muppetjones/features/rgblayers.c delete mode 100644 users/muppetjones/features/rgblayers.h delete mode 100644 users/muppetjones/muppetjones.c delete mode 100644 users/muppetjones/muppetjones.h delete mode 100644 users/muppetjones/readme.md delete mode 100644 users/muppetjones/readme/dancelayers.md delete mode 100644 users/muppetjones/readme/etchamouse.md delete mode 100644 users/muppetjones/readme/rgblayers.md delete mode 100644 users/muppetjones/readme/tapmods.md delete mode 100644 users/muppetjones/readme/wrappers.md delete mode 100644 users/muppetjones/rules.mk delete mode 100644 users/muppetjones/tapmods.h delete mode 100644 users/muppetjones/wrappers.h delete mode 100644 users/mverteuil/.gitignore delete mode 100644 users/mverteuil/mverteuil.c delete mode 100644 users/mverteuil/mverteuil.h delete mode 100644 users/mverteuil/rules.mk delete mode 100644 users/narze/narze.c delete mode 100644 users/narze/narze.h delete mode 100644 users/narze/readme.md delete mode 100644 users/narze/rules.mk delete mode 100644 users/narze/superduper.c delete mode 100644 users/narze/superduper.h delete mode 100644 users/nchristus/nchristus.c delete mode 100644 users/nchristus/nchristus.h delete mode 100644 users/nchristus/rules.mk delete mode 100644 users/ninjonas/.gitignore delete mode 100644 users/ninjonas/README.md delete mode 100644 users/ninjonas/combos.c delete mode 100644 users/ninjonas/config.h delete mode 100644 users/ninjonas/encoder.c delete mode 100644 users/ninjonas/ninjonas.c delete mode 100644 users/ninjonas/ninjonas.h delete mode 100644 users/ninjonas/oled.c delete mode 100644 users/ninjonas/process_records.c delete mode 100644 users/ninjonas/process_records.h delete mode 100644 users/ninjonas/rules.mk delete mode 100644 users/ninjonas/tap_dances.c delete mode 100644 users/ninjonas/tap_dances.h delete mode 100644 users/noroadsleft/noroadsleft.c delete mode 100644 users/noroadsleft/noroadsleft.h delete mode 100644 users/noroadsleft/readme.md delete mode 100644 users/noroadsleft/rules.mk delete mode 100644 users/not-quite-neo/nqn-basic-layout.h delete mode 100644 users/not-quite-neo/nqn-common.h delete mode 100644 users/not-quite-neo/nqn-keys-on-quertz-de-latin1.h delete mode 100644 users/not-quite-neo/readme.md delete mode 100644 users/nstickney/config.h delete mode 100644 users/nstickney/nstickney.c delete mode 100644 users/nstickney/nstickney.h delete mode 100644 users/nstickney/readme.md delete mode 100644 users/nstickney/rules.mk delete mode 100644 users/nstickney/unicodemap.h delete mode 100644 users/ollyhayes/ollyhayes.c delete mode 100644 users/ollyhayes/ollyhayes.h delete mode 100644 users/ollyhayes/rules.mk delete mode 100644 users/pcewing/README.md delete mode 100644 users/pcewing/key_repeater.c delete mode 100644 users/pcewing/key_repeater.h delete mode 100644 users/pcewing/rules.mk delete mode 100644 users/pdl/pdl.c delete mode 100644 users/pdl/pdl.h delete mode 100644 users/pdl/rules.mk delete mode 100644 users/peej/layout.h delete mode 100644 users/peej/peej.c delete mode 100644 users/peej/peej.h delete mode 100644 users/peej/rules.mk delete mode 100644 users/peterfalken/config.h delete mode 100644 users/peterfalken/peterfalken.c delete mode 100644 users/peterfalken/peterfalken.h delete mode 100644 users/peterfalken/readme.md delete mode 100644 users/peterfalken/rules.mk delete mode 100644 users/pvinis/config.h delete mode 100644 users/pvinis/pvinis.c delete mode 100644 users/pvinis/pvinis.h delete mode 100644 users/pvinis/rules.mk delete mode 100644 users/riblee/readme.md delete mode 100644 users/riblee/riblee.c delete mode 100644 users/riblee/riblee.h delete mode 100644 users/riblee/rules.mk delete mode 100644 users/ridingqwerty/config.h delete mode 100644 users/ridingqwerty/dict.h delete mode 100644 users/ridingqwerty/process_records.c delete mode 100644 users/ridingqwerty/process_records.h delete mode 100644 users/ridingqwerty/ridingqwerty.c delete mode 100644 users/ridingqwerty/ridingqwerty.h delete mode 100644 users/ridingqwerty/rules.mk delete mode 100644 users/ridingqwerty/tapdances.c delete mode 100644 users/ridingqwerty/tapdances.h delete mode 100644 users/ridingqwerty/unicode.c delete mode 100644 users/ridingqwerty/unicode.h delete mode 100644 users/ridingqwerty/wrappers.h delete mode 100644 users/rishka/rishka.c delete mode 100644 users/rishka/rishka.h delete mode 100644 users/rishka/rules.mk delete mode 100644 users/rmeli/.gitignore delete mode 100644 users/rmeli/config.h delete mode 100644 users/rmeli/keyrecords/tap_dances.c delete mode 100644 users/rmeli/keyrecords/tap_dances.h delete mode 100644 users/rmeli/keyrecords/unicode.h delete mode 100644 users/rmeli/keyrecords/wrappers.h delete mode 100644 users/rmeli/oled/oled.c delete mode 100644 users/rmeli/oled/oled.h delete mode 100644 users/rmeli/readme.md delete mode 100644 users/rmeli/rmeli.h delete mode 100644 users/rmeli/rules.mk delete mode 100644 users/rmw/encoder_functions.c delete mode 100644 users/rmw/encoder_functions.h delete mode 100644 users/rmw/rmw.c delete mode 100644 users/rmw/rmw.h delete mode 100644 users/rmw/rules.mk delete mode 100644 users/rmw/tapdances.c delete mode 100644 users/rmw/tapdances.h delete mode 100644 users/romus/README.md delete mode 100644 users/romus/config.h delete mode 100644 users/romus/romus.c delete mode 100644 users/romus/romus.h delete mode 100644 users/romus/rules.mk delete mode 100644 users/rossman360/readme.md delete mode 100644 users/rossman360/rossman360.c delete mode 100644 users/rossman360/rossman360.h delete mode 100644 users/rossman360/rules.mk delete mode 100644 users/rs/karabiner.json delete mode 100644 users/rs/readme.md delete mode 100644 users/rs/rs.c delete mode 100644 users/rs/rs.h delete mode 100644 users/rs/rules.mk delete mode 100644 users/rupa/config.h delete mode 100644 users/rupa/process_records.c delete mode 100644 users/rupa/process_records.h delete mode 100644 users/rupa/readme.md delete mode 100644 users/rupa/rules.mk delete mode 100644 users/rupa/rupa.c delete mode 100644 users/rupa/rupa.h delete mode 100644 users/rupa/unicode.c delete mode 100644 users/rupa/unicode.h delete mode 100644 users/rupa/wrappers.h delete mode 100644 users/rverst/config.h delete mode 100644 users/rverst/readme.md delete mode 100644 users/rverst/rules.mk delete mode 100644 users/rverst/rverst.c delete mode 100644 users/rverst/rverst.h delete mode 100644 users/rverst/unicode.h delete mode 100644 users/scheiklp/koy_keys_on_quertz_de_latin1.h delete mode 100644 users/scotto/config.h delete mode 100644 users/scotto/readme.md delete mode 100644 users/scotto/rules.mk delete mode 100644 users/scotto/scotto.c delete mode 100644 users/scotto/scotto.h delete mode 100644 users/scotto/tap_dance.c delete mode 100644 users/scotto/tap_dance.h delete mode 100644 users/sethBarberee/config.h delete mode 100644 users/sethBarberee/readme.md delete mode 100644 users/sethBarberee/rgb_light.c delete mode 100644 users/sethBarberee/rgb_light.h delete mode 100644 users/sethBarberee/rules.mk delete mode 100644 users/sethBarberee/sethBarberee.c delete mode 100644 users/sethBarberee/sethBarberee.h delete mode 100644 users/sethBarberee/tap_dance.c delete mode 100644 users/sethBarberee/tap_dance.h delete mode 100644 users/sethBarberee/wrappers.h delete mode 100644 users/sigma/config.h delete mode 100644 users/sigma/rules.mk delete mode 100644 users/sigma/sigma.c delete mode 100644 users/sigma/sigma.h delete mode 100644 users/sigul/.gitignore delete mode 100644 users/sigul/README.md delete mode 100644 users/sigul/config.h delete mode 100644 users/sigul/rules.mk delete mode 100644 users/sigul/sigul.c delete mode 100644 users/sigul/sigul.h delete mode 100644 users/snowe/luna.c delete mode 100644 users/snowe/luna.h delete mode 100644 users/snowe/ocean_dream.c delete mode 100644 users/snowe/ocean_dream.h delete mode 100644 users/snowe/oled_setup.c delete mode 100644 users/snowe/oled_setup.h delete mode 100644 users/snowe/readme.md delete mode 100644 users/snowe/readme_ocean_dream.md delete mode 100644 users/snowe/rules.mk delete mode 100644 users/snowe/snowe.h delete mode 100644 users/snowe/wrappers.h delete mode 100644 users/spacebarracecar/config.h delete mode 100644 users/spacebarracecar/readme.md delete mode 100644 users/spacebarracecar/rules.mk delete mode 100644 users/spacebarracecar/spacebarracecar.c delete mode 100644 users/spacebarracecar/spacebarracecar.h delete mode 100644 users/spidey3/config.h delete mode 100644 users/spidey3/init.c delete mode 100644 users/spidey3/layer_rgb.c delete mode 100644 users/spidey3/readme.md delete mode 100644 users/spidey3/rules.mk delete mode 100644 users/spidey3/spidey3.c delete mode 100644 users/spidey3/spidey3.h delete mode 100644 users/spidey3/spidey3_unicode.c delete mode 100644 users/spidey3/spidey3_unicode.h delete mode 100644 users/spotpuff/rules.mk delete mode 100644 users/stanrc85/config.h delete mode 100644 users/stanrc85/indicator_layers_sneakbox.c delete mode 100644 users/stanrc85/layer_rgb.c delete mode 100644 users/stanrc85/readme.md delete mode 100644 users/stanrc85/rgb_layers.c delete mode 100644 users/stanrc85/rgb_timeout.c delete mode 100644 users/stanrc85/rgblight_layers.c delete mode 100644 users/stanrc85/rgblight_layers_osa.c delete mode 100644 users/stanrc85/rules.mk delete mode 100644 users/stanrc85/stanrc85.c delete mode 100644 users/stanrc85/stanrc85.h delete mode 100644 users/stanrc85/startup_fanfare.c delete mode 100644 users/talljoe/config.h delete mode 100644 users/talljoe/macros.c delete mode 100644 users/talljoe/macros.h delete mode 100644 users/talljoe/readme.md delete mode 100644 users/talljoe/rules.mk delete mode 100644 users/talljoe/talljoe.c delete mode 100644 users/talljoe/talljoe.h delete mode 100644 users/talljoe/tapdance/actions/td.function.c delete mode 100644 users/talljoe/tapdance/actions/td.grave.c delete mode 100644 users/talljoe/tapdance/actions/td.lock.c delete mode 100644 users/talljoe/tapdance/actions/td.semicolon.c delete mode 100644 users/talljoe/tapdance/tapdance.h delete mode 100644 users/talljoe/tapdance/tapdance_actions.c delete mode 100644 users/talljoe/tapdance/td_setup.c delete mode 100644 users/talljoe/tapdance/td_setup.h delete mode 100644 users/toinux/keymap_qwerty_fr.h delete mode 100644 users/tominabox1/.gitignore delete mode 100644 users/tominabox1/config.h delete mode 100644 users/tominabox1/dimple_rgb.c delete mode 100644 users/tominabox1/doug.c delete mode 100644 users/tominabox1/readme.md delete mode 100644 users/tominabox1/rules.mk delete mode 100644 users/tominabox1/tominabox1.c delete mode 100644 users/tominabox1/tominabox1.h delete mode 100644 users/tominabox1/wrappers.h delete mode 100644 users/turbomech/backupturbomech.c delete mode 100644 users/turbomech/turbomech.c delete mode 100644 users/turbomech/turbomech.h delete mode 100644 users/twschum/config.h delete mode 100644 users/twschum/readme.md delete mode 100644 users/twschum/rules.mk delete mode 100644 users/twschum/twschum.c delete mode 100644 users/twschum/twschum.h delete mode 100644 users/twschum/xtonhasvim.c delete mode 100644 users/twschum/xtonhasvim.h delete mode 100644 users/uqs/config.h delete mode 100644 users/uqs/rules.mk delete mode 100644 users/uqs/uqs.c delete mode 100644 users/uqs/uqs.h delete mode 100644 users/vitoni/readme.adoc delete mode 100644 users/vitoni/rgb_matrix_effects.c delete mode 100644 users/vitoni/rgb_matrix_effects.h delete mode 100644 users/vitoni/rules.mk delete mode 100644 users/vitoni/utils.c delete mode 100644 users/vitoni/utils.h delete mode 100644 users/vitoni/vitoni.c delete mode 100644 users/vitoni/vitoni.h delete mode 100644 users/vnmm/config.h delete mode 100644 users/vnmm/keymap_user.h delete mode 100644 users/vnmm/readme.md delete mode 100644 users/vnmm/rgb_matrix_user.c delete mode 100644 users/vnmm/rgb_matrix_user.h delete mode 100644 users/vnmm/rules.mk delete mode 100644 users/vnmm/vnmm.c delete mode 100644 users/vnmm/vnmm.h delete mode 100644 users/vosechu/config.h delete mode 100644 users/vosechu/readme.md delete mode 100644 users/vosechu/rules.mk delete mode 100644 users/vosechu/vosechu.c delete mode 100644 users/vosechu/vosechu.h delete mode 100644 users/wanleg/config.h delete mode 100644 users/wanleg/readme.md delete mode 100644 users/wanleg/rules.mk delete mode 100644 users/wanleg/tapdances.c delete mode 100644 users/wanleg/wanleg.c delete mode 100644 users/wanleg/wanleg.h delete mode 100644 users/xtonhasvim/fancylighting.c delete mode 100644 users/xtonhasvim/fancylighting.h delete mode 100644 users/xtonhasvim/readme.md delete mode 100644 users/xtonhasvim/rules.mk delete mode 100644 users/xtonhasvim/xtonhasvim.c delete mode 100644 users/xtonhasvim/xtonhasvim.h delete mode 100644 users/xulkal/config.h delete mode 100644 users/xulkal/custom_encoder.c delete mode 100644 users/xulkal/custom_encoder.h delete mode 100644 users/xulkal/custom_keycodes.h delete mode 100644 users/xulkal/custom_oled.c delete mode 100644 users/xulkal/custom_oled.h delete mode 100644 users/xulkal/custom_rgb.c delete mode 100644 users/xulkal/custom_rgb.h delete mode 100644 users/xulkal/custom_tap_dance.c delete mode 100644 users/xulkal/custom_tap_dance.h delete mode 100644 users/xulkal/layouts.h delete mode 100644 users/xulkal/process_records.c delete mode 100644 users/xulkal/process_records.h delete mode 100644 users/xulkal/rules.mk delete mode 100644 users/xulkal/xulkal.c delete mode 100644 users/xulkal/xulkal.h delete mode 100644 users/yanfali/config.h delete mode 100644 users/yanfali/rules.mk delete mode 100644 users/yet-another-developer/.gitignore delete mode 100644 users/yet-another-developer/README.md delete mode 100644 users/yet-another-developer/combo.c delete mode 100644 users/yet-another-developer/combo.h delete mode 100644 users/yet-another-developer/config.h delete mode 100644 users/yet-another-developer/leader_user.c delete mode 100644 users/yet-another-developer/leader_user.h delete mode 100644 users/yet-another-developer/process_records.c delete mode 100644 users/yet-another-developer/process_records.h delete mode 100644 users/yet-another-developer/rules.mk delete mode 100644 users/yet-another-developer/tap_dances.c delete mode 100644 users/yet-another-developer/tap_dances.h delete mode 100644 users/yet-another-developer/unicode.c delete mode 100644 users/yet-another-developer/unicode.h delete mode 100644 users/yet-another-developer/wrappers.h delete mode 100644 users/yet-another-developer/yet-another-developer.c delete mode 100644 users/yet-another-developer/yet-another-developer.h delete mode 100644 users/zer09/config.h delete mode 100644 users/zer09/lights.c delete mode 100644 users/zer09/lights.h delete mode 100644 users/zer09/rules.mk delete mode 100644 users/zer09/tap_dance.c delete mode 100644 users/zer09/tap_dance.h delete mode 100644 users/zer09/zer09.c delete mode 100644 users/zer09/zer09.h delete mode 100644 users/zigotica/combos.c delete mode 100644 users/zigotica/combos.h delete mode 100644 users/zigotica/rows.h delete mode 100644 users/zigotica/rules.mk delete mode 100644 users/zigotica/tapdances.c delete mode 100644 users/zigotica/tapdances.h delete mode 100644 users/zigotica/zigotica.c delete mode 100644 users/zigotica/zigotica.h delete mode 100644 users/zyber/config.h delete mode 100644 users/zyber/rules.mk delete mode 100644 users/zyber/zyber.c delete mode 100644 users/zyber/zyber.h (limited to 'users') diff --git a/users/333fred/333fred.c b/users/333fred/333fred.c deleted file mode 100644 index e75a862a3e..0000000000 --- a/users/333fred/333fred.c +++ /dev/null @@ -1,144 +0,0 @@ -/* - Copyright (c) 2020 Fred Silberberg - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ - -#include "333fred.h" -#include "quantum.h" -#include "action.h" - -typedef enum { - SINGLE_TAP, SINGLE_HOLD, DOUBLE -} tap_dance_state_enum; - -static tap_dance_state_enum tap_dance_state; -static bool tap_dance_active = false; - -void tap_dance_sym_vim_finished(tap_dance_state_t *state, void *user_data) { - // Determine the current state - if (state->count == 1) { - if (state->interrupted || state->pressed == 0) tap_dance_state = SINGLE_TAP; - else tap_dance_state = SINGLE_HOLD; - } else { - // Handle any number of other taps as a VIM movement hold - tap_dance_state = DOUBLE; - } - - switch (tap_dance_state) { - case SINGLE_TAP: - if (tap_dance_active) { - reset_oneshot_layer(); - tap_dance_active = false; - } else { - set_oneshot_layer(SYMB, ONESHOT_START); - tap_dance_active = true; - } - break; - case SINGLE_HOLD: - layer_on(SYMB); - break; - case DOUBLE: - layer_on(VIM); - break; - } -} - -void tap_dance_sym_vim_reset(tap_dance_state_t *state, void *user_data) { - switch(tap_dance_state) { - case SINGLE_TAP: - clear_oneshot_layer_state(ONESHOT_PRESSED); - break; - case SINGLE_HOLD: - layer_off(SYMB); - break; - case DOUBLE: - layer_off(VIM); - break; - } -} - -void tap_dance_copy_paste_finished(tap_dance_state_t *state, void *user_data) { - bool is_paste = state->count == 2; - // If either the one-shot shift is set, or if shift is being held, count as shift being held. - // We'll clear the one-shot shift if it was held - uint8_t one_shot_mods = get_oneshot_mods(); - bool is_shift = false; - - if (get_mods() & MOD_MASK_SHIFT) { - is_shift = true; - } else if (one_shot_mods & MOD_MASK_SHIFT) { - set_oneshot_mods(one_shot_mods & ~MOD_MASK_SHIFT); - is_shift = true; - } - - if (is_paste) { - if (is_shift) { - SEND_STRING(SS_LSFT(SS_TAP(X_INSERT))); - } else { - SEND_STRING(SS_LCTL("v")); - } - } else { - if (is_shift) { - SEND_STRING(SS_LCTL(SS_TAP(X_INSERT))); - } else { - SEND_STRING(SS_LCTL("c")); - } - } -} - -tap_dance_action_t tap_dance_actions[] = { - [TD_SYM_VIM] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, tap_dance_sym_vim_finished, tap_dance_sym_vim_reset), - [TD_COPY_PASTE] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, tap_dance_copy_paste_finished, NULL) -}; - -void tap_dance_process_keycode(uint16_t keycode) { - if (tap_dance_state == SINGLE_TAP && keycode != TD(TD_SYM_VIM)) { - tap_dance_active = false; - } -} - -__attribute__ ((weak)) -void layer_state_set_rgb(layer_state_t state) {} - -layer_state_t layer_state_set_user(layer_state_t state) { - layer_state_set_rgb(state); - return state; -} - -bool try_handle_macro(uint16_t keycode, keyrecord_t *record) { - switch (keycode) - { - case DLEFT: - if (record->event.pressed) - SEND_STRING(SS_LGUI(SS_LALT(SS_TAP(X_LEFT)))); - return true; - case DRIGHT: - if (record->event.pressed) - SEND_STRING(SS_LGUI(SS_LALT(SS_TAP(X_RIGHT)))); - return true; - case PSCREEN_APP: - if (record->event.pressed) - SEND_STRING(SS_LALT(SS_TAP(X_PRINT_SCREEN))); - return true; - - default: - return false; - } -} diff --git a/users/333fred/333fred.h b/users/333fred/333fred.h deleted file mode 100644 index e8473e7ce1..0000000000 --- a/users/333fred/333fred.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - Copyright (c) 2020 Fred Silberberg - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ - -#pragma once - -#include "quantum.h" -#include "layout_macros.h" - -#define BASE 0 -#define CODEFLOW 1 -#define SYMB 2 -#define MDIA 3 // media keys -#define VIM 4 -#define GAME 5 -#define GAME_ARROW 6 - -// Tap dance config shared between my keyboards -enum tap_dance_declarations { - TD_SYM_VIM = 0, - TD_COPY_PASTE, -}; - -enum custom_keys { - DLEFT = SAFE_RANGE, - DRIGHT, - PSCREEN_APP -}; - -void tap_dance_sym_vim_finished(tap_dance_state_t*, void*); -void tap_dance_sym_vim_reset(tap_dance_state_t*, void*); -void tap_dance_process_keycode(uint16_t); -bool try_handle_macro(uint16_t keycode, keyrecord_t *record); diff --git a/users/333fred/config.h b/users/333fred/config.h deleted file mode 100644 index 0bbaa38a99..0000000000 --- a/users/333fred/config.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - Copyright (c) 2020 Fred Silberberg - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ - -#pragma once - -#define PERMISSIVE_HOLD -#define NO_ACTION_MACRO -#undef ONESHOT_TAP_TOGGLE diff --git a/users/333fred/layout_macros.h b/users/333fred/layout_macros.h deleted file mode 100644 index d46a41905e..0000000000 --- a/users/333fred/layout_macros.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - Copyright (c) 2020 Fred Silberberg - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ - -#pragma once - -#define SIX_TRNS _______, _______, _______, _______, _______, _______ -#define FOUR_TRNS _______, _______, _______, _______ - -// Row 5: 6 keys -#define ROW5_LEFT_BASE KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5 -#define ROW5_RGHT_BASE KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS -#define ROW5_LEFT_SYMB _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5 -#define ROW5_RGHT_SYMB KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11 -#define ROW5_LEFT_VIM SIX_TRNS -#define ROW5_RGHT_VIM SIX_TRNS - -// Row 4: 6 keys -#define ROW4_LEFT_BASE KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T -#define ROW4_RGHT_BASE KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS -#define ROW4_LEFT_SYMB _______, KC_EXLM, KC_AT, KC_LPRN, KC_RPRN, KC_PIPE -#define ROW4_RGHT_SYMB KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12 -#define ROW4_LEFT_VIM SIX_TRNS -#define ROW4_RGHT_VIM SIX_TRNS - -// Row 3: 6 keys -#define ROW3_LEFT_BASE CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G -#define ROW3_RGHT_BASE KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT -#define ROW3_LEFT_SYMB _______, KC_HASH, KC_DLR, KC_LCBR, KC_RCBR, KC_GRV -#define ROW3_RGHT_SYMB KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, _______ -#define ROW3_LEFT_VIM _______, DLEFT, DRIGHT, KC_LCTL, KC_LGUI, _______ -#define ROW3_RGHT_VIM KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, _______, _______ - -// Row 2: 6 keys -#define ROW2_LEFT_BASE OSM(MOD_LSFT), CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B -#define ROW2_RGHT_BASE KC_N, KC_M, KC_COMM, KC_DOT, CTL_T(KC_SLSH), OSM(MOD_RSFT) -#define ROW2_LEFT_SYMB _______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD -#define ROW2_RGHT_SYMB KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, _______ -#define ROW2_LEFT_VIM _______, _______, KC_TAB, _______, _______, _______ -#define ROW2_RGHT_VIM SIX_TRNS - -// Row 1: 4 keys -#define ROW1_LEFT_BASE OSM(MOD_LCTL), KC_F4, KC_F5, KC_LALT -#define ROW1_RGHT_BASE KC_DOWN, KC_EQL, KC_RIGHT, KC_RGUI -#define ROW1_LEFT_SYMB _______, _______, _______, _______ -#define ROW1_RGHT_SYMB KC_0, KC_DOT, KC_EQL, _______ -#define ROW1_LEFT_VIM FOUR_TRNS -#define ROW1_RGHT_VIM FOUR_TRNS diff --git a/users/333fred/rgb.c b/users/333fred/rgb.c deleted file mode 100644 index ae21702030..0000000000 --- a/users/333fred/rgb.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - Copyright (c) 2020 Fred Silberberg - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ - -#include "quantum.h" -#include "333fred.h" - -void layer_state_set_rgb(layer_state_t state) { - switch (get_highest_layer(state)) { - case BASE: - // purple - rgblight_sethsv_noeeprom(210, 255, 20); - break; - case SYMB: - // blue - rgblight_sethsv_noeeprom(191, 255, 20); - break; - case VIM: - // green - rgblight_sethsv_noeeprom(85, 255, 20); - break; - case GAME: - // red - rgblight_sethsv_noeeprom(0, 255, 20); - break; - } -} - -void keyboard_post_init_user(void) { - rgblight_enable_noeeprom(); - layer_state_set_rgb(1); // Set layer 0 (bit 1) on -} diff --git a/users/333fred/rules.mk b/users/333fred/rules.mk deleted file mode 100644 index 265a6c18cb..0000000000 --- a/users/333fred/rules.mk +++ /dev/null @@ -1,10 +0,0 @@ -SRC += 333fred.c - -ifeq ($(strip $(RGBLIGHT_ENABLE)), yes) - SRC += rgb.c -endif - -TAP_DANCE_ENABLE=yes -NKRO_ENABLE = yes -PERMISSIVE_HOLD = yes -LTO_ENABLE = yes diff --git a/users/ajp10304/ajp10304.c b/users/ajp10304/ajp10304.c deleted file mode 100644 index b8729b94d7..0000000000 --- a/users/ajp10304/ajp10304.c +++ /dev/null @@ -1,176 +0,0 @@ -/* Copyright 2021 Alan Pocklington - * - * 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 . - */ - -#include "ajp10304.h" - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - - switch (keycode) { - case QWERTY: - if (record->event.pressed) { - set_single_persistent_default_layer(_QWERTY); - } - return false; - case COLEMAK: - if (record->event.pressed) { - set_single_persistent_default_layer(_COLEMAK); - } - case LOWER: - if (record->event.pressed) { - layer_on(_LOWER); - update_tri_layer(_LOWER, _RAISE, _ADJUST); - } else { - layer_off(_LOWER); - update_tri_layer(_LOWER, _RAISE, _ADJUST); - } - return false; - case RAISE: - if (record->event.pressed) { - layer_on(_RAISE); - update_tri_layer(_LOWER, _RAISE, _ADJUST); - } else { - layer_off(_RAISE); - update_tri_layer(_LOWER, _RAISE, _ADJUST); - } - return false; - case MLWR: - if (record->event.pressed) { - layer_on(_LOWER); - layer_on(_MLWR); - update_tri_layer(_LOWER, _RAISE, _ADJUST); - } else { - layer_off(_LOWER); - layer_off(_MLWR); - update_tri_layer(_LOWER, _RAISE, _ADJUST); - } - return false; - case MRSE: - if (record->event.pressed) { - layer_on(_RAISE); - layer_on(_MRSE); - update_tri_layer(_LOWER, _RAISE, _ADJUST); - } else { - layer_off(_RAISE); - layer_off(_MRSE); - update_tri_layer(_LOWER, _RAISE, _ADJUST); - } - return false; - case MFNC: - if (record->event.pressed) { - layer_on(_FUNC); - layer_on(_MFNC); - } else { - layer_off(_FUNC); - layer_off(_MFNC); - } - return false; - case MFNC2: - if (record->event.pressed) { - layer_on(_FUNC2); - layer_on(_MFNC2); - } else { - layer_off(_FUNC2); - layer_off(_MFNC2); - } - return false; - case M_CUSTOM: - if (record->event.pressed) { - SEND_STRING("Custom text here"); - } - break; - case M_WORD_SEL: - if (record->event.pressed) { - register_mods(MOD_LCTL); - tap_code(KC_RGHT); - tap_code16(S(KC_LEFT)); - unregister_mods(MOD_LCTL); - } - break; - case M_WORD_SEL_MAC: - if (record->event.pressed) { - register_mods(MOD_LALT); - tap_code(KC_RGHT); - tap_code16(S(KC_LEFT)); - unregister_mods(MOD_LALT); - } - break; - case M_LINE_SEL: - if (record->event.pressed) { - tap_code(KC_HOME); - tap_code16(S(KC_END)); - } - break; - case M_LINE_SEL_MAC: - if (record->event.pressed) { - tap_code16(C(KC_A)); - tap_code16(C(S(KC_E))); - } - break; - case M_LINE_DEL: - if (record->event.pressed) { - tap_code(KC_HOME); - tap_code16(S(KC_END)); - tap_code(KC_BSPC); - } - break; - case M_LINE_DEL_MAC: - if (record->event.pressed) { - tap_code16(C(KC_A)); - tap_code16(C(S(KC_E))); - tap_code(KC_BSPC); - } - break; - case M_DUP: - if (record->event.pressed) { - tap_code16(C(KC_C)); - tap_code(KC_RGHT); - tap_code16(C(KC_V)); - } - break; - case M_DUP_MAC: - if (record->event.pressed) { - tap_code16(G(KC_C)); - tap_code(KC_RGHT); - tap_code16(G(KC_V)); - } - break; - case M_JOIN: - if (record->event.pressed) { - tap_code(KC_END); - tap_code(KC_DEL); - } - break; - case M_JOIN_MAC: - if (record->event.pressed) { - tap_code16(C(KC_E)); - tap_code(KC_DEL); - } - break; - case M_MODE: - if (record->event.pressed) { - send_string("PC "); - send_string(get_highest_layer(default_layer_state) == _COLEMAK ? "COLEMAK" : "QWERTY"); - } - break; - case M_MODE_MAC: - if (record->event.pressed) { - send_string("OSX "); - send_string(get_highest_layer(default_layer_state) == _COLEMAK ? "COLEMAK" : "QWERTY"); - } - break; - } - return true; -} diff --git a/users/ajp10304/ajp10304.h b/users/ajp10304/ajp10304.h deleted file mode 100644 index 130c841607..0000000000 --- a/users/ajp10304/ajp10304.h +++ /dev/null @@ -1,63 +0,0 @@ -/* Copyright 2021 Alan Pocklington - * - * 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 . - */ - -#include QMK_KEYBOARD_H - -enum ajp10304_layers { - _QWERTY, - _COLEMAK, - _MAC, - _LOWER, - _MLWR, - _RAISE, - _MRSE, - _FUNC, - _MFNC, - _FUNC2, - _MFNC2, - _ADJUST, - _MOUSE, - _NUMPAD -}; - -enum ajp10304_keycodes { - QWERTY = SAFE_RANGE, - COLEMAK, - MAC, - FUNC, - MFNC, - FUNC2, - MFNC2, - LOWER, - MLWR, - RAISE, - MRSE, - MOUSE, - NUMPAD, - M_CUSTOM, - M_WORD_SEL, - M_WORD_SEL_MAC, - M_LINE_SEL, - M_LINE_SEL_MAC, - M_LINE_DEL, - M_LINE_DEL_MAC, - M_DUP, - M_DUP_MAC, - M_JOIN, - M_JOIN_MAC, - M_MODE, - M_MODE_MAC -}; diff --git a/users/ajp10304/readme.md b/users/ajp10304/readme.md deleted file mode 100644 index 0683f42384..0000000000 --- a/users/ajp10304/readme.md +++ /dev/null @@ -1,141 +0,0 @@ -Copyright 2021 Alan Pocklington @ajp10304 - -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 . - -# AJP10304 Custom 40% Layout -# For the Planck, Shark, Quark, JJ40 and Atreus50 - -**Note:** In the tables below where there are two characters on a key, -the second is the output when shift is applied. - -**Note:** The below tables assume a UK layout. - -#### Flashing -Refer to the README.md of the keyboard you want to flash. - -##### Main Qwerty Layer - -* Tab: when held, operates as shift. -* Enter: when held, operates as shift. -* MENU: perform right-click - -| | | | | | | | | | | | | -| ---- |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| ----:| -| Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp | -| Tab | A | S | D | F | G | H | J | K | L | ;: | Enter| -| Shft | Z | X | C | V | B | N | M | ,< | .> | /? | Shft | -| Fn | Ctrl | Alt | GUI |Lower | Bksp |Space |Raise | Shift| MENU | Ctrl | Fn2 | - -##### Main Colemak-DHm Layer - -| | | | | | | | | | | | | -| ---- |:----:| :---:|:---:|:-----:|:----:|:-----:|:-----:|:-----:|:----:|:----:| ----:| -| Esc | Q | W | F | P | B | J | L | U | Y | ;: | Bksp | -| Tab | A | R | S | T | G | M | N | E | I | O | Enter| -| Shft | Z | X | C | D | V | K | H | ,< | .> | /? | Shft | -| Fn | Ctrl | Alt | GUI | Lower | Bksp | Space | Raise | Shift | MENU | Ctrl | Fn2 | - -##### Function Layer -Activated when `fn` held in the above `qwerty` layer. - -| | | | | | | | | | | | | -| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| -| F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | -| 1! | 2" | 3ÂĢ | 4$ | 5% | 6^ | 7& | 8* | 9( | 0) | ~ |INSERT| -| Shift | \| | `ÂŽ | #~ | * | -_ | =+ | \| | [{ | ]} | '@ |Shift | -| Fn | Ctrl | Alt | GUI |Lower | Bksp |Space |Mouse | MENU | Alt | Ctrl | Fn2 | - -##### Lower Layer -Activated when `Lower` is held in the above `qwerty` layer. - -* Numbers are along the top row, their shifted counterparts are on row 2. -* WrdBks: `backspace` with `ctrl` applied. I.e. delete a word. -* WrdDel: `delete` with `ctrl` applied. I.e. forward delete a word. - -| | | | | | | | | | | | | -| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| -| 1! | 2" | 3ÂĢ | 4$ | 5% | 6^ | 7& | 8* | 9( | 0) | DEL | Bksp | -| ! | " | ÂĢ | $ | % | ^ | & | * | ( | ) |WrdDel|WrdBks| -| Shift | \| | `ÂŽ | #~ | '@ | -_ | =+ | #~ | [{ | ]} | '@ |Shift | -| | | | |Lower | Del |Space | | Next | Vol- | Vol+ | Play | - -##### Raise Layer -Activated when `Raise` is held in the above `qwerty` layer. - -* Preferred layer for typing brackets. -* Allows for cursor navigation to be used solely with the right hand. -* WRDSEL: Select the word where the cursor is. -* |< and >|: Apply `ctrl` to `left` and `right` respectively for word jumping. - -| | | | | | | | | | | | | -| :---: |:----:| :---:| :---:| :---:| :---:| :---: | :---:| :---:| :---:| :---: | :---:| -| ` | |WRDSEL| [ | ] | | | PGUP | HOME |PGDOWN| |PRNTSC| -| ` | | | ( | ) | | | HOME | UP | END | |ZOOM +| -| | | | { | } | ||<| LEFT | DOWN |RIGHT |>||ZOOM -| -| Mouse | | | | | Alt | Enter |Raise | | | | | - -##### Lower + Raise -Activated when `Lower` and `Raise` are held together in the above `qwerty` layer. - -* Audio controls in the same position as cursor keys from the `Raise` layer. -* ????: Runs a macro for outputting a text string. Do not use this store passwords. -* Reset: Enter bootloader for flashing firmware to the keyboard. -* CAPS: Toggle caps lock. -* Macro functions: Allows recording of macros. To start recording the macro, press either REC1 or REC2. -To finish the recording, press STOP. To replay the macro, press either PLAY1 or PLAY2. -* MAC: Toggle MAC OS extensions to layers. This allows MLWR to be enabled with LOWER, -MRSE with RAISE, MFNC with FUNC and MFNC2 with FUNC2 respectively. - -| | | | | | | | | | | | | -| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|:-------:| -| ???? | Reset|Qwerty| | | REC1 | REC2 | | | | | Del | -| CAPS | | | | | PLAY1|PLAY2 | Mute | Vol+ | Play | | Qwerty | -| MAC | | | | | STOP1|STOP2 | Prev | Vol- | Next | | Colemak | -| | | | | | | | | DYN | | | | - -##### Function 2 Layer -Activated when `fn` held in the above `qwerty` layer. -* WRDSEL: Select the word where the cursor is. -* LNDEL: Delete the line where the cursor is. -* LNSEL: Select the line where the cursor is. -* DUP: Duplicate the selected text. -* LNJOIN: Join the line where the cursor is with the following line. -* MODE: Print either `PC` or `OSX` depending on what layer mode is active. - -| | | | | | | | | | | | | -| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| -| | |WRDSEL| | | | LNDEL| | | | | | -| | | LNSEL| DUP | | | | |LNJOIN| | | | -| | UNDO | CUT | COPY | PASTE| | | | | | | MODE | -| | | | | | | | | | | | | - -##### Mouse Layer -Activated when `fn` and `raise` held together. - -| | | | | | | | | | | | | -| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| -| ESC | | | | | | W_L | W_UP | BTN3 | W_DWN| W_R | | -| ACC0 | ACC1 | ACC2 | | | | | BTN1 | UP | BTN2 | | | -| ACC0 | ACC1 | ACC2 | | | | | LEFT | DOWN | RIGHT| | | -| | | | | | | | | | | | | - -##### Number Pad Layout -Activated when holding `Esc` key. - -| | | | | | | | | | | | | -| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| -| | | | | | |NMLOCK| 7 | 8 | 9 | / | | -| | | | | | | | 4 | 5 | 6 | * | | -| | | | | | | | 1 | 2 | 3 | + | | -| | | | | | | | 0 | . | , | - | | diff --git a/users/ajp10304/rules.mk b/users/ajp10304/rules.mk deleted file mode 100644 index 5ae7f651e8..0000000000 --- a/users/ajp10304/rules.mk +++ /dev/null @@ -1 +0,0 @@ -SRC += ajp10304.c diff --git a/users/alfrdmalr/alfrdmalr.c b/users/alfrdmalr/alfrdmalr.c deleted file mode 100644 index 7bc04fb55c..0000000000 --- a/users/alfrdmalr/alfrdmalr.c +++ /dev/null @@ -1,91 +0,0 @@ -#include "alfrdmalr.h" -#include "muse.h" - -bool muse_mode = false; -uint8_t last_muse_note = 0; -uint16_t muse_counter = 0; -uint8_t muse_offset = 70; -uint16_t muse_tempo = 50; - -void leader_end_user(void) { - // reset keyboard to bootloader - if (leader_sequence_five_keys(KC_R, KC_E, KC_S, KC_E, KC_T)) { - reset_keyboard(); - } -} - -void matrix_scan_user(void) { -#ifdef AUDIO_ENABLE - if (muse_mode) { - if (muse_counter == 0) { - uint8_t muse_note = muse_offset + SCALE[muse_clock_pulse()]; - if (muse_note != last_muse_note) { - stop_note(compute_freq_for_midi_note(last_muse_note)); - play_note(compute_freq_for_midi_note(muse_note), 0xF); - last_muse_note = muse_note; - } - } - muse_counter = (muse_counter + 1) % muse_tempo; - } else { - if (muse_counter) { - stop_all_notes(); - muse_counter = 0; - } - } -#endif -} - -bool syml_pressed = false; -bool symr_pressed = false; -bool settings_active = false; -bool symbols_active = false; -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch(keycode) { - case SYML: - if (record->event.pressed) { - syml_pressed = true; - } else { - syml_pressed = false; - } - break; - case SYMR: - if (record->event.pressed) { - symr_pressed = true; - } else { - symr_pressed = false; - } - break; - } - - // trilayer-esque behavior. If both SYMBOL layer keys are held, then the - // settings layer is open. If only one is held, SYMBOL is active. - if (syml_pressed && symr_pressed) { - layer_on(_SETTINGS); - settings_active = true; - } else if (syml_pressed || symr_pressed) { - if (settings_active) { - layer_off(_SETTINGS); - settings_active = false; - } - layer_on(_SYMBOL); - symbols_active = true; - } else { - if (symbols_active) { - layer_off(_SYMBOL); - symbols_active = false; - } - } - - return true; -} - -// allow access to the settings layer to turn music mode back off -bool music_mask_user(uint16_t keycode) { - switch (keycode) { - case SYML: - case SYMR: - return false; - default: - return true; - } -} \ No newline at end of file diff --git a/users/alfrdmalr/alfrdmalr.h b/users/alfrdmalr/alfrdmalr.h deleted file mode 100644 index 0709f80b86..0000000000 --- a/users/alfrdmalr/alfrdmalr.h +++ /dev/null @@ -1,286 +0,0 @@ -/* -Copyright 2020 Alfred Maler @alfrdmalr - -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 -MERCHANTIBILITY 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 . -*/ - -#pragma once -#include QMK_KEYBOARD_H - -enum shared_layers { - _QWERTY, - _SYMBOL, - _NAVIGATION, - _NUMPAD, - _SETTINGS -}; - -// KEYCODES ============================================================================ - -// the SYML and SYMR keycodes are just used to activate the symbols layer. -// they're distinct so that I can hit both of them to activate a trilayer -enum alfrdmalr_keycodes { - SYML = SAFE_RANGE, - SYMR -}; - -#define NUMSPACE LT(_NUMPAD, KC_SPC) -#define NAVLAYER MO(_NAVIGATION) -#define SYMLAYER MO(_SYMBOL) -#define SETLAYER MO(_SETTINGS) -#define CTRLSHFT C(KC_LSFT) -#define WINUNDO C(KC_Z) -#define WINCOPY C(KC_C) -#define WINCUT C(KC_X) -#define WINPASTE C(KC_V) - -// convenience keycodes/aliases for base modifiers -// bottom row -#define K41 CTRLSHFT -#define K42 KC_LGUI -#define K43 KC_LALT -// #define K44 SYMLAYER -#define K44 SYML -#define K45 NUMSPACE -#define K46 NUMSPACE -// #define K47 SYMLAYER -#define K47 SYMR -#define K48 KC_RALT -#define K49 SETLAYER -#define K4A MU_TOGG - -// leftmost column -#define K00 KC_ESC -#define K10 KC_TAB -#define K20 NAVLAYER -#define K30 KC_LSFT -#define K40 KC_LCTL - -// rightmost column -#define K0B KC_BSPC -#define K1B KC_BSPC -#define K1B_ALT KC_DEL // for 5x12 boards, keep backspace as the top-left key and add delete key -#define K2B KC_QUOT -#define K3B KC_RSFT -#define K4B QK_LEAD - -// LAYOUT WRAPPERS ===================================================================== -#if (!defined(LAYOUT) && defined(KEYMAP)) -# define LAYOUT KEYMAP -#endif - -#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__) -#define LAYOUT_ortho_4x12_wrapper(...) LAYOUT_ortho_4x12(__VA_ARGS__) -#define LAYOUT_ortho_5x12_wrapper(...) LAYOUT_ortho_5x12(__VA_ARGS__) - -// KEYCODE GROUPS ====================================================================== -// MISC -#define ______TRANS______ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS -#define ____NUMROW_L0____ KC_1, KC_2, KC_3, KC_4, KC_5 -#define ____NUMROW_R0____ KC_6, KC_7, KC_8, KC_9, KC_0 -#define _____BASE_L4_____ K41, K42, K43, K44, K45 -#define _____BASE_R4_____ K46, K47, K48, K49, K4A - -/* QWERTY ============================================================================== - * ,-----------------------------------------------------------------------------------. - * | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | BKSP | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | TAB | Q | W | E | R | T | Y | U | I | O | P | BKSP | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | NAV | A | S | D | F | G | H | J | K | L | ; | " | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | SHFT | Z | X | C | V | B | N | M | , | . | / | SHFT | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | CTRL | C/S | LGUI | LALT | SYMB | NUM/SPACE | SYMB | RALT | SETT | MUTG | LEAD | - * `-----------------------------------------------------------------------------------' - */ - -// LEFT -// - CORE -#define ____QWERTY_L1____ KC_Q, KC_W, KC_E, KC_R, KC_T -#define ____QWERTY_L2____ KC_A, KC_S, KC_D, KC_F, KC_G -#define ____QWERTY_L3____ KC_Z, KC_X, KC_C, KC_V, KC_B - -// RIGHT -// - CORE -#define ____QWERTY_R1____ KC_Y, KC_U, KC_I, KC_O, KC_P -#define ____QWERTY_R2____ KC_H, KC_J, KC_K, KC_L, KC_SCLN -#define ____QWERTY_R3____ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH - -/* NUMPAD ============================================================================== - * ,-----------------------------------------------------------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | TRNS | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | TRNS | F9 | F10 | F11 | F12 | | NLCK | 7 | 8 | 9 | - | TRNS | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | ESC | F5 | F6 | F7 | F8 | SPC | SPC | 4 | 5 | 6 | + | ENTR | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | TRNS | F1 | F2 | F3 | F4 | ALT | | 1 | 2 | 3 | / | TRNS | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | TRNS | TRNS | TRNS | TRNS | TRNS | TRNS | 0 | , | . | * | TRNS | - * `-----------------------------------------------------------------------------------' - */ - -// LEFT -// - CORE -#define ____NUMPAD_L1____ KC_F9, KC_F10, KC_F11, KC_F12, KC_NO -#define ____NUMPAD_L2____ KC_F5, KC_F6, KC_F7, KC_F8, KC_SPC -#define ____NUMPAD_L3____ KC_F1, KC_F2, KC_F3, KC_F4, KC_LALT - -// - MODS -#define ____NUMPAD_L4____ ______TRANS______ -#define K00_NUM KC_TRNS -#define K10_NUM KC_TRNS -#define K20_NUM KC_TRNS -#define K30_NUM KC_TRNS -#define K40_NUM KC_TRNS - -// RIGHT -// - CORE -#define ____NUMPAD_R1____ KC_NUM, KC_7, KC_8, KC_9, KC_MINS -#define ____NUMPAD_R2____ KC_SPC, KC_4, KC_5, KC_6, KC_PLUS -#define ____NUMPAD_R3____ KC_NO, KC_1, KC_2, KC_3, KC_SLSH - -// - MODS -#define ____NUMPAD_R4____ KC_TRNS, KC_0, KC_COMM, KC_DOT, KC_ASTR -#define K0B_NUM KC_TRNS -#define K1B_NUM KC_TRNS -#define K2B_NUM KC_ENT -#define K3B_NUM KC_TRNS -#define K4B_NUM KC_TRNS - -/* SYMBOL ============================================================================== - * ,-----------------------------------------------------------------------------------. - * | TRNS | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | TRNS | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | TRNS | ! | # | { | } | | | ^ | $ | & | | | DEL | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | TRNS | < | > | ( | ) | | | - | + | = | \ | ` | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | TRNS | ~ | @ | [ | ] | | | _ | * | % | / | TRNS | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | TRNS | TRNS | TRNS | TRNS | TRNS | TRNS | TRNS | TRNS | TRNS | TRNS | TRNS | - * `-----------------------------------------------------------------------------------' - */ - -// LEFT -// - CORE -#define ____SYMBOL_L1____ KC_EXCLAIM, KC_HASH, KC_LCBR, KC_RCBR, KC_NO -#define ____SYMBOL_L2____ KC_LABK, KC_RABK, KC_LPRN, KC_RPRN, KC_NO -#define ____SYMBOL_L3____ KC_TILD, KC_AT, KC_LBRC, KC_RBRC, KC_NO - -// - MODS -#define ____SYMBOL_L4____ ______TRANS______ -#define K00_SYM KC_TRNS -#define K10_SYM KC_TRNS -#define K20_SYM KC_TRNS -#define K30_SYM KC_TRNS -#define K40_SYM KC_TRNS - -// RIGHT -// - CORE -#define ____SYMBOL_R1____ KC_NO, KC_CIRC, KC_DOLLAR, KC_AMPR, KC_PIPE -#define ____SYMBOL_R2____ KC_NO, KC_MINS, KC_PLUS, KC_EQL, KC_BSLS -#define ____SYMBOL_R3____ KC_NO, KC_UNDS, KC_ASTR, KC_PERC, KC_SLSH - -// - MODS -#define ____SYMBOL_R4____ ______TRANS______ -#define K0B_SYM KC_TRNS -#define K1B_SYM KC_DEL -#define K2B_SYM KC_GRV -#define K3B_SYM KC_TRNS -#define K4B_SYM KC_TRNS - -/* NAVIGATION ========================================================================== - * ,-----------------------------------------------------------------------------------. - * | TRNS | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | TRNS | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | TRNS | | | SPC | F5 | | INS | HOME | END | TAB | DEL | TRNS | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | TRNS | SHFT | CTRl | ALT | GUI | | LEFT | DOWN | UP | RGHT | | ENTR | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | TRNS | UNDO | CUT | COPY | PSTE | | | PGDO | PGUP | CAPS | | TRNS | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | TRNS | TRNS | TRNS | TRNS | TRNS | ESC | TRNS | TRNS | TRNS | TRNS | TRNS | - * `-----------------------------------------------------------------------------------' - */ - -// LEFT -// - CORE -#define __NAVIGATION_L1__ KC_NO, KC_NO, KC_SPC, KC_F5, KC_NO -#define __NAVIGATION_L2__ KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, KC_NO -#define __NAVIGATION_L3__ WINUNDO, WINCUT, WINCOPY, WINPASTE, KC_NO - -// - MODS -#define __NAVIGATION_L4__ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_ESC -#define K00_NAV KC_TRNS -#define K10_NAV KC_TRNS -#define K20_NAV KC_TRNS -#define K30_NAV KC_TRNS -#define K40_NAV KC_TRNS - -// RIGHT -// - CORE -#define __NAVIGATION_R1__ KC_INS, KC_HOME, KC_END, KC_TAB, KC_DEL -#define __NAVIGATION_R2__ KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_NO -#define __NAVIGATION_R3__ KC_NO, KC_PGDN, KC_PGUP, KC_CAPS, KC_NO - -// - MODS -#define __NAVIGATION_R4__ KC_ESC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS -#define K0B_NAV KC_TRNS -#define K1B_NAV KC_TRNS -#define K2B_NAV KC_ENT -#define K3B_NAV KC_TRNS -#define K4B_NAV KC_TRNS - -/* SETTINGS ============================================================================ - * ,-----------------------------------------------------------------------------------. - * | | | | | | | | | | BRID | BRIU | | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | | | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | | | | | | | MPRV | MPLY | MUTE | MNXT | | | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | ASTG | MUTO | AUOF | AUON | | | | VOLD | VOLU | | | ASTG | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | TRNS | | TRNS | | | | | - * `-----------------------------------------------------------------------------------' - */ -// LEFT -// - CORE -#define ___SETTINGS_L1___ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO -#define ___SETTINGS_L2___ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO -#define ___SETTINGS_L3___ MU_TOGG, AU_OFF, AU_ON, KC_NO, KC_NO - -// - MODS -#define ___SETTINGS_L4___ KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO -#define K00_SET KC_NO -#define K10_SET KC_NO -#define K20_SET KC_NO -#define K30_SET AS_TOGG -#define K40_SET KC_NO - -// RIGHT -// - CORE -#define ___SETTINGS_R1___ KC_NO, KC_NO, KC_NO, KC_BRID, KC_BRIU -#define ___SETTINGS_R2___ KC_MPRV, KC_MPLY, KC_MUTE, KC_MNXT, KC_NO -#define ___SETTINGS_R3___ KC_NO, KC_VOLD, KC_VOLU, KC_NO, KC_NO - -// - MODS -#define ___SETTINGS_R4___ KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO -#define K0B_SET KC_NO -#define K1B_SET KC_NO -#define K2B_SET KC_NO -#define K3B_SET AS_TOGG -#define K4B_SET KC_NO diff --git a/users/alfrdmalr/config.h b/users/alfrdmalr/config.h deleted file mode 100644 index 502d3158bc..0000000000 --- a/users/alfrdmalr/config.h +++ /dev/null @@ -1,7 +0,0 @@ -#pragma once - -#define MUSIC_MASK (keycode != KC_NO) -#define MIDI_BASIC - -#define LEADER_TIMEOUT 400 -#define LEADER_PER_KEY_TIMING diff --git a/users/alfrdmalr/readme.md b/users/alfrdmalr/readme.md deleted file mode 100644 index 9e5f962bbb..0000000000 --- a/users/alfrdmalr/readme.md +++ /dev/null @@ -1,46 +0,0 @@ -# alfrdmalr's userspace -## Overview -The alphanumeric characters and symbols are spread between three main 'typing' layers: REGULAR, NUMPAD, and SYMBOL. - -A fourth layer, NAVIGATION, contains useful modifiers, shortcuts, and navigation functions like the arrow keys and page up/down. This layer also provides access to the `ENTER` and `ESC` keys. - -Finally, a SETTINGS layer can be used to adjust certain keyboard-related options. - -A visual representation of each layer can be found in [alfrdmalr.h](./alfrdmalr.h) - -### Layers - -#### REGULAR -Right now this is just a QWERTY layer, but other layouts (DVORAK, COLEMAK, etc.) could easily be added. The REGULAR layer uses the default modifiers. - -The default modifiers are defined in the style `K00`, where the first digit is the row index and the second digit is the column index. These indices are based on the Preonic's 5x12 grid, and are **not** adjusted for a board of different size; for instance, the upper-leftmost key in the preonic layout is `K00`, whereas the upper-leftmost key on a Planck would be `K10`. - -This convention is designed to work nicely with layout wrappers. - -#### NUMPAD -The NUMPAD layer puts a numpad under the right hand, surrounding the home row position. Several basic arithmetic operators are also provided, as well as comma/decimal symbols, to emulate a traditional numpad. The numlock/capslock keys are accessible from this layer as well, though it should be noted that the actual keycodes being sent by the numpad are NOT the numpad versions of the numbers - this is to prevent the normal numlock behavior from blocking numbers from being sent. - -This layer also holds the first twelve function keys. - -#### SYMBOL -This layer holds all the symbols that are not accessible from the REGULAR layer. There is some redundancy (for instance, `/` exists in both the REGULAR and SYMBOL layer; its position, however, remains consistent) but with the exception of single and double quotes, all symbols are available from this layer. - -#### NAVIGATION -Over time, this layer has become a general utility layer, though its primary function of is still to provide arrow keys under hjkl. The surrounding keys contain similar functionality - for instance, the keys directly below `DOWN` and `UP` are `PAGEDOWN` and `PAGEUP`, respectively. `HOME` and `END` are inverted from this convention, simply because I kept hitting the wrong key when trying to jump to the beginning/end of lines when editing text. - -To the immediate right of the NAVIGATION layer key are the following modifiers: `SHIFT`, `CONTROL`, `ALT`, `GUI`. All modifiers are the "left" variants. The idea is to use the left hand to hold different modifiers as necessary while using the right hand to navigate and format. - -`ESCAPE` is located on the spacebar from this layer, and `DELETE` is placed next to `BACKSPACE`, for convenience when formatting text. There are also four Windows shortcuts for undo, cut, copy, and paste, located in the same position as the relevant keys on the base layer (undo, for example, is in the same place as the `Z` key). Again, this is for convenience when formatting text. - -#### SETTINGS -The SETTINGS layer can be accessed by pressing both SYMBOL layer keys at once. This is functionally the same as a trilayer, though because both keys are activating the same layer it doesn't actually use the trilayer feature. - -This layer contains things like feature toggles, media controls, and other infrequently-used options. - -### Leader Key Sequences -A complete list of leader sequences can be found below. The LEAD key that begins each sequence has been omitted. - - -| Sequence | Function | -| :------: | -------------------------------- | -| R-E-S-E-T | Reset the keyboard into DFU mode | diff --git a/users/alfrdmalr/rules.mk b/users/alfrdmalr/rules.mk deleted file mode 100644 index 1b674c04ec..0000000000 --- a/users/alfrdmalr/rules.mk +++ /dev/null @@ -1,8 +0,0 @@ -SRC += alfrdmalr.c - -ifdef AUDIO_ENABLE - SRC += muse.c -endif - -AUTO_SHIFT_ENABLE = yes -LEADER_ENABLE = yes diff --git a/users/anderson/dmc12.c b/users/anderson/dmc12.c deleted file mode 100644 index 1dd89dce41..0000000000 --- a/users/anderson/dmc12.c +++ /dev/null @@ -1,46 +0,0 @@ -#include "dmc12.h" - -static uint32_t dmc12_color = 0; -static uint16_t dmc12_timer = 0; -static int8_t dmc12_current = 0; -static uint8_t dmc12_direction = 1; - -void dmc12_start(uint32_t color, bool reset) { - dmc12_color = color; - if (reset) { - dmc12_timer = 0; - dmc12_current = 0; - dmc12_direction = 1; - } -} - -void dmc12_process(void) { - if (!dmc12_timer) { - dmc12_timer = timer_read(); - return; - } - float dist_from_center = ((float)abs(dmc12_current - RGBLED_NUM / 2)) / ((float)RGBLED_NUM); - if (timer_elapsed(dmc12_timer) > dist_from_center * LED_INTERVAL) { - dmc12_current += dmc12_direction; - if (dmc12_current == 0 || dmc12_current == RGBLED_NUM - 1) { - dmc12_direction *= -1; - } - dmc12_timer = timer_read(); - for (int i = 0; i < RGBLED_NUM; i++) { - if (i > dmc12_current - LED_RADIUS && i < dmc12_current + LED_RADIUS) { - float intensity = (LED_RADIUS - abs(i - dmc12_current)) / ((float)LED_RADIUS); - if (i != dmc12_current) { - intensity /= 4.0; - } - rgblight_setrgb_at( - ((dmc12_color >> 16) & 0xFF) * intensity, - ((dmc12_color >> 8) & 0xFF) * intensity, - (dmc12_color & 0xFF) * intensity, - i - ); - } else { - rgblight_setrgb_at(0, 0, 0, i); - } - } - } -} diff --git a/users/anderson/dmc12.h b/users/anderson/dmc12.h deleted file mode 100644 index 6b2bf94a51..0000000000 --- a/users/anderson/dmc12.h +++ /dev/null @@ -1,9 +0,0 @@ -// Sexy LED animation. - -#include "quantum.h" - -#define LED_INTERVAL 160 -#define LED_RADIUS 6 - -void dmc12_start(uint32_t color, bool reset); -void dmc12_process(void); diff --git a/users/anderson/seq.c b/users/anderson/seq.c deleted file mode 100644 index 8e6edb35d3..0000000000 --- a/users/anderson/seq.c +++ /dev/null @@ -1,38 +0,0 @@ -#include "seq.h" - -static char buffer[32]; -static uint8_t buffer_size = 0; - -void seq_start(void) { - buffer_size = 0; - SEND_STRING(":"); -} - -bool seq_feed(uint16_t keycode) { - if (keycode == KC_ENTER) { - for (int i = 0; i < buffer_size + 1; i++) { - tap_code(KC_BACKSPACE); - } - for (int i = 0; i < seq_config_size; i++) { - seq_t item = seq_config[i]; - if (strncmp(item.sequence, buffer, buffer_size) == 0) { - send_unicode_string(item.result); - } - } - buffer_size = 0; - return false; - } else if (keycode == KC_BACKSPACE) { - if (buffer_size) { - buffer_size--; - tap_code(keycode); - } - return true; - } else { - if (keycode >= KC_A && keycode <= KC_Z) { - buffer[buffer_size++] = keycode - KC_A + 'a'; - tap_code(keycode); - } - return true; - } -} - diff --git a/users/anderson/seq.h b/users/anderson/seq.h deleted file mode 100644 index 2da4e76154..0000000000 --- a/users/anderson/seq.h +++ /dev/null @@ -1,14 +0,0 @@ -#include "quantum.h" - -#include - -typedef struct seq_t { - const char *sequence; - const char *result; -} seq_t; - -extern seq_t seq_config[]; -extern uint16_t seq_config_size; - -void seq_start(void); -bool seq_feed(uint16_t keycode); diff --git a/users/anderson/smoothled.c b/users/anderson/smoothled.c deleted file mode 100644 index 3af729563c..0000000000 --- a/users/anderson/smoothled.c +++ /dev/null @@ -1,34 +0,0 @@ -#include - -static uint32_t sourceColor = 0x000000; -static uint32_t currentColor = 0x000000; -static uint32_t targetColor = 0x000000; -static int32_t smoothledTimer = -1; - -void smoothled_set(uint32_t color) { - smoothledTimer = timer_read32(); - sourceColor = currentColor; - targetColor = color; -} - -void smoothled_process(void) { - if (smoothledTimer < 0) { - return; - } - int32_t kb = timer_elapsed32(smoothledTimer); - int32_t ka = SMOOTH_DURATION - kb; - if (kb > SMOOTH_DURATION) { - kb = SMOOTH_DURATION; - ka = 0; - smoothledTimer = -1; - } - currentColor = 0; - for (int i = 2; i >= 0; i--) { - uint32_t shift = i * 8; - currentColor |= (ka * ((uint32_t)(sourceColor >> shift) & 0xFF) + kb * ((uint32_t)(targetColor >> shift) & 0xFF)) / SMOOTH_DURATION; - /*currentColor |= ((targetColor >> shift) & 0xFF);*/ - currentColor <<= 8; - } - currentColor >>= 8; - rgblight_setrgb((currentColor >> 16) & 0xFF, (currentColor >> 8) & 0xFF, currentColor & 0xFF); -} diff --git a/users/anderson/smoothled.h b/users/anderson/smoothled.h deleted file mode 100644 index bf4f8c1770..0000000000 --- a/users/anderson/smoothled.h +++ /dev/null @@ -1,6 +0,0 @@ -#include "quantum.h" - -#define SMOOTH_DURATION 160 - -void smoothled_set(uint32_t color); -void smoothled_process(void); diff --git a/users/arkag/arkag.c b/users/arkag/arkag.c deleted file mode 100644 index 7af06acdf1..0000000000 --- a/users/arkag/arkag.c +++ /dev/null @@ -1,456 +0,0 @@ -#include "arkag.h" -#include "eeprom.h" - -/* - Current Layout and Keeb: - https://github.com/arkag/qmk_firmware/blob/master/keyboards/mechmini/v2/keymaps/arkag/keymap.c -*/ - -#include - -// Start: Written by Chris Lewis -#ifndef MIN -#define MIN(a,b) (((a)<(b))?(a):(b)) -#endif -#ifndef MAX -#define MAX(a,b) (((a)>(b))?(a):(b)) -#endif - -#define TYPING_SPEED_MAX_VALUE 200 -uint8_t typing_speed = 0; - -void velocikey_accelerate(void) { - if (typing_speed < TYPING_SPEED_MAX_VALUE) typing_speed += (TYPING_SPEED_MAX_VALUE / 50); -} - -void velocikey_decelerate(void) { - static uint16_t decay_timer = 0; - - if (timer_elapsed(decay_timer) > 500 || decay_timer == 0) { - if (typing_speed > 0) typing_speed -= 1; - //Decay a little faster at half of max speed - if (typing_speed > TYPING_SPEED_MAX_VALUE / 2) typing_speed -= 1; - //Decay even faster at 3/4 of max speed - if (typing_speed > TYPING_SPEED_MAX_VALUE / 4 * 3) typing_speed -= 3; - decay_timer = timer_read(); - } -} - -uint8_t velocikey_match_speed(uint8_t minValue, uint8_t maxValue) { - return MAX(minValue, maxValue - (maxValue - minValue) * ((float)typing_speed / TYPING_SPEED_MAX_VALUE)); -} -// End: Written by Chris Lewis - -uint8_t current_os, - mod_primary_mask, - fade_interval, - num_extra_flashes_off = 0; -Color underglow, - flash_color, - saved_color, - hsv_none = {0,0,0}; -flashState flash_state = no_flash; -fadeState fade_state = add_fade; -activityState state = boot; - -float song_ussr[][2] = SONG(USSR_ANTHEM); - -void set_color (Color new, bool update) { - rgblight_sethsv_eeprom_helper(new.h, new.s, new.v, update); -} - -void save_color(Color to_save) { - saved_color = to_save; -} - -void reset_color(void) { - underglow = saved_color; -} - -Color mod_color(Color current_color, bool should_add, uint8_t change_amount) { - save_color(underglow); - int addlim = HUE_MAX - change_amount; - int sublim = change_amount; - int leftovers; - if (should_add) { - if (current_color.h <= addlim) { - current_color.h += change_amount; - } else { - leftovers = (HUE_MAX + change_amount) % HUE_MAX; - current_color.h = 0 + leftovers; - } - } else { - if (current_color.h >= sublim) { - current_color.h -= change_amount; - } else { - leftovers = change_amount - current_color.h; - current_color.h = HUE_MAX - leftovers; - } - } - return current_color; -} - -void check_state (void) { - static uint16_t active_timer; - if (!active_timer) {active_timer = timer_read();} - static bool activated, deactivated, slept; - switch (state) { - case active: - if (!activated) { - if (slept) {rgblight_mode_noeeprom(1);} - activated = true; - deactivated = false; - } - fade_interval = velocikey_match_speed(1, 25); - if (timer_elapsed(active_timer) < INACTIVE_DELAY) {return;} - active_timer = timer_read(); - state = inactive; - return; - - case inactive: - if (!deactivated) { - deactivated = true; - activated = false; - } - velocikey_decelerate(); - fade_interval = velocikey_match_speed(1, 25); - return; - - case boot: - return; - } -} - -void fade_rgb (void) { - static uint16_t fade_timer; - if (state == boot) {return;} - if (!fade_timer) {fade_timer = timer_read();} - if (timer_elapsed(fade_timer) < fade_interval) {return;} - switch (fade_state) { - case add_fade: - if (underglow.h == HUE_MAX) { - fade_state = sub_fade; - return; - } - underglow.h = underglow.h + 1; - break; - - case sub_fade: - if (underglow.h == 0) { - fade_state = add_fade; - return; - } - underglow.h = underglow.h - 1; - break; - } - fade_timer = timer_read(); - if (flash_state == no_flash) { - set_color(underglow, false); - } -} - -void flash_rgb (void) { - static uint16_t flash_timer; - switch(flash_state) { - case no_flash: - return; - - case flash_off: - if (!flash_timer) {flash_timer = timer_read();} - if (timer_elapsed(flash_timer) >= LED_FLASH_DELAY) { - set_color(hsv_none, false); - flash_timer = timer_read(); - flash_state = flash_on; - } - return; - - case flash_on: - if (timer_elapsed(flash_timer) >= LED_FLASH_DELAY) { - set_color(flash_color, false); - flash_timer = timer_read(); - if (num_extra_flashes_off > 0) { - flash_state = flash_off; - num_extra_flashes_off--; - } else { - set_color(underglow, false); - flash_state = no_flash; - } - } - return; - } -} - -void set_os (uint8_t os, bool update) { - current_os = os; - if (update) { - eeprom_update_byte(EECONFIG_USERSPACE, current_os); - } - switch (os) { - case OS_MAC: - set_unicode_input_mode(UNICODE_MODE_MACOS); - underglow = (Color){ 213, 255, 255 }; - break; - case OS_WIN: - set_unicode_input_mode(UNICODE_MODE_WINCOMPOSE); - underglow = (Color){ 128, 255, 255 }; - break; - case OS_NIX: - set_unicode_input_mode(UNICODE_MODE_LINUX); - underglow = (Color){ 43, 255, 255 }; - break; - default: - underglow = (Color){ 0, 0, 255 }; - } - set_color(underglow, update); - flash_color = underglow; - flash_state = flash_off; - state = boot; - num_extra_flashes_off = 3; -} - -// register GUI if Mac or Ctrl if other -void pri_mod(bool press) { - if (press) { - if (current_os == OS_MAC) { - register_code(KC_LGUI); - } else { - register_code(KC_LCTL); - } - } else { - if (current_os == OS_MAC) { - unregister_code(KC_LGUI); - } else { - unregister_code(KC_LCTL); - } - } -} - -// register Ctrl if Mac or GUI if other -void sec_mod(bool press) { - if (press) { - if (current_os == OS_MAC) { - register_code(KC_LCTL); - } else { - register_code(KC_LGUI); - } - } else { - if (current_os == OS_MAC) { - unregister_code(KC_LCTL); - } else { - unregister_code(KC_LGUI); - } - } -} - -void multi_tap(uint8_t num_of_chars, uint16_t keycode, bool use_shift) { - if (use_shift) { - register_code(KC_LSFT); - } - for (int i = 0; i < num_of_chars; i++) { - tap_code(keycode); - } - if (use_shift) { - unregister_code(KC_LSFT); - } -} - -void pair_surround_type(uint8_t num_of_chars, uint16_t keycode, bool use_shift) { - for (int i = 0; i < num_of_chars; i++) { - (use_shift) ? register_mods(MOD_BIT( KC_LSFT)) : NULL; - tap_code(keycode); - tap_code((keycode == KC_LCBR) ? KC_RCBR : (keycode == KC_LBRC) ? KC_RBRC : (keycode == KC_LPRN) ? KC_RPRN : KC_NO); - (use_shift) ? unregister_mods(MOD_BIT( KC_LSFT)) : NULL; - tap_code(KC_LEFT); - } -} - -void surround_type(uint8_t num_of_chars, uint16_t keycode, bool use_shift) { - for (int i = 0; i < num_of_chars; i++) { - (use_shift) ? register_mods(MOD_BIT( KC_LSFT)) : NULL; - tap_code(keycode); - (use_shift) ? unregister_mods(MOD_BIT( KC_LSFT)) : NULL; - } - multi_tap(num_of_chars / 2, KC_LEFT, false); -} - -void long_keystroke(size_t num_of_keys, uint16_t keys[]) { - for (int i = 0; i < num_of_keys-1; i++) { - register_code(keys[i]); - } - tap_code(keys[num_of_keys-1]); - for (int i = 0; i < num_of_keys-1; i++) { - unregister_code(keys[i]); - } -} - -void pri_mod_keystroke(uint16_t key) { - pri_mod(true); - tap_code(key); - pri_mod(false); -} - -void leader_end_user(void) { - // begin OS functions - if (leader_sequence_two_keys(KC_P, KC_B)) { - if (current_os == OS_WIN) { - long_keystroke(2, (uint16_t[]){KC_LGUI, KC_PAUSE}); - } else { - return; - } - } - if (leader_sequence_two_keys(KC_S, KC_S)) { - if (current_os == OS_MAC) { - long_keystroke(3, (uint16_t[]){KC_LGUI, KC_LSFT, KC_4}); - } else if (current_os == OS_WIN) { - long_keystroke(3, (uint16_t[]){KC_LGUI, KC_LSFT, KC_S}); - } else { - return; - } - } - if (leader_sequence_three_keys(KC_C, KC_A, KC_D)) { - if (current_os == OS_WIN) { - long_keystroke(3, (uint16_t[]){KC_LCTL, KC_LALT, KC_DEL}); - } else { - } - } - if (leader_sequence_three_keys(KC_C, KC_A, KC_E)) { - if (current_os == OS_WIN) { - long_keystroke(3, (uint16_t[]){KC_LCTL, KC_LALT, KC_END}); - } else { - } - } - // end OS functions - - // begin format functions - if (leader_sequence_one_key(KC_B)) { - surround_type(2, KC_8, true); - } - if (leader_sequence_one_key(KC_I)) { - surround_type(2, KC_MINS, true); - } - if (leader_sequence_one_key(KC_U)) { - surround_type(4, KC_MINS, true); - } - if (leader_sequence_one_key(KC_S)) { - surround_type(4, KC_GRAVE, true); - } - if (leader_sequence_one_key(KC_C)) { - register_unicode(0x00E7); // ç - } - if (leader_sequence_two_keys(KC_A, KC_V)) { - surround_type(2, KC_QUOT, true); - pair_surround_type(2, KC_LCBR, true); - surround_type(2, KC_SPC, false); - } - if (leader_sequence_two_keys(KC_M, KC_L)) { - pair_surround_type(1, KC_LBRC, false); - SEND_STRING("LINK_NAME"); - tap_code(KC_RGHT); - pair_surround_type(1, KC_LPRN, true); - pri_mod_keystroke(KC_V); - } - if (leader_sequence_two_keys(KC_C, KC_C)) { - surround_type(2, KC_GRAVE, false); - } - if (leader_sequence_three_keys(KC_C, KC_C, KC_C)) { - surround_type(6, KC_GRAVE, false); - } - if (leader_sequence_one_key(KC_E)) { - register_unicode(0x00E8); // ÃĻ - } - if (leader_sequence_two_keys(KC_E, KC_E)) { - register_unicode(0x00E9); // ÃĐ - } - // end format functions - - // start fancy functions - if (leader_sequence_two_keys(KC_V, KC_P)) { - SEND_STRING("ggvG}x:set paste\ni"); - pri_mod_keystroke(KC_V); - } - if (leader_sequence_three_keys(KC_C, KC_C, KC_ENT)) { - surround_type(6, KC_GRAVE, false); - pri_mod_keystroke(KC_V); - multi_tap(3, KC_RGHT, false); - tap_code(KC_ENTER); - } - if (leader_sequence_three_keys(KC_T, KC_C, KC_ENT)) { - multi_tap(3, KC_GRAVE, false); - pri_mod_keystroke(KC_V); - multi_tap(2, KC_ENTER, false); - } - // end fancy functions - - // start typing functions - if (leader_sequence_two_keys(KC_T, KC_M)) { - register_unicode(0x2122); // â„Ē - } - if (leader_sequence_two_keys(KC_D, KC_D)) { - SEND_STRING(".\\Administrator"); - } - if (leader_sequence_three_keys(KC_D, KC_D, KC_D)) { - SEND_STRING(".\\Administrator"); - tap_code(KC_TAB); - pri_mod_keystroke(KC_V); - tap_code(KC_ENTER); - } - if (leader_sequence_three_keys(KC_L, KC_O, KC_D)) { - send_unicode_string("āē __āē "); - } - if (leader_sequence_three_keys(KC_M, KC_A, KC_P)) { - SEND_STRING("https://github.com/qmk/qmk_firmware/tree/master/users/arkag"); - } - if (leader_sequence_two_keys(KC_F, KC_F)) { - send_unicode_string("(â•Ŋâ€ĩДâ€ē)â•Ŋå―Ąâ”ŧ━â”ŧ"); - } - if (leader_sequence_three_keys(KC_F, KC_F, KC_F)) { - send_unicode_string("┎─┎ノ( š _ š ノ)"); - } - if (leader_sequence_three_keys(KC_L, KC_O, KC_L)) { - send_unicode_string("( ͥ° ͜ʖ ͥ°)"); - } - if (leader_sequence_three_keys(KC_S, KC_S, KC_S)) { - send_unicode_string("ÂŊ\\_(ツ)_/ÂŊ"); - } - // end typing functions -} - -void matrix_init_user(void) { - current_os = eeprom_read_byte(EECONFIG_USERSPACE); - set_os(current_os, false); -} - -void matrix_scan_user(void) { - check_state(); - flash_rgb(); - fade_rgb(); -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - #ifdef AUDIO_ENABLE - case M_USSR: - PLAY_SONG(song_ussr); - return false; - #endif - - case M_OS: - if (record->event.pressed){ - set_os((current_os+1) % _OS_COUNT, true); - } - return false; - - case M_DASH: - if (record->event.pressed){ - register_unicode(0x2014); // — - } - return false; - - default: - if (record->event.pressed) { - state = active; - velocikey_accelerate(); - } - return true; - } -} diff --git a/users/arkag/arkag.h b/users/arkag/arkag.h deleted file mode 100644 index e127702e94..0000000000 --- a/users/arkag/arkag.h +++ /dev/null @@ -1,105 +0,0 @@ -#pragma once - -#include QMK_KEYBOARD_H - -#define EECONFIG_USERSPACE (uint8_t *)20 - -#define SYMBOL MO(_SYMBOL) -#define MEDIA MO(_MEDIA) -#define ARROW MO(_ARROW) -#define FUNCT MO(_FUNCT) -#define KEEB MO(_KEEB) -#define HITBOX TT(_HITBOX) - -#define LED_FLASH_DELAY 150 - -#define ACCEL_DELAY 500 -#define DEACCEL_DELAY 500 - -#define INACTIVE_DELAY 250 -#define SLEEP_DELAY 180000 - -#define HUE_MAX 254 - -enum { - _QWERTY = 0, - _SYMBOL, - _MEDIA, - _ARROW, - _FUNCT, - _KEEB, - _HITBOX, -}; - -typedef enum { - OS_MAC, // Don't assign values - OS_WIN, - OS_NIX, - _OS_COUNT, -} OS; - -typedef struct { - uint16_t h; - uint8_t s; - uint8_t v; -} Color; - -typedef enum { - no_flash = 0, - flash_off, - flash_on, -} flashState; - -typedef enum { - add_fade = 0, - sub_fade, -} fadeState; - -typedef enum { - active = 0, - inactive, - boot, -} activityState; - -enum custom_keycodes { - M_PMOD = SAFE_RANGE, - M_SMOD, - M_OS, - M_DASH, - M_USSR, -}; - -void velocikey_accelerate(void); -void velocikey_decelerate(void); -uint8_t velocikey_match_speed(uint8_t minValue, uint8_t maxValue); - -void set_color (Color new, bool update); -void save_color(Color to_save); -void reset_color(void); - -Color mod_color(Color current_color, bool should_add, uint8_t change_amount); - -void reverse_fade (void); - -void check_state (void); - -void fade_rgb (void); - -void flash_rgb (void); - -void set_os (uint8_t os, bool update); - -void tap_key(uint8_t keycode); - -void pri_mod(bool press); - -void sec_mod(bool press); - -void meh_hyper(bool press); - -void multi_tap(uint8_t num_of_chars, uint16_t keycode, bool use_shift); - -void surround_type(uint8_t num_of_chars, uint16_t keycode, bool use_shift); -void pair_surround_type(uint8_t num_of_chars, uint16_t keycode, bool use_shift); - -void long_keystroke(size_t num_of_keys, uint16_t keys[]); diff --git a/users/arkag/config.h b/users/arkag/config.h deleted file mode 100644 index 7dccac7a85..0000000000 --- a/users/arkag/config.h +++ /dev/null @@ -1,22 +0,0 @@ -/* Copyright 2021 Alex Kagno - * - * 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 . -*/ - -#pragma once - -#define TAPPING_TERM 200 -#define LEADER_TIMEOUT 300 - -#define LEADER_PER_KEY_TIMING diff --git a/users/arkag/readme.md b/users/arkag/readme.md deleted file mode 100644 index c685892f86..0000000000 --- a/users/arkag/readme.md +++ /dev/null @@ -1,42 +0,0 @@ -# Shot on Pixel 2 XL with Cheap Lamp at Work - -![mmm, tasty](mechmini2.jpg) - -# I don't know what I'm doing - -Some links: -* [Layout File: Mech Mini 2](layout_mm2) -* [Userspace Header](arkag_h) -* [Userspace Main](arkag_c) - -Here's a list of some things I have working with my currently [keyboard](mm2_home): - -* Reactive (sort of) fading while typing, ported from [Velocikey](https://github.com/qmk/qmk_firmware/pull/3754). -* OS Switching, storing to EEPROM -* OS Specific Macros and Shortcuts(WIN+SHIFT+S for Windows and CMD+SHIFT+4 for MacOS) -* Flashing RGB LED on OS change -* Hex Unicode Macros dependent on OS(half works on Windows due to [WinCompose](https://github.com/SamHocevar/wincompose) not functioning properly just yet). -* "Sleep" function activates after 3 minutes (breathing). -* Markdown style macros for surround type __eve__ ~~ryw~~ *her* **eee** (apparently only certain places support underline and strikethrough āē __āē ) - -# License Stuff - -Copyright 2018 arkag arkag@pm.me - -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 . - -[arkag_c]: /users/arkag/arkag.c -[arkag_h]: /users/arkag/arkag.h -[layout_mm2]: /keyboards/mechmini/v2/keymaps/arkag/keymap.c -[mm2_home]: https://cartel.ltd/projects/mechmini2/ diff --git a/users/arkag/rules.mk b/users/arkag/rules.mk deleted file mode 100644 index 14d60970b3..0000000000 --- a/users/arkag/rules.mk +++ /dev/null @@ -1,4 +0,0 @@ -SRC += arkag.c - -# save me space! -LTO_ENABLE = yes \ No newline at end of file diff --git a/users/art/.gitignore b/users/art/.gitignore deleted file mode 100644 index c05ba7978b..0000000000 --- a/users/art/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -*user_config.* -custom_definitions.h -secr.h diff --git a/users/art/art.c b/users/art/art.c deleted file mode 100644 index f96a5d6cfd..0000000000 --- a/users/art/art.c +++ /dev/null @@ -1,722 +0,0 @@ -// Copyright 2022 Artjoms Rizihs (@artjomsR) -// SPDX-License-Identifier: GPL-2.0-or-later - -#include "art.h" -#include "custom_definitions.h" -#include "secr.h" -#include "funcs/led_funcs.h" -#include "funcs/string_funcs.h" - -static const int COPY_DELAY = 50; -static const int INCOGNITO_DELAY = 500; -static const int LMB_SPAM_INTERVAL = 30; -static const uint8_t OS_MOD_KEYS[2] = {MOD_LALT, MOD_LCTL}; - -bool mac_ctrl_on = false; //for switching tabs -bool mac_gui_on = false; //for switching languages -bool mac_alt_window_switching_on = false; //for switching windows - -int char_to_bspace = 1; -int char_to_del = 0; - -static bool sarcasm_on = false; -static bool sarcasm_key = false; -static bool full_caps_mode = false; -bool hw_caps_on; - -static bool is_lmb_timer_active = false; -static uint16_t lmb_timer = 0; - -__attribute__ ((weak)) -bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void keyboard_post_init_user(void) { - led_show_variable_status(is_win); - layer_state_set_user(layer_state); -} - -void matrix_scan_user(void) { - if (is_lmb_timer_active) { - if (timer_elapsed(lmb_timer) > LMB_SPAM_INTERVAL) { - SEND_STRING(SS_TAP(X_BTN1)); //do stuff that needs spamming - lmb_timer = timer_read(); - } - } -} - -bool caps_word_on(void) { - return hw_caps_on && !full_caps_mode; -} - - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - if (record->event.pressed) { - if (sarcasm_on) { - sarcasm_key = ! sarcasm_key; - del_mods(MOD_LSFT); - if (sarcasm_key) { - add_mods(MOD_LSFT); - } - } - - //Checking all other non-backspace keys to clear the backspace buffer. This is to prevent the bug of deleting N chars sometime after using a macro - switch (keycode) { - case LT(COMBOS,KC_BSPC): - case KC_BACKSPACE: - case KC_DEL: - case KC_LSFT: - case KC_RSFT: - case XXXXXXX: - break; - default: - char_to_bspace = 1; - char_to_del = 0; - break; - } - } - - switch (keycode) { - case XXXXXXX: - if (record->event.pressed && !layer_state_is(BASE)) { - blink_leds(NUM_SCROLL_LED_ON); - return true; - } - break; - case KC_TAB: - if (record->event.pressed && is_mac_with_base_layer_off()) { - uint8_t mod_state = get_mods() & MOD_MASK_CTRL; - if (get_mods() & mod_state && !mac_alt_window_switching_on) { - del_mods(mod_state); - add_mods(MOD_LGUI); - mac_ctrl_on = true; - } - } - case KC_GRAVE: - if (record->event.pressed && is_mac_with_base_layer_off()) { - uint8_t mod_state = get_mods() & MOD_MASK_ALT; - if (get_mods() & mod_state) { - del_mods(mod_state); - add_mods(MOD_LCTL); - mac_alt_window_switching_on = true; - } - } - break; - case KC_LSFT: - if (record->event.pressed && is_mac_with_base_layer_off() && !mac_ctrl_on) { - uint8_t mod_state = get_mods() & MOD_MASK_AG; - if (get_mods() & mod_state) { - del_mods(mod_state); - add_mods(MOD_LGUI); - mac_gui_on = true; - send_string(lang_switch_combo); - return false; - } else { - return true; - } - } - break; - case KC_LEFT: - case KC_RIGHT: - if (record->event.pressed && is_mac_with_base_layer_off()) { - /* && !mac_ctrl_on/!mac_alt_tab_on are required since setting the state while holding the key changes - the modifier from OS's perspective. As a result, just the pressed key cannot be the single source - of truth to determine which state we're in, and a separate bool is required */ - uint8_t alt_state = get_mods() & MOD_MASK_ALT; - uint8_t ctrl_state = get_mods() & MOD_MASK_CTRL; - - //Allows Ctrl <-/-> on Mac if Ctrl Tab is already pressed - if (get_mods() & alt_state && mac_alt_window_switching_on && !mac_ctrl_on) { - del_mods(alt_state); - add_mods(MOD_LCTL); - } - - if (get_mods() & ctrl_state && !mac_alt_window_switching_on && !mac_gui_on) { - del_mods(ctrl_state); - add_mods(MOD_LALT); - mac_ctrl_on = true; - } - } - break; - case KC_LALT: - if (!record->event.pressed && is_mac_with_base_layer_off()) { - if (mac_alt_window_switching_on) { - unregister_mods(MOD_LCTL); - mac_alt_window_switching_on = false; - return false; - } else if (mac_gui_on) { - unregister_mods(MOD_LGUI); - mac_gui_on = false; - return false; - } - return true; - } - break; - case KC_RALT: - if (!record->event.pressed && mac_alt_window_switching_on && is_mac_with_base_layer_off()) { - unregister_mods(MOD_LCTL); - mac_alt_window_switching_on = false; - return false; - } - break; - case KC_LCTL: - case KC_RCTL: - if (!record->event.pressed && mac_ctrl_on && is_mac_with_base_layer_off()) { - // Need to remove only previously set mods (e.g. WIN & ALT) to preserve Shift, etc - unregister_mods(MOD_LGUI); - unregister_mods(MOD_LALT); - mac_ctrl_on = false; - return false; - } - break; - - case KC_HOME: - if (record->event.pressed && is_mac_with_base_layer_off()) { - SEND_STRING(SS_LCTL(SS_TAP(X_LEFT))); - return false; - } - break; - case KC_END: - if (record->event.pressed && is_mac_with_base_layer_off()) { - SEND_STRING(SS_LCTL(SS_TAP(X_RIGHT))); - return false; - } - break; - case KC_DEL: - case KC_BSPC: - if (record->event.pressed) { - return handle_del_bspace(); - } - break; - case LT(COMBOS, KC_BSPC): - if (record->event.pressed && record->tap.count == 1) { - return handle_del_bspace(); - } - break; - case LT(NAV,KC_APP): - if (!record->event.pressed && !is_win) { - mac_ctrl_on = false; - mac_gui_on = false; - mac_alt_window_switching_on = false; - clear_mods(); - SEND_STRING(SS_TAP(X_LCTL) SS_TAP(X_LGUI) SS_TAP(X_LALT) SS_TAP(X_LSFT)); - return true; - } - break; - /* ------------------------------------------------------------------------- - * CAPS WORD - * ------------------------------------------------------------------------ */ - case KC_CAPS: - if (record->event.pressed && !layer_state_is(BASE)) { - if (get_mods() & MOD_MASK_SHIFT) { - full_caps_mode = true; - led_show_variable_status(full_caps_mode); - if (hw_caps_on) { - SEND_STRING(SS_TAP(X_CAPS)); - } - } else if (hw_caps_on) { - full_caps_mode = false; - } - } - break; - // case KC_SPACE: - case LT(MEDIA,KC_SPC): - case LT(NAV,KC_SPC): - if (record->event.pressed && caps_word_on() && !layer_state_is(BASE) && record->tap.count == 1) { - SEND_STRING(SS_TAP(X_CAPS)); - } - break; - case KC_MINS: - if (record->event.pressed && caps_word_on() && !layer_state_is(BASE)) { - SEND_STRING("_"); - return false; - } - break; - /* ------------------------------------------------------------------------- - * CUSTOM MACROS - * ------------------------------------------------------------------------ */ - - case CTRL_CTV: - if (record->event.pressed) { - bool shifted = get_mods() & MOD_MASK_SHIFT; - clear_mods(); - - SEND_STRING(SS_LCTL("c")); - wait_ms(COPY_DELAY); - SEND_STRING(SS_LCTL("tv")); - - if (!shifted) { - SEND_STRING(SS_TAP(X_ENTER)); - } - } - break; - case BEAT_BROWSER: - if (record->event.pressed) { - SEND_STRING(SS_LCTL("c")); - wait_ms(COPY_DELAY); - SEND_STRING(SS_LGUI("1") SS_LCTL("tv") SS_TAP(X_ENTER)); - } - break; - case CTRL_LCTV: - if (record->event.pressed) { - if (get_mods() & MOD_MASK_SHIFT) { - //Firefox - clear_mods(); - SEND_STRING(SS_LCTL("lc")); - wait_ms(COPY_DELAY); - SEND_STRING(SS_LCTL("P")); - wait_ms(INCOGNITO_DELAY); - SEND_STRING(SS_LCTL("v") SS_TAP(X_ENTER)); - } else if (get_mods() & MOD_MASK_CTRL) { - //Chrome - clear_mods(); - SEND_STRING(SS_LCTL("lc")); - wait_ms(COPY_DELAY); - SEND_STRING(SS_LCTL("Nv") SS_TAP(X_ENTER)); - } else { - SEND_STRING(SS_LCTL("lc")); - wait_ms(COPY_DELAY); - SEND_STRING(SS_LCTL("tv")); - } - } - break; - case CTRL_CAV: - if (record->event.pressed) { - SEND_STRING(SS_LCTL("c" SS_TAP(X_TAB))); - wait_ms(COPY_DELAY); - SEND_STRING(SS_LCTL("av")); - } - break; - case NEUTRAL_COPY: - if (record->event.pressed && is_win) { - uint8_t shifted = get_mods() & MOD_MASK_SHIFT; - if (shifted) { - del_mods(shifted); - SEND_STRING(SS_LCTL("z")); - } - SEND_STRING(SS_LCTL("c")); - wait_ms(COPY_DELAY); - SEND_STRING(SS_LGUI("r") SS_LCTL("vac") SS_TAP(X_ESC)); - } - break; - case SARCASM: - if (record->event.pressed) { - del_mods(MOD_LSFT); - sarcasm_on = !sarcasm_on; - led_show_variable_status(sarcasm_on); - } - break; - case LMB_SPAM: - if (record->event.pressed) { - is_lmb_timer_active = ! is_lmb_timer_active; - lmb_timer = timer_read(); - } - break; - - /* ------------------------------------------------------------------------- - * OS TOGGLING - * ------------------------------------------------------------------------ */ - case TOG_OS: - if (record->event.pressed) { - is_win = ! is_win; - led_show_variable_status(is_win); - } - break; - case CTR_ALT: - if (record->event.pressed) { - add_mods(OS_MOD_KEYS[is_win]); - } else { - unregister_mods(OS_MOD_KEYS[is_win]); - } - break; - case CTR_ALT_SHIFT: - if (record->event.pressed) { - add_mods(OS_MOD_KEYS[is_win]); - add_mods(MOD_RSFT); - } else { - unregister_mods(OS_MOD_KEYS[is_win]); - unregister_mods(MOD_RSFT); - } - break; - case OS_CTRL: - if (is_win) { - if (record->event.pressed) { - SEND_STRING(SS_DOWN(X_LCTL)); - } else { - SEND_STRING(SS_UP(X_LCTL)); - } - } else { - if (record->event.pressed) { - SEND_STRING(SS_DOWN(X_LGUI)); - } else { - SEND_STRING(SS_UP(X_LGUI)); - } - } - break; - case OS_WIN: - if (is_win) { - if (record->event.pressed) { - SEND_STRING(SS_DOWN(X_LGUI)); - } else { - SEND_STRING(SS_UP(X_LGUI)); - } - } else { - if (record->event.pressed) { - SEND_STRING(SS_DOWN(X_LCTL)); - } else { - SEND_STRING(SS_UP(X_LCTL)); - } - } - break; - - /* ------------------------------------------------------------------------- - * STRING MACROS - * ------------------------------------------------------------------------ */ - // case : - // if (record->event.pressed) { - // send_string_remembering_length(""); - // } - // break; - // case : - // if (record->event.pressed) { - // send_shifted_strings("", ""); - // } - // break; - case TILD_BLOCK: - if (record->event.pressed) { - uint8_t alted = get_mods() & MOD_MASK_ALT; - uint8_t switch_lang_state = get_mods() & MOD_MASK_CTRL; - - if (switch_lang_state) { - del_mods(switch_lang_state); - switch_lang(); - } - - if (alted) { - del_mods(alted); - SEND_STRING(SS_TAP(X_ESC) "```" SS_LSFT(SS_TAP(X_ENTER) SS_TAP(X_ENTER)) "```" SS_TAP(X_UP)); - char_to_bspace = 4; - char_to_del = 4; - } else { - SEND_STRING("`` "); - - uint8_t shifted = get_mods() & MOD_MASK_SHIFT; - del_mods(shifted); - SEND_STRING(SS_TAP(X_LEFT) SS_TAP(X_LEFT)); - add_mods(shifted); - char_to_bspace = 1; - char_to_del = 2; - } - - if (switch_lang_state) { - switch_lang(); - } - } - break; - case ALL_BEST: - if (record->event.pressed) { - send_shifted_strings_add("All the best,\nArt", "joms"); - } - break; - case AT_EMAIL: - if (record->event.pressed) { - send_string_remembering_length("@gmail.com"); - } - break; - case BRACES: - if (record->event.pressed) { - uint8_t shifted = get_mods() & MOD_MASK_SHIFT; - uint8_t switch_lang_state = get_mods() & MOD_MASK_CTRL; - if (switch_lang_state) { - del_mods(switch_lang_state); - switch_lang(); - } - - add_mods(shifted); - SEND_STRING("[]"); - - del_mods(shifted); - SEND_STRING(SS_TAP(X_LEFT)); - add_mods(shifted); - - if (switch_lang_state) { - switch_lang(); - } - char_to_bspace = 1; - char_to_del = 1; - } - break; - case DASHES: - if (record->event.pressed) { - SEND_STRING("--"); - - uint8_t shifted = get_mods() & MOD_MASK_SHIFT; - del_mods(shifted); - SEND_STRING(" " SS_TAP(X_LEFT) SS_TAP(X_LEFT)); - add_mods(shifted); - char_to_bspace = 1; - char_to_del = 2; - } - break; - case PARENTHS: - if (record->event.pressed) { - clear_mods(); - SEND_STRING("() " SS_TAP(X_LEFT) SS_TAP(X_LEFT)); - char_to_bspace = 1; - char_to_del = 2; - } - break; - case QUOTES: - if (record->event.pressed) { - uint8_t shifted = get_mods() & MOD_MASK_SHIFT; - uint8_t switch_lang_state = get_mods() & MOD_MASK_CTRL; - if (switch_lang_state) { - del_mods(switch_lang_state); - switch_lang(); - } - - add_mods(shifted); - SEND_STRING("''"); - - del_mods(shifted); - wait_ms(LONG_TYPING_INTERVAL); - SEND_STRING(" " SS_TAP(X_LEFT) SS_TAP(X_LEFT)); - add_mods(shifted); - - if (switch_lang_state) { - switch_lang(); - } - char_to_bspace = 1; - char_to_del = 2; - } - break; - case QUOTES_RU: - if (record->event.pressed) { - clear_mods(); - SEND_STRING("@@ "); - wait_ms(LONG_TYPING_INTERVAL); - SEND_STRING(SS_TAP(X_LEFT) SS_TAP(X_LEFT)); - char_to_bspace = 1; - char_to_del = 2; - } - break; - case STARS: - if (record->event.pressed) { - clear_mods(); - SEND_STRING("** " SS_TAP(X_LEFT) SS_TAP(X_LEFT)); - char_to_bspace = 1; - char_to_del = 2; - } - break; - - case ADMINS: - if (record->event.pressed) { - send_string_remembering_length("admin"); - } - break; - - case G_ADD: - if (record->event.pressed) { - send_string_remembering_length("git add "); - } - break; - case G_BRCH: - if (record->event.pressed) { - send_shifted_strings_add("git branch ", "-d "); - } - break; - case G_C: - if (record->event.pressed) { - send_string_remembering_length("git c[Heckout/Ommit]"); - layer_on(GIT_C); - } - break; - case G_CHEC: - if (!record->event.pressed) { - bool shifted = get_mods() & MOD_MASK_SHIFT; - clear_mods(); - - press_n_times(15, KC_BACKSPACE); - send_string_with_translation("heckout "); - char_to_bspace = 13; - if (shifted) { - send_string_with_translation("-b "); - char_to_bspace = 16; - } - layer_off(GIT_C); - } - break; - case G_COMM: - if (!record->event.pressed) { - bool ctrled = get_mods() & MOD_MASK_CTRL; - bool shifted = get_mods() & MOD_MASK_SHIFT; - clear_mods(); - - press_n_times(15, KC_BACKSPACE); - send_string_with_translation("ommit "); - char_to_bspace = 11; - layer_off(GIT_C); - - if (ctrled) { - return false; - } - - SEND_STRING("-"); - char_to_bspace = 15; - if (shifted) { - send_string_with_translation("a"); - char_to_bspace = 16; - } - send_string_with_translation("m"); - SEND_STRING(" \"\"" SS_TAP(X_LEFT)); - char_to_del = 1; - } - break; - case G_DEV: - if (record->event.pressed) { - send_shifted_strings("develop", "master"); - } - break; - case G_DIFF: - if (record->event.pressed) { - send_string_remembering_length("git diff "); - } - break; - case G_FTCH: - if (record->event.pressed) { - send_string_remembering_length("git fetch "); - } - break; - case G_LOG: - if (record->event.pressed) { - send_string_remembering_length("git log "); - } - break; - case G_MERG: - if (record->event.pressed) { - send_string_remembering_length("git merge "); - } - break; - case G_PULL: - if (record->event.pressed) { - send_string_remembering_length("git pull "); - } - break; - case G_PUSH: - if (record->event.pressed) { - send_string_remembering_length("git push -u "); - } - break; - case G_R: - if (!record->event.pressed) { - send_string_remembering_length("git re[Set/Vert/Base -i]"); - layer_on(GIT_R); - } - break; - case G_RBASE: - if (!record->event.pressed) { - press_n_times(18, KC_BACKSPACE); - send_string_with_translation("base -i "); - char_to_bspace = 14; - layer_off(GIT_R); - } - break; - case G_RVERT: - if (!record->event.pressed) { - press_n_times(18, KC_BACKSPACE); - send_string_with_translation("vert "); - char_to_bspace = 11; - layer_off(GIT_R); - } - break; - case G_RST: - if (!record->event.pressed) { - bool shifted = get_mods() & MOD_MASK_SHIFT; - clear_mods(); - - press_n_times(18, KC_BACKSPACE); - send_string_with_translation("set "); - char_to_bspace = 10; - - if (shifted) { - send_string_with_translation("--hard "); - char_to_bspace = 17; - } - layer_off(GIT_R); - } - break; - case G_S: - if (!record->event.pressed) { - send_string_remembering_length("git s[taSh/How/taTus]"); - layer_on(GIT_S); - } - break; - case G_SHOW: - if (!record->event.pressed) { - press_n_times(16, KC_BACKSPACE); - send_string_with_translation("how "); - char_to_bspace = 9; - layer_off(GIT_S); - } - break; - case G_STSH: - if (!record->event.pressed) { - bool shifted = get_mods() & MOD_MASK_SHIFT; - clear_mods(); - - press_n_times(16, KC_BACKSPACE); - send_string_with_translation("tash "); - char_to_bspace = 10; - - if (shifted) { - clear_mods(); - send_string_with_translation("apply "); - - char_to_bspace = 16; - } - - layer_off(GIT_S); - } - break; - case G_STAT: - if (!record->event.pressed) { - press_n_times(16, KC_BACKSPACE); - send_string_with_translation("tatus "); - char_to_bspace = 11; - layer_off(GIT_S); - } - break; - - case K_CUST1 ... K_CUST3: // custom strings not stored in source control - if (!record->event.pressed) { - send_string_remembering_length(custom[keycode - K_CUST1]); - blink_leds(NUM_SCROLL_LED_ON); - } - break; - case K_SECR1 ... K_SECR4: // Secrets! Externally defined strings, not stored in repo - if (!record->event.pressed) { - send_string_remembering_length(secrets[keycode - K_SECR1]); - blink_leds(NUM_SCROLL_LED_ON); - } - break; - - case CTL_ALT_START ... CTL_ALT_END: - if (record->event.pressed) { - if (is_win) { - register_code16(LCTL(keycode - CTL_ALT_START)); - } else { - register_code16(LALT(keycode - CTL_ALT_START)); - } - } else { - if (is_win) { - unregister_code16(LCTL(keycode - CTL_ALT_START)); - } else { - unregister_code16(LALT(keycode - CTL_ALT_START)); - } - } - break; - } - - return process_record_keymap(keycode, record); -} diff --git a/users/art/art.h b/users/art/art.h deleted file mode 100644 index 71af966bef..0000000000 --- a/users/art/art.h +++ /dev/null @@ -1,107 +0,0 @@ -// Copyright 2022 Artjoms Rizihs (@artjomsR) -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once -#include QMK_KEYBOARD_H - -#define CTL_ALT(kc) (CTL_ALT_START + ((kc) & 0xff)) - -extern bool is_win; -#define TYPING_INTERVAL 20 -#define LONG_TYPING_INTERVAL 50 - -enum layer_names { -#if SPLIT75_SETUP_FOR_PUBLIC_USE_BY_DEFAULT && defined(KEYBOARD_wheatfield_split75) // defined by "KEYBOARD" followed by folder structure - BASE, - QWERTY, -#else - QWERTY, - BASE, -#endif - - WORKMAN, -#if defined(KEYBOARD_mt_split75) - CONFIG, - LAYOUT_CHG, - QWERTY_MOD, -#elif defined(KEYBOARD_ktec_ergodone) - FKEYS, - CTRL_NAV, - SHIFT_NAV, -#endif - - MEDIA, - COMBOS, - //STRINGS, - NAV, - NUMPAD, - GIT, - GIT_C, - GIT_R, - GIT_S -}; - -enum custom_keycodes_art { - CTRL_CTV = SAFE_RANGE, - CTRL_LCTV, - CTRL_CAV, - BEAT_BROWSER, - NEUTRAL_COPY, - SARCASM, - LMB_SPAM, - - TOG_OS, - CTR_ALT, - CTR_ALT_SHIFT, - OS_CTRL, - OS_WIN, - - TILD_BLOCK, - ALL_BEST, - AT_EMAIL, - BRACES, - DASHES, - PARENTHS, - STARS, - QUOTES, - QUOTES_RU, - - ADMINS, - PRESCRIPTION, - FOURS, - - G_ADD, - G_BRCH, - G_C, - G_CHEC, - G_COMM, - G_DEV, - G_DIFF, - G_FTCH, - G_LOG, - G_MERG, - G_PULL, - G_PUSH, - G_R, - G_RBASE, - G_RVERT, - G_RST, - G_S, - G_STAT, - G_STSH, - G_SHOW, - - K_CUST1, - K_CUST2, - K_CUST3, - - K_SECR1, - K_SECR2, - K_SECR3, - K_SECR4, - - CTL_ALT_START, - CTL_ALT_END = CTL_ALT_START + 0xff, - - NEW_SAFE_RANGE //for keymap specific codes -}; diff --git a/users/art/art_user_config.h.example b/users/art/art_user_config.h.example deleted file mode 100644 index b523867259..0000000000 --- a/users/art/art_user_config.h.example +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2022 Artjoms Rizihs (@artjomsR) -// SPDX-License-Identifier: GPL-2.0-or-later - -#define SPLIT75_SETUP_FOR_PUBLIC_USE_BY_DEFAULT true -#define WORKMAN_TO_QWERTY_HW_MAPPING false - -#define lang_switch_combo SS_LGUI(SS_TAP(X_Z)) \ No newline at end of file diff --git a/users/art/config.h b/users/art/config.h deleted file mode 100644 index 78c7851c65..0000000000 --- a/users/art/config.h +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2022 Artjoms Rizihs (@artjomsR) -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once - -#undef TAPPING_TOGGLE -#define TAPPING_TOGGLE 2 - -#define COMBO_SHOULD_TRIGGER - -// saving space -#define LAYER_STATE_16BIT // remove if using more than 16 layers -#define NO_ACTION_ONESHOT -#define NO_MUSIC_MODE \ No newline at end of file diff --git a/users/art/custom_definitions.h.example b/users/art/custom_definitions.h.example deleted file mode 100644 index b15d3d5e6d..0000000000 --- a/users/art/custom_definitions.h.example +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2022 Artjoms Rizihs (@artjomsR) -// SPDX-License-Identifier: GPL-2.0-or-later - -static char * custom[] = { - "", - "", - "" -}; \ No newline at end of file diff --git a/users/art/funcs/led_funcs.c b/users/art/funcs/led_funcs.c deleted file mode 100644 index 873836d368..0000000000 --- a/users/art/funcs/led_funcs.c +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2022 Artjoms Rizihs (@artjomsR) -// SPDX-License-Identifier: GPL-2.0-or-later - -#include "led_funcs.h" - -bool hw_caps_on; - -__attribute__ ((weak)) void num_led_on(void) {} -__attribute__ ((weak)) void num_led_off(void) {} -__attribute__ ((weak)) void caps_led_on(void) {} -__attribute__ ((weak)) void caps_led_off(void) {} -__attribute__ ((weak)) void scroll_led_on(void) {} -__attribute__ ((weak)) void scroll_led_off(void) {} - -void toggle_leds(int leds) { - if (NUM_LED_ON & leds) { - num_led_on(); - } else { - num_led_off(); - } - if (SCROLL_LED_ON & leds) { - scroll_led_on(); - } else { - scroll_led_off(); - } -} - -bool led_update_user(led_t led_state) { - // only use caps LED - ignore Num & Scroll - if (led_state.caps_lock) { - caps_led_on(); - } else { - caps_led_off(); - } - - hw_caps_on = led_state.caps_lock; - return false; // 'false' prevents led_update_kb from firing -} - -void blink_leds(int leds) { - for (int i = 0; i < 3; i++) { - toggle_leds(leds); - wait_ms(BLINKING_INTERVAL); - toggle_leds(ALL_OFF); - wait_ms(BLINKING_INTERVAL); - } -} - -void led_show_variable_status(bool value) { - if (value) { - blink_leds(NUM_LED_ON); - } else { - blink_leds(SCROLL_LED_ON); - } -} \ No newline at end of file diff --git a/users/art/funcs/led_funcs.h b/users/art/funcs/led_funcs.h deleted file mode 100644 index 65d2b7c155..0000000000 --- a/users/art/funcs/led_funcs.h +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2022 Artjoms Rizihs (@artjomsR) -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once -#include QMK_KEYBOARD_H - -#define NUM_LED_ON 4 -#define SCROLL_LED_ON 1 -#define NUM_SCROLL_LED_ON 5 -#define ALL_OFF 0 - -#define BLINKING_INTERVAL 25 - -void toggle_leds(int leds); -bool led_update_user(led_t led_state); -void blink_leds(int leds); -void led_show_variable_status(bool value); \ No newline at end of file diff --git a/users/art/funcs/string_funcs.c b/users/art/funcs/string_funcs.c deleted file mode 100644 index 1ea86779cc..0000000000 --- a/users/art/funcs/string_funcs.c +++ /dev/null @@ -1,307 +0,0 @@ -// Copyright 2022 Artjoms Rizihs (@artjomsR) -// SPDX-License-Identifier: GPL-2.0-or-later - -#include "art.h" -#include "string_funcs.h" -#include "string.h" - -bool mac_ctrl_on; - -int char_to_bspace; -int char_to_del; - -enum combo_events { - HOMEROW_UP, - HOMEROW_LEFT, - HOMEROW_RIGHT, - HOMEROW_DOWN, - HOMEROW_PREV_WORD, - HOMEROW_NEXT_WORD, - HOMEROW_HOME, - HOMEROW_END, - - ED_F1, - ED_F2, - ED_F3, - ED_F4, - ED_F5, - ED_F6, - ED_F7, - ED_F8, - ED_F9, - ED_F10, - ED_F11, - ED_F12, - ED_PSCREEN, - - ED_ENTER, - - ED_CS_ENTER, - BSPC_LSFT_CLEAR -}; - -const uint16_t PROGMEM combo_up[] = {KC_W, KC_R, COMBO_END}; -const uint16_t PROGMEM combo_left[] = {KC_S, KC_E, COMBO_END}; -const uint16_t PROGMEM combo_right[] = {KC_F, KC_E, COMBO_END}; -const uint16_t PROGMEM combo_down[] = {KC_S, KC_F, COMBO_END}; -const uint16_t PROGMEM combo_prev_word[] = {KC_S, KC_LCTL, COMBO_END}; -const uint16_t PROGMEM combo_next_word[] = {KC_F, KC_LCTL, COMBO_END}; -const uint16_t PROGMEM combo_end[] = {KC_W, KC_E, COMBO_END}; -const uint16_t PROGMEM combo_home[] = {KC_E, KC_R, COMBO_END}; - -const uint16_t PROGMEM combo_enter[] = {KC_BSPC, KC_INS, COMBO_END}; - -const uint16_t PROGMEM combo_f1[] = {KC_1, KC_Q, COMBO_END}; -const uint16_t PROGMEM combo_f2[] = {KC_2, KC_W, COMBO_END}; -const uint16_t PROGMEM combo_f3[] = {KC_3, KC_E, COMBO_END}; -const uint16_t PROGMEM combo_f4[] = {KC_4, KC_R, COMBO_END}; -const uint16_t PROGMEM combo_f5[] = {KC_5, KC_T, COMBO_END}; -const uint16_t PROGMEM combo_f6[] = {KC_6, KC_Y, COMBO_END}; -const uint16_t PROGMEM combo_f7[] = {KC_7, KC_U, COMBO_END}; -const uint16_t PROGMEM combo_f8[] = {KC_8, KC_I, COMBO_END}; -const uint16_t PROGMEM combo_f9[] = {KC_9, KC_O, COMBO_END}; -const uint16_t PROGMEM combo_f10[] = {KC_0, KC_P, COMBO_END}; -const uint16_t PROGMEM combo_f11[] = {LT(GIT,KC_SLSH), KC_RSFT, COMBO_END}; -const uint16_t PROGMEM combo_f12[] = {KC_RALT, KC_RCTL, COMBO_END}; -const uint16_t PROGMEM combo_pscreen[] = {TO(WORKMAN), KC_RALT, COMBO_END}; - -const uint16_t PROGMEM done_sm[] = {KC_LEFT, KC_RIGHT, COMBO_END}; -const uint16_t PROGMEM clear_line_combo[] = {KC_BSPC, KC_LSFT, COMBO_END}; - -combo_t key_combos[] = { - [HOMEROW_UP] = COMBO(combo_up, KC_UP), - [HOMEROW_LEFT] = COMBO(combo_left, KC_LEFT), - [HOMEROW_RIGHT] = COMBO(combo_right, KC_RIGHT), - [HOMEROW_DOWN] = COMBO(combo_down, KC_DOWN), - [HOMEROW_PREV_WORD] = COMBO_ACTION(combo_prev_word), - [HOMEROW_NEXT_WORD] = COMBO_ACTION(combo_next_word), - [HOMEROW_HOME] = COMBO(combo_end, KC_HOME), - [HOMEROW_END] = COMBO(combo_home, KC_END), - - #if defined(KEYBOARD_ktec_ergodone) - [ED_ENTER] = COMBO(combo_enter, KC_ENTER), - - [ED_F1] = COMBO(combo_f1, KC_F1), - [ED_F2] = COMBO(combo_f2, KC_F2), - [ED_F3] = COMBO(combo_f3, KC_F3), - [ED_F4] = COMBO(combo_f4, KC_F4), - [ED_F5] = COMBO(combo_f5, KC_F5), - [ED_F6] = COMBO(combo_f6, KC_F6), - [ED_F7] = COMBO(combo_f7, KC_F7), - [ED_F8] = COMBO(combo_f8, KC_F8), - [ED_F9] = COMBO(combo_f9, KC_F9), - [ED_F10] = COMBO(combo_f10, KC_F10), - [ED_F11] = COMBO(combo_f11, KC_F11), - [ED_F12] = COMBO(combo_f12, KC_F12), - [ED_PSCREEN] = COMBO(combo_pscreen, KC_PRINT_SCREEN), - - [ED_CS_ENTER] = COMBO_ACTION(done_sm), - #endif - - [BSPC_LSFT_CLEAR] = COMBO_ACTION(clear_line_combo), -}; - -void process_combo_event(uint16_t combo_index, bool pressed) { - switch(combo_index) { - case HOMEROW_PREV_WORD: - if (pressed) { - if (is_win) { - tap_code16(C(KC_LEFT)); - } else { - tap_code16(A(KC_LEFT)); - } - } - break; - case HOMEROW_NEXT_WORD: - if (pressed) { - if (is_win) { - tap_code16(C(KC_RIGHT)); - } else { - tap_code16(A(KC_RIGHT)); - } - } - break; - case BSPC_LSFT_CLEAR: - if (pressed) { - tap_code16(KC_END); - tap_code16(S(KC_HOME)); - tap_code16(KC_BSPC); - } - break; - case ED_CS_ENTER: - if (pressed) { - tap_code16(C(S(KC_ENTER))); - } - break; - } -} - -bool combo_should_trigger(uint16_t combo_index, combo_t *combo, uint16_t keycode, keyrecord_t *record) { - return !layer_state_is(BASE); -} - -bool is_mac_with_base_layer_off(void) { - return !is_win && !layer_state_is(BASE); -} - -void switch_lang(void) { - if (is_win) { - SEND_STRING(SS_LALT(SS_TAP(X_LSFT))); - } else { - send_string(lang_switch_combo); - wait_ms(10); - } -} - -void press_n_times(int times, uint16_t key) { - for (int i=0; i 1 || char_to_del > 0) { - layer_off(GIT_C); - layer_off(GIT_R); - layer_off(GIT_S); - - press_n_times(char_to_bspace, KC_BACKSPACE); - char_to_bspace = 1; - press_n_times(char_to_del, KC_DEL); - char_to_del = 0; - - return false; - } - - if (is_mac_with_base_layer_off()) { - uint8_t mod_state = get_mods() & MOD_MASK_CTRL; - if (get_mods() & mod_state) { - del_mods(mod_state); - add_mods(MOD_LALT); - mac_ctrl_on = true; - } - } - return true; -} - -void send_string_with_translation(char *string) { - #if WORKMAN_TO_QWERTY_HW_MAPPING - if (layer_state_is(WORKMAN)) { - int isUpperCase = 0; - for (int i = 0; i < strlen(string); i++) { - char toPrint = string[i]; - if (isupper(toPrint)) { - if (toPrint == 'P') { - SEND_STRING(":"); - continue; - } - - isUpperCase = 1; - toPrint = tolower(toPrint); - } - switch (toPrint) { - case ':': - toPrint = 'I'; - break; - - case 'w': - toPrint = 'd'; - break; - case 'e': - toPrint = 'r'; - break; - case 'r': - toPrint = 'w'; - break; - case 't': - toPrint = 'b'; - break; - case 'y': - toPrint = 'j'; - break; - case 'u': - toPrint = 'f'; - break; - case 'i': - toPrint = 'u'; - break; - case 'o': - toPrint = 'p'; - break; - case 'p': - toPrint = ';'; - break; - - case 'd': - toPrint = 'h'; - break; - case 'f': - toPrint = 't'; - break; - case 'h': - toPrint = 'y'; - break; - case 'j': - toPrint = 'n'; - break; - case 'k': - toPrint = 'e'; - break; - case 'l': - toPrint = 'o'; - break; - case ';': - toPrint = 'i'; - break; - - case 'b': - toPrint = 'm'; - break; - case 'n': - toPrint = 'k'; - break; - case 'm': - toPrint = 'l'; - break; - } - if (isUpperCase) { - isUpperCase = 0; - toPrint = toupper(toPrint); - } - send_char(toPrint); - } - } else { - send_string(string); - } - #else - send_string(string); - #endif -} - -void send_string_remembering_length(char *string) { - send_string_with_translation(string); - char_to_bspace = strlen(string); -} - -void send_shifted_strings(char *string1, char *string2) { - if (get_mods() & MOD_MASK_SHIFT) { - clear_mods(); - send_string_remembering_length(string2); - } else { - send_string_remembering_length(string1); - } -} - -void send_shifted_strings_add(char *string1, char *string2) { - bool shifted = get_mods() & MOD_MASK_SHIFT; - clear_mods(); - - send_string_remembering_length(string1); - - if (shifted) { - send_string(string2); - char_to_bspace = strlen(string1) + strlen(string2); - } -} diff --git a/users/art/funcs/string_funcs.h b/users/art/funcs/string_funcs.h deleted file mode 100644 index 6d0c424245..0000000000 --- a/users/art/funcs/string_funcs.h +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2022 Artjoms Rizihs (@artjomsR) -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once -#include QMK_KEYBOARD_H - -bool is_mac_with_base_layer_off(void); -void switch_lang(void); -void press_n_times(int times, uint16_t key); -bool handle_del_bspace(void); -void send_string_with_translation(char *string); -void send_string_remembering_length(char *string); -void send_shifted_strings(char *string1, char *string2); -void send_shifted_strings_add(char *string1, char *string2); \ No newline at end of file diff --git a/users/art/rules.mk b/users/art/rules.mk deleted file mode 100644 index 9bf4d167fc..0000000000 --- a/users/art/rules.mk +++ /dev/null @@ -1,15 +0,0 @@ -SRC += art.c -SRC += funcs/led_funcs.c -SRC += funcs/string_funcs.c - -COMBO_ENABLE = yes - -# saving space -COMMAND_ENABLE = no -CONSOLE_ENABLE = no -GRAVE_ESC_ENABLE = no -LTO_ENABLE = yes -MAGIC_ENABLE = no -# MOUSEKEY_ENABLE = no -MUSIC_ENABLE = no -SPACE_CADET_ENABLE = no \ No newline at end of file diff --git a/users/art/secr.h.example b/users/art/secr.h.example deleted file mode 100644 index 468943fad2..0000000000 --- a/users/art/secr.h.example +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2022 Artjoms Rizihs (@artjomsR) -// SPDX-License-Identifier: GPL-2.0-or-later - -static char * secrets[] = { - "", - "", - "", - "" -}; \ No newline at end of file diff --git a/users/badger/README.md b/users/badger/README.md deleted file mode 100644 index fca1028a59..0000000000 --- a/users/badger/README.md +++ /dev/null @@ -1,31 +0,0 @@ -# A multi-OS keyboard layout with support for both Linux (KDE) and MacOS-specific QWERTY layouts for many 60-ish% keyboards ( - -## Author: [BlueTufa](https://github.com/BlueTufa) - -> Supported Keyboards: 1up RGB and HTE, Clueboard 66, dztech 60 RGB, and partial support for Preonic and Planck ortholinear keyboards. - -## Layouts - -### QWERTY -Default layer: Standard QWERTY layer with CAPS lock mapped to ESC. ESC is a Layer toggle, when held down it maps to KDE-specific MOVE layer. Dedicated Function key for ADJUST layer. I also take advantage of the AG_SWAP when using this keyboard on Linux, which swaps between ALT and GUI on both sides. - -Mac layer: Mostly the same as the default layer, except that the ESC key maps to a MacOS specific set of MOVE layer shortcuts. These leverage a piece of software called Rectangle, which makes up for some of the tiling shortcomings of MacOS. - -### MOVE layer -OS-specific convenience shortcuts. Macros are defined to make it easier to adapt these to other operating systems. The macros also help maintain the spacing that helps with the readability of the layers in source control. - -The main goal of the MOVE layer is to manage window move and resize, and jump to a specific virtual desktop. The other function is to expose VIM-style move keys as arrow keys to other applications. Some keys from ADJUST layer are also redefined here. - -Care was taken to keep the tiling and virtual desktop shortcuts as similar as possible between Linux and MacOS in this MOVE layer. The most notable difference is that I haven't found a good way to do corner tiling in Linux the way that it's supported in MacOS Rectangle. - -REMINDER: The 9-key left-hand pattern requires the installation of the MacOS rectangle app: - -```bash -brew cask install rectangle -``` - -### ADJUST layer -Access to function keys as well as media controls and keyboard settings. Some useful OS action keys are defined here as well. - -### Config layer -Access to Quantum keyboard controls as well as RGB configuration. If audio is supported it would belong in this layer as well. diff --git a/users/badger/badger.c b/users/badger/badger.c deleted file mode 100644 index 4551840610..0000000000 --- a/users/badger/badger.c +++ /dev/null @@ -1,49 +0,0 @@ -/* -Copyright 2020 Dan White - -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 . -*/ -#include "badger.h" - -bool _capsLockState; - -__attribute__ ((weak)) -void keyboard_post_init_user(void) { - _capsLockState = false; -} - -__attribute__ ((weak)) -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case CS_RIGHT: - if (record->event.pressed) { - SEND_STRING(SS_LALT(SS_TAP(X_B)SS_TAP(X_ENTER))); - return false; - } - break; - case CS_DOWN: - if (record->event.pressed) { - SEND_STRING(SS_LALT(SS_TAP(X_V)SS_TAP(X_ENTER))); - return false; - } - break; - case KC_CAPS: - if (record->event.pressed) { - _capsLockState = !_capsLockState; - return true; - } - break; - default: - return true; - } - return true; -} diff --git a/users/badger/badger.h b/users/badger/badger.h deleted file mode 100644 index bb2dcd0bd3..0000000000 --- a/users/badger/badger.h +++ /dev/null @@ -1,109 +0,0 @@ -/* -Copyright 2020 Dan White - -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 . -*/ -#pragma once - -#include QMK_KEYBOARD_H - -enum layers { - _QWERTY_MAC, - _MOVE_MAC, - _QWERTY_LINUX, - _MOVE_LINUX, - _ADJUST, - _CONFIG -}; - -enum CustomKeys { - CS_RIGHT = SAFE_RANGE, - CS_DOWN -}; - -#define OS_POP LCTL(KC_F10) -#define MAC_POP LCTL(KC_UP) -#define MAC_FRC LGUI(LALT(KC_ESC)) -#define OS_COPY LSFT(LCTL(KC_C)) -#define OS_PAST LSFT(LCTL(KC_V)) -#define MAC_PST LGUI(KC_V) -#define MAC_CPY LGUI(KC_C) -#define KC_BACK LCTL(LSFT(KC_LBRC)) -#define KC_NEXT LCTL(LSFT(KC_RBRC)) - -#define MOVE LT(_MOVE_LINUX, KC_ESC) -#define MOVE_MAC LT(_MOVE_MAC, KC_ESC) -#define ADJUST MO(_ADJUST) -#define CFG_MAC LT(_CONFIG, MAC_POP) -#define CFG_LNX LT(_CONFIG, OS_POP) - -#define WD_BACK LALT(KC_LEFT) -#define WD_FRWD LALT(KC_RIGHT) - -#define VD_1 LCTL(KC_F1) -#define VD_2 LCTL(KC_F2) -#define VD_3 LCTL(KC_F3) - -#define WM_UH LGUI(KC_UP) -#define WM_BH LGUI(KC_DOWN) -#define WM_LH LGUI(KC_LEFT) -#define WM_RH LGUI(KC_RIGHT) -#define WM_MAX LGUI(KC_PGUP) - -#define CM_RIGHT LGUI(KC_D) -#define CM_DOWN LGUI(LSFT(KC_D)) - -/* THESE are not defaults in KDE and must be set manually */ -#define WM_VD1 HYPR(KC_1) -#define WM_VD2 HYPR(KC_2) -#define WM_VD3 HYPR(KC_3) - -/* IntelliJ / JetBrains shortcuts with Mac keymap */ -#define IJ_BACK LGUI(LALT(KC_LEFT)) -#define IJ_FWD LGUI(LALT(KC_RIGHT)) -#define IJ_UP LGUI(LALT(KC_UP)) -#define IJ_DOWN LGUI(LALT(KC_DOWN)) -#define IJ_IMPL LGUI(LALT(KC_B)) -#define IJ_DECL LGUI(KC_B) -#define IJ_REN LSFT(KC_F6) -#define IJ_USAG LALT(KC_F7) -#define IJ_RUN KC_F9 -#define IJ_STEP KC_F8 -#define IJ_INTO LSFT(KC_F7) -#define IJ_OUT LSFT(KC_F8) -#define IJ_STOP LGUI(KC_F2) -#define IJ_IMPS LCTL(LALT(LSFT(KC_EQUAL))) -#define IJ_IMPH LCTL(LALT(LSFT(KC_MINUS))) -#define IJ_TOP LGUI(KC_HOME) -#define IJ_BOTT LGUI(KC_END) -#define IJ_FIND LGUI(LSFT(KC_F)) - -/* MacOS virtual desktop shortcuts */ -#define M_VD1 LCTL(KC_1) -#define M_VD2 LCTL(KC_2) -#define M_VD3 LCTL(KC_3) - -/* rectangle shortcuts */ -#define MM_ULCN LCTL(LGUI(KC_LEFT)) -#define MM_URCN LCTL(LGUI(KC_RIGHT)) -#define MM_LLCN LCTL(LSFT(LGUI(KC_LEFT))) -#define MM_LRCN LCTL(LSFT(LGUI(KC_RIGHT))) -#define MM_MAX LALT(LGUI(KC_F)) -#define MM_LH HYPR(KC_LBRC) -#define MM_RH HYPR(KC_RBRC) -#define MM_UH LALT(LGUI(KC_UP)) -#define MM_BH LALT(LGUI(KC_DOWN)) -#define MM_LEFT LCTL(LALT(LGUI(KC_LEFT))) -#define MM_RGHT LCTL(LALT(LGUI(KC_RIGHT))) - -#define DF_1 DF(_QWERTY_MAC) -#define DF_2 DF(_QWERTY_LINUX) diff --git a/users/badger/ortho.c b/users/badger/ortho.c deleted file mode 100644 index ff84e1706f..0000000000 --- a/users/badger/ortho.c +++ /dev/null @@ -1,151 +0,0 @@ -/* -Copyright 2020 Dan White - -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 . -*/ -#include "ortho.h" -#include "badger.h" - -int _currentLayer; -bool _capsLock; - -#ifdef AUDIO_ENABLE -float capsOnSong[][2] = SONG(CAPS_ON); -float capsOffSong[][2] = SONG(CAPS_OFF); -float defaultLayerSong[][2] = SONG(QWERTY_LAYER_SONG); -float moveLayerSong[][2] = SONG(MOVE_LAYER_SONG); -float macLayerSong[][2] = SONG(MAC_LAYER_SONG); -float raiseLayerSong[][2] = SONG(RAISE_LAYER_SONG); -float lowerLayerSong[][2] = SONG(LOWER_LAYER_SONG); -float agSwapSong[][2] = SONG(LONG_AG_SWAP); -float agNormSong[][2] = SONG(LONG_AG_NORM); -#endif - -__attribute__ ((weak)) -void keyboard_post_init_user(void) { - _capsLock = false; - _currentLayer = _QWERTY_MAC_ORTHO; - layer_on(_currentLayer); -} - -__attribute__ ((weak)) -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - dprintf("Key event recorded. KEYCODE: %u , event: %u\n", keycode, record->event.pressed); - switch (keycode) { - case CS_RIGHT: - if (record->event.pressed) { - SEND_STRING(SS_LALT(SS_TAP(X_B)SS_TAP(X_ENTER))); - return false; - } - break; - case CS_DOWN: - if (record->event.pressed) { - SEND_STRING(SS_LALT(SS_TAP(X_V)SS_TAP(X_ENTER))); - return false; - } - break; - case KC_CAPS: - if (record->event.pressed) { - dprintf("CAPS_LOCK state: %u\n", _capsLock); - _capsLock = !_capsLock; - #ifdef AUDIO_ENABLE - _capsLock ? PLAY_SONG(capsOnSong) : PLAY_SONG(capsOffSong); - #endif - return true; - } - break; - case AG_SWAP: - #ifdef AUDIO_ENABLE - PLAY_SONG(agSwapSong); - #endif - return true; - break; - case AG_NORM: - #ifdef AUDIO_ENABLE - PLAY_SONG(agNormSong); - #endif - return true; - break; - case KC_MAC2: - if (record->event.pressed) { - SEND_STRING("ll\n"); - return false; - } - break; - case KC_MAC1: - if (record->event.pressed) { - SEND_STRING("open https://www.reddit.com/r/mechanicalkeyboards\n"); - return false; - } - break; - case KC_FIRST: - if (record->event.pressed) { - // don't turn off the QWERTY layer - if (_currentLayer != _QWERTY_MAC_ORTHO) { - layer_off(_currentLayer); - } - _currentLayer = _QWERTY_MAC_ORTHO; - layer_on(_currentLayer); - playSongForLayer(_currentLayer); - return false; - } - break; - case KC_LYRC: - if (record->event.pressed) { - dprintf("LYR CYCLE pressed %u, CURRENT_LAYER: %u\n", keycode, _currentLayer); - // don't turn off the QWERTY layer or the ADJUST layer - if (_currentLayer != _QWERTY_MAC_ORTHO) { - layer_off(_currentLayer); - } - // don't lock the ADJUST layer - // since this key is accessible via the ADJUST - // layer, as it will require tricky state management - if (++_currentLayer == _ADJUST_ORTHO) { - _currentLayer = _QWERTY_MAC_ORTHO; - } else { - layer_on(_currentLayer); - } - - playSongForLayer(_currentLayer); - return false; - } - break; - } - return true; -} - -void playSongForLayer(int currentLayer) { - #ifdef AUDIO_ENABLE - switch (currentLayer) { - case _QWERTY_LINUX: - PLAY_SONG(defaultLayerSong); - break; - case _MOVE_LINUX: - PLAY_SONG(moveLayerSong); - break; - case _QWERTY_MAC: - PLAY_SONG(macLayerSong); - break; - case _MOVE_MAC: - PLAY_SONG(moveLayerSong); - break; - case _RAISE: - PLAY_SONG(raiseLayerSong); - break; - case _LOWER: - PLAY_SONG(lowerLayerSong); - break; - default: - break; - } - #endif -} \ No newline at end of file diff --git a/users/badger/ortho.h b/users/badger/ortho.h deleted file mode 100644 index 207f2e2822..0000000000 --- a/users/badger/ortho.h +++ /dev/null @@ -1,58 +0,0 @@ -/* -Copyright 2020 Dan White - -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 . -*/ -#pragma once - -#include "badger.h" - -enum OrthoLayers { - _QWERTY_MAC_ORTHO, - _MOVE_MAC_ORTHO, - _QWERTY_LINUX_ORTHO, - _MOVE_LINUX_ORTHO, - _RAISE, - _LOWER, - _ADJUST_ORTHO -}; - -enum OrthoKeys { - KC_MAC1 = CS_DOWN + 1, - KC_MAC2, - KC_LYRC, - KC_FIRST -}; - -#define P_ADJ LT(_ADJUST_ORTHO, KC_BSPC) -#define RAISE MO(_RAISE) -#define LOWER MO(_LOWER) -#define MOMAC LT(_MOVE_MAC_ORTHO, KC_ESC) -#define MOLNX LT(_MOVE_LINUX_ORTHO, KC_ESC) - -void playSongForLayer(int currentLayer); - -#ifdef AUDIO_ENABLE -#define QWERTY_LAYER_SONG H__NOTE(_G6), H__NOTE(_D6), Q__NOTE(_A5), Q__NOTE(_E5), -#define MAC_LAYER_SONG H__NOTE(_E5), H__NOTE(_A5), Q__NOTE(_D6), Q__NOTE(_G6), \ - ED_NOTE(_E7), E__NOTE(_CS7), E__NOTE(_E6), E__NOTE(_A6), M__NOTE(_CS7, 20), -#define LONG_AG_SWAP Q__NOTE(_G5), Q__NOTE(_D6), Q__NOTE(_A6), Q__NOTE(_E7), \ - SD_NOTE(_B5), SD_NOTE(_A5), SD_NOTE(_B5), SD_NOTE(_A5), -#define LONG_AG_NORM Q__NOTE(_DS4), Q__NOTE(_DS4), B__NOTE(_C5), -#define MOVE_LAYER_SONG E__NOTE(_GS6), E__NOTE(_A6), S__NOTE(_REST), ED_NOTE(_E7), \ - S__NOTE(_REST), ED_NOTE(_GS7), -#define RAISE_LAYER_SONG W__NOTE(_BF5), Q__NOTE(_A5), W__NOTE(_BF5), Q__NOTE(_A5), W__NOTE(_E6), Q__NOTE(_B5), -#define LOWER_LAYER_SONG Q__NOTE(_DS4), E__NOTE(_DS4), E__NOTE(_DS6), Q__NOTE(_DS5), \ - E__NOTE(_DS5), E__NOTE(_DS6), Q__NOTE(_E5), E__NOTE(_E5), E__NOTE(_DS6), Q__NOTE(_DS5), -#define CAPS_ON W__NOTE(_E5), Q__NOTE(_BF5), W__NOTE(_E5), Q__NOTE(_BF5), W__NOTE(_E5), Q__NOTE(_BF5), -#define CAPS_OFF W__NOTE(_E5), Q__NOTE(_BF5), -#endif diff --git a/users/badger/rules.mk b/users/badger/rules.mk deleted file mode 100644 index 4f1507b8f3..0000000000 --- a/users/badger/rules.mk +++ /dev/null @@ -1,2 +0,0 @@ -SRC += badger.c -SRC += ortho.c diff --git a/users/bcat/bcat.c b/users/bcat/bcat.c deleted file mode 100644 index 3a407cfac0..0000000000 --- a/users/bcat/bcat.c +++ /dev/null @@ -1,61 +0,0 @@ -/* Copyright 2021 Jonathan Rascher - * - * 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 . - */ - -#include "bcat.h" - -#include "quantum.h" - -static int8_t alt_tab_layer = -1; - -__attribute__((weak)) void process_record_oled(uint16_t keycode, const keyrecord_t *record) {} -__attribute__((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; } - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - process_record_oled(keycode, record); - if (!process_record_keymap(keycode, record)) { - return false; - } - switch (keycode) { - /* Alt+Tab that holds Alt until current layer is released: */ - case MC_ALTT: - if (record->event.pressed) { - if (alt_tab_layer < 0) { - alt_tab_layer = layer_switch_get_layer(record->event.key); - register_code(KC_LALT); - } - register_code(KC_TAB); - } else { - unregister_code(KC_TAB); - } - return false; - default: - return true; - } -} - -__attribute__((weak)) layer_state_t layer_state_set_keymap(layer_state_t state) { return state; } - -layer_state_t layer_state_set_user(layer_state_t state) { - state = layer_state_set_keymap(state); -#if defined(BCAT_ORTHO_LAYERS) - state = update_tri_layer_state(state, LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST); -#endif - if (alt_tab_layer >= 0 && !layer_state_cmp(state, alt_tab_layer)) { - unregister_code(KC_LALT); - alt_tab_layer = -1; - } - return state; -} diff --git a/users/bcat/bcat.h b/users/bcat/bcat.h deleted file mode 100644 index fb500b3b3b..0000000000 --- a/users/bcat/bcat.h +++ /dev/null @@ -1,58 +0,0 @@ -/* Copyright 2021 Jonathan Rascher - * - * 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 . - */ - -#pragma once - -#include - -#include "quantum_keycodes.h" - -/* Layer numbers shared across keymaps. */ -enum user_layer { - /* Base layers: */ - LAYER_DEFAULT, - -#if defined(BCAT_ORTHO_LAYERS) - /* Function layers for ortho (and ergo) boards: */ - LAYER_LOWER, - LAYER_RAISE, - LAYER_ADJUST, -#else - /* Function layers for traditional boards: */ - LAYER_FUNCTION_1, - LAYER_FUNCTION_2, -#endif -}; - -/* Custom keycodes shared across keymaps. */ -enum user_keycode { - MC_ALTT = SAFE_RANGE, - KEYMAP_SAFE_RANGE, -}; - -/* Keycode aliases shared across keymaps. */ -#define KY_CSPC LCTL(KC_SPC) -#define KY_ZMIN LCTL(KC_EQL) -#define KY_ZMOUT LCTL(KC_MINS) -#define KY_ZMRST LCTL(KC_0) - -#if defined(BCAT_ORTHO_LAYERS) -# define LY_LWR MO(LAYER_LOWER) -# define LY_RSE MO(LAYER_RAISE) -#else -# define LY_FN1 MO(LAYER_FUNCTION_1) -# define LY_FN2 MO(LAYER_FUNCTION_2) -#endif diff --git a/users/bcat/bcat_oled.c b/users/bcat/bcat_oled.c deleted file mode 100644 index 390c9127b4..0000000000 --- a/users/bcat/bcat_oled.c +++ /dev/null @@ -1,216 +0,0 @@ -/* Copyright 2021 Jonathan Rascher - * - * 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 . - */ - -#include "bcat_oled.h" - -#include "quantum.h" -#include "bcat.h" - -#if defined(BCAT_OLED_PET) -# include "bcat_oled_pet.h" -#endif - -#define TRIANGLE_UP 0x1e -#define TRIANGLE_DOWN 0x1f - -#if defined(BCAT_OLED_PET) -static bool oled_pet_should_jump = false; -#endif - -/* Should be overridden by the keymap to render the OLED contents. For split - * keyboards, this function is only called on the master side. - */ -__attribute__((weak)) void oled_task_keymap(const oled_keyboard_state_t *keyboard_state) {} - -bool oled_task_user(void) { -#if defined(SPLIT_KEYBOARD) - if (is_keyboard_master()) { -#endif - /* Custom OLED timeout implementation that only considers user activity. - * Allows the OLED to turn off in the middle of a continuous animation. - */ - static const uint16_t TIMEOUT_MILLIS = 60000 /* 1 min */; - - if (last_input_activity_elapsed() < TIMEOUT_MILLIS) { - if (!is_oled_on()) { - oled_on(); - } - oled_keyboard_state_t keyboard_state = { - .mods = get_mods(), - .leds = host_keyboard_led_state(), - .wpm = get_current_wpm(), - }; - oled_task_keymap(&keyboard_state); - } else if (is_oled_on()) { - oled_off(); - } -#if defined(SPLIT_KEYBOARD) - } else { - /* Display logo embedded at standard location in the OLED font on the - * slave side. By default, this is a "QMK firmware" logo, but many - * keyboards substitute their own logo. Occupies 21x3 character cells. - * - * Since the slave display buffer never changes, we don't need to worry - * about oled_render incorrectly turning the OLED on. Instead, we rely - * on SPLIT_OLED_ENABLE to propagate OLED on/off status from master. - */ - static const char PROGMEM logo[] = { - // clang-format off - 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, - 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, - 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, - 0x00, - // clang-format on - }; - - oled_write_P(logo, /*invert=*/false); - } -#endif - - return false; -} - -void render_oled_layers(void) { - oled_advance_char(); - oled_advance_char(); -#if defined(BCAT_ORTHO_LAYERS) - oled_write_char(IS_LAYER_ON(LAYER_LOWER) ? TRIANGLE_DOWN : ' ', /*invert=*/false); - oled_advance_char(); - oled_write_char(IS_LAYER_ON(LAYER_RAISE) ? TRIANGLE_UP : ' ', /*invert=*/false); -#else - switch (get_highest_layer(layer_state)) { - case LAYER_FUNCTION_1: - oled_write_P(PSTR("FN1"), /*invert=*/false); - break; - case LAYER_FUNCTION_2: - oled_write_P(PSTR("FN2"), /*invert=*/false); - break; - default: - oled_write_P(PSTR(" "), /*invert=*/false); - break; - } -#endif -} - -void render_oled_indicators(led_t leds) { - oled_advance_char(); - oled_advance_char(); - oled_write_P(leds.num_lock ? PSTR("NUM") : PSTR(" "), /*invert=*/false); - oled_advance_char(); - oled_advance_char(); - oled_write_P(leds.caps_lock ? PSTR("CAP") : PSTR(" "), /*invert=*/false); - oled_advance_char(); - oled_advance_char(); - oled_write_P(leds.scroll_lock ? PSTR("SCR") : PSTR(" "), /*invert=*/false); -} - -void render_oled_wpm(uint8_t wpm) { - static const uint16_t UPDATE_MILLIS = 100; - static uint32_t update_timeout = 0; - - if (timer_expired32(timer_read32(), update_timeout)) { - oled_advance_char(); - oled_advance_char(); - oled_write_P(wpm > 0 ? PSTR("WPM") : PSTR(" "), /*invert=*/false); - if (wpm > 0) { - oled_advance_char(); - oled_advance_char(); - oled_write(get_u8_str(wpm, ' '), /*invert=*/false); - } else { - oled_advance_page(/*clearPageRemainder=*/true); - } - - update_timeout = timer_read32() + UPDATE_MILLIS; - } -} - -#if defined(BCAT_OLED_PET) -void process_record_oled(uint16_t keycode, const keyrecord_t *record) { - switch (keycode) { - case KC_SPACE: - if (oled_pet_can_jump()) { - oled_pet_should_jump = record->event.pressed; - } - break; - default: - break; - } -} - -static void redraw_oled_pet(uint8_t col, uint8_t line, bool jumping, oled_pet_state_t state) { - oled_set_cursor(col, line); - if (jumping) { - oled_write_raw_P(oled_pet_frame(state), oled_pet_frame_bytes()); - oled_set_cursor(col, line + oled_pet_frame_lines()); - oled_advance_page(/*clearPageRemainder=*/true); - } else { - oled_advance_page(/*clearPageRemainder=*/true); - oled_write_raw_P(oled_pet_frame(state), oled_pet_frame_bytes()); - } -} - -void render_oled_pet(uint8_t col, uint8_t line, const oled_keyboard_state_t *keyboard_state) { - /* Current animation to draw. We track changes to avoid redrawing the same - * frame repeatedly, allowing oled_pet_post_render to draw over the - * animation frame. - */ - static oled_pet_state_t state = 0; - static bool state_changed = true; - - /* Minimum time until the pet comes down after jumping. */ - static const uint16_t JUMP_MILLIS = 200; - static bool jumping = false; - - /* Time until the next animation or jump state change. */ - static uint32_t update_timeout = 0; - static uint32_t jump_timeout = 0; - - /* If the user pressed the jump key, immediately redraw instead of waiting - * for the animation frame to update. That way, the pet appears to respond - * to jump commands quickly rather than lagging. If the user released the - * jump key, wait for the jump timeout to avoid overly brief jumps. - */ - bool redraw = state_changed; - if (oled_pet_should_jump && !jumping) { - redraw = true; - jumping = true; - jump_timeout = timer_read32() + JUMP_MILLIS; - } else if (!oled_pet_should_jump && jumping && timer_expired32(timer_read32(), jump_timeout)) { - redraw = true; - jumping = false; - } - - /* Draw the actual animation, then move the cursor to the end of the - * rendered area. (Note that we take up an extra line to account for - * jumping, which shifts the animation up or down a line.) - */ - if (redraw) { - redraw_oled_pet(col, line, jumping, state); - } - oled_pet_post_render(col, line + !jumping, keyboard_state, redraw); - oled_set_cursor(col, line + oled_pet_frame_lines() + 1); - - /* If the update timer expired, recompute the pet's animation state. */ - if (timer_expired32(timer_read32(), update_timeout)) { - oled_pet_state_t new_state = oled_pet_next_state(state, keyboard_state); - state_changed = new_state != state; - state = new_state; - update_timeout = timer_read32() + oled_pet_update_millis(keyboard_state); - } else { - state_changed = false; - } -} -#endif diff --git a/users/bcat/bcat_oled.h b/users/bcat/bcat_oled.h deleted file mode 100644 index f617e1f064..0000000000 --- a/users/bcat/bcat_oled.h +++ /dev/null @@ -1,55 +0,0 @@ -/* Copyright 2021 Jonathan Rascher - * - * 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 . - */ - -#pragma once - -#include -#include - -#include "led.h" - -/* Keyboard status passed to the oled_task_keymap function and used by the - * various keyboard pet implementations. - */ -typedef struct { - uint8_t mods; - led_t leds; - uint8_t wpm; -} oled_keyboard_state_t; - -/* Note: Functions below assume a vertical OLED that is 32px (5 chars) wide. */ - -/* Renders layer status at the cursor. Occupies 5x1 character cells. */ -void render_oled_layers(void); - -/* Renders LED indicators (Num/Caps/Scroll Lock) at the cursor. Occupies 5x3 - * character cells. - */ -void render_oled_indicators(led_t leds); - -/* Renders calculated WPM count at the cursor. Occupies 5x2 character cells. */ -void render_oled_wpm(uint8_t wpm); - -#if defined(BCAT_OLED_PET) -/* Renders an animated critter at the cursor that can respond to keystrokes, - * typing speed, etc. Should be about 5 character cells wide, but exact height - * varies depending on the specific OLED pet implementation linked in. - * - * The rendered image will be one line taller than the OLED pet's animation - * frame height to accommodate pets that "jump" when the spacebar is pressed. - */ -void render_oled_pet(uint8_t col, uint8_t line, const oled_keyboard_state_t *keyboard_state); -#endif diff --git a/users/bcat/bcat_oled_pet.h b/users/bcat/bcat_oled_pet.h deleted file mode 100644 index ba8227ab61..0000000000 --- a/users/bcat/bcat_oled_pet.h +++ /dev/null @@ -1,73 +0,0 @@ -/* Copyright 2021 Jonathan Rascher - * - * 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 . - */ - -/* Common interface for an OLED pet (animated critter that reacts to typing). - * Please link exactly one accompanying .c file to implement these functions. - */ - -#pragma once - -#include -#include - -#include "bcat_oled.h" - -/* Opaque token representing a single frame of the OLED pet animation. - * Different pet implementations have different valid state values, but the - * zero value must always represent the default state of the pet at startup. - */ -typedef uint16_t oled_pet_state_t; - -/* Returns the number of bytes used to represent the animation frame (in - * oled_write_raw_P format). Note that every state the pet supports is expected - * to have the same frame size. - */ -uint16_t oled_pet_frame_bytes(void); - -/* Returns the number of lines of the OLED occupied by the animation. Note that - * every state the pet supports is expected to have the same frame size. The - * returned value does not include the one line of padding that render_oled_pet - * uses to account for "jumping". - */ -uint8_t oled_pet_frame_lines(void); - -/* Returns whether or not the OLED pet should "jump" when the spacebar is - * pressed. (The render_oled_pet implementation shifts the animation frame up - * one line when this happens.) - */ -bool oled_pet_can_jump(void); - -/* Returns the delay before the next animation frame should be displayed. */ -uint16_t oled_pet_update_millis(const oled_keyboard_state_t *keyboard_state); - -/* Returns the state of the pet to be animated on the next animation tick. */ -oled_pet_state_t oled_pet_next_state(oled_pet_state_t state, const oled_keyboard_state_t *keyboard_state); - -/* Called after the OLED pet is rendered during each OLED task invocation. - * Receives the same keyboard state as render_oled_pet. The redraw param - * indicates whether or not an OLED frame was just redrawn, allowing a specific - * pet implementation to draw custom things atop its animation frames. - * - * When this function is called, the cursor will be in an unspecified location, - * not necessarily the top-left corner of the OLED pet. - */ -void oled_pet_post_render(uint8_t col, uint8_t line, const oled_keyboard_state_t *keyboard_state, bool redraw); - -/* Returns a PROGMEM pointer to the specified frame buffer for the specified - * state. The animation frame has length given by oled_pet_frame_bytes and is - * formatted as expected by oled_write_raw_P. - */ -const char *oled_pet_frame(oled_pet_state_t state); diff --git a/users/bcat/bcat_oled_pet_isda.c b/users/bcat/bcat_oled_pet_isda.c deleted file mode 100644 index 98abddb13b..0000000000 --- a/users/bcat/bcat_oled_pet_isda.c +++ /dev/null @@ -1,134 +0,0 @@ -/* Copyright 2018 sparrow666 - * Copyright 2021 Jonathan Rascher - * - * 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 . - */ - -/* OLED pet "Isda" (animated unicorn) featuring artwork by OpenGameArt user - * sparrow666, licensed under GPL v2.0. - * - * The animation is 32x72 pixels (9 lines tall). - * - * Runs faster the quicker you type. Shows LED indicator (Num/Caps/Scroll Lock) - * status in the bottom-right corner. - * - * Named after the goddess Ehlonna's personal unicorn in the first D&D campaign - * I ever played. :) - * - * Artwork source: https://opengameart.org/content/unicorn-2 - */ - -#include "bcat_oled_pet.h" - -#include -#include - -#include "bcat_oled.h" -#include "led.h" -#include "oled_driver.h" -#include "progmem.h" - -#define NUM_FRAMES 4 -#define FRAME_BYTES 288 /* (32 pixel) * (72 pixel) / (8 pixel/byte) */ - -uint16_t oled_pet_frame_bytes(void) { return FRAME_BYTES; } -uint8_t oled_pet_frame_lines(void) { return 9 /* (72 pixel) / (8 pixel/line) */; } -bool oled_pet_can_jump(void) { return false; } - -uint16_t oled_pet_update_millis(const oled_keyboard_state_t *keyboard_state) { - static const uint16_t MIN_MILLIS = 75; - static const uint16_t MAX_MILLIS = 300; - static const uint8_t MAX_WPM = 150; - uint8_t wpm = keyboard_state->wpm; - if (wpm > MAX_WPM) { - wpm = MAX_WPM; - } - return MAX_MILLIS - (MAX_MILLIS - MIN_MILLIS) * wpm / MAX_WPM; -} - -oled_pet_state_t oled_pet_next_state(oled_pet_state_t state, const oled_keyboard_state_t *keyboard_state) { - /* When the user stops typing, cycle the animation to frame 0 and stop. */ - return state != 0 || keyboard_state->wpm > 0 ? (state + 1) % NUM_FRAMES : 0; -} - -void oled_pet_post_render(uint8_t col, uint8_t line, const oled_keyboard_state_t *keyboard_state, bool redraw) { - /* Draws LED indicator status in the bottom-right corner of the OLED pet, - * atop the animation frame. Redrawn only when necessary, e.g., when LED - * status changes or the animation itself updated (which overwrites any - * previously drawn indicators). - */ - static led_t prev_leds = {.raw = 0}; - led_t leds = keyboard_state->leds; - if (redraw || leds.raw != prev_leds.raw) { - oled_set_cursor(col + 4, line + 4); - oled_write_char(leds.num_lock ? 'N' : ' ', /*invert=*/false); - oled_set_cursor(col + 4, line + 6); - oled_write_char(leds.caps_lock ? 'C' : ' ', /*invert=*/false); - oled_set_cursor(col + 4, line + 8); - oled_write_char(leds.scroll_lock ? 'S' : ' ', /*invert=*/false); - prev_leds = leds; - } -} - -const char *oled_pet_frame(oled_pet_state_t state) { - static const char PROGMEM FRAMES[NUM_FRAMES][FRAME_BYTES] = { - // clang-format off - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0xa0, 0x60, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x88, 0xd0, 0x78, 0x04, 0x28, 0x70, 0x60, 0x90, 0x88, 0xc4, 0x22, 0x19, 0x04, 0x03, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xfc, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x84, 0x8c, 0x08, 0x01, 0x01, 0x02, 0x02, 0x04, 0x88, 0xf0, 0x00, - 0xc0, 0xe0, 0xe0, 0x10, 0x10, 0x08, 0x04, 0x02, 0x01, 0xff, 0xff, 0xff, 0x7f, 0x0f, 0x1f, 0x00, 0x00, 0x00, 0xf8, 0x07, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0xe0, 0x18, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfc, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0x3c, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x03, 0xc6, 0x3c, 0x00, 0x80, 0x70, 0x1c, 0x0f, 0x03, 0x0f, 0x3f, 0xff, 0xff, 0xfc, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0x80, 0xe0, 0xf8, 0xfe, 0x7f, 0x1f, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x0e, 0x30, 0x40, 0x47, 0x4f, 0x77, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0xc0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0xa0, 0xf0, 0x08, 0x50, 0xe0, 0xc0, 0x20, 0x10, 0x88, 0x44, 0x32, 0x09, 0x06, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf8, 0xfe, 0xff, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x08, 0x19, 0x11, 0x03, 0x02, 0x04, 0x04, 0x08, 0x10, 0xe0, 0x00, - 0xc0, 0xe0, 0xe0, 0x10, 0x10, 0x08, 0x04, 0x02, 0x01, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x3f, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x00, - 0x00, 0x1f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0x03, 0x00, 0x00, 0x80, 0xc0, 0x20, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0x3c, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x03, 0xc6, 0x3c, 0x00, 0x80, 0x70, 0x18, 0x0f, 0x03, 0x0f, 0x3f, 0xff, 0xff, 0xfc, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xc0, 0x38, 0x07, 0xc0, 0x38, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x7f, 0xff, 0xff, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x21, 0x20, 0x1e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0xc0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0xa0, 0xf0, 0x08, 0x50, 0xe0, 0xc0, 0x20, 0x10, 0x88, 0x44, 0x32, 0x09, 0x06, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf8, 0xfe, 0xff, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x08, 0x19, 0x11, 0x03, 0x02, 0x04, 0x04, 0x08, 0x10, 0xe0, 0x00, - 0xc0, 0xc0, 0xc0, 0x20, 0x20, 0x10, 0x08, 0x04, 0x03, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x3f, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x00, - 0x00, 0x1f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0x03, 0x00, 0x00, 0x80, 0xc0, 0x20, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x03, 0xc3, 0xfe, 0xfe, 0xfc, 0x7c, 0x1c, 0x0c, 0x0c, 0x08, 0x10, 0x60, 0x83, 0x07, 0x18, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x71, 0x0e, 0x80, 0x70, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x0f, 0x3f, 0x7f, 0x7f, 0x78, 0xe0, 0x90, 0x88, 0x66, 0x11, 0x08, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0xa0, 0x60, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x88, 0xd0, 0x78, 0x04, 0x28, 0x70, 0x60, 0x90, 0x88, 0xc4, 0x22, 0x19, 0x04, 0x03, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xfc, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x84, 0x8c, 0x08, 0x01, 0x01, 0x02, 0x02, 0x04, 0x88, 0xf0, 0x00, - 0xc0, 0xe0, 0xe0, 0x10, 0x10, 0x08, 0x04, 0x02, 0x01, 0xff, 0xff, 0xff, 0x7f, 0x0f, 0x1f, 0x00, 0x00, 0x00, 0xf8, 0x07, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0xe0, 0x18, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xe0, 0xfc, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x03, 0xc6, 0xfc, 0xfc, 0xfc, 0x7c, 0x18, 0x08, 0x08, 0x08, 0x30, 0xc0, 0x03, 0x0c, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xc0, 0xf8, 0xff, 0xff, 0x3f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0e, 0x70, 0x80, 0x1f, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x18, 0x3e, 0x3f, 0x3f, 0x1f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x0c, 0x09, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - // clang-format on - }; - return FRAMES[state]; -} diff --git a/users/bcat/bcat_oled_pet_luna.c b/users/bcat/bcat_oled_pet_luna.c deleted file mode 100644 index f0397c9c05..0000000000 --- a/users/bcat/bcat_oled_pet_luna.c +++ /dev/null @@ -1,168 +0,0 @@ -/* Copyright 2021 HellSingCoder - * Copyright 2021 Jonathan Rascher - * - * 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 . - */ - -/* OLED pet "Luna" (animated doggo) originally by HellSingCoder - * (https://www.simonepellegrino.com/) and licensed under GPL v2.0, adapted to - * fit the OLED pet framework in bcat's userspace. - * - * The animation is 32x24 pixels (3 lines tall). - * - * Walks or runs in response to typing speed. Sneaks when Ctrl is pressed and - * barks when Caps Lock is on. Jumps when space is pressed. - * - * Original source: - * https://github.com/qmk/qmk_firmware/blob/6dfe915e26d7147e6c2bed495d3b01cf5b21e6ec/keyboards/sofle/keymaps/helltm/keymap.c - */ - -#include "bcat_oled_pet.h" - -#include -#include - -#include "bcat_oled.h" -#include "keycode.h" -#include "progmem.h" - -enum image { - IMAGE_IDLE, - IMAGE_WALK, - IMAGE_RUN, - IMAGE_SNEAK, - IMAGE_BARK, -}; - -typedef union { - oled_pet_state_t raw; - struct { - uint8_t image; - uint8_t frame; - }; -} luna_state_t; - -#define NUM_FRAMES 2 -#define FRAME_BYTES 96 /* (32 pixel) * (24 pixel) / (8 pixel/byte) */ - -uint16_t oled_pet_frame_bytes(void) { return FRAME_BYTES; } -uint8_t oled_pet_frame_lines(void) { return 3 /* (24 pixel) / (8 pixel/line) */; } -bool oled_pet_can_jump(void) { return true; } - -uint16_t oled_pet_update_millis(const oled_keyboard_state_t *keyboard_state) { return 200; } - -oled_pet_state_t oled_pet_next_state(oled_pet_state_t state, const oled_keyboard_state_t *keyboard_state) { - luna_state_t luna_state = {.raw = state}; - if (keyboard_state->leds.caps_lock) { - luna_state.image = IMAGE_BARK; - } else if (keyboard_state->mods & MOD_MASK_CTRL) { - luna_state.image = IMAGE_SNEAK; - } else if (keyboard_state->wpm >= 100) { - luna_state.image = IMAGE_RUN; - } else if (keyboard_state->wpm >= 25) { - luna_state.image = IMAGE_WALK; - } else { - luna_state.image = IMAGE_IDLE; - } - luna_state.frame = (luna_state.frame + 1) % NUM_FRAMES; - return luna_state.raw; -} - -void oled_pet_post_render(uint8_t col, uint8_t line, const oled_keyboard_state_t *keyboard_state, bool redraw) {} - -const char *oled_pet_frame(oled_pet_state_t state) { - static const char PROGMEM IDLE_FRAMES[NUM_FRAMES][FRAME_BYTES] = { - // clang-format off - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1c, 0x02, 0x05, 0x02, 0x24, 0x04, 0x04, 0x02, 0xa9, 0x1e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x08, 0x68, 0x10, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x82, 0x7c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x0c, 0x10, 0x10, 0x20, 0x20, 0x20, 0x28, 0x3e, 0x1c, 0x20, 0x20, 0x3e, 0x0f, 0x11, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1c, 0x02, 0x05, 0x02, 0x24, 0x04, 0x04, 0x02, 0xa9, 0x1e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x90, 0x08, 0x18, 0x60, 0x10, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0e, 0x82, 0x7c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x0c, 0x10, 0x10, 0x20, 0x20, 0x20, 0x28, 0x3e, 0x1c, 0x20, 0x20, 0x3e, 0x0f, 0x11, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - // clang-format on - }; - static const char PROGMEM WALK_FRAMES[NUM_FRAMES][FRAME_BYTES] = { - // clang-format off - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x90, 0x90, 0x90, 0xa0, 0xc0, 0x80, 0x80, 0x80, 0x70, 0x08, 0x14, 0x08, 0x90, 0x10, 0x10, 0x08, 0xa4, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0xfc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x18, 0xea, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1c, 0x20, 0x20, 0x3c, 0x0f, 0x11, 0x1f, 0x03, 0x06, 0x18, 0x20, 0x20, 0x3c, 0x0c, 0x12, 0x1e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x20, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x28, 0x10, 0x20, 0x20, 0x20, 0x10, 0x48, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x20, 0xf8, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, 0x30, 0xd5, 0x20, 0x1f, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x20, 0x30, 0x0c, 0x02, 0x05, 0x09, 0x12, 0x1e, 0x02, 0x1c, 0x14, 0x08, 0x10, 0x20, 0x2c, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - // clang-format on - }; - static const char PROGMEM RUN_FRAMES[NUM_FRAMES][FRAME_BYTES] = { - // clang-format off - { - 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x08, 0x08, 0xc8, 0xb0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x3c, 0x14, 0x04, 0x08, 0x90, 0x18, 0x04, 0x08, 0xb0, 0x40, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0xc4, 0xa4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc8, 0x58, 0x28, 0x2a, 0x10, 0x0f, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x09, 0x04, 0x04, 0x04, 0x04, 0x02, 0x03, 0x02, 0x01, 0x01, 0x02, 0x02, 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0xe0, 0x10, 0x10, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x78, 0x28, 0x08, 0x10, 0x20, 0x30, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, 0xf9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0xb0, 0x50, 0x55, 0x20, 0x1f, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, 0x02, 0x1e, 0x20, 0x20, 0x18, 0x0c, 0x14, 0x1e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - // clang-format on - }; - static const char PROGMEM SNEAK_FRAMES[NUM_FRAMES][FRAME_BYTES] = { - // clang-format off - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x40, 0x80, 0x00, 0x80, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1e, 0x21, 0xf0, 0x04, 0x02, 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, 0x04, 0x04, 0x04, 0x03, 0x01, 0x00, 0x00, 0x09, 0x01, 0x80, 0x80, 0xab, 0x04, 0xf8, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1c, 0x20, 0x20, 0x3c, 0x0f, 0x11, 0x1f, 0x02, 0x06, 0x18, 0x20, 0x20, 0x38, 0x08, 0x10, 0x18, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xa0, 0x20, 0x40, 0x80, 0xc0, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3e, 0x41, 0xf0, 0x04, 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, 0x02, 0x04, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x40, 0x55, 0x82, 0x7c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x20, 0x30, 0x0c, 0x02, 0x05, 0x09, 0x12, 0x1e, 0x04, 0x18, 0x10, 0x08, 0x10, 0x20, 0x28, 0x34, 0x06, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - // clang-format on - }; - static const char PROGMEM BARK_FRAMES[NUM_FRAMES][FRAME_BYTES] = { - // clang-format off - { - 0x00, 0xc0, 0x20, 0x10, 0xd0, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x3c, 0x14, 0x04, 0x08, 0x90, 0x18, 0x04, 0x08, 0xb0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, 0xf9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc8, 0x48, 0x28, 0x2a, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, 0x02, 0x02, 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0xe0, 0x10, 0x10, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x2c, 0x14, 0x04, 0x08, 0x90, 0x18, 0x04, 0x08, 0xb0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, 0xf9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x48, 0x28, 0x2a, 0x10, 0x0f, 0x20, 0x4a, 0x09, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, 0x02, 0x02, 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - // clang-format on - }; - luna_state_t luna_state = {.raw = state}; - switch (luna_state.image) { - case IMAGE_WALK: - return WALK_FRAMES[luna_state.frame]; - case IMAGE_RUN: - return RUN_FRAMES[luna_state.frame]; - case IMAGE_SNEAK: - return SNEAK_FRAMES[luna_state.frame]; - case IMAGE_BARK: - return BARK_FRAMES[luna_state.frame]; - default: - return IDLE_FRAMES[luna_state.frame]; - } -} diff --git a/users/bcat/bcat_rgblight.c b/users/bcat/bcat_rgblight.c deleted file mode 100644 index cd6222262b..0000000000 --- a/users/bcat/bcat_rgblight.c +++ /dev/null @@ -1,22 +0,0 @@ -/* Copyright 2021 Jonathan Rascher - * - * 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 . - */ - -#include - -#include "progmem.h" - -/* Adjust RGB static hue ranges for shorter gradients than default. */ -const uint8_t RGBLED_GRADIENT_RANGES[] PROGMEM = {255, 127, 63, 31, 15}; diff --git a/users/bcat/compile.sh b/users/bcat/compile.sh deleted file mode 100755 index 9d5e58b1a1..0000000000 --- a/users/bcat/compile.sh +++ /dev/null @@ -1,52 +0,0 @@ -#!/bin/bash - -set -o errexit -o nounset - -usage () { - printf "\ -usage: ./users/bcat/compile.sh [-c] [-j N] - -Compiles all keyboards for which bcat maintains keymaps. - -optional arguments: - -c performs a clean build - -j N runs N make tasks in parallel - -v shows verbose output -" -} - -compile () { - local keyboard=$1 layout=${2:-} - FORCE_LAYOUT="$layout" SILENT="$opt_silent" make -j "$opt_parallel" "$keyboard":bcat -} - -opt_parallel=1 -opt_silent=true - -while getopts :chj:v opt; do - case $opt in - c) opt_clean=1 ;; - j) opt_parallel=$OPTARG ;; - v) opt_silent=false ;; - h) usage; exit 0 ;; - \?) usage >&2; exit 2 ;; - esac -done - -if [[ -n ${opt_clean:-} ]]; then - SILENT="$opt_silent" make clean -fi - -compile 9key -compile ai03/polaris 60_tsangan_hhkb -compile cannonkeys/an_c 60_tsangan_hhkb -compile cannonkeys/instant60 60_tsangan_hhkb -compile crkbd/rev1 split_3x6_3 -compile dz60 60_ansi_split_bs_rshift -compile dz60 60_tsangan_hhkb -compile eco/rev2 -compile kbdfans/kbd67/hotswap 65_ansi_blocker_split_bs -compile keebio/bdn9/rev1 -compile keebio/quefrency/rev1 -compile lily58/rev1 -compile yanghu/unicorne/f411 diff --git a/users/bcat/config.h b/users/bcat/config.h deleted file mode 100644 index b9eac74ff6..0000000000 --- a/users/bcat/config.h +++ /dev/null @@ -1,150 +0,0 @@ -/* Copyright 2020 Jonathan Rascher - * - * 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 . - */ - -/* Enable NKRO by default. All my devices support this, and it enables me to - * dispense with the NK_TOGG key, thus saving firmware space by not compiling - * magic keycode support. - */ -#define FORCE_NKRO - -/* Wait between tap_code register and unregister to fix flaky media keys. */ -#undef TAP_CODE_DELAY - -#define TAP_CODE_DELAY 20 - -/* Treat mod-tap keys as holds even if the mod-tap key and the key being - * modified are both released within TAPPING_TERM. This assumes the mod-tap key - * isn't usually pressed in quick succession with other tapped keys, which is - * good when the tap keycode is something like KC_ESC rather than a letter. - */ -#define PERMISSIVE_HOLD - -/* Turn off key repeat support of the tap keycode for tap-hold keys, enabling - * holds to work correctly in quick succession after taps. - */ -#define QUICK_TAP_TERM 0 - -#if defined(OLED_ENABLE) -/* The built-in OLED timeout wakes the OLED screen every time the buffer is - * updated, even if no user activity has occurred recently. This prevents the - * OLED from ever turning off during a continuously running animation. To avoid - * this, we disable the default timeout and implement our own in - * oled_task_user. - */ -# undef OLED_TIMEOUT -# define OLED_DISABLE_TIMEOUT - -# if defined(SPLIT_KEYBOARD) -/* Sync OLED on/off state between halves of split keyboards. */ -# define SPLIT_OLED_ENABLE -# endif -#endif - -#if defined(RGB_MATRIX_ENABLE) -/* Turn off per-key RGB when the host goes to sleep. */ -# define RGB_DISABLE_WHEN_USB_SUSPENDED - -/* Keep per-key RGB increments consistent across keyboards. */ -# undef RGB_MATRIX_HUE_STEP -# undef RGB_MATRIX_SAT_STEP -# undef RGB_MATRIX_VAL_STEP -# undef RGB_MATRIX_SPD_STEP - -# define RGB_MATRIX_HUE_STEP 8 -# define RGB_MATRIX_SAT_STEP 17 -# define RGB_MATRIX_VAL_STEP 17 -# define RGB_MATRIX_SPD_STEP 17 - -/* Enable specific per-key animation modes. */ -# define ENABLE_RGB_MATRIX_ALPHAS_MODS -# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT -# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL -# define ENABLE_RGB_MATRIX_BAND_SAT -# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT -# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL -# define ENABLE_RGB_MATRIX_BAND_VAL -# define ENABLE_RGB_MATRIX_BREATHING -# define ENABLE_RGB_MATRIX_CYCLE_ALL -# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT -# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN -# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL -# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL -# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL -# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN -# define ENABLE_RGB_MATRIX_DUAL_BEACON -# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT -# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN -# define ENABLE_RGB_MATRIX_HUE_BREATHING -# define ENABLE_RGB_MATRIX_HUE_PENDULUM -# define ENABLE_RGB_MATRIX_HUE_WAVE -# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS -# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL -# define ENABLE_RGB_MATRIX_PIXEL_RAIN -# define ENABLE_RGB_MATRIX_RAINBOW_BEACON -# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON -# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS -# define ENABLE_RGB_MATRIX_RAINDROPS - -/* Enable additional per-key animation modes that require a copy of the - * framebuffer (with accompanying storage cost). - */ -# define RGB_MATRIX_FRAMEBUFFER_EFFECTS -# define ENABLE_RGB_MATRIX_DIGITAL_RAIN -# define ENABLE_RGB_MATRIX_TYPING_HEATMAP -#endif - -#if defined(RGBLIGHT_ENABLE) -/* Turn off RGB underglow when the host goes to sleep. */ -# define RGBLIGHT_SLEEP - -/* Keep RGB underglow level increments consistent across keyboards. */ -# undef RGBLIGHT_HUE_STEP -# undef RGBLIGHT_SAT_STEP -# undef RGBLIGHT_VAL_STEP - -# define RGBLIGHT_HUE_STEP 8 -# define RGBLIGHT_SAT_STEP 17 -# define RGBLIGHT_VAL_STEP 17 - -/* Enable specific underglow animation modes. (Skip TWINKLE because it seems to - * be broken on ARM: https://github.com/qmk/qmk_firmware/issues/15345.) - */ -# define RGBLIGHT_EFFECT_ALTERNATING -# define RGBLIGHT_EFFECT_BREATHING -# define RGBLIGHT_EFFECT_CHRISTMAS -# define RGBLIGHT_EFFECT_KNIGHT -# define RGBLIGHT_EFFECT_RAINBOW_MOOD -# define RGBLIGHT_EFFECT_RAINBOW_SWIRL -# define RGBLIGHT_EFFECT_RGB_TEST -# define RGBLIGHT_EFFECT_SNAKE -# define RGBLIGHT_EFFECT_STATIC_GRADIENT -#endif - -#if defined(BACKLIGHT_ENABLE) -/* Enable backlight breathing across the board. */ -# define BACKLIGHT_BREATHING - -/* Keep backlight level increments consistent across keyboards. */ -# undef BACKLIGHT_LEVELS - -# define BACKLIGHT_LEVELS 7 -#endif - -/* Turn off unused config options to reduce firmware size. */ -#define LAYER_STATE_8BIT -#define NO_ACTION_ONESHOT -#undef LOCKING_RESYNC_ENABLE -#undef LOCKING_SUPPORT_ENABLE diff --git a/users/bcat/readme.md b/users/bcat/readme.md deleted file mode 100644 index 3650e8ee42..0000000000 --- a/users/bcat/readme.md +++ /dev/null @@ -1,51 +0,0 @@ -# bcat's userspace - -This is some code and config shared by all of [my](https://github.com/bcat) -keyboards. I use community layouts wherever possible, only writing -keyboard-specific keymaps for boards without standard layout support. I derive -my keymaps from two canonical ones (preferred for typing and gaming, -respectively). - -You can build all keymaps I maintain at once using `./users/bcat/compile.sh`. - -## Canonical keymaps - -* [Split 3x6 + 3 thumb -keys](https://github.com/qmk/qmk_firmware/tree/master/layouts/community/split_3x6_3/bcat): -Columnar-staggered split ergo layout, preferred for typing. Used on Crkbd. - -* [60% Tsangan -HHKB](https://github.com/qmk/qmk_firmware/tree/master/layouts/community/60_tsangan_hhkb/bcat): -Row-staggered layout, preferred for gaming. Used on ai03 Polaris, CannonKeys -AN-C, CannonKeys Instant60, DZ60. - -## Other keymaps - -### Ergo - -* [Lily58](https://github.com/qmk/qmk_firmware/tree/master/keyboards/lily58/keymaps/bcat) -* [Unicorne](https://github.com/qmk/qmk_firmware/tree/master/keyboards/yanghu/unicorne/keymaps/bcat) - -### Ortho - -* [Eco](https://github.com/qmk/qmk_firmware/tree/master/keyboards/eco/keymaps/bcat) - -### Traditional - -* [60% ANSI split -backspace/right-shift](https://github.com/qmk/qmk_firmware/tree/master/layouts/community/60_ansi_split_bs_rshift/bcat). -Used on DZ60. - -* [65% ANSI blocker split -backspace](https://github.com/qmk/qmk_firmware/tree/master/layouts/community/65_ansi_blocker_split_bs/bcat). -Used on KBDfans KBD67 hotswap. - -* [Keebio -Quefrency](https://github.com/qmk/qmk_firmware/tree/master/keyboards/keebio/quefrency/keymaps/bcat) - -### Macropads - -* [9-Key](https://github.com/qmk/qmk_firmware/tree/master/keyboards/9key/keymaps/bcat) - -* [Keebio -BDN9](https://github.com/qmk/qmk_firmware/tree/master/keyboards/keebio/bdn9/keymaps/bcat) diff --git a/users/bcat/rules.mk b/users/bcat/rules.mk deleted file mode 100644 index 090f7474eb..0000000000 --- a/users/bcat/rules.mk +++ /dev/null @@ -1,68 +0,0 @@ -# Enable Bootmagic Lite for keyboards that don't have an easily accessible -# reset button, but keep it disabled for all others to reduce firmware size. -ifneq ($(filter $(strip $(KEYBOARD)),ai03/polaris dz60 kbdfans/kbd67/hotswap yanghu/unicorne/f411),) - BOOTMAGIC_ENABLE = yes -else - BOOTMAGIC_ENABLE = no -endif - -# Enable media keys on all keyboards. -EXTRAKEY_ENABLE = yes - -# Enable N-key rollover on all keyboards. In addition to its intended -# functionality, as of July 2020, this is required for Chrome OS to process -# media keys. (It appears that Chrome OS filters out key events from the second -# USB endpoint's consumer and system control devices unless that endpoint also -# reports a keyboard or mouse device.) -NKRO_ENABLE = yes - -# Enable link-time optimization to reduce binary size. -LTO_ENABLE = yes - -# Include common utilities shared across all our keymaps. -SRC += bcat.c - -# Include additional utilities that extend optional QMK features only enabled -# on some keyboards. -ifeq ($(strip $(OLED_ENABLE)), yes) - SRC += bcat_oled.c - WPM_ENABLE = yes # for WPM and animated "keyboard pet" widgets - - # OLED pets (animated critters that react to typing) take up a lot of - # firmware space, so only compile one, and only if requested. - BCAT_OLED_PET ?= no - ifneq ($(strip $(BCAT_OLED_PET)), no) - SRC += bcat_oled_pet_$(strip $(BCAT_OLED_PET)).c - OPT_DEFS += -DBCAT_OLED_PET - endif -endif - -ifeq ($(strip $(RGBLIGHT_ENABLE)), yes) - SRC += bcat_rgblight.c -endif - -# Disable unwanted build options on all keyboards. (Mouse keys are turned off -# due to https://github.com/qmk/qmk_firmware/issues/8323, and the rest are -# turned off to reduce firmware size.) -COMMAND_ENABLE = no -CONSOLE_ENABLE = no -MOUSEKEY_ENABLE = no - -# Disable unwanted hardware options on all keyboards. (Some keyboards turn -# these features on by default even though they aren't actually required.) -MIDI_ENABLE = no -SLEEP_LED_ENABLE = no - -# Disable other unused options on all keyboards. -AUTO_SHIFT_ENABLE = no -COMBO_ENABLE = no -GRAVE_ESC_ENABLE = no -KEY_LOCK_ENABLE = no -LEADER_ENABLE = no -MAGIC_ENABLE = no -SPACE_CADET_ENABLE = no -SWAP_HANDS_ENABLE = no -TAP_DANCE_ENABLE = no -UCIS_ENABLE = no -UNICODEMAP_ENABLE = no -UNICODE_ENABLE = no diff --git a/users/billypython/billypython.c b/users/billypython/billypython.c deleted file mode 100644 index 19744b9956..0000000000 --- a/users/billypython/billypython.c +++ /dev/null @@ -1,32 +0,0 @@ -#include "billypython.h" - -__attribute__((weak)) -bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { - return true; -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - if (!process_record_keymap(keycode, record)) { - return false; - } - - switch (keycode) { - case CLEAR: - if (record->event.pressed) { - SEND_STRING(SS_LCTL("a") SS_TAP(X_DELETE)); - } - return false; - - default: - return true; - } -} - -__attribute__((weak)) -layer_state_t layer_state_set_keymap(layer_state_t state) { - return state; -} - -layer_state_t layer_state_set_user(layer_state_t state) { - return layer_state_set_keymap(state); -} diff --git a/users/billypython/billypython.h b/users/billypython/billypython.h deleted file mode 100644 index cdf5121f2f..0000000000 --- a/users/billypython/billypython.h +++ /dev/null @@ -1,34 +0,0 @@ -#pragma once - -#include "quantum.h" - -#ifdef TAP_DANCE_ENABLE - #include "tap_dance.h" -#endif - -#ifdef LAYER_FN - #define FN MO(L_FN) - #define FN_CAPS LT(L_FN, KC_CAPS) - #define FN_FNLK TT(L_FN) -#endif - -#define TOP LCTL(KC_HOME) -#define BOTTOM LCTL(KC_END) - -enum keycodes_user { - CLEAR = SAFE_RANGE, - - RANGE_KEYMAP, -}; - -enum layers_user { - L_BASE, -#ifdef LAYER_FN - L_FN, -#endif - - L_RANGE_KEYMAP, -}; - -bool process_record_keymap(uint16_t keycode, keyrecord_t *record); -layer_state_t layer_state_set_keymap(layer_state_t state); diff --git a/users/billypython/config.h b/users/billypython/config.h deleted file mode 100644 index 4609adbbea..0000000000 --- a/users/billypython/config.h +++ /dev/null @@ -1,17 +0,0 @@ -#pragma once - -#define FORCE_NKRO - -#define MOUSEKEY_DELAY 50 -#define MOUSEKEY_INTERVAL 15 -#define MOUSEKEY_MAX_SPEED 4 -#define MOUSEKEY_TIME_TO_MAX 50 -#define MOUSEKEY_WHEEL_MAX_SPEED 1 -#define MOUSEKEY_WHEEL_TIME_TO_MAX 50 - -#define NO_ACTION_FUNCTION -#define NO_ACTION_MACRO - -#define PERMISSIVE_HOLD -#define TAPPING_TERM 200 -#define TAPPING_TOGGLE 2 diff --git a/users/billypython/rules.mk b/users/billypython/rules.mk deleted file mode 100644 index 915323b499..0000000000 --- a/users/billypython/rules.mk +++ /dev/null @@ -1,6 +0,0 @@ -SRC += billypython.c -ifeq ($(strip $(TAP_DANCE_ENABLE)), yes) - SRC += tap_dance.c -endif - -EXTRAFLAGS += -flto diff --git a/users/billypython/tap_dance.c b/users/billypython/tap_dance.c deleted file mode 100644 index c55f9e9133..0000000000 --- a/users/billypython/tap_dance.c +++ /dev/null @@ -1,33 +0,0 @@ -#include "tap_dance.h" - -#define ACTION_TAP_DANCE_DOUBLE_MODS(mod1, mod2) { \ - .fn = { td_double_mods_each, NULL, td_double_mods_reset }, \ - .user_data = &(tap_dance_pair_t){ mod1, mod2 }, \ - } - -void td_double_mods_each(tap_dance_state_t *state, void *user_data) { - tap_dance_pair_t *mods = (tap_dance_pair_t *)user_data; - // Single tap → mod1, double tap → mod2, triple tap etc. → mod1+mod2 - if (state->count == 1 || state->count == 3) { - register_code(mods->kc1); - } else if (state->count == 2) { - unregister_code(mods->kc1); - register_code(mods->kc2); - } - // Prevent tap dance from sending kc1 and kc2 as weak mods - state->weak_mods &= ~(MOD_BIT(mods->kc1) | MOD_BIT(mods->kc2)); -} - -void td_double_mods_reset(tap_dance_state_t *state, void *user_data) { - tap_dance_pair_t *mods = (tap_dance_pair_t *)user_data; - if (state->count == 1 || state->count >= 3) { - unregister_code(mods->kc1); - } - if (state->count >= 2) { - unregister_code(mods->kc2); - } -} - -tap_dance_action_t tap_dance_actions[] = { - [TD_RSF_RCT] = ACTION_TAP_DANCE_DOUBLE_MODS(KC_RSFT, KC_RCTL), -}; diff --git a/users/billypython/tap_dance.h b/users/billypython/tap_dance.h deleted file mode 100644 index 2581981414..0000000000 --- a/users/billypython/tap_dance.h +++ /dev/null @@ -1,9 +0,0 @@ -#pragma once - -#include "quantum.h" - -#define RSF_RCT TD(TD_RSF_RCT) - -enum tap_dance { - TD_RSF_RCT, -}; diff --git a/users/brandonschlack/brandonschlack.c b/users/brandonschlack/brandonschlack.c deleted file mode 100644 index bcf3ebcb80..0000000000 --- a/users/brandonschlack/brandonschlack.c +++ /dev/null @@ -1,211 +0,0 @@ -/* Copyright 2020 Brandon Schlack - * - * 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 . - */ -#include "brandonschlack.h" - -user_config_t user_config; -#ifdef STOPLIGHT_LED -static stoplight_led_t stoplight_led; -#endif - -/** - * Resets user config in EEPROM - * - * Default is use rgb for layer indication - */ -void eeconfig_init_user(void) { - user_config.raw = 0; - user_config.rgb_layer_change = true; - user_config.rgb_theme = 0; - eeconfig_update_user(user_config.raw); -} - -__attribute__((weak)) -void matrix_init_keymap(void){ } - -void matrix_init_user(void) { - matrix_init_keymap(); -} - -__attribute__((weak)) -void keyboard_post_init_keymap(void){ } - -/** - * Reads user config from EEPROM, - * calls RGB init if RGBs enabled - */ -void keyboard_post_init_user(void){ - // Read the user config from EEPROM - user_config.raw = eeconfig_read_user(); - // Do Stoplight Animation if enabled -#ifdef STOPLIGHT_LED - led_stoplight_start(); -#endif - // Do RGB things if RGBs enabled -#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE) - keyboard_post_init_rgb(); -#endif - keyboard_post_init_keymap(); -} - -__attribute__ ((weak)) -void shutdown_keymap(void) {} - -/** - * On shutdown, - * If RGBs enabled, - * then set RGB color to Red - */ -bool shutdown_user(bool jump_to_bootloader) { -#ifdef RGBLIGHT_ENABLE - rgblight_enable_noeeprom(); - rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); - rgblight_sethsv_noeeprom(0, 255, 127); -#endif // RGBLIGHT_ENABLE -#ifdef RGB_MATRIX_ENABLE - rgb_matrix_set_color_all( 0xFF, 0x00, 0x00 ); -#endif //RGB_MATRIX_ENABLE - shutdown_keymap(); - return false; -} - -__attribute__ ((weak)) -void suspend_power_down_keymap(void) {} - -/** - * Set rgb_matrix suspend state to true if not already - */ -void suspend_power_down_user(void) { -#ifdef RGB_MATRIX_ENABLE - rgb_matrix_set_suspend_state(true); -#endif //RGB_MATRIX_ENABLE - suspend_power_down_keymap(); -} - -__attribute__ ((weak)) -void suspend_wakeup_init_keymap(void) {} - -/** - * Set rgb_matrix suspend state to false if not already - */ -void suspend_wakeup_init_user(void) { -#ifdef RGB_MATRIX_ENABLE - rgb_matrix_set_suspend_state(false); -#endif //RGB_MATRIX_ENABLE - suspend_wakeup_init_keymap(); -} - -__attribute__ ((weak)) -void matrix_scan_keymap(void) {} - -/** - * Checks for Super CMDâ†ŊTAB - */ -void matrix_scan_user(void) { - matrix_scan_cmd_tab(); -#ifdef STOPLIGHT_LED - matrix_scan_led_stoplight(); -#endif - matrix_scan_keymap(); -} - -__attribute__ ((weak)) -layer_state_t default_layer_state_set_keymap(layer_state_t state) { - return state; -} - -/** - * For macropads, if a new default layer is set from DF() - * then automatically set that layer with layer_move() - */ -layer_state_t default_layer_state_set_user(layer_state_t state) { -#if defined(IS_MACROPAD) - layer_move(get_highest_layer(state)); -#endif - return default_layer_state_set_keymap(state); -} - -__attribute__ ((weak)) -layer_state_t layer_state_set_keymap(layer_state_t state) { - return state; -} - -/** - * Do RGB things (like layer indication) on layer change - */ -layer_state_t layer_state_set_user(layer_state_t state) { -#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE) - state = layer_state_set_rgb(state); -#endif // RGBLIGHT_ENABLE - return layer_state_set_keymap(state); -} - -__attribute__((weak)) bool led_update_keymap(led_t led_state) { return true; } - -bool led_update_user(led_t led_state) { -#ifdef STOPLIGHT_LED - if (stoplight_led.is_active) { - return false; - } -#endif - return led_update_keymap(led_state); -} - -#ifdef STOPLIGHT_LED -void led_stoplight_start(void) { - writePin(TOP_LED, LED_ON(false)); - writePin(MIDDLE_LED, LED_ON(false)); - writePin(BOTTOM_LED, LED_ON(false)); - - stoplight_led.is_active = true; - stoplight_led.timer = timer_read(); -}; - -void led_stoplight_set(pin_t pin) { - writePin(pin, LED_ON(true)); -}; - -void led_stoplight_end(void) { - // Reset timer and status variables - stoplight_led.is_active = false; - stoplight_led.index = 0; - stoplight_led.timer = 0; - led_update_kb(host_keyboard_led_state()); -}; - -void matrix_scan_led_stoplight(void) { - if (stoplight_led.is_active) { - if (timer_elapsed(stoplight_led.timer) > (1000 * (stoplight_led.index + 1))) { - switch (stoplight_led.index){ - case 0: - led_stoplight_set(TOP_LED); - stoplight_led.index++; - break; - case 1: - led_stoplight_set(MIDDLE_LED); - stoplight_led.index++; - break; - case 2: - led_stoplight_set(BOTTOM_LED); - stoplight_led.index++; - break; - default: - led_stoplight_end(); - break; - } - } - } -}; -#endif diff --git a/users/brandonschlack/brandonschlack.h b/users/brandonschlack/brandonschlack.h deleted file mode 100644 index 4fbf6906d8..0000000000 --- a/users/brandonschlack/brandonschlack.h +++ /dev/null @@ -1,84 +0,0 @@ -/* Copyright 2020 Brandon Schlack - * - * 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 . - */ -#pragma once - -#include "quantum.h" -#include "version.h" -#include "eeprom.h" -#include "process_records.h" -#ifdef TAP_DANCE_ENABLE -# include "tap_dances.h" -#endif // TAP_DANCE_ENABLE -#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE) -# include "rgb_bs.h" -#endif - -/* TODO Layer Names */ -enum bs_layers { - _BASE = 0, - _M1 = 1, - _M2 = 2, - _M3 = 3, - _M4 = 4, - _FN1 = 5, - _M1_FN1 = 6, - _M2_FN1 = 7, - _M3_FN1 = 8, - _M4_FN1 = 9, - _FN2 = 10, - _M1_FN2 = 11, - _M2_FN2 = 12, - _M3_FN2 = 13, - _M4_FN2 = 14, - _ADJUST = 15 // 15: Change keyboard settings -}; - -#define _MACRO _M1 -#define _LOWER _FN1 -#define _RAISE _FN2 - -/* TODO User EECONFIG */ -typedef union { - uint32_t raw; - struct { - bool rgb_layer_change :1; - uint8_t rgb_theme :4; - }; -} user_config_t; -extern user_config_t user_config; - -void matrix_init_keymap(void); -void keyboard_post_init_keymap(void); -void shutdown_keymap(void); -void suspend_power_down_keymap(void); -void suspend_wakeup_init_keymap(void); -void matrix_scan_keymap(void); -layer_state_t default_layer_state_set_keymap(layer_state_t state); -layer_state_t layer_state_set_keymap(layer_state_t state); -bool led_update_keymap(led_t led_state); - -#ifdef STOPLIGHT_LED -typedef struct { - bool is_active :1; - uint8_t index :7; - uint16_t timer :16; -} stoplight_led_t; - -void led_stoplight_start(void); -void led_stoplight_set(pin_t pin); -void led_stoplight_end(void); -void matrix_scan_led_stoplight(void); -#endif diff --git a/users/brandonschlack/config.h b/users/brandonschlack/config.h deleted file mode 100644 index 8f09adef3e..0000000000 --- a/users/brandonschlack/config.h +++ /dev/null @@ -1,55 +0,0 @@ -/* Copyright 2020 Brandon Schlack - * - * 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 . - */ -#pragma once - -#define TAPPING_TOGGLE 2 -#define TAPPING_TERM 200 -#define PERMISSIVE_HOLD -#define TAP_HOLD_CAPS_DELAY 200 - -#ifdef RGBLIGHT_ENABLE -# define RGBLIGHT_SLEEP -#endif - -#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE) && !defined(RGBLIGHT_LAYERS) -# define RGB_THEME_ENABLE -#endif - -#ifdef RGB_THEME_ENABLE -# define DISABLE_RGB_THEME_JAMON -# define DISABLE_RGB_THEME_OBLIQUE -#endif - -#ifdef ENCODER_ENABLE -# define TAP_CODE_DELAY 10 -#else -# define TAP_CODE_DELAY 5 -#endif - -/* Disable unused and unneeded features to reduce on firmware size */ -#ifndef NO_ACTION_MACRO -# define NO_ACTION_MACRO -#endif -#ifndef NO_ACTION_FUNCTION -# define NO_ACTION_FUNCTION -#endif - -#ifdef LOCKING_SUPPORT_ENABLE -# undef LOCKING_SUPPORT_ENABLE -#endif -#ifdef LOCKING_RESYNC_ENABLE -# undef LOCKING_RESYNC_ENABLE -#endif diff --git a/users/brandonschlack/process_records.c b/users/brandonschlack/process_records.c deleted file mode 100644 index f40eeaf8b6..0000000000 --- a/users/brandonschlack/process_records.c +++ /dev/null @@ -1,172 +0,0 @@ -/* Copyright 2020 Brandon Schlack - * - * 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 . - */ -#include "brandonschlack.h" - -// Super CMDâ†ŊTAB -bool is_cmd_tab_active = false; -uint16_t cmd_tab_timer = 0; - -__attribute__ ((weak)) -bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { - return true; -} - -// Consolidated Macros -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case QM_MAKE: // Sends 'qmk compile' or 'qmk flash' - if (record->event.pressed) { - bool flash = false; - // If is a keyboard and auto-flash is not set in rules.mk, - // then Shift will trigger the flash command - #if !defined(FLASH_BOOTLOADER) && !defined(IS_MACROPAD) - uint8_t temp_mod = get_mods(); - uint8_t temp_osm = get_oneshot_mods(); - clear_mods(); - clear_oneshot_mods(); - if ( (temp_mod | temp_osm) & MOD_MASK_SHIFT ) - #endif - { - flash = true; - } - send_make_command(flash); - } - break; - case QM_FLSH: // Sends flash command instead of compile - if (record->event.pressed) { - clear_mods(); - clear_oneshot_mods(); - send_make_command(true); - } - break; - case QM_VRSN: // Prints firmware version - if (record->event.pressed) { - SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE); - } - break; - case QM_KYBD: // Prints keyboard path - if (record->event.pressed) { - SEND_STRING("keyboards/" QMK_KEYBOARD "/"); - } - break; - case QM_KYMP: // Prints keymap path - if (record->event.pressed) { - SEND_STRING("keyboards/" QMK_KEYBOARD "/keymaps/" QMK_KEYMAP "/keymap.c"); - } - break; - case CMD_TAB: // Super CMDâ†ŊTAB - if (record->event.pressed) { - if (!is_cmd_tab_active) { - is_cmd_tab_active = true; - register_code(KC_LGUI); - } - cmd_tab_timer = timer_read(); - register_code(KC_TAB); - } else { - unregister_code(KC_TAB); - } - break; - #if defined(RGB_THEME_ENABLE) - case RGB_LYR: - if (record->event.pressed) { - user_config.rgb_layer_change ^= 1; - dprintf("rgb layer change [EEPROM]: %u\n", user_config.rgb_layer_change); - eeconfig_update_user(user_config.raw); - if (user_config.rgb_layer_change) { - layer_state_set(layer_state); - } - } - break; - case RGB_HUI ... RGB_SAD: - if (record->event.pressed) { - if (user_config.rgb_layer_change) { - user_config.rgb_layer_change = false; - dprintf("rgb layer change [EEPROM]: %u\n", user_config.rgb_layer_change); - eeconfig_update_user(user_config.raw); - } - } - break; - case RGB_THEME_FORWARD: - if (record->event.pressed) { - uint8_t shifted = get_mods() & (MOD_BIT(KC_LSFT)|MOD_BIT(KC_RSFT)); - if(shifted) { - rgb_theme_step_reverse(); - } else { - rgb_theme_step(); - } - layer_state_set(layer_state); - } - break; - case RGB_THEME_REVERSE: - if (record->event.pressed) { - uint8_t shifted = get_mods() & (MOD_BIT(KC_LSFT)|MOD_BIT(KC_RSFT)); - if(shifted) { - rgb_theme_step(); - } else { - rgb_theme_step_reverse(); - } - layer_state_set(layer_state); - } - break; - #endif - } - return process_record_keymap(keycode, record); -} - -// Super CMDâ†ŊTAB -void matrix_scan_cmd_tab(void) { - if (is_cmd_tab_active) { - if (timer_elapsed(cmd_tab_timer) > 500) { - unregister_code(KC_LGUI); - is_cmd_tab_active = false; - } - } -} - -/** - * Send Make Command - * - * Sends 'qmk compile -kb keyboard -km keymap' command to compile firmware - * Uses 'qmk flash' and resets keyboard, if flash_bootloader set to true - * Sends CONVERT_TO and/or FORCE_LAYOUT parameters if built with those options - */ -void send_make_command(bool flash_bootloader) { -#ifdef FORCE_LAYOUT // Add layout string if built with FORCE_LAYOUT - SEND_STRING("FORCE_LAYOUT=" FORCE_LAYOUT " "); -#endif -#ifdef CONVERT_TO_PROTON_C // Add CONVERT_TO if built with converter - SEND_STRING("CONVERT_TO=proton_c "); -#endif - SEND_STRING("qmk "); - if (flash_bootloader) { -#ifndef KEYBOARD_massdrop // Don't run flash for Massdrop boards - SEND_STRING("flash "); - } else { -#endif - SEND_STRING("compile "); - } - SEND_STRING("-kb " QMK_KEYBOARD " "); - SEND_STRING("-km " QMK_KEYMAP); - if (flash_bootloader) { -#if defined(KEYBOARD_massdrop) // only run for Massdrop boards - SEND_STRING(" && mdlflash " QMK_KEYBOARD " " QMK_KEYMAP); -#endif - } - SEND_STRING(SS_TAP(X_ENTER)); - if (flash_bootloader) { - reset_keyboard(); - } -} diff --git a/users/brandonschlack/process_records.h b/users/brandonschlack/process_records.h deleted file mode 100644 index b377ffaed2..0000000000 --- a/users/brandonschlack/process_records.h +++ /dev/null @@ -1,152 +0,0 @@ -/* Copyright 2020 Brandon Schlack - * - * 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 . - */ -#pragma once -#include "brandonschlack.h" - -// Macros -enum custom_keycodes { - QM_MAKE = SAFE_RANGE, - QM_FLSH, - QM_VRSN, - QM_KYBD, - QM_KYMP, - CMD_TAB, - RGB_LYR, - RGB_THEME_FORWARD, - RGB_THEME_REVERSE, - KEYMAP_SAFE_RANGE -}; - -bool process_record_keymap(uint16_t keycode, keyrecord_t *record); -void matrix_scan_cmd_tab(void); - -/** - * QMK Defines - * Some meta aliases for QMK features such as Mod-Taps - * and for cleaner looking Layer Toggles - */ -/* Control Mod-Tap */ -#define CTL_ESC CTL_T(KC_ESC) // Hold Escape for Control -#define CTL_TAB CTL_T(KC_TAB) // Hold Tab for Control -#define CTL_CAP CTL_T(KC_CAPS) // Hold Caps Lock for Control -/* Command Mod-Tap */ -#define CMD_ESC CMD_T(KC_ESC) // Hold Escape for Command -#define CMD_CAP CMD_T(KC_CAPS) // Hold Caps Lock for Command -#define CMD_SPC CMD_T(KC_SPC) // Hold Space for Command -/* Hyper Mod-Tap */ -#define HY_ESC ALL_T(KC_ESC) // Hold Escape for Hyper (Shift-Control-Option-Command) -#define HY_TAB ALL_T(KC_TAB) // Hold Tab for Hyper (Shift-Control-Option-Command) -#define HY_CAPS ALL_T(KC_CAPS) // Hold Caps Lock for Hyper (Shift-Control-Option-Command) -/* Shift Mod-Tap */ -#define SF_CAPS LSFT_T(KC_CAPS) // Hold Caps Lock for Left Shift -#define SFT_ENT RSFT_T(KC_ENT) // Hold Enter for Right Shift -#define SF_SLSH RSFT_T(KC_SLSH) // Tap Right Shift for Slash (/) -#define SF_BSLS RSFT_T(KC_BSLS) // Tap Right Shift for Back Slash (\) -/* Layer Aliases */ -#define FN_LYR MO(_FN1) // Hold for FN Layer -#define FN2_LYR MO(_FN2) // Hold for FN2 Layer -#define LOWER MO(_LOWER) // Hold for LOWER Layer -#define RAISE MO(_RAISE) // Hold for RAISE Layer -#define TT_FN TT(_FN1) // Hold for FN Layer, or Double-Tap to Toggle -#define TT_FN2 TT(_FN2) // Hold for FN2 Layer, or Double-Tap to Toggle -#define TT_LWR TT(_LOWER) // Hold for LOWER Layer, or Double-Tap to Toggle -#define TT_RAI TT(_RAISE) // Hold for RAISE Layer, or Double-Tap to Toggle -#define SPC_LWR LT(_LOWER, KC_SPC) // Tap for Space, Hold for LOWER Layer -#define SPC_RAI LT(_RAISE, KC_SPC) // Tap for Space, Hold for RAISE Layer -#define SLH_LWR LT(_LOWER, KC_SLSH) // Tap for /, Hold for LOWER Layer -#define BSL_LWR LT(_LOWER, KC_BSLS) // Tap for \, Hold for LOWER Layer -#define MCO_LYR MO(_MACRO) // Hold for MACRO Layer -#define TG_ADJT TG(_ADJUST) // Toggle ADJUST Layer -#define TG_LGHT TG(_LIGHT) // Toggle LIGHT Layer -/** - * Media Mod-Tap - * Use the Mod-Tap feature for easy media controls - * Used with >=65% layouts - */ -#define RWD_CMD RCMD_T(KC_MPRV) // Tap Right Command for Prev Track -#define PLY_CMD RCMD_T(KC_MPLY) // Tap Right Command for Play/Pause -#define FFD_OPT ROPT_T(KC_MNXT) // Tap Right Option for Next Track -#define PLY_FN1 LT(_FN1, KC_MPLY) // Tap Fn for Play/Pause -#define PLY_FN2 LT(_FN2, KC_MPLY) // Tap Fn2 for Play/Pause -#define MUT_SFT RSFT_T(KC_MUTE) // Tap Right Shift for Mute -/** - * Arrow Mod-Tap - * Use the Mod-Tap feature for arrow keys - * Mostly used for 40-60% layouts - */ -#define UP_RSFT RSFT_T(KC_UP) // Tap Right Shift for Up -#define LFT_OPT ROPT_T(KC_LEFT) // Tap Right Option for Left -#define LFT_CMD RCMD_T(KC_LEFT) // Tap Right Command for Left -#define DWN_FN1 LT(1, KC_DOWN) // Tap Fn for Down -#define DWN_LWR DWN_FN1 // Tap Lower for Down -#define DWN_FN2 LT(2, KC_DOWN) // Tap Fn2 for Down -#define DWN_RAI DWN_FN2 // Tap Raise for Down -#define DWN_OPT ROPT_T(KC_DOWN) // Tap Right Option for Down -#define RGT_SFT RSFT_T(KC_RGHT) // Tap Right Shift for Right -#define RGT_OPT ROPT_T(KC_RGHT) // Tap Right Option for Right -#define RGT_CTL RCTL_T(KC_RGHT) // Tap Right Ctrl for Right -/** - * Nav Mod-Tap - * Use the Mod-Tap feature for nav keys (Home/End, Page Up/Down) - * Mostly used for 40-60% layouts, on a function layer - */ -#define PGU_SFT RSFT_T(KC_PGUP) // Tap Right Shift for Page Up -#define HOM_OPT ROPT_T(KC_HOME) // Tap Right Option for Home -#define HOM_CMD RCMD_T(KC_HOME) // Tap Right Command for Home -#define PGD_OPT ROPT_T(KC_PGDN) // Tap Right Option for Page Down -#define PGD_FN1 LT(1, KC_PGDN) // Tap Fn for Page Down -#define PGD_LWR PGD_FN1 // Tap Lower for Page Down -#define PGD_FN2 LT(2, KC_PGDN) // Tap Fn2 for Page Down -#define PGD_RAI PGD_FN2 // Tap Raise for Page Down -#define END_OPT ROPT_T(KC_END) // Tap Right Option for End -#define END_CTL RCTL_T(KC_END) // Tap Right Control for End - -/** - * MacOS - * Common shortcuts used in macOS - * Reference: https://support.apple.com/en-us/HT201236 - */ -#define MC_POWR KC_PWR // Power (KC_PWR) -#define MC_SLEP LOPT(LCMD(KC_PWR)) // Sleep (Option-Command-Power) -#define MC_SLPD LCTL(LSFT(KC_PWR)) // Sleep Display (Control-Shift-Power) -#define MC_LOCK LCTL(LCMD(KC_Q)) // Lock Screen (Control-Command-Q) -#define MC_MSSN KC_FIND // Mission Control: Configure karabiner for find -> mission_control -#define MC_LHPD KC_MENU // Launchpad: Configure karabiner for menu -> launchpad -#define MC_CMTB LCMD(KC_TAB) // Command-Tab -#define MC_BACK LCMD(KC_LBRC) // Back (Command–Left Bracket) -#define MC_FWRD LCMD(KC_RBRC) // Forward (Command–Right Bracket) -#define CLS_TAB LCMD(KC_W) // Close Tab (Command–W) -#define REO_TAB LSFT(LCMD(KC_T)) // Reopen Last Tab (Shift-Command-T) -#define NXT_TAB LCTL(KC_TAB) // Next Tab (Control-Tab) -#define PRV_TAB LSFT(LCTL(KC_TAB)) // Previous Tab (Shift-Control-Tab) -#define NXT_WIN LCMD(KC_GRV) // Next Window (Control-Grave) -#define PRV_WIN LCMD(KC_TILD) // Previous Window (Shift-Control-Grave) -#define MC_PLYR LCMD(KC_F8) // Focuses current Media Player -#define MC_UNDO LCMD(KC_Z) // Undo (Command-Z) -#define MC_REDO LSFT(LCMD(KC_Z)) // Redo (Shift-Command-Z) -#define OP_AFLL HYPR(KC_BSLS) // 1Password Autofill (Shift-Control-Option-Command-\) -#define PX_AFLL LSFT(LOPT(KC_X)) // 1PasswordX Autofill (Shift-Option-X) -// Reverse scrolling for using with macOS Natural Scrolling. -#define MC_WH_U KC_WH_D // Mouse Wheel Up -#define MC_WH_D KC_WH_U // Mouse Wheel Down -#define MC_WH_L KC_WH_R // Mouse Wheel Left -#define MC_WH_R KC_WH_L // Mouse Wheel Right - -// RGB Theme -#define RGB_THM RGB_THEME_FORWARD // Cycle next RGB_THEME -#define RGB_RTHM RGB_THEME_REVERSE // Cycle previous RGB_THEME - -void send_make_command(bool flash_bootloader); diff --git a/users/brandonschlack/readme.md b/users/brandonschlack/readme.md deleted file mode 100644 index 84f216f9f8..0000000000 --- a/users/brandonschlack/readme.md +++ /dev/null @@ -1,48 +0,0 @@ -# Overview - -My QMK home. I feel as though I stand on the shoulders of giants, for a lot of my code here is borrowed and adapted from so many contributors here, and that I hope my code here can help or inspire others. - -## Layers, Handlers, and Macros -### Layers - -I have some predefined layer names for keyboards: -* **_BASE**: Default Layer, QWERTY layout. -* **_FN1**: Function Layer for 60% and above, and additional macros and shortcuts on 50% and below. -* **_LOWER** and **_RAISE**: Function layers for 40% - -and macropads: -* **_REEDER**: Shortcuts for [Reeder.app](https://reederapp.com/), my RSS feed reader -* **_MEDIA**: Media controls -* **_NAVI**: Navigation macros, for changing tabs and scrolling -* **_KARABINER**: Generic macro keys, meant to be customized per app with [Karabiner](https://pqrs.org/osx/karabiner/) - -#### Protected Layers -I have some named "protected" layers, meant to be at the end of the layer list for changing keyboard settings and features. - -* **KEYMAP_LAYERS**: Add additional layers in keymap. -* **_AUDIO**: Audio feature controls. -* **_LIGHT**: RGB Light/Matrix feature controls. -* **_ADJUST**: General keyboard settings and toggles. Can also contain RGB and Audio controls on larger boards that don't need and extra layer for those controls. - -### EEPROM User Config - -I have a custom userspace config implemented to save settings on the board to persist across shutdowns. I currently store: - -* rgb_layer_change - a toggle for using RGB themes for layer indication -* rgb_theme - a pointer to the currently set RGB Theme - -### Process Handlers - -### Keycode Aliases - -I am a macOS user and so a lot of my aliases are - -### Macros - - -## Tap Dances - -### Tap Dance Trigger Layer - -## RGB -### RGB Theme diff --git a/users/brandonschlack/rgb_bs.c b/users/brandonschlack/rgb_bs.c deleted file mode 100644 index 6b88503f41..0000000000 --- a/users/brandonschlack/rgb_bs.c +++ /dev/null @@ -1,146 +0,0 @@ -/* Copyright 2020 Brandon Schlack - * - * 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 . - */ -#include "brandonschlack.h" -#include "rgb_theme.h" -#include "rgb_bs.h" - -#if defined(RGBLIGHT_ENABLE) -extern rgblight_config_t rgblight_config; -#elif defined(RGB_MATRIX_ENABLE) -extern rgb_config_t rgb_matrix_config; -extern bool g_suspend_state; -extern led_config_t g_led_config; -#endif - -#if defined(RGB_THEME_ENABLE) -// Should be rgb_theme.c -#define RGB_THEME(name) const rgb_theme_t RGB_##name -#define RGB_THEME_IMPLS -#include "rgb_theme_user.inc" -#undef RGB_THEME_IMPLS -#undef RGB_THEME - -#define RGB_THEME(name) [RGB_THEME_##name] = &RGB_##name, -const rgb_theme_t *themes[] = { - #include "rgb_theme_user.inc" -}; -#undef RGB_THEME - -// Userspace loose colors -rgb_theme_color_t default_adjust = { HSV_SPRINGGREEN }; -#endif - -void keyboard_post_init_rgb(void) { - layer_state_set_user(layer_state); -} - -#if defined(RGB_THEME_ENABLE) -void set_rgb_theme(uint8_t index) { - if (!user_config.rgb_layer_change) { - user_config.rgb_layer_change = true; - } - user_config.rgb_theme = index; - dprintf("rgb theme [EEPROM]: %u\n", user_config.rgb_theme); - eeconfig_update_user(user_config.raw); -} - -rgb_theme_t get_rgb_theme(void) { - return *themes[user_config.rgb_theme]; -} - -void rgb_theme_step(void) { - uint8_t current = user_config.rgb_theme; - current = (current + 1) % RGB_THEME_MAX; - set_rgb_theme(current); -} - -void rgb_theme_step_reverse(void) { - uint8_t current = user_config.rgb_theme; - current = (current - 1) % RGB_THEME_MAX; - set_rgb_theme(current); -} - -rgb_theme_color_t get_rgb_theme_color(uint8_t index) { - rgb_theme_t theme = get_rgb_theme(); - size_t rgb_theme_color_max = ARRAY_SIZE(theme.colors); - - if (index == _ADJUST) { - return default_adjust; - } else { - return **(theme.colors + (index % rgb_theme_color_max)); - } -}; - -void rgb_theme_layer(layer_state_t state) { - uint8_t rgb_color_index = get_highest_layer(state); - HSV color = get_rgb_theme_color(rgb_color_index); -#if defined(RGBLIGHT_ENABLE) - color.v = rgblight_config.val; -#elif defined(RGB_MATRIX_ENABLE) - color.v = rgb_matrix_config.hsv.v; -#endif - rgb_layer_helper( color.h, color.s, color.v ); -} -#endif - -#ifdef RGB_MATRIX_ENABLE -void rgb_matrix_layer_helper (uint8_t red, uint8_t green, uint8_t blue, uint8_t led_type) { - for (int i = 0; i < RGB_MATRIX_LED_COUNT; i++) { - if (!HAS_ANY_FLAGS(g_led_config.flags[i], led_type)) { - rgb_matrix_set_color( i, red, green, blue ); - } - } -} - -void rgb_matrix_cycle_flag (void) { - switch (rgb_matrix_get_flags()) { - case LED_FLAG_ALL: - rgb_matrix_set_flags(LED_FLAG_KEYS); - rgb_matrix_set_color_all(0, 0, 0); - break; - case LED_FLAG_KEYS: - rgb_matrix_set_flags(LED_FLAG_UNDERGLOW); - rgb_matrix_set_color_all(0, 0, 0); - break; - case LED_FLAG_UNDERGLOW: - rgb_matrix_set_flags(LED_FLAG_NONE); - rgb_matrix_set_color_all(0, 0, 0); - break; - default: - rgb_matrix_set_flags(LED_FLAG_ALL); - rgb_matrix_enable(); - break; - } -} -#endif - -void rgb_layer_helper(uint8_t hue, uint8_t sat, uint8_t val) { -#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE) - rgblight_sethsv_noeeprom(hue, sat, val); -#ifdef RGB_MATRIX_ENABLE - rgb_matrix_layer_helper(0, 0, 0, rgb_matrix_get_flags()); -#endif -} -#endif - -layer_state_t layer_state_set_rgb(layer_state_t state) { -#if defined(RGB_THEME_ENABLE) - if (user_config.rgb_layer_change) { - rgb_theme_layer(state); - } -#endif // RGBLIGHT_ENABLE - return state; -} diff --git a/users/brandonschlack/rgb_bs.h b/users/brandonschlack/rgb_bs.h deleted file mode 100644 index c5cbd59697..0000000000 --- a/users/brandonschlack/rgb_bs.h +++ /dev/null @@ -1,35 +0,0 @@ -/* Copyright 2020 Brandon Schlack - * - * 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 . - */ -#pragma once -#include "quantum.h" -#ifdef RGB_THEME_ENABLE -# include "rgb_theme.h" -#endif -#ifdef RGB_MATRIX_ENABLE -# include "rgb_matrix.h" -#endif - -#ifdef RGB_MATRIX_ENABLE -#define LED_FLAG_KEYS (LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER) - -void rgb_matrix_layer_helper(uint8_t red, uint8_t green, uint8_t blue, uint8_t led_type); -void rgb_matrix_cycle_flag(void); -#endif - -void keyboard_post_init_rgb(void); -void rgb_layer_helper(uint8_t hue, uint8_t sat, uint8_t val); - -layer_state_t layer_state_set_rgb(layer_state_t state); diff --git a/users/brandonschlack/rgb_theme.h b/users/brandonschlack/rgb_theme.h deleted file mode 100644 index cf9b681de6..0000000000 --- a/users/brandonschlack/rgb_theme.h +++ /dev/null @@ -1,50 +0,0 @@ -/* Copyright 2020 Brandon Schlack - * - * 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 . - */ -#pragma once - -#include "brandonschlack.h" -#include "color.h" - -/*TODO Update as RGBLIGHT Mode */ -#ifndef RGB_THEME_COLORS_MAX -#define RGB_THEME_COLORS_MAX 5 -#endif - -enum rgb_themes { -#define RGB_THEME(name) RGB_THEME_##name, - #include "rgb_theme_user.inc" -#undef RGB_THEME - RGB_THEME_MAX -}; - -// RGB Theme Color -typedef const HSV rgb_theme_color_t; -#define RGB_THEME_COLOR(tname, tcolor,...) rgb_theme_color_t tname ## _ ## tcolor = { __VA_ARGS__ } - -// RGB Theme -typedef struct { - const HSV *colors[RGB_THEME_COLORS_MAX]; -} rgb_theme_t; -extern const rgb_theme_t *themes[]; - -void set_rgb_theme(uint8_t index); -rgb_theme_t get_rgb_theme(void); - -void rgb_theme_step(void); -void rgb_theme_step_reverse(void); - -rgb_theme_color_t get_rgb_theme_color(uint8_t index); -void rgb_theme_layer(layer_state_t state); diff --git a/users/brandonschlack/rgb_theme_user.inc b/users/brandonschlack/rgb_theme_user.inc deleted file mode 100644 index a07e62b789..0000000000 --- a/users/brandonschlack/rgb_theme_user.inc +++ /dev/null @@ -1,95 +0,0 @@ -// Basic Theme -#ifndef DISABLE_RGB_THEME_BASIC -#ifndef RGB_THEME_IMPLS -RGB_THEME(BASIC) -#else -RGB_THEME_COLOR(BASIC, WHITE, HSV_WHITE); -RGB_THEME_COLOR(BASIC, BLUE, HSV_BLUE); -RGB_THEME_COLOR(BASIC, RED, HSV_RED); -RGB_THEME_COLOR(BASIC, GREEN, HSV_GREEN); -RGB_THEME_COLOR(BASIC, YELLOW, HSV_YELLOW); -RGB_THEME(BASIC) = { { &BASIC_WHITE, &BASIC_BLUE, &BASIC_RED, &BASIC_GREEN, &BASIC_YELLOW } }; -#endif // RGB_THEME_IMPLS -#endif // DISABLE_RGB_THEME_BASIC - -// Laser Theme -#ifndef DISABLE_RGB_THEME_LASER -#ifndef RGB_THEME_IMPLS -RGB_THEME(LASER) -#else -RGB_THEME_COLOR(LASER, PURPLE, 191, 255, 255); -RGB_THEME_COLOR(LASER, PINK, 237, 255, 255); -RGB_THEME_COLOR(LASER, BLUE, 165, 255, 255); -RGB_THEME_COLOR(LASER, CYAN, 133, 255, 255); -RGB_THEME_COLOR(LASER, MAGENTA, 213, 255, 255); -RGB_THEME(LASER) = { { &LASER_PURPLE, &LASER_PINK, &LASER_BLUE, &LASER_CYAN, &LASER_MAGENTA } }; -#endif // RGB_THEME_IMPLS -#endif // DISABLE_RGB_THEME_LASER - -// Metropolis Theme -#ifndef DISABLE_RGB_THEME_METROPOLIS -#ifndef RGB_THEME_IMPLS -RGB_THEME(METROPOLIS) -#else -RGB_THEME_COLOR(METROPOLIS, TEAL, 96, 207, 255); -RGB_THEME_COLOR(METROPOLIS, RED, HSV_RED); -RGB_THEME_COLOR(METROPOLIS, YELLOW, 24, 255, 255); -RGB_THEME_COLOR(METROPOLIS, BLUE, 168, 255, 255); -RGB_THEME_COLOR(METROPOLIS, WHITE, HSV_WHITE); -RGB_THEME(METROPOLIS) = { { &METROPOLIS_TEAL, &METROPOLIS_RED, &METROPOLIS_YELLOW, &METROPOLIS_BLUE, &METROPOLIS_WHITE } }; -#endif // RGB_THEME_IMPLS -#endif // DISABLE_RGB_THEME_METROPOLIS - -// Canvas Theme -#ifndef DISABLE_RGB_THEME_CANVAS -#ifndef RGB_THEME_IMPLS -RGB_THEME(CANVAS) -#else -RGB_THEME_COLOR(CANVAS, WHITE, HSV_WHITE); -RGB_THEME_COLOR(CANVAS, ORANGE, 10, 255, 255); -RGB_THEME_COLOR(CANVAS, RED, 0, 231, 255); -RGB_THEME_COLOR(CANVAS, GREEN, 74, 207, 255); -RGB_THEME_COLOR(CANVAS, BLUE, 170, 135, 255); -RGB_THEME(CANVAS) = { { &CANVAS_WHITE, &CANVAS_ORANGE, &CANVAS_RED, &CANVAS_GREEN, &CANVAS_BLUE } }; -#endif // RGB_THEME_IMPLS -#endif // DISABLE_RGB_THEME_CANVAS - -// Jamon Theme -#ifndef DISABLE_RGB_THEME_JAMON -#ifndef RGB_THEME_IMPLS -RGB_THEME(JAMON) -#else -RGB_THEME_COLOR(JAMON, RED, HSV_RED); -RGB_THEME_COLOR(JAMON, LIGHTRED, 4, 255, 255); -RGB_THEME_COLOR(JAMON, WHITE, HSV_WHITE); -RGB_THEME_COLOR(JAMON, YELLOW, HSV_GOLD); -RGB_THEME(JAMON) = { { &JAMON_RED, &JAMON_LIGHTRED, &JAMON_WHITE, &JAMON_YELLOW } }; -#endif // RGB_THEME_IMPLS -#endif // DISABLE_RGB_THEME_JAMON - -// Striker Theme -#ifndef DISABLE_RGB_THEME_STRIKER -#ifndef RGB_THEME_IMPLS -RGB_THEME(STRIKER) -#else -RGB_THEME_COLOR(STRIKER, BLUE, HSV_BLUE); -RGB_THEME_COLOR(STRIKER, AZURE, HSV_AZURE); -RGB_THEME_COLOR(STRIKER, WHITE, HSV_WHITE); -RGB_THEME_COLOR(STRIKER, RED, HSV_RED); -RGB_THEME(STRIKER) = { { &STRIKER_BLUE, &STRIKER_AZURE, &STRIKER_WHITE, &STRIKER_RED } }; -#endif // RGB_THEME_IMPLS -#endif // DISABLE_RGB_THEME_STRIKER - -// Oblique Theme -#ifndef DISABLE_RGB_THEME_OBLIQUE -#ifndef RGB_THEME_IMPLS -RGB_THEME(OBLIQUE) -#else -RGB_THEME_COLOR(OBLIQUE, WHITE, HSV_WHITE); -RGB_THEME_COLOR(OBLIQUE, PURPLE, 186, 143, 255); -RGB_THEME_COLOR(OBLIQUE, RED, 10, 200, 255); -RGB_THEME_COLOR(OBLIQUE, ORANGE, 26, 215, 255); -RGB_THEME_COLOR(OBLIQUE, GREEN, 58, 199, 255); -RGB_THEME(OBLIQUE) = { { &OBLIQUE_WHITE, &OBLIQUE_PURPLE, &OBLIQUE_RED, &OBLIQUE_ORANGE, &OBLIQUE_GREEN } }; -#endif // RGB_THEME_IMPLS -#endif // DISABLE_RGB_THEME_OBLIQUE diff --git a/users/brandonschlack/rules.mk b/users/brandonschlack/rules.mk deleted file mode 100644 index 2dfc332ab9..0000000000 --- a/users/brandonschlack/rules.mk +++ /dev/null @@ -1,34 +0,0 @@ -SRC += brandonschlack.c \ - process_records.c - -SPACE_CADET_ENABLE = no - -# Use LTO except for ChibiOS -ifneq ($(PLATFORM),CHIBIOS) - LTO_ENABLE = yes -endif - -ifeq ($(strip $(IS_MACROPAD)), yes) - OPT_DEFS += -DIS_MACROPAD -endif - -ifeq ($(strip $(RGBLIGHT_ENABLE)), yes) - SRC += rgb_bs.c -endif - -RGB_MATRIX_ENABLE ?= no -ifneq ($(strip $(RGB_MATRIX_ENABLE)), no) - SRC += rgb_bs.c -endif - -ifeq ($(strip $(TAP_DANCE_ENABLE)), yes) - SRC += tap_dances.c -endif - -ifeq ($(strip $(FLASH_BOOTLOADER)), yes) - OPT_DEFS += -DFLASH_BOOTLOADER -endif - -ifneq ($(FORCE_LAYOUT),) - OPT_DEFS += -DFORCE_LAYOUT=\"$(FORCE_LAYOUT)\" -endif diff --git a/users/brandonschlack/tap_dances.c b/users/brandonschlack/tap_dances.c deleted file mode 100644 index 4a4a530ff2..0000000000 --- a/users/brandonschlack/tap_dances.c +++ /dev/null @@ -1,91 +0,0 @@ -/* Copyright 2020 Brandon Schlack - * - * 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 . - */ -#include "tap_dances.h" -#include "process_keycode/process_tap_dance.h" - -int cur_dance (tap_dance_state_t *state) { - if (state->count == 1) { - if (state->interrupted || !state->pressed) return SINGLE_TAP; - else return SINGLE_HOLD; - } else if (state->count == 2) { - if (state->interrupted) return DOUBLE_SINGLE_TAP; - else if (state->pressed) return DOUBLE_HOLD; - else return DOUBLE_TAP; - } - if (state->count == 3) { - if (state->interrupted || !state->pressed) return TRIPLE_TAP; - else return TRIPLE_HOLD; - } - else return 8; -} - -__attribute__ ((weak)) -void process_tap_dance_keycode (bool reset, uint8_t toggle_layer) { }; - -void td_trigger_layer_finished (tap_dance_state_t *state, void *user_data) { - tap_dance_trigger_layer_t *data = (tap_dance_trigger_layer_t *)user_data; - data->state = cur_dance(state); - - if (data->state == data->trigger) { - layer_on(data->layer); - } else { - process_tap_dance_keycode(false, data->layer); - } - -} -void td_trigger_layer_reset (tap_dance_state_t *state, void *user_data) { - tap_dance_trigger_layer_t *data = (tap_dance_trigger_layer_t *)user_data; - if (data->state == data->trigger) { - switch (data->trigger) { - case SINGLE_HOLD: - case DOUBLE_HOLD: - case TRIPLE_HOLD: - layer_off(data->layer); - break; - } - } else { - process_tap_dance_keycode(true, data->layer); - } - data->state = 0; -} - -/* Tap Dance: Layer Mod. Toggles Layer when tapped, Mod when held. */ -void td_layer_mod_each(tap_dance_state_t *state, void *user_data) { - tap_dance_dual_role_t *data = (tap_dance_dual_role_t *)user_data; - - // Single tap → toggle layer, Single hold → mod - if (state->pressed) { - register_code(data->kc); - } else if (state->count == 1) { - state->finished = true; - } -} - -void td_layer_mod_finished(tap_dance_state_t *state, void *user_data) { - tap_dance_dual_role_t *data = (tap_dance_dual_role_t *)user_data; - - if (state->count == 1 && !state->pressed) { - layer_invert(data->layer); - } -} - -void td_layer_mod_reset(tap_dance_state_t *state, void *user_data) { - tap_dance_dual_role_t *data = (tap_dance_dual_role_t *)user_data; - - if (state->count == 1) { - unregister_code(data->kc); - } -} diff --git a/users/brandonschlack/tap_dances.h b/users/brandonschlack/tap_dances.h deleted file mode 100644 index 62c585631e..0000000000 --- a/users/brandonschlack/tap_dances.h +++ /dev/null @@ -1,52 +0,0 @@ -/* Copyright 2020 Brandon Schlack - * - * 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 . - */ -#pragma once -#include "brandonschlack.h" -#ifdef TAP_DANCE_ENABLE -# include "process_keycode/process_tap_dance.h" -#endif - -enum tap_dance_states { - SINGLE_TAP = 1, - SINGLE_HOLD = 2, - DOUBLE_TAP = 3, - DOUBLE_HOLD = 4, - DOUBLE_SINGLE_TAP = 5, - TRIPLE_TAP = 6, - TRIPLE_HOLD = 7 -}; - -int cur_dance (tap_dance_state_t *state); -void process_tap_dance_keycode (bool reset, uint8_t toggle_layer); - -/* Tap Dance: Trigger Layer - * - * Toggles Layer based on given trigger (Single Hold, Double Tap, Double Hold, etc). - * Uses process_tap_dance_keycode() to allow keycode defines based on layer - */ -typedef struct { - uint8_t trigger; - uint8_t layer; - uint8_t state; -} tap_dance_trigger_layer_t; - -#define ACTION_TAP_DANCE_TRIGGER_LAYER(trigger, layer) { \ - .fn = { NULL, td_trigger_layer_finished, td_trigger_layer_reset }, \ - .user_data = (void *)&((tap_dance_trigger_layer_t) { trigger, layer, 0 }), \ -} - -void td_trigger_layer_finished (tap_dance_state_t *state, void *user_data); -void td_trigger_layer_reset (tap_dance_state_t *state, void *user_data); diff --git a/users/brett/brett.c b/users/brett/brett.c deleted file mode 100644 index c19c8b4a8a..0000000000 --- a/users/brett/brett.c +++ /dev/null @@ -1,61 +0,0 @@ -#include "brett.h" - -char * get_key(uint16_t keycode) { - switch (keycode) { - case FAT_ARROW: - return "=>"; - case SKINNY_ARROW: - return "->"; - case REVERSE_ARROW: - return "<-"; - case CONCAT: - return "<>"; - case MAP: - return "<$>"; - case MAP_FLIPPED: - return "<#>"; - case FLAP: - return "<@>"; - case PIPE: - return "|>"; - case ALT: - return "<|>"; - case APPLY: - return "<*>"; - case AND: - return "&&"; - case OR: - return "||"; - case BIND: - return ">>="; - case BIND_FLIPPED: - return "=<<"; - case DOUBLE_COLON: - return "::"; - case VOID_LEFT: - return "<$"; - case VOID_RIGHT: - return "$>"; - default: - return ""; - } -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - bool pressed = record->event.pressed; - switch (keycode) { - case FAT_ARROW ... DOUBLE_COLON: - if (pressed) { - send_string(get_key(keycode)); - } - return false; - case FLASH: - if (!pressed) { - SEND_STRING("make -j8 --output-sync " QMK_KEYBOARD ":" QMK_KEYMAP ":flash" SS_TAP(X_ENTER)); - reset_keyboard(); - } - return false; - default: - return true; - } -} diff --git a/users/brett/brett.h b/users/brett/brett.h deleted file mode 100644 index a359c5157a..0000000000 --- a/users/brett/brett.h +++ /dev/null @@ -1,25 +0,0 @@ -#pragma once - -enum userspace_custom_keycodes { - PLACEHOLDER = SAFE_RANGE, // Can always be here - FAT_ARROW, // => - SKINNY_ARROW, // -> - REVERSE_ARROW, // <- - CONCAT, // <> - MAP, // <$> - MAP_FLIPPED, // <#> - FLAP, // <@> - PIPE, // |> - ALT, // <|> - APPLY, // <*> - AND, // && - OR, // || - BIND, // >>= - BIND_FLIPPED, // =<< - VOID_LEFT, // <$ - VOID_RIGHT, // $> - DOUBLE_COLON, // :: - FLASH // Handle keyboard flashing -}; - -bool process_record_keymap(uint16_t keycode, keyrecord_t *record); diff --git a/users/brett/rules.mk b/users/brett/rules.mk deleted file mode 100644 index b186662ddb..0000000000 --- a/users/brett/rules.mk +++ /dev/null @@ -1 +0,0 @@ -SRC += brett.c diff --git a/users/byungyoonc/byungyoonc.c b/users/byungyoonc/byungyoonc.c deleted file mode 100644 index 5059de0d97..0000000000 --- a/users/byungyoonc/byungyoonc.c +++ /dev/null @@ -1,48 +0,0 @@ -/* Copyright 2021 Choi Byungyoon - * - * 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 . - */ - -#include QMK_KEYBOARD_H -#include "byungyoonc.h" - -#if (__has_include("secrets.h") && !defined(NO_SECRETS)) -# include "secrets.h" -#else -static const char *const secrets[] = {"test1", "test2"}; -#endif - -#if !defined(MACRO_TIMER) -# define MACRO_TIMER 20 -#endif - -/* replicaJunction's process_record_user_kb */ -__attribute__ ((weak)) -bool process_record_user_kb(uint16_t keycode, keyrecord_t *record) { - return true; -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case KC_SEC1 ... KC_SEC2: /* Secrets! Externally defined strings, not stored in repo */ - if (!record->event.pressed) { - clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED); - send_string_with_delay(secrets[keycode - KC_SEC1], MACRO_TIMER); - } - return false; - break; - } - return process_record_user_kb(keycode, record); -}; - diff --git a/users/byungyoonc/byungyoonc.h b/users/byungyoonc/byungyoonc.h deleted file mode 100644 index 6d82370a01..0000000000 --- a/users/byungyoonc/byungyoonc.h +++ /dev/null @@ -1,27 +0,0 @@ -/* Copyright 2021 Choi Byungyoon - * - * 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 . - */ - -#pragma once - -enum custom_keycodes { - KC_SEC1 = SAFE_RANGE, - KC_SEC2 -}; - -#define KC_TASK LCTL(LSFT(KC_ESC)) -#define KC_MMUT LSG(KC_A) - -bool process_record_user_kb(uint16_t keycode, keyrecord_t *record); diff --git a/users/byungyoonc/readme.md b/users/byungyoonc/readme.md deleted file mode 100644 index d0bc8d14d4..0000000000 --- a/users/byungyoonc/readme.md +++ /dev/null @@ -1,14 +0,0 @@ -byungyoonc QMK Userspace -======================== - -# Overview -Defines some custom keycodes, alongside with the Secrets feature. Also incorporates `process_record_user_kb()` for further controls. - -Heavily influenced by the [Userspace code by replicaJunction](../replicaJunction/readme.md). - -# Features - -## Custom Keycodes -- `KC_SEC#` for the Secrets input -- `KC_TASK` for the Windows Task Manager shortcut `LCTL(LSFT(KC_ESC))` -- `KC_MMUT` for the Windows PowerToys Conference Mute microphone `LSG(KC_A)` diff --git a/users/byungyoonc/rules.mk b/users/byungyoonc/rules.mk deleted file mode 100644 index 39c65e2238..0000000000 --- a/users/byungyoonc/rules.mk +++ /dev/null @@ -1 +0,0 @@ -SRC += byungyoonc.c diff --git a/users/byungyoonc/saturated_solid_multisplash.h b/users/byungyoonc/saturated_solid_multisplash.h deleted file mode 100644 index c6850a7873..0000000000 --- a/users/byungyoonc/saturated_solid_multisplash.h +++ /dev/null @@ -1,50 +0,0 @@ -/* Copyright 2021 Choi Byungyoon - * - * 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 . - */ - -#if defined(RGB_MATRIX_KEYPRESSES) -RGB_MATRIX_EFFECT(saturated_solid_multisplash) - -# if defined(RGB_MATRIX_CUSTOM_EFFECT_IMPLS) - -static bool saturated_solid_multisplash(effect_params_t* params) { - RGB_MATRIX_USE_LIMITS(led_min, led_max); - - uint8_t count = g_last_hit_tracker.count; - for (uint8_t i = led_min; i < led_max; i++) { - RGB_MATRIX_TEST_LED_FLAGS(); - HSV hsv = rgb_matrix_config.hsv; - hsv.v = 0; - for (uint8_t j = 0; j < count; j++) { - int16_t dx = g_led_config.point[i].x - g_last_hit_tracker.x[j]; - int16_t dy = g_led_config.point[i].y - g_last_hit_tracker.y[j]; - uint8_t dist = sqrt16(dx * dx + dy * dy); - uint16_t tick = scale16by8(g_last_hit_tracker.tick[j], qadd8(rgb_matrix_config.speed, 1)); - - uint16_t effect = tick - dist; - if (effect > 255) effect = 255; - uint16_t vdiff = scale16by8(255 - effect, 255 - dist); - hsv.v = qadd8(hsv.v, vdiff); - hsv.s = qsub8(hsv.s, qsub8(127, effect)); - } - hsv.v = scale8(hsv.v, rgb_matrix_config.hsv.v); - RGB rgb = rgb_matrix_hsv_to_rgb(hsv); - rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); - } - return led_max < RGB_MATRIX_LED_COUNT; -} - -# endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS -#endif // RGB_MATRIX_KEYPRESSES diff --git a/users/callum/callum.c b/users/callum/callum.c deleted file mode 100644 index 73367e8e57..0000000000 --- a/users/callum/callum.c +++ /dev/null @@ -1,130 +0,0 @@ -#include QMK_KEYBOARD_H - -#include "oneshot.h" -#include "swapper.h" - -#define HOME G(KC_LEFT) -#define END G(KC_RGHT) -#define FWD G(KC_RBRC) -#define BACK G(KC_LBRC) -#define TABL G(S(KC_LBRC)) -#define TABR G(S(KC_RBRC)) -#define SPCL A(G(KC_LEFT)) -#define SPC_R A(G(KC_RGHT)) -#define LA_SYM MO(SYM) -#define LA_NAV MO(NAV) - -enum layers { - DEF, - SYM, - NAV, - NUM, -}; - -enum keycodes { - // Custom oneshot mod implementation with no timers. - OS_SHFT = SAFE_RANGE, - OS_CTRL, - OS_ALT, - OS_CMD, - - SW_WIN, // Switch to next window (cmd-tab) - SW_LANG, // Switch to next input language (ctl-spc) -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [DEF] = LAYOUT_callum( - KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, - KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, - KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, - LA_NAV, KC_LSFT, KC_SPC, LA_SYM - ), - - [SYM] = LAYOUT_callum( - KC_ESC, KC_LBRC, KC_LCBR, KC_LPRN, KC_TILD, KC_CIRC, KC_RPRN, KC_RCBR, KC_RBRC, KC_GRV, - KC_MINS, KC_ASTR, KC_EQL, KC_UNDS, KC_DLR, KC_HASH, OS_CMD, OS_ALT, OS_CTRL, OS_SHFT, - KC_PLUS, KC_PIPE, KC_AT, KC_BSLS, KC_PERC, XXXXXXX, KC_AMPR, KC_SCLN, KC_COLN, KC_EXLM, - _______, _______, _______, _______ - ), - - [NAV] = LAYOUT_callum( - KC_TAB, SW_WIN, TABL, TABR, KC_VOLU, QK_BOOT, HOME, KC_UP, END, KC_DEL, - OS_SHFT, OS_CTRL, OS_ALT, OS_CMD, KC_VOLD, KC_CAPS, KC_LEFT, KC_DOWN, KC_RGHT, KC_BSPC, - SPCL, SPC_R, BACK, FWD, KC_MPLY, XXXXXXX, KC_PGDN, KC_PGUP, SW_LANG, KC_ENT, - _______, _______, _______, _______ - ), - - [NUM] = LAYOUT_callum( - KC_7, KC_5, KC_3, KC_1, KC_9, KC_8, KC_0, KC_2, KC_4, KC_6, - OS_SHFT, OS_CTRL, OS_ALT, OS_CMD, KC_F11, KC_F10, OS_CMD, OS_ALT, OS_CTRL, OS_SHFT, - KC_F7, KC_F5, KC_F3, KC_F1, KC_F9, KC_F8, KC_F12, KC_F2, KC_F4, KC_F6, - _______, _______, _______, _______ - ), -}; - -bool is_oneshot_cancel_key(uint16_t keycode) { - switch (keycode) { - case LA_SYM: - case LA_NAV: - return true; - default: - return false; - } -} - -bool is_oneshot_ignored_key(uint16_t keycode) { - switch (keycode) { - case LA_SYM: - case LA_NAV: - case KC_LSFT: - case OS_SHFT: - case OS_CTRL: - case OS_ALT: - case OS_CMD: - return true; - default: - return false; - } -} - -bool sw_win_active = false; -bool sw_lang_active = false; - -oneshot_state os_shft_state = os_up_unqueued; -oneshot_state os_ctrl_state = os_up_unqueued; -oneshot_state os_alt_state = os_up_unqueued; -oneshot_state os_cmd_state = os_up_unqueued; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - update_swapper( - &sw_win_active, KC_LGUI, KC_TAB, SW_WIN, - keycode, record - ); - update_swapper( - &sw_lang_active, KC_LCTL, KC_SPC, SW_LANG, - keycode, record - ); - - update_oneshot( - &os_shft_state, KC_LSFT, OS_SHFT, - keycode, record - ); - update_oneshot( - &os_ctrl_state, KC_LCTL, OS_CTRL, - keycode, record - ); - update_oneshot( - &os_alt_state, KC_LALT, OS_ALT, - keycode, record - ); - update_oneshot( - &os_cmd_state, KC_LCMD, OS_CMD, - keycode, record - ); - - return true; -} - -layer_state_t layer_state_set_user(layer_state_t state) { - return update_tri_layer_state(state, SYM, NAV, NUM); -} diff --git a/users/callum/oneshot.c b/users/callum/oneshot.c deleted file mode 100644 index 33ec3895e2..0000000000 --- a/users/callum/oneshot.c +++ /dev/null @@ -1,57 +0,0 @@ -#include "oneshot.h" - -void update_oneshot( - oneshot_state *state, - uint16_t mod, - uint16_t trigger, - uint16_t keycode, - keyrecord_t *record -) { - if (keycode == trigger) { - if (record->event.pressed) { - // Trigger keydown - if (*state == os_up_unqueued) { - register_code(mod); - } - *state = os_down_unused; - } else { - // Trigger keyup - switch (*state) { - case os_down_unused: - // If we didn't use the mod while trigger was held, queue it. - *state = os_up_queued; - break; - case os_down_used: - // If we did use the mod while trigger was held, unregister it. - *state = os_up_unqueued; - unregister_code(mod); - break; - default: - break; - } - } - } else { - if (record->event.pressed) { - if (is_oneshot_cancel_key(keycode) && *state != os_up_unqueued) { - // Cancel oneshot on designated cancel keydown. - *state = os_up_unqueued; - unregister_code(mod); - } - } else { - if (!is_oneshot_ignored_key(keycode)) { - // On non-ignored keyup, consider the oneshot used. - switch (*state) { - case os_down_unused: - *state = os_down_used; - break; - case os_up_queued: - *state = os_up_unqueued; - unregister_code(mod); - break; - default: - break; - } - } - } - } -} diff --git a/users/callum/oneshot.h b/users/callum/oneshot.h deleted file mode 100644 index a6b8e17742..0000000000 --- a/users/callum/oneshot.h +++ /dev/null @@ -1,31 +0,0 @@ -#pragma once - -#include QMK_KEYBOARD_H - -// Represents the four states a oneshot key can be in -typedef enum { - os_up_unqueued, - os_up_queued, - os_down_unused, - os_down_used, -} oneshot_state; - -// Custom oneshot mod implementation that doesn't rely on timers. If a mod is -// used while it is held it will be unregistered on keyup as normal, otherwise -// it will be queued and only released after the next non-mod keyup. -void update_oneshot( - oneshot_state *state, - uint16_t mod, - uint16_t trigger, - uint16_t keycode, - keyrecord_t *record -); - -// To be implemented by the consumer. Defines keys to cancel oneshot mods. -bool is_oneshot_cancel_key(uint16_t keycode); - -// To be implemented by the consumer. Defines keys to ignore when determining -// whether a oneshot mod has been used. Setting this to modifiers and layer -// change keys allows stacking multiple oneshot modifiers, and carrying them -// between layers. -bool is_oneshot_ignored_key(uint16_t keycode); diff --git a/users/callum/readme.md b/users/callum/readme.md deleted file mode 100644 index 24b71038b6..0000000000 --- a/users/callum/readme.md +++ /dev/null @@ -1,99 +0,0 @@ -A keymap for 34 keys with 4 layers and no mod-tap. - -![](https://raw.githubusercontent.com/callum-oakley/keymap/master/keymap.svg) - -## Details - -- Hold `sym` to activate the symbols layer. -- Hold `nav` to activate the navigation layer. -- Hold `sym` and `nav` together to activate the numbers layer. -- The home row modifiers are oneshot so that it's possible to modify the - keys on the base layer, where there are no dedicated modifiers. -- `swap win` sends `cmd-tab` for changing focus in macOS but holds `cmd` - between consecutive presses. -- `swap lang` behaves similarly but sends `ctrl-space`, for changing input - language in macOS. - -## Oneshot modifiers - -The home row modifiers can either be held and used as normal, or if no other -keys are pressed while a modifier is down, the modifier will be queued and -applied to the next non-modifier keypress. For example to type `shift-cmd-t`, -type `sym-o-n` (or `nav-a-t`), release, then hit `t`. - -You can and should hit chords as fast as you like because there are no timers -involved. - -Cancel unused modifiers by tapping `nav` or `sym`. - -### Userspace oneshot implementation - -For my usage patterns I was hitting stuck modifiers frequently with [`OSM`][] -(maybe related to [#3963][]?). I'd like to try to help fix this in QMK proper, -but implementing oneshot mods in userspace first was: - -1. Fun. -2. A good exploration of how I think oneshot mods should work without timers. - -So in the meantime, this [userspace oneshot implementation][] is working well -for me. - -## Swapper - -`swap win` sends `cmd-tab`, but holds `cmd` between consecutive keypresses. -`cmd` is released when some other key is hit or released. For example - - nav down, swap win, swap win, nav up -> cmd down, tab, tab, cmd up - nav down, swap win, enter -> cmd down, tab, cmd up, enter - -`swap lang` sends `ctrl-space` to swap input languages in macOS and behaves -similarly. - -[Swapper implementation.][] - -## Why no mod-tap? - -[Mod-tap][] seems to be by far the most popular tool among users of tiny -keyboards to answer the question of where to put the modifiers, and in the -right hands it can clearly work brilliantly, but I've always found myself error -prone and inconsistent with it. - -With dedicated modifiers, there are three ways one might type `ctrl-c`: - - ctrl down, ctrl up, c down, c up - ctrl down, c down, ctrl up, c up - ctrl down, c down, c up, ctrl up - -Basically, you never have to worry about the keyups, as long as the keydowns -occur in the correct order. Similarly, there are three ways one might type -`ac`: - - a down, a up, c down, c up - a down, c down, a up, c up - a down, c down, c up, a up - -Replace `a` with `ctrl` and this is exactly what we had before! So if we want -to put `a` and `ctrl` on the same key we have a problem, because without -considering timing these sequences become ambiguous. So let's consider timing. - -The solution to the ambiguity that QMK employs is to configure the -`TAPPING_TERM` and consider a key held rather than tapped if it is held for -long enough. My problem with this is that it forces you to slow down to use -modifiers. By its very nature the tapping term must be longer than the longest -you would ever hold a key while typing on the slowest laziest Sunday afternoon. -I'm not typing at 100% speed at all times, but when I am, having to think about -timing and consciously slow down for certain actions never fails to trip me up. - -So alas, mod-tap is not for me -- but if it works for you, more power to you. -:) - -* * * - -[My github][] - -[`OSM`]: /docs/one_shot_keys.md -[#3963]: https://github.com/qmk/qmk_firmware/issues/3963 -[userspace oneshot implementation]: oneshot.c -[swapper implementation.]: swapper.c -[Mod-tap]: https://github.com/qmk/qmk_firmware/blob/master/docs/mod_tap.md -[My github]: https://github.com/callum-oakley diff --git a/users/callum/rules.mk b/users/callum/rules.mk deleted file mode 100644 index 2d98e02c55..0000000000 --- a/users/callum/rules.mk +++ /dev/null @@ -1,3 +0,0 @@ -SRC += callum.c -SRC += oneshot.c -SRC += swapper.c diff --git a/users/callum/swapper.c b/users/callum/swapper.c deleted file mode 100644 index 736b2fef0c..0000000000 --- a/users/callum/swapper.c +++ /dev/null @@ -1,27 +0,0 @@ -#include "swapper.h" - -void update_swapper( - bool *active, - uint16_t cmdish, - uint16_t tabish, - uint16_t trigger, - uint16_t keycode, - keyrecord_t *record -) { - if (keycode == trigger) { - if (record->event.pressed) { - if (!*active) { - *active = true; - register_code(cmdish); - } - register_code(tabish); - } else { - unregister_code(tabish); - // Don't unregister cmdish until some other key is hit or released. - } - } else if (*active) { - unregister_code(cmdish); - *active = false; - } -} - diff --git a/users/callum/swapper.h b/users/callum/swapper.h deleted file mode 100644 index ad47fd96ce..0000000000 --- a/users/callum/swapper.h +++ /dev/null @@ -1,20 +0,0 @@ -#pragma once - -#include QMK_KEYBOARD_H - -// Implements cmd-tab like behaviour on a single key. On first tap of trigger -// cmdish is held and tabish is tapped -- cmdish then remains held until some -// other key is hit or released. For example: -// -// trigger, trigger, a -> cmd down, tab, tab, cmd up, a -// nav down, trigger, nav up -> nav down, cmd down, tab, cmd up, nav up -// -// This behaviour is useful for more than just cmd-tab, hence: cmdish, tabish. -void update_swapper( - bool *active, - uint16_t cmdish, - uint16_t tabish, - uint16_t trigger, - uint16_t keycode, - keyrecord_t *record -); diff --git a/users/cameronjlarsen/features/oneshot.c b/users/cameronjlarsen/features/oneshot.c deleted file mode 100644 index 799b7c1aa2..0000000000 --- a/users/cameronjlarsen/features/oneshot.c +++ /dev/null @@ -1,66 +0,0 @@ -/* Copyright 2022 Cameron Larsen - * - * 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 . - */ -#include "oneshot.h" - -void update_oneshot(oneshot_state *state, uint16_t mod, uint16_t trigger, uint16_t keycode, keyrecord_t *record) { - if (keycode == trigger) { - if (record->event.pressed) { - // Trigger keydown - if (*state == os_up_unqueued) { - register_code(mod); - } - *state = os_down_unused; - } else { - // Trigger keyup - switch (*state) { - case os_down_unused: - // If we didn't use the mod while trigger was held, queue it. - *state = os_up_queued; - break; - case os_down_used: - // If we did use the mod while trigger was held, unregister it. - *state = os_up_unqueued; - unregister_code(mod); - break; - default: - break; - } - } - } else { - if (record->event.pressed) { - if (is_oneshot_cancel_key(keycode) && *state != os_up_unqueued) { - // Cancel oneshot on designated cancel keydown. - *state = os_up_unqueued; - unregister_code(mod); - } - } else { - if (!is_oneshot_ignored_key(keycode)) { - // On non-ignored keyup, consider the oneshot used. - switch (*state) { - case os_down_unused: - *state = os_down_used; - break; - case os_up_queued: - *state = os_up_unqueued; - unregister_code(mod); - break; - default: - break; - } - } - } - } -} diff --git a/users/cameronjlarsen/features/oneshot.h b/users/cameronjlarsen/features/oneshot.h deleted file mode 100644 index 7fac7b5d58..0000000000 --- a/users/cameronjlarsen/features/oneshot.h +++ /dev/null @@ -1,41 +0,0 @@ -// The GPLv2 License (GPLv2) -// -// Copyright (c) 2022 Cameron Larsen -// -// 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 . -#pragma once - -#include QMK_KEYBOARD_H - -// Represents the four states a oneshot key can be in -typedef enum { - os_up_unqueued, - os_up_queued, - os_down_unused, - os_down_used, -} oneshot_state; - -// Custom oneshot mod implementation that doesn't rely on timers. If a mod is -// used while it is held it will be unregistered on keyup as normal, otherwise -// it will be queued and only released after the next non-mod keyup. -void update_oneshot(oneshot_state *state, uint16_t mod, uint16_t trigger, uint16_t keycode, keyrecord_t *record); - -// To be implemented by the consumer. Defines keys to cancel oneshot mods. -bool is_oneshot_cancel_key(uint16_t keycode); - -// To be implemented by the consumer. Defines keys to ignore when determining -// whether a oneshot mod has been used. Setting this to modifiers and layer -// change keys allows stacking multiple oneshot modifiers, and carrying them -// between layers. -bool is_oneshot_ignored_key(uint16_t keycode); diff --git a/users/cameronjlarsen/rules.mk b/users/cameronjlarsen/rules.mk deleted file mode 100644 index 59d14ca61f..0000000000 --- a/users/cameronjlarsen/rules.mk +++ /dev/null @@ -1,5 +0,0 @@ -CUSTOM_ONESHOT_ENABLE ?= no -ifeq ($(strip $(CUSTOM_ONESHOT_ENABLE)), yes) - SRC += $(USER_PATH)/features/oneshot.c - OPT_DEFS += -DCUSTOM_ONESHOT_ENABLE -endif diff --git a/users/cbbrowne/cbbrowne.c b/users/cbbrowne/cbbrowne.c deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/users/cbbrowne/cbbrowne.h b/users/cbbrowne/cbbrowne.h deleted file mode 100644 index 301636c053..0000000000 --- a/users/cbbrowne/cbbrowne.h +++ /dev/null @@ -1,39 +0,0 @@ -#ifndef USERSPACE -#define USERSPACE - -#ifdef BACKLIGHT_ENABLE -#include "backlight.h" -#endif -#include "quantum.h" -#include "config.h" - -#ifndef CONFIG_USER_H -#define CONFIG_USER_H - -#ifndef NO_DEBUG -#define NO_DEBUG -#endif -#ifndef NO_PRINT -#define NO_PRINT -#endif - -/* cbbrowne user configuration */ - -#define randadd 53 -#define randmul 181 -#define randmod 167 - -/* Filler to make layering a bit clearer * - * borrowed from basic keymap */ - -#define _______ KC_TRNS -#define _____ KC_NO - -#define LEADER_TIMEOUT 300 -#ifndef LIGHT_CONFIG_H -#define BACKLIGHT_BREATHING -#endif - -#endif - -#endif diff --git a/users/cbbrowne/rules.mk b/users/cbbrowne/rules.mk deleted file mode 100644 index 497638cdb3..0000000000 --- a/users/cbbrowne/rules.mk +++ /dev/null @@ -1 +0,0 @@ -SRC += cbbrowne.c diff --git a/users/cedrikl/cedrikl.c b/users/cedrikl/cedrikl.c deleted file mode 100644 index f9f4f1fbc0..0000000000 --- a/users/cedrikl/cedrikl.c +++ /dev/null @@ -1,36 +0,0 @@ -/* Copyright 2021 Cedrik Lussier @cedrikl -.* Directly inspired from the work of jonavin https://github.com/qmk/qmk_firmware/tree/master/keyboards/gmmk/pro/ansi/keymaps/jonavin - -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 . -*/ - - -#include QMK_KEYBOARD_H -#include "cedrikl.h" - -// Turn on/off NUM LOCK if current state is different -void activate_numlock(bool turn_on) { - if (host_keyboard_led_state().num_lock != turn_on) { - tap_code(KC_NUM_LOCK); - } -} - - -// INITIAL STARTUP - -void keyboard_post_init_user(void) { - #ifdef STARTUP_NUMLOCK_ON - activate_numlock(true); // turn on Num lock by default so that the numpad layer always has predictable results - #endif // STARTUP_NUMLOC_ON -} diff --git a/users/cedrikl/cedrikl.h b/users/cedrikl/cedrikl.h deleted file mode 100644 index e25d274664..0000000000 --- a/users/cedrikl/cedrikl.h +++ /dev/null @@ -1,21 +0,0 @@ -/* Copyright 2021 Cedrik Lussier @cedrikl -.* Directly inspired from the work of jonavin https://github.com/qmk/qmk_firmware/tree/master/keyboards/gmmk/pro/ansi/keymaps/jonavin - -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 . -*/ - -#pragma once - -// OTHER FUNCTION PROTOTYPE -void activate_numlock(bool turn_on); diff --git a/users/cedrikl/config.h b/users/cedrikl/config.h deleted file mode 100644 index 8df38348d2..0000000000 --- a/users/cedrikl/config.h +++ /dev/null @@ -1,25 +0,0 @@ -/* Copyright 2021 Cedrik Lussier @cedrikl -.* Directly inspired from the work of jonavin https://github.com/qmk/qmk_firmware/tree/master/keyboards/gmmk/pro/ansi/keymaps/jonavin - * - * 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 . - */ - -#pragma once - -#ifdef RGB_MATRIX_ENABLE - #define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_COLOR - //#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL - #define RGB_DISABLE_WHEN_USB_SUSPENDED - #define RGB_MATRIX_DEFAULT_VAL 120 -#endif diff --git a/users/cedrikl/rules.mk b/users/cedrikl/rules.mk deleted file mode 100644 index b5ee62c43a..0000000000 --- a/users/cedrikl/rules.mk +++ /dev/null @@ -1,4 +0,0 @@ -SRC += cedrikl.c -ifeq ($(strip $(STARTUP_NUMLOCK_ON)), yes) - OPT_DEFS += -DSTARTUP_NUMLOCK_ON -endif diff --git a/users/charlesrocket/apl.c b/users/charlesrocket/apl.c deleted file mode 100644 index 92c1ea9f3d..0000000000 --- a/users/charlesrocket/apl.c +++ /dev/null @@ -1,183 +0,0 @@ -/* Copyright 2022 charlesrocket - * - * 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 . - */ - -#include QMK_KEYBOARD_H - -enum unicode_names { - DIAMOND, - QUAD_DIAMOND, - DIAERESIS, - IBEAM, - MACRON, - DEL_TILDE, - LESS, - DEL_STILE, - LESS_EQUAL, - DELTA_STILE, - EQUALS, - CIRCLE_STILE, - GREATER_EQUAL, - CIRCLE_BACKSLASH, - GREATER, - CIRCLED_MINUS, - NOT_EQUAL, - CIRCLE_STAR, - OR, - DOWN_CARET_TILDE, - AND, - UP_CARET_TILDE, - MULT, - EXCL, - DIVISION, - QUAD_DIVIDE, - QUESTION_MARK, - OMEGA, - OMEGA_UNDERBAR, - EPSILON, - SMALL_ELEMENT, - EPSILON_UNDERBAR, - RHO, - TILDE, - TILDE_DIAERESIS, - UPWARDS_ARROW, - DOWNWARDS_ARROW, - IOTA, - IOTA_UNDERBAR, - WHITE_CIRCLE, - CIRCLE_DIAERESIS, - STAR_OPERATOR, - STAR_DIAERESIS, - LEFT_ARROW, - QUOTE_QUAD, - RIGHT_ARROW, - ZILDE, - ALPHA, - ALPHA_UNDERBAR, - LEFT_CEILING, - LEFT_FLOOR, - LOW_LINE, - NABLA, - INCREMENT, - DELTA_UNDERBAR, - RING_OPERATOR, - JOT_DIAERESIS, - APOSTROPHE, - QUAD_EQUAL, - QUAD, - SQUISH_QUAD, - DOWN_TACK_JOT, - IDENTICAL, - UP_TACK_JOT, - NOT_IDENTICAL, - RIGHT_TACK, - LEFT_TACK, - SUBSET, - SUPERSET, - CHI, - INTERSECTION, - UNION, - UP_TACK, - DOWN_TACK, - VERTICAL_LINE, - UP_SHOE_JOT, - COMMA_BAR, - BACKSLASH_BAR, - SLASH_BAR, - QUAD_COLON -}; - -const uint32_t unicode_map[] PROGMEM = { - [DIAMOND] = 0x25CA, // ◊ 0 - [QUAD_DIAMOND] = 0x233A, // ⌹ - [DIAERESIS] = 0x00A8, // ÂĻ - [IBEAM] = 0x2336, // âŒķ - [MACRON] = 0x00AF, // ÂŊ - [DEL_TILDE] = 0x236B, // âŦ 5 - [LESS] = 0x003C, // < - [DEL_STILE] = 0x2352, // ⍒ - [LESS_EQUAL] = 0x2264, // â‰Ī - [DELTA_STILE] = 0x234B, // ⍋ - [EQUALS] = 0x003D, // = 10 - [CIRCLE_STILE] = 0x233D, // âŒ― - [GREATER_EQUAL] = 0x2265, // â‰Ĩ - [CIRCLE_BACKSLASH] = 0x2349, // ⍉ - [GREATER] = 0x003E, // > - [CIRCLED_MINUS] = 0x2296, // ⊖ 15 - [NOT_EQUAL] = 0x2260, // ≠ - [CIRCLE_STAR] = 0x235F, // ⍟ - [OR] = 0x2228, // âˆĻ - [DOWN_CARET_TILDE] = 0x2371, // ⍱ - [AND] = 0x2227, // ∧ 20 - [UP_CARET_TILDE] = 0x2372, // âē - [MULT] = 0x00D7, // × - [EXCL] = 0x0021, // ! - [DIVISION] = 0x00F7, // ÷ - [QUAD_DIVIDE] = 0x2339, // âŒđ 25 - [QUESTION_MARK] = 0x003F, // ? - [OMEGA] = 0x2375, // âĩ - [OMEGA_UNDERBAR] = 0x2379, // âđ - [EPSILON] = 0x03B5, // Îĩ - [SMALL_ELEMENT] = 0x220A, // ∊ 30 - [EPSILON_UNDERBAR] = 0x2377, // ⍷ - [RHO] = 0x2374, // âī - [TILDE] = 0x007E, // ~ - [TILDE_DIAERESIS] = 0x2368, // âĻ - [UPWARDS_ARROW] = 0x2191, // ↑ 35 - [DOWNWARDS_ARROW] = 0x2193, // ↓ - [IOTA] = 0x2373, // âģ - [IOTA_UNDERBAR] = 0x2378, // âļ - [WHITE_CIRCLE] = 0x25CB, // ○ - [CIRCLE_DIAERESIS] = 0x2365, // âĨ 40 - [STAR_OPERATOR] = 0x22C6, // ⋆ - [STAR_DIAERESIS] = 0x2363, // âĢ - [LEFT_ARROW] = 0x2190, // ← - [QUOTE_QUAD] = 0x235E, // ⍞ - [RIGHT_ARROW] = 0x2192, // → 45 - [ZILDE] = 0x236C, // ⍎ - [ALPHA] = 0x237A, // ⍚ - [ALPHA_UNDERBAR] = 0x2376, // âķ - [LEFT_CEILING] = 0x2308, // ⌈ - [LEFT_FLOOR] = 0x230A, // ⌊ 50 - [LOW_LINE] = 0x005F, // _ - [NABLA] = 0x2207, // ∇ - [INCREMENT] = 0x2206, // ∆ - [DELTA_UNDERBAR] = 0x2359, // ⍙ - [RING_OPERATOR] = 0x2218, // ∘ 55 - [JOT_DIAERESIS] = 0x2364, // âĪ - [APOSTROPHE] = 0x0027, // ' - [QUAD_EQUAL] = 0x2338, // âŒļ - [QUAD] = 0x2395, // ⎕ - [SQUISH_QUAD] = 0x2337, // ⌷ 60 - [DOWN_TACK_JOT] = 0x234E, // ⍎ - [IDENTICAL] = 0x2261, // ≡ - [UP_TACK_JOT] = 0x2355, // ⍕ - [NOT_IDENTICAL] = 0x2262, // â‰Ē - [RIGHT_TACK] = 0x22A2, // âŠĒ 65 - [LEFT_TACK] = 0x22A3, // âŠĢ - [SUBSET] = 0x2282, // ⊂ - [SUPERSET] = 0x2283, // ⊃ - [CHI] = 0x03C7, // χ - [INTERSECTION] = 0x2229, // âˆĐ 70 - [UNION] = 0x222A, // ∊ - [UP_TACK] = 0x22A5, // âŠĨ - [DOWN_TACK] = 0x22A4, // âŠĪ - [VERTICAL_LINE] = 0x007C, // | - [UP_SHOE_JOT] = 0x235D, // ⍝ 75 - [COMMA_BAR] = 0x236A, // ⍊ - [BACKSLASH_BAR] = 0x2340, // ⍀ - [SLASH_BAR] = 0x233F, // âŒŋ - [QUAD_COLON] = 0x2360, // ⍠ 79 -}; diff --git a/users/charlesrocket/rules.mk b/users/charlesrocket/rules.mk deleted file mode 100644 index ec5aa5585d..0000000000 --- a/users/charlesrocket/rules.mk +++ /dev/null @@ -1,3 +0,0 @@ -ifeq ($(strip $(APL_ENABLE)), yes) - SRC += apl.c -endif diff --git a/users/cjuniet/cjuniet.c b/users/cjuniet/cjuniet.c deleted file mode 100644 index 3b950b1ad5..0000000000 --- a/users/cjuniet/cjuniet.c +++ /dev/null @@ -1,13 +0,0 @@ -#include "cjuniet.h" - -void render_status_bar(void) { - uint8_t modifiers = get_mods(); - led_t led_state = host_keyboard_led_state(); - oled_write_P(PSTR("\325\326"), (modifiers & MOD_MASK_SHIFT)); - oled_write_P(PSTR("\327\330"), (modifiers & MOD_MASK_CTRL)); - oled_write_P(PSTR("\331\332"), (modifiers & MOD_MASK_ALT)); - oled_write_P(PSTR("\333\334"), (modifiers & MOD_MASK_GUI)); - oled_write_P(PSTR(" "), false); - oled_write_P(PSTR("\235\236"), led_state.caps_lock); - oled_write_P(PSTR("\275\276"), led_state.num_lock); -} diff --git a/users/cjuniet/cjuniet.h b/users/cjuniet/cjuniet.h deleted file mode 100644 index adc46d7ed6..0000000000 --- a/users/cjuniet/cjuniet.h +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once - -#include "quantum.h" - -void render_status_bar(void); diff --git a/users/cjuniet/glcdfont.c b/users/cjuniet/glcdfont.c deleted file mode 100644 index 539b0bd92d..0000000000 --- a/users/cjuniet/glcdfont.c +++ /dev/null @@ -1,230 +0,0 @@ -#include "progmem.h" - -// Online editor: https://helixfonteditor.netlify.com/ - -static const unsigned char font[] PROGMEM = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00, - 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00, - 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00, - 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00, - 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00, - 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, - 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00, - 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, - 0x00, 0x18, 0x24, 0x18, 0x00, 0x00, - 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00, - 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00, - 0x26, 0x29, 0x79, 0x29, 0x26, 0x00, - 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00, - 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00, - 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00, - 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00, - 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00, - 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00, - 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00, - 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00, - 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00, - 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, - 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00, - 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00, - 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00, - 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00, - 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00, - 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00, - 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00, - 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00, - 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, - 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, - 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, - 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00, - 0x23, 0x13, 0x08, 0x64, 0x62, 0x00, - 0x36, 0x49, 0x56, 0x20, 0x50, 0x00, - 0x00, 0x08, 0x07, 0x03, 0x00, 0x00, - 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, - 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, - 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, - 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, - 0x00, 0x80, 0x70, 0x30, 0x00, 0x00, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, - 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, - 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, - 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, - 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00, - 0x72, 0x49, 0x49, 0x49, 0x46, 0x00, - 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00, - 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00, - 0x27, 0x45, 0x45, 0x45, 0x39, 0x00, - 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00, - 0x41, 0x21, 0x11, 0x09, 0x07, 0x00, - 0x36, 0x49, 0x49, 0x49, 0x36, 0x00, - 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00, - 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x40, 0x34, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x14, 0x22, 0x41, 0x00, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, - 0x00, 0x41, 0x22, 0x14, 0x08, 0x00, - 0x02, 0x01, 0x59, 0x09, 0x06, 0x00, - 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00, - 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00, - 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00, - 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00, - 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00, - 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00, - 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00, - 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00, - 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, - 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00, - 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00, - 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00, - 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, - 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00, - 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, - 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00, - 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00, - 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00, - 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00, - 0x26, 0x49, 0x49, 0x49, 0x32, 0x00, - 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00, - 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00, - 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, - 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00, - 0x63, 0x14, 0x08, 0x14, 0x63, 0x00, - 0x03, 0x04, 0x78, 0x04, 0x03, 0x00, - 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, - 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00, - 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, - 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00, - 0x04, 0x02, 0x01, 0x02, 0x04, 0x00, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, - 0x00, 0x03, 0x07, 0x08, 0x00, 0x00, - 0x20, 0x54, 0x54, 0x78, 0x40, 0x00, - 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00, - 0x38, 0x44, 0x44, 0x44, 0x20, 0x00, - 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00, - 0x38, 0x54, 0x54, 0x54, 0x18, 0x00, - 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00, - 0x18, 0xA4, 0xA4, 0x9C, 0x78, 0x00, - 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00, - 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00, - 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00, - 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00, - 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00, - 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00, - 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00, - 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, - 0xFC, 0x18, 0x24, 0x24, 0x18, 0x00, - 0x18, 0x24, 0x24, 0x18, 0xFC, 0x00, - 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00, - 0x48, 0x54, 0x54, 0x54, 0x24, 0x00, - 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00, - 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00, - 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00, - 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00, - 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, - 0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00, - 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, - 0x00, 0x08, 0x36, 0x41, 0x00, 0x00, - 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, - 0x00, 0x41, 0x36, 0x08, 0x00, 0x00, - 0x02, 0x01, 0x02, 0x04, 0x02, 0x00, - 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x40, 0x40, 0x40, 0xF0, 0xF8, 0xF8, - 0xFF, 0x38, 0xFF, 0xF8, 0xF8, 0x3F, - 0xF8, 0xF8, 0xFF, 0x38, 0xFF, 0xF8, - 0xF8, 0xF0, 0x40, 0x40, 0x40, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, - 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00, - 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, - 0x80, 0xC0, 0xC0, 0x00, 0xC0, 0xC0, - 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, - 0xC0, 0xC0, 0xC0, 0x00, 0xC0, 0xC0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC, - 0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00, - 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E, - 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00, - 0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B, - 0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00, - 0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE, - 0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00, - 0x00, 0x00, 0x00, 0x04, 0xFA, 0xA1, - 0xFA, 0x04, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x49, 0x49, 0x49, 0xFF, 0xFF, 0xFF, - 0xFF, 0xE0, 0xDF, 0xBF, 0xBF, 0x00, - 0xBF, 0xBF, 0xDF, 0xE0, 0xFF, 0xFF, - 0xFF, 0xFF, 0x49, 0x49, 0x49, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, - 0x60, 0x60, 0xE0, 0xBF, 0x1F, 0x00, - 0x7F, 0x7F, 0x07, 0x1E, 0x38, 0x1E, - 0x07, 0x7F, 0x7F, 0x00, 0x7F, 0x7F, - 0x0E, 0x1F, 0x3B, 0x71, 0x60, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, - 0x0C, 0x0C, 0x0C, 0x00, 0x7E, 0x7E, - 0x00, 0x7F, 0x7E, 0x03, 0x03, 0x00, - 0x7F, 0x7E, 0x03, 0x03, 0x7E, 0x7E, - 0x03, 0x03, 0x7F, 0x7E, 0x00, 0x0F, - 0x3E, 0x70, 0x3C, 0x06, 0x3C, 0x70, - 0x3E, 0x0F, 0x00, 0x32, 0x7B, 0x49, - 0x49, 0x3F, 0x7E, 0x00, 0x7F, 0x7E, - 0x03, 0x03, 0x00, 0x1E, 0x3F, 0x69, - 0x69, 0x6F, 0x26, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F, - 0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00, - 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F, - 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00, - 0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20, - 0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00, - 0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F, - 0x0F, 0x7F, 0x0F, 0x00, 0x03, 0x00, - 0x00, 0x00, 0x00, 0xFC, 0x87, 0x95, - 0xB5, 0x87, 0xFC, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x07, 0x0F, 0x0F, - 0x7F, 0x0F, 0x7F, 0x0F, 0x0F, 0x7E, - 0x0F, 0x0F, 0x7F, 0x0F, 0x7F, 0x0F, - 0x0F, 0x07, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x74, 0x42, - 0x74, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x10, 0x18, 0x0C, 0x06, - 0x0C, 0x18, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x04, 0x04, 0x08, 0x10, - 0x24, 0x24, 0x24, 0x24, 0x00, 0x00, - 0x00, 0x00, 0xE7, 0xA5, 0xFF, 0x24, - 0x24, 0xFF, 0xA5, 0xE7, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; diff --git a/users/cjuniet/readme.md b/users/cjuniet/readme.md deleted file mode 100644 index 16dff44679..0000000000 --- a/users/cjuniet/readme.md +++ /dev/null @@ -1,14 +0,0 @@ -Copyright 2020 Christophe Juniet - -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 . diff --git a/users/cjuniet/rules.mk b/users/cjuniet/rules.mk deleted file mode 100644 index 0f0859ba1f..0000000000 --- a/users/cjuniet/rules.mk +++ /dev/null @@ -1 +0,0 @@ -SRC += cjuniet.c diff --git a/users/csc027/csc027.c b/users/csc027/csc027.c deleted file mode 100644 index 60f17a7e1d..0000000000 --- a/users/csc027/csc027.c +++ /dev/null @@ -1,70 +0,0 @@ -/* -Copyright 2020 Constantine Chen @csc027 - -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 . -*/ - -#include "csc027.h" - -// Declare the strings in PROGMEM using the convenience macro -CUSTOM_MACROS(CUSTOM_DEF, CUSTOM_MACRO_STRING, SEMI_DELIM); - -static const char* const custom_macros[] PROGMEM = { - // Declare the pointer to the strings in PROGMEM - CUSTOM_MACROS(CUSTOM_VAR, DROP, COMMA_DELIM) -}; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch(keycode) { - case LOWER: - if(record->event.pressed) { - layer_on(_LW); - } else { - layer_off(_LW); - } - update_tri_layer(_LW, _RS, _MS); - return false; - case RAISE: - if(record->event.pressed) { - layer_on(_RS); - } else { - layer_off(_RS); - } - update_tri_layer(_LW, _RS, _MS); - return false; - case (MC_first + 1)...(MC_last - 1): - if(record->event.pressed) { - send_string_P( -#if defined(__AVR__) - // The accessor here first reads from the pointer array that is located - // in PROGMEM. The pointer is taken and passed to the send_string_P - // function, which is aware of the difference between RAM and PROGMEM - // pointers. - (char*)pgm_read_word(&custom_macros[keycode - MC_first - 1]) -#else - // For non-AVR MCUs, the PROGMEM macro is defined as nothing. So, the strings are - // declared in RAM instead of flash. The send_string_P function, when compiled for - // non-AVR targets, uses a different definition of pgm_read_byte internally. This - // definition uses RAM pointers instead. This is why the raw pointer is passed for - // non-AVR MCUs. - custom_macros[keycode - MC_first - 1] -#endif - ); - return true; - } - return false; - default: - return true; - } -} diff --git a/users/csc027/csc027.h b/users/csc027/csc027.h deleted file mode 100644 index e13f12861f..0000000000 --- a/users/csc027/csc027.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -Copyright 2020 Constantine Chen @csc027 - -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 . -*/ - -#pragma once - -#include "quantum.h" -#include "defines.h" - -enum custom_keycodes { - // Layer Keycodes - LOWER = SAFE_RANGE, - RAISE, - - - MC_first, - - // Macro Keycodes - CUSTOM_MACROS(CUSTOM_ENUM, DROP, COMMA_DELIM), - - MC_last -}; - -enum custom_layers { - _QW = 0, // Qwerty - _RS, // Raise - _LW, // Lower - _MS, // Mouse - _WT, // Windows Terminal - _CN, // Convenience - _GG, // General Gaming - _CS // Counter-Strike: Global Offensive -}; diff --git a/users/csc027/custom_audio.c b/users/csc027/custom_audio.c deleted file mode 100644 index 7746a4d1b9..0000000000 --- a/users/csc027/custom_audio.c +++ /dev/null @@ -1,34 +0,0 @@ -/* -Copyright 2020 Constantine Chen @csc027 - -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 . -*/ - -#include "csc027.h" -#include "custom_audio.h" - -#if defined(AUDIO_ENABLE) - -float tone_on[][2] = SONG(E__NOTE(_G6)); -float tone_off[][2] = SONG(E__NOTE(_D5)); - -void on_usb_led_off(void) { - PLAY_SONG(tone_off); -} - -void on_usb_led_on(void) { - PLAY_SONG(tone_on); -} - -#endif diff --git a/users/csc027/custom_audio.h b/users/csc027/custom_audio.h deleted file mode 100644 index f51bfcf971..0000000000 --- a/users/csc027/custom_audio.h +++ /dev/null @@ -1,25 +0,0 @@ -/* -Copyright 2020 Constantine Chen @csc027 - -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 . -*/ - -#pragma once - -#if defined(AUDIO_ENABLE) - -void on_usb_led_off(void); -void on_usb_led_on(void); - -#endif diff --git a/users/csc027/custom_rgb.c b/users/csc027/custom_rgb.c deleted file mode 100644 index 657d40d7af..0000000000 --- a/users/csc027/custom_rgb.c +++ /dev/null @@ -1,42 +0,0 @@ -/* -Copyright 2020 Constantine Chen @csc027 - -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 . -*/ - -#include "csc027.h" -#include "custom_rgb.h" - -#if defined(RGBLIGHT_ENABLE) - -void keyboard_post_init_user(void) { - rgblight_enable_noeeprom(); - rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); - uint16_t user_hue = rgblight_get_hue(); - for (uint16_t i = 0; i < 256; ++i) { - rgblight_sethsv_noeeprom((i + user_hue) % 256, 255, 255); - wait_ms(5); - } - rgblight_sethsv_noeeprom(HSV_BLACK); -} - -void on_usb_led_off(void) { - rgblight_sethsv_noeeprom(HS_GRAY, rgblight_get_val() - 85); -} - -void on_usb_led_on(void) { - rgblight_sethsv_noeeprom(HS_GRAY, rgblight_get_val() + 85); -} - -#endif diff --git a/users/csc027/custom_rgb.h b/users/csc027/custom_rgb.h deleted file mode 100644 index de63fc818c..0000000000 --- a/users/csc027/custom_rgb.h +++ /dev/null @@ -1,26 +0,0 @@ -/* -Copyright 2020 Constantine Chen @csc027 - -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 . -*/ - -#pragma once - -#if defined(RGBLIGHT_ENABLE) - -void keyboard_post_init_user(void); -void on_usb_led_off(void); -void on_usb_led_on(void); - -#endif diff --git a/users/csc027/defines.h b/users/csc027/defines.h deleted file mode 100644 index ac05941582..0000000000 --- a/users/csc027/defines.h +++ /dev/null @@ -1,345 +0,0 @@ -/* -Copyright 2020 Constantine Chen @csc027 - -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 . -*/ - -#pragma once -#include "csc027.h" - -#define MC_RSFE RSFT_T(KC_ENT) // Right Shift on hold, Enter on tap -#define MC_LSEC LSFT_T(KC_ESC) // Left Shift on hold, Escape on tap - -#define ________________ KC_TRNS - -/* QWERTY Layer - * - * The basic layer of this keymap is a QWERTY layer. - * - * - Modifier keys more closely resemble a standard keyboard's layout. - * - There is a "Nxt L" function that cycles through the QWERTY and - * game layers. This has been implemented by hard coding the jump to the - * next layer in each of the layers using the TO() macro. Currently, the - * "Nxt L" function skips over the momentary layers (i.e., Mouse, Lower, - * Raise, Windows Terminal, and Convenience layers). - * - There is a "Rst L" function that resets the current layer to the - * QWERTY layer. - * - The "Wt" momentary function goes to the macro layer which has Windows - * Terminal shortcuts. - * - The Right Shift key also doubles as an Enter key if it is tapped rather - * than held. - * - * ,-----------------------------------. ,-----------------------------------. - * | Tab | Q | W | E | R | T | | Y | U | I | O | P |BkSpc| - * |-----------------------------------| |-----------------------------------| - * | Esc | A | S | D | F | G | | H | J | K | L | ; | ' | - * |-----------------------------------| |-----------------------------------| - * |Shift| Z | X | C | V | B | | N | M | , | . | / |Sf/En| - * |-----------------------------------| |-----------------------------------| - * |Cntrl|Super| Alt |Convc|Lower|Space| |Space|Raise| \ | Wt |Nxt L|Rst L| - * `-----------------------------------' `-----------------------------------' - */ - -#define _____________________QWERTY_L1_____________________ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T -#define _____________________QWERTY_L2_____________________ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G -#define _____________________QWERTY_L3_____________________ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B -#define _____________________QWERTY_L4_____________________ KC_LCTL, KC_LGUI, KC_LALT, MO(_CN), LOWER, KC_SPC - -#define _____________________QWERTY_R1_____________________ KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC -#define _____________________QWERTY_R2_____________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT -#define _____________________QWERTY_R3_____________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MC_RSFE -#define _____________________QWERTY_R4_____________________ KC_SPC, RAISE, KC_BSLS, MO(_WT), TO(_GG), XXXXXXX - -/* Raise Layer - * - * The Raise layer accommodates the Home, End, Page Up, and Page Down keys - * in what would be the Vim arrow keys positions. This is done as opposed - * to using C-D, C-U, 0, $, and ^, because it would require a separate layer. - * - * - The top row has the shifted versions of the number row, rather than the - * numbers themselves. This is a change to have a mnemonic where shifted - * elements are on the Raise layer. This also makes it easy to use some of - * Vim style movement controls (e.g. $, %), but makes it harder for others - * (e.g. ^, (, )). Consider swapping the number row with the shifted number - * row if you do not care about the mnemonic. - * - The Left Brace, Right Brace, Underscore, and Plus keys have been moved - * from the right side to the left side. This will take some getting used - * to, as these keys are normally on the right side of the keyboard. An - * alternative would be to keep the keys on the right hand side just under - * the Parentheses. This would prevent the use of Vim arrow keys however. - * - The F keys have been laid across the bottom in the Raise layer, rather - * than the Lower layer to allow easy access to the Alt-F4 chord for - * Windows. When the F keys were put in the Lower layer, it made it hard - * to use this chord, as the Lower key, the Alt key, and the F4 key were - * all right next to each other. - * - A Delete key has been added in this layer to allow easy access to the - * Control-Alt-Delete login chord for Windows. - * - * ,-----------------------------------. ,-----------------------------------. - * | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | Del | - * |-----------------------------------| |-----------------------------------| - * | | _ | + | { | } | Caps| | Home| PgDn| PgUp| End | | | - * |-----------------------------------| |-----------------------------------| - * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | | - * |-----------------------------------| |-----------------------------------| - * | | | | | | | | | | | | | | - * `-----------------------------------' `-----------------------------------' - */ - -#define ______________________RAISE_L1_____________________ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC -#define ______________________RAISE_L2_____________________ _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_CAPS -#define ______________________RAISE_L3_____________________ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5 -#define ______________________RAISE_L4_____________________ _______, _______, _______, _______, _______, _______ - -#define ______________________RAISE_R1_____________________ KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL -#define ______________________RAISE_R2_____________________ KC_HOME, KC_PGDN, KC_PGUP, KC_END, XXXXXXX, XXXXXXX -#define ______________________RAISE_R3_____________________ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______ -#define ______________________RAISE_R4_____________________ _______, _______, _______, _______, XXXXXXX, XXXXXXX - -/* Lower Layer - * - * The lower layout scheme accommodates the Vim style arrow keys. - * - * - The arrow keys are in the normal Vim positions. - * - The Left Square Bracket, Right Square Bracket, Minus, and Equal keys - * have been moved from the right side to the left side. This will take - * some getting used to, as it is on the left rather than the right. - * - A Delete key has been added in this layer to allow easy access to the - * Control-Alt-Delete login chord for Windows. - * - The remaining F keys are in this layer. - * - * ,-----------------------------------. ,-----------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del | - * |-----------------------------------| |-----------------------------------| - * | | - | = | [ | ] | | | Left| Down| Up |Right| | | - * |-----------------------------------| |-----------------------------------| - * | | F11 | F12 | | | | | | | | | | | - * |-----------------------------------| |-----------------------------------| - * | | | | | | | | | | | | | | - * `-----------------------------------' `-----------------------------------' - */ - -#define ______________________LOWER_L1_____________________ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5 -#define ______________________LOWER_L2_____________________ _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, XXXXXXX -#define ______________________LOWER_L3_____________________ _______, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX -#define ______________________LOWER_L4_____________________ _______, _______, _______, _______, _______, _______ - -#define ______________________LOWER_R1_____________________ KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL -#define ______________________LOWER_R2_____________________ KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, XXXXXXX -#define ______________________LOWER_R3_____________________ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______ -#define ______________________LOWER_R4_____________________ _______, _______, _______, _______, XXXXXXX, XXXXXXX - -/* Mouse Layer - * - * The mouse layer adds keys to use the keyboard like a mouse. - * - * ,-----------------------------------. ,-----------------------------------. - * | | | | | | | | | | | | | | - * |-----------------------------------| |-----------------------------------| - * | | | |Ms-Lc|Ms-Rc| | | Ms-L| Ms-D| Ms-U| Ms-R| | | - * |-----------------------------------| |-----------------------------------| - * | | | | | | | | | | | | | | - * |-----------------------------------| |-----------------------------------| - * | | | | | | | | | | | | | | - * `-----------------------------------' `-----------------------------------' - */ - -#define ______________________MOUSE_L1_____________________ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX -#define ______________________MOUSE_L2_____________________ _______, XXXXXXX, XXXXXXX, KC_BTN1, KC_BTN2, XXXXXXX -#define ______________________MOUSE_L3_____________________ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX -#define ______________________MOUSE_L4_____________________ _______, _______, _______, _______, _______, _______ - -#define ______________________MOUSE_R1_____________________ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX -#define ______________________MOUSE_R2_____________________ KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, XXXXXXX, XXXXXXX -#define ______________________MOUSE_R3_____________________ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______ -#define ______________________MOUSE_R4_____________________ _______, _______, _______, _______, XXXXXXX, XXXXXXX - -/* Convenience Layer - * - * The Convenience layer adds miscellaneous chords to the keyboard. - * - * - The Number Lock key is physically in the same spot as the Caps Lock key - * in the raise layer. - * - There is also a Backspace Key for convenience. - * - There is a convenience macro to type the Control-Alt-Delete login chord for Windows. - * - There is a convenience macro to switch context from the Remote Desktop to the local - * machine in Windows. - * - There are convenience macros to switch between virtual desktops in Windows. - * - There are convenience macros to create and delete virtual desktops in Windows. - * - * ,-----------------------------------. ,-----------------------------------. - * | | |Insrt|ScrLk|PrtSc| | | | | | | |BkSpc| - * |-----------------------------------| |-----------------------------------| - * | | | App | LCAD|MRDCC|NmLck| |MVTDL|MVTDC|MVTDN|MVTDR| | | - * |-----------------------------------| |-----------------------------------| - * | | |MStop|MPrev|MPlay|MNext| |MMute|MVolD|MVolD| | | | - * |-----------------------------------| |-----------------------------------| - * | | | | | | | | | | | | | | - * `-----------------------------------' `-----------------------------------' - */ - -#define ___________________CONVENIENCE_L1__________________ XXXXXXX, XXXXXXX, KC_INS, KC_SCRL, KC_PSCR, XXXXXXX -#define ___________________CONVENIENCE_L2__________________ _______, XXXXXXX, KC_APP, MC_lcad, MC_rdcc, KC_NUM -#define ___________________CONVENIENCE_L3__________________ _______, XXXXXXX, KC_MSTP, KC_MPRV, KC_MPLY, KC_MNXT -#define ___________________CONVENIENCE_L4__________________ _______, _______, _______, _______, _______, _______ - -#define ___________________CONVENIENCE_R1__________________ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_BSPC -#define ___________________CONVENIENCE_R2__________________ MC_vtdl, MC_vtdc, MC_vtdn, MC_vtdr, XXXXXXX, XXXXXXX -#define ___________________CONVENIENCE_R3__________________ KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, XXXXXXX, _______ -#define ___________________CONVENIENCE_R4__________________ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX - -/* Windows Terminal Layer - * - * Contains shortcuts for pane and tab usage for Windows Terminal - * - * ,-----------------------------------. ,-----------------------------------. - * | |Tab 1|Tab 2|Tab 3|Tab 4|Tab 5| |Tab 6|Tab 7|Tab 8|Tab 9|TrCnP|BkSpc| - * |-----------------------------------| |-----------------------------------| - * | | |Split|Close| | | |FcsLf|FcsDn|FcsUp|FcsRt| | | - * |-----------------------------------| |-----------------------------------| - * | | | | |VSplt| | | | | | | | | - * |-----------------------------------| |-----------------------------------| - * | | | | | | | | | | | | | | - * `-----------------------------------' `-----------------------------------' - */ - -#define ________________WINDOWS_TERMINAL_L1________________ XXXXXXX, MC_trt1, MC_trt2, MC_trt3, MC_trt4, MC_trt5 -#define ________________WINDOWS_TERMINAL_L2________________ _______, XXXXXXX, MC_trps, MC_trpc, XXXXXXX, MC_trtn -#define ________________WINDOWS_TERMINAL_L3________________ _______, XXXXXXX, XXXXXXX, XXXXXXX, MC_trpv, XXXXXXX -#define ________________WINDOWS_TERMINAL_L4________________ _______, _______, _______, _______, _______, _______ - -#define ________________WINDOWS_TERMINAL_R1________________ MC_trt6, MC_trt7, MC_trt8, MC_trt9, MC_trcp, KC_BSPC -#define ________________WINDOWS_TERMINAL_R2________________ MC_trpl, MC_trpd, MC_trpu, MC_trpr, XXXXXXX, XXXXXXX -#define ________________WINDOWS_TERMINAL_R3________________ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______ -#define ________________WINDOWS_TERMINAL_R4________________ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX - -/* General Game Layer - * - * ,-----------------------------------. ,-----------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 |BkSpc| - * |-----------------------------------| |-----------------------------------| - * | Tab | Q | W | E | R | T | | Y | U | I | O | P | \ | - * |-----------------------------------| |-----------------------------------| - * |Sf/Ec| A | S | D | F | G | | H | J | K | L | ; |Enter| - * |-----------------------------------| |-----------------------------------| - * | Ctl | Z | Alt | X | C |Space| |Space| M | B | . |Nxt L|Rst L| - * `-----------------------------------' `-----------------------------------' - */ - -#define ________________General_Game_4x12_L1_______________ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5 -#define ________________General_Game_4x12_L2_______________ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T -#define ________________General_Game_4x12_L3_______________ MC_LSEC, KC_A, KC_S, KC_D, KC_F, KC_G -#define ________________General_Game_4x12_L4_______________ KC_LCTL, KC_Z, KC_LALT, KC_X, KC_C, KC_SPC - -#define ________________General_Game_4x12_R1_______________ KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC -#define ________________General_Game_4x12_R2_______________ KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS -#define ________________General_Game_4x12_R3_______________ KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT -#define ________________General_Game_4x12_R4_______________ KC_SPC, KC_M, KC_B, KC_DOT, TO(_CS), TO(_QW) - -/* CS:GO Layer - * - * ,-----------------------------------. ,-----------------------------------. - * | | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 |BkSpc| - * |-----------------------------------| |-----------------------------------| - * | Tab | Q | W | E | R | T | | Y | 4 | 5 | 6 | |NmLck| - * |-----------------------------------| |-----------------------------------| - * |Shift| A | S | D | F | G | | H | 1 | 2 | 3 |Enter| Esc | - * |-----------------------------------| |-----------------------------------| - * | Ctl | Z | Alt | X | B |Space| |Space| 0 | 0 | . |Nxt L|Rst L| - * `-----------------------------------' `-----------------------------------' - */ - -#define ___________________CSGO_4x12_L1____________________ XXXXXXX, KC_1, KC_2, KC_3, KC_4, KC_5 -#define ___________________CSGO_4x12_L2____________________ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T -#define ___________________CSGO_4x12_L3____________________ KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G -#define ___________________CSGO_4x12_L4____________________ KC_LCTL, KC_Z, KC_LALT, KC_X, KC_B, KC_SPC - -#define ___________________CSGO_4x12_R1____________________ KC_6, KC_P7, KC_P8, KC_P9, KC_0, KC_BSPC -#define ___________________CSGO_4x12_R2____________________ KC_Y, KC_P4, KC_P5, KC_P6, XXXXXXX, KC_NUM -#define ___________________CSGO_4x12_R3____________________ KC_H, KC_P1, KC_P2, KC_P3, KC_PENT, KC_ESC -#define ___________________CSGO_4x12_R4____________________ KC_SPC, KC_P0, KC_P0, KC_PDOT, TO(_QW), TO(_QW) - -/* Convenience macros - * - * These are accelerator macros for simplifying declaration of PROGMEM strings - */ - -// Declare variable name -#define CUSTOM_VAR(VAR) mc_##VAR - -// Declare PROGMEM string using the variable name -#define CUSTOM_DEF(VAR) const char CUSTOM_VAR(VAR)[] PROGMEM = - -// Declare enum name -#define CUSTOM_ENUM(VAR) MC_##VAR - -#define CUSTOM_MACRO_STRING(X) X - -#define COMMA_DELIM(...) , -#define SEMI_DELIM(...) ; - -#define DROP(...) - -/* Keycode synchronization macros - * - * These macros help synchronize the keycodes between the string declaration, string pointer declaration, and enum order. - */ - -#define CUSTOM_MACROS(CUSTOM_NAME, CUSTOM_STRING, CUSTOM_DELIM) \ - CUSTOM_NAME(rdcc) CUSTOM_STRING(SS_LCTL(SS_LALT(SS_TAP(X_HOME)))) CUSTOM_DELIM() \ - CUSTOM_NAME(lcad) CUSTOM_STRING(SS_LCTL(SS_LALT(SS_TAP(X_DELETE)))) CUSTOM_DELIM() \ - CUSTOM_NAME(trcp) CUSTOM_STRING(SS_LCTL(SS_LSFT("p"))) CUSTOM_DELIM() \ - CUSTOM_NAME(trps) CUSTOM_STRING(SS_LALT(SS_LSFT("-"))) CUSTOM_DELIM() \ - CUSTOM_NAME(trpv) CUSTOM_STRING(SS_LALT(SS_LSFT("+"))) CUSTOM_DELIM() \ - CUSTOM_NAME(trpc) CUSTOM_STRING(SS_LCTL(SS_LSFT("w"))) CUSTOM_DELIM() \ - CUSTOM_NAME(trpl) CUSTOM_STRING(SS_LALT(SS_TAP(X_LEFT))) CUSTOM_DELIM() \ - CUSTOM_NAME(trpd) CUSTOM_STRING(SS_LALT(SS_TAP(X_DOWN))) CUSTOM_DELIM() \ - CUSTOM_NAME(trpu) CUSTOM_STRING(SS_LALT(SS_TAP(X_UP))) CUSTOM_DELIM() \ - CUSTOM_NAME(trpr) CUSTOM_STRING(SS_LALT(SS_TAP(X_RIGHT))) CUSTOM_DELIM() \ - CUSTOM_NAME(trtn) CUSTOM_STRING(SS_LCTL(SS_LSFT("t"))) CUSTOM_DELIM() \ - CUSTOM_NAME(trt1) CUSTOM_STRING(SS_LCTL(SS_LALT("1"))) CUSTOM_DELIM() \ - CUSTOM_NAME(trt2) CUSTOM_STRING(SS_LCTL(SS_LALT("2"))) CUSTOM_DELIM() \ - CUSTOM_NAME(trt3) CUSTOM_STRING(SS_LCTL(SS_LALT("3"))) CUSTOM_DELIM() \ - CUSTOM_NAME(trt4) CUSTOM_STRING(SS_LCTL(SS_LALT("4"))) CUSTOM_DELIM() \ - CUSTOM_NAME(trt5) CUSTOM_STRING(SS_LCTL(SS_LALT("5"))) CUSTOM_DELIM() \ - CUSTOM_NAME(trt6) CUSTOM_STRING(SS_LCTL(SS_LALT("6"))) CUSTOM_DELIM() \ - CUSTOM_NAME(trt7) CUSTOM_STRING(SS_LCTL(SS_LALT("7"))) CUSTOM_DELIM() \ - CUSTOM_NAME(trt8) CUSTOM_STRING(SS_LCTL(SS_LALT("8"))) CUSTOM_DELIM() \ - CUSTOM_NAME(trt9) CUSTOM_STRING(SS_LCTL(SS_LALT("9"))) CUSTOM_DELIM() \ - CUSTOM_NAME(vtdl) CUSTOM_STRING(SS_LCTL(SS_LGUI(SS_TAP(X_LEFT)))) CUSTOM_DELIM() \ - CUSTOM_NAME(vtdc) CUSTOM_STRING(SS_LCTL(SS_LGUI(SS_TAP(X_F4)))) CUSTOM_DELIM() \ - CUSTOM_NAME(vtdn) CUSTOM_STRING(SS_LCTL(SS_LGUI("d"))) CUSTOM_DELIM() \ - CUSTOM_NAME(vtdr) CUSTOM_STRING(SS_LCTL(SS_LGUI(SS_TAP(X_RIGHT)))) - -// Additional color definitions for simplicity -#define HS_AZURE 132, 102 -#define HS_BLACK 0, 0 -#define HS_BLUE 170, 255 -#define HS_CHARTREUSE 64, 255 -#define HS_CORAL 11, 176 -#define HS_CYAN 128, 255 -#define HS_GOLD 36, 255 -#define HS_GOLDENROD 30, 218 -#define HS_GRAY 0, 0 -#define HS_GREEN 85, 255 -#define HS_MAGENTA 213, 255 -#define HS_ORANGE 28, 255 -#define HS_PINK 234, 128 -#define HS_PURPLE 191, 255 -#define HS_RED 0, 255 -#define HS_SPRINGGREEN 106, 255 -#define HS_TEAL 128, 255 -#define HS_TURQUOISE 123, 90 -#define HS_WHITE 0, 0 -#define HS_YELLOW 43, 255 diff --git a/users/csc027/rules.mk b/users/csc027/rules.mk deleted file mode 100644 index 7e5d44e1c8..0000000000 --- a/users/csc027/rules.mk +++ /dev/null @@ -1,11 +0,0 @@ -SRC += csc027.c - -ifeq ($(strip $(RGBLIGHT_ENABLE)), yes) - SRC += custom_rgb.c - SRC += usb_led.c -endif - -ifeq ($(strip $(AUDIO_ENABLE)), yes) - SRC += custom_audio.c - SRC += usb_led.c -endif diff --git a/users/csc027/usb_led.c b/users/csc027/usb_led.c deleted file mode 100644 index 78fbdcdf54..0000000000 --- a/users/csc027/usb_led.c +++ /dev/null @@ -1,49 +0,0 @@ -/* -Copyright 2020 Constantine Chen @csc027 - -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 . -*/ - -#include "csc027.h" -#include "usb_led.h" -#include "led.h" - -#if defined(RGBLIGHT_ENABLE) -# include "custom_rgb.h" -#elif defined(AUDIO_ENABLE) -# include "custom_audio.h" -#endif - -#if defined(AUDIO_ENABLE) || defined(RGBLIGHT_ENABLE) - -bool led_update_user(led_t new_led) { - static led_t old_led = { - .num_lock = false, - .caps_lock = false, - .scroll_lock = false - }; - - if(old_led.caps_lock != new_led.caps_lock) { - new_led.caps_lock ? on_usb_led_on() : on_usb_led_off(); - } else if(old_led.num_lock != new_led.num_lock) { - new_led.num_lock ? on_usb_led_on() : on_usb_led_off(); - } else if(old_led.scroll_lock != new_led.scroll_lock) { - new_led.scroll_lock ? on_usb_led_on() : on_usb_led_off(); - } - old_led = new_led; - - return true; -} - -#endif diff --git a/users/csc027/usb_led.h b/users/csc027/usb_led.h deleted file mode 100644 index 6248b31207..0000000000 --- a/users/csc027/usb_led.h +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright 2020 Constantine Chen @csc027 - -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 . -*/ - -#pragma once - -bool led_update_user(led_t usb_led); diff --git a/users/curry/.gitignore b/users/curry/.gitignore deleted file mode 100644 index c6df8c0139..0000000000 --- a/users/curry/.gitignore +++ /dev/null @@ -1 +0,0 @@ -secrets.c diff --git a/users/curry/LICENSE b/users/curry/LICENSE deleted file mode 100644 index 198ae45b2e..0000000000 --- a/users/curry/LICENSE +++ /dev/null @@ -1,14 +0,0 @@ -Copyright 2020 Akaash Suresh casa.akaash@gmail.com @CurryFurious - -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 . diff --git a/users/curry/README.md b/users/curry/README.md deleted file mode 100644 index 70d6262d73..0000000000 --- a/users/curry/README.md +++ /dev/null @@ -1,30 +0,0 @@ -# Information - -These is my userspace files, heavily influenced by @drashna's userspace structure. - -# Keyboards - -Main uses are for corne & lily58, supporting dfu bootloader (elite-c) - -## Split Common -Is compatible with split_common when the previous two keyboards update to them. - -If you want to use these keymaps with split common code, they are on my personal github fork: [CurryFurious/qmk_firmware](https://github.com/CurryFurious/qmk_firmware) - -Referenced PRs: #6260, #5998, #6001 - -## Keymaps -Keymap layout is similar between the two keyboards. Lily58 has a lot of open keys for custom keys as well. Keymap formatting is set up in the physical layout of the keyboard, so mapping keys should be easier. - -## Tap Dances - -Tap dances are enabled but none are defined, you can add them to [tapdances.c](tapdances.c). If not using tapdances, you can disable them in the keymaps. - -## RGB -RGB is implemented pretty much the same as @drashna. Only change is that I added the RGB code from the drashna's corne [keymap.c](../../keyboards/crkbd/keymaps/drashna/keymap.c), lines 313-383 into rgb_stuff.c. - -## OLED -Similarly to RGB, I moved all OLED code into [oled.c](oled.c) to better clear up the keymap.c file. I haven't experimented with the kyria's 128x64 pixel screen so it probably won't work as well with it yet. - -## Wrappers -Have implemented QWERTY, COLEMAK Mod DH, and DVORAK. Other macros are defined, some modified from drashna's. Drashna's [wrappers.h](../drashna/wrappers.h) has other layouts that you can copy in as you see fit, make sure to add them to the userspace_layers enum in [curry.h](curry.h) diff --git a/users/curry/config.h b/users/curry/config.h deleted file mode 100644 index 94e09350cd..0000000000 --- a/users/curry/config.h +++ /dev/null @@ -1,112 +0,0 @@ -#pragma once - -// Use custom magic number so that when switching branches, EEPROM always gets reset -#define EECONFIG_MAGIC_NUMBER (uint16_t)0x420 - -/* Set Polling rate to 1000Hz */ -#define USB_POLLING_INTERVAL_MS 1 - -#if defined(RGBLIGHT_ENABLE) -# undef RGBLIGHT_EFFECT_RAINBOW_MOOD -# undef RGBLIGHT_EFFECT_RAINBOW_SWIRL -# undef RGBLIGHT_EFFECT_CHRISTMAS -# undef RGBLIGHT_EFFECT_STATIC_GRADIENT -# undef RGBLIGHT_EFFECT_RGB_TEST -# undef RGBLIGHT_EFFECT_ALTERNATING -# undef RGBLIGHT_EFFECT_TWINKLE -# define RGBLIGHT_SLEEP -# define RGBLIGHT_EFFECT_BREATHING -# define RGBLIGHT_EFFECT_SNAKE -# define RGBLIGHT_EFFECT_KNIGHT -#endif // RGBLIGHT_ENABLE - -#if defined(RGB_MATRIX_ENABLE) -# define RGB_MATRIX_KEYPRESSES -# define RGB_MATRIX_FRAMEBUFFER_EFFECTS -# define RGB_DISABLE_WHEN_USB_SUSPENDED - -# undef ENABLE_RGB_MATRIX_ALPHAS_MODS -# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN -# undef ENABLE_RGB_MATRIX_BREATHING -# undef ENABLE_RGB_MATRIX_BAND_SAT -# undef ENABLE_RGB_MATRIX_BAND_VAL -# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT -# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL -# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT -# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL -# undef ENABLE_RGB_MATRIX_CYCLE_ALL -# undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT -# undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN -# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN -# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL -# undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON -# undef ENABLE_RGB_MATRIX_DUAL_BEACON -# undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL -# undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL -# undef ENABLE_RGB_MATRIX_RAINBOW_BEACON -# undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS -# undef ENABLE_RGB_MATRIX_RAINDROPS -# undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS -# define ENABLE_RGB_MATRIX_TYPING_HEATMAP -# undef ENABLE_RGB_MATRIX_DIGITAL_RAIN -# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE -# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE -# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -# undef ENABLE_RGB_MATRIX_SPLASH -# undef ENABLE_RGB_MATRIX_MULTISPLASH -# undef ENABLE_RGB_MATRIX_SOLID_SPLASH -# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH -#endif // RGB_MATRIX_ENABLE - -#if !defined(ONESHOT_TAP_TOGGLE) -# define ONESHOT_TAP_TOGGLE 2 -#endif // !ONESHOT_TAP_TOGGLE - -#if !defined(ONESHOT_TIMEOUT) -# define ONESHOT_TIMEOUT 3000 -#endif // !ONESHOT_TIMEOUT - -#undef PERMISSIVE_HOLD - -#define FORCE_NKRO - -#if !defined(TAPPING_TOGGLE) -# define TAPPING_TOGGLE 1 -#endif - -#if defined(TAPPING_TERM) -# undef TAPPING_TERM -#endif // TAPPING_TERM - -#if defined(KEYBOARD_ergodox_ez) -# define TAPPING_TERM 185 -#elif defined(KEYBOARD_crkbd) -# define TAPPING_TERM 200 -#else -# define TAPPING_TERM 175 -#endif - -#define TAP_CODE_DELAY 5 - -#define LEADER_TIMEOUT 250 -#define LEADER_PER_KEY_TIMING - -/* Disable unused and unneeded features to reduce on firmware size */ -#if defined(LOCKING_SUPPORT_ENABLE) -# undef LOCKING_SUPPORT_ENABLE -#endif - -#if defined(LOCKING_RESYNC_ENABLE) -# undef LOCKING_RESYNC_ENABLE -#endif - -#if defined(OLED_FONT_H) -# undef OLED_FONT_H -#endif - -#define OLED_FONT_H "users/curry/glcdfont.c" diff --git a/users/curry/curry.c b/users/curry/curry.c deleted file mode 100644 index aae7377a87..0000000000 --- a/users/curry/curry.c +++ /dev/null @@ -1,133 +0,0 @@ -#include "curry.h" - -userspace_config_t userspace_config; - -#define CURRY_UNICODE_MODE 1 - -void bootmagic_lite(void) { - matrix_scan(); -#if defined(DEBOUNCING_DELAY) && DEBOUNCING_DELAY > 0 - wait_ms(DEBOUNCING_DELAY * 2); -#elif defined(DEBOUNCE) && DEBOUNCE > 0 - wait_ms(DEBOUNCE * 2); -#else - wait_ms(30); -#endif - matrix_scan(); -#if defined(BOOTMAGIC_ENABLE) - if (matrix_get_row(BOOTMAGIC_LITE_ROW) & (1 << BOOTMAGIC_LITE_COLUMN)) { - bootloader_jump(); - } -#endif -} - -__attribute__((weak)) void keyboard_pre_init_keymap(void) {} - -void keyboard_pre_init_user(void) { - userspace_config.raw = eeconfig_read_user(); - keyboard_pre_init_keymap(); -} - -__attribute__((weak)) void matrix_init_keymap(void) {} - -// Call user matrix init, set default RGB colors and then -// call the keymap's init function -void matrix_init_user(void) { -#if (defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE)) - set_unicode_input_mode(CURRY_UNICODE_MODE); - get_unicode_input_mode(); -#endif // UNICODE_ENABLE - matrix_init_keymap(); -} - -__attribute__((weak)) void keyboard_post_init_keymap(void) {} - -void keyboard_post_init_user(void) { -#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE) - keyboard_post_init_rgb(); -#endif - keyboard_post_init_keymap(); -} - -__attribute__((weak)) void shutdown_keymap(void) {} - -void rgb_matrix_update_pwm_buffers(void); - -// On RESET, set all RGB to red, shutdown the keymap. -bool shutdown_user(bool jump_to_bootloader) { -#if defined(RGBLIGHT_ENABLE) - rgblight_enable_noeeprom(); - rgblight_mode_noeeprom(1); - rgblight_setrgb(RGB_RED); -#endif - -#if defined(RGB_MATRIX_ENABLE) - rgb_matrix_set_color_all(0xFF, 0x00, 0x00); - rgb_matrix_update_pwm_buffers(); -#endif - shutdown_keymap(); - return false; -} - -__attribute__((weak)) void suspend_power_down_keymap(void) {} - -void suspend_power_down_user(void) { suspend_power_down_keymap(); } - -__attribute__((weak)) void suspend_wakeup_init_keymap(void) {} - -void suspend_wakeup_init_user(void) { suspend_wakeup_init_keymap(); } - -__attribute__((weak)) void matrix_scan_keymap(void) {} - -// No global matrix scan code, so just run keymap's matrix -// scan function -__attribute__((weak)) void matrix_scan_user(void) { - static bool has_ran_yet; - if (!has_ran_yet) { - has_ran_yet = true; - startup_user(); - } - -#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE) - matrix_scan_rgb(); -#endif // RGBLIGHT_ENABLE - - matrix_scan_keymap(); -} - -__attribute__((weak)) layer_state_t layer_state_set_keymap(layer_state_t state) { return state; } - -// On Layer change, run keymap's layer change check -layer_state_t layer_state_set_user(layer_state_t state) { - state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST); -#if defined(RGBLIGHT_ENABLE) - state = layer_state_set_rgb(state); -#endif - return layer_state_set_keymap(state); -} - -__attribute__((weak)) layer_state_t default_layer_state_set_keymap(layer_state_t state) { return state; } - -// Runs state check and changes underglow color and animation -layer_state_t default_layer_state_set_user(layer_state_t state) { return default_layer_state_set_keymap(state); } - -__attribute__((weak)) void led_set_keymap(uint8_t usb_led) {} - -// Any custom LED code goes here. -void led_set_user(uint8_t usb_led) { led_set_keymap(usb_led); } - -__attribute__((weak)) void eeconfig_init_keymap(void) {} - -void eeconfig_init_user(void) { - userspace_config.raw = 0; - userspace_config.rgb_layer_change = true; - eeconfig_update_user(userspace_config.raw); -#if (defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE)) - set_unicode_input_mode(CURRY_UNICODE_MODE); - get_unicode_input_mode(); -#else - eeprom_update_byte(EECONFIG_UNICODEMODE, CURRY_UNICODE_MODE); -#endif - eeconfig_init_keymap(); - keyboard_init(); -} diff --git a/users/curry/curry.h b/users/curry/curry.h deleted file mode 100644 index 7a9e6c9eb6..0000000000 --- a/users/curry/curry.h +++ /dev/null @@ -1,67 +0,0 @@ -#pragma once - -#include QMK_KEYBOARD_H -#include "version.h" -#include "eeprom.h" -#include "wrappers.h" -#include "process_records.h" - -#if defined(TAP_DANCE_ENABLE) -# include "tap_dances.h" -#endif // TAP_DANCE_ENABLE - -#if defined(RGB_MATRIX_ENABLE) -# include "rgb_matrix_user.h" -#endif - -#if defined(RGBLIGHT_ENABLE) -# include "rgb_lighting_user.h" -#endif - -#if defined(KEYBOARD_lily58_rev1) & defined(PROTOCOL_LUFA) -# include "lufa.h" -# include "split_util.h" -#endif - -/* Define layer names */ -enum userspace_layers { -#if defined(ENABLE_QWERTY) - _QWERTY, -#endif -#if defined(ENABLE_COLEMAK) - _COLEMAK, -#endif -#if defined(ENABLE_DVORAK) - _DVORAK, -#endif -#if defined(ENABLE_WORKMAN) - _WORKMAN, -#endif - _MODS, - _LOWER, - _RAISE, - _ADJUST, -}; - -void matrix_init_keymap(void); -void shutdown_keymap(void); -void suspend_power_down_keymap(void); -void suspend_wakeup_init_keymap(void); -void matrix_scan_keymap(void); -layer_state_t layer_state_set_keymap(layer_state_t state); -layer_state_t default_layer_state_set_keymap(layer_state_t state); -void led_set_keymap(uint8_t usb_led); -void eeconfig_init_keymap(void); - -// clang-format off -typedef union { - uint32_t raw; - struct { - bool rgb_layer_change :1; - bool nuke_switch :1; - bool rgb_matrix_idle_anim :1; - }; -} userspace_config_t; -// clang-format on - -extern userspace_config_t userspace_config; diff --git a/users/curry/glcdfont.c b/users/curry/glcdfont.c deleted file mode 100644 index 10ce3b3457..0000000000 --- a/users/curry/glcdfont.c +++ /dev/null @@ -1,232 +0,0 @@ -#include "progmem.h" - -// Corne 8x6 font with QMK Firmware Logo -// Online editor: https://helixfonteditor.netlify.com/ - -// clang-format off -const unsigned char font[] PROGMEM = { -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00, -0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00, -0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00, -0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00, -0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00, -0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, -0x00, 0x18, 0x3C, 0x18, 0x00, 0x00, -0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, -0x00, 0x18, 0x24, 0x18, 0x00, 0x00, -0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00, -0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00, -0x26, 0x29, 0x79, 0x29, 0x26, 0x00, -0x40, 0x7F, 0x05, 0x05, 0x07, 0x00, -0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00, -0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00, -0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00, -0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00, -0x14, 0x22, 0x7F, 0x22, 0x14, 0x00, -0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00, -0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00, -0x00, 0x66, 0x89, 0x95, 0x6A, 0x00, -0x60, 0x60, 0x60, 0x60, 0x60, 0x00, -0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00, -0x08, 0x04, 0x7E, 0x04, 0x08, 0x00, -0x10, 0x20, 0x7E, 0x20, 0x10, 0x00, -0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00, -0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00, -0x1E, 0x10, 0x10, 0x10, 0x10, 0x00, -0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00, -0x30, 0x38, 0x3E, 0x38, 0x30, 0x00, -0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, -0x00, 0x07, 0x00, 0x07, 0x00, 0x00, -0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, -0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00, -0x23, 0x13, 0x08, 0x64, 0x62, 0x00, -0x36, 0x49, 0x56, 0x20, 0x50, 0x00, -0x00, 0x08, 0x07, 0x03, 0x00, 0x00, -0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, -0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, -0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, -0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, -0x00, 0x80, 0x70, 0x30, 0x00, 0x00, -0x08, 0x08, 0x08, 0x08, 0x08, 0x00, -0x00, 0x00, 0x60, 0x60, 0x00, 0x00, -0x20, 0x10, 0x08, 0x04, 0x02, 0x00, -0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, -0x00, 0x42, 0x7F, 0x40, 0x00, 0x00, -0x72, 0x49, 0x49, 0x49, 0x46, 0x00, -0x21, 0x41, 0x49, 0x4D, 0x33, 0x00, -0x18, 0x14, 0x12, 0x7F, 0x10, 0x00, -0x27, 0x45, 0x45, 0x45, 0x39, 0x00, -0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00, -0x41, 0x21, 0x11, 0x09, 0x07, 0x00, -0x36, 0x49, 0x49, 0x49, 0x36, 0x00, -0x46, 0x49, 0x49, 0x29, 0x1E, 0x00, -0x00, 0x00, 0x14, 0x00, 0x00, 0x00, -0x00, 0x40, 0x34, 0x00, 0x00, 0x00, -0x00, 0x08, 0x14, 0x22, 0x41, 0x00, -0x14, 0x14, 0x14, 0x14, 0x14, 0x00, -0x00, 0x41, 0x22, 0x14, 0x08, 0x00, -0x02, 0x01, 0x59, 0x09, 0x06, 0x00, -0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00, -0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00, -0x7F, 0x49, 0x49, 0x49, 0x36, 0x00, -0x3E, 0x41, 0x41, 0x41, 0x22, 0x00, -0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00, -0x7F, 0x49, 0x49, 0x49, 0x41, 0x00, -0x7F, 0x09, 0x09, 0x09, 0x01, 0x00, -0x3E, 0x41, 0x41, 0x51, 0x73, 0x00, -0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, -0x00, 0x41, 0x7F, 0x41, 0x00, 0x00, -0x20, 0x40, 0x41, 0x3F, 0x01, 0x00, -0x7F, 0x08, 0x14, 0x22, 0x41, 0x00, -0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, -0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00, -0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, -0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00, -0x7F, 0x09, 0x09, 0x09, 0x06, 0x00, -0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00, -0x7F, 0x09, 0x19, 0x29, 0x46, 0x00, -0x26, 0x49, 0x49, 0x49, 0x32, 0x00, -0x03, 0x01, 0x7F, 0x01, 0x03, 0x00, -0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00, -0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, -0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00, -0x63, 0x14, 0x08, 0x14, 0x63, 0x00, -0x03, 0x04, 0x78, 0x04, 0x03, 0x00, -0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, -0x00, 0x7F, 0x41, 0x41, 0x41, 0x00, -0x02, 0x04, 0x08, 0x10, 0x20, 0x00, -0x00, 0x41, 0x41, 0x41, 0x7F, 0x00, -0x04, 0x02, 0x01, 0x02, 0x04, 0x00, -0x40, 0x40, 0x40, 0x40, 0x40, 0x00, -0x00, 0x03, 0x07, 0x08, 0x00, 0x00, -0x20, 0x54, 0x54, 0x78, 0x40, 0x00, -0x7F, 0x28, 0x44, 0x44, 0x38, 0x00, -0x38, 0x44, 0x44, 0x44, 0x28, 0x00, -0x38, 0x44, 0x44, 0x28, 0x7F, 0x00, -0x38, 0x54, 0x54, 0x54, 0x18, 0x00, -0x00, 0x08, 0x7E, 0x09, 0x02, 0x00, -0x18, 0x24, 0x24, 0x1C, 0x78, 0x00, -0x7F, 0x08, 0x04, 0x04, 0x78, 0x00, -0x00, 0x44, 0x7D, 0x40, 0x00, 0x00, -0x20, 0x40, 0x40, 0x3D, 0x00, 0x00, -0x7F, 0x10, 0x28, 0x44, 0x00, 0x00, -0x00, 0x41, 0x7F, 0x40, 0x00, 0x00, -0x7C, 0x04, 0x78, 0x04, 0x78, 0x00, -0x7C, 0x08, 0x04, 0x04, 0x78, 0x00, -0x38, 0x44, 0x44, 0x44, 0x38, 0x00, -0x7C, 0x18, 0x24, 0x24, 0x18, 0x00, -0x18, 0x24, 0x24, 0x18, 0x7C, 0x00, -0x7C, 0x08, 0x04, 0x04, 0x08, 0x00, -0x48, 0x54, 0x54, 0x54, 0x24, 0x00, -0x04, 0x04, 0x3F, 0x44, 0x24, 0x00, -0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00, -0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00, -0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00, -0x44, 0x28, 0x10, 0x28, 0x44, 0x00, -0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00, -0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, -0x00, 0x08, 0x36, 0x41, 0x00, 0x00, -0x00, 0x00, 0x77, 0x00, 0x00, 0x00, -0x00, 0x41, 0x36, 0x08, 0x00, 0x00, -0x02, 0x01, 0x02, 0x04, 0x02, 0x00, -0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, -0xF0, 0xF8, 0xF8, 0x18, 0x00, 0xC0, -0xF0, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, -0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, -0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, -0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, -0x80, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, -0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0x80, -0x00, 0x00, 0x00, 0xE0, 0xE0, 0xC0, -0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0x00, -0x00, 0xE0, 0xE0, 0xC0, 0xC0, 0xE0, -0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0x80, -0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, -0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, -0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC, -0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00, -0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E, -0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00, -0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B, -0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00, -0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE, -0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0xF8, 0xFC, 0xFE, -0xFF, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, -0xFF, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, -0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -0xFF, 0x1F, 0x07, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0xFF, 0xFF, 0xFF, 0x81, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x81, -0xC3, 0xC3, 0xC3, 0x00, 0x00, 0xFF, -0xFF, 0xFF, 0x81, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x81, 0xFF, 0xFF, -0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, -0x01, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0xFF, 0xFF, 0xFF, 0x01, 0x00, -0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, -0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, -0x9D, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, -0x1C, 0x9D, 0xDF, 0xDF, 0xDF, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F, -0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00, -0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F, -0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00, -0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20, -0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00, -0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F, -0x0F, 0x7F, 0x0F, 0x00, 0x03, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x03, 0x0F, 0x1F, -0x3F, 0x3F, 0x3F, 0x3F, 0x1F, 0x1F, -0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x3F, -0x3F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F, -0x7F, 0x7C, 0x78, 0x78, 0x38, 0x1C, -0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x03, 0x07, 0x07, -0x07, 0x07, 0x07, 0x07, 0x07, 0x07, -0x03, 0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x03, 0x07, 0x07, 0x07, 0x07, -0x07, 0x07, 0x07, 0x07, 0x03, 0x01, -0x00, 0x00, 0x00, 0x07, 0x07, 0x07, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x07, 0x07, 0x07, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x07, 0x07, -0x07, 0x00, 0x00, 0x00, 0x01, 0x03, -0x07, 0x07, 0x07, 0x07, 0x07, 0x07, -0x07, 0x07, 0x03, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; diff --git a/users/curry/leader_user.c b/users/curry/leader_user.c deleted file mode 100644 index 9cee19af49..0000000000 --- a/users/curry/leader_user.c +++ /dev/null @@ -1,31 +0,0 @@ -#include "curry.h" -#include "leader_user.h" - -void leader_end_user(void) { - if (leader_sequence_one_key(KC_F)) { - // Select all and format - SEND_STRING(SS_LCTL("akf")); - } - if (leader_sequence_one_key(KC_P)) { - // Screenshot region - SEND_STRING(SS_LCTL(SS_LSFT("4"))); - } - if (leader_sequence_two_keys(KC_D, KC_D)) { - // Copy all - SEND_STRING(SS_LCTL("ac")); - } -} - -void matrix_scan_user(void) { - static bool has_ran_yet; - if (!has_ran_yet) { - has_ran_yet = true; - startup_user(); - } - -#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE) - matrix_scan_rgb(); -#endif // RGBLIGHT_ENABLE - - matrix_scan_keymap(); -} diff --git a/users/curry/leader_user.h b/users/curry/leader_user.h deleted file mode 100644 index f215893b9e..0000000000 --- a/users/curry/leader_user.h +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -void matrix_scan_user(void); diff --git a/users/curry/oled.c b/users/curry/oled.c deleted file mode 100644 index 2defcbd80e..0000000000 --- a/users/curry/oled.c +++ /dev/null @@ -1,172 +0,0 @@ -#include "curry.h" - -#define KEYLOGGER_LENGTH 5 -static uint32_t oled_timer = 0; -static char keylog_str[KEYLOGGER_LENGTH + 1] = {"\n"}; -static uint16_t log_timer = 0; -// clang-format off -static const char PROGMEM code_to_name[0xFF] = { -// 0 1 2 3 4 5 6 7 8 9 A B c D E F - ' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', // 0x - 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '1', '2', // 1x - '3', '4', '5', '6', '7', '8', '9', '0', 20, 19, 27, 26, 22, '-', '=', '[', // 2x - ']','\\', '#', ';','\'', '`', ',', '.', '/', 128, ' ', ' ', ' ', ' ', ' ', ' ', // 3x - ' ', ' ', ' ', ' ', ' ', ' ', 'P', 'S', ' ', ' ', ' ', ' ', 16, ' ', ' ', ' ', // 4x - ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 5x - ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 6x - ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 7x - ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 8x - ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 9x - ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Ax - ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Bx - ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Cx - ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Dx - 'C', 'S', 'A', 'C', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Ex - ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' // Fx -}; - -// clang-format on -void add_keylog(uint16_t keycode); - -oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_270; } - -void add_keylog(uint16_t keycode) { - if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX) || (keycode >= QK_MODS && keycode <= QK_MODS_MAX)) { - keycode = keycode & 0xFF; - } else if (keycode > 0xFF) { - keycode = 0; - } - - for (uint8_t i = (KEYLOGGER_LENGTH - 1); i > 0; --i) { - keylog_str[i] = keylog_str[i - 1]; - } - - if (keycode < ARRAY_SIZE(code_to_name)) { - keylog_str[0] = pgm_read_byte(&code_to_name[keycode]); - } - - log_timer = timer_read(); -} - -void render_keylogger_status(void) { - oled_write_P(PSTR("Keys:"), false); - oled_write(keylog_str, false); -} - -void render_default_layer_state(void) { - oled_write_P(PSTR("Lyout"), false); - switch (get_highest_layer(default_layer_state)) { -#if defined(ENABLE_QWERTY) - case _QWERTY: - oled_write_P(PSTR(" QRTY"), false); - break; -#endif -#if defined(ENABLE_COLEMAK) - case _COLEMAK: - oled_write_P(PSTR(" COLE"), false); - break; -#endif -#if defined(ENABLE_DVORAK) - case _DVORAK: - oled_write_P(PSTR(" DVRK"), false); - break; -#endif -#if defined(ENABLE_WORKMAN) - case _WORKMAN: - oled_write_P(PSTR(" WRKM"), false); - break; -#endif - } -} - -void render_layer_state(void) { - oled_write_P(PSTR("LAYER"), false); - oled_write_P(PSTR("Lower"), layer_state_is(_LOWER)); - oled_write_P(PSTR("Raise"), layer_state_is(_RAISE)); - oled_write_P(PSTR(" Mods"), layer_state_is(_MODS)); -} - -void render_keylock_status(led_t led_state) { - oled_write_P(PSTR("Lock:"), false); - oled_write_P(PSTR(" "), false); - oled_write_P(PSTR("N"), led_state.num_lock); - oled_write_P(PSTR("C"), led_state.caps_lock); - oled_write_ln_P(PSTR("S"), led_state.scroll_lock); -} - -void render_mod_status(uint8_t modifiers) { - oled_write_P(PSTR("Mods:"), false); - oled_write_P(PSTR(" "), false); - oled_write_P(PSTR("S"), (modifiers & MOD_MASK_SHIFT)); - oled_write_P(PSTR("C"), (modifiers & MOD_MASK_CTRL)); - oled_write_P(PSTR("A"), (modifiers & MOD_MASK_ALT)); - oled_write_P(PSTR("G"), (modifiers & MOD_MASK_GUI)); -} - -void render_bootmagic_status(void) { - /* Show Ctrl-Gui Swap options */ - static const char PROGMEM logo[][2][3] = { - {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}}, - {{0x95, 0x96, 0}, {0xb5, 0xb6, 0}}, - }; - oled_write_P(PSTR("BTMGK"), false); - oled_write_P(PSTR(" "), false); - oled_write_P(logo[0][0], !keymap_config.swap_lctl_lgui); - oled_write_P(logo[1][0], keymap_config.swap_lctl_lgui); - oled_write_P(PSTR(" "), false); - oled_write_P(logo[0][1], !keymap_config.swap_lctl_lgui); - oled_write_P(logo[1][1], keymap_config.swap_lctl_lgui); - oled_write_P(PSTR(" NKRO"), keymap_config.nkro); -} - -void render_user_status(void) { - oled_write_P(PSTR("USER:"), false); - oled_write_P(PSTR(" Anim"), userspace_config.rgb_matrix_idle_anim); - oled_write_P(PSTR(" Layr"), userspace_config.rgb_layer_change); - oled_write_P(PSTR(" Nuke"), userspace_config.nuke_switch); -} - -void render_status_main(void) { - /* Show Keyboard Layout */ - render_default_layer_state(); - render_keylock_status(host_keyboard_led_state()); - render_bootmagic_status(); - render_user_status(); - - render_keylogger_status(); -} - -void render_status_secondary(void) { - /* Show Keyboard Layout */ - render_default_layer_state(); - render_layer_state(); - render_mod_status(get_mods() | get_oneshot_mods()); - - render_keylogger_status(); -} - -bool oled_task_user(void) { - if (timer_elapsed32(oled_timer) > 30000) { - oled_off(); - return false; - } -#if !defined(SPLIT_KEYBOARD) - else { - oled_on(); - } -#endif - if (is_keyboard_master()) { - render_status_main(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) - } else { - render_status_secondary(); - } - return false; -} - -bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { - if (record->event.pressed) { - oled_timer = timer_read32(); - add_keylog(keycode); - } - return true; -} diff --git a/users/curry/process_records.c b/users/curry/process_records.c deleted file mode 100644 index 3b5c001926..0000000000 --- a/users/curry/process_records.c +++ /dev/null @@ -1,76 +0,0 @@ -#include "curry.h" - -uint16_t copy_paste_timer; - -__attribute__((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; } - -__attribute__((weak)) bool process_record_secrets(uint16_t keycode, keyrecord_t *record) { return true; } - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - xprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed); - switch (keycode) { - case KC_QWERTY ... KC_WORKMAN: - if (record->event.pressed) { - set_single_persistent_default_layer(keycode - KC_QWERTY); - } - break; - case KC_MAKE: - if (!record->event.pressed) { - uint8_t temp_mod = mod_config(get_mods()); - uint8_t temp_osm = mod_config(get_oneshot_mods()); - clear_mods(); - clear_oneshot_mods(); - send_string_with_delay_P(PSTR("make " QMK_KEYBOARD ":" QMK_KEYMAP), TAP_CODE_DELAY); - if ((temp_mod | temp_osm) & MOD_MASK_SHIFT) { - send_string_with_delay_P(PSTR(":flash"), TAP_CODE_DELAY); - } - send_string_with_delay_P(PSTR(" -j8 --output-sync\n"), TAP_CODE_DELAY); - } - break; - - case VRSN: // Prints firmware version - if (record->event.pressed) { - send_string_with_delay_P(PSTR(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE), TAP_CODE_DELAY); - } - break; - - case KC_CCCV: // One key copy/paste - if (record->event.pressed) { - copy_paste_timer = timer_read(); - } else { - if (timer_elapsed(copy_paste_timer) > TAPPING_TERM) { // Hold, copy - tap_code16(LCTL(KC_C)); - } else { // Tap, paste - tap_code16(LCTL(KC_V)); - } - } - break; -#if defined(UNICODE_ENABLE) - case UC_FLIP: - if (record->event.pressed) { - send_unicode_string("(ノāē į—Šāē )ãƒŽå―Ąâ”ŧ━â”ŧ"); - } - break; - case UC_TABL: - if (record->event.pressed) { - send_unicode_string("┎─┎ノ( š _ šノ)"); - } - break; - case UC_SHRG: - if (record->event.pressed) { - send_unicode_string("ÂŊ\\_(ツ)_/ÂŊ"); - } - break; - case UC_DISA: - if (record->event.pressed) { - send_unicode_string("āē _āē "); - } - break; -#endif - } - return process_record_keymap(keycode, record) && -#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE) - process_record_user_rgb(keycode, record) && -#endif // RGBLIGHT_ENABLE - process_record_secrets(keycode, record); -} diff --git a/users/curry/process_records.h b/users/curry/process_records.h deleted file mode 100644 index 4db25c34e1..0000000000 --- a/users/curry/process_records.h +++ /dev/null @@ -1,101 +0,0 @@ -#pragma once - -enum userspace_custom_keycodes { - VRSN = SAFE_RANGE, // Prints QMK Firmware and board info - KC_QWERTY, // Sets default layer to QWERTY - KC_COLEMAK, // Sets default layer to COLEMAK - KC_DVORAK, // Sets default layer to DVORAK - KC_WORKMAN, // Sets default layer to WORKMAN - KC_MAKE, // Run keyboard's customized make command - KC_RGB_T, // Toggles RGB Layer Indication mode - RGB_IDL, // RGB Idling animations - KC_SECRET_1, // test1 - KC_SECRET_2, // test2 - KC_SECRET_3, // test3 - KC_SECRET_4, // test4 - KC_SECRET_5, // test5 - KC_CCCV, // Hold to copy, tap to paste - UC_FLIP, // (āē į—Šāē )â”ŧ━â”ŧ - UC_TABL, // ┎─┎ノ( š _ šノ) - UC_SHRG, // ÂŊ\_(ツ)_/ÂŊ - UC_DISA, // āē _āē  - KC_DT1, - KC_DT2, - KC_DT3, - KC_DT4, - NEW_SAFE_RANGE // use "NEWPLACEHOLDER for keymap specific codes -}; - -bool process_record_secrets(uint16_t keycode, keyrecord_t *record); -bool process_record_keymap(uint16_t keycode, keyrecord_t *record); - -#define LOWER MO(_LOWER) -#define RAISE MO(_RAISE) -#define ADJUST MO(_ADJUST) -#define TG_MODS TG(_MODS) -#define OS_LWR OSL(_LOWER) -#define OS_RSE OSL(_RAISE) - -#define KC_SEC1 KC_SECRET_1 -#define KC_SEC2 KC_SECRET_2 -#define KC_SEC3 KC_SECRET_3 -#define KC_SEC4 KC_SECRET_4 -#define KC_SEC5 KC_SECRET_5 - -#define QWERTY KC_QWERTY -#define DVORAK KC_NO -#define COLEMAK KC_NO -#define WORKMAN KC_NO - -#if defined(ENABLE_DVORAK) -# undef DVORAK -# define DVORAK KC_DVORAK -#endif - -#if defined(ENABLE_COLEMAK) -# undef COLEMAK -# define COLEMAK KC_COLEMAK -#endif - -#if defined(ENABLE_WORKMAN) -# undef WORKMAN -# define WORKMAN KC_WORKMAN -#endif - -#define KC_RST QK_BOOT - -#if defined(SWAP_HANDS_ENABLE) -# define KC_C1R3 SH_T(KC_TAB) -#else // SWAP_HANDS_ENABLE -# define KC_C1R3 KC_TAB -#endif // SWAP_HANDS_ENABLE - -#define SP_LWER LT(_LOWER, KC_SPC) -#define ET_RAIS LT(_RAISE, KC_ENTER) - -/* OSM keycodes, to keep things clean and easy to change */ -#define OS_LGUI OSM(MOD_LGUI) -#define OS_RGUI OSM(MOD_RGUI) -#define OS_LSFT OSM(MOD_LSFT) -#define OS_RSFT OSM(MOD_RSFT) -#define OS_LCTL OSM(MOD_LCTL) -#define OS_RCTL OSM(MOD_RCTL) -#define OS_LALT OSM(MOD_LALT) -#define OS_RALT OSM(MOD_RALT) -#define OS_MEH OSM(MOD_MEH) -#define OS_HYPR OSM(MOD_HYPR) - -#define MT_TAB MT(MOD_LCTL, KC_TAB) - -#define ALT_APP ALT_T(KC_APP) - -#define MG_NKRO MAGIC_TOGGLE_NKRO - -#define UC_IRNY UC(0x2E2E) -#define UC_CLUE UC(0x203D) - -// KWin Window Switching -#define KC_DT1 LCTL(KC_F1) -#define KC_DT2 LCTL(KC_F2) -#define KC_DT3 LCTL(KC_F3) -#define KC_DT4 LCTL(KC_F4) diff --git a/users/curry/rgb_lighting_user.c b/users/curry/rgb_lighting_user.c deleted file mode 100644 index 81f3c4e505..0000000000 --- a/users/curry/rgb_lighting_user.c +++ /dev/null @@ -1,331 +0,0 @@ -#include "curry.h" -#include "rgb_lighting_user.h" - -extern rgblight_config_t rgblight_config; -bool has_initialized; - -void rgblight_sethsv_default_helper(uint8_t index) { rgblight_sethsv_at(rgblight_config.hue, rgblight_config.sat, rgblight_config.val, index); } - -/* Custom indicators for modifiers. - * This allows for certain lights to be lit up, based on what mods are active, giving some visual feedback. - * This is especially useful for One Shot Mods, since it's not always obvious if they're still lit up. - */ -#if defined(INDICATOR_LIGHTS) -void set_rgb_indicators(uint8_t this_mod, led_t this_led, uint8_t this_osm) { - if (userspace_config.rgb_layer_change && get_highest_layer(layer_state) == 0) { - if ((this_mod | this_osm) & MOD_MASK_SHIFT || this_led.caps_lock) { -# ifdef SHFT_LED1 - rgblight_sethsv_at(120, 255, 255, SHFT_LED1); -# endif // SHFT_LED1 -# ifdef SHFT_LED2 - rgblight_sethsv_at(120, 255, 255, SHFT_LED2); -# endif // SHFT_LED2 - } else { -# ifdef SHFT_LED1 - rgblight_sethsv_default_helper(SHFT_LED1); -# endif // SHFT_LED1 -# ifdef SHFT_LED2 - rgblight_sethsv_default_helper(SHFT_LED2); -# endif // SHFT_LED2 - } - if ((this_mod | this_osm) & MOD_MASK_CTRL) { -# ifdef CTRL_LED1 - rgblight_sethsv_at(0, 255, 255, CTRL_LED1); -# endif // CTRL_LED1 -# ifdef CTRL_LED2 - rgblight_sethsv_at(0, 255, 255, CTRL_LED2); -# endif // CTRL_LED2 - } else { -# ifdef CTRL_LED1 - rgblight_sethsv_default_helper(CTRL_LED1); -# endif // CTRL_LED1 -# ifdef CTRL_LED2 - rgblight_sethsv_default_helper(CTRL_LED2); -# endif // CTRL_LED2 - } - if ((this_mod | this_osm) & MOD_MASK_GUI) { -# ifdef GUI_LED1 - rgblight_sethsv_at(51, 255, 255, GUI_LED1); -# endif // GUI_LED1 -# ifdef GUI_LED2 - rgblight_sethsv_at(51, 255, 255, GUI_LED2); -# endif // GUI_LED2 - } else { -# ifdef GUI_LED1 - rgblight_sethsv_default_helper(GUI_LED1); -# endif // GUI_LED1 -# ifdef GUI_LED2 - rgblight_sethsv_default_helper(GUI_LED2); -# endif // GUI_LED2 - } - if ((this_mod | this_osm) & MOD_MASK_ALT) { -# ifdef ALT_LED1 - rgblight_sethsv_at(240, 255, 255, ALT_LED1); -# endif // ALT_LED1 -# ifdef GUI_LED2 - rgblight_sethsv_at(240, 255, 255, ALT_LED2); -# endif // GUI_LED2 - } else { -# ifdef GUI_LED1 - rgblight_sethsv_default_helper(ALT_LED1); -# endif // GUI_LED1 -# ifdef GUI_LED2 - rgblight_sethsv_default_helper(ALT_LED2); -# endif // GUI_LED2 - } - } -} - -/* Function for the indicators */ -void matrix_scan_indicator(void) { - if (has_initialized) { - set_rgb_indicators(get_mods(), host_keyboard_led_state(), get_oneshot_mods()); - } -} -#endif // INDICATOR_LIGHTS - -#if defined(RGBLIGHT_TWINKLE) -static rgblight_fadeout lights[RGBLED_NUM]; - -__attribute__((weak)) bool rgblight_twinkle_is_led_used_keymap(uint8_t index) { return false; } - -/* This function checks for used LEDs. This way, collisions don't occur and cause weird rendering */ -bool rgblight_twinkle_is_led_used(uint8_t index) { - switch (index) { -# ifdef INDICATOR_LIGHTS -# ifdef SHFT_LED1 - case SHFT_LED1: - return true; -# endif // SHFT_LED1 -# ifdef SHFT_LED2 - case SHFT_LED2: - return true; -# endif // SHFT_LED2 -# ifdef CTRL_LED1 - case CTRL_LED1: - return true; -# endif // CTRL_LED1 -# ifdef CTRL_LED2 - case CTRL_LED2: - return true; -# endif // CTRL_LED2 -# ifdef GUI_LED1 - case GUI_LED1: - return true; -# endif // GUI_LED1 -# ifdef GUI_LED2 - case GUI_LED2: - return true; -# endif // GUI_LED2 -# ifdef ALT_LED1 - case ALT_LED1: - return true; -# endif // ALT_LED1 -# ifdef ALT_LED2 - case ALT_LED2: - return true; -# endif // ALT_LED2 -# endif // INDICATOR_LIGHTS - default: - return rgblight_twinkle_is_led_used_keymap(index); - } -} - -/* Handler for fading/twinkling effect */ -void scan_rgblight_fadeout(void) { // Don't effing change this function .... rgblight_sethsv is supppppper intensive - bool litup = false; - for (uint8_t light_index = 0; light_index < RGBLED_NUM; ++light_index) { - if (lights[light_index].enabled && timer_elapsed(lights[light_index].timer) > 10) { - rgblight_fadeout *light = &lights[light_index]; - litup = true; - - if (light->life) { - light->life -= 1; - if (get_highest_layer(layer_state) == 0) { - sethsv(light->hue + rand() % 0xF, 255, light->life, (rgb_led_t *)&led[light_index]); - } - light->timer = timer_read(); - } else { - if (light->enabled && get_highest_layer(layer_state) == 0) { - rgblight_sethsv_default_helper(light_index); - } - litup = light->enabled = false; - } - } - } - if (litup && get_highest_layer(layer_state) == 0) { - rgblight_set(); - } -} - -/* Triggers a LED to fade/twinkle. - * This function handles the selection of the LED and prepres for it to be used. - */ -void start_rgb_light(void) { - uint8_t indices[RGBLED_NUM]; - uint8_t indices_count = 0; - uint8_t min_life = 0xFF; - uint8_t min_life_index = -1; - for (uint8_t index = 0; index < RGBLED_NUM; ++index) { - if (rgblight_twinkle_is_led_used(index)) { - continue; - } - if (lights[index].enabled) { - if (min_life_index == -1 || lights[index].life < min_life) { - min_life = lights[index].life; - min_life_index = index; - } - continue; - } - - indices[indices_count] = index; - ++indices_count; - } - - uint8_t light_index; - if (!indices_count) { - light_index = min_life_index; - } else { - light_index = indices[rand() % indices_count]; - } - - rgblight_fadeout *light = &lights[light_index]; - light->enabled = true; - light->timer = timer_read(); - light->life = 0xC0 + rand() % 0x40; - - light->hue = rgblight_config.hue + (rand() % 0xB4) - 0x54; - - rgblight_sethsv_at(light->hue, 255, light->life, light_index); -} -#endif - -bool process_record_user_rgb(uint16_t keycode, keyrecord_t *record) { - uint16_t temp_keycode = keycode; - // Filter out the actual keycode from MT and LT keys. - if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) { - temp_keycode &= 0xFF; - } - - switch (temp_keycode) { -#if defined(RGBLIGHT_TWINKLE) - case KC_A ... KC_SLASH: - case KC_F1 ... KC_F12: - case KC_INSERT ... KC_UP: - case KC_KP_SLASH ... KC_KP_DOT: - case KC_F13 ... KC_F24: - case KC_AUDIO_MUTE ... KC_MEDIA_REWIND: - if (record->event.pressed) { - start_rgb_light(); - } - break; -#endif // RGBLIGHT_TWINKLE - case KC_RGB_T: // This allows me to use underglow as layer indication, or as normal - if (record->event.pressed) { - userspace_config.rgb_layer_change ^= 1; - dprintf("rgblight layer change [EEPROM]: %u\n", userspace_config.rgb_layer_change); - eeconfig_update_user(userspace_config.raw); - if (userspace_config.rgb_layer_change) { - layer_state_set(layer_state); // This is needed to immediately set the layer color (looks better) - } - } - break; - case RGB_MODE_FORWARD ... RGB_MODE_GRADIENT: // quantum_keycodes.h L400 for definitions - if (record->event.pressed) { - bool is_eeprom_updated = false; - // This disables layer indication, as it's assumed that if you're changing this ... you want that disabled - if (userspace_config.rgb_layer_change) { - userspace_config.rgb_layer_change = false; - dprintf("rgblight layer change [EEPROM]: %u\n", userspace_config.rgb_layer_change); - is_eeprom_updated = true; - } - if (is_eeprom_updated) { - eeconfig_update_user(userspace_config.raw); - } - } - break; - } - return true; -} - -void keyboard_post_init_rgb(void) { -#if defined(RGBLIGHT_STARTUP_ANIMATION) - bool is_enabled = rgblight_config.enable; - if (userspace_config.rgb_layer_change) { - rgblight_enable_noeeprom(); - } - if (rgblight_config.enable) { - layer_state_set_user(layer_state); - uint16_t old_hue = rgblight_config.hue; - rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); - for (uint16_t i = 255; i > 0; i--) { - rgblight_sethsv_noeeprom((i + old_hue) % 255, 255, 255); - matrix_scan(); - wait_ms(10); - } - } - if (!is_enabled) { - rgblight_disable_noeeprom(); - } - -#endif - layer_state_set_user(layer_state); -} - -void matrix_scan_rgb(void) { -#if defined(RGBLIGHT_TWINKLE) - scan_rgblight_fadeout(); -#endif // RGBLIGHT_ENABLE - -#if defined(INDICATOR_LIGHTS) - matrix_scan_indicator(); -#endif -} - -void rgblight_set_hsv_and_mode(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode) { - rgblight_sethsv_noeeprom(hue, sat, val); - wait_us(175); // Add a slight delay between color and mode to ensure it's processed correctly - rgblight_mode_noeeprom(mode); -} - -layer_state_t layer_state_set_rgb(layer_state_t state) { - if (userspace_config.rgb_layer_change) { - switch (get_highest_layer(state)) { - case _RAISE: - rgblight_set_hsv_and_mode(HSV_YELLOW, RGBLIGHT_MODE_BREATHING + 3); - break; - case _LOWER: - rgblight_set_hsv_and_mode(HSV_GREEN, RGBLIGHT_MODE_BREATHING + 3); - break; - case _ADJUST: - rgblight_set_hsv_and_mode(HSV_RED, RGBLIGHT_MODE_KNIGHT + 2); - break; - default: // for any other layers, or the default layer - { - uint8_t mode = get_highest_layer(state) == _MODS ? RGBLIGHT_MODE_BREATHING : RGBLIGHT_MODE_STATIC_LIGHT; - switch (get_highest_layer(default_layer_state)) { -#if defined(ENABLE_COLEMAK) - case _COLEMAK: - rgblight_set_hsv_and_mode(HSV_MAGENTA, mode); - break; -#endif -#if defined(ENABLE_DVORAK) - case _DVORAK: - rgblight_set_hsv_and_mode(HSV_SPRINGGREEN, mode); - break; -#endif -#if defined(ENABLE_WORKMAN) - case _WORKMAN: - rgblight_set_hsv_and_mode(HSV_GOLDENROD, mode); - break; -#endif - default: - rgblight_set_hsv_and_mode(HSV_CYAN, mode); - break; - } - break; - } - } - } - return state; -} diff --git a/users/curry/rgb_lighting_user.h b/users/curry/rgb_lighting_user.h deleted file mode 100644 index 91d7a7061e..0000000000 --- a/users/curry/rgb_lighting_user.h +++ /dev/null @@ -1,19 +0,0 @@ -#pragma once - -typedef struct { - bool enabled; - uint8_t hue; - uint16_t timer; - uint8_t life; -} rgblight_fadeout; - -bool process_record_user_rgb(uint16_t keycode, keyrecord_t *record); -void keyboard_post_init_rgb(void); -void matrix_scan_rgb(void); -layer_state_t layer_state_set_rgb(layer_state_t state); -layer_state_t default_layer_state_set_rgb(layer_state_t state); -void rgblight_sethsv_default_helper(uint8_t index); - -#if defined(RGBLIGHT_TWINKLE) -void scan_rgblight_fadeout(void); -#endif diff --git a/users/curry/rgb_matrix_user.c b/users/curry/rgb_matrix_user.c deleted file mode 100644 index 3c2008aa01..0000000000 --- a/users/curry/rgb_matrix_user.c +++ /dev/null @@ -1,153 +0,0 @@ -#include "curry.h" -#include "rgb_matrix_user.h" -#include "lib/lib8tion/lib8tion.h" - -static uint32_t hypno_timer; -extern led_config_t g_led_config; - -#define RGB_MATRIX_REST_MODE RGB_MATRIX_CYCLE_OUT_IN_DUAL - -void suspend_power_down_keymap(void) { rgb_matrix_set_suspend_state(true); } - -void suspend_wakeup_init_keymap(void) { rgb_matrix_set_suspend_state(false); } - -void check_default_layer(uint8_t mode, uint8_t type) { - switch (get_highest_layer(default_layer_state)) { -#if defined(ENABLE_QWERTY) - case _QWERTY: - rgb_matrix_layer_helper(HSV_CYAN, mode, rgb_matrix_config.speed, type); - break; -#endif -#if defined(ENABLE_COLEMAK) - case _COLEMAK: - rgb_matrix_layer_helper(HSV_MAGENTA, mode, rgb_matrix_config.speed, type); - break; -#endif -#if defined(ENABLE_DVORAK) - case _DVORAK: - rgb_matrix_layer_helper(HSV_SPRINGGREEN, mode, rgb_matrix_config.speed, type); - break; -#endif -#if defined(ENABLE_WORKMAN) - case _WORKMAN: - rgb_matrix_layer_helper(HSV_GOLDENROD, mode, rgb_matrix_config.speed, type); - break; -#endif - } -} - -bool rgb_matrix_indicators_user(void) { - if (userspace_config.rgb_layer_change && rgb_matrix_config.enable) { - switch (get_highest_layer(layer_state)) { - case _RAISE: - rgb_matrix_layer_helper(HSV_YELLOW, 0, rgb_matrix_config.speed, LED_FLAG_UNDERGLOW); - break; - case _LOWER: - rgb_matrix_layer_helper(HSV_GREEN, 0, rgb_matrix_config.speed, LED_FLAG_UNDERGLOW); - break; - case _ADJUST: - rgb_matrix_layer_helper(HSV_RED, 0, rgb_matrix_config.speed, LED_FLAG_UNDERGLOW); - break; - default: { - check_default_layer(IS_LAYER_ON(_MODS), LED_FLAG_UNDERGLOW); - break; - } - } - check_default_layer(0, LED_FLAG_MODIFIER); - } - return false; -} - -bool process_record_user_rgb(uint16_t keycode, keyrecord_t *record) { - uint16_t temp_keycode = keycode; - // Filter out the actual keycode from MT and LT keys. - if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) { - temp_keycode &= 0xFF; - } - - hypno_timer = timer_read32(); - if (userspace_config.rgb_matrix_idle_anim && rgb_matrix_get_mode() == RGB_MATRIX_REST_MODE) { - rgb_matrix_mode_noeeprom(RGB_MATRIX_TYPING_HEATMAP); - } - - switch (temp_keycode) { - case KC_RGB_T: // This allows me to use underglow as layer indication, or as normal - if (record->event.pressed) { - userspace_config.rgb_layer_change ^= 1; - dprintf("rgblight layer change [EEPROM]: %u\n", userspace_config.rgb_layer_change); - eeconfig_update_user(userspace_config.raw); - if (userspace_config.rgb_layer_change) { - layer_state_set(layer_state); // This is needed to immediately set the layer color (looks better) - } - } - break; - case RGB_IDL: // This allows me to use underglow as layer indication, or as normal - if (record->event.pressed) { - userspace_config.rgb_matrix_idle_anim ^= 1; - dprintf("RGB Matrix Idle Animation [EEPROM]: %u\n", userspace_config.rgb_matrix_idle_anim); - eeconfig_update_user(userspace_config.raw); - if (userspace_config.rgb_matrix_idle_anim) { - rgb_matrix_mode_noeeprom(RGB_MATRIX_TYPING_HEATMAP); - } - } - break; - case RGB_MODE_FORWARD ... RGB_MODE_GRADIENT: // quantum_keycodes.h L400 for definitions - if (record->event.pressed) { - bool is_eeprom_updated = false; - if (userspace_config.rgb_matrix_idle_anim) { - userspace_config.rgb_matrix_idle_anim = false; - dprintf("RGB Matrix Idle Animation [EEPROM]: %u\n", userspace_config.rgb_matrix_idle_anim); - is_eeprom_updated = true; - } - if (is_eeprom_updated) { - eeconfig_update_user(userspace_config.raw); - } - } - break; - } - return true; -} - -void keyboard_post_init_rgb(void) { - if (userspace_config.rgb_matrix_idle_anim) { - rgb_matrix_mode_noeeprom(RGB_MATRIX_REST_MODE); - } -} - -void matrix_scan_rgb(void) { - if (userspace_config.rgb_matrix_idle_anim && rgb_matrix_get_mode() == RGB_MATRIX_TYPING_HEATMAP && timer_elapsed32(hypno_timer) > 15000) { - rgb_matrix_mode_noeeprom(RGB_MATRIX_REST_MODE); - } -} - -void rgb_matrix_layer_helper(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode, uint8_t speed, uint8_t led_type) { - HSV hsv = {hue, sat, val}; - if (hsv.v > rgb_matrix_config.hsv.v) { - hsv.v = rgb_matrix_config.hsv.v; - } - - switch (mode) { - case 1: // breathing - { - uint16_t time = scale16by8(RGBLED_NUM, speed / 8); - hsv.v = scale8(abs8(sin8(time) - 128) * 2, hsv.v); - RGB rgb = hsv_to_rgb(hsv); - for (uint8_t i = 0; i < RGB_MATRIX_LED_COUNT; i++) { - if (HAS_FLAGS(g_led_config.flags[i], led_type)) { - rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); - } - } - break; - } - default: // Solid Color - { - RGB rgb = hsv_to_rgb(hsv); - for (uint8_t i = 0; i < RGB_MATRIX_LED_COUNT; i++) { - if (HAS_FLAGS(g_led_config.flags[i], led_type)) { - rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); - } - } - break; - } - } -} diff --git a/users/curry/rgb_matrix_user.h b/users/curry/rgb_matrix_user.h deleted file mode 100644 index d7db29bff9..0000000000 --- a/users/curry/rgb_matrix_user.h +++ /dev/null @@ -1,7 +0,0 @@ -#pragma once - -bool process_record_user_rgb(uint16_t keycode, keyrecord_t *record); -void keyboard_post_init_rgb(void); -void matrix_scan_rgb(void); -void rgb_matrix_set_color_all(uint8_t red, uint8_t green, uint8_t blue); -void rgb_matrix_layer_helper(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode, uint8_t speed, uint8_t led_type); diff --git a/users/curry/rgblight_breathe_table.h b/users/curry/rgblight_breathe_table.h deleted file mode 100644 index 4c6ae38faa..0000000000 --- a/users/curry/rgblight_breathe_table.h +++ /dev/null @@ -1,118 +0,0 @@ -#ifndef RGBLIGHT_EFFECT_BREATHE_TABLE -#define RGBLIGHT_EFFECT_BREATHE_TABLE - -// clang-format off -const uint8_t rgblight_effect_breathe_table[] PROGMEM = { -/* #define RGBLIGHT_EFFECT_BREATHE_CENTER 0.00 */ -/* #define RGBLIGHT_EFFECT_BREATHE_MAX 255 */ - - #if RGBLIGHT_BREATHE_TABLE_SIZE == 256 - 0x44, 0x45, 0x47, 0x48, 0x4a, 0x4b, 0x4c, 0x4e, - 0x4f, 0x51, 0x52, 0x54, 0x55, 0x57, 0x58, 0x5a, - 0x5c, 0x5d, 0x5f, 0x60, 0x62, 0x64, 0x65, 0x67, - 0x69, 0x6a, 0x6c, 0x6e, 0x70, 0x72, 0x73, 0x75, - 0x77, 0x79, 0x7b, 0x7c, 0x7e, 0x80, 0x82, 0x84, - 0x86, 0x88, 0x8a, 0x8b, 0x8d, 0x8f, 0x91, 0x93, - 0x95, 0x97, 0x99, 0x9b, 0x9d, 0x9f, 0xa1, 0xa3, - 0xa5, 0xa7, 0xa9, 0xaa, 0xac, 0xae, 0xb0, 0xb2, - 0xb4, 0xb6, 0xb8, 0xba, 0xbc, 0xbe, 0xbf, 0xc1, - 0xc3, 0xc5, 0xc7, 0xc9, 0xca, 0xcc, 0xce, 0xd0, - 0xd1, 0xd3, 0xd5, 0xd6, 0xd8, 0xda, 0xdb, 0xdd, - 0xde, 0xe0, 0xe1, 0xe3, 0xe4, 0xe5, 0xe7, 0xe8, - 0xe9, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, - 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf8, - 0xf9, 0xfa, 0xfa, 0xfb, 0xfc, 0xfc, 0xfc, 0xfd, - 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, - 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, - 0xfd, 0xfc, 0xfc, 0xfc, 0xfb, 0xfa, 0xfa, 0xf9, - 0xf8, 0xf8, 0xf7, 0xf6, 0xf5, 0xf4, 0xf3, 0xf2, - 0xf1, 0xf0, 0xef, 0xee, 0xed, 0xec, 0xeb, 0xe9, - 0xe8, 0xe7, 0xe5, 0xe4, 0xe3, 0xe1, 0xe0, 0xde, - 0xdd, 0xdb, 0xda, 0xd8, 0xd6, 0xd5, 0xd3, 0xd1, - 0xd0, 0xce, 0xcc, 0xca, 0xc9, 0xc7, 0xc5, 0xc3, - 0xc1, 0xbf, 0xbe, 0xbc, 0xba, 0xb8, 0xb6, 0xb4, - 0xb2, 0xb0, 0xae, 0xac, 0xaa, 0xa9, 0xa7, 0xa5, - 0xa3, 0xa1, 0x9f, 0x9d, 0x9b, 0x99, 0x97, 0x95, - 0x93, 0x91, 0x8f, 0x8d, 0x8b, 0x8a, 0x88, 0x86, - 0x84, 0x82, 0x80, 0x7e, 0x7c, 0x7b, 0x79, 0x77, - 0x75, 0x73, 0x72, 0x70, 0x6e, 0x6c, 0x6a, 0x69, - 0x67, 0x65, 0x64, 0x62, 0x60, 0x5f, 0x5d, 0x5c, - 0x5a, 0x58, 0x57, 0x55, 0x54, 0x52, 0x51, 0x4f, - 0x4e, 0x4c, 0x4b, 0x4a, 0x48, 0x47, 0x45, 0x44 - #endif /* 256 bytes table */ - - #if RGBLIGHT_BREATHE_TABLE_SIZE == 128 - 0x44, 0x47, 0x4a, 0x4c, - 0x4f, 0x52, 0x55, 0x58, - 0x5c, 0x5f, 0x62, 0x65, - 0x69, 0x6c, 0x70, 0x73, - 0x77, 0x7b, 0x7e, 0x82, - 0x86, 0x8a, 0x8d, 0x91, - 0x95, 0x99, 0x9d, 0xa1, - 0xa5, 0xa9, 0xac, 0xb0, - 0xb4, 0xb8, 0xbc, 0xbf, - 0xc3, 0xc7, 0xca, 0xce, - 0xd1, 0xd5, 0xd8, 0xdb, - 0xde, 0xe1, 0xe4, 0xe7, - 0xe9, 0xec, 0xee, 0xf0, - 0xf2, 0xf4, 0xf6, 0xf8, - 0xf9, 0xfa, 0xfc, 0xfc, - 0xfd, 0xfe, 0xfe, 0xfe, - 0xfe, 0xfe, 0xfe, 0xfe, - 0xfd, 0xfc, 0xfb, 0xfa, - 0xf8, 0xf7, 0xf5, 0xf3, - 0xf1, 0xef, 0xed, 0xeb, - 0xe8, 0xe5, 0xe3, 0xe0, - 0xdd, 0xda, 0xd6, 0xd3, - 0xd0, 0xcc, 0xc9, 0xc5, - 0xc1, 0xbe, 0xba, 0xb6, - 0xb2, 0xae, 0xaa, 0xa7, - 0xa3, 0x9f, 0x9b, 0x97, - 0x93, 0x8f, 0x8b, 0x88, - 0x84, 0x80, 0x7c, 0x79, - 0x75, 0x72, 0x6e, 0x6a, - 0x67, 0x64, 0x60, 0x5d, - 0x5a, 0x57, 0x54, 0x51, - 0x4e, 0x4b, 0x48, 0x45 - #endif /* 128 bytes table */ - - #if RGBLIGHT_BREATHE_TABLE_SIZE == 64 - 0x44, 0x4a, - 0x4f, 0x55, - 0x5c, 0x62, - 0x69, 0x70, - 0x77, 0x7e, - 0x86, 0x8d, - 0x95, 0x9d, - 0xa5, 0xac, - 0xb4, 0xbc, - 0xc3, 0xca, - 0xd1, 0xd8, - 0xde, 0xe4, - 0xe9, 0xee, - 0xf2, 0xf6, - 0xf9, 0xfc, - 0xfd, 0xfe, - 0xfe, 0xfe, - 0xfd, 0xfb, - 0xf8, 0xf5, - 0xf1, 0xed, - 0xe8, 0xe3, - 0xdd, 0xd6, - 0xd0, 0xc9, - 0xc1, 0xba, - 0xb2, 0xaa, - 0xa3, 0x9b, - 0x93, 0x8b, - 0x84, 0x7c, - 0x75, 0x6e, - 0x67, 0x60, - 0x5a, 0x54, - 0x4e, 0x48 - #endif /* 64 bytes table */ -}; -// clang-format on - -static const int table_scale = 256 / sizeof(rgblight_effect_breathe_table); - -#endif /* RGBLIGHT_EFFECT_BREATHE_TABLE */ diff --git a/users/curry/rules.mk b/users/curry/rules.mk deleted file mode 100644 index aa89110276..0000000000 --- a/users/curry/rules.mk +++ /dev/null @@ -1,71 +0,0 @@ -SRC += curry.c \ - process_records.c - -# Common flags -SPACE_CADET_ENABLE = no -LTO_ENABLE = yes -EXTRAKEY_ENABLE = yes -UNICODE_ENABLE = yes -NKRO_ENABLE = yes -EXTRAKEY_ENABLE = yes -LEADER_ENABLE = yes -TAP_DANCE_ENABLE = no - -ifneq ($(strip $(NO_SECRETS)), yes) - ifneq ("$(wildcard $(USER_PATH)/secrets.c)","") - SRC += secrets.c - endif - ifeq ($(strip $(NO_SECRETS)), lite) - OPT_DEFS += -DNO_SECRETS - endif -endif - -ifeq ($(strip $(TAP_DANCE_ENABLE)), yes) - SRC += tap_dances.c -endif - -ifeq ($(strip $(OLED_ENABLE)), yes) - SRC += oled.c -endif - -ifeq ($(strip $(LEADER_ENABLE)), yes) - SRC += leader_user.c -endif - -ifeq ($(strip $(RGBLIGHT_ENABLE)), yes) - SRC += rgb_lighting_user.c - ifeq ($(strip $(INDICATOR_LIGHTS)), yes) - OPT_DEFS += -DINDICATOR_LIGHTS - endif - ifeq ($(strip $(RGBLIGHT_TWINKLE)), yes) - OPT_DEFS += -DRGBLIGHT_TWINKLE - endif - ifeq ($(strip $(RGBLIGHT_NOEEPROM)), yes) - OPT_DEFS += -DRGBLIGHT_NOEEPROM - endif - ifeq ($(strip $(RGBLIGHT_STARTUP_ANIMATION)), yes) - OPT_DEFS += -DRGBLIGHT_STARTUP_ANIMATION - endif -endif - -RGB_MATRIX_ENABLE ?= no -ifneq ($(strip $(RGB_MATRIX_ENABLE)), no) - SRC += rgb_matrix_user.c -endif - -ifdef CONSOLE_ENABLE - ifeq ($(strip $(KEYLOGGER_ENABLE)), yes) - OPT_DEFS += -DKEYLOGGER_ENABLE - endif -endif - -ifeq ($(strip $(MAKE_BOOTLOADER)), yes) - OPT_DEFS += -DMAKE_BOOTLOADER -endif - -# At least until build.mk or the like drops, this is here to prevent -# VUSB boards from enabling NKRO, as they do not support it. Ideally -# this should be handled per keyboard, but until that happens ... -ifeq ($(strip $(PROTOCOL)), VUSB) - NKRO_ENABLE = no -endif diff --git a/users/curry/tap_dances.c b/users/curry/tap_dances.c deleted file mode 100644 index 86a8f679d2..0000000000 --- a/users/curry/tap_dances.c +++ /dev/null @@ -1,4 +0,0 @@ -#include "tap_dances.h" -#include "curry.h" - -tap_dance_action_t tap_dance_actions[] = {}; diff --git a/users/curry/tap_dances.h b/users/curry/tap_dances.h deleted file mode 100644 index 6f70f09bee..0000000000 --- a/users/curry/tap_dances.h +++ /dev/null @@ -1 +0,0 @@ -#pragma once diff --git a/users/curry/wrappers.h b/users/curry/wrappers.h deleted file mode 100644 index 490a9e0b0b..0000000000 --- a/users/curry/wrappers.h +++ /dev/null @@ -1,88 +0,0 @@ -#pragma once -#include "curry.h" -/* -Since our quirky block definitions are basically a list of comma separated -arguments, we need a wrapper in order for these definitions to be -expanded before being used as arguments to the LAYOUT_xxx macro. -*/ -#if (!defined(LAYOUT) && defined(KEYMAP)) -# define LAYOUT KEYMAP -#endif - -// clang-format off -#define KEYMAP_wrapper(...) LAYOUT(__VA_ARGS__) -#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__) -#define LAYOUT_ortho_4x12_wrapper(...) LAYOUT_ortho_4x12(__VA_ARGS__) -#define LAYOUT_ortho_5x12_wrapper(...) LAYOUT_ortho_5x12(__VA_ARGS__) - -#define _________________QWERTY_L1_________________ KC_Q, KC_W, KC_E, KC_R, KC_T -#define _________________QWERTY_L2_________________ KC_A, KC_S, KC_D, KC_F, KC_G -#define _________________QWERTY_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_B - -#define _________________QWERTY_R1_________________ KC_Y, KC_U, KC_I, KC_O, KC_P -#define _________________QWERTY_R2_________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN -#define _________________QWERTY_R3_________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLASH - -#define _________________COLEMAK_L1________________ KC_Q, KC_W, KC_F, KC_P, KC_B -#define _________________COLEMAK_L2________________ KC_A, KC_R, KC_S, KC_T, KC_G -#define _________________COLEMAK_L3________________ KC_Z, KC_X, KC_C, KC_D, KC_V - -#define _________________COLEMAK_R1________________ KC_J, KC_L, KC_U, KC_Y, KC_SCLN -#define _________________COLEMAK_R2________________ KC_M, KC_N, KC_E, KC_I, KC_O -#define _________________COLEMAK_R3________________ KC_K, KC_H, KC_COMM, KC_DOT, KC_SLASH - -#define _________________DVORAK_L1_________________ KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y -#define _________________DVORAK_L2_________________ KC_A, KC_O, KC_E, KC_U, KC_I -#define _________________DVORAK_L3_________________ KC_SCLN, KC_Q, KC_J, KC_K, KC_X - -#define _________________DVORAK_R1_________________ KC_F, KC_G, KC_C, KC_R, KC_L -#define _________________DVORAK_R2_________________ KC_D, KC_H, KC_T, KC_N, KC_S -#define _________________DVORAK_R3_________________ KC_B, KC_M, KC_W, KC_V, KC_Z - -#define _________________WORKMAN_L1________________ KC_Q, KC_D, KC_R, KC_W, KC_B -#define _________________WORKMAN_L2________________ KC_A, KC_S, KC_H, KC_T, KC_G -#define _________________WORKMAN_L3________________ KC_Z, KC_X, KC_M, KC_C, KC_V - -#define _________________WORKMAN_R1________________ KC_J, KC_F, KC_U, KC_P, KC_SCLN -#define _________________WORKMAN_R2________________ KC_Y, KC_N, KC_E, KC_O, KC_I -#define _________________WORKMAN_R3________________ KC_K, KC_L, KC_COMM, KC_DOT, KC_SLASH - - -#define ________________NUMBER_LEFT________________ KC_1, KC_2, KC_3, KC_4, KC_5 -#define ________________NUMBER_RIGHT_______________ KC_6, KC_7, KC_8, KC_9, KC_0 - -#define _________________FUNC_LEFT_________________ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5 -#define _________________FUNC_RIGHT________________ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10 - -#define _________________SYM_LEFT__________________ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC -#define _________________SYM_RIGHT_________________ KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN - - -#define ___________________BLANK___________________ _______, _______, _______, _______, _______ - - -#define _________________LOWER_L1__________________ _________________FUNC_LEFT_________________ -#define _________________LOWER_L2__________________ _________________SYM_LEFT__________________ -#define _________________LOWER_L3__________________ KC_DT1, KC_DT2, KC_DT3, KC_DT4, KC_CCCV - -#define _________________LOWER_R1__________________ _________________FUNC_RIGHT________________ -#define _________________LOWER_R2__________________ _________________SYM_RIGHT_________________ -#define _________________LOWER_R3__________________ KC_DQUO, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR - -#define _________________RAISE_L1__________________ ________________NUMBER_LEFT________________ -#define _________________RAISE_L2__________________ KC_PGUP, KC_PGDN, KC_HOME, KC_END, _______ -#define _________________RAISE_L3__________________ UC_FLIP, UC_TABL, UC_SHRG, UC_DISA, _______ - -#define _________________RAISE_R1__________________ ________________NUMBER_RIGHT_______________ -#define _________________RAISE_R2__________________ KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______ -#define _________________RAISE_R3__________________ KC_QUOT, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC - -#define _________________ADJUST_L1_________________ RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG -#define _________________ADJUST_L2_________________ MU_TOGG, CK_TOGG, AU_ON, AU_OFF, CG_NORM -#define _________________ADJUST_L3_________________ RGB_RMOD,RGB_HUD,RGB_SAD, RGB_VAD, KC_RGB_T - -#define _________________ADJUST_R1_________________ KC_SEC1, KC_SEC2, KC_SEC3, KC_SEC4, KC_SEC5 -#define _________________ADJUST_R2_________________ CG_SWAP, QWERTY, COLEMAK, DVORAK, WORKMAN -#define _________________ADJUST_R3_________________ MG_NKRO, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT - -// clang-format on diff --git a/users/cwebster2/config.h b/users/cwebster2/config.h deleted file mode 100644 index caee7d184d..0000000000 --- a/users/cwebster2/config.h +++ /dev/null @@ -1,56 +0,0 @@ -/* Copyright 2020 Casey Webster - * - * 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 . - */ -#pragma once - -#define TAPPING_TOGGLE 1 -#define TAPPING_TERM 200 -#define TAPPING_TERM_PER_KEY -//#define QUICK_TAP_TERM 0 -#undef PERMISSIVE_HOLD -#define NO_ACTION_ONESHOT - -#ifdef AUTO_SHIFT_ENABLE - #define AUTO_SHIFT_TIMEOUT 200 - #define NO_AUTO_SHIFT_SPECIAL - #define NO_AUTO_SHIFT_ALPHA -#endif - -#undef MOUSEKEY_DELAY -#define MOUSEKEY_DELAY 0 -#undef MOUSEKEY_INTERVAL -#define MOUSEKEY_INTERVAL 16 -#undef MOUSEKEY_WHEEL_DELAY -#define MOUSEKEY_WHEEL_DELAY 0 -#undef MOUSEKEY_MAX_SPEED -#define MOUSEKEY_MAX_SPEED 6 -#undef MOUSEKEY_TIME_TO_MAX -#define MOUSEKEY_TIME_TO_MAX 64 - -#ifdef LOCKING_SUPPORT_ENABLE -# undef LOCKING_SUPPORT_ENABLE -#endif -#ifdef LOCKING_RESYNC_ENABLE -# undef LOCKING_RESYNC_ENABLE -#endif - -#define NO_ACTION_MACRO -#define NO_ACTION_FUNCTION -#ifndef NO_DEBUG - #define NO_DEBUG -#endif // !NO_DEBUG -#if !defined(NO_PRINT) && !defined(CONSOLE_ENABLE) - #define NO_PRINT -#endif // !NO_PRINT diff --git a/users/cwebster2/cwebster2.c b/users/cwebster2/cwebster2.c deleted file mode 100644 index cfebc12c60..0000000000 --- a/users/cwebster2/cwebster2.c +++ /dev/null @@ -1,65 +0,0 @@ -/* Copyright 2020 Casey Webster - * - * 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 . - */ -#include "cwebster2.h" - -userspace_config_t userspace_config; - -__attribute__((weak)) void matrix_scan_keymap(void) {} - -void matrix_scan_user(void) { - static bool has_ran_yet; - if (!has_ran_yet) { - has_ran_yet = true; - startup_user(); - } - - matrix_scan_keymap(); -} - -void keyboard_post_init_rgb(void) { -#if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_STARTUP_ANIMATION) - /*if (userspace_config.rgb_layer_change) { rgblight_enable_noeeprom(); }*/ - /*if (rgblight_config.enable) {*/ - /*layer_state_set_user(layer_state);*/ - /*uint16_t old_hue = rgblight_config.hue;*/ - uint16_t old_hue = 170; - rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); - for (uint16_t i = 255; i > 0; i--) { - rgblight_sethsv_noeeprom( ( i + old_hue) % 255, 255, 255); - matrix_scan(); - wait_ms(10); - } - /*}*/ -#endif - /*layer_state_set_user(layer_state);*/ -} - -__attribute__((weak)) void eeconfig_init_keymap(void) {} - -void eeconfig_init_user(void) { - userspace_config.raw = 0; - userspace_config.rgb_layer_change = true; - eeconfig_update_user(userspace_config.raw); - eeconfig_init_keymap(); - keyboard_init(); -} - -bool hasAllBitsInMask(uint8_t value, uint8_t mask) { - value &= 0xF; - mask &= 0xF; - - return (value & mask) == mask; -} diff --git a/users/cwebster2/cwebster2.h b/users/cwebster2/cwebster2.h deleted file mode 100644 index 3d315d6740..0000000000 --- a/users/cwebster2/cwebster2.h +++ /dev/null @@ -1,51 +0,0 @@ -/* Copyright 2020 Casey Webster - * - * 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 . - */ -#pragma once - -#include "my_miryoku.h" -#include "keycodes.h" -#include "eeprom.h" - -#define LAYOUT_kyria_wrapper(...) LAYOUT(__VA_ARGS__) -#define LAYOUT_zen_wrapper(...) LAYOUT(__VA_ARGS__) - -enum userspace_layers { - _COLEMAK = 0, - _QWERTY, - _GAME, - _FN, - _SYMBOLS, - _NUM, - _NAV, - _MOUSE, - _MEDIA, - __LAST -}; - -void keyboard_post_init_rgb(void); -void matrix_scan_keymap(void); -void eeconfig_init_keymap(void); -bool hasAllBitsInMask(uint8_t value, uint8_t mask); - - -typedef union { - uint32_t raw; - struct { - bool rgb_layer_change :1; - }; -} userspace_config_t; - -extern userspace_config_t userspace_config; diff --git a/users/cwebster2/keycodes.c b/users/cwebster2/keycodes.c deleted file mode 100644 index f7eb6ad8df..0000000000 --- a/users/cwebster2/keycodes.c +++ /dev/null @@ -1,54 +0,0 @@ -/* Copyright 2020 Casey Webster - * - * 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 . - */ -#include "keycodes.h" - -__attribute__((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; } - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - static uint16_t my_colon_timer; - - switch (keycode) { - case KC_LCCL: - if (record->event.pressed) { - my_colon_timer = timer_read(); - register_code(KC_LCTL); - } else { - unregister_code(KC_LCTL); - if (timer_elapsed(my_colon_timer) < TAPPING_TERM - 50) { - SEND_STRING(":"); - } - } - return false; - } - return process_record_keymap(keycode, record); -} - -uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case LSFT_T(KC_T): - case LSFT_T(KC_N): - return TAPPING_TERM - 50; - case LGUI_T(KC_A): - case LALT_T(KC_R): - case LCTL_T(KC_S): - case LCTL_T(KC_E): - case LALT_T(KC_I): - case LGUI_T(KC_O): - return TAPPING_TERM + 150; - default: - return TAPPING_TERM; - } -} diff --git a/users/cwebster2/keycodes.h b/users/cwebster2/keycodes.h deleted file mode 100644 index b6363d646e..0000000000 --- a/users/cwebster2/keycodes.h +++ /dev/null @@ -1,27 +0,0 @@ -/* Copyright 2020 Casey Webster - * - * 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 . - */ -#pragma once - -#include QMK_KEYBOARD_H - -enum userspace_custom_keycodes { - KC_LCCL = SAFE_RANGE, - NEW_SAFE_RANGE -}; - -#define KC_CTLBS CTL_T(KC_BSPC) -#define KC_ALTCL LALT_T(KC_CAPS) -#define KC_LOCK LGUI(LCTL(KC_L)) diff --git a/users/cwebster2/my_miryoku.h b/users/cwebster2/my_miryoku.h deleted file mode 100644 index c4b4b59a1d..0000000000 --- a/users/cwebster2/my_miryoku.h +++ /dev/null @@ -1,77 +0,0 @@ -/* Copyright 2020 Casey Webster - * - * 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 . - */ -#pragma once - -#define _______QWERTY_L1______ KC_T, KC_Q, KC_W, KC_E, KC_R -#define _______QWERTY_L2______ KC_G, KC_A, KC_S, KC_D, KC_F -#define _______QWERTY_L3______ KC_B, KC_Z, KC_X, KC_C, KC_V -#define _______QWERTY_R1______ KC_Y, KC_U, KC_I, KC_O, KC_P -#define _______QWERTY_R2______ KC_H, KC_J, KC_K, KC_L, KC_SCLN -#define _______QWERTY_R3______ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH - -#define _______COLEMAK_L1_____ KC_Q, KC_W, KC_F, KC_P, KC_B -#define _______COLEMAK_L2_____ LGUI_T(KC_A), LALT_T(KC_R), LCTL_T(KC_S), LSFT_T(KC_T), KC_G -#define _______COLEMAK_L3_____ KC_Z, KC_X, KC_C, KC_D, KC_V -#define _______COLEMAK_R1_____ KC_J, KC_L, KC_U, KC_Y, KC_QUOT -#define _______COLEMAK_R2_____ KC_M, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_I), LGUI_T(KC_O) -#define _______COLEMAK_R3_____ KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH - -#define _______THUMBS_L_______ LT(_MOUSE,KC_ESC), LT(_NAV,KC_SPC), LT(_MEDIA, KC_TAB) -#define _______THUMBS_R_______ LT(_FN, KC_ENT), LT(_NUM,KC_BSPC), LT(_SYMBOLS,KC_DEL) - -#define _______NAKED_R___T____ KC_ENT, KC_BSPC, KC_DEL -#define _______NAKED_L___T____ KC_ESC, KC_SPC, KC_TAB - -#define _______INACTIVE_R1____ KC_LOCK, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT -#define _______INACTIVE_R2____ KC_TRNS, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI -#define _______INACTIVE_R3____ KC_TRNS, KC_TRNS, KC_TRNS, KC_RALT, KC_TRNS - -#define _______INACTIVE_L1____ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LOCK -#define _______INACTIVE_L2____ KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, KC_TRNS -#define _______INACTIVE_L3____ KC_TRNS, KC_RALT, KC_LEFT, KC_RGHT, KC_TRNS - -#define _______INACTIVE__T____ KC_TRNS, KC_TRNS, KC_TRNS - - -#define _______SYM______L1____ KC_RCBR, KC_AMPR, KC_ASTR, KC_LPRN, KC_LCBR -#define _______SYM______L2____ KC_COLN, KC_DLR, KC_PERC, KC_CIRC, KC_PLUS -#define _______SYM______L3____ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_PIPE -#define _______SYM_______T____ KC_LPRN, KC_RPRN, KC_UNDS - -#define _______NUM______L1____ KC_RBRC, KC_7, KC_8, KC_9, KC_LBRC -#define _______NUM______L2____ KC_SCLN, KC_4, KC_5, KC_6, KC_EQL -#define _______NUM______L3____ KC_GRV, KC_1, KC_2, KC_3, KC_BSLS -#define _______NUM_______T____ KC_DOT, KC_0, KC_MINS - -#define _______FN_______L1____ KC_F12, KC_F7, KC_F8, KC_F9, KC_SYRQ -#define _______FN_______L2____ KC_F11, KC_F4, KC_F5, KC_F6, KC_TRNS -#define _______FN_______L3____ KC_F10, KC_F1, KC_F2, KC_F3, KC_PAUSE -#define _______FN________T____ KC_MENU, KC_SPC, KC_TAB - -#define _______NAV______R1____ KC_UNDO, KC_CUT, KC_COPY, KC_PSTE, KC_AGIN -#define _______NAV______R2____ KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_CAPS -#define _______NAV______R3____ KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_INS -#define _______NAV_______T____ KC_ENT, KC_BSPC, KC_DEL - -#define _______MEDIA____R1____ RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI -#define _______MEDIA____R2____ KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, KC_TRNS -#define _______MEDIA____R3____ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS -#define _______MEDIA_____T____ KC_MSTP, KC_MPLY, KC_MUTE - -#define _______MOUSE____R1____ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS -#define _______MOUSE____R2____ KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_TRNS -#define _______MOUSE____R3____ KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, KC_TRNS -#define _______MOUSE_____T____ KC_BTN1, KC_BTN3, KC_BTN2 diff --git a/users/cwebster2/rules.mk b/users/cwebster2/rules.mk deleted file mode 100644 index 3aa4d68f35..0000000000 --- a/users/cwebster2/rules.mk +++ /dev/null @@ -1,13 +0,0 @@ -AUTO_SHIFT_ENABLE = no # Enable autoshift -MOUSEKEY_ENABLE = yes -EXTRAKEY_ENABLE = yes -CONSOLE_ENABLE = no -BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite -GRAVE_ESC_ENABLE = no -CONSOLE_ENABLE = no -SPACE_CADET_ENABLE = no -GRAVE_ESC_ENABLE = no -LTO_ENABLE = yes - -SRC += cwebster2.c -SRC += keycodes.c diff --git a/users/d4mation/config.h b/users/d4mation/config.h deleted file mode 100644 index 3140a036f7..0000000000 --- a/users/d4mation/config.h +++ /dev/null @@ -1 +0,0 @@ -#define FORCE_NKRO \ No newline at end of file diff --git a/users/d4mation/d4mation.c b/users/d4mation/d4mation.c deleted file mode 100644 index 5d1092cd72..0000000000 --- a/users/d4mation/d4mation.c +++ /dev/null @@ -1,37 +0,0 @@ -#include "d4mation.h" - -__attribute__ ((weak)) -bool process_record_keymap( uint16_t keycode, keyrecord_t *record ) { - /* If you want macros specific to your keymap, you need to define this function in your keymap */ - return true; -} - -__attribute__ ((weak)) -void matrix_init_keymap(void) { - /* If you want a matrix init specific to your keymap, you need to define this function in your keymap */ -} - -__attribute__ ((weak)) -void matrix_scan_keymap(void) { - /* If you want a matrix scan specific to your keymap, you need to define this function in your keymap */ -} - -__attribute__((weak)) -void eeconfig_init_keymap( void ) {} - -/* process_record_user() is called in macros.c */ - -void matrix_init_user( void ) { - matrix_init_keymap(); -} - -void matrix_scan_user( void ) { - matrix_scan_keymap(); -} - -void eeconfig_init_user( void ) { - - eeconfig_init_keymap(); - keyboard_init(); - -} \ No newline at end of file diff --git a/users/d4mation/d4mation.h b/users/d4mation/d4mation.h deleted file mode 100644 index 94c63526db..0000000000 --- a/users/d4mation/d4mation.h +++ /dev/null @@ -1,17 +0,0 @@ -#pragma once - -#include "quantum.h" - -#ifdef UNICODE_ENABLE -#include "macros.h" -#endif - -#ifdef TAP_DANCE_ENABLE -#include "tap-dance.h" -#endif - -bool process_record_keymap( uint16_t keycode, keyrecord_t *record ); - -void matrix_init_keymap( void ); - -void matrix_scan_keymap( void ); \ No newline at end of file diff --git a/users/d4mation/macros.c b/users/d4mation/macros.c deleted file mode 100644 index a8ca119b12..0000000000 --- a/users/d4mation/macros.c +++ /dev/null @@ -1,160 +0,0 @@ -#include "d4mation.h" -#include "tap-hold.h" -#include "zalgo.h" -#include "macros.h" - -bool zalgo_enabled = false; - -bool process_record_user( uint16_t keycode, keyrecord_t *record ) { - - switch ( keycode ) { - - case _GRAVE_ESC: - - /* Send ` on Tap, Esc on Hold */ - tap_or_hold( record, KC_GRAVE, KC_ESC ); - - return false; - break; - - case PHPOPEN: - - if ( record->event.pressed ) { - - tap_code16( S( KC_COMMA ) ); - tap_code16( S( KC_SLASH ) ); - - tap_code( KC_P ); - tap_code( KC_H ); - tap_code( KC_P ); - - } - - return false; - break; - - case PHPCLSE: - - if ( record->event.pressed ) { - tap_code16( S( KC_SLASH ) ); - tap_code16( S( KC_DOT ) ); - } - - return false; - break; - - #ifdef UNICODE_ENABLE - - case AMENO: - - if ( record->event.pressed ) { - - send_unicode_string( "āžž ãĪ ◕_◕ āž―ãĪ" ); - - } - - return false; - break; - - case MAGIC: - - if ( record->event.pressed ) { - - send_unicode_string( "(âˆĐ ͥ° ͜ʖ ͥ°)⊃━☆ïūŸ. *" ); - - } - - return false; - break; - - case LENNY: - - if ( record->event.pressed ) { - - send_unicode_string( "( ͥ° ͜ʖ ͥ°)" ); - - } - - return false; - break; - - case DISFACE: - - if ( record->event.pressed ) { - send_unicode_string( "āē _āē " ); - } - - return false; - break; - - case TFLIP: - - if ( record->event.pressed ) { - - send_unicode_string( "(â•Ŋ°□°)â•Ŋïļĩâ”ŧ━â”ŧ" ); - - } - - return false; - break; - - case TPUT: - - if ( record->event.pressed ) { - - send_unicode_string( "┮──┮ ノ( ゜-゜ノ)" ); - - } - - return false; - break; - - case SHRUG: - - if ( record->event.pressed ) { - - send_unicode_string( "ÂŊ\\_(ツ)_/ÂŊ" ); - - } - - return false; - break; - - case ZALGO: /* Toggles Zalgo Text mode */ - - if ( record->event.pressed ) { - zalgo_enabled = ! zalgo_enabled; - } - - return false; - break; - - #endif - - default: - - #ifdef UNICODE_ENABLE - - if ( zalgo_enabled ) { - - if ( keycode < KC_A || ( keycode > KC_0 && keycode < KC_MINUS ) || keycode > KC_SLASH ) { - process_record_keymap( keycode, record ); - return true; - } - - if ( record->event.pressed ) { - zalgo_text( keycode ); - } - - return false; - } - - #endif - - break; - } - - process_record_keymap( keycode, record ); - return true; - -}; \ No newline at end of file diff --git a/users/d4mation/macros.h b/users/d4mation/macros.h deleted file mode 100644 index e69d30dec2..0000000000 --- a/users/d4mation/macros.h +++ /dev/null @@ -1,23 +0,0 @@ -#pragma once - -#include "quantum.h" -#include "tap-hold.h" -#include "zalgo.h" - -#define SCRGB LCTL( LSFT( LGUI( KC_4 ) ) ) /* Mac Screen Area Grab shortcut (Puts into Clipboard) */ -#define SLEEP LALT( LGUI( KC_SYSTEM_POWER ) ) /* Instant sleep on Mac, rather than having to hold down the button */ - -enum custom_keycodes { - _GRAVE_ESC = SAFE_RANGE, /* Prefixed with underscore to prevent conflicts */ - PHPOPEN, /* */ - AMENO, - MAGIC, - LENNY, - DISFACE, - TFLIP, - TPUT, - SHRUG, - ZALGO, - NEW_SAFE_RANGE -}; \ No newline at end of file diff --git a/users/d4mation/rules.mk b/users/d4mation/rules.mk deleted file mode 100644 index f677721b42..0000000000 --- a/users/d4mation/rules.mk +++ /dev/null @@ -1,15 +0,0 @@ -SRC += d4mation.c \ - tap-hold.c \ - macros.c - -BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite -LTO_ENABLE = yes -MOUSEKEY_ENABLE = no - -ifeq ($(strip $(UNICODE_ENABLE)), yes) - SRC += zalgo.c -endif - -ifeq ($(strip $(TAP_DANCE_ENABLE)), yes) - SRC += tap-dance.c -endif \ No newline at end of file diff --git a/users/d4mation/tap-dance.c b/users/d4mation/tap-dance.c deleted file mode 100644 index 928a932611..0000000000 --- a/users/d4mation/tap-dance.c +++ /dev/null @@ -1,6 +0,0 @@ -#include "tap-dance.h" - -tap_dance_action_t tap_dance_actions[] = { - /* Tap once/hold for Shift, tap twice for Caps Lock */ - [SHIFT_CAPS] = ACTION_TAP_DANCE_DOUBLE( KC_LSFT, KC_CAPS ) -}; \ No newline at end of file diff --git a/users/d4mation/tap-dance.h b/users/d4mation/tap-dance.h deleted file mode 100644 index 0087c4a6e7..0000000000 --- a/users/d4mation/tap-dance.h +++ /dev/null @@ -1,7 +0,0 @@ -#pragma once - -#include "quantum.h" - -enum tap_dance { - SHIFT_CAPS = 0 -}; \ No newline at end of file diff --git a/users/d4mation/tap-hold.c b/users/d4mation/tap-hold.c deleted file mode 100644 index 0c5119f995..0000000000 --- a/users/d4mation/tap-hold.c +++ /dev/null @@ -1,28 +0,0 @@ -#include "tap-hold.h" - -#ifndef TAP_HOLD_TIME -#define TAP_HOLD_TIME 200 -#endif - -uint16_t tap_hold_timer; - -void tap_or_hold( keyrecord_t *record, uint16_t tap, uint16_t hold ) { - - if ( record->event.pressed ) { - tap_hold_timer = timer_read(); - } else { - - if ( tap_hold_timer && - timer_elapsed( tap_hold_timer ) > TAP_HOLD_TIME ) { - /* Held down then released */ - tap_code( hold ); - } else { - /* Quickly Tapped */ - tap_code( tap ); - } - - tap_hold_timer = 0; - - } - -} \ No newline at end of file diff --git a/users/d4mation/tap-hold.h b/users/d4mation/tap-hold.h deleted file mode 100644 index 52dc0830f8..0000000000 --- a/users/d4mation/tap-hold.h +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once - -#include "quantum.h" - -void tap_or_hold( keyrecord_t *record, uint16_t tap, uint16_t hold ); \ No newline at end of file diff --git a/users/d4mation/zalgo.c b/users/d4mation/zalgo.c deleted file mode 100644 index 3a1688e053..0000000000 --- a/users/d4mation/zalgo.c +++ /dev/null @@ -1,21 +0,0 @@ -#include "zalgo.h" - -void zalgo_text( uint16_t keycode ) { - - tap_code( keycode ); - - int number = ( rand() % ( 8 + 1 - 2 ) ) + 2; - unsigned int index; - - unicode_input_start(); - - for ( index = 0; index < number; index++ ) { - - uint16_t hex = ( rand() % ( 0x036F + 1 - 0x0300 ) ) + 0x0300; - register_hex( hex ); - - } - - unicode_input_finish(); - -} \ No newline at end of file diff --git a/users/d4mation/zalgo.h b/users/d4mation/zalgo.h deleted file mode 100644 index f59fc035b9..0000000000 --- a/users/d4mation/zalgo.h +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once - -#include "quantum.h" - -void zalgo_text( uint16_t keycode ); \ No newline at end of file diff --git a/users/danielo515/alt_tab.c b/users/danielo515/alt_tab.c deleted file mode 100644 index 1602ee6fb2..0000000000 --- a/users/danielo515/alt_tab.c +++ /dev/null @@ -1,38 +0,0 @@ -#include "danielo515.h" -#include "alt_tab.h" - -bool altPressed = false; -__attribute__((weak)) void alt_tab_activated(void){}; -__attribute__((weak)) void alt_tab_deactivated(void){}; -extern bool onMac; - -// =============== ALT_TAB single key handling -bool process_alt_tab(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case ALT_TAB: - if (!record->event.pressed) { - return false; - } - if (altPressed) { - tap_code(KC_TAB); - } else { - altPressed = true; - onMac ? register_code(KC_LGUI) : register_code(KC_LALT); - tap_code(KC_TAB); - alt_tab_activated(); - } - // avoid alt releasing if the key is of movement - case KC_RIGHT ... KC_UP: - if (altPressed) { - return true; // yes QMK, do your stuff - } - } - // Reset sticky alt tab when any other key is pressed - if (altPressed) { - onMac ? unregister_code(KC_LGUI) : unregister_code(KC_LALT); - altPressed = false; - alt_tab_deactivated(); - return false; - } - return true; -}; diff --git a/users/danielo515/alt_tab.h b/users/danielo515/alt_tab.h deleted file mode 100644 index f84350c298..0000000000 --- a/users/danielo515/alt_tab.h +++ /dev/null @@ -1,4 +0,0 @@ -#pragma once -#include "quantum.h" - -bool process_alt_tab(uint16_t keycode, keyrecord_t *record); diff --git a/users/danielo515/combo.c b/users/danielo515/combo.c deleted file mode 100644 index dae53f6e85..0000000000 --- a/users/danielo515/combo.c +++ /dev/null @@ -1,44 +0,0 @@ -#include "combo.h" - -enum combos { - JK_ESC, - YU_COM, - UI_COM, - IO_COM, - QW_COM, - DOT_SLS, - COM_DOT, - M_COMM, - N_M, - OP_COM, - M_CM_DOT, -}; - -const uint16_t PROGMEM ui_combo[] = {KC_U, KC_I, COMBO_END}; -const uint16_t PROGMEM jk_combo[] = {KC_J, KC_K, COMBO_END}; -const uint16_t PROGMEM yu_combo[] = {KC_Y, KC_U, COMBO_END}; -const uint16_t PROGMEM io_combo[] = {KC_I, KC_O, COMBO_END}; -const uint16_t PROGMEM qw_combo[] = {KC_Q, KC_W, COMBO_END}; -const uint16_t PROGMEM dot_sls[] = {KC_DOT, KC_SLSH, COMBO_END}; -const uint16_t PROGMEM com_dot[] = {KC_COMMA, KC_DOT, COMBO_END}; -const uint16_t PROGMEM m_comm[] = {KC_M, KC_COMMA, COMBO_END}; -const uint16_t PROGMEM n_m[] = {KC_N, KC_M, COMBO_END}; -const uint16_t PROGMEM o_p_combo[] = {KC_O, KC_P, COMBO_END}; -const uint16_t PROGMEM m_cm_dot_combo[] = {KC_M, KC_COMMA, KC_DOT, COMBO_END}; - -combo_t key_combos[] = { - [JK_ESC] = COMBO(jk_combo, KC_ESC), - [YU_COM] = COMBO(yu_combo, KC_AMPR), - [UI_COM] = COMBO(ui_combo, KC_CIRC), - [IO_COM] = COMBO(io_combo, KC_TILD), - [DOT_SLS] = COMBO(dot_sls, KC_EXLM), - [COM_DOT] = COMBO(com_dot, KC_QUES), - [N_M] = COMBO(n_m, KC_DLR), - [OP_COM] = COMBO(o_p_combo, KC_HASH), - // m + , = { - [M_COMM] = COMBO(m_comm, KC_LCBR), - // m + , + . = } - // [M_CM_DOT] = COMBO(m_cm_dot_combo, KC_RCBR), - // Right hand side combos - [QW_COM] = COMBO(qw_combo, KC_AT), -}; diff --git a/users/danielo515/combo.h b/users/danielo515/combo.h deleted file mode 100644 index 010d4b1383..0000000000 --- a/users/danielo515/combo.h +++ /dev/null @@ -1,2 +0,0 @@ -#pragma once -#include "quantum.h" diff --git a/users/danielo515/config.h b/users/danielo515/config.h deleted file mode 100644 index c5f9b08389..0000000000 --- a/users/danielo515/config.h +++ /dev/null @@ -1,9 +0,0 @@ -#pragma once - -#if defined(COMBO_ENABLE) -# define COMBO_TERM 25 -#endif // !COMBO_ENABLE -// Timeout settings for leader key -#undef LEADER_TIMEOUT -#define LEADER_TIMEOUT 350 -#define LEADER_PER_KEY_TIMING diff --git a/users/danielo515/danielo515.c b/users/danielo515/danielo515.c deleted file mode 100644 index aa33f55d66..0000000000 --- a/users/danielo515/danielo515.c +++ /dev/null @@ -1,124 +0,0 @@ -#include "danielo515.h" - -bool onMac = true; - -//**************** LEADER *********************// -#ifdef LEADER_ENABLE -void leader_start_user(vodi) { -# ifdef RGBLIGHT_ENABLE - rgblight_setrgb_range(5, 100, 199, 10, 15); -# endif -} - -void leader_end_user() { - if (leader_sequence_one_key(KC_T)) { - SEND_STRING("``" SS_TAP(X_LEFT)); - } - // Triple ticks - if (leader_sequence_two_keys(KC_T, KC_T)) { - SEND_STRING("```" SS_TAP(X_ENTER) SS_TAP(X_ENTER) "```" SS_TAP(X_UP)); - } - // ==== International spanish accent vowels ==== - if (leader_sequence_one_key(KC_A)) { - SEND_STRING(SS_LALT("e") "a"); - } - if (leader_sequence_one_key(KC_E)) { - SEND_STRING(SS_LALT("e") "e"); - } - if (leader_sequence_one_key(KC_I)) { - SEND_STRING(SS_LALT("e") "i"); - } - if (leader_sequence_one_key(KC_O)) { - SEND_STRING(SS_LALT("e") "o"); - } - if (leader_sequence_one_key(KC_U)) { - SEND_STRING(SS_LALT("e") "u"); - } - if (leader_sequence_one_key(KC_N)) { - SEND_STRING(SS_LALT("n") "n"); - } - // ==== MACROS === - if (leader_sequence_one_key(KC_G)) { - SEND_STRING(" | grep "); - } - if (leader_sequence_one_key(KC_K)) { - onMac ? SEND_STRING(SS_LCTL(" ")) : SEND_STRING(SS_LCTL("f")); - } - // vim delete all - if (leader_sequence_two_keys(KC_D, KC_G)) { - if (onMac) { - SEND_STRING(SS_LGUI("a") SS_TAP(X_D)); - } else { - SEND_STRING(SS_LCTL("a") SS_TAP(X_D)); - } - } - // tripe delete! - if (leader_sequence_one_key(KC_BACKSPACE)) { - SEND_STRING(SS_TAP(X_BACKSPACE) SS_TAP(X_BACKSPACE) SS_TAP(X_BACKSPACE)); - } - if (leader_sequence_two_keys(KC_P, KC_G)) { - SEND_STRING("ps -ef | grep "); - } - if (leader_sequence_two_keys(KC_J, KC_A)) { - SEND_STRING("() => {}" SS_TAP(X_LEFT) SS_TAP(X_LEFT) SS_TAP(X_LEFT) SS_TAP(X_LEFT) SS_TAP(X_LEFT) SS_TAP(X_LEFT) SS_TAP(X_LEFT)); - } - // this is a pain to type - if (leader_sequence_two_keys(KC_S, KC_S)) { - SEND_STRING("~/.ssh/ "); - } - if (leader_sequence_two_keys(KC_F, KC_T)) { - SEND_STRING("feat():" SS_TAP(X_LEFT) SS_TAP(X_LEFT)); - } - // ### LAYER CHANGE - if (leader_sequence_one_key(KC_1)) { - layer_on(1); - } - // control enter, because yes - if (leader_sequence_one_key(KC_H)) { - SEND_STRING(SS_DOWN(X_LCTL) SS_TAP(X_ENTER) SS_UP(X_LCTL)); - } - // paste all - if (leader_sequence_one_key(KC_P)) { - if (onMac) { - SEND_STRING(SS_LGUI("a") SS_LGUI("v")); - } else { - SEND_STRING(SS_LCTL("a") SS_LCTL("v")); - } - } - if (leader_sequence_three_keys(KC_M, KC_A, KC_C)) { - onMac = true; -# ifdef RGBLIGHT_ENABLE - rgblight_setrgb(255, 255, 255); -# endif - } - if (leader_sequence_three_keys(KC_W, KC_I, KC_N)) { - onMac = false; -# ifdef RGBLIGHT_ENABLE - rgblight_setrgb(255, 255, 0); -# endif - } - /* Copy all */ - if (leader_sequence_one_key(KC_Y)) { - if (onMac) { - SEND_STRING(SS_LGUI("a") SS_LGUI("c")); - } else { - SEND_STRING(SS_LCTL("a") SS_LCTL("c")); - } - } - // emoji bar - if (leader_sequence_two_keys(KC_E, KC_E)) { - SEND_STRING(SS_DOWN(X_LGUI) SS_LCTL(" ") SS_UP(X_LGUI)); - } - - if (leader_sequence_two_keys(KC_F, KC_F)) { - SEND_STRING("ps -ef | grep "); - } - if (leader_sequence_two_keys(KC_H, KC_T)) { - SEND_STRING("https://"); - } - -# ifdef RGBLIGHT_ENABLE - rgblight_setrgb_range(200, 200, 255, 10, 15); -# endif -} -#endif // LEADER diff --git a/users/danielo515/danielo515.h b/users/danielo515/danielo515.h deleted file mode 100644 index 715e8132fe..0000000000 --- a/users/danielo515/danielo515.h +++ /dev/null @@ -1,7 +0,0 @@ -#pragma once -#include "quantum.h" -#include "process_records.h" - -#ifdef TAP_DANCE_ENABLE - #include "tap_dance.h" -#endif diff --git a/users/danielo515/process_records.c b/users/danielo515/process_records.c deleted file mode 100644 index e75526af44..0000000000 --- a/users/danielo515/process_records.c +++ /dev/null @@ -1,197 +0,0 @@ -#include "process_records.h" -#include "alt_tab.h" -extern bool onMac; -// ======== INCREMENTAL MACROS STUFF ============= -#define MAX_INCREMENTAL_MACRO 20 -#define TAP_ROTATION_TIMEOUT 400 -uint16_t latest_kc = 0; -uint16_t latest_rotation = 0; -int key_count = 0; - -const char incremental_macros[][MAX_INCREMENTAL_MACRO] = {"String1" SS_TAP(X_HOME) "X-", "String2" SS_TAP(X_HOME)}; - -bool process_incremental_macro(uint16_t kc) { - if (kc < INC_MACROS_START || kc > INC_MACROS_END) { - return false; - } - int macro_idx = (int)(kc - INC_MACROS_START) - 1; - char tempstring[3] = {0}; - tempstring[0] = incremental_macros[macro_idx][key_count]; - // Special cases of SS_TAP SS_UP and SS_DOWN, they require two characters so get both once and skip on next iteration - if (tempstring[0] == '\1' || tempstring[0] == '\2' || tempstring[0] == '\3') { - tempstring[1] = incremental_macros[macro_idx][++key_count]; - } - if (tempstring[0] == '\0') { - key_count = 0; - } - send_string(tempstring); - - return true; -}; - -void refresh_incremental_macros(uint16_t kc) { - if (kc == latest_kc) { - if ((timer_elapsed(latest_rotation) > TAP_ROTATION_TIMEOUT) || (key_count >= MAX_INCREMENTAL_MACRO)) - key_count = 0; - else - key_count++; - } else { - key_count = 0; - latest_kc = kc; - } - - latest_rotation = timer_read(); -} -// Send control or GUI depending if we are on windows or mac -bool CMD(uint16_t kc) { - if (onMac) { - tap_code16(LGUI(kc)); - } else { - tap_code16(LCTL(kc)); - } - return false; -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - bool pressed = record->event.pressed; - if (pressed) { - refresh_incremental_macros(keycode); - if (process_incremental_macro(keycode)) { - return false; - } - switch (keycode) { - case MAC_TGL: - onMac = !onMac; - onMac ? SEND_STRING("On mac") : SEND_STRING("Not on MAC"); - return false; - } - } - - switch (keycode) { - case QWERTY: - if (record->event.pressed) { - layer_on(_QWERTY); - } - return false; - case LOWER: - if (record->event.pressed) { - layer_on(_LOWER); - } else { - layer_off(_LOWER); - } - return false; - case RAISE: - if (record->event.pressed) { - layer_on(_RAISE); - } else { - layer_off(_RAISE); - } - return false; - case ADJUST: - if (record->event.pressed) { - layer_on(_ADJUST); - } else { - layer_off(_ADJUST); - } - return false; - // == Macros START === - case IARROW: - if (record->event.pressed) SEND_STRING("<-"); - return false; - case ARROW: - if (record->event.pressed) SEND_STRING("->"); - return false; - case F_ARROW: - if (record->event.pressed) SEND_STRING("=>"); - return false; - case GREP: - if (record->event.pressed) SEND_STRING(" | grep "); - return false; - case CLN_EQ: - if (record->event.pressed) SEND_STRING(":="); - return false; - // == Macros END === - // == Multi Os START === - case KC_HOME: // make the home behave the same on OSX - if (record->event.pressed && onMac) { - SEND_STRING(SS_LCTL("a")); - return false; - } - case KC_END: // make the end behave the same on OSX - if (record->event.pressed && onMac) { - tap_code16(C(KC_E)); - return false; - } - case AC_A: // Accent ÃĄ - if (record->event.pressed) SEND_STRING(SS_LALT("e") "a"); - return false; - case AC_E: // Accent ÃĐ - if (record->event.pressed) SEND_STRING(SS_LALT("e") "e"); - return false; - case AC_I: // Accent í - if (record->event.pressed) SEND_STRING(SS_LALT("e") "i"); - return false; - case AC_O: // Accent Ãģ - if (record->event.pressed) SEND_STRING(SS_LALT("e") "o"); - return false; - case CUT: - if (record->event.pressed) return CMD(KC_X); - case COPY: - if (record->event.pressed) { - onMac ? SEND_STRING(SS_LGUI("c")) : SEND_STRING(SS_LCTL("c")); - } - return false; - case PASTE: - if (record->event.pressed) { - onMac ? SEND_STRING(SS_LGUI("v")) : SEND_STRING(SS_LCTL("v")); - } - return false; - case SAVE: - if (record->event.pressed) { - onMac ? SEND_STRING(SS_LGUI("s")) : SEND_STRING(SS_LCTL("s")); - } - return false; - case UNDO: - if (record->event.pressed) { - onMac ? SEND_STRING(SS_LGUI("z")) : SEND_STRING(SS_LCTL("z")); - } - return false; - case REDO: - if (record->event.pressed) { - onMac ? SEND_STRING(SS_LGUI(SS_LSFT("z"))) : SEND_STRING(SS_LCTL("y")); - } - return false; - case FIND: - if (record->event.pressed) { - onMac ? SEND_STRING(SS_LGUI("f")) : SEND_STRING(SS_LCTL("f")); - } - return false; - case WIN_TO_RIGHT: - if (record->event.pressed) { - onMac ? tap_code16(SGUI(A(KC_RIGHT))) : tap_code16(G(KC_RIGHT)); - } - return false; - case WIN_TO_LEFT: - if (record->event.pressed) { - onMac ? tap_code16(SGUI(A(KC_LEFT))) : tap_code16(G(KC_LEFT)); - } - return false; - case CHG_LAYOUT: - if (record->event.pressed) { - onMac ? SEND_STRING(SS_LCTL(" ")) : SEND_STRING(SS_LCTL("f")); - } - return false; - // == Multi Os END === -#ifdef RGBLIGHT_ENABLE - case RGB_SLD: - if (record->event.pressed) { - rgblight_mode(1); - } - return false; - break; - // First time alt + tab, and alt stays sticky. Next press we just send tab. Any other key releases the alt -#endif - } - // =============== ALT_TAB single key handling - return process_alt_tab(keycode, record); -}; diff --git a/users/danielo515/process_records.h b/users/danielo515/process_records.h deleted file mode 100644 index caa85e6292..0000000000 --- a/users/danielo515/process_records.h +++ /dev/null @@ -1,108 +0,0 @@ -#pragma once -#include "quantum.h" - -enum custom_keycodes { - RGB_SLD = SAFE_RANGE, - ALT_TAB, - QWERTY, - SYM, - NAV, - ADJUST, - // Macros - ARROW, - IARROW, - CLN_EQ, - F_ARROW, - GREP, - // Accented characters - AC_A, - AC_E, - AC_I, - AC_O, - // Custom multi-os key-codes - CUT, - COPY, - PASTE, - SAVE, - UNDO, - REDO, - CHG_LAYOUT, - FIND, - WIN_TO_LEFT, - WIN_TO_RIGHT, - // OTHER OLD STUFF - LOWER, - RAISE, - MAC_TGL, - INC_MACROS_START, - INC_MACROS_END, -}; - -//**************** KEYCODES *********************// -enum layers { - _QWERTY, - _SYMB, - _NAV, - _ADJUST, - _F, - _D, - _S, - _A, - _J, - _K, - // iris specific - TBD - _LOWER, - _RAISE, - _MACROS, - _SAFE_LAYER -}; - -//===== Function letters -#define FN_F LT(_F, KC_F) -#define FN_D LT(_D, KC_D) -#define FN_S LT(_S, KC_S) -#define FN_A LT(_A, KC_A) -#define FN_K LT(_K, KC_K) -#define FN_J LT(_J, KC_J) -#define KC_FN_D FN_D -#define KC_FN_S FN_S -#define KC_FN_F FN_F - -#define KC_MACROS OSL(_MACROS) - -#define KC_E_COLN LSFT(KC_DOT) -#define KC_E_EQL ES_EQL -#define KC_GUI OSM(MOD_RGUI) -#define KC_R_NUB S(KC_NUBS) -#define KC_E_LT KC_NUBS -#define KC_E_GT S(KC_NUBS) -#define KC_E_TILD ES_TILD -#define KC_E_MINS ES_MINS -#define KC_E_OVRR ES_MORD -#define KC_E_APOS ES_QUOT -#define KC_E_IEXL ES_IEXL -//========== Short hand for complex key combinations -#define WIN_LEFT_HALF LALT(LGUI(KC_LEFT)) -#define WIN_RIGHT_HALF LALT(LGUI(KC_RIGHT)) -#define ALL_WIN LCTL(KC_DOWN) -#define EXPOSE LGUI(KC_DOWN) -// ========== Modifiers!! -#define SHIFT OSM(MOD_LSFT) -//=============== tap for key hold for mod -#define HYPR_H HYPR_T(KC_H) -#define CTL_K RCTL_T(KC_K) -#define ALT_J ALT_T(KC_J) -#define SFT_MINS LSFT_T(KC_MINS) // tap - hold shift -#define CMD_MINS GUI_T(KC_MINS) // tap - hold cmd -#define CMD_QUOT GUI_T(KC_QUOTE) // tap ' hold cmd -#define SFT_QUOT LSFT_T(KC_QUOTE) // tap ' hold shift -//=============== Movement modified -#define CTL_LEFT LCTL(KC_LEFT) -#define CTL_RIGHT LCTL(KC_RIGHT) - -#define SFT_LEFT LSFT(KC_LEFT) -#define SFT_RIGHT LSFT(KC_RIGHT) -#define SHIFT_UP LSFT(KC_UP) -#define SHIFT_DWN LSFT(KC_DOWN) -#define SFT_LEFT_END LGUI(LSFT(KC_LEFT)) -#define SFT_RIGHT_END LGUI(LSFT(KC_RIGHT)) diff --git a/users/danielo515/readme.md b/users/danielo515/readme.md deleted file mode 100644 index 1343df9786..0000000000 --- a/users/danielo515/readme.md +++ /dev/null @@ -1,14 +0,0 @@ -Copyright 2017 Daniel Rodriguez @ danielo515 - -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 . diff --git a/users/danielo515/rules.mk b/users/danielo515/rules.mk deleted file mode 100644 index c77e2f0155..0000000000 --- a/users/danielo515/rules.mk +++ /dev/null @@ -1,11 +0,0 @@ -SRC += danielo515.c \ - alt_tab.c \ - process_records.c - -ifeq ($(strip $(COMBO_ENABLE)), yes) - SRC += combo.c -endif - -ifeq ($(strip $(TAP_DANCE_ENABLE)), yes) - SRC += tap_dance.c -endif diff --git a/users/danielo515/tap_dance.c b/users/danielo515/tap_dance.c deleted file mode 100644 index b69ee715d4..0000000000 --- a/users/danielo515/tap_dance.c +++ /dev/null @@ -1,139 +0,0 @@ -#include "tap_dance.h" -//**************** Definitions needed for quad function to work *********************// -#ifdef QUAD_DANCE -int cur_dance(tap_dance_state_t *state) -{ - if (state->count == 1) - { - //If count = 1, and it has been interrupted - it doesn't matter if it is pressed or not: Send SINGLE_TAP - if (state->interrupted || state->pressed == 0) - return SINGLE_TAP; - else - return SINGLE_HOLD; - } - //If count = 2, and it has been interrupted - assume that user is trying to type the letter associated - //with single tap. In example below, that means to send `xx` instead of `Escape`. - else if (state->count == 2) - { - if (state->interrupted) - return DOUBLE_SINGLE_TAP; - else if (state->pressed) - return DOUBLE_HOLD; - else - return DOUBLE_TAP; - } - else - return 6; //magic number. At some point this method will expand to work for more presses -}; - -//**************** Definitions needed for quad function to work *********************// -# endif - -// Slightly better tap dance double: interruption sends double single and any number over double sends the single that number of times -void tap_dance_pair_finished_safe(tap_dance_state_t *state, void *user_data) { - tap_dance_pair_t *pair = (tap_dance_pair_t *)user_data; - int count = state->count; - if (state->count == 2) { - if (state->interrupted){ - tap_code16(pair->kc1);register_code16 (pair->kc1); - state->count = 1; // Reset the counter as we are using the first key - } else register_code16 (pair->kc2); - return; - } - register_code16 (pair->kc1); - while(--count){ - unregister_code16(pair->kc1); - register_code16 (pair->kc1); - } -} - -void tap_dance_pair_reset_safe(tap_dance_state_t *state, void *user_data) { - tap_dance_pair_t *pair = (tap_dance_pair_t *)user_data; - if (state->count == 2) { - unregister_code16 (pair->kc2); - return; - } - unregister_code16(pair->kc1); -} - -//**************** Tap dance functions *********************// - -tap_dance_action_t tap_dance_actions[] = { - [COPY_CUT] = ACTION_TAP_DANCE_FN(td_copy_cut), - [PASTE_DANCE] = ACTION_TAP_DANCE_FN(td_paste), - [_TD_F1] = ACTION_TAP_DANCE_DOUBLE(KC_1, KC_F1), - [_TD_F2] = ACTION_TAP_DANCE_DOUBLE(KC_2, KC_F2), - [_TD_F3] = ACTION_TAP_DANCE_DOUBLE(KC_3, KC_F3), - [_TD_F4] = ACTION_TAP_DANCE_DOUBLE(KC_4, KC_F4), - [_TD_F5] = ACTION_TAP_DANCE_DOUBLE(KC_5, KC_F5), - [_TD_F6] = ACTION_TAP_DANCE_DOUBLE(KC_6, KC_F6), - [_TD_F7] = ACTION_TAP_DANCE_DOUBLE(KC_7, KC_F7), - [_TD_F8] = ACTION_TAP_DANCE_DOUBLE(KC_8, KC_F8), - [_TD_F9] = ACTION_TAP_DANCE_DOUBLE(KC_9, KC_F9), - [_TD_F10] = ACTION_TAP_DANCE_DOUBLE(KC_0, KC_F10), - [_TD_F11] = ACTION_TAP_DANCE_DOUBLE(KC_MINS, KC_F11), - [_TD_F12] = ACTION_TAP_DANCE_DOUBLE(KC_EQL, KC_F12), - [_TD_H_ENTER] = ACTION_TAP_DANCE_DOUBLE(KC_H, KC_ENT), - [_TD_CLN] = ACTION_TAP_DANCE_DOUBLE(KC_SCLN, KC_COLON), - [_TD_SLASH] = ACTION_TAP_DANCE_DOUBLE(KC_SLASH, KC_BACKSLASH), - // OLD ONES - [LEFT_HOME] = ACTION_TAP_DANCE_DOUBLE(KC_LEFT, KC_HOME), - [RGT_HOME] = ACTION_TAP_DANCE_DOUBLE_SAFE(KC_RGHT, KC_END), - [J_ENT] = ACTION_TAP_DANCE_DOUBLE_SAFE(KC_J,KC_ENT), - [H_MINS] = ACTION_TAP_DANCE_DOUBLE_SAFE(KC_H,KC_SLASH), - [_TD_COPY] = ACTION_TAP_DANCE_FN(dance_copy), - [_TD_CUT] = ACTION_TAP_DANCE_FN(dance_cut), - [_TD_PASTE] = ACTION_TAP_DANCE_FN(dance_paste) -}; - -void td_copy_cut(tap_dance_state_t *state, void *user_data) -{ - if (state->count == 2) - { - onMac ? SEND_STRING(SS_LGUI("x")) : SEND_STRING(SS_LCTL("x")); - } - else - { - onMac ? SEND_STRING(SS_LGUI("c")) : SEND_STRING(SS_LCTL("c")); - } - reset_tap_dance(state); -}; - -void td_paste(tap_dance_state_t *state, void *user_data) -{ - if (state->count == 2) - { - onMac ? SEND_STRING(SS_DOWN(X_RSFT) SS_LGUI("v") SS_UP(X_RSFT)) : SEND_STRING(SS_DOWN(X_RSFT) SS_LCTL("v") SS_UP(X_RSFT)); - } - else - { - onMac ? SEND_STRING(SS_LGUI("v")) : SEND_STRING(SS_LCTL("v")); - } - reset_tap_dance(state); -}; - -//===== The awesome tap dance for CUT, COPY and PASTE letters -void dance_copy (tap_dance_state_t *state, void *user_data) { - if (state->count == 1) { tap_code16(KC_C); } - else - if (state->interrupted) { tap_code16(KC_C);tap_code16(KC_C);} - else CMD(KC_C); - - reset_tap_dance (state); -} - -void dance_cut (tap_dance_state_t *state, void *user_data) { - if (state->count == 1) { tap_code16(KC_X); } - else { CMD(KC_X); } - reset_tap_dance (state); -} - -void dance_paste (tap_dance_state_t *state, void *user_data) { - if (state->count == 1) { - tap_code16(KC_V); - } - else { - CMD(KC_V); - } - reset_tap_dance (state); -} diff --git a/users/danielo515/tap_dance.h b/users/danielo515/tap_dance.h deleted file mode 100644 index aaf3864841..0000000000 --- a/users/danielo515/tap_dance.h +++ /dev/null @@ -1,81 +0,0 @@ -#include "quantum.h" -extern bool CMD(uint16_t kc); -extern bool onMac; - - -#define ACTION_TAP_DANCE_DOUBLE_SAFE(kc1, kc2) { \ - .fn = { NULL, tap_dance_pair_finished_safe, tap_dance_pair_reset_safe }, \ - .user_data = (void *)&((tap_dance_pair_t) { kc1, kc2 }), \ - } - -#ifdef QUAD_DANCE -//Enums used to clearly convey the state of the tap dance -enum { - SINGLE_TAP = 1, - SINGLE_HOLD = 2, - DOUBLE_TAP = 3, - DOUBLE_HOLD = 4, - DOUBLE_SINGLE_TAP = 5 //send SINGLE_TAP twice - NOT DOUBLE_TAP - // Add more enums here if you want for triple, quadruple, etc. -}; -int cur_dance (tap_dance_state_t *state); -# endif - -enum tap_dance { - COPY_CUT, - PASTE_DANCE, - _TD_F1, - _TD_F2, - _TD_F3, - _TD_F4, - _TD_F5, - _TD_F6, - _TD_F7, - _TD_F8, - _TD_F9, - _TD_F10, - _TD_F11, - _TD_F12, - _TD_H_ENTER, - _TD_CLN, - _TD_SLASH, - // old ones - LEFT_HOME, - J_ENT, - H_MINS, - RGT_HOME, - _TD_COPY, - _TD_CUT, - _TD_PASTE, -}; -void tap_dance_pair_finished_safe(tap_dance_state_t *state, void *user_data); -void tap_dance_pair_reset_safe(tap_dance_state_t *state, void *user_data); -void td_copy_cut (tap_dance_state_t *state, void *user_data); -void td_paste(tap_dance_state_t *state, void *user_data); -int cur_dance (tap_dance_state_t *state); -void dance_cut (tap_dance_state_t *state, void *user_data); -void dance_copy (tap_dance_state_t *state, void *user_data); -void dance_paste (tap_dance_state_t *state, void *user_data); - -// Ready to use Tap dance definitions, just put them on your layout -#define TD_COPY TD(_TD_COPY) -#define TD_CUT TD(_TD_CUT) -#define KC_TD_COPY TD(_TD_COPY) // Declarations for macros that add KC_ -#define KC_TD_CUT TD(_TD_CUT) -#define KC_TD_PASTE TD(_TD_PASTE) -#define KC_E_GRV ES_GRV -#define TD_F1 TD(_TD_F1) -#define TD_F2 TD(_TD_F2) -#define TD_F3 TD(_TD_F3) -#define TD_F4 TD(_TD_F4) -#define TD_F5 TD(_TD_F5) -#define TD_F6 TD(_TD_F6) -#define TD_F7 TD(_TD_F7) -#define TD_F8 TD(_TD_F8) -#define TD_F9 TD(_TD_F9) -#define TD_F10 TD(_TD_F10) -#define TD_F11 TD(_TD_F11) -#define TD_F12 TD(_TD_F12) -#define H_ENTER TD(_TD_H_ENTER) -#define TD_CLN TD(_TD_CLN) -#define TD_SLASH TD(_TD_SLASH) diff --git a/users/datagrok/README.md b/users/datagrok/README.md deleted file mode 100644 index 0d58c04e74..0000000000 --- a/users/datagrok/README.md +++ /dev/null @@ -1,63 +0,0 @@ -# datagrok's QMK user-space code - -## cdeq "comma dot exclamation question" - -This is a hack to place `question mark` on `shift-comma` and `exclamation mark` on `shift-period`. - -When using an operating system configured for a US/qwerty layout this replaces the angle brackets `<` `>` with `?` `!`. This helps on small keyboards to keep symbols for prose co-located in one layer, and symbols for programming in another. - -It's a "hack" because the "proper" way to accomplish this would be to edit the operating system's keymap. - -### setup - -in your `keymap.c`: - - #include "feature_cdeq.h" - - bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return process_record_cdeq(keycode, record); - } - -in your `rules.mk`, - - SRC += feature_cdeq.c - -### examples - -- atreus:datagrok -- bm43a:datagrok -- mitosis:datagrok - -## base layer selector - -Defines a keycode `KF_LAYO` to rotate between available default layers. - -`Shift`+`KF_LAYO` makes the currently selected one persistent across reboots. - -This is useful if you'd like your keyboard to support and toggle between QWERTY, Dvorak, Colemak, Workman, and other layouts while keeping a common arrangement of modifier and function keys. - -Since toggling layouts seems like something one does infrequently, I wanted to be able to operate this feature with a single key, instead of one for each layer like planck:default or bootmagic. - -### setup - -in your `keymap.c`: - - #define KF_LAYO SAFE_RANGE - #include "feature_default_layers_selector.h" - const uint8_t highest_base_layer = 4; - - bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return \ - process_record_save_default_layer(keycode, record) && \ - process_record_select_default_layer(keycode, record); - } - -in your `rules.mk`, - - SRC += feature_default_layers_selector.c - -### examples - -- atreus:datagrok -- bm43a:datagrok -- mitosis:datagrok diff --git a/users/datagrok/feature_cdeq.c b/users/datagrok/feature_cdeq.c deleted file mode 100644 index 50f784b2dd..0000000000 --- a/users/datagrok/feature_cdeq.c +++ /dev/null @@ -1,47 +0,0 @@ -// This is a hack to place on and on , when using an operating system configured for a -// US/qwerty layout. -// -// cdeq = "comma dot exclamation question" - -#include QMK_KEYBOARD_H - -bool comm_shifted = false; -bool ques_shifted = false; - -bool process_record_cdeq(uint16_t keycode, keyrecord_t *record) { - uint8_t shifted; - uint16_t s_keycode; - bool *k_shifted; - - switch (keycode) { - case KC_COMM: - s_keycode = KC_SLSH; - k_shifted = &comm_shifted; - break; - case KC_DOT: - s_keycode = KC_1; - k_shifted = &ques_shifted; - break; - default: - return true; - } - - shifted = get_mods() & (MOD_BIT(KC_LSFT)|MOD_BIT(KC_RSFT)); - - // Keydown. If shift is currently pressed, register its alternate keycode. - if (record->event.pressed && shifted) { - *k_shifted = true; - register_code(s_keycode); - return false; - // Keyup. If shift was pressed back when the key was pressed, unregister - // its alternate keycode. - } else if (!(record->event.pressed) && *k_shifted) { - *k_shifted = false; - unregister_code(s_keycode); - return false; - // Otherwise, behave as normal. - } else { - return true; - } -} diff --git a/users/datagrok/feature_cdeq.h b/users/datagrok/feature_cdeq.h deleted file mode 100644 index ff3509b4de..0000000000 --- a/users/datagrok/feature_cdeq.h +++ /dev/null @@ -1,2 +0,0 @@ -#include QMK_KEYBOARD_H -bool process_record_cdeq(uint16_t keycode, keyrecord_t *record); diff --git a/users/datagrok/feature_default_layers_selector.c b/users/datagrok/feature_default_layers_selector.c deleted file mode 100644 index 0ae1a894a0..0000000000 --- a/users/datagrok/feature_default_layers_selector.c +++ /dev/null @@ -1,46 +0,0 @@ -#include "feature_default_layers_selector.h" - -#ifdef AUDIO_ENABLE -#include "audio.h" -#ifdef DEFAULT_LAYER_SONGS -extern float default_layer_songs[][16][2]; -#endif -#endif - -bool process_record_save_default_layer(uint16_t keycode, keyrecord_t *record) { - -#if defined(AUDIO_ENABLE) - float saved_song[][2] = SONG(COIN_SOUND); -#endif - - if (!(keycode == KF_LAYO - && record->event.pressed - && get_mods() & (MOD_BIT(KC_LSFT)|MOD_BIT(KC_RSFT)))) { - return true; - } - - eeconfig_update_default_layer(default_layer_state); -#if defined(AUDIO_ENABLE) - PLAY_SONG(saved_song); -#endif - return false; -} - -bool process_record_select_default_layer(uint16_t keycode, keyrecord_t *record) { - if (!(keycode == KF_LAYO - && record->event.pressed)) { - return true; - } - if (!default_layer_state) { - default_layer_set(2); - } else { - default_layer_set( - (((1U<<(highest_base_layer+1))-1) & (default_layer_state<<1)) - | (default_layer_state>>highest_base_layer)); - } - led_set(host_keyboard_leds()); -#if defined(AUDIO_ENABLE) && defined(DEFAULT_LAYER_SONGS) - PLAY_SONG(default_layer_songs[get_highest_layer(default_layer_state)]); -#endif - return false; -} diff --git a/users/datagrok/feature_default_layers_selector.h b/users/datagrok/feature_default_layers_selector.h deleted file mode 100644 index 37d82de82b..0000000000 --- a/users/datagrok/feature_default_layers_selector.h +++ /dev/null @@ -1,69 +0,0 @@ -#include QMK_KEYBOARD_H - -/* - Define a keycode KF_LAYO to rotate between available default layers. - Shift+KF_LAYO makes the current one persistent. - - To use: - - in your keymap.c, define KF_LAYO so it does not conflict with anything else. - then include this header and set highest_base_layer. - - #define KF_LAYO SAFE_RANGE - #include "feature_default_layers_selector.h" - - const uint8_t highest_base_layer = 4; // the index - - and in your rules.mk, - - SRC += feature_default_layers_selector.c -*/ - -/* - See https://docs.qmk.fm/#/keymap for docs about layers including the concept - of "base" or "default" layers. - - This is broken into two functions so that: - - - If you don't want to store the default layer state in eeprom, don't call - process_record_save_default_layer. - - - If you have your own mechanism for setting the default layer state (to one - or multiple layers), do that instead of process_record_select_default_layer. - - If you call both functions, call process_record_save_default_layer first. - - The QMK docs seem to assume that you will have only one layer as your - default layer at any time, but the source code actually supports an arbitrary - default_layer_state (composition of layers) - - quantum has "set_single_persistent_default_layer" but that writes to eeprom - every time you change your default layer preference. i wanted a behavior - instead which lets you switch default layers all you want, then store the - current configuration once you're happy with it. that way if you get into an - unusable state you can just unplug and replug your keyboard to escape from it. - - this code assumes: - - 1. each default layer state that you would select among consists of a single - layer, which we will call a "base" layer. - - 2. all your "base" layers are stored contiguously at the bottom of your - keymaps[] stack, and there are no non-"base" layers mixed in. - - 3. you have a maximum of 8 "base" layers. that is, the highest base layer is - index 7. - - while 16 and 32 bit platforms might allow default_layer_state to include more - and higher-numbered layers, eeconfig_update_default_layer saves only the first - 8 bits of default_layer_state to eeprom. - -*/ - -#ifndef KF_LAYO -#define KF_LAYO SAFE_RANGE -#endif - -const uint8_t highest_base_layer; -bool process_record_save_default_layer(uint16_t keycode, keyrecord_t *record); -bool process_record_select_default_layer(uint16_t keycode, keyrecord_t *record); diff --git a/users/davidkristoffersen/davidkristoffersen.h b/users/davidkristoffersen/davidkristoffersen.h deleted file mode 100644 index 0485e00013..0000000000 --- a/users/davidkristoffersen/davidkristoffersen.h +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2022 David Kristoffersen (@davidkristoffersen) -// SPDX-License-Identifier: GPL-3.0-or-later - -#pragma once - -#include QMK_KEYBOARD_H - -#include "src/enums.h" - -#ifdef LAYER_NO -# include "macros/norwegian.h" -#endif - -#include "util/functions.h" - -#include "hardware/split_space.h" - -#include "macros/macros.h" diff --git a/users/davidkristoffersen/hardware/readme.md b/users/davidkristoffersen/hardware/readme.md deleted file mode 100644 index f31601812b..0000000000 --- a/users/davidkristoffersen/hardware/readme.md +++ /dev/null @@ -1,3 +0,0 @@ -# Hardware - -This directory contains hardware related macros. diff --git a/users/davidkristoffersen/hardware/split_space.c b/users/davidkristoffersen/hardware/split_space.c deleted file mode 100644 index da25343f3d..0000000000 --- a/users/davidkristoffersen/hardware/split_space.c +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2022 David Kristoffersen (@davidkristoffersen) -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "split_space.h" - -#ifdef SPLIT_SPACE -void handle_split_space(uint16_t keycode) { - // Disable modifiers when numpad is active - if (IS_LAYER_ON(NUMPAD)) clear_oneshot_mods(); - - if (keycode == KC_LSPC) { - // 2ng tap: Activate ctrl if shift is active - if (get_oneshot_mods() & MOD_MASK_SHIFT) { - clear_oneshot_mods(); - set_oneshot_mods(MOD_LCTL); - } - // 1st. tap: Activate shift if no modifier is active - else { - set_oneshot_mods(MOD_LSFT); - } - } -} -#endif diff --git a/users/davidkristoffersen/hardware/split_space.h b/users/davidkristoffersen/hardware/split_space.h deleted file mode 100644 index a9736b5ca1..0000000000 --- a/users/davidkristoffersen/hardware/split_space.h +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2022 David Kristoffersen (@davidkristoffersen) -// SPDX-License-Identifier: GPL-3.0-or-later - -#pragma once - -#include "davidkristoffersen.h" - -#define KC_RSPC KC_SPACE - -#ifdef SPLIT_SPACE -# define KC_LSPC LT(NUMPAD, KC_NO) -#else -# define KC_LSPC KC_SPACE -#endif - -void handle_split_space(uint16_t keycode); diff --git a/users/davidkristoffersen/macros/debug.c b/users/davidkristoffersen/macros/debug.c deleted file mode 100644 index 64fdc4a702..0000000000 --- a/users/davidkristoffersen/macros/debug.c +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2022 David Kristoffersen (@davidkristoffersen) -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "macros.h" - -// Replace key records with macros -bool handle_test(uint16_t keycode) { - switch (keycode) { - case KC_T0: { - // Test QK_MAKE command - SEND_STRING("qmk compile -kb " QMK_KEYBOARD " -km " QMK_KEYMAP); - break; - } - case KC_T1: - // Test ascii characters - SEND_STRING(" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"); - break; - case KC_T2: -#ifdef LAYER_NO - // Test other characters - tap_code16(NO_AE); - tap_code16(NO_OE); - tap_code16(NO_AA); - tap_code16(S(NO_AE)); - tap_code16(S(NO_OE)); - tap_code16(S(NO_AA)); -#endif - return false; - } - return true; -}; - -bool process_debug(uint16_t keycode, keyrecord_t* record) { - HANDLE_FALSE(handle_test(keycode)); - return true; -} diff --git a/users/davidkristoffersen/macros/language.c b/users/davidkristoffersen/macros/language.c deleted file mode 100644 index 9b6dca79ca..0000000000 --- a/users/davidkristoffersen/macros/language.c +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2022 David Kristoffersen (@davidkristoffersen) -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "macros.h" - -bool handle_language(uint16_t keycode) { -#ifdef LAYER_NO - // Handle conversion of English to Norwegian codes - uint16_t org_keycode = keycode; - keycode = get_norwegian_code(keycode); -#endif - -#ifndef NO_SPECIAL_SHIFT - // Handle conversion of special shift codes - if (get_mods() & MOD_MASK_SHIFT) { - uint16_t shifted_key = get_special_shifted_code(keycode); - if (shifted_key != keycode) { - // Tap shifted key while shift is disabled - unregister_code(KC_LSFT); - tap_code16(shifted_key); - register_code(KC_LSFT); - return false; - } - } -#endif - -#ifdef LAYER_NO - // Tap new language key - if (keycode != org_keycode) { - tap_code16(keycode); - return false; - } -#endif - return true; -} - -bool process_language(uint16_t keycode, keyrecord_t* record) { - HANDLE_FALSE(handle_language(keycode)); - return true; -} diff --git a/users/davidkristoffersen/macros/macros.c b/users/davidkristoffersen/macros/macros.c deleted file mode 100644 index 6d8c0b6f57..0000000000 --- a/users/davidkristoffersen/macros/macros.c +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2022 David Kristoffersen (@davidkristoffersen) -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "macros.h" - -// Prepend key records with macros -bool process_record_user(uint16_t keycode, keyrecord_t* record) { - if (record->event.pressed) { -#ifdef SPLIT_SPACE - handle_split_space(keycode, record); -#endif - HANDLE_FALSE(process_debug(keycode, record)); - HANDLE_FALSE(process_language(keycode, record)); - } - return true; -} diff --git a/users/davidkristoffersen/macros/macros.h b/users/davidkristoffersen/macros/macros.h deleted file mode 100644 index fb1e5c862c..0000000000 --- a/users/davidkristoffersen/macros/macros.h +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2022 David Kristoffersen (@davidkristoffersen) -// SPDX-License-Identifier: GPL-3.0-or-later - -#pragma once - -#include "davidkristoffersen.h" - -enum keycodes { - // Test keys - KC_T0 = SAFE_RANGE, - KC_T1, - KC_T2, - // Norwegian Æ, Ø, Å - KC_AE, - KC_OE, - KC_AA -}; - -bool process_debug(uint16_t keycode, keyrecord_t* record); -bool process_language(uint16_t keycode, keyrecord_t* record); - -// Prepend key records with macros -bool process_record_user(uint16_t keycode, keyrecord_t* record); diff --git a/users/davidkristoffersen/macros/norwegian.h b/users/davidkristoffersen/macros/norwegian.h deleted file mode 100644 index 575d1e9f2f..0000000000 --- a/users/davidkristoffersen/macros/norwegian.h +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2022 David Kristoffersen (@davidkristoffersen) -// SPDX-License-Identifier: GPL-3.0-or-later - -#pragma once - -#include "keymap_extras/keymap_norwegian.h" -#include "davidkristoffersen.h" - -// Better norwegian defines -#undef NO_LESS -#define NO_LESS KC_NUBS // < -#undef NO_GRTR -#define NO_GRTR S(NO_LESS) // > -#undef NO_AE -#define NO_AE KC_QUOT // Æ -#undef NO_OE -#define NO_OE KC_SCLN // Ø -#undef NO_AA -#define NO_AA KC_LBRC // Å diff --git a/users/davidkristoffersen/macros/readme.md b/users/davidkristoffersen/macros/readme.md deleted file mode 100644 index 7c074b2bb5..0000000000 --- a/users/davidkristoffersen/macros/readme.md +++ /dev/null @@ -1,3 +0,0 @@ -# Macros - -This directory contains any type of dynamic and static macros. diff --git a/users/davidkristoffersen/post_config.h b/users/davidkristoffersen/post_config.h deleted file mode 100644 index 3d1f5a93f4..0000000000 --- a/users/davidkristoffersen/post_config.h +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2022 David Kristoffersen (@davidkristoffersen) -// SPDX-License-Identifier: GPL-3.0-or-later - -#pragma once - -#ifndef LAYER_EN -# define LAYER_EN LAYER_DEFAULT -#endif diff --git a/users/davidkristoffersen/readme.md b/users/davidkristoffersen/readme.md deleted file mode 100644 index 20ff58003e..0000000000 --- a/users/davidkristoffersen/readme.md +++ /dev/null @@ -1,3 +0,0 @@ -# Overview - -This userspace contains all the utility functions and macros related to my keymaps. diff --git a/users/davidkristoffersen/rules.mk b/users/davidkristoffersen/rules.mk deleted file mode 100644 index 5901b68540..0000000000 --- a/users/davidkristoffersen/rules.mk +++ /dev/null @@ -1,12 +0,0 @@ -SRC += $(USER_PATH)/util/functions.c \ - $(USER_PATH)/hardware/split_space.c \ - $(USER_PATH)/macros/macros.c \ - $(USER_PATH)/macros/debug.c \ - $(USER_PATH)/macros/language.c - -# Firmware size optimizations -ifeq ($(strip $(SIZE_OPTIMIZE)), yes) - CONSOLE_ENABLE := no # 1646: Console for debug - AUDIO_ENABLE := no # 8682: Audio output on port C6 - LTO_ENABLE := yes # 2772: Link time optimization -endif diff --git a/users/davidkristoffersen/util/functions.c b/users/davidkristoffersen/util/functions.c deleted file mode 100644 index 3ab4ace2d6..0000000000 --- a/users/davidkristoffersen/util/functions.c +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright 2022 David Kristoffersen (@davidkristoffersen) -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "functions.h" - -#ifndef NO_SPECIAL_SHIFT -// Code set to swap struct -typedef struct code_set { - uint16_t pre; - uint16_t post; -} code_set_t; - -// Shift codes conversion struct -typedef struct shift_code { - int lang; - int size; - code_set_t* codes; -} shift_code_t; - -#ifdef LAYER_NO -code_set_t NO_SHIFT_CODES [] = { - {NO_QUOT, NO_DQUO}, - {NO_BSLS, NO_PIPE}, -}; -#endif - -code_set_t EN_SHIFT_CODES [] = { - {KC_COMM, KC_SCLN}, - {KC_DOT, KC_COLN}, -}; - -// Array of shift code conversions -const shift_code_t SHIFT_CODES [] = { -#ifdef LAYER_NO - {.lang = LAYER_NO, - .size = ARRAY_SIZE(NO_SHIFT_CODES), - .codes = NO_SHIFT_CODES}, -#endif - {.lang = LAYER_EN, - .size = ARRAY_SIZE(EN_SHIFT_CODES), - .codes = EN_SHIFT_CODES}, -}; -const int SHIFT_CODES_SIZE = ARRAY_SIZE(SHIFT_CODES); -#endif - -#ifdef LAYER_NO -// Array of English to Norwegian code translations -const code_set_t EN2NO_CODES [] = { - {KC_QUOT, NO_QUOT}, - {KC_MINS, NO_MINS}, - {KC_BSLS, NO_BSLS}, - {KC_LBRC, NO_LBRC}, - {KC_LCBR, NO_LCBR}, - {KC_LPRN, NO_LPRN}, - {KC_LT, NO_LESS}, - {KC_GT, NO_GRTR}, - {KC_RPRN, NO_RPRN}, - {KC_RCBR, NO_RCBR}, - {KC_RBRC, NO_RBRC}, - {KC_AMPR, NO_AMPR}, - {KC_EQL, NO_EQL}, - {KC_PLUS, NO_PLUS}, - {KC_ASTR, NO_ASTR}, - {KC_SLSH, NO_SLSH}, - {KC_TILD, NO_TILD}, - {KC_AE, NO_AE}, - {KC_OE, NO_OE}, - {KC_AA, NO_AA}, - {KC_QUES, NO_QUES}, - {KC_AT, NO_AT}, - {KC_CIRC, NO_CIRC}, - {KC_DLR, NO_DLR}, - {KC_GRV, NO_GRV} -}; -const int EN2NO_CODES_SIZE = ARRAY_SIZE(EN2NO_CODES); -#endif - -// Check if layer is an active default layer -bool is_default_on(int layer) { - return layer == LAYER_DEFAULT - ? true - : layer_state_cmp(default_layer_state, layer); -} - -#ifndef NO_SPECIAL_SHIFT -// Get special shifted code -uint16_t get_special_shifted_code(uint16_t keycode) { - for (int i = 0; i < SHIFT_CODES_SIZE; i++) { - if (IS_DEFAULT_OFF(SHIFT_CODES[i].lang)) continue; - for (int j = 0; j < SHIFT_CODES[i].size; j++) { - if (keycode == SHIFT_CODES[i].codes[j].pre) - return SHIFT_CODES[i].codes[j].post; - } - } - return keycode; -} -#endif - -#ifdef LAYER_NO -// Get language specific code -uint16_t get_norwegian_code(uint16_t keycode) { - if (IS_DEFAULT_ON(LAYER_NO)) { - for (int i = 0; i < EN2NO_CODES_SIZE; i++) { - if (keycode == EN2NO_CODES[i].pre) { - return EN2NO_CODES[i].post; - } - } - } - return keycode; -} -#endif diff --git a/users/davidkristoffersen/util/functions.h b/users/davidkristoffersen/util/functions.h deleted file mode 100644 index 5fef010694..0000000000 --- a/users/davidkristoffersen/util/functions.h +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2022 David Kristoffersen (@davidkristoffersen) -// SPDX-License-Identifier: GPL-3.0-or-later - -#pragma once - -#include "davidkristoffersen.h" - -// Default layer if none is specified -#define LAYER_DEFAULT -1 - -// Check if layer is an active default layer -#define IS_DEFAULT_ON(layer) is_default_on(layer) -// Check if layer is an inactive default layer -#define IS_DEFAULT_OFF(layer) !is_default_on(layer) - -// Return false if test equal false -#define HANDLE_FALSE(bool) if (!bool) return false; -// Printf-like functionality for send_string -#define SEND_VAR(str, ...) \ - do { \ - char var[128]; \ - sprintf(var, str, __VA_ARGS__); \ - send_string(var); \ - } while(0) - -// Get special shifted code -uint16_t get_special_shifted_code(uint16_t keycode); - -// Get language specific code -uint16_t get_norwegian_code(uint16_t keycode); diff --git a/users/davidkristoffersen/util/readme.md b/users/davidkristoffersen/util/readme.md deleted file mode 100644 index 90635f30e5..0000000000 --- a/users/davidkristoffersen/util/readme.md +++ /dev/null @@ -1,3 +0,0 @@ -# Utility - -This directory contains utility functions meant to assist the other files of the userspace. diff --git a/users/dennytom/chording_engine/README.md b/users/dennytom/chording_engine/README.md deleted file mode 100644 index 3610b190bf..0000000000 --- a/users/dennytom/chording_engine/README.md +++ /dev/null @@ -1,376 +0,0 @@ -# README - -## About - -This is a custom combo engine. I call it chording engine mostly to differentiate it from QMK's combos. It is useful even if you are not using chording as a main input method to replace combos. - -Why does this exist? Typing on tiny keyboards can be challenging and you will end up relying on dances and / or combos. Pure QMK combos can be insufficient as they do not really support overlapping combos. For example, if you define 3 combos `(KC_Q, KC_W)`, `(KC_Z, KC_X)` and `(KC_Q, KC_W, KC_Z, KC_X)` and press Q, W, Z and X at the same time, all three combos will activate. Steno engines (and g Board Industries' custom steno inspired engine) solve this, however, they don't allow for comfortable typing in the traditional way. The steno chord activates only when *all* keys are lifted and makes it difficult to implement some advanced features. This engine treats each chord independently to allow for more comfortable typing experience. - -## TOC - -- [README](#readme) - - [About](#about) - - [TOC](#toc) - - [Start here](#start-here) - - [Steps](#steps) - - [Features](#features) - - [Chords](#chords) - - [Tap-Dance](#tap-dance) - - [Pseudolayers](#pseudolayers) - - [Control chords](#control-chords) - - [Settings up JSON definition](#settings-up-json-definition) - - [Keyboard and engine parameters](#keyboard-and-engine-parameters) - - [Pseudolayers](#pseudolayers-1) - - [Supported keycodes](#supported-keycodes) - - [Leader Key](#leader-key) - - [Extra code](#extra-code) - - [Further details](#further-details) - - [Implementation](#implementation) - - [Internal keycodes](#internal-keycodes) - - [Chords](#chords-1) - - [Caveats](#caveats) - -## Start here - -This engine therefore uses python parser that translates a JSON definition of keyboard specific information and keymap definition and produces `keymap.c`. Every function on this keymap is a chord (combo). The resulting keymap file is long and I do not encourage you to edit it. All you should have to edit is the JSON file. To produce the keymap file, run - -```sh -./parser.py keymap_def.json keymap.c -``` - -To prepare the keymap JSON definition, you can use on of my keymaps as a starting point. I have on for butterstick and for georgi. There is also a JSON schema that has some examples and sane defaults. All details are explained in the next section. The parser tries to validate some of the things that the JSON schema can not. Finally there is a JSON in the tests folder that has at least one example of every feature. - -Watch out, you can not name your JSON file `keymap.json` if you place in the keymap folder. QMK creates `keymap.json` as a part of compilation process and if you already have one, it gets confused. - -## Steps - -When setting up a new keyboard, follow the steps: - -1. Make a new directory for your keymap as QMK's documentation describes. -2. Write your JSON. Name it anything but `keymap.json`. -3. Depending on the keyboard / keymap, create `rules.mk` (follow QMK's documentation and note that if the keyboard's `rules.mk` include custom source files, this is the place you can remove them). -4. Use my python parser to generate the `keymap.c`. Run it from the `/users/dennytom/chording_engine` directory as it is using relative paths to some extra files. -5. Follow QMK's documentation to compile and flash your firmware. - -## Features - -### Chords - -Once again, *everything* on this keymap is a chord. Even sending `KC_Q` is done by pressing a single key chord. Chord gets activated after all it's keys get pressed. Only the longest chord gets activated. The order of the pressed keys *does not matter*, only the fact they have been pressed within the same time frame. An active chord gets deactivated if *any* of it's keys gets depressed. To activate the same single chord again, *all* it's keys have to be depressed and pressed again. With a few exceptions chords are independent of each other. No matter if some chords are currently active and some not, others can be activated or deactivated without affecting each other's state. *If you press keys to belonging to multiple different, non-overlapping chords, all get activated in the order they are defined in the keymap.* - -### Tap-Dance - -To make it even stranger, all chords are technically tap-dance chords. They are relatively simple state machines that execute a specific function every time they change state. For simplicity and optimization purposes, there are a few prewritten functions that implement common features like "send a single key" or "lock". Any number of chords can be "in dance" at any given moment without affecting each other's state. Custom dances can be easily added. Check out the `state_machine.png` to see all the states any chord can be in. - -### Pseudolayers - -Only one QMK layer is used. Following the butterstick's default keymap's example, the chording engine is using pseudolayers. The main difference to QMK's layers is that only one pseudolayer can be active at each time (meaning you can not use `KC_TRANS`, I actually don't know what will happen if you do). Chords can be activated only if they are on the currently active pseudolayer. Chords that are currently active do not get deactivated if the pseudolayer changes and will deactivate if any of their keys gets depressed even no matter the current pseudolayer. Locked chords (see below) and chords on the `ALWAYS_ON` pseudolayer can be activated anytime. - -### Control chords - -The engine implements a number of ways of changing how chords behave: - -* **Lock**: Similarly to QMK's lock, the next chord activated after the Lock chord will not deactivate on release of any of its keys, it will deactivate when all its keys get pressed again. Any number of chords can be locked at the same time. To make sure a locked chord can be unlocked, it can activate no matter the current pseudolayer. A chord can be locked mid dance. -* **One shots**: Chords that send keycodes and chords that turn on pseudolayers can be one shots. If tapped, they will lock (stay active) until the next keycode gets sent, *not necessarily when the next chord gets activated*. If held, they will deactivate on release *even if no keycode got sent*. -* **Tap-Hold**: Also called key-layer dance and key-key dance. Either sends a defined keycode on tap and temporarily switches pseudolayer on hold *or* sends two different keycodes on tap and hold. -* **Command mode**: After getting activated for the first time, the keyboard switches to command mode. All *keycodes* that would get registered get buffered instead. After activating the Command mode chord for the second time, all buffered keycodes get released at the same time allowing for key combination that would be hard or impossible to press. The Command mode only affects keycodes. It is therefore possible to change pseudolayers or activate / deactivate other chords while in Command mode. While multiple Command mode chords can be defined, they would not be independent. The keyboard either is or is not in command mode and there is only one buffer. -* **Leader key**: Just like pure QMK's Leader key, this allows you to add functions that get executed if the Leader key and a specific sequence of keycodes gets registered in a predefined order in a short timeframe. For example `:wq` can send `Ctrl+S` and `Ctrl+W` in a quick succession. While multiple Leader keys can be defined, they all would access the same list of sequences. -* **Dynamic macro**: A sequence of keycodes can be recorded and stored in the RAM of the keyboard and replayed. - -## Settings up JSON definition - -The JSON definition has 3 main sections. The elements `keys`, `parameters` and `layers` teach the engine about the details of your keyboard and set its parameters. The elements `pseudolayers`, `leader_sequences` and `chord_sets` define your keymap. Finally, the elements `extra_code` and `extra_dependencies` allow you to include more code to extend the capabilities of the engine. - -### Keyboard and engine parameters - -I do not have experience with stenography, so the the steno keycodes are hard for me to remember. That is why the keymap is using new keycodes TOP1, TOP2, ... . - -```c - "keys": ["TOP1", "TOP2", "TOP3", ...] -``` - -You can name these however you like as long as they do not crash with QMK's keycodes. - -*The chording engine in it's current implementation can handle up to 64 keys. If you need to support more, contact me (email or u/DennyTom at Reddit).* - -All timings, maximum lengths for macros, command mode and leader function are defined in `keyboard_parameters` field. Almost all should be pretty self-explanatory. - -My keyboards are small, so I only use the engine, but you might want to use layers that combine chord-able keys and traditional QMK keys or layers with advanced keycodes, for example for stenography. The array `layers` defines all the parser needs to know: - -```json -"layers": [ - { - "type": "auto" - }, - { - "type": "manual", - "keycodes": ["KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", - "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P" - ] - }, - { - "type": "manual", - "keycodes": ["KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", - "BOT1", "BOT2", "BOT3", "BOT4", "BOT5", "BOT6", "BOT7", "BOT8", "BOT9", "BOT0"] - } - ] -``` - -This example defines 3 layers, one that is automatically populated with chording engine's internal keycodes, second that is populated with QMK's keycodes and third that uses both internal and QMK's keycodes. The layers do not have names, you have to access them with `TO(1)` and `TO(0)`. - -Some keyboards mangle the order of keycodes when registering them in the layers. For that fill up the `layout_function_name` with the name of function / macro. If your keyboard does not do it, leave that string empty. - -### Pseudolayers - -Array `pseudolayers` defines the keymap per pseudolayer. Each field has to contain the name for the layer and the list of chords. - -```JSON -"pseudolayers": [ - { - "name": "QWERTY", - "chords": [ - { - "type": "simple", - "keycode": "SPACE", - "chord": ["BOT1", "BOT0"] - }, - { - "type": "visual", - "keycode": "CLEAR_KB", - "chord": [ - "X", "", "", "", "", "", "", "", "", "X", - "X", "", "", "", "", "", "", "", "", "X", - ] - }, - { - "type": "visual_array", - "keys": ["TOP1", "TOP2", "TOP3"], - "dictionary": [ - ["X", "X", " ", "ESC"], - [" ", "X", "X", "TAB"], - ["X", "X", "X", "ENTER"] - ] - }, - { - "type": "chord_set", - "set": "rows", - "keycodes": [ - "Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", - "A", "S", "D", "F", "G", "H", "J", "K", "L", ";", - "Z", "X", "C", "V", "B", "N", "M", ",", ".", "/" - ] - } - ] - } -] -``` - -The array `chord` defines chords. You can either use simple chord and list all the keys that have to pressed at the same time, or use the visual chord and place `"X"` over keys that will be part of the chord. You can also use `visual_array` to define a number of chords in a visual way on a subset of keys defined in the `keys` array. Finally, you can use `chord_set` to define a number of chords following a pattern that was set in the `chord_sets` array in the root object like this: - -```json -"chord_sets": [ - { - "name": "rows", - "chords": [ - ["TOP1"], ["TOP2"], ["TOP3"], ["TOP4"], ["TOP5"], ["TOP6"], ["TOP7"], ["TOP8"], ["TOP9"], ["TOP0"] - ["TOP1", "BOT1"], ["TOP2", "BOT2"], ["TOP3", "BOT3"], ["TOP4", "BOT4"], ["TOP5", "BOT5"], ["TOP6", "BOT6"], ["TOP7", "BOT7"], ["TOP8", "BOT8"], ["TOP9", "BOT9"], ["TOP0", "BOT0"], - ["BOT1"], ["BOT2"], ["BOT3"], ["BOT4"], ["BOT5"], ["BOT6"], ["BOT7"], ["BOT8"], ["BOT9"], ["BOT0"] - ] - }, - { - "name": "cols", - "chords": [ - ["TOP1", "TOP2"], ["TOP2", "TOP3"], ["TOP3", "TOP4"], ["TOP4", "TOP5"], ["TOP5", "TOP6"], ["TOP6", "TOP7"], ["TOP7", "TOP8"], ["TOP8", "TOP9"], ["TOP9", "TOP0"], - ["TOP1", "TOP2", "BOT1", "BOT2"], ["TOP2", "TOP3", "BOT2", "BOT3"], ["TOP3", "TOP4", "BOT3", "BOT4"], ["TOP4", "TOP5", "BOT4", "BOT5"], ["TOP5", "TOP6", "BOT5", "BOT6"], ["TOP6", "TOP7", "BOT6", "BOT7"], ["TOP7", "TOP8", "BOT7", "BOT8"], ["TOP8", "TOP9", "BOT8", "BOT9"], ["TOP9", "TOP0", "BOT9", "BOT0"], - ["BOT1", "BOT2"], ["BOT2", "BOT3"], ["BOT3", "BOT4"], ["BOT4", "BOT5"], ["BOT5", "BOT6"], ["BOT6", "BOT7"], ["BOT7", "BOT8"], ["BOT8", "BOT9"], ["BOT9", "BOT00"], - ] - } -] -``` - - - -You might notice that the code tries to do a few clever things when parsing keycodes: - -* If the keycode would be just a character basic keycode, it tries to allow the use of shortcuts. `Q` will get replaced with `KC_Q`, `,` becomes `KC_COMMA`. This *should* work for all KC_ keycodes unless I missed some. -* `MO()` and `DF()` macros work the same way for pseudolayers as they would for layers in pure QMK. -* `O()` is a shortcut for `OSK()` or `OSL()`. -* `STR('...')` sends a string. Careful with quoting. -* Special chords like Command mode have their own codes like `CMD`. -* The empty strings get ignored. - -### Supported keycodes - -* **`X`** or **`KC_X`**: Send code `KC_X` just like a normal keyboard. - -* **`STR("X")`**: Send string "x" on each activation of the chord. Once again, watch out for quoting and escaping characters. If you want special characters (especially quotes) in your string, look up Python reference for string literals and experiment. Also, because of how the string gets parsed, it is not possible to use `(` in the string. - -* **`MO(X)`**: Temporary switch to pseudolayer `X`. Because only one pseudolayer can be active at any moment, this works by switching back to the pseudolayer the chord lives on on deactivation. If you chain `MO()`s on multiple pseudolayers and deactivate them in a random order, you might end up stranded on a pseudolayer. I recommend adding `CLEAR` somewhere on `ALWAYS_ON` pseudolayer just in case. - -* **`MO(X,Y)`**: Temporary switch to pseudolayer `Y`. Switches to pseudolayer `X` on deactivation. Especially useful when you want to put the `MO()` chord on `ALWAYS_ON`. - -* **`DF(X)`**: Permanent switch to pseudolayer `X`. - -* **`TO(X)`**: Switches the QMK layer to `X`. - -* **`O(X)`**: One-shot key `X` (if `X` starts with `"KC_"`) or one-shot layer `X` (otherwise) . Both have retro tapping enabled. - -* **Tap-holds** - - * **`KK(X, Y)`**: Pulses code `X` on tap and code `Y` on hold. - * **`KL(X, Y)`**: Pulses code `X` on tap and switches to pseudolayer `Y` on hold. If during the hold no key gets registered, the code `X` will get sent instead (similar to QMK's retro tapping). - * **`KM(X, Y)`**: Same as `KK()` but meant for modifiers on hold. Instead of a timer to figure out tap-hold, uses retro tapping like behavior just like `KL()`. This has issues with GUI and ALT as they often have a meaning. - * The chording engine determines if you are holding a chord based on a *global* timer. If you start holding a tap-hold chord and very quickly start tapping other chords, the hold might not activate until a short moment *after the last* chord when the timer expires. If you are running into this, adjust timeouts or wait a brief moment after pressing the chord to make sure it switches into the hold state before pressing other chords. - -* **Autoshift** - - * **`AS(X)`**: Pulses code `X` on tap and Pulses left shift + `X` on hold. - * **`AT`** : Toggles autoshift for all autoshift chords. If off, all `AS` chords act like `KC` chords. - -* **`LOCK`**: The lock key. Since tap-dances of chords are independent, it is possible to lock a chord *anywhere in it's dance if you time it right!*. If that happens, use the `CLEAR` chord or restart your keeb. - -* **`CMD`**: The command mode. The number of keycodes that can be buffered is defined in in `command_max_length`. - -* **`LEAD`**: The leader key. The maximum length of the sequences needs to be defined in `keyboard_params`. You can use `leader_sequences` array to add sequences: - - ```json - "leader_sequences": [ - { - "name": "fn_L1", - "function": "void fn_L1(void) { SEND(KC_LCTL); SEND(KC_LALT); SEND(KC_DEL); }", - "sequence": ["KC_Q", "KC_Z"] - } - ] - ``` - - When the engine notices the sequence, it will call the function defined in the field `name`. You can either define it in the `function` field, in the field `extra_code` or in an external file that you then have to insert manually or using the `extra_dependencies` array. The parser copy-pastes the contents `extra_code` of all files specified in the `extra_dependencies` array in the `keymap.c`. - -* **`M(X, VALUE1, VALUE2)`**: A custom macro. Adds a chord that will use function `X` and with `chord.value1 = VALUE1; chord.value2 = VALUE2;`. The function `X` can be arbitrary C function, go crazy. Just like with the leader sequences, you have to insert the code into the generated `keymap.c` manually or through `extra_code` or `extra_dependencies`. The following example defines a macro that acts exactly like `KC_MEH` (the chording engine *should* support `KC_MEH`, this is just an example): - - ```c - void fn_M1(const struct Chord* self) { - switch (*self->state) { - case ACTIVATED: - key_in(KC_LCTL); - key_in(KC_LSFT); - key_in(KC_LALT); - break; - case DEACTIVATED: - key_out(KC_LCTL); - key_out(KC_LSFT); - key_out(KC_LALT); - break; - case FINISHED: - case FINISHED_FROM_ACTIVE: - break; - case RESTART: - key_out(KC_LCTL); - key_out(KC_LSFT); - key_out(KC_LALT); - break; - default: - break; - } - } - ``` - - Since this feels like it would be the most common way to use this feature, I wrote a macro for this: - -* **`MK(X1, X2, ...)`**: Acts like `KC()` except it registers / unregisters all `X1`, `X2`, ... codes at the same time. - -* **`D(X1, X2, ...)`**: A basic keycode dance. If tapped (or held), registers `X1`. If tapped and then tapped again (or held), registers `X2`, ... It *cannot* be combined with tap-hold, however holding will result in repeat. You can put in as many basic keycodes as you want, but the macro will break if you go beyond 256. It will try to expand shortened keycodes. Advanced keycodes are not supported. - -* **`DM_RECORD`, `DM_NEXT`, `DM_END`, `DM_PLAY`**: Start recording a dynamic macro. Once you start recording, basic keycodes will get stored. When replaying the macro, all keys you press before `DM_NEXT` or `DM_END` will get pressed at the same time. For example the sequence `DM_RECORD`, `KC_CTRL`, `KC_A`, `DM_NEXT`, `KC_BSPC`, `DM_END` will record a macro that when played will execute the sequence Ctrl+a, Backspace. `dynamic_macro_max_length` defines the maximum length of the macro to be recorded. You can increase it for the price of RAM. The example above requires 4 units of length to be saved (Ctrl, A, next, Backspace). - -* **`CLEAR_KB`**: clears keyboard, sets all chords to the default state and switches the pseudolayer to the default one. Basically the emergency stop button. - -* **`RESET`**: Go to the DFU flashing mode. - -**Caveat** of the current implementation is that the tap-hold, `MK` and `D` keycodes can not accept any of the keycodes that have some sort a function like dynamic macro specific chords, `CLEAR_KB`, `RESET`, `LOCK`, `AT`, ... - -### Leader Key - -The sequences are not defined by the *keys* you press but by the *keycodes* that get intercepted. The length of the sequence must be equal or shorter than the maximum (defined in `keyboard.inc`). Currently, the timeout for the leader sequence refreshes after each key pressed. If the sequence is not in the database, nothing will happen. - -### Extra code - -Extra C code needed to define custom chords can be added by quoting in in the `extra_code` element or by saving it in another header file and including it using the `extra_dependencies` element: - -```json -{ - "extra_code": "void double_dance(const struct Chord* self) { ... }\n", - "extra_dependencies": ["my_header.h"] -} -``` - - - -## Further details - -### Implementation - -The source files are split into several files. `engine.part.1`, `engine.part.2` and `engine.part.3` contain C code that defines the Chord structure, implementations for all provided functions and the engine itself. `parser.py` generates keyboard and keymap dependent code. The file `chord.py` contains most of the logic required to properly translate chords from the JSON to the C code. I rarely write in python, if you have improvements, let me know, *please*. - -### Internal keycodes - -When `process_record_user()` gets one of the internal keycodes, it returns `true`, completely bypassing keyboard's and QMK's `process_record` functions. *All other* keycodes get passed down to QMK's standard processing. - -### Chords - -Each chord is defined by a constant structure, a function and two non-constant `int` variables keeping the track of the chord's state: - -```c -struct Chord { - uint32_t keycodes_hash; - uint8_t pseudolayer; - uint8_t* state; - uint8_t* counter; - uint16_t value1; - uint8_t value2; - void (*function) (const struct Chord*); -}; - -uint8_t state_0 = IDLE; -uint8_t counter_0 = 0; -void function_0(struct Chord* self) { - switch (*self->state) { - case ACTIVATED: - register_code(self->value1); - break; - case DEACTIVATED: - unregister_code(self->value1); - break; - case FINISHED: - case PRESS_FROM_ACTIVE: - break; - case RESTART: - unregister_code(self->value1); - break; - default: - break; - } -} -const struct Chord chord_0 PROGMEM = {H_TOP1, QWERTY, &state_0, &counter_0, KC_Q, 0, function_0}; -``` - -All chords have to be added to `list_of_chord` array that gets regularly scanned and processed. The function doesn't actually activate on all state changes, there are a few more like `IDLE` (nothing is currently happening to the chord) or `IN_ONE_SHOT` (the chord is one shot and is currently locked). Those are all necessary for internal use only. The ones you have to worry about are - -* `ACTIVATED`: Analogous to a key being pressed (this includes repeated presses for tap-dance) -* `DEACTIVATED`: Analogous to a key being depressed (also can be repeated) -* `FINISHED`: Happens if the chord got deactivated and then the dance timer expired. -* `PRESS_FROM_ACTIVE`: Happens if the chord was active when the dance timer expired. Meaning you at least once activated the chord and then kept holding it down. Useful to recognize taps and holds. -* `FINISHED_FROM_ACTIVE`: Happens *after* `PRESS_FROM_HOLD` if the chord is still active when the dance timer expires for the second time. Can be combined with the `counter` to recognize even longer presses. Useful if you want to recognize long presses, for example for autoshift functionality. In `keyboard.inc` you can set `LONG_PRESS_MULTIPLIER` to set how many times does dance timer have to expire for the autoshift to trigger. -* `RESTART`: The dance is done. Happens immediately after `FINISHED` or on chord deactivation from `FINISHED_FROM_ACTIVE`. Anything you have to do to get the chord into `IDLE` mode happens here. - -The chords change states based on external and internal events. Anytime a chord's function is activated, it may change it's own state. Also, on certain events, the chording engine will trigger the functions of all chords in a specific state and *if the chords' state hasn't changed* it will then change it appropriately. The default behavior when a chord changes state is described by the following diagram: - -![state machine diagram](state_machine.png) -The colors differentiate in which function the change happens, see `state_machine.dot` for a bit more detail. Black arrows happen in more than one function. Arrows without a label happen immediately. - -You can see that the diagram is not exhaustive. For example nothing leads into `IN_ONE_SHOT`. That is because the chord's function can change the chord's state. This is useful for some advanced chords that break the default behavir (one-shots) and for optimization (chords that just send `KC_X` do not need to ever go into dance). - -## Caveats - -Each chord stores as much as possible in `PROGMEM` and unless it needs it, doesn't allocate `counter`. However it still has to store it's `state` and sometimes the `counter` in RAM. If you keep adding more chords, at one point you will run out. If your firmware fits in the memory and your keyboard crashes, try optimizing your RAM usage. - -Also, the code is not perfect. I keep testing it, but can not guarantee that it is stable. Some functions take (very short but still) time and if you happen to create keypress event when the keyboard can not see it, a chord can get stuck in a funny state. That is especially fun if the pseudolayer changes and you can not immediately press it again. Just restart the keyboard or push the key a few times. diff --git a/users/dennytom/chording_engine/chord.py b/users/dennytom/chording_engine/chord.py deleted file mode 100644 index 5e3b6d2834..0000000000 --- a/users/dennytom/chording_engine/chord.py +++ /dev/null @@ -1,465 +0,0 @@ -from functools import reduce - -strings = [] -number_of_strings = -1 - -def top_level_split(s): - """ - Split `s` by top-level commas only. Commas within parentheses are ignored. - """ - - # Parse the string tracking whether the current character is within - # parentheses. - balance = 0 - parts = [] - part = "" - - for i in range(len(s)): - c = s[i] - part += c - if c == '(': - balance += 1 - elif c == ')': - balance -= 1 - elif c == ',' and balance == 0 and not s[i+1] == ',': - part = part[:-1].strip() - parts.append(part) - part = "" - - # Capture last part - if len(part): - parts.append(part.strip()) - - return parts - -def new_chord(on_pseudolayer, keycodes_hash, has_counter, value1, value2, function, output_buffer, index): - counter_link = "NULL" - output_buffer += "uint8_t state_" + str(index) + " = IDLE;\n" - if has_counter: - output_buffer += "uint8_t counter_" + str(index) + " = 0;\n" - counter_link = "&counter_" + str(index) - output_buffer += "const struct Chord chord_" + str(index) + " PROGMEM = {" + keycodes_hash + ", " + on_pseudolayer + ", &state_" + str(index) + ", " + counter_link + ", " + str(value1) + ", " + str(value2) + ", " + function + "};\n" - index += 1 - return [output_buffer, index] - -def KC(on_pseudolayer, keycodes_hash, keycode, output_buffer, index): - return new_chord(on_pseudolayer, keycodes_hash, False, keycode, 0, "single_dance", output_buffer, index) - -def AS(on_pseudolayer, keycodes_hash, keycode, output_buffer, index): - return new_chord(on_pseudolayer, keycodes_hash, True, keycode, 0, "autoshift_dance", output_buffer, index) - -def AT(on_pseudolayer, keycodes_hash, output_buffer, index): - return new_chord(on_pseudolayer, keycodes_hash, False, 0, 0, "autoshift_toggle", output_buffer, index) - -def KL(on_pseudolayer, keycodes_hash, keycode, to_pseudolayer, output_buffer, index): - return new_chord(on_pseudolayer, keycodes_hash, True, keycode, to_pseudolayer, "key_layer_dance", output_buffer, index) - -def KK(on_pseudolayer, keycodes_hash, keycode1, keycode2, output_buffer, index): - return new_chord(on_pseudolayer, keycodes_hash, True, keycode1, keycode2, "key_key_dance", output_buffer, index) - -def KM(on_pseudolayer, keycodes_hash, keycode, to_pseudolayer, output_buffer, index): - return new_chord(on_pseudolayer, keycodes_hash, False, keycode, to_pseudolayer, "key_mod_dance", output_buffer, index) - -def MO(on_pseudolayer, keycodes_hash, to_pseudolayer, output_buffer, index): - return new_chord(on_pseudolayer, keycodes_hash, False, to_pseudolayer, 0, "temp_pseudolayer", output_buffer, index) - -def MO_alt(on_pseudolayer, keycodes_hash, from_pseudolayer, to_pseudolayer, output_buffer, index): - return new_chord(on_pseudolayer, keycodes_hash, False, to_pseudolayer, from_pseudolayer, "temp_pseudolayer_alt", output_buffer, index) - -def LOCK(on_pseudolayer, keycodes_hash, output_buffer, index): - return new_chord(on_pseudolayer, keycodes_hash, False, 0, 0, "lock", output_buffer, index) - -def DF(on_pseudolayer, keycodes_hash, to_pseudolayer, output_buffer, index): - return new_chord(on_pseudolayer, keycodes_hash, False, to_pseudolayer, 0, "perm_pseudolayer", output_buffer, index) - -def TO(on_pseudolayer, keycodes_hash, to_pseudolayer, output_buffer, index): - return new_chord(on_pseudolayer, keycodes_hash, False, to_pseudolayer, 0, "switch_layer", output_buffer, index) - -def OSK(on_pseudolayer, keycodes_hash, keycode, output_buffer, index): - return new_chord(on_pseudolayer, keycodes_hash, False, keycode, 0, "one_shot_key", output_buffer, index) - -def OSL(on_pseudolayer, keycodes_hash, to_pseudolayer, output_buffer, index): - return new_chord(on_pseudolayer, keycodes_hash, False, to_pseudolayer, 0, "one_shot_layer", output_buffer, index) - -def CMD(on_pseudolayer, keycodes_hash, output_buffer, index): - return new_chord(on_pseudolayer, keycodes_hash, False, 0, 0, "command", output_buffer, index) - -def DM_RECORD(on_pseudolayer, keycodes_hash, output_buffer, index): - return new_chord(on_pseudolayer, keycodes_hash, False, 0, 0, "dynamic_macro_record", output_buffer, index) - -def DM_NEXT(on_pseudolayer, keycodes_hash, output_buffer, index): - return new_chord(on_pseudolayer, keycodes_hash, False, 0, 0, "dynamic_macro_next", output_buffer, index) - -def DM_END(on_pseudolayer, keycodes_hash, output_buffer, index): - return new_chord(on_pseudolayer, keycodes_hash, False, 0, 0, "dynamic_macro_end", output_buffer, index) - -def DM_PLAY(on_pseudolayer, keycodes_hash, output_buffer, index): - return new_chord(on_pseudolayer, keycodes_hash, False, 0, 0, "dynamic_macro_play", output_buffer, index) - -def LEAD(on_pseudolayer, keycodes_hash, output_buffer, index): - return new_chord(on_pseudolayer, keycodes_hash, False, 0, 0, "leader", output_buffer, index) - -def CLEAR(on_pseudolayer, keycodes_hash, output_buffer, index): - return new_chord(on_pseudolayer, keycodes_hash, False, 0, 0, "clear", output_buffer, index) - -def RESET(on_pseudolayer, keycodes_hash, output_buffer, index): - return new_chord(on_pseudolayer, keycodes_hash, False, 0, 0, "reset", output_buffer, index) - -def STR(on_pseudolayer, keycodes_hash, string_input, output_buffer, index, number_of_strings, strings): - [a, b] = new_chord(on_pseudolayer, keycodes_hash, False, number_of_strings, 0, "string_in", output_buffer, index) - return [a, b, number_of_strings + 1, strings + [string_input]] - -def M(on_pseudolayer, keycodes_hash, value1, value2, fnc, output_buffer, index): - return new_chord(on_pseudolayer, keycodes_hash, True, value1, value2, fnc, output_buffer, index) - -def expand_keycode_fnc(DEFINITION): - if DEFINITION == "`": - DEFINITION = "GRAVE" - elif DEFINITION == "-": - DEFINITION = "MINUS" - elif DEFINITION == "=": - DEFINITION = "EQUAL" - elif DEFINITION == "[": - DEFINITION = "LBRACKET" - elif DEFINITION == "]": - DEFINITION = "RBRACKET" - elif DEFINITION == "\\": - DEFINITION = "BSLASH" - elif DEFINITION == ";": - DEFINITION = "SCOLON" - elif DEFINITION == "'": - DEFINITION = "QUOTE" - elif DEFINITION == ",": - DEFINITION = "COMMA" - elif DEFINITION == ".": - DEFINITION = "DOT" - elif DEFINITION == "/": - DEFINITION = "SLASH" - elif DEFINITION == "~": - DEFINITION = "TILDE" - elif DEFINITION == "*": - DEFINITION = "ASTERISK" - elif DEFINITION == "+": - DEFINITION = "PLUS" - elif DEFINITION == "(": - DEFINITION = "LEFT_PAREN" - elif DEFINITION == ")": - DEFINITION = "RIGHT_PAREN" - elif DEFINITION == "<": - DEFINITION = "LEFT_ANGLE_BRACKET" - elif DEFINITION == ">": - DEFINITION = "RIGHT_ANGLE_BRACKET" - elif DEFINITION == "{": - DEFINITION = "LEFT_CURLY_BRACE" - elif DEFINITION == "}": - DEFINITION = "RIGHT_CURLY_BRACE" - elif DEFINITION == "?": - DEFINITION = "QUESTION" - elif DEFINITION == "~": - DEFINITION = "TILDE" - elif DEFINITION == ":": - DEFINITION = "COLON" - elif DEFINITION == "_": - DEFINITION = "UNDERSCORE" - elif DEFINITION == '"': - DEFINITION = "DOUBLE_QUOTE" - elif DEFINITION == "@": - DEFINITION = "AT" - elif DEFINITION == "#": - DEFINITION = "HASH" - elif DEFINITION == "$": - DEFINITION = "DOLLAR" - elif DEFINITION == "!": - DEFINITION = "EXCLAIM" - elif DEFINITION == "%": - DEFINITION = "PERCENT" - elif DEFINITION == "^": - DEFINITION = "CIRCUMFLEX" - elif DEFINITION == "&": - DEFINITION = "AMPERSAND" - elif DEFINITION == "|": - DEFINITION = "PIPE" - - if DEFINITION in [ - "A", "a", "B", "b", "C", "c", "D", "d", "E", "e", - "F", "f", "G", "g", "H", "h", "I", "i", "J", "j", - "K", "k", "L", "l", "M", "m", "N", "n", "O", "o", - "P", "p", "Q", "q", "R", "r", "S", "s", "T", "t", - "U", "u", "V", "v", "W", "w", "X", "x", "Y", "y", - "Z", "z", "1", "2", "3", "4", "5", "6", "7", "8", - "9", "0", "F1", "F2", "F3", "F4", "F5", "F6", "F7", - "F8", "F9", "F10", "F11", "F12", "F13", "F14", "F15", - "F16", "F17", "F18", "F19", "F20", "F21", "F22", - "F23", "F24", "ENTER", "ENT", "ESCAPE", "ESC", - "BSPACE", "BSPC", "TAB", "SPACE", "SPC", "NONUS_HASH", - "NUHS", "NONUS_BSLASH", "NUBS", "COMMA", "COMM", - "DOT", "SLASH", "SLSH", "TILDE", "TILD", "EXCLAIM", - "EXLM", "AT", "HASH", "DOLLAR", "DLR", "PERCENT", - "PERC", "CIRCUMFLEX", "CIRC", "AMPERSAND", "AMPR", - "ASTERISK", "ASTR", "LEFT_PAREN", "LPRN", "RIGHT_PAREN", - "RPRN", "UNDERSCORE", "UNDS", "PLUS", "LEFT_CURLY_BRACE", - "LCBR", "RIGHT_CURLY_BRACE", "RCBR", "PIPE", "COLON", - "COLN", "DOUBLE_QUOTE", "DQUO", "DQT", - "LEFT_ANGLE_BRACKET", "LABK", "LT", "RIGHT_ANGLE_BRACKET", - "RABK", "GT", "QUESTION", "QUES", "SCOLON", "SCLN", - "QUOTE", "QUOT", "LBRACKET", "LBRC", "RBRACKET", "RBRC", - "BSLASH", "BSLS", "MINUS", "MINS", "EQUAL", "EQL", - "GRAVE", "GRV", "ZKHK", "CAPSLOCK", "CLCK", "CAPS", - "SCROLLOCK", "SLCK", "BRMD", "NUMLOCK", "NLCK", - "LOCKING_CAPS", "LCAP", "LOCKING_NUM", "LNUM", - "LOCKING_SCROLL", "LSCR", "LCTRL", "LCTL", "LSHIFT", - "LSFT", "LALT", "LGUI", "LCMD", "LWIN", "RCTRL", - "RCTL", "RSHIFT", "RSFT", "RALT", "RGUI", "RCMD", - "RWIN", "INT1", "RO", "INT2", "KANA", "INT3", "JYEN", - "INT4", "HENK", "INT5", "MHEN", "INT6", "INT7", - "INT8", "INT9", "LANG1", "HAEN", "LANG2", "HANJ", - "LANG3", "LANG4", "LANG5", "LANG6", "LANG7", "LANG8", - "LANG9", "PSCREEN", "PSCR", "PAUSE", "PAUS", "BRK", - "BRMU", "INSERT", "INS", "HOME", "PGUP", "DELETE", - "DEL", "END", "PGDOWN", "PGDN", "RIGHT", "RGHT", - "LEFT", "DOWN", "UP", "APPLICATION", "APP", "POWER", - "EXECUTE", "EXEC", "HELP", "MENU", "SELECT", "SLCT", - "STOP", "AGAIN", "AGIN", "UNDO", "CUT", "COPY", - "PASTE", "PSTE", "FIND", "MUTE", "VOLUP", "VOLDOWN", - "ALT_ERASE", "ERAS", "SYSREQ", "CANCEL", "CLEAR", - "CLR", "PRIOR", "RETURN", "SEPARATOR", "OUT", "OPER", - "CLEAR_AGAIN", "CRSEL", "EXSEL", "SYSTEM_POWER", - "PWR", "SYSTEM_SLEEP", "SLEP", "SYSTEM_WAKE", "WAKE", - "AUDIO_MUTE", "MUTE", "AUDIO_VOL_UP", "VOLU", - "AUDIO_VOL_DOWN", "VOLD", "MEDIA_NEXT_TRACK", "MNXT", - "MEDIA_PREV_TRACK", "MPRV", "CPRV", "MEDIA_STOP", "MSTP", - "MEDIA_PLAY_PAUSE", "MPLY", "MEDIA_SELECT", "MSEL", - "MEDIA_EJECT", "EJCT", "MAIL", "CALCULATOR", "CALC", - "MY_COMPUTER", "MYCM", "WWW_SEARCH", "WSCH", "WWW_HOME", - "WHOM", "WWW_BACK", "WBAK", "WWW_FORWARD", "WFWD", - "WWW_STOP", "WSTP", "WWW_REFRESH", "WREF", - "WWW_FAVORITES", "WFAV", "MEDIA_FAST_FORWARD", "MFFD", - "MEDIA_REWIND", "MRWD", "BRIGHTNESS_UP", "BRIU", - "BRIGHTNESS_DOWN", "BRID", "KP_SLASH", "PSLS", - "KP_ASTERISK", "PAST", "KP_MINUS", "PMNS", "KP_PLUS", - "PPLS", "KP_ENTER", "PENT", "KP_1", "P1", "KP_2", "P2", - "KP_3", "P3", "KP_4", "P4", "KP_5", "P5", "KP_6", "P6", - "KP_7", "P7", "KP_8", "P8", "KP_9", "P9", "KP_0", "P0", - "KP_DOT", "PDOT", "KP_EQUAL", "PEQL", "KP_COMMA", "PCMM", - "MS_BTN1", "BTN1", "MS_BTN2", "BTN2", "MS_BTN3", "BTN3", - "MS_BTN4", "BTN4", "MS_BTN5", "BTN5", "MS_BTN6", "BTN6", - "MS_LEFT", "MS_L", "MS_DOWN", "MS_D", "MS_UP", "MS_U", - "MS_RIGHT", "MS_R", "MS_WH_UP", "WH_U", "MS_WH_DOWN", - "WH_D", "MS_WH_LEFT", "MS_WH_L", "MS_WH_RIGHT", "MS_WH_R", - "KC_MS_ACCEL0", "ACL0", "KC_MS_ACCEL1", "ACL1", - "KC_MS_ACCEL2", "ACL2" - ]: - return "KC_" + DEFINITION - else: - return DEFINITION - -def MK(on_pseudolayer, keycodes_hash, definition, output_buffer, index): - l = len(definition.split(', ')) - output_buffer += "void function_" + str(index) + "(const struct Chord* self) {\n" - output_buffer += " switch (*self->state) {\n" - output_buffer += " case ACTIVATED:\n" - for i in range(0, l): - val = definition.split(',')[i].strip() - code = expand_keycode_fnc(val) - output_buffer += " key_in(" + code + ");\n" - output_buffer += " break;\n" - output_buffer += " case DEACTIVATED:\n" - for i in range(0, l): - val = definition.split(',')[i].strip() - code = expand_keycode_fnc(val) - output_buffer += " key_out(" + code + ");\n" - output_buffer += " *self->state = IDLE;\n" - output_buffer += " break;\n" - output_buffer += " case RESTART:\n" - for i in range(0, l): - val = definition.split(',')[i].strip() - code = expand_keycode_fnc(val) - output_buffer += " key_out(" + code + ");\n" - output_buffer += " break;\n" - output_buffer += " default:\n" - output_buffer += " break;\n" - output_buffer += " };\n" - output_buffer += "}\n" - return new_chord(on_pseudolayer, keycodes_hash, True, 0, 0, "function_" + str(index), output_buffer, index) - -def D(on_pseudolayer, keycodes_hash, DEFINITION, output_buffer, index): - l = len(DEFINITION.split(',')) - output_buffer += "void function_" + str(index) + "(const struct Chord* self) {\n" - output_buffer += " switch (*self->state) {\n" - output_buffer += " case ACTIVATED:\n" - output_buffer += " *self->counter = *self->counter + 1;\n" - output_buffer += " break;\n" - output_buffer += " case PRESS_FROM_ACTIVE:\n" - output_buffer += " switch (*self->counter) {\n" - for i in range(0, l): - val = DEFINITION.split(',')[i].strip() - code = expand_keycode_fnc(val) - output_buffer += " case " + str(i + 1) + ":\n" - output_buffer += " key_in( " + code + ");\n" - output_buffer += " break;\n" - output_buffer += " default:\n" - output_buffer += " break;\n" - output_buffer += " }\n" - output_buffer += " *self->state = FINISHED_FROM_ACTIVE;\n" - output_buffer += " break;\n" - output_buffer += " case FINISHED:\n" - output_buffer += " switch (*self->counter) {\n" - for i in range(0, l): - val = DEFINITION.split(',')[i].strip() - code = expand_keycode_fnc(val) - output_buffer += " case " + str(i + 1) + ":\n" - output_buffer += " tap_key( " + code + ");\n" - output_buffer += " break;\n" - output_buffer += " default:\n" - output_buffer += " break;\n" - output_buffer += " }\n" - output_buffer += " *self->counter = 0;\n" - output_buffer += " *self->state = IDLE;\n" - output_buffer += " break;\n" - output_buffer += " case RESTART:\n" - output_buffer += " switch (*self->counter) {\n" - for i in range(0, l): - val = DEFINITION.split(',')[i].strip() - code = expand_keycode_fnc(val) - output_buffer += " case " + str(i + 1) + ":\n" - output_buffer += " key_out( " + code + ");\n" - output_buffer += " break;\n" - output_buffer += " default:\n" - output_buffer += " break;\n" - output_buffer += " }\n" - output_buffer += " *self->counter = 0;\n" - output_buffer += " break;\n" - output_buffer += " default:\n" - output_buffer += " break;\n" - output_buffer += " }\n" - output_buffer += "}\n" - return new_chord(on_pseudolayer, keycodes_hash, True, 0, 0, "function_" + str(index), output_buffer, index) - -def O(on_pseudolayer, keycodes_hash, DEFINITION, output_buffer, index): - if DEFINITION[0:3] == "KC_": - return OSK(on_pseudolayer, keycodes_hash, DEFINITION, output_buffer, index) - else: - return OSL(on_pseudolayer, keycodes_hash, DEFINITION, output_buffer, index) - -def add_key(PSEUDOLAYER, KEYCODES_HASH, DEFINITION, output_buffer, index, number_of_strings, strings): - # if "= {" + KEYCODES_HASH + ", " + PSEUDOLAYER in output_buffer: - # KEYCODES_HASH = re.sub('H_', '', KEYCODES_HASH) - # raise Exception("You are trying to register a chord that you already registered (" + KEYCODES_HASH + ", " + PSEUDOLAYER + ")") - - if DEFINITION == "": - return [output_buffer, index, number_of_strings, strings] - else: - split = DEFINITION.split("(") - type = split[0].strip() - if len(split) == 1: - if type == "LOCK": - [output_buffer, index] = LOCK(PSEUDOLAYER, KEYCODES_HASH, output_buffer, index) - elif type == "AT": - [output_buffer, index] = AT(PSEUDOLAYER, KEYCODES_HASH, output_buffer, index) - elif type == "CMD": - [output_buffer, index] = CMD(PSEUDOLAYER, KEYCODES_HASH, output_buffer, index) - elif type == "LEAD": - [output_buffer, index] = LEAD(PSEUDOLAYER, KEYCODES_HASH, output_buffer, index) - elif type == "DM_RECORD": - [output_buffer, index] = DM_RECORD(PSEUDOLAYER, KEYCODES_HASH, output_buffer, index) - elif type == "DM_NEXT": - [output_buffer, index] = DM_NEXT(PSEUDOLAYER, KEYCODES_HASH, output_buffer, index) - elif type == "DM_END": - [output_buffer, index] = DM_END(PSEUDOLAYER, KEYCODES_HASH, output_buffer, index) - elif type == "DM_PLAY": - [output_buffer, index] = DM_PLAY(PSEUDOLAYER, KEYCODES_HASH, output_buffer, index) - elif type == "CLEAR_KB": - [output_buffer, index] = CLEAR(PSEUDOLAYER, KEYCODES_HASH, output_buffer, index) - elif type == "RESET": - [output_buffer, index] = RESET(PSEUDOLAYER, KEYCODES_HASH, output_buffer, index) - else: - code = expand_keycode_fnc(type) - [output_buffer, index] = KC(PSEUDOLAYER, KEYCODES_HASH, code, output_buffer, index) - else: - val = split[1][:-1].strip() - if type == "O": - code = expand_keycode_fnc(val) - [output_buffer, index] = O(PSEUDOLAYER, KEYCODES_HASH, code, output_buffer, index) - elif type == "D": - [output_buffer, index] = D(PSEUDOLAYER, KEYCODES_HASH, val, output_buffer, index) - elif type == "MK": - [output_buffer, index] = MK(PSEUDOLAYER, KEYCODES_HASH, val, output_buffer, index) - elif type == "M": - fnc = val.split(',')[0].strip() - val1 = val.split(',')[1].strip() - val2 = val.split(',')[2].strip() - [output_buffer, index] = M(PSEUDOLAYER, KEYCODES_HASH, val1, val2, fnc, output_buffer, index) - elif type == "KK": - val1 = val.split(',')[0].strip() - code1 = expand_keycode_fnc(val1) - val2 = val.split(',')[1].strip() - code2 = expand_keycode_fnc(val2) - [output_buffer, index] = KK(PSEUDOLAYER, KEYCODES_HASH, code1, code2, output_buffer, index) - elif type == "KL": - val1 = val.split(',')[0].strip() - code1 = expand_keycode_fnc(val1) - val2 = val.split(',')[1].strip() - [output_buffer, index] = KL(PSEUDOLAYER, KEYCODES_HASH, code1, val2, output_buffer, index) - elif type == "KM": - val1 = val.split(',')[0].strip() - code1 = expand_keycode_fnc(val1) - val2 = val.split(',')[1].strip() - code2 = expand_keycode_fnc(val2) - [output_buffer, index] = KM(PSEUDOLAYER, KEYCODES_HASH, code1, code2, output_buffer, index) - elif type == "AS": - code = expand_keycode_fnc(val) - [output_buffer, index] = AS(PSEUDOLAYER, KEYCODES_HASH, code, output_buffer, index) - elif type == "MO": - if not ',' in val: - [output_buffer, index] = MO(PSEUDOLAYER, KEYCODES_HASH, val, output_buffer, index) - else: - val1 = val.split(',')[0].strip() - val2 = val.split(',')[1].strip() - [output_buffer, index] = MO_alt(PSEUDOLAYER, KEYCODES_HASH, val1, val2, output_buffer, index) - elif type == "DF": - [output_buffer, index] = DF(PSEUDOLAYER, KEYCODES_HASH, val, output_buffer, index) - elif type == "TO": - [output_buffer, index] = TO(PSEUDOLAYER, KEYCODES_HASH, val, output_buffer, index) - elif type == "STR": - [output_buffer, index, number_of_strings, strings] = STR(PSEUDOLAYER, KEYCODES_HASH, val, output_buffer, index, number_of_strings, strings) - return [output_buffer, index, number_of_strings, strings] - -def add_leader_combo(DEFINITION, FUNCTION): - return list_of_leader_combos.append([DEFINITION, FUNCTION]) - -def add_chord_set(PSEUDOLAYER, INPUT_STRING, TYPE, data, output_buffer, index, number_of_strings, strings): - chord_set = {} - for set in data["chord_sets"]: - if set["name"] == TYPE: - chord_set = set["chords"] - break - - separated_string = top_level_split(INPUT_STRING) - for word, chord in zip(separated_string, chord_set): - chord_hash = reduce((lambda x, y: str(x) + " + " + str(y)), ["H_" + key for key in chord]) - [output_buffer, index, number_of_strings, strings] = add_key(PSEUDOLAYER, chord_hash, word, output_buffer, index, number_of_strings, strings) - - return [output_buffer, index, number_of_strings, strings] - -def add_dictionary(PSEUDOLAYER, keycodes, array, output_buffer, index, number_of_strings, strings): - for chord in array: - hash = "" - for word, key in zip(chord[:-1], keycodes): - if word == "X": - hash = hash + " + H_" + key - hash = hash[3:] - if hash != "": - [output_buffer, index, number_of_strings, strings] = add_key(PSEUDOLAYER, hash, chord[-1], output_buffer, index, number_of_strings, strings) - - return [output_buffer, index, number_of_strings, strings] - -def secret_chord(PSEUDOLAYER, ACTION, INPUT_STRING, data, output_buffer, index, number_of_strings, strings): - separated_string = top_level_split(INPUT_STRING) - hash = "" - for word, key in zip(separated_string, data["keys"]): - if word == "X": - hash = hash + " + H_" + key - - hash = hash[3:] - if hash != "": - return add_key(PSEUDOLAYER, hash, ACTION, output_buffer, index, number_of_strings, strings) diff --git a/users/dennytom/chording_engine/engine.part.1 b/users/dennytom/chording_engine/engine.part.1 deleted file mode 100644 index e4f1b260dc..0000000000 --- a/users/dennytom/chording_engine/engine.part.1 +++ /dev/null @@ -1,163 +0,0 @@ -enum chord_states { - IDLE, - READY, - ACTIVATED, - DEACTIVATED, - PRESS_FROM_ACTIVE, - FINISHED_FROM_ACTIVE, - IDLE_IN_DANCE, - READY_IN_DANCE, - FINISHED, - LOCKED, - READY_LOCKED, - RESTART, - IN_ONE_SHOT -}; - -struct Chord { - uint32_t keycodes_hash; - uint8_t pseudolayer; - uint8_t* state; - uint8_t* counter; - uint16_t value1; - uint8_t value2; - void (*function) (const struct Chord*); -}; - -uint8_t current_pseudolayer = DEFAULT_PSEUDOLAYER; -bool lock_next = false; -uint16_t chord_timer = 0; -uint16_t dance_timer = 0; -bool autoshift_mode = true; -uint8_t keycode_index = 0; -uint8_t command_mode = 0; -uint8_t command_ind = 0; -bool in_leader_mode = false; -uint8_t leader_ind = 0; -uint16_t leader_timer = 0; -uint8_t dynamic_macro_mode = false; -uint8_t dynamic_macro_ind = 0; -bool a_key_went_through = false; -struct Chord* last_chord = NULL; - -bool handle_US_ANSI_shifted_keys(int16_t keycode, bool in) { - bool is_US_ANSI_shifted = true; - - int16_t regular_keycode = KC_NO; - switch (keycode) { - case KC_TILDE: - regular_keycode = KC_GRAVE; - break; - case KC_EXCLAIM: - regular_keycode = KC_1; - break; - case KC_AT: - regular_keycode = KC_2; - break; - case KC_HASH: - regular_keycode = KC_3; - break; - case KC_DOLLAR: - regular_keycode = KC_4; - break; - case KC_PERCENT: - regular_keycode = KC_5; - break; - case KC_CIRCUMFLEX: - regular_keycode = KC_6; - break; - case KC_AMPERSAND: - regular_keycode = KC_7; - break; - case KC_ASTERISK: - regular_keycode = KC_8; - break; - case KC_LEFT_PAREN: - regular_keycode = KC_9; - break; - case KC_RIGHT_PAREN: - regular_keycode = KC_0; - break; - case KC_UNDERSCORE: - regular_keycode = KC_MINUS; - break; - case KC_PLUS: - regular_keycode = KC_EQUAL; - break; - case KC_LEFT_CURLY_BRACE: - regular_keycode = KC_LEFT_BRACKET; - break; - case KC_RIGHT_CURLY_BRACE: - regular_keycode = KC_RIGHT_BRACKET; - break; - case KC_PIPE: - regular_keycode = KC_BACKSLASH; - break; - case KC_COLON: - regular_keycode = KC_SEMICOLON; - break; - case KC_DOUBLE_QUOTE: - regular_keycode = KC_QUOTE; - break; - case KC_LEFT_ANGLE_BRACKET: - regular_keycode = KC_COMMA; - break; - case KC_RIGHT_ANGLE_BRACKET: - regular_keycode = KC_DOT; - break; - case KC_QUESTION: - regular_keycode = KC_SLASH; - break; - default: - is_US_ANSI_shifted = false; - } - if (is_US_ANSI_shifted) { - if (in) { - register_code(KC_LSFT); - register_code(regular_keycode); - } else { - unregister_code(regular_keycode); - unregister_code(KC_LSFT); - } - } - return is_US_ANSI_shifted; -} - -void key_in(int16_t keycode) { - if (command_mode == 1 && command_ind < COMMAND_MAX_LENGTH) { - command_buffer[command_ind] = keycode; - command_ind++; - a_key_went_through = true; - } else if (in_leader_mode && leader_ind < LEADER_MAX_LENGTH) { - leader_buffer[leader_ind] = keycode; - leader_ind++; - a_key_went_through = true; - } else if (dynamic_macro_mode && dynamic_macro_ind < DYNAMIC_MACRO_MAX_LENGTH) { - dynamic_macro_buffer[dynamic_macro_ind] = keycode; - dynamic_macro_ind++; - a_key_went_through = true; - } else { - if (!handle_US_ANSI_shifted_keys(keycode, true)) { - register_code(keycode); - } - send_keyboard_report(); - a_key_went_through = true; - } -} - -void key_out(int16_t keycode) { - if (command_mode == 0) { - if (!handle_US_ANSI_shifted_keys(keycode, false)) { - if (command_mode == 0 && in_leader_mode == false && dynamic_macro_mode == false) { - unregister_code(keycode); - } - } - send_keyboard_report(); - } -} - -void tap_key(int16_t keycode) { - key_in(keycode); - wait_ms(TAP_TIMEOUT); - key_out(keycode); -} \ No newline at end of file diff --git a/users/dennytom/chording_engine/engine.part.2 b/users/dennytom/chording_engine/engine.part.2 deleted file mode 100644 index 91dcbb7503..0000000000 --- a/users/dennytom/chording_engine/engine.part.2 +++ /dev/null @@ -1,323 +0,0 @@ -void single_dance(const struct Chord* self) { - switch (*self->state) { - case ACTIVATED: - key_in(self->value1); - break; - case DEACTIVATED: - key_out(self->value1); - *self->state = IDLE; - break; - case RESTART: - key_out(self->value1); - break; - default: - break; - } -} - -void key_layer_dance(const struct Chord* self) { - switch (*self->state) { - case ACTIVATED: - current_pseudolayer = self->value2; - a_key_went_through = false; - break; - case DEACTIVATED: - case RESTART: - if (!a_key_went_through) { - tap_key(self->value1); - } - current_pseudolayer = self->pseudolayer; - *self->state = IDLE; // does not have effect if the state was RESTART - break; - default: - break; - } -} - -void key_mod_dance(const struct Chord* self) { - switch (*self->state) { - case ACTIVATED: - key_in(self->value2); - a_key_went_through = false; - break; - case DEACTIVATED: - case RESTART: - key_out(self->value2); - if (!a_key_went_through) { - tap_key(self->value1); - } - *self->state = IDLE; // does not have effect if the state was RESTART - break; - default: - break; - } -} - -void key_key_dance(const struct Chord* self) { - switch (*self->state) { - case ACTIVATED: - break; - case DEACTIVATED: - tap_key(self->value1); - *self->state = IDLE; - break; - case FINISHED: - case PRESS_FROM_ACTIVE: - key_in(self->value2); - break; - case RESTART: - key_out(self->value2); - break; - default: - break; - } -} - -void autoshift_dance_impl(const struct Chord* self) { - switch (*self->state) { - case ACTIVATED: - *self->counter = 0; - break; - case DEACTIVATED: - case RESTART: - tap_key(self->value1); - *self->state = IDLE; - break; - case FINISHED_FROM_ACTIVE: - if (*self->counter == (LONG_PRESS_MULTIPLIER - 2)) { - key_in(KC_LSFT); - tap_key(self->value1); - key_out(KC_LSFT); - *self->state = IDLE; - // the skip to IDLE is usually just a lag optimization, - // in this case it has a logic function, on a short - // press (still longer than a tap) the key does not get shifted - } else { - *self->counter += 1; - *self->state = PRESS_FROM_ACTIVE; - dance_timer = timer_read(); - } - break; - default: - break; - } -} - -void autoshift_dance(const struct Chord* self) { - if (autoshift_mode) { - autoshift_dance_impl(self); - } else { - single_dance(self); - } -} - -void autoshift_toggle(const struct Chord* self){ - if (*self->state == ACTIVATED) { - autoshift_mode = !autoshift_mode; - *self->state = IDLE; - } -} - -void temp_pseudolayer(const struct Chord* self) { - switch (*self->state) { - case ACTIVATED: - current_pseudolayer = self->value1; - break; - case DEACTIVATED: - current_pseudolayer = self->pseudolayer; - *self->state = IDLE; - break; - case RESTART: - current_pseudolayer = self->pseudolayer; - break; - default: - break; - } -} - -void temp_pseudolayer_alt(const struct Chord* self) { - switch (*self->state) { - case ACTIVATED: - current_pseudolayer = self->value1; - break; - case DEACTIVATED: - current_pseudolayer = self->value2; - *self->state = IDLE; - break; - case RESTART: - current_pseudolayer = self->value2; - break; - default: - break; - } -} - -void perm_pseudolayer(const struct Chord* self) { - if (*self->state == ACTIVATED) { - current_pseudolayer = self->value1; - *self->state = IDLE; - } -} - -void switch_layer(const struct Chord* self) { - if (*self->state == ACTIVATED) { - layer_move(self->value1); - *self->state = IDLE; - } -} - -void lock(const struct Chord* self) { - if (*self->state == ACTIVATED) { - lock_next = true; - *self->state = IDLE; - } -} - -void one_shot_key(const struct Chord* self) { - switch (*self->state) { - case ACTIVATED: - break; - case DEACTIVATED: - key_in(self->value1); - *self->state = IN_ONE_SHOT; - break; - case FINISHED: - case PRESS_FROM_ACTIVE: - key_in(self->value1); - a_key_went_through = false; - break; - case RESTART: - if (a_key_went_through) { - key_out(self->value1); - } else { - *self->state = IN_ONE_SHOT; - } - default: - break; - } -} - -void one_shot_layer(const struct Chord* self) { - switch (*self->state) { - case ACTIVATED: - break; - case DEACTIVATED: - current_pseudolayer = self->value1; - *self->state = IN_ONE_SHOT; - break; - case FINISHED: - case PRESS_FROM_ACTIVE: - current_pseudolayer = self->value1; - a_key_went_through = false; - break; - case RESTART: - if (a_key_went_through) { - current_pseudolayer = self->pseudolayer; - } else { - *self->state = IN_ONE_SHOT; - } - default: - break; - } -} - -void command(const struct Chord* self) { - if (*self->state == ACTIVATED) { - command_mode++; - *self->state = IDLE; - } -} - -bool identical(uint16_t* buffer1, uint16_t* buffer2) { - bool same = true; - for (int i = 0; i < LEADER_MAX_LENGTH; i++) { - same = same && (buffer1[i] == buffer2[i]); - } - return same; -} - -void leader(const struct Chord* self) { - if (*self->state == ACTIVATED) { - in_leader_mode = true; - *self->state = IDLE; - } -} - -void dynamic_macro_record(const struct Chord* self) { - if (*self->state == ACTIVATED) { - for (int i = 0; i < DYNAMIC_MACRO_MAX_LENGTH; i++) { - dynamic_macro_buffer[i] = 0; - } - dynamic_macro_mode = true; - *self->state = IDLE; - } -} - -void dynamic_macro_next(const struct Chord* self) { - if (*self->state == ACTIVATED) { - if (dynamic_macro_mode && dynamic_macro_ind < DYNAMIC_MACRO_MAX_LENGTH) { - dynamic_macro_buffer[dynamic_macro_ind] = 0; - dynamic_macro_ind++; - } - *self->state = IDLE; - } -} - -void dynamic_macro_end(const struct Chord* self) { - if (*self->state == ACTIVATED) { - if (dynamic_macro_mode) { - dynamic_macro_mode = false; - } - *self->state = IDLE; - } -} - -void dynamic_macro_play(const struct Chord* self) { - if (*self->state == ACTIVATED) { - int ind_start = 0; - while (ind_start < DYNAMIC_MACRO_MAX_LENGTH) { - for (int i = ind_start; i < DYNAMIC_MACRO_MAX_LENGTH; i++) { - if (dynamic_macro_buffer[i] == 0) { - break; - } - register_code(dynamic_macro_buffer[i]); - } - send_keyboard_report(); - wait_ms(TAP_TIMEOUT); - for (int i = ind_start; i < DYNAMIC_MACRO_MAX_LENGTH; i++) { - if (dynamic_macro_buffer[i] == 0) { - ind_start = i + 1; - break; - } - unregister_code(dynamic_macro_buffer[i]); - } - send_keyboard_report(); - } - *self->state = IDLE; - } -} - -void string_in(const struct Chord* self) { - if (*self->state == ACTIVATED) { - char buffer[STRING_MAX_LENGTH]; - strcpy_P(buffer, (char*)pgm_read_word(&(strings[self->value1]))); - send_string(buffer); - } -} - -void clear(const struct Chord* self); - -void reset_keyboard_kb(void){ -#ifdef WATCHDOG_ENABLE - MCUSR = 0; - wdt_disable(); - wdt_reset(); -#endif - reset_keyboard(); -} - -void reset(const struct Chord* self) { - if (*self->state == ACTIVATED) { - reset_keyboard_kb(); - } -} diff --git a/users/dennytom/chording_engine/engine.part.3 b/users/dennytom/chording_engine/engine.part.3 deleted file mode 100644 index cf19008abc..0000000000 --- a/users/dennytom/chording_engine/engine.part.3 +++ /dev/null @@ -1,404 +0,0 @@ -bool are_hashed_keycodes_in_sound(HASH_TYPE keycodes_hash, HASH_TYPE sound) { - return (keycodes_hash & sound) == keycodes_hash; -} - -uint8_t keycode_to_index(uint16_t keycode) { - return keycode - FIRST_INTERNAL_KEYCODE; -} - -void sound_keycode_array(uint16_t keycode) { - uint8_t index = keycode_to_index(keycode); - keycode_index++; - keycodes_buffer_array[index] = keycode_index; -} - -void silence_keycode_hash_array(HASH_TYPE keycode_hash) { - for (int i = 0; i < NUMBER_OF_KEYS; i++) { - bool index_in_hash = ((HASH_TYPE) 1 << i) & keycode_hash; - if (index_in_hash) { - uint8_t current_val = keycodes_buffer_array[i]; - keycodes_buffer_array[i] = 0; - for (int j = 0; j < NUMBER_OF_KEYS; j++) { - if (keycodes_buffer_array[j] > current_val) { - keycodes_buffer_array[j]--; - } - } - keycode_index--; - } - } -} - -bool are_hashed_keycodes_in_array(HASH_TYPE keycode_hash) { - for (int i = 0; i < NUMBER_OF_KEYS; i++) { - bool index_in_hash = ((HASH_TYPE) 1 << i) & keycode_hash; - bool index_in_array = (bool) keycodes_buffer_array[i]; - if (index_in_hash && !index_in_array) { - return false; - } - } - return true; -} - -void kill_one_shots(void) { - struct Chord chord_storage; - struct Chord* chord_ptr; - struct Chord* chord; - - for (int i = 0; i < NUMBER_OF_CHORDS; i++) { - chord_ptr = (struct Chord*) pgm_read_word (&list_of_chords[i]); - memcpy_P(&chord_storage, chord_ptr, sizeof(struct Chord)); - chord = &chord_storage; - - if (*chord->state == IN_ONE_SHOT) { - *chord->state = RESTART; - chord->function(chord); - if (*chord->state == RESTART) { - *chord->state = IDLE; - } - } - } -} - -void process_finished_dances(void) { - struct Chord chord_storage; - struct Chord* chord_ptr; - struct Chord* chord; - - for (int i = 0; i < NUMBER_OF_CHORDS; i++) { - chord_ptr = (struct Chord*) pgm_read_word (&list_of_chords[i]); - memcpy_P(&chord_storage, chord_ptr, sizeof(struct Chord)); - chord = &chord_storage; - - if (*chord->state == ACTIVATED) { - *chord->state = PRESS_FROM_ACTIVE; - chord->function(chord); - if (a_key_went_through) { - kill_one_shots(); - } - dance_timer = timer_read(); - } else if (*chord->state == IDLE_IN_DANCE) { - *chord->state = FINISHED; - chord->function(chord); - if (*chord->state == FINISHED) { - *chord->state = RESTART; - if (*chord->state == RESTART) { - *chord->state = IDLE; - } - } - } else if (*chord->state == PRESS_FROM_ACTIVE) { - *chord->state = FINISHED_FROM_ACTIVE; - chord->function(chord); - if (a_key_went_through) { - kill_one_shots(); - } - dance_timer = timer_read(); - } - } -} - -uint8_t keycodes_buffer_array_min(uint8_t* first_keycode_index) { - for (int i = 0; i < NUMBER_OF_KEYS; i++) { - if (keycodes_buffer_array[i] == 1) { - if (first_keycode_index != NULL) { - *first_keycode_index = (uint8_t) i; - } - return 1; - } - } - return 0; -} - -void remove_subchords(void) { - struct Chord chord_storage; - struct Chord* chord_ptr; - struct Chord* chord; - - for (int i = 0; i < NUMBER_OF_CHORDS; i++) { - chord_ptr = (struct Chord*) pgm_read_word (&list_of_chords[i]); - memcpy_P(&chord_storage, chord_ptr, sizeof(struct Chord)); - chord = &chord_storage; - - if (!(*chord->state == READY || *chord->state == READY_IN_DANCE || *chord->state == READY_LOCKED)) { - continue; - } - - struct Chord chord_storage_2; - struct Chord* chord_ptr_2; - struct Chord* chord_2; - for (int j = 0; j < NUMBER_OF_CHORDS; j++) { - if (i == j) {continue;} - - chord_ptr_2 = (struct Chord*) pgm_read_word (&list_of_chords[j]); - memcpy_P(&chord_storage_2, chord_ptr_2, sizeof(struct Chord)); - chord_2 = &chord_storage_2; - - if (are_hashed_keycodes_in_sound(chord_2->keycodes_hash, chord->keycodes_hash)) { - if (*chord_2->state == READY) { - *chord_2->state = IDLE; - } - if (*chord_2->state == READY_IN_DANCE) { - *chord_2->state = IDLE_IN_DANCE; - } - if (*chord_2->state == READY_LOCKED) { - *chord_2->state = LOCKED; - } - } - } - } -} - -void process_ready_chords(void) { - uint8_t first_keycode_index = 0; - while (keycodes_buffer_array_min(&first_keycode_index)) { - // find ready chords - struct Chord chord_storage; - struct Chord* chord_ptr; - struct Chord* chord; - - for (int i = 0; i < NUMBER_OF_CHORDS; i++) { - chord_ptr = (struct Chord*) pgm_read_word (&list_of_chords[i]); - memcpy_P(&chord_storage, chord_ptr, sizeof(struct Chord)); - chord = &chord_storage; - - // if the chord does not contain the first keycode - bool contains_first_keycode = ((uint32_t) 1 << first_keycode_index) & chord->keycodes_hash; - if (!contains_first_keycode) { - continue; - } - - if (!are_hashed_keycodes_in_array(chord->keycodes_hash)){ - continue; - } - - if (*chord->state == LOCKED) { - *chord->state = READY_LOCKED; - continue; - } - - if (!(chord->pseudolayer == current_pseudolayer || chord->pseudolayer == ALWAYS_ON)) { - continue; - } - - if (*chord->state == IDLE) { - *chord->state = READY; - continue; - } - - if (*chord->state == IDLE_IN_DANCE) { - *chord->state = READY_IN_DANCE; - } - } - - // remove subchords - remove_subchords(); - - // execute logic - // this should be only one chord - for (int i = 0; i < NUMBER_OF_CHORDS; i++) { - chord_ptr = (struct Chord*) pgm_read_word (&list_of_chords[i]); - memcpy_P(&chord_storage, chord_ptr, sizeof(struct Chord)); - chord = &chord_storage; - - if (*chord->state == READY_LOCKED) { - *chord->state = RESTART; - chord->function(chord); - if (*chord->state == RESTART) { - *chord->state = IDLE; - } - break; - } - - if (*chord->state == READY || *chord->state == READY_IN_DANCE) { - if (last_chord && last_chord != chord) { - process_finished_dances(); - } - - bool lock_next_prev_state = lock_next; - - *chord->state = ACTIVATED; - chord->function(chord); - dance_timer = timer_read(); - - if (lock_next && lock_next == lock_next_prev_state) { - lock_next = false; - *chord->state = PRESS_FROM_ACTIVE; - chord->function(chord); - if (*chord->state == PRESS_FROM_ACTIVE) { - *chord->state = LOCKED; - } - if (a_key_went_through) { - kill_one_shots(); - } - } - break; - } - } - - // silence notes - silence_keycode_hash_array(chord->keycodes_hash); - } -} - -void deactivate_active_chords(uint16_t keycode) { - HASH_TYPE hash = (HASH_TYPE)1 << (keycode - SAFE_RANGE); - bool broken; - struct Chord chord_storage; - struct Chord* chord_ptr; - struct Chord* chord; - - for (int i = 0; i < NUMBER_OF_CHORDS; i++) { - chord_ptr = (struct Chord*) pgm_read_word (&list_of_chords[i]); - memcpy_P(&chord_storage, chord_ptr, sizeof(struct Chord)); - chord = &chord_storage; - - broken = are_hashed_keycodes_in_sound(hash, chord->keycodes_hash); - if (!broken) { - continue; - } - - switch (*chord->state) { - case ACTIVATED: - *chord->state = DEACTIVATED; - chord->function(chord); - - if (*chord->state == DEACTIVATED) { - dance_timer = timer_read(); - *chord->state = IDLE_IN_DANCE; - } - if (*chord->state != IN_ONE_SHOT) { - kill_one_shots(); - } - break; - case PRESS_FROM_ACTIVE: - case FINISHED_FROM_ACTIVE: - *chord->state = RESTART; - chord->function(chord); - if (*chord->state == RESTART) { - *chord->state = IDLE; - } - kill_one_shots(); - break; - default: - break; - } - } - -} - -void process_command(void) { - command_mode = 0; - for (int i = 0; i < COMMAND_MAX_LENGTH; i++) { - if (command_buffer[i]) { - register_code(command_buffer[i]); - } - send_keyboard_report(); - } - wait_ms(TAP_TIMEOUT); - for (int i = 0; i < COMMAND_MAX_LENGTH; i++) { - if (command_buffer[i]) { - unregister_code(command_buffer[i]); - } - send_keyboard_report(); - } - for (int i = 0; i < COMMAND_MAX_LENGTH; i++) { - command_buffer[i] = 0; - } - command_ind = 0; -} - -void process_leader(void) { - in_leader_mode = false; - for (int i = 0; i < NUMBER_OF_LEADER_COMBOS; i++) { - uint16_t trigger[LEADER_MAX_LENGTH]; - memcpy_P(trigger, leader_triggers[i], LEADER_MAX_LENGTH * sizeof(uint16_t)); - - if (identical(leader_buffer, trigger)) { - (*leader_functions[i])(); - break; - } - } - for (int i = 0; i < LEADER_MAX_LENGTH; i++) { - leader_buffer[i] = 0; - } -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - if (keycode < FIRST_INTERNAL_KEYCODE || keycode > LAST_INTERNAL_KEYCODE) { - return true; - } - - if (record->event.pressed) { - sound_keycode_array(keycode); - } else { - process_ready_chords(); - deactivate_active_chords(keycode); - } - chord_timer = timer_read(); - leader_timer = timer_read(); - - return false; -} - -void matrix_scan_user(void) { - bool chord_timer_expired = timer_elapsed(chord_timer) > CHORD_TIMEOUT; - if (chord_timer_expired && keycodes_buffer_array_min(NULL)) { - process_ready_chords(); - } - - bool dance_timer_expired = timer_elapsed(dance_timer) > DANCE_TIMEOUT; - if (dance_timer_expired) { // would love to have && in_dance but not sure how - process_finished_dances(); - } - - bool in_command_mode = command_mode == 2; - if (in_command_mode) { - process_command(); - } - - bool leader_timer_expired = timer_elapsed(leader_timer) > LEADER_TIMEOUT; - if (leader_timer_expired && in_leader_mode) { - process_leader(); - } - -} - -void clear(const struct Chord* self) { - if (*self->state == ACTIVATED) { - // kill all chords - struct Chord chord_storage; - struct Chord* chord_ptr; - struct Chord* chord; - - for (int i = 0; i < NUMBER_OF_CHORDS; i++) { - chord_ptr = (struct Chord*) pgm_read_word (&list_of_chords[i]); - memcpy_P(&chord_storage, chord_ptr, sizeof(struct Chord)); - chord = &chord_storage; - - *chord->state = IDLE; - - if (chord->counter) { - *chord->counter = 0; - } - } - - // clear keyboard - clear_keyboard(); - send_keyboard_report(); - - // switch to default pseudolayer - current_pseudolayer = DEFAULT_PSEUDOLAYER; - - // clear all keyboard states - lock_next = false; - autoshift_mode = true; - command_mode = 0; - in_leader_mode = false; - leader_ind = 0; - dynamic_macro_mode = false; - a_key_went_through = false; - - for (int i = 0; i < DYNAMIC_MACRO_MAX_LENGTH; i++) { - dynamic_macro_buffer[i] = 0; - } - } -} \ No newline at end of file diff --git a/users/dennytom/chording_engine/keymap_def.schema.json b/users/dennytom/chording_engine/keymap_def.schema.json deleted file mode 100644 index 9f9a8c5cbc..0000000000 --- a/users/dennytom/chording_engine/keymap_def.schema.json +++ /dev/null @@ -1,337 +0,0 @@ -{ - "definitions": {}, - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "title": "The Keymap definition", - "required": [ - "keys", - "parameters", - "layers", - "chord_sets", - "pseudolayers", - "leader_sequences", - "extra_code", - "extra_dependencies" - ], - "properties": { - "keys": { - "type": "array", - "title": "The Internal Keycodes", - "description": "Name Keycodes for the Chording Engine. These can be any string except already valid QMK keycodes.", - "items": { - "type": "string", - "title": "Individual Keycode", - "examples": [ - "L1", - "R1", - "TOP1", - "THUMB_3", - "Bottom_6" - ] - } - }, - "parameters": { - "type": "object", - "title": "Keyboard Parameters", - "description": "Keyboard, user and layout specific parameters like timers, max length for buffers and default pseudolayer.", - "required": [ - "layout_function_name", - "chord_timeout", - "dance_timeout", - "leader_timeout", - "tap_timeout", - "command_max_length", - "leader_max_length", - "dynamic_macro_max_length", - "string_max_length", - "long_press_multiplier", - "default_pseudolayer" - ], - "properties": { - "layout_function_name": { - "type": "string", - "examples": [ - "LAYOUT_ginny", - "" - ] - }, - "chord_timeout": { - "type": "integer", - "title": "The Chord Timeout", - "description": "The time in ms you have to press additional keys before the engine assumes you finished pressing keys that are part of a chord.", - "default": 100 - }, - "dance_timeout": { - "type": "integer", - "title": "The Dance Timeout", - "description": "The time in ms you have to repeatedly activate a chord before the engine assumes you finished a dance.", - "default": 200 - }, - "leader_timeout": { - "type": "integer", - "title": "The Leader Timeout", - "description": "The time in ms you have to activate additional chords before the engine assumes you finished adding chords to a leader sequence.", - "default": 750 - }, - "tap_timeout": { - "type": "integer", - "title": "The Tap Timeout", - "description": "The time in ms you have to finish pressing a chord before the engine assumes that you didn't just tap it but are holding it down.", - "default": 50 - }, - "command_max_length": { - "type": "integer", - "title": "Command Max Length", - "description": "The maximum length for chords buffered in command mode.", - "default": 5 - }, - "leader_max_length": { - "type": "integer", - "title": "Leader Max Length", - "description": "The maximum length of leader sequences you can define in your keymap", - "default": 5 - }, - "dynamic_macro_max_length": { - "type": "integer", - "title": "Dynamic Macro Max Length", - "description": "The maximum number of chords (including Dynamic Macro Next) you can record to a Dynamic Macro", - "default": 20 - }, - "string_max_length": { - "type": "integer", - "title": "String Max Length", - "description": "The maximum length of a string that the STR() chord can accept.", - "default": 16 - }, - "long_press_multiplier": { - "type": "integer", - "title": "Long Press Multiplier", - "description": "How many times does the chord timer have expire before a chord is registered as not only held but in a long press (for example for Autoshift). Has to be integer.", - "default": 3 - }, - "default_pseudolayer": { - "type": "string", - "title": "Default Pseudolayer", - "description": "Which pseudolayer should be active when the keyboard starts / restarts.", - "examples": [ - "BASE", - "QWERTY" - ] - } - } - }, - "layers": { - "type": "array", - "title": "QMK Layers", - "description": "The layers QMK needs to know about. Can contain chording engine's internal keycodes or QMK's keycodes. Do not define chords here, those belong in pseudolayers.", - "minItems": 1, - "uniqueItems": false, - "items": { - "type": "object", - "title": "Individual Layers", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "title": "Type of Individual Layers", - "description": "Auto layer fills all keycodes to be chording engine's internal keycodes, manual let's you place internal and QMK's keycodes however you wish.", - "examples": [ - "auto", - "manual" - ] - }, - "keycodes": { - "type": "array", - "title": "Individual Chord", - "description": "A list of of keys that need to be pressed to activate this chord", - "items": { - "type": "string", - "title": "Individual Keycodes", - "description": "A keycode that is a part of the individual chord. Has to be an internal keycode." - } - } - } - } - }, - "chord_sets": { - "type": "array", - "title": "Chord Sets Definitions", - "description": "Describes predefined sets of chords to ease defining a number of chords in a pseudolayer.", - "items": { - "type": "object", - "required": [ - "name", - "chords" - ], - "properties": { - "name": { - "type": "string", - "title": "Name of the Set", - "examples": [ - "rows", - "asetniop" - ] - }, - "chords": { - "type": "array", - "title": "Chords", - "description": "List of all chords in this set", - "minItems": 1, - "uniqueItems": true, - "items": { - "type": "array", - "title": "Individual Chord", - "description": "A list of of keys that need to be pressed to activate this chord", - "items": { - "type": "string", - "title": "Individual Keycodes", - "description": "A keycode that is a part of the individual chord. Has to be an internal keycode." - } - } - } - } - } - }, - "pseudolayers": { - "type": "array", - "title": "Pseudolayers", - "description": "The pseudolayers holding the chords to be processed by the chording engine.", - "minItems": 1, - "uniqueItems": true, - "items": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "type": "string", - "title": "Name of the Pseudolayer", - "default": null, - "examples": [ - "ALWAYS_ON", - "QWERTY" - ] - }, - "chords": { - "type": "array", - "title": "Chords", - "description": "List of chords belonging on the pseudolayer.", - "items": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "title": "Type of the chord array", - "description": "Defines how this objects describes one or more chords.", - "examples": [ - "visual_array", - "visual", - "simple", - "chord_set" - ] - }, - "keys": { - "type": "array", - "title": "Subset of keys", - "description": "Subset of internal keycodes that will be used when defining the chords. For visual_array type only.", - "examples": [ - "[\"L1\", \"L2\", \"L3\", \"L4\", \"R1\", \"R2\", \"R3\", \"R4\"]" - ], - "items": { - "type": "string" - } - }, - "dictionary": { - "type": "array", - "title": "Dictionary", - "description": "A table. Each row defines in a visual way which keys have to be pressed and what is the desired outcome. For visual_array type only.", - "items": { - "type": "array", - "items": { - "type": "string", - "examples": [ - "[\"X"\, \" "\, \" "\, \"X"\, \"X"\, \" "\, \" "\, \"X"\, \"MO(BASE, NUM)\"] - ] - } - } - }, - "keycode": { - "type": "string", - "title": "Keycode", - "description": "A keycode to be assigned to the chord when it is registered. For simple and visual types only." - }, - "set": { - "type": "string", - "title": "Chord set", - "description": "Name of the chord set to be used. Has to be one already defined in the chord_sets array. For chord_set type only." - }, - "keycodes": { - "type": "array", - "title": "Keycodes", - "description": "List of keycodes to be assigned to each chord when it is registered. For set type only.", - "items": { - "type": "string" - } - }, - "chord": { - "type": "array", - "title": "Chord", - "description": "Array of \"X\"'s and \" \"'s that shows which keys have to be pressed to activate the chord. For visual type only ", - "items": { - "type": "string" - } - } - } - } - } - } - } - }, - "leader_sequences": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "examples": ["fn_L1"] - }, - "function": { - "type": "string", - "description": "C code the sequence should run. Instead of here, can be defined in extra_dependencies or extra_code", - "examples": ["void fn_L1(void) { SEND(KC_LCTL); SEND(KC_LALT); SEND(KC_DEL); }"] - }, - "sequence": { - "type": "array", - "items": { - "type": "string" - }, - "examples": [["KC_Q", "KC_Z"]] - } - } - } - }, - "extra_code": { - "type": "string", - "label": "Extra Code", - "description": "C code to be inserted into the generated keymap", - "examples": ["void fn_L1(void) {\n SEND(KC_LCTL);\n SEND(KC_LALT);\n SEND(KC_DEL);\n}\n"], - "default": "" - }, - "extra_dependencies": { - "type": "array", - "label": "Extra Dependencies", - "description": "List of files to be #include'd in the generated keymap", - "examples": [ - "[\"user_functions.c\"]" - ], - "default": "" - } - } -} \ No newline at end of file diff --git a/users/dennytom/chording_engine/parser.py b/users/dennytom/chording_engine/parser.py deleted file mode 100644 index b62cf007e6..0000000000 --- a/users/dennytom/chording_engine/parser.py +++ /dev/null @@ -1,231 +0,0 @@ -#!/usr/bin/env python3 - -import json -from functools import reduce -from chord import * -import sys - -comma_separator = (lambda x, y: str(x) + ", " + str(y)) -string_sum = (lambda x, y: str(x) + " + " + str(y)) -newline_separator = (lambda x, y: str(x) + "\n" + str(y)) - -def add_includes(data): - output_buffer = "" - if not ("do_not_include_QMK" in data["parameters"] and data["parameters"]["do_not_include_QMK"] == True): - output_buffer += "#include QMK_KEYBOARD_H\n" - if len(data["extra_dependencies"]) > 0: - for dependecy in data["extra_dependencies"]: - output_buffer += '#include "' + dependecy + '"\n' - - return output_buffer + "\n" - -def add_parameters(data): - output_buffer = "" - - number_of_keys = len(data["keys"]) - if number_of_keys <= 8: - hash_type = "uint8_t" - elif number_of_keys <= 16: - hash_type = "uint16_t" - elif number_of_keys <= 32: - hash_type = "uint32_t" - elif number_of_keys <= 64: - hash_type = "uint64_t" - else: - raise Exception("The engine currently supports only up to 64 keys.") - - output_buffer += "#define CHORD_TIMEOUT " + str(data["parameters"]["chord_timeout"]) + "\n" - output_buffer += "#define DANCE_TIMEOUT " + str(data["parameters"]["dance_timeout"]) + "\n" - output_buffer += "#define LEADER_TIMEOUT " + str(data["parameters"]["leader_timeout"]) + "\n" - output_buffer += "#define TAP_TIMEOUT " + str(data["parameters"]["tap_timeout"]) + "\n" - output_buffer += "#define LONG_PRESS_MULTIPLIER " + str(data["parameters"]["long_press_multiplier"]) + "\n" - output_buffer += "#define DYNAMIC_MACRO_MAX_LENGTH " + str(data["parameters"]["dynamic_macro_max_length"]) + "\n" - output_buffer += "#define COMMAND_MAX_LENGTH " + str(data["parameters"]["command_max_length"]) + "\n" - output_buffer += "#define STRING_MAX_LENGTH " + str(data["parameters"]["string_max_length"]) + "\n" - output_buffer += "#define LEADER_MAX_LENGTH " + str(data["parameters"]["leader_max_length"]) + "\n" - output_buffer += "#define HASH_TYPE " + hash_type + "\n" - output_buffer += "#define NUMBER_OF_KEYS " + str(len(data["keys"])) + "\n" - output_buffer += "#define DEFAULT_PSEUDOLAYER " + data["parameters"]["default_pseudolayer"] + "\n" - - return output_buffer + "\n" - -def add_keycodes(data): - output_buffer = "" - - if not len(data["keys"]) == len(set(data["keys"])): - raise Exception("The keys must have unique names") - - for key, counter in zip(data["keys"], range(0, len(data["keys"]))): - output_buffer += "#define H_" + key + " ((HASH_TYPE) 1 << " + str(counter) + ")\n" - output_buffer += "\n" - - output_buffer += "enum internal_keycodes {\n" - output_buffer += " " + data["keys"][0] + " = SAFE_RANGE,\n" - output_buffer += " " + reduce(comma_separator, [key for key in data["keys"][1:]]) + ",\n" - output_buffer += " FIRST_INTERNAL_KEYCODE = " + data["keys"][0] + ",\n" - output_buffer += " LAST_INTERNAL_KEYCODE = " + data["keys"][-1] + "\n" - output_buffer += "};\n" - - return output_buffer + "\n" - -def add_pseudolayers(data): - output_buffer = "" - - if len(data["pseudolayers"]) == 0: - raise Exception("You didn't define any pseudolayers") - - if not len([pseudolayer["name"] for pseudolayer in data["pseudolayers"]]) == len(set([pseudolayer["name"] for pseudolayer in data["pseudolayers"]])): - raise Exception("The pseudolayers must have unique names") - - pseudolayers = data["pseudolayers"] - if not "ALWAYS_ON" in [layer["name"] for layer in pseudolayers]: - pseudolayers += [{"name": "ALWAYS_ON", "chords": []}] # the engine expects ALWAYS_ON to exist - - output_buffer += "enum pseudolayers {\n" - output_buffer += " " + reduce(comma_separator, [layer["name"] for layer in pseudolayers]) + "\n" - output_buffer += "};\n" - - return output_buffer + "\n" - -def add_layers(data): - output_buffer = "" - - output_buffer += "const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {\n" - for layer, counter in zip(data["layers"], range(0,len(data["layers"]))): - if layer["type"] == "auto": - output_buffer += " [" + str(counter) + "] = " + data["parameters"]["layout_function_name"] + "(" + reduce(comma_separator, [key for key in data["keys"]]) + "),\n" - else: - output_buffer += " [" + str(counter) + "] = " + data["parameters"]["layout_function_name"] + "(" + reduce(comma_separator, [key for key in layer["keycodes"]]) + "),\n" - output_buffer += "};\n" - output_buffer += "size_t keymapsCount = " + str(len(data["layers"])) + ";\n" - - return output_buffer + "\n" - -def prep_buffers(data): - output_buffer = "" - - output_buffer += "uint8_t keycodes_buffer_array[] = {\n" - output_buffer += " " + reduce(comma_separator, ["0"] * len(data["keys"])) + "\n" - output_buffer += "};\n" - output_buffer += "\n" - - output_buffer += "uint8_t command_buffer[] = {\n" - output_buffer += " " + reduce(comma_separator, ["0"] * data["parameters"]["command_max_length"]) + "\n" - output_buffer += "};\n" - output_buffer += "\n" - - output_buffer += "uint16_t leader_buffer[] = {\n" - output_buffer += " " + reduce(comma_separator, ["0"] * data["parameters"]["leader_max_length"]) + "\n" - output_buffer += "};\n" - output_buffer += "\n" - - output_buffer += "uint8_t dynamic_macro_buffer[] = {\n" - output_buffer += " " + reduce(comma_separator, ["0"] * data["parameters"]["dynamic_macro_max_length"]) + "\n" - output_buffer += "};" - - return output_buffer + "\n" - -def parse_keyboard_specifics(data): - keyboard_part_0 = add_includes(data) - keyboard_part_0 += add_keycodes(data) - keyboard_part_0 += add_pseudolayers(data) - keyboard_part_0 += add_parameters(data) - keyboard_part_0 += add_layers(data) - keyboard_part_0 += prep_buffers(data) - - return keyboard_part_0 + '\n' - -def parse_chords(data): - keyboard_part_2 = "" - strings = [] - number_of_strings = 0 - number_of_chords = 0 - - for pseudolayer in data["pseudolayers"]: - name = pseudolayer["name"] - for chord in pseudolayer["chords"]: - if chord["type"] == "chord_set": - keycodes = reduce(comma_separator, [word for word in chord["keycodes"]]) - [keyboard_part_2, number_of_chords, number_of_strings, strings] = add_chord_set(name, keycodes, chord["set"], data, keyboard_part_2, number_of_chords, number_of_strings, strings) - if chord["type"] == "visual_array": - [keyboard_part_2, number_of_chords, number_of_strings, strings] = add_dictionary(name, chord["keys"], chord["dictionary"], keyboard_part_2, number_of_chords, number_of_strings, strings) - if chord["type"] == "visual": - keycodes = reduce(comma_separator, [word for word in chord["chord"]]) - [keyboard_part_2, number_of_chords, number_of_strings, strings] = secret_chord(name, chord["keycode"], keycodes, data, keyboard_part_2, number_of_chords, number_of_strings, strings) - elif chord["type"] == "simple": - keycodes = reduce(string_sum, ["H_" + word for word in chord["chord"]]) - [keyboard_part_2, number_of_chords, number_of_strings, strings] = add_key(name, keycodes, chord["keycode"], keyboard_part_2, number_of_chords, number_of_strings, strings) - keyboard_part_2 += "\n" - - keyboard_part_2 += "const struct Chord* const list_of_chords[] PROGMEM = {\n" - keyboard_part_2 += " " + reduce(comma_separator, ["&chord_" + str(i) for i in range(0, number_of_chords)]) + "\n" - keyboard_part_2 += "};\n" - keyboard_part_2 += "\n" - - if len(data["leader_sequences"]) > 0: - keyboard_part_2 += reduce(newline_separator, [sequence["function"] for sequence in data["leader_sequences"]]) + "\n\n" - keyboard_part_2 += "const uint16_t leader_triggers[][LEADER_MAX_LENGTH] PROGMEM = {\n" - for sequence in data["leader_sequences"]: - keyboard_part_2 += " {" + reduce(comma_separator, sequence["sequence"] + ["0"] * (data["parameters"]["leader_max_length"] - len(sequence["sequence"]))) + "},\n" - keyboard_part_2 += "};\n\n" - keyboard_part_2 += "void (*leader_functions[]) (void) = {\n" - keyboard_part_2 += " " + reduce(comma_separator, ["&" + sequence["name"] for sequence in data["leader_sequences"]]) + "\n" - keyboard_part_2 += "};\n" - else: - keyboard_part_2 += "const uint16_t** const leader_triggers PROGMEM = NULL;\n" - keyboard_part_2 += "void (*leader_functions[]) (void) = {};\n" - keyboard_part_2 += "\n" - - keyboard_part_2 += "#define NUMBER_OF_CHORDS " + str(number_of_chords) + "\n" - keyboard_part_2 += "#define NUMBER_OF_LEADER_COMBOS " + str(len(data["leader_sequences"])) - - return keyboard_part_2 + "\n\n" - -def parse_strings_for_chords(data): - keyboard_part_1 = "" - - for string, i in zip(strings, range(0, len(strings))): - keyboard_part_1 += "const char string_" + str(i) + " [] PROGMEM = \"" + string + "\";\n" - - keyboard_part_1 += "\n" - keyboard_part_1 += "const char * const strings[] PROGMEM = {\n" - if len(strings) > 0: - keyboard_part_1 += " " + reduce(comma_separator, ["string_" + str(i) for i in range(0, len(strings))]) - keyboard_part_1 += "\n};\n" - - return keyboard_part_1 - -def main(): - if len(sys.argv) != 3: - raise Exception("Wrong number of arguments.\n\nUsage: python parser.py keymap.json keymap.c") - - input_filepath = sys.argv[1] - output_filepath = sys.argv[2] - - with open(input_filepath, "r") as read_file: - data = json.load(read_file) - - keyboard_part_0 = parse_keyboard_specifics(data) - keyboard_part_1 = parse_strings_for_chords(data) - keyboard_part_2 = parse_chords(data) - - engine_part_1 = open("engine.part.1", "r").read() - engine_part_2 = open("engine.part.2", "r").read() + "\n" - engine_part_3 = open("engine.part.3", "r").read() - - output_buffer = keyboard_part_0 - output_buffer += engine_part_1 - - if len(data["extra_code"]) > 0: - output_buffer += data["extra_code"] + "\n" - - output_buffer += keyboard_part_1 - output_buffer += engine_part_2 - output_buffer += keyboard_part_2 - output_buffer += engine_part_3 - - with open(output_filepath, "w") as write_file: - write_file.write(output_buffer) - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/users/dennytom/chording_engine/state_machine.dot b/users/dennytom/chording_engine/state_machine.dot deleted file mode 100644 index 431e6f69b6..0000000000 --- a/users/dennytom/chording_engine/state_machine.dot +++ /dev/null @@ -1,49 +0,0 @@ -digraph { - IDLE - READY - ACTIVATED - DEACTIVATED - PRESS_FROM_ACTIVE - FINISHED_FROM_ACTIVE - IDLE_IN_DANCE - READY_IN_DANCE - FINISHED - LOCKED - READY_LOCKED - RESTART - IN_ONE_SHOT - - // common - FINISHED -> RESTART; - RESTART -> IDLE; - DEACTIVATED -> IDLE_IN_DANCE; - - // kill_one_shots() - IN_ONE_SHOT -> RESTART [label="non-one-shot key went through", color="blue"]; - - // process_finished_dances() - ACTIVATED -> PRESS_FROM_ACTIVE [label="dance timer", color="green"]; - IDLE_IN_DANCE -> FINISHED [label="dance timer", color="green"]; - PRESS_FROM_ACTIVE -> FINISHED_FROM_ACTIVE [label="dance timer", color="green"]; - - // remove_subchords() - READY -> IDLE [label="superchord active", color="red"]; - READY_IN_DANCE -> IDLE_IN_DANCE [label="superchord active", color="red"]; - READY_LOCKED -> LOCKED [label="superchord active", color="red"]; - - // process_ready_chords() - LOCKED -> READY_LOCKED [label="all keys pressed", color="orange"]; - IDLE -> READY [label="all keys pressed", color="orange"]; - IDLE_IN_DANCE -> READY_IN_DANCE [label="all keys pressed", color="orange"]; - - READY_LOCKED -> RESTART [label="chord timer", color="orange"]; - READY -> ACTIVATED [label="chord timer", color="orange"]; - READY_IN_DANCE -> ACTIVATED [label="chord timer", color="orange"]; - ACTIVATED -> PRESS_FROM_ACTIVE [label="lock next", color="orange"]; - PRESS_FROM_ACTIVE -> LOCKED [label="lock next", color="orange"]; - - // deactivate_active_chords() - ACTIVATED -> DEACTIVATED [label="a key lifted", color="purple"]; - PRESS_FROM_ACTIVE -> RESTART [label="a key lifted", color="orange"]; - FINISHED_FROM_ACTIVE -> DEACTIVATED [label="a key lifted", color="orange"]; -} \ No newline at end of file diff --git a/users/dennytom/chording_engine/state_machine.svg b/users/dennytom/chording_engine/state_machine.svg deleted file mode 100644 index 7731689883..0000000000 --- a/users/dennytom/chording_engine/state_machine.svg +++ /dev/null @@ -1,235 +0,0 @@ - - - - - - -%0 - - - -IDLE - -IDLE - - - -READY - -READY - - - -IDLE->READY - - -all keys pressed - - - -READY->IDLE - - -superchord active - - - -ACTIVATED - -ACTIVATED - - - -READY->ACTIVATED - - -chord timer - - - -DEACTIVATED - -DEACTIVATED - - - -ACTIVATED->DEACTIVATED - - -a key lifted - - - -PRESS_FROM_ACTIVE - -PRESS_FROM_ACTIVE - - - -ACTIVATED->PRESS_FROM_ACTIVE - - -dance timer - - - -ACTIVATED->PRESS_FROM_ACTIVE - - -lock next - - - -IDLE_IN_DANCE - -IDLE_IN_DANCE - - - -DEACTIVATED->IDLE_IN_DANCE - - - - - -FINISHED_FROM_ACTIVE - -FINISHED_FROM_ACTIVE - - - -PRESS_FROM_ACTIVE->FINISHED_FROM_ACTIVE - - -dance timer - - - -LOCKED - -LOCKED - - - -PRESS_FROM_ACTIVE->LOCKED - - -lock next - - - -RESTART - -RESTART - - - -PRESS_FROM_ACTIVE->RESTART - - -a key lifted - - - -FINISHED_FROM_ACTIVE->DEACTIVATED - - -a key lifted - - - -READY_IN_DANCE - -READY_IN_DANCE - - - -IDLE_IN_DANCE->READY_IN_DANCE - - -all keys pressed - - - -FINISHED - -FINISHED - - - -IDLE_IN_DANCE->FINISHED - - -dance timer - - - -READY_IN_DANCE->ACTIVATED - - -chord timer - - - -READY_IN_DANCE->IDLE_IN_DANCE - - -superchord active - - - -FINISHED->RESTART - - - - - -READY_LOCKED - -READY_LOCKED - - - -LOCKED->READY_LOCKED - - -all keys pressed - - - -READY_LOCKED->LOCKED - - -superchord active - - - -READY_LOCKED->RESTART - - -chord timer - - - -RESTART->IDLE - - - - - -IN_ONE_SHOT - -IN_ONE_SHOT - - - -IN_ONE_SHOT->RESTART - - -non-one-shot key went through - - - diff --git a/users/dennytom/chording_engine/tests/minunit.h b/users/dennytom/chording_engine/tests/minunit.h deleted file mode 100644 index d3f51bfb4f..0000000000 --- a/users/dennytom/chording_engine/tests/minunit.h +++ /dev/null @@ -1,288 +0,0 @@ -#define mu_assert(message, test) \ - do { \ - if (!(test)) { \ - return message; \ - } \ - } while (0) - -#define RED "\033[0;31m" -#define GREEN "\033[0;32m" -#define NC "\033[0m" - -enum ASSERT_TYPES { - UINT, - INT -}; - -#define BUFF_SIZE 1024 -char buffer[BUFF_SIZE]; - -#define ASSERT_EQ(type, actual, expected) \ - do { \ - if (actual != expected) { \ - switch (type) { \ - case UINT: \ - snprintf(buffer, BUFF_SIZE, "\nline %d\nvar %s\nactual = %u\nexpected = %u\n", __LINE__, #actual, actual, expected); \ - break; \ - case INT: \ - snprintf(buffer, BUFF_SIZE, "\nline %d\nvar %s\nactual = %d\nexpected = %d\n", __LINE__, #actual, actual, expected); \ - break; \ - default: \ - snprintf(buffer, BUFF_SIZE, "\nline %d\nunsupported ASSERT_EQ type\n", __LINE__); \ - break; \ - } \ - printf("%s\n", buffer); \ - passed = false; \ - all_passed = false; \ - } \ - } while (0) - -#include -#include -#include -#include -#include - -#define MATRIX_ROWS 2 -#define MATRIX_COLS 10 -#define LAYOUT_test( \ - k09, k08, k07, k06, k05, k04, k03, k02, k01, k00, \ - k19, k18, k17, k16, k15, k14, k13, k12, k11, k10 \ -) { \ - { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09}, \ - { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19}, \ -} - -#define PROGMEM -#define memcpy_P memcpy -const struct Chord* pgm_read_word(const struct Chord* const* chord) {return *chord;} - -typedef struct { - uint8_t col; - uint8_t row; -} keypos_t; - -typedef struct { - keypos_t key; - bool pressed; - uint16_t time; -} keyevent_t; - -typedef struct { - bool interrupted :1; - bool reserved2 :1; - bool reserved1 :1; - bool reserved0 :1; - uint8_t count :4; -} tap_t; - -typedef struct { - keyevent_t event; - tap_t tap; -} keyrecord_t; - -keyrecord_t pressed = {{{0,0},true,0}, {0,0,0,0,0}}; -keyrecord_t depressed = {{{0,0},false,0}, {0,0,0,0,0}}; - -enum keycodes { - KC_NO, - KC_TILDE, - KC_GRAVE, - KC_EXCLAIM, - KC_1, - KC_AT, - KC_2, - KC_HASH, - KC_3, - KC_DOLLAR, - KC_4, - KC_PERCENT, - KC_5, - KC_CIRCUMFLEX, - KC_6, - KC_AMPERSAND, - KC_7, - KC_ASTERISK, - KC_8, - KC_LEFT_PAREN, - KC_9, - KC_RIGHT_PAREN, - KC_0, - KC_UNDERSCORE, - KC_MINUS, - KC_PLUS, - KC_EQUAL, - KC_LEFT_CURLY_BRACE, - KC_LEFT_BRACKET, - KC_RIGHT_CURLY_BRACE, - KC_RIGHT_BRACKET, - KC_PIPE, - KC_BACKSLASH, - KC_COLON, - KC_SEMICOLON, - KC_DOUBLE_QUOTE, - KC_QUOTE, - KC_LEFT_ANGLE_BRACKET, - KC_COMMA, - KC_RIGHT_ANGLE_BRACKET, - KC_DOT, - KC_QUESTION, - KC_SLASH, - KC_Q, - KC_W, - KC_E, - KC_R, - KC_T, - KC_Y, - KC_U, - KC_I, - KC_O, - KC_P, - KC_A, - KC_S, - KC_D, - KC_F, - KC_G, - KC_H, - KC_J, - KC_K, - KC_L, - KC_Z, - KC_X, - KC_C, - KC_V, - KC_B, - KC_N, - KC_M, - KC_ESC, - KC_LSFT, - KC_LCTL, - KC_LGUI, - KC_LALT, - KC_RALT, - KC_RCTL, - KC_RGUI, - KC_RSFT, - KC_TAB, - KC_DEL, - KC_INS, - KC_BSPC, - KC_ENTER, - KC_SPACE, - 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_LEFT, - KC_DOWN, - KC_UP, - KC_RIGHT, - - SAFE_RANGE -}; - -#define HISTORY 20 - -int16_t current_time; -uint8_t keyboard_history[HISTORY][SAFE_RANGE-1]; -int16_t time_history[HISTORY]; -uint8_t history_index; - -void register_code(int16_t keycode) { - history_index++; - for (int j = 0; j < SAFE_RANGE-1; j++) { - keyboard_history[history_index][j] = keyboard_history[history_index-1][j]; - } - keyboard_history[history_index][keycode] = 1; - time_history[history_index] = current_time; -}; -void unregister_code(int16_t keycode) { - history_index++; - for (int j = 0; j < SAFE_RANGE-1; j++) { - keyboard_history[history_index][j] = keyboard_history[history_index-1][j]; - } - keyboard_history[history_index][keycode] = 0; - time_history[history_index] = current_time; -}; -void send_keyboard_report(void) { /*still don't know what this does*/ }; -void matrix_scan_user (void); -void wait_ms(uint16_t ms) { - current_time += ms; -}; -uint16_t timer_read(void) { - uint16_t result = current_time; - return result; -}; -uint16_t timer_elapsed(uint16_t timer) { - uint16_t result = current_time - timer; - return result; -}; -void layer_move(int16_t layer) { /*ignoring for now*/ }; -void clear_keyboard(void) { - history_index++; - for (int j = 0; j < SAFE_RANGE-1; j++) { - keyboard_history[history_index][j] = 0; - } - time_history[history_index] = current_time; -}; -void reset_keyboard(void) { /*ignoring for now*/ }; - -void pause_ms(uint16_t ms) { - for (int i = 0; i < ms; i++) { - current_time++; - matrix_scan_user(); - } -}; - -#define TEST(name) \ - do { \ - printf("%s\n", name); \ - passed = true; \ - do { \ - uint8_t clear_state = ACTIVATED; \ - struct Chord clear_chord PROGMEM = {0, QWERTY, &clear_state, NULL, 0, 0, clear}; \ - clear_chord.function(&clear_chord); \ - } while (0); \ - current_time = 0; \ - history_index = 0; \ - for (int j = 0; j < SAFE_RANGE-1; j++) { \ - keyboard_history[0][j] = 0; \ - } \ - time_history[0] = 0; \ - for (int i = 1; i < HISTORY; i++) { \ - for (int j = 0; j < SAFE_RANGE-1; j++) { \ - keyboard_history[i][j] = -1; \ - } \ - time_history[i] = -1; \ - } - -#define END_TEST \ - if (passed) { \ - printf(GREEN"PASSED"NC"\n"); \ - } else { \ - printf(RED"FAILED"NC"\n"); \ - } \ - } while(0); - -#define MAIN \ -int main(int argc, char **argv) { \ - bool passed = true; \ - bool all_passed = true; - -#define END \ - printf("\n"); \ - if (all_passed) { \ - printf(GREEN"ALL TESTS PASSED"NC"\n"); \ - } else { \ - printf(RED"TESTS FAILED"NC"\n"); \ - } \ - return 1 - all_passed; \ -} \ No newline at end of file diff --git a/users/dennytom/chording_engine/tests/test.c b/users/dennytom/chording_engine/tests/test.c deleted file mode 100644 index 0cc172f0a8..0000000000 --- a/users/dennytom/chording_engine/tests/test.c +++ /dev/null @@ -1,1259 +0,0 @@ -#include "minunit.h" -#include "test_keymap.c" - -MAIN - -// CLEAR_KB -TEST("clear") - for (int i = 0; i < NUMBER_OF_CHORDS; i++) { - struct Chord* chord_ptr = (struct Chord*) pgm_read_word (&list_of_chords[i]); - struct Chord chord_storage; - memcpy_P(&chord_storage, chord_ptr, sizeof(struct Chord)); - struct Chord* chord = &chord_storage; - - *chord->state = READY; - - if (chord->counter) { - *chord->counter = 1; - } - } - - history_index++; - for (int j = 0; j < SAFE_RANGE-1; j++) { - keyboard_history[history_index][j] = 1; - } - - current_pseudolayer = 5; - lock_next = true; - autoshift_mode = false; - command_mode = 1; - in_leader_mode = true; - dynamic_macro_mode = true; - a_key_went_through = true; - - for (int i = 0; i < DYNAMIC_MACRO_MAX_LENGTH; i++) { - dynamic_macro_buffer[i] = 1; - } - - uint8_t clear_state = ACTIVATED; - struct Chord clear_chord PROGMEM = {0, QWERTY, &clear_state, NULL, 0, 0, clear}; - clear_chord.function(&clear_chord); - - for (int i = 0; i < NUMBER_OF_CHORDS; i++) { - struct Chord* chord_ptr = (struct Chord*) pgm_read_word (&list_of_chords[i]); - struct Chord chord_storage; - memcpy_P(&chord_storage, chord_ptr, sizeof(struct Chord)); - struct Chord* chord = &chord_storage; - - ASSERT_EQ(UINT, *chord->state, IDLE); - - if (chord->counter) { - ASSERT_EQ(UINT, *chord->counter, 0); - } - } - - for (int j = 0; j < SAFE_RANGE-1; j++) { - ASSERT_EQ(UINT, keyboard_history[history_index][j], 0); - } - - ASSERT_EQ(UINT, current_pseudolayer, 1); - ASSERT_EQ(UINT, lock_next, false); - ASSERT_EQ(UINT, autoshift_mode, true); - ASSERT_EQ(UINT, command_mode, 0); - ASSERT_EQ(UINT, in_leader_mode, false); - ASSERT_EQ(UINT, leader_ind, 0); - ASSERT_EQ(UINT, dynamic_macro_mode, false); - ASSERT_EQ(UINT, a_key_went_through, false); - - for (int i = 0; i < DYNAMIC_MACRO_MAX_LENGTH; i++) { - ASSERT_EQ(UINT, dynamic_macro_buffer[i], 0); - } -END_TEST - -TEST("pause_ms") - pause_ms(500); - ASSERT_EQ(UINT, current_time, 500); -END_TEST - -// KC -TEST("single_dance_held_states") - ASSERT_EQ(UINT, state_1, IDLE); - process_record_user(TOP1, &pressed); - pause_ms(CHORD_TIMEOUT); - ASSERT_EQ(UINT, state_1, IDLE); - pause_ms(1); - ASSERT_EQ(UINT, state_1, ACTIVATED); - pause_ms(DANCE_TIMEOUT); - ASSERT_EQ(UINT, state_1, ACTIVATED); - pause_ms(1); - ASSERT_EQ(UINT, state_1, PRESS_FROM_ACTIVE); - pause_ms(DANCE_TIMEOUT); - ASSERT_EQ(UINT, state_1, PRESS_FROM_ACTIVE); - pause_ms(1); - ASSERT_EQ(UINT, state_1, FINISHED_FROM_ACTIVE); - process_record_user(TOP1, &depressed); - ASSERT_EQ(UINT, state_1, IDLE); -END_TEST - -TEST("single_dance_held_codes") - ASSERT_EQ(UINT, keyboard_history[history_index][KC_Q], 0); - process_record_user(TOP1, &pressed); - pause_ms(CHORD_TIMEOUT); - ASSERT_EQ(UINT, keyboard_history[history_index][KC_Q], 0); - pause_ms(1); - ASSERT_EQ(UINT, keyboard_history[history_index][KC_Q], 1); - pause_ms(DANCE_TIMEOUT); - ASSERT_EQ(UINT, keyboard_history[history_index][KC_Q], 1); - pause_ms(1); - ASSERT_EQ(UINT, keyboard_history[history_index][KC_Q], 1); - pause_ms(DANCE_TIMEOUT); - ASSERT_EQ(UINT, keyboard_history[history_index][KC_Q], 1); - pause_ms(1); - ASSERT_EQ(UINT, keyboard_history[history_index][KC_Q], 1); - process_record_user(TOP1, &depressed); - ASSERT_EQ(UINT, keyboard_history[history_index][KC_Q], 0); -END_TEST - -TEST("single_dance_tapped_states") - ASSERT_EQ(UINT, state_1, IDLE); - process_record_user(TOP1, &pressed); - pause_ms(CHORD_TIMEOUT); - ASSERT_EQ(UINT, state_1, IDLE); - pause_ms(1); - ASSERT_EQ(UINT, state_1, ACTIVATED); - process_record_user(TOP1, &depressed); - ASSERT_EQ(UINT, state_1, IDLE); -END_TEST - -TEST("single_dance_tapped_codes") - ASSERT_EQ(UINT, keyboard_history[history_index][KC_Q], 0); - process_record_user(TOP1, &pressed); - pause_ms(CHORD_TIMEOUT); - ASSERT_EQ(UINT, keyboard_history[history_index][KC_Q], 0); - pause_ms(1); - ASSERT_EQ(UINT, keyboard_history[history_index][KC_Q], 1); - process_record_user(TOP1, &depressed); - ASSERT_EQ(UINT, keyboard_history[history_index][KC_Q], 0); -END_TEST - -// I can not actually track the states if the tap is faster than chord timeout - -TEST("single_dance_tapped_fast_codes") - ASSERT_EQ(UINT, state_0, IDLE); - process_record_user(TOP1, &pressed); - pause_ms(1); - process_record_user(TOP1, &depressed); - ASSERT_EQ(UINT, keyboard_history[0][KC_Q], 0); - ASSERT_EQ(UINT, keyboard_history[1][KC_Q], 1); - ASSERT_EQ(UINT, keyboard_history[2][KC_Q], 0); -END_TEST - -TEST("subchords_are_ignored") - ASSERT_EQ(UINT, state_0, IDLE); - process_record_user(TOP1, &pressed); - pause_ms(1); - process_record_user(TOP2, &pressed); - pause_ms(CHORD_TIMEOUT + 1); - ASSERT_EQ(UINT, keyboard_history[history_index][KC_Q], 0); - ASSERT_EQ(UINT, keyboard_history[history_index][KC_W], 0); - ASSERT_EQ(UINT, keyboard_history[history_index][KC_ESC], 1); -END_TEST - -TEST("multiple_chords_at_once") - ASSERT_EQ(UINT, state_0, IDLE); - process_record_user(TOP1, &pressed); - pause_ms(1); - process_record_user(TOP3, &pressed); - pause_ms(CHORD_TIMEOUT + 1); - ASSERT_EQ(UINT, keyboard_history[history_index][KC_Q], 1); - ASSERT_EQ(UINT, keyboard_history[history_index][KC_E], 1); -END_TEST - -// MO -TEST("momentary_layer") - ASSERT_EQ(UINT, current_pseudolayer, QWERTY); - process_record_user(BOT7, &pressed); - pause_ms(1); - process_record_user(BOT8, &pressed); - pause_ms(CHORD_TIMEOUT + 1); - ASSERT_EQ(UINT, current_pseudolayer, NUM); - process_record_user(BOT7, &depressed); - pause_ms(1); - process_record_user(BOT8, &depressed); - ASSERT_EQ(UINT, current_pseudolayer, QWERTY); -END_TEST - -TEST("momentary_layer_reset") - ASSERT_EQ(UINT, current_pseudolayer, QWERTY); - process_record_user(BOT7, &pressed); - pause_ms(1); - process_record_user(BOT8, &pressed); - pause_ms(CHORD_TIMEOUT + 1); - ASSERT_EQ(UINT, current_pseudolayer, NUM); - pause_ms(DANCE_TIMEOUT + 1); - ASSERT_EQ(UINT, current_pseudolayer, NUM); - process_record_user(BOT7, &depressed); - pause_ms(1); - process_record_user(BOT8, &depressed); - ASSERT_EQ(UINT, current_pseudolayer, QWERTY); -END_TEST - -TEST("momentary_layer_alt") - ASSERT_EQ(UINT, current_pseudolayer, QWERTY); - - process_record_user(TOP8, &pressed); - pause_ms(1); - process_record_user(TOP9, &pressed); - pause_ms(1); - process_record_user(TOP0, &pressed); - pause_ms(1); - process_record_user(BOT8, &pressed); - pause_ms(1); - process_record_user(BOT9, &pressed); - pause_ms(1); - process_record_user(BOT0, &pressed); - pause_ms(CHORD_TIMEOUT + 1); - - ASSERT_EQ(UINT, current_pseudolayer, NUM); - - process_record_user(TOP8, &depressed); - pause_ms(1); - process_record_user(TOP9, &depressed); - pause_ms(1); - process_record_user(TOP0, &depressed); - pause_ms(1); - process_record_user(BOT8, &depressed); - pause_ms(1); - process_record_user(BOT9, &depressed); - pause_ms(1); - process_record_user(BOT0, &depressed); - - ASSERT_EQ(UINT, current_pseudolayer, FNC); -END_TEST - -// DF -TEST("permanent_layer") - ASSERT_EQ(UINT, current_pseudolayer, QWERTY); - process_record_user(BOT9, &pressed); - pause_ms(1); - process_record_user(BOT0, &pressed); - pause_ms(CHORD_TIMEOUT + 1); - ASSERT_EQ(UINT, current_pseudolayer, NUM); - process_record_user(BOT9, &depressed); - pause_ms(1); - process_record_user(BOT0, &depressed); - ASSERT_EQ(UINT, current_pseudolayer, NUM); - pause_ms(1000); - ASSERT_EQ(UINT, current_pseudolayer, NUM); -END_TEST - -// AT -TEST("autoshift_toggle") - ASSERT_EQ(UINT, autoshift_mode, 1); - uint8_t state = ACTIVATED; - struct Chord chord PROGMEM = {0, QWERTY, &state, NULL, 0, 0, autoshift_toggle}; - chord.function(&chord); - ASSERT_EQ(UINT, autoshift_mode, 0); - state = ACTIVATED; - chord.function(&chord); - ASSERT_EQ(UINT, autoshift_mode, 1); -END_TEST - -// AS -TEST("autoshift_tap") - process_record_user(BOT1, &pressed); - pause_ms(CHORD_TIMEOUT + 1); - process_record_user(BOT1, &depressed); - - ASSERT_EQ(UINT, keyboard_history[0][KC_Z], 0); - ASSERT_EQ(UINT, keyboard_history[0][KC_LSFT], 0); - - ASSERT_EQ(UINT, keyboard_history[1][KC_Z], 1); - ASSERT_EQ(UINT, keyboard_history[1][KC_LSFT], 0); - - ASSERT_EQ(UINT, keyboard_history[2][KC_Z], 0); - ASSERT_EQ(UINT, keyboard_history[2][KC_LSFT], 0); -END_TEST - -TEST("autoshift_hold") - process_record_user(BOT1, &pressed); - pause_ms(CHORD_TIMEOUT + 1); - pause_ms(LONG_PRESS_MULTIPLIER * (DANCE_TIMEOUT + 1)); - process_record_user(BOT1, &depressed); - - ASSERT_EQ(UINT, keyboard_history[0][KC_Z], 0); - ASSERT_EQ(UINT, keyboard_history[0][KC_LSFT], 0); - - ASSERT_EQ(UINT, keyboard_history[1][KC_Z], 0); - ASSERT_EQ(UINT, keyboard_history[1][KC_LSFT], 1); - - ASSERT_EQ(UINT, keyboard_history[2][KC_Z], 1); - ASSERT_EQ(UINT, keyboard_history[2][KC_LSFT], 1); - - ASSERT_EQ(UINT, keyboard_history[3][KC_Z], 0); - ASSERT_EQ(UINT, keyboard_history[3][KC_LSFT], 1); - - ASSERT_EQ(UINT, keyboard_history[4][KC_Z], 0); - ASSERT_EQ(UINT, keyboard_history[4][KC_LSFT], 0); -END_TEST - -TEST("autoshift_hold_off") - autoshift_mode = 0; - process_record_user(BOT1, &pressed); - pause_ms(CHORD_TIMEOUT + 1); - pause_ms(LONG_PRESS_MULTIPLIER * (DANCE_TIMEOUT + 1)); - process_record_user(BOT1, &depressed); - - ASSERT_EQ(UINT, keyboard_history[0][KC_Z], 0); - ASSERT_EQ(UINT, keyboard_history[0][KC_LSFT], 0); - - ASSERT_EQ(UINT, keyboard_history[1][KC_Z], 1); - ASSERT_EQ(UINT, keyboard_history[1][KC_LSFT], 0); - - ASSERT_EQ(UINT, keyboard_history[2][KC_Z], 0); - ASSERT_EQ(UINT, keyboard_history[2][KC_LSFT], 0); -END_TEST - -// LOCK -TEST("lock") - ASSERT_EQ(UINT, keyboard_history[history_index][KC_LSFT], 0); - process_record_user(BOT1, &pressed); - process_record_user(BOT2, &pressed); - pause_ms(CHORD_TIMEOUT + 1); - ASSERT_EQ(UINT, keyboard_history[history_index][KC_LSFT], 1); - process_record_user(BOT1, &depressed); - ASSERT_EQ(UINT, keyboard_history[history_index][KC_LSFT], 0); - pause_ms(1); - process_record_user(BOT2, &depressed); - pause_ms(1); - process_record_user(TOP1, &pressed); - process_record_user(TOP2, &pressed); - process_record_user(BOT1, &pressed); - process_record_user(BOT2, &pressed); - pause_ms(CHORD_TIMEOUT + 1); - process_record_user(TOP1, &depressed); - pause_ms(1); - process_record_user(TOP2, &depressed); - process_record_user(BOT1, &depressed); - process_record_user(BOT2, &depressed); - pause_ms(1); - process_record_user(BOT1, &pressed); - process_record_user(BOT2, &pressed); - pause_ms(CHORD_TIMEOUT + 1); - ASSERT_EQ(UINT, keyboard_history[history_index][KC_LSFT], 1); - process_record_user(BOT1, &depressed); - ASSERT_EQ(UINT, keyboard_history[history_index][KC_LSFT], 1); - pause_ms(1); - process_record_user(BOT2, &depressed); - pause_ms(1000); - process_record_user(BOT1, &pressed); - process_record_user(BOT2, &pressed); - pause_ms(CHORD_TIMEOUT + 1); - ASSERT_EQ(UINT, keyboard_history[history_index][KC_LSFT], 0); - process_record_user(BOT1, &depressed); - pause_ms(1); - process_record_user(BOT2, &depressed); - pause_ms(1000); - ASSERT_EQ(UINT, keyboard_history[history_index][KC_LSFT], 0); -END_TEST - -// OSK -TEST("one_shot_key_tap") - ASSERT_EQ(UINT, keyboard_history[history_index][KC_LSFT], 0); - process_record_user(BOT2, &pressed); - process_record_user(BOT3, &pressed); - pause_ms(CHORD_TIMEOUT + 1); - ASSERT_EQ(UINT, keyboard_history[history_index][KC_LSFT], 0); - process_record_user(BOT2, &depressed); - pause_ms(1); - process_record_user(BOT3, &depressed); - ASSERT_EQ(UINT, keyboard_history[history_index][KC_LSFT], 1); - pause_ms(1000); - ASSERT_EQ(UINT, keyboard_history[history_index][KC_LSFT], 1); - - process_record_user(TOP1, &pressed); - pause_ms(CHORD_TIMEOUT + 1); - process_record_user(TOP1, &depressed); - ASSERT_EQ(UINT, keyboard_history[history_index][KC_LSFT], 0); -END_TEST - -TEST("one_shot_key_hold") - ASSERT_EQ(UINT, keyboard_history[history_index][KC_LSFT], 0); - process_record_user(BOT2, &pressed); - process_record_user(BOT3, &pressed); - pause_ms(CHORD_TIMEOUT + 1); - pause_ms(DANCE_TIMEOUT + 1); - ASSERT_EQ(UINT, keyboard_history[history_index][KC_LSFT], 1); - - process_record_user(TOP1, &pressed); - pause_ms(CHORD_TIMEOUT + 1); - process_record_user(TOP1, &depressed); - ASSERT_EQ(UINT, keyboard_history[history_index][KC_LSFT], 1); - - process_record_user(BOT2, &depressed); - ASSERT_EQ(UINT, keyboard_history[history_index][KC_LSFT], 0); -END_TEST - -TEST("one_shot_key_retrotapping") - ASSERT_EQ(UINT, keyboard_history[history_index][KC_LSFT], 0); - process_record_user(BOT2, &pressed); - process_record_user(BOT3, &pressed); - pause_ms(CHORD_TIMEOUT + 1); - pause_ms(DANCE_TIMEOUT + 1); - ASSERT_EQ(UINT, keyboard_history[history_index][KC_LSFT], 1); - - pause_ms(1000); - - process_record_user(BOT2, &depressed); - ASSERT_EQ(UINT, keyboard_history[history_index][KC_LSFT], 1); -END_TEST - -// OSL -TEST("one_shot_layer_tap") - ASSERT_EQ(UINT, current_pseudolayer, QWERTY); - process_record_user(BOT6, &pressed); - process_record_user(BOT7, &pressed); - pause_ms(CHORD_TIMEOUT + 1); - ASSERT_EQ(UINT, current_pseudolayer, QWERTY); - process_record_user(BOT6, &depressed); - pause_ms(1); - process_record_user(BOT7, &depressed); - ASSERT_EQ(UINT, current_pseudolayer, NUM); - pause_ms(1000); - ASSERT_EQ(UINT, current_pseudolayer, NUM); - - process_record_user(TOP1, &pressed); - pause_ms(CHORD_TIMEOUT + 1); - process_record_user(TOP1, &depressed); - ASSERT_EQ(UINT, current_pseudolayer, QWERTY); -END_TEST - -TEST("one_shot_layer_hold") - ASSERT_EQ(UINT, current_pseudolayer, QWERTY); - process_record_user(BOT6, &pressed); - process_record_user(BOT7, &pressed); - pause_ms(CHORD_TIMEOUT + 1); - pause_ms(DANCE_TIMEOUT + 1); - ASSERT_EQ(UINT, current_pseudolayer, NUM); - - process_record_user(TOP1, &pressed); - pause_ms(CHORD_TIMEOUT + 1); - process_record_user(TOP1, &depressed); - ASSERT_EQ(UINT, current_pseudolayer, NUM); - - process_record_user(BOT6, &depressed); - ASSERT_EQ(UINT, current_pseudolayer, QWERTY); -END_TEST - -TEST("one_shot_layer_retrotapping") - ASSERT_EQ(UINT, current_pseudolayer, QWERTY); - process_record_user(BOT6, &pressed); - process_record_user(BOT7, &pressed); - pause_ms(CHORD_TIMEOUT + 1); - pause_ms(DANCE_TIMEOUT + 1); - ASSERT_EQ(UINT, current_pseudolayer, NUM); - - pause_ms(1000); - - process_record_user(BOT6, &depressed); - ASSERT_EQ(UINT, current_pseudolayer, NUM); -END_TEST - -// CMD -TEST("command_mode") - // start recording - process_record_user(TOP5, &pressed); - process_record_user(TOP6, &pressed); - process_record_user(BOT5, &pressed); - process_record_user(BOT6, &pressed); - pause_ms(1); - process_record_user(TOP5, &depressed); - process_record_user(TOP6, &depressed); - process_record_user(BOT5, &depressed); - process_record_user(BOT6, &depressed); - - ASSERT_EQ(UINT, command_mode, 1); - - // record shift+q - process_record_user(BOT1, &pressed); - process_record_user(BOT2, &pressed); - pause_ms(CHORD_TIMEOUT + 1); - ASSERT_EQ(UINT, keyboard_history[history_index][KC_Q], 0); - ASSERT_EQ(UINT, keyboard_history[history_index][KC_LSFT], 0); - process_record_user(BOT1, &depressed); - process_record_user(BOT2, &depressed); - pause_ms(1000); - - process_record_user(TOP1, &pressed); - pause_ms(CHORD_TIMEOUT + 1); - ASSERT_EQ(UINT, keyboard_history[history_index][KC_Q], 0); - ASSERT_EQ(UINT, keyboard_history[history_index][KC_LSFT], 0); - process_record_user(TOP1, &depressed); - pause_ms(1000); - - - ASSERT_EQ(UINT, keyboard_history[history_index][KC_Q], 0); - ASSERT_EQ(UINT, keyboard_history[history_index][KC_LSFT], 0); - // execute - process_record_user(TOP5, &pressed); - process_record_user(TOP6, &pressed); - process_record_user(BOT5, &pressed); - process_record_user(BOT6, &pressed); - pause_ms(CHORD_TIMEOUT + 1); - - ASSERT_EQ(UINT, command_mode, 0); - - // test history - ASSERT_EQ(UINT, keyboard_history[0][KC_Q], 0); - ASSERT_EQ(UINT, keyboard_history[0][KC_LSFT], 0); - - ASSERT_EQ(UINT, keyboard_history[1][KC_Q], 0); - ASSERT_EQ(UINT, keyboard_history[1][KC_LSFT], 1); - - ASSERT_EQ(UINT, keyboard_history[2][KC_Q], 1); - ASSERT_EQ(UINT, keyboard_history[2][KC_LSFT], 1); - - ASSERT_EQ(UINT, keyboard_history[3][KC_Q], 1); - ASSERT_EQ(UINT, keyboard_history[3][KC_LSFT], 0); - - ASSERT_EQ(UINT, keyboard_history[4][KC_Q], 0); - ASSERT_EQ(UINT, keyboard_history[4][KC_LSFT], 0); - - ASSERT_EQ(UINT, keyboard_history[5][KC_Q], 255); - ASSERT_EQ(UINT, keyboard_history[5][KC_LSFT], 255); -END_TEST - -// KK -TEST("key_key_dance_tap") - process_record_user(BOT2, &pressed); - pause_ms(CHORD_TIMEOUT + 1); - process_record_user(BOT2, &depressed); - - ASSERT_EQ(UINT, keyboard_history[0][KC_X], 0); - ASSERT_EQ(UINT, keyboard_history[0][KC_LCTL], 0); - - ASSERT_EQ(UINT, keyboard_history[1][KC_X], 1); - ASSERT_EQ(UINT, keyboard_history[1][KC_LCTL], 0); - - ASSERT_EQ(UINT, keyboard_history[2][KC_X], 0); - ASSERT_EQ(UINT, keyboard_history[2][KC_LCTL], 0); -END_TEST - -TEST("key_key_dance_hold") - process_record_user(BOT2, &pressed); - pause_ms(CHORD_TIMEOUT + 1); - pause_ms(DANCE_TIMEOUT + 1); - process_record_user(BOT2, &depressed); - - ASSERT_EQ(UINT, keyboard_history[0][KC_X], 0); - ASSERT_EQ(UINT, keyboard_history[0][KC_LCTL], 0); - - ASSERT_EQ(UINT, keyboard_history[1][KC_X], 0); - ASSERT_EQ(UINT, keyboard_history[1][KC_LCTL], 1); - - ASSERT_EQ(UINT, keyboard_history[2][KC_X], 0); - ASSERT_EQ(UINT, keyboard_history[2][KC_LCTL], 0); -END_TEST - -// KL -TEST("key_layer_tap") - ASSERT_EQ(UINT, current_pseudolayer, QWERTY); - process_record_user(BOT3, &pressed); - pause_ms(CHORD_TIMEOUT + 1); - ASSERT_EQ(UINT, current_pseudolayer, NUM); - process_record_user(BOT3, &depressed); - ASSERT_EQ(UINT, current_pseudolayer, QWERTY); - pause_ms(1000); - - ASSERT_EQ(UINT, keyboard_history[0][KC_C], 0); - ASSERT_EQ(UINT, keyboard_history[1][KC_C], 1); - ASSERT_EQ(UINT, keyboard_history[2][KC_C], 0); - ASSERT_EQ(UINT, keyboard_history[3][KC_C], 255); -END_TEST - -TEST("key_layer_retrotapping") - ASSERT_EQ(UINT, current_pseudolayer, QWERTY); - process_record_user(BOT3, &pressed); - pause_ms(1000); - ASSERT_EQ(UINT, current_pseudolayer, NUM); - process_record_user(BOT3, &depressed); - ASSERT_EQ(UINT, current_pseudolayer, QWERTY); - pause_ms(1000); - - ASSERT_EQ(UINT, keyboard_history[0][KC_C], 0); - ASSERT_EQ(UINT, keyboard_history[1][KC_C], 1); - ASSERT_EQ(UINT, keyboard_history[2][KC_C], 0); - ASSERT_EQ(UINT, keyboard_history[3][KC_C], 255); -END_TEST - -TEST("key_layer_hold_quick_typist") - ASSERT_EQ(UINT, current_pseudolayer, QWERTY); - process_record_user(BOT3, &pressed); - pause_ms(CHORD_TIMEOUT + 1); - ASSERT_EQ(UINT, current_pseudolayer, NUM); - - pause_ms(1); - process_record_user(TOP1, &pressed); - pause_ms(1); - process_record_user(TOP1, &depressed); - pause_ms(1); - process_record_user(TOP1, &pressed); - pause_ms(1); - process_record_user(TOP1, &depressed); - pause_ms(1); - process_record_user(TOP1, &pressed); - pause_ms(1); - process_record_user(TOP1, &depressed); - ASSERT_EQ(UINT, current_pseudolayer, NUM); - pause_ms(1); - - process_record_user(BOT3, &depressed); - ASSERT_EQ(UINT, current_pseudolayer, QWERTY); - - ASSERT_EQ(UINT, keyboard_history[0][KC_1], 0); - ASSERT_EQ(UINT, keyboard_history[1][KC_1], 1); - ASSERT_EQ(UINT, keyboard_history[2][KC_1], 0); - ASSERT_EQ(UINT, keyboard_history[3][KC_1], 1); - ASSERT_EQ(UINT, keyboard_history[4][KC_1], 0); - ASSERT_EQ(UINT, keyboard_history[5][KC_1], 1); - ASSERT_EQ(UINT, keyboard_history[6][KC_1], 0); - ASSERT_EQ(UINT, keyboard_history[7][KC_1], 255); -END_TEST - -TEST("key_layer_hold_slow_typist") - ASSERT_EQ(UINT, current_pseudolayer, QWERTY); - process_record_user(BOT3, &pressed); - pause_ms(CHORD_TIMEOUT + 1); - ASSERT_EQ(UINT, current_pseudolayer, NUM); - - pause_ms(1000); - process_record_user(TOP1, &pressed); - pause_ms(1000); - process_record_user(TOP1, &depressed); - pause_ms(1000); - process_record_user(TOP1, &pressed); - pause_ms(1000); - process_record_user(TOP1, &depressed); - pause_ms(1000); - process_record_user(TOP1, &pressed); - pause_ms(1000); - process_record_user(TOP1, &depressed); - ASSERT_EQ(UINT, current_pseudolayer, NUM); - pause_ms(1); - - process_record_user(BOT3, &depressed); - ASSERT_EQ(UINT, current_pseudolayer, QWERTY); - - ASSERT_EQ(UINT, keyboard_history[0][KC_1], 0); - ASSERT_EQ(UINT, keyboard_history[1][KC_1], 1); - ASSERT_EQ(UINT, keyboard_history[2][KC_1], 0); - ASSERT_EQ(UINT, keyboard_history[3][KC_1], 1); - ASSERT_EQ(UINT, keyboard_history[4][KC_1], 0); - ASSERT_EQ(UINT, keyboard_history[5][KC_1], 1); - ASSERT_EQ(UINT, keyboard_history[6][KC_1], 0); - ASSERT_EQ(UINT, keyboard_history[7][KC_1], 255); -END_TEST - -// KM -TEST("key_mod_tap") - ASSERT_EQ(UINT, keyboard_history[0][KC_LALT], 0); - ASSERT_EQ(UINT, keyboard_history[0][KC_V], 0); - process_record_user(BOT4, &pressed); - pause_ms(CHORD_TIMEOUT + 1); - ASSERT_EQ(UINT, keyboard_history[1][KC_LALT], 1); - ASSERT_EQ(UINT, keyboard_history[1][KC_V], 0); - process_record_user(BOT4, &depressed); - ASSERT_EQ(UINT, keyboard_history[2][KC_LALT], 0); - ASSERT_EQ(UINT, keyboard_history[2][KC_V], 0); - pause_ms(1000); - - ASSERT_EQ(UINT, keyboard_history[3][KC_LALT], 0); - ASSERT_EQ(UINT, keyboard_history[3][KC_V], 1); - ASSERT_EQ(UINT, keyboard_history[4][KC_LALT], 0); - ASSERT_EQ(UINT, keyboard_history[4][KC_V], 0); - ASSERT_EQ(UINT, keyboard_history[5][KC_LALT], 255); - ASSERT_EQ(UINT, keyboard_history[5][KC_V], 255); -END_TEST - -TEST("key_mod_retrotapping") - ASSERT_EQ(UINT, keyboard_history[0][KC_LALT], 0); - ASSERT_EQ(UINT, keyboard_history[0][KC_V], 0); - process_record_user(BOT4, &pressed); - pause_ms(1000); - ASSERT_EQ(UINT, keyboard_history[1][KC_LALT], 1); - ASSERT_EQ(UINT, keyboard_history[1][KC_V], 0); - process_record_user(BOT4, &depressed); - ASSERT_EQ(UINT, keyboard_history[2][KC_LALT], 0); - ASSERT_EQ(UINT, keyboard_history[2][KC_V], 0); - pause_ms(1000); - - ASSERT_EQ(UINT, keyboard_history[3][KC_LALT], 0); - ASSERT_EQ(UINT, keyboard_history[3][KC_V], 1); - ASSERT_EQ(UINT, keyboard_history[4][KC_LALT], 0); - ASSERT_EQ(UINT, keyboard_history[4][KC_V], 0); - ASSERT_EQ(UINT, keyboard_history[5][KC_LALT], 255); - ASSERT_EQ(UINT, keyboard_history[5][KC_V], 255); -END_TEST - -TEST("key_mod_hold_quick_typist") - process_record_user(BOT4, &pressed); - pause_ms(CHORD_TIMEOUT + 1); - - pause_ms(1); - process_record_user(TOP1, &pressed); - pause_ms(1); - process_record_user(TOP1, &depressed); - pause_ms(1); - process_record_user(TOP1, &pressed); - pause_ms(1); - process_record_user(TOP1, &depressed); - pause_ms(1); - process_record_user(TOP1, &pressed); - pause_ms(1); - process_record_user(TOP1, &depressed); - pause_ms(1); - - process_record_user(BOT4, &depressed); - ASSERT_EQ(UINT, current_pseudolayer, QWERTY); - - ASSERT_EQ(UINT, keyboard_history[0][KC_LALT], 0); - ASSERT_EQ(UINT, keyboard_history[0][KC_V], 0); - ASSERT_EQ(UINT, keyboard_history[1][KC_LALT], 1); - ASSERT_EQ(UINT, keyboard_history[1][KC_V], 0); - ASSERT_EQ(UINT, keyboard_history[2][KC_LALT], 1); - ASSERT_EQ(UINT, keyboard_history[2][KC_V], 0); - ASSERT_EQ(UINT, keyboard_history[3][KC_LALT], 1); - ASSERT_EQ(UINT, keyboard_history[3][KC_V], 0); - ASSERT_EQ(UINT, keyboard_history[4][KC_LALT], 1); - ASSERT_EQ(UINT, keyboard_history[4][KC_V], 0); - ASSERT_EQ(UINT, keyboard_history[5][KC_LALT], 1); - ASSERT_EQ(UINT, keyboard_history[5][KC_V], 0); - ASSERT_EQ(UINT, keyboard_history[6][KC_LALT], 1); - ASSERT_EQ(UINT, keyboard_history[6][KC_V], 0); - ASSERT_EQ(UINT, keyboard_history[7][KC_LALT], 1); - ASSERT_EQ(UINT, keyboard_history[7][KC_V], 0); - ASSERT_EQ(UINT, keyboard_history[8][KC_LALT], 0); - ASSERT_EQ(UINT, keyboard_history[8][KC_V], 0); - ASSERT_EQ(UINT, keyboard_history[9][KC_LALT], 255); - ASSERT_EQ(UINT, keyboard_history[9][KC_V], 255); -END_TEST - -TEST("key_mod_hold_slow_typist") - process_record_user(BOT4, &pressed); - pause_ms(CHORD_TIMEOUT + 1); - - pause_ms(1000); - process_record_user(TOP1, &pressed); - pause_ms(1000); - process_record_user(TOP1, &depressed); - pause_ms(1000); - process_record_user(TOP1, &pressed); - pause_ms(1000); - process_record_user(TOP1, &depressed); - pause_ms(1000); - process_record_user(TOP1, &pressed); - pause_ms(1000); - process_record_user(TOP1, &depressed); - pause_ms(1000); - - process_record_user(BOT4, &depressed); - ASSERT_EQ(UINT, current_pseudolayer, QWERTY); - - ASSERT_EQ(UINT, keyboard_history[0][KC_LALT], 0); - ASSERT_EQ(UINT, keyboard_history[0][KC_V], 0); - ASSERT_EQ(UINT, keyboard_history[0][KC_Q], 0); - ASSERT_EQ(UINT, keyboard_history[1][KC_LALT], 1); - ASSERT_EQ(UINT, keyboard_history[1][KC_V], 0); - ASSERT_EQ(UINT, keyboard_history[1][KC_Q], 0); - ASSERT_EQ(UINT, keyboard_history[2][KC_LALT], 1); - ASSERT_EQ(UINT, keyboard_history[2][KC_V], 0); - ASSERT_EQ(UINT, keyboard_history[2][KC_Q], 1); - ASSERT_EQ(UINT, keyboard_history[3][KC_LALT], 1); - ASSERT_EQ(UINT, keyboard_history[3][KC_V], 0); - ASSERT_EQ(UINT, keyboard_history[3][KC_Q], 0); - ASSERT_EQ(UINT, keyboard_history[4][KC_LALT], 1); - ASSERT_EQ(UINT, keyboard_history[4][KC_V], 0); - ASSERT_EQ(UINT, keyboard_history[4][KC_Q], 1); - ASSERT_EQ(UINT, keyboard_history[5][KC_LALT], 1); - ASSERT_EQ(UINT, keyboard_history[5][KC_V], 0); - ASSERT_EQ(UINT, keyboard_history[5][KC_Q], 0); - ASSERT_EQ(UINT, keyboard_history[6][KC_LALT], 1); - ASSERT_EQ(UINT, keyboard_history[6][KC_V], 0); - ASSERT_EQ(UINT, keyboard_history[6][KC_Q], 1); - ASSERT_EQ(UINT, keyboard_history[7][KC_LALT], 1); - ASSERT_EQ(UINT, keyboard_history[7][KC_V], 0); - ASSERT_EQ(UINT, keyboard_history[7][KC_Q], 0); - ASSERT_EQ(UINT, keyboard_history[8][KC_LALT], 0); - ASSERT_EQ(UINT, keyboard_history[8][KC_V], 0); - ASSERT_EQ(UINT, keyboard_history[8][KC_Q], 0); - ASSERT_EQ(UINT, keyboard_history[9][KC_LALT], 255); - ASSERT_EQ(UINT, keyboard_history[9][KC_V], 255); - ASSERT_EQ(UINT, keyboard_history[9][KC_Q], 255); -END_TEST - -// LEADER -TEST("leader_triggers_global") - uint8_t state = ACTIVATED; - struct Chord chord PROGMEM = {0, QWERTY, &state, NULL, 0, 0, leader}; - chord.function(&chord); - - ASSERT_EQ(UINT, in_leader_mode, 1); -END_TEST - -TEST("leader_no_follow") - uint8_t state = ACTIVATED; - struct Chord chord PROGMEM = {0, QWERTY, &state, NULL, 0, 0, leader}; - chord.function(&chord); - - ASSERT_EQ(UINT, in_leader_mode, 1); - - pause_ms(1000); - - ASSERT_EQ(UINT, in_leader_mode, 0); - ASSERT_EQ(UINT, keyboard_history[1][KC_O], 255); -END_TEST - -TEST("leader_wrong_follow") - process_record_user(TOP2, &pressed); - process_record_user(TOP3, &pressed); - process_record_user(BOT2, &pressed); - process_record_user(BOT3, &pressed); - pause_ms(1); - process_record_user(TOP2, &depressed); - process_record_user(TOP3, &depressed); - process_record_user(BOT2, &depressed); - process_record_user(BOT3, &depressed); - - ASSERT_EQ(UINT, in_leader_mode, 1); - - pause_ms(1); - process_record_user(TOP1, &pressed); - pause_ms(1); - process_record_user(TOP1, &depressed); - pause_ms(1); - process_record_user(TOP2, &pressed); - pause_ms(1); - process_record_user(TOP2, &depressed); - - pause_ms(LEADER_TIMEOUT); - pause_ms(1); - - ASSERT_EQ(UINT, in_leader_mode, 0); - ASSERT_EQ(UINT, keyboard_history[1][KC_Q], 255); -END_TEST - -TEST("leader_correct_follow") - process_record_user(TOP2, &pressed); - process_record_user(TOP3, &pressed); - process_record_user(BOT2, &pressed); - process_record_user(BOT3, &pressed); - pause_ms(1); - process_record_user(TOP2, &depressed); - process_record_user(TOP3, &depressed); - process_record_user(BOT2, &depressed); - process_record_user(BOT3, &depressed); - - ASSERT_EQ(UINT, in_leader_mode, 1); - - pause_ms(1); - process_record_user(TOP0, &pressed); - pause_ms(1); - process_record_user(TOP0, &depressed); - pause_ms(1); - process_record_user(TOP9, &pressed); - pause_ms(1); - process_record_user(TOP9, &depressed); - - pause_ms(LEADER_TIMEOUT); - ASSERT_EQ(UINT, in_leader_mode, 1); - - pause_ms(1); - ASSERT_EQ(UINT, in_leader_mode, 0); - - ASSERT_EQ(UINT, keyboard_history[1][KC_O], 0); - ASSERT_EQ(UINT, keyboard_history[1][KC_P], 0); - ASSERT_EQ(UINT, keyboard_history[1][KC_A], 0); - ASSERT_EQ(UINT, keyboard_history[1][KC_S], 1); - - ASSERT_EQ(UINT, keyboard_history[2][KC_O], 0); - ASSERT_EQ(UINT, keyboard_history[2][KC_P], 0); - ASSERT_EQ(UINT, keyboard_history[2][KC_A], 0); - ASSERT_EQ(UINT, keyboard_history[2][KC_S], 0); - - ASSERT_EQ(UINT, keyboard_history[3][KC_O], 255); - ASSERT_EQ(UINT, keyboard_history[3][KC_P], 255); - ASSERT_EQ(UINT, keyboard_history[3][KC_A], 255); - ASSERT_EQ(UINT, keyboard_history[3][KC_S], 255); - - ASSERT_EQ(UINT, keyboard_history[4][KC_O], 255); - ASSERT_EQ(UINT, keyboard_history[4][KC_P], 255); - ASSERT_EQ(UINT, keyboard_history[4][KC_A], 255); - ASSERT_EQ(UINT, keyboard_history[4][KC_S], 255); - - ASSERT_EQ(UINT, keyboard_history[5][KC_Q], 255); -END_TEST - -// DYNAMIC MACRO -TEST("dynamic_macro_record_mode") - current_pseudolayer = NUM; - - // record - ASSERT_EQ(UINT, dynamic_macro_mode, 0); - process_record_user(BOT7, &pressed); - process_record_user(BOT7, &depressed); - ASSERT_EQ(UINT, dynamic_macro_mode, 1); - pause_ms(1000); - ASSERT_EQ(UINT, dynamic_macro_mode, 1); -END_TEST - -TEST("dynamic_macro_record_mode_off") - current_pseudolayer = NUM; - - process_record_user(BOT7, &pressed); - process_record_user(BOT7, &depressed); - ASSERT_EQ(UINT, dynamic_macro_mode, 1); - - process_record_user(BOT9, &pressed); - process_record_user(BOT9, &depressed); - ASSERT_EQ(UINT, dynamic_macro_mode, 0); -END_TEST - -TEST("dynamic_macro_record_one") - current_pseudolayer = NUM; - - process_record_user(BOT7, &pressed); - process_record_user(BOT7, &depressed); - ASSERT_EQ(UINT, dynamic_macro_mode, 1); - - process_record_user(TOP1, &pressed); - process_record_user(TOP1, &depressed); - - ASSERT_EQ(UINT, keyboard_history[1][KC_1], 255); - - process_record_user(BOT9, &pressed); - process_record_user(BOT9, &depressed); - - pause_ms(1000); - - process_record_user(BOT0, &pressed); - process_record_user(BOT0, &depressed); - - ASSERT_EQ(UINT, keyboard_history[1][KC_1], 1); - ASSERT_EQ(UINT, keyboard_history[2][KC_1], 0); - ASSERT_EQ(UINT, keyboard_history[3][KC_1], 255); - - pause_ms(1000); - - process_record_user(BOT0, &pressed); - process_record_user(BOT0, &depressed); - - ASSERT_EQ(UINT, keyboard_history[3][KC_1], 1); - ASSERT_EQ(UINT, keyboard_history[4][KC_1], 0); - ASSERT_EQ(UINT, keyboard_history[5][KC_1], 255); -END_TEST - -TEST("dynamic_macro_record_two") - current_pseudolayer = NUM; - - process_record_user(BOT7, &pressed); - process_record_user(BOT7, &depressed); - ASSERT_EQ(UINT, dynamic_macro_mode, 1); - - process_record_user(TOP1, &pressed); - process_record_user(TOP1, &depressed); - - process_record_user(TOP2, &pressed); - process_record_user(TOP2, &depressed); - - ASSERT_EQ(UINT, keyboard_history[1][KC_1], 255); - - process_record_user(BOT9, &pressed); - process_record_user(BOT9, &depressed); - - pause_ms(1000); - - process_record_user(BOT0, &pressed); - process_record_user(BOT0, &depressed); - - ASSERT_EQ(UINT, keyboard_history[1][KC_1], 1); - ASSERT_EQ(UINT, keyboard_history[2][KC_2], 1); - ASSERT_EQ(UINT, keyboard_history[3][KC_1], 0); - ASSERT_EQ(UINT, keyboard_history[4][KC_2], 0); - ASSERT_EQ(UINT, keyboard_history[5][KC_1], 255); -END_TEST - -TEST("dynamic_macro_record_two_parts") - current_pseudolayer = NUM; - - process_record_user(BOT7, &pressed); - process_record_user(BOT7, &depressed); - ASSERT_EQ(UINT, dynamic_macro_mode, 1); - - process_record_user(TOP1, &pressed); - process_record_user(TOP1, &depressed); - - process_record_user(TOP2, &pressed); - process_record_user(TOP2, &depressed); - - ASSERT_EQ(UINT, keyboard_history[1][KC_1], 255); - - process_record_user(BOT8, &pressed); - process_record_user(BOT8, &depressed); - - process_record_user(TOP3, &pressed); - process_record_user(TOP3, &depressed); - - process_record_user(BOT9, &pressed); - process_record_user(BOT9, &depressed); - - pause_ms(1000); - - process_record_user(BOT0, &pressed); - process_record_user(BOT0, &depressed); - - ASSERT_EQ(UINT, keyboard_history[1][KC_1], 1); - ASSERT_EQ(UINT, keyboard_history[1][KC_2], 0); - ASSERT_EQ(UINT, keyboard_history[1][KC_3], 0); - - ASSERT_EQ(UINT, keyboard_history[2][KC_1], 1); - ASSERT_EQ(UINT, keyboard_history[2][KC_2], 1); - ASSERT_EQ(UINT, keyboard_history[2][KC_3], 0); - - ASSERT_EQ(UINT, keyboard_history[3][KC_1], 0); - ASSERT_EQ(UINT, keyboard_history[3][KC_2], 1); - ASSERT_EQ(UINT, keyboard_history[3][KC_3], 0); - - ASSERT_EQ(UINT, keyboard_history[4][KC_1], 0); - ASSERT_EQ(UINT, keyboard_history[4][KC_2], 0); - ASSERT_EQ(UINT, keyboard_history[4][KC_3], 0); - - ASSERT_EQ(UINT, keyboard_history[5][KC_1], 0); - ASSERT_EQ(UINT, keyboard_history[5][KC_2], 0); - ASSERT_EQ(UINT, keyboard_history[5][KC_3], 1); - - ASSERT_EQ(UINT, keyboard_history[6][KC_1], 0); - ASSERT_EQ(UINT, keyboard_history[6][KC_2], 0); - ASSERT_EQ(UINT, keyboard_history[6][KC_3], 0); - - ASSERT_EQ(UINT, keyboard_history[7][KC_1], 255); -END_TEST - -// dance + M() - -TEST("dance_tap") - process_record_user(BOT0, &pressed); - process_record_user(BOT0, &depressed); - - pause_ms(1000); - - ASSERT_EQ(UINT, keyboard_history[1][KC_9], 1); - ASSERT_EQ(UINT, keyboard_history[1][KC_0], 0); - ASSERT_EQ(UINT, keyboard_history[2][KC_9], 0); - ASSERT_EQ(UINT, keyboard_history[2][KC_0], 0); - ASSERT_EQ(UINT, keyboard_history[3][KC_9], 255); -END_TEST - -TEST("dance_hold") - process_record_user(BOT0, &pressed); - pause_ms(1000); - - ASSERT_EQ(UINT, keyboard_history[1][KC_9], 1); - - process_record_user(BOT0, &depressed); - ASSERT_EQ(UINT, keyboard_history[2][KC_9], 0); -END_TEST - -TEST("dance_tap_tap") - process_record_user(BOT0, &pressed); - process_record_user(BOT0, &depressed); - process_record_user(BOT0, &pressed); - process_record_user(BOT0, &depressed); - - pause_ms(1000); - - ASSERT_EQ(UINT, keyboard_history[1][KC_9], 0); - ASSERT_EQ(UINT, keyboard_history[1][KC_0], 1); - ASSERT_EQ(UINT, keyboard_history[2][KC_9], 0); - ASSERT_EQ(UINT, keyboard_history[2][KC_0], 0); - ASSERT_EQ(UINT, keyboard_history[3][KC_9], 255); -END_TEST - -TEST("dance_tap_hold") - process_record_user(BOT0, &pressed); - process_record_user(BOT0, &depressed); - pause_ms(1); - process_record_user(BOT0, &pressed); - pause_ms(1000); - - ASSERT_EQ(UINT, keyboard_history[1][KC_0], 1); - - process_record_user(BOT0, &depressed); - ASSERT_EQ(UINT, keyboard_history[2][KC_0], 0); -END_TEST - -// MK -TEST("multiple_keys") - current_pseudolayer = NUM; - - process_record_user(BOT1, &pressed); - process_record_user(BOT1, &depressed); - - ASSERT_EQ(UINT, keyboard_history[1][KC_LCTL], 1); - ASSERT_EQ(UINT, keyboard_history[1][KC_LSFT], 0); - - ASSERT_EQ(UINT, keyboard_history[2][KC_LCTL], 1); - ASSERT_EQ(UINT, keyboard_history[2][KC_LSFT], 1); - - ASSERT_EQ(UINT, keyboard_history[3][KC_LCTL], 0); - ASSERT_EQ(UINT, keyboard_history[3][KC_LSFT], 1); - - ASSERT_EQ(UINT, keyboard_history[4][KC_LCTL], 0); - ASSERT_EQ(UINT, keyboard_history[4][KC_LSFT], 0); - - ASSERT_EQ(UINT, keyboard_history[5][KC_LCTL], 255); -END_TEST - -TEST("multiple_keys_interleaved") - current_pseudolayer = NUM; - - process_record_user(BOT1, &pressed); - pause_ms(CHORD_TIMEOUT+1); - - process_record_user(TOP1, &pressed); - process_record_user(TOP1, &depressed); - process_record_user(TOP1, &pressed); - process_record_user(TOP1, &depressed); - process_record_user(TOP1, &pressed); - process_record_user(TOP1, &depressed); - - process_record_user(BOT1, &depressed); - - ASSERT_EQ(UINT, keyboard_history[1][KC_LCTL], 1); - ASSERT_EQ(UINT, keyboard_history[1][KC_LSFT], 0); - - ASSERT_EQ(UINT, keyboard_history[2][KC_LCTL], 1); - ASSERT_EQ(UINT, keyboard_history[2][KC_LSFT], 1); - - ASSERT_EQ(UINT, keyboard_history[3][KC_1], 1); - ASSERT_EQ(UINT, keyboard_history[4][KC_1], 0); - ASSERT_EQ(UINT, keyboard_history[5][KC_1], 1); - ASSERT_EQ(UINT, keyboard_history[6][KC_1], 0); - ASSERT_EQ(UINT, keyboard_history[7][KC_1], 1); - ASSERT_EQ(UINT, keyboard_history[8][KC_1], 0); - - ASSERT_EQ(UINT, keyboard_history[9][KC_LCTL], 0); - ASSERT_EQ(UINT, keyboard_history[9][KC_LSFT], 1); - - ASSERT_EQ(UINT, keyboard_history[10][KC_LCTL], 0); - ASSERT_EQ(UINT, keyboard_history[10][KC_LSFT], 0); - - ASSERT_EQ(UINT, keyboard_history[11][KC_LCTL], 255); -END_TEST - -// D -TEST("dance_one") - current_pseudolayer = NUM; - - process_record_user(BOT3, &pressed); - process_record_user(BOT3, &depressed); - - pause_ms(CHORD_TIMEOUT+DANCE_TIMEOUT+2); - - ASSERT_EQ(UINT, keyboard_history[1][KC_1], 1); - ASSERT_EQ(UINT, keyboard_history[2][KC_1], 0); - ASSERT_EQ(UINT, keyboard_history[3][KC_1], 255); - - process_record_user(BOT3, &pressed); - process_record_user(BOT3, &depressed); - - pause_ms(CHORD_TIMEOUT+DANCE_TIMEOUT+2); - - ASSERT_EQ(UINT, keyboard_history[1][KC_1], 1); - ASSERT_EQ(UINT, keyboard_history[2][KC_1], 0); - ASSERT_EQ(UINT, keyboard_history[3][KC_1], 1); - ASSERT_EQ(UINT, keyboard_history[4][KC_1], 0); - ASSERT_EQ(UINT, keyboard_history[5][KC_1], 255); -END_TEST - -TEST("dance_two") - current_pseudolayer = NUM; - - process_record_user(BOT3, &pressed); - process_record_user(BOT3, &depressed); - process_record_user(BOT3, &pressed); - process_record_user(BOT3, &depressed); - - pause_ms(CHORD_TIMEOUT+DANCE_TIMEOUT+2); - - ASSERT_EQ(UINT, keyboard_history[1][KC_2], 1); - ASSERT_EQ(UINT, keyboard_history[2][KC_2], 0); - ASSERT_EQ(UINT, keyboard_history[3][KC_2], 255); - - process_record_user(BOT3, &pressed); - process_record_user(BOT3, &depressed); - process_record_user(BOT3, &pressed); - process_record_user(BOT3, &depressed); - - pause_ms(CHORD_TIMEOUT+DANCE_TIMEOUT+2); - - ASSERT_EQ(UINT, keyboard_history[1][KC_2], 1); - ASSERT_EQ(UINT, keyboard_history[2][KC_2], 0); - ASSERT_EQ(UINT, keyboard_history[3][KC_2], 1); - ASSERT_EQ(UINT, keyboard_history[4][KC_2], 0); - ASSERT_EQ(UINT, keyboard_history[5][KC_2], 255); -END_TEST - -TEST("dance_three") - current_pseudolayer = NUM; - - process_record_user(BOT3, &pressed); - process_record_user(BOT3, &depressed); - process_record_user(BOT3, &pressed); - process_record_user(BOT3, &depressed); - process_record_user(BOT3, &pressed); - process_record_user(BOT3, &depressed); - - pause_ms(CHORD_TIMEOUT+DANCE_TIMEOUT+2); - - ASSERT_EQ(UINT, keyboard_history[1][KC_3], 1); - ASSERT_EQ(UINT, keyboard_history[2][KC_3], 0); - ASSERT_EQ(UINT, keyboard_history[3][KC_3], 255); - - process_record_user(BOT3, &pressed); - process_record_user(BOT3, &depressed); - process_record_user(BOT3, &pressed); - process_record_user(BOT3, &depressed); - process_record_user(BOT3, &pressed); - process_record_user(BOT3, &depressed); - - pause_ms(CHORD_TIMEOUT+DANCE_TIMEOUT+2); - - ASSERT_EQ(UINT, keyboard_history[1][KC_3], 1); - ASSERT_EQ(UINT, keyboard_history[2][KC_3], 0); - ASSERT_EQ(UINT, keyboard_history[3][KC_3], 1); - ASSERT_EQ(UINT, keyboard_history[4][KC_3], 0); - ASSERT_EQ(UINT, keyboard_history[5][KC_3], 255); -END_TEST - -TEST("dance_two_held") - current_pseudolayer = NUM; - - process_record_user(BOT3, &pressed); - process_record_user(BOT3, &depressed); - process_record_user(BOT3, &pressed); - - pause_ms(CHORD_TIMEOUT+DANCE_TIMEOUT+2); - - ASSERT_EQ(UINT, keyboard_history[1][KC_2], 1); - ASSERT_EQ(UINT, keyboard_history[2][KC_2], 255); - - process_record_user(BOT3, &depressed); - ASSERT_EQ(UINT, keyboard_history[2][KC_2], 0); - ASSERT_EQ(UINT, keyboard_history[3][KC_2], 255); -END_TEST - -// These two are leaving the chording engine, they kinda have to be tested manually -// TO -// RESET - -END diff --git a/users/dennytom/chording_engine/tests/test_full.sh b/users/dennytom/chording_engine/tests/test_full.sh deleted file mode 100644 index ea93aec8f9..0000000000 --- a/users/dennytom/chording_engine/tests/test_full.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh -cd .. -python3 parser.py tests/test_keymap_def.json tests/test_keymap.c && \ -gcc -g tests/test.c -o tests/test && \ -tests/test && \ -python3 parser.py ../../../keyboards/butterstick/keymaps/tomas/keymap_def.json ../../../keyboards/butterstick/keymaps/tomas/keymap.c && \ -python3 parser.py ../../../keyboards/georgi/keymaps/tomas/keymap_def.json ../../../keyboards/georgi/keymaps/tomas/keymap.c && \ -python3 parser.py ../../../keyboards/georgi/keymaps/buttery/keymap_def.json ../../../keyboards/georgi/keymaps/buttery/keymap.c && \ -cd ../../../ && \ -make butterstick && \ -make georgi \ No newline at end of file diff --git a/users/dennytom/chording_engine/tests/test_keymap_def.json b/users/dennytom/chording_engine/tests/test_keymap_def.json deleted file mode 100644 index eae2ed37cf..0000000000 --- a/users/dennytom/chording_engine/tests/test_keymap_def.json +++ /dev/null @@ -1,145 +0,0 @@ -{ - "keys": [ - "TOP1", "TOP2", "TOP3", "TOP4", "TOP5", "TOP6", "TOP7", "TOP8", "TOP9", "TOP0", - "BOT1", "BOT2", "BOT3", "BOT4", "BOT5", "BOT6", "BOT7", "BOT8", "BOT9", "BOT0" - ], - "parameters": { - "do_not_include_QMK": true, - "layout_function_name": "LAYOUT_test", - "chord_timeout": 100, - "dance_timeout": 200, - "leader_timeout": 750, - "tap_timeout": 50, - "command_max_length": 5, - "leader_max_length": 5, - "dynamic_macro_max_length": 20, - "string_max_length": 16, - "long_press_multiplier": 3, - "default_pseudolayer": "QWERTY" - }, - "layers": [ - { - "type": "auto" - }, - { - "type": "manual", - "keycodes": ["KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", - "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P" - ] - } - ], - "chord_sets": [ - { - "name": "rows", - "chords": [ - ["TOP1"], ["TOP2"], ["TOP3"], ["TOP4"], ["TOP5"], ["TOP6"], ["TOP7"], ["TOP8"], ["TOP9"], ["TOP0"], - ["TOP1", "BOT1"], ["TOP2", "BOT2"], ["TOP3", "BOT3"], ["TOP4", "BOT4"], ["TOP5", "BOT5"], ["TOP6", "BOT6"], ["TOP7", "BOT7"], ["TOP8", "BOT8"], ["TOP9", "BOT9"], ["TOP0", "BOT0"], - ["BOT1"], ["BOT2"], ["BOT3"], ["BOT4"], ["BOT5"], ["BOT6"], ["BOT7"], ["BOT8"], ["BOT9"], ["BOT0"] - ] - }, - { - "name": "cols", - "chords": [ - ["TOP1", "TOP2"], ["TOP2", "TOP3"], ["TOP3", "TOP4"], ["TOP4", "TOP5"], ["TOP5", "TOP6"], ["TOP6", "TOP7"], ["TOP7", "TOP8"], ["TOP8", "TOP9"], ["TOP9", "TOP0"], - ["TOP1", "TOP2", "BOT1", "BOT2"], ["TOP2", "TOP3", "BOT2", "BOT3"], ["TOP3", "TOP4", "BOT3", "BOT4"], ["TOP4", "TOP5", "BOT4", "BOT5"], ["TOP5", "TOP6", "BOT5", "BOT6"], ["TOP6", "TOP7", "BOT6", "BOT7"], ["TOP7", "TOP8", "BOT7", "BOT8"], ["TOP8", "TOP9", "BOT8", "BOT9"], ["TOP9", "TOP0", "BOT9", "BOT0"], - ["BOT1", "BOT2"], ["BOT2", "BOT3"], ["BOT3", "BOT4"], ["BOT4", "BOT5"], ["BOT5", "BOT6"], ["BOT6", "BOT7"], ["BOT7", "BOT8"], ["BOT8", "BOT9"], ["BOT9", "BOT0"] - ] - }, - { - "name": "asetniop", - "chords": [ - ["TOP1"], ["TOP2"], ["TOP3"], ["TOP4"], ["TOP7"], ["TOP8"], ["TOP9"], ["TOP0"], - ["TOP1", "TOP2"], ["TOP2", "TOP3"], ["TOP3", "TOP4"], ["TOP4", "TOP7"], ["TOP7", "TOP8"], ["TOP8", "TOP9"], ["TOP9", "TOP0"], - ["TOP1", "TOP3"], ["TOP2", "TOP4"], ["TOP3", "TOP7"], ["TOP4", "TOP8"], ["TOP7", "TOP9"], ["TOP8", "TOP0"], - ["TOP1", "TOP4"], ["TOP2", "TOP7"], ["TOP3", "TOP8"], ["TOP4", "TOP9"], ["TOP7", "TOP0"], - ["TOP1", "TOP7"], ["TOP2", "TOP8"], ["TOP3", "TOP9"], ["TOP4", "TOP0"], - ["TOP1", "TOP8"], ["TOP2", "TOP9"], ["TOP3", "TOP0"], - ["TOP1", "TOP9"], ["TOP2", "TOP0"], - ["TOP1", "TOP0"] - ] - } - ], - "pseudolayers": [ - { - "name": "ALWAYS_ON", - "chords": [ - { - "type": "visual", - "chord": [ - " ", " ", " ", " ", " ", " ", " ", "X", "X", "X", - " ", " ", " ", " ", " ", " ", " ", "X", "X", "X" - ], - "keycode": "MO(FNC, NUM)" - } - ] - }, - { - "name": "QWERTY", - "chords": [ - { - "type": "chord_set", - "set": "rows", - "keycodes": [ - "Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", - "A", "S", "D", "F", "G", "H", "J", "K", "L", ";", - "AS(Z)", "KK(X, LCTL)", "KL(C, NUM)", "KM(V, LALT)", "B", "N", "M", "COMMA", ".", "M(double_dance, KC_9, KC_0)" - ] - }, - { - "type": "chord_set", - "set": "cols", - "keycodes": [ - "ESC", "", "", "", "", "", "", "", "", - "", "LEAD", "", "", "CMD", "", "", "", "", - "LSFT", "O(LSFT)", "", "", "", "O(NUM)", "MO(NUM)", "", "DF(NUM)" - ] - }, - { - "type": "visual", - "chord": [ - "X", "X", " ", " ", " ", " ", " ", " ", " ", " ", - "X", "X", " ", " ", " ", " ", " ", " ", " ", " " - ], - "keycode": "LOCK" - } - ] - }, - { - "name": "NUM", - "chords": [ - { - "type": "chord_set", - "set": "rows", - "keycodes": [ - "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", - "", "", "", "", "", "", "", "", "", "", - "", "KC_LEFT", "D(KC_1, KC_2, KC_3)", "", "", "", "DM_RECORD", "DM_NEXT", "DM_END", "DM_PLAY" - ] - }, - { - "type": "simple", - "chord": ["BOT1"], - "keycode": "MK(KC_LCTL, KC_LSFT)" - } - ] - }, - { - "name": "FNC", - "chords": [] - } - ], - "leader_sequences": [ - { - "name": "fnc_L1", - "function": "void fnc_L1(void) { key_in(KC_A); clear_keyboard(); }", - "sequence": ["KC_O", "KC_P"] - }, - { - "name": "fnc_L2", - "function": "void fnc_L2(void) { key_in(KC_S); clear_keyboard(); }", - "sequence": ["KC_P", "KC_O"] - } - ], - "extra_code": "void double_dance(const struct Chord* self) {\n switch (*self->state) {\n case ACTIVATED:\n *self->counter = (*self->counter + 1) % 2;\n break;\n case PRESS_FROM_ACTIVE:\n if (*self->counter == 1) {\n key_in(self->value1);\n } else {\n key_in(self->value2);\n }\n *self->state = FINISHED_FROM_ACTIVE;\n break;\n case FINISHED:\n if (*self->counter == 1) {\n tap_key(self->value1);\n } else {\n tap_key(self->value2);\n }\n *self->counter = 0;\n *self->state = IDLE;\n break;\n case RESTART:\n if (*self->counter == 1) {\n key_out(self->value1);\n } else {\n key_out(self->value2);\n }\n *self->counter = 0;\n break;\n default:\n break;\n }\n}\n", - "extra_dependencies": [] -} \ No newline at end of file diff --git a/users/dennytom/chording_engine/tests/test_quick.sh b/users/dennytom/chording_engine/tests/test_quick.sh deleted file mode 100644 index 3740122e27..0000000000 --- a/users/dennytom/chording_engine/tests/test_quick.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh - -cd .. -python3 parser.py tests/test_keymap_def.json tests/test_keymap.c && \ -gcc -g tests/test.c -o tests/test && \ -tests/test \ No newline at end of file diff --git a/users/devdev/config.h b/users/devdev/config.h deleted file mode 100644 index c5a30fe8e2..0000000000 --- a/users/devdev/config.h +++ /dev/null @@ -1,30 +0,0 @@ - /* Copyright 2021 Dane Evans - * - * 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 . -*/ - - -#pragma once - -/* Disable unused and unneeded features to reduce on firmware size */ -#if defined(LOCKING_SUPPORT_ENABLE) -# undef LOCKING_SUPPORT_ENABLE -#endif - -#if defined(OLED_FONT_H) -# undef OLED_FONT_H -#endif - - -#define OLED_FONT_H "users/devdev/glcdfont.c" diff --git a/users/devdev/glcdfont.c b/users/devdev/glcdfont.c deleted file mode 100644 index a95afa3e07..0000000000 --- a/users/devdev/glcdfont.c +++ /dev/null @@ -1,465 +0,0 @@ -// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0. -// See gfxfont.h for newer custom bitmap font info. - -#include "progmem.h" - -#ifndef CUSTOM_FONT -// Standard ASCII 5x7 font -const unsigned char font[] PROGMEM = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00, - 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00, - 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00, - 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00, - 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00, - 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, - 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00, - 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, - 0x00, 0x18, 0x24, 0x18, 0x00, 0x00, - 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00, - 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00, - 0x26, 0x29, 0x79, 0x29, 0x26, 0x00, - 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00, - 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00, - 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00, - 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00, - 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00, - 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00, - 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00, - 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00, - 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00, - 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, - 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00, - 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00, - 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00, - 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00, - 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00, - 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00, - 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00, - 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00, - 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, - 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, - 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, - 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00, - 0x23, 0x13, 0x08, 0x64, 0x62, 0x00, - 0x36, 0x49, 0x56, 0x20, 0x50, 0x00, - 0x00, 0x08, 0x07, 0x03, 0x00, 0x00, - 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, - 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, - 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, - 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, - 0x00, 0x80, 0x70, 0x30, 0x00, 0x00, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, - 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, - 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, - 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, - 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00, - 0x72, 0x49, 0x49, 0x49, 0x46, 0x00, - 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00, - 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00, - 0x27, 0x45, 0x45, 0x45, 0x39, 0x00, - 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00, - 0x41, 0x21, 0x11, 0x09, 0x07, 0x00, - 0x36, 0x49, 0x49, 0x49, 0x36, 0x00, - 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00, - 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x40, 0x34, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x14, 0x22, 0x41, 0x00, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, - 0x00, 0x41, 0x22, 0x14, 0x08, 0x00, - 0x02, 0x01, 0x59, 0x09, 0x06, 0x00, - 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00, - 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00, - 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00, - 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00, - 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00, - 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00, - 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00, - 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00, - 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, - 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00, - 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00, - 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00, - 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, - 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00, - 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, - 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00, - 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00, - 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00, - 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00, - 0x26, 0x49, 0x49, 0x49, 0x32, 0x00, - 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00, - 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00, - 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, - 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00, - 0x63, 0x14, 0x08, 0x14, 0x63, 0x00, - 0x03, 0x04, 0x78, 0x04, 0x03, 0x00, - 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, - 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00, - 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, - 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00, - 0x04, 0x02, 0x01, 0x02, 0x04, 0x00, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, - 0x00, 0x03, 0x07, 0x08, 0x00, 0x00, - 0x20, 0x54, 0x54, 0x78, 0x40, 0x00, - 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00, - 0x38, 0x44, 0x44, 0x44, 0x28, 0x00, - 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00, - 0x38, 0x54, 0x54, 0x54, 0x18, 0x00, - 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00, - 0x18, 0x24, 0x24, 0x1C, 0x78, 0x00, - 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00, - 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00, - 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00, - 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00, - 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00, - 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00, - 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00, - 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, - 0x7C, 0x18, 0x24, 0x24, 0x18, 0x00, - 0x18, 0x24, 0x24, 0x18, 0x7C, 0x00, - 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00, - 0x48, 0x54, 0x54, 0x54, 0x24, 0x00, - 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00, - 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00, - 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00, - 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00, - 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, - 0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00, - 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, - 0x00, 0x08, 0x36, 0x41, 0x00, 0x00, - 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, - 0x00, 0x41, 0x36, 0x08, 0x00, 0x00, - 0x02, 0x01, 0x02, 0x04, 0x02, 0x00, - 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, - 0xF0, 0xF8, 0xF8, 0x18, 0x00, 0xC0, - 0xF0, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, - 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, - 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x80, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, - 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0x80, - 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xC0, - 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0x00, - 0x00, 0xE0, 0xE0, 0xC0, 0xC0, 0xE0, - 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, - 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, - 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC, - 0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00, - 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E, - 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00, - 0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B, - 0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00, - 0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE, - 0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xF8, 0xFC, 0xFE, - 0xFF, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0x1F, 0x07, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xFF, 0xFF, 0xFF, 0x81, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, - 0xC3, 0xC3, 0xC3, 0x00, 0x00, 0xFF, - 0xFF, 0xFF, 0x81, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x81, 0xFF, 0xFF, - 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xFF, 0xFF, 0xFF, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, - 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, - 0x9D, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, - 0x1C, 0x9D, 0xDF, 0xDF, 0xDF, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F, - 0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00, - 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F, - 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00, - 0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20, - 0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00, - 0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F, - 0x0F, 0x7F, 0x0F, 0x00, 0x03, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x03, 0x0F, 0x1F, - 0x3F, 0x3F, 0x3F, 0x3F, 0x1F, 0x1F, - 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x3F, - 0x3F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F, - 0x7F, 0x7C, 0x78, 0x78, 0x38, 0x1C, - 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, - 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, - 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x03, 0x07, 0x07, 0x07, 0x07, - 0x07, 0x07, 0x07, 0x07, 0x03, 0x01, - 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, - 0x07, 0x00, 0x00, 0x00, 0x01, 0x03, - 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, - 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; - -#else - -// use https://joric.github.io/qle/ to generate these. -// You can copy the image into the logo section, then copy the byte array out of the font one . -const unsigned char font[] PROGMEM= { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00, - 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00, - 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00, - 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00, - 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00, - 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, - 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00, - 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, - 0x00, 0x18, 0x24, 0x18, 0x00, 0x00, - 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00, - 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00, - 0x26, 0x29, 0x79, 0x29, 0x26, 0x00, - 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00, - 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00, - 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00, - 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00, - 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00, - 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00, - 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00, - 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00, - 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00, - 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, - 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00, - 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00, - 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00, - 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00, - 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00, - 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00, - 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00, - 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00, - 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, - 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, - 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, - 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00, - 0x23, 0x13, 0x08, 0x64, 0x62, 0x00, - 0x36, 0x49, 0x56, 0x20, 0x50, 0x00, - 0x00, 0x08, 0x07, 0x03, 0x00, 0x00, - 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, - 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, - 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, - 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, - 0x00, 0x80, 0x70, 0x30, 0x00, 0x00, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, - 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, - 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, - 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, - 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00, - 0x72, 0x49, 0x49, 0x49, 0x46, 0x00, - 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00, - 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00, - 0x27, 0x45, 0x45, 0x45, 0x39, 0x00, - 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00, - 0x41, 0x21, 0x11, 0x09, 0x07, 0x00, - 0x36, 0x49, 0x49, 0x49, 0x36, 0x00, - 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00, - 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x40, 0x34, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x14, 0x22, 0x41, 0x00, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, - 0x00, 0x41, 0x22, 0x14, 0x08, 0x00, - 0x02, 0x01, 0x59, 0x09, 0x06, 0x00, - 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00, - 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00, - 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00, - 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00, - 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00, - 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00, - 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00, - 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00, - 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, - 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00, - 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00, - 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00, - 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, - 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00, - 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, - 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00, - 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00, - 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00, - 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00, - 0x26, 0x49, 0x49, 0x49, 0x32, 0x00, - 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00, - 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00, - 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, - 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00, - 0x63, 0x14, 0x08, 0x14, 0x63, 0x00, - 0x03, 0x04, 0x78, 0x04, 0x03, 0x00, - 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, - 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00, - 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, - 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00, - 0x04, 0x02, 0x01, 0x02, 0x04, 0x00, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, - 0x00, 0x03, 0x07, 0x08, 0x00, 0x00, - 0x20, 0x54, 0x54, 0x78, 0x40, 0x00, - 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00, - 0x38, 0x44, 0x44, 0x44, 0x28, 0x00, - 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00, - 0x38, 0x54, 0x54, 0x54, 0x18, 0x00, - 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00, - 0x18, 0x24, 0x24, 0x1C, 0x78, 0x00, - 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00, - 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00, - 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00, - 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00, - 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00, - 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00, - 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00, - 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, - 0x7C, 0x18, 0x24, 0x24, 0x18, 0x00, - 0x18, 0x24, 0x24, 0x18, 0x7C, 0x00, - 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00, - 0x48, 0x54, 0x54, 0x54, 0x24, 0x00, - 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00, - 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00, - 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00, - 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00, - 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, - 0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00, - 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, - 0x00, 0x08, 0x36, 0x41, 0x00, 0x00, - 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, - 0x00, 0x41, 0x36, 0x08, 0x00, 0x00, - 0x02, 0x01, 0x02, 0x04, 0x02, 0x00, - 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x7C, 0xFC, - 0xFC, 0xF8, 0xF0, 0x00, 0x20, 0xF0, - 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x3C, - 0xA8, 0xE0, 0xE0, 0xE0, 0xF0, 0x78, - 0x7C, 0x7C, 0x7C, 0x3C, 0x1C, 0x00, - 0x00, 0x00, 0xF8, 0xFC, 0x8C, 0x04, - 0x04, 0x0C, 0x08, 0x10, 0x80, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x60, 0xC0, 0x80, - 0x80, 0xE0, 0xF0, 0xF8, 0x7C, 0x1C, - 0x0C, 0x0C, 0x0C, 0x9C, 0xF8, 0x00, - 0x00, 0x00, 0xF8, 0xFC, 0x8C, 0x04, - 0x04, 0x0C, 0x08, 0x10, 0x80, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC, - 0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00, - 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E, - 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00, - 0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B, - 0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00, - 0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE, - 0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x20, 0x70, - 0x21, 0x3F, 0x0F, 0x1F, 0x3D, 0x3D, - 0x3C, 0xBC, 0xBC, 0xFC, 0x7E, 0x7E, - 0xF3, 0xF1, 0xE0, 0xC0, 0x80, 0x00, - 0x00, 0x00, 0x00, 0x80, 0xC0, 0x20, - 0x00, 0x00, 0x10, 0x38, 0xE0, 0xFF, - 0xFF, 0xFF, 0xFF, 0xC0, 0x03, 0x02, - 0x02, 0x07, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x03, 0x07, 0x8F, - 0xCF, 0x7E, 0x7E, 0x3F, 0x3D, 0x3D, - 0x3C, 0xBC, 0xBC, 0xF8, 0xF0, 0xFC, - 0x84, 0x0E, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, - 0x70, 0x20, 0x20, 0xE0, 0x81, 0xFF, - 0xFF, 0xFF, 0x7F, 0x03, 0x0E, 0x04, - 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x03, 0x07, 0x8F, - 0xCF, 0x7E, 0x7E, 0x3F, 0x3D, 0x3D, - 0x3C, 0xBC, 0xBC, 0xF8, 0xF0, 0xFC, - 0x84, 0x0E, 0x04, 0x00, 0x00, 0x00, - 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F, - 0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00, - 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F, - 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00, - 0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20, - 0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00, - 0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F, - 0x0F, 0x7F, 0x0F, 0x00, 0x03, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x08, 0x10, 0x30, - 0x20, 0x20, 0x31, 0x3F, 0x1F, 0x00, - 0x00, 0x00, 0x00, 0x0F, 0x1C, 0x18, - 0x18, 0x18, 0x1C, 0x1F, 0x0F, 0x07, - 0x03, 0x00, 0x00, 0x01, 0x03, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x0F, 0x04, 0x00, 0x0F, 0x1F, - 0x3F, 0x3F, 0x3E, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x1C, 0x1E, 0x1F, - 0x1F, 0x1F, 0x0F, 0x07, 0x03, 0x03, - 0x03, 0x0A, 0x1e, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x0F, 0x04, 0x00, 0x0f, 0x1F, - 0x3F, 0x3F, 0x3f, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -#endif \ No newline at end of file diff --git a/users/dhertz/config.h b/users/dhertz/config.h deleted file mode 100644 index 3f7762e650..0000000000 --- a/users/dhertz/config.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef USERSPACE_CONFIG_H -#define USERSPACE_CONFIG_H - -#ifdef TAPPING_TERM -#undef TAPPING_TERM -#endif // TAPPING_TERM -#define TAPPING_TERM 200 - -#endif // !USERSPACE_CONFIG_H diff --git a/users/dhertz/dhertz.c b/users/dhertz/dhertz.c deleted file mode 100644 index a4e3da6362..0000000000 --- a/users/dhertz/dhertz.c +++ /dev/null @@ -1,109 +0,0 @@ -// Copyright 2022 Dan Hertz (@dhertz) -// SPDX-License-Identifier: GPL-3.0 - -#include "dhertz.h" - -// Add reconfigurable functions here, for keymap customization -// This allows for a global, userspace functions, and continued -// customization of the keymap. Use _keymap instead of _user -// functions in the keymaps -__attribute__ ((weak)) -void matrix_init_keymap(void) {} - -__attribute__ ((weak)) -void matrix_scan_keymap(void) {} - -__attribute__ ((weak)) -bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { - return true; -} -__attribute__ ((weak)) -layer_state_t layer_state_set_keymap (layer_state_t state) { - return state; -} -__attribute__ ((weak)) -void led_set_keymap(uint8_t usb_led) {} - -__attribute__ ((weak)) -void action_function_keymap(keyrecord_t *record, uint8_t id, uint8_t opt) {} - -// Call user matrix init, then call the keymap's init function -void matrix_init_user(void) { - matrix_init_keymap(); -} - -// No global matrix scan code, so just run keymap's matix -// scan function -void matrix_scan_user(void) { - matrix_scan_keymap(); -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch(keycode) { - case CMD_TAB_CMD: - mod_or_mod_with_macro(record, KC_LGUI, SS_TAP(X_TAB)); - return false; - case CMD_GRV_CMD: - mod_or_mod_with_macro(record, KC_RGUI, SS_TAP(X_GRAVE)); - return false; - } - - if (record->event.pressed) { - switch(keycode) { - case HSH_TLD: - if (get_mods()&(MOD_BIT(KC_LSFT)|MOD_BIT(KC_RSFT))) { - SEND_STRING(SS_TAP(X_NONUS_BACKSLASH)); - } else { - SEND_STRING(SS_LALT("3")); - } - break; - case CTRL_A: - SEND_STRING(SS_LCTL("a")); - break; - case CMD_ALT_C: - SEND_STRING(SS_LGUI(SS_LALT("c"))); - break; - case CMD_SFT_L: - SEND_STRING(SS_LGUI("L")); - break; - case CMD_SFT_A: - SEND_STRING(SS_LGUI("A")); - break; - case CMD_SFT_ALT_A: - SEND_STRING(SS_LGUI(SS_LALT("A"))); - break; - case ISO_COUNTRY_CODE: - SEND_STRING("country_iso_alpha2_code"); - break; - default: - return process_record_keymap(keycode, record); - } - return false; - } - return process_record_keymap(keycode, record); -} - -static uint16_t sunds_timer; - -void mod_or_mod_with_macro(keyrecord_t *record, uint16_t kc_mod, char* macro) { - if (record->event.pressed) { - sunds_timer = timer_read(); - register_code(kc_mod); - } else { - if (timer_elapsed(sunds_timer) < TAPPING_TERM) { - send_string(macro); - } - unregister_code(kc_mod); - } -} - -// Runs state check and changes underglow color and animation -// on layer change, no matter where the change was initiated -// Then runs keymap's layer change check -layer_state_t layer_state_set_user (layer_state_t state) { - return layer_state_set_keymap (state); -} - -void led_set_user(uint8_t usb_led) { - led_set_keymap(usb_led); -} diff --git a/users/dhertz/dhertz.h b/users/dhertz/dhertz.h deleted file mode 100644 index f980329fa5..0000000000 --- a/users/dhertz/dhertz.h +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2022 Dan Hertz (@dhertz) -// SPDX-License-Identifier: GPL-3.0 - -#ifndef USERSPACE -#define USERSPACE - -#include "quantum.h" - -#define SRCH_CTL CTL_T(KC_F19) -#define LYR_SPC LT(1, KC_SPC) -#define NC_CTL CTL_T(KC_F18) - -enum custom_keycodes { - HSH_TLD = SAFE_RANGE, - CTRL_A, - CMD_ALT_C, - CMD_SFT_L, - ISO_COUNTRY_CODE, - CMD_TAB_CMD, - CMD_GRV_CMD, - CMD_SFT_A, - CMD_SFT_ALT_A, - NEW_SAFE_RANGE, -}; - -void mod_or_mod_with_macro(keyrecord_t *record, uint16_t kc_mod, char* cmd_or_macro); - -#endif diff --git a/users/dhertz/rules.mk b/users/dhertz/rules.mk deleted file mode 100644 index 0643edfad7..0000000000 --- a/users/dhertz/rules.mk +++ /dev/null @@ -1 +0,0 @@ -SRC += dhertz.c diff --git a/users/doogle999/doogle999.c b/users/doogle999/doogle999.c deleted file mode 100644 index a5bd637ece..0000000000 --- a/users/doogle999/doogle999.c +++ /dev/null @@ -1,460 +0,0 @@ -#include "doogle999.h" - -static unsigned char inputLocation = 0; // Current index in text input - -static double calc(const char input[CALC_BUFFER_SIZE +1]) // Finds value of input char array, relatively small and fast I think -{ - char inputToken[CALC_BUFFER_SIZE + 1]; // Input buffer, used when a single token (generally a number) takes up more - unsigned char inputTokenLocation = 0, inputLocation = 0; // Keep track of indices - - struct Token tokens[CALC_BUFFER_SIZE + 1]; // Input, converted to tokens, one extra large to accomodate for possible negative sign then open parenthesis as first character - unsigned char tokenCount = 0; // Keep track of index - - bool dashAsMinus = false; // Kind of a hacky solution to determining whether to treat a dash as a minus sign or a negative sign - - while(inputLocation < CALC_BUFFER_SIZE + 1) - { - char digit = input[inputLocation]; - - if(inputLocation == 0 && input[inputLocation] == CALC_CHAR_SUB && input[inputLocation + 1] == CALC_CHAR_BEG) - { - tokens[tokenCount].raw.num = 0; - tokens[tokenCount].isNum = true; - - tokenCount++; - dashAsMinus = true; - } - - if ((digit >= '0' && digit <= '9') || /* valid digit */ - (inputTokenLocation != 0 && input[inputLocation] == CALC_CHAR_DEC) || /* valid floating point */ - (!dashAsMinus && inputTokenLocation == 0 && input[inputLocation] == CALC_CHAR_SUB)) /* - is negative sign */ - { - inputToken[inputTokenLocation] = input[inputLocation]; - inputTokenLocation++; - inputLocation++; - continue; - } - - if(inputTokenLocation != 0) - { - // sscanf(inputToken, "%lf", &tokens[tokenCount].raw.num); // I would like to use sscanf here, but the small version of stdio.h on the chip doesn't allow sscanf or its sister functions to be used to process floats - tokens[tokenCount].raw.num = atof(inputToken); - tokens[tokenCount].isNum = true; - for(unsigned char i = 0; i < inputTokenLocation + 1; i++) - { - inputToken[i] = '\0'; - } - inputTokenLocation = 0; - tokenCount++; - dashAsMinus = true; - continue; - } - - /* inputTokenLocation == 0 */ - tokens[tokenCount].isNum = false; - tokens[tokenCount].raw.op.c = input[inputLocation]; - tokens[tokenCount].raw.op.priority = 0; - tokens[tokenCount].raw.op.ltr = true; - dashAsMinus = false; - - switch(input[inputLocation]) - { - case CALC_CHAR_BEG: - break; - case CALC_CHAR_END: - dashAsMinus = true; - break; - case CALC_CHAR_ADD: - tokens[tokenCount].raw.op.priority = CALC_PRIO_ADD; - break; - case CALC_CHAR_SUB: - tokens[tokenCount].raw.op.priority = CALC_PRIO_SUB; - break; - case CALC_CHAR_MUL: - tokens[tokenCount].raw.op.priority = CALC_PRIO_MUL; - break; - case CALC_CHAR_DIV: - tokens[tokenCount].raw.op.priority = CALC_PRIO_DIV; - break; - case CALC_CHAR_EXP: - tokens[tokenCount].raw.op.priority = CALC_PRIO_EXP; - tokens[tokenCount].raw.op.ltr = false; - break; - case CALC_CHAR_SIN: - case CALC_CHAR_COS: - case CALC_CHAR_TAN: - case CALC_CHAR_ASN: - case CALC_CHAR_ACS: - case CALC_CHAR_ATN: - case CALC_CHAR_LGE: - case CALC_CHAR_LOG: - case CALC_CHAR_SQT: - break; - case CALC_CHAR_EUL: - tokens[tokenCount].isNum = true; - tokens[tokenCount].raw.num = CALC_VALU_EUL; - dashAsMinus = true; - break; - case CALC_CHAR_PI: - tokens[tokenCount].isNum = true; - tokens[tokenCount].raw.num = CALC_VALU_PI; - dashAsMinus = true; - break; - case '\0': - tokenCount--; - inputLocation = CALC_BUFFER_SIZE; - break; - default: - tokenCount--; - break; - } - tokenCount++; - inputLocation++; - } - - struct Token output[CALC_BUFFER_SIZE + 1]; // Final output tokens before evaluation - struct Token opstack[CALC_BUFFER_SIZE + 1]; // Stack of operators - unsigned char outputLocation = 0, opstackLocation = 0; // Keep track of indices - - unsigned char numBrackets = 0; // The number of parenthesis - - for(unsigned char i = 0; i < tokenCount; i++) - { - if(tokens[i].isNum) - { - output[outputLocation] = tokens[i]; - outputLocation++; - } - else if(tokens[i].raw.op.c == CALC_CHAR_BEG) - { - opstack[opstackLocation] = tokens[i]; - opstackLocation++; - } - else if(tokens[i].raw.op.c == CALC_CHAR_END) - { - while(opstack[opstackLocation - 1].raw.op.c != CALC_CHAR_BEG) - { - output[outputLocation] = opstack[opstackLocation - 1]; - outputLocation++; - opstackLocation--; - } - opstackLocation--; - - numBrackets += 2; - } - else if(tokens[i].raw.op.priority == 0) - { - opstack[opstackLocation] = tokens[i]; - opstackLocation++; - } - else - { - while(opstackLocation != 0 - && (opstack[opstackLocation - 1].raw.op.priority == 0 - || tokens[i].raw.op.priority < opstack[opstackLocation - 1].raw.op.priority - || (tokens[i].raw.op.priority == opstack[opstackLocation - 1].raw.op.priority && opstack[opstackLocation - 1].raw.op.ltr)) - && opstack[opstackLocation - 1].raw.op.c != CALC_CHAR_BEG) - { - output[outputLocation] = opstack[opstackLocation - 1]; - outputLocation++; - opstackLocation--; - } - opstack[opstackLocation] = tokens[i]; - opstackLocation++; - } - } - - tokenCount -= numBrackets; - - for(signed char i = opstackLocation - 1; i >= 0; i--) - { - output[outputLocation] = opstack[i]; - outputLocation++; - opstackLocation--; - } - - double answer[CALC_BUFFER_SIZE]; - unsigned char answerLocation = 0; - - for(unsigned char i = 0; i < tokenCount; i++) - { - if(output[i].isNum) - { - answer[answerLocation] = output[i].raw.num; - answerLocation++; - continue; - } - - if(output[i].raw.op.priority == 0) - { - if (answerLocation < 1) { /* not handled here -- ERROR? */ } else - if(answerLocation >= 1) - { - double (*op)(double); - switch(output[i].raw.op.c) - { - case CALC_CHAR_SIN: - op = sin; - break; - case CALC_CHAR_COS: - op = cos; - break; - case CALC_CHAR_TAN: - op = tan; - break; - case CALC_CHAR_ASN: - op = asin; - break; - case CALC_CHAR_ACS: - op = acos; - break; - case CALC_CHAR_ATN: - op = atan; - break; - case CALC_CHAR_LGE: - op = log; - break; - case CALC_CHAR_LOG: - op = log10; - break; - case CALC_CHAR_SQT: - op = sqrt; - break; - default: - continue; /* invalid input */ - } - answer[answerLocation - 1] = op(answer[answerLocation - 1]); - } - } - /* priority != 0 */ - else if(answerLocation >= 2) - { - switch(output[i].raw.op.c) - { - case CALC_CHAR_ADD: - answer[answerLocation - 2] += answer[answerLocation - 1]; - break; - case CALC_CHAR_SUB: - answer[answerLocation - 2] -= answer[answerLocation - 1]; - break; - case CALC_CHAR_MUL: - answer[answerLocation - 2] *= answer[answerLocation - 1]; - break; - case CALC_CHAR_DIV: - answer[answerLocation - 2] /= answer[answerLocation - 1]; - break; - case CALC_CHAR_EXP: - answer[answerLocation - 2] = pow(answer[answerLocation - 2], answer[answerLocation - 1]); - break; - } - - answerLocation--; - } - } - - return answer[0]; -} - -/* - * @returns 0 when nothing should happen and QMK should work as usual - * @returns -1 when invalid input was given, QMK should ignore it - * @returns -2 when BSP should be done - * @returns -3 when CALC should be done - * @returns -4 when ENDCALC should be done - * @returns positive value of CALC_* when normal input was processed - */ -static int process_input(const uint16_t keycode, const uint8_t mods, const keyevent_t event) -{ - /* handle even when no key was pressed */ - if(!event.pressed) - { - switch(keycode) - { - /* QMK should handle those */ - case KC_RSFT: - case KC_LSFT: - return 0; - break; - } - /* ??? ignore */ - return -1; - } - - /* when shift key is pressed handle characters differently */ - char characterPressed; - if((get_mods() & MODS_SHIFT_MASK)) - { - switch(keycode) - { - case KC_9: - characterPressed = CALC_CHAR_BEG; - break; - case KC_0: - characterPressed = CALC_CHAR_END; - break; - case KC_EQUAL: - characterPressed = CALC_CHAR_ADD; - break; - case KC_KP_PLUS: - characterPressed = CALC_CHAR_ADD; - break; - case KC_6: - characterPressed = CALC_CHAR_EXP; - break; - case KC_8: - characterPressed = CALC_CHAR_MUL; - break; - case KC_KP_ASTERISK: - characterPressed = CALC_CHAR_MUL; - break; - case KC_S: - characterPressed = CALC_CHAR_ASN; - break; - case KC_C: - characterPressed = CALC_CHAR_ACS; - break; - case KC_T: - characterPressed = CALC_CHAR_ATN; - break; - case KC_L: - characterPressed = CALC_CHAR_LOG; - break; - default: - return -1; - break; - } - return characterPressed; - } - - /* normal key handling: shift not pressed */ - - /* digits */ - if (keycode == KC_KP_0 || keycode == KC_0) { - return '0'; - } else if (keycode >= KC_KP_1 && keycode <= KC_KP_9) { - return keycode - KC_KP_1 +1 + '0'; - } else if (keycode >= KC_1 && keycode <= KC_9) { - return keycode - KC_1 +1 + '0'; - } - - /* other tokens */ - switch (keycode) { - case KC_MINUS: - case KC_KP_MINUS: - return characterPressed = CALC_CHAR_SUB; - case KC_SLASH: - case KC_KP_SLASH: - return characterPressed = CALC_CHAR_DIV; - case KC_S: - return characterPressed = CALC_CHAR_SIN; - case KC_C: - return characterPressed = CALC_CHAR_COS; - case KC_T: - return characterPressed = CALC_CHAR_TAN; - case KC_Q: - return characterPressed = CALC_CHAR_SQT; - case KC_L: - return characterPressed = CALC_CHAR_LGE; - case KC_DOT: - case KC_KP_DOT: - return characterPressed = CALC_CHAR_DEC; - case KC_P: - return characterPressed = CALC_CHAR_PI; - case KC_E: - return characterPressed = CALC_CHAR_EUL; - case KC_BSPC: - return -2; - case KC_RSFT: - return 0; - case KC_LSFT: - return 0; - case CALC: - return -3; - case ENDCALC: - return -4; - default: - return -1; - } -} - -bool process_record_user(uint16_t keycode, keyrecord_t* record) -{ - static char text[CALC_BUFFER_SIZE + 1]; // Used to store input and then output when ready to print - static char backspaceText[CALC_BUFFER_SIZE + 1]; // Pretty dumb waste of memory because only backspace characters, used with send_string to backspace and remove input - - if((get_highest_layer(layer_state) == CALC_LAYER && CALC_FORCE_NUM_LOCK_INSIDE_CALC) || (get_highest_layer(layer_state) != CALC_LAYER && CALC_FORCE_NUM_LOCK_OUTSIDE_CALC)) - { - bool numpadKeyPressed = record->event.pressed && - !(get_mods() & MODS_SHIFT_MASK) && - /* KC_KP_1, KC_KP_2, ..., KC_KP_0, KC_KP_DOT */ - (keycode >= KC_KP_1 && keycode <= KC_KP_DOT); - - if(numpadKeyPressed && !host_keyboard_led_state().num_lock) - { - add_key(KC_NUM_LOCK); - send_keyboard_report(); - del_key(KC_NUM_LOCK); - } - } - - if(get_highest_layer(layer_state) != CALC_LAYER) { return true; } - - int action = process_input(keycode, get_mods(), record->event); - switch(action) - { - case 0: - return true; - case -1: - return false; - case -2: - if(inputLocation > 0) - { - inputLocation--; - text[inputLocation] = '\0'; - backspaceText[0] = (char)8; - backspaceText[1] = '\0'; - send_string(backspaceText); - } - return false; - case -3: - for(int i = 0; i < inputLocation; i++) - { - backspaceText[i] = (char)8; - } - send_string(backspaceText); - dtostrf(calc(text), CALC_PRINT_SIZE, CALC_PRINT_SIZE, text); - send_string(text); - for(unsigned char i = 0; i < CALC_BUFFER_SIZE; i++) - { - text[i] = '\0'; - backspaceText[i] = '\0'; - } - inputLocation = 0; - return false; - case -4: - for(unsigned char i = 0; i < CALC_BUFFER_SIZE; i++) - { - text[i] = '\0'; - backspaceText[i] = '\0'; - } - inputLocation = 0; - layer_off(CALC_LAYER); - return false; - default: - break; - } - char characterPressed = (char)action; - - if(inputLocation < CALC_BUFFER_SIZE) - { - text[inputLocation] = characterPressed; - inputLocation++; - - char characterToSend[2]; - characterToSend[0] = characterPressed; - characterToSend[1] = '\0'; - - send_string(characterToSend); - } - return false; -} diff --git a/users/doogle999/doogle999.h b/users/doogle999/doogle999.h deleted file mode 100644 index 44c7c19fd9..0000000000 --- a/users/doogle999/doogle999.h +++ /dev/null @@ -1,99 +0,0 @@ -#ifndef USERSPACE -#define USERSPACE - -#include "quantum.h" - -#define NO_ACTION_ONESHOT -#define NO_ACTION_MACRO - -#define MODS_SHIFT_MASK (MOD_BIT(KC_LSFT)|MOD_BIT(KC_RSFT)) - -// Layer the calculator is on -#define CALC_LAYER 2 - -// Inside is whether when you are in calc mode it should automatically force numlock, outside is whether it should do it outside of calculator mode -#define CALC_FORCE_NUM_LOCK_INSIDE_CALC true -#define CALC_FORCE_NUM_LOCK_OUTSIDE_CALC true - -// Maximum number of characters the calculator can have -#define CALC_BUFFER_SIZE 32 - -// Minimum width of the printed text / the number of decimal places -#define CALC_PRINT_SIZE 6 - -/*----- - Special ------*/ -#define CALC_CHAR_BEG '(' -#define CALC_CHAR_END ')' -#define CALC_CHAR_DEC '.' - -/*----- - Operators - Can add more here such as modulo %, factorial ! ------*/ -#define CALC_CHAR_ADD '+' -#define CALC_PRIO_ADD 1 - -#define CALC_CHAR_SUB '-' -#define CALC_PRIO_SUB 1 - -#define CALC_CHAR_MUL '*' -#define CALC_PRIO_MUL 2 - -#define CALC_CHAR_DIV '/' -#define CALC_PRIO_DIV 2 - -#define CALC_CHAR_EXP '^' -#define CALC_PRIO_EXP 3 - -/*----- - Functions ------*/ -#define CALC_CHAR_SIN 's' -#define CALC_CHAR_COS 'c' -#define CALC_CHAR_TAN 't' - -#define CALC_CHAR_ASN 'S' -#define CALC_CHAR_ACS 'C' -#define CALC_CHAR_ATN 'T' - -#define CALC_CHAR_LGE 'l' -#define CALC_CHAR_LOG 'L' - -#define CALC_CHAR_SQT 'q' - -/*----- - Constants ------*/ -#define CALC_CHAR_EUL 'e' -#define CALC_VALU_EUL 2.71828182845904523536 - -#define CALC_CHAR_PI 'p' -#define CALC_VALU_PI 3.14159265358979323846 - -struct OP // Operator/function -{ - char c; - unsigned char priority; - bool ltr; -}; - -union TokenRaw // A token after the input has been processed, can either be a number or an operator/function -{ - double num; - struct OP op; -}; - -struct Token // Encapsulator -{ - bool isNum; - union TokenRaw raw; -}; - -enum CalcFunctions // Hardware calculator key functionality -{ - CALC = SAFE_RANGE, - ENDCALC -}; - -#endif diff --git a/users/doogle999/readme.md b/users/doogle999/readme.md deleted file mode 100644 index e108555b9c..0000000000 --- a/users/doogle999/readme.md +++ /dev/null @@ -1,41 +0,0 @@ -Copyright 2018 @doogle999 - -Overview -======== - -This folder is just for some calculator code for my keyboards. - -Making Your Keyboard Into A Calculator --------------------------------------- - -If you'd like to make your keyboard into a calculator, you can do it with this userspace (hopefully!) - -You can make a keymap for your keyboard of choice named doogle999 and then you can make it regularly. - -You should make one layer that is just the functionality for your calculator, so it just has the keys you need (numbers, symbols, some letters for functions). It should also have END_CALC and CALC somewhere. END_CALC gets you out of calculator mode, and CALC evaluates the calculation. - -On one of your other keymaps you should make a key that is TO(layer of calculator). This is how you will activate the calculator. You should also define the layer your calculator is on with the define CALC_LAYER in doogle999.h (this means that for all your keyboards, your calculator layer has to be the same layer). - -You can change what characters coorespond to what operators and functions and you can add more functions in doogle999.h and doogle999.c, you can also change which characters are sued for which keys. However, as of now standard keys should be used for operations. By that I mean if you want your multiplication sign to be an x, you should change the CALC_CHAR_MUL to an x but you should keep your multiplication keycode on the keymap either as KC_8 (shifted) or KC_KP_ASTERISK. This might be changed in the future so there are custom keycodes so this is less of a pain and more intuitive. - -You can look at my dz60 keymap doogle999 for an example. - -Issues ------- -Unfortunately the chip onboard my dz60 only does single precision floating point numbers, but I have everything set up as double so if your chip supports doubles it should work for you. - -This Was Here When I Made The ReadMe ------------------------------------- - -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 . \ No newline at end of file diff --git a/users/doogle999/rules.mk b/users/doogle999/rules.mk deleted file mode 100644 index aab01b2433..0000000000 --- a/users/doogle999/rules.mk +++ /dev/null @@ -1,14 +0,0 @@ -SRC += doogle999.c - -CFLAGS += -fstrict-aliasing -ftree-vrp - -BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite -MOUSEKEY_ENABLE = no # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) -COMMAND_ENABLE = no # Commands for debug and configuration -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -AUDIO_ENABLE = no -RGBLIGHT_ENABLE = yes diff --git a/users/draevin/LICENSE b/users/draevin/LICENSE deleted file mode 100644 index 33c17847d9..0000000000 --- a/users/draevin/LICENSE +++ /dev/null @@ -1,14 +0,0 @@ -Copyright 2020 Draevin Luke @draevin - -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 . diff --git a/users/draevin/README.md b/users/draevin/README.md deleted file mode 100644 index e635fdf22f..0000000000 --- a/users/draevin/README.md +++ /dev/null @@ -1,38 +0,0 @@ -# Userspace - Draevin - -## Notable Files - -- [draevin.h](draevin.h) - Standard layers, keys, and tap dance key and config for all my boards -- [draevin.c](draevin.c) - Colemak/QWERTY switch, KC_MAKE, and Shift/CAPS TD -- [wrappers](wrappers.h) - QWERTY, Colemak, F Row, Num Row, and `_FN` layer layout wrappers - -## Keymap themes - -Some general ideas shared between my maps - -- Colemak and QWERTY layouts - - In wrappers - - All are Colemak default with `CM_QW` switch -- Nav and punctuation `_FN` layer - - In wrappers - - Right hand home arrows - - Pinky `HOME`/`END` for ***speed*** - - Inner grouping symbols to decrease reach -- Split space - - Left thumb `MO(_FN)` is standard, but on the wrong side in the Quefrency map (silly soldering error, but not bad enough to fix) - - Quefrency is still *technically* split though, right? `*<:^)` -- Re-organized right mods - - Personal preference on wanting easier right thumb `CTRL` -- Real `DEL` key - - I can't seem to get away from it with layering, so all my maps have a delete key - - Sinc/Quefrency have it in the +5 column on the right - - DZ60 has it in the split backspace -- `KC_MAKE` - -## Keymaps - -- [DZ60](../../keyboards/dz60/keymaps/draevin/keymap.c) -- [Sinc 80](../../keyboards/keebio/sinc/keymaps/draevin/keymap.c) -- [Quefrency 65 w/ Macro](../../keyboards/keebio/quefrency/keymaps/draevin/keymap.c) - - Horribly under-utilized macro block because I thought I needed more keys than I actually do (so sad) - - Left side volume and paging rotary diff --git a/users/draevin/config.h b/users/draevin/config.h deleted file mode 100644 index 9a3bb74374..0000000000 --- a/users/draevin/config.h +++ /dev/null @@ -1,26 +0,0 @@ -/* -Copyright 2020 Copyright 2020 Draevin Luke @draevin - -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 . -*/ - -#pragma once - -#define TAPPING_TOGGLE 2 -#define TAPPING_TERM 150 - -#define MOUSEKEY_WHEEL_DELAY 20 -#define MOUSEKEY_WHEEL_INTERVAL 80 -#define MOUSEKEY_WHEEL_MAX_SPEED 4 -#define MOUSEKEY_WHEEL_TIME_TO_MAX 30 \ No newline at end of file diff --git a/users/draevin/draevin.c b/users/draevin/draevin.c deleted file mode 100644 index 70b465a33d..0000000000 --- a/users/draevin/draevin.c +++ /dev/null @@ -1,59 +0,0 @@ -/* -Copyright 2020 Copyright 2020 Draevin Luke @draevin - -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 . -*/ - -#include "draevin.h" - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case CM_QW: // Switch between Colemak and QWERTY - if (record->event.pressed) { - layer_invert(_CM); - layer_invert(_QW); - } - return false; - case KC_MAKE: - if (!record->event.pressed) { - SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP ":flash\n"); - reset_keyboard(); - } - break; - case PRNPAIR: - if (record->event.pressed) { - SEND_STRING("()"); - tap_code(KC_LEFT); - } - break; - case BRCPAIR: - if (record->event.pressed) { - uint8_t shifted = get_mods() & (MOD_MASK_SHIFT); - if (shifted) { - unregister_code(KC_LSFT); - unregister_code(KC_RSFT); - SEND_STRING("{}"SS_TAP(X_LEFT)); - } - else { - SEND_STRING("[]"SS_TAP(X_LEFT)); - } - } - break; - } - return true; -} - -tap_dance_action_t tap_dance_actions[] = { - [TD_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_LSFT, KC_CAPS) // shift/caps TD -}; diff --git a/users/draevin/draevin.h b/users/draevin/draevin.h deleted file mode 100644 index 20dc77d993..0000000000 --- a/users/draevin/draevin.h +++ /dev/null @@ -1,39 +0,0 @@ -/* -Copyright 2020 Copyright 2020 Draevin Luke @draevin - -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 . -*/ - -#pragma once - -#include QMK_KEYBOARD_H -#include "wrappers.h" - -enum my_layers { - _CM, - _QW, - _FN, -}; - -enum my_keycodes { - CM_QW = SAFE_RANGE, // Switch between Colemak and QWERTY - KC_MAKE, - PRNPAIR, - BRCPAIR, - NEW_SAFE_RANGE -}; - -enum my_taps { - TD_CAPS // shift/caps TD -}; diff --git a/users/draevin/rules.mk b/users/draevin/rules.mk deleted file mode 100644 index 1fc377e231..0000000000 --- a/users/draevin/rules.mk +++ /dev/null @@ -1,12 +0,0 @@ -SRC += draevin.c - -LTO_ENABLE = yes -MOUSEKEY_ENABLE = yes -RGBLIGHT_ENABLE = yes -TAP_DANCE_ENABLE = yes - -AUDIO_ENABLE = no -BACKLIGHT_ENABLE = no -BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite -CONSOLE_ENABLE = no -SLEEP_LED_ENABLE = no \ No newline at end of file diff --git a/users/draevin/wrappers.h b/users/draevin/wrappers.h deleted file mode 100644 index 006a9aa996..0000000000 --- a/users/draevin/wrappers.h +++ /dev/null @@ -1,49 +0,0 @@ -/* -Copyright 2020 Copyright 2020 Draevin Luke @draevin - -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 . -*/ - -#pragma once - -#define ___________________BLANK___________________ _______, _______, _______, _______, _______ - -#define _________________FROW_LEFT_________________ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5 -#define _________________FROW_RIGHT________________ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10 - -#define ________________NUMBER_LEFT________________ KC_1, KC_2, KC_3, KC_4, KC_5 -#define ________________NUMBER_RIGHT_______________ KC_6, KC_7, KC_8, KC_9, KC_0 - -#define _________________COLEMAK_L1________________ KC_Q, KC_W, KC_F, KC_P, KC_G -#define _________________COLEMAK_L2________________ KC_A, KC_R, KC_S, KC_T, KC_D -#define _________________COLEMAK_L3________________ KC_Z, KC_X, KC_C, KC_V, KC_B - -#define _________________COLEMAK_R1________________ KC_J, KC_L, KC_U, KC_Y, KC_SCLN -#define _________________COLEMAK_R2________________ KC_H, KC_N, KC_E, KC_I, KC_O -#define _________________COLEMAK_R3________________ KC_K, KC_M, KC_COMM, KC_DOT, KC_SLASH - -#define _________________QWERTY_L1_________________ KC_Q, KC_W, KC_E, KC_R, KC_T -#define _________________QWERTY_L2_________________ KC_A, KC_S, KC_D, KC_F, KC_G -#define _________________QWERTY_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_B - -#define _________________QWERTY_R1_________________ KC_Y, KC_U, KC_I, KC_O, KC_P -#define _________________QWERTY_R2_________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN -#define _________________QWERTY_R3_________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLASH - -#define ___________________FN_L1___________________ _______, _______, KC_WH_U, _______, BRCPAIR -#define ___________________FN_L2___________________ KC_HOME, _______, KC_WH_D, _______, PRNPAIR - -#define ___________________FN_R1___________________ KC_RBRC, _______, KC_UP, _______, _______ -#define ___________________FN_R2___________________ KC_RPRN, KC_LEFT, KC_DOWN, KC_RGHT, KC_END -#define ___________________FN_R3___________________ _______, _______, RGB_TOG, RGB_MOD, KC_BSLS diff --git a/users/drashna/.gitignore b/users/drashna/.gitignore deleted file mode 100644 index f84d34d907..0000000000 --- a/users/drashna/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -secrets.c -secrets.h -drashna_song_list.h \ No newline at end of file diff --git a/users/drashna/.gitlab-ci.yml b/users/drashna/.gitlab-ci.yml deleted file mode 100644 index 71d216267f..0000000000 --- a/users/drashna/.gitlab-ci.yml +++ /dev/null @@ -1,24 +0,0 @@ -stages: - - test - -QMK Firmware: - stage: test - variables: - GIT_SUBMODULE_STRATEGY: recursive - tags: - - linux - image: qmkfm/base_container - before_script: - - apt-get update -qy - - apt-get install -y build-essential avr-libc binutils-arm-none-eabi binutils-avr dfu-programmer dfu-util gcc gcc-arm-none-eabi git libnewlib-arm-none-eabi gcc-avr python3 unzip wget zip - - avr-gcc --version - - uname -a - script: - - make planck/rev6:default planck/rev5:default - - make all:drashna -j2 - artifacts: - name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG" - paths: - - ./*.hex - - ./*.bin - expire_in: 1 month diff --git a/users/drashna/audio_config.h b/users/drashna/audio_config.h deleted file mode 100644 index 21fe27ee6b..0000000000 --- a/users/drashna/audio_config.h +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once - -#define AUDIO_CLICKY -#define AUDIO_CLICKY_FREQ_RANDOMNESS 1.5f - -#if __has_include("user_song_list.h") -# include "user_song_list.h" -#endif - -#ifdef USER_SONG_LIST -# define STARTUP_SONG SONG(RICK_ROLL) -# define GOODBYE_SONG SONG(SONIC_RING) -# define DEFAULT_LAYER_SONGS \ - { SONG(QWERTY_SOUND), SONG(COLEMAK_SOUND), SONG(DVORAK_SOUND), SONG(OVERWATCH_THEME) } -# define UNICODE_SONG_MAC SONG(MARIO_THEME) -# define UNICODE_SONG_LNX SONG(MARIO_POWERUP) -# define UNICODE_SONG_WIN SONG(MARIO_ONEUP) -# define UNICODE_SONG_BSD SONG(RICK_ROLL) -# define UNICODE_SONG_WINC SONG(RICK_ROLL) -#else -# define STARTUP_SONG SONG(STARTUP_SOUND) -# define GOODBYE_SONG SONG(GOODBYE_SOUND) -# define DEFAULT_LAYER_SONGS \ - { SONG(QWERTY_SOUND), SONG(COLEMAK_SOUND), SONG(DVORAK_SOUND), SONG(WORKMAN_SOUND) } -# define UNICODE_SONG_MAC SONG(QWERTY_SOUND) -# define UNICODE_SONG_LNX SONG(COLEMAK_SOUND) -# define UNICODE_SONG_WIN SONG(DVORAK_SOUND) -# define UNICODE_SONG_BSD SONG(WORKMAN_SOUND) -# define UNICODE_SONG_WINC SONG(PLOVER_GOODBYE_SOUND) -#endif diff --git a/users/drashna/autocorrect_data.h b/users/drashna/autocorrect_data.h deleted file mode 100644 index 52ed7fa9a7..0000000000 --- a/users/drashna/autocorrect_data.h +++ /dev/null @@ -1,93 +0,0 @@ -#if __has_include("../qmk_secrets/autocorrection_data.h") -# pragma message "Loading custom library" -# include "../qmk_secrets/autocorrection_data.h" -# define AUTOCORRECTION_MIN_LENGTH AUTOCORRECT_MIN_LENGTH -# define AUTOCORRECTION_MAX_LENGTH AUTOCORRECT_MAX_LENGTH - -#else -// Generated code. - -// Autocorrection dictionary (70 entries): -// :guage -> gauge -// :the:the: -> the -// :thier -> their -// :ture -> true -// accomodate -> accommodate -// acommodate -> accommodate -// aparent -> apparent -// aparrent -> apparent -// apparant -> apparent -// apparrent -> apparent -// aquire -> acquire -// becuase -> because -// cauhgt -> caught -// cheif -> chief -// choosen -> chosen -// cieling -> ceiling -// collegue -> colleague -// concensus -> consensus -// contians -> contains -// cosnt -> const -// dervied -> derived -// fales -> false -// fasle -> false -// fitler -> filter -// flase -> false -// foward -> forward -// frequecy -> frequency -// gaurantee -> guarantee -// guaratee -> guarantee -// heigth -> height -// heirarchy -> hierarchy -// inclued -> include -// interator -> iterator -// intput -> input -// invliad -> invalid -// lenght -> length -// liasion -> liaison -// libary -> library -// listner -> listener -// looses: -> loses -// looup -> lookup -// manefist -> manifest -// namesapce -> namespace -// namespcae -> namespace -// occassion -> occasion -// occured -> occurred -// ouptut -> output -// ouput -> output -// overide -> override -// postion -> position -// priviledge -> privilege -// psuedo -> pseudo -// recieve -> receive -// refered -> referred -// relevent -> relevant -// repitition -> repetition -// retrun -> return -// retun -> return -// reuslt -> result -// reutrn -> return -// saftey -> safety -// seperate -> separate -// singed -> signed -// stirng -> string -// strign -> string -// swithc -> switch -// swtich -> switch -// thresold -> threshold -// udpate -> update -// widht -> width - -#define AUTOCORRECT_MIN_LENGTH 5 // ":ture" -#define AUTOCORRECT_MAX_LENGTH 10 // "accomodate" - -#define DICTIONARY_SIZE 1104 - -static const uint8_t autocorrect_data[DICTIONARY_SIZE] PROGMEM = {108, 43, 0, 6, 71, 0, 7, 81, 0, 8, 199, 0, 9, 240, 1, 10, 250, 1, 11, 26, 2, 17, 53, 2, 18, 190, 2, 19, 202, 2, 21, 212, 2, 22, 20, 3, 23, 67, 3, 28, 16, 4, 0, 72, 50, 0, 22, 60, 0, 0, 11, 23, 44, 8, 11, 23, 44, 0, 132, 0, 8, 22, 18, 18, 15, 0, 132, 115, 101, 115, 0, 11, 23, 12, 26, 22, 0, 129, 99, 104, 0, 68, 94, 0, 8, 106, 0, 15, 174, 0, 21, 187, 0, 0, 12, 15, 25, 17, 12, 0, 131, 97, 108, 105, 100, 0, 74, 119, 0, 12, 129, 0, 21, 140, 0, 24, 165, 0, 0, 17, 12, 22, 0, 131, 103, 110, 101, 100, 0, 25, 21, 8, 7, 0, 131, 105, 118, 101, 100, 0, 72, 147, 0, 24, 156, 0, 0, 9, 8, 21, 0, 129, 114, 101, 100, 0, 6, 6, 18, 0, 129, 114, 101, 100, 0, 15, 6, 17, 12, 0, 129, 100, 101, 0, 18, 22, 8, 21, 11, 23, 0, 130, 104, 111, - 108, 100, 0, 4, 26, 18, 9, 0, 131, 114, 119, 97, 114, 100, 0, 68, 233, 0, 6, 246, 0, 7, 4, 1, 8, 16, 1, 10, 52, 1, 15, 81, 1, 21, 90, 1, 22, 117, 1, 23, 144, 1, 24, 215, 1, 25, 228, 1, 0, 6, 19, 22, 8, 16, 4, 17, 0, 130, 97, 99, 101, 0, 19, 4, 22, 8, 16, 4, 17, 0, 131, 112, 97, 99, 101, 0, 12, 21, 8, 25, 18, 0, 130, 114, 105, 100, 101, 0, 23, 0, 68, 25, 1, 17, 36, 1, 0, 21, 4, 24, 10, 0, 130, 110, 116, 101, 101, 0, 4, 21, 24, 4, 10, 0, 135, 117, 97, 114, 97, 110, 116, 101, 101, 0, 68, 59, 1, 7, 69, 1, 0, 24, 10, 44, 0, 131, 97, 117, 103, 101, 0, 8, 15, 12, 25, 12, 21, 19, 0, 130, 103, 101, 0, 22, 4, 9, 0, 130, 108, 115, 101, 0, 76, 97, 1, 24, 109, 1, 0, 24, 20, 4, 0, 132, 99, 113, 117, 105, 114, 101, 0, 23, 44, 0, - 130, 114, 117, 101, 0, 4, 0, 79, 126, 1, 24, 134, 1, 0, 9, 0, 131, 97, 108, 115, 101, 0, 6, 8, 5, 0, 131, 97, 117, 115, 101, 0, 4, 0, 71, 156, 1, 19, 193, 1, 21, 203, 1, 0, 18, 16, 0, 80, 166, 1, 18, 181, 1, 0, 18, 6, 4, 0, 135, 99, 111, 109, 109, 111, 100, 97, 116, 101, 0, 6, 6, 4, 0, 132, 109, 111, 100, 97, 116, 101, 0, 7, 24, 0, 132, 112, 100, 97, 116, 101, 0, 8, 19, 8, 22, 0, 132, 97, 114, 97, 116, 101, 0, 10, 8, 15, 15, 18, 6, 0, 130, 97, 103, 117, 101, 0, 8, 12, 6, 8, 21, 0, 131, 101, 105, 118, 101, 0, 12, 8, 11, 6, 0, 130, 105, 101, 102, 0, 17, 0, 76, 3, 2, 21, 16, 2, 0, 15, 8, 12, 6, 0, 133, 101, 105, 108, 105, 110, 103, 0, 12, 23, 22, 0, 131, 114, 105, 110, 103, 0, 70, 33, 2, 23, 44, 2, 0, 12, 23, 26, 22, 0, 131, 105, - 116, 99, 104, 0, 10, 12, 8, 11, 0, 129, 104, 116, 0, 72, 69, 2, 10, 80, 2, 18, 89, 2, 21, 156, 2, 24, 167, 2, 0, 22, 18, 18, 11, 6, 0, 131, 115, 101, 110, 0, 12, 21, 23, 22, 0, 129, 110, 103, 0, 12, 0, 86, 98, 2, 23, 124, 2, 0, 68, 105, 2, 22, 114, 2, 0, 12, 15, 0, 131, 105, 115, 111, 110, 0, 4, 6, 6, 18, 0, 131, 105, 111, 110, 0, 76, 131, 2, 22, 146, 2, 0, 23, 12, 19, 8, 21, 0, 134, 101, 116, 105, 116, 105, 111, 110, 0, 18, 19, 0, 131, 105, 116, 105, 111, 110, 0, 23, 24, 8, 21, 0, 131, 116, 117, 114, 110, 0, 85, 174, 2, 23, 183, 2, 0, 23, 8, 21, 0, 130, 117, 114, 110, 0, 8, 21, 0, 128, 114, 110, 0, 7, 8, 24, 22, 19, 0, 131, 101, 117, 100, 111, 0, 24, 18, 18, 15, 0, 129, 107, 117, 112, 0, 72, 219, 2, 18, 3, 3, 0, 76, 229, 2, 15, 238, - 2, 17, 248, 2, 0, 11, 23, 44, 0, 130, 101, 105, 114, 0, 23, 12, 9, 0, 131, 108, 116, 101, 114, 0, 23, 22, 12, 15, 0, 130, 101, 110, 101, 114, 0, 23, 4, 21, 8, 23, 17, 12, 0, 135, 116, 101, 114, 97, 116, 111, 114, 0, 72, 30, 3, 17, 38, 3, 24, 51, 3, 0, 15, 4, 9, 0, 129, 115, 101, 0, 4, 12, 23, 17, 18, 6, 0, 131, 97, 105, 110, 115, 0, 22, 17, 8, 6, 17, 18, 6, 0, 133, 115, 101, 110, 115, 117, 115, 0, 74, 86, 3, 11, 96, 3, 15, 118, 3, 17, 129, 3, 22, 218, 3, 24, 232, 3, 0, 11, 24, 4, 6, 0, 130, 103, 104, 116, 0, 71, 103, 3, 10, 110, 3, 0, 12, 26, 0, 129, 116, 104, 0, 17, 8, 15, 0, 129, 116, 104, 0, 22, 24, 8, 21, 0, 131, 115, 117, 108, 116, 0, 68, 139, 3, 8, 150, 3, 22, 210, 3, 0, 21, 4, 19, 19, 4, 0, 130, 101, 110, 116, 0, 85, 157, - 3, 25, 200, 3, 0, 68, 164, 3, 21, 175, 3, 0, 19, 4, 0, 132, 112, 97, 114, 101, 110, 116, 0, 4, 19, 0, 68, 185, 3, 19, 193, 3, 0, 133, 112, 97, 114, 101, 110, 116, 0, 4, 0, 131, 101, 110, 116, 0, 8, 15, 8, 21, 0, 130, 97, 110, 116, 0, 18, 6, 0, 130, 110, 115, 116, 0, 12, 9, 8, 17, 4, 16, 0, 132, 105, 102, 101, 115, 116, 0, 83, 239, 3, 23, 6, 4, 0, 87, 246, 3, 24, 254, 3, 0, 17, 12, 0, 131, 112, 117, 116, 0, 18, 0, 130, 116, 112, 117, 116, 0, 19, 24, 18, 0, 131, 116, 112, 117, 116, 0, 70, 29, 4, 8, 41, 4, 11, 51, 4, 21, 69, 4, 0, 8, 24, 20, 8, 21, 9, 0, 129, 110, 99, 121, 0, 23, 9, 4, 22, 0, 130, 101, 116, 121, 0, 6, 21, 4, 21, 12, 8, 11, 0, 135, 105, 101, 114, 97, 114, 99, 104, 121, 0, 4, 5, 12, 15, 0, 130, 114, 97, 114, 121, 0}; -#endif diff --git a/users/drashna/bootmagic_better.c b/users/drashna/bootmagic_better.c deleted file mode 100644 index fa1078e37d..0000000000 --- a/users/drashna/bootmagic_better.c +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) -// SPDX-License-Identifier: GPL-2.0-or-later - -#include "drashna.h" -#include "bootmagic_lite.h" - -void bootmagic_lite(void) { - bool perform_reset = false; - // We need multiple scans because debouncing can't be turned off. - matrix_scan(); -#if defined(DEBOUNCE) && DEBOUNCE > 0 - wait_ms(DEBOUNCE * 2); -#else - wait_ms(30); -#endif - matrix_scan(); - - // If the configured key (commonly Esc) is held down on power up, - // reset the EEPROM valid state and jump to bootloader. - // This isn't very generalized, but we need something that doesn't - // rely on user's keymaps in firmware or EEPROM. - uint8_t row = BOOTMAGIC_LITE_ROW, col = BOOTMAGIC_LITE_COLUMN; -#if defined(BOOTMAGIC_LITE_EEPROM_ROW) && defined(BOOTMAGIC_LITE_EEPROM_COLUMN) - uint8_t row_e = BOOTMAGIC_LITE_EEPROM_ROW, col_e = BOOTMAGIC_LITE_EEPROM_COLUMN; -#endif - -#if defined(SPLIT_KEYBOARD) && defined(BOOTMAGIC_LITE_ROW_RIGHT) && defined(BOOTMAGIC_LITE_COLUMN_RIGHT) - if (!is_keyboard_left()) { - row = BOOTMAGIC_LITE_ROW_RIGHT; - col = BOOTMAGIC_LITE_COLUMN_RIGHT; -# if defined(BOOTMAGIC_LITE_EEPROM_ROW) && defined(BOOTMAGIC_LITE_EEPROM_COLUMN) && defined(BOOTMAGIC_LITE_EEPROM_ROW_RIGHT) && defined(BOOTMAGIC_LITE_EEPROM_COLUMN_RIGHT) - row_e = BOOTMAGIC_LITE_EEPROM_ROW_RIGHT; - col_e = BOOTMAGIC_LITE_EEPROM_COLUMN_RIGHT; -# endif - } -#endif - -#if defined(BOOTMAGIC_LITE_EEPROM_ROW) && defined(BOOTMAGIC_LITE_EEPROM_COLUMN) - if (matrix_get_row(row_e) & (1 << col_e)) { - eeconfig_disable(); - perform_reset = true; - } -#endif - if (matrix_get_row(row) & (1 << col)) { - perform_reset = true; - } -#if defined(STM32F411xE) && !defined(CONVERTER_ENABLED) - if (!readPin(A0)) { - perform_reset = true; - } -#endif - - if (perform_reset) { - bootloader_jump(); - } -} diff --git a/users/drashna/callbacks.c b/users/drashna/callbacks.c deleted file mode 100644 index 2ace2ff9e6..0000000000 --- a/users/drashna/callbacks.c +++ /dev/null @@ -1,292 +0,0 @@ -// Copyright 2021 Christopher Courtney, aka Drashna Jael're (@drashna) -// SPDX-License-Identifier: GPL-2.0-or-later - -#include "drashna.h" - -#ifdef CUSTOM_DYNAMIC_MACROS_ENABLE -# include "keyrecords/dynamic_macros.h" -#endif -#ifdef I2C_SCANNER_ENABLE -void housekeeping_task_i2c_scanner(void); -void keyboard_post_init_i2c(void); -#endif - -__attribute__((weak)) void keyboard_pre_init_keymap(void) {} -void keyboard_pre_init_user(void) { - eeconfig_read_user_config(&userspace_config.raw); - if (!userspace_config.check) { - eeconfig_init_user(); - } - keyboard_pre_init_keymap(); -} -// Add reconfigurable functions here, for keymap customization -// This allows for a global, userspace functions, and continued -// customization of the keymap. Use _keymap instead of _user -// functions in the keymaps -// Call user matrix init, set default RGB colors and then -// call the keymap's init function - -#ifdef CUSTOM_QUANTUM_PAINTER_ENABLE -void keyboard_post_init_qp(void); -#endif - -#if defined(OS_DETECTION_ENABLE) && defined(DEFERRED_EXEC_ENABLE) -uint32_t startup_exec(uint32_t trigger_time, void *cb_arg); -#endif - -__attribute__((weak)) void keyboard_post_init_keymap(void) {} -void keyboard_post_init_user(void) { -#if defined(CUSTOM_RGBLIGHT) - keyboard_post_init_rgb_light(); -#endif -#if defined(CUSTOM_RGB_MATRIX) - keyboard_post_init_rgb_matrix(); -#endif -#if defined(SPLIT_KEYBOARD) && defined(SPLIT_TRANSACTION_IDS_USER) - keyboard_post_init_transport_sync(); -#endif -#ifdef I2C_SCANNER_ENABLE - keyboard_post_init_i2c(); -#endif -#ifdef CUSTOM_UNICODE_ENABLE - keyboard_post_init_unicode(); -#endif - -#if defined(BOOTLOADER_CATERINA) && defined(__AVR__) && defined(__AVR_ATmega32U4__) - DDRD &= ~(1 << 5); - PORTD &= ~(1 << 5); - - DDRB &= ~(1 << 0); - PORTB &= ~(1 << 0); -#endif -#ifdef CUSTOM_DYNAMIC_MACROS_ENABLE - dynamic_macro_init(); -#endif -#if defined(OS_DETECTION_ENABLE) && defined(DEFERRED_EXEC_ENABLE) - defer_exec(100, startup_exec, NULL); -#endif - - keyboard_post_init_keymap(); -} - -#ifdef RGB_MATRIX_ENABLE -void rgb_matrix_update_pwm_buffers(void); -#endif - -__attribute__((weak)) bool shutdown_keymap(bool jump_to_bootloader) { - return true; -} -bool shutdown_user(bool jump_to_bootloader) { - if (!shutdown_keymap(jump_to_bootloader)) { - return false; - } -#ifdef RGBLIGHT_ENABLE - rgblight_enable_noeeprom(); - rgblight_mode_noeeprom(1); - rgblight_setrgb(rgblight_get_val(), 0x00, 0x00); -#endif // RGBLIGHT_ENABLE -#ifdef RGB_MATRIX_ENABLE - rgb_matrix_set_color_all(rgb_matrix_get_val(), 0x00, 0x00); - rgb_matrix_update_pwm_buffers(); -#endif // RGB_MATRIX_ENABLE -#ifdef OLED_ENABLE - oled_off(); -#endif - return true; -} - -__attribute__((weak)) void suspend_power_down_keymap(void) {} - -void suspend_power_down_user(void) { - if (layer_state_is(_GAMEPAD)) { - layer_off(_GAMEPAD); - } - if (layer_state_is(_DIABLO)) { - layer_off(_DIABLO); - } - if (layer_state_is(_DIABLOII)) { - layer_off(_DIABLOII); - } -#ifdef OLED_ENABLE - oled_off(); -#endif - suspend_power_down_keymap(); -} - -__attribute__((weak)) void suspend_wakeup_init_keymap(void) {} -void suspend_wakeup_init_user(void) { - suspend_wakeup_init_keymap(); -} - -// No global matrix scan code, so just run keymap's matrix -// scan function -__attribute__((weak)) void matrix_scan_keymap(void) {} -void matrix_scan_user(void) { - matrix_scan_keymap(); -} - -#ifdef AUDIO_ENABLE -float doom_song[][2] = SONG(E1M1_DOOM); -#endif - -// on layer change, no matter where the change was initiated -// Then runs keymap's layer change check -__attribute__((weak)) layer_state_t layer_state_set_keymap(layer_state_t state) { - return state; -} -layer_state_t layer_state_set_user(layer_state_t state) { - state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST); -#if defined(CUSTOM_POINTING_DEVICE) - state = layer_state_set_pointing(state); -#endif -#if defined(CUSTOM_RGBLIGHT) - state = layer_state_set_rgb_light(state); -#endif // CUSTOM_RGBLIGHT -#if defined(AUDIO_ENABLE) - static bool is_gamepad_on = false; - if (layer_state_cmp(state, _GAMEPAD) != is_gamepad_on) { - static bool is_click_on = false; - is_gamepad_on = layer_state_cmp(state, _GAMEPAD); - if (is_gamepad_on) { - is_click_on = is_clicky_on(); - if (is_click_on) { - clicky_off(); - } - PLAY_LOOP(doom_song); - } else { - if (is_click_on) { - clicky_on(); - } - stop_all_notes(); - } - } -#endif - state = layer_state_set_keymap(state); - -#ifdef CONSOLE_ENABLE - char layer_buffer[16 + 5]; - format_layer_bitmap_string(layer_buffer, state, default_layer_state); - dprintf("layer state: %s\n", layer_buffer); -#endif - - return state; -} - -// Runs state check and changes underglow color and animation -__attribute__((weak)) layer_state_t default_layer_state_set_keymap(layer_state_t state) { - return state; -} - -#if defined(AUDIO_ENABLE) && defined(DEFAULT_LAYER_SONGS) -static float default_layer_songs[][MAX_LAYER][2] = DEFAULT_LAYER_SONGS; -#endif - -layer_state_t default_layer_state_set_user(layer_state_t state) { - if (!is_keyboard_master()) { - return state; - } - - state = default_layer_state_set_keymap(state); -#if defined(CUSTOM_RGBLIGHT) - state = default_layer_state_set_rgb_light(state); -#endif - - static bool has_init_been_ran = false; - // We don't want to run this the first time it's called, since it's read from eeeprom and called - // as part of the startup process. But after that, it's okay. - if (has_init_been_ran) { -#if defined(AUDIO_ENABLE) && defined(DEFAULT_LAYER_SONGS) - if (get_highest_layer(state) < MAX_LAYER) { - PLAY_SONG(default_layer_songs[get_highest_layer(state)]); - } -#endif - eeconfig_update_default_layer(state); - } else { - has_init_been_ran = true; - } - - return state; -} - -__attribute__((weak)) void led_set_keymap(uint8_t usb_led) {} -void led_set_user(uint8_t usb_led) { - led_set_keymap(usb_led); -} - -__attribute__((weak)) void eeconfig_init_keymap(void) {} -void eeconfig_init_user(void) { - userspace_config.raw = 0; - userspace_config.rgb_layer_change = true; - userspace_config.check = true; -#if defined(OLED_ENABLE) - userspace_config.oled_brightness = OLED_BRIGHTNESS; -#else - userspace_config.oled_brightness = 255; -#endif - eeconfig_update_user_config(&userspace_config.raw); - eeconfig_init_keymap(); -} - -void eeconfig_init_user_datablock(void) { -#if (EECONFIG_USER_DATA_SIZE) > 4 - uint8_t eeconfig_empty_temp[(EECONFIG_USER_DATA_SIZE)-4] = {0}; - eeconfig_update_user_data(eeconfig_empty_temp); -#endif -} - -#ifdef SPLIT_KEYBOARD -__attribute__((weak)) void matrix_slave_scan_keymap(void) {} -void matrix_slave_scan_user(void) { -# if defined(AUDIO_ENABLE) -# if !defined(NO_MUSIC_MODE) - music_task(); -# endif -# ifdef AUDIO_INIT_DELAY - if (!is_keyboard_master()) { - static bool delayed_tasks_run = false; - static uint16_t delayed_task_timer = 0; - if (!delayed_tasks_run) { - if (!delayed_task_timer) { - delayed_task_timer = timer_read(); - } else if (timer_elapsed(delayed_task_timer) > 300) { - audio_startup(); - delayed_tasks_run = true; - } - } - } -# endif -# endif -# ifdef SEQUENCER_ENABLE - sequencer_task(); -# endif -# ifdef LED_MATRIX_ENABLE - led_matrix_task(); -# endif -# ifdef HAPTIC_ENABLE - haptic_task(); -# endif - - matrix_slave_scan_keymap(); -} -#endif - -__attribute__((weak)) void housekeeping_task_keymap(void) {} -void housekeeping_task_user(void) { -#ifdef TAP_DANCE_ENABLE // Run Diablo 3 macro checking code. - run_diablo_macro_check(); -#endif // TAP_DANCE_ENABLE -#if defined(CUSTOM_RGB_MATRIX) - housekeeping_task_rgb_matrix(); -#endif -#ifdef I2C_SCANNER_ENABLE - housekeeping_task_i2c_scanner(); -#endif -#ifdef CUSTOM_OLED_DRIVER - housekeeping_task_oled(); -#endif -#if defined(SPLIT_KEYBOARD) && defined(SPLIT_TRANSACTION_IDS_USER) - housekeeping_task_transport_sync(); -#endif - - housekeeping_task_keymap(); -} diff --git a/users/drashna/callbacks.h b/users/drashna/callbacks.h deleted file mode 100644 index 77c0403f82..0000000000 --- a/users/drashna/callbacks.h +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2021 Christopher Courtney, aka Drashna Jael're (@drashna) -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once - -#include "quantum.h" - -void keyboard_post_init_keymap(void); -void matrix_init_secret(void); -bool shutdown_keymap(bool jump_to_bootloader); -void suspend_power_down_keymap(void); -void suspend_wakeup_init_keymap(void); -void matrix_scan_keymap(void); -void matrix_scan_secret(void); -layer_state_t layer_state_set_keymap(layer_state_t state); -layer_state_t default_layer_state_set_keymap(layer_state_t state); -void led_set_keymap(uint8_t usb_led); -void eeconfig_init_keymap(void); -void housekeeping_task_keymap(void); - -#ifdef CUSTOM_UNICODE_ENABLE -void keyboard_post_init_unicode(void); -#endif -#ifdef SPLIT_KEYBOARD -void matrix_slave_scan_keymap(void); -#endif diff --git a/users/drashna/callbacks.md b/users/drashna/callbacks.md deleted file mode 100644 index 8ef2707fc2..0000000000 --- a/users/drashna/callbacks.md +++ /dev/null @@ -1,71 +0,0 @@ -# Custom Userspace Callback Functions - -Specifically QMK works by using customized callback functions for everything. This allows for multiple levels of customization. - -`matrix_scan` calls `matrix_scan_kb`, which calls `matrix_scan_user`. -`process_record` calls a bunch of stuff, but eventually calls `process_record_kb` which calls `process_record_user` -The same goes for `matrix_init`, `layer_state_set`, `led_set`, and a few other functions. - -All (most) `_user` functions are handled here, in the userspace instead. To allow keyboard specific configuration, I've created `_keymap` functions that can be called by the keymap.c files instead. - -This allows for keyboard specific configuration while maintaining the ability to customize the board. - -My [Ergodox EZ Keymap](https://github.com/qmk/qmk_firmware/blob/master/layouts/community/ergodox/drashna/keymap.c) is a good example of this, as it uses the LEDs as modifier indicators. - -You can see a list of these files in [callbacks.c](callbacks.c), or a shortend list here - -```c -__attribute__((weak)) void keyboard_post_init_keymap(void) {} -void keyboard_post_init_user(void) { - keyboard_post_init_keymap(); -} - -__attribute__((weak)) void matrix_scan_keymap(void) {} -void matrix_scan_user(void) { - matrix_scan_keymap(); -} - -__attribute__ ((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; } -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - if (!process_record_keymap(keycode, record)) { return false; } - return true; -} - -__attribute__((weak)) layer_state_t layer_state_set_keymap(layer_state_t state) { return state; } -layer_state_t layer_state_set_user(layer_state_t state) { - state = layer_state_set_keymap(state); - return state; -} - -__attribute__ ((weak)) void led_set_keymap(uint8_t usb_led) {} -void led_set_user(uint8_t usb_led) { - led_set_keymap(usb_led); -} - -__attribute__ ((weak)) void suspend_power_down_keymap(void) {} -void suspend_power_down_user(void) { - suspend_power_down_keymap(); -} - -__attribute__ ((weak)) void suspend_wakeup_init_keymap(void) {} -void suspend_wakeup_init_user(void) { - suspend_wakeup_init_keymap(); -} - - -__attribute__((weak)) bool shutdown_keymap(bool jump_to_bootloader) { - return true; -} -bool shutdown_user(bool jump_to_bootloader) { - if (!shutdown_keymap(jump_to_bootloader)) { - return false; - } - return true; -} - -__attribute__ ((weak)) void eeconfig_init_keymap(void) {} -void eeconfig_init_user(void) { - eeconfig_update_user(0); - eeconfig_init_keymap(); -} -``` diff --git a/users/drashna/config.h b/users/drashna/config.h deleted file mode 100644 index ec9bbf1afb..0000000000 --- a/users/drashna/config.h +++ /dev/null @@ -1,115 +0,0 @@ -// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once - -#ifdef IS_COMMAND -# undef IS_COMMAND -#endif -#define IS_COMMAND() (((get_mods() | get_oneshot_mods()) & MOD_MASK_SHIFT) == MOD_MASK_SHIFT) - -#if defined(SPLIT_KEYBOARD) -# include "split/split_config.h" -#endif -#ifdef RGBLIGHT_ENABLE -# include "rgb/rgblight_config.h" -#endif // RGBLIGHT_ENABLE - -#ifdef RGB_MATRIX_ENABLE -# include "rgb/rgb_matrix_config.h" -#endif // RGB_MATRIX_ENABLE - -#ifdef OLED_ENABLE -# include "oled/oled_config.h" -#endif - -#ifdef POINTING_DEVICE_ENABLE -# include "pointing/pointing_config.h" -#endif // POINTING_DEVICE_ENABLE - -#ifdef AUDIO_ENABLE -# include "audio_config.h" -#endif // AUDIO_ENABLE - -#if defined(WPM_ENABLE) -// # define WPM_LAUNCH_CONTROL -// # define WPM_UNFILTERED -# define WPM_ALLOW_COUNT_REGRESSION -# define WPM_SAMPLE_SECONDS 10 -# define WPM_SAMPLE_PERIODS 50 -# define WPM_ESTIMATED_WORD_SIZE 5 -#endif - -#define UNICODE_SELECTED_MODES UNICODE_MODE_WINCOMPOSE, UNICODE_MODE_MACOS - -#ifndef ONESHOT_TAP_TOGGLE -# define ONESHOT_TAP_TOGGLE 2 -#endif // !ONESHOT_TAP_TOGGLE - -#ifndef ONESHOT_TIMEOUT -# define ONESHOT_TIMEOUT 3000 -#endif // !ONESHOT_TIMEOUT - -#if defined(PER_KEY_TAPPING) -# define PERMISSIVE_HOLD_PER_KEY -# define QUICK_TAP_TERM_PER_KEY -# define HOLD_ON_OTHER_KEY -# define RETRO_TAPPING_PER_KEY -# define HOLD_ON_OTHER_KEY_PRESS_PER_KEY -# define TAPPING_TERM_PER_KEY -#else -# undef PERMISSIVE_HOLD -#endif - -#ifndef TAPPING_TOGGLE -# define TAPPING_TOGGLE 1 -#endif - -#define TAP_CODE_DELAY 5 - -/* Disable unused and unneeded features to reduce on firmware size */ -#ifdef LOCKING_SUPPORT_ENABLE -# undef LOCKING_SUPPORT_ENABLE -#endif -#ifdef LOCKING_RESYNC_ENABLE -# undef LOCKING_RESYNC_ENABLE -#endif - -#ifdef CONVERT_TO_PROTON_C -// pins that are available but not present on Pro Micro -# define A3 PAL_LINE(GPIOA, 3) -# define A4 PAL_LINE(GPIOA, 4) -# define A5 PAL_LINE(GPIOA, 5) -# define A6 PAL_LINE(GPIOA, 6) -# define A7 PAL_LINE(GPIOA, 7) -# define A8 PAL_LINE(GPIOA, 8) -# define A13 PAL_LINE(GPIOA, 13) -# define A14 PAL_LINE(GPIOA, 14) -# define A15 PAL_LINE(GPIOA, 15) -# define B10 PAL_LINE(GPIOB, 10) -# define B11 PAL_LINE(GPIOB, 11) -# define B12 PAL_LINE(GPIOB, 12) -# define C13 PAL_LINE(GPIOC, 13) -# define C14 PAL_LINE(GPIOC, 14) -# define C15 PAL_LINE(GPIOC, 15) -#endif - -#define ENABLE_COMPILE_KEYCODE - -#define BOTH_SHIFTS_TURNS_ON_CAPS_WORD - -/* --- PRINTF_BYTE_TO_BINARY macro's --- */ -#define PRINTF_BINARY_PATTERN_INT8 "%c%c%c%c%c%c%c%c" -#define PRINTF_BYTE_TO_BINARY_INT8(i) (((i)&0x80ll) ? '1' : '0'), (((i)&0x40ll) ? '1' : '0'), (((i)&0x20ll) ? '1' : '0'), (((i)&0x10ll) ? '1' : '0'), (((i)&0x08ll) ? '1' : '0'), (((i)&0x04ll) ? '1' : '0'), (((i)&0x02ll) ? '1' : '0'), (((i)&0x01ll) ? '1' : '0') - -#define PRINTF_BINARY_PATTERN_INT16 PRINTF_BINARY_PATTERN_INT8 " " PRINTF_BINARY_PATTERN_INT8 -#define PRINTF_BYTE_TO_BINARY_INT16(i) PRINTF_BYTE_TO_BINARY_INT8((i) >> 8), PRINTF_BYTE_TO_BINARY_INT8(i) -#define PRINTF_BINARY_PATTERN_INT32 PRINTF_BINARY_PATTERN_INT16 " " PRINTF_BINARY_PATTERN_INT16 -#define PRINTF_BYTE_TO_BINARY_INT32(i) PRINTF_BYTE_TO_BINARY_INT16((i) >> 16), PRINTF_BYTE_TO_BINARY_INT16(i) -#define PRINTF_BINARY_PATTERN_INT64 PRINTF_BINARY_PATTERN_INT32 " " PRINTF_BINARY_PATTERN_INT32 -#define PRINTF_BYTE_TO_BINARY_INT64(i) PRINTF_BYTE_TO_BINARY_INT32((i) >> 32), PRINTF_BYTE_TO_BINARY_INT32(i) -/* --- end macros --- */ - -#ifndef EECONFIG_USER_DATA_SIZE -# define EECONFIG_USER_DATA_SIZE 8 -#endif diff --git a/users/drashna/drashna.c b/users/drashna/drashna.c deleted file mode 100644 index b8ccbb028c..0000000000 --- a/users/drashna/drashna.c +++ /dev/null @@ -1,319 +0,0 @@ -// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) -// SPDX-License-Identifier: GPL-2.0-or-later - -#include "drashna.h" -#include -#include - -userspace_config_t userspace_config; - -/** - * @brief Handle registering a keycode, with optional modifer based on timed event - * - * @param code keycode to send to host - * @param mod_code modifier to send with code, if held for tapping term or longer - * @param pressed the press/release event (can use "record->event.pressed" for this) - * @return true exits function - * @return false exits function - */ -bool mod_key_press_timer(uint16_t code, uint16_t mod_code, bool pressed) { - static uint16_t this_timer; - mod_key_press(code, mod_code, pressed, this_timer); - return false; -} - -/** - * @brief Handle registation of keycode, with optional modifier based on custom timer - * - * @param code keycode to send to host - * @param mod_code modifier keycode to send with code, if held for tapping term or longer - * @param pressed the press/release event - * @param this_timer custom timer to use - * @return true - * @return false - */ -bool mod_key_press(uint16_t code, uint16_t mod_code, bool pressed, uint16_t this_timer) { - if (pressed) { - this_timer = timer_read(); - } else { - if (timer_elapsed(this_timer) < TAPPING_TERM) { - tap_code(code); - } else { - register_code(mod_code); - tap_code(code); - unregister_code(mod_code); - } - } - return false; -} - -/** - * @brief Performs exact match for modifier values - * - * @param value the modifer varible (get_mods/get_oneshot_mods/get_weak_mods) - * @param mask the modifier mask to check for - * @return true Has the exact modifiers specifed - * @return false Does not have the exact modifiers specified - */ -bool hasAllBitsInMask(uint8_t value, uint8_t mask) { - value &= 0xF; - mask &= 0xF; - - return (value & mask) == mask; -} - -/** - * @brief Tap keycode, with no mods - * - * @param kc keycode to use - */ -void tap_code16_nomods(uint16_t kc) { - uint8_t temp_mod = get_mods(); - clear_mods(); - clear_oneshot_mods(); - tap_code16(kc); - set_mods(temp_mod); -} - -#ifdef I2C_SCANNER_ENABLE -# include "i2c_master.h" -# include "debug.h" - -# ifndef I2C_SCANNER_TIMEOUT -# define I2C_SCANNER_TIMEOUT 50 -# endif - -i2c_status_t i2c_start_bodge(uint8_t address, uint16_t timeout) { - i2c_start(address); - - // except on ChibiOS where the only way is do do "something" - uint8_t data = 0; - return i2c_readReg(address, 0, &data, sizeof(data), I2C_SCANNER_TIMEOUT); -} - -# define i2c_start i2c_start_bodge - -void do_scan(void) { - uint8_t nDevices = 0; - - dprintf("Scanning...\n"); - - for (uint8_t address = 1; address < 127; address++) { - // The i2c_scanner uses the return value of - // i2c_start to see if a device did acknowledge to the address. - i2c_status_t error = i2c_start(address << 1, I2C_SCANNER_TIMEOUT); - if (error == I2C_STATUS_SUCCESS) { - i2c_stop(); - xprintf(" I2C device found at address 0x%02X\n", I2C_SCANNER_TIMEOUT); - nDevices++; - } else { - // dprintf(" Unknown error (%u) at address 0x%02X\n", error, address); - } - } - - if (nDevices == 0) - xprintf("No I2C devices found\n"); - else - xprintf("done\n"); -} - -uint16_t scan_timer = 0; - -void housekeeping_task_i2c_scanner(void) { - if (timer_elapsed(scan_timer) > 5000) { - do_scan(); - scan_timer = timer_read(); - } -} - -void keyboard_post_init_i2c(void) { - i2c_init(); - scan_timer = timer_read(); -} -#endif - -#if defined(AUTOCORRECT_ENABLE) -# if defined(AUDIO_ENABLE) -# ifdef USER_SONG_LIST -float autocorrect_song[][2] = SONG(MARIO_GAMEOVER); -# else -float autocorrect_song[][2] = SONG(PLOVER_GOODBYE_SOUND); -# endif -# endif - -bool apply_autocorrect(uint8_t backspaces, const char* str, char *typo, char *correct) { - if (layer_state_is(_GAMEPAD)) { - return false; - } - // TO-DO use unicode stuff for this. Will probably have to reverse engineer - // send string to get working properly, to send char string. - -# if defined(AUDIO_ENABLE) - PLAY_SONG(autocorrect_song); -# endif - return true; -} -#endif - -#if defined(CAPS_WORD_ENABLE) -bool caps_word_press_user(uint16_t keycode) { - switch (keycode) { - // Keycodes that continue Caps Word, with shift applied. - case KC_MINS: - if (!keymap_config.swap_lctl_lgui) { - return true; - } - case KC_A ... KC_Z: - add_weak_mods(MOD_BIT(KC_LSFT)); // Apply shift to next key. - return true; - - // Keycodes that continue Caps Word, without shifting. - case KC_1 ... KC_0: - case KC_BSPC: - case KC_DEL: - case KC_UNDS: - return true; - - default: - return false; // Deactivate Caps Word. - } -} - -# if !defined(NO_ACTION_ONESHOT) -void oneshot_locked_mods_changed_user(uint8_t mods) { - if (mods & MOD_MASK_SHIFT) { - del_mods(MOD_MASK_SHIFT); - set_oneshot_locked_mods(~MOD_MASK_SHIFT & get_oneshot_locked_mods()); - caps_word_on(); - } -} -# endif -#endif - -void format_layer_bitmap_string(char *buffer, layer_state_t state, layer_state_t default_state) { - for (int i = 0; i < 16; i++) { - if (i == 0 || i == 4 || i == 8 || i == 12) { - *buffer = ' '; - ++buffer; - } - - uint8_t layer = i; - if ((default_state & ((layer_state_t)1 << layer)) != 0) { - *buffer = 'D'; - } else if ((state & ((layer_state_t)1 << layer)) != 0) { - *buffer = '1'; - } else { - *buffer = '_'; - } - ++buffer; - } - *buffer = 0; -} - -#if defined(OS_DETECTION_ENABLE) && defined(DEFERRED_EXEC_ENABLE) -os_variant_t os_type; - -uint32_t startup_exec(uint32_t trigger_time, void *cb_arg) { - if (is_keyboard_master()) { - os_type = detected_host_os(); - if (os_type) { - bool is_mac = (os_type == OS_MACOS) || (os_type == OS_IOS); - if (keymap_config.swap_lctl_lgui != is_mac) { - keymap_config.swap_lctl_lgui = keymap_config.swap_rctl_rgui = is_mac; - eeconfig_update_keymap(keymap_config.raw); - } -# ifdef UNICODE_COMMON_ENABLE - set_unicode_input_mode_soft(keymap_config.swap_lctl_lgui ? UNICODE_MODE_MACOS : UNICODE_MODE_WINCOMPOSE); -# endif - switch (os_type) { - case OS_UNSURE: - xprintf("unknown OS Detected\n"); - break; - case OS_LINUX: - xprintf("Linux Detected\n"); - break; - case OS_WINDOWS: - xprintf("Windows Detected\n"); - break; -# if 0 - case OS_WINDOWS_UNSURE: - xprintf("Windows? Detected\n"); - break; -# endif - case OS_MACOS: - xprintf("MacOS Detected\n"); - break; - case OS_IOS: - xprintf("iOS Detected\n"); - break; -# if 0 - case OS_PS5: - xprintf("PlayStation 5 Detected\n"); - break; - case OS_HANDHELD: - xprintf("Nintend Switch/Quest 2 Detected\n"); - break; -# endif - } - } - } - - return os_type ? 0 : 500; -} -#endif - -static host_driver_t *host_driver = 0; -static bool host_driver_disabled = false; - -void set_keyboard_lock(bool status) { - if (!status && !host_get_driver()) { - host_set_driver(host_driver); - } else if (status && host_get_driver()) { - host_driver = host_get_driver(); - clear_keyboard(); - host_set_driver(0); - } else if (status) { - clear_keyboard(); - } - - host_driver_disabled = status; -} - -void toggle_keyboard_lock(void) { - set_keyboard_lock(!host_driver_disabled); -} - -bool get_keyboard_lock(void) { - return host_driver_disabled; -} - -const char *get_layer_name_string(layer_state_t state, bool alt_name) { - switch (get_highest_layer(state)) { - case _QWERTY: - return alt_name ? "Num Pad" : "QWERTY"; - case _COLEMAK: - return "Colemak"; - case _COLEMAK_DH: - return "Colemak-DH"; - case _DVORAK: - return "Dvorak"; - case _GAMEPAD: - return "Gamepad"; - case _DIABLO: - return "Diablo"; - case _DIABLOII: - return "Diablo II"; - case _MOUSE: - return alt_name ? "Macros" : "Mouse"; - case _MEDIA: - return "Media"; - case _LOWER: - return "Lower"; - case _RAISE: - return "Raise"; - case _ADJUST: - return "Adjust"; - default: - return "Unknown"; - } -} diff --git a/users/drashna/drashna.h b/users/drashna/drashna.h deleted file mode 100644 index 49cdf6ca21..0000000000 --- a/users/drashna/drashna.h +++ /dev/null @@ -1,115 +0,0 @@ -// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once -#include QMK_KEYBOARD_H - -#include "eeconfig_users.h" -#include "keyrecords/wrappers.h" -#include "keyrecords/process_records.h" -#include "callbacks.h" - -#ifdef TAP_DANCE_ENABLE -# include "keyrecords/tap_dances.h" -#endif // TAP_DANCE_ENABLE -#if defined(RGBLIGHT_ENABLE) -# include "rgb/rgb_stuff.h" -#endif -#if defined(RGB_MATRIX_ENABLE) -# include "rgb/rgb_matrix_stuff.h" -#endif -#if defined(OLED_ENABLE) -# include "oled/oled_stuff.h" -#endif -#ifdef SPLIT_KEYBOARD -# include "split/transport_sync.h" -#endif -#ifdef POINTING_DEVICE_ENABLE -# include "pointing/pointing.h" -#endif -#ifdef OS_DETECTION_ENABLE -# include "os_detection.h" -#endif -#ifdef UNICODE_COMMON_ENABLE -# include "keyrecords/unicode.h" -#endif - -/* Define layer names */ -enum userspace_layers { - _QWERTY = 0, - _NUMLOCK = 0, - FIRST_DEFAULT_LAYER = 0, - _COLEMAK_DH, - _COLEMAK, - _DVORAK, - LAST_DEFAULT_LAYER = _DVORAK, - _GAMEPAD, - _DIABLO, - _DIABLOII, - _MOUSE, - _MEDIA, - _LOWER, - _RAISE, - _ADJUST, -}; - -#define _MACROS _MOUSE -#define _DEFAULT_LAYER_1 FIRST_DEFAULT_LAYER -#define _DEFAULT_LAYER_2 (FIRST_DEFAULT_LAYER + 1) -#define _DEFAULT_LAYER_3 (FIRST_DEFAULT_LAYER + 2) -#define _DEFAULT_LAYER_4 (FIRST_DEFAULT_LAYER + 3) -#if LAST_DEFAULT_LAYER > (FIRST_DEFAULT_LAYER + 3) -# define _DEFAULT_LAYER_2 (FIRST_DEFAULT_LAYER + 4) -# define _DEFAULT_LAYER_3 (FIRST_DEFAULT_LAYER + 5) -# define _DEFAULT_LAYER_4 (FIRST_DEFAULT_LAYER + 6) -# define _DEFAULT_LAYER_2 (FIRST_DEFAULT_LAYER + 7) -# if LAST_DEFAULT_LAYER > (FIRST_DEFAULT_LAYER + 7) -# define _DEFAULT_LAYER_2 (FIRST_DEFAULT_LAYER + 8) -# define _DEFAULT_LAYER_3 (FIRST_DEFAULT_LAYER + 9) -# define _DEFAULT_LAYER_4 (FIRST_DEFAULT_LAYER + 10) -# define _DEFAULT_LAYER_4 (FIRST_DEFAULT_LAYER + 11) -# endif -#endif - -#define DEFAULT_LAYER_1_HSV HSV_CYAN -#define DEFAULT_LAYER_2_HSV HSV_CHARTREUSE -#define DEFAULT_LAYER_3_HSV HSV_MAGENTA -#define DEFAULT_LAYER_4_HSV HSV_GOLDENROD - -#define DEFAULT_LAYER_1_RGB RGB_CYAN -#define DEFAULT_LAYER_2_RGB RGB_CHARTREUSE -#define DEFAULT_LAYER_3_RGB RGB_MAGENTA -#define DEFAULT_LAYER_4_RGB RGB_GOLDENROD - -bool mod_key_press_timer(uint16_t code, uint16_t mod_code, bool pressed); -bool mod_key_press(uint16_t code, uint16_t mod_code, bool pressed, uint16_t this_timer); -bool hasAllBitsInMask(uint8_t value, uint8_t mask); -void tap_code16_nomods(uint16_t kc); -void format_layer_bitmap_string(char* buffer, layer_state_t state, layer_state_t default_state); - -// clang-format off -typedef union { - uint32_t raw; - struct { - bool rgb_layer_change :1; - bool is_overwatch :1; - bool nuke_switch :1; - bool swapped_numbers :1; - bool rgb_matrix_idle_anim :1; - bool mouse_jiggler :1; - uint8_t align_reserved :2; - uint8_t oled_brightness :8; - uint32_t reserved :15; - bool check :1; - }; -} userspace_config_t; -// clang-format on - -_Static_assert(sizeof(userspace_config_t) == sizeof(uint32_t), "Userspace EECONFIG out of spec."); - -extern userspace_config_t userspace_config; - -void set_keyboard_lock(bool enable); -bool get_keyboard_lock(void); -void toggle_keyboard_lock(void); -const char* get_layer_name_string(layer_state_t state, bool alt_name); diff --git a/users/drashna/eeconfig_users.c b/users/drashna/eeconfig_users.c deleted file mode 100644 index 8e0f1f10b6..0000000000 --- a/users/drashna/eeconfig_users.c +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2023 Christopher Courtney, aka Drashna Jael're (@drashna) -// SPDX-License-Identifier: GPL-2.0-or-later - -#include "eeconfig_users.h" -#include "eeprom.h" -#include "eeconfig.h" -#include - -#if (TOTAL_EEPROM_BYTE_COUNT - 1) < EECONFIG_SIZE && !defined(KEYBOARD_input_club_ergodox_infinity) -# error "More eeprom configured than is available." -#endif -#if (EECONFIG_USER_DATA_SIZE) != 0 && (EECONFIG_USER_DATA_SIZE) < 4 -# error "Not enough EEPROM configured for user config." -#endif - -#if (EECONFIG_USER_DATA_SIZE) == 0 -# define EECONFIG_USER_TEMP EECONFIG_USER -#else -# define EECONFIG_USER_TEMP (uint32_t *)(EECONFIG_USER_DATABLOCK) -#endif - -void eeconfig_read_user_config(uint32_t *data) { -#if (EECONFIG_USER_DATA_SIZE) > 0 - if (!eeconfig_is_user_datablock_valid()) { - memset(data, 0, 4); - } else -#endif - eeprom_read_block(data, EECONFIG_USER_TEMP, 4); -} - -void eeconfig_update_user_config(const uint32_t *data) { - eeprom_update_block(data, EECONFIG_USER_TEMP, 4); -#if (EECONFIG_USER_DATA_SIZE) > 0 - eeprom_update_dword(EECONFIG_USER, (EECONFIG_USER_DATA_VERSION)); -#endif -} - -void eeconfig_read_user_data(void *data) { -#if (EECONFIG_USER_DATA_SIZE) > 4 - if (eeconfig_is_user_datablock_valid()) { - eeprom_read_block(data, EECONFIG_USER_DATABLOCK + 4, (EECONFIG_USER_DATA_SIZE)-4); - } else { - memset(data, 0, (EECONFIG_USER_DATA_SIZE)); - } -#endif -} - -void eeconfig_update_user_data(const void *data) { -#if (EECONFIG_USER_DATA_SIZE) > 4 - eeprom_update_dword(EECONFIG_USER, (EECONFIG_USER_DATA_VERSION)); - eeprom_update_block(data, EECONFIG_USER_DATABLOCK + 4, (EECONFIG_USER_DATA_SIZE)-4); -#endif -} diff --git a/users/drashna/eeconfig_users.h b/users/drashna/eeconfig_users.h deleted file mode 100644 index c9b230df9c..0000000000 --- a/users/drashna/eeconfig_users.h +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2023 Christopher Courtney, aka Drashna Jael're (@drashna) -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once - -#include - -void eeconfig_read_user_config(uint32_t *data); -void eeconfig_update_user_config(const uint32_t *data); - -void eeconfig_read_user_data(void *data); -void eeconfig_update_user_data(const void *data); diff --git a/users/drashna/keyrecords/dynamic_macros.c b/users/drashna/keyrecords/dynamic_macros.c deleted file mode 100644 index 43c2336cb6..0000000000 --- a/users/drashna/keyrecords/dynamic_macros.c +++ /dev/null @@ -1,283 +0,0 @@ -// Copyright 2016 Jack Humbert -// Copyright 2019 Wojciech Siewierski < wojciech dot siewierski at onet dot pl > -// Copyright 2023 Christopher Courtney, aka Drashna Jael're (@drashna) -// SPDX-License-Identifier: GPL-2.0-or-later - -#include "keyrecords/dynamic_macros.h" -#include "keyrecords/process_records.h" -#include "wait.h" -#include "debug.h" -#include "eeprom.h" -#include "eeconfig.h" -#include - -static uint8_t macro_id = 255; -static uint8_t recording_state = STATE_NOT_RECORDING; - -#if EECONFIG_USER_DATA_SIZE < 4 -# error "EECONFIG_USER_DATA_SIZE not set. Don't step on others eeprom." -#endif -#ifndef DYNAMIC_MACRO_EEPROM_BLOCK0_ADDR -# define DYNAMIC_MACRO_EEPROM_BLOCK0_ADDR (uint8_t*)(EECONFIG_USER_DATABLOCK + 4) -#endif - -dynamic_macro_t dynamic_macros[DYNAMIC_MACRO_COUNT]; -_Static_assert((sizeof(dynamic_macros)) <= (EECONFIG_USER_DATA_SIZE - 4), "User Data Size must be large enough to host all macros"); - -__attribute__((weak)) void dynamic_macro_record_start_user(void) {} - -__attribute__((weak)) void dynamic_macro_play_user(uint8_t macro_id) {} - -__attribute__((weak)) void dynamic_macro_record_key_user(uint8_t macro_id, keyrecord_t* record) {} - -__attribute__((weak)) void dynamic_macro_record_end_user(uint8_t macro_id) {} - -/** - * @brief Gets the current macro ID - * - * @return uint8_t - */ -uint8_t dynamic_macro_get_current_id(void) { - return macro_id; -} - -/** - * @brief Gets the current recording state - * - * @return uint8_t - */ -uint8_t dynamic_macro_get_recording_state(void) { - return recording_state; -} - -/** - * Start recording of the dynamic macro. - * - * @param macro_id[in] The id of macro to be recorded - */ -bool dynamic_macro_record_start(uint8_t macro_id) { - if (macro_id >= (uint8_t)(DYNAMIC_MACRO_COUNT)) { - return false; - } - dprintf("dynamic macro recording: started for slot %d\n", macro_id); - - dynamic_macro_record_start_user(); - - clear_keyboard(); - layer_clear(); - - dynamic_macros[macro_id].length = 0; - return true; -} - -/** - * Play the dynamic macro. - * - * @param macro_id[in] The id of macro to be played - */ -void dynamic_macro_play(uint8_t macro_id) { - if (macro_id >= (uint8_t)(DYNAMIC_MACRO_COUNT)) { - return; - } - - dprintf("dynamic macro: slot %d playback, length %d\n", macro_id, dynamic_macros[macro_id].length); - - layer_state_t saved_layer_state = layer_state; - - clear_keyboard(); - layer_clear(); - - for (uint8_t i = 0; i < dynamic_macros[macro_id].length; ++i) { - process_record(&dynamic_macros[macro_id].events[i]); - } - - clear_keyboard(); - - layer_state_set(saved_layer_state); - - dynamic_macro_play_user(macro_id); -} - -/** - * Record a single key in a dynamic macro. - * - * @param macro_id[in] The start of the used macro buffer. - * @param record[in] The current keypress. - */ -void dynamic_macro_record_key(uint8_t macro_id, keyrecord_t* record) { - dynamic_macro_t* macro = &dynamic_macros[macro_id]; - uint8_t length = macro->length; - - /* If we've just started recording, ignore all the key releases. */ - if (!record->event.pressed && length == 0) { - dprintln("dynamic macro: ignoring a leading key-up event"); - return; - } - - if (length < DYNAMIC_MACRO_SIZE) { - macro->events[length] = *record; - macro->length = ++length; - } else { - dynamic_macro_record_key_user(macro_id, record); - } - - dprintf("dynamic macro: slot %d length: %d/%d\n", macro_id, length, DYNAMIC_MACRO_SIZE); -} - -/** - * End recording of the dynamic macro. Essentially just update the - * pointer to the end of the macro. - */ -void dynamic_macro_record_end(uint8_t macro_id) { - if (macro_id >= (uint8_t)(DYNAMIC_MACRO_COUNT)) { - return; - } - dynamic_macro_record_end_user(macro_id); - - dynamic_macro_t* macro = &dynamic_macros[macro_id]; - uint8_t length = macro->length; - - keyrecord_t* events_begin = &(macro->events[0]); - keyrecord_t* events_pointer = &(macro->events[length - 1]); - - dprintf("dynamic_macro: macro length before trimming: %d\n", macro->length); - while (events_pointer != events_begin && (events_pointer)->event.pressed) { - dprintln("dynamic macro: trimming a trailing key-down event"); - --(macro->length); - --events_pointer; - } - - macro->checksum = dynamic_macro_calc_crc(macro); - dynamic_macro_save_eeprom(macro_id); - - dprintf("dynamic macro: slot %d saved, length: %d\n", macro_id, length); -} - -bool process_record_dynamic_macro(uint16_t keycode, keyrecord_t* record) { - if (STATE_NOT_RECORDING == recording_state) { - /* Program key pressed to request programming mode */ - if (keycode == DYN_MACRO_PROG && record->event.pressed) { - // dynamic_macro_led_blink(); - - recording_state = STATE_RECORD_KEY_PRESSED; - dprintf("dynamic macro: programming key pressed, waiting for macro slot selection. %d\n", recording_state); - - return false; - } - /* Macro key pressed to request macro playback */ - if (IS_DYN_KEYCODE(keycode) && record->event.pressed) { - dynamic_macro_play(keycode - DYN_MACRO_KEY00); - - return false; - } - - /* Non-dynamic macro key, process it elsewhere. */ - return true; - } else if (STATE_RECORD_KEY_PRESSED == recording_state) { - /* Program key pressed again before a macro selector key, cancel macro recording. - Blink leds to indicate cancelation. */ - if (keycode == DYN_MACRO_PROG && record->event.pressed) { - // dynamic_macro_led_blink(); - - recording_state = STATE_NOT_RECORDING; - dprintf("dynamic macro: programming key pressed, programming mode canceled. %d\n", recording_state); - - return false; - } else if (IS_DYN_KEYCODE(keycode) && record->event.pressed) { - macro_id = keycode - DYN_MACRO_KEY00; - - if (dynamic_macro_record_start(macro_id)) { - /* Macro slot selected, enter recording state. */ - recording_state = STATE_CURRENTLY_RECORDING; - } else { - recording_state = STATE_NOT_RECORDING; - } - - return false; - } - /* Ignore any non-macro key press while in RECORD_KEY_PRESSED state. */ - return false; - } else if (STATE_CURRENTLY_RECORDING == recording_state) { - /* Program key pressed to request end of macro recording. */ - if (keycode == DYN_MACRO_PROG && record->event.pressed) { - dynamic_macro_record_end(macro_id); - recording_state = STATE_NOT_RECORDING; - - return false; - } - /* Don't record other macro key presses. */ - else if (IS_DYN_KEYCODE(keycode) && record->event.pressed) { - dprintln("dynamic macro: playback key ignored in programming mode."); - return false; - } - /* Non-macro keypress that should be recorded */ - else { - dynamic_macro_record_key(macro_id, record); - - /* Don't output recorded keypress. */ - return false; - } - } - - return true; -} - -static inline uint16_t crc16_update(uint16_t crc, uint8_t a) { - crc ^= a; - for (uint8_t i = 0; i < 8; ++i) { - if (crc & 1) - crc = (crc >> 1) ^ 0xA001; - else - crc = (crc >> 1); - } - return crc; -} - -uint16_t dynamic_macro_calc_crc(dynamic_macro_t* macro) { - uint16_t crc = 0; - uint8_t* data = (uint8_t*)macro; - - for (uint16_t i = 0; i < DYNAMIC_MACRO_CRC_LENGTH; ++i) { - crc = crc16_update(crc, *(data++)); - } - return crc; -} - -inline void* dynamic_macro_eeprom_macro_addr(uint8_t macro_id) { - return DYNAMIC_MACRO_EEPROM_BLOCK0_ADDR + sizeof(dynamic_macro_t) * macro_id; -} - -void dynamic_macro_load_eeprom_all(void) { - for (uint8_t i = 0; i < DYNAMIC_MACRO_COUNT; ++i) { - dynamic_macro_load_eeprom(i); - } -} - -void dynamic_macro_load_eeprom(uint8_t macro_id) { - dynamic_macro_t* dst = &dynamic_macros[macro_id]; - - eeprom_read_block(dst, dynamic_macro_eeprom_macro_addr(macro_id), sizeof(dynamic_macro_t)); - - /* Validate checksum, ifchecksum is NOT valid for macro, set its length to 0 to prevent its use. */ - if (dynamic_macro_calc_crc(dst) != dst->checksum) { - dprintf("dynamic macro: slot %d not loaded, checksum mismatch\n", macro_id); - dst->length = 0; - - return; - } - - dprintf("dynamic macro: slot %d loaded from eeprom, checksum okay\n", macro_id); -} - -void dynamic_macro_save_eeprom(uint8_t macro_id) { - dynamic_macro_t* src = &dynamic_macros[macro_id]; - - eeprom_update_block(src, dynamic_macro_eeprom_macro_addr(macro_id), sizeof(dynamic_macro_t)); - dprintf("dynamic macro: slot %d saved to eeprom\n", macro_id); -} - -void dynamic_macro_init(void) { - /* zero out macro blocks */ - memset(&dynamic_macros, 0, DYNAMIC_MACRO_COUNT * sizeof(dynamic_macro_t)); - dynamic_macro_load_eeprom_all(); -} diff --git a/users/drashna/keyrecords/dynamic_macros.h b/users/drashna/keyrecords/dynamic_macros.h deleted file mode 100644 index 5eefb9b268..0000000000 --- a/users/drashna/keyrecords/dynamic_macros.h +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2016 Jack Humbert -// Copyright 2019 Wojciech Siewierski < wojciech dot siewierski at onet dot pl > -// Copyright 2023 Christopher Courtney, aka Drashna Jael're (@drashna) -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once - -#include "action.h" -#include "action_layer.h" - -#ifndef DYNAMIC_MACRO_COUNT -# define DYNAMIC_MACRO_COUNT 8 -#endif - -#ifndef DYNAMIC_MACRO_SIZE -# define DYNAMIC_MACRO_SIZE 64 -#endif - -enum dynamic_macro_recording_state { - STATE_NOT_RECORDING, - STATE_RECORD_KEY_PRESSED, - STATE_CURRENTLY_RECORDING, -}; - -typedef struct { - keyrecord_t events[DYNAMIC_MACRO_SIZE]; - uint8_t length; - uint16_t checksum; -} dynamic_macro_t; - -void dynamic_macro_init(void); -bool dynamic_macro_record_start(uint8_t macro_id); -void dynamic_macro_play(uint8_t macro_id); -void dynamic_macro_record_key(uint8_t macro_id, keyrecord_t* record); -void dynamic_macro_record_end(uint8_t macro_id); -bool process_record_dynamic_macro(uint16_t keycode, keyrecord_t* record); - -void dynamic_macro_record_start_user(void); -void dynamic_macro_play_user(uint8_t macro_id); -void dynamic_macro_record_key_user(uint8_t macro_id, keyrecord_t* record); -void dynamic_macro_record_end_user(uint8_t macro_id); - -#define DYNAMIC_MACRO_CRC_LENGTH (sizeof(dynamic_macro_t) - sizeof(uint16_t)) -#define IS_DYN_KEYCODE(keycode) (keycode >= DYN_MACRO_KEY00 && keycode <= DYN_MACRO_KEY15) - -uint16_t dynamic_macro_calc_crc(dynamic_macro_t* macro); -void dynamic_macro_load_eeprom_all(void); -void dynamic_macro_load_eeprom(uint8_t macro_id); -void dynamic_macro_save_eeprom(uint8_t macro_id); -bool dynamic_macro_header_correct(void); diff --git a/users/drashna/keyrecords/keycodes.md b/users/drashna/keyrecords/keycodes.md deleted file mode 100644 index bb5b65a77c..0000000000 --- a/users/drashna/keyrecords/keycodes.md +++ /dev/null @@ -1,13 +0,0 @@ - -# Custom Keycodes - -Keycodes are defined in the `process_record.h` file and need to be included in the keymap.c files, so that they can be used there. - -A bunch of macros are present and are only included on boards that are not the Ergodox EZ or Orthodox, as they are not needed for those boards. - -* `DEFAULT_LAYER_1` ... `DEFAULT_LAYER_4` - This sets layer 0-3 as the default layer, and writes that to eeprom, and plays a chime. -* `VRSN`, outputs the keyboard, keymap, commit and date info. Eg: - * `handwired/tractyl_manuform/5x6_right/f411/drashna @ 0.15.9-162-g087d08, Built on: 2021-12-19-21:10:26` -* `KC_DIABLO_CLEAR` - clears the diablo tapdance status. -* `KC_CCCV` - Copy on hold, paste on tap. -* `KEYLOCK` - This unloads the host driver, and prevents any data from being sent to the host. Hitting it again loads the driver, back. diff --git a/users/drashna/keyrecords/process_records.c b/users/drashna/keyrecords/process_records.c deleted file mode 100644 index d8d45dcac9..0000000000 --- a/users/drashna/keyrecords/process_records.c +++ /dev/null @@ -1,200 +0,0 @@ -// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) -// SPDX-License-Identifier: GPL-2.0-or-later - -#include "drashna.h" -#include "version.h" -#ifdef OS_DETECTION_ENABLE -# include "os_detection.h" -#endif -#ifdef CUSTOM_DYNAMIC_MACROS_ENABLE -# include "keyrecords/dynamic_macros.h" -#endif - -uint16_t copy_paste_timer; -// Defines actions tor my global custom keycodes. Defined in drashna.h file -// Then runs the _keymap's record handier if not processed here - -/** - * @brief Keycode handler for keymaps - * - * This handles the keycodes at the keymap level, useful for keyboard specific customization - */ -__attribute__((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { - return true; -} -__attribute__((weak)) bool process_record_secrets(uint16_t keycode, keyrecord_t *record) { - return true; -} - -/** - * @brief Main user keycode handler - * - * This handles all of the keycodes for the user, including calling feature handlers. - * - * @param keycode Keycode from matrix - * @param record keyrecord_t data structure - * @return true Continue processing keycode and send to host - * @return false Stop process keycode and do not send to host - */ -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - // If console is enabled, it will print the matrix position and status of each key pressed -#ifdef KEYLOGGER_ENABLE - uprintf("KL: kc: 0x%04X, col: %2u, row: %2u, pressed: %1d, time: %5u, int: %1d, count: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed, record->event.time, record->tap.interrupted, record->tap.count); -#endif // KEYLOGGER_ENABLE -#if defined(OLED_ENABLE) && defined(CUSTOM_OLED_DRIVER) - process_record_user_oled(keycode, record); -#endif // OLED - - if (!(process_record_keymap(keycode, record) && process_record_secrets(keycode, record) -#ifdef CUSTOM_RGB_MATRIX - && process_record_user_rgb_matrix(keycode, record) -#endif -#ifdef CUSTOM_RGBLIGHT - && process_record_user_rgb_light(keycode, record) -#endif -#ifdef CUSTOM_UNICODE_ENABLE - && process_record_unicode(keycode, record) -#endif -#if defined(CUSTOM_POINTING_DEVICE) - && process_record_pointing(keycode, record) -#endif -#ifdef CUSTOM_DYNAMIC_MACROS_ENABLE - && process_record_dynamic_macro(keycode, record) -#endif - && true)) { - return false; - } - - switch (keycode) { - case VRSN: // Prints firmware version - if (record->event.pressed) { - send_string_with_delay_P(PSTR(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE), TAP_CODE_DELAY); - } - break; - - case KC_DIABLO_CLEAR: // reset all Diablo timers, disabling them -#ifdef TAP_DANCE_ENABLE - if (record->event.pressed) { - for (uint8_t index = 0; index < 4; index++) { - diablo_timer[index].key_interval = 0; - } - } -#endif // TAP_DANCE_ENABLE - break; - - case KC_CCCV: // One key copy/paste - if (record->event.pressed) { - copy_paste_timer = timer_read(); - } else { - if (timer_elapsed(copy_paste_timer) > TAPPING_TERM) { // Hold, copy - tap_code16(LCTL(KC_C)); - } else { // Tap, paste - tap_code16(LCTL(KC_V)); - } - } - break; - case KC_RGB_T: // This allows me to use underglow as layer indication, or as normal -#if defined(CUSTOM_RGBLIGHT) || defined(CUSTOM_RGB_MATRIX) - if (record->event.pressed) { - userspace_config.rgb_layer_change ^= 1; - dprintf("rgblight layer change [EEPROM]: %u\n", userspace_config.rgb_layer_change); - eeconfig_update_user_config(&userspace_config.raw); - if (userspace_config.rgb_layer_change) { -# if defined(CUSTOM_RGB_MATRIX) - rgb_matrix_set_flags(LED_FLAG_UNDERGLOW | LED_FLAG_KEYLIGHT | LED_FLAG_INDICATOR); -# if defined(CUSTOM_RGBLIGHT) - rgblight_enable_noeeprom(); -# endif -# endif - layer_state_set(layer_state); // This is needed to immediately set the layer color (looks better) -# if defined(CUSTOM_RGB_MATRIX) - } else { - rgb_matrix_set_flags(LED_FLAG_ALL); -# if defined(CUSTOM_RGBLIGHT) - rgblight_disable_noeeprom(); -# endif -# endif - } - } -#endif // CUSTOM_RGBLIGHT - break; - -#if defined(CUSTOM_RGBLIGHT) || defined(CUSTOM_RGB_MATRIX) - case RGB_TOG: - // Split keyboards need to trigger on key-up for edge-case issue -# ifndef SPLIT_KEYBOARD - if (record->event.pressed) { -# else - if (!record->event.pressed) { -# endif -# if defined(CUSTOM_RGBLIGHT) && !defined(RGBLIGHT_DISABLE_KEYCODES) - rgblight_toggle(); -# endif -# if defined(CUSTOM_RGB_MATRIX) && !defined(RGB_MATRIX_DISABLE_KEYCODES) - rgb_matrix_toggle(); -# endif - } - return false; - break; - case RGB_MODE_FORWARD ... RGB_MODE_GRADIENT: // quantum_keycodes.h L400 for definitions - if (record->event.pressed) { - bool is_eeprom_updated; -# if defined(CUSTOM_RGBLIGHT) && !defined(RGBLIGHT_DISABLE_KEYCODES) - // This disables layer indication, as it's assumed that if you're changing this ... you want that disabled - if (userspace_config.rgb_layer_change) { - userspace_config.rgb_layer_change = false; - dprintf("rgblight layer change [EEPROM]: %u\n", userspace_config.rgb_layer_change); - is_eeprom_updated = true; - } -# endif -# if defined(CUSTOM_RGB_MATRIX) && defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS) - if (userspace_config.rgb_matrix_idle_anim) { - userspace_config.rgb_matrix_idle_anim = false; - dprintf("RGB Matrix Idle Animation [EEPROM]: %u\n", userspace_config.rgb_matrix_idle_anim); - is_eeprom_updated = true; - } -# endif - if (is_eeprom_updated) { - eeconfig_update_user_config(&userspace_config.raw); - } - } - break; -#endif - case KEYLOCK: - if (record->event.pressed) { - toggle_keyboard_lock(); - } - break; -#if defined(OS_DETECTION_ENABLE) && defined(OS_DETECTION_DEBUG_ENABLE) - case STORE_SETUPS: - if (record->event.pressed) { - store_setups_in_eeprom(); - } - return false; - case PRINT_SETUPS: - if (record->event.pressed) { - print_stored_setups(); - } - return false; -#endif - } - return true; -} - -__attribute__((weak)) void post_process_record_keymap(uint16_t keycode, keyrecord_t *record) {} -void post_process_record_user(uint16_t keycode, keyrecord_t *record) { -#if defined(OS_DETECTION_ENABLE) && defined(UNICODE_COMMON_ENABLE) - switch (keycode) { - case QK_MAGIC_SWAP_LCTL_LGUI: - case QK_MAGIC_SWAP_RCTL_RGUI: - case QK_MAGIC_SWAP_CTL_GUI: - case QK_MAGIC_UNSWAP_LCTL_LGUI: - case QK_MAGIC_UNSWAP_RCTL_RGUI: - case QK_MAGIC_UNSWAP_CTL_GUI: - case QK_MAGIC_TOGGLE_CTL_GUI: - set_unicode_input_mode_soft(keymap_config.swap_lctl_lgui ? UNICODE_MODE_MACOS : UNICODE_MODE_WINCOMPOSE); - break; - } -#endif - post_process_record_keymap(keycode, record); -} diff --git a/users/drashna/keyrecords/process_records.h b/users/drashna/keyrecords/process_records.h deleted file mode 100644 index 0137976580..0000000000 --- a/users/drashna/keyrecords/process_records.h +++ /dev/null @@ -1,150 +0,0 @@ -// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once -#include "drashna.h" - -enum userspace_custom_keycodes { - VRSN = QK_USER, // Prints QMK Firmware and board info - KC_DIABLO_CLEAR, // Clears all Diablo Timers - KC_RGB_T, // Toggles RGB Layer Indication mode - RGB_IDL, // RGB Idling animations - KC_SECRET_1, // test1 - KC_SECRET_2, // test2 - KC_SECRET_3, // test3 - KC_SECRET_4, // test4 - KC_SECRET_5, // test5 - KC_CCCV, // Hold to copy, tap to paste - KC_NUKE, // NUCLEAR LAUNCH DETECTED!!! - UC_FLIP, // (āē į—Šāē )â”ŧ━â”ŧ - UC_TABL, // ┎─┎ノ( š _ šノ) - UC_SHRG, // ÂŊ\_(ツ)_/ÂŊ - UC_DISA, // āē _āē  - UC_IRNY, - UC_CLUE, - KEYLOCK, // Locks keyboard by unmounting driver - KC_NOMODE, - KC_WIDE, - KC_SCRIPT, - KC_BLOCKS, - KC_REGIONAL, - KC_AUSSIE, - KC_ZALGO, - KC_SUPER, - KC_COMIC, - KC_ACCEL, - OLED_LOCK, - OLED_BRIGHTNESS_INC, - OLED_BRIGHTNESS_DEC, - - STORE_SETUPS, - PRINT_SETUPS, - - PD_JIGGLER, - - DYN_MACRO_PROG, - DYN_MACRO_KEY00, - DYN_MACRO_KEY01, - DYN_MACRO_KEY02, - DYN_MACRO_KEY03, - DYN_MACRO_KEY04, - DYN_MACRO_KEY05, - DYN_MACRO_KEY06, - DYN_MACRO_KEY07, - DYN_MACRO_KEY08, - DYN_MACRO_KEY09, - DYN_MACRO_KEY10, - DYN_MACRO_KEY11, - DYN_MACRO_KEY12, - DYN_MACRO_KEY13, - DYN_MACRO_KEY14, - DYN_MACRO_KEY15, - - USER_SAFE_RANGE, -}; - -bool process_record_secrets(uint16_t keycode, keyrecord_t *record); -bool process_record_keymap(uint16_t keycode, keyrecord_t *record); -void post_process_record_keymap(uint16_t keycode, keyrecord_t *record); -#ifdef CUSTOM_UNICODE_ENABLE -bool process_record_unicode(uint16_t keycode, keyrecord_t *record); -#endif - -#define LOWER MO(_LOWER) -#define RAISE MO(_RAISE) -#define ADJUST MO(_ADJUST) -#define TG_MODS OS_TOGG -#define TG_GAME TG(_GAMEPAD) -#define TG_DBLO TG(_DIABLO) -#define OS_LWR OSL(_LOWER) -#define OS_RSE OSL(_RAISE) - -#define KC_SEC1 KC_SECRET_1 -#define KC_SEC2 KC_SECRET_2 -#define KC_SEC3 KC_SECRET_3 -#define KC_SEC4 KC_SECRET_4 -#define KC_SEC5 KC_SECRET_5 - -#define KC_QWERTY DF(_QWERTY) -#define KC_COLEMAK_DH DF(_COLEMAK_DH) -#define KC_COLEMAK DF(_COLEMAK) -#define KC_DVORAK DF(_DVORAK) - -#define QWERTY KC_QWERTY -#define DVORAK KC_DVORAK -#define COLEMAK KC_COLEMAK -#define CLMKDH KC_COLEMAK_DH - -#ifdef SWAP_HANDS_ENABLE -# define KC_C1R3 SH_T(KC_TAB) -#elif defined(DRASHNA_LP) -# define KC_C1R3 TG(_GAMEPAD) -#else // SWAP_HANDS_ENABLE -# define KC_C1R3 KC_TAB -#endif // SWAP_HANDS_ENABLE - -#define BK_LWER LT(_LOWER, KC_BSPC) -#define SP_LWER LT(_LOWER, KC_SPC) -#define DL_RAIS LT(_RAISE, KC_DEL) -#define ET_RAIS LT(_RAISE, KC_ENTER) - -/* OSM keycodes, to keep things clean and easy to change */ -#define KC_MLSF OSM(MOD_LSFT) -#define KC_MRSF OSM(MOD_RSFT) - -#define OS_LGUI OSM(MOD_LGUI) -#define OS_RGUI OSM(MOD_RGUI) -#define OS_LSFT OSM(MOD_LSFT) -#define OS_RSFT OSM(MOD_RSFT) -#define OS_LCTL OSM(MOD_LCTL) -#define OS_RCTL OSM(MOD_RCTL) -#define OS_LALT OSM(MOD_LALT) -#define OS_RALT OSM(MOD_RALT) -#define OS_MEH OSM(MOD_MEH) -#define OS_HYPR OSM(MOD_HYPR) - -#define ALT_APP ALT_T(KC_APP) - -#define MG_NKRO MAGIC_TOGGLE_NKRO - -#define AUTO_CTN QK_AUTOCORRECT_TOGGLE -/* -Custom Keycodes for Diablo 3 layer -But since TD() doesn't work when tap dance is disabled -We use custom codes here, so we can substitute the right stuff -*/ -#ifdef TAP_DANCE_ENABLE -# define KC_D3_1 TD(TD_D3_1) -# define KC_D3_2 TD(TD_D3_2) -# define KC_D3_3 TD(TD_D3_3) -# define KC_D3_4 TD(TD_D3_4) -#else // TAP_DANCE_ENABLE -# define KC_D3_1 KC_1 -# define KC_D3_2 KC_2 -# define KC_D3_3 KC_3 -# define KC_D3_4 KC_4 -#endif // TAP_DANCE_ENABLE - -#define OL_LOCK OLED_LOCK -#define OL_BINC OLED_BRIGHTNESS_INC -#define OL_BDEC OLED_BRIGHTNESS_DEC diff --git a/users/drashna/keyrecords/readme.md b/users/drashna/keyrecords/readme.md deleted file mode 100644 index b89777db3d..0000000000 --- a/users/drashna/keyrecords/readme.md +++ /dev/null @@ -1,7 +0,0 @@ -# Keycode handling and interception - - * [Diablo Tap Dancing](tap_dance.md) - * [Keymap Wrappers](wrappers.md) - * [Secret Macros](secrets.md) - * [Custom Keycodes](keycodes.md) - * [Unicode Input](unicode.md) diff --git a/users/drashna/keyrecords/secrets.md b/users/drashna/keyrecords/secrets.md deleted file mode 100644 index 3c40fa41b3..0000000000 --- a/users/drashna/keyrecords/secrets.md +++ /dev/null @@ -1,122 +0,0 @@ -# Secret Macros - -With help from gitter and Colinta, this adds the ability to add hidden macros from other users. - -First, I have several files that are hidden/excluded from Git/GitHub. These contain everything needed for the macros. To hide these files, open `.git/info/exclude` and add `secrets.c` and `secrets.h` to that file, below the comments. - -And this requires `KC_SECRET_1` through `KC_SECRET_5` to be added in your keycode enum (usually in your `.h` file) the keycodes for the new macros. - -## Git Exclusion - -To prevent `git` from seeing, or committing the secret files, you can exclude them. What's the point of having secrets if they're posted on GitHub for everyone to see!?! - -You can do this with the `.git/info/exclude` file, so that it's only ignored locally. Unfortunately, that means it's not consistently handled on each system. - -However, if you create a `.gitignore` file in the same folder, you keep things consistent between every system that the code is checked out on. - -```c -secrets.c -secrets.h -``` - -## secrets.c - -Here is the magic. This handles including the "secrets", and adding the custom macros to send them. - -```c -#include QMK_KEYBOARD_H - -#if (__has_include("secrets.h") && !defined(NO_SECRETS)) -#include "secrets.h" -#else -static const char * const secrets[] = { - "test1", - "test2", - "test3", - "test4", - "test5" -}; -#endif - -bool process_record_secrets(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case KC_SECRET_1 ... KC_SECRET_5: // Secrets! Externally defined strings, not stored in repo - if (record->event.pressed) { - clear_mods(); - clear_oneshot_mods(); - send_string_with_delay(secrets[keycode - KC_SECRET_1], MACRO_TIMER); - } - return false; - break; - } - return true; -} -``` - -## secrets.h - -Now, for the actual secrets! The file needs to look like - -```c -static const char * secrets[] = { - "secret1", - "secret2", - "secret3", - "secret4", - "secret5" -}; -``` - -Replacing the strings with the codes that you need. - -## Process Record - -In whichever file you have your `process_record_*` function in, you will want to add this to the top: - -```c -__attribute__ ((weak)) -bool process_record_secrets(uint16_t keycode, keyrecord_t *record) { - return true; -} -``` - -This is so that the function can be called here, and replaced in the `secrets.c` file, and so it won't error out if it doesn't exist. - -And then, in the `process_record_user` function, assuming you have `return process_record_keymap(keycode, record)` here, you'll want to replace the "final" return with the following. Otherwise, you want to replace the `return true;` with `return process_record_secrets(keycode, record);` - -```c -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - // your existing macro code here. - return process_record_keymap(keycode, record) && process_record_secrets(keycode, record); -} -``` - -## rules.mk - -Here, you want your `/users//rules.mk` file to "detect" the existence of the `secrets.c` file, and only add it if the file exists. - -Additionally, to ensure that it's not added or processed in any way, it checks to see if `NO_SECRETS` is set. This way, if you run `qmk compile -kb keyboard -km name -e NO_SECRETS=yes`, it will remove the feature altogether. - -```make -ifneq ($(strip $(NO_SECRETS)), yes) - ifneq ("$(wildcard $(USER_PATH)/secrets.c)","") - SRC += secrets.c - endif -endif -``` - -Alternately, if you want to make sure that you can disable the function without messing with the file, you need to add this to your `/users//rules.mk`, so that it catches the flag: - -```make -ifneq ("$(wildcard $(USER_PATH)/secrets.c)","") - SRC += secrets.c -endif - -ifeq ($(strip $(NO_SECRETS)), yes) - OPT_DEFS += -DNO_SECRETS -endif -``` - -## Extras - -Additionally, because this file isn't present in the repo at all, you could add additional functionality that nobody else will see. diff --git a/users/drashna/keyrecords/tap_dance.md b/users/drashna/keyrecords/tap_dance.md deleted file mode 100644 index 9dff96640f..0000000000 --- a/users/drashna/keyrecords/tap_dance.md +++ /dev/null @@ -1,121 +0,0 @@ -# Diablo Tap Dances - -My [Tap Dance](tap_dances.c) file includes the tap dance declarations, and everything needed for them. - -To disable, add `CUSTOM_TAP_DANCE = no` to your `rules.mk`. - -This is used for making Diablo 3 much easier to plan, especially at high rift levels. - -This works by using Tap Dances. The taps don't actually "do anything". Instead, it sets up the interval for how often to send specific keypresses. As you can tell, this makes automating things very easy. - -For critics that think this is cheating, just search "[diablo 3 num lock auto cast](http://lmgtfy.com/?q=diablo+3+numlock+autocast)". This is just a simpler method, that doesn't require a numpad. - - -## Custom Tap Dance Type -The real fun here is that the tap dances use a custom defined Tap Dance type: - -```c -#define ACTION_TAP_DANCE_DIABLO(index, keycode) { \ - .fn = { NULL, (void *)diablo_tapdance_master, NULL }, \ - .user_data = (void *)&((diable_keys_t) { index, keycode }), \ - } -``` -This lets me set an index and keycode for the tap dance. This isn't the cool part yet, but this allows for the really cool stuff. - -The Index is needed because I don't know how to handle it otherwise. - -## The Actual Dances - -These are the custom defined dances that I'm using. It sets up everything for later, using the above custom dance type. - -```c -//Tap Dance Definitions, sets the index and the keycode. -tap_dance_action_t tap_dance_actions[] = { - // tap once to disable, and more to enable timed micros - [TD_D3_1] = ACTION_TAP_DANCE_DIABLO(0, KC_1), - [TD_D3_2] = ACTION_TAP_DANCE_DIABLO(1, KC_2), - [TD_D3_3] = ACTION_TAP_DANCE_DIABLO(2, KC_3), - [TD_D3_4] = ACTION_TAP_DANCE_DIABLO(3, KC_4), -}; -``` - -## Custom Data Structures - -First, to get this all working, there are a couple of things that need to be set up. In a header file (or you could put it into the keymap), you need to create a couple of custom structures: - -```c -typedef struct { - uint16_t timer; - uint8_t key_interval; - uint8_t keycode; -} diablo_timer_t; - -typedef struct { - uint8_t index; - uint8_t keycode; -} diable_keys_t; -``` - -The first structure is for tracking each key that is being used. The second is to pass data from the Tap Dance action array to the actual function that we will need. - - -## Custom Arrays - -To facilitate things, you will need a couple of arrays in your `c` file. - -```c -//define diablo macro timer variables -diablo_timer_t diablo_timer[4]; - -// Set the default intervals. Always start with 0 so that it will disable on first hit. -// Otherwise, you will need to hit a bunch of times, or hit the "clear" command -uint8_t diablo_times[] = { 0, 1, 3, 5, 10, 30 }; -``` - -The first one (`diablo_timer`) is what keeps track of the timer used for the keys, the interval that it uses, and the actual keycode. This makes managing it a lot easier. - -The second array is a list of predefined intervals, in seconds. You can add more here, or remove entries. It doesn't matter how long the array is, as this is computed automatically. - -## The Magic - Part 1: Master function - -The first part of the magic here is the `diablo_tapdance_master` function. The Tap Dance feature calls this function, directly, and passes some data to the function. Namely, it passes the array of the index and the keycode (`diablo_keys_t` from above). This sets the keycode and the interval for the specific index of `diabolo_timer` based on the number of taps. If you hit it more than the number of items in the array, then it zeroes out the interval, disabling it. - -```c -// Cycle through the times for the macro, starting at 0, for disabled. -void diablo_tapdance_master(tap_dance_state_t *state, void *user_data) { - diable_keys_t *diablo_keys = (diable_keys_t *)user_data; - // Sets the keycode based on the index - diablo_timer[diablo_keys->index].keycode = diablo_keys->keycode; - - // if the tapdance is hit more than the number of elemints in the array, reset - if (state->count >= ARRAY_SIZE(diablo_times) ) { - diablo_timer[diablo_keys->index].key_interval = 0; - reset_tap_dance(state); - } else { // else set the interval (tapdance count starts at 1, array starts at 0, so offset by one) - diablo_timer[diablo_keys->index].key_interval = diablo_times[state->count - 1]; - } -} -``` - -## The Magic - Part 2: The Coup de Grace - -The real core here is the `run_diablo_macro_check()` function. You need to call this from `matrix_scan_user`, as this handles the timer check. - -Specifically, it runs a check for each index of the timer. It checks to see if it's enabled, and if enough time has passed. If enough time has passed, it resets the timer, and will tap the keycode that you set for that index, but only if the Diablo layer is enabled. - -```c -// Checks each of the 4 timers/keys to see if enough time has elapsed -void run_diablo_macro_check(void) { - for (uint8_t index = 0; index < NUM_OF_DIABLO_KEYS; index++) { - // if key_interval is 0, it's disabled, so only run if it's set. If it's set, check the timer. - if ( diablo_timer[index].key_interval && timer_elapsed( diablo_timer[index].timer ) > ( diablo_timer[index].key_interval * 1000 ) ) { - // reset the timer, since enough time has passed - diablo_timer[index].timer = timer_read(); - // send keycode ONLY if we're on the diablo layer. - if (IS_LAYER_ON(_DIABLO)) { - tap_code(diablo_timer[index].keycode); - } - } - } -} -``` diff --git a/users/drashna/keyrecords/tap_dances.c b/users/drashna/keyrecords/tap_dances.c deleted file mode 100644 index 87739c2a18..0000000000 --- a/users/drashna/keyrecords/tap_dances.c +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) -// SPDX-License-Identifier: GPL-2.0-or-later - -#include "tap_dances.h" - -#define NUM_OF_DIABLO_KEYS 4 -// define diablo macro timer variables -diablo_timer_t diablo_timer[NUM_OF_DIABLO_KEYS]; - -// Set the default intervals. Always start with 0 so that it will disable on first hit. -// Otherwise, you will need to hit a bunch of times, or hit the "clear" command -uint8_t diablo_times[] = {0, 1, 3, 5, 10, 30}; - -/** - * @brief Main function for handling diable related tap dances. - * - * @param state Main data struction contining information about events - * @param user_data Local data for the dance. Allows customization to be passed on to function - */ -void diablo_tapdance_master(tap_dance_state_t *state, void *user_data) { - diable_keys_t *diablo_keys = (diable_keys_t *)user_data; - // Sets the keycode based on the index - diablo_timer[diablo_keys->index].keycode = diablo_keys->keycode; - - // if the tapdance is hit more than the number of elemints in the array, reset - if (state->count >= ARRAY_SIZE(diablo_times)) { - diablo_timer[diablo_keys->index].key_interval = 0; - reset_tap_dance(state); - } else { // else set the interval (tapdance count starts at 1, array starts at 0, so offset by one) - diablo_timer[diablo_keys->index].key_interval = diablo_times[state->count - 1]; - } -} - -// clang-format off -// One function to rule them all!! Where the Magic Sauce lies -#define ACTION_TAP_DANCE_DIABLO(index, keycode) { \ - .fn = { NULL, (void *)diablo_tapdance_master, NULL }, \ - .user_data = (void *)&((diable_keys_t) { index, keycode }), \ - } -// clang-format on - -// Tap Dance Definitions, sets the index and the keycode. -tap_dance_action_t tap_dance_actions[] = { - // tap once to disable, and more to enable timed micros - [TD_D3_1] = ACTION_TAP_DANCE_DIABLO(0, KC_1), - [TD_D3_2] = ACTION_TAP_DANCE_DIABLO(1, KC_2), - [TD_D3_3] = ACTION_TAP_DANCE_DIABLO(2, KC_3), - [TD_D3_4] = ACTION_TAP_DANCE_DIABLO(3, KC_4), -}; - -/** - * @brief Runs check to see if timer has elapsed for each dance, and sends keycodes, if it has. - * - */ -void run_diablo_macro_check(void) { - for (uint8_t index = 0; index < NUM_OF_DIABLO_KEYS; index++) { - // if key_interval is 0, it's disabled, so only run if it's set. If it's set, check the timer. - if (diablo_timer[index].key_interval && timer_elapsed(diablo_timer[index].timer) > (diablo_timer[index].key_interval * 1000)) { - // reset the timer, since enough time has passed - diablo_timer[index].timer = timer_read(); - // send keycode ONLY if we're on the diablo layer. - if (IS_LAYER_ON(_DIABLO)) { - tap_code(diablo_timer[index].keycode); - } - } - } -} diff --git a/users/drashna/keyrecords/tap_dances.h b/users/drashna/keyrecords/tap_dances.h deleted file mode 100644 index 81d1f07fe0..0000000000 --- a/users/drashna/keyrecords/tap_dances.h +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once -#include "drashna.h" - -// define diablo macro timer variables -extern uint8_t diablo_times[]; -typedef struct { - uint16_t timer; - uint8_t key_interval; - uint8_t keycode; -} diablo_timer_t; - -typedef struct { - uint8_t index; - uint8_t keycode; -} diable_keys_t; - -extern diablo_timer_t diablo_timer[]; - -void run_diablo_macro_check(void); - -#ifdef TAP_DANCE_ENABLE -enum { - TD_D3_1 = 0, - TD_D3_2, - TD_D3_3, - TD_D3_4, -}; -#endif // TAP_DANCE_ENABLE diff --git a/users/drashna/keyrecords/tapping.c b/users/drashna/keyrecords/tapping.c deleted file mode 100644 index d4a0e16112..0000000000 --- a/users/drashna/keyrecords/tapping.c +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright 2021 Christopher Courtney, aka Drashna Jael're (@drashna) -// SPDX-License-Identifier: GPL-2.0-or-later - -#include "drashna.h" - -#ifdef TAPPING_TERM_PER_KEY -__attribute__((weak)) uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { - - switch (keycode) { - case BK_LWER: - return TAPPING_TERM + 25; - case QK_MOD_TAP ... QK_MOD_TAP_MAX: - if (QK_MOD_TAP_GET_MODS(keycode) & MOD_LGUI) { - return 300; - } - default: - return TAPPING_TERM; - } -} -#endif // TAPPING_TERM_PER_KEY - -#ifdef PERMISSIVE_HOLD_PER_KEY -__attribute__((weak)) bool get_permissive_hold(uint16_t keycode, keyrecord_t *record) { - // Immediately select the hold action when another key is tapped: - // return true; - // Do not select the hold action when another key is tapped. - // return false; - switch (keycode) { - default: - return false; - } -} -#endif // PERMISSIVE_HOLD_PER_KEY - -#ifdef HOLD_ON_OTHER_KEY_PRESS_PER_KEY -__attribute__((weak)) bool get_hold_on_other_key_press(uint16_t keycode, keyrecord_t *record) { - // Immediately select the hold action when another key is pressed. - // return true; - // Do not select the hold action when another key is pressed. - // return false; - switch (keycode) { -// case QK_LAYER_TAP ... QK_LAYER_TAP_MAX: -// return true; - default: - return false; - } -} -#endif // HOLD_ON_OTHER_KEY_PRESS_PER_KEY - -#ifdef QUICK_TAP_TERM_PER_KEY -__attribute__((weak)) uint16_t get_quick_tap_term(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - default: - return QUICK_TAP_TERM; - } -} -#endif // QUICK_TAP_TERM_PER_KEY - -#ifdef RETRO_TAPPING_PER_KEY -__attribute__((weak)) bool get_retro_tapping(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - default: - return false; - } -} -#endif // RETRO_TAPPING_PER_KEY diff --git a/users/drashna/keyrecords/unicode.c b/users/drashna/keyrecords/unicode.c deleted file mode 100644 index a4687d3e59..0000000000 --- a/users/drashna/keyrecords/unicode.c +++ /dev/null @@ -1,446 +0,0 @@ -// Copyright 2020 @ridingqwerty -// Copyright 2020 @tzarc -// Copyright 2021 Christopher Courtney, aka Drashna Jael're (@drashna) -// SPDX-License-Identifier: GPL-2.0-or-later - -#include "drashna.h" -#include "unicode.h" -#include "process_unicode_common.h" - -uint8_t unicode_typing_mode = UCTM_NO_MODE; -const char unicode_mode_str[UNCODES_MODE_END][13] PROGMEM = { - " Normal\0", - " Wide\0", - " Script\0", - " Blocks\0", - " Regional\0", - " Aussie\0", - " Zalgo\0", - "Super Script\0", - " Comic\0", -}; - -/** - * @brief Registers the unicode keystrokes based on desired unicode - * - * @param glyph Unicode character, supports up to 0x1FFFF (or higher) - */ -void tap_unicode_glyph_nomods(uint32_t glyph) { - uint8_t temp_mod = get_mods(); - clear_mods(); - clear_oneshot_mods(); - register_unicode(glyph); - set_mods(temp_mod); -} - -typedef uint32_t (*translator_function_t)(bool is_shifted, uint32_t keycode); - -#define DEFINE_UNICODE_RANGE_TRANSLATOR(translator_name, lower_alpha, upper_alpha, zero_glyph, number_one, space_glyph) \ - static inline uint32_t translator_name(bool is_shifted, uint32_t keycode) { \ - switch (keycode) { \ - case KC_A ... KC_Z: \ - return (is_shifted ? upper_alpha : lower_alpha) + keycode - KC_A; \ - case KC_0: \ - return zero_glyph; \ - case KC_1 ... KC_9: \ - return (number_one + keycode - KC_1); \ - case KC_SPACE: \ - return space_glyph; \ - } \ - return keycode; \ - } - -#define DEFINE_UNICODE_LUT_TRANSLATOR(translator_name, ...) \ - static inline uint32_t translator_name(bool is_shifted, uint32_t keycode) { \ - static const uint32_t translation[] = {__VA_ARGS__}; \ - uint32_t ret = keycode; \ - if ((keycode - KC_A) < ARRAY_SIZE(translation)) { \ - ret = translation[keycode - KC_A]; \ - } \ - return ret; \ - } - -/** - * @brief Handler function for outputting unicode. - * - * @param keycode Keycode from matrix. - * @param record keyrecord_t data structure - * @param translator translator lut for different unicode modes - * @return true Continue processing matrix press, and send to host - * @return false Replace keycode, and do not send to host - */ -bool process_record_glyph_replacement(uint16_t keycode, keyrecord_t *record, translator_function_t translator) { - uint8_t temp_mod = get_mods(); - uint8_t temp_osm = get_oneshot_mods(); - bool is_shifted = (temp_mod | temp_osm) & MOD_MASK_SHIFT; - if (((temp_mod | temp_osm) & (MOD_MASK_CTRL | MOD_MASK_ALT | MOD_MASK_GUI)) == 0) { - if (KC_A <= keycode && keycode <= KC_Z) { - if (record->event.pressed) { - tap_unicode_glyph_nomods(translator(is_shifted, keycode)); - } - return false; - } else if (KC_1 <= keycode && keycode <= KC_0) { - if (is_shifted) { // skip shifted numbers, so that we can still use symbols etc. - return process_record_keymap(keycode, record); - } - if (record->event.pressed) { - register_unicode(translator(is_shifted, keycode)); - } - return false; - } else if (keycode == KC_SPACE) { - if (record->event.pressed) { - register_unicode(translator(is_shifted, keycode)); - } - return false; - } - } - return true; -} - -DEFINE_UNICODE_RANGE_TRANSLATOR(unicode_range_translator_wide, 0xFF41, 0xFF21, 0xFF10, 0xFF11, 0x2003); -DEFINE_UNICODE_RANGE_TRANSLATOR(unicode_range_translator_script, 0x1D4EA, 0x1D4D0, 0x1D7CE, 0x1D7C1, 0x2002); -DEFINE_UNICODE_RANGE_TRANSLATOR(unicode_range_translator_boxes, 0x1F170, 0x1F170, '0', '1', 0x2002); -DEFINE_UNICODE_RANGE_TRANSLATOR(unicode_range_translator_regional, 0x1F1E6, 0x1F1E6, '0', '1', 0x2003); - -// DEFINE_UNICODE_LUT_TRANSLATOR(unicode_lut_translator_normal, -// 'a', // a -// 'b', // b -// 'c', // c -// 'd', // d -// 'e', // e -// 'f', // f -// 'g', // g -// 'h', // h -// 'i', // i -// 'j', // j -// 'k', // k -// 'l', // l -// 'm', // m -// 'n', // n -// 'o', // o -// 'p', // p -// 'q', // q -// 'r', // r -// 's', // s -// 't', // t -// 'u', // u -// 'v', // v -// 'w', // w -// 'x', // x -// 'y', // y -// 'z', // z -// '1', // 1 -// '2', // 2 -// '3', // 3 -// '4', // 4 -// '5', // 5 -// '6', // 6 -// '7', // 7 -// '8', // 8 -// '9', // 9 -// '0' // 0 -// ); - -DEFINE_UNICODE_LUT_TRANSLATOR(unicode_lut_translator_aussie, - 0x0250, // a - 'q', // b - 0x0254, // c - 'p', // d - 0x01DD, // e - 0x025F, // f - 0x0183, // g - 0x0265, // h - 0x1D09, // i - 0x027E, // j - 0x029E, // k - 'l', // l - 0x026F, // m - 'u', // n - 'o', // o - 'd', // p - 'b', // q - 0x0279, // r - 's', // s - 0x0287, // t - 'n', // u - 0x028C, // v - 0x028D, // w - 0x2717, // x - 0x028E, // y - 'z', // z - 0x0269, // 1 - 0x3139, // 2 - 0x0190, // 3 - 0x3123, // 4 - 0x03DB, // 5 - '9', // 6 - 0x3125, // 7 - '8', // 8 - '6', // 9 - '0' // 0 -); - -DEFINE_UNICODE_LUT_TRANSLATOR(unicode_lut_translator_super, - 0x1D43, // a - 0x1D47, // b - 0x1D9C, // c - 0x1D48, // d - 0x1D49, // e - 0x1DA0, // f - 0x1D4D, // g - 0x02B0, // h - 0x2071, // i - 0x02B2, // j - 0x1D4F, // k - 0x02E1, // l - 0x1D50, // m - 0x207F, // n - 0x1D52, // o - 0x1D56, // p - 0x06F9, // q - 0x02B3, // r - 0x02E2, // s - 0x1D57, // t - 0x1D58, // u - 0x1D5B, // v - 0x02B7, // w - 0x02E3, // x - 0x02B8, // y - 0x1DBB, // z - 0x00B9, // 1 - 0x00B2, // 2 - 0x00B3, // 3 - 0x2074, // 4 - 0x2075, // 5 - 0x2076, // 6 - 0x2077, // 7 - 0x2078, // 8 - 0x2079, // 9 - 0x2070 // 0 -); - -DEFINE_UNICODE_LUT_TRANSLATOR(unicode_lut_translator_comic, - 0x212B, // a - 0x212C, // b - 0x2102, // c - 0x2145, // d - 0x2107, // e - 0x2132, // f - 0x2141, // g - 0x210D, // h - 0x2148, // i - 0x2111, // j - 'k', // k - 0x2143, // l - 'm', // m - 0x2115, // n - 0x2134, // o - 0x2119, // p - 0x211A, // q - 0x211B, // r - 0x20B7, // s - 0x20B8, // t - 0x2127, // u - 'v', // v - 0x20A9, // w - 'x', // x - 0x213D, // y - 'z', // z - '1', // 1 - '2', // 2 - '3', // 3 - '4', // 4 - '5', // 5 - '6', // 6 - '7', // 7 - '8', // 8 - '9', // 9 - '0' // 0 -); - -bool process_record_aussie(uint16_t keycode, keyrecord_t *record) { - bool is_shifted = (get_mods() | get_oneshot_mods()) & MOD_MASK_SHIFT; - if ((KC_A <= keycode) && (keycode <= KC_0)) { - if (record->event.pressed) { - if (!process_record_glyph_replacement(keycode, record, unicode_lut_translator_aussie)) { - tap_code16_nomods(KC_LEFT); - return false; - } - } - } else if (record->event.pressed && keycode == KC_SPACE) { - tap_code16_nomods(KC_SPACE); - tap_code16_nomods(KC_LEFT); - return false; - } else if (record->event.pressed && keycode == KC_ENTER) { - tap_code16_nomods(KC_END); - tap_code16_nomods(KC_ENTER); - return false; - } else if (record->event.pressed && keycode == KC_HOME) { - tap_code16_nomods(KC_END); - return false; - } else if (record->event.pressed && keycode == KC_END) { - tap_code16_nomods(KC_HOME); - return false; - } else if (record->event.pressed && keycode == KC_BSPC) { - tap_code16_nomods(KC_DEL); - return false; - } else if (record->event.pressed && keycode == KC_DEL) { - tap_code16_nomods(KC_BSPC); - return false; - } else if (record->event.pressed && keycode == KC_QUOT) { - tap_unicode_glyph_nomods(is_shifted ? 0x201E : 0x201A); - tap_code16_nomods(KC_LEFT); - return false; - } else if (record->event.pressed && keycode == KC_COMMA) { - tap_unicode_glyph_nomods(is_shifted ? '<' : 0x2018); - tap_code16_nomods(KC_LEFT); - return false; - } else if (record->event.pressed && keycode == KC_DOT) { - tap_unicode_glyph_nomods(is_shifted ? '>' : 0x02D9); - tap_code16_nomods(KC_LEFT); - return false; - } else if (record->event.pressed && keycode == KC_SLASH) { - tap_unicode_glyph_nomods(is_shifted ? 0x00BF : '/'); - tap_code16_nomods(KC_LEFT); - return false; - } - return true; -} - -bool process_record_zalgo(uint16_t keycode, keyrecord_t *record) { - if ((KC_A <= keycode) && (keycode <= KC_0)) { - if (record->event.pressed) { - tap_code16_nomods(keycode); - - int number = (rand() % (8 + 1 - 2)) + 2; - for (int index = 0; index < number; index++) { - uint16_t hex = (rand() % (0x036F + 1 - 0x0300)) + 0x0300; - register_unicode(hex); - } - - return false; - } - } - return true; -} - -/** - * @brief Main handler for unicode input - * - * @param keycode Keycode from switch matrix - * @param record keyrecord_t data struture - * @return true Send keycode from matrix to host - * @return false Stop processing and do not send to host - */ - -bool process_record_unicode(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case UC_FLIP: // (ノāē į—Šāē )ãƒŽå―Ąâ”ŧ━â”ŧ - if (record->event.pressed) { - send_unicode_string("(ノāē į—Šāē )ãƒŽå―Ąâ”ŧ━â”ŧ"); - } - break; - - case UC_TABL: // ┎─┎ノ( š _ šノ) - if (record->event.pressed) { - send_unicode_string("┎─┎ノ( š _ šノ)"); - } - break; - - case UC_SHRG: // ÂŊ\_(ツ)_/ÂŊ - if (record->event.pressed) { - send_unicode_string("ÂŊ\\_(ツ)_/ÂŊ"); - } - break; - - case UC_DISA: // āē _āē  - if (record->event.pressed) { - send_unicode_string("āē _āē "); - } - break; - - case UC_IRNY: // âļŪ - if (record->event.pressed) { - register_unicode(0x2E2E); - } - break; - case UC_CLUE: // â€― - if (record->event.pressed) { - register_unicode(0x203D); - } - break; - case KC_NOMODE ... KC_COMIC: - if (record->event.pressed) { - if (unicode_typing_mode != keycode - KC_NOMODE) { - unicode_typing_mode = keycode - KC_NOMODE; - } else { - unicode_typing_mode = UCTM_NO_MODE; - } - } - break; - } - - if (((get_mods() | get_oneshot_mods()) & ~MOD_MASK_SHIFT) != 0) { - return true; - } - - if (IS_QK_MOD_TAP(keycode) && record->tap.count) { - keycode = QK_MOD_TAP_GET_TAP_KEYCODE(keycode); - } - if (IS_QK_LAYER_TAP(keycode) && record->tap.count) { - keycode = QK_LAYER_TAP_GET_TAP_KEYCODE(keycode); - } - - if (unicode_typing_mode == UCTM_WIDE) { - if (((KC_A <= keycode) && (keycode <= KC_0)) || keycode == KC_SPACE) { - return process_record_glyph_replacement(keycode, record, unicode_range_translator_wide); - } - } else if (unicode_typing_mode == UCTM_SCRIPT) { - if (((KC_A <= keycode) && (keycode <= KC_0)) || keycode == KC_SPACE) { - return process_record_glyph_replacement(keycode, record, unicode_range_translator_script); - } - } else if (unicode_typing_mode == UCTM_BLOCKS) { - if (((KC_A <= keycode) && (keycode <= KC_0)) || keycode == KC_SPACE) { - return process_record_glyph_replacement(keycode, record, unicode_range_translator_boxes); - } - } else if (unicode_typing_mode == UCTM_REGIONAL) { - if (((KC_A <= keycode) && (keycode <= KC_0)) || keycode == KC_SPACE) { - if (!process_record_glyph_replacement(keycode, record, unicode_range_translator_regional)) { - wait_us(500); - tap_unicode_glyph_nomods(0x200C); - return false; - } - } - } else if (unicode_typing_mode == UCTM_SUPER) { - if (((KC_A <= keycode) && (keycode <= KC_0))) { - return process_record_glyph_replacement(keycode, record, unicode_lut_translator_super); - } - } else if (unicode_typing_mode == UCTM_COMIC) { - if (((KC_A <= keycode) && (keycode <= KC_0))) { - return process_record_glyph_replacement(keycode, record, unicode_lut_translator_comic); - } - } else if (unicode_typing_mode == UCTM_AUSSIE) { - return process_record_aussie(keycode, record); - } else if (unicode_typing_mode == UCTM_ZALGO) { - return process_record_zalgo(keycode, record); - } - return true; -} - -/** - * @brief Initialize the default unicode mode on firmware startup - * - */ -void keyboard_post_init_unicode(void) { - unicode_input_mode_init(); -} - -/** - * @brief Set the unicode input mode without extra functionality - * - * @param input_mode - */ -void set_unicode_input_mode_soft(uint8_t input_mode) { - unicode_config.input_mode = input_mode; - unicode_input_mode_set_kb(input_mode); -} diff --git a/users/drashna/keyrecords/unicode.h b/users/drashna/keyrecords/unicode.h deleted file mode 100644 index fe95e78c3a..0000000000 --- a/users/drashna/keyrecords/unicode.h +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once - -enum unicode_typing_modes { - UCTM_NO_MODE, - UCTM_WIDE, - UCTM_SCRIPT, - UCTM_BLOCKS, - UCTM_REGIONAL, - UCTM_AUSSIE, - UCTM_ZALGO, - UCTM_SUPER, - UCTM_COMIC, - UNCODES_MODE_END, -}; - -extern uint8_t unicode_typing_mode; -extern const PROGMEM char unicode_mode_str[UNCODES_MODE_END][13]; -void set_unicode_input_mode_soft(uint8_t input_mode); diff --git a/users/drashna/keyrecords/unicode.md b/users/drashna/keyrecords/unicode.md deleted file mode 100644 index 1b3f696a82..0000000000 --- a/users/drashna/keyrecords/unicode.md +++ /dev/null @@ -1,27 +0,0 @@ -# Custom Unicode - -To disable, add `CUSTOM_UNICODE_ENABLE = no` to the keymap's `rules.mk`. - -This disables all of the various implementations of unicode, enables the common unicode core, and allows usage. - -In addition to a number of unicode keycodes: - -* `UC_FLIP` - `(ノāē į—Šāē )ãƒŽå―Ąâ”ŧ━â”ŧ` -* `UC_TABL` - `┎─┎ノ( š _ šノ)` -* `UC_SHRG` - `ÂŊ\_(ツ)_/ÂŊ` -* `UC_DISA` - `āē _āē ` -* `UC_IRNY` - `âļŪ` -* `UC_CLUE` - `â€―` - -There are a number of unicode typing modes. This replaces the normal alpha keys with special unicodes. - -* `KC_WIDE` - ï―”ï―ˆï―‰ï―“â€ƒï―‰ï―“â€ƒï―—ï―‰ï―„ï―…â€ƒï―ï―ï―„ï―… -* `KC_SCRIPT` - ð“―ð“ąð“ē𝓞 ð“ē𝓞 𝓞𝓎ð“ŧð“ēð“đð“―â€‚ð“ķð“ļ𝓭ð“Ū -* `KC_BLOCKS` - 🆃🅷ðŸ…ļ🆂 ðŸ…ļðŸ†‚â€‚ðŸ…ąðŸ…ŧðŸ…ūðŸ…ē🅚 🅞ðŸ…ūðŸ…ģðŸ…ī -* `KC_REGIONAL` - ðŸ‡đ‌‌🇭‌‌ðŸ‡Ū‌‌ðŸ‡ļ‌‌ ‌‌ðŸ‡Ū‌‌ðŸ‡ļ‌‌ ‌‌🇷‌‌🇊‌‌🇎‌‌ðŸ‡Ū‌‌ðŸ‡ī‌‌ðŸ‡ģ‌‌ðŸ‡Ķâ€Œâ€ŒðŸ‡ąâ€Œâ€Œâ€ƒâ€Œâ€ŒðŸ‡ē‌‌ðŸ‡ī‌‌ðŸ‡Đ‌‌🇊‌‌ -* `KC_AUSSIE` - ĮpoÉŊ Įáī‰ssnɐ sáī‰ sáī‰ÉĨʇ -* `KC_ZALGO` - t͕͐ĖĻ͙ĖšĖū͍hĖ‚ĖŧiĖˆĖģĖŧĖ—ĖœÍ”ÍĶs͎͗Ė ÍˆÍ“Ė€ iĖŦĖķÍ­Ė†sĖŦĖŧĖœĖĖ›Í‘ÍĄ z͗ĖĐ͈Ė a͜Ė“ÍšĖœl͈ĖŸg͝ÍĒ͋oͥ͘Ė€ÍĨ͚͞ mĖĄĖŧĖĖ”ÍŠĖīĖžòĖŋ͔ͩĖ­ĖdĖŠĖąĖŧĖ„ĖˆeĖģ͕ĖĪÍĢÍŊ -* `KC_NOMODE` - this is the normal typing mode with no unicode glyphs - - -Credit goes to ridingqwerty and tzarc for the unicode typing modes. diff --git a/users/drashna/keyrecords/wrappers.h b/users/drashna/keyrecords/wrappers.h deleted file mode 100644 index b298ef0628..0000000000 --- a/users/drashna/keyrecords/wrappers.h +++ /dev/null @@ -1,266 +0,0 @@ -// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) -// Copyright 2020 @jola5 -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once -#include "drashna.h" -/* -Since our quirky block definitions are basically a list of comma separated -arguments, we need a wrapper in order for these definitions to be -expanded before being used as arguments to the LAYOUT_xxx macro. -*/ - -/* -Blocks for each of the four major keyboard layouts -Organized so we can quickly adapt and modify all of them -at once, rather than for each keyboard, one at a time. -And this allows for much cleaner blocks in the keymaps. -For instance Tap/Hold for Control on all of the layouts - -NOTE: These are all the same length. If you do a search/replace - then you need to add/remove underscores to keep the - lengths consistent. -*/ -// clang-format off -#define _________________QWERTY_L1_________________ KC_Q, KC_W, KC_E, KC_R, KC_T -#define _________________QWERTY_L2_________________ KC_A, KC_S, KC_D, KC_F, KC_G -#define _________________QWERTY_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_B - -#define _________________QWERTY_R1_________________ KC_Y, KC_U, KC_I, KC_O, KC_P -#define _________________QWERTY_R2_________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT -#define _________________QWERTY_R3_________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH - - -#define _________________COLEMAK_L1________________ KC_Q, KC_W, KC_F, KC_P, KC_G -#define _________________COLEMAK_L2________________ KC_A, KC_R, KC_S, KC_T, KC_D -#define _________________COLEMAK_L3________________ KC_Z, KC_X, KC_C, KC_V, KC_B - -#define _________________COLEMAK_R1________________ KC_J, KC_L, KC_U, KC_Y, KC_SCLN -#define _________________COLEMAK_R2________________ KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT -#define _________________COLEMAK_R3________________ KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH - -#define ______________COLEMAK_MOD_DH_L1____________ KC_Q, KC_W, KC_F, KC_P, KC_B -#define ______________COLEMAK_MOD_DH_L2____________ KC_A, KC_R, KC_S, KC_T, KC_G -#define ______________COLEMAK_MOD_DH_L3____________ KC_Z, KC_X, KC_C, KC_D, KC_V - -#define ______________COLEMAK_MOD_DH_R1____________ KC_J, KC_L, KC_U, KC_Y, KC_SCLN -#define ______________COLEMAK_MOD_DH_R2____________ KC_M, KC_N, KC_E, KC_I, KC_O, KC_QUOT -#define ______________COLEMAK_MOD_DH_R3____________ KC_K, KC_H, KC_COMM, KC_DOT, KC_SLASH - - -#define _________________DVORAK_L1_________________ KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y -#define _________________DVORAK_L2_________________ KC_A, KC_O, KC_E, KC_U, KC_I -#define _________________DVORAK_L3_________________ KC_SCLN, KC_Q, KC_J, KC_K, KC_X - -#define _________________DVORAK_R1_________________ KC_F, KC_G, KC_C, KC_R, KC_L -#define _________________DVORAK_R2_________________ KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH -#define _________________DVORAK_R3_________________ KC_B, KC_M, KC_W, KC_V, KC_Z - - -#define ________________DVORAK_AU_L1_______________ KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y -#define ________________DVORAK_AU_L2_______________ KC_O, KC_A, KC_E, KC_I, KC_U -#define ________________DVORAK_AU_L3_______________ KC_SCLN, KC_Q, KC_J, KC_K, KC_X - -#define ________________DVORAK_AU_R1_______________ KC_F, KC_G, KC_C, KC_R, KC_L -#define ________________DVORAK_AU_R2_______________ KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH -#define ________________DVORAK_AU_R3_______________ KC_B, KC_M, KC_W, KC_V, KC_Z - -#define _________________WORKMAN_L1________________ KC_Q, KC_D, KC_R, KC_W, KC_B -#define _________________WORKMAN_L2________________ KC_A, KC_S, KC_H, KC_T, KC_G -#define _________________WORKMAN_L3________________ KC_Z, KC_X, KC_M, KC_C, KC_V - -#define _________________WORKMAN_R1________________ KC_J, KC_F, KC_U, KC_P, KC_SCLN -#define _________________WORKMAN_R2________________ KC_Y, KC_N, KC_E, KC_O, KC_I, KC_QUOT -#define _________________WORKMAN_R3________________ KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH - - -#define _________________NORMAN_L1_________________ KC_Q, KC_W, KC_D, KC_F, KC_K -#define _________________NORMAN_L2_________________ KC_A, KC_S, KC_E, KC_T, KC_G -#define _________________NORMAN_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_B - -#define _________________NORMAN_R1_________________ KC_J, KC_U, KC_R, KC_L, KC_SCLN -#define _________________NORMAN_R2_________________ KC_Y, KC_N, KC_I, KC_O, KC_U, KC_QUOT -#define _________________NORMAN_R3_________________ KC_P, KC_M, KC_COMM, KC_DOT, KC_SLSH - - -#define _________________MALTRON_L1________________ KC_Q, KC_P, KC_Y, KC_C, KC_B -#define _________________MALTRON_L2________________ KC_A, KC_N, KC_I, KC_S, KC_F -#define _________________MALTRON_L3________________ KC_SCLN, KC_SLSH, KC_J, KC_G, KC_COMM - -#define _________________MALTRON_R1________________ KC_V, KC_M, KC_U, KC_Z, KC_L -#define _________________MALTRON_R2________________ KC_D, KC_T, KC_D, KC_O, KC_R, KC_QUOT -#define _________________MALTRON_R3________________ KC_DOT, KC_W, KC_K, KC_MINS, KC_X - - -#define _________________EUCALYN_L1________________ KC_Q, KC_W, KC_COMM, KC_DOT, KC_SCLN -#define _________________EUCALYN_L2________________ KC_A, KC_O, KC_E, KC_I, KC_U -#define _________________EUCALYN_L3________________ KC_Z, KC_X, KC_C, KC_V, KC_F - -#define _________________EUCALYN_R1________________ KC_M, KC_R, KC_D, KC_Y, KC_P -#define _________________EUCALYN_R2________________ KC_G, KC_T, KC_K, KC_S, KC_N, KC_QUOT -#define _________________EUCALYN_R3________________ KC_B, KC_H, KC_J, KC_L, KC_SLSH - -// Qwerty-like -#define _____________CARPLAX_QFMLWY_L1_____________ KC_Q, KC_F, KC_M, KC_L, KC_W -#define _____________CARPLAX_QFMLWY_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R -#define _____________CARPLAX_QFMLWY_L3_____________ KC_Z, KC_V, KC_G, KC_C, KC_X - -#define _____________CARPLAX_QFMLWY_R1_____________ KC_Y, KC_U, KC_O, KC_B, KC_J -#define _____________CARPLAX_QFMLWY_R2_____________ KC_I, KC_A, KC_E, KC_H, KC_SCLN, KC_QUOT -#define _____________CARPLAX_QFMLWY_R3_____________ KC_P, KC_K, KC_COMM, KC_DOT, KC_SLSH - -// Colemak like -#define _____________CARPLAX_QGMLWB_L1_____________ KC_Q, KC_G, KC_M, KC_L, KC_W -#define _____________CARPLAX_QGMLWB_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R -#define _____________CARPLAX_QGMLWB_L3_____________ KC_Z, KC_X, KC_C, KC_F, KC_J - -#define _____________CARPLAX_QGMLWB_R1_____________ KC_B, KC_Y, KC_U, KC_V, KC_SCLN -#define _____________CARPLAX_QGMLWB_R2_____________ KC_I, KC_A, KC_E, KC_O, KC_H, KC_QUOT -#define _____________CARPLAX_QGMLWB_R3_____________ KC_K, KC_P, KC_COMM, KC_DOT, KC_SLSH - -// colemak like, zxcv fixed -#define _____________CARPLAX_QGMLWY_L1_____________ KC_Q, KC_G, KC_M, KC_L, KC_W -#define _____________CARPLAX_QGMLWY_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R -#define _____________CARPLAX_QGMLWY_L3_____________ KC_Z, KC_X, KC_C, KC_V, KC_J - -#define _____________CARPLAX_QGMLWY_R1_____________ KC_Y, KC_F, KC_U, KC_B, KC_SCLN -#define _____________CARPLAX_QGMLWY_R2_____________ KC_I, KC_A, KC_E, KC_O, KC_H, KC_QUOT -#define _____________CARPLAX_QGMLWY_R3_____________ KC_K, KC_P, KC_COMM, KC_DOT, KC_SLSH - -// teeheehee -#define _____________CARPLAX_TNWCLR_L1_____________ KC_T, KC_N, KC_W, KC_C, KC_L -#define _____________CARPLAX_TNWCLR_L2_____________ KC_S, KC_K, KC_J, KC_X, KC_G -#define _____________CARPLAX_TNWCLR_L3_____________ KC_E, KC_O, KC_D, KC_I, KC_A - -#define _____________CARPLAX_TNWCLR_R1_____________ KC_R, KC_B, KC_F, KC_M, KC_H -#define _____________CARPLAX_TNWCLR_R2_____________ KC_P, KC_Q, KC_Z, KC_V, KC_SCLN, KC_QUOT -#define _____________CARPLAX_TNWCLR_R3_____________ KC_U, KC_Y, KC_COMM, KC_DOT, KC_SLSH - - -#define _________________WHITE_R1__________________ KC_V, KC_Y, KC_D, KC_COMM, KC_QUOT -#define _________________WHITE_R2__________________ KC_A, KC_T, KC_H, KC_E, KC_B -#define _________________WHITE_R3__________________ KC_P, KC_K, KC_G, KC_W, KC_Q - -#define _________________WHITE_L1__________________ KC_INT1, KC_J, KC_M, KC_L, KC_U -#define _________________WHITE_L2__________________ KC_MINS, KC_C, KC_S, KC_N, KC_O, KC_I -#define _________________WHITE_L3__________________ KC_X, KC_R, KC_F, KC_DOT, KC_Z - - -#define _________________HALMAK_L1_________________ KC_W, KC_L, KC_R, KC_B, KC_Z -#define _________________HALMAK_L2_________________ KC_S, KC_H, KC_N, KC_T, KC_COMM -#define _________________HALMAK_L3_________________ KC_F, KC_M, KC_V, KC_V, KC_SLASH - -#define _________________HALMAK_R1_________________ KC_SCLN, KC_Q, KC_U, KC_D, KC_J -#define _________________HALMAK_R2_________________ KC_DOT, KC_A, KC_E, KC_O, KC_I, KC_QUOTE -#define _________________HALMAK_R3_________________ KC_G, KC_P, KC_X, KC_K, KC_Y - - -#define __________________ISRT_L1__________________ KC_W, KC_C, KC_L, KC_M, KC_K -#define __________________ISRT_L2__________________ KC_I, KC_S, KC_R, KC_T, KC_G -#define __________________ISRT_L3__________________ KC_Q, KC_V, KC_W, KC_D, KC_J - -#define __________________ISRT_R1__________________ KC_Z, KC_F, KC_U, KC_COMM, KC_QUOTE -#define __________________ISRT_R2__________________ KC_P, KC_N, KC_E, KC_A, KC_O, KC_SCLN -#define __________________ISRT_R3__________________ KC_B, KC_H, KC_SLSH, KC_DOT, KC_X - - -#define __________________SOUL_L1__________________ KC_Q, KC_W, KC_L, KC_D, KC_P -#define __________________SOUL_L2__________________ KC_A, KC_S, KC_R, KC_T, KC_G -#define __________________SOUL_L3__________________ KC_Z, KC_X, KC_C, KC_V, KC_J - -#define __________________SOUL_R1__________________ KC_K, KC_M, KC_U, KC_Y, KC_SCLN -#define __________________SOUL_R2__________________ KC_F, KC_N, KC_E, KC_I, KC_O, KC_QUOTE -#define __________________SOUL_R3__________________ KC_B, KC_H, KC_COMM, KC_DOT, KC_SLSH - - -#define __________________NIRO_L1__________________ KC_Q, KC_W, KC_U, KC_D, KC_P -#define __________________NIRO_L2__________________ KC_A, KC_S, KC_E, KC_T, KC_G -#define __________________NIRO_L3__________________ KC_Z, KC_X, KC_C, KC_V, KC_B - -#define __________________NIRO_R1__________________ KC_J, KC_F, KC_Y, KC_L, KC_SCLN -#define __________________NIRO_R2__________________ KC_H, KC_N, KC_I, KC_R, KC_O, KC_QUOTE -#define __________________NIRO_R3__________________ KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH - - -#define _________________ASSET_L1__________________ KC_Q, KC_W, KC_J, KC_F, KC_G -#define _________________ASSET_L2__________________ KC_A, KC_S, KC_E, KC_T, KC_D -#define _________________ASSET_L3__________________ KC_Z, KC_X, KC_C, KC_V, KC_B - -#define _________________ASSET_R1__________________ KC_Y, KC_P, KC_U, KC_L, KC_SCLN -#define _________________ASSET_R2__________________ KC_H, KC_N, KC_I, KC_O, KC_R, KC_QUOTE -#define _________________ASSET_R3__________________ KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH - - -#define _________________MTGAP_L1__________________ KC_Y, KC_P, KC_O, KC_U, KC_J -#define _________________MTGAP_L2__________________ KC_I, KC_N, KC_E, KC_A, KC_COMM -#define _________________MTGAP_L3__________________ KC_Q, KC_Z, KC_SLSH, KC_DOT, KC_SCLN - -#define _________________MTGAP_R1__________________ KC_K, KC_D, KC_L, KC_C, KC_W -#define _________________MTGAP_R2__________________ KC_M, KC_H, KC_T, KC_S, KC_R, KC_QUOTE -#define _________________MTGAP_R3__________________ KC_B, KC_F, KC_G, KC_V, KC_X - - -#define _________________MINIMAK_L1________________ KC_Q, KC_W, KC_D, KC_R, KC_K -#define _________________MINIMAK_L2________________ KC_A, KC_S, KC_T, KC_F, KC_G -#define _________________MINIMAK_L3________________ KC_Z, KC_X, KC_C, KC_V, KC_B - -#define _________________MINIMAK_R1________________ KC_Y, KC_U, KC_I, KC_O, KC_P -#define _________________MINIMAK_R2________________ KC_H, KC_J, KC_E, KC_L, KC_SCLN, KC_QUOT -#define _________________MINIMAK_R3________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH - - -#define ________________MINIMAK_8_L1_______________ KC_Q, KC_W, KC_D, KC_R, KC_K -#define ________________MINIMAK_8_L2_______________ KC_A, KC_S, KC_T, KC_F, KC_G -#define ________________MINIMAK_8_L3_______________ KC_Z, KC_X, KC_C, KC_V, KC_B - -#define ________________MINIMAK_8_R1_______________ KC_Y, KC_U, KC_I, KC_L, KC_P -#define ________________MINIMAK_8_R2_______________ KC_H, KC_N, KC_E, KC_O, KC_SCLN, KC_QUOT -#define ________________MINIMAK_8_R3_______________ KC_J, KC_M, KC_COMM, KC_DOT, KC_SLSH - - -#define _______________MINIMAK_12_L1_______________ KC_Q, KC_W, KC_D, KC_F, KC_K -#define _______________MINIMAK_12_L2_______________ KC_A, KC_S, KC_T, KC_R, KC_G -#define _______________MINIMAK_12_L3_______________ KC_Z, KC_X, KC_C, KC_V, KC_B - -#define _______________MINIMAK_12_R1_______________ KC_Y, KC_U, KC_I, KC_L, KC_SCLN -#define _______________MINIMAK_12_R2_______________ KC_H, KC_N, KC_E, KC_O, KC_P, KC_QUOT -#define _______________MINIMAK_12_R3_______________ KC_J, KC_M, KC_COMM, KC_DOT, KC_SLSH - - -#define ________________NUMBER_LEFT________________ KC_1, KC_2, KC_3, KC_4, KC_5 -#define ________________NUMBER_RIGHT_______________ KC_6, KC_7, KC_8, KC_9, KC_0 -#define _________________FUNC_LEFT_________________ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5 -#define _________________FUNC_RIGHT________________ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10 - -#define ___________________BLANK___________________ _______, _______, _______, _______, _______ - - -#define _________________LOWER_L1__________________ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC -#define _________________LOWER_L2__________________ _________________FUNC_LEFT_________________ -#define _________________LOWER_L3__________________ _________________FUNC_RIGHT________________ - -#define _________________LOWER_R1__________________ KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN -#define _________________LOWER_R2__________________ _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR -#define _________________LOWER_R3__________________ _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END - - - -#define _________________RAISE_L1__________________ ________________NUMBER_LEFT________________ -#define _________________RAISE_L2__________________ ___________________BLANK___________________ -#define _________________RAISE_L3__________________ ___________________BLANK___________________ - -#define _________________RAISE_R1__________________ ________________NUMBER_RIGHT_______________ -#define _________________RAISE_R2__________________ _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC -#define _________________RAISE_R3__________________ _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT - - - -#define _________________ADJUST_L1_________________ RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG -#define _________________ADJUST_L2_________________ MU_TOGG, CK_TOGG, AU_ON, AU_OFF, CG_NORM -#define _________________ADJUST_L3_________________ RGB_RMOD,RGB_HUD,RGB_SAD, RGB_VAD, KC_RGB_T - -#define _________________ADJUST_R1_________________ KC_SEC1, KC_SEC2, KC_SEC3, KC_SEC4, KC_SEC5 -#define _________________ADJUST_R2_________________ CG_SWAP, QWERTY, CLMKDH, COLEMAK, DVORAK -#define _________________ADJUST_R3_________________ MG_NKRO, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT - -// clang-format on diff --git a/users/drashna/keyrecords/wrappers.md b/users/drashna/keyrecords/wrappers.md deleted file mode 100644 index fd62ff1609..0000000000 --- a/users/drashna/keyrecords/wrappers.md +++ /dev/null @@ -1,11 +0,0 @@ -## Keyboard Layout Templates - -This borrows from @jola5's "Not quite neo" code. This allows me to maintain blocks of keymaps in the userspace, so that I can modify the userspace, and this is reflected in all of the keyboards that use it, at once. - -This makes adding tap/hold mods, or other special keycodes or functions to all keyboards super easy, as it's done to all of them at once. - -The caveat here is that the keymap needs a processor/wrapper, as it doesn't like the substitutions. However, this is as simple as just pushing it through a define. For instance: - -`#define LAYOUT_ergodox_wrapper(...) LAYOUT_ergodox(__VA_ARGS__)` - -Once that's been done and you've switched the keymaps to use the "wrapper", it will read the substitution blocks just fine. diff --git a/users/drashna/oled/drashna_font.h b/users/drashna/oled/drashna_font.h deleted file mode 100644 index cef1fc4969..0000000000 --- a/users/drashna/oled/drashna_font.h +++ /dev/null @@ -1,1060 +0,0 @@ -#pragma once - -// additional fonts from -// https://github.com/datacute/TinyOLED-Fonts - -#include "progmem.h" - -// clang-format off -static const unsigned char font[] PROGMEM = { - 0x07, 0x08, 0x7F, 0x08, 0x07, 0x00, - 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00, - 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00, - 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00, - 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00, - 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00, - 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, - 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00, - 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, - 0x00, 0x18, 0x24, 0x18, 0x00, 0x00, - 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00, - 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00, - 0x26, 0x29, 0x79, 0x29, 0x26, 0x00, - 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00, - 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00, - 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00, - 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00, - 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00, - 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00, - 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00, - 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00, - 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00, - 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, - 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00, - 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00, - 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00, - 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00, - 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00, - 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00, - 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00, - 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00, - 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, - -# if defined(OLED_FONT_5X5) - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x28, 0x7c, 0x28, 0x7c, 0x28, 0x00, - 0x5c, 0x54, 0xfe, 0x54, 0x74, 0x00, - 0x44, 0x20, 0x10, 0x08, 0x44, 0x00, - 0x28, 0x54, 0x54, 0x20, 0x50, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x44, 0x00, 0x00, 0x00, 0x00, - 0x44, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x07, 0x02, 0x00, 0x00, 0x00, - 0x10, 0x10, 0x7c, 0x10, 0x10, 0x00, - 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, - 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x60, 0x10, 0x0c, 0x00, 0x00, 0x00, - 0x7c, 0x64, 0x54, 0x4c, 0x7c, 0x00, - 0x48, 0x7c, 0x40, 0x00, 0x00, 0x00, - 0x64, 0x54, 0x54, 0x54, 0x48, 0x00, - 0x44, 0x54, 0x54, 0x54, 0x6c, 0x00, - 0x3c, 0x20, 0x70, 0x20, 0x20, 0x00, - 0x5c, 0x54, 0x54, 0x54, 0x24, 0x00, - 0x7c, 0x54, 0x54, 0x54, 0x74, 0x00, - 0x04, 0x04, 0x64, 0x14, 0x0c, 0x00, - 0x7c, 0x54, 0x54, 0x54, 0x7c, 0x00, - 0x5c, 0x54, 0x54, 0x54, 0x7c, 0x00, - 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xc4, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0x28, 0x44, 0x00, 0x00, 0x00, - 0x28, 0x28, 0x28, 0x28, 0x28, 0x00, - 0x44, 0x28, 0x10, 0x00, 0x00, 0x00, - 0x08, 0x04, 0x54, 0x08, 0x00, 0x00, - 0x7c, 0x44, 0x54, 0x54, 0x5c, 0x00, - 0x7c, 0x24, 0x24, 0x24, 0x7c, 0x00, - 0x7c, 0x54, 0x54, 0x54, 0x6c, 0x00, - 0x7c, 0x44, 0x44, 0x44, 0x44, 0x00, - 0x7c, 0x44, 0x44, 0x44, 0x38, 0x00, - 0x7c, 0x54, 0x54, 0x54, 0x44, 0x00, - 0x7c, 0x14, 0x14, 0x14, 0x04, 0x00, - 0x7c, 0x44, 0x44, 0x54, 0x74, 0x00, - 0x7c, 0x10, 0x10, 0x10, 0x7c, 0x00, - 0x44, 0x44, 0x7c, 0x44, 0x44, 0x00, - 0x60, 0x40, 0x40, 0x44, 0x7c, 0x00, - 0x7c, 0x10, 0x10, 0x28, 0x44, 0x00, - 0x7c, 0x40, 0x40, 0x40, 0x40, 0x00, - 0x7c, 0x08, 0x10, 0x08, 0x7c, 0x00, - 0x7c, 0x08, 0x10, 0x20, 0x7c, 0x00, - 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, - 0x7c, 0x14, 0x14, 0x14, 0x08, 0x00, - 0x3c, 0x24, 0x64, 0x24, 0x3c, 0x00, - 0x7c, 0x14, 0x14, 0x14, 0x68, 0x00, - 0x5c, 0x54, 0x54, 0x54, 0x74, 0x00, - 0x04, 0x04, 0x7c, 0x04, 0x04, 0x00, - 0x7c, 0x40, 0x40, 0x40, 0x7c, 0x00, - 0x0c, 0x30, 0x40, 0x30, 0x0c, 0x00, - 0x3c, 0x40, 0x30, 0x40, 0x3c, 0x00, - 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, - 0x0c, 0x10, 0x60, 0x10, 0x0c, 0x00, - 0x44, 0x64, 0x54, 0x4c, 0x44, 0x00, - 0x7c, 0x44, 0x00, 0x00, 0x00, 0x00, - 0x0c, 0x10, 0x60, 0x00, 0x00, 0x00, - 0x44, 0x7c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x7c, 0x24, 0x24, 0x24, 0x7c, 0x00, - 0x7c, 0x54, 0x54, 0x54, 0x6c, 0x00, - 0x7c, 0x44, 0x44, 0x44, 0x44, 0x00, - 0x7c, 0x44, 0x44, 0x44, 0x38, 0x00, - 0x7c, 0x54, 0x54, 0x54, 0x44, 0x00, - 0x7c, 0x14, 0x14, 0x14, 0x04, 0x00, - 0x7c, 0x44, 0x44, 0x54, 0x74, 0x00, - 0x7c, 0x10, 0x10, 0x10, 0x7c, 0x00, - 0x44, 0x44, 0x7c, 0x44, 0x44, 0x00, - 0x60, 0x40, 0x40, 0x44, 0x7c, 0x00, - 0x7c, 0x10, 0x10, 0x28, 0x44, 0x00, - 0x7c, 0x40, 0x40, 0x40, 0x40, 0x00, - 0x7c, 0x08, 0x10, 0x08, 0x7c, 0x00, - 0x7c, 0x08, 0x10, 0x20, 0x7c, 0x00, - 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, - 0x7c, 0x14, 0x14, 0x14, 0x08, 0x00, - 0x3c, 0x24, 0x64, 0x24, 0x3c, 0x00, - 0x7c, 0x14, 0x14, 0x14, 0x68, 0x00, - 0x5c, 0x54, 0x54, 0x54, 0x74, 0x00, - 0x04, 0x04, 0x7c, 0x04, 0x04, 0x00, - 0x7c, 0x40, 0x40, 0x40, 0x7c, 0x00, - 0x0c, 0x30, 0x40, 0x30, 0x0c, 0x00, - 0x3c, 0x40, 0x30, 0x40, 0x3c, 0x00, - 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, - 0x0c, 0x10, 0x60, 0x10, 0x0c, 0x00, - 0x44, 0x64, 0x54, 0x4c, 0x44, 0x00, - 0x10, 0x7c, 0x44, 0x00, 0x00, 0x00, - 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x44, 0x7c, 0x10, 0x00, 0x00, 0x00, - 0x02, 0x01, 0x02, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -# lif defined(OLED_FONT_AZTECH) - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x2e, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x0a, 0x1e, 0x0a, 0x1e, 0x00, - 0x00, 0x0e, 0x2a, 0x6b, 0x2a, 0x3a, - 0x00, 0x06, 0x06, 0x26, 0x18, 0x06, - 0x38, 0x3e, 0x2a, 0x2a, 0x28, 0x38, - 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x3e, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x22, 0x3e, 0x00, 0x00, 0x00, - 0x00, 0x0e, 0x0e, 0x0e, 0x04, 0x00, - 0x00, 0x08, 0x1c, 0x08, 0x00, 0x00, - 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x08, 0x08, 0x00, 0x00, - 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x20, 0x18, 0x06, 0x00, 0x00, - 0x00, 0x3e, 0x22, 0x2a, 0x22, 0x3e, - 0x02, 0x3e, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x38, 0x28, 0x2a, 0x2a, 0x2e, - 0x00, 0x22, 0x2a, 0x2e, 0x38, 0x00, - 0x00, 0x0e, 0x08, 0x08, 0x3e, 0x08, - 0x00, 0x2e, 0x2a, 0x2a, 0x28, 0x38, - 0x00, 0x3e, 0x2a, 0x2a, 0x28, 0x38, - 0x00, 0x06, 0x02, 0x02, 0x0a, 0x3e, - 0x00, 0x38, 0x2e, 0x2a, 0x2e, 0x38, - 0x00, 0x0e, 0x0a, 0x2a, 0x2a, 0x3e, - 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x14, 0x22, 0x00, 0x00, - 0x00, 0x14, 0x14, 0x14, 0x14, 0x00, - 0x00, 0x22, 0x14, 0x08, 0x00, 0x00, - 0x00, 0x06, 0x02, 0x2a, 0x0a, 0x06, - 0x00, 0x3e, 0x02, 0x3a, 0x2a, 0x0a, - 0x22, 0x3e, 0x02, 0x0a, 0x0a, 0x3e, - 0x00, 0x3e, 0x22, 0x2a, 0x2e, 0x38, - 0x00, 0x3e, 0x22, 0x22, 0x20, 0x30, - 0x00, 0x3e, 0x22, 0x22, 0x22, 0x3c, - 0x00, 0x3e, 0x2a, 0x22, 0x20, 0x30, - 0x00, 0x3e, 0x0a, 0x0a, 0x06, 0x02, - 0x00, 0x3e, 0x22, 0x2a, 0x28, 0x38, - 0x00, 0x3e, 0x08, 0x08, 0x08, 0x3e, - 0x00, 0x22, 0x3e, 0x22, 0x00, 0x00, - 0x00, 0x30, 0x20, 0x20, 0x22, 0x3e, - 0x00, 0x3e, 0x08, 0x08, 0x0e, 0x38, - 0x00, 0x3e, 0x20, 0x20, 0x20, 0x30, - 0x00, 0x3e, 0x02, 0x3e, 0x20, 0x3e, - 0x3e, 0x3e, 0x02, 0x3e, 0x20, 0x3e, - 0x00, 0x3e, 0x22, 0x22, 0x22, 0x3e, - 0x00, 0x3e, 0x02, 0x0a, 0x0a, 0x0e, - 0x00, 0x3e, 0x22, 0x22, 0x22, 0x3e, - 0x00, 0x3e, 0x02, 0x0a, 0x0e, 0x38, - 0x00, 0x0e, 0x0a, 0x2a, 0x2a, 0x3a, - 0x00, 0x06, 0x02, 0x3e, 0x02, 0x06, - 0x00, 0x3e, 0x20, 0x20, 0x20, 0x3e, - 0x00, 0x3e, 0x20, 0x20, 0x3e, 0x00, - 0x00, 0x3e, 0x20, 0x3e, 0x02, 0x3e, - 0x3e, 0x3a, 0x0e, 0x08, 0x0e, 0x3a, - 0x00, 0x0e, 0x08, 0x08, 0x28, 0x3e, - 0x00, 0x3a, 0x2a, 0x2a, 0x0a, 0x0e, - 0x00, 0x3e, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x0c, 0x30, 0x00, 0x00, - 0x22, 0x3e, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x20, 0x20, 0x20, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x38, 0x28, 0x28, 0x08, 0x38, - 0x00, 0x3e, 0x20, 0x28, 0x28, 0x38, - 0x00, 0x38, 0x28, 0x28, 0x20, 0x30, - 0x00, 0x38, 0x28, 0x28, 0x20, 0x3e, - 0x00, 0xf8, 0x88, 0x28, 0x28, 0x38, - 0x00, 0xf8, 0x28, 0x28, 0x18, 0x08, - 0x00, 0x38, 0x28, 0xa8, 0x88, 0xf8, - 0x00, 0x3c, 0x08, 0x08, 0x08, 0x38, - 0x00, 0x3a, 0x00, 0x00, 0x00, 0x00, - 0x80, 0xfa, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x3e, 0x08, 0x08, 0x38, 0x2c, - 0x00, 0x3e, 0x20, 0x00, 0x00, 0x00, - 0x00, 0x38, 0x08, 0x38, 0x20, 0x38, - 0x38, 0x38, 0x08, 0x38, 0x20, 0x38, - 0x00, 0x38, 0x28, 0x28, 0x28, 0x38, - 0x00, 0xf8, 0x08, 0x28, 0x28, 0x38, - 0x00, 0x38, 0x28, 0x28, 0x08, 0xf8, - 0x00, 0x38, 0x08, 0x08, 0x18, 0x08, - 0x00, 0x38, 0x28, 0xa8, 0xa8, 0xe8, - 0x00, 0x3e, 0x28, 0x28, 0x20, 0x30, - 0x00, 0x38, 0x20, 0x20, 0x20, 0x38, - 0x00, 0x38, 0x20, 0x38, 0x00, 0x00, - 0x00, 0x38, 0x20, 0x38, 0x08, 0x38, - 0x38, 0x28, 0x38, 0x10, 0x38, 0x28, - 0x00, 0x38, 0x20, 0xa0, 0xa0, 0xf8, - 0x00, 0xe8, 0xa8, 0xa8, 0x28, 0x38, - 0x08, 0x3e, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, - 0x22, 0x3e, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -# elif defined(OLED_FONT_BMPLAIN) - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x0a, 0x1f, 0x0a, 0x1f, 0x0a, 0x00, - 0x2e, 0x2a, 0x6b, 0x2a, 0x3a, 0x00, - 0x0e, 0x2a, 0x1e, 0x08, 0x3c, 0x2a, - 0x3e, 0x2a, 0x2a, 0x22, 0x38, 0x08, - 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x22, 0x00, 0x00, 0x00, 0x00, - 0x22, 0x1c, 0x00, 0x00, 0x00, 0x00, - 0x15, 0x0e, 0x04, 0x0e, 0x15, 0x00, - 0x08, 0x08, 0x3e, 0x08, 0x08, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, - 0x3e, 0x22, 0x2a, 0x22, 0x3e, 0x00, - 0x04, 0x3e, 0x00, 0x00, 0x00, 0x00, - 0x3a, 0x2a, 0x2a, 0x2a, 0x2e, 0x00, - 0x2a, 0x2a, 0x2a, 0x2a, 0x3e, 0x00, - 0x0e, 0x08, 0x08, 0x08, 0x3e, 0x00, - 0x2e, 0x2a, 0x2a, 0x2a, 0x3a, 0x00, - 0x3e, 0x2a, 0x2a, 0x2a, 0x3a, 0x00, - 0x02, 0x02, 0x02, 0x02, 0x3e, 0x00, - 0x3e, 0x2a, 0x2a, 0x2a, 0x3e, 0x00, - 0x2e, 0x2a, 0x2a, 0x2a, 0x3e, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x08, 0x14, 0x22, 0x00, 0x00, 0x00, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, - 0x22, 0x14, 0x08, 0x00, 0x00, 0x00, - 0x06, 0x02, 0x2a, 0x0a, 0x0e, 0x00, - 0x3e, 0x02, 0x3a, 0x2a, 0x3e, 0x00, - 0x3e, 0x12, 0x12, 0x12, 0x3e, 0x00, - 0x3e, 0x2a, 0x2a, 0x2a, 0x36, 0x00, - 0x3e, 0x22, 0x22, 0x22, 0x22, 0x00, - 0x3e, 0x22, 0x22, 0x22, 0x1c, 0x00, - 0x3e, 0x2a, 0x2a, 0x2a, 0x22, 0x00, - 0x3e, 0x0a, 0x0a, 0x0a, 0x02, 0x00, - 0x3e, 0x22, 0x2a, 0x2a, 0x3a, 0x00, - 0x3e, 0x08, 0x08, 0x08, 0x3e, 0x00, - 0x22, 0x3e, 0x22, 0x00, 0x00, 0x00, - 0x38, 0x20, 0x20, 0x20, 0x3e, 0x00, - 0x3e, 0x08, 0x08, 0x14, 0x22, 0x00, - 0x3e, 0x20, 0x20, 0x20, 0x20, 0x00, - 0x3e, 0x04, 0x38, 0x04, 0x3e, 0x00, - 0x3e, 0x04, 0x08, 0x10, 0x3e, 0x00, - 0x3e, 0x22, 0x22, 0x22, 0x3e, 0x00, - 0x3e, 0x0a, 0x0a, 0x0a, 0x0e, 0x00, - 0x3e, 0x22, 0x72, 0x22, 0x3e, 0x00, - 0x3e, 0x0a, 0x0a, 0x1a, 0x2e, 0x00, - 0x2e, 0x2a, 0x2a, 0x2a, 0x3a, 0x00, - 0x02, 0x02, 0x3e, 0x02, 0x02, 0x00, - 0x1e, 0x20, 0x20, 0x20, 0x1e, 0x00, - 0x0e, 0x10, 0x20, 0x10, 0x0e, 0x00, - 0x3e, 0x10, 0x0e, 0x10, 0x3e, 0x00, - 0x22, 0x14, 0x08, 0x14, 0x22, 0x00, - 0x02, 0x04, 0x38, 0x04, 0x02, 0x00, - 0x3a, 0x2a, 0x2a, 0x2a, 0x2e, 0x00, - 0x3e, 0x22, 0x00, 0x00, 0x00, 0x00, - 0x3f, 0x21, 0x3f, 0x00, 0x00, 0x00, - 0x22, 0x3e, 0x00, 0x00, 0x00, 0x00, - 0x0c, 0x1e, 0x3c, 0x1e, 0x0c, 0x00, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, - 0x1c, 0x3e, 0x3e, 0x3e, 0x1c, 0x00, - 0x3c, 0x24, 0x24, 0x24, 0x3c, 0x20, - 0x3e, 0x24, 0x24, 0x24, 0x3c, 0x00, - 0x3c, 0x24, 0x24, 0x24, 0x24, 0x00, - 0x3c, 0x24, 0x24, 0x24, 0x3e, 0x00, - 0x3c, 0x24, 0x34, 0x2c, 0x24, 0x00, - 0x08, 0x3e, 0x0a, 0x0a, 0x00, 0x00, - 0x1c, 0x54, 0x54, 0x54, 0x7c, 0x00, - 0x3e, 0x04, 0x04, 0x04, 0x3c, 0x00, - 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x7a, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3e, 0x08, 0x14, 0x22, 0x00, 0x00, - 0x02, 0x3e, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x04, 0x3c, 0x04, 0x3c, 0x00, - 0x3c, 0x04, 0x04, 0x04, 0x3c, 0x00, - 0x3c, 0x24, 0x24, 0x24, 0x3c, 0x00, - 0x7c, 0x24, 0x24, 0x24, 0x3c, 0x00, - 0x3c, 0x24, 0x24, 0x24, 0x7c, 0x00, - 0x3c, 0x04, 0x04, 0x04, 0x00, 0x00, - 0x24, 0x2c, 0x34, 0x24, 0x00, 0x00, - 0x04, 0x3e, 0x24, 0x24, 0x00, 0x00, - 0x3c, 0x20, 0x20, 0x20, 0x3c, 0x00, - 0x0c, 0x10, 0x20, 0x10, 0x0c, 0x00, - 0x3c, 0x20, 0x3c, 0x20, 0x3c, 0x00, - 0x24, 0x24, 0x18, 0x24, 0x24, 0x00, - 0x1c, 0x50, 0x50, 0x50, 0x7c, 0x00, - 0x24, 0x34, 0x2c, 0x24, 0x00, 0x00, - 0x08, 0x3e, 0x22, 0x00, 0x00, 0x00, - 0x1c, 0x22, 0x22, 0x22, 0x1c, 0x00, - 0x22, 0x3e, 0x08, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -# elif defined(OLED_FONT_CRACKERS) - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x5E, 0x06, 0x06, 0x00, 0x00, 0x00, - 0x1E, 0x00, 0x00, 0x1E, 0x00, 0x00, - 0x20, 0x7C, 0x38, 0x38, 0x7C, 0x08, - 0x48, 0xFE, 0x64, 0x64, 0x00, 0x00, - 0x64, 0x60, 0x60, 0x18, 0x0C, 0x0C, - 0x74, 0x4A, 0x4A, 0x7E, 0x48, 0x00, - 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3C, 0x7E, 0x7E, 0x42, 0x00, 0x00, - 0x42, 0x7E, 0x7E, 0x3C, 0x00, 0x00, - 0x04, 0x0C, 0x04, 0x06, 0x0C, 0x04, - 0x10, 0x3C, 0x3C, 0x3C, 0x10, 0x00, - 0x00, 0x60, 0xE0, 0x00, 0x00, 0x00, - 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, - 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, - 0x60, 0x78, 0x78, 0x1E, 0x06, 0x00, - 0x3C, 0x3C, 0x7E, 0x42, 0x7E, 0x7E, - 0x04, 0x7E, 0x7E, 0x7E, 0x00, 0x00, - 0x76, 0x7A, 0x7E, 0x7E, 0x4C, 0x00, - 0x4A, 0x7E, 0x7E, 0x7C, 0x00, 0x00, - 0x0E, 0x08, 0x7E, 0x7E, 0x7E, 0x00, - 0x4E, 0x4E, 0x4E, 0x7A, 0x1A, 0x00, - 0x3C, 0x7E, 0x7E, 0x4A, 0x7A, 0x00, - 0x02, 0x02, 0x0A, 0x7E, 0x7E, 0x7E, - 0x7E, 0x7E, 0x7E, 0x4A, 0x7E, 0x00, - 0x0C, 0x4A, 0x7E, 0x7E, 0x3C, 0x00, - 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, - 0x66, 0xE6, 0x00, 0x00, 0x00, 0x00, - 0x08, 0x3C, 0x7E, 0x7E, 0x62, 0x00, - 0x14, 0x14, 0x14, 0x00, 0x00, 0x00, - 0x62, 0x7E, 0x7E, 0x3C, 0x08, 0x00, - 0x02, 0x4A, 0x0E, 0x0E, 0x0C, 0x00, - 0x3C, 0x7E, 0x7E, 0x4A, 0x72, 0x30, - 0x7A, 0x4A, 0x7E, 0x7E, 0x7C, 0x00, - 0x7E, 0x7E, 0x7E, 0x4A, 0x24, 0x00, - 0x3C, 0x7E, 0x7E, 0x7E, 0x46, 0x00, - 0x7E, 0x7E, 0x7E, 0x62, 0x3C, 0x00, - 0x7E, 0x7E, 0x7E, 0x4A, 0x00, 0x00, - 0x7E, 0x7E, 0x7E, 0x0A, 0x00, 0x00, - 0x3C, 0x7E, 0x7E, 0x42, 0x62, 0x00, - 0x7E, 0x7E, 0x7E, 0x18, 0x7E, 0x00, - 0x7E, 0x7E, 0x7E, 0x00, 0x00, 0x00, - 0x40, 0x7E, 0x7E, 0x7E, 0x00, 0x00, - 0x7E, 0x7E, 0x7E, 0x3C, 0x66, 0x00, - 0x7E, 0x7E, 0x7E, 0x40, 0x00, 0x00, - 0x7E, 0x3E, 0x3E, 0x7C, 0x3E, 0x3E, - 0x7E, 0x3E, 0x7E, 0x7C, 0x7E, 0x00, - 0x3C, 0x3C, 0x7E, 0x62, 0x7E, 0x7E, - 0x7E, 0x7E, 0x7E, 0x22, 0x0C, 0x00, - 0x3C, 0x7E, 0x7E, 0x62, 0x7E, 0x7C, - 0x7E, 0x7E, 0x7E, 0x0A, 0x64, 0x00, - 0x4C, 0x4E, 0x4E, 0x7A, 0x1A, 0x00, - 0x02, 0x7E, 0x7E, 0x7E, 0x02, 0x00, - 0x7E, 0x60, 0x7E, 0x7E, 0x7E, 0x00, - 0x3E, 0x60, 0x7E, 0x7E, 0x3E, 0x00, - 0x7E, 0x7C, 0x7C, 0x3E, 0x7C, 0x7C, - 0x46, 0x7E, 0x08, 0x7E, 0x62, 0x62, - 0x5E, 0x5E, 0x5E, 0x70, 0x3E, 0x00, - 0x66, 0x7A, 0x7A, 0x5E, 0x66, 0x00, - 0x7E, 0x7E, 0x7E, 0x42, 0x00, 0x00, - 0x06, 0x1E, 0x1E, 0x78, 0x60, 0x00, - 0x42, 0x7E, 0x7E, 0x7E, 0x00, 0x00, - 0x0C, 0x06, 0x0C, 0x00, 0x00, 0x00, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, - 0x02, 0x06, 0x06, 0x04, 0x00, 0x00, - 0x78, 0x24, 0x7C, 0x7C, 0x78, 0x00, - 0x7C, 0x7C, 0x7C, 0x48, 0x20, 0x00, - 0x18, 0x7C, 0x7C, 0x7C, 0x4C, 0x00, - 0x20, 0x48, 0x7C, 0x7C, 0x7C, 0x00, - 0x18, 0x7C, 0x7C, 0x74, 0x4C, 0x00, - 0x78, 0x7C, 0x7C, 0x24, 0x00, 0x00, - 0x18, 0x7C, 0x7C, 0x44, 0x74, 0x00, - 0x7C, 0x7C, 0x7C, 0x08, 0x60, 0x00, - 0x7C, 0x7C, 0x7C, 0x00, 0x00, 0x00, - 0x40, 0x7C, 0x7C, 0x7C, 0x00, 0x00, - 0x7C, 0x7C, 0x7C, 0x20, 0x48, 0x00, - 0x7C, 0x7C, 0x7C, 0x40, 0x00, 0x00, - 0x7C, 0x3C, 0x3C, 0x78, 0x3C, 0x3C, - 0x7C, 0x7C, 0x7C, 0x04, 0x78, 0x00, - 0x18, 0x18, 0x7C, 0x44, 0x7C, 0x7C, - 0x7C, 0x7C, 0x7C, 0x24, 0x08, 0x00, - 0x18, 0x18, 0x7C, 0x44, 0x7C, 0x7C, - 0x7C, 0x7C, 0x7C, 0x04, 0x00, 0x00, - 0x5C, 0x7C, 0x7C, 0x74, 0x00, 0x00, - 0x08, 0x7C, 0x7C, 0x7C, 0x48, 0x00, - 0x7C, 0x60, 0x7C, 0x7C, 0x7C, 0x00, - 0x3C, 0x60, 0x7C, 0x7C, 0x3C, 0x00, - 0x7C, 0x78, 0x78, 0x3C, 0x78, 0x78, - 0x4C, 0x3C, 0x3C, 0x78, 0x64, 0x00, - 0x4C, 0x4C, 0x4C, 0x78, 0x3C, 0x00, - 0x5C, 0x74, 0x44, 0x5C, 0x74, 0x00, - 0x24, 0x7E, 0x42, 0x42, 0x00, 0x00, - 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x42, 0x7E, 0x24, 0x00, 0x00, 0x00, - 0x04, 0x06, 0x06, 0x02, 0x04, 0x06, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -# elif defined(OLED_FONT_EIN) - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, - 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, - 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, - 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00, - 0x23, 0x13, 0x08, 0x64, 0x62, 0x00, - 0x36, 0x49, 0x56, 0x20, 0x50, 0x00, - 0x00, 0x08, 0x07, 0x03, 0x00, 0x00, - 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, - 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, - 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, - 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, - 0x00, 0x80, 0x70, 0x30, 0x00, 0x00, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, - 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, - 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, - 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, - 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00, - 0x72, 0x49, 0x49, 0x49, 0x46, 0x00, - 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00, - 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00, - 0x27, 0x45, 0x45, 0x45, 0x39, 0x00, - 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00, - 0x41, 0x21, 0x11, 0x09, 0x07, 0x00, - 0x36, 0x49, 0x49, 0x49, 0x36, 0x00, - 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00, - 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x40, 0x34, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x14, 0x22, 0x41, 0x00, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, - 0x00, 0x41, 0x22, 0x14, 0x08, 0x00, - 0x02, 0x01, 0x59, 0x09, 0x06, 0x00, - 0x00, 0x41, 0x5D, 0x59, 0x4E, 0x00, - 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00, - 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00, - 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00, - 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00, - 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00, - 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00, - 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00, - 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, - 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, - 0x20, 0x40, 0x40, 0x3F, 0x00, 0x00, - 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00, - 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, - 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00, - 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, - 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00, - 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00, - 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00, - 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00, - 0x26, 0x49, 0x49, 0x49, 0x32, 0x00, - 0x01, 0x01, 0x7F, 0x01, 0x01, 0x00, - 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00, - 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, - 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00, - 0x63, 0x14, 0x08, 0x14, 0x63, 0x00, - 0x03, 0x04, 0x78, 0x04, 0x03, 0x00, - 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, - 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00, - 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, - 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00, - 0x04, 0x02, 0x01, 0x02, 0x04, 0x00, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, - 0x00, 0x03, 0x07, 0x08, 0x00, 0x00, - 0x78, 0x14, 0x14, 0x78, 0x00, 0x00, - 0x7C, 0x54, 0x54, 0x28, 0x00, 0x00, - 0x38, 0x44, 0x44, 0x28, 0x00, 0x00, - 0x7C, 0x44, 0x44, 0x38, 0x00, 0x00, - 0x7C, 0x54, 0x54, 0x44, 0x00, 0x00, - 0x7C, 0x14, 0x14, 0x04, 0x00, 0x00, - 0x38, 0x44, 0x54, 0x34, 0x00, 0x00, - 0x7C, 0x10, 0x10, 0x7C, 0x00, 0x00, - 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x40, 0x40, 0x3C, 0x00, 0x00, - 0x7C, 0x10, 0x28, 0x44, 0x00, 0x00, - 0x7C, 0x40, 0x40, 0x40, 0x00, 0x00, - 0x7C, 0x08, 0x70, 0x08, 0x7C, 0x00, - 0x7C, 0x08, 0x10, 0x7C, 0x00, 0x00, - 0x38, 0x44, 0x44, 0x38, 0x00, 0x00, - 0x7C, 0x14, 0x14, 0x08, 0x00, 0x00, - 0x38, 0x44, 0x24, 0x58, 0x00, 0x00, - 0x7C, 0x14, 0x34, 0x48, 0x00, 0x00, - 0x48, 0x54, 0x54, 0x24, 0x00, 0x00, - 0x04, 0x7C, 0x04, 0x00, 0x00, 0x00, - 0x3C, 0x40, 0x40, 0x3C, 0x00, 0x00, - 0x3C, 0x40, 0x20, 0x1C, 0x00, 0x00, - 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00, - 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, - 0x0C, 0x10, 0x70, 0x10, 0x0C, 0x00, - 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, - 0x00, 0x08, 0x36, 0x41, 0x00, 0x00, - 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, - 0x00, 0x41, 0x36, 0x08, 0x00, 0x00, - 0x02, 0x01, 0x02, 0x04, 0x02, 0x00, - 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00, -# elif defined(OLED_FONT_HISKYF21) - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x5C, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, - 0x28, 0x7C, 0x28, 0x7C, 0x28, 0x00, - 0x48, 0x54, 0x54, 0xFE, 0x54, 0x54, - 0x44, 0x20, 0x10, 0x08, 0x44, 0x00, - 0x28, 0x54, 0x54, 0x54, 0x74, 0x10, - 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x78, 0x84, 0x00, 0x00, 0x00, 0x00, - 0x84, 0x78, 0x00, 0x00, 0x00, 0x00, - 0x48, 0x30, 0x30, 0x48, 0x00, 0x00, - 0x10, 0x38, 0x10, 0x00, 0x00, 0x00, - 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, - 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x60, 0x10, 0x0C, 0x00, 0x00, 0x00, - 0x38, 0x44, 0x44, 0x44, 0x44, 0x38, - 0x08, 0x7C, 0x00, 0x00, 0x00, 0x00, - 0x64, 0x54, 0x54, 0x54, 0x48, 0x00, - 0x44, 0x54, 0x54, 0x54, 0x28, 0x00, - 0x1C, 0x10, 0x10, 0x10, 0x7C, 0x00, - 0x4C, 0x54, 0x54, 0x54, 0x24, 0x00, - 0x38, 0x54, 0x54, 0x54, 0x54, 0x20, - 0x44, 0x24, 0x14, 0x0C, 0x00, 0x00, - 0x28, 0x54, 0x54, 0x54, 0x54, 0x28, - 0x08, 0x54, 0x54, 0x54, 0x54, 0x38, - 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0x28, 0x44, 0x00, 0x00, 0x00, - 0x28, 0x28, 0x28, 0x28, 0x00, 0x00, - 0x44, 0x28, 0x10, 0x00, 0x00, 0x00, - 0x04, 0x54, 0x14, 0x14, 0x08, 0x00, - 0x38, 0x44, 0x5C, 0x54, 0x48, 0x00, - 0x60, 0x18, 0x14, 0x14, 0x18, 0x60, - 0x7C, 0x54, 0x54, 0x54, 0x58, 0x30, - 0x38, 0x44, 0x44, 0x44, 0x40, 0x00, - 0x7C, 0x44, 0x44, 0x44, 0x38, 0x00, - 0x7C, 0x54, 0x54, 0x54, 0x54, 0x40, - 0x7C, 0x14, 0x14, 0x14, 0x10, 0x00, - 0x38, 0x44, 0x44, 0x44, 0x70, 0x10, - 0x7C, 0x10, 0x10, 0x10, 0x10, 0x7C, - 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x40, 0x40, 0x40, 0x40, 0x3C, - 0x7C, 0x10, 0x10, 0x28, 0x44, 0x00, - 0x7C, 0x40, 0x40, 0x40, 0x00, 0x00, - 0x7C, 0x08, 0x10, 0x60, 0x10, 0x08, - 0x7C, 0x08, 0x10, 0x20, 0x7C, 0x00, - 0x38, 0x44, 0x44, 0x44, 0x44, 0x38, - 0x7C, 0x24, 0x24, 0x24, 0x18, 0x00, - 0x38, 0x44, 0x64, 0x44, 0x38, 0x00, - 0x7C, 0x14, 0x14, 0x14, 0x68, 0x00, - 0x48, 0x54, 0x54, 0x54, 0x54, 0x20, - 0x04, 0x04, 0x7C, 0x04, 0x04, 0x00, - 0x3C, 0x40, 0x40, 0x40, 0x3C, 0x00, - 0x0C, 0x30, 0x40, 0x30, 0x0C, 0x00, - 0x0C, 0x30, 0x40, 0x20, 0x1C, 0x20, - 0x74, 0x2C, 0x10, 0x28, 0x44, 0x00, - 0x04, 0x08, 0x70, 0x08, 0x04, 0x00, - 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, - 0xFC, 0x84, 0x00, 0x00, 0x00, 0x00, - 0x0C, 0x10, 0x60, 0x00, 0x00, 0x00, - 0x84, 0xFC, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x7F, 0x41, 0x7F, 0x00, 0x00, - 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, - 0x00, 0x7F, 0x41, 0x7F, 0x00, 0x00, - 0x60, 0x18, 0x14, 0x14, 0x18, 0x60, - 0x7C, 0x54, 0x54, 0x54, 0x58, 0x30, - 0x38, 0x44, 0x44, 0x44, 0x40, 0x00, - 0x7C, 0x44, 0x44, 0x44, 0x38, 0x00, - 0x7C, 0x54, 0x54, 0x54, 0x54, 0x40, - 0x7C, 0x14, 0x14, 0x14, 0x10, 0x00, - 0x38, 0x44, 0x44, 0x44, 0x70, 0x10, - 0x7C, 0x10, 0x10, 0x10, 0x10, 0x7C, - 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x40, 0x40, 0x40, 0x40, 0x3C, - 0x7C, 0x10, 0x10, 0x28, 0x44, 0x00, - 0x7C, 0x40, 0x40, 0x40, 0x00, 0x00, - 0x7C, 0x08, 0x10, 0x60, 0x10, 0x08, - 0x7C, 0x08, 0x10, 0x20, 0x7C, 0x00, - 0x38, 0x44, 0x44, 0x44, 0x44, 0x38, - 0x7C, 0x24, 0x24, 0x24, 0x18, 0x00, - 0x38, 0x44, 0x64, 0x44, 0x38, 0x00, - 0x7C, 0x14, 0x14, 0x14, 0x68, 0x00, - 0x48, 0x54, 0x54, 0x54, 0x54, 0x20, - 0x04, 0x04, 0x7C, 0x04, 0x04, 0x00, - 0x3C, 0x40, 0x40, 0x40, 0x3C, 0x00, - 0x0C, 0x30, 0x40, 0x30, 0x0C, 0x00, - 0x0C, 0x30, 0x40, 0x20, 0x1C, 0x20, - 0x74, 0x2C, 0x10, 0x28, 0x44, 0x00, - 0x04, 0x08, 0x70, 0x08, 0x04, 0x00, - 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, - 0x00, 0x7F, 0x41, 0x7F, 0x00, 0x00, - 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x7F, 0x41, 0x7F, 0x00, 0x00, - 0x00, 0x7F, 0x41, 0x7F, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -# elif defined(OLED_FONT_SUPER_DIGG) - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x58, 0x5C, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, - 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, - 0x5C, 0xFE, 0x54, 0xFE, 0x74, 0x00, - 0x03, 0x63, 0x38, 0x0C, 0x63, 0x60, - 0x70, 0x5C, 0x54, 0x74, 0x7C, 0x50, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x70, 0x7C, 0x44, 0x00, 0x00, 0x00, - 0x44, 0x7C, 0x70, 0x00, 0x00, 0x00, - 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, - 0x10, 0x10, 0x70, 0x7C, 0x10, 0x00, - 0x40, 0xC0, 0x00, 0x00, 0x00, 0x00, - 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, - 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, - 0x70, 0x7C, 0x03, 0x00, 0x00, 0x00, - 0x7C, 0x44, 0x44, 0x44, 0x7C, 0x1C, - 0x04, 0x04, 0x7C, 0x1C, 0x00, 0x00, - 0x74, 0x74, 0x54, 0x54, 0x5C, 0x00, - 0x44, 0x54, 0x54, 0x54, 0x7C, 0x70, - 0x1C, 0x10, 0x10, 0x7C, 0x7C, 0x00, - 0x5C, 0x5C, 0x54, 0x54, 0x74, 0x00, - 0x70, 0x7C, 0x54, 0x54, 0x74, 0x00, - 0x04, 0x14, 0x14, 0x14, 0x7C, 0x70, - 0x70, 0x5C, 0x54, 0x74, 0x7C, 0x00, - 0x5C, 0x54, 0x54, 0x54, 0x7C, 0x1C, - 0x50, 0x50, 0x00, 0x00, 0x00, 0x00, - 0x50, 0xD0, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x18, 0x24, 0x42, 0x00, 0x00, - 0x28, 0x28, 0x28, 0x28, 0x00, 0x00, - 0x42, 0x24, 0x18, 0x18, 0x00, 0x00, - 0x04, 0x14, 0x54, 0x54, 0x1C, 0x1C, - 0xF8, 0x04, 0x74, 0x74, 0x54, 0x54, - 0x70, 0x7C, 0x14, 0x14, 0x3C, 0x00, - 0x7C, 0x74, 0x54, 0x54, 0x7C, 0x00, - 0x70, 0x7C, 0x44, 0x44, 0x44, 0x44, - 0x70, 0x7C, 0x44, 0x44, 0x48, 0x70, - 0x70, 0x7C, 0x54, 0x54, 0x54, 0x44, - 0x70, 0x7C, 0x14, 0x14, 0x14, 0x04, - 0x70, 0x7C, 0x44, 0x44, 0x54, 0x74, - 0x70, 0x7C, 0x10, 0x10, 0x7C, 0x00, - 0x70, 0x7C, 0x00, 0x00, 0x00, 0x00, - 0x60, 0x40, 0x40, 0x40, 0x7C, 0x70, - 0x7C, 0x70, 0x10, 0x1C, 0x70, 0x00, - 0x70, 0x7C, 0x40, 0x40, 0x40, 0x60, - 0x70, 0x7C, 0x04, 0x04, 0x7C, 0x04, - 0x70, 0x7C, 0x04, 0x04, 0x04, 0x7C, - 0x70, 0x7C, 0x44, 0x44, 0x44, 0x7C, - 0x70, 0x7C, 0x24, 0x24, 0x3C, 0x00, - 0x7C, 0x44, 0x44, 0x44, 0x7C, 0x00, - 0x7C, 0x74, 0x14, 0x14, 0x3C, 0x00, - 0x5C, 0x5C, 0x54, 0x54, 0x74, 0x00, - 0x04, 0x04, 0x7C, 0x74, 0x04, 0x00, - 0x70, 0x7C, 0x40, 0x40, 0x40, 0x7C, - 0x70, 0x7C, 0x40, 0x40, 0x20, 0x1C, - 0x70, 0x7C, 0x40, 0x40, 0x7C, 0x40, - 0x70, 0x7C, 0x10, 0x10, 0x3C, 0x00, - 0x1C, 0x10, 0x70, 0x70, 0x1C, 0x00, - 0x74, 0x74, 0x54, 0x54, 0x5C, 0x00, - 0xF0, 0xFE, 0x82, 0x00, 0x00, 0x00, - 0x03, 0x7C, 0x70, 0x00, 0x00, 0x00, - 0x82, 0xFE, 0xF0, 0x00, 0x00, 0x00, - 0x04, 0x02, 0x01, 0x06, 0x04, 0x00, - 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x70, 0x7C, 0x14, 0x14, 0x3C, 0x00, - 0x7C, 0x74, 0x54, 0x54, 0x7C, 0x00, - 0x70, 0x7C, 0x44, 0x44, 0x44, 0x44, - 0x70, 0x7C, 0x44, 0x44, 0x48, 0x70, - 0x70, 0x7C, 0x54, 0x54, 0x54, 0x44, - 0x70, 0x7C, 0x14, 0x14, 0x14, 0x04, - 0x70, 0x7C, 0x44, 0x44, 0x54, 0x74, - 0x70, 0x7C, 0x10, 0x10, 0x7C, 0x00, - 0x70, 0x7C, 0x00, 0x00, 0x00, 0x00, - 0x60, 0x40, 0x40, 0x40, 0x7C, 0x70, - 0x7C, 0x70, 0x10, 0x1C, 0x70, 0x00, - 0x70, 0x7C, 0x40, 0x40, 0x40, 0x60, - 0x70, 0x7C, 0x04, 0x04, 0x7C, 0x04, - 0x70, 0x7C, 0x04, 0x04, 0x04, 0x7C, - 0x70, 0x7C, 0x44, 0x44, 0x44, 0x7C, - 0x70, 0x7C, 0x24, 0x24, 0x3C, 0x00, - 0x7C, 0x44, 0x44, 0x44, 0x7C, 0x00, - 0x7C, 0x74, 0x14, 0x14, 0x3C, 0x00, - 0x5C, 0x5C, 0x54, 0x54, 0x74, 0x00, - 0x04, 0x04, 0x7C, 0x74, 0x04, 0x00, - 0x70, 0x7C, 0x40, 0x40, 0x40, 0x7C, - 0x70, 0x7C, 0x40, 0x40, 0x20, 0x1C, - 0x70, 0x7C, 0x40, 0x40, 0x7C, 0x40, - 0x70, 0x7C, 0x10, 0x10, 0x3C, 0x00, - 0x1C, 0x10, 0x70, 0x70, 0x1C, 0x00, - 0x74, 0x74, 0x54, 0x54, 0x5C, 0x00, - 0x10, 0xFE, 0xC2, 0x00, 0x00, 0x00, - 0x00, 0x44, 0x77, 0x00, 0x00, 0x00, - 0xC2, 0xFE, 0x10, 0x00, 0x00, 0x00, - 0x02, 0x01, 0x03, 0x04, 0x06, 0x02, - 0x3C, 0x22, 0x21, 0x22, 0x3C, 0x00, -#elif defined (OLED_FONT_ZXPIX) - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x12, 0x3F, 0x12, 0x12, 0x3F, 0x12, - 0x2E, 0x2A, 0x7F, 0x2A, 0x3A, 0x00, - 0x23, 0x13, 0x08, 0x04, 0x32, 0x31, - 0x10, 0x2A, 0x25, 0x2A, 0x10, 0x20, - 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x1E, 0x21, 0x00, 0x00, 0x00, 0x00, - 0x21, 0x1E, 0x00, 0x00, 0x00, 0x00, - 0x08, 0x2A, 0x1C, 0x2A, 0x08, 0x08, - 0x08, 0x08, 0x3E, 0x08, 0x08, 0x08, - 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, - 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, - 0x1E, 0x31, 0x29, 0x25, 0x23, 0x1E, - 0x22, 0x21, 0x3F, 0x20, 0x20, 0x20, - 0x32, 0x29, 0x29, 0x29, 0x29, 0x26, - 0x12, 0x21, 0x21, 0x25, 0x25, 0x1A, - 0x18, 0x14, 0x12, 0x3F, 0x10, 0x10, - 0x17, 0x25, 0x25, 0x25, 0x25, 0x19, - 0x1E, 0x25, 0x25, 0x25, 0x25, 0x18, - 0x01, 0x01, 0x31, 0x09, 0x05, 0x03, - 0x1A, 0x25, 0x25, 0x25, 0x25, 0x1A, - 0x06, 0x29, 0x29, 0x29, 0x29, 0x1E, - 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x80, 0x64, 0x00, 0x00, 0x00, 0x00, - 0x08, 0x14, 0x22, 0x00, 0x00, 0x00, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, - 0x22, 0x14, 0x08, 0x00, 0x00, 0x00, - 0x02, 0x01, 0x01, 0x29, 0x05, 0x02, - 0x1E, 0x21, 0x2D, 0x2B, 0x2D, 0x0E, - 0x3E, 0x09, 0x09, 0x09, 0x09, 0x3E, - 0x3F, 0x25, 0x25, 0x25, 0x25, 0x1A, - 0x1E, 0x21, 0x21, 0x21, 0x21, 0x12, - 0x3F, 0x21, 0x21, 0x21, 0x12, 0x0C, - 0x3F, 0x25, 0x25, 0x25, 0x25, 0x21, - 0x3F, 0x05, 0x05, 0x05, 0x05, 0x01, - 0x1E, 0x21, 0x21, 0x21, 0x29, 0x1A, - 0x3F, 0x04, 0x04, 0x04, 0x04, 0x3F, - 0x21, 0x21, 0x3F, 0x21, 0x21, 0x21, - 0x10, 0x20, 0x20, 0x20, 0x20, 0x1F, - 0x3F, 0x04, 0x0C, 0x0A, 0x11, 0x20, - 0x3F, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x3F, 0x02, 0x04, 0x04, 0x02, 0x3F, - 0x3F, 0x02, 0x04, 0x08, 0x10, 0x3F, - 0x1E, 0x21, 0x21, 0x21, 0x21, 0x1E, - 0x3F, 0x09, 0x09, 0x09, 0x09, 0x06, - 0x1E, 0x21, 0x29, 0x31, 0x21, 0x1E, - 0x3F, 0x09, 0x09, 0x09, 0x19, 0x26, - 0x12, 0x25, 0x25, 0x25, 0x25, 0x18, - 0x01, 0x01, 0x01, 0x3F, 0x01, 0x01, - 0x1F, 0x20, 0x20, 0x20, 0x20, 0x1F, - 0x0F, 0x10, 0x20, 0x20, 0x10, 0x0F, - 0x1F, 0x20, 0x10, 0x10, 0x20, 0x1F, - 0x21, 0x12, 0x0C, 0x0C, 0x12, 0x21, - 0x01, 0x02, 0x0C, 0x38, 0x04, 0x02, - 0x21, 0x31, 0x29, 0x25, 0x23, 0x21, - 0x3F, 0x21, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, - 0x21, 0x3F, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x02, 0x3F, 0x02, 0x04, 0x00, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, - 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x10, 0x30, 0x2A, 0x2A, 0x3C, 0x00, - 0x3F, 0x24, 0x24, 0x24, 0x18, 0x00, - 0x0C, 0x14, 0x22, 0x22, 0x00, 0x00, - 0x18, 0x24, 0x24, 0x24, 0x3F, 0x00, - 0x1C, 0x2C, 0x2A, 0x2A, 0x24, 0x00, - 0x3E, 0x05, 0x01, 0x00, 0x00, 0x00, - 0x18, 0x28, 0xA4, 0xA4, 0x7C, 0x00, - 0x3F, 0x04, 0x04, 0x0C, 0x30, 0x00, - 0x24, 0x3D, 0x20, 0x00, 0x00, 0x00, - 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00, - 0x3F, 0x0C, 0x12, 0x20, 0x00, 0x00, - 0x1F, 0x20, 0x20, 0x00, 0x00, 0x00, - 0x3E, 0x02, 0x3C, 0x02, 0x3C, 0x00, - 0x3E, 0x02, 0x02, 0x02, 0x3C, 0x00, - 0x0C, 0x14, 0x22, 0x32, 0x0C, 0x00, - 0xFC, 0x24, 0x24, 0x24, 0x18, 0x00, - 0x18, 0x24, 0x24, 0x24, 0xFC, 0x80, - 0x3C, 0x04, 0x02, 0x02, 0x00, 0x00, - 0x24, 0x2C, 0x2A, 0x2A, 0x10, 0x00, - 0x02, 0x1F, 0x22, 0x20, 0x00, 0x00, - 0x1E, 0x20, 0x20, 0x20, 0x1E, 0x00, - 0x06, 0x18, 0x20, 0x18, 0x06, 0x00, - 0x1E, 0x30, 0x1C, 0x30, 0x0E, 0x00, - 0x22, 0x14, 0x08, 0x14, 0x22, 0x00, - 0x0C, 0x10, 0xA0, 0xA0, 0x7C, 0x00, - 0x22, 0x32, 0x2A, 0x26, 0x22, 0x22, - 0x0C, 0x3F, 0x21, 0x00, 0x00, 0x00, - 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x21, 0x3F, 0x0C, 0x00, 0x00, 0x00, - 0x02, 0x01, 0x02, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -# else // default font - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, - 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, - 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, - 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00, - 0x23, 0x13, 0x08, 0x64, 0x62, 0x00, - 0x36, 0x49, 0x56, 0x20, 0x50, 0x00, - 0x00, 0x08, 0x07, 0x03, 0x00, 0x00, - 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, - 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, - 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, - 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, - 0x00, 0x80, 0x70, 0x30, 0x00, 0x00, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, - 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, - 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, - 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, - 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00, - 0x72, 0x49, 0x49, 0x49, 0x46, 0x00, - 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00, - 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00, - 0x27, 0x45, 0x45, 0x45, 0x39, 0x00, - 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00, - 0x41, 0x21, 0x11, 0x09, 0x07, 0x00, - 0x36, 0x49, 0x49, 0x49, 0x36, 0x00, - 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00, - 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x40, 0x34, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x14, 0x22, 0x41, 0x00, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, - 0x00, 0x41, 0x22, 0x14, 0x08, 0x00, - 0x02, 0x01, 0x59, 0x09, 0x06, 0x00, - 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00, - 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00, - 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00, - 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00, - 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00, - 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00, - 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00, - 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00, - 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, - 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00, - 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00, - 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00, - 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, - 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00, - 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, - 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00, - 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00, - 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00, - 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00, - 0x26, 0x49, 0x49, 0x49, 0x32, 0x00, - 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00, - 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00, - 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, - 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00, - 0x63, 0x14, 0x08, 0x14, 0x63, 0x00, - 0x03, 0x04, 0x78, 0x04, 0x03, 0x00, - 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, - 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00, - 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, - 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00, - 0x04, 0x02, 0x01, 0x02, 0x04, 0x00, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, - 0x00, 0x03, 0x07, 0x08, 0x00, 0x00, - 0x20, 0x54, 0x54, 0x78, 0x40, 0x00, - 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00, - 0x38, 0x44, 0x44, 0x44, 0x28, 0x00, - 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00, - 0x38, 0x54, 0x54, 0x54, 0x18, 0x00, - 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00, - 0x18, 0xA4, 0xA4, 0x9C, 0x78, 0x00, - 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00, - 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00, - 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00, - 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00, - 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00, - 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00, - 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00, - 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, - 0xFC, 0x18, 0x24, 0x24, 0x18, 0x00, - 0x18, 0x24, 0x24, 0x18, 0xFC, 0x00, - 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00, - 0x48, 0x54, 0x54, 0x54, 0x24, 0x00, - 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00, - 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00, - 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00, - 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00, - 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, - 0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00, - 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, - 0x00, 0x08, 0x36, 0x41, 0x00, 0x00, - 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, - 0x00, 0x41, 0x36, 0x08, 0x00, 0x00, - 0x02, 0x01, 0x02, 0x04, 0x02, 0x00, - 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00, -# endif - -// top Logo section - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - -// First icon section - 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC, - 0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00, - 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E, - 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00, - 0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B, - 0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00, - 0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE, - 0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00, - 0x3E, 0x4A, 0x4F, 0x4A, 0x3E, 0x00, - 0x18, 0x3C, 0x7C, 0x3A, 0x7D, 0x24, - 0x14, 0x36, 0x00, 0x36, 0x77, 0x77, - -// middle logo section - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - -// second icon section - 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F, - 0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00, - 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F, - 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00, - 0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20, - 0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00, - 0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F, - 0x0F, 0x7F, 0x0F, 0x00, 0x03, 0x00, - 0x00, 0x44, 0x28, 0xFF, 0x5A, 0x24, - 0xF0, 0xFE, 0xF1, 0x91, 0xF6, 0xF0, - 0xF0, 0xFC, 0xF2, 0x92, 0xFC, 0xF0, - -// bottom logo section - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - -// third icon section - 0x1F, 0x05, 0x00, 0x02, 0x1F, 0x00, - 0x1F, 0x05, 0x00, 0x1D, 0x17, 0x00, - 0x1F, 0x05, 0x00, 0x15, 0x1F, 0x00, - 0x1F, 0x05, 0x00, 0x07, 0x1C, 0x00, - 0x1F, 0x05, 0x00, 0x17, 0x1D, 0x00, - 0x1F, 0x05, 0x00, 0x1F, 0x1D, 0x00, - 0x1F, 0x05, 0x00, 0x01, 0x1F, 0x00, - 0x1F, 0x05, 0x00, 0x1F, 0x1F, 0x00, - 0x1F, 0x05, 0x00, 0x07, 0x1F, 0x00, - 0x1F, 0x05, 0x00, 0x70, 0x77, 0x00, - 0x1F, 0x05, 0x00, 0x00, 0x77, 0x00, - -// fourth icon section - 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F, - 0x00, 0x14, 0x08, 0x14, 0x00, 0x00, - 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F, - 0x00, 0x22, 0x1C, 0x41, 0x3E, 0x00, - 0x00, 0x00, 0x00, 0x30, 0x18, 0x0C, - 0x06, 0x0C, 0x18, 0x30, 0x00, 0x00, - 0x00, 0x00, 0x06, 0x06, 0x06, 0x0C, - 0x18, 0x30, 0x66, 0x66, 0x66, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x0C, 0x7E, - 0x7F, 0x7E, 0x0C, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x77, 0x77, 0x77, 0x00, - 0x77, 0x77, 0x77, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xE7, 0xA5, 0xFF, 0x24, - 0x24, 0xFF, 0xA5, 0xE7, 0x00, 0x00, - 0x00, 0x00, 0x1C, 0x22, 0xC9, 0xD1, - 0xC9, 0x22, 0x1C, 0x00, 0x00, 0x00, - 0x00, 0x10, 0x02, 0x38, 0xFC, 0xED, - 0xFC, 0x38, 0x02, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x3E, 0x4A, 0x4F, - 0x4A, 0x3E, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x60, 0x6A, 0x64, - 0x6A, 0x60, 0x40, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x42, 0x69, 0x65, 0x65, - 0x65, 0x69, 0x42, 0x04, 0x00, 0x00, - 0x06, 0x0F, 0x09, 0x0F, 0x06, 0x00, - 0x00, 0x00, 0x1C, 0x14, 0x1C, 0x08, - 0x18, 0x08, 0x18, 0x00, 0x00, 0x00, - 0x00, 0x70, 0xC8, 0xEE, 0xF9, 0x70, - 0x1F, 0x05, 0x00, 0x10, 0x77, 0x40, - 0x00, 0x06, 0x09, 0x59, 0x01, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; -// clang-format on diff --git a/users/drashna/oled/oled_assets.h b/users/drashna/oled/oled_assets.h deleted file mode 100644 index 36dfc7762c..0000000000 --- a/users/drashna/oled/oled_assets.h +++ /dev/null @@ -1,207 +0,0 @@ -// Copyright 2023 Christopher Courtney, aka Drashna Jael're (@drashna) -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once - -// clang-format off - -static const char PROGMEM code_to_name[256] = { -// 0 1 2 3 4 5 6 7 8 9 A B c D E F - ' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', // 0x - 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '1', '2', // 1x - '3', '4', '5', '6', '7', '8', '9', '0', 20, 19, 27, 26, 22, '-', '=', '[', // 2x - ']','\\', '#', ';','\'', '`', ',', '.', '/', 128,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA, // 3x - 0xDB,0xDC,0xDD,0xDE,0XDF,0xFB, 'P', 'S', 19, ' ', 17, 30, 16, 16, 31, 26, // 4x - 27, 25, 24, 'N', '/', '*', '-', '+', 23, '1', '2', '3', '4', '5', '6', '7', // 5x - '8', '9', '0', '.','\\', 'A', 0, '=', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 6x - ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 7x - ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 8x - ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 9x - ' ', ' ', ' ', ' ', ' ', 0, ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Ax - ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Bx - ' ',0x9E,0x9E, ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',0x9D,0x9D,0x9D,0x9D, // Cx - 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, // Dx - 'C', 'S', 'A', 'G', 'C', 'S', 'A', 'G', ' ', ' ', ' ', ' ', ' ', 24, 26, 24, // Ex - 25, ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 24, 25, 27, 26, ' ', ' ', ' ' // Fx -}; - -static const char PROGMEM gmk_bad_logo[384] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF0, 0x70, 0x38, 0x38, 0x38, 0x78, 0x70, 0xF0, 0xE0, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xF8, 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0xF8, 0xF8, 0xF8, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF8, 0xF8, 0xF8, 0x38, 0x00, 0x80, 0xE0, 0xF0, 0xF8, 0x78, 0x38, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF8, 0xF8, 0xF8, 0x38, 0x38, 0x38, 0xF8, 0xF0, 0xF0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFC, 0xFC, 0xFC, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xFF, 0xFF, 0xFF, 0xC1, 0x80, 0x00, 0x00, 0x38, 0x38, 0xB8, 0xB8, 0xF9, 0xF9, 0xF8, 0x38, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFF, 0xFF, 0x1F, 0x01, 0x3F, 0xFF, 0xFF, 0xF0, 0xFE, 0x7F, 0x0F, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x3F, 0x1E, 0x7F, 0xFF, 0xFF, 0xF3, 0xC1, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x3F, 0x1C, 0x1C, 0x9C, 0xFF, 0xFF, 0xF3, 0xE1, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFC, 0xFE, 0xFF, 0x0F, 0x07, 0x07, 0x8E, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFC, 0xFE, 0xFF, 0x8F, 0x07, 0x07, 0x8E, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x07, 0x07, 0x07, 0x01, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x01, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x07, 0x07, 0x06, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x07, 0x07, 0x07, 0x03, 0x07, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x07, 0x07, 0x07, 0x03, 0x07, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x07, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 -}; - -static const char PROGMEM hue_manitee_logo[384] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x90, 0x70, 0xE8, 0xA8, 0xE4, 0xC4, 0xC4, 0xA0, 0xE4, 0xB0, 0xDC, 0xE4, 0xFC, 0xFC, 0xFC, 0xFC, 0x3C, 0x3C, 0xFC, 0xF8, 0xF0, 0xF0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFC, 0xF6, 0xF7, 0xEF, 0xFF, 0x87, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x1F, 0x1F, 0x19, 0x15, 0xF7, 0x16, 0x1A, 0x1B, 0x16, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0xC0, 0xC0, 0x00, 0x00, 0x03, 0x03, 0xFF, 0xFF, 0x03, 0x03, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x30, 0x30, 0xCC, 0xCC, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x07, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x07, 0x03, 0x00, 0x00, 0x02, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; - -static const char PROGMEM corne_logo[384] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xF8, 0x18, 0x00, 0xC0, 0xF0, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0x00, 0x00, 0xE0, 0xE0, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFC, 0xFE, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0xC3, 0xC3, 0xC3, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x9D, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x9D, 0xDF, 0xDF, 0xDF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x1F, 0x3F, 0x3F, 0x3F, 0x3F, 0x1F, 0x1F, 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x3F, 0x3F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7C, 0x78, 0x78, 0x38, 0x1C, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; - -static const char PROGMEM loose_logo[384] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0x00, 0xFC, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0x02, 0xF9, 0x01, 0x01, 0x05, 0x09, 0x11, 0x22, 0x06, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0x46, 0x46, 0x44, 0x44, 0x45, 0x44, 0x29, 0x28, 0x2A, 0x28, 0x11, 0x13, 0x05, 0x07, 0x05, 0x07, 0x05, 0x07, 0x05, 0x07, 0xE5, 0xE7, 0xE5, 0x07, 0x05, 0x07, 0x05, 0x07, 0x05, 0x07, 0x05, 0x07, 0x85, 0xC7, 0xE5, 0xE7, 0xE5, 0xE7, 0xE5, 0xE7, 0xE5, 0xC7, 0x85, 0x07, 0x85, 0xC7, 0xE5, 0xE7, 0xE5, 0xE7, 0xE5, 0xE7, 0xE5, 0xC7, 0x85, 0x07, 0x85, 0xC7, 0xE5, 0xE7, 0xE5, 0xE7, 0xE5, 0xE7, 0xE5, 0xE7, 0xE5, 0x07, 0xE5, 0xE7, 0xE5, 0xE7, 0xE5, 0xE7, 0xE5, 0xE7, 0xE5, 0xE7, 0xE5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0xC1, 0xC1, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x1C, 0x3E, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x14, 0x14, 0x14, 0x14, 0x14, 0x08, 0x08, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0xBE, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x81, 0xBD, 0x81, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x8F, 0x9F, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0xFC, 0xF8, 0x00, 0xFF, 0xFF, 0xFF, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x1F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x20, 0x47, 0x48, 0x50, 0x40, 0x41, 0x42, 0x24, 0x30, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x31, 0x31, 0x11, 0x51, 0x11, 0x11, 0x4A, 0x0A, 0x2A, 0x0A, 0x44, 0x64, 0x50, 0x70, 0x50, 0x70, 0x50, 0x70, 0x50, 0x70, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x70, 0x50, 0x71, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x71, 0x50, 0x70, 0x50, 0x71, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x71, 0x50, 0x70, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x51, 0x70, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; - -static const char PROGMEM skeeb_logo[384] = { - 0xC0, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x01, 0xFF, 0xFF, 0x01, 0x01, 0xFF, 0xFF, 0x01, 0x01, 0xFF, 0xFF, 0x19, 0x19, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x01, 0x01, 0xFF, 0xFF, 0x81, 0x81, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x19, 0x19, 0xFF, 0xFF, 0xF9, 0xF9, 0xF9, 0xF9, 0x01, 0x01, 0xF9, 0xF9, 0xF9, 0xF9, 0xFF, 0xFF, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xF9, 0xF9, 0xFF, 0xFF, 0x19, 0x19, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x67, 0x67, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0xC0, 0x00, - 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x08, 0x08, 0x0F, 0x0F, 0x0E, 0x0E, 0x0F, 0x0F, 0x08, 0x08, 0x0F, 0x0F, 0x08, 0x08, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x08, 0x08, 0x0F, 0x0F, 0x09, 0x09, 0x09, 0x09, 0xF9, 0xF9, 0x09, 0x09, 0x08, 0x08, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x08, 0x08, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0F, 0x0F, 0x08, 0x08, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x08, 0x08, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, - 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xFF, 0x08, 0x08, 0x0F, 0x0F, 0x08, 0x08, 0x03, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x03, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF0, 0xE0, 0xC0, 0x80, 0x01, 0x02, 0xFC, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00 -}; - -static const char PROGMEM qmk_logo[384] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0xF0, 0xF8, 0xF8, 0xFF, 0x38, 0xFF, 0xF8, 0xF8, 0x3F, 0xF8, 0xF8, 0xFF, 0x38, 0xFF, 0xF8, 0xF8, 0xF0, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x49, 0x49, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xDF, 0xBF, 0xBF, 0x00, 0xBF, 0xBF, 0xDF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x49, 0x49, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x60, 0x60, 0xE0, 0xBF, 0x1F, 0x00, 0x7F, 0x7F, 0x07, 0x1E, 0x38, 0x1E, 0x07, 0x7F, 0x7F, 0x00, 0x7F, 0x7F, 0x0E, 0x1F, 0x3B, 0x71, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x0C, 0x0C, 0x0C, 0x00, 0x7E, 0x7E, 0x00, 0x7F, 0x7E, 0x03, 0x03, 0x00, 0x7F, 0x7E, 0x03, 0x03, 0x7E, 0x7E, 0x03, 0x03, 0x7F, 0x7E, 0x00, 0x0F, 0x3E, 0x70, 0x3C, 0x06, 0x3C, 0x70, 0x3E, 0x0F, 0x00, 0x32, 0x7B, 0x49, 0x49, 0x3F, 0x7E, 0x00, 0x7F, 0x7E, 0x03, 0x03, 0x00, 0x1E, 0x3F, 0x69, 0x69, 0x6F, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x07, 0x0F, 0x0F, 0x7F, 0x0F, 0x7F, 0x0F, 0x0F, 0x7E, 0x0F, 0x0F, 0x7F, 0x0F, 0x7F, 0x0F, 0x0F, 0x07, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; - -static const char PROGMEM qmk_large_logo[1024] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x3f, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x83, 0x83, 0x83, 0x83, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfe, 0xfe, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x83, 0x83, 0x83, 0x83, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x83, 0x83, 0x83, 0x83, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x83, 0x83, 0x83, 0x83, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1f, 0x3f, 0x7f, 0x7e, 0xf8, 0xf0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xf0, 0xf8, 0x7e, 0x7f, 0x3f, 0x1f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff, 0xff, 0xff, 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xfc, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; - -static const char PROGMEM header_image[128] = { 0x00, 0xC0, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0xC0 }; -static const char PROGMEM row_2_image[128] = { 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF }; - -static const char PROGMEM display_border[3] = {0x0, 0xFF, 0x0}; - -static const char PROGMEM footer_image[128] = { 0x00, 0x03, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF0, 0xE0, 0xC0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x03 }; - -static const char PROGMEM mouse_logo[3][2][16] = { - { // mouse icon - { 0x00, 0x00, 0x00, 0xFC, 0x02, 0x02, 0x02, 0x3A, 0x02, 0x02, 0x02, 0xFC, 0x00, 0x00, 0x00, 0x00 }, - { 0x00, 0x00, 0x3F, 0x60, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x60, 0x3F, 0x00, 0x00, 0x00 } - }, - { // crosshair icon - {0x80, 0xF0, 0x88, 0xE4, 0x92, 0x8A, 0xCA, 0x7F, 0xCA, 0x8A, 0x92, 0xE4, 0x88, 0xF0, 0x80, 0x00 }, - {0x00, 0x07, 0x08, 0x13, 0x24, 0x28, 0x29, 0x7F, 0x29, 0x28, 0x24, 0x13, 0x08, 0x07, 0x00, 0x00 } - }, - { // dragscroll icon - {0x00, 0x00, 0x70, 0x88, 0x9C, 0x02, 0x0F, 0x01, 0x0F, 0x02, 0x8C, 0x44, 0x38, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x02, 0x06, 0x0F, 0x1C, 0x3C, 0x7C, 0x3C, 0x1C, 0x0F, 0x06, 0x02, 0x00, 0x00, 0x00} - } -}; - - -// Images credit j-inc(/James Incandenza) and pixelbenny. -// Credit to obosob for initial animation approach. -// heavily modified by drashna because he's a glutton for punishment - -#define OLED_ANIM_SIZE 36 -#define OLED_ANIM_ROWS 4 -#define OLED_ANIM_MAX_FRAMES 3 - -static const char PROGMEM animation[4][OLED_ANIM_MAX_FRAMES][OLED_ANIM_ROWS][OLED_ANIM_SIZE] = { - { // sleep frames - { - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0xa8, 0x48, 0xa8, 0x18, 0x08, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x80, 0x44, 0x84, 0x06, 0x05, 0x04, 0x80, 0x40, 0x20, 0x10, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x20, 0x18, 0x04, 0x04, 0x02, 0x7a, 0x86, 0x01, 0x80, 0x80, 0x01, 0x03, 0x05, 0x07, 0x01, 0x00, 0x00, 0x80, 0x83, 0x45, 0xfa, 0x3c, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, 0x33, 0x24, 0x28, 0x28, 0x29, 0x29, 0x29, 0x3a, 0x18, 0x1c, 0x39, 0x24, 0x24, 0x3a, 0x2d, 0x26, 0x31, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00 } - }, - { - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x22, 0x3a, 0x2a, 0x26, 0x22, 0x80, 0xc0, 0x80, 0x00, 0x24, 0x34, 0x2c, 0xe4, 0x60, 0x10, 0x70, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x38, 0x04, 0x02, 0x02, 0x01, 0x79, 0x87, 0x01, 0x80, 0x81, 0x83, 0x05, 0x05, 0x03, 0x01, 0x00, 0x00, 0x80, 0x43, 0x05, 0xfa, 0x3c, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, 0x33, 0x24, 0x28, 0x28, 0x28, 0x29, 0x29, 0x3a, 0x18, 0x1c, 0x39, 0x24, 0x24, 0x3a, 0x2d, 0x26, 0x31, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00 } - } - }, - { // wake frames - { - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x30, 0x08, 0x10, 0x60, 0x80, 0x00, 0x80, 0x60, 0x10, 0x08, 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x40, 0x40, 0x5c, 0x00, 0x01, 0x41, 0x01, 0x00, 0x5c, 0x40, 0x40, 0x80, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x80, 0xe1, 0x12, 0x0a, 0x06, 0x00, 0x80, 0x00, 0x06, 0x0a, 0x12, 0xe1, 0x80, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x1f, 0x14, 0x14, 0x10, 0x10, 0x11, 0x1f, 0x10, 0x10, 0x18, 0x0f, 0x18, 0x10, 0x10, 0x1f, 0x11, 0x10, 0x10, 0x14, 0x14, 0x1f, 0x1c, 0x14, 0x14, 0x14, 0x08, 0x00, 0x00, 0x00, 0x00 } - }, - { - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x30, 0x08, 0x10, 0x60, 0x80, 0x00, 0x80, 0x60, 0x10, 0x08, 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x90, 0x12, 0x0a, 0x02, 0xf4, 0x09, 0x0d, 0xf1, 0x04, 0x02, 0x0a, 0x12, 0x90, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x80, 0xe1, 0x12, 0x0a, 0x06, 0x01, 0x81, 0x00, 0x06, 0x0a, 0x12, 0xe1, 0x80, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x1f, 0x14, 0x14, 0x10, 0x10, 0x11, 0x1f, 0x10, 0x10, 0x18, 0x0f, 0x18, 0x10, 0x10, 0x1f, 0x11, 0x10, 0x10, 0x14, 0x14, 0x1f, 0x1c, 0x14, 0x14, 0x14, 0x08, 0x00, 0x00, 0x00, 0x00 } - } - }, - { // kaki frames - { - { 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x40, 0x80, 0x80, 0x80, 0x00, 0xfc, 0x84, 0x08, 0x08, 0x10, 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1e, 0x60, 0x80, 0x00, 0x00, 0x91, 0xa1, 0x80, 0x00, 0x00, 0x22, 0x84, 0x40, 0x50, 0x48, 0xc1, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x41, 0x82, 0xe2, 0x12, 0x0a, 0x06, 0x00, 0x80, 0x88, 0x4f, 0x02, 0x22, 0xe2, 0x9f, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x1f, 0x14, 0x14, 0x10, 0x10, 0x11, 0x1f, 0x10, 0x10, 0x18, 0x0f, 0x18, 0x14, 0x10, 0x10, 0x10, 0x10, 0x10, 0x14, 0x14, 0x1f, 0x1a, 0x0a, 0x0a, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00 } - }, - { - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x00, 0x00, 0x06, 0x1a, 0x22, 0xc2, 0x04, 0x04, 0x04, 0x07, 0x00, 0xc0, 0x20, 0x10, 0x80, 0x80, 0x01, 0x01, 0x02, 0xfc, 0xfe, 0x02, 0x3c, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0d, 0x8d, 0x55, 0x50, 0x94, 0xf0, 0x10, 0x09, 0x08, 0x00, 0x80, 0x00, 0x06, 0x09, 0x1b, 0xee, 0x00, 0x00, 0x00, 0x00, 0x81, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x1f, 0x14, 0x14, 0x10, 0x10, 0x11, 0x1f, 0x10, 0x10, 0x18, 0x0f, 0x18, 0x10, 0x10, 0x1f, 0x19, 0x18, 0x1c, 0x14, 0x16, 0x15, 0x14, 0x14, 0x14, 0x14, 0x08, 0x00, 0x00, 0x00, 0x00 } - }, - { - { 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x01, 0x02, 0x04, 0x04, 0x03, 0x80, 0x40, 0x40, 0x20, 0x00, 0x01, 0x02, 0x8c, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0d, 0x8d, 0x55, 0x50, 0x94, 0xf0, 0x10, 0x0a, 0x0e, 0x1d, 0x95, 0x24, 0x24, 0x27, 0x13, 0xe1, 0x01, 0x01, 0x01, 0x01, 0x02, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x1f, 0x14, 0x14, 0x10, 0x10, 0x11, 0x1f, 0x10, 0x10, 0x18, 0x0f, 0x18, 0x10, 0x10, 0x1f, 0x19, 0x18, 0x1c, 0x14, 0x14, 0x17, 0x14, 0x14, 0x14, 0x14, 0x08, 0x00, 0x00, 0x00, 0x00 } - } - }, - { // rtogi frames - { - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x20, 0x10, 0x10, 0x08, 0x04, 0x02, 0x01, 0x0f, 0x90, 0x10, 0x20, 0xf0, 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x48, 0x47, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x88, 0xc7, 0xc4, 0x62, 0x23, 0x11, 0x3f, 0x00, 0x00, 0x00, 0x00 }, - { 0x80, 0x40, 0x20, 0x10, 0x88, 0xcc, 0x43, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xc0, 0x80, 0x80, 0xc0, 0xe1, 0xfe, 0xb8, 0x88, 0x0c, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x06, 0x04, 0x04, 0x04, 0x04, 0x05, 0x04, 0x04, 0x04, 0x07, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } - }, - { - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x20, 0x10, 0x10, 0x08, 0x04, 0x02, 0x01, 0x1f, 0xa0, 0x20, 0x40, 0x80, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x48, 0x47, 0x88, 0x00, 0x00, 0x00, 0x00, 0x24, 0x24, 0x28, 0x6b, 0x40, 0xa0, 0x99, 0x86, 0xff, 0x00, 0x00, 0x00, 0x00 }, - { 0x0f, 0x11, 0x22, 0x44, 0x48, 0x4c, 0x43, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xc0, 0x80, 0x80, 0xc0, 0xe1, 0xfe, 0xb8, 0x88, 0x0c, 0x04, 0x06, 0x06, 0x06, 0x0e, 0x0e, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x06, 0x04, 0x04, 0x04, 0x04, 0x05, 0x04, 0x04, 0x04, 0x07, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } - } - } -}; - -static const char PROGMEM tri_layer_image[][3][24] = { - { // base - { 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x10, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00 }, - { 0x00, 0x00, 0x00, 0x88, 0x88, 0x5D, 0x5D, 0x3E, 0x3E, 0x7C, 0x7C, 0xF8, 0xF8, 0x7C, 0x7C, 0x3E, 0x3E, 0x5D, 0x5D, 0x88, 0x88, 0x00, 0x00, 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 } - }, - { // raise - { 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0xF0, 0xF0, 0xF8, 0xF8, 0xF0, 0xF0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00 }, - { 0x00, 0x00, 0x00, 0x88, 0x88, 0x55, 0x55, 0x23, 0x23, 0x47, 0x47, 0x8F, 0x8F, 0x47, 0x47, 0x23, 0x23, 0x55, 0x55, 0x88, 0x88, 0x00, 0x00, 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 } - }, - { // lower - { 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x10, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00 }, - { 0x00, 0x00, 0x00, 0x88, 0x88, 0xD5, 0xD5, 0xE2, 0xE2, 0xC4, 0xC4, 0x88, 0x88, 0xC4, 0xC4, 0xE2, 0xE2, 0xD5, 0xD5, 0x88, 0x88, 0x00, 0x00, 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x07, 0x07, 0x0F, 0x0F, 0x07, 0x07, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 } - }, - { // adjust - { 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0xC0, 0x60, 0xA0, 0x50, 0xB0, 0x58, 0xA8, 0x50, 0xB0, 0x60, 0xA0, 0x40, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00 }, - { 0x00, 0x00, 0x00, 0x88, 0x88, 0x5D, 0xD5, 0x6B, 0xB6, 0x6D, 0xD6, 0xAD, 0xDA, 0x6D, 0xD6, 0x6B, 0xB6, 0x5D, 0xD5, 0x88, 0x88, 0x00, 0x00, 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x02, 0x05, 0x06, 0x0D, 0x0A, 0x05, 0x06, 0x03, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 } - }, - { // blank - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - }, - { // better gamepad - { 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xE0, 0x70, 0xF0, 0xF0, 0xF0, 0xF0, 0x90, 0x90, 0xF0, 0xF0, 0xF0, 0xF0, 0x70, 0xE0, 0xE0, 0xC0, 0x00, 0x00, 0x00 }, - { 0x80, 0xF8, 0xFF, 0xFF, 0xFF, 0xFE, 0xFC, 0xE6, 0xC3, 0xC3, 0xE6, 0xFF, 0xFF, 0xFE, 0xF7, 0xE3, 0xF6, 0xFD, 0xFE, 0xFF, 0xFF, 0xFF, 0xF8, 0x80 }, - { 0x07, 0x0F, 0x0F, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x0F, 0x0F, 0x07 } - }, - { // mouse - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x20, 0x20, 0x20, 0xA0, 0x20, 0x20, 0x20, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x0F, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x06, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } - } -}; diff --git a/users/drashna/oled/oled_config.h b/users/drashna/oled/oled_config.h deleted file mode 100644 index 427764c4a7..0000000000 --- a/users/drashna/oled/oled_config.h +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once - -#ifndef OLED_UPDATE_INTERVAL -# ifdef SPLIT_KEYBOARD -# define OLED_UPDATE_INTERVAL 60 -# elif defined(OLED_DISPLAY_128X128) -# define OLED_UPDATE_INTERVAL 30 -# else -# define OLED_UPDATE_INTERVAL 15 -# endif -#endif -#define OLED_DISABLE_TIMEOUT -#ifdef OLED_FONT_H -# undef OLED_FONT_H -#endif -#define OLED_FONT_H "oled/drashna_font.h" -#define OLED_FONT_END 255 -// # define OLED_FONT_5X5 -// # define OLED_FONT_AZTECH -// # define OLED_FONT_BMPLAIN -// # define OLED_FONT_CRACKERS -#define OLED_FONT_DEAD_MEAL -// # define OLED_FONT_EIN -// # define OLED_FONT_HISKYF21 -// # define OLED_FONT_SQUASH -// # define OLED_FONT_ZXPIX -// # define OLED_FONT_SUPER_DIGG - -// # define OLED_LOGO_BEBOP -// # define OLED_LOGO_CORNE -// # define OLED_LOGO_GMK_BAD -// # define OLED_LOGO_GOTHAM -// # define OLED_LOGO_HUE_MANITEE -// # define OLED_LOGO_LOOSE -#define OLED_LOGO_SCIFI -// # define OLED_LOGO_SETS3N -// # define OLED_LOGO_SKEEB diff --git a/users/drashna/oled/oled_stuff.c b/users/drashna/oled/oled_stuff.c deleted file mode 100644 index d232e90fb2..0000000000 --- a/users/drashna/oled/oled_stuff.c +++ /dev/null @@ -1,830 +0,0 @@ -/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) - * Copyright 2021 John Ezra - wpm graph - * - * 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 . - */ - -#include "drashna.h" -#include -#include -#include -#include "lib/lib8tion/lib8tion.h" -#ifdef UNICODE_COMMON_ENABLE -# include "process_unicode_common.h" -# include "keyrecords/unicode.h" -#endif -#ifdef AUDIO_CLICKY -# include "process_clicky.h" -#endif - -#ifndef OLED_BRIGHTNESS_STEP -# define OLED_BRIGHTNESS_STEP 32 -#endif - -bool is_oled_enabled = true, is_oled_locked = false, is_oled_force_off = false; - -uint32_t oled_timer = 0; -char oled_keylog_str[OLED_KEYLOGGER_LENGTH + 1] = {0}; - -deferred_token kittoken; - -extern uint8_t oled_buffer[OLED_MATRIX_SIZE]; -extern OLED_BLOCK_TYPE oled_dirty; - -void oled_pan_section(bool left, uint16_t y_start, uint16_t y_end, uint16_t x_start, uint16_t x_end) { - uint16_t i = 0; - for (uint16_t y = y_start; y < y_end; y++) { - if (left) { - for (uint16_t x = x_start; x < x_end - 1; x++) { - i = y * OLED_DISPLAY_WIDTH + x; - oled_buffer[i] = oled_buffer[i + 1]; - oled_dirty |= ((OLED_BLOCK_TYPE)1 << (i / OLED_BLOCK_SIZE)); - } - } else { - for (uint16_t x = x_end - 1; x > 0; x--) { - i = y * OLED_DISPLAY_WIDTH + x; - oled_buffer[i] = oled_buffer[i - 1]; - oled_dirty |= ((OLED_BLOCK_TYPE)1 << (i / OLED_BLOCK_SIZE)); - } - } - } -} - -/** - * @brief parses pressed keycodes and saves to buffer - * - * @param keycode Keycode pressed from switch matrix - * @param record keyrecord_t data structure - */ -void add_keylog(uint16_t keycode, keyrecord_t *record) { - if (IS_QK_MOD_TAP(keycode)) { - if (record->tap.count) { - keycode = keycode_config(QK_MOD_TAP_GET_TAP_KEYCODE(keycode)); - } else { - keycode = keycode_config(0xE0 + biton(QK_MOD_TAP_GET_MODS(keycode) & 0xF) + biton(QK_MOD_TAP_GET_MODS(keycode) & 0x10)); - } - } else if (IS_QK_LAYER_TAP(keycode) && record->tap.count) { - keycode = keycode_config(QK_LAYER_TAP_GET_TAP_KEYCODE(keycode)); - } else if (IS_QK_MODS(keycode)) { - keycode = keycode_config(QK_MODS_GET_BASIC_KEYCODE(keycode)); - } else if (IS_QK_ONE_SHOT_MOD(keycode)) { - keycode = keycode_config(0xE0 + biton(QK_ONE_SHOT_MOD_GET_MODS(keycode) & 0xF) + biton(QK_ONE_SHOT_MOD_GET_MODS(keycode) & 0x10)); - } else if (IS_QK_BASIC(keycode)) { - keycode = keycode_config(keycode); - } - - if ((keycode == KC_BSPC) && mod_config(get_mods() | get_oneshot_mods()) & MOD_MASK_CTRL) { - memset(oled_keylog_str, ' ', OLED_KEYLOGGER_LENGTH); - oled_keylog_str[OLED_KEYLOGGER_LENGTH] = 0x00; - return; - } - - if (keycode > ARRAY_SIZE(code_to_name)) { - return; - } - - memmove(oled_keylog_str, oled_keylog_str + 1, OLED_KEYLOGGER_LENGTH - 1); - oled_keylog_str[(OLED_KEYLOGGER_LENGTH - 1)] = pgm_read_byte(&code_to_name[keycode]); -} - -/** - * @brief Keycode handler for oled display. - * - * This adds pressed keys to buffer, but also resets the oled timer - * - * @param keycode Keycode from matrix - * @param record keyrecord data struture - * @return true - * @return false - */ -bool process_record_user_oled(uint16_t keycode, keyrecord_t *record) { - if (record->event.pressed) { - add_keylog(keycode, record); - if (keycode == OLED_BRIGHTNESS_INC) { - userspace_config.oled_brightness = qadd8(userspace_config.oled_brightness, OLED_BRIGHTNESS_STEP); - oled_set_brightness(userspace_config.oled_brightness); - eeconfig_update_user_config(&userspace_config.raw); - } else if (keycode == OLED_BRIGHTNESS_DEC) { - userspace_config.oled_brightness = qsub8(userspace_config.oled_brightness, OLED_BRIGHTNESS_STEP); - oled_set_brightness(userspace_config.oled_brightness); - eeconfig_update_user_config(&userspace_config.raw); - } else if (keycode == OLED_LOCK) { - is_oled_locked = !is_oled_locked; - if (is_oled_locked) { - oled_on(); - } - } - } - return true; -} - -/** - * @brief Renders keylogger buffer to oled - * - */ -void render_keylogger_status(uint8_t col, uint8_t line) { -#ifdef OLED_DISPLAY_VERBOSE - oled_set_cursor(col, line); -#endif - oled_write_P(PSTR(OLED_RENDER_KEYLOGGER), false); - oled_write(oled_keylog_str, false); -#ifdef OLED_DISPLAY_VERBOSE - oled_advance_page(true); -#endif -} - -/** - * @brief Renders default layer state (aka layout) to oled - * - */ -void render_default_layer_state(uint8_t col, uint8_t line) { -#ifdef OLED_DISPLAY_VERBOSE - oled_set_cursor(col, line); - oled_write_P(PSTR(OLED_RENDER_LAYOUT_NAME), false); - - static char layer_state_buffer[11] = {0}; - static layer_state_t old_state = 0; - - if (old_state != default_layer_state) { - snprintf(layer_state_buffer, sizeof(layer_state_buffer), "%-10s", get_layer_name_string(default_layer_state, false)); - old_state = default_layer_state; - } - oled_write(layer_state_buffer, false); - oled_advance_page(true); -#else - oled_write_P(PSTR(OLED_RENDER_LAYOUT_NAME), false); - switch (get_highest_layer(default_layer_state)) { - case _QWERTY: - oled_write_P(PSTR(OLED_RENDER_LAYOUT_QWERTY), false); - break; - case _COLEMAK_DH: - oled_write_P(PSTR(OLED_RENDER_LAYOUT_COLEMAK_DH), false); - break; - case _COLEMAK: - oled_write_P(PSTR(OLED_RENDER_LAYOUT_COLEMAK), false); - break; - case _DVORAK: - oled_write_P(PSTR(OLED_RENDER_LAYOUT_DVORAK), false); - break; - } -#endif -} - -/** - * @brief Renders the active layers to the OLED - * - */ -void render_layer_state(uint8_t col, uint8_t line) { -#ifdef OLED_DISPLAY_VERBOSE - uint8_t layer_is[4] = {0, 4, 4, 4}; - if (layer_state_is(_ADJUST)) { - layer_is[0] = 3; - } else if (layer_state_is(_RAISE)) { - layer_is[0] = 1; - } else if (layer_state_is(_LOWER)) { - layer_is[0] = 2; - } - - if (layer_state_is(_MOUSE)) { - layer_is[1] = 6; - } - if (layer_state_is(_GAMEPAD)) { - layer_is[2] = 5; - } - - oled_set_cursor(col, line); - oled_write_raw_P(tri_layer_image[layer_is[0]][0], sizeof(tri_layer_image[0][0])); - oled_set_cursor(col + 4, line); - oled_write_raw_P(tri_layer_image[layer_is[1]][0], sizeof(tri_layer_image[0][0])); - oled_set_cursor(col + 8, line); - oled_write_raw_P(tri_layer_image[layer_is[2]][0], sizeof(tri_layer_image[0][0])); - oled_set_cursor(col + 13, line); - oled_write_P(PSTR("Diablo2"), layer_state_is(_DIABLOII)); - oled_advance_page(true); - - oled_set_cursor(col, line + 1); - oled_write_raw_P(tri_layer_image[layer_is[0]][1], sizeof(tri_layer_image[0][0])); - oled_set_cursor(col + 4, line + 1); - oled_write_raw_P(tri_layer_image[layer_is[1]][1], sizeof(tri_layer_image[0][0])); - oled_set_cursor(col + 8, line + 1); - oled_write_raw_P(tri_layer_image[layer_is[2]][1], sizeof(tri_layer_image[0][0])); - oled_set_cursor(col + 13, line + 1); - oled_write_P(PSTR("Diablo3"), layer_state_is(_DIABLO)); - oled_advance_page(true); - - oled_set_cursor(col, line + 2); - oled_write_raw_P(tri_layer_image[layer_is[0]][2], sizeof(tri_layer_image[0][0])); - oled_set_cursor(col + 4, line + 2); - oled_write_raw_P(tri_layer_image[layer_is[1]][2], sizeof(tri_layer_image[0][0])); - oled_set_cursor(col + 8, line + 2); - oled_write_raw_P(tri_layer_image[layer_is[2]][2], sizeof(tri_layer_image[0][0])); - oled_set_cursor(col + 13, line + 2); - oled_write_P(PSTR("Media"), layer_state_is(_MEDIA)); -#else - oled_write_P(PSTR(OLED_RENDER_LAYER_NAME), false); - oled_write_P(PSTR(OLED_RENDER_LAYER_LOWER), layer_state_is(_LOWER)); - oled_write_P(PSTR(OLED_RENDER_LAYER_RAISE), layer_state_is(_RAISE)); -#endif - oled_advance_page(true); -} - -/** - * @brief Renders the current lock status to oled - * - * @param led_usb_state Current keyboard led state - */ -void render_keylock_status(led_t led_usb_state, uint8_t col, uint8_t line) { -#if defined(OLED_DISPLAY_VERBOSE) - oled_set_cursor(col, line); -#endif -#ifdef CAPS_WORD_ENABLE - led_usb_state.caps_lock |= is_caps_word_on(); -#endif - oled_write_P(PSTR(OLED_RENDER_LOCK_NAME), false); -#if !defined(OLED_DISPLAY_VERBOSE) - oled_write_P(PSTR(" "), false); -#endif - oled_write_P(PSTR(OLED_RENDER_LOCK_NUML), led_usb_state.num_lock); - oled_write_P(PSTR(" "), false); - oled_write_P(PSTR(OLED_RENDER_LOCK_CAPS), led_usb_state.caps_lock); -#if defined(OLED_DISPLAY_VERBOSE) - oled_write_P(PSTR(" "), false); - oled_write_P(PSTR(OLED_RENDER_LOCK_SCLK), led_usb_state.scroll_lock); -#endif -} - -/** - * @brief Renders the matrix scan rate to the host system - * - */ -void render_matrix_scan_rate(uint8_t padding, uint8_t col, uint8_t line) { -#ifdef DEBUG_MATRIX_SCAN_RATE - oled_set_cursor(col, line); - oled_write_P(PSTR("MS:"), false); - if (padding) { - for (uint8_t n = padding; n > 0; n--) { - oled_write_P(PSTR(" "), false); - } - } - oled_write(get_u16_str(get_matrix_scan_rate(), ' '), false); -#endif -} - -/** - * @brief Renders the modifier state - * - * @param modifiers Modifiers to check against (real, weak, onesheot, etc;) - */ -void render_mod_status(uint8_t modifiers, uint8_t col, uint8_t line) { - static const char PROGMEM mod_status[5][3] = {{0xE8, 0xE9, 0}, {0xE4, 0xE5, 0}, {0xE6, 0xE7, 0}, {0xEA, 0xEB, 0}, {0xEC, 0xED, 0}}; -#if defined(OLED_DISPLAY_VERBOSE) - oled_set_cursor(col, line); -#endif - bool is_caps = host_keyboard_led_state().caps_lock; -#ifdef CAPS_WORD_ENABLE - is_caps |= is_caps_word_on(); -#endif - oled_write_P(PSTR(OLED_RENDER_MODS_NAME), false); -#if defined(OLED_DISPLAY_VERBOSE) - oled_write_P(mod_status[0], (modifiers & MOD_BIT(KC_LSFT)) || is_caps); - oled_write_P(mod_status[!keymap_config.swap_lctl_lgui ? 3 : 4], (modifiers & MOD_BIT(KC_LGUI))); - oled_write_P(mod_status[2], (modifiers & MOD_BIT(KC_LALT))); - oled_write_P(mod_status[1], (modifiers & MOD_BIT(KC_LCTL))); - oled_write_P(mod_status[1], (modifiers & MOD_BIT(KC_RCTL))); - oled_write_P(mod_status[2], (modifiers & MOD_BIT(KC_RALT))); - oled_write_P(mod_status[!keymap_config.swap_lctl_lgui ? 3 : 4], (modifiers & MOD_BIT(KC_RGUI))); - oled_write_P(mod_status[0], (modifiers & MOD_BIT(KC_RSFT)) || is_caps); -#else - oled_write_P(mod_status[0], (modifiers & MOD_MASK_SHIFT) || is_caps); - oled_write_P(mod_status[!keymap_config.swap_lctl_lgui ? 3 : 4], (modifiers & MOD_MASK_GUI)); - oled_write_P(PSTR(" "), false); - oled_write_P(mod_status[2], (modifiers & MOD_MASK_ALT)); - oled_write_P(mod_status[1], (modifiers & MOD_MASK_CTRL)); -#endif -} - -#ifdef SWAP_HANDS_ENABLE -extern bool swap_hands; -#endif - -void render_bootmagic_status(uint8_t col, uint8_t line) { - /* Show Ctrl-Gui Swap options */ - static const char PROGMEM logo[][2][3] = { - {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}}, - {{0x95, 0x96, 0}, {0xb5, 0xb6, 0}}, - }; - - bool is_bootmagic_on; -#ifdef OLED_DISPLAY_VERBOSE - oled_set_cursor(col, line); - // oled_set_cursor(7, 3); - is_bootmagic_on = !keymap_config.swap_lctl_lgui; -#else - is_bootmagic_on = keymap_config.swap_lctl_lgui; -#endif - -#ifdef OLED_DISPLAY_VERBOSE - if (keymap_config.swap_lctl_lgui) -#else - oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_NAME), false); - oled_write_P(PSTR(" "), false); -#endif - { - oled_write_P(logo[1][0], is_bootmagic_on); -#ifdef OLED_DISPLAY_VERBOSE - } else { -#endif - oled_write_P(logo[0][0], !is_bootmagic_on); - } -#ifndef OLED_DISPLAY_VERBOSE - oled_write_P(PSTR(" "), false); - oled_write_P(logo[1][1], is_bootmagic_on); - oled_write_P(logo[0][1], !is_bootmagic_on); -#endif - oled_write_P(PSTR(" "), false); - oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_NKRO), keymap_config.nkro); - oled_write_P(PSTR(" "), false); -#if defined(AUTOCORRECT_ENABLE) - oled_write_P(PSTR("CRCT"), autocorrect_is_enabled()); - oled_write_P(PSTR(" "), false); -#else - oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_NOGUI), keymap_config.no_gui); -#endif -#ifdef OLED_DISPLAY_VERBOSE - oled_set_cursor(col, line + 1); - if (keymap_config.swap_lctl_lgui) { - oled_write_P(logo[1][1], is_bootmagic_on); - } else { - oled_write_P(logo[0][1], !is_bootmagic_on); - } -#endif - oled_write_P(PSTR(" "), false); - oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_ONESHOT), is_oneshot_enabled()); -#ifdef SWAP_HANDS_ENABLE - oled_write_P(PSTR(" "), false); - oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_SWAP), swap_hands); - oled_write_P(PSTR(" "), false); -#endif -} - -void render_user_status(uint8_t col, uint8_t line) { -#ifdef AUDIO_ENABLE - bool is_audio_on = false, l_is_clicky_on = false; -# ifdef SPLIT_KEYBOARD - - is_audio_on = user_state.audio_enable; -# ifdef AUDIO_CLICKY - l_is_clicky_on = user_state.audio_clicky_enable; -# endif -# else - is_audio_on = is_audio_on(); -# ifdef AUDIO_CLICKY - l_is_clicky_on = is_clicky_on(); -# endif -# endif -#endif -#if defined(OLED_DISPLAY_VERBOSE) - oled_set_cursor(col, line); -#endif - oled_write_P(PSTR(OLED_RENDER_USER_NAME), false); -#if !defined(OLED_DISPLAY_VERBOSE) - oled_write_P(PSTR(" "), false); -#endif -#if defined(RGB_MATRIX_ENABLE) - oled_write_P(PSTR(OLED_RENDER_USER_ANIM), userspace_config.rgb_matrix_idle_anim); -# if !defined(OLED_DISPLAY_VERBOSE) - oled_write_P(PSTR(" "), false); -# endif -#elif defined(POINTING_DEVICE_ENABLE) && defined(POINTING_DEVICE_AUTO_MOUSE_ENABLE) - static const char PROGMEM mouse_lock[3] = {0xF2, 0xF3, 0}; - oled_write_P(mouse_lock, get_auto_mouse_toggle()); -#endif -#ifdef AUDIO_ENABLE - static const char PROGMEM audio_status[2][3] = {{0xE0, 0xE1, 0}, {0xE2, 0xE3, 0}}; - oled_write_P(audio_status[is_audio_on], false); - -# ifdef AUDIO_CLICKY - static const char PROGMEM audio_clicky_status[2][3] = {{0xF4, 0xF5, 0}, {0xF6, 0xF7, 0}}; - oled_write_P(audio_clicky_status[l_is_clicky_on && is_audio_on], false); -# if !defined(OLED_DISPLAY_VERBOSE) - oled_write_P(PSTR(" "), false); -# endif -# endif -#endif - - static const char PROGMEM rgb_layer_status[2][3] = {{0xEE, 0xEF, 0}, {0xF0, 0xF1, 0}}; - oled_write_P(rgb_layer_status[userspace_config.rgb_layer_change], false); - static const char PROGMEM cat_mode[2][3] = {{0xF8, 0xF9, 0}, {0xF6, 0xF7, 0}}; - oled_write_P(cat_mode[0], get_keyboard_lock()); -#if defined(UNICODE_COMMON_ENABLE) - static const char PROGMEM uc_mod_status[5][3] = {{0xEC, 0xED, 0}, {0x20, 0x20, 0}, {0x20, 0x20, 0}, {0x20, 0x20, 0}, {0xEA, 0xEB, 0}}; - oled_write_P(uc_mod_status[get_unicode_input_mode()], false); -#endif - if (userspace_config.nuke_switch) { -#if !defined(OLED_DISPLAY_VERBOSE) - oled_write_P(PSTR(" "), false); -#endif - static const char PROGMEM nukem_good[2] = {0xFA, 0}; - oled_write_P(nukem_good, false); -#if !defined(OLED_DISPLAY_VERBOSE) - oled_advance_page(true); -#endif - } -#if defined(OLED_DISPLAY_VERBOSE) - oled_advance_page(true); -#endif -} - -void render_rgb_hsv(uint8_t col, uint8_t line) { - oled_set_cursor(col, line); - oled_write_P(PSTR("HSV: "), false); -#ifdef RGB_MATRIX_ENABLE - oled_write(get_u8_str(rgb_matrix_get_hue(), ' '), false); - oled_write_P(PSTR(", "), false); - oled_write(get_u8_str(rgb_matrix_get_sat(), ' '), false); - oled_write_P(PSTR(", "), false); - oled_write(get_u8_str(rgb_matrix_get_val(), ' '), false); -#elif RGBLIGHT_ENABLE - if (is_rgblight_startup_running()) { - oled_write_P(PSTR("Start Animation"), false); - } else { - oled_write(get_u8_str(rgblight_get_hue(), ' '), false); - oled_write_P(PSTR(", "), false); - oled_write(get_u8_str(rgblight_get_sat(), ' '), false); - oled_write_P(PSTR(", "), false); - oled_write(get_u8_str(rgblight_get_val(), ' '), false); - } -#endif -} - -void render_rgb_mode(uint8_t col, uint8_t line) { - oled_set_cursor(col, line); - __attribute__((unused)) static uint8_t mode; - bool need_update = false; - static char buf[21] = {0}; - -#ifdef RGB_MATRIX_ENABLE - if (mode != rgb_matrix_get_mode()) { - snprintf(buf, sizeof(buf), "%-20s", rgb_matrix_name(rgb_matrix_get_mode())); - mode = rgb_matrix_get_mode(); - need_update = true; - } -#elif RGBLIGHT_ENABLE - if (mode != rgblight_get_mode()) { - snprintf(buf, sizeof(buf), "%-20s", rgblight_name(rgblight_get_mode())); - mode = rgblight_get_mode(); - need_update = true; - } -#endif - if (need_update) { - for (uint8_t i = 1; i < sizeof(buf); ++i) { - if (buf[i] == 0) - break; - else if (buf[i] == '_') - buf[i] = ' '; - else if (buf[i - 1] == ' ') - buf[i] = toupper(buf[i]); - else if (buf[i - 1] != ' ') - buf[i] = tolower(buf[i]); - } - } - - oled_write(buf, false); -} - -void render_wpm(uint8_t padding, uint8_t col, uint8_t line) { -#ifdef WPM_ENABLE - oled_set_cursor(col, line); - oled_write_P(PSTR(OLED_RENDER_WPM_COUNTER), false); - if (padding) { - for (uint8_t n = padding; n > 0; n--) { - oled_write_P(PSTR(" "), false); - } - } - oled_write(get_u8_str(get_current_wpm(), ' '), false); -#endif -} - -//============= USER CONFIG PARAMS =============== -// wpm graph originally designed by john-ezra - -// for 128x128: -// max_lines_graph = 54; -// vertical_offset = 64; -// for 128x64: -// max_lines_graph = 64; -// vertical_offset = 0; - -void render_wpm_graph(uint8_t max_lines_graph, uint8_t vertical_offset) { -#ifdef WPM_ENABLE - static uint16_t timer = 0; - static uint8_t x = OLED_DISPLAY_HEIGHT - 1; - uint8_t currwpm = get_current_wpm(); - float max_wpm = OLED_WPM_GRAPH_MAX_WPM; - - if (timer_elapsed(timer) > OLED_WPM_GRAPH_REFRESH_INTERVAL) { // check if it's been long enough before refreshing graph - x = (max_lines_graph - 1) - ((currwpm / max_wpm) * (max_lines_graph - 1)); // main calculation to plot graph line - for (uint8_t i = 0; i <= OLED_WPM_GRAPH_GRAPH_LINE_THICKNESS - 1; i++) { // first draw actual value line - oled_write_pixel(3, x + i + vertical_offset, true); - } -# ifdef OLED_WPM_GRAPH_VERTICAL_LINE - static uint8_t vert_count = 0; - if (vert_count == OLED_WPM_GRAPH_VERTCAL_LINE_INTERVAL) { - vert_count = 0; - while (x <= (max_lines_graph - 1)) { - oled_write_pixel(3, x + vertical_offset, true); - x++; - } - } else { - for (uint8_t i = (max_lines_graph - 1); i > x; i--) { - if (i % OLED_WPM_GRAPH_AREA_FILL_INTERVAL == 0) { - oled_write_pixel(3, i + vertical_offset, true); - } - } - vert_count++; - } -# else - for (int i = (max_lines_graph - 1); i > x; i--) { - if (i % OLED_WPM_GRAPH_AREA_FILL_INTERVAL == 0) { - oled_write_pixel(3, i + vertical_offset, true); - } - } -# endif -# include - uint8_t y_start = ceil(vertical_offset / 8); - uint8_t y_length = y_start + ceil(max_lines_graph / 8); - oled_pan_section(false, y_start, y_length, 3, 125); // then move the entire graph one pixel to the right - timer = timer_read(); // refresh the timer for the next iteration - } -#endif -} - -#if defined(POINTING_DEVICE_ENABLE) -void render_pointing_dpi_status(uint16_t cpi, uint8_t padding, uint8_t col, uint8_t line) { - oled_set_cursor(col, line); - oled_write_P(PSTR("CPI:"), false); - if (padding) { - for (uint8_t n = padding - 1; n > 0; n--) { - oled_write_P(PSTR(" "), false); - } - } - - oled_write(get_u16_str(cpi, ' '), false); -} -#endif - -// WPM-responsive animation stuff here -#define OLED_SLEEP_FRAMES 2 -#define OLED_SLEEP_SPEED 10 // below this wpm value your animation will idle - -#define OLED_WAKE_FRAMES 2 // uncomment if >1 -#define OLED_WAKE_SPEED OLED_SLEEP_SPEED // below this wpm value your animation will idle - -#define OLED_KAKI_FRAMES 3 -#define OLED_KAKI_SPEED 40 // above this wpm value typing animation to triggere - -#define OLED_RTOGI_FRAMES 2 -// #define OLED_LTOGI_FRAMES 2 - -// #define ANIM_FRAME_DURATION 500 // how long each frame lasts in ms -// #define SLEEP_TIMER 60000 // should sleep after this period of 0 wpm, needs fixing -#if (OLED_SLEEP_FRAMES > OLED_ANIM_MAX_FRAMES) || (OLED_WAKE_FRAMES > OLED_ANIM_MAX_FRAMES) || (OLED_KAKI_FRAMES > OLED_ANIM_MAX_FRAMES) || (OLED_RTOGI_FRAMES > OLED_ANIM_MAX_FRAMES) -# error frame size too large -#endif - -static uint8_t animation_frame = 0; -static uint8_t animation_type = 0; - -void render_kitty(uint8_t col, uint8_t line) { - for (uint8_t i = 0; i < 4; i++) { - oled_set_cursor(col, line + i); - oled_write_raw_P(animation[animation_type][animation_frame][i], OLED_ANIM_SIZE); - } -} - -void render_unicode_mode(uint8_t col, uint8_t line) { -#if defined(CUSTOM_UNICODE_ENABLE) && defined(UNICODE_COMMON_ENABLE) - oled_set_cursor(col, line); - oled_write_P(PSTR("Unicode:"), false); - oled_write_P(unicode_mode_str[unicode_typing_mode], false); -#endif -} - -uint32_t kitty_animation_phases(uint32_t triger_time, void *cb_arg) { - static uint32_t anim_frame_duration = 500; -#if defined(POINTING_DEVICE_ENABLE) && defined(POINTING_DEVICE_AUTO_MOUSE_ENABLE) - if (get_auto_mouse_toggle()) { - animation_frame = (animation_frame + 1) % OLED_RTOGI_FRAMES; - animation_type = 3; - anim_frame_duration = 300; - } else -#endif - { -#ifdef WPM_ENABLE - if (get_current_wpm() <= OLED_SLEEP_SPEED) { -#endif - animation_frame = (animation_frame + 1) % OLED_SLEEP_FRAMES; - animation_type = 0; - anim_frame_duration = 500; -#ifdef WPM_ENABLE - } else if (get_current_wpm() > OLED_WAKE_SPEED) { - animation_frame = (animation_frame + 1) % OLED_WAKE_FRAMES; - animation_type = 1; - anim_frame_duration = 800; - } else if (get_current_wpm() >= OLED_KAKI_SPEED) { - animation_frame = (animation_frame + 1) % OLED_KAKI_FRAMES; - animation_type = 2; - anim_frame_duration = 500; - } -#endif - } - return anim_frame_duration; -} - -void render_mouse_mode(uint8_t col, uint8_t line) { -#if (defined(KEYBOARD_bastardkb_charybdis) || defined(KEYBOARD_handwired_tractyl_manuform)) && defined(POINTING_DEVICE_ENABLE) - // credit and thanks to jaspertandy on discord for these images - uint8_t image_index = 0; -# ifdef OLED_DISPLAY_TEST - image_index = animation_frame; -# else - if (charybdis_get_pointer_sniping_enabled()) { - image_index = 1; - } else if (charybdis_get_pointer_dragscroll_enabled()) { - image_index = 2; - } -# endif - - oled_set_cursor(col, line); - oled_write_raw_P(mouse_logo[image_index][0], 16); - oled_set_cursor(col, line + 1); - oled_write_raw_P(mouse_logo[image_index][1], 16); -#endif -} - -void render_status_right(void) { -#if defined(OLED_DISPLAY_VERBOSE) - render_default_layer_state(1, 1); -#else - render_default_layer_state(0, 0); -#endif - - /* Show Keyboard Layout */ - render_layer_state(1, 2); - render_mod_status(get_mods() | get_oneshot_mods(), 1, 5); -#if !defined(OLED_DISPLAY_VERBOSE) && defined(WPM_ENABLE) && !defined(STM32F303xC) - render_wpm(2, 7, 1); -#endif - render_keylock_status(host_keyboard_led_state(), 1, 6); -} - -void render_status_left(void) { -#if defined(OLED_DISPLAY_VERBOSE) - render_kitty(0, 1); - -# if defined(WPM_ENABLE) - render_wpm(1, 7, 1); -# elif defined(DEBUG_MATRIX_SCAN_RATE) - render_matrix_scan_rate(1, 7, 1); -# endif -# if (defined(KEYBOARD_bastardkb_charybdis) || defined(KEYBOARD_handwired_tractyl_manuform)) && defined(POINTING_DEVICE_ENABLE) - render_pointing_dpi_status(charybdis_get_pointer_sniping_enabled() ? charybdis_get_pointer_sniping_dpi() : charybdis_get_pointer_default_dpi(), 1, 7, 2); - render_mouse_mode(17, 1); -# elif defined(WPM_ENABLE) && defined(DEBUG_MATRIX_SCAN_RATE) - render_matrix_scan_rate(1, 7, 2); -# endif - /* Show Keyboard Layout */ - render_bootmagic_status(7, 3); - render_user_status(1, 5); - - render_keylogger_status(1, 6); -#else - render_default_layer_state(0, 0); - /* Show Keyboard Layout */ - render_bootmagic_status(7, 3); - render_user_status(1, 5); - - render_keylogger_status(1, 6); -#endif -} - -__attribute__((weak)) void oled_render_large_display(bool side) { - if (side) { - render_rgb_hsv(1, 7); - render_rgb_mode(1, 8); - - render_wpm_graph(48, 72); - } else { - oled_advance_page(true); - oled_advance_page(true); - - oled_set_cursor(0, 9); - oled_write_raw_P(qmk_logo, 384); // is 3 rows of 128 pixels, so 384 bytes. - - render_unicode_mode(1, 14); - } -} - -__attribute__((weak)) void render_oled_title(bool side) { - oled_write_P(side ? PSTR(" Left ") : PSTR(" Right "), true); - // oled_write_P(PSTR( "1234567890123" "1234567890123"), true); -} - -__attribute__((weak)) oled_rotation_t oled_init_keymap(oled_rotation_t rotation) { - return rotation; -} - -oled_rotation_t oled_init_user(oled_rotation_t rotation) { - if (is_keyboard_master()) { - memset(oled_keylog_str, ' ', OLED_KEYLOGGER_LENGTH); - } - - kittoken = defer_exec(3000, kitty_animation_phases, NULL); - - oled_clear(); - oled_render(); - return oled_init_keymap(rotation); -} - -__attribute__((weak)) bool oled_task_keymap(void) { - return true; -} - -bool oled_task_user(void) { -#ifndef OLED_DISPLAY_TEST - if (!is_oled_enabled) { - oled_off(); - return false; - } else -#endif - { - oled_on(); - } - - if (!oled_task_keymap()) { - return false; - } - -#if defined(OLED_DISPLAY_VERBOSE) - oled_write_raw_P(header_image, sizeof(header_image)); - oled_set_cursor(4, 0); - render_oled_title(is_keyboard_left()); -#endif - -#ifndef OLED_DISPLAY_TEST - if (is_keyboard_left()) { -#endif - render_status_left(); -#if defined(OLED_DISPLAY_128X128) - oled_render_large_display(true); -#endif -#ifndef OLED_DISPLAY_TEST - } else { - render_status_right(); -# if defined(OLED_DISPLAY_128X128) - oled_render_large_display(false); -# endif - } -#endif - -#if defined(OLED_DISPLAY_VERBOSE) - uint8_t num_of_rows; -# if defined(OLED_DISPLAY_128X128) - num_of_rows = 15; -# else - num_of_rows = 7; -# endif - for (uint8_t i = 1; i < num_of_rows; i++) { - oled_set_cursor(0, i); - oled_write_raw_P(display_border, sizeof(display_border)); - oled_set_cursor(21, i); - oled_write_raw_P(display_border, sizeof(display_border)); - } - - oled_set_cursor(0, num_of_rows); - oled_write_raw_P(footer_image, sizeof(footer_image)); -#endif - - return false; -} - -void housekeeping_task_oled(void) { - is_oled_enabled = false; - if ((is_oled_locked || (last_input_activity_elapsed() < 60000)) && !is_oled_force_off) { - is_oled_enabled = true; - } - if (oled_get_brightness() != userspace_config.oled_brightness) { - oled_set_brightness(userspace_config.oled_brightness); - } -} diff --git a/users/drashna/oled/oled_stuff.h b/users/drashna/oled/oled_stuff.h deleted file mode 100644 index 414720ff2a..0000000000 --- a/users/drashna/oled/oled_stuff.h +++ /dev/null @@ -1,169 +0,0 @@ -/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) - * - * 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 . - */ - -#pragma once - -#include "quantum.h" -#include "oled_driver.h" -#include "oled_assets.h" -#ifdef DEFFERED_EXEC_ENABLE -extern deferred_token kittoken; -#endif - -void oled_driver_render_logo(void); -bool process_record_user_oled(uint16_t keycode, keyrecord_t *record); -oled_rotation_t oled_init_keymap(oled_rotation_t rotation); -void oled_timer_reset(void); -void render_keylogger_status(uint8_t col, uint8_t line); -void render_default_layer_state(uint8_t col, uint8_t line); -void render_layer_state(uint8_t col, uint8_t line); -void render_keylock_status(led_t led_usb_state, uint8_t col, uint8_t line); -void render_matrix_scan_rate(uint8_t padding, uint8_t col, uint8_t line); -void render_mod_status(uint8_t modifiers, uint8_t col, uint8_t line); -void render_bootmagic_status(uint8_t col, uint8_t line); -void render_user_status(uint8_t col, uint8_t line); -void oled_driver_render_logo(void); -void render_wpm(uint8_t padding, uint8_t col, uint8_t line); -void render_pointing_dpi_status(uint16_t cpi, uint8_t padding, uint8_t col, uint8_t line); -void oled_driver_render_logo_left(void); -void oled_driver_render_logo_right(void); -void oled_render_large_display(bool side); -void render_wpm_graph(uint8_t max_lines_graph, uint8_t vertical_offset); -void render_kitty(uint8_t col, uint8_t line); -void render_unicode_mode(uint8_t col, uint8_t line); -void render_rgb_hsv(uint8_t col, uint8_t line); -void render_mouse_mode(uint8_t col, uint8_t line); -void housekeeping_task_oled(void); -void render_oled_title(bool side); - -void oled_pan_section(bool left, uint16_t y_start, uint16_t y_end, uint16_t x_start, uint16_t x_end); - -#if defined(OLED_DISPLAY_128X128) || defined(OLED_DISPLAY_128X64) -# define OLED_DISPLAY_VERBOSE - -# define OLED_RENDER_KEYLOGGER "Keylogger: " -# ifndef OLED_KEYLOGGER_LENGTH -# define OLED_KEYLOGGER_LENGTH 9 -# endif -# define OLED_RENDER_LAYOUT_NAME "Layout: " -# define OLED_RENDER_LAYOUT_QWERTY "Qwerty" -# define OLED_RENDER_LAYOUT_COLEMAK_DH "Colemak DH" -# define OLED_RENDER_LAYOUT_COLEMAK "Colemak" -# define OLED_RENDER_LAYOUT_DVORAK "Dvorak" -# define OLED_RENDER_LAYOUT_WORKMAN "Workman" -# define OLED_RENDER_LAYOUT_NORMAN "Norman" -# define OLED_RENDER_LAYOUT_MALTRON "Matron" -# define OLED_RENDER_LAYOUT_EUCALYN "Eucalyn" -# define OLED_RENDER_LAYOUT_CARPLAX "Carplax" - -# define OLED_RENDER_LAYER_NAME "Layer:" -# define OLED_RENDER_LAYER_LOWER "Lower" -# define OLED_RENDER_LAYER_RAISE "Raise" -# define OLED_RENDER_LAYER_ADJUST "Adjust" -# define OLED_RENDER_LAYER_MODS "Mods" - -# define OLED_RENDER_LOCK_NAME "Lock: " -# define OLED_RENDER_LOCK_NUML "NUM" -# define OLED_RENDER_LOCK_CAPS "CAPS" -# define OLED_RENDER_LOCK_SCLK "SCLK" - -# define OLED_RENDER_MODS_NAME "Mods" -# define OLED_RENDER_MODS_SFT "Sft" -# define OLED_RENDER_MODS_CTL "Ctl" -# define OLED_RENDER_MODS_ALT "Alt" -# define OLED_RENDER_MODS_GUI "GUI" - -# define OLED_RENDER_BOOTMAGIC_NAME "Boot " -# define OLED_RENDER_BOOTMAGIC_NKRO "NKRO" -# define OLED_RENDER_BOOTMAGIC_NOGUI "nGUI" -# define OLED_RENDER_BOOTMAGIC_GRV "GRV" -# define OLED_RENDER_BOOTMAGIC_ONESHOT "1SHT" -# define OLED_RENDER_BOOTMAGIC_SWAP "SWAP" -# define OLED_RENDER_BOOTMAGIC_CAPS "CAPS" - -# define OLED_RENDER_USER_NAME "USER:" -# define OLED_RENDER_USER_ANIM "Anim" -# define OLED_RENDER_USER_LAYR "Layr" -# define OLED_RENDER_USER_NUKE "Nuke" - -# define OLED_RENDER_WPM_COUNTER "WPM: " -#else -# define OLED_RENDER_KEYLOGGER "KLogr" -# ifndef OLED_KEYLOGGER_LENGTH -# define OLED_KEYLOGGER_LENGTH 5 -# endif - -# define OLED_RENDER_LAYOUT_NAME "Lyout" -# define OLED_RENDER_LAYOUT_QWERTY " QRTY" -# define OLED_RENDER_LAYOUT_COLEMAK_DH " cmDH" -# define OLED_RENDER_LAYOUT_COLEMAK " COLE" -# define OLED_RENDER_LAYOUT_DVORAK " DVRK" -# define OLED_RENDER_LAYOUT_WORKMAN " WKMN" -# define OLED_RENDER_LAYOUT_NORMAN " NORM" -# define OLED_RENDER_LAYOUT_MALTRON " MLTN" -# define OLED_RENDER_LAYOUT_EUCALYN " ECLN" -# define OLED_RENDER_LAYOUT_CARPLAX " CRPX" - -# define OLED_RENDER_LAYER_NAME "LAYER" -# define OLED_RENDER_LAYER_LOWER "Lower" -# define OLED_RENDER_LAYER_RAISE "Raise" -# define OLED_RENDER_LAYER_ADJUST "Adjst" -# define OLED_RENDER_LAYER_MODS " Mods" - -# define OLED_RENDER_LOCK_NAME "Lock:" -# define OLED_RENDER_LOCK_NUML "NumL" -# define OLED_RENDER_LOCK_CAPS "CapL" -# define OLED_RENDER_LOCK_SCLK "ScrL" - -# define OLED_RENDER_MODS_NAME "Mods: " -# define OLED_RENDER_MODS_SFT "Shft" -# define OLED_RENDER_MODS_CTL "Ctrl" -# define OLED_RENDER_MODS_ALT "Alt\n" -# define OLED_RENDER_MODS_GUI "GUI\n" - -# define OLED_RENDER_BOOTMAGIC_NAME "BTMGK" -# define OLED_RENDER_BOOTMAGIC_NKRO "NKRO" -# define OLED_RENDER_BOOTMAGIC_NOGUI "nGUI" -# define OLED_RENDER_BOOTMAGIC_GRV "GRV" -# define OLED_RENDER_BOOTMAGIC_ONESHOT "1SHT" -# define OLED_RENDER_BOOTMAGIC_SWAP "SWAP" -# define OLED_RENDER_BOOTMAGIC_CAPS "CAPS" - -# define OLED_RENDER_USER_NAME "USER:" -# define OLED_RENDER_USER_ANIM "Anim" -# define OLED_RENDER_USER_LAYR "Layr" -# define OLED_RENDER_USER_NUKE "Nuke" - -# define OLED_RENDER_WPM_COUNTER "WPM: " -#endif - -extern char oled_keylog_str[OLED_KEYLOGGER_LENGTH + 1]; - -#ifndef OLED_WPM_GRAPH_MAX_WPM -# define OLED_WPM_GRAPH_MAX_WPM 120 -#endif -#ifndef OLED_WPM_GRAPH_REFRESH_INTERVAL -# define OLED_WPM_GRAPH_REFRESH_INTERVAL 300 -#endif -#ifndef OLED_WPM_GRAPH_AREA_FILL_INTERVAL -# define OLED_WPM_GRAPH_AREA_FILL_INTERVAL 3 -#endif -#ifndef OLED_WPM_GRAPH_VERTCAL_LINE_INTERVAL -# define OLED_WPM_GRAPH_VERTCAL_LINE_INTERVAL 3 -#endif -#ifndef OLED_WPM_GRAPH_GRAPH_LINE_THICKNESS -# define OLED_WPM_GRAPH_GRAPH_LINE_THICKNESS 2 -#endif diff --git a/users/drashna/oled/readme.md b/users/drashna/oled/readme.md deleted file mode 100644 index dbb8187d49..0000000000 --- a/users/drashna/oled/readme.md +++ /dev/null @@ -1,42 +0,0 @@ -# OLED Display - -To disable the pre genrated oled display, add `CUSTOM_OLED_DRIVER = no` to your `rules.mk`. - - -## OLED Font - -My font file has multiple fonts and multiple logs integrated into the one file. And it uses the full 255 possible characters. - -In addition to the default font and logos: - -```c -# define OLED_FONT_5X5 -# define OLED_FONT_AZTECH -# define OLED_FONT_BMPLAIN -# define OLED_FONT_CRACKERS -# define OLED_FONT_EIN -# define OLED_FONT_HISKYF21 -# define OLED_FONT_SQUASH -# define OLED_FONT_SUPER_DIGG -# define OLED_FONT_ZXPIX -``` - -```c -# define OLED_LOGO_CORNE -# define OLED_LOGO_GMK_BAD -# define OLED_LOGO_GOTHAM -# define OLED_LOGO_HUE_MANITEE -# define OLED_LOGO_LOOSE -# define OLED_LOGO_SETS3N -# define OLED_LOGO_SKEEB -``` - -Additionally, the font file allows for external oled font files, instead. This allows for additional files that cannot be hosted in the QMK Repo. - -## Display - -A picture is worth a thousand words. So here are two: - -![Right](https://i.imgur.com/4XFOVKBl.jpg) - -![Left](https://i.imgur.com/W5RX4pAl.jpg) diff --git a/users/drashna/oled/rules.mk b/users/drashna/oled/rules.mk deleted file mode 100644 index 95be67a9ef..0000000000 --- a/users/drashna/oled/rules.mk +++ /dev/null @@ -1,12 +0,0 @@ - -CUSTOM_OLED_DRIVER ?= yes -ifeq ($(strip $(OLED_ENABLE)), yes) - ifeq ($(strip $(CUSTOM_OLED_DRIVER)), yes) - OPT_DEFS += -DCUSTOM_OLED_DRIVER - SRC += $(USER_PATH)/oled/oled_stuff.c - endif - ifeq ($(strip $(OLED_DISPLAY_TEST)), yes) - OPT_DEFS += -DOLED_DISPLAY_TEST - endif -endif -DEFERRED_EXEC_ENABLE = yes diff --git a/users/drashna/pointing/pointing.c b/users/drashna/pointing/pointing.c deleted file mode 100644 index 82cc5a3aa6..0000000000 --- a/users/drashna/pointing/pointing.c +++ /dev/null @@ -1,118 +0,0 @@ -// Copyright 2021 Christopher Courtney, aka Drashna Jael're (@drashna) -// SPDX-License-Identifier: GPL-2.0-or-later - -#include "pointing.h" -#include "math.h" - -static uint16_t mouse_debounce_timer = 0; -bool enable_acceleration = false; - -#ifdef TAPPING_TERM_PER_KEY -# define TAP_CHECK get_tapping_term(KC_BTN1, NULL) -#else -# ifndef TAPPING_TERM -# define TAPPING_TERM 200 -# endif -# define TAP_CHECK TAPPING_TERM -#endif - -__attribute__((weak)) void pointing_device_init_keymap(void) {} - -void pointing_device_init_user(void) { - set_auto_mouse_layer(_MOUSE); - set_auto_mouse_enable(true); - - pointing_device_init_keymap(); -} - -__attribute__((weak)) report_mouse_t pointing_device_task_keymap(report_mouse_t mouse_report) { - return mouse_report; -} - -report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) { - mouse_xy_report_t x = mouse_report.x, y = mouse_report.y; - mouse_report.x = 0; - mouse_report.y = 0; - - if (x != 0 && y != 0 && (timer_elapsed(mouse_debounce_timer) > TAP_CHECK)) { - if (enable_acceleration) { - float magnitude = sqrtf( mouse_report.x * mouse_report.x + mouse_report.y * mouse_report.y ); - float adjusted_magnitude = powf(magnitude, 1.2f); - x = (mouse_xy_report_t)(x * adjusted_magnitude); - y = (mouse_xy_report_t)(y * adjusted_magnitude); -// x = (mouse_xy_report_t)(x > 0 ? x * x / 16 + x : -x * x / 16 + x); -// y = (mouse_xy_report_t)(y > 0 ? y * y / 16 + y : -y * y / 16 + y); - } - mouse_report.x = x; - mouse_report.y = y; - } - - return pointing_device_task_keymap(mouse_report); -} - -bool process_record_pointing(uint16_t keycode, keyrecord_t* record) { - switch (keycode) { - case KC_ACCEL: - enable_acceleration = record->event.pressed; - break; -#if defined(POINTING_DEVICE_MOUSE_JIGGLER_ENABLE) - case PD_JIGGLER: - if (record->event.pressed) { - pointing_device_mouse_jiggler_toggle(); - } -#endif - default: - mouse_debounce_timer = timer_read(); - break; - } - return true; -} - -layer_state_t layer_state_set_pointing(layer_state_t state) { - if (layer_state_cmp(state, _GAMEPAD) || layer_state_cmp(state, _DIABLO) || layer_state_cmp(state, _DIABLOII)) { - state |= ((layer_state_t)1 << _MOUSE); - set_auto_mouse_enable(false); // auto mouse can be disabled any time during run time - } else { - set_auto_mouse_enable(true); - } - return state; -} - -#if defined(POINTING_DEVICE_MOUSE_JIGGLER_ENABLE) -static uint16_t mouse_jiggler_timer; - -bool has_mouse_report_changed(report_mouse_t* new_report, report_mouse_t* old_report) { - // Only report every 5 seconds. - if (userspace_config.mouse_jiggler && timer_elapsed(mouse_jiggler_timer) > 5000) { - mouse_jiggler_timer = timer_read(); - return true; - } - return memcmp(new_report, old_report, sizeof(report_mouse_t)); -} - -void pointing_device_mouse_jiggler_toggle(void) { - mouse_jiggler_timer = timer_read(); - userspace_config.mouse_jiggler = !userspace_config.mouse_jiggler; -} - -#endif - -#if defined(POINTING_DEVICE_AUTO_MOUSE_ENABLE) -__attribute__((weak)) bool is_mouse_record_keymap(uint16_t keycode, keyrecord_t *record) { return false; } - -bool is_mouse_record_user(uint16_t keycode, keyrecord_t* record) { - if (is_mouse_record_keymap(keycode, record)) { - return true; - } - switch (keycode) { -# if defined(KEYBOARD_ploopy) - case DPI_CONFIG: -# elif (defined(KEYBOARD_bastardkb_charybdis) || defined(KEYBOARD_handwired_tractyl_manuform)) && !defined(NO_CHARYBDIS_KEYCODES) || (defined(KEYBOARD_bastardkb_dilemma) && !defined(NO_DILEMMA_KEYCODES)) - case QK_KB ... QK_KB_MAX: -# endif - case KC_ACCEL: - return true; - } - return false; -} -#endif diff --git a/users/drashna/pointing/pointing.h b/users/drashna/pointing/pointing.h deleted file mode 100644 index c97ce5b2db..0000000000 --- a/users/drashna/pointing/pointing.h +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2021 Christopher Courtney, aka Drashna Jael're (@drashna) -// SPDX-License-Identifier: GPL-2.0-or-later - -#include "drashna.h" - -void pointing_device_init_keymap(void); -report_mouse_t pointing_device_task_keymap(report_mouse_t mouse_report); -void matrix_scan_pointing(void); -bool process_record_pointing(uint16_t keycode, keyrecord_t* record); -layer_state_t layer_state_set_pointing(layer_state_t state); -void pointing_device_mouse_jiggler_toggle(void); diff --git a/users/drashna/pointing/pointing_config.h b/users/drashna/pointing/pointing_config.h deleted file mode 100644 index 50c29ede85..0000000000 --- a/users/drashna/pointing/pointing_config.h +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once - -#define POINTING_DEVICE_MODES_ENABLE diff --git a/users/drashna/pointing/readme.md b/users/drashna/pointing/readme.md deleted file mode 100644 index 7770755050..0000000000 --- a/users/drashna/pointing/readme.md +++ /dev/null @@ -1,19 +0,0 @@ -# User Pointing Device customization - -To disable the customized pointing device code and implement it at the keymap, add `CUSTOM_POINTING_DEVICE = no` to your `rules.mk`. - -## Automatic Mouse Layer - -Movement on the optical sensor triggers a layer that has all of the mouse keys on that layer. After a set time, the layer will automatically turn itself off after 650ms. - -Also, using mousekeys will extend the amount of time that the layer will stay active. - -Additionally, layer keys for the mouse layer will lock the layer on. - -## Gaming - -When the gamepad or diablo layers are enabled, the mouse layer is locked on, as well. - -## Keycodes - -The only custom keycode for Pointing devices here is `KC_ACCEL`. This allow the mouse report to have an acceleration curve (exponential). diff --git a/users/drashna/post_config.h b/users/drashna/post_config.h deleted file mode 100644 index 5a2dfb6637..0000000000 --- a/users/drashna/post_config.h +++ /dev/null @@ -1,143 +0,0 @@ -// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once - -// because layouts seem to not be respecting config.h order atm -#ifdef RGBLIGHT_ENABLE -# undef RGBLIGHT_EFFECT_BREATHING -# undef RGBLIGHT_EFFECT_RAINBOW_MOOD -# undef RGBLIGHT_EFFECT_RAINBOW_SWIRL -# undef RGBLIGHT_EFFECT_SNAKE -# undef RGBLIGHT_EFFECT_KNIGHT -# undef RGBLIGHT_EFFECT_CHRISTMAS -# undef RGBLIGHT_EFFECT_STATIC_GRADIENT -# undef RGBLIGHT_EFFECT_RGB_TEST -# undef RGBLIGHT_EFFECT_ALTERNATING -# undef RGBLIGHT_EFFECT_TWINKLE -# if defined(__AVR__) && (!defined(__AVR_AT90USB1286__) && !defined(RGBLIGHT_ALL_ANIMATIONS)) -# define RGBLIGHT_EFFECT_BREATHING -# define RGBLIGHT_EFFECT_SNAKE -# define RGBLIGHT_EFFECT_KNIGHT -# else -# define RGBLIGHT_EFFECT_BREATHING -# define RGBLIGHT_EFFECT_RAINBOW_MOOD -# define RGBLIGHT_EFFECT_RAINBOW_SWIRL -# define RGBLIGHT_EFFECT_SNAKE -# define RGBLIGHT_EFFECT_KNIGHT -# if defined(RGBLIGHT_ALL_ANIMATIONS) -# define RGBLIGHT_EFFECT_CHRISTMAS -# define RGBLIGHT_EFFECT_STATIC_GRADIENT -# define RGBLIGHT_EFFECT_RGB_TEST -# define RGBLIGHT_EFFECT_ALTERNATING -# endif -# define RGBLIGHT_EFFECT_TWINKLE -# endif -#endif - -#ifdef RGB_MATRIX_ENABLE -# ifndef RGB_MATRIX_REST_MODE -# if defined(SPLIT_KEYBOARD) || defined(KEYBOARD_ergodox_ez) || defined(KEYBOARD_moonlander) -# define RGB_MATRIX_REST_MODE RGB_MATRIX_CYCLE_OUT_IN_DUAL -# else -# define RGB_MATRIX_REST_MODE RGB_MATRIX_CYCLE_OUT_IN -# endif -# endif -# undef RGB_MATRIX_DEFAULT_MODE -# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_REST_MODE -#endif - -#ifdef MOUSEKEY_ENABLE -// mouse movement config -# ifdef MK_3_SPEED -# undef MK_3_SPEED -# endif -# define MK_KINETIC_SPEED -# ifdef MK_KINETIC_SPEED -# ifndef MOUSEKEY_DELAY -# define MOUSEKEY_DELAY 8 -# endif -# ifndef MOUSEKEY_INTERVAL -# define MOUSEKEY_INTERVAL 20 -# endif -# ifndef MOUSEKEY_MOVE_DELTA -# define MOUSEKEY_MOVE_DELTA 25 -# endif -# else -# ifndef MOUSEKEY_DELAY -# define MOUSEKEY_DELAY 300 -# endif -# ifndef MOUSEKEY_INTERVAL -# define MOUSEKEY_INTERVAL 50 -# endif -# ifndef MOUSEKEY_MOVE_DELTA -# define MOUSEKEY_MOVE_DELTA 5 -# endif -# endif -# ifndef MOUSEKEY_MAX_SPEED -# define MOUSEKEY_MAX_SPEED 7 -# endif -# ifndef MOUSEKEY_TIME_TO_MAX -# define MOUSEKEY_TIME_TO_MAX 60 -# endif -# ifndef MOUSEKEY_INITIAL_SPEED -# define MOUSEKEY_INITIAL_SPEED 100 -# endif -# ifndef MOUSEKEY_BASE_SPEED -# define MOUSEKEY_BASE_SPEED 1000 -# endif -# ifndef MOUSEKEY_DECELERATED_SPEED -# define MOUSEKEY_DECELERATED_SPEED 400 -# endif -# ifndef MOUSEKEY_ACCELERATED_SPEED -# define MOUSEKEY_ACCELERATED_SPEED 3000 -# endif -// mouse scroll config -# ifndef MOUSEKEY_WHEEL_DELAY -# define MOUSEKEY_WHEEL_DELAY 15 -# endif -# ifndef MOUSEKEY_WHEEL_DELTA -# define MOUSEKEY_WHEEL_DELTA 1 -# endif -# ifndef MOUSEKEY_WHEEL_INTERVAL -# define MOUSEKEY_WHEEL_INTERVAL 50 -# endif -# ifndef MOUSEKEY_WHEEL_MAX_SPEED -# define MOUSEKEY_WHEEL_MAX_SPEED 8 -# endif -# ifndef MOUSEKEY_WHEEL_TIME_TO_MAX -# define MOUSEKEY_WHEEL_TIME_TO_MAX 80 -# endif -// mouse scroll kinetic config -# ifndef MOUSEKEY_WHEEL_INITIAL_MOVEMENTS -# define MOUSEKEY_WHEEL_INITIAL_MOVEMENTS 8 -# endif -# ifndef MOUSEKEY_WHEEL_BASE_MOVEMENTS -# define MOUSEKEY_WHEEL_BASE_MOVEMENTS 48 -# endif -# ifndef MOUSEKEY_WHEEL_ACCELERATED_MOVEMENTS -# define MOUSEKEY_WHEEL_ACCELERATED_MOVEMENTS 48 -# endif -# ifndef MOUSEKEY_WHEEL_DECELERATED_MOVEMENTS -# define MOUSEKEY_WHEEL_DECELERATED_MOVEMENTS 8 -# endif -#endif // MOUSEKEY_ENABLE - -#define MOUSE_EXTENDED_REPORT - -#ifndef TAPPING_TERM -# define TAPPING_TERM 175 -#endif - -#if (__has_include("../../../qmk_secrets/config.h") && !defined(NO_SECRETS)) -# include "../../../qmk_secrets/config.h" -#endif - -#if defined(SPLIT_KEYBOARD) && defined(PROTOCOL_CHIBIOS) && !defined(USB_SUSPEND_WAKEUP_DELAY) -# define USB_SUSPEND_WAKEUP_DELAY 500 -#endif - -#if defined(XAP_ENABLE) && !defined(__AVR__) -# undef DYNAMIC_KEYMAP_LAYER_COUNT -# define DYNAMIC_KEYMAP_LAYER_COUNT 12 -#endif diff --git a/users/drashna/readme.md b/users/drashna/readme.md deleted file mode 100644 index e52b67e835..0000000000 --- a/users/drashna/readme.md +++ /dev/null @@ -1,17 +0,0 @@ -# Overview - -This is my personal userspace file. Most of my code exists here, as it's heavily shared. - -* [Callback (keymap+misc)](callbacks.md) -* [Keycode Handling](keyrecords/readme.md) - * [Autocorrection](keyrecords/autocorrection/readme.md) - * [Cap Words](keyrecords/capwords.md) - * [Diablo Tap Dancing](keyrecords/tap_dance.md) - * [Keymap Wrappers](keyrecords/wrappers.md) - * [Secret Macros](keyrecords/secrets.md) - * [Custom Keycodes](keyrecords/keycodes.md) - * [Unicode Input](keyrecords/unicode.md) -* [OLED Display](oled/readme.md) -* [Pointing Devices](pointing/readme.md) -* [RGB Customization](rgb/readme.md) -* [Split Transport](split/readme.md) diff --git a/users/drashna/rgb/readme.md b/users/drashna/rgb/readme.md deleted file mode 100644 index 4deaa0a463..0000000000 --- a/users/drashna/rgb/readme.md +++ /dev/null @@ -1,52 +0,0 @@ -# RGB - -Custom RGB code can be disabled by setting `CUSTOM_RGBLIGHT = no` or `CUSTOM_RGB_MATRIX = no` in your `rules.mk` - -## RGB Light - -### Layer Indication Code - -At least for RGB Light, the `layer_state_set` function is used to detect the current highest layer, and change the underglow based on that layer. - -This works for both the regular layers, and for the default layers, too. - -I use the sethsv variants of the commands, so that different modes can be used, as well. - -RGB Matrix uses a custom, per board implementation, at the moment. - -### RGB Light Startup Animation - -On startup, if enabled, the board will cycle through the entire hue wheel, starting and ending on the default layer color. - -```c -void keyboard_post_init_rgb(void) { -#if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_STARTUP_ANIMATION) - if (userspace_config.rgb_layer_change) { rgblight_enable_noeeprom(); } - if (rgblight_config.enable) { - layer_state_set_user(layer_state); - uint16_t old_hue = rgblight_config.hue; - rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); - for (uint16_t i = 255; i > 0; i--) { - rgblight_sethsv_noeeprom( ( i + old_hue) % 255, 255, 255); - matrix_scan(); - wait_ms(10); - } - } -#endif - layer_state_set_user(layer_state); -} -``` - -This could probably benefit from some cleanup and better handling. - -## RGB Matrix - -### Idle Animation - -This feature can be toggled with the `RGB_IDL` keycode. - -This sets the mode to the Heatmap Animation when typing, but will switch to the cycle in animations when idle. - -### Layer Indication - -This sets the modifier keys to indicate the current layer state, with the option to override the behavior. diff --git a/users/drashna/rgb/rgb_matrix_config.h b/users/drashna/rgb/rgb_matrix_config.h deleted file mode 100644 index bc2c04d981..0000000000 --- a/users/drashna/rgb/rgb_matrix_config.h +++ /dev/null @@ -1,106 +0,0 @@ -// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once - -#define RGB_MATRIX_KEYPRESSES // reacts to keypresses (will slow down matrix scan by a lot) -// # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (not recommened) -#define RGB_MATRIX_FRAMEBUFFER_EFFECTS -#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended - -#undef ENABLE_RGB_MATRIX_ALPHAS_MODS -#undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN -#undef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT -#undef ENABLE_RGB_MATRIX_BREATHING -#undef ENABLE_RGB_MATRIX_BAND_SAT -#undef ENABLE_RGB_MATRIX_BAND_VAL -#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT -#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL -#undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT -#undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL -#undef ENABLE_RGB_MATRIX_CYCLE_ALL -#undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT -#undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN -#undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON -#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN -#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL -#undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL -#undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL -#undef ENABLE_RGB_MATRIX_DUAL_BEACON -#undef ENABLE_RGB_MATRIX_RAINBOW_BEACON -#undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS -#undef ENABLE_RGB_MATRIX_RAINDROPS -#undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS -#undef ENABLE_RGB_MATRIX_HUE_BREATHING -#undef ENABLE_RGB_MATRIX_HUE_PENDULUM -#undef ENABLE_RGB_MATRIX_HUE_WAVE -#undef ENABLE_RGB_MATRIX_PIXEL_RAIN -#undef ENABLE_RGB_MATRIX_PIXEL_FLOW -#undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL -// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined -#undef ENABLE_RGB_MATRIX_TYPING_HEATMAP -#undef ENABLE_RGB_MATRIX_DIGITAL_RAIN -// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined -#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE -#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE -#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -#undef ENABLE_RGB_MATRIX_SPLASH -#undef ENABLE_RGB_MATRIX_MULTISPLASH -#undef ENABLE_RGB_MATRIX_SOLID_SPLASH -#undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH - -#define ENABLE_RGB_MATRIX_TYPING_HEATMAP -#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL -#if !defined(SPLIT_KEYBOARD) && !defined(KEYBOARD_ergodox_ez) && !defined(KEYBOARD_moonlander) -# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN -#endif -#if defined(__arm__) || defined(__AVR_AT90USB1286__) || defined(KEYBOARD_launchpad) -// RGB Matrix Animation modes. Explicitly enabled -// For full list of effects, see: -// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects -# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN -# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT -# define ENABLE_RGB_MATRIX_BREATHING -# define ENABLE_RGB_MATRIX_BAND_SAT -# define ENABLE_RGB_MATRIX_BAND_VAL -# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT -# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL -# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT -# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL -# define ENABLE_RGB_MATRIX_CYCLE_ALL -# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT -# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN -# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON -# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN -# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL -# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL -# define ENABLE_RGB_MATRIX_DUAL_BEACON -# define ENABLE_RGB_MATRIX_RAINBOW_BEACON -# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS -# define ENABLE_RGB_MATRIX_RAINDROPS -# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS -# define ENABLE_RGB_MATRIX_HUE_BREATHING -# define ENABLE_RGB_MATRIX_HUE_PENDULUM -# define ENABLE_RGB_MATRIX_HUE_WAVE -# define ENABLE_RGB_MATRIX_PIXEL_RAIN -# define ENABLE_RGB_MATRIX_PIXEL_FLOW -# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL -# define ENABLE_RGB_MATRIX_DIGITAL_RAIN -# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE -# define ENABLE_RGB_MATRIX_SOLID_REACTIVE -# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -# define ENABLE_RGB_MATRIX_SPLASH -# define ENABLE_RGB_MATRIX_MULTISPLASH -# define ENABLE_RGB_MATRIX_SOLID_SPLASH -# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH -#endif // AVR diff --git a/users/drashna/rgb/rgb_matrix_stuff.c b/users/drashna/rgb/rgb_matrix_stuff.c deleted file mode 100644 index 588e51daf9..0000000000 --- a/users/drashna/rgb/rgb_matrix_stuff.c +++ /dev/null @@ -1,190 +0,0 @@ -// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) -// SPDX-License-Identifier: GPL-2.0-or-later - -#include "drashna.h" -#include "rgb_matrix.h" -#include "lib/lib8tion/lib8tion.h" -extern led_config_t g_led_config; - -static uint32_t hypno_timer; - -void rgb_matrix_layer_helper(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode, uint8_t speed, uint8_t led_type, uint8_t led_min, uint8_t led_max) { - HSV hsv = {hue, sat, val}; - if (hsv.v > rgb_matrix_get_val()) { - hsv.v = rgb_matrix_get_val(); - } - - switch (mode) { - case 1: // breathing - { - uint16_t time = scale16by8(g_rgb_timer, speed / 8); - hsv.v = scale8(abs8(sin8(time) - 128) * 2, hsv.v); - RGB rgb = hsv_to_rgb(hsv); - for (uint8_t i = 0; i < RGB_MATRIX_LED_COUNT; i++) { - if (HAS_FLAGS(g_led_config.flags[i], led_type)) { - RGB_MATRIX_INDICATOR_SET_COLOR(i, rgb.r, rgb.g, rgb.b); - } - } - break; - } - default: // Solid Color - { - RGB rgb = hsv_to_rgb(hsv); - for (uint8_t i = 0; i < RGB_MATRIX_LED_COUNT; i++) { - if (HAS_FLAGS(g_led_config.flags[i], led_type)) { - RGB_MATRIX_INDICATOR_SET_COLOR(i, rgb.r, rgb.g, rgb.b); - } - } - break; - } - } -} - -void housekeeping_task_rgb_matrix(void) { -#if defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS) - if (userspace_config.rgb_matrix_idle_anim && rgb_matrix_get_mode() == RGB_MATRIX_TYPING_HEATMAP && sync_timer_elapsed32(hypno_timer) > 15000) { - rgb_matrix_mode_noeeprom(RGB_MATRIX_REST_MODE); - } -#endif -} - -void keyboard_post_init_rgb_matrix(void) { -#if defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS) - if (userspace_config.rgb_matrix_idle_anim) { - rgb_matrix_mode_noeeprom(RGB_MATRIX_REST_MODE); - } -#endif - if (userspace_config.rgb_layer_change) { - rgb_matrix_set_flags(LED_FLAG_UNDERGLOW | LED_FLAG_KEYLIGHT | LED_FLAG_INDICATOR); - } else { - rgb_matrix_set_flags(LED_FLAG_ALL); - } -} - -bool process_record_user_rgb_matrix(uint16_t keycode, keyrecord_t *record) { -#if defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS) - hypno_timer = sync_timer_read32(); - if (userspace_config.rgb_matrix_idle_anim && rgb_matrix_get_mode() == RGB_MATRIX_REST_MODE) { - rgb_matrix_mode_noeeprom(RGB_MATRIX_TYPING_HEATMAP); - } -#endif - switch (keycode) { - case RGB_IDL: // This allows me to use underglow as layer indication, or as normal -#if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS) - if (record->event.pressed) { - userspace_config.rgb_matrix_idle_anim ^= 1; - dprintf("RGB Matrix Idle Animation [EEPROM]: %u\n", userspace_config.rgb_matrix_idle_anim); - eeconfig_update_user_config(&userspace_config.raw); - if (userspace_config.rgb_matrix_idle_anim) { - rgb_matrix_mode_noeeprom(RGB_MATRIX_TYPING_HEATMAP); - } - } -#endif - break; - } - return true; -} - -__attribute__((weak)) bool rgb_matrix_indicators_advanced_keymap(uint8_t led_min, uint8_t led_max) { - return true; -} -bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { - if (!rgb_matrix_indicators_advanced_keymap(led_min, led_max)) { - return false; - } - -#if defined(RGBLIGHT_ENABLE) - if (!userspace_config.rgb_layer_change) -#else - if (userspace_config.rgb_layer_change) -#endif - { - switch (get_highest_layer(layer_state & ~((layer_state_t)1 << _MOUSE))) { - case _GAMEPAD: - rgb_matrix_layer_helper(HSV_ORANGE, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); - break; - case _DIABLO: - rgb_matrix_layer_helper(HSV_RED, 1, rgb_matrix_config.speed * 8, LED_FLAG_MODIFIER, led_min, led_max); - break; - case _RAISE: - rgb_matrix_layer_helper(HSV_YELLOW, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); - break; - case _LOWER: - rgb_matrix_layer_helper(HSV_GREEN, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); - break; - case _ADJUST: - rgb_matrix_layer_helper(HSV_RED, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); - break; - default: - if (layer_state_is(_MOUSE)) { - rgb_matrix_layer_helper(HSV_PURPLE, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); - } else { - switch (get_highest_layer(default_layer_state)) { - case _DEFAULT_LAYER_1: - rgb_matrix_layer_helper(DEFAULT_LAYER_1_HSV, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); - break; - case _DEFAULT_LAYER_2: - rgb_matrix_layer_helper(DEFAULT_LAYER_2_HSV, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); - break; - case _DEFAULT_LAYER_3: - rgb_matrix_layer_helper(DEFAULT_LAYER_3_HSV, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); - break; - case _DEFAULT_LAYER_4: - rgb_matrix_layer_helper(DEFAULT_LAYER_4_HSV, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); - break; - } - } - break; - } - } - return false; -} - -__attribute__((weak)) bool rgb_matrix_indicators_keymap(void) { - return true; -} -bool rgb_matrix_indicators_user(void) { - return rgb_matrix_indicators_keymap(); -} - - -//---------------------------------------------------------- -// RGB Matrix naming -#include - -#if defined(RGB_MATRIX_EFFECT) -# undef RGB_MATRIX_EFFECT -#endif // defined(RGB_MATRIX_EFFECT) - -#define RGB_MATRIX_EFFECT(x) RGB_MATRIX_EFFECT_##x, -enum { - RGB_MATRIX_EFFECT_NONE, -#include "rgb_matrix_effects.inc" -#undef RGB_MATRIX_EFFECT -#ifdef RGB_MATRIX_CUSTOM_KB -# include "rgb_matrix_kb.inc" -#endif -#ifdef RGB_MATRIX_CUSTOM_USER -# include "rgb_matrix_user.inc" -#endif -}; - -#define RGB_MATRIX_EFFECT(x) \ - case RGB_MATRIX_EFFECT_##x: \ - return #x; -const char* rgb_matrix_name(uint8_t effect) { - switch (effect) { - case RGB_MATRIX_EFFECT_NONE: - return "NONE"; -#include "rgb_matrix_effects.inc" -#undef RGB_MATRIX_EFFECT -#ifdef RGB_MATRIX_CUSTOM_KB -# include "rgb_matrix_kb.inc" -#endif -#ifdef RGB_MATRIX_CUSTOM_USER -# include "rgb_matrix_user.inc" -#endif - default: - return "UNKNOWN"; - } -} diff --git a/users/drashna/rgb/rgb_matrix_stuff.h b/users/drashna/rgb/rgb_matrix_stuff.h deleted file mode 100644 index 80770bf40f..0000000000 --- a/users/drashna/rgb/rgb_matrix_stuff.h +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once -#include "quantum.h" - -bool process_record_user_rgb_matrix(uint16_t keycode, keyrecord_t *record); -void keyboard_post_init_rgb_matrix(void); -void housekeeping_task_rgb_matrix(void); - -void rgb_matrix_set_color_all(uint8_t red, uint8_t green, uint8_t blue); -void rgb_matrix_layer_helper(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode, uint8_t speed, uint8_t led_type, uint8_t led_min, uint8_t led_max); - -bool rgb_matrix_indicators_advanced_keymap(uint8_t led_min, uint8_t led_max); -bool rgb_matrix_indicators_keymap(void); - -const char* rgb_matrix_name(uint8_t effect); diff --git a/users/drashna/rgb/rgb_stuff.c b/users/drashna/rgb/rgb_stuff.c deleted file mode 100644 index cc85425aff..0000000000 --- a/users/drashna/rgb/rgb_stuff.c +++ /dev/null @@ -1,165 +0,0 @@ -// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) -// SPDX-License-Identifier: GPL-2.0-or-later - -#include "drashna.h" -#include "rgb_stuff.h" -#include "eeprom.h" - -bool has_initialized; - -void rgblight_sethsv_default_helper(uint8_t index) { - rgblight_sethsv_at(rgblight_get_hue(), rgblight_get_sat(), rgblight_get_val(), index); -} -void rgblight_set_hsv_and_mode(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode) { - if (val > RGBLIGHT_LIMIT_VAL) { - val = RGBLIGHT_LIMIT_VAL; - } - rgblight_sethsv_noeeprom(hue, sat, val); - // wait_us(175); // Add a slight delay between color and mode to ensure it's processed correctly - rgblight_mode_noeeprom(mode); -} - -bool process_record_user_rgb_light(uint16_t keycode, keyrecord_t *record) { - return true; -} - -#if defined(RGBLIGHT_STARTUP_ANIMATION) -static bool is_enabled; -static bool is_rgblight_startup; -static HSV old_hsv; -static uint8_t old_mode; -deferred_token rgb_startup_token; - -uint32_t rgb_startup_animation(uint32_t triger_time, void *cb_arg) { - if (is_rgblight_startup && is_keyboard_master()) { - static uint8_t counter = 0; - counter++; - rgblight_sethsv_noeeprom((counter + old_hsv.h) % 255, 255, 255); - if (counter >= 255) { - is_rgblight_startup = false; - if (userspace_config.rgb_layer_change) { - layer_state_set_rgb_light(layer_state); - } else { - rgblight_set_hsv_and_mode(old_hsv.h, old_hsv.s, old_hsv.v, old_mode); - } - if (!is_enabled) { - rgblight_disable_noeeprom(); - } - } - } - return is_rgblight_startup ? 10 : 0; -} -#endif - -bool is_rgblight_startup_running(void) { -#if defined(RGBLIGHT_STARTUP_ANIMATION) - return is_rgblight_startup && is_keyboard_master(); -#else - return false; -#endif -} - - -void keyboard_post_init_rgb_light(void) { -#if defined(RGBLIGHT_STARTUP_ANIMATION) - is_enabled = rgblight_is_enabled(); - if (userspace_config.rgb_layer_change) { - layer_state_set_rgb_light(layer_state); - } - old_hsv = rgblight_get_hsv(); - old_mode = rgblight_get_mode(); - rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); - is_rgblight_startup = true; - rgb_startup_token = defer_exec(300, rgb_startup_animation, NULL); -#endif - if (userspace_config.rgb_layer_change) { - layer_state_set_rgb_light(layer_state); - } -} - -layer_state_t layer_state_set_rgb_light(layer_state_t state) { -#ifdef RGBLIGHT_ENABLE - if (userspace_config.rgb_layer_change) { - switch (get_highest_layer(state & ~((layer_state_t)1 << _MOUSE))) { - case _MEDIA: - rgblight_set_hsv_and_mode(HSV_CHARTREUSE, RGBLIGHT_MODE_KNIGHT + 1); - break; - case _GAMEPAD: - rgblight_set_hsv_and_mode(HSV_ORANGE, RGBLIGHT_MODE_SNAKE + 2); - break; - case _DIABLO: - case _DIABLOII: - rgblight_set_hsv_and_mode(HSV_RED, RGBLIGHT_MODE_BREATHING + 3); - break; - case _RAISE: - rgblight_set_hsv_and_mode(HSV_YELLOW, RGBLIGHT_MODE_BREATHING + 3); - break; - case _LOWER: - rgblight_set_hsv_and_mode(HSV_GREEN, RGBLIGHT_MODE_BREATHING + 3); - break; - case _ADJUST: - rgblight_set_hsv_and_mode(HSV_RED, RGBLIGHT_MODE_KNIGHT + 2); - break; - default: - if (layer_state_cmp(state, _MOUSE)) { -# if defined(RGBLIGHT_EFFECT_TWINKLE) - rgblight_set_hsv_and_mode(HSV_CHARTREUSE, RGBLIGHT_MODE_TWINKLE + 5); -# else - rgblight_set_hsv_and_mode(HSV_CHARTREUSE, RGBLIGHT_MODE_BREATHING + 3); -# endif - } else { - default_layer_state_set_rgb_light(default_layer_state); - } - } -#endif // RGBLIGHT_ENABLE - } - return state; -} - -layer_state_t default_layer_state_set_rgb_light(layer_state_t state) { - switch (get_highest_layer(state)) { - case _DEFAULT_LAYER_1: - rgblight_set_hsv_and_mode(DEFAULT_LAYER_1_HSV, RGBLIGHT_MODE_STATIC_LIGHT); - break; - case _DEFAULT_LAYER_2: - rgblight_set_hsv_and_mode(DEFAULT_LAYER_2_HSV, RGBLIGHT_MODE_STATIC_LIGHT); - break; - case _DEFAULT_LAYER_3: - rgblight_set_hsv_and_mode(DEFAULT_LAYER_3_HSV, RGBLIGHT_MODE_STATIC_LIGHT); - break; - case _DEFAULT_LAYER_4: - rgblight_set_hsv_and_mode(DEFAULT_LAYER_4_HSV, RGBLIGHT_MODE_STATIC_LIGHT); - break; - } - return state; -} - -#define _RGBM_SINGLE_STATIC(sym) \ - case RGBLIGHT_MODE_##sym: \ - return #sym; -#define _RGBM_SINGLE_DYNAMIC(sym) \ - case RGBLIGHT_MODE_##sym: \ - return #sym; -#define _RGBM_MULTI_STATIC(sym) \ - case RGBLIGHT_MODE_##sym: \ - return #sym; -#define _RGBM_MULTI_DYNAMIC(sym) \ - case RGBLIGHT_MODE_##sym: \ - return #sym; -#define _RGBM_TMP_STATIC(sym, msym) \ - case RGBLIGHT_MODE_##sym: \ - return #msym; -#define _RGBM_TMP_DYNAMIC(sym, msym) \ - case RGBLIGHT_MODE_##sym: \ - return #msym; - - -const char* rgblight_name(uint8_t effect) { - switch (effect) { -#include "rgblight_modes.h" - case 0: - return "Off"; - default: - return "UNKNOWN"; - } -} diff --git a/users/drashna/rgb/rgb_stuff.h b/users/drashna/rgb/rgb_stuff.h deleted file mode 100644 index f76c591e03..0000000000 --- a/users/drashna/rgb/rgb_stuff.h +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once -#include "quantum.h" - -bool process_record_user_rgb_light(uint16_t keycode, keyrecord_t *record); -void keyboard_post_init_rgb_light(void); -void matrix_scan_rgb_light(void); -layer_state_t layer_state_set_rgb_light(layer_state_t state); -layer_state_t default_layer_state_set_rgb_light(layer_state_t state); -void rgblight_sethsv_default_helper(uint8_t index); - -const char* rgblight_name(uint8_t effect); -bool is_rgblight_startup_running(void); diff --git a/users/drashna/rgb/rgblight_config.h b/users/drashna/rgb/rgblight_config.h deleted file mode 100644 index d5a6917f1c..0000000000 --- a/users/drashna/rgb/rgblight_config.h +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once - -#define RGBLIGHT_SLEEP -#define RGBLIGHT_EFFECT_TWINKLE_LIFE 250 -#define RGBLIGHT_EFFECT_TWINKLE_PROBABILITY 1 / 24 - -#ifdef RGBLIGHT_DEFAULT_MODE -# undef RGBLIGHT_DEFAULT_MODE -#endif diff --git a/users/drashna/rgblight_breathe_table.h b/users/drashna/rgblight_breathe_table.h deleted file mode 100644 index d406395978..0000000000 --- a/users/drashna/rgblight_breathe_table.h +++ /dev/null @@ -1,121 +0,0 @@ -// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) -// SPDX-License-Identifier: GPL-2.0-or-later - -#ifndef RGBLIGHT_EFFECT_BREATHE_TABLE -#define RGBLIGHT_EFFECT_BREATHE_TABLE - -// clang-format off -const uint8_t rgblight_effect_breathe_table[] PROGMEM = { -/* #define RGBLIGHT_EFFECT_BREATHE_CENTER 0.00 */ -/* #define RGBLIGHT_EFFECT_BREATHE_MAX 255 */ - - #if RGBLIGHT_BREATHE_TABLE_SIZE == 256 - 0x44, 0x45, 0x47, 0x48, 0x4a, 0x4b, 0x4c, 0x4e, - 0x4f, 0x51, 0x52, 0x54, 0x55, 0x57, 0x58, 0x5a, - 0x5c, 0x5d, 0x5f, 0x60, 0x62, 0x64, 0x65, 0x67, - 0x69, 0x6a, 0x6c, 0x6e, 0x70, 0x72, 0x73, 0x75, - 0x77, 0x79, 0x7b, 0x7c, 0x7e, 0x80, 0x82, 0x84, - 0x86, 0x88, 0x8a, 0x8b, 0x8d, 0x8f, 0x91, 0x93, - 0x95, 0x97, 0x99, 0x9b, 0x9d, 0x9f, 0xa1, 0xa3, - 0xa5, 0xa7, 0xa9, 0xaa, 0xac, 0xae, 0xb0, 0xb2, - 0xb4, 0xb6, 0xb8, 0xba, 0xbc, 0xbe, 0xbf, 0xc1, - 0xc3, 0xc5, 0xc7, 0xc9, 0xca, 0xcc, 0xce, 0xd0, - 0xd1, 0xd3, 0xd5, 0xd6, 0xd8, 0xda, 0xdb, 0xdd, - 0xde, 0xe0, 0xe1, 0xe3, 0xe4, 0xe5, 0xe7, 0xe8, - 0xe9, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, - 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf8, - 0xf9, 0xfa, 0xfa, 0xfb, 0xfc, 0xfc, 0xfc, 0xfd, - 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, - 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, - 0xfd, 0xfc, 0xfc, 0xfc, 0xfb, 0xfa, 0xfa, 0xf9, - 0xf8, 0xf8, 0xf7, 0xf6, 0xf5, 0xf4, 0xf3, 0xf2, - 0xf1, 0xf0, 0xef, 0xee, 0xed, 0xec, 0xeb, 0xe9, - 0xe8, 0xe7, 0xe5, 0xe4, 0xe3, 0xe1, 0xe0, 0xde, - 0xdd, 0xdb, 0xda, 0xd8, 0xd6, 0xd5, 0xd3, 0xd1, - 0xd0, 0xce, 0xcc, 0xca, 0xc9, 0xc7, 0xc5, 0xc3, - 0xc1, 0xbf, 0xbe, 0xbc, 0xba, 0xb8, 0xb6, 0xb4, - 0xb2, 0xb0, 0xae, 0xac, 0xaa, 0xa9, 0xa7, 0xa5, - 0xa3, 0xa1, 0x9f, 0x9d, 0x9b, 0x99, 0x97, 0x95, - 0x93, 0x91, 0x8f, 0x8d, 0x8b, 0x8a, 0x88, 0x86, - 0x84, 0x82, 0x80, 0x7e, 0x7c, 0x7b, 0x79, 0x77, - 0x75, 0x73, 0x72, 0x70, 0x6e, 0x6c, 0x6a, 0x69, - 0x67, 0x65, 0x64, 0x62, 0x60, 0x5f, 0x5d, 0x5c, - 0x5a, 0x58, 0x57, 0x55, 0x54, 0x52, 0x51, 0x4f, - 0x4e, 0x4c, 0x4b, 0x4a, 0x48, 0x47, 0x45, 0x44 - #endif /* 256 bytes table */ - - #if RGBLIGHT_BREATHE_TABLE_SIZE == 128 - 0x44, 0x47, 0x4a, 0x4c, - 0x4f, 0x52, 0x55, 0x58, - 0x5c, 0x5f, 0x62, 0x65, - 0x69, 0x6c, 0x70, 0x73, - 0x77, 0x7b, 0x7e, 0x82, - 0x86, 0x8a, 0x8d, 0x91, - 0x95, 0x99, 0x9d, 0xa1, - 0xa5, 0xa9, 0xac, 0xb0, - 0xb4, 0xb8, 0xbc, 0xbf, - 0xc3, 0xc7, 0xca, 0xce, - 0xd1, 0xd5, 0xd8, 0xdb, - 0xde, 0xe1, 0xe4, 0xe7, - 0xe9, 0xec, 0xee, 0xf0, - 0xf2, 0xf4, 0xf6, 0xf8, - 0xf9, 0xfa, 0xfc, 0xfc, - 0xfd, 0xfe, 0xfe, 0xfe, - 0xfe, 0xfe, 0xfe, 0xfe, - 0xfd, 0xfc, 0xfb, 0xfa, - 0xf8, 0xf7, 0xf5, 0xf3, - 0xf1, 0xef, 0xed, 0xeb, - 0xe8, 0xe5, 0xe3, 0xe0, - 0xdd, 0xda, 0xd6, 0xd3, - 0xd0, 0xcc, 0xc9, 0xc5, - 0xc1, 0xbe, 0xba, 0xb6, - 0xb2, 0xae, 0xaa, 0xa7, - 0xa3, 0x9f, 0x9b, 0x97, - 0x93, 0x8f, 0x8b, 0x88, - 0x84, 0x80, 0x7c, 0x79, - 0x75, 0x72, 0x6e, 0x6a, - 0x67, 0x64, 0x60, 0x5d, - 0x5a, 0x57, 0x54, 0x51, - 0x4e, 0x4b, 0x48, 0x45 - #endif /* 128 bytes table */ - - #if RGBLIGHT_BREATHE_TABLE_SIZE == 64 - 0x44, 0x4a, - 0x4f, 0x55, - 0x5c, 0x62, - 0x69, 0x70, - 0x77, 0x7e, - 0x86, 0x8d, - 0x95, 0x9d, - 0xa5, 0xac, - 0xb4, 0xbc, - 0xc3, 0xca, - 0xd1, 0xd8, - 0xde, 0xe4, - 0xe9, 0xee, - 0xf2, 0xf6, - 0xf9, 0xfc, - 0xfd, 0xfe, - 0xfe, 0xfe, - 0xfd, 0xfb, - 0xf8, 0xf5, - 0xf1, 0xed, - 0xe8, 0xe3, - 0xdd, 0xd6, - 0xd0, 0xc9, - 0xc1, 0xba, - 0xb2, 0xaa, - 0xa3, 0x9b, - 0x93, 0x8b, - 0x84, 0x7c, - 0x75, 0x6e, - 0x67, 0x60, - 0x5a, 0x54, - 0x4e, 0x48 - #endif /* 64 bytes table */ -}; -// clang-format on - -static const int table_scale = 256 / sizeof(rgblight_effect_breathe_table); - -#endif /* RGBLIGHT_EFFECT_BREATHE_TABLE */ diff --git a/users/drashna/rules.mk b/users/drashna/rules.mk deleted file mode 100644 index 6287d6e78c..0000000000 --- a/users/drashna/rules.mk +++ /dev/null @@ -1,136 +0,0 @@ -SRC += $(USER_PATH)/drashna.c \ - $(USER_PATH)/callbacks.c \ - $(USER_PATH)/keyrecords/process_records.c \ - $(USER_PATH)/keyrecords/tapping.c \ - $(USER_PATH)/eeconfig_users.c - -# TOP_SYMBOLS = yes - -DEBOUNCE_TYPE = asym_eager_defer_pk -DEFERRED_EXEC_ENABLE = yes -OS_DETECTION_ENABLE = yes - -ifeq ($(PLATFORM),CHIBIOS) - # cortex-m4 has DSP+FPU support, so use hack to enable it for lib8tion - ifeq ($(strip $(MCU)), cortex-m4) - OPT_DEFS += -DFASTLED_TEENSY3 - endif -else - ifneq ($(strip $(LTO_SUPPORTED)), no) - LTO_ENABLE = yes - endif - SPACE_CADET_ENABLE = no - GRAVE_ESC_ENABLE = no -endif -# DEBUG_MATRIX_SCAN_RATE_ENABLE = api - --include $(USER_PATH)/../../../qmk_secrets/rules.mk - -ifeq ($(strip $(MAKE_BOOTLOADER)), yes) - OPT_DEFS += -DMAKE_BOOTLOADER -endif - -# At least until build.mk or the like drops, this is here to prevent -# VUSB boards from enabling NKRO, as they do not support it. Ideally -# this should be handled per keyboard, but until that happens ... -ifeq ($(strip $(PROTOCOL)), VUSB) - NKRO_ENABLE := no -endif - -ifeq ($(strip $(PER_KEY_TAPPING)), yes) - OPT_DEFS += -DPER_KEY_TAPPING -endif - -CUSTOM_UNICODE_ENABLE ?= yes -ifeq ($(strip $(CUSTOM_UNICODE_ENABLE)), yes) - UNICODE_ENABLE := no - UNICODEMAP_ENABLE := no - UCIS_ENABLE := no - UNICODE_COMMON := yes - OPT_DEFS += -DCUSTOM_UNICODE_ENABLE - SRC += $(USER_PATH)/keyrecords/unicode.c -endif - -CUSTOM_TAP_DANCE ?= yes -ifeq ($(strip $(CUSTOM_TAP_DANCE)), yes) - ifeq ($(strip $(TAP_DANCE_ENABLE)), yes) - SRC += $(USER_PATH)/keyrecords/tap_dances.c - endif -endif - -CUSTOM_RGBLIGHT ?= yes -ifeq ($(strip $(RGBLIGHT_ENABLE)), yes) - ifeq ($(strip $(CUSTOM_RGBLIGHT)), yes) - SRC += $(USER_PATH)/rgb/rgb_stuff.c - OPT_DEFS += -DCUSTOM_RGBLIGHT - ifeq ($(strip $(RGBLIGHT_NOEEPROM)), yes) - OPT_DEFS += -DRGBLIGHT_NOEEPROM - endif - ifeq ($(strip $(RGBLIGHT_STARTUP_ANIMATION)), yes) - OPT_DEFS += -DRGBLIGHT_STARTUP_ANIMATION - endif - endif -endif - -CUSTOM_RGB_MATRIX ?= yes -ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes) - ifeq ($(strip $(CUSTOM_RGB_MATRIX)), yes) - SRC += $(USER_PATH)/rgb/rgb_matrix_stuff.c - OPT_DEFS += -DCUSTOM_RGB_MATRIX - endif -endif - -KEYLOGGER_ENABLE ?= no -ifdef CONSOLE_ENABLE - ifeq ($(strip $(KEYLOGGER_ENABLE)), yes) - OPT_DEFS += -DKEYLOGGER_ENABLE - endif -endif - -ifeq ($(strip $(I2C_SCANNER_ENABLE)), yes) - OPT_DEFS += -DI2C_SCANNER_ENABLE - CONSOLE_ENABLE := yes -endif - --include $(USER_PATH)/oled/rules.mk - -CUSTOM_POINTING_DEVICE ?= yes -ifeq ($(strip $(POINTING_DEVICE_ENABLE)), yes) - ifeq ($(strip $(CUSTOM_POINTING_DEVICE)), yes) - SRC += $(USER_PATH)/pointing/pointing.c - OPT_DEFS += -DCUSTOM_POINTING_DEVICE - OPT_DEFS += -DPOINTING_DEVICE_AUTO_MOUSE_ENABLE - endif - POINTING_DEVICE_MOUSE_JIGGLER_ENABLE ?= yes - ifeq ($(strip $(POINTING_DEVICE_MOUSE_JIGGLER_ENABLE)), yes) - OPT_DEFS += -DPOINTING_DEVICE_MOUSE_JIGGLER_ENABLE - endif -endif - -CUSTOM_SPLIT_TRANSPORT_SYNC ?= yes -ifeq ($(strip $(CUSTOM_SPLIT_TRANSPORT_SYNC)), yes) - ifeq ($(strip $(SPLIT_KEYBOARD)), yes) - QUANTUM_LIB_SRC += $(USER_PATH)/split/transport_sync.c - OPT_DEFS += -DCUSTOM_SPLIT_TRANSPORT_SYNC - endif - -endif - -CUSTOM_BOOTMAGIC_ENABLE ?= yes -ifeq ($(strip $(CUSTOM_BOOTMAGIC_ENABLE)), yes) - ifeq ($(strip $(BOOTMAGIC_ENABLE)), yes) - SRC += bootmagic_better.c - endif -endif - -CUSTOM_DYNAMIC_MACROS_ENABLE ?= no -ifeq ($(strip $(CUSTOM_DYNAMIC_MACROS_ENABLE)), yes) - SRC += $(USER_PATH)/keyrecords/dynamic_macros.c - OPT_DEFS += -DCUSTOM_DYNAMIC_MACROS_ENABLE -endif - -ifeq ($(strip $(HARDWARE_DEBUG_ENABLE)), yes) - LTO_ENABLE := no - OPT := 0 - OPT_DEFS += -g -endif diff --git a/users/drashna/split/readme.md b/users/drashna/split/readme.md deleted file mode 100644 index 5dad340122..0000000000 --- a/users/drashna/split/readme.md +++ /dev/null @@ -1,29 +0,0 @@ -# Custom Split Transport - -To disable the customized split transport, add `CUSTOM_SPLIT_TRANSPORT_SYNC = no` to your `rules.mk`. - -This syncs a number of additional settings, such as the keymap_config (magic settings), user eeprom configs, and misc firmware settings. - -Additionally, this supports a watchdog timer reset for the secondary split side. - -## User State Config - -The User states that it sync are: - -* Audio Enable status -* Audio Clicky states -* Unicode mode -* Pointing Device tap toggle status -* Swap Hands status -* Host Driver status - -## Userspace Config - -The userspace config states that are synced are: - -* RGB layer indication -* "is overwatch" status -* nuke switch -* Swapped numbers -* RGB Matrix idle animation -* Autocorrect enable status diff --git a/users/drashna/split/split_config.h b/users/drashna/split/split_config.h deleted file mode 100644 index fd8bf95515..0000000000 --- a/users/drashna/split/split_config.h +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once - -#define SPLIT_TRANSPORT_MIRROR -#define SPLIT_LAYER_STATE_ENABLE -#define SPLIT_LED_STATE_ENABLE -#define SPLIT_MODS_ENABLE -#define SPLIT_WATCHDOG_ENABLE -#define SPLIT_WPM_ENABLE -#define SPLIT_ACTIVITY_ENABLE -#define SPLIT_DETECTED_OS_ENABLE -#define SPLIT_HAPTIC_ENABLE -#ifdef SPLIT_OLED_ENABLE -# undef SPLIT_OLED_ENABLE -#endif -#if defined(__AVR__) && !defined(SELECT_SOFT_SERIAL_SPEED) -# define SELECT_SOFT_SERIAL_SPEED 1 -#endif -#ifdef CUSTOM_SPLIT_TRANSPORT_SYNC -# define SPLIT_TRANSACTION_IDS_USER RPC_ID_USER_STATE_SYNC, RPC_ID_USER_KEYMAP_SYNC, RPC_ID_USER_CONFIG_SYNC, RPC_ID_USER_PLACEHOLDER, RPC_ID_USER_OLED_KEYLOG_STR -#endif - -#define CRC8_USE_TABLE -#define CRC8_OPTIMIZE_SPEED diff --git a/users/drashna/split/transport_sync.c b/users/drashna/split/transport_sync.c deleted file mode 100644 index d5a1241586..0000000000 --- a/users/drashna/split/transport_sync.c +++ /dev/null @@ -1,201 +0,0 @@ -// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) -// SPDX-License-Identifier: GPL-2.0-or-later - -#include "transport_sync.h" -#include "transactions.h" -#include - -#ifdef UNICODE_COMMON_ENABLE -# include "process_unicode_common.h" -extern unicode_config_t unicode_config; -# include "keyrecords/unicode.h" -#endif -#ifdef AUDIO_ENABLE -# include "audio.h" -extern audio_config_t audio_config; -extern bool delayed_tasks_run; -#endif -#if defined(POINTING_DEVICE_ENABLE) && defined(KEYBOARD_handwired_tractyl_manuform) -extern bool tap_toggling; -#endif -#ifdef SWAP_HANDS_ENABLE -extern bool swap_hands; -#endif - -extern userspace_config_t userspace_config; - -uint16_t transport_keymap_config = 0; -uint32_t transport_userspace_config = 0, transport_user_state = 0; - -user_runtime_config_t user_state; - -void user_state_sync(uint8_t initiator2target_buffer_size, const void* initiator2target_buffer, uint8_t target2initiator_buffer_size, void* target2initiator_buffer) { - if (initiator2target_buffer_size == sizeof(transport_user_state)) { - memcpy(&transport_user_state, initiator2target_buffer, initiator2target_buffer_size); - } -} -void user_keymap_sync(uint8_t initiator2target_buffer_size, const void* initiator2target_buffer, uint8_t target2initiator_buffer_size, void* target2initiator_buffer) { - if (initiator2target_buffer_size == sizeof(transport_keymap_config)) { - memcpy(&transport_keymap_config, initiator2target_buffer, initiator2target_buffer_size); - } -} -void user_config_sync(uint8_t initiator2target_buffer_size, const void* initiator2target_buffer, uint8_t target2initiator_buffer_size, void* target2initiator_buffer) { - if (initiator2target_buffer_size == sizeof(transport_userspace_config)) { - memcpy(&transport_userspace_config, initiator2target_buffer, initiator2target_buffer_size); - } -} - -#ifdef CUSTOM_OLED_DRIVER -# include "oled/oled_stuff.h" -void keylogger_string_sync(uint8_t initiator2target_buffer_size, const void* initiator2target_buffer, uint8_t target2initiator_buffer_size, void* target2initiator_buffer) { - if (initiator2target_buffer_size == (OLED_KEYLOGGER_LENGTH+1)) { - memcpy(&oled_keylog_str, initiator2target_buffer, initiator2target_buffer_size); - } -} -#endif - -void keyboard_post_init_transport_sync(void) { - // Register keyboard state sync split transaction - transaction_register_rpc(RPC_ID_USER_STATE_SYNC, user_state_sync); - transaction_register_rpc(RPC_ID_USER_KEYMAP_SYNC, user_keymap_sync); - transaction_register_rpc(RPC_ID_USER_CONFIG_SYNC, user_config_sync); -#ifdef CUSTOM_OLED_DRIVER - transaction_register_rpc(RPC_ID_USER_OLED_KEYLOG_STR, keylogger_string_sync); -#endif -} - -void user_transport_update(void) { - if (is_keyboard_master()) { - transport_keymap_config = keymap_config.raw; - transport_userspace_config = userspace_config.raw; -#ifdef AUDIO_ENABLE - user_state.audio_enable = is_audio_on(); - user_state.audio_clicky_enable = is_clicky_on(); -#endif -#if defined(POINTING_DEVICE_ENABLE) && defined(POINTING_DEVICE_AUTO_MOUSE_ENABLE) - user_state.tap_toggling = get_auto_mouse_toggle(); -#endif -#ifdef UNICODE_COMMON_ENABLE - user_state.unicode_mode = unicode_config.input_mode; - user_state.unicode_typing_mode = unicode_typing_mode; -#endif -#ifdef SWAP_HANDS_ENABLE - user_state.swap_hands = swap_hands; -#endif - user_state.host_driver_disabled = get_keyboard_lock(); - - transport_user_state = user_state.raw; - } else { - keymap_config.raw = transport_keymap_config; - userspace_config.raw = transport_userspace_config; - user_state.raw = transport_user_state; -#ifdef UNICODE_COMMON_ENABLE - unicode_config.input_mode = user_state.unicode_mode; - unicode_typing_mode = user_state.unicode_typing_mode; -#endif -#if defined(POINTING_DEVICE_ENABLE) && defined(POINTING_DEVICE_AUTO_MOUSE_ENABLE) - if (get_auto_mouse_toggle() != user_state.tap_toggling) { - auto_mouse_toggle(); - } -#endif -#ifdef SWAP_HANDS_ENABLE - swap_hands = user_state.swap_hands; -#endif - set_keyboard_lock(user_state.host_driver_disabled); - } -} - -void user_transport_sync(void) { - if (is_keyboard_master()) { - // Keep track of the last state, so that we can tell if we need to propagate to slave - static uint16_t last_keymap = 0; - static uint32_t last_config = 0, last_sync[4], last_user_state = 0; - bool needs_sync = false; -#ifdef CUSTOM_OLED_DRIVER - static char keylog_temp[OLED_KEYLOGGER_LENGTH + 1] = {0}; -#endif - - // Check if the state values are different - if (memcmp(&transport_user_state, &last_user_state, sizeof(transport_user_state))) { - needs_sync = true; - memcpy(&last_user_state, &transport_user_state, sizeof(transport_user_state)); - } - // Send to slave every 500ms regardless of state change - if (timer_elapsed32(last_sync[0]) > 250) { - needs_sync = true; - } - - // Perform the sync if requested - if (needs_sync) { - if (transaction_rpc_send(RPC_ID_USER_STATE_SYNC, sizeof(user_state), &user_state)) { - last_sync[0] = timer_read32(); - } - needs_sync = false; - } - - // Check if the state values are different - if (memcmp(&transport_keymap_config, &last_keymap, sizeof(transport_keymap_config))) { - needs_sync = true; - memcpy(&last_keymap, &transport_keymap_config, sizeof(transport_keymap_config)); - } - - // Send to slave every 500ms regardless of state change - if (timer_elapsed32(last_sync[1]) > 250) { - needs_sync = true; - } - - // Perform the sync if requested - if (needs_sync) { - if (transaction_rpc_send(RPC_ID_USER_KEYMAP_SYNC, sizeof(transport_keymap_config), &transport_keymap_config)) { - last_sync[1] = timer_read32(); - } - needs_sync = false; - } - - // Check if the state values are different - if (memcmp(&user_state, &last_config, sizeof(transport_userspace_config))) { - needs_sync = true; - memcpy(&last_config, &user_state, sizeof(transport_userspace_config)); - } - - // Send to slave every 500ms regardless of state change - if (timer_elapsed32(last_sync[2]) > 250) { - needs_sync = true; - } - - // Perform the sync if requested - if (needs_sync) { - if (transaction_rpc_send(RPC_ID_USER_CONFIG_SYNC, sizeof(transport_userspace_config), &transport_userspace_config)) { - last_sync[2] = timer_read32(); - } - needs_sync = false; - } - -#ifdef CUSTOM_OLED_DRIVER - // Check if the state values are different - if (memcmp(&oled_keylog_str, &keylog_temp, OLED_KEYLOGGER_LENGTH + 1)) { - needs_sync = true; - memcpy(&keylog_temp, &oled_keylog_str, OLED_KEYLOGGER_LENGTH + 1); - } - if (timer_elapsed32(last_sync[3]) > 250) { - needs_sync = true; - } - - // Perform the sync if requested - if (needs_sync) { - if (transaction_rpc_send(RPC_ID_USER_OLED_KEYLOG_STR, OLED_KEYLOGGER_LENGTH + 1, &oled_keylog_str)) { - last_sync[3] = timer_read32(); - } - needs_sync = false; - } -#endif - } -} - -void housekeeping_task_transport_sync(void) { - // Update kb_state so we can send to slave - user_transport_update(); - - // Data sync from master to slave - user_transport_sync(); -} diff --git a/users/drashna/split/transport_sync.h b/users/drashna/split/transport_sync.h deleted file mode 100644 index d241e5446f..0000000000 --- a/users/drashna/split/transport_sync.h +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once - -#include "drashna.h" -#ifdef OLED_ENABLE -# include "oled/oled_stuff.h" -#endif - -typedef union { - uint32_t raw; - struct { - bool audio_enable :1; - bool audio_clicky_enable :1; - bool tap_toggling :1; - uint8_t unicode_mode :3; - bool swap_hands :1; - bool host_driver_disabled :1; - uint8_t unicode_typing_mode :3; - bool is_oled_enabled :1; - }; -} user_runtime_config_t; - -extern user_runtime_config_t user_state; - -void keyboard_post_init_transport_sync(void); -void housekeeping_task_transport_sync(void); diff --git a/users/drashna/template.c b/users/drashna/template.c deleted file mode 100644 index 300cdbc934..0000000000 --- a/users/drashna/template.c +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) -// SPDX-License-Identifier: GPL-2.0-or-later - -#include "template.h" - -// Add reconfigurable functions here, for keymap customization -// This allows for a global, userspace functions, and continued -// customization of the keymap. Use _keymap instead of _user -// functions in the keymaps -__attribute__((weak)) void matrix_init_keymap(void) {} - -// Call user matrix init, then call the keymap's init function -void matrix_init_user(void) { matrix_init_keymap(); } - -__attribute__((weak)) void matrix_scan_keymap(void) {} - -// No global matrix scan code, so just run keymap's matix -// scan function -void matrix_scan_user(void) { matrix_scan_keymap(); } - -__attribute__((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; } - -// Defines actions tor my global custom keycodes. Defined in drashna.h file -// Then runs the _keymap's recod handier if not processed here, -// And use "NEWPLACEHOLDER" for new safe range -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case VRSN: - if (record->event.pressed) { - SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); - } - return false; - break; - } - return process_record_keymap(keycode, record); -} - -__attribute__((weak)) layer_state_t layer_state_set_keymap(layer_state_t state) { return state; } - -layer_state_t layer_state_set_user(layer_state_t state) { return layer_state_set_keymap(state); } - -__attribute__((weak)) void led_set_keymap(uint8_t usb_led) {} - -void led_set_user(uint8_t usb_led) { led_set_keymap(usb_led); } - -__attribute__((weak)) void suspend_power_down_keymap(void) {} - -void suspend_power_down_user(void) { suspend_power_down_keymap(); } - -__attribute__((weak)) void suspend_wakeup_init_keymap(void) {} - -void suspend_wakeup_init_user(void) { - suspend_wakeup_init_keymap(); -#ifdef KEYBOARD_ergodox_ez - wait_ms(10); -#endif -} diff --git a/users/drashna/template.h b/users/drashna/template.h deleted file mode 100644 index bb08bb3e41..0000000000 --- a/users/drashna/template.h +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once - -#include QMK_KEYBOARD_H -#include "version.h" -#include "eeprom.h" - -// Define layer names -#define BASE 0 - -enum custom_keycodes { - VRSN = SAFE_RANGE, // can always be here - QK_MAKE, - QK_BOOT, - NEWPLACEHOLDER // use "NEWPLACEHOLDER for keymap specific codes -}; diff --git a/users/dshields/config.h b/users/dshields/config.h deleted file mode 100644 index 83ad32a591..0000000000 --- a/users/dshields/config.h +++ /dev/null @@ -1,64 +0,0 @@ -#pragma once - -#define RGB_MATRIX_FRAMEBUFFER_EFFECTS -#define USB_MAX_POWER_CONSUMPTION 100 -#define ONESHOT_TAP_TOGGLE 2 -#define ONESHOT_TIMEOUT 3000 -#define PERMISSIVE_HOLD_PER_KEY -#define QUICK_TAP_TERM_PER_KEY -#define TAPPING_TERM 200 -#define BACKLIGHT_BREATHING -#define DYNAMIC_MACRO_NO_NESTING -#define BOTH_SHIFTS_TURNS_ON_CAPS_WORD - -#define MOUSEKEY_INTERVAL 20 -#define MOUSEKEY_DELAY 0 -#ifndef MOUSEKEY_TIME_TO_MAX -#define MOUSEKEY_TIME_TO_MAX 40 -#endif -#define MOUSEKEY_MAX_SPEED 7 -#ifndef MOUSEKEY_WHEEL_DELAY -#define MOUSEKEY_WHEEL_DELAY 0 -#endif - -#undef ENABLE_RGB_MATRIX_ALPHAS_MODS -#undef ENABLE_RGB_MATRIX_BREATHING -#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT -#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL -#undef ENABLE_RGB_MATRIX_BAND_SAT -#undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT -#undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL -#undef ENABLE_RGB_MATRIX_BAND_VAL -#undef ENABLE_RGB_MATRIX_CYCLE_ALL -#undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT -#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN -#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL -#undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL -#undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL -#undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN -#undef ENABLE_RGB_MATRIX_DUAL_BEACON -#undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS -#undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON -#undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS -#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE -#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE -#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -#undef ENABLE_RGB_MATRIX_SOLID_SPLASH -#undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH -#undef ENABLE_RGB_MATRIX_SOLID_SPLASH -#undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH -#undef ENABLE_RGB_MATRIX_SPLASH -#undef ENABLE_RGB_MATRIX_MULTISPLASH -#undef ENABLE_RGB_MATRIX_SPLASH -#undef ENABLE_RGB_MATRIX_MULTISPLASH diff --git a/users/dshields/dshields.c b/users/dshields/dshields.c deleted file mode 100644 index a8e1333104..0000000000 --- a/users/dshields/dshields.c +++ /dev/null @@ -1,57 +0,0 @@ -#include "quantum.h" -#include "dshields.h" - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) - || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX) - || (keycode >= QK_MODS && keycode <= QK_MODS_MAX)) { - keycode = keycode & 0xFF; - } - if (keycode == KC_ESC && record->event.pressed) { - bool rc = true; - uint8_t mods = 0; - if ((mods = get_oneshot_mods()) && !has_oneshot_mods_timed_out()) { - clear_oneshot_mods(); - unregister_mods(mods); - rc = false; - } - if ((mods = get_oneshot_locked_mods())) { - clear_oneshot_locked_mods(); - unregister_mods(mods); - rc = false; - } - if (is_oneshot_layer_active()) { - layer_clear(); - rc = false; - } - return rc; - } - return true; -} - -uint16_t get_quick_tap_term(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case MT_A: - case MT_S: - case MT_D: - case MT_F: - case MT_J: - case MT_K: - case MT_L: - case MT_SCLN: - return 0; - default: - return QUICK_TAP_TERM; - } -} - -bool get_permissive_hold(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case MT_SPC: - case MT_BSPC: - case MT_ESC: - return true; - default: - return false; - } -} diff --git a/users/dshields/dshields.h b/users/dshields/dshields.h deleted file mode 100644 index 4dd5db66bf..0000000000 --- a/users/dshields/dshields.h +++ /dev/null @@ -1,65 +0,0 @@ -#pragma once - -// one-shot layer keys -#define OSL_RSE OSL(RSE) -#define OSL_LWR OSL(LWR) -#define OSL_FUN OSL(FUN) - -// one-shot modifier keys -#define OSMLCTL OSM(MOD_LCTL) -#define OSMRCTL OSM(MOD_RCTL) -#define OSMLALT OSM(MOD_LALT) -#define OSMRALT OSM(MOD_RALT) -#define OSMLSFT OSM(MOD_LSFT) -#define OSMRSFT OSM(MOD_RSFT) - -// mod-tap keys -#define MT_SPC SFT_T(KC_SPC) -#define MT_BSPC SFT_T(KC_BSPC) -#define MT_ESC LGUI_T(KC_ESC) -#define MT_A LGUI_T(KC_A) -#define MT_S LALT_T(KC_S) -#define MT_D LSFT_T(KC_D) -#define MT_F LCTL_T(KC_F) -#define MT_J RCTL_T(KC_J) -#define MT_K RSFT_T(KC_K) -#define MT_L RALT_T(KC_L) -#define MT_SCLN RGUI_T(KC_SCLN) - -// layer-tap keys -#if defined KEYBOARD_planck_light \ - || defined KEYBOARD_planck_rev3 \ - || defined KEYBOARD_planck_rev6 \ - || defined KEYBOARD_keyboardio_atreus - #define LT_G LT(LWR, KC_G) - #define LT_H LT(RSE, KC_H) -#elif defined KEYBOARD_keyboardio_model01 - #define LT_G LT(FUN, KC_G) - #define LT_H LT(FUN, KC_H) -#else - #define LT_G KC_G - #define LT_H KC_H -#endif - -// LED/RGB controls -#if defined KEYBOARD_planck_light - #define LGT_TOG RGB_TOG - #define LGT_MOD RGB_MOD - #define LGT_BRT _______ - #define LGT_INC RGB_HUI - #define LGT_DEC RGB_HUD -#elif defined KEYBOARD_planck_rev3 - #define LGT_TOG BL_TOGG - #define LGT_MOD BL_STEP - #define LGT_BRT BL_BRTG - #define LGT_INC BL_UP - #define LGT_DEC BL_DOWN -#else - #define LGT_TOG _______ - #define LGT_MOD _______ - #define LGT_BRT _______ - #define LGT_INC _______ - #define LGT_DEC _______ -#endif - -enum layers { DEF, LWR, RSE, FUN }; diff --git a/users/dshields/rules.mk b/users/dshields/rules.mk deleted file mode 100644 index 6cf8de48f7..0000000000 --- a/users/dshields/rules.mk +++ /dev/null @@ -1,31 +0,0 @@ -SRC += dshields.c - -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -COMMAND_ENABLE = no # Commands for debug and configuration -CONSOLE_ENABLE = no # Console for debug(+400) -EXTRAKEY_ENABLE = no -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -SPACE_CADET_ENABLE = no -LEADER_ENABLE = no -DYNAMIC_MACRO_ENABLE = yes - -LTO_ENABLE = yes -CAPS_WORD_ENABLE = yes - -ifeq ($(strip $(KEYBOARD)), planck/rev3) - AUDIO_ENABLE = no - BACKLIGHT_ENABLE = yes - RGB_MATRIX_ENABLE = no -endif -ifeq ($(strip $(KEYBOARD)), planck/rev6) - CFLAGS += -Wno-error=deprecated - EXTRALDFLAGS = -Wl,--build-id=none - AUDIO_ENABLE = no - BACKLIGHT_ENABLE = no - RGB_MATRIX_ENABLE = no -endif -ifeq ($(strip $(KEYBOARD)), planck/light) - AUDIO_ENABLE = yes - BACKLIGHT_ENABLE = no - RGB_MATRIX_ENABLE = yes -endif diff --git a/users/dudeofawesome/dudeofawesome.c b/users/dudeofawesome/dudeofawesome.c deleted file mode 100644 index 5a9117b029..0000000000 --- a/users/dudeofawesome/dudeofawesome.c +++ /dev/null @@ -1 +0,0 @@ -#include "dudeofawesome.h" diff --git a/users/dudeofawesome/dudeofawesome.h b/users/dudeofawesome/dudeofawesome.h deleted file mode 100644 index dbbbd21ede..0000000000 --- a/users/dudeofawesome/dudeofawesome.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef USERSPACE -#define USERSPACE - -#ifdef TAPPING_TOGGLE -#undef TAPPING_TOGGLE -#endif -#define TAPPING_TOGGLE 2 - -#ifdef AUDIO_ENABLE - #ifdef WORKMAN_SOUND - #undef WORKMAN_SOUND - #endif - - #define WORKMAN_SOUND \ - E__NOTE(_GS7), \ - ED_NOTE(_E7), \ - S__NOTE(_REST), \ - E__NOTE(_A6), \ - S__NOTE(_REST), \ - ED_NOTE(_GS6), - - #define NUMPAD_ON_SOUND \ - E__NOTE(_C6), \ - ED_NOTE(_BF5), \ - S__NOTE(_C6), \ - ED_NOTE(_BF5), -#endif - -#endif diff --git a/users/dudeofawesome/rules.mk b/users/dudeofawesome/rules.mk deleted file mode 100644 index b99697b586..0000000000 --- a/users/dudeofawesome/rules.mk +++ /dev/null @@ -1 +0,0 @@ -SRC += dudeofawesome.c diff --git a/users/dvorak_42_key/config.h b/users/dvorak_42_key/config.h deleted file mode 100644 index b6f9918770..0000000000 --- a/users/dvorak_42_key/config.h +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2022 LucW (@luc-languagetools) -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once - -#define DOUBLE_TAP_SHIFT_TURNS_ON_CAPS_WORD -#undef TAPPING_TERM -#define TAPPING_TERM 175 \ No newline at end of file diff --git a/users/dvorak_42_key/dvorak_42_key.c b/users/dvorak_42_key/dvorak_42_key.c deleted file mode 100644 index 99cfd8cb7d..0000000000 --- a/users/dvorak_42_key/dvorak_42_key.c +++ /dev/null @@ -1,205 +0,0 @@ -// Copyright 2022 LucW (@luc-languagetools) -// SPDX-License-Identifier: GPL-2.0-or-later - -#include "dvorak_42_key.h" - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - // tap dance processing - tap_dance_action_t *action; - switch (keycode) { - case TD(TD_DEL_WORD_DEL): // list all tap dance keycodes with tap-hold configurations - action = &tap_dance_actions[TD_INDEX(keycode)]; - if (!record->event.pressed && action->state.count && !action->state.finished) { - tap_dance_tap_hold_t *tap_hold = (tap_dance_tap_hold_t *)action->user_data; - tap_code16(tap_hold->tap); - } - } - - // shell macros - if(record->event.pressed) { - switch (keycode) { - case SHELL_LS: - SEND_STRING("ls\n"); - break; - case SHELL_LSLTR: - SEND_STRING("ls -ltr\n"); - break; - case SHELL_LSLA: - SEND_STRING("ls -la\n"); - break; - case SHELL_CDPRE: - SEND_STRING("cd ..\n"); - break; - case SHELL_LESS: - SEND_STRING("less "); - break; - case SHELL_PLESS: - SEND_STRING(" | less"); - break; - case SHELL_PGREP: - SEND_STRING(" | grep "); - return true; - break; - case SHELL_TAILF: - SEND_STRING("tail -f "); - break; - case SHELL_SCREENRD: - SEND_STRING("screen -r -d "); - break; - case SHELL_SCREEN_NEW: - SEND_STRING("screen -S "); - break; - case SHELL_SCREEN_LIST: - SEND_STRING("screen -list\n"); - break; - - case SHELL_GIT_DIFF: - SEND_STRING("git diff\n"); - break; - - case SHELL_GIT_STATUS: - SEND_STRING("git status\n"); - break; - - case WINDOWS10_WORKSPACE_LEFT: - tap_code16(C(G(KC_LEFT))); - break; - case WINDOWS10_WORKSPACE_RIGHT: - tap_code16(C(G(KC_RIGHT))); - break; - case WINDOWS10_TASK_VIEW: - tap_code16(G(KC_TAB)); - break; - // linux screen shortcuts - case SCREEN_TAB_LEFT: - SEND_STRING(SS_LCTL("a") "p"); - break; - case SCREEN_TAB_RIGHT: - SEND_STRING(SS_LCTL("a") "n"); - break; - case SCREEN_NEW_TAB: - SEND_STRING(SS_LCTL("a") "c"); - break; - case SCREEN_DETACH: - SEND_STRING(SS_LCTL("a") "d"); - break; - case SCREEN_RENAME: - SEND_STRING(SS_LCTL("a") "A"); - break; - case SCREEN_NUMBER: - SEND_STRING(SS_LCTL("a") ":number "); - break; - case SCREEN_0: - SEND_STRING(SS_LCTL("a") "0"); - break; - case SCREEN_1: - SEND_STRING(SS_LCTL("a") "1"); - break; - case SCREEN_2: - SEND_STRING(SS_LCTL("a") "2"); - break; - case SCREEN_3: - SEND_STRING(SS_LCTL("a") "3"); - break; - case SCREEN_4: - SEND_STRING(SS_LCTL("a") "4"); - break; - case SCREEN_5: - SEND_STRING(SS_LCTL("a") "5"); - break; - case SCREEN_6: - SEND_STRING(SS_LCTL("a") "6"); - break; - case SCREEN_7: - SEND_STRING(SS_LCTL("a") "7"); - break; - case SCREEN_8: - SEND_STRING(SS_LCTL("a") "8"); - break; - case SCREEN_9: - SEND_STRING(SS_LCTL("a") "9"); - break; - case SCREEN_COPY_MODE: - SEND_STRING(SS_LCTL("a") "["); - break; - case SCREEN_PASTE: - SEND_STRING(SS_LCTL("a") "]"); - break; - case SCREEN_KILL: - SEND_STRING(SS_LCTL("a") "ky"); - break; - case SCREEN_READREG_1: - SEND_STRING(SS_LCTL("a") ":readreg 1\n"); - break; - case SCREEN_READREG_2: - SEND_STRING(SS_LCTL("a") ":readreg 2\n"); - break; - case SCREEN_READREG_3: - SEND_STRING(SS_LCTL("a") ":readreg 3\n"); - break; - - case SCREEN_PASTEREG_1: - SEND_STRING(SS_LCTL("a") ":paste 1\n"); - break; - case SCREEN_PASTEREG_2: - SEND_STRING(SS_LCTL("a") ":paste 2\n"); - break; - case SCREEN_PASTEREG_3: - SEND_STRING(SS_LCTL("a") ":paste 3\n"); - break; - } - } - - return true; -} - - -bool caps_word_press_user(uint16_t keycode) { - switch (keycode) { - // Keycodes that continue Caps Word, with shift applied. - case KC_A ... KC_Z: - add_weak_mods(MOD_BIT(KC_LSFT)); // Apply shift to next key. - return true; - - default: - return false; // Deactivate Caps Word. - } -} - - -void tap_dance_tap_hold_finished(tap_dance_state_t *state, void *user_data) { - tap_dance_tap_hold_t *tap_hold = (tap_dance_tap_hold_t *)user_data; - - if (state->pressed) { - if (state->count == 1 -#ifndef PERMISSIVE_HOLD - && !state->interrupted -#endif - ) { - register_code16(tap_hold->hold); - tap_hold->held = tap_hold->hold; - } else { - register_code16(tap_hold->tap); - tap_hold->held = tap_hold->tap; - } - } -} - -void tap_dance_tap_hold_reset(tap_dance_state_t *state, void *user_data) { - tap_dance_tap_hold_t *tap_hold = (tap_dance_tap_hold_t *)user_data; - - if (tap_hold->held) { - unregister_code16(tap_hold->held); - tap_hold->held = 0; - } -} - - -// Tap Dance definitions -tap_dance_action_t tap_dance_actions[] = { - // Tap once for Escape, twice for Caps Lock - // [TD_BSPC_CTL_BSPC] = ACTION_TAP_DANCE_DOUBLE(KC_BSPC, RCTL(KC_BSPC)), - // [TD_BSPC_CTL_BSPC_IOS] = ACTION_TAP_DANCE_DOUBLE(KC_BSPC, LALT(KC_BSPC)), - [TD_DEL_WORD_DEL] = ACTION_TAP_DANCE_TAP_HOLD(RCTL(KC_BSPC), KC_BSPC), - [TD_DEL_WORD_DEL_IOS] = ACTION_TAP_DANCE_TAP_HOLD(LALT(KC_BSPC), KC_BSPC) -}; \ No newline at end of file diff --git a/users/dvorak_42_key/dvorak_42_key.h b/users/dvorak_42_key/dvorak_42_key.h deleted file mode 100644 index 4a3c34ba52..0000000000 --- a/users/dvorak_42_key/dvorak_42_key.h +++ /dev/null @@ -1,161 +0,0 @@ -// Copyright 2022 LucW (@luc-languagetools) -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once - -#include "quantum.h" - -// LAYERS -// ====== - -enum layer_names { - BASE, // base dvorak layer - KEYNAV, // arrow navigation (right hand) - KEYSEL, // arrow navigation + shift (allow text selection) - SHELL_NAV, // bash shortcuts - SHELL_SCREEN, // linux screen shortcuts - BROWSER_CONTROL, // control browser and mouse - COMBINED, // combined numbers and symbols layer - ANDROID_STUDIO, // android studio specific layer - VSCODE, // visual studio code specific layer - SHORTCUTS, // shortcuts to be intercepted by autohotkey -}; - -enum custom_keycodes { - PLACEHOLDER = SAFE_RANGE, // can always be here - - // shell nav macros - SHELL_LS, - SHELL_LSLTR, - SHELL_LSLA, - SHELL_CDPRE, - SHELL_LESS, - SHELL_PLESS, - SHELL_PGREP, - SHELL_TAILF, - - SHELL_SCREENRD, - SHELL_SCREEN_NEW, - SHELL_SCREEN_LIST, - - SHELL_GIT_DIFF, - SHELL_GIT_STATUS, - - // linux screen macros - SCREEN_TAB_LEFT, - SCREEN_TAB_RIGHT, - - SCREEN_NEW_TAB, - SCREEN_DETACH, - SCREEN_RENAME, - SCREEN_NUMBER, - SCREEN_KILL, - - SCREEN_0, - SCREEN_1, - SCREEN_2, - SCREEN_3, - SCREEN_4, - SCREEN_5, - SCREEN_6, - SCREEN_7, - SCREEN_8, - SCREEN_9, - - SCREEN_COPY_MODE, - SCREEN_PASTE, - - SCREEN_READREG_1, - SCREEN_READREG_2, - SCREEN_READREG_3, - SCREEN_PASTEREG_1, - SCREEN_PASTEREG_2, - SCREEN_PASTEREG_3, - - // Windows 10 macros - WINDOWS10_WORKSPACE_LEFT, - WINDOWS10_WORKSPACE_RIGHT, - WINDOWS10_TASK_VIEW, - -}; - - - - - - -// Notepad++ shortcuts -// =================== -#define NP_DUPE_LINE LCTL(KC_D) - -// ChromeOS shortcuts -// ================== -#define CO_WS_LEFT RGUI(KC_LBRC) -#define CO_WS_RIGHT RGUI(KC_RBRC) - - -// Android Studio shortcuts -#define AS_TABLEFT LALT(KC_LEFT) -#define AS_TABRIGHT LALT(KC_RIGHT) -#define AS_SYMBOL LCTL(LALT(KC_N)) -#define AS_CLASS LCTL(KC_N) -#define AS_FINDUSAGE LALT(KC_F7) -#define AS_BACK LCTL(LALT(KC_LEFT)) -#define AS_BRACKET LCTL(LSFT(KC_M)) -#define AS_GO_DECLARATION LCTL(KC_B) -#define AS_GO_IMPLEMENTATION LCTL(LALT(KC_B)) -#define AS_CLOSETAB LCTL(KC_F4) -#define AS_CLOSETOOLWINDOW LCTL(LSFT(KC_F4)) -#define AS_COPYLINEDOWN LCTL(KC_D) -#define AS_DEL_LINE LCTL(KC_Y) -#define AS_LINE LCTL(KC_G) -#define AS_CMT_BLOCK LCTL(LSFT(KC_SLSH)) -#define AS_CMT_LINE LCTL(KC_SLSH) -#define AS_BM_PREV LALT(KC_P) -#define AS_BM_NEXT LALT(KC_N) -#define AS_BM_TOGGLE KC_F11 -#define AS_BM_LIST LSFT(KC_F11) - -// visual studio code shortcuts -// ============================ - -#include "vscode_macros.h" - -// unused vscode shortcuts -// #define VS_BM_LIST LCTL(LALT(KC_L)) -// #define VS_BM_LISTALL LCTL(LALT(KC_A)) -// #define VS_BM_CLEARALL LCTL(LALT(KC_C)) - -// #define VS_TERMINAL_PREV MEH(KC_F12) -// #define VS_TERMINAL_NEXT MEH(KC_F13) -// #define VS_TERMINAL_NEW MEH(KC_F14) -// #define VS_TERMINAL_DETACH MEH(KC_F15) -// #define VS_TERMINAL_RENAME MEH(KC_F16) -// #define VS_JUMPY MEH(KC_F17) -// #define VS_FIND MEH(KC_F19) -// #define VS_CLOSEPANEL LCTL(LSFT(KC_W)) -// #define VS_BUILD LCTL(LSFT(KC_B)) -// #define VS_OPEN_FILE MEH(KC_F2) -// #define VS_TERMINAL MEH(KC_F15) - - - - -// tap-dance configuration -// ======================= - -enum { - // TD_BSPC_CTL_BSPC, - // TD_BSPC_CTL_BSPC_IOS, - TD_DEL_WORD_DEL, - TD_DEL_WORD_DEL_IOS -}; - -typedef struct { - uint16_t tap; - uint16_t hold; - uint16_t held; -} tap_dance_tap_hold_t; - -#define ACTION_TAP_DANCE_TAP_HOLD(tap, hold) \ - { .fn = {NULL, tap_dance_tap_hold_finished, tap_dance_tap_hold_reset}, .user_data = (void *)&((tap_dance_tap_hold_t){tap, hold, 0}), } diff --git a/users/dvorak_42_key/rules.mk b/users/dvorak_42_key/rules.mk deleted file mode 100644 index f1ba426225..0000000000 --- a/users/dvorak_42_key/rules.mk +++ /dev/null @@ -1,7 +0,0 @@ -# Copyright 2022 LucW (@luc-languagetools) -# SPDX-License-Identifier: GPL-2.0-or-later - -CAPS_WORD_ENABLE = yes -TAP_DANCE_ENABLE = yes - -SRC += dvorak_42_key.c \ No newline at end of file diff --git a/users/dvorak_42_key/vscode_macros.h b/users/dvorak_42_key/vscode_macros.h deleted file mode 100644 index 529f148d06..0000000000 --- a/users/dvorak_42_key/vscode_macros.h +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2022 LucW (@luc-languagetools) -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once -#define VS_COMMANDS MEH(KC_B) // workbench.action.showCommands -#define VS_LINE MEH(KC_C) // workbench.action.gotoLine -#define VS_DEFINITION MEH(KC_E) // editor.action.revealDefinition -#define VS_IMPLEMENTATION MEH(KC_F) // editor.action.goToImplementation -#define VS_REFERENCES MEH(KC_G) // editor.action.goToReferences -#define VS_BACK MEH(KC_H) // workbench.action.navigateBack -#define VS_BRACKET MEH(KC_I) // editor.action.jumpToBracket -#define VS_TABLEFT MEH(KC_J) // workbench.action.previousEditor -#define VS_TABRIGHT MEH(KC_K) // workbench.action.nextEditor -#define VS_CLOSETAB MEH(KC_L) // workbench.action.closeActiveEditor -#define VS_GROUP_1 MEH(KC_M) // workbench.action.focusFirstEditorGroup -#define VS_GROUP_2 MEH(KC_N) // workbench.action.focusSecondEditorGroup -#define VS_CMT_BLOCK MEH(KC_O) // editor.action.blockComment -#define VS_CMT_LINE MEH(KC_P) // editor.action.commentLine -#define VS_DEL_LINE MEH(KC_Q) // editor.action.deleteLines -#define VS_COPYLINEDOWN MEH(KC_R) // editor.action.copyLinesDownAction -#define VS_BM_PREV MEH(KC_S) // bookmarks.jumpToPrevious -#define VS_BM_NEXT MEH(KC_T) // bookmarks.jumpToNext -#define VS_BM_TOGGLE MEH(KC_U) // bookmarks.toggle -#define VS_BM_CLEARALL MEH(KC_V) // bookmarks.clearFromAllFiles -#define VS_BM_LIST MEH(KC_W) // bookmarks.list -#define VS_BM_LISTALL MEH(KC_X) // bookmarks.listFromAllFiles -#define VS_JUMPY MEH(KC_Y) // extension.jumpy-word -#define VS_FOCUS_EDITOR MEH(KC_Z) // workbench.action.focusActiveEditorGroup -#define VS_FOCUS_TERMINAL MEH(KC_0) // workbench.action.terminal.focus -#define VS_TOGGLE_TERMINAL MEH(KC_1) // workbench.action.terminal.toggleTerminal -#define VS_DEL_LEFT MEH(KC_2) // deleteAllLeft -#define VS_DEL_RIGHT MEH(KC_3) // deleteAllRight -#define VS_FIND_FILES MEH(KC_4) // workbench.action.findInFiles -#define VS_FILE MEH(KC_5) // workbench.action.quickOpen -#define VS_SYMBOLEDITOR MEH(KC_6) // workbench.action.gotoSymbol diff --git a/users/edvorakjp/edvorakjp.c b/users/edvorakjp/edvorakjp.c deleted file mode 100644 index 3d3b5b0ae5..0000000000 --- a/users/edvorakjp/edvorakjp.c +++ /dev/null @@ -1,22 +0,0 @@ -#include "edvorakjp.h" - -void matrix_init_user(void) { - edvorakjp_status_init(); - matrix_init_keymap(); -} - -__attribute__((weak)) void matrix_init_keymap(void) {} - -layer_state_t layer_state_set_user(layer_state_t state) { - state = update_tri_layer_state(state, L_EDVORAKJP_LOWER, L_EDVORAKJP_RAISE, L_EDVORAKJP_ADJUST); - return layer_state_set_keymap(state); -} - -__attribute__((weak)) layer_state_t layer_state_set_keymap(layer_state_t state) { return state; } - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - bool process_record_user_result = process_record_keymap(keycode, record) && process_record_edvorakjp_swap_scln(keycode, record) && process_record_edvorakjp_config(keycode, record) && process_record_layer(keycode, record) && process_record_ime(keycode, record); - return process_record_user_result; -} - -__attribute__((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; } diff --git a/users/edvorakjp/edvorakjp.h b/users/edvorakjp/edvorakjp.h deleted file mode 100644 index e3a94ca6a7..0000000000 --- a/users/edvorakjp/edvorakjp.h +++ /dev/null @@ -1,90 +0,0 @@ -#pragma once - -#include "quantum.h" -#include "action_layer.h" - -#define EECONFIG_EDVORAK (uint8_t *)20 - -// clang-format off -#define __EDVORAKJP_BASE_L1__ KC_QUOTE, KC_COMMA, KC_DOT, KC_Y, KC_Q -#define __EDVORAKJP_BASE_L2__ KC_A, LALT_T(KC_O), LGUI_T(KC_E), LCTL_T(KC_I), KC_U -#define __EDVORAKJP_BASE_L3__ KC_SCLN, KC_X, KC_C, KC_V, KC_Z - -#define __EDVORAKJP_BASE_R1__ KC_F, KC_G, KC_R, KC_W, KC_P -#define __EDVORAKJP_BASE_R2__ KC_D, RSFT_T(KC_T), RGUI_T(KC_N), RALT_T(KC_S), KC_M -#define __EDVORAKJP_BASE_R3__ KC_H, KC_J, KC_K, KC_L, KC_B - -#define __EDVORAKJP_NUMBER_L__ KC_1, LALT_T(KC_2), LGUI_T(KC_3), LCTL_T(KC_4), KC_5 -#define __EDVORAKJP_NUMBER_R__ KC_6, RSFT_T(KC_7), RGUI_T(KC_8), RALT_T(KC_9), KC_0 - -#define __EDVORAKJP_FUNCTION_L__ KC_F1, KC_F2, LALT_T(KC_F3), LGUI_T(KC_F4), LCTL_T(KC_F5), KC_F6 -#define __EDVORAKJP_FUNCTION_R__ KC_F7, RSFT_T(KC_F8), RGUI_T(KC_F9), RALT_T(KC_F10), KC_F11, KC_F12 - -#define __EDVORAKJP_SYMBOL_L__ KC_EXCLAIM, KC_AT, KC_HASH, KC_DOLLAR -#define __EDVORAKJP_SYMBOL_R__ KC_PERCENT, KC_CIRCUMFLEX, KC_AMPERSAND, KC_ASTERISK - -#define __EDVORAKJP_BRACKET_L__ KC_LEFT_CURLY_BRACE, KC_LBRC, KC_LEFT_PAREN -#define __EDVORAKJP_BRACKET_R__ KC_RIGHT_PAREN, KC_RBRC, KC_RIGHT_CURLY_BRACE - -#define __EDVORAKJP_PAGE__ KC_HOME, KC_PGDN, KC_PGUP, KC_END -#define __EDVORAKJP_CURSOR__ KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT - -#define LA_TAB LALT_T(KC_TAB) -#define LS_SPC LSFT_T(KC_SPACE) -#define RC_BSPC RCTL_T(KC_BACKSPACE) -#define RC_DEL RCTL_T(KC_DELETE) -#define RG_ENT RGUI_T(KC_ENTER) - -#define LOWER_TD TD(TD_EDVORAKJP_LOWER) -#define RAISE_TD TD(TD_EDVORAKJP_RAISE) -// clang-format on - -extern keymap_config_t keymap_config; - -enum edvorakjp_layers { - L_EDVORAKJP_BASE = 0, - L_EDVORAKJP_LOWER, - L_EDVORAKJP_RAISE, - L_EDVORAKJP_ADJUST, - L_EDVORAKJP_EXTRA, -}; - -enum edvorakjp_keycodes { - KC_EDVORAKJP_LOWER = SAFE_RANGE, - KC_EDVORAKJP_RAISE, - KC_MAC, - KC_WIN, - KC_JPN, - KC_ENG, - NEW_SAFE_RANGE, -}; - -enum tap_dance_code { - TD_EDVORAKJP_LOWER = 0, - TD_EDVORAKJP_RAISE, -}; - -// base -void matrix_init_user(void); -void matrix_init_keymap(void); -layer_state_t layer_state_set_user(layer_state_t state); -layer_state_t layer_state_set_keymap(layer_state_t state); -bool process_record_user(uint16_t keycode, keyrecord_t *record); -bool process_record_keymap(uint16_t keycode, keyrecord_t *record); - -// status -void edvorakjp_status_init(void); -bool get_enable_kc_lang(void); -void set_enable_kc_lang(bool new_state); -bool get_japanese_mode(void); -void set_japanese_mode(bool new_state); - -/* - * Each process_record_* methods defined here are - * return false if processed, or return true if not processed. - * You can add your original macros in process_record_keymap() in keymap.c. - */ -bool process_record_edvorakjp_swap_scln(uint16_t keycode, keyrecord_t *record); -bool process_record_edvorakjp_config(uint16_t keycode, keyrecord_t *record); -bool process_record_layer(uint16_t keycode, keyrecord_t *record); -bool process_record_ime(uint16_t keycode, keyrecord_t *record); diff --git a/users/edvorakjp/edvorakjp_process_record.c b/users/edvorakjp/edvorakjp_process_record.c deleted file mode 100644 index ac821c3935..0000000000 --- a/users/edvorakjp/edvorakjp_process_record.c +++ /dev/null @@ -1,89 +0,0 @@ -#include "edvorakjp.h" - -#if TAP_DANCE_ENABLE != yes -static uint16_t time_on_pressed; -#endif -/* - * Each process_record_* methods defined here are - * return false if handle edvorak_keycodes, or return true others. - */ -bool process_record_edvorakjp_swap_scln(uint16_t keycode, keyrecord_t *record) { -#ifdef SWAP_SCLN - static const uint8_t shift_bits = MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT); - static uint8_t last_mods_status; - if (keycode == KC_SCLN) { - if (record->event.pressed) { - last_mods_status = get_mods(); - - // invert shift_bits - if (last_mods_status & shift_bits) { - set_mods(last_mods_status & ~shift_bits); - } else { - set_mods(last_mods_status | MOD_BIT(KC_LSFT)); - } - } else { - set_mods(last_mods_status); - last_mods_status = 0; - } - } -#endif - return true; -} - -bool process_record_edvorakjp_config(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case KC_MAC: - case KC_WIN: - if (record->event.pressed) { - set_enable_kc_lang(keycode == KC_MAC); - } - return false; - } - return true; -} - -bool process_record_layer(uint16_t keycode, keyrecord_t *record) { -#if TAP_DANCE_ENABLE != yes - switch (keycode) { - case KC_EDVORAKJP_LOWER: - if (record->event.pressed) { - layer_on(L_EDVORAKJP_LOWER); - time_on_pressed = record->event.time; - } else { - layer_off(L_EDVORAKJP_LOWER); - - if (TIMER_DIFF_16(record->event.time, time_on_pressed) < TAPPING_TERM) { - set_japanese_mode(false); - } - time_on_pressed = 0; - } - return false; - case KC_EDVORAKJP_RAISE: - if (record->event.pressed) { - layer_on(L_EDVORAKJP_RAISE); - time_on_pressed = record->event.time; - } else { - layer_off(L_EDVORAKJP_RAISE); - - if (TIMER_DIFF_16(record->event.time, time_on_pressed) < TAPPING_TERM) { - set_japanese_mode(true); - } - time_on_pressed = 0; - } - return false; - } -#endif - return true; -} - -bool process_record_ime(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case KC_JPN: - case KC_ENG: - if (record->event.pressed) { - set_japanese_mode(keycode == KC_JPN); - } - return false; - } - return true; -} diff --git a/users/edvorakjp/edvorakjp_status.c b/users/edvorakjp/edvorakjp_status.c deleted file mode 100644 index 851422ede5..0000000000 --- a/users/edvorakjp/edvorakjp_status.c +++ /dev/null @@ -1,56 +0,0 @@ -#include "eeprom.h" -#include "edvorakjp.h" - -typedef union { - uint8_t raw; - struct { - bool enable_kc_lang; // for macOS - }; -} edvorakjp_config_t; -static edvorakjp_config_t edvorakjp_config; - -typedef struct { - bool japanese_mode; -} edvorakjp_state_t; -static edvorakjp_state_t edvorakjp_state; - -/* - * private methods - */ -uint8_t eeconfig_read_edvorakjp(void) { return eeprom_read_byte(EECONFIG_EDVORAK); } - -void eeconfig_update_edvorakjp(uint8_t val) { eeprom_update_byte(EECONFIG_EDVORAK, val); } - -/* - * public methods - */ -void edvorakjp_status_init(void) { - edvorakjp_state.japanese_mode = false; - edvorakjp_config.raw = eeconfig_read_edvorakjp(); -} - -bool get_enable_kc_lang(void) { return edvorakjp_config.enable_kc_lang; } - -void set_enable_kc_lang(bool new_state) { - edvorakjp_config.enable_kc_lang = new_state; - eeconfig_update_edvorakjp(edvorakjp_config.raw); -} - -bool get_japanese_mode(void) { return edvorakjp_state.japanese_mode; } - -void set_japanese_mode(bool new_state) { - edvorakjp_state.japanese_mode = new_state; - if (edvorakjp_state.japanese_mode) { - if (edvorakjp_config.enable_kc_lang) { - SEND_STRING(SS_TAP(X_LNG1)); - } else { - SEND_STRING(SS_LALT("`")); - } - } else { - if (edvorakjp_config.enable_kc_lang) { - SEND_STRING(SS_TAP(X_LNG2)); - } else { - SEND_STRING(SS_LALT("`")); - } - } -} diff --git a/users/edvorakjp/edvorakjp_tap_dance.c b/users/edvorakjp/edvorakjp_tap_dance.c deleted file mode 100644 index d2c9f2b0e9..0000000000 --- a/users/edvorakjp/edvorakjp_tap_dance.c +++ /dev/null @@ -1,78 +0,0 @@ -#include "edvorakjp.h" -#include "process_keycode/process_tap_dance.h" - -enum tap_state { - NONE = 0, - SINGLE_TAP = 1, - DOUBLE_TAP = 2, - HOLD, -}; - -typedef struct { - uint8_t lower; - uint8_t raise; -} td_status_t; -static td_status_t td_status = {NONE, NONE}; - -uint8_t cur_dance(tap_dance_state_t *state) { - if (state->interrupted || !state->pressed) { - return state->count == 1 ? SINGLE_TAP : DOUBLE_TAP; - } else { - return HOLD; - } -} - -void td_lower_finished(tap_dance_state_t *state, void *user_data) { - td_status.lower = cur_dance(state); - switch (td_status.lower) { - case SINGLE_TAP: - set_japanese_mode(false); - break; - case DOUBLE_TAP: - set_japanese_mode(false); - register_code(KC_ESC); - break; - } - layer_on(L_EDVORAKJP_LOWER); -} - -void td_lower_reset(tap_dance_state_t *state, void *user_data) { - switch (td_status.lower) { - case DOUBLE_TAP: - unregister_code(KC_ESC); - break; - } - layer_off(L_EDVORAKJP_LOWER); - td_status.lower = NONE; -} - -void td_raise_finished(tap_dance_state_t *state, void *user_data) { - td_status.raise = cur_dance(state); - switch (td_status.raise) { - case DOUBLE_TAP: - // same as single - case SINGLE_TAP: - set_japanese_mode(true); - break; - } - layer_on(L_EDVORAKJP_RAISE); -} - -void td_raise_reset(tap_dance_state_t *state, void *user_data) { - layer_off(L_EDVORAKJP_RAISE); - td_status.raise = NONE; -} - -tap_dance_action_t tap_dance_actions[] = { - [TD_EDVORAKJP_LOWER] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, td_lower_finished, td_lower_reset), - [TD_EDVORAKJP_RAISE] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, td_raise_finished, td_raise_reset), -}; - -uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case QK_TAP_DANCE ... QK_TAP_DANCE_MAX: - return 150; - default: - return TAPPING_TERM; - } -} diff --git a/users/edvorakjp/readme.md b/users/edvorakjp/readme.md deleted file mode 100644 index 679d84b3de..0000000000 --- a/users/edvorakjp/readme.md +++ /dev/null @@ -1,67 +0,0 @@ -# edvorakjp - -epaew's Enhanced Dvorak layout for Japanese Programmer - -## Layout overview -This is a sample. You can swap any symbol keys and modifier keys. - -- Basic layout (for ansi) -``` - //+----+----+----+----+----+----+----+----+----+----+----+----+----+---------+ - ` , ! , @ , # , $ , % , ^ , & , * , ( , ) , [ , ] , BSPC , - //+----+-+--+-+--+-+--+-+--+-+--+-+--+-+--+-+--+-+--+-+--+-+--+-+--+-+-------+ - TAB , ' , , , . , Y , Q , F , G , R , W , P , / , = , \ , - //+------++---++---++---++---++---++---++---++---++---++---++---++---+-------+ - CAPS , A , O , E , I , U , D , T , N , S , M , - , ENT , - //+-------+-+--+-+--+-+--+-+--+-+--+-+--+-+--+-+--+-+--+-+--+-+--+-----------+ - LSFT , : , X , C , V , Z , H , J , K , L , B , RSFT , - //+------+--+---++----++---+----+----+----+----+-+--+---++----++------+------+ - LCTL , LGUI , LALT , SPACE , RALT , RGUI , MENU , RCTL - //+------+------+------+-------------------------+------+------+------+------+ -``` - - And you can see [my iris keyboard layout](../../keyboards/iris/keymaps/edvorakjp/keymap.c) for sample implementation, too. - -## for Japanese - -- æ—ĨæœŽčŠžå…Ĩ力į”ĻãŪキマをčŋ―加 - - IME 切りæ›ŋえキマ - - 長択しでノã‚ĪãƒĪマ切りæ›ŋえ、įŸ­æŠžã—でIME切りæ›ŋえ - - macOS(かお/č‹ąæ•°)、Windows(Alt+\`)ãŪäļĄæ–đãŦåŊūåŋœ -- Define some custom keys for typing Japanese - - IME switching - - act as LOWER/RAISE when hold, act as IME switching when tapped - - for macOS(かお/č‹ąæ•°), for Windows(Alt+\`) - -## for Programmer - -- Dvorak 配列をベマã‚đãŦ、ショマトã‚ŦットでよくåˆĐį”Ļされる XCV ãŊ QWERTY 配列ãŪä―į―Ūをįķ­æŒ -- äļ€éƒĻãŦVimãƒĶマã‚ķį”ĻãŪキマ配į―ŪをåŪŸæ–― - - HJKL キマをæĻŠäļĶãģで配į―Ū - - Shift択äļ‹æ™‚ãĻ非択äļ‹æ™‚で、";"キマãŪ挙動をå…Ĩれæ›ŋえ - `config.h` 内で `#define SWAP_SCLN` ãŪåŪĢčĻ€ãŒåŋ…čĶã§ã™ïž‰ -- デフã‚ĐãƒŦトノã‚ĪãƒĪマãŦãŊ、数字キマãŪäŧĢわりãŦčĻ˜å· `!@#$%^&*()` を配į―Ū - -- mainly based on Dvorak layout, but XCV is available in the same position of QWERTY layout -- for Vim users - - HJKL is lining side by side - - swap the ";" key behavior. i.e. send ":" normally and send ";" when you hold shift. - (need `#define SWAP_SCLN` in your `config.h`) -- we can type `!@#$%^&*()` keys without shift keys in base layer - -## License - -Copyright 2018 Ryo Maeda epaew.333@gmail.com @epaew - -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 . diff --git a/users/edvorakjp/rules.mk b/users/edvorakjp/rules.mk deleted file mode 100644 index 587c3b8d2e..0000000000 --- a/users/edvorakjp/rules.mk +++ /dev/null @@ -1,7 +0,0 @@ -SRC += edvorakjp.c \ - edvorakjp_process_record.c \ - edvorakjp_status.c - -ifeq ($(TAP_DANCE_ENABLE), yes) -SRC += edvorakjp_tap_dance.c -endif diff --git a/users/ericgebhart/base_layers/accents.h b/users/ericgebhart/base_layers/accents.h deleted file mode 100644 index ad575da65c..0000000000 --- a/users/ericgebhart/base_layers/accents.h +++ /dev/null @@ -1,90 +0,0 @@ -#pragma once -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ - -// probably best to have e and ÃĐ on different fingers. - -// doesnt work, oled displays garbage -/* #define CARTE_ACCENTED \ */ -/* carte_de_map(" ÃĶœÊÃđÃŽ ÂŋÃŊÞÃķÃŦ ", \ */ -/* " àÃīÃĻÃĐÃŪ ÃŧÃ§ÃąÃŸ^", \ */ -/* " ÃĒÃķíÚí ") */ - -// need to figure out a better way to display these on the oled. -#define CARTE_ACCENTED \ - carte_de_map(" aoeui ?iuoe ", \ - " aoeei ucnS^", \ - " aoiÚi ") - -#define ___ACCENTED___ \ - LANG_MAP(_AE, _OE, _ECIR, _UGRV, _IGRV, _IQUE, _IIAE, _UIAE, _OIAE, _EIAE, \ - _AGRV, _OCIR, _EGRV, _EACU, _ICIR, _UCIR, _CCED, _NTIL, _SS, _DCIR, \ - _AACU, _ODIA, _IACU, _UACU, _IACU, _SPC, _SPC, _SPC , _SPC, _SPC) - - -// A dead key layer, optimized for Most common, -// western european. -#define CARTE_MORTE \ - carte_de_map(" ˝˘Ė‰ Ė› ˙° ", \ - "/`^Âī ÂļÂĻ~ÂĪ", \ - " ,ˇ. ˛ÂĩÂŊ") - -#define ___MORTE___ \ - LANG_MAP(_, _DACU, _BREV, _HOKA, _, _, _HORN, _DOTA, _RNGA, _, \ - _DSLS, _DGRV, _DCIR, _ACUT, _, _, _CEDL, _DIAE, _DTIL, _CURR, \ - _, _DCMM, _CARN, _DOTB, _, _, _OGON, _DGRK, _MACR, _) - -// Just taking a guess and putting the things I know are most -// used in easy to use places., not sure about ntil and ss, put -// them in their dvorak spots on the home row. - -/* #define CARTE_ACCENTS_MORTE \ */ -/* carte_de_map(" ÃĶœÊÃđÃŽ Âŋ`^ÂīÃŦ ", \ */ -/* " àÃīÃĻÃĐÃŪ ÂļÃ§ÃąÃŸ~", \ */ -/* " ÃĒÃķ,Úí ÂĻˇ° ") */ - -#define CARTE_ACCENTS_MORTE \ - carte_de_map(" aoeui ?`^'e ", \ - " aoeei ,cnS~", \ - " ao,ui \"^o") - -#define ___ACCENTS_MORTE___ \ - LANG_MAP(_AE, _OE, _ECIR, _UGRV, _IGRV, _IQUE, _DGRV, _DCIR, _ACUT, _EIAE, \ - _AGRV, _OCIR, _EGRV, _EACU, _ICIR, _CEDL, _CCED, _NTIL, _SS, _DTIL, \ - _AACU, _OIAE, _DCMM, _UACU, _IACU, _OGON, _DIAE, _CARN, _RNGA, _HORN) - -/* // DEAD layer. */ -/* BP_DCIR // ^ (dead) */ -/* BP_ACUT // Âī (dead) */ -/* BP_DGRV // ` (dead) */ -/* BP_CARN // ˇ (dead) */ -/* BP_DSLS // / (dead) */ -/* BP_BREV // ˘ (dead) */ -/* BP_DIAE // ÂĻ (dead) */ -/* BP_DTIL // ~ (dead) */ -/* BP_MACR // ÂŊ (dead) */ -/* BP_CEDL // Âļ (dead) */ -/* BP_RNGA // ° (dead) */ -/* BP_DGRK // Âĩ (dead Greek key) */ -/* BP_OGON // ˛ (dead) */ -/* BP_DACU // ˝ (dead) */ -/* BP_DOTA // ˙ (dead) */ -/* BP_CURR // ÂĪ (dead) */ -/* BP_HORN // Ė› (dead) */ -/* BP_DCMM // , (dead) */ -/* BP_HOKA // Ė‰ (dead) */ -/* BP_DOTB // ĖĢ (dead) */ diff --git a/users/ericgebhart/base_layers/alt.h b/users/ericgebhart/base_layers/alt.h deleted file mode 100644 index 28cf5ab738..0000000000 --- a/users/ericgebhart/base_layers/alt.h +++ /dev/null @@ -1,150 +0,0 @@ -#pragma once -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ -// e goes on the left thumb -#define CARTE_MALTRON \ - carte_de_map(" qpycb vmuzl", \ - " anisf ctdor", \ - " ;/jg, .wk-x e") - -#define ___MALTRON___ \ - LANG_MAP(_Q, _P, _Y, _C, _B, _V, _M, _U, _Z, _L, \ - _A, _N, _I, _S, _F, _D, _T, _D, _O, _R, \ - TL_SCLN, TL_SLSH, _J, _G, TL_COMM, TL_DOT, _W, _K, TL_MINS, _X) - -#define CARTE_EUCALYN \ - carte_de_map(" /,.fq aoeiu", \ - " zxcvw mrdyp", \ - " gtksn bhjl;") - -#define ___EUCALYN___ \ - LANG_MAP(TL_SLSH, TL_COMM, TL_DOT, _F, _Q, _A, _O, _E, _I, _U, \ - _Z, _X, _C, _V, _W, _M, _R, _D, _Y, _P, \ - _G, _T, _K, _S, _N, _B, _H, _J, _L, TL_SCLN) - - - -// RSTHD -/* j c y f k | z l , u q = */ -/* r s t h d | m n a i o - */ -/* / v g p b | x w . ; ' */ -/* e */ - -// need a thumb cluster for this. -// removed = and -, edge keys if you've got them. -// e goes on left thumb - -#define CARTE_RSTHD \ - carte_de_map(" jcyfk zl,uq", \ - " rsthd mnaio", \ - " /vgpb xw.;' e") - -#define ___RSTHD___ \ - LANG_MAP(_J, _C, _Y, _F, _K, _Z, _L, TL_COMM, _U, _Q, \ - _R, _S, _T, _H, _D, _M, _N, _A, _I, _O, \ - _/, _V, _G, _P, _B, _X, _W, TL_DOT, TL_SCLN, TL_QUOT) - -#define CARTE_HANDS_UP \ - carte_de_map(" fyou, kwclp", \ - " hiea. dtsrn", \ - " bj'z; vmgxq") - -#define ___HANDS_UP___ \ - LANG_MAP(_F, _Y, _O, _U, TL_COMM, _K, _W, _C, _L, _P, \ - _H, _I, _E, _A, TL_DOT , _D, _T, _S, _R, _N, \ - _B, _J, TL_QUOT, _Z, TL_SCLN, _V, _M, _G, _X, _Q) - -#define CARTE_WHITE \ - carte_de_map(" vyd,' jmlu-", \ - " atheb csnoi", \ - " pkgwq xrf.z") - -#define ___WHITE___ \ - LANG_MAP(_V, _Y, _D, TL_COMM, TL_QUOT, _J, _M, _L, _U, _MINS, \ - _A, _T, _H, _E, _B, _C, _S, _N, _O, _I, \ - _P, _K, _G, _W, _Q, _X, _R, _F, TL_DOT, _Z) - - -#define CARTE_ISRT \ - carte_de_map(" yclmk zfu,'", \ - " isrtg pneao", \ - " qvwdj bh/.x") - -#define ___ISRT___ \ - LANG_MAP(_Y, _C, _L, _M, _K, _Z, _F, _U, TL_COMM, TL_QUOT, \ - _I, _S, _R, _T, _G, _P, _N, _E, _A, _O, \ - _Q, _V, _W, _D, _J, _B, _H, TL_SLSH, TL_DOT, _X) - -#define CARTE_SOUL \ - carte_de_map(" qwldp kmuy;", \ - " srtg fneio", \ - " zxcvj bh,./") - -#define ___SOUL___ \ - LANG_MAP(_Q, _W, _L, _D, _P, _K, _M, _U, _Y, TL_SCLN, \ - _A, _S, _R, _T, _G, _F, _N, _E, _I, _O, \ - _Z, _X, _C, _V, _J, _B, _H, TL_COMM, TL_DOT, TL_SLSH) - -#define CARTE_NIRO \ - carte_de_map(" qwudp jfyl;", \ - " asetg hniro", \ - " zxcvb km,./") - -#define ___NIRO___ \ - LANG_MAP(_Q, _W, _U, _D, _P, _J, _F, _Y, _L, TL_SCLN, \ - _A, _S, _E, _T, _G, _H, _N, _I, _R, _O, \ - _Z, _X, _C, _V, _B, _K, _M, TL_COMM, TL_DOT, TL_SLSH) - -#define CARTE_ASSET \ - carte_de_map(" qwjfg ypul;", \ - " asetd hnior", \ - " zxcvb km,./") - -#define ___Asset___ \ - LANG_MAP(_Q, _W, _J, _F, _G, _Y, _P, _U, _L, TL_SCLN, \ - _A, _S, _E, _T, _D, _H, _N, _I, _O, _R, \ - _Z, _X, _C, _V, _B, _K, _M, TL_COMM, TL_DOT, TL_SLSH) - -#define CARTE_WHORF \ - carte_de_map("flhdm vwou,", \ - "srntk gyaei", \ - "xjbzq pc';. ") - -#define ___WHORF___ \ - LANG_MAP(_F, _L, _H, _D, _M, _V, _W, _O, _U, TL_COMM, \ - _S, _R, _N, _T, _K, _G, _Y, _A, _E, _I, \ - _X, _J, _B, _Z, _Q, _P, _C, TL_QUOT, TL_SCLN, TL_DOT ) - -#define CARTE_WHORF6 \ - carte_de_map("vlhkj gwou.", \ - "srntk ydeai", \ - "xqbfz pc',; ") - -#define ___WHORF6___ \ - LANG_MAP(_V, _L, _H, _D, _M, _G, _W, _O, _U, TL_DOT, \ - _S, _R, _N, _T, _K, _Y, _D, _E, _A, _I, \ - _X, _Q, _B, _F, _Z, _P, _C, TL_QUOT, TL_COMM, TL_SCLN ) - -/* rsht/iena */ -/* jfldv @uopq */ -/* zrshtg .iena: */ -/* xcmwk /y,b? */ - -// pine -/* y l r d w j m o u , */ -/* c s n t g p h a e i */ -/* x z q v k b f ' / . */ diff --git a/users/ericgebhart/base_layers/base_layers.h b/users/ericgebhart/base_layers/base_layers.h deleted file mode 100644 index ee784473fb..0000000000 --- a/users/ericgebhart/base_layers/base_layers.h +++ /dev/null @@ -1,58 +0,0 @@ -#pragma once -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ - -#include "keycodes.h" -#include "lang_map.h" -#include "oled_stuff.h" - - -// an empty template. - -/* #define CARTE_EMPTY \ */ -/* carte_de_map(" ", \ */ -/* " ", \ */ -/* " ") */ -/* */ -/* #define ___EMPTY___ \ */ -/* LANG_MAP(_, _, _, _, _, _, _, _, _, _, \ */ -/* _, _, _, _, _, _, _, _, _, _, \ */ -/* _, _, _, _, _, _, _, _, _, _) */ - - -// dvorak, capewell-dvorak, ahei, and boo. -#include "dvorak.h" -//qwerty, workman, norman, -#include "qwerty.h" -// Colemak, halmak, minimak, etc. -#include "maks.h" -// eucalyn, maltron -#include "alt.h" -// mtgap, ctgap, apt -#include "gap.h" -// some hands down. -#include "hands_down.h" -// some beakls. -#include "beakl.h" -// bepo, optimot, beakl19bis, godox-fr?. -#include "bepo.h" -// some carpalxs. -#include "carpalx.h" -// The symbol, number function rows for all the above. -#include "toprows.h" -// some layers with accents and dead keys. -#include "accents.h" diff --git a/users/ericgebhart/base_layers/beakl.h b/users/ericgebhart/base_layers/beakl.h deleted file mode 100644 index 58b5fa4371..0000000000 --- a/users/ericgebhart/base_layers/beakl.h +++ /dev/null @@ -1,158 +0,0 @@ -#pragma once -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ -// beakl, balanced effort key layout. -// Beakl 15 and 19 are somewhat more related. -// Beakl-wi is the latest. It feels a little bit more like a system. - - -// Remember the - and ; outside pinky keys. -// Or use the 6 size. -// Both are on the symbol layer too. So you -// wont lose them at least. -// KC_BK_COMM, KC_BK_QUOT, KC_BK_DOT - Beakl->Qwerty -// BP_BK_COMM, BP_BK_QUOT, BP_BK_DOT - Beakl->Bepo -// take care of the different shifted chars. - - -/* BEAKL 27 (main layer): */ -/* // altered shifted pairs: dot = .` comma = ,? dquot = !" */ -/* Alt target is BK2 */ - -/* 32104 76598 */ -/* qhoux gcmrv */ -/* yiea. dstnb */ -/* j",k' wflpz */ - -/* BEAKL 27 (shift layer): */ -/* !@$#% ^(*)& */ -/* QHOUX GCMRV */ -/* YIEA` DSTNB */ -/* J!?K' WFLPZ */ - - -#define CARTE_BEAKL27 \ - carte_de_map(" qhoux gcmrz ", \ - " yiea. dstnb ", \ - " j\",k' wflpv ") - -// Alt target is BK -#define ___BEAKL27___ \ - LANG_MAP(_Q, _H, _O, _U, _X, _G, _C, _M, _R, _Z, \ - _Y, _I, _E, _A, TL_DOT, _D, _S, _T, _N, _B, \ - _J, TL_EXLM, TL_COMM, _K, TL_QUOT, _W, _F, _L, _P, _V) - -/* BEAKL 15 (main layer): */ -// altered shifted pairs: quot = '` comma = ,! dot = .@ -/* 40123 76598 */ -#define CARTE_BEAKL15 \ - carte_de_map(" qhoux gcrfz ", \ - " yiea. dstnb ", \ - " j/,k' wmlpv ") - -// Alt target is BK -#define ___BEAKL15___ \ - LANG_MAP(_Q, _H, _O, _U, _X, _G, _C, _R, _F, _Z, \ - _Y, _I, _E, _A, TL_DOT, _D, _S, _T, _N, _B, \ - _J, _SLSH, TL_COMM, _K, TL_QUOT, _W, _M, _L, _P, _V) - -/* BEAKL 19 */ -// Beakl 19. scores better than 15, better in french also. -// Both are lots better than dvorak or bepo. - -/* same symbols and keypad as 15 */ -/* number row is different */ -/* 32104 76598 */ - -// Alt target is BK -#define CARTE_BEAKL19 \ - carte_de_map(" q.ouj wdnm, ", \ - " haeik gsrtp ", \ - " z'/yx bclfv ") - -#define ___BEAKL19___ \ - LANG_MAP(_Q, _DOT, _O, _U, _J, _W, _D, _N, _M, TL_COMM, \ - _H, _A, _E, _I, _K, _G, _S, _R, _T, _P, \ - _Z, _QUOT, _SLSH, _Y, _X, _B, _C, _L, _F, _V) - -//BEAKL 19bis - original. -// the ÃĐ and ÃĻ were simply added for analysis not real use. -// even so, this layout scores well for french, better than -// bepo and mtgap -/* qyouz wdnck */ -/* -hiea, gtrsp; */ -/* ÃĻj'ÃĐ.x vmlfb */ - -// A 3x12 -//BEAKL 19bis mod z. -// French optimised with some english. -// This version rearranges things a little based on fequency. -// Since it needs 3x12, I filled in the corners and removed ;. -// Leaving y where it is. the o and the e might cause sfbs. -// Put ÃĐ on a different finger from e. -// swap z, e's, add à, ^, and Ê, swap ; for -. -// it might be beneficial to swap w and à, as à is much more frequent than w -#define CARTE_BEAKL19bis \ - carte_de_map(" àqyouÃĐ wdnck^ ", \ - " ;hiea, gtrsp- ", \ - " zj'ÃĻ.x vmlfbÊ ") - -#define ___BEAKL19bis_3x12___ \ - LANG_MAP6( \ - _AGRV, _Q, _Y, _O, _U, _EACU, _W, _D, _N, _C, _K, _DCIR, \ - _SCLN, _H, _I, _E, _A, _COMM, _G, _T, _R, _S, _P, _MINS, \ - _Z, _J, _QUOT, _EGRV, _DOT, _X, _V, _M, _L, _F, _B, _ECIR) - - -// Beakl Wi. This is the most current beakl this size. 18/01/2022. -// Nothing on the 6th outer columns but layer toggle buttons. All 6. -// altered shifted pairs: dot = .` comma = ,~ colon = :; -// i is on the left thumb. -/* ;you- ctrsv */ -/* qheaw gdnmz */ -/* j,.k' bplfx */ -/* i */ - -#define CARTE_BEAKLWI \ - carte_de_map(" ;you- ctrsv ", \ - " qheaw gdnmz ", \ - " j,.k' bplfx i") - -#define ___BEAKLWI___ \ - LANG_MAP(TL_COLN, _Y, _O, _U, _MINS, _C, _T, _R, _S, _V, \ - _Q, _H, _E, _A, _W, _G, _D, _N, _M, _Z, \ - _J, TL_COMM, TL_DOT, _K, _QUOT, _B, _P, _L, _F, _X) - -// Thumbs. -#define ___BEAKLWI_CRKBD_THUMBS___ LT_ESC, LT_I, LT_TAB, LT_ENT, LT_SPC, LT_BSPC - -// My version, loses KC_mins, because it's easier on my symbol layer. -// put I in it's dvorak spot instead of thumbs, move W up to make room for I. -// I'd rather have w and i on different fingers. One domino... - -// beakl-wi - mod iw- - -#define CARTE_BEAKLWIa \ - carte_de_map(" ;youw ctrsv ", \ - " qheai gdnmz ", \ - " j,.k' bplfx ") - -// Alt target is BKW -#define ___BEAKLWIa___ \ - LANG_MAP(TL_COLN, _Y, _O, _U, _W, _C, _T, _R, _S, _V, \ - _Q, _H, _E, _A, _I, _G, _D, _N, _M, _Z, \ - _J, TL_COMM, TL_DOT, _K, _QUOT, _B, _P, _L, _F, _X) diff --git a/users/ericgebhart/base_layers/bepo.h b/users/ericgebhart/base_layers/bepo.h deleted file mode 100644 index 64f56ec9ab..0000000000 --- a/users/ericgebhart/base_layers/bepo.h +++ /dev/null @@ -1,114 +0,0 @@ -#pragma once -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ -// Maps based on BEPO Mostly 3x12 - -// BEAKL 19bis - English with French optimisations. -// Least used letters in french xzykw QJÀ are fairly high. -// XZ are good choices for pushing out, from english and french, -// or using chords in both languages. - -// Note: The percentages came from different sources so do not -// match between languages. -// French -/* Q 0.89 % */ -/* J 0.71 % */ -/* À 0.54 % */ -/*-------------*/ -/* X 0.42 % */ -/* È 0.35 % */ -/* Ê 0.24 % */ -/* Z 0.21 % */ -/* Y 0.19 % */ -/* K 0.16 % */ -/* Ô 0.07 % */ -/* Û 0.05 % */ -/* W 0.04 % */ - -/* Least used letters in english. */ -/* X 0.2902% 1.48 */ -/* Z 0.2722% 1.39 */ -/* J 0.1965% 1.00 */ -/* Q 0.1962% (1) */ - - -// OPtimot by @Pyjam. -/* àjoÃĐb fdl’qxz */ -/* aieu, ptsrn^ç */ -/* ÊkyÃĻ.w gcmhvz */ - -// -- rearranged z, and ç to get 3x12 -#define CARTE_OPTIMOT \ - carte_de_map(" çàjoÃĐb fdl’qx ", \ - " aieu, ptsrn^ ", \ - " ÊkyÃĻ.w gcmhvz ") - -#define ___OPTIMOT_3x12___ \ - LANG_MAP6( \ - _CCED, _AGRV, _J, _O, _EACU, _B, _F, _D, _L, _QUOT, _Q, _X, \ - _TAB, _A, _I, _E, _U, _COMM, _P, _T, _S, _R, _N, _DCIR, \ - _ECIR, _K, _Y, _EGRV, _DOT, _W, _G, _C, _M, _H, _V, _Z) - -// no z or x. combos exist for them. -#define CARTE_OPTIMOT_COMPACT \ - carte_de_map(" àjoÃĐb fdl’q ", \ - " aieu, ptsrn ", \ - " kyÃĻ.w gcmhv ") - -#define ___OPTIMOT_3x10___ \ - LANG_MAP6( \ - _AGRV, _J, _O, _EACU, _B, _F, _D, _L, _QUOT, _Q, \ - _A, _I, _E, _U, _COMM, _P, _T, _S, _R, _N, \ - _K, _Y, _EGRV, _DOT, _W, _G, _C, _M, _H, _V,) - -// Maybe Use this for C -//BP_C_CCED = MT(BP_CCED, BP_C) - -// BEPO - -// No quot, à or ç -/* bÃĐpoÃĻ vdljz */ -/* auie, ctsrn */ -/* myx.k qghfw */ -#define CARTE_BEPOc \ - carte_de_map(" bÃĐpoÃĻ vdljz", \ - " auie, ctsrn", \ - " myx.k qghfw") - -#define ___BEPOc_3x10___ \ - LANG_MAP( \ - _B, _EACU, _P, _O, _EGRV, _V, _D, _L, _J, _Z, \ - _A, _U, _I, _E, _COMM, _C, _T, _S, _R, _N, \ - _M, _Y, _X, _DOT, _K, _Q, _G, _H, _F, _W) - - -#define CARTE_BEPO \ - carte_de_map(" çbÃĐpoÃĻ ^vdljz ", \ - " auie, ctsrnm ", \ - " Êàyx.k ’qghfw ") - -#define ___BEPO_3x12___ \ - LANG_MAP6(_CCED, _B, _EACU, _P, _O, _EGRV, _DCIR, _V, _D, _L, _J, _Z, \ - _TAB, _A, _U, _I, _E, _COMM, _C, _T, _S, _R, _N, _M, \ - _ECIR, _AGRV, _Y, _X, _DOT, _K, _QUOT, _Q, _G, _H, _F, _W) - -// dont like this one much. -/* #define ___GODOX_3x12___ \ */ -/* LANG_MAP6(___, _AGRV, _B, _EACU, _dot, _mins, _DCIR, _V, _L, _M, _X, _CCED, \ */ -/* ___, _O, _U, _I, _A, _J, _G, _T, _S, _N, _R, _F, \ */ -/* ___, _Q, _Y, _EGRV, _P, _K, _W, _D, _UP, _H, _C, _Z) */ -/* // E goes on left thumb. */ diff --git a/users/ericgebhart/base_layers/carpalx.h b/users/ericgebhart/base_layers/carpalx.h deleted file mode 100644 index ae2ed708a5..0000000000 --- a/users/ericgebhart/base_layers/carpalx.h +++ /dev/null @@ -1,46 +0,0 @@ -#pragma once -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ -#define CARTE_CARPALX_QFMLWY \ - carte_de_map(" qfmlw yuobj", \ - " dstnr iaeh;", \ - " zvgcx pk,./") - -#define ___CARPALX_QFMLWY___ \ - LANG_MAP(_Q, _F, _M, _L, _W, _Y, _U, _O, _B, _J, \ - _D, _S, _T, _N, _R, _I, _A, _E, _H, TL_SCLN, \ - _Z, _V, _G, _C, _X, _P, _K, TL_COMM, TL_DOT, TL_SLSH) - -#define CARTE_CARPALX_QFMLWB \ - carte_de_map(" qgmlw byuv;", \ - " dstnr iaeoh", \ - " zxcfj kp,./") - -#define ___CARPALX_QGMLWB___ \ - LANG_MAP(_Q, _G, _M, _L, _W, _B, _Y, _U, _V, TL_SCLN, \ - _D, _S, _T, _N, _R, _I, _A, _E, _O, _H, \ - _Z, _X, _C, _F, _J, _K, _P, TL_COMM, TL_DOT, TL_SLSH) - -#define CARTE_CARPALX_QGMLWY \ - carte_de_map(" qgmlw yfub;", \ - " dstnr iaeoh", \ - " zxcvj kp,./") - -#define ___CARPALX_QGMLWY___ \ - LANG_MAP(_Q, _G, _M, _L, _W, _Y, _F, _U, _B, TL_SCLN, \ - _D, _S, _T, _N, _R, _I, _A, _E, _O, _H, \ - _Z, _X, _C, _V, _J, _K, _P, TL_COMM, TL_DOT, TL_SLSH) diff --git a/users/ericgebhart/base_layers/dvorak.h b/users/ericgebhart/base_layers/dvorak.h deleted file mode 100644 index 8deee2005c..0000000000 --- a/users/ericgebhart/base_layers/dvorak.h +++ /dev/null @@ -1,73 +0,0 @@ -#pragma once -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ - -#define CARTE_DVORAK \ - carte_de_map(" ',.py fgcrl ", \ - " aoeui dhtns ", \ - " ;qjkx bmwvz ") - -#define ___DVORAK___ \ - LANG_MAP(TL_QUOT, TL_COMM, TL_DOT, _P, _Y, _F, _G, _C, _R, _L, \ - _A, _O, _E, _U, _I, _D, _H, _T, _N, _S, \ - TL_SCLN, _Q, _J, _K, _X, _B, _M, _W, _V, _Z) - -#define CARTE_DVORAK_RLC_IU \ - carte_de_map(" ',.py fgrlc ", \ - " aoeiu dhtns ", \ - " ;qjkx bmwvz ") - -#define ___DVORAK_RLC_IU___ \ - LANG_MAP(TL_QUOT, TL_COMM, TL_DOT, _P, _Y, _F, _G, _R, _L, _C, \ - _A, _O, _E, _I, _U, _D, _H, _T, _N, _S, \ - TL_SCLN, _Q, _J, _K, _X, _B, _M, _W, _V, _Z) - -#define CARTE_BOO \ - carte_de_map(" ,.ucv qfdly", \ - " aoesg bntri", \ - " ;x'wz phmkj") - -#define ___BOO___ \ - LANG_MAP( TL_COMM, TL_DOT, _U, _C, _V, _Q, _F, _D, _L, _Y, \ - _A, _O, _E, _S, _G, _B, _N, _T, _R, _I, \ - TL_SCLN, _X, TL_QUOT, _W, _Z, _P, _H, _M, _K, _J) - -#define CARTE_CAPEWELL_DVORAK \ - carte_de_map( " ',.py qfgrk", \ - " oaeiu dhtns", \ - " zxcvj lmwb;") - -#define ___CAPEWELL_DVORAK___ \ - LANG_MAP(TL_QUOT, TL_COMM, TL_DOT, _P, _Y, _Q, _F, _G, _R, _K, \ - _O, _A, _E, _I, _U, _D, _H, _T, _N, _S, \ - _Z, _X, _C, _V, _J, _L, _M, _W, _B, TL_SCLN) - -//ahei - derived from dvorak. -// x moved to left side. j on pinky. -/*;pouyq gdlm/= */ -/* ahei, fstnr- */ -/* j'k.x bcwvz */ - -#define CARTE_AHEI \ - carte_de_map("pouyq gdlm/", \ - "ahei, fstnr", \ - "j'k.x bcwvz") - -#define ___AHEI___ \ -LANG_MAP(_P, _O, _U, _Y, _Q, _G, _D, _L, _M, TL_SLSH, \ - _A, _H, _E, _I, TL_COMM, _F, _S, _T, _N, _R, \ - _J, TL_QUOT, _K, TL_DOT, _X, _B, _C, _W, _V, _Z) diff --git a/users/ericgebhart/base_layers/gap.h b/users/ericgebhart/base_layers/gap.h deleted file mode 100644 index 76310bc6f9..0000000000 --- a/users/ericgebhart/base_layers/gap.h +++ /dev/null @@ -1,67 +0,0 @@ -#pragma once -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ - -// an alternate I found. -/* Reference: MTGAP */ -/* y p o u - | b d l c k j */ -/* i n e a , | m h t s r v */ -/* ( " ' . _ | ) f w g x */ -/* z */ - -#define CARTE_MTGAP \ - carte_de_map(" ypouj kdlcw", \ - " inea, mhtsr", \ - " qz/.; bfgvx") - -#define ___MTGAP___ \ - LANG_MAP(_Y, _P, _O, _U, _J, _K, _D, _L, _C, _W, \ - _I, _N, _E, _A, TL_COMM, _M, _H, _T, _S, _R, \ - _Q, _Z, TL_SLSH, TL_DOT, TL_SCLN, _B, _F, _G, _V, _X) - -/* //APT v3*/ -/* https://github.com/Apsu/APT */ -#define CARTE_APT \ - carte_de_map(" wgdfb qluoy", \ - " rsthk jneai; ", \ - " xcmpv z,.'/") - -#define ___APT___ \ - LANG_MAP(_W, _G, _D, _F, _B, _Q, _L, _U, _O, _Y, \ - _R, _S, _T, _H, _K, _J, _N, _E, _A, _I, TL_SCLN, \ - _X, _C, _M, _P, _V, _Z, TL_COMM, TL_DOT, TL_QUOT, TL_SLSH) - - -#define CARTE_CTGAP \ - carte_de_map(" vplcf kuoyj", \ - " rntsd 'aeih", \ - " zbmgw x,.;q") - -#define ___CTGAP___ \ - LANG_MAP(_V, _P, _L, _C, _F, _K, _U, _O, _Y, _J, \ - _R, _N, _T, _S, _D, TL_QUOT, _A, _E, _I, _H, \ - _Z, _B, _M, _G, _W, _X, TL_COMM, TL_DOT, TL_SCLN, _Q) - -#define CARTE_CANARY \ - carte_de_map( " wlypb zfou'", \ - " crstg mneia", \ - " qjvd kxh/,.") - -#define ___CANARY___ \ - LANG_MAP(_W, _L, _Y, _P, _B, _Z, _F, _O, _U, TL_QUOT, \ - _C, _R, _S, _T, _G, _M, _N, _E, _I, _A, \ - _Q, _J, _V, _D, _K, _X, _H, TL_SLSH, TL_COMM, TL_DOT) diff --git a/users/ericgebhart/base_layers/hands_down.h b/users/ericgebhart/base_layers/hands_down.h deleted file mode 100644 index 0841a358d2..0000000000 --- a/users/ericgebhart/base_layers/hands_down.h +++ /dev/null @@ -1,147 +0,0 @@ -#pragma once -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ - -// https://sites.google.com/alanreiser.com/handsdown/home - -// The only 3x12 layout. The rest are 3x10. -#define CARTE_HD_NEU \ - carte_de_map( " wfmpv /.q\"'z", \ - " rsntb ,aeihj", \ - " xcldg -uoykK") - -#define ___HD_NEU___ \ - LANG_MAP(_SML_NAV, _W, _F, _M, _P, _V , TL_SLSH, TL_DOT, _Q, TL_DQUO, TL_QUOT, _Z, \ - _TAB, _R, _S, _N, _T, _B , TL_COMM, _A, _E, _I, _H, _J, \ - _OS_ACCENT, _X, _C, _L, _D, _G , TL_MINS, _U, _O, _Y, _K, _SML_KEYPAD) - - -// modified to fit 3x10. -#define CARTE_HD_NEU_NARROW \ - carte_de_map(" xcldb zuoyq", \ - " rsntg ,aeih", \ - " wfmpv ;./jk") - -#define ___HD_NEU_NARROW___ \ - LANG_MAP(_X, _C, _L, _D, _B, _Z, _U, _O, _Y, _Q, \ - _R, _S, _N, _T, _G, TL_COMM, _A, _E, _I, _H, \ - _W, _F, _M, _P, _V, _SCLN, TL_DOT, TL_SLSH, _J, _K) - - -#define CARTE_HD_REF \ - carte_de_map(" qchpv kyoj/", \ - " rsntg wueia", \ - " xmldb zf',.") - -#define ___HD_REF___ \ - LANG_MAP(_Q, _C, _H, _P, _V, _K, _Y, _O, _J, TL_SLSH, \ - _R, _S, _N, _T, _G, _W, _U, _E, _I, _A, \ - _X, _M, _L, _D, _B, _Z, _F, TL_QUOT, TL_COMM, TL_DOT ) - - -// All of these have a consonant or vowel on the thumb keys. - -/* alt shift keys "? '! dash and elan */ -/* (< {[ - elan */ -/* dash has thumbs of ,; and .: */ -/* dash and the rest get these too. */ -/* alt shifts ;: .& /\* '? "! ,| -+ */ -/* COMBOS - z = jg, z=vg, q=uk, q=mp. */ - - -// no z or q, use combos. -#define CARTE_HD_TITANIUM \ - carte_de_map(" jgmpv ;./\"' ", \ - " csntw ,aeih ", \ - " xfldb -uoyk r") - -#define ___HD_TITANIUM___ \ - LANG_MAP(_J, _G, _M, _P, _V, TL_SCLN, TL_DOT, TL_SLSH, TL_DQUO, TL_QUOT, \ - _C, _S, _N, _T, _W , TL_COMM, _A, _E, _I, _H, \ - _X, _F, _L, _D, _B , TL_MINS, _U, _O, _Y, _K) - - -#define CARTE_HD_GOLD \ - carte_de_map(" jgmpv ;./\"' ", \ - " rsndb ,aeih ", \ - " xflcw -uoyk t") - -#define ___HD_GOLD___ \ - LANG_MAP(_J, _G, _M, _P, _V, TL_SCLN, TL_DOT, TL_SLSH, TL_DQUO, TL_QUOT, \ - _R, _S, _N, _D, _B , TL_COMM, _A, _E, _I, _H, \ - _X, _F, _L, _C, _W , TL_MINS, _U, _O, _Y, _K) -/* t, âĢ */ - -/* jz pq alt shifts ;: .& /\* '? "! ,| -+ */ - -#define CARTE_HD_PLATINUM \ - carte_de_map( "jghpv ;./'\"", \ - "rsntb ,aeic", \ - "xfmdk -uowy l") -/* l âĢ */ - -#define ___HD_PLATINUM___ \ - LANG_MAP(_J, _G, _H, _P, _V, TL_SCLN, TL_DOT, TL_SLSH, TL_QUOT, TL_DQUO, \ - _R, _S, _N, _T, _B, TL_COMM, _A, _E, _I, _C, \ - _X, _F, _M, _D, _K, TL_MINS, _U, _O, _W, _Y) - -#define CARTE_HD_SILVER \ - carte_de_map("jgmpv ;./'\"", \ - "rshtb ,aeic", \ - "xfldk -uowy n") -/* n âĢ */ - -#define ___HD_SILVER___ \ - LANG_MAP(_J, _G, _M, _P, _V, TL_SCLN, TL_DOT, TL_SLSH, TL_QUOT, TL_DQUO, \ - _R, _S, _H, _T, _B, TL_COMM, _A, _E, _I, _C, \ - _X, _F, _L, _D, _K, TL_MINS, _U, _O, _W, _Y) - -#define CARTE_HD_BRONZE \ - carte_de_map("jgmpv ;./'\"", \ - "rsntb ,aeic", \ - "xfldk -uowy h") -/* h âĢ */ - -#define ___HD_BRONZE___ \ - LANG_MAP(_J, _G , _M, _P, _V , TL_SCLN, TL_DOT, TL_SLSH , TL_QUOT, TL_DQUO, \ - _R, _S, _N, _T, _B , TL_COMM, _A, _E, _I, _C, \ - _X, _F, _L, _D, _K , TL_MINS, _U, _O, _W, _Y) - -#define CARTE_HD_ELAN \ - carte_de_map("vghpk /({'\"", \ - "rsntf jaeci", \ - "xmldb -uowy") -/* ,; .: âĢ ⏎ */ - -/* vz g h p kq /\* (< {[ '! "? */ -/* TL_COMM; TL_DOT: _âĢ ⏎ */ -#define ___HD_ELAN___ \ - LANG_MAP(_V, _G, _H, _P, _K, TL_SLSH, TL_LPRN, TL_LCBR, TL_QUOT, TL_DQUO, \ - _R, _S, _N, _T, _F, _J, _A, _E, _C, _I, \ - _X, _M, _L, _D, _B, TL_MINS, _U, _O, _W, _Y) - - -#define CARTE_HD_DASH \ - carte_de_map("jgmpv ;.'\"/", \ - "rsntb ,haoi", \ - "xcldw -fuky e") - /* e âĢ */ - -#define ___HD_DASH___ \ - LANG_MAP(_J, _G, _M, _P, _V , TL_SCLN, TL_DOT, TL_QUOT, TL_DQUO, TL_SLSH, \ - _R, _S, _N, _T, _B , TL_COMM, _H, _A, _O, _I, \ - _X, _C, _L, _D, _W , TL_MINS, _F, _U, _K, _Y) diff --git a/users/ericgebhart/base_layers/keymaps.txt b/users/ericgebhart/base_layers/keymaps.txt deleted file mode 100644 index 56dc7d79e3..0000000000 --- a/users/ericgebhart/base_layers/keymaps.txt +++ /dev/null @@ -1,300 +0,0 @@ -/* -This file can be commented by blocks or single lines using // -Blank lines are ignored -*/ -/* -Bigram frequencies in stats.csv -*/ - -[keys] -L21 L22 L23 L24 L25 L26 R26 R25 R24 R23 R22 R21 -L31 L32 L33 L34 L35 L36 R36 R35 R34 R33 R32 R31 -L41 L42 L43 L44 L45 L46 R46 R45 R44 R43 R42 R41 - -[weights] -5.0 3.6 2.4 1.8 2.2 3.5 3.5 2.2 1.8 2.4 3.6 5.0 -4.0 1.6 1.2 1.0 1.0 3.0 3.0 1.0 1.0 1.2 1.6 4.0 -5.0 3.4 2.6 2.2 1.8 4.0 4.0 1.8 2.2 2.6 3.4 5.0 - -/* -Weights should: -- limit weak fingers -- limit bottom row -- increase home row -- limit finger travel distance - -https://colemakmods.github.io/mod-dh/compare.html -*/ - -[penalties] - ,same_row,row_jump1,row_jump2 -ii, 2.5, 3.5, 4.5 // same finger -im, 0.5, 1.0, 2.0 -ir, 0.5, 0.8, 1.5 -ip, 0.5, 0.8, 1.1 -mi, -1.5, -0.5, 1.5 // inward roll -mm, 2.5, 3.5, 4.5 // same finger -mr, 0.5, 1.0, 2.0 -mp, 0.5, 0.8, 1.5 -ri, -1.5, -0.5, 1.5 // inward roll -rm, -2.0, -0.5, 1.2 // inward roll -rr, 2.5, 3.5, 4.5 // same finger -rp, 1.0, 1.5, 2.5 -pi, -1.0, 0.0, 1.0 // inward roll -pm, -1.0, 0.0, 1.5 // inward roll -pr, -1.0, 0.0, 1.5 // inward roll -pp, 3.0, 4.0, 5.5 // same finger - -/* -Only apply if not the same letter, and both letters on the same hand. - -i, m, r, and p refer to the fingers (index, middle, ring, pinky) -The columns refer to how many rows separate the two keys - -Penalties should: -- limit same finger typing (except same key twice) -- balance hands -- favor inward rolling -(last 2 in opposition with each other) -*/ - -[layouts] - ->>Qwerty -# q w e r t y i o u p # -ÃĐ a s d f g h j k l ; ' -ÃĻ z x c v b n m , . / - - ->>Azerty -ÃĻ a z e r t y u i o p ^ -' q s d f g h j k l m Ãđ -ÃĐ w x c v b n , . : ! - - ->>Qwertz -# q w e r t z u i o p Þ -ÃĐ a s d f g h j k l Ãķ ÃĪ -ÃĻ y x c v b n m , . - ' - ->>BÃĐpo 40% -# b ÃĐ p o ÃĻ ^ v d l j z -- a u i e , c t s r n m -ç à y x . k ' q g h f w - -// https://github.com/TeXitoi/keyberon#whats-the-layout ->>BÃĐpo keyberon -# b ÃĐ p o ÃĻ ^ v d l j z -w a u i e , c t s r n m -- à y x . k ' q g h f ç - ->>Dvorak -- ' , . p y f g c r l # -ÃĐ a o e u i d h t n s # -ÃĻ ; q j k x b m w v z # - ->>Colemak -# q w f p g j l u y ; # -ÃĐ a r s t d h n e i o ' -ÃĻ z x c v b k m , . / - - ->>Colemak DH -# q w f p b j l u y ; # -ÃĐ a r s t g m n e i o ' -ÃĻ z x c d v k h , . / - - ->>Colemak DH mod -# q w f p b j l u y ÃĐ ÃĻ -# a r s t g m n e i o - -# z x c d v k h , . ' / - ->>Workman -# q d r w b j f u p ; # -ÃĐ a s h t g y n e o i ' -ÃĻ z x m c v k l , . / - - ->>Norman -# q w d f k j u r l ; # -ÃĐ a s e t g y n i o h ' -ÃĻ z x c v b p m , . / - - ->>Carpalx -# q g m l w b y u v ; ÃĐ -ÃĻ d s t n r i a e o h ' -# z x c f j k p , . / - - ->>Neo -- x v l c w k h g f q ß -ÃĐ u i a e o s n r t d y -ÃĻ Þ Ãķ ÃĪ p z b m , . j ' - -// http://mkweb.bcgsc.ca/carpalx/?full_optimization ->>qgmlwyfub -# q g m l w y f u b ; ÃĐ -ÃĻ d s t n r i a e o h ' -# z x c v j k p , . / - - -// https://mathematicalmulticore.wordpress.com/the-keyboard-layout-project/ ->>MTGAP -# y p o u j k d l c w # -ÃĐ i n e a , m h t s r ' -ÃĻ q z / . : b f g v x - - -// http://mtgap.bilfo.com/official_keyboard.html -// http://mtgap.bilfo.com/completed_keyboard.html ->>MTGAP 2.0 -# , f h d k j c u l . # -ÃĐ o a n t g m s e r i - -ÃĻ q x b p z y w ' v ; # - ->>MTGAP "Easy" -# q w l d b j f u k p # -ÃĐ a s r t g h n e o i - -ÃĻ z x c v ; y m , . / ' - ->>MTGAP "shortcuts" -# k g l d b j h u f . # -ÃĐ r o t s w m n e a i - -ÃĻ z x v c q y p , ' ; # - ->>MTGAP "standard" -# k l h c b j d u f . # -ÃĐ o r n s g w t e a i - -ÃĻ x q v m z y p , ' ; # - ->>MTGAP "ergonomic" -# . f u d j q h c w k # -ÃĐ i a e t p l n s r o - -ÃĻ ' , y g z - m b v x # - -// https://geekhack.org/index.php?topic=67604.0 ->>Oneproduct -# p l d w g j x o y q ÃĻ -- n r s t m u a e i h ' -# z c f v b , . ? ; k ÃĐ - -// https://bepo.fr/wiki/Utilisateur:Bibidibop ->>Coeur -# ÃĐ w o p y b ' d l j z -x a u e i , c t s r n h -# - à ÃĻ . k g m f q v # - -// https://geekhack.org/index.php?topic=98275.0 ->>Kaehi -# q w l d g j u o p / ÃĐ -ÃĻ n r s t m k a e h i ' -# z x c v b y f , . ; - - -// https://deskthority.net/wiki/BEAKL ->>BEAKL 15 -ÃĐ q h o u x g c r f z # -- y i e a . d s t n b ; -ÃĻ j / , k ' w m l p v # - -// https://web.archive.org/web/20190906220509/http://shenafu.com/smf/index.php?topic=89.msg2566#msg2566 ->>BEAKL 19 -ÃĐ q . o u j w d n m , # -- h a e i k g s r t p ; -ÃĻ z ' / y x b c l f v # - -// https://www.reddit.com/r/ErgoDoxEZ/comments/gsvpug/layout_of_the_month_beakl_15/ftcan68/?context=3 ->>BEAKL 19bis -# q y o u z w d n c k # -- h i e a , g t r s p ; -ÃĻ j ' ÃĐ . x v m l f b # - -// https://www.reddit.com/r/ErgoMechKeyboards/comments/j1eopm/hands_down_layout_is_ready_for_daily_use/g7bjmr7/?context=3 ->>BEAKL 19 Opt French -# w m r d v y u o q x # -# g s n t p , i e a h - -# k f l c b j ÃĐ ' . z ÃĻ - -// http://millikeys.sourceforge.net/asset/ ->>ASSET -# q w j f g y p u l ; # -ÃĐ a s e t d h n i o r ' -ÃĻ z x c v b k m , . / - - -// https://sourceforge.net/projects/qwpr/ ->>Qwpr -# q w p r f y u k l ; # -ÃĐ a s d t g h n i o e ' -ÃĻ z x c v b j m , . / - - -// http://www.minimak.org/ ->>Minimak-8key -# q w d r k y u i l p # -ÃĐ a s t f g h n e o ; ' -ÃĻ z x c v b j m , . / - - -// https://github.com/mw8/white_keyboard_layout -// adapted to ergo keyboard ->>White -# v y d , ' j m l u ( ) -ÃĐ a t h e b c s n o i - -ÃĻ p k g w q x r f . z # - -// https://github.com/jackrosenthal/threelayout ->>Three -# q f u y z x k c w b # -ÃĐ o h e a i d r t n s - -ÃĻ , m . j ; g l p v ' # - -//https://sites.google.com/alanreiser.com/handsdown ->>Hands down -# q c h g j y f o b ' # -ÃĐ s n r t p w u e i a # -ÃĻ x m l d z v k . , ; - - -//https://sites.google.com/alanreiser.com/handsdown ->>Notarize -# q w d f p y u k l ' # -ÃĐ a s t e g h n i o r # -ÃĻ z x c v b j m . , ; - - -// http://kennetchaz.github.io/symmetric-typing/soul.html ->>Soul mod -# q w l d p k m u y ; ' -ÃĻ a s r t g f n e i o ÃĐ -# j z x c v b h , . / - - -// http://kennetchaz.github.io/symmetric-typing/niro.html ->>Niro mod -# q w u d p j f y l ; # -ÃĐ a s e t g h n i r o ' -ÃĻ b z x c v k m , . / - - -// https://docs.google.com/document/d/1yiCnIi1oagV1D8ZouMt-TRFRG8d6AfSBIwQkBvSflvY/edit ->>The-1 -# k m l u ? v d r ' q # -ÃĐ a t h e . c s n o i - -ÃĻ z p f j , b g w x y / - -// https://engram.dev ->>Engram 2.0 -# b y o u ' " l d w v z -ÃĐ c i e a , . h t s n q -ÃĻ g x j k - ? r m f p # - -// https://github.com/MadRabbit/halmak ->>Halmak -# w l r b z ; q u d j # -ÃĐ s h n t , . a e o i ' -ÃĻ f m v c / g p x k y - - -// https://keyboard-design.com/letterlayout.html?layout=optimal-digram.en.ansi ->>Optimal digram -# q y u . , f m l d p z -ÃĐ s i e a o h n r t c g -ÃĻ j ) ' ? ( x v w k b - - -// https://keyboard-design.com/letterlayout.html?layout=uciea-keyboard.en.ansi ->>Uciea -# p y u o - k d h f x q -ÃĐ c i e a ' g t n s r v -ÃĻ z " , . ; w m l b j - - -// https://keyboard-design.com/letterlayout.html?layout=x1.en.ergodox -// . and , moved ->>x1 -# k y o ' ! f c l p q z -ÃĐ h i e a u d s t n r v -ÃĻ j ? . , # w g m b x - diff --git a/users/ericgebhart/base_layers/maks.h b/users/ericgebhart/base_layers/maks.h deleted file mode 100644 index 6f78819421..0000000000 --- a/users/ericgebhart/base_layers/maks.h +++ /dev/null @@ -1,61 +0,0 @@ -#define CARTE_COLEMAK \ - carte_de_map(" qwfpg jluy;", \ - " arstd hneio", \ - " zxcvb km,./") - -#define ___COLEMAK___ \ - LANG_MAP(_Q, _W, _F, _P, _G, _J, _L, _U, _Y, TL_SCLN, \ - _A, _R, _S, _T, _D, _H, _N, _E, _I, _O, \ - _Z, _X, _C, _V, _B, _K, _M, TL_COMM, TL_DOT, TL_SLSH) - - -#define CARTE_COLEMAK_DH \ - carte_de_map(" qwfpb jluy;", \ - " arstg mneio", \ - " zxcdv kh,./") - -#define ___COLEMAK_DH___ \ - LANG_MAP(_Q, _W, _F, _P, _B, _J, _L, _U, _Y, TL_SCLN, \ - _A, _R, _S, _T, _G, _M, _N, _E, _I, _O, \ - _Z, _X, _C, _D, _V, _K, _H, TL_COMM, TL_DOT, TL_SLSH) - -#define CARTE_HALMAK \ - carte_de_map(" wlrbz ;qudj", \ - " shnt, .aeoi", \ - " fmvc/ gpxky") - -#define ___HALMAK___ \ - LANG_MAP(_W, _L, _R, _B, _Z, TL_SCLN, _Q, _U, _D, _J, \ - _S, _H, _N, _T, TL_COMM, _DOT, _A, _E, _O, _I, \ - _F, _M, _V, _C, TL_SLSH, _G, _P, _X, _K, _Y) - -#define CARTE_MINIMAK \ - carte_de_map(" qwdrk yuiop", \ - " astfg hjel;", \ - " zxcvb nm,./") - -#define ___MINIMAK___ \ - LANG_MAP(_Q, _W, _D, _R, _K, _Y, _U, _I, _O, _P, \ - _A, _S, _T, _F, _G, _H, _J, _E, _L, TL_SCLN, \ - _Z, _X, _C, _V, _B, _N, _M, TL_COMM, TL_DOT, TL_SLSH) - -#define CARTE_MINIMAK_8 \ - carte_de_map(" qwdrk yuilp", \ - " astfg hneo;", \ - " zxcvb jm,./") - -#define ___MINIMAK_8___ \ - LANG_MAP(_Q, _W, _D, _R, _K, _Y, _U, _I, _L, _P, \ - _A, _S, _T, _F, _G, _H, _N, _E, _O, TL_SCLN, \ - _Z, _X, _C, _V, _B, _J, _M, TL_COMM, TL_DOT, TL_SLSH) - - -#define CARTE_MINIMAK_12 \ - carte_de_map(" qwdfk yuil;", \ - " astrg hneop", \ - " zxcvb jm,./") - -#define ___MINIMAK_12___ \ - LANG_MAP(_Q, _W, _D, _F, _K, _Y, _U, _I, _L, _SCLN, \ - _A, _S, _T, _R, _G, _H, _N, _E, _O, _P, \ - _Z, _X, _C, _V, _B, _J, _M, TL_COMM, TL_DOT, TL_SLSH) diff --git a/users/ericgebhart/base_layers/qwerty.h b/users/ericgebhart/base_layers/qwerty.h deleted file mode 100644 index 47aead197c..0000000000 --- a/users/ericgebhart/base_layers/qwerty.h +++ /dev/null @@ -1,69 +0,0 @@ -#pragma once -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ - -// Layer for combo reference. Make more than one by changing lang is. -#define ___COMBO_REF___ \ - LANG_MAP(_1L1, _1L2, _1L3, _1L4, _1L5, _1R1, _1R2, _1R3, _1R4, _1R5, \ - _2L1, _2L2, _2L3, _2L4, _2L5, _2R1, _2R2, _2R3, _2R4, _2R5, \ - _3L1, _3L2, _3L3, _3L4, _3L5, _3R1, _3R2, _3R3, _3R4, _3R5) - - -#define CARTE_QWERTY \ - carte_de_map(" qwert yuiop", \ - " asdfg hjkl;", \ - " zxcvb nm,./") - -// Need TLKC around comm, dot, and quot, and scln -// Qwerty based layers that I don't really use. -#define ___QWERTY___ \ - LANG_MAP(_Q, _W, _E, _R, _T, _Y, _U, _I, _O, _P, \ - _A, _S, _D, _F, _G, _H, _J, _K, _L, TL_SCLN, \ - _Z, _X, _C, _V, _B, _N, _M, TL_COMM, TL_DOT, TL_SLSH) - -#define CARTE_AZERTY \ - carte_de_map(" azert yuiop", \ - " qsdfg hjkl;", \ - " wxcvb nm,./") - -// Need TLKC around comm, dot, and quot, and scln -// Qwerty based layers that I don't really use. -#define ___AZERTY___ \ - LANG_MAP(_A, _Z, _E, _R, _T, _Y, _U, _I, _O, _P, \ - _Q, _S, _D, _F, _G, _H, _J, _K, _L, TL_SCLN, \ - _W, _X, _C, _V, _B, _N, _M, TL_COMM, TL_DOT, TL_SLSH) - - - -#define CARTE_WORKMAN \ - carte_de_map(" qdrwb jfup;", \ - " ashtg yneio", \ - " zxmcv kl,./") - -#define ___WORKMAN___ \ - LANG_MAP(_Q, _D, _R, _W, _B, _J, _F, _U, _P, _SCLN, \ - _A, _S, _H, _T, _G, _Y, _N, _E, _O, _I, \ - _Z, _X, _M, _C, _V, _K, _L, TL_COMM, TL_DOT, TL_SLSH) - -#define CARTE_NORMAN \ - carte_de_map(" qwdfk jurl;", \ - " asetg yniou", \ - " zxcvb pm,./") -#define ___NORMAN___ \ - LANG_MAP(_Q, _W, _D, _F, _K, _J, _U, _R, _L, TL_SCLN, \ - _A, _S, _E, _T, _G, _Y, _N, _I, _O, _U, \ - _Z, _X, _C, _V, _B, _P, _M, TL_COMM, TL_DOT, TL_SLSH) diff --git a/users/ericgebhart/base_layers/toprows.h b/users/ericgebhart/base_layers/toprows.h deleted file mode 100644 index ba32118537..0000000000 --- a/users/ericgebhart/base_layers/toprows.h +++ /dev/null @@ -1,56 +0,0 @@ -#pragma once -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ -/*******************************************************************/ -/** TOP ROWS Func,Symbols, Numbers you find there. **/ -/*******************************************************************/ -// ltkc language target keycode DV, BK, BKW, NONE -// _1 = DV_1 or _1 = BP_DV_1 or KC_1 -#define ___10_NUMBERS___ \ - LANG_ROW(_1, _2, _3, _4, _5, _6, _7, _8, _9, _0) - -/* 40123 76598 */ -#define ___10_NUMBERS_BEAKL15___ \ - LANG_ROW(_4, _0, _1, _2, _3, _7, _6, _5, _9, _8) - -/* 32104 76598 */ -#define ___10_NUMBERS_BEAKL19___ \ - LANG_ROW(_3, _2, _1, _0, _4, _7, _6, _5, _9, _8) - -// a top symbol row if someone wants it. -#define ___10_SYMBOLS___ \ - LANG_ROW(_EXLM, _AT, _HASH, _DLR, _PERC, _CIRC, _AMPR, _ASTR, _LPRN, _RPRN) - -// standard bepo top row -#define ___10_SYMBOLS_BEPO___ \ - LANG_ROW(_DQUO, _LDAQ, _RDAQ, _LPRN, _RPRN, _AT, _PLUS, _MINS, _SLSH, _ASTR) - -#define ___12_SYMBOLS_BEPO___ \ - LANG_ROW12(_DLR, _DQUO, _LDAQ, _RDAQ, _LPRN, _RPRN, \ - _AT, _PLUS, _MINS, _SLSH, _ASTR, _EQL) - -// function key rows work for everyone. -#define ___10_FUNCS___ \ - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10 - -#define ___12_FUNCS___ ___10_FUNCS___, KC_F11, KC_F12 - -#define ___10_FUNCS_BEAKL15___ \ - KC_F4, KC_F10, KC_F1, KC_F2, KC_F3, \ - KC_F7, KC_F6, KC_F5, KC_F9, KC_F8 - -#define ___12_FUNCS_BEAKL15___ KC_F11, ___10_FUNCS_BEAKL15___, KC_F12 diff --git a/users/ericgebhart/config.h b/users/ericgebhart/config.h deleted file mode 100644 index fe0f41327d..0000000000 --- a/users/ericgebhart/config.h +++ /dev/null @@ -1,321 +0,0 @@ -/* - Copyright 2018 Eric Gebhart - - 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 USERSPACE_CONFIG_H -#define USERSPACE_CONFIG_H - -// pro-micro v3's don't always detect otherwise. -/* #define SPLIT_USB_DETECT */ - -#define NO_ACTION_MACRO -#define NO_ACTION_FUNCTION -// Sets good default for the speed of the mouse. -#undef MOUSEKEY_INTERVAL -#undef MOUSEKEY_DELAY -#undef MOUSEKEY_TIME_TO_MAX -#undef MOUSEKEY_MAX_SPEED - -#define MOUSEKEY_INTERVAL 20 -#define MOUSEKEY_DELAY 100 -#define MOUSEKEY_TIME_TO_MAX 60 -#define MOUSEKEY_MAX_SPEED 7 - -#undef MOUSEKEY_WHEEL_MAX_SPEED -#undef MOUSEKEY_WHEEL_TIME_TO_MAX -#undef MOUSEKEY_WHEEL_DELAY - -#define MOUSEKEY_WHEEL_MAX_SPEED 5 -#define MOUSEKEY_WHEEL_TIME_TO_MAX 60 -#define MOUSEKEY_WHEEL_DELAY 100 - -#undef TAPPING_TOGGLE -#undef TAPPING_TERM - -#define TAPPING_TOGGLE 2 -#define TAPPING_TERM 200 - - -#define TAP_HOLD_TERM 200 -#define COMBO_MUST_HOLD_MODS -#define COMBO_HOLD_TERM 150 -#define TAP_CODE_DELAY 5 // for send string with delay - -// change the behavior of Mod taps for HRMs. -// #define GLOBAL_QUICK_TAP - - /* Control switches for my keymaps. */ - /* if needed, this goes in the keyboard's config.h */ - /* Alternately, fix the number row in the layout template. */ -/* #define BASE_NUMBER_ROW // turn on 4 row base templates. */ - -// Extensions, turn them on and off. -#define USERSPACE_H "ericgebhart.h" - -// Layout definitions, which language, thumb cluster, mod layer. -// Columns in and out. - -// the default. set it, use it, set it back. -// US_INT // EN, BEPO, US_INT -#define LANG_IS US_INT -#define DEFAULT_LANG US_INT -#define DEFAULT_LANG_NAME " us" - -// Enable a second locale, for another set of layers. -// This will add bepo versions of all layers chosen. -/* #define SECOND_LOCALE BEPO */ -/* #define SECOND_LOCALE_NAME " bepo" */ - -// Choose a mod layer. Can be changed per layer. -// TRNS, ALT, HRS_NAV HRM_GACS, HRM_SCAG, HRM_GASC, MIRYOKU_HRM_GASC -#define MODS_ARE HRS_NAV -#define DEFAULT_MODS MODS_ARE - -// Choose a thumb cluster. -// WI, WIa, DEFAULT, TEST, TRNS, MODS, LAYERS, MODS_LAYERS, -// MIRYOKU, MIRYOKU_TR, MODS_LAYERS_NAV, -// The following use THUMB_LETTER to place a letter on the Thumbs. -// for use with the hands down metals, maltron, and rsthd. -// HD, HDA, HD_SIMPLE, TH_LTR, HD_DASH, -// MIRYOKU_TR_LTR, MIRYOKU_LTR -#define THUMBS_ARE DEFAULT -#define DEFAULT_THUMBS DEFAULT - -// pick the edge key set. normie, no kc, smart locks or test. -// NORM, NOKC, SML, TEST -#define EDGE_KEY_SET_IS SML -#define DEFAULT_EDGE_SET SML - -// for the base layers which need a thumb cluster which takes a letter. -#define HANDS_DOWN_LTR_THUMBS_ARE TH_LTR -#define MALTRON_LTR_THUMBS_ARE TH_LTR -#define RSTHD_LTR_THUMBS_ARE TH_LTR - -// layout io, matrix size. -// a reasonable default for most keyboards. -// give a 3x10 and get a 3x12, managed in keyboards/keyboards.h -#define BASE_COLS_IN_OUT 5_6 // 5, 5_6, 6 - -// OLED STUFF. -#define OLED_CUSTOM_ENABLE // custom oled here. -//#define OLED_LOGO_ENABLE // turn on/off the logo. -#define KEYLOGGER_ENABLE // 1500 bytes, track and print keypress info to oled. -//#define SPLIT_LAYER_STATE_ENABLE // to sync state between sides. - -// EXTENSIONS - -// Combos -#define COMBO_REF_LAYER_ENABLE -// #define COMBO_REF_LAYER_TWO_ENABLE -// works if you know the number of your layer. -// otherwise set and use them later. -// #define COMBO_ONLY_FROM_LAYER 2 -// #define COMBO_REF_DEFAULT 2 - - -// Console key logging for creation of heatmaps, etc. -// CONSOLE must be enabled for this to work. -// To create Precondition's heat maps, from console key logging -// with hid_listen or qmk console -//#define CONSOLE_KEY_LOGGER_ENABLE // turn on keylogging for heat maps. - -#define ALT_LOCAL_ENABLE // alternate key combinations, with mods as needed. -#define ACCENTED_KEYS_ENABLE // direct access to altgr keys. - -#define SMART_LOCK_ENABLE // smart lock layers and mods. -//#define MOD_LOCK_ENABLE // smart lock mods, similar/overlapping with Smart lock. -#define NSHOT_ENABLE // smart n-shot for count. -//#define ONESHOT_MOD_ENABLE // oneshot mods, similar/overlapping with nshots - -#define TAP_HOLD_ENABLE // tap for one thing, hold for tapping term to get another. -//#define SWAPPER_ENABLE // enable swapper keys. -#define NOT_DEAD_ENABLE // make undead versions (US_DQUO_ND) of dead keys. -//#define ALT_SHIFT_ENABLE // alternate shift behaviors for existing keys. -//#define SEND_STRING_ENABLE // Turn on send string keys -//#define SEND_UNICODE_ENABLE // Unicode must be enabled for this to work. - - -// Turn on the base layers do not exceed 4 if doing two locales. -// That will likely push a layer past 15 and then it will -// no longer work with the LT macro. - -// dvorak and relatives -#define DVORAK_LAYER_ENABLE -//#define DVORAK_RLC_IU_LAYER_ENABLE -//#define CAPEWELL_DVORAK_LAYER_ENABLE -//#define AHEI_LAYER_ENABLE -//#define BOO_LAYER_ENABLE - -// qwerty and derivitives -//#define QWERTY_LAYER_ENABLE -//#define AZERTY_LAYER_ENABLE -//#define WORKMAN_LAYER_ENABLE -//#define NORMAN_LAYER_ENABLE - -// COLEMAK and relatives -//#define COLEMAK_LAYER_ENABLE -//#define COLEMAK_DH_LAYER_ENABLE -//#define HALMAK_LAYER_ENABLE -//#define MINIMAK_LAYER_ENABLE -//#define MINIMAK_8_LAYER_ENABLE -//#define MINIMAK_12_LAYER_ENABLE - -// BEAKL -// #define BEAKL15_LAYER_ENABLE -//#define BEAKL19_LAYER_ENABLE -//#define BEAKL27_LAYER_ENABLE -//#define BEAKLWI_LAYER_ENABLE - -// carpalx layouts -//#define CARPALX_QFMLWY_LAYER_ENABLE -//#define CARPALX_QGMLWB_LAYER_ENABLE -//#define CARPALX_QGMLWY_LAYER_ENABLE - -// alternate layouts -//#define MALTRON_LAYER_ENABLE -//#define EUCALYN_LAYER_ENABLE -//#define HANDS_UP_LAYER_ENABLE -//#define RSTHD_LAYER_ENABLE -//#define HANDS_UP_LAYER_ENABLE -//#define WHITE_LAYER_ENABLE -//#define ISRT_LAYER_ENABLE -//#define SOUL_LAYER_ENABLE -//#define NIRO_LAYER_ENABLE -//#define ASSET_LAYER_ENABLE -//#define WHORF_LAYER_ENABLE -//#define WHORF6_LAYER_ENABLE - -// mtgap and relatives -//#define MTGAP_LAYER_ENABLE -//#define CTGAP_LAYER_ENABLE -//#define APT_LAYER_ENABLE -//#define CANARY_LAYER_ENABLE - -// Hands down -#define HD_NEU_NARROW_LAYER_ENABLE -//#define HD_REF_LAYER_ENABLE -//#define HD_DASH_LAYER_ENABLE -//#define HD_ELAN_LAYER_ENABLE -//#define HD_BRONZE_LAYER_ENABLE -//#define HD_SILVER_LAYER_ENABLE -//#define HD_PLATINUM_LAYER_ENABLE -//#define HD_GOLD_LAYER_ENABLE -//#define HD_TITANIUM_LAYER_ENABLE - -// A compact optimot for 3x10. -// requires accent characters. -//#define OPTIMOT_COMPACT_LAYER_ENABLE - -// 3x12 sized base layers -//-------------------------- -//#define HD_NEU_LAYER_ENABLE - -// Optimized for french -// All these have accent characters on base layer. -// so these dont work for En, but do for US-international and Bepo. - -//#define BEPO_LAYER_ENABLE -//#define OPTIMOT_LAYER_ENABLE -//#define BEAKL19bis_LAYER_ENABLE - - -// enable transient function layers. -#define SYMBOL_LAYER_ENABLE -#define NAV_LAYER_ENABLE -// #define MOUSE_LAYER_ENABLE -#define TOPROWS_LAYER_ENABLE -// #define LAYERS_LAYER_ENABLE - defunct. always on. -#define KEYPAD_LAYER_ENABLE -//#define ADJUST_LAYER_ENABLE -//#define RGB_LAYER_ENABLE -//#define MEDIA_LAYER_ENABLE -//#define FUNC_LAYER_ENABLE - - -// define alternate thumb definitions for the transient layers. -#define MEDIA_LAYER_THUMBS MEDIA_THUMBS -#define MOUSE_LAYER_THUMBS MOUSE_THUMBS -#define NAV_LAYER_THUMBS TRNS_THUMBS -#define KEYPAD_LAYER_THUMBS KEYPAD_THUMBS -#define SYMB_LAYER_THUMBS SYMB_THUMBS -#define TOPROWS_LAYER_THUMBS DEFAULT - -// Extra character layers. -// Bepo has dead keys (altgr) and accented keycodes -// A layer of accented keys -// #define ACCENTS_LAYER_ENABLE -// A layer of dead keys -// #define MORTE_LAYER_ENABLE -// A layer of the most popular accented keys and dead keys -#define ACCENTS_MORTE_LAYER_ENABLE - -// Functional layer choices. -/* configure the function layers. */ -/* They have to be turned on above. */ -/* Choose one of each as desired. */ -/* There are reasonable defaults */ -/* for each if nothing is defined. */ - -/* nav */ -//#define NAV_FULL // monolithic, two sided nav with mouse and arrows. -#define NAV_FULL_LOCK_MODS // Replace left mouse buttons with lockmods. - -// Just the non mouse bits, with lock mods, n-shot mods on the left. -// if mousekeys enabled, adds a mouse layer accessible via smart lock. -// #define NAV_NO_MOUSE -// #define NAV_MIRYOKU -// #define NAV_MOUSE_MIRYOKU - - -/* keypads */ -// beakl keypads are usual, if not chosen, regular keypads will be used. -// left side is the default. -// Beakl, except for WI, is only on the left side. -// Miryoku is on the left also. - -//#define KEYPAD_RIGHT -#define KEYPAD_BEAKL // beakl doesn't have a rightside, swap hands? -//#define KEYPAD_MODS // give mods on the other side instead of funcs. -//#define KEYPAD_BEAKL_WI // right side with hexpad on left. -//#define KEYPAD_MIRYOKU // use the miryoku keypad -// the default if nothing chosen, -// is a functionpad on the left and normal keypad on the right. - -// funcpad from miryoku -// #define FUNCPAD_MIRYOKU - - -/* symbols */ -// pick one of these or get the default. -//#define SYMBOL_BEAKL // original - the default if nothing else. -//#define SYMBOL_BEAKL_EXT // extended for non beakl base layers. -//#define SYMBOL_BEAKL_EXT_VI // extended with vi keybinding in mind. -#define SYMBOL_BEAKL_C // more alterations by frequency -// #define SYMBOL_NEO // The symbol layer from the Neo layout. -// #define SYMBOL_MIRYOKU // minimalist symbols after miryoku -//#define SYMBOL_BEAKL_WI // original wi - - -/* toprows. */ -// The default, if not defined, is a standard qwerty set of rows. -// symbols, numbers, function keys. Numbers on the home row. - -// #define TOPROWS_BKL_15_NUMS // center row with Beakl15 order. 40123 76598. -// #define TOPROWS_BKL_19_NUMS // Beakl 19 order: 32104 76598 -#define TOPROWS_MOD // beakl 15 nums, oneshot and smart lock mods. no Fkeys. - - -#endif diff --git a/users/ericgebhart/defs/accented_keys.def b/users/ericgebhart/defs/accented_keys.def deleted file mode 100644 index a0b203be93..0000000000 --- a/users/ericgebhart/defs/accented_keys.def +++ /dev/null @@ -1,101 +0,0 @@ -// Accented keys. -// add them to the custom keys enum. -// List them here, with their keycode and the accent keycode -// that are needed to create them. - - -// Last, most frequent letters in french. -// ÃĐ is further up. -// 24 x 3 588 990 0.38% -// 25 j 3 276 064 0.34% -// 26 ÃĻ 2 969 466 0.31% -// 27 à 2 966 029 0.31% -// 28 k 2 747 547 0.29% -// 29 w 1 653 435 0.17% -// 30 z 1 433 913 0.15% -// 31 Ê 802 211 0.08% -// 32 ç 544 509 0.06% -// 33 Ãī 357 197 0.04% -// 34 ÃĒ 320 837 0.03% -// 35 ÃŪ 280 201 0.03% -// 36 Ãŧ 164 516 0.02% -// 37 Ãđ 151 236 0.02% -// 38 ÃŊ 138 221 0.01% -// 39 ÃĄ 73 751 0.01% - absent. -// 79 Þ 55 172 0.01% -// 82 ÃŦ 53 862 0.01% -//absent. -// 83 Ãķ 51 020 0.01% -// 84 í 48 391 0.01% - - // ACCENT -// Custom key code, Keycode, altgr accent keycode. -#if defined(SECOND_LOCALE) && (SECOND_LOCALE == BEPO) -ACCENTED(BP_OCIR, BP_O, BP_DCIR) -ACCENTED(BP_ACIR, BP_A, BP_DCIR) -ACCENTED(BP_ICIR, BP_I, BP_DCIR) -ACCENTED(BP_UCIR, BP_U, BP_DCIR) -//ACCENTED(BP_CCIR, BP_C, BP_DCIR) -//ACCENTED(BP_GCIR, BP_G, BP_DCIR) -//ACCENTED(BP_HCIR, BP_H, BP_DCIR) -#endif - -ACCENTED(US_OCIR, US_O, US_DCIR) -ACCENTED(US_ACIR, US_A, US_DCIR) -ACCENTED(US_ICIR, US_I, US_DCIR) -ACCENTED(US_UCIR, US_U, US_DCIR) -ACCENTED(US_ECIR, US_E, US_DCIR) - -#if defined(SECOND_LOCALE) && (SECOND_LOCALE == BEPO) -ACCENTED(BP_AACU, BP_A, BP_ACUT) -ACCENTED(BP_OACU, BP_O, BP_ACUT) -ACCENTED(BP_IACU, BP_I, BP_ACUT) -ACCENTED(BP_UACU, BP_U, BP_ACUT) - -//ACCENTED(BP_OGRV, BP_O, BP_DGRV) -ACCENTED(BP_IGRV, BP_I, BP_DGRV) -#endif - -ACCENTED(US_IGRV, US_I, US_DGRV) -ACCENTED(US_UGRV, US_U, US_DGRV) -ACCENTED(US_EGRV, US_E, US_DGRV) -ACCENTED(US_AGRV, US_A, US_DGRV) - -// ACCENTED(BP_NTIL, BP_N, BP_DTIL) -// ACCENTED(BP_ATIL, BP_A, BP_DTIL) -// ACCENTED(BP_OTIL, BP_O, BP_DTIL) -// ACCENTED(BP_UTIL, BP_U, BP_DTIL) - -ACCENTED(US_IIAE, US_I, US_DIAE) -ACCENTED(US_UIAE, US_U, US_DIAE) -ACCENTED(US_EIAE, US_E, US_DIAE) -ACCENTED(US_OIAE, US_O, US_DIAE) - -#if defined(SECOND_LOCALE) && (SECOND_LOCALE == BEPO) -ACCENTED(BP_IIAE, BP_I, BP_DIAE) -ACCENTED(BP_UIAE, BP_U, BP_DIAE) -ACCENTED(BP_EIAE, BP_E, BP_DIAE) -ACCENTED(BP_OIAE, BP_O, BP_DIAE) -// ACCENTED(BP_AIAE, BP_A, BP_DIAE) -#endif - - // ACCENTED(E_ACUTE, SK_E, SK_ACUT) - // ACCENTED(R_ACUTE, SK_R, SK_ACUT) - // ACCENTED(U_ACUTE, SK_U, SK_ACUT) - // ACCENTED(I_ACUTE, SK_I, SK_ACUT) - // ACCENTED(O_ACUTE, SK_O, SK_ACUT) - // ACCENTED(A_ACUTE, SK_A, SK_ACUT) - // ACCENTED(L_ACUTE, SK_L, SK_ACUT) - // ACCENTED(Y_ACUTE, SK_Z, SK_ACUT) - // ACCENTED(T_CARON, SK_T, SK_CARN) - // ACCENTED(Z_CARON, SK_Y, SK_CARN) - // ACCENTED(O_CARON, SK_O, SK_CARN) - // ACCENTED(S_CARON, SK_S, SK_CARN) - // ACCENTED(D_CARON, SK_D, SK_CARN) - // ACCENTED(L_CARON, SK_L, SK_CARN) - // ACCENTED(C_CARON, SK_C, SK_CARN) - // ACCENTED(N_CARON, SK_N, SK_CARN) - // ACCENTED(U_UMLAU, SK_U, SK_DIAE - // ACCENTED(O_UMLAU,SK_O, SK_DIAE) - // // napis o s vokanom cez vokan rather than normalne aby sa dalo velke uo - // ACCENTED(O_CCIRC, SK_O, SK_CIRC) diff --git a/users/ericgebhart/defs/alt_shift.def b/users/ericgebhart/defs/alt_shift.def deleted file mode 100644 index 52d9cf11f4..0000000000 --- a/users/ericgebhart/defs/alt_shift.def +++ /dev/null @@ -1,6 +0,0 @@ -// alt shift. Give an existing key code, -// and maybe an alternate shift keycode. - -ALT_SHIFT(US_EXLM, US_PERC) -SHIFT_FOR_2(US_AT) -SHIFT_FOR_3(US_DLR) diff --git a/users/ericgebhart/defs/altlocal_keys.def b/users/ericgebhart/defs/altlocal_keys.def deleted file mode 100644 index 20d1e99b40..0000000000 --- a/users/ericgebhart/defs/altlocal_keys.def +++ /dev/null @@ -1,208 +0,0 @@ -// These are to create keys which don't exist in a locale. -// so that we can create alternate maps to qwerty, azerty, or whatever. -// Key name, -// unshifted key and it's required mods. -// the desired shifted keys and it's required mods. - -// for dvorak on bepo -#if defined(SECOND_LOCALE) && (SECOND_LOCALE == BEPO) - MK_KEY(BP_DV_1, BP_DQUO, MOD_LSFT, BP_DCIR, MOD_LSFT) - MK_KEY(BP_DV_2, BP_LDAQ, MOD_LSFT, BP_AT, MOD_NONE) - MK_KEY(BP_DV_3, BP_RDAQ, MOD_LSFT, BP_DLR, MOD_LSFT) - MK_KEY(BP_DV_4, BP_LPRN, MOD_LSFT, BP_DLR, MOD_NONE) - MK_KEY(BP_DV_5, BP_RPRN, MOD_LSFT, BP_PERC, MOD_NONE) - MK_KEY(BP_DV_6, BP_AT, MOD_LSFT, BP_AT, MOD_BIT(KC_RALT)) - MK_KEY(BP_DV_7, BP_PLUS, MOD_LSFT, BP_P, MOD_BIT(KC_RALT)) - MK_KEY(BP_DV_8, BP_MINS, MOD_LSFT, BP_ASTR, MOD_NONE) - MK_KEY(BP_DV_9, BP_SLSH, MOD_LSFT, BP_LPRN, MOD_NONE) - MK_KEY(BP_DV_0, BP_ASTR, MOD_LSFT, BP_RPRN, MOD_NONE) - - MK_KEY(BP_DV_GRV, BP_PERC, MOD_LSFT, BP_K, MOD_BIT(KC_RALT)) - MK_KEY(BP_DV_SCLN, BP_COMM, MOD_LSFT, BP_DOT, MOD_LSFT) - MK_KEY(BP_DV_SLSH, BP_SLSH, MOD_NONE, BP_QUOT, MOD_LSFT) - //MK_KEY(BP_DV_BSLS, BP_AGRV, MOD_BIT(KC_RALT), BP_B, MOD_BIT(KC_RALT)) - MK_KEY(BP_DV_EQL, BP_EQL, MOD_NONE, BP_PLUS, MOD_NONE) - MK_KEY(BP_DV_COMM, BP_COMM, MOD_NONE, BP_LDAQ, MOD_BIT(KC_RALT)) - MK_KEY(BP_DV_DOT, BP_DOT, MOD_NONE, BP_RDAQ, MOD_BIT(KC_RALT)) - MK_KEY(BP_DV_QUOT, BP_QUOT, MOD_NONE, BP_DQUO, MOD_NONE) - MK_KEY(BP_DV_MINS, BP_MINS, MOD_NONE, KC_SPC, MOD_BIT(KC_RALT)) -#endif - -#if defined(BEAKL15_LAYER_ENABLE) || defined(BEAKL19_LAYER_ENABLE) - // Keys for BEAKL 15, 19 on Qwerty - MK_KEY(KC_BK_DOT, KC_DOT, MOD_NONE, KC_2, MOD_LSFT) - MK_KEY(KC_BK_COMM, KC_COMM, MOD_NONE, KC_1, MOD_LSFT) - MK_KEY(KC_BK_QUOT, KC_QUOT, MOD_NONE, KC_GRV, MOD_NONE) - - MK_KEY(US_BK_DOT, KC_DOT, MOD_NONE, KC_2, MOD_LSFT) - MK_KEY(US_BK_COMM, KC_COMM, MOD_NONE, KC_1, MOD_LSFT) - MK_KEY(US_BK_QUOT, KC_QUOT, MOD_NONE, KC_GRV, MOD_NONE) - - // Keys for BEAKL WI on Qwerty - MK_KEY(KC_BKW_DOT, KC_DOT, MOD_NONE, KC_GRV, MOD_NONE) - MK_KEY(KC_BKW_COMM, KC_COMM, MOD_NONE, KC_TILD, MOD_NONE) - MK_KEY(KC_BKW_COLN, KC_SCLN, MOD_LSFT, KC_SCLN, MOD_NONE) - -# if defined(SECOND_LOCALE) && (SECOND_LOCALE == BEPO) || (DEFAULT_LANG == BEPO) - // Keys for BEAKL on BEPO - MK_KEY(BP_BK_DOT, BP_DOT, MOD_NONE, BP_AT, MOD_NONE) - MK_KEY(BP_BK_COMM, BP_COMM, MOD_NONE, BP_EXLM, MOD_NONE) - MK_KEY(BP_BK_QUOT, BP_QUOT, MOD_NONE, BP_PERC, MOD_LSFT) - - -# ifdef BEAKLWI_LAYER_ENABLE - // Keys for BEAKL WI on BEPO - MK_KEY(BP_BKW_DOT, BP_DOT, MOD_NONE, BP_GRV, MOD_NONE) - MK_KEY(BP_BKW_COMM, BP_COMM, MOD_NONE, BP_TILD, MOD_NONE) - MK_KEY(BP_BKW_COLN, BP_COLN, MOD_LSFT, BP_SCLN, MOD_NONE) -# endif - - // Keys for BEAKL 27 on BEPO -# ifdef BEAKL27_LAYER_ENABLE - MK_KEY(BP_BK2_DOT, BP_DOT, MOD_NONE, BP_GRV, MOD_NONE) - MK_KEY(BP_BK2_COMM, BP_COMM, MOD_NONE, BP_QUES, MOD_NONE) - MK_KEY(BP_BK2_EXLM, BP_EXLM, MOD_NONE, BP_PERC, MOD_LSFT) - MK_KEY(BP_BK2_QUOT, BP_QUOT, MOD_NONE, BP_QUOT, MOD_NONE) -# endif -# endif -#endif - -#ifdef BEAKL27_LAYER_ENABLE - // Keys for BEAKL 27 on Qwerty - /* // altered shifted pairs: dot = .` comma = ,? dquot = "! */ - MK_KEY(KC_BK2_DOT, KC_DOT, MOD_NONE, KC_GRV, MOD_NONE) - MK_KEY(KC_BK2_COMM, KC_COMM, MOD_NONE, KC_QUES, MOD_NONE) - MK_KEY(KC_BK2_EXLM, KC_EXLM, MOD_NONE, KC_DQUO, MOD_NONE) - MK_KEY(KC_BK2_QUOT, KC_QUOT, MOD_NONE, KC_QUOT, MOD_NONE) - - MK_KEY(US_BK2_DOT, US_DOT, MOD_NONE, US_GRV, MOD_NONE) - MK_KEY(US_BK2_COMM, US_COMM, MOD_NONE, US_QUES, MOD_NONE) - MK_KEY(US_BK2_EXLM, US_EXLM, MOD_NONE, US_DQUO, MOD_NONE) - MK_KEY(US_BK2_QUOT, US_QUOT, MOD_NONE, US_QUOT, MOD_NONE) -#endif - - -// shifted pairs: dot = .` comma = ,~ colon = :; - -#if defined(HD_NEU_LAYER_ENABLE) || \ - defined(HD_NEU_NARROW_LAYER_ENABLE) || \ - defined(HD_GOLD_LAYER_ENABLE) || \ - defined(HD_SILVER_LAYER_ENABLE) || \ - defined(HD_BRONZE_LAYER_ENABLE) || \ - defined(HD_PLATINUM_LAYER_ENABLE) || \ - defined(HD_REF_LAYER_ENABLE) - -// hands down alterations. -/* alt shifts ;: .& /\* '? "! ,| -+ */ -// for en qwerty - MK_KEY(KC_HD_DQUO, KC_QUOT, MOD_LSFT, KC_1, MOD_LSFT) // "! - MK_KEY(KC_HD_QUOT, KC_QUOT, MOD_NONE, KC_SLSH, MOD_LSFT) // '? - - MK_KEY(KC_HD_DOT, KC_DOT, MOD_NONE, KC_7, MOD_LSFT) // .& - MK_KEY(KC_HD_SCLN, KC_SCLN, MOD_NONE, KC_SCLN, MOD_LSFT) // ;: - MK_KEY(KC_HD_COMM, KC_COMM, MOD_NONE, KC_BSLS, MOD_LSFT) // ,| - MK_KEY(KC_HD_MINS, KC_MINS, MOD_NONE, KC_EQL, MOD_LSFT) // -+ - MK_KEY(KC_HD_SLSH, KC_SLSH, MOD_NONE, KC_8, MOD_LSFT) // /* - - // for us international - MK_KEY(US_HD_DQUO, US_QUOT, MOD_LSFT, US_1, MOD_LSFT) - MK_KEY(US_HD_QUOT, US_QUOT, MOD_NONE, KC_SLSH, MOD_LSFT) - - MK_KEY(US_HD_DOT, US_DOT, MOD_NONE, US_7, MOD_LSFT) - MK_KEY(US_HD_SCLN, KC_SCLN, MOD_NONE, KC_SCLN, MOD_LSFT) // ;: - MK_KEY(US_HD_COMM, US_COMM, MOD_NONE, US_BSLS, MOD_LSFT) - MK_KEY(US_HD_MINS, US_MINS, MOD_NONE, US_EQL, MOD_LSFT) - MK_KEY(US_HD_SLSH, US_SLSH, MOD_NONE, US_8, MOD_LSFT) - -// for bepo -#if defined(SECOND_LOCALE) && (SECOND_LOCALE == BEPO) || (DEFAULT_LANG == BEPO) - MK_KEY(BP_HD_DQUO, BP_DQUO, MOD_NONE, BP_QUES, MOD_NONE) - MK_KEY(BP_HD_QUOT, BP_QUOT, MOD_NONE, BP_EXLM, MOD_NONE) - MK_KEY(BP_HD_SCLN, BP_SCLN, MOD_NONE, BP_COLN, MOD_NONE) // ;: - - MK_KEY(BP_HD_DOT, BP_DOT, MOD_NONE, BP_AMPR, MOD_NONE) - MK_KEY(BP_HD_COMM, BP_COMM, MOD_NONE, BP_PIPE, MOD_NONE) - MK_KEY(BP_HD_MINS, BP_MINS, MOD_NONE, BP_PLUS, MOD_NONE) - MK_KEY(BP_HD_SLSH, BP_SLSH, MOD_NONE, BP_ASTR, MOD_NONE) -#endif - -#endif - - -/* alt shifts ;: .& /\* '? "! ,| -+ */ -#ifdef HD_DASH_LAYER_ENABLE -// DASH and Elan have these reversed from the metals. -/* //alt shift keys. "? '! */ - MK_KEY(KC_HD_D_DQUO, KC_DQUO, MOD_NONE, KC_SLSH, MOD_LSFT) // "? - MK_KEY(KC_HD_D_QUOT, KC_QUOT, MOD_NONE, KC_1, MOD_LSFT) // '! - - MK_KEY(KC_HD_D_DOT, KC_DOT, MOD_NONE, KC_7, MOD_LSFT) // .& - MK_KEY(KC_HD_D_COMM, KC_COMM, MOD_NONE, KC_BSLS, MOD_LSFT) // ,| - MK_KEY(KC_HD_D_MINS, KC_MINS, MOD_NONE, KC_EQL, MOD_LSFT) // -+ - MK_KEY(KC_HD_D_SLSH, KC_SLSH, MOD_NONE, KC_8, MOD_LSFT) // /* - - // for us international - MK_KEY(US_HD_D_DQUO, US_QUOT, MOD_LSFT, KC_SLSH, MOD_LSFT) - MK_KEY(US_HD_D_QUOT, US_QUOT, MOD_NONE, US_1, MOD_LSFT) - - MK_KEY(US_HD_D_DOT, US_DOT, MOD_NONE, US_7, MOD_LSFT) - MK_KEY(US_HD_D_COMM, US_COMM, MOD_NONE, US_BSLS, MOD_LSFT) - MK_KEY(US_HD_D_MINS, US_MINS, MOD_NONE, US_EQL, MOD_LSFT) - MK_KEY(US_HD_D_SLSH, US_SLSH, MOD_NONE, US_8, MOD_LSFT) - -// for bepo -#if defined(SECOND_LOCALE) && (SECOND_LOCALE == BEPO) || (DEFAULT_LANG == BEPO) - MK_KEY(BP_HD_D_DQUO, BP_DQUO, MOD_NONE, BP_QUES, MOD_NONE) - MK_KEY(BP_HD_D_QUOT, BP_QUOT, MOD_NONE, BP_EXLM, MOD_NONE) - - MK_KEY(BP_HD_D_DOT, BP_DOT, MOD_NONE, BP_AMPR, MOD_NONE) - MK_KEY(BP_HD_D_COMM, BP_COMM, MOD_NONE, BP_PIPE, MOD_NONE) - MK_KEY(BP_HD_D_MINS, BP_MINS, MOD_NONE, BP_PLUS, MOD_NONE) - MK_KEY(BP_HD_D_SLSH, BP_SLSH, MOD_NONE, BP_ASTR, MOD_NONE) -#endif - -#endif - -#ifdef HD_ELAN_LAYER_ENABLE -// Elan has alt shift of comma and dot on the thumb. -// en - MK_KEY(KC_HD_E_DQUO, KC_QUOT, MOD_LSFT, KC_SLSH, MOD_LSFT) - MK_KEY(KC_HD_E_QUOT, KC_QUOT, MOD_NONE, KC_1, MOD_LSFT) -// the rest is the same - MK_KEY(KC_HD_E_MINS, KC_MINS, MOD_NONE, KC_EQL, MOD_LSFT) // -+ - MK_KEY(KC_HD_E_SLSH, KC_SLSH, MOD_NONE, KC_8, MOD_LSFT) // /* -// until .: and ,; - MK_KEY(KC_HD_E_DOT, KC_DOT, MOD_NONE, KC_SCLN, MOD_LSFT) // .: - MK_SKEY(KC_HD_E_COMM, KC_COMM, KC_SCLN) // ,; -/* (< {[ */ - MK_KEY(KC_HD_E_LPRN, KC_LPRN, MOD_NONE, KC_COMM, MOD_LSFT) - MK_KEY(KC_HD_E_LCBR, KC_LCBR, MOD_NONE, KC_LBRC, MOD_NONE ) - -// US-intl - MK_KEY(US_HD_E_DQUO, US_QUOT, MOD_LSFT, KC_SLSH, MOD_LSFT) - MK_KEY(US_HD_E_QUOT, US_QUOT, MOD_NONE, US_1, MOD_LSFT) -// the rest is the same - MK_KEY(US_HD_E_MINS, US_MINS, MOD_NONE, US_EQL, MOD_LSFT) // -+ - MK_KEY(US_HD_E_SLSH, US_SLSH, MOD_NONE, US_8, MOD_LSFT) // /* -// until .: and ,; - MK_KEY(US_HD_E_DOT, KC_DOT, MOD_NONE, US_SCLN, MOD_LSFT) // .: - MK_SKEY(US_HD_E_COMM, US_COMM, US_SCLN) // ,; -/* (< {[ */ - MK_KEY(US_HD_E_LPRN, US_LPRN, MOD_NONE, US_COMM, MOD_LSFT) - MK_KEY(US_HD_E_LCBR, US_LCBR, MOD_NONE, US_LBRC, MOD_NONE ) - -// bepo -#if defined(SECOND_LOCALE) && (SECOND_LOCALE == BEPO) || (DEFAULT_LANG == BEPO) - MK_KEY(BP_HD_E_DQUO, BP_DQUO, MOD_NONE, BP_SLSH, MOD_NONE) - MK_KEY(BP_HD_E_QUOT, BP_QUOT, MOD_NONE, BP_EXLM, MOD_NONE) -// the rest is the same - MK_KEY(BP_HD_E_MINS, BP_MINS, MOD_NONE, BP_EQL, MOD_NONE) // -+ - MK_KEY(BP_HD_E_SLSH, BP_SLSH, MOD_NONE, BP_ASTR, MOD_NONE) // /* -// until .: and ,; - MK_KEY(BP_HD_E_DOT, KC_DOT, MOD_NONE, BP_SCLN, MOD_LSFT) // .: - MK_SKEY(BP_HD_E_COMM, BP_COMM, BP_SCLN) // ,; -/* (< {[ */ - MK_KEY(BP_HD_E_LPRN, BP_LPRN, MOD_NONE, BP_COMM, MOD_LSFT) - MK_KEY(BP_HD_E_LCBR, BP_LCBR, MOD_NONE, BP_LBRC, MOD_NONE ) -#endif -#endif diff --git a/users/ericgebhart/defs/combos.def b/users/ericgebhart/defs/combos.def deleted file mode 100644 index 85b5d2d588..0000000000 --- a/users/ericgebhart/defs/combos.def +++ /dev/null @@ -1,139 +0,0 @@ -// Per layer combo reference layers. -// Default is current layer, or COMBO_REF_DEFAULT if set. -// _COMBO_REF is the default if enabled. - -//COMBO_REF_LAYER(_DVORAK_BP, _COMBO_REF2) -COMBO_REF_LAYER(_NAV, _NAV) - - -// COMBOS -// name result chord keys - -// sml nav, sml keypad, zqxj, onshot accents, oneshot symbols -// home, end, caps word, accents? -> aeeecio oe, ao, - - -// reference COMBO_REF -COMB(TSCTL, TS_LCTL, CB_1L3, CB_1L4) -COMB(SMLNAV1, SML_NAV, CB_1L2, CB_1L3) -COMB(OSACCENTMT, SML_KEYPAD, CB_1L2, CB_1R4) - -#ifdef TOPROWS_LAYER_ENABLE -COMB(OSTOPROWS, SML_TOPROWS, CB_1L3, CB_1R3) -#endif - -//COMB(OSlsftT, OS_LSFT, CB_1L4, CB_1R2) -COMB(OSSFT, OS_LSFT, CB_2L4, CB_2R2) -COMB(TSCTL2, TS_LCTL, CB_1L4, CB_1R2) - -// COMB(SMLNAV, SML_NAV, CB_2L4, CB_2R2) -COMB(OSCTL, OS_LCTL, CB_2L2, CB_2R4) - -COMB(OSACCENTM, OSL_ACCENTS_MORTE, CB_2L3, CB_2R3) - -COMB(capsword, CAPS_WORD, CB_3L4, CB_3R2) -COMB(OSRALT, OS_RALT, CB_3L3, CB_3R3) -COMB(OSLALT2, OS_LALT, CB_3L2, CB_3R4) - -COMB(OSLAYER, LAYER_OSL, CB_3L1, CB_3R5) -COMB(OSLSYMB, OSL_SYMB, CB_TH2, CB_TH5) -COMB(LNAV, SML_NAV, CB_TH3, CB_TH4) - -COMB(_Q, KC_Q, CB_3L2, CB_3L3) -COMB(_X, KC_X, CB_3L3, CB_3L4) -COMB(_Z, KC_Z, CB_3R3, CB_3R4) - -// vertical thumb combos for the kyria -//COMB(xxx, xxx, CB_TH2, CB_0TH1) - -#ifdef MEDIA_LAYER_ENABLE -COMB(SMLMEDIA, SML_MEDIA, CB_TH3, CB_0TH2) -#endif - -COMB(OSLACCENT2, OSL_ACCENTS_MORTE, CB_TH4, CB_0TH3) -COMB(KEYPAD, SML_KEYPAD, CB_TH5, CB_0TH4) - - - -// reference COMBO_REF2 - -#if defined(SECOND_LOCALE) && (SECOND_LOCALE == BEPO) -COMB(TSCTL_BP, TS_LCTL, CB_1L3, CB_1L4) -COMB(SMLNAV1_bp, SML_NAV, CB_1L2, CB_1L3) - -#ifdef ACCENTS_MORTE_LAYER_ENABLE -COMB(OSLACCENT_bp, OSL(_ACCENTS_MORTE_BP), CB2_2L1, CB2_2L2) -#endif - -COMB(SMLNAV_BP, SML_NAV, CB2_2L2, CB2_2L3) -COMB(OSCTL_BP, OS_LCTL, CB2_2L3, CB2_2L4) - -COMB(OSSFT_BP, OS_LSFT, CB2_2R2, CB2_2R3) -// COMB(SMLKEYPAD_BP, SML_KEYPAD_BP, CB2_2R3, CB2_2R4) - -COMB(capsword_BP, CAPS_WORD_ON, CB2_3L4, CB2_3R2) - -// COMB(OSLSYMBP_BP, OSL(_SYMB_BP), CB2_TH2, CB2_TH5) -COMB(LNAV_BP, SML_NAV, CB2_TH3, CB2_TH4) - -COMB(_Qbp, BP_Q, CB2_3L2, CB2_3L3) -COMB(_Xbp, BP_X, CB2_3L3, CB2_3L4) -COMB(_Zbp, BP_Z, CB2_3R3, CB2_3R4) -#endif - - -// Reference nav layer -COMB(END_nav, KC_END, KC_PGUP, KC_PGDN) -COMB(HOME_nav, KC_HOME, KC_UP, KC_DOWN) - - -//COMB(JKL_SPC, KC_SPC, KC_J, KC_X) -//SUBS(TH_THE, "the", KC_T, KC_H) // SUBS uses SEND_STRING to output the given string. - -// from possum vibes to review. -/* COMBO NAME | OUTPUT | PARAMS */ - -// /*---- TOP ROW ----*/ -// COMB(turbonav, NAV_TG, KC_W, KC_R) // Nav access -// COMB(save, S_SAVE, KC_E, KC_R) // Save -// COMB(back_fwd, BCK_FWD, KC_R, KC_T) // Back/Fwd (shifted) - -// COMB(undo_redo, UND_RED, KC_Y, KC_U) // Undo/Redo (shifted) -// COMB(esc, KC_ESC, KC_U, KC_O) // Esc - -// #ifdef IS_PINKY_CLUSTER -// COMB(delete, KC_DEL, KC_A, KC_SCLN) -// COMB(caps, KC_CAPS, KC_Q, KC_P) -// #endif - -// /*---- HOME ROW ----*/ -// COMB(cut, S_CUT, KC_S, KC_F) // Shift+Del (cut) -// COMB(copy, S_COPY, KC_S, KC_D) // Ctrl+Ins (copy) -// COMB(paste, S_PASTE, KC_D, KC_F) // Shift+Del (paste) -// COMB(panic, PANIC, KC_D, KC_K) // panic! - -// COMB(nummode, NUMMODE, KC_J, KC_K) // Nummode toggle -// COMB(symmode, SYM_TG, KC_K, KC_L) // Sym layer -// COMB(tab, KC_TAB, KC_K, KC_M) // Tab - - -// /*---- BOTTOM ROW ----*/ -// COMB(hash, KC_HASH, KC_X, KC_C) // # -// COMB(fslash, KC_SLSH, KC_C, KC_V) // / - -// COMB(dash, KC_MINS, KC_M, KC_COMM) // - -// COMB(asterisk, KC_ASTR, KC_COMM, KC_DOT) // * -// COMB(at, KC_AT, KC_M, KC_DOT) // @ - - -// /*---- THUMBS ----*/ -// COMB(sys_lthm, SYS_OSL, KC_B, KC_ENT) // Sys OSL - -// COMB(space_shift, SPC_SFT, KC_TAB, KC_SPC) // space and activate oss - -// COMB(underscore_rthm, KC_UNDS, KC_SPC, KC_N) // _ - -// /*---- THUMB+ALPHAS ----*/ -// // COMB(os_fun, FUN_OSL, KC_ENT, KC_C) // OS Func -// // COMB(os_num, NUM_OSL, KC_A, KC_F) // OSL num -// // COMB(os_sym, SYM_OSL, KC_SPC, KC_M) // OSL sym diff --git a/users/ericgebhart/defs/custom_keys.def b/users/ericgebhart/defs/custom_keys.def deleted file mode 100644 index 075b7de0c1..0000000000 --- a/users/ericgebhart/defs/custom_keys.def +++ /dev/null @@ -1,86 +0,0 @@ -// custom key codes. - EPRM, - //VRSN, - CAPS_WORD_ON, - - // LAYERStuff. - KC_NEXT_LOCALE, - KC_NEXT_BASE_LAYER, - KC_SET_BASE, - // Misc. - KC_MAKE, - KC_RESET, - KC_RGB_T, - RGB_IDL, - KC_SECRET_1, - KC_SECRET_2, - KC_SECRET_3, - KC_SECRET_4, - KC_SECRET_5, - - KC_SPACETEST, - - /// Need to evaluate which to keep. - BCK_FWD, // Alt left and right - CLEAR, // Clears all mods, does not change layers. - LOCKSCR, // locks screen per is_windows value - PANIC, // Clears all One-Shot keys and returns to base layer. - UND_RED, // Ctrl Z and Y - - // macros - QMKCOMP, // qmk compile - QMKFLSH, // qmk flash - - // Swapper keys - just the swapper key, maybe gets reused. - SW_REV, // Dead key, reverse direction for swapper - -// for the combo ref layers. - CB_0M1, CB_0M2, CB_0M3, - CB_1M1, CB_1M2, CB_1M3, - CB_2M1, CB_2M2, CB_2M3, - CB_3M1, CB_3M2, CB_3M3, - CB_4M1, CB_4M2, CB_4M3, CB_4M4, CB_4M5, - - CB_1, CB_2, CB_3, CB_4, CB_5, CB_6, CB_7, CB_8, CB_9, CB_0, - - CB_1R1, CB_1R2, CB_1R3, CB_1R4, CB_1R5, - CB_1L1, CB_1L2, CB_1L3, CB_1L4, CB_1L5, - CB_2R1, CB_2R2, CB_2R3, CB_2R4, CB_2R5, - CB_2L1, CB_2L2, CB_2L3, CB_2L4, CB_2L5, - CB_3R1, CB_3R2, CB_3R3, CB_3R4, CB_3R5, - CB_3L1, CB_3L2, CB_3L3, CB_3L4, CB_3L5, - CB_4L1, CB_4L2, CB_4L3, CB_4L4, CB_4L5, - CB_4R1, CB_4R2, CB_4R3, CB_4R4, CB_4R5, - - CB2_0M1, CB2_0M2, CB2_0M3, - CB2_1M1, CB2_1M2, CB2_1M3, - CB2_2M1, CB2_2M2, CB2_2M3, - CB2_3M1, CB2_3M2, CB2_3M3, - CB2_4M1, CB2_4M2, CB2_4M3, CB2_4M4, CB2_4M5, - - CB2_1, CB2_2, CB2_3, CB2_4, CB2_5, CB2_6, CB2_7, CB2_8, CB2_9, CB2_0, - - CB2_1R1, CB2_1R2, CB2_1R3, CB2_1R4, CB2_1R5, - CB2_1L1, CB2_1L2, CB2_1L3, CB2_1L4, CB2_1L5, - CB2_2R1, CB2_2R2, CB2_2R3, CB2_2R4, CB2_2R5, - CB2_2L1, CB2_2L2, CB2_2L3, CB2_2L4, CB2_2L5, - CB2_3R1, CB2_3R2, CB2_3R3, CB2_3R4, CB2_3R5, - CB2_3L1, CB2_3L2, CB2_3L3, CB2_3L4, CB2_3L5, - CB2_4L1, CB2_4L2, CB2_4L3, CB2_4L4, CB2_4L5, - CB2_4R1, CB2_4R2, CB2_4R3, CB2_4R4, CB2_4R5, - -// core 6 thumb keys for combo reference layer - CB_TH1, CB_TH2, CB_TH3, CB_TH4, CB_TH5, CB_TH6, - CB2_TH1, CB2_TH2, CB2_TH3, CB2_TH4, CB2_TH5, CB2_TH6, - CB_1TH1, CB_1TH2, CB_1TH3, CB_1TH4, CB_1TH5, CB_1TH6, - CB2_1TH1, CB2_1TH2, CB2_1TH3, CB2_1TH4, CB2_1TH5, CB2_1TH6, - - // for the extra thumb keys on the kyria - CB_0TH1 , CB_0TH2, CB_0TH3, CB_0TH4, - CB_THA, CB_THB, CB_THC, CB_THD, - -// edge keys for the combo reference layer - L0_CB, L1_CB, L2_CB, L3_CB, - R0_CB, R1_CB, R2_CB, R3_CB, - L0_CB2, L1_CB2, L2_CB2, L3_CB2, - R0_CB2, R1_CB2, R2_CB2, R3_CB2, diff --git a/users/ericgebhart/defs/encoders.def b/users/ericgebhart/defs/encoders.def deleted file mode 100644 index 638d3fbf4b..0000000000 --- a/users/ericgebhart/defs/encoders.def +++ /dev/null @@ -1,65 +0,0 @@ -// Layer/none, encoder index 0/1, CW_KC, CCW_KC, Qualifying mod or none -// LAYER_NONE and MOD_NONE for a single use. -// LEFT and RIGHT for index. 0 and 1... - -// default encoders, all layers no mods. -ENCODER_ACTION(LAYER_NONE, RIGHT, KC_PGDN, KC_PGUP, MOD_NONE) -ENCODER_ACTION(LAYER_NONE, LEFT, KC_DOWN, KC_UP, MOD_NONE) -ENCODER_ACTION(LAYER_NONE, LEFT, KC_PGDN, KC_PGUP, MOD_LSFT) - -// Symbol layer encoders. -// left and right. -ENCODER_ACTION(_SYMB_EN, LEFT, KC_LEFT, KC_RIGHT, MOD_NONE) -// word left or right. -ENCODER_ACTION(_SYMB_EN, LEFT, LCTL(KC_LEFT), LCTL(KC_RIGHT), MOD_NONE) - -// Nav layer encoders. -ENCODER_ACTION(_NAV, LEFT, KC_TAB, S(KC_TAB), MOD_NONE) -ENCODER_ACTION(_NAV, RIGHT, A(KC_TAB), A(S(KC_TAB)), MOD_NONE) -ENCODER_ACTION(_NAV, RIGHT, KC_VOLU, KC_VOLD, MOD_NONE) - -// RGB functions for the RGB layer. -#ifdef RGB_MATRIX_ENABLE - ENCODER_FUNCTION(_RGB, LEFT, - rgb_matrix_increase_speed_noeeprom, - rgb_matrix_decrease_speed_noeeprom, MOD_NONE) - - ENCODER_FUNCTION(_RGB, RIGHT, - rgb_matrix_increase_hue_noeeprom, - rgb_matrix_decrease_hue_noeeprom, MOD_NONE) - - ENCODER_FUNCTION(_RGB, LEFT, - rgb_matrix_increase_sat_noeeprom, - rgb_matrix_decrease_sat_noeeprom, MOD_LSFT) - - ENCODER_FUNCTION(_RGB, RIGHT, - rgb_matrix_increase_val_noeeprom, - rgb_matrix_decrease_val_noeeprom, MOD_LSFT) - - ENCODER_FUNCTION(_RGB, LEFT, - rgb_matrix_step_noeeprom; - rgb_matrix_step_reverse_noeeprom, MOD_LCTL) - -#elif defined(RGBLIGHT_ENABLE) - - ENCODER_FUNCTION(_RGB, LEFT, - rgblight_increase_speed_noeeprom, - rgblight_decrease_speed_noeeprom, MOD_NONE) - - ENCODER_FUNCTION(_RGB, RIGHT, - rgblight_increase_hue_noeeprom, - rgblight_decrease_hue_noeeprom, MOD_NONE) - - ENCODER_FUNCTION(_RGB, LEFT, - rgblight_increase_sat_noeeprom, - rgblight_decrease_sat_noeeprom, MOD_LSFT) - - ENCODER_FUNCTION(_RGB, RIGHT, - rgblight_increase_val_noeeprom, - rgblight_decrease_val_noeeprom, MOD_LSFT) - - - ENCODER_FUNCTION(_RGB, LEFT, - rgblight_step_noeeprom, - rgblight_step_reverse_noeeprom, MOD_LCTL) - #endif // RGB_MATRIX_ENABLE || RGBLIGHT_ENABLE diff --git a/users/ericgebhart/defs/key_overrides.def b/users/ericgebhart/defs/key_overrides.def deleted file mode 100644 index 159e02e87e..0000000000 --- a/users/ericgebhart/defs/key_overrides.def +++ /dev/null @@ -1,23 +0,0 @@ -//KOL -> name, mod_mask, keycode, sendkeycode, layer to apply. - -// // these are actually handled by alt_local_keys, in a more universal -// // and adaptable way. -// KOL(slash_pipe, MOD_MASK_SHIFT, KC_SLSH, KC_PIPE, _DVORAK_EN) - -// this one is interesting. -KOL(slash_backslash, MOD_MASK_ALT, KC_SLSH, KC_BSLS, _DVORAK_EN) - -// KOL(N2_dot, MOD_MASK_SHIFT, KC_2, KC_DOT, _KEYPAD_EN) -// KOL(N3_comma, MOD_MASK_SHIFT, KC_3, KC_COMMA, _KEYPAD_EN) - -// KOL(hash_at, MOD_MASK_SHIFT, KC_HASH, KC_AT, _CDH) -// KOL(dot_colon, MOD_MASK_SHIFT, KC_DOT, KC_COLN, _CDH) -// KOL(comma_semicolon, MOD_MASK_SHIFT, KC_COMMA, KC_SCLN, _CDH) -// KOL(space_unds, MOD_MASK_SHIFT, KC_SPACE, KC_UNDS, _CDH) -// KOL(mins_exlm, MOD_MASK_SHIFT, KC_MINS, KC_EXLM, _CDH) - -// KOL(bspc_del, MOD_MASK_SHIFT, KC_BSPC, KC_DEL, _NAV) - -// KOL(zero_degree, MOD_MASK_SHIFT, KC_0, DEGREE, _KEYPAD_EN) - -// KOL(eur_pnd, MOD_MASK_SHIFT, KC_EUR, KC_PND, _SYMB_EN) diff --git a/users/ericgebhart/defs/mod_lock.def b/users/ericgebhart/defs/mod_lock.def deleted file mode 100644 index da53ea0503..0000000000 --- a/users/ericgebhart/defs/mod_lock.def +++ /dev/null @@ -1,19 +0,0 @@ -// mod lock keys. takes keymods not mods. -// keycode should be defined in custom_keys.def. -// custom key, modkey to activate -MODL(ML_LSFT, KC_LSFT) -MODL(ML_LCTL, KC_LCTL) -MODL(ML_LALT, KC_LALT) -MODL(ML_LGUI, KC_LGUI) - -// Keycodes which will NOT cancel mod lock mode. -IGNORE_KC( KC_LEFT) -IGNORE_KC( KC_RGHT) -IGNORE_KC( KC_UP) -IGNORE_KC( KC_DOWN) -IGNORE_KC( KC_HOME) -IGNORE_KC( KC_END) -IGNORE_KC( ML_LALT) -IGNORE_KC( ML_LCTL) -IGNORE_KC( ML_LGUI) -IGNORE_KC( ML_LSFT) diff --git a/users/ericgebhart/defs/not_dead.def b/users/ericgebhart/defs/not_dead.def deleted file mode 100644 index 66023ec523..0000000000 --- a/users/ericgebhart/defs/not_dead.def +++ /dev/null @@ -1,19 +0,0 @@ -// Make not dead keys from dead keys. -// Not dead keycode, dead key -NOT_DEAD(KC_DQUO_ND, KC_DQUO) -NOT_DEAD(KC_GRV_ND, KC_GRV) -NOT_DEAD(KC_QUOT_ND, KC_QUOT) -NOT_DEAD(KC_CIRC_ND, KC_CIRC) -NOT_DEAD(KC_TILD_ND, KC_TILD) - -NOT_DEAD(US_DQUO_ND, US_DQUO) -NOT_DEAD(US_GRV_ND, US_GRV) -NOT_DEAD(US_QUOT_ND, US_QUOT) -NOT_DEAD(US_CIRC_ND, US_CIRC) -NOT_DEAD(US_TILD_ND, US_TILD) - -NOT_DEAD(BP_DQUO_ND, BP_DQUO) -NOT_DEAD(BP_GRV_ND, BP_GRV) -NOT_DEAD(BP_QUOT_ND, BP_QUOT) -NOT_DEAD(BP_CIRC_ND, BP_CIRC) -NOT_DEAD(BP_TILD_ND, BP_TILD) diff --git a/users/ericgebhart/defs/nshot.def b/users/ericgebhart/defs/nshot.def deleted file mode 100644 index 79559534c7..0000000000 --- a/users/ericgebhart/defs/nshot.def +++ /dev/null @@ -1,45 +0,0 @@ -// Define keycodes in custom keys. -// KEYCode, mod keycode, to set for n-shot. -// ONESHOT is for one. -// NSHOT takes a count. - -// oneshots -ONESHOT(OS_LSFT, KC_LSFT) -ONESHOT(OS_LCTL, KC_LCTL) -ONESHOT(OS_LALT, KC_LALT) -ONESHOT(OS_LGUI, KC_LGUI) - -ONESHOT(OS_RSFT, KC_RSFT) -ONESHOT(OS_RCTL, KC_RCTL) -ONESHOT(OS_RALT, KC_RALT) -ONESHOT(OS_RGUI, KC_RGUI) - -// N-Shots -NSHOT(TS_LCTL, KC_LCTL, 2) -NSHOT(TS_RCTL, KC_RCTL, 2) - -// Keys which will cancel the n-shots. -CANCEL_KEY( PANIC) -CANCEL_KEY( CLEAR) -//CANCEL_KEY( THM_LH0) -//CANCEL_KEY( THM_LH1) -//CANCEL_KEY( THM_RH0) -//CANCEL_KEY( THM_RH1) - -// inherited from @possumvibes, keeping for now. -// Keys which will be ignored by n-shots. -//IGNORE_KEY( THM_LH0) -//IGNORE_KEY( THM_LH1) -//IGNORE_KEY( THM_RH0) -//IGNORE_KEY( THM_RH1) -//IGNORE_KEY( SYM_OSL) -//IGNORE_KEY( SYM_TG) -//IGNORE_KEY( NAV_TG) -//IGNORE_KEY( NUM_OSL) -//IGNORE_KEY( NUM_TO) -//IGNORE_KEY( FUN_OSL) -//IGNORE_KEY( ALPHA) -IGNORE_KEY( SML_NAV) -IGNORE_KEY( SPC_TOPR) -// IGNORE_KEY( SML_KEYPAD) -//IGNORE_KEY( SML_TOPROWS) diff --git a/users/ericgebhart/defs/oneshot.def b/users/ericgebhart/defs/oneshot.def deleted file mode 100644 index c54215234f..0000000000 --- a/users/ericgebhart/defs/oneshot.def +++ /dev/null @@ -1,17 +0,0 @@ -// custom-key, Oneshot name. - ONESHOT( OS_LSFT, ONESHOT_LSFT) - ONESHOT( OS_LCTL, ONESHOT_LCTL) - ONESHOT( OS_LALT, ONESHOT_LALT) - ONESHOT( OS_LGUI, ONESHOT_LGUI) - -// keys to cancel - CANCEL_KEY( KC_ESC) - -// CANCEL_KEY( KC_FNAV) -// CANCEL_KEY( KC_FNUM) -// CANCEL_KEY( KC_FCAPS) - -// keys to ignore. -IGNORE_KEY( SPC_NAV) -// IGNORE_KEY( KC_FNAV) -// IGNORE_KEY( KC_FSYM) diff --git a/users/ericgebhart/defs/send_string.def b/users/ericgebhart/defs/send_string.def deleted file mode 100644 index 455d25bfb1..0000000000 --- a/users/ericgebhart/defs/send_string.def +++ /dev/null @@ -1,7 +0,0 @@ -// key to be defined and string to send. - -//SEND_STR(MYKEY, "this is a test") -//SEND_STR_DELAY(MYKEY4, "this is another test") - -SEND_STR_DELAY(VRSN, QMK_KEYBOARD ":" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE) -// SEND_STR_DELAY(VRSN, QMK_KEYBOARD ":" QMK_KEYMAP " # @ " QMK_VERSION) diff --git a/users/ericgebhart/defs/smart_lock.def b/users/ericgebhart/defs/smart_lock.def deleted file mode 100644 index 8202feb0d9..0000000000 --- a/users/ericgebhart/defs/smart_lock.def +++ /dev/null @@ -1,123 +0,0 @@ -// Define smart layers here. -// SMLL = smart lock layer. -// SMLM = smart lock mod. - -// Keycode, layer/mod. -// list of keycodes to ignore. - -SMLM(SMLM_LSFT, MOD_LSFT, - ___VI_ARROWS___, - ___HOME_PGDN_PGUP_END___, - ___TAB_PGDN_PGUP_BKTAB___, - ___SML_MODS_L___) - -SMLM(SMLM_LCTL, MOD_LCTL, - ___VI_ARROWS___, - ___HOME_PGDN_PGUP_END___, - ___TAB_PGDN_PGUP_BKTAB___, - ___SML_MODS_L___) - -SMLM(SMLM_LALT, MOD_LALT, - ___VI_ARROWS___, - ___HOME_PGDN_PGUP_END___, - ___TAB_PGDN_PGUP_BKTAB___, - ___SML_MODS_L___) - -SMLM(SMLM_LGUI, MOD_LGUI, - ___VI_ARROWS___, - ___HOME_PGDN_PGUP_END___, - ___TAB_PGDN_PGUP_BKTAB___, - ___SML_MODS_L___) - -SMLM(SMLM_RSFT, MOD_RSFT, - ___VI_ARROWS___, - ___HOME_PGDN_PGUP_END___, - ___TAB_PGDN_PGUP_BKTAB___, - ___SML_MODS_L___) - -SMLM(SMLM_RCTL, MOD_RCTL, - ___VI_ARROWS___, - ___HOME_PGDN_PGUP_END___, - ___TAB_PGDN_PGUP_BKTAB___, - ___SML_MODS_L___) - -SMLM(SMLM_RALT, MOD_RALT, - ___VI_ARROWS___, - ___HOME_PGDN_PGUP_END___, - ___TAB_PGDN_PGUP_BKTAB___, - ___SML_MODS_L___) - -SMLM(SMLM_RGUI, MOD_RGUI, - ___VI_ARROWS___, - ___HOME_PGDN_PGUP_END___, - ___TAB_PGDN_PGUP_BKTAB___, - ___SML_MODS_L___) - -SMLL(SML_NAV, _NAV, ___NAV_3x10___) - -#ifdef MEDIA_LAYER_ENABLE -SMLL(SML_MEDIA, _MEDIA, ___MEDIA_3x10___) -#endif - -#ifdef MOUSEKEY_ENABLE -SMLL(SML_NAVm, _NAVm, ___NAVm_3x10___) -#endif - -SMLL(SML_KEYPAD, _KEYPAD_EN, - KC_1, - KC_2, - KC_3, - KC_4, - KC_5, - KC_6, - KC_7, - KC_8, - KC_9, - KC_0, - KC_PERC, - KC_DLR, - KC_COMM, - KC_DOT, - KC_SLSH, - KC_MINS, - KC_ASTR, - KC_PLUS, - KC_COLN, - KC_SCLN, - KC_EQL, - // KC_UNDS, - KC_BSPC, - KC_X, - SYM_MO) - -// SMLL(SML_KEYPAD_BP, _KEYPAD_BP, -// BP_1, -// BP_2, -// BP_3, -// BP_4, -// BP_5, -// BP_6, -// BP_7, -// BP_8, -// BP_9, -// BP_0, -// BP_PERC, -// BP_DLR, -// BP_COMM, -// BP_DOT, -// BP_SLSH, -// BP_MINS, -// BP_ASTR, -// BP_PLUS, -// BP_COLN, -// BP_SCLN, -// BP_EQL, -// // KC_UNDS, -// KC_BSPC, -// BP_X, -// SYM_MO) - -#ifdef TOPROWS_LAYER_ENABLE -SMLL(SML_TOPROWS, _TOPROWS_EN, ___10_SYMBOLS___, ___10_NUMBERS___) -#endif -//SMLL(SML_SYMB, _SYMB_EN, ___SYMB_BEAKLB_3x10___) diff --git a/users/ericgebhart/defs/swapper.def b/users/ericgebhart/defs/swapper.def deleted file mode 100644 index 64a51910cb..0000000000 --- a/users/ericgebhart/defs/swapper.def +++ /dev/null @@ -1,3 +0,0 @@ -// KEYCODE, Reverseit kc, KC to send, KC to send in reverse, MODs to apply. -SWAPPER_KEY(SW_WIN, SW_REV, KC_TAB, S(KC_TAB), KC_LALT) -SWAPPER_KEY(SW_TAB, SW_REV, KC_TAB, S(KC_TAB), KC_LCTL) diff --git a/users/ericgebhart/defs/tap_hold.def b/users/ericgebhart/defs/tap_hold.def deleted file mode 100644 index 54140b99f8..0000000000 --- a/users/ericgebhart/defs/tap_hold.def +++ /dev/null @@ -1,68 +0,0 @@ -// tap or long tap for different key. - -// One key copy/paste -TP_TPL(KC_CCCV, LCTL(KC_C), LCTL(KC_V)) -// New TaB/Window -TP_TPL(KC_CTCN, LCTL(KC_T), LCTL(KC_N)) -// Close Tab-window/Quit -TP_TPL(KC_CWCQ, LCTL(KC_W), LCTL(KC_Q)) -// Xmonad scratch pads or desktop -//TP_TPL(KC_XM_PORD, LGUI(KC_E), LGUI(KC_T)) - -//TP_SML(ENTNAV, KC_ENTER, SML_NAV) - - -#if defined(SECOND_LOCALE) && (SECOND_LOCALE == BEPO) || (DEFAULT_LANG == BEPO) -TP_TPL(BP_CCCV, LCTL(BP_C), LCTL(BP_V)) -TP_TPL(BP_CTCN, LCTL(BP_T), LCTL(BP_N)) -TP_TPL(BP_CWCQ, LCTL(BP_W), LCTL(BP_Q)) -TP_TPL(BP_XM_PORD, LGUI(BP_E), LGUI(BP_T)) - -TP_TPL(BP_C_CCED, BP_C, BP_CCED) -#endif - - -#if defined(SECOND_LOCALE) && (SECOND_LOCALE == US_INT) || (DEFAULT_LANG == US_INT) -TP_TPL(US_CCCV, LCTL(US_C), LCTL(US_V)) -TP_TPL(US_CTCN, LCTL(US_T), LCTL(US_N)) -TP_TPL(US_CWCQ, LCTL(US_W), LCTL(US_Q)) -TP_TPL(US_XM_PORD, LGUI(US_E), LGUI(US_T)) - -TP_TPL(US_C_CCED, US_C, US_CCED) -#endif - -// Open on tap and Open with close and back arrow on hold. -// (){}[]""''``<> -# if defined(SECOND_LOCALE) && (SECOND_LOCALE == EN) || (DEFAULT_LANG == EN) -OPEN_OCL(KC_OCPRN, KC_LPRN, KC_RPRN) -OPEN_OCL(KC_OCBRC, KC_LBRC, KC_RBRC) -OPEN_OCL(KC_OCCBR, KC_LCBR, KC_RCBR) -OPEN_OCL(KC_OCDQUO, KC_DQUO, KC_DQUO) -OPEN_OCL(KC_OCQUOT, KC_QUOT, KC_QUOT) -OPEN_OCL(KC_OCGRV, KC_GRAVE, KC_GRAVE) -OPEN_OCL(KC_OCLTGT, KC_LT, KC_GT) -#endif - - -#if defined(SECOND_LOCALE) && (SECOND_LOCALE == BEPO) || (DEFAULT_LANG == BEPO) -OPEN_OCL(BP_OCPRN, BP_LPRN, BP_RPRN) -OPEN_OCL(BP_OCBRC, BP_LBRC, BP_RBRC) -OPEN_OCL(BP_OCCBR, BP_LCBR, BP_RCBR) -OPEN_OCL(BP_OCDQUO, BP_DQUO, BP_DQUO) -OPEN_OCL_ND(BP_OCQUOT, BP_QUOT, BP_QUOT) -OPEN_OCL(BP_OCGRV, BP_GRV, BP_GRV) -OPEN_OCL(BP_OCLTGT, BP_LT, BP_GT) -#endif - - - -#if defined(SECOND_LOCALE) && (SECOND_LOCALE == US_INT) || (DEFAULT_LANG == US_INT) -OPEN_OCL(US_OCPRN, US_LPRN, US_RPRN) -OPEN_OCL(US_OCBRC, US_LBRC, US_RBRC) -OPEN_OCL(US_OCCBR, US_LCBR, US_RCBR) -OPEN_OCL(US_OCDQUO, US_DQUO, US_DQUO) - -OPEN_OCL_ND(US_OCQUOT, US_QUOT, US_QUOT) -OPEN_OCL(US_OCGRV, US_GRV, US_GRV) -OPEN_OCL(US_OCLTGT, US_LT, US_GT) -#endif diff --git a/users/ericgebhart/defs/unicode.def b/users/ericgebhart/defs/unicode.def deleted file mode 100644 index ee8dbecead..0000000000 --- a/users/ericgebhart/defs/unicode.def +++ /dev/null @@ -1,5 +0,0 @@ -// define keys to send unicode strings. - UC_STR(UC_FLIP, "(ノāē į—Šāē )ãƒŽå―Ąâ”ŧ━â”ŧ") - UC_STR(UC_TABL, "┎─┎ノ( š _ šノ)") - UC_STR(UC_SHRG, "ÂŊ\\_(ツ)_/ÂŊ") - UC_STR(UC_DISA, "āē _āē ") diff --git a/users/ericgebhart/ericgebhart.c b/users/ericgebhart/ericgebhart.c deleted file mode 100755 index 965456e56c..0000000000 --- a/users/ericgebhart/ericgebhart.c +++ /dev/null @@ -1,42 +0,0 @@ -/* - Copyright 2018 Eric Gebhart - - 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 . -*/ - -#include "ericgebhart.h" - -#include "quantum.h" -#include "version.h" -#include "action.h" -#include "action_layer.h" -#include "process_keycode/process_tap_dance.h" - -// Add reconfigurable functions here, for keymap customization -// This allows for a global, userspace functions, and continued -// customization of the keymap. Use _keymap instead of _user -// functions in the keymaps -__attribute__ ((weak)) -void matrix_init_keymap(void) {} - -__attribute__ ((weak)) -void matrix_scan_keymap(void) {} - -__attribute__ ((weak)) -uint32_t layer_state_set_keymap (uint32_t state) { - return state; -} - -__attribute__ ((weak)) -void led_set_keymap(uint8_t usb_led) {} diff --git a/users/ericgebhart/ericgebhart.h b/users/ericgebhart/ericgebhart.h deleted file mode 100755 index 4721b85ebd..0000000000 --- a/users/ericgebhart/ericgebhart.h +++ /dev/null @@ -1,28 +0,0 @@ -#pragma once -/* - Copyright 2018 Eric Gebhart - - 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 ericgebhart -#define ericgebhart - -#include "layer_names.h" - -#ifdef CONSOLE_ENABLE -#include "print.h" -#endif - -#endif diff --git a/users/ericgebhart/extensions/accented_keys.c b/users/ericgebhart/extensions/accented_keys.c deleted file mode 100644 index 2569bffea8..0000000000 --- a/users/ericgebhart/extensions/accented_keys.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - Copyright 2022 Eric Gebhart - - 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 . -*/ - -#include USERSPACE_H -#include "accented_keys.h" -#include -#include - -static inline void tap_accented_letter(uint16_t letter, uint16_t dead_key) { - uint8_t mod_state = get_mods(); - uint8_t oneshot_mod_state = get_oneshot_mods(); - del_mods(MOD_MASK_SHIFT); - del_oneshot_mods(MOD_MASK_SHIFT); - tap_code16(dead_key); - set_mods(mod_state); - set_oneshot_mods(oneshot_mod_state); - tap_code(letter); -} - -#undef ACCENTED -#define ACCENTED(KC, K1, DEAD_KEY) \ - case KC: \ - if (record->event.pressed) { \ - tap_accented_letter(K1, DEAD_KEY); \ - } \ - return false; - - -bool process_accent_keys(uint16_t keycode, keyrecord_t* record) { - switch(keycode){ -#ifdef ACCENTED_KEYS_ENABLE -#include "accented_keys.def" -#endif - } - return true; -} diff --git a/users/ericgebhart/extensions/accented_keys.h b/users/ericgebhart/extensions/accented_keys.h deleted file mode 100644 index 017c6fa312..0000000000 --- a/users/ericgebhart/extensions/accented_keys.h +++ /dev/null @@ -1,19 +0,0 @@ -#pragma once -/* - Copyright 2018 Eric Gebhart - - 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 . -*/ - -bool process_accent_keys(uint16_t keycode, keyrecord_t* record); diff --git a/users/ericgebhart/extensions/alt_shift.c b/users/ericgebhart/extensions/alt_shift.c deleted file mode 100644 index 002adec230..0000000000 --- a/users/ericgebhart/extensions/alt_shift.c +++ /dev/null @@ -1,99 +0,0 @@ -#include USERSPACE_H -#include -#include - -bool shift_for_two(uint16_t keycode, keyrecord_t *record){ - uint16_t mod_state = get_mods(); - - bool is_shifted = (get_mods() & MOD_MASK_SHIFT) || - (get_oneshot_mods() & MOD_MASK_SHIFT); - - if(record ->event.pressed) { - // If shifted, double these common punctuation marks. - if(is_shifted){ - // clear shift temporarily - del_mods(MOD_MASK_SHIFT); - del_oneshot_mods(MOD_MASK_SHIFT); - - tap_code16(keycode); - tap_code16(keycode); - - // restore previous shift state - set_mods(mod_state); - return false; - } - } - return true; -} - -bool shift_for_three(uint16_t keycode, keyrecord_t *record){ - uint16_t mod_state = get_mods(); - - bool is_shifted = (get_mods() & MOD_MASK_SHIFT) || - (get_oneshot_mods() & MOD_MASK_SHIFT); - - if(record ->event.pressed) { - // If shifted, double these common punctuation marks. - if(is_shifted){ - // clear shift temporarily - del_mods(MOD_MASK_SHIFT); - del_oneshot_mods(MOD_MASK_SHIFT); - - tap_code16(keycode); - tap_code16(keycode); - tap_code16(keycode); - - // restore previous shift state - set_mods(mod_state); - return false; - } - } - return true; - } - -bool override_shift(uint16_t keycode, - uint16_t shift_keycode, - keyrecord_t *record - ) { - - bool is_shifted = (get_mods() & MOD_MASK_SHIFT) || - (get_oneshot_mods() & MOD_MASK_SHIFT); - - if (record->event.pressed) { - if (is_shifted) { - uint8_t mod_state = get_mods(); - del_mods(MOD_MASK_SHIFT); - del_oneshot_mods(MOD_MASK_SHIFT); - - tap_code16(shift_keycode); - - set_mods(mod_state); - } else { - //tap_code16(keycode); - } - } - return false; -} - -// macros for use in alt_shift.defs. -#define ALT_SHIFT(KCKEY, KC01) \ - case KCKEY: \ - return override_shift(KCKEY, KC01, record); \ - break; - -#define SHIFT_FOR_2(KCKEY) \ - case KCKEY: \ - return shift_for_two(KCKEY, record); \ - break; - -#define SHIFT_FOR_3(KCKEY) \ - case KCKEY: \ - return shift_for_three(KCKEY, record); \ - break; - -bool process_alt_shift_user(uint16_t keycode, keyrecord_t *record) { - switch(keycode){ -#include "alt_shift.def" - } - return true; -} diff --git a/users/ericgebhart/extensions/altlocal_keys.c b/users/ericgebhart/extensions/altlocal_keys.c deleted file mode 100644 index 569a2076b5..0000000000 --- a/users/ericgebhart/extensions/altlocal_keys.c +++ /dev/null @@ -1,82 +0,0 @@ -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ - -// Create custom keycodes with arbitrary shifted and unshifted keys. -// originally for dvorak on bepo. But used by beakl on qwerty now too. - -// Why?: Because the keycodes are actually defined on the computer. So -// if you are trying to have dvorak, or beakl on bepo-fr, the shifted keys -// are wrong. But, I want my dvorak, so this allows the pairing of keys into -// a keycode that has shifted and non shifted behavior, outside of what the -// locale map says on the computer. -// -// These are the keys for dvorak on bepo. column one is the keycode and mods for -// the unshifted key, the second column is the keycode and mods for the shifted key. -// GR is Good Range. It subtracts SAFE_RANGE from the keycode so we can make a -// reasonably sized array without difficulties. The macro is for the constant declarations -// the function is for when we use it. - -//make an alt_local_keys.def - see the example. -// Include this file where you have your process_record_user function, -// call process_alt_local_key inside your process_record_user. - -#include USERSPACE_H -#include "altlocal_keys.h" - -const uint16_t key_translations[][2][2] = { -#include "altlocal_keys.def" -}; - -uint8_t gr(uint16_t kc){ - return (kc - SAFE_RANGE); -} - -// send the right keycode for the right mod. -// remove the mods we are taking care of, -// send our keycodes then restore them. -// all so we can make dvorak keys from bepo keycodes. -void send_keycode(uint16_t kc){ - uint8_t tmp_mods = get_mods(); - bool is_shifted = ( tmp_mods & (MOD_BIT(KC_LSFT)|MOD_BIT(KC_RSFT)) ); - - // need to turn of the shift if it is on. - unregister_mods((MOD_BIT(KC_LSFT)|MOD_BIT(KC_RSFT))); - if(is_shifted){ - register_mods(SHIFTED_MODS(kc)); - register_code16(SHIFTED_KEY(kc)); - unregister_code16(SHIFTED_KEY(kc)); - unregister_mods(SHIFTED_MODS(kc)); - } else{ - register_mods(UNSHIFTED_MODS(kc)); - register_code16(UNSHIFTED_KEY(kc)); - unregister_code16(UNSHIFTED_KEY(kc)); - unregister_mods(UNSHIFTED_MODS(kc)); - } - clear_mods(); - register_mods(tmp_mods); -} - -bool process_alt_local_key(uint16_t keycode, keyrecord_t* record) { - switch(keycode){ - case ALT_LOCAL_KEYS_START ... ALT_LOCAL_KEYS_END: - if(record->event.pressed) - send_keycode(keycode); - unregister_code(keycode); - break; - } - return (true); -} diff --git a/users/ericgebhart/extensions/altlocal_keys.h b/users/ericgebhart/extensions/altlocal_keys.h deleted file mode 100644 index 8e30472081..0000000000 --- a/users/ericgebhart/extensions/altlocal_keys.h +++ /dev/null @@ -1,56 +0,0 @@ -#pragma once -/* - Copyright 2018 Eric Gebhart - - 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 . -*/ - -// Create custom keycodes with arbitrary shifted and unshifted keys. -// originally for dvorak on bepo. But used by beakl on qwerty now too. - -// Why?: Because the keycodes are actually defined on the computer. So -// if you are trying to have dvorak, or beakl on bepo-fr, the shifted keys -// are wrong. But, I want my dvorak, so this allows the pairing of keys into -// a keycode that has shifted and non shifted behavior, outside of what the -// locale map says on the computer. -// -// These are the keys for dvorak on bepo. column one is the keycode and mods for -// the unshifted key, the second column is the keycode and mods for the shifted key. -// GR is Good Range. It subtracts SAFE_RANGE from the keycode so we can make a -// reasonably sized array without difficulties. The macro is for the constant declarations -// the function is for when we use it. - -//make an alt_local_keys.def - see the example. -// Include this file where you have your process_record_user function, -// call process_alt_local_key inside your process_record_user. - -uint8_t gr(uint16_t); -void send_keycode(uint16_t); -bool process_alt_local_key(uint16_t keycode, keyrecord_t* record); - -#define MOD_NONE 0x00 - -#define GR(x) (x-SAFE_RANGE) -// indexs for the keycode translation table. - -#define MK_KEY(KCNAME, KC1, MOD1, KC2, MOD2) \ - [GR(KCNAME)] = {{KC1, MOD1}, {KC2, MOD2}}, - -#define MK_SKEY(KCNAME, KC1, KC2) \ - [GR(KCNAME)] = {{KC1, MOD_NONE}, {KC2, MOD_NONE}}, - -#define UNSHIFTED_KEY(key) key_translations[gr(key)][0][0] -#define UNSHIFTED_MODS(key) key_translations[gr(key)][0][1] -#define SHIFTED_KEY(key) key_translations[gr(key)][1][0] -#define SHIFTED_MODS(key) key_translations[gr(key)][1][1] diff --git a/users/ericgebhart/extensions/console_key_logger.c b/users/ericgebhart/extensions/console_key_logger.c deleted file mode 100644 index 074673bd06..0000000000 --- a/users/ericgebhart/extensions/console_key_logger.c +++ /dev/null @@ -1,38 +0,0 @@ -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ - -#if defined( CONSOLE_ENABLE) && defined(CONSOLE_KEY_LOGGER_ENABLE) - -#include USERSPACE_H -#include "print.h" -#include "console_key_logger.h" - -void process_console_key_logger(uint16_t keycode, keyrecord_t *record) { - if (record->event.pressed) { - uprintf("0x%04X,%u,%u,%u,%b,0x%02X,0x%02X,%u\n", - keycode, - record->event.key.row, - record->event.key.col, - get_highest_layer(layer_state), - record->event.pressed, - get_mods(), - get_oneshot_mods(), - record->tap.count - ); - } -} -#endif diff --git a/users/ericgebhart/extensions/console_key_logger.h b/users/ericgebhart/extensions/console_key_logger.h deleted file mode 100644 index 5e7e2d5bc0..0000000000 --- a/users/ericgebhart/extensions/console_key_logger.h +++ /dev/null @@ -1,19 +0,0 @@ -#pragma once -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ - -void process_console_key_logger(uint16_t keycode, keyrecord_t *record); diff --git a/users/ericgebhart/extensions/encoders.c b/users/ericgebhart/extensions/encoders.c deleted file mode 100644 index 9a3d90b82f..0000000000 --- a/users/ericgebhart/extensions/encoders.c +++ /dev/null @@ -1,83 +0,0 @@ -/* - Copyright 2022 Eric Gebhart - - 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 . -*/ -#ifdef ENCODER_ENABLE -#include "encoders.h" -#include USERSPACE_H - -encoder_action_t encoder_actions[] = { -#include "encoders.def" -}; -uint8_t NUM_ENCODER_ACTIONS = sizeof(encoder_actions) / sizeof(encoder_action_t); - - -bool encoder_update_user(uint8_t index, bool clockwise) { - // do it twice, once for layer actions, once for non layer specific actions. - if (!do_encoder_action(index, clockwise, true)){ - do_encoder_action(index, clockwise, false); - } - return false; -} - -bool do_encoder_action(uint8_t index, bool clockwise, bool layer_actions) { - uint8_t mods = get_mods(); - encoder_action_t *action; - - // look for a match. - // on the layer, not on any layer. - // with the mods, or no mods. - for (int i = 0; i < NUM_ENCODER_ACTIONS; ++i) { - action = &encoder_actions[i]; - - // this encoder, or another. - if (action->index != index) - continue; - - // skip non layer specific actions and visa versa - // two pass system, once for layers, again for - // actions without layers. - if (layer_actions){ - if (action->layer == LAYER_NONE || - action->layer != biton32(layer_state)){ - continue; - } - }else if (action->layer != LAYER_NONE) - continue; - - // no mods, or these mods. - if ((mods && (action->mods == MOD_NONE)) || - (mods && (mods != action->mods))) - continue; - - // found one. - if (clockwise) { - if (action->clockwise != 0) { - tap_code16(action->clockwise); - } else if (action->cw_func != NULL) { - action->cw_func(); - } - } else { - if (action->counter_clockwise != 0) { - tap_code16(action->counter_clockwise); - } else if (action->ccw_func != NULL) { - action->ccw_func(); - } - } - } - return false; -} - -#endif diff --git a/users/ericgebhart/extensions/encoders.h b/users/ericgebhart/extensions/encoders.h deleted file mode 100644 index 458c5c541d..0000000000 --- a/users/ericgebhart/extensions/encoders.h +++ /dev/null @@ -1,46 +0,0 @@ -#pragma once -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ - -#include QMK_KEYBOARD_H - -typedef struct { - uint16_t layer; - uint16_t index; // 0 or 1, left/right. - uint16_t clockwise; - uint16_t counter_clockwise; - uint16_t mods; - void (*cw_func)(void); - void (*ccw_func)(void); -} encoder_action_t; -extern encoder_action_t encoder_actions[]; -extern uint8_t NUM_ENCODER_ACTIONS; - -// haven't looked at the real values for index, but I know -// 0 and 1 are left and right on my kyria. -#define LEFT 0 -#define RIGHT 1 -#define LAYER_NONE -1 -#define MOD_NONE 0x00 - -#define ENCODER_ACTION(LAYER, INDEX, CW_KC, CCW_KC, MOD) \ - {LAYER, INDEX, CW_KC, CCW_KC, MOD, NULL, NULL}, - -#define ENCODER_FUNCTION(LAYER, INDEX, CW_FUNC, CCW_FUNC, MOD) \ - {LAYER, INDEX, 0, 0, MOD, CW_FUNC, CCW_FUNC}, - -bool do_encoder_action(uint8_t index, bool clockwise, bool layer_actions); diff --git a/users/ericgebhart/extensions/extensions.c b/users/ericgebhart/extensions/extensions.c deleted file mode 100644 index f71e615a00..0000000000 --- a/users/ericgebhart/extensions/extensions.c +++ /dev/null @@ -1,91 +0,0 @@ -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ - -#include USERSPACE_H - -#include "extensions.h" -#include "keymap_combo.h" -#include "altlocal_keys.h" -#include "tap_hold.h" -#include "accented_keys.h" -#include "process_smart_lock.h" -#include "mod_lock.h" -#include "oneshot.h" -#include "process_nshot.h" -#include "process_locales.h" -#include "unicode.h" -#include "key_overrides.h" -#include "console_key_logger.h" - -// should make header files maybe. being lazy. -void process_not_dead(uint16_t keycode, keyrecord_t *record); -bool process_alt_shift_user(uint16_t keycode, keyrecord_t *record); -void process_send_strs(uint16_t keycode, keyrecord_t *record); -//bool process_alt_local_key(uint16_t keycode, keyrecord_t* record); -bool process_global_quick_tap(uint16_t keycode, keyrecord_t *record); - -// call this from the top of process records before the switch. - -bool process_extensions(uint16_t keycode, keyrecord_t *record){ - if (!process_locales(keycode, record)) { return false; } - -#ifdef GLOBAL_QUICK_TAP_ENABLE - if (!process_global_quick_tap(keycode, record)) {return false; } -#endif -#ifdef CAPS_WORD_ENABLE - if (!process_caps_word(keycode, record)) { return false; } -#endif -#ifdef ALT_LOCAL_ENABLE - if (!process_alt_local_key(keycode, record)) { return false; } -#endif -#ifdef ACCENTED_KEYS_ENABLE - if (!process_accent_keys(keycode, record)) { return false; } -#endif -#ifdef TAP_HOLD_ENABLE - process_tap_hold_user(keycode, record); -#endif -#ifdef SMART_LOCK_ENABLE - process_smart_lock(keycode, record); -#endif -#ifdef MOD_LOCK_ENABLE - process_mod_lock(keycode, record); -#endif -#ifdef NSHOT_ENABLE - if(!process_nshot_state(keycode, record)) {return false;} -#endif -#ifdef SEND_UNICODE_ENABLE - process_unicode_strs(keycode, record); -#endif -#ifdef SEND_STRING_ENABLE - process_send_strs(keycode, record); -#endif -#ifdef NOT_DEAD_ENABLE - process_not_dead(keycode, record); -#endif -#ifdef ALT_SHIFT_ENABLE - if(!process_alt_shift_user(keycode, record)) {return false;} -#endif -#if defined( CONSOLE_ENABLE) && defined(CONSOLE_KEY_LOGGER_ENABLE) - process_console_key_logger(keycode, record); -#endif -#ifdef ONESHOT_MOD_ENABLE - int8_t keycode_consumed = 0; - keycode_consumed += update_oneshot_modifiers(keycode, record, keycode_consumed); -#endif - return true; - -} diff --git a/users/ericgebhart/extensions/extensions.h b/users/ericgebhart/extensions/extensions.h deleted file mode 100644 index 899dbdd3d6..0000000000 --- a/users/ericgebhart/extensions/extensions.h +++ /dev/null @@ -1,22 +0,0 @@ -#pragma once -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ - -bool process_extensions(uint16_t keycode, keyrecord_t *record); - -#define PROCESS_EXTENSIONS \ - if (!process_extensions(keycode, record)) {return false;} diff --git a/users/ericgebhart/extensions/key_overrides.h b/users/ericgebhart/extensions/key_overrides.h deleted file mode 100644 index 3fb0c9a5bb..0000000000 --- a/users/ericgebhart/extensions/key_overrides.h +++ /dev/null @@ -1,53 +0,0 @@ -#pragma once -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ -#ifdef KEY_OVERRIDE_ENABLE - -#define KO_NAME(name, ...) &name, -#define KO_T(name) const key_override_t name - -#undef KOL -#define KOL(name, mods, modded_key, replacement, layer) \ - KO_T(name) = ko_make_with_layers(mods, modded_key, replacement, (1 << layer)); - -#define KO(name, mods, key, replacement) \ - KO_T(name) = ko_make_basic(mods, key, replacement) - -#define KOLN(name, mods, key, replacement, layers, neg_mods) \ - KO_T(name) = ko_make_with_layers_and_negmods(mods, key, replacement, layers, neg_mods) - -#define KOLNO(name, mods, key, replacement, layers, neg_mods, options) \ - KO_T(name) = ko_make_with_layers_negmods_and_options \ - (mods, key, replacement, layers, neg_mods, options) - -#include "key_overrides.def" - -#undef KO -#undef KOL -#undef KOLN -#undef KOLNO -#define KO KO_NAME -#define KOL KO_NAME -#define KOLN KO_NAME -#define KOLNO KO_NAME - -// This globally defines all key overrides to be used -const key_override_t **key_overrides = (const key_override_t *[]){ -#include "key_overrides.def" - NULL // Null terminate the array of overrides! -}; -#endif diff --git a/users/ericgebhart/extensions/keycodes.h b/users/ericgebhart/extensions/keycodes.h deleted file mode 100755 index eafdfbad43..0000000000 --- a/users/ericgebhart/extensions/keycodes.h +++ /dev/null @@ -1,523 +0,0 @@ -#pragma once -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ - -#include "quantum.h" -#include "process_keycode/process_tap_dance.h" -#include "eeconfig.h" -#include "keymap_bepo.h" -//#include "keymap_us_international.h" -#include "keymap_us_international_linux.h" -#include "lang.h" -#include "ericgebhart.h" - -//#define ONESHOT_TAP_TOGGLE 2 /* Tapping this number of times holds the key until tapped once again. */ - -// #define DEFAULT_LANG EN // US_INT // EN, BEPO, US_INT, EURkey - -#define KEY_NAME(NAME, ...) NAME, -#define BLANK(...) - -bool process_record_secrets(uint16_t keycode, keyrecord_t *record); - -enum userspace_custom_keycodes { - // Get all the custom keys from the defs if we can. - ALT_LOCAL_KEYS_START = SAFE_RANGE, -#ifdef ALT_LOCAL_ENABLE -#undef MK_KEY -#define MK_KEY KEY_NAME -#undef MK_SKEY -#define MK_SKEY KEY_NAME -#include "altlocal_keys.def" -#undef MK_KEY -#undef MK_SKEY -#endif - ALT_LOCAL_KEYS_END, - -#ifdef ACCENTED_KEYS_ENABLE -#undef ACCENTED -#define ACCENTED KEY_NAME -#include "accented_keys.def" -#undef ACCENTED -#endif - -#ifdef TAP_HOLD_ENABLE -#undef TP_TPL -#define TP_TPL KEY_NAME -#undef TP_SML -#define TP_SML KEY_NAME -#undef OPEN_OCL -#define OPEN_OCL KEY_NAME -#undef OPEN_OCL_ND -#define OPEN_OCL_ND KEY_NAME -#include "tap_hold.def" -#undef OPEN_OCL -#undef OPEN_OCL_ND -#undef TP_TPL -#undef TP_SML -#endif - -#ifdef UNICODE_ENABLE -#undef UC_STR -#define UC_STR KEY_NAME -#include "unicode.def" -#undef UC_STR -#endif - -#ifdef SEND_STRING_ENABLE -#undef SEND_STR -#define SEND_STR KEY_NAME -#undef SEND_STR_DELAY -#define SEND_STR_DELAY KEY_NAME -#include "send_string.def" -#undef SEND_STR -#undef SEND_STR_DELAY -#endif - -#ifdef SMART_LOCK_ENABLE -#undef SMLM -#define SMLM KEY_NAME -#undef SMLL -#define SMLL KEY_NAME -#include "smart_lock.def" -#undef SMLM -#undef SMLL -#endif - -#ifdef MOD_LOCK_ENABLE -#undef IGNORE_KC -#define IGNORE_KC BLANK -#undef MODL -#define MODL KEY_NAME -#include "mod_lock.def" -#undef IGNORE_KC -#undef MODL -#endif - - -#undef IGNORE_KEY -#define IGNORE_KEY BLANK -#undef CANCEL_KEY -#define CANCEL_KEY BLANK -#undef ONESHOT -#undef NSHOT -#define ONESHOT KEY_NAME -#define NSHOT KEY_NAME - -#ifdef NSHOT_ENABLE -#include "nshot.def" -#else - TS_RCTL, - TS_LCTL, -#endif - -#ifdef ONESHOT_MOD_ENABLE -#include "oneshot.def" -#endif - -#undef IGNORE_KEY -#undef CANCEL_KEY -#undef ONESHOT -#undef NSHOT - -#ifdef SWAPPER_ENABLE -#undef SWAPPER_KEY -#define SWAPPER_KEY KEY_NAME -#include "swapper.def" -#undef SWAPPER_KEY -#endif - -#ifdef NOT_DEAD_ENABLE -#undef NOT_DEAD -#define NOT_DEAD KEY_NAME -#include "not_dead.def" -#undef NOT_DEAD -#endif - -#include "custom_keys.def" - NEW_SAFE_RANGE -}; - -#define FIRST_LAYER (BEGINNING_OF_BASE_LAYERS + 1) - -#define TL_DQUO TLKC(_DQUO) -#define TL_QUOT TLKC(_QUOT) -#define TL_COMM TLKC(_COMM) -#define TL_DOT TLKC(_DOT) -#define TL_SCLN TLKC(_SCLN) -#define TL_SLSH TLKC(_SLSH) -#define TL_EXLM TLKC(_EXLM) -#define TL_MINS TLKC(_MINS) -#define TL_LPRN TLKC(_LPRN) -#define TL_LCBR TLKC(_LCBR) -#ifdef SYMBOL_LAYER_ENABLE -#define TL_DOT_SYMB LT(LN_SYMB, LANG_KC(TL_DOT)) -#endif - - -#define BP_LT BP_LABK -#define BP_GT BP_RABK -#define BP_TAB KC_TAB -#define US_GT US_RABK -#define US_LT US_LABK -#define US_TAB KC_TAB -#define US_DCMM KC_COMM // us doesn't have this dead key. - -// this is odd, there is interplay between this and -// the not-dead extension. - and tap-hold not-dead. -#undef US_TILD -#define US_TILD KC_TILD -// redefine us_circ so we actually get a circ. -#undef US_CIRC -#define US_CIRC KC_CIRC -#define US_EQUAL KC_EQUAL -// redefine us_quote so we actually get a quote. -#undef US_QUOT -#define US_QUOT KC_QUOT - -#define US_PRINT_SCREEN KC_PRINT_SCREEN -#define US_SCROLL_LOCK KC_SCROLL_LOCK -#define US_PAUSE KC_PAUSE -#define BP_PRINT_SCREEN KC_PRINT_SCREEN -#define BP_SCROLL_LOCK KC_SCROLL_LOCK -#define BP_PAUSE KC_PAUSE - -#define BP_F1 KC_F1 -#define BP_F2 KC_F2 -#define BP_F3 KC_F3 -#define BP_F4 KC_F4 -#define BP_F5 KC_F5 -#define BP_F6 KC_F6 -#define BP_F7 KC_F7 -#define BP_F8 KC_F8 -#define BP_F9 KC_F9 -#define BP_F10 KC_F10 -#define BP_F11 KC_F11 -#define BP_F12 KC_F12 -#define BP_TRNS KC_TRNS - -#define US_F1 KC_F1 -#define US_F2 KC_F2 -#define US_F3 KC_F3 -#define US_F4 KC_F4 -#define US_F5 KC_F5 -#define US_F6 KC_F6 -#define US_F7 KC_F7 -#define US_F8 KC_F8 -#define US_F9 KC_F9 -#define US_F10 KC_F10 -#define US_F11 KC_F11 -#define US_F12 KC_F12 -#define US_TRNS KC_TRNS - -#ifdef KEYPAD_LAYER_ENABLE -#define TT_KEYPAD TT(LANG_N(_KEYPAD)) -#define MO_KEYPAD MO(LANG_N(_KEYPAD)) -#else -#define TT_KEYPAD ___ -#define MO_KEYPAD ___ -#endif - -#ifdef SYMBOL_LAYER_ENABLE -#define TT_SYMB TT(LANG_N(_SYMB)) -#define MO_SYMB MO(LANG_N(_SYMB)) -#define OSL_SYMB OSL(LANG_N(_SYMB)) -#else -#define TT_SYMB ___ -#define MO_SYMB ___ -#define OSL_SYMB ___ -#endif - -#ifdef TOPROWS_LAYER_ENABLE -#define TT_TOPROWS TT(LANG_N(_TOPROWS)) -#define MO_TOPROWS MO(LANG_N(_TOPROWS)) -#else -#define TT_TOPROWS ___ -#define MO_TOPROWS ___ -#endif - -#ifdef RGB_LAYER_ENABLE -#define MO_RGB MO(_RGB) -#else -#define MO_RGB ___ -#endif - -#ifdef ADJUST_LAYER_ENABLE -#define MO_ADJUST MO(_ADJUST) -#else -#define MO_ADJUST ___ -#endif - -#ifdef ACCENTS_MORTE_LAYER_ENABLE -//#define LN_ACCENTS_MORTE LANG_N(_ACCENTS_MORTE) -#define OSL_ACCENTS_MORTE OSL(LANG_N(_ACCENTS_MORTE)) -#else -#define OSL_ACCENTS_MORTE ___ -#endif - -#ifdef ACCENTS_LAYER_ENABLE -#define LN_ACCENTS LANG_N(_ACCENTS) -#define OSL_ACCENTS OSL(LN_ACCENTS) -#else -#define OSL_ACCENTS ___ -#endif - -#ifdef MORTE_LAYER_ENABLE -#define LN_MORTE LANG_N(_MORTE) -#define OSL_MORTE OSL(LN_MORTE) -#else -#define OSL_MORTE ___ -#endif - -#define CTLGUI_T(kc) MT(MOD_LGUI | MOD_LCTL, kc) -#define SFTGUI_T(kc) MT(MOD_LGUI | MOD_LSFT, kc) -#define ALTGUI_T(kc) MT(MOD_LGUI | MOD_LALT, kc) - -#define ALT_ENT ALGR_T(KC_ENT) // Alt oor nter -#define CTL_ENT CTL_T(KC_ENT) // ctrl or space -#define CTL_SPC CTL_T(KC_SPC) // ctrl or space -#define CTL_BSPC CTL_T(KC_BSPC) // ctrl or backspace -#define ALT_DEL ALT_T(KC_DEL) // Alt or delete -#define GUI_ESC GUI_T(KC_ESC) // Gui or escape -#define ALGR_SYMB ALGR_T(TG(LANG_N(_SYMB))) // Alt gre or toggle symbol layer - -// one shot on tap, or hold like usual -#define OSLCTL_CTL CTL_T(OS_LCTL) -#define OSLSFT_SFT SFT_T(OS_LSFT) -#define OSLALT_ALT ALT_T(OS_LALT) -#define OSLGUI_GUI GUI_T(OS_LGUI) - -/* miryoku */ -/* esc_media, space_navnm, tab_navm, ENT_SYM, BSPC_TOPR, del_fun */ -/* hands down */ -/* TL_COMM, TL_DOT_SYMB, GUI_ESC, ALT_ENT, SPC_TOPR, BSPC */ - -// Lots of LT options. My thumb keys. -#ifdef TOPROWS_LAYER_ENABLE -#define LN_TOPROWS LANG_N(_TOPROWS) -#else -#define LN_TOPROWS KC_NO -#endif - -#ifdef SYMBOL_LAYER_ENABLE -# define LN_SYMB LANG_N(_SYMB) -# define TH_LTR_SYM LT(LN_SYMB, THUMB_LETTER) -#else -# define TH_LTR_SYM THUMB_LETTER -#endif - -#define TH_LTR_NAV LT(_NAV, THUMB_LETTER) - -#define LN_KEYPAD LANG_N(_KEYPAD) - -#define ACCENTS_RALT MT(MOD_RALT, OSL_ACCENTS) -#define ACCENTS_CTL MT(MOD_LCTL, OSL_ACCENTS) -#define ENT_SYM LT(LN_SYMB, KC_ENT) -#define ENT_NAV LT(_NAV, KC_ENT) -#define ENT_TOPR LT(LN_TOPROWS, KC_ENT) - -#define ESC_TOPR LT(LN_TOPROWS, KC_ESC) -#define ESC_SYMB LT(LN_SYMB, KC_ESC) -#define ESC_NUM LT(LN_KEYPAD, KC_ESC) -#define ESC_MEDIA LT(_MEDIA, KC_ESC) - -#define DEL_FUN LT(_FUN, KC_DEL) -#define TAB_NAVM LT(_NAVm, KC_TAB) -#define TAB_NUM LT(LN_KEYPAD, KC_TAB) -#define I_SYMB LT(LN_SYMB, KC_I) - -#define SPC_NAVm LT(_NAVm, KC_SPC) -#define SPC_NAVnm LT(_NAVnm, KC_SPC) -#define SPC_NAV LT(_NAV, KC_SPC) -#define SPC_SYMB LT(LN_SYMB, KC_SPC) -#define SPC_TOPR LT(LN_TOPROWS, KC_SPC) -#define SPC_LAYR LT(_LAYERS, KC_SPC) -#define SPC_ADJ LT(_ADJUST, KC_SPC) -#define SPC_NUM LT(LN_KEYPAD, KC_SPC) - -#define BSPC_NAVm LT(_NAVm, KC_BSPC) -#define BSPC_NAV LT(_NAV, KC_BSPC) -#ifdef SYMBOL_LAYER_ENABLE -#define BSPC_SYMB LT(LN_SYMB, KC_BSPC) -#else -#define BSPC_SYMB KC_BSPC -#endif -#define BSPC_TOPR LT(LN_TOPROWS, KC_BSPC) -#define BSPC_NUM LT(LN_KEYPAD, KC_BSPC) -#define BSPC_ALT MT(MOD_LALT, KC_BSPC) -#define BSPC_MEDIA LT(_MEDIA, KC_BSPC) - -#define KC_BKTAB LSFT(KC_TAB) - -// layer toggles -#define LAYER_OSL OSL(_LAYERS) -#define SYM_OSL OSL(LN_SYMB) -#define SYM_TG TG(LN_SYMB) -#define SYM_MO MO(LN_SYMB) -#define NAV_TG TG(_NAV) -#define COMBO_REF_TG_EN TG(_COMBO_REF) -#define NUM_OSL OSL(LN_KEYPAD) -#define NUM_TO TO(LN_KEYPAD) -#define FUN_OSL OSL(LN_FUNC) -#define SYS_OSL OSL(LN_SYSTEM) -#define SYS_TG TG(LN_SYSTEM) - -// Shortcuts -#define S_CUT S(KC_DEL) -#define S_COPY C(KC_INS) -#define S_PASTE S(KC_INS) -#define S_UNDO C(KC_Z) -#define S_REDO C(KC_Y) -#define S_SAVE C(KC_S) -#define S_ALL C(KC_A) -#define S_BACK A(KC_LEFT) -#define S_FWD A(KC_RIGHT) -#define C_BSPC C(KC_BSPC) -#define SCREEN S(C(KC_PSCR)) - -// One Shot Mods keycodes, -#define KC_MLSF OSM(MOD_LSFT) -#define KC_MRSF OSM(MOD_RSFT) -#define OS_LGUI OSM(MOD_LGUI) -#define OS_RGUI OSM(MOD_RGUI) -#define OS_LSFT OSM(MOD_LSFT) -#define OS_RSFT OSM(MOD_RSFT) -#define OS_LCTL OSM(MOD_LCTL) -#define OS_RCTL OSM(MOD_RCTL) -#define OS_LALT OSM(MOD_LALT) -#define OS_RALT OSM(MOD_RALT) -#define ALT_APP ALT_T(KC_APP) - -#define MG_NKRO MAGIC_TOGGLE_NKRO - -#define UC_IRNY UC(0x2E2E) -#define UC_CLUE UC(0x203D) - - -//// TAP DANCE - -typedef struct { - bool is_press_action; - int state; -} tdtap; - -enum { - SINGLE_TAP = 1, - SINGLE_HOLD = 2, - DOUBLE_TAP = 3, - DOUBLE_HOLD = 4, - DOUBLE_SINGLE_TAP = 5, //send two single taps - TRIPLE_TAP = 6, - TRIPLE_HOLD = 7 -}; - -//Tap Dance Declarations -enum { - TD_ESC_CAPS = 0, - TD_TAB_BKTAB = 1, - TD_MDIA_SYMB = 2, - TD_HOME_END = 3, - TD_XMONAD_ESC = 4, - TD_DEF_LAYER_SW = 5, - TD_DEF_OS_LAYER_SW = 6, - TD_MOUSE_BTNS = 7, - TD_DVORAK_BEPO = 8, - TD_UP_HOME = 9, - TD_DOWN_END = 10, - TD_RIGHT_TAB = 11, - TD_LEFT_BACKTAB = 12 -}; - - -// Tap dance -#define TAB_BKTAB TD(TD_TAB_BKTAB) // Tab or backtab tapdance. -#define MDIA_SYMB_KP_LAYERS TD(TD_MDIA_SYMB) // MDIA, symb, keypad, layouts layer tapdance toggle. -#define DEF_LAYER_SW TD(TD_DEF_LAYER_SW) // dvorak, dvorak_on_bepo, bepo default layer -#define DEF_OS_LAYER_SW TD(TD_DEF_OS_LAYER_SW) // dvorak, dvorak_on_bepo, bepo default layer -#define HOME_END TD(TD_HOME_END) // home or end tapdance. -#define XMONAD_ESC TD(TD_XMONAD_ESC) // Escape, dvorak, media or symb. - tap and hold tap dance. 1-4 -#define DVORAK_ET_BEPO TD(TD_DVORAK_BEPO) // Escape, dvorak, media or symb. - tap and hold tap dance. 1-4 -#define TDMOUSE_BTNS TD(TD_MOUSE_BTNS) // hmmm. 1-5 -#define RIGHT_TAB TD(TD_RIGHT_TAB) // Bad idea these 4. Maybe with good timing... -#define LEFT_BACKTAB TD(TD_LEFT_BACKTAB) -#define UP_HOME TD(TD_UP_HOME) -#define DOWN_END TD(TD_DOWN_END) // No! Down Down Not End.... - -// HOME ROW LAYER TOGGLE (LT) and Shift. -// both sides of the home row have "shift, ___, media , symb, ___" and "___, symb, media, ___, shift". -// so pinky fingers are shift when held and the index and second fingers are symbol and -// media layers when held. - -// The most portable copy/paste keys (windows (mostly), linux, and some terminal emulators). -// The KC_CCCV key takes care of the last two... -#define MK_CUT LSFT(KC_DEL) // shift + delete -#define MK_COPY LCTL(KC_INS) // ctrl + insert -#define MK_PASTE LSFT(KC_INS) // shift + insert -#define EOT LCTL(KC_D) -#define NAK LCTL(KC_U) -#define XPASTE LCTL(LSFT(KC_V)) -#define UNDO LCTL(KC_Z) -#define XCOPY LCTL(LSFT(KC_C)) - -#undef ___ //kint defines it as KC_NO -#define ___ KC_TRNS -#define XXX KC_NO -#define ____ _TRNS - -// Blocking keys -#define _X_ XXX -#define ___X___ XXX -#define ___X2___ XXX, XXX -#define ___X3___ ___X2___, XXX -#define ___X4___ ___X3___, XXX -#define ___X5___ ___X4___, XXX -#define ___X6___ ___X5___, XXX -#define ___X12___ ___X6___, ___X6___ -#define ___X15___ ___X5___, ___X5___, ___X5___ - -// Transparent keys -#define ___2___ ___, ___ -#define ___3___ ___2___, ___ -#define ___4___ ___3___, ___ -#define ___5___ ___4___, ___ -#define ___6___ ___5___, ___ -#define ___10___ ___6___, ___4___ -#define ___12___ ___6___, ___6___ -#define ___14___ ___5___, ___4___, ___5___ -#define ___15___ ___5___, ___5___, ___5___ -#define ___16___ ___15___, ___ - -#define ____2_ ____, ____ -#define ____3_ ____2_, ____ -#define ____4_ ____3_, ____ -#define ____5_ ____4_, ____ -#define ____6_ ____5_, ____ -#define ____10_ ____6_, ____4_ -#define ____12_ ____6_, ____6_ -#define ____14_ ____5_, ____4_, ____5_ -#define ____15_ ____5_, ____5_, ____5_ -#define ____16_ ____15_, ____ - -int on_qwerty(void); - -#ifdef TAP_DANCES_ENABLE -int cur_dance (tap_dance_state_t *state); - -//for the x tap dance. Put it here so it can be used in any keymap -void x_finished (tap_dance_state_t *state, void *user_data); -void x_reset (tap_dance_state_t *state, void *user_data); -#endif diff --git a/users/ericgebhart/extensions/keymap_combo.h b/users/ericgebhart/extensions/keymap_combo.h deleted file mode 100644 index e918fa08ea..0000000000 --- a/users/ericgebhart/extensions/keymap_combo.h +++ /dev/null @@ -1,136 +0,0 @@ -#pragma once -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ -// Keymap helpers -void process_combo_event(uint16_t combo_index, bool pressed); - - -// define reference layers per layer. -#define REF_LAYER(LAYER, REF_LAYER) \ - case LAYER: return REF_LAYER; - -#define K_ENUM(name, key, ...) name, -#define K_DATA(name, key, ...) const uint16_t PROGMEM cmb_##name[] = {__VA_ARGS__, COMBO_END}; -#define K_COMB(name, key, ...) [name] = COMBO(cmb_##name, key), - -#define A_ENUM(name, string, ...) name, -#define A_DATA(name, string, ...) const uint16_t PROGMEM cmb_##name[] = {__VA_ARGS__, COMBO_END}; -#define A_COMB(name, string, ...) [name] = COMBO_ACTION(cmb_##name), -#define A_ACTI(name, string, ...) \ - case name: \ - if (pressed) SEND_STRING(string); \ - break; - -#define A_TOGG(name, layer, ...) \ - case name: \ - if (pressed) layer_invert(layer); \ - break; - -#define BLANK(...) -// Generate data needed for combos/actions -// Create Enum -#define COMBO_REF_LAYER BLANK -#undef COMB -#undef SUBS -#undef TOGG -#define COMB K_ENUM -#define SUBS A_ENUM -#define TOGG A_ENUM -enum combos { -#include "combos.def" -}; - -// Bake combos into mem -#undef COMB -#undef SUBS -#undef TOGG -#define COMB K_DATA -#define SUBS A_DATA -#define TOGG A_DATA -#include "combos.def" -#undef COMB -#undef SUBS -#undef TOGG - -// Fill combo array -#define COMB K_COMB -#define SUBS A_COMB -#define TOGG A_COMB -combo_t key_combos[] = { -#include "combos.def" -}; -#undef COMB -#undef SUBS -#undef TOGG - -// Fill QMK hook -#define COMB BLANK -#define SUBS A_ACTI -#define TOGG A_TOGG - -void process_combo_event(uint16_t combo_index, bool pressed) { -#if defined( CONSOLE_ENABLE) && defined(CONSOLE_KEY_LOGGER_ENABLE) - if (pressed) { - combo_t *combo = &key_combos[combo_index]; - uint8_t idx = 0; - uint16_t combo_keycode; - while ((combo_keycode = pgm_read_word(&combo->keys[idx])) != COMBO_END) { - uprintf("0x%04X,NA,NA,%u,%u,0x%02X,0x%02X,0\n", - combo_keycode, - /* */ - /* */ - get_highest_layer(layer_state), - pressed, - get_mods(), - get_oneshot_mods() - ); - idx++; - } - } -#endif - switch (combo_index) { -#include "combos.def" - } - - // Allow user overrides per keymap -#if __has_include("inject.h") -# include "inject.h" -#endif -} - -#undef COMB -#undef SUBS -#undef TOGG - -#define COMB BLANK -#define SUBS BLANK -#define TOGG BLANK - -#undef COMBO_REF_LAYER -#define COMBO_REF_LAYER REF_LAYER - -uint16_t combo_ref_from_layer(uint16_t layer){ - switch (biton32(layer_state)){ -#include "combos.def" - -#ifdef COMBO_REF_DEFAULT - default: return COMBO_REF_DEFAULT; -#else - default: return layer; -#endif - } -} diff --git a/users/ericgebhart/extensions/mod_lock.c b/users/ericgebhart/extensions/mod_lock.c deleted file mode 100644 index c78f7cdfe8..0000000000 --- a/users/ericgebhart/extensions/mod_lock.c +++ /dev/null @@ -1,81 +0,0 @@ -/* - Copyright 2022 Eric Gebhart , @possumvibes - - 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 . -*/ -// Derived from mod_lock by @possumvibes. - -#include "mod_lock.h" - -#undef MODL -#define MODL(KEYCODE, MODKC) \ - {false, MODKC, KEYCODE}, - -#define A_KEY(KEYCODE) case KEYCODE: -#define BLANK(...) - -#undef IGNORE_KC -#define IGNORE_KC BLANK - -mod_lock_state_t modlock_states[] = { -#ifdef MOD_LOCK_ENABLE -#include "mod_lock.def" -#endif -}; -uint8_t NUM_MODLOCK_STATES = sizeof(modlock_states) / sizeof(mod_lock_state_t); - -void process_mod_lock(uint16_t keycode, keyrecord_t *record) { -#ifdef MOD_LOCK_ENABLE - mod_lock_state_t *curr_state = NULL; - - for (int i = 0; i < NUM_MODLOCK_STATES; ++i) { - curr_state = &modlock_states[i]; - - if (keycode == curr_state->trigger) { - if (record->event.pressed) { - if (curr_state->locking) { - unregister_code(curr_state->mod); - } else { - register_code(curr_state->mod); - } - - curr_state->locking = !curr_state->locking; - } - } else { - // check for cancel condition on keydown and keyup - if (curr_state->locking && is_mod_lock_cancel_key(keycode)) { - unregister_code(curr_state->mod); - curr_state->locking = false; - } - } - } -#endif -} - -#undef MODL -#undef IGNORE_KC -#define MODL BLANK -#define IGNORE_KC A_KEY -bool is_mod_lock_cancel_key(uint16_t keycode) { - // Mod locks are exclusively used on the nav layer. - // any key besides nav keys should cancel the lock. - switch (keycode) { -#ifdef MOD_LOCK_ENABLE -#include "mod_lock.def" -#endif - return false; - default: - return true; - } -} diff --git a/users/ericgebhart/extensions/mod_lock.h b/users/ericgebhart/extensions/mod_lock.h deleted file mode 100644 index d9e6106c4e..0000000000 --- a/users/ericgebhart/extensions/mod_lock.h +++ /dev/null @@ -1,39 +0,0 @@ -#pragma once -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ - -#include USERSPACE_H - -typedef struct { - bool locking; - uint16_t mod; - uint16_t trigger; -} mod_lock_state_t; - -extern mod_lock_state_t mod_lock_states[]; -extern uint8_t NUM_MODLOCK_STATES; - -// Custom mod-locking functionality that registers the mod and -// keeps it registered until the trigger key is tapped again -// or until a specified cancel key is tapped. -void process_mod_lock(uint16_t keycode, keyrecord_t *record); - -bool is_mod_lock_cancel_key(uint16_t keycode); - -#undef IGNORE_KC -#define IGNORE_KC(KC) \ - case KC: diff --git a/users/ericgebhart/extensions/not_dead.c b/users/ericgebhart/extensions/not_dead.c deleted file mode 100644 index 8369edd52d..0000000000 --- a/users/ericgebhart/extensions/not_dead.c +++ /dev/null @@ -1,36 +0,0 @@ -/* - Copyright 2022 Eric Gebhart - - 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 . -*/ - -#include USERSPACE_H - -inline void not_dead(uint16_t kc1, keyrecord_t *record) { - if (record->event.pressed) { - tap_code16(kc1); - tap_code16(KC_SPACE); - } -} - -#define NOT_DEAD(KCKEY, KC01) \ - case KCKEY: \ - not_dead(KC01, record); \ - break; \ - -void process_not_dead(uint16_t keycode, keyrecord_t *record) { - switch(keycode){ -#include "not_dead.def" - } -} diff --git a/users/ericgebhart/extensions/nshot_mod.c b/users/ericgebhart/extensions/nshot_mod.c deleted file mode 100644 index 1346f7eba6..0000000000 --- a/users/ericgebhart/extensions/nshot_mod.c +++ /dev/null @@ -1,154 +0,0 @@ -/* - Copyright 2022 Eric Gebhart , @possumvibes - - 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 . -*/ -// Derived from nshot_mod by @possumvibes. -// Derived from one shot_mod by @Callum. - -#include "nshot_mod.h" -#include USERSPACE_H - -#undef NSHOT -#define NSHOT(KEYCODE, MOD, COUNT) \ - {KEYCODE, MOD, COUNT, os_up_unqueued, 0}, - -#undef ONESHOT -#define ONESHOT(KEYCODE, MOD) NSHOT(KEYCODE, MOD, 1) -#define A_KEY(KEYCODE) case KEYCODE: -#define BLANK(...) - -#define CANCEL_KEY BLANK -#define IGNORE_KEY BLANK -nshot_state_t nshot_states[] = { -#include "nshot.def" -}; -uint8_t NUM_NSHOT_STATES = sizeof(nshot_states) / sizeof(nshot_state_t); - -bool process_nshot_state(uint16_t keycode, keyrecord_t *record) { - nshot_state_t *curr_state = NULL; - - switch(keycode){ - case CLEAR: { - clear_oneshot_mods(); - clear_mods(); - return false; - } - case PANIC: { - clear_oneshot_mods(); - clear_mods(); - if (get_oneshot_layer() != 0) { - clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED); - } - layer_move(0); - return false; - } - } - - for (int i = 0; i < NUM_NSHOT_STATES; ++i) { - curr_state = &nshot_states[i]; - - if (keycode == curr_state->trigger) { - if (record->event.pressed) { - // Trigger keydown - if (curr_state->state == os_up_unqueued) { - register_code(curr_state->mod); - } - curr_state->state = os_down_unused; - curr_state->count = 0; - } else { - // Trigger keyup - switch (curr_state->state) { - case os_down_unused: - // If we didn't use the mod while trigger was held, queue it. - curr_state->state = os_up_queued; - break; - case os_down_used: - // If we did use the mod while trigger was held, unregister it. - curr_state->state = os_up_unqueued; - unregister_code(curr_state->mod); - break; - default: - break; - } - } -} else { - if (record->event.pressed) { - if (is_nshot_cancel_key(keycode) && curr_state->state != os_up_unqueued) { - // Cancel oneshot on designated cancel keydown. - curr_state->state = os_up_unqueued; - curr_state->count = 0; - unregister_code(curr_state->mod); - } - } else { - if (!is_nshot_ignored_key(keycode)) { - // On non-ignored keyup, consider the oneshot used. - switch (curr_state->state) { - case os_down_unused: - // The mod key is being held as a normal mod. - curr_state->state = os_down_used; - break; - case os_up_queued: - // The mod key is being used as an n-shot. - // Increment the keys-used count. - curr_state->count = curr_state->count + 1; - - // If the n-shot max has been reached, complete the n-shot. - if (curr_state->count == curr_state->max_count) { - curr_state->state = os_up_unqueued; - curr_state->count = 0; - unregister_code(curr_state->mod); - } - break; - default: - break; - } - } - } - } - } - return true; -} - -// turn off the nshot/oneshot macros -#undef ONESHOT -#undef NSHOT -#define ONESHOT BLANK -#define NSHOT BLANK - -#undef CANCEL_KEY -#undef IGNORE_KEY -#define IGNORE_KEY BLANK -#define CANCEL_KEY A_KEY -bool is_nshot_cancel_key(uint16_t keycode) { - switch (keycode) { -#include "nshot.def" - return true; - default: - return false; - } -} - -#undef CANCEL_KEY -#undef IGNORE_KEY -#define CANCEL_KEY BLANK -#define IGNORE_KEY A_KEY -bool is_nshot_ignored_key(uint16_t keycode) { - switch (keycode) { -#include "nshot.def" - return true; - default: - return false; - } -} diff --git a/users/ericgebhart/extensions/nshot_mod.h b/users/ericgebhart/extensions/nshot_mod.h deleted file mode 100644 index c5840e6bef..0000000000 --- a/users/ericgebhart/extensions/nshot_mod.h +++ /dev/null @@ -1,45 +0,0 @@ -#pragma once -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ - -#include QMK_KEYBOARD_H - -// Represents the four states an n-shot key can be in (from users/callum) -typedef enum { - os_up_unqueued, - os_up_queued, - os_down_unused, - os_down_used, -} oneshot_state; - -typedef struct { - uint16_t trigger; - uint16_t mod; - uint8_t max_count; - oneshot_state state; - uint8_t count; -} nshot_state_t; - -extern nshot_state_t nshot_states[]; -extern uint8_t NUM_NSHOT_STATES; - - -// Keys that should cancel the n-shot mod if tapped -bool is_nshot_cancel_key(uint16_t keycode); - -// Keys that should not count towards n-shot usage (e.g., layer toggles) -bool is_nshot_ignored_key(uint16_t keycode); diff --git a/users/ericgebhart/extensions/oneshot.c b/users/ericgebhart/extensions/oneshot.c deleted file mode 100644 index 8d4dc2f29c..0000000000 --- a/users/ericgebhart/extensions/oneshot.c +++ /dev/null @@ -1,217 +0,0 @@ -#include QMK_KEYBOARD_H -#include USERSPACE_H -#include "oneshot.h" - -#ifdef ONESHOT_MOD_ENABLE - -/* -------------------------------------------- */ -// Add to process_record_user. -/* int8_t keycode_consumed = 0; */ - -/* #ifdef ONESHOT_ENABLE */ -/* keycode_consumed += update_oneshot_modifiers(keycode, record, keycode_consumed); */ -/* #endif */ -/* -------------------------------------------- */ - -#define ONESHOT(KEYCODE, MOD) case KEYCODE: return MOD; - -#define A_KEY(KEYCODE) case KEYCODE: -#define BLANK(...) - -#define CANCEL_KEY BLANK -#define IGNORE_KEY BLANK - -// the basic states a oneshot modifier can be in -typedef enum { - ONESHOT_STATE_OFF = 0, - ONESHOT_STATE_PRESSED = 1, - ONESHOT_STATE_QUEUED = 2, - ONESHOT_STATE_CAPSWORD = 3, - ONESHOT_STATE_LOCK = 4, - ONESHOT_STATE_END_PRESSED = 5, -} oneshot_state; - -oneshot_state modifiers_state_transitions_normal[5] = {ONESHOT_STATE_PRESSED, ONESHOT_STATE_QUEUED, ONESHOT_STATE_LOCK, ONESHOT_STATE_END_PRESSED, ONESHOT_STATE_END_PRESSED}; - -static oneshot_state modifiers_with_state[ONESHOT_MOD_COUNT] = { - ONESHOT_STATE_OFF, ONESHOT_STATE_OFF, ONESHOT_STATE_OFF, ONESHOT_STATE_OFF, ONESHOT_STATE_OFF, ONESHOT_STATE_OFF, ONESHOT_STATE_OFF, ONESHOT_STATE_OFF, -}; - -// oneshot mods always get registered immediately to the operating system, but we also -// need to keep track if the mod(s) got combined with a normal key (applied) -static bool unapplied_mods_present = false; - -// keycode of the last pressed 'normal' key which haven't been released yet -static uint16_t repeating_normal_key = 0; - -// utility functions (implemented at the bottom of this file) -static void set_modifier_state(oneshot_mod osmod, oneshot_state new_state); -static int8_t set_modifier_state_all(oneshot_state new_state); -static void set_modifier_state_all_from_to(oneshot_state oneshot_state_from, oneshot_state oneshot_state_to); -static bool all_modifiers_are_off(void); - -int8_t turnoff_oneshot_modifiers(void) { - return set_modifier_state_all(ONESHOT_STATE_OFF); -} - -// see comment in corresponding headerfile -int8_t update_oneshot_modifiers(uint16_t keycode, keyrecord_t *record, int8_t keycode_consumed) { - - // cancel keys - if (is_oneshot_modifier_cancel_key(keycode) && record->event.pressed) { - if (keycode_consumed == 0) { - unapplied_mods_present = false; - keycode_consumed += set_modifier_state_all(ONESHOT_STATE_OFF); - } else { - keycode_consumed = 0; - } - return keycode_consumed; - } - - // ignored keys - if (is_oneshot_modifier_ignored_key(keycode)) { - return keycode_consumed; - } - - oneshot_mod osmod = get_modifier_for_trigger_key(keycode); - - // trigger keys - if (osmod != ONESHOT_NONE) { - oneshot_state state = modifiers_with_state[osmod]; - if (record->event.pressed) { - if (state == ONESHOT_STATE_OFF) { - unapplied_mods_present = (repeating_normal_key == 0); - } - oneshot_state tostate = modifiers_state_transitions_normal[state]; - set_modifier_state(osmod, tostate); - } else { - if (state == ONESHOT_STATE_PRESSED) { - if (!unapplied_mods_present) { - set_modifier_state(osmod, ONESHOT_STATE_OFF); - } else { - set_modifier_state(osmod, ONESHOT_STATE_QUEUED); - } - } else if (state == ONESHOT_STATE_END_PRESSED) { - set_modifier_state(osmod, ONESHOT_STATE_OFF); - } - } - } - // normal keys - else { - if (record->event.pressed) { - if (!all_modifiers_are_off()) { - if (unapplied_mods_present) { - unapplied_mods_present = false; - } else { - unregister_code(repeating_normal_key); - set_modifier_state_all_from_to(ONESHOT_STATE_QUEUED, ONESHOT_STATE_OFF); - } - } - repeating_normal_key = keycode; - } else { - if (!all_modifiers_are_off()) { - unregister_code(keycode); - set_modifier_state_all_from_to(ONESHOT_STATE_QUEUED, ONESHOT_STATE_OFF); - } - repeating_normal_key = 0; - } - } - - return 0; -} - -// implementation of utility functions - -// registers/unregisters a mod to the operating system on state change if necessary -void update_modifier(oneshot_mod osmod, oneshot_state previous_state, oneshot_state current_state) { - if (previous_state == ONESHOT_STATE_OFF) { - register_code(KC_LCTL + osmod); - } else { - if (current_state == ONESHOT_STATE_OFF) { - unregister_code(KC_LCTL + osmod); - } - } -} - -void set_modifier_state(oneshot_mod osmod, oneshot_state new_state) { - oneshot_state previous_state = modifiers_with_state[osmod]; - if (previous_state != new_state) { - modifiers_with_state[osmod] = new_state; - update_modifier(osmod, previous_state, new_state); - } -} - -int8_t set_modifier_state_all(oneshot_state new_state) { - int8_t c = 0; - for (int8_t i = 0; i < ONESHOT_MOD_COUNT; i++) { - oneshot_state previous_state = modifiers_with_state[i]; - if (previous_state != new_state) { - modifiers_with_state[i] = new_state; - update_modifier(i, previous_state, new_state); - c += 1; - } - } - return c; -} - -void set_modifier_state_all_from_to(oneshot_state oneshot_state_from, oneshot_state oneshot_state_to) { - for (int8_t i = 0; i < ONESHOT_MOD_COUNT; i++) { - if (modifiers_with_state[i] == oneshot_state_from) { - modifiers_with_state[i] = oneshot_state_to; - update_modifier(i, oneshot_state_from, oneshot_state_to); - } - } -} - -bool all_modifiers_are_off(void) { - for (int8_t i = 0; i < ONESHOT_MOD_COUNT; i++) { - if (modifiers_with_state[i] != ONESHOT_STATE_OFF) { - return false; - } - } - return true; -} - -oneshot_mod get_modifier_for_trigger_key(uint16_t keycode) -{ - switch (keycode) - { -#include "oneshot.def" - return true; - default: - return ONESHOT_NONE; - } -} - -// turn off the oneshot macros -#undef ONESHOT -#define ONESHOT BLANK -#define NSHOT BLANK - -#undef CANCEL_KEY -#undef IGNORE_KEY -#define CANCEL_KEY A_KEY -#define IGNORE_KEY BLANK -bool is_oneshot_modifier_cancel_key(uint16_t keycode) { - switch (keycode) { -#include "oneshot.def" - return true; - default: - return false; - } -} - -#undef CANCEL_KEY -#undef IGNORE_KEY -#define CANCEL_KEY BLANK -#define IGNORE_KEY A_KEY -bool is_oneshot_modifier_ignored_key(uint16_t keycode) { - switch (keycode) { -#include "oneshot.def" - return true; - default: - return false; - } -} - -#endif diff --git a/users/ericgebhart/extensions/oneshot.h b/users/ericgebhart/extensions/oneshot.h deleted file mode 100644 index 774dc4ab39..0000000000 --- a/users/ericgebhart/extensions/oneshot.h +++ /dev/null @@ -1,37 +0,0 @@ -#define ENABLE_ONESHOT -#ifdef ENABLE_ONESHOT -#pragma once - -typedef enum { - ONESHOT_LCTL = 0, - ONESHOT_LSFT = 1, - ONESHOT_LALT = 2, - ONESHOT_LGUI = 3, - ONESHOT_RCTL = 4, - ONESHOT_RSFT = 5, - ONESHOT_RALT = 6, - ONESHOT_RGUI = 7, - ONESHOT_NONE = 8, - ONESHOT_MOD_COUNT = 8, -} oneshot_mod; - - -// This function should be called inside proces_record_user and does everything needed to get one shot modifiers working. -// Returns true if the keycode needs further handling, false otherwise. -int8_t update_oneshot_modifiers(uint16_t keycode, keyrecord_t *record, int8_t keycode_consumed); -int8_t turnoff_oneshot_modifiers(void); - -// TO BE IMPLEMENTED BY THE USER -// This function should return one of the oneshot_mod enumerations (see keymap.c implementation) -oneshot_mod get_modifier_for_trigger_key(uint16_t keycode); - -// TO BE IMPLEMENTED BY THE USER -// This function should return true for keycodes that must be ignored in the oneshot modifier behaviour. -// You probably want to ignore layer keys. Trigger keys don't need to be specified here. -bool is_oneshot_modifier_ignored_key(uint16_t keycode); - -// TO BE IMPLEMENTED BY THE USER -// This function should return true for keycodes that should reset all oneshot modifiers. -bool is_oneshot_modifier_cancel_key(uint16_t keycode); - -#endif diff --git a/users/ericgebhart/extensions/process_locales.h b/users/ericgebhart/extensions/process_locales.h deleted file mode 100644 index d0f7af53bf..0000000000 --- a/users/ericgebhart/extensions/process_locales.h +++ /dev/null @@ -1,29 +0,0 @@ -#pragma once -/* - Copyright 2022 Eric Gebhart - - 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 . -*/ - -#include USERSPACE_H - -// Stuff we need for locale and layer switching -// there can be more but we need to know where they start and end. -// remember there's limitations on layers. -// Our locales. so it's easy to switch between them. - -bool process_locales(uint16_t keycode, keyrecord_t *record); - -#define PROCESS_LOCALES \ - if (!process_locales(keycode, record)) { return false; } diff --git a/users/ericgebhart/extensions/process_nshot.h b/users/ericgebhart/extensions/process_nshot.h deleted file mode 100644 index 1ec42db478..0000000000 --- a/users/ericgebhart/extensions/process_nshot.h +++ /dev/null @@ -1,21 +0,0 @@ -#pragma once -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ -// Custom one-or-more-shot implementation that does not rely on timers -// and persists across layer changes. Based on the users/callum implementation -// at https://github.com/callum-oakley/qmk_firmware/tree/master/users/callum -bool process_nshot_state(uint16_t keycode, keyrecord_t *record); diff --git a/users/ericgebhart/extensions/process_smart_lock.h b/users/ericgebhart/extensions/process_smart_lock.h deleted file mode 100644 index b8e2fb2735..0000000000 --- a/users/ericgebhart/extensions/process_smart_lock.h +++ /dev/null @@ -1,19 +0,0 @@ -#pragma once -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ -///* -------- Process Record -------- */ -void process_smart_lock(uint16_t keycode, keyrecord_t *record); diff --git a/users/ericgebhart/extensions/quick_tap.c b/users/ericgebhart/extensions/quick_tap.c deleted file mode 100644 index 8c25f153bd..0000000000 --- a/users/ericgebhart/extensions/quick_tap.c +++ /dev/null @@ -1,37 +0,0 @@ -/* - Copyright 2022 Eric Gebhart , @possumvibes - - 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 . -*/ - -// written by @dnaq. -#if defined( global_quick_tap) && defined(CONSOLE_KEY_LOGGER_ENABLE) - bool process_global_quick_tap(uint16_t keycode, keyrecord_t *record) { - static uint16_t global_quick_tap_timer = 0; - if (keycode < QK_MOD_TAP || keycode > QK_MOD_TAP_MAX) { - global_quick_tap_timer = timer_read(); - return true; - } - if (timer_elapsed(global_quick_tap_timer) > TAPPING_TERM) { - return true; - } - if (record->event.pressed) { - keycode = keycode & 0xFF; - global_quick_tap_timer = timer_read(); - tap_code(keycode); - return false; - } - return true; - } -#endif diff --git a/users/ericgebhart/extensions/send_string.c b/users/ericgebhart/extensions/send_string.c deleted file mode 100644 index 50237f5143..0000000000 --- a/users/ericgebhart/extensions/send_string.c +++ /dev/null @@ -1,40 +0,0 @@ -/* - Copyright 2018 Eric Gebhart - - 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 . -*/ -#include USERSPACE_H -#include "version.h" - -#define SEND_STR(KEYC, STRING) \ - case KEYC: \ - if (record->event.pressed) { \ - SEND_STRING(STRING); \ - } \ - break; - -#define SEND_STR_DELAY(KEYC, STRING) \ - case KEYC: \ - if (record->event.pressed) { \ - SEND_STRING_DELAY(STRING, TAP_CODE_DELAY); \ - } \ - break; - -void process_send_strs(uint16_t keycode, keyrecord_t *record){ -#ifdef SEND_STRING_ENABLE - switch (keycode) { -#include "send_string.def" - } -#endif -} diff --git a/users/ericgebhart/extensions/smart_lock.c b/users/ericgebhart/extensions/smart_lock.c deleted file mode 100644 index 5b3dc0ecb2..0000000000 --- a/users/ericgebhart/extensions/smart_lock.c +++ /dev/null @@ -1,117 +0,0 @@ -/* - Copyright 2022 Eric Gebhart - - 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 . -*/ -// Derived from smart_layers by @Possumvibes -// Derived from one shot_mod by @Callum. - -#include "smart_lock.h" -#include USERSPACE_H - -/* print("string"): Print a simple string. */ -/* uprintf("%s string", var) */ - -bool ignore_key(uint16_t keycode, - const uint16_t *cond_keys){ - - // look for non-cancel condition. - // look for keys to ignore, if we match, we do nothing. - for (; pgm_read_word(cond_keys) != COND_KEYS_END ; ++cond_keys){ - if (pgm_read_word(cond_keys) == keycode){ - return true; - } - } - return false; -} - -void deactivate_sml_layer(smart_lock_t *sml){ - layer_off(sml->thing); - sml->active = false; -} -void deactivate_sml_mod(smart_lock_t *sml){ - unregister_mods(sml->thing); - sml->active = false; -} - -void deactivate_sml(smart_lock_t *sml){ - switch(sml->type){ - case sml_layer: - deactivate_sml_layer(sml); - case sml_mod: - deactivate_sml_mod(sml); - } -} - - -void sml_activate_layer(smart_lock_t *sml){ - sml->active = true; - layer_on(sml->thing); -} - -void sml_maybe_activate_mod(smart_lock_t *sml ){ - if (sml->active) { - unregister_mods(sml->thing); - } else { - register_mods(sml->thing); - } - sml->active = !sml->active; -} - -void sml_activate(smart_lock_t *sml){ - switch(sml->type){ - case sml_layer: - sml_activate_layer(sml); - break; - case sml_mod: -sml_maybe_activate_mod(sml); - break; - } -} - - - -void update_smart_lock(uint16_t keycode) { - -#ifdef SMART_LOCK_ENABLE - bool deactivate = false; - smart_lock_t *sml; - - for (int i = 0; i < SML_LEN; ++i){ - sml = &smart_locks[i]; - - // if it's a match, - // maybe activate/deactivate it if we got it's keycode. - if (sml->keycode == keycode){ - sml_activate(sml); - return; - } - - // deactivate what we need to. - if(sml->active){ - deactivate = !ignore_key(keycode, &sml->keys[0]); - if (deactivate){ - deactivate_sml(sml); - } - } - } -#endif - return; -} - -void process_smart_lock(uint16_t keycode, keyrecord_t *record) { - if (record->event.pressed) { - update_smart_lock(keycode); - } -} diff --git a/users/ericgebhart/extensions/smart_lock.h b/users/ericgebhart/extensions/smart_lock.h deleted file mode 100644 index 0102d611cd..0000000000 --- a/users/ericgebhart/extensions/smart_lock.h +++ /dev/null @@ -1,103 +0,0 @@ -#pragma once -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ -#include QMK_KEYBOARD_H -#include USERSPACE_H - -#ifdef SMART_LOCK_ENABLE -typedef enum { - sml_layer, - sml_mod -} smart_lock_type; - -typedef struct { - bool active; - const uint16_t *keys; - uint16_t keycode; - uint16_t thing; - smart_lock_type type; -} smart_lock_t; - - -// smart layer, smart mods -#undef SMLL -#undef SMLM -#define SMLL(key, layer, ...) -#define SMLM(key, mod, ...) // to replace mod_lock.. -#define COND_KEYS_END 0 - -#define CONCATENATE_SA(a, ...) a ## __VA_ARGS__ -#define CONCATENATE_S(a, ...) a ## __VA_ARGS__ -#define CAT_S(a, ...) CONCATENATE_S(a, __VA_ARGS__) -#define MK_SKEY(KC) CONCATENATE_S(sml_, KC) -#define MK_ARRAY(KC) \ - const uint16_t PROGMEM CONCATENATE_SA(sml_, KC)[] - -// to create an enum and find how many... -#define S_ENUM(kc, layer, ...) CAT_S(sml__, kc), -// create a const array of the condkeys for each SML -#define S_DATA(kc, thing, ...) MK_ARRAY(kc) = {__VA_ARGS__, COND_KEYS_END}; - -// create a list of smart_lock structs. Two names, one for mod one for layer to be concise. -#define S_SMART_LOCK(kc, layer, ...) {false, MK_SKEY(kc), kc, layer, sml_layer}, -#define M_SMART_LOCK(kc, mod, ...) {false, MK_SKEY(kc), kc, mod, sml_mod}, - -#define SML(sk, sa, st, stype) \ - { .keys = &(sk)[0], .keycode = (sa), .thing = (st), .smart_lock_type = stype} -#define K_SMLM(key, mod...) [MK_SKEY(key)] = SML(MK_SKEY(key), key, mod, sml_mod), -#define K_SMLL(key, layer...) [MK_SKEY(key)] = SML(MK_SKEY(key), key, layer, sml_layer), - -// Set everything up -// - Create enum of names, (sml_keycode). Used as indexes in the arrays. -// avoids using the keycodes which would create a sparse/large array. -// - Create array of conditional locks.. -// - Create array of the conditional keys for the locks, by name. - -// Create Enum -#undef SMLL -#undef SMLM -#define SMLL S_ENUM -#define SMLM S_ENUM - -// find how many -enum smart_locks { -#include "smart_lock.def" - SML_LENGTH -}; -uint16_t SML_LEN = SML_LENGTH; - -// Bake locks into mem, name, ignore/cancel keys -#undef SMLL -#undef SMLM -#undef TOGG -#define SMLL S_DATA -#define SMLM S_DATA -#include "smart_lock.def" -#undef SMLL -#undef SMLM - -// Fill array of locks by name, kc, layer/mod. -#define SMLL S_SMART_LOCK -#define SMLM M_SMART_LOCK - -smart_lock_t smart_locks[] = { -#include "smart_lock.def" -}; -#undef SMLL -#undef SMLM - -#endif diff --git a/users/ericgebhart/extensions/swapper.c b/users/ericgebhart/extensions/swapper.c deleted file mode 100644 index 988a99e602..0000000000 --- a/users/ericgebhart/extensions/swapper.c +++ /dev/null @@ -1,58 +0,0 @@ -/* - Copyright 2022 Eric Gebhart . -*/ -// Derived from swapper by @Possumvibes and @Callum - -#include "swapper.h" - -swapper_state_t swapper_states[] = { -#ifdef SWAPPER_ENABLE -#include "swapper.def" -#endif -}; -uint8_t NUM_SWAPPER_STATES = sizeof(swapper_states) / sizeof(swapper_state_t); - -// Based on https://github.com/callum-oakley/qmk_firmware/tree/master/users/callum -void process_swappers(uint16_t keycode, keyrecord_t *record) { -#ifdef SWAPPER_ENABLE - swapper_state_t *curr_state = NULL; - for (int i = 0; i < NUM_SWAPPER_STATES; ++i) { - curr_state = &swapper_states[i]; - - if (keycode == curr_state->forward_trigger) { - if (record->event.pressed) { - if (!curr_state->active) { - curr_state->active = true; - register_code16(curr_state->mod); - } - register_code16(curr_state->forward); - } else { - unregister_code16(curr_state->forward); - // Don't unregister curr_state->mod until some other key is hit or released. - } - } else if (curr_state->active && keycode == curr_state->reverse_trigger) { - if (record->event.pressed) { - register_code16(curr_state->reverse); - } else { - unregister_code16(curr_state->reverse); - } - } else if (curr_state->active) { - unregister_code16(curr_state->mod); - curr_state->active = false; - } - } -#endif -} diff --git a/users/ericgebhart/extensions/swapper.h b/users/ericgebhart/extensions/swapper.h deleted file mode 100644 index fb7774f37a..0000000000 --- a/users/ericgebhart/extensions/swapper.h +++ /dev/null @@ -1,37 +0,0 @@ -#pragma once -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ - -#include QMK_KEYBOARD_H -#include USERSPACE_H - -typedef struct { - bool active; - uint16_t mod; - uint16_t forward; - uint16_t reverse; - uint16_t forward_trigger; - uint16_t reverse_trigger; -} swapper_state_t; -extern swapper_state_t swapper_states[]; -extern uint8_t NUM_SWAPPER_STATES; - -#undef SWAPPER_KEY -#define SWAPPER_KEY(KC, REVERSE_IT_KC, FWD_KC, REV_KC, MOD) \ - {false, MOD, FWD_KC, REV_KC, KC, REVERSE_IT_KC}, - -void process_swappers(uint16_t keycode, keyrecord_t *record); diff --git a/users/ericgebhart/extensions/tap_dances.c b/users/ericgebhart/extensions/tap_dances.c deleted file mode 100755 index 8b1fea15e8..0000000000 --- a/users/ericgebhart/extensions/tap_dances.c +++ /dev/null @@ -1,277 +0,0 @@ -/* - Copyright 2018 Eric Gebhart - - 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 . -*/ -#ifdef TAP_DANCES_ENABLE - -#include "tap_dances.h" - -#include "action.h" -#include "action_layer.h" -#include "process_keycode/process_tap_dance.h" - -void tap_dance_mouse_btns (tap_dance_state_t *state, void *user_data) { - switch(state->count){ - case 1: - register_code(KC_BTN1); - break; - case 2: - register_code(KC_BTN2); - break; - case 3: - register_code(KC_BTN3); - break; - case 4: - register_code(KC_BTN4); - break; - case 5: - register_code(KC_BTN5); - break; - default: - break; - } - reset_tap_dance(state); -} - -// counting on all the qwerty layers to be less than dvorak_on_bepo -int on_qwerty(){ - uint8_t deflayer = (biton32(default_layer_state)); - switch(deflayer){ - case _DVORAK_BP: - case _BEAKL_BP: - case _BEPO: - return (false); - default: - break; - } - return (true); -} - -static void switch_default_layer(uint8_t layer) { - default_layer_set(1UL<count){ - case 1: - switch_default_layer(_DVORAK_BP); - break; - case 2: - switch_default_layer(_BEPO); - break; - case 3: - layer_invert(_LAYERS); - break; - default: - break; - } - reset_tap_dance(state); -} - -void tap_dance_layer_switch (tap_dance_state_t *state, void *user_data) { - switch(state->count){ - case 1: - if(on_qwerty()) - layer_invert(_SYMB); - else - layer_invert(_SYMB_BP); - break; - case 2: - layer_invert(_NAV); - break; - case 3: - layer_invert(_LAYERS); - break; - case 4: - if(on_qwerty()) - layer_invert(_KEYPAD); - else - layer_invert(_KEYPAD_BP); - break; - default: - break; - } - reset_tap_dance(state); -} - -void tap_dance_default_layer_switch (tap_dance_state_t *state, void *user_data) { - switch(state->count){ - case 1: - switch_default_layer(_DVORAK); - break; - case 2: - switch_default_layer(_DVORAK_BP); - break; - case 3: - switch_default_layer(_BEPO); - break; - default: - break; - } - reset_tap_dance(state); -} - -// switch the default layer to another qwerty based layer. -void switch_default_layer_on_qwerty(int count) { - switch(count){ - case 1: - switch_default_layer(_DVORAK); - break; - case 2: - switch_default_layer(_QWERTY); - break; - case 3: - switch_default_layer(_COLEMAK); - break; - - /* case 4: */ - /* switch_default_layer(_WORKMAN); */ - /* break; */ - /* case 5: */ - /* switch_default_layer(_NORMAN); */ - /* break; */ - - default: - switch_default_layer(_DVORAK); - break; - } -} - -// switch the default layer to another bepo based layer. -void switch_default_layer_on_bepo(int count) { - switch(count){ - case 1: - switch_default_layer(_DVORAK_BP); - break; - case 2: - switch_default_layer(_BEPO); - break; - default: - switch_default_layer(_DVORAK_BP); - break; - } -} - - -// tap to change the default layer. Distinguishes between layers that are based on -// a qwerty software keyboard and a bepo software keyboard. -// if shifted, choose layers based on the other software keyboard, otherwise choose only -// layers that work on the current software keyboard. -void tap_dance_default_os_layer_switch (tap_dance_state_t *state, void *user_data) { - //uint8_t shifted = (get_mods() & MOD_BIT(KC_LSFT|KC_RSFT)); - bool shifted = ( keyboard_report->mods & (MOD_BIT(KC_LSFT)|MOD_BIT(KC_RSFT)) ); - int qwerty = on_qwerty(); - - - // shifted, choose between layers on the other software keyboard - if(shifted){ - if (qwerty) - switch_default_layer_on_bepo(state->count); - else - switch_default_layer_on_qwerty(state->count); - - // not shifted, choose between layers on the same software keyboard - } else { - if (qwerty) - switch_default_layer_on_qwerty(state->count); - else - switch_default_layer_on_bepo(state->count); - } - - reset_tap_dance(state); -} - - -/* Return an integer that corresponds to what kind of tap dance should be executed. - * - * How to figure out tap dance state: interrupted and pressed. - * - * Interrupted: If the state of a dance dance is "interrupted", that means that another key has been hit - * under the tapping term. This is typically indicitive that you are trying to "tap" the key. - * - * Pressed: Whether or not the key is still being pressed. If this value is true, that means the tapping term - * has ended, but the key is still being pressed down. This generally means the key is being "held". - * - * One thing that is currenlty not possible with qmk software in regards to tap dance is to mimic the "permissive hold" - * feature. In general, advanced tap dances do not work well if they are used with commonly typed letters. - * For example "A". Tap dances are best used on non-letter keys that are not hit while typing letters. - * - * Good places to put an advanced tap dance: - * z,q,x,j,k,v,b, any function key, home/end, comma, semi-colon - * - * Criteria for "good placement" of a tap dance key: - * Not a key that is hit frequently in a sentence - * Not a key that is used frequently to double tap, for example 'tab' is often double tapped in a terminal, or - * in a web form. So 'tab' would be a poor choice for a tap dance. - * Letters used in common words as a double. For example 'p' in 'pepper'. If a tap dance function existed on the - * letter 'p', the word 'pepper' would be quite frustating to type. - * - * For the third point, there does exist the 'DOUBLE_SINGLE_TAP', however this is not fully tested - * - */ -int cur_dance (tap_dance_state_t *state) { - if (state->count == 1) { - if (state->interrupted || !state->pressed) return SINGLE_TAP; - //key has not been interrupted, but they key is still held. Means you want to send a 'HOLD'. - else return SINGLE_HOLD; - } - else if (state->count == 2) { - /* - * DOUBLE_SINGLE_TAP is to distinguish between typing "pepper", and actually wanting a double tap - * action when hitting 'pp'. Suggested use case for this return value is when you want to send two - * keystrokes of the key, and not the 'double tap' action/macro. - */ - if (state->interrupted) return DOUBLE_SINGLE_TAP; - else if (state->pressed) return DOUBLE_HOLD; - else return DOUBLE_TAP; - } - //Assumes no one is trying to type the same letter three times (at least not quickly). - //If your tap dance key is 'KC_W', and you want to type "www." quickly - then you will need to add - //an exception here to return a 'TRIPLE_SINGLE_TAP', and define that enum just like 'DOUBLE_SINGLE_TAP' - if (state->count == 3) { - if (state->interrupted || !state->pressed) return TRIPLE_TAP; - else return TRIPLE_HOLD; - } - else return 8; //magic number. At some point this method will expand to work for more presses -} - -//Tap Dance Definitions -tap_dance_action_t tap_dance_actions[] = { - //Tap once for Esc, twice for Caps Lock - [TD_ESC_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS), - [TD_TAB_BKTAB] = ACTION_TAP_DANCE_DOUBLE(KC_TAB, LSFT(KC_TAB)), - [TD_RIGHT_TAB] = ACTION_TAP_DANCE_DOUBLE(KC_RIGHT, KC_TAB), - [TD_LEFT_BACKTAB] = ACTION_TAP_DANCE_DOUBLE(KC_LEFT, LSFT(KC_TAB)), - [TD_UP_HOME] = ACTION_TAP_DANCE_DOUBLE(KC_UP, KC_HOME), - [TD_DOWN_END] = ACTION_TAP_DANCE_DOUBLE(KC_DOWN, KC_END), - [TD_MDIA_SYMB] = ACTION_TAP_DANCE_FN(tap_dance_layer_switch), - [TD_DVORAK_BEPO] = ACTION_TAP_DANCE_FN(tap_dance_df_bepo_layers_switch), - [TD_DEF_LAYER_SW] = ACTION_TAP_DANCE_FN(tap_dance_default_layer_switch), - [TD_DEF_OS_LAYER_SW] = ACTION_TAP_DANCE_FN(tap_dance_default_os_layer_switch), - [TD_HOME_END] = ACTION_TAP_DANCE_DOUBLE(KC_HOME, KC_END), - [TD_MOUSE_BTNS] = ACTION_TAP_DANCE_FN(tap_dance_mouse_btns) - -}; - -#endif diff --git a/users/ericgebhart/extensions/tap_dances.h b/users/ericgebhart/extensions/tap_dances.h deleted file mode 100755 index 745446756e..0000000000 --- a/users/ericgebhart/extensions/tap_dances.h +++ /dev/null @@ -1,19 +0,0 @@ -#pragma once -/* - Copyright 2018 Eric Gebhart - - 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 . -*/ - -#include USERSPACE_H diff --git a/users/ericgebhart/extensions/tap_hold.c b/users/ericgebhart/extensions/tap_hold.c deleted file mode 100644 index 041b961e11..0000000000 --- a/users/ericgebhart/extensions/tap_hold.c +++ /dev/null @@ -1,165 +0,0 @@ -/* - Copyright 2022 Eric Gebhart - - 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 . -*/ - -/* This is variations on custom tap hold functionality. It makes it easy */ -/* to maintain tap_hold keys and combinations. These combinations go into */ -/* the file "tap_hold.def". Here are two examples. */ -/* */ -/* This example is tap or tap for TAP_HOLD_TERM, It defines a key */ -/* KC_CCCV, which sends Control-c on tap, and Control-v on hold. */ -/* */ -/* TP_TPL(KC_CCCV, LCTL(KC_C), LCTL(KC_V)) */ -/* */ -/* This is an example of Open - Open and Close. */ -/* It defines a key, KC_OCPRN which when tapped gives an '(' and */ -/* when held gives '()' followed by a backarrow. */ -/* Which places the cursor between them.*/ -/* */ -/* OPEN_OCL(KC_OCPRN, KC_LPRN, KC_RPRN) */ -/* */ -/* To use this, add it to your src in rules.mk, and include */ -/* tap_hold.h in your code above process_record_user. */ -/* */ -/* Add a call like this to use it. */ -/* process_tap_hold_user(keycode, record); */ -/* */ -/* Note: You must add any custom keycodes to your keycodes enum */ -/* otherwise they will not exist. */ - - -#include USERSPACE_H -#include "stdint.h" -#include "tap_hold.h" -void update_smart_lock(uint16_t keycode); - - -void tap_taplong(uint16_t kc1, uint16_t kc2, keyrecord_t *record) { - if (record->event.pressed) { - tap_taplong_timer = timer_read(); - } else { - if (timer_elapsed(tap_taplong_timer) > TAP_HOLD_TERM) { - tap_code16(kc2); - } else { - tap_code16(kc1); - } - } -} - -void tap_sml(uint16_t kc1, uint16_t kc2, keyrecord_t *record) { - if (record->event.pressed) { - tap_taplong_timer = timer_read(); - } else { - if (timer_elapsed(tap_taplong_timer) > TAP_HOLD_TERM) { - update_smart_lock(kc2); - } else { - tap_code16(kc1); - } - } -} - -/* for (){}[]""''<>``. tap for open. Hold for open and close, ending inbetween. */ -/* Assumes a one character length. */ -void open_openclose(uint16_t kc1, uint16_t kc2, keyrecord_t *record) { - if (record->event.pressed) { - tap_taplong_timer = timer_read(); - }else{ - if (timer_elapsed(tap_taplong_timer) > TAP_HOLD_TERM) { - tap_code16(kc1); - tap_code16(kc2); - tap_code16(KC_LEFT); - - } else { - // is shifted - uint16_t mod_state = get_mods(); - if ((mod_state & MOD_MASK_SHIFT) || - (get_oneshot_mods() & MOD_MASK_SHIFT)){ - del_mods(MOD_MASK_SHIFT); - del_oneshot_mods(MOD_MASK_SHIFT); - - tap_code16(kc1); - tap_code16(kc1); - tap_code16(kc1); - - set_mods(mod_state); - }else{ - tap_code16(kc1); - } - } - } -} - -// open and open close for dead keys. -void open_openclose_not_dead(uint16_t kc1, uint16_t kc2, keyrecord_t *record) { - if (record->event.pressed) { - tap_taplong_timer = timer_read(); - }else{ - if (timer_elapsed(tap_taplong_timer) > TAP_HOLD_TERM) { - tap_code16(kc1); - tap_code16(KC_SPACE); - tap_code16(kc2); - tap_code16(KC_SPACE); - tap_code16(KC_LEFT); - } else { - // is shifted - give a triple - uint16_t mod_state = get_mods(); - if ((mod_state & MOD_MASK_SHIFT) || - (get_oneshot_mods() & MOD_MASK_SHIFT)){ - del_mods(MOD_MASK_SHIFT); - del_oneshot_mods(MOD_MASK_SHIFT); - - tap_code16(kc1); - tap_code16(KC_SPACE); - tap_code16(kc1); - tap_code16(KC_SPACE); - tap_code16(kc1); - tap_code16(KC_SPACE); - - set_mods(mod_state); - }else{ - tap_code16(kc1); - tap_code16(KC_SPACE); - } - } - } -} - -// macros for use in tap_hold.defs. -#define TP_TPL(KCKEY, KC01, KC02) \ - case KCKEY: \ - tap_taplong(KC01, KC02, record); \ - break; - -#define TP_SML(KCKEY, KC01, KC02) \ - case KCKEY: \ - tap_sml(KC01, KC02, record); \ - break; - -#define OPEN_OCL(KCKEY, KC01, KC02) \ - case KCKEY: \ - open_openclose(KC01, KC02, record); \ - break; - -#define OPEN_OCL_ND(KCKEY, KC01, KC02) \ - case KCKEY: \ - open_openclose_not_dead(KC01, KC02, record); \ - break; - -void process_tap_hold_user(uint16_t keycode, keyrecord_t *record) { - switch(keycode){ -#include "tap_hold.def" - } -} diff --git a/users/ericgebhart/extensions/tap_hold.h b/users/ericgebhart/extensions/tap_hold.h deleted file mode 100644 index e5b3c42d8a..0000000000 --- a/users/ericgebhart/extensions/tap_hold.h +++ /dev/null @@ -1,20 +0,0 @@ -#pragma once -/* - Copyright 2022 Eric Gebhart - - 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 . -*/ - -void process_tap_hold_user(uint16_t keycode, keyrecord_t* record); -uint16_t tap_taplong_timer; diff --git a/users/ericgebhart/extensions/unicode.c b/users/ericgebhart/extensions/unicode.c deleted file mode 100644 index fe44c69b1c..0000000000 --- a/users/ericgebhart/extensions/unicode.c +++ /dev/null @@ -1,34 +0,0 @@ -/* - Copyright 2018 Eric Gebhart - - 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 . -*/ -#include USERSPACE_H -#include "process_unicode_common.h" - -#undef UC_STR -#define UC_STR(KEYC, STRING) \ - case KEYC: \ - if (record->event.pressed) { \ - send_unicode_string(STRING); \ - } \ - break; - -void process_unicode_strs(uint16_t keycode, keyrecord_t *record){ -#if defined(UNICODE_ENABLE) && defined(SEND_UNICODE_ENABLE) - switch (keycode) { -#include "unicode.def" - } -#endif -} diff --git a/users/ericgebhart/extensions/unicode.h b/users/ericgebhart/extensions/unicode.h deleted file mode 100644 index eecf05d1bc..0000000000 --- a/users/ericgebhart/extensions/unicode.h +++ /dev/null @@ -1,24 +0,0 @@ -#pragma once -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ -// Custom one-or-more-shot implementation that does not rely on timers -// and persists across layer changes. Based on the users/callum implementation -// at https://github.com/callum-oakley/qmk_firmware/tree/master/users/callum -// make it easy to put unicode keys into process_record - - -void process_unicode_strs(uint16_t keycode, keyrecord_t *record); diff --git a/users/ericgebhart/keyboards/keyboards.h b/users/ericgebhart/keyboards/keyboards.h deleted file mode 100644 index 8a6371af5e..0000000000 --- a/users/ericgebhart/keyboards/keyboards.h +++ /dev/null @@ -1,115 +0,0 @@ -#pragma once -/* - Copyright 2018 Eric Gebhart - - 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 . -*/ - - -// Kyria -#ifdef KEYBOARD_splitkb_kyria -#define BASE Base_2x6_8_5 -#define BASEt6 Base_2x6_8_5t6 -#define TRANS Transient_2x6_8_5 -#define BASE_COLS_IN_OUT 5_6 // 5, 5_6, 6 -#endif - -// Corne -#ifdef KEYBOARD_crkbd -#define BASE Base_3x6_3 -#define BASEt6 Base_3x6_3t6 -#define TRANS Transient_3x6_3 -#define BASE_COLS_IN_OUT 5_6 // 5, 5_6, 6 -#endif - -// Ergodox ez. -#ifdef KEYBOARD_ergodox_ez -#define BASE Base_dox -#define BASEt6 Base_doxt6 -#define TRANS Transient_dox -#define BASE_COLS_IN_OUT 5_6 // 5, 5_6, 6 -// tell the keymap we want to specify number rows. -// 4x10 input instead 3x10. -#define BASE_NUMBER_ROW // turn on 4 row base templates. -#endif - -// XD75 -#ifdef KEYBOARD_xiudi_xd75 -#define BASE Base_5x15 -#define BASEt6 Base_5x15t6 -#define TRANS Transient_5x15 -#define BASE_COLS_IN_OUT 5_6 // 5, 5_6, 6 - -// tell the keymap we want to specify number rows. -// 4x10 input instead 3x10. -#define BASE_NUMBER_ROW // turn on 4 row base templates. -#endif - -// Viterbi -#ifdef KEYBOARD_keebio_viterbi -#define BASE Base_5x14 -#define BASEt6 Base_5x14t6 -#define TRANS Transient_5x14 -#define BASE_COLS_IN_OUT 5_6 // 5, 5_6, 6 - -// tell the keymap we want to specify number rows. -// 4x10 input instead 3x10. -#define BASE_NUMBER_ROW // turn on 4 row base templates. -#endif - -// Rebound -#ifdef KEYBOARD_montsinger_rebound -#define BASE Base_rebound -#define BASEt6 Base_reboundt6 -#define TRANS Rebound_transient -#define BASE_COLS_IN_OUT 5_6 // 5, 5_6, 6 -#endif - -// Kinesis -#if defined(KEYBOARD_kinesis_alvicstep) \ - || defined(KEYBOARD_kinesis_stapelberg) \ - || defined(KEYBOARD_kinesis_kint2pp) \ - || defined(KEYBOARD_kinesis_nguyenvietyen) \ - || defined(KEYBOARD_kinesis_kint36) \ - || defined(KEYBOARD_kinesis_kint41) \ - || defined(KEYBOARD_kinesis_kintlc) - -#undef LAYOUT_PVARG -#define LAYOUT_PVARG(...) LAYOUT_pretty(__VA_ARGS__) -// Base layers 4x10, so numbers are enabled, and a 3x10 for the keymap. -// Transient function layers are all 3x10. -#define BASE Base_4x6_4_6 -#define BASEt6 Base_4x6_4_6t6 -#define TRANS Transient_4x6_4_6 -#define BASE_COLS_IN_OUT 5_6 // 5, 5_6, 6 - -// tell the keymap we want to specify number rows. -// 4x10 input instead 3x10. -#define BASE_NUMBER_ROW // turn on 4 row base templates. -#endif - -// My Morpho Dactyl -#ifdef KEYBOARD_gebhart_morpho -#undef LAYOUT_PVARG -#define LAYOUT_PVARG(...) LAYOUT_split_4x6_5_8(__VA_ARGS__) - -#define BASE Base_4x6_5_8 -#define BASEt6 Base_4x6_5_8t6 -#define TRANS Transient_4x6_5_8 -#define BASE_COLS_IN_OUT 5_6 // 5, 5_6, 6 - -// tell the keymap we want to specify number rows. -// 4x10 input instead 3x10. -#define BASE_NUMBER_ROW // turn on 4 row base templates. -#endif diff --git a/users/ericgebhart/keyboards/layouts.h b/users/ericgebhart/keyboards/layouts.h deleted file mode 100644 index b77d5a3de6..0000000000 --- a/users/ericgebhart/keyboards/layouts.h +++ /dev/null @@ -1,771 +0,0 @@ -#pragma once -/* - Copyright 2018 Eric Gebhart - - 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 . -*/ - -#include "base_layers.h" -#include "mod_layer.h" -#include "edge_keys.h" -#include "thumbs.h" -#include QMK_KEYBOARD_H - -/******************************************************************/ -/* This is where I put my Keyboard layouts. */ -/* The mod layer can be modified in mod_layer.h */ -/* can be applied here. The physical shape of the keyboard is */ -/* also accounted for here. This makes it very simple to add a */ -/* new keyboard and reuse all of my layouts and layers */ -/* */ -/* With all of that in hand, we then create a LAYOUT wrapper */ -/* macro that takes a list of keys, to create a keyboard matrix */ -/* that fits the keyboard. Simple. */ -/* */ -/* The thumb keys, the bottom rows, etc. */ -/* */ -/* An attempt has been made to adapt the kinesis and ergodox */ -/* Thumb keys to the rectangular shapes of the xd75, viterbi, */ -/* and rebound. */ -/******************************************************************/ - -/******************************************************************/ -/* * The XD75 is a 5x15 Ortholinear matrix which means it has 3 */ -/* keys inbetween the usual left and right hand keys */ -/* * The Viterbi is a split 5x14 Ortholinear with 2 middle keys. */ -/* * The Ergodox is a split 5x14 Ortholinear with 2 middle keys, */ -/* thumbkeys. It is missing middle keys on (home) row 3. */ -/* * The Corne is a split 3x12 with 6 thumb keys. It has no */ -/* extra middle keys */ -/* * The Kinesis is 4x6 + 4 and 6 thumb keys. */ -/* * My Dactyl is 4x6 + 5 and 8 thumb keys. */ -/******************************************************************/ - - -/******************************************************************/ -/* In all cases these keyboards are defined in a matrix which is */ -/* a set of rows. Maybe like so, or not. */ -/* */ -/* -------------------------|------------------------ */ -/* | Left0 | Numbers L | mid|dle0 | numbers R | Right0 | */ -/* | Left1 | keys0-5 | mid|dle1 | Keys6-10 | Right1 | */ -/* | Left2 | keys11-15 | mid|dle2 | Keys16-20 | Right2 | */ -/* | Left3 | keys20-25 | mid|dle3 | Keys25-30 | Right3 | */ -/* | Row5L | Row5R | */ -/* | ThumbsL | ThumbsR | */ -/* -------------------------|------------------------ */ - -/* Generally speaking, the keys on the right and left don't change. */ -/* Neither does the bottom row or the thumbs. Frequently the numbers */ -/* row is identical across layers. Mostly, we want our Base layers to */ -/* be predctable. */ - - -// Since our quirky block definitions are basically a list of comma separated -// arguments, we need a wrapper in order for these definitions to be -// expanded before being used as arguments to the LAYOUT_xxx macro. -#if (!defined(LAYOUT) && defined(KEYMAP)) -#define LAYOUT KEYMAP -#endif - -// every keyboard has it's Layout. We start there and make a var args -// out of it. - -#define LVARG_ergodox(...) LAYOUT_ergodox(__VA_ARGS__) -#define LVARG_edox(...) LAYOUT_ergodox_pretty(__VA_ARGS__) -#define LAYOUT_VARG(...) LAYOUT(__VA_ARGS__) -#define LAYOUT_PVARG(...) LAYOUT_pretty(__VA_ARGS__) - -#define LVARG_4x12(...) LAYOUT_ortho_4x12(__VA_ARGS__) -#define LVARG_5x12(...) LAYOUT_ortho_5x12(__VA_ARGS__) -#define LVARG_5x14(...) LAYOUT_ortho_5x14(__VA_ARGS__) -#define LVARG_5x15(...) LAYOUT_ortho_5x15(__VA_ARGS__) - -/* - | Left | Numbers L | middle | numbers R | Right | - | Left | keys0-5 | middle | Keys6-10 | Right | - | Left | keys11-15 | middle | Keys16-20 | Right | - | Left | keys20-25 | middle | Keys25-30 | Right | - |Row5L Row5R | - |ThumbsL ThumbsR | -*/ - -/* Assuming that left, midddle, right, row5, and thumbs stay the same, */ -/* numbers, no numbers, numbers never change, whatever. */ -/* we can have a layout macro that takes a nice rectangle of keys. */ - - -/*Some keyboards need number rows, some don't. there is a setting for that */ -/* the keymap will give number rows if BASE_NUMBER_ROW is defined.*/ -/* in that case, the layout should take 4 rows of 10. */ -/* If all the layouts you might ever want would have the same top row,*/ -/* Then it could be defined like that here, and it could take 3x10.*/ -/* All layouts are relatively simple to make. */ -/* The ROW macros add a universal mod layer so that mods can be defined once */ -/* and used everywhere. No matter the keymap or layer. this allows actual maps */ -/* like dvorak, qwerty, colemak, beakl, etc., to be defined simply. */ - - -/* Additional, usage examples can be found in keyboards.*/ -/* crkbd/keymaps/ericgebhart */ -/* kinesis/keymaps/ericgebhart */ -/* ergodox_ez/keymaps/ericgebhart */ -/* keebio/viterbi/keymaps/ericgebhart */ -/* xiudi/xd75/keymaps/ericgebhart */ -/* montsinger/rebound/rev4/keymaps/ericgebhart */ - - - -/********************************************************************/ -/* xiudi/xd75 - Ortholinear 5x15 */ -/********************************************************************/ -/// These first two base layout templates take sets of 5 keys, left and right. -// Using 4 sets allows for changing the number row if you have one. -// if you never change the number row, then use 3 sets of left and right. -// and define the number row here. -#define Base_5x15( \ - K01, K02, K03, K04, K05, \ - K06, K07, K08, K09, K0A, \ - K11, K12, K13, K14, K15, \ - K16, K17, K18, K19, K1A, \ - K21, K22, K23, K24, K25, \ - K26, K27, K28, K29, K2A, \ - K31, K32, K33, K34, K35, \ - K36, K37, K38, K39, K3A) \ - LVARG_5x15( \ - MOD_ROW(ROW0L)(K01, K02, K03, K04, K05), \ - MAP_CHUNK(___3_MIDDLE_T), \ - MOD_ROW(ROW0R)(K06, K07, K08, K09, K0A), \ - \ - MOD_ROW(ROW1L)(K11, K12, K13, K14, K15), \ - MAP_CHUNK(___3_MIDDLE_1), \ - MOD_ROW(ROW1R)(K16, K17, K18, K19, K1A), \ - \ - MOD_ROW(ROW2L)(K21, K22, K23, K24, K25), \ - MAP_CHUNK(___3_MIDDLE_2), \ - MOD_ROW(ROW2R)(K26, K27, K28, K29, K2A), \ - \ - MOD_ROW(ROW3L)(K31, K32, K33, K34, K35), \ - MAP_CHUNK(___3_MIDDLE_3), \ - MOD_ROW(ROW3R)(K36, K37, K38, K39, K3A), \ - MAP_CHUNK(___15_BOTTOM) \ - ) - -#define Base_5x15t6( \ - K01, K02, K03, K04, K05, K06, \ - K07, K08, K09, K0A, K0B, K0C, \ - K11, K12, K13, K14, K15, K16, \ - K17, K18, K19, K1A, K1B, K1C, \ - K21, K22, K23, K24, K25, K26, \ - K27, K28, K29, K2A, K2B, K2C, \ - K31, K32, K33, K34, K35, K36, \ - K37, K38, K39, K3A, K3B, K3C) \ - LVARG_5x15( \ - MOD_ROW(ROW0L)(K01, K02, K03, K04, K05, K06), \ - MAP_CHUNK(___3_MIDDLE_T), \ - MOD_ROW(ROW0R)(K07, K08, K09, K0A, K0B, K0C), \ - MOD_ROW(ROW1L)(K11, K12, K13, K14, K15, K16), \ - MAP_CHUNK(___3_MIDDLE_1), \ - MOD_ROW(ROW1R)(K17, K18, K19, K1A, K1B, K1C), \ - MOD_ROW(ROW2L)(K21, K22, K23, K24, K25, K26), \ - MAP_CHUNK(___3_MIDDLE_2), \ - MOD_ROW(ROW2R)(K27, K28, K29, K2A, K2B, K2C), \ - MOD_ROW(ROW3L)(K31, K32, K33, K34, K35, K36), \ - MAP_CHUNK(___3_MIDDLE_3), \ - MOD_ROW(ROW3R)(K37, K38, K39, K3A, K3B, K3C), \ - MAP_CHUNK(___15_BOTTOM) \ - ) - -// 4 rows of 12. 3 columns transparent in the middle. -#define Transient_5x15( \ - K01, K02, K03, K04, K05, \ - K07, K08, K09, K0A, K0B, \ - K11, K12, K13, K14, K15, \ - K17, K18, K19, K1A, K1B, \ - K21, K22, K23, K24, K25, \ - K27, K28, K29, K2A, K2B \ - ) \ - LVARG_5x15( \ - ___15___, \ - ___, K01, K02, K03, K04, K05, \ - ___3___, \ - K07, K08, K09, K0A, K0B, ___, \ - ___, K11, K12, K13, K14, K15, \ - ___3___, \ - K17, K18, K19, K1A, K1B, ___, \ - ___, K21, K22, K23, K24, K25, \ - ___3___, \ - K27, K28, K29, K2A, K2B, ___, \ - MAP_CHUNK(___15_BOTTOM) \ - ) \ - -/********************************************************************/ - - -/********************************************************************/ -/* viterbi - Ortholinear 5x14 */ -/********************************************************************/ -#define Base_5x14( \ - K01, K02, K03, K04, K05, \ - K06, K07, K08, K09, K0A, \ - K11, K12, K13, K14, K15, \ - K16, K17, K18, K19, K1A, \ - K21, K22, K23, K24, K25, \ - K26, K27, K28, K29, K2A, \ - K31, K32, K33, K34, K35, \ - K36, K37, K38, K39, K3A) \ - LVARG_5x14( \ - MOD_ROW(ROW0L)(K01, K02, K03, K04, K05), \ - MAP_CHUNK(___2_MIDDLE_T), \ - MOD_ROW(ROW0R)(K06, K07, K08, K09, K0A), \ - \ - MOD_ROW(ROW1L)(K11, K12, K13, K14, K15), \ - MAP_CHUNK(___2_MIDDLE_1), \ - MOD_ROW(ROW1R)(K16, K17, K18, K19, K1A), \ - \ - MOD_ROW(ROW2L)(K21, K22, K23, K24, K25), \ - MAP_CHUNK(___2_MIDDLE_2), \ - MOD_ROW(ROW2R)(K26, K27, K28, K29, K2A), \ - \ - MOD_ROW(ROW3L)(K31, K32, K33, K34, K35), \ - MAP_CHUNK(___2_MIDDLE_3), \ - MOD_ROW(ROW3R)(K36, K37, K38, K39, K3A), \ - MAP_CHUNK(___14_BOTTOM) \ - ) -#define Base_5x14t6( \ - K01, K02, K03, K04, K05, K06, \ - K07, K08, K09, K0A, K0B, K0C, \ - K11, K12, K13, K14, K15, K16, \ - K17, K18, K19, K1A, K1B, K1C, \ - K21, K22, K23, K24, K25, K26, \ - K27, K28, K29, K2A, K2B, K2C, \ - K31, K32, K33, K34, K35, K36, \ - K37, K38, K39, K3A, K3B, K3C) \ - LVARG_5x15( \ - MOD_ROW(ROW0L)(K01, K02, K03, K04, K05, K06), \ - MAP_CHUNK(___2_MIDDLE_T), \ - MOD_ROW(ROW0R)(K07, K08, K09, K0A, K0B, K0C), \ - MOD_ROW(ROW1L)(K11, K12, K13, K14, K15, K16), \ - MAP_CHUNK(___2_MIDDLE_1), \ - MOD_ROW(ROW1R)(K17, K18, K19, K1A, K1B, K1C), \ - MOD_ROW(ROW2L)(K21, K22, K23, K24, K25, K26), \ - MAP_CHUNK(___2_MIDDLE_2), \ - MOD_ROW(ROW2R)(K27, K28, K29, K2A, K2B, K2C), \ - MOD_ROW(ROW3L)(K31, K32, K33, K34, K35, K36), \ - MAP_CHUNK(___2_MIDDLE_3), \ - MOD_ROW(ROW3R)(K37, K38, K39, K3A, K3B, K3C), \ - MAP_CHUNK(___14_BOTTOM) \ - ) - -// 4 rows of 12. 2 columns transparent in the middle. -#define Transient_5x14( \ - K01, K02, K03, K04, K05, \ - K07, K08, K09, K0A, K0B, \ - K11, K12, K13, K14, K15, \ - K17, K18, K19, K1A, K1B, \ - K21, K22, K23, K24, K25, \ - K27, K28, K29, K2A, K2B \ - ) \ - LVARG_5x14( \ - ___14___, \ - ___, K01, K02, K03, K04, K05, \ - ___2___, \ - K07, K08, K09, K0A, K0B, ___, \ - \ - ___, K11, K12, K13, K14, K15, \ - ___2___, \ - K17, K18, K19, K1A, K1B, ___, \ - \ - ___, K21, K22, K23, K24, K25, \ - ___2___, \ - K27, K28, K29, K2A, K2B, ___, \ - MAP_CHUNK(___14_BOTTOM) \ - ) \ - -/********************************************************************/ -/* Ortholinear 4x12 */ -/********************************************************************/ -#define LAYOUT_4x12_base( \ - K01, K02, K03, K04, K05, \ - K06, K07, K08, K09, K0A, \ - K11, K12, K13, K14, K15, \ - K16, K17, K18, K19, K1A, \ - K21, K22, K23, K24, K25, \ - K26, K27, K28, K29, K2A \ - ) \ - LVARG_4x12( \ - MOD_CORE_3x5(K01, K02, K03, K04, K05, \ - K06, K07, K08, K09, K0A, \ - K11, K12, K13, K14, K15, \ - K16, K17, K18, K19, K1A, \ - K21, K22, K23, K24, K25, \ - K26, K27, K28, K29, K2A), \ - ___12_BOTTOM___ \ - ) - -// Just for bepo because it's a 3x6 matrix on each side. -// So 3 pairs of 6 keys, left and right. - -// takes 3 makes 4 rows of 12. -#define LAYOUT_4x12_transient( \ - K01, K02, K03, K04, K05, K06, \ - K07, K08, K09, K0A, K0B, K0C, \ - K11, K12, K13, K14, K15, K16, \ - K17, K18, K19, K1A, K1B, K1C, \ - K21, K22, K23, K24, K25, K26, \ - K27, K28, K29, K2A, K2B, K2C \ - ) \ - LVARG_4x12( \ - K01, K02, K03, K04, K05, K06, \ - K07, K08, K09, K0A, K0B, K0C, \ - K11, K12, K13, K14, K15, K16, \ - K17, K18, K19, K1A, K1B, K1C, \ - K21, K22, K23, K24, K25, K26, \ - K27, K28, K29, K2A, K2B, K2C, \ - ___12_BOTTOM___ \ - ) \ - -/********************************************************************/ -/* CRKBD Corne or any other 3x5/6 with 3 thumbs on each side. */ -/* The Corne has 3x6 matrix on both sides with 6 thumbs total */ -/* This Macro takes 2x3x5 and gives it pinkies, and thumbs. */ -/* Arg chunks are in the middle with the passthrough modifiers as */ -/* needed. Sama Sama apres cette fois. */ -/********************************************************************/ - -#define Base_3x6_3( \ - K01, K02, K03, K04, K05, \ - K06, K07, K08, K09, K0A, \ - K11, K12, K13, K14, K15, \ - K16, K17, K18, K19, K1A, \ - K21, K22, K23, K24, K25, \ - K26, K27, K28, K29, K2A) \ - LAYOUT_VARG( \ - MOD_CORE_3x5(K01, K02, K03, K04, K05, \ - K06, K07, K08, K09, K0A, \ - K11, K12, K13, K14, K15, \ - K16, K17, K18, K19, K1A, \ - K21, K22, K23, K24, K25, \ - K26, K27, K28, K29, K2A), \ - ___6_ERGO_THUMBS___ \ - ) - -#define Base_3x6_3t6( \ - K01, K02, K03, K04, K05, K06, \ - K07, K08, K09, K0A, K0B, K0C, \ - K11, K12, K13, K14, K15, K16, \ - K17, K18, K19, K1A, K1B, K1C, \ - K21, K22, K23, K24, K25, K26, \ - K27, K28, K29, K2A, K2B, K2C) \ - LAYOUT_VARG( \ - MOD_CORE_3x6( \ - K01, K02, K03, K04, K05, K06, \ - K07, K08, K09, K0A, K0B, K0C, \ - K11, K12, K13, K14, K15, K16, \ - K17, K18, K19, K1A, K1B, K1C, \ - K21, K22, K23, K24, K25, K26, \ - K27, K28, K29, K2A, K2B, K2C), \ - ___6_ERGO_THUMBS___ \ - ) - - // All we really need is to add the see through thumbs to the end. -#define Transient_3x6_3( \ - K01, K02, K03, K04, K05, \ - K07, K08, K09, K0A, K0B, \ - K11, K12, K13, K14, K15, \ - K17, K18, K19, K1A, K1B, \ - K21, K22, K23, K24, K25, \ - K27, K28, K29, K2A, K2B \ - ) \ - LAYOUT_VARG( \ - ___, K01, K02, K03, K04, K05, \ - K07, K08, K09, K0A, K0B, ___, \ - ___, K11, K12, K13, K14, K15, \ - K17, K18, K19, K1A, K1B, ___, \ - ___, K21, K22, K23, K24, K25, \ - K27, K28, K29, K2A, K2B, ___, \ - ___6_ERGO_THUMBS___ \ - ) - -//___6_ERGO_THUMBS___ - -/********************************************************************/ -/* Kinesis*/ -/********************************************************************/ -// A 4x6 on each side, with a 4 column fifth row, and 6 thumbs on -// each side. - 4x6_4_6. -// Then a giant row up top, 9 keys on each side, for function keys. -#define Base_4x6_4_6( \ - K01, K02, K03, K04, K05, \ - K06, K07, K08, K09, K0A, \ - K11, K12, K13, K14, K15, \ - K16, K17, K18, K19, K1A, \ - K21, K22, K23, K24, K25, \ - K26, K27, K28, K29, K2A, \ - K31, K32, K33, K34, K35, \ - K36, K37, K38, K39, K3A \ - ) \ - LAYOUT_PVARG( \ - ___KINTFUNC_L___, ___KINTFUNC_R___, \ - MOD_CORE_4x5(K01, K02, K03, K04, K05, \ - K06, K07, K08, K09, K0A, \ - K11, K12, K13, K14, K15, \ - K16, K17, K18, K19, K1A, \ - K21, K22, K23, K24, K25, \ - K26, K27, K28, K29, K2A, \ - K31, K32, K33, K34, K35, \ - K36, K37, K38, K39, K3A), \ - MAP_CHUNK(___4_BOTTOM_LEFT), \ - MAP_CHUNK(___4_BOTTOM_RIGHT), \ - MAP_CHUNK(___12_DOX_ALL_THUMBS) \ - ) - - -#define Base_4x6_4_6t6( \ - K01, K02, K03, K04, K05, K06, \ - K07, K08, K09, K0A, K0B, K0C, \ - K11, K12, K13, K14, K15, K16, \ - K17, K18, K19, K1A, K1B, K1C, \ - K21, K22, K23, K24, K25, K26, \ - K27, K28, K29, K2A, K2B, K2C, \ - K31, K32, K33, K34, K35, K36, \ - K37, K38, K39, K3A, K3B, K3C) \ - LAYOUT_PVARG( \ - MOD_CORE_4x6( \ - K01, K02, K03, K04, K05, K06, \ - K07, K08, K09, K0A, K0B, K0C, \ - K11, K12, K13, K14, K15, K16, \ - K17, K18, K19, K1A, K1B, K1C, \ - K21, K22, K23, K24, K25, K26, \ - K27, K28, K29, K2A, K2B, K2C, \ - K31, K32, K33, K34, K35, K36, \ - K37, K38, K39, K3A, K3B, K3C), \ - MAP_CHUNK(___4_BOTTOM_LEFT), \ - MAP_CHUNK(___4_BOTTOM_RIGHT), \ - MAP_CHUNK(___12_DOX_ALL_THUMBS) \ - ) - -#define Transient_4x6_4_6( \ - K01, K02, K03, K04, K05, \ - K07, K08, K09, K0A, K0B, \ - K11, K12, K13, K14, K15, \ - K17, K18, K19, K1A, K1B, \ - K21, K22, K23, K24, K25, \ - K27, K28, K29, K2A, K2B \ - ) \ - LAYOUT_PVARG( \ - ___12___, ___6___, \ - ___12___, \ - ___, K01, K02, K03, K04, K05, \ - K07, K08, K09, K0A, K0B, ___, \ - ___, K11, K12, K13, K14, K15, \ - K17, K18, K19, K1A, K1B, ___, \ - ___, K21, K22, K23, K24, K25, \ - K27, K28, K29, K2A, K2B, ___, \ - ___4___, ___4___, \ - MAP_CHUNK(___12_DOX_ALL_THUMBS) \ - ) - -/* ___KINTFUNC_L___, ___KINTFUNC_R___, \ */ - -/* This keyboard is a split, 4x6 + a row of 5 and a thumb cluster of 8. */ -/* So We need Base_4x6_5_8 As a layout template to add mods, and fill */ -/* out the perimeter keys of the keyboard. Perimeter keys being the */ -/* number row, outside pinky keys, the 5th row, and thumbs. */ - -/********************************************************************/ -/* Dactyl with 8 thumb keys*/ -/********************************************************************/ -// Basically an ergodox ez without the 3 pairs of middle keys. -// electrically 7 columns in the 5th row. 6 in the rest. -// Left, right, bottom, and thumbs all stay the same. - -#define Base_4x6_5_8( \ - K01, K02, K03, K04, K05, \ - K06, K07, K08, K09, K0A, \ - K11, K12, K13, K14, K15, \ - K16, K17, K18, K19, K1A, \ - K21, K22, K23, K24, K25, \ - K26, K27, K28, K29, K2A, \ - K31, K32, K33, K34, K35, \ - K36, K37, K38, K39, K3A \ - ) \ - LAYOUT_PVARG( \ - MOD_CORE_4x5(K01, K02, K03, K04, K05, \ - K06, K07, K08, K09, K0A, \ - K11, K12, K13, K14, K15, \ - K16, K17, K18, K19, K1A, \ - K21, K22, K23, K24, K25, \ - K26, K27, K28, K29, K2A, \ - K31, K32, K33, K34, K35, \ - K36, K37, K38, K39, K3A \ - ), \ - MAP_CHUNK(___5_BOTTOM_LEFT), MAP_CHUNK(___5_BOTTOM_RIGHT), \ - MAP_CHUNK(___16_ALL_THUMBSa) \ - ) - -#define Base_4x6_5_8t6( \ - K01, K02, K03, K04, K05, K06, \ - K07, K08, K09, K0A, K0B, K0C, \ - K11, K12, K13, K14, K15, K16, \ - K17, K18, K19, K1A, K1B, K1C, \ - K21, K22, K23, K24, K25, K26, \ - K27, K28, K29, K2A, K2B, K2C, \ - K31, K32, K33, K34, K35, K36, \ - K37, K38, K39, K3A, K3B, K3C) \ - LAYOUT_PVARG( \ - MOD_CORE_4x6( \ - K01, K02, K03, K04, K05, K06, \ - K07, K08, K09, K0A, K0B, K0C, \ - K11, K12, K13, K14, K15, K16, \ - K17, K18, K19, K1A, K1B, K1C, \ - K21, K22, K23, K24, K25, K26, \ - K27, K28, K29, K2A, K2B, K2C, \ - K31, K32, K33, K34, K35, K36, \ - K37, K38, K39, K3A, K3B, K3C), \ - MAP_CHUNK(___5_BOTTOM_LEFT), MAP_CHUNK(___5_BOTTOM_RIGHT), \ - MAP_CHUNK(___16_ALL_THUMBSa) \ - ) - - -// so far no need for mods on the transient layers. -// switching to 3x5 transients. 10 column defines. -// I like 3x10 maps even on big keyboards. -# define Transient_4x6_5_8( \ - K01, K02, K03, K04, K05, \ - K06, K07, K08, K09, K0A, \ - K11, K12, K13, K14, K15, \ - K16, K17, K18, K19, K1A, \ - K21, K22, K23, K24, K25, \ - K26, K27, K28, K29, K2A \ - ) \ - LAYOUT_PVARG( \ - ___6___, ___6___, \ - ___, K01, K02, K03, K04, K05, \ - K06, K07, K08, K09, K0A, ___, \ - ___, K11, K12, K13, K14, K15, \ - K16, K17, K18, K19, K1A, ___, \ - ___, K21, K22, K23, K24, K25, \ - K26, K27, K28, K29, K2A, ___, \ - ___5___, ___5___, \ - MAP_CHUNK(___16_ALL_THUMBSa) \ - ) - -/********************************************************************/ -/* Ergodox EZ */ -/********************************************************************/ -// This one is is set up to pass in the number row. -// Beakl and bepo both change the number row. -// Left, middle, right, bottom, and thumbs all stay the same. -#define Base_dox( \ - K01, K02, K03, K04, K05, \ - K06, K07, K08, K09, K0A, \ - K11, K12, K13, K14, K15, \ - K16, K17, K18, K19, K1A, \ - K21, K22, K23, K24, K25, \ - K26, K27, K28, K29, K2A, \ - K31, K32, K33, K34, K35, \ - K36, K37, K38, K39, K3A \ - ) \ - LVARG_edox( \ - MOD_ROW(ROW0L)(K01, K02, K03, K04, K05), \ - MAP_CHUNK(___2_MIDDLE_1), \ - MOD_ROW(ROW0R)(K06, K07, K08, K09, K0A), \ - \ - MOD_ROW(ROW1L)(K11, K12, K13, K14, K15), \ - MAP_CHUNK(___2_MIDDLE_2), \ - MOD_ROW(ROW1R)(K16, K17, K18, K19, K1A), \ - \ - MOD_ROW(ROW2L)(K21, K22, K23, K24, K25), \ - MOD_ROW(ROW2R)(K26, K27, K28, K29, K2A), \ - \ - MOD_ROW(ROW3L)(K31, K32, K33, K34, K35), \ - MAP_CHUNK(___2_MIDDLE_3), \ - MOD_ROW(ROW3R)(K36, K37, K38, K39, K3A), \ - MAP_CHUNK(___5_BOTTOM_LEFT), MAP_CHUNK(___5_BOTTOM_RIGHT), \ - MAP_CHUNK(___12_DOX_ALL_THUMBS) \ - ) - -#define Base_doxt6( \ - K01, K02, K03, K04, K05, K06, \ - K07, K08, K09, K0A, K0B, K0C, \ - K11, K12, K13, K14, K15, K16, \ - K17, K18, K19, K1A, K1B, K1C, \ - K21, K22, K23, K24, K25, K26, \ - K27, K28, K29, K2A, K2B, K2C, \ - K31, K32, K33, K34, K35, K36, \ - K37, K38, K39, K3A, K3B, K3C) \ - LVARG_edox(MOD_ROW(ROW0L)(K01, K02, K03, K04, K05, K06), \ - MAP_CHUNK(___2_MIDDLE_1), \ - MOD_ROW(ROW0R)(K07, K08, K09, K0A, K0B, K0C), \ - MOD_ROW(ROW1L)(K11, K12, K13, K14, K15, K16), \ - MAP_CHUNK(___2_MIDDLE_2), \ - MOD_ROW(ROW1R)(K17, K18, K19, K1A, K1B, K1C), \ - MOD_ROW(ROW2L)(K21, K22, K23, K24, K25, K26), \ - MOD_ROW(ROW2R)(K27, K28, K29, K2A, K2B, K2C), \ - MOD_ROW(ROW3L)(K31, K32, K33, K34, K35, K36), \ - MAP_CHUNK(___2_MIDDLE_3), \ - MOD_ROW(ROW3R)(K37, K38, K39, K3A, K3B, K3C), \ - MAP_CHUNK(___5_BOTTOM_LEFT), \ - MAP_CHUNK(___5_BOTTOM_RIGHT), \ - MAP_CHUNK(___12_DOX_ALL_THUMBS)) - -#define Transient_dox( \ - K01, K02, K03, K04, K05, \ - K07, K08, K09, K0A, K0B, \ - K11, K12, K13, K14, K15, \ - K17, K18, K19, K1A, K1B, \ - K21, K22, K23, K24, K25, \ - K27, K28, K29, K2A, K2B) \ - LVARG_edox( \ - ___14___, \ - ___, K01, K02, K03, K04, K05, \ - ___2___, \ - K07, K08, K09, K0A, K0B, ___, \ - ___, K11, K12, K13, K14, K15, \ - K17, K18, K19, K1A, K1B, ___, \ - ___, K21, K22, K23, K24, K25, \ - ___2___, \ - K27, K28, K29, K2A, K2B, ___, \ - ___5___, ___5___, \ - MAP_CHUNK(___12_DOX_ALL_THUMBS) \ - ) - - -/********************************************************************/ -/* Rebound 4 rows, 1x12, 3x13 */ -/********************************************************************/ -#define LVARG_rebound(...) LAYOUT_all(__VA_ARGS__) -#define Base_rebound( \ - K01, K02, K03, K04, K05, \ - K06, K07, K08, K09, K0A, \ - K11, K12, K13, K14, K15, \ - K16, K17, K18, K19, K1A, \ - K21, K22, K23, K24, K25, \ - K26, K27, K28, K29, K2A \ - ) \ - LVARG_rebound( \ - MOD_ROW(ROW1L)(K01, K02, K03, K04, K05), \ - MOD_ROW(ROW1R)(K06, K07, K08, K09, K0A), \ - \ - MOD_ROW(ROW2L)(K11, K12, K13, K14, K15), \ - KC_CCCV, \ - MOD_ROW(ROW2R)(K16, K17, K18, K19, K1A), \ - \ - MOD_ROW(ROW3L)(K21, K22, K23, K24, K25), \ - MO_ADJUST, \ - MOD_ROW(ROW3R)(K26, K27, K28, K29, K2A), \ - MAP_CHUNK(___13_BOTTOM) \ - ) -#define Base_reboundt6( \ - K01, K02, K03, K04, K05, K06, \ - K07, K08, K09, K0A, K0B, K0C, \ - K11, K12, K13, K14, K15, K16, \ - K17, K18, K19, K1A, K1B, K1C, \ - K21, K22, K23, K24, K25, K26, \ - K27, K28, K29, K2A, K2B, K2C \ - ) \ - LVARG_rebound( \ - MOD_ROW(ROW1L)(K01, K02, K03, K04, K05, K06), \ - MOD_ROW(ROW1R)(K07, K08, K09, K0A, K0B, K0C), \ - MOD_ROW(ROW2L)(K11, K12, K13, K14, K15, K16), \ - KC_CCCV, \ - MOD_ROW(ROW2R)(K17, K18, K19, K1A, K1B, K1C), \ - MOD_ROW(ROW3L)(K21, K22, K23, K24, K25, K26), \ - MO_ADJUST, \ - MOD_ROW(ROW3R)(K27, K28, K29, K2A, K2B, K2C), \ - MAP_CHUNK(___13_BOTTOM) \ - ) - -#define Rebound_transient( \ - K01, K02, K03, K04, K05, \ - K07, K08, K09, K0A, K0B, \ - K11, K12, K13, K14, K15, \ - K17, K18, K19, K1A, K1B, \ - K21, K22, K23, K24, K25, \ - K27, K28, K29, K2A, K2B \ - ) \ - LVARG_rebound( \ - ___, K01, K02, K03, K04, K05, \ - K07, K08, K09, K0A, K0B, ___, \ - ___, K11, K12, K13, K14, K15, \ - ___, \ - K17, K18, K19, K1A, K1B, ___, \ - ___, K21, K22, K23, K24, K25, \ - ___, \ - K27, K28, K29, K2A, K2B, ___, \ - MAP_CHUNK(___13_BOTTOM) \ - ) - -/********************************************************************/ -/* Kyria or any other 3x5/6 with 4 keys in the middle of the last */ -/* Row. Followed by 5 thumb keys on each side. 7 thumb keys total. */ -/********************************************************************/ -#define Base_2x6_8_5( \ - K01, K02, K03, K04, K05, \ - K06, K07, K08, K09, K0A, \ - K11, K12, K13, K14, K15, \ - K16, K17, K18, K19, K1A, \ - K21, K22, K23, K24, K25, \ - K26, K27, K28, K29, K2A) \ - LAYOUT_VARG( \ - MOD_ROW(ROW1L)(K01, K02, K03, K04, K05), \ - MOD_ROW(ROW1R)(K06, K07, K08, K09, K0A), \ - \ - MOD_ROW(ROW2L)(K11, K12, K13, K14, K15), \ - MOD_ROW(ROW2R)(K16, K17, K18, K19, K1A), \ - \ - MOD_ROW(ROW3L)(K21, K22, K23, K24, K25), \ - MAP_CHUNK(___4_THUMBS), \ - MOD_ROW(ROW3R)(K26, K27, K28, K29, K2A), \ - MAP_CHUNK(___10_ERGO_THUMBS) \ - ) - -#define Base_2x6_8_5t6( \ - K01, K02, K03, K04, K05, K06, \ - K07, K08, K09, K0A, K0B, K0C, \ - K11, K12, K13, K14, K15, K16, \ - K17, K18, K19, K1A, K1B, K1C, \ - K21, K22, K23, K24, K25, K26, \ - K27, K28, K29, K2A, K2B, K2C) \ - LAYOUT_VARG( \ - MOD_ROW(ROW1L)(K01, K02, K03, K04, K05, K06), \ - MOD_ROW(ROW1R)(K07, K08, K09, K0A, K0B, K0C), \ - MOD_ROW(ROW2L)(K11, K12, K13, K14, K15, K16), \ - MOD_ROW(ROW2R)(K17, K18, K19, K1A, K1B, K1C), \ - MOD_ROW(ROW3L)(K21, K22, K23, K24, K25, K26), \ - MAP_CHUNK(___4_THUMBS), \ - MOD_ROW(ROW3R)(K27, K28, K29, K2A, K2B, K2C), \ - MAP_CHUNK(___10_ERGO_THUMBS) \ - ) - -// All we really need is to add the see through thumbs to the end. -#define Transient_2x6_8_5( \ - K01, K02, K03, K04, K05, \ - K07, K08, K09, K0A, K0B, \ - K11, K12, K13, K14, K15, \ - K17, K18, K19, K1A, K1B, \ - K21, K22, K23, K24, K25, \ - K27, K28, K29, K2A, K2B \ - ) \ - LAYOUT_VARG( \ - ___, K01, K02, K03, K04, K05, \ - K07, K08, K09, K0A, K0B, ___, \ - ___, K11, K12, K13, K14, K15, \ - K17, K18, K19, K1A, K1B, ___, \ - ___, K21, K22, K23, K24, K25, \ - ___4___, \ - K27, K28, K29, K2A, K2B, ___, \ - MAP_CHUNK(___10_ERGO_THUMBS) \ - ) diff --git a/users/ericgebhart/keymap/keymap.c b/users/ericgebhart/keymap/keymap.c deleted file mode 100644 index bee8538e26..0000000000 --- a/users/ericgebhart/keymap/keymap.c +++ /dev/null @@ -1,142 +0,0 @@ -/* - Copyright 2022 Eric Gebhart - - 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 . -*/ - -/* This is my keymap. Enable the layers you want in config.h. */ - -#include QMK_KEYBOARD_H -#include "ericgebhart.h" -#include "layouts.h" - -#include "keyboards.h" - -// set up the wrapper macros. -#define BASE_LAYER(NAME, ...) [NAME] = BASE(__VA_ARGS__) -#define BASE_LAYERt6(NAME, ...) [NAME] = BASEt6(__VA_ARGS__) -#define T_LAYER(LNAME, ...) [LNAME] = TRANS(__VA_ARGS__) - - -// One that takes 5 and one that takes 6 for bepo and other big maps -// that need 3x12 instead of 3x10. -#ifdef BASE_NUMBER_ROW -#define B_LAYER(LNAME, NUMS, LAYOUT) BASE_LAYER(LNAME, NUMS, LAYOUT) -#define B_LAYERt6(LNAME, NUMS, LAYOUT) BASE_LAYERt6(LNAME, NUMS, LAYOUT) -#else -// if there is no number row, don't give it one. -#define B_LAYER(LNAME, NUMS, LAYOUT) BASE_LAYER(LNAME, LAYOUT) -#define B_LAYERt6(LNAME, NUMS, LAYOUT) BASE_LAYERt6(LNAME, LAYOUT) -#endif - -// Find alt local key definitions. -// DV for dvorak/qwerty maps on bepo. -// BK, BKW for beakl maps on en-qwerty and bepo. -// BKW is automatic in map_beakl.h -#define ALT_TARGET_IS NONE // NONE, DV=dvorak, BK=Beakl, BK2, BKW=Beaklwi. - - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - // Default lang, Base layers -#include "map_dvorak.h" -#include "map_maks.h" -#include "map_qwerty.h" -#include "map_beakl.h" -#include "map_alt.h" -#include "map_gap.h" -#include "map_carpalx.h" -#include "map_hd.h" -#include "map_bepo.h" - - // create a set of layers for a second locale. -#ifdef SECOND_LOCALE -#undef LANG_IS -#define LANG_IS SECOND_LOCALE - - // changes alt target for us, because both en-qwerty and fr-bepo - // need a beakl alt target. -#include "map_beakl.h" - - // Qwerty based layers. Need a DV alt target to get the right shifted keys. -#undef ALT_TARGET_IS -#define ALT_TARGET_IS DV // NONE, DV = dvorak, BK=Beakl, BKW=Beaklwi. - -#include "map_dvorak.h" -#include "map_maks.h" -#include "map_qwerty.h" -#include "map_alt.h" -#include "map_gap.h" -#include "map_carpalx.h" -#include "map_hd.h" - -#undef ALT_TARGET_IS -#define ALT_TARGET_IS NONE // NONE, DV = dvorak, BK=Beakl, BKW=Beaklwi. - -#include "map_bepo.h" - -#undef LANG_IS -#define LANG_IS DEFAULT_LANG -#endif // bepo - - -// SYMBOL LAYER -#include "map_symbols.h" - -#ifdef SECOND_LOCALE -#undef LANG_IS -#define LANG_IS SECOND_LOCALE - -#include "map_symbols.h" - -#undef LANG_IS -#define LANG_IS DEFAULT_LANG -#endif - - - // KEYPAD LAYER -#include "map_keypads.h" - -#ifdef SECOND_LOCALE -#undef LANG_IS -#define LANG_IS SECOND_LOCALE - -#include "map_keypads.h" - -#undef LANG_IS -#define LANG_IS DEFAULT_LANG -#endif - - -// TOPROWS LAYER -#include "map_toprows.h" - -#include "map_accented.h" - -#ifdef SECOND_LOCALE -#undef LANG_IS -#define LANG_IS SECOND_LOCALE - -#include "map_toprows.h" - -#include "map_accented.h" - -#undef LANG_IS -#define LANG_IS EN -#endif - -// functional non language based layers. -#include "map_funcs.h" - -}; diff --git a/users/ericgebhart/keymap/map_accented.h b/users/ericgebhart/keymap/map_accented.h deleted file mode 100644 index 98ff8a34f1..0000000000 --- a/users/ericgebhart/keymap/map_accented.h +++ /dev/null @@ -1,26 +0,0 @@ -/* - Copyright 2022 Eric Gebhart - - 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 . -*/ -// Accented character and dead key layers. -#ifdef ACCENTS_LAYER_ENABLE - T_LAYER(LANG_N(_ACCENTS), ___ACCENTS___), -#endif -#ifdef MORTE_LAYER_ENABLE - T_LAYER(LANG_N(_MORTE), ___MORTE___), -#endif -#ifdef ACCENTS_MORTE_LAYER_ENABLE - T_LAYER(LANG_N(_ACCENTS_MORTE), ___ACCENTS_MORTE___), -#endif diff --git a/users/ericgebhart/keymap/map_alt.h b/users/ericgebhart/keymap/map_alt.h deleted file mode 100644 index 5fb0a12135..0000000000 --- a/users/ericgebhart/keymap/map_alt.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - Copyright 2022 Eric Gebhart - - 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 . -*/ - -#ifdef MALTRON_LAYER_ENABLE -#undef THUMBS_ARE -#define THUMBS_ARE MALTRON_LTR_THUMBS_ARE -#undef THUMB_LETTER -#define THUMB_LETTER LANG_KC(_E) - B_LAYER(LANG_N(_MALTRON), ___10_NUMBERS___, ___MALTRON___), -#undef THUMBS_ARE -#define THUMBS_ARE DEFAULT_THUMBS -#undef THUMB_LETTER -#endif - - - -#ifdef RSTHD_LAYER_ENABLE -#undef THUMBS_ARE -#define THUMBS_ARE RSTHD_LTR_THUMBS_ARE -#undef THUMB_LETTER -#define THUMB_LETTER LANG_KC(_E) - B_LAYER(LANG_N(_RSTHD), ___10_NUMBERS___, ___RSTHD___), -#undef THUMBS_ARE -#define THUMBS_ARE DEFAULT_THUMBS -#undef THUMB_LETTER -#endif - -#ifdef EUCALYN_LAYER_ENABLE - B_LAYER(LANG_N(_EUCALYN), ___10_NUMBERS___, ___EUCALYN___), -#endif - -#ifdef HANDS_UP_LAYER_ENABLE - B_LAYER(LANG_N(_HANDS_UP), ___10_NUMBERS___, ___HANDS_UP___), -#endif -#ifdef WHITE_LAYER_ENABLE - B_LAYER(LANG_N(_WHITE), ___10_NUMBERS___, ___WHITE___), -#endif -#ifdef ISRT_LAYER_ENABLE - B_LAYER(LANG_N(_ISRT), ___10_NUMBERS___, ___ISRT___), -#endif -#ifdef SOUL_LAYER_ENABLE - B_LAYER(LANG_N(_SOUL), ___10_NUMBERS___, ___SOUL___), -#endif -#ifdef NIRO_LAYER_ENABLE - B_LAYER(LANG_N(_NIRO), ___10_NUMBERS___, ___NIRO___), -#endif -#ifdef ASSET_LAYER_ENABLE - B_LAYER(LANG_N(_ASSET), ___10_NUMBERS___, ___ASSET___), -#endif -#ifdef WHORF_LAYER_ENABLE - B_LAYER(LANG_N(_WHORF), ___10_NUMBERS___, ___WHORF___), -#endif -#ifdef WHORF6_LAYER_ENABLE - B_LAYER(LANG_N(_WHORF6), ___10_NUMBERS___, ___WHORF6___), -#endif diff --git a/users/ericgebhart/keymap/map_beakl.h b/users/ericgebhart/keymap/map_beakl.h deleted file mode 100644 index e477790fbc..0000000000 --- a/users/ericgebhart/keymap/map_beakl.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - Copyright 2022 Eric Gebhart - - 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 . -*/ -// choose your beakl, -#undef ALT_TARGET_IS -#define ALT_TARGET_IS BK // NONE, DV = dvorak, BK=Beakl, BKW=Beaklwi. - -#ifdef BEAKL15_LAYER_ENABLE -B_LAYER(LANG_N(_BEAKL15), ___10_NUMBERS_BEAKL15___, ___BEAKL15___), -#endif - -#ifdef BEAKL19_LAYER_ENABLE - B_LAYER(LANG_N(_BEAKL19), ___10_NUMBERS_BEAKL19___, ___BEAKL19___), -#endif - -#ifdef BEAKL27_LAYER_ENABLE -#undef ALT_TARGET_IS -#define ALT_TARGET_IS BK2 // NONE, DV = dvorak, BK=Beakl, BKW=Beaklwi. - - B_LAYER(LANG_N(_BEAKL27), ___10_NUMBERS_BEAKL19___, ___BEAKL27___), -#endif - -#ifdef BEAKLWI_LAYER_ENABLE -#undef ALT_TARGET_IS -#define ALT_TARGET_IS BKW // NONE, DV = dvorak, BK=Beakl, BKW=Beaklwi. - -#undef THUMBS_ARE // change the default thumbs to WI. -#define THUMBS_ARE WIa - B_LAYER(LANG_N(_BEAKLWI), ___10_NUMBERS_BEAKL19___, ___BEAKLWI___), -#undef THUMBS_ARE -#define THUMBS_ARE DEFAULT_THUMBS -#endif - -#undef ALT_TARGET_IS -#define ALT_TARGET_IS NONE // NONE, DV = dvorak, BK=Beakl, BKW=Beaklwi. diff --git a/users/ericgebhart/keymap/map_bepo.h b/users/ericgebhart/keymap/map_bepo.h deleted file mode 100644 index 8371096053..0000000000 --- a/users/ericgebhart/keymap/map_bepo.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - Copyright 2022 Eric Gebhart - - 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 . -*/ -// beginning of 3x12 base layers. - -#undef BASE_COLS_IN_OUT -#define BASE_COLS_IN_OUT 6 // 5, 5_6, 6 - -#ifdef BEPO_LAYER_ENABLE - B_LAYERt6(LANG_N(_BEPO), ___12_SYMBOLS_BEPO___, ___BEPO_3x12___), -#endif - -#ifdef OPTIMOT_LAYER_ENABLE - B_LAYERt6(LANG_N(_OPTIMOT), ___12_SYMBOLS_BEPO___, ___OPTIMOT_3x12___), -#endif - -#ifdef OPTIMOT_COMPACT_LAYER_ENABLE - B_LAYER(LANG_N(_OPTIMOT), ___10_SYMBOLS_BEPO___, ___OPTIMOT_3x10___), -#endif - -#ifdef BEAKL19bis_LAYER_ENABLE - B_LAYERt6(LANG_N(_BEAKL19bis), ___12_SYMBOLS_BEPO___, ___BEAKL19bis_3x12___), -#endif - -// end of 3x12 base layers. -#undef BASE_COLS_IN_OUT -#define BASE_COLS_IN_OUT 5_6 // 5, 5_6, 6 diff --git a/users/ericgebhart/keymap/map_carpalx.h b/users/ericgebhart/keymap/map_carpalx.h deleted file mode 100644 index e36ca1caef..0000000000 --- a/users/ericgebhart/keymap/map_carpalx.h +++ /dev/null @@ -1,25 +0,0 @@ -/* - Copyright 2022 Eric Gebhart - - 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 . -*/ -#ifdef CARPALX_QFMLWY_LAYER_ENABLE -B_LAYER(LANG_N(_CARPALX_QFMLWY), ___10_NUMBERS___, ___CARPALX_QFMLWY___), -#endif -#ifdef CARPALX_QGMLWB_LAYER_ENABLE - B_LAYER(LANG_N(_CARPALX_QGMLWB), ___10_NUMBERS___, ___CARPALX_QGMLWB___), -#endif -#ifdef CARPALX_QGMLWY_LAYER_ENABLE - B_LAYER(LANG_N(_CARPALX_QGMLWY), ___10_NUMBERS___, ___CARPALX_QGMLWY___), -#endif diff --git a/users/ericgebhart/keymap/map_dvorak.h b/users/ericgebhart/keymap/map_dvorak.h deleted file mode 100644 index 40afe827cc..0000000000 --- a/users/ericgebhart/keymap/map_dvorak.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - Copyright 2022 Eric Gebhart - - 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 . -*/ -#ifdef DVORAK_LAYER_ENABLE -B_LAYER(LANG_N(_DVORAK), ___10_NUMBERS___, ___DVORAK___), -#endif -#ifdef DVORAK_RLC_IU_LAYER_ENABLE - B_LAYER(LANG_N(_DVORAK_RLC_IU), ___10_NUMBERS___, ___DVORAK_RLC_IU___), -#endif -#ifdef BOO_LAYER_ENABLE - B_LAYER(LANG_N(_BOO), ___10_NUMBERS___, ___BOO___), -#endif -#ifdef CAPEWELL_DVORAK_LAYER_ENABLE - B_LAYER(LANG_N(_CAPEWELL_DVORAK), ___10_NUMBERS___, ___CAPEWELL_DVORAK___), -#endif -#ifdef AHEI_LAYER_ENABLE - B_LAYER(LANG_N(_AHEI), ___10_NUMBERS___, ___AHEI___), -#endif diff --git a/users/ericgebhart/keymap/map_funcs.h b/users/ericgebhart/keymap/map_funcs.h deleted file mode 100644 index 0bf20610f3..0000000000 --- a/users/ericgebhart/keymap/map_funcs.h +++ /dev/null @@ -1,127 +0,0 @@ -/* - Copyright 2022 Eric Gebhart - - 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 . -*/ -// navigation. Mouse keys, arrows, home,end, etc. -#ifdef NAV_LAYER_ENABLE -# ifdef MOUSEKEY_ENABLE -# undef THUMBS_ARE -# define THUMBS_ARE MOUSE_LAYER_THUMBS - -# ifdef NAV_FULL_LOCK_MODS -T_LAYER(_NAV, ___NAVA_3x10___), -# endif - -# ifdef NAV_FULL - T_LAYER(_NAV, ___NAV_3x10___), -# endif - -# ifdef NAV_NO_MOUSE - T_LAYER(_NAV, ___NAVnm_3x10___), - T_LAYER(_NAVm, ___NAVm_3x10___), -# endif - -// give a default -# if !defined(NAV_FULL) && \ - !defined(NAV_NO_MOUSE) && \ - !defined(NAV_FULL_LOCK_MODS) \ - - T_LAYER(_NAV, ___NAVA_3x10___), -# endif - -# ifdef MOUSE_LAYER_ENABLE - T_LAYER(_NAVm, ___NAVm_3x10___), -# endif - -# undef THUMBS_ARE -# define THUMBS_ARE DEFAULT_THUMBS - -# else // no mouse enable. - T_LAYER(_NAV, ___NAVnm_3x10___), -# endif // mousekey end. -#endif //nav end. - -#ifdef MEDIA_LAYER_ENABLE -#undef THUMBS_ARE -#define THUMBS_ARE MEDIA_LAYER_THUMBS - T_LAYER(_MEDIA, ___MEDIA_3x10___), -#undef THUMBS_ARE -#define THUMBS_ARE DEFAULT_THUMBS -#endif - -#ifdef FUN_LAYER_ENABLE - -#ifdef FUNCPAD_MIRYOKU_ENABLE - T_LAYER(_FUN, ___FUN_3x10___), -#else - T_LAYER(_FUN, ___FUN_MIRYOKU_3x10___), -#endif - -#endif - -// A layer for layers. to set the default, etc. - T_LAYER(_LAYERS, ___LAYERS_3x10___), - -// control the RGB if there are any. -#ifdef RGB_LAYER_ENABLE - T_LAYER(_RGB, ___RGB_3x10___), -#endif - -// control and adjust stuff. -#ifdef ADJUST_LAYER_ENABLE - T_LAYER(_ADJUST, ___ADJUST_3x10___), -#endif - - -// put the combo reference layers at the end. -#ifdef COMBO_REF_LAYER_ENABLE -#undef LANG_IS -#define LANG_IS COMBO -#undef EDGE_KEY_SET_IS -#define EDGE_KEY_SET_IS REF1 -#undef THUMBS_ARE -#define THUMBS_ARE COMBO -#undef MODS_ARE -#define MODS_ARE TRNS - B_LAYER(_COMBO_REF, ___10_NUMBERS___, ___COMBO_REF___), -#undef LANG_IS -#define LANG_IS DEFAULT_LANG -#undef EDGE_KEY_SET_IS -#define EDGE_KEY_SET_IS DEFAULT_EDGE_SET -#undef THUMBS_ARE -#define THUMBS_ARE DEFAULT_THUMBS -#undef MODS_ARE -#define MODS_ARE DEFAULT_MODS -#endif - -#ifdef COMBO_REF_LAYER_TWO_ENABLE -#undef LANG_IS -#define LANG_IS COMBO2 -#undef EDGE_KEY_SET_IS -#define EDGE_KEY_SET_IS REF2 -#undef THUMBS_ARE -#define THUMBS_ARE COMBO2 -#undef MODS_ARE -#define MODS_ARE TRNS - B_LAYER(_COMBO_REF2, ___10_NUMBERS___, ___COMBO_REF___), -#undef LANG_IS -#define LANG_IS DEFAULT_LANG -#undef EDGE_KEY_SET_IS -#define EDGE_KEY_SET_IS DEFAULT_EDGE_SET -#undef THUMBS_ARE -#define THUMBS_ARE DEFAULT_THUMBS -#undef MODS_ARE -#define MODS_ARE DEFAULT_MODS -#endif diff --git a/users/ericgebhart/keymap/map_gap.h b/users/ericgebhart/keymap/map_gap.h deleted file mode 100644 index af0855c983..0000000000 --- a/users/ericgebhart/keymap/map_gap.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - Copyright 2022 Eric Gebhart - - 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 . -*/ -#ifdef MTGAP_LAYER_ENABLE -B_LAYER(LANG_N(_MTGAP), ___10_NUMBERS___, ___MTGAP___), -#endif - -#ifdef CTGAP_LAYER_ENABLE - B_LAYER(LANG_N(_CTGAP), ___10_NUMBERS___, ___CTGAP___), -#endif - -#ifdef APT_LAYER_ENABLE - B_LAYER(LANG_N(_APT), ___10_NUMBERS___, ___APT___), -#endif - -#ifdef CANARY_LAYER_ENABLE - B_LAYER(LANG_N(_CANARY), ___10_NUMBERS___, ___CANARY___), -#endif diff --git a/users/ericgebhart/keymap/map_hd.h b/users/ericgebhart/keymap/map_hd.h deleted file mode 100644 index 1123e88074..0000000000 --- a/users/ericgebhart/keymap/map_hd.h +++ /dev/null @@ -1,117 +0,0 @@ -/* - Copyright 2022 Eric Gebhart - - 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 . -*/ -#undef ALT_TARGET_IS -#define ALT_TARGET_IS HD -// NONE, DV = dvorak, BK=Beakl, BKW=Beaklwi, HD=Hands down. -// HD_ELAN, - -#ifdef HD_NEU_LAYER_ENABLE -B_LAYERt6(LANG_N(_HD_NEU), ___12_NUMBERS___, ___HD_NEU___), -#endif - -#ifdef HD_NEU_NARROW_LAYER_ENABLE - B_LAYER(LANG_N(_HD_NEU_NARROW), ___10_NUMBERS___, ___HD_NEU_NARROW___), -#endif - -#ifdef HD_REF_LAYER_ENABLE - B_LAYER(LANG_N(_HD_REF), ___10_NUMBERS___, ___HD_REF___), -#endif - -#ifdef HD_TITANIUM_LAYER_ENABLE -#undef THUMBS_ARE -#define THUMBS_ARE HANDS_DOWN_LTR_THUMBS_ARE -#undef THUMB_LETTER -#define THUMB_LETTER LANG_KC(_R) - B_LAYER(LANG_N(_HD_TITANIUM), ___10_NUMBERS___, ___HD_TITANIUM___), -#undef THUMBS_ARE -#define THUMBS_ARE DEFAULT_THUMBS -#undef THUMB_LETTER -#endif - -#ifdef HD_GOLD_LAYER_ENABLE -#undef THUMBS_ARE -#define THUMBS_ARE HANDS_DOWN_LTR_THUMBS_ARE -#undef THUMB_LETTER -#define THUMB_LETTER LANG_KC(_T) - B_LAYER(LANG_N(_HD_GOLD), ___10_NUMBERS___, ___HD_GOLD___), -#undef THUMBS_ARE -#define THUMBS_ARE DEFAULT_THUMBS -#undef THUMB_LETTER -#endif - -#ifdef HD_PLATINUM_LAYER_ENABLE -#undef THUMBS_ARE -#define THUMBS_ARE HANDS_DOWN_LTR_THUMBS_ARE -#undef THUMB_LETTER -#define THUMB_LETTER LANG_KC(_L) - B_LAYER(LANG_N(_HD_PLATINUM), ___10_NUMBERS___, ___HD_PLATINUM___), -#undef THUMBS_ARE -#define THUMBS_ARE DEFAULT_THUMBS -#undef THUMB_LETTER -#endif - -#ifdef HD_SILVER_LAYER_ENABLE -#undef THUMBS_ARE -#define THUMBS_ARE HANDS_DOWN_LTR_THUMBS_ARE -#undef THUMB_LETTER -#define THUMB_LETTER LANG_KC(_N) - B_LAYER(LANG_N(_HD_SILVER), ___10_NUMBERS___, ___HD_SILVER___), -#undef THUMBS_ARE -#define THUMBS_ARE DEFAULT_THUMBS -#undef THUMB_LETTER -#endif - -#ifdef HD_BRONZE_LAYER_ENABLE -#undef THUMBS_ARE -#define THUMBS_ARE HANDS_DOWN_LTR_THUMBS_ARE -#undef THUMB_LETTER -#define THUMB_LETTER LANG_KC(_H) - B_LAYER(LANG_N(_HD_BRONZE), ___10_NUMBERS___, ___HD_BRONZE___), -#undef THUMBS_ARE -#define THUMBS_ARE DEFAULT_THUMBS -#undef THUMB_LETTER -#endif - -#ifdef HD_ELAN_LAYER_ENABLE -#undef THUMBS_ARE -#define THUMBS_ARE HANDS_DOWN_LTR_THUMBS_ARE -#undef THUMB_LETTER -#define THUMB_LETTER LANG_KC(TL_DOT) -#undef ALT_TARGET_IS -#define ALT_TARGET_IS HD_ELAN - B_LAYER(LANG_N(_HD_ELAN), ___10_NUMBERS___, ___HD_ELAN___), -#undef THUMBS_ARE -#define THUMBS_ARE DEFAULT_THUMBS -#undef ALT_TARGET_IS -#define ALT_TARGET_IS NONE -#undef THUMB_LETTER -#endif - -#ifdef HD_DASH_LAYER_ENABLE -#undef ALT_TARGET_IS -#define ALT_TARGET_IS HD_DASH -#undef THUMBS_ARE -#define THUMBS_ARE HD_DASH -#undef THUMB_LETTER -#define THUMB_LETTER LANG_KC(_E) - B_LAYER(LANG_N(_HD_DASH), ___10_NUMBERS___, ___HD_DASH___), -#undef THUMBS_ARE -#define THUMBS_ARE DEFAULT_THUMBS -#undef ALT_TARGET_IS -#define ALT_TARGET_IS NONE -#undef THUMB_LETTER -#endif diff --git a/users/ericgebhart/keymap/map_keypads.h b/users/ericgebhart/keymap/map_keypads.h deleted file mode 100644 index 7b76731b83..0000000000 --- a/users/ericgebhart/keymap/map_keypads.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - Copyright 2022 Eric Gebhart - - 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 . -*/ -#ifdef KEYPAD_LAYER_ENABLE -# undef THUMBS_ARE -# define THUMBS_ARE KEYPAD_LAYER_THUMBS - -# ifdef KEYPAD_BEAKL -# ifdef KEYPAD_BEAKL_WI -T_LAYER(LANG_N(_KEYPAD), ___KP_BKL_WI_3x10___), -# else -# ifdef KEYPAD_MODS - T_LAYER(LANG_N(_KEYPAD), ___KP_BKL_MODS_3x10___), -# else - T_LAYER(LANG_N(_KEYPAD), ___KP_BKL_FUNC_3x10___), -# endif -# endif - -# else //not beakl - -# ifdef KEYPAD_MIRYOKU - T_LAYER(LANG_N(_KEYPAD), ___KP_MIRYOKU_3x10___), -# else - -# ifdef KEYPAD_RIGHT -# ifdef KEYPAD_MODS - T_LAYER(LANG_N(_KEYPAD), ___MODS_KP_3x10___), -# else - T_LAYER(LANG_N(_KEYPAD), ___FP_KP_3x10___), -# endif - -# else // kp Left -# ifdef KEYPAD_MODS - T_LAYER(LANG_N(_KEYPAD), ___KP_MODS_3x10___), -# else - T_LAYER(LANG_N(_KEYPAD), ___KP_FP_3x10___), -# endif -# endif -# endif - -# endif // not beakl - -#undef THUMBS_ARE -#define THUMBS_ARE DEFAULT_THUMBS -#endif - -#ifdef FUNC_LAYER_ENABLE -# ifdef FUNCPAD_MIRYOKU - T_LAYER(_FUN, ___FP_MIRYOKU_3x10___), -# else - T_LAYER(_FUN, ___FUN_3x10___), -# endif -#endif diff --git a/users/ericgebhart/keymap/map_maks.h b/users/ericgebhart/keymap/map_maks.h deleted file mode 100644 index 3290b2b772..0000000000 --- a/users/ericgebhart/keymap/map_maks.h +++ /dev/null @@ -1,34 +0,0 @@ -/* - Copyright 2022 Eric Gebhart - - 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 . -*/ -#ifdef COLEMAK_LAYER_ENABLE -B_LAYER(LANG_N(_COLEMAK), ___10_NUMBERS___, ___COLEMAK___), -#endif -#ifdef COLEMAK_DH_LAYER_ENABLE - B_LAYER(LANG_N(_COLEMAK_DH), ___10_NUMBERS___, ___COLEMAK_DH___), -#endif -#ifdef HALMAK_LAYER_ENABLE - B_LAYER(LANG_N(_HALMAK), ___10_NUMBERS___, ___HALMAK___), -#endif -#ifdef MINIMAK_LAYER_ENABLE - B_LAYER(LANG_N(_MINIMAK), ___10_NUMBERS___, ___MINIMAK___), -#endif -#ifdef MINIMAK_8_LAYER_ENABLE - B_LAYER(LANG_N(_MINIMAK_8), ___10_NUMBERS___, ___MINIMAK___), -#endif -#ifdef MINIMAK_12_LAYER_ENABLE - B_LAYER(LANG_N(_MINIMAK_12), ___10_NUMBERS___, ___MINIMAK___), -#endif diff --git a/users/ericgebhart/keymap/map_qwerty.h b/users/ericgebhart/keymap/map_qwerty.h deleted file mode 100644 index db74bdeb39..0000000000 --- a/users/ericgebhart/keymap/map_qwerty.h +++ /dev/null @@ -1,25 +0,0 @@ -/* - Copyright 2022 Eric Gebhart - - 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 . -*/ -#ifdef QWERTY_LAYER_ENABLE -B_LAYER(LANG_N(_QWERTY), ___10_NUMBERS___, ___QWERTY___), -#endif -#ifdef NORMAN_LAYER_ENABLE - B_LAYER(LANG_N(_NORMAN), ___10_NUMBERS___, ___NORMAN___), -#endif -#ifdef WORKMAN_LAYER_ENABLE - B_LAYER(LANG_N(_WORKMAN), ___10_NUMBERS___, ___WORKMAN___), -#endif diff --git a/users/ericgebhart/keymap/map_symbols.h b/users/ericgebhart/keymap/map_symbols.h deleted file mode 100644 index 7908e95262..0000000000 --- a/users/ericgebhart/keymap/map_symbols.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - Copyright 2022 Eric Gebhart - - 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 . -*/ -#ifdef SYMBOL_LAYER_ENABLE -# undef THUMBS_ARE -# define THUMBS_ARE SYMB_LAYER_THUMBS - -# ifdef SYMBOL_BEAKL_C -T_LAYER(LANG_N(_SYMB), ___SYMB_BEAKLC_3x10___), -# else - -# ifdef SYMBOL_BEAKL_EXT_VI - T_LAYER(LANG_N(_SYMB), ___SYMB_BEAKLB_3x10___), -# else - -# ifdef SYMBOL_BEAKL_EXT - T_LAYER(LANG_N(_SYMB ), ___SYMB_BEAKLA_3x10___), -# else - -# ifdef SYMBOL_BEAKL_WI - T_LAYER(LANG_N(_SYMB), ___SYMB_BEAKLWI_3x10___), -# else - -# ifdef SYMBOL_MIRYOKU - T_LAYER(LANG_N(_SYMB), ___SYMB_MIRYOKU_3x10___), -# else - -# ifdef SYMBOL_NEO - T_LAYER(LANG_N(_SYMB), ___SYMB_NEO_3x10___), -# else - -// basic beakl, the default if nothing chosen. - T_LAYER(LANG_N(_SYMB), ___SYMB_BEAKL_3x10___), - -# endif //neo -# endif //miryoku -# endif //beakl wi -# endif //beakl ext -# endif //beakl ext vi -# endif //beaklc -# undef THUMBS_ARE -# define THUMBS_ARE DEFAULT_THUMBS -#endif diff --git a/users/ericgebhart/keymap/map_toprows.h b/users/ericgebhart/keymap/map_toprows.h deleted file mode 100644 index 893541e8a0..0000000000 --- a/users/ericgebhart/keymap/map_toprows.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - Copyright 2022 Eric Gebhart - - 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 . -*/ -// Top Rows commonly called Raise -#ifdef TOPROWS_LAYER_ENABLE - -# undef THUMBS_ARE -# define THUMBS_ARE TOPROWS_LAYER_THUMBS - -# ifdef TOPROWS_BKL_15_NUMS -T_LAYER(LANG_N(_TOPROWS), ___TOPROWS_3x10___), -# endif - -# ifdef TOPROWS_BKL_19_NUMS - T_LAYER(LANG_N(_TOPROWS), ___TOPROWS_BKL19_3x10___), -# endif - -# ifdef TOPROWS_MOD - T_LAYER(LANG_N(_TOPROWS), ___TOPROWS_MOD_3x10___), -# endif - -// Not beakl numbers. Give a basic en-qwerty toprows layer. -#if !defined(TOPROWS_BKL_15_NUMS) && \ - !defined(TOPROWS_BKL_19_NUMS) && \ - !defined(TOPROWS_MOD) - - T_LAYER(LANG_N(_TOPROWS), ___RAISE_3x10___), -#endif - -# undef THUMBS_ARE -# define THUMBS_ARE DEFAULT_THUMBS -#endif // toprows. diff --git a/users/ericgebhart/lang/lang.h b/users/ericgebhart/lang/lang.h deleted file mode 100644 index 32172a935e..0000000000 --- a/users/ericgebhart/lang/lang.h +++ /dev/null @@ -1,106 +0,0 @@ -#pragma once -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ -// Language macros to change the names of things to -// match the value of LANG_IS, and EDGE_COLS. -// it would be nice to have consistency, but there isn't. -// Keys need a prefix, layer chunks need a different suffix, -// defines that are are opposite, of keys. -// -// In order to change layer and other names to match lang. -// foo --> foo_bp or foo. - -// A new language just needs entries to match so -// that it will create the proper names when LANG_IS -// set to the appropriate values. -// sonly the pfx and sfx functions need additions for -// another language. -// The rest is making sure there are keymap chunks -// defined as needed. -#define COMMA , - -#define CONCATENATE(a, ...) a ## __VA_ARGS__ -#define CAT(a, ...) CONCATENATE(a, __VA_ARGS__) - -// We need another one with a different name. -// The macros are painted blue otherwise. -// Cat gets used at a low level, around keys, or layers basically. -// Cat 2 is used for thumb cluster choices, any of which can contain -// a number of CATS down at the bottom. -- nested macros of the same -// name get painted blue. So here we are. :-). look in edge_keys.h -// for THUMBS -#define CONCATENATE2(a, ...) a ## __VA_ARGS__ -#define CAT2(a, ...) CONCATENATE2(a, __VA_ARGS__) - -#define CONCATENATE3(a, ...) a ## __VA_ARGS__ -#define CAT3(a, ...) CONCATENATE3(a, __VA_ARGS__) - - -#define EMPTY() -#define DEFER(id) id EMPTY() -#define OBSTRUCT(...) __VA_ARGS__ DEFER(EMPTY)() -#define EXPAND(...) __VA_ARGS__ - -// Give the right keycode prefix by LANG_IS -#define LANG_PFX CAT(LANG_IS, KC) -#define COMBOKC CB -#define COMBO2KC CB2 -#define BEPOKC BP -#define ENKC KC -#define US_INTKC US - -// Give the right symbol suffix by LANG_IS -#define LANG_SFX CAT(CAT(LANG_IS, _), SFX) -#define LOCALE_LAYERS_SFX _LL // for counting the base layers. -#define COMBO_SFX _CB -#define COMBO2_SFX _CB2 -#define BEPO_SFX _BP -#define EN_SFX _EN -#define US_INT_SFX _EN - -// Give the right map chunk suffix by LANG_IS -#define LANG_MAPSFX CAT(CAT(LANG_IS, _), MAPSFX) -#define COMBO_MAPSFX _CB___ -#define COMBO2_MAPSFX _CB2___ -#define BEPO_MAPSFX _BP___ -#define EN_MAPSFX _EN___ -#define US_INT_MAPSFX _EN___ - -// These use the mapping above to get their job done. - -// In order to create keycode names to match lang. -// A --> BP_A or KC_A,US_A -#define LANG_KC(NAME) CAT(LANG_PFX, NAME) - -// _SYMB -> _SYMB_EN -// _SYMB -> _SYMB_BP -#define LANG_N(NAME) CAT(NAME, LANG_SFX) - -// In order to map chunk names to match lang. -// MAP_CHUNK(___15_BOTTOM) --> ___15_BOTTOM_EN___ or ___15_BOTTOM_BP___ -#define MAP_CHUNK(NAME) CAT3(NAME, LANG_MAPSFX) - - -// for the oled layer map switch -#ifdef SECOND_LOCALE -#define LCASE(NAME) \ - case CAT2(NAME, _EN): \ - case CAT2(NAME, _BP): -#else -#define LCASE(NAME) \ - case CAT2(NAME, _EN): -#endif diff --git a/users/ericgebhart/lang/lang_map.h b/users/ericgebhart/lang/lang_map.h deleted file mode 100644 index 16226f64fd..0000000000 --- a/users/ericgebhart/lang/lang_map.h +++ /dev/null @@ -1,78 +0,0 @@ -#pragma once -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ -#define CONCATENATEKC(a, ...) a ## __VA_ARGS__ -#define CATKC(a, ...) CONCATENATEKC(a, __VA_ARGS__) -#define LKC(NAME) CATKC(LANG_PFX, NAME) - -// NONE, DV = dvorak, BK=Beakl, BK2=Beakl27, BKW=Beaklwi. -// Give the right keycode prefix by Alt target _IS -#define ALT_TARGET_IS NONE -#define TARGET_PFX CATKC(ALT_TARGET_IS, KC) -#define NONEKC -#define DVKC _DV -#define BKKC _BK -#define BKWKC _BKW -#define BK2KC _BK2 -#define HDKC _HD -#define HD_ELANKC _HD_E -#define HD_DASHKC _HD_D - -#define CONCATENATETKC(a, ...) a ## __VA_ARGS__ -#define CATTKC(a, ...) CONCATENATETKC(a, __VA_ARGS__) - -// depending on the value of ALT_TARGET_IS and LANG_IS. -// TL_COMM -> TLKC(_COMM) -// TLKC(_COMM) -> _BK_COMM, _DV_COMM, _BK2_COMM, _BK_COMM, _HD_COMM... -#define TLKC(NAME) CATTKC(TARGET_PFX, NAME) - -#define LANG_ROW(K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A) \ - LKC(K01), LKC(K02), LKC(K03), LKC(K04), LKC(K05), \ - LKC(K06), LKC(K07), LKC(K08), LKC(K09), LKC(K0A) \ - -#define LANG_ROW12(K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C) \ - LKC(K01), LKC(K02), LKC(K03), LKC(K04), LKC(K05), LKC(K06), \ - LKC(K07), LKC(K08), LKC(K09), LKC(K0A), LKC(K0B), LKC(K0C) \ - -// takes a 3x10 -#define LANG_MAP(K01, K02, K03, K04, K05, \ - K06, K07, K08, K09, K0A, \ - K11, K12, K13, K14, K15, \ - K16, K17, K18, K19, K1A, \ - K21, K22, K23, K24, K25, \ - K26, K27, K28, K29, K2A) \ - LKC(K01), LKC(K02), LKC(K03), LKC(K04), LKC(K05), \ - LKC(K06), LKC(K07), LKC(K08), LKC(K09), LKC(K0A), \ - LKC(K11), LKC(K12), LKC(K13), LKC(K14), LKC(K15), \ - LKC(K16), LKC(K17), LKC(K18), LKC(K19), LKC(K1A), \ - LKC(K21), LKC(K22), LKC(K23), LKC(K24), LKC(K25), \ - LKC(K26), LKC(K27), LKC(K28), LKC(K29), LKC(K2A) - - -// takes a 3x12 -#define LANG_MAP6(K01, K02, K03, K04, K05, K06, \ - K07, K08, K09, K0A, K0B, K0C, \ - K11, K12, K13, K14, K15, K16, \ - K17, K18, K19, K1A, K1B, K1C, \ - K21, K22, K23, K24, K25, K26, \ - K27, K28, K29, K2A, K2B, K2C) \ - LKC(K01), LKC(K02), LKC(K03), LKC(K04), LKC(K05), LKC(K06), \ - LKC(K07), LKC(K08), LKC(K09), LKC(K0A), LKC(K0B), LKC(K0C), \ - LKC(K11), LKC(K12), LKC(K13), LKC(K14), LKC(K15), LKC(K16), \ - LKC(K18), LKC(K18), LKC(K19), LKC(K1A), LKC(K1B), LKC(K1C), \ - LKC(K21), LKC(K22), LKC(K23), LKC(K24), LKC(K25), LKC(K26), \ - LKC(K27), LKC(K28), LKC(K29), LKC(K2A), LKC(K2B), LKC(K2C) diff --git a/users/ericgebhart/lang/locale_layers.h b/users/ericgebhart/lang/locale_layers.h deleted file mode 100644 index 103c1c4ed9..0000000000 --- a/users/ericgebhart/lang/locale_layers.h +++ /dev/null @@ -1,27 +0,0 @@ -#pragma once -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ -#define LOCALE_DEFAULT CAT(LOCALE_, DEFAULT_LANG) -#define LOCALE_TWO CAT(LOCALE_, SECOND_LOCALE) - -enum locales { - LOCALE_DEFAULT = 0, -#ifdef SECOND_LOCALE - LOCALE_TWO, -#endif - LOCALES_END, -}; diff --git a/users/ericgebhart/lang/locales.c b/users/ericgebhart/lang/locales.c deleted file mode 100644 index 560dec13b7..0000000000 --- a/users/ericgebhart/lang/locales.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ -#include "ericgebhart.h" -#include "locales.h" - -bool process_locales(uint16_t keycode, keyrecord_t *record) { - - switch (keycode) { - case KC_SET_BASE: - // set the current default base to eeprom. - if (record->event.pressed) { - set_single_persistent_default_layer(get_highest_layer(default_layer_state)); - } - break; - - // choose a different set of default layers based on locales. - case KC_NEXT_LOCALE: - // choose another locale and set the default base to the first layer. - if (!record->event.pressed) { - if (current_locale + 1 < LOCALES_END){ - current_locale++; - }else{ - current_locale = 0; - } - default_layer_set(1UL << LOCALE_LAYER_RANGE[0]); - } - return false; - break; - - // choose a different base layer based on locales. - // simply iterates over the list and sets the default layer. - case KC_NEXT_BASE_LAYER: - if (!record->event.pressed) { - uint8_t current = get_highest_layer(default_layer_state); - if (current < LOCALE_LAYER_RANGE[1]){ - current++; - }else{ - current = LOCALE_LAYER_RANGE[0]; - } - default_layer_set(1UL << current); - } - return false; - break; - } - return true; -} diff --git a/users/ericgebhart/lang/locales.h b/users/ericgebhart/lang/locales.h deleted file mode 100644 index e38f5aeb72..0000000000 --- a/users/ericgebhart/lang/locales.h +++ /dev/null @@ -1,42 +0,0 @@ -#pragma once -/* - Copyright 2022 Eric Gebhart - - 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 . -*/ - -#include "ericgebhart.h" - -// Stuff we need for locale and layer switching -// there can be more but we need to know where they start and end. -// remember there's limitations on layers. -// Our locales. so it's easy to switch between them. - - -const uint16_t base_layer_count = BASE_NAME_COUNT - 1; - -const uint16_t locale_layers[][2] = { - [LOCALE_DEFAULT] = {0, base_layer_count}, -#ifdef SECOND_LOCALE - [LOCALE_TWO] = {BASE_NAME_COUNT, BASE_NAME_COUNT + base_layer_count}, -#endif -}; - -uint32_t current_locale = LOCALE_DEFAULT; -#define LOCALE_LAYER_RANGE locale_layers[current_locale] - -bool process_locales(uint16_t keycode, keyrecord_t *record); - -#define PROCESS_LOCALES \ - if (!process_locales(keycode, record)) { return false; } diff --git a/users/ericgebhart/layer_names/base_names.h b/users/ericgebhart/layer_names/base_names.h deleted file mode 100644 index 1fef1efed0..0000000000 --- a/users/ericgebhart/layer_names/base_names.h +++ /dev/null @@ -1,173 +0,0 @@ -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ -#ifdef DVORAK_LAYER_ENABLE - LANG_N(_DVORAK), -#endif -#ifdef DVORAK_RLC_IU_LAYER_ENABLE - LANG_N(_DVORAK_RLC_IU_), -#endif -#ifdef BOO_LAYER_ENABLE - LANG_N(_BOO), -#endif -#ifdef CAPEWELL_DVORAK_LAYER_ENABLE - LANG_N(_CAPEWELL_DVORAK), -#endif -#ifdef AHEI_LAYER_ENABLE - LANG_N(_AHEI), -#endif - - -#ifdef QWERTY_LAYER_ENABLE - LANG_N(_QWERTY), -#endif -#ifdef WORKMAN_LAYER_ENABLE - LANG_N(_WORKMAN), -#endif -#ifdef NORMAN_LAYER_ENABLE - LANG_N(_NORMAN), -#endif - - -#ifdef COLEMAK_LAYER_ENABLE - LANG_N(_COLEMAK), -#endif -#ifdef COLEMAK_DH_LAYER_ENABLE - LANG_N(_COLEMAK_DH), -#endif -#ifdef HALMAK_LAYER_ENABLE - LANG_N(_COLEMAK), -#endif -#ifdef MINIMAK_LAYER_ENABLE - LANG_N(_MINIMAK), -#endif -#ifdef MINIMAK_8_LAYER_ENABLE - LANG_N(_MINIMAK_8), -#endif -#ifdef MINIMAK_12_LAYER_ENABLE - LANG_N(_MINIMAK_12), -#endif - - -#ifdef BEAKL15_LAYER_ENABLE - LANG_N(_BEAKL15), -#endif -#ifdef BEAKL19_LAYER_ENABLE - LANG_N(_BEAKL19), -#endif -#ifdef BEAKL27_LAYER_ENABLE - LANG_N(_BEAKL27), -#endif -#ifdef BEAKLWI_LAYER_ENABLE - LANG_N(_BEAKLWI), -#endif - -#ifdef MALTRON_LAYER_ENABLE - LANG_N(_MALTRON), -#endif -#ifdef EUCALYN_LAYER_ENABLE - LANG_N(_EUCALYN), -#endif -#ifdef RSTHD_LAYER_ENABLE - LANG_N(_RSTHD), -#endif -#ifdef HANDS_UP_LAYER_ENABLE - LANG_N(_HANDS_UP), -#endif -#ifdef WHITE_LAYER_ENABLE - LANG_N(_WHITE), -#endif -#ifdef ISRT_LAYER_ENABLE - LANG_N(_ISRT), -#endif -#ifdef SOUL_LAYER_ENABLE - LANG_N(_SOUL), -#endif -#ifdef NIRO_LAYER_ENABLE - LANG_N(_NIRO), -#endif -#ifdef ASSET_LAYER_ENABLE - LANG_N(_ASSET), -#endif -#ifdef WHORF_LAYER_ENABLE - LANG_N(_WHORF), -#endif -#ifdef WHORF6_LAYER_ENABLE - LANG_N(_WHORF6), -#endif - -#ifdef CARPALX_QFMLWY_LAYER_ENABLE - LANG_N(_CARPALX_QFMLWY), -#endif -#ifdef CARPALX_QGMLWB_LAYER_ENABLE - LANG_N(_CARPALX_QGMLWB), -#endif -#ifdef CARPALX_QGMLWY_LAYER_ENABLE - LANG_N(_CARPALX_QGMLWY), -#endif - - -#ifdef MTGAP_LAYER_ENABLE - LANG_N(_MTGAP), -#endif -#ifdef CTGAP_LAYER_ENABLE - LANG_N(_CTGAP), -#endif -#ifdef APT_LAYER_ENABLE - LANG_N(_APT), -#endif -#ifdef CANARY_LAYER_ENABLE - LANG_N(_CANARY), -#endif - - -#ifdef HD_NEU_LAYER_ENABLE - LANG_N(_HD_NEU), -#endif -#ifdef HD_NEU_NARROW_LAYER_ENABLE - LANG_N(_HD_NEU_NARROW), -#endif -#ifdef HD_GOLD_LAYER_ENABLE - LANG_N(_HD_GOLD), -#endif -#ifdef HD_PLATINUM_LAYER_ENABLE - LANG_N(_HD_PLATINUM), -#endif -#ifdef HD_SILVER_LAYER_ENABLE - LANG_N(_HD_SILVER), -#endif -#ifdef HD_BRONZE_LAYER_ENABLE - LANG_N(_HD_BRONZE), -#endif -#ifdef HD_ELAN_LAYER_ENABLE - LANG_N(_HD_ELAN), -#endif -#ifdef HD_DASH_LAYER_ENABLE - LANG_N(_HD_DASH), -#endif -#ifdef HD_REF_LAYER_ENABLE - LANG_N(_HD_REF), -#endif - -#ifdef BEPO_LAYER_ENABLE - LANG_N(_BEPO), -#endif -#ifdef OPTIMOT_LAYER_ENABLE - LANG_N(_OPTIMOT), -#endif -#ifdef BEAKL19bis_LAYER_ENABLE - LANG_N(_BEAKL19bis), -#endif diff --git a/users/ericgebhart/layer_names/func_names.h b/users/ericgebhart/layer_names/func_names.h deleted file mode 100644 index e1b061a145..0000000000 --- a/users/ericgebhart/layer_names/func_names.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ - -// functional layers that would be different by language - -#ifdef ACCENTS_LAYER_ENABLE -LANG_N(_ACCENTS), -#endif -#ifdef MORTE_LAYER_ENABLE - LANG_N(_MORTE), -#endif -#ifdef ACCENTS_MORTE_LAYER_ENABLE - LANG_N(_ACCENTS_MORTE), -#endif - -#ifdef SYMBOL_LAYER_ENABLE - LANG_N(_SYMB), -#endif -#ifdef KEYPAD_LAYER_ENABLE - LANG_N(_KEYPAD), -#endif -#ifdef TOPROWS_LAYER_ENABLE - LANG_N(_TOPROWS), -#endif diff --git a/users/ericgebhart/layer_names/layer_names.h b/users/ericgebhart/layer_names/layer_names.h deleted file mode 100644 index 69d9d50d32..0000000000 --- a/users/ericgebhart/layer_names/layer_names.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ -#include QMK_KEYBOARD_H -#include "base_layers.h" -#include "layouts.h" -#include "layers.h" -#if defined(OLED_CUSTOM_ENABLE) -# include "oled_stuff.h" -#endif - -#define MO_LAYERS MO(_LAYERS) - -#undef LANG_IS -#define LANG_IS LOCALE_LAYERS - -enum base_layer_names{ -#include "base_names.h" - BASE_NAME_COUNT -}; -#undef LANG_IS -#define LANG_IS DEFAULT_LANG - - -// Get the enums for the layers. -enum userspace_layers { - -#include "base_names.h" - - // get them again if we have another locale. -#ifdef SECOND_LOCALE -#undef LANG_IS -#define LANG_IS SECOND_LOCALE - -#include "base_names.h" - -#undef LANG_IS -#define LANG_IS DEFAULT_LANG -#endif - - _LAYERS, - -#include "func_names.h" - - // get them again if we have another locale. -#ifdef SECOND_LOCALE -#undef LANG_IS -#define LANG_IS SECOND_LOCALE - -#include "func_names.h" - -#undef LANG_IS -#define LANG_IS DEFAULT_LANG -#endif - -#include "util_names.h" - -}; - - -// find the beginning and end of each locale. -#include "locale_layers.h" diff --git a/users/ericgebhart/layer_names/util_names.h b/users/ericgebhart/layer_names/util_names.h deleted file mode 100644 index 55597385fe..0000000000 --- a/users/ericgebhart/layer_names/util_names.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ - -// transient layers which are language agnostic. - - -#ifdef NAV_LAYER_ENABLE - _NAV, -#ifdef MOUSEKEY_ENABLE - _NAVm, -#endif -#endif - -#ifdef MEDIA_LAYER_ENABLE - _MEDIA, -#endif - -#ifdef FUNC_LAYER_ENABLE - _FUN, -#endif - -#ifdef RGB_LAYER_ENABLE - _RGB, -#define TO_RGB MO(_RGB) -#else -#define TO_RGB ___ -#endif - -#ifdef ADJUST_LAYER_ENABLE - _ADJUST, -#define MO_ADJUST MO(_ADJUST) -#else -#define MO_ADJUST ___ -#endif - - -#ifdef COMBO_REF_LAYER_ENABLE - _COMBO_REF, -// set the combo reference layer if we have one. -#undef COMBO_REF_DEFAULT -#define COMBO_REF_DEFAULT _COMBO_REF -#endif -#ifdef COMBO_REF_LAYER_TWO_ENABLE - _COMBO_REF2, -#endif diff --git a/users/ericgebhart/layers/edge_keys.h b/users/ericgebhart/layers/edge_keys.h deleted file mode 100644 index 107434750b..0000000000 --- a/users/ericgebhart/layers/edge_keys.h +++ /dev/null @@ -1,420 +0,0 @@ -#pragma once -/* - Copyright 2018 Eric Gebhart - - 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 . -*/ - -/******************************************************************/ -/* This is where I put my Keyboard layouts, Everything on the */ -/* edges, the functions on keys like LT() and SFT_T() */ -/* can be applied here. The physical shape of the keyboard is */ -/* also accounted for here. This makes it very simple to add a */ -/* new keyboard and reuse all of my layouts and layers */ -/* */ -/* The particular pieces we define here (as needed) are: */ -/* * Edge pinky keys, */ -/* * Middle section keys */ -/* * Bottom/5th row */ -/* * Thumbkeys */ -/* * Any functional additions to wrap the keys. ie. LT() */ -/* */ -/* With all of that in hand, we then create a LAYOUT wrapper */ -/* macro that takes a list of keys, to create a keyboard matrix */ -/* that fits the keyboard. Simple. */ -/* */ -/* The thumb keys, the bottom rows, etc. */ -/* */ -/* An attempt has been made to adapt the kinesis and ergodox */ -/* Thumb keys to the rectangular shapes of the xd75 and viterbi. */ -/* which are 15x and 14x matrices respectively. */ -/* The Corne was a perfect fit */ -/******************************************************************/ - -/******************************************************************/ -/* * The XD75 is a 5x15 Ortholinear matrix which means it has 3 */ -/* keys inbetween the usual left and right hand keys */ -/* * The Viterbi is a split 5x14 Ortholinear with 2 middle keys. */ -/* * The Ergodox is a split 5x14 Ortholinear with 2 middle keys, */ -/* thumbkeys. It is missing middle keys on (home) row 3. */ -/* * The Corne is a split 3x12 with 6 thumb keys. It has no */ -/* extra middle keys */ -/* */ -/******************************************************************/ - - -/******************************************************************/ -/* In all cases these keyboards are defined in a matrix which is */ -/* a set of rows. Maybe like so, or not. */ -/* */ -/* -------------------------|------------------------ */ -/* | Left0 | Numbers L | mid|dle0 | numbers R | Right0 | */ -/* | Left1 | keys0-5 | mid|dle1 | Keys6-10 | Right1 | */ -/* | Left2 | keys11-15 | mid|dle2 | Keys16-20 | Right2 | */ -/* | Left3 | keys20-25 | mid|dle3 | Keys25-30 | Right3 | */ -/* | Row5L | Row5R | */ -/* | ThumbsL | ThumbsR | */ -/* -------------------------|------------------------ */ - -/* Generally speaking, the keys on the right and left don't change. */ -/* Neither does the bottom row or the thumbs. Frequently the numbers */ -/* row is identical across layers. Mostly, we want our Base layers to */ -/* be predctable. */ - -// Edge columns. N rows by 6 columns per side. -// Outside pinky keys are 'yes' -// Should be undef/def'd by the keyboard's keymap if no. -//#define EDGE_COLS yes - -// BEPO or EN. Used in map.h -//#define LANG_IS EN - - -#define CONCATENATEE(a, ...) a ## __VA_ARGS__ -#define CATE(a, ...) CONCATENATEE(a, __VA_ARGS__) -// EDGES -// outside pinky keys row 0-3. -// Qwerty and Bepo, - Applies -// to foreign layouts on bepo. dvorak_bp, beakl_bp. -// Use by Wrapping the root like so. LANG_N(LEFT0) -// Add more languages by adding more definitions. -#define EDGE_KEY(KNAME) CATE(LANG_N(KNAME), EDGE_KEY_SFX) -#define LEFT_0 EDGE_KEY(LEFT0) -#define LEFT_1 EDGE_KEY(LEFT1) -#define LEFT_2 EDGE_KEY(LEFT2) -#define LEFT_3 EDGE_KEY(LEFT3) -#define RIGHT_0 EDGE_KEY(RIGHT0) -#define RIGHT_1 EDGE_KEY(RIGHT1) -#define RIGHT_2 EDGE_KEY(RIGHT2) -#define RIGHT_3 EDGE_KEY(RIGHT3) - - -#define EDGE_KEY_SFX CATE(CATE(EDGE_KEY_SET_IS, _), SFX) -#define SML_SFX _sml -#define NOKC_SFX _nokc -#define NORM_SFX _norm -#define TEST_SFX _test -#define REF1_SFX _ref1 -#define REF2_SFX _ref2 - -// Edge key sets -// a mostly normalish set of edge keys. -#define LEFT0_EN_norm KC_GRV -#define LEFT1_EN_norm KC_GRV -#define LEFT2_EN_norm KC_TAB -#define LEFT3_EN_norm KC_BSLS - -#define RIGHT0_EN_norm KC_EQL -#define RIGHT1_EN_norm KC_EQL -#define RIGHT2_EN_norm KC_MINS -#define RIGHT3_EN_norm KC_SLSH - -// smart lock edges mostly -#define LEFT0_EN_sml SML_NAV -#define LEFT1_EN_sml SML_NAV -#define LEFT2_EN_sml KC_TAB -#ifdef ACCENTS_MORTE_LAYER_ENABLE -#define LEFT3_EN_sml TT(_ACCENTS_MORTE_EN) -#else -#define LEFT3_EN_sml ___ -#endif - -#define RIGHT0_EN_sml SML_KEYPAD -#define RIGHT1_EN_sml SML_KEYPAD -#define RIGHT2_EN_sml KC_MINS -#define RIGHT3_EN_sml TT(_LAYERS) - -// empty no kc edges -#define LEFT0_EN_nokc KC_NO -#define LEFT1_EN_nokc KC_NO -#define LEFT2_EN_nokc KC_NO -#define LEFT3_EN_nokc KC_NO - -#define RIGHT0_EN_nokc KC_NO -#define RIGHT1_EN_nokc KC_NO -#define RIGHT2_EN_nokc KC_NO -#define RIGHT3_EN_nokc KC_NO - -//test edge keys -#define LEFT0_EN_test KC_NO -#define LEFT1_EN_test KC_NO -#define LEFT2_EN_test KC_NO -#define LEFT3_EN_test KC_NO - -#define RIGHT0_EN_test KC_NO -#define RIGHT1_EN_test KC_NO -#define RIGHT2_EN_test KC_NO -#define RIGHT3_EN_test KC_NO - -// bepo -// mostly normal expected things -#define LEFT0_BP_norm BP_GRV -#define LEFT1_BP_norm BP_GRV -#define LEFT2_BP_norm BP_TAB -#define LEFT3_BP_norm BP_BSLS - -#define RIGHT0_BP_norm BP_EQL -#define RIGHT1_BP_norm BP_EQL -#define RIGHT2_BP_norm BP_DV_MINS -#define RIGHT3_BP_norm BP_SLSH - -// smart locks mostly, tab, mins -#define LEFT0_BP_sml SML_NAV -#define LEFT1_BP_sml SML_NAV -#define LEFT2_BP_sml KC_TAB -#define LEFT3_BP_sml TT(_ACCENTS_MORTE_BP) - -#define RIGHT0_BP_sml SML_KEYPAD_BP -#define RIGHT1_BP_sml SML_KEYPAD_BP -#define RIGHT2_BP_sml BP_MINS -#define RIGHT3_BP_sml TT(_LAYERS) - -// empty nokc edges -#define LEFT0_BP_nokc KC_NO -#define LEFT1_BP_nokc KC_NO -#define LEFT2_BP_nokc KC_NO -#define LEFT3_BP_nokc KC_NO - -#define RIGHT0_BP_nokc KC_NO -#define RIGHT1_BP_nokc KC_NO -#define RIGHT2_BP_nokc KC_NO -#define RIGHT3_BP_nokc KC_NO - -// test edges -#define LEFT0_BP_test KC_NO -#define LEFT1_BP_test KC_NO -#define LEFT2_BP_test KC_NO -#define LEFT3_BP_test KC_NO - -#define RIGHT0_BP_test KC_NO -#define RIGHT1_BP_test KC_NO -#define RIGHT2_BP_test KC_NO -#define RIGHT3_BP_test KC_NO - - -// Edges for the combo reference layers. -#define LEFT0_CB_ref1 L0_CB -#define LEFT1_CB_ref1 L1_CB -#define LEFT2_CB_ref1 L2_CB -#define LEFT3_CB_ref1 L3_CB - -#define RIGHT0_CB_ref1 R0_CB -#define RIGHT1_CB_ref1 R1_CB -#define RIGHT2_CB_ref1 R2_CB -#define RIGHT3_CB_ref1 R3_CB - -#define LEFT0_CB_ref2 L0_CB2 -#define LEFT1_CB_ref2 L1_CB2 -#define LEFT2_CB_ref2 L2_CB2 -#define LEFT3_CB_ref2 L3_CB2 - -#define RIGHT0_CB_ref2 R0_CB2 -#define RIGHT1_CB_ref2 R1_CB2 -#define RIGHT2_CB_ref2 R2_CB2 -#define RIGHT3_CB_ref2 R3_CB2 - -/******************************************************************/ -/* Middle Keysets for various keyboards */ -// MIDDLES -/// Middle left and right keys. -/******************************************************************/ -#define ___MIDDLE_LT___ OSL(_LAYERS) -#define ___MIDDLE_L1___ LANG_KC(_CCCV) -#define ___MIDDLE_L2___ TO(LN_SYMB) -#define ___MIDDLE_L3___ TO(_NAV) - -#define ___MIDDLE_RT___ _X_ -#define ___MIDDLE_R1___ LANG_KC(_CCCV) -#define ___MIDDLE_R2___ TO(LN_TOPROWS) -#define ___MIDDLE_R3___ ___ - -// 3 keys in the middle of a 15x matrix -#define ___3_MIDDLE_T___ ___MIDDLE_LT___, LCTL(LANG_KC(_A)), ___MIDDLE_RT___ -#define ___3_MIDDLE_1___ ___MIDDLE_L1___, LCTL(LANG_KC(_X)), ___MIDDLE_R1___ -#define ___3_MIDDLE_2___ ___MIDDLE_L2___, TO_RGB, ___MIDDLE_R2___ -#define ___3_MIDDLE_3___ ___MIDDLE_L3___, TO(LN_SYMB), ___MIDDLE_R3___ - -// 2 keys in the middle of a 14x matrix - For viterbi and ergodox. -#define ___2_MIDDLE_T___ ___MIDDLE_LT___, ___MIDDLE_RT___ -#define ___2_MIDDLE_1___ ___MIDDLE_L1___, ___MIDDLE_R1___ -#define ___2_MIDDLE_2___ ___MIDDLE_L2___, ___MIDDLE_R2___ -#define ___2_MIDDLE_3___ ___MIDDLE_L3___, ___MIDDLE_R3___ - -// 2 keys in the middle of a 14x matrix - For viterbi and ergodox. -#define ___3_MIDDLE_T_EN___ ___3_MIDDLE_T___ -#define ___3_MIDDLE_1_EN___ ___3_MIDDLE_1___ -#define ___3_MIDDLE_2_EN___ ___3_MIDDLE_2___ -#define ___3_MIDDLE_3_EN___ ___3_MIDDLE_3___ - -#define ___2_MIDDLE_T_EN___ ___2_MIDDLE_T___ -#define ___2_MIDDLE_1_EN___ ___2_MIDDLE_1___ -#define ___2_MIDDLE_2_EN___ ___2_MIDDLE_2___ -#define ___2_MIDDLE_3_EN___ ___2_MIDDLE_3___ - -#define ___3_MIDDLE_T_BP___ ___3_MIDDLE_T___ -#define ___3_MIDDLE_1_BP___ ___3_MIDDLE_1___ -#define ___3_MIDDLE_2_BP___ ___3_MIDDLE_2___ -#define ___3_MIDDLE_3_BP___ ___3_MIDDLE_3___ - -#define ___2_MIDDLE_T_BP___ ___2_MIDDLE_T___ -#define ___2_MIDDLE_1_BP___ ___2_MIDDLE_1___ -#define ___2_MIDDLE_2_BP___ ___2_MIDDLE_2___ -#define ___2_MIDDLE_3_BP___ ___2_MIDDLE_3___ - -#define ___2_MIDDLE_T_CB___ CB_0M1, CB_0M2 -#define ___2_MIDDLE_1_CB___ CB_1M1, CB_1M2 -#define ___2_MIDDLE_2_CB___ CB_2M1, CB_2M2 -#define ___2_MIDDLE_3_CB___ CB_3M1, CB_3M2 -#define ___2_MIDDLE_4_CB___ CB_4M1, CB_4M2 - -#define ___3_MIDDLE_T_CB___ CB_0M1, CB_0M2, CB_0M3 -#define ___3_MIDDLE_1_CB___ CB_1M1, CB_1M2, CB_1M3 -#define ___3_MIDDLE_2_CB___ CB_2M1, CB_2M2, CB_2M3 -#define ___3_MIDDLE_3_CB___ CB_3M1, CB_3M2, CB_3M3 -#define ___3_MIDDLE_4_CB___ CB_4M1, CB_4M2, CB_4M3 - -#define ___4_MIDDLE_4_CB___ CB_4M1, CB_4M2, CB_4M3, CB_4M4 -#define ___5_MIDDLE_4_CB___ CB_4M1, CB_4M2, CB_4M3, CB_4M4, CB_4M5 - -#define ___2_MIDDLE_T_CB2___ CB2_0M1, CB2_0M2 -#define ___2_MIDDLE_1_CB2___ CB2_1M1, CB2_1M2 -#define ___2_MIDDLE_2_CB2___ CB2_2M1, CB2_2M2 -#define ___2_MIDDLE_3_CB2___ CB2_3M1, CB2_3M2 -#define ___2_MIDDLE_4_CB2___ CB2_4M1, CB2_4M2 - -#define ___3_MIDDLE_T_CB2___ CB2_0M1, CB2_0M2, CB2_0M3 -#define ___3_MIDDLE_1_CB2___ CB2_1M1, CB2_1M2, CB2_1M3 -#define ___3_MIDDLE_2_CB2___ CB2_2M1, CB2_2M2, CB2_2M3 -#define ___3_MIDDLE_3_CB2___ CB2_3M1, CB2_3M2, CB2_3M3 -#define ___3_MIDDLE_4_CB2___ CB2_4M1, CB2_4M2, CB2_4M3 - -#define ___4_MIDDLE_4_CB2___ CB2_4M1, CB2_4M2, CB2_4M3, CB2_4M4 -#define ___5_MIDDLE_4_CB2___ CB2_4M1, CB2_4M2, CB2_4M3, CB2_4M4, CB2_4M5 - -#define ___4_LEFT_4_CB___ CB_4L1, CB_4L2, CB_4L3, CB_4L4 -#define ___4_RIGHT_4_CB___ CB_4R1, CB_4R2, CB_4R3, CB_4R4 - -#define ___4_LEFT_4_CB2___ CB2_4L1, CB2_4L2, CB2_4L3, CB2_4L4 -#define ___4_RIGHT_4_CB2___ CB2_4R1, CB2_4R2, CB2_4R3, CB2_4R4 - -#define ___5_LEFT_4_CB___ CB_4L1, CB_4L2, CB_4L3, CB_4L4, CB_4L5 -#define ___5_RIGHT_4_CB___ CB_4R1, CB_4R2, CB_4R3, CB_4R4, CB_4R5 - -#define ___5_LEFT_4_CB2___ CB2_4L1, CB2_4L2, CB2_4L3, CB2_4L4, CB2_4L5 -#define ___5_RIGHT_4_CB2___ CB2_4R1, CB2_4R2, CB2_4R3, CB2_4R4, CB2_4R5 - -#define ___13_BOTTOM_CB___ ___5_LEFT_4_CB___, \ - ___3_MIDDLE_4_CB___, \ - ___5_RIGHT_4_CB___ - -#define ___12_BOTTOM_CB___ ___5_LEFT_4_CB___, \ - ___2_MIDDLE_4_CB___, \ - ___5_RIGHT_4_CB___ - -#define ___13_BOTTOM_CB2___ ___5_LEFT_4_CB2___, \ - ___3_MIDDLE_4_CB2___, \ - ___5_RIGHT_4_CB2___ - -#define ___12_BOTTOM_CB2___ ___5_LEFT_4_CB2___, \ - ___2_MIDDLE_4_CB2___, \ - ___5_RIGHT_4_CB2___ - -/* BOTTOMS, sorta like THUMBS */ -/********************************************************************/ -// for xd75 or other layouts with a center column. -// #define ___5_MIDDLE_THUMBS___ CTL_BSPC, ALT_DEL, XMONAD_ESC, ALT_ENT, CTL_SPC -#define ___5_MIDDLE_THUMBS___ ALT_DEL, BSPC_TOPR, ESC_SYMB, ENT_NAV, SPC_TOPR - - // for a last, 4th thumb row. for rebound. - // backtab, home end, ----, pgup, pgdn, tab ? -#define ___13_BOTTOM___ \ - KC_BKTAB, HOME_END, KC_TAB, TT(_NAV), BSPC_SYMB, ESC_TOPR, \ - OSL(_LAYERS), \ - ENT_NAV, SPC_TOPR, KC_LEFT, KC_PGUP, KC_PGDN, KC_RIGHT - -#define ___13_BOTTOM_EN___ ___13_BOTTOM___ -#define ___13_BOTTOM_BP___ ___13_BOTTOM___ - -#define ___12_BOTTOM___ \ - KC_BKTAB, HOME_END, KC_TAB, TT(_NAV), BSPC_SYMB, ESC_TOPR, \ - ENT_NAV, SPC_TOPR, KC_LEFT, KC_PGUP, KC_PGDN, KC_RIGHT - -#define ___12_BOTTOM_EN___ ___12_BOTTOM___ -#define ___12_BOTTOM_BP___ ___12_BOTTOM___ - -// becomes the upper thumbs, the real 4th row if we throw away -// the number row at the top. -// this is the 4th row on the viterbi above the thumbrow if the number -// row is not used for numbers. -#define ___4_MIDDLE_4___ LSFT(KC_TAB), HOME_END, KC_PGDN, KC_TAB -#define ___4_MIDDLE_4b___ TAB_BKTAB, HOME_END, KC_PGDN, KC_PGUP - -/********************************************************************/ -/* The bottom row and thumbs as needed. */ -/********************************************************************/ -// Only the 14 and 15 wide bottom rows have bepo versions. -// all others are handled through macros. - -#define ___5_BOTTOM_LEFT___ ___X2___, KC_INS, KC_LEFT, KC_RIGHT -#define ___5_BOTTOM_RIGHT___ KC_UP, KC_DOWN, KC_BSLS, ___X2___ - -#define ___5_BOTTOM_LEFT_EN___ ___5_BOTTOM_LEFT___ -#define ___5_BOTTOM_RIGHT_EN___ ___5_BOTTOM_RIGHT___ - -#define ___4_BOTTOM_LEFT___ LCTL(KC_V), KC_INS, KC_LEFT, KC_RIGHT -#define ___4_BOTTOM_RIGHT___ KC_UP, KC_DOWN, KC_BSLS, LCTL(KC_C) - -#define ___4_BOTTOM_LEFT_EN___ ___4___ //___4_BOTTOM_LEFT___ -#define ___4_BOTTOM_RIGHT_EN___ ___4___ //___4_BOTTOM_RIGHT___ - -// the bottom rows for keyboards on bepo. -// bepo on bepo - not enough space to go around.... -#define ___5_BOTTOM_LEFT_BP___ _X_, BP_EACU, _X_, KC_LEFT, KC_RIGHT -#define ___5_BOTTOM_RIGHT_BP___ KC_UP, KC_DOWN, BP_BSLS, BP_CCED, BP_PERC - -#define ___4_BOTTOM_LEFT_BP___ LCTL(BP_C), BP_EACU, KC_LEFT, KC_RIGHT -#define ___4_BOTTOM_RIGHT_BP___ KC_UP, KC_DOWN, BP_BSLS, BP_CCED - -// for combo ref layers for kinesis, dactyl and kinesis. -#define ___5_BOTTOM_LEFT_FR___ ___X3___, KC_LEFT, KC_RIGHT -#define ___5_BOTTOM_RIGHT_FR___ KC_UP, KC_DOWN, BP_BSLS, ___X2___ - -#define ___4_BOTTOM_LEFT_CB___ ___4_LEFT_4_CB___ -#define ___4_BOTTOM_RIGHT_CB___ ___4_RIGHT_4_CB___ - -#define ___4_BOTTOM_LEFT_CB2___ ___4_LEFT_4_CB2___ -#define ___4_BOTTOM_RIGHT_CB2___ ___4_RIGHT_4_CB2___ - -#define ___5_BOTTOM_LEFT_CB___ ___5_LEFT_4_CB___ -#define ___5_BOTTOM_RIGHT_CB___ ___5_RIGHT_4_CB___ - -#define ___5_BOTTOM_LEFT_CB2___ ___5_LEFT_4_CB2___ -#define ___5_BOTTOM_RIGHT_CB2___ ___5_RIGHT_4_CB2___ - -// basically a 5th row in a 5x matrix. but maybe a 4th if there isnt a number row. -// need an en, because we a have a BP and we used it directly in the layout. -#define ___15_BOTTOM_EN___ ___5_BOTTOM_LEFT___, ___5_MIDDLE_THUMBS___, ___5_BOTTOM_RIGHT___ -#define ___15_BOTTOM_FR___ ___5_BOTTOM_LEFT_FR___, ___5_MIDDLE_THUMBS___, ___5_BOTTOM_RIGHT_FR___ -#define ___15_BOTTOM_BP___ ___5_BOTTOM_LEFT_BP___, ___5_MIDDLE_THUMBS___, ___5_BOTTOM_RIGHT_BP___ -#define ___15_BOTTOM_CB___ ___5_LEFT_4_CB___, ___5_MIDDLE_4_CB___, ___5_RIGHT_4_CB___ -#define ___15_BOTTOM_CB2___ ___5_LEFT_4_CB2___, ___5_MIDDLE_4_CB2___, ___5_RIGHT_4_CB2___ - -// need an en, because we a have a BP and we used it directly in the layout. -#define ___14_BOTTOM_EN___ ___5_BOTTOM_LEFT___, ___4_MIDDLE_4b___, ___5_BOTTOM_RIGHT___ -#define ___14_BOTTOM_FR___ ___5_BOTTOM_LEFT_FR___, ___4_MIDDLE_4b___, ___5_BOTTOM_RIGHT_FR___ -#define ___14_BOTTOM_BP___ ___5_BOTTOM_LEFT_BP___, ___4_MIDDLE_4b___, ___5_BOTTOM_RIGHT_BP___ -#define ___14_BOTTOM_CB___ ___5_LEFT_4_CB___, ___4_MIDDLE_4_CB___, ___5_RIGHT_4_CB___ -#define ___14_BOTTOM_CB2___ ___5_LEFT_4_CB2___, ___4_MIDDLE_4_CB2___, ___5_RIGHT_4_CB2___ - -#define ___14_THUMBS_BOTTOM___ ___X4___, ___6_ERGO_THUMBS___, ___X4___ diff --git a/users/ericgebhart/layers/keypads.h b/users/ericgebhart/layers/keypads.h deleted file mode 100644 index ab4100594d..0000000000 --- a/users/ericgebhart/layers/keypads.h +++ /dev/null @@ -1,236 +0,0 @@ -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ -/**********************************************_**********************************/ -/* KEYPADS. Mostly all in Bepo and Qwerty versions */ -/* 4 row Pads: */ -/* * The BEAKL 15,19 Number pad, for the left hand. */ -/* * The BEAKL Wi hex pad, Number pad. */ -/* * Regular Number pad, for the right hand. */ -/* * 12 Function pad. */ -/* 3 row pads: */ -/* keypad */ -/* function pad - 3x4, 12 function keys. */ -/* */ -/* LAYERS: */ -/* 4 Row: */ -/* * BEAKL with a compact FuncPad on the right. */ -/* * Funcpad on the left, keypad on the right. */ -/* 3 Row: */ -/* * Funcpad on the left, keypad on the right. */ -/* * BEAKL with a compact FuncPad on the right. */ -/* */ -/********************************************************************************/ - -// BEAKL 15 (numpad layer): -/* +=* ^%~ */ -/* â†đ523: */ -/* - 7.104 */ -/* /698, */ - -/* BEAKL27 (numpad layer): */ -/* â†đ+/\*= yxz */ -/* -523: ~FED */ -/* 7.104 {CBA} */ -/* ,698⏎ []% */ - -// Keypads -#define ___KEYPAD_BEAKL_L1___ ___, _PLUS, _SLSH, _ASTR, _EQL -#define ___KEYPAD_BEAKL_L2___ _MINS, _5, _2, _3, _COLN -#define ___KEYPAD_BEAKL_L3___ _7, _DOT, _1, _0, _4 -#define ___KEYPAD_BEAKL_L4___ _COMM, _6, _9, _8, _COMM - -#define ___6KEYPAD_BEAKL_L1___ ___, KEYPAD_BEAKL_L1 -#define ___6KEYPAD_BEAKL_L2___ ___, KEYPAD_BEAKL_L2 -#define ___6KEYPAD_BEAKL_L3___ KC_MINS, KEYPAD_BEAKL_L3 -#define ___6KEYPAD_BEAKL_L4___ ___, KEYPAD_BEAKL_L4 - -// if there's room. the top row on the right. -#define ___KEYPAD_BEAKL_R1___ ___, KC_CIRC, KC_PERC, KC_TILD, ___ - - - -/// parts is parts. - -#define ___KP_BKL_WI_L1___ _X_, HEX_A, HEX_B, HEX_C, _X_ -#define ___KP_BKL_WI_L2___ _X_, HEX_D, HEX_E, HEX_F, _X_ -#define ___KP_BKL_WI_L3___ _X_, L_BRKT, R_BRKT, DELIM, _X_ - -#define ___KP_BKL_WI_R1___ _SLSH, _4, _5, _9, _ASTR -#define ___KP_BKL_WI_R2___ _DOT , _1, _2, _3, _MINS -#define ___KP_BKL_WI_R3___ _COMM, _8, _6, _7, _PLUS - -#define ___KEYPAD_1___ ___, _7, _8, _9, _PSLS -#define ___KEYPAD_2___ _DOT, _4, _5, _6, _PAST -#define ___KEYPAD_3___ _0, _1, _2, _3, _PMNS - -#define ___KEYPAD_miryoku_1___ _LBRC, _7, _8, _9, _RBRC, ____5_ -#define ___KEYPAD_miryoku_2___ _SCLN, _4, _5, _6, _EQUAL, ____5_ -#define ___KEYPAD_miryoku_3___ _GRV, _1, _2, _3, _BSLS, ____5_ - -// 4 Row keypads -#define ___5KEYPAD_1___ _X_, ___KEYPAD_1___ -#define ___5KEYPAD_2___ _X_, ___KEYPAD_2___ -#define ___5KEYPAD_3___ _X_, ___KEYPAD_3___ -#define ___5KEYPAD_4___ _X_, _0, _DOT, _PEQL, _PPLS - -// Function pad. Same idea as above, but for function keys. - -// Funcpads are a bit weird. THey are KC values, so for -// this to work, there are BP_ versions of the F keys. -// I don't really use this, so maybe it'll go away in favor -// of something more useful. -// 4x3 and 3x4 funcpads. -// Only 4 columns, so the fifth can be added to either end. -#define ___4_FUNCPAD_1___ _F9, _F10, _F11, _F12 -#define ___4_FUNCPAD_2___ _F5, _F6, _F7, _F8 -#define ___4_FUNCPAD_3___ _F1, _F2, _F3, _F4 - -#define ___FUNCPAD_miryoku_1___ KC_F12, KC_F7, KC_F8, KC_F9, KC_PRINT_SCREEN -#define ___FUNCPAD_miryoku_2___ KC_F11, KC_F4, KC_F5, KC_F6, KC_SCROLL_LOCK -#define ___FUNCPAD_miryoku_3___ KC_F10, KC_F1, KC_F2, KC_F3, KC_PAUSE - -// For the left or right side. -#define ___5x4_FUNCPAD_T___ _TRNS, _F10, _F11, _F12, _TRNS -#define ___5x4_FUNCPAD_1___ _TRNS, _F7, _F8, _F9, _TRNS -#define ___5x4_FUNCPAD_2___ _TRNS, _F4, _F5, _F6, _TRNS -#define ___5x4_FUNCPAD_3___ _TRNS, _F1, _F2, _F3, _TRNS - - -/********************************************************************************/ -/* FUNCPAD and Keypad Layer chunks */ -/********************************************************************************/ -// beakl wi is a hexpad numpad. -/* Beakle Wi, Hexpad and keypad - needs a zero somewhere.*/ -#define CARTE_KP_BKL_WI \ - carte_de_map( " ABC /459* ", \ - " DEF .123- ", \ - " {}| ,867+ ") - -#define ___KP_BKL_WI_3x10___ \ - CHUNK_LANG_MAP(___KP_BKL_WI_L1___, ___KP_BKL_WI_R1___, \ - ___KP_BKL_WI_L2___, ___KP_BKL_WI_R2___, \ - ___KP_BKL_WI_L3___, ___KP_BKL_WI_R3___) - - -// BEAKL 15 and a f1-f12 funcpad -#define CARTE_KP_BKL_FUNC \ - carte_de_map(" 523: F9-12", \ - " -7.104 F5-8", \ - " /798, F1-4") - -#define ___KP_BKL_FUNC_3x10___ \ - CHUNK_LANG_MAP(___KEYPAD_BEAKL_L2___, _TRNS, ___4_FUNCPAD_1___, \ - ___KEYPAD_BEAKL_L3___, _TRNS, ___4_FUNCPAD_2___, \ - ___KEYPAD_BEAKL_L4___, _TRNS, ___4_FUNCPAD_3___) - -// BEAKL 15 and mods. -#define CARTE_KP_BKL_MODS \ - carte_de_map(" 523: SL Mods", \ - " -7.104 OS Mods", \ - " /798, Enter") - - -#define ___KP_BKL_MODS_3x10___ \ - CHUNK_LANG_MAP(___KEYPAD_BEAKL_L2___, _TRNS, ___SML_MODS_R___, \ - ___KEYPAD_BEAKL_L3___, ___OS_MODS_R___, \ - ___KEYPAD_BEAKL_L4___, _TRNS, _ENT, _ENT, _ENT, _TRNS) - -// 4 rows, BEAKL 15 and a f1-f12 funcpad -#define ___KP_BKL_FUNC_4x10___ \ - CHUNK_LANG_ROW(___KEYPAD_BEAKL_L1___, ___KEYPAD_BEAKL_R1___), \ - CHUNK_LANG_MAP(___KP_BKL_FUNC_3x10___) - -// 4 rows, funcpad, regular keypad on right. -#define ___FP_KP_4x10___ \ - CHUNK_LANG_ROW(___5x4_FUNCPAD_T___, ___5KEYPAD_1___), \ - CHUNK_LANG_MAP(___5x4_FUNCPAD_1___, ___5KEYPAD_2___, \ - ___5x4_FUNCPAD_2___, ___5KEYPAD_3___, \ - ___5x4_FUNCPAD_3___, ___5KEYPAD_4___) - -#define CARTE_FP_KP \ - carte_de_map(" F9-12 789+", \ - " F5-8 .456*", \ - " F1-4 0123-") - -// funcpad, regular keypad on right. -#define ___FP_KP_3x10___ \ - CHUNK_LANG_MAP(___4_FUNCPAD_1___, ___, ___5KEYPAD_1___, \ - ___4_FUNCPAD_2___, ___, ___5KEYPAD_2___, \ - ___4_FUNCPAD_3___, ___, ___5KEYPAD_3___) - -#define CARTE_KP_FP \ - carte_de_map(" 789+ F9-12", \ - " .456* F5-8", \ - " 0123- F1-4") -// regular keypad on left. -#define ___KP_FP_3x10___ \ - CHUNK_LANG_MAP(___5KEYPAD_1___, ___, ___4_FUNCPAD_1___, \ - ___5KEYPAD_2___, ___, ___4_FUNCPAD_2___, \ - ___5KEYPAD_3___, ___, ___4_FUNCPAD_3___) - -#define CARTE_MODS_KP \ - carte_de_map(" SMods 789+", \ - " OSMods .456*", \ - " F1-4 0123-") - -// funcpad, regular keypad on right. -#define ___MODS_KP_3x10___ \ - CHUNK_LANG_MAP(___SML_MODS_L___, ___, ___5KEYPAD_1___, \ - ___OS_MODS_L___, ___5KEYPAD_2___, \ - ___5___, ___5KEYPAD_3___) - -#define CARTE_KP_MODS \ - carte_de_map(" 789+ SMods", \ - " .456* OSMods", \ - " 0123- ") - -// regular keypad on left. -#define ___KP_MODS_3x10___ \ - CHUNK_LANG_MAP(___5KEYPAD_1___, ___, ___SML_MODS_R___, \ - ___5KEYPAD_2___, ___OS_MODS_L___, \ - ___5KEYPAD_3___, ___, ___4___) - -#define CARTE_FUN \ - carte_de_map(" F9-F12 SMods", \ - " F5-F8 OSMods", \ - " F1-F4 ") - -#define ___FUN_3x10___ \ - CHUNK_LANG_MAP(___4_FUNCPAD_1___, ___, ___, ___SML_MODS_R___, \ - ___4_FUNCPAD_2___, ___, ___OS_MODS_R___, \ - ___4_FUNCPAD_3___, ___, ___5___) - -#define CARTE_FUN_MIRYOKU \ - carte_de_map("F12 F7-F9 prt SMods", \ - "F11 F4-F6 scr OSMods", \ - "F10 F1-F3 pse ") - -#define ___FP_MIRYOKU_3x10___ \ - ___FUNCPAD_miryoku_1___, ___, ___SML_MODS_R___, \ - ___FUNCPAD_miryoku_2___, ___OS_MODS_R___, \ - ___FUNCPAD_miryoku_3___, ___5___ - -// wants . and 0 on left thumb. -#define CARTE_KP_MIRYOKU \ - carte_de_map(" [789]", \ - " ;456=", \ - " `123\\") - -#define ___KP_MIRYOKU_3x10___ \ - CHUNK_LANG_MAP(___KEYPAD_miryoku_1___, \ - ___KEYPAD_miryoku_2___, \ - ___KEYPAD_miryoku_3___) diff --git a/users/ericgebhart/layers/layers.h b/users/ericgebhart/layers/layers.h deleted file mode 100755 index 0f09d0cfc3..0000000000 --- a/users/ericgebhart/layers/layers.h +++ /dev/null @@ -1,112 +0,0 @@ -#pragma once -/* - Copyright 2018 Eric Gebhart - - 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 - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "keycodes.h" -/*********************************************************************/ -/* Non-Base Layer Definitions. */ -/* */ -/* Keypads, sympads, funcpads, symbols, RGB, Layers, Controls, etc. */ -/* Qwerty and Bepo versions exist as needed. */ -/* */ -/* This file defines every auxillary layer I use on every keyboard */ -/* Ergodox, keebio/viterbi, xd75, rebound, crkbd, morpho, dactyl,.. */ -/*********************************************************************/ -/********************************************************************************/ -/* The following Transient/Non-Base Layers are provided within. */ -/* Each layer is named with the size of Keymatrix it has entries for. */ -/* 3x10 are usual for these. I had 3x12's but I didn't need the edges really. */ -/* It was an attempt to accommodate Bepo which is 13 columns wide. */ -/* Even in a 3x12 Bepo is wonky. So I gave up on it. I also gave up on 4 row */ -/* layers, I really want my keys in that 3x5 space. Everything on the edges can */ -/* stay as it is. Splitting is managed in the macros as */ -/* needed. BP indicates the Bepo equivalent to the Qwerty layer when needed. */ -/********************************************************************************/ -/* */ -/* Explore below to see what they all are. */ -/* Naming gives the sizes of things, a prefix number is the length. */ -/* BP is the bepo version of things. */ -/* BKL is the beakl 15 version of a layout or chunk. */ -/* C on the end of a name means its a compact version of something. */ -/* Compact meaning for use on a 3 row layout. */ -/* */ -/* TOPROWS - numbers, symbols, functions, all on one layer. */ -/* ___TOPROWS_3x10___ */ -/* ___TOPROWS_BP_3x10___ */ -/* */ -/* KEYPADS/FUNCPADS. */ -/* ___KP_C_3x10___ */ -/* ___KP_C_BP_3x10___ */ -/* ___KP_C_BKL_FUNC_3x10___ -- BEAKL key/func pads. */ -/* ___KP_C_BKL_FUNC_BP_3x10___ */ -/* */ -/* SYMBOLS -Beakl or Beakl extended */ -/* ___SYMB_BEAKL_3x10___ */ -/* ___SYMB_BEAKL_BP_3x10___ */ -/* */ -/* Beakl extended symbol layer with additional corner symbols. */ -/* For use with non-beakl base layers. */ -/* ___SYMB_BEAKLA_3x10___ */ -/* ___SYMB_BEAKLA_BP_3x10___ */ -/* For use with vi bindings optimized */ -/* ___SYMB_BEAKLB_3x10___ */ -/* ___SYMB_BEAKLB_BP_3x10___ */ -/* */ -/* NAVIGATION */ -/* ___NAV_3x10___ */ -/* */ -/* CONTROLS */ -/* ___RGB_3x10___ */ -/* ___ADJUST_3x10___ */ - /* ___LAYERS_3x10___ */ - /********************************************************************************/ - /*********************************************************************/ - /* XXXXXX Layer chunk -- These are the final layers. */ - /* */ -/* Each section defines the necessary pieces to create a layer. */ -/* It builds them up into consistently shaped lists for the layout */ -/* wrapper. */ -/* */ -/* Each Section ends with a _Layer Chunk_. This is so the */ -/* layer can be easily given to the Layout Wrapper macros which */ -/* takes a list of keys in lengths of 2x3x5, 2x3x6, 2x4x5, or 2x4x6. */ -/* */ -/* All of my keyboard definitions use these same chunks with similar */ -/* macros. The differences between keyboards are all managed in the */ -/* macro. Here we just have nice rectangular sets of keys to */ -/* complete a layout. */ -/*********************************************************************/ - -// these are needed so that groups of defined keys will unravel -// into their values. The Base layers don't need them becuse the -// keys are explicit in their passing. Here, chunks are made for -// convenience and reuse. They don't unravel unless we wrap these -// in var args. -#define CHUNK_LANG_MAP(...) LANG_MAP(__VA_ARGS__) -#define CHUNK_LANG_ROW(...) LANG_ROW(__VA_ARGS__) - -// 5 wide, with the two shot control. -#define ___OS_MODS_L___ OS_LGUI, OS_LALT, OS_LCTL, OS_LSFT, TS_LCTL -#define ___OS_MODS_R___ TS_RCTL, OS_RSFT, OS_RCTL, OS_RALT, OS_RGUI -// 4 wide. -#define ___SML_MODS_L___ SMLM_LGUI, SMLM_LALT, SMLM_LCTL, SMLM_LSFT -#define ___SML_MODS_R___ SMLM_RSFT, SMLM_RCTL, SMLM_RALT, SMLM_RGUI - -#include "keypads.h" -#include "nav.h" -#include "symbols.h" -#include "toprows.h" -#include "utility.h" diff --git a/users/ericgebhart/layers/nav.h b/users/ericgebhart/layers/nav.h deleted file mode 100644 index 97243872e2..0000000000 --- a/users/ericgebhart/layers/nav.h +++ /dev/null @@ -1,199 +0,0 @@ -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ -/********************************************************************************/ -/* NAVIGATION - MOUSE, Scroll, Buttons, Arrows, Tab, Home, page up/down, End */ -/* Navigation layers: */ -/* 3 row Layer */ -/* 4 Row Layer with repeated and swapped VI arrows, and Scroll wheel. */ -/********************************************************************************/ -/* */ -/* Navigation layer with optional 4th Row.... */ -/* */ -/* M = Mouse */ -/* B = Button */ -/* W = Wheel */ -/* AC = Acceleration */ -/* CCCV = Tap -> Ctrl-C, hold for double tap duration -> Ctrl-V */ -/* CTCN = Tap -> Ctrl-T, hold for double tap duration -> Ctrl-N */ -/* CWCQ = Tap -> Ctrl-W, hold for double tap duration -> Ctrl-Q */ -/* HOME = TAB & PGDN */ -/* END = BKTAB & PGUP -- See combos. */ -/* */ -/* MB5 MB4 MB3 MB2 MB1 MAC0 | CTCN MB1 MB2 MB3 MB4 MB5 */ -/* TAB MLeft MDown MUp MRight MAC1 | CCCV Left Down UP Right TAB */ -/* WLeft WDown WUp WRight MAC2 | CWCQ TAB PGDN PGUP BKTAB */ -/* */ -/* Left Down Up Right CCCV | CCCV MLeft MDown MUp MRight */ -/* */ -/********************************************************************************/ - -#ifdef MOUSEKEY_ENABLE -#define ___MOUSE_LDUR___ KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R -#define ___MWHEEL_LDUR___ KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R -// really BTN 1, 2, 3, 8, 9 - according to xev. -#define ___MOUSE_BTNS_R___ KC_BTN1, KC_BTN3, KC_BTN2, KC_BTN4, KC_BTN5 -#define ___4MOUSE_BTNS_R___ KC_BTN1, KC_BTN3, KC_BTN2, KC_BTN4 -#define ___3MOUSE_BTNS_R___ KC_BTN1, KC_BTN3, KC_BTN2 -// really BTN 9, 8, 3, 2, 1 - according to xev -#define ___4MOUSE_BTNS_L___ KC_BTN4, KC_BTN2, KC_BTN3, KC_BTN1 -#define ___MOUSE_BTNS_L___ KC_BTN5, KC_BTN4, KC_BTN2, KC_BTN3, KC_BTN1 -#define ___MOUSE_ACCL_012___ KC_ACL0, KC_ACL1, KC_ACL2 -#define ___MACCL___ ___MOUSE_ACCL_012___ -#endif - -#define ___VI_ARROWS___ KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT -#define ___HOME_PGDN_PGUP_END___ KC_HOME, KC_PGDN, KC_PGUP, KC_END -#define ___TAB_PGDN_PGUP_BKTAB___ KC_TAB, KC_PGDN, KC_PGUP, KC_BKTAB -// home and end are combos. tab/pgdn = home, bktab/pgup = end. - -#define ___REDO_CUT_COPY_PASTE_UNDO___ S_REDO, S_CUT, S_COPY, S_PASTE, S_UNDO - -#ifdef MOUSEKEY_ENABLE -#define ___NAV_La_1___ ___SML_MODS_L___, KC_ACL0 -#define ___NAV_L_1___ ___4MOUSE_BTNS_L___, KC_ACL0 -#define ___NAV_L_2___ ___MOUSE_LDUR___, KC_ACL1 -#define ___NAV_L_3___ ___MWHEEL_LDUR___, KC_ACL2 -#define ___NAV_L_4___ ___VI_ARROWS___, KC_CCCV - -#define ___NAV_R_1___ KC_CTCN, ___4MOUSE_BTNS_R___ -#define ___NAV_R_4___ KC_CCCV, ___MOUSE_LDUR___ - -#else - -#define ___NAV_La_1___ ___NAV_L_1___ -#define ___NAV_L_1___ ___OS_MODS_L___ -#define ___NAV_L_2___ ___SML_MODS_L___, ___ -#define ___NAV_L_3___ ___5___ -#define ___NAV_L_4___ ___VI_ARROWS___, KC_CCCV - -#define ___NAV_R_1___ KC_CTCN, ___SML_MODS_R___ -#define ___NAV_R_4___ KC_CCCV, ___4___ - -#endif // end mousekey - -#define ___NAV_R_2___ KC_CCCV, ___VI_ARROWS___ -#define ___NAV_R_3___ KC_CWCQ, ___HOME_PGDN_PGUP_END___ -#define ___NAV_Ra_3___ KC_CWCQ, ___TAB_PGDN_PGUP_BKTAB___ - -#ifdef MOUSEKEY_ENABLE - -#define ___6NAV_L_1___ ___MOUSE_BTNS_L___, KC_ACL0 -#define ___6NAV_L_2___ TAB_BKTAB, ___MOUSE_LDUR___, KC_ACL1 -#define ___6NAV_L_3___ ___, ___MWHEEL_LDUR___, KC_ACL2 -#define ___6NAV_L_4___ ___, ___VI_ARROWS___, KC_CCCV - -#define ___6NAV_R_1___ KC_CTCN, ___MOUSE_BTNS_R___ -#define ___6NAV_R_4___ KC_CCCV, ___MOUSE_LDUR___, ___ - -#else - -#define ___6NAV_L_1___ ___6___ -#define ___6NAV_L_2___ TAB_BKTAB, ___SML_MODS_L___, ___ - -#define ___6NAV_L_3___ ___, ___5___ -#define ___6NAV_L_4___ ___, ___VI_ARROWS___, KC_CCCV - -#define ___6NAV_R_1___ KC_CTCN, ___SML_MODS_R___ -#define ___6NAV_R_4___ KC_CCCV, ___4___, ___ - -#endif // end mousekey - -#define ___6NAV_R_2___ KC_CCCV, ___VI_ARROWS___, TAB_BKTAB -#define ___6NAV_R_3___ KC_CWCQ, ___HOME_PGDN_PGUP_END___, ___ - -// compact. 3x10 per layer. -#define ___10_NAV_1a___ ___NAV_La_1___, ___NAV_R_1___ -#define ___10_NAV_1___ ___NAV_L_1___, ___NAV_R_1___ -#define ___10_NAV_2___ ___NAV_L_2___, ___NAV_R_2___ -#define ___10_NAV_3___ ___NAV_L_3___, ___NAV_Ra_3___ - -// designed without mouse, mods on left. -#define ___NAVnm_La_1___ ___NAV_L_1___ -#define ___NAVnm_L_1___ ___SML_MODS_L___ -#define ___NAVnm_L_2___ ___OS_MODS_L___, ___ -#ifdef MOUSEKEY_ENABLE -#define ___NAVnm_L_3___ ___2___, SML_NAVm, ___2___ // get to mouse layer if enabled. -#else -#define ___NAVnm_L_3___ ___5___ -#endif - -#define ___10_NAVnm_1___ ___SML_MODS_L___, ___, ___NAV_R_1___ -#define ___10_NAVnm_2___ ___OS_MODS_L___, ___NAV_R_2___ -#define ___10_NAVnm_3___ ___NAVnm_L_3___, ___NAV_R_3___ - -#ifdef MOUSEKEY_ENABLE -// Mouse layer only. mods on right. -#define ___10_NAVm_1___ ___NAV_L_1___, ___NAV_R_1___ -#define ___10_NAVm_2___ ___NAV_L_2___, ___NAV_R_2___ -#define ___10_NAVm_3___ ___NAV_L_3___, ___NAV_R_3___ -#endif - -/********************************************************************************/ -/* The Navigation LAYER Chunks */ -/********************************************************************************/ -// A Navigation Layer -#define CARTE_NAV \ - carte_de_map("54321 0 ctn 12345", \ - " ldur 1 ccv ldur", \ - " ldur 2 cwq tdubt") - -#define CARTE_NAVA \ - carte_de_map(" gacs 0 ctn 12345", \ - " ldur 1 ccv ldur", \ - " ldur 2 cwq tdubt") - -#define CARTE_NAVnm \ - carte_de_map(" gacsc2 ctn cscag ", \ - " gacs ccv ldur", \ - " __M_ cwq tdubt") - -// currently the same as NAVA -#define CARTE_NAVm \ - carte_de_map(" gacs 0 ctn 12345", \ - " ldur 1 ccv ldur", \ - " ldur 2 cwq tdubt") - -#define CARTE_NAV_miryoku \ - carte_de_map(" rdo ccp undo", \ - " Caps ldur", \ - " Ins HDUE") - -#define CARTE_NAVm_miryoku \ - carte_de_map(" rdo ccp undo", \ - " ldur", \ - " ldur") - - -#ifdef MOUSEKEY_ENABLE -#define ___NAVm_3x10___ ___10_NAVm_1___, ___10_NAVm_2___, ___10_NAVm_3___ -#endif - -#define ___NAVnm_3x10___ ___10_NAVnm_1___, ___10_NAVnm_2___, ___10_NAVnm_3___ -#define ___NAVA_3x10___ ___10_NAV_1a___, ___10_NAV_2___, ___10_NAV_3___ -#define ___NAV_3x10___ ___10_NAV_1___, ___10_NAV_2___, ___10_NAV_3___ -#define ___NAV_3x12___ ___12_NAV_1___, ___12_NAV_2___, ___12_NAV_3___ -#define ___NAV_miryoku___ \ - ___5___, ___redo_cut_copy_paste_undo___, \ - ___5___, KC_CAPS, ___VI_ARROWS___, \ - ___5___, KC_INSERT, ___HOME_PGDN_PGUP_END___ - -#ifdef MOUSEKEY_ENABLE -#define ___NAVm_miryoku___ \ - ___5___, ___redo_cut_copy_paste_undo___, \ - ___5___, ___, ___MOUSE_LDUR___, \ - ___5___, ___, ___MWHEEL_LDUR___, -#endif diff --git a/users/ericgebhart/layers/symbols.h b/users/ericgebhart/layers/symbols.h deleted file mode 100644 index 272bd9b850..0000000000 --- a/users/ericgebhart/layers/symbols.h +++ /dev/null @@ -1,225 +0,0 @@ -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ -/******************************************************************/ -/* */ -/* Symbol layers: */ -/* */ -/* The BEAKL15 Symbol layer with or without additions. */ -/* */ -/* There is the offical beakl symbol layer, an extended symbol */ -/* layer which is expanded with: !?@`'/-;. */ -/* */ -/* Placing these 8 keys in the pinky and index corners */ -/* at the edges of the, 3x3, BEAKL home Region. */ -/* */ -/* Beakl has these keys in it's base layer which isn't the case */ -/* for other layouts like dvorak, colemak, etc. */ -/* */ -/* The third layer moves /:? to more accessible places. */ -/* to make vi keybindings more accessible. */ -/* */ -/* Note that there are 2 widths. 12 and 10. The wider layer adds */ -/* - and ; to the middle row edges. */ -/* */ -/* Official: */ -/* <$> [_] */ -/* - \(")# %{=}| ; */ -/* :*+ &^~ */ -/* */ -/* not yet implemented */ -/* BEAKL27 (punctuation layer): */ -/* â†đ@$#â†đ ~^` */ -/* â†đ<=> [_] */ -/* \(-)+ %{;}! */ -/* *:/⏎ |~& */ -/* */ -/* */ -/* BEAKL Extended symbol layer */ -/* Expanded with: !?@`'/-; */ -/* */ -/* A: */ -/* `<$>' ?[_]- */ -/* - \(")# %{=}| ; */ -/* @:*+; !&^~/ */ -/* */ -/* Optimized for Vi. */ -/* B: */ -/* */ -/* `<$>' ?[_]- */ -/* - \(")# !{:}/ ; */ -/* @=*+; %&^~| */ -/* */ -/* C: */ -/* */ -/* `<$>' ?[_-] */ -/* - \("#) !{:/} ; */ -/* @=*+; %&^~| */ -/* */ -/* */ -/* Both ; and ' could have found their dvorak positions. Analysis showed */ -/* that only caused pinky overuse. Rotating the symbols around Put better */ -/* keys on the index finger which showed a huge improvement in efficiency. */ -/* The same is true of the exclamation point. */ -/* */ - -/* Beakl Wi */ - -/* This Symbol layer does not improve on the above extended symbol */ -/* layers in my opinon, for my usage. */ - -/* The original symbol was the Left side with defined/but/transparent */ -/* right. The regex layer was the opposite. I combined them into one, I am */ -/* not sure of the functionality that might be lost due to that, but they */ -/* are defined as original sans extra tap dance functions. It would be easy to */ -/* make two layers with transparent right and left. There is duplication */ -/* of | and *. */ - -/* Symbols on the left */ -/* .*&+ */ -/* ?!/| */ -/* <>%@ */ - -// regex on the right -/* *[^] */ -/* ?($) */ -/* |{#} */ - -// Altogether -/* .*&+ *[^] */ -/* ?!/| ?($) */ -/* <>%@ |{#} */ -/******************************************************************/ - -// Left -#define ___SB_L1___ _OCLTGT, _DLR, _GT -#define ___SB_L2___ _BSLS, _OCPRN, _OCDQUO, _RPRN, _HASH -#define ___SB_L2c___ _BSLS, _OCPRN, _OCDQUO, _HASH, _RPRN -#define ___SB_L3___ _COLN, _ASTR, _PLUS - -// Right -#define ___SB_R1___ _OCBRC, _UNDS, _RBRC -#define ___SB_R1c___ _OCBRC, _UNDS, _MINS -#define ___SB_R2___ _PERC, _OCCBR, _EQL, _RCBR, _PIPE -#define ___SB_R3___ _AMPR, _CIRC_ND, _TILD_ND - -// a and b... left and right. -#define ___SB_L3b___ _EQL, _ASTR, _PLUS - -#define ___SB_R2a___ _PERC, _OCCBR, _EXLM, _RCBR, _PIPE -#define ___SB_R2b___ _EXLM, _OCCBR, _COLN, _RCBR, _SLSH -#define ___SB_R2c___ _EXLM, _OCCBR, _COLN, _SLSH, _RCBR - -// --------------------------- -// --------------------------- -#define CARTE_SYMB_BEAKL \ - carte_de_map(" <$> [_] ", \ - "-\\(\")# %{=}|;", \ - " :*+ &^~ ") - -#define ___SYMB_BEAKL_3x10___ \ - CHUNK_LANG_MAP(_TRNS, ___SB_L1___, _TRNS, _TRNS, ___SB_R1___, _TRNS, \ - ___SB_L2___, ___SB_R2___, \ - _TRNS, ___SB_L3___, _TRNS, _TRNS, ___SB_R3___, _TRNS) - -// --------------------------- -// A: Extended. -#define CARTE_SYMB_BEAKLA \ - carte_de_map(" `<$>' ?[_]-", \ - " -\\(\")# %{:}|;", \ - " @=*+; !&^~/") - -#define ___SYMB_BEAKLA_3x10___ \ - CHUNK_LANG_MAP(_OCGRV, ___SB_L1___, _OCQUOT, _QUES, ___SB_R1___, _MINS, \ - ___SB_L2___, ___SB_R2a___, \ - _AT, ___SB_L3___, _SCLN, _EXLM, ___SB_R3___, _SLSH) - -// --------------------------- -// B: Extended & Vi -#define CARTE_SYMB_BEAKLB \ - carte_de_map(" `<$>' ?[_]-", \ - " -\\(\")# !{:}/;", \ - " @=*+; %&^~|") - -#define ___SYMB_BEAKLB_3x10___ \ - CHUNK_LANG_MAP(_OCGRV, ___SB_L1___, _OCQUOT, _QUES, ___SB_R1___, _MINS, \ - ___SB_L2___, ___SB_R2b___, \ - _AT, ___SB_L3b___, _SCLN, _PERC, ___SB_R3___, _PIPE) - -// --------------------------- -// C: Extended & Vi, move closing braces to pinky, seldom used. -// because of tap hold - open_openclose feature. -// Also emacs which mostly closes them. -#define CARTE_SYMB_BEAKLC \ - carte_de_map(" `<$>' ?[_-]", \ - " -\\(\"#) !{:/};", \ - " @=*+; %&^~|") - -#define ___SYMB_BEAKLC_3x10___ \ - CHUNK_LANG_MAP(_OCGRV, ___SB_L1___, _OCQUOT, _QUES, ___SB_R1c___, _RBRC, \ - ___SB_L2c___, ___SB_R2c___, \ - _AT, ___SB_L3b___, _SCLN, _PERC, ___SB_R3___, _PIPE) - -// wants ( and ) on the left thumb. -#define CARTE_SYMB_MIRYOKU \ - carte_de_map(" {&.(} ", \ - " :$%^+ ", \ - " ~!@#| ") - -#define ___SYMB_MIRYOKU_3x10___ \ - CHUNK_LANG_MAP(_OCCBR, _AMPR, _DOT, _OCPRN, _RCBR, ____5_, \ - _COLN, _DLR, _PERC, _CIRC_ND, _PLUS, ____5_, \ - _TILD_ND, _EXLM, _AT, _HASH, _PIPE, ____5_) - -// --------------------------- -// WI: the Beakl Wi definition. -#define ___SYMB_BKL_WI_L1___ ___, _DOT, _ASTR, _AMPR, _PLUS -#define ___SYMB_BKL_WI_L2___ ___, _QUES, _EXLM, _SLSH, _PIPE -#define ___SYMB_BKL_WI_L3___ ___, _LT, _GT, _PERC, _AT - -#define ___SYMB_BKL_WI_R1___ _ASTR, _OCBRC, _CIRC_ND, _RBRC, ___ -#define ___SYMB_BKL_WI_R2___ _QUES, _OCPRN, _DLR , _RPRN, ___ -#define ___SYMB_BKL_WI_R3___ _PIPE, _OCCBR, _HASH, _RCBR, ___ - -#define CARTE_SYMB_BEAKLWI \ - carte_de_map(" .*&+ *[^] ", \ - " ?!/| ?($) ", \ - " <>%@ |{#} ") - -#define ___SYMB_BEAKL_WI_3x10___ \ - CHUNK_LANG_MAP(___SYMB_BKL_WI_L1___, ___SYMB_BKL_WI_R1___, \ - ___SYMB_BKL_WI_L2___, ___SYMB_BKL_WI_R2___, \ - ___SYMB_BKL_WI_L3___, ___SYMB_BKL_WI_R3___) - -// --------------------------- -// Neo symbol layer -#define ___SYMB_NEO_L1___ ___, _OCDQUOT, _UNDS, _OCLBRC, _RBRC, _CIRC_ND -#define ___SYMB_NEO_L2___ ___, _SLSH, _MINS, _OCLCBR, _RCBR, _ASTR -#define ___SYMB_NEO_L3___ ___, _HASH, _DLR, _PIPE, _TILD_ND, _OCGRV - -#define ___SYMB_NEO_R1___ _EXLM, _LT, _GT, _EQL, _AMPR -#define ___SYMB_NEO_R2___ _QUES, _OCPRN, _RPRN , _QUOT, _COLN -#define ___SYMB_NEO_R3___ _PLUS, _PERC, _BSLS, _AT, ___ - -#define CARTE_SYMB_NEO \ - carte_de_map("\"_[]^ !<>=&", \ - "/-{}* ?()':", \ - "#$|~` +%\@") - -#define ___SYMB_NEO_3x10___ \ - CHUNK_LANG_MAP(___SYMB_NEO_L1___, ___SYMB_NEO_R1___, \ - ___SYMB_NEO_L2___, ___SYMB_NEO_R2___, \ - ___SYMB_NEO_L3___, ___SYMB_NEO_R3___) diff --git a/users/ericgebhart/layers/thumbs.h b/users/ericgebhart/layers/thumbs.h deleted file mode 100644 index a78b3a9532..0000000000 --- a/users/ericgebhart/layers/thumbs.h +++ /dev/null @@ -1,276 +0,0 @@ -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ - -// Split thumbs. - -// Split these down the middle to think in left and right hand. -// Top row on kinesis, ergodox, etc. -#define ___THUMBS_1___ \ - ___X___ , MO_ADJUST, MO_LAYERS, OSL(LN_TOPROWS) - -// Middle row on kinesis, ergodox, etc. -#define ___THUMBS_2___ HOME_END, KC_PGUP - -#define ___4_THUMBS_1___ ___X___, KC_HOME, KC_PGUP, OSL(LN_TOPROWS) -#define ___6_THUMBS_2___ KC_LSFT, KC_BKTAB, KC_END, KC_PGDN, KC_TAB, KC_RSFT -#define ___6_THUMBS_2_CB___ KC_LSFT, KC_BKTAB, KC_END, KC_PGDN, KC_TAB, KC_RSFT - -#define ___6_THUMBS_2a___ BSPC_SYMB, ESC_TOPR, ESC_TOPR, ENT_NAV, ENT_NAV, SPC_TOPR -#define ___6_THUMBS_2a_CB___ BSPC_SYMB, ESC_TOPR, ESC_TOPR, ENT_NAV, ENT_NAV, SPC_TOPR - - -// This has become the default center group of thumbs for all -// So here's the beakl wi thumbs adapted to this combined layer system. -// -#define ___6_ERGO_THUMBS_WI___ \ - ESC_TOPR, I_SYMB, TAB_NUM, ENT_NAV, SPC_SYMB, BSPC_NAV - -// Like my other thumb rows. With an I. -#define ___6_ERGO_THUMBS_WIa___ \ - BSPC_NAV, I_SYMB, ESC_TOPR, ENT_NAV, SPC_TOPR, TAB_NUM - -#define ___6_ERGO_THUMBS_layers___ \ - SML_NAV, BSPC_SYMB, ESC_TOPR, ENT_NAV, SPC_TOPR, ACCCENTS_RALT - -#define ___6_ERGO_THUMBS_COMBO___ CB_TH1, CB_TH2, CB_TH3, CB_TH4, CB_TH5, CB_TH6 -#define ___6_ERGO_THUMBS_COMBO2___ CB2_TH1, CB2_TH2, CB2_TH3, CB2_TH4, CB2_TH5, CB2_TH6 - -// Transparent. -#define ___6_ERGO_THUMBS_trns___ ___6___ - -// A place to test stuff. -#define ___6_ERGO_THUMBS_tst___ \ - TT_KEYPAD, BSPC_SYMB, ESC_TOPR, ENT_NAV, SPC_TOPR, KC_XM_PORD - -#define ___6_ERGO_THUMBS_mods___ \ - ALT_DEL, CTL_BSPC, GUI_ESC, ALT_ENT, CTL_SPC, XC_XM_PORD - -#define ___6_ERGO_THUMBS_mod_layers___ \ - ALT_DEL, BSPC_SYMB, GUI_ESC, CTL_ENT, SPC_TOPR, ACCENTS_RALT - -#define ___6_ERGO_THUMBS_mod_layers_nav___ \ - ALT_DEL, BSPC_SYMB, GUI_ESC, ENT_NAV, SPC_TOPR, ACCENTS_RALT - -// for keymaps that need a letter on the thumb. -#define ___6_ERGO_THUMBS_left_letter___ \ - BSPC_ALT, TH_LTR_SYM, GUI_ESC, ENT_NAV, SPC_TOPR, KC_TAB - -// an attempt at an approximation of the HD thumbs as they are on the site. -// really should be expected to be a starting point that doesnt strand you. -#define ___6_ERGO_THUMBS_hd___ \ - BSPC_ALT, TH_LTR_SYM, GUI_ESC, ENT_NAV, SPC_TOPR, ACCENTS_CTL -#define ___6_ERGO_THUMBS_hd_a___ \ - OS_LSHIFT, TH_LTR_SYM, GUI_ESC, BSPC_ALT, SPC_TOPR, ACCENTS_CTL -#define ___6_ERGO_THUMBS_hd_simple___ \ - MO_SYMB, THUMB_LETTER, KC_ENT, KC_BSPC, KC_SPC, MO_TOPROWS -/* HD dash has thumbs of ,; and .: */ -#define ___6_ERGO_THUMBS_hd_dash___ \ - LANG_KC(TL_COMM), TL_DOT_SYMB, GUI_ESC, ENT_NAV, SPC_TOPR, BSPC_NUM - -#define ___6_ERGO_THUMBS_media___ ___3___, ___STOP_PLAY_MUTE___ -#define ___6_ERGO_THUMBS_mouse___ ___3___, ___3MOUSE_BTNS_R___ -#define ___6_ERGO_THUMBS_keypad___ \ - LANG_KC(_DOT), LANG_KC(_0), LANG_KC(_MINS), ___3___ -#define ___6_ERGO_THUMBS_symb___ \ - LANG_KC(_OCPRN), LANG_KC(_RPRN), LANG_KC(_UNDS), ___3___ - -// miryoku thumbs, either its toprows or keypad for numbers. -#define ___6_ERGO_THUMBS_miryoku_tr___ \ - ESC_MEDIA, SPACE_NAV, TAB_NAVM, ENT_SYM, BSPC_TOPR, DEL_FUN -#define ___6_ERGO_THUMBS_miryoku___ \ - ESC_MEDIA, SPACE_NAV, TAB_NAVM, ENT_SYM, BSPC_NUM, DEL_FUN -// lose the tab key, put a letter where space was. -// move space to the right side, put backspace where tab was. -#define ___6_ERGO_THUMBS_miryoku_ltr___ \ - ESC_MEDIA, TH_LTR_NAV, BSPC_NAVm, ENT_SYM, SPC_NUM, DEL_FUN -#define ___6_ERGO_THUMBS_miryoku_tr_ltr___ \ - ESC_MEDIA, TH_LTR_NAV, BSPC_NAVm, ENT_SYM, SPC_TOPR, DEL_FUN - -#define ___6_ERGO_THUMBS_miryoku_ltr_tab___ \ - BSPC_MEDIA, TH_LTR_NAV, TAB_NAVM, ENT_SYM, SPC_NUM, DEL_FUN - -#define ___6_ERGO_THUMBS_miryoku_tr_ltr_tab___ \ - BSPC_MEDIA, TH_LTR_NAV, TAB_NAVM, ENT_SYM, SPC_TOPR, DEL_FUN - -// Give the right symbol suffix by the value of THUMBS_ARE -// Basically we choose the right cluster here, so the layout -// level doesn't know or care. -// -// ___foo --> ___foo_WI___, or ___foo_WIa___, or ___foo_def___. -// THUMBS_ARE = WI, or WIa, or DEFAULT, TEST, TRNS, MOD_LAYERS, etc. -// the value of THUMB_LETTER is the key used when needed. -#define THUMB_EXT CAT(THUMBS_ARE, _EXT) -#define WI_EXT _WI___ -#define WIa_EXT _WIa___ -#define DEFAULT_EXT _mod_layers_nav___ //change this to change the default. -#define TEST_EXT _tst___ -#define TRNS_EXT _trns___ -#define MODS_EXT _mods___ -#define LAYERS_EXT _layers___ -#define MODS_LAYERS_EXT _mod_layers___ -#define MODS_LAYERS_NAV_EXT _mod_layers_nav___ -#define MIRYOKU_EXT _miryoku___ -#define MIRYOKU_TR_EXT _miryoku_tr___ -#define MIRYOKU_LTR_EXT _miryoku_ltr___ // miryoku versions with a letter -#define MIRYOKU_LTR_TAB_EXT _miryoku_ltr_tab___ -#define MIRYOKU_TR_LTR_EXT _miryoku_tr_ltr___ -#define MIRYOKU_TR_LTR_TAB_EXT _miryoku_tr_ltr_tab___ -#define TH_LTR_EXT _left_letter___ // takes a letter for the left thumb. -#define HD_DASH_EXT _hd_dash___ -#define HD_EXT _hd___ // takes a letter for the left thumb. -#define HDA_EXT _hd_a___ // relocate backspace -#define HD_SIMPLE_EXT _hd_simple___ // no LTs or MTÂīs. -// for the function layers -#define COMBO_EXT _COMBO___ -#define COMBO2_EXT _COMBO2___ -#define MEDIA_THUMBS_EXT _media___ -#define MOUSE_THUMBS_EXT _mouse___ -#define KEYPAD_THUMBS_EXT _keypad___ -#define SYMB_THUMBS_EXT _symb___ - -#define ___6_ERGO_THUMBS___ CAT2(___6_ERGO_THUMBS, THUMB_EXT) -// for the kyria, mostly for the combo reference layers. -#define ___10_ERGO_THUMBS___ CATR(___10_ERGO_THUMBS, EXP_THUMB_EXT) -#define ___4_THUMBS___ CAT2(___4_THUMBS, EXP_THUMB_EXT) - -/* #define ___6_ERGO_THUMBS___ ___6_ERGO_THUMBS_def___ */ - -/* #define ___ERGODOX_THUMB_LEFT___ \ */ -/* OSL(SYMB), OSM(KC_LGUI), \ */ -/* HOME_END, \ */ -/* CTL_BSPC, ALT_DEL, XMONAD_ESC */ - -/* #define ___ERGODOX_THUMB_RIGHT___ \ */ -/* XXX, OSL(KEYPAD), \ */ -/* KC_PGUP, \ */ -/* KC_PGDN, ALT_ENT, CTL_SPC */ - -// Translation of LT thumb keys from beakl wi where function layers -// have separate left and right to here, where I'm defining left and right in -// one layer and using it that way. I don't feel that having both halves -// on one layer hurts, if I invoke a layer, I'm not trying to use a non -// layer part of the keyboard. I don't have an edit layer, might be a good idea. -// have most of it on the Navigation layer. -// use the keycodes on that original layer, so It's not defined here. -// The wi keypad has a hexpad instead of a funcpad. All the other keypads -// have a funcpad on the opposite side. - -// translation of the original wi layers to those here. -// BSPC_NAV -// SPC_SYMB -// TAB_NUM -// ESC_func -> ESC_TOPR -// I_regex -> I_SYMB -// ENT_edit -> ENT_NAV - -/* // consolidated for kinesis, ergodox, and dactyl */ -/* //for the ergodox and kinesis. */ -/* #define ___12_DOX_ALL_THUMBS___ \ */ -/* ___4___, \ */ -/* ___2___, \ */ -/* ___6___ */ - -#define ___12_DOX_ALL_THUMBS___ ___12___ - -/* ___THUMBS_1___, \ */ -/* ___xTHUMBS_2___, \ */ -/* ___6_ERGO_THUMBS___ */ - -#define ___12_DOX_ALL_THUMBS_EN___ ___12_DOX_ALL_THUMBS___ -#define ___12_DOX_ALL_THUMBS_BP___ ___12_DOX_ALL_THUMBS___ - -#define ___16_ALL_THUMBS___ \ - ___4_THUMBS_1___, \ - ___6_THUMBS_2___, \ - ___6_ERGO_THUMBS___ - -#define ___16_ALL_THUMBS_EN___ ___16_ALL_THUMBS___ -#define ___16_ALL_THUMBS_BP___ ___16_ALL_THUMBS___ -#define ___16_ALL_THUMBSa___ \ - ___4_THUMBS_1___, \ - ___6_THUMBS_2a___, \ - ___6_ERGO_THUMBS___ - -#define ___16_ALL_THUMBSa_EN___ ___16_ALL_THUMBSa___ -#define ___16_ALL_THUMBSa_BP___ ___16_ALL_THUMBSa___ - - -// For the Kyria -#define ___4_THUMBS_def___ OS_LALT, OS_LCTL, SML_NAV, OS_LSFT -#define ___10_ERGO_THUMBS_def___ _X_, _X_, ___6_ERGO_THUMBS___, _X_, _X_ - -#define ___4_THUMBS_EN___ ___4_THUMBS_def___ -#define ___4_THUMBS_BP___ ___4_THUMBS_def___ -#define ___10_ERGO_THUMBS_EN___ ___10_ERGO_THUMBS_def___ -#define ___10_ERGO_THUMBS_BP___ ___10_ERGO_THUMBS_def___ - -// combo reference layer thumbs for the kyria. -// for the kyria, note the odd numbering...a 0 row, and a,b,c,d for the extras -// on either side of the central 6 thumbs. -#define ___2_THUMBS_CB___ CB_1TH1, CB_1TH2 -#define ___4_THUMBS_CB___ CB_0TH1, CB_0TH2, CB_0TH3, CB_0TH4 -#define ___6_THUMBS_CB___ CB_1TH1, CB_1TH2, CB_1TH3, CB_1TH4, CB_1TH5, CB_1TH6 -#define ___10_ERGO_THUMBS_CB___ CB_THA, CB_THB, \ - ___6_ERGO_THUMBS___, CB_THC, CB_THD -#define ___12_ERGO_THUMBS_CB___ ___2_THUMBS_CB___, \ - CB_THA, CB_THB, ___6_ERGO_THUMBS___, CB_THC, CB_THD -#define ___12_DOX_ALL_THUMBS_CB___ ___4_THUMBS_CB___, ___2_THUMBS_CB___, ___6_ERGO_THUMBS___ -#define ___16_DOX_ALL_THUMBS_CB___ ___4_THUMBS_CB___, ___6_THUMBS_2_CB___, ___6_ERGO_THUMBS___ -#define ___16_DOX_ALL_THUMBSa_CB___ ___4_THUMBS_CB___, ___6_THUMBS_2a_CB___, ___6_ERGO_THUMBS___ - - -#define ___2_THUMBS_CB2___ CB2_1TH1, CB2_1TH2 -#define ___4_THUMBS_CB2___ CB2_0TH1, CB2_0TH2, CB2_0TH3, CB2_0TH4 -#define ___6_THUMBS_CB2___ CB2_1TH1, CB2_1TH2, CB2_1TH3, CB2_1TH4, CB2_1TH5, CB2_1TH6 -#define ___10_ERGO_THUMBS_CB2___ CB2_THA, CB2_THB, \ - ___6_ERGO_THUMBS___, CB2_THC, CB2_THD -#define ___12_ERGO_THUMBS_CB2___ ___2_THUMBS_CB2___, \ - CB2_THA, CB2_THB, ___6_ERGO_THUMBS___, CB2_THC, CB2_THD -#define ___12_DOX_ALL_THUMBS_CB2___ ___4_THUMBS_CB2___, ___2_THUMBS_CB2___, ___6_ERGO_THUMBS___ -#define ___16_DOX_ALL_THUMBS_CB2___ ___4_THUMBS_CB2___, ___6_THUMBS_2_CB2___, ___6_ERGO_THUMBS___ -#define ___16_DOX_ALL_THUMBSa_CB2___ ___4_THUMBS_CB2___, ___6_THUMBS_2a_CB2___, ___6_ERGO_THUMBS___ - -// Basically give the same 4 top thumbs and bottom outer 4 thumbs for everyone. -// Could be different for every one, but the core 6 is enough for now I think. -// Everyone is the same except the combo reference layers. -// Let 6 ERGO_THUMBS do itÂīs thing inside. -#define EXP_THUMB_EXT CAT(THUMBS_ARE, _EXP_EXT) -#define WI_EXP_EXT _def___ -#define WIa_EXP_EXT _def___ -#define DEFAULT_EXP_EXT _def___ -#define TEST_EXP_EXT _def___ -#define TRNS_EXP_EXT _def___ -#define MODS_EXP_EXT _def___ -#define LAYERS_EXP_EXT _def___ -#define MODS_LAYERS_EXP_EXT _def___ -#define MODS_LAYERS_NAV_EXP_EXT _def___ -#define MIRYOKU_EXP_EXT _def___ -#define MIRYOKU_TR_EXP_EXT _def___ -#define MIRYOKU_LTR_EXP_EXT _def___ -#define MIRYOKU_TR_LTR_EXP_EXT _def___ -#define TH_LTR_EXP_EXT _def___ -#define HD_DASH_EXP_EXT _def___ -#define HD_EXP_EXT _def___ -#define HDA_EXP_EXT _def___ -#define HD_SIMPLE_EXP_EXT _def___ -// for the function layers -#define COMBO_EXP_EXT _COMBO___ -#define COMBO2_EXT _COMBO2___ -#define MEDIA_THUMBS_EXP_EXT _def___ -#define MOUSE_THUMBS_EXP_EXT _def___ -#define KEYPAD_THUMBS_EXP_EXT _def___ -#define SYMB_THUMBS_EXP_EXT _def___ diff --git a/users/ericgebhart/layers/toprows.h b/users/ericgebhart/layers/toprows.h deleted file mode 100644 index 3ae1c4665b..0000000000 --- a/users/ericgebhart/layers/toprows.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ -#include "keycodes.h" -/*******************************************************************/ -/* A Top Rows layer. Pick your parts. Bepo and Qwerty */ -/* */ -/* This is, to me, a stop gap layer. If I need symbols, numbers or */ -/* function keys these rows are nicely predictable to most people. */ -/* I currently use the beakl number row with regular symbols. */ -/* I never use function keys for anything. */ -/*******************************************************************/ -// Kinesis function key row. I don't use them. but might as well define them. -#define ___KINTFUNC_L___ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8 -// #define ___KINTFUNC_RIGHT___ KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, KC_FN0, QK_BOOT -#define ___KINTFUNC_R___ KC_F9, KC_F10, KC_F11, KC_F12, XXX, XXX, XXX, XXX, QK_BOOT - -// A TOPROWS Layer. -// set it how you like it, if you like it. - - -//#define ___MODS_ROW___ ___OS_MODS_L___, ___, ___SML_MODS_R___ -#define ___MODS_ROW___ ___SML_MODS_L___, ___, ___OS_MODS_R___ -/********************************************************************************/ -/* TOPROWS Layer chunk */ -/********************************************************************************/ -// These rows have already been langed, at their creation. -// altogether in a chunk. -#define CARTE_TOPROWS \ - carte_de_map(" !@#$% ^&*()", \ - " 40123 76598", \ - " F1- -- -F12") - -#define ___TOPROWS_3x10___ \ - ___10_SYMBOLS___, \ - ___10_NUMBERS_BEAKL15___, \ - ___10_FUNCS___ - -#define CARTE_TOPROWS_MOD \ - carte_de_map(" !@#$% ^&*()", \ - " 40123 76598", \ - " SLMods OSMods") - -#define ___TOPROWS_MOD_3x10___ \ - ___10_SYMBOLS___, \ - ___10_NUMBERS_BEAKL15___, \ - ___MODS_ROW___ - -#define CARTE_TOPROWS_BKL19 \ - carte_de_map(" !@#$% ^&*()", \ - " 32104 76598", \ - " F1- -- -F12") - -#define ___TOPROWS_BKL19_3x10___ \ - ___10_SYMBOLS___, \ - ___10_NUMBERS_BEAKL19___, \ - ___10_FUNCS___ - -#define CARTE_RAISE \ - carte_de_map(" !@#$% ^&*()", \ - " 12345 67890", \ - " F1- -- -F12") - -#define ___RAISE_3x10___ \ - ___10_SYMBOLS___, \ - ___10_NUMBERS___, \ - ___10_FUNCS___ diff --git a/users/ericgebhart/layers/utility.h b/users/ericgebhart/layers/utility.h deleted file mode 100644 index a3008cc442..0000000000 --- a/users/ericgebhart/layers/utility.h +++ /dev/null @@ -1,125 +0,0 @@ -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ -/********************************************************************************/ -/* MEDIA - Mute, Vol, play, pause, stop, next, prev, etc. */ -/********************************************************************************/ -#define ___PRV_PLAY_NXT_STOP___ KC_MPRV, KC_MPLY, KC_MNXT, KC_MSTP -#define ___VDN_MUTE_VUP___ KC_VOLD, KC_MUTE, KC_VOLU - -#define ___PRV_VDN_VUP_NXT___ KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT -#define ___STOP_PLAY_MUTE___ KC_MSTP, KC_MPLY, KC_MUTE - -#define ___MUTE_PRV_PLAY_NXT_STOP___ KC_MUTE, KC_MPRV, KC_MPLY, KC_MNXT, KC_MSTP -#define ___MUTE_PLAY_STOP___ KC_MUTE, KC_MPLY, KC_MSTP - -#define CARTE_MEDIA \ - carte_de_map(" ", \ - " < vdn vup >", \ - " stp play mute") - -// miryoku, to be used with stop play mute on thumbs. - MEDIA thumbs. -#define ___MEDIA_3x10___ \ - ___5___, ___5___, \ - ___5___, ___, ___PRV_VDN_VUP_NXT___, \ - ___5___, ___5___ - - -/********************************************************************************/ -/* RGB - Control those lights. */ - -/* ___, HUE SAT_INT MOD (UP), | */ -/* ___, HUE SAT INT MOD (DOWN), RGB_TOG | P_B_R_SW_SN___, ___ */ -/* ___6___, | ___, ___RGB_KXGT___, ___ */ -/********************************************************************************/ -// RGB FUNCTION Keysets -// RGB row for the _FN layer from the redo of the default keymap.c -#define ___RGB_HUE_SAT_INT_UP___ RGB_HUI, RGB_SAI, RGB_VAI, RGB_RMOD -#define ___RGB_HUE_SAT_INT_DN___ RGB_HUD, RGB_SAD, RGB_VAD, RGB_MOD -#define ___RGB_MODE_PRV_NXT___ RGB_RMOD, RGB_MOD -#define ___RGB_TOGGLE___ RGB_TOG -#define ___RGB_P_B_R_SW_SN___ RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN -#define ___RGB_KXGT___ RGB_M_K, RGB_M_X, RGB_M_G, RGB_M_T - -/// An RGB Layer -#define ___10_RGB_1___ ___RGB_HUE_SAT_INT_UP___, ___, ___5___ -#define ___10_RGB_2___ ___RGB_HUE_SAT_INT_DN___, RGB_TOG, ___RGB_P_B_R_SW_SN___ -#define ___10_RGB_3___ ___5___, ___, ___RGB_KXGT___ - -/********************************************************************************/ -/* The RGB LAYER Chunk */ -/********************************************************************************/ -#define ___RGB_3x10___ ___10_RGB_1___, ___10_RGB_2___, ___10_RGB_3___ - - -/********************************************************************************/ -/* ADJUST - Miscellaneous Melange. */ -/********************************************************************************/ -// For an Adjust layer. Like RBB with audio, flash, etc. -#define ___ADJUST_L1___ ___RGB_HUE_SAT_INT_UP___, RGB_TOG -#define ___ADJUST_L2___ MU_TOGG, CK_TOGG, AU_ON, AU_OFF, CG_NORM -#define ___ADJUST_L3___ ___RGB_HUE_SAT_INT_DN___, KC_RGB_T - -#define ___ADJUST_R1___ ___, KC_MAKE, VRSN, MG_NKRO, KC_RESET -#define ___ADJUST_R2___ EE_CLR, ___PRV_PLAY_NXT_STOP___, -#define ___ADJUST_R3___ MG_NKRO, ___VDN_MUTE_VUP___, RGB_IDL -/********************************************************************************/ -/* The Adjust LAYER Chunks */ -/********************************************************************************/ -#define ___ADJUST_3x10___ ___ADJUST_L1___, ___ADJUST_R1___, \ - ___ADJUST_L2___, ___ADJUST_R2___, \ - ___ADJUST_L3___, ___ADJUST_R3___ - - -/********************************************************************************/ -/* LAYERS - Define a base layer, switch to any layer. Get around. Experiment. */ -/* */ -/* Base Layers on the left hand, */ -/* transient layers on the right. Centered on the home region. */ -/* A good place to attach an experimental layer. */ -/* */ -/********************************************************************************/ -// Base Layers -// this was kc_dvorak et al. But since its configurable as to who would be here -// that no longer makes sense. So next keys for locale and base layer. and a set to -// make it permanent. Cycling of layers is based on current locale. -#define ___BASE_LAYERS___ ___, KC_SET_BASE, KC_NEXT_BASE_LAYER, KC_NEXT_LOCALE, ___ - -// transient layers. -#define ___5_LAYERS_T___ ___, MO(_NAV), MO_SYMB, MO_KEYPAD, MO_TOPROWS -#ifdef SECOND_LOCALE -#undef LANG_IS -#define LANG_IS SECOND_LOCALE -#define ___5_LAYERS_T_BP___ ___, MO(_NAV), MO_SYMB, MO_KEYPAD, MO_TOPROWS -#undef LANG_IS -#define LANG_IS DEFAULT_LANG -#else -#define ___5_LAYERS_T_BP___ ___, MO(_NAV), ___3___ -#endif - -#define ___5_LAYERS_T_CTL___ ___, MO_RGB, ___, ___, MO_ADJUST - - -#define CARTE_LAYERS \ - carte_de_map(" |Nv S K TR", \ - " EE Bs Ln|Nv S K TR", \ - " ") - -/// A Layers Layer -#define ___LAYERS_3x10___ \ - ___5___, ___5_LAYERS_T_BP___, \ - ___BASE_LAYERS___, ___5_LAYERS_T___, \ - ___5___, ___5_LAYERS_T_CTL___ diff --git a/users/ericgebhart/listen_keylogger.sh b/users/ericgebhart/listen_keylogger.sh deleted file mode 100755 index 71773d19af..0000000000 --- a/users/ericgebhart/listen_keylogger.sh +++ /dev/null @@ -1 +0,0 @@ -sudo ./hid_listen | egrep --line-buffered "(0x[A-F0-9]+,)?(NA|[0-9]+),(NA|[0-9]+),[0-9]{1,2}" | tee -a keylog.csv diff --git a/users/ericgebhart/miryoku_hd_gold_config.h b/users/ericgebhart/miryoku_hd_gold_config.h deleted file mode 100644 index 9eafdd2a5a..0000000000 --- a/users/ericgebhart/miryoku_hd_gold_config.h +++ /dev/null @@ -1,323 +0,0 @@ -/* - Copyright 2018 Eric Gebhart - - 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 . -*/ - - -/* This configuration creates a miryoku system with */ -/* Qwerty and Hands Down Gold. as base layers. */ - -/* It also usess layers which are the same or very closely resemble */ -/* the layers of miryoku. These can be swapped out for other choices */ -/* as desired. */ - -/* The language is set to EN, so KC_ keycodes are used. */ -/* The oled is on, rgb is off, see below. */ - - -#ifndef USERSPACE_CONFIG_H -#define USERSPACE_CONFIG_H - -// pro-micro v3's don't always detect otherwise. -/* #define SPLIT_USB_DETECT */ - -#define NO_ACTION_MACRO -#define NO_ACTION_FUNCTION -// Sets good default for the speed of the mouse. -#undef MOUSEKEY_INTERVAL -#undef MOUSEKEY_DELAY -#undef MOUSEKEY_TIME_TO_MAX -#undef MOUSEKEY_MAX_SPEED - -#define MOUSEKEY_INTERVAL 20 -#define MOUSEKEY_DELAY 100 -#define MOUSEKEY_TIME_TO_MAX 60 -#define MOUSEKEY_MAX_SPEED 7 - -#undef MOUSEKEY_WHEEL_MAX_SPEED -#undef MOUSEKEY_WHEEL_TIME_TO_MAX -#undef MOUSEKEY_WHEEL_DELAY - -#define MOUSEKEY_WHEEL_MAX_SPEED 5 -#define MOUSEKEY_WHEEL_TIME_TO_MAX 60 -#define MOUSEKEY_WHEEL_DELAY 100 - -#undef TAPPING_TOGGLE -#undef TAPPING_TERM - -#define TAPPING_TOGGLE 2 -#define TAPPING_TERM 200 - - -#define TAP_HOLD_TERM 200 -#define COMBO_MUST_HOLD_MODS -#define COMBO_HOLD_TERM 150 -#define TAP_CODE_DELAY 5 // for send string with delay - - -/* Control switches for my keymaps. */ -/* if needed, this goes in the keyboard's config.h */ -/* Alternately, fix the number row in the layout template. */ -/* #define BASE_NUMBER_ROW // turn on 4 row base templates. */ - -// Extensions, turn them on and off. -#define USERSPACE_H "ericgebhart.h" - -// Layout definitions, which language, thumb cluster, mod layer. -// Columns in and out. - -// the default. set it, use it, set it back. -// US_INT // EN, BEPO, US_INT -#define LANG_IS EN -#define DEFAULT_LANG EN -#define DEFAULT_LANG_NAME " en" - -// Enable a second locale, for another set of layers. -// This will add bepo versions of all layers chosen. -/* #define SECOND_LOCALE BEPO */ -/* #define SECOND_LOCALE_NAME " bepo" */ - -// Choose a mod layer. Can be changed per layer. -// TRNS, ALT, HRS_NAV HRM_GACS, HRM_SCAG, HRM_GASC, MIRYOKU_HRM_GASC -#define MODS_ARE MIRYOKU_HRM_GACS -#define DEFAULT_MODS MODS_ARE - -// Choose a thumb cluster. -// WI, WIa, DEFAULT, TEST, TRNS, MODS, LAYERS, MODS_LAYERS, -// MIRYOKU, MIRYOKU_TR, MODS_LAYERS_NAV, -// The following use THUMB_LETTER to place a letter on the Thumbs. -// for use with the hands down metals, maltron, and rsthd. -// HD, HDA, HD_SIMPLE, TH_LTR, HD_DASH, -// MIRYOKU_TR_LTR, MIRYOKU_LTR -// MIRYOKU_TR_LTR_TAB, MIRYOKU_LTR_TAB -#define THUMBS_ARE DEFAULT -#define DEFAULT_THUMBS DEFAULT - -// pick the edge key set. normie, no kc, smart locks or test. -// NORM, NOKC, SML, TEST -#define EDGE_KEY_SET_IS SML -#define DEFAULT_EDGE_SET SML - -// for the base layers which need a thumb cluster which takes a letter. -#define HANDS_DOWN_LTR_THUMBS_ARE MIRYOKU_LTR_TAB -#define MALTRON_LTR_THUMBS_ARE TH_LTR -#define RSTHD_LTR_THUMBS_ARE TH_LTR - -// layout io, matrix size. -// a reasonable default for most keyboards. -// give a 3x10 and get a 3x12, managed in keyboards/keyboards.h -#define BASE_COLS_IN_OUT 5_6 // 5, 5_6, 6 - -// OLED STUFF. -#define OLED_CUSTOM_ENABLE // custom oled here. -//#define OLED_LOGO_ENABLE // turn on/off the logo. -//#define KEYLOGGER_ENABLE // 1500 bytes, track and print keypress info to oled. -//#define SPLIT_LAYER_STATE_ENABLE // to sync state between sides. - -// EXTENSIONS - -// Combos -#define COMBO_REF_LAYER_ENABLE -// #define COMBO_REF_LAYER_TWO_ENABLE -// works if you know the number of your layer. -// otherwise set and use them later. -// #define COMBO_ONLY_FROM_LAYER 2 -// #define COMBO_REF_DEFAULT 2 - - -// Console key logging for creation of heatmaps, etc. -// CONSOLE must be enabled for this to work. -// To create Precondition's heat maps, from console key logging -// with hid_listen or qmk console -//#define CONSOLE_KEY_LOGGER_ENABLE // turn on keylogging for heat maps. - -#define ALT_LOCAL_ENABLE // alternate key combinations, with mods as needed. -//#define ACCENTED_KEYS_ENABLE // direct access to altgr keys. - -#define SMART_LOCK_ENABLE // smart lock layers and mods. -//#define MOD_LOCK_ENABLE // smart lock mods, similar/overlapping with Smart lock. -#define NSHOT_ENABLE // smart n-shot for count. -//#define ONESHOT_MOD_ENABLE // oneshot mods, similar/overlapping with nshots - -#define CAPS_WORD_ENABLE // caps word. both shifts to caps a word. -#define TAP_HOLD_ENABLE // tap for one thing, hold for tapping term to get another. -//#define SWAPPER_ENABLE // enable swapper keys. -#define NOT_DEAD_ENABLE // make undead versions (US_DQUO_ND) of dead keys. -//#define ALT_SHIFT_ENABLE // alternate shift behaviors for existing keys. -//#define SEND_STRING_ENABLE // Turn on send string keys -//#define SEND_UNICODE_ENABLE // Unicode must be enabled for this to work. - - -// Turn on the base layers do not exceed 4 if doing two locales. -// That will likely push a layer past 15 and then it will -// no longer work with the LT macro. - -// dvorak and relatives -//#define DVORAK_LAYER_ENABLE -//#define CAPEWELL_DVORAK_LAYER_ENABLE -//#define AHEI_LAYER_ENABLE -//#define BOO_LAYER_ENABLE - -// qwerty and derivitives -#define QWERTY_LAYER_ENABLE -//#define AZERTY_LAYER_ENABLE -//#define WORKMAN_LAYER_ENABLE -//#define NORMAN_LAYER_ENABLE - -// COLEMAK and relatives -//#define COLEMAK_LAYER_ENABLE -//#define COLEMAK_DH_LAYER_ENABLE -//#define HALMAK_LAYER_ENABLE -//#define MINIMAK_LAYER_ENABLE -//#define MINIMAK_8_LAYER_ENABLE -//#define MINIMAK_12_LAYER_ENABLE - -// BEAKL -// #define BEAKL15_LAYER_ENABLE -//#define BEAKL19_LAYER_ENABLE -//#define BEAKL27_LAYER_ENABLE -//#define BEAKLWI_LAYER_ENABLE - -// carpalx layouts -//#define CARPALX_QFMLWY_LAYER_ENABLE -//#define CARPALX_QGMLWB_LAYER_ENABLE -//#define CARPALX_QGMLWY_LAYER_ENABLE - -// alternate layouts -//#define MALTRON_LAYER_ENABLE -//#define EUCALYN_LAYER_ENABLE -//#define HANDS_UP_LAYER_ENABLE -//#define RSTHD_LAYER_ENABLE -//#define HANDS_UP_LAYER_ENABLE -//#define WHITE_LAYER_ENABLE -//#define ISRT_LAYER_ENABLE -//#define SOUL_LAYER_ENABLE -//#define NIRO_LAYER_ENABLE -//#define ASSET_LAYER_ENABLE -//#define WHORF_LAYER_ENABLE -//#define WHORF6_LAYER_ENABLE - -// mtgap and relatives -//#define MTGAP_LAYER_ENABLE -//#define CTGAP_LAYER_ENABLE -//#define APT_LAYER_ENABLE - -// Hands down -//#define HD_NEU_NARROW_LAYER_ENABLE -//#define HD_REF_LAYER_ENABLE -//#define HD_DASH_LAYER_ENABLE -//#define HD_ELAN_LAYER_ENABLE -//#define HD_BRONZE_LAYER_ENABLE -//#define HD_SILVER_LAYER_ENABLE -//#define HD_PLATINUM_LAYER_ENABLE -#define HD_GOLD_LAYER_ENABLE - -// 3x12 sized base layers -//-------------------------- -//#define HD_NEU_LAYER_ENABLE - -// additionally all these have accent characters on base layer. -//#define BEPO_LAYER_ENABLE -//#define OPTIMOT_LAYER_ENABLE -//#define BEAKL19bis_LAYER_ENABLE - - -// enable transient function layers. -#define SYMBOL_LAYER_ENABLE -#define NAV_LAYER_ENABLE -// #define MOUSE_LAYER_ENABLE -//#define TOPROWS_LAYER_ENABLE -// #define LAYERS_LAYER_ENABLE - defunct. always on. -#define KEYPAD_LAYER_ENABLE -//#define ADJUST_LAYER_ENABLE -//#define RGB_LAYER_ENABLE -#define MEDIA_LAYER_ENABLE -#define FUNC_LAYER_ENABLE - - -// define alternate thumb definitions for the transient layers. -#define MEDIA_LAYER_THUMBS MEDIA_THUMBS -#define MOUSE_LAYER_THUMBS MOUSE_THUMBS -#define NAV_LAYER_THUMBS TRNS_THUMBS -#define KEYPAD_LAYER_THUMBS KEYPAD_THUMBS -#define SYMB_LAYER_THUMBS SYMB_THUMBS -#define TOPROWS_LAYER_THUMBS DEFAULT - -// Extra character layers. -// Bepo has dead keys (altgr) and accented keycodes -// A layer of accented keys -// #define ACCENTS_LAYER_ENABLE -// A layer of dead keys -// #define MORTE_LAYER_ENABLE -// A layer of the most popular accented keys and dead keys -// #define ACCENTS_MORTE_LAYER_ENABLE - -// Functional layer choices. -/* configure the function layers. */ -/* They have to be turned on above. */ -/* Choose one of each as desired. */ -/* There are reasonable defaults */ -/* for each if nothing is defined. */ - -/* nav */ -//#define NAV_FULL // monolithic, two sided nav with mouse and arrows. -//#define NAV_FULL_LOCK_MODS // Replace left mouse buttons with lockmods. - -// Just the non mouse bits, with lock mods, n-shot mods on the left. -// if mousekeys enabled, adds a mouse layer accessible via smart lock. -// #define NAV_NO_MOUSE -#define NAV_MIRYOKU -#define NAV_MOUSE_MIRYOKU - - -/* keypads */ -// beakl keypads are usual, if not chosen, regular keypads will be used. -// left side is the default. -// Beakl, except for WI, is only on the left side. -// Miryoku is on the left also. - -//#define KEYPAD_RIGHT -//#define KEYPAD_BEAKL // beakl doesn't have a rightside, swap hands? -//#define KEYPAD_MODS // give mods on the other side instead of funcs. -//#define KEYPAD_BEAKL_WI // right side with hexpad on left. -#define KEYPAD_MIRYOKU // use the miryoku keypad -// the default if nothing chosen, -// is a functionpad on the left and normal keypad on the right. - -// funcpad from miryoku -#define FUNCPAD_MIRYOKU - - -/* symbols */ -// pick one of these or get the default. -//#define SYMBOL_BEAKL // original - the default if nothing else. -//#define SYMBOL_BEAKL_EXT // extended for non beakl base layers. -//#define SYMBOL_BEAKL_EXT_VI // extended with vi keybinding in mind. -//#define SYMBOL_BEAKL_C // more alterations by frequency -// #define SYMBOL_NEO // The symbol layer from the Neo layout. -#define SYMBOL_MIRYOKU // minimalist symbols after miryoku -//#define SYMBOL_BEAKL_WI // original wi - - -/* toprows. */ -// The default, if not defined, is a standard qwerty set of rows. -// symbols, numbers, function keys. Numbers on the home row. - -// #define TOPROWS_BKL_15_NUMS // center row with Beakl15 order. 40123 76598. -// #define TOPROWS_BKL_19_NUMS // Beakl 19 order: 32104 76598 -//#define TOPROWS_MOD // beakl 15 nums, oneshot and smart lock mods. no Fkeys. - - -#endif diff --git a/users/ericgebhart/mod_layers/alt_mods.h b/users/ericgebhart/mod_layers/alt_mods.h deleted file mode 100644 index db13ee041d..0000000000 --- a/users/ericgebhart/mod_layers/alt_mods.h +++ /dev/null @@ -1,129 +0,0 @@ -#pragma once -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ -// -// non Home row mods, mod layer. - -// MOD_ROW variants. -// input 5 get six, left and right language specific outer edge keys. - -// no edge keys. -// input 5 get 5 with mods applied. - -// input 6 get 6 with mods applied. - -// base cols in out. 5, 5_6, 6. -// input column count, output column count, if different. - -// L_5 Left R_5 Right. -// K01, K02, K03, K04, K05 - K01, K02, K03, K04, K05 -// pky, rng, mdl, idx, idx - idx, idx, mdl, rng, pnky - -// ROW0 - Number row. -// LEFT. -#define ROW0L_5_alt(K01, K02, K03, K04, K05) \ - K01, K02, K03, K04, K05 -// take and put an extra column in front. Mod K01 how you want it. -#define ROW0L_6_alt(K01, K02, K03, K04, K05, K06) K01, \ - ROW0L_5_alt(K02, K03, K04, K05, K06) - -// 5 into 6, derivitive of the first two. -#define ROW0L_5_6_alt(K01, K02, K03, K04, K05) \ - ROW0L_6_alt(LEFT_0, K01, K02, K03, K04, K05) - -// RIGHT. -#define ROW0R_5_alt(K01, K02, K03, K04, K05) \ - K01, K02, K03, K04, K05 -// take and put an extra column in front. Mod K01 how you want it. -#define ROW0R_6_alt(K01, K02, K03, K04, K05, K06) \ - ROW0R_5_alt(K01, K02, K03, K04, K05), K06 - -// 5 into 6, derivitive of the first two. -#define ROW0R_5_6_alt(K01, K02, K03, K04, K05) \ - ROW0R_6_alt(K01, K02, K03, K04, K05, RIGHT_0) - - -// ROW1 -// LEFT. -#define ROW1L_5_alt(K01, K02, K03, K04, K05) \ - K01, K02, K03, K04, K05 -// take and put an extra column in front. Mod K01 how you want it. -#define ROW1L_6_alt(K01, K02, K03, K04, K05, K06) K01, \ - ROW1L_5_alt(K02, K03, K04, K05, K06) - -// 5 into 6, derivitive of the first two. -#define ROW1L_5_6_alt(K01, K02, K03, K04, K05) \ - ROW1L_6_alt(LEFT_1, K01, K02, K03, K04, K05) - -// RIGHT. -#define ROW1R_5_alt(K01, K02, K03, K04, K05) \ - K01, K02, K03, K04, K05 \ - // take and put an extra column in front. Mod K01 how you want it. -#define ROW1R_6_alt(K01, K02, K03, K04, K05, K06) \ - ROW1R_5_alt(K01, K02, K03, K04, K05), K06 - -// 5 into 6, derivitive of the first two. -#define ROW1R_5_6_alt(K01, K02, K03, K04, K05) \ - ROW1R_6_alt(K01, K02, K03, K04, K05, RIGHT_1) - - -// HOME ROW - ROW2 -// LEFT. -#define ROW2L_5_alt(K01, K02, K03, K04, K05) \ - K01, K02, LT(_NAV, K03), MT(MOD_LSFT, K04), K05 -// take and put an extra column in front. Mod K01 how you want it. -#define ROW2L_6_alt(K01, K02, K03, K04, K05, K06) K01, \ - ROW2L_5_alt(K02, K03, K04, K05, K06) - -// 5 into 6, derivitive of the first two. -#define ROW2L_5_6_alt(K01, K02, K03, K04, K05) \ - ROW2L_6_alt(LEFT_2, K01, K02, K03, K04, K05) - -// RIGHT. -#define ROW2R_5_alt(K01, K02, K03, K04, K05) \ - K01, MT(MOD_LSFT, K02), LT(_NAV, K03), K04, K05 \ - // take and put an extra column in front. Mod K01 how you want it. -#define ROW2R_6_alt(K01, K02, K03, K04, K05, K06) \ - ROW2R_5_alt(K01, K02, K03, K04, K05), K06 - -// 5 into 6, derivitive of the first two. -#define ROW2R_5_6_alt(K01, K02, K03, K04, K05) \ - ROW2R_6_alt(K01, K02, K03, K04, K05, RIGHT_2) - - -// ROW 3 -// LEFT. -#define ROW3L_5_alt(K01, K02, K03, K04, K05) \ - K01, K02, LT(_NAV, K03), K04, MT(MOD_LSFT, K05) -// take and put an extra column in front. Mod K01 how you want it. -#define ROW3L_6_alt(K01, K02, K03, K04, K05, K06) K01, \ - ROW3L_5_alt(K02, K03, K04, K05, K06) - -// 5 into 6, derivitive of the first two. -#define ROW3L_5_6_alt(K01, K02, K03, K04, K05) \ - ROW3L_6_alt(LEFT_3, K01, K02, K03, K04, K05) - -// RIGHT. -#define ROW3R_5_alt(K01, K02, K03, K04, K05) \ - K01, K02, K03, K04, K05 -// take and put an extra column in front. Mod K01 how you want it. -#define ROW3R_6_alt(K01, K02, K03, K04, K05, K06) K01, \ - ROW3R_5_alt(K02, K03, K04, K05, K06) - -// 5 into 6, derivitive of the first two. -#define ROW3R_5_6_alt(K01, K02, K03, K04, K05) \ - ROW3R_6_alt(K01, K02, K03, K04, K05, RIGHT_3) diff --git a/users/ericgebhart/mod_layers/hrm_gacs.h b/users/ericgebhart/mod_layers/hrm_gacs.h deleted file mode 100644 index 4bcf092732..0000000000 --- a/users/ericgebhart/mod_layers/hrm_gacs.h +++ /dev/null @@ -1,130 +0,0 @@ -#pragma once -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ -// Home row mods variant of mod layers. - -// MOD_ROW -// variants. -// input 5 get six, left and right language specific outer edge keys. - -// no edge keys. -// input 5 get 5 with mods applied. - -// input 6 get 6 with mods applied. - -// base cols in out. 5, 5_6, 6. -// input column count, output column count, if different. - -// ROW0 - Number row. -// LEFT. -#define ROW0L_5_hrm_gacs(K01, K02, K03, K04, K05) \ - K01, K02, K03, K04, K05 -// take and put an extra column in front. Mod K01 how you want it. -#define ROW0L_6_hrm_gacs(K01, K02, K03, K04, K05, K06) K01, \ - ROW0L_5_hrm_gacs(K02, K03, K04, K05, K06) - -// 5 into 6, derivitive of the first two. -#define ROW0L_5_6_hrm_gacs(K01, K02, K03, K04, K05) \ - ROW0L_6_hrm_gacs(LEFT_0, K01, K02, K03, K04, K05) - -// RIGHT. -#define ROW0R_5_hrm_gacs(K01, K02, K03, K04, K05) \ - K01, K02, K03, K04, K05 -// take and put an extra column in front. Mod K01 how you want it. -#define ROW0R_6_hrm_gacs(K01, K02, K03, K04, K05, K06) \ - ROW0R_5_hrm_gacs(K01, K02, K03, K04, K05), K06 - -// 5 into 6, derivitive of the first two. -#define ROW0R_5_6_hrm_gacs(K01, K02, K03, K04, K05) \ - ROW0R_6_hrm_gacs(K01, K02, K03, K04, K05, RIGHT_0) - - -// ROW1 -// LEFT. -#define ROW1L_5_hrm_gacs(K01, K02, K03, K04, K05) \ - K01, K02, K03, LT(_NAV, K04), K05 -// take and put an extra column in front. Mod K01 how you want it. -#define ROW1L_6_hrm_gacs(K01, K02, K03, K04, K05, K06) K01, \ - ROW1L_5_hrm_gacs(K02, K03, K04, K05, K06) - -// 5 into 6, derivitive of the first two. -#define ROW1L_5_6_hrm_gacs(K01, K02, K03, K04, K05) \ - ROW1L_6_hrm_gacs(LEFT_1, K01, K02, K03, K04, K05) - -// RIGHT. -#define ROW1R_5_hrm_gacs(K01, K02, K03, K04, K05) \ - K01, K02, K03, K04, LT(_LAYERS, K05) \ - // take and put an extra column in front. Mod K01 how you want it. -#define ROW1R_6_hrm_gacs(K01, K02, K03, K04, K05, K06) \ - ROW1R_5_hrm_gacs(K01, K02, K03, K04, K05), K06 - -// 5 into 6, derivitive of the first two. -#define ROW1R_5_6_hrm_gacs(K01, K02, K03, K04, K05) \ - ROW1R_6_hrm_gacs(K01, K02, K03, K04, K05, RIGHT_1) - - - -// HOME ROW - ROW2 -// home row, shift, alt, ctl, gui - gui, ctl, alt, shift. -// using MT so we can specify left and right. -// caps_word needs left and right shift. - -// LEFT. -#define ROW2L_5_hrm_gacs(K01, K02, K03, K04, K05) \ - MT(MOD_LGUI, K01), MT(MOD_LALT, K02), MT(MOD_LCTL, K03), MT(MOD_LSFT, K04), K05 -// take and put an extra column in front. Mod K01 how you want it. -#define ROW2L_6_hrm_gacs(K01, K02, K03, K04, K05, K06) K01, \ - ROW2L_5_hrm_gacs(K02, K03, K04, K05, K06) - -// 5 into 6, derivitive of the first two. -#define ROW2L_5_6_hrm_gacs(K01, K02, K03, K04, K05) \ - ROW2L_6_hrm_gacs(LEFT_2, K01, K02, K03, K04, K05) - -// RIGHT. -#define ROW2R_5_hrm_gacs(K01, K02, K03, K04, K05) \ - K01, MT(MOD_RSFT, K02), MT(MOD_RCTL, K03), MT(MOD_RALT, K04), MT(MOD_RGUI, K05) \ - // take and put an extra column in front. Mod K01 how you want it. -#define ROW2R_6_hrm_gacs(K01, K02, K03, K04, K05, K06) \ - ROW2R_5_hrm_gacs(K01, K02, K03, K04, K05), K06 - -// 5 into 6, derivitive of the first two. -#define ROW2R_5_6_hrm_gacs(K01, K02, K03, K04, K05) \ - ROW2R_6_hrm_gacs(K01, K02, K03, K04, K05, RIGHT_2) - - -// ROW 3 -// LEFT. -#define ROW3L_5_hrm_gacs(K01, K02, K03, K04, K05) \ - K01, K02, K03, K04, K05 -// take and put an extra column in front. Mod K01 how you want it. -#define ROW3L_6_hrm_gacs(K01, K02, K03, K04, K05, K06) K01, \ - ROW3L_5_hrm_gacs(K02, K03, K04, K05, K06) - -// 5 into 6, derivitive of the first two. -#define ROW3L_5_6_hrm_gacs(K01, K02, K03, K04, K05) \ - ROW3L_6_hrm_gacs(LEFT_3, K01, K02, K03, K04, K05) - -// RIGHT. -#define ROW3R_5_hrm_gacs(K01, K02, K03, K04, K05) \ - K01, LT(_NAV, K02), K03, LT(LANG_N(_SYMB), K04), K05 -// take and put an extra column in front. Mod K01 how you want it. -#define ROW3R_6_hrm_gacs(K01, K02, K03, K04, K05, K06) K01, \ - ROW3R_5_hrm_gacs(K02, K03, K04, K05, K06) - -// 5 into 6, derivitive of the first two. -#define ROW3R_5_6_hrm_gacs(K01, K02, K03, K04, K05) \ - ROW3R_6_hrm_gacs(K01, K02, K03, K04, K05, RIGHT_3) diff --git a/users/ericgebhart/mod_layers/hrm_gacs_miryoku.h b/users/ericgebhart/mod_layers/hrm_gacs_miryoku.h deleted file mode 100644 index 0238e9a567..0000000000 --- a/users/ericgebhart/mod_layers/hrm_gacs_miryoku.h +++ /dev/null @@ -1,130 +0,0 @@ -#pragma once -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ -// Home row mods variant of mod layers. - -// MOD_ROW -// variants. -// input 5 get six, left and right language specific outer edge keys. - -// no edge keys. -// input 5 get 5 with mods applied. - -// input 6 get 6 with mods applied. - -// base cols in out. 5, 5_6, 6. -// input column count, output column count, if different. - -// ROW0 - Number row. -// LEFT. -#define ROW0L_5_miryoku_hrm_gacs(K01, K02, K03, K04, K05) \ - K01, K02, K03, K04, K05 -// take and put an extra column in front. Mod K01 how you want it. -#define ROW0L_6_miryoku_hrm_gacs(K01, K02, K03, K04, K05, K06) K01, \ - ROW0L_5_miryoku_hrm_gacs(K02, K03, K04, K05, K06) - -// 5 into 6, derivitive of the first two. -#define ROW0L_5_6_miryoku_hrm_gacs(K01, K02, K03, K04, K05) \ - ROW0L_6_miryoku_hrm_gacs(LEFT_0, K01, K02, K03, K04, K05) - -// RIGHT. -#define ROW0R_5_miryoku_hrm_gacs(K01, K02, K03, K04, K05) \ - K01, K02, K03, K04, K05 -// take and put an extra column in front. Mod K01 how you want it. -#define ROW0R_6_miryoku_hrm_gacs(K01, K02, K03, K04, K05, K06) \ - ROW0R_5_miryoku_hrm_gacs(K01, K02, K03, K04, K05), K06 - -// 5 into 6, derivitive of the first two. -#define ROW0R_5_6_miryoku_hrm_gacs(K01, K02, K03, K04, K05) \ - ROW0R_6_miryoku_hrm_gacs(K01, K02, K03, K04, K05, RIGHT_0) - - -// ROW1 -// LEFT. -#define ROW1L_5_miryoku_hrm_gacs(K01, K02, K03, K04, K05) \ - K01, K02, K03, LT(_NAV, K04), K05 -// take and put an extra column in front. Mod K01 how you want it. -#define ROW1L_6_miryoku_hrm_gacs(K01, K02, K03, K04, K05, K06) K01, \ - ROW1L_5_miryoku_hrm_gacs(K02, K03, K04, K05, K06) - -// 5 into 6, derivitive of the first two. -#define ROW1L_5_6_miryoku_hrm_gacs(K01, K02, K03, K04, K05) \ - ROW1L_6_miryoku_hrm_gacs(LEFT_1, K01, K02, K03, K04, K05) - -// RIGHT. -#define ROW1R_5_miryoku_hrm_gacs(K01, K02, K03, K04, K05) \ - K01, K02, K03, K04, LT(_LAYERS, K05) \ - // take and put an extra column in front. Mod K01 how you want it. -#define ROW1R_6_miryoku_hrm_gacs(K01, K02, K03, K04, K05, K06) \ - ROW1R_5_miryoku_hrm_gacs(K01, K02, K03, K04, K05), K06 - -// 5 into 6, derivitive of the first two. -#define ROW1R_5_6_miryoku_hrm_gacs(K01, K02, K03, K04, K05) \ - ROW1R_6_miryoku_hrm_gacs(K01, K02, K03, K04, K05, RIGHT_1) - - - -// HOME ROW - ROW2 -// home row, shift, alt, ctl, gui - gui, ctl, alt, shift. -// using MT so we can specify left and right. -// caps_word needs left and right shift. - -// LEFT. -#define ROW2L_5_miryoku_hrm_gacs(K01, K02, K03, K04, K05) \ - MT(MOD_LGUI, K01), MT(MOD_LALT, K02), MT(MOD_LCTL, K03), MT(MOD_LSFT, K04), K05 -// take and put an extra column in front. Mod K01 how you want it. -#define ROW2L_6_miryoku_hrm_gacs(K01, K02, K03, K04, K05, K06) K01, \ - ROW2L_5_miryoku_hrm_gacs(K02, K03, K04, K05, K06) - -// 5 into 6, derivitive of the first two. -#define ROW2L_5_6_miryoku_hrm_gacs(K01, K02, K03, K04, K05) \ - ROW2L_6_miryoku_hrm_gacs(LEFT_2, K01, K02, K03, K04, K05) - -// RIGHT. -#define ROW2R_5_miryoku_hrm_gacs(K01, K02, K03, K04, K05) \ - K01, MT(MOD_RSFT, K02), MT(MOD_RCTL, K03), MT(MOD_LALT, K04), MT(MOD_RGUI, K05) \ - // take and put an extra column in front. Mod K01 how you want it. -#define ROW2R_6_miryoku_hrm_gacs(K01, K02, K03, K04, K05, K06) \ - ROW2R_5_miryoku_hrm_gacs(K01, K02, K03, K04, K05), K06 - -// 5 into 6, derivitive of the first two. -#define ROW2R_5_6_miryoku_hrm_gacs(K01, K02, K03, K04, K05) \ - ROW2R_6_miryoku_hrm_gacs(K01, K02, K03, K04, K05, RIGHT_2) - - -// ROW 3 -// LEFT. -#define ROW3L_5_miryoku_hrm_gacs(K01, K02, K03, K04, K05) \ - K01, MT(MOD_RALT, K02), K03, K04, K05 -// take and put an extra column in front. Mod K01 how you want it. -#define ROW3L_6_miryoku_hrm_gacs(K01, K02, K03, K04, K05, K06) K01, \ - ROW3L_5_miryoku_hrm_gacs(K02, K03, K04, K05, K06) - -// 5 into 6, derivitive of the first two. -#define ROW3L_5_6_miryoku_hrm_gacs(K01, K02, K03, K04, K05) \ - ROW3L_6_miryoku_hrm_gacs(LEFT_3, K01, K02, K03, K04, K05) - -// RIGHT. -#define ROW3R_5_miryoku_hrm_gacs(K01, K02, K03, K04, K05) \ - K01, K02, K03, MT(MOD_RALT, K04), K05 -// take and put an extra column in front. Mod K01 how you want it. -#define ROW3R_6_miryoku_hrm_gacs(K01, K02, K03, K04, K05, K06) K01, \ - ROW3R_5_miryoku_hrm_gacs(K02, K03, K04, K05, K06) - -// 5 into 6, derivitive of the first two. -#define ROW3R_5_6_miryoku_hrm_gacs(K01, K02, K03, K04, K05) \ - ROW3R_6_miryoku_hrm_gacs(K01, K02, K03, K04, K05, RIGHT_3) diff --git a/users/ericgebhart/mod_layers/hrm_gasc.h b/users/ericgebhart/mod_layers/hrm_gasc.h deleted file mode 100644 index 6eacb13ad6..0000000000 --- a/users/ericgebhart/mod_layers/hrm_gasc.h +++ /dev/null @@ -1,130 +0,0 @@ -#pragma once -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ -// Home row mods variant of mod layers. - -// MOD_ROW -// variants. -// input 5 get six, left and right language specific outer edge keys. - -// no edge keys. -// input 5 get 5 with mods applied. - -// input 6 get 6 with mods applied. - -// base cols in out. 5, 5_6, 6. -// input column count, output column count, if different. - -// ROW0 - Number row. -// LEFT. -#define ROW0L_5_hrm_gasc(K01, K02, K03, K04, K05) \ - K01, K02, K03, K04, K05 -// take and put an extra column in front. Mod K01 how you want it. -#define ROW0L_6_hrm_gasc(K01, K02, K03, K04, K05, K06) K01, \ - ROW0L_5_hrm_gasc(K02, K03, K04, K05, K06) - -// 5 into 6, derivitive of the first two. -#define ROW0L_5_6_hrm_gasc(K01, K02, K03, K04, K05) \ - ROW0L_6_hrm_gasc(LEFT_0, K01, K02, K03, K04, K05) - -// RIGHT. -#define ROW0R_5_hrm_gasc(K01, K02, K03, K04, K05) \ - K01, K02, K03, K04, K05 -// take and put an extra column in front. Mod K01 how you want it. -#define ROW0R_6_hrm_gasc(K01, K02, K03, K04, K05, K06) \ - ROW0R_5_hrm_gasc(K01, K02, K03, K04, K05), K06 - -// 5 into 6, derivitive of the first two. -#define ROW0R_5_6_hrm_gasc(K01, K02, K03, K04, K05) \ - ROW0R_6_hrm_gasc(K01, K02, K03, K04, K05, RIGHT_0) - - -// ROW1 -// LEFT. -#define ROW1L_5_hrm_gasc(K01, K02, K03, K04, K05) \ - K01, K02, K03, LT(_NAV, K04), K05 -// take and put an extra column in front. Mod K01 how you want it. -#define ROW1L_6_hrm_gasc(K01, K02, K03, K04, K05, K06) K01, \ - ROW1L_5_hrm_gasc(K02, K03, K04, K05, K06) - -// 5 into 6, derivitive of the first two. -#define ROW1L_5_6_hrm_gasc(K01, K02, K03, K04, K05) \ - ROW1L_6_hrm_gasc(LEFT_1, K01, K02, K03, K04, K05) - -// RIGHT. -#define ROW1R_5_hrm_gasc(K01, K02, K03, K04, K05) \ - K01, K02, K03, K04, LT(_LAYERS, K05) \ - // take and put an extra column in front. Mod K01 how you want it. -#define ROW1R_6_hrm_gasc(K01, K02, K03, K04, K05, K06) \ - ROW1R_5_hrm_gasc(K01, K02, K03, K04, K05), K06 - -// 5 into 6, derivitive of the first two. -#define ROW1R_5_6_hrm_gasc(K01, K02, K03, K04, K05) \ - ROW1R_6_hrm_gasc(K01, K02, K03, K04, K05, RIGHT_1) - - - -// HOME ROW - ROW2 -// home row, shift, alt, ctl, gui - gui, ctl, alt, shift. -// using MT so we can specify left and right. -// caps_word needs left and right shift. - -// LEFT. -#define ROW2L_5_hrm_gasc(K01, K02, K03, K04, K05) \ - MT(MOD_LGUI, K01), MT(MOD_LALT, K02), MT(MOD_LSFT, K03), MT(MOD_LCTL, K04), K05 -// take and put an extra column in front. Mod K01 how you want it. -#define ROW2L_6_hrm_gasc(K01, K02, K03, K04, K05, K06) K01, \ - ROW2L_5_hrm_gasc(K02, K03, K04, K05, K06) - -// 5 into 6, derivitive of the first two. -#define ROW2L_5_6_hrm_gasc(K01, K02, K03, K04, K05) \ - ROW2L_6_hrm_gasc(LEFT_2, K01, K02, K03, K04, K05) - -// RIGHT. -#define ROW2R_5_hrm_gasc(K01, K02, K03, K04, K05) \ - K01, MT(MOD_RCTL, K02), MT(MOD_RSFT, K03), MT(MOD_RALT, K04), MT(MOD_RGUI, K05) \ - // take and put an extra column in front. Mod K01 how you want it. -#define ROW2R_6_hrm_gasc(K01, K02, K03, K04, K05, K06) \ - ROW2R_5_hrm_gasc(K01, K02, K03, K04, K05), K06 - -// 5 into 6, derivitive of the first two. -#define ROW2R_5_6_hrm_gasc(K01, K02, K03, K04, K05) \ - ROW2R_6_hrm_gasc(K01, K02, K03, K04, K05, RIGHT_2) - - -// ROW 3 -// LEFT. -#define ROW3L_5_hrm_gasc(K01, K02, K03, K04, K05) \ - K01, K02, K03, K04, K05 -// take and put an extra column in front. Mod K01 how you want it. -#define ROW3L_6_hrm_gasc(K01, K02, K03, K04, K05, K06) K01, \ - ROW3L_5_hrm_gasc(K02, K03, K04, K05, K06) - -// 5 into 6, derivitive of the first two. -#define ROW3L_5_6_hrm_gasc(K01, K02, K03, K04, K05) \ - ROW3L_6_hrm_gasc(LEFT_3, K01, K02, K03, K04, K05) - -// RIGHT. -#define ROW3R_5_hrm_gasc(K01, K02, K03, K04, K05) \ - K01, LT(_NAV, K02), K03, LT(LANG_N(_SYMB), K04), K05 -// take and put an extra column in front. Mod K01 how you want it. -#define ROW3R_6_hrm_gasc(K01, K02, K03, K04, K05, K06) K01, \ - ROW3R_5_hrm_gasc(K02, K03, K04, K05, K06) - -// 5 into 6, derivitive of the first two. -#define ROW3R_5_6_hrm_gasc(K01, K02, K03, K04, K05) \ - ROW3R_6_hrm_gasc(K01, K02, K03, K04, K05, RIGHT_3) diff --git a/users/ericgebhart/mod_layers/hrm_sacg.h b/users/ericgebhart/mod_layers/hrm_sacg.h deleted file mode 100644 index f4408f78fb..0000000000 --- a/users/ericgebhart/mod_layers/hrm_sacg.h +++ /dev/null @@ -1,130 +0,0 @@ -#pragma once -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ -// Home row mods variant of mod layers. - -// MOD_ROW -// variants. -// input 5 get six, left and right language specific outer edge keys. - -// no edge keys. -// input 5 get 5 with mods applied. - -// input 6 get 6 with mods applied. - -// base cols in out. 5, 5_6, 6. -// input column count, output column count, if different. - -// ROW0 - Number row. -// LEFT. -#define ROW0L_5_hrm_sacg(K01, K02, K03, K04, K05) \ - K01, K02, K03, K04, K05 -// take and put an extra column in front. Mod K01 how you want it. -#define ROW0L_6_hrm_sacg(K01, K02, K03, K04, K05, K06) K01, \ - ROW0L_5_hrm_sacg(K02, K03, K04, K05, K06) - -// 5 into 6, derivitive of the first two. -#define ROW0L_5_6_hrm_sacg(K01, K02, K03, K04, K05) \ - ROW0L_6_hrm_sacg(LEFT_0, K01, K02, K03, K04, K05) - -// RIGHT. -#define ROW0R_5_hrm_sacg(K01, K02, K03, K04, K05) \ - K01, K02, K03, K04, K05 -// take and put an extra column in front. Mod K01 how you want it. -#define ROW0R_6_hrm_sacg(K01, K02, K03, K04, K05, K06) \ - ROW0R_5_hrm_sacg(K01, K02, K03, K04, K05), K06 - -// 5 into 6, derivitive of the first two. -#define ROW0R_5_6_hrm_sacg(K01, K02, K03, K04, K05) \ - ROW0R_6_hrm_sacg(K01, K02, K03, K04, K05, RIGHT_0) - - -// ROW1 -// LEFT. -#define ROW1L_5_hrm_sacg(K01, K02, K03, K04, K05) \ - K01, K02, K03, LT(_NAV, K04), K05 -// take and put an extra column in front. Mod K01 how you want it. -#define ROW1L_6_hrm_sacg(K01, K02, K03, K04, K05, K06) K01, \ - ROW1L_5_hrm_sacg(K02, K03, K04, K05, K06) - -// 5 into 6, derivitive of the first two. -#define ROW1L_5_6_hrm_sacg(K01, K02, K03, K04, K05) \ - ROW1L_6_hrm_sacg(LEFT_1, K01, K02, K03, K04, K05) - -// RIGHT. -#define ROW1R_5_hrm_sacg(K01, K02, K03, K04, K05) \ - K01, K02, K03, K04, LT(_LAYERS, K05) \ - // take and put an extra column in front. Mod K01 how you want it. -#define ROW1R_6_hrm_sacg(K01, K02, K03, K04, K05, K06) \ - ROW1R_5_hrm_sacg(K01, K02, K03, K04, K05), K06 - -// 5 into 6, derivitive of the first two. -#define ROW1R_5_6_hrm_sacg(K01, K02, K03, K04, K05) \ - ROW1R_6_hrm_sacg(K01, K02, K03, K04, K05, RIGHT_1) - - - -// HOME ROW - ROW2 -// home row, shift, alt, ctl, gui - gui, ctl, alt, shift. -// using MT so we can specify left and right. -// caps_word needs left and right shift. - -// LEFT. -#define ROW2L_5_hrm_sacg(K01, K02, K03, K04, K05) \ - MT(MOD_LSFT, K01), MT(MOD_LALT, K02), MT(MOD_LCTL, K03), MT(MOD_LGUI, K04), K05 -// take and put an extra column in front. Mod K01 how you want it. -#define ROW2L_6_hrm_sacg(K01, K02, K03, K04, K05, K06) K01, \ - ROW2L_5_hrm_sacg(K02, K03, K04, K05, K06) - -// 5 into 6, derivitive of the first two. -#define ROW2L_5_6_hrm_sacg(K01, K02, K03, K04, K05) \ - ROW2L_6_hrm_sacg(LEFT_2, K01, K02, K03, K04, K05) - -// RIGHT. -#define ROW2R_5_hrm_sacg(K01, K02, K03, K04, K05) \ - K01, MT(MOD_RGUI, K02), MT(MOD_RCTL, K03), MT(MOD_RALT, K04), MT(MOD_RSFT, K05) \ - // take and put an extra column in front. Mod K01 how you want it. -#define ROW2R_6_hrm_sacg(K01, K02, K03, K04, K05, K06) \ - ROW2R_5_hrm_sacg(K01, K02, K03, K04, K05), K06 - -// 5 into 6, derivitive of the first two. -#define ROW2R_5_6_hrm_sacg(K01, K02, K03, K04, K05) \ - ROW2R_6_hrm_sacg(K01, K02, K03, K04, K05, RIGHT_2) - - -// ROW 3 -// LEFT. -#define ROW3L_5_hrm_sacg(K01, K02, K03, K04, K05) \ - K01, K02, K03, K04, K05 -// take and put an extra column in front. Mod K01 how you want it. -#define ROW3L_6_hrm_sacg(K01, K02, K03, K04, K05, K06) K01, \ - ROW3L_5_hrm_sacg(K02, K03, K04, K05, K06) - -// 5 into 6, derivitive of the first two. -#define ROW3L_5_6_hrm_sacg(K01, K02, K03, K04, K05) \ - ROW3L_6_hrm_sacg(LEFT_3, K01, K02, K03, K04, K05) - -// RIGHT. -#define ROW3R_5_hrm_sacg(K01, K02, K03, K04, K05) \ - K01, LT(_NAV, K02), K03, LT(LANG_N(_SYMB), K04), K05 -// take and put an extra column in front. Mod K01 how you want it. -#define ROW3R_6_hrm_sacg(K01, K02, K03, K04, K05, K06) K01, \ - ROW3R_5_hrm_sacg(K02, K03, K04, K05, K06) - -// 5 into 6, derivitive of the first two. -#define ROW3R_5_6_hrm_sacg(K01, K02, K03, K04, K05) \ - ROW3R_6_hrm_sacg(K01, K02, K03, K04, K05, RIGHT_3) diff --git a/users/ericgebhart/mod_layers/hrs_nav.h b/users/ericgebhart/mod_layers/hrs_nav.h deleted file mode 100644 index 3075a37768..0000000000 --- a/users/ericgebhart/mod_layers/hrs_nav.h +++ /dev/null @@ -1,126 +0,0 @@ -#pragma once -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ -// -// shift on home row pinkies, nav on home row middle finger. - -// no edge keys. -// input 5 get 5 with mods applied. - -// input 6 get 6 with mods applied. - -// base cols in out. 5, 5_6, 6. -// input column count, output column count, if different. - -// L_5 Left R_5 Right. -// K01, K02, K03, K04, K05 - K01, K02, K03, K04, K05 -// pky, rng, mdl, idx, idx - idx, idx, mdl, rng, pnky - -// ROW0 - Number row. -// LEFT. -#define ROW0L_5_hrs_nav(K01, K02, K03, K04, K05) \ - K01, K02, K03, K04, K05 -// take and put an extra column in front. Mod K01 how you want it. -#define ROW0L_6_hrs_nav(K01, K02, K03, K04, K05, K06) K01, \ - ROW0L_5_hrs_nav(K02, K03, K04, K05, K06) - -// 5 into 6, derivitive of the first two. -#define ROW0L_5_6_hrs_nav(K01, K02, K03, K04, K05) \ - ROW0L_6_hrs_nav(LEFT_0, K01, K02, K03, K04, K05) - -// RIGHT. -#define ROW0R_5_hrs_nav(K01, K02, K03, K04, K05) \ - K01, K02, K03, K04, K05 -// take and put an extra column in front. Mod K01 how you want it. -#define ROW0R_6_hrs_nav(K01, K02, K03, K04, K05, K06) \ - ROW0R_5_hrs_nav(K01, K02, K03, K04, K05), K06 - -// 5 into 6, derivitive of the first two. -#define ROW0R_5_6_hrs_nav(K01, K02, K03, K04, K05) \ - ROW0R_6_hrs_nav(K01, K02, K03, K04, K05, RIGHT_0) - - -// ROW1 -// LEFT. -#define ROW1L_5_hrs_nav(K01, K02, K03, K04, K05) \ - K01, K02, K03, K04, K05 -// take and put an extra column in front. Mod K01 how you want it. -#define ROW1L_6_hrs_nav(K01, K02, K03, K04, K05, K06) K01, \ - ROW1L_5_hrs_nav(K02, K03, K04, K05, K06) - -// 5 into 6, derivitive of the first two. -#define ROW1L_5_6_hrs_nav(K01, K02, K03, K04, K05) \ - ROW1L_6_hrs_nav(LEFT_1, K01, K02, K03, K04, K05) - -// RIGHT. -#define ROW1R_5_hrs_nav(K01, K02, K03, K04, K05) \ - K01, K02, K03, K04, K05 \ - // take and put an extra column in front. Mod K01 how you want it. -#define ROW1R_6_hrs_nav(K01, K02, K03, K04, K05, K06) \ - ROW1R_5_hrs_nav(K01, K02, K03, K04, K05), K06 - -// 5 into 6, derivitive of the first two. -#define ROW1R_5_6_hrs_nav(K01, K02, K03, K04, K05) \ - ROW1R_6_hrs_nav(K01, K02, K03, K04, K05, RIGHT_1) - - -// HOME ROW - ROW2 -// LEFT. -#define ROW2L_5_hrs_nav(K01, K02, K03, K04, K05) \ - MT(MOD_LSFT, K01), K02, LT(_NAV, K03), K04, K05 -// take and put an extra column in front. Mod K01 how you want it. -#define ROW2L_6_hrs_nav(K01, K02, K03, K04, K05, K06) K01, \ - ROW2L_5_hrs_nav(K02, K03, K04, K05, K06) - -// 5 into 6, derivitive of the first two. -#define ROW2L_5_6_hrs_nav(K01, K02, K03, K04, K05) \ - ROW2L_6_hrs_nav(LEFT_2, K01, K02, K03, K04, K05) - -// RIGHT. -#define ROW2R_5_hrs_nav(K01, K02, K03, K04, K05) \ - K01, K02, LT(_NAV, K03), K04, MT(MOD_LSFT, K05) \ - // take and put an extra column in front. Mod K01 how you want it. -#define ROW2R_6_hrs_nav(K01, K02, K03, K04, K05, K06) \ - ROW2R_5_hrs_nav(K01, K02, K03, K04, K05), K06 - -// 5 into 6, derivitive of the first two. -#define ROW2R_5_6_hrs_nav(K01, K02, K03, K04, K05) \ - ROW2R_6_hrs_nav(K01, K02, K03, K04, K05, RIGHT_2) - - -// ROW 3 -// LEFT. -#define ROW3L_5_hrs_nav(K01, K02, K03, K04, K05) \ - K01, K02, LT(_NAV, K03), K04, MT(MOD_LSFT, K05) -// take and put an extra column in front. Mod K01 how you want it. -#define ROW3L_6_hrs_nav(K01, K02, K03, K04, K05, K06) K01, \ - ROW3L_5_hrs_nav(K02, K03, K04, K05, K06) - -// 5 into 6, derivitive of the first two. -#define ROW3L_5_6_hrs_nav(K01, K02, K03, K04, K05) \ - ROW3L_6_hrs_nav(LEFT_3, K01, K02, K03, K04, K05) - -// RIGHT. -#define ROW3R_5_hrs_nav(K01, K02, K03, K04, K05) \ - K01, K02, K03, K04, K05 -// take and put an extra column in front. Mod K01 how you want it. -#define ROW3R_6_hrs_nav(K01, K02, K03, K04, K05, K06) K01, \ - ROW3R_5_hrs_nav(K02, K03, K04, K05, K06) - -// 5 into 6, derivitive of the first two. -#define ROW3R_5_6_hrs_nav(K01, K02, K03, K04, K05) \ - ROW3R_6_hrs_nav(K01, K02, K03, K04, K05, RIGHT_3) diff --git a/users/ericgebhart/mod_layers/mod_layer.h b/users/ericgebhart/mod_layers/mod_layer.h deleted file mode 100644 index 2345d30c5b..0000000000 --- a/users/ericgebhart/mod_layers/mod_layer.h +++ /dev/null @@ -1,155 +0,0 @@ -#pragma once - -/* - Copyright 2018 Eric Gebhart - - 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 . -*/ - -// define our rows for the mod layer -// takes 5 keycodes, adds mods, and left and right edge keys. -// So we get keycodes in groups of 6. -// -// #define LANG_IS BEPO // to get Bepo substititions for keys and LTs. -// #define NO_EDGE_COL // for 5 column keyboards with no sixth column. -// -// wrap layers that have alternates for other locales with LANG_N -// this will change the name, from _SYMB to _SYMB_BP as needed. -// -// Home Row mods and other things like that go here. - -#include "keycodes.h" -#include "alt_mods.h" -#include "hrm_sacg.h" -#include "hrm_gacs.h" -#include "hrm_gacs_miryoku.h" -#include "hrm_gasc.h" -#include "hrs_nav.h" -#include "trns_mods.h" - -// redefined by the map as needed. -//#base_cols_in_out 5_6 // 5, 5_6, 6 -// MOD_ROW -// variants. -// input 5 get six, left and right language specific outer edge keys. - -// no edge keys. -// input 5 get 5 with mods applied. - -// input 6 get 6 with mods applied. - -// base cols in out. 5, 5_6, 6. -// input column count, output column count, if different. - -#define CONCATENATER(a, ...) a ## __VA_ARGS__ -#define CATR(a, ...) CONCATENATER(a, __VA_ARGS__) -#define CONCATENATER2(a, ...) a ## __VA_ARGS__ -#define CATR2(a, ...) CONCATENATER2(a, __VA_ARGS__) -#define CONCATENATER3(a, ...) a ## __VA_ARGS__ -#define CATR3(a, ...) CONCATENATER3(a, __VA_ARGS__) - -// mod layer name construction. add new layer extensions here. -// TRNS, ALT, HRM_GACS, HRM_SCAG, HRM_GASC, MIRYOKU_HRM_GASC -#define MOD_EXT CATR3(MODS_ARE, _MOD) -#define TRNS_MOD _trns -#define HRM_SCAG_MOD _hrm_scag -#define HRM_GACS_MOD _hrm_gacs -#define HRM_GASC_MOD _hrm_gasc -#define MIRYOKU_HRM_GACS_MOD _miryoku_hrm_gacs -#define ALT_MOD _alt -#define HRS_NAV_MOD _hrs_nav - -// MOD_COL_NAME(ROW0L) -- > ROW0L_5, ROW0L_6, ROW0L_5_6 -#define MOD_COL_NAME(NAME) CATR2(CATR(NAME, _), BASE_COLS_IN_OUT) -// MOD_ROW(ROW0L) -- > ROW0L_5_alt, ROW0L_6_alt, ROW0L_5_6_alt -#define MOD_ROW(NAME) CATR3(MOD_COL_NAME(NAME), MOD_EXT) - -// change the columns in/out according to the map and the keyboard. -//#define BASE_COLS_IN_OUT 5_6 // 5, 5_6, 6 - - -// These make it easier to create base layer layouts. -// They take 3x10, or 3x12 and make a 3x12 with mods. -// this isnt always useful, sometimes rows need to be -// specified explicitly in the layout. ie. layouts with -// extra keys in the middle. - - -#define MOD_CORE_3x5( \ - K01, K02, K03, K04, K05, \ - K06, K07, K08, K09, K0A, \ - K11, K12, K13, K14, K15, \ - K16, K17, K18, K19, K1A, \ - K21, K22, K23, K24, K25, \ - K26, K27, K28, K29, K2A) \ - MOD_ROW(ROW1L)(K01, K02, K03, K04, K05), \ - MOD_ROW(ROW1R)(K06, K07, K08, K09, K0A), \ - MOD_ROW(ROW2L)(K11, K12, K13, K14, K15), \ - MOD_ROW(ROW2R)(K16, K17, K18, K19, K1A), \ - MOD_ROW(ROW3L)(K21, K22, K23, K24, K25), \ - MOD_ROW(ROW3R)(K26, K27, K28, K29, K2A) - - -#define MOD_CORE_3x6(K01, K02, K03, K04, K05, K06, \ - K07, K08, K09, K0A, K0B, K0C, \ - K11, K12, K13, K14, K15, K16, \ - K17, K18, K19, K1A, K1B, K1C, \ - K21, K22, K23, K24, K25, K26, \ - K27, K28, K29, K2A, K2B, K2C) \ - MOD_ROW(ROW1L)(K01, K02, K03, K04, K05, K06), \ - MOD_ROW(ROW1R)(K07, K08, K09, K0A, K0B, K0C), \ - MOD_ROW(ROW2L)(K11, K12, K13, K14, K15, K16), \ - MOD_ROW(ROW2R)(K17, K18, K19, K1A, K1B, K1C), \ - MOD_ROW(ROW3L)(K21, K22, K23, K24, K25, K26), \ - MOD_ROW(ROW3R)(K27, K28, K29, K2A, K2B, K2C) - - -/// 4 rows for keyboards with number rows. -#define MOD_CORE_4x5( \ - K01, K02, K03, K04, K05, \ - K06, K07, K08, K09, K0A, \ - K11, K12, K13, K14, K15, \ - K16, K17, K18, K19, K1A, \ - K21, K22, K23, K24, K25, \ - K26, K27, K28, K29, K2A, \ - K31, K32, K33, K34, K35, \ - K36, K37, K38, K39, K3A) \ - MOD_ROW(ROW0L)(K01, K02, K03, K04, K05), \ - MOD_ROW(ROW0R)(K06, K07, K08, K09, K0A), \ - MOD_CORE_3x5(K11, K12, K13, K14, K15, \ - K16, K17, K18, K19, K1A, \ - K21, K22, K23, K24, K25, \ - K26, K27, K28, K29, K2A, \ - K31, K32, K33, K34, K35, \ - K36, K37, K38, K39, K3A) - - - -#define MOD_CORE_4x6(K01, K02, K03, K04, K05, K06, \ - K07, K08, K09, K0A, K0B, K0C, \ - K11, K12, K13, K14, K15, K16, \ - K17, K18, K19, K1A, K1B, K1C, \ - K21, K22, K23, K24, K25, K26, \ - K27, K28, K29, K2A, K2B, K2C, \ - K31, K32, K33, K34, K35, K36, \ - K37, K38, K39, K3A, K3B, K3C \ - ) \ - MOD_ROW(ROW0L)(K01, K02, K03, K04, K05, K06), \ - MOD_ROW(ROW0R)(K07, K08, K09, K0A, K0B, K0C), \ - MOD_CORE_3x6(K11, K12, K13, K14, K15, K16, \ - K17, K18, K19, K1A, K1B, K1C, \ - K21, K22, K23, K24, K25, K26, \ - K27, K28, K29, K2A, K2B, K2C, \ - K31, K32, K33, K34, K35, K36, \ - K37, K38, K39, K3A, K3B, K3C) diff --git a/users/ericgebhart/mod_layers/trns_mods.h b/users/ericgebhart/mod_layers/trns_mods.h deleted file mode 100644 index 06dfb06edd..0000000000 --- a/users/ericgebhart/mod_layers/trns_mods.h +++ /dev/null @@ -1,129 +0,0 @@ -#pragma once -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ -// -// non Home row mods, mod layer. - -// MOD_ROW variants. -// input 5 get six, left and right language specific outer edge keys. - -// no edge keys. -// input 5 get 5 with mods applied. - -// input 6 get 6 with mods applied. - -// base cols in out. 5, 5_6, 6. -// input column count, output column count, if different. - -// L_5 Left R_5 Right. -// K01, K02, K03, K04, K05 - K01, K02, K03, K04, K05 -// pky, rng, mdl, idx, idx - idx, idx, mdl, rng, pnky - -// ROW0 - Number row. -// LEFT. -#define ROW0L_5_trns(K01, K02, K03, K04, K05) \ - K01, K02, K03, K04, K05 -// take and put an extra column in front. Mod K01 how you want it. -#define ROW0L_6_trns(K01, K02, K03, K04, K05, K06) K01, \ - ROW0L_5_trns(K02, K03, K04, K05, K06) - -// 5 into 6, derivitive of the first two. -#define ROW0L_5_6_trns(K01, K02, K03, K04, K05) \ - ROW0L_6_trns(LEFT_0, K01, K02, K03, K04, K05) - -// RIGHT. -#define ROW0R_5_trns(K01, K02, K03, K04, K05) \ - K01, K02, K03, K04, K05 -// take and put an extra column in front. Mod K01 how you want it. -#define ROW0R_6_trns(K01, K02, K03, K04, K05, K06) \ - ROW0R_5_trns(K01, K02, K03, K04, K05), K06 - -// 5 into 6, derivitive of the first two. -#define ROW0R_5_6_trns(K01, K02, K03, K04, K05) \ - ROW0R_6_trns(K01, K02, K03, K04, K05, RIGHT_0) - - -// ROW1 -// LEFT. -#define ROW1L_5_trns(K01, K02, K03, K04, K05) \ - K01, K02, K03, K04, K05 -// take and put an extra column in front. Mod K01 how you want it. -#define ROW1L_6_trns(K01, K02, K03, K04, K05, K06) K01, \ - ROW1L_5_trns(K02, K03, K04, K05, K06) - -// 5 into 6, derivitive of the first two. -#define ROW1L_5_6_trns(K01, K02, K03, K04, K05) \ - ROW1L_6_trns(LEFT_1, K01, K02, K03, K04, K05) - -// RIGHT. -#define ROW1R_5_trns(K01, K02, K03, K04, K05) \ - K01, K02, K03, K04, K05 \ - // take and put an extra column in front. Mod K01 how you want it. -#define ROW1R_6_trns(K01, K02, K03, K04, K05, K06) \ - ROW1R_5_trns(K01, K02, K03, K04, K05), K06 - -// 5 into 6, derivitive of the first two. -#define ROW1R_5_6_trns(K01, K02, K03, K04, K05) \ - ROW1R_6_trns(K01, K02, K03, K04, K05, RIGHT_1) - - -// HOME ROW - ROW2 -// LEFT. -#define ROW2L_5_trns(K01, K02, K03, K04, K05) \ - K01, K02, K03, K04, K05 -// take and put an extra column in front. Mod K01 how you want it. -#define ROW2L_6_trns(K01, K02, K03, K04, K05, K06) K01, \ - ROW2L_5_trns(K02, K03, K04, K05, K06) - -// 5 into 6, derivitive of the first two. -#define ROW2L_5_6_trns(K01, K02, K03, K04, K05) \ - ROW2L_6_trns(LEFT_2, K01, K02, K03, K04, K05) - -// RIGHT. -#define ROW2R_5_trns(K01, K02, K03, K04, K05) \ - K01, K02, K03, K04, K05 \ - // take and put an extra column in front. Mod K01 how you want it. -#define ROW2R_6_trns(K01, K02, K03, K04, K05, K06) \ - ROW2R_5_trns(K01, K02, K03, K04, K05), K06 - -// 5 into 6, derivitive of the first two. -#define ROW2R_5_6_trns(K01, K02, K03, K04, K05) \ - ROW2R_6_trns(K01, K02, K03, K04, K05, RIGHT_2) - - -// ROW 3 -// LEFT. -#define ROW3L_5_trns(K01, K02, K03, K04, K05) \ - K01, K02, K03, K04, K05 -// take and put an extra column in front. Mod K01 how you want it. -#define ROW3L_6_trns(K01, K02, K03, K04, K05, K06) K01, \ - ROW3L_5_trns(K02, K03, K04, K05, K06) - -// 5 into 6, derivitive of the first two. -#define ROW3L_5_6_trns(K01, K02, K03, K04, K05) \ - ROW3L_6_trns(LEFT_3, K01, K02, K03, K04, K05) - -// RIGHT. -#define ROW3R_5_trns(K01, K02, K03, K04, K05) \ - K01, K02, K03, K04, K05 -// take and put an extra column in front. Mod K01 how you want it. -#define ROW3R_6_trns(K01, K02, K03, K04, K05, K06) K01, \ - ROW3R_5_trns(K02, K03, K04, K05, K06) - -// 5 into 6, derivitive of the first two. -#define ROW3R_5_6_trns(K01, K02, K03, K04, K05) \ - ROW3R_6_trns(K01, K02, K03, K04, K05, RIGHT_3) diff --git a/users/ericgebhart/oled/oled_cartes.c b/users/ericgebhart/oled/oled_cartes.c deleted file mode 100644 index 8ab88e969e..0000000000 --- a/users/ericgebhart/oled/oled_cartes.c +++ /dev/null @@ -1,325 +0,0 @@ -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ -#ifdef OLED_CUSTOM_ENABLE - -#include "ericgebhart.h" - -void oled_render_layer_map(void) { - uint8_t lyr = get_highest_layer(layer_state); - if (lyr < _LAYERS) { - switch (get_highest_layer(default_layer_state)) { - -#ifdef QWERTY_LAYER_ENABLE - SHOW_MAP(_QWERTY) -#endif - -#ifdef COLEMAK_DH_LAYER_ENABLE - SHOW_MAP(_COLEMAK_DH) -#endif - -#ifdef COLEMAK_LAYER_ENABLE - SHOW_MAP(_COLEMAK) -#endif -#ifdef HALMAK_LAYER_ENABLE - SHOW_MAP(_HALMAK) -#endif -#ifdef MINIMAK_LAYER_ENABLE - SHOW_MAP(_MINIMAK) -#endif -#ifdef MINIMAK_8_LAYER_ENABLE - SHOW_MAP(_MINIMAK_8) -#endif -#ifdef MINIMAK_12_LAYER_ENABLE - SHOW_MAP(_MINIMAK_12) -#endif - -#ifdef DVORAK_LAYER_ENABLE - SHOW_MAP(_DVORAK) -#endif -#ifdef DVORAK_RLC_IU_LAYER_ENABLE - SHOW_MAP(_DVORAK_RLC_IU) -#endif -#ifdef BOO_LAYER_ENABLE - SHOW_MAP(_BOO) -#endif -#ifdef CAPEWELL_DVORAK_LAYER_ENABLE - SHOW_MAP(_CAPEWELL_DVORAK) -#endif -#ifdef AHEI_LAYER_ENABLE - SHOW_MAP(_AHEI) -#endif - -#ifdef BEAKL27_LAYER_ENABLE - SHOW_MAP(_BEAKL27) -#endif - -#ifdef BEAKL15_LAYER_ENABLE - SHOW_MAP(_BEAKL15) -#endif - -#ifdef BEAKL19_LAYER_ENABLE - SHOW_MAP(_BEAKL19) -#endif - -#ifdef BEAKLWI_LAYER_ENABLE - SHOW_MAP(_BEAKLWI) -#endif - -#ifdef CARPALX_QFMLWY_LAYER_ENABLE - SHOW_MAP(_CARPALX_QFMLWY) -#endif - -#ifdef CARPALX_QGMLWB_LAYER_ENABLE - SHOW_MAP(_CARPALX_QGMLWB) -#endif - -#ifdef CARPALX_QGMLWY_LAYER_ENABLE - SHOW_MAP(_CARPALX_QGMLWY) -#endif - -#ifdef MTGAP_LAYER_ENABLE - SHOW_MAP(_MTGAP) -#endif - -#ifdef CTGAP_LAYER_ENABLE - SHOW_MAP(_CTGAP) -#endif - -#ifdef APT_LAYER_ENABLE - SHOW_MAP(_APT) -#endif - -#ifdef CANARY_LAYER_ENABLE - SHOW_MAP(_CANARY) -#endif - - -#ifdef HD_NEU_LAYER_ENABLE - SHOW_MAP(_HD_NEU) -#endif - -#ifdef HD_NEU_NARROW_LAYER_ENABLE - SHOW_MAP(_HD_NEU_NARROW) -#endif - -#ifdef HD_TITANIUM_LAYER_ENABLE - SHOW_MAP(_HD_TITANIUM) -#endif - -#ifdef HD_GOLD_LAYER_ENABLE - SHOW_MAP(_HD_GOLD) -#endif - -#ifdef HD_PLATINUM_LAYER_ENABLE - SHOW_MAP(_HD_PLATINUM) -#endif - -#ifdef HD_SILVER_LAYER_ENABLE - SHOW_MAP(_HD_SILVER) -#endif - -#ifdef HD_BRONZE_LAYER_ENABLE - SHOW_MAP(_HD_BRONZE) -#endif - -#ifdef HD_ELAN_LAYER_ENABLE - SHOW_MAP(_HD_ELAN) -#endif - -#ifdef HD_DASH_LAYER_ENABLE - SHOW_MAP(_HD_DASH) -#endif - -#ifdef HD_REF_LAYER_ENABLE - SHOW_MAP(_HD_REF) -#endif - -#ifdef RSTHD_LAYER_ENABLE - SHOW_MAP(_RSTHD) -#endif - -#ifdef HANDS_UP_LAYER_ENABLE - SHOW_MAP(_HANDS_UP) -#endif -#ifdef WHITE_LAYER_ENABLE - SHOW_MAP(_WHITE) -#endif -#ifdef ISRT_LAYER_ENABLE - SHOW_MAP(_ISRT) -#endif -#ifdef SOUL_LAYER_ENABLE - SHOW_MAP(_SOUL) -#endif -#ifdef NIRO_LAYER_ENABLE - SHOW_MAP(_NIRO) -#endif -#ifdef ASSET_LAYER_ENABLE - SHOW_MAP(_ASSET) -#endif -#ifdef WHORF_LAYER_ENABLE - SHOW_MAP(_WHORF) -#endif -#ifdef WHORF6_LAYER_ENABLE - SHOW_MAP(_WHORF6) -#endif - -#ifdef BEPO_LAYER_ENABLE - SHOW_MAP(_BEPO) -#endif - -#ifdef OPTIMOT_LAYER_ENABLE - SHOW_MAP(_OPTIMOT) -#endif - -#ifdef OPTIMOT_COMPACT_LAYER_ENABLE - SHOW_MAP(_OPTIMOT_COMPACT) -#endif - -#ifdef BEAKL19bis_LAYER_ENABLE - SHOW_MAP(_BEAKL19bis) -#endif - - } - - } else { - - switch (lyr) { -#ifdef TOPROWS_LAYER_ENABLE - LCASE(_TOPROWS) -# ifdef TOPROWS_BKL_NUMS -# ifdef TOPROWS_MOD - CARTE_TOPROWS_MOD -# else -# ifdef TOPROWS_BKL_19_NUMS - CARTE_TOPROWS_BKL19 -# else - CARTE_TOPROWS -# endif -# endif -# else // not beakl nums. - CARTE_RAISE -# endif - break; -#endif - - - case _NAV: -#ifdef NAV_FULL_LOCK_MODS - CARTE_NAVA -#endif -#ifdef NAV_FULL - CARTE_NAV -#endif -#ifdef NAV_NO_MOUSE - CARTE_NAVnm -#endif -#ifdef NAV_MIRYOKU - CARTE_NAV_miryoku -#endif - break; - -#ifdef MOUSE_LAYER_ENABLE - case _NAVm: -# ifdef NAV_MOUSE_MIRYOKU - CARTE_NAVm_miryoku -# else - CARTE_NAVm -# endif - break; -#endif - -#ifdef MEDIA_LAYER_ENABLE - SHOW_MAP_S(_MEDIA) -#endif - SHOW_MAP_S(_LAYERS) - -#ifdef SYMBOL_LAYER_ENABLE - LCASE(_SYMB) -# ifdef SYMBOL_BEAKL - CARTE_SYMB_BEAKL -# endif -# ifdef SYMBOL_BEAKL_EXT - CARTE_SYMB_BEAKLA -# endif -# ifdef SYMBOL_BEAKL_EXT_VI - CARTE_SYMB_BEAKLB -# endif -# ifdef SYMBOL_BEAKL_C - CARTE_SYMB_BEAKLC -# endif -# ifdef SYMBOL_MIRYOKU - CARTE_SYMB_MIRYOKU -# endif -# ifdef SYMBOL_BEAKL_WI - CARTE_SYMB_BEAKL_WI -# endif -# ifdef SYMBOL_BEAKL_WI - CARTE_SYMB_NEO -# endif - break; -#endif - -#ifdef KEYAD_LAYER_ENABLE - LCASE(_KEYPAD) -#ifdef KEYPAD_BEAKL -#ifdef KEYPAD_BEAKL_WI - CARTE_KP_BKL_WI -#endif -#ifdef KEYPAD_MODS - CARTE_KP_BKL_MODS -#endif -#if !defined(KEYPAD_MODS) && !defined(KEYPAD_BEAKL_WI) - CARTE_KP_BKL_FUNC -#endif -#ifdef KEYPAD_MIRYOKU - CARTE_KP_MIRYOKU -#endif - -#else // not beakl. -#ifdef KEYPAD_RIGHT -#ifdef KEYPAD_MODS - CARTE_MODS_KP -#else - CARTE_FP_KP -#endif - -#else // not keypad right. -#ifdef KEYPAD_MODS - CARTE_KP_MODS -#else - CARTE_KP_FP // the final default. -#endif -#endif // end not keypad right. -#endif // end not beakl - break; -#endif // end keypad. - -#ifdef MORTE_LAYER_ENABLE - SHOW_MAP(_MORTE) -#endif - -#ifdef ACCENTS_MORTE_LAYER_ENABLE - SHOW_MAP(_ACCENTS_MORTE) -#endif - -#ifdef ACCENTS_LAYER_ENABLE - SHOW_MAP(_CARTE_ACCENTS) -#endif - } - } -} -#endif diff --git a/users/ericgebhart/oled/oled_layers.c b/users/ericgebhart/oled/oled_layers.c deleted file mode 100644 index 57424d1d6c..0000000000 --- a/users/ericgebhart/oled/oled_layers.c +++ /dev/null @@ -1,252 +0,0 @@ -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ -#include "ericgebhart.h" -#include - -#ifdef OLED_CUSTOM_ENABLE - -void oled_render_default_layer_state(void) { - //oled_write_P(PSTR("Layout: "), false); - uint16_t layer = get_highest_layer(default_layer_state); - char layer_str[8]; - snprintf(layer_str, sizeof(layer_str), "%u ",layer); - oled_write(layer_str , false); - switch (layer) { -#ifdef DVORAK_LAYER_ENABLE - WRITE_STR_LAYER(_DVORAK, "Dvorak") -#endif -#ifdef DVORAK_RLC_IU_LAYER_ENABLE - WRITE_STR_LAYER(_DVORAK_RLC_IU_, "Dvorak-rlc") -#endif -#ifdef BOO_LAYER_ENABLE - WRITE_STR_LAYER(_BOO, "Boo") -#endif -#ifdef CAPEWELL_DVORAK_LAYER_ENABLE - WRITE_STR_LAYER(_CAPEWELL_DVORAK, "Capewell Dvorak") -#endif -#ifdef AHEI_LAYER_ENABLE - WRITE_STR_LAYER(_AHEI, "Ahei") -#endif - -#ifdef QWERTY_LAYER_ENABLE - WRITE_STR_LAYER(_QWERTY, "Qwerty") -#endif -#ifdef WORKMAN_LAYER_ENABLE - WRITE_STR_LAYER(_WORKMAN, "Workman") -#endif -#ifdef NORMAN_LAYER_ENABLE - WRITE_STR_LAYER(_NORMAN, "Norman") -#endif - -#ifdef COLEMAK_LAYER_ENABLE - WRITE_STR_LAYER(_COLEMAK, "Colemak") -#endif -#ifdef COLEMAK_DH_LAYER_ENABLE - WRITE_STR_LAYER(_COLEMAK_DH, "Colemak") -#endif -#ifdef HALMAK_LAYER_ENABLE - WRITE_STR_LAYER(_HALMAK, "Halmak") -#endif -#ifdef MINIMAK_LAYER_ENABLE - WRITE_STR_LAYER(_MINIMAK, "Minimak") -#endif -#ifdef MINIMAK_8_LAYER_ENABLE - WRITE_STR_LAYER(_MINIMAK_8, "Minimak 8") -#endif -#ifdef MINIMAK_12_LAYER_ENABLE - WRITE_STR_LAYER(_MINIMAK_12, "Minimak 12") -#endif - -#ifdef BEAKL15_LAYER_ENABLE - WRITE_STR_LAYER(_BEAKL15, "Beakl") -#endif -#ifdef BEAKL19_LAYER_ENABLE - WRITE_STR_LAYER(_BEAKL19, "Beakl19") -#endif -#ifdef BEAKL27_LAYER_ENABLE - WRITE_STR_LAYER(_BEAKL27, "Beakl27") -#endif -#ifdef BEAKLWI_LAYER_ENABLE - WRITE_STR_LAYER(_BEAKLWI, "BeaklWi") -#endif - -#ifdef CARPALX_QFMLWY_LAYER_ENABLE - WRITE_STR_LAYER(_CARPALX_QFMLWY, "Carpalx qfmlwy") -#endif - -#ifdef CARPALX_QGMLWB_LAYER_ENABLE - WRITE_STR_LAYER(_CARPALX_QGMLWB, "Carpalx qgmlwb") -#endif - -#ifdef CARPALX_QGMLWY_LAYER_ENABLE - WRITE_STR_LAYER(_CARPALX_QGMLWY, "Carpalx qgmlwy") -#endif - -#ifdef HD_NEU_LAYER_ENABLE - WRITE_STR_LAYER(_HD_NEU, "HD Neu") -#endif -#ifdef HD_NEU_NARROW_LAYER_ENABLE - WRITE_STR_LAYER(_HD_NEU_NARROW, "HD Neu N") -#endif -#ifdef HD_TITANIUM_LAYER_ENABLE - WRITE_STR_LAYER(_HD_TITANIUM, "HD Titanium") -#endif -#ifdef HD_GOLD_LAYER_ENABLE - WRITE_STR_LAYER(_HD_GOLD, "HD Gold") -#endif -#ifdef HD_SILVER_LAYER_ENABLE - WRITE_STR_LAYER(_HD_SILVER, "HD Silver") -#endif -#ifdef HD_PLATINUM_LAYER_ENABLE - WRITE_STR_LAYER(_HD_PLATINUM, "HD Platinum") -#endif -#ifdef HD_BRONZE_LAYER_ENABLE - WRITE_STR_LAYER(_HD_BRONZE, "HD Bronze") -#endif -#ifdef HD_ELAN_LAYER_ENABLE - WRITE_STR_LAYER(_HD_ELAN, "HD Elan") -#endif -#ifdef HD_DASH_LAYER_ENABLE - WRITE_STR_LAYER(_HD_DASH, "HD Dash") -#endif -#ifdef HD_REF_LAYER_ENABLE - WRITE_STR_LAYER(_HD_REF, "HD Ref") -#endif - -#ifdef MTGAP_LAYER_ENABLE - WRITE_STR_LAYER(_MTGAP, "Mtgap") -#endif -#ifdef CTGAP_LAYER_ENABLE - WRITE_STR_LAYER(_CTGAP, "Ctgap") -#endif -#ifdef APT_LAYER_ENABLE - WRITE_STR_LAYER(_APT, "Apt") -#endif -#ifdef CANARY_LAYER_ENABLE - WRITE_STR_LAYER(_CANARY, "Canary") -#endif - -#ifdef MALTRON_LAYER_ENABLE - WRITE_STR_LAYER(_MALTRON, "Maltron") -#endif -#ifdef EUCALYN_LAYER_ENABLE - WRITE_STR_LAYER(_EUCALYN, "Eucalyn") -#endif -#ifdef RSTHD_LAYER_ENABLE - WRITE_STR_LAYER(_RSTHD, "Rsthd") -#endif -#ifdef HAND_UP_LAYER_ENABLE - WRITE_STR_LAYER(_HANDS_UP, "Hands up") -#endif -#ifdef WHITE_LAYER_ENABLE - WRITE_STR_LAYER(_WHITE, "White") -#endif -#ifdef ISRT_LAYER_ENABLE - WRITE_STR_LAYER(_ISRT, "Isrt") -#endif -#ifdef SOUL_LAYER_ENABLE - WRITE_STR_LAYER(_SOUL, "Soul") -#endif -#ifdef NIRO_LAYER_ENABLE - WRITE_STR_LAYER(_NIRO, "Niro") -#endif -#ifdef ASSET_LAYER_ENABLE - WRITE_STR_LAYER(_ASSET, "Asset") -#endif -#ifdef WHORF_LAYER_ENABLE - WRITE_STR_LAYER(_WHORF, "Whorf") -#endif -#ifdef WHORF6_LAYER_ENABLE - WRITE_STR_LAYER(_WHORF6, "Whorf 6") -#endif - -#ifdef OPTIMOT_LAYER_ENABLE - WRITE_STR_LAYER(_OPTIMOT, "Optimot") -#endif -#ifdef OPTIMOT_COMPACT_LAYER_ENABLE - WRITE_STR_LAYER(_OPTIMOT_COMPACT, "Optimot") -#endif -#ifdef BEAKL19bis_LAYER_ENABLE - WRITE_STR_LAYER(_BEAKL19bis, "Beakl19bis") -#endif -#ifdef BEPO_LAYER_ENABLE // Bepo only works on bepo. - WRITE_STR_LAYER(_BEPO, "Bepo") -#endif - } -} - -void oled_render_layer_state(void) { - uint16_t layer = get_highest_layer(layer_state); - char layer_str[8]; - snprintf(layer_str, sizeof(layer_str), "%u ",layer); - oled_write_P(PSTR(""), false); - if (layer > 0) - oled_write(layer_str , false); - - switch (layer) { - // language variant layers. -#ifdef TOPROWS_LAYER_ENABLE - WRITE_STR_LAYER(_TOPROWS, "TopRows"); -#endif - -#ifdef SYMBOL_LAYER_ENABLE - WRITE_STR_LAYER(_SYMB, "Symbols"); -#endif - -#ifdef KEYPAD_LAYER_ENABLE - WRITE_STR_LAYER(_KEYPAD, "Keypad"); -#endif - - // single case, BP or no suffix. -#ifdef ACCENTS_MORTE_LAYER_ENABLE - WRITE_STR_LAYER(_ACCENTS_MORTE, "Accents Morte"); -#endif -#ifdef ACCENTS_LAYER_ENABLE - WRITE_STR_LAYER(_ACCENTS, "Accents"); -#endif -#ifdef MORTE_LAYER_ENABLE - WRITE_STR_LAYER(_MORTE, "Morte"); -#endif - - - // language agnostic layers. -#ifdef NAV_LAYER_ENABLE - WRITE_STR_CASE(_NAV, "Navigation"); - WRITE_STR_CASE(_NAVm, "Mouse"); -#endif -#ifdef MEDIA_LAYER_ENABLE - WRITE_STR_CASE(_MEDIA, "Media"); -#endif -#ifdef FUNC_LAYER_ENABLE - WRITE_STR_CASE(_FUN, "Func"); -#endif - - WRITE_STR_CASE(_LAYERS, "Layers"); - -#ifdef RGB_LAYER_ENABLE - WRITE_STR_CASE(_RGB, "RGB"); -#endif -#ifdef ADJUST_LAYER_ENABLE - WRITE_STR_CASE(_ADJUST, "Adjust"); -#endif -#ifdef COMBO_REF_LAYER_ENABLE - WRITE_STR_CASE(_COMBO_REF, "COMBO Ref"); -#endif - - } -} -#endif diff --git a/users/ericgebhart/oled/oled_stuff.c b/users/ericgebhart/oled/oled_stuff.c deleted file mode 100755 index 211fe4ab3e..0000000000 --- a/users/ericgebhart/oled/oled_stuff.c +++ /dev/null @@ -1,189 +0,0 @@ -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ -#include "ericgebhart.h" -#include -#include - -#ifdef OLED_CUSTOM_ENABLE - -extern uint32_t current_locale; - -void oled_render_locale(void) { - // oled_write_P(PSTR("Layout: "), false); - switch (current_locale) { - WRITE_STR_CASE(LOCALE_DEFAULT, DEFAULT_LANG_NAME) -#ifdef SECOND_LOCALE - WRITE_STR_CASE(LOCALE_TWO, SECOND_LOCALE_NAME) -#endif - } -} - -void oled_render_keylock_status(led_t led_state) { - oled_write_P(PSTR(" Lock:"), false); - oled_write_P(PSTR("N"), led_state.num_lock); - oled_write_P(PSTR("C"), led_state.caps_lock); - oled_write_P(PSTR("S"), led_state.scroll_lock); -} - -void oled_render_mod_status(uint8_t modifiers) { - oled_write_P(PSTR("Mods:"), false); - oled_write_P(PSTR("S"), (modifiers & MOD_MASK_SHIFT)); - oled_write_P(PSTR("C"), (modifiers & MOD_MASK_CTRL)); - oled_write_P(PSTR("A"), (modifiers & MOD_MASK_ALT)); - oled_write_P(PSTR("G"), (modifiers & MOD_MASK_GUI)); -} - -void oled_render_mod_lock_status(void){ - oled_render_mod_status(get_mods() | get_oneshot_mods()); - oled_render_keylock_status(host_keyboard_led_state()); -} - - -#ifdef KEYLOGGER_ENABLE -char mkeylog_str[22] = {}; - -const char mcode_to_name[60] = { - ' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f', - 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', - 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', - '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', - 'R', 'E', 'B', 'T', '_', '-', '=', '[', ']', '\\', - '#', ';', '\'', '`', ',', '.', '/', ' ', ' ', ' '}; - - -void oled_render_keylog(void) { - oled_write_ln(mkeylog_str, false); -} - - -void add_keylog(uint16_t keycode, keyrecord_t *record) { - char name = ' '; - if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || - (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) { - keycode = keycode & 0xFF; - } - if (keycode < 60) { - name = mcode_to_name[keycode]; - } - - // update keylog - memset(mkeylog_str, ' ', sizeof(mkeylog_str) - 1); - snprintf(mkeylog_str, sizeof(mkeylog_str), "%dx%d, k%2d : %c", - record->event.key.row, record->event.key.col, - keycode, name); -} -#endif - -__attribute__((weak)) oled_rotation_t oled_init_keymap(oled_rotation_t rotation) { return rotation; } - -oled_rotation_t oled_init_user(oled_rotation_t rotation) { - - // for the big screen. -#ifdef OLED_DISPLAY_128X64 - return OLED_ROTATION_180; -#endif - // rotate the slave side of the corne to be bottom side in. - if (!is_keyboard_master()) { - return OLED_ROTATION_180; - } - - return oled_init_keymap(rotation); -} - -/* oled_rotation_t oled_init_user(oled_rotation_t rotation) { */ -/* memset(mkeylog_str, ' ', sizeof(mkeylog_str) - 1); */ -/* if (is_keyboard_master()) { */ -/* return OLED_ROTATION_270; */ -/* } else { */ -/* return OLED_ROTATION_180; */ -/* } */ -/* } */ - - -void render_bootmagic_status(bool status) { - /* Show Ctrl-Gui Swap options */ - static const char PROGMEM logo[][2][3] = { - {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}}, - {{0x95, 0x96, 0}, {0xb5, 0xb6, 0}}, - }; - if (status) { - oled_write_ln_P(logo[0][0], false); - oled_write_ln_P(logo[0][1], false); - } else { - oled_write_ln_P(logo[1][0], false); - oled_write_ln_P(logo[1][1], false); - } -} - - -__attribute__((weak)) void oled_render_logo(void) { - // clang-format off - static const char PROGMEM qmk_logo[] = { - 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, - 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, - 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0}; - // clang-format on - oled_write_P(qmk_logo, false); -} - - -bool process_record_user_oled(uint16_t keycode, keyrecord_t *record) { -#ifdef KEYLOGGER_ENABLE - if (record->event.pressed) { - //oled_timer = timer_read32(); - add_keylog(keycode, record); - //add_keylog(keycode); - } -#endif - return true; -} - -bool oled_task_user(void) { - //oled_clear(); - if (is_keyboard_master()) { - oled_render_mod_lock_status(); - oled_advance_page(false); - oled_render_default_layer_state(); - oled_render_locale(); - oled_write_ln_P(PSTR(" "), false); - oled_render_layer_state(); - oled_write_ln_P(PSTR(" "), false); -#ifdef OLED_DISPLAY_128X64 - oled_render_layer_map(); -#endif -#ifdef KEYLOGGER_ENABLE - oled_render_keylog(); -#endif - - // slave side display. - } else { - oled_clear(); -#ifdef OLED_LOGO_ENABLE - oled_render_logo(); -#endif - oled_render_default_layer_state(); - oled_render_locale(); - oled_write_ln_P(PSTR(" "), false); -#ifdef SPLIT_LAYER_STATE_ENABLE - oled_render_layer_state(); - oled_render_layer_map(); -#endif - } - return(false); - -} -#endif diff --git a/users/ericgebhart/oled/oled_stuff.h b/users/ericgebhart/oled/oled_stuff.h deleted file mode 100755 index 7824ec7d84..0000000000 --- a/users/ericgebhart/oled/oled_stuff.h +++ /dev/null @@ -1,61 +0,0 @@ -#pragma once -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ - -#ifdef OLED_CUSTOM_ENABLE - -#include "quantum.h" -//#include "oled_driver.h" - -void oled_render_mod_lock_status(void); -void oled_driver_render_logo(void); -bool process_record_user_oled(uint16_t keycode, keyrecord_t *record); -void oled_render_layer_map(void); -void oled_render_default_layer_state(void); -void oled_render_layer_state(void); - -#define WRITE_STR_CASE(CASE, STRING) \ - case CASE: \ - oled_write_P(PSTR(STRING), false); \ - break; \ - -// kinda hacky for the moment. -// assume bepo is enabled. -#define WRITE_STR_LAYER(CASE, STRING) \ - LCASE(CASE) \ - oled_write_P(PSTR(STRING), false); \ - break; - -// make maps for the oled. code doc. -#define carte_de_map(ROW1, ROW2, ROW3) \ - oled_write_ln_P(PSTR(ROW1), false); \ - oled_write_ln_P(PSTR(ROW2), false); \ - oled_write_ln_P(PSTR(ROW3), false); - -// generate Case for all locales for this map. -#define SHOW_MAP(LAYER) \ - LCASE(LAYER) \ - CAT(CARTE, LAYER) \ - break; - -// a single case, for single locale layers. -#define SHOW_MAP_S(LAYER) \ - case LAYER: \ - CAT(CARTE, LAYER) \ - break; - -#endif diff --git a/users/ericgebhart/process_records.c b/users/ericgebhart/process_records.c deleted file mode 100755 index bb4bc2563b..0000000000 --- a/users/ericgebhart/process_records.c +++ /dev/null @@ -1,51 +0,0 @@ -/* - Copyright 2018-2022 Eric Gebhart - - 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 . -*/ -#include "ericgebhart.h" -#include "extensions.h" - -__attribute__((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; } - -__attribute__((weak)) bool process_record_secrets(uint16_t keycode, keyrecord_t *record) { return true; } - -// Defines actions for my global custom keycodes. Defined in ericgebhart.h file -// Then runs the _keymap's record handier if not processed here -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - -#ifdef OLED_CUSTOM_ENABLE - process_record_user_oled(keycode, record); -#endif - - PROCESS_EXTENSIONS - - if (process_record_keymap(keycode, record) && process_record_secrets(keycode, record)) { - switch (keycode) { - - case KC_RESET: - if (!record->event.pressed) { - reset_keyboard(); - } - return false; - break; - - case KC_SPACETEST: // test something. - // default_layer_set(1UL << _BEAKL); - // tap_code16(LSFT(KC_SPACE)); - break; - } - } - return true; -} diff --git a/users/ericgebhart/readme.md b/users/ericgebhart/readme.md deleted file mode 100755 index 446a1411b4..0000000000 --- a/users/ericgebhart/readme.md +++ /dev/null @@ -1,1584 +0,0 @@ -Overview -======== - -This is as much a keymap framework as it is a keymap. It can take many -shapes with just a few configuration choices. Base layers, Mods, thumb clusters, -edge_keys, all can be changed with just a configuration option. -There are over 50 base layouts to choose from, as well as multiple -choices of navigation, mouse, media, -symbols, and keypads. Home row mods come in a few flavors or none, -in a mod layer which is easily understandable and can be turned on -or off, or switched. There are Miryoku options for everything if -that is your thing. - -If there is a oled of 64x128 the maps of each layer will be displayed, which -helps a lot in remembering and learning. - -This is an easily configurable keymap for keymap exploration. It is for -primarily for minimalist, ortho split keyboards but does support some rectangles. -ItÂīs first keyboard was an Ergodox-ez many years ago. My daily driver -is now a Kyria or a Corne, but I still use an original dactyl, rebound -and ergodox-ez regularly although most of the love goes to the Kyria and Corne. - -The framework is Language -agnostic, it supports having layers for different locales which can be -cycled through. -There are multiple mods layers to choose or -not, home row mods or not, a variety of thumb layouts, mouse/no mouse, -smart lock layers and mods, N-Shot mods like callum's, swapper. Combos, -tap_hold, accented keys, alternate shifted keys, automatic custom -keys, key overrides. Minimal or no C-code required for most things. -Language, mods, layouts and extensions are encapsulated, so that they -do not interact in the configuration which makes it much easier to modify -and grow. Mods and combos are by key location rather than specific key codes. - -Quick start -------------- - -Everything is encapsulated here. Base layers, functional layers, mods, -or no mods, even the language. This means that anything can change -independently and easily. - -If you don't mind dvorak, beakl or hands down, you can probably -just use what is configured. Or just change it to a base layer -of your choice. The fastest way to get started is to just change -the base layers to the ones you want, compile and flash. - -Edit _config.h_, - * Set the lang_is, probably to EN. - * US international and BEPO are also supported out of the box. - * Uncomment the base layers you wish to have. - * comment the ones you don't. - * keep the number below 5 if you enable a second locale. - * Set the thumb clusters - * Choose a mod layer - * Choose an edge key set if you need one. - * Choose the layer flavors that you want. - * For Miryoku, copy the `miryoku_hd_gold_config.h` over `config.h` - It is a complete config with miryoku choices. Choose the base - layers you wish if Hands Down Gold and Qwerty is not your thing. - - ** do not turn off extensions until you know them ** - It will likely cause a stream of errors for the keycodes that - go missing when something is turned off. There are known - interactions between combos, smart locks, not_dead, and alt local keys. - Turning encoders or oled on and off certainly wonÂīt break - anything. - - There are other interactions between your choices. - Edge keys, thumbs, combos, other extensions, - may use the extensions that are enabled. - -### Look here to see the parts - * Everything can be turned on and off in *config.h* - * Base layers are in *base_layers/* - * Edge keys are in *layers/edge_keys.h* - * Thumbs can be reviewed in *layers/thumbs.h* - * Mods are in *mod_layers/* - * All other layers are also in *layers/* - - -The long version ------------------ - -All can be turned on or off in the config. -supports en-us and fr-bepo Support for other languages is easily added. - -Layouts are human readable, all extensions are defined with def files. -If an 128x64 oled is available, a map of the current layer is shown if enabled. - -I'm an Xmonad, emacs in vi emulation programmer, that -just means that _Gui, Esc, :/?!% and ._ are all easy access and I like my -arrow and mouse keys in a 4 column row. - -I have also become minimalist in my keyboard choices. I don't use -number rows, not even on my kinesis, dactyl, or ergodox_ez, which have them. -Although my maps do reasonably support these bigger keyboards as that is where -it all started for me and I do still use them. My preference for keyboards -is more in line with the Kyria and Corne. I still use 6 columns, but have been -looking to use only 5. - -Note: Combos at QMK master do not currently support multiple reference layers which this -configuration uses. Combos still work as always, but do not support all the features -found here. To get fully functioning multi-reference combos, see my *ericgebhart_dev* -branch and pull request below. - -Actually, at the moment, the fix is in my ericgebhart branch, since I accidently -pushed it. I'll remedy that soon. - -A more current version of my QMK user can be found here in -A sparse tree [of my QMK User Space ](https://github.com/EricGebhart/MyQMK/users/ericgebhart) - -For full multi-lingual combo functionality you will need my [pull request for fully functioning multi-reference combos which can found here.](https://github.com/qmk/qmk_firmware/pull/16699) - -Things which effect the thinking. - * No mouse. - * Preference for 3x10 layouts. Corne, Kyria, etc. - * Still works with bigger keyboards like xd75, kinesis, dactyl, ergodox, viterbi. - * Change mods without changing any maps. - * No number row preference. - all layouts have them if needed. - * Xmonad window manager, GUI key is the entrance to the Xmonad world. - * Typing in other languages. - * Curious about keyboard layouts and experimenting. - * Must be easy to maintain, extend and modify. - * Minimize digging in code to add new things, or change old ones. - * Minimize process record user. - * Easy to add enums for keys and layers, as well as oled display. - * Easy to support multiple languages regardless of maps. - * Minimize the need to write C code. - * Encapsulate C code, so that it is extensible through data. - - -Features: - * Everything is configurable from config.h and .def files. - * Def files for most things. - * Custom key codes are mostly defined automatically. - * Everything is chosen or turned on and off in config.h - * Lots of macros to make it easy to redefine things without a refactor. - * Multiple edge/outer pinky column sets. - * Multiple thumb clusters to choose from. - * Thumb clusters and mods can be changed on a map by map basis. - * Easily define thumb clusters with an alpha letter. - * Easily define thumb clusters for non-base layer. - * Multiple base layers to choose from. - * Several variations of function layers to choose from - * Miryoku layers, thumbs and mods if desired - * Miryoku hands down gold config can be swapped with config.h - * Navigation and mouse layers - * A selection of symbol, keypads, and other layers. - * Regular and Beakl keypad and number rows - * Multi language support, (locales in the code). - * Multiple mod layers to choose from. Easy to add more. - * home row mods - a selection - * no mods - * alt mods - * miryoku mods - * Extensions are easily defined in def files. - * N-shot mods - * One-shot mods - * swapper - * Smart lock mods - * Smart lock layers. - * Accent keys - * Alternate shift keys - * Alternate local keys - * key overrides - * Tap hold - * Not dead keys - * Send unicode - * Send string - * Encoders - * Display a map of the current layer on the oled. - * Adding a new layer is painless. - * Adding or changing most things, is not difficult. - * Console key logging for [heatmap analysis.](https://precondition.github.io/qmk-heatmap) - - -Layout shape and keyboard choices. -------------------------------------- - - In all cases these keyboards are defined in a matrix which is - a set of rows. Maybe like so, or less. Kinesis has one more row. - -``` - -------------------------|------------------------ */ - | Left0 | Numbers L | mid|dle0 | numbers R | Right0 | - | Left1 | keys0-5 | mid|dle1 | Keys6-10 | Right1 | - | Left2 | keys11-15 | mid|dle2 | Keys16-20 | Right2 | - | Left3 | keys20-25 | mid|dle3 | Keys25-30 | Right3 | - | Row5L | Row5R | - | ThumbsL | ThumbsR | - -------------------------|------------------------ -``` - -Generally speaking, the keys on the right and left and middle don't change. -Neither do the bottom row or the thumbs, unless asked. Frequently the numbers -row is identical across layers. - -For automatic edge columns set EDGE_COLS. -Outside pinky keys are 'yes'. This is on by default. -N rows by 6 columns per side. -Should be undef/def'd by the keyboard's keymap if no. -#define EDGE_COLS yes. this is all taken care of for supported keyboards. - -Thumbs and Edge keys are grouped into sets so that different sets can be chosen in -the config. - -All layer macros take 3x10 or 3x12 as needed. Edge columns are -added as needed, and middle keys fill up the gap. -Thumb keys are added as asked. - -keyboard shapes: -Matrix size + 5th row + thumbs. -Matrix size + thumbs. - - * kinesis - 4x6 + 4 + 6 - 18 func keys. - * dactyl - Morpho handwire - 4x6 + 5 + 6 - * ergodox_ez - 4x6 + 5 + 6 & 3 pairs of center keys. - * crkbd - corne - 3x6 + 3 or 3x5 + 3 - * xiudi/xd75 - 5x15 - * keebio/viterbi - 5x14 - * montsinger/rebound/rev4 - 4x12 + 3 center keys. - * -- 4x12 - * splitkb/kyria - 3x6 + 7 or 3x5 + 7 - -The parts of a keymap ---------------------- - - * keymap - * defined in _keymap/keymap.c_. - * Completely configurable from config.h - * Separated into logical chunks. - * Uses a language setting to create all maps. - * Creates the same maps in multiple languages. - * More than one language simultaneously on one keyboard. - * Currently provides these languag settings and keycodes. - * US - US-intl (US_) - * EN - US-en (KC_), - * BEPO - fr-bepo (BP_). - * Choosing dvorak, and enabling bepo as the second locale, - will produce two base layers to choose from on the keyboard. - Dvorak on US and BEPO. - - * Base layers - * Simple and compact definitions. - * Base layers are pure. - * Mods are defined separately. - * OLED Maps for 128x64 sized oleds. - * Language agnostic. - * Core layer chunks are 3x10. - * Except for few exceptions which are 3x12 - * More than 50 base layers to choose from. - - **Caution: Choosing too many base layers will result in toprows or keypad layer LT's - to stop working. If bepo is enabled, all base layers are doubled so it's - easy to hit the 16 layer limit for LT.** - - * Locales - * Locales, defines a set of layers for a locale. - * Layer definitions are language agnostic. - see lang.h. - - * Extensions - Defs. - * Can be selected in config.h - * Defined in easy to read .def files. - * Correspondance between *extensions/* and *defs/* - - * accented_keys.def - direct access to altgr keys - * altlocal_keys.def - alternate un/shifted pairs. - * alt_shift.def - alternate shifting behaviors for existing keycodes. - * not_dead.def - definitions for non-dead dead keys. - * caps_word - no def file. - * combos.def - - * custom_keys.def - list of custom keys. - * encoders.def - encoder behaviors by mod/layer. - * key_overrides.def - Bigger more complex alt keys. - * mod_lock.def - smart locking mods with a set of ignore keys. - * nshot.def - N-shot locking mods - * oneshot.def - One-shot locking mods - * smart_lock.def - Smart lock layers and mods. - * swapper.def - key substitution, reverser. - * eg. toggle between tab, backtab on a key, with a reverse key. - * tap_hold.def - Define key for tap and hold for tapping term for qqc autre. - * unicode.def - keycodes to send unicode strings. - * send_string.def - keycodes to send strings. - - - * Layers - * Multiple selections of the Transient layers. - * Layer chunks are 3x10, with some options. - * Full Navigation layer - stable and well used. - * Mouse keys or without. - * 1 or 2 layer nav, 2nd for mouse. or all on one. - choices. - * Multiple choices of an easy to use _top rows_ layer similar - to `raise` and `lower`. - * A fully complete symbol layer, Used for coding and writing. - * Accented letters and dead key layers. - * Keypads and function pads. - * Beakl keypads and symbol layers. - * Control layers. - * Layers - * Adjust - * RGB - - * OLED A simple, configurable implementation. - * Current base layer - * Current locale - * Current transient layer - * Last key, matrix location and value. - * Mods and locks - * Map of the current layer. (Oled 128x64) - * key logger - - * Keyboards - * nothing is needed in keymaps/*/keymap.c - * Layouts - keyboard matrix adaptation. - * Adaptive. Usually taking 3x10 maps and filling the edges and thumbs. - * 4x10 or whatever is possible. - * 3 versions, thinking in a split kb, way. - * 5 columns in, 5 out. - * 5 columns in, 6 out. - * 6 columns in, 6 out. - * per keyboard shape. - * There are layouts per keyboard. - * Base layout with mods and thumbs and edges added. - * Transient layout which can be KC_TRANS, in those same places. - * The number row addition can be turned on and off as needed by the layout. - * Layouts can hard code the number row, negating the need for giving one. - - * Multiple edge key sets - - * Multiple Thumb clusters - see config or thumbs.h for up to date choices. - * Support for multiple definitions. - * mods - * layers - * mods_layers - * mods_layers_nav - * beakl wi - * beakl wi - official. - * test - to play with. - * trans - transparent, could be used in the transient layout to allow alternates. - * miryoku with keypad - * miryoku with toprows - * mods_layers with left thumb letter - * hands down approximation with left thumb letter - * miryoku with keypad, letter on left, space on right. - no tab. - * miryoku with toprows, letter on left, space on right. - no tab. - - * Mod Layers - * Completely independent of any layer or base layer definition. - * Easy to create a new one by copying the transparent version. - * Can be changed on a layer per layer basis. - * Based on position in the matrix. - * Chosen in config. - * Multiple choices. - * Home Row Mods. sacg, gacs, gasc - Left and right mods on left and right. - * Transparent - the default if not chosen. - * Alt - Non home row mod variant. - * miryoku HRMS is sacg plus right alt/altgr on third row. - - * Alternate language/locale support - * Happens at the lowest level - * All maps work with any of the [keymap extras.](https://docs.qmk.fm/#/reference_keymap_extras) - * Language support is simple to add with just a new, very simple macro. - -The language keycodes can be found -[here.](https://github.com/qmk/qmk_firmware/tree/master/quantum/keymap_extras) - - -Architecture ------------------ -The idea here is that most things don't change, and the things that do are -easy to understand and change. The defs directory is where all the extras are, -tap_hold, alternate shift keys, combos, keycodes, smart lock, one shot mods,etc. - -If layers exist that you want and like, then all other behaviors are defined in -def files which are much nicer than working directly with C code. If there is -need there is always the copy pasta way too. - -Things that are likely to be changed when adapting a layout to personal preferences -are *layers/thumbs.h* and *mod_layers/*. The function layers are all in the -layers folder and should be easy to understand. Once added, it is only necessary to -add the appropriate defines in _config.h_ - -Adding new layers requires changes in layer_names, *oled/oled_layers.h* and *oled/oled_cartes.h* and the appropriate *keymap/ .h* file. - -Adding a new keyboard is done in keyboards and should be fairly obvious. -``` -. -├── base_layers -│   ├── accents.h -│   ├── alt.h -│   ├── base_layers.h -│   ├── beakl.h -│   ├── bepo.h -│   ├── carpalx.h -│   ├── dvorak.h -│   ├── gap.h -│   ├── hands_down.h -│   ├── keymaps.txt -│   ├── maks.h -│   ├── qwerty.h -│   └── toprows.h -├── config.h -├── defs -│   ├── accented_keys.def -│   ├── altlocal_keys.def -│   ├── alt_shift.def -│   ├── combos.def -│   ├── custom_keys.def -│   ├── encoders.def -│   ├── key_overrides.def -│   ├── mod_lock.def -│   ├── not_dead.def -│   ├── nshot.def -│   ├── oneshot.def -│   ├── send_string.def -│   ├── smart_lock.def -│   ├── swapper.def -│   ├── tap_hold.def -│   └── unicode.def -├── ericgebhart.c -├── ericgebhart.h -├── extensions -│   ├── accented_keys.c -│   ├── accented_keys.h -│   ├── altlocal_keys.c -│   ├── altlocal_keys.h -│   ├── alt_shift.c -│   ├── caps_word.c -│   ├── caps_word.h -│   ├── console_key_logger.c -│   ├── console_key_logger.h -│   ├── encoders.c -│   ├── encoders.h -│   ├── extensions.h -│   ├── keycodes.h -│   ├── keymap_combo.h -│   ├── key_overrides.h -│   ├── mod_lock.c -│   ├── mod_lock.h -│   ├── not_dead.c -│   ├── nshot_mod.c -│   ├── nshot_mod.h -│   ├── oneshot.c -│   ├── oneshot.h -│   ├── process_locales.h -│   ├── process_nshot.h -│   ├── process_smart_lock.h -│   ├── send_string.c -│   ├── smart_lock.c -│   ├── smart_lock.h -│   ├── swapper.c -│   ├── swapper.h -│   ├── tap_dances.c -│   ├── tap_dances.h -│   ├── tap_hold.c -│   ├── tap_hold.h -│   ├── unicode.c -│   └── unicode.h -├── keyboards -│   ├── keyboards.h -│   └── layouts.h -├── keymap -│   ├── keymap.c -│   ├── map_accented.h -│   ├── map_alt.h -│   ├── map_beakl.h -│   ├── map_bepo.h -│   ├── map_carpalx.h -│   ├── map_dvorak.h -│   ├── map_funcs.h -│   ├── map_gap.h -│   ├── map_hd.h -│   ├── map_keypads.h -│   ├── map_maks.h -│   ├── map_qwerty.h -│   ├── map_symbols.h -│   └── map_toprows.h -├── lang -│   ├── lang.h -│   ├── lang_map.h -│   ├── locale_layers.h -│   ├── locales.c -│   └── locales.h -├── layer_names -│   ├── base_names.h -│   ├── func_names.h -│   ├── layer_names.h -│   └── util_names.h -├── layers -│   ├── edge_keys.h -│   ├── keypads.h -│   ├── layers.h -│   ├── nav.h -│   ├── symbols.h -│   ├── thumbs.h -│   ├── toprows.h -│   └── utility.h -├── listen_keylogger.sh -├── mod_layers -│   ├── alt_mods.h -│   ├── hrm_gacs.h -│   ├── hrm_gacs_miryoku.h -│   ├── hrm_gasc.h -│   ├── hrm_sacg.h -│   ├── hrs_nav.h -│   ├── mod_layer.h -│   └── trns_mods.h -├── oled -│   ├── oled_cartes.c -│   ├── oled_layers.c -│   ├── oled_stuff.c -│   └── oled_stuff.h -├── process_records.c -├── readme.md -└── rules.mk - -10 directories, 118 files -``` - -Locales -------------------- -There are currently three locales. LANG_IS defines the one in use. -The map changes this value as it goes, to get the maps that are asked for. -I have recently renamed some variables, such that it seems that only 2 locales -are possible. It seems more than two might be too many. And keeping at 2 is -a little easier. - - * EN - en-us, **KC_** keycodes. - * US-INT - us-international variant, **US_** keycodes. - * BEPO - bepo-fr, **BP_** keycodes. - -Switching LANG_IS before adding a new map will cause that map to -use LANG keycodes and keymap chunks when building the map. - -Enabling a second locale to bepo, will cause bepo versions of the chosen layers to -be added to the keymap. - -### defining a locale. - -This is to manage BEPO and Qwerty Locale/language/Layers -Each locale is defined with a start and end layer from the layers enum. - -This is only necessary to give contextual base layer choices based on -the current locale setting, which the keyboard tracks. - -The first and last defines are all done with the magic of defines in -ericgebhart.h where the layers enum is defined. - -This could potentially hold multiple locales, The map turns on off the layers -and their enums if they are not enabled so that the layer array does not -fill up with too many base layers, or other layers because LT only works -up to layer 15. - -What this does is allow the keyboard to know which locales it has, and which -layers go with them. - -If you have an oled, the locale will be displayed after the layout name. Currently -en-us and bepo-fr are there. - -Locales are tracked, as to the layer ranges which belong to them in the layers enum. -This allows for a `KC_NEXT_LOCALE` key and a `KC_NEXT_BASE_LAYER` key, on the _layers_ -layer. -`KC_SET_BASE` sets the default layer in the eeprom. - -When cycling through layers only the layers for the chosen local will appear. - -The layers are different keycode sets. -So there are two symbol layers, two toprows layers, two keypad layers. -One for Qwerty and one for bepo. The Navigation layer is not affected because -it has only control keycodes which are independent of locale. - - -### Locales, how they work in layouts. - -This is done through consistent naming patterns and macros. -Here are the macros that support creation of layout parts by locale. -All are defined in **lang.h** - - * Keycode Prefix - KC or BP, etc. - `LANG_KC(_A) -> KC_A or BP_A` - - * Defined key/layer Suffix - SYMB_EN, SYMB_BP, ... - `LANG_N(NAME) -> NAME_EN, NAME_BP` - - * Map chunk Suffix - _EN, SYMB_BP, etc. - `MAP_CHUNK(15_BOTTOM) --> ___15_BOTTOM_EN___ or ___15_BOTTOM_BP___` - -_lang.h_ has the macro definitions used in the keymap resolution, -A new locale, will need a new set of macros that match the others. -They use LANG_IS, Follow the patterns. It should be reasonably obvious. - -It is only necessary to create new base level macros that are used by these -macros. All of them are similar. - -**LANG_KC** uses these macros to resolve it's values. -``` - // Give the right keycode prefix by LANG_IS - #define LANG_PFX CAT(LANG_IS_, KC) - #define BEPO_KC BP_ - #define EN_KC KC_ -``` - -Adding a new one is just a matter of adding the a macro named with -this format. `LANG_IS _Keycode prefix`. -for Slovak, if the **LANG_IS** value is `SK` that would be, - - `#define SK_KC SK_` - -LANG_N macro uses these similar macros for it's resolution. - -``` - // Give the right symbol suffix by LANG_IS - #define LANG_SFX CAT(CAT(LANG_IS, _), SFX) - #define BEPO_SFX _BP - #define EN_SFX _EN -``` -Adding Slovak support to the LANG_N macro looks like this. - - `#define SK_SFX _SK` - - -### Thumb clusters. - -Thumb clusters can be chosen by layer with the value of **THUMBS_ARE**. - -The easiest way to see them is to look in *layers/thumbs.h*. - -At the core of the thumb clusters are a set of six keys which -can be changed to a one of a set of keys, with settings in the config. -Supporting a 4 key thumb cluster would just need a similar set. - -The newer Hands down variants also have need of thumb clusters which -can take a letter. A default can be given in config.h. -Each keymap layer entry can give it's letter to change the thumb cluster. -This is needed for hands down, maltron, rsthd, and beakl wi. - -These layouts use a special thumb cluster variant which will use the value -of *THUMB_LETTER* to place a letter on one of the thumb keys. - -It is reasonably easy to add a new thumb cluster and use it. Add it to -thumbs.h, add to the list of macros for it's suffix, and turn it on -by setting it to *THUMBS_ARE* in config.h - -Additionally a thumb cluster can be set for the various function layers as -well. The transparent thumbs can be used, or something else. The nav and -mouse layers have the mouse buttons if mouse keys are enabled. - -It is also possible to use a Miryoku thumb cluster and layers -or mix the other layers in as desired. - -The language of thumb clusters is managed at the lowest level. -These keys are mostly not language specific. - -Here is the definition for my space and symbol layer key. -This changes the name of the layer given like this. - -_SYMB becomes *_SYMB_EN* or *_SYMB_BP*. Depending on the value of *LANG_IS* - - `#define SPC_SYMB LT(LANG_N(_SYMB), KC_SPC)` - - -Edge key sets ----------------- -Edge keys, or the 6th, and outer pinky column are often not specified -in base keymaps and are not strictly necessary. There are a few sets -to choose from here. A NOKC set with no keys, NORM which is sorta normal -with grave, equal, tab, -, and \/. There is also a smart lock set -which gives access to smart lock layers tab and -. Last there is -test, so its easy to try new things. Edge keys are defined in -*layers/edge_keys.h*. - - -Base Layers ------------------ -I like to experiment with layouts. So I have a few. -They can be turned on in config.h. - -To switch base layers there is a combo to raise the layers layer. -Hold both pinkies on their lower row keys to get the layer. -Tap the home row left middle finger to change layers. -Tap the ring finger to set it to eeprom if you want it to stick. - -The left index finger will cycle through locales if you have them. - -Here is a list of some of the base layers.. - - * Dvorakish - * Dvorak - * Capewell-Dvorak - * Ahei - * Boo - * Dvorak RLC-UI - * Beakl - * 15 - * 19 - * 27 - * WI - * Qwertyish - * Qwerty - * Azerty - * Workman - * Norman - * Maks - * Colemak - * Colemak_DH - * Halmak - * Minimak - * Minimak 8 - * Minimak 12 - * Carpalx - * QFMLWY - * QGMLWB - * QGMLWY - * Hands Down - * Neu - * Neu narrow - * Titanium - * Gold - * Platinum - * Silver - * Bronze - * Elan - * Dash - * Ref - * MTGAP - * Mtgap - * Ctgap - * Apt - * Canary - * Others - * Maltron - * Eucalyn - * Rsthd - * Isrt - * Hands Up - * White - * Soul - * Niro - * Asset - * Whorf - * Whorf6 - * Bepo, layers with accented letters. - * Bepo - * Optimot - * Optimot compact - * Beakl19bis - -### Adding a new base layer, or any layer - -Adding a new base layer is easy. They all live in *base_layers/*. A base layer -entry looks like this. There is an empty template in *base_layers.h* which collects -all the other maps. The name of the carte de map, should be **CARTE** followed by -the layer name that will be used. Layer names are usually an underscore followed by -the name. For dvorak, that is *_DVORAK*, which because of the language layer ultimately -and magically becomes *_DVORAK_EN*, *_DVORAK_US*, *_DVORAK_BP* as needed. - -``` -#define CARTE_DVORAK \ - carte_de_map(" ',.py fgcrl ", \ - " aoeui dhtns ", \ - " ;qjkx bmwvz ") - -#define ___DVORAK___ \ - LANG_MAP(TL_QUOT, TL_COMM, TL_DOT, _P, _Y, _F, _G, _C, _R, _L, \ - _A, _O, _E, _U, _I, _D, _H, _T, _N, _S, \ - TL_SCLN, _Q, _J, _K, _X, _B, _M, _W, _V, _Z) -``` - -#### TL_ keycodes - -Use TL_ keycodes for any punctuation, this allows for targeting -of these keys by language and by target layout as needed. -for instance *TL_COMM* -> TLKC(_COMM). The *Target-Language-comma*, -becomes BP_BK_COMM, or KC_DV_COMM, US_HD_COMM, or whatever it -needs to be based on current language and target layout. If your layer has special -puncuation needs, - - * Add key entries to *altlocal_keys.def* - * Edit to *lang/lang_map.h* to add the new *TARGET_PFX* entry. - * Set the appropriate value to *ALT_TARGET_IS* in the layer's keymap entry. - -#### Integration - -Integrating the new map into the rest of the framework is just a simple entry -in a few places. - * *layer_names* needs to know about the new name so we can use it, - * The oled needs to know about it so it can display it. - * The config needs to know about it so we can turn it on. - -Follow these steps. Everything is very simple, and just one to 3 lines. -Just follow the same patterns as all the rest. - - * Add the layer definition and map of the definition in *base_layers/.h*. - * Add the layer name to *layer_names/base_names.h* - * Add the layer name to *keymap/.h* - * Add the layer entry to *oled/oled_layers.c* - * Add the layer map entry to *oled/oled_cartes.c* - * Add the define for the layer enable to *config.h* - -Adding a new functional layer follows the same patterns, although their -keymap and oled entries may be more complex, since it is usually trying -to pick one from a set of choices. - -### Adding a new thumb cluster configuration - -Adding a new thumb keys definition is done in *layers/thumbs.h*. -The keys that change are just 6 and they all have the name of *___6_ERGO_THUMBS_...*. - - * Define a new thumb definition with a nice suffix like all the rest. - * Add an entry to the *THUMB_EXT* list with the nice new suffix. - * Set the appropriate *THUMBS_ARE* defines in config.h to it's - new thumb extension name. - -### Adding a new mod layer - -This is also easy. Mod layers live in the mod_layers folder. Each file -there is a separate mod layer, which is tracked in *mod_layers.h* -The file, *trns_mods.h* is the transparent mods layer and by definition has -no modifiers applied, providing a clean slate. - -The steps are these: - * Make a new copy of an existing mod layer. - * Edit the new file and change the names to your new name. - * ie. *_trns* changes to *_my_new_mods* - * Add the mods you want. MT's and LT's, tap holds, etc. - * Edit *mod_layers/mod_layer.h* - * Add the include for the new mods file* - * Add the *MOD_EXT* entry for the new name - * Define *MODS_ARE* in _config.h_ to use the new name. - - -Keymaps ------------ -I only have one. It's in keymap/keymap.c. -My config.h has all the current usable settings. -Turn on the layers by enabling and choosing them in config.h. -Most keyboards don't need a keymap.c. - -There are corresponding Bepo layers, as needed, which will arrive if *SECOND_LOCALE* is -set to _BEPO_. -This essentially doubles the number of keymaps. -Nav, mouse, media, layers, RGB, and Adjust are not duplicated as there is no -current need. - -## Mods, home row and otherwise. -With all these layers it was a real pain to apply mods consistently and -easily with the old wrapper code. So I changed the way I use keymap macro -wrappers and added in my own mod layer. The only thing it has is the mods -to apply. No more editing keymaps to apply mods. I do it once, and it -works everywhere I want by location. - -Multiple versions are possible. Just copy the trns_mod_layer.h to a new -name and modify it with a new extension name, (replace '_trns'). Then add it's include to mod_layer.h, to be used when the config says. - -The defines for *MODS_ARE* and *DEFAULT_MODS* determine which mods are applied -to a given keymap layer. - -Keyboard matrix Layouts ------------ -This is where the keymap of the -keyboard meets the mods and all the edge, middle and thumb keys, and makes -it easy to give just a 3x10 definition for most layers regardless of which -keyboard it is going to. - -To use an existing layout for a different keyboard, simply make an entry -in *keyboards.h* to assign the proper layouts that fit that keyboard. -So a planck could use the 4x12 layout out of the box. In the keyboards -keymap there is only a need for config.h or rules.mk if something needs -changing. For the keyboard an empty keymap.c will do. - -The base layout can be anything really. -The base layer sets the thumbs and anything outside of the 3x10. -The mod layer is wrapped in the base layout and adds the mods, and a 6th -outer pinky column as needed. - -Some layouts take an extra number row. -Layouts can be any shape, all of these take a 3x10, 3x12, 4x10 or 4x12, -and make it fit the keyboard. - -The layouts defined in _layouts.h_ take a list of keys. and give them -to the keyboard's layout. The Corne (crkbd), uses a layout called - `LAYOUT_split_3x6_3`. So for the corne, I have a `Base_3x6_6` that - is the same shape, in its resolution. - -There are layouts for Corne, ergodox, kinesis, dactyl, viterbi, xd75, rebound. - -Currently, 3 layouts are needed per keyboard. - * A Base layout, for default/base layers, - * A transient layout for the function layers. - * A version which takes 3x12 for the larger bepo base layers. - -The base layouts can take 3 or 4 rows by 10 columns as desired. -They add in the mods, and any pieces of matrix outside of -the 3x10 center, function, numbers, lower rows, outside pinky keys, -and thumb clusters. - - -Functional layers --------------------- -There are quite a few of these to choose from. The easiest way to see -them all is to go look at them in _layers/_. They are logically divided -into files, and their cartes/maps are easy to look at. There are -minimalist Miryoku versions as needed. - -## Navigation Layer -I do not use a mouse. I use Xmonad as my window manager, and I have -practically no use for one. They are necessary however. So I have -a Navigation layer which is all mouse, arrows, home, end, tab, page -up, down, 5 mouse buttons and so on. - -There are a growing number of choices, left and right sided mouse layers -right side arrows etc, and some monolithic nav layers like the one shown -below. - -There is also a split layer, with arrows etc on the right, and smart mods -and N-shots on the other. A left side mouse layer is accessible from -the first nav layer. There are various choices at this point. It is -best to look at the config.h for clues. - -The miryoku nav and mouse layers are somewhat but not terribly different. - - -#### One of the Navigation layers. - -``` -M = Mouse -B = Button -W = Wheel -AC = Acceleration -CCCV = Tap -> Ctrl-C, hold for double tap duration -> Ctrl-V -CTCN = Tap -> Ctrl-T, hold for double tap duration -> Ctrl-N -CWCQ = Tap -> Ctrl-W, hold for double tap duration -> Ctrl-Q -HOME = TAB & PGDN -END = BKTAB & PGUP -Lock/Unlock LAYER = PGDN & PGUP - -MB5 MB4 MB3 MB2 MB1 MAC0 | CTCN MB1 MB2 MB3 MB4 MB5 -TAB MLeft MDown MUp MRight MAC1 | CCCV Left Down UP Right TAB - WLeft WDown WUp WRight MAC2 | CWCQ TAB PGDN PGUP BKTAB - - Left Down Up Right CCCV | CCCV MLeft MDown MUp MRight - - -``` - - -## Symbol Layer - -The symbol layer is based on the Beakl15 symbol layer. It was very similar to a symbol -layer that I had before beakl, but this felt better, and has been through a few -iterations at this point. Vi likes using :/?! a lot. The = is not that important to -me, as the : for the vi ex: command. The ! is very satisfying in this location. - -For US-intl and Bepo which have dead keys, the symbol layer uses the *not_dead* extension -to give _'`"^~_ which are not dead. - -The beakl symbol layer is intuitive and fairly easy to remember. There are 3 versions. -The original, an extended, and an extended and enhanced for vi. -The primary purpose of the extension was to provide keys which might not be available -elsewhere on the default layer. The vi version takes this further and moves :/? -to better places. - -I prefer a modified beakl15 symbol layer. here it is, left and right. -This layer has some extra characters so it works with non-beakl base layouts. -The beakl wi symbol layer is not an improvement on this IMO. -Miryoku symbols layer is only left sided, and minimalist as well. -This might be a little vi centric, with the : in the middle. ymmv. - -There are a few choices, this is one. - -``` - `<$>' ?[_-] - - \("#) !{:/} ; - @=*+; %&^~| -``` - - -## TopRows Layer - -The toprows layer is a nice way to transition to small keyboards. -I think, truly this is the layer that makes tiny keyboards accessible in the beginning. -Everything can remain familiar. I use this one with a beakl number row. -The default, if no choices are made, aside from enabling toprows, will -have a normal qwerty number row, as in the second map. - -I do not use F keys, The latest addition has _smart_ and _nshot mods_ in the third row. -There is a miryoku thumb cluster which uses this layer instead of a keypad. - - ``` - !@#$% ^&*() - 40123 76598 - F1 --- F10 - ``` - or - - ``` - !@#$% ^&*() - 12345 67890 - F1 --- F10 - ``` - -## Keypad and Funcpad Layers - -There are several variations of keypads and function key pads in various sizes, -and left and right. -There are also versions with smart and nshot mods instead of F-keys. -There are monolithic, left and right, and also half keyboard left mostly... -A miryoku version also exists. -The keypad can be chosen in config.h. - -``` - 523: F9-12 - 7.104 F5-8 - /698, F1-4 -``` -## Media Layer - -A simple Miryoku, media layer, controls on the right. - -OLED --------------------- -The oled shows the basic stuff I could find in most places. -* Default layer -* Current layer -* Locale -* Mods -* Locks -* Last key pressed -* Map of the current layer as simply as possible. (128x64) - -Process_records.c --------------------- -This is where the keycodes are processed... -It tends to be where cruft gathers. Mostly I try to keep it empty -and do all my processing with the extensions. The file, _extensions.h_ -takes care of inserting them in process_records with it's macro. - - -Extensions ---------------------- -Extensions are all in the extensions directory and have a single -entry point via extensions.h which provides a macro to place in **process_record_user**. -The intention is that they are easy to copy and use as is without digging around -in the C code. Custom keys are also defined there. Any keycodes defined by -an extension are automatically added to the custom keys enumeration so there is no need to define them manually. - -A new extension can be added with a process record entry in -extensions.h. Just follow the same code pattern. If an extension defines keycodes, -add it's include entry in *keycodes.h* so that they are automatically added to the enum. -Keycodes.h is also where all the miscellaneous short cut key defines are done. - -To copy all the extensions, - * Copy the extensions and defs folders, - * Copy process_records.c file or adapt yours. - * Adapt your custom keycodes to custom_keys.def. - * Copy the pertinant parts of config.h so that everything can be enabled. - * Define _USERSPACE_H such that all the extensions can find your stuff. - -To adapt to your own process_record_user do this; -Include extensions.h in your process_record_user,then add this -above the switch. -``` -PROCESS_EXTENSIONS -``` -This will cause process records to use whatever extensions are turned on. - -Many extensions have a _.def_ file in _/defs_ for any data that is needed. - -Because many of them use custom keycodes or layers in their definitions, -it is necessary to include your userspace .h such that keycodes and layer -codes can be found. To simplify this, simply add a define to config.h -to point at your .h or wherever your custom codes can be found. - -In my case; -```c -#define USERSPACE_H "ericgebhart.h" -``` - - -Custom keys -------------------- -The Custom keys are in __custom_keys.def__. - -__keycodes.h__ is an extension of sorts. It is the custom keys enumeration. -The __custom_keys.def__ has a few random keycodes in it. - -All other keys are automatically generated from the other def files. - -For the extensions that have key definitions those keys are enumerated -automatically. The keys are defined in the def files so there is no need -to add them to the enumeration manually. - -It will complain as usual if there are duplicates. - -Mostly, __keycodes.h__ is key defines to make shortcuts, since the enumeration -is done almost completely automatically. When adding a new extension -which defines keycodes, that extension will also need an entry in -keycodes.h in order to automatically define the new key enumerations -itÂīs def file creates. - - -Accent keys ------------------ -This is a way to create keycodes which access keys -which are normally only accessible with an Altgr/Ralt and a dead key. - -Each definition takes a keycode, the key to modify, and the dead key -to apply to it. - -``` -ACCENTED(BP_OCIR, BP_O, BP_DCIR) -ACCENTED(BP_ACIR, BP_A, BP_DCIR) -``` - - -Alternate keycodes ------------------------------ -Normally, a keycode has unshifted and shifted key values. These are defined -by the OS and it's locale, not the keyboard. This feature allows a keycode -to be defined that uses arbitrary unshifted and shifted keycodes and their modifiers. -This is necessary, because, for instance, qwerty has , and ; paired. Other -locales may not. Bepo, and Beakl both have different pairings as do many other -layouts. - -Because of wanting dvorak and beakl on bepo there was the necessity to create keys -from keycodes which were not combined. key overrides were not -sufficient because some keys are not actually keys that can be accessed -without modifiers. Each keycode for the new key specifies it's own -modifiers making any character available as an unshifted or shifted key. - -Alternate keys for a locale, are defined in **altlocal_keys.def**. -These are to emulate a key, from 2 keycodes. - -This is for emulating keys on another locale/language. -Dvorak on Bepo-fr, or Qwerty on sk-SK, or de_DE. - -It is also good for alternate shifted and unshifted pairs like -what is needed for beakl or hands down on en-us/qwerty. - -This feature is usually only needed for punctuation keys -and the top row number keys. Where the unshifted and shifted keys -are not the same character as the keyboard local on the OS. - -It has turned out that most of these keys have a destination language, -and a target language/layout. -The target is to emulate something on some language. QMK uses keycode prefixes, -so this works pretty well and the names stay consistent with all the others, -but with a middle name. - -The pattern is Language prefix, target language prefix, name. -The target prefix is made up. BK -> beakl, DV -> dvorak, HD -> hands down, etc. - -The naming pattern is only important in that it works with all of the Lang -macros elsewhere in this userspace. A macro is provided on a per key -basis, which can be used at the base layer definition, such that *TL_COMM*; -target-language-comma, becomes BP_BK_COMM, or KC_BK_COMM, or whatever it -needs to be based on -current language and target layout. - -Here is a def entry to create the 1/! keycode for dvorak in the Bepo-fr locale -in *altlocal_keys.def*. -``` - MK_KEY(BP_DV_1, BP_DQUO, MOD_LSFT, BP_DCIR, MOD_LSFT) -``` - -Here is what some Beakl keys look like for en-us/qwerty. -Beakl has dot with @, comma with ! and " with `. - -In *altlocal_keys.def*. -``` - // Keys for BEAKL on Qwerty - MK_KEY(KC_BK_DOT, KC_DOT, MOD_NONE, KC_2, MOD_LSFT) - MK_KEY(KC_BK_COMM, KC_COMMA, MOD_NONE, KC_1, MOD_LSFT) - MK_KEY(KC_BK_QUOT, KC_QUOT, MOD_NONE, KC_GRV, MOD_NONE) -``` - -Not Dead keys --------------------- -As a writer dead keys give me access to accented letters in other languages, -As a programmer they are a pain, especially for a vi user. This problem is -limited to a few characters; "'`^ and ~. This extension helps to fix these -characters and make them accessible as non-dead keys. It does this by adding -a space afterward. The space is eaten by the OS keyboard driver and the letter -emerges as needed. Here are some non dead keys for US-Intl. -In use, I put these on the symbol layer, and let all the others remain dead. - -``` -NOT_DEAD(US_DQUO_ND, US_DQUO) -NOT_DEAD(US_GRV_ND, US_GRV) -NOT_DEAD(US_QUOT_ND, US_QUOT) -NOT_DEAD(US_CIRC_ND, US_CIRC) -NOT_DEAD(US_TILD_ND, US_TILD) -``` - -Alternate shifts ---------------------- -The alt shift extension is very simple, it uses a usual keycode, it does -not define custom keys. It allows for an existing key like dot or semi-colon -to have a different letter on its shifted value. - -There are currently three types of shift mods. - * Give a different character than usual on shift. - * Give two of the usual character instead of one. - * Give three of the usual character instead of one. - -They are all defined in *defs/alt_shift.def*. -Here are some silly examples. - -``` -ALT_SHIFT(US_EXLM, US_PERC) -SHIFT_FOR_2(US_AT) -SHIFT_FOR_3(US_DLR) -``` - - -Key Overrides -------------------- -These are the standard QMK key overrides. For un/shifted pair keys *altlocal_keys* is -much, +3x, smaller and direct in that it makes keycodes that can be placed anywhere. -However, if ko's are desired, this extension is an easy place to start. - -There are nice macros which take care of defining everything that is possible -with the ?_ko() functions - -This first example is better done with **altlocal_keys**. - -``` -// KOL(slash_pipe, MOD_MASK_SHIFT, KC_SLSH, KC_PIPE, _DVORAK_EN) -``` - -Other key overrides can be defined with these. - -``` -KO(name, mods, key, replacement) - -KOL(name, mods, modded_key, replacement, layer) - -KOLN(name, mods, key, replacement, layer, neg_mods) - -KOLNO(name, mods, key, replacement, layer, neg_mods, options) -``` - -Combos/Chords ----------------------------- - -The combos here use multiple reference layers which is a pending -pull request in the dev branch of QMK. The combos here will still work -to an extent if *COMBO_ONLY_FROM_LAYER* is set to the correct layer number. - -[See my pull request to enhance combos here](https://github.com/qmk/qmk_firmware/pull/16699) - -This pull request defines a hook function for combos to determine the -reference layer for the current layer. This allows for multiple reference -layers to be used depending on the situation. - -Reference layers will be created and used according to the following -defines. -If the reference layer is enabled, it will automatically be assigned to -COMBO_REF_DEFAULT and that will be the default reference if none -is specified. If not specified, the reference will be the current layer. - - * #define COMBO_REF_LAYER_ENABLE // enable a reference layer. - * #define COMBO_REF_LAYER_TWO_ENABLE // enable a second reference layer - * #define COMBO_ONLY_FROM_LAYER 2 - * #define COMBO_REF_DEFAULT 2 - Works in config.h if you know the number of your layer. - Automatically set if ref layer is enabled. - -Defining layer specific combo reference layers by layer in combos.def -In this case, the default will be _COMBO_REF, the NAV layer will -reference it's self, while bepo dvorak will reference the second -combo reference layer. Keys start or end with CB or CB2. - -``` -COMBO_REF_LAYER(_DVORAK_BP, _COMBO_REF2) -COMBO_REF_LAYER(_NAV, _NAV) -``` - -The combo reference layers follow an easy to remember keycode naming -convention so that it is easy to define combos based on position. -Keycodes are prefixed by CB or CB2, the first number is the row, -followed by L or R for left and right, then the column number, -for each hand left to right. - -Row 0 is the number row, there are 4 rows possible. - -`CB_1L1` is the left pinky, `CB_1R1` is the inside right hand index column. - -``` - _1L1, _1L2, _1L3, _1L4, _1L5, _1R1, _1R2, _1R3, _1R4, _1R5, -``` - -If there are edge keys, they are named accordingly, left and right. - -``` -L0_CB, L1_CB, L2_CB, L3_CB -R0_CB, R1_CB, R2_CB, R3_CB -``` - -Thumb keys use the COMBO and COMBO2 thumb settings which give keycodes -like this. - -``` -#define ___6_ERGO_THUMBS_COMBO___ CB_TH1, CB_TH2, CB_TH3, CB_TH4, CB_TH5, CB_TH6 -#define ___6_ERGO_THUMBS_COMBO2___ CB2_TH1, CB2_TH2, CB2_TH3, CB2_TH4, CB2_TH5, CB2_TH6 -``` - -Tap-Hold ------------------------ - -Tap hold currently has *tap_taplong* and *open_openclose* functions. -These are in *tap_hold.c*, *tap_hold.h* and *tap_hold.defs*. -Both use **TAP_HOLD_TERM** as the hold duration. - -Tap_taplong sends one keycode on tap, and another after a hold of tapping term. -Open_openclose, sends one keycode on tap, hold sends that, plus the second, -followed by a back arrow. - -Additionally, open_openclose will send a triple of the open keycode when tapped with -the shift modifier on. - -There as also a __not dead__ version of open_openclose that accomodates using -dead keys like quote so that the functionalty behaves as if the key were not -a dead key, giving a quote, a pair of quotes or a triple of quotes. - -The file _tap_hold.defs_ contains all the definitions. Like combos, -these entries are processed with a function call from **process_user_record** -`process_tap_hold_user(keycode, record);` - -Define your keys in *tap_hold.defs*. - -Here is Ctrl-C, Ctrl-V, as tap and long tap. -``` -TP_TPL(KC_CCCV, LCTL(KC_C), LCTL(KC_V)) -``` - -For tap open, hold for open and close then a back arrow. -Here is __(__ or __()__ with tap and long tap. - -``` -OPEN_OCL(KC_OCPRN, KC_LPRN, KC_RPRN) - -OPEN_OCL(KC_OCQUOT, KC_QUOT, KC_QUOT) -// non dead version of quote. -OPEN_OCL_ND(BP_OCQUOT, BP_QUOT, BP_QUOT) -OPEN_OCL_ND(US_OCQUOT, US_QUOT, US_QUOT) -``` - -It is also possible to trigger a smart lock with a hold. -This example creates a keycode, `ENTNAV` which can be used -to type enter, or smart lock the nav layer. -Note that `SML_NAV` should be defined in `smart_lock.defs`. - -__Caveat:__ -This does have the unfortunate behavior of delaying the action -until key up. So it may not be that useful. I did not like it -for this particular example. - -``` -TP_SML(ENTNAV, KC_ENTER, SML_NAV) -``` - -Caps Word -------------- -This is a slightly modified version of caps word which adds a *CAPS_WORD_ON* keycode -which can be used to turn caps word on explicitly. This is useful for mapping a -single key or creating a combo. - -[As documented in here.](https://getreuer.info/posts/keyboards/caps-word/index.html) -Holding both pinkies on home row for double tapping term, is effectively -right-shift and left-shift, invokes caps-word. The next word will be capitalized. -It continues until it shouldn't. - -Smart lock ----------------- -They are defined in *smart_lock.def*. They need -a custom keycode, and a layer or mods, not mod keycode, to apply, -followed by a list of keycodes to ignore and stay active. -This allows popping to layer which will stick until it doesn't. -Or to apply mods until it shouldn't. Each definition has it's -own list of key codes to ignore. Derived from _smart_layers_ -by @possumvibes. - -Add a keycode to custom_keys.def then assign it to it's action in smart_lock.def. -``` -// SMLL = smart lock layer. -// SMLM = smart lock mod. - -// Keycode, layer/mod. -// list of keycodes to ignore. - -SMLM(SMLM_LSFT, MOD_LSFT, - ___VI_ARROWS___, - ___HOME_PGDN_PGUP_END___, - ___TAB_PGDN_PGUP_BKTAB___, - ___SML_MODS_L___) - -SMLL(SML_NAV, _NAV, ___NAVA_3x10___) - -``` - -Mod lock ----------------- -Mod lock is originally from @possumvibes, it has ignore keys as well, -but these keys apply to all locks defined. which gives a slightly smaller -memory footprint than smart locks. The mods, are keycodes, rather than mod codes. - -The behavior is the same as smart lock mods, but less flexible, and smaller. -First create a keycode in custom_keys.def, then assign it to the mod you want. - -Ignore keys are universal for all mod locks. - -``` -// mod lock keys. takes keymods not mods. -// keycode should be defined in custom_keys.def. -// custom key, modkey to activate -MODL(ML_LSFT, KC_LSFT) -MODL(ML_LCTL, KC_LCTL) -MODL(ML_LALT, KC_LALT) -MODL(ML_LGUI, KC_LGUI) - -// Keycodes which will NOT cancel mod lock mode. -IGNORE_KC( KC_LEFT) -IGNORE_KC( KC_RGHT) -``` - -N-shot mods ----------------- -I simply modified N-shots to use a def file. This is essentially @possumvibes -fancier version of @callum's one shot mods. It has ignore and cancel keys, -and there are one shot mods or N shot mods. Ignore and cancel keys apply -to all oneshot and n-shots. - -``` -// Define keycodes in custom keys. -// KEYCode, mod keycode, to set for n-shot. -// ONESHOT is for one. -// NSHOT takes a count. - -// oneshots -ONESHOT(OS_LSFT, KC_LSFT) - -// N-Shots -NSHOT(TS_LCTL, KC_LCTL, 2) - -// Keys which will cancel the n-shots. -CANCEL_KEY( PANIC) - -// Keys which will be ignored by n-shots. -IGNORE_KEY( SML_NAV) -``` - -One-shot mods ----------------- -This code came by way of @jurgen-kluft, I encapsulated the code and made -the user functions definable with a .def file. This is similar to N-shots. -This one keeps track of the last key consumed which helps it's decision making. -It also has cancel and ignore keys like N-shots. - -Essentially the same as n-shots, but with less elegant C code. Choose one or -the other. - -In evaluation. The code for nshots is better. - -``` -// custom-key, Oneshot name. -ONESHOT( OS_LSFT, ONESHOT_LSFT) - -// keys to cancel -CANCEL_KEY( KC_ESC) - -// keys to ignore. -IGNORE_KEY( SPC_NAV) -``` - -Swapper ----------------- -I added the defs code so they are easy to define. This is a way to -alternate between 2 keycodes for a key by sending another keycode. An -example is tab or backtab on one key, which reverses when you press a -second key. It also allows for mods to be applied. The following defines -SW_WIN, which sends left alt-tab and shift- left alt- tab, when reversed -by SW_REV. - -``` -SWAPPER_KEY(SW_WIN, SW_REV, KC_TAB, S(KC_TAB), KC_LALT) -``` -Note: The switch key is not automatically defined in the custom keys enum in -_keycodes.h_. It is convenient to use the same one which causes problems -for automatically adding it. Add it to *custom_keys.def* - -Encoders ----------------- -This is basic encoder stuff, modified to use a def file which makes it a lot easier -to define and use. It can switch the encoder functions based on layers and mods. -Give it a layer name and/or mods to match on, and the clockwise and counter -clockwise keycodes to send. - -I used LEFT and RIGHT, but really it's just 0-N, but I happen to have one -on the left and one on the right. If you have one, use 0 or LEFT. - -The code scans the entries for matches on layer first, checking for a match for -mods. If an encoder entry is not found it then scans for entries with -layer set to LAYER_NONE. - -RGB light controls require calling the functions directly, for this -there is a special macro and function that does this. The functions -should take no arguments. - -``` -// Layer/none, encoder index 0/1, CW_KC, CCW_KC, Qualifying mod or none -// LAYER_NONE and MOD_NONE for a single use. -// LEFT and RIGHT for index. they go on from there, 2, 3, etc -// if one encoder, LEFT/0, is the first one, on the master side. - -// default encoders, all layers no mods. -ENCODER_ACTION(LAYER_NONE, RIGHT, KC_PGDN, KC_PGUP, MOD_NONE) -ENCODER_ACTION(LAYER_NONE, LEFT, KC_DOWN, KC_UP, MOD_NONE) -ENCODER_ACTION(LAYER_NONE, LEFT, KC_PGDN, KC_PGUP, MOD_LSFT) - -// Symbol layer encoders. -ENCODER_ACTION(_SYMB, LEFT, KC_LEFT, KC_RIGHT, MOD_NONE) - -// RGB function encoders -ENCODER_FUNCTION(_RGB, LEFT, - rgb_matrix_increase_speed_noeeprom, - rgb_matrix_decrease_speed_noeeprom, MOD_NONE) -``` - - -Unicode ----------------- -This is just the basic unicode example everyone seems to have. -Add your keys to send unicode strings like so. - -``` - UC_STR(UC_DISA, "āē _āē ") -``` - -Send_string --------------- -This is just basic send string functionality using *SEND_STRING* and -*SEND_STRING_DELAY*. Each entry defines a key to send a string. - -``` -SEND_STR(MYKEY, "this is a test") -SEND_STR_DELAY(VRSN, QMK_KEYBOARD ":" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE) -``` - -Console key logging - for heat maps. ----------------------- -Both CONSOLE_ENABLE and CONSOLE_KEY_LOGGER_ENABLE must be enabled for this to work. - -This is a console key logger which can save keys typed for analysis of keymaps -using Vlad/Precondition's heat map tool. The code for the logger came from -[here](https://precondition.github.io/qmk-heatmap#how-to-collect-the-required-data) -The explanation and use of the heatmap is [here](https://precondition.github.io/qmk-heatmap) - -There is a script ```listen_keylogger.sh``` which should be run to collect -the keylogger data. - -This does require **hid_listen** to be installed on the computer. -On Arch linux this can by installed from the AUR with ```yay -S hid_listen``` - -The output can also be seen just by using ```qmk console```. - -Note: _print.h_ is automatically included when CONSOLE_ENABLE is set. This allows -for debug messages anwhere in the code base as needed to see what might be going -on. - -Tap Dance --------------------- -I had a lot of tap dance, It's turned off. It's big. tap-hold works pretty well most of the time, instead. -My favorites were tab-backtab, home-end. - diff --git a/users/ericgebhart/rules.mk b/users/ericgebhart/rules.mk deleted file mode 100755 index 8ec481c17a..0000000000 --- a/users/ericgebhart/rules.mk +++ /dev/null @@ -1,87 +0,0 @@ -INTROSPECTION_KEYMAP_C = keymap/keymap.c # keymaps -SRC += ericgebhart.c -SRC += process_records.c -SRC += $(USER_PATH)/lang/locales.c -SRC += $(USER_PATH)/extensions/extensions.c -SRC += $(USER_PATH)/extensions/tap_hold.c -SRC += $(USER_PATH)/extensions/accented_keys.c -SRC += $(USER_PATH)/extensions/altlocal_keys.c -SRC += $(USER_PATH)/extensions/tap_dances.c -SRC += $(USER_PATH)/extensions/encoders.c -SRC += $(USER_PATH)/extensions/swapper.c -SRC += $(USER_PATH)/extensions/mod_lock.c -SRC += $(USER_PATH)/extensions/smart_lock.c -SRC += $(USER_PATH)/extensions/nshot_mod.c -SRC += $(USER_PATH)/extensions/oneshot.c -SRC += $(USER_PATH)/extensions/unicode.c -SRC += $(USER_PATH)/extensions/send_string.c -SRC += $(USER_PATH)/extensions/console_key_logger.c -SRC += $(USER_PATH)/extensions/not_dead.c -SRC += $(USER_PATH)/extensions/alt_shift.c -SRC += $(USER_PATH)/extensions/quick_tap.c -SRC += $(USER_PATH)/oled/oled_stuff.c -SRC += $(USER_PATH)/oled/oled_cartes.c -SRC += $(USER_PATH)/oled/oled_layers.c - -VPATH += $(USER_PATH)/layer_names -VPATH += $(USER_PATH)/oled -VPATH += $(USER_PATH)/extensions -VPATH += $(USER_PATH)/base_layers -VPATH += $(USER_PATH)/defs -VPATH += $(USER_PATH)/keyboards -VPATH += $(USER_PATH)/keymap -VPATH += $(USER_PATH)/lang -VPATH += $(USER_PATH)/layers -VPATH += $(USER_PATH)/mod_layers -VPATH += $(USER_PATH)/oled - -# MCU=STM32F411 -# BOARD=QMK_PROTON_C -# SOFT_SERIAL_PIN=D2 -# # Bootloader selection -# BOOTLOADER = stm32-dfu - -# WS2812_DRIVER = pwm -# SERIAL_DRIVER = usart -# AUDIO_ENABLE = no -# LTO_ENABLE = no -# CONVERT_TO=proton_c - -# so the keyboard's code doesn't add stuff we don't need. -# when we use our own oled renders. -# oled_custom_enable should also be set in config.h. -OLED_ENABLE = yes -OLED_CUSTOM_ENABLE = yes - -ifeq ($(strip $(OLED_CUSTOM_ENABLE)), yes) - SRC += $(USER_PATH)/oled/oled_stuff.c -endif - - -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = no # Audio control and System control -COMMAND_ENABLE = no # Commands for debug and configuration -NKRO_ENABLE = no # Enable N-Key Rollover -SWAP_HANDS_ENABLE= no # Allow swapping hands of keyboard -KEY_LOCK_ENABLE = no -TAP_DANCE_ENABLE = no # Enable the tap dance feature. -KEY_OVERRIDE_ENABLE = no -CONSOLE_ENABLE = no # Console for debug or keylogging. - - -BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite -UNICODE_ENABLE = no -SLEEP_LED_ENABLE = no - -LTO_ENABLE = yes - -SPACE_CADET_ENABLE = no -GRAVE_ESC_ENABLE = no -MAGIC_ENABLE = no -COMBO_ENABLE = yes -CAPS_WORD_ENABLE = yes - -ENCODER_ENABLE = no -RGBLIGHT_ENABLE = no -BACKLIGHT_ENABLE = no -RGB_MATRIX_ENABLE = no diff --git a/users/gary/gary.c b/users/gary/gary.c deleted file mode 100644 index aa49e7d659..0000000000 --- a/users/gary/gary.c +++ /dev/null @@ -1 +0,0 @@ -#include "gary.h" diff --git a/users/gary/gary.h b/users/gary/gary.h deleted file mode 100644 index adf25b9a75..0000000000 --- a/users/gary/gary.h +++ /dev/null @@ -1,42 +0,0 @@ -#include QMK_KEYBOARD_H - -#pragma once -#define MASTER_LEFT - -// Layers -// #define BASE 0 // Base layer -// #define FCTN 4 // Function -#define _QWERTY 0 -#define _LOWER 1 -#define _RAISE 2 - -enum custom_keycodes { - QWERTY = SAFE_RANGE, - LOWER, - RAISE, -}; - -#define KC_RST QK_BOOT -#define KC_ KC_TRNS - -#define KC_LOWR MO(_LOWER) // Lower layer -#define KC_RASE MO(_RAISE) // Raise layer -#define KC_CTLC C(KC_C) -#define KC_CLTB C(KC_TAB) -#define KC_OPASS G(KC_BSLS) // GUI + Back Slash -#define KC_GARY LT(_RAISE, KC_SPC) // Hold for Raise, Tap for Space - -#define KC_SHOT SCMD(C(KC_4)) // Screenshot to Paste - -// Window Management -#define KC_FULL A(G(KC_F)) // Full Screen -#define KC_CNTR A(G(KC_C)) // Center -#define KC_LHLF A(G(KC_LEFT)) // Left Half -#define KC_RHLF A(G(KC_RGHT)) // Right Half - -#define KC_UPLF C(G(KC_LEFT)) // Upper Left -#define KC_UPRG C(G(KC_RGHT)) // Upper Right -#define KC_DNLF S(C(G(KC_LEFT))) // Lower Left -#define KC_DNRG S(C(G(KC_RGHT))) // Lower Right - -#define KC_NEXT LCAG(KC_LEFT) // Move the Window to next display diff --git a/users/gary/readme.md b/users/gary/readme.md deleted file mode 100644 index a8c22e5ae7..0000000000 --- a/users/gary/readme.md +++ /dev/null @@ -1,14 +0,0 @@ -Copyright 2019 Gary @garyjzhao - -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 . diff --git a/users/gary/rules.mk b/users/gary/rules.mk deleted file mode 100644 index b6aa3490ba..0000000000 --- a/users/gary/rules.mk +++ /dev/null @@ -1 +0,0 @@ -SRC += gary.c diff --git a/users/gourdo1/autocorrect/autocorrection.c b/users/gourdo1/autocorrect/autocorrection.c deleted file mode 100644 index dae62d37a2..0000000000 --- a/users/gourdo1/autocorrect/autocorrection.c +++ /dev/null @@ -1,182 +0,0 @@ -// Copyright 2021-2022 Google LLC -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// -// For full documentation, see -// https://getreuer.info/posts/keyboards/autocorrection - -#include "autocorrection.h" - -#include -#include "autocorrection_data.h" - -#if AUTOCORRECTION_MIN_LENGTH < 4 -// Odd output or hard locks on the board have been observed when the min typo -// length is 3 or lower (https://github.com/getreuer/qmk-keymap/issues/2). -// Additionally, autocorrection entries for short typos are more likely to false -// trigger, so it is suggested that typos be at least 5 characters. -#error "Min typo length is less than 4. Autocorrection may behave poorly." -#endif - -bool process_autocorrection(uint16_t keycode, keyrecord_t* record) { - if (user_config.autocorrect) { - static uint8_t typo_buffer[AUTOCORRECTION_MAX_LENGTH] = {0}; - static uint8_t typo_buffer_size = 0; - - // Ignore key release; we only process key presses. - if (!record->event.pressed) { return true; } - - #ifndef NO_ACTION_ONESHOT - const uint8_t mods = get_mods() | get_oneshot_mods(); - #else - const uint8_t mods = get_mods(); - #endif // NO_ACTION_ONESHOT - // Disable autocorrection while a mod other than shift is active. - if ((mods & ~MOD_MASK_SHIFT) != 0) { - typo_buffer_size = 0; - return true; - } - - // The following switch cases address various kinds of keycodes. This logic is - // split over two switches rather than merged into one. The first switch may - // extract a basic keycode which is then further handled by the second switch, - // e.g. a layer-tap key with Caps Lock `LT(layer, KC_CAPS)`. - switch (keycode) { - #ifndef NO_ACTION_TAPPING - case QK_MOD_TAP ... QK_MOD_TAP_MAX: // Tap-hold keys. - #ifndef NO_ACTION_LAYER - case QK_LAYER_TAP ... QK_LAYER_TAP_MAX: - #endif // NO_ACTION_LAYER - // Ignore when tap-hold keys are held. - if (record->tap.count == 0) { return true; } - // Otherwise when tapped, get the basic keycode. - // Fallthrough intended. - #endif // NO_ACTION_TAPPING - - // Handle shifted keys, e.g. symbols like KC_EXLM = S(KC_1). - case QK_LSFT ... QK_LSFT + 255: - case QK_RSFT ... QK_RSFT + 255: - keycode &= 0xff; // Get the basic keycode. - break; - - // NOTE: Space Cadet keys expose no info to check whether they are being - // tapped vs. held. This makes autocorrection ambiguous, e.g. SC_LCPO might - // be '(', which we would treat as a word break, or it might be shift, which - // we would treat as having no effect. To behave cautiously, we allow Space - // Cadet keycodes to fall to the logic below and clear autocorrection state. - } - - switch (keycode) { - // Ignore shifts, Caps Lock, one-shot mods, and layer switch keys. - case KC_NO: - case KC_LSFT: - case KC_RSFT: - case KC_CAPS: - case QK_ONE_SHOT_MOD ... QK_ONE_SHOT_MOD_MAX: - case QK_TO ... QK_TO_MAX: - case QK_MOMENTARY ... QK_MOMENTARY_MAX: - case QK_DEF_LAYER ... QK_DEF_LAYER_MAX: - case QK_TOGGLE_LAYER ... QK_TOGGLE_LAYER_MAX: - case QK_ONE_SHOT_LAYER ... QK_ONE_SHOT_LAYER_MAX: - case QK_LAYER_TAP_TOGGLE ... QK_LAYER_TAP_TOGGLE_MAX: - case QK_LAYER_MOD ... QK_LAYER_MOD_MAX: - return true; // Ignore these keys. - } - - if (keycode == KC_QUOT) { - // Treat " (shifted ') as a word boundary. - if ((mods & MOD_MASK_SHIFT) != 0) { keycode = KC_SPC; } - } else if (!(KC_A <= keycode && keycode <= KC_Z)) { - if (keycode == KC_BSPC) { - // Remove last character from the buffer. - if (typo_buffer_size > 0) { --typo_buffer_size; } - return true; - } else if (KC_1 <= keycode && keycode <= KC_SLSH && keycode != KC_ESC) { - // Set a word boundary if space, period, digit, etc. is pressed. - // Behave more conservatively for the enter key. Reset, so that enter - // can't be used on a word ending. - if (keycode == KC_ENT) { typo_buffer_size = 0; } - keycode = KC_SPC; - } else { - // Clear state if some other non-alpha key is pressed. - typo_buffer_size = 0; - return true; - } - } - - // If the buffer is full, rotate it to discard the oldest character. - if (typo_buffer_size >= AUTOCORRECTION_MAX_LENGTH) { - memmove(typo_buffer, typo_buffer + 1, AUTOCORRECTION_MAX_LENGTH - 1); - typo_buffer_size = AUTOCORRECTION_MAX_LENGTH - 1; - } - - // Append `keycode` to the buffer. - // NOTE: `keycode` must be a basic keycode (0-255) by this point. - typo_buffer[typo_buffer_size++] = (uint8_t) keycode; - // Early return if not many characters have been buffered so far. - if (typo_buffer_size < AUTOCORRECTION_MIN_LENGTH) { return true; } - - // Check whether the buffer ends in a typo. This is done using a trie - // stored in `autocorrection_data`. - uint16_t state = 0; - uint8_t code = pgm_read_byte(autocorrection_data + state); - for (int i = typo_buffer_size - 1; i >= 0; --i) { - const uint8_t key_i = typo_buffer[i]; - - if (code & 64) { // Check for match in node with multiple children. - code &= 63; - for (; code != key_i; - code = pgm_read_byte(autocorrection_data + (state += 3))) { - if (!code) { return true; } - } - - // Follow link to child node. - state = (uint16_t)( - (uint_fast16_t)pgm_read_byte(autocorrection_data + state + 1) - | (uint_fast16_t)pgm_read_byte(autocorrection_data + state + 2) << 8); - // Otherwise check for match in node with a single child. - } else if (code != key_i) { - return true; - } else if (!(code = pgm_read_byte(autocorrection_data + (++state)))) { - ++state; - } - - // Stop if `state` becomes an invalid index. This should not normally - // happen, it is a safeguard in case of a bug, data corruption, etc. - if (state >= sizeof(autocorrection_data)) { - return true; - } - - // Read first byte of the next node. - code = pgm_read_byte(autocorrection_data + state); - - if (code & 128) { // A typo was found! Apply autocorrection. - const int backspaces = code & 63; - for (int i = 0; i < backspaces; ++i) { tap_code(KC_BSPC); } - send_string_P((char const*)(autocorrection_data + state + 1)); - - if (keycode == KC_SPC) { - typo_buffer[0] = KC_SPC; - typo_buffer_size = 1; - return true; - } else { - typo_buffer_size = 0; - return false; - } - } - } - return true; - } - return true; -} diff --git a/users/gourdo1/autocorrect/autocorrection.h b/users/gourdo1/autocorrect/autocorrection.h deleted file mode 100644 index d344a815f7..0000000000 --- a/users/gourdo1/autocorrect/autocorrection.h +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2021-2022 Google LLC -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// -// Autocorrection on your keyboard. -// -// This library implements rudimentary autocorrection, automatically detecting -// and fixing some misspellings. Beware that the autocorrection logic is -// unaware of hotkey or mouse-based cursor movement. -// -// For full documentation, see -// https://getreuer.info/posts/keyboards/autocorrection - -#pragma once - -#include "quantum.h" - -#include "gourdo1.h" - -#ifdef __cplusplus -extern "C" { -#endif - -bool process_autocorrection(uint16_t keycode, keyrecord_t* record); - -#ifdef __cplusplus -} -#endif - diff --git a/users/gourdo1/autocorrect/autocorrection_data.h b/users/gourdo1/autocorrect/autocorrection_data.h deleted file mode 100644 index 66518201e2..0000000000 --- a/users/gourdo1/autocorrect/autocorrection_data.h +++ /dev/null @@ -1,722 +0,0 @@ -// Generated code. - -// Autocorrection dictionary (400 entries): -// :acheiv -> achiev -// :agian -> again -// :agred -> agreed -// :ajust -> adjust -// :alot: -> a lot -// :andteh -> and the -// :andthe -> and the -// :anual -> annual -// :asign -> assign -// :aslo: -> also -// :asthe -> as the -// :atthe -> at the -// :casue -> cause -// :choses -> chooses -// :eveyr -> every -// :foudn -> found -// :gaurd -> guard -// :goign -> going -// :gonig -> going -// :graet -> great -// :grammer -> grammar -// :guage -> gauge -// :haev -> have -// :hapen -> happen -// :htere -> there -// :htikn -> think -// :htink -> think -// :hwihc -> which -// :hwile -> while -// :idaes -> ideas -// :jstu: -> just -// :jsut: -> just -// :knwo -> know -// :konw -> know -// :kwno -> know -// :moeny -> money -// :ocuntry -> country -// :ocur -> occur -// :olther -> other -// :otehr -> other -// :owudl -> would -// :rference -> reference -// :sicne -> since -// :socre -> score -// :szie -> size -// :the:the: -> the -// :theri -> their -// :thier -> their -// :thsoe -> those -// :tothe -> to the -// :ture -> true -// :turth -> truth -// :uesd: -> used -// :usally -> usually -// :yaers -> years -// :yeasr -> years -// abbout -> about -// aberation -> aberration -// abilties -> abilities -// abilty -> ability -// abotu -> about -// abouta -> about a -// aboutit -> about it -// aboutthe -> about the -// abvove -> above -// accesories -> accessories -// accomodate -> accommodate -// accross -> across -// acommodate -> accommodate -// acomplish -> accomplish -// actualy -> actually -// acurate -> accurate -// acutally -> actually -// addtion -> addition -// adviced -> advised -// againnst -> against -// aganist -> against -// aggreed -> agreed -// agianst -> against -// ahppn -> happen -// aledge -> allege -// alledge -> allege -// allign -> align -// almsot -> almost -// alomst -> almost -// alwasy -> always -// alwyas -> always -// amature -> amateur -// anohter -> another -// anomolous -> anomalous -// anomoly -> anomaly -// anytying -> anything -// aparent -> apparent -// aparrent -> apparent -// apparant -> apparent -// apparrent -> apparent -// aquire -> acquire -// aroud -> around -// arround -> around -// arund -> around -// asthetic -> aesthetic -// auxilary -> auxiliary -// auxillary -> auxiliary -// auxilliary -> auxiliary -// availabe -> available -// availaible -> available -// availalbe -> available -// availble -> available -// availiable -> available -// avalable -> available -// avaliable -> available -// avilable -> available -// baceause -> because -// bandwith -> bandwidth -// bankrupcy -> bankruptcy -// baout -> about -// beacuse -> because -// becasue -> because -// beccause -> because -// becouse -> because -// becuase -> because -// bedore -> before -// beeing -> being -// befoer -> before -// begginer -> beginner -// beleif -> belief -// beleive -> believe -// belive -> believe -// beteen -> between -// beween -> between -// bewteen -> between -// breif -> brief -// burried -> buried -// busness -> business -// bussiness -> business -// cacheing -> caching -// calander -> calendar -// caluclate -> calculate -// caluculate -> calculate -// calulate -> calculate -// catagory -> category -// cauhgt -> caught -// ceratin -> certain -// certian -> certain -// cheif -> chief -// chekc -> check -// childen -> children -// chnage -> change -// choosen -> chosen -// cieling -> ceiling -// circut -> circuit -// claer -> clear -// clasic -> classic -// cmoputer -> computer -// coform -> conform -// cognizent -> cognizant -// collegue -> colleague -// comapny -> company -// comittee -> committee -// comming: -> coming -// commitee -> committee -// competance -> competence -// competant -> competent -// complier -> compiler -// concensus -> consensus -// considerd -> considered -// contian -> contain -// copywrite: -> copyright -// cosnt -> const -// coudl -> could -// dervied -> derived -// desicion -> decision -// didnot -> did not -// diferent -> different -// diferrent -> different -// differnt -> different -// diffrent -> different -// divison -> division -// doulbe -> double -// dyanmic -> dynamic -// effecient -> efficient -// elasped -> elapsed -// eligable -> eligible -// elpased -> elapsed -// embarass -> embarrass -// embeded -> embedded -// encypt -> encrypt -// excecut -> execut -// excercise -> exercise -// failse -> false -// fales -> false -// fasle -> false -// feild -> field -// finaly -> finally -// firend -> friend -// firts -> first -// fitler -> filter -// flase -> false -// follwo -> follow -// foriegn -> foreign -// foward -> forward -// fraciton -> fraction -// freind -> friend -// frequecy -> frequency -// fromthe -> from the -// fucntion -> function -// fufill -> fulfill -// fullfill -> fulfill -// futher -> further -// ganerate -> generate -// garantee -> guarantee -// gaurantee -> guarantee -// generaly -> generally -// govement -> government -// govenment -> government -// goverment -> government -// governmnet -> government -// govorment -> government -// govornment -> government -// greatful -> grateful -// guaratee -> guarantee -// heigher -> higher -// heigth -> height -// heirarchy -> hierarchy -// higest -> highest -// howver -> however -// hydogen -> hydrogen -// hygeine -> hygiene -// hypocracy -> hypocrisy -// hypocrasy -> hypocrisy -// hypocricy -> hypocrisy -// hypocrit: -> hypocrite -// iamge -> image -// importamt -> important -// inclued -> include -// indeces -> indices -// indecies -> indices -// indicies -> indices -// inital -> initial -// insted -> instead -// interator -> iterator -// intput -> input -// intrest -> interest -// invliad -> invalid -// laguage -> language -// largst -> largest -// learnign -> learning -// lenght -> length -// levle -> level -// liasion -> liaison -// libary -> library -// likly -> likely -// lisense -> license -// listner -> listener -// littel -> little -// looses: -> loses -// looup -> lookup -// macthing -> matching -// maintence -> maintenance -// manefist -> manifest -// mesage -> message -// morgage -> mortgage -// mysefl -> myself -// namesapce -> namespace -// namespcae -> namespace -// naturual -> natural -// neccesary -> necessary -// necesary -> necessary -// nulltpr -> nullptr -// occassion -> occasion -// occured -> occurred -// operaotr -> operator -// ouptut -> output -// ouput -> output -// overide -> override -// ovveride -> override -// pallete -> palette -// paralel -> parallel -// parralel -> parallel -// parrallel -> parallel -// particualr -> particular -// paticular -> particular -// peaple -> people -// peice -> piece -// peolpe -> people -// peopel -> people -// perhasp -> perhaps -// perheaps -> perhaps -// perhpas -> perhaps -// perphas -> perhaps -// persue -> pursue -// poeople -> people -// poeple -> people -// poitner -> pointer -// posess -> possess -// postion -> position -// preiod -> period -// primarly -> primarily -// priviledge -> privilege -// privte -> private -// probablly -> probably -// probaly -> probably -// probelm -> problem -// proccess -> process -// proeprty -> property -// prominant -> prominent -// proove -> prove -// propery -> property -// propogate -> propagate -// psuedo -> pseudo -// raelly -> really -// realtion -> relation -// realy -> really -// reasearch -> research -// receiev -> receiv -// recepient -> recipient -// reciept -> receipt -// reciev -> receiv -// recipiant -> recipient -// recrod -> record -// recuring -> recurring -// referece -> reference -// refered -> referred -// regluar -> regular -// relaly -> really -// releated -> related -// relevent -> relevant -// repitition -> repetition -// reponse -> response -// reprot -> report -// resutl -> result -// retrun -> return -// retun -> return -// reuslt -> result -// reutrn -> return -// reveiw -> review -// saftey -> safety -// safty -> safety -// satisifed -> satisfied -// scheduel -> schedule -// seperat -> separat -// sequnce -> sequence -// shoudl -> should -// similiar -> similar -// simmilar -> similar -// singed -> signed -// singel -> single -// slighly -> slightly -// somehwat -> somewhat -// spectogram -> spectrogram -// statment -> statement -// stirng -> string -// stregth -> strength -// strengh -> strength -// strign -> string -// succsess -> success -// sucess -> success -// sugest -> suggest -// sumary -> summary -// supress -> suppress -// surpress -> suppress -// swithc -> switch -// swtich -> switch -// symetric -> symmetric -// teamplate -> template -// tempalte -> template -// theese -> these -// therfore -> therefore -// thign -> thing -// thigsn -> things -// thikn -> think -// thiunk -> think -// thnigs -> things -// thresold -> threshold -// throught -> thought -// tihkn -> think -// tkaes -> takes -// todya -> today -// toghether -> together -// tolerence -> tolerance -// tongiht -> tonight -// tranpose -> transpose -// typcial -> typical -// udpate -> update -// unkown -> unknown -// unqiue -> unique -// ususally -> usually -// verticies -> vertices -// virutal -> virtual -// vitual -> virtual -// whcih -> which -// whereever -> wherever -// wherre -> where -// whihc -> which -// whlch -> which -// widht -> width -// wierd -> weird -// wihch -> which -// woudl -> would -// yeild -> yield - -#define AUTOCORRECTION_MIN_LENGTH 5 // "abotu" -#define AUTOCORRECTION_MAX_LENGTH 10 // "auxilliary" - -static const uint8_t autocorrection_data[5967] PROGMEM = {108, 67, 0, 4, 212, 0, - 6, 236, 0, 7, 100, 1, 8, 15, 3, 9, 169, 8, 10, 204, 8, 11, 68, 9, 12, 246, 9, - 14, 0, 10, 15, 28, 10, 16, 79, 11, 17, 129, 11, 18, 175, 13, 19, 227, 13, 21, - 253, 13, 22, 194, 15, 23, 121, 17, 24, 201, 20, 25, 210, 20, 26, 8, 21, 28, - 34, 21, 0, 71, 89, 0, 8, 99, 0, 10, 130, 0, 18, 142, 0, 22, 152, 0, 23, 163, - 0, 24, 202, 0, 0, 22, 8, 24, 44, 0, 131, 115, 101, 100, 0, 75, 106, 0, 23, - 115, 0, 0, 23, 44, 8, 11, 23, 44, 0, 132, 0, 12, 21, 26, 28, 19, 18, 6, 0, - 133, 114, 105, 103, 104, 116, 0, 17, 12, 16, 16, 18, 6, 0, 132, 105, 110, 103, - 0, 15, 22, 4, 44, 0, 131, 108, 115, 111, 0, 8, 22, 18, 18, 15, 0, 132, 115, - 101, 115, 0, 76, 173, 0, 18, 183, 0, 24, 193, 0, 0, 21, 6, 18, 19, 28, 11, 0, - 128, 101, 0, 15, 4, 44, 0, 131, 32, 108, 111, 116, 0, 22, 13, 44, 0, 131, 117, - 115, 116, 0, 23, 22, 13, 44, 0, 131, 117, 115, 116, 0, 87, 219, 0, 28, 228, 0, - 0, 24, 18, 5, 4, 0, 128, 32, 97, 0, 7, 18, 23, 0, 129, 97, 121, 0, 75, 246, 0, - 12, 28, 1, 14, 92, 1, 0, 76, 253, 0, 23, 20, 1, 0, 75, 4, 1, 26, 10, 1, 0, 26, - 0, 129, 99, 104, 0, 11, 44, 0, 132, 119, 104, 105, 99, 104, 0, 12, 26, 22, 0, - 129, 99, 104, 0, 80, 41, 1, 21, 53, 1, 22, 67, 1, 23, 76, 1, 0, 17, 4, 28, 7, - 0, 132, 110, 97, 109, 105, 99, 0, 23, 8, 16, 28, 22, 0, 132, 109, 101, 116, - 114, 105, 99, 0, 4, 15, 6, 0, 129, 115, 105, 99, 0, 8, 11, 23, 22, 4, 0, 134, - 101, 115, 116, 104, 101, 116, 105, 99, 0, 8, 11, 6, 0, 129, 99, 107, 0, 68, - 122, 1, 8, 134, 1, 15, 84, 2, 17, 124, 2, 18, 180, 2, 21, 207, 2, 24, 7, 3, 0, - 12, 15, 25, 17, 12, 0, 131, 97, 108, 105, 100, 0, 70, 168, 1, 7, 178, 1, 8, - 188, 1, 9, 199, 1, 10, 212, 1, 12, 222, 1, 19, 248, 1, 21, 3, 2, 22, 38, 2, - 23, 50, 2, 24, 75, 2, 0, 12, 25, 7, 4, 0, 130, 115, 101, 100, 0, 8, 5, 16, 8, - 0, 129, 100, 101, 100, 0, 21, 10, 10, 4, 0, 132, 114, 101, 101, 100, 0, 12, - 22, 12, 23, 4, 22, 0, 131, 102, 105, 101, 100, 0, 17, 12, 22, 0, 131, 103, - 110, 101, 100, 0, 85, 229, 1, 25, 238, 1, 0, 21, 24, 5, 0, 131, 105, 101, 100, - 0, 21, 8, 7, 0, 131, 105, 118, 101, 100, 0, 22, 4, 15, 8, 0, 131, 112, 115, - 101, 100, 0, 72, 13, 2, 10, 22, 2, 24, 29, 2, 0, 9, 8, 21, 0, 129, 114, 101, - 100, 0, 4, 44, 0, 128, 101, 100, 0, 6, 6, 18, 0, 129, 114, 101, 100, 0, 4, 19, - 15, 8, 0, 132, 97, 112, 115, 101, 100, 0, 68, 57, 2, 22, 68, 2, 0, 8, 15, 8, - 21, 0, 132, 97, 116, 101, 100, 0, 17, 12, 0, 128, 97, 100, 0, 15, 6, 17, 12, - 0, 129, 100, 101, 0, 76, 91, 2, 18, 112, 2, 0, 8, 0, 73, 100, 2, 28, 106, 2, - 0, 131, 105, 101, 108, 100, 0, 131, 105, 101, 108, 100, 0, 22, 8, 21, 11, 23, - 0, 130, 104, 111, 108, 100, 0, 72, 134, 2, 12, 145, 2, 24, 155, 2, 0, 21, 12, - 9, 0, 132, 114, 105, 101, 110, 100, 0, 8, 21, 9, 0, 131, 105, 101, 110, 100, - 0, 82, 162, 2, 21, 172, 2, 0, 21, 21, 4, 0, 132, 111, 117, 110, 100, 0, 4, 0, - 130, 111, 117, 110, 100, 0, 76, 187, 2, 21, 198, 2, 0, 8, 21, 19, 0, 132, 101, - 114, 105, 111, 100, 0, 6, 8, 21, 0, 130, 111, 114, 100, 0, 68, 217, 2, 8, 228, - 2, 24, 253, 2, 0, 26, 18, 9, 0, 131, 114, 119, 97, 114, 100, 0, 71, 235, 2, - 12, 245, 2, 0, 12, 22, 17, 18, 6, 0, 128, 101, 100, 0, 26, 0, 131, 101, 105, - 114, 100, 0, 4, 10, 44, 0, 131, 117, 97, 114, 100, 0, 18, 21, 4, 0, 128, 110, - 100, 0, 68, 67, 3, 5, 80, 3, 6, 123, 3, 7, 251, 3, 8, 23, 4, 10, 107, 4, 11, - 227, 4, 12, 52, 5, 15, 61, 5, 17, 0, 6, 18, 27, 6, 19, 37, 6, 21, 47, 6, 22, - 156, 6, 23, 82, 7, 24, 45, 8, 25, 115, 8, 0, 6, 19, 22, 8, 16, 4, 17, 0, 130, - 97, 99, 101, 0, 68, 87, 3, 15, 97, 3, 0, 15, 12, 4, 25, 4, 0, 128, 108, 101, - 0, 68, 104, 3, 24, 115, 3, 0, 15, 12, 4, 25, 4, 0, 130, 98, 108, 101, 0, 18, - 7, 0, 130, 98, 108, 101, 0, 72, 136, 3, 12, 147, 3, 17, 156, 3, 19, 238, 3, 0, - 21, 8, 9, 8, 21, 0, 129, 110, 99, 101, 0, 8, 19, 0, 131, 105, 101, 99, 101, 0, - 68, 166, 3, 8, 179, 3, 24, 228, 3, 0, 23, 8, 19, 16, 18, 6, 0, 131, 101, 110, - 99, 101, 0, 85, 186, 3, 23, 217, 3, 0, 8, 0, 73, 195, 3, 15, 208, 3, 0, 21, - 44, 0, 134, 101, 102, 101, 114, 101, 110, 99, 101, 0, 18, 23, 0, 131, 97, 110, - 99, 101, 0, 17, 12, 4, 16, 0, 129, 97, 110, 99, 101, 0, 20, 8, 22, 0, 130, - 101, 110, 99, 101, 0, 4, 22, 8, 16, 4, 17, 0, 131, 112, 97, 99, 101, 0, 12, - 21, 8, 25, 0, 82, 7, 4, 25, 13, 4, 0, 130, 114, 105, 100, 101, 0, 18, 0, 133, - 101, 114, 114, 105, 100, 101, 0, 23, 0, 68, 38, 4, 12, 49, 4, 17, 59, 4, 23, - 94, 4, 0, 21, 4, 24, 10, 0, 130, 110, 116, 101, 101, 0, 16, 16, 18, 6, 0, 129, - 116, 101, 101, 0, 4, 21, 0, 68, 69, 4, 24, 81, 4, 0, 10, 0, 134, 117, 97, 114, - 97, 110, 116, 101, 101, 0, 4, 10, 0, 135, 117, 97, 114, 97, 110, 116, 101, - 101, 0, 12, 16, 18, 6, 0, 132, 109, 105, 116, 116, 101, 101, 0, 68, 117, 4, 7, - 184, 4, 16, 218, 4, 0, 74, 130, 4, 17, 141, 4, 22, 150, 4, 24, 159, 4, 0, 21, - 18, 16, 0, 131, 116, 103, 97, 103, 101, 0, 11, 6, 0, 131, 97, 110, 103, 101, - 0, 8, 16, 0, 130, 115, 97, 103, 101, 0, 10, 0, 108, 168, 4, 4, 174, 4, 0, 131, - 97, 117, 103, 101, 0, 15, 0, 132, 110, 103, 117, 97, 103, 101, 0, 8, 15, 0, - 68, 197, 4, 12, 203, 4, 15, 212, 4, 0, 131, 108, 101, 103, 101, 0, 25, 12, 21, - 19, 0, 130, 103, 101, 0, 4, 0, 130, 103, 101, 0, 4, 12, 0, 131, 109, 97, 103, - 101, 0, 23, 0, 71, 245, 4, 16, 255, 4, 18, 9, 5, 22, 18, 5, 23, 27, 5, 0, 17, - 4, 44, 0, 130, 32, 116, 104, 101, 0, 18, 21, 9, 0, 130, 32, 116, 104, 101, 0, - 23, 44, 0, 130, 32, 116, 104, 101, 0, 4, 44, 0, 130, 32, 116, 104, 101, 0, 68, - 34, 5, 24, 42, 5, 0, 44, 0, 130, 32, 116, 104, 101, 0, 18, 5, 4, 0, 130, 32, - 116, 104, 101, 0, 29, 22, 44, 0, 130, 105, 122, 101, 0, 69, 77, 5, 12, 190, 5, - 19, 201, 5, 22, 241, 5, 25, 249, 5, 0, 68, 87, 5, 12, 167, 5, 15, 179, 5, 0, - 74, 97, 5, 12, 107, 5, 15, 137, 5, 0, 12, 15, 8, 0, 131, 105, 98, 108, 101, 0, - 15, 0, 68, 116, 5, 12, 127, 5, 0, 25, 4, 0, 133, 105, 108, 97, 98, 108, 101, - 0, 4, 25, 4, 0, 132, 97, 98, 108, 101, 0, 68, 144, 5, 12, 155, 5, 0, 25, 4, 0, - 132, 105, 108, 97, 98, 108, 101, 0, 25, 4, 0, 133, 97, 105, 108, 97, 98, 108, - 101, 0, 4, 15, 12, 4, 25, 4, 0, 131, 98, 108, 101, 0, 12, 4, 25, 4, 0, 130, - 97, 98, 108, 101, 0, 26, 11, 44, 0, 132, 119, 104, 105, 108, 101, 0, 68, 211, - 5, 8, 220, 5, 18, 230, 5, 0, 8, 19, 0, 131, 111, 112, 108, 101, 0, 18, 19, 0, - 132, 101, 111, 112, 108, 101, 0, 8, 18, 19, 0, 133, 101, 111, 112, 108, 101, - 0, 4, 9, 0, 130, 108, 115, 101, 0, 8, 15, 0, 129, 101, 108, 0, 70, 7, 6, 12, - 16, 6, 0, 12, 22, 44, 0, 130, 110, 99, 101, 0, 8, 10, 28, 11, 0, 131, 105, - 101, 110, 101, 0, 22, 11, 23, 44, 0, 130, 111, 115, 101, 0, 15, 18, 8, 19, 0, - 130, 112, 108, 101, 0, 70, 66, 6, 8, 76, 6, 12, 87, 6, 18, 99, 6, 21, 127, 6, - 24, 134, 6, 0, 18, 22, 44, 0, 131, 99, 111, 114, 101, 0, 23, 11, 44, 0, 132, - 116, 104, 101, 114, 101, 0, 24, 20, 4, 0, 132, 99, 113, 117, 105, 114, 101, 0, - 71, 106, 6, 9, 115, 6, 0, 8, 5, 0, 131, 102, 111, 114, 101, 0, 21, 8, 11, 23, - 0, 131, 101, 102, 111, 114, 101, 0, 8, 11, 26, 0, 129, 101, 0, 23, 0, 108, - 143, 6, 4, 148, 6, 0, 130, 114, 117, 101, 0, 16, 4, 0, 130, 101, 117, 114, 0, - 68, 178, 6, 8, 203, 6, 12, 211, 6, 15, 226, 6, 17, 235, 6, 18, 9, 7, 24, 22, - 7, 0, 79, 185, 6, 24, 193, 6, 0, 9, 0, 131, 97, 108, 115, 101, 0, 6, 8, 5, 0, - 131, 97, 117, 115, 101, 0, 8, 11, 23, 0, 130, 115, 101, 0, 6, 21, 8, 6, 27, 8, - 0, 134, 101, 114, 99, 105, 115, 101, 0, 12, 4, 9, 0, 131, 108, 115, 101, 0, - 72, 242, 6, 18, 253, 6, 0, 22, 12, 15, 0, 132, 99, 101, 110, 115, 101, 0, 19, - 8, 21, 0, 132, 115, 112, 111, 110, 115, 101, 0, 19, 17, 4, 21, 23, 0, 131, - 115, 112, 111, 115, 101, 0, 68, 32, 7, 6, 61, 7, 18, 72, 7, 0, 70, 39, 7, 8, - 49, 7, 0, 6, 8, 5, 0, 132, 97, 117, 115, 101, 0, 6, 4, 5, 0, 134, 101, 99, 97, - 117, 115, 101, 0, 4, 8, 5, 0, 132, 99, 97, 117, 115, 101, 0, 6, 8, 5, 0, 131, - 97, 117, 115, 101, 0, 68, 95, 7, 8, 13, 8, 15, 24, 8, 25, 36, 8, 0, 71, 111, - 7, 10, 148, 7, 15, 161, 7, 19, 228, 7, 21, 238, 7, 0, 18, 16, 0, 80, 121, 7, - 18, 136, 7, 0, 18, 6, 4, 0, 135, 99, 111, 109, 109, 111, 100, 97, 116, 101, 0, - 6, 6, 4, 0, 132, 109, 111, 100, 97, 116, 101, 0, 18, 19, 18, 21, 19, 0, 132, - 97, 103, 97, 116, 101, 0, 70, 171, 7, 19, 184, 7, 24, 197, 7, 0, 24, 15, 4, 6, - 0, 133, 99, 117, 108, 97, 116, 101, 0, 16, 4, 8, 23, 0, 134, 109, 112, 108, - 97, 116, 101, 0, 70, 204, 7, 15, 217, 7, 0, 24, 15, 4, 6, 0, 134, 99, 117, - 108, 97, 116, 101, 0, 4, 6, 0, 132, 99, 117, 108, 97, 116, 101, 0, 7, 24, 0, - 132, 112, 100, 97, 116, 101, 0, 72, 245, 7, 24, 2, 8, 0, 17, 4, 10, 0, 134, - 101, 110, 101, 114, 97, 116, 101, 0, 6, 4, 0, 132, 99, 117, 114, 97, 116, 101, - 0, 15, 15, 4, 19, 0, 131, 101, 116, 116, 101, 0, 4, 19, 16, 8, 23, 0, 131, - 108, 97, 116, 101, 0, 12, 21, 19, 0, 129, 97, 116, 101, 0, 74, 55, 8, 12, 67, - 8, 22, 77, 8, 0, 8, 15, 15, 18, 6, 0, 130, 97, 103, 117, 101, 0, 20, 17, 24, - 0, 131, 105, 113, 117, 101, 0, 68, 84, 8, 21, 105, 8, 0, 6, 0, 108, 93, 8, 8, - 98, 8, 0, 130, 117, 115, 101, 0, 5, 0, 130, 117, 115, 101, 0, 8, 19, 0, 132, - 117, 114, 115, 117, 101, 0, 76, 122, 8, 18, 147, 8, 0, 72, 129, 8, 15, 139, 8, - 0, 15, 8, 5, 0, 131, 105, 101, 118, 101, 0, 8, 5, 0, 129, 101, 118, 101, 0, - 82, 154, 8, 25, 161, 8, 0, 21, 19, 0, 130, 118, 101, 0, 5, 4, 0, 131, 111, - 118, 101, 0, 12, 8, 0, 75, 182, 8, 15, 189, 8, 21, 197, 8, 0, 6, 0, 130, 105, - 101, 102, 0, 8, 5, 0, 130, 105, 101, 102, 0, 5, 0, 130, 105, 101, 102, 0, 76, - 211, 8, 17, 221, 8, 0, 17, 18, 10, 44, 0, 130, 105, 110, 103, 0, 76, 228, 8, - 21, 58, 9, 0, 72, 244, 8, 11, 11, 9, 15, 24, 9, 21, 36, 9, 28, 47, 9, 0, 72, - 251, 8, 11, 2, 9, 0, 5, 0, 131, 105, 110, 103, 0, 6, 4, 6, 0, 131, 105, 110, - 103, 0, 23, 6, 4, 16, 0, 133, 116, 99, 104, 105, 110, 103, 0, 8, 12, 6, 0, - 133, 101, 105, 108, 105, 110, 103, 0, 24, 6, 8, 21, 0, 130, 114, 105, 110, - 103, 0, 23, 28, 17, 4, 0, 131, 104, 105, 110, 103, 0, 12, 23, 22, 0, 131, 114, - 105, 110, 103, 0, 70, 87, 9, 8, 142, 9, 10, 154, 9, 12, 164, 9, 22, 173, 9, - 23, 191, 9, 0, 75, 100, 9, 12, 109, 9, 15, 119, 9, 21, 127, 9, 0, 12, 26, 0, - 131, 104, 105, 99, 104, 0, 23, 26, 22, 0, 131, 105, 116, 99, 104, 0, 11, 26, - 0, 130, 105, 99, 104, 0, 4, 8, 22, 4, 8, 21, 0, 134, 115, 101, 97, 114, 99, - 104, 0, 23, 7, 17, 4, 44, 0, 130, 32, 116, 104, 101, 0, 17, 8, 21, 23, 22, 0, - 128, 116, 104, 0, 6, 11, 26, 0, 130, 105, 99, 104, 0, 12, 15, 19, 16, 18, 6, - 4, 0, 134, 99, 111, 109, 112, 108, 105, 115, 104, 0, 74, 201, 9, 12, 225, 9, - 21, 236, 9, 0, 72, 208, 9, 12, 218, 9, 0, 21, 23, 22, 0, 130, 110, 103, 116, - 104, 0, 8, 11, 0, 129, 104, 116, 0, 26, 7, 17, 4, 5, 0, 129, 100, 116, 104, 0, - 24, 23, 44, 0, 131, 114, 117, 116, 104, 0, 21, 8, 11, 23, 44, 0, 129, 105, - 114, 0, 17, 0, 76, 9, 10, 24, 20, 10, 0, 23, 11, 44, 0, 132, 116, 104, 105, - 110, 107, 0, 12, 11, 23, 0, 130, 110, 107, 0, 68, 50, 10, 7, 134, 10, 8, 177, - 10, 9, 17, 11, 15, 26, 11, 23, 55, 11, 24, 64, 11, 0, 76, 60, 10, 23, 71, 10, - 24, 96, 10, 0, 6, 19, 28, 23, 0, 131, 105, 99, 97, 108, 0, 76, 78, 10, 24, 86, - 10, 0, 17, 12, 0, 129, 105, 97, 108, 0, 21, 12, 25, 0, 131, 116, 117, 97, 108, - 0, 81, 106, 10, 21, 115, 10, 23, 124, 10, 0, 4, 44, 0, 130, 110, 117, 97, 108, - 0, 24, 23, 4, 17, 0, 130, 97, 108, 0, 12, 25, 0, 131, 114, 116, 117, 97, 108, - 0, 24, 0, 82, 143, 10, 26, 167, 10, 0, 70, 153, 10, 11, 157, 10, 26, 163, 10, - 0, 129, 108, 100, 0, 22, 0, 129, 108, 100, 0, 129, 108, 100, 0, 18, 44, 0, - 132, 119, 111, 117, 108, 100, 0, 74, 193, 10, 15, 201, 10, 19, 247, 10, 23, - 255, 10, 24, 7, 11, 0, 17, 12, 22, 0, 129, 108, 101, 0, 68, 208, 10, 15, 234, - 10, 0, 21, 0, 68, 217, 10, 21, 224, 10, 0, 19, 0, 129, 108, 101, 108, 0, 4, - 19, 0, 132, 97, 108, 108, 101, 108, 0, 4, 21, 21, 4, 19, 0, 133, 97, 108, 108, - 101, 108, 0, 18, 8, 19, 0, 129, 108, 101, 0, 23, 12, 15, 0, 129, 108, 101, 0, - 7, 8, 11, 6, 22, 0, 129, 108, 101, 0, 8, 22, 28, 16, 0, 129, 108, 102, 0, 12, - 9, 0, 79, 36, 11, 24, 46, 11, 0, 15, 24, 9, 0, 132, 102, 105, 108, 108, 0, 9, - 0, 131, 108, 102, 105, 108, 108, 0, 24, 22, 8, 21, 0, 129, 108, 116, 0, 9, 23, - 4, 8, 21, 10, 0, 133, 97, 116, 101, 102, 117, 108, 0, 68, 89, 11, 15, 106, 11, - 21, 117, 11, 0, 21, 10, 18, 23, 6, 8, 19, 22, 0, 132, 114, 111, 103, 114, 97, - 109, 0, 8, 5, 18, 21, 19, 0, 130, 108, 101, 109, 0, 18, 9, 18, 6, 0, 131, 110, - 102, 111, 114, 109, 0, 68, 166, 11, 7, 206, 11, 8, 215, 11, 10, 58, 12, 12, - 141, 12, 14, 153, 12, 18, 192, 12, 19, 108, 13, 21, 120, 13, 22, 131, 13, 24, - 141, 13, 26, 164, 13, 0, 12, 0, 74, 175, 11, 23, 183, 11, 0, 4, 44, 0, 130, - 97, 105, 110, 0, 81, 190, 11, 21, 198, 11, 0, 18, 6, 0, 130, 97, 105, 110, 0, - 8, 6, 0, 130, 97, 105, 110, 0, 24, 18, 9, 44, 0, 129, 110, 100, 0, 71, 231, - 11, 8, 241, 11, 10, 27, 12, 19, 39, 12, 22, 48, 12, 0, 15, 12, 11, 6, 0, 129, - 114, 101, 110, 0, 87, 248, 11, 26, 17, 12, 0, 72, 255, 11, 26, 7, 12, 0, 5, 0, - 130, 119, 101, 101, 110, 0, 8, 5, 0, 132, 116, 119, 101, 101, 110, 0, 8, 5, 0, - 131, 116, 119, 101, 101, 110, 0, 18, 7, 28, 11, 0, 131, 114, 111, 103, 101, - 110, 0, 4, 11, 44, 0, 129, 112, 101, 110, 0, 18, 18, 11, 6, 0, 131, 115, 101, - 110, 0, 72, 65, 12, 12, 76, 12, 0, 12, 21, 18, 9, 0, 131, 101, 105, 103, 110, - 0, 75, 95, 12, 15, 101, 12, 17, 109, 12, 18, 118, 12, 21, 125, 12, 22, 132, - 12, 0, 23, 0, 129, 110, 103, 0, 15, 4, 0, 131, 105, 103, 110, 0, 21, 4, 8, 15, - 0, 129, 110, 103, 0, 10, 44, 0, 129, 110, 103, 0, 23, 22, 0, 129, 110, 103, 0, - 4, 44, 0, 130, 115, 105, 103, 110, 0, 23, 4, 21, 8, 6, 0, 131, 116, 97, 105, - 110, 0, 75, 160, 12, 12, 169, 12, 0, 12, 23, 0, 131, 104, 105, 110, 107, 0, - 75, 176, 12, 23, 182, 12, 0, 23, 0, 129, 110, 107, 0, 11, 44, 0, 132, 116, - 104, 105, 110, 107, 0, 76, 202, 12, 22, 86, 13, 23, 96, 13, 0, 70, 212, 12, - 22, 225, 12, 23, 251, 12, 0, 12, 22, 8, 7, 0, 133, 99, 105, 115, 105, 111, - 110, 0, 68, 232, 12, 22, 241, 12, 0, 12, 15, 0, 131, 105, 115, 111, 110, 0, 4, - 6, 6, 18, 0, 131, 105, 111, 110, 0, 68, 14, 13, 7, 27, 13, 12, 37, 13, 15, 52, - 13, 17, 64, 13, 22, 76, 13, 0, 21, 8, 5, 4, 0, 132, 114, 97, 116, 105, 111, - 110, 0, 7, 4, 0, 131, 105, 116, 105, 111, 110, 0, 23, 12, 19, 8, 21, 0, 134, - 101, 116, 105, 116, 105, 111, 110, 0, 4, 8, 21, 0, 133, 108, 97, 116, 105, - 111, 110, 0, 6, 24, 9, 0, 133, 110, 99, 116, 105, 111, 110, 0, 18, 19, 0, 131, - 105, 116, 105, 111, 110, 0, 12, 25, 12, 7, 0, 129, 105, 111, 110, 0, 12, 6, 4, - 21, 9, 0, 131, 116, 105, 111, 110, 0, 19, 11, 4, 0, 132, 104, 97, 112, 112, - 101, 110, 0, 23, 24, 8, 21, 0, 131, 116, 117, 114, 110, 0, 10, 12, 11, 23, 0, - 130, 110, 103, 115, 0, 85, 148, 13, 23, 157, 13, 0, 23, 8, 21, 0, 130, 117, - 114, 110, 0, 8, 21, 0, 128, 114, 110, 0, 18, 14, 17, 24, 0, 130, 110, 111, - 119, 110, 0, 71, 185, 13, 17, 196, 13, 26, 205, 13, 0, 8, 24, 22, 19, 0, 131, - 101, 117, 100, 111, 0, 26, 14, 44, 0, 130, 110, 111, 119, 0, 79, 212, 13, 17, - 220, 13, 0, 15, 18, 9, 0, 129, 111, 119, 0, 14, 44, 0, 129, 111, 119, 0, 86, - 234, 13, 24, 244, 13, 0, 4, 11, 21, 8, 19, 0, 129, 112, 115, 0, 18, 18, 15, 0, - 129, 107, 117, 112, 0, 68, 28, 14, 8, 93, 14, 11, 103, 15, 15, 113, 15, 18, - 127, 15, 19, 144, 15, 22, 155, 15, 23, 164, 15, 24, 176, 15, 28, 185, 15, 0, - 76, 38, 14, 15, 48, 14, 24, 82, 14, 0, 15, 12, 16, 12, 22, 0, 130, 97, 114, 0, - 76, 55, 14, 24, 66, 14, 0, 16, 16, 12, 22, 0, 132, 105, 108, 97, 114, 0, 6, - 12, 23, 4, 19, 0, 134, 114, 116, 105, 99, 117, 108, 97, 114, 0, 15, 10, 8, 21, - 0, 131, 117, 108, 97, 114, 0, 68, 124, 14, 7, 132, 14, 11, 145, 14, 12, 203, - 14, 15, 229, 14, 16, 239, 14, 17, 249, 14, 18, 37, 15, 23, 45, 15, 25, 76, 15, - 0, 15, 6, 0, 130, 101, 97, 114, 0, 17, 4, 15, 4, 6, 0, 132, 101, 110, 100, 97, - 114, 0, 74, 152, 14, 23, 163, 14, 0, 12, 8, 11, 0, 133, 105, 103, 104, 101, - 114, 0, 72, 173, 14, 15, 185, 14, 24, 194, 14, 0, 11, 10, 18, 23, 0, 133, 101, - 116, 104, 101, 114, 0, 18, 44, 0, 132, 116, 104, 101, 114, 0, 9, 0, 131, 114, - 116, 104, 101, 114, 0, 75, 210, 14, 15, 218, 14, 0, 23, 44, 0, 130, 101, 105, - 114, 0, 19, 16, 18, 6, 0, 131, 105, 108, 101, 114, 0, 23, 12, 9, 0, 131, 108, - 116, 101, 114, 0, 16, 4, 21, 10, 44, 0, 129, 97, 114, 0, 76, 0, 15, 23, 12, - 15, 0, 10, 10, 8, 5, 0, 132, 105, 110, 110, 101, 114, 0, 76, 19, 15, 22, 28, - 15, 0, 18, 19, 0, 131, 110, 116, 101, 114, 0, 12, 15, 0, 130, 101, 110, 101, - 114, 0, 9, 8, 5, 0, 129, 114, 101, 0, 75, 52, 15, 24, 62, 15, 0, 18, 17, 4, 0, - 131, 116, 104, 101, 114, 0, 19, 18, 16, 6, 0, 134, 111, 109, 112, 117, 116, - 101, 114, 0, 72, 83, 15, 26, 94, 15, 0, 8, 21, 8, 11, 26, 0, 131, 118, 101, - 114, 0, 18, 11, 0, 130, 101, 118, 101, 114, 0, 8, 23, 18, 44, 0, 130, 104, - 101, 114, 0, 4, 24, 6, 12, 23, 21, 4, 19, 0, 130, 108, 97, 114, 0, 23, 4, 21, - 8, 23, 17, 12, 0, 135, 116, 101, 114, 97, 116, 111, 114, 0, 23, 15, 15, 24, - 17, 0, 130, 112, 116, 114, 0, 4, 8, 28, 44, 0, 129, 114, 115, 0, 18, 4, 21, 8, - 19, 18, 0, 130, 116, 111, 114, 0, 6, 18, 44, 0, 129, 99, 117, 114, 0, 8, 25, - 8, 44, 0, 129, 114, 121, 0, 68, 219, 15, 8, 3, 16, 10, 147, 16, 19, 158, 16, - 21, 170, 16, 22, 181, 16, 23, 77, 17, 24, 85, 17, 0, 75, 229, 15, 19, 240, 15, - 28, 250, 15, 0, 19, 21, 8, 19, 0, 131, 104, 97, 112, 115, 0, 11, 21, 8, 19, 0, - 130, 97, 112, 115, 0, 26, 15, 4, 0, 130, 97, 121, 115, 0, 68, 19, 16, 6, 42, - 16, 12, 53, 16, 15, 129, 16, 22, 136, 16, 0, 71, 26, 16, 14, 34, 16, 0, 12, - 44, 0, 130, 101, 97, 115, 0, 23, 0, 131, 97, 107, 101, 115, 0, 8, 7, 17, 12, - 0, 131, 105, 99, 101, 115, 0, 70, 63, 16, 21, 102, 16, 23, 117, 16, 0, 72, 70, - 16, 12, 80, 16, 0, 7, 17, 12, 0, 132, 105, 99, 101, 115, 0, 71, 87, 16, 23, - 94, 16, 0, 17, 12, 0, 130, 101, 115, 0, 21, 8, 25, 0, 130, 101, 115, 0, 18, - 22, 8, 6, 6, 4, 0, 132, 115, 111, 114, 105, 101, 115, 0, 15, 12, 5, 4, 0, 131, - 105, 116, 105, 101, 115, 0, 4, 9, 0, 129, 115, 101, 0, 18, 11, 6, 44, 0, 130, - 111, 115, 101, 115, 0, 12, 17, 11, 23, 0, 131, 105, 110, 103, 115, 0, 4, 8, - 11, 21, 8, 19, 0, 131, 97, 112, 115, 0, 8, 4, 28, 44, 0, 131, 101, 97, 114, - 115, 0, 68, 191, 16, 8, 203, 16, 18, 66, 17, 0, 21, 4, 5, 16, 8, 0, 130, 114, - 97, 115, 115, 0, 70, 216, 16, 17, 240, 16, 21, 13, 17, 22, 42, 17, 0, 70, 223, - 16, 24, 232, 16, 0, 18, 21, 19, 0, 131, 101, 115, 115, 0, 22, 0, 130, 99, 101, - 115, 115, 0, 76, 247, 16, 22, 3, 17, 0, 22, 22, 24, 5, 0, 133, 105, 110, 101, - 115, 115, 0, 24, 5, 0, 131, 105, 110, 101, 115, 115, 0, 19, 0, 85, 22, 17, 24, - 33, 17, 0, 24, 22, 0, 133, 112, 112, 114, 101, 115, 115, 0, 22, 0, 131, 112, - 114, 101, 115, 115, 0, 70, 49, 17, 18, 58, 17, 0, 6, 24, 22, 0, 131, 101, 115, - 115, 0, 19, 0, 130, 115, 101, 115, 115, 0, 21, 6, 6, 4, 0, 132, 114, 111, 115, - 115, 0, 21, 12, 9, 0, 129, 115, 116, 0, 82, 92, 17, 22, 106, 17, 0, 15, 18, - 16, 18, 17, 4, 0, 132, 97, 108, 111, 117, 115, 0, 17, 8, 6, 17, 18, 6, 0, 133, - 115, 101, 110, 115, 117, 115, 0, 68, 158, 17, 8, 188, 17, 10, 217, 17, 11, - 227, 17, 12, 25, 18, 15, 36, 18, 16, 47, 18, 17, 59, 18, 18, 151, 19, 19, 189, - 19, 22, 217, 19, 24, 107, 20, 0, 85, 165, 17, 26, 176, 17, 0, 8, 19, 8, 22, 0, - 131, 97, 114, 97, 116, 0, 11, 8, 16, 18, 22, 0, 131, 119, 104, 97, 116, 0, 68, - 195, 17, 17, 204, 17, 0, 21, 10, 44, 0, 130, 101, 97, 116, 0, 16, 17, 21, 8, - 25, 18, 10, 0, 130, 101, 110, 116, 0, 11, 24, 4, 6, 0, 130, 103, 104, 116, 0, - 71, 237, 17, 10, 244, 17, 12, 14, 18, 0, 12, 26, 0, 129, 116, 104, 0, 81, 251, - 17, 24, 2, 18, 0, 8, 15, 0, 129, 116, 104, 0, 18, 21, 11, 23, 0, 133, 111, - 117, 103, 104, 116, 0, 10, 17, 18, 23, 0, 131, 105, 103, 104, 116, 0, 23, 24, - 18, 5, 4, 0, 129, 32, 105, 116, 0, 22, 24, 8, 21, 0, 131, 115, 117, 108, 116, - 0, 4, 23, 21, 18, 19, 16, 12, 0, 129, 110, 116, 0, 68, 72, 18, 8, 128, 18, 21, - 132, 19, 22, 143, 19, 0, 76, 85, 18, 17, 96, 18, 21, 107, 18, 23, 117, 18, 0, - 19, 12, 6, 8, 21, 0, 130, 101, 110, 116, 0, 12, 16, 18, 21, 19, 0, 130, 101, - 110, 116, 0, 4, 19, 19, 4, 0, 130, 101, 110, 116, 0, 8, 19, 16, 18, 6, 0, 130, - 101, 110, 116, 0, 76, 144, 18, 16, 177, 18, 21, 21, 19, 25, 111, 19, 29, 121, - 19, 0, 70, 151, 18, 19, 164, 18, 0, 8, 9, 9, 8, 0, 133, 105, 99, 105, 101, - 110, 116, 0, 8, 6, 8, 21, 0, 133, 105, 112, 105, 101, 110, 116, 0, 72, 190, - 18, 17, 202, 18, 21, 235, 18, 23, 10, 19, 0, 25, 18, 10, 0, 131, 114, 110, - 109, 101, 110, 116, 0, 72, 209, 18, 21, 221, 18, 0, 25, 18, 10, 0, 132, 114, - 110, 109, 101, 110, 116, 0, 18, 25, 18, 10, 0, 134, 101, 114, 110, 109, 101, - 110, 116, 0, 72, 242, 18, 18, 253, 18, 0, 25, 18, 10, 0, 131, 110, 109, 101, - 110, 116, 0, 25, 18, 10, 0, 133, 101, 114, 110, 109, 101, 110, 116, 0, 4, 23, - 22, 0, 131, 101, 109, 101, 110, 116, 0, 68, 34, 19, 8, 45, 19, 9, 57, 19, 21, - 68, 19, 0, 19, 4, 0, 132, 112, 97, 114, 101, 110, 116, 0, 9, 12, 7, 0, 132, - 102, 101, 114, 101, 110, 116, 0, 9, 12, 7, 0, 131, 101, 114, 101, 110, 116, 0, - 68, 75, 19, 8, 99, 19, 0, 19, 0, 68, 84, 19, 19, 92, 19, 0, 133, 112, 97, 114, - 101, 110, 116, 0, 4, 0, 131, 101, 110, 116, 0, 9, 12, 7, 0, 133, 102, 101, - 114, 101, 110, 116, 0, 8, 15, 8, 21, 0, 130, 97, 110, 116, 0, 12, 17, 10, 18, - 6, 0, 130, 97, 110, 116, 0, 8, 9, 9, 12, 7, 0, 129, 101, 110, 116, 0, 18, 6, - 0, 130, 110, 115, 116, 0, 81, 161, 19, 21, 171, 19, 22, 180, 19, 0, 7, 12, 7, - 0, 130, 32, 110, 111, 116, 0, 19, 8, 21, 0, 130, 111, 114, 116, 0, 16, 15, 4, - 0, 130, 111, 115, 116, 0, 72, 196, 19, 28, 207, 19, 0, 12, 6, 8, 21, 0, 131, - 101, 105, 112, 116, 0, 6, 17, 8, 0, 130, 114, 121, 112, 116, 0, 72, 236, 19, - 10, 21, 20, 12, 30, 20, 16, 59, 20, 17, 69, 20, 24, 96, 20, 0, 74, 243, 19, - 21, 10, 20, 0, 76, 250, 19, 24, 2, 20, 0, 11, 0, 130, 104, 101, 115, 116, 0, - 22, 0, 130, 103, 101, 115, 116, 0, 23, 17, 12, 0, 131, 101, 114, 101, 115, - 116, 0, 21, 4, 15, 0, 129, 101, 115, 116, 0, 73, 37, 20, 17, 49, 20, 0, 8, 17, - 4, 16, 0, 132, 105, 102, 101, 115, 116, 0, 4, 10, 4, 0, 131, 105, 110, 115, - 116, 0, 18, 15, 4, 0, 131, 109, 111, 115, 116, 0, 68, 76, 20, 17, 87, 20, 0, - 12, 10, 4, 0, 132, 97, 105, 110, 115, 116, 0, 12, 4, 10, 4, 0, 130, 115, 116, - 0, 13, 4, 44, 0, 131, 100, 106, 117, 115, 116, 0, 70, 120, 20, 18, 144, 20, - 19, 168, 20, 23, 191, 20, 0, 72, 127, 20, 21, 137, 20, 0, 6, 27, 8, 0, 132, - 101, 99, 117, 116, 0, 12, 6, 0, 128, 105, 116, 0, 68, 151, 20, 5, 160, 20, 0, - 5, 0, 132, 97, 98, 111, 117, 116, 0, 5, 4, 0, 131, 111, 117, 116, 0, 87, 175, - 20, 24, 183, 20, 0, 17, 12, 0, 131, 112, 117, 116, 0, 18, 0, 130, 116, 112, - 117, 116, 0, 19, 24, 18, 0, 131, 116, 112, 117, 116, 0, 23, 18, 5, 4, 0, 129, - 117, 116, 0, 72, 217, 20, 12, 253, 20, 0, 68, 224, 20, 12, 231, 20, 0, 11, 44, - 0, 129, 118, 101, 0, 70, 238, 20, 8, 246, 20, 0, 8, 21, 0, 130, 101, 105, 118, - 0, 6, 8, 21, 0, 129, 118, 0, 8, 11, 6, 4, 44, 0, 130, 105, 101, 118, 0, 76, - 15, 21, 17, 25, 21, 0, 8, 25, 8, 21, 0, 130, 105, 101, 119, 0, 18, 14, 44, 0, - 130, 110, 111, 119, 0, 70, 59, 21, 8, 118, 21, 11, 128, 21, 15, 146, 21, 17, - 87, 22, 21, 114, 22, 22, 12, 23, 23, 39, 23, 0, 68, 72, 21, 8, 84, 21, 12, 95, - 21, 19, 106, 21, 0, 21, 6, 18, 19, 28, 11, 0, 130, 105, 115, 121, 0, 24, 20, - 8, 21, 9, 0, 129, 110, 99, 121, 0, 21, 6, 18, 19, 28, 11, 0, 129, 115, 121, 0, - 24, 21, 14, 17, 4, 5, 0, 129, 116, 99, 121, 0, 23, 9, 4, 22, 0, 130, 101, 116, - 121, 0, 6, 21, 4, 21, 12, 8, 11, 0, 135, 105, 101, 114, 97, 114, 99, 104, 121, - 0, 68, 165, 21, 11, 232, 21, 14, 242, 21, 15, 250, 21, 18, 66, 22, 21, 76, 22, - 0, 69, 184, 21, 8, 193, 21, 15, 199, 21, 17, 208, 21, 21, 215, 21, 24, 224, - 21, 0, 18, 21, 19, 0, 129, 98, 108, 121, 0, 21, 0, 128, 108, 121, 0, 8, 21, 0, - 131, 97, 108, 108, 121, 0, 12, 9, 0, 128, 108, 121, 0, 8, 17, 8, 10, 0, 128, - 108, 121, 0, 23, 6, 4, 0, 128, 108, 121, 0, 10, 12, 15, 22, 0, 129, 116, 108, - 121, 0, 12, 15, 0, 129, 101, 108, 121, 0, 68, 4, 22, 5, 47, 22, 8, 56, 22, 0, - 86, 11, 22, 23, 35, 22, 0, 24, 0, 108, 20, 22, 22, 27, 22, 0, 131, 117, 97, - 108, 108, 121, 0, 24, 0, 132, 97, 108, 108, 121, 0, 24, 6, 4, 0, 133, 116, - 117, 97, 108, 108, 121, 0, 4, 5, 18, 21, 19, 0, 129, 121, 0, 4, 21, 0, 132, - 101, 97, 108, 108, 121, 0, 16, 18, 17, 4, 0, 130, 97, 108, 121, 0, 4, 16, 12, - 21, 19, 0, 129, 105, 108, 121, 0, 72, 94, 22, 19, 103, 22, 0, 18, 16, 44, 0, - 130, 110, 101, 121, 0, 4, 16, 18, 6, 0, 131, 112, 97, 110, 121, 0, 68, 127, - 22, 8, 231, 22, 18, 240, 22, 23, 253, 22, 0, 69, 143, 22, 12, 152, 22, 15, - 165, 22, 16, 193, 22, 22, 202, 22, 0, 12, 15, 0, 130, 114, 97, 114, 121, 0, - 15, 15, 12, 27, 24, 4, 0, 132, 105, 97, 114, 121, 0, 76, 172, 22, 15, 182, 22, - 0, 27, 24, 4, 0, 130, 105, 97, 114, 121, 0, 12, 27, 24, 4, 0, 131, 105, 97, - 114, 121, 0, 24, 22, 0, 130, 109, 97, 114, 121, 0, 8, 6, 0, 70, 212, 22, 8, - 223, 22, 0, 8, 17, 0, 133, 101, 115, 115, 97, 114, 121, 0, 17, 0, 130, 115, - 97, 114, 121, 0, 19, 18, 21, 19, 0, 128, 116, 121, 0, 10, 4, 23, 4, 6, 0, 132, - 101, 103, 111, 114, 121, 0, 17, 24, 6, 18, 44, 0, 134, 99, 111, 117, 110, 116, - 114, 121, 0, 4, 0, 85, 21, 23, 26, 32, 23, 0, 6, 18, 19, 28, 11, 0, 130, 105, - 115, 121, 0, 15, 4, 0, 129, 121, 115, 0, 73, 49, 23, 15, 57, 23, 21, 66, 23, - 0, 4, 22, 0, 129, 101, 116, 121, 0, 12, 5, 4, 0, 129, 105, 116, 121, 0, 19, 8, - 18, 21, 19, 0, 132, 112, 101, 114, 116, 121, 0}; - diff --git a/users/gourdo1/autocorrect/autocorrection_data.h (large) b/users/gourdo1/autocorrect/autocorrection_data.h (large) deleted file mode 100644 index 66518201e2..0000000000 --- a/users/gourdo1/autocorrect/autocorrection_data.h (large) +++ /dev/null @@ -1,722 +0,0 @@ -// Generated code. - -// Autocorrection dictionary (400 entries): -// :acheiv -> achiev -// :agian -> again -// :agred -> agreed -// :ajust -> adjust -// :alot: -> a lot -// :andteh -> and the -// :andthe -> and the -// :anual -> annual -// :asign -> assign -// :aslo: -> also -// :asthe -> as the -// :atthe -> at the -// :casue -> cause -// :choses -> chooses -// :eveyr -> every -// :foudn -> found -// :gaurd -> guard -// :goign -> going -// :gonig -> going -// :graet -> great -// :grammer -> grammar -// :guage -> gauge -// :haev -> have -// :hapen -> happen -// :htere -> there -// :htikn -> think -// :htink -> think -// :hwihc -> which -// :hwile -> while -// :idaes -> ideas -// :jstu: -> just -// :jsut: -> just -// :knwo -> know -// :konw -> know -// :kwno -> know -// :moeny -> money -// :ocuntry -> country -// :ocur -> occur -// :olther -> other -// :otehr -> other -// :owudl -> would -// :rference -> reference -// :sicne -> since -// :socre -> score -// :szie -> size -// :the:the: -> the -// :theri -> their -// :thier -> their -// :thsoe -> those -// :tothe -> to the -// :ture -> true -// :turth -> truth -// :uesd: -> used -// :usally -> usually -// :yaers -> years -// :yeasr -> years -// abbout -> about -// aberation -> aberration -// abilties -> abilities -// abilty -> ability -// abotu -> about -// abouta -> about a -// aboutit -> about it -// aboutthe -> about the -// abvove -> above -// accesories -> accessories -// accomodate -> accommodate -// accross -> across -// acommodate -> accommodate -// acomplish -> accomplish -// actualy -> actually -// acurate -> accurate -// acutally -> actually -// addtion -> addition -// adviced -> advised -// againnst -> against -// aganist -> against -// aggreed -> agreed -// agianst -> against -// ahppn -> happen -// aledge -> allege -// alledge -> allege -// allign -> align -// almsot -> almost -// alomst -> almost -// alwasy -> always -// alwyas -> always -// amature -> amateur -// anohter -> another -// anomolous -> anomalous -// anomoly -> anomaly -// anytying -> anything -// aparent -> apparent -// aparrent -> apparent -// apparant -> apparent -// apparrent -> apparent -// aquire -> acquire -// aroud -> around -// arround -> around -// arund -> around -// asthetic -> aesthetic -// auxilary -> auxiliary -// auxillary -> auxiliary -// auxilliary -> auxiliary -// availabe -> available -// availaible -> available -// availalbe -> available -// availble -> available -// availiable -> available -// avalable -> available -// avaliable -> available -// avilable -> available -// baceause -> because -// bandwith -> bandwidth -// bankrupcy -> bankruptcy -// baout -> about -// beacuse -> because -// becasue -> because -// beccause -> because -// becouse -> because -// becuase -> because -// bedore -> before -// beeing -> being -// befoer -> before -// begginer -> beginner -// beleif -> belief -// beleive -> believe -// belive -> believe -// beteen -> between -// beween -> between -// bewteen -> between -// breif -> brief -// burried -> buried -// busness -> business -// bussiness -> business -// cacheing -> caching -// calander -> calendar -// caluclate -> calculate -// caluculate -> calculate -// calulate -> calculate -// catagory -> category -// cauhgt -> caught -// ceratin -> certain -// certian -> certain -// cheif -> chief -// chekc -> check -// childen -> children -// chnage -> change -// choosen -> chosen -// cieling -> ceiling -// circut -> circuit -// claer -> clear -// clasic -> classic -// cmoputer -> computer -// coform -> conform -// cognizent -> cognizant -// collegue -> colleague -// comapny -> company -// comittee -> committee -// comming: -> coming -// commitee -> committee -// competance -> competence -// competant -> competent -// complier -> compiler -// concensus -> consensus -// considerd -> considered -// contian -> contain -// copywrite: -> copyright -// cosnt -> const -// coudl -> could -// dervied -> derived -// desicion -> decision -// didnot -> did not -// diferent -> different -// diferrent -> different -// differnt -> different -// diffrent -> different -// divison -> division -// doulbe -> double -// dyanmic -> dynamic -// effecient -> efficient -// elasped -> elapsed -// eligable -> eligible -// elpased -> elapsed -// embarass -> embarrass -// embeded -> embedded -// encypt -> encrypt -// excecut -> execut -// excercise -> exercise -// failse -> false -// fales -> false -// fasle -> false -// feild -> field -// finaly -> finally -// firend -> friend -// firts -> first -// fitler -> filter -// flase -> false -// follwo -> follow -// foriegn -> foreign -// foward -> forward -// fraciton -> fraction -// freind -> friend -// frequecy -> frequency -// fromthe -> from the -// fucntion -> function -// fufill -> fulfill -// fullfill -> fulfill -// futher -> further -// ganerate -> generate -// garantee -> guarantee -// gaurantee -> guarantee -// generaly -> generally -// govement -> government -// govenment -> government -// goverment -> government -// governmnet -> government -// govorment -> government -// govornment -> government -// greatful -> grateful -// guaratee -> guarantee -// heigher -> higher -// heigth -> height -// heirarchy -> hierarchy -// higest -> highest -// howver -> however -// hydogen -> hydrogen -// hygeine -> hygiene -// hypocracy -> hypocrisy -// hypocrasy -> hypocrisy -// hypocricy -> hypocrisy -// hypocrit: -> hypocrite -// iamge -> image -// importamt -> important -// inclued -> include -// indeces -> indices -// indecies -> indices -// indicies -> indices -// inital -> initial -// insted -> instead -// interator -> iterator -// intput -> input -// intrest -> interest -// invliad -> invalid -// laguage -> language -// largst -> largest -// learnign -> learning -// lenght -> length -// levle -> level -// liasion -> liaison -// libary -> library -// likly -> likely -// lisense -> license -// listner -> listener -// littel -> little -// looses: -> loses -// looup -> lookup -// macthing -> matching -// maintence -> maintenance -// manefist -> manifest -// mesage -> message -// morgage -> mortgage -// mysefl -> myself -// namesapce -> namespace -// namespcae -> namespace -// naturual -> natural -// neccesary -> necessary -// necesary -> necessary -// nulltpr -> nullptr -// occassion -> occasion -// occured -> occurred -// operaotr -> operator -// ouptut -> output -// ouput -> output -// overide -> override -// ovveride -> override -// pallete -> palette -// paralel -> parallel -// parralel -> parallel -// parrallel -> parallel -// particualr -> particular -// paticular -> particular -// peaple -> people -// peice -> piece -// peolpe -> people -// peopel -> people -// perhasp -> perhaps -// perheaps -> perhaps -// perhpas -> perhaps -// perphas -> perhaps -// persue -> pursue -// poeople -> people -// poeple -> people -// poitner -> pointer -// posess -> possess -// postion -> position -// preiod -> period -// primarly -> primarily -// priviledge -> privilege -// privte -> private -// probablly -> probably -// probaly -> probably -// probelm -> problem -// proccess -> process -// proeprty -> property -// prominant -> prominent -// proove -> prove -// propery -> property -// propogate -> propagate -// psuedo -> pseudo -// raelly -> really -// realtion -> relation -// realy -> really -// reasearch -> research -// receiev -> receiv -// recepient -> recipient -// reciept -> receipt -// reciev -> receiv -// recipiant -> recipient -// recrod -> record -// recuring -> recurring -// referece -> reference -// refered -> referred -// regluar -> regular -// relaly -> really -// releated -> related -// relevent -> relevant -// repitition -> repetition -// reponse -> response -// reprot -> report -// resutl -> result -// retrun -> return -// retun -> return -// reuslt -> result -// reutrn -> return -// reveiw -> review -// saftey -> safety -// safty -> safety -// satisifed -> satisfied -// scheduel -> schedule -// seperat -> separat -// sequnce -> sequence -// shoudl -> should -// similiar -> similar -// simmilar -> similar -// singed -> signed -// singel -> single -// slighly -> slightly -// somehwat -> somewhat -// spectogram -> spectrogram -// statment -> statement -// stirng -> string -// stregth -> strength -// strengh -> strength -// strign -> string -// succsess -> success -// sucess -> success -// sugest -> suggest -// sumary -> summary -// supress -> suppress -// surpress -> suppress -// swithc -> switch -// swtich -> switch -// symetric -> symmetric -// teamplate -> template -// tempalte -> template -// theese -> these -// therfore -> therefore -// thign -> thing -// thigsn -> things -// thikn -> think -// thiunk -> think -// thnigs -> things -// thresold -> threshold -// throught -> thought -// tihkn -> think -// tkaes -> takes -// todya -> today -// toghether -> together -// tolerence -> tolerance -// tongiht -> tonight -// tranpose -> transpose -// typcial -> typical -// udpate -> update -// unkown -> unknown -// unqiue -> unique -// ususally -> usually -// verticies -> vertices -// virutal -> virtual -// vitual -> virtual -// whcih -> which -// whereever -> wherever -// wherre -> where -// whihc -> which -// whlch -> which -// widht -> width -// wierd -> weird -// wihch -> which -// woudl -> would -// yeild -> yield - -#define AUTOCORRECTION_MIN_LENGTH 5 // "abotu" -#define AUTOCORRECTION_MAX_LENGTH 10 // "auxilliary" - -static const uint8_t autocorrection_data[5967] PROGMEM = {108, 67, 0, 4, 212, 0, - 6, 236, 0, 7, 100, 1, 8, 15, 3, 9, 169, 8, 10, 204, 8, 11, 68, 9, 12, 246, 9, - 14, 0, 10, 15, 28, 10, 16, 79, 11, 17, 129, 11, 18, 175, 13, 19, 227, 13, 21, - 253, 13, 22, 194, 15, 23, 121, 17, 24, 201, 20, 25, 210, 20, 26, 8, 21, 28, - 34, 21, 0, 71, 89, 0, 8, 99, 0, 10, 130, 0, 18, 142, 0, 22, 152, 0, 23, 163, - 0, 24, 202, 0, 0, 22, 8, 24, 44, 0, 131, 115, 101, 100, 0, 75, 106, 0, 23, - 115, 0, 0, 23, 44, 8, 11, 23, 44, 0, 132, 0, 12, 21, 26, 28, 19, 18, 6, 0, - 133, 114, 105, 103, 104, 116, 0, 17, 12, 16, 16, 18, 6, 0, 132, 105, 110, 103, - 0, 15, 22, 4, 44, 0, 131, 108, 115, 111, 0, 8, 22, 18, 18, 15, 0, 132, 115, - 101, 115, 0, 76, 173, 0, 18, 183, 0, 24, 193, 0, 0, 21, 6, 18, 19, 28, 11, 0, - 128, 101, 0, 15, 4, 44, 0, 131, 32, 108, 111, 116, 0, 22, 13, 44, 0, 131, 117, - 115, 116, 0, 23, 22, 13, 44, 0, 131, 117, 115, 116, 0, 87, 219, 0, 28, 228, 0, - 0, 24, 18, 5, 4, 0, 128, 32, 97, 0, 7, 18, 23, 0, 129, 97, 121, 0, 75, 246, 0, - 12, 28, 1, 14, 92, 1, 0, 76, 253, 0, 23, 20, 1, 0, 75, 4, 1, 26, 10, 1, 0, 26, - 0, 129, 99, 104, 0, 11, 44, 0, 132, 119, 104, 105, 99, 104, 0, 12, 26, 22, 0, - 129, 99, 104, 0, 80, 41, 1, 21, 53, 1, 22, 67, 1, 23, 76, 1, 0, 17, 4, 28, 7, - 0, 132, 110, 97, 109, 105, 99, 0, 23, 8, 16, 28, 22, 0, 132, 109, 101, 116, - 114, 105, 99, 0, 4, 15, 6, 0, 129, 115, 105, 99, 0, 8, 11, 23, 22, 4, 0, 134, - 101, 115, 116, 104, 101, 116, 105, 99, 0, 8, 11, 6, 0, 129, 99, 107, 0, 68, - 122, 1, 8, 134, 1, 15, 84, 2, 17, 124, 2, 18, 180, 2, 21, 207, 2, 24, 7, 3, 0, - 12, 15, 25, 17, 12, 0, 131, 97, 108, 105, 100, 0, 70, 168, 1, 7, 178, 1, 8, - 188, 1, 9, 199, 1, 10, 212, 1, 12, 222, 1, 19, 248, 1, 21, 3, 2, 22, 38, 2, - 23, 50, 2, 24, 75, 2, 0, 12, 25, 7, 4, 0, 130, 115, 101, 100, 0, 8, 5, 16, 8, - 0, 129, 100, 101, 100, 0, 21, 10, 10, 4, 0, 132, 114, 101, 101, 100, 0, 12, - 22, 12, 23, 4, 22, 0, 131, 102, 105, 101, 100, 0, 17, 12, 22, 0, 131, 103, - 110, 101, 100, 0, 85, 229, 1, 25, 238, 1, 0, 21, 24, 5, 0, 131, 105, 101, 100, - 0, 21, 8, 7, 0, 131, 105, 118, 101, 100, 0, 22, 4, 15, 8, 0, 131, 112, 115, - 101, 100, 0, 72, 13, 2, 10, 22, 2, 24, 29, 2, 0, 9, 8, 21, 0, 129, 114, 101, - 100, 0, 4, 44, 0, 128, 101, 100, 0, 6, 6, 18, 0, 129, 114, 101, 100, 0, 4, 19, - 15, 8, 0, 132, 97, 112, 115, 101, 100, 0, 68, 57, 2, 22, 68, 2, 0, 8, 15, 8, - 21, 0, 132, 97, 116, 101, 100, 0, 17, 12, 0, 128, 97, 100, 0, 15, 6, 17, 12, - 0, 129, 100, 101, 0, 76, 91, 2, 18, 112, 2, 0, 8, 0, 73, 100, 2, 28, 106, 2, - 0, 131, 105, 101, 108, 100, 0, 131, 105, 101, 108, 100, 0, 22, 8, 21, 11, 23, - 0, 130, 104, 111, 108, 100, 0, 72, 134, 2, 12, 145, 2, 24, 155, 2, 0, 21, 12, - 9, 0, 132, 114, 105, 101, 110, 100, 0, 8, 21, 9, 0, 131, 105, 101, 110, 100, - 0, 82, 162, 2, 21, 172, 2, 0, 21, 21, 4, 0, 132, 111, 117, 110, 100, 0, 4, 0, - 130, 111, 117, 110, 100, 0, 76, 187, 2, 21, 198, 2, 0, 8, 21, 19, 0, 132, 101, - 114, 105, 111, 100, 0, 6, 8, 21, 0, 130, 111, 114, 100, 0, 68, 217, 2, 8, 228, - 2, 24, 253, 2, 0, 26, 18, 9, 0, 131, 114, 119, 97, 114, 100, 0, 71, 235, 2, - 12, 245, 2, 0, 12, 22, 17, 18, 6, 0, 128, 101, 100, 0, 26, 0, 131, 101, 105, - 114, 100, 0, 4, 10, 44, 0, 131, 117, 97, 114, 100, 0, 18, 21, 4, 0, 128, 110, - 100, 0, 68, 67, 3, 5, 80, 3, 6, 123, 3, 7, 251, 3, 8, 23, 4, 10, 107, 4, 11, - 227, 4, 12, 52, 5, 15, 61, 5, 17, 0, 6, 18, 27, 6, 19, 37, 6, 21, 47, 6, 22, - 156, 6, 23, 82, 7, 24, 45, 8, 25, 115, 8, 0, 6, 19, 22, 8, 16, 4, 17, 0, 130, - 97, 99, 101, 0, 68, 87, 3, 15, 97, 3, 0, 15, 12, 4, 25, 4, 0, 128, 108, 101, - 0, 68, 104, 3, 24, 115, 3, 0, 15, 12, 4, 25, 4, 0, 130, 98, 108, 101, 0, 18, - 7, 0, 130, 98, 108, 101, 0, 72, 136, 3, 12, 147, 3, 17, 156, 3, 19, 238, 3, 0, - 21, 8, 9, 8, 21, 0, 129, 110, 99, 101, 0, 8, 19, 0, 131, 105, 101, 99, 101, 0, - 68, 166, 3, 8, 179, 3, 24, 228, 3, 0, 23, 8, 19, 16, 18, 6, 0, 131, 101, 110, - 99, 101, 0, 85, 186, 3, 23, 217, 3, 0, 8, 0, 73, 195, 3, 15, 208, 3, 0, 21, - 44, 0, 134, 101, 102, 101, 114, 101, 110, 99, 101, 0, 18, 23, 0, 131, 97, 110, - 99, 101, 0, 17, 12, 4, 16, 0, 129, 97, 110, 99, 101, 0, 20, 8, 22, 0, 130, - 101, 110, 99, 101, 0, 4, 22, 8, 16, 4, 17, 0, 131, 112, 97, 99, 101, 0, 12, - 21, 8, 25, 0, 82, 7, 4, 25, 13, 4, 0, 130, 114, 105, 100, 101, 0, 18, 0, 133, - 101, 114, 114, 105, 100, 101, 0, 23, 0, 68, 38, 4, 12, 49, 4, 17, 59, 4, 23, - 94, 4, 0, 21, 4, 24, 10, 0, 130, 110, 116, 101, 101, 0, 16, 16, 18, 6, 0, 129, - 116, 101, 101, 0, 4, 21, 0, 68, 69, 4, 24, 81, 4, 0, 10, 0, 134, 117, 97, 114, - 97, 110, 116, 101, 101, 0, 4, 10, 0, 135, 117, 97, 114, 97, 110, 116, 101, - 101, 0, 12, 16, 18, 6, 0, 132, 109, 105, 116, 116, 101, 101, 0, 68, 117, 4, 7, - 184, 4, 16, 218, 4, 0, 74, 130, 4, 17, 141, 4, 22, 150, 4, 24, 159, 4, 0, 21, - 18, 16, 0, 131, 116, 103, 97, 103, 101, 0, 11, 6, 0, 131, 97, 110, 103, 101, - 0, 8, 16, 0, 130, 115, 97, 103, 101, 0, 10, 0, 108, 168, 4, 4, 174, 4, 0, 131, - 97, 117, 103, 101, 0, 15, 0, 132, 110, 103, 117, 97, 103, 101, 0, 8, 15, 0, - 68, 197, 4, 12, 203, 4, 15, 212, 4, 0, 131, 108, 101, 103, 101, 0, 25, 12, 21, - 19, 0, 130, 103, 101, 0, 4, 0, 130, 103, 101, 0, 4, 12, 0, 131, 109, 97, 103, - 101, 0, 23, 0, 71, 245, 4, 16, 255, 4, 18, 9, 5, 22, 18, 5, 23, 27, 5, 0, 17, - 4, 44, 0, 130, 32, 116, 104, 101, 0, 18, 21, 9, 0, 130, 32, 116, 104, 101, 0, - 23, 44, 0, 130, 32, 116, 104, 101, 0, 4, 44, 0, 130, 32, 116, 104, 101, 0, 68, - 34, 5, 24, 42, 5, 0, 44, 0, 130, 32, 116, 104, 101, 0, 18, 5, 4, 0, 130, 32, - 116, 104, 101, 0, 29, 22, 44, 0, 130, 105, 122, 101, 0, 69, 77, 5, 12, 190, 5, - 19, 201, 5, 22, 241, 5, 25, 249, 5, 0, 68, 87, 5, 12, 167, 5, 15, 179, 5, 0, - 74, 97, 5, 12, 107, 5, 15, 137, 5, 0, 12, 15, 8, 0, 131, 105, 98, 108, 101, 0, - 15, 0, 68, 116, 5, 12, 127, 5, 0, 25, 4, 0, 133, 105, 108, 97, 98, 108, 101, - 0, 4, 25, 4, 0, 132, 97, 98, 108, 101, 0, 68, 144, 5, 12, 155, 5, 0, 25, 4, 0, - 132, 105, 108, 97, 98, 108, 101, 0, 25, 4, 0, 133, 97, 105, 108, 97, 98, 108, - 101, 0, 4, 15, 12, 4, 25, 4, 0, 131, 98, 108, 101, 0, 12, 4, 25, 4, 0, 130, - 97, 98, 108, 101, 0, 26, 11, 44, 0, 132, 119, 104, 105, 108, 101, 0, 68, 211, - 5, 8, 220, 5, 18, 230, 5, 0, 8, 19, 0, 131, 111, 112, 108, 101, 0, 18, 19, 0, - 132, 101, 111, 112, 108, 101, 0, 8, 18, 19, 0, 133, 101, 111, 112, 108, 101, - 0, 4, 9, 0, 130, 108, 115, 101, 0, 8, 15, 0, 129, 101, 108, 0, 70, 7, 6, 12, - 16, 6, 0, 12, 22, 44, 0, 130, 110, 99, 101, 0, 8, 10, 28, 11, 0, 131, 105, - 101, 110, 101, 0, 22, 11, 23, 44, 0, 130, 111, 115, 101, 0, 15, 18, 8, 19, 0, - 130, 112, 108, 101, 0, 70, 66, 6, 8, 76, 6, 12, 87, 6, 18, 99, 6, 21, 127, 6, - 24, 134, 6, 0, 18, 22, 44, 0, 131, 99, 111, 114, 101, 0, 23, 11, 44, 0, 132, - 116, 104, 101, 114, 101, 0, 24, 20, 4, 0, 132, 99, 113, 117, 105, 114, 101, 0, - 71, 106, 6, 9, 115, 6, 0, 8, 5, 0, 131, 102, 111, 114, 101, 0, 21, 8, 11, 23, - 0, 131, 101, 102, 111, 114, 101, 0, 8, 11, 26, 0, 129, 101, 0, 23, 0, 108, - 143, 6, 4, 148, 6, 0, 130, 114, 117, 101, 0, 16, 4, 0, 130, 101, 117, 114, 0, - 68, 178, 6, 8, 203, 6, 12, 211, 6, 15, 226, 6, 17, 235, 6, 18, 9, 7, 24, 22, - 7, 0, 79, 185, 6, 24, 193, 6, 0, 9, 0, 131, 97, 108, 115, 101, 0, 6, 8, 5, 0, - 131, 97, 117, 115, 101, 0, 8, 11, 23, 0, 130, 115, 101, 0, 6, 21, 8, 6, 27, 8, - 0, 134, 101, 114, 99, 105, 115, 101, 0, 12, 4, 9, 0, 131, 108, 115, 101, 0, - 72, 242, 6, 18, 253, 6, 0, 22, 12, 15, 0, 132, 99, 101, 110, 115, 101, 0, 19, - 8, 21, 0, 132, 115, 112, 111, 110, 115, 101, 0, 19, 17, 4, 21, 23, 0, 131, - 115, 112, 111, 115, 101, 0, 68, 32, 7, 6, 61, 7, 18, 72, 7, 0, 70, 39, 7, 8, - 49, 7, 0, 6, 8, 5, 0, 132, 97, 117, 115, 101, 0, 6, 4, 5, 0, 134, 101, 99, 97, - 117, 115, 101, 0, 4, 8, 5, 0, 132, 99, 97, 117, 115, 101, 0, 6, 8, 5, 0, 131, - 97, 117, 115, 101, 0, 68, 95, 7, 8, 13, 8, 15, 24, 8, 25, 36, 8, 0, 71, 111, - 7, 10, 148, 7, 15, 161, 7, 19, 228, 7, 21, 238, 7, 0, 18, 16, 0, 80, 121, 7, - 18, 136, 7, 0, 18, 6, 4, 0, 135, 99, 111, 109, 109, 111, 100, 97, 116, 101, 0, - 6, 6, 4, 0, 132, 109, 111, 100, 97, 116, 101, 0, 18, 19, 18, 21, 19, 0, 132, - 97, 103, 97, 116, 101, 0, 70, 171, 7, 19, 184, 7, 24, 197, 7, 0, 24, 15, 4, 6, - 0, 133, 99, 117, 108, 97, 116, 101, 0, 16, 4, 8, 23, 0, 134, 109, 112, 108, - 97, 116, 101, 0, 70, 204, 7, 15, 217, 7, 0, 24, 15, 4, 6, 0, 134, 99, 117, - 108, 97, 116, 101, 0, 4, 6, 0, 132, 99, 117, 108, 97, 116, 101, 0, 7, 24, 0, - 132, 112, 100, 97, 116, 101, 0, 72, 245, 7, 24, 2, 8, 0, 17, 4, 10, 0, 134, - 101, 110, 101, 114, 97, 116, 101, 0, 6, 4, 0, 132, 99, 117, 114, 97, 116, 101, - 0, 15, 15, 4, 19, 0, 131, 101, 116, 116, 101, 0, 4, 19, 16, 8, 23, 0, 131, - 108, 97, 116, 101, 0, 12, 21, 19, 0, 129, 97, 116, 101, 0, 74, 55, 8, 12, 67, - 8, 22, 77, 8, 0, 8, 15, 15, 18, 6, 0, 130, 97, 103, 117, 101, 0, 20, 17, 24, - 0, 131, 105, 113, 117, 101, 0, 68, 84, 8, 21, 105, 8, 0, 6, 0, 108, 93, 8, 8, - 98, 8, 0, 130, 117, 115, 101, 0, 5, 0, 130, 117, 115, 101, 0, 8, 19, 0, 132, - 117, 114, 115, 117, 101, 0, 76, 122, 8, 18, 147, 8, 0, 72, 129, 8, 15, 139, 8, - 0, 15, 8, 5, 0, 131, 105, 101, 118, 101, 0, 8, 5, 0, 129, 101, 118, 101, 0, - 82, 154, 8, 25, 161, 8, 0, 21, 19, 0, 130, 118, 101, 0, 5, 4, 0, 131, 111, - 118, 101, 0, 12, 8, 0, 75, 182, 8, 15, 189, 8, 21, 197, 8, 0, 6, 0, 130, 105, - 101, 102, 0, 8, 5, 0, 130, 105, 101, 102, 0, 5, 0, 130, 105, 101, 102, 0, 76, - 211, 8, 17, 221, 8, 0, 17, 18, 10, 44, 0, 130, 105, 110, 103, 0, 76, 228, 8, - 21, 58, 9, 0, 72, 244, 8, 11, 11, 9, 15, 24, 9, 21, 36, 9, 28, 47, 9, 0, 72, - 251, 8, 11, 2, 9, 0, 5, 0, 131, 105, 110, 103, 0, 6, 4, 6, 0, 131, 105, 110, - 103, 0, 23, 6, 4, 16, 0, 133, 116, 99, 104, 105, 110, 103, 0, 8, 12, 6, 0, - 133, 101, 105, 108, 105, 110, 103, 0, 24, 6, 8, 21, 0, 130, 114, 105, 110, - 103, 0, 23, 28, 17, 4, 0, 131, 104, 105, 110, 103, 0, 12, 23, 22, 0, 131, 114, - 105, 110, 103, 0, 70, 87, 9, 8, 142, 9, 10, 154, 9, 12, 164, 9, 22, 173, 9, - 23, 191, 9, 0, 75, 100, 9, 12, 109, 9, 15, 119, 9, 21, 127, 9, 0, 12, 26, 0, - 131, 104, 105, 99, 104, 0, 23, 26, 22, 0, 131, 105, 116, 99, 104, 0, 11, 26, - 0, 130, 105, 99, 104, 0, 4, 8, 22, 4, 8, 21, 0, 134, 115, 101, 97, 114, 99, - 104, 0, 23, 7, 17, 4, 44, 0, 130, 32, 116, 104, 101, 0, 17, 8, 21, 23, 22, 0, - 128, 116, 104, 0, 6, 11, 26, 0, 130, 105, 99, 104, 0, 12, 15, 19, 16, 18, 6, - 4, 0, 134, 99, 111, 109, 112, 108, 105, 115, 104, 0, 74, 201, 9, 12, 225, 9, - 21, 236, 9, 0, 72, 208, 9, 12, 218, 9, 0, 21, 23, 22, 0, 130, 110, 103, 116, - 104, 0, 8, 11, 0, 129, 104, 116, 0, 26, 7, 17, 4, 5, 0, 129, 100, 116, 104, 0, - 24, 23, 44, 0, 131, 114, 117, 116, 104, 0, 21, 8, 11, 23, 44, 0, 129, 105, - 114, 0, 17, 0, 76, 9, 10, 24, 20, 10, 0, 23, 11, 44, 0, 132, 116, 104, 105, - 110, 107, 0, 12, 11, 23, 0, 130, 110, 107, 0, 68, 50, 10, 7, 134, 10, 8, 177, - 10, 9, 17, 11, 15, 26, 11, 23, 55, 11, 24, 64, 11, 0, 76, 60, 10, 23, 71, 10, - 24, 96, 10, 0, 6, 19, 28, 23, 0, 131, 105, 99, 97, 108, 0, 76, 78, 10, 24, 86, - 10, 0, 17, 12, 0, 129, 105, 97, 108, 0, 21, 12, 25, 0, 131, 116, 117, 97, 108, - 0, 81, 106, 10, 21, 115, 10, 23, 124, 10, 0, 4, 44, 0, 130, 110, 117, 97, 108, - 0, 24, 23, 4, 17, 0, 130, 97, 108, 0, 12, 25, 0, 131, 114, 116, 117, 97, 108, - 0, 24, 0, 82, 143, 10, 26, 167, 10, 0, 70, 153, 10, 11, 157, 10, 26, 163, 10, - 0, 129, 108, 100, 0, 22, 0, 129, 108, 100, 0, 129, 108, 100, 0, 18, 44, 0, - 132, 119, 111, 117, 108, 100, 0, 74, 193, 10, 15, 201, 10, 19, 247, 10, 23, - 255, 10, 24, 7, 11, 0, 17, 12, 22, 0, 129, 108, 101, 0, 68, 208, 10, 15, 234, - 10, 0, 21, 0, 68, 217, 10, 21, 224, 10, 0, 19, 0, 129, 108, 101, 108, 0, 4, - 19, 0, 132, 97, 108, 108, 101, 108, 0, 4, 21, 21, 4, 19, 0, 133, 97, 108, 108, - 101, 108, 0, 18, 8, 19, 0, 129, 108, 101, 0, 23, 12, 15, 0, 129, 108, 101, 0, - 7, 8, 11, 6, 22, 0, 129, 108, 101, 0, 8, 22, 28, 16, 0, 129, 108, 102, 0, 12, - 9, 0, 79, 36, 11, 24, 46, 11, 0, 15, 24, 9, 0, 132, 102, 105, 108, 108, 0, 9, - 0, 131, 108, 102, 105, 108, 108, 0, 24, 22, 8, 21, 0, 129, 108, 116, 0, 9, 23, - 4, 8, 21, 10, 0, 133, 97, 116, 101, 102, 117, 108, 0, 68, 89, 11, 15, 106, 11, - 21, 117, 11, 0, 21, 10, 18, 23, 6, 8, 19, 22, 0, 132, 114, 111, 103, 114, 97, - 109, 0, 8, 5, 18, 21, 19, 0, 130, 108, 101, 109, 0, 18, 9, 18, 6, 0, 131, 110, - 102, 111, 114, 109, 0, 68, 166, 11, 7, 206, 11, 8, 215, 11, 10, 58, 12, 12, - 141, 12, 14, 153, 12, 18, 192, 12, 19, 108, 13, 21, 120, 13, 22, 131, 13, 24, - 141, 13, 26, 164, 13, 0, 12, 0, 74, 175, 11, 23, 183, 11, 0, 4, 44, 0, 130, - 97, 105, 110, 0, 81, 190, 11, 21, 198, 11, 0, 18, 6, 0, 130, 97, 105, 110, 0, - 8, 6, 0, 130, 97, 105, 110, 0, 24, 18, 9, 44, 0, 129, 110, 100, 0, 71, 231, - 11, 8, 241, 11, 10, 27, 12, 19, 39, 12, 22, 48, 12, 0, 15, 12, 11, 6, 0, 129, - 114, 101, 110, 0, 87, 248, 11, 26, 17, 12, 0, 72, 255, 11, 26, 7, 12, 0, 5, 0, - 130, 119, 101, 101, 110, 0, 8, 5, 0, 132, 116, 119, 101, 101, 110, 0, 8, 5, 0, - 131, 116, 119, 101, 101, 110, 0, 18, 7, 28, 11, 0, 131, 114, 111, 103, 101, - 110, 0, 4, 11, 44, 0, 129, 112, 101, 110, 0, 18, 18, 11, 6, 0, 131, 115, 101, - 110, 0, 72, 65, 12, 12, 76, 12, 0, 12, 21, 18, 9, 0, 131, 101, 105, 103, 110, - 0, 75, 95, 12, 15, 101, 12, 17, 109, 12, 18, 118, 12, 21, 125, 12, 22, 132, - 12, 0, 23, 0, 129, 110, 103, 0, 15, 4, 0, 131, 105, 103, 110, 0, 21, 4, 8, 15, - 0, 129, 110, 103, 0, 10, 44, 0, 129, 110, 103, 0, 23, 22, 0, 129, 110, 103, 0, - 4, 44, 0, 130, 115, 105, 103, 110, 0, 23, 4, 21, 8, 6, 0, 131, 116, 97, 105, - 110, 0, 75, 160, 12, 12, 169, 12, 0, 12, 23, 0, 131, 104, 105, 110, 107, 0, - 75, 176, 12, 23, 182, 12, 0, 23, 0, 129, 110, 107, 0, 11, 44, 0, 132, 116, - 104, 105, 110, 107, 0, 76, 202, 12, 22, 86, 13, 23, 96, 13, 0, 70, 212, 12, - 22, 225, 12, 23, 251, 12, 0, 12, 22, 8, 7, 0, 133, 99, 105, 115, 105, 111, - 110, 0, 68, 232, 12, 22, 241, 12, 0, 12, 15, 0, 131, 105, 115, 111, 110, 0, 4, - 6, 6, 18, 0, 131, 105, 111, 110, 0, 68, 14, 13, 7, 27, 13, 12, 37, 13, 15, 52, - 13, 17, 64, 13, 22, 76, 13, 0, 21, 8, 5, 4, 0, 132, 114, 97, 116, 105, 111, - 110, 0, 7, 4, 0, 131, 105, 116, 105, 111, 110, 0, 23, 12, 19, 8, 21, 0, 134, - 101, 116, 105, 116, 105, 111, 110, 0, 4, 8, 21, 0, 133, 108, 97, 116, 105, - 111, 110, 0, 6, 24, 9, 0, 133, 110, 99, 116, 105, 111, 110, 0, 18, 19, 0, 131, - 105, 116, 105, 111, 110, 0, 12, 25, 12, 7, 0, 129, 105, 111, 110, 0, 12, 6, 4, - 21, 9, 0, 131, 116, 105, 111, 110, 0, 19, 11, 4, 0, 132, 104, 97, 112, 112, - 101, 110, 0, 23, 24, 8, 21, 0, 131, 116, 117, 114, 110, 0, 10, 12, 11, 23, 0, - 130, 110, 103, 115, 0, 85, 148, 13, 23, 157, 13, 0, 23, 8, 21, 0, 130, 117, - 114, 110, 0, 8, 21, 0, 128, 114, 110, 0, 18, 14, 17, 24, 0, 130, 110, 111, - 119, 110, 0, 71, 185, 13, 17, 196, 13, 26, 205, 13, 0, 8, 24, 22, 19, 0, 131, - 101, 117, 100, 111, 0, 26, 14, 44, 0, 130, 110, 111, 119, 0, 79, 212, 13, 17, - 220, 13, 0, 15, 18, 9, 0, 129, 111, 119, 0, 14, 44, 0, 129, 111, 119, 0, 86, - 234, 13, 24, 244, 13, 0, 4, 11, 21, 8, 19, 0, 129, 112, 115, 0, 18, 18, 15, 0, - 129, 107, 117, 112, 0, 68, 28, 14, 8, 93, 14, 11, 103, 15, 15, 113, 15, 18, - 127, 15, 19, 144, 15, 22, 155, 15, 23, 164, 15, 24, 176, 15, 28, 185, 15, 0, - 76, 38, 14, 15, 48, 14, 24, 82, 14, 0, 15, 12, 16, 12, 22, 0, 130, 97, 114, 0, - 76, 55, 14, 24, 66, 14, 0, 16, 16, 12, 22, 0, 132, 105, 108, 97, 114, 0, 6, - 12, 23, 4, 19, 0, 134, 114, 116, 105, 99, 117, 108, 97, 114, 0, 15, 10, 8, 21, - 0, 131, 117, 108, 97, 114, 0, 68, 124, 14, 7, 132, 14, 11, 145, 14, 12, 203, - 14, 15, 229, 14, 16, 239, 14, 17, 249, 14, 18, 37, 15, 23, 45, 15, 25, 76, 15, - 0, 15, 6, 0, 130, 101, 97, 114, 0, 17, 4, 15, 4, 6, 0, 132, 101, 110, 100, 97, - 114, 0, 74, 152, 14, 23, 163, 14, 0, 12, 8, 11, 0, 133, 105, 103, 104, 101, - 114, 0, 72, 173, 14, 15, 185, 14, 24, 194, 14, 0, 11, 10, 18, 23, 0, 133, 101, - 116, 104, 101, 114, 0, 18, 44, 0, 132, 116, 104, 101, 114, 0, 9, 0, 131, 114, - 116, 104, 101, 114, 0, 75, 210, 14, 15, 218, 14, 0, 23, 44, 0, 130, 101, 105, - 114, 0, 19, 16, 18, 6, 0, 131, 105, 108, 101, 114, 0, 23, 12, 9, 0, 131, 108, - 116, 101, 114, 0, 16, 4, 21, 10, 44, 0, 129, 97, 114, 0, 76, 0, 15, 23, 12, - 15, 0, 10, 10, 8, 5, 0, 132, 105, 110, 110, 101, 114, 0, 76, 19, 15, 22, 28, - 15, 0, 18, 19, 0, 131, 110, 116, 101, 114, 0, 12, 15, 0, 130, 101, 110, 101, - 114, 0, 9, 8, 5, 0, 129, 114, 101, 0, 75, 52, 15, 24, 62, 15, 0, 18, 17, 4, 0, - 131, 116, 104, 101, 114, 0, 19, 18, 16, 6, 0, 134, 111, 109, 112, 117, 116, - 101, 114, 0, 72, 83, 15, 26, 94, 15, 0, 8, 21, 8, 11, 26, 0, 131, 118, 101, - 114, 0, 18, 11, 0, 130, 101, 118, 101, 114, 0, 8, 23, 18, 44, 0, 130, 104, - 101, 114, 0, 4, 24, 6, 12, 23, 21, 4, 19, 0, 130, 108, 97, 114, 0, 23, 4, 21, - 8, 23, 17, 12, 0, 135, 116, 101, 114, 97, 116, 111, 114, 0, 23, 15, 15, 24, - 17, 0, 130, 112, 116, 114, 0, 4, 8, 28, 44, 0, 129, 114, 115, 0, 18, 4, 21, 8, - 19, 18, 0, 130, 116, 111, 114, 0, 6, 18, 44, 0, 129, 99, 117, 114, 0, 8, 25, - 8, 44, 0, 129, 114, 121, 0, 68, 219, 15, 8, 3, 16, 10, 147, 16, 19, 158, 16, - 21, 170, 16, 22, 181, 16, 23, 77, 17, 24, 85, 17, 0, 75, 229, 15, 19, 240, 15, - 28, 250, 15, 0, 19, 21, 8, 19, 0, 131, 104, 97, 112, 115, 0, 11, 21, 8, 19, 0, - 130, 97, 112, 115, 0, 26, 15, 4, 0, 130, 97, 121, 115, 0, 68, 19, 16, 6, 42, - 16, 12, 53, 16, 15, 129, 16, 22, 136, 16, 0, 71, 26, 16, 14, 34, 16, 0, 12, - 44, 0, 130, 101, 97, 115, 0, 23, 0, 131, 97, 107, 101, 115, 0, 8, 7, 17, 12, - 0, 131, 105, 99, 101, 115, 0, 70, 63, 16, 21, 102, 16, 23, 117, 16, 0, 72, 70, - 16, 12, 80, 16, 0, 7, 17, 12, 0, 132, 105, 99, 101, 115, 0, 71, 87, 16, 23, - 94, 16, 0, 17, 12, 0, 130, 101, 115, 0, 21, 8, 25, 0, 130, 101, 115, 0, 18, - 22, 8, 6, 6, 4, 0, 132, 115, 111, 114, 105, 101, 115, 0, 15, 12, 5, 4, 0, 131, - 105, 116, 105, 101, 115, 0, 4, 9, 0, 129, 115, 101, 0, 18, 11, 6, 44, 0, 130, - 111, 115, 101, 115, 0, 12, 17, 11, 23, 0, 131, 105, 110, 103, 115, 0, 4, 8, - 11, 21, 8, 19, 0, 131, 97, 112, 115, 0, 8, 4, 28, 44, 0, 131, 101, 97, 114, - 115, 0, 68, 191, 16, 8, 203, 16, 18, 66, 17, 0, 21, 4, 5, 16, 8, 0, 130, 114, - 97, 115, 115, 0, 70, 216, 16, 17, 240, 16, 21, 13, 17, 22, 42, 17, 0, 70, 223, - 16, 24, 232, 16, 0, 18, 21, 19, 0, 131, 101, 115, 115, 0, 22, 0, 130, 99, 101, - 115, 115, 0, 76, 247, 16, 22, 3, 17, 0, 22, 22, 24, 5, 0, 133, 105, 110, 101, - 115, 115, 0, 24, 5, 0, 131, 105, 110, 101, 115, 115, 0, 19, 0, 85, 22, 17, 24, - 33, 17, 0, 24, 22, 0, 133, 112, 112, 114, 101, 115, 115, 0, 22, 0, 131, 112, - 114, 101, 115, 115, 0, 70, 49, 17, 18, 58, 17, 0, 6, 24, 22, 0, 131, 101, 115, - 115, 0, 19, 0, 130, 115, 101, 115, 115, 0, 21, 6, 6, 4, 0, 132, 114, 111, 115, - 115, 0, 21, 12, 9, 0, 129, 115, 116, 0, 82, 92, 17, 22, 106, 17, 0, 15, 18, - 16, 18, 17, 4, 0, 132, 97, 108, 111, 117, 115, 0, 17, 8, 6, 17, 18, 6, 0, 133, - 115, 101, 110, 115, 117, 115, 0, 68, 158, 17, 8, 188, 17, 10, 217, 17, 11, - 227, 17, 12, 25, 18, 15, 36, 18, 16, 47, 18, 17, 59, 18, 18, 151, 19, 19, 189, - 19, 22, 217, 19, 24, 107, 20, 0, 85, 165, 17, 26, 176, 17, 0, 8, 19, 8, 22, 0, - 131, 97, 114, 97, 116, 0, 11, 8, 16, 18, 22, 0, 131, 119, 104, 97, 116, 0, 68, - 195, 17, 17, 204, 17, 0, 21, 10, 44, 0, 130, 101, 97, 116, 0, 16, 17, 21, 8, - 25, 18, 10, 0, 130, 101, 110, 116, 0, 11, 24, 4, 6, 0, 130, 103, 104, 116, 0, - 71, 237, 17, 10, 244, 17, 12, 14, 18, 0, 12, 26, 0, 129, 116, 104, 0, 81, 251, - 17, 24, 2, 18, 0, 8, 15, 0, 129, 116, 104, 0, 18, 21, 11, 23, 0, 133, 111, - 117, 103, 104, 116, 0, 10, 17, 18, 23, 0, 131, 105, 103, 104, 116, 0, 23, 24, - 18, 5, 4, 0, 129, 32, 105, 116, 0, 22, 24, 8, 21, 0, 131, 115, 117, 108, 116, - 0, 4, 23, 21, 18, 19, 16, 12, 0, 129, 110, 116, 0, 68, 72, 18, 8, 128, 18, 21, - 132, 19, 22, 143, 19, 0, 76, 85, 18, 17, 96, 18, 21, 107, 18, 23, 117, 18, 0, - 19, 12, 6, 8, 21, 0, 130, 101, 110, 116, 0, 12, 16, 18, 21, 19, 0, 130, 101, - 110, 116, 0, 4, 19, 19, 4, 0, 130, 101, 110, 116, 0, 8, 19, 16, 18, 6, 0, 130, - 101, 110, 116, 0, 76, 144, 18, 16, 177, 18, 21, 21, 19, 25, 111, 19, 29, 121, - 19, 0, 70, 151, 18, 19, 164, 18, 0, 8, 9, 9, 8, 0, 133, 105, 99, 105, 101, - 110, 116, 0, 8, 6, 8, 21, 0, 133, 105, 112, 105, 101, 110, 116, 0, 72, 190, - 18, 17, 202, 18, 21, 235, 18, 23, 10, 19, 0, 25, 18, 10, 0, 131, 114, 110, - 109, 101, 110, 116, 0, 72, 209, 18, 21, 221, 18, 0, 25, 18, 10, 0, 132, 114, - 110, 109, 101, 110, 116, 0, 18, 25, 18, 10, 0, 134, 101, 114, 110, 109, 101, - 110, 116, 0, 72, 242, 18, 18, 253, 18, 0, 25, 18, 10, 0, 131, 110, 109, 101, - 110, 116, 0, 25, 18, 10, 0, 133, 101, 114, 110, 109, 101, 110, 116, 0, 4, 23, - 22, 0, 131, 101, 109, 101, 110, 116, 0, 68, 34, 19, 8, 45, 19, 9, 57, 19, 21, - 68, 19, 0, 19, 4, 0, 132, 112, 97, 114, 101, 110, 116, 0, 9, 12, 7, 0, 132, - 102, 101, 114, 101, 110, 116, 0, 9, 12, 7, 0, 131, 101, 114, 101, 110, 116, 0, - 68, 75, 19, 8, 99, 19, 0, 19, 0, 68, 84, 19, 19, 92, 19, 0, 133, 112, 97, 114, - 101, 110, 116, 0, 4, 0, 131, 101, 110, 116, 0, 9, 12, 7, 0, 133, 102, 101, - 114, 101, 110, 116, 0, 8, 15, 8, 21, 0, 130, 97, 110, 116, 0, 12, 17, 10, 18, - 6, 0, 130, 97, 110, 116, 0, 8, 9, 9, 12, 7, 0, 129, 101, 110, 116, 0, 18, 6, - 0, 130, 110, 115, 116, 0, 81, 161, 19, 21, 171, 19, 22, 180, 19, 0, 7, 12, 7, - 0, 130, 32, 110, 111, 116, 0, 19, 8, 21, 0, 130, 111, 114, 116, 0, 16, 15, 4, - 0, 130, 111, 115, 116, 0, 72, 196, 19, 28, 207, 19, 0, 12, 6, 8, 21, 0, 131, - 101, 105, 112, 116, 0, 6, 17, 8, 0, 130, 114, 121, 112, 116, 0, 72, 236, 19, - 10, 21, 20, 12, 30, 20, 16, 59, 20, 17, 69, 20, 24, 96, 20, 0, 74, 243, 19, - 21, 10, 20, 0, 76, 250, 19, 24, 2, 20, 0, 11, 0, 130, 104, 101, 115, 116, 0, - 22, 0, 130, 103, 101, 115, 116, 0, 23, 17, 12, 0, 131, 101, 114, 101, 115, - 116, 0, 21, 4, 15, 0, 129, 101, 115, 116, 0, 73, 37, 20, 17, 49, 20, 0, 8, 17, - 4, 16, 0, 132, 105, 102, 101, 115, 116, 0, 4, 10, 4, 0, 131, 105, 110, 115, - 116, 0, 18, 15, 4, 0, 131, 109, 111, 115, 116, 0, 68, 76, 20, 17, 87, 20, 0, - 12, 10, 4, 0, 132, 97, 105, 110, 115, 116, 0, 12, 4, 10, 4, 0, 130, 115, 116, - 0, 13, 4, 44, 0, 131, 100, 106, 117, 115, 116, 0, 70, 120, 20, 18, 144, 20, - 19, 168, 20, 23, 191, 20, 0, 72, 127, 20, 21, 137, 20, 0, 6, 27, 8, 0, 132, - 101, 99, 117, 116, 0, 12, 6, 0, 128, 105, 116, 0, 68, 151, 20, 5, 160, 20, 0, - 5, 0, 132, 97, 98, 111, 117, 116, 0, 5, 4, 0, 131, 111, 117, 116, 0, 87, 175, - 20, 24, 183, 20, 0, 17, 12, 0, 131, 112, 117, 116, 0, 18, 0, 130, 116, 112, - 117, 116, 0, 19, 24, 18, 0, 131, 116, 112, 117, 116, 0, 23, 18, 5, 4, 0, 129, - 117, 116, 0, 72, 217, 20, 12, 253, 20, 0, 68, 224, 20, 12, 231, 20, 0, 11, 44, - 0, 129, 118, 101, 0, 70, 238, 20, 8, 246, 20, 0, 8, 21, 0, 130, 101, 105, 118, - 0, 6, 8, 21, 0, 129, 118, 0, 8, 11, 6, 4, 44, 0, 130, 105, 101, 118, 0, 76, - 15, 21, 17, 25, 21, 0, 8, 25, 8, 21, 0, 130, 105, 101, 119, 0, 18, 14, 44, 0, - 130, 110, 111, 119, 0, 70, 59, 21, 8, 118, 21, 11, 128, 21, 15, 146, 21, 17, - 87, 22, 21, 114, 22, 22, 12, 23, 23, 39, 23, 0, 68, 72, 21, 8, 84, 21, 12, 95, - 21, 19, 106, 21, 0, 21, 6, 18, 19, 28, 11, 0, 130, 105, 115, 121, 0, 24, 20, - 8, 21, 9, 0, 129, 110, 99, 121, 0, 21, 6, 18, 19, 28, 11, 0, 129, 115, 121, 0, - 24, 21, 14, 17, 4, 5, 0, 129, 116, 99, 121, 0, 23, 9, 4, 22, 0, 130, 101, 116, - 121, 0, 6, 21, 4, 21, 12, 8, 11, 0, 135, 105, 101, 114, 97, 114, 99, 104, 121, - 0, 68, 165, 21, 11, 232, 21, 14, 242, 21, 15, 250, 21, 18, 66, 22, 21, 76, 22, - 0, 69, 184, 21, 8, 193, 21, 15, 199, 21, 17, 208, 21, 21, 215, 21, 24, 224, - 21, 0, 18, 21, 19, 0, 129, 98, 108, 121, 0, 21, 0, 128, 108, 121, 0, 8, 21, 0, - 131, 97, 108, 108, 121, 0, 12, 9, 0, 128, 108, 121, 0, 8, 17, 8, 10, 0, 128, - 108, 121, 0, 23, 6, 4, 0, 128, 108, 121, 0, 10, 12, 15, 22, 0, 129, 116, 108, - 121, 0, 12, 15, 0, 129, 101, 108, 121, 0, 68, 4, 22, 5, 47, 22, 8, 56, 22, 0, - 86, 11, 22, 23, 35, 22, 0, 24, 0, 108, 20, 22, 22, 27, 22, 0, 131, 117, 97, - 108, 108, 121, 0, 24, 0, 132, 97, 108, 108, 121, 0, 24, 6, 4, 0, 133, 116, - 117, 97, 108, 108, 121, 0, 4, 5, 18, 21, 19, 0, 129, 121, 0, 4, 21, 0, 132, - 101, 97, 108, 108, 121, 0, 16, 18, 17, 4, 0, 130, 97, 108, 121, 0, 4, 16, 12, - 21, 19, 0, 129, 105, 108, 121, 0, 72, 94, 22, 19, 103, 22, 0, 18, 16, 44, 0, - 130, 110, 101, 121, 0, 4, 16, 18, 6, 0, 131, 112, 97, 110, 121, 0, 68, 127, - 22, 8, 231, 22, 18, 240, 22, 23, 253, 22, 0, 69, 143, 22, 12, 152, 22, 15, - 165, 22, 16, 193, 22, 22, 202, 22, 0, 12, 15, 0, 130, 114, 97, 114, 121, 0, - 15, 15, 12, 27, 24, 4, 0, 132, 105, 97, 114, 121, 0, 76, 172, 22, 15, 182, 22, - 0, 27, 24, 4, 0, 130, 105, 97, 114, 121, 0, 12, 27, 24, 4, 0, 131, 105, 97, - 114, 121, 0, 24, 22, 0, 130, 109, 97, 114, 121, 0, 8, 6, 0, 70, 212, 22, 8, - 223, 22, 0, 8, 17, 0, 133, 101, 115, 115, 97, 114, 121, 0, 17, 0, 130, 115, - 97, 114, 121, 0, 19, 18, 21, 19, 0, 128, 116, 121, 0, 10, 4, 23, 4, 6, 0, 132, - 101, 103, 111, 114, 121, 0, 17, 24, 6, 18, 44, 0, 134, 99, 111, 117, 110, 116, - 114, 121, 0, 4, 0, 85, 21, 23, 26, 32, 23, 0, 6, 18, 19, 28, 11, 0, 130, 105, - 115, 121, 0, 15, 4, 0, 129, 121, 115, 0, 73, 49, 23, 15, 57, 23, 21, 66, 23, - 0, 4, 22, 0, 129, 101, 116, 121, 0, 12, 5, 4, 0, 129, 105, 116, 121, 0, 19, 8, - 18, 21, 19, 0, 132, 112, 101, 114, 116, 121, 0}; - diff --git a/users/gourdo1/autocorrect/autocorrection_data.h (small) b/users/gourdo1/autocorrect/autocorrection_data.h (small) deleted file mode 100644 index f98471bb08..0000000000 --- a/users/gourdo1/autocorrect/autocorrection_data.h (small) +++ /dev/null @@ -1,152 +0,0 @@ -// Copyright 2021-2022 Google LLC -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Generated code. - -// Autocorrection dictionary (71 entries): -// :guage -> gauge -// :the:the: -> the -// :thier -> their -// :ture -> true -// accomodate -> accommodate -// acommodate -> accommodate -// aparent -> apparent -// aparrent -> apparent -// apparant -> apparent -// apparrent -> apparent -// aquire -> acquire -// becuase -> because -// cauhgt -> caught -// cheif -> chief -// choosen -> chosen -// cieling -> ceiling -// collegue -> colleague -// concensus -> consensus -// contians -> contains -// cosnt -> const -// dervied -> derived -// dosen't -> doesn't -// fales -> false -// fasle -> false -// fitler -> filter -// flase -> false -// foward -> forward -// frequecy -> frequency -// gaurantee -> guarantee -// guaratee -> guarantee -// heigth -> height -// heirarchy -> hierarchy -// inclued -> include -// interator -> iterator -// intput -> input -// invliad -> invalid -// lenght -> length -// liasion -> liaison -// libary -> library -// listner -> listener -// looses: -> loses -// looup -> lookup -// manefist -> manifest -// namesapce -> namespace -// namespcae -> namespace -// occassion -> occasion -// occured -> occurred -// ouptut -> output -// ouput -> output -// overide -> override -// postion -> position -// priviledge -> privilege -// psuedo -> pseudo -// recieve -> receive -// refered -> referred -// relevent -> relevant -// repitition -> repetition -// retrun -> return -// retun -> return -// reuslt -> result -// reutrn -> return -// saftey -> safety -// seperate -> separate -// singed -> signed -// stirng -> string -// strign -> string -// swithc -> switch -// swtich -> switch -// thresold -> threshold -// udpate -> update -// widht -> width - -#define AUTOCORRECTION_MIN_LENGTH 5 // ":ture" -#define AUTOCORRECTION_MAX_LENGTH 10 // "accomodate" - -static const uint8_t autocorrection_data[1120] PROGMEM = {108, 43, 0, 6, 71, 0, - 7, 81, 0, 8, 199, 0, 9, 240, 1, 10, 250, 1, 11, 26, 2, 17, 53, 2, 18, 190, 2, - 19, 202, 2, 21, 212, 2, 22, 20, 3, 23, 67, 3, 28, 32, 4, 0, 72, 50, 0, 22, 60, - 0, 0, 11, 23, 44, 8, 11, 23, 44, 0, 132, 0, 8, 22, 18, 18, 15, 0, 132, 115, - 101, 115, 0, 11, 23, 12, 26, 22, 0, 129, 99, 104, 0, 68, 94, 0, 8, 106, 0, 15, - 174, 0, 21, 187, 0, 0, 12, 15, 25, 17, 12, 0, 131, 97, 108, 105, 100, 0, 74, - 119, 0, 12, 129, 0, 21, 140, 0, 24, 165, 0, 0, 17, 12, 22, 0, 131, 103, 110, - 101, 100, 0, 25, 21, 8, 7, 0, 131, 105, 118, 101, 100, 0, 72, 147, 0, 24, 156, - 0, 0, 9, 8, 21, 0, 129, 114, 101, 100, 0, 6, 6, 18, 0, 129, 114, 101, 100, 0, - 15, 6, 17, 12, 0, 129, 100, 101, 0, 18, 22, 8, 21, 11, 23, 0, 130, 104, 111, - 108, 100, 0, 4, 26, 18, 9, 0, 131, 114, 119, 97, 114, 100, 0, 68, 233, 0, 6, - 246, 0, 7, 4, 1, 8, 16, 1, 10, 52, 1, 15, 81, 1, 21, 90, 1, 22, 117, 1, 23, - 144, 1, 24, 215, 1, 25, 228, 1, 0, 6, 19, 22, 8, 16, 4, 17, 0, 130, 97, 99, - 101, 0, 19, 4, 22, 8, 16, 4, 17, 0, 131, 112, 97, 99, 101, 0, 12, 21, 8, 25, - 18, 0, 130, 114, 105, 100, 101, 0, 23, 0, 68, 25, 1, 17, 36, 1, 0, 21, 4, 24, - 10, 0, 130, 110, 116, 101, 101, 0, 4, 21, 24, 4, 10, 0, 135, 117, 97, 114, 97, - 110, 116, 101, 101, 0, 68, 59, 1, 7, 69, 1, 0, 24, 10, 44, 0, 131, 97, 117, - 103, 101, 0, 8, 15, 12, 25, 12, 21, 19, 0, 130, 103, 101, 0, 22, 4, 9, 0, 130, - 108, 115, 101, 0, 76, 97, 1, 24, 109, 1, 0, 24, 20, 4, 0, 132, 99, 113, 117, - 105, 114, 101, 0, 23, 44, 0, 130, 114, 117, 101, 0, 4, 0, 79, 126, 1, 24, 134, - 1, 0, 9, 0, 131, 97, 108, 115, 101, 0, 6, 8, 5, 0, 131, 97, 117, 115, 101, 0, - 4, 0, 71, 156, 1, 19, 193, 1, 21, 203, 1, 0, 18, 16, 0, 80, 166, 1, 18, 181, - 1, 0, 18, 6, 4, 0, 135, 99, 111, 109, 109, 111, 100, 97, 116, 101, 0, 6, 6, 4, - 0, 132, 109, 111, 100, 97, 116, 101, 0, 7, 24, 0, 132, 112, 100, 97, 116, 101, - 0, 8, 19, 8, 22, 0, 132, 97, 114, 97, 116, 101, 0, 10, 8, 15, 15, 18, 6, 0, - 130, 97, 103, 117, 101, 0, 8, 12, 6, 8, 21, 0, 131, 101, 105, 118, 101, 0, 12, - 8, 11, 6, 0, 130, 105, 101, 102, 0, 17, 0, 76, 3, 2, 21, 16, 2, 0, 15, 8, 12, - 6, 0, 133, 101, 105, 108, 105, 110, 103, 0, 12, 23, 22, 0, 131, 114, 105, 110, - 103, 0, 70, 33, 2, 23, 44, 2, 0, 12, 23, 26, 22, 0, 131, 105, 116, 99, 104, 0, - 10, 12, 8, 11, 0, 129, 104, 116, 0, 72, 69, 2, 10, 80, 2, 18, 89, 2, 21, 156, - 2, 24, 167, 2, 0, 22, 18, 18, 11, 6, 0, 131, 115, 101, 110, 0, 12, 21, 23, 22, - 0, 129, 110, 103, 0, 12, 0, 86, 98, 2, 23, 124, 2, 0, 68, 105, 2, 22, 114, 2, - 0, 12, 15, 0, 131, 105, 115, 111, 110, 0, 4, 6, 6, 18, 0, 131, 105, 111, 110, - 0, 76, 131, 2, 22, 146, 2, 0, 23, 12, 19, 8, 21, 0, 134, 101, 116, 105, 116, - 105, 111, 110, 0, 18, 19, 0, 131, 105, 116, 105, 111, 110, 0, 23, 24, 8, 21, - 0, 131, 116, 117, 114, 110, 0, 85, 174, 2, 23, 183, 2, 0, 23, 8, 21, 0, 130, - 117, 114, 110, 0, 8, 21, 0, 128, 114, 110, 0, 7, 8, 24, 22, 19, 0, 131, 101, - 117, 100, 111, 0, 24, 18, 18, 15, 0, 129, 107, 117, 112, 0, 72, 219, 2, 18, 3, - 3, 0, 76, 229, 2, 15, 238, 2, 17, 248, 2, 0, 11, 23, 44, 0, 130, 101, 105, - 114, 0, 23, 12, 9, 0, 131, 108, 116, 101, 114, 0, 23, 22, 12, 15, 0, 130, 101, - 110, 101, 114, 0, 23, 4, 21, 8, 23, 17, 12, 0, 135, 116, 101, 114, 97, 116, - 111, 114, 0, 72, 30, 3, 17, 38, 3, 24, 51, 3, 0, 15, 4, 9, 0, 129, 115, 101, - 0, 4, 12, 23, 17, 18, 6, 0, 131, 97, 105, 110, 115, 0, 22, 17, 8, 6, 17, 18, - 6, 0, 133, 115, 101, 110, 115, 117, 115, 0, 116, 89, 3, 10, 102, 3, 11, 112, - 3, 15, 134, 3, 17, 145, 3, 22, 234, 3, 24, 248, 3, 0, 17, 8, 22, 18, 7, 0, - 132, 101, 115, 110, 39, 116, 0, 11, 24, 4, 6, 0, 130, 103, 104, 116, 0, 71, - 119, 3, 10, 126, 3, 0, 12, 26, 0, 129, 116, 104, 0, 17, 8, 15, 0, 129, 116, - 104, 0, 22, 24, 8, 21, 0, 131, 115, 117, 108, 116, 0, 68, 155, 3, 8, 166, 3, - 22, 226, 3, 0, 21, 4, 19, 19, 4, 0, 130, 101, 110, 116, 0, 85, 173, 3, 25, - 216, 3, 0, 68, 180, 3, 21, 191, 3, 0, 19, 4, 0, 132, 112, 97, 114, 101, 110, - 116, 0, 4, 19, 0, 68, 201, 3, 19, 209, 3, 0, 133, 112, 97, 114, 101, 110, 116, - 0, 4, 0, 131, 101, 110, 116, 0, 8, 15, 8, 21, 0, 130, 97, 110, 116, 0, 18, 6, - 0, 130, 110, 115, 116, 0, 12, 9, 8, 17, 4, 16, 0, 132, 105, 102, 101, 115, - 116, 0, 83, 255, 3, 23, 22, 4, 0, 87, 6, 4, 24, 14, 4, 0, 17, 12, 0, 131, 112, - 117, 116, 0, 18, 0, 130, 116, 112, 117, 116, 0, 19, 24, 18, 0, 131, 116, 112, - 117, 116, 0, 70, 45, 4, 8, 57, 4, 11, 67, 4, 21, 85, 4, 0, 8, 24, 20, 8, 21, - 9, 0, 129, 110, 99, 121, 0, 23, 9, 4, 22, 0, 130, 101, 116, 121, 0, 6, 21, 4, - 21, 12, 8, 11, 0, 135, 105, 101, 114, 97, 114, 99, 104, 121, 0, 4, 5, 12, 15, - 0, 130, 114, 97, 114, 121, 0}; - diff --git a/users/gourdo1/autocorrect/autocorrection_dict.txt b/users/gourdo1/autocorrect/autocorrection_dict.txt deleted file mode 100644 index b5f293d96c..0000000000 --- a/users/gourdo1/autocorrect/autocorrection_dict.txt +++ /dev/null @@ -1,473 +0,0 @@ -# Copyright 2021 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# -# This is a larger example typo dictionary containing 400 entries. It builds to -# a table of about 6000 bytes, so you'll need a keyboard with a generous -# amount of free firmware space to use the full dictionary. Alternatively, pick -# out a subset of entries to a separate file, then build a table from that. -# -# Dictionary syntax: -# Each line of this file defines one typo correction entry with the syntax -# "typo -> correction". Typos and corrections are case insensitive, and any -# whitespace before or after the typo and correction is ignored. The typo must be -# only the letters a-z, or the special character : representing a word break. -# -# For documentation about how to use this dictionary, see -# https://getreuer.info/posts/keyboards/autocorrection -# -# Further resources: -# * Wikipedia has a large list of common typos at -# https://en.wikipedia.org/wiki/Wikipedia:Lists_of_common_misspellings/For_machines -# -# * EmacsWiki has another list of typos at -# https://www.emacswiki.org/emacs/autocorrection_abbrev_defs -# -# * You can find data on English word frequencies at -# https://www.wordfrequency.info/samples.asp - - -## 10 most common words. -# The words "there", "about", "their", "would", "people", "which", "could", -# "think", "other", and "because" are among the most common words in English -# that are 5 letters or longer. (We don't include entries for words shorter than -# that to avoid false triggering.) -:htere -> there -abbout -> about -abotu -> about -baout -> about -:theri -> their -:thier -> their -:owudl -> would -woudl -> would -peaple -> people -peolpe -> people -peopel -> people -poeple -> people -poeople -> people -:hwihc -> which -whcih -> which -whihc -> which -whlch -> which -wihch -> which -coudl -> could -:htikn -> think -:htink -> think -thikn -> think -thiunk -> think -tihkn -> think -:olther -> other -:otehr -> other -baceause -> because -beacuse -> because -becasue -> because -beccause -> because -becouse -> because -becuase -> because - -## Common words, 11-20. -theese -> these -:goign -> going -:gonig -> going -:yaers -> years -:yeasr -> years -:thsoe -> those -shoudl -> should -raelly -> really -realy -> really -relaly -> really -bedore -> before -befoer -> before -littel -> little -beeing -> being -:hwile -> while - -## Common words, 21-30. -aroud -> around -arround -> around -arund -> around -thign -> thing -thigsn -> things -thnigs -> things -anohter -> another -beteen -> between -beween -> between -bewteen -> between -:eveyr -> every -:graet -> great -:agian -> again -:sicne -> since -alwasy -> always -alwyas -> always -throught -> thought - - -## Words especially susceptible to skipping or transposing a letter. -# These entries are for words that are easy enough to spell, but not necessarily -# easy to press the keys in the right order. -# Catch misspellings of "achieves", "achieving", etc. -:acheiv -> achiev -almsot -> almost -alomst -> almost -chnage -> change -chekc -> check -childen -> children -claer -> clear -comapny -> company -contian -> contain -elasped -> elapsed -feild -> field -fitler -> filter -firts -> first -follwo -> follow -:foudn -> found -frequecy -> frequency -firend -> friend -freind -> friend -heigth -> height -iamge -> image -inital -> initial -intput -> input -laguage -> language -lenght -> length -levle -> level -libary -> library -:moeny -> money -mysefl -> myself -ouptut -> output -ouput -> output -probaly -> probably -probelm -> problem -recrod -> record -reponse -> response -reprot -> report -singel -> single -stregth -> strength -strengh -> strength -tkaes -> takes -therfore -> therefore -todya -> today -toghether -> together -unkown -> unknown -unqiue -> unique -widht -> width - - -## Words with tricky spelling. -# If you are a good speller, you could drop this section. -aberation -> aberration -accross -> across -adviced -> advised -aledge -> allege -alledge -> allege -amature -> amateur -anomolous -> anomalous -anomoly -> anomaly -aparent -> apparent -aparrent -> apparent -apparant -> apparent -apparrent -> apparent -asthetic -> aesthetic -auxilary -> auxiliary -auxillary -> auxiliary -auxilliary -> auxiliary -bankrupcy -> bankruptcy -busness -> business -bussiness -> business -calander -> calendar -commitee -> committee -comittee -> committee -competance -> competence -competant -> competent -concensus -> consensus -cognizent -> cognizant -copywrite: -> copyright -choosen -> chosen -collegue -> colleague -excercise -> exercise -:grammer -> grammar -:guage -> gauge -govement -> government -govenment -> government -goverment -> government -governmnet -> government -govorment -> government -govornment -> government -guaratee -> guarantee -garantee -> guarantee -gaurantee -> guarantee -heirarchy -> hierarchy -hygeine -> hygiene -hypocracy -> hypocrisy -hypocrasy -> hypocrisy -hypocricy -> hypocrisy -hypocrit: -> hypocrite -looses: -> loses -maintence -> maintenance -morgage -> mortgage -neccesary -> necessary -necesary -> necessary -pallete -> palette -paralel -> parallel -parralel -> parallel -parrallel -> parallel -priviledge -> privilege -probablly -> probably -prominant -> prominent -propogate -> propagate -proove -> prove -psuedo -> pseudo -reciept -> receipt -# Catch misspellings of "receives", "receiving", etc. -receiev -> receiv -reciev -> receiv -recepient -> recipient -recipiant -> recipient -relevent -> relevant -repitition -> repetition -safty -> safety -saftey -> safety -# Catch misspellings of "separate", "separating", etc. -seperat -> separat -spectogram -> spectrogram -symetric -> symmetric -tolerence -> tolerance - - -## Words particularly for coding. -# Entries for common code keywords ("const") and terminology ("lookup"). -cacheing -> caching -complier -> compiler -doulbe -> double -dyanmic -> dynamic -# As in "execute", "executable", "executing", ... -excecut -> execut -failse -> false -fales -> false -fasle -> false -flase -> false -indeces -> indices -indecies -> indices -indicies -> indices -interator -> iterator -looup -> lookup -namesapce -> namespace -namespcae -> namespace -nulltpr -> nullptr -operaotr -> operator -overide -> override -ovveride -> override -poitner -> pointer -:rference -> reference -referece -> reference -singed -> signed -stirng -> string -strign -> string -swithc -> switch -swtich -> switch -teamplate -> template -tempalte -> template -:ture -> true -retrun -> return -retun -> return -reutrn -> return -cosnt -> const -virutal -> virtual -vitual -> virtual -yeild -> yield - - -## Catch skipped spaces between common words. -:alot: -> a lot -:andteh -> and the -:andthe -> and the -:asthe -> as the -:atthe -> at the -abouta -> about a -aboutit -> about it -aboutthe -> about the -:tothe -> to the -didnot -> did not -fromthe -> from the - - -## Various additional entries. -:agred -> agreed -:ajust -> adjust -:anual -> annual -:asign -> assign -:aslo: -> also -:casue -> cause -:choses -> chooses -:gaurd -> guard -:haev -> have -:hapen -> happen -:idaes -> ideas -:jsut: -> just -:jstu: -> just -:knwo -> know -:konw -> know -:kwno -> know -:ocuntry -> country -:ocur -> occur -:socre -> score -:szie -> size -:the:the: -> the -:turth -> truth -:uesd: -> used -:usally -> usually -abilties -> abilities -abilty -> ability -abvove -> above -accesories -> accessories -accomodate -> accommodate -acommodate -> accommodate -acomplish -> accomplish -actualy -> actually -acurate -> accurate -acutally -> actually -addtion -> addition -againnst -> against -aganist -> against -aggreed -> agreed -agianst -> against -ahppn -> happen -allign -> align -anytying -> anything -aquire -> acquire -availabe -> available -availaible -> available -availalbe -> available -availble -> available -availiable -> available -avalable -> available -avaliable -> available -avilable -> available -bandwith -> bandwidth -begginer -> beginner -beleif -> belief -beleive -> believe -belive -> believe -breif -> brief -burried -> buried -caluclate -> calculate -caluculate -> calculate -calulate -> calculate -catagory -> category -cauhgt -> caught -ceratin -> certain -certian -> certain -cheif -> chief -cieling -> ceiling -circut -> circuit -clasic -> classic -cmoputer -> computer -coform -> conform -comming: -> coming -considerd -> considered -dervied -> derived -desicion -> decision -diferent -> different -diferrent -> different -differnt -> different -diffrent -> different -divison -> division -effecient -> efficient -eligable -> eligible -elpased -> elapsed -embarass -> embarrass -embeded -> embedded -encypt -> encrypt -finaly -> finally -foriegn -> foreign -foward -> forward -fraciton -> fraction -fucntion -> function -fufill -> fulfill -fullfill -> fulfill -futher -> further -ganerate -> generate -generaly -> generally -greatful -> grateful -heigher -> higher -higest -> highest -howver -> however -hydogen -> hydrogen -importamt -> important -inclued -> include -insted -> instead -intrest -> interest -invliad -> invalid -largst -> largest -learnign -> learning -liasion -> liaison -likly -> likely -lisense -> license -listner -> listener -macthing -> matching -manefist -> manifest -mesage -> message -naturual -> natural -occassion -> occasion -occured -> occurred -particualr -> particular -paticular -> particular -peice -> piece -perhasp -> perhaps -perheaps -> perhaps -perhpas -> perhaps -perphas -> perhaps -persue -> pursue -posess -> possess -postion -> position -preiod -> period -primarly -> primarily -privte -> private -proccess -> process -proeprty -> property -propery -> property -realtion -> relation -reasearch -> research -recuring -> recurring -refered -> referred -regluar -> regular -releated -> related -resutl -> result -reuslt -> result -reveiw -> review -satisifed -> satisfied -scheduel -> schedule -sequnce -> sequence -similiar -> similar -simmilar -> similar -slighly -> slightly -somehwat -> somewhat -statment -> statement -sucess -> success -succsess -> success -sugest -> suggest -sumary -> summary -supress -> suppress -surpress -> suppress -thresold -> threshold -tongiht -> tonight -tranpose -> transpose -typcial -> typical -udpate -> update -ususally -> usually -verticies -> vertices -whereever -> wherever -wherre -> where -wierd -> weird - diff --git a/users/gourdo1/autocorrect/make_autocorrection_data.py b/users/gourdo1/autocorrect/make_autocorrection_data.py deleted file mode 100644 index 8e0bcf9e8e..0000000000 --- a/users/gourdo1/autocorrect/make_autocorrection_data.py +++ /dev/null @@ -1,303 +0,0 @@ -# Copyright 2021-2022 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Python program to make autocorrection_data.h. - -This program reads "autocorrection_dict.txt" and generates a C source file -"autocorrection_data.h" with a serialized trie embedded as an array. Run this -program without arguments like - -$ python3 make_autocorrection_data.py - -Or to read from a different typo dict file, pass it as the first argument like - -$ python3 make_autocorrection_data.py dict.txt - -Each line of the dict file defines one typo and its correction with the syntax -"typo -> correction". Blank lines or lines starting with '#' are ignored. -Example: - - :thier -> their - dosen't -> doesn't - fitler -> filter - lenght -> length - ouput -> output - widht -> width - -See autocorrection_dict_extra.txt for a larger example. - -For full documentation, see -https://getreuer.info/posts/keyboards/autocorrection -""" - -import sys -import textwrap -from typing import Any, Dict, Iterator, List, Tuple - -try: - from english_words import english_words_lower_alpha_set as CORRECT_WORDS -except ImportError: - print('Autocorrection will falsely trigger when a typo is a substring of a ' - 'correctly spelled word. To check for this, install the english_words ' - 'package and rerun this script:\n\n pip install english_words\n') - # Use a minimal word list as a fallback. - CORRECT_WORDS = ('apparent', 'association', 'available', 'classification', - 'effect', 'entertainment', 'fantastic', 'information', - 'integrate', 'international', 'language', 'loosest', - 'manual', 'nothing', 'provides', 'reference', 'statehood', - 'technology', 'virtually', 'wealthier', 'wonderful') - -KC_A = 4 -KC_SPC = 0x2c -KC_QUOT = 0x34 - -TYPO_CHARS = dict( - [ - ("'", KC_QUOT), - (':', KC_SPC), # "Word break" character. - ] + - # Characters a-z. - [(chr(c), c + KC_A - ord('a')) for c in range(ord('a'), ord('z') + 1)] -) - - -def parse_file(file_name: str) -> List[Tuple[str, str]]: - """Parses autocorrections dictionary file. - - Each line of the file defines one typo and its correction with the syntax - "typo -> correction". Blank lines or lines starting with '#' are ignored. The - function validates that typos only have characters in TYPO_CHARS, that - typos are not substrings of other typos, and checking that typos don't trigger - on CORRECT_WORDS. - - Args: - file_name: String, path of the autocorrections dictionary. - Returns: - List of (typo, correction) tuples. - """ - - autocorrections = [] - typos = set() - for line_number, typo, correction in parse_file_lines(file_name): - if typo in typos: - print(f'Warning:{line_number}: Ignoring duplicate typo: "{typo}"') - continue - - # Check that `typo` is valid. - if not(all([c in TYPO_CHARS for c in typo])): - print(f'Error:{line_number}: Typo "{typo}" has ' - 'characters other than ' + ''.join(TYPO_CHARS.keys())) - sys.exit(1) - for other_typo in typos: - if typo in other_typo or other_typo in typo: - print(f'Error:{line_number}: Typos may not be substrings of one ' - f'another, otherwise the longer typo would never trigger: ' - f'"{typo}" vs. "{other_typo}".') - sys.exit(1) - if len(typo) < 5: - print(f'Warning:{line_number}: It is suggested that typos are at ' - f'least 5 characters long to avoid false triggers: "{typo}"') - - check_typo_against_dictionary(line_number, typo) - - autocorrections.append((typo, correction)) - typos.add(typo) - - return autocorrections - - -def make_trie(autocorrections: List[Tuple[str, str]]) -> Dict[str, Any]: - """Makes a trie from the the typos, writing in reverse. - - Args: - autocorrections: List of (typo, correction) tuples. - Returns: - Dict of dict, representing the trie. - """ - trie = {} - for typo, correction in autocorrections: - node = trie - for letter in typo[::-1]: - node = node.setdefault(letter, {}) - node['LEAF'] = (typo, correction) - - return trie - - -def parse_file_lines(file_name: str) -> Iterator[Tuple[int, str, str]]: - """Parses lines read from `file_name` into typo-correction pairs.""" - - line_number = 0 - for line in open(file_name, 'rt'): - line_number += 1 - line = line.strip() - if line and line[0] != '#': - # Parse syntax "typo -> correction", using strip to ignore indenting. - tokens = [token.strip() for token in line.split('->', 1)] - if len(tokens) != 2 or not tokens[0]: - print(f'Error:{line_number}: Invalid syntax: "{line}"') - sys.exit(1) - - typo, correction = tokens - typo = typo.lower() # Force typos to lowercase. - typo = typo.replace(' ', ':') - - yield line_number, typo, correction - - -def check_typo_against_dictionary(line_number: int, typo: str) -> None: - """Checks `typo` against English dictionary words.""" - - if typo.startswith(':') and typo.endswith(':'): - if typo[1:-1] in CORRECT_WORDS: - print(f'Warning:{line_number}: Typo "{typo}" is a correctly spelled ' - 'dictionary word.') - elif typo.startswith(':') and not typo.endswith(':'): - for word in CORRECT_WORDS: - if word.startswith(typo[1:]): - print(f'Warning:{line_number}: Typo "{typo}" would falsely trigger ' - f'on correctly spelled word "{word}".') - elif not typo.startswith(':') and typo.endswith(':'): - for word in CORRECT_WORDS: - if word.endswith(typo[:-1]): - print(f'Warning:{line_number}: Typo "{typo}" would falsely trigger ' - f'on correctly spelled word "{word}".') - elif not typo.startswith(':') and not typo.endswith(':'): - for word in CORRECT_WORDS: - if typo in word: - print(f'Warning:{line_number}: Typo "{typo}" would falsely trigger ' - f'on correctly spelled word "{word}".') - - -def serialize_trie(autocorrections: List[Tuple[str, str]], - trie: Dict[str, Any]) -> List[int]: - """Serializes trie and correction data in a form readable by the C code. - - Args: - autocorrections: List of (typo, correction) tuples. - trie: Dict of dicts. - Returns: - List of ints in the range 0-255. - """ - table = [] - - # Traverse trie in depth first order. - def traverse(trie_node: Dict[str, Any]) -> Dict[str, Any]: - if 'LEAF' in trie_node: # Handle a leaf trie node. - typo, correction = trie_node['LEAF'] - word_boundary_ending = typo[-1] == ':' - typo = typo.strip(':') - i = 0 # Make the autocorrection data for this entry and serialize it. - while i < min(len(typo), len(correction)) and typo[i] == correction[i]: - i += 1 - backspaces = len(typo) - i - 1 + word_boundary_ending - assert 0 <= backspaces <= 63 - correction = correction[i:] - data = [backspaces + 128] + list(bytes(correction, 'ascii')) + [0] - - entry = {'data': data, 'links': [], 'byte_offset': 0} - table.append(entry) - elif len(trie_node) == 1: # Handle trie node with a single child. - c, trie_node = next(iter(trie_node.items())) - entry = {'chars': c, 'byte_offset': 0} - - # It's common for a trie to have long chains of single-child nodes. We - # find the whole chain so that we can serialize it more efficiently. - while len(trie_node) == 1 and 'LEAF' not in trie_node: - c, trie_node = next(iter(trie_node.items())) - entry['chars'] += c - - table.append(entry) - entry['links'] = [traverse(trie_node)] - else: # Handle trie node with multiple children. - entry = {'chars': ''.join(sorted(trie_node.keys())), 'byte_offset': 0} - table.append(entry) - entry['links'] = [traverse(trie_node[c]) for c in entry['chars']] - return entry - - traverse(trie) - - def serialize(e: Dict[str, Any]) -> List[int]: - if not e['links']: # Handle a leaf table entry. - return e['data'] - elif len(e['links']) == 1: # Handle a chain table entry. - return [TYPO_CHARS[c] for c in e['chars']] + [0] - else: # Handle a branch table entry. - data = [] - for c, link in zip(e['chars'], e['links']): - data += [TYPO_CHARS[c] | (0 if data else 64)] + encode_link(link) - return data + [0] - - byte_offset = 0 - for e in table: # To encode links, first compute byte offset of each entry. - e['byte_offset'] = byte_offset - byte_offset += len(serialize(e)) - - return [b for e in table for b in serialize(e)] # Serialize final table. - - -def encode_link(link: Dict[str, Any]) -> List[int]: - """Encodes a node link as two bytes.""" - byte_offset = link['byte_offset'] - if not (0 <= byte_offset <= 0xffff): - print('Error: The autocorrection table is too large, a node link exceeds ' - '64KB limit. Try reducing the autocorrection dict to fewer entries.') - sys.exit(1) - return [byte_offset & 255, byte_offset >> 8] - - -def write_generated_code(autocorrections: List[Tuple[str, str]], - data: List[int], - file_name: str) -> None: - """Writes autocorrection data as generated C code to `file_name`. - - Args: - autocorrections: List of (typo, correction) tuples. - data: List of ints in 0-255, the serialized trie. - file_name: String, path of the output C file. - """ - assert all(0 <= b <= 255 for b in data) - - def typo_len(e: Tuple[str, str]) -> int: - return len(e[0]) - - min_typo = min(autocorrections, key=typo_len)[0] - max_typo = max(autocorrections, key=typo_len)[0] - generated_code = ''.join([ - '// Generated code.\n\n', - f'// Autocorrection dictionary ({len(autocorrections)} entries):\n', - ''.join(sorted(f'// {typo:<{len(max_typo)}} -> {correction}\n' - for typo, correction in autocorrections)), - f'\n#define AUTOCORRECTION_MIN_LENGTH {len(min_typo)} // "{min_typo}"\n', - f'#define AUTOCORRECTION_MAX_LENGTH {len(max_typo)} // "{max_typo}"\n\n', - textwrap.fill('static const uint8_t autocorrection_data[%d] PROGMEM = {%s};' % ( - len(data), ', '.join(map(str, data))), width=80, subsequent_indent=' '), - '\n\n']) - - with open(file_name, 'wt') as f: - f.write(generated_code) - - -def main(argv): - dict_file = argv[1] if len(argv) > 1 else 'autocorrection_dict.txt' - autocorrections = parse_file(dict_file) - trie = make_trie(autocorrections) - data = serialize_trie(autocorrections, trie) - print(f'Processed %d autocorrection entries to table with %d bytes.' - % (len(autocorrections), len(data))) - write_generated_code(autocorrections, data, 'autocorrection_data.h') - - -if __name__ == '__main__': - main(sys.argv) diff --git a/users/gourdo1/custom_double_taps.h b/users/gourdo1/custom_double_taps.h deleted file mode 100644 index fe97b8cd1f..0000000000 --- a/users/gourdo1/custom_double_taps.h +++ /dev/null @@ -1,101 +0,0 @@ -// Copyright 2022 Google LLC -// SPDX-License-Identifier: Apache-2.0 - -#pragma once - -#include "gourdo1.h" - -static bool process_capsnum(uint16_t keycode, keyrecord_t * record) { - static bool toggled = false; - static bool tapped = false; - static uint16_t tap_timer = 0; - - if (keycode == CAPSNUM) { - if (user_config.double_tap_shift_for_capslock) { - // Act as TT(_NUMPADMOUSE) - if (record -> event.pressed) { // CAPSNUM key was pressed - // Check whether the key was recently tapped - if (tapped && !timer_expired(record -> event.time, tap_timer)) { - // This is a double tap (or possibly a triple tap or more) - // Toggle the layer on. - toggled = true; - } else if (toggled) { - // Otherwise if currently toggled, turn it off - toggled = false; - tapped = false; - layer_off(_NUMPADMOUSE); - } - // Set that the first tap occurred in a potential double tap - tapped = true; - tap_timer = record -> event.time + TAPPING_TERM; - layer_on(_NUMPADMOUSE); - } else if (!toggled) { - // If not currently toggled, turn off on key release - layer_off(_NUMPADMOUSE); - return false; - } - } else { // When double_tap_shift_for_capslock == false - // Act as KC_CAPS - if (record -> event.pressed) { - register_code(KC_CAPS); - } else { - unregister_code(KC_CAPS); - } - } - return false; - } else { - // On an event with any other key, reset the double tap state - tapped = false; - } - return true; -} - -static bool process_esc_to_base(uint16_t keycode, keyrecord_t * record) { - static bool tapped = false; - static uint16_t tap_timer = 0; - - if (keycode == KC_ESC) { - if (user_config.esc_double_tap_to_baselyr) { - if (record -> event.pressed) { - if (tapped && !timer_expired(record -> event.time, tap_timer)) { - // The key was double tapped. - layer_clear(); - } - tapped = true; - tap_timer = record -> event.time + TAPPING_TERM; - } - } - } else { - // On an event with any other key, reset the double tap state. - tapped = false; - } - return true; -} - -static bool process_lsft_for_caps(uint16_t keycode, keyrecord_t * record) { - static bool tapped = false; - static uint16_t tap_timer = 0; - - if (keycode == KC_LSFT) { - if (user_config.double_tap_shift_for_capslock) { - if (!keymap_config.no_gui) { - if (record->event.pressed) { - if (tapped && !timer_expired(record->event.time, tap_timer)) { - // The key was double tapped. - //clear_mods(); // If needed, clear the mods. - // Do something interesting... - register_code(KC_CAPS); - } - tapped = true; - tap_timer = record->event.time + TAPPING_TERM; - } else { - unregister_code(KC_CAPS); - } - } - } - } else { - // On an event with any other key, reset the double tap state. - tapped = false; - } - return true; -} diff --git a/users/gourdo1/gourdo1.c b/users/gourdo1/gourdo1.c deleted file mode 100644 index 377ccc0a19..0000000000 --- a/users/gourdo1/gourdo1.c +++ /dev/null @@ -1,631 +0,0 @@ -/* Copyright 2021 Jonavin Eng @Jonavin - Copyright 2022 gourdo1 - -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 . -*/ - -#include QMK_KEYBOARD_H - -#include "gourdo1.h" - -#include "custom_double_taps.h" - -#include "autocorrect/autocorrection.h" - -// RGB NIGHT MODE -#ifdef RGB_MATRIX_ENABLE -static bool rgb_nightmode = false; - -// Turn on/off NUM LOCK if current state is different -void activate_rgb_nightmode(bool turn_on) { - if (rgb_nightmode != turn_on) { - rgb_nightmode = !rgb_nightmode; - } -} - -bool get_rgb_nightmode(void) { - return rgb_nightmode; -} -#endif // RGB_MATRIX_ENABLE - -// TIMEOUTS -#ifdef IDLE_TIMEOUT_ENABLE -static uint16_t timeout_timer = 0; -static uint16_t timeout_counter = 0; //in minute intervals -static uint16_t timeout_threshold = TIMEOUT_THRESHOLD_DEFAULT; - -uint16_t get_timeout_threshold(void) { - return timeout_threshold; -} - -void timeout_reset_timer(void) { - timeout_timer = timer_read(); - timeout_counter = 0; -}; - -void timeout_update_threshold(bool increase) { - if (increase && timeout_threshold < TIMEOUT_THRESHOLD_MAX) timeout_threshold++; - if (!increase && timeout_threshold > 0) timeout_threshold--; -}; - -void timeout_tick_timer(void) { - if (timeout_threshold > 0) { - if (timer_elapsed(timeout_timer) >= 60000) { // 1 minute tick - timeout_counter++; - timeout_timer = timer_read(); - } - #ifdef RGB_MATRIX_ENABLE - if (timeout_threshold > 0 && timeout_counter >= timeout_threshold) { - rgb_matrix_disable_noeeprom(); - } - #endif - } // timeout_threshold = 0 will disable timeout -} - -#endif // IDLE_TIMEOUT_ENABLE - -#if defined(ALTTAB_SCROLL_ENABLE) || defined(IDLE_TIMEOUT_ENABLE) // timer features -__attribute__((weak)) void matrix_scan_keymap(void) {} - -void matrix_scan_user(void) { - #ifdef ALTTAB_SCROLL_ENABLE - encoder_tick_alttabscroll(); - #endif - #ifdef IDLE_TIMEOUT_ENABLE - timeout_tick_timer(); - #endif - matrix_scan_keymap(); -} -#endif // ALTTAB_SCROLL_ENABLE or IDLE_TIMEOUT_ENABLE - -// Initialize variable holding the binary representation of active modifiers. -uint8_t mod_state; - -// ============================================= PROCESS KEY CODES ============================================= - -__attribute__((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t * record) { - return true; -} - -bool process_record_user(uint16_t keycode, keyrecord_t * record) { - mod_state = get_mods(); - if (!process_record_keymap(keycode, record)) { return false; } - if (!process_capsnum(keycode, record)) { return false; } - if (!process_esc_to_base(keycode, record)) { return false; } - if (!process_lsft_for_caps(keycode, record)) { return false; } - if (!process_autocorrection(keycode, record)) { return false; } - - // Key macros ... - switch (keycode) { - - // User configuration toggles - case PRNCONF: // Print verbose status of all user_config toggles (open a text editor before engaging!!) - if (record->event.pressed) { - send_string("\n"SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)"#########"); - send_string(" gourdo1" SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_3)SS_TAP(X_KP_9))"s GMMK Pro User Settings "); - send_string("#########"SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)"\n"); - send_string("Hold "SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_1))"Fn"SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_3))" and the number corresponding to a setting below to toggle.\n"); - send_string("Re"SS_TAP(X_KP_MINUS)"print this screen with "SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_1))"Fn" SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_3)) SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_1))"`" SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_3))" to see your changes reflected.\n"); - send_string("Config also visible as RGB under number keys by holding "SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_1))"Fn" SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_3))".\n"); - send_string(SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)); - send_string(SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)); - send_string(SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)); - send_string(SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)"\n"); - send_string("1. CapsLock RGB highlight alpha keys................ "); - if (user_config.rgb_hilite_caps) { - send_string(SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_1))"ON" SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_3))"\n"); - } else { - send_string(SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_1))"OFF" SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_3))"\n"); - } - send_string("2. Numpad RGB highlight layer keys.................. "); - if (user_config.rgb_hilite_numpad) { - send_string(SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_1))"ON" SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_3))"\n"); - } else { - send_string(SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_1))"OFF" SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_3))"\n"); - } - send_string("3. Double tap ESC to revert to BASE layer........... "); - if (user_config.esc_double_tap_to_baselyr) { - send_string(SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_1))"ON" SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_3))"\n"); - } else { - send_string(SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_1))"OFF" SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_3))"\n"); - } - send_string("4. DEL "SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_3)SS_TAP(X_KP_8))" HOME key locations......................... "); - if (user_config.del_right_home_top) { - send_string(SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_1))"HOME on F13"SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_5)SS_TAP(X_KP_9))" DEL right of BKSPC" SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_3))"\n"); - } else { - send_string(SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_1))"DEL on F13"SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_5)SS_TAP(X_KP_9))" HOME right of BKSPC" SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_3))"\n"); - } - send_string("5. Numpad on CapsLock"SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_5)SS_TAP(X_KP_9))" double tap LSHIFT for Caps... "); - if (user_config.double_tap_shift_for_capslock) { - send_string(SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_1))"ON" SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_3))"\n"); - } else { - send_string(SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_1))"OFF" SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_3))"\n"); - } - send_string("6. Encoder button function.......................... "); - if (user_config.encoder_press_mute_or_media) { - send_string(SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_1))"MUTE" SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_3))"\n"); - } else { - send_string(SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_1))"MEDIA PLAY"SS_TAP(X_KP_SLASH) "PAUSE" SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_3))"\n"); - } - send_string("7. Insert function accessed with.................... "); - if (user_config.ins_on_shft_bkspc_or_del) { - send_string(SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_1))"SHIFT"SS_TAP(X_KP_MINUS)"BKSPC"SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_3))"\n"); - } else { - send_string(SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_1))"SHIFT"SS_TAP(X_KP_MINUS)"DEL"SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_3))"\n"); - } - send_string("8. Force SHIFT "SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_3)SS_TAP(X_KP_8))" CTRL"SS_TAP(X_KP_MINUS)"SPACE to function like SPACE.. "); - if (user_config.disable_space_mods) { - send_string(SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_1))"ON"SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_3))"\n"); - } else { - send_string(SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_1))"OFF"SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_3))"\n"); - } - send_string("9. AutoCorrect...................................... "); - if (user_config.autocorrect) { - send_string(SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_1))"ON"SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_3))"\n"); - } else { - send_string(SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_1))"OFF"SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_3))"\n"); - } - send_string("0. CapsLock highlights extended alphas "SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_4)SS_TAP(X_KP_0))"ISO"SS_TAP(X_KP_MINUS)"only"SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_4)SS_TAP(X_KP_1))"... "); - if (user_config.rgb_english_caps) { - send_string(SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_1))"OFF"SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_3))"\n"); - } else { - send_string(SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_1))"ON"SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_3))"\n"); - } - send_string("\nThe latest firmware updates are always here"SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_5)SS_TAP(X_KP_8))" https" SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_5)SS_TAP(X_KP_8))SS_TAP(X_KP_SLASH)SS_TAP(X_KP_SLASH) "github.com"SS_TAP(X_KP_SLASH) "gourdo1"SS_TAP(X_KP_SLASH)"gmmkpro"SS_TAP(X_KP_MINUS)"media\n"); - } - break; - - case TG_CAPS: // Toggle RGB highlighting of Capslock state - if (record->event.pressed) { - user_config.rgb_hilite_caps ^= 1; // Toggles the status - eeconfig_update_user(user_config.raw); // Writes the new status to EEPROM - } - break; - case TG_PAD: // Toggle RGB highlighting of Numpad state - if (record->event.pressed) { - user_config.rgb_hilite_numpad ^= 1; // Toggles the status - eeconfig_update_user(user_config.raw); // Writes the new status to EEPROM - } - break; - case TG_ESC: // Toggle alternate ESC functionality - if (record->event.pressed) { - user_config.esc_double_tap_to_baselyr ^= 1; // Toggles the status - eeconfig_update_user(user_config.raw); // Writes the new status to EEPROM - } - break; - case TG_DEL: // Toggle alternate placement of DEL and HOME keys - if (record->event.pressed) { - user_config.del_right_home_top ^= 1; // Toggles the status - eeconfig_update_user(user_config.raw); // Writes the new status to EEPROM - } - break; - case TG_TDCAP: // Toggle alternate Capslock/Numpad functionality - if (record->event.pressed) { - user_config.double_tap_shift_for_capslock ^= 1; // Toggles the status - eeconfig_update_user(user_config.raw); // Writes the new status to EEPROM - } - break; - case TG_ENC: // Toggle Encoder function - if (record->event.pressed) { - user_config.encoder_press_mute_or_media ^= 1; // Toggles the status - eeconfig_update_user(user_config.raw); // Writes the new status to EEPROM - } - break; - case TG_INS: // Toggle Encoder function - if (record->event.pressed) { - user_config.ins_on_shft_bkspc_or_del ^= 1; // Toggles the status - eeconfig_update_user(user_config.raw); // Writes the new status to EEPROM - } - break; - case TG_SPCMOD: // Toggle forcing SHIFT&CTRL-SPACE to function like SPACE - if (record->event.pressed) { - user_config.disable_space_mods ^= 1; // Toggles the status - eeconfig_update_user(user_config.raw); // Writes the new status to EEPROM - } - break; - case TG_AUTOCR: // Toggle AutoCorrect - if (record->event.pressed) { - user_config.autocorrect ^= 1; // Toggles the status - eeconfig_update_user(user_config.raw); // Writes the new status to EEPROM - } - break; - case TG_ENGCAP: // Toggle highlighting Non-English letters during CAPSLOCK - if (record->event.pressed) { - user_config.rgb_english_caps ^= 1; // Toggles the status - eeconfig_update_user(user_config.raw); // Writes the new status to EEPROM - } - break; - //return false; - - // Key to the left of encoder function (default HOME) - case LEFTOFENC: - if (!(user_config.del_right_home_top)) { - if (!(user_config.ins_on_shft_bkspc_or_del)) { - static bool inskey_registered; - if (record -> event.pressed) { - // Detect the activation of either shift keys - if (mod_state & MOD_MASK_SHIFT) { - // First temporarily canceling both shifts so that - // shift isn't applied to the KC_INS keycode - del_mods(MOD_MASK_SHIFT); - register_code(KC_INS); - // Update the boolean variable to reflect the status of KC_INS - inskey_registered = true; - // Reapplying modifier state so that the held shift key(s) - // still work even after having tapped the key. - set_mods(mod_state); - return false; - } else { - register_code(KC_DEL); - return false; - } - } else { // on release of KC_DEL - // In case KC_INS is still being sent even after the release of KC_DEL - if (inskey_registered) { - unregister_code(KC_INS); - inskey_registered = false; - return false; - } else { - unregister_code(KC_DEL); - return false; - } - } - } else { - if (record -> event.pressed) { - register_code(KC_DEL); - return false; - } else { - unregister_code(KC_DEL); - return false; - } - } - } else { - if (record -> event.pressed) { - register_code(KC_HOME); - return false; - } else { - unregister_code(KC_HOME); - return false; - } - } - break; - - // Key below encoder function (default DEL) - case BELOWENC: - if (user_config.del_right_home_top) { - if (!(user_config.ins_on_shft_bkspc_or_del)) { - static bool inskey_registered; - if (record -> event.pressed) { - // Detect the activation of either shift keys - if (mod_state & MOD_MASK_SHIFT) { - // First temporarily canceling both shifts so that - // shift isn't applied to the KC_INS keycode - del_mods(MOD_MASK_SHIFT); - register_code(KC_INS); - // Update the boolean variable to reflect the status of KC_INS - inskey_registered = true; - // Reapplying modifier state so that the held shift key(s) - // still work even after having tapped the key. - set_mods(mod_state); - return false; - } else { - register_code(KC_DEL); - return false; - } - } else { // on release of KC_DEL - // In case KC_INS is still being sent even after the release of KC_DEL - if (inskey_registered) { - unregister_code(KC_INS); - inskey_registered = false; - return false; - } else { - unregister_code(KC_DEL); - return false; - } - } - } else { - if (record -> event.pressed) { - register_code(KC_DEL); - return false; - } else { - unregister_code(KC_DEL); - return false; - } - } - } else { - if (record -> event.pressed) { - register_code(KC_HOME); - return false; - } else { - unregister_code(KC_HOME); - return false; - } - } - break; - - // Encoder button function - case ENCFUNC: - if (user_config.encoder_press_mute_or_media) { - if (record -> event.pressed) { - register_code(KC_MUTE); - } else unregister_code16(keycode); - } - else { - if (record -> event.pressed) { - register_code(KC_MPLY); - } else unregister_code16(keycode); - } - break; - - // DotCom domain macros - case DOTCOM: - if (record -> event.pressed) { - send_string(".com"); - } else { - // when keycode is released - } - break; - case YAHOO: - if (record -> event.pressed) { - send_string("yahoo.com"); - } else { - // when keycode is released - } - break; - case OUTLOOK: - if (record -> event.pressed) { - send_string("outlook.com"); - } else { - // when keycode is released - } - break; - case GMAIL: - if (record -> event.pressed) { - send_string("gmail.com"); - } else { - // when keycode is released - } - break; - case HOTMAIL: - if (record -> event.pressed) { - send_string("hotmail.com"); - } else { - // when keycode is released - } - break; - - // Windows Key lockout - case WINLOCK: - if (record -> event.pressed) { - keymap_config.no_gui = !keymap_config.no_gui; //toggle status - } else unregister_code16(keycode); - break; - - // Double Zero - case KC_00: - if (record -> event.pressed) { - // when keycode KC_00 is pressed - send_string(SS_TAP(X_KP_0)SS_TAP(X_KP_0)); - } else unregister_code16(keycode); - break; - - // Treat Control & Shift-Space as if regular Space - case KC_SPC: - if (user_config.disable_space_mods) { - // Initialize a boolean variable that keeps track of the space key status: registered or not? - static bool spckey_registered; - if (record -> event.pressed) { - // Detect the activation of either ctrl keys - if (mod_state & MOD_MASK_CTRL) { - // First temporarily canceling both ctrls so that - // ctrl isn't applied to the KC_SPC keycode - del_mods(MOD_MASK_CTRL); - register_code(KC_SPC); - // Update the boolean variable to reflect the status of KC_SPC - spckey_registered = true; - // Reapplying modifier state so that the held ctrl key(s) - // still work even after having tapped the Space key. - set_mods(mod_state); - return false; - } - else if (mod_state & MOD_MASK_SHIFT) { - // First temporarily canceling both shifts so that - // shift isn't applied to the KC_SPC keycode - del_mods(MOD_MASK_SHIFT); - register_code(KC_SPC); - // Update the boolean variable to reflect the status of KC_SPC - spckey_registered = true; - // Reapplying modifier state so that the held shift key(s) - // still work even after having tapped the Space key. - set_mods(mod_state); - return false; - } - } else { // on release of KC_SPC - // In case KC_SPC is still being sent even after the release of KC_SPC - if (spckey_registered) { - unregister_code(KC_SPC); - spckey_registered = false; - return false; - } - } - } - break; - - // INS as SHIFT-modified BackSpace key - case KC_BSPC: { - if (user_config.ins_on_shft_bkspc_or_del) { - // Initialize a boolean variable that keeps track of the ins key status: registered or not? - static bool inskey_registered; - if (record -> event.pressed) { - // Detect the activation of either shift keys - if (mod_state & MOD_MASK_SHIFT) { - // First temporarily canceling both shifts so that - // shift isn't applied to the KC_INS keycode - del_mods(MOD_MASK_SHIFT); - register_code(KC_INS); - // Update the boolean variable to reflect the status of KC_INS - inskey_registered = true; - // Reapplying modifier state so that the held shift key(s) - // still work even after having tapped the key. - set_mods(mod_state); - return false; - } - } else { // on release of KC_BSPC - // In case KC_INS is still being sent even after the release of KC_BSPC - if (inskey_registered) { - unregister_code(KC_INS); - inskey_registered = false; - return false; - } - } - } - } - break; - - #ifdef IDLE_TIMEOUT_ENABLE - case RGB_TOI: - if (record -> event.pressed) { - timeout_update_threshold(true); - } else unregister_code16(keycode); - break; - case RGB_TOD: - if (record -> event.pressed) { - timeout_update_threshold(false); //decrease timeout - } else unregister_code16(keycode); - break; - #endif // IDLE_TIMEOUT_ENABLE - #ifdef RGB_MATRIX_ENABLE - case RGB_NITE: - if (record -> event.pressed) { - rgb_nightmode = !rgb_nightmode; - } else unregister_code16(keycode); - break; - #endif // RGB_MATRIX_ENABLE - - #ifdef EMOTICON_ENABLE - case EMO_SHRUG: - if (record -> event.pressed) send_string("`\\_(\"/)_/`"); - else unregister_code16(keycode); - break; - case EMO_CONFUSE: - if (record -> event.pressed) send_string("(*_*)"); - else unregister_code16(keycode); - break; - case EMO_TEARS: - if (record -> event.pressed) send_string("(T_T)"); - else unregister_code16(keycode); - break; - case EMO_NERVOUS: - if (record -> event.pressed) send_string("(~_~;)"); - else unregister_code16(keycode); - break; - case EMO_JOY: - if (record -> event.pressed) send_string("(^o^)"); - else unregister_code16(keycode); - break; - case EMO_SAD: - if (record -> event.pressed) send_string(":'-("); - else unregister_code16(keycode); - break; - #endif // EMOTICON_ENABLE - - #ifdef ALTTAB_SCROLL_ENABLE - case KC_TSTOG: - if (record -> event.pressed) encoder_toggle_alttabscroll(); - else unregister_code16(keycode); - break; - #endif // ALTTAB_SCROLL_ENABLE - - default: - if (record -> event.pressed) { - #ifdef RGB_MATRIX_ENABLE - rgb_matrix_enable(); - #endif - #ifdef IDLE_TIMEOUT_ENABLE - timeout_reset_timer(); //reset activity timer - #endif - } - break; - } - return true; -}; - -// Define custom Caps Word continuity characters -bool caps_word_press_user(uint16_t keycode) { - switch (keycode) { - // Keycodes that continue Caps Word, with shift applied. - case KC_A ... KC_Z: - case KC_TILD: - case KC_UNDS: - case KC_DQT: - case KC_COLN: - case KC_RSFT: - case KC_LSFT: - add_weak_mods(MOD_BIT(KC_LSFT)); // Apply shift to next key. - return true; - - // Keycodes that continue Caps Word, without shifting. - case KC_1 ... KC_0: - case KC_GRV: - case KC_MINS: - case KC_QUOT: - case KC_SCLN: - case KC_BSPC: - case KC_DEL: - return true; - - default: - return false; // Deactivate Caps Word. - } -} - -// Turn on/off NUM LOCK if current state is different -void activate_numlock(bool turn_on) { - if (host_keyboard_led_state().num_lock != turn_on) { - tap_code(KC_NUM_LOCK); - } -} - -// INITIAL STARTUP -__attribute__((weak)) void keyboard_post_init_keymap(void) { -} - -void keyboard_post_init_user(void) { - // Read the user config from EEPROM - user_config.raw = eeconfig_read_user(); - keyboard_post_init_keymap(); - #ifdef STARTUP_NUMLOCK_ON - activate_numlock(true); // turn on Num lock by default so that the numpad layer always has predictable results - #endif // STARTUP_NUMLOCK_ON - #ifdef IDLE_TIMEOUT_ENABLE - timeout_timer = timer_read(); // set initial time for idle timeout - #endif -} - -/* Set defaults for EEPROM user configuration variables */ -void eeconfig_init_user(void) { - user_config.raw = 0; - user_config.rgb_hilite_caps = true; - user_config.rgb_hilite_numpad = true; - user_config.double_tap_shift_for_capslock = true; - user_config.del_right_home_top = true; - user_config.encoder_press_mute_or_media = true; - user_config.esc_double_tap_to_baselyr = true; - user_config.ins_on_shft_bkspc_or_del = true; - user_config.disable_space_mods = true; - user_config.autocorrect = true; - user_config.rgb_english_caps = true; - - eeconfig_update_user(user_config.raw); -} diff --git a/users/gourdo1/gourdo1.h b/users/gourdo1/gourdo1.h deleted file mode 100644 index a198fd0805..0000000000 --- a/users/gourdo1/gourdo1.h +++ /dev/null @@ -1,148 +0,0 @@ -/* Copyright 2021 Jonavin Eng @Jonavin - Copyright 2022 gourdo1 - -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 . -*/ - -#pragma once - -// LAYERS -- Note: to avoid compile problems, make sure total layers matches DYNAMIC_KEYMAP_LAYER_COUNT defined in config.h (where _COLEMAK layer is defined) -enum custom_user_layers { - _BASE, - _FN1, - _NUMPADMOUSE, - _MOUSEKEY, - #ifdef GAME_ENABLE - _GAME - #endif //GAME_ENABLE -}; - -#define KC_CAD LALT(LCTL(KC_DEL)) -#define LOCKPC LGUI(KC_L) -#define KC_AF4 LALT(KC_F4) -#define KC_TASK LCTL(LSFT(KC_ESC)) -#define CT_PGUP RCTL(KC_PGUP) -#define CT_PGDN RCTL(KC_PGDN) -#define CT_HOME RCTL(KC_HOME) -#define CT_END RCTL(KC_END) -#define SWAP_L SGUI(KC_LEFT) // Swap application to left display -#define SWAP_R SGUI(KC_RGHT) // Swap application to right display - -// KEYCODES -enum custom_user_keycodes { - KC_00 = SAFE_RANGE, - ENCFUNC, // Encoder function - CAPSNUM, // Capslock key function - LEFTOFENC, // Key to the left of the encoder (i.e. F13) - BELOWENC, // Key below encoder - PRNCONF, // Print verbose statuses of all user_config toggles - WINLOCK, // Toggles Windows key on and off - RGB_TOI, // Timeout idle time up - RGB_TOD, // Timeout idle time down - RGB_NITE, // Disables RGB backlighting effects but allows RGB indicators to still work - - TG_CAPS, // Toggles RGB highlighting of alphas during capslock - TG_PAD, // Toggles RGB highlighting of keys on numpad+mousekeys layer - TG_TDCAP, // Toggles double tap shift for CapsLock - TG_DEL, // Swaps DEL and HOME key locations - TG_ENC, // Toggle Encoder button functionality - TG_ESC, // Toggle ESC double tap for _BASE layer - TG_INS, // Toggle location of INS - TG_SPCMOD, // Toggle disabling of modded-SPACE functions - TG_AUTOCR, // Toggle AutoCorrect - TG_ENGCAP, // Toggle highlighting Non-English letters during CAPSLOCK on ISO boards - - YAHOO, // yahoo.com - OUTLOOK, // outlook.com - GMAIL, // gmail.com - HOTMAIL, // hotmail.com - DOTCOM, // .com - - EMO_SHRUG, // `\_("/)_/` - EMO_CONFUSE, // (*_*) - EMO_SAD, // :'-( - EMO_NERVOUS, // (~_~;) - EMO_JOY, // (^o^) - EMO_TEARS, // (T_T) - - KC_TSTOG, // Tab Scroll Toggle - - NEW_SAFE_RANGE // New safe range for keymap level custom keycodes -}; - -// Set up boolean variables to track user customizable configuration options -typedef union { - uint32_t raw; - struct { - bool rgb_hilite_caps :1; - bool rgb_hilite_numpad :1; - bool esc_double_tap_to_baselyr :1; - bool del_right_home_top :1; - bool double_tap_shift_for_capslock :1; - bool encoder_press_mute_or_media :1; - bool ins_on_shft_bkspc_or_del :1; - bool disable_space_mods :1; - bool autocorrect :1; - bool rgb_english_caps :1; - }; -} user_config_t; - -user_config_t user_config; - -//#define LSFTCAPSWIN TD(TD_LSFT_CAPS_WIN) - -// ENCODER ACTIONS -#ifdef ENCODER_ENABLE -void encoder_action_volume(bool clockwise); -void encoder_action_mediatrack(bool clockwise); -void encoder_action_navword(bool clockwise); -void encoder_action_navpage(bool clockwise); - -uint8_t get_selected_layer(void); -void encoder_action_layerchange(bool clockwise); - -#if defined(RGB_MATRIX_ENABLE) || defined(RGBLIGHT_ENABLE) -void encoder_action_rgb_speed(bool clockwise); -void encoder_action_rgb_hue(bool clockwise); -void encoder_action_rgb_saturation(bool clockwise); -void encoder_action_rgb_brightness(bool clockwise); -void encoder_action_rgb_mode(bool clockwise); -#endif // RGB_MATRIX_ENABLE / RGBLIGHT_ENABLE - -#ifdef ALTTAB_SCROLL_ENABLE -void encoder_action_alttabscroll(bool clockwise); -void encoder_toggle_alttabscroll(void); -void encoder_tick_alttabscroll(void); -#endif // ALTTAB_SCROLL_ENABLE -#endif // ENCODER_ENABLE - -#ifdef RGB_MATRIX_ENABLE -void activate_rgb_nightmode(bool turn_on); -bool get_rgb_nightmode(void); -#endif - -// IDLE TIMEOUTS -#ifdef IDLE_TIMEOUT_ENABLE -#define TIMEOUT_THRESHOLD_DEFAULT 15 // default timeout minutes -#define TIMEOUT_THRESHOLD_MAX 140 // upper limits (2 hours and 10 minutes -- no rgb indicators above this value) - -//prototype functions -uint16_t get_timeout_threshold(void); -void timeout_reset_timer(void); -void timeout_update_threshold(bool increase); -void timeout_tick_timer(void); -#endif //IDLE_TIMEOUT_ENABLE - -// OTHER FUNCTION PROTOTYPE -void activate_numlock(bool turn_on); \ No newline at end of file diff --git a/users/gourdo1/gourdo1_encoder.c b/users/gourdo1/gourdo1_encoder.c deleted file mode 100644 index 5a19b63c6e..0000000000 --- a/users/gourdo1/gourdo1_encoder.c +++ /dev/null @@ -1,238 +0,0 @@ -/* Copyright 2021 Jonavin Eng @Jonavin - Copyright 2022 gourdo1 - -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 . -*/ - -#include QMK_KEYBOARD_H - -#include "gourdo1.h" - -#ifdef ENCODER_ENABLE - #ifndef DYNAMIC_KEYMAP_LAYER_COUNT - #define DYNAMIC_KEYMAP_LAYER_COUNT 4 //default in case this is not already defined elsewhere - #endif - #ifndef ENCODER_DEFAULTACTIONS_INDEX - #define ENCODER_DEFAULTACTIONS_INDEX 0 // can select encoder index if there are multiple encoders - #endif - - static uint16_t key_timer; - - void encoder_action_volume(bool clockwise) { - if (clockwise) { - tap_code(KC_VOLU); - if (timer_elapsed(key_timer) < 50) { - tap_code(KC_VOLU); // if less than 50ms have passed, hit vol up again. - key_timer = timer_read(); - } else { - key_timer = timer_read(); - // do nothing if 50ms or more have passed - } - } - else { - tap_code(KC_VOLD); - if (timer_elapsed(key_timer) < 100) { - tap_code(KC_VOLD); // if less than 100ms have passed, hit vol down twice. - tap_code(KC_VOLD); - key_timer = timer_read(); - } else { - key_timer = timer_read(); - // do nothing if 100ms or more have passed - } - } - } - - void encoder_action_mediatrack(bool clockwise) { - if (clockwise) - tap_code(KC_MEDIA_NEXT_TRACK); - else - tap_code(KC_MEDIA_PREV_TRACK); - } - - void encoder_action_navword(bool clockwise) { - if (clockwise) - tap_code16(LCTL(KC_RGHT)); - else - tap_code16(LCTL(KC_LEFT)); - } - - void encoder_action_navpage(bool clockwise) { - if (clockwise) - tap_code16(KC_PGUP); - else - tap_code16(KC_PGDN); - } - - // LAYER HANDLING - uint8_t selected_layer = 0; - - uint8_t get_selected_layer(void) { - return selected_layer; - } - - void encoder_action_layerchange(bool clockwise) { - if (clockwise) { - if(selected_layer < (DYNAMIC_KEYMAP_LAYER_COUNT - 1)) { - selected_layer ++; - layer_move(selected_layer); - } - } else { - if (selected_layer > 0) { - selected_layer --; - layer_move(selected_layer); - } - } - } - - #ifdef RGB_MATRIX_ENABLE - void encoder_action_rgb_speed(bool clockwise) { - if (clockwise) - rgb_matrix_increase_speed_noeeprom(); - else - rgb_matrix_decrease_speed_noeeprom(); - } - void encoder_action_rgb_hue(bool clockwise) { - if (clockwise) - rgb_matrix_increase_hue_noeeprom(); - else - rgb_matrix_decrease_hue_noeeprom(); - } - void encoder_action_rgb_saturation(bool clockwise) { - if (clockwise) - rgb_matrix_increase_sat_noeeprom(); - else - rgb_matrix_decrease_sat_noeeprom(); - } - void encoder_action_rgb_brightness(bool clockwise) { - if (clockwise) - rgb_matrix_increase_val_noeeprom(); - else - rgb_matrix_decrease_val_noeeprom(); - } - void encoder_action_rgb_mode(bool clockwise) { - if (clockwise) - rgb_matrix_step_noeeprom(); - else - rgb_matrix_step_reverse_noeeprom(); - } - #elif defined(RGBLIGHT_ENABLE) - void encoder_action_rgb_speed(bool clockwise) { - if (clockwise) - rgblight_increase_speed_noeeprom(); - else - rgblight_decrease_speed_noeeprom(); - } - void encoder_action_rgb_hue(bool clockwise) { - if (clockwise) - rgblight_increase_hue_noeeprom(); - else - rgblight_decrease_hue_noeeprom(); - } - void encoder_action_rgb_saturation(bool clockwise) { - if (clockwise) - rgblight_increase_sat_noeeprom(); - else - rgblight_decrease_sat_noeeprom(); - } - void encoder_action_rgb_brightness(bool clockwise) { - if (clockwise) - rgblight_increase_val_noeeprom(); - else - rgblight_decrease_val_noeeprom(); - } - void encoder_action_rgb_mode(bool clockwise) { - if (clockwise) - rgblight_step_noeeprom(); - else - rgblight_step_reverse_noeeprom(); - } - #endif // RGB_MATRIX_ENABLE || RGBLIGHT_ENABLE - - #ifdef ALTTAB_SCROLL_ENABLE - bool is_tab_scrolling = false; - bool is_alt_tab_active = false; - uint16_t alt_tab_timer = 0; - - - void encoder_toggle_alttabscroll(void) { - is_tab_scrolling = !is_tab_scrolling; - } - - void encoder_action_alttabscroll(bool clockwise) { - if (clockwise) { - if (!is_alt_tab_active) { - is_alt_tab_active = true; - register_mods(MOD_RALT); - } - tap_code16(KC_TAB); - } - else { - tap_code16(S(KC_TAB)); - } - alt_tab_timer = timer_read(); - } - - void encoder_tick_alttabscroll(void) { - if (is_alt_tab_active) { - if (timer_elapsed(alt_tab_timer) > 600) { - unregister_mods(MOD_RALT); - is_alt_tab_active = false; - } - } - } - #endif // ALTTAB_SCROLL_ENABLE -#endif // ENCODER_ENABLE - -#if defined(ENCODER_ENABLE) && defined(ENCODER_DEFAULTACTIONS_ENABLE) // Encoder Functionality - - __attribute__((weak)) bool encoder_update_keymap(uint8_t index, bool clockwise) { return true; } - - bool encoder_update_user(uint8_t index, bool clockwise) { - if (!encoder_update_keymap(index, clockwise)) { return false; } - if (index != ENCODER_DEFAULTACTIONS_INDEX) {return true;} // exit if the index doesn't match - uint8_t mods_state = get_mods(); - if (mods_state & MOD_BIT(KC_LSFT) ) { // If you are holding L shift, encoder changes layers - encoder_action_layerchange(clockwise); - } else if (mods_state & MOD_BIT(KC_RSFT) ) { // If you are holding R shift, Page up/dn - unregister_mods(MOD_BIT(KC_RSFT)); - encoder_action_navpage(clockwise); - register_mods(MOD_BIT(KC_RSFT)); - } else if (mods_state & MOD_BIT(KC_LCTL)) { // if holding Left Ctrl, navigate next/prev word - encoder_action_navword(clockwise); - } else if (mods_state & MOD_BIT(KC_LALT)) { // if holding Left Alt, change media next/prev track - encoder_action_mediatrack(clockwise); - } else { - switch(get_highest_layer(layer_state)) { - case _FN1: - #ifdef IDLE_TIMEOUT_ENABLE - timeout_update_threshold(clockwise); - #endif - break; - default: - #ifdef ALTTAB_SCROLL_ENABLE - if (is_tab_scrolling) - encoder_action_alttabscroll(clockwise); - else - encoder_action_volume(clockwise); // Otherwise it just changes volume - #else - encoder_action_volume(clockwise); // Otherwise it just changes volume - #endif // ALTTAB_SCROLL_ENABLE - break; - } - } - return false; - } -#endif // ENCODER_ENABLE - - diff --git a/users/gourdo1/rules.mk b/users/gourdo1/rules.mk deleted file mode 100644 index 0a3a9ba426..0000000000 --- a/users/gourdo1/rules.mk +++ /dev/null @@ -1,31 +0,0 @@ -SRC += gourdo1.c -SRC += autocorrect/autocorrection.c - -ifdef ENCODER_ENABLE - # include encoder related code when enabled - ifeq ($(strip $(ENCODER_DEFAULTACTIONS_ENABLE)), yes) - OPT_DEFS += -DENCODER_DEFAULTACTIONS_ENABLE - endif - ifeq ($(strip $(ALTTAB_SCROLL_ENABLE)), yes) - OPT_DEFS += -DALTTAB_SCROLL_ENABLE - endif - SRC += gourdo1_encoder.c -endif -ifeq ($(strip $(TD_LSFT_CAPSLOCK_ENABLE)), yes) - OPT_DEFS += -DTD_LSFT_CAPSLOCK_ENABLE -endif -ifeq ($(strip $(IDLE_TIMEOUT_ENABLE)), yes) - OPT_DEFS += -DIDLE_TIMEOUT_ENABLE -endif -ifeq ($(strip $(STARTUP_NUMLOCK_ON)), yes) - OPT_DEFS += -DSTARTUP_NUMLOCK_ON -endif -ifeq ($(strip $(COLEMAK_LAYER_ENABLE)), yes) - OPT_DEFS += -DCOLEMAK_LAYER_ENABLE -endif -ifeq ($(strip $(EMOTICON_ENABLE)), yes) - OPT_DEFS += -DEMOTICON_ENABLE -endif -ifeq ($(strip $(INVERT_NUMLOCK_INDICATOR)), yes) - OPT_DEFS += -DINVERT_NUMLOCK_INDICATOR -endif diff --git a/users/greatwizard/config.h b/users/greatwizard/config.h deleted file mode 100644 index 8814fa6bdd..0000000000 --- a/users/greatwizard/config.h +++ /dev/null @@ -1,40 +0,0 @@ -/* Copyright 2020 Guillaume GÃĐrard - * - * 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 . - */ -#pragma once - -#define TAP_CODE_DELAY 5 - -#define RGBLIGHT_EFFECT_BREATHING -#define RGBLIGHT_EFFECT_RAINBOW_MOOD -#define RGBLIGHT_EFFECT_RAINBOW_SWIRL -#define RGBLIGHT_EFFECT_SNAKE -#define RGBLIGHT_EFFECT_KNIGHT -#define RGBLIGHT_EFFECT_CHRISTMAS -#define RGBLIGHT_EFFECT_STATIC_GRADIENT -#define RGBLIGHT_EFFECT_RGB_TEST -#define RGBLIGHT_EFFECT_ALTERNATING -#define RGBLIGHT_EFFECT_TWINKLE - -#ifdef TAP_DANCE_ENABLE -# define TAPPING_TERM 175 -# define PERMISSIVE_HOLD -#endif - -#ifdef AUTO_SHIFT_ENABLE -# define AUTO_SHIFT_TIMEOUT 135 -# define NO_AUTO_SHIFT_SPECIAL -# define NO_AUTO_SHIFT_NUMERIC -#endif diff --git a/users/greatwizard/fn.h b/users/greatwizard/fn.h deleted file mode 100644 index f842bf04b7..0000000000 --- a/users/greatwizard/fn.h +++ /dev/null @@ -1,21 +0,0 @@ -/* Copyright 2020 Guillaume GÃĐrard - * - * 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 . - */ -#pragma once - -#include QMK_KEYBOARD_H -#include "greatwizard.h" - -#define FN MO(_FN) diff --git a/users/greatwizard/game.c b/users/greatwizard/game.c deleted file mode 100644 index eecabfa403..0000000000 --- a/users/greatwizard/game.c +++ /dev/null @@ -1,27 +0,0 @@ -/* Copyright 2020 Guillaume GÃĐrard - * - * 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 . - */ -#include "game.h" - -bool process_record_game(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case GAME: - if (record->event.pressed) { - set_single_persistent_default_layer(_GAME); - } - return false; - } - return true; -} diff --git a/users/greatwizard/game.h b/users/greatwizard/game.h deleted file mode 100644 index 504129b400..0000000000 --- a/users/greatwizard/game.h +++ /dev/null @@ -1,21 +0,0 @@ -/* Copyright 2020 Guillaume GÃĐrard - * - * 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 . - */ -#pragma once - -#include QMK_KEYBOARD_H -#include "greatwizard.h" - -bool process_record_game(uint16_t keycode, keyrecord_t *record); diff --git a/users/greatwizard/git.c b/users/greatwizard/git.c deleted file mode 100644 index 4bf68fe690..0000000000 --- a/users/greatwizard/git.c +++ /dev/null @@ -1,127 +0,0 @@ -/* Copyright 2020 Guillaume GÃĐrard - * - * 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 . - */ -#include "git.h" - -bool process_record_git(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case GIT_ADD: - if (record->event.pressed) { - SEND_STRING("git add "); - } - return false; - case GIT_BRANCH: - if (record->event.pressed) { - SEND_STRING("git branch "); - } - return false; - case GIT_CHECKOUT: - if (record->event.pressed) { - SEND_STRING("git checkout "); - } - return false; - case GIT_CHERRYPICK: - if (record->event.pressed) { - SEND_STRING("git cherry-pick "); - } - return false; - case GIT_COMMIT: - if (record->event.pressed) { - SEND_STRING("git commit -m \"\""SS_TAP(X_LEFT)); - } - return false; - case GIT_DIFF: - if (record->event.pressed) { - SEND_STRING("git diff "); - } - return false; - case GIT_FETCH: - if (record->event.pressed) { - SEND_STRING("git fetch "); - } - return false; - case GIT_GREP: - if (record->event.pressed) { - SEND_STRING("git grep "); - } - return false; - case GIT_LOG: - if (record->event.pressed) { - SEND_STRING("git log --decorate --oneline --graph "); - } - return false; - case GIT_INIT: - if (record->event.pressed) { - SEND_STRING("git init "); - } - return false; - case GIT_MV: - if (record->event.pressed) { - SEND_STRING("git mv "); - } - return false; - case GIT_MERGE: - if (record->event.pressed) { - SEND_STRING("git merge "); - } - return false; - case GIT_PUSH: - if (record->event.pressed) { - SEND_STRING("git push "); - } - return false; - case GIT_PULL: - if (record->event.pressed) { - SEND_STRING("git pull "); - } - return false; - case GIT_REBASE: - if (record->event.pressed) { - SEND_STRING("git rebase "); - } - return false; - case GIT_REMOTE: - if (record->event.pressed) { - SEND_STRING("git remote "); - } - return false; - case GIT_RESET: - if (record->event.pressed) { - SEND_STRING("git reset "); - } - return false; - case GIT_SHOW: - if (record->event.pressed) { - SEND_STRING("git show "); - } - return false; - case GIT_STASH: - if (record->event.pressed) { - SEND_STRING("git stash "); - } - return false; - case GIT_STATUS: - if (record->event.pressed) { - SEND_STRING("git status "); - } - return false; - case GIT_TAG: - if (record->event.pressed) { - SEND_STRING("git tag "); - } - return false; - } - return true; -} diff --git a/users/greatwizard/git.h b/users/greatwizard/git.h deleted file mode 100644 index c3b4a617d0..0000000000 --- a/users/greatwizard/git.h +++ /dev/null @@ -1,39 +0,0 @@ -/* Copyright 2020 Guillaume GÃĐrard - * - * 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 . - */ -#pragma once - -#include QMK_KEYBOARD_H -#include "greatwizard.h" - -bool process_record_git(uint16_t keycode, keyrecord_t *record); - -#define GIT_BRC GIT_BRANCH -#define GIT_CKT GIT_CHECKOUT -#define GIT_CPK GIT_CHERRYPICK -#define GIT_CMT GIT_COMMIT -#define GIT_DIF GIT_DIFF -#define GIT_FTC GIT_FETCH -#define GIT_GRP GIT_GREP -#define GIT_INI GIT_INIT -#define GIT_MRG GIT_MERGE -#define GIT_PUS GIT_PUSH -#define GIT_PUL GIT_PULL -#define GIT_RBS GIT_REBASE -#define GIT_RMT GIT_REMOTE -#define GIT_RST GIT_RESET -#define GIT_SHW GIT_SHOW -#define GIT_STS GIT_STASH -#define GIT_STT GIT_STATUS diff --git a/users/greatwizard/greatwizard.c b/users/greatwizard/greatwizard.c deleted file mode 100644 index 3ec856d720..0000000000 --- a/users/greatwizard/greatwizard.c +++ /dev/null @@ -1,113 +0,0 @@ -/* Copyright 2020 Guillaume GÃĐrard - * - * 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 . - */ -#include "greatwizard.h" - -void eeconfig_init_user(void) { - user_config_t user_config; - user_config.raw = 0; -#ifdef RGBLIGHT_ENABLE - user_config.rgb_layer_change = true; -#endif - eeconfig_update_user(user_config.raw); - keyboard_init(); -} - -void keyboard_post_init_user(void) { -#ifdef RGBLIGHT_ENABLE - keyboard_post_init_rgb(); -#endif -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { -#ifdef RGBLIGHT_ENABLE - process_record_rgb(keycode, record); -#endif -#ifdef LAYER_GAME - process_record_game(keycode, record); -#endif -#ifdef LAYER_GIT - process_record_git(keycode, record); -#endif -#ifdef LAYERS_PROGRAMMER - process_record_pg(keycode, record); -#endif - switch (keycode) { - case QWERTY: - if (record->event.pressed) { - set_single_persistent_default_layer(_QWERTY); - } - return false; - case WORKMAN: - if (record->event.pressed) { - set_single_persistent_default_layer(_WORKMAN); - } - return false; - case COLEMAK: - if (record->event.pressed) { - set_single_persistent_default_layer(_COLEMAK); - } - return false; - case DVORAK: - if (record->event.pressed) { - set_single_persistent_default_layer(_DVORAK); - } - return false; - } - return true; -} - -#ifdef ENCODER_ENABLE -bool encoder_update_user(uint8_t index, bool clockwise) { - switch (get_highest_layer(layer_state)) { - case _QWERTY: -#ifdef LAYERS_PROGRAMMER - case _PROGRAMMER_SHIFTED: -#endif - if (clockwise) { - tap_code(KC_AUDIO_VOL_UP); - } else { - tap_code(KC_AUDIO_VOL_DOWN); - } - break; - default: - if (clockwise) { - tap_code(KC_MEDIA_NEXT_TRACK); - } else { - tap_code(KC_MEDIA_PREV_TRACK); - } - break; - } - return true; -} -#endif - -layer_state_t layer_state_set_user(layer_state_t state) { - state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST); -#ifdef RGBLIGHT_ENABLE - state = layer_state_set_rgb(state); -#endif -#ifdef LAYERS_ORTHO - state = layer_state_set_ortho(state); -#endif - return state; -} - -bool led_update_user(led_t led_state) { -#ifdef RGBLIGHT_ENABLE - led_update_rgb(led_state); -#endif - return true; -} diff --git a/users/greatwizard/greatwizard.h b/users/greatwizard/greatwizard.h deleted file mode 100644 index d2e15854a3..0000000000 --- a/users/greatwizard/greatwizard.h +++ /dev/null @@ -1,135 +0,0 @@ -/* Copyright 2020 Guillaume GÃĐrard - * - * 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 . - */ -#pragma once - -#include QMK_KEYBOARD_H -#include "keymap_helpers.h" -#ifdef TAP_DANCE_ENABLE -# include "tap_dances.h" -#endif -#ifdef RGBLIGHT_ENABLE -# include "underglow.h" -#endif -#ifdef LAYER_FN -# include "fn.h" -#endif -#ifdef LAYER_GAME -# include "game.h" -#endif -#ifdef LAYER_GIT -# include "git.h" -#endif -#ifdef LAYERS_ORTHO -# include "ortho.h" -#endif -#ifdef LAYERS_PROGRAMMER -# include "programmer.h" -#endif - -typedef union { - uint32_t raw; - struct { -#ifdef RGBLIGHT_ENABLE - bool rgb_layer_change : 1; -#endif - }; -} user_config_t; - -enum layers { - _QWERTY, - _WORKMAN, - _COLEMAK, - _DVORAK, -#ifdef LAYER_GAME - _GAME, -#endif -#ifdef LAYERS_PROGRAMMER - _QWERTY_PROGRAMMER, - _WORKMAN_PROGRAMMER, - _COLEMAK_PROGRAMMER, - _DVORAK_PROGRAMMER, - _PROGRAMMER_SHIFTED, -#endif -#ifdef LAYERS_ORTHO - _LOWER, - _RAISE, - _ADJUST, -#endif -#ifdef LAYER_FN - _FN, -#endif -#ifdef LAYER_GIT - _GIT, -#endif -}; - -enum keycodes { - // Persistent layers switcher keys - QWERTY = SAFE_RANGE, - WORKMAN, - COLEMAK, - DVORAK, -#ifdef LAYER_GAME - GAME, -#endif -#ifdef LAYERS_PROGRAMMER - // Workman Programmer - QWERTY_PROGRAMMER, - WORKMAN_PROGRAMMER, - COLEMAK_PROGRAMMER, - DVORAK_PROGRAMMER, - PROGRAMMER_SHIFTED, - PG_GRV, - PG_1, - PG_2, - PG_3, - PG_4, - PG_5, - PG_6, - PG_7, - PG_8, - PG_9, - PG_0, -#endif - // RGB Underglow lights based on the layer key - RGB_LAYER, -#ifdef LAYER_GIT - // GIT commands - GIT_ADD, - GIT_BRANCH, - GIT_CHECKOUT, - GIT_CHERRYPICK, - GIT_COMMIT, - GIT_DIFF, - GIT_FETCH, - GIT_GREP, - GIT_LOG, - GIT_INIT, - GIT_MV, - GIT_MERGE, - GIT_PUSH, - GIT_PULL, - GIT_REBASE, - GIT_REMOTE, - GIT_RESET, - GIT_SHOW, - GIT_STASH, - GIT_STATUS, - GIT_TAG -#endif -}; - -#define RGB_LYR RGB_LAYER diff --git a/users/greatwizard/keymap_helpers.h b/users/greatwizard/keymap_helpers.h deleted file mode 100644 index af9f4dfaad..0000000000 --- a/users/greatwizard/keymap_helpers.h +++ /dev/null @@ -1,61 +0,0 @@ -/* Copyright 2020 Guillaume GÃĐrard - * - * 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 . - */ -#pragma once - -#include QMK_KEYBOARD_H - -#define _______________QWERTY_LEFT1________________ KC_Q, KC_W, KC_E, KC_R, KC_T -#define _______________QWERTY_LEFT2________________ KC_A, KC_S, KC_D, KC_F, KC_G -#define _______________QWERTY_LEFT3________________ KC_Z, KC_X, KC_C, KC_V, KC_B - -#define _______________QWERTY_RIGHT1_______________ KC_Y, KC_U, KC_I, KC_O, KC_P -#define _______________QWERTY_RIGHT2_______________ KC_H, KC_J, KC_K, KC_L, KC_SCLN -#define _______________QWERTY_RIGHT3_______________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH - -#define _______________WORKMAN_LEFT1_______________ KC_Q, KC_D, KC_R, KC_W, KC_B -#define _______________WORKMAN_LEFT2_______________ KC_A, KC_S, KC_H, KC_T, KC_G -#define _______________WORKMAN_LEFT3_______________ KC_Z, KC_X, KC_M, KC_C, KC_V - -#define _______________WORKMAN_RIGHT1______________ KC_J, KC_F, KC_U, KC_P, KC_SCLN -#define _______________WORKMAN_RIGHT2______________ KC_Y, KC_N, KC_E, KC_O, KC_I -#define _______________WORKMAN_RIGHT3______________ KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH - -#define _______________COLEMAK_LEFT1_______________ KC_Q, KC_W, KC_F, KC_P, KC_G -#define _______________COLEMAK_LEFT2_______________ KC_A, KC_R, KC_S, KC_T, KC_D -#define _______________COLEMAK_LEFT3_______________ KC_Z, KC_X, KC_C, KC_V, KC_B - -#define _______________COLEMAK_RIGHT1______________ KC_J, KC_L, KC_U, KC_Y, KC_SCLN -#define _______________COLEMAK_RIGHT2______________ KC_H, KC_N, KC_E, KC_I, KC_O -#define _______________COLEMAK_RIGHT3______________ KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH - -#define _______________DVORAK_LEFT1________________ KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y -#define _______________DVORAK_LEFT2________________ KC_A, KC_O, KC_E, KC_U, KC_I -#define _______________DVORAK_LEFT3________________ KC_SCLN, KC_Q, KC_J, KC_K, KC_X - -#define _______________DVORAK_RIGHT1_______________ KC_F, KC_G, KC_C, KC_R, KC_L -#define _______________DVORAK_RIGHT2_______________ KC_D, KC_H, KC_T, KC_N, KC_S -#define _______________DVORAK_RIGHT3_______________ KC_B, KC_M, KC_W, KC_V, KC_Z - -#define _______________NUMBER_LEFT_________________ KC_1, KC_2, KC_3, KC_4, KC_5 -#define _______________NUMBER_RIGHT________________ KC_6, KC_7, KC_8, KC_9, KC_0 - -#define _________________GIT_LEFT1_________________ GIT_CPK, GIT_SHW, GIT_RBS, GIT_RST, GIT_TAG -#define _________________GIT_LEFT2_________________ GIT_ADD, GIT_STT, GIT_DIF, GIT_FTC, GIT_GRP -#define _________________GIT_LEFT3_________________ _______, _______, GIT_CMT, GIT_MV, GIT_BRC - -#define _________________GIT_RIGHT1________________ _______, GIT_PUL, GIT_INI, GIT_RMT, GIT_PUS -#define _________________GIT_RIGHT2________________ GIT_STS, _______, GIT_CKT, GIT_LOG, _______ -#define _________________GIT_RIGHT3________________ _______, GIT_MRG, _______, _______, _______ diff --git a/users/greatwizard/ortho.c b/users/greatwizard/ortho.c deleted file mode 100644 index 90b25b930f..0000000000 --- a/users/greatwizard/ortho.c +++ /dev/null @@ -1,21 +0,0 @@ -/* Copyright 2020 Guillaume GÃĐrard - * - * 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 . - */ -#include "ortho.h" - -layer_state_t layer_state_set_ortho(layer_state_t state) { - state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST); - return state; -} diff --git a/users/greatwizard/ortho.h b/users/greatwizard/ortho.h deleted file mode 100644 index 7fb5d5e6c8..0000000000 --- a/users/greatwizard/ortho.h +++ /dev/null @@ -1,24 +0,0 @@ -/* Copyright 2020 Guillaume GÃĐrard - * - * 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 . - */ -#pragma once - -#include QMK_KEYBOARD_H -#include "greatwizard.h" - -layer_state_t layer_state_set_ortho(layer_state_t state); - -#define LOWER MO(_LOWER) -#define RAISE MO(_RAISE) diff --git a/users/greatwizard/programmer.c b/users/greatwizard/programmer.c deleted file mode 100644 index e0f71ea066..0000000000 --- a/users/greatwizard/programmer.c +++ /dev/null @@ -1,174 +0,0 @@ -/* Copyright 2020 Guillaume GÃĐrard - * - * 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 . - */ -#include "programmer.h" - -bool process_record_pg(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case QWERTY_PROGRAMMER: - if (record->event.pressed) { - set_single_persistent_default_layer(_QWERTY_PROGRAMMER); - } - return false; - case WORKMAN_PROGRAMMER: - if (record->event.pressed) { - set_single_persistent_default_layer(_WORKMAN_PROGRAMMER); - } - return false; - case COLEMAK_PROGRAMMER: - if (record->event.pressed) { - set_single_persistent_default_layer(_COLEMAK_PROGRAMMER); - } - return false; - case DVORAK_PROGRAMMER: - if (record->event.pressed) { - set_single_persistent_default_layer(_DVORAK_PROGRAMMER); - } - return false; - case PG_GRV: - if (record->event.pressed) { - uint8_t current_mods = get_mods(); - if (current_mods & MOD_MASK_SHIFT) { - clear_mods(); - SEND_STRING("`"); - set_mods(current_mods); - } else { - SEND_STRING("~"); - } - } - return false; - case PG_1: - if (record->event.pressed) { - uint8_t current_mods = get_mods(); - if (current_mods & MOD_MASK_SHIFT) { - clear_mods(); - SEND_STRING("1"); - set_mods(current_mods); - } else { - SEND_STRING("!"); - } - } - return false; - case PG_2: - if (record->event.pressed) { - uint8_t current_mods = get_mods(); - if (current_mods & MOD_MASK_SHIFT) { - clear_mods(); - SEND_STRING("2"); - set_mods(current_mods); - } else { - SEND_STRING("@"); - } - } - return false; - case PG_3: - if (record->event.pressed) { - uint8_t current_mods = get_mods(); - if (current_mods & MOD_MASK_SHIFT) { - clear_mods(); - SEND_STRING("3"); - set_mods(current_mods); - } else { - SEND_STRING("#"); - } - } - return false; - case PG_4: - if (record->event.pressed) { - uint8_t current_mods = get_mods(); - if (current_mods & MOD_MASK_SHIFT) { - clear_mods(); - SEND_STRING("4"); - set_mods(current_mods); - } else { - SEND_STRING("$"); - } - } - return false; - case PG_5: - if (record->event.pressed) { - uint8_t current_mods = get_mods(); - if (current_mods & MOD_MASK_SHIFT) { - clear_mods(); - SEND_STRING("5"); - set_mods(current_mods); - } else { - SEND_STRING("%"); - } - } - return false; - case PG_6: - if (record->event.pressed) { - uint8_t current_mods = get_mods(); - if (current_mods & MOD_MASK_SHIFT) { - clear_mods(); - SEND_STRING("6"); - set_mods(current_mods); - } else { - SEND_STRING("^"); - } - } - return false; - case PG_7: - if (record->event.pressed) { - uint8_t current_mods = get_mods(); - if (current_mods & MOD_MASK_SHIFT) { - clear_mods(); - SEND_STRING("7"); - set_mods(current_mods); - } else { - SEND_STRING("&"); - } - } - return false; - case PG_8: - if (record->event.pressed) { - uint8_t current_mods = get_mods(); - if (current_mods & MOD_MASK_SHIFT) { - clear_mods(); - SEND_STRING("8"); - set_mods(current_mods); - } else { - SEND_STRING("*"); - } - } - return false; - case PG_9: - if (record->event.pressed) { - uint8_t current_mods = get_mods(); - if (current_mods & MOD_MASK_SHIFT) { - clear_mods(); - SEND_STRING("9"); - set_mods(current_mods); - } else { - SEND_STRING("("); - } - } - return false; - case PG_0: - if (record->event.pressed) { - uint8_t current_mods = get_mods(); - if (current_mods & MOD_MASK_SHIFT) { - clear_mods(); - SEND_STRING("0"); - set_mods(current_mods); - } else { - SEND_STRING(")"); - } - } - return false; - } - return true; -} diff --git a/users/greatwizard/programmer.h b/users/greatwizard/programmer.h deleted file mode 100644 index a79aada247..0000000000 --- a/users/greatwizard/programmer.h +++ /dev/null @@ -1,31 +0,0 @@ -/* Copyright 2020 Guillaume GÃĐrard - * - * 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 . - */ -#pragma once - -#include QMK_KEYBOARD_H -#include "greatwizard.h" - -bool process_record_pg(uint16_t keycode, keyrecord_t *record); - -#define QWERTYP QWERTY_PROGRAMMER -#define WORKMNP WORKMAN_PROGRAMMER -#define COLEMKP COLEMAK_PROGRAMMER -#define DVORAKP DVORAK_PROGRAMMER -#ifdef TAP_DANCE_LSFT_CAPS -# define PG_LSCP TD(TD_PG_LSFT_CAPS) -#else -# define PG_LSCP LM(_PROGRAMMER_SHIFTED, MOD_LSFT) -#endif diff --git a/users/greatwizard/readme.md b/users/greatwizard/readme.md deleted file mode 100644 index bc2df7f9bf..0000000000 --- a/users/greatwizard/readme.md +++ /dev/null @@ -1,32 +0,0 @@ -# GreatWizard Userspace - -## Features - -- âŒĻïļ Switchable and persistent base layers: Qwerty, Workman, Workman, Colemak, Dvorak, ðŸŽŪ Game -- âŒĻïļ Programmer flavored base layers available -- 💃🕚 Tap Dances -- 🆙 Auto Shift -- ðŸ‘Ļ‍ðŸ’ŧ One shot keys git commands layer -- 🌈 RGB Underglow lights based on the layer -- ⚙ïļ Rotary encoder for volume level and next/previous media -- 🗜ïļ Enable link time optimization - -## Community Layouts - -- [ortholinear 4x12](https://github.com/qmk/qmk_firmware/tree/master/layouts/community/ortho_4x12/greatwizard) -- [ortholinear 5x12](https://github.com/qmk/qmk_firmware/tree/master/layouts/community/ortho_5x12/greatwizard) - -## Build Options - -### Layers - -- `LAYERS_ORTHO`: add Lower, Raise and Adjust layers/keycodes -- `LAYERS_PROGRAMMER`: add Programmer layers/keycodes -- `LAYER_GAME`: add Game layer/keycode -- `LAYER_GIT`: add GIT layer/keycode -- `LAYER_FN`: add Fn layer/keycode - -### Tap Dances - -- `TAP_DANCE_LALT_GIT`: Double tap on LGUI to use the one shot keys git commands layer -- `TAP_DANCE_LSFT_CAPS`: Double tap on LSHIFT to set Caps Lock diff --git a/users/greatwizard/rules.mk b/users/greatwizard/rules.mk deleted file mode 100644 index 92bb4ccd1b..0000000000 --- a/users/greatwizard/rules.mk +++ /dev/null @@ -1,31 +0,0 @@ -SRC += greatwizard.c - -ifeq ($(strip $(TAP_DANCE_ENABLE)), yes) - SRC += tap_dances.c -endif - -ifeq ($(strip $(RGBLIGHT_ENABLE)), yes) - SRC += underglow.c -endif - -ifeq ($(strip $(LAYER_GAME)), yes) - SRC += game.c -endif - -ifeq ($(strip $(LAYER_GIT)), yes) - SRC += git.c -endif - -ifeq ($(strip $(LAYERS_ORTHO)), yes) - SRC += ortho.c -endif - -ifeq ($(strip $(LAYERS_PROGRAMMER)), yes) - SRC += programmer.c -endif - -ifneq ($(PLATFORM),CHIBIOS) - LTO_ENABLE = yes # Enable link time optimization -endif - -AUTO_SHIFT_ENABLE = yes # Autoshift by holding down a key diff --git a/users/greatwizard/tap_dances.c b/users/greatwizard/tap_dances.c deleted file mode 100644 index ca2c33824f..0000000000 --- a/users/greatwizard/tap_dances.c +++ /dev/null @@ -1,105 +0,0 @@ -/* Copyright 2020 Guillaume GÃĐrard - * - * 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 . - */ -#include "tap_dances.h" - -uint8_t cur_dance(tap_dance_state_t *state) { - if (state->count == 1) { - if (state->interrupted || !state->pressed) return SINGLE_TAP; - else return SINGLE_HOLD; - } else if (state->count == 2) { - if (state->interrupted) return DOUBLE_SINGLE_TAP; - else if (state->pressed) return DOUBLE_HOLD; - else return DOUBLE_TAP; - } - if (state->count == 3) { - if (state->interrupted || !state->pressed) return TRIPLE_TAP; - else return TRIPLE_HOLD; - } else return 8; -} - -static tap tap_state = { - .is_press_action = true, - .state = 0 -}; - -#ifdef TAP_DANCE_LALT_GIT -void lalt_finished(tap_dance_state_t *state, void *user_data) { - tap_state.state = cur_dance(state); - switch (tap_state.state) { - case SINGLE_HOLD: - register_mods(MOD_BIT(KC_LALT)); - break; - case DOUBLE_SINGLE_TAP: - case DOUBLE_TAP: - set_oneshot_layer(_GIT, ONESHOT_START); - break; - } -} - -void lalt_reset(tap_dance_state_t *state, void *user_data) { - switch (tap_state.state) { - case SINGLE_HOLD: - unregister_mods(MOD_BIT(KC_LALT)); - break; - case DOUBLE_SINGLE_TAP: - case DOUBLE_TAP: - clear_oneshot_layer_state(ONESHOT_PRESSED); - break; - } - tap_state.state = 0; -} -#endif - -#ifdef TAP_DANCE_LSFT_CAPS -# ifdef LAYERS_PROGRAMMER -void pg_lsft_finished(tap_dance_state_t *state, void *user_data) { - tap_state.state = cur_dance(state); - switch (tap_state.state) { - case SINGLE_HOLD: - register_mods(MOD_BIT(KC_LSFT)); - layer_on(_PROGRAMMER_SHIFTED); - break; - case DOUBLE_SINGLE_TAP: - case DOUBLE_TAP: - tap_code(KC_CAPS); - layer_on(_PROGRAMMER_SHIFTED); - break; - } -} - -void pg_lsft_reset(tap_dance_state_t *state, void *user_data) { - switch (tap_state.state) { - case SINGLE_HOLD: - unregister_mods(MOD_BIT(KC_LSFT)); - layer_off(_PROGRAMMER_SHIFTED); - break; - } - tap_state.state = 0; -} -# endif -#endif - -dance_action_t tap_dance_actions[] = { -#ifdef TAP_DANCE_LALT_GIT - [TD_LALT_GIT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, lalt_finished, lalt_reset), -#endif -#ifdef TAP_DANCE_LSFT_CAPS - [TD_LSFT_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_LSFT, KC_CAPS), -# ifdef LAYERS_PROGRAMMER - [TD_PG_LSFT_CAPS] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, pg_lsft_finished, pg_lsft_reset), -# endif -#endif -}; diff --git a/users/greatwizard/tap_dances.h b/users/greatwizard/tap_dances.h deleted file mode 100644 index 19819125b5..0000000000 --- a/users/greatwizard/tap_dances.h +++ /dev/null @@ -1,65 +0,0 @@ -/* Copyright 2020 Guillaume GÃĐrard - * - * 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 . - */ -#pragma once - -#include QMK_KEYBOARD_H -#include "greatwizard.h" - -typedef struct { - bool is_press_action; - uint8_t state; -} tap; - -enum { - SINGLE_TAP = 1, - SINGLE_HOLD, - DOUBLE_TAP, - DOUBLE_HOLD, - DOUBLE_SINGLE_TAP, - TRIPLE_TAP, - TRIPLE_HOLD -}; - -enum { -#ifdef TAP_DANCE_LALT_GIT - TD_LALT_GIT, -#endif -#ifdef TAP_DANCE_LSFT_CAPS - TD_LSFT_CAPS, -# ifdef LAYERS_PROGRAMMER - TD_PG_LSFT_CAPS, -# endif -#endif -}; - -uint8_t cur_dance(tap_dance_state_t *state); - -#ifdef TAP_DANCE_LALT_GIT -void lalt_finished(tap_dance_state_t *state, void *user_data); -void lalt_reset(tap_dance_state_t *state, void *user_data); -# define TD_LALT TD(TD_LALT_GIT) -#endif - -#ifdef TAP_DANCE_LSFT_CAPS -# ifdef LAYERS_PROGRAMMER -void pg_lsft_finished(tap_dance_state_t *state, void *user_data); -void pg_lsft_reset(tap_dance_state_t *state, void *user_data); -# endif -#endif - -#ifdef TAP_DANCE_LSFT_CAPS -# define TD_LSCP TD(TD_LSFT_CAPS) -#endif diff --git a/users/greatwizard/underglow.c b/users/greatwizard/underglow.c deleted file mode 100644 index c23fb5bc51..0000000000 --- a/users/greatwizard/underglow.c +++ /dev/null @@ -1,109 +0,0 @@ -/* Copyright 2020 Guillaume GÃĐrard - * - * 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 . - */ -#include "underglow.h" - -void keyboard_post_init_rgb(void) { - user_config_t user_config; - user_config.raw = eeconfig_read_user(); - if (!user_config.rgb_layer_change) { - return; - } - rgblight_enable_noeeprom(); - rgblight_sethsv_noeeprom(HSV_ORANGE); - rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); -} - -bool process_record_rgb(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case RGB_LAYER: - if (record->event.pressed) { - user_config_t user_config; - user_config.raw = eeconfig_read_user(); - user_config.rgb_layer_change ^= 1; - eeconfig_update_user(user_config.raw); - if (user_config.rgb_layer_change) { - layer_state_set(layer_state); - } - } - return false; - case RGB_MODE_FORWARD ... RGB_MODE_RGBTEST: - if (record->event.pressed) { - user_config_t user_config; - user_config.raw = eeconfig_read_user(); - if (user_config.rgb_layer_change) { - user_config.rgb_layer_change = false; - eeconfig_update_user(user_config.raw); - } - } - return true; - } - return true; -} - -layer_state_t layer_state_set_rgb(layer_state_t state) { - user_config_t user_config; - user_config.raw = eeconfig_read_user(); - if (!user_config.rgb_layer_change) { - return state; - } - switch (get_highest_layer(state)) { - case _QWERTY: -#ifdef LAYERS_PROGRAMMER - case _PROGRAMMER_SHIFTED: -#endif - rgblight_sethsv_noeeprom(HSV_ORANGE); - break; -#ifdef LAYERS_ORTHO - case _LOWER: - rgblight_sethsv_noeeprom(HSV_RED); - break; - case _RAISE: - rgblight_sethsv_noeeprom(HSV_BLUE); - break; - case _ADJUST: - rgblight_sethsv_noeeprom(HSV_PURPLE); - break; -#endif -#ifdef LAYER_FN - case _FN: - rgblight_sethsv_noeeprom(HSV_CHARTREUSE); - break; -#endif -#ifdef LAYER_GIT - case _GIT: - rgblight_sethsv_noeeprom(HSV_TEAL); - break; -#endif - default: - rgblight_sethsv_noeeprom(HSV_WHITE); - break; - } - return state; -} - -bool led_update_rgb(led_t led_state) { - user_config_t user_config; - user_config.raw = eeconfig_read_user(); - if (!user_config.rgb_layer_change) { - return true; - } - if (led_state.caps_lock) { - rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3); - } else { - rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); - } - return true; -} diff --git a/users/greatwizard/underglow.h b/users/greatwizard/underglow.h deleted file mode 100644 index 7e073b8579..0000000000 --- a/users/greatwizard/underglow.h +++ /dev/null @@ -1,24 +0,0 @@ -/* Copyright 2020 Guillaume GÃĐrard - * - * 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 . - */ -#pragma once - -#include QMK_KEYBOARD_H -#include "greatwizard.h" - -void keyboard_post_init_rgb(void); -bool process_record_rgb(uint16_t keycode, keyrecord_t *record); -layer_state_t layer_state_set_rgb(layer_state_t state); -bool led_update_rgb(led_t led_state); diff --git a/users/haervig/config.h b/users/haervig/config.h deleted file mode 100644 index 6a7d67737e..0000000000 --- a/users/haervig/config.h +++ /dev/null @@ -1,19 +0,0 @@ -/* -Copyright 2021 Jakob HÃĶrvig - -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 . -*/ - -#pragma once -#define TAPPING_TERM 200 diff --git a/users/haervig/haervig.c b/users/haervig/haervig.c deleted file mode 100644 index 7a0d1aaadf..0000000000 --- a/users/haervig/haervig.c +++ /dev/null @@ -1,234 +0,0 @@ -/* -Copyright 2021 Jakob HÃĶrvig - -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 . -*/ - -#include "haervig.h" - -#ifdef DANISH_ENABLE -// These indicate if left and right shift are physically pressed -bool lshift = false; -bool rshift = false; - -// Interrupt and times for space cadet shift -bool lshiftp = false; -bool rshiftp = false; -uint16_t lshift_timer = 0; -uint16_t rshift_timer = 0; - -// Number of items that are saved in prev_kcs -uint8_t prev_indx = 0; -// Used to save the last 6 actual keycodes activated by frankenkeycodes -uint16_t prev_kcs[6] = {0, 0, 0, 0, 0, 0}; - -// If true the deadkey characters grave and circonflexe are not automatically escaped -bool esct = false; - -/* -Used to add a keycode to a prev_kcs to remember it. -When full the last code gets discarded and replaced by -the new one. -*/ -void add_to_prev(uint16_t kc){ - for (int i=0; i0; i--){ - prev_kcs[i] = prev_kcs[i-1]; - } - prev_kcs[0] = kc; - } else { - prev_kcs[prev_indx] = kc; - prev_indx++; - } -} - -/* -Unregisters all codes saved in prev_kcs and resets prev_indx. -gets called on multiple occasions mainly when shift is released -and when frankenkeycodes are pressed. Prevents output of -wrong characters when really specific key combinations -that would never occur during normal usage are pressed. -*/ -void unreg_prev(void){ - if (prev_indx == 0) - return; - for (int i=0; ievent.pressed) - timer_timeout(); - return true; - case CU_NAV: - if(record->event.pressed) { - navesc = true; - navesc_timer = timer_read(); - layer_on(_NAV); - } else { - if (timer_elapsed(navesc_timer) < TAPPING_TERM && navesc) { - tap_code(KC_ESC); - } - layer_off(_NAV); - } - return false; - - #ifdef DANISH_ENABLE - case CU_LSFT: - if(record->event.pressed) { - lshiftp = true; - lshift_timer = timer_read(); - unregister_code(KC_LSFT); - register_code(KC_LSFT); - lshift = true; - } else { - if (timer_elapsed(lshift_timer) < TAPPING_TERM && lshiftp) { - register_code(KC_LSFT); - tap_code(KC_8); - unregister_code(KC_LSFT); - } - unreg_prev(); - if (!rshift) - unregister_code(KC_LSFT); - lshift = false; - } - return false; - case CU_RSFT: - if(record->event.pressed) { - rshiftp = true; - rshift_timer = timer_read(); - unregister_code(KC_LSFT); - register_code(KC_LSFT); - rshift = true; - } else { - if (timer_elapsed(rshift_timer) < TAPPING_TERM && rshiftp) { - register_code(KC_LSFT); - tap_code(KC_9); - unregister_code(KC_LSFT); - } - unreg_prev(); - if (!lshift) - unregister_code(KC_LSFT); - rshift = false; - } - return false; - case CU_COMM: - SHIFT_NO(DK_COMM, KC_GRV) - case CU_DOT: - SHIFT_NORM(DK_DOT, KC_GRV) - case CU_SLSH: - SHIFT_ALL(DK_7, KC_MINS) - case CU_SCLN: - SHIFT_ALL(DK_COMM, DK_DOT) - case CU_QUOT: - SHIFT_NORM(DK_QUOT, DK_2) - case CU_2: - NORM_ALGR(DK_2, KC_NUHS) - case CU_4: - if (record->event.pressed) { - timer_timeout(); - if (lshift || rshift) { - register_code(KC_LSFT); - register_code(KC_ALGR); - unregister_code(KC_3); - tap_code(KC_3); - unregister_code(KC_3); - } else { - unregister_code(KC_4); - tap_code(KC_4); - } - unregister_code(KC_ALGR); - unregister_code(KC_LSFT); - } - return false; - case CU_6: - SHIFT_NORM(DK_6, KC_RBRC) - case CU_7: - SHIFT_NORM(DK_7, DK_6) - case CU_8: - SHIFT_NORM(DK_8, KC_NUHS) - case CU_9: - SHIFT_NORM(DK_9, DK_8) - case CU_0: - SHIFT_NORM(DK_0, DK_9) - case CU_MINS: - SHIFT_NORM(KC_SLSH, KC_SLSH) - case CU_EQL: - SHIFT_SWITCH(DK_0, DK_PLUS) - case CU_BSPC: - SHIFT_NO(KC_BSPC, KC_DEL) - case CU_LBRC: - NORM_ALGRSHIFT(DK_8, DK_8) - case CU_RBRC: - NORM_ALGRSHIFT(DK_9, DK_9) - case CU_BSLS: - ALGR_SWITCH(DK_7, DK_I) - case KC_LCTL: - case KC_RCTL: - if(!record->event.pressed) { - timer_timeout(); - unregister_code(KC_Z); - unregister_code(KC_Y); - } - return true; - #endif - - default: - if(record->event.pressed) { - timer_timeout(); - - #ifdef DANISH_ENABLE - if (lshift || rshift) - register_code(KC_LSFT); - else - unregister_code(KC_LSFT); - #endif - - } - return process_record_keymap(keycode, record); - } -} - -__attribute__((weak)) -bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { - return true; -} diff --git a/users/haervig/haervig.h b/users/haervig/haervig.h deleted file mode 100644 index e0d47e4cc9..0000000000 --- a/users/haervig/haervig.h +++ /dev/null @@ -1,297 +0,0 @@ -/* -Copyright 2021 Jakob HÃĶrvig - -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 . -*/ - -#include "quantum.h" -#include "keymap_danish.h" - -enum userspace_layers { - _DEADKEY = 14, // Change if more than 16 layers are required - _NAV -}; - -enum userspace_custom_keycodes { - //CU_GAME = SAFE_RANGE, // Toggle game mode on/off - CU_NAV = SAFE_RANGE, // NAV | ESC - - #ifdef DANISH_ENABLE - CU_LSFT, // LSFT | ( - CU_RSFT, // LSFT | ) - CU_COMM, // , | < - CU_DOT, // . | > - CU_SLSH, // / | ? - CU_SCLN, // ; | : - CU_QUOT, // ' | " - CU_2, // 2 | @ - CU_4, // 4 | $ - CU_6, // 6 | ^ - CU_7, // 7 | & - CU_8, // 8 | * - CU_9, // 9 | ( - CU_0, // 0 | ) - CU_MINS, // - | _ - CU_EQL, // = | + - CU_BSPC, // backspace | delete - CU_LBRC, // [ | { - CU_RBRC, // ] | } - CU_BSLS, // \ | | - #endif - - NEW_SAFE_RANGE // Use for keymap specific keycodes -}; - -#ifdef DANISH_ENABLE -extern bool lshift; -extern bool rshift; -extern bool lshiftp; -extern bool rshiftp; -extern uint16_t lshift_timer; -extern uint16_t rshift_timer; - -extern uint8_t prev_indx; -extern uint16_t prev_kcs[6]; -void add_to_prev(uint16_t kc); -void unreg_prev(void); - -extern bool esct; -#endif - -extern bool navesc; -extern uint16_t navesc_timer; - -void timer_timeout(void); - -void timer_timeout_keymap(void); - -bool process_record_keymap(uint16_t keycode, keyrecord_t *record); - -#define CTRLX LCTL(KC_X) -#define CTRLC LCTL(KC_C) -#define CTRLV LCTL(KC_V) - -#define ALTF4 LALT(KC_F4) - -#define GUIU LGUI(KC_UP) -#define GUID LGUI(KC_DOWN) -#define GUIL LGUI(KC_LEFT) -#define GUIR RGUI(KC_RIGHT) - -#define CTLENT CTL_T(KC_ENT) - -#define EMOJI LWIN(KC_DOT) - -/* -Templates for Keys, with custom shifted and non shifted Characters -*/ - -// Normal shift status -#define SHIFT_NORM(kc1, kc2) \ -if (record->event.pressed) { \ - timer_timeout(); \ - if (lshift || rshift) { \ - register_code(KC_LSFT); \ - unregister_code(kc2); \ - register_code(kc2); \ - add_to_prev(kc2); \ - } else { \ - unregister_code(KC_LSFT); \ - unregister_code(kc1); \ - register_code(kc1); \ - } \ -} else { \ - unregister_code(kc1); \ - unregister_code(kc2); \ -} \ -return false; - -// Inverted shift status -#define SHIFT_SWITCH(kc1, kc2) \ -if (record->event.pressed) { \ - timer_timeout(); \ - if (lshift || rshift) { \ - unregister_code(KC_LSFT); \ - unregister_code(kc2); \ - register_code(kc2); \ - add_to_prev(kc2); \ - } else { \ - register_code(KC_LSFT); \ - unregister_code(kc1); \ - register_code(kc1); \ - add_to_prev(kc1); \ - } \ -} else { \ - unregister_code(kc1); \ - unregister_code(kc2); \ - unreg_prev(); \ - if (lshift || rshift) \ - register_code(KC_LSFT); \ - else \ - unregister_code(KC_LSFT); \ -} \ -return false; - -// Always shifted -#define SHIFT_ALL(kc1, kc2) \ -if (record->event.pressed) { \ - timer_timeout(); \ - register_code(KC_LSFT); \ - if (lshift || rshift) { \ - tap_code(kc2); \ - add_to_prev(kc2); \ - } else { \ - tap_code(kc1); \ - add_to_prev(kc1); \ - } \ -} else { \ - unregister_code(kc1); \ - unregister_code(kc2); \ - unreg_prev(); \ - if (lshift || rshift) \ - register_code(KC_LSFT); \ - else \ - unregister_code(KC_LSFT); \ -} \ -return false; - -// Never shifted -#define SHIFT_NO(kc1, kc2) \ -if (record->event.pressed) { \ - timer_timeout(); \ - unregister_code(KC_LSFT); \ - if (lshift || rshift) { \ - tap_code(kc2); \ - add_to_prev(kc2); \ - } else { \ - tap_code(kc1); \ - } \ -} else { \ - unregister_code(kc1); \ - unregister_code(kc2); \ - unreg_prev(); \ - if (lshift || rshift) \ - register_code(KC_LSFT); \ - else \ - unregister_code(KC_LSFT); \ -} \ -return false; - -// Norm AltGr -#define NORM_ALGR(kc1, kc2) \ -if (record->event.pressed) { \ - timer_timeout(); \ - if (lshift || rshift) { \ - register_code(KC_ALGR); \ - unregister_code(KC_LSFT); \ - tap_code(kc2); \ - unregister_code(KC_ALGR); \ - } else { \ - unregister_code(KC_ALGR); \ - unregister_code(KC_LSFT); \ - tap_code(kc1); \ - } \ -} else { \ - unregister_code(kc1); \ - unregister_code(kc2); \ -} \ -return false; - -// Norm AltGr shift -#define NORM_ALGRSHIFT(kc1, kc2) \ -if (record->event.pressed) { \ - timer_timeout(); \ - register_code(KC_LSFT); \ - register_code(KC_ALGR); \ - if (lshift || rshift) { \ - unregister_code(kc2); \ - tap_code(kc2); \ - unregister_code(KC_LSFT); \ - } else { \ - unregister_code(KC_LSFT); \ - unregister_code(kc1); \ - register_code(kc1); \ - } \ - unregister_code(KC_ALGR); \ -} else { \ - unregister_code(kc1); \ - unregister_code(kc2); \ -} \ -return false; - -// Inverted altgr status -#define ALGR_SWITCH(kc1, kc2) \ -if (record->event.pressed) { \ - timer_timeout(); \ - register_code(KC_ALGR); \ - if (lshift || rshift) { \ - unregister_code(KC_LSFT); \ - unregister_code(kc2); \ - register_code(kc2); \ - unregister_code(KC_ALGR); \ - add_to_prev(kc2); \ - } else { \ - register_code(KC_LSFT); \ - unregister_code(kc1); \ - register_code(kc1); \ - unregister_code(KC_ALGR); \ - add_to_prev(kc1); \ - } \ -} else { \ - unregister_code(kc1); \ - unregister_code(kc2); \ - unreg_prev(); \ - if (lshift || rshift) \ - register_code(KC_LSFT); \ - else \ - unregister_code(KC_LSFT); \ -} \ -return false; - -// Always AltGr -#define SHIFT_ALGR(kc1, kc2) \ -if (record->event.pressed) { \ - timer_timeout(); \ - unregister_code(KC_LSFT); \ - register_code(KC_ALGR); \ - if (lshift || rshift) { \ - unregister_code(kc2); \ - tap_code(kc2); \ - register_code(KC_LSFT); \ - } else { \ - unregister_code(kc1); \ - tap_code(kc1); \ - } \ - unregister_code(KC_ALGR); \ -} \ -return false; - -// Different keycode when Ctrl is pressed -#define CTRL(kc1, kc2) \ -if(record->event.pressed) { \ - timer_timeout(); \ - if (lshift || rshift) \ - register_code(KC_LSFT); \ - else \ - unregister_code(KC_LSFT); \ - if (keyboard_report->mods & (MOD_BIT(KC_LCTL) | MOD_BIT(KC_RCTL))){ \ - register_code(kc2); \ - } else { \ - register_code(kc1); \ - } \ -} else { \ - unregister_code(kc1); \ - unregister_code(kc2); \ -} \ -return false; diff --git a/users/haervig/readme.md b/users/haervig/readme.md deleted file mode 100644 index dc2ebbd13c..0000000000 --- a/users/haervig/readme.md +++ /dev/null @@ -1,11 +0,0 @@ -# haervig Userspace - -This userspace keeps my userdefined codes. I work on a ANSI keyboard on a Danish macOS system. I believe this code might be relevant for similar users. A big shout out to user spacebarracecar for the ideas on how to map keys, which served as the basis of this code. - -## US Layout Keys for Danish PCs - -By daily work involves a lot of coding. I find an ANSI layout superior and decided to buy a QMK keyboard. However, all PC's here in Denmark are set to input language Danish. Even though I could simply set input language language to US international, I find this inconvenient. I instead decided to map my keys so the ANSI keyboard would will function as expected when the OS inputn language is Danish. - -## More details - -Tracking the current state of the shift code is nessesary for it to work. User spacebarracecar has documented the idea thoroughly and should serve you as a starting point if you wish to implement this code. I modified the code to suit Danish input language. Additionally, a couple of functions were added to accomodate the altgr key. \ No newline at end of file diff --git a/users/haervig/rules.mk b/users/haervig/rules.mk deleted file mode 100644 index e06647ff27..0000000000 --- a/users/haervig/rules.mk +++ /dev/null @@ -1,5 +0,0 @@ -SRC += haervig.c - -ifeq ($(strip $(DANISH_ENABLE)), yes) - OPT_DEFS += -DDANISH_ENABLE -endif diff --git a/users/horrortroll/config.h b/users/horrortroll/config.h deleted file mode 100644 index 50bc7da537..0000000000 --- a/users/horrortroll/config.h +++ /dev/null @@ -1,64 +0,0 @@ -/* Copyright 2023 HorrorTroll - * - * 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 . - */ - -#pragma once - -/* Forcing to use NKRO instead 6KRO */ -#define FORCE_NKRO - -#define DYNAMIC_KEYMAP_LAYER_COUNT 2 - -#if defined(__arm__) - #ifdef RGB_MATRIX_ENABLE - #define RGB_MATRIX_SOLID_REACTIVE_GRADIENT_MODE - #endif -#endif - -#if defined(__AVR_ATmega32U4__) - #define NO_ACTION_ONESHOT - - #ifdef RGB_MATRIX_ENABLE - /* RGB Matrix effect */ - #undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN - #undef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT - #undef ENABLE_RGB_MATRIX_BAND_SAT - #undef ENABLE_RGB_MATRIX_BAND_VAL - #undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT - #undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL - #undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT - #undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL - #undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN - #undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON - #undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL - #undef ENABLE_RGB_MATRIX_DUAL_BEACON - #undef ENABLE_RGB_MATRIX_RAINBOW_BEACON - #undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS - #undef ENABLE_RGB_MATRIX_RAINDROPS - #undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS - #undef ENABLE_RGB_MATRIX_HUE_WAVE - #undef ENABLE_RGB_MATRIX_PIXEL_RAIN - - #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE - #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE - #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE - #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS - #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS - #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS - #undef ENABLE_RGB_MATRIX_SPLASH - #undef ENABLE_RGB_MATRIX_SOLID_SPLASH - #undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH - #endif -#endif diff --git a/users/horrortroll/horrortroll.c b/users/horrortroll/horrortroll.c deleted file mode 100644 index 1152b2cc9d..0000000000 --- a/users/horrortroll/horrortroll.c +++ /dev/null @@ -1,165 +0,0 @@ -/* Copyright 2023 HorrorTroll - * - * 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 . - */ - -#include "horrortroll.h" - -#include "rgb_matrix.h" - -// For CUSTOM_GRADIENT -HSV gradient_0 = {205, 250, 255}; -HSV gradient_100 = {140, 215, 125}; -bool reflected_gradient = false; -uint8_t gp_i = 0; - -typedef struct { - HSV gradient_0; - HSV gradient_1; - bool reflected; -} CUSTOM_PRESETS; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - uint8_t color_adj_step = 5; - - CUSTOM_PRESETS gradient_presets[] = { - {{41 , 255, 255}, {233, 245, 255}, false }, - {{45 , 245, 155}, {160, 255, 80}, false }, - {{173, 245, 40}, {41 , 255, 205}, true }, - {{32 , 255, 165}, {217, 185, 70}, false }, - {{240, 255, 145}, {115, 255, 245}, true }, - {{118, 255, 255}, {242, 255, 255}, false }, - {{212, 0 , 0}, {223, 235, 165}, true }, - {{205, 250, 255}, {140, 215, 125}, false }, - }; - - uint8_t gp_length = sizeof(gradient_presets)/sizeof(gradient_presets[0]); - - switch (keycode) { - case G1_HUI: - if (record->event.pressed) { - gradient_0.h += color_adj_step; - dprintf("Gradient 0 HSV: %d, %d, %d\n", gradient_0.h, gradient_0.s, gradient_0.v); - } - return false; - case G1_HUD: - if (record->event.pressed) { - gradient_0.h -= color_adj_step; - dprintf("Gradient 0 HSV: %d, %d, %d\n", gradient_0.h, gradient_0.s, gradient_0.v); - } - return false; - case G1_SAI: - if (record->event.pressed) { - gradient_0.s = (gradient_0.s + color_adj_step * 2 <= 255) ? gradient_0.s + color_adj_step * 2 : 255; - dprintf("Gradient 0 HSV: %d, %d, %d\n", gradient_0.h, gradient_0.s, gradient_0.v); - } - return false; - case G1_SAD: - if (record->event.pressed) { - gradient_0.s = (gradient_0.s - color_adj_step * 2 >= 0) ? gradient_0.s - color_adj_step * 2 : 0; - dprintf("Gradient 0 HSV: %d, %d, %d\n", gradient_0.h, gradient_0.s, gradient_0.v); - } - return false; - case G1_VAI: - if (record->event.pressed) { - gradient_0.v = (gradient_0.v + color_adj_step * 2 <= 255) ? gradient_0.v + color_adj_step * 2 : 255; - dprintf("Gradient 0 HSV: %d, %d, %d\n", gradient_0.h, gradient_0.s, gradient_0.v); - } - return false; - case G1_VAD: - if (record->event.pressed) { - gradient_0.v = (gradient_0.v - color_adj_step * 2 >= 0) ? gradient_0.v - color_adj_step * 2 : 0; - dprintf("Gradient 0 HSV: %d, %d, %d\n", gradient_0.h, gradient_0.s, gradient_0.v); - } - return false; - case G2_HUI: - if (record->event.pressed) { - gradient_100.h += color_adj_step; - dprintf("Gradient 100 HSV: %d, %d, %d\n", gradient_100.h, gradient_100.s, gradient_100.v); - } - return false; - case G2_HUD: - if (record->event.pressed) { - gradient_100.h -= color_adj_step; - dprintf("Gradient 100 HSV: %d, %d, %d\n", gradient_100.h, gradient_100.s, gradient_100.v); - } - return false; - case G2_SAI: - if (record->event.pressed) { - gradient_100.s = (gradient_100.s + color_adj_step * 2 <= 255) ? gradient_100.s + color_adj_step * 2 : 255; - dprintf("Gradient 100 HSV: %d, %d, %d\n", gradient_100.h, gradient_100.s, gradient_100.v); - } - return false; - case G2_SAD: - if (record->event.pressed) { - gradient_100.s = (gradient_100.s - color_adj_step * 2 >= 0) ? gradient_100.s - color_adj_step * 2 : 0; - dprintf("Gradient 100 HSV: %d, %d, %d\n", gradient_100.h, gradient_100.s, gradient_100.v); - } - return false; - case G2_VAI: - if (record->event.pressed) { - gradient_100.v = (gradient_100.v + color_adj_step * 2 <= 255) ? gradient_100.v + color_adj_step * 2 : 255; - dprintf("Gradient 100 HSV: %d, %d, %d\n", gradient_100.h, gradient_100.s, gradient_100.v); - } - return false; - case G2_VAD: - if (record->event.pressed) { - gradient_100.v = (gradient_100.v - color_adj_step * 2 >= 0) ? gradient_100.v - color_adj_step * 2 : 0; - dprintf("Gradient 100 HSV: %d, %d, %d\n", gradient_100.h, gradient_100.s, gradient_100.v); - } - return false; - case G_PRE: - if (record->event.pressed) { - gp_i = (gp_i + gp_length ) % gp_length; - - gradient_0 = gradient_presets[gp_i].gradient_0; - gradient_100 = gradient_presets[gp_i].gradient_1; - reflected_gradient = gradient_presets[gp_i].reflected; - - gp_i += 1; - } - return false; - case REF_G: - if (record->event.pressed) { - reflected_gradient = !reflected_gradient; - } - return false; - case G_FLIP: - if (record->event.pressed) { - HSV temp_color = gradient_0; - gradient_0 = gradient_100; - gradient_100 = temp_color; - } - return false; - case RGB_C_E: - if (record->event.pressed) { - switch (rgb_matrix_get_mode()) { - case RGB_MATRIX_CUSTOM_CUSTOM_GRADIENT: - rgb_matrix_mode(RGB_MATRIX_CUSTOM_COOL_DIAGONAL); - return false; - case RGB_MATRIX_CUSTOM_COOL_DIAGONAL: - rgb_matrix_mode(RGB_MATRIX_CUSTOM_FLOWER_BLOOMING); - return false; - case RGB_MATRIX_CUSTOM_FLOWER_BLOOMING: - rgb_matrix_mode(RGB_MATRIX_CUSTOM_RANDOM_BREATH_RAINBOW); - return false; - default: - rgb_matrix_mode(RGB_MATRIX_CUSTOM_CUSTOM_GRADIENT); - return false; - } - } - return false; - } - return true; -} diff --git a/users/horrortroll/horrortroll.h b/users/horrortroll/horrortroll.h deleted file mode 100644 index a251f74d6c..0000000000 --- a/users/horrortroll/horrortroll.h +++ /dev/null @@ -1,49 +0,0 @@ -/* Copyright 2023 HorrorTroll - * - * 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 . - */ - -#include "quantum.h" - -// 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. - -enum layer_names { - _BASE, - _FN, -}; - -enum custom_keycodes { - //Custom Gradient control keycode - G1_HUI = SAFE_RANGE, //Custom gradient color 1 hue increase - G1_HUD, //Custom gradient color 1 hue decrease - G1_SAI, //Custom gradient color 1 saturation increase - G1_SAD, //Custom gradient color 1 saturation decrease - G1_VAI, //Custom gradient color 1 value increase - G1_VAD, //Custom gradient color 1 value decrease - G2_HUI, //Custom gradient color 2 hue increase - G2_HUD, //Custom gradient color 2 hue decrease - G2_SAI, //Custom gradient color 2 saturation increase - G2_SAD, //Custom gradient color 2 saturation decrease - G2_VAI, //Custom gradient color 2 value increase - G2_VAD, //Custom gradient color 2 value decrease - G_PRE, //Gradient presets - REF_G, //Toggle between linear and reflected gradient - G_FLIP, //Flip the gradient colors - - //Custom led effect keycode - RGB_C_E, //Cycle user effect -}; diff --git a/users/horrortroll/led/cool_diagonal.c b/users/horrortroll/led/cool_diagonal.c deleted file mode 100644 index 900130aba5..0000000000 --- a/users/horrortroll/led/cool_diagonal.c +++ /dev/null @@ -1,22 +0,0 @@ -/* Copyright 2022 HorrorTroll - * - * 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 . - */ - -static HSV COOL_DIAGONAL_math(HSV hsv, uint8_t i, uint8_t time) { - hsv.h = (g_led_config.point[i].x / 4) - g_led_config.point[i].y - time; - return hsv; -} - -bool COOL_DIAGONAL(effect_params_t* params) { return effect_runner_i(params, &COOL_DIAGONAL_math); } diff --git a/users/horrortroll/led/custom_gradient.c b/users/horrortroll/led/custom_gradient.c deleted file mode 100644 index af6173d250..0000000000 --- a/users/horrortroll/led/custom_gradient.c +++ /dev/null @@ -1,74 +0,0 @@ -/* Copyright 2022 HorrorTroll - * - * 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 . - */ - -extern HSV gradient_0; -extern HSV gradient_100; -extern bool reflected_gradient; - -static HSV INTERPOLATE_HSV(float step, HSV gradient_0, HSV gradient_100) { - uint8_t cw, ccw; - HSV color; - - cw = (gradient_0.h >= gradient_100.h) ? 255 + gradient_100.h - gradient_0.h : gradient_100.h - gradient_0.h; // Hue range is 0 to 255. - ccw = (gradient_0.h >= gradient_100.h) ? gradient_0.h - gradient_100.h : 255 + gradient_0.h - gradient_100.h; - - if( cw < ccw ) { // going clockwise - color.h = gradient_0.h + (uint8_t)(step * cw); - } else { // Going counter clockwise - color.h = gradient_0.h - (uint8_t)(step * ccw); - } - - color.s = gradient_0.s + step * (gradient_100.s - gradient_0.s); - - // Scale V with global RGB Matrix's V, so users can still control overall brightness with RGB_VAI & RGB_VAD0 - color.v = round((gradient_0.v + step * (gradient_100.v - gradient_0.v)) * ((float)rgb_matrix_config.hsv.v / 255)); - - return color; -} - -static HSV CUSTOM_GRADIENT_math(uint8_t led_x, uint8_t min_x, uint8_t max_x) { - float step = (float)led_x / (max_x - min_x); - float mid_gradient_pos = 0.5; - - if( reflected_gradient ) { - if( step <= mid_gradient_pos ) { - return INTERPOLATE_HSV(step * (1/mid_gradient_pos), gradient_0, gradient_100); - } else { - return INTERPOLATE_HSV((step - mid_gradient_pos) * (1/(1-mid_gradient_pos)), gradient_100, gradient_0); - } - - } else { - return INTERPOLATE_HSV(step, gradient_0, gradient_100); - } -} - -static bool CUSTOM_GRADIENT(effect_params_t* params) { - RGB_MATRIX_USE_LIMITS(led_min, led_max); - - uint8_t min_x = 0; // X coordinate of the left-most LED - uint8_t max_x = 224; // X coordinate of the right-most LED - - for (uint8_t i = led_min; i < led_max; i++) { - RGB_MATRIX_TEST_LED_FLAGS(); - - HSV hsv_orig = CUSTOM_GRADIENT_math(g_led_config.point[i].x, min_x, max_x); - RGB rgb = hsv_to_rgb(hsv_orig); - - rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); - } - - return led_max < RGB_MATRIX_LED_COUNT; -} diff --git a/users/horrortroll/led/flower_blooming/flower_blooming.c b/users/horrortroll/led/flower_blooming/flower_blooming.c deleted file mode 100644 index add83149cc..0000000000 --- a/users/horrortroll/led/flower_blooming/flower_blooming.c +++ /dev/null @@ -1,27 +0,0 @@ -/* Copyright 2022 HorrorTroll - * - * 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 . - */ - -#include "led/flower_blooming/flower_blooming.h" - -static HSV FLOWER_BLOOMING_math(HSV hsv, uint8_t i, uint8_t time) { - if (g_led_config.point[i].y > k_rgb_matrix_center.y) - hsv.h = g_led_config.point[i].x * 3 - g_led_config.point[i].y * 3 + time; - else - hsv.h = g_led_config.point[i].x * 3 - g_led_config.point[i].y * 3 - time; - return hsv; -} - -bool FLOWER_BLOOMING(effect_params_t* params) { return effect_runner_bloom(params, &FLOWER_BLOOMING_math); } diff --git a/users/horrortroll/led/flower_blooming/flower_blooming.h b/users/horrortroll/led/flower_blooming/flower_blooming.h deleted file mode 100644 index ccdaa70d97..0000000000 --- a/users/horrortroll/led/flower_blooming/flower_blooming.h +++ /dev/null @@ -1,36 +0,0 @@ -/* Copyright 2022 HorrorTroll - * - * 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 . - */ - -#pragma once - -typedef HSV (*flower_blooming_f)(HSV hsv, uint8_t i, uint8_t time); - -bool effect_runner_bloom(effect_params_t* params, flower_blooming_f effect_func) { - RGB_MATRIX_USE_LIMITS(led_min, led_max); - - uint8_t time = scale16by8(g_rgb_timer, qadd8(rgb_matrix_config.speed / 10, 1)); - for (uint8_t i = led_min; i < led_max; i++) { - RGB_MATRIX_TEST_LED_FLAGS(); - if (g_led_config.point[i].y > k_rgb_matrix_center.y) { - RGB bgr = rgb_matrix_hsv_to_rgb(effect_func(rgb_matrix_config.hsv, i, time)); - rgb_matrix_set_color(i, bgr.b, bgr.g, bgr.r); - } else { - RGB rgb = rgb_matrix_hsv_to_rgb(effect_func(rgb_matrix_config.hsv, i, time)); - rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); - } - } - return rgb_matrix_check_finished_leds(led_max); -} diff --git a/users/horrortroll/led/random_breath_rainbow.c b/users/horrortroll/led/random_breath_rainbow.c deleted file mode 100644 index ba1ca55faf..0000000000 --- a/users/horrortroll/led/random_breath_rainbow.c +++ /dev/null @@ -1,55 +0,0 @@ -/* Copyright 2022 HorrorTroll - * - * 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 . - */ - -static uint8_t offset[RGB_MATRIX_LED_COUNT]; - -static void doRandom_breath_rainbow(int i, effect_params_t* params) { - if (!HAS_ANY_FLAGS(g_led_config.flags[i], params->flags)) return; - uint16_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 6); - - if (rand() * 50 == 1) { - if (rand() * 2 == 1) { - offset[i]++; - } - else { - offset[i]--; - } - } - - //float val = (((float)sin8(time + offset[i]) / 256)/2.1) + .05; - HSV hsv = {0, 255, 255}; - hsv.h = scale16by8(g_rgb_timer + offset[i], rgb_matrix_config.speed / 4) + (offset[i]*2); - hsv.v = scale8(abs8(sin8(time) - 128) * 2, hsv.v); - RGB rgb = rgb_matrix_hsv_to_rgb(hsv); - rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); -} - -bool RANDOM_BREATH_RAINBOW(effect_params_t* params) { - - if (!params->init) { - // Change one LED every tick, make sure speed is not 0 - doRandom_breath_rainbow(rand() % RGB_MATRIX_LED_COUNT, params); - return false; - } - - RGB_MATRIX_USE_LIMITS(led_min, led_max); - - for (uint8_t i = led_min; i < led_max; i++) { - doRandom_breath_rainbow(i, params); - } - - return led_max < RGB_MATRIX_LED_COUNT; -} diff --git a/users/horrortroll/readme.md b/users/horrortroll/readme.md deleted file mode 100644 index 420c9b0986..0000000000 --- a/users/horrortroll/readme.md +++ /dev/null @@ -1,24 +0,0 @@ -/* Copyright 2023 HorrorTroll - * - * 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 . - */ - -# My personal keymap with custom LED - -### Custom LED effect list: - -- Custom gradient ([ported from SirTimmyTimbit code](https://github.com/SirTimmyTimbit/customizable-gradient-effect-for-drop-alt)) -- Cool diagonal ([ported from pleasuretek code](https://github.com/pleasuretek/qmk_firmware)) -- Flower Blooming -- Random breath rainbow ([based from daed code](https://github.com/daed/qmk_firmware/blob/master/keyboards/massdrop/alt/keymaps/daed) and modify by me) diff --git a/users/horrortroll/rgb_matrix_user.inc b/users/horrortroll/rgb_matrix_user.inc deleted file mode 100644 index 08c608dc44..0000000000 --- a/users/horrortroll/rgb_matrix_user.inc +++ /dev/null @@ -1,13 +0,0 @@ -RGB_MATRIX_EFFECT(CUSTOM_GRADIENT) -RGB_MATRIX_EFFECT(COOL_DIAGONAL) -RGB_MATRIX_EFFECT(FLOWER_BLOOMING) -RGB_MATRIX_EFFECT(RANDOM_BREATH_RAINBOW) - -#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS - -#include "led/custom_gradient.c" -#include "led/cool_diagonal.c" -#include "led/flower_blooming/flower_blooming.c" -#include "led/random_breath_rainbow.c" - -#endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS diff --git a/users/horrortroll/rules.mk b/users/horrortroll/rules.mk deleted file mode 100644 index 579f5fd38b..0000000000 --- a/users/horrortroll/rules.mk +++ /dev/null @@ -1,6 +0,0 @@ -VIA_ENABLE = yes -RGB_MATRIX_CUSTOM_USER = yes - -ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes) - SRC += $(USER_PATH)/horrortroll.c -endif diff --git a/users/hvp/config.h b/users/hvp/config.h deleted file mode 100644 index b7d0443bbc..0000000000 --- a/users/hvp/config.h +++ /dev/null @@ -1,19 +0,0 @@ - /* Copyright 2021 hvp - * - * 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 . - */ -#pragma once - -#define LONG_TAPPING_TERM 1000 -#define PERMISSIVE_HOLD diff --git a/users/hvp/hvp.c b/users/hvp/hvp.c deleted file mode 100644 index 7e484535c8..0000000000 --- a/users/hvp/hvp.c +++ /dev/null @@ -1,2 +0,0 @@ - -#include "hvp.h" diff --git a/users/hvp/hvp.h b/users/hvp/hvp.h deleted file mode 100644 index 275838a49a..0000000000 --- a/users/hvp/hvp.h +++ /dev/null @@ -1,43 +0,0 @@ - /* Copyright 2021 hvp - * - * 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 . - */ - - -#pragma once -#include "quantum.h" -#undef TAPPING_TERM -#define TAPPING_TERM 150 - -#ifdef TAP_DANCE_ENABLE -# include "tap_dances.h" -#endif - -#ifdef TAPPING_TERM_PER_KEY -# include "per_key.h" -#endif - - -#define D_NAVI MT(MOD_LCTL | MOD_LSFT, KC_D) - -/* Home-row mods */ -#define LG_A MT(MOD_LGUI, KC_A) -#define LA_S MT(MOD_LALT, KC_S) -#define LS_D MT(MOD_LSFT, KC_D) -#define LC_F MT(MOD_LCTL, KC_F) - -#define RC_H MT(MOD_RCTL, KC_H) -#define RS_J MT(MOD_RSFT, KC_J) -#define RA_K MT(MOD_RALT, KC_K) -#define RG_L MT(MOD_RGUI, KC_L) \ No newline at end of file diff --git a/users/hvp/per_key.c b/users/hvp/per_key.c deleted file mode 100644 index fc4d455f5a..0000000000 --- a/users/hvp/per_key.c +++ /dev/null @@ -1,43 +0,0 @@ - /* Copyright 2021 hvp - * - * 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 . - */ - - -// #include per_key.h - -uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case MT(MOD_LGUI, KC_A): - return TAPPING_TERM + LONG_TAPPING_TERM; - case MT(MOD_LALT, KC_S): - return TAPPING_TERM + LONG_TAPPING_TERM; - case MT(MOD_LSFT, KC_D): - return TAPPING_TERM + LONG_TAPPING_TERM; - case MT(MOD_LCTL, KC_F): - return TAPPING_TERM + LONG_TAPPING_TERM; - case MT(MOD_RCTL, KC_H): - return TAPPING_TERM + LONG_TAPPING_TERM; - case MT(MOD_RSFT, KC_J): - return TAPPING_TERM + LONG_TAPPING_TERM; - case MT(MOD_RALT, KC_K): - return TAPPING_TERM + LONG_TAPPING_TERM; - case MT(MOD_RGUI, KC_L): - return TAPPING_TERM + LONG_TAPPING_TERM; - case SC_LCPO: - return TAPPING_TERM 75; - default: - return TAPPING_TERM; - } -} \ No newline at end of file diff --git a/users/hvp/readme.md b/users/hvp/readme.md deleted file mode 100644 index 2d8f9d8597..0000000000 --- a/users/hvp/readme.md +++ /dev/null @@ -1 +0,0 @@ -Personal user space for hvpcode / cablegore at discord diff --git a/users/hvp/rules.mk b/users/hvp/rules.mk deleted file mode 100644 index 549483b67b..0000000000 --- a/users/hvp/rules.mk +++ /dev/null @@ -1,9 +0,0 @@ - -SRC += hvp.c -ifeq ($(strip $(TAP_DANCE_ENABLE)), yes) - SRC += tap_dances.c -endif - -ifeq ($(strip $(TAPPING_TERM_PER_KEY)), yes) - SRC += per_key.c -endif \ No newline at end of file diff --git a/users/hvp/tap_dances.c b/users/hvp/tap_dances.c deleted file mode 100644 index 51e227737a..0000000000 --- a/users/hvp/tap_dances.c +++ /dev/null @@ -1,103 +0,0 @@ -#include "tap_dances.h" - -// Tap dance function for enable swedish characters on first layer. Unregister to not let tap bleed over to next keypress. -// Tap dance 1 -void dance_1_finished(tap_dance_state_t *state, void *user_data) { - if (state->count == 2) { - tap_code(KC_SCLN); - } else { - tap_code16(ALGR(KC_A)); - } -} - -void dance_1_reset(tap_dance_state_t *state, void *user_data) { - if (state->count == 2) { - unregister_code(KC_SCLN); - } else { - unregister_code16(ALGR(KC_A)); - } -} - -// Tap dance 2 -void dance_2_finished(tap_dance_state_t *state, void *user_data) { - if (state->count == 2) { - tap_code(KC_QUOT); - } else { - tap_code16(ALGR(KC_W)); - } -} - -void dance_2_reset(tap_dance_state_t *state, void *user_data) { - if (state->count == 2) { - unregister_code(KC_QUOT); - } else { - unregister_code16(ALGR(KC_W)); - } -} - -// Tap dance 3 -void dance_3_finished(tap_dance_state_t *state, void *user_data) { - // if (state->count == 2) - if (state->count == 2) { - tap_code(KC_SLSH); - } else { - tap_code16(ALGR(KC_O)); - } -} - -void dance_3_reset(tap_dance_state_t *state, void *user_data) { - if (state->count == 2) { - unregister_code(KC_SLSH); - } else { - unregister_code16(ALGR(KC_O)); - } -} - -// Tap dance 4 -void dance_4_finished(tap_dance_state_t *state, void *user_data) { - // if (state->count == 2) - if (state->count == 2) { - tap_code(KC_DOT); - } else { - tap_code16(ALGR(KC_W)); - } -} - -void dance_4_reset(tap_dance_state_t *state, void *user_data) { - if (state->count == 2) { - unregister_code(KC_DOT); - } else { - unregister_code16(ALGR(KC_W)); - } -} - -// Tap dance 5 -void dance_5_finished(tap_dance_state_t *state, void *user_data) { - // if (state->count == 2) - if (state->count == 2) { - tap_code(KC_DOT); - } else { - tap_code16(ALGR(KC_O)); - } -} - -void dance_5_reset(tap_dance_state_t *state, void *user_data) { - if (state->count == 2) { - unregister_code(KC_DOT); - } else { - unregister_code16(ALGR(KC_O)); - } -} - -// Tap Dance Definitions -tap_dance_action_t tap_dance_actions[] = { - // simple tap dance - [TD1] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_1_finished, dance_1_reset), - - [TD2] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_2_finished, dance_2_reset), - - [TD3] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_3_finished, dance_3_reset), - - [TD4] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_4_finished, dance_4_reset), - - [TD5] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_5_finished, dance_5_reset)}; \ No newline at end of file diff --git a/users/hvp/tap_dances.h b/users/hvp/tap_dances.h deleted file mode 100644 index a00caf0929..0000000000 --- a/users/hvp/tap_dances.h +++ /dev/null @@ -1,29 +0,0 @@ - /* Copyright 2021 hvp - * - * 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 . - */ - - -#pragma once -#include "quantum.h" - -// Tap Dance Declarations -enum tapdance_id -{ - TD1 = 0, - TD2, - TD3, - TD4, - TD5 -}; \ No newline at end of file diff --git a/users/ibnuda/abstraction.c b/users/ibnuda/abstraction.c deleted file mode 100644 index 757248a260..0000000000 --- a/users/ibnuda/abstraction.c +++ /dev/null @@ -1,17 +0,0 @@ -/* Copyright 2021 Ibnu D. Aji - * - * 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 . - */ - -#include "abstraction.h" \ No newline at end of file diff --git a/users/ibnuda/abstraction.h b/users/ibnuda/abstraction.h deleted file mode 100644 index 499d512dfc..0000000000 --- a/users/ibnuda/abstraction.h +++ /dev/null @@ -1,117 +0,0 @@ -/* Copyright 2021 Ibnu D. Aji - * - * 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 . - */ - -#pragma once -#include "quantum.h" - -enum { - _BASE, - _LOWER, - _RAISE, - _ADJUST, -}; - -// keycode abstraction -// ABC: -// A: L = left -// R = right -// B: U = upper row -// M = middle row -// L = lower row -// C: P = pinky finger -// R = ring finger -// M = middle finger -// I = index finger -// II = inner index finger -#define LUP KC_Q -#define LUR KC_V -#define LUM KC_C -#define LUI KC_P -#define LUII KC_B -#define LMP KC_R -#define LMR KC_S -#define LMM KC_T -#define LMI KC_H -#define LMII KC_D -#define LLP KC_QUOT -#define LLR KC_J -#define LLM KC_G -#define LLI KC_K -#define LLII KC_X - -#define RUP KC_Z -#define RUR KC_Y -#define RUM KC_U -#define RUI KC_L -#define RUII KC_DOT -#define RMP KC_O -#define RMR KC_I -#define RMM KC_A -#define RMI KC_N -#define RMII KC_F -#define RLP KC_SLSH -#define RLR KC_SCLN -#define RLM KC_W -#define RLI KC_M -#define RLII KC_COMM - - -// thumb keys. -#define TRAISE TG(_RAISE) -#define AL_ENT ALT_T(KC_ENT) -#define SF_BSPC SFT_T(KC_BSPC) -#define CT_ESC CTL_T(KC_ESC) - -// home row mods. -#define CTLR LCTL_T(LMR) -#define CTRR RCTL_T(RMR) -#define CT_LEFT LCTL_T(KC_LEFT) -#define CT_SIX RCTL_T(KC_6) - -#define SHLP LSFT_T(LMP) -#define SHRP RSFT_T(RMP) -#define SH_HASH LSFT_T(KC_HASH) -#define SH_ZERO RSFT_T(KC_0) - -#define ALLM LALT_T(LMM) -#define ALRM RALT_T(RMM) -#define AL_DOWN LALT_T(KC_DOWN) -#define AL_FIVE RALT_T(KC_5) - -#define GULII RGUI_T(LMII) -#define GURII LGUI_T(RMII) -#define GU_DLR RGUI_T(KC_DLR) -#define GU_EQL LGUI_T(KC_EQL) - -// layer toggle. -#define LW_E LT(_LOWER, KC_E) -#define RS_SPC LT(_RAISE, KC_SPC) - -#define ADDDD MO(_ADJUST) - -// common shortcuts for windows and linux that i use. -#define NXTTAB LCTL(KC_PGDN) -#define PRVTAB LCTL(KC_PGUP) -#define UPTAB LCTL(LSFT(KC_PGUP)) -#define DNTAB LCTL(LSFT(KC_PGDN)) -#define NXTWIN LALT(KC_TAB) -#define PRVWIN LALT(LSFT(KC_TAB)) -#define CALDL LCTL(LALT(KC_DEL)) -#define TSKMGR LCTL(LSFT(KC_ESC)) -#define EXPLR LGUI(KC_E) -#define LCKGUI LGUI(KC_L) -#define CONPST LSFT(KC_INS) -#define CLSGUI LALT(KC_F4) diff --git a/users/ibnuda/combo.c b/users/ibnuda/combo.c deleted file mode 100644 index a48b0aae37..0000000000 --- a/users/ibnuda/combo.c +++ /dev/null @@ -1 +0,0 @@ -#include "combo.h" diff --git a/users/ibnuda/combo.h b/users/ibnuda/combo.h deleted file mode 100644 index c4fd5f12ed..0000000000 --- a/users/ibnuda/combo.h +++ /dev/null @@ -1,96 +0,0 @@ -#pragma once -#include "quantum.h" - -#include "abstraction.h" - -// enum for combos. -enum combos { - // left hand combinations. - R_U_PINKY_RING, - R_U_RING_MIDDLE, - R_U_RING_INDEX, - R_U_MIDDLE_INDEX, - R_U_MIDDLE_INNER_INDEX, - R_U_INDEX_INNER_INDEX, - R_L_PINKY_RING, - R_L_RING_MIDDLE, - R_L_RING_INDEX, - R_L_MIDDLE_INDEX, - R_L_INDEX_INNER_INDEX, - - // right hand combinations. - L_U_PINKY_RING, - L_U_RING_MIDDLE, - L_U_RING_INDEX, - L_U_MIDDLE_INDEX, - L_U_MIDDLE_INNER_INDEX, - L_U_INNER_INNER_INDEX, - L_L_PINKY_RING, - L_L_RING_MIDDLE, - L_L_MIDDLE_INDEX, - L_L_RING_INDEX, - L_L_INDEX_INNER_INDEX, - - // both hands combinations. - B_L_MIDDLE_MIDDLE, -}; - -// left hand combinations. -const uint16_t PROGMEM lu_p_r_combo[] = {LUP, LUR, COMBO_END}; -const uint16_t PROGMEM lu_r_m_combo[] = {LUR, LUM, COMBO_END}; -const uint16_t PROGMEM lu_r_i_combo[] = {LUR, LUI, COMBO_END}; -const uint16_t PROGMEM lu_m_i_combo[] = {LUM, LUI, COMBO_END}; -const uint16_t PROGMEM lu_m_ii_combo[] = {LUM, LUII, COMBO_END}; -const uint16_t PROGMEM lu_i_ii_combo[] = {LUI, LUII, COMBO_END}; -const uint16_t PROGMEM ll_p_r_combo[] = {LLP, LLR, COMBO_END}; -const uint16_t PROGMEM ll_r_m_combo[] = {LLR, LLM, COMBO_END}; -const uint16_t PROGMEM ll_r_i_combo[] = {LLR, LLI, COMBO_END}; -const uint16_t PROGMEM ll_m_i_combo[] = {LLM, LLI, COMBO_END}; -const uint16_t PROGMEM ll_i_ii_combo[] = {LLI, LLII, COMBO_END}; - -// right hand combinations. -const uint16_t PROGMEM ru_p_r_combo[] = {RUP, RUR, COMBO_END}; -const uint16_t PROGMEM ru_r_m_combo[] = {RUR, RUM, COMBO_END}; -const uint16_t PROGMEM ru_r_i_combo[] = {RUR, RUI, COMBO_END}; -const uint16_t PROGMEM ru_m_i_combo[] = {RUM, RUI, COMBO_END}; -const uint16_t PROGMEM ru_m_ii_combo[] = {RUM, RUII, COMBO_END}; -const uint16_t PROGMEM ru_i_ii_combo[] = {RUI, RUII, COMBO_END}; -const uint16_t PROGMEM rl_p_r_combo[] = {RLP, RLR, COMBO_END}; -const uint16_t PROGMEM rl_r_m_combo[] = {RLR, RLM, COMBO_END}; -const uint16_t PROGMEM rl_r_i_combo[] = {RLR, RLI, COMBO_END}; -const uint16_t PROGMEM rl_m_i_combo[] = {RLM, RLI, COMBO_END}; -const uint16_t PROGMEM rl_i_ii_combo[] = {RLI, RLII, COMBO_END}; - -// both hand combinations. -const uint16_t PROGMEM bl_m_m_combo[] = {LLM, RLM, COMBO_END}; - -combo_t key_combos[] = { - // left hand combinations. - [R_U_PINKY_RING] = COMBO(lu_p_r_combo, KC_TAB), - [R_U_RING_MIDDLE] = COMBO(lu_r_m_combo, KC_QUES), - [R_U_RING_INDEX] = COMBO(lu_r_i_combo, PRVTAB), - [R_U_MIDDLE_INDEX] = COMBO(lu_m_i_combo, KC_UNDS), - [R_U_MIDDLE_INNER_INDEX] = COMBO(lu_m_ii_combo, KC_ENT), - [R_U_INDEX_INNER_INDEX] = COMBO(lu_i_ii_combo, KC_PIPE), - [R_L_PINKY_RING] = COMBO(ll_p_r_combo, KC_ENT), - [R_L_RING_MIDDLE] = COMBO(ll_r_m_combo, LCTL(KC_W)), - [R_L_RING_INDEX] = COMBO(ll_r_i_combo, KC_TAB), - [R_L_MIDDLE_INDEX] = COMBO(ll_m_i_combo, KC_DEL), - [R_L_INDEX_INNER_INDEX] = COMBO(ll_i_ii_combo, KC_TILD), - - // right hand combinations. - [L_U_PINKY_RING] = COMBO(ru_p_r_combo, KC_BSPC), - [L_U_RING_MIDDLE] = COMBO(ru_r_m_combo, KC_SLSH), - [L_U_RING_INDEX] = COMBO(ru_r_i_combo, NXTTAB), - [L_U_MIDDLE_INDEX] = COMBO(ru_m_i_combo, KC_MINS), - [L_U_MIDDLE_INNER_INDEX] = COMBO(ru_m_ii_combo, KC_ENT), - [L_U_INNER_INNER_INDEX] = COMBO(ru_i_ii_combo, KC_BSLS), - [L_L_PINKY_RING] = COMBO(rl_p_r_combo, KC_BSLS), - [L_L_RING_MIDDLE] = COMBO(rl_r_m_combo, KC_APP), - [L_L_RING_INDEX] = COMBO(rl_r_i_combo, LSFT(KC_TAB)), - [L_L_MIDDLE_INDEX] = COMBO(rl_m_i_combo, KC_DEL), - [L_L_INDEX_INNER_INDEX] = COMBO(rl_i_ii_combo, KC_GRV), - - // both hand combinations. - [B_L_MIDDLE_MIDDLE] = COMBO(bl_m_m_combo, KC_ENT), -}; diff --git a/users/ibnuda/config.h b/users/ibnuda/config.h deleted file mode 100644 index 957d24a04c..0000000000 --- a/users/ibnuda/config.h +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once - -#define COMBO_TERM 50 - -#define PERMISSIVE_HOLD diff --git a/users/ibnuda/ibnuda.c b/users/ibnuda/ibnuda.c deleted file mode 100644 index 8d5bd04ba0..0000000000 --- a/users/ibnuda/ibnuda.c +++ /dev/null @@ -1 +0,0 @@ -#include "ibnuda.h" diff --git a/users/ibnuda/ibnuda.h b/users/ibnuda/ibnuda.h deleted file mode 100644 index 6047b546ff..0000000000 --- a/users/ibnuda/ibnuda.h +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once -#include "quantum.h" - -#include "abstraction.h" -#include "wrapper.h" diff --git a/users/ibnuda/readme.md b/users/ibnuda/readme.md deleted file mode 100644 index 24b8d6ba34..0000000000 --- a/users/ibnuda/readme.md +++ /dev/null @@ -1,14 +0,0 @@ -Copyright 2020 Ibnu D. Aji @ibnuda - -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 . diff --git a/users/ibnuda/rules.mk b/users/ibnuda/rules.mk deleted file mode 100644 index c4b096c4a0..0000000000 --- a/users/ibnuda/rules.mk +++ /dev/null @@ -1,8 +0,0 @@ -COMBO_ENABLE = yes -CONSOLE_ENABLE = yes - -SRC += ibnuda.c - -ifeq ($(strip $(COMBO_ENABLE)), yes) - SRC += combo.c -endif diff --git a/users/ibnuda/wrapper.h b/users/ibnuda/wrapper.h deleted file mode 100644 index c85be9d6b1..0000000000 --- a/users/ibnuda/wrapper.h +++ /dev/null @@ -1,8 +0,0 @@ -#pragma once - -#if (!defined(LAYOUT) && defined(KEYMAP)) -# define LAYOUT KEYMAP -#endif - -#define KEYMAP_wrapper(...) LAYOUT(__VA_ARGS__) -#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__) diff --git a/users/imchipwood/imchipwood.c b/users/imchipwood/imchipwood.c deleted file mode 100644 index 9d111c015b..0000000000 --- a/users/imchipwood/imchipwood.c +++ /dev/null @@ -1,141 +0,0 @@ -/* Copyright 2021 imchipwood - * - * 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 . - */ -#include "imchipwood.h" - -static td_state_t td_state[3]; - -// determine the tapdance state to return -int cur_dance(tap_dance_state_t *state) { - if (state->count == 1) { - if (state->interrupted || !state->pressed) { - return SINGLE_TAP; - } else { - return SINGLE_HOLD; - } - } - if (state->count == 2) { - return DOUBLE_TAP; - } else { - return 3; - } // any number higher than the maximum state value you return above -} - -void altf2_finished(tap_dance_state_t *state, void *user_data) { - td_state[0] = cur_dance(state); - switch (td_state[0]) { - case SINGLE_TAP: - register_code(KC_F2); - break; - case SINGLE_HOLD: - register_mods(MOD_BIT(KC_LALT)); - break; - case DOUBLE_TAP: - register_mods(MOD_BIT(KC_LALT)); - tap_code(KC_F2); - break; - } -} - -void altf2_reset(tap_dance_state_t *state, void *user_data) { - switch (td_state[0]) { - case SINGLE_TAP: - unregister_code(KC_F2); - break; - case SINGLE_HOLD: - unregister_mods(MOD_BIT(KC_LALT)); - break; - case DOUBLE_TAP: - unregister_code(KC_F2); - unregister_mods(MOD_BIT(KC_LALT)); - break; - } -} - - -void ctlf5_finished(tap_dance_state_t *state, void *user_data) { - td_state[1] = cur_dance(state); - switch (td_state[1]) { - case SINGLE_TAP: - register_code(KC_F5); - break; - case SINGLE_HOLD: - register_mods(MOD_BIT(KC_LCTL)); - break; - case DOUBLE_TAP: - register_mods(MOD_BIT(KC_LCTL)); - tap_code(KC_F5); - break; - } -} - -void ctlf5_reset(tap_dance_state_t *state, void *user_data) { - switch (td_state[1]) { - case SINGLE_TAP: - unregister_code(KC_F5); - break; - case SINGLE_HOLD: - unregister_mods(MOD_BIT(KC_LCTL)); - break; - case DOUBLE_TAP: - unregister_code(KC_F5); - unregister_mods(MOD_BIT(KC_LCTL)); - break; - } -} - -void altf7_finished(tap_dance_state_t *state, void *user_data) { - td_state[2] = cur_dance(state); - switch (td_state[2]) { - case SINGLE_TAP: - register_code(KC_F7); - break; - case SINGLE_HOLD: - register_mods(MOD_BIT(KC_LALT)); - break; - case DOUBLE_TAP: - register_mods(MOD_BIT(KC_LALT)); - tap_code(KC_F7); - break; - } -} - -void altf7_reset(tap_dance_state_t *state, void *user_data) { - switch (td_state[2]) { - case SINGLE_TAP: - unregister_code(KC_F7); - break; - case SINGLE_HOLD: - unregister_mods(MOD_BIT(KC_LALT)); - break; - case DOUBLE_TAP: - unregister_code(KC_F7); - unregister_mods(MOD_BIT(KC_LALT)); - break; - } -} - -tap_dance_action_t tap_dance_actions[] = { - [ALT_F2] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, altf2_finished, altf2_reset), - [CTL_F5] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ctlf5_finished, ctlf5_reset), - [ALT_F7] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, altf7_finished, altf7_reset), - [DEL_NLCK] = ACTION_TAP_DANCE_DOUBLE(KC_DEL, KC_NUM), - // Double tap right -> END - [TD_REND] = ACTION_TAP_DANCE_DOUBLE(KC_RIGHT, KC_END), - // Double tap left -> HOME - [TD_LOME] = ACTION_TAP_DANCE_DOUBLE(KC_LEFT, KC_HOME), - // Double tap right shift -> CAPS LOCK - [TD_RSFT_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_RSFT, KC_CAPS), -}; diff --git a/users/imchipwood/imchipwood.h b/users/imchipwood/imchipwood.h deleted file mode 100644 index 1e4bc3f744..0000000000 --- a/users/imchipwood/imchipwood.h +++ /dev/null @@ -1,51 +0,0 @@ -/* Copyright 2021 imchipwood - * - * 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 . - */ -#pragma once - -#include "quantum.h" - -// change the tapping term to a little bit quicker -#ifdef TAPPING_TERM - #undef TAPPING_TERM -#endif -#define TAPPING_TERM 175 - -#ifdef TAPPING_TOGGLE - #undef TAPPING_TOGGLE -#endif -#define TAPPING_TOGGLE 2 - - -enum td_keycodes { - TD_REND = 0, // right when tapped, end when double tapped - TD_LOME, // left when tapped, home when double tapped - TD_RSFT_CAPS, - ALT_F2, // F2 when tapped, LALT when held, LALT+F2 when double tapped - CTL_F5, // F5 when tapped, LCTL when held, LCTL+F5 when double tapped - ALT_F7, // F7 when tapped, LALT when held, LALT+F7 when double tapped - DEL_NLCK, // DEL when tapped, NUMLOCK when double tapped -}; - - -typedef enum { SINGLE_TAP, SINGLE_HOLD, DOUBLE_TAP } td_state_t; -int cur_dance(tap_dance_state_t *state); - -void altf2_finished(tap_dance_state_t *state, void *user_data); -void altf2_reset(tap_dance_state_t *state, void *user_data); -void ctlf5_finished(tap_dance_state_t *state, void *user_data); -void ctlf5_reset(tap_dance_state_t *state, void *user_data); -void altf7_finished(tap_dance_state_t *state, void *user_data); -void altf7_reset(tap_dance_state_t *state, void *user_data); diff --git a/users/imchipwood/rules.mk b/users/imchipwood/rules.mk deleted file mode 100644 index 87cca5b5e2..0000000000 --- a/users/imchipwood/rules.mk +++ /dev/null @@ -1,2 +0,0 @@ -SRC += imchipwood.c -TAP_DANCE_ENABLE=yes diff --git a/users/ishtob/config.h b/users/ishtob/config.h deleted file mode 100755 index 993521acc4..0000000000 --- a/users/ishtob/config.h +++ /dev/null @@ -1,68 +0,0 @@ -#ifndef CONFIG_USER_H -#define CONFIG_USER_H - - -#ifdef AUDIO_ENABLE - #define STARTUP_SONG SONG(PLANCK_SOUND) - // #define STARTUP_SONG SONG(NO_SOUND) - - #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \ - SONG(COLEMAK_SOUND), \ - SONG(DVORAK_SOUND) \ - } -#endif - -//#define LEADER_TIMEOUT 300 -//#define PERMISSIVE_HOLD - -//audio clicky - //#define AUDIO_CLICKY - // to enable clicky on startup - //#define AUDIO_CLICKY_ON - //#define AUDIO_CLICKY_FREQ_RANDOMNESS 1.0f - -/* ws2812 RGB LED -#define WS2812_DI_PIN B5 -#define RGBLED_NUM 8 // Number of LEDs -#define RGBLIGHT_HUE_STEP 10 -#define RGBLIGHT_SAT_STEP 17 -*/ -#undef PLANCK_MIT_LAYOUT - -//#define MUON_LEFT - -#undef DEBOUNCE -#define DEBOUNCE 0 - -//rgb-reactive -//#define RGB_MATRIX_KEYPRESSES -//#define EECONFIG_RGB_MATRIX (uint32_t *)16 - -//skip usb startup check -//#define NO_USB_STARTUP_CHECK - - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 2 - -// Most tactile encoders have detents every 4 stages -#define ENCODER_RESOLUTION 4 - -#endif diff --git a/users/ishtob/ishtob.c b/users/ishtob/ishtob.c deleted file mode 100644 index 1b847d6306..0000000000 --- a/users/ishtob/ishtob.c +++ /dev/null @@ -1,69 +0,0 @@ -/* -Based on userspace written by @drashna 2017 -Copyright 2018 Hsian Chang @ishtob - -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 . -*/ - -#include "ishtob.h" -#include "action.h" -#include "action_layer.h" -// #include "dynamic_macro.h" -#ifdef AUDIO_ENABLE - #include "audio.h" -#endif - - -// Add reconfigurable functions here, for keymap customization -// This allows for a global, userspace functions, and continued -// customization of the keymap. Use _keymap instead of _user -// functions in the keymaps -__attribute__ ((weak)) -void matrix_init_keymap(void) {} - -__attribute__ ((weak)) -void matrix_scan_keymap(void) {} - -__attribute__ ((weak)) -bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { - return true; -} - -__attribute__ ((weak)) -bool process_record_secrets(uint16_t keycode, keyrecord_t *record) { - return true; -} - -// Call user matrix init, then call the keymap's init function -void matrix_init_user(void) { - matrix_init_keymap(); -} - -// No global matrix scan code, so just run keymap's matix -// scan function -void matrix_scan_user(void) { - matrix_scan_keymap(); -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case DFU: - if (record->event.pressed) { - clear_keyboard(); - reset_keyboard(); - } - return false; - break; - } - return process_record_keymap(keycode, record) && process_record_secrets(keycode, record); -} - diff --git a/users/ishtob/ishtob.h b/users/ishtob/ishtob.h deleted file mode 100644 index fcc2e2b847..0000000000 --- a/users/ishtob/ishtob.h +++ /dev/null @@ -1,237 +0,0 @@ -#ifndef USERSPACE -#define USERSPACE -#include QMK_KEYBOARD_H - -enum userspace_keycodes { - QWERTY = SAFE_RANGE, - COLEMAK, - DVORAK, - PLOVER, - LOWER, - RAISE, - BACKLIT, - EXT_PLV, - DFU, - P_CITRIX, //these macro exsists in macros_private.c, which is excluded from git - P_MPASS, - P_META, - O_DAYRN, - O_RTQ6H, - O_3DRN, - O_AUTODC, - M_EMAIL, - M_EMAIL2 -}; - -// 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 _QWERTY 0 -#define _COLEMAK 1 -#define _DVORAK 2 -#define _LOWER 3 -#define _RAISE 4 -#define _PLOVER 5 -#define _FNLAYER 6 -#define _NUMLAY 7 -#define _MOUSECURSOR 8 -#define _ADJUST 9 - - - -#define LOWER MO(_LOWER) -#define RAISE MO(_RAISE) - -// Custom macros -#define CTL_ESC CTL_T(KC_ESC) // Tap for Esc, hold for Ctrl -#define CTL_TTAB CTL_T(KC_TAB) // Tap for Esc, hold for Ctrl -#define CTL_ENT CTL_T(KC_ENT) // Tap for Enter, hold for Ctrl -#define SFT_ENT SFT_T(KC_ENT) // Tap for Enter, hold for Shift -// Requires KC_TRNS/_______ for the trigger key in the destination layer -#define LT_FN(kc) LT(_FNLAYER, kc) // L-ayer T-ap Function Layer -#define LT_MC(kc) LT(_MOUSECURSOR, kc) // L-ayer T-ap M-ouse C-ursor -#define LT_RAI(kc) LT(_RAISE, kc) // L-ayer T-ap to Raise -#define TG_NUMLAY TG(_NUMLAY) //Toggle for layer _NUMLAY -/* -enum userspace_layers { - _QWERTY = 0, - _COLEMAK, - _DVORAK, - _LOWER, - _RAISE, - _PLOVER, - _FNLAYER, - _NUMLAY, - _MOUSECURSOR, - _ADJUST -}; -*/ - -/* -Since our quirky block definitions are basically a list of comma separated -arguments, we need a wrapper in order for these definitions to be -expanded before being used as arguments to the LAYOUT_xxx macro. -*/ -#if (!defined(LAYOUT) && defined(KEYMAP)) -#define LAYOUT KEYMAP -#endif - -#define LAYOUT_ergodox_wrapper(...) LAYOUT_ergodox(__VA_ARGS__) -#define LAYOUT_ergodox_pretty_wrapper(...) LAYOUT_ergodox_pretty(__VA_ARGS__) -#define KEYMAP_wrapper(...) LAYOUT(__VA_ARGS__) -#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__) -#define LAYOUT_ortho_4x12_wrapper(...) LAYOUT_ortho_4x12(__VA_ARGS__) - -/* -Blocks for each of the four major keyboard layouts -Organized so we can quickly adapt and modify all of them -at once, rather than for each keyboard, one at a time. -And this allows for much cleaner blocks in the keymaps. -For instance Tap/Hold for Control on all of the layouts - -NOTE: These are all the same length. If you do a search/replace - then you need to add/remove underscores to keep the - lengths consistent. -*/ - -#define _________________QWERTY_L1_________________ KC_Q, KC_W, KC_E, KC_R, KC_T -#define _________________QWERTY_L2_________________ KC_A, KC_S, KC_D, KC_F, KC_G -#define _________________QWERTY_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_B - -#define _________________QWERTY_R1_________________ KC_Y, KC_U, KC_I, KC_O, KC_P -#define _________________QWERTY_R2_________________ KC_H, KC_J, KC_K, KC_L, LT_MC(KC_SCLN) -#define _________________QWERTY_R3_________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLASH - - -#define _________________COLEMAK_L1________________ KC_Q, KC_W, KC_F, KC_P, KC_G -#define _________________COLEMAK_L2________________ KC_A, KC_R, KC_S, KC_T, KC_D -#define _________________COLEMAK_L3________________ KC_Z, KC_X, KC_C, KC_V, KC_B - -#define _________________COLEMAK_R1________________ KC_J, KC_L, KC_U, KC_Y, KC_SCLN -#define _________________COLEMAK_R2________________ KC_H, KC_N, KC_E, KC_I, LT_MC(KC_O) -#define _________________COLEMAK_R3________________ KC_K, KC_M, KC_COMM, KC_DOT, KC_SLASH - -#define ______________COLEMAK_MOD_DH_L1____________ KC_Q, KC_W, KC_F, KC_P, KC_B -#define ______________COLEMAK_MOD_DH_L2____________ KC_A, KC_R, KC_S, KC_T, KC_G -#define ______________COLEMAK_MOD_DH_L3____________ KC_Z, KC_X, KC_C, KC_D, KC_V - -#define ______________COLEMAK_MOD_DH_R1____________ KC_J, KC_L, KC_U, KC_Y, KC_SCLN -#define ______________COLEMAK_MOD_DH_R2____________ KC_M, KC_N, KC_E, KC_I, LT_MC(KC_O) -#define ______________COLEMAK_MOD_DH_R3____________ KC_K, KC_H, KC_COMM, KC_DOT, KC_SLASH - - -#define _________________DVORAK_L1_________________ KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y -#define _________________DVORAK_L2_________________ KC_A, KC_O, KC_E, KC_U, KC_I -#define _________________DVORAK_L3_________________ KC_SCLN, KC_Q, KC_J, KC_K, KC_X - -#define _________________DVORAK_R1_________________ KC_F, KC_G, KC_C, KC_R, KC_L -#define _________________DVORAK_R2_________________ KC_D, KC_H, KC_T, KC_N, LT_MC(KC_S) -#define _________________DVORAK_R3_________________ KC_B, KC_M, KC_W, KC_V, KC_Z - - -#define _________________WORKMAN_L1________________ KC_Q, KC_D, KC_R, KC_W, KC_B -#define _________________WORKMAN_L2________________ KC_A, KC_S, KC_H, KC_T, KC_G -#define _________________WORKMAN_L3________________ KC_Z, KC_X, KC_M, KC_C, KC_V - -#define _________________WORKMAN_R1________________ KC_J, KC_F, KC_U, KC_P, KC_SCLN -#define _________________WORKMAN_R2________________ KC_Y, KC_N, KC_E, KC_O, LT_MC(KC_I) -#define _________________WORKMAN_R3________________ KC_K, KC_L, KC_COMM, KC_DOT, KC_SLASH - - -#define _________________NORMAN_L1_________________ KC_Q, KC_W, KC_D, KC_F, KC_K -#define _________________NORMAN_L2_________________ KC_A, KC_S, KC_E, KC_T, KC_G -#define _________________NORMAN_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_B - -#define _________________NORMAN_R1_________________ KC_J, KC_U, KC_R, KC_L, KC_SCLN -#define _________________NORMAN_R2_________________ KC_Y, KC_N, KC_I, KC_O, LT_MC(KC_U) -#define _________________NORMAN_R3_________________ KC_P, KC_M, KC_COMM, KC_DOT, KC_SLASH - - -#define _________________MALTRON_L1________________ KC_Q, KC_P, KC_Y, KC_C, KC_B -#define _________________MALTRON_L2________________ KC_A, KC_N, KC_I, KC_S, KC_F -#define _________________MALTRON_L3________________ KC_SCLN, KC_SLSH, KC_J KC_G, KC_COMM - -#define _________________MALTRON_R1________________ KC_V, KC_M, KC_U, KC_Z, KC_L -#define _________________MALTRON_R2________________ KC_D, KC_T, KC_D, KC_O, LT_MC(KC_R) -#define _________________MALTRON_R3________________ KC_DOT, KC_W, KC_K, KC_MINS, KC_X - - -#define _________________EUCALYN_L1________________ KC_SLSH, KC_COMM, KC_DOT, KC_F, KC_Q -#define _________________EUCALYN_L2________________ KC_A, KC_O, KC_E, KC_I, KC_U -#define _________________EUCALYN_L3________________ KC_Z, KC_X, KC_C, KC_V, KC_W - -#define _________________EUCALYN_R1________________ KC_M, KC_R, KC_D, KC_Y, KC_P -#define _________________EUCALYN_R2________________ KC_G, KC_T, KC_K, KC_S, LT_MC(KC_N) -#define _________________EUCALYN_R3________________ KC_B, KC_H, KC_J, KC_L, KC_SCLN - - -#define _____________CARPLAX_QFMLWY_L1_____________ KC_Q, KC_F, KC_M, KC_L, KC_W -#define _____________CARPLAX_QFMLWY_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R -#define _____________CARPLAX_QFMLWY_L3_____________ KC_Z, KC_V, KC_G, KC_C, KC_X - -#define _____________CARPLAX_QFMLWY_R1_____________ KC_Y, KC_U, KC_O, KC_B, KC_J -#define _____________CARPLAX_QFMLWY_R2_____________ KC_I, KC_A, KC_E, KC_H, LT_MC(KC_SCLN) -#define _____________CARPLAX_QFMLWY_R3_____________ KC_P, KC_K, KC_COMM, KC_DOT, KC_SLSH - - -#define _____________CARPLAX_QGMLWB_L1_____________ KC_Q, KC_G, KC_M, KC_L, KC_W -#define _____________CARPLAX_QGMLWB_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R -#define _____________CARPLAX_QGMLWB_L3_____________ KC_Z, KC_X, KC_C, KC_F, KC_J - -#define _____________CARPLAX_QGMLWB_R1_____________ KC_B, KC_Y, KC_U, KC_V, KC_SCLN -#define _____________CARPLAX_QGMLWB_R2_____________ KC_I, KC_A, KC_E, KC_O, LT_MC(KC_H) -#define _____________CARPLAX_QGMLWB_R3_____________ KC_K, KC_P, KC_COMM, KC_DOT, KC_SLSH - - -#define _____________CARPLAX_QGMLWY_L1_____________ KC_Q, KC_G, KC_M, KC_L, KC_W -#define _____________CARPLAX_QGMLWY_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R -#define _____________CARPLAX_QGMLWY_L3_____________ KC_Z, KC_X, KC_C, KC_V, KC_J - -#define _____________CARPLAX_QGMLWY_R1_____________ KC_Y, KC_F, KC_U, KC_B, KC_SCLN -#define _____________CARPLAX_QGMLWY_R2_____________ KC_I, KC_A, KC_E, KC_O, LT_MC(KC_H) -#define _____________CARPLAX_QGMLWY_R3_____________ KC_K, KC_P, KC_COMM, KC_DOT, KC_SLSH - - -#define ________________NUMBER_LEFT________________ KC_1, KC_2, KC_3, KC_4, KC_5 -#define ________________NUMBER_RIGHT_______________ KC_6, KC_7, KC_8, KC_9, KC_0 -#define _________________FUNC_LEFT_________________ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5 -#define _________________FUNC_RIGHT________________ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10 - -#define __________________LONG_FUNC_LEFT___________________ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6 -#define __________________LONG_FUNC_RIGHT__________________ KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12 - -#define ___________________BLANK___________________ _______, _______, _______, _______, _______ - - -#define _________________LOWER_L1__________________ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC -#define _________________LOWER_L2__________________ _________________FUNC_LEFT_________________ -#define _________________LOWER_L3__________________ _________________FUNC_RIGHT________________ - -#define _________________LOWER_R1__________________ KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN -#define _________________LOWER_R2__________________ _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR -#define _________________LOWER_R3__________________ _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT - - - -#define _________________RAISE_L1__________________ ________________NUMBER_LEFT________________ -#define _________________RAISE_L2__________________ ___________________BLANK___________________ -#define _________________RAISE_L3__________________ ___________________BLANK___________________ - -#define _________________RAISE_R1__________________ ________________NUMBER_RIGHT_______________ -#define _________________RAISE_R2__________________ _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC -#define _________________RAISE_R3__________________ _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END - - - -#define _________________ADJUST_L1_________________ RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG -#define _________________ADJUST_L2_________________ MU_TOGG, CK_TOGG, AU_ON, AU_OFF, AG_NORM -#define _________________ADJUST_L3_________________ RGB_RMOD,RGB_HUD,RGB_SAD, RGB_VAD, KC_RGB_T - -#define _________________ADJUST_R1_________________ KC_SEC1, KC_SEC2, KC_SEC3, KC_SEC4, KC_SEC5 -#define _________________ADJUST_R2_________________ AG_SWAP, QWERTY, COLEMAK, DVORAK, WORKMAN -#define _________________ADJUST_R3_________________ MG_NKRO, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT - - - -#endif // !USERSPACE diff --git a/users/ishtob/readme.md b/users/ishtob/readme.md deleted file mode 100644 index 5b7064de9e..0000000000 --- a/users/ishtob/readme.md +++ /dev/null @@ -1,87 +0,0 @@ -# Ishtob's userspace - -under developement - -# Secret Macros - -This section is a modified version of what @drashna did in his userspace: https://github.com/qmk/qmk_firmware/tree/master/users/drashna#secret-macros - -`macros_private.c` will be used if it exsists in the userspace folder during compiling. - -To get started, put the following in rules.mk. this will have the compiler include the macros_private.c file if it exsists. -``` -SRC += ishtob.c -ifneq ($(wildcard $(USER_PATH)/macros_private.c),"") - SRC += macros_private.c -endif -ifeq ($(strip $(NO_SECRETS)), yes) - OPT_DEFS += -DNO_SECRETS -endif -``` - -Remember that all macro keycode has to be present in the header file (ishtob.h) to prevent error during compile. - -Next, you setup macros_private.c, ensure the keycodes are defined in ishtob.h (or your keymap.h). -Here is an example of my macros with the sensitive login information removed: -``` -#include "ishtob.h" //replace this with your userspace or keymap -#include "quantum.h" - -#pragma message "secret macros included" //debug line to let me know this file is included in the compile - -//this str is for the monthly password rotation per my workplace's security policy -char my_str[5] = "stuff"; - -bool process_record_secrets(uint16_t keycode, keyrecord_t *record) { - if (record->event.pressed) { - switch(keycode) { - //my login macros - case P_CITRIX: - SEND_STRING("username"SS_TAP(X_TAB)"something"); - send_string(my_str); - return false; - case P_MPASS: - SEND_STRING("something"); - send_string(my_str); - return false; - case P_META: - SEND_STRING("metausername"); - return false; - //my work macros for the meta application - case O_RTQ6H: - SEND_STRING(SS_TAP(X_TAB)"0300"SS_TAP(X_TAB)SS_TAP(X_DOWN)SS_TAP(X_TAB)"0900"SS_TAP(X_TAB)SS_TAP(X_DOWN)SS_TAP(X_TAB)"1500"SS_TAP(X_TAB)SS_TAP(X_DOWN)SS_TAP(X_TAB)"2100"SS_TAP(X_TAB)SS_LALT("o")); - return false; - case O_AUTODC: - SEND_STRING(SS_LALT("v")SS_TAP(X_TAB)SS_TAP(X_TAB)SS_TAP(X_TAB)SS_TAP(X_TAB)SS_TAP(X_TAB)SS_TAP(X_TAB)SS_TAP(X_TAB)SS_TAP(X_TAB)SS_TAP(X_TAB)"T"SS_TAP(X_TAB)"N"SS_LALT("s")); - return false; - case O_DAYRN: - SEND_STRING(SS_TAP(X_TAB)SS_TAP(X_TAB)SS_TAP(X_TAB)SS_TAP(X_TAB)SS_TAP(X_TAB)"1"SS_LALT("s")); - return false; - //Ops macros - case M_EMAIL: - SEND_STRING("privatemail@email.com"); - return false; - case M_EMAIL2: - SEND_STRING("workemail@work.com"); - return false; - } - } - return true; -} -``` - - -Finally, add the following to .git/info/exclude to prevent private macros from being committed to git. -``` -# git ls-files --others --exclude-from=.git/info/exclude -# Lines that start with '#' are comments. -# For a project mostly in C, the following would be a good set of -# exclude patterns (uncomment them if you want to use them): -# *.[oa] -# *~ -/users/ishtob/macros_private.c -``` - -# Special mentions - -special thanks to @drashna for helping me through quite a bit of these codes. \ No newline at end of file diff --git a/users/ishtob/rules.mk b/users/ishtob/rules.mk deleted file mode 100755 index 909502b50a..0000000000 --- a/users/ishtob/rules.mk +++ /dev/null @@ -1,7 +0,0 @@ -SRC += ishtob.c -ifneq ("$(wildcard $(USER_PATH)/macros_private.c)","") - SRC += macros_private.c -endif -ifeq ($(strip $(NO_SECRETS)), yes) - OPT_DEFS += -DNO_SECRETS -endif diff --git a/users/issmirnov/config.h b/users/issmirnov/config.h deleted file mode 100644 index a74f6fbc91..0000000000 --- a/users/issmirnov/config.h +++ /dev/null @@ -1,41 +0,0 @@ -#pragma once - -// how long before a tap becomes a hold -#undef TAPPING_TERM -#define TAPPING_TERM 100 - -// makes tap and hold keys work better for fast typers who don't want -// tapping term set above 500 -#define PERMISSIVE_HOLD - -// tap anyway, even after TAPPING_TERM, if there was no other key -// interruption between press and release -#define RETRO_TAPPING - -// how many taps before triggering the toggle -#undef ONESHOT_TAP_TOGGLE -#define ONESHOT_TAP_TOGGLE 2 - -// how long before oneshot modifier key times out (currently only shift) -#undef ONESHOT_TIMEOUT -#define ONESHOT_TIMEOUT 2000 - -// Enable combos for vim -#define COMBO_TERM 50 // window in milliseconds to trigger combo - -// Allow more than 4 keys to be sent to the system. Useful for gaming. -// #define FORCE_NKRO - -// Save 200 bytes on unused keycodes -#undef LOCKING_SUPPORT_ENABLE -#undef LOCKING_RESYNC_ENABLE - -// Enable HID_listen commands. -#define NO_DEBUG -#undef NO_PRINT -#define USER_PRINT - -// Note: Defining the following does not have any impact on space: -// - NO_ACTION_MACRO -// - NO_ACTION_FUNCTION -// - DISABLE_LEADER diff --git a/users/issmirnov/issmirnov.c b/users/issmirnov/issmirnov.c deleted file mode 100644 index ecfb423ee2..0000000000 --- a/users/issmirnov/issmirnov.c +++ /dev/null @@ -1,41 +0,0 @@ -#include "issmirnov.h" - -enum combo_events { - JK_ESC, - DF_CLN, - SD_SLASH, - XC_COPY, - XV_PASTE -}; - - -const uint16_t PROGMEM jk_combo[] = {KC_J, KC_K, COMBO_END}; -const uint16_t PROGMEM df_combo[] = {KC_D, KC_F, COMBO_END}; -const uint16_t PROGMEM sd_combo[] = {KC_S, KC_D, COMBO_END}; -const uint16_t PROGMEM copy_combo[] = {KC_X, KC_C, COMBO_END}; -const uint16_t PROGMEM paste_combo[] = {KC_X, KC_V, COMBO_END}; - -combo_t key_combos[] = { - COMBO(jk_combo, KC_ESC), - COMBO(df_combo, KC_COLON), - COMBO(sd_combo, KC_SLASH), - [XC_COPY] = COMBO_ACTION(copy_combo), - [XV_PASTE] = COMBO_ACTION(paste_combo), -}; - - -void process_combo_event(uint16_t combo_index, bool pressed) { - switch(combo_index) { - case XC_COPY: - if (pressed) { - tap_code16(LCTL(KC_C)); - } - break; - - case XV_PASTE: - if (pressed) { - tap_code16(LCTL(KC_V)); - } - break; - } -} diff --git a/users/issmirnov/issmirnov.h b/users/issmirnov/issmirnov.h deleted file mode 100644 index eef80dfc47..0000000000 --- a/users/issmirnov/issmirnov.h +++ /dev/null @@ -1,35 +0,0 @@ -#pragma once - -#include QMK_KEYBOARD_H - -#include "rows.h" - -// 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 -enum { - _QWERTY = 0, - _SYMB, - _NUMP, - _OVERWATCH, - _NAVI -}; - -enum custom_keycodes { - PLACEHOLDER = SAFE_RANGE, - TAP_TOG_LAYER, - CLEAR_EEPROM, - WKSP_LEFT, // Smart key that only activates when we are momentarily in a layer - WKSP_RIGHT, // Smart key that only activates when we are momentarily in a layer -}; - - -#define LOWER MO(_SYMB) -#define RAISE MO(_NUMP) - -#define CTL_SPC MT(MOD_LCTL, KC_SPC) -#define OSMSFT OSM(MOD_LSFT) -#define LOCK LGUI(KC_L) -#define MODSFT LSFT(KC_LGUI) -#define APPS LGUI(KC_SPC) diff --git a/users/issmirnov/rows.h b/users/issmirnov/rows.h deleted file mode 100644 index bac91d641b..0000000000 --- a/users/issmirnov/rows.h +++ /dev/null @@ -1,55 +0,0 @@ -#pragma once - -#include QMK_KEYBOARD_H - -// This wrapper is required in order to expand the row macro inside the keymap configs. -#define LAYOUT_ergodox_wrapper(...) LAYOUT_ergodox(__VA_ARGS__) -#define LAYOUT_ortho_4x12_wrapper(...) LAYOUT_ortho_4x12(__VA_ARGS__) - -// Share common config. We'll skip the mod rows and func rows. -// Note, it's also really neat the way the scoping works. Since we perform the expansion in the keymap.c file -// so we can use our enums for custom keycodes -#define _________________QWERTY_L1_________________ KC_Q , KC_W , KC_E , KC_R , KC_T -#define _________________QWERTY_L2_________________ KC_A , KC_S , KC_D , KC_F , KC_G -#define _________________QWERTY_L3_________________ KC_Z , KC_X , KC_C , KC_V , KC_B - -#define _________________QWERTY_R1_________________ KC_Y , KC_U , KC_I , KC_O , KC_P -#define _________________QWERTY_R2_________________ KC_H , KC_J , KC_K , KC_L , TAP_TOG_LAYER -#define _________________QWERTY_R3_________________ KC_N , KC_M , KC_DOT , KC_COMMA , TG(_NUMP) - -#define ___________________BLANK___________________ _______ , _______ , _______ , _______ , _______ -#define ___________________XXXXX___________________ XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX - -#define _________________SYMB_L1___________________ KC_MINS , KC_AT , KC_LCBR , KC_RCBR , KC_GRV -#define _________________SYMB_L2___________________ KC_CIRC , KC_UNDS , KC_LPRN , KC_RPRN , KC_DLR -#define _________________SYMB_L3___________________ KC_LABK , KC_RABK , KC_LBRC , KC_RBRC , KC_TILD - -#define _________________SYMB_R1___________________ KC_ASTR , KC_EXLM , KC_PIPE , KC_PERC , KC_PLUS -#define _________________SYMB_R2___________________ KC_HASH , KC_EQL , KC_COLN , KC_SCLN , TAP_TOG_LAYER -#define _________________SYMB_R3___________________ KC_AMPR , KC_QUES , KC_SLASH , KC_BSLS , TG(_NUMP) - - -#define _________________NUMP_L1___________________ KC_NO , KC_NO , LGUI(KC_UP) , XXXXXXX , XXXXXXX -#define _________________NUMP_L2___________________ XXXXXXX , LGUI(KC_LEFT) , LGUI(KC_DOWN) , LGUI(KC_RIGHT) , XXXXXXX -#define _________________NUMP_L3___________________ XXXXXXX , XXXXXXX , XXXXXXX , KC_AUDIO_VOL_DOWN , KC_AUDIO_VOL_UP - -#define _________________NUMP_R1___________________ KC_COMM , KC_7 , KC_8 , KC_9 , XXXXXXX -#define _________________NUMP_R2___________________ KC_0 , KC_4 , KC_5 , KC_6 , TO(_SYMB) -#define _________________NUMP_R3___________________ KC_DOT , KC_1 , KC_2 , KC_3 , TO(_QWERTY) - -// Note: These are 6x1 blocks, since modifiers are also adjusted. -#define ______________OVERWATCH_L1_________________ KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T -#define ______________OVERWATCH_L2_________________ KC_LCTL , KC_A , KC_S , KC_D , KC_F , KC_P -#define ______________OVERWATCH_L3_________________ KC_LSFT , KC_Z , KC_X , KC_C , KC_V , KC_GRAVE -// Ergodox only has 5 keys on bottom row: -#define ______________OVERWATCH_L4_________________ KC_LCTL , KC_F9 , KC_PSCR , KC_H , KC_R - - - -#define _________________NAVI_L1___________________ XXXXXXX , XXXXXXX , KC_UP , XXXXXXX , XXXXXXX -#define _________________NAVI_L2___________________ XXXXXXX , KC_LEFT , KC_DOWN , KC_RGHT , XXXXXXX -#define _________________NAVI_L3___________________ XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX - -#define _________________NAVI_R1___________________ XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX -#define _________________NAVI_R2___________________ XXXXXXX , KC_LCTL , XXXXXXX , XXXXXXX , XXXXXXX -#define _________________NAVI_R3___________________ XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX diff --git a/users/issmirnov/rules.mk b/users/issmirnov/rules.mk deleted file mode 100644 index d96083f7d1..0000000000 --- a/users/issmirnov/rules.mk +++ /dev/null @@ -1,25 +0,0 @@ - -SRC += tap_tog.c -SRC += issmirnov.c - -# https://www.reddit.com/r/olkb/comments/bmpgjm/programming_help/ -# Should shave 2000 bytes -LTO_ENABLE = yes - -# Enable debugging only when needed. -CONSOLE_ENABLE = yes # +400 bytes (hid_listen support) - -# Enable combo keys for vim usage. -# https://github.com/qmk/qmk_firmware/blob/master/docs/feature_combo.md -COMBO_ENABLE = yes - -# This allows the keyboard to tell the host OS that up to 248 keys are held down at once -NKRO_ENABLE = no # note: also needs FORCE_NKRO in config.h - -# Disable unused features to save on space -# https://thomasbaart.nl/2018/12/01/reducing-firmware-size-in-qmk/ -MOUSEKEY_ENABLE = no # 2000 bytes -BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite -COMMAND_ENABLE = no # https://beta.docs.qmk.fm/features/feature_command -UNICODE_ENABLE = no # Unicode -SWAP_HANDS_ENABLE = no # Allow swapping hands of keyboard diff --git a/users/issmirnov/tap_tog.c b/users/issmirnov/tap_tog.c deleted file mode 100644 index 02cea08b1d..0000000000 --- a/users/issmirnov/tap_tog.c +++ /dev/null @@ -1,52 +0,0 @@ -#include QMK_KEYBOARD_H - -#include "tap_tog.h" - -bool tap_tog_layer_other_key_pressed = false; -bool tap_tog_layer_toggled_on = false; -uint8_t tap_tog_count = 0; - -void process_tap_tog(uint8_t layer, keyrecord_t *record) { - tap_tog_count++; - // press - if (record->event.pressed) { - - // TTL has already been pressed and we are toggled into that layer - // so now we need to leave - if(tap_tog_layer_toggled_on) { - layer_clear(); - tap_tog_layer_toggled_on = false; - } - - // this means we're in our default layer - // so switch the layer immediately - // whether we'll switch back when it's released depends on if a button gets pressed while this is held down - else { - // switch layer - layer_on(layer); - tap_tog_layer_other_key_pressed = false; // if this becomes true before it gets released, it will act as a held modifier - } - } - - // release - else { - // if it was used as a held modifier (like traditional shift) - if(tap_tog_layer_other_key_pressed) { - // switch layer back - layer_clear(); - } - // if it was used as a toggle button - else { - // next time, it will turn layer off - tap_tog_layer_toggled_on = true; - - // If it's been tapped twice, reset the toggle flag. - // Otherwise, we get stuck oscillating between this code block and the - // pressed && TTL_toggled_on block. - if (tap_tog_count >= 4 ) { - tap_tog_count = 0; - tap_tog_layer_toggled_on = false; - } - } - } -} diff --git a/users/issmirnov/tap_tog.h b/users/issmirnov/tap_tog.h deleted file mode 100644 index f59711f043..0000000000 --- a/users/issmirnov/tap_tog.h +++ /dev/null @@ -1,10 +0,0 @@ -#pragma once - -#include "issmirnov.h" - -extern bool tap_tog_layer_other_key_pressed; // set to true if any key pressed while TAP_TOG_LAYER held down -extern bool tap_tog_layer_toggled_on; // will become true if no keys are pressed while TTL held down -extern uint8_t tap_tog_count; // number of presses on TAP_TOG_LAYER button. - -// Tap dance analog with momentary toggle when held, switch when tapped -void process_tap_tog(uint8_t layer, keyrecord_t *record); diff --git a/users/jackhumbert/jackhumbert.c b/users/jackhumbert/jackhumbert.c deleted file mode 100644 index 011e0efb8f..0000000000 --- a/users/jackhumbert/jackhumbert.c +++ /dev/null @@ -1 +0,0 @@ -#include "jackhumbert.h" \ No newline at end of file diff --git a/users/jackhumbert/jackhumbert.h b/users/jackhumbert/jackhumbert.h deleted file mode 100644 index 69cfa67451..0000000000 --- a/users/jackhumbert/jackhumbert.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef USERSPACE -#define USERSPACE - -#include "quantum.h" - -#endif \ No newline at end of file diff --git a/users/jackhumbert/readme.md b/users/jackhumbert/readme.md deleted file mode 100644 index 479a64140a..0000000000 --- a/users/jackhumbert/readme.md +++ /dev/null @@ -1,14 +0,0 @@ -Copyright 2017 Jack Humbert @jackhumbert - -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 . \ No newline at end of file diff --git a/users/jackhumbert/rules.mk b/users/jackhumbert/rules.mk deleted file mode 100644 index f2981bb786..0000000000 --- a/users/jackhumbert/rules.mk +++ /dev/null @@ -1 +0,0 @@ -SRC += jackhumbert.c \ No newline at end of file diff --git a/users/jarred/config.h b/users/jarred/config.h deleted file mode 100644 index bea1f48310..0000000000 --- a/users/jarred/config.h +++ /dev/null @@ -1,49 +0,0 @@ -/* Copyright 2018 Jarred Steenvoorden - * - * 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 . - */ - -#pragma once - -// Sets good default for the speed of the mouse. -#undef MOUSEKEY_INTERVAL -#undef MOUSEKEY_DELAY -#undef MOUSEKEY_TIME_TO_MAX -#undef MOUSEKEY_MAX_SPEED - -#define MOUSEKEY_INTERVAL 16 -#define MOUSEKEY_DELAY 0 -#define MOUSEKEY_TIME_TO_MAX 40 -#define MOUSEKEY_MAX_SPEED 5 - -#undef MOUSEKEY_WHEEL_MAX_SPEED -#undef MOUSEKEY_WHEEL_TIME_TO_MAX -#undef MOUSEKEY_WHEEL_DELAY - -#define MOUSEKEY_WHEEL_MAX_SPEED 4 -#define MOUSEKEY_WHEEL_TIME_TO_MAX 255 -#define MOUSEKEY_WHEEL_DELAY 0 - -#undef TAPPING_TOGGLE -#undef TAPPING_TERM - -#define PERMISSIVE_HOLD -#define TAPPING_TOGGLE 1 -#define TAPPING_TERM 200 - -#ifdef AUDIO_ENABLE - #define STARTUP_SONG SONG(PLANCK_SOUND) -#endif - -#define MACRO_TIMER 5 diff --git a/users/jarred/jarred.c b/users/jarred/jarred.c deleted file mode 100644 index b37c4cfbb7..0000000000 --- a/users/jarred/jarred.c +++ /dev/null @@ -1,97 +0,0 @@ -/* Copyright 2018 Jarred Steenvoorden - * - * 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 . - */ - -#include "jarred.h" -#include "version.h" - -__attribute__ ((weak)) -bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { - return true; -} - -bool lowerPressed, raisePressed; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - - switch (keycode) { - case LOWER: - case RAISE: - // Both lower and raise activate the same layer - if (record->event.pressed) { - layer_on(_LW); - } else { - layer_off(_LW); - } - - // But keep track of each to active adjust layer - if (keycode == LOWER) { - lowerPressed = record->event.pressed; - } else { - raisePressed = record->event.pressed; - } - - // When both are pressed, activate adjust - if (lowerPressed && raisePressed) { - layer_on(_NP); - } else { - layer_off(_NP); - } - - break; - - case NUMPAD: - if (record->event.pressed) { - layer_on(_NP); - } else { - layer_off(_NP); - } - break; - - case NAVI: - if (record->event.pressed) { - layer_on(_NV); - } else { - layer_off(_NV); - - // Release mods set by ALT_TAB and CTL_TAB - unregister_code(KC_LALT); - unregister_code(KC_LCTL); - } - break; - - case VRSN: // Prints firmware version - if (record->event.pressed) { - send_string_with_delay_P(PSTR(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE), MACRO_TIMER); - } - break; - - case ALT_TAB: - if (record->event.pressed) { - register_code(KC_LALT); - tap_code(KC_TAB); - } - break; - - case CTL_TAB: - if (record->event.pressed) { - register_code(KC_LCTL); - tap_code(KC_TAB); - } - break; - } - - return process_record_keymap(keycode, record); -} diff --git a/users/jarred/jarred.h b/users/jarred/jarred.h deleted file mode 100644 index cec407da7f..0000000000 --- a/users/jarred/jarred.h +++ /dev/null @@ -1,172 +0,0 @@ -/* Copyright 2018 Jarred Steenvoorden - * - * 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 . - */ - -// TODO: Add Alt-Tab to nav + W layer - -#ifndef USERSPACE -#define USERSPACE - -#include "quantum.h" - -enum userspace_custom_keycodes { - VRSN = SAFE_RANGE, // Prints QMK Firmware and board info - ALT_TAB, - CTL_TAB, - - // Layer keys - NAVI, - LOWER, - RAISE, - NUMPAD -}; - -// Layers -enum { - _QW = 0, - _GAME, - _LW, - _NV, - _NP, - _MS, -}; - -#define MS_A LT(_MS,KC_A) - -#define WIN_Z LGUI_T(KC_Z) -#define CTL_SLH RCTL_T(KC_SLSH) - -// Wrappers -#define LAYOUT_planck_grid_wrapper(...) LAYOUT_planck_grid(__VA_ARGS__) -#define LAYOUT_plaid_grid_wrapper(...) LAYOUT_plaid_grid(__VA_ARGS__) -#define LAYOUT_atreus62_grid_wrapper(...) LAYOUT(__VA_ARGS__) -#define LAYOUT_ergotravel_grid_wrapper(...) LAYOUT(__VA_ARGS__) - -/* Qwerty Layer */ -#define QWERTY_L1 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T -#define QWERTY_L2 NAVI, KC_A, KC_S, KC_D, KC_F, KC_G -#define QWERTY_L3 KC_LSFT, WIN_Z, KC_X, KC_C, KC_V, KC_B -#define QWERTY_L4 KC_LCTL, KC_LGUI, NUMPAD, KC_LALT, LOWER, KC_SPC - -#define QWERTY_R1 KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC -#define QWERTY_R2 KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT -#define QWERTY_R3 KC_N, KC_M, KC_COMM, KC_DOT, CTL_SLH, KC_RSFT -#define QWERTY_R4 KC_ENT, RAISE, KC_RALT, MO(_MS), KC_APP, KC_RCTL - -#define QWERTY_4_DOX KC_LCTL, LOWER, KC_SPC, KC_ENT, RAISE, KC_RALT - -/* Game Layer */ -#define GAME_L1 _______, _______, _______, _______, _______, _______ -#define GAME_L2 _______, _______, _______, _______, _______, _______ -#define GAME_L3 _______, _______, _______, _______, _______, _______ -#define GAME_L4 _______, _______, KC_LALT, LOWER, KC_SPC, KC_SPC - -#define GAME_R1 _______, _______, _______, _______, _______, _______ -#define GAME_R2 _______, _______, _______, _______, _______, _______ -#define GAME_R3 _______, _______, _______, _______, _______, _______ -#define GAME_R4 _______, _______, _______, _______, _______, _______ - -/* Lower / Upper Layer */ -#define LOWER_L1 KC_ESC , KC_1, KC_2, KC_3, KC_4, KC_5 -#define LOWER_L2 _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5 -#define LOWER_L3 _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10 -#define LOWER_L4 _______, _______, _______, _______, _______, _______ - -#define LOWER_R1 KC_6, KC_7, KC_8, KC_9, KC_0, _______ -#define LOWER_R2 KC_F11, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS -#define LOWER_R3 KC_F12, KC_GRV, _______, _______, _______, _______ -#define LOWER_R4 _______, _______, _______, _______, _______, _______ - -#define LOWER_4_DOX _______, _______, _______, _______, _______, _______ - -/* Navigation Layer */ -#define NAV_L1 _______, _______, _______, KC_LGUI, KC_DEL, KC_BSPC -#define NAV_L2 _______, _______, _______, KC_LSFT, KC_LCTL, KC_ENT -#define NAV_L3 _______, _______, _______, _______, _______, _______ -#define NAV_L4 _______, _______, _______, CTL_TAB, ALT_TAB, _______ - -#define NAV_R1 _______, KC_HOME, KC_UP , KC_END , KC_INS, _______ -#define NAV_R2 _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_DEL, _______ -#define NAV_R3 _______, KC_PGUP, KC_PGDN, _______, _______, _______ -#define NAV_R4 _______, KC_APP, _______, _______, _______, _______ - -#define NAV_4_DOX CTL_TAB, ALT_TAB, _______, _______, KC_APP, _______ - -/* Numpad Layer */ -#define NUMPAD_L1 RGB_TOG, RGB_MOD,RGB_RMOD, _______, RGB_HUD, RGB_HUI -#define NUMPAD_L2 BL_TOGG, BL_STEP, BL_BRTG, _______, RGB_SAD, RGB_SAI -#define NUMPAD_L3 _______, _______, _______, _______, RGB_VAD, RGB_VAI -#define NUMPAD_L4 _______, _______, _______, _______, RGB_SPD, RGB_SPI - -#define NUMPAD_R1 DF(_QW),DF(_GAME), _______, _______, _______, QK_BOOT -#define NUMPAD_R2 _______, _______, _______, _______, _______, _______ -#define NUMPAD_R3 VRSN, _______, _______, _______, _______, _______ -#define NUMPAD_R4 _______, _______, _______, _______, _______, _______ - -#define NUMPAD_4_DOX _______, _______, _______, _______, _______, _______ - -/* Mouse Layer */ -#define MOUSE_L1 _______, _______, _______, _______, _______, _______ -#define MOUSE_L2 _______, _______, KC_ACL1, KC_ACL0, KC_BTN1, KC_BTN2 -#define MOUSE_L3 _______, _______, _______, _______, _______, _______ -#define MOUSE_L4 _______, _______, _______, _______, _______, KC_BTN1 - -#define MOUSE_R1 _______, KC_WH_U, KC_MS_U, KC_WH_D, _______, _______ -#define MOUSE_R2 _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______ -#define MOUSE_R3 _______, _______, _______, _______, _______, _______ -#define MOUSE_R4 KC_BTN2, _______, _______, _______, _______, _______ - -#define MOUSE_4_DOX _______, _______, _______, _______, _______, _______ - -#define BLANK_12 KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO - -#define QWERTY_1_12 QWERTY_L1, QWERTY_R1 -#define QWERTY_2_12 QWERTY_L2, QWERTY_R2 -#define QWERTY_3_12 QWERTY_L3, QWERTY_R3 -#define QWERTY_4_12 QWERTY_L4, QWERTY_R4 - -#define GAME_1_12 GAME_L1, GAME_R1 -#define GAME_2_12 GAME_L2, GAME_R2 -#define GAME_3_12 GAME_L3, GAME_R3 -#define GAME_4_12 GAME_L4, GAME_R4 - -#define LOWER_1_12 LOWER_L1, LOWER_R1 -#define LOWER_2_12 LOWER_L2, LOWER_R2 -#define LOWER_3_12 LOWER_L3, LOWER_R3 -#define LOWER_4_12 LOWER_L4, LOWER_R4 - -#define NAV_1_12 NAV_L1, NAV_R1 -#define NAV_2_12 NAV_L2, NAV_R2 -#define NAV_3_12 NAV_L3, NAV_R3 -#define NAV_4_12 NAV_L4, NAV_R4 - -#define NUMPAD_1_12 NUMPAD_L1, NUMPAD_R1 -#define NUMPAD_2_12 NUMPAD_L2, NUMPAD_R2 -#define NUMPAD_3_12 NUMPAD_L3, NUMPAD_R3 -#define NUMPAD_4_12 NUMPAD_L4, NUMPAD_R4 - -#define MOUSE_1_12 MOUSE_L1, MOUSE_R1 -#define MOUSE_2_12 MOUSE_L2, MOUSE_R2 -#define MOUSE_3_12 MOUSE_L3, MOUSE_R3 -#define MOUSE_4_12 MOUSE_L4, MOUSE_R4 - -#define QWERTY_4x12 QWERTY_1_12, QWERTY_2_12, QWERTY_3_12, QWERTY_4_12 -#define GAME_4x12 GAME_1_12, GAME_2_12, GAME_3_12, GAME_4_12 -#define LOWER_4x12 LOWER_1_12, LOWER_2_12, LOWER_3_12, LOWER_4_12 -#define NAV_4x12 NAV_1_12, NAV_2_12, NAV_3_12, NAV_4_12 -#define NUMPAD_4x12 NUMPAD_1_12, NUMPAD_2_12, NUMPAD_3_12, NUMPAD_4_12 -#define MOUSE_4x12 MOUSE_1_12, MOUSE_2_12, MOUSE_3_12, MOUSE_4_12 - -#endif diff --git a/users/jarred/readme.md b/users/jarred/readme.md deleted file mode 100644 index 9f19dad13f..0000000000 --- a/users/jarred/readme.md +++ /dev/null @@ -1,17 +0,0 @@ -# Jarred's user space - -Keymaps: - -- [Ortho 4x12](../../layouts/community/ortho_4x12/jarred/readme.md) - -- [Planck](../../keyboards/planck/keymaps/jarred/readme.md) -- [CRKBD](../../keyboards/crkbd/keymaps/jarred/readme.md) -- [Atreus 62](../../keyboards/ergotravel/keymaps/jarred/readme.md) -- [ErgoTravel](../../keyboards/ergotravel/keymaps/jarred/readme.md) -- [xd75](../../keyboards/xd75/keymaps/jarred/readme.md) - -- [satan](../../keyboards/satan/keymaps/jarred/readme.md) -- [dz60](../../keyboards/dz60/keymaps/jarred/readme.md) -- [org60](../../keyboards/org60/keymaps/jarred/readme.md) -- [Leaf60](../../keyboards/foxlab/leaf60/universal/keymaps/jarred/readme.md) -- [Tada68](../../keyboards/tada68/keymaps/jarred/readme.md) diff --git a/users/jarred/rules.mk b/users/jarred/rules.mk deleted file mode 100644 index 9a00cbf72b..0000000000 --- a/users/jarred/rules.mk +++ /dev/null @@ -1,16 +0,0 @@ -SRC += jarred.c - -ifneq (,$(findstring planck,$(KEYBOARD))) - # Enable backlight for rev4 planck only - ifneq (,$(findstring rev4,$(KEYBOARD))) - BACKLIGHT_ENABLE = yes - BACKLIGHT_BREATHING = yes - else - BACKLIGHT_ENABLE = no - BACKLIGHT_BREATHING = no - endif - - AUDIO_ENABLE = yes -endif - -MOUSEKEY_ENABLE = no diff --git a/users/jdelkins/.gitignore b/users/jdelkins/.gitignore deleted file mode 100644 index 03b2b46668..0000000000 --- a/users/jdelkins/.gitignore +++ /dev/null @@ -1 +0,0 @@ -secrets.h diff --git a/users/jdelkins/jdelkins.c b/users/jdelkins/jdelkins.c deleted file mode 100644 index 4f59e8901b..0000000000 --- a/users/jdelkins/jdelkins.c +++ /dev/null @@ -1,287 +0,0 @@ -/* - Copyright 2020 Joel Elkins - - 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 . -*/ - -#include "jdelkins.h" -#include "version.h" - -#ifdef DO_SECRETS -# include "secrets.h" -#else -# ifndef NO_SECRETS -# pragma message("Warning: secrets.h not found") -# endif -#endif - -user_config_t user_config; - -__attribute__ ((weak)) -bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void send_secret_string(uint8_t n) { -#ifdef DO_SECRETS - send_string(secret[n]); -#else - SEND_STRING(""); -#endif -} - -#ifdef TAP_DANCE_ENABLE - -// To activate SINGLE_HOLD, you will need to hold for 200ms first. -// This tap dance favors keys that are used frequently in typing like 'f' -int cur_dance(tap_dance_state_t *state) { - if (state->count == 1) { - // If count = 1, and it has been interrupted - it doesn't matter if it - // is pressed or not: Send SINGLE_TAP - if (state->interrupted) { - // if (!state->pressed) return SINGLE_TAP; - // need "permissive hold" here. - // else return SINsGLE_HOLD; - // If the interrupting key is released before the tap-dance key, - // then it is a single HOLD However, if the tap-dance key is - // released first, then it is a single TAP But how to get access to - // the state of the interrupting key???? - return SINGLE_TAP; - } else { - if (!state->pressed) - return SINGLE_TAP; - else - return SINGLE_HOLD; - } - } - // If count = 2, and it has been interrupted - assume that user is trying to - // type the letter associated with single tap. - else if (state->count == 2) { - if (state->interrupted) - return DOUBLE_SINGLE_TAP; - else if (state->pressed) - return DOUBLE_HOLD; - else - return DOUBLE_TAP; - } else if ((state->count == 3) && ((state->interrupted) || (!state->pressed))) - return TRIPLE_TAP; - else if (state->count == 3) - return TRIPLE_HOLD; - else - return 8; // magic number. At some point this method will expand to work for more presses -} - -// This works well if you want this key to work as a "fast modifier". It favors -// being held over being tapped. -int hold_cur_dance(tap_dance_state_t *state) { - if (state->count == 1) { - if (state->interrupted) { - if (!state->pressed) - return SINGLE_TAP; - else - return SINGLE_HOLD; - } else { - if (!state->pressed) - return SINGLE_TAP; - else - return SINGLE_HOLD; - } - } - // If count = 2, and it has been interrupted - assume that user is trying to - // type the letter associated with single tap. - else if (state->count == 2) { - if (state->pressed) - return DOUBLE_HOLD; - else - return DOUBLE_TAP; - } else if (state->count == 3) { - if (!state->pressed) - return TRIPLE_TAP; - else - return TRIPLE_HOLD; - } else - return 8; // magic number. At some point this method will expand to work for more presses -} - -#endif // TAP_DANCE_ENABLE - -__attribute__ ((weak)) -void keyboard_post_init_keymap(void) { -} - -void keyboard_post_init_user(void) { - user_config.raw = eeconfig_read_user(); - keyboard_post_init_keymap(); -} - -void eeconfig_init_user(void) { - user_config.raw = 0; - user_config.system_mac = false; - eeconfig_update_user(user_config.raw); -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - static uint32_t boot_timer; - - if (!process_record_keymap(keycode, record)) { - return false; - } - - switch (keycode) { - case FW_WRD: - do_mac_key(LCTL(KC_RIGHT), ROPT(KC_RIGHT), record); - break; - - case BK_WRD: - do_mac_key(LCTL(KC_LEFT), ROPT(KC_LEFT), record); - break; - - case KB_BOL: - do_mac_key(KC_HOME, RCMD(KC_LEFT), record); - break; - - case KB_EOL: - do_mac_key(KC_END, RCMD(KC_RIGHT), record); - break; - - case TG_SYS: - if (record->event.pressed) { - user_config.system_mac ^= 1; - eeconfig_update_user(user_config.raw); - } - break; - - case KB_COPY: - do_mac_key(LCTL(KC_INS), RCMD(KC_C), record); - break; - - case KB_PASTE: - do_mac_key(LSFT(KC_INS), RCMD(KC_V), record); - break; - - case MY_GUI: - do_mac_key(KC_LGUI, KC_LOPT, record); - break; - - case MY_ALT: - do_mac_key(KC_LALT, KC_LCMD, record); - break; - - case MY_RGUI: - do_mac_key(KC_RGUI, KC_ROPT, record); - break; - - case MY_RALT: - do_mac_key(KC_RALT, KC_RCMD, record); - break; - - case MY_CALC: - do_mac_key(KC_CALC, KC_F14, record); - break; - - case KB_MAKE: - if (!get_mods()) { - if (!record->event.pressed) -#ifdef NO_SECRETS - SEND_STRING("make NO_SECRETS=1 " QMK_KEYBOARD ":" QMK_KEYMAP SS_TAP(X_ENTER)); -#else - SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP SS_TAP(X_ENTER)); -#endif - return false; - } - break; - - case KB_VRSN: - if (!get_mods()) { - if (!record->event.pressed) { -#ifdef DO_SECRETS -# define SECRET_MSG " (with secrets)" -#else -# define SECRET_MSG -#endif - if (user_config.system_mac) { - SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION " (mac mode)" SECRET_MSG); - } else { - SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION " (non-mac mode)" SECRET_MSG); - } - } - return false; - } - break; - - case KB_BOOT: - if (!get_mods()) { - if (record->event.pressed) { - boot_timer = timer_read32(); - } else { - if (timer_elapsed32(boot_timer) >= 500) { - reset_keyboard(); - } - } - return false; - } - break; - - case KB_FLSH: - if (!get_mods()) { - if (!record->event.pressed) { -#ifdef NO_SECRETS - SEND_STRING("make NO_SECRETS=1 " QMK_KEYBOARD ":" QMK_KEYMAP ":flash\n"); -#else - SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP ":flash\n"); -#endif - reset_keyboard(); - } - return false; - } - break; - -#ifdef DO_SECRETS - case KC_SECRET_1 ... KC_SECRET_6: // Secrets! Externally defined strings, not stored in repo - if (!record->event.pressed) { - clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED); - send_secret_string(keycode - KC_SECRET_1); - } - return false; - break; -#endif - } - - return true; -} - -__attribute__ ((weak)) -void matrix_init_keymap(void) { -} - -void matrix_init_user(void) { - matrix_init_keymap(); -} - -__attribute__ ((weak)) -void matrix_scan_keymap(void) { -} - -void matrix_scan_user(void) { - matrix_scan_keymap(); -} - -__attribute__ ((weak)) -layer_state_t layer_state_set_keymap(layer_state_t state) { - return state; -} - -layer_state_t layer_state_set_user(layer_state_t state) { - return layer_state_set_keymap(state); -} diff --git a/users/jdelkins/jdelkins.h b/users/jdelkins/jdelkins.h deleted file mode 100644 index 7c9f2d021c..0000000000 --- a/users/jdelkins/jdelkins.h +++ /dev/null @@ -1,134 +0,0 @@ -/* - Copyright 2020 Joel Elkins - - 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 . -*/ - -#pragma once - -#include QMK_KEYBOARD_H - -// Secrets - -#if !defined(NO_SECRETS) && __has_include("secrets.h") -# define DO_SECRETS -#endif - -void send_secret_string(uint8_t n); - -// standard layers - -enum jdelkins_layers { - _QWERTY = 0, - _RPT, - _GAME, - _FUNC, - _KP, - _SECRETS, - _ADJUST, - _LAYER_MAX -}; - -// key definitions - -typedef union { - uint32_t raw; - struct { - bool system_mac :1; - }; -} user_config_t; - -extern user_config_t user_config; - -static inline void do_mac_key(uint16_t norm_key, uint16_t mac_key, keyrecord_t *record) { - uint16_t key = user_config.system_mac ? mac_key : norm_key; - if (record->event.pressed) - register_code16(key); - else - unregister_code16(key); -} - -enum jdelkins_keycodes { - KB_MAKE = SAFE_RANGE, - KB_FLSH, - KB_VRSN, - KB_BOOT, - FW_WRD, - BK_WRD, - KB_BOL, - KB_EOL, - TG_SYS, - KB_COPY, - KB_PASTE, - MY_GUI, - MY_ALT, - MY_RGUI, - MY_RALT, - MY_CALC, - -#ifdef DO_SECRETS - KC_SECRET_1, - KC_SECRET_2, - KC_SECRET_3, - KC_SECRET_4, - KC_SECRET_5, - KC_SECRET_6, -#endif - - USER_SAFE_RANGE, -}; - -#ifdef DO_SECRETS -# define KC_SEC1 KC_SECRET_1 -# define KC_SEC2 KC_SECRET_2 -# define KC_SEC3 KC_SECRET_3 -# define KC_SEC4 KC_SECRET_4 -# define KC_SEC5 KC_SECRET_5 -# define KC_SEC6 KC_SECRET_6 -#else -# define KC_SEC1 KC_NO -# define KC_SEC2 KC_NO -# define KC_SEC3 KC_NO -# define KC_SEC4 KC_NO -# define KC_SEC5 KC_NO -# define KC_SEC6 KC_NO -#endif - -#define MODS_SHIFT (get_mods() & MOD_MASK_SHIFT) -#define MODS_CTRL (get_mods() & MOD_MASK_CTRL) -#define MODS_ALT (get_mods() & MOD_MASK_ALT) -#define MODS_GUI (get_mods() & MOD_MASK_GUI) - -#define MY_CAPS LCTL_T(KC_CAPS) -#define MY_SPC LT(_FUNC, KC_SPC) - -#define NUMLOCK_ON host_keyboard_led_state().num_lock -#define CAPSLOCK_ON host_keyboard_led_state().caps_lock - -#ifdef TAP_DANCE_ENABLE - -enum { - SINGLE_TAP = 1, - SINGLE_HOLD = 2, - DOUBLE_TAP = 3, - DOUBLE_HOLD = 4, - DOUBLE_SINGLE_TAP = 5, //send two single taps - TRIPLE_TAP = 6, - TRIPLE_HOLD = 7 -}; - -int cur_dance(tap_dance_state_t *state); // prefer tap -int hold_cur_dance(tap_dance_state_t *state); // prefer hold - -#endif // TAP_DANCE_ENABLE diff --git a/users/jdelkins/rules.mk b/users/jdelkins/rules.mk deleted file mode 100644 index 075aab7d3b..0000000000 --- a/users/jdelkins/rules.mk +++ /dev/null @@ -1,15 +0,0 @@ -SRC += jdelkins.c - -ifneq ($(strip $(NO_SECRETS)),) - OPT_DEFS += -DNO_SECRETS -endif - -ifeq ($(shell test -f users/jdelkins/secrets.h.gpg && echo yes || echo no),yes) -users/jdelkins/jdelkins.c: users/jdelkins/secrets.h - touch $@ - -users/jdelkins/secrets.h: users/jdelkins/secrets.h.gpg - gpg -d $< >$@ -endif - -BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite diff --git a/users/jjerrell/.gitignore b/users/jjerrell/.gitignore deleted file mode 100644 index 1753bf931b..0000000000 --- a/users/jjerrell/.gitignore +++ /dev/null @@ -1 +0,0 @@ -secrets.* diff --git a/users/jjerrell/config.h b/users/jjerrell/config.h deleted file mode 100644 index bddafe1557..0000000000 --- a/users/jjerrell/config.h +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (C) 2021 Jerrell, Jacob <@jjerrell> -// -// This file is part of jjerrell. -// -// jjerrell 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 3 of the License, or -// (at your option) any later version. -// -// jjerrell 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 jjerrell. If not, see . - -#pragma once - -#define LEADER_TIMEOUT 250 -#define LEADER_PER_KEY_TIMING - -#if defined(TAP_CODE_DELAY) -# undef TAP_CODE_DELAY -#endif -#define TAP_CODE_DELAY 20 diff --git a/users/jjerrell/jjerrell.c b/users/jjerrell/jjerrell.c deleted file mode 100644 index e061977ab6..0000000000 --- a/users/jjerrell/jjerrell.c +++ /dev/null @@ -1,135 +0,0 @@ -/** - * Copyright (C) 2021 Jerrell, Jacob <@jjerrell> - * - * This file is part of qmk_firmware. - * - * qmk_firmware 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 3 of the License, or - * (at your option) any later version. - * - * qmk_firmware 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 qmk_firmware. If not, see . - */ - -#include "jjerrell.h" - -__attribute__((weak)) void matrix_scan_keymap(void) {} -__attribute__((weak)) void leader_scan_secrets(void) {} - -#ifdef LEADER_ENABLE -void leader_end_user(void) { - static uint8_t mods = 0; - mods = get_mods(); - clear_mods(); - - // Website Refresh / XCode "Run" - if (leader_sequence_one_key(KC_R)) { - SEND_STRING(SS_LGUI("r")); - } - - if (leader_sequence_two_keys(KC_B, KC_D)) { - send_string_with_delay_P(PSTR(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION " Built at: " QMK_BUILDDATE), TAP_CODE_DELAY); - } - - if (leader_sequence_two_keys(KC_L, KC_C)) { - send_string_with_delay("/** */", TAP_CODE_DELAY); - wait_ms(TAPPING_TERM); - tap_code(KC_LEFT); - tap_code(KC_LEFT); - tap_code(KC_LEFT); - if (!(mods & MOD_MASK_SHIFT)) { - tap_code(KC_ENT); - } - } - - set_mods(mods); - #ifndef NO_SECRETS - leader_scan_secrets(); - #endif // !NO_SECRETS -} -#endif - -static bool is_first_run = true; -void matrix_scan_user(void) { - if (is_first_run) { - is_first_run = false; - startup_user(); - } - - matrix_scan_keymap(); -} - -__attribute__((weak)) layer_state_t layer_state_set_keymap(layer_state_t state) { return state; } - -// on layer change, no matter where the change was initiated -// Then runs keymap's layer change check -layer_state_t layer_state_set_user(layer_state_t state) { - if (!is_keyboard_master()) { - return state; - } - - state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST); - state = layer_state_set_keymap(state); -#if defined(RGBLIGHT_ENABLE) - state = layer_state_set_rgb_light(state); -#endif // RGBLIGHT_ENABLE - return state; -} - -__attribute__((weak)) void dip_switch_update_keymap(uint8_t index, bool active) {} -void dip_switch_update_user(uint8_t index, bool active) { - dip_switch_update_keymap(index, active); -} - -__attribute__((weak)) bool music_mask_keymap(uint16_t keycode) { return true; } -bool music_mask_user(uint16_t keycode) { - switch (keycode){ - default: - return music_mask_keymap(keycode); - break; - } -} - -__attribute__((weak)) layer_state_t default_layer_state_set_keymap(layer_state_t state) { return state; } - -// Runs state check and changes underglow color and animation -layer_state_t default_layer_state_set_user(layer_state_t state) { - if (!is_keyboard_master()) { - return state; - } - return default_layer_state_set_keymap(state); -} - -#ifdef AUDIO_ENABLE -__attribute__((weak)) void startup_keymap(void) {} -void startup_user(void) -{ - wait_ms(TAP_CODE_DELAY); // gets rid of tick - startup_keymap(); -} - -__attribute__((weak)) bool shutdown_keymap(bool jump_to_bootloader) { - return true; -} -bool shutdown_user(bool jump_to_bootloader) { - if (!shutdown_keymap(jump_to_bootloader)) { - return false; - } - wait_ms(TAP_CODE_DELAY); - stop_all_notes(); - return true; -} - -__attribute__((weak)) void music_on_keymap(void) {} -void music_on_user(void) -{ - music_scale_user(); - music_on_keymap(); -} -#endif // AUDIO_ENABLE diff --git a/users/jjerrell/jjerrell.h b/users/jjerrell/jjerrell.h deleted file mode 100644 index a5488b28ab..0000000000 --- a/users/jjerrell/jjerrell.h +++ /dev/null @@ -1,53 +0,0 @@ -/** - * Copyright (C) 2021 Jerrell, Jacob <@jjerrell> - * - * This file is part of qmk_firmware. - * - * qmk_firmware 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 3 of the License, or - * (at your option) any later version. - * - * qmk_firmware 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 qmk_firmware. If not, see . - */ - -#pragma once -#include QMK_KEYBOARD_H - -/** QMK Includes **/ -#include "version.h" -#include "eeprom.h" -#include "muse.h" - -#include "process_records.h" -#include "wrappers.h" - -/************************* Userspace Layers ************************* - * Keymaps can define additional layers by making the first case - * equal to `LAYER_SAFE_RANGE` - ********************************************************************/ -enum userspace_layers { - _WORKMAN, - _QWERTY, - _LOWER, - _RAISE, - _ADJUST, - _SPECIAL, - _GAME, - LAYER_SAFE_RANGE, -}; - -void matrix_scan_keymap(void); -layer_state_t layer_state_set_keymap(layer_state_t state); -void dip_switch_update_keymap(uint8_t index, bool active); -bool music_mask_keymap(uint16_t keycode); -layer_state_t default_layer_state_set_keymap(layer_state_t state); -void startup_keymap(void); -bool shutdown_keymap(bool jump_to_bootloader); -void music_on_keymap(void); diff --git a/users/jjerrell/process_records.c b/users/jjerrell/process_records.c deleted file mode 100644 index abdcd0934c..0000000000 --- a/users/jjerrell/process_records.c +++ /dev/null @@ -1,139 +0,0 @@ -/** - * Copyright (C) 2021 Jerrell, Jacob <@jjerrell> - * - * This file is part of qmk_firmware. - * - * qmk_firmware 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 3 of the License, or - * (at your option) any later version. - * - * qmk_firmware 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 qmk_firmware. If not, see . - */ - -#include "jjerrell.h" - -float game_song[][2] = SONG(TO_BOLDLY_GO); -float work_song[][2] = SONG(MARIO_GAMEOVER); -float doom_song[][2] = SONG(E1M1_DOOM); - -__attribute__((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; } - -static uint16_t key_timer; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - if (process_record_keymap(keycode, record)) { - static uint8_t mods = 0; - // static uint8_t layer = 0; - mods = get_mods(); - switch (keycode) { - case KC_QWERTY: - if (record->event.pressed) { - set_single_persistent_default_layer(_QWERTY); - } - return false; - break; - case KC_WORKMAN: - if (record->event.pressed) { - set_single_persistent_default_layer(_WORKMAN); - } - return false; - break; - case KC_CCCV: - if (record->event.pressed) { - key_timer = timer_read(); - } else { - clear_mods(); - if (timer_elapsed(key_timer) > TAPPING_TERM) { // Hold, copy - tap_code16(G(KC_C)); - } else if (mods & MOD_MASK_SHIFT) { - // Tap w/ shift held, open [Paste App](https://pasteapp.io) (no affiliation) - // Shift + Command(GUI) + V - tap_code16(S(G(KC_V))); - } else { // Regular tap, do paste - tap_code16(G(KC_V)); - } - set_mods(mods); - } - return false; - break; - case KC_ARROW: - if (record->event.pressed) { - clear_mods(); - if (mods & MOD_MASK_SHIFT) { - SEND_STRING("=>"); - } else { - SEND_STRING("->"); - } - set_mods(mods); - } - return false; - break; - case KC_MAKE: - if (!record->event.pressed) { -#ifndef MAKE_BOOTLOADER - uint8_t temp_mod = mod_config(get_mods()); - uint8_t temp_osm = mod_config(get_oneshot_mods()); - clear_mods(); - clear_oneshot_mods(); -#endif - send_string_with_delay_P(PSTR("qmk"), TAP_CODE_DELAY); -#ifndef MAKE_BOOTLOADER - if ((temp_mod | temp_osm) & MOD_MASK_SHIFT) -#endif - { - send_string_with_delay_P(PSTR(" flash "), TAP_CODE_DELAY); -#ifndef MAKE_BOOTLOADER - } else { - send_string_with_delay_P(PSTR(" compile "), TAP_CODE_DELAY); -#endif - } - send_string_with_delay_P(PSTR("-kb " QMK_KEYBOARD " -km " QMK_KEYMAP), TAP_CODE_DELAY); - send_string_with_delay_P(PSTR(SS_TAP(X_ENTER)), TAP_CODE_DELAY); - } - return false; - break; - case KC_VRSN: - if (!record->event.pressed) { - send_string_with_delay_P(PSTR(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION " Built at: " QMK_BUILDDATE), TAP_CODE_DELAY); - } - return false; - break; - case KC_GAME: - if (record->event.pressed) { - key_timer = timer_read(); - } else { - if (IS_LAYER_OFF(_GAME)) { - if (timer_elapsed(key_timer) > TAPPING_TERM) { - layer_move(_GAME); -#ifdef AUDIO_ENABLE -PLAY_SONG(game_song); -#endif - } - break; - // todo: cycle game layers - // } else if (mods & MOD_MASK_SHIFT) { -// #ifdef AUDIO_ENABLE -// PLAY_SONG(doom_song); -// #endif -// break; - } else { - layer_move(_WORKMAN); -#ifdef AUDIO_ENABLE -PLAY_SONG(work_song); -#endif - break; - } - } - return false; - break; - } - } - return true; -} diff --git a/users/jjerrell/process_records.h b/users/jjerrell/process_records.h deleted file mode 100644 index de37421b10..0000000000 --- a/users/jjerrell/process_records.h +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright (C) 2021 Jerrell, Jacob <@jjerrell> -// -// This file is part of qmk_firmware. -// -// qmk_firmware 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 3 of the License, or -// (at your option) any later version. -// -// qmk_firmware 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 qmk_firmware. If not, see . - -#pragma once -#include "jjerrell.h" - -#if defined(KEYMAP_SAFE_RANGE) -# define PLACEHOLDER_SAFE_RANGE KEYMAP_SAFE_RANGE -#else -# define PLACEHOLDER_SAFE_RANGE SAFE_RANGE -#endif - -enum userspace_keycodes { - KC_ARROW = PLACEHOLDER_SAFE_RANGE, // `->` - KC_MAKE, // Runs the keyboard's make command - KC_QWERTY, // Default Layer -> QWERTY - KC_WORKMAN, // Default Layer -> Workman - KC_VRSN, // Print QMK Firmware and board info - RGB_IDL, // Toggle RGB Idle animations - RGB_TGL, // Toggle RGB Layer Indication - KC_CCCV, // One key copy/paste, - KC_GAME, // To game layer. If on game layer, cycle game layers - NEW_SAFE_RANGE // use NEW_SAFE_RANGE for keymap specific codes -}; - -bool process_record_keymap(uint16_t keycode, keyrecord_t *record); - diff --git a/users/jjerrell/readme.md b/users/jjerrell/readme.md deleted file mode 100644 index a382524f2e..0000000000 --- a/users/jjerrell/readme.md +++ /dev/null @@ -1,50 +0,0 @@ - - -# JJerrell's QMK Userspace - -This userspace showcases my personal journey with QMK keyboards and aims to simplify additional development, reduce code duplication, and maintain a consistent experience across my current keyboards. My original userspace has been archived because I wanted to take the time to grasp _how_ what I was doing worked -- rather than copy/pasta and blind luck. - -Some keyboard specific code is stored here because it's contextually relevant. It may be somewhat pedantic, but an effort has been made to wrap this code with preprocessor checks. i.e. `#if (defined(KEYBOARD_planck_ez))`. - -## Daily Drivers - -1. Ergodox EZ - My first mechanical love. Now the office keyboard (if we go back). After finding inferior travel cases for exorbitant amounts of money, I built a custom travel case out of a case designed for drones and maticulous work cutting guncase foam. Around $50 with plenty of foam left over for family LARPing weapons. I'll post a picture one of these days. It also has a spot for my wireless touchpad. -2. Planck EZ - The solution to not being able to sit at a desk 100% of the time and not being able to live without QMK for any amount of time. Karabiner-Elements disables the Macbook keyboard when this is plugged in and the planck sits ontop of it with a very short usb-c cable. Probably terrible for the built in keyboard but they screwed up this generation anyway. -3. Moonlander - Just when I thought it was over, the lovely people with ZSA did it again. This one stays at home on my desk. - -## Features - -- Keymap level customization - - User methods implemented here will give the keymaps a chance to override functionality by optionally implementing relevant _keymap methods -- Layer Macros - - WRAPPER defines in [wrapper.c] simplify consistent keymaps -- Leader key secrets - - [jjerrell.c] sets up the functionality for this feature and calls into the leader_scan_secrets method. - - TODO: add documentation for leader_scan_secrets implementation - -## Issues - -### Tap/hold keys and shifted keycodes - -An immediate part of my love for QMK was it's ability to differentiate between holds and presses to a level where you can apply modifiers when a normal alpha code is held. This feature was the single-most health related improvement to adopting QMK, in my opinion. - -Beloved as it may be it comes with some baggage; shifted keycodes will be applied as their unshifted counterparts. I've worked around this in the past but the solution this time is a close adoption of the symbol layer inspired by the Neo keyboard. - -There is also a problem with relying on SFT_T() for all of your shifting needs because if you attempt to swap which fingers are holding it and don't release the first before pressing the second, shift won't register anymore. This could probably be fixed but it discourages typing in all caps because it becomes too tedious. However, most layers do have a dedicated shift key to counteract this when necessary. diff --git a/users/jjerrell/rules.mk b/users/jjerrell/rules.mk deleted file mode 100644 index db359a5757..0000000000 --- a/users/jjerrell/rules.mk +++ /dev/null @@ -1,27 +0,0 @@ -SRC += jjerrell.c \ - process_records.c - -LEADER_ENABLE = yes -MOUSEKEY_ENABLE = yes -EXTRAKEY_ENABLE = yes - -ifneq ($(PLATFORM),CHIBIOS) - LTO_ENABLE = yes -endif -SPACE_CADET_ENABLE = no -GRAVE_ESC_ENABLE = no - -ifneq ($(strip $(NO_SECRETS)), yes) - ifneq ("$(wildcard $(USER_PATH)/secrets.c)","") - SRC += secrets.c - endif - ifeq ($(strip $(NO_SECRETS)), lite) - OPT_DEFS += -DNO_SECRETS - endif -endif - -# TODO: RGB is next -# RGB_MATRIX_ENABLE ?= no -# ifneq ($(strip $(RGB_MATRIX_ENABLE)), no) -# SRC += rgb_matrix_stuff.c -# endif diff --git a/users/jjerrell/wrappers.h b/users/jjerrell/wrappers.h deleted file mode 100644 index f98e9ef121..0000000000 --- a/users/jjerrell/wrappers.h +++ /dev/null @@ -1,329 +0,0 @@ -// Copyright (C) 2021 Jerrell, Jacob <@jjerrell> -// -// This file is part of qmk_firmware. -// -// qmk_firmware 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 3 of the License, or -// (at your option) any later version. -// -// qmk_firmware 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 qmk_firmware. If not, see . - -#pragma once -#include "jjerrell.h" - -#define QWERTY KC_QWERTY -#define WORKMN KC_WORKMAN - -#define KC_CUT LGUI(KC_X) - -// Non-sane shortcuts for software macros or keybindings -#define MACRO_1 ALL_T(KC_F12) -#define MACRO_2 ALL_T(KC_F13) -#define MACRO_3 ALL_T(KC_F14) -#define MACRO_4 ALL_T(KC_F15) - -#define MACRO_5 ALL_T(KC_F16) -#define MACRO_6 ALL_T(KC_F17) -#define MACRO_7 ALL_T(KC_F18) -#define MACRO_8 ALL_T(KC_F19) - -// clang-format off -#if (!defined(LAYOUT) && defined(KEYMAP)) -# define LAYOUT KEYMAP -#endif - -#if (defined(KEYBOARD_planck_ez)) -/** Planck EZ Empty - * ,-----------------------------------------------------------------------------------. - * | | | | | | | | | | | | | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | | | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | | | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | | - * `-----------------------------------------------------------------------------------' - */ - -# define ____________________________________________________________PLANCK_VERBOSE_BOTTOM_ROW_____________________________________________________________ \ - QK_LEAD, KC_LSFT, KC_CCCV, KC_HYPR, LT(_LOWER, KC_BSPC), SFT_T(KC_SPC), XXXXXXX, LT(_RAISE, KC_ENT), KC_MEH, RGB_TOG, RGB_IDL, LED_LEVEL - -# define _________________________________________PLANCK_LOWER_BOTTOM_ROW_________________________________________ \ - QK_LEAD, KC_LSFT, KC_CCCV, KC_HYPR, KC_BSPC, KC_SPC, XXXXXXX, KC_ENT, KC_0, KC_DOT, KC_COMM, LED_LEVEL -// TODO: It would be nice to find a way to apply the bottom row with optional left/right varargs. -// I'm completely unsure if this language can support something like that though. - -/** - * Basic Planck EZ Wrapper to expand "block" defines before sending - * to LAYOUT_ortho_4x12 - */ -# define WRAPPER_ortho_4x12(...) LAYOUT_ortho_4x12(__VA_ARGS__) - -# define WRAPPER_planck_common( \ - K01, K02, K03, K04, K05, K08, K09, K0A, K0B, K0C, \ - K11, K12, K13, K14, K15, K18, K19, K1A, K1B, K1C, \ - K21, K22, K23, K24, K25, K28, K29, K2A, K2B, K2C \ - ) WRAPPER_ortho_4x12( \ - K01, K02, K03, K04, K05 , XXXXXXX , XXXXXXX, K08, K09, K0A, K0B, K0C, \ - K11, K12, K13, K14, K15 , XXXXXXX , XXXXXXX, K18, K19, K1A, K1B, K1C, \ - K21, K22, K23, K24, K25 , XXXXXXX , XXXXXXX, K28, K29, K2A, K2B, K2C, \ - ____________________________________________________________PLANCK_VERBOSE_BOTTOM_ROW_____________________________________________________________ ) - -/** - * Shifted Key conflicts: - * K12, K13, K14, K19, K1A, K1B, K21, K2C - */ -# define WRAPPER_planck_base( \ - K01, K02, K03, K04, K05, K08, K09, K0A, K0B, K0C, \ - K11, K12, K13, K14, K15, K18, K19, K1A, K1B, K1C, \ - K21, K22, K23, K24, K25, K28, K29, K2A, K2B, K2C \ - ) WRAPPER_ortho_4x12( \ - K01 , K02 , K03 , K04 , K05 , KC_GAME , KC_GAME, K08, K09 , K0A , K0B , K0C, \ - K11 , SFT_T(K12), GUI_T(K13), ALT_T(K14), K15 , XXXXXXX , XXXXXXX, K18, ALT_T(K19), GUI_T(K1A), SFT_T(K1B), K1C, \ - CTL_T(K21), K22 , K23 , K24 , K25 , XXXXXXX , XXXXXXX, K28, K29 , K2A , K2B , CTL_T(K2C), \ - ____________________________________________________________PLANCK_VERBOSE_BOTTOM_ROW_____________________________________________________________ ) - -# define WRAPPER_planck_mods( \ - K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, \ - K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, \ - K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \ - K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C \ - ) WRAPPER_ortho_4x12( \ - K01 , K02 , K03 , K04 , K05 , K06 , K07, K08, K09 , K0A , K0B , K0C, \ - K11 , SFT_T(K12), GUI_T(K13), ALT_T(K14), K15 , K16 , K17, K18, ALT_T(K19), GUI_T(K1A), SFT_T(K1B), K1C, \ - CTL_T(K21), K22 , K23 , K24 , K25 , K26 , K27, K28, K29 , K2A , K2B , CTL_T(K2C), \ - K31, K32 , K33 , K34 , LT(_LOWER, K35), SFT_T(K36), XXXXXXX, LT(_RAISE, K38), K39 , K3A , K3B, K3C ) - - - -// These macros are used when defining layouts in keymap.c -# define LAYOUT_planck_base(...) WRAPPER_planck_base(__VA_ARGS__) -# define LAYOUT_planck_common(...) WRAPPER_planck_common(__VA_ARGS__) -# define LAYOUT_planck_mods(...) WRAPPER_planck_mods(__VA_ARGS__) - -#elif defined(KEYBOARD_moonlander) -/** Moonlander Empty - * ( \ - k00, k01, k02, k03, k04, k05, k06, k60, k61, k62, k63, k64, k65, k66, \ - k10, k11, k12, k13, k14, k15, k16, k70, k71, k72, k73, k74, k75, k76, \ - k20, k21, k22, k23, k24, k25, k26, k80, k81, k82, k83, k84, k85, k86, \ - k30, k31, k32, k33, k34, k35, k91, k92, k93, k94, k95, k96, \ - k40, k41, k42, k43, k44, k53, kb3, ka2, ka3, ka4, ka5, ka6, \ - k50, k51, k52, kb4, kb5, kb6 \ - ) \ - */ -# define WRAPPER_moonlander(...) LAYOUT_moonlander(__VA_ARGS__) -# define WRAPPER_moonlander_common( \ - k11, k12, k13, k14, k15, k71, k72, k73, k74, k75, \ - k21, k22, k23, k24, k25, k81, k82, k83, k84, k85, \ - k31, k32, k33, k34, k35, k91, k92, k93, k94, k95, \ - k41, k42, k43, k44, ka2, ka3, ka4, ka5 \ - ) WRAPPER_moonlander( \ - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ - XXXXXXX, k11, k12, k13, k14, k15, XXXXXXX, XXXXXXX, k71, k72, k73, k74, k75, XXXXXXX, \ - XXXXXXX, k21, k22, k23, k24, k25, XXXXXXX, XXXXXXX, k81, k82, k83, k84, k85, XXXXXXX, \ - KC_LSFT, k31, k32, k33, k34, k35, k91, k92, k93, k94, k95, KC_RSFT, \ - MO(_SPECIAL), k41, k42, k43, k44, TO(_GAME), XXXXXXX, ka2, ka3, ka4, ka5, MO(_SPECIAL), \ - LT(_LOWER, KC_SPC),HYPR_T(KC_BSPC),QK_LEAD, KC_CCCV,SFT_T(KC_TAB),LT(_RAISE, KC_ENT) ) - -# define WRAPPER_moonlander_mods( \ - k11, k12, k13, k14, k15, k71, k72, k73, k74, k75, \ - k21, k22, k23, k24, k25, k81, k82, k83, k84, k85, \ - k31, k32, k33, k34, k35, k91, k92, k93, k94, k95, \ - k41, k42, k43, k44, ka2, ka3, ka4, ka5 \ - ) WRAPPER_moonlander_common( \ - k11 , k12 , k13 , k14 , k15, k71, k72, k73, k74, k75, \ - k21 , SFT_T(k22), GUI_T(k23), ALT_T(k24), k25, k81, ALT_T(k82), GUI_T(k83), SFT_T(k84), k85, \ - CTL_T(k31), k32 , k33 , k34 , k35, k91, k92, k93, k94, CTL_T(k95), \ - k41 , k42 , k43 , k44 , ka2, ka3, ka4, ka5 \ - ) -# define WRAPPER_moonlander_gamepad( \ - k00, k01, k02, k03, k04, k05, k06, \ - k10, k11, k12, k13, k14, k15, k16, \ - k20, k21, k22, k23, k24, k25, k26, \ - k30, k31, k32, k33, k34, k35, \ - k40, k41, k42, k43, k44, k53, \ - k50, k51, k52 \ - ) WRAPPER_moonlander( \ - k00, k01, k02, k03, k04, k05, k06, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ - k10, k11, k12, k13, k14, k15, k16, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ - k20, k21, k22, k23, k24, k25, k26, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ - k30, k31, k32, k33, k34, k35, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ - k40, k41, k42, k43, k44, k53, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ - k50, k51, k52, XXXXXXX, XXXXXXX, TO(_WORKMAN) \ - ) - -# define LAYOUT_moonlander_common(...) WRAPPER_moonlander_common(__VA_ARGS__) -# define LAYOUT_moonlander_mods(...) WRAPPER_moonlander_mods(__VA_ARGS__) -# define LAYOUT_moonlander_gamepad(...) WRAPPER_moonlander_gamepad(__VA_ARGS__) -#elif defined(KEYBOARD_ergodox_ez) -/** Ergodox EZ Empty - .---------------------------------------------. .---------------------------------------------. - | | | | | | | | ! | | | | | | | - !-------+-----+-----+-----+-----+-------------! !-------+-----+-----+-----+-----+-----+-------! - | | | | | | | | ! | | | | | | | - !-------+-----+-----+-----x-----x-----! ! ! !-----x-----x-----+-----+-----+-------! - | | | | | | |-------! !-------! | | | | | | - !-------+-----+-----+-----x-----x-----! ! ! !-----x-----x-----+-----+-----+-------! - | | | | | | | | ! | | | | | | | - '-------+-----+-----+-----+-----+-------------' '-------------+-----+-----+-----+-----+-------' - | | | | | | ! | | | | | - '------------------------------' '------------------------------' - .---------------. .---------------. - | | | ! | | - .-------+-------+-------! !-------+-------+-------. - ! ! | | ! | ! ! - ! ! !-------! !-------! ! ! - | | | | ! | | | - '-----------------------' '-----------------------' - - ---------- LEFT HAND ----------- ---------- RIGHT HAND ---------- - ( \ - L00,L01,L02,L03,L04,L05,L06, R00,R01,R02,R03,R04,R05,R06, \ - L10,L11,L12,L13,L14,L15,L16, R10,R11,R12,R13,R14,R15,R16, \ - L20,L21,L22,L23,L24,L25, R21,R22,R23,R24,R25,R26, \ - L30,L31,L32,L33,L34,L35,L36, R30,R31,R32,R33,R34,R35,R36, \ - L40,L41,L42,L43,L44, R42,R43,R44,R45,R46, \ - L55,L56, R50,R51, \ - L54, R52, \ - L53,L52,L51, R55,R54,R53 \ - ) -*/ -# define WRAPPER_ergodox_ez(...) LAYOUT_ergodox_pretty(__VA_ARGS__) - -/** Common Wrapper - .---------------------------------------------. .---------------------------------------------. - | X | X | X | X | X | X | X | ! X | X | X | X | X | X | X | - !-------+-----+-----+-----+-----+-------------! !-------+-----+-----+-----+-----+-----+-------! - | X | | | | | | X | ! X | | | | | | X | - !-------+-----+-----+-----x-----x-----! ! ! !-----x-----x-----+-----+-----+-------! - | X | | | | | |-------! !-------! | | | | | X | - !-------+-----+-----+-----x-----x-----! X ! ! X !-----x-----x-----+-----+-----+-------! - | X | | | | | | | ! | | | | | | X | - '-------+-----+-----+-----+-----+-------------' '-------------+-----+-----+-----+-----+-------' - | SPCL | | | | | ! | | | | SPCL | - '------------------------------' '------------------------------' - .---------------. .---------------. - | X | X | ! X | X | - .-------+-------+-------! !-------+-------+-------. - ! Space ! BSpace| X | ! X | Tab ! Enter ! - ! / ! / !-------! !-------! / ! / ! - | LOWER | Hyper | LEAD | ! CCCV | Meh | RAISE | - '-----------------------' '-----------------------' -*/ -# define WRAPPER_ergodox_common( \ - L11,L12,L13,L14,L15, R11,R12,R13,R14,R15, \ - L21,L22,L23,L24,L25, R21,R22,R23,R24,R25, \ - L31,L32,L33,L34,L35, R31,R32,R33,R34,R35, \ - L41,L42,L43,L44, R42,R43,R44,R45 \ - ) WRAPPER_ergodox_ez( \ - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ - XXXXXXX, L11, L12, L13, L14, L15, XXXXXXX, XXXXXXX, R11, R12, R13, R14, R15, XXXXXXX, \ - XXXXXXX, L21, L22, L23, L24, L25, R21, R22, R23, R24, R25, XXXXXXX, \ - KC_LSFT, L31, L32, L33, L34, L35, XXXXXXX, XXXXXXX, R31, R32, R33, R34, R35, KC_RSFT, \ - MO(_SPECIAL), L41, L42, L43, L44, R42, R43, R44, R45, MO(_SPECIAL), \ - \ - XXXXXXX,XXXXXXX, XXXXXXX,XXXXXXX, \ - XXXXXXX, XXXXXXX, \ - LT(_LOWER, KC_SPC),HYPR_T(KC_BSPC),QK_LEAD, KC_CCCV,SFT_T(KC_TAB),LT(_RAISE, KC_ENT) ) - -/** Common Wrapper with Mod Tap/Hold overlay - .---------------------------------------------. .---------------------------------------------. - | X | X | X | X | X | X | X | ! X | X | X | X | X | X | X | - !-------+-----+-----+-----+-----+-------------! !-------+-----+-----+-----+-----+-----+-------! - | X | | | | | | X | ! X | | | | | | X | - !-------+-----+-----+-----x-----x-----! ! ! !-----x-----x-----+-----+-----+-------! - | X | |Shift| Cmd | Alt | |-------! !-------! | Alt | Cmd |Shift| | X | - !-------+-----+-----+-----x-----x-----! X ! ! X !-----x-----x-----+-----+-----+-------! - | Sft | Ctl | | | | | | ! | | | | | Ctl | Sft | - '-------+-----+-----+-----+-----+-------------' '-------------+-----+-----+-----+-----+-------' - | SPCL | | | | | ! | | | | SPCL | - '------------------------------' '------------------------------' - .---------------. .---------------. - | X | X | ! X | X | - .-------+-------+-------! !-------+-------+-------. - ! Space ! BSpace| X | ! X | Tab ! Enter ! - ! / ! / !-------! !-------! / ! / ! - | LOWER | Hyper | LEAD | ! CCCV | Meh | RAISE | - '-----------------------' '-----------------------' -*/ -# define WRAPPER_ergodox_mods( \ - L11,L12,L13,L14,L15, R11,R12,R13,R14,R15, \ - L21,L22,L23,L24,L25, R21,R22,R23,R24,R25, \ - L31,L32,L33,L34,L35, R31,R32,R33,R34,R35, \ - L41,L42,L43,L44, R42,R43,R44,R45 \ - ) WRAPPER_ergodox_common( \ - L11 , L12 , L13 , L14 , L15, R11, R12 , R13 , R14 , R15, \ - L21 , SFT_T(L22), GUI_T(L23), ALT_T(L24), L25, R21, ALT_T(R22), GUI_T(R23), SFT_T(R24), R25, \ - CTL_T(L31), L32 , L33 , L34 , L35, R31, R32 , R33 , R34 , CTL_T(R35), \ - L41 , L42 , L43 , L44 , R42 , R43 , R44 , R45 ) - -// These macros are used when defining layouts in keymap.c -# define LAYOUT_ergodox_common(...) WRAPPER_ergodox_common(__VA_ARGS__) -# define LAYOUT_ergodox_mods(...) WRAPPER_ergodox_mods(__VA_ARGS__) -#endif // END Keyboard specific wrapper defines -/** - * Alpha/Num key wrappers for portability - */ - -// Workman -#define __________________WORKMN_L1__________________ KC_Q, KC_D, KC_R, KC_W, KC_B -#define __________________WORKMN_L2__________________ KC_A, KC_S, KC_H, KC_T, KC_G -#define __________________WORKMN_L3__________________ KC_Z, KC_X, KC_M, KC_C, KC_V - -#define __________________WORKMN_R1__________________ KC_J, KC_F, KC_U, KC_P, KC_SCLN -#define __________________WORKMN_R2__________________ KC_Y, KC_N, KC_E, KC_O, KC_I -#define __________________WORKMN_R3__________________ KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH - -// QWERTY -#define __________________QWERTY_L1__________________ KC_Q, KC_W, KC_E, KC_R, KC_T -#define __________________QWERTY_L2__________________ KC_A, KC_S, KC_D, KC_F, KC_G -#define __________________QWERTY_L3__________________ KC_Z, KC_X, KC_C, KC_V, KC_B - -#define __________________QWERTY_R1__________________ KC_Y, KC_U, KC_I, KC_O, KC_P -#define __________________QWERTY_R2__________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN -#define __________________QWERTY_R3__________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH - -#define ________________QWERTY_R1_LHS________________ KC_P, KC_O, KC_I, KC_U, KC_Y -#define ________________QWERTY_R2_LHS________________ KC_SCLN, KC_L, KC_K, KC_J, KC_H -#define ________________QWERTY_R3_LHS________________ KC_SLSH, KC_DOT, KC_COMM, KC_M, KC_N - -// Nums -#define ___________________NUMS_L____________________ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6 -#define ___________________NUMS_R____________________ KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL - -// Lower -#define __________________LOWER_L1___________________ KC_PGUP, KC_TAB, KC_UP, KC_ENT, KC_PGDN -#define __________________LOWER_L2___________________ KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END -#define __________________LOWER_L3___________________ KC_ESC, KC_BSPC, KC_CUT, KC_DEL, KC_CCCV - -#define __________________LOWER_R1___________________ XXXXXXX, KC_7, KC_8, KC_9, KC_ASTR -#define __________________LOWER_R2___________________ XXXXXXX, KC_4, KC_5, KC_6, KC_SLSH -#define __________________LOWER_R3___________________ XXXXXXX, KC_1, KC_2, KC_3, KC_MINS -// Relevant keys: -> KC_0, KC_DOT, KC_COMM, KC_PLUS <- these keys break our lovely wrapper pattern - -// Raise -#define __________________RAISE_L1___________________ KC_PIPE, KC_UNDS, KC_LBRC, KC_RBRC, KC_AMPR -#define __________________RAISE_L2___________________ KC_BSLS, KC_SLSH, KC_LCBR, KC_RCBR, KC_ASTR -#define __________________RAISE_L3___________________ KC_HASH, KC_DLR , KC_PERC, KC_TILD, KC_GRV - -#define __________________RAISE_R1___________________ KC_EXLM, KC_LABK, KC_RABK, KC_MINS, KC_SCLN -#define __________________RAISE_R2___________________ KC_QUES, KC_LPRN, KC_RPRN, KC_EQL, KC_COLN -#define __________________RAISE_R3___________________ KC_AT, KC_QUOT, KC_DQUO, KC_PLUS, KC_CIRC - -// Adjust -#define __________________ADJUST_L1__________________ KC_MAKE, DB_TOGG, QK_BOOT, XXXXXXX, XXXXXXX -#define __________________ADJUST_L2__________________ KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY, KC_MNXT -#define __________________ADJUST_L3__________________ KC_VRSN, AU_ON, AU_OFF, CG_SWAP, CG_NORM - -#define __________________ADJUST_R1__________________ MU_NEXT, MU_ON, MU_OFF, MI_ON, MI_OFF -#define __________________ADJUST_R2__________________ AU_NEXT, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD -#define __________________ADJUST_R3__________________ AU_PREV, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD -// clang-format on diff --git a/users/jonavin/config.h b/users/jonavin/config.h deleted file mode 100644 index 8c5451075c..0000000000 --- a/users/jonavin/config.h +++ /dev/null @@ -1,34 +0,0 @@ -/* Copyright 2021 Jonavin Eng - * - * 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 . - */ - -#pragma once - -#define TAPPING_TOGGLE 2 // TT () set to two taps - -/* Handle GRAVESC combo keys */ -#define GRAVE_ESC_ALT_OVERRIDE // Always send Escape if Alt is pressed -#define GRAVE_ESC_CTRL_OVERRIDE // Always send Escape if Control is pressed - -#define TAPPING_TERM 180 -#define TAPPING_TERM_PER_KEY - -#ifdef RGB_MATRIX_ENABLE - #ifdef RGB_MATRIX_DEFAULT_MODE - #undef RGB_MATRIX_DEFAULT_MODE - #endif - #define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_COLOR - #define RGB_DISABLE_WHEN_USB_SUSPENDED -#endif diff --git a/users/jonavin/jonavin.c b/users/jonavin/jonavin.c deleted file mode 100644 index c936421040..0000000000 --- a/users/jonavin/jonavin.c +++ /dev/null @@ -1,233 +0,0 @@ - -/* Copyright 2021 Jonavin Eng @Jonavin - -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 . -*/ - - -#include QMK_KEYBOARD_H -#include "jonavin.h" - - -#ifdef TD_LSFT_CAPSLOCK_ENABLE - // Tap once for shift, twice for Caps Lock but only if Win Key in not disabled - void dance_LSFT_finished(tap_dance_state_t *state, void *user_data) { - if (state->count == 1 || keymap_config.no_gui) { - register_code16(KC_LSFT); - } else { - register_code(KC_CAPS); - } - } - - void dance_LSFT_reset(tap_dance_state_t *state, void *user_data) { - if (state->count == 1 || keymap_config.no_gui) { - unregister_code16(KC_LSFT); - } else { - unregister_code(KC_CAPS); - } - } - - tap_dance_action_t tap_dance_actions[] = { - // Tap once for shift, twice for Caps Lock - [TD_LSFT_CAPSLOCK] = ACTION_TAP_DANCE_DOUBLE(KC_LSFT, KC_CAPS), - [TD_LSFT_CAPS_WIN] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_LSFT_finished, dance_LSFT_reset), - }; -#endif // TD_LSFT_CAPSLOCK_ENABLE - -// RGB NIGHT MODE -#ifdef RGB_MATRIX_ENABLE - static bool rgb_nightmode = false; - - // Turn on/off NUM LOCK if current state is different - void activate_rgb_nightmode (bool turn_on) { - if (rgb_nightmode != turn_on) { - rgb_nightmode = !rgb_nightmode; - } - } - - bool get_rgb_nightmode(void) { - return rgb_nightmode; - } -#endif // RGB_MATRIX_ENABLE - -// TIMEOUTS -#ifdef IDLE_TIMEOUT_ENABLE - static uint16_t timeout_timer = 0; - static uint16_t timeout_counter = 0; //in minute intervals - static uint16_t timeout_threshold = TIMEOUT_THRESHOLD_DEFAULT; - - uint16_t get_timeout_threshold(void) { - return timeout_threshold; - } - - void timeout_reset_timer(void) { - timeout_timer = timer_read(); - timeout_counter = 0; - }; - - void timeout_update_threshold(bool increase) { - if (increase && timeout_threshold < TIMEOUT_THRESHOLD_MAX) timeout_threshold++; - if (!increase && timeout_threshold > 0) timeout_threshold--; - }; - - void timeout_tick_timer(void) { - if (timeout_threshold > 0) { - if (timer_elapsed(timeout_timer) >= 60000) { // 1 minute tick - timeout_counter++; - timeout_timer = timer_read(); - } - #ifdef RGB_MATRIX_ENABLE - if (timeout_threshold > 0 && timeout_counter >= timeout_threshold) { - rgb_matrix_disable_noeeprom(); - } - #endif - } // timeout_threshold = 0 will disable timeout - } - -#endif // IDLE_TIMEOUT_ENABLE - -#if defined(ALTTAB_SCROLL_ENABLE) || defined(IDLE_TIMEOUT_ENABLE) // timer features - __attribute__((weak)) void matrix_scan_keymap(void) {} - - void matrix_scan_user(void) { - #ifdef ALTTAB_SCROLL_ENABLE - encoder_tick_alttabscroll(); - #endif - #ifdef IDLE_TIMEOUT_ENABLE - timeout_tick_timer(); - #endif - matrix_scan_keymap(); - } -#endif // ALTTAB_SCROLL_ENABLE or IDLE_TIMEOUT_ENABLE - -// PROCESS KEY CODES -__attribute__ ((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; } - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - if (!process_record_keymap(keycode, record)) { return false; } - switch (keycode) { - case KC_00: - if (record->event.pressed) { - // when keycode KC_00 is pressed - SEND_STRING("00"); - } else unregister_code16(keycode); - break; - case KC_WINLCK: - if (record->event.pressed) { - keymap_config.no_gui = !keymap_config.no_gui; //toggle status - } else unregister_code16(keycode); - break; - -#ifdef IDLE_TIMEOUT_ENABLE - case RGB_TOI: - if(record->event.pressed) { - timeout_update_threshold(true); - } else unregister_code16(keycode); - break; - case RGB_TOD: - if(record->event.pressed) { - timeout_update_threshold(false); //decrease timeout - } else unregister_code16(keycode); - break; -#endif // IDLE_TIMEOUT_ENABLE -#ifdef RGB_MATRIX_ENABLE - case RGB_NITE: - if(record->event.pressed) { - rgb_nightmode = !rgb_nightmode; - } else unregister_code16(keycode); - break; -#endif // RGB_MATRIX_ENABLE - -#ifdef EMOTICON_ENABLE - case EMO_SHRUG: - if (record->event.pressed) SEND_STRING("`\\_(\"/)_/`"); - else unregister_code16(keycode); - break; - case EMO_CONFUSE: - if (record->event.pressed) SEND_STRING("(*_*)"); - else unregister_code16(keycode); - break; - case EMO_TEARS: - if (record->event.pressed) SEND_STRING("(T_T)"); - else unregister_code16(keycode); - break; - case EMO_NERVOUS: - if (record->event.pressed) SEND_STRING("(~_~;)"); - else unregister_code16(keycode); - break; - case EMO_JOY: - if (record->event.pressed) SEND_STRING("(^o^)"); - else unregister_code16(keycode); - break; - case EMO_SAD: - if (record->event.pressed) SEND_STRING(":'-("); - else unregister_code16(keycode); - break; - #endif // EMOTICON_ENABLE - - #ifdef ALTTAB_SCROLL_ENABLE - case KC_TSTOG: - if (record->event.pressed) encoder_toggle_alttabscroll(); - else unregister_code16(keycode); - break; - #endif // ALTTAB_SCROLL_ENABLE - - default: - if (record->event.pressed) { - #ifdef RGB_MATRIX_ENABLE - rgb_matrix_enable(); - #endif - #ifdef IDLE_TIMEOUT_ENABLE - timeout_reset_timer(); //reset activity timer - #endif - } - break; - } - return true; -}; - - -uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case KC_SFTUP: - return 300; - case KC_RAISESPC: - case KC_LOWERSPC: - return 450; - default: - return TAPPING_TERM; - } -} - -// Turn on/off NUM LOCK if current state is different -void activate_numlock(bool turn_on) { - if (host_keyboard_led_state().num_lock != turn_on) { - tap_code(KC_NUM_LOCK); - } -} - - -// INITIAL STARTUP - -__attribute__ ((weak)) void keyboard_post_init_keymap(void) {} - -void keyboard_post_init_user(void) { - keyboard_post_init_keymap(); - #ifdef STARTUP_NUMLOCK_ON - activate_numlock(true); // turn on Num lock by default so that the numpad layer always has predictable results - #endif // STARTUP_NUMLOC_ON - #ifdef IDLE_TIMEOUT_ENABLE - timeout_timer = timer_read(); // set inital time for ide timeout - #endif -} diff --git a/users/jonavin/jonavin.h b/users/jonavin/jonavin.h deleted file mode 100644 index 97f72c1248..0000000000 --- a/users/jonavin/jonavin.h +++ /dev/null @@ -1,130 +0,0 @@ - -/* Copyright 2021 Jonavin Eng @Jonavin - -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 . -*/ - -#pragma once - -// DEFINE MACROS -#ifndef ARRAYSIZE -#define ARRAYSIZE(arr) sizeof(arr)/sizeof(arr[0]) -#endif // !ARRAYSIZE - -// LAYERS -enum custom_user_layers { - _BASE, - _FN1, - _LOWER, - _RAISE, -}; - -// KEYCODES -enum custom_user_keycodes { - KC_00 = SAFE_RANGE, - ENCFUNC, - KC_WINLCK, //Toggles Win key on and off - RGB_TOI, // Timeout idle time up - RGB_TOD, // Timeout idle time down - RGB_NITE, // Turns off all rgb but allow rgb indicators to work - - EMO_SHRUG, // `\_("/)_/` - EMO_CONFUSE, // (*_*) - EMO_SAD, // :'-( - EMO_NERVOUS, // (~_~;) - EMO_JOY, // (^o^) - EMO_TEARS, // (T_T) - - KC_TSTOG, // Tab Scroll Toggle - - NEW_SAFE_RANGE // new safe range for keymap level custom keycodes -}; - -#define KC_CAD LALT(LCTL(KC_DEL)) -#define KC_AF4 LALT(KC_F4) -#define KC_TASK LCTL(LSFT(KC_ESC)) -#define CT_PGUP RCTL(KC_PGUP) -#define CT_PGDN RCTL(KC_PGDN) -#define CT_HOME RCTL(KC_HOME) -#define CT_END RCTL(KC_END) -#define KC_SFTUP RSFT_T(KC_UP) // Shift when held, Up arrow when tapped -#define KC_RAISESPC LT(_RAISE,KC_SPC) // _RAISE layer mod when held, space when tapped -#define KC_LOWERSPC LT(_LOWER,KC_SPC) // _LOWER layer mod when held, space when tapped - - -#ifdef TD_LSFT_CAPSLOCK_ENABLE - // Tap Dance Definitions - enum custom_tapdance { - TD_LSFT_CAPSLOCK, - TD_LSFT_CAPS_WIN - }; - - #define KC_LSFTCAPS TD(TD_LSFT_CAPSLOCK) - #define KC_LSFTCAPSWIN TD(TD_LSFT_CAPS_WIN) -#else // regular Shift - #define KC_LSFTCAPS KC_LSFT -#endif // TD_LSFT_CAPSLOCK_ENABLE - - -// ENCODER ACTIONS -#ifdef ENCODER_ENABLE - void encoder_action_volume(bool clockwise); - void encoder_action_mediatrack(bool clockwise); - void encoder_action_navword(bool clockwise); - void encoder_action_navpage(bool clockwise); - - uint8_t get_selected_layer(void); - void encoder_action_layerchange(bool clockwise); - - #if defined(RGB_MATRIX_ENABLE) || defined(RGBLIGHT_ENABLE) - void encoder_action_rgb_speed(bool clockwise); - void encoder_action_rgb_hue(bool clockwise); - void encoder_action_rgb_saturation(bool clockwise); - void encoder_action_rgb_brightness(bool clockwise); - void encoder_action_rgb_mode(bool clockwise); - #endif // RGB_MATRIX_ENABLE / RGBLIGHT_ENABLE - - #ifdef ALTTAB_SCROLL_ENABLE - void encoder_action_alttabscroll(bool clockwise); - void encoder_toggle_alttabscroll(void); - void encoder_tick_alttabscroll(void); - #endif // ALTTAB_SCROLL_ENABLE -#endif // ENCODER_ENABLE - - -#ifdef RGB_MATRIX_ENABLE -//RGB custom colours - #define RGB_GODSPEED 0x00, 0xE4, 0xFF // colour for matching keycaps - #define RGB_NAUTILUS 0x00, 0xA4, 0xA9 // Nautilus Font colours - - void activate_rgb_nightmode (bool turn_on); - bool get_rgb_nightmode(void); -#endif - - -// IDLE TIMEOUTS -#ifdef IDLE_TIMEOUT_ENABLE - #define TIMEOUT_THRESHOLD_DEFAULT 5 // default timeout minutes - #define TIMEOUT_THRESHOLD_MAX 140 // upper limits (2 hours and 10 minutes -- no rgb indicators above this value) - - //prototype functions - uint16_t get_timeout_threshold(void); - void timeout_reset_timer(void); - void timeout_update_threshold(bool increase); - void timeout_tick_timer(void); -#endif //IDLE_TIMEOUT_ENABLE - - -// OTHER FUNCTION PROTOTYPE -void activate_numlock(bool turn_on); diff --git a/users/jonavin/jonavin_encoder.c b/users/jonavin/jonavin_encoder.c deleted file mode 100644 index 387ed5f430..0000000000 --- a/users/jonavin/jonavin_encoder.c +++ /dev/null @@ -1,219 +0,0 @@ - -/* Copyright 2021 Jonavin Eng @Jonavin - -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 . -*/ - - -#include QMK_KEYBOARD_H -#include "jonavin.h" - -#ifdef ENCODER_ENABLE - #ifndef DYNAMIC_KEYMAP_LAYER_COUNT - #define DYNAMIC_KEYMAP_LAYER_COUNT 4 //default in case this is not already defined elsewhere - #endif - #ifndef ENCODER_DEFAULTACTIONS_INDEX - #define ENCODER_DEFAULTACTIONS_INDEX 0 // can select encoder index if there are multiple encoders - #endif - - void encoder_action_volume(bool clockwise) { - if (clockwise) - tap_code(KC_VOLU); - else - tap_code(KC_VOLD); - } - - void encoder_action_mediatrack(bool clockwise) { - if (clockwise) - tap_code(KC_MEDIA_NEXT_TRACK); - else - tap_code(KC_MEDIA_PREV_TRACK); - } - - void encoder_action_navword(bool clockwise) { - if (clockwise) - tap_code16(LCTL(KC_RGHT)); - else - tap_code16(LCTL(KC_LEFT)); - } - - void encoder_action_navpage(bool clockwise) { - if (clockwise) - tap_code16(KC_PGUP); - else - tap_code16(KC_PGDN); - } - - // LAYER HANDLING - uint8_t selected_layer = 0; - - uint8_t get_selected_layer(void) { - return selected_layer; - } - - void encoder_action_layerchange(bool clockwise) { - if (clockwise) { - if(selected_layer < (DYNAMIC_KEYMAP_LAYER_COUNT - 1)) { - selected_layer ++; - layer_move(selected_layer); - } - } else { - if (selected_layer > 0) { - selected_layer --; - layer_move(selected_layer); - } - } - } - - #ifdef RGB_MATRIX_ENABLE - void encoder_action_rgb_speed(bool clockwise) { - if (clockwise) - rgb_matrix_increase_speed_noeeprom(); - else - rgb_matrix_decrease_speed_noeeprom(); - } - void encoder_action_rgb_hue(bool clockwise) { - if (clockwise) - rgb_matrix_increase_hue_noeeprom(); - else - rgb_matrix_decrease_hue_noeeprom(); - } - void encoder_action_rgb_saturation(bool clockwise) { - if (clockwise) - rgb_matrix_increase_sat_noeeprom(); - else - rgb_matrix_decrease_sat_noeeprom(); - } - void encoder_action_rgb_brightness(bool clockwise) { - if (clockwise) - rgb_matrix_increase_val_noeeprom(); - else - rgb_matrix_decrease_val_noeeprom(); - } - void encoder_action_rgb_mode(bool clockwise) { - if (clockwise) - rgb_matrix_step_noeeprom(); - else - rgb_matrix_step_reverse_noeeprom(); - } - #elif defined(RGBLIGHT_ENABLE) - void encoder_action_rgb_speed(bool clockwise) { - if (clockwise) - rgblight_increase_speed_noeeprom(); - else - rgblight_decrease_speed_noeeprom(); - } - void encoder_action_rgb_hue(bool clockwise) { - if (clockwise) - rgblight_increase_hue_noeeprom(); - else - rgblight_decrease_hue_noeeprom(); - } - void encoder_action_rgb_saturation(bool clockwise) { - if (clockwise) - rgblight_increase_sat_noeeprom(); - else - rgblight_decrease_sat_noeeprom(); - } - void encoder_action_rgb_brightness(bool clockwise) { - if (clockwise) - rgblight_increase_val_noeeprom(); - else - rgblight_decrease_val_noeeprom(); - } - void encoder_action_rgb_mode(bool clockwise) { - if (clockwise) - rgblight_step_noeeprom(); - else - rgblight_step_reverse_noeeprom(); - } - #endif // RGB_MATRIX_ENABLE || RGBLIGHT_ENABLE - - #ifdef ALTTAB_SCROLL_ENABLE - bool is_tab_scrolling = false; - bool is_alt_tab_active = false; - uint16_t alt_tab_timer = 0; - - - void encoder_toggle_alttabscroll(void) { - is_tab_scrolling = !is_tab_scrolling; - } - - void encoder_action_alttabscroll(bool clockwise) { - if (clockwise) { - if (!is_alt_tab_active) { - is_alt_tab_active = true; - register_mods(MOD_RALT); - } - tap_code16(KC_TAB); - } - else { - tap_code16(S(KC_TAB)); - } - alt_tab_timer = timer_read(); - } - - void encoder_tick_alttabscroll(void) { - if (is_alt_tab_active) { - if (timer_elapsed(alt_tab_timer) > 600) { - unregister_mods(MOD_RALT); - is_alt_tab_active = false; - } - } - } - #endif // ALTTAB_SCROLL_ENABLE -#endif // ENCODER_ENABLE - -#if defined(ENCODER_ENABLE) && defined(ENCODER_DEFAULTACTIONS_ENABLE) // Encoder Functionality - - __attribute__((weak)) bool encoder_update_keymap(uint8_t index, bool clockwise) { return true; } - - bool encoder_update_user(uint8_t index, bool clockwise) { - if (!encoder_update_keymap(index, clockwise)) { return false; } - if (index != ENCODER_DEFAULTACTIONS_INDEX) {return true;} // exit if the index doesn't match - uint8_t mods_state = get_mods(); - if (mods_state & MOD_BIT(KC_LSFT) ) { // If you are holding L shift, encoder changes layers - encoder_action_layerchange(clockwise); - } else if (mods_state & MOD_BIT(KC_RSFT) ) { // If you are holding R shift, Page up/dn - unregister_mods(MOD_BIT(KC_RSFT)); - encoder_action_navpage(clockwise); - register_mods(MOD_BIT(KC_RSFT)); - } else if (mods_state & MOD_BIT(KC_LCTL)) { // if holding Left Ctrl, navigate next/prev word - encoder_action_navword(clockwise); - } else if (mods_state & MOD_BIT(KC_LALT)) { // if holding Left Alt, change media next/prev track - encoder_action_mediatrack(clockwise); - } else { - switch(get_highest_layer(layer_state)) { - case _FN1: - #ifdef IDLE_TIMEOUT_ENABLE - timeout_update_threshold(clockwise); - #endif - break; - default: - #ifdef ALTTAB_SCROLL_ENABLE - if (is_tab_scrolling) - encoder_action_alttabscroll(clockwise); - else - encoder_action_volume(clockwise); // Otherwise it just changes volume - #else - encoder_action_volume(clockwise); // Otherwise it just changes volume - #endif // ALTTAB_SCROLL_ENABLE - break; - } - } - return false; - } -#endif // ENCODER_ENABLE - - diff --git a/users/jonavin/readme.md b/users/jonavin/readme.md deleted file mode 100644 index 204032ae1a..0000000000 --- a/users/jonavin/readme.md +++ /dev/null @@ -1,124 +0,0 @@ -Copyright 2021 Jonavin Eng @Jonavin - -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 . - -LAYERS: -- 0 = _BASE -- 1 = _FN1 -- 2 = _LOWER -- 3 = _RAISE - -KEYCODES: -- KC_CAD Ctrl-Alt-Del -- KC_AF4 Alt-F4 -- KC_TASK Windows Task Manager (Ctrl-Shift-Esc) -- LSFT_CAPSLOCK When LSFT_CAPSLOCK_ENABLE is defined, hold for Shift double tap for CAPSLOCK; otherwise, just Shift -- KC_00 double zero "00" -- KC_WINLCK toggles LGui/Win key lock -- RGB_TOI Increase Timeout idle time threshold -- RGB_TOD Decrease Timeout idle time threshold -- CT_PGUP Ctrl-PgUp -- CT_PGDN Ctrl-PgDn -- CT_HOME Ctrl-HOme -- CT_END Ctrl-End -- KC_SFTUP RShift when held, Up arrow when tapped -- KC_RAISESPC _RAISE layer mod when held, space when tapped -- KC_LOWERSPC _LOWER layer mod when held, space when tapped -- KC_TSTOG toggles between volume and Alt-Tab encoder control -- - When EMOTICON_ENABLE = yes -- EMO_SHRUG `\_("/)_/` -- EMO_CONFUSE (*_*) -- EMD_TEARS (T_T) -- EMO_NERVOUS (~_~;) -- EMO_JOY (^o^) -- EMO_SAD :'-( - - -AVAILABLE ENCODER ACTIONS: -- void encoder_action_volume(bool clockwise); -- void encoder_action_mediatrack(bool clockwise); -- void encoder_action_navword(bool clockwise); -- void encoder_action_navpage(bool clockwise); -- -- uint8_t get_selected_layer(void); -- void encoder_action_layerchange(bool clockwise); -- -- void encoder_action_rgb_speed(bool clockwise); -- void encoder_action_rgb_hue(bool clockwise); -- void encoder_action_rgb_saturation(bool clockwise); -- void encoder_action_rgb_brightness(bool clockwise); -- void encoder_action_rgb_mode(bool clockwise); -- -- void encoder_action_alttabscroll(bool clockwise) -- void encoder_toggle_alttabscroll(void); - -ENABLE FEATURES your keymap rules.mk ---------------------------------------- - -STARTUP_NUMLOCK_ON = yes -- turns on NUMLOCK by default - -ENCODER_DEFAULTACTIONS_ENABLE = yes -- Enabled default encoder funtions -- When enabled, use this in the keymap for an additional encoder processing -- bool encoder_update_keymap(uint8_t index, bool clockwise) - -OPTION: set ENCODER_DEFAULTACTIONS_INDEX to the encoder number if the encoder is not index 0 - -TD_LSFT_CAPSLOCK_ENABLE = yes -- This will enable double tap on Left Shift to toggle CAPSLOCK -- KC_LSFTCAPS to bind to left Shift to enable feature -- KC_LSFTCAPSWIN does the same thing but will not turn on CAPS when Win Lkey is disabled - -IDLE_TIMEOUT_ENABLE = yes -- Enables Timer functionality; for RGB idle timeouts that can be changed dynamically -- When enabled, use this in the keymap for an additional matrix processing: void matrix_scan_keymap(void) - -EMOTICON_ENABLE -- adds EMO_ keycodes for text emojis - -INVERT_NUMLOCK_INDICATOR -- inverts the Num lock indicator, LED is on when num lock is off - -ALTTAB_SCROLL_ENABLE -- When ENCODER_DEFAULTACTIONS_ENABLE = yes, - Enables Alt-Tab scrolling functions in default encoder, - bind KS_TSTOG to a key to enable/disable Alt-Tab vs Volume control -- When defining your own encoder functions use encoder_action_alttabscroll(bool clockwise) to assign the encodr action - - -FUNCTIONS ------------------------- -- u16int_t get_timeout_threshold(void) // returns the current timeout threshold -- void timeout_update_threshold(bool increase) // change threshold: true = increase, false = decrease -- void timeout_reset_timer(void) // resets timer (put in process_record_user if you override it) -- void timeout_tick_timer(void) // registers time ticks (put in maxtrix_scan_user if you override it) - -Other Functions: -- activate_numlock(bool turn_on) // true = turn on NUM LOCK, false = off - -KEYMAP LEVEL ADDITIONAL PROCESSING FUNCTIONS -- bool process_record_keymap(uint16_t keycode, keyrecord_t *record) -- void keyboard_post_init_keymap(void) - -LIST OF COMPATIBLE KEYMAPS -- gmmk/pro/ansi -- keebio/quefrency/rev3 -- mechwild/mercutio -- mechwild/murphpad -- mechwild/OBE -- kbdfans/kdb67 -- nopunin10did/kastenwagen48 - diff --git a/users/jonavin/rules.mk b/users/jonavin/rules.mk deleted file mode 100644 index 4f65db27b9..0000000000 --- a/users/jonavin/rules.mk +++ /dev/null @@ -1,29 +0,0 @@ -SRC += jonavin.c -ifdef ENCODER_ENABLE - # include encoder related code when enabled - ifeq ($(strip $(ENCODER_DEFAULTACTIONS_ENABLE)), yes) - OPT_DEFS += -DENCODER_DEFAULTACTIONS_ENABLE - endif - ifeq ($(strip $(ALTTAB_SCROLL_ENABLE)), yes) - OPT_DEFS += -DALTTAB_SCROLL_ENABLE - endif - SRC += jonavin_encoder.c -endif -ifeq ($(strip $(TD_LSFT_CAPSLOCK_ENABLE)), yes) - OPT_DEFS += -DTD_LSFT_CAPSLOCK_ENABLE -endif -ifeq ($(strip $(IDLE_TIMEOUT_ENABLE)), yes) - OPT_DEFS += -DIDLE_TIMEOUT_ENABLE -endif -ifeq ($(strip $(STARTUP_NUMLOCK_ON)), yes) - OPT_DEFS += -DSTARTUP_NUMLOCK_ON -endif -ifeq ($(strip $(COLEMAK_LAYER_ENABLE)), yes) - OPT_DEFS += -DCOLEMAK_LAYER_ENABLE -endif -ifeq ($(strip $(EMOTICON_ENABLE)), yes) - OPT_DEFS += -DEMOTICON_ENABLE -endif -ifeq ($(strip $(INVERT_NUMLOCK_INDICATOR)), yes) - OPT_DEFS += -DINVERT_NUMLOCK_INDICATOR -endif diff --git a/users/kageurufu/config.h b/users/kageurufu/config.h deleted file mode 100644 index 938d43dd5a..0000000000 --- a/users/kageurufu/config.h +++ /dev/null @@ -1,4 +0,0 @@ -#pragma once - -#define NO_ACTION_MACRO -#define NO_ACTION_FUNCTION diff --git a/users/kageurufu/custom_rgb.c b/users/kageurufu/custom_rgb.c deleted file mode 100644 index 8e99129b0b..0000000000 --- a/users/kageurufu/custom_rgb.c +++ /dev/null @@ -1,18 +0,0 @@ -#include "custom_rgb.h" - -#if defined(RGBLIGHT_ENABLE) - extern rgblight_config_t rgblight_config; - rgblight_config_t _pushed_rgblight_config; - #define push_rgb_config() { if (_pushed_rgblight_config.raw == 0) { _pushed_rgblight_config.raw = rgblight_config.raw; } } - #define pop_rgb_config() { if (_pushed_rgblight_config.raw == 0) { rgblight_config.raw = _pushed_rgblight_config.raw; _pushed_rgblight_config.raw = 0; } } -#elif defined(RGB_MATRIX_ENABLE) - extern rgb_config_t rgb_matrix_config; - rgb_config_t _pushed_rgb_matrix_config; - #define push_rgb_config() _pushed_rgb_matrix_config.raw = rgb_matrix_config.raw - #define pop_rgb_config() rgb_matrix_config.raw = _pushed_rgb_matrix_config.raw -#endif - - -bool process_record_rgb(uint16_t keycode, keyrecord_t *record) { - return true; -} diff --git a/users/kageurufu/custom_rgb.h b/users/kageurufu/custom_rgb.h deleted file mode 100644 index 62d64fd4c5..0000000000 --- a/users/kageurufu/custom_rgb.h +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -#include "kageurufu.h" diff --git a/users/kageurufu/kageurufu.c b/users/kageurufu/kageurufu.c deleted file mode 100644 index e16af571bd..0000000000 --- a/users/kageurufu/kageurufu.c +++ /dev/null @@ -1,12 +0,0 @@ -#include "kageurufu.h" -#include "quantum.h" -#include "process_records.h" - -#ifdef RGBLIGHT_ENABLE - //Following line allows macro to read current RGB settings - extern rgblight_config_t rgblight_config; - rgblight_config_t backup_rgblight_config; - - __attribute__((weak)) - uint8_t RGBLIGHT_MODS[] = {0}; -#endif diff --git a/users/kageurufu/kageurufu.h b/users/kageurufu/kageurufu.h deleted file mode 100644 index 76a0126fec..0000000000 --- a/users/kageurufu/kageurufu.h +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once - -#include "quantum.h" -#include "process_records.h" -#include "layouts.h" diff --git a/users/kageurufu/layouts.h b/users/kageurufu/layouts.h deleted file mode 100644 index edf64c0b39..0000000000 --- a/users/kageurufu/layouts.h +++ /dev/null @@ -1,58 +0,0 @@ -#pragma once - - -#define _________________NUMROW_L1_________________ KC_1, KC_2, KC_3, KC_4, KC_5 -#define _________________NUMROW_R1_________________ KC_6, KC_7, KC_8, KC_9, KC_0 - - -#define _________________QWERTY_L1_________________ KC_Q, KC_W, KC_E, KC_R, KC_T -#define _________________QWERTY_L2_________________ KC_A, KC_S, KC_D, KC_F, KC_G -#define _________________QWERTY_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_B - -#define _________________QWERTY_R1_________________ KC_Y, KC_U, KC_I, KC_O, KC_P -#define _________________QWERTY_R2_________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN -#define _________________QWERTY_R3_________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLASH - - -#define _________________COLEMAK_L1________________ KC_Q, KC_W, KC_F, KC_P, KC_G -#define _________________COLEMAK_L2________________ KC_A, KC_R, KC_S, KC_T, KC_D -#define _________________COLEMAK_L3________________ KC_Z, KC_X, KC_C, KC_V, KC_B - -#define _________________COLEMAK_R1________________ KC_J, KC_L, KC_U, KC_Y, KC_SCLN -#define _________________COLEMAK_R2________________ KC_H, KC_N, KC_E, KC_I, KC_O -#define _________________COLEMAK_R3________________ KC_K, KC_M, KC_COMM, KC_DOT, KC_SLASH - - -#define ______________COLEMAK_MOD_DH_L1____________ KC_Q, KC_W, KC_F, KC_P, KC_B -#define ______________COLEMAK_MOD_DH_L2____________ KC_A, KC_R, KC_S, KC_T, KC_G -#define ______________COLEMAK_MOD_DH_L3____________ KC_Z, KC_X, KC_C, KC_D, KC_V - -#define ______________COLEMAK_MOD_DH_R1____________ KC_J, KC_L, KC_U, KC_Y, KC_SCLN -#define ______________COLEMAK_MOD_DH_R2____________ KC_M, KC_N, KC_E, KC_I, KC_O -#define ______________COLEMAK_MOD_DH_R3____________ KC_K, KC_H, KC_COMM, KC_DOT, KC_SLASH - - -#define ________________FUNCTION_L1________________ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6 -#define ________________FUNCTION_L2________________ _______, KC_PGDN, KC_UP, KC_PGUP, _______, KC_LBRC -#define ________________FUNCTION_L3________________ ADJ, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______ -#define ________________FUNCTION_L4________________ _______, _______, _______, _______, _______, _______ -#define ________________FUNCTION_L5________________ _______, _______, _______, _______, ADJ, _______ - -#define ________________FUNCTION_R1________________ KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12 -#define ________________FUNCTION_R2________________ KC_RBRC, KC_7, KC_UP, KC_9, KC_0, KC_HOME -#define ________________FUNCTION_R3________________ _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_RBRC, KC_END -#define ________________FUNCTION_R4________________ _______, _______, _______, KC_PGDN, KC_PGUP, _______ -#define ________________FUNCTION_R5________________ ADJ, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU - - -#define _________________ADJUST_L1_________________ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6 -#define _________________ADJUST_L2_________________ _______, RGB_SAD, RGB_VAI, RGB_SAI, QK_BOOT, _______ -#define _________________ADJUST_L3_________________ _______, RGB_HUD, RGB_VAD, RGB_HUI, RGBRST, _______ -#define _________________ADJUST_L4_________________ _______, _______, _______, _______, _______, _______ -#define _________________ADJUST_L5_________________ _______, _______, _______, _______, _______, _______ - -#define _________________ADJUST_R1_________________ KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12 -#define _________________ADJUST_R2_________________ _______, _______, _______, _______, _______, KC_DEL -#define _________________ADJUST_R3_________________ _______, QWERTY, COLEMAK, CMAK_DH, _______, _______ -#define _________________ADJUST_R4_________________ _______, _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI -#define _________________ADJUST_R5_________________ _______, _______, RGB_RMOD,RGB_HUD, RGB_SAD, RGB_VAD diff --git a/users/kageurufu/process_records.c b/users/kageurufu/process_records.c deleted file mode 100644 index 63dbcff89b..0000000000 --- a/users/kageurufu/process_records.c +++ /dev/null @@ -1,44 +0,0 @@ -#include "kageurufu.h" - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case QWERTY: - if (record->event.pressed) { - set_single_persistent_default_layer(_QWERTY); - } - return false; - break; - case COLEMAK: - if(record->event.pressed) { - set_single_persistent_default_layer(_COLEMAK); - } - return false; - break; - case RGBRST: - #ifdef RGBLIGHT_ENABLE - if (record->event.pressed) { - eeconfig_update_rgblight_default(); - rgblight_enable(); - } - #endif - break; - } - - - return process_record_keymap(keycode, record) && -#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE) - process_record_rgb(keycode, record) && -#endif // RGBLIGHT_ENABLE; - true; -} - -__attribute__ ((weak)) -bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { - return true; -} - - -__attribute__ ((weak)) -bool process_record_rgb(uint16_t keycode, keyrecord_t *record) { - return true; -} diff --git a/users/kageurufu/process_records.h b/users/kageurufu/process_records.h deleted file mode 100644 index d1c50a4112..0000000000 --- a/users/kageurufu/process_records.h +++ /dev/null @@ -1,27 +0,0 @@ -#pragma once -#include "kageurufu.h" - -#define FN_ESC LT(_FN, KC_ESC) -#define FN MO(_FN) -#define ADJ MO(_ADJ) - -enum layer_number { - _QWERTY = 0, - _COLEMAK, - _COLEMAK_DH, - _FN, - _ADJ, - ADDITIONAL_LAYER -}; - -enum custom_keycodes { - QWERTY = SAFE_RANGE, - COLEMAK, - CMAK_DH, - RGBRST, - KAGEURUFU_SAFE_RANGE -}; - - -bool process_record_keymap(uint16_t keycode, keyrecord_t *record); -bool process_record_rgb(uint16_t keycode, keyrecord_t *record); diff --git a/users/kageurufu/readme.md b/users/kageurufu/readme.md deleted file mode 100644 index 57dd85d6be..0000000000 --- a/users/kageurufu/readme.md +++ /dev/null @@ -1,14 +0,0 @@ -Copyright 2018- Franklyn Tackitt franklyn@tackitt.net @kageurufu - -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 . diff --git a/users/kageurufu/rules.mk b/users/kageurufu/rules.mk deleted file mode 100644 index 4bff403a7b..0000000000 --- a/users/kageurufu/rules.mk +++ /dev/null @@ -1,14 +0,0 @@ -SRC += kageurufu.c \ - process_records.c \ - custom_rgb.c - -# Link time optimization, should save on firmware size -EXTRAFLAGS += -flto - - -# Some usual defaults -MOUSEKEY_ENABLE = no -EXTRAKEY_ENABLE = yes -COMMAND_ENABLE = yes -CONSOLE_ENABLE = yes -RGBLIGHT_ENABLE = no diff --git a/users/klackygears/klackygears.c b/users/klackygears/klackygears.c deleted file mode 100644 index 2e7533eb16..0000000000 --- a/users/klackygears/klackygears.c +++ /dev/null @@ -1,75 +0,0 @@ -#include "klackygears.h" - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - /* - if (!process_record_dynamic_macro(keycode, record)) { - return false; - } - */ - switch (keycode) { - case KC_MACBASE: - if (record->event.pressed) { - set_single_persistent_default_layer(_MACBASE); - } - break; - - case KC_QWERTY: - if (record->event.pressed) { - set_single_persistent_default_layer(_QWERTY); - } - break; - - case KC_WINBASE: - if (record->event.pressed) { - set_single_persistent_default_layer(_WINBASE); - } - break; - - case KC_GAMER: - if (record->event.pressed) { - set_single_persistent_default_layer(_GAMER); - } - break; - - case KC_GAMR1: - if (record->event.pressed) { - set_single_persistent_default_layer(_GAMR1); - } - break; - - case KC_GAMR2: - if (record->event.pressed) { - set_single_persistent_default_layer(_GAMR2); - } - break; - case RGBRST: -#ifdef RGBLIGHT_ENABLE - if (record->event.pressed) { - eeconfig_update_rgblight_default(); - rgblight_enable(); - } -#endif - break; - - case MAKEK: - if (record->event.pressed) { - SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP); - } - break; - - case MAKEKF: - if (!record->event.pressed) { - SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP ":flash"); - } - - break; - - case SHRUG: - if (record->event.pressed) { - SEND_STRING(":Shrug:"); - } - break; - } - - return true; -} diff --git a/users/klackygears/klackygears.h b/users/klackygears/klackygears.h deleted file mode 100644 index c131d46428..0000000000 --- a/users/klackygears/klackygears.h +++ /dev/null @@ -1,72 +0,0 @@ -#pragma once - -#include QMK_KEYBOARD_H - -#include "wrappers.h" -#include "eeprom.h" -#ifdef TAP_DANCE_ENABLE - #include "tap_dances.h" -#endif // TAP_DANCE_ENABLE - -enum layer_number { - _WINBASE = 0, - _MACBASE, - _QWERTY, - _GAMER, - _GAMR1, - _GAMR2, - _NGMR, - _NUMB, - _MNMB, - _SYMB, - _FUNC, - _MDIA, - _MEME -}; - -enum userspace_custom_keycodes { - KC_MACBASE = SAFE_RANGE, - KC_QWERTY, - KC_WINBASE, - KC_GAMER, - KC_GAMR1, - KC_GAMR2, - NUMB, - MNMB, - SYMB, - FUNC, - MDIA, - RGBRST, - MAKEK, - MAKEKF, - SHRUG, - //DYNAMIC_MACRO_RANGE, - SAFE_RANGE_KEYMAP -}; - - -/* -#ifdef UNICODEMAP_ENABLE -enum unicode_names { - BANG, - IRONY, - SNEK, -}; - -const uint32_t unicode_map[] PROGMEM = { - [BANG] = 0x203D, // â€― - [IRONY] = 0x2E2E, // âļŪ - [SNEK] = 0x1F40D, // 🐍 -}; -#endif // UNICODEMAP_ENABLE -*/ - - -//#include "dynamic_macro.h" - - - -#if RGBLIGHT_ENABLE -uint8_t RGB_current_mode; - -#endif diff --git a/users/klackygears/readme.md b/users/klackygears/readme.md deleted file mode 100644 index d00d9a17c0..0000000000 --- a/users/klackygears/readme.md +++ /dev/null @@ -1,15 +0,0 @@ -Copyright<2019> @klackygears - -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 . - - -Most of what I have here was copied and modified from drashna. If it looks a bit messy it's because I'm a total noob and trying to push myself to learn new things. diff --git a/users/klackygears/rules.mk b/users/klackygears/rules.mk deleted file mode 100644 index 82b2233f12..0000000000 --- a/users/klackygears/rules.mk +++ /dev/null @@ -1,6 +0,0 @@ -SRC += klackygears.c - - -ifeq ($(strip $(TAP_DANCE_ENABLE)), yes) - SRC += tap_dances.c -endif \ No newline at end of file diff --git a/users/klackygears/tap_dances.c b/users/klackygears/tap_dances.c deleted file mode 100644 index 3749e0ed4e..0000000000 --- a/users/klackygears/tap_dances.c +++ /dev/null @@ -1,184 +0,0 @@ -#include "tap_dances.h" - -/* -void macroTogKey(tap_dance_state_t *state, void *user_data) { - keyrecord_t kr; - - if (state->count == 1) - { - kr.event.pressed = false; - process_record_dynamic_macro( DM_PLY1, &kr ); - } - else if (state->count == 2) - { - kr.event.pressed = true; - process_record_dynamic_macro( DM_RSTP, &kr ); - } - else if (state->count == 3) - { - kr.event.pressed = false; - process_record_dynamic_macro( QK_DYNAMIC_MACRO_RECORD_START_1, &kr ); - } -} - -void macroTogKey2(tap_dance_state_t *state, void *user_data) { - keyrecord_t kr; - - if (state->count == 1) - { - kr.event.pressed = false; - process_record_dynamic_macro( DM_PLY2, &kr ); - } - else if (state->count == 2) - { - kr.event.pressed = true; - process_record_dynamic_macro( DM_RSTP, &kr ); - } - else if (state->count == 3) - { - kr.event.pressed = false; - process_record_dynamic_macro( DM_REC2, &kr ); - } -} -*/ - -void pstinsrt(tap_dance_state_t *state, void *user_data) { - if (state->count > 1) { - register_code(KC_LALT); - tap_code(KC_I); - tap_code(KC_E); - unregister_code(KC_LALT); - } else { - tap_code16(C(KC_V)); - } - reset_tap_dance(state); -} - -void ccopy(tap_dance_state_t *state, void *user_data) { - if (state->count > 1) { - tap_code16(C(KC_X)); - - // SEND_STRING( SS_DOWN(KC_LCTL) SS_TAP(KC_X) SS_UP(KC_LCTL)); - } else { - tap_code16(C(KC_C)); - } - reset_tap_dance(state); -} - -void pstspecial(tap_dance_state_t *state, void *user_data) { - if (state->count > 1) { - register_code(KC_LALT); - tap_code(KC_E); - tap_code(KC_S); - unregister_code(KC_LALT); - tap_code(KC_V); - } else { - register_code(KC_LALT); - tap_code(KC_E); - tap_code(KC_S); - unregister_code(KC_LALT); - tap_code(KC_T); - } - reset_tap_dance(state); -} - -void deldel(tap_dance_state_t *state, void *user_data) { - if (state->count > 1) { - register_code(KC_LALT); - tap_code(KC_E); - tap_code(KC_D); - unregister_code(KC_LALT); - } else { - tap_code(KC_DEL); - } - reset_tap_dance(state); -} - -void findreplace(tap_dance_state_t *state, void *user_data) { - if (state->count > 1) { - tap_code16(C(KC_H)); - } else { - tap_code16(C(KC_F)); - } - reset_tap_dance(state); -} - -void cyclawin(tap_dance_state_t *state, void *user_data) { - if (state->count > 1) { - tap_code16(C(S(KC_F6))); - } else { - tap_code16(C(KC_F6)); - } - reset_tap_dance(state); -} - -void SCRNSNP(tap_dance_state_t *state, void *user_data) { - if (state->count > 1) { - tap_code16(A(KC_PSCR)); - } else { - tap_code(KC_LGUI); - tap_code(KC_S); - tap_code(KC_N); - tap_code16(C(KC_N)); - } - reset_tap_dance(state); -} - -void mcccpy(tap_dance_state_t *state, void *user_data) { - if (state->count > 1) { - tap_code16(G(KC_X)); - } else { - tap_code16(G(KC_C)); - } - reset_tap_dance(state); -} - -void mcpstin(tap_dance_state_t *state, void *user_data) { - if (state->count > 1) { - tap_code16(G(KC_I)); - } else { - tap_code16(G(KC_V)); - } - reset_tap_dance(state); -} - -void enttab(tap_dance_state_t *state, void *user_data) { - if (state->count > 1) { - tap_code(KC_ENT); - } else { - tap_code(KC_TAB); - } - reset_tap_dance(state); -} - -void rgb_toggle(tap_dance_state_t *state, void *user_data) { -#ifdef RGBLIGHT_ENABLE - if (state->count == 1) { - rgblight_step(); - } else { - rgblight_increase_hue(); - } -#endif -} - -// Tap Dance Definitions -tap_dance_action_t tap_dance_actions[] = { - [TD_PSTI] = ACTION_TAP_DANCE_FN(pstinsrt), - [TD_PTSP] = ACTION_TAP_DANCE_FN(pstspecial), - [TD_FNDR] = ACTION_TAP_DANCE_FN(findreplace), - [TD_CCPY] = ACTION_TAP_DANCE_FN(ccopy), - [TD_DDEL] = ACTION_TAP_DANCE_FN(deldel), - [TD_ACCW] = ACTION_TAP_DANCE_FN(cyclawin), - [TD_CAPESC] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS), - [TD_DTEX] = ACTION_TAP_DANCE_DOUBLE(KC_DOT, KC_EXLM), - [TD_COMQUES] = ACTION_TAP_DANCE_DOUBLE(KC_COMM, KC_QUES), - [TD_MINPLS] = ACTION_TAP_DANCE_DOUBLE(KC_PMNS, KC_PPLS), - [TD_DIVMLT] = ACTION_TAP_DANCE_DOUBLE(KC_PSLS, KC_PAST), - [TD_DOTEQL] = ACTION_TAP_DANCE_DOUBLE(KC_DOT, KC_EQL), - [TD_SCNSP] = ACTION_TAP_DANCE_FN(SCRNSNP), - [TD_MCCCPY] = ACTION_TAP_DANCE_FN(mcccpy), - [TD_MCPSTIN] = ACTION_TAP_DANCE_FN(mcpstin), - [TD_ENTAB] = ACTION_TAP_DANCE_FN(enttab), - [TD_XSPC] = ACTION_TAP_DANCE_DOUBLE(KC_SPACE, KC_X), - [TD_RGB] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, rgb_toggle, NULL) -}; diff --git a/users/klackygears/tap_dances.h b/users/klackygears/tap_dances.h deleted file mode 100644 index 66c2c48c91..0000000000 --- a/users/klackygears/tap_dances.h +++ /dev/null @@ -1,37 +0,0 @@ -#pragma once -#include "klackygears.h" - -#ifdef TAP_DANCE_ENABLE -enum { - // TD_MCROTOG, - // TD_MCROTG2, - TD_BTK, - TD_TDE, - TD_LPRN, - TD_RPRN, - TD_MIN, - TD_USC, - TD_CMWN, - TD_ATSH, - TD_PSTI, - TD_PTSP, - TD_FNDR, - TD_CCPY, - TD_DDEL, - TD_ACCW, - TD_CAPESC, - TD_DTEX, - TD_COMQUES, - TD_MINPLS, - TD_DIVMLT, - TD_DOTEQL, - TD_LSHSYM, - TD_RSHSYM, - TD_SCNSP, - TD_MCCCPY, - TD_MCPSTIN, - TD_ENTAB, - TD_XSPC, - TD_RGB, -}; -#endif diff --git a/users/klackygears/wrappers.h b/users/klackygears/wrappers.h deleted file mode 100644 index 88cbae1849..0000000000 --- a/users/klackygears/wrappers.h +++ /dev/null @@ -1,220 +0,0 @@ -#pragma once -#include "klackygears.h" -/* -Most of this is copied from drashna. I added and changed a few things but, it's all based off of his user folder. -*/ -#if (!defined(LAYOUT) && defined(KEYMAP)) -#define LAYOUT KEYMAP -#endif - -//Added other layout options -#define LAYOUT_ergodox_wrapper(...) LAYOUT_ergodox(__VA_ARGS__) -#define LAYOUT_ergodox_pretty_wrapper(...) LAYOUT_ergodox_pretty(__VA_ARGS__) -#define KEYMAP_wrapper(...) LAYOUT(__VA_ARGS__) -#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__) -#define LAYOUT_ortho_4x12_wrapper(...) LAYOUT_ortho_4x12(__VA_ARGS__) -#define LAYOUT_ortho_5x10_wrapper(...) LAYOUT_ortho_5x10(__VA_ARGS__) -#define LAYOUT_ortho_5x5_wrapper(...) LAYOUT_ortho_5x5(__VA_ARGS__) - - -/* -NOTE: If you do a search/replace - then you need to add/remove underscores to keep the - lengths consistent. -*/ -//keymaps for tap dance and without -#ifdef TAP_DANCE_ENABLE - #define _________________QWERTY_L1_________________ KC_Q, KC_W, KC_E, KC_R, KC_T - #define _________________QWERTY_L2_________________ KC_A, KC_S, KC_D, KC_F, KC_G - #define _________________QWERTY_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_B - - #define _________________QWERTY_R1_________________ KC_Y, KC_U, KC_I, KC_O, KC_P - #define _________________QWERTY_R2_________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN - #define _________________QWERTY_R3_________________ KC_N, KC_M, TD(TD_COMQUES), TD(TD_DTEX), LT(_MDIA,KC_SLASH) - - - #define _________________COLEMAK_L1________________ KC_Q, KC_W, KC_F, KC_P, KC_G - #define _________________COLEMAK_L2________________ KC_A, KC_R, KC_S, KC_T, KC_D - #define _________________COLEMAK_L3________________ KC_Z, KC_X, KC_C, KC_V, KC_B - - #define _________________COLEMAK_R1________________ KC_J, KC_L, KC_U, KC_Y, KC_SCLN - #define _________________COLEMAK_R2________________ KC_H, KC_N, KC_E, KC_I, KC_O - #define _________________COLEMAK_R3________________ KC_K, KC_M, TD(TD_COMQUES), TD(TD_DTEX), KC_SLASH -/* - #define ______________COLEMAK_MOD_DH_L1____________ KC_Q, KC_W, KC_F, KC_P, KC_B - #define ______________COLEMAK_MOD_DH_L2____________ KC_A, KC_R, KC_S, KC_T, KC_G - #define ______________COLEMAK_MOD_DH_L3____________ KC_Z, KC_X, KC_C, KC_D, KC_V - - #define ______________COLEMAK_MOD_DH_R1____________ KC_J, KC_L, KC_U, KC_Y, KC_SCLN - #define ______________COLEMAK_MOD_DH_R2____________ KC_M, KC_N, KC_E, KC_I, KC_O - #define ______________COLEMAK_MOD_DH_R3____________ KC_K, KC_H, KC_COMM, KC_DOT, KC_SLASH -*/ - - #define _______________DVORAK_L1___________________ KC_QUOT, TD(TD_COMQUES), TD(TD_DTEX), KC_P, KC_Y - #define _______________DVORAK_L2___________________ KC_A, KC_O, KC_E, KC_U, KC_I - #define _______________MACDVK_L3___________________ MT(MOD_LCTL,KC_SCLN), MT(MOD_LALT,KC_Q), MT(MOD_LGUI, KC_J), KC_K, KC_X - #define _______________WINDVK_L3___________________ MT(MOD_LGUI,KC_SCLN), MT(MOD_LALT,KC_Q), MT(MOD_LCTL, KC_J), KC_K, KC_X - - #define _______________DVORAK_R1___________________ KC_F, KC_G, KC_C, KC_R, KC_L - #define _______________DVORAK_R2___________________ KC_D, KC_H, KC_T, KC_N, KC_S - #define _______________MACDVK_R3___________________ KC_B, KC_M, MT(MOD_LGUI,KC_W), MT(MOD_LALT,KC_V), LT(_MDIA,KC_Z) - #define _______________WINDVK_R3___________________ KC_B, KC_M, MT(MOD_LCTL,KC_W), MT(MOD_LALT,KC_V), LT(_MDIA,KC_Z) - - #define __________c39__MACDVK_L3___________________ MT(MOD_LCTL,KC_SCLN), MT(MOD_LALT,KC_Q), MT(MOD_LGUI, KC_J), LT(_SYMB,KC_K), TD(TD_XSPC) - #define __________c39__WINDVK_L3___________________ MT(MOD_LGUI,KC_SCLN), MT(MOD_LALT,KC_Q), MT(MOD_LCTL, KC_J), LT(_SYMB,KC_K), TD(TD_XSPC) - #define __________c39__MACDVK_R3___________________ LT(_MNMB,KC_B), LT(_SYMB,KC_M), MT(MOD_LGUI,KC_W), MT(MOD_LALT,KC_V), LT(_MDIA,KC_Z) - #define __________c39__WINDVK_R3___________________ LT(_NUMB,KC_B), LT(_SYMB,KC_M), MT(MOD_LCTL,KC_W), MT(MOD_LALT,KC_V), LT(_MDIA,KC_Z) -#else - - #define _________________QWERTY_L1_________________ KC_Q, KC_W, KC_E, KC_R, KC_T - #define _________________QWERTY_L2_________________ KC_A, KC_S, KC_D, KC_F, KC_G - #define _________________QWERTY_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_B - - #define _________________QWERTY_R1_________________ KC_Y, KC_U, KC_I, KC_O, KC_P - #define _________________QWERTY_R2_________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN - #define _________________QWERTY_R3_________________ KC_N, KC_M, KC_COMM, KC_DOT, LT(_MDIA,KC_SLASH) - - - #define _________________COLEMAK_L1________________ KC_Q, KC_W, KC_F, KC_P, KC_G - #define _________________COLEMAK_L2________________ KC_A, KC_R, KC_S, KC_T, KC_D - #define _________________COLEMAK_L3________________ KC_Z, KC_X, KC_C, KC_V, KC_B - - #define _________________COLEMAK_R1________________ KC_J, KC_L, KC_U, KC_Y, KC_SCLN - #define _________________COLEMAK_R2________________ KC_H, KC_N, KC_E, KC_I, KC_O - #define _________________COLEMAK_R3________________ KC_K, KC_M, KC_COMM, KC_DOT, KC_SLASH - - #define _______________DVORAK_L1___________________ KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y - #define _______________DVORAK_L2___________________ KC_A, KC_O, KC_E, KC_U, KC_I - #define _______________MACDVK_L3___________________ MT(MOD_LCTL,KC_SCLN), MT(MOD_LALT,KC_Q), MT(MOD_LGUI, KC_J), KC_K, KC_X - #define _______________WINDVK_L3___________________ MT(MOD_LGUI,KC_SCLN), MT(MOD_LALT,KC_Q), MT(MOD_LCTL, KC_J), KC_K, KC_X - - #define _______________DVORAK_R1___________________ KC_F, KC_G, KC_C, KC_R, KC_L - #define _______________DVORAK_R2___________________ KC_D, KC_H, KC_T, KC_N, KC_S - #define _______________MACDVK_R3___________________ KC_B, KC_M, MT(MOD_LGUI,KC_W), MT(MOD_LALT,KC_V), LT(_MDIA,KC_Z) - #define _______________WINDVK_R3___________________ KC_B, KC_M, MT(MOD_LCTL,KC_W), MT(MOD_LALT,KC_V), LT(_MDIA,KC_Z) -#endif - -/* -#define ________________DVORAK_AU_L1_______________ KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y -#define ________________DVORAK_AU_L2_______________ KC_O, KC_A, KC_E, KC_I, KC_U -#define ________________DVORAK_AU_L3_______________ KC_SCLN, KC_Q, KC_J, KC_K, KC_X - -#define ________________DVORAK_AU_R1_______________ KC_F, KC_G, KC_C, KC_R, KC_L -#define ________________DVORAK_AU_R2_______________ KC_D, KC_H, KC_T, KC_N, KC_S -#define ________________DVORAK_AU_R3_______________ KC_B, KC_M, KC_W, KC_V, KC_Z - - -#define _________________WORKMAN_L1________________ KC_Q, KC_D, KC_R, KC_W, KC_B -#define _________________WORKMAN_L2________________ KC_A, KC_S, KC_H, KC_T, KC_G -#define _________________WORKMAN_L3________________ KC_Z, KC_X, KC_M, KC_C, KC_V - -#define _________________WORKMAN_R1________________ KC_J, KC_F, KC_U, KC_P, KC_SCLN -#define _________________WORKMAN_R2________________ KC_Y, KC_N, KC_E, KC_O, KC_I -#define _________________WORKMAN_R3________________ KC_K, KC_L, TD(TD_COMQUES), TD(TD_DTEX), KC_SLASH - - -#define _________________NORMAN_L1_________________ KC_Q, KC_W, KC_D, KC_F, KC_K -#define _________________NORMAN_L2_________________ KC_A, KC_S, KC_E, KC_T, KC_G -#define _________________NORMAN_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_B - -#define _________________NORMAN_R1_________________ KC_J, KC_U, KC_R, KC_L, KC_SCLN -#define _________________NORMAN_R2_________________ KC_Y, KC_N, KC_I, KC_O, KC_U -#define _________________NORMAN_R3_________________ KC_P, KC_M, KC_COMM, KC_DOT, KC_SLASH -*/ - -// thumb key layouts -#define ________WIN_THUMB_CLUSTER_________ LT(_SYMB,KC_SPC), LT(_NUMB,KC_BSPC), LT(_NUMB,KC_TAB), LT(_SYMB,KC_ENT) -#define ________MAC_THUMB_CLUSTER_________ LT(_SYMB,KC_SPC), LT(_MNMB,KC_BSPC), LT(_MNMB,KC_TAB), LT(_SYMB,KC_ENT) - -#define __________________WIN_THUMB_CLUSTER_V2______________ LT(_FUNC,KC_ENT), LT(_NUMB,KC_BSPC), MT(MOD_LSFT,KC_SPC), LT(_NUMB,KC_TAB), LT(_SYMB,KC_ENT), KC_RSFT -#define __________________MAC_THUMB_CLUSTER_V2______________ LT(_FUNC,KC_ENT), LT(_MNMB,KC_BSPC), MT(MOD_LSFT,KC_SPC), LT(_MNMB,KC_TAB), LT(_SYMB,KC_ENT), KC_RSFT -#define ________MAC_THUMB_L______ LT(_FUNC,KC_ENT), LT(_MNMB,KC_BSPC), MT(MOD_LSFT,KC_SPC) -#define ________MAC_THUMB_R______ LT(_MNMB,KC_TAB), LT(_SYMB,KC_ENT), LT(_MDIA,KC_ENT) -#define ________WIN_THUMB_L______ LT(_FUNC,KC_ENT), LT(_NUMB,KC_BSPC), MT(MOD_LSFT,KC_SPC) -#define ________WIN_THUMB_R______ LT(_NUMB,KC_TAB), LT(_SYMB,KC_ENT), LT(_MDIA,KC_ENT) - -// Mission Control Commands -#define ________MAC_MISSION_CTRL__________ LCTL(KC_LEFT), LCTL(KC_UP), LCTL(KC_DOWN), LCTL(KC_RGHT) - -//Number Row -#define _________________NUMBER_L__________________ KC_1, KC_2, KC_3, KC_4, KC_5 -#define _________________NUMBER_R__________________ KC_6, KC_7, KC_8, KC_9, KC_0 - -//keymaps for tap dance and without -#ifdef TAP_DANCE_ENABLE -//Arrow keys and copy-paste shortcuts for MAC OS - #define _________________MACNAV_L1_________________ KC_PGUP, KC_PGDN, KC_HOME, KC_END, _______ - #define _________________MACNAV_L2_________________ KC_LEFT, KC_UP, KC_DOWN, KC_RIGHT, _______ - #define _________________MACNAV_L3_________________ _______, LGUI(KC_A), TD(TD_MCCCPY), TD(TD_MCPSTIN), KC_DEL - -//Arrow keys and copy-paste shortcuts for Windows and Microsoft Access & Excel - #define _________________WINNAV_L1_________________ KC_PGUP, KC_PGDN, KC_HOME, KC_END, TD(TD_FNDR) - #define _________________WINNAV_L2_________________ KC_LEFT, KC_UP, KC_DOWN, KC_RIGHT, TD(TD_PTSP) - #define _________________WINNAV_L3_________________ TD(TD_ACCW), LCTL(KC_A), TD(TD_CCPY), TD(TD_PSTI), TD(TD_DDEL) - -//Numpad layout with different mod-tap keys for MAC OS and Windows - #define _________________NUMB_R1___________________ TD(TD_MINPLS), KC_7, KC_8, KC_9, KC_COLN - #define _________________NUMB_R2___________________ TD(TD_DIVMLT), KC_4, KC_5, KC_6, C_S_T(KC_COLN) - #define _________________NUMB_R3_MAC_______________ TD(TD_DOTEQL), KC_1, MT(MOD_LGUI,KC_2), MT(MOD_LALT,KC_3), MT(MOD_LCTL,KC_0) - #define _________________NUMB_R3_WIN_______________ TD(TD_DOTEQL), KC_1, MT(MOD_LCTL,KC_2), MT(MOD_LALT,KC_3), MT(MOD_LGUI,KC_0) - #define _________________NUMB_R4___________________ KC_LSFT, KC_0, KC_0, _______, _______ -#else -//Arrow keys and copy-paste shortcuts for MAC OS - #define _________________MACNAV_L1_________________ KC_PGUP, KC_PGDN, KC_HOME, KC_END, _______ - #define _________________MACNAV_L2_________________ KC_LEFT, KC_UP, KC_DOWN, KC_RIGHT, _______ - #define _________________MACNAV_L3_________________ _______, LGUI(KC_A), _______, _______, KC_DEL - -//Arrow keys and copy-paste shortcuts for Windows and Microsoft Access & Excel - #define _________________WINNAV_L1_________________ KC_PGUP, KC_PGDN, KC_HOME, KC_END, _______ - #define _________________WINNAV_L2_________________ KC_LEFT, KC_UP, KC_DOWN, KC_RIGHT, _______ - #define _________________WINNAV_L3_________________ _______, _______, _______, _______, _______ - #define _________________NUMB_R1___________________ KC_PMNS, KC_7, KC_8, KC_9, KC_PPLS - #define _________________NUMB_R2___________________ KC_PSLS, KC_4, KC_5, KC_6, KC_PAST - #define _________________NUMB_R3_MAC_______________ KC_DOT, KC_1, MT(MOD_LGUI,KC_2), MT(MOD_LALT,KC_3), MT(MOD_LCTL,KC_0) - #define _________________NUMB_R3_WIN_______________ KC_DOT, KC_1, MT(MOD_LCTL,KC_2), MT(MOD_LALT,KC_3), MT(MOD_LGUI,KC_0) - #define _________________NUMB_R4___________________ KC_LSFT, KC_0, KC_0, _______, _______ -#endif - -//Function Row -/* -#define _________________FUNC_LEFT_________________ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5 -#define _________________FUNC_RIGHT________________ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10 -*/ - -//Function keys as macropad -#define _____________FUNC_1_______________ KC_F9, KC_F10, KC_F11, KC_F12 -#define _____________FUNC_2_______________ KC_F5, KC_F6, KC_F7, KC_F8 -#define _____________FUNC_3_______________ KC_F1, KC_F2, KC_F3, KC_F4 - -//RGB keys -#if defined RGBLIGHT_ENABLE || defined RGB_MATRIX_ENABLE -#define _________________RGB_1_____________________ RGBRST, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI -#define _________________RGB_2_____________________ RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD -#else -#define _________________RGB_1_____________________ _______, _______, _______, _______, _______ -#define _________________RGB_2_____________________ _______, _______, _______, _______, _______ -#endif - -//Audio keys -#define _________________MEDIA_____________________ KC_MPLY, KC_MUTE, KC_VOLD, KC_VOLU, _______ -#define _________________MEDIA_V2__________________ KC_EJCT, KC_MRWD, KC_MPLY, KC_MFFD, _______ - -//Base layer keys -#define _________________LYOUT_____________________ _______, KC_QWERTY, KC_MACBASE, KC_WINBASE, _______ - -//Punctuation keys -#define _________________PUNC_L1___________________ KC_BSLS, KC_AT, KC_HASH, KC_DLR, KC_PERC -#define _________________PUNC_L1_ALT_______________ KC_DQT, KC_AT, KC_HASH, KC_DLR, KC_PERC -#define _________________PUNC_L2___________________ KC_PLUS, KC_MINS, KC_ASTR, KC_SLSH, KC_EQL -#define _________________PUNC_L3___________________ KC_LBRC, KC_RBRC, KC_LPRN, KC_RPRN, KC_AMPR -#define _________________PUNC_L3_ALT_______________ _______, _______, KC_TILD, KC_CIRC, KC_GRV -#define _________________PUNC_R1___________________ _______, KC_DQT, KC_EQL, _______, _______ -#define _________________PUNC_R2___________________ _______, KC_ASTR, KC_SLSH, KC_PLUS, KC_MINS -#define _________________PUNC_R3___________________ _______, KC_EQL, KC_BSLS, _______, _______ - -//Make Shortcuts and window switching -#define _____________FUNC_L1_______________________ MAKEKF, MAKEK, _______, KC_ESC, LCTL(LALT(KC_DEL)) -#define _____________FUNC_L3_______________________ KC_LGUI, KC_RALT, KC_LCTL, KC_TAB, _______ - - -#define _________________KC_BLANK__________________ _______, _______, _______, _______, _______ diff --git a/users/konstantin/config.h b/users/konstantin/config.h deleted file mode 100644 index 26c7ecc0c7..0000000000 --- a/users/konstantin/config.h +++ /dev/null @@ -1,63 +0,0 @@ -/* Copyright 2019-2021 Konstantin Đorđević - * - * 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 . - */ - -#pragma once - -// Keyboard reports -#define FORCE_NKRO -#define USB_POLLING_INTERVAL_MS 1 - -// Mouse keys -#define MOUSEKEY_DELAY 0 -#define MOUSEKEY_INTERVAL 10 -#define MOUSEKEY_MAX_SPEED 4 -#define MOUSEKEY_TIME_TO_MAX 100 -#define MOUSEKEY_WHEEL_DELAY 0 -#define MOUSEKEY_WHEEL_INTERVAL 50 -#define MOUSEKEY_WHEEL_MAX_SPEED 4 -#define MOUSEKEY_WHEEL_TIME_TO_MAX 50 - -// RGB lighting -#undef RGBLIGHT_EFFECT_BREATHING -#undef RGBLIGHT_EFFECT_RAINBOW_MOOD -#undef RGBLIGHT_EFFECT_RAINBOW_SWIRL -#undef RGBLIGHT_EFFECT_SNAKE -#undef RGBLIGHT_EFFECT_KNIGHT -#undef RGBLIGHT_EFFECT_CHRISTMAS -#undef RGBLIGHT_EFFECT_STATIC_GRADIENT -#undef RGBLIGHT_EFFECT_RGB_TEST -#undef RGBLIGHT_EFFECT_ALTERNATING -#undef RGBLIGHT_EFFECT_TWINKLE -#define RGBLIGHT_EFFECT_BREATHING -#define RGBLIGHT_EFFECT_RAINBOW_MOOD -#define RGBLIGHT_EFFECT_RAINBOW_SWIRL -#define RGBLIGHT_EFFECT_SNAKE - -// Tapping -#define PERMISSIVE_HOLD -#define TAPPING_TERM 200 -#define TAPPING_TOGGLE 2 - -// Unicode -#define UNICODE_CYCLE_PERSIST false -#define UNICODE_SELECTED_MODES UNICODE_MODE_WINCOMPOSE, UNICODE_MODE_WINDOWS, UNICODE_MODE_LINUX -#define UNICODE_KEY_WINC KC_RGUI - -// Firmware size reduction -#undef LOCKING_SUPPORT_ENABLE -#define NO_ACTION_FUNCTION -#define NO_ACTION_MACRO -#define NO_ACTION_ONESHOT diff --git a/users/konstantin/konstantin.c b/users/konstantin/konstantin.c deleted file mode 100644 index 497142ed4d..0000000000 --- a/users/konstantin/konstantin.c +++ /dev/null @@ -1,144 +0,0 @@ -/* Copyright 2019-2021 Konstantin Đorđević - * - * 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 . - */ - -#include "konstantin.h" - -__attribute__((weak)) -void keyboard_pre_init_keymap(void) {} - -void keyboard_pre_init_user(void) { - keyboard_pre_init_keymap(); -} - -__attribute__((weak)) -void eeconfig_init_keymap(void) {} - -void eeconfig_init_user(void) { - eeconfig_init_keymap(); -} - -__attribute__((weak)) -void keyboard_post_init_keymap(void) {} - -void keyboard_post_init_user(void) { - keyboard_post_init_keymap(); -} - -__attribute__((weak)) -layer_state_t layer_state_set_keymap(layer_state_t state) { - return state; -} - -layer_state_t layer_state_set_user(layer_state_t state) { - state = layer_state_set_keymap(state); - -#ifdef LAYER_NUMPAD - bool numpad = IS_LAYER_ON_STATE(state, L_NUMPAD); - bool num_lock = host_keyboard_led_state().num_lock; - if (numpad != num_lock) { - tap_code(KC_NUM_LOCK); // Toggle Num Lock to match Numpad layer state - } -#endif - - return state; -} - -__attribute__((weak)) -void led_set_keymap(uint8_t usb_led) {} - -void led_set_user(uint8_t usb_led) { - led_set_keymap(usb_led); -} - -__attribute__((weak)) -bool led_update_keymap(led_t led_state) { - return true; -} - -bool led_update_user(led_t led_state) { - return led_update_keymap(led_state); -} - -__attribute__((weak)) -bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { - return true; -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - if (!process_record_keymap(keycode, record)) { - return false; - } - - switch (keycode) { - uint16_t kc; -#ifdef LAYER_FN - static bool fn_lock = false; - - case FNLK: - if (record->event.pressed) { - fn_lock = !IS_LAYER_ON(L_FN); // Fn layer will be toggled after this - } - break; - - case FN_FNLK: - if (record->event.pressed && record->tap.count == TAPPING_TOGGLE) { - fn_lock = !IS_LAYER_ON(L_FN); - } - break; -#endif - - case KC_ESC: - if (record->event.pressed) { -#ifdef LAYER_NUMPAD // Disable Numpad layer before Fn layer - if (IS_LAYER_ON(L_NUMPAD)) { - layer_off(L_NUMPAD); - return false; - } -#endif -#ifdef LAYER_FN - if (IS_LAYER_ON(L_FN) && fn_lock) { - layer_off(L_FN); - return fn_lock = false; - } -#endif - } - break; - - case CLEAR: - if (record->event.pressed) { - CLEAN_MODS( - SEND_STRING(SS_LCTL("a") SS_TAP(X_DELETE)); - ) - } - break; - - case DST_P_R: - kc = (get_mods() & DST_MOD_MASK) ? DST_REM : DST_PRV; - CLEAN_MODS( - (record->event.pressed ? register_code16 : unregister_code16)(kc); - ) - break; - - case DST_N_A: - kc = (get_mods() & DST_MOD_MASK) ? DST_ADD : DST_NXT; - CLEAN_MODS( - (record->event.pressed ? register_code16 : unregister_code16)(kc); - ) - break; - } - - return true; -} diff --git a/users/konstantin/konstantin.h b/users/konstantin/konstantin.h deleted file mode 100644 index 7da1dbfd21..0000000000 --- a/users/konstantin/konstantin.h +++ /dev/null @@ -1,104 +0,0 @@ -/* Copyright 2019-2021 Konstantin Đorđević - * - * 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 . - */ - -#pragma once - -#include "quantum.h" -#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE) - #include "rgb.h" -#endif -#ifdef TAP_DANCE_ENABLE - #include "tap_dance.h" -#endif -#if defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) - #include "unicode.h" -#endif - -#ifdef LAYER_FN - #define FN MO(L_FN) - #define FNLK TG(L_FN) - #define FN_CAPS LT(L_FN, KC_CAPS) - #define FN_ESC LT(L_FN, KC_ESC) - #define FN_FNLK TT(L_FN) -#endif - -#ifdef LAYER_NUMPAD - #define NUMPAD TG(L_NUMPAD) -#endif - -#define BREAK LCTL(KC_PAUS) -#define SYSRQ LALT(KC_PSCR) - -#define MV_UP LCTL(KC_UP) -#define MV_DOWN LCTL(KC_DOWN) -#define MV_LEFT LCTL(KC_LEFT) -#define MV_RGHT LCTL(KC_RGHT) -#define TOP LCTL(KC_HOME) -#define BOTTOM LCTL(KC_END) -#define TAB_PRV LCTL(KC_PGUP) -#define TAB_NXT LCTL(KC_PGDN) -#define DEL_PRV LCTL(KC_BSPC) -#define DEL_NXT LCTL(KC_DEL) - -#define DST_ADD LCTL(LGUI(KC_D)) -#define DST_REM LCTL(LGUI(KC_F4)) -#define DST_PRV LCTL(LGUI(KC_LEFT)) -#define DST_NXT LCTL(LGUI(KC_RGHT)) -#ifndef DST_MOD_MASK - #define DST_MOD_MASK MOD_MASK_SHIFT -#endif - -#define LCT_CPS LCTL_T(KC_CAPS) -#define RSF_SLS RSFT_T(KC_SLSH) - -// Clear mods, perform action, restore mods -#define CLEAN_MODS(action) { \ - uint8_t mods = get_mods(); \ - clear_mods(); \ - action; \ - set_mods(mods); \ - } - -enum layers_user { - L_BASE, -#ifdef LAYER_FN - L_FN, -#endif -#ifdef LAYER_NUMPAD - L_NUMPAD, -#endif - - LAYERS_KEYMAP, -}; - -enum keycodes_user { - CLEAR = SAFE_RANGE, - DST_P_R, - DST_N_A, - - RANGE_KEYMAP, -}; - -void keyboard_pre_init_keymap(void); -void eeconfig_init_keymap(void); -void keyboard_post_init_keymap(void); - -layer_state_t layer_state_set_keymap(layer_state_t state); - -void led_set_keymap(uint8_t usb_led); -bool led_update_keymap(led_t led_state); - -bool process_record_keymap(uint16_t keycode, keyrecord_t *record); diff --git a/users/konstantin/post_config.h b/users/konstantin/post_config.h deleted file mode 100644 index 3199b2124f..0000000000 --- a/users/konstantin/post_config.h +++ /dev/null @@ -1,22 +0,0 @@ -/* Copyright 2021 Konstantin Đorđević - * - * 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 . - */ - -#pragma once - -// VIA -#ifndef DYNAMIC_KEYMAP_LAYER_COUNT - #define DYNAMIC_KEYMAP_LAYER_COUNT 3 -#endif diff --git a/users/konstantin/rgb.c b/users/konstantin/rgb.c deleted file mode 100644 index 2eeef829b0..0000000000 --- a/users/konstantin/rgb.c +++ /dev/null @@ -1,42 +0,0 @@ -/* Copyright 2019-2021 Konstantin Đorđević - * - * 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 . - */ - -#include "rgb.h" - -#ifdef RGBLIGHT_EFFECT_BREATHING -const uint8_t PROGMEM RGBLED_BREATHING_INTERVALS[] = { 20, 30, 5, 10 }; -#endif - -#ifdef RGBLIGHT_EFFECT_RAINBOW_MOOD -const uint8_t PROGMEM RGBLED_RAINBOW_MOOD_INTERVALS[] = { 20, 50, 100 }; -#endif - -#ifdef RGBLIGHT_EFFECT_RAINBOW_SWIRL -const uint8_t PROGMEM RGBLED_RAINBOW_SWIRL_INTERVALS[] = { 20, 50, 100 }; -#endif - -#ifdef RGBLIGHT_EFFECT_SNAKE -const uint8_t PROGMEM RGBLED_SNAKE_INTERVALS[] = { 20, 50, 100 }; -#endif - -#ifdef RGBLIGHT_EFFECT_KNIGHT -const uint8_t PROGMEM RGBLED_KNIGHT_INTERVALS[] = { 20, 50, 100 }; -#endif - -const HSV godspeed_blue = { GODSPEED_BLUE }; -const HSV godspeed_yellow = { GODSPEED_YELLOW }; -const HSV modern_dolch_cyan = { MODERN_DOLCH_CYAN }; -const HSV modern_dolch_red = { MODERN_DOLCH_RED }; diff --git a/users/konstantin/rgb.h b/users/konstantin/rgb.h deleted file mode 100644 index 3425dcb069..0000000000 --- a/users/konstantin/rgb.h +++ /dev/null @@ -1,29 +0,0 @@ -/* Copyright 2019-2021 Konstantin Đorđević - * - * 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 . - */ - -#pragma once - -#include "quantum.h" - -#define GODSPEED_BLUE 198, 68, 255 -#define GODSPEED_YELLOW 27, 153, 255 -#define MODERN_DOLCH_CYAN 110, 255, 108 -#define MODERN_DOLCH_RED 253, 255, 108 - -extern const HSV godspeed_blue; -extern const HSV godspeed_yellow; -extern const HSV modern_dolch_cyan; -extern const HSV modern_dolch_red; diff --git a/users/konstantin/rules.mk b/users/konstantin/rules.mk deleted file mode 100644 index 6fe3a8ad83..0000000000 --- a/users/konstantin/rules.mk +++ /dev/null @@ -1,18 +0,0 @@ -SRC += konstantin.c -ifeq ($(strip $(RGBLIGHT_ENABLE)), yes) - SRC += rgb.c -endif -RGB_MATRIX_ENABLE ?= no -ifneq ($(strip $(RGB_MATRIX_ENABLE)), no) - SRC += rgb.c -endif -ifeq ($(strip $(TAP_DANCE_ENABLE)), yes) - SRC += tap_dance.c -endif -ifneq (,$(filter yes,$(UNICODE_ENABLE) $(UNICODEMAP_ENABLE))) - SRC += unicode.c -endif - -ifneq ($(PLATFORM),CHIBIOS) - LTO_ENABLE = yes -endif diff --git a/users/konstantin/tap_dance.c b/users/konstantin/tap_dance.c deleted file mode 100644 index 38d00bf56c..0000000000 --- a/users/konstantin/tap_dance.c +++ /dev/null @@ -1,135 +0,0 @@ -/* Copyright 2019-2021 Konstantin Đorđević - * - * 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 . - */ - -#include "tap_dance.h" -#include "konstantin.h" - -#define ACTION_TAP_DANCE_DOUBLE_MOD(mod1, mod2) { \ - .fn = { td_double_mod_each, NULL, td_double_mod_reset }, \ - .user_data = &(tap_dance_pair_t){ mod1, mod2 }, \ - } - -void td_double_mod_each(tap_dance_state_t *state, void *user_data) { - tap_dance_pair_t *data = (tap_dance_pair_t *)user_data; - - // Single tap → mod1, double tap → mod2, triple tap etc. → mod1+mod2 - if (state->count == 1 || state->count == 3) { - register_code(data->kc1); - } else if (state->count == 2) { - unregister_code(data->kc1); - register_code(data->kc2); - } - // Prevent tap dance from sending the mods as weak mods - state->weak_mods &= ~(MOD_BIT(data->kc1) | MOD_BIT(data->kc2)); -} - -void td_double_mod_reset(tap_dance_state_t *state, void *user_data) { - tap_dance_pair_t *data = (tap_dance_pair_t *)user_data; - - if (state->count == 1 || state->count >= 3) { - unregister_code(data->kc1); - } - if (state->count >= 2) { - unregister_code(data->kc2); - } -} - -#define ACTION_TAP_DANCE_MOD_LAYER(mod, layer) { \ - .fn = { td_mod_layer_each, NULL, td_mod_layer_reset }, \ - .user_data = &(tap_dance_dual_role_t){ mod, layer }, \ - } - -void td_mod_layer_each(tap_dance_state_t *state, void *user_data) { - tap_dance_dual_role_t *data = (tap_dance_dual_role_t *)user_data; - - // Single tap → mod, double tap → layer, triple tap etc. → mod+layer - if (state->count == 1 || state->count == 3) { - register_code(data->kc); - } else if (state->count == 2) { - unregister_code(data->kc); - // Prevent tap dance from sending the mod as a weak mod - state->weak_mods &= ~MOD_BIT(data->kc); - layer_on(data->layer); - } -} - -void td_mod_layer_reset(tap_dance_state_t *state, void *user_data) { - tap_dance_dual_role_t *data = (tap_dance_dual_role_t *)user_data; - - if (state->count == 1 || state->count >= 3) { - unregister_code(data->kc); - } - if (state->count >= 2) { - layer_off(data->layer); - } -} - -#define ACTION_TAP_DANCE_LAYER_MOD(layer, mod) { \ - .fn = { td_layer_mod_each, NULL, td_layer_mod_reset }, \ - .user_data = &(tap_dance_layer_mod_t){ layer, mod, 0, 0 }, \ - } - -typedef struct { - uint8_t layer; - uint16_t kc; - bool layer_on; // Layer state when tap dance started - bool started; -} tap_dance_layer_mod_t; - -void td_layer_mod_each(tap_dance_state_t *state, void *user_data) { - tap_dance_layer_mod_t *data = (tap_dance_layer_mod_t *)user_data; - if (!data->started) { - data->layer_on = IS_LAYER_ON(data->layer); - data->started = true; - } - - // Single tap → layer, double tap → mod, triple tap etc. → layer+mod - if (state->count == 1 || state->count == 3) { - layer_on(data->layer); - } else if (state->count == 2) { - if (!data->layer_on) { - layer_off(data->layer); - } - register_code(data->kc); - } -} - -void td_layer_mod_reset(tap_dance_state_t *state, void *user_data) { - tap_dance_layer_mod_t *data = (tap_dance_layer_mod_t *)user_data; - - if ((state->count == 1 || state->count >= 3) && !data->layer_on) { - layer_off(data->layer); - } - if (state->count >= 2) { - unregister_code(data->kc); - } - - data->started = false; -} - -tap_dance_action_t tap_dance_actions[] = { - [TD_DST_A_R] = ACTION_TAP_DANCE_DOUBLE(DST_ADD, DST_REM), - - [TD_RAL_RGU] = ACTION_TAP_DANCE_DOUBLE_MOD(KC_RALT, KC_RGUI), - [TD_RCT_RSF] = ACTION_TAP_DANCE_DOUBLE_MOD(KC_RCTL, KC_RSFT), - [TD_RSF_RCT] = ACTION_TAP_DANCE_DOUBLE_MOD(KC_RSFT, KC_RCTL), - -#ifdef LAYER_FN - [TD_LSFT_FN] = ACTION_TAP_DANCE_MOD_LAYER(KC_LSFT, L_FN), - [TD_RCTL_FN] = ACTION_TAP_DANCE_MOD_LAYER(KC_RCTL, L_FN), - [TD_FN_RCTL] = ACTION_TAP_DANCE_LAYER_MOD(L_FN, KC_RCTL), -#endif -}; diff --git a/users/konstantin/tap_dance.h b/users/konstantin/tap_dance.h deleted file mode 100644 index 047662a8e9..0000000000 --- a/users/konstantin/tap_dance.h +++ /dev/null @@ -1,45 +0,0 @@ -/* Copyright 2019-2021 Konstantin Đorđević - * - * 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 . - */ - -#pragma once - -#include "quantum.h" - -#define DST_A_R TD(TD_DST_A_R) - -#define RAL_RGU TD(TD_RAL_RGU) -#define RCT_RSF TD(TD_RCT_RSF) -#define RSF_RCT TD(TD_RSF_RCT) - -#ifdef LAYER_FN - #define LSFT_FN TD(TD_LSFT_FN) - #define RCTL_FN TD(TD_RCTL_FN) - #define FN_RCTL TD(TD_FN_RCTL) -#endif - -enum tap_dance { - TD_DST_A_R, - - TD_RAL_RGU, - TD_RCT_RSF, - TD_RSF_RCT, - -#ifdef LAYER_FN - TD_LSFT_FN, - TD_RCTL_FN, - TD_FN_RCTL, -#endif -}; diff --git a/users/konstantin/unicode.c b/users/konstantin/unicode.c deleted file mode 100644 index ed92b818b0..0000000000 --- a/users/konstantin/unicode.c +++ /dev/null @@ -1,23 +0,0 @@ -/* Copyright 2019-2021 Konstantin Đorđević - * - * 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 . - */ - -#include "unicode.h" - -#ifdef UNICODEMAP_ENABLE -const uint32_t unicode_map[] PROGMEM = { - FOREACH_UNICODE(UCM_ENTRY) -}; -#endif diff --git a/users/konstantin/unicode.h b/users/konstantin/unicode.h deleted file mode 100644 index 472f48a942..0000000000 --- a/users/konstantin/unicode.h +++ /dev/null @@ -1,50 +0,0 @@ -/* Copyright 2019-2021 Konstantin Đorđević - * - * 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 . - */ - -#pragma once - -#include "quantum.h" - -#define FOREACH_UNICODE(M) \ - M(COMMA, 0x002C) \ - M(L_PAREN, 0x0028) \ - M(R_PAREN, 0x0029) \ - M(EQUALS, 0x003D) \ - M(TIMES, 0x00D7) \ - M(DIVIDE, 0x00F7) \ - M(MINUS, 0x2212) - -#define UC_KEYCODE(name, code) name = UC(code), - -#define UCM_NAME(name, code) UCM_ ## name, -#define UCM_ENTRY(name, code) [UCM_ ## name] = code, -#define UCM_KEYCODE(name, code) name = UM(UCM_ ## name), - -#if defined(UNICODE_ENABLE) -enum unicode_keycodes { - FOREACH_UNICODE(UC_KEYCODE) -}; -#elif defined(UNICODEMAP_ENABLE) -enum unicode_names { - FOREACH_UNICODE(UCM_NAME) -}; - -extern const uint32_t unicode_map[] PROGMEM; - -enum unicode_keycodes { - FOREACH_UNICODE(UCM_KEYCODE) -}; -#endif diff --git a/users/kuatsure/kuatsure.c b/users/kuatsure/kuatsure.c deleted file mode 100644 index 37adc337c1..0000000000 --- a/users/kuatsure/kuatsure.c +++ /dev/null @@ -1,122 +0,0 @@ -#include "kuatsure.h" -#include "version.h" - -tap_dance_action_t tap_dance_actions[] = { - [TD_LBRC] = ACTION_TAP_DANCE_DOUBLE(KC_LBRC, KC_LT), - [TD_RBRC] = ACTION_TAP_DANCE_DOUBLE(KC_RBRC, KC_GT), - [TD_SLSH] = ACTION_TAP_DANCE_DOUBLE(KC_SLSH, KC_BSLS), -}; - -__attribute__ ((weak)) -bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { - return true; -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case KB_MAKE: - if (!record->event.pressed) { - SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP SS_TAP(X_ENTER)); - } - return false; - break; - - case KB_VRSN: - if (!record->event.pressed) { - SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); - } - return false; - break; - - case KB_FLSH: - if (!record->event.pressed) { - SEND_STRING( - "qmk flash -kb " QMK_KEYBOARD " -km " QMK_KEYMAP - ); - - reset_keyboard(); - } - return false; - break; - } - - return process_record_keymap(keycode, record); -} - -void tmux_prefix(void) { - tap_code16(LCTL(KC_SPC)); -} - -void tmux_pane_zoom(void) { - tmux_prefix(); - - SEND_STRING("z"); -} - -void leader_end_user(void) { - // Stop music and lock computer via alfred - if (leader_sequence_one_key(KC_H)) { - SEND_STRING(SS_LGUI(" ") SS_TAP(X_LGUI) "afk" SS_TAP(X_ENTER)); - } - - // Stop music and lock computer via alfred - if (leader_sequence_two_keys(KC_H, KC_H)) { - SEND_STRING(SS_LGUI(" ") SS_TAP(X_LGUI) "afk" SS_TAP(X_ENTER) SS_TAP(X_MEDIA_PLAY_PAUSE)); - } - - // Whole Screen Shot - if (leader_sequence_one_key(KC_A)) { - SEND_STRING(SS_LGUI(SS_LSFT("3"))); - } - - // Selective Screen Shot - if (leader_sequence_one_key(KC_S)) { - SEND_STRING(SS_LGUI(SS_LSFT("4"))); - } - - // TMUX - shift to pane 1 and zoom - if (leader_sequence_one_key(KC_J)) { - tmux_prefix(); - SEND_STRING("q1"); - tmux_pane_zoom(); - } - - // TMUX - shift to first window - if (leader_sequence_two_keys(KC_J, KC_J)) { - tmux_prefix(); - SEND_STRING("1"); - } - - // TMUX - shift to pane 2 and zoom - if (leader_sequence_one_key(KC_K)) { - tmux_prefix(); - SEND_STRING("q2"); - tmux_pane_zoom(); - } - - // TMUX - shift to second window - if (leader_sequence_two_keys(KC_K, KC_K)) { - tmux_prefix(); - SEND_STRING("2"); - } - - // TMUX - shift to pane 3 and zoom - if (leader_sequence_one_key(KC_L)) { - tmux_prefix(); - SEND_STRING("q3"); - tmux_pane_zoom(); - } - - // TMUX - shift to third window - if (leader_sequence_two_keys(KC_L, KC_L)) { - tmux_prefix(); - SEND_STRING("3"); - } - - // TMUX - shift to last pane and zoom - if (leader_sequence_one_key(KC_SEMICOLON)) { - tmux_prefix(); - SEND_STRING(";"); - tmux_pane_zoom(); - } -} diff --git a/users/kuatsure/kuatsure.h b/users/kuatsure/kuatsure.h deleted file mode 100644 index ca2c91c9bc..0000000000 --- a/users/kuatsure/kuatsure.h +++ /dev/null @@ -1,65 +0,0 @@ -#ifndef KUATSURE -#define KUATSURE - -#include "quantum.h" - -enum kuatsure_keycodes { - KB_MAKE = SAFE_RANGE, - KB_FLSH, - KB_VRSN, - - USER_SAFE_RANGE, -}; - -#define ONESHOT_TAP_TOGGLE 2 -#define KT_LSFT OSM(MOD_LSFT) - -enum { - TD_LBRC = 0, - TD_RBRC, - TD_SLSH -}; - -#define KT_LBRC TD(TD_LBRC) -#define KT_RBRC TD(TD_RBRC) -#define KT_SLSH TD(TD_SLSH) - -#define TAPPING_TERM 200 - -#define LEADER_TIMEOUT 250 -#define LEADER_PER_KEY_TIMING - -void tmux_prefix(void); -void tmux_pane_zoom(void); - -#define KT_CESC CTL_T(KC_ESC) -#define KT_MTAB MEH_T(KC_TAB) - -#undef LEADER_TIMEOUT -#define LEADER_TIMEOUT 300 - -#define _________________NUMBER_L1_________________ KC_1, KC_2, KC_3, KC_4, KC_5 -#define _________________NUMBER_R1_________________ KC_6, KC_7, KC_8, KC_9, KC_0 - -#define _________________SYMBOL_L1_________________ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC -#define _________________SYMBOL_R1_________________ KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN - -#define _________________QWERTY_L1_________________ KC_Q, KC_W, KC_E, KC_R, KC_T -#define _________________QWERTY_L2_________________ KC_A, KC_S, KC_D, KC_F, KC_G -#define _________________QWERTY_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_B - -#define _________________QWERTY_R1_________________ KC_Y, KC_U, KC_I, KC_O, KC_P -#define _________________QWERTY_R2_________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN -#define _________________QWERTY_R3_________________ KC_N, KC_M, KC_COMM, KC_DOT, KT_SLSH -#define _________________QWERTY_R3_M_______________ KC_N, KC_M, KC_COMM, KC_DOT, KC_UP - -#define ____________FUNCTION_1____________ KC_F1, KC_F2, KC_F3, KC_F4 -#define ____________FUNCTION_2____________ KC_F5, KC_F6, KC_F7, KC_F8 -#define ____________FUNCTION_3____________ KC_F9, KC_F10, KC_F11, KC_F12 - -#define ___SQBRACKETS___ KT_LBRC, KT_RBRC -#define _____PARENS_____ KC_LPRN, KC_RPRN -#define ____CRBRACES____ KC_LCBR, KC_RCBR -#define ___ANBRACKETS___ KC_LT, KC_GT - -#endif diff --git a/users/kuatsure/readme.md b/users/kuatsure/readme.md deleted file mode 100644 index b6d10224f8..0000000000 --- a/users/kuatsure/readme.md +++ /dev/null @@ -1,14 +0,0 @@ -Copyright 2018 Jarrett Drouillard jarrett@thestyl.us @kuatsure - -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 . diff --git a/users/kuatsure/rules.mk b/users/kuatsure/rules.mk deleted file mode 100644 index ed7e929054..0000000000 --- a/users/kuatsure/rules.mk +++ /dev/null @@ -1,4 +0,0 @@ -CONSOLE_ENABLE = no -TAP_DANCE_ENABLE = yes - -SRC += kuatsure.c diff --git a/users/kuchosauronad0/.gitignore b/users/kuchosauronad0/.gitignore deleted file mode 100644 index 6878d13e7c..0000000000 --- a/users/kuchosauronad0/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -secrets.c -secrets.h -kuchosauronad0_song_list.h diff --git a/users/kuchosauronad0/combo.c b/users/kuchosauronad0/combo.c deleted file mode 100644 index 0a58e02770..0000000000 --- a/users/kuchosauronad0/combo.c +++ /dev/null @@ -1,27 +0,0 @@ -#include "combo.h" - -void process_combo_event(uint16_t combo_index, bool pressed){ - switch(combo_index) { - case ZV_COPY: - if (pressed) { - tap_code16(LCTL(KC_C)); - } - break; - case XV_CUT: - if (pressed) { - tap_code16(LCTL(KC_X)); - } - break; - - case CV_PASTE: - if (pressed) { - tap_code16(LCTL(KC_V)); - } - break; - case QP_SLEEP: - if (pressed) { - tap_code16(KC_SYSTEM_SLEEP); - } - break; - } -} diff --git a/users/kuchosauronad0/combo.h b/users/kuchosauronad0/combo.h deleted file mode 100644 index 6fb3eaf58c..0000000000 --- a/users/kuchosauronad0/combo.h +++ /dev/null @@ -1,20 +0,0 @@ -#pragma once -#include "quantum.h" -enum combo_events { - ZV_COPY, - XV_CUT, - CV_PASTE, - QP_SLEEP -}; - -const uint16_t PROGMEM copy_combo[] = {KC_Z, KC_V, COMBO_END}; -const uint16_t PROGMEM cut_combo[] = {KC_X, KC_V, COMBO_END}; -const uint16_t PROGMEM paste_combo[] = {KC_C, KC_V, COMBO_END}; -const uint16_t PROGMEM sleep_combo[] = {KC_Q, KC_P, COMBO_END}; - -combo_t key_combos[] = { - [ZV_COPY] = COMBO_ACTION(copy_combo), - [XV_CUT] = COMBO_ACTION(cut_combo), - [CV_PASTE] = COMBO_ACTION(paste_combo), - [QP_SLEEP] = COMBO_ACTION(sleep_combo), -}; diff --git a/users/kuchosauronad0/config.h b/users/kuchosauronad0/config.h deleted file mode 100644 index 58ef7a20f8..0000000000 --- a/users/kuchosauronad0/config.h +++ /dev/null @@ -1,88 +0,0 @@ -#pragma once - -#ifdef AUDIO_ENABLE -# define DEFAULT_LAYER_SONGS \ - { SONG(QWERTY_SOUND), SONG(COLEMAK_SOUND), SONG(DVORAK_SOUND), SONG(PLOVER_SOUND) } -# define AUDIO_CLICKY -# define STARTUP_SONG SONG(RICK_ROLL) -# define GOODBYE_SONG SONG(SONIC_RING) -# define AUDIO_CLICKY_FREQ_RANDOMNESS 1.5f -# ifndef __arm__ -# undef NOTE_REST -# define NOTE_REST 1.00f -# endif // !__arm__ -# define UNICODE_SONG_MAC SONG(RICK_ROLL) -# define UNICODE_SONG_LNX SONG(RICK_ROLL) -# define UNICODE_SONG_WIN SONG(RICK_ROLL) -# define UNICODE_SONG_BSD SONG(RICK_ROLL) -# define UNICODE_SONG_WINC SONG(RICK_ROLL) -#endif // !AUDIO_ENABLE - -#ifdef RGBLIGHT_ENABLE -# undef RGBLIGHT_SLEEP -#undef RGBLIGHT_EFFECT_BREATHING -#undef RGBLIGHT_EFFECT_RAINBOW_MOOD -#undef RGBLIGHT_EFFECT_RAINBOW_SWIRL -#undef RGBLIGHT_EFFECT_SNAKE -#undef RGBLIGHT_EFFECT_KNIGHT -#undef RGBLIGHT_EFFECT_CHRISTMAS -#undef RGBLIGHT_EFFECT_STATIC_GRADIENT -#undef RGBLIGHT_EFFECT_RGB_TEST -#undef RGBLIGHT_EFFECT_ALTERNATING -#undef RGBLIGHT_EFFECT_TWINKLE -# define RGBLIGHT_HUE_STEP 16 -# define RGBLIGHT_SAT_STEP 16 -# define RGBLIGHT_VAL_STEP 16 -# define RGBLIGHT_LIMIT_VAL 255 -# define RGBLIGHT_EFFECT_BREATHING -# define RGBLIGHT_EFFECT_STATIC_GRADIENT -//# define RGBLIGHT_EFFECT_KNIGHT -//# define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2 -//# define RGBLIGHT_EFFECT_SNAKE -//# define RGBLIGHT_EFFECT_SNAKE_LENGTH 2 -#endif // !RGBLIGHT_ENABLE - -#ifndef ONESHOT_TAP_TOGGLE -# define ONESHOT_TAP_TOGGLE 2 -#endif // !ONESHOT_TAP_TOGGLE - -#ifndef ONESHOT_TIMEOUT -# define ONESHOT_TIMEOUT 3000 -#endif// !ONESHOT_TIMEOUT - -#if defined(LEADER_ENABLE) -# define LEADER_PER_KEY_TIMING -# define LEADER_TIMEOUT 250 -#endif // !LEADER_ENABLE - -#if defined(COMBO_ENABLE) -# define COMBO_TERM 150 -#endif // !COMBO_ENABLE - -#if defined(NKRO_ENABLE) -# define FORCE_NKRO -#endif // !NKRO_ENABLE - -#undef PERMISSIVE_HOLD -//#define QUICK_TAP_TERM 0 -//#define RETRO_TAPPING - -#ifndef TAPPING_TOGGLE -# define TAPPING_TOGGLE 1 -#endif - -#ifdef TAPPING_TERM -# undef TAPPING_TERM -#endif // !TAPPING_TERM -#if defined(KEYBOARD_handwired_kuchosauronad0_planckenstein) -# define TAPPING_TERM 185 -#elif defined(KEYBOARD_c39) -# define TAPPING_TERM 200 -#else -# define TAPPING_TERM 180 -#endif - - -#define TAP_CODE_DELAY 5 - -#define MACRO_TIMER 5 diff --git a/users/kuchosauronad0/encoder.c b/users/kuchosauronad0/encoder.c deleted file mode 100644 index 2578ddd873..0000000000 --- a/users/kuchosauronad0/encoder.c +++ /dev/null @@ -1,64 +0,0 @@ -#include "encoder.h" -bool encoder_update_user(uint8_t index, bool clockwise) { - static uint16_t kc; - uint8_t temp_mod = get_mods(); - if (index == 0) { /* first encoder */ - if (clockwise) { - //if (temp_mod & MOD_BIT(KC_HYPR)){ // TODO: not how this works, only registers CTRL - if ((temp_mod & MOD_MASK_CTRL) && (temp_mod & MOD_MASK_SHIFT) && (temp_mod & MOD_MASK_ALT) && (temp_mod & MOD_MASK_GUI)) { // HYPER - kc = encoder_actions[0][8]; - } else if ( (temp_mod & MOD_MASK_SHIFT) && (temp_mod & MOD_MASK_ALT) ) { // ALT+SHIFT - kc = encoder_actions[0][7]; - } else if ( (temp_mod & MOD_MASK_SHIFT) && (temp_mod & MOD_MASK_CTRL) ) { // CTRL+SHIFT - kc = encoder_actions[0][6]; - } else if ( (temp_mod & MOD_MASK_CTRL) && (temp_mod & MOD_MASK_ALT) ) { // CTRL+ALT - kc = encoder_actions[0][5]; - } else if (temp_mod & MOD_MASK_GUI) { // GUI - kc = encoder_actions[0][4]; - } else if (temp_mod & MOD_MASK_SHIFT) { // SHIFT - kc = encoder_actions[0][3]; - } else if (temp_mod & MOD_MASK_ALT) { // ALT - kc = encoder_actions[0][2]; - } else if (temp_mod & MOD_MASK_CTRL) { // CTRL - kc = encoder_actions[0][1]; - } else { // None - kc = encoder_actions[0][0]; - } - } else { // Counter Clockwise - if ((temp_mod & MOD_MASK_CTRL) && (temp_mod & MOD_MASK_SHIFT) && (temp_mod & MOD_MASK_ALT) && (temp_mod & MOD_MASK_GUI)) { // HYPER - kc = encoder_actions[1][8]; - } else if ( (temp_mod & MOD_MASK_SHIFT) && (temp_mod & MOD_MASK_ALT) ) { // ALT+SHIFT - kc = encoder_actions[1][7]; - } else if ( (temp_mod & MOD_MASK_SHIFT) && (temp_mod & MOD_MASK_CTRL) ) { // CTRL+SHIFT - kc = encoder_actions[1][6]; - } else if ( (temp_mod & MOD_MASK_CTRL) && (temp_mod & MOD_MASK_ALT) ) { // CTRL+ALT - kc = encoder_actions[1][5]; - } else if (temp_mod & MOD_MASK_GUI) { // GUI - kc = encoder_actions[1][4]; - } else if (temp_mod & MOD_MASK_SHIFT) { // SHIFT - kc = encoder_actions[1][3]; - } else if (temp_mod & MOD_MASK_ALT) { // ALT - kc = encoder_actions[1][2]; - } else if (temp_mod & MOD_MASK_CTRL) { // CTRL - kc = encoder_actions[1][1]; - } else { // None - kc = encoder_actions[1][0]; - } - } - clear_mods(); - tap_code16(kc); - set_mods(temp_mod); - } else if (index == 1){ // second Encoder - if (clockwise) { - tap_code(KC_0); - } else{ - tap_code(KC_1); - } - } - return true; -} -const uint16_t PROGMEM encoder_actions[][9] = { -// None CTRL ALT SHIFT GUI CTRL+ALT CTRL+SHFT ALT+SHFT HYPER - { KC_PGDN, KC_DOWN, KC_AUDIO_VOL_UP, KC_END, KC_WWW_FORWARD, KC_AUDIO_MUTE, KC_RIGHT, LSFT(KC_TAB), KC_MEDIA_NEXT_TRACK}, - { KC_PGUP, KC_UP, KC_AUDIO_VOL_DOWN, KC_HOME, KC_WWW_BACK, KC_MEDIA_PLAY_PAUSE, KC_LEFT, KC_TAB, KC_MEDIA_PREV_TRACK} -}; diff --git a/users/kuchosauronad0/encoder.h b/users/kuchosauronad0/encoder.h deleted file mode 100644 index 7b05aa4911..0000000000 --- a/users/kuchosauronad0/encoder.h +++ /dev/null @@ -1,4 +0,0 @@ -#pragma once -#include "quantum.h" -const uint16_t PROGMEM encoder_actions[][9]; -bool encoder_update_user(uint8_t index, bool clockwise); diff --git a/users/kuchosauronad0/kuchosauronad0.c b/users/kuchosauronad0/kuchosauronad0.c deleted file mode 100644 index 3fc66d809b..0000000000 --- a/users/kuchosauronad0/kuchosauronad0.c +++ /dev/null @@ -1,200 +0,0 @@ -/* -Copyright 2019 Andre Poley - -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 . -*/ -#include "quantum.h" -#include "kuchosauronad0.h" - -userspace_config_t userspace_config; -#if (defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE)) -# define KUCHOSAURONAD0_UNICODE_MODE UNICODE_MODE_WINCOMPOSE -#else -# define KUCHOSAURONAD0_UNICODE_MODE 2 // set to 2 for UNICODE_MODE_WINDOWS, set to 4 for UNICODE_MODE_WINCOMPOSE -#endif - - -// Add reconfigurable functions here, for keymap customization -// This allows for a global, userspace functions, and continued -// customization of the keymap. Use _keymap instead of _user -// functions in the keymaps -__attribute__ ((weak)) -void matrix_init_keymap(void) {} - -// Call user matrix init, set default RGB colors and then -// call the keymap's init function -void matrix_init_user(void) { - userspace_config.raw = eeconfig_read_user(); - - #ifdef BOOTLOADER_CATERINA - DDRD &= ~(1<<5); - PORTD &= ~(1<<5); - - DDRB &= ~(1<<0); - PORTB &= ~(1<<0); - #endif - - #if (defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE)) - set_unicode_input_mode(KUCHOSAURONAD0_UNICODE_MODE); - get_unicode_input_mode(); - #endif //UNICODE_ENABLE - matrix_init_keymap(); -} - -__attribute__((weak)) -void keyboard_post_init_keymap(void){ } - -void keyboard_post_init_user(void){ -#ifdef RGBLIGHT_ENABLE - keyboard_post_init_rgb(); -#endif - keyboard_post_init_keymap(); -} - -__attribute__((weak)) bool shutdown_keymap(bool jump_to_bootloader) { - return true; -} -bool shutdown_user(bool jump_to_bootloader) { - if (!shutdown_keymap(jump_to_bootloader)) { - return false; - } - #ifdef RGBLIGHT_ENABLE - rgblight_enable_noeeprom(); - rgblight_mode_noeeprom(1); - rgblight_setrgb(RGB_TEAL); - #endif // RGBLIGHT_ENABLE - #ifdef RGB_MATRIX_ENABLE - // uint16_t timer_start = timer_read(); - // rgb_matrix_set_color_all( 0xFF, 0x00, 0x00 ); - // while(timer_elapsed(timer_start) < 250) { wait_ms(1); } - #endif //RGB_MATRIX_ENABLE - return true; -} - -__attribute__ ((weak)) -void suspend_power_down_keymap(void) {} - -void suspend_power_down_user(void) { - suspend_power_down_keymap(); -} - -__attribute__ ((weak)) -void suspend_wakeup_init_keymap(void) {} - -void suspend_wakeup_init_user(void) { - suspend_wakeup_init_keymap(); -} - - -__attribute__ ((weak)) -void matrix_scan_keymap(void) {} - -__attribute__ ((weak)) -void matrix_scan_user(void){ - static bool has_ran_yet; - if (!has_ran_yet) { - has_ran_yet = true; - startup_user(); - } - -#ifdef TAP_DANCE_ENABLE // Run Diablo 3 macro checking code. -// run_diablo_macro_check(); -#endif // !TAP_DANCE_ENABLE - -#ifdef RGBLIGHT_ENABLE - matrix_scan_rgb(); -#endif // !RGBLIGHT_ENABLE - - matrix_scan_keymap(); -} - -__attribute__ ((weak)) -layer_state_t layer_state_set_keymap (layer_state_t state) { - return state; -} - -// on layer change, no matter where the change was initiated -// Then runs keymap's layer change check -layer_state_t layer_state_set_user(layer_state_t state) { - state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST); -#ifdef RGBLIGHT_ENABLE - state = layer_state_set_rgb(state); -#endif // RGBLIGHT_ENABLE - return layer_state_set_keymap (state); -} - - -__attribute__ ((weak)) -layer_state_t default_layer_state_set_keymap (layer_state_t state) { - return state; -} - -// Runs state check and changes underglow color and animation -layer_state_t default_layer_state_set_user(layer_state_t state) { - state = default_layer_state_set_keymap(state); -#if 0 -#ifdef RGBLIGHT_ENABLE - state = default_layer_state_set_rgb(state); -#endif // RGBLIGHT_ENABLE -#endif - return state; -} - -__attribute__ ((weak)) -void led_set_keymap(uint8_t usb_led) {} - -// Any custom LED code goes here. -// So far, I only have keyboard specific code, -// So nothing goes here. -void led_set_user(uint8_t usb_led) { - led_set_keymap(usb_led); -} -__attribute__ ((weak)) -void eeconfig_init_keymap(void) {} - -void eeconfig_init_user(void) { - userspace_config.raw = 0; - userspace_config.rgb_layer_change = true; - eeconfig_update_user(userspace_config.raw); - #if (defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE)) - set_unicode_input_mode(KUCHOSAURONAD0_UNICODE_MODE); - get_unicode_input_mode(); - #else - eeprom_update_byte(EECONFIG_UNICODEMODE, KUCHOSAURONAD0_UNICODE_MODE); - #endif - eeconfig_init_keymap(); - keyboard_init(); -} - -// TMUX stuff -void tmux_prefix(void) { - register_code(KC_LCTL); - tap_code(KC_B); - unregister_code(KC_LCTL); -} - - -void tmux_pane_last(void) { - tmux_prefix(); - tap_code(KC_SCLN); -} - -void tmux_pane_switch_repeat(void) { - tmux_pane_last(); - tap_code(KC_UP); - tap_code(KC_ENT); - tmux_pane_last(); -} - -/* vi: ft=c:tw=80:sw=2:ts=2:sts=2:et */ diff --git a/users/kuchosauronad0/kuchosauronad0.h b/users/kuchosauronad0/kuchosauronad0.h deleted file mode 100644 index 244c3cbf55..0000000000 --- a/users/kuchosauronad0/kuchosauronad0.h +++ /dev/null @@ -1,109 +0,0 @@ -#pragma once - -#include "quantum.h" - -#include "version.h" -#include "eeprom.h" -#include "wrappers.h" -#include "process_records.h" - -#ifdef TAP_DANCE_ENABLE -# include "tap_dances.h" -# define KC_TMX TD(TD_TMX) // tap1: 't' tap2: +b -# define KC_EOL TD(TD_EOL) // tap1: 'e' tap2: +e -# define KC_BOL TD(TD_BOL) // tap1: 'a' tap2: +a -# define KC_NW TD(TD_NW) // tap1: 'f' tap2: +f -# define KC_PW TD(TD_PW) // tap1: 'b' tap2: +b -# define KC_DW TD(TD_DW) // tap1: 'w' tap2: +w -#endif //!TAP_DANCE_ENABLE - -#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE) -# include "rgblight_user.h" -#endif - -#if defined(UNICODEMAP_ENABLE) || defined(UNICODE_ENABLE) -# include "unicode.h" -#endif //!UNICODE_ENABLE - -// Keycode aliases -#define TM_X LCTL(KC_B) // Tmux leader key -// Unix QoL macros -#define MC_BOL LCTL(KC_A) // jump to beginning of line -#define MC_EOL LCTL(KC_E) // jump to end of line -#define MC_NW LALT(KC_F) // next word -#define MC_PW LALT(KC_B) // previous word -#define MC_DW LCTL(KC_W) // delete word - -// Define layer names -enum userspace_layers { - _QWERTY = 0, - _NUMLOCK = 0, - _COLEMAK, - _DVORAK, - _WORKMAN, -/* _NORMAN, - _MALTRON, - _EUCALYN, - _CARPLAX, */ - _PLOVER, - _UNICODE, - _MODS, /* layer 8 now 9*/ - _GAMEPAD, - _DIABLO, - _MACROS, - _MEDIA, - _LOWER, - _RAISE, - _ADJUST, -}; - -bool mod_key_press_timer (uint16_t code, uint16_t mod_code, bool pressed); -bool mod_key_press (uint16_t code, uint16_t mod_code, bool pressed, uint16_t this_timer); -bool send_game_macro(const char *str, keyrecord_t *record, bool override); -void matrix_init_keymap(void); -bool shutdown_keymap(bool jump_to_bootloader); -void suspend_power_down_keymap(void); -void suspend_wakeup_init_keymap(void); -void matrix_scan_keymap(void); -layer_state_t layer_state_set_keymap (layer_state_t state); -layer_state_t default_layer_state_set_keymap (layer_state_t state); -void led_set_keymap(uint8_t usb_led); -void eeconfig_init_keymap(void); - -void tmux_prefix(void); -void tmux_pane_zoom(void); -void tmux_pane_last(void); -void tmux_pane_switch_repeat(void); -void tmux_pane_switch(uint16_t keycode); - -typedef union { - uint32_t raw; - struct { - bool rgb_layer_change :1; - bool is_overwatch :1; - bool nuke_switch :1; - uint8_t unicode_mod :4; - bool swapped_numbers :1; - }; -} userspace_config_t; - -extern userspace_config_t userspace_config; - -/* -Custom Keycodes for Diablo 3 layer -But since TD() doesn't work when tap dance is disabled -We use custom codes here, so we can substitute the right stuff -*/ -#ifdef TAP_DANCE_ENABLE -# define KC_D3_1 TD(TD_D3_1) -# define KC_D3_2 TD(TD_D3_2) -# define KC_D3_3 TD(TD_D3_3) -# define KC_D3_4 TD(TD_D3_4) -#else -# define KC_D3_1 KC_1 -# define KC_D3_2 KC_2 -# define KC_D3_3 KC_3 -# define KC_D3_4 KC_4 -#endif // !TAP_DANCE_ENABLE - -/* vi: ft=c:tw=80:sw=2:ts=2:sts=2:et */ diff --git a/users/kuchosauronad0/leader_user.c b/users/kuchosauronad0/leader_user.c deleted file mode 100644 index fd356021a6..0000000000 --- a/users/kuchosauronad0/leader_user.c +++ /dev/null @@ -1,113 +0,0 @@ -#include "leader_user.h" -#ifdef RGBLIGHT_ENABLE -extern rgblight_config_t rgblight_config; -#endif -bool leader_succeed; - -void matrix_scan_user(void) { - static bool has_ran_yet; - if (!has_ran_yet) { - has_ran_yet = true; - startup_user(); - } -#ifdef TAP_DANCE_ENABLE // Run Diablo 3 macro checking code. -// run_diablo_macro_check(); -#endif -#ifdef RGBLIGHT_ENABLE - matrix_scan_rgb(); -#endif - -// matrix_scan_keymap(); -} - -void leader_start_user(void) { -#ifdef RGBLIGHT_ENABLE - rgblight_savebase(); - rgblight_mode_noeeprom(1); - rgblight_sethsv_noeeprom(HSV_GOLDENROD); -#endif -} - -void leader_end_user(void) { - leader_succeed = false; - - if (leader_sequence_one_key(KC_W)) { - // vim/tmux: Use in command mode in vim: write to file, switch tmux pane in the current session window and repeat the last command - SEND_STRING(":w" SS_TAP(X_ENTER)); - tmux_pane_switch_repeat(); - leader_succeed = true; - } else - if (leader_sequence_one_key(KC_T)) { - // Send the Tmux Prefix - tmux_prefix(); - leader_succeed = true; - } else - if (leader_sequence_one_key(KC_A)) { - // tmux: Send the prefix and press 'right' arrow - tmux_prefix(); - tap_code(KC_RIGHT); - leader_succeed = true; - } else - if (leader_sequence_two_keys(KC_T, KC_T)) { - // tmux: Send the prefix to a nested session - tmux_prefix(); - tmux_prefix(); - leader_succeed = true; - } else - if (leader_sequence_two_keys(KC_T, KC_R)) { - // tmux: Switch pane and repeat last action - tmux_pane_switch_repeat(); - leader_succeed = true; - } else - if (leader_sequence_two_keys(KC_V, KC_Z)){ - // vim: Zoom pane - tap_code16(LCTL(KC_W)); - tap_code16(LSFT(KC_BSLS)); - leader_succeed = true; - } else - if (leader_sequence_two_keys(KC_V, KC_R)) { - // vim: Substitute and place cursor - SEND_STRING(":%s///g" SS_TAP(X_LEFT)); - tap_code(KC_LEFT); - tap_code(KC_LEFT); - leader_succeed = true; - } else - if (leader_sequence_two_keys(KC_V, KC_T)) { - // vim: move current pane to new tab - tap_code16(LCTL(KC_W)); - tap_code16(LSFT(KC_T)); - leader_succeed = true; - } else - if (leader_sequence_one_key(KC_R)){ - // Toggle RGB Layer indicator - tap_code16(KC_RGB_T); - leader_succeed = true; - } else - if (leader_sequence_one_key(KC_SPC)){ - // One Shot Unicode layer -//TODO tap_code16(OS_UNI); - leader_succeed = true; - } else - if (leader_sequence_two_keys(KC_SPC, KC_SPC)){ - // Toggle _MODS - tap_code16(TG_MODS); - leader_succeed = true; - } else - if (leader_sequence_three_keys(KC_BSPC, KC_BSPC, KC_BSPC)){ - // Reset the keyboard - reset_keyboard(); - leader_succeed = true; - } - -// pick color depending of success /fail -// fade leader_start from 100 to 0 -// fade new color from 0 to 100 to 0 -// fade old color from 0 to 100 -#ifdef RGBLIGHT_ENABLE - if (leader_succeed) { - fadeflash_leds(HSV_GREEN); - } else { - fadeflash_leds(HSV_RED); - } -#endif -} diff --git a/users/kuchosauronad0/leader_user.h b/users/kuchosauronad0/leader_user.h deleted file mode 100644 index d68dc80c13..0000000000 --- a/users/kuchosauronad0/leader_user.h +++ /dev/null @@ -1,6 +0,0 @@ -#pragma once -#include "kuchosauronad0.h" - -#include "leader_user.h" - -void matrix_scan_user(void); diff --git a/users/kuchosauronad0/process_records.c b/users/kuchosauronad0/process_records.c deleted file mode 100644 index 5623c80f98..0000000000 --- a/users/kuchosauronad0/process_records.c +++ /dev/null @@ -1,244 +0,0 @@ -#include "kuchosauronad0.h" - -uint16_t copy_paste_timer; - -__attribute__ ((weak)) -bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { - return true; -} - -__attribute__ ((weak)) -bool process_record_secrets(uint16_t keycode, keyrecord_t *record) { - return true; -} - -// Defines actions for my global custom keycodes. Defined in kuchosauronad0.h file -// Then runs the _keymap's record handier if not processed here -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - // If console is enabled, it will print the matrix position and status of each key pressed -#ifdef KEYLOGGER_ENABLE - #if defined(KEYBOARD_ergodox_ez) || defined(KEYBOARD_keebio_iris_rev2) - xprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.row, record->event.key.col, record->event.pressed); - #else - xprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed); - #endif -#endif //KEYLOGGER_ENABLE - - switch (keycode) { - case KC_QWERTY ... KC_PLOVER: - if (record->event.pressed) { - set_single_persistent_default_layer(keycode - KC_QWERTY); - } - break; - - case KC_MAKE: // Compiles the firmware, and adds the flash command based on keyboard bootloader - if (!record->event.pressed) { - uint8_t temp_mod = get_mods(); - uint8_t temp_osm = get_oneshot_mods(); - clear_mods(); clear_oneshot_mods(); - send_string_with_delay_P(PSTR("make " QMK_KEYBOARD ":" QMK_KEYMAP), TAP_CODE_DELAY); -#ifndef MAKE_BOOTLOADER - if ( ( temp_mod | temp_osm ) & MOD_MASK_SHIFT ) -#endif - { - #if defined(__arm__) - send_string_with_delay_P(PSTR(":dfu-util"), TAP_CODE_DELAY); - #elif defined(BOOTLOADER_DFU) - send_string_with_delay_P(PSTR(":dfu"), TAP_CODE_DELAY); - #elif defined(BOOTLOADER_HALFKAY) - send_string_with_delay_P(PSTR(":teensy"), TAP_CODE_DELAY); - #elif defined(BOOTLOADER_CATERINA) - send_string_with_delay_P(PSTR(":avrdude"), TAP_CODE_DELAY); - #endif // bootloader options - } - if ( ( temp_mod | temp_osm ) & MOD_MASK_CTRL) { send_string_with_delay_P(PSTR(" -j8 --output-sync"), TAP_CODE_DELAY); } - send_string_with_delay_P(PSTR(SS_TAP(X_ENTER)), TAP_CODE_DELAY); - } - break; -// FLEDERMAUSLAND - case MC_QT1: // "" - if(record->event.pressed){ - SEND_STRING("\"\""); - tap_code(KC_LEFT); - } - break; - case MC_QT2: // '' - if(record->event.pressed){ - SEND_STRING("''"); - tap_code(KC_LEFT); - } - break; - case MC_QT3: // `' - if(record->event.pressed){ - SEND_STRING("`'"); - tap_code(KC_LEFT); - } - break; - case MC_PAR: // Parenthesis - if(record->event.pressed){ - SEND_STRING("()"); - tap_code(KC_LEFT); - } - break; - case MC_CUR: // Curly bracket - if(record->event.pressed){ - SEND_STRING("{}"); - tap_code(KC_LEFT); - } - break; - case MC_SQR: // Square bracket - if(record->event.pressed){ - SEND_STRING("[]"); - tap_code(KC_LEFT); - } - break; - case MC_ABR: // Angle bracket - if(record->event.pressed){ - SEND_STRING("<>"); - tap_code(KC_LEFT); - } - break; - case MCT_NEW: // New Tmux Session - if(record->event.pressed){ - tmux_prefix(); - SEND_STRING(":neww"); - tap_code(KC_ENT); - } - break; - case MCT_SH: // Tmux horizontal split - if(record->event.pressed){ - tmux_prefix(); - SEND_STRING("%"); - } - break; - case MCT_SV: // Tmux vertical split - if(record->event.pressed){ - tmux_prefix(); - SEND_STRING("\""); - } - break; - case MCT_ZM: // Tmux zoom - if(record->event.pressed){ - tmux_prefix(); - tap_code(KC_Z); - } - break; - case MCT_SCR: // Tmux scroll mode - if(record->event.pressed){ - tmux_prefix(); - tap_code(KC_PGUP); - } - break; - case MCT_UP: // Tmux up - break; - case MCT_DW: // Tmux down - break; - case MCT_LFT: // Tmux left - break; - case MCT_RGT: // Tmux right - tmux_prefix(); - tap_code(KC_RIGHT); - break; - case MCV_B: // Vim begin of line - if(record->event.pressed){ - tap_code(KC_0); - } - break; - case MCV_E: // Vim end of line - if(record->event.pressed){ - SEND_STRING(":vsplit"); - tap_code(KC_ENT); - } - break; - case MCT_F: // Vim for loop - if(record->event.pressed){ - SEND_STRING(":help"); - tap_code(KC_ENT); - } - break; - case VRSN: // Prints firmware version - if (record->event.pressed) { - send_string_with_delay_P(PSTR(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE), TAP_CODE_DELAY); - } - break; -// These are a series of gaming macros. -// Only enables for the viterbi, basically, -// to save on firmware space, since it's limited. -#ifdef MACROS_ENABLED - case KC_OVERWATCH: // Toggle's if we hit "ENTER" or "BACKSPACE" to input macros - if (record->event.pressed) { userspace_config.is_overwatch ^= 1; eeconfig_update_user(userspace_config.raw); } -#ifdef RGBLIGHT_ENABLE -// userspace_config.is_overwatch ? rgblight_mode_noeeprom(17) : rgblight_mode_noeeprom(18); -#endif //RGBLIGHT_ENABLE - break; - case KC_SALT: - return send_game_macro("Salt, salt, salt...", record, false); - case KC_MORESALT: - return send_game_macro("Please sir, can I have some more salt?!", record, false); - case KC_SALTHARD: - return send_game_macro("Your salt only makes me harder, and even more aggressive!", record, false); - case KC_GOODGAME: - return send_game_macro("Good game, everyone!", record, false); - case KC_GLHF: - return send_game_macro("Good luck, have fun!!!", record, false); - case KC_SYMM: - return send_game_macro("Left click to win!", record, false); - case KC_JUSTGAME: - return send_game_macro("It may be a game, but if you don't want to actually try, please go play AI, so that people that actually want to take the game seriously and \"get good\" have a place to do so without trolls like you throwing games.", record, false); - case KC_TORB: - return send_game_macro("That was positively riveting!", record, false); - case KC_AIM: - send_game_macro("That aim is absolutely amazing. It's almost like you're a machine!", record, true); - return send_game_macro("Wait! That aim is TOO good! You're clearly using an aim hack! CHEATER!", record, false); - case KC_C9: - return send_game_macro("OMG!!! C9!!!", record, false); - case KC_GGEZ: - return send_game_macro("That was a fantastic game, though it was a bit easy. Try harder next time!", record, false); -#endif // MACROS_ENABLED - - case KC_CCCV: // One key copy/paste - if(record->event.pressed){ - copy_paste_timer = timer_read(); - } else { - if (timer_elapsed(copy_paste_timer) > TAPPING_TERM) { // Hold, copy - register_code(KC_LCTL); - tap_code(KC_C); - unregister_code(KC_LCTL); - } else { // Tap, paste - register_code(KC_LCTL); - tap_code(KC_V); - unregister_code(KC_LCTL); - } - } - break; - -// Unicode -#ifdef UNICODE_ENABLE - case UC_FLIP: - if (record->event.pressed) { - send_unicode_string("(ノāē į—Šāē )ãƒŽå―Ąâ”ŧ━â”ŧ"); - } - break; - case UC_TABL: - if (record->event.pressed) { - send_unicode_string("┎─┎ノ( š _ šノ)"); - } - break; - case UC_SHRG: - if (record->event.pressed) { - send_unicode_string("ÂŊ\\_(ツ)_/ÂŊ"); - } - break; - case UC_DISA: - if (record->event.pressed) { - send_unicode_string("āē _āē "); - } - break; -#endif //!Unicode -} - return process_record_keymap(keycode, record) && -#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE) - process_record_user_rgb(keycode, record) && -#endif // RGBLIGHT_ENABLE - process_record_secrets(keycode, record); -} diff --git a/users/kuchosauronad0/process_records.h b/users/kuchosauronad0/process_records.h deleted file mode 100644 index 0e1c1ceadd..0000000000 --- a/users/kuchosauronad0/process_records.h +++ /dev/null @@ -1,91 +0,0 @@ -#pragma once -#include "kuchosauronad0.h" - -#if defined(KEYMAP_SAFE_RANGE) -# define PLACEHOLDER_SAFE_RANGE KEYMAP_SAFE_RANGE -#else -# define PLACEHOLDER_SAFE_RANGE SAFE_RANGE -#endif - -enum userspace_custom_keycodes{ - VRSN = PLACEHOLDER_SAFE_RANGE, // Prints QMK Firmware and board info - KC_QWERTY, // Sets default layer to QWERTY - KC_COLEMAK, // Sets default layer to COLEMAK - KC_DVORAK, // Sets default layer to DVORAK - KC_WORKMAN, // Sets default layer to WORKMAN - KC_PLOVER, // Sets default layer to PLOVER - - KC_MAKE, // Run keyboard's customized make command - KC_RGB_T, // Toggles RGB Layer Indication mode - KC_SECRET_1, - KC_SECRET_2, - KC_SECRET_3, - KC_SECRET_4, - KC_SECRET_5, - KC_CCCV, // Hold to copy, tap to paste - KC_NUKE, // NUCLEAR LAUNCH DETECTED!!! - UC_FLIP, // (āē į—Šāē )â”ŧ━â”ŧ - UC_TABL, // ┎┎ノ( š _ šノ) - UC_SHRG, // ÂŊ\_(ツ)_/ÂŊ - UC_DISA, // āē _āē  - - MC_QT1, // "" - MC_QT2, // '' - MC_QT3, // `' - MC_PAR, // Parenthesis - MC_CUR, // Curly bracket - MC_SQR, // Square bracket - MC_ABR, // Angle bracket - MCT_NEW, // New Tmux Session - MCT_SH, // Tmux horizontal split - MCT_SV, // Tmux vertical split - MCT_ZM, // Tmux zoom - MCT_SCR, // Tmux scroll mode - MCT_UP, // Tmux up - MCT_DW, // Tmux down - MCT_LFT, // Tmux left - MCT_RGT, // Tmux right - MCV_B, // Vim begin of line - MCV_E, // Vim end of line - MCT_F, // Vim for loop - MCG_A, // Git add - MCG_C, // Git commit - MCG_P, // Git push - MCG_R, // Git revert - MCG_L, // Git log - MCG_S, // Git status - - NEW_SAFE_RANGE //use "NEWPLACEHOLDER for keymap specific codes - }; - -bool process_record_secrets(uint16_t keycode, keyrecord_t *record); -bool process_record_user_rgb(uint16_t keycode, keyrecord_t *record); -bool process_record_keymap(uint16_t keycode, keyrecord_t *record); - -#define LOWER MO(_LOWER) -#define RAISE MO(_RAISE) -#define ADJUST MO(_ADJUST) -#define TG_MODS TG(_MODS) -#define TG_GAME TG(_GAMEPAD) -#define OS_LWR OSL(_LOWER) -#define OS_RSE OSL(_RAISE) -#define OS_UNI OSL(_UNICODE) - -#define SEC1 KC_SECRET_1 -#define SEC2 KC_SECRET_2 -#define SEC3 KC_SECRET_3 -#define SEC4 KC_SECRET_4 -#define SEC5 KC_SECRET_5 -#define SEC6 KC_SECRET_6 - -#define QWERTY KC_QWERTY -#define DVORAK KC_DVORAK -#define COLEMAK KC_COLEMAK -#define WORKMAN KC_WORKMAN -#define PLOVER KC_PLOVER - -#define KC_RESET QK_BOOT -#define KC_RST KC_RESET - -#define UC_IRNY UC(0x2E2E) -#define UC_CLUE UC(0x203D) diff --git a/users/kuchosauronad0/readme.md b/users/kuchosauronad0/readme.md deleted file mode 100644 index 88cc4cd374..0000000000 --- a/users/kuchosauronad0/readme.md +++ /dev/null @@ -1,217 +0,0 @@ -# Table of Contents -1. [Overview](#overview)[[documentation](https://docs.qmk.fm/#/feature_userspace)] -2. [Keyboard Layout Templates](#keyboard-layout-templates) -3. [Custom Keycodes](#custom-keycodes) [[documentation](https://docs.qmk.fm/#/feature_macros?id=the-new-way-send_string-amp-process_record_user)] -4. [Tap Dances](#tap-dances) [[documentation](https://docs.qmk.fm/#/feature_tap_dance)] -5. [Encoders](#encoders) [[documentation](https://docs.qmk.fm/#/feature_encoders)] -6. [Leader Key](#leader-key) [[documentation](https://docs.qmk.fm/#/feature_leader_key)] -7. [Unicode](#unicode) [[documentation](https://docs.qmk.fm/#/feature_unicode)] -8. [Combo Keys](#combo-keys) [[documentation](https://docs.qmk.fm/#/feature_combo)] -9. [Secret Macros](#secret-macros) [[documentation](https://github.com/qmk/qmk_firmware/blob/master/users/drashna/readme_secrets.md)] - -# [Overview](#overview) -Thanks to [drashna](https://github.com/drashna) and the people of the discord server and everyone else in the qmk_firmware/users/ directory :) - -## [Keyboard Layout Templates](#keyboard-layout-temple) -This borrows from [jola5](https://github.com/jola5)'s "Not quite neo" code. The code of the userspace is shared between all keyboards, so that one can maintain functionality of all keyboards at once by modifying a few files in a central location. - -This makes adding tap/hold mods, or other special keycodes or functions to all keyboards super easy, as it's done to all of them at once. - -The caveat here is that the keymap needs a processor/wrapper, as it doesn't like the substitutions. However, this is as simple as just pushing it through a define. For instance: - -`#define LAYOUT_ergodox_wrapper(...) LAYOUT_ergodox(__VA_ARGS__)` - -Once that's been done and you've switched the keymaps to use the "wrapper", it will read the substitution blocks just fine. - -Credit goes to [jola5](https://github.com/jola5) for first implementing this awesome idea. - -## [Custom Keycodes](#custom-keycodes) -Declared in `process_records.h` and `template.h` and defined in `process_record_user` in template.c - -## [Tap Dances](#tap-dances) -To enable set `TAP_DANCE_ENABLE = yes` in *rules.mk*. See file *tap_dances.{c,h}* - -TODO: Command-line movement stuff is a pain when typing normally - -TODO: Make use of `TD_SPC` and `TD_QT{1..3}` - -## [Leader Key](#leader-key) -To enable set `LEADER_ENABLE = yes` in file *rules.mk* - -|Leader sequence|program| description | -|---|---|---| -| W |vim/tmux| save file, switch pane and repeat last command | -| T |tmux| send default prefix | -| A |tmux| switch pane| -|T + T|tmux| send default prefix to a nested session | -|T + R|tmux| switch pane and repeat last command | -|V + Z|vim | zoom current split| -|V + R|vim | search and replace| -|V + T|vim | move current split to its own tab| -|3x Backspace|keyboard| Reset Keyboard | - -Leader sequences are defined in *leader_user.c* - -## [Combo Keys](#combo-keys) -To enable set `COMBO_ENABLE = yes` in file *rules.mk*. -Number of combos and timeout are defined in *config.h* - -Press key chord to use. - -|Combo|description | -|---|---| -| CV | Paste | -| XC | Cut | -| ZV | Copy | -| QP | KC_SLEEP | - -Combos are defined in *combo.h* and *combo.c* - -## [Unicode](#unicode) -To enable set `UNICODE_ENABLE = yes` or `UNICODEMAP_ENABLE = yes` in file *rules.mk* - -## [Encoders](#encoders) -To enable set `ENCODER_ENABLE = yes` in *rules.mk*. - -In the keyboard's *config.h* adjust according to your keyboard: - -```c -// Example ProMicro -#define ENCODERS_PAD_A { F4 } //PIN A3 -#define ENCODERS_PAD_B { F5 } //PIN A2 -``` - -Check the [documentation](https://docs.qmk.fm/#/feature_encoders) for more information -The first rotary encoder is configured such as: - -|Modifier|description| -|---|---| -| None | General navigation. Page up/down | -| SHIFT | Fast navigation. Home/end | -| CTRL | Vertical navigation. Up/down | -| CTRL+SHIFT | Horizontal navigation. Left/right | -| ALT | Audio volume control. | -| GUI | Browser navigation(windows). Forward/backward | -| ALT+SHIFT | Form navigation. Tab up/down | -| ALT+CTRL | Media control. (Play|pause)/mute | -| HYPER | Media navigation. Next/prev track | - -Key codes are stored as `uint16_t encoder_actions[2][9]` in *encoder.c* - - -## Diablo Layer -Currently not in use. -[Back to Top](#table-of-contents) - -# [Secret Macros](#secret-macros) -To enable set `NO_SECRETS = yes` in *rules.mk*. - -With help from gitter and Colinta, this adds the ability to add hidden macros from other users. - -First, I have several files that are hidden/excluded from Git/GitHub. These contain everything needed for the macros. To hide these files, open *.git/info/exclude* and add `secrets.c` and `secrets.h` to that file, below the comments. - -And this requires `KC_SECRET_1` through `KC_SECRET_5` to be defined in your *.h* file to define the keycodes for the new macros. - - -### .git/info/exclude - -```console -# git ls-files --others --exclude-from=.git/info/exclude -# Lines that start with '#' are comments. -# For a project mostly in C, the following would be a good set of -# exclude patterns (uncomment them if you want to use them): -# *.[oa] -# *~ -/users//secrets.c -/users//secrets.h -``` - -Then you can create these files: - -### secrets.c - -```c -#include ".h" // replace with your keymap's "h" file, or whatever file stores the keycodes - -#if (__has_include("secrets.h") && !defined(NO_SECRETS)) -#include "secrets.h" -#else -// `PROGMEM const char secret[][x]` may work better, but it takes up more space in the firmware -// And I'm not familiar enough to know which is better or why... -static const char * const secret[] = { - "test1", - "test2", - "test3", - "test4", - "test5" -}; -#endif - -bool process_record_secrets(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case KC_SECRET_1 ... KC_SECRET_5: // Secrets! Externally defined strings, not stored in repo - if (!record->event.pressed) { - clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED); - send_string_with_delay(secret[keycode - KC_SECRET_1], MACRO_TIMER); - } - return false; - break; - } - return true; -} -``` - -### secrets.h - -```c -static const char * const secrets[] = { - "secret1", - "secret2", - "secret3", - "secret4", - "secret5" -}; -``` - -Replacing the strings with the codes that you need. - -### name.c - -In the *.c* file, you will want to add this to the top: - -```c -__attribute__ ((weak)) -bool process_record_secrets(uint16_t keycode, keyrecord_t *record) { - return true; -} -``` - -This is so that the function can be called here, and replaced in the `secrets.c` file, and so it won't error out if it doesn't exist. - -And then, in the `process_record_user` function, assuming you have `return process_record_keymap(keycode, record)` here, you'll want to replace the "final" return with the following. Otherwise, you want to replace the `return true;` with `return process_record_secrets(keycode, record);` - -```c - return process_record_keymap(keycode, record) && process_record_secrets(keycode, record); -} -``` - -### rules.mk - -Here, you want your */users//rules.mk* file to "detect" the existence of the *secrets.c* file, and only add it if the file exists. To do so, add this block: - -```make -ifneq ("$(wildcard $(USER_PATH)/secrets.c)","") - SRC += secrets.c -endif -``` - -Additionally, if you want to make sure that you can disable the function without messing with the file, you need to add this to your */users//rules.mk*, so that it catches the flag: - -```make -ifeq ($(strip $(NO_SECRETS)), yes) - OPT_DEFS += -DNO_SECRETS -endif -``` - -Then, if you run `make keyboard:name NO_SECRETS=yes`, it will default to the test strings in your *.c* file, rather than reading from your file. -[Back to Top](#table-of-contents) diff --git a/users/kuchosauronad0/rgblight_user.c b/users/kuchosauronad0/rgblight_user.c deleted file mode 100644 index 1b5c29cfb0..0000000000 --- a/users/kuchosauronad0/rgblight_user.c +++ /dev/null @@ -1,156 +0,0 @@ -#include "rgblight_user.h" -extern rgblight_config_t rgblight_config; -bool has_initialized; -uint8_t base_hue; // Hue value of base state -uint8_t base_sat; // Saturation value of base state -uint8_t base_val; // Brightness value of base state -uint8_t base_mod; // Animation mode of the base state - -void rgblight_savebase(void) { // Save the current settings to ram - base_hue = rgblight_config.hue; - base_sat = rgblight_config.sat; - base_val = rgblight_config.val; - base_mod = rgblight_config.mode; -} -void rgblight_loadbase(void) { // Load settings from ram to eeprom - rgblight_mode( base_mod ); - rgblight_sethsv_eeprom_helper(base_hue, base_sat, base_val, true); -} - - - -bool process_record_user_rgb(uint16_t keycode, keyrecord_t *record) { - if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) { - keycode = keycode & 0xFF; - } - switch (keycode) { - case KC_RGB_T: // Switch between underglow layer indication and normal qmk behaviour -#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE) - if (record->event.pressed) { - userspace_config.rgb_layer_change ^= 1; - xprintf("rgblight layer change [EEPROM]: %u\n", userspace_config.rgb_layer_change); - eeconfig_update_user(userspace_config.raw); - if (userspace_config.rgb_layer_change) { - layer_state_set(layer_state); // Immediately set the layer color (looks better) - } - } -#endif // RGBLIGHT_ENABLE - return false; - break; -#ifdef RGBLIGHT_ENABLE - case RGB_MODE_FORWARD ... RGB_MODE_GRADIENT: // quantum_keycodes.h L400 for definitions - if (record->event.pressed) { // This disables layer indication, as it's assumed that if you're changing this ... you want that disabled - if (userspace_config.rgb_layer_change) { - userspace_config.rgb_layer_change = false; - xprintf("rgblight layer change [EEPROM]: %u\n", userspace_config.rgb_layer_change); - eeconfig_update_user(userspace_config.raw); - } - } - return true; - break; -#endif // RGBLIGHT_ENABLE - } - return true; -} - -void keyboard_post_init_rgb(void) { -# if defined(RGBLIGHT_ENABLE) || defined(RGBLIGHT_STARTUP_ANIMATION) - bool is_enabled = rgblight_config.enable; - if (userspace_config.rgb_layer_change) { - rgblight_enable_noeeprom(); - } - if (rgblight_config.enable) { - layer_state_set_user(layer_state); - uint16_t old_hue = rgblight_config.hue; - rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); - for (uint16_t i = 255; i > 0; i--) { - rgblight_sethsv_noeeprom((i + old_hue) % 255, 255, 255); - wait_ms(5); - } - } - if (!is_enabled) { - rgblight_disable_noeeprom(); - } -# endif // !RGBLIGHT_ENABLE || RGBLIGHT_STARTUP_ANIMATION - layer_state_set_user(layer_state); -} - -void matrix_scan_rgb(void) { -# ifdef INDICATOR_LIGHTS - matrix_scan_indicator(); -# endif -} - -layer_state_t layer_state_set_rgb(layer_state_t state) { -# ifdef RGBLIGHT_ENABLE - if (userspace_config.rgb_layer_change) { - switch (get_highest_layer(state)) { // _RAISE, _LOWER and _ADJUST use a custom color and the breathing effect - case _RAISE: - rgblight_sethsv_noeeprom(HSV_GREEN); - rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3); - break; - case _LOWER: - rgblight_sethsv_noeeprom(HSV_RED); - rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3); - break; - case _ADJUST: - rgblight_sethsv_noeeprom(HSV_WHITE); - rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 2); - break; - default: // Use a solid color for normal layers - switch (get_highest_layer(default_layer_state)) { - case _QWERTY: - rgblight_sethsv_noeeprom(HSV_MAGENTA); - break; - case _COLEMAK: - rgblight_sethsv_noeeprom(HSV_GREEN); - break; - case _DVORAK: - rgblight_sethsv_noeeprom(HSV_BLUE); - break; - case _WORKMAN: - rgblight_sethsv_noeeprom(HSV_GOLDENROD); - break; - case _PLOVER: - rgblight_sethsv_noeeprom(HSV_PINK); - break; - default: - rgblight_sethsv_noeeprom(HSV_WHITE); - break; - } - get_highest_layer(state) == _MODS ? rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING) : rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); // if _MODS layer is on, then breath to denote it - break; - } - } -# endif // !RGBLIGHT_ENABLE - return state; -} - -#ifdef INDICATOR_LIGHTS -void matrix_scan_indicator(void) { - if (has_initialized) { - set_rgb_indicators(get_mods(), host_keyboard_leds(), get_oneshot_mods()); - } -} -#endif // !INDICATOR_LIGHTS - -void rgblight_fade_helper(bool direction){ - // true: increase val = fade in - // false: decrease val = fade out - for (uint8_t index = 0; index < RGBLIGHT_VAL_STEP ; index++) { - direction ? rgblight_increase_val() : rgblight_decrease_val(); - wait_ms(5); - } -} -void fadeflash_leds(uint8_t hue, uint8_t sat, uint8_t val){ - // indicate success / fail of a leader sequence - // fade out, set new hue and saturation, fade in, fade out, set old color, fade in - // this is used in leader_user.c - // TODO: come up with a better name maybe - rgblight_fade_helper(false); - rgblight_sethsv_noeeprom(hue, sat, 0); - rgblight_fade_helper(true); - rgblight_fade_helper(false); - rgblight_sethsv_noeeprom(base_hue, base_sat, 0); - rgblight_fade_helper(true); -} diff --git a/users/kuchosauronad0/rgblight_user.h b/users/kuchosauronad0/rgblight_user.h deleted file mode 100644 index eab15b8325..0000000000 --- a/users/kuchosauronad0/rgblight_user.h +++ /dev/null @@ -1,23 +0,0 @@ -#pragma once -#include "kuchosauronad0.h" - -typedef struct { - bool enabled; - uint8_t hue; - uint16_t timer; - uint8_t life; -} rgblight_fadeout; -const uint8_t RGBLIGHT_FADE_SPEED[6] PROGMEM; - -layer_state_t layer_state_set_rgb(layer_state_t state); -layer_state_t default_layer_state_set_rgb(layer_state_t state); - -bool process_record_user_rgb(uint16_t keycode, keyrecord_t *record); -void scan_rgblight_fadeout(void); -void keyboard_post_init_rgb(void); -void matrix_scan_rgb(void); -void rgblight_sethsv_default_helper(uint8_t index); -void rgblight_savebase(void); -void rgblight_loadbase(void); -void rgblight_fade_helper(bool direction); -void fadeflash_leds(uint8_t hue, uint8_t sat, uint8_t val); diff --git a/users/kuchosauronad0/rules.mk b/users/kuchosauronad0/rules.mk deleted file mode 100644 index a65fe9d258..0000000000 --- a/users/kuchosauronad0/rules.mk +++ /dev/null @@ -1,49 +0,0 @@ -SRC += kuchosauronad0.c \ - process_records.c - -LTO_ENABLE = yes -SPACE_CADET_ENABLE = no - -ifneq ($(strip $(RGBLIGHT_ENABLE)),yes ) - SRC += rgblight_user.c -endif - -ifeq ($(strip $(TAP_DANCE_ENABLE)), yes) - SRC += tap_dances.c -endif - -ifeq ($(strip $(ENCODER_ENABLE)), yes) - SRC += encoder.c -endif - -ifeq ($(strip $(COMBO_ENABLE)), yes) - SRC += combo.c -endif - -ifeq ($(strip $(LEADER_ENABLE)), yes) - SRC += leader_user.c -endif - -ifneq ("$(wildcard $(USER_PATH)/secrets.c)","") - SRC += secrets.c -endif -ifeq ($(strip $(NO_SECRETS)), yes) - OPT_DEFS += -DNO_SECRETS -endif -ifeq ($(strip $(UNICODEMAP_ENABLE)), yes) - SRC += unicode.c -endif - -ifeq ($(strip $(MACROS_ENABLED)), yes) - OPT_DEFS += -DMACROS_ENABLED -endif - -ifdef CONSOLE_ENABLE - ifeq ($(strip $(KEYLOGGER_ENABLE)), yes) - OPT_DEFS += -DKEYLOGGER_ENABLE - endif -endif - -ifeq ($(strip $(MAKE_BOOTLOADER)), yes) - OPT_DEFS += -DMAKE_BOOTLOADER -endif diff --git a/users/kuchosauronad0/tap_dances.c b/users/kuchosauronad0/tap_dances.c deleted file mode 100644 index 40d1c245e3..0000000000 --- a/users/kuchosauronad0/tap_dances.c +++ /dev/null @@ -1,55 +0,0 @@ -#include "tap_dances.h" -void td_parenthesis (tap_dance_state_t *state, void *user_data) { - if (state->count == 1) { -// SEND_STRING ("\("); - tap_code(KC_QUOT); - reset_tap_dance (state); - } - else if (state->count == 2) { - SEND_STRING("()" SS_TAP(X_LEFT)); - reset_tap_dance (state); - } - else if (state->count == 3) { - SEND_STRING("[]" SS_TAP(X_LEFT)); - reset_tap_dance (state); - } - else if (state->count == 4) { - SEND_STRING("{}" SS_TAP(X_LEFT)); - reset_tap_dance (state); - } - else if (state->count >= 5) { - SEND_STRING("<>" SS_TAP(X_LEFT)); - reset_tap_dance (state); - } -} - -void safe_reset(tap_dance_state_t *state, void *user_data) { - if (state->count >= 3) { - // Reset the keyboard if you tap the key more than three times - reset_keyboard(); - reset_tap_dance(state); - } -} - -tap_dance_action_t tap_dance_actions[] = { - [TD_RESET] = ACTION_TAP_DANCE_FN(safe_reset), - [TD_NUM1] = ACTION_TAP_DANCE_DOUBLE(KC_1, KC_4), - [TD_NUM2] = ACTION_TAP_DANCE_DOUBLE(KC_2, KC_5), - [TD_NUM3] = ACTION_TAP_DANCE_DOUBLE(KC_3, KC_6), - [TD_QT1] = ACTION_TAP_DANCE_DOUBLE(KC_QUOT, MC_QT1), - [TD_QT2] = ACTION_TAP_DANCE_DOUBLE(LSFT(KC_QUOT), MC_QT2), - [TD_QT3] = ACTION_TAP_DANCE_DOUBLE(KC_GRV, MC_QT3), - - [TD_TMX] = ACTION_TAP_DANCE_DOUBLE(KC_T, TM_X), - [TD_EOL] = ACTION_TAP_DANCE_DOUBLE(KC_E, MC_EOL), // end of line - [TD_BOL] = ACTION_TAP_DANCE_DOUBLE(KC_A, MC_BOL), // beginning of line - [TD_NW] = ACTION_TAP_DANCE_DOUBLE(KC_F, MC_NW), // next word - [TD_PW] = ACTION_TAP_DANCE_DOUBLE(KC_B, MC_PW), // pevious word - [TD_DW] = ACTION_TAP_DANCE_DOUBLE(KC_W, MC_DW), // pevious word - - [TD_SPC] = ACTION_TAP_DANCE_FN(td_parenthesis), // \(, (), [], {}, <> - [TD_PAR] = ACTION_TAP_DANCE_DOUBLE(KC_LPRN, MC_PAR), // () - [TD_SQR] = ACTION_TAP_DANCE_DOUBLE(KC_LBRC, MC_SQR), // [] - [TD_CUR] = ACTION_TAP_DANCE_DOUBLE(LSFT(KC_LCBR), MC_CUR),// {} - [TD_ABR] = ACTION_TAP_DANCE_DOUBLE(LSFT(KC_COMM), MC_ABR),// -}; diff --git a/users/kuchosauronad0/tap_dances.h b/users/kuchosauronad0/tap_dances.h deleted file mode 100644 index 818bbd7b93..0000000000 --- a/users/kuchosauronad0/tap_dances.h +++ /dev/null @@ -1,26 +0,0 @@ -#pragma once -#include "kuchosauronad0.h" - -#ifdef TAP_DANCE_ENABLE -enum { - TD_RESET = 0, - TD_SPC, // for special function td_parenthesis testing - TD_NUM1, // compact gaming numpad - TD_NUM2, // - TD_NUM3, // - TD_TMX, // tmux control sequence - TD_EOL, // end of line - TD_BOL, // beginning of line - TD_NW, // next word - TD_PW, // pevious word - TD_DW, // delete word - TD_QT1, // single double quote for ' - TD_QT2, // single double quote for " - TD_QT3, // single double quote for ` - TD_PAR, // single double parenthesis - TD_CUR, // single double curly braces - TD_SQR, // single double square brackets - TD_ABR // single double angle brackets -}; -#endif // TAP_DANCE_ENABLE -void td_parenthesis (tap_dance_state_t *state, void *user_data); diff --git a/users/kuchosauronad0/template.c b/users/kuchosauronad0/template.c deleted file mode 100644 index 76cc572be3..0000000000 --- a/users/kuchosauronad0/template.c +++ /dev/null @@ -1,125 +0,0 @@ -#include "template.h" - - -// Add reconfigurable functions here, for keymap customization -// This allows for a global, userspace functions, and continued -// customization of the keymap. Use _keymap instead of _user -// functions in the keymaps -__attribute__ ((weak)) -void matrix_init_keymap(void) {} - -// Call user matrix init, then call the keymap's init function -void matrix_init_user(void) { - matrix_init_keymap(); -} - - -__attribute__ ((weak)) -void matrix_scan_keymap(void) {} - -// No global matrix scan code, so just run keymap's matix -// scan function -__attribute__ ((weak)) -void matrix_scan_user(void) { - matrix_scan_keymap(); -} - - -__attribute__ ((weak)) -bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { - return true; -} - -// Defines actions tor my global custom keycodes. Defined in drashna.h file -// Then runs the _keymap's recod handier if not processed here, -// And use "NEWPLACEHOLDER" for new safe range -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - - switch (keycode) { - case KC_MAKE: - if (!record->event.pressed) { - SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP -#if (defined(BOOTLOADER_DFU) || defined(BOOTLOADER_LUFA_DFU) || defined(BOOTLOADER_QMK_DFU)) - ":dfu" -#elif defined(BOOTLOADER_HALFKAY) - ":teensy" -#elif defined(BOOTLOADER_CATERINA) - ":avrdude" -#endif - SS_TAP(X_ENTER)); - } - return false; - break; - - case VRSN: - if (record->event.pressed) { - SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); - } - return false; - break; - } - return process_record_keymap(keycode, record); -} - - -__attribute__ ((weak)) -layer_state_t layer_state_set_keymap (layer_state_t state) { - return state; -} - -layer_state_t layer_state_set_user (layer_state_t state) { - return layer_state_set_keymap (state); -} - - - -__attribute__ ((weak)) -void led_set_keymap(uint8_t usb_led) {} - -void led_set_user(uint8_t usb_led) { - led_set_keymap(usb_led); -} - - - -__attribute__ ((weak)) -void suspend_power_down_keymap(void) {} - -void suspend_power_down_user(void) -{ - suspend_power_down_keymap(); -} - - - -__attribute__ ((weak)) -void suspend_wakeup_init_keymap(void) {} - -void suspend_wakeup_init_user(void) -{ - suspend_wakeup_init_keymap(); - #ifdef KEYBOARD_ergodox_ez - wait_ms(10); - #endif -} - - - -__attribute__ ((weak)) -void startup_keymap(void) {} - -void startup_user (void) { - #ifdef RGBLIGHT_ENABLE - matrix_init_rgb(); - #endif //RGBLIGHT_ENABLE - startup_keymap(); -} - - - -__attribute__ ((weak)) -void shutdown_keymap(void) {} - -void shutdown_user (void) { - shutdown_keymap(); -} diff --git a/users/kuchosauronad0/template.h b/users/kuchosauronad0/template.h deleted file mode 100644 index dd1c487604..0000000000 --- a/users/kuchosauronad0/template.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef USERSPACE -#define USERSPACE - -#include "quantum.h" -#include "version.h" -#include "eeprom.h" - -// Define layer names -#define BASE 0 - -enum custom_keycodes { - VRSN = SAFE_RANGE, // can always be here - KC_MAKE, - KC_RESET, - NEWPLACEHOLDER //use "NEWPLACEHOLDER for keymap specific codes -}; - -#endif diff --git a/users/kuchosauronad0/unicode.c b/users/kuchosauronad0/unicode.c deleted file mode 100644 index f0168cef9f..0000000000 --- a/users/kuchosauronad0/unicode.c +++ /dev/null @@ -1,62 +0,0 @@ -#include "unicode.h" - -//#ifdef UNICODEMAP_ENABLE -const uint32_t unicode_map[] PROGMEM = { - [BANG] = 0x0203D,// â€― - [IRONY] = 0x02E2E,// âļŪ - [DEGREE] = 0x000B0,// ° - [THINK] = 0x1F914,// ðŸĪ” - [GRIN] = 0x1F600,// ïŋ― - [MONOCL] = 0x1F9D0,// 🧐 - [DRUG0] = 0x1F92A,// ðŸĪŠ - [DRUG1] = 0x1F974,// ðŸĨī - [CLOWN] = 0x1F921,// ðŸĪĄ - [MNDBLWN] = 0x1F92F,// ðŸĪŊ - [MONEY] = 0x1F911,// ðŸĪ‘ - [SHTUP] = 0x1F910,// ðŸĪ - [PARTY] = 0x1F973,// ðŸĨģ - [SMRK] = 0x1F60F,// 😏 - [WEARY] = 0x1F629,// ðŸ˜Đ - [UNAMU] = 0x1F612,// 😒 - [SPY] = 0x1F575,//ðŸ•ĩ - [DAFUQ] = 0x1F47A,// 👚 - [FIST0] = 0x1F91B,// ðŸĪ› - [FIST1] = 0x1F91C,// ðŸĪœ - [FIST2] = 0x270A, // ✊ - [FIST3] = 0x1F44A,// 👊 - [WIFIHAND] = 0x1F44B,// 👋 - [OKOK] = 0x1F44C,// 👌 - [EFFU] = 0x1F595,// 🖕 - [SPOCK] = 0x1F596,// 🖖 - [INUP] = 0x1F446,// 👆 - [THDN] = 0x1F44E,// 👎 - [THUP] = 0x1F44D,// 👍 - [TUMBLER] = 0x1F943,// ðŸĨƒ - [DRAGON0] = 0x1F409,// 🐉 - [DRAGON1] = 0x1F432,// ðŸē - [TIGER0] = 0x1F405,// 🐅 - [TIGER1] = 0x1F42F,// ðŸŊ - [COOL] = 0x1F192,// 🆒 - [UCHART] = 0x1F4C8,// 📈 - [DCHART] = 0x1F4C9,// 📉 - [BCHART] = 0x1F4CA,// 📊 - [NOPRCY] = 0x1F572,// ðŸ•ē - [PRCY] = 0x1F571,// ðŸ•ą - [BBB] = 0x1F171,// ðŸ…ą - [POO] = 0x1F4A9,// ðŸ’Đ - [HUNDR] = 0x1F4AF,// ðŸ’Ŋ - [EGGPL] = 0x1F346,// 🍆 - [WATER] = 0x1F4A6,// ðŸ’Ķ - [LIT] = 0x1F525,// ðŸ”Ĩ - [SNEK] = 0x1F40D,// 🐍 - [PENGUIN] = 0x1F427,// 🐧 - [BOAR] = 0x1F417,// 🐗 - [MONKEY] = 0x1F412,// 🐒 - [CHICK] = 0x1F425,// ðŸĨ - [DASH] = 0x1F4A8,// ðŸ’Ļ - [DIZZY] = 0x1F4AB,// ðŸ’Ŧ - [KEEB] = 0x1F5AE,// ðŸ–Ū - [HOLE] = 0x1F573,// ðŸ•ģ - [SAUCER] = 0x1F6F8// ðŸ›ļ - }; -//#endif // UNICODEMAP_ENABLE diff --git a/users/kuchosauronad0/unicode.h b/users/kuchosauronad0/unicode.h deleted file mode 100644 index 340b4cf94b..0000000000 --- a/users/kuchosauronad0/unicode.h +++ /dev/null @@ -1,64 +0,0 @@ -#pragma once - -#include "quantum.h" - -#ifdef UNICODEMAP_ENABLE -enum unicode_name { -OKOK, // -BANG, // â€― -IRONY, // âļŪ -DEGREE, // ° -THINK, // ðŸĪ” -GRIN, // ïŋ― -MONOCL, // 🧐 -DRUG0, // ðŸĪŠ -DRUG1, // ðŸĨī -CLOWN, // ðŸĪĄ -MNDBLWN, // ðŸĪŊ -MONEY, // ðŸĪ‘ -SHTUP, // ðŸĪ -PARTY, // ðŸĨģ -SMRK, // 😏 -WEARY, // ðŸ˜Đ -UNAMU, // 😒 -SPY, // ðŸ•ĩ -DAFUQ, // 👚 -FIST0, // ðŸĪ› -FIST1, // ðŸĪœ -FIST2, // ✊ -FIST3, // 👊 -WIFIHAND, // 👌 -EFFU, // 🖕 -SPOCK, // 🖖 -INUP, // 👆 -THDN, // 👎 -THUP, // 👍 -TUMBLER, // ðŸĨƒ -DRAGON0, // 🐉 -DRAGON1, // 🐅 -TIGER0, // 🐅 -TIGER1, // ðŸŊ -COOL, // 🆒 -UCHART, // 📈 -DCHART, // 📉 -BCHART, // 📊 -NOPRCY, // ðŸ•ē -PRCY, // ðŸ•ą -BBB, // ðŸ…ą -POO, // ðŸ’Đ -HUNDR, // ðŸ’Ŋ -EGGPL, // 🍆 -WATER, // ðŸ’Ķ -LIT, // ðŸ”Ĩ -SNEK, // 🐍 -PENGUIN, // 🐧 -BOAR, // 🐗 -MONKEY, // 🐒 -CHICK, // ðŸĨ -DASH, // ðŸ’Ļ -DIZZY, // ðŸ’Ŧ -KEEB, // ðŸ–Ū -HOLE, // ðŸ•ģ -SAUCER // ðŸ›ļ -}; -#endif diff --git a/users/kuchosauronad0/wrappers.h b/users/kuchosauronad0/wrappers.h deleted file mode 100644 index a17e4178ff..0000000000 --- a/users/kuchosauronad0/wrappers.h +++ /dev/null @@ -1,212 +0,0 @@ -#pragma once -#include "kuchosauronad0.h" -/* -Since our quirky block definitions are basically a list of comma separated -arguments, we need a wrapper in order for these definitions to be -expanded before being used as arguments to the LAYOUT_xxx macro. -*/ -#if (!defined(LAYOUT) && defined(KEYMAP)) -# define LAYOUT KEYMAP -#endif - -#define LAYOUT_ergodox_wrapper(...) LAYOUT_ergodox(__VA_ARGS__) -#define LAYOUT_ergodox_pretty_wrapper(...) LAYOUT_ergodox_pretty(__VA_ARGS__) -#define KEYMAP_wrapper(...) LAYOUT(__VA_ARGS__) -#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__) -#define LAYOUT_ortho_4x12_wrapper(...) LAYOUT_ortho_4x12(__VA_ARGS__) -#define LAYOUT_ortho_5x12_wrapper(...) LAYOUT_ortho_5x12(__VA_ARGS__) - -#define LAYOUT_collide39_base_wrapper(...) LAYOUT_collide39_base(__VA_ARGS__) - -/* -Blocks for each of the four major keyboard layouts -Organized so we can quickly adapt and modify all of them -at once, rather than for each keyboard, one at a time. -And this allows for much cleaner blocks in the keymaps. -For instance Tap/Hold for Control on all of the layouts -NOTE: These are all the same length. If you do a search/replace - then you need to add/remove underscores to keep the - lengths consistent. -*/ - -#define ___________________BLANK___________________ _______, _______, _______, _______, _______ - -#ifdef TAP_DANCE_ENABLE -# define _________________QWERTY_L1_________________ KC_Q, KC_DW, KC_EOL, KC_R, KC_TMX -# define _________________QWERTY_L2_________________ KC_BOL, KC_S, KC_D, KC_NW, KC_G -# define _________________QWERTY_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_PW -#else -# define _________________QWERTY_L1_________________ KC_Q, KC_W, KC_E, KC_R, KC_T -# define _________________QWERTY_L2_________________ KC_A, KC_S, KC_D, KC_F, KC_G -# define _________________QWERTY_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_B -#endif - -#define _________________QWERTY_R1_________________ KC_Y, KC_U, KC_I, KC_O, KC_P -#define _________________QWERTY_R2_________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN -#define _________________QWERTY_R3_________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLASH - -#define _________________PLOVER_L1_________________ KC_Q, KC_W, KC_E, KC_R, KC_T -#define _________________PLOVER_L2_________________ KC_A, KC_S, KC_D, KC_F, KC_G -#define _________________PLOVER_L3_________________ KC_NO, KC_NO, KC_C, KC_V, KC_NO - -#define _________________PLOVER_R1_________________ KC_Y, KC_U, KC_I, KC_O, KC_P -#define _________________PLOVER_R2_________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN -#define _________________PLOVER_R3_________________ KC_NO, KC_NO, KC_N, KC_M, KC_NO - -#define _________________COLEMAK_L1________________ KC_Q, KC_W, KC_F, KC_P, KC_G -#define _________________COLEMAK_L2________________ KC_A, KC_R, KC_S, KC_T, KC_D -#define _________________COLEMAK_L3________________ KC_Z, KC_X, KC_C, KC_V, KC_B - -#define _________________COLEMAK_R1________________ KC_J, KC_L, KC_U, KC_Y, KC_SCLN -#define _________________COLEMAK_R2________________ KC_H, KC_N, KC_E, KC_I, KC_O -#define _________________COLEMAK_R3________________ KC_K, KC_M, KC_COMM, KC_DOT, KC_SLASH - -#define ______________COLEMAK_MOD_DH_L1____________ KC_Q, KC_W, KC_F, KC_P, KC_B -#define ______________COLEMAK_MOD_DH_L2____________ KC_A, KC_R, KC_S, KC_T, KC_G -#define ______________COLEMAK_MOD_DH_L3____________ KC_Z, KC_X, KC_C, KC_D, KC_V - -#define ______________COLEMAK_MOD_DH_R1____________ KC_J, KC_L, KC_U, KC_Y, KC_SCLN -#define ______________COLEMAK_MOD_DH_R2____________ KC_M, KC_N, KC_E, KC_I, KC_O -#define ______________COLEMAK_MOD_DH_R3____________ KC_K, KC_H, KC_COMM, KC_DOT, KC_SLASH - -#define _________________DVORAK_L1_________________ KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y -#define _________________DVORAK_L2_________________ KC_A, KC_O, KC_E, KC_U, KC_I -#define _________________DVORAK_L3_________________ KC_SCLN, KC_Q, KC_J, KC_K, KC_X - -#define _________________DVORAK_R1_________________ KC_F, KC_G, KC_C, KC_R, KC_L -#define _________________DVORAK_R2_________________ KC_D, KC_H, KC_T, KC_N, KC_S -#define _________________DVORAK_R3_________________ KC_B, KC_M, KC_W, KC_V, KC_Z - -#define ________________DVORAK_AU_L1_______________ KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y -#define ________________DVORAK_AU_L2_______________ KC_O, KC_A, KC_E, KC_I, KC_U -#define ________________DVORAK_AU_L3_______________ KC_SCLN, KC_Q, KC_J, KC_K, KC_X - -#define ________________DVORAK_AU_R1_______________ KC_F, KC_G, KC_C, KC_R, KC_L -#define ________________DVORAK_AU_R2_______________ KC_D, KC_H, KC_T, KC_N, KC_S -#define ________________DVORAK_AU_R3_______________ KC_B, KC_M, KC_W, KC_V, KC_Z - -#define _________________WORKMAN_L1________________ KC_Q, KC_D, KC_R, KC_W, KC_B -#define _________________WORKMAN_L2________________ KC_A, KC_S, KC_H, KC_T, KC_G -#define _________________WORKMAN_L3________________ KC_Z, KC_X, KC_M, KC_C, KC_V - -#define _________________WORKMAN_R1________________ KC_J, KC_F, KC_U, KC_P, KC_SCLN -#define _________________WORKMAN_R2________________ KC_Y, KC_N, KC_E, KC_O, KC_I -#define _________________WORKMAN_R3________________ KC_K, KC_L, KC_COMM, KC_DOT, KC_SLASH - -#define _________________NORMAN_L1_________________ KC_Q, KC_W, KC_D, KC_F, KC_K -#define _________________NORMAN_L2_________________ KC_A, KC_S, KC_E, KC_T, KC_G -#define _________________NORMAN_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_B - -#define _________________NORMAN_R1_________________ KC_J, KC_U, KC_R, KC_L, KC_SCLN -#define _________________NORMAN_R2_________________ KC_Y, KC_N, KC_I, KC_O, KC_U -#define _________________NORMAN_R3_________________ KC_P, KC_M, KC_COMM, KC_DOT, KC_SLASH - -#define _________________MALTRON_L1________________ KC_Q, KC_P, KC_Y, KC_C, KC_B -#define _________________MALTRON_L2________________ KC_A, KC_N, KC_I, KC_S, KC_F -#define _________________MALTRON_L3________________ KC_SCLN, KC_SLSH, KC_J, KC_G, KC_COMM - -#define _________________MALTRON_R1________________ KC_V, KC_M, KC_U, KC_Z, KC_L -#define _________________MALTRON_R2________________ KC_D, KC_T, KC_D, KC_O, KC_R -#define _________________MALTRON_R3________________ KC_DOT, KC_W, KC_K, KC_MINS, KC_X - -#define _________________EUCALYN_L1________________ KC_SLSH, KC_COMM, KC_DOT, KC_F, KC_Q -#define _________________EUCALYN_L2________________ KC_A, KC_O, KC_E, KC_I, KC_U -#define _________________EUCALYN_L3________________ KC_Z, KC_X, KC_C, KC_V, KC_W - -#define _________________EUCALYN_R1________________ KC_M, KC_R, KC_D, KC_Y, KC_P -#define _________________EUCALYN_R2________________ KC_G, KC_T, KC_K, KC_S, KC_N -#define _________________EUCALYN_R3________________ KC_B, KC_H, KC_J, KC_L, KC_SCLN - -#define _____________CARPLAX_QFMLWY_L1_____________ KC_Q, KC_F, KC_M, KC_L, KC_W -#define _____________CARPLAX_QFMLWY_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R -#define _____________CARPLAX_QFMLWY_L3_____________ KC_Z, KC_V, KC_G, KC_C, KC_X - -#define _____________CARPLAX_QFMLWY_R1_____________ KC_Y, KC_U, KC_O, KC_B, KC_J -#define _____________CARPLAX_QFMLWY_R2_____________ KC_I, KC_A, KC_E, KC_H, KC_SCLN -#define _____________CARPLAX_QFMLWY_R3_____________ KC_P, KC_K, KC_COMM, KC_DOT, KC_SLSH - -#define _____________CARPLAX_QGMLWB_L1_____________ KC_Q, KC_G, KC_M, KC_L, KC_W -#define _____________CARPLAX_QGMLWB_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R -#define _____________CARPLAX_QGMLWB_L3_____________ KC_Z, KC_X, KC_C, KC_F, KC_J - -#define _____________CARPLAX_QGMLWB_R1_____________ KC_B, KC_Y, KC_U, KC_V, KC_SCLN -#define _____________CARPLAX_QGMLWB_R2_____________ KC_I, KC_A, KC_E, KC_O, KC_H -#define _____________CARPLAX_QGMLWB_R3_____________ KC_K, KC_P, KC_COMM, KC_DOT, KC_SLSH - -#define _____________CARPLAX_QGMLWY_L1_____________ KC_Q, KC_G, KC_M, KC_L, KC_W -#define _____________CARPLAX_QGMLWY_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R -#define _____________CARPLAX_QGMLWY_L3_____________ KC_Z, KC_X, KC_C, KC_V, KC_J - -#define _____________CARPLAX_QGMLWY_R1_____________ KC_Y, KC_F, KC_U, KC_B, KC_SCLN -#define _____________CARPLAX_QGMLWY_R2_____________ KC_I, KC_A, KC_E, KC_O, KC_H -#define _____________CARPLAX_QGMLWY_R3_____________ KC_K, KC_P, KC_COMM, KC_DOT, KC_SLSH - -#ifdef UNICODE_ENABLE -# define _______________UNICODE_L1__________________ UC_DISA,UC_DISA, UC_DISA, UC_DISA, UC_DISA -# define _______________UNICODE_L2__________________ UC_DISA,UC_DISA, UC_DISA, UC_DISA, UC_DISA -# define _______________UNICODE_L3__________________ UC_DISA,UC_DISA, UC_DISA, UC_DISA, UC_DISA - -# define _______________UNICODE_R1__________________ UC_SHRG, UC_SHRG, UC_SHRG, UC_SHRG, UC_SHRG -# define _______________UNICODE_R2__________________ UC_SHRG, UC_SHRG, UC_SHRG, UC_SHRG, UC_SHRG -# define _______________UNICODE_R3__________________ UC_SHRG, UC_SHRG, UC_SHRG, UC_SHRG, UC_SHRG -#endif - -#ifdef UNICODEMAP_ENABLE -# define _______________UNICODE_L1__________________ UM(SMRK), UM(THINK), UM(CLOWN), UM(HUNDR), UM(BANG) -# define _______________UNICODE_L2__________________ UM(GRIN), UM(MONKEY), UM(OKOK), UM(EGGPL), UM(LIT) -# define _______________UNICODE_L3__________________ UM(WEARY), UM(UNAMU), UM(EFFU), UM(MONOCL), UM(IRONY) - -# define _______________UNICODE_R1__________________ UM(DRUG0), UM(THUP), UM(INUP), UM(DIZZY), UM(COOL) -# define _______________UNICODE_R2__________________ UM(FIST0), UM(FIST2), UM(FIST3), UM(FIST1), UM(OKOK) -# define _______________UNICODE_R3__________________ UM(MNDBLWN), UM(THDN), UM(SPOCK), UM(HOLE), UM(DASH) -#endif - -#define ________________NUMBER_LEFT________________ KC_1, KC_2, KC_3, KC_4, KC_5 -#define ________________NUMBER_RIGHT_______________ KC_6, KC_7, KC_8, KC_9, KC_0 -#define _________________FUNC_LEFT_________________ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5 -#define _________________FUNC_RIGHT________________ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10 - -#define _________________MEDIA_RIGHT_______________ KC_MUTE, KC_MPRV, KC_MPLY, KC_MNXT, KC_MSTP -#define _________________MEDIA_LEFT________________ KC_VOLD, KC_VOLD, KC_MUTE, KC_VOLU, KC_VOLU - -#define _________________LOWER_L1__________________ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC -#define _________________LOWER_L2__________________ ___________________BLANK___________________ -#define _________________LOWER_L3__________________ _______, _______, _______, OS_UNI, TM_X - -#define _________________LOWER_R1__________________ KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN -#define _________________LOWER_R2__________________ _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR -#define _________________LOWER_R3__________________ _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT - -#define _________________RAISE_L1__________________ ________________NUMBER_LEFT________________ -#define _________________RAISE_L2__________________ ___________________BLANK___________________ -#define _________________RAISE_L3__________________ ___________________BLANK___________________ - -#define _________________RAISE_R1__________________ ________________NUMBER_RIGHT_______________ -#define _________________RAISE_R2__________________ _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC -#define _________________RAISE_R3__________________ _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END - -#define _________________ADJUST_L1_________________ QWERTY, COLEMAK, DVORAK, WORKMAN, PLOVER -#define _________________ADJUST_L2_________________ _________________FUNC_LEFT_________________ -#define _________________ADJUST_L3_________________ _________________MEDIA_LEFT________________ - -#define _________________ADJUST_R1_________________ SEC1, SEC2, SEC3, SEC4, SEC5 -#define _________________ADJUST_R2_________________ _________________FUNC_RIGHT________________ -#define _________________ADJUST_R3_________________ _________________MEDIA_RIGHT_______________ - -#define _________________RGB_UP____________________ RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG -#define _________________RGB_CENTER________________ MU_TOGG, CK_TOGG, AU_ON, AU_OFF, AG_NORM -#define _________________RGB_DOWN__________________ RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, KC_RGB_T - -#define _________________RGB_R1____________________ RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG -#define _________________RGB_R2____________________ MU_TOGG, CK_TOGG, AU_ON, AU_OFF, AG_NORM -#define _________________RGB_R3____________________ RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, KC_RGB_T - -#define __________________GAMEPAD_L1_______________ _______, KC_Q, KC_W, KC_E, _______ -#define __________________GAMEPAD_L2_______________ _______, KC_A, KC_S, KC_D, _______ -#define __________________GAMEPAD_L3_______________ KC_1, KC_2, KC_3, KC_4, KC_5 - -#define __________________GAMEPAD_R1_______________ _______, KC_U, KC_UP, KC_O, _______ -#define __________________GAMEPAD_R2_______________ _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______ -#define __________________GAMEPAD_R3_______________ KC_6, KC_7, KC_8, KC_9, KC_0 -/* vi: ft=c:tw=80:sw=2:ts=2:sts=2:et */ - diff --git a/users/losinggeneration/README.md b/users/losinggeneration/README.md deleted file mode 100644 index 852103fc69..0000000000 --- a/users/losinggeneration/README.md +++ /dev/null @@ -1,185 +0,0 @@ -losinggeneration's ortholinear layout -============================ - -### Features - -- Main layer(s) - - The left space bar key has been changed to delete to have backspace - & delete on the same main layer. - - Adujst is a tap dance with one tap goes to the Adjust layer, second tap - goes to the Numpad layer, a third tap goes to the Mouse layer. More taps - are an error and disables tapping until you stop and try again. - - Ctrl when tapped once & Ctrl+Alt when tapped twice - - Left Alt when tapped once & Right Alt when tapped twice. - - Left GUI when tapped once & right GUI when tapped twice. This is - because I have a compose key on the right GUI key. - - Left shift is a one shot modifier. - - Enter when tapped Shift when held. - - Esc when tapped Ctrl when held. -- Lower & Raise - - Removed ISO ~, ISO |, ISO #, ISO /, Media Next, & Media Play - - Added PgUp, PgDn, Home, & End under the home row - - Added Mute next to Vol- -- New layers: Workman, Game, Numpad, & Mouse - -## Layouts -These include the 5x12 layout since it's nearly identical to the 4x12 layout. -The only difference is the top row is removed for the 4x12 layout. - -The Adjust layer keyboard specific, so it's described with the specific -keyboard. - -### Qwerty - -``` - ,-----------------------------------------..-----------------------------------------. - | ` | 1 | 2 | 3 | 4 | 5 || 6 | 7 | 8 | 9 | 0 | Del | - |------+------+------+------+------+------||------+------+------+------+------+------| - | Tab | Q | W | E | R | T || Y | U | I | O | P | Bksp | - |------+------+------+------+------+------||------+------+------+------+------+------| - | Esc | A | S | D | F | G || H | J | K | L | ; | " | - |------+------+------+------+------+------||------+------+------+------+------+------| - | Shift| Z | X | C | V | B || N | M | , | . | / |Enter | - |------+------+------+------+------+------||------+------+------+------+------+------| - |Adjust| Ctrl | Alt | GUI |Lower | Bksp ||Space |Raise | Left | Down | Up |Right | - `-----------------------------------------'`-----------------------------------------' -``` - -### Colemak - -``` - ,-----------------------------------------.,-----------------------------------------. - | ` | 1 | 2 | 3 | 4 | 5 || 6 | 7 | 8 | 9 | 0 | Del | - |------+------+------+------+------+------||------+------+------+------+------+------| - | Tab | Q | W | F | P | G || J | L | U | Y | ; | Bksp | - |------+------+------+------+------+------||------+------+------+------+------+------| - | Esc | A | R | S | T | D || H | N | E | I | O | " | - |------+------+------+------+------+------||------+------+------+------+------+------| - | Shift| Z | X | C | V | B || K | M | , | . | / |Enter | - |------+------+------+------+------+------||------+------+------+------+------+------| - |Adjust| Ctrl | Alt | GUI |Lower | Bksp ||Space |Raise | Left | Down | Up |Right | - `-----------------------------------------'`-----------------------------------------' -``` - -### Workman - -``` - ,-----------------------------------------..-----------------------------------------. - | ` | 1 | 2 | 3 | 4 | 5 || 6 | 7 | 8 | 9 | 0 | Del | - |------+------+------+------+------+------||------+------+------+------+------+------| - | Tab | Q | D | R | W | B || J | F | U | P | ; | Bksp | - |------+------+------+------+------+------||------+------+------+------+------+------| - | Esc | A | S | H | T | G || Y | N | E | O | I | " | - |------+------+------+------+------+------||------+------+------+------+------+------| - | Shift| Z | X | M | C | V || K | L | , | . | / |Enter | - |------+------+------+------+------+------||------+------+------+------+------+------| - |Adjust| Ctrl | Alt | GUI |Lower | Bksp ||Space |Raise | Left | Down | Up |Right | - `-----------------------------------------'`-----------------------------------------' -``` - -### Dvorak - -``` - ,-----------------------------------------..-----------------------------------------. - | ` | 1 | 2 | 3 | 4 | 5 || 6 | 7 | 8 | 9 | 0 | Del | - |------+------+------+------+------+------||------+------+------+------+------+------| - | Tab | " | , | . | P | Y || F | G | C | R | L | Bksp | - |------+------+------+------+------+------||------+------+------+------+------+------| - | Esc | A | O | E | U | I || D | H | T | N | S | / | - |------+------+------+------+------+------||------+------+------+------+------+------| - | Shift| ; | Q | J | K | X || B | M | W | V | Z |Enter | - |------+------+------+------+------+------||------+------+------+------+------+------| - |Adjust| Ctrl | Alt | GUI |Lower | Bksp ||Space |Raise | Left | Down | Up |Right | - `-----------------------------------------'`-----------------------------------------' -``` - -### Game (Qwerty without one shot modifiers & tap dancing) - -``` - ,-----------------------------------------..-----------------------------------------. - | ` | 1 | 2 | 3 | 4 | 5 || 6 | 7 | 8 | 9 | 0 | Del | - |------+------+------+------+------+------||------+------+------+------+------+------| - | Tab | Q | W | E | R | T || Y | U | I | O | P | Bksp | - |------+------+------+------+------+------||------+------+------+------+------+------| - | Esc | A | S | D | F | G || H | J | K | L | ; | " | - |------+------+------+------+------+------||------+------+------+------+------+------| - | Shift| Z | X | C | V | B || N | M | , | . | / |Enter | - |------+------+------+------+------+------||------+------+------+------+------+------| - |Adjust| Ctrl | Alt | GUI |Lower |Space ||Space |Raise | Left | Down | Up |Right | - `-----------------------------------------'`-----------------------------------------' -``` - -### Number pad - -``` - ,-----------------------------------------..-----------------------------------------. - | XXX | XXX | XXX | XXX | XXX | XXX || XXX | NLCK | * | / | BKSP | BKSP | - |------+------+------+------+------+------||------+------+------+------+------+------| - | Tab | XXX | XXX | XXX | XXX | XXX || NLCK | 7 | 8 | 9 | - | BKSP | - |------+------+------+------+------+------||------+------+------+------+------+------| - | Esc | XXX | XXX | XXX | XXX | XXX || * | 4 | 5 | 6 | + | BKSP | - |------+------+------+------+------+------||------+------+------+------+------+------| - |Shift | XXX | XXX | XXX | XXX | XXX || / | 1 | 2 | 3 | ENT | XXX | - |------+------+------+------+------+------||------+------+------+------+------+------| - |Adjust| Ctrl | Alt | GUI | XXX |Space ||Space | 0 | 0 | . | ENT | XXX | - `-----------------------------------------''-----------------------------------------' -``` - -### Mouse movement - -* M is short for Mouse -* MW is short for Mouse Wheel -* MB is short for Mouse Button -* MA is short for Mouse Acceleration - -  -* MB\_1 is the left click -* MB\_2 is the right click -* MB\_3 is the middle click - -``` - ,-----------------------------------------..-----------------------------------------. - | XXX | XXX | XXX | XXX | XXX | XXX || XXX | XXX | XXX | XXX | XXX | XXX | - |------+------+------+------+------+------||------+------+------+------+------+------| - | Tab | MB_1 | MB_3 | MB_2 | MB_4 | MB_5 || MA_0 | MB_1 | MB_3 | MB_2 | MB_4 | MB_5 | - |------+------+------+------+------+------||------+------+------+------+------+------| - | Esc | MW_L | MW_U | MW_D | MW_R | XXX || MA_1 | M_LT | M_UP | M_DN | M_RT | XXX | - |------+------+------+------+------+------||------+------+------+------+------+------| - |Shift | MA_0 | MA_1 | MA_2 | XXX | XXX || MA_2 | MW_L | MW_U | MW_D | MW_R | XXX | - |------+------+------+------+------+------||------+------+------+------+------+------| - |Adjust| Ctrl | Alt | GUI | XXX |Space || XXX | XXX | XXX | XXX | XXX | XXX | - `-----------------------------------------''-----------------------------------------' -``` - -### Lower - -``` - ,-----------------------------------------..-----------------------------------------. - | ~ | ! | @ | # | $ | % || ^ | & | * | ( | ) | Del | - |------+------+------+------+------+------||------+------+------+------+------+------| - | ~ | ! | @ | # | $ | % || ^ | & | * | ( | ) | Bksp | - |------+------+------+------+------+------||------+------+------+------+------+------| - | Del | F1 | F2 | F3 | F4 | F5 || F6 | _ | + | | \ | | | - |------+------+------+------+------+------||------+------+------+------+------+------| - | | F7 | F8 | F9 | F10 | F11 || F12 | PgUp | PgDn | Home | End | âđ | - |------+------+------+------+------+------||------+------+------+------+------+------| - | | | | | | || | | Mute | Vol- | Vol+ | âŊ | - `-----------------------------------------'`-----------------------------------------' -``` - -### Raise - -``` - ,-----------------------------------------..-----------------------------------------. - | ` | 1 | 2 | 3 | 4 | 5 || 6 | 7 | 8 | 9 | 0 | Del | - |------+------+------+------+------+------||------+------+------+------+------+------| - | ` | 1 | 2 | 3 | 4 | 5 || 6 | 7 | 8 | 9 | 0 | Bksp | - |------+------+------+------+------+------||------+------+------+------+------+------| - | Del | F1 | F2 | F3 | F4 | F5 || F6 | - | = | [ | ] | \ | - |------+------+------+------+------+------||------+------+------+------+------+------| - | | F7 | F8 | F9 | F10 | F11 || F12 | PgUp | PgDn | Home | End | âđ | - |------+------+------+------+------+------||------+------+------+------+------+------| - | | | | | | || | | Mute | Vol- | Vol+ | âŊ | - `-----------------------------------------''-----------------------------------------' -``` - diff --git a/users/losinggeneration/losinggeneration-common.h b/users/losinggeneration/losinggeneration-common.h deleted file mode 100644 index 857117ca16..0000000000 --- a/users/losinggeneration/losinggeneration-common.h +++ /dev/null @@ -1,71 +0,0 @@ -#ifndef LOSINGGENERATION_COMMON_H -#define LOSINGGENERATION_COMMON_H - -/* Custom keys & combinations to be shorter for keymaps */ -#define KC_LCA LCA(KC_NO) - -#define OSM_LSFT OSM(MOD_LSFT) -#define TD_CTL TD(TD_CTL_CTLALT) -#define TD_GUI TD(TD_LGUI_RGUI) -#define TD_ALT TD(TD_LALT_RALT) -#define MT_ENT SFT_T(KC_ENT) -#define MT_ESC CTL_T(KC_ESC) - -/* Custom layer movements for keymaps */ -#define TD_ADJ TD(TD_ADJUST) -#define TO_GAME TO(_GAME) -#define TO_MS TO(_MOUSE) -#define TO_NUM TO(_NUMPAD) -#define MO_ADJ MO(_ADJUST) - -/* Mouse keys */ -#define MS_BTN1 KC_MS_BTN1 -#define MS_BTN2 KC_MS_BTN2 -#define MS_BTN3 KC_MS_BTN3 -#define MS_BTN4 KC_MS_BTN4 -#define MS_BTN5 KC_MS_BTN5 -#define MS_LEFT KC_MS_LEFT -#define MS_DOWN KC_MS_DOWN -#define MS_UP KC_MS_UP -#define MS_RGHT KC_MS_RIGHT -#define MW_LEFT KC_MS_WH_LEFT -#define MW_DOWN KC_MS_WH_DOWN -#define MW_UP KC_MS_WH_UP -#define MW_RGHT KC_MS_WH_RIGHT -#define MS_ACL0 KC_MS_ACCEL0 -#define MS_ACL1 KC_MS_ACCEL1 -#define MS_ACL2 KC_MS_ACCEL2 - -/* - * This will expand values sent to it to send to the KEYMAP macro so defines - * can be used by KEYMAP - */ -#define CATMAP(...) LAYOUT(__VA_ARGS__) - -/* - 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 _QWERTY 0 -#define _COLEMAK 1 -#define _WORKMAN 2 -#define _DVORAK 3 -#define _GAME 4 -#define _NUMPAD 5 -#define _MOUSE 6 -#define _LOWER 14 -#define _RAISE 15 -#define _ADJUST 16 - -enum custom_keycodes { - QWERTY = SAFE_RANGE, - COLEMAK, - WORKMAN, - DVORAK, - LOWER, - RAISE, -}; - -#endif diff --git a/users/losinggeneration/losinggeneration-config.h b/users/losinggeneration/losinggeneration-config.h deleted file mode 100644 index e1719aa9e7..0000000000 --- a/users/losinggeneration/losinggeneration-config.h +++ /dev/null @@ -1,29 +0,0 @@ -/* -Copyright 2017 Danny Nguyen -Copyright 2018 Harley Laue - -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 -long with this program. If not, see . -*/ - -#ifndef LOSINGGENERATION_CONFIG_H -#define LOSINGGENERATION_CONFIG_H - -#define MOUSEKEY_DELAY 100 -#define MOUSEKEY_INTERVAL 20 -#define MOUSEKEY_MAX_SPEED 10 -#define MOUSEKEY_TIME_TO_MAX 20 -#define MOUSEKEY_WHEEL_MAX_SPEED 8 -#define MOUSEKEY_WHEEL_TIME_TO_MAX 20 - -#endif diff --git a/users/losinggeneration/losinggeneration-keymap.h b/users/losinggeneration/losinggeneration-keymap.h deleted file mode 100644 index 14e25adecc..0000000000 --- a/users/losinggeneration/losinggeneration-keymap.h +++ /dev/null @@ -1,379 +0,0 @@ -#ifndef LOSINGGENERATION_KEYMAP_H -#define LOSINGGENERATION_KEYMAP_H - -#include "action_layer.h" -#include "eeconfig.h" -#include "losinggeneration-common.h" - -/* Tap dance keycodes */ -enum tap_dance_keycodes { - TD_CTL_CTLALT = 0, - TD_LGUI_RGUI, - TD_LALT_RALT, - TD_ADJUST, -}; - -/* - Used to indicate a CTRL should be pressed on one press, or CTRL+ALT on - a double tap -*/ -void dance_ctl_ctlalt_each(tap_dance_state_t *state, void *user_data) { - register_code(KC_LCTL); - if(state->count > 1) { - register_code(KC_LALT); - } -} - -/* Used to release CTRL or the double tapped variant CTRL+ALT */ -void dance_ctl_ctlalt_reset(tap_dance_state_t *state, void *user_data) { - unregister_code(KC_LCTL); - if(state->count > 1) { - unregister_code(KC_LALT); - } -} - -/* - Set ADJUST layer on the first press and off after that. - Each is used to make sure ADJUST activates as soon as it's pressed the first - time. -*/ -void dance_adj_each(tap_dance_state_t *state, void *user_data) { - if(state->count == 1) { - layer_on(_ADJUST); - } else { - layer_off(_ADJUST); - } -} - -/* Set NUMPAD layer on second tap and MOUSE layer on 3rd */ -void dance_adj_finish(tap_dance_state_t *state, void *user_data) { - switch(state->count) { - case 1: break; - case 2: - layer_on(_NUMPAD); - break; - case 3: - layer_on(_MOUSE); - break; - default: - reset_tap_dance(state); - break; - } -} - -/* Turn off any layer that may have been tapped on */ -void dance_adj_reset(tap_dance_state_t *state, void *user_data) { - switch(state->count) { - case 1: - layer_off(_ADJUST); - break; - case 2: - layer_off(_NUMPAD); - break; - case 3: - layer_off(_MOUSE); - break; - } -} - -tap_dance_action_t tap_dance_actions[] = { - [TD_CTL_CTLALT] = ACTION_TAP_DANCE_FN_ADVANCED(dance_ctl_ctlalt_each, NULL, dance_ctl_ctlalt_reset), - [TD_LGUI_RGUI] = ACTION_TAP_DANCE_DOUBLE(KC_LGUI, KC_RGUI), - [TD_LALT_RALT] = ACTION_TAP_DANCE_DOUBLE(KC_LALT, KC_RALT), - [TD_ADJUST] = ACTION_TAP_DANCE_FN_ADVANCED(dance_adj_each, dance_adj_finish, dance_adj_reset), -}; - -/* - * ,-----------------------------------------..-----------------------------------------. - * |Adjust| Ctrl | Alt | GUI |Lower | Del ||Space |Raise | Left | Down | Up |Right | - * `-----------------------------------------'`-----------------------------------------' - */ -#define BOTTOM_GRID_ROW \ - TD_ADJ ,TD_CTL , TD_ALT , TD_GUI , LOWER , KC_DEL , KC_SPC , RAISE , KC_LEFT, KC_DOWN, KC_UP , KC_RGHT - -/* - * ,-----------------------------------------..-----------------------------------------. - * |Adjust| Ctrl | Alt | GUI |Lower |Space ||Space |Raise | Left | Down | Up |Right | - * `-----------------------------------------'`-----------------------------------------' - */ -#define BOTTOM_MIT_ROW \ - TD_ADJ ,TD_CTL , TD_ALT , TD_GUI , LOWER , KC_SPC , KC_SPC , RAISE , KC_LEFT, KC_DOWN, KC_UP , KC_RGHT - -#ifdef USE_MIT_LAYOUT -#define BOTTOM_ROW BOTTOM_MIT_ROW - -/* - * ,-----------------------------------------..-----------------------------------------. - * | | F7 | F8 | F9 | F10 | F11 || F12 | PgUp | PgDn | Home | End | âđ | - * |------+------+------+------+------+------||------+------+------+------+------+------| - * | | | | | | || | | Mute | Vol- | Vol+ | âŊ | - * `-----------------------------------------'`-----------------------------------------' - */ -#define BOTTOM_RAISE_LOWER_ROWS \ - _______, KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_PGUP, KC_PGDN, KC_HOME, KC_END , KC_MSTP, \ - _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY - -#else -#define BOTTOM_ROW BOTTOM_GRID_ROW - -/* - * ,-----------------------------------------..-----------------------------------------. - * | | F7 | F8 | F9 | F10 | F11 || F12 | PgUp | PgDn | Home | End | âđ | - * |------+------+------+------+------+------||------+------+------+------+------+------| - * | | | | | | || Bksp | | Mute | Vol- | Vol+ | âŊ | - * `-----------------------------------------'`-----------------------------------------' - */ -#define BOTTOM_RAISE_LOWER_ROWS \ - _______, KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_PGUP, KC_PGDN, KC_HOME, KC_END , KC_MSTP, \ - _______, _______, _______, _______, _______, KC_BSPC, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY -#endif - - -/* - * ,-----------------------------------------..-----------------------------------------. - * | Tab | || | Bksp | - * `-----------------------------------------'`-----------------------------------------' - */ -#define STD_TAB_ROW(...) KC_TAB, __VA_ARGS__, KC_BSPC - -/* - * ,-----------------------------------------..-----------------------------------------. - * | Esc | || | - * `-----------------------------------------'`-----------------------------------------' - */ - -#define STD_ESC_ROW(...) MT_ESC, __VA_ARGS__ - -/* - * ,-----------------------------------------..-----------------------------------------. - * | Shift| || |Enter | - * `-----------------------------------------'`-----------------------------------------' - */ -#define STD_LSFT_ROW(...) OSM_LSFT, __VA_ARGS__, MT_ENT - -/* Qwerty - * ,-----------------------------------------..-----------------------------------------. - * | Tab | Q | W | E | R | T || Y | U | I | O | P | Bksp | - * |------+------+------+------+------+------||------+------+------+------+------+------| - * | Esc | A | S | D | F | G || H | J | K | L | ; | " | - * |------+------+------+------+------+------||------+------+------+------+------+------| - * | Shift| Z | X | C | V | B || N | M | , | . | / |Enter | - * |------+------+------+------+------+------||------+------+------+------+------+------| - * |Adjust| Ctrl | Alt | GUI |Lower | Del ||Space |Raise | Left | Down | Up |Right | - * `-----------------------------------------'`-----------------------------------------' - */ -#define QWERTY_LAYER \ - STD_TAB_ROW( KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ), \ - STD_ESC_ROW( KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN , KC_QUOT), \ - STD_LSFT_ROW(KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH), \ - BOTTOM_ROW - -/* Colemak - * ,-----------------------------------------.,-----------------------------------------. - * | Tab | Q | W | F | P | G || J | L | U | Y | ; | Bksp | - * |------+------+------+------+------+------||------+------+------+------+------+------| - * | Esc | A | R | S | T | D || H | N | E | I | O | " | - * |------+------+------+------+------+------||------+------+------+------+------+------| - * | Shift| Z | X | C | V | B || K | M | , | . | / |Enter | - * |------+------+------+------+------+------||------+------+------+------+------+------| - * |Adjust| Ctrl | Alt | GUI |Lower | Del ||Space |Raise | Left | Down | Up |Right | - * `-----------------------------------------'`-----------------------------------------' - */ -#define COLEMAK_LAYER \ - STD_TAB_ROW( KC_Q , KC_W , KC_F , KC_P , KC_G , KC_J , KC_L , KC_U , KC_Y , KC_SCLN), \ - STD_ESC_ROW( KC_A , KC_R , KC_S , KC_T , KC_D , KC_H , KC_N , KC_E , KC_I , KC_O , KC_QUOT), \ - STD_LSFT_ROW(KC_Z , KC_X , KC_C , KC_V , KC_B , KC_K , KC_M , KC_COMM, KC_DOT , KC_SLSH), \ - BOTTOM_ROW - -/* Workman - * ,-----------------------------------------..-----------------------------------------. - * | Tab | Q | D | R | W | B || J | F | U | P | ; | Bksp | - * |------+------+------+------+------+------||------+------+------+------+------+------| - * | Esc | A | S | H | T | G || Y | N | E | O | I | " | - * |------+------+------+------+------+------||------+------+------+------+------+------| - * | Shift| Z | X | M | C | V || K | L | , | . | / |Enter | - * |------+------+------+------+------+------||------+------+------+------+------+------| - * |Adjust| Ctrl | Alt | GUI |Lower | Del ||Space |Raise | Left | Down | Up |Right | - * `-----------------------------------------'`-----------------------------------------' - */ -#define WORKMAN_LAYER \ - STD_TAB_ROW( KC_Q , KC_D , KC_R , KC_W , KC_B , KC_J , KC_F , KC_U , KC_P , KC_SCLN), \ - STD_ESC_ROW( KC_A , KC_S , KC_H , KC_T , KC_G , KC_Y , KC_N , KC_E , KC_O , KC_I , KC_QUOT), \ - STD_LSFT_ROW(KC_Z , KC_X , KC_M , KC_C , KC_V , KC_K , KC_L , KC_COMM, KC_DOT , KC_SLSH), \ - BOTTOM_ROW - -/* Dvorak - * ,-----------------------------------------..-----------------------------------------. - * | Tab | " | , | . | P | Y || F | G | C | R | L | Bksp | - * |------+------+------+------+------+------||------+------+------+------+------+------| - * | Esc | A | O | E | U | I || D | H | T | N | S | / | - * |------+------+------+------+------+------||------+------+------+------+------+------| - * | Shift| ; | Q | J | K | X || B | M | W | V | Z |Enter | - * |------+------+------+------+------+------||------+------+------+------+------+------| - * |Adjust| Ctrl | Alt | GUI |Lower | Del ||Space |Raise | Left | Down | Up |Right | - * `-----------------------------------------'`-----------------------------------------' - */ -#define DVORAK_LAYER \ - STD_TAB_ROW( KC_QUOT, KC_COMM, KC_DOT , KC_P , KC_Y , KC_F , KC_G , KC_C , KC_R , KC_L), \ - STD_ESC_ROW( KC_A , KC_O , KC_E , KC_U , KC_I , KC_D , KC_H , KC_T , KC_N , KC_S , KC_SLSH), \ - STD_LSFT_ROW(KC_SCLN, KC_Q , KC_J , KC_K , KC_X , KC_B , KC_M , KC_W , KC_V , KC_Z), \ - BOTTOM_ROW - -/* Game (Qwerty without one shot modifiers & tap dancing) - * ,-----------------------------------------..-----------------------------------------. - * | Tab | Q | W | E | R | T || Y | U | I | O | P | Bksp | - * |------+------+------+------+------+------||------+------+------+------+------+------| - * | Esc | A | S | D | F | G || H | J | K | L | ; | " | - * |------+------+------+------+------+------||------+------+------+------+------+------| - * | Shift| Z | X | C | V | B || N | M | , | . | / |Enter | - * |------+------+------+------+------+------||------+------+------+------+------+------| - * |Adjust| Ctrl | Alt | GUI |Lower |Space ||Space |Raise | Left | Down | Up |Right | - * `-----------------------------------------'`-----------------------------------------' - */ -#define GAME_LAYER \ - KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_BSPC, \ - KC_ESC , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, \ - KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_ENT , \ - MO_ADJ , KC_LCTL, KC_LALT, KC_LGUI, LOWER , KC_SPC , KC_SPC , RAISE , KC_LEFT, KC_DOWN, KC_UP , KC_RGHT - -/* Number pad - * ,-----------------------------------------..-----------------------------------------. - * | Tab | XXX | XXX | XXX | XXX | XXX || NLCK | 7 | 8 | 9 | - | BKSP | - * |------+------+------+------+------+------||------+------+------+------+------+------| - * | Esc | XXX | XXX | XXX | XXX | XXX || * | 4 | 5 | 6 | + | BKSP | - * |------+------+------+------+------+------||------+------+------+------+------+------| - * |Shift | XXX | XXX | XXX | XXX | XXX || / | 1 | 2 | 3 | ENT | XXX | - * |------+------+------+------+------+------||------+------+------+------+------+------| - * |Adjust| Ctrl | Alt | GUI | XXX |Space ||Space | 0 | 0 | . | ENT | XXX | - * `-----------------------------------------''-----------------------------------------' - */ -#define NUMPAD_LAYER \ - KC_TAB , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_NUM, KC_P7 , KC_P8 , KC_P9 , KC_PMNS, KC_BSPC, \ - KC_ESC , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PAST, KC_P4 , KC_P5 , KC_P6 , KC_PPLS, KC_BSPC, \ - KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PSLS, KC_P1 , KC_P2 , KC_P3 , KC_PENT, XXXXXXX, \ - TD_ADJ , TD_CTL , TD_ALT , TD_GUI , XXXXXXX, KC_SPC , KC_SPC , KC_P0 , KC_P0 , KC_PDOT, KC_PENT, XXXXXXX - -/* Mouse movement - * ,-----------------------------------------..-----------------------------------------. - * | Tab | MB_1 | MB_3 | MB_2 | MB_4 | MB_5 || MA_0 | MB_1 | MB_3 | MB_2 | MB_4 | MB_5 | - * |------+------+------+------+------+------||------+------+------+------+------+------| - * | Esc | MW_L | MW_U | MW_D | MW_R | XXX || MA_1 | M_LT | M_UP | M_DN | M_RT | XXX | - * |------+------+------+------+------+------||------+------+------+------+------+------| - * |Shift | MA_0 | MA_1 | MA_2 | XXX | XXX || MA_2 | MW_L | MW_U | MW_D | MW_R | XXX | - * |------+------+------+------+------+------||------+------+------+------+------+------| - * |Adjust| Ctrl | Alt | GUI | XXX |Space || XXX | XXX | XXX | XXX | XXX | XXX | - * `-----------------------------------------''-----------------------------------------' - */ -#define MOUSE_LAYER \ - KC_TAB , MS_BTN1, MS_BTN3, MS_BTN2, MS_BTN4, MS_BTN5, MS_ACL0, MS_BTN1, MS_BTN3, MS_BTN2, MS_BTN4, MS_BTN5, \ - KC_ESC , MW_LEFT, MW_DOWN, MW_UP , MW_RGHT, XXXXXXX, MS_ACL1, MS_LEFT, MS_DOWN, MS_UP , MS_RGHT, XXXXXXX, \ - KC_LSFT, MS_ACL0, MS_ACL1, MS_ACL2, XXXXXXX, XXXXXXX, MS_ACL2, MW_LEFT, MW_DOWN, MW_UP , MW_RGHT, XXXXXXX, \ - TD_ADJ , TD_CTL , TD_ALT , TD_GUI , XXXXXXX, KC_SPC , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX - -/* Lower - * ,-----------------------------------------..-----------------------------------------. - * | ~ | ! | @ | # | $ | % || ^ | & | * | ( | ) | Bksp | - * |------+------+------+------+------+------||------+------+------+------+------+------| - * | Del | F1 | F2 | F3 | F4 | F5 || F6 | _ | + | | \ | | | - * |------+------+------+------+------+------||------+------+------+------+------+------| - * | | F7 | F8 | F9 | F10 | F11 || F12 | PgUp | PgDn | Home | End | âđ | - * |------+------+------+------+------+------||------+------+------+------+------+------| - * | | | | | | || | | Mute | Vol- | Vol+ | âŊ | - * `-----------------------------------------'`-----------------------------------------' - */ -#define LOWER_LAYER \ - KC_TILD, KC_EXLM, KC_AT , KC_HASH, KC_DLR , KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \ - KC_DEL , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \ - BOTTOM_RAISE_LOWER_ROWS - -/* Raise - * ,-----------------------------------------..-----------------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 || 6 | 7 | 8 | 9 | 0 | Bksp | - * |------+------+------+------+------+------||------+------+------+------+------+------| - * | Del | F1 | F2 | F3 | F4 | F5 || F6 | - | = | [ | ] | \ | - * |------+------+------+------+------+------||------+------+------+------+------+------| - * | | F7 | F8 | F9 | F10 | F11 || F12 | PgUp | PgDn | Home | End | âđ | - * |------+------+------+------+------+------||------+------+------+------+------+------| - * | | | | | | || | | Mute | Vol- | Vol+ | âŊ | - * `-----------------------------------------''-----------------------------------------' - */ -#define RAISE_LAYER \ - KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_BSPC, \ - KC_DEL , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_MINS, KC_EQL , KC_LBRC, KC_RBRC, KC_BSLS, \ - BOTTOM_RAISE_LOWER_ROWS - -#ifdef AUDIO_ENABLE -float tone_qwerty[][2] = SONG(QWERTY_SOUND); -float tone_dvorak[][2] = SONG(DVORAK_SOUND); -float tone_colemak[][2] = SONG(COLEMAK_SOUND); -float tone_workman[][2] = SONG(PLOVER_SOUND); -#else -float tone_qwerty; -float tone_dvorak; -float tone_colemak; -float tone_workman; -#define PLAY_SONG(tone) -#endif - -void persistent_default_layer_set(uint16_t default_layer) { - layer_state_set(default_layer); - eeconfig_update_default_layer(default_layer); - default_layer_set(default_layer); -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case QWERTY: - if (record->event.pressed) { - PLAY_SONG(tone_qwerty); - persistent_default_layer_set(1UL<<_QWERTY); - } - return false; - break; - case COLEMAK: - if (record->event.pressed) { - PLAY_SONG(tone_colemak); - persistent_default_layer_set(1UL<<_COLEMAK); - } - return false; - break; - case WORKMAN: - if (record->event.pressed) { - PLAY_SONG(tone_workman); - persistent_default_layer_set(1UL<<_WORKMAN); - } - return false; - break; - case DVORAK: - if (record->event.pressed) { - PLAY_SONG(tone_dvorak); - persistent_default_layer_set(1UL<<_DVORAK); - } - return false; - break; - case LOWER: - if (record->event.pressed) { - layer_on(_LOWER); - update_tri_layer(_LOWER, _RAISE, _ADJUST); - } else { - layer_off(_LOWER); - update_tri_layer(_LOWER, _RAISE, _ADJUST); - } - return false; - break; - case RAISE: - if (record->event.pressed) { - layer_on(_RAISE); - update_tri_layer(_LOWER, _RAISE, _ADJUST); - } else { - layer_off(_RAISE); - update_tri_layer(_LOWER, _RAISE, _ADJUST); - } - return false; - break; - } - - return true; -} - -#endif diff --git a/users/losinggeneration/rules.mk b/users/losinggeneration/rules.mk deleted file mode 100644 index 41d6f91670..0000000000 --- a/users/losinggeneration/rules.mk +++ /dev/null @@ -1,12 +0,0 @@ -# Build Options -# Only enable things here that are generic to all keyboards. A yes or no here -# will override keyboard/keymap specific values -# -#COMMAND_ENABLE = no # Commands for debug and configuration -#CONSOLE_ENABLE = no # Console for debug(+400) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -#NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -TAP_DANCE_ENABLE = yes # Enable tap dancing -#UNICODE_ENABLE = no # Unicode - diff --git a/users/manna-harbour_miryoku/config.h b/users/manna-harbour_miryoku/config.h deleted file mode 100644 index f2bc9c331b..0000000000 --- a/users/manna-harbour_miryoku/config.h +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2019 Manna Harbour -// https://github.com/manna-harbour/miryoku - -// 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 . - -#pragma once - -#include "custom_config.h" - -// default but used in macros -#undef TAPPING_TERM -#define TAPPING_TERM 200 - - -// Enable rapid switch from tap to hold, disables double tap hold auto-repeat. -#define QUICK_TAP_TERM 0 - -// Auto Shift -#define NO_AUTO_SHIFT_ALPHA -#define AUTO_SHIFT_TIMEOUT TAPPING_TERM -#define AUTO_SHIFT_NO_SETUP - -// Mouse key speed and acceleration. -#undef MOUSEKEY_DELAY -#define MOUSEKEY_DELAY 0 -#undef MOUSEKEY_INTERVAL -#define MOUSEKEY_INTERVAL 16 -#undef MOUSEKEY_WHEEL_DELAY -#define MOUSEKEY_WHEEL_DELAY 0 -#undef MOUSEKEY_MAX_SPEED -#define MOUSEKEY_MAX_SPEED 6 -#undef MOUSEKEY_TIME_TO_MAX -#define MOUSEKEY_TIME_TO_MAX 64 - -// Thumb Combos -#if defined (MIRYOKU_KLUDGE_THUMBCOMBOS) - #define COMBO_TERM 200 - #define EXTRA_SHORT_COMBOS -#endif diff --git a/users/manna-harbour_miryoku/custom_config.h b/users/manna-harbour_miryoku/custom_config.h deleted file mode 100644 index f5ba5ab1b1..0000000000 --- a/users/manna-harbour_miryoku/custom_config.h +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2019 Manna Harbour -// https://github.com/manna-harbour/miryoku - -// 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 . - -#pragma once - diff --git a/users/manna-harbour_miryoku/custom_rules.mk b/users/manna-harbour_miryoku/custom_rules.mk deleted file mode 100644 index 6e222bb11c..0000000000 --- a/users/manna-harbour_miryoku/custom_rules.mk +++ /dev/null @@ -1,3 +0,0 @@ -# Copyright 2019 Manna Harbour -# https://github.com/manna-harbour/miryoku - diff --git a/users/manna-harbour_miryoku/manna-harbour_miryoku.c b/users/manna-harbour_miryoku/manna-harbour_miryoku.c deleted file mode 100644 index 58b68c2727..0000000000 --- a/users/manna-harbour_miryoku/manna-harbour_miryoku.c +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright 2022 Manna Harbour -// https://github.com/manna-harbour/miryoku - -// 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 . - -#include QMK_KEYBOARD_H - -#include "manna-harbour_miryoku.h" - - -// Additional Features double tap guard - -enum { - U_TD_BOOT, -#define MIRYOKU_X(LAYER, STRING) U_TD_U_##LAYER, -MIRYOKU_LAYER_LIST -#undef MIRYOKU_X -}; - -void u_td_fn_boot(tap_dance_state_t *state, void *user_data) { - if (state->count == 2) { - reset_keyboard(); - } -} - -#define MIRYOKU_X(LAYER, STRING) \ -void u_td_fn_U_##LAYER(tap_dance_state_t *state, void *user_data) { \ - if (state->count == 2) { \ - default_layer_set((layer_state_t)1 << U_##LAYER); \ - } \ -} -MIRYOKU_LAYER_LIST -#undef MIRYOKU_X - -tap_dance_action_t tap_dance_actions[] = { - [U_TD_BOOT] = ACTION_TAP_DANCE_FN(u_td_fn_boot), -#define MIRYOKU_X(LAYER, STRING) [U_TD_U_##LAYER] = ACTION_TAP_DANCE_FN(u_td_fn_U_##LAYER), -MIRYOKU_LAYER_LIST -#undef MIRYOKU_X -}; - - -// keymap - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -#define MIRYOKU_X(LAYER, STRING) [U_##LAYER] = U_MACRO_VA_ARGS(MIRYOKU_LAYERMAPPING_##LAYER, MIRYOKU_LAYER_##LAYER), -MIRYOKU_LAYER_LIST -#undef MIRYOKU_X -}; - - -// shift functions - -const key_override_t capsword_key_override = ko_make_basic(MOD_MASK_SHIFT, CW_TOGG, KC_CAPS); - -const key_override_t **key_overrides = (const key_override_t *[]){ - &capsword_key_override, - NULL -}; - - -// thumb combos - -#if defined (MIRYOKU_KLUDGE_THUMBCOMBOS) -const uint16_t PROGMEM thumbcombos_base_right[] = {LT(U_SYM, KC_ENT), LT(U_NUM, KC_BSPC), COMBO_END}; -const uint16_t PROGMEM thumbcombos_base_left[] = {LT(U_NAV, KC_SPC), LT(U_MOUSE, KC_TAB), COMBO_END}; -const uint16_t PROGMEM thumbcombos_nav[] = {KC_ENT, KC_BSPC, COMBO_END}; -const uint16_t PROGMEM thumbcombos_mouse[] = {KC_BTN2, KC_BTN1, COMBO_END}; -const uint16_t PROGMEM thumbcombos_media[] = {KC_MSTP, KC_MPLY, COMBO_END}; -const uint16_t PROGMEM thumbcombos_num[] = {KC_0, KC_MINS, COMBO_END}; - #if defined (MIRYOKU_LAYERS_FLIP) -const uint16_t PROGMEM thumbcombos_sym[] = {KC_UNDS, KC_LPRN, COMBO_END}; - #else -const uint16_t PROGMEM thumbcombos_sym[] = {KC_RPRN, KC_UNDS, COMBO_END}; - #endif -const uint16_t PROGMEM thumbcombos_fun[] = {KC_SPC, KC_TAB, COMBO_END}; -combo_t key_combos[] = { - COMBO(thumbcombos_base_right, LT(U_FUN, KC_DEL)), - COMBO(thumbcombos_base_left, LT(U_MEDIA, KC_ESC)), - COMBO(thumbcombos_nav, KC_DEL), - COMBO(thumbcombos_mouse, KC_BTN3), - COMBO(thumbcombos_media, KC_MUTE), - COMBO(thumbcombos_num, KC_DOT), - #if defined (MIRYOKU_LAYERS_FLIP) - COMBO(thumbcombos_sym, KC_RPRN), - #else - COMBO(thumbcombos_sym, KC_LPRN), - #endif - COMBO(thumbcombos_fun, KC_APP) -}; -#endif diff --git a/users/manna-harbour_miryoku/manna-harbour_miryoku.h b/users/manna-harbour_miryoku/manna-harbour_miryoku.h deleted file mode 100644 index 4d1fbf17cf..0000000000 --- a/users/manna-harbour_miryoku/manna-harbour_miryoku.h +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2022 Manna Harbour -// https://github.com/manna-harbour/miryoku - -// 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 . - -#pragma once - -#include "miryoku_babel/miryoku_layer_selection.h" -#include "miryoku_babel/miryoku_layer_list.h" - -enum miryoku_layers { -#define MIRYOKU_X(LAYER, STRING) U_##LAYER, -MIRYOKU_LAYER_LIST -#undef MIRYOKU_X -}; - -#define U_MACRO_VA_ARGS(macro, ...) macro(__VA_ARGS__) - -#if !defined (MIRYOKU_MAPPING) - #define MIRYOKU_MAPPING LAYOUT_miryoku -#endif - -#define U_NP KC_NO // key is not present -#define U_NA KC_NO // present but not available for use -#define U_NU KC_NO // available but not used - -#if defined (MIRYOKU_CLIPBOARD_FUN) - #define U_RDO KC_AGIN - #define U_PST KC_PSTE - #define U_CPY KC_COPY - #define U_CUT KC_CUT - #define U_UND KC_UNDO -#elif defined (MIRYOKU_CLIPBOARD_MAC) - #define U_RDO SCMD(KC_Z) - #define U_PST LCMD(KC_V) - #define U_CPY LCMD(KC_C) - #define U_CUT LCMD(KC_X) - #define U_UND LCMD(KC_Z) -#elif defined (MIRYOKU_CLIPBOARD_WIN) - #define U_RDO C(KC_Y) - #define U_PST C(KC_V) - #define U_CPY C(KC_C) - #define U_CUT C(KC_X) - #define U_UND C(KC_Z) -#else - #define U_RDO KC_AGIN - #define U_PST S(KC_INS) - #define U_CPY C(KC_INS) - #define U_CUT S(KC_DEL) - #define U_UND KC_UNDO -#endif diff --git a/users/manna-harbour_miryoku/miryoku_babel/miryoku_layer_alternatives.h b/users/manna-harbour_miryoku/miryoku_babel/miryoku_layer_alternatives.h deleted file mode 100644 index dea06bb690..0000000000 --- a/users/manna-harbour_miryoku/miryoku_babel/miryoku_layer_alternatives.h +++ /dev/null @@ -1,389 +0,0 @@ -// Copyright 2022 Manna Harbour -// https://github.com/manna-harbour/miryoku -// generated -*- buffer-read-only: t -*- -// target: qmk - -// 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 . - -#pragma once - - -#define MIRYOKU_ALTERNATIVES_BASE_AZERTY_FLIP \ -KC_A, KC_Z, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, \ -LGUI_T(KC_Q), LALT_T(KC_S), LCTL_T(KC_D), LSFT_T(KC_F), KC_G, KC_H, LSFT_T(KC_J), LCTL_T(KC_K), LALT_T(KC_L), LGUI_T(KC_M), \ -LT(U_BUTTON,KC_W), ALGR_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_COMM, KC_DOT, ALGR_T(KC_SLSH), LT(U_BUTTON,KC_QUOT),\ -U_NP, U_NP, LT(U_FUN,KC_DEL), LT(U_NUM,KC_BSPC), LT(U_SYM,KC_ENT), LT(U_MOUSE,KC_TAB),LT(U_NAV,KC_SPC), LT(U_MEDIA,KC_ESC),U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_BASE_BEAKL15_FLIP \ -KC_Q, KC_H, KC_O, KC_U, KC_X, KC_G, KC_C, KC_R, KC_F, KC_Z, \ -LGUI_T(KC_Y), LALT_T(KC_I), LCTL_T(KC_E), LSFT_T(KC_A), KC_DOT, KC_D, LSFT_T(KC_S), LCTL_T(KC_T), LALT_T(KC_N), LGUI_T(KC_B), \ -LT(U_BUTTON,KC_J), ALGR_T(KC_SLSH), KC_COMM, KC_K, KC_QUOT, KC_W, KC_M, KC_L, ALGR_T(KC_P), LT(U_BUTTON,KC_V), \ -U_NP, U_NP, LT(U_FUN,KC_DEL), LT(U_NUM,KC_BSPC), LT(U_SYM,KC_ENT), LT(U_MOUSE,KC_TAB),LT(U_NAV,KC_SPC), LT(U_MEDIA,KC_ESC),U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_BASE_COLEMAK_FLIP \ -KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, \ -LGUI_T(KC_A), LALT_T(KC_R), LCTL_T(KC_S), LSFT_T(KC_T), KC_D, KC_H, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_I), LGUI_T(KC_O), \ -LT(U_BUTTON,KC_Z), ALGR_T(KC_X), KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, ALGR_T(KC_DOT), LT(U_BUTTON,KC_SLSH),\ -U_NP, U_NP, LT(U_FUN,KC_DEL), LT(U_NUM,KC_BSPC), LT(U_SYM,KC_ENT), LT(U_MOUSE,KC_TAB),LT(U_NAV,KC_SPC), LT(U_MEDIA,KC_ESC),U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_BASE_COLEMAKDH_FLIP \ -KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, \ -LGUI_T(KC_A), LALT_T(KC_R), LCTL_T(KC_S), LSFT_T(KC_T), KC_G, KC_M, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_I), LGUI_T(KC_O), \ -LT(U_BUTTON,KC_Z), ALGR_T(KC_X), KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, ALGR_T(KC_DOT), LT(U_BUTTON,KC_SLSH),\ -U_NP, U_NP, LT(U_FUN,KC_DEL), LT(U_NUM,KC_BSPC), LT(U_SYM,KC_ENT), LT(U_MOUSE,KC_TAB),LT(U_NAV,KC_SPC), LT(U_MEDIA,KC_ESC),U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_BASE_COLEMAKDHK_FLIP \ -KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, \ -LGUI_T(KC_A), LALT_T(KC_R), LCTL_T(KC_S), LSFT_T(KC_T), KC_G, KC_K, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_I), LGUI_T(KC_O), \ -LT(U_BUTTON,KC_Z), ALGR_T(KC_X), KC_C, KC_D, KC_V, KC_M, KC_H, KC_COMM, ALGR_T(KC_DOT), LT(U_BUTTON,KC_SLSH),\ -U_NP, U_NP, LT(U_FUN,KC_DEL), LT(U_NUM,KC_BSPC), LT(U_SYM,KC_ENT), LT(U_MOUSE,KC_TAB),LT(U_NAV,KC_SPC), LT(U_MEDIA,KC_ESC),U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_BASE_DVORAK_FLIP \ -KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, \ -LGUI_T(KC_A), LALT_T(KC_O), LCTL_T(KC_E), LSFT_T(KC_U), KC_I, KC_D, LSFT_T(KC_H), LCTL_T(KC_T), LALT_T(KC_N), LGUI_T(KC_S), \ -LT(U_BUTTON,KC_SLSH),ALGR_T(KC_Q), KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, ALGR_T(KC_V), LT(U_BUTTON,KC_Z), \ -U_NP, U_NP, LT(U_FUN,KC_DEL), LT(U_NUM,KC_BSPC), LT(U_SYM,KC_ENT), LT(U_MOUSE,KC_TAB),LT(U_NAV,KC_SPC), LT(U_MEDIA,KC_ESC),U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_BASE_HALMAK_FLIP \ -KC_W, KC_L, KC_R, KC_B, KC_Z, KC_QUOT, KC_Q, KC_U, KC_D, KC_J, \ -LGUI_T(KC_S), LALT_T(KC_H), LCTL_T(KC_N), LSFT_T(KC_T), KC_COMM, KC_DOT, LSFT_T(KC_A), LCTL_T(KC_E), LALT_T(KC_O), LGUI_T(KC_I), \ -LT(U_BUTTON,KC_F), ALGR_T(KC_M), KC_V, KC_C, KC_SLSH, KC_G, KC_P, KC_X, ALGR_T(KC_K), LT(U_BUTTON,KC_Y), \ -U_NP, U_NP, LT(U_FUN,KC_DEL), LT(U_NUM,KC_BSPC), LT(U_SYM,KC_ENT), LT(U_MOUSE,KC_TAB),LT(U_NAV,KC_SPC), LT(U_MEDIA,KC_ESC),U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_BASE_WORKMAN_FLIP \ -KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_QUOT, \ -LGUI_T(KC_A), LALT_T(KC_S), LCTL_T(KC_H), LSFT_T(KC_T), KC_G, KC_Y, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_O), LGUI_T(KC_I), \ -LT(U_BUTTON,KC_Z), ALGR_T(KC_X), KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, ALGR_T(KC_DOT), LT(U_BUTTON,KC_SLSH),\ -U_NP, U_NP, LT(U_FUN,KC_DEL), LT(U_NUM,KC_BSPC), LT(U_SYM,KC_ENT), LT(U_MOUSE,KC_TAB),LT(U_NAV,KC_SPC), LT(U_MEDIA,KC_ESC),U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_BASE_QWERTY_FLIP \ -KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, \ -LGUI_T(KC_A), LALT_T(KC_S), LCTL_T(KC_D), LSFT_T(KC_F), KC_G, KC_H, LSFT_T(KC_J), LCTL_T(KC_K), LALT_T(KC_L), LGUI_T(KC_QUOT), \ -LT(U_BUTTON,KC_Z), ALGR_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, ALGR_T(KC_DOT), LT(U_BUTTON,KC_SLSH),\ -U_NP, U_NP, LT(U_FUN,KC_DEL), LT(U_NUM,KC_BSPC), LT(U_SYM,KC_ENT), LT(U_MOUSE,KC_TAB),LT(U_NAV,KC_SPC), LT(U_MEDIA,KC_ESC),U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_BASE_QWERTZ_FLIP \ -KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Z, KC_U, KC_I, KC_O, KC_P, \ -LGUI_T(KC_A), LALT_T(KC_S), LCTL_T(KC_D), LSFT_T(KC_F), KC_G, KC_H, LSFT_T(KC_J), LCTL_T(KC_K), LALT_T(KC_L), LGUI_T(KC_QUOT), \ -LT(U_BUTTON,KC_Y), ALGR_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, ALGR_T(KC_DOT), LT(U_BUTTON,KC_SLSH),\ -U_NP, U_NP, LT(U_FUN,KC_DEL), LT(U_NUM,KC_BSPC), LT(U_SYM,KC_ENT), LT(U_MOUSE,KC_TAB),LT(U_NAV,KC_SPC), LT(U_MEDIA,KC_ESC),U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_BASE_AZERTY \ -KC_A, KC_Z, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, \ -LGUI_T(KC_Q), LALT_T(KC_S), LCTL_T(KC_D), LSFT_T(KC_F), KC_G, KC_H, LSFT_T(KC_J), LCTL_T(KC_K), LALT_T(KC_L), LGUI_T(KC_M), \ -LT(U_BUTTON,KC_W), ALGR_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_COMM, KC_DOT, ALGR_T(KC_SLSH), LT(U_BUTTON,KC_QUOT),\ -U_NP, U_NP, LT(U_MEDIA,KC_ESC),LT(U_NAV,KC_SPC), LT(U_MOUSE,KC_TAB),LT(U_SYM,KC_ENT), LT(U_NUM,KC_BSPC), LT(U_FUN,KC_DEL), U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_BASE_BEAKL15 \ -KC_Q, KC_H, KC_O, KC_U, KC_X, KC_G, KC_C, KC_R, KC_F, KC_Z, \ -LGUI_T(KC_Y), LALT_T(KC_I), LCTL_T(KC_E), LSFT_T(KC_A), KC_DOT, KC_D, LSFT_T(KC_S), LCTL_T(KC_T), LALT_T(KC_N), LGUI_T(KC_B), \ -LT(U_BUTTON,KC_J), ALGR_T(KC_SLSH), KC_COMM, KC_K, KC_QUOT, KC_W, KC_M, KC_L, ALGR_T(KC_P), LT(U_BUTTON,KC_V), \ -U_NP, U_NP, LT(U_MEDIA,KC_ESC),LT(U_NAV,KC_SPC), LT(U_MOUSE,KC_TAB),LT(U_SYM,KC_ENT), LT(U_NUM,KC_BSPC), LT(U_FUN,KC_DEL), U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_BASE_COLEMAK \ -KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, \ -LGUI_T(KC_A), LALT_T(KC_R), LCTL_T(KC_S), LSFT_T(KC_T), KC_D, KC_H, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_I), LGUI_T(KC_O), \ -LT(U_BUTTON,KC_Z), ALGR_T(KC_X), KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, ALGR_T(KC_DOT), LT(U_BUTTON,KC_SLSH),\ -U_NP, U_NP, LT(U_MEDIA,KC_ESC),LT(U_NAV,KC_SPC), LT(U_MOUSE,KC_TAB),LT(U_SYM,KC_ENT), LT(U_NUM,KC_BSPC), LT(U_FUN,KC_DEL), U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_BASE_COLEMAKDH \ -KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, \ -LGUI_T(KC_A), LALT_T(KC_R), LCTL_T(KC_S), LSFT_T(KC_T), KC_G, KC_M, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_I), LGUI_T(KC_O), \ -LT(U_BUTTON,KC_Z), ALGR_T(KC_X), KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, ALGR_T(KC_DOT), LT(U_BUTTON,KC_SLSH),\ -U_NP, U_NP, LT(U_MEDIA,KC_ESC),LT(U_NAV,KC_SPC), LT(U_MOUSE,KC_TAB),LT(U_SYM,KC_ENT), LT(U_NUM,KC_BSPC), LT(U_FUN,KC_DEL), U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_BASE_COLEMAKDHK \ -KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, \ -LGUI_T(KC_A), LALT_T(KC_R), LCTL_T(KC_S), LSFT_T(KC_T), KC_G, KC_K, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_I), LGUI_T(KC_O), \ -LT(U_BUTTON,KC_Z), ALGR_T(KC_X), KC_C, KC_D, KC_V, KC_M, KC_H, KC_COMM, ALGR_T(KC_DOT), LT(U_BUTTON,KC_SLSH),\ -U_NP, U_NP, LT(U_MEDIA,KC_ESC),LT(U_NAV,KC_SPC), LT(U_MOUSE,KC_TAB),LT(U_SYM,KC_ENT), LT(U_NUM,KC_BSPC), LT(U_FUN,KC_DEL), U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_BASE_DVORAK \ -KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, \ -LGUI_T(KC_A), LALT_T(KC_O), LCTL_T(KC_E), LSFT_T(KC_U), KC_I, KC_D, LSFT_T(KC_H), LCTL_T(KC_T), LALT_T(KC_N), LGUI_T(KC_S), \ -LT(U_BUTTON,KC_SLSH),ALGR_T(KC_Q), KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, ALGR_T(KC_V), LT(U_BUTTON,KC_Z), \ -U_NP, U_NP, LT(U_MEDIA,KC_ESC),LT(U_NAV,KC_SPC), LT(U_MOUSE,KC_TAB),LT(U_SYM,KC_ENT), LT(U_NUM,KC_BSPC), LT(U_FUN,KC_DEL), U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_BASE_HALMAK \ -KC_W, KC_L, KC_R, KC_B, KC_Z, KC_QUOT, KC_Q, KC_U, KC_D, KC_J, \ -LGUI_T(KC_S), LALT_T(KC_H), LCTL_T(KC_N), LSFT_T(KC_T), KC_COMM, KC_DOT, LSFT_T(KC_A), LCTL_T(KC_E), LALT_T(KC_O), LGUI_T(KC_I), \ -LT(U_BUTTON,KC_F), ALGR_T(KC_M), KC_V, KC_C, KC_SLSH, KC_G, KC_P, KC_X, ALGR_T(KC_K), LT(U_BUTTON,KC_Y), \ -U_NP, U_NP, LT(U_MEDIA,KC_ESC),LT(U_NAV,KC_SPC), LT(U_MOUSE,KC_TAB),LT(U_SYM,KC_ENT), LT(U_NUM,KC_BSPC), LT(U_FUN,KC_DEL), U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_BASE_WORKMAN \ -KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_QUOT, \ -LGUI_T(KC_A), LALT_T(KC_S), LCTL_T(KC_H), LSFT_T(KC_T), KC_G, KC_Y, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_O), LGUI_T(KC_I), \ -LT(U_BUTTON,KC_Z), ALGR_T(KC_X), KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, ALGR_T(KC_DOT), LT(U_BUTTON,KC_SLSH),\ -U_NP, U_NP, LT(U_MEDIA,KC_ESC),LT(U_NAV,KC_SPC), LT(U_MOUSE,KC_TAB),LT(U_SYM,KC_ENT), LT(U_NUM,KC_BSPC), LT(U_FUN,KC_DEL), U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_BASE_QWERTY \ -KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, \ -LGUI_T(KC_A), LALT_T(KC_S), LCTL_T(KC_D), LSFT_T(KC_F), KC_G, KC_H, LSFT_T(KC_J), LCTL_T(KC_K), LALT_T(KC_L), LGUI_T(KC_QUOT), \ -LT(U_BUTTON,KC_Z), ALGR_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, ALGR_T(KC_DOT), LT(U_BUTTON,KC_SLSH),\ -U_NP, U_NP, LT(U_MEDIA,KC_ESC),LT(U_NAV,KC_SPC), LT(U_MOUSE,KC_TAB),LT(U_SYM,KC_ENT), LT(U_NUM,KC_BSPC), LT(U_FUN,KC_DEL), U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_BASE_QWERTZ \ -KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Z, KC_U, KC_I, KC_O, KC_P, \ -LGUI_T(KC_A), LALT_T(KC_S), LCTL_T(KC_D), LSFT_T(KC_F), KC_G, KC_H, LSFT_T(KC_J), LCTL_T(KC_K), LALT_T(KC_L), LGUI_T(KC_QUOT), \ -LT(U_BUTTON,KC_Y), ALGR_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, ALGR_T(KC_DOT), LT(U_BUTTON,KC_SLSH),\ -U_NP, U_NP, LT(U_MEDIA,KC_ESC),LT(U_NAV,KC_SPC), LT(U_MOUSE,KC_TAB),LT(U_SYM,KC_ENT), LT(U_NUM,KC_BSPC), LT(U_FUN,KC_DEL), U_NP, U_NP - - -#define MIRYOKU_ALTERNATIVES_TAP_AZERTY_FLIP \ -KC_A, KC_Z, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, \ -KC_Q, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_M, \ -KC_W, KC_X, KC_C, KC_V, KC_B, KC_N, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT, \ -U_NP, U_NP, KC_DEL, KC_BSPC, KC_ENT, KC_TAB, KC_SPC, KC_ESC, U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_TAP_BEAKL15_FLIP \ -KC_Q, KC_H, KC_O, KC_U, KC_X, KC_G, KC_C, KC_R, KC_F, KC_Z, \ -KC_Y, KC_I, KC_E, KC_A, KC_DOT, KC_D, KC_S, KC_T, KC_N, KC_B, \ -KC_J, KC_SLSH, KC_COMM, KC_K, KC_QUOT, KC_W, KC_M, KC_L, KC_P, KC_V, \ -U_NP, U_NP, KC_DEL, KC_BSPC, KC_ENT, KC_TAB, KC_SPC, KC_ESC, U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_TAP_COLEMAK_FLIP \ -KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, \ -KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, \ -KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, \ -U_NP, U_NP, KC_DEL, KC_BSPC, KC_ENT, KC_TAB, KC_SPC, KC_ESC, U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_TAP_COLEMAKDH_FLIP \ -KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, \ -KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, \ -KC_Z, KC_X, KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, \ -U_NP, U_NP, KC_DEL, KC_BSPC, KC_ENT, KC_TAB, KC_SPC, KC_ESC, U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_TAP_COLEMAKDHK_FLIP \ -KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, \ -KC_A, KC_R, KC_S, KC_T, KC_G, KC_K, KC_N, KC_E, KC_I, KC_O, \ -KC_Z, KC_X, KC_C, KC_D, KC_V, KC_M, KC_H, KC_COMM, KC_DOT, KC_SLSH, \ -U_NP, U_NP, KC_DEL, KC_BSPC, KC_ENT, KC_TAB, KC_SPC, KC_ESC, U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_TAP_DVORAK_FLIP \ -KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, \ -KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, \ -KC_SLSH, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, \ -U_NP, U_NP, KC_DEL, KC_BSPC, KC_ENT, KC_TAB, KC_SPC, KC_ESC, U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_TAP_HALMAK_FLIP \ -KC_W, KC_L, KC_R, KC_B, KC_Z, KC_QUOT, KC_Q, KC_U, KC_D, KC_J, \ -KC_S, KC_H, KC_N, KC_T, KC_COMM, KC_DOT, KC_A, KC_E, KC_O, KC_I, \ -KC_F, KC_M, KC_V, KC_C, KC_SLSH, KC_G, KC_P, KC_X, KC_K, KC_Y, \ -U_NP, U_NP, KC_DEL, KC_BSPC, KC_ENT, KC_TAB, KC_SPC, KC_ESC, U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_TAP_WORKMAN_FLIP \ -KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_QUOT, \ -KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I, \ -KC_Z, KC_X, KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH, \ -U_NP, U_NP, KC_DEL, KC_BSPC, KC_ENT, KC_TAB, KC_SPC, KC_ESC, U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_TAP_QWERTY_FLIP \ -KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, \ -KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, \ -KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, \ -U_NP, U_NP, KC_DEL, KC_BSPC, KC_ENT, KC_TAB, KC_SPC, KC_ESC, U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_TAP_QWERTZ_FLIP \ -KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Z, KC_U, KC_I, KC_O, KC_P, \ -KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, \ -KC_Y, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, \ -U_NP, U_NP, KC_DEL, KC_BSPC, KC_ENT, KC_TAB, KC_SPC, KC_ESC, U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_TAP_AZERTY \ -KC_A, KC_Z, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, \ -KC_Q, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_M, \ -KC_W, KC_X, KC_C, KC_V, KC_B, KC_N, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT, \ -U_NP, U_NP, KC_ESC, KC_SPC, KC_TAB, KC_ENT, KC_BSPC, KC_DEL, U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_TAP_BEAKL15 \ -KC_Q, KC_H, KC_O, KC_U, KC_X, KC_G, KC_C, KC_R, KC_F, KC_Z, \ -KC_Y, KC_I, KC_E, KC_A, KC_DOT, KC_D, KC_S, KC_T, KC_N, KC_B, \ -KC_J, KC_SLSH, KC_COMM, KC_K, KC_QUOT, KC_W, KC_M, KC_L, KC_P, KC_V, \ -U_NP, U_NP, KC_ESC, KC_SPC, KC_TAB, KC_ENT, KC_BSPC, KC_DEL, U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_TAP_COLEMAK \ -KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, \ -KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, \ -KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, \ -U_NP, U_NP, KC_ESC, KC_SPC, KC_TAB, KC_ENT, KC_BSPC, KC_DEL, U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_TAP_COLEMAKDH \ -KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, \ -KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, \ -KC_Z, KC_X, KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, \ -U_NP, U_NP, KC_ESC, KC_SPC, KC_TAB, KC_ENT, KC_BSPC, KC_DEL, U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_TAP_COLEMAKDHK \ -KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, \ -KC_A, KC_R, KC_S, KC_T, KC_G, KC_K, KC_N, KC_E, KC_I, KC_O, \ -KC_Z, KC_X, KC_C, KC_D, KC_V, KC_M, KC_H, KC_COMM, KC_DOT, KC_SLSH, \ -U_NP, U_NP, KC_ESC, KC_SPC, KC_TAB, KC_ENT, KC_BSPC, KC_DEL, U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_TAP_DVORAK \ -KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, \ -KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, \ -KC_SLSH, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, \ -U_NP, U_NP, KC_ESC, KC_SPC, KC_TAB, KC_ENT, KC_BSPC, KC_DEL, U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_TAP_HALMAK \ -KC_W, KC_L, KC_R, KC_B, KC_Z, KC_QUOT, KC_Q, KC_U, KC_D, KC_J, \ -KC_S, KC_H, KC_N, KC_T, KC_COMM, KC_DOT, KC_A, KC_E, KC_O, KC_I, \ -KC_F, KC_M, KC_V, KC_C, KC_SLSH, KC_G, KC_P, KC_X, KC_K, KC_Y, \ -U_NP, U_NP, KC_ESC, KC_SPC, KC_TAB, KC_ENT, KC_BSPC, KC_DEL, U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_TAP_WORKMAN \ -KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_QUOT, \ -KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I, \ -KC_Z, KC_X, KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH, \ -U_NP, U_NP, KC_ESC, KC_SPC, KC_TAB, KC_ENT, KC_BSPC, KC_DEL, U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_TAP_QWERTY \ -KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, \ -KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, \ -KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, \ -U_NP, U_NP, KC_ESC, KC_SPC, KC_TAB, KC_ENT, KC_BSPC, KC_DEL, U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_TAP_QWERTZ \ -KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Z, KC_U, KC_I, KC_O, KC_P, \ -KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, \ -KC_Y, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, \ -U_NP, U_NP, KC_ESC, KC_SPC, KC_TAB, KC_ENT, KC_BSPC, KC_DEL, U_NP, U_NP - - -#define MIRYOKU_ALTERNATIVES_NAV_INVERTEDT_FLIP \ -KC_PGUP, KC_HOME, KC_UP, KC_END, KC_INS, U_NA, TD(U_TD_U_BASE), TD(U_TD_U_EXTRA), TD(U_TD_U_TAP), TD(U_TD_BOOT), \ -KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, CW_TOGG, U_NA, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, \ -U_UND, U_CUT, U_CPY, U_PST, U_RDO, U_NA, TD(U_TD_U_NAV), TD(U_TD_U_NUM), KC_ALGR, U_NA, \ -U_NP, U_NP, KC_DEL, KC_BSPC, KC_ENT, U_NA, U_NA, U_NA, U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_NAV_FLIP \ -KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_INS, U_NA, TD(U_TD_U_BASE), TD(U_TD_U_EXTRA), TD(U_TD_U_TAP), TD(U_TD_BOOT), \ -KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, CW_TOGG, U_NA, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, \ -U_UND, U_CUT, U_CPY, U_PST, U_RDO, U_NA, TD(U_TD_U_NAV), TD(U_TD_U_NUM), KC_ALGR, U_NA, \ -U_NP, U_NP, KC_DEL, KC_BSPC, KC_ENT, U_NA, U_NA, U_NA, U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_NAV_INVERTEDT \ -TD(U_TD_BOOT), TD(U_TD_U_TAP), TD(U_TD_U_EXTRA), TD(U_TD_U_BASE), U_NA, KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, \ -KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, U_NA, CW_TOGG, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, \ -U_NA, KC_ALGR, TD(U_TD_U_NUM), TD(U_TD_U_NAV), U_NA, U_RDO, U_PST, U_CPY, U_CUT, U_UND, \ -U_NP, U_NP, U_NA, U_NA, U_NA, KC_ENT, KC_BSPC, KC_DEL, U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_NAV_VI \ -TD(U_TD_BOOT), TD(U_TD_U_TAP), TD(U_TD_U_EXTRA), TD(U_TD_U_BASE), U_NA, U_RDO, U_PST, U_CPY, U_CUT, U_UND, \ -KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, U_NA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, CW_TOGG, \ -U_NA, KC_ALGR, TD(U_TD_U_NUM), TD(U_TD_U_NAV), U_NA, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_INS, \ -U_NP, U_NP, U_NA, U_NA, U_NA, KC_ENT, KC_BSPC, KC_DEL, U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_NAV \ -TD(U_TD_BOOT), TD(U_TD_U_TAP), TD(U_TD_U_EXTRA), TD(U_TD_U_BASE), U_NA, U_RDO, U_PST, U_CPY, U_CUT, U_UND, \ -KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, U_NA, CW_TOGG, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, \ -U_NA, KC_ALGR, TD(U_TD_U_NUM), TD(U_TD_U_NAV), U_NA, KC_INS, KC_HOME, KC_PGDN, KC_PGUP, KC_END, \ -U_NP, U_NP, U_NA, U_NA, U_NA, KC_ENT, KC_BSPC, KC_DEL, U_NP, U_NP - - -#define MIRYOKU_ALTERNATIVES_MOUSE_INVERTEDT_FLIP \ -KC_WH_U, KC_WH_L, KC_MS_U, KC_WH_R, U_NU, U_NA, TD(U_TD_U_BASE), TD(U_TD_U_EXTRA), TD(U_TD_U_TAP), TD(U_TD_BOOT), \ -KC_WH_D, KC_MS_L, KC_MS_D, KC_MS_R, U_NU, U_NA, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, \ -U_UND, U_CUT, U_CPY, U_PST, U_RDO, U_NA, TD(U_TD_U_MOUSE), TD(U_TD_U_SYM), KC_ALGR, U_NA, \ -U_NP, U_NP, KC_BTN3, KC_BTN1, KC_BTN2, U_NA, U_NA, U_NA, U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_MOUSE_FLIP \ -KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, U_NU, U_NA, TD(U_TD_U_BASE), TD(U_TD_U_EXTRA), TD(U_TD_U_TAP), TD(U_TD_BOOT), \ -KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, U_NU, U_NA, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, \ -U_UND, U_CUT, U_CPY, U_PST, U_RDO, U_NA, TD(U_TD_U_MOUSE), TD(U_TD_U_SYM), KC_ALGR, U_NA, \ -U_NP, U_NP, KC_BTN3, KC_BTN1, KC_BTN2, U_NA, U_NA, U_NA, U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_MOUSE_INVERTEDT \ -TD(U_TD_BOOT), TD(U_TD_U_TAP), TD(U_TD_U_EXTRA), TD(U_TD_U_BASE), U_NA, U_NU, KC_WH_L, KC_MS_U, KC_WH_R, KC_WH_U, \ -KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, U_NA, U_NU, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, \ -U_NA, KC_ALGR, TD(U_TD_U_SYM), TD(U_TD_U_MOUSE), U_NA, U_RDO, U_PST, U_CPY, U_CUT, U_UND, \ -U_NP, U_NP, U_NA, U_NA, U_NA, KC_BTN2, KC_BTN1, KC_BTN3, U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_MOUSE_VI \ -TD(U_TD_BOOT), TD(U_TD_U_TAP), TD(U_TD_U_EXTRA), TD(U_TD_U_BASE), U_NA, U_RDO, U_PST, U_CPY, U_CUT, U_UND, \ -KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, U_NA, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, U_NU, \ -U_NA, KC_ALGR, TD(U_TD_U_SYM), TD(U_TD_U_MOUSE), U_NA, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, U_NU, \ -U_NP, U_NP, U_NA, U_NA, U_NA, KC_BTN2, KC_BTN1, KC_BTN3, U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_MOUSE \ -TD(U_TD_BOOT), TD(U_TD_U_TAP), TD(U_TD_U_EXTRA), TD(U_TD_U_BASE), U_NA, U_RDO, U_PST, U_CPY, U_CUT, U_UND, \ -KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, U_NA, U_NU, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, \ -U_NA, KC_ALGR, TD(U_TD_U_SYM), TD(U_TD_U_MOUSE), U_NA, U_NU, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, \ -U_NP, U_NP, U_NA, U_NA, U_NA, KC_BTN2, KC_BTN1, KC_BTN3, U_NP, U_NP - - -#define MIRYOKU_ALTERNATIVES_MEDIA_INVERTEDT_FLIP \ -RGB_HUI, RGB_SAI, KC_VOLU, RGB_VAI, RGB_TOG, U_NA, TD(U_TD_U_BASE), TD(U_TD_U_EXTRA), TD(U_TD_U_TAP), TD(U_TD_BOOT), \ -RGB_MOD, KC_MPRV, KC_VOLD, KC_MNXT, U_NU, U_NA, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, \ -U_NU, U_NU, U_NU, U_NU, OU_AUTO, U_NA, TD(U_TD_U_MEDIA), TD(U_TD_U_FUN), KC_ALGR, U_NA, \ -U_NP, U_NP, KC_MUTE, KC_MPLY, KC_MSTP, U_NA, U_NA, U_NA, U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_MEDIA_FLIP \ -RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG, U_NA, TD(U_TD_U_BASE), TD(U_TD_U_EXTRA), TD(U_TD_U_TAP), TD(U_TD_BOOT), \ -KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, U_NU, U_NA, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, \ -U_NU, U_NU, U_NU, U_NU, OU_AUTO, U_NA, TD(U_TD_U_MEDIA), TD(U_TD_U_FUN), KC_ALGR, U_NA, \ -U_NP, U_NP, KC_MUTE, KC_MPLY, KC_MSTP, U_NA, U_NA, U_NA, U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_MEDIA_INVERTEDT \ -TD(U_TD_BOOT), TD(U_TD_U_TAP), TD(U_TD_U_EXTRA), TD(U_TD_U_BASE), U_NA, RGB_TOG, RGB_MOD, KC_VOLU, RGB_HUI, RGB_SAI, \ -KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, U_NA, U_NU, KC_MPRV, KC_VOLD, KC_MNXT, RGB_VAI, \ -U_NA, KC_ALGR, TD(U_TD_U_FUN), TD(U_TD_U_MEDIA), U_NA, OU_AUTO, U_NU, U_NU, U_NU, U_NU, \ -U_NP, U_NP, U_NA, U_NA, U_NA, KC_MSTP, KC_MPLY, KC_MUTE, U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_MEDIA_VI \ -TD(U_TD_BOOT), TD(U_TD_U_TAP), TD(U_TD_U_EXTRA), TD(U_TD_U_BASE), U_NA, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG, \ -KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, U_NA, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, U_NU, \ -U_NA, KC_ALGR, TD(U_TD_U_FUN), TD(U_TD_U_MEDIA), U_NA, U_NU, U_NU, U_NU, U_NU, OU_AUTO, \ -U_NP, U_NP, U_NA, U_NA, U_NA, KC_MSTP, KC_MPLY, KC_MUTE, U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_MEDIA \ -TD(U_TD_BOOT), TD(U_TD_U_TAP), TD(U_TD_U_EXTRA), TD(U_TD_U_BASE), U_NA, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, \ -KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, U_NA, U_NU, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, \ -U_NA, KC_ALGR, TD(U_TD_U_FUN), TD(U_TD_U_MEDIA), U_NA, OU_AUTO, U_NU, U_NU, U_NU, U_NU, \ -U_NP, U_NP, U_NA, U_NA, U_NA, KC_MSTP, KC_MPLY, KC_MUTE, U_NP, U_NP - - -#define MIRYOKU_ALTERNATIVES_NUM_FLIP \ -TD(U_TD_BOOT), TD(U_TD_U_TAP), TD(U_TD_U_EXTRA), TD(U_TD_U_BASE), U_NA, KC_LBRC, KC_7, KC_8, KC_9, KC_RBRC, \ -KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, U_NA, KC_EQL, KC_4, KC_5, KC_6, KC_SCLN, \ -U_NA, KC_ALGR, TD(U_TD_U_NAV), TD(U_TD_U_NUM), U_NA, KC_BSLS, KC_1, KC_2, KC_3, KC_GRV, \ -U_NP, U_NP, U_NA, U_NA, U_NA, KC_MINS, KC_0, KC_DOT, U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_NUM \ -KC_LBRC, KC_7, KC_8, KC_9, KC_RBRC, U_NA, TD(U_TD_U_BASE), TD(U_TD_U_EXTRA), TD(U_TD_U_TAP), TD(U_TD_BOOT), \ -KC_SCLN, KC_4, KC_5, KC_6, KC_EQL, U_NA, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, \ -KC_GRV, KC_1, KC_2, KC_3, KC_BSLS, U_NA, TD(U_TD_U_NUM), TD(U_TD_U_NAV), KC_ALGR, U_NA, \ -U_NP, U_NP, KC_DOT, KC_0, KC_MINS, U_NA, U_NA, U_NA, U_NP, U_NP - - -#define MIRYOKU_ALTERNATIVES_SYM_FLIP \ -TD(U_TD_BOOT), TD(U_TD_U_TAP), TD(U_TD_U_EXTRA), TD(U_TD_U_BASE), U_NA, KC_LCBR, KC_AMPR, KC_ASTR, KC_LPRN, KC_RCBR, \ -KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, U_NA, KC_PLUS, KC_DLR, KC_PERC, KC_CIRC, KC_COLN, \ -U_NA, KC_ALGR, TD(U_TD_U_MOUSE), TD(U_TD_U_SYM), U_NA, KC_PIPE, KC_EXLM, KC_AT, KC_HASH, KC_TILD, \ -U_NP, U_NP, U_NA, U_NA, U_NA, KC_UNDS, KC_LPRN, KC_RPRN, U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_SYM \ -KC_LCBR, KC_AMPR, KC_ASTR, KC_LPRN, KC_RCBR, U_NA, TD(U_TD_U_BASE), TD(U_TD_U_EXTRA), TD(U_TD_U_TAP), TD(U_TD_BOOT), \ -KC_COLN, KC_DLR, KC_PERC, KC_CIRC, KC_PLUS, U_NA, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, \ -KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_PIPE, U_NA, TD(U_TD_U_SYM), TD(U_TD_U_MOUSE), KC_ALGR, U_NA, \ -U_NP, U_NP, KC_LPRN, KC_RPRN, KC_UNDS, U_NA, U_NA, U_NA, U_NP, U_NP - - -#define MIRYOKU_ALTERNATIVES_FUN_FLIP \ -TD(U_TD_BOOT), TD(U_TD_U_TAP), TD(U_TD_U_EXTRA), TD(U_TD_U_BASE), U_NA, KC_PSCR, KC_F7, KC_F8, KC_F9, KC_F12, \ -KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, U_NA, KC_SCRL, KC_F4, KC_F5, KC_F6, KC_F11, \ -U_NA, KC_ALGR, TD(U_TD_U_MEDIA), TD(U_TD_U_FUN), U_NA, KC_PAUS, KC_F1, KC_F2, KC_F3, KC_F10, \ -U_NP, U_NP, U_NA, U_NA, U_NA, KC_TAB, KC_SPC, KC_APP, U_NP, U_NP - -#define MIRYOKU_ALTERNATIVES_FUN \ -KC_F12, KC_F7, KC_F8, KC_F9, KC_PSCR, U_NA, TD(U_TD_U_BASE), TD(U_TD_U_EXTRA), TD(U_TD_U_TAP), TD(U_TD_BOOT), \ -KC_F11, KC_F4, KC_F5, KC_F6, KC_SCRL, U_NA, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, \ -KC_F10, KC_F1, KC_F2, KC_F3, KC_PAUS, U_NA, TD(U_TD_U_FUN), TD(U_TD_U_MEDIA), KC_ALGR, U_NA, \ -U_NP, U_NP, KC_APP, KC_SPC, KC_TAB, U_NA, U_NA, U_NA, U_NP, U_NP - - -#define MIRYOKU_ALTERNATIVES_BUTTON \ -U_UND, U_CUT, U_CPY, U_PST, U_RDO, U_RDO, U_PST, U_CPY, U_CUT, U_UND, \ -KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, U_NU, U_NU, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, \ -U_UND, U_CUT, U_CPY, U_PST, U_RDO, U_RDO, U_PST, U_CPY, U_CUT, U_UND, \ -U_NP, U_NP, KC_BTN3, KC_BTN1, KC_BTN2, KC_BTN2, KC_BTN1, KC_BTN3, U_NP, U_NP diff --git a/users/manna-harbour_miryoku/miryoku_babel/miryoku_layer_list.h b/users/manna-harbour_miryoku/miryoku_babel/miryoku_layer_list.h deleted file mode 100644 index adac139c1c..0000000000 --- a/users/manna-harbour_miryoku/miryoku_babel/miryoku_layer_list.h +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2022 Manna Harbour -// https://github.com/manna-harbour/miryoku -// generated -*- buffer-read-only: t -*- - -// 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 . - -#pragma once - -#if !defined (MIRYOKU_LAYER_LIST) - -#define MIRYOKU_LAYER_LIST \ -MIRYOKU_X(BASE, "Base") \ -MIRYOKU_X(EXTRA, "Extra") \ -MIRYOKU_X(TAP, "Tap") \ -MIRYOKU_X(BUTTON, "Button") \ -MIRYOKU_X(NAV, "Nav") \ -MIRYOKU_X(MOUSE, "Mouse") \ -MIRYOKU_X(MEDIA, "Media") \ -MIRYOKU_X(NUM, "Num") \ -MIRYOKU_X(SYM, "Sym") \ -MIRYOKU_X(FUN, "Fun") - -#endif diff --git a/users/manna-harbour_miryoku/miryoku_babel/miryoku_layer_selection.h b/users/manna-harbour_miryoku/miryoku_babel/miryoku_layer_selection.h deleted file mode 100644 index 609186c480..0000000000 --- a/users/manna-harbour_miryoku/miryoku_babel/miryoku_layer_selection.h +++ /dev/null @@ -1,277 +0,0 @@ -// Copyright 2019 Manna Harbour -// https://github.com/manna-harbour/miryoku -// generated -*- buffer-read-only: t -*- - -// 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 . - -#pragma once - -#include "miryoku_layer_alternatives.h" - -#if !defined(MIRYOKU_LAYER_BASE) - #if defined (MIRYOKU_LAYERS_FLIP) - #if defined (MIRYOKU_ALPHAS_AZERTY) - #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_AZERTY_FLIP - #elif defined (MIRYOKU_ALPHAS_BEAKL15) - #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_BEAKL15_FLIP - #elif defined (MIRYOKU_ALPHAS_COLEMAK) - #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_COLEMAK_FLIP - #elif defined (MIRYOKU_ALPHAS_COLEMAKDH) - #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_COLEMAKDH_FLIP - #elif defined (MIRYOKU_ALPHAS_COLEMAKDHK) - #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_COLEMAKDHK_FLIP - #elif defined (MIRYOKU_ALPHAS_DVORAK) - #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_DVORAK_FLIP - #elif defined (MIRYOKU_ALPHAS_HALMAK) - #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_HALMAK_FLIP - #elif defined (MIRYOKU_ALPHAS_WORKMAN) - #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_WORKMAN_FLIP - #elif defined (MIRYOKU_ALPHAS_QWERTY) - #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_QWERTY_FLIP - #elif defined (MIRYOKU_ALPHAS_QWERTZ) - #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_QWERTZ_FLIP - #else - #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_COLEMAKDH_FLIP - #endif - #else - #if defined (MIRYOKU_ALPHAS_AZERTY) - #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_AZERTY - #elif defined (MIRYOKU_ALPHAS_BEAKL15) - #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_BEAKL15 - #elif defined (MIRYOKU_ALPHAS_COLEMAK) - #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_COLEMAK - #elif defined (MIRYOKU_ALPHAS_COLEMAKDH) - #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_COLEMAKDH - #elif defined (MIRYOKU_ALPHAS_COLEMAKDHK) - #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_COLEMAKDHK - #elif defined (MIRYOKU_ALPHAS_DVORAK) - #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_DVORAK - #elif defined (MIRYOKU_ALPHAS_HALMAK) - #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_HALMAK - #elif defined (MIRYOKU_ALPHAS_WORKMAN) - #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_WORKMAN - #elif defined (MIRYOKU_ALPHAS_QWERTY) - #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_QWERTY - #elif defined (MIRYOKU_ALPHAS_QWERTZ) - #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_QWERTZ - #else - #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_COLEMAKDH - #endif - #endif -#endif -#if !defined(MIRYOKU_LAYERMAPPING_BASE) - #define MIRYOKU_LAYERMAPPING_BASE MIRYOKU_MAPPING -#endif - -#if !defined(MIRYOKU_LAYER_EXTRA) - #if defined (MIRYOKU_LAYERS_FLIP) - #if defined (MIRYOKU_EXTRA_AZERTY) - #define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_AZERTY_FLIP - #elif defined (MIRYOKU_EXTRA_BEAKL15) - #define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_BEAKL15_FLIP - #elif defined (MIRYOKU_EXTRA_COLEMAK) - #define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_COLEMAK_FLIP - #elif defined (MIRYOKU_EXTRA_COLEMAKDH) - #define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_COLEMAKDH_FLIP - #elif defined (MIRYOKU_EXTRA_COLEMAKDHK) - #define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_COLEMAKDHK_FLIP - #elif defined (MIRYOKU_EXTRA_DVORAK) - #define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_DVORAK_FLIP - #elif defined (MIRYOKU_EXTRA_HALMAK) - #define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_HALMAK_FLIP - #elif defined (MIRYOKU_EXTRA_WORKMAN) - #define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_WORKMAN_FLIP - #elif defined (MIRYOKU_EXTRA_QWERTY) - #define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_QWERTY_FLIP - #elif defined (MIRYOKU_EXTRA_QWERTZ) - #define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_QWERTZ_FLIP - #else - #define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_QWERTY_FLIP - #endif - #else - #if defined (MIRYOKU_EXTRA_AZERTY) - #define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_AZERTY - #elif defined (MIRYOKU_EXTRA_BEAKL15) - #define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_BEAKL15 - #elif defined (MIRYOKU_EXTRA_COLEMAK) - #define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_COLEMAK - #elif defined (MIRYOKU_EXTRA_COLEMAKDH) - #define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_COLEMAKDH - #elif defined (MIRYOKU_EXTRA_COLEMAKDHK) - #define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_COLEMAKDHK - #elif defined (MIRYOKU_EXTRA_DVORAK) - #define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_DVORAK - #elif defined (MIRYOKU_EXTRA_HALMAK) - #define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_HALMAK - #elif defined (MIRYOKU_EXTRA_WORKMAN) - #define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_WORKMAN - #elif defined (MIRYOKU_EXTRA_QWERTY) - #define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_QWERTY - #elif defined (MIRYOKU_EXTRA_QWERTZ) - #define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_QWERTZ - #else - #define MIRYOKU_LAYER_EXTRA MIRYOKU_ALTERNATIVES_BASE_QWERTY - #endif - #endif -#endif -#if !defined(MIRYOKU_LAYERMAPPING_EXTRA) - #define MIRYOKU_LAYERMAPPING_EXTRA MIRYOKU_MAPPING -#endif - -#if !defined(MIRYOKU_LAYER_TAP) - #if defined (MIRYOKU_LAYERS_FLIP) - #if defined (MIRYOKU_TAP_AZERTY) - #define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_AZERTY_FLIP - #elif defined (MIRYOKU_TAP_BEAKL15) - #define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_BEAKL15_FLIP - #elif defined (MIRYOKU_TAP_COLEMAK) - #define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_COLEMAK_FLIP - #elif defined (MIRYOKU_TAP_COLEMAKDH) - #define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_COLEMAKDH_FLIP - #elif defined (MIRYOKU_TAP_COLEMAKDHK) - #define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_COLEMAKDHK_FLIP - #elif defined (MIRYOKU_TAP_DVORAK) - #define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_DVORAK_FLIP - #elif defined (MIRYOKU_TAP_HALMAK) - #define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_HALMAK_FLIP - #elif defined (MIRYOKU_TAP_WORKMAN) - #define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_WORKMAN_FLIP - #elif defined (MIRYOKU_TAP_QWERTY) - #define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_QWERTY_FLIP - #elif defined (MIRYOKU_TAP_QWERTZ) - #define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_QWERTZ_FLIP - #else - #define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_COLEMAKDH_FLIP - #endif - #else - #if defined (MIRYOKU_TAP_AZERTY) - #define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_AZERTY - #elif defined (MIRYOKU_TAP_BEAKL15) - #define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_BEAKL15 - #elif defined (MIRYOKU_TAP_COLEMAK) - #define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_COLEMAK - #elif defined (MIRYOKU_TAP_COLEMAKDH) - #define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_COLEMAKDH - #elif defined (MIRYOKU_TAP_COLEMAKDHK) - #define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_COLEMAKDHK - #elif defined (MIRYOKU_TAP_DVORAK) - #define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_DVORAK - #elif defined (MIRYOKU_TAP_HALMAK) - #define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_HALMAK - #elif defined (MIRYOKU_TAP_WORKMAN) - #define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_WORKMAN - #elif defined (MIRYOKU_TAP_QWERTY) - #define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_QWERTY - #elif defined (MIRYOKU_TAP_QWERTZ) - #define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_QWERTZ - #else - #define MIRYOKU_LAYER_TAP MIRYOKU_ALTERNATIVES_TAP_COLEMAKDH - #endif - #endif -#endif -#if !defined(MIRYOKU_LAYERMAPPING_TAP) - #define MIRYOKU_LAYERMAPPING_TAP MIRYOKU_MAPPING -#endif - -#if !defined(MIRYOKU_LAYER_BUTTON) - #define MIRYOKU_LAYER_BUTTON MIRYOKU_ALTERNATIVES_BUTTON -#endif -#if !defined(MIRYOKU_LAYERMAPPING_BUTTON) - #define MIRYOKU_LAYERMAPPING_BUTTON MIRYOKU_MAPPING -#endif - -#if !defined(MIRYOKU_LAYER_NAV) - #if defined (MIRYOKU_LAYERS_FLIP) - #if defined (MIRYOKU_NAV_INVERTEDT) - #define MIRYOKU_LAYER_NAV MIRYOKU_ALTERNATIVES_NAV_INVERTEDT_FLIP - #else - #define MIRYOKU_LAYER_NAV MIRYOKU_ALTERNATIVES_NAV_FLIP - #endif - #else - #if defined (MIRYOKU_NAV_INVERTEDT) - #define MIRYOKU_LAYER_NAV MIRYOKU_ALTERNATIVES_NAV_INVERTEDT - #elif defined (MIRYOKU_NAV_VI) - #define MIRYOKU_LAYER_NAV MIRYOKU_ALTERNATIVES_NAV_VI - #else - #define MIRYOKU_LAYER_NAV MIRYOKU_ALTERNATIVES_NAV - #endif - #endif -#endif -#if !defined(MIRYOKU_LAYERMAPPING_NAV) - #define MIRYOKU_LAYERMAPPING_NAV MIRYOKU_MAPPING -#endif - -#if !defined(MIRYOKU_LAYER_MOUSE) - #if defined (MIRYOKU_LAYERS_FLIP) - #if defined (MIRYOKU_NAV_INVERTEDT) - #define MIRYOKU_LAYER_MOUSE MIRYOKU_ALTERNATIVES_MOUSE_INVERTEDT_FLIP - #else - #define MIRYOKU_LAYER_MOUSE MIRYOKU_ALTERNATIVES_MOUSE_FLIP - #endif - #else - #if defined (MIRYOKU_NAV_INVERTEDT) - #define MIRYOKU_LAYER_MOUSE MIRYOKU_ALTERNATIVES_MOUSE_INVERTEDT - #elif defined (MIRYOKU_NAV_VI) - #define MIRYOKU_LAYER_MOUSE MIRYOKU_ALTERNATIVES_MOUSE_VI - #else - #define MIRYOKU_LAYER_MOUSE MIRYOKU_ALTERNATIVES_MOUSE - #endif - #endif -#endif -#if !defined(MIRYOKU_LAYERMAPPING_MOUSE) - #define MIRYOKU_LAYERMAPPING_MOUSE MIRYOKU_MAPPING -#endif - -#if !defined(MIRYOKU_LAYER_MEDIA) - #if defined (MIRYOKU_LAYERS_FLIP) - #if defined (MIRYOKU_NAV_INVERTEDT) - #define MIRYOKU_LAYER_MEDIA MIRYOKU_ALTERNATIVES_MEDIA_INVERTEDT_FLIP - #else - #define MIRYOKU_LAYER_MEDIA MIRYOKU_ALTERNATIVES_MEDIA_FLIP - #endif - #else - #if defined (MIRYOKU_NAV_INVERTEDT) - #define MIRYOKU_LAYER_MEDIA MIRYOKU_ALTERNATIVES_MEDIA_INVERTEDT - #elif defined (MIRYOKU_NAV_VI) - #define MIRYOKU_LAYER_MEDIA MIRYOKU_ALTERNATIVES_MEDIA_VI - #else - #define MIRYOKU_LAYER_MEDIA MIRYOKU_ALTERNATIVES_MEDIA - #endif - #endif -#endif -#if !defined(MIRYOKU_LAYERMAPPING_MEDIA) - #define MIRYOKU_LAYERMAPPING_MEDIA MIRYOKU_MAPPING -#endif - -#if !defined(MIRYOKU_LAYER_NUM) - #if defined (MIRYOKU_LAYERS_FLIP) - #define MIRYOKU_LAYER_NUM MIRYOKU_ALTERNATIVES_NUM_FLIP - #else - #define MIRYOKU_LAYER_NUM MIRYOKU_ALTERNATIVES_NUM - #endif -#endif -#if !defined(MIRYOKU_LAYERMAPPING_NUM) - #define MIRYOKU_LAYERMAPPING_NUM MIRYOKU_MAPPING -#endif - -#if !defined(MIRYOKU_LAYER_SYM) - #if defined (MIRYOKU_LAYERS_FLIP) - #define MIRYOKU_LAYER_SYM MIRYOKU_ALTERNATIVES_SYM_FLIP - #else - #define MIRYOKU_LAYER_SYM MIRYOKU_ALTERNATIVES_SYM - #endif -#endif -#if !defined(MIRYOKU_LAYERMAPPING_SYM) - #define MIRYOKU_LAYERMAPPING_SYM MIRYOKU_MAPPING -#endif - -#if !defined(MIRYOKU_LAYER_FUN) - #if defined (MIRYOKU_LAYERS_FLIP) - #define MIRYOKU_LAYER_FUN MIRYOKU_ALTERNATIVES_FUN_FLIP - #else - #define MIRYOKU_LAYER_FUN MIRYOKU_ALTERNATIVES_FUN - #endif -#endif -#if !defined(MIRYOKU_LAYERMAPPING_FUN) - #define MIRYOKU_LAYERMAPPING_FUN MIRYOKU_MAPPING -#endif diff --git a/users/manna-harbour_miryoku/post_rules.mk b/users/manna-harbour_miryoku/post_rules.mk deleted file mode 100644 index e4f1806bf5..0000000000 --- a/users/manna-harbour_miryoku/post_rules.mk +++ /dev/null @@ -1,42 +0,0 @@ -# Copyright 2022 Manna Harbour -# https://github.com/manna-harbour/miryoku - -# alternative layout options - -ifneq ($(strip $(MIRYOKU_ALPHAS)),) - OPT_DEFS += -DMIRYOKU_ALPHAS_$(MIRYOKU_ALPHAS) -endif - -ifneq ($(strip $(MIRYOKU_EXTRA)),) - OPT_DEFS += -DMIRYOKU_EXTRA_$(MIRYOKU_EXTRA) -endif - -ifneq ($(strip $(MIRYOKU_TAP)),) - OPT_DEFS += -DMIRYOKU_TAP_$(MIRYOKU_TAP) -endif - -ifneq ($(strip $(MIRYOKU_NAV)),) - OPT_DEFS += -DMIRYOKU_NAV_$(MIRYOKU_NAV) -endif - -ifneq ($(strip $(MIRYOKU_CLIPBOARD)),) - OPT_DEFS += -DMIRYOKU_CLIPBOARD_$(MIRYOKU_CLIPBOARD) -endif - -ifneq ($(strip $(MIRYOKU_LAYERS)),) - OPT_DEFS += -DMIRYOKU_LAYERS_$(MIRYOKU_LAYERS) -endif - -# subset mappings - -ifneq ($(strip $(MIRYOKU_MAPPING)),) - OPT_DEFS += -DMIRYOKU_MAPPING_$(MIRYOKU_MAPPING) -endif - -# kludges - -# thumb combos -ifeq ($(strip $(MIRYOKU_KLUDGE_THUMBCOMBOS)),yes) - COMBO_ENABLE = yes - OPT_DEFS += -DMIRYOKU_KLUDGE_THUMBCOMBOS -endif diff --git a/users/manna-harbour_miryoku/readme.org b/users/manna-harbour_miryoku/readme.org deleted file mode 100644 index 4621117526..0000000000 --- a/users/manna-harbour_miryoku/readme.org +++ /dev/null @@ -1,801 +0,0 @@ -# Copyright 2022 Manna Harbour -# https://github.com/manna-harbour/miryoku - -* Miryoku QMK [[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/logos/miryoku-roa-32.png]] - -[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/cover/miryoku-kle-cover-miryoku_qmk.png]] - -[[https://github.com/manna-harbour/miryoku/][Miryoku]] is an ergonomic, minimal, orthogonal, and universal keyboard layout. [[https://github.com/manna-harbour/miryoku_qmk/tree/miryoku/users/manna-harbour_miryoku][Miryoku QMK]] is the Miryoku implementation for [[https://qmk.fm][QMK]]. - - -** Branches - - -*** QMK master - -QMK master is the current version of QMK, but usually does not contain the current version of Miryoku QMK. - -QMK master is at https://github.com/qmk/qmk_firmware/tree/master. The corresponding Miryoku QMK readme is at https://github.com/qmk/qmk_firmware/tree/master/users/manna-harbour_miryoku and describes the version of Miryoku QMK in QMK master. - - -*** Miryoku QMK development branch - -The Miryoku QMK development branch is the current version of Miryoku QMK, but usually does not contain the current version of QMK. - -The Miryoku QMK development branch is named ~miryoku~ and is at https://github.com/manna-harbour/miryoku_qmk/tree/miryoku. The corresponding Miryoku QMK readme is at https://github.com/manna-harbour/miryoku_qmk/tree/miryoku/users/manna-harbour_miryoku. - -New commits can be seen at the top of the [[https://github.com/manna-harbour/miryoku_qmk/commits/miryoku][history]] with commit messages beginning ~[miryoku]~ or ~[miryoku-github]~ - -Periodically, the ~[miryoku]~ commits are squashed and merged upstream into QMK master by pull request, the ~miryoku~ branch is renamed, and a new ~miryoku~ branch is created from QMK master. - - -**** Merge - -To use both the current versions of QMK and Miryoku QMK together, the QMK master and ~miryoku~ branches need to be merged. - -The ~[miryoku-github]~ commits relate to GitHub specific functions of the Miryoku QMK repository and forks, such as workflows. Directly merging ~miryoku~ with a branch based on QMK master will lead to conflicts due to those commits. To avoid conflicts, first drop or revert all ~[miryoku-github]~ commits from ~miryoku~ before merging. - -Merging branches can be performed automatically at build time for [[#workflow-builds][workflow builds]] using the ~merge~ option, which will automatically revert all ~[miryoku-github]~ commits before merging. For local builds, see [[#checkout-update-and-merge][Checkout, Update, and Merge]] below. - -Any local changes to existing workflow files should be made independently in commits with messages starting ~[miryoku-github]~ so that they can also be automatically excluded in workflow builds. - - -** Building - - -*** Local Builds - -First [[https://docs.qmk.fm/#/newbs_getting_started][set up the QMK build environment and build the default keymap for your keyboard]]. - -Next choose the [[#branches][branch]]. If using ~miryoku~, [[#checkout-update-and-merge][checkout, update, or merge]] as needed. - -Build with ~manna-harbour_miryoku~ as the keymap name. Personalised defaults for [[https://github.com/manna-harbour/miryoku/tree/master/docs/reference#alternative-layouts][alternative layout]] options can be set in [[#userspace][custom_rules.mk]]. Options can also be set or overridden at build time. Build with [[#qmk][qmk]] or [[#make][make]]. - - -**** Checkout, Update, and Merge - -All of the following examples operate in your existing QMK build environment. -#+BEGIN_SRC sh :tangle no -cd qmk_firmware -#+END_SRC - -To checkout the ~miryoku~ branch from Miryoku QMK: -#+BEGIN_SRC sh :tangle no -git remote add miryoku_qmk git@github.com:manna-harbour/miryoku_qmk.git # if using SSH -git remote add miryoku_qmk https://github.com/manna-harbour/miryoku_qmk.git # if using HTTPS -git fetch miryoku_qmk -git checkout --track miryoku_qmk/miryoku -make git-submodule -#+END_SRC - -To update the ~miryoku~ branch from Miryoku QMK: -#+BEGIN_SRC sh :tangle no -git checkout miryoku -git fetch miryoku_qmk -git merge miryoku_qmk/miryoku -#+END_SRC - -If a new ~miryoku~ branch has been created in Miryoku QMK you will see ~(forced update)~ after the fetch. To rename the existing ~miryoku~ branch and create a new ~miryoku~ branch from Miryoku QMK: -#+BEGIN_SRC sh :tangle no -git checkout miryoku -git branch -m miryoku-`whoami`-`date --rfc-3339=date` -git fetch miryoku_qmk -git checkout --track miryoku_qmk/miryoku -make git-submodule -#+END_SRC - -To [[#merge][merge]] the ~miryoku~ branch with QMK master: -#+BEGIN_SRC sh :tangle no -git checkout miryoku -git checkout -b miryoku-merge-master -git revert --no-edit `git log --grep='^\[miryoku-github\]' --pretty='format:%H' | tr '\n' ' '` -git fetch origin -git merge origin/master -make git-submodule -#+END_SRC - - -**** qmk - -Build with the ~qmk~ command. E.g. - -#+BEGIN_SRC sh :tangle no -qmk compile -c -kb crkbd -km manna-harbour_miryoku # build for crkbd -qmk flash -c -kb crkbd -km manna-harbour_miryoku # build for crkbd and flash -qmk compile -c -kb crkbd -km manna-harbour_miryoku \ - -e MIRYOKU_ALPHAS=QWERTY \ - -e MIRYOKU_EXTRA=COLEMAKDH \ - -e MIRYOKU_TAP=QWERTY \ - -e MIRYOKU_NAV=INVERTEDT \ - -e MIRYOKU_CLIPBOARD=WIN \ - -e MIRYOKU_LAYERS=FLIP # build for crkbd with alternative layouts -#+END_SRC - - -**** make - -First ~cd~ to the repository root. Then build with ~make~. E.g. - -#+BEGIN_SRC sh :tangle no -make clean crkbd:manna-harbour_miryoku # build for crkbd -make clean crkbd:manna-harbour_miryoku:flash # build for crkbd and flash -make clean crkbd:manna-harbour_miryoku \ - MIRYOKU_ALPHAS=QWERTY \ - MIRYOKU_EXTRA=COLEMAKDH \ - MIRYOKU_TAP=QWERTY \ - MIRYOKU_NAV=INVERTEDT \ - MIRYOKU_CLIPBOARD=WIN \ - MIRYOKU_LAYERS=FLIP # build for crkbd with alternative layouts -#+END_SRC - - -*** Workflow Builds - -Firmware can be built via GitHub Actions workflows without use of a local build environment. Local tools are still required for [[https://docs.qmk.fm/#/newbs_flashing][flashing]]. - -First [[#fork-or-sync][fork the Miryoku QMK repository or sync the ~miryoku~ branch]]. Then use the [[#build-examples][Build Examples]] or [[#build-inputs][Build Inputs]] workflows. - -To access a workflow, visit the Actions tab and select the workflow. To download the firmware from a workflow run, select the workflow, select the workflow run, select the desired Artifacts, and unzip the downloaded zip file. - -Workflow files are in [[../../.github/workflows]]. - - -**** Fork or Sync - -If you don't have a fork, first [[https://github.com/signup][create a GitHub account]], [[https://github.com/login][login to GitHub]], [[https://docs.github.com/en/get-started/quickstart/fork-a-repo#forking-a-repository][fork]] https://github.com/manna-harbour/miryoku_qmk, and visit the Actions tab and enable workflows. - -If you already have a fork, [[https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork#syncing-a-fork-branch-from-the-web-ui][sync]] the ~miryoku~ branch. - -If a new ~miryoku~ branch has been created in Miryoku QMK, there will be a warning about conflicts when trying to sync. If you have local changes, first create a copy of the branch by [[https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-and-deleting-branches-within-your-repository#creating-a-branch][creating a new branch]] and specifying the ~miryoku~ branch in your fork as the source, then sync the ~miryoku~ branch again. Accept the prompt to discard commits. - - -**** Build Examples - -Copy one of the included Build Example workflow files, edit the ~name~ value, and edit and add options and values as desired. Select Run workflow, select the Branch if desired, and activate Run workflow. - -Options are specified in the ~with~ section and are of the following form. -: option: '["value"]' - -For multiple values per option use the following form, and a matrix build will be performed for each combination of values across all options. -: option: '["value1","value2"]' - -The ~keyboard~ option specifies the keyboard and is required. All other options are optional. - -The ~alphas~, ~nav~, ~clipboard~, and ~layers~ options correspond to the [[https://github.com/manna-harbour/miryoku/tree/master/docs/reference#alternative-layouts][alternative layout]] options. The ~mapping~ option corresponds to the alternative [[#subset-mapping][mapping]] options. Alternative layout and mapping options are given in the documentation in the form ~MIRYOKU_OPTION=VALUE~. To use here, convert to the form specified above. Use ~default~ to represent the default value. Values for these five options are case-insensitive. See the [[../../.github/workflows/test-all-configs.yml][Test All Configs workflow file]] for all supported values. - -The ~rules~ and ~custom_config~ options can be used to specify values to be appended to ~custom_rules.mk~ and ~custom_config.h~, respectively. Separate multiple lines with ~\n~. - -The ~merge~ option can be used to merge branches at build time. Branches are specified in the form ~//~. E.g. QMK ~master~ and ~develop~ would be specified as ~qmk/qmk_firmware/master~ and ~qmk/qmk_firmware/develop~ respectively. Multiple space separated branches can be specified. For no merges, leave as ~default~. - - -**** Build Inputs - -The Build Inputs workflow can be used without editing workflow files. Select Run workflow, select the Branch and fill out the form as desired, and activate Run workflow. - -Most options are specified by entering values directly in the corresponding field. Multiple comma separated values can be entered per option and a matrix build will be performed for each combination of values across all options. - -Values for Miryoku alternative layout options are selected from a list. As multiple selection is not supported, matrix builds across multiple values are not possible for these options, and the Test Inputs or [[#build-examples][Build Example]] workflows should be used instead. - -The ~Keyboard~ option specifies the keyboard and is required. All other options are optional. - -The ~Miryoku Alphas~, ~Miryoku Nav~, ~Miryoku Clipboard~, and ~Miryoku Layers~ options correspond to the [[https://github.com/manna-harbour/miryoku/tree/master/docs/reference#alternative-layouts][alternative layout]] options. The ~Miryoku Mapping~ option corresponds to the alternative [[#subset-mapping][mapping]] options. Alternative layout and mapping options are given in the documentation in the form ~MIRYOKU_OPTION=VALUE~. To use here, enter the ~value~ in the corresponding ~Miryoku Option~ field. Use ~default~ to represent the default value. Values for these five options are case-insensitive. - -The ~custom_rules.mk~ and ~custom_config.h~ options can be used to specify values to be appended to the corresponding files. Join multiple lines with ~\n~. - -The ~Merge QMK Branches~ option can be used to merge branches at build time. Branches are specified in the form ~//~. E.g. QMK ~master~ and ~develop~ would be specified as ~qmk/qmk_firmware/master~ and ~qmk/qmk_firmware/develop~ respectively. Multiple space separated branches can be specified. For no merges, leave as ~default~. - - -** Subset Mapping - -The keymap, build options, and configuration are shared between keyboards. The -layout is mapped onto keyboards with different physical layouts as a subset -without code duplication using the QMK userspace feature and C macros. - - -*** Userspace - -The keymap is defined for ~LAYOUT_miryoku~ which is 10x4, with the outer 2 -positions on the bottom row unused and the rest of the bottom row being the -thumb keys. - -- [[./rules.mk]] :: Build options. Automatically included. - -- [[./custom_rules.mk]] :: Custom ~make~ options including customised defaults for alternative layout and mapping options. Included from ~rules.mk~. - -- [[./post_rules.mk]] :: Handles Miryoku ~make~ options. Included from ~rules.mk~. - -- [[./config.h]] :: Config options. Automatically included. - -- [[./custom_config.h]] :: Custom config options. Included from ~config.h~. - -- [[./manna-harbour_miryoku.h]] :: Keymap-related definitions. Included from ~manna-harbour_miryoku.c~. Layer data is generated by [[https://github.com/manna-harbour/miryoku_babel][Miryoku Babel]] and is included from files in the [[miryoku_babel]] directory. - -- [[./manna-harbour_miryoku.c]] :: Contains the keymap. Added from ~rules.mk~. - - -*** Community Layouts - -To use the keymap on a keyboard supporting the community layouts feature, -~LAYOUT_miryoku~ is defined as a macro mapping onto the layout's own ~LAYOUT~ -macro, leaving the unused keys as ~KC_NO~. - -For keyboards supporting multiple layouts for which subset mappings are -available, select the layout with ~FORCE_LAYOUT~ in the ~make~ command line when -building. E.g.: - -#+BEGIN_SRC sh :tangle no -make planck/rev6:manna-harbour_miryoku:flash FORCE_LAYOUT=planck_mit # planck_mit -make planck/rev6:manna-harbour_miryoku:flash FORCE_LAYOUT=ortho_4x12 # ortho_4x12 -#+END_SRC - - -**** 60_ansi - -An angled ortho split layout is mapped onto the row-staggered keyboard. The -rows are moved up to better position the thumb keys, the hands are separated as -much as possible, and the left hand column angle is reversed to reduce ulnar -deviation of the wrists. - -[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/mapping/miryoku-kle-mapping-60_ansi.png]] - -An alternative subset mapping is also provided without reverse column angle. To -select this mapping, append ~MIRYOKU_MAPPING=NOREVERSEANGLE~ to the ~make~ -command line when building. - -[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/mapping/miryoku-kle-mapping-60_ansi-noreverseangle.png]] - -Another alternative subset mapping is provided mapping only the 3x10 alphas, -plus spacebar for space / Nav, with the remainder being the default 60_ansi -keymap with semicolon in place of quote. To select this mapping, append -~MIRYOKU_MAPPING=LITE~ to the ~make~ command line when building. - -Keyboards supporting this layout: alps64, amj60, bakeneko60, bm60poker, bm60rgb, do60, dp60, dz60, facew, gskt00, infinity60, jm60, kc60, kc60se, ok60, org60, paladin64, panc60, reviung61, smk60, v60_type_r, yd60mq, 1upkeyboards/1up60hse, 1upkeyboards/1up60rgb, 40percentclub/luddite, acheron/keebspcb, acheron/lasgweloth, ai03/polaris, akegata_denki/device_one, atxkb/1894, bioi/g60ble, bt66tech/bt66tech60, cannonkeys/an_c, cannonkeys/instant60, cannonkeys/practice60, clawsome/coupe, dm9records/tartan, duck/eagle_viper, evyd13/plain60, exclusive/e6_rgb, gh60/revc, gh60/satan, gh60/v1p3, handwired/xealousbrown, hineybush/h60, hs60/v1, keebio/wtf60, noxary/260, playkbtw/pk60, ryloo_studio/m0110, thevankeyboards/bananasplit, wilba_tech/zeal60, xd60/rev2, xd60/rev3, cannonkeys/db60/hotswap, cannonkeys/db60/j02, cannonkeys/db60/rev2, exclusive/e6v2/le, exclusive/e6v2/oe, foxlab/leaf60/universal, handwired/co60/rev1, handwired/co60/rev7, handwired/swiftrax/nodu, hs60/v2/ansi, inett_studio/sqx/universal, melgeek/mj61/rev1, melgeek/mj61/rev2, melgeek/mj63/rev1, melgeek/mj63/rev2, sentraq/s60_x/default, sentraq/s60_x/rgb. - -Example build command lines: - -#+BEGIN_SRC sh :tangle no -make dz60:manna-harbour_miryoku:flash # dz60 -make dz60:manna-harbour_miryoku:flash MIRYOKU_MAPPING=NOREVERSEANGLE # dz60, without reverse column angle -make dz60:manna-harbour_miryoku:flash MIRYOKU_MAPPING=LITE # dz60, with lite mapping -#+END_SRC - - -**** alice - -This is a hybrid mapping. Only the 3x10 alphas plus spacebars as primary thumb keys are mapped. The remaining keys are the same as the default keymap but with semicolon in place of quote. The keys adjacent to the spacebars are also mapped as corresponding thumb keys but may not be usable as such. - -Keyboards supporting this layout: cheshire/curiosity, handwired/owlet60, mechlovin/adelais, projectkb/alice, sck/osa, axolstudio/yeti, coarse/cordillera, edda, evyd13/wonderland, fallacy, kb_elmo/sesame, keebsforall/coarse60, ramonimbao/aelith, sneakbox/aliceclone, tkc/osav2, zoo/wampus. - - -**** alice_split_bs - -This is a hybrid mapping. Only the 3x10 alphas plus spacebars as primary thumb keys are mapped. The remaining keys are the same as the default keymap but with semicolon in place of quote. The keys adjacent to the spacebars are also mapped as corresponding thumb keys but may not be usable as such. - -Keyboards supporting this layout: cheshire/curiosity, ergosaurus, handwired/colorlice, handwired/owlet60, mechlovin/adelais, projectkb/alice, sck/osa, tgr/alice, xelus/valor/rev1, xelus/valor/rev2, axolstudio/yeti, coarse/cordillera, edda, evyd13/wonderland, fallacy, kb_elmo/sesame, keebsforall/coarse60, nightly_boards/alter/rev1, ramonimbao/aelith, seigaiha, sneakbox/aliceclone, tkc/osav2, zoo/wampus. - - -**** ergodox - -For the ergodox layout, the main 5x3 alphas are used as usual. The primary and -secondary thumb keys are the inner and outer 2u thumb keys and the tertiary -thumb key is the innermost key of the partial bottom row. The remaining keys -are unused. - -[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/mapping/miryoku-kle-mapping-ergodox.png]] - -An alternative subset mapping is provided with all keys shifted up one row creating thumb keys in the original alpha area. To select this mapping, append ~MIRYOKU_MAPPING=SHIFTED_ROWS~ to the ~make~ command line when building. - -[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/mapping/miryoku-kle-mapping-ergodox-shifted_rows.png]] - -Another alternative subset mapping is provided as for ~MIRYOKU_MAPPING=SHIFTED_ROWS~ but with the thumb keys shifted one position in the direction of thumb extension. To select this mapping, append ~MIRYOKU_MAPPING=SHIFTED_ROWS_EXTENDED_THUMBS~ to the ~make~ command line when building. - -[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/mapping/miryoku-kle-mapping-ergodox-shifted_rows-extended_thumbs.png]] - -Another alternative subset mapping is provided as for ~MIRYOKU_MAPPING=SHIFTED_ROWS_EXTENDED_THUMBS~ but with the pinkie column moved down one row. To select this mapping, append ~MIRYOKU_MAPPING=SHIFTED_ROWS_EXTENDED_THUMBS_PINKIE_STAGGER~ to the ~make~ command line when building. - -[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/mapping/miryoku-kle-mapping-ergodox-shifted_rows-extended_thumbs-pinkie_stagger.png]] - -Keyboards supporting this layout: ergodone, ergodox_ez, ergodox_infinity, hotdox. - -Example build command lines: - -#+BEGIN_SRC sh :tangle no -make ergodox_infinity:manna-harbour_miryoku:flash # ergodox_infinity -make ergodox_ez:manna-harbour_miryoku:flash # ergodox_ez -make ergodox_ez:manna-harbour_miryoku:flash MIRYOKU_MAPPING=SHIFTED_ROWS # ergodox_ez, shifted rows -make ergodox_ez:manna-harbour_miryoku:flash MIRYOKU_MAPPING=SHIFTED_ROWS_EXTENDED_THUMBS # ergodox_ez, shifted rows, extended thumbs -make ergodox_ez:manna-harbour_miryoku:flash MIRYOKU_MAPPING=SHIFTED_ROWS_EXTENDED_THUMBS_PINKIE_STAGGER # ergodox_ez, shifted rows, extended thumbs, pinkie stagger - -#+END_SRC - - -**** ortho_4x10 - -An alternative with 180 degree rotation is also provided to enable the USB cable to be relocated for use with laptops. To select this mapping, append ~MIRYOKU_MAPPING=ROTATE~ to the ~make~ command line when building. - -Keyboards supporting this layout: newgame40, nimrod, marksard/rhymestone, pabile/p40. - -Example build command lines: - -#+BEGIN_SRC sh :tangle no -make marksard/rhymestone:manna-harbour_miryoku:flash # marksard/rhymestone -make pabile/p40:manna-harbour_miryoku:flash MIRYOKU_MAPPING=ROTATE # pabile/p40, rotate -#+END_SRC - - -**** ortho_4x12 - -For the ortho_4x12 layout, the middle two columns, and the 2 keys on each end of -the bottom row are unused. This allows the hands to be positioned without ulnar -deviation of the wrists. - -[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/mapping/miryoku-kle-mapping-ortho_4x12.png]] - -For split keyboards using this layout the halves can be positioned and rotated -for each hand and so an alternative mapping is provided. The right half is as -follows: The rightmost column bottom 3 keys is the pinkie column. The middle 4 -columns top 3 rows are for the remaining fingers. The pinkie column is one row -lower than the other columns to provide some column stagger. The bottom row -left 3 keys are the thumb keys. The remaining keys are unused. To select this -mapping, append ~MIRYOKU_MAPPING=SPLIT~ to the ~make~ command line when -building. - -[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/mapping/miryoku-kle-mapping-ortho_4x12-split.png]] - -An alternative with extended thumb position but without pinkie column stagger is -also provided. To select this mapping, append ~MIRYOKU_MAPPING=EXTENDED_THUMBS~ -to the ~make~ command line when building. - -[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/mapping/miryoku-kle-mapping-ortho_4x12-extended_thumbs.png]] - -Keyboards supporting this layout: chimera_ls, contra, efreet, jj40, jnao, lets_split, lets_split_eh, meira, niu_mini, quark, tau4, telophase, vitamins_included, zlant, 40percentclub/4x4, 40percentclub/nori, acheron/shark, boardsource/4x12, cannonkeys/ortho48, dm9records/plaid, evyd13/eon40, evyd13/pockettype, handwired/floorboard, handwired/jotanck, handwired/wulkan, kbdfans/kbd4x, keebio/levinson, keebio/wavelet, mechstudio/ud_40_ortho, planck/ez, planck/light, planck/rev1, planck/rev2, planck/rev3, planck/rev4, planck/rev5, planck/rev6, planck/thk, rgbkb/zygomorph, zvecr/split_blackpill, zvecr/zv48, keebio/nyquist/rev1, keebio/nyquist/rev2, keebio/nyquist/rev3, montsinger/rebound/rev1, montsinger/rebound/rev2, montsinger/rebound/rev3, montsinger/rebound/rev4, signum/3_0/elitec, spaceman/pancake/feather, spaceman/pancake/promicro, ymdk/ymd40/v2. - -Example build command lines: - -#+BEGIN_SRC sh :tangle no -make planck/rev6:manna-harbour_miryoku:flash FORCE_LAYOUT=ortho_4x12 # planck, ortho_4x12 -make planck/rev6:manna-harbour_miryoku:flash FORCE_LAYOUT=ortho_4x12 MIRYOKU_MAPPING=EXTENDED_THUMBS # planck, ortho_4x12, extended thumbs -make keebio/levinson:manna-harbour_miryoku:flash MIRYOKU_MAPPING=SPLIT # levinson -make keebio/levinson:manna-harbour_miryoku:flash MIRYOKU_MAPPING=EXTENDED_THUMBS # levinson, extended thumbs -#+END_SRC - - -**** ortho_5x12 - -As per ortho_4x12 but the top row is unused. - -Keyboards supporting this layout: fractal, jj50, jnao, boardsource/5x12, cannonkeys/atlas_alps, cannonkeys/ortho60, handwired/jot50, handwired/riblee_f401, handwired/riblee_f411, handwired/rs60, keycapsss/o4l_5x12, peej/lumberjack, preonic/rev1, preonic/rev2, preonic/rev3, rgbkb/zygomorph, keebio/nyquist/rev1, keebio/nyquist/rev2, keebio/nyquist/rev3. - -Example build command lines: - -#+BEGIN_SRC sh :tangle no -make preonic/rev3:manna-harbour_miryoku:flash # preonic/rev3 -make preonic/rev3:manna-harbour_miryoku:flash MIRYOKU_MAPPING=EXTENDED_THUMBS # preonic/rev3, extended thumbs -make keebio/nyquist/rev3:manna-harbour_miryoku:flash MIRYOKU_MAPPING=SPLIT # nyquist/rev3, split -make keebio/nyquist/rev3:manna-harbour_miryoku:flash MIRYOKU_MAPPING=EXTENDED_THUMBS # nyquist/rev3, extended thumbs - -#+END_SRC - - -**** ortho_5x15 - -For the ortho_5x15 layout, the top row, middle 5 columns, and the 2 keys on each -end of the bottom row are unused. This allows the hands to be positioned -without ulnar deviation of the wrists. - -[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/mapping/miryoku-kle-mapping-ortho_5x15.png]] - -An alternative subset mapping is also provided with the thumb keys shifted -across one position in the direction of thumb extension. To select this -mapping, append ~MIRYOKU_MAPPING=EXTENDED_THUMBS~ to the ~make~ command line -when building. - -[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/mapping/miryoku-kle-mapping-ortho_5x15-extended_thumbs.png]] - -Keyboards supporting this layout: atomic, geminate60, idobo, punk75, xd75, 40percentclub/5x5, 40percentclub/i75, cannonkeys/ortho75, sendyyeah/75pixels. - -Example build command lines: - -#+BEGIN_SRC sh :tangle no -make atomic:manna-harbour_miryoku:flash # atomic -make atomic:manna-harbour_miryoku:flash MIRYOKU_MAPPING=EXTENDED_THUMBS # atomic, extended thumbs -make idobo:manna-harbour_miryoku:flash # idobo -#+END_SRC - - -**** planck_mit - -The middle two columns including the middle 2u key, and the 2 keys on each end -of the bottom row are unused. - -Keyboards supporting this layout: bm40hsrgb, contra, efreet, jj40, latin47ble, mt40, niu_mini, quark, zlant, dm9records/plaid, evyd13/eon40, handwired/aranck, handwired/heisenberg, kbdfans/kbd4x, planck/ez, planck/light, planck/rev1, planck/rev2, planck/rev3, planck/rev4, planck/rev5, planck/rev6, planck/thk, spaceman/pancake/feather, spaceman/pancake/promicro. - -Example build command lines: - -#+BEGIN_SRC sh :tangle no -make planck/ez:manna-harbour_miryoku:flash # planck ez -make planck/rev6:manna-harbour_miryoku:flash FORCE_LAYOUT=planck_mit # planck rev6, mit - -#+END_SRC - - - -**** split_3x5_2 - -[[#thumb-combos][Thumb combos]] are enabled automatically for this layout. - -Keyboards supporting this layout: a_dux, alt34/rev1, bastardkb/dilemma, cradio, ferris/0_1, ferris/0_2, ferris/sweep - -Example build command lines: - -#+BEGIN_SRC sh :tangle no -make ferris/0_2:manna-harbour_miryoku:flash # ferris/0_2 -make ferris/sweep:manna-harbour_miryoku:flash # ferris/sweep -#+END_SRC - - -**** split_3x5_3 - -Keyboards supporting this layout: arch_36, boardsource/microdox, centromere, crkbd, eek, miniaxe, minidox/rev1, pteron36, squiggle/rev1, suihankey/split/rev1. - -Example build command lines: - -#+BEGIN_SRC sh :tangle no -make crkbd:manna-harbour_miryoku:flash # crkbd -make minidox:manna-harbour_miryoku:flash # minidox -#+END_SRC - - -**** split_3x6_3 - -The outer columns are unused. - -Keyboards supporting this layout: centromere, crkbd, bastardkb/tbkmini. - -Example build command lines: - -#+BEGIN_SRC sh :tangle no -make bastardkb/tbkmini:manna-harbour_miryoku:flash # bastardkb/tbkmini -make crkbd:manna-harbour_miryoku:flash # crkbd -#+END_SRC - - - -*** Keyboards - -To use the keymap on a keyboard which does not support the layouts feature, -~LAYOUT_miryoku~ is defined as a macro mapping onto the keyboard's own ~LAYOUT~ -macro, leaving the unused keys as ~KC_NO~. - - -**** a_dux - -[[#thumb-combos][Thumb combos]] are enabled automatically for this keyboard. - -To build for this keyboard, - -#+BEGIN_SRC sh :tangle no -make a_dux:manna-harbour_miryoku:flash -#+END_SRC - - -**** atreus - -Only the main 5x3 alphas and the inner 3 thumb keys are used. - -To build for this keyboard, - -#+BEGIN_SRC sh :tangle no -make atreus:manna-harbour_miryoku:flash -#+END_SRC - - -**** bastardkb/charybdis/3x5 - -[[#thumb-combos][Thumb combos]] are enabled automatically for this keyboard. - -To build for this keyboard, - -#+BEGIN_SRC sh :tangle no -make bastardkb/charybdis/3x5:manna-harbour_miryoku:flash -#+END_SRC - - -**** bastardkb/charybdis/4x6 - -On the trackball side the bottom row thumb key is used as the tertiary thumb key. Additionally, [[#thumb-combos][thumb combos]] are enabled automatically for this keyboard. - -To build for this keyboard, - -#+BEGIN_SRC sh :tangle no -make bastardkb/charybdis/4x6:manna-harbour_miryoku:flash -#+END_SRC - - -**** bastardkb/scylla - -To build for this keyboard, - -#+BEGIN_SRC sh :tangle no -make bastardkb/scylla:manna-harbour_miryoku:flash -#+END_SRC - - -**** draculad - -To build for this keyboard, - -#+BEGIN_SRC sh :tangle no -make draculad:manna-harbour_miryoku:flash -#+END_SRC - - -**** ergotravel - -To build for this keyboard, - -#+BEGIN_SRC sh :tangle no -make ergotravel:manna-harbour_miryoku:flash -#+END_SRC - - -**** for_science - -The top row is unused. - -To build for this keyboard, - -#+BEGIN_SRC sh :tangle no -make for_science:manna-harbour_miryoku:flash -#+END_SRC - - -**** fortitude60 - -To build for this keyboard, - -#+BEGIN_SRC sh :tangle no -make fortitude60:manna-harbour_miryoku:flash -#+END_SRC - - -**** gergo - -Only the main 5x3 alphas and the outer 3 thumb keys are used. - -To build for this keyboard, - -#+BEGIN_SRC sh :tangle no -make gergo:manna-harbour_miryoku:flash -#+END_SRC - - -**** handwired/dactyl_manuform/4x5 - -Only the main 5x3 alphas and the main 3 thumb keys are used. - -To build for this keyboard, - -#+BEGIN_SRC sh :tangle no -make handwired/dactyl_manuform/4x5:manna-harbour_miryoku:flash -#+END_SRC - - -**** handwired/dactyl_manuform/4x6 - -Only the main 5x3 alphas and the main 3 thumb keys are used. - -To build for this keyboard, - -#+BEGIN_SRC sh :tangle no -make handwired/dactyl_manuform/4x6:manna-harbour_miryoku:flash -#+END_SRC - - -**** handwired/dactyl_manuform/5x6 - -Only the main 5x3 alphas and the main 3 thumb keys are used. - -To build for this keyboard, - -#+BEGIN_SRC sh :tangle no -make handwired/dactyl_manuform/5x6:manna-harbour_miryoku:flash -#+END_SRC - - -**** jorne - -To build for this keyboard, - -#+BEGIN_SRC sh :tangle no -make jorne:manna-harbour_miryoku:flash -#+END_SRC - - -**** keebio/iris - -Only the main 5x3 alphas and the bottom 3 thumb keys are used. - -To build for this keyboard, - -#+BEGIN_SRC sh :tangle no -make keebio/iris/rev4:manna-harbour_miryoku:flash -#+END_SRC - - -**** keyboardio/atreus - -Only the main 5x3 alphas and the inner 3 thumb keys are used. - -To build for this keyboard, - -#+BEGIN_SRC sh :tangle no -make keyboardio/atreus:manna-harbour_miryoku:flash -#+END_SRC - - -**** keyboardio/model01 - -Only the main 5x3 alphas and the inner 3 thumb keys are used. - -To build for this keyboard, - -#+BEGIN_SRC sh :tangle no -make keyboardio/model01:manna-harbour_miryoku:flash -#+END_SRC - - -**** lily58 - -Only the main 5x3 alphas and the inner 3 thumb keys are used. - -To build for this keyboard, - -#+BEGIN_SRC sh :tangle no -make lily58:manna-harbour_miryoku:flash -#+END_SRC - - -**** moonlander - -The main 5x3 alphas are used as usual. The primary, secondary, and tertiary -thumb keys are the closest piano key, middle piano key, and the innermost key of -the partial bottom row, respectively. The remaining keys are unused. - -To build for this keyboard, - -#+BEGIN_SRC sh :tangle no -make moonlander:manna-harbour_miryoku:flash -#+END_SRC - - -**** pluckey - -Only the main 5x3 alphas and the main 3 thumb keys are used. - -To build for this keyboard, - -#+BEGIN_SRC sh :tangle no -make pluckey:manna-harbour_miryoku:flash -#+END_SRC - - -**** redox_w - -Only the main 5x3 alphas and the main 3 thumb keys are used. - -To build for this keyboard, - -#+BEGIN_SRC sh :tangle no -make redox_w:manna-harbour_miryoku:flash -#+END_SRC - - -**** satt/vision - -To build for this keyboard, - -#+BEGIN_SRC sh :tangle no -make satt/vision:manna-harbour_miryoku:flash -#+END_SRC - - -**** sofle - -To build for this keyboard, - -#+BEGIN_SRC sh :tangle no -make sofle:manna-harbour_miryoku:flash -#+END_SRC - - -**** splitkb/kyria - -Only the main 5x3 alphas and the middle 3 lower thumb keys are used. - -[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/mapping/miryoku-kle-mapping-kyria.png]] - -An alternative subset mapping is also provided with the thumb keys shifted one -position in the direction of thumb extension. To select this mapping, append -~MIRYOKU_MAPPING=EXTENDED_THUMBS~ to the ~make~ command line when building. - -[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/mapping/miryoku-kle-mapping-kyria-extended_thumbs.png]] - - -To build for this keyboard, - -#+BEGIN_SRC sh :tangle no -make splitkb/kyria:manna-harbour_miryoku:flash -make splitkb/kyria:manna-harbour_miryoku:flash MIRYOKU_MAPPING=EXTENDED_THUMBS # extended thumb position -#+END_SRC - - -**** takashicompany/minizone - -The bottom row middle two keys are mapped to left and right mouse buttons. - -An alternative subset mapping is also provided with the thumb keys shifted one -position in the direction of thumb extension. To select this mapping, append -~MIRYOKU_MAPPING=EXTENDED_THUMBS~ to the ~make~ command line when building. - -To build for this keyboard, - -#+BEGIN_SRC sh :tangle no -make takashicompany/minizone:manna-harbour_miryoku:flash # make -make takashicompany/minizone:manna-harbour_miryoku:flash MIRYOKU_MAPPING=EXTENDED_THUMBS # make, extended thumb position -make takashicompany/minizone:manna-harbour_miryoku:flash POINTING_DEVICE_ENABLE=yes POINTING_DEVICE_DRIVER=pimoroni_trackball OLED_ENABLE=no # make, with pimoroni trackball -qmk compile -c -kb takashicompany/minizone -km manna-harbour_miryoku # qmk -qmk compile -c -kb takashicompany/minizone -km manna-harbour_miryoku -e MIRYOKU_MAPPING=EXTENDED_THUMBS # qmk, extended thumb position -qmk compile -c -kb takashicompany/minizone -km manna-harbour_miryoku -e POINTING_DEVICE_ENABLE=yes -e POINTING_DEVICE_DRIVER=pimoroni_trackball -e OLED_ENABLE=no # qmk, with pimoroni trackball -#+END_SRC - - -**** torn - -To build for this keyboard, - -#+BEGIN_SRC sh :tangle no -make torn:manna-harbour_miryoku:flash -#+END_SRC - - -** Additional and Experimental Features - - -*** Bilateral Combinations - -- [[https://github.com/manna-harbour/qmk_firmware/issues/29][Bilateral Combinations]] - - -*** Caps Word - -[[https://github.com/qmk/qmk_firmware/blob/master/docs/feature_caps_word.md][Caps Word]] is used in place of ~Caps Lock~. Combine with ~Shift~ for ~Caps Lock~. - - -*** Retro Shift - -- [[https://github.com/manna-harbour/qmk_firmware/issues/33][Retro Shift]] - - -*** Thumb Combos - -~MIRYOKU_KLUDGE_THUMBCOMBOS=yes~ - -Combo the primary and secondary thumb keys to emulate the tertiary thumb key. Can be used on keyboards with missing or hard to reach tertiary thumb keys or for compatibility with same. Requires suitable keycaps to enable the thumb to press both keys simultaneously. - - - -*** ð‘ĨMK - -Use Miryoku QMK with any keyboard with [[https://github.com/manna-harbour/xmk][ð‘ĨMK]]. - -For [[#local-builds][local builds]], merge https://github.com/manna-harbour/qmk_firmware/tree/xmk and build for keyboard ~converter/xmk~. - -For [[#workflow-builds][workflow builds]], use the Build Inputs workflow and build with keyboard ~converter/xmk~ and merge ~manna-harbour/qmk_firmware/xmk~, or use the Build Example ð‘ĨMK workflow. - -Also see [[https://github.com/manna-harbour/miryoku_kmonad][Miryoku KMonad]]. - - -** - -[[https://github.com/manna-harbour][https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/logos/manna-harbour-boa-32.png]] diff --git a/users/manna-harbour_miryoku/rules.mk b/users/manna-harbour_miryoku/rules.mk deleted file mode 100644 index c19a5ac046..0000000000 --- a/users/manna-harbour_miryoku/rules.mk +++ /dev/null @@ -1,15 +0,0 @@ -# Copyright 2019 Manna Harbour -# https://github.com/manna-harbour/miryoku - -MOUSEKEY_ENABLE = yes -EXTRAKEY_ENABLE = yes -AUTO_SHIFT_ENABLE = yes -TAP_DANCE_ENABLE = yes -CAPS_WORD_ENABLE = yes -KEY_OVERRIDE_ENABLE = yes - -INTROSPECTION_KEYMAP_C = manna-harbour_miryoku.c # keymaps - -include users/manna-harbour_miryoku/custom_rules.mk - -include users/manna-harbour_miryoku/post_rules.mk diff --git a/users/mattly/config.h b/users/mattly/config.h deleted file mode 100644 index bea04255aa..0000000000 --- a/users/mattly/config.h +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once - -#define PERMISSIVE_HOLD -#define TAPPING_TOGGLE 2 -#define TAPPING_TERM 200 diff --git a/users/mattly/mattly.c b/users/mattly/mattly.c deleted file mode 100644 index 9e8e7cfc97..0000000000 --- a/users/mattly/mattly.c +++ /dev/null @@ -1,78 +0,0 @@ -#include "mattly.h" - -__attribute__ ((weak)) -layer_state_t layer_state_set_keymap (layer_state_t state) { - return state; -} - -static uint16_t current_state = 0; - -void set_lights_default(void) { - #ifdef RGBLIGHT_ENABLE - if (host_keyboard_led_state().caps_lock) { - rgblight_sethsv_noeeprom(HSV_CAPS); - } else { - if (current_state == _BASE_MAC) { - rgblight_sethsv_noeeprom(HSV_MAC); - } else if (current_state == _OVER_WIN) { - rgblight_sethsv_noeeprom(HSV_WIN); - } - } - #endif -} - -void layer_state_set_rgb(layer_state_t state) { -#ifdef RGBLIGHT_ENABLE - switch (get_highest_layer(state)) { - case _SYMBOL: - rgblight_sethsv_noeeprom(HSV_SYMBOL); - break; - case _NAVNUM: - case _NAVNUM_WIN: - rgblight_sethsv_noeeprom(HSV_NAVNUM); - break; - case _GAME: - rgblight_sethsv_noeeprom(HSV_GAME); - break; - case _FUNCT: - case _FUNCT_WIN: - rgblight_sethsv_noeeprom(HSV_FUNCT); - break; - default: - set_lights_default(); - } -#endif -} - -layer_state_t layer_state_set_user (layer_state_t state) { - state = update_tri_layer_state(state, _SYMBOL, _NAVNUM, _FUNCT); - state = update_tri_layer_state(state, _OVER_WIN, _NAVNUM, _NAVNUM_WIN); - state = update_tri_layer_state(state, _OVER_WIN, _FUNCT, _FUNCT_WIN); - current_state = get_highest_layer(state); - layer_state_set_rgb(state); - return layer_state_set_keymap (state); -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case KC_CAPS: - #ifdef RGBLIGHT_ENABLE - set_lights_default(); - #endif - return true; - case QK_BOOT: - #ifdef RGBLIGHT_ENABLE - rgblight_sethsv_noeeprom(HSV_RESET); - #endif - return true; - default: - return true; - } -} - -void keyboard_post_init_user(void) { -#ifdef RGBLIGHT_ENABLE - rgblight_enable_noeeprom(); - set_lights_default(); -#endif -} diff --git a/users/mattly/mattly.h b/users/mattly/mattly.h deleted file mode 100644 index 2a151939b8..0000000000 --- a/users/mattly/mattly.h +++ /dev/null @@ -1,121 +0,0 @@ -/* Copyright 2019 Matthew Lyon - * - * 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 USERSPACE -#define USERSPACE - -#include "quantum.h" - -enum { - _BASE_MAC, - _OVER_WIN, - _NAVNUM, - _NAVNUM_WIN, - _SYMBOL, - _GAME, - _FUNCT, - _FUNCT_WIN, -}; - -// == System -#define TOG_WIN TG(_OVER_WIN) -#define TOG_GAM TG(_GAME) - -// == Thumbs -// left hand -#define ESC_HYP MT(MOD_HYPR, KC_ESC) -#define TAB_NUM LT(_NAVNUM, KC_TAB) -#define SPC_SFT MT(MOD_LSFT, KC_SPC) -#define ENT_SYM LT(_SYMBOL, KC_ENT) - -// right hand -#define SPC_SFT MT(MOD_LSFT, KC_SPC) -#define BSP_SYM LT(_SYMBOL, KC_BSPC) -#define DEL_WRP MT(MOD_LCTL | MOD_LALT | MOD_LGUI, KC_DEL) - -#define NAVLOCK TG(_NAVNUM) -#define SYMLOCK TG(_SYMBOL) - -// == QWERTY -// left hand home row -#define A_CTL MT(MOD_LCTL, KC_A) -#define A_GUI MT(MOD_LGUI, KC_A) -#define S_ALT MT(MOD_LALT, KC_S) -#define D_GUI MT(MOD_LGUI, KC_D) -#define D_CTL MT(MOD_LCTL, KC_D) -#define F_SFT MT(MOD_LSFT, KC_F) -// left hand aux -#define W_CTL MT(MOD_LCTL, KC_W) -#define W_GUI MT(MOD_LGUI, KC_W) -#define E_ALT MT(MOD_LALT, KC_E) -#define R_GUI MT(MOD_LGUI, KC_R) -#define R_CTL MT(MOD_LCTL, KC_R) - -// right hand home row -#define J_SFT MT(MOD_RSFT, KC_J) -#define K_GUI MT(MOD_RGUI, KC_K) -#define K_CTL MT(MOD_RCTL, KC_K) -#define L_ALT MT(MOD_RALT, KC_L) -#define MINSCTL MT(MOD_RCTL, KC_MINS) -#define MINSGUI MT(MOD_RGUI, KC_MINS) -// right hand aux -#define U_GUI MT(MOD_RGUI, KC_U) -#define U_CTL MT(MOD_RCTL, KC_U) -#define I_ALT MT(MOD_RALT, KC_I) -#define O_CTL MT(MOD_RCTL, KC_O) -#define O_GUI MT(MOD_RGUI, KC_O) - -// == OS X default keys -// movement by text -#define M_BWORD LALT(KC_LEFT) -#define W_BWORD LCTL(KC_LEFT) -#define M_FWORD LALT(KC_RIGHT) -#define W_FWORD LCTL(KC_RIGHT) - -#define M_BLINE LGUI(KC_LEFT) -#define M_ELINE LGUI(KC_RIGHT) - -#define M_BPARA LOPT(KC_UP) -#define M_NPARA LOPT(KC_DOWN) - -// gui navigation -#define M_NXWIN LGUI(KC_GRV) // Next Window -#define W_NXWIN LALT(KC_TAB) -#define M_PVWIN LGUI(LSFT(KC_GRV)) // Prev Window -#define W_PVWIN LALT(LSFT(KC_TAB)) -#define M_NXTAB LGUI(LSFT(KC_RBRC)) // Next Tab -#define W_NXTAB LCTL(KC_PGDN) -#define M_PVTAB LGUI(LSFT(KC_LBRC)) // Prev Tab -#define W_PVTAB LCTL(KC_PGUP) -#define M_NAVBK LGUI(KC_LBRC) // Navigate Forward -#define W_NAVBK LALT(KC_LEFT) -#define M_NAVFW LGUI(KC_RBRC) // Navigate Back -#define W_NAVFW LALT(KC_RIGHT) - -// == UNDERGLOW -#ifdef RGBLIGHT_ENABLE -#define HSV_CAPS 55, 255, 255 -#define HSV_ERR 0, 255, 96 -#define HSV_MAC 250, 255, 192 -#define HSV_WIN 250, 192, 128 -#define HSV_SYMBOL 235, 255, 255 -#define HSV_NAVNUM 20, 255, 255 -#define HSV_GAME 40, 255, 255 -#define HSV_FUNCT 200, 255, 255 -#define HSV_RESET 180, 255, 255 -#endif - -#endif diff --git a/users/mattly/readme.md b/users/mattly/readme.md deleted file mode 100644 index 356992534c..0000000000 --- a/users/mattly/readme.md +++ /dev/null @@ -1,10 +0,0 @@ -# mattly's layouts - -My layouts are based around: - -* making the most from small layouts on keyboards like the iris or planck -* moving held-modifiers from pinkies to thumbs or home row, giving many keys dual purposes via mod/layer taps -* easy home-row navigation on a layer, using standard keys, available to all programs, not just a specially-configured editor -* easy access to punctuation symbols used in the programming languages I work in - -[Here is an image](https://lyonheart.us/etc/mattly-keymap.png) with an outdated description of my keymap \ No newline at end of file diff --git a/users/mattly/rules.mk b/users/mattly/rules.mk deleted file mode 100644 index 96f0765825..0000000000 --- a/users/mattly/rules.mk +++ /dev/null @@ -1,4 +0,0 @@ -SRC += mattly.c -LTO_ENABLE = yes -CONSOLE_ENABLE = yes -RGB_MATRIX_ENABLE = no diff --git a/users/mechmerlin/changelog.md b/users/mechmerlin/changelog.md deleted file mode 100644 index aea46beee6..0000000000 --- a/users/mechmerlin/changelog.md +++ /dev/null @@ -1,44 +0,0 @@ -# Changelog -All notable changes to my userspace will be documented in this file. - -## [0.4.1] - 2021-10-30 - -### Added -- `RGB_DISABLE_WHEN_USB_SUSPENDED` added in `config.h`. Couple of my boards now have per key RGB and have been staying on when my computer sleeps. -## [0.4.0] - 2021-10-05 - -### Added -- Introduced new keycode KV_VER to output the version of QMK. Thanks to drashna for this. - -### Changed -- Updated keymaps to use underscores instead of KC_TRNS as it was getting hard to read for my tired eyes. -- Updated readmes on my preferred layouts. - -## [0.3.0] - 2020-02-02 -### Changed -- Added the `_CL` layer to all the boards for access to `EE_CLR` and `RESET` keycodes. This was done primarily to avoid triggering `RESET` accidentally. -- Added a placeholder text macro under the custom keycode `KC_MAC`. Currently set to "meow", but will change as needed in the future. - -## [0.2.2] - 2019-04-22 -### Fixed -- `config.h` usage of turning on `RGBLIGHT_ENABLE` when it is not enabled on boards other than my two clueboards were causing issues with boards that didn't have RGB underglow on it. - -## [0.2.1] - 2019-03-01 -### Fixed -- `config.h` usage of `#ifdef RGBLIGHT_ENABLE` caused problems for other of my boards that had `RGBLIGHT_ENABLE`. - -## [0.2.0] - 2019-02-27 -### Changed -- Moved `AUDIO_CLICKY` from community layout `66_ansi` into user space. - -## [0.1.1] - 2018-10-26 -### Added -- Added a changelog, aka THIS VERY FILE! -- Added `config.h` to userspace for `RGBLIGHT_SLEEP` feature. - -### Changed -- Spruced up the readme file to better explain the things I use in my keymap for would be keymap snoopers. Also useful as an example when people ask. -- Use `CTL_T` instead of `MT` for my custom `KC_CTCP` keycode as it was causing issues on some boards. - -## [0.1.0] - 2018-08-31 -Initial usage of userspaces! diff --git a/users/mechmerlin/config.h b/users/mechmerlin/config.h deleted file mode 100644 index e5f0f397d4..0000000000 --- a/users/mechmerlin/config.h +++ /dev/null @@ -1,44 +0,0 @@ -#pragma once - -#define TAP_CODE_DELAY 10 - -#ifdef RGBLIGHT_ENABLE - #define RGBLIGHT_SLEEP -#define RGBLIGHT_EFFECT_BREATHING -#define RGBLIGHT_EFFECT_RAINBOW_MOOD -#define RGBLIGHT_EFFECT_RAINBOW_SWIRL -#define RGBLIGHT_EFFECT_SNAKE -#define RGBLIGHT_EFFECT_KNIGHT -#define RGBLIGHT_EFFECT_CHRISTMAS -#define RGBLIGHT_EFFECT_STATIC_GRADIENT -#define RGBLIGHT_EFFECT_RGB_TEST -#define RGBLIGHT_EFFECT_ALTERNATING -#define RGBLIGHT_EFFECT_TWINKLE -#endif // RGBLIGHT_ENABLE - -#ifdef RGB_MATRIX_ENABLE - #define RGB_DISABLE_WHEN_USB_SUSPENDED -#endif - -#ifdef AUDIO_CLICKY - #define AUDIO_CLICKY_ON - #define AUDIO_CLICKY_FREQ_DEFAULT 261.63f - #define AUDIO_CLICKY_FREQ_MIN 65.41f - #define AUDIO_CLICKY_FREQ_MAX 1046.5f - #define AUDIO_CLICKY_FREQ_FACTOR 1.61803f // golden ratio - #define AUDIO_CLICKY_FREQ_RANDOMNESS 17.0f -#endif - -// Enable features depending on keyboard -#if defined(KEYBOARD_clueboard_66_hotswap_prototype) - #ifndef RGBLIGHT_ENABLE - #define RGBLIGHT_ENABLE - #endif - #ifndef AUDIO_CLICKY - #define AUDIO_CLICKY - #endif -#elif defined(KEYBOARD_clueboard_66_hotswap_gen1) || defined(KEYBOARD_clueboard_66_rev4) - #ifndef AUDIO_CLICKY - #define AUDIO_CLICKY - #endif -#endif diff --git a/users/mechmerlin/mechmerlin.c b/users/mechmerlin/mechmerlin.c deleted file mode 100644 index 5c8ecb9007..0000000000 --- a/users/mechmerlin/mechmerlin.c +++ /dev/null @@ -1,27 +0,0 @@ -#include "mechmerlin.h" -#include "version.h" - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - static uint16_t fnx_layer_timer; - - switch (keycode){ - case KC_FNX: - if(record->event.pressed){ - fnx_layer_timer = timer_read(); - layer_on(_FL); - } else { - layer_off(_FL); - if (timer_elapsed(fnx_layer_timer) < 150) { - layer_invert(_AL); - } - } - break; - case KC_VER: - if (record->event.pressed) { - send_string_with_delay_P(PSTR(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE), TAP_CODE_DELAY); - } else { - } - break; - } - return true; -} diff --git a/users/mechmerlin/mechmerlin.h b/users/mechmerlin/mechmerlin.h deleted file mode 100644 index 79386e7663..0000000000 --- a/users/mechmerlin/mechmerlin.h +++ /dev/null @@ -1,19 +0,0 @@ -#pragma once - -#include "quantum.h" - -enum userspace_layers { - _BL = 0, // Base Layer - _FL, // Function Layer - _AL, // Arrow Layer - _CL // Control Layer -}; - -// Enum of custom keycodes defined in process_record_user -enum keycodes { - KC_FNX, // Hold for FN layer, tap to toggle ARROWS layer. - KC_VER, // Version macro. -}; - -// Custom #defined keycodes -#define KC_CTCP CTL_T(KC_CAPS) diff --git a/users/mechmerlin/readme.md b/users/mechmerlin/readme.md deleted file mode 100644 index 7aa606dba8..0000000000 --- a/users/mechmerlin/readme.md +++ /dev/null @@ -1,57 +0,0 @@ -# MechMerlin's Userspace v0.4.0 - -This is a collection of my most commonly used QMK features. - -A majority of my keyboards are smaller than 75%, ANSI, and staggered. - -## Layers ----- - -### _BL (Base Layer) -Typical standard QWERTY keymap. - -### _FL (Function Layer) -This layer is commonly accessed via `MO(_FL)` on the base layer. It consists of your typical function key F1 through F12 and some RGB and Backlight controls. - -### _AL (Arrow Layer) -This layer is only present on my 60% boards. I habitually use the bottom right modifiers as arrows. - -### _CL (Control Layer) -This layer is used for the `RESET` and `EE_CLR` keycodes. - -## Custom Keycodes ----- - -### KC_FNX (Fn Extended) - -`KC_FNX` functions as a hold for `MO(X)` and tap for `TG(Y)`. Layer X and Y are different layers. - -It is used primarily on my `LAYOUT_60_ansi` boards as my regular toggle (the 1u key to the right of right shift), is not present there. - -### KC_CTCP (Control Caps) - -This is just a wrapper for `CTL_T(KC_CAPS)`. This is a hold for control and tap for caps lock. - -### KC_VER - -Output the version of QMK Firmware on device. - -## QMK Features ----- - -### RGBLIGHT_SLEEP and RGB_DISABLE_WHEN_USB_SUSPENDED - -Ensures that when my computer is in sleep mode, the keyboard underglow and inswitch RGB lights will also be off. - -### Audio Clicky - -If a board has a speaker, enable beeps and boops per switch actuation. This is currently only available on prototype/gen1 clueboard 66_hotswaps. - -### Velocikey - -[Velocikey](https://github.com/qmk/qmk_firmware/blob/master/docs/feature_velocikey.md) is an RGBLIGHT feature in which the faster you type, the faster the ARE GEE BEES. - -### Macros - -Basic text macro implemented for future use - diff --git a/users/mechmerlin/rules.mk b/users/mechmerlin/rules.mk deleted file mode 100644 index 043c70fb4d..0000000000 --- a/users/mechmerlin/rules.mk +++ /dev/null @@ -1,2 +0,0 @@ -SRC += mechmerlin.c -LTO_ENABLE = yes diff --git a/users/mguterl/config.h b/users/mguterl/config.h deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/users/mguterl/mguterl.c b/users/mguterl/mguterl.c deleted file mode 100644 index 479c8d15d0..0000000000 --- a/users/mguterl/mguterl.c +++ /dev/null @@ -1 +0,0 @@ -#include "mguterl.h" diff --git a/users/mguterl/mguterl.h b/users/mguterl/mguterl.h deleted file mode 100644 index 0b2f3938b9..0000000000 --- a/users/mguterl/mguterl.h +++ /dev/null @@ -1,67 +0,0 @@ -#pragma once -#include "quantum.h" - -#define LOWER MO(_LOWER) -#define RAISE MO(_RAISE) - -/* Tap for Tab, hold for Hyper (Super+Ctrl+Shift+Alt) */ -#define HPR_TAB ALL_T(KC_TAB) - -/* Shift when held, Enter when tapped */ -#define SFT_ENT MT(MOD_RSFT, KC_ENT) - -/* Activate util layer while holding space */ -#define SPC_UTL LT(_UTIL, KC_SPC) - -/* Control when held, Escape when tapped */ -#define ESC_CTL MT(MOD_LCTL, KC_ESC) - -/* Toggle gaming layer */ -#define TG_GAME TG(_GAMING) - -/* - * Make it easy to navigate back and forward in Chrome. - */ -#define GO_BACK LGUI(KC_LBRC) -#define GO_FWD LGUI(KC_RBRC) - -/* - * When using a 40% layout, these keycodes make it easy to change tabs in apps - * like Chrome and VSCode. - */ -#define GUI_1 LGUI(KC_1) -#define GUI_2 LGUI(KC_2) -#define GUI_3 LGUI(KC_3) -#define GUI_4 LGUI(KC_4) -#define GUI_5 LGUI(KC_5) -#define GUI_6 LGUI(KC_6) -#define GUI_7 LGUI(KC_7) -#define GUI_8 LGUI(KC_8) -#define GUI_9 LGUI(KC_9) -#define GUI_0 LGUI(KC_0) - -/* - * Common layers and keycodes that are shared between Planck and Preonic - */ -enum ortho_layers { - _QWERTY, - _GAMING, - _UTIL, - _COLEMAK, - _DVORAK, - _LOWER, - _RAISE, - _PLOVER, - _ADJUST -}; - -enum ortho_keycodes { - QWERTY = SAFE_RANGE, - GAMING, - UTIL, - COLEMAK, - DVORAK, - PLOVER, - BACKLIT, - EXT_PLV -}; diff --git a/users/mguterl/readme.md b/users/mguterl/readme.md deleted file mode 100644 index 9dc1a7ebbd..0000000000 --- a/users/mguterl/readme.md +++ /dev/null @@ -1,14 +0,0 @@ -Copyright 2019 Michael Guterl michael@diminishing.org @mguterl - -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 . diff --git a/users/mguterl/rules.mk b/users/mguterl/rules.mk deleted file mode 100644 index 4ed89c987d..0000000000 --- a/users/mguterl/rules.mk +++ /dev/null @@ -1 +0,0 @@ -SRC += mguterl.c diff --git a/users/miketronic/config.h b/users/miketronic/config.h deleted file mode 100644 index 4123caa5bc..0000000000 --- a/users/miketronic/config.h +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2023 @miketronic -- Mike B -// SPDX-License-Identifier: GPL-2.0+ - -#pragma once - -#define DEBOUNCE 10 -#if defined(TAP_DANCE_ENABLE) -# define TAP_CODE_DELAY 5 -# define TAP_HOLD_CAPS_DELAY 25 -#endif -#define MACRO_TIMER 5 -#define ENABLE_COMPILE_KEYCODE \ No newline at end of file diff --git a/users/miketronic/miketronic.c b/users/miketronic/miketronic.c deleted file mode 100644 index 3c47a72462..0000000000 --- a/users/miketronic/miketronic.c +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2023 @miketronic -- Mike B -// SPDX-License-Identifier: GPL-2.0+ - -#include "miketronic.h" - - -__attribute__ ((weak)) void keyboard_post_init_keymap(void) { } - -// Init effect for RGB boards only -void keyboard_post_init_user(void) { -#ifdef RGB_MATRIX_ENABLE - rgblight_enable_noeeprom(); // enables Rgb, without saving settings - rgblight_sethsv_noeeprom(HSV_ORANGE); // sets the color without saving - rgb_matrix_mode_noeeprom(RGB_MATRIX_SOLID_COLOR); -#endif - keyboard_post_init_keymap(); -} \ No newline at end of file diff --git a/users/miketronic/miketronic.h b/users/miketronic/miketronic.h deleted file mode 100644 index 4032215a1d..0000000000 --- a/users/miketronic/miketronic.h +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright 2023 @miketronic -- Mike B -// SPDX-License-Identifier: GPL-2.0+ - -#pragma once -#include QMK_KEYBOARD_H - -#include "quantum.h" -#include "wrappers.h" -#include "action.h" -#include "version.h" -#include "process_records.h" -#ifdef TAP_DANCE_ENABLE -# include "tapdances.h" -#endif - -enum layer_names { - _WM, - _QW, - _LOWER, - _RAISE, - _EX, - _FN, - _SYMB -}; - - -// Layer macros -#define LOWER MO(_LOWER) -#define RAISE MO(_RAISE) -#define FN MO(_FN) -#define EX MO(_EX) -#define TEX LT(_EX, KC_T) // Tap for "T", hold for Extras layer -#define BSYM LT(_SYMB, KC_B) // Tap for "B", hold for Symbols layer -#define JSYM LT(_SYMB, KC_J) // Tap for "J", hold for Symbols layer -#define FNZ LT(_FN, KC_Z) // Tap for "Z", hold for FN layer -#define VLOWER LT(_LOWER, KC_V) // Tap for "V", hold for Lower layer -#define KRAISE LT(_RAISE, KC_K) // Tap for "K", hold for Raise layer - -// Mod Tap -//#define ASFT MT(MOD_LSFT, KC_A) // Tap for "A", hold for Shift -#define ASFT SFT_T(KC_A) // Tap for "A", hold for Shift -#define GGUI MT(MOD_LGUI, KC_G) // Tap for "G", hold for OS Key -#define MGUI MT(MOD_LGUI, KC_M) // Tap for "M", hold for OS Key -#define CTRLX MT(MOD_LCTL, KC_X) // Tap for "X", hold for Ctrl -#define CALT MT(MOD_LALT, KC_C) // Tap for "C", hold for Alt -#define L_ALT MT(MOD_RALT, KC_L) // Tap for "L", hold for Alt -#define TBSHFT MT(MOD_LSFT, KC_TAB) // Tap for Tab, hold for Shift -#define SLSHFT MT(MOD_RSFT, KC_SLSH) // Tap for Slash, hold for Shift -#define SFT_ENT RSFT_T(KC_ENT) // Tap for Enter, hold for Shift -#define OSSFT OSM(MOD_LSFT) // One shot left Shift - -// MISC -#define CALTDEL LCTL(LALT(KC_DEL)) // Ctrl Alt Del -#define TSKMGR LCTL(LSFT(KC_ESC)) // Task Manager -#define CLIP LCTL(LALT(KC_Q)) // Clipboard (Ditto) -#define SS LCTL(LALT(KC_G)) // Greenshot region -#define NUM LSFT(KC_3) -#define AT LSFT(KC_2) -#define COPY LCTL(KC_C) -#define PASTE LCTL(KC_V) -#define ____ KC_TRNS -#define XXXX KC_NO -#define XXXXXXX KC_NO diff --git a/users/miketronic/process_records.c b/users/miketronic/process_records.c deleted file mode 100644 index 5c60ddf100..0000000000 --- a/users/miketronic/process_records.c +++ /dev/null @@ -1,151 +0,0 @@ -// Copyright 2023 @miketronic -- Mike B -// SPDX-License-Identifier: GPL-2.0+ - -#include "miketronic.h" -#include "process_records.h" - -__attribute__((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { - return true; -} - -__attribute__((weak)) bool process_record_secrets(uint16_t keycode, keyrecord_t *record) { - return true; -} - - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - - switch (keycode) { - case VERSION: - if (!record->event.pressed) { - send_string_with_delay_P(PSTR(QMK_KEYBOARD ":" QMK_KEYMAP "\nVersion:" QMK_VERSION ", built: " QMK_BUILDDATE "\n"), MACRO_TIMER); - } - break; - - case M01: - if (record->event.pressed) { - SEND_STRING("//a11"); - } - break; - - case M02: - if (record->event.pressed) { - SEND_STRING("//a12"); - } - break; - - case M03: - if (record->event.pressed) { - SEND_STRING("//a08"); - } - break; - - case M04: - if (record->event.pressed) { - SEND_STRING("//a09"); - } - break; - - case M05: - if (record->event.pressed) { - SEND_STRING("//th"); - } - break; - - case M06: - if (record->event.pressed) { - SEND_STRING("//re"); - } - break; - - case M07: - if (record->event.pressed) { - SEND_STRING("//yw"); - } - break; - - case M08: - if (record->event.pressed) { - tap_random_base64(); - } - break; - - case CCCV: // One key copy/paste - if (record->event.pressed) { - copy_paste_timer = timer_read(); - } else { - if (timer_elapsed(copy_paste_timer) > TAPPING_TERM) { // Hold, copy - tap_code16(LCTL(KC_C)); - } else { // Tap, paste - tap_code16(LCTL(KC_V)); - } - } - break; - - case IENTER: // Tap for letter "i", slight hold for "enter" - if (record->event.pressed) { - copy_paste_timer = timer_read(); - } else { - if (timer_elapsed(copy_paste_timer) > TAPPING_TERM) { // Hold, enter - tap_code16(KC_ENT); - } else { // Tap, "i" - tap_code16(KC_I); - } - } - break; - - case PRN: - if (record->event.pressed) { - SEND_STRING("()"); - tap_code(KC_LEFT); - } - break; - - case BRACES: - if (record->event.pressed) { - uint8_t shifted = get_mods() & (MOD_MASK_SHIFT); - if (shifted) { - unregister_code(KC_LSFT); - unregister_code(KC_RSFT); - SEND_STRING("<>"SS_TAP(X_LEFT)); - } - else { - SEND_STRING("[]"SS_TAP(X_LEFT)); - } - } - break; - -#if defined(RGBLIGHT_ENABLE) - case RGB1: - if (record->event.pressed) { - rgblight_sethsv_noeeprom(HSV_BLUE); - } - break; - - case RGB2: - if (record->event.pressed) { - rgblight_sethsv_noeeprom(HSV_RED); - } - break; - - case RGB3: - if (record->event.pressed) { - rgblight_sethsv_noeeprom(HSV_ORANGE); - } - break; - - case RGB4: - if (record->event.pressed) { - rgblight_sethsv_noeeprom(HSV_WHITE); - } - break; - - case RGB5: - if (record->event.pressed) { - rgblight_sethsv_noeeprom(HSV_GREEN); - } - break; -#endif - } - return process_record_keymap(keycode, record) && process_record_secrets(keycode, record); -} diff --git a/users/miketronic/process_records.h b/users/miketronic/process_records.h deleted file mode 100644 index 17737490a1..0000000000 --- a/users/miketronic/process_records.h +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2023 @miketronic -- Mike B -// SPDX-License-Identifier: GPL-2.0+ - -#pragma once -#include "miketronic.h" - - -bool process_record_secrets(uint16_t keycode, keyrecord_t *record); -bool process_record_keymap(uint16_t keycode, keyrecord_t *record); -uint16_t copy_paste_timer; - -enum custom_keycodes { - WM = QK_USER, - QW, - MAKE, - VERSION, - M01, - M02, - M03, - M04, - M05, - M06, - M07, - M08, - M09, - M10, - M11, - M12, - RGB1, - RGB2, - RGB3, - RGB4, - RGB5, - IENTER, - PRN, - BRACES, - CCCV -}; diff --git a/users/miketronic/readme.md b/users/miketronic/readme.md deleted file mode 100644 index 619a84ec2e..0000000000 --- a/users/miketronic/readme.md +++ /dev/null @@ -1,25 +0,0 @@ -Copyright 2023 @miketronic -- Mike B -SPDX-License-Identifier: GPL-2.0+ - -# Layout for ortho 4x12 and 3x10 boards -# My current daily drivers: Planck, Pi40 and Satpad - -**Objective:** I tried to make layouts with core functions that are able to be present on the 3x10 boards and adapt those to the "middle 3x10" of the 4x12 boards to make going back and forth between the two board sizes easier. - - -##### My Main Layer - Workman - -| | | | | | | | | | | | | -| ---- |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| ----:| -| Tab/Esc | Q/Esc | D | R | W | B/SYM | J/SYM | F | U | P | BSPC | BSPC | -| Tab/Shift | A | S | H | T/EX | G | Y | N | E | O | I/Enter | Enter| -| Shft | Z | X | M | C | V | K | L | Spc/, | Spc/. | / | Up/Right | -| FN | Ctrl | OS | Alt |Lower | Spc/Enter |Spc/Enter |Raise | SS| Clip | CopyPaste | Dn/Left | - -SYM - Symbols layer on hold -FN - Function layer on hold -EX - Extras layer on hold -Clip - Macro to my clipboard app (Ditto) -SS - Greenshot screenshot region - -##### Will add the other layers as I find time \ No newline at end of file diff --git a/users/miketronic/rules.mk b/users/miketronic/rules.mk deleted file mode 100644 index bbd3e4131e..0000000000 --- a/users/miketronic/rules.mk +++ /dev/null @@ -1,4 +0,0 @@ -SRC += miketronic.c process_records.c -ifeq ($(strip $(TAP_DANCE_ENABLE)), yes) - SRC += $(USER_PATH)/tapdances.c -endif diff --git a/users/miketronic/tapdances.c b/users/miketronic/tapdances.c deleted file mode 100644 index 5fcf66062b..0000000000 --- a/users/miketronic/tapdances.c +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2023 @miketronic -- Mike B -// SPDX-License-Identifier: GPL-2.0+ - -#include "miketronic.h" -#include "tapdances.h" - - -tap_dance_action_t tap_dance_actions[] = { - - [T_BRC] = ACTION_TAP_DANCE_DOUBLE(KC_LBRC, KC_RBRC), // Tap once for Left Brace, twice for Right Brace - [T_MIN] = ACTION_TAP_DANCE_DOUBLE(KC_MINUS, KC_EQUAL), // Minus, Equals - [T_UMIN] = ACTION_TAP_DANCE_DOUBLE(KC_UNDS, KC_MINS), // Underscore, Minus - [T_GESC] = ACTION_TAP_DANCE_DOUBLE(KC_GRAVE, KC_ESCAPE), // Grave, Escape - [T_SE] = ACTION_TAP_DANCE_DOUBLE(KC_SPC, KC_ENT), // Space, Enter - [T_MULTDIV] = ACTION_TAP_DANCE_DOUBLE(KC_PAST, KC_PSLS), // Multiply, Divide - [T_UR] = ACTION_TAP_DANCE_DOUBLE(KC_UP, KC_RGHT), // Up, Right - [T_DL] = ACTION_TAP_DANCE_DOUBLE(KC_DOWN, KC_LEFT), // Down, Left - [T_CP] = ACTION_TAP_DANCE_DOUBLE(LCTL(KC_C), LCTL(KC_V)), // Copy, Paste - [T_DENT] = ACTION_TAP_DANCE_DOUBLE(KC_DOT, KC_ENT), // Dot, Enter - [T_IENT] = ACTION_TAP_DANCE_DOUBLE(KC_I, KC_ENT), // "I", Enter - [T_CSPC] = ACTION_TAP_DANCE_DOUBLE(KC_SPC, KC_COMM), // Space, Comma - [T_DSPC] = ACTION_TAP_DANCE_DOUBLE(KC_SPC, KC_DOT), // Space, Dot - [T_QEXC] = ACTION_TAP_DANCE_DOUBLE(KC_QUES, KC_EXLM), // "?", "!" - [T_QESC] = ACTION_TAP_DANCE_DOUBLE(KC_Q, KC_ESC), // "q", Escape - [T_TE] = ACTION_TAP_DANCE_DOUBLE(KC_TAB, KC_ESC), // Tab, Escape - [T_20] = ACTION_TAP_DANCE_DOUBLE(KC_2, KC_0), // "2", "0" - [T_SL] = ACTION_TAP_DANCE_DOUBLE(KC_SLSH, KC_BSLS), // Slash, Backslash - [T_XX] = ACTION_TAP_DANCE_DOUBLE(KC_LPRN, KC_RPRN), // Left Paren, Right Paren - [T_YY] = ACTION_TAP_DANCE_DOUBLE(KC_LBRC, KC_RBRC), // Left Bracket, Right Bracket - [T_ATH] = ACTION_TAP_DANCE_DOUBLE(KC_AT, KC_HASH), // "@", "#" - [T_PRAM] = ACTION_TAP_DANCE_DOUBLE(KC_PERC, KC_AMPR) // "%", "&" -}; - diff --git a/users/miketronic/tapdances.h b/users/miketronic/tapdances.h deleted file mode 100644 index 8135bac269..0000000000 --- a/users/miketronic/tapdances.h +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2023 @miketronic -- Mike B -// SPDX-License-Identifier: GPL-2.0+ - -#pragma once -#include "quantum.h" - - -#define TD_BRC TD(T_BRC) -#define TD_ATH TD(T_ATH) -#define TD_CSPC TD(T_CSPC) -#define TD_DSPC TD(T_DSPC) -#define TD_CP TD(T_CP) -#define TD_DENT TD(T_DENT) -#define TD_IENT TD(T_IENT) -#define TD_MIN TD(T_MIN) -#define TD_UMIN TD(T_UMIN) -#define TD_GESC TD(T_GESC) -#define TD_QESC TD(T_QESC) -#define TD_QEXC TD(T_QEXC) -#define TD_PRAM TD(T_PRAM) -#define TD_SE TD(T_SE) -#define TD_MD TD(T_MULTDIV) -#define TD_UR TD(T_UR) -#define TD_DL TD(T_DL) -#define TD_TE TD(T_TE) -#define TD_20 TD(T_20) -#define TD_SL TD(T_SL) -#define TD_XX TD(T_XX) -#define TD_YY TD(T_YY) - - - -// Tap Dance -enum tapdance_id{ - T_BRC = 0, - T_ATH, - T_CSPC, - T_DSPC, - T_CP, - T_DENT, - T_IENT, - T_MIN, - T_UMIN, - T_GESC, - T_QESC, - T_QEXC, - T_SE, - T_MULTDIV, - T_UR, - T_DL, - T_TE, - T_20, - T_SL, - T_XX, - T_YY, - T_PRAM -}; \ No newline at end of file diff --git a/users/miketronic/wrappers.h b/users/miketronic/wrappers.h deleted file mode 100644 index 7d955f4172..0000000000 --- a/users/miketronic/wrappers.h +++ /dev/null @@ -1,226 +0,0 @@ -// Copyright 2023 @miketronic -- Mike B -// SPDX-License-Identifier: GPL-2.0+ - -#pragma once -#include "miketronic.h" - -/* Pattern adapted from users/drashna/wrapper.h - Define per-layout keymap sections. Also requires a wrapper. - Example: - #define LAYOUT_:name_wrapper(...) LAYOUT_:name(__VA_ARGS__) - const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_MODS] = LAYOUT_:name _wrapper( - _______, ___________________BLANK___________________, ... - ... - ), - } -*/ - - -// clang-format off -# define LAYOUT_ortho_4x12_wrapper(...) LAYOUT_ortho_4x12(__VA_ARGS__) -# define LAYOUT_planck_grid_wrapper(...) LAYOUT_planck_grid(__VA_ARGS__) -#if (defined(KEYBOARD_hazel_satpad)) -# define LAYOUT_3x11_wrapper(...) LAYOUT(__VA_ARGS__) -#endif -#if (defined(KEYBOARD_mechwild_bde_rev2)) -# define LAYOUT_3x14_wrapper(...) LAYOUT(__VA_ARGS__) -#endif -#if (defined(KEYBOARD_hazel_bad_wings)) -# define LAYOUT_split_3x5_3_wrapper(...) LAYOUT_split_3x5_3(__VA_ARGS__) -#endif -#if (defined(KEYBOARD_idobao_id75_v1)) -# define LAYOUT_ortho_5x15_wrapper(...) LAYOUT_ortho_5x15(__VA_ARGS__) -#endif - - -#define _________NUMBER_01__________ KC_7, KC_8, KC_9 -#define _________NUMBER_02__________ KC_4, KC_5, KC_6 -#define _________NUMBER_03__________ KC_1, TD_20, KC_3 - - - -#define _________________QWERTY_L1_________________ KC_Q, KC_W, KC_E, KC_R, KC_T -#define _________________QWERTY_L2_________________ KC_A, KC_S, KC_D, KC_F, KC_G -#define _________________QWERTY_L3_________________ FNZ, KC_X, KC_C, VLOWER, KC_B - -#define _________________QWERTY_R1_________________ KC_Y, KC_U, KC_I, KC_O, KC_P -#define _________________QWERTY_R2_________________ KC_H, KC_J, KRAISE, KC_L, KC_SCLN -#define _________________QWERTY_R3_________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLASH - - - -#define ________________NUMBER_LEFT________________ KC_1, KC_2, KC_3, KC_4, KC_5 -#define ________________NUMBER_RIGHT_______________ KC_6, KC_7, KC_8, KC_9, KC_0 -#define _________________FUNC_LEFT_________________ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5 -#define _________________FUNC_RIGHT________________ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10 - -#define ______________LONG_FUNC_LEFT_______________ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6 -#define ______________LONG_FUNC_RIGHT______________ KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12 - -#define _________________BLANK_5___________________ _______, _______, _______, _______, _______ -#define _________________BLANK_6___________________ _______, _______, _______, _______, _______, _______ - -#define _________________LOWER_L1__________________ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC -#define _________________LOWER_L2__________________ _________________FUNC_LEFT_________________ -#define _________________LOWER_L3__________________ _________________FUNC_RIGHT________________ - -#define _________________LOWER_R1__________________ KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN -#define _________________LOWER_R2__________________ _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR -#define _________________LOWER_R3__________________ _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT - -#define _______________LOWER_310_L1________________ PRN, BRACES, TD_SL, _______, _______ -#define _______________LOWER_310_L2________________ TD_ATH, TD_PRAM, _______, _______, _______ -#define _______________LOWER_310_L3________________ _______, _______, _______, _______, _______ - -#define _______________LOWER_310_R1________________ _______, KC_7, KC_8, KC_9, _______ -#define _______________LOWER_310_R2________________ TD_DENT, KC_4, KC_5, KC_6, TD_UR -#define _______________LOWER_310_R3________________ KC_0, KC_1, TD_20, KC_3, TD_DL - -#define _______________LOWER_412_L1________________ _______, PRN, BRACES, TD_SL, _______, _______ -#define _______________LOWER_412_L2________________ _______, TD_ATH, TD_PRAM, _______, _______, _______ -#define _______________LOWER_412_L3________________ _______, _______, _______, _______, _______, _______ -#define _______________LOWER_412_L4________________ _______, _______, _______, _______, _______, _______ - -#define _______________LOWER_412_R1________________ _______, KC_7, KC_8, KC_9, _______, _______ -#define _______________LOWER_412_R2________________ TD_DENT, KC_4, KC_5, KC_6, _______, _______ -#define _______________LOWER_412_R3________________ KC_0, KC_1, TD_20, KC_3, _______, TD_UR -#define _______________LOWER_412_R4________________ _______, _______, KC_BSPC, KC_SPC, TD_DENT, TD_DL - - - -#define _________________RAISE_L1__________________ ________________NUMBER_LEFT________________ -#define _________________RAISE_L2__________________ ___________________BLANK___________________ -#define _________________RAISE_L3__________________ ___________________BLANK___________________ - -#define _________________RAISE_R1__________________ ________________NUMBER_RIGHT_______________ -#define _________________RAISE_R2__________________ _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC -#define _________________RAISE_R3__________________ _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END - -#define _______________RAISE_310_L1________________ QK_BOOT, DB_TOGG, _______, _______, QK_MAKE -#define _______________RAISE_310_L2________________ KC_LSFT, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD -#define _______________RAISE_310_L3________________ _______, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD - -#define _______________RAISE_310_R1________________ _______, KC_F7, KC_F8, KC_F9, KC_F10 -#define _______________RAISE_310_R2________________ TD_UMIN, KC_F4, KC_F5, KC_F6, KC_F11 -#define _______________RAISE_310_R3________________ _______, KC_F1, KC_F2, KC_F3, KC_F12 - -#define _______________RAISE_412_L1________________ QK_BOOT, DB_TOGG, _______, _______, _______, QK_MAKE -#define _______________RAISE_412_L2________________ KC_LSFT, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, WM -#define _______________RAISE_412_L3________________ _______, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, QW - -#define _______________RAISE_412_R1________________ _______, _______, KC_F7, KC_F8, KC_F9, KC_F10 -#define _______________RAISE_412_R2________________ _______, _______, KC_F4, KC_F5, KC_F6, KC_F11 -#define _______________RAISE_412_R3________________ _______, TD_UMIN, KC_F1, KC_F2, KC_F3, KC_F12 - - - -#define ______________EXTRAS_310_L1________________ KC_EXLM, _______, _______, _______, _______ -#define ______________EXTRAS_310_L2________________ KC_LSFT, _______, _______, _______, _______ -#define ______________EXTRAS_310_L3________________ _______, _______, _______, _______, _______ - -#define ______________EXTRAS_310_R1________________ _______, TD_SL, PRN, BRACES, KC_SCLN -#define ______________EXTRAS_310_R2________________ QK_LEAD, TD_ATH, TD_PRAM, _______, KC_QUOT -#define ______________EXTRAS_310_R3________________ _______, _______, KC_COMM, KC_DOT, KC_QUES - -#define ______________EXTRAS_412_L1________________ _______, KC_EXLM, _______, _______, _______, _______ -#define ______________EXTRAS_412_L2________________ KC_LSFT, _______, _______, _______, _______, _______ -#define ______________EXTRAS_412_L3________________ _______, _______, _______, _______, _______, _______ -#define ______________EXTRAS_412_L4________________ _______, _______, _______, _______, _______, TD_SE - -#define ______________EXTRAS_412_R1________________ _______, TD_SL, PRN, BRACES, KC_SCLN, _______ -#define ______________EXTRAS_412_R2________________ QK_LEAD, TD_ATH, TD_PRAM, _______, KC_QUOT, _______ -#define ______________EXTRAS_412_R3________________ _______, _______, KC_COMM, KC_DOT, KC_QUES, _______ -#define ______________EXTRAS_412_R4________________ TD_SE, _______, _______, _______, _______, _______ - - - -#define _____________FUNCTION_310_L1_______________ CCCV, CLIP, SS, _______, _______ -#define _____________FUNCTION_310_L2_______________ TBSHFT, M05, M06, M07, M08 -#define _____________FUNCTION_310_L3_______________ _______, M01, M02, M03, M04 - -#define _____________FUNCTION_310_R1_______________ _______, TD_SL, KC_UP, _______, KC_DEL -#define _____________FUNCTION_310_R2_______________ _______, KC_LEFT, KC_DOWN, KC_RGHT, TD_UR -#define _____________FUNCTION_310_R3_______________ _______, _______, KC_COMM, KC_DOT, TD_DL - -#define _____________FUNCTION_412_L1_______________ CCCV, CLIP, SS, _______, _______, _______ -#define _____________FUNCTION_412_L2_______________ TBSHFT, M05, M06, M07, M08, _______ -#define _____________FUNCTION_412_L3_______________ _______, M01, M02, M03, M04, _______ -#define _____________FUNCTION_412_L4_______________ _______, RGB1, RGB2, RGB3, RGB4, _______ - -#define _____________FUNCTION_412_R1_______________ _______, T_SL, KC_UP, _______, _______, KC_DEL -#define _____________FUNCTION_412_R2_______________ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______ -#define _____________FUNCTION_412_R3_______________ _______, _______, KC_COMM, KC_DOT, KC_QUES, T_UR -#define _____________FUNCTION_412_R4_______________ _______, _______, _______, _______, _______, T_DL - -#define ____________FUNCTION_ID75_TOP_R____________ M06, M07, M08, M09, M10, KC_DEL - - - -#define _____________SYMBOLS_310_L1________________ KC_DLR, KC_CIRC, KC_LABK, KC_RABK, ____ -#define _____________SYMBOLS_310_L2________________ KC_PERC, KC_COLN, KC_SCLN, KC_PLUS, KC_EQL -#define _____________SYMBOLS_310_L3________________ KC_AMPR, KC_QUOT, KC_DQUO, KC_ASTR, KC_HASH - -#define _____________SYMBOLS_310_R1________________ ____, KC_PIPE, KC_LBRC, KC_RBRC, KC_MINS -#define _____________SYMBOLS_310_R2________________ XXXX, XXXX, KC_LPRN, KC_RPRN, KC_UNDS -#define _____________SYMBOLS_310_R3________________ KC_EXLM, KC_QUES, KC_SLSH, KC_BSLS, KC_AT - - - -#define _________________ADJUST_L1_________________ RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG -#define _________________ADJUST_L2_________________ MU_TOGG, CK_TOGG, AU_ON, AU_OFF, AG_NORM -#define _________________ADJUST_L3_________________ RGB_RMOD,RGB_HUD,RGB_SAD, RGB_VAD, KC_RGB_T - -#define _________________ADJUST_R1_________________ KC_SEC1, KC_SEC2, KC_SEC3, KC_SEC4, KC_SEC5 -#define _________________ADJUST_R2_________________ AG_SWAP, QWERTY, COLEMAK, DVORAK, WORKMAN -#define _________________ADJUST_R3_________________ MG_NKRO, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT - - -#define _________FOUR_001__________ KC_BSPC, M08, M08, KC_MUTE -#define _________FOUR_002__________ KC_ENT, M08, PRN, TD_UR -#define _________FOUR_003__________ KC_BSLS, TD_ATH, BRACES, TD_DL - -#define _________3KEY_LEFT___________ OSSFT, KC_SPC, LOWER -#define _________3KEY_RIGHT__________ RAISE, KC_ENT, CCCV - -#define ________3KEY_ID75_01_________ OSSFT, QK_LEAD, LOWER -#define ________3KEY_ID75_02_________ KC_7, KC_8, KC_9 -#define ________3KEY_ID75_03_________ KC_4, KC_5, KC_6 -#define ________3KEY_ID75_04_________ KC_1, TD_20, KC_3 -#define ________3KEY_ID75_05_________ KC_SPC, TD_DENT, KC_ENT - - -#define _____________WORKMAN_310_001_L_____________ TD_QESC, KC_D, KC_R, KC_W, BSYM -#define _____________WORKMAN_310_001_R_____________ JSYM, KC_F, KC_U, KC_P, KC_BSPC -#define _____________WORKMAN_310_002_L_____________ ASFT, KC_S, KC_H, TEX, KC_G -#define _____________WORKMAN_310_002_R_____________ KC_Y, KC_N, KC_E, KC_O, KC_I -#define _____________WORKMAN_310_003_L_____________ FNZ, CTRLX, MGUI, CALT, VLOWER -#define _____________WORKMAN_310_003_R_____________ KRAISE, KC_L, TD_CSPC, TD_DSPC, SFT_ENT -#define _____________WORKMAN_310_004_L_____________ FN, KC_LCTL, KC_LGUI, KC_LALT, LOWER -#define _____________WORKMAN_310_004_R_____________ RAISE, SS, CLIP, CCCV, FN - -#define _____________WORKMAN_410_003_L_____________ FNZ, KC_X, KC_M, KC_C, KC_V -#define _____________WORKMAN_410_003_R_____________ KC_K, KC_L, TD_CSPC, TD_DSPC, SFT_ENT - -#define _____________WORKMAN_311_001_L_____________ TD_QESC, KC_D, KC_R, KC_W, BSYM -#define _____________WORKMAN_311_001_R_____________ JSYM, KC_F, KC_U, KC_P, KC_BSPC -#define _____________WORKMAN_311_002_L_____________ ASFT, KC_S, KC_H, TEX, KC_G -#define _____________WORKMAN_311_002_R_____________ KC_Y, KC_N, KC_E, KC_O, KC_I -#define _____________WORKMAN_311_003_L_____________ FNZ, CTRLX, MGUI, CALT, VLOWER, KC_ENT -#define _____________WORKMAN_311_003_R_____________ KRAISE, KC_L, TD_CSPC, TD_DSPC, SFT_ENT - -#define _____________WORKMAN_412_001_L_____________ TD_TE, TD_QESC, KC_D, KC_R, KC_W, BSYM -#define _____________WORKMAN_412_001_R_____________ JSYM, KC_F, KC_U, KC_P, KC_BSPC, KC_BSPC -#define _____________WORKMAN_412_002_L_____________ TBSHFT, KC_A, KC_S, KC_H, TEX, KC_G -#define _____________WORKMAN_412_002_R_____________ KC_Y, KC_N, KC_E, KC_O, KC_I, KC_ENT -#define _____________WORKMAN_412_003_L_____________ KC_LSFT, KC_Z, KC_X, KC_M, KC_C, KC_V -#define _____________WORKMAN_412_003_R_____________ KC_K, KC_L, TD_CSPC, TD_DSPC, SFT_ENT, TD_UR -#define _____________WORKMAN_412_004_L_____________ FN, KC_LCTL, KC_LGUI, KC_LALT, LOWER, TD_SE -#define _____________WORKMAN_412_004_R_____________ TD_SE, RAISE, SS, CLIP, CCCV, TD_DL - -#define _____________WORKMAN_ID75_TOP_L____________ KC_ESC, M01, M02, M03, M04, M05 -#define _____________WORKMAN_ID75_TOP_R____________ M06, M07, M08, M09, M10, KC_BSPC -#define _____________WORKMAN_ID75_BOT_L____________ FN, KC_LCTL, KC_LGUI, KC_LALT, LOWER, KC_SPC -#define _____________WORKMAN_ID75_BOT_R____________ KC_ENT, RAISE, SS, CLIP, CCCV, TD_DL - -// clang-format on \ No newline at end of file diff --git a/users/miles2go/babblePaste.c b/users/miles2go/babblePaste.c deleted file mode 100644 index 65c9981186..0000000000 --- a/users/miles2go/babblePaste.c +++ /dev/null @@ -1,223 +0,0 @@ -/* A library to output the right key shortcut in any common app. -Given a global variable babble_mode to show the environment and a -key that calls the paste macro, do the right type of paste. -Setting the context is done by another macro, or TBD interaction with the host. - -Huge thanks to https://en.wikipedia.org/wiki/Table_of_keyboard_shortcuts -and https://github.com/qmk/qmk_firmware/blob/master/keyboards/planck/keymaps/jeebak/keymap.c -*/ - -#include QMK_KEYBOARD_H - -#ifdef USE_BABBLEPASTE -# include "babblePaste.h" - -// GLOBAL variable to determine mode. Sets startup default if no eeppom -uint8_t babble_mode = 0; - -// functions to tell the user that the mode has changed -__attribute__((weak)) void babble_modeswitch_user(uint8_t mode) {} -__attribute__((weak)) void babble_modeswitch_kb(uint8_t mode) { babble_modeswitch_user( mode); } - - - -void set_babble_mode(uint8_t id) { babble_mode = id; } - -void babble_mode_increment(void) { - babble_mode += 1; - if (babble_mode >= BABL_MODEMAX) { - babble_mode = 0; - } - babble_modeswitch_kb(babble_mode); -} - -void babble_mode_decrement(void) { - if (babble_mode >= 1) { - babble_mode -= 1; - } else { - babble_mode = BABL_MODEMAX - 1; - } - babble_modeswitch_kb(babble_mode); -} - -/* this function runs the appropriate babblepaste macro, given -the global babble_mode and a keycode defined in the babble_keycodes enum. - -This could be made faster by splitting into functions sorted by keycode range -But that makes for a *lot* of ifdefs. -*/ -bool babblePaste(uint16_t keycode, bool is_pressed ) { - // handle keys that have up & down behavior first, then OS/mode switching, then macros - -// This is the key used for cut & paste (Propeller on Mac, Control elsewhere) -# ifdef BABL_MODSWAP - // WARNING, this assumes you have BABL_MAC_MODE defined. - if (keycode == BABL_PRIMARY_OS_MOD ) { - if (babble_mode == BABL_MAC_MODE) { - if (is_pressed) { - register_code(KC_LGUI); - } else { - unregister_code(KC_LGUI); - } - } else { // everybody else - - if (is_pressed) { - register_code(KC_LCTL); - } else { - unregister_code(KC_LCTL); - } - } - } - -// This is the os key not used in cut & paste. (CTRL on mac, GUI elsewhere) - if (keycode == BABL_SECONDARY_OS_MOD ) { - if (babble_mode == BABL_MAC_MODE) { - if (is_pressed) { - register_code(KC_LCTL); - } else { - unregister_code(KC_LCTL); - } - - } else { // everybody else - if (is_pressed) { - register_code(KC_LGUI); - } else { - unregister_code(KC_LGUI); - } - } - } - -// This is the alt key in most OSes. Mostly useful if you want to do hyper on one OS, Meh on another. - if (keycode == BABL_TERTIARY_OS_MOD ) { - if (babble_mode == BABL_MAC_MODE) { - if (is_pressed) { - register_code(KC_LALT); - } else { - unregister_code(KC_LALT); - } - } else { // everybody else - - if (is_pressed) { - register_code(KC_LALT); - } else { - unregister_code(KC_LALT); - } - } - } - -# endif - -// below here we are only running macros - don't serve any key up events. - if (is_pressed == 0 ) { - return true; - } - -// handle increment functions. - -if (keycode == BABL_MODE_INCREMENT) { - babble_mode_increment(); - return true; -} - -if (keycode == BABL_MODE_DECREMENT) { - babble_mode_decrement(); - return true; -} - -# ifdef BABL_MAC - if (keycode == BABL_DO_MAC) { - set_babble_mode(BABL_MAC_MODE); - babble_modeswitch_kb(babble_mode); - return true; - } - - if (babble_mode == BABL_MAC_MODE) { - babblePaste_mac(keycode); - } -# endif - -# ifdef BABL_VI - if (keycode == BABL_DO_VI) { - set_babble_mode(BABL_VI_MODE); - babble_modeswitch_kb(babble_mode); - return true; - } - if (babble_mode == BABL_VI_MODE) { - babblePaste_vi(keycode); - } -# endif -# ifdef BABL_WINDOWS - if (keycode == BABL_DO_WINDOWS) { - set_babble_mode(BABL_WINDOWS_MODE); - babble_modeswitch_kb(babble_mode); - return true; - } - if (babble_mode == BABL_WINDOWS_MODE) { - babblePaste_win(keycode); - } -# endif -# ifdef BABL_LINUX - if (keycode == BABL_DO_LINUX) { - set_babble_mode(BABL_LINUX_MODE); - babble_modeswitch_kb(babble_mode); - return true; - } - if (babble_mode == BABL_LINUX_MODE) { - babblePaste_linux(keycode); - } -# endif -# ifdef BABL_EMACS - if (keycode == BABL_DO_EMACS) { - set_babble_mode(BABL_EMACS_MODE); - babble_modeswitch_kb(babble_mode); - return true; - } - if (babble_mode == BABL_EMACS_MODE) { - babblePaste_emacs(keycode); - } -# endif -# ifdef BABL_NANO - if (keycode == BABL_DO_NANO) { - set_babble_mode(BABL_NANO_MODE); - babble_modeswitch_kb(babble_mode); - return true; - } - if (babble_mode == BABL_NANO_MODE) { - babblePaste_nano(keycode); - } -# endif -# ifdef BABL_KITTY - if (keycode == BABL_DO_KITTY) { - set_babble_mode(BABL_KITTY_MODE); - babble_modeswitch_kb(babble_mode); - return true; - } - if (babble_mode == BABL_KITTY_MODE) { - babblePaste_kitty(keycode); - } -# endif -# ifdef BABL_CHROMEOS - if (keycode == BABL_DO_CHROMEOS) { - set_babble_mode(BABL_CHROMEOS_MODE); - babble_modeswitch_kb(babble_mode); - return true; - } - if (babble_mode == BABL_CHROMEOS_MODE) { - babblePaste_chromeos(keycode); - } -# endif -# ifdef BABL_READMUX - if (keycode == BABL_DO_READMUX) { - set_babble_mode(BABL_READMUX_MODE); - babble_modeswitch_kb(babble_mode); - return true; - } - if (babble_mode == BABL_READMUX_MODE) { - babblePaste_readmux(keycode); - } -# endif - - return false; -} - -#endif // USE_BABBLEPASTE diff --git a/users/miles2go/babblePaste.h b/users/miles2go/babblePaste.h deleted file mode 100644 index c3073423c2..0000000000 --- a/users/miles2go/babblePaste.h +++ /dev/null @@ -1,383 +0,0 @@ -/* A library to output the right key shortcut in any common app. -Given a global variable babble_mode to show the environment and a -key that calls the paste macro, do the right type of paste. - -Setting the bable_mode is done by another macro, or TBD interaction with the host. - -Huge thanks to https://en.wikipedia.org/wiki/Table_of_keyboard_shortcuts -and jeebak & algernon's keymap -*/ - -#pragma once -#include "quantum.h" - -#ifdef USE_BABBLEPASTE - -void set_babble_mode(uint8_t id); -void babble_mode_increment(void); -void babble_mode_decrement(void); -void babble_modeswitch_user(uint8_t mode); -void babble_modeswitch_kb(uint8_t mode); - -// manually re-order these if you want to set the order or default. -enum babble_modes { -# ifdef BABL_MAC - BABL_MAC_MODE, -# endif -# ifdef BABL_READMUX - BABL_READMUX_MODE, -# endif -# ifdef BABL_WINDOWS - BABL_WINDOWS_MODE, -# endif -# ifdef BABL_VI - BABL_VI_MODE, -# endif -# ifdef BABL_EMACS - BABL_EMACS_MODE, -# endif -# ifdef BABL_NANO - BABL_NANO_MODE, -# endif -# ifdef BABL_KITTY - BABL_KITTY_MODE, -# endif -# ifdef BABL_CHROMEOS - BABL_CHROMEOS_MODE, -# endif -# ifdef BABL_LINUX - BABL_LINUX_MODE, -# endif - BABL_MODEMAX -}; - - -/// Hacks to make it easier to create sendstring macros - -//"outer" versions wrap text -# define OMCTL(arg) SS_DOWN(X_LCTL) arg SS_UP(X_LCTL) -# define OMGUI(arg) SS_DOWN(X_LGUI) arg SS_UP(X_LGUI) -# define OMALT(arg) SS_DOWN(X_LALT) arg SS_UP(X_LALT) -# define OMSFT(...) SS_DOWN(X_LSFT) __VA_ARGS__ SS_UP(X_LSFT) -//"inner" versions wrap a key tap -# define IMCTL(arg) SS_DOWN(X_LCTL) SS_TAP(arg) SS_UP(X_LCTL) -# define IMGUI(arg) SS_DOWN(X_LGUI) SS_TAP(arg) SS_UP(X_LGUI) -# define IMALT(arg) SS_DOWN(X_LALT) SS_TAP(arg) SS_UP(X_LALT) -# define IMSFT(arg) SS_DOWN(X_LSFT) SS_TAP(arg) SS_UP(X_LSFT) - -# define BABLM(ent, ...) \ - if (ent == keycode) { \ - SEND_STRING(__VA_ARGS__); \ - return true; \ - } - -// BabblePaste should be loaded first (header in userspace .h file, before all else) -// if not,we'll do our best. -# if defined(NEW_SAFE_RANGE) -# define BABBLE_START NEW_SAFE_RANGE -# else -# if defined(KEYMAP_SAFE_RANGE) -# define BABBLE_START KEYMAP_SAFE_RANGE -# else -# define BABBLE_START SAFE_RANGE -# endif -# endif - -enum babble_keycodes { - FIRST = BABBLE_START, - BABL_MODE_INCREMENT, - BABL_MODE_DECREMENT, -# ifdef BABL_MODSWAP - BABL_PRIMARY_OS_MOD, - BABL_SECONDARY_OS_MOD, - BABL_TERTIARY_OS_MOD, -# endif -# ifdef BABL_MOVE - // Movement macros - // left & right - BABL_GO_LEFT_1C, - BABL_GO_RIGHT_1C, - BABL_GO_LEFT_WORD, - BABL_GO_RIGHT_WORD, - BABL_GO_START_LINE, - BABL_GO_END_LINE, - // now up & down - BABL_GO_START_DOC, - BABL_GO_END_DOC, - BABL_GO_NEXT_LINE, - BABL_GO_PREV_LINE, - BABL_GO_PARA_START, - BABL_GO_PARA_END, - BABL_PGDN, - BABL_PGUP, - // And the delete options - BABL_DEL_LEFT_1C, // == backspace, so why bother? - BABL_DEL_RIGHT_1C, // usually = Del - BABL_DEL_LEFT_WORD, - BABL_DEL_RIGHT_WORD, - BABL_DEL_TO_LINE_END, // delete from cursor to end of line - BABL_DEL_TO_LINE_START, // delete from cursor to begining line - BABL_MODE, // print out string saying what mode we're in. -# endif -# ifdef BABL_OSKEYS - BABL_UNDO, - BABL_REDO, - BABL_CUT, - BABL_COPY, - BABL_PASTE, - BABL_SELECT_ALL, - /* not yet implemented - BABL_SWAP_LAST2C, // swap last characters before the cursor - BABL_SWAP_LAST2W, // Swap the last two words before the cursor - */ - // find & replace - BABL_FIND, - BABL_FIND_NEXT, - BABL_FIND_PREV, - BABL_FIND_REPLACE, - // GUI or app - BABL_RUNAPP, - BABL_SWITCH_APP_NEXT, - BABL_SWITCH_APP_LAST, // previous - BABL_WINDOW_NEXT, - BABL_WINDOW_PREV, - BABL_WINDOW_NEW, - BABL_CLOSE_APP, - BABL_HELP, - BABL_LOCK, - BABL_SCREENCAPTURE, - BABL_SWITCH_KEYBOARD_LAYOUT, -# endif -# ifdef BABL_BROWSER - BABL_BROWSER_NEW_TAB, - BABL_BROWSER_CLOSE_TAB, - BABL_BROWSER_REOPEN_LAST_TAB, - BABL_BROWSER_NEXT_TAB, - BABL_BROWSER_PREV_TAB, - BABL_BROWSER_URL_BAR, - BABL_BROWSER_FORWARD, - BABL_BROWSER_BACK, - BABL_BROWSER_FIND, - BABL_BROWSER_BOOKMARK, - BABL_BROWSER_DEV_TOOLS, // hard one to remember - BABL_BROWSER_RELOAD, - BABL_BROWSER_FULLSCREEN, - BABL_BROWSER_ZOOM_IN, - BABL_BROWSER_ZOOM_OUT, - BABL_BROWSER_VIEWSRC, -# endif -# ifdef BABL_APP - BABL_APP_SAVE, // save file blurs app & os. Move? - BABL_APP_PASTE_VALUES, // paste only values, or with some special formatting. ctrl shift v chrome, // Ctrl+Alt+V, excel - // App hotkeys will be flawed, since you may use different spreadsheets across OSes. -# ifdef BABL_APP_CELLS // spreadsheets and tables - BABL_APP_CENTER_ALIGN, // Center align contents of a cell in table or spreadsheet. - BABL_APP_CLEAR_FORMATTING, // - BABL_APP_SCROLL_ACTIVE_CELL, // scroll to active cell. - BABL_NEWLINE_IN_CELL, // newline inside cell of table, - BABL_INSERT_COMMENT, // insert comment - BABL_INSERT_COL_LEFT, // insert columns to the left - BABL_INSERT_ROW, // insert row - BABL_DELETE_ROW, // delete row // excel ctrl minus // chrome ctrl alt minus - BABL_SELECT_COL, // select column - ctrl space //same in both - BABL_SELECT_ROW, // select row shift spaced // same in both. -# endif // BABL_APP_CELLS -# ifdef BABL_APP_EDITOR - BABL_APP_MULTI_SELECT, /* www.sublimetext.com/docs/2/multiple_selection_with_the_keyboard.html */ - BABL_APP_SET_MARK, // set editor mark -# endif // BABL_APP_EDITOR -# ifdef BABL_APP_WINDOWSPLITTING - // These aren't useful on most oses. - BABL_SPLIT_FRAME_VERT, - BABL_UNSPLIT_FRAME_VERT, - BABL_SPLIT_FRAME_HORIZONTAL, - BABL_UNSPLIT_FRAME_HORIZONTAL, - BABL_NEXT_FRAME, - BABL_PREV_FRAME, -# endif - -# endif - -// Macros for mode switching -# ifdef BABL_WINDOWS - BABL_DO_WINDOWS, -# endif -# ifdef BABL_MAC - BABL_DO_MAC, -# endif -# ifdef BABL_LINUX - BABL_DO_LINUX, -# endif -# ifdef BABL_EMACS - BABL_DO_EMACS, -# endif -# ifdef BABL_NANO - BABL_DO_NANO, -# endif -# ifdef BABL_KITTY - BABL_DO_KITTY, -# endif -# ifdef BABL_VI - BABL_DO_VI, -# endif -# ifdef BABL_READMUX - BABL_DO_READMUX, -# endif -# ifdef BABL_CHROMEOS - BABL_DO_CHROMEOS, -# endif - BABBLE_END_RANGE -}; - -// primary function. -bool babblePaste(uint16_t keycode, bool is_pressed); - -/****************************************************/ -/* All per-os includes and short mode switch macros*/ -# ifdef BABL_WINDOWS -# define B_WIN BABL_DO_WINDOWS -bool babblePaste_win(uint16_t keycode); -# endif -# ifdef BABL_MAC -# define B_MAC BABL_DO_MAC -bool babblePaste_mac(uint16_t keycode); -# endif -# ifdef BABL_LINUX -# define B_LINUX BABL_DO_LINUX -bool babblePaste_linux(uint16_t keycode); -# endif -# ifdef BABL_EMACS -# define B_EMACS BABL_DO_EMACS -bool babblePaste_emacs(uint16_t keycode); -# endif -# ifdef BABL_NANO -# define B_NANO BABL_DO_NANO -bool babblePaste_nano(uint16_t keycode); -# endif -# ifdef BABL_KITTY -# define B_KITTY BABL_DO_KITTY -bool babblePaste_kitty(uint16_t keycode); -# endif -# ifdef BABL_VI -# define B_VI BABL_DO_VI -bool babblePaste_vi(uint16_t keycode); -# endif -# ifdef BABL_READMUX -# define B_READ BABL_DO_READMUX -bool babblePaste_readmux(uint16_t keycode); -# endif -# ifdef BABL_CHROMEOS -# define B_CROM BABL_DO_CHROMEOS -bool babblePaste_chromeos(uint16_t keycode); -# endif - - -/**************************************************** -** All keyboard macros for Babble Actions -*****************************************************/ -# define B_INC BABL_MODE_INCREMENT -# define B_DEC BABL_MODE_DECREMENT -# ifdef BABL_MODSWAP -# define B_1ME BABL_PRIMARY_OS_MOD -# define B_2ME BABL_SECONDARY_OS_MOD -# define B_3ME BABL_TERTIARY_OS_MOD -# endif - -# ifdef BABL_MOVE -# define B_L1C BABL_GO_LEFT_1C -# define B_R1C BABL_GO_RIGHT_1C -# define B_L1W BABL_GO_LEFT_WORD -# define B_R1W BABL_GO_RIGHT_WORD -# define B_GSOL BABL_GO_START_LINE -# define B_GEOL BABL_GO_END_LINE -# define B_GTOP BABL_GO_START_DOC -# define B_GEND BABL_GO_END_DOC -# define B_DOWN BABL_GO_NEXT_LINE -# define B_UP BABL_GO_PREV_LINE -# define B_PTOP BABL_GO_PARA_START -# define B_PEND BABL_GO_PARA_END -# define B_PGDN BABL_PGDN -# define B_PGUP BABL_PGUP -//#define B_BKSP BABL_DEL_LEFT_1C == backspace so why bother. -# define B_DEL BABL_DEL_RIGHT_1C // usually = Del -# define B_DLW BABL_DEL_LEFT_WORD -# define B_DRW BABL_DEL_RIGHT_WORD -# define B_DEOL BABL_DEL_TO_LINE_END // delete from cursor to end of line -# define B_DSOL BABL_DEL_TO_LINE_START // delete from cursor to begining line -# define B_MODE BABL_MODE // type out name of current mode. -# endif - -# ifdef BABL_OSKEYS -# define B_UNDO BABL_UNDO -# define B_REDO BABL_REDO -# define B_CUT BABL_CUT -# define B_COPY BABL_COPY -# define B_PASTE BABL_PASTE -# define B_SELALL BABL_SELECT_ALL -# define B_SELA BABL_SELECT_ALL -# define B_FIND BABL_FIND -# define B_FINDN BABL_FIND_NEXT -# define B_FINDP BABL_FIND_PREV -# define B_RPLACE BABL_FIND_REPLACE -# define B_RUNAPP BABL_RUNAPP -# define B_NAPP BABL_SWITCH_APP_NEXT -# define B_PAPP BABL_SWITCH_APP_LAST // previous -# define B_NWIN BABL_WINDOW_NEXT -# define B_PWIN BABL_WINDOW_PREV -# define B_WINN BABL_WINDOW_NEW -# define B_CAPP BABL_CLOSE_APP -# define B_HELP BABL_HELP -# define B_LOCK BABL_LOCK -# define B_SCAP BABL_SCREENCAPTURE -# define B_KEYB BABL_SWITCH_KEYBOARD_LAYOUT -# endif - -# ifdef BABL_BROWSER -# define B_NTAB BABL_BROWSER_NEW_TAB -# define B_CTAB BABL_BROWSER_CLOSE_TAB -# define B_ROTB BABL_BROWSER_REOPEN_LAST_TAB -# define B_NXTB BABL_BROWSER_NEXT_TAB -# define B_PTAB BABL_BROWSER_PREV_TAB -# define B_NURL BABL_BROWSER_URL_BAR -# define B_BFWD BABL_BROWSER_FORWARD -# define B_BBAK BABL_BROWSER_BACK -# define B_BFND BABL_BROWSER_FIND -# define B_BOOK BABL_BROWSER_BOOKMARK -# define B_BDEV BABL_BROWSER_DEV_TOOLS // hard one to remember -# define B_BRLD BABL_BROWSER_RELOAD -# define B_BFULL BABL_BROWSER_FULLSCREEN -# define B_ZIN BABL_BROWSER_ZOOM_IN -# define B_ZOUT BABL_BROWSER_ZOOM_OUT -# endif - -# ifdef BABL_APP -# define B_SAVE BABL_APP_SAVE -# ifdef BABL_APP_CELLS // spreadsheets and tables -# define B_PASTV BABL_APP_PASTE_VALUES -# define B_CALN BABL_APP_CENTER_ALIGN -# define B_CFMT BABL_APP_CLEAR_FORMATTING -# define B_SCLA BABL_APP_SCROLL_ACTIVE_CELL -# define B_NCEL BABL_NEWLINE_IN_CELL -# define B_IPRW BABL_INSERT_ROW_ABOVE -# define B_ICOL BABL_INSERT_COL_LEFT -# define B_IROW BABL_INSERT_ROW -# define B_DROW BABL_DELETE_ROW -# define B_SELC BABL_SELECT_COL -# define B_SELR BABL_SELECT_ROW -# endif // BABL_APP_CELLS -# ifdef BABL_APP_EDITOR -# define B_MSEL BABL_APP_MULTI_SELECT -# define B_MARK BABL_APP_SET_MARK -/* www.sublimetext.com/docs/2/multiple_selection_with_the_keyboard.html */ -# endif // BABL_APP_EDITOR -# ifdef BABL_APP_WINDOWSPLITTING -# define B_VSPLIT BABL_SPLIT_FRAME_VERT -# define B_VUNSPT BABL_UNSPLIT_FRAME_VERT -# define B_HSPLIT BABL_SPLIT_FRAME_HORIZONTAL -# define B_HUNSPT BABL_UNSPLIT_FRAME_HORIZONTAL -# define B_NXTFM BABL_NEXT_FRAME -# define B_PRVFM BABL_PREV_FRAME -# endif // BABL_APP_WINDOWSPLITTING -# endif // BABL_APP - -#endif diff --git a/users/miles2go/babblePaste.md b/users/miles2go/babblePaste.md deleted file mode 100644 index 4f68cc4ae8..0000000000 --- a/users/miles2go/babblePaste.md +++ /dev/null @@ -1,244 +0,0 @@ -## Babblepaste, a universal translator for keyboard shortcuts - -The idea is to have one "paste" key do the right thing for any operating system. -Put the keyboard in Windows mode, and "paste" means Ctrl-v. -Switch to Emacs and "Paste" means Ctrl-y. Mac is GUI-v and so on. - -Currently supported modes are Windows, OS X, Gnome/KDE, Emacs, VI , ChromeOS, and Readline, with 70+ common macro actions. - -The babblepaste library looks for the current OS in the babble_mode global variable. -To switch modes, run the switch_babble_mode() function, or a pre defined BABL_DO_x macro. - -**BE CAREFUL** - * Not all actions are defined for all OSes. The default is to do nothing. - * Not all actions are _TESTED_ on all OSes. - * Keys can have very different meanings between windows in the same OS. If you switch apps without switching modes, bad things can happen. - -###To use the library -#### Add #defines to your config.h. -``` - #define USE_BABBLEPASTE - - //// Uncomment the modes you want to enable - #define BABL_WINDOWS - #define BABL_READMUX - #define BABL_VI - #define BABL_MAC - #define BABL_LINUX - #define BABL_EMACS - #define BABL_NANO - #define BABL_CHROMEOS - - //// These enable subsets of babble macros. Disable options to save space - #define BABL_MOVE // Uncomment to add basic cursor movement - #define BABL_OSKEYS // This adds Cut, paste, window movement and common OS shortcuts - #define BABL_BROWSER // Browser shortcuts - - //// What Browser shortcuts? - #define BABL_BROWSER_CHROME // Chrome browser, Google apps - //#define BABL_BROWSER_MS - //#define BABL_BROWSER_SAFARI // Safari, Apple defaults. - - //// applications vary even more between OSes. We'll do our best. - #define BABL_APP - // To enable specific App options. - #define BABL_APP_CELLS // spreadsheets and tables - #define BABL_APP_EDITOR // Fancy editor commands - #define BABL_APP_WINDOWSPLITTING // splitting frames & windows - - //// What App keybinding is assumed? - //#define BABL_APP_GOOGLE // Google office - #define BABL_APP_MSOFFICE // MS office - //#define BABL_APP_APPLE // Apple office - #define BABL_APP_SUBLIME -``` - -#### Enable Babblepaste in your Keymap - -Add the following to your keymap in process_record_user, before the main switch statement. -``` -#ifdef USE_BABBLEPASTE - if (keycode > BABBLE_START && keycode < BABBLE_END_RANGE) { - if (record->event.pressed) { - babblePaste(keycode, 1); - } else { - babblePaste(keycode, 0); - } - } -#endif -``` - -#### Add makefile rules - -Update your rules.mk to include the modes you want. - - `SRC += babblePaste.c babl_windows.c babl_mac.c babl_nano babl_vi.c babl_readmux.c babl_chromeos.c babl_emacs.c babl_linux.c` - - -#### Custom Keycodes - -If you are using custom keycodes, update the safe range in your user.h -``` - #if defined(BABBLE_END_RANGE) - #define USER_START BABBLE_END_RANGE - #else - #if defined(KEYMAP_SAFE_RANGE) - #define USER_START KEYMAP_SAFE_RANGE - #else - #define USER_START SAFE_RANGE - #endif - #endif -``` - -#### Add Babblepaste actions to your keymap. -See the full list in babblePaste.h, or the list below -``` - B_WIN // switch babblepaste to windows mode. - B_MAC // Mac Mode - B_LNX // switch to linux - B_VI // switch to Vi mode - B_EMAX // switch mode to emacs - B_NANO // switch mode to emacs - B_READ // switch to readline /tmux mode - B_CROM // switch to chromeos mode. - - // Swap meaning of modifier key in most ergonomic location based on babble - // mode. Eg Thumb gets CTL on Win/Linux, pinky gets Windows key. Reverse for - // OS X. See first line in babblepaste function. - #define B_1ME BABL_PRIMARY_OS_MOD - #define B_2ME BABL_SECONDARY_OS_MOD - #define B_3ME BABL_TERTIARY_OS_MOD - -// Macros - #define B_L1C BABL_GO_LEFT_1C - #define B_R1C BABL_GO_RIGHT_1C - #define B_L1W BABL_GO_LEFT_WORD - #define B_R1W BABL_GO_RIGHT_WORD - #define B_GSOL BABL_GO_START_LINE - #define B_GEOL BABL_GO_END_LINE - #define B_GTOP BABL_GO_START_DOC - #define B_GEND BABL_GO_END_DOC - #define B_DOWN BABL_GO_NEXT_LINE - #define B_UP BABL_GO_PREV_LINE - #define B_PTOP BABL_GO_PARA_START - #define B_PEND BABL_GO_PARA_END - #define B_PGDN BABL_PGDN - #define B_PGUP BABL_PGUP - #define B_DEL BABL_DEL_RIGHT_1C - #define B_DLW BABL_DEL_LEFT_WORD - #define B_DRW BABL_DEL_RIGHT_WORD - #define B_DEOL BABL_DEL_TO_LINE_END // delete from cursor to end of line - #define B_DSOL BABL_DEL_TO_LINE_START // delete from cursor to begining line - #define B_MODE BABL_MODE //type out name of current mode. - - #define B_UNDO BABL_UNDO - #define B_REDO BABL_REDO - #define B_CUT BABL_CUT - #define B_COPY BABL_COPY - #define B_PASTE BABL_PASTE - #define B_SELALL BABL_SELECT_ALL - #define B_SELA BABL_SELECT_ALL - #define B_FIND BABL_FIND - #define B_FINDN BABL_FIND_NEXT - #define B_FINDP BABL_FIND_PREV - #define B_RPLACE BABL_FIND_REPLACE - #define B_RUNAPP BABL_RUNAPP - #define B_NAPP BABL_SWITCH_APP_NEXT - #define B_PAPP BABL_SWITCH_APP_LAST // previous - #define B_CAPP BABL_CLOSE_APP - #define B_HELP BABL_HELP - #define B_HELP BABL_HELP - #define B_LOCK BABL_LOCK - #define B_SCAP BABL_SCREENCAPTURE - #define B_KEYB BABL_SWITCH_KEYBOARD_LAYOUT - - #define B_NTAB BABL_BROWSER_NEW_TAB - #define B_CTAB BABL_BROWSER_CLOSE_TAB - #define B_ROTB BABL_BROWSER_REOPEN_LAST_TAB - #define B_NXTB BABL_BROWSER_NEXT_TAB - #define B_PTAB BABL_BROWSER_PREV_TAB - #define B_NURL BABL_BROWSER_URL_BAR - #define B_BFWD BABL_BROWSER_FORWARD - #define B_BBAK BABL_BROWSER_BACK - #define B_BFND BABL_BROWSER_FIND - #define B_BOOK BABL_BROWSER_BOOKMARK - #define B_BDEV BABL_BROWSER_DEV_TOOLS // hard one to remember - #define B_BRLD BABL_BROWSER_RELOAD - #define B_BFULL BABL_BROWSER_FULLSCREEN - #define B_ZIN BABL_BROWSER_ZOOM_IN - #define B_ZOUT BABL_BROWSER_ZOOM_OUT - - #define B_SAVE BABL_APP_SAVE - #define B_PASTV BABL_APP_PASTE_VALUES - #define B_CALN BABL_APP_CENTER_ALIGN - #define B_CFMT BABL_APP_CLEAR_FORMATTING - #define B_SCLA BABL_APP_SCROLL_ACTIVE_CELL - #define B_NCEL BABL_NEWLINE_IN_CELL - #define B_IPRW BABL_INSERT_ROW_ABOVE - #define B_ICOL BABL_INSERT_COL_LEFT - #define B_IROW BABL_INSERT_ROW - #define B_DROW BABL_DELETE_ROW - #define B_SELC BABL_SELECT_COL - #define B_SELR BABL_SELECT_ROW - - #define B_MSEL BABL_APP_MULTI_SELECT - #define B_MARK BABL_APP_SET_MARK - #define B_VSPLIT BABL_SPLIT_FRAME_VERT - #define B_VUNSPT BABL_UNSPLIT_FRAME_VERT - #define B_HSPLIT BABL_SPLIT_FRAME_HORIZONTAL - #define B_HUNSPT BABL_UNSPLIT_FRAME_HORIZONTAL - #define B_NXTFM BABL_NEXT_FRAME - #define B_PRVFM BABL_PREV_FRAME -``` - -####Add babblepaste functions to your keyboard or userspace -Functions babble_led_user() and babble_led_kb() are called when babble mode is changed. -``` -void babble_modeswitch_kb(uint8_t mode){ - #ifdef USE_BABBLEPASTE - writePinLow(B3); writePinLow(B2); - switch(mode) { - case(BABL_LINUX_MODE): - writePinHigh(B2); - backlight_level(1); - break; - case(BABL_MAC_MODE): - writePinHigh(B3); - backlight_level(4); - break; - } - // call the user function - babble_modeswitch_user(mode); - #endif -``` - - - -## Development FAQs - -**Todos** -eeprom store state of babble_mode? or update docs so that people can change the order of the enum in babblespace.h? - -**You have huge ifdef stanzas instead of functions** -This fails gracefully if you don't have all options defined. Patch if you can think how to use fewer defines. - -**Why not an array of arrays as a lookup instead of a function?** -This would allow you to store the lookup table in PROGMEM. -True, but that takes more pre-processor skill than I have, and may be less portable to ARM or other flash mappings. - -**Have you tested every key on every platform?** -No. Be careful, submit a patch. - -**Why not change apps App babble modes at the same global level as the OS?** -This is only a good thing if it doesn't confuse the user. If you can show state of OS vs App, it's probably a good thing. - -**Can the OS tell the keyboard what mode to use?** -The keyboard side is easy to do with virtser_recv & a function that updates babble_mode. It still needs a PC side app to track where the keyboard focus is. -One could use a keyboard macro to launch an app & switch modes for that app. - -## Thanks - -Thanks to [wikipedia shortcuts page](https://en.wikipedia.org/wiki/Table_of_keyboard_shortcuts) -and [Jeebak's keymap](https://github.com/qmk/qmk_firmware/blob/master/keyboards/planck/keymaps/jeebak/keymap.c) -this [howtogeek shortcuts page](https://www.howtogeek.com/115664/42-text-editing-keyboard-shortcuts-that-work-almost-everywhere/) -And of course QMK... diff --git a/users/miles2go/babl_chromeos.c b/users/miles2go/babl_chromeos.c deleted file mode 100644 index 5e95e1424a..0000000000 --- a/users/miles2go/babl_chromeos.c +++ /dev/null @@ -1,103 +0,0 @@ -/* A library to output the right key shortcut in any common app. -Given a global variable babble_mode to show the environment and a -key that calls the paste macro, do the right type of paste. -Setting the context is done by another macro, or TBD interaction with the host. - -https://support.google.com/docs/answer/181110?co=GENIE.Platform%3DDesktop&hl=en - -*/ - -#include QMK_KEYBOARD_H - -#ifdef USE_BABBLEPASTE -# include "babblePaste.h" - -# ifdef BABL_CHROMEOS - -bool babblePaste_chromeos(uint16_t keycode) { -# ifdef BABL_MOVE - BABLM(BABL_GO_LEFT_1C, SS_TAP(X_LEFT)); - BABLM(BABL_GO_RIGHT_1C, SS_TAP(X_RIGHT)); - BABLM(BABL_GO_LEFT_WORD, IMCTL(X_LEFT)); - BABLM(BABL_GO_RIGHT_WORD, IMCTL(X_RIGHT)); - BABLM(BABL_GO_START_LINE, SS_TAP(X_HOME)); - BABLM(BABL_GO_END_LINE, SS_TAP(X_END)); - BABLM(BABL_GO_START_DOC, IMCTL(X_HOME)); - BABLM(BABL_GO_END_DOC, IMCTL(X_END)); - BABLM(BABL_GO_NEXT_LINE, SS_TAP(X_DOWN)); - BABLM(BABL_GO_PREV_LINE, SS_TAP(X_UP)); - BABLM(BABL_GO_PARA_START, IMCTL(X_UP)); // untested - BABLM(BABL_GO_PARA_END, IMCTL(X_DOWN)); // untested - BABLM(BABL_PGDN, IMGUI(X_DOWN)); - BABLM(BABL_PGUP, IMGUI(X_UP)); - BABLM(BABL_DEL_RIGHT_1C, IMALT(X_BACKSPACE)); - BABLM(BABL_DEL_LEFT_WORD, IMCTL(X_BACKSPACE)); - BABLM(BABL_DEL_RIGHT_WORD, OMSFT(IMCTL(X_RIGHT)) SS_TAP(X_BACKSPACE)); - BABLM(BABL_DEL_TO_LINE_END, OMSFT(IMGUI(X_LEFT)) SS_TAP(X_BACKSPACE)); - BABLM(BABL_DEL_TO_LINE_START, OMSFT(IMGUI(X_RIGHT)) SS_TAP(X_BACKSPACE)); - BABLM(BABL_MODE, ("ChromeOS ")); -# endif -# ifdef BABL_OSKEYS - BABLM(BABL_UNDO, SS_LCTL("z")); - BABLM(BABL_REDO, OMSFT(IMCTL(X_Z))); - BABLM(BABL_CUT, SS_LCTL("x")); - BABLM(BABL_COPY, SS_LCTL("c")); - BABLM(BABL_PASTE, SS_LCTL("v")); - BABLM(BABL_SELECT_ALL, SS_LCTL("a")); - BABLM(BABL_FIND, SS_LCTL("f")); - BABLM(BABL_FIND_NEXT, SS_LCTL("g")); - BABLM(BABL_FIND_PREV, OMSFT(IMCTL(X_G))); - BABLM(BABL_WINDOW_NEW, IMCTL(X_N)); - // BABLM( BABL_FIND_REPLACE, () ); // not part of Chrome - // BABLM( BABL_RUNAPP, SS_TAP(X_LGUI) ); // not sure of this - BABLM(BABL_SWITCH_APP_NEXT, IMALT(X_TAB)); - BABLM(BABL_SWITCH_APP_LAST, OMSFT(IMALT(X_TAB))); - BABLM(BABL_CLOSE_APP, OMSFT(IMCTL(X_W))); - // BABLM( BABL_HELP, OMCTL(IMALT(X_SLASH)) ); // general help - BABLM(BABL_HELP, IMCTL(X_SLASH)); // this is keyboard accelerator lookup - BABLM(BABL_LOCK, SS_LGUI("l")); // should be caps? - BABLM(BABL_SCREENCAPTURE, OMSFT(IMCTL(X_F5))); - BABLM(BABL_SWITCH_KEYBOARD_LAYOUT, IMCTL(X_SPACE)); -# endif -# ifdef BABL_BROWSER - BABLM(BABL_BROWSER_NEW_TAB, SS_LCTL("t")); - BABLM(BABL_BROWSER_CLOSE_TAB, SS_LCTL("w")); - BABLM(BABL_BROWSER_REOPEN_LAST_TAB, OMSFT(IMCTL(X_T))); - BABLM(BABL_BROWSER_NEXT_TAB, IMCTL(X_TAB)); - BABLM(BABL_BROWSER_PREV_TAB, OMSFT(IMCTL(X_TAB))); - BABLM(BABL_BROWSER_URL_BAR, SS_LCTL("l")); - BABLM(BABL_BROWSER_FORWARD, IMALT(X_RIGHT)); - BABLM(BABL_BROWSER_BACK, IMALT(X_LEFT)); - ; - BABLM(BABL_BROWSER_FIND, SS_LCTL("f")); - BABLM(BABL_BROWSER_BOOKMARK, SS_LCTL("d")); - BABLM(BABL_BROWSER_DEV_TOOLS, OMSFT(IMCTL(X_I))); - BABLM(BABL_BROWSER_RELOAD, OMSFT(IMCTL(X_R))); // hard reload w/o cache - BABLM(BABL_BROWSER_FULLSCREEN, SS_TAP(X_F4)); // untested - BABLM(BABL_BROWSER_ZOOM_IN, OMSFT(IMCTL(X_EQUAL))); // ctr+ + - BABLM(BABL_BROWSER_ZOOM_OUT, IMCTL(X_MINUS)); - BABLM(BABL_BROWSER_VIEWSRC, SS_LCTL("u")); // Chrome or firefox -# endif - -# ifdef BABL_APP - BABLM(BABL_APP_SAVE, SS_LCTL("s")); - //#ifdef BABL_APP_GOOGLE -- we're going to make an assumption. - BABLM(BABL_APP_CENTER_ALIGN, OMSFT(IMCTL(X_E))); - BABLM(BABL_APP_SCROLL_ACTIVE_CELL, IMCTL(X_BACKSPACE)); - BABLM(BABL_NEWLINE_IN_CELL, IMALT(X_ENTER)); - BABLM(BABL_INSERT_COMMENT, OMALT(IMCTL(X_M))); - BABLM(BABL_APP_CLEAR_FORMATTING, IMCTL(X_BACKSLASH)); - BABLM(BABL_DELETE_ROW, IMALT(X_E) "d"); - BABLM(BABL_INSERT_COL_LEFT, IMALT(X_I) "c"); // o for to the right. - BABLM(BABL_INSERT_ROW, IMALT(X_I) "w"); // r for above. - BABLM(BABL_SELECT_COL, IMCTL(X_SPACE)); - BABLM(BABL_SELECT_ROW, IMSFT(X_SPACE)); - BABLM(BABL_DELETE_ROW, OMALT(IMCTL(X_KP_MINUS))); // once selected -//#endif // BABL_APP_CELLS -# endif // BABL_APP - - // Todo, ring bell, flash light, show user this isn't supported - return false; -} -# endif -#endif /* chromeos*/ diff --git a/users/miles2go/babl_emacs.c b/users/miles2go/babl_emacs.c deleted file mode 100644 index aa6e03a5ad..0000000000 --- a/users/miles2go/babl_emacs.c +++ /dev/null @@ -1,86 +0,0 @@ -/* A library to output the right key shortcut in any common app. -Given a global variable babble_mode to show the environment and a -key that calls the paste macro, do the right type of paste. -Setting the context is done by another macro, or TBD interaction with the host. - -Emacs mode is probably most useful for people who don't usually use emacs - -https://www.ast.cam.ac.uk/~vasily/idl/emacs_commands_list.html -*/ - -#include QMK_KEYBOARD_H - -#ifdef USE_BABBLEPASTE -# include "babblePaste.h" - -# ifdef BABL_EMACS - -// probably should allow meta to not be ALT -# define DMETA IMALT - -bool babblePaste_emacs(uint16_t keycode) { -# ifdef BABL_MOVE - BABLM(BABL_GO_LEFT_1C, SS_TAP(X_LEFT)); - BABLM(BABL_GO_RIGHT_1C, SS_TAP(X_RIGHT)); - BABLM(BABL_GO_LEFT_WORD, IMALT(X_B)); - BABLM(BABL_GO_RIGHT_WORD, IMALT(X_F)); - BABLM(BABL_GO_START_LINE, SS_LCTL("a")); - BABLM(BABL_GO_END_LINE, SS_LCTL("e")); - BABLM(BABL_GO_START_DOC, OMALT(IMSFT(X_COMMA))); - BABLM(BABL_GO_END_DOC, OMALT(IMSFT(X_DOT))); - BABLM(BABL_GO_NEXT_LINE, SS_LCTL("n")); - BABLM(BABL_GO_PREV_LINE, SS_LCTL("p")); - BABLM(BABL_GO_PARA_START, OMALT(IMSFT(X_LEFT_BRACKET))); - BABLM(BABL_GO_PARA_END, OMALT(IMSFT(X_RIGHT_BRACKET))); - BABLM(BABL_PGDN, SS_LCTL("v")); - BABLM(BABL_PGUP, IMALT(X_V)); - BABLM(BABL_DEL_RIGHT_1C, SS_LCTL("d")); - BABLM(BABL_DEL_LEFT_WORD, IMCTL(X_BACKSPACE)); - BABLM(BABL_DEL_RIGHT_WORD, IMALT(X_D)); - BABLM(BABL_DEL_TO_LINE_END, SS_LCTL("k")); - BABLM(BABL_DEL_TO_LINE_START, SS_TAP(X_ESCAPE) "0" SS_LCTL("k")); - BABLM(BABL_MODE, "Emacs "); -# endif -# ifdef BABL_OSKEYS - BABLM(BABL_UNDO, SS_LCTL("x") "c"); - BABLM(BABL_REDO, SS_LCTL("x") "c"); // arguably - BABLM(BABL_CUT, SS_LCTL("w")); - BABLM(BABL_COPY, SS_LALT("w")); // really? - BABLM(BABL_PASTE, SS_LCTL("y")); - BABLM(BABL_SELECT_ALL, SS_LCTL("x") "h"); - BABLM(BABL_FIND, SS_LCTL("s")); - BABLM(BABL_FIND_NEXT, SS_LCTL("s")); - BABLM(BABL_FIND_PREV, SS_LCTL("r")); - BABLM(BABL_FIND_REPLACE, OMALT(IMSFT(X_5))); - // BABLM( BABL_RUNAPP , //(SS_LALT("x") "shell") );// arguably - BABLM(BABL_RUNAPP, IMALT(X_X) "split-window" SS_TAP(X_ENTER)); // arguably - BABLM(BABL_WINDOW_NEXT, SS_LCTL("x") "o"); - BABLM(BABL_WINDOW_PREV, SS_LCTL("x") "o"); // arguably - // BABLM( BABL_WINDOW_NEW, IMCTL(X_X)"n" ); // - BABLM(BABL_CLOSE_APP, SS_LCTL("x") "c"); - BABLM(BABL_HELP, SS_LCTL("h") "a"); // start search in help - // BABLM( BABL_LOCK, () ); // lock buffer? Too many options. - // BABLM( BABL_SCREENCAPTURE, () ); // requires plugin? - -# endif -# ifdef BABL_BROWSER -/* you get to figure w3 out */ -# endif - -# ifdef BABL_APP - BABLM(BABL_APP_SAVE, SS_LCTL("x") SS_LCTL("s")); - BABLM(BABL_APP_SET_MARK, IMCTL(X_SPACE)); - /// BABLM( BABL_APP_MULTI_SELECT, SS_LCTL("x") "rt" ); // arguably - BABLM(BABL_SPLIT_FRAME_VERT, SS_LCTL("x") "3"); - BABLM(BABL_UNSPLIT_FRAME_VERT, SS_LCTL("u") SS_LCTL("x") "0"); - BABLM(BABL_SPLIT_FRAME_HORIZONTAL, SS_LCTL("x") "2"); - BABLM(BABL_UNSPLIT_FRAME_HORIZONTAL, SS_LCTL("u") SS_LCTL("x") "0"); - BABLM(BABL_NEXT_FRAME, SS_LCTL("x") "o"); - BABLM(BABL_PREV_FRAME, SS_LCTL("u") "-1" SS_LCTL("x") "o"); -# endif - - // Todo, ring bell, flash light, show user this isn't supported - return false; -} -# endif /* emacs mode*/ -#endif diff --git a/users/miles2go/babl_kitty.c b/users/miles2go/babl_kitty.c deleted file mode 100644 index 2a4e0d2df4..0000000000 --- a/users/miles2go/babl_kitty.c +++ /dev/null @@ -1,153 +0,0 @@ -/* Keyboard mappings for Kitty terminal -https://sw.kovidgoyal.net/kitty/index.html# - - A library to output the right key shortcut in any common app. -Given a global variable babble_mode to show the environment and a -key that calls the paste macro, do the right type of paste. -Setting the context is done by another macro, or TBD interaction with the host. - -Huge thanks to https://en.wikipedia.org/wiki/Table_of_keyboard_shortcuts -and -https://github.com/qmk/qmk_firmware/blob/master/keyboards/planck/keymaps/jeebak/keymap.c -*/ - -#include QMK_KEYBOARD_H - -// #define TAB_MEANS TAB -/* #define TAB_MEANS_TAB to keep the meaning of "tab" and "window" used in kitty documentation. . - * Leaving tab undefined will mean that each babble window command applies to a tab, - * and each babble tab command applies to a window inside the kitty OS window. - */ -//#define TAB_MEANS_TAB - -#ifdef USE_BABBLEPASTE -# include "babblePaste.h" - -# ifdef BABL_KITTY - -bool babblePaste_kitty(uint16_t keycode) { -# ifdef BABL_MOVE - BABLM(BABL_GO_LEFT_1C, SS_TAP(X_LEFT)); - BABLM(BABL_GO_RIGHT_1C, SS_TAP(X_RIGHT)); - BABLM(BABL_GO_LEFT_WORD, IMCTL(X_LEFT)); - BABLM(BABL_GO_RIGHT_WORD, IMCTL(X_RIGHT)); - BABLM(BABL_GO_START_LINE, SS_TAP(X_HOME)); - BABLM(BABL_GO_END_LINE, SS_TAP(X_END)); - BABLM(BABL_GO_START_DOC, OMSFT(IMCTL(X_HOME))); - BABLM(BABL_GO_END_DOC, OMSFT(IMCTL(X_END))); - // leaving these for command line editing. - BABLM(BABL_GO_NEXT_LINE, SS_TAP(X_DOWN)); - BABLM(BABL_GO_PREV_LINE, SS_TAP(X_UP)); - // These are for kitty scrolling by one line - // BABLM(BABL_GO_NEXT_LINE, OMSFT(IMCTL(X_DOWN))); - // BABLM(BABL_GO_PREV_LINE, OMSFT(IMCTL(X_UP))); - // passthrough - BABLM(BABL_PGDN, OMSFT(IMCTL(X_PGDN))); // kitty pagedown - BABLM(BABL_PGUP, OMSFT(IMCTL(X_PGUP))); // kitty pageup - // passthrough to commanrd line/shell. - BABLM(BABL_DEL_RIGHT_1C, SS_LCTL("d")); - BABLM(BABL_DEL_LEFT_WORD, SS_LCTL("w")); // meta-DEL instead? - BABLM(BABL_DEL_RIGHT_WORD, SS_LALT("d")); - BABLM(BABL_DEL_TO_LINE_END, SS_LCTL("k")); - BABLM(BABL_DEL_TO_LINE_START, SS_LCTL("u")); - BABLM(BABL_GO_PARA_START, IMCTL(X_UP)); - BABLM(BABL_GO_PARA_END, IMCTL(X_DOWN)); - BABLM(BABL_MODE, "Kitty! "); -# endif -# ifdef BABL_OSKEYS - // cut isn't real, undo/redo are passthrough. - BABLM(BABL_UNDO, SS_LCTL("z")); - BABLM(BABL_REDO, SS_LCTL("y")); - BABLM(BABL_CUT, OMSFT(IMCTL(X_X))); - BABLM(BABL_COPY, OMSFT(IMCTL(X_C))); - BABLM(BABL_PASTE, OMSFT(IMCTL(X_V))); - BABLM(BABL_SELECT_ALL, SS_LCTL("a")); - BABLM(BABL_FIND, SS_LCTL("f")); // passthrough. - // BABLM(BABL_CLOSE_APP, IMALT(X_F4)); // gnome. - // BABLM(BABL_HELP, SS_TAP(X_F1)); // script to pop open kitty web page? - // 2 passthrough. - BABLM(BABL_FIND_NEXT, SS_LCTL("g")); // Gnome*/ - BABLM(BABL_FIND_PREV, OMSFT(IMCTL(X_G))); // Gnome*/ - // BABLM(BABL_FIND_NEXT (SS_LALT(X_F3)) ); //KDE */ - /* BABLM( BABL_FIND_REPLACE , (SS_LCTL("r")) ); // KDE */ - // BABLM(BABL_FIND_REPLACE, SS_LCTL("h")); // Gnome*/ - BABLM(BABL_RUNAPP, OMSFT(IMCTL(X_O))); // pass current selection to program. - BABLM(BABL_SWITCH_APP_NEXT, IMGUI(X_TAB)); - // BABLM(BABL_SWITCH_APP_LAST, OMSFT(IMALT(X_TAB))); - BABLM(BABL_WINDOW_NEXT, IMGUI(X_GRAVE)); // next OS window of kitty. - BABLM(BABL_WINDOW_PREV, OMSFT(IMGUI(X_GRAVE))); // NA? -# ifdef TAB_MEANS_TAB - BABLM(BABL_WINDOW_NEW, OMSFT(IMCTL(X_ENTER))); // a window is a window -# else - BABLM(BABL_WINDOW_NEW, OMSFT(IMCTL(X_T))); // a window is a tab -# endif - // KITTY - missing close window. - // BABLM( BABL_HELP, (SS_TAP(X_F1)) ); // NA? - // BABLM(BABL_LOCK, OMCTL(IMALT(X_L))); // NA passthrough - // BABLM(BABL_SCREENCAPTURE, IMSFT(X_PRINT_SCREEN)); // NA passthrough -# endif -# ifdef BABL_BROWSER - -# ifdef TAB_MEANS_TAB - // option A - do tab when I say tab. - BABLM(BABL_BROWSER_NEW_TAB, OMSFT(IMCTL(X_T))); - BABLM(BABL_BROWSER_CLOSE_TAB, OMSFT(IMCTL(X_Q))); - BABLM(BABL_BROWSER_NEXT_TAB, OMSFT(IMCTL(X_RIGHT))); - BABLM(BABL_BROWSER_PREV_TAB, OMSFT(IMCTL(X_LEFT))); - // ok, this is a bit of a stretch, overloading meaning of forwards/backwards - BABLM(BABL_BROWSER_FORWARD, OMSFT(IMCTL(X_DOT))); // move current kitty tab forwards - BABLM(BABL_BROWSER_BACK, OMSFT(IMCTL(X_COMMA))); // move current kitty tab back - // requires kitty config of "map ctrl+shift+f7 detach_window" - BABLM(BABL_BROWSER_REOPEN_LAST_TAB, IMCTL(X_F7)); // pop current frame into a window -# else // tab means window/frame. - // option B - do Kitty window (frame) when I say tab - BABLM(BABL_BROWSER_NEW_TAB, OMSFT(IMCTL(X_ENTER))); - BABLM(BABL_BROWSER_NEXT_TAB, OMSFT(IMCTL(X_LBRC))); - BABLM(BABL_BROWSER_PREV_TAB, OMSFT(IMCTL(X_RBRC))); - // ok, this is a bit of a stretch, overloading meaning of forwards/backwards - BABLM(BABL_BROWSER_FORWARD, OMSFT(IMCTL(X_F))); - BABLM(BABL_BROWSER_BACK, OMSFT(IMCTL(X_B))); - // kitty - questionable mental model - reopen current frame as a window - // requires kitty config of "map ctrl+shift+f6 detach_frame" - BABLM(BABL_BROWSER_REOPEN_LAST_TAB, IMCTL(X_F6)); // pop current frame into a window -# endif // tab means tab - - // BABLM(BABL_BROWSER_FIND, SS_LCTL("f")); - BABLM(BABL_BROWSER_BOOKMARK, SS_LCTL(SS_LSFT(SS_LALT("t")))); // bookmark == set tab title. - BABLM(BABL_BROWSER_DEV_TOOLS, OMSFT(IMCTL(X_F2))); // edit kitty config. - BABLM(BABL_BROWSER_RELOAD, OMSFT(IMCTL(X_DEL))); // reset terminal - BABLM(BABL_BROWSER_FULLSCREEN, OMSFT(IMCTL(X_F11))); - BABLM(BABL_BROWSER_ZOOM_IN, OMSFT(IMCTL(X_EQUAL))); - BABLM(BABL_BROWSER_ZOOM_OUT, OMSFT(IMCTL(X_MINUS))); - // Again, breaking model to overload "view source" - BABLM(BABL_BROWSER_VIEWSRC, OMSFT(IMCTL(X_O))); // open URL in browser - -# endif -# ifdef BABL_APP - BABLM(BABL_APP_SAVE, SS_LCTL("s")); // passthrough. -# ifdef TAB_MEANS_TAB // frames are called windows. - BABLM(BABL_SPLIT_FRAME_VERT, OMSFT(IMCTL(X_ENTER))); // add new frame in kitty window - BABLM(BABL_UNSPLIT_FRAME_VERT, OMSFT(IMCTL(X_W))); // close window - // BUG, this breaks the mental model. move the current frame forward/back in rotation - BABLM(BABL_SPLIT_FRAME_HORIZONTAL, OMSFT(IMCTL(X_F))); - BABLM(BABL_UNSPLIT_FRAME_HORIZONTAL, OMSFT(IMCTL(X_B))); - // KITTY - missing ctrl shift ` = move frame to top. - BABLM(BABL_NEXT_FRAME, OMSFT(IMCTL(X_RBRC))); - BABLM(BABL_PREV_FRAME, OMSFT(IMCTL(X_LBRC))); -# else // splits are tabs - BABLM(BABL_SPLIT_FRAME_VERT, OMSFT(IMCTL(X_T))); - BABLM(BABL_UNSPLIT_FRAME_VERT, OMSFT(IMCTL(X_Q))); // close Tab - BABLM(BABL_NEXT_FRAME, OMSFT(IMCTL(X_RIGHT))); - BABLM(BABL_PREV_FRAME, OMSFT(IMCTL(X_LEFT))); - // ok, this is a bit of a stretch, overloading meaning of forwards/backwards - BABLM(BABL_SPLIT_FRAME_HORIZONTAL, OMSFT(IMCTL(X_DOT))); // move current kitty tab forwards - BABLM(BABL_UNSPLIT_FRAME_HORIZONTAL, OMSFT(IMCTL(X_COMMA))); // move current kitty tab back -# endif // tab means tab -# endif - - // Todo, ring bell, flash light, show user this isn't supported - return false; -} - -# endif /* kitty mode */ -#endif diff --git a/users/miles2go/babl_linux.c b/users/miles2go/babl_linux.c deleted file mode 100644 index 4d8e340b01..0000000000 --- a/users/miles2go/babl_linux.c +++ /dev/null @@ -1,102 +0,0 @@ -/* A library to output the right key shortcut in any common app. -Given a global variable babble_mode to show the environment and a -key that calls the paste macro, do the right type of paste. -Setting the context is done by another macro, or TBD interaction with the host. - -Huge thanks to https://en.wikipedia.org/wiki/Table_of_keyboard_shortcuts -and -https://github.com/qmk/qmk_firmware/blob/master/keyboards/planck/keymaps/jeebak/keymap.c -*/ - -#include QMK_KEYBOARD_H - -#ifdef USE_BABBLEPASTE -# include "babblePaste.h" - -# ifdef BABL_LINUX - -bool babblePaste_linux(uint16_t keycode) { -# ifdef BABL_MOVE - BABLM(BABL_GO_LEFT_1C, SS_TAP(X_LEFT)); - BABLM(BABL_GO_RIGHT_1C, SS_TAP(X_RIGHT)); - BABLM(BABL_GO_LEFT_WORD, IMCTL(X_LEFT)); - BABLM(BABL_GO_RIGHT_WORD, IMCTL(X_RIGHT)); - BABLM(BABL_GO_START_LINE, SS_TAP(X_HOME)); - BABLM(BABL_GO_END_LINE, SS_TAP(X_END)); - BABLM(BABL_GO_START_DOC, IMCTL(X_HOME)); - BABLM(BABL_GO_END_DOC, IMCTL(X_END)); - BABLM(BABL_GO_NEXT_LINE, SS_TAP(X_DOWN)); - BABLM(BABL_GO_PREV_LINE, SS_TAP(X_UP)); - BABLM(BABL_GO_PARA_START, IMCTL(X_UP)); - BABLM(BABL_GO_PARA_END, IMCTL(X_DOWN)); - BABLM(BABL_PGDN, SS_TAP(X_PGDN)); - BABLM(BABL_PGUP, SS_TAP(X_PGUP)); - BABLM(BABL_DEL_RIGHT_1C, SS_TAP(X_DELETE)); - BABLM(BABL_DEL_LEFT_WORD, IMCTL(X_BACKSPACE)); - BABLM(BABL_DEL_RIGHT_WORD, IMCTL(X_DELETE)); - BABLM(BABL_DEL_TO_LINE_END, IMSFT(X_HOME) SS_TAP(X_DELETE)); - BABLM(BABL_DEL_TO_LINE_START, IMSFT(X_END) SS_TAP(X_DELETE)); - BABLM(BABL_MODE, "Linux "); -# endif -# ifdef BABL_OSKEYS - BABLM(BABL_UNDO, SS_LCTL("z")); - BABLM(BABL_REDO, SS_LCTL("y")); - BABLM(BABL_CUT, SS_LCTL("x")); - BABLM(BABL_COPY, SS_LCTL("c")); - BABLM(BABL_PASTE, SS_LCTL("v")); - BABLM(BABL_SELECT_ALL, SS_LCTL("a")); - BABLM(BABL_FIND, SS_LCTL("f")); - BABLM(BABL_CLOSE_APP, IMALT(X_F4)); - BABLM(BABL_HELP, SS_TAP(X_F1)); - // BABLM(BABL_FIND_NEXT (SS_LALT(X_F3)) ); //KDE */ - BABLM(BABL_FIND_NEXT, SS_LCTL("g")); // Gnome*/ - BABLM(BABL_FIND_PREV, OMSFT(IMCTL(X_G))); // Gnome*/ - /* BABLM( BABL_FIND_REPLACE , (SS_LCTL("r")) ); // KDE */ - BABLM(BABL_FIND_REPLACE, SS_LCTL("h")); // Gnome*/ - BABLM(BABL_RUNAPP, IMALT(X_F2)); // Gnome - BABLM(BABL_SWITCH_APP_NEXT, IMALT(X_TAB)); - BABLM(BABL_SWITCH_APP_LAST, OMSFT(IMALT(X_TAB))); - BABLM(BABL_WINDOW_NEXT, OMCTL(IMALT(X_PGUP))); // Gnome, sometimes - BABLM(BABL_WINDOW_PREV, OMCTL(IMALT(X_PGDN))); - BABLM(BABL_WINDOW_NEW, IMCTL(X_N)); - // BABLM( BABL_HELP, (SS_TAP(X_F1)) ); // NA? - BABLM(BABL_LOCK, OMCTL(IMALT(X_L))); - BABLM(BABL_SCREENCAPTURE, IMSFT(X_PRINT_SCREEN)); -# endif -# ifdef BABL_BROWSER - BABLM(BABL_BROWSER_NEW_TAB, SS_LCTL("t")); - BABLM(BABL_BROWSER_CLOSE_TAB, SS_LCTL("w")); - BABLM(BABL_BROWSER_REOPEN_LAST_TAB, OMSFT(IMCTL(X_T))); - BABLM(BABL_BROWSER_NEXT_TAB, SS_LCTL(SS_TAP(X_TAB))); - BABLM(BABL_BROWSER_PREV_TAB, OMSFT(IMCTL(X_TAB))); - BABLM(BABL_BROWSER_URL_BAR, SS_LCTL("l")); - BABLM(BABL_BROWSER_FORWARD, IMALT(X_RIGHT)); - BABLM(BABL_BROWSER_BACK, IMALT(X_LEFT)); - BABLM(BABL_BROWSER_FIND, SS_LCTL("f")); - BABLM(BABL_BROWSER_BOOKMARK, SS_LCTL("d")); - BABLM(BABL_BROWSER_DEV_TOOLS, SS_LCTL("t")); // Chrome - // chrome - BABLM(BABL_BROWSER_RELOAD, IMCTL(X_F5)); // hard reload w/o cache - BABLM(BABL_BROWSER_FULLSCREEN, SS_TAP(X_F11)); // command shift F - BABLM(BABL_BROWSER_ZOOM_IN, OMSFT(IMCTL(X_EQUAL))); // ctr+ + - BABLM(BABL_BROWSER_ZOOM_OUT, IMCTL(X_MINUS)); - BABLM(BABL_BROWSER_VIEWSRC, SS_LCTL("u")); // Chrome or firefox -# endif -# ifdef BABL_APP - BABLM(BABL_APP_SAVE, SS_LCTL("s")); - // on linux we'd probably use tmux or screen. Some terminal software also - // allows this. - // BABLM( BABL_SPLIT_FRAME_VERT, () ); - // BABLM( BABL_UNSPLIT_FRAME_VERT, () ); - // BABLM( BABL_SPLIT_FRAME_HORIZONTAL, () ); - // BABLM( BABL_UNSPLIT_FRAME_HORIZONTAL, () ); - // BABLM( BABL_NEXT_FRAME, () ); - // BABLM( BABL_PREV_FRAME, () ); -# endif - - // Todo, ring bell, flash light, show user this isn't supported - return false; -} - -# endif /* linux mode */ -#endif diff --git a/users/miles2go/babl_mac.c b/users/miles2go/babl_mac.c deleted file mode 100644 index fd67172cc8..0000000000 --- a/users/miles2go/babl_mac.c +++ /dev/null @@ -1,152 +0,0 @@ -/* A library to output the right key shortcut in any common app. -Given a global variable babble_mode to show the environment and a -key that calls the paste macro, do the right type of paste. -Setting the context is done by another macro, or TBD interaction with the host. - -Huge thanks to https://en.wikipedia.org/wiki/Table_of_keyboard_shortcuts -and https://github.com/qmk/qmk_firmware/blob/master/keyboards/planck/keymaps/jeebak/keymap.c -*/ - -#include QMK_KEYBOARD_H - -#ifdef USE_BABBLEPASTE -# include "babblePaste.h" - -# ifdef BABL_MAC - -bool babblePaste_mac(uint16_t keycode) { -# ifdef BABL_MOVE - BABLM(BABL_GO_LEFT_1C, SS_TAP(X_LEFT)); - BABLM(BABL_GO_RIGHT_1C, SS_TAP(X_RIGHT)); - BABLM(BABL_GO_LEFT_WORD, IMALT(X_LEFT)); - BABLM(BABL_GO_RIGHT_WORD, IMALT(X_RIGHT)); - BABLM(BABL_GO_START_LINE, IMGUI(X_LEFT)); - BABLM(BABL_GO_END_LINE, IMGUI(X_RIGHT)); - BABLM(BABL_GO_START_DOC, IMGUI(X_UP)); - BABLM(BABL_GO_END_DOC, IMGUI(X_DOWN)); - BABLM(BABL_GO_NEXT_LINE, SS_TAP(X_DOWN)); - BABLM(BABL_GO_PREV_LINE, SS_TAP(X_UP)); - BABLM(BABL_GO_PARA_START, IMALT(X_UP)); - BABLM(BABL_DEL_RIGHT_1C, SS_TAP(X_DELETE)); - BABLM(BABL_GO_PARA_END, IMALT(X_DOWN)); - BABLM(BABL_PGDN, SS_TAP(X_PGDN)); - BABLM(BABL_PGUP, SS_TAP(X_PGUP)); - BABLM(BABL_DEL_LEFT_WORD, IMALT(X_BACKSPACE)); - BABLM(BABL_DEL_RIGHT_WORD, IMALT(X_DELETE)); - BABLM(BABL_DEL_TO_LINE_END, OMSFT(IMGUI(X_RIGHT)) SS_TAP(X_BACKSPACE)); // this is more app agnostic than ctrl-k - BABLM(BABL_DEL_TO_LINE_START, OMSFT(IMGUI(X_LEFT)) SS_TAP(X_BACKSPACE)); - BABLM(BABL_MODE, "Mac "); -# endif -# ifdef BABL_OSKEYS - BABLM(BABL_UNDO, SS_LGUI("z")); - BABLM(BABL_REDO, SS_LGUI("y")); - BABLM(BABL_CUT, SS_LGUI("x")); - BABLM(BABL_COPY, SS_LGUI("c")); - BABLM(BABL_PASTE, SS_LGUI("v")); - BABLM(BABL_SELECT_ALL, SS_LGUI("a")); - BABLM(BABL_FIND, SS_LGUI("f")); - BABLM(BABL_FIND_NEXT, SS_LGUI("g")); - // BABLM( BABL_FIND_NEXT, OMSFT(X_F4)) ); // Mac office - BABLM(BABL_FIND_PREV, OMSFT(IMGUI(X_G))); // Sublime, browser - BABLM(BABL_FIND_PREV, SS_LGUI("g")); - BABLM(BABL_FIND_REPLACE, SS_LGUI("f")); - BABLM(BABL_RUNAPP, SS_LGUI(" ")); - BABLM(BABL_SWITCH_APP_NEXT, IMGUI(X_TAB)); - BABLM(BABL_SWITCH_APP_LAST, OMSFT(IMGUI(X_TAB))); - // Apps vary, but this is usually tab movement, same as B_NXTB - /* - BABLM( BABL_WINDOW_NEXT, OMSFT(IMGUI(X_RIGHT_BRACKET)) ); // GUI Grav isn't everywhere - BABLM( BABL_WINDOW_PREV, OMSFT(IMGUI(X_LEFT_BRACKET)) ); - */ - BABLM(BABL_WINDOW_NEXT, IMGUI(X_GRAVE)); - BABLM(BABL_WINDOW_PREV, OMSFT(IMGUI(X_GRAVE))); - BABLM(BABL_WINDOW_NEW, IMGUI(X_N)); - BABLM(BABL_CLOSE_APP, SS_LGUI("q")); - BABLM(BABL_HELP, OMSFT(IMGUI(X_SLASH))); - // Locking screen from external keyboard requires automator https://apple.stackexchange.com/questions/73995 - BABLM(BABL_LOCK, OMCTL(IMALT(X_L))); - BABLM(BABL_SCREENCAPTURE, OMSFT(OMGUI(IMALT(X_4))) IMGUI(X_SPACE) "preview" SS_LGUI("d")); - BABLM(BABL_SWITCH_KEYBOARD_LAYOUT, IMCTL(X_SPACE)); -# endif -# ifdef BABL_BROWSER - BABLM(BABL_BROWSER_NEW_TAB, IMGUI(X_T)); - BABLM(BABL_BROWSER_CLOSE_TAB, SS_LGUI("w")); - BABLM(BABL_BROWSER_REOPEN_LAST_TAB, OMSFT(SS_LGUI("t"))); - BABLM(BABL_BROWSER_NEXT_TAB, OMGUI(IMALT(X_RIGHT))); - BABLM(BABL_BROWSER_PREV_TAB, OMGUI(IMALT(X_LEFT))); - BABLM(BABL_BROWSER_URL_BAR, SS_LGUI("l")); - BABLM(BABL_BROWSER_FORWARD, IMGUI(X_RIGHT)); - BABLM(BABL_BROWSER_BACK, IMGUI(X_LEFT)); - BABLM(BABL_BROWSER_FIND, SS_LGUI("f")); - BABLM(BABL_BROWSER_BOOKMARK, SS_LGUI("d")); - BABLM(BABL_BROWSER_RELOAD, OMGUI(SS_LSFT("r"))); // hard reload w/o cache - BABLM(BABL_BROWSER_FULLSCREEN, OMGUI(SS_LCTL("p"))); - BABLM(BABL_BROWSER_ZOOM_IN, IMGUI(X_KP_PLUS)); // ctr+ + - BABLM(BABL_BROWSER_ZOOM_OUT, IMGUI(X_KP_MINUS)); -# ifdef BABL_BROWSER_CHROME - BABLM(BABL_BROWSER_VIEWSRC, SS_LGUI("u")); // Chrome or firefox - BABLM(BABL_BROWSER_DEV_TOOLS, OMGUI(SS_LALT("i"))); // Chrome or Firefox -# endif -# ifdef BABL_BROWSER_SAFARI - BABLM(BABL_BROWSER_VIEWSRC, OMGUI(IMALT(X_U))); // Safari - // BABLM( BABL_BROWSER_DEV_TOOLS, // No real equivalent for Safari -# endif -# endif // BABL_BROWSER - -# ifdef BABL_APP - BABLM(BABL_APP_SAVE, SS_LGUI("s")); -# ifdef BABL_APP_EDITOR -# ifdef BABL_APP_SUBLIME - BABLM(BABL_APP_MULTI_SELECT, OMCTL(IMGUI(X_G))); // add all occurences of current word to select. - BABLM(BABL_APP_PASTE_VALUES, OMSFT(IMGUI(X_V))); // paste with proper indenting. -# endif // sublime -# endif // editor - -# ifdef BABL_APP_CELLS -# ifdef BABL_APP_MSOFFICE - BABLM(BABL_APP_CENTER_ALIGN, IMGUI(X_E)); - // BABLM( BABL_APP_CLEAR_FORMATTING, OMCTL(IMGUI(X_G)) ); // this isn't native. https://support.office.com/en-us/article/Clear-all-text-formatting-C094C4DA-7F09-4CEA-9A8D-C166949C9C80#OfficeVersion=macOS - BABLM(BABL_APP_SCROLL_ACTIVE_CELL, IMCTL(X_BACKSPACE)); - BABLM(BABL_NEWLINE_IN_CELL, IMALT(X_ENTER)); - BABLM(BABL_INSERT_COMMENT, IMSFT(X_F2)); - BABLM(BABL_INSERT_COL_LEFT, IMCTL(X_I)); - BABLM(BABL_INSERT_ROW, OMCTL(IMSFT(X_KP_PLUS))); - BABLM(BABL_DELETE_ROW, IMCTL(X_KP_MINUS)); - BABLM(BABL_SELECT_COL, IMCTL(X_SPACE)); - BABLM(BABL_SELECT_ROW, IMSFT(X_SPACE)); -# endif // BABL_APP_MSOFFICE - -# ifdef BABL_APP_GOOGLE - BABLM(BABL_APP_CENTER_ALIGN, OMSFT(IMGUI(X_E))); - BABLM(BABL_APP_SCROLL_ACTIVE_CELL, IMCTL(X_BACKSPACE)); - BABLM(BABL_NEWLINE_IN_CELL, IMALT(X_ENTER)); - BABLM(BABL_INSERT_COMMENT, IMSFT(X_F2)); - BABLM(BABL_APP_CLEAR_FORMATTING, IMGUI(X_BACKSLASH)); - BABLM(BABL_DELETE_ROW, OMCTL(IMGUI(X_G))); - BABLM(BABL_INSERT_COL_LEFT, OMALT(IMCTL(X_I)) "c"); // o for to the right. - BABLM(BABL_INSERT_ROW, OMALT(IMCTL(X_I)) "b"); // r for above. - BABLM(BABL_SELECT_COL, IMCTL(X_SPACE)); - BABLM(BABL_SELECT_ROW, IMSFT(X_SPACE)); - BABLM(BABL_DELETE_ROW, OMALT(IMCTL(X_KP_MINUS))); // once selected -# endif // BABL_APP_GOOGLE -/* -#ifdef BABL_APP_APPLE - // you're on your own. -#endif -*/ -# endif // BABL_APP_CELLS - -# ifdef BABL_APP_WINDOWSPLITTING - // These are for os X terminal, and are pretty useless. - BABLM(BABL_SPLIT_FRAME_HORIZONTAL, SS_LGUI("d")); - BABLM(BABL_UNSPLIT_FRAME_HORIZONTAL, OMSFT(IMGUI(X_D))); -# endif // BABL_APP_WINDOWSPLITTING - -# endif // BABL_APP - - // Todo, ring bell, flash light, show user this isn't supported - return false; -} - -# endif /* mac mode*/ -#endif // Babblepaste diff --git a/users/miles2go/babl_nano.c b/users/miles2go/babl_nano.c deleted file mode 100644 index 7b10f0d3cb..0000000000 --- a/users/miles2go/babl_nano.c +++ /dev/null @@ -1,77 +0,0 @@ -/* A library to output the right key shortcut in any common app. -Given a global variable babble_mode to show the environment and a -key that calls the paste macro, do the right type of paste. -Setting the context is done by another macro, or TBD interaction with the host. - -Nano mode is probably most useful for people who don't usually use Nano, but -sometimes find themselves using it. - -https://www.nano-editor.org/dist/latest/cheatsheet.html -*/ - -#include QMK_KEYBOARD_H - -#ifdef USE_BABBLEPASTE -# include "babblePaste.h" - -# ifdef BABL_NANO - -// probably should allow meta to not be ALT -# define DMETA IMALT - -bool babblePaste_nano(uint16_t keycode) { -# ifdef BABL_MOVE - BABLM(BABL_GO_LEFT_1C, SS_LCTL("b")); - BABLM(BABL_GO_RIGHT_1C, SS_LCTL("f")); - BABLM(BABL_GO_LEFT_WORD, IMCTL(X_LEFT)); - BABLM(BABL_GO_RIGHT_WORD, IMCTL(X_RIGHT)); - BABLM(BABL_GO_START_LINE, SS_LCTL("a")); - BABLM(BABL_GO_END_LINE, SS_LCTL("e")); - BABLM(BABL_GO_START_DOC, IMALT(X_BSLS)); - BABLM(BABL_GO_END_DOC, IMALT(X_SLASH)); - BABLM(BABL_GO_NEXT_LINE, SS_LCTL("n")); - BABLM(BABL_GO_PREV_LINE, SS_LCTL("p")); - BABLM(BABL_GO_PARA_START, IMCTL(X_UP)); - BABLM(BABL_GO_PARA_END, IMCTL(X_DOWN)); - BABLM(BABL_PGDN, SS_LCTL("v")); - BABLM(BABL_PGUP, SS_LCTL("y")); - BABLM(BABL_DEL_RIGHT_1C, SS_LCTL("d")); - BABLM(BABL_DEL_LEFT_WORD, IMCTL(X_BSPC)); - BABLM(BABL_DEL_RIGHT_WORD, IMCTL(X_DEL)); - // BABLM(BABL_DEL_TO_LINE_END, SS_LCTL("k")); - // BABLM(BABL_DEL_TO_LINE_START, SS_TAP(X_ESCAPE) "0" SS_LCTL("k")); - BABLM(BABL_MODE, "Nano "); -# endif -# ifdef BABL_OSKEYS - BABLM(BABL_UNDO, SS_LALT("u")); - BABLM(BABL_REDO, SS_LALT("e")); - BABLM(BABL_CUT, SS_LCTL("k")); // arguably b/c line based, not selection - BABLM(BABL_COPY, SS_LALT("6")); // arguably - BABLM(BABL_PASTE, SS_LCTL("u")); - // BABLM(BABL_SELECT_ALL, SS_LCTL("x") "h"); - BABLM(BABL_FIND, SS_LCTL("w")); - BABLM(BABL_FIND_NEXT, SS_LALT("w")); - BABLM(BABL_FIND_PREV, SS_LALT("q")); - BABLM(BABL_FIND_REPLACE, SS_LALT("r")); - BABLM(BABL_RUNAPP, SS_LCTL("t")); - BABLM(BABL_WINDOW_NEXT, OMALT(IMSFT(X_DOT))); - BABLM(BABL_WINDOW_PREV, OMALT(IMSFT(X_COMMA))); - BABLM(BABL_WINDOW_NEW, IMCTL(X_R) IMALT(X_F)); // - BABLM(BABL_CLOSE_APP, SS_LCTL("x")); - BABLM(BABL_HELP, SS_LCTL("g")); - - // BABLM( BABL_LOCK, () ); // lock buffer? Too many options. - // BABLM( BABL_SCREENCAPTURE, () ); // requires plugin? - -# endif - -# ifdef BABL_APP - BABLM(BABL_APP_SAVE, SS_LCTL("s")); // save file blurs app & os. Move? - BABLM(BABL_APP_SET_MARK, SS_LALT("a")); -# endif - - // Todo, ring bell, flash light, show user this isn't supported - return false; -} -# endif /* nano mode*/ -#endif diff --git a/users/miles2go/babl_readmux.c b/users/miles2go/babl_readmux.c deleted file mode 100644 index c303912c91..0000000000 --- a/users/miles2go/babl_readmux.c +++ /dev/null @@ -1,86 +0,0 @@ -// Readline command line editing + tmux windowing -// I haven't decided how much to do readline and how much tmux -// see https://tiswww.case.edu/php/chet/readline/rluserman.html for other possible -// keybindings. - -#include QMK_KEYBOARD_H - -#ifdef USE_BABBLEPASTE -# include "babblePaste.h" - -# ifdef BABL_READMUX - -// Redefine if you use something other than CTRL-B to activate tmux. -# define TMUX SS_LCTL("b") - -bool babblePaste_readmux(uint16_t keycode) { -# ifdef BABL_MOVE - BABLM(BABL_GO_LEFT_1C, SS_TAP(X_LEFT)); - BABLM(BABL_GO_RIGHT_1C, SS_TAP(X_RIGHT)); - BABLM(BABL_GO_LEFT_WORD, SS_LALT("b")); - BABLM(BABL_GO_RIGHT_WORD, SS_LALT("f")); - BABLM(BABL_GO_START_LINE, SS_LCTL("a")); - BABLM(BABL_GO_END_LINE, SS_LCTL("e")); - // BABLM( BABL_GO_START_DOC ,END );// tmux? - // BABLM( BABL_GO_END_DOC ,END ); // tmux? - BABLM(BABL_GO_NEXT_LINE, SS_LCTL("n")); - BABLM(BABL_GO_PREV_LINE, SS_LCTL("p")); - // BABLM( BABL_GO_PARA_START, // undefined - // BABLM( BABL_GO_PARA_END, // undefinedBABLM( BABL_PGDN , - - BABLM(BABL_PGUP, SS_TAP(X_PGUP)); - BABLM(BABL_PGDN, SS_TAP(X_PGDN)); - BABLM(BABL_DEL_RIGHT_1C, SS_LCTL("d")); - BABLM(BABL_DEL_LEFT_WORD, SS_LCTL("w")); // meta-DEL instead? - BABLM(BABL_DEL_RIGHT_WORD, SS_LALT("d")); - BABLM(BABL_DEL_TO_LINE_END, SS_LCTL("k")); - BABLM(BABL_DEL_TO_LINE_START, SS_LCTL("u")); - BABLM(BABL_MODE, "Readline "); -# endif -# ifdef BABL_OSKEYS - BABLM(BABL_UNDO, SS_LALT("r")); - BABLM(BABL_REDO, SS_LCTL("x") "c"); // arguably - BABLM(BABL_CUT, SS_LCTL("k")); // wrong half the time - // BABLM( BABL_COPY ,END ); - BABLM(BABL_PASTE, SS_LCTL("y")); - BABLM(BABL_SELECT_ALL, SS_LCTL("aky")); - BABLM(BABL_FIND, SS_LCTL("r")); // search history - BABLM(BABL_FIND_NEXT, SS_LCTL("r")); - BABLM(BABL_FIND_PREV, SS_LCTL("s")); - // BABLM( BABL_FIND_REPLACE ,END ); // not offered in readline - BABLM(BABL_RUNAPP, TMUX "c"); // tmux - BABLM(BABL_SWITCH_APP_NEXT, TMUX "n"); // tmux - BABLM(BABL_SWITCH_APP_LAST, TMUX "p"); // tmux - BABLM(BABL_CLOSE_APP, TMUX "d"); // usually what I want - BABLM(BABL_HELP, TMUX IMSFT(X_SLASH)); - BABLM(BABL_LOCK, TMUX "L"); // assuming you set up VLOCK yourself - BABLM(BABL_SCREENCAPTURE, TMUX ":capture-pane"); -# endif -# ifdef BABL_BROWSER -/* Add lynx shortcuts, brow.sh? - */ -# ifdef BABL_MAC - // this is stock OS X Terminal, alter for windows &etc. - BABLM(BABL_BROWSER_NEW_TAB, IMGUI(X_T)); - BABLM(BABL_BROWSER_CLOSE_TAB, SS_LGUI("w")); - BABLM(BABL_BROWSER_NEXT_TAB, IMCTL(X_TAB)); - BABLM(BABL_BROWSER_PREV_TAB, OMSFT(IMCTL(X_TAB))); -# endif -# endif -# ifdef BABL_APP - // Save makes no sense here - BABLM(BABL_SPLIT_FRAME_VERT, TMUX IMSFT(X_5)); - // BUG - misleading. This is currently set to convert frame to a window. - BABLM(BABL_UNSPLIT_FRAME_VERT, TMUX IMSFT(X_1)); - BABLM(BABL_SPLIT_FRAME_HORIZONTAL, TMUX IMSFT(X_QUOTE)); - // This one closes the current pane. - BABLM(BABL_UNSPLIT_FRAME_HORIZONTAL, SS_LCTL("b") "x"); - BABLM(BABL_NEXT_FRAME, SS_LCTL("b") "o"); - BABLM(BABL_PREV_FRAME, SS_LCTL("w") SS_TAP(X_SEMICOLON)); -# endif - - // Todo, ring bell, flash light, show user this isn't supported - return false; -} -# endif /* readmux*/ -#endif diff --git a/users/miles2go/babl_vi.c b/users/miles2go/babl_vi.c deleted file mode 100644 index 3209525af0..0000000000 --- a/users/miles2go/babl_vi.c +++ /dev/null @@ -1,77 +0,0 @@ -/* -Vi is stateful, so you have to track the modes yourself. Otherwise motion is awful (bell, bell, bell) - -*/ - -#include QMK_KEYBOARD_H - -#ifdef USE_BABBLEPASTE -# include "babblePaste.h" - -# ifdef BABL_VI - -bool babblePaste_vi(uint16_t keycode) { -# ifdef BABL_MOVE - BABLM(BABL_GO_LEFT_1C, "h"); - BABLM(BABL_GO_RIGHT_1C, "l"); - BABLM(BABL_GO_LEFT_WORD, "b"); - BABLM(BABL_GO_RIGHT_WORD, "w"); - BABLM(BABL_GO_START_LINE, IMSFT(X_6)); - BABLM(BABL_GO_END_LINE, IMSFT(X_4)); - BABLM(BABL_GO_START_DOC, "gg"); - BABLM(BABL_GO_END_DOC, IMSFT(X_G)); - BABLM(BABL_GO_NEXT_LINE, "j"); - BABLM(BABL_GO_PREV_LINE, "k"); - BABLM(BABL_GO_PARA_START, IMSFT(X_LEFT_BRACKET)); - BABLM(BABL_GO_PARA_END, IMSFT(X_RIGHT_BRACKET)); - BABLM(BABL_PGDN, SS_LCTL("f")); - BABLM(BABL_PGUP, SS_LCTL("b")); - BABLM(BABL_DEL_RIGHT_1C, "x"); - BABLM(BABL_DEL_LEFT_WORD, "dge"); - BABLM(BABL_DEL_RIGHT_WORD, "dw"); - BABLM(BABL_DEL_TO_LINE_END, "d" IMSFT(X_4)); - BABLM(BABL_DEL_TO_LINE_START, "d" IMSFT(X_6)); - BABLM(BABL_MODE, "Vi "); -# endif -# ifdef BABL_OSKEYS - BABLM(BABL_UNDO, "h"); - BABLM(BABL_REDO, SS_LCTL("r")); - BABLM(BABL_CUT, "x"); - BABLM(BABL_COPY, "y"); - BABLM(BABL_PASTE, "p"); - BABLM(BABL_SELECT_ALL, IMSFT(X_SEMICOLON) SS_TAP(X_5) "y"); // wrong but helpful? - BABLM(BABL_FIND, SS_TAP(X_SLASH)); - BABLM(BABL_FIND_NEXT, "n"); - BABLM(BABL_FIND_PREV, IMSFT(X_N)); - BABLM(BABL_FIND_REPLACE, OMALT(IMSFT(X_5))); - BABLM(BABL_RUNAPP, ":split"); // requires VIM, is vsplit better? - BABLM(BABL_SWITCH_APP_NEXT, IMCTL(X_DOWN)); // Or Right? - BABLM(BABL_SWITCH_APP_NEXT, IMCTL(X_UP)); // or Left? - BABLM(BABL_CLOSE_APP, IMCTL(X_SEMICOLON) "q"); - BABLM(BABL_HELP, SS_LSFT(SS_TAP(X_SEMICOLON)) "h"); // start search in help - // BABLM( BABL_LOCK, () ); Perhaps VI is not an OS? - // BABLM( BABL_SCREENCAPTURE, () ); // capture a buffer? -# endif - -# ifdef BABL_BROWSER -/* what _is_ the VI browser now that vimpirator is dead?*/ -# endif - -# ifdef BABL_APP - BABLM(BABL_APP_SAVE, SS_TAP(X_ESCAPE) ":w"); - BABLM(BABL_APP_SET_MARK, SS_TAP(X_ESCAPE) "ma"); // real vi people probably want multiple marks,not just a -# ifdef BABL_APP_WINDOWSPLITTING - BABLM(BABL_SPLIT_FRAME_VERT, SS_TAP(X_ESCAPE) ":vsplit"); - BABLM(BABL_UNSPLIT_FRAME_VERT, SS_TAP(X_ESCAPE) ":hide"); // debatable. - BABLM(BABL_SPLIT_FRAME_HORIZONTAL, SS_TAP(X_ESCAPE) ":vsplit"); - BABLM(BABL_UNSPLIT_FRAME_HORIZONTAL, SS_TAP(X_ESCAPE) ":hide"); - BABLM(BABL_NEXT_FRAME, SS_LCTL("w") "w"); - BABLM(BABL_PREV_FRAME, SS_LCTL("w") SS_LSFT("w")); -# endif -# endif // app - // Todo, ring bell, flash light, show user this isn't supported - return false; -} - -# endif // VI -#endif // Babblepaste diff --git a/users/miles2go/babl_windows.c b/users/miles2go/babl_windows.c deleted file mode 100644 index e435d1a3af..0000000000 --- a/users/miles2go/babl_windows.c +++ /dev/null @@ -1,151 +0,0 @@ -/* A library to output the right key shortcut in any common app. -Given a global variable babble_mode to show the environment and a -key that calls the paste macro, do the right type of paste. -Setting the context is done by another macro, or TBD interaction with the host. - -Huge thanks to https://en.wikipedia.org/wiki/Table_of_keyboard_shortcuts -https://support.microsoft.com/en-gb/help/12445/windows-keyboard-shortcuts - -Remember to check https://github.com/qmk/qmk_firmware/blob/master/quantum/send_string_keycodes.h - -*/ - -#include QMK_KEYBOARD_H - -#ifdef USE_BABBLEPASTE -# include "babblePaste.h" - -# ifdef BABL_WINDOWS - -bool babblePaste_win(uint16_t keycode) { -# ifdef BABL_MOVE - BABLM(BABL_GO_LEFT_1C, SS_TAP(X_LEFT)); - BABLM(BABL_GO_RIGHT_1C, SS_TAP(X_RIGHT)); - BABLM(BABL_GO_LEFT_WORD, IMCTL(X_LEFT)); - BABLM(BABL_GO_RIGHT_WORD, IMCTL(X_RIGHT)); - BABLM(BABL_GO_START_LINE, IMGUI(X_LEFT)); - BABLM(BABL_GO_END_LINE, IMGUI(X_RIGHT)); - BABLM(BABL_GO_START_DOC, OMGUI(IMCTL(X_LEFT))); - BABLM(BABL_GO_END_DOC, OMGUI(IMCTL(X_RIGHT))); - BABLM(BABL_GO_NEXT_LINE, SS_TAP(X_DOWN)); - BABLM(BABL_GO_PREV_LINE, SS_TAP(X_UP)); - BABLM(BABL_GO_PARA_START, IMCTL(X_UP)); - BABLM(BABL_GO_PARA_END, IMCTL(X_DOWN)); - BABLM(BABL_PGDN, SS_TAP(X_PGDN)); - BABLM(BABL_PGUP, SS_TAP(X_PGUP)); - BABLM(BABL_DEL_RIGHT_1C, SS_TAP(X_DELETE)); - BABLM(BABL_DEL_LEFT_WORD, IMCTL(X_BACKSPACE)); - BABLM(BABL_DEL_RIGHT_WORD, IMCTL(X_DELETE)); - BABLM(BABL_DEL_TO_LINE_END, IMSFT(X_HOME) SS_TAP(X_DELETE)); - BABLM(BABL_DEL_TO_LINE_START, IMSFT(X_END) SS_TAP(X_DELETE)); - BABLM(BABL_MODE, "Windows "); -# endif - -# ifdef BABL_OSKEYS - BABLM(BABL_UNDO, SS_LCTL("z")); - BABLM(BABL_REDO, SS_LCTL("y")); - BABLM(BABL_CUT, SS_LCTL("x")); - BABLM(BABL_COPY, SS_LCTL("c")); - BABLM(BABL_PASTE, SS_LCTL("v")); - BABLM(BABL_SELECT_ALL, SS_LCTL("a")); - BABLM(BABL_FIND, SS_LCTL("f")); - BABLM(BABL_FIND_NEXT, SS_TAP(X_F3)); - // BABLM( BABL_FIND_PREV, SS_TAP(X_F3) ); // doesn't have a standard one? - BABLM(BABL_FIND_REPLACE, SS_LCTL("h")); - BABLM(BABL_RUNAPP, SS_LGUI("r")); - BABLM(BABL_SWITCH_APP_NEXT, IMALT(X_TAB)); - BABLM(BABL_SWITCH_APP_LAST, OMSFT(IMALT(X_TAB))); - BABLM(BABL_WINDOW_NEXT, IMCTL(X_TAB)); - BABLM(BABL_WINDOW_PREV, OMSFT(IMCTL(X_TAB))); - BABLM(BABL_WINDOW_NEW, IMCTL(X_N)); - BABLM(BABL_CLOSE_APP, IMALT(X_F4)); - BABLM(BABL_HELP, SS_TAP(X_F1)); - BABLM(BABL_LOCK, SS_LGUI("l")); - BABLM(BABL_SCREENCAPTURE, OMSFT(SS_LGUI("s"))); - BABLM(BABL_SWITCH_KEYBOARD_LAYOUT, IMGUI(X_SPACE)); - -# endif - -# ifdef BABL_BROWSER - BABLM(BABL_BROWSER_NEW_TAB, SS_LCTL("t")); - BABLM(BABL_BROWSER_CLOSE_TAB, SS_LCTL("w")); - BABLM(BABL_BROWSER_REOPEN_LAST_TAB, OMSFT(IMCTL(X_T))); - BABLM(BABL_BROWSER_NEXT_TAB, IMCTL(X_TAB)); - BABLM(BABL_BROWSER_PREV_TAB, OMSFT(IMCTL(X_TAB))); - BABLM(BABL_BROWSER_URL_BAR, SS_LCTL("l")); - BABLM(BABL_BROWSER_FORWARD, IMALT(X_RIGHT)); - BABLM(BABL_BROWSER_BACK, OMSFT(IMALT(X_LEFT))); - ; - BABLM(BABL_BROWSER_FIND, SS_LCTL("f")); - BABLM(BABL_BROWSER_BOOKMARK, SS_LCTL("d")); -# ifdef BABL_BROWSER_MS - BABLM(BABL_BROWSER_DEV_TOOLS, IMCTL(X_F12)); // EDGE -# else - BABLM(BABL_BROWSER_DEV_TOOLS, SS_LCTL("t")); // Chrome - BABLM(BABL_BROWSER_VIEWSRC, SS_LCTL("u")); // Chrome or firefox -# endif - // chrome - BABLM(BABL_BROWSER_RELOAD, IMCTL(X_F5)); // hard reload w/o cache - BABLM(BABL_BROWSER_FULLSCREEN, SS_TAP(X_F11)); // command shift F - BABLM(BABL_BROWSER_ZOOM_IN, OMSFT(IMCTL(X_EQUAL))); // ctr+ + - BABLM(BABL_BROWSER_ZOOM_OUT, IMCTL(X_MINUS)); - -# endif - -# ifdef BABL_APP - BABLM(BABL_APP_SAVE, SS_LCTL("s")); -# ifdef BABL_APP_EDITOR -# ifdef BABL_APP_SUBLIME - // http://sweetme.at/2013/08/08/sublime-text-keyboard-shortcuts/ - BABLM(BABL_APP_MULTI_SELECT, IMALT(X_F3)); // add all occurences of current word to select. - BABLM(BABL_APP_PASTE_VALUES, OMSFT(IMCTL(X_V))); // paste with proper indenting. -# endif // sublime -# endif // editor - -# ifdef BABL_APP_CELLS -# ifdef BABL_APP_MSOFFICE -# ifndef BABL_APP_SUBLIME - BABLM(BABL_APP_PASTE_VALUES, OMCTL(IMALT(X_V)) "v"); -# endif - BABLM(BABL_APP_CENTER_ALIGN, IMALT(X_H) "ac"); - // BABLM( BABL_APP_CLEAR_FORMATTING, OMCTL(IMGUI(X_G)) ); // this isn't native. https://support.office.com/en-us/article/Clear-all-text-formatting-C094C4DA-7F09-4CEA-9A8D-C166949C9C80#OfficeVersion=macOS - BABLM(BABL_APP_SCROLL_ACTIVE_CELL, IMCTL(X_BACKSPACE)); - BABLM(BABL_NEWLINE_IN_CELL, IMALT(X_ENTER)); - BABLM(BABL_INSERT_COMMENT, IMSFT(X_F2)); - BABLM(BABL_INSERT_COL_LEFT, OMCTL(IMSFT(X_KP_PLUS))); - BABLM(BABL_INSERT_ROW, OMCTL(IMSFT(X_KP_PLUS))); - BABLM(BABL_DELETE_ROW, IMCTL(X_KP_MINUS)); - BABLM(BABL_SELECT_COL, IMCTL(X_SPACE)); - BABLM(BABL_SELECT_ROW, IMSFT(X_SPACE)); -# endif - -# ifdef BABL_APP_GOOGLE - BABLM(BABL_APP_CENTER_ALIGN, OMSFT(IMCTL(X_E))); - BABLM(BABL_APP_SCROLL_ACTIVE_CELL, IMCTL(X_BACKSPACE)); - BABLM(BABL_NEWLINE_IN_CELL, IMALT(X_ENTER)); - BABLM(BABL_INSERT_COMMENT, IMSFT(X_F2)); - BABLM(BABL_APP_CLEAR_FORMATTING, IMCTL(X_BACKSLASH)); - BABLM(BABL_DELETE_ROW, IMALT(X_E) "d"); - BABLM(BABL_INSERT_COL_LEFT, OMALT(IMCTL(X_I)) "c"); // o for to the right. - BABLM(BABL_INSERT_ROW, IMALT(IMCTL(X_I)) "w"); // r for above. - BABLM(BABL_SELECT_COL, IMCTL(X_SPACE)); - BABLM(BABL_SELECT_ROW, IMSFT(X_SPACE)); - BABLM(BABL_DELETE_ROW, OMALT(IMCTL(X_KP_MINUS))); // once selected -# endif - -# endif // BABL_APP_CELLS - - // BABLM( BABL_SPLIT_FRAME_VERT, () );// no windows way? - // BABLM( BABL_UNSPLIT_FRAME_VERT, () ); - BABLM(BABL_SPLIT_FRAME_HORIZONTAL, OMALT(IMCTL(X_S))); // word only - BABLM(BABL_UNSPLIT_FRAME_HORIZONTAL, OMSFT(IMALT(X_C))); // word - // BABLM( BABL_NEXT_FRAME, () );//no windows way? - // BABLM( BABL_PREV_FRAME, () );// no windows way? -# endif - - // Todo, ring bell, flash light, show user this isn't supported - return false; -} - -# endif /* BABL_WINDOWS*/ -#endif /* babblepaste */ \ No newline at end of file diff --git a/users/miles2go/config.h b/users/miles2go/config.h deleted file mode 100644 index dad7acad10..0000000000 --- a/users/miles2go/config.h +++ /dev/null @@ -1,60 +0,0 @@ -#pragma once - -#ifdef RGBLIGHT_ENABLE -#define RGBLIGHT_SLEEP -#undef RGBLIGHT_EFFECT_RAINBOW_MOOD -#undef RGBLIGHT_EFFECT_RAINBOW_SWIRL -#undef RGBLIGHT_EFFECT_SNAKE -#undef RGBLIGHT_EFFECT_KNIGHT -#undef RGBLIGHT_EFFECT_CHRISTMAS -#undef RGBLIGHT_EFFECT_STATIC_GRADIENT -#undef RGBLIGHT_EFFECT_RGB_TEST -#undef RGBLIGHT_EFFECT_ALTERNATING -#undef RGBLIGHT_EFFECT_TWINKLE - -#define RGBLIGHT_EFFECT_BREATHING -#endif // RGBLIGHT_ENABLE - -#undef FORCE_NKRO - -#ifndef TAPPING_TOGGLE -#define TAPPING_TOGGLE 3 -#endif - -#ifdef TAPPING_TERM - #undef TAPPING_TERM -#endif // TAPPING_TERM -#define TAPPING_TERM 200 -//if no chord during tapping term, do the keystroke -#define RETRO_TAPPING - -// Disable action_get_macro and fn_actions, since we don't use these -// and it saves on space in the firmware. -// LTO_ENABLE automatically enables these -//#define NO_ACTION_MACRO -//#define NO_ACTION_FUNCTION -#define MACRO_TIMER 5 - - - -#define USE_BABBLEPASTE -// All options -#define BABL_MODSWAP -#define BABL_MOVE // Uncomment to add basic cursor movement -#define BABL_OSKEYS // This adds Cut, paste, window movement and common OS shortcuts -#define BABL_BROWSER // Browser shortcuts, with Chrome/Firefox as the default. -// edit the appropriate OS config file to enable Safari, Edge, vimpirator &etc. -#define BABL_APP // Application specific settings this has sub-options. -#define BABL_APP_CELLS // spreadsheets and tables -#define BABL_APP_EDITOR // Fancy editor commands -#define BABL_APP_WINDOWSPLITTING // splitting frames & windows - -//All OSes - -//#define BABL_WINDOWS -#define BABL_READMUX -//#define BABL_VI -#define BABL_MAC -#define BABL_LINUX -//#define BABL_EMACS -#define BABL_CHROMEOS diff --git a/users/miles2go/keymaps/handwired/ms_sculpt_mobile/config.h b/users/miles2go/keymaps/handwired/ms_sculpt_mobile/config.h deleted file mode 100644 index 552e98ba2e..0000000000 --- a/users/miles2go/keymaps/handwired/ms_sculpt_mobile/config.h +++ /dev/null @@ -1,50 +0,0 @@ -#pragma once - -// Expect to get errors if you comment a feature out and leave it in your keymap. -#define USE_BABLPASTE - -#ifdef USE_BABLPASTE - -#ifdef RGBLIGHT_ENABLE -#define BABL_LED_INDEX 0 // set to 0 to set all LEDs , or set to # of LED to be used as BABL updaters -#define RGBLIGHT_COLOR_MS 0x00,0x27,0x88 // blue screen? -#define RGBLIGHT_COLOR_MAC 0xF0,0xF0,0xF0 // grey -#define RGBLIGHT_COLOR_LINUX 0xF4,0xAA,0x90 // ubuntu orange? -#define RGBLIGHT_COLOR_EMACS 0x00,0x00,0x00 -#define RGBLIGHT_COLOR_VI 0x00,0x90,0x00 -#define RGBLIGHT_COLOR_READMUX 0x33,0xFF,0x33 // green screen -#define RGBLIGHT_COLOR_CHROMEOS 0xf4,0xc2,0xd // google yellows -#endif - -#endif // bablpaste - - - -// place overrides here -#define RGBLED_NUM 2 -#define RGBLIGHT_LIMIT_VAL 200 -#ifdef RGBLIGHT_ENABLE -#define RGBLIGHT_COLOR_LAYER_0 0x00, 0xFF, 0x00 // qwerty -#define RGBLIGHT_COLOR_LAYER_1 0x00, 0x99, 0x99 // cdh -#define RGBLIGHT_COLOR_LAYER_2 0xFF, 0x00, 0x00 // symbol -#define RGBLIGHT_COLOR_LAYER_3 0x00, 0xFF, 0xFF // move -#define RGBLIGHT_COLOR_LAYER_4 0xFF, 0x00, 0xFF // delmove -#define RGBLIGHT_COLOR_LAYER_5 0x00, 0xFF, 0xFF -#define RGBLIGHT_EFFECT_BREATHING -#define RGBLIGHT_EFFECT_RAINBOW_MOOD -#define RGBLIGHT_EFFECT_RAINBOW_SWIRL -#define RGBLIGHT_EFFECT_SNAKE -#define RGBLIGHT_EFFECT_KNIGHT -#define RGBLIGHT_EFFECT_CHRISTMAS -#define RGBLIGHT_EFFECT_STATIC_GRADIENT -#define RGBLIGHT_EFFECT_RGB_TEST -#define RGBLIGHT_EFFECT_ALTERNATING -#define RGBLIGHT_EFFECT_TWINKLE -#define RGB_LIGHT_EFFECT_BREATHE_MAX 200 -#define RGBLIGHT_RAINBOW_SWIRL_RANGE 127 -#endif // rgblight - -#define TAPPING_TERM 200 -#define TAPPING_TERM_PER_KEY -#define RETRO_TAPPING -//#define PERMISSIVE_HOLD diff --git a/users/miles2go/keymaps/handwired/ms_sculpt_mobile/keymap.c b/users/miles2go/keymaps/handwired/ms_sculpt_mobile/keymap.c deleted file mode 100644 index 12547ec508..0000000000 --- a/users/miles2go/keymaps/handwired/ms_sculpt_mobile/keymap.c +++ /dev/null @@ -1,461 +0,0 @@ -//placeholder until the new keymaps tree is built -//#include QMK_KEYBOARD_H - - -#include "virtser.h" -#include -#include "milestogo.h" - - -#define LAYOUT_local LAYOUT_mobile_XUW -#define LAYOUT LAYOUT_mobile_XUW - - -#ifndef USERSPACE_ACTIVE -enum layer_keycodes { - QWR = SAFE_RANGE, - CDH, - SYM, - MOV, - NUM, - TRAN -}; - -enum layer_names { -_QWR, -_CDH, -_SYM, -_MOV, -_TRAN -}; - -#endif - -// Shorter spacing -#define XXXX KC_NO -#define ____ KC_TRNS - -// Custom macros - -/* Fn Keys */ -#define TT_SYM MO(_SYM) -#define TT_NUM MO(_NUM) -#define SSFT ACTION_MODS_ONESHOT(MOD_LSFT) -#define SSYM LT(_SYM, KC_SPC) -#define MVTAB LT(_MOV,KC_TAB) -#define BKMV TT(_MOV) -#define MV2 LT(_MOV, KC_2) -#define MV3 LT(_MOV, KC_3) -#define MV4 LT(_MOV, KC_4) -#define MV8 LT(_MOV, KC_8) -#define MV9 LT(_MOV, KC_9) -#define MV0 LT(_MOV, KC_0) - - - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* QWERTY -* -* |ESC | F1 | F2 | F3 | F4 | F5 | F6 | f7 | F8 | F9 | F10| F11| F12|Vol-|Vol+|_CDH| -* -------------------------------------------------------------------------------' -* | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = |Bakspace| Del| -* --------------------------------------------------------------------------- -* | tab | q | w | e | r | t | y | u | i | o | p | [ | ] | \ | | -* -------------------------------------------------------------------------------' -* |Bak/Mov| a | s | d | f | g | h | j | k | l | ; | ' | enter |PgUp| -* -------------------------------------------------------------------------------- -* |Lsft | z | x | c | v | b | n | m | , | . | / | Rsft| Up| PgDn| -* --------------------------------------------------------------------------------- -* |Lctl |Lgui |Lalt | Space/Sym | GUI | Sym | Rctl |Left|Down|Rght| -* --------------------------------------------------------------------------------- -*/ - -[_QWERTY] = LAYOUT_local( -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_VOLD, KC_VOLU, TG(_CDH), -KC_GRAVE, 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_BSPC, KC_DEL, -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, -BKMV, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, -KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT,KC_SLSH,KC_RSFT, KC_UP, KC_PGDN, -KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, TT_SYM,KC_CDH, KC_LEFT, KC_DOWN, KC_RIGHT -), - - -[_CDH] = LAYOUT_local( -____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, -KC_GRAVE, KC_1, KC_2, KC_3 ,KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQL, KC_BSPC, KC_DEL, -KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, ____, ____, ____, -KC_LCTL, KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_ENT, KC_2, -KC_LSFT, KC_Z, KC_X, KC_C, DHPASTE,KC_V, KC_K, KC_H, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, ____, KC_1, -TG(_MOV), ____, ____ , ____, ____, ____, KC_QWERTY, ____, ____, ____ -), - -/* SYMBOL layer, several to chose from -*/ - -[_SYM] = LAYOUT_wrapper( -____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, -____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, -____, _________________EXCEL_L1__________________, _________________EXCEL_R1__________________, ____, ____, ____, -____, _________________EXCEL_L2__________________, _________________EXCEL_R2__________________, KC_GRV, ____, ____, -____, _________________EXCEL_L3__________________, _________________EXCEL_R3__________________, B_SAVE, ____, ____, -____, ____, ____, ____, ____, ____, ____, ____, ____, ____ -), - -#ifndef USE_BABLPASTE - -[_MOV] = LAYOUT_local( -____, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, ____ , -____, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, -____, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, KC_UP, XXXX, XXXX, XXXX, XXXX, XXXX, -____, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, KC_LEFT, KC_DOWN, KC_RIGHT,XXXX, XXXX, XXXX, XXXX, -____, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, -____, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX -) - -#else -/* MOVE babble version version - -* |ESC | MAC|Read|Linx| VI | | | | | | | | | | | | -* -------------------------------------------------------------------------------' -* | | | - | = |Bakspace| Del| -* --------------------------------------------------------------------------- -* | tab | | [ | ] | \ | | -* -------------------------------------------------------------------------------' -* |Bak/Mov| | ' |Launch App |PgUp| -* --------------------------------------------------------------------------------- -* |Lsft | | Rsft| Up| PgDn| -* --------------------------------------------------------------------------------- -* | |Lgui |Lalt | Exit Move Mode | GUI | Sym | Rctl |Left|Down|Rght| -* --------------------------------------------------------------------------------- -*/ -/* ,--------------------------------------------. ,--------------------------------------------. - * 01 | ESC |FindPrev| Find |FindNext| \n cell| |ParStart|LineStrt| Up | EOL | ParEnd | - * |--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------| - * 02 | SelA | Do_DEL | Shift | Undo |Hsplit+ | | WrdLft | Left | Down | Right | WrdRght| - * |--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------| - * 03 |Vspli+ | Cut | Copy | Paste | Paste | | WinPrv | Tab-- | NewTab | Tab++ | WinNxt | - * `--------------------------------------------' `--------------------------------------------' - */ - -[_MOV] = LAYOUT_wrapper( - ____, ____________BABBLE_SWITCH_L________________, ____________BABBLE_SWITCH_R________________, XXXX, XXXX, XXXX, XXXX, ____, - ____, ____________BABBLE_MOV_LNUM________________, ____________BABBLE_MOV_RNUM________________, XXXX, XXXX, XXXX, XXXX, - ____, ____________BABBLE_MOV_L1__________________, ____________BABBLE_MOV_R1__________________, XXXX, XXXX, XXXX, - ____, ____________BABBLE_MOV_L2__________________, ____________BABBLE_MOV_R2__________________, XXXX, B_RUNAPP, XXXX, - ____, ____________BABBLE_MOV_L3__________________, ____________BABBLE_MOV_R2__________________, XXXX, XXXX, XXXX, - ____, ____, ____, TG(_MOV), XXXX, XXXX, XXXX, XXXX, XXXX, XXXX -), -// Move in a direction, deleting as we go, or do opposite of Mov layer action */ -/* ,--------------------------------------------. ,--------------------------------------------. - * 01 | Esc | |Replace |MultiSel|PasteVal| | . |LineStrt| . | EOL | . | - * |--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------| - * 02 | | Do_Mov | Shift | Redo |Hsplit- | | WrdLft | Left | . | Right | WrdRght| - * |--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------| - * 03 |Vsplit- | Cut | Copy | Paste |Paste | | App-- | ZoomOut| NewWin | ZoomIn | App+ | - * `--------------------------------------------' `--------------------------------------------' - */ -[_DMOV] = LAYOUT_wrapper( - ____, ____________BABBLE_SWITCH_L________________, ____________BABBLE_SWITCH_R________________, XXXX, XXXX, XXXX, ____, - ____, ____________BABBLE_MOV_LNUM________________, ____________BABBLE_MOV_RNUM________________, XXXX, XXXX, XXXX, XXXX, - ____, _________BABBLE_DELMOV_L1__________________ , _________BABBLE_DELMOV_R1__________________ , XXXX, XXXX, XXXX, - ____, _________BABBLE_DELMOV_L2__________________ , _________BABBLE_DELMOV_R2__________________ , XXXX, XXXX, XXXX, - ____, _________BABBLE_DELMOV_L3__________________ , _________BABBLE_DELMOV_R3__________________ , XXXX, XXXX, XXXX, - ____, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX -), - -#endif // Bablepaste -/* -[_TRAN] = LAYOUT_local( - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____ -) -*/ -}; - -#ifndef USERSPACE_ACTIVE - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case QWR: - if (record->event.pressed) { - layer_off(_CDH); - } - return false; - break; - - case CDH: - if (record->event.pressed) { - layer_on(_CDH); - } - return false; - break; - - case SYM: - if (record->event.pressed) { - layer_on(_SYM); - } else { - layer_off(_SYM); - } - return false; - break; - - case SAVE: - if (record->event.pressed) { - SEND_STRING(SS_LCTL("s")); - } - return false; - break; - /* Colemak mod-dh moves the D key to the qwerty V position - This hack makes apple-V_position do what I mean */ - case DHPASTE: - if(get_mods() & MOD_BIT(KC_LGUI) ) { - if (record->event.pressed) { - clear_keyboard_but_mods(); - register_code(KC_V); - } else { - unregister_code(KC_V); - } - } else { - if (record->event.pressed) { - register_code(KC_D); - } else { - unregister_code(KC_D); - } - } - return false; - break; - - return false; - break; - } - - return true; -} -#endif - -void keyboard_post_init_user(void) { - // Customise these values to desired behaviour - // debug_enable=true; - //debug_matrix=true; - //debug_keyboard=true; - //debug_mouse=true; -} - - -void matrix_init_user(void) { - #ifdef RGBLIGHT_ENABLE - rgblight_setrgb(RGB_GREEN); - #endif //RGB_matrix -} - -// Runs whenever there is a layer state change. -layer_state_t layer_state_set_user(layer_state_t state) { - uint8_t layer = get_highest_layer(state); - switch (layer) { - case 0: - #ifdef RGBLIGHT_COLOR_LAYER_0 - rgblight_setrgb(RGBLIGHT_COLOR_LAYER_0); - #else - #ifdef RGBLIGHT_ENABLE - rgblight_init(); - #endif - #endif - break; - - case 1: - #ifdef RGBLIGHT_COLOR_LAYER_1 - rgblight_setrgb(RGBLIGHT_COLOR_LAYER_1); - #endif - break; - - case 2: // symbol - #ifdef RGBLIGHT_COLOR_LAYER_2 - rgblight_setrgb(RGBLIGHT_COLOR_LAYER_2); - #endif - break; - - case 3: // move - #ifdef RGBLIGHT_COLOR_LAYER_3 - rgblight_setrgb(RGBLIGHT_COLOR_LAYER_3); - #endif - #ifdef USE_BABLPASTE - babble_led_user(); // poke led to update - #endif // bablepaste - break; - - case 4: //delmove ideally we'd turn on a red pixel in addition to the layer indicator. - #ifdef RGBLIGHT_COLOR_LAYER_4 - rgblight_setrgb(RGBLIGHT_COLOR_LAYER_4); - #endif - break; - - case 5: - #ifdef RGBLIGHT_COLOR_LAYER_5 - rgblight_setrgb(RGBLIGHT_COLOR_LAYER_5); - #endif - break; - - default: - break; - } - #ifdef VIRTSER_ENABLE - //virtser_send(layer + 48); // ascii 0 is 48 - #endif - return state; -}; - -// custom tapping term lengths. -uint16_t get_tapping_term(uint16_t keycode) { - switch (keycode) { - case LT(_MOV, KC_TAB): - return TAPPING_TERM ; - break; - default: - return TAPPING_TERM; - } -} - - - -#ifdef VIRTSER_ENABLE -/* listen on serial for commands. Either a set of lower case letters mapped to colors, -/ or upper case letters that change RGB mode. -/ special command C takes 3 numbers as arguments, terminated with a newline or comma or excess digits. -Command C takes 3-5octets of RGB settings. Numbers can be terminated with a comma or period. -3 octets = set all LED, 4th argument specfies specfic LED, 4+5 specify start and stop LEDs. -*/ - -uint8_t ser_rgbByte[18] ; //ascii string -uint8_t ser_cmd_started =0 ; // are we in process -uint8_t ser_got_RGBbytes =0 ; // how many bytes we've recived. -uint8_t rgb_r[6]; // R, g, b, P1, p2 -uint8_t bs=0; // how many bytes into our rgbBytestring. - -void virtser_recv(uint8_t serIn) { -#ifdef RGBLIGHT_ENABLE - if ((serIn == 10 ) || (serIn == 13) || ser_got_RGBbytes >=5) { //reached newline or max digits - - if (ser_cmd_started) { - ser_cmd_started =0 ; // end loop at newline - virtser_send('|'); - - if (ser_got_RGBbytes==3) { - rgblight_setrgb( rgb_r[0], rgb_r[1], rgb_r[2]); - } - - if (ser_got_RGBbytes ==4) { - if (( rgb_r[3] >=0) && (rgb_r[3] <= RGBLED_NUM) ) { // is pos1 plausible - rgblight_setrgb_at ( rgb_r[0], rgb_r[1], rgb_r[2], rgb_r[3]); - } else { - rgblight_setrgb( rgb_r[0], rgb_r[1], rgb_r[2]); - } - } - - if (ser_got_RGBbytes == 5) { // are start and end positions plausible? - if ( (rgb_r[4] >0) && (rgb_r[4] <= RGBLED_NUM) && (rgb_r[4] > rgb_r[3]) && - (rgb_r[3] >=0) && (rgb_r[3] <= (RGBLED_NUM -1)) ) { - rgblight_setrgb_range(rgb_r[0], rgb_r[1], rgb_r[2], rgb_r[3], rgb_r[4]); - } else { - rgblight_setrgb( rgb_r[0], rgb_r[1], rgb_r[2]); - } - } - } else { // newline outside of command loop, or something that can be ignored. - //virtser_send('.'); - } - } - - if (1 == ser_cmd_started) { // collecting bytes. - if ( // it is time to compute a byte - ( ( (serIn == ',') || (serIn == '.') ) && (bs > 0) ) || // signal done with the byte. - (bs ==2 )){ //or we know this is last. - - if ( (serIn <= '9') && (serIn >='0') ) { //3rd asci digit - ser_rgbByte[bs] = serIn; - bs++; - // virtser_send(serIn); - } - - if (bs>3) { - rgb_r[ser_got_RGBbytes]=255; - ser_got_RGBbytes ++; - } - if (bs==3) { - rgb_r[ser_got_RGBbytes] = (ser_rgbByte[0] -'0')*100 + (ser_rgbByte[1] -'0')*10 + (ser_rgbByte[2] -'0' ); - ser_got_RGBbytes ++; - } - if (bs ==2 ) { - rgb_r[ser_got_RGBbytes] = (ser_rgbByte[0] -'0')*10 + (ser_rgbByte[1] -'0' ); - ser_got_RGBbytes ++; - } - if (bs ==1) { - rgb_r[ser_got_RGBbytes] = (ser_rgbByte[0] -'0'); - ser_got_RGBbytes ++; - } // {else wipe & start over} - - bs=0; - // virtser_send(ser_got_RGBbytes+'0'); - - } else { // haven't got enough for our byte / no terminal marker - if ( (serIn <= '9') && (serIn >='0') ) { //ascii only - ser_rgbByte[bs] = serIn; - bs++; - // virtser_send(serIn); - } - } - } else { //not in command loop - next is command w/o arguments, or start of one. - switch (serIn) { - case 'C': // color switch - ser_cmd_started=1; - ser_got_RGBbytes = bs =0; - virtser_send('/'); - break; - - case 'r': //red - rgblight_setrgb(RGB_RED); - break; - - case 'g': - rgblight_setrgb(RGB_GREEN); - break; - - case 'b': // color switch - rgblight_setrgb(RGB_BLUE); - break; - - case 'w': // color switch - rgblight_setrgb(RGB_WHITE); - break; - - case 'o': // color black/off - rgblight_setrgb(0,0,0); - break; - - case 'T': // toggle - rgblight_toggle(); - break; - - case 'P': // pulse led - rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING); - break; - case 'S': // Static - rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT); - break; - - case 'U': // Rainbow - rgblight_mode_noeeprom(RGBLIGHT_MODE_RAINBOW_MOOD); - break; - - default: - // virtser_send(serIn); - break; - - } - } -#endif // RGBLIGHT_ENABLE -} - -#endif // VirtSerial diff --git a/users/miles2go/keymaps/handwired/ms_sculpt_mobile/readme.md b/users/miles2go/keymaps/handwired/ms_sculpt_mobile/readme.md deleted file mode 100644 index a720d81c18..0000000000 --- a/users/miles2go/keymaps/handwired/ms_sculpt_mobile/readme.md +++ /dev/null @@ -1,10 +0,0 @@ -# keymap taking advantage of the STM32 storage & CPU. -RGB LED is used to show layers -default bluepill LED is capslock. -there's a simple serial protocol for the keyboard to listen for color change commands from the PC. -Useful for "do stuff && cat "green">/dev/ttyACM0" - -lower case letters set pre-programmed colors -Upper case letters change RGB mode -Command C takes 3-5 octets of RGB settings. Numbers can be terminated with a comma or period. -3 octets = set all LED, 4th argument specfies specfic LED, 4+5 specify start and stop LEDs. diff --git a/users/miles2go/keymaps/handwired/ms_sculpt_mobile/rules.mk b/users/miles2go/keymaps/handwired/ms_sculpt_mobile/rules.mk deleted file mode 100644 index 41273a9a62..0000000000 --- a/users/miles2go/keymaps/handwired/ms_sculpt_mobile/rules.mk +++ /dev/null @@ -1,24 +0,0 @@ -# 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 -# -BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -NKRO_ENABLE = no # Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -ifeq ($(strip $(KEYBOARD)), handwired/ms_sculpt_mobile/8x18_arm) - RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. -endif -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - -#enable RAW in keymap config, since it can hang machines -RAW_ENABLE = no -# virtual serial port -VIRTSER_ENABLE = yes diff --git a/users/miles2go/milestogo.c b/users/miles2go/milestogo.c deleted file mode 100644 index 1c7f174e4a..0000000000 --- a/users/miles2go/milestogo.c +++ /dev/null @@ -1,153 +0,0 @@ -// based on drashna's but I think at this point it's a new axe - -#include QMK_KEYBOARD_H -#include "milestogo.h" -#include - -__attribute__((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; } - -bool move_is_on = false; // track if we are in _MOV layer -bool sym_is_on = false; // track if we are in _SYM layer - - - -// Defines actions for global custom keycodes -// Then runs the _keymap's record handier if not processed here -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - // static uint16_t spcmov_timer; // timer for spcmov key - -#ifdef USE_BABBLEPASTE - if (keycode > BABBLE_START && keycode < BABBLE_END_RANGE) { - if (record->event.pressed) { - babblePaste(keycode, 1); - } else { - babblePaste(keycode, 0); - } - } -#endif - - switch (keycode) { - case KC_QWERTY: - if (record->event.pressed) { - layer_off(_CDH); - default_layer_set(_QWERTY); - } - break; - - case KC_CDH: - if (record->event.pressed) { - layer_on(_CDH); - default_layer_set(_CDH); - } - break; - - case TMUX: // ctl-B - if (record->event.pressed) { - tap_code16(C(KC_B)); - } - break; - - /* Colemak mod-dh moves the D key to the qwerty V position - This hack makes apple-V_position do what I mean */ - case DHPASTE: - if (get_mods() & MOD_BIT(KC_LGUI)) { - if (record->event.pressed) { - clear_keyboard_but_mods(); - register_code(KC_V); - } else { - unregister_code(KC_V); - } - } else { - if (record->event.pressed) { - register_code(KC_D); - } else { - unregister_code(KC_D); - } - } - return false; - break; - - default: - return true; - } - - // normal keycode - return process_record_keymap(keycode, record); -} - -void babble_modeswitch_user(uint8_t mode) { -#ifdef USE_BABLPASTE - extern uint8_t babble_mode; // still using global. why? - -# ifdef BABL_WINDOWS - if (babble_mode == BABL_WINDOWS_MODE) { - if (BABL_LED_INDEX > 0) { - rgblight_setrgb_at(RGBLIGHT_COLOR_MS, BABL_LED_INDEX); - } else { - rgblight_setrgb(RGBLIGHT_COLOR_MS); - } - } -# endif -# ifdef BABL_READMUX - if (babble_mode == BABL_READMUX_MODE) { - if (BABL_LED_INDEX > 0) { - rgblight_setrgb_at(RGBLIGHT_COLOR_READMUX, BABL_LED_INDEX); - } else { - rgblight_setrgb(RGBLIGHT_COLOR_READMUX); - } - } -# endif -# ifdef BABL_MAC - if (babble_mode == BABL_MAC_MODE) { - if (BABL_LED_INDEX > 0) { - rgblight_setrgb_at(RGBLIGHT_COLOR_MAC, BABL_LED_INDEX); - } else { - rgblight_setrgb(RGBLIGHT_COLOR_MAC); - } - } -# endif -# ifdef BABL_VI - if (babble_mode == BABL_VI_MODE) { - if (BABL_LED_INDEX > 0) { - rgblight_setrgb_at(RGBLIGHT_COLOR_VI, BABL_LED_INDEX); - } else { - rgblight_setrgb(RGBLIGHT_COLOR_VI); - } - } -# endif -# ifdef BABL_EMACS - if (babble_mode == BABL_EMACS_MODE) { - if (BABL_LED_INDEX > 0) { - rgblight_setrgb_at(RGBLIGHT_COLOR_EMACS, BABL_LED_INDEX); - } else { - rgblight_setrgb(RGBLIGHT_COLOR_EMACS); - } - } -# endif -# ifdef BABL_CHROMEOS - if (babble_mode == BABL_CHROMEOS_MODE) { - if (BABL_LED_INDEX > 0) { - rgblight_setrgb_at(RGBLIGHT_COLOR_CHROMEOS, BABL_LED_INDEX); - } else { - rgblight_setrgb(RGBLIGHT_COLOR_CHROMEOS); - } - } -# endif -# ifdef BABL_LINUX - if (babble_mode == BABL_LINUX_MODE) { - if (BABL_LED_INDEX > 0) { - rgblight_setrgb_at(RGBLIGHT_COLOR_LINUX, BABL_LED_INDEX); - } else { - rgblight_setrgb(RGBLIGHT_COLOR_LINUX); - } - } -# endif -#endif // bablepaste -} - - -// we always return true here, so that each keyboard can use it's own -// led_update_kb() function -bool led_update_user(led_t led_state ) { - return true; -} \ No newline at end of file diff --git a/users/miles2go/milestogo.h b/users/miles2go/milestogo.h deleted file mode 100644 index 7d50f43b32..0000000000 --- a/users/miles2go/milestogo.h +++ /dev/null @@ -1,302 +0,0 @@ -/* Modified from -Copyright 2017 Christopher Courtney @drashna - -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 . -*/ - -#pragma once -#include "quantum.h" -#include "version.h" -#include "eeprom.h" - -#ifdef USE_BABBLEPASTE -# include "babblePaste.h" -#endif - -#ifdef RGB_MATRIX_ENABLE -# include "rgb_matrix.h" -#endif - -#define USERSPACE_ACTIVE - -/* Define layer names */ -enum userspace_layers { _QWERTY = 0, _CDH, _SYM, _MOV, _DMOV, _NUM }; - -/* -define modifiers here, since MOD_* doesn't seem to work for these - */ -#define MODS_SHIFT_MASK (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)) -#define MODS_CTRL_MASK (MOD_BIT(KC_LCTL) | MOD_BIT(KC_RCTL)) -#define MODS_ALT_MASK (MOD_BIT(KC_LALT) | MOD_BIT(KC_RALT)) -#define MODS_GUI_MASK (MOD_BIT(KC_LGUI) | MOD_BIT(KC_RGUI)) - -#if defined(BABBLE_END_RANGE) -# define USER_START BABBLE_END_RANGE -#else -# if defined(KEYMAP_SAFE_RANGE) -# define USER_START KEYMAP_SAFE_RANGE -# else -# define USER_START SAFE_RANGE -# endif -#endif - -enum userspace_custom_keycodes { - EPRM = BABBLE_END_RANGE, // Resets EEPROM do defaults (as in eeconfig_init) - VRSN, // Prints QMK Firmware and board info - KC_QWERTY, // Sets default layer to QWERTY - KC_CDH, // Sets default layer to COLEMAK DH - KC_MAKE, - VIBRK, // escape : - DHPASTE, // allow pasting via qwerty V,not colemak V - TMUX, // TMUX Ctrl-b - ALTSYM, // Alt when held, toggle MOV when tapped - GUISYM, - SPCMOV, - SAVE, // placeholder for CTRL-S while I get babble working again. - NEW_SAFE_RANGE // Keymap specific codes come AFTER this -}; - -#define QWERTY KC_QWERTY -#define COLEMAK KC_CDH -#define KC_RESET QK_BOOT - -#if (!defined(LAYOUT) && defined(KEYMAP)) -# define LAYOUT KEYMAP -#endif - -#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__) - -#define _________________QWERTY_L1_________________ KC_Q, KC_W, KC_E, KC_R, KC_T -#define _________________QWERTY_L2_________________ KC_A, KC_S, KC_D, KC_F, KC_G -#define _________________QWERTY_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_B - -#define _________________QWERTY_R1_________________ KC_Y, KC_U, KC_I, KC_O, KC_P -#define _________________QWERTY_R2_________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN -#define _________________QWERTY_R3_________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLASH - -#define ______________COLEMAK_MOD_DH_L1____________ KC_Q, KC_W, KC_F, KC_P, KC_B -#define ______________COLEMAK_MOD_DH_L2____________ KC_A, KC_R, KC_S, KC_T, KC_G -#define ______________COLEMAK_MOD_DH_L3____________ KC_Z, KC_X, KC_C, KC_D, KC_V - -#define ______________COLEMAK_MOD_DH_R1____________ KC_J, KC_L, KC_U, KC_Y, KC_SCLN -#define ______________COLEMAK_MOD_DH_R2____________ KC_M, KC_N, KC_E, KC_I, KC_O -#define ______________COLEMAK_MOD_DH_R3____________ KC_K, KC_H, KC_COMM, KC_DOT, KC_SLASH - -#define ________________NUMBER_LEFT________________ KC_1, KC_2, KC_3, KC_4, KC_5 -#define ________________NUMBER_RIGHT_______________ KC_6, KC_7, KC_8, KC_9, KC_0 - -#define ________________FKEYS__LEFT________________ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5 -#define ________________FKEYS__RIGHT_______________ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10 -#define ________________FKEYS__FAR_RIGHT___________ KC_F11, KC_F12, KC_PSCR, KC_HOME, KC_END - -#define ________________NAV_NUMBER_LEFT____________ KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, XXXXXXX - -#define ___________________BLANK___________________ _______, _______, _______, _______, _______ -#define ___________________BLOCK___________________ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX - -// BabblePaste -#define ____________BABBLE_SWITCH_L________________ B_MAC, B_READ, B_LINUX, B_VI, _______ -#define ____________BABBLE_SWITCH_R________________ B_CROM, B_LINUX, B_WIN, QWERTY, COLEMAK - -/////////MOVE - Full size keyboard version - -/* ,--------------------------------------------. ,--------------------------------------------. - * N |Lock |PrevApp |NextApp |PasteVal| | | | |SwitchKB|Devtools| Lock | - * |--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------| - * 01 | ESC |FindPrev| Find |FindNext| \n cell| |ParStart|LineStrt| Up | EOL | ParEnd | - * |--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------| - * 02 | SelA | Do_DEL | Shift | Undo |Hsplit+ | | WrdLft | Left | Down | Right | WrdRght| - * |--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------| - * 03 |Vspli+ | Cut | Copy | Paste | Paste | | WinPrv | Tab-- | NewTab | Tab++ | WinNxt | - * `--------------------------------------------' `--------------------------------------------' - */ -/* Movement layer similar to Extend, but fully enriched with babblepaste */ -#define ____________BABBLE_MOV_LNUM________________ B_LOCK, B_PAPP, B_NAPP, B_PASTV, XXXX - -#define ____________BABBLE_MOV_L1__________________ KC_ESC, B_FINDP, B_FIND, B_FINDN, B_NCEL -#define ____________BABBLE_MOV_L2__________________ B_SELA, MO(_DMOV), KC_LSFT, B_UNDO, B_HSPLIT -#define ____________BABBLE_MOV_L3__________________ B_VSPLIT, B_CUT, B_COPY, B_PASTE, B_PASTE - -#define ____________BABBLE_MOV_RNUM________________ XXXX, XXXX, B_KEYB, B_BDEV, B_LOCK -#define ____________BABBLE_MOV_R1__________________ B_PTOP, B_GSOL, B_UP, B_GEOL, B_PEND -#define ____________BABBLE_MOV_R2__________________ B_L1W, B_L1C, B_DOWN, B_R1C, B_R1W -#define ____________BABBLE_MOV_R3__________________ B_PWIN, B_PTAB, B_NTAB, B_NXTB, B_NWIN - -// Move in a direction, deleting as we go, or do opposite of Mov layer action */ -/* ,--------------------------------------------. ,--------------------------------------------. - * 01 | Esc | |Replace |MultiSel|PasteVal| | . |LineStrt| . | EOL | . | - * |--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------| - * 02 | | Do_Mov | Shift | Redo |Hsplit- | | WrdLft | Left | . | Right | WrdRght| - * |--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------| - * 03 |Vsplit- | Cut | Copy | Paste |Paste | | App-- | ZoomOut| NewWin | ZoomIn | App+ | - * `--------------------------------------------' `--------------------------------------------' - */ -#define _________BABBLE_DELMOV_L1__________________ KC_ESC, _______, B_RPLACE, B_MSEL, B_PASTV -#define _________BABBLE_DELMOV_L2__________________ XXXXXXX, _______, _______, B_REDO, B_HUNSPT -#define _________BABBLE_DELMOV_L3__________________ B_VUNSPT, B_CUT, B_COPY, B_PASTE, B_PRVFM - -#define _________BABBLE_DELMOV_R1__________________ XXXXXXX, B_DSOL, _______, B_DEOL, XXXXXXX -#define _________BABBLE_DELMOV_R2__________________ B_DLW, KC_BSPC, _______, B_DEL, B_DRW -#define _________BABBLE_DELMOV_R3__________________ B_NAPP, B_ZOUT, B_WINN, B_ZIN, B_PAPP - -/* SYM / excel / programming logic +=1 optimization*/ -/* ,----------------------------------. ,----------------------------------. - * 01 | | [ | ] | { | } | | { | } | ( | ) | | - * |------+------+------+------+------| |------+------+------+------+------| - * 02 | ^ | ! | = | 0 | $ | | # | 1 | - | + | ` | - * |------+------+------+------+------| |------+------+------+------+------| - * 03 | \ | % | @ | | | _ | | * | & | ~ | . | / | - * `----------------------------------' `----------------------------------' - Memnonics - ^begining end$ . &&/|| on strong finger. #at start of line. - * (multiply) opposite / - Minus is left of plus as normal. - ` is a shifted '' - ~/ is an outwards roll. / .* is a roll. !=0 is a roll , ++1 --1 roll. - _ is hard to get to. - */ -#define ___________________SYM_L1__________________ XXXXXXX, KC_LBRC, KC_RBRC, KC_LCBR, KC_RCBR -#define ___________________SYM_L2__________________ KC_CIRC, KC_EXLM, KC_EQL, KC_0, KC_DLR -#define ___________________SYM_L3__________________ KC_BSLS, KC_PERC, KC_AT, KC_PIPE, KC_UNDS - -#define ___________________SYM_R1__________________ KC_LCBR, KC_RCBR, KC_LPRN, KC_RPRN, XXXXXXX -#define ___________________SYM_R2__________________ KC_HASH, KC_1, KC_MINS, KC_PLUS, KC_GRAVE -#define ___________________SYM_R3__________________ KC_ASTR, KC_AMPR, KC_TILDE, KC_DOT, KC_SLASH - -// Move and brackets - 40% optimization. -/* ,--------------------------------------------. ,--------------------------------------------. - * 01 | ESC | ( | ) | { | } | | PgDn |LineStrt| Up | EOL | PGUp | - * |--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------| - * 02 | [ |DelMove | Shift | Undo | ] | | WrdLft | Left | Down | Right | WrdRght| - * |--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------| - * 03 | CDH | Cut | Copy | Paste | Paste | | Babl-- | Tab-- | NewTab | Tab++ | Babl++ | - * `--------------------------------------------' `--------------------------------------------' - */ - -#define __________40_______MOV_L1__________________ KC_ESC, KC_LPRN, KC_RPRN, KC_LCBR, KC_RCBR -#define __________40_______MOV_L2__________________ KC_LBRC, MO(_DMOV), KC_LSFT, KC_UNDO, KC_RBRC -#define __________40_______MOV_L3__________________ KC_CDH, B_CUT, B_COPY, B_PASTE, B_PASTE - -#define __________40_______MOV_R1__________________ B_PGDN, B_GSOL, B_UP, B_GEOL, B_PGUP -#define __________40_______MOV_R2__________________ B_L1W, B_L1C, B_DOWN, B_R1C, B_R1W -#define __________40_______MOV_R3__________________ B_DEC, B_PTAB, B_NTAB, B_NXTB, B_INC - -// Move in a direction, deleting as we go, or do opposite of Mov layer action -/* ,--------------------------------------------. ,--------------------------------------------. - * 01 | Esc | | B_print| | | | Zoom-- |LineStrt| . | EOL | Zoom++| - * |--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------| - * 02 | | Do_DEL | Shift | Redo | | | WrdLft | Left | . | Right | WrdRght| - * |--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------| - * 03 | Qwerty | Cut | Copy | Paste |Paste | | WIN-- |PrvFrame| Split |nxtFrame| Win++ | - * `--------------------------------------------' `--------------------------------------------' - */ -#define ____________40__DELMOV_L1__________________ KC_ESC, XXXXXXX, B_MODE, XXXXXXX, XXXXXXX -#define ____________40__DELMOV_L2__________________ XXXXXXX, _______, _______, B_REDO, XXXXXXX -#define ____________40__DELMOV_L3__________________ KC_QWERTY, _______, _______, _______, _______ - -#define ____________40__DELMOV_R1__________________ B_ZOUT, B_DSOL, _______, B_DEOL, B_ZIN -#define ____________40__DELMOV_R2__________________ B_DLW, KC_BSPC, _______, B_DEL, B_DRW -#define ____________40__DELMOV_R3__________________ B_PWIN, B_PRVFM, B_VSPLIT, B_NXTFM, B_NWIN - -/* NUM + symbol / programming logic +=1 optimization*/ -/* ,----------------------------------. ,----------------------------------. - * 01 | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | - * |------+------+------+------+------| |------+------+------+------+------| - * 02 | ^ | ! | = | 0 | $ | | # | 1 | - | + | ` | - * |------+------+------+------+------| |------+------+------+------+------| - * 03 | \ | % | @ | | | _ | | * | & | ~ | . | / | - * `----------------------------------' `----------------------------------' - Memnonics - ^begining end$ . &&/|| on strong finger. #at start of line. - Minus is left of plus as normal. ` is a shifted '' - ~/ and is an outwards roll. / * is a roll. - _ is hard to get to. - */ - -#define __________40_______NUM_L1__________________ ________________NUMBER_LEFT________________ -#define __________40_______NUM_L2__________________ KC_CIRC, KC_EXLM, KC_EQL, KC_0, KC_DLR -#define __________40_______NUM_L3__________________ KC_BSLS, KC_PERC, KC_AT, KC_PIPE, KC_UNDS - -#define __________40_______NUM_R1__________________ ________________NUMBER_RIGHT_______________ -#define __________40_______NUM_R2__________________ KC_HASH, KC_1, KC_MINS, KC_PLUS, KC_GRAVE -#define __________40_______NUM_R3__________________ KC_ASTR, KC_AMPR, KC_TILDE, KC_DOT, KC_SLASH - -// NUM -/* ,----------------------------------. ,----------------------------------. - * 01 | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | - * |------+------+------+------+------| |------+------+------+------+------| - * 02 | F1 | F2 | F3 | F4 | F5 | | + | 4 | 5 | 6 | - | - * |------+------+------+------+------| |------+------+------+------+------| - * 03 | F11 | F12 | | CDH| QWERT| | 0 | 1 | 2 | 3 | . | - * `----------------------------------' `----------------------------------' - */ - -#define ___________________NUM_L1__________________ ________________NUMBER_LEFT________________ -#define ___________________NUM_L2__________________ ________________FKEYS__LEFT________________ -#define ___________________NUM_L3__________________ KC_F11, KC_F11, XXXXXXX, XXXXXXX, QWERTY - -#define ___________________NUM_R1__________________ ________________NUMBER_RIGHT_______________ -#define ___________________NUM_R2__________________ KC_PLUS, KC_4, KC_5, KC_6, KC_MINS -#define ___________________NUM_R3__________________ KC_0, KC_1, KC_2, KC_3, KC_DOT - -// Standard Sym -/* ,----------------------------------. ,----------------------------------. - * 01 | ! | @ | # | $ | % | | ^ | & | * | ( | ) | - * |------+------+------+------+------| |------+------+------+------+------| - */ -#define __________________SSYM_L1__________________ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC -#define __________________SSYM_R1__________________ KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN - -#define _________________ADJUST_L1_________________ RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG -#define _________________ADJUST_L2_________________ MU_TOGG, CK_TOGG, AU_ON, AU_OFF, AG_NORM -#define _________________ADJUST_L3_________________ RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, KC_RGB_T - -#define _________________ADJUST_R1_________________ KC_SEC1, KC_SEC2, KC_SEC3, KC_SEC4, KC_SEC5 -#define _________________ADJUST_R2_________________ AG_SWAP, QWERTY, COLEMAK, DVORAK, WORKMAN -#define _________________ADJUST_R3_________________ MG_NKRO, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT - -/* excel centric symbol layer*/ -/* ,--------------------------------------------. ,--------------------------------------------. -* 01 | DelRow|InsCol | SelCol |PasteVal| | | . | 1 | 2 | 3 | | -* |--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------| -* 02 | - |InsRow | SelRow | Undo | + | | * | 4 | 5 | 6 | - | -* |--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------| -* 03 | Undo | Cut | Copy | Paste |Paste | | / | 7 | 8 | 9 | Paste | -* `--------------------------------------------' `--------------------------------------------' - -*/ -#define _________________EXCEL_L1__________________ B_DROW, B_ICOL, B_SELC, B_PASTV, XXXX -#define _________________EXCEL_L2__________________ KC_MINS, B_ICOL, B_SELC, B_UNDO, KC_PLUS -#define _________________EXCEL_L3__________________ B_UNDO, B_CUT, B_COPY, B_PASTE, B_PASTE - -#define _________________EXCEL_R1__________________ XXXXXXX, KC_1, KC_2, KC_3, XXXXXXX -#define _________________EXCEL_R2__________________ KC_ASTR, KC_4, KC_5, KC_6, KC_MINS -#define _________________EXCEL_R3__________________ KC_SLASH, KC_7, KC_8, KC_8, B_PASTE - -/* Based on BEKL 15 punctuation - * ,----------------------------------. ,----------------------------------. - * 01 | | < | $ | > | | | | [ | _ | ] | | - * |------+------+------+------+------| |------+------+------+------+------| - * 02 | \ | ( | "" | ) | # | | % | { | = | } | "|" | - * |------+------+------+------+------| |------+------+------+------+------| - * 03 | | : | * | + | | | | & | ^ | ~ | | - * `----------------------------------' `----------------------------------' - */ -#define ______________BEKL_SYM_L1__________________ XXXXXXX, KC_LBRC, KC_RBRC, KC_LCBR, XXXXXXX -#define ______________BEKL_SYM_L2__________________ KC_CIRC, KC_EXLM, KC_EQL, KC_0, KC_DLR -#define ______________BEKL_SYM_L3__________________ KC_BSLS, KC_PERC, KC_AT, KC_PIPE, KC_UNDS - -#define ______________BEKL_SYM_R1__________________ XXXXXXX, KC_RCBR, KC_LPRN, KC_RPRN, XXXXXXX -#define ______________BEKL_SYM_R2__________________ KC_HASH, KC_KP_1, KC_MINS, KC_PLUS, KC_GRAVE -#define ______________BEKL_SYM_R3__________________ KC_PERC, KC_TILDE, KC_AMPR, KC_DOT, KC_SLASH diff --git a/users/miles2go/readme.md b/users/miles2go/readme.md deleted file mode 100644 index 57983660be..0000000000 --- a/users/miles2go/readme.md +++ /dev/null @@ -1,10 +0,0 @@ -# Overview - -This is my personal userspace file. Most of my code exists here, as it's heavily shared. - -## Custom Keycodes -See the babblepaste.md readme - -## Layer Indication - -This uses the `layer_state_set_*` command to change the layer color, to indicate which layer it is on. This includes the default keymap, as well. \ No newline at end of file diff --git a/users/miles2go/rules.mk b/users/miles2go/rules.mk deleted file mode 100644 index b7a7dcdba8..0000000000 --- a/users/miles2go/rules.mk +++ /dev/null @@ -1,10 +0,0 @@ -SRC += milestogo.c babblePaste.c babl_windows.c babl_mac.c babl_vi.c babl_readmux.c babl_chromeos.c babl_kitty.c babl_linux.c -LTO_ENABLE = yes - -ifeq ($(strip $(MACROS_ENABLED)), yes) - OPT_DEFS += -DMACROS_ENABLED -endif - -ifeq ($(strip $(USE_BABBLEPASTE)), yes) - SRC += babblePaste.c -endif diff --git a/users/mnil/config.h b/users/mnil/config.h deleted file mode 100644 index b471b9a818..0000000000 --- a/users/mnil/config.h +++ /dev/null @@ -1,22 +0,0 @@ -/* Copyright 2021 Mats Nilsson - * - * 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 . - */ - -#pragma once - -#define MK_3_SPEED -#define MK_MOMENTARY_ACCEL -#define PERMISSIVE_HOLD -#define TAPPING_TERM 250 diff --git a/users/mnil/mnil.c b/users/mnil/mnil.c deleted file mode 100644 index eb3b4a1c9d..0000000000 --- a/users/mnil/mnil.c +++ /dev/null @@ -1,146 +0,0 @@ -/* Copyright 2021 Mats Nilsson - * - * 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 . - */ - -#include "mnil.h" - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case M_TILD: // ~ - if (record->event.pressed) { - tap_code16(RALT(KC_RBRC)); - tap_code(KC_SPC); - } else { - } - break; - case M_CIRC: // ^ - if (record->event.pressed) { - tap_code16(S(KC_RBRC)); - tap_code(KC_SPC); - } else { - } - break; - case M_BTCK: // ` - if (record->event.pressed) { - tap_code16(S(KC_EQL)); - tap_code(KC_SPC); - } else { - } - break; - case QWE_COL: // Swap default keymap layer - if (record->event.pressed) { - if (get_highest_layer(default_layer_state) == _COLEMAK) { - default_layer_set(1UL << _QWERTY); - } else { - default_layer_set(1UL << _COLEMAK); - } - } - break; - } - return true; -}; - -// Tap Dance -// Determine the current tap dance state -int cur_dance(tap_dance_state_t *state) { - if (state->count == 1) { - if (state->interrupted || !state->pressed) - return SINGLE_TAP; - else - return SINGLE_HOLD; - } else if (state->count == 2) { - if (state->interrupted) - return DOUBLE_SINGLE_TAP; - else if (state->pressed) - return DOUBLE_HOLD; - else - return DOUBLE_SINGLE_TAP; - } - if (state->count == 3) { - if (state->interrupted || !state->pressed) - return TRIPLE_TAP; - else - return TRIPLE_HOLD; - } else - return 8; -} - -static tap ae_tap_state = {.is_press_action = true, .state = 0}; - -void ae_finished(tap_dance_state_t *state, void *user_data) { - ae_tap_state.state = cur_dance(state); - switch (ae_tap_state.state) { - case SINGLE_TAP: - register_code(KC_A); - break; - case SINGLE_HOLD: - tap_code(SE_ADIA); - break; - case DOUBLE_SINGLE_TAP: - tap_code(KC_A); - register_code(KC_A); - break; - } -} - -void ae_reset(tap_dance_state_t *state, void *user_data) { - switch (ae_tap_state.state) { - case SINGLE_TAP: - unregister_code(KC_A); - break; - case DOUBLE_SINGLE_TAP: - unregister_code(KC_A); - break; - } - ae_tap_state.state = 0; -} - -static tap aa_tap_state = {.is_press_action = true, .state = 0}; - -void aa_finished(tap_dance_state_t *state, void *user_data) { - aa_tap_state.state = cur_dance(state); - switch (aa_tap_state.state) { - case SINGLE_TAP: - register_code(SE_ODIA); - break; - case SINGLE_HOLD: - register_code(SE_ARNG); - unregister_code(SE_ARNG); - break; - case DOUBLE_SINGLE_TAP: - tap_code(SE_ODIA); - register_code(SE_ODIA); - break; - } -} - -void aa_reset(tap_dance_state_t *state, void *user_data) { - switch (aa_tap_state.state) { - case SINGLE_TAP: - unregister_code(SE_ODIA); - break; - case DOUBLE_SINGLE_TAP: - unregister_code(SE_ODIA); - break; - } - aa_tap_state.state = 0; -} - -// clang-format off -tap_dance_action_t tap_dance_actions[] = { - [AAE] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ae_finished, ae_reset), - [OAA] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, aa_finished, aa_reset) -}; -// clang-format on diff --git a/users/mnil/mnil.h b/users/mnil/mnil.h deleted file mode 100644 index 357acfe3ce..0000000000 --- a/users/mnil/mnil.h +++ /dev/null @@ -1,85 +0,0 @@ -/* Copyright 2021 Mats Nilsson - * - * 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 . - */ - -#pragma once - -#include QMK_KEYBOARD_H -#include "keymap_swedish.h" - -// Layers -enum layers { - _COLEMAK, - _QWERTY, - _SYMBOLS, - _NAVIGATION, - _NUMPAD, -}; - -// Custom Keycodes -#define _NAV_SPC LT(_NAVIGATION, KC_SPC) // _NAVIGATION when held, SPACE when tapped -#define _SYM_ENT LT(_SYMBOLS, KC_ENT) // _SYMBOLS when held, ENTER when tapped -#define CTL_BSPC MT(MOD_LCTL, KC_BSPC) // CTRL when held, BACKSPACE when tapped -#define ALT_DEL MT(MOD_LALT, KC_DEL) // ALT when held, DELETE when tapped -#define SFT_TAB MT(MOD_LSFT, KC_TAB) // SHIFT when held, TAB when tapped -#define C_TAB C(KC_TAB) // CTRL+TAB -#define CS_TAB C(S(KC_TAB)) // SHIFT+CTRL+TAB -#define CUT C(KC_X) // CTRL+X -#define COPY C(KC_INS) // CTRL+INSERT -#define PASTE S(KC_INS) // SHIFT+INSERT -#define AUTOFILL C(S(KC_L)) // Bitwarden Autofill, CTRL+SHIFT+L - -// i3 config -#define I3MOD KC_LGUI // $mod -#define OPEN G(KC_SPC) // $mod+SPACE -#define QUIT G(S(KC_Q)) // $mod+SHIFT+Q -#define WIN G(C(KC_SPC)) // $mod+CTRL+SPACE -#define BROWSER G(KC_ENTER) // $mod+ENTER -#define TERM G(S(KC_ENTER)) // $mod+CTRL+ENTER -#define NXTWS G(KC_TAB) // $mod+TAB -#define PRVWS G(S(KC_TAB)) // $mod+SHIFT+TAB -#define MOVWS G(KC_LSFT) // $mod+SHIFT+$X -#define CRYWS G(KC_LALT) // $mod+ALT+$X -#define MVWSL G(C(S(KC_LEFT))) // $mod+CTRL+SHIFT+LEFT -#define MVWSR G(C(S(KC_RGHT))) // $mod+CTRL+SHIFT+RIGHT - -enum custom_keycodes { - M_TILD = SAFE_RANGE, // ~ - M_CIRC, // ^ - M_BTCK, // ` - QWE_COL, // Swaps default layer -}; - -// Tap Dance -typedef struct { - bool is_press_action; - int state; -} tap; - -// Define a type for as many tap dance states as you need -enum { - SINGLE_TAP = 1, - SINGLE_HOLD = 2, - DOUBLE_TAP = 3, - DOUBLE_HOLD = 4, - DOUBLE_SINGLE_TAP = 5, // send two single taps - TRIPLE_TAP = 6, - TRIPLE_HOLD = 7 -}; - -enum { - AAE = 0, // a and ae - OAA, // o and aa -}; diff --git a/users/mnil/readme.md b/users/mnil/readme.md deleted file mode 100644 index f688ea388a..0000000000 --- a/users/mnil/readme.md +++ /dev/null @@ -1,23 +0,0 @@ -# mnil's user settings -This keymap consist of four primary layers, `_COLEMAK`, `_SYMBOL`, `_NAVIGATION` and `_NUMPAD`. -Colemak layout for less finger travel distance and to reduce RSI. -The `_SYMBOL` layer is optimized for programming, specifically in `C++`. -Space and Enter do double duties as layer toggle on hold where the `_NUMPAD` is entered when both are held down. -`ALT+TAB` and `SHIFT+ALT+TAB` keys is implemented to register `ALT` and then `TAB` on each subsequent key press one leaves the `_NUMPAD`-layer. -The Swedish characters `ÃĨÃĪÃķÅÄÖ` are added as a tap dances on top of the Colemak layer since they are rarely needed. - -# License -Copyright 2021 Mats Nilsson matni403@gmail.com @mnil - -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 . diff --git a/users/mnil/rules.mk b/users/mnil/rules.mk deleted file mode 100644 index 22cebfaeeb..0000000000 --- a/users/mnil/rules.mk +++ /dev/null @@ -1,7 +0,0 @@ -SRC += mnil.c -MOUSEKEY_ENABLE = yes # Enable mouse keys -LTO_ENABLE = yes # Enable link time optimization -BACKLIGHT_ENABLE = no -CONSOLE_ENABLE = no -AUTO_SHIFT_ENABLE = no -TAP_DANCE_ENABLE = yes diff --git a/users/moults31/gdb.c b/users/moults31/gdb.c deleted file mode 100644 index 3b31d94159..0000000000 --- a/users/moults31/gdb.c +++ /dev/null @@ -1,59 +0,0 @@ -/* Copyright 2021 moults31 - * - * 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 . - */ -#include "gdb.h" - -bool process_record_gdb(uint16_t keycode, keyrecord_t *record) { - bool rv = true; - switch (keycode) { - case M_GDB_PLAY: - if (record->event.pressed) { - SEND_STRING(SS_TAP(X_F5)); - } - break; - case M_GDB_PAUSE: - if (record->event.pressed) { - SEND_STRING(SS_TAP(X_F6)); - } - break; - case M_GDB_STEPOVER: - if (record->event.pressed) { - SEND_STRING(SS_TAP(X_F10)); - } - break; - case M_GDB_STEPIN: - if (record->event.pressed) { - SEND_STRING(SS_TAP(X_F11)); - } - break; - case M_GDB_STEPOUT: - if (record->event.pressed) { - SEND_STRING(SS_LSFT(SS_TAP(X_F11))); - } - break; - case M_GDB_RESTART: - if (record->event.pressed) { - SEND_STRING(SS_LCTL(SS_LSFT(SS_TAP(X_F5)))); - } - break; - case M_GDB_STOP: - if (record->event.pressed) { - SEND_STRING(SS_LSFT(SS_TAP(X_F5))); - } - break; - } - - return rv; -} diff --git a/users/moults31/gdb.h b/users/moults31/gdb.h deleted file mode 100644 index 385825692e..0000000000 --- a/users/moults31/gdb.h +++ /dev/null @@ -1,21 +0,0 @@ -/* Copyright 2021 moults31 - * - * 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 . - */ -#pragma once - -#include QMK_KEYBOARD_H -#include "moults31.h" - -bool process_record_gdb(uint16_t keycode, keyrecord_t *record); diff --git a/users/moults31/moults31.c b/users/moults31/moults31.c deleted file mode 100644 index 0dbaed0bb0..0000000000 --- a/users/moults31/moults31.c +++ /dev/null @@ -1,114 +0,0 @@ -/* Copyright 2021 moults31 - * - * 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 . - */ -#include "moults31.h" - -bool moults31_tap_custom_code(uint16_t keycode) { - keyrecord_t record = { - .event = { - .pressed = 1, - }, - }; - return process_record_user(keycode, &record); -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - bool rv = true; - switch (keycode) { - case M_MST_CODEBLOCK: - if (record->event.pressed) { - SEND_STRING("```"); - } - break; - - case M_VSC_TERMFOCUS: - case M_VSC_SIDEBARFOCUS: - case M_VSC_SIDEBARCLOSE: - case M_VSC_FILECLOSE: - case M_VSC_FILENXT: - case M_VSC_FILEPRV: - case M_VSC_DBGCNSLFOCUS: - case M_VSC_MVEDTRNXTGRP: - case M_VSC_MVEDTRPRVGRP: - case M_VSC_EDGRPNXT: - case M_VSC_EDGRPPRV: - case M_VSC_VIEWSIZEINC: - case M_VSC_VIEWSIZEDEC: - rv = process_record_vsc(keycode, record); - break; - - case M_GDB_PLAY: - case M_GDB_PAUSE: - case M_GDB_STEPOVER: - case M_GDB_STEPIN: - case M_GDB_STEPOUT: - case M_GDB_RESTART: - case M_GDB_STOP: - rv = process_record_gdb(keycode, record); - break; - - case M_OBS_BRB: - case M_OBS_GAME: - case M_OBS_JSTCHT: - case M_OBS_DSKT_MUTE: - case M_OBS_DSKT_UNMUTE: - case M_OBS_VOICE_MUTE: - case M_OBS_VOICE_UNMUTE: - case M_OBS_MOOSIC_MUTE: - case M_OBS_MOOSIC_UNMUTE: - rv = process_record_obs(keycode, record); - break; - } - return rv; -}; - -#ifdef ENCODER_ENABLE -__attribute__((weak)) bool encoder_update_user(uint8_t index, bool clockwise) { - const layer_state_t curr_layer = get_highest_layer(layer_state); - if (index == 1) { /* Bottom encoder */ - if(curr_layer == 2 || curr_layer == 3) { - if (clockwise) { - moults31_tap_custom_code(M_VSC_FILENXT); - } else { - moults31_tap_custom_code(M_VSC_FILEPRV); - } - } - else { - if (clockwise) { - tap_code(KC_VOLU); - } else { - tap_code(KC_VOLD); - } - } - } - if (index == 0) { /* Top encoder */ - if(curr_layer == 2 || curr_layer == 3) { - if (clockwise) { - moults31_tap_custom_code(M_VSC_VIEWSIZEINC); - } else { - moults31_tap_custom_code(M_VSC_VIEWSIZEDEC); - } - } - else { - if (clockwise) { - tap_code(KC_MNXT); - } else { - tap_code(KC_MPRV); - } - } - } - return false; -} -#endif diff --git a/users/moults31/moults31.h b/users/moults31/moults31.h deleted file mode 100644 index 60e317b784..0000000000 --- a/users/moults31/moults31.h +++ /dev/null @@ -1,61 +0,0 @@ -/* Copyright 2021 moults31 - * - * 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 . - */ -#pragma once - -#include QMK_KEYBOARD_H - -#include "vscode.h" -#include "obs.h" -#include "gdb.h" - -bool moults31_tap_custom_code(uint16_t keycode); - -enum custom_keycodes { - // VSCode keycodes - M_VSC_TERMFOCUS = SAFE_RANGE, - M_VSC_SIDEBARFOCUS, - M_VSC_SIDEBARCLOSE, - M_VSC_DBGCNSLFOCUS, - M_VSC_EDGRPNXT, - M_VSC_EDGRPPRV, - M_VSC_MVEDTRNXTGRP, - M_VSC_MVEDTRPRVGRP, - M_VSC_VIEWSIZEINC, - M_VSC_VIEWSIZEDEC, - M_VSC_FILECLOSE, - M_VSC_FILENXT, - M_VSC_FILEPRV, - // GDB keycodes (for vscode debugger) - M_GDB_PLAY, - M_GDB_PAUSE, - M_GDB_STEPOVER, - M_GDB_STEPIN, - M_GDB_STEPOUT, - M_GDB_RESTART, - M_GDB_STOP, - // MS Teams keycodes - M_MST_CODEBLOCK, - // OBS keycodes - M_OBS_BRB, - M_OBS_GAME, - M_OBS_JSTCHT, - M_OBS_DSKT_MUTE, - M_OBS_DSKT_UNMUTE, - M_OBS_VOICE_MUTE, - M_OBS_VOICE_UNMUTE, - M_OBS_MOOSIC_MUTE, - M_OBS_MOOSIC_UNMUTE, -}; diff --git a/users/moults31/obs.c b/users/moults31/obs.c deleted file mode 100644 index a0d2ee5496..0000000000 --- a/users/moults31/obs.c +++ /dev/null @@ -1,80 +0,0 @@ -/* Copyright 2021 moults31 - * - * 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 . - */ -#include "obs.h" - -bool process_record_obs(uint16_t keycode, keyrecord_t *record) { - // Apply all 4 mods for custom OBS macros - register_code(KC_LSFT); - register_code(KC_LCTL); - register_code(KC_LALT); - register_code(KC_LGUI); - - switch (keycode) { - case M_OBS_BRB: - if (record->event.pressed) { - SEND_STRING("1"); - } - break; - case M_OBS_GAME: - if (record->event.pressed) { - SEND_STRING("2"); - } - break; - case M_OBS_JSTCHT: - if (record->event.pressed) { - SEND_STRING("3"); - } - break; - case M_OBS_DSKT_MUTE: - if (record->event.pressed) { - SEND_STRING("4"); - } - break; - case M_OBS_DSKT_UNMUTE: - if (record->event.pressed) { - SEND_STRING("5"); - } - break; - case M_OBS_VOICE_MUTE: - if (record->event.pressed) { - SEND_STRING("6"); - } - break; - case M_OBS_VOICE_UNMUTE: - if (record->event.pressed) { - SEND_STRING("7"); - } - break; - case M_OBS_MOOSIC_MUTE: - if (record->event.pressed) { - SEND_STRING("8"); - } - break; - case M_OBS_MOOSIC_UNMUTE: - if (record->event.pressed) { - SEND_STRING("9"); - } - break; - } - - // Unpress all 4 mods for custom OBS macros - unregister_code(KC_LSFT); - unregister_code(KC_LCTL); - unregister_code(KC_LALT); - unregister_code(KC_LGUI); - - return true; -} diff --git a/users/moults31/obs.h b/users/moults31/obs.h deleted file mode 100644 index 2a2973f802..0000000000 --- a/users/moults31/obs.h +++ /dev/null @@ -1,21 +0,0 @@ -/* Copyright 2021 moults31 - * - * 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 . - */ -#pragma once - -#include QMK_KEYBOARD_H -#include "moults31.h" - -bool process_record_obs(uint16_t keycode, keyrecord_t *record); diff --git a/users/moults31/readme.md b/users/moults31/readme.md deleted file mode 100644 index 3a5badbe5b..0000000000 --- a/users/moults31/readme.md +++ /dev/null @@ -1,5 +0,0 @@ -# moults31 Userspace - -## Features - -- Custom macros for VScode, OBS, GDB (Visual) diff --git a/users/moults31/rules.mk b/users/moults31/rules.mk deleted file mode 100644 index af7c11d9f8..0000000000 --- a/users/moults31/rules.mk +++ /dev/null @@ -1,10 +0,0 @@ -SRC += moults31.c - -# Custom macro sources -SRC += vscode.c -SRC += obs.c -SRC += gdb.c - -ifneq ($(PLATFORM),CHIBIOS) - LTO_ENABLE = yes # Enable link time optimization -endif diff --git a/users/moults31/vscode.c b/users/moults31/vscode.c deleted file mode 100644 index 7900e20431..0000000000 --- a/users/moults31/vscode.c +++ /dev/null @@ -1,90 +0,0 @@ -/* Copyright 2021 moults31 - * - * 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 . - */ -#include "vscode.h" - -bool process_record_vsc(uint16_t keycode, keyrecord_t *record) { - bool rv = true; - - switch (keycode) { - case M_VSC_TERMFOCUS: - if (record->event.pressed) { - SEND_STRING(SS_LCTL("`")); - } - break; - case M_VSC_SIDEBARFOCUS: - if (record->event.pressed) { - SEND_STRING(SS_LCTL("0")); - } - break; - case M_VSC_SIDEBARCLOSE: - if (record->event.pressed) { - SEND_STRING(SS_LCTL("b")); - } - break; - case M_VSC_FILECLOSE: - if (record->event.pressed) { - SEND_STRING(SS_LCTL("w")); - } - break; - case M_VSC_FILENXT: - if (record->event.pressed) { - SEND_STRING(SS_DOWN(X_LEFT_CTRL) SS_TAP(X_K) SS_TAP(X_PAGE_DOWN) SS_UP(X_LEFT_CTRL)); - } - break; - case M_VSC_FILEPRV: - if (record->event.pressed) { - SEND_STRING(SS_DOWN(X_LEFT_CTRL) SS_TAP(X_K) SS_TAP(X_PGUP) SS_UP(X_LEFT_CTRL)); - } - break; - case M_VSC_DBGCNSLFOCUS: - if (record->event.pressed) { - SEND_STRING(SS_LCTL(SS_LALT(SS_TAP(X_D)))); - } - break; - case M_VSC_MVEDTRNXTGRP: - if (record->event.pressed) { - SEND_STRING(SS_LCTL(SS_LALT(SS_TAP(X_RIGHT)))); - } - break; - case M_VSC_MVEDTRPRVGRP: - if (record->event.pressed) { - SEND_STRING(SS_LCTL(SS_LALT(SS_TAP(X_LEFT)))); - } - break; - case M_VSC_EDGRPNXT: - if (record->event.pressed) { - SEND_STRING(SS_LCTL(SS_LALT(SS_TAP(X_L)))); - } - break; - case M_VSC_EDGRPPRV: - if (record->event.pressed) { - SEND_STRING(SS_LCTL(SS_LALT(SS_TAP(X_K)))); - } - break; - case M_VSC_VIEWSIZEINC: - if (record->event.pressed) { - SEND_STRING(SS_LCTL(SS_LALT(SS_TAP(X_P)))); - } - break; - case M_VSC_VIEWSIZEDEC: - if (record->event.pressed) { - SEND_STRING(SS_LCTL(SS_LALT(SS_TAP(X_O)))); - } - break; - } - - return rv; -} diff --git a/users/moults31/vscode.h b/users/moults31/vscode.h deleted file mode 100644 index 7e88b6591a..0000000000 --- a/users/moults31/vscode.h +++ /dev/null @@ -1,21 +0,0 @@ -/* Copyright 2021 moults31 - * - * 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 . - */ -#pragma once - -#include QMK_KEYBOARD_H -#include "moults31.h" - -bool process_record_vsc(uint16_t keycode, keyrecord_t *record); diff --git a/users/mtei/config.h b/users/mtei/config.h deleted file mode 100644 index 77074357e8..0000000000 --- a/users/mtei/config.h +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright (c) 2022 Takeshi Ishii (mtei@github) -// SPDX-License-Identifier: GPL-2.0-or-later - -// clang-format off - -#pragma once - -// Selection of RGBLIGHT MODE to use. -#undef RGBLIGHT_EFFECT_BREATHING -#undef RGBLIGHT_EFFECT_RAINBOW_MOOD -#undef RGBLIGHT_EFFECT_RAINBOW_SWIRL -#undef RGBLIGHT_EFFECT_SNAKE -#undef RGBLIGHT_EFFECT_KNIGHT -#undef RGBLIGHT_EFFECT_CHRISTMAS -#undef RGBLIGHT_EFFECT_STATIC_GRADIENT -#undef RGBLIGHT_EFFECT_RGB_TEST -#undef RGBLIGHT_EFFECT_ALTERNATING -#undef RGBLIGHT_EFFECT_TWINKLE - -#if defined(LED_ANIMATIONS) -# if LED_ANIMATIONS_LEVEL > 1 -# define RGBLIGHT_EFFECT_BREATHING -# define RGBLIGHT_EFFECT_RAINBOW_MOOD -# define RGBLIGHT_EFFECT_RAINBOW_SWIRL -//# define RGBLIGHT_EFFECT_SNAKE -//# define RGBLIGHT_EFFECT_KNIGHT -# define RGBLIGHT_EFFECT_CHRISTMAS -# define RGBLIGHT_EFFECT_STATIC_GRADIENT -//# define RGBLIGHT_EFFECT_RGB_TEST -//# define RGBLIGHT_EFFECT_ALTERNATING -# else -# define RGBLIGHT_EFFECT_BREATHING -# define RGBLIGHT_EFFECT_RAINBOW_MOOD -//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL -//# define RGBLIGHT_EFFECT_SNAKE -//# define RGBLIGHT_EFFECT_KNIGHT -//# define RGBLIGHT_EFFECT_CHRISTMAS -# define RGBLIGHT_EFFECT_STATIC_GRADIENT -//# define RGBLIGHT_EFFECT_RGB_TEST -//# define RGBLIGHT_EFFECT_ALTERNATING -# endif -#endif - -#ifdef DEBUG_CONFIG -# include "debug_config.h" -#endif diff --git a/users/mtei/cpp_map.h b/users/mtei/cpp_map.h deleted file mode 100644 index 3b95d0a82a..0000000000 --- a/users/mtei/cpp_map.h +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright (c) 2021 Takeshi Ishii (mtei@github) -// SPDX-License-Identifier: MIT - -// See here for how to use this. (https://github.com/mtei/bare_metal_parts/tree/master/cpp/map) - -#pragma once -// clang-format off - -#define _MAP1(E,ET, _1) ET(_1) -#define _MAP2(E,ET, _1,_2) E(_1) ET(_2) -#define _MAP3(E,ET, _1,_2,_3) E(_1) E(_2) ET(_3) -#define _MAP4(E,ET, _1,_2,_3,_4) E(_1) E(_2) E(_3) ET(_4) -#define _MAP5(E,ET, _1,_2,_3,_4,_5) E(_1) E(_2) E(_3) E(_4) ET(_5) -#define _MAP6(E,ET, _1,_2,_3,_4,_5,_6) E(_1) E(_2) E(_3) E(_4) E(_5) ET(_6) -#define _MAP7(E,ET, _1,_2,_3,_4,_5,_6,_7) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) ET(_7) -#define _MAP8(E,ET, _1,_2,_3,_4,_5,_6,_7,_8) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) ET(_8) -#define _MAP9(E,ET, _1,_2,_3,_4,_5,_6,_7,_8,_9) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) ET(_9) -#define _MAP10(E,ET, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) ET(_10) -#define _MAP11(E,ET, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) ET(_11) -#define _MAP12(E,ET, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) ET(_12) -#define _MAP13(E,ET, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) ET(_13) -#define _MAP14(E,ET, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) ET(_14) -#define _MAP15(E,ET, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) ET(_15) -#define _MAP16(E,ET, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) ET(_16) -#define _MAP17(E,ET, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) E(_16) ET(_17) -#define _MAP18(E,ET, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) E(_16) E(_17) ET(_18) -#define _MAP19(E,ET, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) E(_16) E(_17) E(_18) ET(_19) -#define _MAP20(E,ET, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) E(_16) E(_17) E(_18) E(_19) ET(_20) -#define _MAP21(E,ET, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) E(_16) E(_17) E(_18) E(_19) E(_20) ET(_21) -#define _MAP22(E,ET, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) E(_16) E(_17) E(_18) E(_19) E(_20) E(_21) ET(_22) -#define _MAP23(E,ET, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) E(_16) E(_17) E(_18) E(_19) E(_20) E(_21) E(_22) ET(_23) -#define _MAP24(E,ET, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) E(_16) E(_17) E(_18) E(_19) E(_20) E(_21) E(_22) E(_23) ET(_24) -#define _MAP25(E,ET, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) E(_16) E(_17) E(_18) E(_19) E(_20) E(_21) E(_22) E(_23) E(_24) ET(_25) -#define _MAP26(E,ET, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25,_26) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) E(_16) E(_17) E(_18) E(_19) E(_20) E(_21) E(_22) E(_23) E(_24) E(_25) ET(_26) -#define _MAP27(E,ET, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25,_26,_27) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) E(_16) E(_17) E(_18) E(_19) E(_20) E(_21) E(_22) E(_23) E(_24) E(_25) E(_26) ET(_27) -#define _MAP28(E,ET, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25,_26,_27,_28) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) E(_16) E(_17) E(_18) E(_19) E(_20) E(_21) E(_22) E(_23) E(_24) E(_25) E(_26) E(_27) ET(_28) -#define _MAP29(E,ET, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25,_26,_27,_28,_29) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) E(_16) E(_17) E(_18) E(_19) E(_20) E(_21) E(_22) E(_23) E(_24) E(_25) E(_26) E(_27) E(_28) ET(_29) -#define _MAP30(E,ET, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25,_26,_27,_28,_29,_30) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) E(_16) E(_17) E(_18) E(_19) E(_20) E(_21) E(_22) E(_23) E(_24) E(_25) E(_26) E(_27) E(_28) E(_29) ET(_30) -#define _MAP31(E,ET, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25,_26,_27,_28,_29,_30,_31) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) E(_16) E(_17) E(_18) E(_19) E(_20) E(_21) E(_22) E(_23) E(_24) E(_25) E(_26) E(_27) E(_28) E(_29) E(_30) ET(_31) -#define _MAP32(E,ET, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25,_26,_27,_28,_29,_30,_31,_32) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) E(_16) E(_17) E(_18) E(_19) E(_20) E(_21) E(_22) E(_23) E(_24) E(_25) E(_26) E(_27) E(_28) E(_29) E(_30) E(_31) ET(_32) - -#define SELECT_MAP(e,et,_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25,_26,_27,_28,_29,_30,_31,_32,NAME,...) NAME -#define MAPT(E,ET,...) SELECT_MAP(E,ET,__VA_ARGS__,_MAP32,_MAP31,_MAP30,_MAP29,_MAP28,_MAP27,_MAP26,_MAP25,_MAP24,_MAP23,_MAP22,_MAP21,_MAP20,_MAP19,_MAP18,_MAP17,_MAP16,_MAP15,_MAP14,_MAP13,_MAP12,_MAP11,_MAP10,_MAP9,_MAP8,_MAP7,_MAP6,_MAP5,_MAP4,_MAP3,_MAP2,_MAP1)(E,ET,__VA_ARGS__) -#define MAP(E,...) MAPT(E,E,__VA_ARGS__) - -#define _MAP_INDEX1(E,ET, _1) ET(0,_1) -#define _MAP_INDEX2(E,ET, _1,_2) E(0,_1) ET(1,_2) -#define _MAP_INDEX3(E,ET, _1,_2,_3) E(0,_1) E(1,_2) ET(2,_3) -#define _MAP_INDEX4(E,ET, _1,_2,_3,_4) E(0,_1) E(1,_2) E(2,_3) ET(3,_4) -#define _MAP_INDEX5(E,ET, _1,_2,_3,_4,_5) E(0,_1) E(1,_2) E(2,_3) E(3,_4) ET(4,_5) -#define _MAP_INDEX6(E,ET, _1,_2,_3,_4,_5,_6) E(0,_1) E(1,_2) E(2,_3) E(3,_4) E(4,_5) ET(5,_6) -#define _MAP_INDEX7(E,ET, _1,_2,_3,_4,_5,_6,_7) E(0,_1) E(1,_2) E(2,_3) E(3,_4) E(4,_5) E(5,_6) ET(6,_7) -#define _MAP_INDEX8(E,ET, _1,_2,_3,_4,_5,_6,_7,_8) E(0,_1) E(1,_2) E(2,_3) E(3,_4) E(4,_5) E(5,_6) E(6,_7) ET(7,_8) -#define _MAP_INDEX9(E,ET, _1,_2,_3,_4,_5,_6,_7,_8,_9) E(0,_1) E(1,_2) E(2,_3) E(3,_4) E(4,_5) E(5,_6) E(6,_7) E(7,_8) ET(8,_9) -#define _MAP_INDEX10(E,ET, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10) E(0,_1) E(1,_2) E(2,_3) E(3,_4) E(4,_5) E(5,_6) E(6,_7) E(7,_8) E(8,_9) ET(9,_10) -#define _MAP_INDEX11(E,ET, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11) E(0,_1) E(1,_2) E(2,_3) E(3,_4) E(4,_5) E(5,_6) E(6,_7) E(7,_8) E(8,_9) E(9,_10) ET(10,_11) -#define _MAP_INDEX12(E,ET, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12) E(0,_1) E(1,_2) E(2,_3) E(3,_4) E(4,_5) E(5,_6) E(6,_7) E(7,_8) E(8,_9) E(9,_10) E(10,_11) ET(11,_12) -#define _MAP_INDEX13(E,ET, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13) E(0,_1) E(1,_2) E(2,_3) E(3,_4) E(4,_5) E(5,_6) E(6,_7) E(7,_8) E(8,_9) E(9,_10) E(10,_11) E(11,_12) ET(12,_13) -#define _MAP_INDEX14(E,ET, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14) E(0,_1) E(1,_2) E(2,_3) E(3,_4) E(4,_5) E(5,_6) E(6,_7) E(7,_8) E(8,_9) E(9,_10) E(10,_11) E(11,_12) E(12,_13) ET(13,_14) -#define _MAP_INDEX15(E,ET, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15) E(0,_1) E(1,_2) E(2,_3) E(3,_4) E(4,_5) E(5,_6) E(6,_7) E(7,_8) E(8,_9) E(9,_10) E(10,_11) E(11,_12) E(12,_13) E(13,_14) ET(14,_15) -#define _MAP_INDEX16(E,ET, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16) E(0,_1) E(1,_2) E(2,_3) E(3,_4) E(4,_5) E(5,_6) E(6,_7) E(7,_8) E(8,_9) E(9,_10) E(10,_11) E(11,_12) E(12,_13) E(13,_14) E(14,_15) ET(15,_16) -#define _MAP_INDEX17(E,ET, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17) E(0,_1) E(1,_2) E(2,_3) E(3,_4) E(4,_5) E(5,_6) E(6,_7) E(7,_8) E(8,_9) E(9,_10) E(10,_11) E(11,_12) E(12,_13) E(13,_14) E(14,_15) E(15,_16) ET(16,_17) -#define _MAP_INDEX18(E,ET, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18) E(0,_1) E(1,_2) E(2,_3) E(3,_4) E(4,_5) E(5,_6) E(6,_7) E(7,_8) E(8,_9) E(9,_10) E(10,_11) E(11,_12) E(12,_13) E(13,_14) E(14,_15) E(15,_16) E(16,_17) ET(17,_18) -#define _MAP_INDEX19(E,ET, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19) E(0,_1) E(1,_2) E(2,_3) E(3,_4) E(4,_5) E(5,_6) E(6,_7) E(7,_8) E(8,_9) E(9,_10) E(10,_11) E(11,_12) E(12,_13) E(13,_14) E(14,_15) E(15,_16) E(16,_17) E(17,_18) ET(18,_19) -#define _MAP_INDEX20(E,ET, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20) E(0,_1) E(1,_2) E(2,_3) E(3,_4) E(4,_5) E(5,_6) E(6,_7) E(7,_8) E(8,_9) E(9,_10) E(10,_11) E(11,_12) E(12,_13) E(13,_14) E(14,_15) E(15,_16) E(16,_17) E(17,_18) E(18,_19) ET(19,_20) -#define _MAP_INDEX21(E,ET, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21) E(0,_1) E(1,_2) E(2,_3) E(3,_4) E(4,_5) E(5,_6) E(6,_7) E(7,_8) E(8,_9) E(9,_10) E(10,_11) E(11,_12) E(12,_13) E(13,_14) E(14,_15) E(15,_16) E(16,_17) E(17,_18) E(18,_19) E(19,_20) ET(20,_21) -#define _MAP_INDEX22(E,ET, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22) E(0,_1) E(1,_2) E(2,_3) E(3,_4) E(4,_5) E(5,_6) E(6,_7) E(7,_8) E(8,_9) E(9,_10) E(10,_11) E(11,_12) E(12,_13) E(13,_14) E(14,_15) E(15,_16) E(16,_17) E(17,_18) E(18,_19) E(19,_20) E(20,_21) ET(21,_22) -#define _MAP_INDEX23(E,ET, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23) E(0,_1) E(1,_2) E(2,_3) E(3,_4) E(4,_5) E(5,_6) E(6,_7) E(7,_8) E(8,_9) E(9,_10) E(10,_11) E(11,_12) E(12,_13) E(13,_14) E(14,_15) E(15,_16) E(16,_17) E(17,_18) E(18,_19) E(19,_20) E(20,_21) E(21,_22) ET(22,_23) -#define _MAP_INDEX24(E,ET, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24) E(0,_1) E(1,_2) E(2,_3) E(3,_4) E(4,_5) E(5,_6) E(6,_7) E(7,_8) E(8,_9) E(9,_10) E(10,_11) E(11,_12) E(12,_13) E(13,_14) E(14,_15) E(15,_16) E(16,_17) E(17,_18) E(18,_19) E(19,_20) E(20,_21) E(21,_22) E(22,_23) ET(23,_24) -#define _MAP_INDEX25(E,ET, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25) E(0,_1) E(1,_2) E(2,_3) E(3,_4) E(4,_5) E(5,_6) E(6,_7) E(7,_8) E(8,_9) E(9,_10) E(10,_11) E(11,_12) E(12,_13) E(13,_14) E(14,_15) E(15,_16) E(16,_17) E(17,_18) E(18,_19) E(19,_20) E(20,_21) E(21,_22) E(22,_23) E(23,_24) ET(24,_25) -#define _MAP_INDEX26(E,ET, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25,_26) E(0,_1) E(1,_2) E(2,_3) E(3,_4) E(4,_5) E(5,_6) E(6,_7) E(7,_8) E(8,_9) E(9,_10) E(10,_11) E(11,_12) E(12,_13) E(13,_14) E(14,_15) E(15,_16) E(16,_17) E(17,_18) E(18,_19) E(19,_20) E(20,_21) E(21,_22) E(22,_23) E(23,_24) E(24,_25) ET(25,_26) -#define _MAP_INDEX27(E,ET, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25,_26,_27) E(0,_1) E(1,_2) E(2,_3) E(3,_4) E(4,_5) E(5,_6) E(6,_7) E(7,_8) E(8,_9) E(9,_10) E(10,_11) E(11,_12) E(12,_13) E(13,_14) E(14,_15) E(15,_16) E(16,_17) E(17,_18) E(18,_19) E(19,_20) E(20,_21) E(21,_22) E(22,_23) E(23,_24) E(24,_25) E(25,_26) ET(26,_27) -#define _MAP_INDEX28(E,ET, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25,_26,_27,_28) E(0,_1) E(1,_2) E(2,_3) E(3,_4) E(4,_5) E(5,_6) E(6,_7) E(7,_8) E(8,_9) E(9,_10) E(10,_11) E(11,_12) E(12,_13) E(13,_14) E(14,_15) E(15,_16) E(16,_17) E(17,_18) E(18,_19) E(19,_20) E(20,_21) E(21,_22) E(22,_23) E(23,_24) E(24,_25) E(25,_26) E(26,_27) ET(27,_28) -#define _MAP_INDEX29(E,ET, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25,_26,_27,_28,_29) E(0,_1) E(1,_2) E(2,_3) E(3,_4) E(4,_5) E(5,_6) E(6,_7) E(7,_8) E(8,_9) E(9,_10) E(10,_11) E(11,_12) E(12,_13) E(13,_14) E(14,_15) E(15,_16) E(16,_17) E(17,_18) E(18,_19) E(19,_20) E(20,_21) E(21,_22) E(22,_23) E(23,_24) E(24,_25) E(25,_26) E(26,_27) E(27,_28) ET(28,_29) -#define _MAP_INDEX30(E,ET, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25,_26,_27,_28,_29,_30) E(0,_1) E(1,_2) E(2,_3) E(3,_4) E(4,_5) E(5,_6) E(6,_7) E(7,_8) E(8,_9) E(9,_10) E(10,_11) E(11,_12) E(12,_13) E(13,_14) E(14,_15) E(15,_16) E(16,_17) E(17,_18) E(18,_19) E(19,_20) E(20,_21) E(21,_22) E(22,_23) E(23,_24) E(24,_25) E(25,_26) E(26,_27) E(27,_28) E(28,_29) ET(29,_30) -#define _MAP_INDEX31(E,ET, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25,_26,_27,_28,_29,_30,_31) E(0,_1) E(1,_2) E(2,_3) E(3,_4) E(4,_5) E(5,_6) E(6,_7) E(7,_8) E(8,_9) E(9,_10) E(10,_11) E(11,_12) E(12,_13) E(13,_14) E(14,_15) E(15,_16) E(16,_17) E(17,_18) E(18,_19) E(19,_20) E(20,_21) E(21,_22) E(22,_23) E(23,_24) E(24,_25) E(25,_26) E(26,_27) E(27,_28) E(28,_29) E(29,_30) ET(30,_31) -#define _MAP_INDEX32(E,ET, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25,_26,_27,_28,_29,_30,_31,_32) E(0,_1) E(1,_2) E(2,_3) E(3,_4) E(4,_5) E(5,_6) E(6,_7) E(7,_8) E(8,_9) E(9,_10) E(10,_11) E(11,_12) E(12,_13) E(13,_14) E(14,_15) E(15,_16) E(16,_17) E(17,_18) E(18,_19) E(19,_20) E(20,_21) E(21,_22) E(22,_23) E(23,_24) E(24,_25) E(25,_26) E(26,_27) E(27,_28) E(28,_29) E(29,_30) E(30,_31) ET(31,_32) - -#define SELECT_MAP_INDEX(e,et,_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25,_26,_27,_28,_29,_30,_31,_32,NAME,...) NAME -#define MAPT_INDEX(E,ET,...) SELECT_MAP_INDEX(E,ET,__VA_ARGS__,_MAP_INDEX32,_MAP_INDEX31,_MAP_INDEX30,_MAP_INDEX29,_MAP_INDEX28,_MAP_INDEX27,_MAP_INDEX26,_MAP_INDEX25,_MAP_INDEX24,_MAP_INDEX23,_MAP_INDEX22,_MAP_INDEX21,_MAP_INDEX20,_MAP_INDEX19,_MAP_INDEX18,_MAP_INDEX17,_MAP_INDEX16,_MAP_INDEX15,_MAP_INDEX14,_MAP_INDEX13,_MAP_INDEX12,_MAP_INDEX11,_MAP_INDEX10,_MAP_INDEX9,_MAP_INDEX8,_MAP_INDEX7,_MAP_INDEX6,_MAP_INDEX5,_MAP_INDEX4,_MAP_INDEX3,_MAP_INDEX2,_MAP_INDEX1)(E,ET,__VA_ARGS__) -#define MAP_INDEX(E,...) MAPT_INDEX(E,E,__VA_ARGS__) - -#define SELECT_ITEM_COUNT(_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25,_26,_27,_28,_29,_30,_31,_32,NAME,...) NAME -#define GET_ITEM_COUNT(...) SELECT_ITEM_COUNT(__VA_ARGS__,32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1) diff --git a/users/mtei/debug_config.h b/users/mtei/debug_config.h deleted file mode 100644 index edcc1ad41b..0000000000 --- a/users/mtei/debug_config.h +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright (c) 2022 Takeshi Ishii (mtei@github) -// SPDX-License-Identifier: GPL-2.0-or-later - -// clang-format off - -#pragma once diff --git a/users/mtei/encoder_update_user.c b/users/mtei/encoder_update_user.c deleted file mode 100644 index 67585e0345..0000000000 --- a/users/mtei/encoder_update_user.c +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright (c) 2022 Takeshi Ishii (mtei@github) -// SPDX-License-Identifier: GPL-2.0-or-later - -#include QMK_KEYBOARD_H - -/* weak reference */ __attribute__((weak)) -int get_encoder_over_count(void); - -bool encoder_update_user(uint8_t index, bool clockwise) { -#ifndef ENCODER_DETECT_OVER_SPEED - switch (index) { - /* Left side encoder */ - case 0: tap_code(clockwise ? KC_LEFT : KC_RGHT); break; - /* Right side encoder */ - case 1: tap_code(clockwise ? KC_DOWN : KC_UP); break; - } -#else - // Is there a get_encoder_over_count() in quantum/encoder.c - if (get_encoder_over_count != NULL) { - int enc_over = get_encoder_over_count(); - for (; enc_over > 0; enc_over--) { - tap_code(KC_MINUS); - } - } - switch (index) { - case 0: tap_code(clockwise ? KC_A : KC_B); break; - case 1: tap_code(clockwise ? KC_C : KC_D); break; - case 2: tap_code(clockwise ? KC_E : KC_F); break; - case 3: tap_code(clockwise ? KC_G : KC_H); break; - } -#endif - return true; -} diff --git a/users/mtei/key_blocks.h b/users/mtei/key_blocks.h deleted file mode 100644 index 9a62e5ccff..0000000000 --- a/users/mtei/key_blocks.h +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright (c) 2022 Takeshi Ishii (mtei@github) -// SPDX-License-Identifier: GPL-2.0-or-later -#pragma once - -#define _1_____2_____3_____4_____5 KC_1, KC_2, KC_3, KC_4, KC_5 -#define _6_____7_____8_____9_____0 KC_6, KC_7, KC_8, KC_9, KC_0 -#define F1____F2____F3____F4____F5 KC_F1, KC_F2, KC_F3, KC_F4, KC_F5 -#define F6____F7____F8____F9____F10 KC_F6, KC_F7, KC_F8, KC_F9, KC_F10 - -/* Qwerty */ -#define Q_____W_____E_____R_____T KC_Q, KC_W, KC_E, KC_R, KC_T -#define Y_____U_____I_____O_____P KC_Y, KC_U, KC_I, KC_O, KC_P -#define A_____S_____D_____F_____G KC_A, KC_S, KC_D, KC_F, KC_G -#define H_____J_____K_____L____SCLN KC_H, KC_J, KC_K, KC_L, KC_SCLN -#define Z_____X_____C_____V_____B KC_Z, KC_X, KC_C, KC_V, KC_B -#define N_____M____COMM__DOT___SLSH KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH - -/* Colemak */ -#define Q_____W_____F_____P_____G KC_Q, KC_W, KC_F, KC_P, KC_G -#define J_____L_____U_____Y____SCLN KC_J, KC_L, KC_U, KC_Y, KC_SCLN -#define A_____R_____S_____T_____D KC_A, KC_R, KC_S, KC_T, KC_D -#define H_____N_____E_____I_____O KC_H, KC_N, KC_E, KC_I, KC_O -// Z_____X_____C_____V_____B KC_Z, KC_X, KC_C, KC_V, KC_B -#define K_____M____COMM__DOT___SLSH KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH - -/* Dvorak */ -#define QUOT_COMM___DOT____P_____Y KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y -#define F_____G_____C_____R_____L KC_F, KC_G, KC_C, KC_R, KC_L -#define A_____O_____E_____U_____I KC_A, KC_O, KC_E, KC_U, KC_I -#define D_____H_____T_____N_____S KC_D, KC_H, KC_T, KC_N, KC_S -#define SCLN___Q_____J_____K_____X KC_SCLN, KC_Q, KC_J, KC_K, KC_X -#define B_____M_____W_____V_____Z KC_B, KC_M, KC_W, KC_V, KC_Z - -/* Eucalyn rev3 (http://eucalyn.hatenadiary.jp/entry/about-eucalyn-layout) */ -#define Q_____W___COMM___DOT__SCLN KC_Q, KC_W, KC_COMM, KC_DOT, KC_SCLN -#define M_____R_____D_____Y_____P KC_M, KC_R, KC_D, KC_Y, KC_P -#define A_____O_____E_____I_____U KC_A, KC_O, KC_E, KC_I, KC_U -#define G_____T_____K_____S_____N KC_G, KC_T, KC_K, KC_S, KC_N -#define Z_____X_____C_____V_____F KC_Z, KC_X, KC_C, KC_V, KC_F -#define B_____H_____J_____L____SLSH KC_B, KC_H, KC_J, KC_L, KC_SLSH diff --git a/users/mtei/layer_number_util.h b/users/mtei/layer_number_util.h deleted file mode 100644 index 2147b9db05..0000000000 --- a/users/mtei/layer_number_util.h +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright (c) 2022 Takeshi Ishii (mtei@github) -// SPDX-License-Identifier: GPL-2.0-or-later -#pragma once - -#include "cpp_map.h" - -//build -> _, -#define _BUILD_LAYER_ENUM_NUMBER(sym, str) _ ## sym, -#define BUILD_LAYER_ENUM_NUMBER(ent) _BUILD_LAYER_ENUM_NUMBER ent - -//build -> static const char _name[] PROGMEM = str; -#define _BUILD_LAYER_NAME_STR(sym, str) static const char sym ## _name[] PROGMEM = str; -#define BUILD_LAYER_NAME_STR(ent) _BUILD_LAYER_NAME_STR ent - -//build -> [_] = _name, -#define _BUILD_LAYER_NAME_TABLE(sym, str) [_##sym] = sym ## _name, -#define BUILD_LAYER_NAME_TABLE(ent) _BUILD_LAYER_NAME_TABLE ent diff --git a/users/mtei/matrix_output_unselect_delay_ondemand.c b/users/mtei/matrix_output_unselect_delay_ondemand.c deleted file mode 100644 index 362d8a1303..0000000000 --- a/users/mtei/matrix_output_unselect_delay_ondemand.c +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright (c) 2021 Takeshi Ishii (mtei@github) -// SPDX-License-Identifier: GPL-2.0-or-later - -#include QMK_KEYBOARD_H - -void matrix_output_unselect_delay(uint8_t line, bool key_pressed) { - /* If none of the keys are pressed, - * there is no need to wait for time for the next line. */ - if (key_pressed) { -# ifdef MATRIX_IO_DELAY -# if MATRIX_IO_DELAY > 0 - wait_us(MATRIX_IO_DELAY); -# endif -# else - wait_us(30); -# endif - } -} diff --git a/users/mtei/oled_display.c b/users/mtei/oled_display.c deleted file mode 100644 index 878dd29e6f..0000000000 --- a/users/mtei/oled_display.c +++ /dev/null @@ -1,147 +0,0 @@ -/* Copyright 2020 mtei - * - * 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 . - */ - -#include -#include -#include QMK_KEYBOARD_H - -#include "pseudo_sprintf.h" - -extern int current_default_layer; - -//OLED update loop -#if defined(OLED_ENABLE) - -oled_rotation_t oled_init_user(oled_rotation_t rotation) { - if (is_keyboard_master()) { - return OLED_ROTATION_0; - } else { - return OLED_ROTATION_180; - } -} - -#ifndef PSEUDO_SPRINTF_DEFINED -#include "pseudo_sprintf.c" -#endif - -static void render_logo(void) { - static const char helix_logo[] PROGMEM = { - 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, - 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, - 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4, - 0}; - oled_write_P(helix_logo, false); -# if defined(RGBLIGHT_ENABLE) || defined(DEBUG_MATRIX_SCAN_RATE) - char buf[30]; - char *bufp; -# endif -# ifdef RGBLIGHT_ENABLE - if (RGBLIGHT_MODES > 1 && rgblight_is_enabled()) { - bufp = sprint2d(buf, " LED ", rgblight_get_mode()); -# ifdef DEBUG_MATRIX_SCAN_RATE - bufp = sprintd(bufp, " scan:", get_matrix_scan_rate()); -# else - bufp = sprintd(bufp, ": ", rgblight_get_hue()/RGBLIGHT_HUE_STEP); - bufp = sprintd(bufp, ",", rgblight_get_sat()/RGBLIGHT_SAT_STEP); - bufp = sprintd(bufp, ",", rgblight_get_val()/RGBLIGHT_VAL_STEP); - bufp = sprints(bufp, " "); -# endif - oled_write(buf, false); - } else { -# ifdef DEBUG_MATRIX_SCAN_RATE - bufp = sprintd(buf, " scan:", get_matrix_scan_rate()); - oled_write(buf, false); -# endif // DEBUG_MATRIX_SCAN_RATE - oled_write_P( PSTR("\n"), false); - } -# else // ifndef RGBLIGHT_ENABLE -# ifdef DEBUG_MATRIX_SCAN_RATE - bufp = sprintd(buf, " scan:", get_matrix_scan_rate()); - bufp = sprints(bufp, " "); - oled_write(buf, false); -# endif -# endif // RGBLIGHT_ENABLE -} - -/* weak reference */ __attribute__((weak)) extern const char *layer_names[]; -/* weak reference */ __attribute__((weak)) extern const size_t num_of_layer_names; - -void render_status(void) { - // Render to mode icon - static const char os_logo[][2][3] PROGMEM ={{{0x95,0x96,0},{0xb5,0xb6,0}},{{0x97,0x98,0},{0xb7,0xb8,0}}}; - if(keymap_config.swap_lalt_lgui==false){ - oled_write_P(os_logo[0][0], false); - oled_write_P(PSTR("\n"), false); - oled_write_P(os_logo[0][1], false); - } else { - oled_write_P(os_logo[1][0], false); - oled_write_P(PSTR("\n"), false); - oled_write_P(os_logo[1][1], false); - } - - // Define layers here, Have not worked out how to have text displayed for each layer. Copy down the number you see and add a case for it below - int name_num, max_name_num; - uint32_t lstate; - char buf[16]; - max_name_num = 0; - if (layer_names != NULL) { - max_name_num = num_of_layer_names; - oled_write_P(layer_names[current_default_layer], false); - } else { - sprintd(buf, " layer:", current_default_layer); - oled_write(buf, false); - } -# ifdef DEBUG_MATRIX_SCAN_RATE - sprintd(buf, " scan:", get_matrix_scan_rate()); - oled_write(buf, false); -# endif - oled_write_P(PSTR("\n"), false); - for (lstate = layer_state, name_num = 0; lstate; lstate >>=1, name_num++) { - if ((lstate & 1) != 0) { - if (name_num < max_name_num && layer_names[name_num]) { - oled_write_P(layer_names[name_num], false); - } else { - sprintd(buf, ":", name_num); - oled_write(buf, false); - } - } - } - oled_write_P(PSTR("\n"), false); - - // Host Keyboard LED Status - led_t led_state = host_keyboard_led_state(); - oled_write_P(led_state.num_lock ? PSTR("NUMLOCK ") : PSTR(" "), false); - oled_write_P(led_state.caps_lock ? PSTR("CAPS ") : PSTR(" "), false); - oled_write_P(led_state.scroll_lock ? PSTR("SCLK ") : PSTR(" "), false); -} - -bool oled_task_user(void) { - -# if DEBUG_TO_SCREEN - if (debug_enable) { - return; - } -# endif - - if(is_keyboard_master()){ - render_status(); - }else{ - render_logo(); - } - return false; -} - -#endif diff --git a/users/mtei/pseudo_sprintf.c b/users/mtei/pseudo_sprintf.c deleted file mode 100644 index 446e3efc65..0000000000 --- a/users/mtei/pseudo_sprintf.c +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2022 Takeshi Ishii (@mtei) -// SPDX-License-Identifier: GPL-2.0-or-later - -#include "pseudo_sprintf.h" - -static char *sprint_decimal(char *buf, int data) { - if (data > 9) { - buf = sprint_decimal(buf, data/10); - } - *buf++ = "0123456789"[data%10]; - *buf = '\0'; - return buf; -} - -static char *sprint_hex(char *buf, uint32_t data) { - if (data > 0xf) { - buf = sprint_hex(buf, data/0x10); - } - *buf++ = "0123456789abcdef"[data & 0xf]; - *buf = '\0'; - return buf; -} - -char *sprints(char *buf, char *src) { - while (*src) { - *buf++ = *src++; - } - *buf = '\0'; - return buf; -} - -char *sprintx(char *buf, char *leadstr, uint32_t data) { - buf = sprints(buf, leadstr); - buf = sprint_hex(buf, data); - return buf; -} - -char *sprintd(char *buf, char *leadstr, int data) { - buf = sprints(buf, leadstr); - buf = sprint_decimal(buf, data); - return buf; -} - -char *sprint2d(char *buf, char *leadstr, int data) { - buf = sprints(buf, leadstr); - if (data > 99) { - return sprint_decimal(buf, data); - } - if (data < 10) { - *buf++ = ' '; - } - return sprint_decimal(buf, data); -} diff --git a/users/mtei/pseudo_sprintf.h b/users/mtei/pseudo_sprintf.h deleted file mode 100644 index 1b91ee5ea8..0000000000 --- a/users/mtei/pseudo_sprintf.h +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2022 Takeshi Ishii (@mtei) -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once - -char *sprints(char *buf, char *src); -char *sprintd(char *buf, char *leadstr, int data); -char *sprint2d(char *buf, char *leadstr, int data); diff --git a/users/mtei/rules.mk b/users/mtei/rules.mk deleted file mode 100644 index 780393ba12..0000000000 --- a/users/mtei/rules.mk +++ /dev/null @@ -1,9 +0,0 @@ -VPATH += $(USER_PATH)/$(PLATFORM_PATH) -VPATH += $(USER_PATH)/$(PLATFORM_PATH)/$(PLATFORM_KEY) - -CUSTOM_MATRIX_DELAY = on-demand - -ifneq ($(strip $(USROPT)),) - include $(USER_PATH)/user_options.mk -endif -include $(USER_PATH)/user_featues.mk diff --git a/users/mtei/user_featues.mk b/users/mtei/user_featues.mk deleted file mode 100644 index 243e80dde9..0000000000 --- a/users/mtei/user_featues.mk +++ /dev/null @@ -1,60 +0,0 @@ -# Copyright (c) 2022 Takeshi Ishii (mtei@github) -# SPDX-License-Identifier: GPL-2.0-or-later - -ifeq ($(strip $(LED_ANIMATIONS)), yes) - OPT_DEFS += -DLED_ANIMATIONS - OPT_DEFS += -DLED_ANIMATIONS_LEVEL=2 -endif - -ifeq ($(strip $(LED_ANIMATIONS)), mini) - OPT_DEFS += -DLED_ANIMATIONS - OPT_DEFS += -DLED_ANIMATIONS_LEVEL=1 -endif - -ifeq ($(strip $(DEBUG_CONFIG)), yes) - OPT_DEFS += -DDEBUG_CONFIG -endif - -ifeq ($(strip $(CUSTOM_MATRIX_DELAY)),on-demand) - SRC += matrix_output_unselect_delay_ondemand.c -endif - -ifneq ($(strip $(MDELAY)),) - OPT_DEFS += -DMATRIX_IO_DELAY=$(strip $(MDELAY)) -endif - -ifeq ($(strip $(ENABLE_COLEMAK)),yes) - OPT_DEFS += -DENABLE_COLEMAK -endif - -ifeq ($(strip $(ENABLE_DVORAK)),yes) - OPT_DEFS += -DENABLE_DVORAK -endif - -ifeq ($(strip $(ENABLE_EUCALYN)),yes) - OPT_DEFS += -DENABLE_EUCALYN -endif - -ifeq ($(strip $(ENCODER_ENABLE)),yes) - SRC += encoder_update_user.c -endif - -ifeq ($(strip $(DEBUG_ENCODER)),yes) - OPT_DEFS += -DENCODER_DETECT_OVER_SPEED -endif - -ifneq ($(strip $(SYNC_TIMER_ENABLE)),yes) - OPT_DEFS += -DDISABLE_SYNC_TIMER -endif - -ifneq ($(strip $(USROPT)),) - $(info -) - $(info - CONSOLE_ENABLE = $(CONSOLE_ENABLE)) - $(info - OLED_ENABLE = $(OLED_ENABLE)) - $(info - RGBLIGHT_ENABLE = $(RGBLIGHT_ENABLE)) - $(info - ENCODER_ENABLE = $(ENCODER_ENABLE)) - $(info - MDELAY = $(MDELAY)) - $(info - CUSTOM_MATRIX_DELAY = $(CUSTOM_MATRIX_DELAY)) - $(info - DEBUG_MATRIX_SCAN_RATE_ENABLE = $(DEBUG_MATRIX_SCAN_RATE_ENABLE)) - $(info - OPT_DEFS = $(OPT_DEFS)) -endif diff --git a/users/mtei/user_options.mk b/users/mtei/user_options.mk deleted file mode 100644 index a3cf2196f9..0000000000 --- a/users/mtei/user_options.mk +++ /dev/null @@ -1,127 +0,0 @@ -# Copyright (c) 2022 Takeshi Ishii (mtei@github) -# SPDX-License-Identifier: GPL-2.0-or-later - -# -# make USROPT=