summaryrefslogtreecommitdiff
path: root/users
diff options
context:
space:
mode:
authorJoel Challis <git@zvecr.com>2023-11-26 18:36:45 +0000
committerGitHub <noreply@github.com>2023-11-27 05:36:45 +1100
commit1ed03f498fa204178c2696c510ac6a2cd8524e2d (patch)
treeb97c1f983b7e4b57c007d0feedadd3ad3e39062b /users
parent4908d4b1ca260efecf3613e6517aa3a6f2034876 (diff)
Remove userspace keymaps (#22544)
Diffstat (limited to 'users')
-rw-r--r--users/333fred/333fred.c144
-rw-r--r--users/333fred/333fred.h51
-rw-r--r--users/333fred/config.h27
-rw-r--r--users/333fred/layout_macros.h66
-rw-r--r--users/333fred/rgb.c50
-rw-r--r--users/333fred/rules.mk10
-rw-r--r--users/ajp10304/ajp10304.c176
-rw-r--r--users/ajp10304/ajp10304.h63
-rw-r--r--users/ajp10304/readme.md141
-rw-r--r--users/ajp10304/rules.mk1
-rw-r--r--users/alfrdmalr/alfrdmalr.c91
-rw-r--r--users/alfrdmalr/alfrdmalr.h286
-rw-r--r--users/alfrdmalr/config.h7
-rw-r--r--users/alfrdmalr/readme.md46
-rw-r--r--users/alfrdmalr/rules.mk8
-rw-r--r--users/anderson/dmc12.c46
-rw-r--r--users/anderson/dmc12.h9
-rw-r--r--users/anderson/seq.c38
-rw-r--r--users/anderson/seq.h14
-rw-r--r--users/anderson/smoothled.c34
-rw-r--r--users/anderson/smoothled.h6
-rw-r--r--users/arkag/arkag.c456
-rw-r--r--users/arkag/arkag.h105
-rw-r--r--users/arkag/config.h22
-rw-r--r--users/arkag/readme.md42
-rw-r--r--users/arkag/rules.mk4
-rw-r--r--users/art/.gitignore3
-rw-r--r--users/art/art.c722
-rw-r--r--users/art/art.h107
-rw-r--r--users/art/art_user_config.h.example7
-rw-r--r--users/art/config.h14
-rw-r--r--users/art/custom_definitions.h.example8
-rw-r--r--users/art/funcs/led_funcs.c55
-rw-r--r--users/art/funcs/led_funcs.h17
-rw-r--r--users/art/funcs/string_funcs.c307
-rw-r--r--users/art/funcs/string_funcs.h14
-rw-r--r--users/art/rules.mk15
-rw-r--r--users/art/secr.h.example9
-rw-r--r--users/badger/README.md31
-rw-r--r--users/badger/badger.c49
-rw-r--r--users/badger/badger.h109
-rw-r--r--users/badger/ortho.c151
-rw-r--r--users/badger/ortho.h58
-rw-r--r--users/badger/rules.mk2
-rw-r--r--users/bcat/bcat.c61
-rw-r--r--users/bcat/bcat.h58
-rw-r--r--users/bcat/bcat_oled.c216
-rw-r--r--users/bcat/bcat_oled.h55
-rw-r--r--users/bcat/bcat_oled_pet.h73
-rw-r--r--users/bcat/bcat_oled_pet_isda.c134
-rw-r--r--users/bcat/bcat_oled_pet_luna.c168
-rw-r--r--users/bcat/bcat_rgblight.c22
-rwxr-xr-xusers/bcat/compile.sh52
-rw-r--r--users/bcat/config.h150
-rw-r--r--users/bcat/readme.md51
-rw-r--r--users/bcat/rules.mk68
-rw-r--r--users/billypython/billypython.c32
-rw-r--r--users/billypython/billypython.h34
-rw-r--r--users/billypython/config.h17
-rw-r--r--users/billypython/rules.mk6
-rw-r--r--users/billypython/tap_dance.c33
-rw-r--r--users/billypython/tap_dance.h9
-rw-r--r--users/brandonschlack/brandonschlack.c211
-rw-r--r--users/brandonschlack/brandonschlack.h84
-rw-r--r--users/brandonschlack/config.h55
-rw-r--r--users/brandonschlack/process_records.c172
-rw-r--r--users/brandonschlack/process_records.h152
-rw-r--r--users/brandonschlack/readme.md48
-rw-r--r--users/brandonschlack/rgb_bs.c146
-rw-r--r--users/brandonschlack/rgb_bs.h35
-rw-r--r--users/brandonschlack/rgb_theme.h50
-rw-r--r--users/brandonschlack/rgb_theme_user.inc95
-rw-r--r--users/brandonschlack/rules.mk34
-rw-r--r--users/brandonschlack/tap_dances.c91
-rw-r--r--users/brandonschlack/tap_dances.h52
-rw-r--r--users/brett/brett.c61
-rw-r--r--users/brett/brett.h25
-rw-r--r--users/brett/rules.mk1
-rw-r--r--users/byungyoonc/byungyoonc.c48
-rw-r--r--users/byungyoonc/byungyoonc.h27
-rw-r--r--users/byungyoonc/readme.md14
-rw-r--r--users/byungyoonc/rules.mk1
-rw-r--r--users/byungyoonc/saturated_solid_multisplash.h50
-rw-r--r--users/callum/callum.c130
-rw-r--r--users/callum/oneshot.c57
-rw-r--r--users/callum/oneshot.h31
-rw-r--r--users/callum/readme.md99
-rw-r--r--users/callum/rules.mk3
-rw-r--r--users/callum/swapper.c27
-rw-r--r--users/callum/swapper.h20
-rw-r--r--users/cameronjlarsen/features/oneshot.c66
-rw-r--r--users/cameronjlarsen/features/oneshot.h41
-rw-r--r--users/cameronjlarsen/rules.mk5
-rw-r--r--users/cbbrowne/cbbrowne.c0
-rw-r--r--users/cbbrowne/cbbrowne.h39
-rw-r--r--users/cbbrowne/rules.mk1
-rw-r--r--users/cedrikl/cedrikl.c36
-rw-r--r--users/cedrikl/cedrikl.h21
-rw-r--r--users/cedrikl/config.h25
-rw-r--r--users/cedrikl/rules.mk4
-rw-r--r--users/charlesrocket/apl.c183
-rw-r--r--users/charlesrocket/rules.mk3
-rw-r--r--users/cjuniet/cjuniet.c13
-rw-r--r--users/cjuniet/cjuniet.h5
-rw-r--r--users/cjuniet/glcdfont.c230
-rw-r--r--users/cjuniet/readme.md14
-rw-r--r--users/cjuniet/rules.mk1
-rw-r--r--users/csc027/csc027.c70
-rw-r--r--users/csc027/csc027.h46
-rw-r--r--users/csc027/custom_audio.c34
-rw-r--r--users/csc027/custom_audio.h25
-rw-r--r--users/csc027/custom_rgb.c42
-rw-r--r--users/csc027/custom_rgb.h26
-rw-r--r--users/csc027/defines.h345
-rw-r--r--users/csc027/rules.mk11
-rw-r--r--users/csc027/usb_led.c49
-rw-r--r--users/csc027/usb_led.h20
-rw-r--r--users/curry/.gitignore1
-rw-r--r--users/curry/LICENSE14
-rw-r--r--users/curry/README.md30
-rw-r--r--users/curry/config.h112
-rw-r--r--users/curry/curry.c133
-rw-r--r--users/curry/curry.h67
-rw-r--r--users/curry/glcdfont.c232
-rw-r--r--users/curry/leader_user.c31
-rw-r--r--users/curry/leader_user.h3
-rw-r--r--users/curry/oled.c172
-rw-r--r--users/curry/process_records.c76
-rw-r--r--users/curry/process_records.h101
-rw-r--r--users/curry/rgb_lighting_user.c331
-rw-r--r--users/curry/rgb_lighting_user.h19
-rw-r--r--users/curry/rgb_matrix_user.c153
-rw-r--r--users/curry/rgb_matrix_user.h7
-rw-r--r--users/curry/rgblight_breathe_table.h118
-rw-r--r--users/curry/rules.mk71
-rw-r--r--users/curry/tap_dances.c4
-rw-r--r--users/curry/tap_dances.h1
-rw-r--r--users/curry/wrappers.h88
-rw-r--r--users/cwebster2/config.h56
-rw-r--r--users/cwebster2/cwebster2.c65
-rw-r--r--users/cwebster2/cwebster2.h51
-rw-r--r--users/cwebster2/keycodes.c54
-rw-r--r--users/cwebster2/keycodes.h27
-rw-r--r--users/cwebster2/my_miryoku.h77
-rw-r--r--users/cwebster2/rules.mk13
-rw-r--r--users/d4mation/config.h1
-rw-r--r--users/d4mation/d4mation.c37
-rw-r--r--users/d4mation/d4mation.h17
-rw-r--r--users/d4mation/macros.c160
-rw-r--r--users/d4mation/macros.h23
-rw-r--r--users/d4mation/rules.mk15
-rw-r--r--users/d4mation/tap-dance.c6
-rw-r--r--users/d4mation/tap-dance.h7
-rw-r--r--users/d4mation/tap-hold.c28
-rw-r--r--users/d4mation/tap-hold.h5
-rw-r--r--users/d4mation/zalgo.c21
-rw-r--r--users/d4mation/zalgo.h5
-rw-r--r--users/danielo515/alt_tab.c38
-rw-r--r--users/danielo515/alt_tab.h4
-rw-r--r--users/danielo515/combo.c44
-rw-r--r--users/danielo515/combo.h2
-rw-r--r--users/danielo515/config.h9
-rw-r--r--users/danielo515/danielo515.c124
-rw-r--r--users/danielo515/danielo515.h7
-rw-r--r--users/danielo515/process_records.c197
-rw-r--r--users/danielo515/process_records.h108
-rw-r--r--users/danielo515/readme.md14
-rw-r--r--users/danielo515/rules.mk11
-rw-r--r--users/danielo515/tap_dance.c139
-rw-r--r--users/danielo515/tap_dance.h81
-rw-r--r--users/datagrok/README.md63
-rw-r--r--users/datagrok/feature_cdeq.c47
-rw-r--r--users/datagrok/feature_cdeq.h2
-rw-r--r--users/datagrok/feature_default_layers_selector.c46
-rw-r--r--users/datagrok/feature_default_layers_selector.h69
-rw-r--r--users/davidkristoffersen/davidkristoffersen.h18
-rw-r--r--users/davidkristoffersen/hardware/readme.md3
-rw-r--r--users/davidkristoffersen/hardware/split_space.c23
-rw-r--r--users/davidkristoffersen/hardware/split_space.h16
-rw-r--r--users/davidkristoffersen/macros/debug.c36
-rw-r--r--users/davidkristoffersen/macros/language.c40
-rw-r--r--users/davidkristoffersen/macros/macros.c16
-rw-r--r--users/davidkristoffersen/macros/macros.h23
-rw-r--r--users/davidkristoffersen/macros/norwegian.h19
-rw-r--r--users/davidkristoffersen/macros/readme.md3
-rw-r--r--users/davidkristoffersen/post_config.h8
-rw-r--r--users/davidkristoffersen/readme.md3
-rw-r--r--users/davidkristoffersen/rules.mk12
-rw-r--r--users/davidkristoffersen/util/functions.c111
-rw-r--r--users/davidkristoffersen/util/functions.h30
-rw-r--r--users/davidkristoffersen/util/readme.md3
-rw-r--r--users/dennytom/chording_engine/README.md376
-rw-r--r--users/dennytom/chording_engine/chord.py465
-rw-r--r--users/dennytom/chording_engine/engine.part.1163
-rw-r--r--users/dennytom/chording_engine/engine.part.2323
-rw-r--r--users/dennytom/chording_engine/engine.part.3404
-rw-r--r--users/dennytom/chording_engine/keymap_def.schema.json337
-rw-r--r--users/dennytom/chording_engine/parser.py231
-rw-r--r--users/dennytom/chording_engine/state_machine.dot49
-rw-r--r--users/dennytom/chording_engine/state_machine.svg235
-rw-r--r--users/dennytom/chording_engine/tests/minunit.h288
-rw-r--r--users/dennytom/chording_engine/tests/test.c1259
-rw-r--r--users/dennytom/chording_engine/tests/test_full.sh11
-rw-r--r--users/dennytom/chording_engine/tests/test_keymap_def.json145
-rw-r--r--users/dennytom/chording_engine/tests/test_quick.sh6
-rw-r--r--users/devdev/config.h30
-rw-r--r--users/devdev/glcdfont.c465
-rw-r--r--users/dhertz/config.h9
-rw-r--r--users/dhertz/dhertz.c109
-rw-r--r--users/dhertz/dhertz.h28
-rw-r--r--users/dhertz/rules.mk1
-rw-r--r--users/doogle999/doogle999.c460
-rw-r--r--users/doogle999/doogle999.h99
-rw-r--r--users/doogle999/readme.md41
-rw-r--r--users/doogle999/rules.mk14
-rw-r--r--users/draevin/LICENSE14
-rw-r--r--users/draevin/README.md38
-rw-r--r--users/draevin/config.h26
-rw-r--r--users/draevin/draevin.c59
-rw-r--r--users/draevin/draevin.h39
-rw-r--r--users/draevin/rules.mk12
-rw-r--r--users/draevin/wrappers.h49
-rw-r--r--users/drashna/.gitignore3
-rw-r--r--users/drashna/.gitlab-ci.yml24
-rw-r--r--users/drashna/audio_config.h33
-rw-r--r--users/drashna/autocorrect_data.h93
-rw-r--r--users/drashna/bootmagic_better.c56
-rw-r--r--users/drashna/callbacks.c292
-rw-r--r--users/drashna/callbacks.h26
-rw-r--r--users/drashna/callbacks.md71
-rw-r--r--users/drashna/config.h115
-rw-r--r--users/drashna/drashna.c319
-rw-r--r--users/drashna/drashna.h115
-rw-r--r--users/drashna/eeconfig_users.c53
-rw-r--r--users/drashna/eeconfig_users.h12
-rw-r--r--users/drashna/keyrecords/dynamic_macros.c283
-rw-r--r--users/drashna/keyrecords/dynamic_macros.h50
-rw-r--r--users/drashna/keyrecords/keycodes.md13
-rw-r--r--users/drashna/keyrecords/process_records.c200
-rw-r--r--users/drashna/keyrecords/process_records.h150
-rw-r--r--users/drashna/keyrecords/readme.md7
-rw-r--r--users/drashna/keyrecords/secrets.md122
-rw-r--r--users/drashna/keyrecords/tap_dance.md121
-rw-r--r--users/drashna/keyrecords/tap_dances.c67
-rw-r--r--users/drashna/keyrecords/tap_dances.h31
-rw-r--r--users/drashna/keyrecords/tapping.c66
-rw-r--r--users/drashna/keyrecords/unicode.c446
-rw-r--r--users/drashna/keyrecords/unicode.h21
-rw-r--r--users/drashna/keyrecords/unicode.md27
-rw-r--r--users/drashna/keyrecords/wrappers.h266
-rw-r--r--users/drashna/keyrecords/wrappers.md11
-rw-r--r--users/drashna/oled/drashna_font.h1060
-rw-r--r--users/drashna/oled/oled_assets.h207
-rw-r--r--users/drashna/oled/oled_config.h40
-rw-r--r--users/drashna/oled/oled_stuff.c830
-rw-r--r--users/drashna/oled/oled_stuff.h169
-rw-r--r--users/drashna/oled/readme.md42
-rw-r--r--users/drashna/oled/rules.mk12
-rw-r--r--users/drashna/pointing/pointing.c118
-rw-r--r--users/drashna/pointing/pointing.h11
-rw-r--r--users/drashna/pointing/pointing_config.h6
-rw-r--r--users/drashna/pointing/readme.md19
-rw-r--r--users/drashna/post_config.h143
-rw-r--r--users/drashna/readme.md17
-rw-r--r--users/drashna/rgb/readme.md52
-rw-r--r--users/drashna/rgb/rgb_matrix_config.h106
-rw-r--r--users/drashna/rgb/rgb_matrix_stuff.c190
-rw-r--r--users/drashna/rgb/rgb_matrix_stuff.h17
-rw-r--r--users/drashna/rgb/rgb_stuff.c165
-rw-r--r--users/drashna/rgb/rgb_stuff.h15
-rw-r--r--users/drashna/rgb/rgblight_config.h12
-rw-r--r--users/drashna/rgblight_breathe_table.h121
-rw-r--r--users/drashna/rules.mk136
-rw-r--r--users/drashna/split/readme.md29
-rw-r--r--users/drashna/split/split_config.h26
-rw-r--r--users/drashna/split/transport_sync.c201
-rw-r--r--users/drashna/split/transport_sync.h28
-rw-r--r--users/drashna/template.c57
-rw-r--r--users/drashna/template.h18
-rw-r--r--users/dshields/config.h64
-rw-r--r--users/dshields/dshields.c57
-rw-r--r--users/dshields/dshields.h65
-rw-r--r--users/dshields/rules.mk31
-rw-r--r--users/dudeofawesome/dudeofawesome.c1
-rw-r--r--users/dudeofawesome/dudeofawesome.h29
-rw-r--r--users/dudeofawesome/rules.mk1
-rw-r--r--users/dvorak_42_key/config.h8
-rw-r--r--users/dvorak_42_key/dvorak_42_key.c205
-rw-r--r--users/dvorak_42_key/dvorak_42_key.h161
-rw-r--r--users/dvorak_42_key/rules.mk7
-rw-r--r--users/dvorak_42_key/vscode_macros.h35
-rw-r--r--users/edvorakjp/edvorakjp.c22
-rw-r--r--users/edvorakjp/edvorakjp.h90
-rw-r--r--users/edvorakjp/edvorakjp_process_record.c89
-rw-r--r--users/edvorakjp/edvorakjp_status.c56
-rw-r--r--users/edvorakjp/edvorakjp_tap_dance.c78
-rw-r--r--users/edvorakjp/readme.md67
-rw-r--r--users/edvorakjp/rules.mk7
-rw-r--r--users/ericgebhart/base_layers/accents.h90
-rw-r--r--users/ericgebhart/base_layers/alt.h150
-rw-r--r--users/ericgebhart/base_layers/base_layers.h58
-rw-r--r--users/ericgebhart/base_layers/beakl.h158
-rw-r--r--users/ericgebhart/base_layers/bepo.h114
-rw-r--r--users/ericgebhart/base_layers/carpalx.h46
-rw-r--r--users/ericgebhart/base_layers/dvorak.h73
-rw-r--r--users/ericgebhart/base_layers/gap.h67
-rw-r--r--users/ericgebhart/base_layers/hands_down.h147
-rw-r--r--users/ericgebhart/base_layers/keymaps.txt300
-rw-r--r--users/ericgebhart/base_layers/maks.h61
-rw-r--r--users/ericgebhart/base_layers/qwerty.h69
-rw-r--r--users/ericgebhart/base_layers/toprows.h56
-rw-r--r--users/ericgebhart/config.h321
-rw-r--r--users/ericgebhart/defs/accented_keys.def101
-rw-r--r--users/ericgebhart/defs/alt_shift.def6
-rw-r--r--users/ericgebhart/defs/altlocal_keys.def208
-rw-r--r--users/ericgebhart/defs/combos.def139
-rw-r--r--users/ericgebhart/defs/custom_keys.def86
-rw-r--r--users/ericgebhart/defs/encoders.def65
-rw-r--r--users/ericgebhart/defs/key_overrides.def23
-rw-r--r--users/ericgebhart/defs/mod_lock.def19
-rw-r--r--users/ericgebhart/defs/not_dead.def19
-rw-r--r--users/ericgebhart/defs/nshot.def45
-rw-r--r--users/ericgebhart/defs/oneshot.def17
-rw-r--r--users/ericgebhart/defs/send_string.def7
-rw-r--r--users/ericgebhart/defs/smart_lock.def123
-rw-r--r--users/ericgebhart/defs/swapper.def3
-rw-r--r--users/ericgebhart/defs/tap_hold.def68
-rw-r--r--users/ericgebhart/defs/unicode.def5
-rwxr-xr-xusers/ericgebhart/ericgebhart.c42
-rwxr-xr-xusers/ericgebhart/ericgebhart.h28
-rw-r--r--users/ericgebhart/extensions/accented_keys.c50
-rw-r--r--users/ericgebhart/extensions/accented_keys.h19
-rw-r--r--users/ericgebhart/extensions/alt_shift.c99
-rw-r--r--users/ericgebhart/extensions/altlocal_keys.c82
-rw-r--r--users/ericgebhart/extensions/altlocal_keys.h56
-rw-r--r--users/ericgebhart/extensions/console_key_logger.c38
-rw-r--r--users/ericgebhart/extensions/console_key_logger.h19
-rw-r--r--users/ericgebhart/extensions/encoders.c83
-rw-r--r--users/ericgebhart/extensions/encoders.h46
-rw-r--r--users/ericgebhart/extensions/extensions.c91
-rw-r--r--users/ericgebhart/extensions/extensions.h22
-rw-r--r--users/ericgebhart/extensions/key_overrides.h53
-rwxr-xr-xusers/ericgebhart/extensions/keycodes.h523
-rw-r--r--users/ericgebhart/extensions/keymap_combo.h136
-rw-r--r--users/ericgebhart/extensions/mod_lock.c81
-rw-r--r--users/ericgebhart/extensions/mod_lock.h39
-rw-r--r--users/ericgebhart/extensions/not_dead.c36
-rw-r--r--users/ericgebhart/extensions/nshot_mod.c154
-rw-r--r--users/ericgebhart/extensions/nshot_mod.h45
-rw-r--r--users/ericgebhart/extensions/oneshot.c217
-rw-r--r--users/ericgebhart/extensions/oneshot.h37
-rw-r--r--users/ericgebhart/extensions/process_locales.h29
-rw-r--r--users/ericgebhart/extensions/process_nshot.h21
-rw-r--r--users/ericgebhart/extensions/process_smart_lock.h19
-rw-r--r--users/ericgebhart/extensions/quick_tap.c37
-rw-r--r--users/ericgebhart/extensions/send_string.c40
-rw-r--r--users/ericgebhart/extensions/smart_lock.c117
-rw-r--r--users/ericgebhart/extensions/smart_lock.h103
-rw-r--r--users/ericgebhart/extensions/swapper.c58
-rw-r--r--users/ericgebhart/extensions/swapper.h37
-rwxr-xr-xusers/ericgebhart/extensions/tap_dances.c277
-rwxr-xr-xusers/ericgebhart/extensions/tap_dances.h19
-rw-r--r--users/ericgebhart/extensions/tap_hold.c165
-rw-r--r--users/ericgebhart/extensions/tap_hold.h20
-rw-r--r--users/ericgebhart/extensions/unicode.c34
-rw-r--r--users/ericgebhart/extensions/unicode.h24
-rw-r--r--users/ericgebhart/keyboards/keyboards.h115
-rw-r--r--users/ericgebhart/keyboards/layouts.h771
-rw-r--r--users/ericgebhart/keymap/keymap.c142
-rw-r--r--users/ericgebhart/keymap/map_accented.h26
-rw-r--r--users/ericgebhart/keymap/map_alt.h69
-rw-r--r--users/ericgebhart/keymap/map_beakl.h48
-rw-r--r--users/ericgebhart/keymap/map_bepo.h40
-rw-r--r--users/ericgebhart/keymap/map_carpalx.h25
-rw-r--r--users/ericgebhart/keymap/map_dvorak.h31
-rw-r--r--users/ericgebhart/keymap/map_funcs.h127
-rw-r--r--users/ericgebhart/keymap/map_gap.h31
-rw-r--r--users/ericgebhart/keymap/map_hd.h117
-rw-r--r--users/ericgebhart/keymap/map_keypads.h66
-rw-r--r--users/ericgebhart/keymap/map_maks.h34
-rw-r--r--users/ericgebhart/keymap/map_qwerty.h25
-rw-r--r--users/ericgebhart/keymap/map_symbols.h56
-rw-r--r--users/ericgebhart/keymap/map_toprows.h45
-rw-r--r--users/ericgebhart/lang/lang.h106
-rw-r--r--users/ericgebhart/lang/lang_map.h78
-rw-r--r--users/ericgebhart/lang/locale_layers.h27
-rw-r--r--users/ericgebhart/lang/locales.c60
-rw-r--r--users/ericgebhart/lang/locales.h42
-rw-r--r--users/ericgebhart/layer_names/base_names.h173
-rw-r--r--users/ericgebhart/layer_names/func_names.h38
-rw-r--r--users/ericgebhart/layer_names/layer_names.h75
-rw-r--r--users/ericgebhart/layer_names/util_names.h59
-rw-r--r--users/ericgebhart/layers/edge_keys.h420
-rw-r--r--users/ericgebhart/layers/keypads.h236
-rwxr-xr-xusers/ericgebhart/layers/layers.h112
-rw-r--r--users/ericgebhart/layers/nav.h199
-rw-r--r--users/ericgebhart/layers/symbols.h225
-rw-r--r--users/ericgebhart/layers/thumbs.h276
-rw-r--r--users/ericgebhart/layers/toprows.h80
-rw-r--r--users/ericgebhart/layers/utility.h125
-rwxr-xr-xusers/ericgebhart/listen_keylogger.sh1
-rw-r--r--users/ericgebhart/miryoku_hd_gold_config.h323
-rw-r--r--users/ericgebhart/mod_layers/alt_mods.h129
-rw-r--r--users/ericgebhart/mod_layers/hrm_gacs.h130
-rw-r--r--users/ericgebhart/mod_layers/hrm_gacs_miryoku.h130
-rw-r--r--users/ericgebhart/mod_layers/hrm_gasc.h130
-rw-r--r--users/ericgebhart/mod_layers/hrm_sacg.h130
-rw-r--r--users/ericgebhart/mod_layers/hrs_nav.h126
-rw-r--r--users/ericgebhart/mod_layers/mod_layer.h155
-rw-r--r--users/ericgebhart/mod_layers/trns_mods.h129
-rw-r--r--users/ericgebhart/oled/oled_cartes.c325
-rw-r--r--users/ericgebhart/oled/oled_layers.c252
-rwxr-xr-xusers/ericgebhart/oled/oled_stuff.c189
-rwxr-xr-xusers/ericgebhart/oled/oled_stuff.h61
-rwxr-xr-xusers/ericgebhart/process_records.c51
-rwxr-xr-xusers/ericgebhart/readme.md1584
-rwxr-xr-xusers/ericgebhart/rules.mk87
-rw-r--r--users/gary/gary.c1
-rw-r--r--users/gary/gary.h42
-rw-r--r--users/gary/readme.md14
-rw-r--r--users/gary/rules.mk1
-rw-r--r--users/gourdo1/autocorrect/autocorrection.c182
-rw-r--r--users/gourdo1/autocorrect/autocorrection.h40
-rw-r--r--users/gourdo1/autocorrect/autocorrection_data.h722
-rw-r--r--users/gourdo1/autocorrect/autocorrection_data.h (large)722
-rw-r--r--users/gourdo1/autocorrect/autocorrection_data.h (small)152
-rw-r--r--users/gourdo1/autocorrect/autocorrection_dict.txt473
-rw-r--r--users/gourdo1/autocorrect/make_autocorrection_data.py303
-rw-r--r--users/gourdo1/custom_double_taps.h101
-rw-r--r--users/gourdo1/gourdo1.c631
-rw-r--r--users/gourdo1/gourdo1.h148
-rw-r--r--users/gourdo1/gourdo1_encoder.c238
-rw-r--r--users/gourdo1/rules.mk31
-rw-r--r--users/greatwizard/config.h40
-rw-r--r--users/greatwizard/fn.h21
-rw-r--r--users/greatwizard/game.c27
-rw-r--r--users/greatwizard/game.h21
-rw-r--r--users/greatwizard/git.c127
-rw-r--r--users/greatwizard/git.h39
-rw-r--r--users/greatwizard/greatwizard.c113
-rw-r--r--users/greatwizard/greatwizard.h135
-rw-r--r--users/greatwizard/keymap_helpers.h61
-rw-r--r--users/greatwizard/ortho.c21
-rw-r--r--users/greatwizard/ortho.h24
-rw-r--r--users/greatwizard/programmer.c174
-rw-r--r--users/greatwizard/programmer.h31
-rw-r--r--users/greatwizard/readme.md32
-rw-r--r--users/greatwizard/rules.mk31
-rw-r--r--users/greatwizard/tap_dances.c105
-rw-r--r--users/greatwizard/tap_dances.h65
-rw-r--r--users/greatwizard/underglow.c109
-rw-r--r--users/greatwizard/underglow.h24
-rw-r--r--users/haervig/config.h19
-rw-r--r--users/haervig/haervig.c234
-rw-r--r--users/haervig/haervig.h297
-rw-r--r--users/haervig/readme.md11
-rw-r--r--users/haervig/rules.mk5
-rw-r--r--users/horrortroll/config.h64
-rw-r--r--users/horrortroll/horrortroll.c165
-rw-r--r--users/horrortroll/horrortroll.h49
-rw-r--r--users/horrortroll/led/cool_diagonal.c22
-rw-r--r--users/horrortroll/led/custom_gradient.c74
-rw-r--r--users/horrortroll/led/flower_blooming/flower_blooming.c27
-rw-r--r--users/horrortroll/led/flower_blooming/flower_blooming.h36
-rw-r--r--users/horrortroll/led/random_breath_rainbow.c55
-rw-r--r--users/horrortroll/readme.md24
-rw-r--r--users/horrortroll/rgb_matrix_user.inc13
-rw-r--r--users/horrortroll/rules.mk6
-rw-r--r--users/hvp/config.h19
-rw-r--r--users/hvp/hvp.c2
-rw-r--r--users/hvp/hvp.h43
-rw-r--r--users/hvp/per_key.c43
-rw-r--r--users/hvp/readme.md1
-rw-r--r--users/hvp/rules.mk9
-rw-r--r--users/hvp/tap_dances.c103
-rw-r--r--users/hvp/tap_dances.h29
-rw-r--r--users/ibnuda/abstraction.c17
-rw-r--r--users/ibnuda/abstraction.h117
-rw-r--r--users/ibnuda/combo.c1
-rw-r--r--users/ibnuda/combo.h96
-rw-r--r--users/ibnuda/config.h5
-rw-r--r--users/ibnuda/ibnuda.c1
-rw-r--r--users/ibnuda/ibnuda.h5
-rw-r--r--users/ibnuda/readme.md14
-rw-r--r--users/ibnuda/rules.mk8
-rw-r--r--users/ibnuda/wrapper.h8
-rw-r--r--users/imchipwood/imchipwood.c141
-rw-r--r--users/imchipwood/imchipwood.h51
-rw-r--r--users/imchipwood/rules.mk2
-rwxr-xr-xusers/ishtob/config.h68
-rw-r--r--users/ishtob/ishtob.c69
-rw-r--r--users/ishtob/ishtob.h237
-rw-r--r--users/ishtob/readme.md87
-rwxr-xr-xusers/ishtob/rules.mk7
-rw-r--r--users/issmirnov/config.h41
-rw-r--r--users/issmirnov/issmirnov.c41
-rw-r--r--users/issmirnov/issmirnov.h35
-rw-r--r--users/issmirnov/rows.h55
-rw-r--r--users/issmirnov/rules.mk25
-rw-r--r--users/issmirnov/tap_tog.c52
-rw-r--r--users/issmirnov/tap_tog.h10
-rw-r--r--users/jackhumbert/jackhumbert.c1
-rw-r--r--users/jackhumbert/jackhumbert.h6
-rw-r--r--users/jackhumbert/readme.md14
-rw-r--r--users/jackhumbert/rules.mk1
-rw-r--r--users/jarred/config.h49
-rw-r--r--users/jarred/jarred.c97
-rw-r--r--users/jarred/jarred.h172
-rw-r--r--users/jarred/readme.md17
-rw-r--r--users/jarred/rules.mk16
-rw-r--r--users/jdelkins/.gitignore1
-rw-r--r--users/jdelkins/jdelkins.c287
-rw-r--r--users/jdelkins/jdelkins.h134
-rw-r--r--users/jdelkins/rules.mk15
-rw-r--r--users/jjerrell/.gitignore1
-rw-r--r--users/jjerrell/config.h26
-rw-r--r--users/jjerrell/jjerrell.c135
-rw-r--r--users/jjerrell/jjerrell.h53
-rw-r--r--users/jjerrell/process_records.c139
-rw-r--r--users/jjerrell/process_records.h41
-rw-r--r--users/jjerrell/readme.md50
-rw-r--r--users/jjerrell/rules.mk27
-rw-r--r--users/jjerrell/wrappers.h329
-rw-r--r--users/jonavin/config.h34
-rw-r--r--users/jonavin/jonavin.c233
-rw-r--r--users/jonavin/jonavin.h130
-rw-r--r--users/jonavin/jonavin_encoder.c219
-rw-r--r--users/jonavin/readme.md124
-rw-r--r--users/jonavin/rules.mk29
-rw-r--r--users/kageurufu/config.h4
-rw-r--r--users/kageurufu/custom_rgb.c18
-rw-r--r--users/kageurufu/custom_rgb.h3
-rw-r--r--users/kageurufu/kageurufu.c12
-rw-r--r--users/kageurufu/kageurufu.h5
-rw-r--r--users/kageurufu/layouts.h58
-rw-r--r--users/kageurufu/process_records.c44
-rw-r--r--users/kageurufu/process_records.h27
-rw-r--r--users/kageurufu/readme.md14
-rw-r--r--users/kageurufu/rules.mk14
-rw-r--r--users/klackygears/klackygears.c75
-rw-r--r--users/klackygears/klackygears.h72
-rw-r--r--users/klackygears/readme.md15
-rw-r--r--users/klackygears/rules.mk6
-rw-r--r--users/klackygears/tap_dances.c184
-rw-r--r--users/klackygears/tap_dances.h37
-rw-r--r--users/klackygears/wrappers.h220
-rw-r--r--users/konstantin/config.h63
-rw-r--r--users/konstantin/konstantin.c144
-rw-r--r--users/konstantin/konstantin.h104
-rw-r--r--users/konstantin/post_config.h22
-rw-r--r--users/konstantin/rgb.c42
-rw-r--r--users/konstantin/rgb.h29
-rw-r--r--users/konstantin/rules.mk18
-rw-r--r--users/konstantin/tap_dance.c135
-rw-r--r--users/konstantin/tap_dance.h45
-rw-r--r--users/konstantin/unicode.c23
-rw-r--r--users/konstantin/unicode.h50
-rw-r--r--users/kuatsure/kuatsure.c122
-rw-r--r--users/kuatsure/kuatsure.h65
-rw-r--r--users/kuatsure/readme.md14
-rw-r--r--users/kuatsure/rules.mk4
-rw-r--r--users/kuchosauronad0/.gitignore3
-rw-r--r--users/kuchosauronad0/combo.c27
-rw-r--r--users/kuchosauronad0/combo.h20
-rw-r--r--users/kuchosauronad0/config.h88
-rw-r--r--users/kuchosauronad0/encoder.c64
-rw-r--r--users/kuchosauronad0/encoder.h4
-rw-r--r--users/kuchosauronad0/kuchosauronad0.c200
-rw-r--r--users/kuchosauronad0/kuchosauronad0.h109
-rw-r--r--users/kuchosauronad0/leader_user.c113
-rw-r--r--users/kuchosauronad0/leader_user.h6
-rw-r--r--users/kuchosauronad0/process_records.c244
-rw-r--r--users/kuchosauronad0/process_records.h91
-rw-r--r--users/kuchosauronad0/readme.md217
-rw-r--r--users/kuchosauronad0/rgblight_user.c156
-rw-r--r--users/kuchosauronad0/rgblight_user.h23
-rw-r--r--users/kuchosauronad0/rules.mk49
-rw-r--r--users/kuchosauronad0/tap_dances.c55
-rw-r--r--users/kuchosauronad0/tap_dances.h26
-rw-r--r--users/kuchosauronad0/template.c125
-rw-r--r--users/kuchosauronad0/template.h18
-rw-r--r--users/kuchosauronad0/unicode.c62
-rw-r--r--users/kuchosauronad0/unicode.h64
-rw-r--r--users/kuchosauronad0/wrappers.h212
-rw-r--r--users/losinggeneration/README.md185
-rw-r--r--users/losinggeneration/losinggeneration-common.h71
-rw-r--r--users/losinggeneration/losinggeneration-config.h29
-rw-r--r--users/losinggeneration/losinggeneration-keymap.h379
-rw-r--r--users/losinggeneration/rules.mk12
-rw-r--r--users/manna-harbour_miryoku/config.h39
-rw-r--r--users/manna-harbour_miryoku/custom_config.h7
-rw-r--r--users/manna-harbour_miryoku/custom_rules.mk3
-rw-r--r--users/manna-harbour_miryoku/manna-harbour_miryoku.c91
-rw-r--r--users/manna-harbour_miryoku/manna-harbour_miryoku.h51
-rw-r--r--users/manna-harbour_miryoku/miryoku_babel/miryoku_layer_alternatives.h389
-rw-r--r--users/manna-harbour_miryoku/miryoku_babel/miryoku_layer_list.h23
-rw-r--r--users/manna-harbour_miryoku/miryoku_babel/miryoku_layer_selection.h277
-rw-r--r--users/manna-harbour_miryoku/post_rules.mk42
-rw-r--r--users/manna-harbour_miryoku/readme.org801
-rw-r--r--users/manna-harbour_miryoku/rules.mk15
-rw-r--r--users/mattly/config.h5
-rw-r--r--users/mattly/mattly.c78
-rw-r--r--users/mattly/mattly.h121
-rw-r--r--users/mattly/readme.md10
-rw-r--r--users/mattly/rules.mk4
-rw-r--r--users/mechmerlin/changelog.md44
-rw-r--r--users/mechmerlin/config.h44
-rw-r--r--users/mechmerlin/mechmerlin.c27
-rw-r--r--users/mechmerlin/mechmerlin.h19
-rw-r--r--users/mechmerlin/readme.md57
-rw-r--r--users/mechmerlin/rules.mk2
-rw-r--r--users/mguterl/config.h0
-rw-r--r--users/mguterl/mguterl.c1
-rw-r--r--users/mguterl/mguterl.h67
-rw-r--r--users/mguterl/readme.md14
-rw-r--r--users/mguterl/rules.mk1
-rw-r--r--users/miketronic/config.h12
-rw-r--r--users/miketronic/miketronic.c17
-rw-r--r--users/miketronic/miketronic.h63
-rw-r--r--users/miketronic/process_records.c151
-rw-r--r--users/miketronic/process_records.h38
-rw-r--r--users/miketronic/readme.md25
-rw-r--r--users/miketronic/rules.mk4
-rw-r--r--users/miketronic/tapdances.c33
-rw-r--r--users/miketronic/tapdances.h57
-rw-r--r--users/miketronic/wrappers.h226
-rw-r--r--users/miles2go/babblePaste.c223
-rw-r--r--users/miles2go/babblePaste.h383
-rw-r--r--users/miles2go/babblePaste.md244
-rw-r--r--users/miles2go/babl_chromeos.c103
-rw-r--r--users/miles2go/babl_emacs.c86
-rw-r--r--users/miles2go/babl_kitty.c153
-rw-r--r--users/miles2go/babl_linux.c102
-rw-r--r--users/miles2go/babl_mac.c152
-rw-r--r--users/miles2go/babl_nano.c77
-rw-r--r--users/miles2go/babl_readmux.c86
-rw-r--r--users/miles2go/babl_vi.c77
-rw-r--r--users/miles2go/babl_windows.c151
-rw-r--r--users/miles2go/config.h60
-rw-r--r--users/miles2go/keymaps/handwired/ms_sculpt_mobile/config.h50
-rw-r--r--users/miles2go/keymaps/handwired/ms_sculpt_mobile/keymap.c461
-rw-r--r--users/miles2go/keymaps/handwired/ms_sculpt_mobile/readme.md10
-rw-r--r--users/miles2go/keymaps/handwired/ms_sculpt_mobile/rules.mk24
-rw-r--r--users/miles2go/milestogo.c153
-rw-r--r--users/miles2go/milestogo.h302
-rw-r--r--users/miles2go/readme.md10
-rw-r--r--users/miles2go/rules.mk10
-rw-r--r--users/mnil/config.h22
-rw-r--r--users/mnil/mnil.c146
-rw-r--r--users/mnil/mnil.h85
-rw-r--r--users/mnil/readme.md23
-rw-r--r--users/mnil/rules.mk7
-rw-r--r--users/moults31/gdb.c59
-rw-r--r--users/moults31/gdb.h21
-rw-r--r--users/moults31/moults31.c114
-rw-r--r--users/moults31/moults31.h61
-rw-r--r--users/moults31/obs.c80
-rw-r--r--users/moults31/obs.h21
-rw-r--r--users/moults31/readme.md5
-rw-r--r--users/moults31/rules.mk10
-rw-r--r--users/moults31/vscode.c90
-rw-r--r--users/moults31/vscode.h21
-rw-r--r--users/mtei/config.h46
-rw-r--r--users/mtei/cpp_map.h84
-rw-r--r--users/mtei/debug_config.h6
-rw-r--r--users/mtei/encoder_update_user.c33
-rw-r--r--users/mtei/key_blocks.h40
-rw-r--r--users/mtei/layer_number_util.h17
-rw-r--r--users/mtei/matrix_output_unselect_delay_ondemand.c18
-rw-r--r--users/mtei/oled_display.c147
-rw-r--r--users/mtei/pseudo_sprintf.c53
-rw-r--r--users/mtei/pseudo_sprintf.h8
-rw-r--r--users/mtei/rules.mk9
-rw-r--r--users/mtei/user_featues.mk60
-rw-r--r--users/mtei/user_options.mk127
-rw-r--r--users/muppetjones/.clang-format26
-rw-r--r--users/muppetjones/config.h38
-rw-r--r--users/muppetjones/features/casemodes.c247
-rw-r--r--users/muppetjones/features/casemodes.h47
-rw-r--r--users/muppetjones/features/combos.c35
-rw-r--r--users/muppetjones/features/combos.h17
-rw-r--r--users/muppetjones/features/dancelayers.c98
-rw-r--r--users/muppetjones/features/dancelayers.h82
-rw-r--r--users/muppetjones/features/etchamouse.c101
-rw-r--r--users/muppetjones/features/etchamouse.h59
-rw-r--r--users/muppetjones/features/rgblayers.c69
-rw-r--r--users/muppetjones/features/rgblayers.h22
-rw-r--r--users/muppetjones/muppetjones.c52
-rw-r--r--users/muppetjones/muppetjones.h55
-rw-r--r--users/muppetjones/readme.md23
-rw-r--r--users/muppetjones/readme/dancelayers.md73
-rw-r--r--users/muppetjones/readme/etchamouse.md69
-rw-r--r--users/muppetjones/readme/rgblayers.md59
-rw-r--r--users/muppetjones/readme/tapmods.md25
-rw-r--r--users/muppetjones/readme/wrappers.md153
-rw-r--r--users/muppetjones/rules.mk25
-rw-r--r--users/muppetjones/tapmods.h77
-rw-r--r--users/muppetjones/wrappers.h247
-rw-r--r--users/mverteuil/.gitignore1
-rw-r--r--users/mverteuil/mverteuil.c2
-rw-r--r--users/mverteuil/mverteuil.h21
-rw-r--r--users/mverteuil/rules.mk1
-rw-r--r--users/narze/narze.c1
-rw-r--r--users/narze/narze.h13
-rw-r--r--users/narze/readme.md37
-rw-r--r--users/narze/rules.mk5
-rw-r--r--users/narze/superduper.c66
-rw-r--r--users/narze/superduper.h7
-rw-r--r--users/nchristus/nchristus.c18
-rw-r--r--users/nchristus/nchristus.h87
-rw-r--r--users/nchristus/rules.mk0
-rw-r--r--users/ninjonas/.gitignore1
-rw-r--r--users/ninjonas/README.md117
-rw-r--r--users/ninjonas/combos.c55
-rw-r--r--users/ninjonas/config.h20
-rw-r--r--users/ninjonas/encoder.c105
-rw-r--r--users/ninjonas/ninjonas.c39
-rw-r--r--users/ninjonas/ninjonas.h148
-rw-r--r--users/ninjonas/oled.c112
-rw-r--r--users/ninjonas/process_records.c117
-rw-r--r--users/ninjonas/process_records.h30
-rw-r--r--users/ninjonas/rules.mk16
-rw-r--r--users/ninjonas/tap_dances.c122
-rw-r--r--users/ninjonas/tap_dances.h37
-rw-r--r--users/noroadsleft/noroadsleft.c140
-rw-r--r--users/noroadsleft/noroadsleft.h37
-rw-r--r--users/noroadsleft/readme.md85
-rw-r--r--users/noroadsleft/rules.mk1
-rw-r--r--users/not-quite-neo/nqn-basic-layout.h124
-rw-r--r--users/not-quite-neo/nqn-common.h9
-rw-r--r--users/not-quite-neo/nqn-keys-on-quertz-de-latin1.h73
-rw-r--r--users/not-quite-neo/readme.md24
-rw-r--r--users/nstickney/config.h63
-rw-r--r--users/nstickney/nstickney.c96
-rw-r--r--users/nstickney/nstickney.h39
-rw-r--r--users/nstickney/readme.md49
-rw-r--r--users/nstickney/rules.mk36
-rw-r--r--users/nstickney/unicodemap.h106
-rw-r--r--users/ollyhayes/ollyhayes.c153
-rw-r--r--users/ollyhayes/ollyhayes.h41
-rw-r--r--users/ollyhayes/rules.mk1
-rw-r--r--users/pcewing/README.md85
-rw-r--r--users/pcewing/key_repeater.c168
-rw-r--r--users/pcewing/key_repeater.h68
-rw-r--r--users/pcewing/rules.mk1
-rw-r--r--users/pdl/pdl.c216
-rw-r--r--users/pdl/pdl.h135
-rw-r--r--users/pdl/rules.mk1
-rw-r--r--users/peej/layout.h150
-rw-r--r--users/peej/peej.c68
-rw-r--r--users/peej/peej.h78
-rw-r--r--users/peej/rules.mk1
-rw-r--r--users/peterfalken/config.h23
-rw-r--r--users/peterfalken/peterfalken.c20
-rw-r--r--users/peterfalken/peterfalken.h27
-rw-r--r--users/peterfalken/readme.md14
-rw-r--r--users/peterfalken/rules.mk18
-rw-r--r--users/pvinis/config.h7
-rw-r--r--users/pvinis/pvinis.c98
-rw-r--r--users/pvinis/pvinis.h172
-rw-r--r--users/pvinis/rules.mk19
-rw-r--r--users/riblee/readme.md14
-rw-r--r--users/riblee/riblee.c174
-rw-r--r--users/riblee/riblee.h59
-rw-r--r--users/riblee/rules.mk1
-rw-r--r--users/ridingqwerty/config.h10
-rw-r--r--users/ridingqwerty/dict.h1012
-rw-r--r--users/ridingqwerty/process_records.c486
-rw-r--r--users/ridingqwerty/process_records.h58
-rw-r--r--users/ridingqwerty/ridingqwerty.c65
-rw-r--r--users/ridingqwerty/ridingqwerty.h61
-rw-r--r--users/ridingqwerty/rules.mk24
-rw-r--r--users/ridingqwerty/tapdances.c33
-rw-r--r--users/ridingqwerty/tapdances.h9
-rw-r--r--users/ridingqwerty/unicode.c7
-rw-r--r--users/ridingqwerty/unicode.h295
-rw-r--r--users/ridingqwerty/wrappers.h156
-rw-r--r--users/rishka/rishka.c1
-rw-r--r--users/rishka/rishka.h74
-rw-r--r--users/rishka/rules.mk1
-rw-r--r--users/rmeli/.gitignore2
-rw-r--r--users/rmeli/config.h40
-rw-r--r--users/rmeli/keyrecords/tap_dances.c139
-rw-r--r--users/rmeli/keyrecords/tap_dances.h71
-rw-r--r--users/rmeli/keyrecords/unicode.h86
-rw-r--r--users/rmeli/keyrecords/wrappers.h178
-rw-r--r--users/rmeli/oled/oled.c102
-rw-r--r--users/rmeli/oled/oled.h26
-rw-r--r--users/rmeli/readme.md14
-rw-r--r--users/rmeli/rmeli.h32
-rw-r--r--users/rmeli/rules.mk26
-rw-r--r--users/rmw/encoder_functions.c53
-rw-r--r--users/rmw/encoder_functions.h11
-rw-r--r--users/rmw/rmw.c1
-rw-r--r--users/rmw/rmw.h87
-rw-r--r--users/rmw/rules.mk9
-rw-r--r--users/rmw/tapdances.c389
-rw-r--r--users/rmw/tapdances.h46
-rw-r--r--users/romus/README.md45
-rw-r--r--users/romus/config.h8
-rw-r--r--users/romus/romus.c509
-rw-r--r--users/romus/romus.h270
-rw-r--r--users/romus/rules.mk21
-rw-r--r--users/rossman360/readme.md14
-rw-r--r--users/rossman360/rossman360.c85
-rw-r--r--users/rossman360/rossman360.h38
-rw-r--r--users/rossman360/rules.mk5
-rw-r--r--users/rs/karabiner.json154
-rw-r--r--users/rs/readme.md30
-rw-r--r--users/rs/rs.c74
-rw-r--r--users/rs/rs.h48
-rw-r--r--users/rs/rules.mk1
-rw-r--r--users/rupa/config.h11
-rw-r--r--users/rupa/process_records.c118
-rw-r--r--users/rupa/process_records.h21
-rw-r--r--users/rupa/readme.md7
-rw-r--r--users/rupa/rules.mk5
-rw-r--r--users/rupa/rupa.c82
-rw-r--r--users/rupa/rupa.h82
-rw-r--r--users/rupa/unicode.c172
-rw-r--r--users/rupa/unicode.h77
-rw-r--r--users/rupa/wrappers.h122
-rw-r--r--users/rverst/config.h45
-rw-r--r--users/rverst/readme.md18
-rw-r--r--users/rverst/rules.mk9
-rw-r--r--users/rverst/rverst.c425
-rw-r--r--users/rverst/rverst.h85
-rw-r--r--users/rverst/unicode.h31
-rw-r--r--users/scheiklp/koy_keys_on_quertz_de_latin1.h64
-rw-r--r--users/scotto/config.h25
-rw-r--r--users/scotto/readme.md17
-rw-r--r--users/scotto/rules.mk11
-rw-r--r--users/scotto/scotto.c15
-rw-r--r--users/scotto/scotto.h69
-rw-r--r--users/scotto/tap_dance.c154
-rw-r--r--users/scotto/tap_dance.h39
-rw-r--r--users/sethBarberee/config.h82
-rw-r--r--users/sethBarberee/readme.md6
-rw-r--r--users/sethBarberee/rgb_light.c52
-rw-r--r--users/sethBarberee/rgb_light.h21
-rw-r--r--users/sethBarberee/rules.mk10
-rw-r--r--users/sethBarberee/sethBarberee.c100
-rw-r--r--users/sethBarberee/sethBarberee.h55
-rw-r--r--users/sethBarberee/tap_dance.c89
-rw-r--r--users/sethBarberee/tap_dance.h43
-rw-r--r--users/sethBarberee/wrappers.h71
-rw-r--r--users/sigma/config.h21
-rw-r--r--users/sigma/rules.mk3
-rw-r--r--users/sigma/sigma.c271
-rw-r--r--users/sigma/sigma.h58
-rw-r--r--users/sigul/.gitignore2
-rw-r--r--users/sigul/README.md17
-rw-r--r--users/sigul/config.h21
-rw-r--r--users/sigul/rules.mk8
-rw-r--r--users/sigul/sigul.c100
-rw-r--r--users/sigul/sigul.h42
-rw-r--r--users/snowe/luna.c229
-rw-r--r--users/snowe/luna.h31
-rw-r--r--users/snowe/ocean_dream.c556
-rw-r--r--users/snowe/ocean_dream.h103
-rw-r--r--users/snowe/oled_setup.c146
-rw-r--r--users/snowe/oled_setup.h30
-rw-r--r--users/snowe/readme.md10
-rw-r--r--users/snowe/readme_ocean_dream.md258
-rw-r--r--users/snowe/rules.mk27
-rw-r--r--users/snowe/snowe.h42
-rw-r--r--users/snowe/wrappers.h92
-rw-r--r--users/spacebarracecar/config.h2
-rw-r--r--users/spacebarracecar/readme.md111
-rw-r--r--users/spacebarracecar/rules.mk5
-rw-r--r--users/spacebarracecar/spacebarracecar.c352
-rw-r--r--users/spacebarracecar/spacebarracecar.h247
-rw-r--r--users/spidey3/config.h45
-rw-r--r--users/spidey3/init.c24
-rw-r--r--users/spidey3/layer_rgb.c486
-rw-r--r--users/spidey3/readme.md14
-rw-r--r--users/spidey3/rules.mk15
-rw-r--r--users/spidey3/spidey3.c384
-rw-r--r--users/spidey3/spidey3.h81
-rw-r--r--users/spidey3/spidey3_unicode.c28
-rw-r--r--users/spidey3/spidey3_unicode.h31
-rw-r--r--users/spotpuff/rules.mk1
-rw-r--r--users/stanrc85/config.h38
-rw-r--r--users/stanrc85/indicator_layers_sneakbox.c28
-rw-r--r--users/stanrc85/layer_rgb.c29
-rw-r--r--users/stanrc85/readme.md57
-rw-r--r--users/stanrc85/rgb_layers.c36
-rw-r--r--users/stanrc85/rgb_timeout.c62
-rw-r--r--users/stanrc85/rgblight_layers.c30
-rw-r--r--users/stanrc85/rgblight_layers_osa.c68
-rw-r--r--users/stanrc85/rules.mk55
-rw-r--r--users/stanrc85/stanrc85.c133
-rw-r--r--users/stanrc85/stanrc85.h55
-rw-r--r--users/stanrc85/startup_fanfare.c43
-rw-r--r--users/talljoe/config.h22
-rw-r--r--users/talljoe/macros.c40
-rw-r--r--users/talljoe/macros.h27
-rw-r--r--users/talljoe/readme.md7
-rw-r--r--users/talljoe/rules.mk18
-rw-r--r--users/talljoe/talljoe.c229
-rw-r--r--users/talljoe/talljoe.h184
-rw-r--r--users/talljoe/tapdance/actions/td.function.c35
-rw-r--r--users/talljoe/tapdance/actions/td.grave.c36
-rw-r--r--users/talljoe/tapdance/actions/td.lock.c35
-rw-r--r--users/talljoe/tapdance/actions/td.semicolon.c54
-rw-r--r--users/talljoe/tapdance/tapdance.h26
-rw-r--r--users/talljoe/tapdance/tapdance_actions.c28
-rw-r--r--users/talljoe/tapdance/td_setup.c70
-rw-r--r--users/talljoe/tapdance/td_setup.h29
-rw-r--r--users/toinux/keymap_qwerty_fr.h153
-rw-r--r--users/tominabox1/.gitignore2
-rw-r--r--users/tominabox1/config.h87
-rw-r--r--users/tominabox1/dimple_rgb.c433
-rw-r--r--users/tominabox1/doug.c232
-rw-r--r--users/tominabox1/readme.md5
-rw-r--r--users/tominabox1/rules.mk25
-rw-r--r--users/tominabox1/tominabox1.c281
-rw-r--r--users/tominabox1/tominabox1.h56
-rw-r--r--users/tominabox1/wrappers.h142
-rw-r--r--users/turbomech/backupturbomech.c390
-rw-r--r--users/turbomech/turbomech.c124
-rw-r--r--users/turbomech/turbomech.h50
-rw-r--r--users/twschum/config.h0
-rw-r--r--users/twschum/readme.md14
-rw-r--r--users/twschum/rules.mk5
-rw-r--r--users/twschum/twschum.c256
-rw-r--r--users/twschum/twschum.h131
-rw-r--r--users/twschum/xtonhasvim.c593
-rw-r--r--users/twschum/xtonhasvim.h62
-rw-r--r--users/uqs/config.h38
-rw-r--r--users/uqs/rules.mk24
-rw-r--r--users/uqs/uqs.c575
-rw-r--r--users/uqs/uqs.h77
-rw-r--r--users/vitoni/readme.adoc16
-rw-r--r--users/vitoni/rgb_matrix_effects.c236
-rw-r--r--users/vitoni/rgb_matrix_effects.h174
-rw-r--r--users/vitoni/rules.mk4
-rw-r--r--users/vitoni/utils.c129
-rw-r--r--users/vitoni/utils.h80
-rw-r--r--users/vitoni/vitoni.c131
-rw-r--r--users/vitoni/vitoni.h30
-rw-r--r--users/vnmm/config.h70
-rw-r--r--users/vnmm/keymap_user.h41
-rw-r--r--users/vnmm/readme.md10
-rw-r--r--users/vnmm/rgb_matrix_user.c140
-rw-r--r--users/vnmm/rgb_matrix_user.h28
-rw-r--r--users/vnmm/rules.mk5
-rw-r--r--users/vnmm/vnmm.c23
-rw-r--r--users/vnmm/vnmm.h21
-rw-r--r--users/vosechu/config.h19
-rw-r--r--users/vosechu/readme.md14
-rw-r--r--users/vosechu/rules.mk1
-rw-r--r--users/vosechu/vosechu.c25
-rw-r--r--users/vosechu/vosechu.h89
-rw-r--r--users/wanleg/config.h47
-rw-r--r--users/wanleg/readme.md125
-rw-r--r--users/wanleg/rules.mk45
-rw-r--r--users/wanleg/tapdances.c264
-rw-r--r--users/wanleg/wanleg.c176
-rw-r--r--users/wanleg/wanleg.h322
-rw-r--r--users/xtonhasvim/fancylighting.c172
-rw-r--r--users/xtonhasvim/fancylighting.h36
-rw-r--r--users/xtonhasvim/readme.md10
-rw-r--r--users/xtonhasvim/rules.mk2
-rw-r--r--users/xtonhasvim/xtonhasvim.c643
-rw-r--r--users/xtonhasvim/xtonhasvim.h65
-rw-r--r--users/xulkal/config.h36
-rw-r--r--users/xulkal/custom_encoder.c73
-rw-r--r--users/xulkal/custom_encoder.h2
-rw-r--r--users/xulkal/custom_keycodes.h40
-rw-r--r--users/xulkal/custom_oled.c189
-rw-r--r--users/xulkal/custom_oled.h2
-rw-r--r--users/xulkal/custom_rgb.c64
-rw-r--r--users/xulkal/custom_rgb.h17
-rw-r--r--users/xulkal/custom_tap_dance.c59
-rw-r--r--users/xulkal/custom_tap_dance.h23
-rw-r--r--users/xulkal/layouts.h119
-rw-r--r--users/xulkal/process_records.c62
-rw-r--r--users/xulkal/process_records.h18
-rw-r--r--users/xulkal/rules.mk32
-rw-r--r--users/xulkal/xulkal.c1
-rw-r--r--users/xulkal/xulkal.h6
-rw-r--r--users/yanfali/config.h30
-rw-r--r--users/yanfali/rules.mk38
-rw-r--r--users/yet-another-developer/.gitignore2
-rw-r--r--users/yet-another-developer/README.md7
-rw-r--r--users/yet-another-developer/combo.c27
-rw-r--r--users/yet-another-developer/combo.h20
-rw-r--r--users/yet-another-developer/config.h46
-rw-r--r--users/yet-another-developer/leader_user.c41
-rw-r--r--users/yet-another-developer/leader_user.h6
-rw-r--r--users/yet-another-developer/process_records.c193
-rw-r--r--users/yet-another-developer/process_records.h109
-rw-r--r--users/yet-another-developer/rules.mk50
-rw-r--r--users/yet-another-developer/tap_dances.c55
-rw-r--r--users/yet-another-developer/tap_dances.h26
-rw-r--r--users/yet-another-developer/unicode.c62
-rw-r--r--users/yet-another-developer/unicode.h64
-rw-r--r--users/yet-another-developer/wrappers.h166
-rw-r--r--users/yet-another-developer/yet-another-developer.c160
-rw-r--r--users/yet-another-developer/yet-another-developer.h87
-rw-r--r--users/zer09/config.h23
-rw-r--r--users/zer09/lights.c189
-rw-r--r--users/zer09/lights.h45
-rw-r--r--users/zer09/rules.mk2
-rw-r--r--users/zer09/tap_dance.c203
-rw-r--r--users/zer09/tap_dance.h55
-rw-r--r--users/zer09/zer09.c89
-rw-r--r--users/zer09/zer09.h25
-rw-r--r--users/zigotica/combos.c37
-rw-r--r--users/zigotica/combos.h17
-rw-r--r--users/zigotica/rows.h211
-rw-r--r--users/zigotica/rules.mk18
-rw-r--r--users/zigotica/tapdances.c34
-rw-r--r--users/zigotica/tapdances.h24
-rw-r--r--users/zigotica/zigotica.c14
-rw-r--r--users/zigotica/zigotica.h51
-rw-r--r--users/zyber/config.h9
-rw-r--r--users/zyber/rules.mk8
-rw-r--r--users/zyber/zyber.c137
-rw-r--r--users/zyber/zyber.h33
1021 files changed, 0 insertions, 88937 deletions
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 <http://www.gnu.org/licenses/>.
- */
-
-#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 <http://www.gnu.org/licenses/>.
- */
-
-#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@gmail.com> @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 <http://www.gnu.org/licenses/>.
-
-# 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 +|
-| | | | { | } | |&#124;<| LEFT | DOWN |RIGHT |>&#124;|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 <http://www.gnu/org/licenses/>.
-*/
-
-#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 <string.h>
-
-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 <smoothled.h>
-
-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 <stdbool.h>
-
-// 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 <http://www.gnu.org/licenses/>.
-*/
-
-#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 <http://www.gnu.org/licenses/>.
-
-[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<times; i++) {
- // wait_ms(TYPING_INTERVAL);
- tap_code16(key);
- }
-}
-
-
-bool handle_del_bspace(void) {
- if (char_to_bspace > 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 <opensource@bluetufa.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-#include "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 <opensource@bluetufa.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-#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 <opensource@bluetufa.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-#include "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 <opensource@bluetufa.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-#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 <http://www.gnu.org/licenses/>.
- */
-
-#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 <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-#include <stdbool.h>
-
-#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 <http://www.gnu.org/licenses/>.
- */
-
-#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 <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-#include <stdbool.h>
-#include <stdint.h>
-
-#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 <http://www.gnu.org/licenses/>.
- */
-
-/* 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 <stdbool.h>
-#include <stdint.h>
-
-#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 <http://www.gnu.org/licenses/>.
- */
-
-/* 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 <stdbool.h>
-#include <stdint.h>
-
-#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 <http://www.gnu.org/licenses/>.
- */
-
-/* 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 <stdbool.h>
-#include <stdint.h>
-
-#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 <http://www.gnu.org/licenses/>.
- */
-
-#include <stdint.h>
-
-#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 <http://www.gnu.org/licenses/>.
- */
-
-/* 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 <http://www.gnu.org/licenses/>.
- */
-#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 <http://www.gnu.org/licenses/>.
- */
-#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 <http://www.gnu.org/licenses/>.
- */
-#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 <http://www.gnu.org/licenses/>.
- */
-#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 <http://www.gnu.org/licenses/>.
- */
-#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 <http://www.gnu.org/licenses/>.
- */
-#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 <http://www.gnu.org/licenses/>.
- */
-#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 <http://www.gnu.org/licenses/>.
- */
-#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 <http://www.gnu.org/licenses/>.
- */
-#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 <http://www.gnu.org/licenses/>.
- */
-#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 <byungyoonc@gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include 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 <byungyoonc@gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#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 <byungyoonc@gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#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 <camjlarsen@gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#include "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 <http://www.gnu.org/licenses/>.
-#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
--- a/users/cbbrowne/cbbrowne.c
+++ /dev/null
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 <http://www.gnu.org/licenses/>.
-*/
-
-
-#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 <http://www.gnu.org/licenses/>.
-*/
-
-#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 <http://www.gnu.org/licenses/>.
- */
-
-#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 <http://www.gnu.org/licenses/>.
- */
-
-#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 <cjuniet@users.noreply.github.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
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 <http://www.gnu.org/licenses/>.
-*/
-
-#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 <http://www.gnu.org/licenses/>.
-*/
-
-#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 <http://www.gnu.org/licenses/>.
-*/
-
-#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 <http://www.gnu.org/licenses/>.
-*/
-
-#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 <http://www.gnu.org/licenses/>.
-*/
-
-#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 <http://www.gnu.org/licenses/>.
-*/
-
-#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 <http://www.gnu.org/licenses/>.
-*/
-
-#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 <http://www.gnu.org/licenses/>.
-*/
-
-#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 <http://www.gnu.org/licenses/>.
-*/
-
-#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 <http://www.gnu.org/licenses/>.
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 <casey@e1337.dev>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#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 <casey@e1337.dev>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#include "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 <casey@e1337.dev>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#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 <casey@e1337.dev>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#include "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 <casey@e1337.dev>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#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 <casey@e1337.dev>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#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, /* <?php */
- PHPCLSE, /* ?> */
- 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 <http://www.gnu.org/licenses/>.
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 <question mark> on <shift-comma> and <exclamation
-// mark> on <shift-period>, 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 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<!-- Generated by graphviz version 2.40.1 (20161225.0304)
- -->
-<!-- Title: %0 Pages: 1 -->
-<svg width="829pt" height="754pt"
- viewBox="0.00 0.00 829.35 754.40" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 750.4)">
-<title>%0</title>
-<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-750.4 825.3486,-750.4 825.3486,4 -4,4"/>
-<!-- IDLE -->
-<g id="node1" class="node">
-<title>IDLE</title>
-<ellipse fill="none" stroke="#000000" cx="492" cy="-728.4" rx="33.043" ry="18"/>
-<text text-anchor="middle" x="492" y="-724.2" font-family="Times,serif" font-size="14.00" fill="#000000">IDLE</text>
-</g>
-<!-- READY -->
-<g id="node2" class="node">
-<title>READY</title>
-<ellipse fill="none" stroke="#000000" cx="404" cy="-639.6" rx="44.0814" ry="18"/>
-<text text-anchor="middle" x="404" y="-635.4" font-family="Times,serif" font-size="14.00" fill="#000000">READY</text>
-</g>
-<!-- IDLE&#45;&gt;READY -->
-<g id="edge12" class="edge">
-<title>IDLE&#45;&gt;READY</title>
-<path fill="none" stroke="#ffa500" d="M487.6897,-710.0931C484.347,-699.0742 478.772,-685.3407 470,-675.6 463.1872,-668.0349 454.3989,-661.7377 445.4714,-656.6382"/>
-<polygon fill="#ffa500" stroke="#ffa500" points="447.0426,-653.5099 436.5654,-651.9352 443.7738,-659.6998 447.0426,-653.5099"/>
-<text text-anchor="middle" x="524.317" y="-679.8" font-family="Times,serif" font-size="14.00" fill="#000000">all keys pressed</text>
-</g>
-<!-- READY&#45;&gt;IDLE -->
-<g id="edge8" class="edge">
-<title>READY&#45;&gt;IDLE</title>
-<path fill="none" stroke="#ff0000" d="M383.1899,-655.7528C371.9777,-666.4401 362.0803,-680.6044 370.88,-692.4 380.5143,-705.3144 418.9714,-715.2612 450.0017,-721.3939"/>
-<polygon fill="#ff0000" stroke="#ff0000" points="449.7109,-724.9011 460.188,-723.3263 451.0156,-718.0238 449.7109,-724.9011"/>
-<text text-anchor="middle" x="420.56" y="-679.8" font-family="Times,serif" font-size="14.00" fill="#000000">superchord active</text>
-</g>
-<!-- ACTIVATED -->
-<g id="node3" class="node">
-<title>ACTIVATED</title>
-<ellipse fill="none" stroke="#000000" cx="404" cy="-550.8" rx="66.0512" ry="18"/>
-<text text-anchor="middle" x="404" y="-546.6" font-family="Times,serif" font-size="14.00" fill="#000000">ACTIVATED</text>
-</g>
-<!-- READY&#45;&gt;ACTIVATED -->
-<g id="edge15" class="edge">
-<title>READY&#45;&gt;ACTIVATED</title>
-<path fill="none" stroke="#ffa500" d="M404,-621.2006C404,-609.0949 404,-593.0076 404,-579.2674"/>
-<polygon fill="#ffa500" stroke="#ffa500" points="407.5001,-578.872 404,-568.872 400.5001,-578.8721 407.5001,-578.872"/>
-<text text-anchor="middle" x="436.4611" y="-591" font-family="Times,serif" font-size="14.00" fill="#000000">chord timer</text>
-</g>
-<!-- DEACTIVATED -->
-<g id="node4" class="node">
-<title>DEACTIVATED</title>
-<ellipse fill="none" stroke="#000000" cx="301" cy="-284.4" rx="79.2922" ry="18"/>
-<text text-anchor="middle" x="301" y="-280.2" font-family="Times,serif" font-size="14.00" fill="#000000">DEACTIVATED</text>
-</g>
-<!-- ACTIVATED&#45;&gt;DEACTIVATED -->
-<g id="edge19" class="edge">
-<title>ACTIVATED&#45;&gt;DEACTIVATED</title>
-<path fill="none" stroke="#a020f0" d="M414.457,-532.6765C417.1337,-527.1214 419.6389,-520.8699 421,-514.8 426.1765,-491.7151 456.5634,-425.2497 416,-355.2 402.3607,-331.646 377.4429,-314.8951 354.2805,-303.6207"/>
-<polygon fill="#a020f0" stroke="#a020f0" points="355.7259,-300.433 345.1798,-299.4173 352.7907,-306.7879 355.7259,-300.433"/>
-<text text-anchor="middle" x="468.4881" y="-413.4" font-family="Times,serif" font-size="14.00" fill="#000000">a key lifted</text>
-</g>
-<!-- PRESS_FROM_ACTIVE -->
-<g id="node5" class="node">
-<title>PRESS_FROM_ACTIVE</title>
-<ellipse fill="none" stroke="#000000" cx="279" cy="-462" rx="111.797" ry="18"/>
-<text text-anchor="middle" x="279" y="-457.8" font-family="Times,serif" font-size="14.00" fill="#000000">PRESS_FROM_ACTIVE</text>
-</g>
-<!-- ACTIVATED&#45;&gt;PRESS_FROM_ACTIVE -->
-<g id="edge5" class="edge">
-<title>ACTIVATED&#45;&gt;PRESS_FROM_ACTIVE</title>
-<path fill="none" stroke="#00ff00" d="M381.0189,-533.8085C363.6663,-521.0049 341.3076,-504.5706 332,-498 326.1999,-493.9054 319.9973,-489.6147 313.9535,-485.4802"/>
-<polygon fill="#00ff00" stroke="#00ff00" points="315.5139,-482.3085 305.2776,-479.5755 311.5753,-488.0954 315.5139,-482.3085"/>
-<text text-anchor="middle" x="387.8454" y="-502.2" font-family="Times,serif" font-size="14.00" fill="#000000">dance timer</text>
-</g>
-<!-- ACTIVATED&#45;&gt;PRESS_FROM_ACTIVE -->
-<g id="edge17" class="edge">
-<title>ACTIVATED&#45;&gt;PRESS_FROM_ACTIVE</title>
-<path fill="none" stroke="#ffa500" d="M346.8191,-541.6158C317.1162,-535.5544 285.1886,-526.5544 276.2896,-514.8 271.0903,-507.9325 270.0671,-499.0047 270.857,-490.45"/>
-<polygon fill="#ffa500" stroke="#ffa500" points="274.3462,-490.8071 272.5608,-480.3638 267.444,-489.6411 274.3462,-490.8071"/>
-<text text-anchor="middle" x="302.8552" y="-502.2" font-family="Times,serif" font-size="14.00" fill="#000000">lock next</text>
-</g>
-<!-- IDLE_IN_DANCE -->
-<g id="node7" class="node">
-<title>IDLE_IN_DANCE</title>
-<ellipse fill="none" stroke="#000000" cx="293" cy="-195.6" rx="86.2367" ry="18"/>
-<text text-anchor="middle" x="293" y="-191.4" font-family="Times,serif" font-size="14.00" fill="#000000">IDLE_IN_DANCE</text>
-</g>
-<!-- DEACTIVATED&#45;&gt;IDLE_IN_DANCE -->
-<g id="edge3" class="edge">
-<title>DEACTIVATED&#45;&gt;IDLE_IN_DANCE</title>
-<path fill="none" stroke="#000000" d="M299.3424,-266.0006C298.241,-253.775 296.7738,-237.4887 295.5279,-223.6599"/>
-<polygon fill="#000000" stroke="#000000" points="299.0114,-223.3176 294.6281,-213.672 292.0396,-223.9458 299.0114,-223.3176"/>
-</g>
-<!-- FINISHED_FROM_ACTIVE -->
-<g id="node6" class="node">
-<title>FINISHED_FROM_ACTIVE</title>
-<ellipse fill="none" stroke="#000000" cx="280" cy="-373.2" rx="127.3672" ry="18"/>
-<text text-anchor="middle" x="280" y="-369" font-family="Times,serif" font-size="14.00" fill="#000000">FINISHED_FROM_ACTIVE</text>
-</g>
-<!-- PRESS_FROM_ACTIVE&#45;&gt;FINISHED_FROM_ACTIVE -->
-<g id="edge7" class="edge">
-<title>PRESS_FROM_ACTIVE&#45;&gt;FINISHED_FROM_ACTIVE</title>
-<path fill="none" stroke="#00ff00" d="M279.2072,-443.6006C279.3435,-431.4949 279.5247,-415.4076 279.6794,-401.6674"/>
-<polygon fill="#00ff00" stroke="#00ff00" points="283.1836,-401.3108 279.7965,-391.272 276.184,-401.2319 283.1836,-401.3108"/>
-<text text-anchor="middle" x="312.8454" y="-413.4" font-family="Times,serif" font-size="14.00" fill="#000000">dance timer</text>
-</g>
-<!-- LOCKED -->
-<g id="node10" class="node">
-<title>LOCKED</title>
-<ellipse fill="none" stroke="#000000" cx="84" cy="-373.2" rx="50.38" ry="18"/>
-<text text-anchor="middle" x="84" y="-369" font-family="Times,serif" font-size="14.00" fill="#000000">LOCKED</text>
-</g>
-<!-- PRESS_FROM_ACTIVE&#45;&gt;LOCKED -->
-<g id="edge18" class="edge">
-<title>PRESS_FROM_ACTIVE&#45;&gt;LOCKED</title>
-<path fill="none" stroke="#ffa500" d="M241.402,-444.8785C207.8161,-429.584 158.7472,-407.2387 124.3482,-391.574"/>
-<polygon fill="#ffa500" stroke="#ffa500" points="125.6113,-388.3034 115.06,-387.3442 122.7102,-394.6739 125.6113,-388.3034"/>
-<text text-anchor="middle" x="224.8552" y="-413.4" font-family="Times,serif" font-size="14.00" fill="#000000">lock next</text>
-</g>
-<!-- RESTART -->
-<g id="node12" class="node">
-<title>RESTART</title>
-<ellipse fill="none" stroke="#000000" cx="201" cy="-18" rx="53.9098" ry="18"/>
-<text text-anchor="middle" x="201" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">RESTART</text>
-</g>
-<!-- PRESS_FROM_ACTIVE&#45;&gt;RESTART -->
-<g id="edge20" class="edge">
-<title>PRESS_FROM_ACTIVE&#45;&gt;RESTART</title>
-<path fill="none" stroke="#ffa500" d="M190.3393,-450.9993C108.6441,-438.3099 0,-413.8018 0,-373.2 0,-373.2 0,-373.2 0,-106.8 0,-74.7037 86.8374,-46.4364 146.3579,-30.8311"/>
-<polygon fill="#ffa500" stroke="#ffa500" points="147.578,-34.1313 156.3916,-28.2515 145.835,-27.3517 147.578,-34.1313"/>
-<text text-anchor="middle" x="31.4881" y="-235.8" font-family="Times,serif" font-size="14.00" fill="#000000">a key lifted</text>
-</g>
-<!-- FINISHED_FROM_ACTIVE&#45;&gt;DEACTIVATED -->
-<g id="edge21" class="edge">
-<title>FINISHED_FROM_ACTIVE&#45;&gt;DEACTIVATED</title>
-<path fill="none" stroke="#ffa500" d="M284.3512,-354.8006C287.2424,-342.575 291.0939,-326.2887 294.3642,-312.4599"/>
-<polygon fill="#ffa500" stroke="#ffa500" points="297.8308,-313.0091 296.7262,-302.472 291.0187,-311.3981 297.8308,-313.0091"/>
-<text text-anchor="middle" x="324.4881" y="-324.6" font-family="Times,serif" font-size="14.00" fill="#000000">a key lifted</text>
-</g>
-<!-- READY_IN_DANCE -->
-<g id="node8" class="node">
-<title>READY_IN_DANCE</title>
-<ellipse fill="none" stroke="#000000" cx="402" cy="-106.8" rx="97.2741" ry="18"/>
-<text text-anchor="middle" x="402" y="-102.6" font-family="Times,serif" font-size="14.00" fill="#000000">READY_IN_DANCE</text>
-</g>
-<!-- IDLE_IN_DANCE&#45;&gt;READY_IN_DANCE -->
-<g id="edge13" class="edge">
-<title>IDLE_IN_DANCE&#45;&gt;READY_IN_DANCE</title>
-<path fill="none" stroke="#ffa500" d="M285.2465,-177.3414C281.8879,-166.3406 280.1649,-152.6093 287.366,-142.8 292.9374,-135.2107 308.8319,-128.4976 327.077,-122.9864"/>
-<polygon fill="#ffa500" stroke="#ffa500" points="328.1338,-126.3246 336.79,-120.2157 326.2135,-119.5932 328.1338,-126.3246"/>
-<text text-anchor="middle" x="332.317" y="-147" font-family="Times,serif" font-size="14.00" fill="#000000">all keys pressed</text>
-</g>
-<!-- FINISHED -->
-<g id="node9" class="node">
-<title>FINISHED</title>
-<ellipse fill="none" stroke="#000000" cx="201" cy="-106.8" rx="55.0323" ry="18"/>
-<text text-anchor="middle" x="201" y="-102.6" font-family="Times,serif" font-size="14.00" fill="#000000">FINISHED</text>
-</g>
-<!-- IDLE_IN_DANCE&#45;&gt;FINISHED -->
-<g id="edge6" class="edge">
-<title>IDLE_IN_DANCE&#45;&gt;FINISHED</title>
-<path fill="none" stroke="#00ff00" d="M231.9976,-182.6889C220.3684,-177.4272 209.5756,-170.022 202.3092,-159.6 197.3878,-152.5413 195.8986,-143.5625 195.9866,-135.0199"/>
-<polygon fill="#00ff00" stroke="#00ff00" points="199.4821,-135.2114 196.7515,-124.9745 192.5023,-134.6799 199.4821,-135.2114"/>
-<text text-anchor="middle" x="235.8454" y="-147" font-family="Times,serif" font-size="14.00" fill="#000000">dance timer</text>
-</g>
-<!-- READY_IN_DANCE&#45;&gt;ACTIVATED -->
-<g id="edge16" class="edge">
-<title>READY_IN_DANCE&#45;&gt;ACTIVATED</title>
-<path fill="none" stroke="#ffa500" d="M460.9306,-121.2262C473.3432,-126.4214 485.5301,-133.4169 495,-142.8 512.9398,-160.5753 516,-170.3454 516,-195.6 516,-462 516,-462 516,-462 516,-495.4749 484.8997,-518.3284 455.476,-532.4591"/>
-<polygon fill="#ffa500" stroke="#ffa500" points="453.6869,-529.4272 446.0233,-536.7429 456.5764,-535.803 453.6869,-529.4272"/>
-<text text-anchor="middle" x="548.4611" y="-324.6" font-family="Times,serif" font-size="14.00" fill="#000000">chord timer</text>
-</g>
-<!-- READY_IN_DANCE&#45;&gt;IDLE_IN_DANCE -->
-<g id="edge9" class="edge">
-<title>READY_IN_DANCE&#45;&gt;IDLE_IN_DANCE</title>
-<path fill="none" stroke="#ff0000" d="M398.1917,-124.942C395.0071,-136.1761 389.421,-150.2021 380,-159.6 372.9696,-166.6132 364.3766,-172.3251 355.3586,-176.9585"/>
-<polygon fill="#ff0000" stroke="#ff0000" points="353.8046,-173.8215 346.241,-181.2406 356.7803,-180.1575 353.8046,-173.8215"/>
-<text text-anchor="middle" x="441.56" y="-147" font-family="Times,serif" font-size="14.00" fill="#000000">superchord active</text>
-</g>
-<!-- FINISHED&#45;&gt;RESTART -->
-<g id="edge1" class="edge">
-<title>FINISHED&#45;&gt;RESTART</title>
-<path fill="none" stroke="#000000" d="M201,-88.4006C201,-76.2949 201,-60.2076 201,-46.4674"/>
-<polygon fill="#000000" stroke="#000000" points="204.5001,-46.072 201,-36.072 197.5001,-46.0721 204.5001,-46.072"/>
-</g>
-<!-- READY_LOCKED -->
-<g id="node11" class="node">
-<title>READY_LOCKED</title>
-<ellipse fill="none" stroke="#000000" cx="116" cy="-284.4" rx="88.0442" ry="18"/>
-<text text-anchor="middle" x="116" y="-280.2" font-family="Times,serif" font-size="14.00" fill="#000000">READY_LOCKED</text>
-</g>
-<!-- LOCKED&#45;&gt;READY_LOCKED -->
-<g id="edge11" class="edge">
-<title>LOCKED&#45;&gt;READY_LOCKED</title>
-<path fill="none" stroke="#ffa500" d="M62.8266,-356.7262C52.2277,-346.3972 43.0571,-332.745 50.366,-320.4 53.6683,-314.8223 58.175,-310.0516 63.2916,-305.985"/>
-<polygon fill="#ffa500" stroke="#ffa500" points="65.4987,-308.7148 71.7485,-300.1596 61.5278,-302.9501 65.4987,-308.7148"/>
-<text text-anchor="middle" x="95.317" y="-324.6" font-family="Times,serif" font-size="14.00" fill="#000000">all keys pressed</text>
-</g>
-<!-- READY_LOCKED&#45;&gt;LOCKED -->
-<g id="edge10" class="edge">
-<title>READY_LOCKED&#45;&gt;LOCKED</title>
-<path fill="none" stroke="#ff0000" d="M134.3377,-302.181C142.7003,-312.508 149.4503,-325.708 143,-337.2 139.1182,-344.1159 133.3081,-349.8603 126.8241,-354.5772"/>
-<polygon fill="#ff0000" stroke="#ff0000" points="124.8745,-351.6695 118.3451,-360.0132 128.6526,-357.5624 124.8745,-351.6695"/>
-<text text-anchor="middle" x="195.56" y="-324.6" font-family="Times,serif" font-size="14.00" fill="#000000">superchord active</text>
-</g>
-<!-- READY_LOCKED&#45;&gt;RESTART -->
-<g id="edge14" class="edge">
-<title>READY_LOCKED&#45;&gt;RESTART</title>
-<path fill="none" stroke="#ffa500" d="M114.0574,-266.3175C111.0132,-230.457 108.1435,-148.6335 137,-88.8 145.6041,-70.9596 160.1275,-54.343 173.1661,-41.6972"/>
-<polygon fill="#ffa500" stroke="#ffa500" points="175.702,-44.1178 180.6155,-34.7312 170.9209,-39.0049 175.702,-44.1178"/>
-<text text-anchor="middle" x="152.4611" y="-147" font-family="Times,serif" font-size="14.00" fill="#000000">chord timer</text>
-</g>
-<!-- RESTART&#45;&gt;IDLE -->
-<g id="edge2" class="edge">
-<title>RESTART&#45;&gt;IDLE</title>
-<path fill="none" stroke="#000000" d="M251.8307,-24.1482C358.5139,-37.7418 596,-71.9196 596,-106.8 596,-639.6 596,-639.6 596,-639.6 596,-665.1965 591.0323,-674.2337 573,-692.4 561.7252,-703.7586 546.243,-711.8298 531.8327,-717.4099"/>
-<polygon fill="#000000" stroke="#000000" points="530.3349,-714.2281 522.0925,-720.8849 532.6871,-720.8211 530.3349,-714.2281"/>
-</g>
-<!-- IN_ONE_SHOT -->
-<g id="node13" class="node">
-<title>IN_ONE_SHOT</title>
-<ellipse fill="none" stroke="#000000" cx="700" cy="-106.8" rx="75.8643" ry="18"/>
-<text text-anchor="middle" x="700" y="-102.6" font-family="Times,serif" font-size="14.00" fill="#000000">IN_ONE_SHOT</text>
-</g>
-<!-- IN_ONE_SHOT&#45;&gt;RESTART -->
-<g id="edge4" class="edge">
-<title>IN_ONE_SHOT&#45;&gt;RESTART</title>
-<path fill="none" stroke="#0000ff" d="M676.9312,-89.3704C659.5151,-77.2164 634.5042,-61.8271 610,-54 547.5343,-34.0473 363.5933,-24.1795 265.053,-20.2067"/>
-<polygon fill="#0000ff" stroke="#0000ff" points="265.0515,-16.704 254.9213,-19.8069 264.7755,-23.6986 265.0515,-16.704"/>
-<text text-anchor="middle" x="733.6743" y="-58.2" font-family="Times,serif" font-size="14.00" fill="#000000">non&#45;one&#45;shot key went through</text>
-</g>
-</g>
-</svg>
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 <stdio.h>
-#include <stdint.h>
-#include <stddef.h>
-#include <stdbool.h>
-#include <string.h>
-
-#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 <http://www.gnu.org/licenses/>.
-*/
-
-
-#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 <name> <email> @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 <http://www.gnu.org/licenses/>. \ 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 <contact@drae.vin> @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 <http://www.gnu.org/licenses/>.
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 <contact@drae.vin> @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 <http://www.gnu.org/licenses/>.
-*/
-
-#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 <contact@drae.vin> @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 <http://www.gnu.org/licenses/>.
-*/
-
-#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 <contact@drae.vin> @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 <http://www.gnu.org/licenses/>.
-*/
-
-#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 <contact@drae.vin> @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 <http://www.gnu.org/licenses/>.
-*/
-
-#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) <drashna@live.com>
-// 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) <drashna@live.com>
-// 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) <drashna@live.com>
-// 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) <drashna@live.com>
-// 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) <drashna@live.com>
-// 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) <drashna@live.com>
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#include "drashna.h"
-#include <stdio.h>
-#include <ctype.h>
-
-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) <drashna@live.com>
-// 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) <drashna@live.com>
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#include "eeconfig_users.h"
-#include "eeprom.h"
-#include "eeconfig.h"
-#include <string.h>
-
-#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) <drashna@live.com>
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#pragma once
-
-#include <stdint.h>
-
-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) <drashna@live.com>
-// 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 <string.h>
-
-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) <drashna@live.com>
-// 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) <drashna@live.com>
-// 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) <drashna@live.com>
-// 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 `<name>.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/<name>/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/<name>/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) <drashna@live.com>
-// 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) <drashna@live.com>
-// 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) <drashna@live.com>
-// 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) <drashna@live.com>
-// 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) <drashna@live.com>
-// 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` - this is wide mode
-* `KC_SCRIPT` - 𝓽𝓱𝓲𝓼 𝓲𝓼 𝓼𝓬𝓻𝓲𝓹𝓽 𝓶𝓸𝓭𝓮
-* `KC_BLOCKS` - 🆃🅷🅸🆂 🅸🆂 🅱🅻🅾🅲🅺 🅼🅾🅳🅴
-* `KC_REGIONAL` - 🇹‌‌🇭‌‌🇮‌‌🇸‌‌ ‌‌🇮‌‌🇸‌‌ ‌‌🇷‌‌🇪‌‌🇬‌‌🇮‌‌🇴‌‌🇳‌‌🇦‌‌🇱‌‌ ‌‌🇲‌‌🇴‌‌🇩‌‌🇪‌‌
-* `KC_AUSSIE` - ǝpoɯ ǝᴉssnɐ sᴉ sᴉɥʇ
-* `KC_ZALGO` - t̨͕͙̺͍͐̾ĥ̻ï̳̻̗̜͔ͦs͎̠͈͓͗̀ i̶̫ͭ̆s̛̫̻̜̝͑͡ z̩͈̠͗a͚̜̓͜l͈̟g͋͢͝ò͚ͥ͘͡͞ ḿ̴̡̻̼̔ͪò͔̭̿ͪ̍ḏ̻̊̄̈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) <drashna@live.com>
-// 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) <drashna@live.com>
-// 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) <drashna@live.com>
-// 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) <drashna@live.com>
- * 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 <http://www.gnu.org/licenses/>.
- */
-
-#include "drashna.h"
-#include <ctype.h>
-#include <string.h>
-#include <stdio.h>
-#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 <math.h>
- 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) <drashna@live.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#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`.
-
-<!-- to do: add all the stuff -->
-## 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) <drashna@live.com>
-// 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) <drashna@live.com>
-// 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) <drashna@live.com>
-// 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) <drashna@live.com>
-// 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) <drashna@live.com>
-// 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) <drashna@live.com>
-// 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 <rgb_matrix.h>
-
-#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) <drashna@live.com>
-// 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) <drashna@live.com>
-// 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) <drashna@live.com>
-// 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) <drashna@live.com>
-// 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) <drashna@live.com>
-// 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) <drashna@live.com>
-// 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) <drashna@live.com>
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#include "transport_sync.h"
-#include "transactions.h"
-#include <string.h>
-
-#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) <drashna@live.com>
-// 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) <drashna@live.com>
-// 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) <drashna@live.com>
-// 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 <http://www.gnu.org/licenses/>.
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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-// 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-// 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-// 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-// 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-#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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-// 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-// 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-// 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-/*******************************************************************/
-/** 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include USERSPACE_H
-#include "accented_keys.h"
-#include <stdint.h>
-#include <stdbool.h>
-
-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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-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 <stdbool.h>
-#include <stdint.h>
-
-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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-// 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-// 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-#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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-#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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-// 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,
- /* <missing row information> */
- /* <missing column information> */
- 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 <e.a.gebhart@gmail.com>, @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 <http://www.gnu.org/licenses/>.
-*/
-// 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include 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 <e.a.gebhart@gmail.com>, @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 <http://www.gnu.org/licenses/>.
-*/
-// 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-// 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-///* -------- 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 <e.a.gebhart@gmail.com>, @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 <http://www.gnu.org/licenses/>.
-*/
-
-// 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-#include 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-// 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-#include 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 <e.a.gebhart@gmail.com, @possumvibes,@Callum.
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-// 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-#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<<layer);
- clear_keyboard();
-}
-
-// so the keyboard remembers which layer it's in after power disconnect.
-/*
- uint32_t default_layer_state_set_kb(uint32_t state) {
- eeconfig_update_default_layer(state);
- return state;
- }
-*/
-
-void tap_dance_df_bepo_layers_switch (tap_dance_state_t *state, void *user_data) {
- switch(state->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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-/* 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-#include 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-// 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-
-// 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-/* 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-// 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-// 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-// 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-#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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-#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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-// 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-#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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-#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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-#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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-#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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-#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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-#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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-// 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-// 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-#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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-#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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-#include "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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-#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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-// 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-#include 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-// 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-/******************************************************************/
-/* 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-/**********************************************_**********************************/
-/* 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 <e.a.gebhart@gmail.com>
-
- 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 <http://www.gnu.org/licenses/>.
-*/
-
-#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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-/********************************************************************************/
-/* 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-/******************************************************************/
-/* */
-/* 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-// 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-#include "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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-/********************************************************************************/
-/* 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-
-/* 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-//
-// 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-// 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-// 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-// 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-// 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-//
-// 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-// 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-//
-// 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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-#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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-#include "ericgebhart.h"
-#include <stdio.h>
-
-#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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-#include "ericgebhart.h"
-#include <string.h>
-#include <stdio.h>
-
-#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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#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 <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-#include "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/<appropiate>.h*.
- * Add the layer name to *layer_names/base_names.h*
- * Add the layer name to *keymap/<appropiate>.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 <http://www.gnu.org/licenses/>.
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 <string.h>
-#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 <gourdo1@outlook.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include 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 <gourdo1@outlook.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#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 <gourdo1@outlook.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include 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 <http://www.gnu.org/licenses/>.
- */
-#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 <http://www.gnu.org/licenses/>.
- */
-#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 <http://www.gnu.org/licenses/>.
- */
-#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 <http://www.gnu.org/licenses/>.
- */
-#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 <http://www.gnu.org/licenses/>.
- */
-#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 <http://www.gnu.org/licenses/>.
- */
-#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 <http://www.gnu.org/licenses/>.
- */
-#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 <http://www.gnu.org/licenses/>.
- */
-#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 <http://www.gnu.org/licenses/>.
- */
-#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 <http://www.gnu.org/licenses/>.
- */
-#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 <http://www.gnu.org/licenses/>.
- */
-#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 <http://www.gnu.org/licenses/>.
- */
-#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 <http://www.gnu.org/licenses/>.
- */
-#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 <http://www.gnu.org/licenses/>.
- */
-#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 <http://www.gnu.org/licenses/>.
- */
-#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 <http://www.gnu.org/licenses/>.
- */
-#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 <http://www.gnu.org/licenses/>.
- */
-#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 <jakob.haervig@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#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 <jakob.haervig@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "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; i<prev_indx; i++){
- if (kc == prev_kcs[i])
- return;
- }
- if (prev_indx == 6){
- for (int i=5; i>0; 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; i<prev_indx; i++){
- unregister_code(prev_kcs[i]);
- }
- prev_indx = 0;
-}
-#endif
-
-// Interrupt and times for Nav/Esc
-bool navesc = false;
-uint16_t navesc_timer = 0;
-
-// Interrupts all timers
-void timer_timeout(void){
- #ifdef DANISH_ENABLE
- lshiftp = false;
- rshiftp = false;
- #endif
- navesc = false;
- timer_timeout_keymap();
-}
-
-__attribute__((weak))
-void timer_timeout_keymap(void){
-}
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case KC_LGUI:
- case KC_RGUI:
- if (record->event.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 <jakob.haervig@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "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 <https://github.com/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 <http://www.gnu.org/licenses/>.
- */
-
-#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 <https://github.com/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 <http://www.gnu.org/licenses/>.
- */
-
-#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 <https://github.com/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 <http://www.gnu.org/licenses/>.
- */
-
-#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 <https://github.com/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 <http://www.gnu.org/licenses/>.
- */
-
-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 <https://github.com/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 <http://www.gnu.org/licenses/>.
- */
-
-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 <https://github.com/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 <http://www.gnu.org/licenses/>.
- */
-
-#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 <https://github.com/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 <http://www.gnu.org/licenses/>.
- */
-
-#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 <https://github.com/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 <http://www.gnu.org/licenses/>.
- */
-
-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 <https://github.com/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 <http://www.gnu.org/licenses/>.
- */
-
-# 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 <http://www.gnu.org/licenses/>.
- */
-#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 <http://www.gnu.org/licenses/>.
- */
-
-
-#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 <http://www.gnu.org/licenses/>.
- */
-
-
-// #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 <http://www.gnu.org/licenses/>.
- */
-
-
-#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 <http://www.gnu.org/licenses/>.
- */
-
-#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 <http://www.gnu.org/licenses/>.
- */
-
-#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 <iaji@siskam.link> @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 <http://www.gnu.org/licenses/>.
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 <http://www.gnu.org/licenses/>.
- */
-#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 <http://www.gnu.org/licenses/>.
- */
-#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@gmail.com> @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 <http://www.gnu.org/licenses/>.
-*/
-
-#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 <jack.humb@gmail.com> @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 <http://www.gnu.org/licenses/>. \ 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 <http://www.gnu.org/licenses/>.
- */
-
-#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 <http://www.gnu.org/licenses/>.
- */
-
-#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 <http://www.gnu.org/licenses/>.
- */
-
-// 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 <joel@elkins.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "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 <joel@elkins.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#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 <http://www.gnu.org/licenses/>.
-
-#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 <http://www.gnu.org/licenses/>.
- */
-
-#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 <http://www.gnu.org/licenses/>.
- */
-
-#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 <http://www.gnu.org/licenses/>.
- */
-
-#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 <http://www.gnu.org/licenses/>.
-
-#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 @@
-<!--
- 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 <http://www.gnu.org/licenses/>.
--->
-
-# 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 <http://www.gnu.org/licenses/>.
-
-#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 <http://www.gnu.org/licenses/>.
- */
-
-#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 <http://www.gnu.org/licenses/>.
-*/
-
-
-#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 <http://www.gnu.org/licenses/>.
-*/
-
-#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 <http://www.gnu.org/licenses/>.
-*/
-
-
-#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 <http://www.gnu.org/licenses/>.
-
-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 <http://www.gnu.org/licenses/>.
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><James Smith><bronzegears@gmail.com> @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 <http://www.gnu.org/licenses/>.
-
-
-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ć <vomindoraan@gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#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ć <vomindoraan@gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "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ć <vomindoraan@gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#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ć <vomindoraan@gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#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ć <vomindoraan@gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "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ć <vomindoraan@gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#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ć <vomindoraan@gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "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ć <vomindoraan@gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#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ć <vomindoraan@gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "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ć <vomindoraan@gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#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 <http://www.gnu.org/licenses/>.
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 <andre.poley@mailbox.org>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-#include "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: <CTL>+b
-# define KC_EOL TD(TD_EOL) // tap1: 'e' tap2: <CTL>+e
-# define KC_BOL TD(TD_BOL) // tap1: 'a' tap2: <CTL>+a
-# define KC_NW TD(TD_NW) // tap1: 'f' tap2: <ALT>+f
-# define KC_PW TD(TD_PW) // tap1: 'b' tap2: <ALT>+b
-# define KC_DW TD(TD_DW) // tap1: 'w' tap2: <CTL>+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 *<name>.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/<name>/secrets.c
-/users/<name>/secrets.h
-```
-
-Then you can create these files:
-
-### secrets.c
-
-```c
-#include "<name>.h" // replace <name> 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 *<name>.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/<name>/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/<name>/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 *<name>.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
-
-&nbsp;
-* 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 <danny@hexwire.com>
-Copyright 2018 Harley Laue <losinggeneration@gmail.com>
-
-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 <http://www.gnu.org/licenses/>.
-*/
-
-#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 <http://www.gnu.org/licenses/>.
-
-#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 <http://www.gnu.org/licenses/>.
-
-#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 <http://www.gnu.org/licenses/>.
-
-#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 <http://www.gnu.org/licenses/>.
-
-#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 <http://www.gnu.org/licenses/>.
-
-#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 <http://www.gnu.org/licenses/>.
-
-#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 <http://www.gnu.org/licenses/>.
-
-#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 ~<user>/<repo>/<branch>~. 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 ~<user>/<repo>/<branch>~. 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 <http://www.gnu.org/licenses/>.
- */
-
-#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
--- a/users/mguterl/config.h
+++ /dev/null
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 <http://www.gnu.org/licenses/>.
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 <mxb540@gmail.com>
-// 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 <mxb540@gmail.com>
-// 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 <mxb540@gmail.com>
-// 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 <mxb540@gmail.com>
-// 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 <mxb540@gmail.com>
-// 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 <mxb540@gmail.com>
-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 <mxb540@gmail.com>
-// 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 <mxb540@gmail.com>
-// 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 <mxb540@gmail.com>
-// 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 <print.h>
-#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 <print.h>
-
-__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@live.com> @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 <http://www.gnu.org/licenses/>.
-*/
-
-#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 <http://www.gnu.org/licenses/>.
- */
-
-#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 <http://www.gnu.org/licenses/>.
- */
-
-#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 <http://www.gnu.org/licenses/>.
- */
-
-#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 <http://www.gnu.org/licenses/>.
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 <http://www.gnu.org/licenses/>.
- */
-#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 <http://www.gnu.org/licenses/>.
- */
-#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 <http://www.gnu.org/licenses/>.
- */
-#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 <http://www.gnu.org/licenses/>.
- */
-#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 <http://www.gnu.org/licenses/>.
- */
-#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 <http://www.gnu.org/licenses/>.
- */
-#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 <http://www.gnu.org/licenses/>.
- */
-#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 <http://www.gnu.org/licenses/>.
- */
-#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 -> _<sym>,
-#define _BUILD_LAYER_ENUM_NUMBER(sym, str) _ ## sym,
-#define BUILD_LAYER_ENUM_NUMBER(ent) _BUILD_LAYER_ENUM_NUMBER ent
-
-//build -> static const char <sym>_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 -> [_<sym>] = <sym>_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 <http://www.gnu.org/licenses/>.
- */
-
-#include <stdio.h>
-#include <string.h>
-#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=<option>,<option>,... <KEYBOARD>:<KEYMAP>
-# options:
-# dispoff: OLED, RGBLIGHT disable
-# oled: OLED enable
-# no-oled: OLED disable
-# rgblight: RGBLIGHT enable
-# no-rgblight: RGBLIGHT disable
-# no_ani: RGBLIGHT ANIMATIONS disable
-# mini-ani: RGBLIGHT ANIMATIONS mini set
-# ani: RGBLIGHT ANIMATIONS enable
-# scan: DEBUG_MATRIX_SCAN_RATE enable
-# scan-api: DEBUG_MATRIX_SCAN_RATE api enable
-# mdelay=<num> MATRIX_IO_DELAY set <num>
-# mdelay_type=<type> use custom matrix_output_unselect_delay()
-# type=no,ondemand
-# enc: ENCODER enable
-# no-enc: ENCODER disable
-#
-ifneq ($(strip $(USROPT)),)
- define USER_OPTION_PARSE
- # parse 'debug', 'no-debug', 'dispoff', 'consle', 'scan', 'no-scan', 'scan-api',
- # 'mdelay=?', 'mdelay0', 'colemak', 'dvorak', 'eucalyn', 'lto', 'no-lto'
- $(if $(SHOW_PARSE),$(info parse .$1.)) #for debug 'make SHOW_PARSE=y ...'
- ifeq ($(strip $1),debug)
- DEBUG_CONFIG = yes
- endif
- ifneq ($(filter nodebug no-debug no_debug,$(strip $1)),)
- DEBUG_CONFIG = no
- endif
- ifeq ($(strip $1),dispoff)
- OLED_ENABLE = no
- RGBLIGHT_ENABLE = no
- LED_BACK_ENABLE = no
- LED_UNDERGLOW_ENABLE = no
- endif
- ifneq ($(filter rgblight,$(strip $1)),)
- RGBLIGHT_ENABLE = yes
- LED_BACK_ENABLE = yes
- endif
- ifneq ($(filter norgblight no-rgblight,$(strip $1)),)
- RGBLIGHT_ENABLE = no
- LED_BACK_ENABLE = no
- LED_UNDERGLOW_ENABLE = no
- endif
- ifneq ($(filter na no_ani no-ani,$(strip $1)),)
- LED_ANIMATIONS = no
- endif
- ifneq ($(filter mini-ani mini_ani,$(strip $1)),)
- LED_ANIMATIONS = mini
- endif
- ifneq ($(filter ani animation,$(strip $1)),)
- LED_ANIMATIONS = yes
- endif
- ifneq ($(filter nooled no-oled,$(strip $1)),)
- OLED_ENABLE = no
- endif
- ifeq ($(strip $1),oled)
- OLED_ENABLE = yes
- endif
- ifeq ($(strip $1),console)
- CONSOLE_ENABLE = yes
- endif
- ifeq ($(strip $1),scan)
- # use DEBUG_MATRIX_SCAN_RATE
- # see docs/newbs_testing_debugging.md
- DEBUG_MATRIX_SCAN_RATE_ENABLE = yes
- endif
- ifeq ($(strip $1),no-scan)
- DEBUG_MATRIX_SCAN_RATE_ENABLE = no
- endif
- ifeq ($(strip $1),scan-api)
- # use DEBUG_MATRIX_SCAN_RATE
- # see docs/newbs_testing_debugging.md
- DEBUG_MATRIX_SCAN_RATE_ENABLE = api
- endif
- ifneq ($(filter stimer sync-timer,$(strip $1)),)
- SYNC_TIMER_ENABLE = yes
- endif
- ifneq ($(filter nostimer no-sync-timer,$(strip $1)),)
- SYNC_TIMER_ENABLE = no
- endif
- ifeq ($(filter mdelay_type=%,$1),mdelay_type=no)
- CUSTOM_MATRIX_DELAY = no
- endif
- ifeq ($(filter mdelay_type=%,$1),mdelay_type=demand)
- CUSTOM_MATRIX_DELAY = on-demand
- endif
- ifneq ($(filter mdelay=%,$1),)
- MDELAY = $(patsubst mdelay=%,%,$1)
- endif
- ifeq ($(strip $1),mdelay0)
- MDELAY = 0
- endif
- ifeq ($(strip $1),colemak)
- ENABLE_COLEMAK = yes
- endif
- ifeq ($(strip $1),dvorak)
- ENABLE_DVORAK = yes
- endif
- ifeq ($(strip $1),eucalyn)
- ENABLE_EUCALYN = yes
- endif
- ifeq ($(strip $1),lto)
- LTO_ENABLE = yes
- endif
- ifneq ($(filter nolto no-lto no_lto,$(strip $1)),)
- LTO_ENABLE = no
- endif
- ifneq ($(filter enc,$(strip $1)),)
- ENCODER_ENABLE = yes
- endif
- ifneq ($(filter noenc no-enc no_enc,$(strip $1)),)
- ENCODER_ENABLE = no
- endif
- ifneq ($(filter debugenc debug-enc debug_enc,$(strip $1)),)
- DEBUG_ENCODER = yes
- endif
- endef # end of USER_OPTION_PARSE
-
- COMMA=,
- $(eval $(foreach A_OPTION_NAME,$(subst $(COMMA), ,$(USROPT)), \
- $(call USER_OPTION_PARSE,$(A_OPTION_NAME))))
-endif
diff --git a/users/muppetjones/.clang-format b/users/muppetjones/.clang-format
deleted file mode 100644
index df3dbd17b4..0000000000
--- a/users/muppetjones/.clang-format
+++ /dev/null
@@ -1,26 +0,0 @@
----
-BasedOnStyle: Google
-AlignAfterOpenBracket: Align
-AlignConsecutiveAssignments: 'true'
-AlignConsecutiveDeclarations: 'true'
-AlignOperands: 'true'
-AllowAllParametersOfDeclarationOnNextLine: 'false'
-AlwaysBreakAfterDefinitionReturnType: None
-AlwaysBreakAfterReturnType: None
-AlwaysBreakBeforeMultilineStrings: 'false'
-BinPackArguments: 'true'
-BinPackParameters: 'true'
-ColumnLimit: '160'
-IndentCaseLabels: 'true'
-IndentPPDirectives: AfterHash
-IndentWidth: '4'
-MaxEmptyLinesToKeep: '1'
-PointerAlignment: Right
-SortIncludes: 'false'
-SpaceBeforeAssignmentOperators: 'true'
-SpaceBeforeParens: ControlStatements
-SpaceInEmptyParentheses: 'false'
-TabWidth: '4'
-UseTab: Never
-
-...
diff --git a/users/muppetjones/config.h b/users/muppetjones/config.h
deleted file mode 100644
index 742a97950d..0000000000
--- a/users/muppetjones/config.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Copyright 2020 Stephen J. Bush @muppetjones
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-#ifdef RGBLIGHT_ENABLE
-# define RGBLIGHT_HUE_STEP 8
-# define RGBLIGHT_SAT_STEP 16
-# define RGBLIGHT_VAL_STEP 16
-# define RGBLIGHT_LIMIT_VAL 150
-# define RGBLIGHT_SLEEP
-// # define RGBLIGHT_LAYERS
-#endif
-
-#ifdef TAP_DANCE_ENABLE
-// Change "hold" time (default is 200 ms)
-// -- used for tap dance and other tap mods
-# define TAPPING_TERM 175
-
-// Enable rapid switch from tap to hold, disables double tap hold auto-repeat.
-# define QUICK_TAP_TERM 0
-
-#endif
-
-#define COMBO_TERM 40
diff --git a/users/muppetjones/features/casemodes.c b/users/muppetjones/features/casemodes.c
deleted file mode 100644
index da7c5e8fa9..0000000000
--- a/users/muppetjones/features/casemodes.c
+++ /dev/null
@@ -1,247 +0,0 @@
-/* Copyright 2021 Andrew Rae ajrae.nv@gmail.com @andrewjrae
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "casemodes.h"
-
-/* The caps word concept started with me @iaap on splitkb.com discord.
- * However it has been implemented and extended by many splitkb.com users:
- * - @theol0403 made many improvements to initial implementation
- * - @precondition used caps lock rather than shifting
- * - @dnaq his own implementation which also used caps lock
- * - @sevanteri added underscores on spaces
- * - @metheon extended on @sevanteri's work and added specific modes for
- * snake_case and SCREAMING_SNAKE_CASE
- * - @baffalop came up with the idea for xcase, which he implements in his own
- * repo, however this is implemented by @iaap with support also for one-shot-shift.
- * - @sevanteri
- * - fixed xcase waiting mode to allow more modified keys and keys from other layers.
- * - Added @baffalop's separator defaulting on first keypress, with a
- * configurable default separator and overrideable function to determine
- * if the default should be used.
- */
-
-#ifndef DEFAULT_XCASE_SEPARATOR
-# define DEFAULT_XCASE_SEPARATOR KC_UNDS
-#endif
-
-#define IS_OSM(keycode) (keycode >= QK_ONE_SHOT_MOD && keycode <= QK_ONE_SHOT_MOD_MAX)
-
-// bool to keep track of the caps word state
-static bool caps_word_on = false;
-
-// enum to keep track of the xcase state
-static enum xcase_state xcase_state = XCASE_OFF;
-// the keycode of the xcase delimiter
-static uint16_t xcase_delimiter;
-// the number of keys to the last delimiter
-static int8_t distance_to_last_delim = -1;
-
-// Check whether caps word is on
-bool caps_word_enabled(void) { return caps_word_on; }
-
-// Enable caps word
-void enable_caps_word(void) {
- caps_word_on = true;
-#ifndef CAPSWORD_USE_SHIFT
- if (!host_keyboard_led_state().caps_lock) {
- tap_code(KC_CAPS);
- }
-#endif
-}
-
-// Disable caps word
-void disable_caps_word(void) {
- caps_word_on = false;
-#ifndef CAPSWORD_USE_SHIFT
- if (host_keyboard_led_state().caps_lock) {
- tap_code(KC_CAPS);
- }
-#else
- unregister_mods(MOD_LSFT);
-#endif
-}
-
-// Toggle caps word
-void toggle_caps_word(void) {
- if (caps_word_on) {
- disable_caps_word();
- } else {
- enable_caps_word();
- }
-}
-
-// Get xcase state
-enum xcase_state get_xcase_state(void) { return xcase_state; }
-
-// Enable xcase and pickup the next keystroke as the delimiter
-void enable_xcase(void) { xcase_state = XCASE_WAIT; }
-
-// Enable xcase with the specified delimiter
-void enable_xcase_with(uint16_t delimiter) {
- xcase_state = XCASE_ON;
- xcase_delimiter = delimiter;
- distance_to_last_delim = -1;
-}
-
-// Disable xcase
-void disable_xcase(void) { xcase_state = XCASE_OFF; }
-
-// Place the current xcase delimiter
-static void place_delimiter(void) {
- if (IS_OSM(xcase_delimiter)) {
- // apparently set_oneshot_mods() is dumb and doesn't deal with handedness for you
- uint8_t mods = xcase_delimiter & 0x10 ? (xcase_delimiter & 0x0F) << 4 : xcase_delimiter & 0xFF;
- set_oneshot_mods(mods);
- } else {
- tap_code16(xcase_delimiter);
- }
-}
-
-// Removes a delimiter, used for double tap space exit
-static void remove_delimiter(void) {
- if (IS_OSM(xcase_delimiter)) {
- clear_oneshot_mods();
- } else {
- tap_code(KC_BSPC);
- }
-}
-
-// overrideable function to determine whether the case mode should stop
-__attribute__((weak)) bool terminate_case_modes(uint16_t keycode, const keyrecord_t *record) {
- switch (keycode) {
- // Keycodes to ignore (don't disable caps word)
- case KC_A ... KC_Z:
- case KC_1 ... KC_0:
- case KC_MINS:
- case KC_BSPC:
- // If mod chording disable the mods
- if (record->event.pressed && (get_mods() != 0)) {
- return true;
- }
- break;
- case KC_UNDS:
- // Allow to be pressed with or without a modifier (prob w/ shift)
- break;
- default:
- if (record->event.pressed) {
- return true;
- }
- break;
- }
- return false;
-}
-
-/* overrideable function to determine whether to use the default separator on
- * first keypress when waiting for the separator. */
-__attribute__((weak)) bool use_default_xcase_separator(uint16_t keycode, const keyrecord_t *record) {
- // for example:
- /* switch (keycode) { */
- /* case KC_A ... KC_Z: */
- /* case KC_1 ... KC_0: */
- /* return true; */
- /* } */
- return false;
-}
-
-bool process_case_modes(uint16_t keycode, const keyrecord_t *record) {
- if (caps_word_on || xcase_state) {
- if ((QK_MOD_TAP <= keycode && keycode <= QK_MOD_TAP_MAX) || (QK_LAYER_TAP <= keycode && keycode <= QK_LAYER_TAP_MAX)) {
- // Earlier return if this has not been considered tapped yet
- if (record->tap.count == 0) return true;
- keycode = keycode & 0xFF;
- }
-
- if (keycode >= QK_LAYER_TAP && keycode <= QK_ONE_SHOT_LAYER_MAX) {
- // let special keys and normal modifiers go through
- return true;
- }
-
- if (xcase_state == XCASE_WAIT) {
- // grab the next input to be the delimiter
- if (use_default_xcase_separator(keycode, record)) {
- enable_xcase_with(DEFAULT_XCASE_SEPARATOR);
- } else if (record->event.pressed) {
- // factor in mods
- if (get_mods() & MOD_MASK_SHIFT) {
- keycode = LSFT(keycode);
- } else if (get_mods() & MOD_BIT(KC_RALT)) {
- keycode = RALT(keycode);
- }
- enable_xcase_with(keycode);
- return false;
- } else {
- if (IS_OSM(keycode)) {
- // this catches the OSM release if no other key was pressed
- set_oneshot_mods(0);
- enable_xcase_with(keycode);
- return false;
- }
- // let other special keys go through
- return true;
- }
- }
-
- if (record->event.pressed) {
- // handle xcase mode
- if (xcase_state == XCASE_ON) {
- // place the delimiter if space is tapped
- if (keycode == KC_SPACE) {
- if (distance_to_last_delim != 0) {
- place_delimiter();
- distance_to_last_delim = 0;
- return false;
- }
- // remove the delimiter and disable modes
- else {
- remove_delimiter();
- disable_xcase();
- disable_caps_word();
- return true;
- }
- }
- // decrement distance to delimiter on back space
- else if (keycode == KC_BSPC) {
- --distance_to_last_delim;
- }
- // don't increment distance to last delim if negative
- else if (distance_to_last_delim >= 0) {
- // puts back a one shot delimiter if you we're back to the delimiter pos
- if (distance_to_last_delim == 0 && (IS_OSM(xcase_delimiter))) {
- place_delimiter();
- }
- ++distance_to_last_delim;
- }
-
- } // end XCASE_ON
-
- // check if the case modes have been terminated
- if (terminate_case_modes(keycode, record)) {
- disable_caps_word();
- disable_xcase();
- }
-#ifdef CAPSWORD_USE_SHIFT
- else if (keycode >= KC_A && keycode <= KC_Z) {
- tap_code16(LSFT(keycode));
- return false;
- }
-#endif
-
- } // end if event.pressed
-
- return true;
- }
- return true;
-}
diff --git a/users/muppetjones/features/casemodes.h b/users/muppetjones/features/casemodes.h
deleted file mode 100644
index 4a8c00b3d2..0000000000
--- a/users/muppetjones/features/casemodes.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Copyright 2021 Andrew Rae ajrae.nv@gmail.com @andrewjrae
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-#include QMK_KEYBOARD_H
-
-// Check whether caps word is on
-bool caps_word_enabled(void);
-// Enable caps word
-void enable_caps_word(void);
-// Disable caps word
-void disable_caps_word(void);
-// Toggle caps word
-void toggle_caps_word(void);
-
-// enum for the xcase states
-enum xcase_state {
- XCASE_OFF = 0, // xcase is off
- XCASE_ON, // xcase is actively on
- XCASE_WAIT, // xcase is waiting for the delimiter input
-};
-
-// Get xcase state
-enum xcase_state get_xcase_state(void);
-// Enable xcase and pickup the next keystroke as the delimiter
-void enable_xcase(void);
-// Enable xcase with the specified delimiter
-void enable_xcase_with(uint16_t delimiter);
-// Disable xcase
-void disable_xcase(void);
-
-// Function to be put in process user
-bool process_case_modes(uint16_t keycode, const keyrecord_t *record);
diff --git a/users/muppetjones/features/combos.c b/users/muppetjones/features/combos.c
deleted file mode 100644
index a357b3ad4e..0000000000
--- a/users/muppetjones/features/combos.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Copyright 2020 Stephen J. Bush
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifdef COMBO_ENABLE
-# include QMK_KEYBOARD_H
-
-enum combos {
- H_COMM_TAB,
- L_U_SCLN,
- J_M_CAPS,
-};
-
-const uint16_t PROGMEM h_comm_tab[] = {KC_H, KC_COMM, COMBO_END};
-const uint16_t PROGMEM l_u_scln[] = {KC_L, KC_U, COMBO_END};
-const uint16_t PROGMEM j_m_caps[] = {KC_J, KC_M, COMBO_END};
-
-combo_t key_combos[] = {
- [H_COMM_TAB] = COMBO(h_comm_tab, KC_TAB),
- [L_U_SCLN] = COMBO(l_u_scln, KC_SCLN),
- [J_M_CAPS] = COMBO(j_m_caps, KC_CAPS),
-};
-#endif
diff --git a/users/muppetjones/features/combos.h b/users/muppetjones/features/combos.h
deleted file mode 100644
index af092904e4..0000000000
--- a/users/muppetjones/features/combos.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* Copyright 2020 Stephen J. Bush
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
diff --git a/users/muppetjones/features/dancelayers.c b/users/muppetjones/features/dancelayers.c
deleted file mode 100644
index 3744950a4f..0000000000
--- a/users/muppetjones/features/dancelayers.c
+++ /dev/null
@@ -1,98 +0,0 @@
-/* Copyright 2020 Stephen J. Bush
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifdef TAP_DANCE_ENABLE
-
-# include QMK_KEYBOARD_H
-# include "muppetjones.h"
-# include "dancelayers.h"
-
-// Initialize tap structure associated with example tap dance key
-static td_tap_t lyr_tap_state = {.is_press_action = true, .state = TD_NONE};
-
-/* @brief Determine the current tap dance state
- * @param A tap dance state struct.
- * @return A struct.
- */
-td_state_t cur_dance(tap_dance_state_t *state) {
- switch (state->count) {
- case 1:
- if (!state->pressed)
- return TD_1X_TAP;
- else
- return TD_1X_HOLD;
- case 2:
- return TD_2X_TAP;
- break;
- case 3:
- return TD_3X_TAP;
- break;
- case 4:
- return TD_4X_TAP;
- break;
- default:
- return TD_UNKNOWN;
- }
-}
-
-// Functions that control what our tap dance key does
-__attribute__((weak)) void td_layer_finished(tap_dance_state_t *state, void *user_data) {
- lyr_tap_state.state = cur_dance(state);
- switch (lyr_tap_state.state) {
- case TD_1X_TAP:
- if (layer_state_is(_MOUSE))
- layer_off(_MOUSE);
- else
- layer_on(_MOUSE);
- break;
- case TD_1X_HOLD:
- layer_on(_ADJUST);
- break;
- case TD_2X_TAP:
- // Toggle lower layer
- if (layer_state_is(_LOWER))
- layer_off(_LOWER);
- else
- layer_on(_LOWER);
- break;
- case TD_3X_TAP:
- // Toggle lower layer
- if (layer_state_is(_RAISE))
- layer_off(_RAISE);
- else
- layer_on(_RAISE);
- break;
- case TD_4X_TAP:
- // Toggle lower layer
- if (layer_state_is(_ADJUST))
- layer_off(_ADJUST);
- else
- layer_on(_ADJUST);
- break;
- default:
- break;
- }
-}
-
-__attribute__((weak)) void td_layer_reset(tap_dance_state_t *state, void *user_data) {
- // If the key was held down and now is released then switch off the layer
- if (lyr_tap_state.state == TD_1X_HOLD) {
- layer_off(_ADJUST);
- }
- lyr_tap_state.state = TD_NONE;
-}
-
-#endif
diff --git a/users/muppetjones/features/dancelayers.h b/users/muppetjones/features/dancelayers.h
deleted file mode 100644
index 5f7440f48b..0000000000
--- a/users/muppetjones/features/dancelayers.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/* Copyright 2020 Stephen J. Bush
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-#ifdef TAP_DANCE_ENABLE
-# include QMK_KEYBOARD_H
-
-/*
- * TAP DANCE
- * https://docs.qmk.fm/#/feature_tap_dance
- */
-
-// Define a type for as many tap dance states as you need
-typedef enum {
- TD_NONE = 0,
- TD_UNKNOWN,
- TD_1X_TAP,
- TD_1X_HOLD,
- TD_2X_TAP,
- TD_3X_TAP,
- TD_4X_TAP,
-} td_state_t;
-
-// Our custom tap dance key; add any other tap dance keys to this enum
-enum {
- TD_LAYERS = 0, // NOTE: Start at 0 as this is also an array index
-};
-# define TD_LAYR TD(TD_LAYERS)
-
-typedef struct {
- bool is_press_action;
- td_state_t state;
-} td_tap_t;
-
-// Declare the functions to be used with your tap dance key(s)
-
-/* @brief Determine the current tap dance state
- * @param A tap dance state struct.
- * @return A struct.
- */
-td_state_t cur_dance(tap_dance_state_t *state);
-
-// Functions associated with individual tap dances
-
-/* @brief Associate tap actions with layers.
- *
- * NOTE: Weak attribute. Can (and should) be defined in keymap.c
- *
- * @param state Pointer to a tap dance state object.
- * @param user_data Pointer to user data.
- * @return None.
- */
-void td_layer_finished(tap_dance_state_t *state, void *user_data);
-
-/* @brief Reset tap dance actions.
- *
- * NOTE: Weak attribute. Can (and should) be defined in keymap.c
- *
- * @param state Pointer to a tap dance state object.
- * @param user_data Pointer to user data.
- * @return None.
- */
-void td_layer_reset(tap_dance_state_t *state, void *user_data);
-
-/* Define tap dance actions.
- */
-__attribute__((weak))
-tap_dance_action_t tap_dance_actions[1] = {[TD_LAYERS] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, td_layer_finished, td_layer_reset, 275)};
-#endif
diff --git a/users/muppetjones/features/etchamouse.c b/users/muppetjones/features/etchamouse.c
deleted file mode 100644
index e1d4c38e81..0000000000
--- a/users/muppetjones/features/etchamouse.c
+++ /dev/null
@@ -1,101 +0,0 @@
-/* Copyright 2020 Stephen J. Bush
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include QMK_KEYBOARD_H
-#include "etchamouse.h"
-#include "pointing_device.h"
-
-#if defined(POINTING_DEVICE_ENABLE) && defined(ENCODER_ENABLE)
-
-/** Track movement separately in both directions. This will allow us to
- * smooth out the movement along diagonals
- */
-typedef struct {
- bool clockwise : 1;
- uint8_t count : 7;
- uint16_t timer : 16;
- uint16_t elapsed : 16;
-} key_tracker_t;
-
-static key_tracker_t tracker_x = {false, 0, 0, 0};
-static key_tracker_t tracker_y = {false, 0, 0, 0};
-
-/**
- * @brief Calculate the mouse move units for the given tracker.
- *
- * By using a key tracker rederence, we can minimize the amount of space
- * required on the stack. As we will have the tracker object, we will also
- * take the clockwise direction into account, which completely internalizes
- * the movement unit logic within this single function.
- *
- * @param tracker: Pointer to a key tracker object.
- * @return A integer from -127 to 127
- */
-static int8_t move_unit(key_tracker_t *tracker) {
- if (0 == tracker->count) return 0;
-
- const uint16_t modifier = TAPPING_TERM_MOUSE_ENCODER < tracker->elapsed ? 1 : (TAPPING_TERM_MOUSE_ENCODER - tracker->elapsed) >> 1;
- uint16_t speed = MOUSEKEY_INITIAL_SPEED + MOUSEKEY_MOVE_DELTA * modifier * (tracker->count >> 1);
-
- /* convert speed to USB mouse speed 1 to 127 */
- speed = (uint8_t)(speed / (1000.0f / MOUSEKEY_INTERVAL));
- speed = speed < 1 ? 1 : speed;
-
- return (tracker->clockwise ? 1 : -1) * (speed > MOUSEKEY_MOVE_MAX ? MOUSEKEY_MOVE_MAX : speed);
-}
-
-/**
- * @brief Update key press tracker
- *
- * Update the time elapsed since the last keypress.
- * If the key has not been pressed since the tapping term, then reset the count to zero.
- * If the key was pressed, update the timer and increment the count.
- * Number of keypresses will degrade based on tapping term and zero out based
- * on the persistenc term.
- *
- * @param tracker: The object to update
- * @param pressed: A boolean indicating whether or not the key was pressed
- * @return None.
- */
-static void update_tracker(key_tracker_t *tracker, bool pressed, bool clockwise) {
- tracker->elapsed = timer_elapsed(tracker->timer);
- if (pressed) {
- tracker->timer = timer_read();
- tracker->count += 1;
- tracker->clockwise = clockwise;
- } else if (TAPPING_TERM_PERSISTENCE < tracker->elapsed) {
- tracker->count = 0;
- } else if (TAPPING_TERM_MOUSE_ENCODER < tracker->elapsed) {
- tracker->count >>= 1;
- }
-}
-
-bool encoder_update_mouse(uint8_t index, bool clockwise) {
- report_mouse_t curr_report = pointing_device_get_report();
-
- update_tracker(&tracker_x, 0 == index, clockwise);
- update_tracker(&tracker_y, 1 == index, clockwise);
-
- curr_report.x += move_unit(&tracker_x);
- curr_report.y += move_unit(&tracker_y);
-
- pointing_device_set_report(curr_report);
- pointing_device_send();
-
- return true;
-}
-
-#endif
diff --git a/users/muppetjones/features/etchamouse.h b/users/muppetjones/features/etchamouse.h
deleted file mode 100644
index 86b0d03c6e..0000000000
--- a/users/muppetjones/features/etchamouse.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/* Copyright 2020 Stephen J. Bush
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-#if defined(POINTING_DEVICE_ENABLE) && defined(ENCODER_ENABLE)
-
-/* max value on report descriptor */
-# ifndef MOUSEKEY_MOVE_MAX
-# define MOUSEKEY_MOVE_MAX 127
-# elif MOUSEKEY_MOVE_MAX > 127
-# error MOUSEKEY_MOVE_MAX needs to be smaller than 127
-# endif
-# ifndef MOUSEKEY_MOVE_DELTA
-# define MOUSEKEY_MOVE_DELTA 25
-# endif
-# ifndef MOUSEKEY_INITIAL_SPEED
-# define MOUSEKEY_INITIAL_SPEED 100
-# endif
-# ifndef MOUSEKEY_INTERVAL
-# define MOUSEKEY_INTERVAL 75
-# endif
-
-/** Amount of time (ms) before zeroing out the count.
- * A higher value will result in smoother curves but may lower accuracy
- */
-# ifndef TAPPING_TERM_PERSISTENCE
-# define TAPPING_TERM_PERSISTENCE 150
-# endif
-
-/** Amount of time (ms) to register consecutive key presses
- * A higher value will smooth out mouse movement and increase speed for
- * consecutive presses.
- */
-# ifndef TAPPING_TERM_MOUSE_ENCODER
-# define TAPPING_TERM_MOUSE_ENCODER 50
-# endif
-
-/** @brief Update mouse position based on encoder movement.
- * @param index The encoder index. 0 controls x-axis; 1 controls y-axis.
- * @param clockwise Indicates direction encoder was turned.
- * @returns None.
- */
-bool encoder_update_mouse(uint8_t index, bool clockwise);
-
-#endif
diff --git a/users/muppetjones/features/rgblayers.c b/users/muppetjones/features/rgblayers.c
deleted file mode 100644
index 46858ae671..0000000000
--- a/users/muppetjones/features/rgblayers.c
+++ /dev/null
@@ -1,69 +0,0 @@
-/* Copyright 2020 Stephen J. Bush
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifdef RGBLIGHT_ENABLE
-# include QMK_KEYBOARD_H
-# include "rgblayers.h"
-
-static rgblight_config_t home_rgb;
-
-__attribute__((weak)) void set_layer_hsv(layer_state_t state, HSV* offset) {}
-
-/* Placeholder function
- * If defined in a keymap.c, this will be ignored.
- */
-__attribute__((weak)) void post_process_record_keymap(uint16_t keycode, keyrecord_t* record) { return; }
-
-void post_process_record_user(uint16_t keycode, keyrecord_t* record) {
- // Regular user keycode case statement
- switch (keycode) {
-# ifdef RGBLIGHT_ENABLE
- case RGB_HUD:
- case RGB_HUI:
- case RGB_SAD:
- case RGB_SAI:
- case RGB_VAD:
- case RGB_VAI:
- set_rgb_home();
- break;
-# endif
- default:
- break;
- }
-}
-
-void set_rgb_home(void) {
- home_rgb.raw = eeconfig_read_rgblight();
- // these get the current -- not eeprom
- // home_rgb.hue = rgblight_get_hue();
- // home_rgb.sat = rgblight_get_sat();
- // home_rgb.val = rgblight_get_val();
-}
-
-void set_rgb_by_layer(layer_state_t state) {
- if (!rgblight_is_enabled()) {
- return; // lighting not enabled
- }
-
- HSV layer_color = {home_rgb.hue, home_rgb.sat, home_rgb.val};
- set_layer_hsv(state, &layer_color);
- rgblight_sethsv_noeeprom( //
- layer_color.h, // all 3 MUST be btwn 0 and 255
- layer_color.s, //
- layer_color.v //
- );
-}
-#endif
diff --git a/users/muppetjones/features/rgblayers.h b/users/muppetjones/features/rgblayers.h
deleted file mode 100644
index 35be7d7fe4..0000000000
--- a/users/muppetjones/features/rgblayers.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/* Copyright 2020 Stephen J. Bush
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-#ifdef RGBLIGHT_ENABLE
-
-void set_rgb_by_layer(layer_state_t);
-void set_rgb_home(void);
-#endif
diff --git a/users/muppetjones/muppetjones.c b/users/muppetjones/muppetjones.c
deleted file mode 100644
index c4cb02124a..0000000000
--- a/users/muppetjones/muppetjones.c
+++ /dev/null
@@ -1,52 +0,0 @@
-/* Copyright 2020 Stephen J. Bush @muppetjones
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include QMK_KEYBOARD_H
-#include "muppetjones.h"
-#include "tapmods.h"
-#include "features/casemodes.h"
-
-/* Placeholder function
- * If defined in a keymap.c, this will be ignored.
- */
-__attribute__((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; }
-
-/* Handle keypresses
- */
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- if (!process_case_modes(keycode, record)) {
- return false;
- }
- // Regular user keycode case statement
- switch (keycode) {
- case CLMK_DH:
- if (record->event.pressed) {
- set_single_persistent_default_layer(_CLMK_DH);
- }
- return false;
- break;
- case QWERTY:
- if (record->event.pressed) {
- // print("mode just switched to qwerty and this is a huge string\n");
- set_single_persistent_default_layer(_QWERTY);
- }
- return false;
- break;
- default:
- break;
- }
- return process_record_keymap(keycode, record);
-}
diff --git a/users/muppetjones/muppetjones.h b/users/muppetjones/muppetjones.h
deleted file mode 100644
index 3ada6c8198..0000000000
--- a/users/muppetjones/muppetjones.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/* Copyright 2020 Stephen J. Bush @muppetjones
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-#include QMK_KEYBOARD_H
-
-#include "tapmods.h"
-#include "wrappers.h"
-#include "features/casemodes.h"
-
-#ifdef COMBO_ENABLE
-# include "features/combos.h"
-#endif
-
-#ifdef ENCODER_ENABLE
-# include "features/etchamouse.h"
-#endif
-
-#ifdef RGBLIGHT_ENABLE
-# include "features/rgblayers.h"
-#endif
-
-#ifdef TAP_DANCE_ENABLE
-# include "features/dancelayers.h"
-#endif
-
-/* Define layer names */
-enum userspace_layers {
- _CLMK_DH = 0,
- _QWERTY,
- _MOUSE, // Intended for encoders. Mostly pass through.
- _LOWER,
- _RAISE,
- _NAV,
- _ADJUST,
-};
-
-// for casemodes
-enum custom_keycodes {
- CLMK_DH = SAFE_RANGE,
- QWERTY,
-};
diff --git a/users/muppetjones/readme.md b/users/muppetjones/readme.md
deleted file mode 100644
index 6569c01d95..0000000000
--- a/users/muppetjones/readme.md
+++ /dev/null
@@ -1,23 +0,0 @@
-# License
-
-Copyright 2020 Stephen J. Bush @muppetjones
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-# FEATURES
-
-- [Etch-a-sketch Encoders](readme/etchamouse.md)
-- [RGB Layers](readme/rgblayers.md)
-- [Tap Dance Layers](readme/dancelayers.md)
-- [Tap Mods](readme/tapmods.md)
diff --git a/users/muppetjones/readme/dancelayers.md b/users/muppetjones/readme/dancelayers.md
deleted file mode 100644
index 85c4b7cad9..0000000000
--- a/users/muppetjones/readme/dancelayers.md
+++ /dev/null
@@ -1,73 +0,0 @@
-# Tap Dance Layers
-
-This feature creates a key that changes the current layer via tap dance. By
-default, this assumes that you have the following layers defined:
-
-- `_ADJUST`
-- `_LOWER`
-- `_RAISE`
-- `_MOUSE`
-
-And sets up the following tap dance:
-
-| Count | Action | Layer |
-| ----- | ------ | --------- |
-| 1x | hold | `_ADJUST` |
-| 1x | tap | `_MOUSE` |
-| 2x | tap | `_LOWER` |
-| 3x | tap | `_RAISE` |
-| 4x | tap | `_ADJUST` |
-
-## Usage
-
-> NOTE: If you use other tap-dance functions, you may require additonal setup.
-
-1. Copy `features/dancelayers.{c,h}` into your keymap or userspace directory.
-2. Add the following to your `rules.mk`
-
- ```
- TAP_DANCE_ENABLE = yes
-
- SRC += ./features/dancelayers.c
- ```
-
-3. Add the following to your `keymap.c`:
-
- ```
- #ifdef TAP_DANCE_ENABLE
- # include "features/dancelayers.h"
- # define TD_LAYR TD(TD_LAYERS)
- #else
- # define TD_LAYR XXXXXXX
- #endif
- ```
-
-4. Add `TD_LYR` to your keymap.
-
-## Functions and Enumerations
-
-The following functions are available for use:
-
-- `cur_dance`
-
-The following tap dance enumerations are defined:
-
-- `TD_1X_HOLD`
-- `TD_1X_TAP`
-- `TD_2X_TAP`
-- `TD_3X_TAP`
-- `TD_4X_TAP`
-
-## Overriding the Defaults
-
-If you want to define different layers to tap dance actions, you'll need to
-define two additional functions in your `keymap.c`:
-
-- `td_lyr_finished`
-- `td_lyr_reset`
-
-Both of these functions are necessary and require a certain pattern for each
-layer. "Tap" actions are handled in `*_finished` while "hold" actions are
-resolved in `*_finished` and `*_reset`.
-
-See the implementation in `dancelayers.c` for an example.
diff --git a/users/muppetjones/readme/etchamouse.md b/users/muppetjones/readme/etchamouse.md
deleted file mode 100644
index efcf718b22..0000000000
--- a/users/muppetjones/readme/etchamouse.md
+++ /dev/null
@@ -1,69 +0,0 @@
-# Etch-a-Mouse
-
-Encoder-based mouse movement with acceleration!
-
-## Usage
-
-- Add the following to your rules.mk
-
- ```
- ENCODER_ENABLE = yes
- POINTING_DEVICE_ENABLE = yes
- ```
-
-- Add the following block to your keymap.c
-
- ```
- #ifdef ENCODER_ENABLE
- void encoder_update_user(uint8_t index, bool clockwise) {
- # ifdef POINTING_DEVICE_ENABLE
- encoder_update_mouse(index, clockwise);
- # endif
- return;
- #endif
- ```
-
-> NOTE: I use the mousekey keycodes to add button one and two into my keymap.
-
-## How It Works
-
-> This implementation uses the pointing device library, but it reuses several
-> of the same parameters from the mouse key acceleration.
-
-> The PD library is very light weight, but it does not animate cursor movement.
-> tl;dr: The mouse movement will not be smooth!
-
-The acceleration has four parts:
-
-```
-initial speed + (delta * time * count)
-```
-
-1. **Initial Speed**. Uses the `MOUSEKEY_INITIAL_SPEED` parameter.
-2. **Delta**. Uses the `MOUSEKEY_MOVE_DELTA` parameter.
-3. **Time**. The faster you turn, the faster you move.
-
- Subtract the time elapsed since the last actuation from a tapping term,
- defined by `TAPPING_TERM_MOUSE_ENCODER`†, with a minimum value of 1.
-
-4. **Count**. The more you turn, the faster you move.
-
- Count of the total number of actuations. This value will decay over time.
-
-† _I probably could and will eventually use `TAPPING_TERM`, but I did not want
-to mess up my tap mods while experimenting with acceleration._
-
-## Diagonal Movement
-
-Counting the number of actuations for a given axis allows us to persist movement
-along a given axis to give us some diagonal movement when moving both axes,
-which also helps with the acceleration a bit and makes the movement less blocky.
-
-## Time-based Decay (a.k.a., Deceleration)
-
-Originally, the actuation count zeroed out once the tapping term elapsed, but
-this made the movement very choppy. Instead, the count will degrade on every
-refresh after the tapping term has been exceeded; unfortunately, a refresh only
-occurs on an actuation on either axis, so once the time elapsed exceeds the
-persistence term, the count is cleared, which also removes any movement in that
-axis.
diff --git a/users/muppetjones/readme/rgblayers.md b/users/muppetjones/readme/rgblayers.md
deleted file mode 100644
index 862ba75941..0000000000
--- a/users/muppetjones/readme/rgblayers.md
+++ /dev/null
@@ -1,59 +0,0 @@
-# Dynamic Underglow Lighting Per-Layer
-
-This bit of code allows you to define layer lighting that respects your current eeprom settings, e.g., brightness. It does this by storing the base state rgb
-
-## Setup
-
-1. Enable RGB underglow in your `rules.mk`
-
- ```
- RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
- ```
-
-2. (Optional) Add RGB configuration to your `config.h`
-
- ```
- #ifdef RGBLIGHT_ENABLE
- # define RGBLIGHT_HUE_STEP 8
- # define RGBLIGHT_SAT_STEP 16
- # define RGBLIGHT_VAL_STEP 16
- # define RGBLIGHT_LIMIT_VAL 150
- # define RGBLIGHT_SLEEP
- // # define RGBLIGHT_LAYERS
- #endif
- ```
-
-3. Add `set_layer_hsv` function. This is where you define your layer-specific colors by setting the HSV properties on the `layer_color` pointer. This example uses the QMK RGB configuration parameters to keep the layer colors offset based on the current EEPROM HSV.
-
- > NOTE: The HSV values should be between 0 and 255, but setting the modulus on saturation causes the lights to go white on my board. I _think_ this is due to overflow, but I haven't had the chance to try and resolve it yet.
-
-
- ```
- #ifdef RGBLIGHT_ENABLE
- void set_layer_hsv(layer_state_t state, HSV* layer_color) {
- int32_t h = layer_color->h, s = layer_color->s, v = layer_color->v;
- switch (get_highest_layer(state)) {
- case _RAISE:
- h += 2 * RGBLIGHT_HUE_STEP;
- break;
- case _LOWER:
- h += -2 * RGBLIGHT_HUE_STEP;
- break;
- case _NAV:
- h += 1 * RGBLIGHT_HUE_STEP;
- break;
- case _MOUSE:
- h += -7 * RGBLIGHT_HUE_STEP;
- break;
- default:
- break;
- }
- layer_color->h = h % 255;
- layer_color->s = s;
- layer_color->v = v % 255;
- return;
- }
- #endif
- ```
-
-4. (Optional) If you're using `post_process_record_user`, you'll need to change the name in your keymap to `post_process_record_keymap`. We use the user function to update the HSV state after one of the RGB keycodes is pressed.
diff --git a/users/muppetjones/readme/tapmods.md b/users/muppetjones/readme/tapmods.md
deleted file mode 100644
index eb707e05d9..0000000000
--- a/users/muppetjones/readme/tapmods.md
+++ /dev/null
@@ -1,25 +0,0 @@
-# Tap Mods
-
-## Standard Keys
-
-| Keycode | Tap | Hold | Description |
-| -------- | ------- | ----- | ---------------------------------------------------- |
-| `HY_ESC` | Esc | Hyper | Esc on tap; hyper when held |
-| `HR_*` | A, O | LGUI | Home-row for Colemak mod-DH and right-handed numpad. |
-| \'\' | R, I, 6 | LALT | Home-row for Colemak mod-DH and right-handed numpad. |
-| \'\' | S, E, 5 | LCTL | Home-row for Colemak mod-DH and right-handed numpad. |
-| \'\' | T, N, 4 | LSFT | Home-row for Colemak mod-DH and right-handed numpad. |
-
-## Layers
-
-| Keycode | Tap | Hold | Description |
-| ------- | ----- | ----- | --------------------------- |
-| LOWER | -- | Lower | Temporarily activate layer. |
-| RAISE | -- | Raise | Temporarily activate layer. |
-| NAV | -- | Nav | Temporarily activate layer. |
-| LOW_ENT | Enter | Lower | |
-| LOW_SPC | Space | Lower | |
-| NAV_SPC | Space | Nav | |
-| RAI_ENT | Enter | Raise | |
-| RAI_SPC | Space | Raise | |
-| RAI_TAB | Tab | Raise | |
diff --git a/users/muppetjones/readme/wrappers.md b/users/muppetjones/readme/wrappers.md
deleted file mode 100644
index e8365ab7ad..0000000000
--- a/users/muppetjones/readme/wrappers.md
+++ /dev/null
@@ -1,153 +0,0 @@
-# Keymap Wrappers
-
-> Pattern adapted from users/drashna/wrapper.h
-
-Defines several object macros for common keycode sets. Each macro typically
-covers 5 keycodes with a left- or right-hand orientation, and macros are
-generally grouped into rows of three or four.
-
-> TODO: Use keymap builder to generate images.
-
-## Example
-
-```
-#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-// clang-format off
-[_MODS] = LAYOUT_wrapper(
- _______, ___________________BLANK___________________, ...
- ...
-),
-//clang-format on
-}
-```
-
-Substitute the appropriate `LAYOUT` function, e.g., `LAYOUT_planck_grid` for your board.
-
-## Wrappers
-
-> **How to Read the Tables**
->
-> - Headers are numbered when wrapper is not hand-specific
-> - Headers use `L` and `R` to indicate handedness
-> - Headers use `P`, `R`, `M`, and `I` to indicate pinky, ring, middle, and index, respectively
-> - Wrappers define a maximum of **five** keycodes -- hands are shown on the same row for readability
-
-### Alpha: Colemak mod-DH
-
-| # | LP | LR | LM | LI | LI+ | RI+ | RI | RM | RR | RP |
-| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
-| 1 | Q | W | F | P | B | J | L | U | Y | ;ˆ |
-| 2 | A° | R° | S° | T° | G | M | N° | E° | I° | O° |
-| 3 | Z | X | C | D | V˜ | K | H | , | . | / |
-
-- **ˆ:** (Optional) Replace `;` with `'` (top-right)
-- **°:** (Optional) Home row modifiers on tap-hold (GACS, SCAG)
-- **˜:** (Optional) Tap-hold `shift` on `v`
-
-### Alpha: QWERTY
-
-| # | LP | LR | LM | LI | LI+ | RI+ | RI | RM | RR | RP |
-| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
-| 1 | Q | W | E | R | T | Y | U | I | O | P |
-| 2 | A | S | D | F | G | H | J | K | L | ; |
-| 3 | Z | X | C | V | B | N | M | , | . | / |
-
-### Blank(-ish)
-
-Defines macros for common filler.
-
-| 1 | 2 | 3 | 4 | 5 |
-| ---- | ---- | ---- | ---- | ---- |
-| TRNS | TRNS | TRNS | TRNS | TRNS |
-| xxxx | xxxx | xxxx | xxxx | xxxx |
-
-| LP | LR | LM | LI | LI+ | RI+ | RI | RM | RR | RP |
-| ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- |
-| LGUI | LALT | LCTL | LSFT | TRNS | TRNS | RSFT | RCTL | LALT | RGUI |
-
-### Adjust
-
-| # | LP | LR | LM | LI | LI+ | RI+ | RI | RM | RR | RP |
-| --- | ------ | ----- | ---- | ----- | ------ | ---- | ------ | ------ | ---- | ---- |
-| 1 | Reset | Debug | xxxx | Term+ | Term- | xxxx | AGNORM | AGSWAP | xxxx | xxxx |
-| 2 | RgbTog | Hue+ | Sat+ | Val+ | RgbMod | xxxx | CLMKDH | QWERTY | xxxx | xxxx |
-| 3 | xxxx | Hue- | Sat- | Val- | xxxx | xxxx | xxxx | xxxx | xxxx | xxxx |
-
-> Recommend: Define Right side per-board
-
-### Function
-
-| # | 1 | 2 | 3 | 4 |
-| --- | --- | --- | --- | --- |
-| 1 | F1 | F2 | F3 | F4 |
-| 2 | F5 | F6 | F7 | F8 |
-| 3 | F9 | F10 | F11 | F12 |
-
-### Media
-
-| # | 1 | 2 | 3 | 4 | 5 |
-| --- | ----- | ----- | ----- | ---- | ---- |
-| 1 | AuOn | MiOn | MuOn | Brm+ | Vol+ |
-| 2 | AuOff | MiOff | MuOff | Brm- | Vol- |
-| 3 | Play | Stop | Next | Prev | Mute |
-
-### Nav
-
-| # | RI+ | RI | RM | RR | RP |
-| --- | ----- | ---- | ----- | ----- | ----- |
-| 1 | Pg Up | Home | Wh Dn | Wh Up | End |
-| 2 | Pg Dn | Left | Down | Up | Right |
-| 3 | xxxx | xxxx | xxxx | xxxx | xxxx |
-
-### Numpad
-
-- `X Y` indicates the character `X` on keypress and character `Y` on `shift` keypress
-- Second table shows characters with `alt` keypress
-
-| # | RI+ | RI | RM | RR | RP |
-| --- | ----- | ----- | ----- | ----- | ----- |
-| 1 | Del | `7 &` | `8 _` | `9 (` | |
-| 2 | `- _` | `4 $` | `5 %` | `6 ^` | `*` |
-| 3 | `= +` | `1 !` | `2 @` | `3 #` | `, <` |
-| 4 | | `0 )` | `. >` | | |
-
-| # | RI+ | RI | RM | RR | RP |
-| --- | ----- | ----- | ----- | ----- | ----- |
-| 1 | | `¶ ‡` | `• °` | `ª ·` | `« »` |
-| 2 | `– —` | `¢ ›` | `∞ fi` | `§ fl` | `° °` |
-| 3 | `≠ ±` | `¡ ⁄` | `™ €` | `£ ‹` | `≤ ¯` |
-| 4 | | | `º ‚` | | |
-
-### Symbols
-
-| # | LP | LR | LM | LI | LI+ |
-| --- | ---- | ---- | ---- | ---- | ---- |
-| 1 | ~ | \` | ( | ) | |
-| 2 | LGUI | LALT | \[ ° | \] ° | \_ - |
-| 3 | xxxx | xxxx | { | } | LSFT |
-
-- **°:** Home row modifiers on tap-hold (GACS, SCAG)
-
-### VIM
-
-| # | LP | LR | LM | LI | LI+ |
-| --- | --- | --- | --- | --- | --- |
-| 1 | Q° | W° | : | | |
-
-- **°:** Via transparency
-
-## Typical Layers
-
-My keymaps typically use the following layers.
-
-| # | Name | Via | Left | Right |
-| --- | ---------- | ------------- | --------- | ------ |
-| 0 | Colemak DH | Adjust | | |
-| 1 | QWERTY | Adjust | | |
-| 2 | Mouse | tap-dance | n/a | n/a |
-| 3 | Lower | L home thumb | symbols | numpad |
-| 4 | Raise | L outer thumb | | |
-| 5 | Nav | R home thumb | home mods | nav |
-| 6 | Adjust | tap-dance | RGB | MEDIA |
diff --git a/users/muppetjones/rules.mk b/users/muppetjones/rules.mk
deleted file mode 100644
index 1decc2ed98..0000000000
--- a/users/muppetjones/rules.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# Reduce firmware size
-# https://thomasbaart.nl/2018/12/01/reducing-firmware-size-in-qmk/
-# also requires in config.h
-# NO_ACTION_MACRO
-# NO_ACTION_FUNCTION
-LTO_ENABLE = yes
-
-SRC += muppetjones.c
-SRC += features/casemodes.c
-
-ifdef COMBO_ENABLE
- SRC += ./features/combos.c
-endif
-
-ifdef ENCODER_ENABLE
- SRC += ./features/etchamouse.c
-endif
-
-ifdef RGBLIGHT_ENABLE
- SRC += ./features/rgblayers.c
-endif
-
-ifdef TAP_DANCE_ENABLE
- SRC += ./features/dancelayers.c
-endif
diff --git a/users/muppetjones/tapmods.h b/users/muppetjones/tapmods.h
deleted file mode 100644
index af3d160c5b..0000000000
--- a/users/muppetjones/tapmods.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/* Copyright 2020 Stephen Bush
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-#include QMK_KEYBOARD_H
-
-/* Define a stand-in from dancelayers.h in case tap-dance isn't enabled */
-#ifndef TAP_DANCE_ENABLE
-# define TD_LAYR XXXXXXX
-#endif
-
-/* Misc */
-
-#define HY_ESC HYPR_T(KC_ESC)
-#define HY_BSPC HYPR_T(KC_BSPC)
-
-/* Tap Mod Layers */
-
-#define LOWER MO(_LOWER)
-#define RAISE MO(_RAISE)
-#define NAV MO(_NAV)
-
-#define ADJ_DEL LT(_ADJUST, KC_DEL)
-#define LOW_ENT LT(_LOWER, KC_ENT)
-#define LOW_SPC LT(_LOWER, KC_SPC)
-#define LOW_BSP LT(_LOWER, KC_BSPC)
-#define NAV_SPC LT(_NAV, KC_SPC)
-#define RAI_BSP LT(_RAISE, KC_BSPC)
-#define RAI_ENT LT(_RAISE, KC_ENT)
-#define RAI_SPC LT(_RAISE, KC_SPC)
-#define RAI_TAB LT(_RAISE, KC_TAB)
-
-/* Miryoku Home-row Mods
-
-NOTE: Uses GACS.
-*/
-
-// Left-hand home row mods (colemak)
-#define HR_A LGUI_T(KC_A)
-#define HR_R LALT_T(KC_R)
-#define HR_S LCTL_T(KC_S)
-#define HR_T LSFT_T(KC_T)
-
-// Right-hand home row mods (colemak)
-#define HR_N RSFT_T(KC_N)
-#define HR_E RCTL_T(KC_E)
-#define HR_I LALT_T(KC_I)
-#define HR_O RGUI_T(KC_O)
-
-// Right-hand Numpad
-#define HR_4 RSFT_T(KC_4)
-#define HR_5 RCTL_T(KC_5)
-#define HR_6 LALT_T(KC_6)
-
-// Layout-specific mods
-#define TM_VSFT LSFT_T(KC_V) // For Using V in layer combos (e.g., planck)
-
-// GACS (Lower)
-#define HR_LBRC LCTL_T(KC_LBRC)
-#define HR_RBRC LSFT_T(KC_RBRC)
-
-// Left-hand home row mods (lower)---
-// #define HOME_UND LCTL_T(KC_UNDS) // NOTE: Mod-tap restricted to basic keycodes
-#define HOME_MIN LSFT_T(KC_MINS)
diff --git a/users/muppetjones/wrappers.h b/users/muppetjones/wrappers.h
deleted file mode 100644
index 9c6b25481d..0000000000
--- a/users/muppetjones/wrappers.h
+++ /dev/null
@@ -1,247 +0,0 @@
-/* Copyright 2020 Stephen Bush
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-#include "muppetjones.h"
-#include "tapmods.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___________________, ...
- ...
- ),
- }
-*/
-
-#ifdef MOUSEKEY_ENABLE
-# define MK_WH_D KC_WH_D
-# define MK_WH_U KC_WH_U
-#else
-# define MK_WH_D XXXXXXX
-# define MK_WH_U XXXXXXX
-#endif
-
-// clang-format off
-/* Blank-ish
- * ,----------------------------------. * ,----------------------------------.
- * | TRNS | TRNS | TRNS | TRNS | TRNS | * | xxxx | xxxx | xxxx | xxxx | xxxx |
- * `----------------------------------' * `----------------------------------'
- * ,----------------------------------. * ,----------------------------------.
- * | LGUI | LALT | LCTL | LSFT | TRNS | * | TRNS | RSFT | RCTL | LALT | RGUI |
- * `----------------------------------' * `----------------------------------'
-*/
-#define __BLANK____________________________________ _______, _______, _______, _______, _______
-#define __BLANK_NOOP_______________________________ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
-#define __BLANK_W_GACS_____________________________ KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, _______
-#define __BLANK_W_SCAG_____________________________ _______, KC_RSFT, KC_RCTL, KC_LALT, KC_RGUI
-
-/* Adjust LH
- * ,----------------------------------. ,----------------------------------.
- * |Reset |Debug | xxxx |Term+ |Term- | | xxxx |AGNORM|AGSWAP| xxxx | xxxx |
- * |------+------+------+------+------| |------+------+------+------+------|
- * |RgbTog| Hue+ | Sat+ | Val+ |RgbMod| | xxxx |CLMKDH|QWERTY| xxxx | xxxx |
- * |------+------+------+------+------| |------+------+------+------+------|
- * | xxxx | Hue- | Sat- | Val- | xxxx | | xxxx | xxxx | xxxx | xxxx | xxxx |
- * `----------------------------------' `----------------------------------'
- */
- // NOTE: The "BACKLIT" keycode is planck specific
-#define __ADJUST_L1________________________________ QK_BOOT, DB_TOGG, XXXXXXX, XXXXXXX, XXXXXXX
-#define __ADJUST_L2________________________________ RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD
-#define __ADJUST_L3________________________________ XXXXXXX, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX
-
-#define __ADJUST_R1________________________________ XXXXXXX, AG_NORM, AG_SWAP, XXXXXXX, XXXXXXX
-#define __ADJUST_R2________________________________ XXXXXXX, CLMK_DH, QWERTY, XXXXXXX, XXXXXXX
-#define __ADJUST_R3________________________________ __BLANK_NOOP_______________________________
-
-/* Colemak mod-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 | , | . | / |
- * `----------------------------------' `----------------------------------'
- * ˆ Alternate: KC_QUOT
- * ° Alternate: Home row mods (GASC, SCAG)
- * ˜ Alternate: Hold for shift
- *
- * Colemak mod-DH (alt and alt+shift)
- * ,----------------------------------. ,----------------------------------.
- * | œ Œ | ∑ „ | | π ∏ | ı | | ∆ Ô | | | ¥ Á | æ Æ |
- * |------+------+------+------+------| |------+------+------+------+------|
- * | å Å | ® ‰ | ß Í | † ˇ | © ˝ | | µ Â | ˜ ˜ | ´ ´ | ˆ ˆ | Ø |
- * |------+------+------+------+------| |------+------+------+------+------|
- * | Ω ¸ | ≈ ˛ | ç Ç | Î | √ ◊ | | ˚  | Ó | ≤ ¯ | ≥ ˘ | ÷ ¿ |
- * `----------------------------------' `----------------------------------'
- */
-#define __COLEMAK_MOD_DH_L1________________________ KC_Q, KC_W, KC_F, KC_P, KC_B
-#define __COLEMAK_MOD_DH_L2_W_GACS_________________ HR_A, HR_R, HR_S, HR_T, KC_G
-#define __COLEMAK_MOD_DH_L3________________________ KC_Z, KC_X, KC_C, KC_D, KC_V
-#define __COLEMAK_MOD_DH_L3_W_SFTV_________________ KC_Z, KC_X, KC_C, KC_D, TM_VSFT
-
-#define __COLEMAK_MOD_DH_R1_W_QUOT_________________ KC_J, KC_L, KC_U, KC_Y, KC_QUOT
-#define __COLEMAK_MOD_DH_R1________________________ KC_J, KC_L, KC_U, KC_Y, KC_SCLN
-#define __COLEMAK_MOD_DH_R2_W_SCAG_________________ KC_M, HR_N, HR_E, HR_I, HR_O
-#define __COLEMAK_MOD_DH_R3________________________ KC_K, KC_H, KC_COMM, KC_DOT, KC_SLASH
-
-/* Function (4 columns)
- * ,---------------------------.
- * | F1 | F2 | F3 | F4 |
- * |------+------+------+------|
- * | F5 | F6 | F7 | F8 |
- * |------+------+------+------|
- * | F9 | F10 | F11 | F12 |
- * `---------------------------'
- */
-#define __FUNC_X1_________________________ KC_F1, KC_F2, KC_F3, KC_F4
-#define __FUNC_X2_________________________ KC_F5, KC_F6, KC_F7, KC_F8
-#define __FUNC_X3_________________________ KC_F9, KC_F10, KC_F11, KC_F12
-
-/* Game
- */
-#define __GAME_L1__________________________________ KC_BTN3, KC_BTN2, KC_UP, KC_BTN1, KC_BTN5
-#define __GAME_L2__________________________________ KC_BTN4, KC_LEFT, KC_DOWN, KC_RIGHT,XXXXXXX
-#define __GAME_L3__________________________________ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
-
-#define __GAME_R1__________________________________ KC_Q, KC_1, KC_2, KC_3, XXXXXXX
-#define __GAME_R2__________________________________ XXXXXXX, KC_4, KC_5, KC_6, XXXXXXX
-#define __GAME_R3__________________________________ XXXXXXX, KC_7, KC_8, KC_9, XXXXXXX
-
-
-/* Guitar
- * ,----------------------------------. ,----------------------------------.
- * | E | F |• F♯ | G |• G♯ | | A |• A♯ | B |• C | C♯ |
- * | A | A♯ |• B | C |• C♯ | | D |• D♯ | E |• F | F♯ |
- * | D | D♯ |• E | F |• F♯ | | G |• G♯ | A |• A♯ | B |
- * | G | G♯ |• A | A♯ |• B | | C |• C♯ | D |• D♯ | E |
- * | B | C |• C♯ | D |• D♯ | | E |• F | F♯ |• G | G♯ |
- * | E | F |• F♯ | G |• G♯ | | A |• A♯ | B |• C | C♯ |
- * `----------------------------------' `----------------------------------'
- */
-// Not sure why, but this does not work (possibly due to the lowercase 's'?)
-// #ifdef MIDI_ADVANCED
-// #define __GUITAR_1E_L______________________________ MI_E1, MI_F1, MI_Fs1, MI_G1, MI_Gs1
-// #define __GUITAR_2A_L______________________________ MI_A1, MI_As1, MI_B1, MI_C2, MI_Cs2
-// #define __GUITAR_3D_L______________________________ MI_D2, MI_Ds2, MI_E2, MI_F2, MI_Fs2
-// #define __GUITAR_4G_L______________________________ MI_G2, MI_Gs2, MI_A2, MI_As2, MI_B2
-// #define __GUITAR_5B_L______________________________ MI_B2, MI_C3, MI_Cs3, MI_D3, MI_Ds3
-// #define __GUITAR_6E_L______________________________ MI_E3, MI_F3, MI_Fs3, MI_G3, MI_Gs3
-//
-// #define __GUITAR_1E_R______________________________ MI_A1, MI_As1, MI_B1, MI_C2, MI_Cs2
-// #define __GUITAR_2A_R______________________________ MI_D2, MI_Ds2, MI_E2, MI_F2, MI_Fs2
-// #define __GUITAR_3D_R______________________________ MI_G2, MI_Gs2, MI_A2, MI_As2, MI_B2
-// #define __GUITAR_4G_R______________________________ MI_C3, MI_Cs3, MI_D3, MI_Ds3, MI_E3
-// #define __GUITAR_5B_R______________________________ MI_E3, MI_F3, MI_Fs3, MI_G3, MI_Gs3
-// #define __GUITAR_6E_R______________________________ MI_A3, MI_As3, MI_B3, MI_C4, MI_Cs4
-// #endif
-
-
-/* MEDIA
- * ,----------------------------------.
- * | AuOn | MiOn | MuOn | Brm+ | Vol+ |
- * |------+------+------+------+------|
- * | AuOff| MiOff| MuOff| Brm- | Vol- |
- * |------+------+------+------+------|
- * | Play | Stop | Next | Prev | Mute |
- * `----------------------------------'
- */
-#define __MEDIA_R1_________________________________ AU_ON, MI_ON, MU_ON, KC_BRMU, KC_VOLU
-#define __MEDIA_R2_________________________________ AU_OFF, MI_OFF, MU_OFF, KC_BRMD, KC_VOLD
-#define __MEDIA_R3_________________________________ KC_MPLY, KC_MSTP, KC_MNXT, KC_MPRV, KC_MUTE
-
-
-/* NAV
- * ,----------------------------------.
- * | Pg Up| Home | Wh Dn| Wh Up| End |
- * |------+------+------+------+------|
- * | Pg Dn| Left | Down | Up | Right|
- * |------+------+------+------+------|
- * | xxxx | xxxx | xxxx | xxxx | xxxx |
- * `----------------------------------'
- */
-#define __NAV_R1___________________________________ KC_PGUP, KC_HOME, KC_WH_D, KC_WH_U, KC_END
-#define __NAV_R2___________________________________ KC_PGDN, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT
-#define __NAV_R3___________________________________ __BLANK_NOOP_______________________________
-
-/* NUMPAD * (alt, alt+shift)
- * ,----------------------------------. * ,----------------------------------.
- * | Del | 7 & | 8 * | 9 ( | \ | | * | | ¶ ‡ | • ° | ª · | « » |
- * |------+------+------+------+------| * |------+------+------+------+------|
- * | - _ | 4 $ | 5 % | 6 ^ | * | * | – — | ¢ › | ∞ fi | § fl | ° ° |
- * |------+------+------+------+------| * |------+------+------+------+------|
- * | = + | 1 ! | 2 @ | 3 # | , | * | ≠ ± | ¡ ⁄ | ™ € | £ ‹ | ≤ ¯ |
- * |------+------+------+------+------| * |------+------+------+------+------|
- * | | 0 ) | . > | | | * | | | º ‚ | | |
- * `----------------------------------' * `----------------------------------'
- */
-#define __NUMPAD_R1________________________________ KC_GRV, KC_7, KC_8, KC_9, KC_BSLS
-#define __NUMPAD_R2________________________________ KC_MINS, HR_4, HR_5, HR_6, KC_COMM
-#define __NUMPAD_R3________________________________ KC_EQL, KC_1, KC_2, KC_3, KC_DOT
-#define __NUMPAD_R4________________________________ _______, KC_0, KC_DOT, _______, _______
-
-#define __NUMPAD_R3_ALT____________________________ KC_0, KC_1, KC_2, KC_3, KC_EQ
-
-/* Qwerty
- * ,----------------------------------. ,----------------------------------.
- * | 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 | , | . | / |
- * `----------------------------------' `----------------------------------'
- */
-#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
-
-/* SYMBOLS
- * ,----------------------------------.
- * | ~ | ` | ( | ) | |
- * |------+------+------+------+------|
- * | LGUI | LALT |LCTL [|LSFT ]| _ - |
- * |------+------+------+------+------|
- * | xxxx | xxxx | { | } | LSFT |
- * `----------------------------------'
- */
-#define __SYMBOLS_L1_______________________________ KC_TILD, KC_GRV, KC_LPRN, KC_RPRN, XXXXXXX
-#define __SYMBOLS_L2_______________________________ KC_LGUI, KC_LALT, HR_LBRC, HR_RBRC, KC_UNDS
-#define __SYMBOLS_L3_______________________________ XXXXXXX, XXXXXXX, KC_LCBR, KC_RCBR, KC_LSFT
-
-#define __SYMBOLS_R1_______________________________ KC_TILD, KC_LPRN, KC_RPRN, XXXXXXX, XXXXXXX
-#define __SYMBOLS_R2_______________________________ KC_UNDS, HR_LBRC, HR_RBRC, XXXXXXX, XXXXXXX
-#define __SYMBOLS_R3_______________________________ KC_PLUS, KC_LCBR, KC_RCBR, XXXXXXX, XXXXXXX
-
-/* VIM
- * -- Roll through ":wq" via transparency
- * ,----------------------------------.
- * | Q | W | : | | |
- * `----------------------------------'
- */
-#define __VIM_L1___________________________________ _______, _______, KC_COLN, _______, _______
-
-// clang-format on
-// __END__
diff --git a/users/mverteuil/.gitignore b/users/mverteuil/.gitignore
deleted file mode 100644
index 785f649dc6..0000000000
--- a/users/mverteuil/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-copyright.h
diff --git a/users/mverteuil/mverteuil.c b/users/mverteuil/mverteuil.c
deleted file mode 100644
index a3afc417fa..0000000000
--- a/users/mverteuil/mverteuil.c
+++ /dev/null
@@ -1,2 +0,0 @@
-#include QMK_KEYBOARD_H
-#include "mverteuil.h"
diff --git a/users/mverteuil/mverteuil.h b/users/mverteuil/mverteuil.h
deleted file mode 100644
index 1119b75adf..0000000000
--- a/users/mverteuil/mverteuil.h
+++ /dev/null
@@ -1,21 +0,0 @@
-#if AUDIO_ENABLE
-# if __has_include("copyright.h")
-# include "copyright.h"
-# endif
-
-# define LOWER_SOUND S__NOTE(_EF5), W__NOTE(_REST), Q__NOTE(_E4)
-# define NUMPAD_SOUND S__NOTE(_DF5), S__NOTE(_REST), S__NOTE(_C6)
-# define RAISE_SOUND S__NOTE(_E4), W__NOTE(_REST), Q__NOTE(_EF5)
-
-# define AUDIO_ON_SONG SONG(ZELDA_PUZZLE)
-# define LAYER_FUNCROW_ON_SONG SONG(COLEMAK_SOUND)
-# define LAYER_FUNCROW_OFF_SONG SONG(QWERTY_SOUND)
-# define LAYER_NMPAD_SONG SONG(NUMPAD_SOUND)
-# define LAYER_LOWER_SONG SONG(LOWER_SOUND)
-# define LAYER_RAISE_SONG SONG(RAISE_SOUND)
-#else
-// No-op version of PLAY_SONG instead of many checks for AUDIO_ENABLED
-# ifndef PLAY_SONG
-# define PLAY_SONG(ARG) // ARG
-# endif
-#endif
diff --git a/users/mverteuil/rules.mk b/users/mverteuil/rules.mk
deleted file mode 100644
index bfc4b1ed14..0000000000
--- a/users/mverteuil/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-SRC += mverteuil.c
diff --git a/users/narze/narze.c b/users/narze/narze.c
deleted file mode 100644
index 6ec3034492..0000000000
--- a/users/narze/narze.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "narze.h"
diff --git a/users/narze/narze.h b/users/narze/narze.h
deleted file mode 100644
index d9be82744b..0000000000
--- a/users/narze/narze.h
+++ /dev/null
@@ -1,13 +0,0 @@
-#pragma once
-
-#include "quantum.h"
-#include "eeconfig.h"
-#include "keymap_colemak.h"
-
-#ifdef COMBO_ENABLE
-# include "superduper.h"
-#endif
-
-#define HPR_ESC ALL_T(KC_ESC)
-#define SFT_ENT SFT_T(KC_ENT)
-#define ALT_COLN RALT_T(KC_F13) // Remap F13 to Colon in software (eg. Keyboard Maestro)
diff --git a/users/narze/readme.md b/users/narze/readme.md
deleted file mode 100644
index f5caae0c80..0000000000
--- a/users/narze/readme.md
+++ /dev/null
@@ -1,37 +0,0 @@
-# narze's layout
-
-## (S)uper (D)uper Mode
-
-Inspired by [jasonrudolph](https://github.com/jasonrudolph/keyboard#super-duper-mode), with some extensions such as backspace & forward delete. The idea is to make another useful layer available on the home row.
-
-To use, press `S+D` simultaneously and hold, then...
-- `H/J/K/L` for Vim-like movement
-- `I/O` to move between browser tabs
-- `A` for `Option (Alt)`
-- `F` for `Backspace`
-- `;` for `Delete`
-- `A` with `H/L` to move to previous/next word
-- `A` with `G/;` to delete to previous/next word
-- Available for all layouts (but plover) using physical S & D keys position in qwerty
-- `Spacebar` for `Shift` (it's easier when already holding A with your pinky)
-- Disable with `Raise+Lower+M`
-- You can edit or add more useful keys in SUPERDUPER layer
-- It can be activated by holding `/` as well, but it's slower since `LT()` uses `TAPPING_TERM` of 200ms but `S+D` uses `COMBO_TERM` of only 20ms (Can be changed within config.h)
-
-The implementation will vary and some keys are not available in some of my layouts, please refer to `_SUPERDUPER` layer in each of my `keymap.c` files.
-
-# LICENSE
-Copyright 2019 Manassarn Manoonchai manassarn@gmail.com @narze
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
diff --git a/users/narze/rules.mk b/users/narze/rules.mk
deleted file mode 100644
index 565a4a7a63..0000000000
--- a/users/narze/rules.mk
+++ /dev/null
@@ -1,5 +0,0 @@
-SRC += narze.c
-
-ifeq ($(strip $(COMBO_ENABLE)), yes)
- SRC += superduper.c
-endif
diff --git a/users/narze/superduper.c b/users/narze/superduper.c
deleted file mode 100644
index 7545685727..0000000000
--- a/users/narze/superduper.c
+++ /dev/null
@@ -1,66 +0,0 @@
-#include "superduper.h"
-#include "eeconfig.h"
-#include "eeprom.h"
-#include "keymap_colemak.h"
-
-// SuperDuper
-
-#define SUPERDUPER_COMBO_COUNT 3
-#define EECONFIG_SUPERDUPER_INDEX (uint8_t *) 19
-
-enum process_combo_event {
- CB_SUPERDUPER,
-};
-
-enum supported_layers {
- _QWERTY,
- _COLEMAK,
- _QWOC
-};
-
-const uint16_t PROGMEM superduper_combos[SUPERDUPER_COMBO_COUNT][3] = {
- [_QWERTY] = {KC_S, KC_D, COMBO_END},
- [_COLEMAK] = {KC_R, KC_S, COMBO_END},
- [_QWOC] = {CM_S, CM_D, COMBO_END},
-};
-
-combo_t key_combos[] = {
- [CB_SUPERDUPER] = COMBO_ACTION(superduper_combos[_QWERTY]),
-};
-
-volatile bool superduper_enabled = true;
-
-const uint16_t PROGMEM empty_combo[] = {COMBO_END};
-
-bool toggle_superduper_mode(void) {
- superduper_enabled = !superduper_enabled;
-
- if (superduper_enabled) {
- set_superduper_key_combos();
- } else {
- clear_superduper_key_combos();
- }
-
- return superduper_enabled;
-}
-
-void set_superduper_key_combo_layer(uint16_t layer) {
- key_combos[CB_SUPERDUPER].keys = superduper_combos[layer];
- eeprom_update_byte(EECONFIG_SUPERDUPER_INDEX, layer);
-}
-
-void set_superduper_key_combos(void) {
- uint8_t layer = eeprom_read_byte(EECONFIG_SUPERDUPER_INDEX);
-
- switch (layer) {
- case _QWERTY:
- case _COLEMAK:
- case _QWOC:
- key_combos[CB_SUPERDUPER].keys = superduper_combos[layer];
- break;
- }
-}
-
-void clear_superduper_key_combos(void) {
- key_combos[CB_SUPERDUPER].keys = empty_combo;
-}
diff --git a/users/narze/superduper.h b/users/narze/superduper.h
deleted file mode 100644
index f8df2e1afb..0000000000
--- a/users/narze/superduper.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#pragma once
-#include "narze.h"
-
-bool toggle_superduper_mode(void);
-void set_superduper_key_combo_layer(uint16_t layer);
-void set_superduper_key_combos(void);
-void clear_superduper_key_combos(void);
diff --git a/users/nchristus/nchristus.c b/users/nchristus/nchristus.c
deleted file mode 100644
index 555cd74cef..0000000000
--- a/users/nchristus/nchristus.c
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
-Copyright 2020 Nick Christus <nick.christus@hey.com> @nchristus
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "nchristus.h"
diff --git a/users/nchristus/nchristus.h b/users/nchristus/nchristus.h
deleted file mode 100644
index 751b5c8f52..0000000000
--- a/users/nchristus/nchristus.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
-Copyright 2020 Nick Christus <nick.christus@hey.com> @nchristus
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-
-#include QMK_KEYBOARD_H
-
-// Define layer names
-enum userspace_layers {
- _QWRTY = 0,
- _LOWER,
- _RAISE,
- _ARROW,
- _FNCTN,
- _ADJST
-};
-
-// CTRL / ESC
-#define CTL_ESC CTL_T(KC_ESC)
-
-// Force quit dialog
-#define C_O_ESC LALT(LGUI(KC_ESC))
-
-// Mac lock
-#define MAC_LOK LCTL(LGUI(KC_Q))
-
-// 1Password
-#define OPW_OPN LALT(LGUI(KC_BSLS))
-#define OPW_CPY S(LGUI(KC_C))
-
-// Screenshotting
-#define SCR_FLL S(LGUI(KC_3))
-#define SCR_CRP S(LGUI(KC_4))
-
-// FSNotes
-#define FSNOTES LALT(LGUI(LSFT(LCTL(KC_0))))
-
-#if (!defined(LAYOUT) && defined(KEYMAP))
- #define LAYOUT KEYMAP
-#endif
-
-#define KEYMAP_wrapper(...) LAYOUT(__VA_ARGS__)
-#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
-#define LAYOUT_ortho_4x12_wrapper(...) LAYOUT_ortho_4x12(__VA_ARGS__)
-
-#define ___________________BLANK___________________ _______, _______, _______, _______, _______
-
-#define __________________QWERTYL1_________________ KC_Q, KC_W, KC_E, KC_R, KC_T
-#define __________________QWERTYR1_________________ KC_Y, KC_U, KC_I, KC_O, KC_P
-
-#define __________________QWERTYL2_________________ KC_A, KC_S, KC_D, KC_F, KC_G
-#define __________________QWERTYR2_________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN
-
-#define __________________QWERTYL3_________________ KC_Z, KC_X, KC_C, KC_V, KC_B
-#define __________________QWERTYR3_________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH
-
-#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 ________________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 _________________LOWER_L1__________________ ________________NUMBER_LEFT________________
-#define _________________LOWER_L2__________________ KC_MINS, KC_PLUS, KC_LBRC, KC_RBRC, KC_BSLS
-
-#define _________________LOWER_R1__________________ ________________NUMBER_RIGHT_______________
-#define _________________LOWER_R2__________________ KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______
-
-#define _________________RAISE_L1__________________ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC
-#define _________________RAISE_L2__________________ ___________________BLANK___________________
-
-#define _________________RAISE_R1__________________ KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN
-#define _________________RAISE_R2__________________ KC_UNDS, KC_EQL, KC_LCBR, KC_RCBR, KC_PIPE
diff --git a/users/nchristus/rules.mk b/users/nchristus/rules.mk
deleted file mode 100644
index e69de29bb2..0000000000
--- a/users/nchristus/rules.mk
+++ /dev/null
diff --git a/users/ninjonas/.gitignore b/users/ninjonas/.gitignore
deleted file mode 100644
index c6df8c0139..0000000000
--- a/users/ninjonas/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-secrets.c
diff --git a/users/ninjonas/README.md b/users/ninjonas/README.md
deleted file mode 100644
index f6c2f32352..0000000000
--- a/users/ninjonas/README.md
+++ /dev/null
@@ -1,117 +0,0 @@
-# QMK User Configuration for [ninjonas](https://github.com/ninjonas/qmk-yonas)
-Tired of copying and pasting the same macros and tap dances for all my keymaps. Utilizing user keymaps functionality.
-See: https://docs.qmk.fm/#/feature_userspace
-
-## [ninjonas.c](ninjonas.c)
-- ninjonas [QMK user configuration](https://github.com/qmk/qmk_firmware/blob/master/docs/feature_userspace.md)
-- On `keymap.c` include `ninjonas.h`
- ```c
- #include "ninjonas.h"
- ```
-
-## Supported Keyboards
-- [Crkbd ](../../keyboards/crkbd/keymaps/ninjonas)
-- [Hotdox](../../keyboards/hotdox/keymaps/ninjonas)
-- [Pinky3](../../keyboards/pinky/3/keymaps/ninjonas)
-- [Lily58](../../keyboards/lily58/keymaps/ninjonas)
-- [Kyria](../../keyboards/kyria/keymaps/ninjonas)
-
-## Features
-### [Keys](ninjonas.h)
-|Code | Description |
-|---|---|
-|K_LOCK | MacOS shortcut to execute lock command Cmd + CTRL + Q |
-|K_CSCN | MacOS shortcut to copy a portion of the screen to the clipboard |
-|K_MDSH | MacOS shortcut to get em-dash `–` |
-|K_CPRF | Cmd + Shift + M. Used for switching Google Chrome profiles |
-
-### [Layers](ninjonas.h)
-|Code | Description |
-|---|---|
-|LT_LOW | Tap for ENTER, hold for RAISE |
-|LT_RAI | Tap for SPACE, hold for LOWER |
-
-### [Mod-Taps](ninjonas.h)
-|Code | Description |
-|---|---|
-|MT_DEL | Tap for Delete, hold for ALT + SHIFT |
-|MT_EQL | Tap for =, SHIFT |
-
-### [Layout Blocks](ninjonas.h)
-Predefined keyboard layout templates to speed up configuring split keyboards
-
-|Code | Description |
-|---|---|
-|QWERTY | Qwerty Layout |
-|DVORAK | Dvorak Layout |
-|COLEMAK | Colemak Layout |
-|NUM | Number Rows |
-|FUNC | Function Rows |
-|SYM | Symbol Rows \(When holding shift on numbers\) |
-|NAV | Navigation Cluster |
-|MOUSE | Mouse Cluster |
-|MEDIA | Media Cluster |
-|MOD | Modifier Cluster |
-|NUMPAD | Numpad Cluster |
-
-### [Macros](process_records.c)
-|Code | Description |
-|---|---|
-|M_PYNV | Macro to activate pyenv with the name `jira` |
-|M_MAKE | Macro to send QMK make command to compile keyboard |
-|M_MALL | Macro to send QMK make command to all [ninjonas](#Supported%20Keyboards) keyboards |
-|M_FLSH | Macro to send QMK make command to compile keyboard with the correct bootloader |
-|M_VRSN | Macro to send QMK version |
-|M_SHFT | Sends Cmd + alt + shift to a keycode to activate [ShiftIt](https://github.com/fikovnik/ShiftIt) |
-|M_CODE | Opens [Visual Studio Code](https://code.visualstudio.com/) on current directory |
-|M_TERM | Launches Spotlight and calls Terminal |
-|M_XXX1 to M_XXX5 | Reserved for secret macros see [Secrets](#secrets) |
-
-### [Tap-Dance](tap_dances.h)
-|Code | Description |
-|---|---|
-|T_ESC | Tap once for ESC, double tap for CAPS_LOCK |
-|T_LBRC | Tap once for [, double for back browser |
-|T_RBRC | Tap once for ], double for forward browser |
-|T_TAB | Tap once for TAB, double for CTRL + TAB |
-|T_GRV | Tap once for GRV, double for Cmd + GRV |
-|T_GUI | Tap once for Cmd, double to open spotlight |
-|T_CPAP | Tap for Cmd + V, hold for Cmd + C, double tap to open [Line](https://line.me/en/) app, triple tap for itunes. |
-|T_Y | Tap for Y, double tap for NUMPAD layer |
-
-### [Combos](combos.h)
-|Code | Description |
-|---|---|
-|EQ_QUIT | Press E + Q will trigger Cmd + Q |
-|RW_CLOSE | Press R + W will trigger Cmd + W|
-|ET_TAB | Press E + T will trigger Cmd + T|
-|ZC_COPY | Press Z + C will trigger Cmd + C|
-|XV_PASTE | Press X + V will trigger Cmd + V|
-
-### Secrets
-There's times where you have macros you don't want to share like emails, an address you need but you always forget, passwords 😱, & and private strings. Based off [drashna's secret macros](https://github.com/qmk/qmk_firmware/blob/master/users/drashna/readme_secrets.md), it's now possible to do this. All you need to do is create a `secrets.c` file. Below is an example of how this is used.
-
-```c
-// secrets.c
-#include "ninjonas.h"
-
-static const char * const secret[] = {
- "BLANK1",
- "BLANK2",
- "BLANK3",
- "BLANK4",
- "BLANK5"
-};
-
-bool process_record_secrets(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case M_XXX1...M_XXX5:
- if (record->event.pressed) {
- send_string(secret[keycode - M_XXX1]);
- }
- break;
- }
- return true;
-}
-
-``` \ No newline at end of file
diff --git a/users/ninjonas/combos.c b/users/ninjonas/combos.c
deleted file mode 100644
index 3346af4ce4..0000000000
--- a/users/ninjonas/combos.c
+++ /dev/null
@@ -1,55 +0,0 @@
-#include "ninjonas.h"
-
-#ifdef COMBO_ENABLE
-enum combo_events {
- EQ_QUIT,
- RW_CLOSE,
- QT_TAB,
- ZC_COPY,
- XV_PASTE
-};
-
-const uint16_t PROGMEM quit_combo[] = {KC_E, KC_Q, COMBO_END};
-const uint16_t PROGMEM close_combo[] = {KC_R, KC_W, COMBO_END};
-const uint16_t PROGMEM tab_combo[] = {KC_Q, KC_T, COMBO_END};
-const uint16_t PROGMEM copy_combo[] = {KC_Z, KC_C, COMBO_END};
-const uint16_t PROGMEM paste_combo[] = {KC_X, KC_V, COMBO_END};
-
-combo_t key_combos[] = {
- [EQ_QUIT] = COMBO_ACTION(quit_combo),
- [RW_CLOSE] = COMBO_ACTION(close_combo),
- [QT_TAB] = COMBO_ACTION(tab_combo),
- [ZC_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 EQ_QUIT:
- if (pressed) {
- tap_code16(LGUI(KC_Q));
- }
- break;
- case RW_CLOSE:
- if (pressed) {
- tap_code16(LGUI(KC_W));
- }
- break;
- case QT_TAB:
- if (pressed) {
- tap_code16(LGUI(KC_T));
- }
- break;
- case ZC_COPY:
- if (pressed) {
- tap_code16(LGUI(KC_C));
- }
- break;
- case XV_PASTE:
- if (pressed) {
- tap_code16(LGUI(KC_V));
- }
- break;
- }
-}
-#endif
diff --git a/users/ninjonas/config.h b/users/ninjonas/config.h
deleted file mode 100644
index 17bb03865c..0000000000
--- a/users/ninjonas/config.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifdef TAPPING_TERM
- #undef TAPPING_TERM
- #define TAPPING_TERM 200
-#endif
-#define TAPPING_TERM_PER_KEY
-
-// Mouse Settings: Smoothing out mouse movement on keypress
-#ifndef MOUSEKEY_INTERVAL
- #undef MOUSEKEY_INTERVAL
- #define MOUSEKEY_INTERVAL 16
-#endif
-#define MOUSEKEY_DELAY 0
-#define MOUSEKEY_TIME_TO_MAX 60
-#define MOUSEKEY_MAX_SPEED 7
-#define MOUSEKEY_WHEEL_DELAY 0
-
-#ifdef COMBO_ENABLE
- #undef COMBO_TERM
- #define COMBO_TERM 60
-#endif
diff --git a/users/ninjonas/encoder.c b/users/ninjonas/encoder.c
deleted file mode 100644
index f1b448b79b..0000000000
--- a/users/ninjonas/encoder.c
+++ /dev/null
@@ -1,105 +0,0 @@
-/* Copyright 2020 ninjonas
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#include "ninjonas.h"
-
-#ifdef ENCODER_ENABLE
-void left_encoder_cw(void) {
- switch (get_highest_layer(layer_state)) {
- case _LOWER:
- tap_code16(LGUI(KC_TAB));
- break;
- case _RAISE:
- tap_code(KC_PGDN);
- break;
- case _ADJUST:
- rgblight_decrease_hue();
- break;
- default:
- tap_code(KC_BRID);
- break;
- }
-}
-void left_encoder_acw(void) {
- switch (get_highest_layer(layer_state)) {
- case _LOWER:
- tap_code16(SGUI(KC_TAB));
- break;
- case _RAISE:
- tap_code(KC_PGUP);
- break;
- case _ADJUST:
- rgblight_increase_hue();
- break;
- default:
- tap_code(KC_BRIU);
- break;
- }
-}
-void right_encoder_cw(void) {
- switch (get_highest_layer(layer_state)) {
- case _LOWER:
- tap_code(KC_DOWN);
- break;
- case _RAISE:
- tap_code16(LCTL(LSFT(KC_TAB)));
- break;
- case _ADJUST:
- rgblight_decrease_val();
- break;
- default:
- tap_code(KC_VOLD);
- break;
- }
-}
-void right_encoder_acw(void) {
- switch (get_highest_layer(layer_state)) {
- case _LOWER:
- tap_code(KC_UP);
- break;
- case _RAISE:
- tap_code16(LCTL(KC_TAB));
- break;
- case _ADJUST:
- rgblight_increase_val();
- break;
- default:
- tap_code(KC_VOLU);
- break;
- }
-}
-
-bool encoder_update_user(uint8_t index, bool clockwise) {
- encoder_rotated_timer = timer_read();
- if (index == 0) {
- left_encoder_rotated = true;
- if (clockwise) {
- left_encoder_cw();
- } else {
- left_encoder_acw();
- }
- }
- else if (index == 1) {
- right_encoder_rotated = true;
- if (clockwise) {
- right_encoder_cw();
- } else {
- right_encoder_acw();
- }
- }
- return true;
-}
-
-#endif
diff --git a/users/ninjonas/ninjonas.c b/users/ninjonas/ninjonas.c
deleted file mode 100644
index 8d37641aa3..0000000000
--- a/users/ninjonas/ninjonas.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Copyright 2019 @ninjonas
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#include "ninjonas.h"
-
-layer_state_t layer_state_set_user (layer_state_t state) {
- return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
-}
-
-#ifdef RGBLIGHT_ENABLE
-extern rgblight_config_t rgblight_config;
-#endif
-void keyboard_post_init_user(void) {
- #ifdef RGBLIGHT_ENABLE
- // Cycles through the entire hue wheel and resetting to default color
- uint16_t default_hue = rgblight_config.hue;
- rgblight_enable_noeeprom();
- layer_state_set_user(layer_state);
- rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
- for (uint16_t i = 255; i > 0; i--) {
- rgblight_sethsv_noeeprom((i + default_hue) % 255, rgblight_config.sat, rgblight_config.val);
- matrix_scan();
- wait_ms(10);
- }
- #endif
- layer_state_set_user(layer_state);
-}
diff --git a/users/ninjonas/ninjonas.h b/users/ninjonas/ninjonas.h
deleted file mode 100644
index 01df7c6b12..0000000000
--- a/users/ninjonas/ninjonas.h
+++ /dev/null
@@ -1,148 +0,0 @@
-/* Copyright 2019 @ninjonas
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#pragma once
-#include "quantum.h"
-#include "version.h"
-#include "eeprom.h"
-#include "process_records.h"
-
-#ifdef TAP_DANCE_ENABLE
- #include "tap_dances.h"
-#endif
-#if defined(KEYBOARD_lily58_rev1) & defined(PROTOCOL_LUFA)
- #include "lufa.h"
- #include "split_util.h"
-#endif
-
-#ifdef ENCODER_ENABLE
-bool left_encoder_rotated;
-bool right_encoder_rotated;
-uint16_t encoder_rotated_timer;
-#endif
-
-#define _QWERTY 0
-#define _DVORAK 1
-#define _COLEMAK 2
-#define _LOWER 3
-#define _RAISE 4
-#define _ADJUST 5
-#define _NUMPAD 6
-
-// Shortcut Keys
-#define K_LOCK LGUI(LCTL(KC_Q)) // Locks screen on MacOS
-#define K_CSCN LGUI(LCTL(LSFT(KC_4))) // Copy a portion of the screen to the clipboard
-#define K_CPRF LGUI(LSFT(KC_M)) // Cmd + Shift + M. Used for switching Google Chrome profiles
-#define K_MDSH LSFT(LALT(KC_MINS))
-
-// Layer Keys
-#define LT_LOW LT(_LOWER, KC_ENT)
-#define LT_RAI LT(_RAISE, KC_SPC)
-
-// Mod-Tap Keys
-#define MT_DEL MT(MOD_LALT | MOD_LSFT, KC_DEL)
-#define MT_EQL MT(MOD_RSFT, KC_EQL)
-
-// Layout blocks
-#define _____________________QWERTY_L1______________________ T_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T
-#define _____________________QWERTY_L2______________________ T_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_R1______________________ T_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS
-#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, MT_EQL
-
-#define _____________________DVORAK_L1______________________ T_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y
-#define _____________________DVORAK_L2______________________ T_ESC, KC_A, KC_O, KC_E, KC_U, KC_I
-#define _____________________DVORAK_L3______________________ KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X
-
-#define _____________________DVORAK_R1______________________ KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSLS
-#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, MT_EQL
-
-#define _____________________COLEMAK_L1_____________________ T_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G
-#define _____________________COLEMAK_L2_____________________ T_ESC, KC_A, KC_R, KC_S, KC_T, KC_D
-#define _____________________COLEMAK_L3_____________________ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B
-
-#define _____________________COLEMAK_R1_____________________ KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS
-#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, MT_EQL
-
-#define _____________________NUM_LEFT_______________________ T_GRV, KC_1, KC_2, KC_3, KC_4, KC_5
-#define _____________________NUM_RIGHT______________________ KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS
-
-#define _____________________FUNC_LEFT______________________ KC_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5
-#define _____________________FUNC_RIGHT_____________________ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12
-
-#define _____________________SYM_LEFT_______________________ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC
-#define _____________________SYM_RIGHT______________________ KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_UNDS
-
-#define _____________________LOWER_L1_______________________ M_XXX2, M_XXX3, _________MEDIA_1_________, K_CSCN
-#define _____________________LOWER_L2_______________________ M_XXX4, M_XXX5, _________MEDIA_2_________, XXXXXXX
-#define _____________________LOWER_L3_______________________ KC_LSFT, M_SHFT, _________MEDIA_3_________, T_LBRC
-
-#define _____________________LOWER_R1_______________________ _______________NAV_1______________, XXXXXXX, K_MDSH
-#define _____________________LOWER_R2_______________________ _______________NAV_2______________, K_LOCK, XXXXXXX
-#define _____________________LOWER_R3_______________________ T_RBRC, KC_M, M_TERM, M_CODE, M_XXX1, M_PYNV
-
-#define _____________________ADJUST_L1______________________ M_MAKE, EE_CLR, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
-
-#if defined(RGB_MATRIX_ENABLE) || defined(RGBLIGHT_ENABLE)
- #define _____________________ADJUST_L2______________________ M_VRSN, M_MALL, RGB_SPI, RGB_SAI, RGB_HUI, RGB_VAI
- #define _____________________ADJUST_L3______________________ M_FLSH, XXXXXXX, RGB_SPD, RGB_SAD, RGB_HUD, RGB_VAD
-#else
- #define _____________________ADJUST_L2______________________ M_VRSN, M_MALL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
- #define _____________________ADJUST_L3______________________ M_FLSH, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
-#endif
-
-#if defined(RGB_MATRIX_ENABLE) || defined(RGBLIGHT_ENABLE)
- #define _____________________ADJUST_R1______________________ RGB_TOG, XXXXXXX, XXXXXXX, COLEMAK, DVORAK, QWERTY
- #define _____________________ADJUST_R3______________________ RGB_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
-#else
- #define _____________________ADJUST_R1______________________ XXXXXXX, XXXXXXX, XXXXXXX, COLEMAK, DVORAK, QWERTY
- #define _____________________ADJUST_R3______________________ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
-#endif
-#define _____________________ADJUST_R2______________________ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
-
-#define _____________________NUMPAD_1_______________________ T_Y, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_PAST
-#define _____________________NUMPAD_2_______________________ XXXXXXX, KC_P4, KC_P5, KC_P6, KC_PMNS, KC_PSLS
-#define _____________________NUMPAD_3_______________________ KC_P0, KC_P1, KC_P2, KC_P3, KC_PDOT, KC_COLN
-
-#define _______________NAV_1______________ KC_PGUP, KC_HOME, KC_UP, KC_END
-#define _______________NAV_2______________ KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT
-
-#define _____________MOUSE_1______________ KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_D
-#define _____________MOUSE_2______________ KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_U
-
-#define __________________________________ _______, _______, _______, _______
-
-#define _____________MOD_LEFT_____________ KC_LALT, T_GUI, KC_LCTL, LT_RAI
-#define _____________MOD_RIGHT____________ LT_LOW, KC_BSPC, MT_DEL, T_CPAP
-
-#define _________MEDIA_1_________ KC_BRIU, KC_MPLY, KC_MUTE
-#define _________MEDIA_2_________ KC_BRID, KC_MFFD, KC_VOLU
-#define _________MEDIA_3_________ XXXXXXX, KC_MRWD, KC_VOLD
-
-#if defined(KEYBOARD_crkbd_rev1) || defined(KEYBOARD_kyria_rev1)
- #define ________MOD_LEFT_________ T_GUI, KC_LCTL, LT_RAI
- #define ________MOD_RIGHT________ LT_LOW, KC_BSPC, MT_DEL
-#else
- #define ________MOD_LEFT_________ KC_LALT, T_GUI, KC_LCTL
- #define ________MOD_RIGHT________ KC_BSPC, MT_DEL, T_CPAP
-#endif
-
-// Layout wrappers
-#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
-#define LAYOUT_ergodox_wrapper(...) LAYOUT_ergodox(__VA_ARGS__) \ No newline at end of file
diff --git a/users/ninjonas/oled.c b/users/ninjonas/oled.c
deleted file mode 100644
index 73cd50fb8c..0000000000
--- a/users/ninjonas/oled.c
+++ /dev/null
@@ -1,112 +0,0 @@
-#include QMK_KEYBOARD_H
-#include <stdio.h>
-#include "ninjonas.h"
-
-#if defined(OLED_ENABLE) & !defined(KEYBOARD_kyria_rev1)
-
-static uint32_t oled_timer = 0;
-
-
-oled_rotation_t oled_init_user(oled_rotation_t rotation) {
- if (is_keyboard_master()) {
- return OLED_ROTATION_0;
- }
- return OLED_ROTATION_180;
-}
-
-bool process_record_oled(uint16_t keycode, keyrecord_t *record) {
- if (record->event.pressed) {
- oled_timer = timer_read32();
- }
- return true;
-}
-
-void render_layout_state(void) {
- oled_write_P(PSTR("Layout: "), false);
- switch (get_highest_layer(default_layer_state)) {
- case _COLEMAK:
- oled_write_P(PSTR("Colemak"), false);
- break;
- case _DVORAK:
- oled_write_P(PSTR("Dvorak"), false);
- break;
- case _QWERTY:
- oled_write_P(PSTR("Qwerty"), false);
- break;
- default:
- oled_write_ln_P(PSTR("Undefined"), false);
- }
-}
-
-void oled_white_space(void){
- oled_write_P(PSTR(" "), false);
-}
-
-void render_layer_state(void) {
- oled_write_P(PSTR("\nLayer:"), false);
- bool lower = layer_state_is(_LOWER) & !layer_state_is(_ADJUST);
- bool raise = layer_state_is(_RAISE) & !layer_state_is(_ADJUST);
- bool adjust = layer_state_is(_ADJUST);
- bool numpad = layer_state_is(_NUMPAD);
-
- if(lower){
- oled_write_P(PSTR(" Lower "), true);
- } else if(raise){
- oled_write_P(PSTR(" Raise "), true);
- } else if(adjust){
- oled_write_P(PSTR(" Adjust "), true);
- } else if(numpad) {
- oled_write_P(PSTR(" Numpad "), true);
- } else {
- oled_write_P(PSTR(" Default"), false);
- }
-}
-
-void render_mod_state(uint8_t modifiers) {
- oled_write_P(PSTR("\nMods: "), false);
- oled_write_P(PSTR("SHF"), (modifiers & MOD_MASK_SHIFT));
- oled_white_space();
- oled_write_P(PSTR("CTL"), (modifiers & MOD_MASK_CTRL));
- oled_white_space();
- oled_write_P(PSTR("ALT"), (modifiers & MOD_MASK_ALT));
- oled_white_space();
- oled_write_P(PSTR("GUI"), (modifiers & MOD_MASK_GUI));
-}
-
-void render_status(void){
- render_layout_state();
- oled_write_P(PSTR("\n"), false);
- render_layer_state();
- render_mod_state(get_mods()|get_oneshot_mods());
-}
-
-static void render_logo(void) {
- 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};
-
- oled_write_P(qmk_logo, false);
-}
-
-bool oled_task_user(void) {
- if (timer_elapsed32(oled_timer) > 15000) {
- oled_off();
- return false;
- }
- #ifndef SPLIT_KEYBOARD
- else { oled_on(); }
- #endif
-
- if (is_keyboard_master()) {
- render_status();
- } else {
- render_logo();
- oled_write_P(PSTR("\n"), false);
- oled_scroll_left();
- }
- return false;
-}
-
-#endif
diff --git a/users/ninjonas/process_records.c b/users/ninjonas/process_records.c
deleted file mode 100644
index c298227e51..0000000000
--- a/users/ninjonas/process_records.c
+++ /dev/null
@@ -1,117 +0,0 @@
-#include "ninjonas.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; }
-
-#ifdef OLED_ENABLE
-__attribute__((weak))
-bool process_record_oled(uint16_t keycode, keyrecord_t *record) { return true; }
-#endif
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
-
- // Sends pyenv to activate 'jira' environment
- case M_PYNV:
- if (record->event.pressed) {
- SEND_STRING("pyenv activate jira\n");
- }
- break;
-
- // Sends Cmd + alt + shift to a keycode to activate shiftit. See: https://github.com/fikovnik/ShiftIt
- case M_SHFT:
- if (record->event.pressed) {
- register_code(KC_LGUI);
- register_code(KC_LALT);
- register_code(KC_LCTL);
- } else {
- unregister_code(KC_LGUI);
- unregister_code(KC_LALT);
- unregister_code(KC_LCTL);
- }
- break;
-
- // Sends QMK make command to compile keyboard
- case M_MAKE:
- if (record->event.pressed) {
- SEND_STRING("rm -f *.hex && rm -rf .build/ && make " QMK_KEYBOARD ":" QMK_KEYMAP SS_TAP(X_ENTER));
- }
- break;
-
- // Sends QMK make command to compile all keyboards
- case M_MALL:
- if (record->event.pressed) {
- SEND_STRING("rm -f *.hex && rm -rf .build/ && make crkbd:ninjonas lily58:ninjonas hotdox:ninjonas pinky/3:ninjonas kyria:ninjonas\n");
- }
- break;
-
- // Sends QMK make command with the correct bootloader
- case M_FLSH:
- if (!record->event.pressed) {
- SEND_STRING("rm -f *.hex && rm -rf .build/ && make " QMK_KEYBOARD ":" QMK_KEYMAP
- #if (defined(BOOTLOADER_DFU) || defined(BOOTLOADER_LUFA_DFU) || defined(BOOTLOADER_QMK_DFU))
- ":dfu "
- #elif defined(BOOTLOADER_CATERINA)
- ":avrdude "
- #endif
- SS_TAP(X_ENTER)
- );
-
- // Send reset_keyboard command instead of pressing reset button
- #if (defined(BOOTLOADER_DFU) || defined(BOOTLOADER_LUFA_DFU) || defined(BOOTLOADER_QMK_DFU))
- reset_keyboard();
- #endif
- }
- break;
-
- // Sends QMK version
- case M_VRSN:
- if (record->event.pressed) {
- SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE);
- }
- break;
-
- // Opens Visual Studio Code on current directory
- case M_CODE:
- if (record->event.pressed) {
- SEND_STRING("code .\n");
- }
- break;
-
- // Opens Terminal
- case M_TERM:
- if (record->event.pressed) {
- SEND_STRING(SS_DOWN(X_LGUI) SS_TAP(X_SPACE) SS_UP(X_LGUI));
- wait_ms(250);
- SEND_STRING("terminal\n");
- }
- break;
-
- // BEGIN: Layer macros
- case QWERTY:
- if (record->event.pressed) {
- set_single_persistent_default_layer(_QWERTY);
- }
- break;
- case DVORAK:
- if (record->event.pressed) {
- set_single_persistent_default_layer(_DVORAK);
- }
- break;
- case COLEMAK:
- if (record->event.pressed) {
- set_single_persistent_default_layer(_COLEMAK);
- }
- break;
- // END: Layer macros
- }
-
- return process_record_keymap(keycode, record) && process_record_secrets(keycode, record)
- #ifdef OLED_ENABLE
- && process_record_oled(keycode, record)
- #endif
- ; // Close return
-}
diff --git a/users/ninjonas/process_records.h b/users/ninjonas/process_records.h
deleted file mode 100644
index 5b901a1659..0000000000
--- a/users/ninjonas/process_records.h
+++ /dev/null
@@ -1,30 +0,0 @@
-#pragma once
-#include "ninjonas.h"
-
-enum custom_keycodes {
- // Layer Macros
- QWERTY = SAFE_RANGE,
- DVORAK,
- COLEMAK,
- // Custom Macros
- M_PYNV,
- M_SHFT,
- M_MAKE,
- M_MALL,
- M_FLSH,
- M_VRSN,
- M_CODE,
- M_TERM,
- // Secret Macros
- M_XXX1,
- M_XXX2,
- M_XXX3,
- M_XXX4,
- M_XXX5,
-};
-
-bool process_record_secrets(uint16_t keycode, keyrecord_t *record);
-bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
-#ifdef OLED_ENABLE
-bool process_record_oled(uint16_t keycode, keyrecord_t *record);
-#endif
diff --git a/users/ninjonas/rules.mk b/users/ninjonas/rules.mk
deleted file mode 100644
index 7ff8f24b9e..0000000000
--- a/users/ninjonas/rules.mk
+++ /dev/null
@@ -1,16 +0,0 @@
-BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-TAP_DANCE_ENABLE = yes # Enable Tap Dance.
-COMBO_ENABLE = yes # Enable Combos
-
-SRC += ninjonas.c \
- process_records.c \
- tap_dances.c \
- oled.c \
- encoder.c \
- combos.c
-
-ifneq ("$(wildcard $(USER_PATH)/secrets.c)","")
- SRC += secrets.c
-endif \ No newline at end of file
diff --git a/users/ninjonas/tap_dances.c b/users/ninjonas/tap_dances.c
deleted file mode 100644
index c03433e2d6..0000000000
--- a/users/ninjonas/tap_dances.c
+++ /dev/null
@@ -1,122 +0,0 @@
-#include "ninjonas.h"
-
-//// BEGIN: Advanced Tap Dances
-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
-}
-
-// BEGIN: Copy, Paste, Apps
-// https://beta.docs.qmk.fm/features/feature_tap_dance#example-6-using-tap-dance-for-momentary-layer-switch-and-layer-toggle-keys
-static tap copy_paste_app_tap_state = {
- .is_press_action = true,
- .state = 0
-};
-
-void copy_paste_app_finished (tap_dance_state_t *state, void *user_data) {
- copy_paste_app_tap_state.state = cur_dance(state);
- switch (copy_paste_app_tap_state.state) {
- case SINGLE_TAP:
- tap_code16(LGUI(KC_V)); // Tap Cmd + V
- break;
- case SINGLE_HOLD:
- tap_code16(LGUI(KC_C)); // Hold Cmd + C
- break;
- case DOUBLE_TAP:
- SEND_STRING(SS_DOWN(X_LGUI) SS_TAP(X_SPACE) SS_UP(X_LGUI));
- wait_ms(250);
- SEND_STRING("line\n");
- break;
- case TRIPLE_TAP:
- SEND_STRING(SS_DOWN(X_LGUI) SS_TAP(X_SPACE) SS_UP(X_LGUI));
- wait_ms(250);
- SEND_STRING("itunes\n");
- break;
- }
-}
-
-void copy_paste_app_reset (tap_dance_state_t *state, void *user_data) {
- copy_paste_app_tap_state.state = 0;
-}
-// END: Copy, Paste, Apps
-
-// BEGIN: Y, NUMPAD
-static tap y_numpad_tap_state = {
- .is_press_action = true,
- .state = 0
-};
-
-void y_numpad_finished (tap_dance_state_t *state, void *user_data) {
- y_numpad_tap_state.state = cur_dance(state);
- switch (y_numpad_tap_state.state) {
- case SINGLE_TAP:
- tap_code(KC_Y);
- break;
- case SINGLE_HOLD:
- register_code16(KC_Y);
- break;
- case DOUBLE_TAP:
- if (layer_state_is(_NUMPAD)) {
- layer_off(_NUMPAD);
- } else {
- layer_on(_NUMPAD);
- }
- break;
- }
-}
-
-void y_numpad_reset (tap_dance_state_t *state, void *user_data) {
- switch (y_numpad_tap_state.state) {
- case SINGLE_HOLD:
- unregister_code16(KC_Y);
- break;
- }
- y_numpad_tap_state.state = 0;
-}
-// END: Y, NUMPAD
-
-//// END: Advanced Tap Dances
-
-tap_dance_action_t tap_dance_actions[] = {
- [TD_ESC_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS),
- [TD_LBRC_BACK] = ACTION_TAP_DANCE_DOUBLE(KC_LBRC, LGUI(KC_LBRC)),
- [TD_RBRC_FWD] = ACTION_TAP_DANCE_DOUBLE(KC_RBRC, LGUI(KC_RBRC)),
- [TD_TAB_CTRLTAB] = ACTION_TAP_DANCE_DOUBLE(KC_TAB, LCTL(KC_TAB)),
- [TD_GRV_CTRLGRV] = ACTION_TAP_DANCE_DOUBLE(KC_GRV, LGUI(KC_GRV)),
- [TD_GUI_GUISPC] = ACTION_TAP_DANCE_DOUBLE(KC_LGUI, LGUI(KC_SPC)),
-
- // Advanced Tap Dances
- [TD_COPY_PASTE_APP] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, copy_paste_app_finished, copy_paste_app_reset),
- [TD_Y_NUMPAD] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, y_numpad_finished, y_numpad_reset),
-};
-
-uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case TD(TD_COPY_PASTE_APP):
- case TD(TD_Y_NUMPAD):
- return 300;
- default:
- return TAPPING_TERM;
- }
-}
diff --git a/users/ninjonas/tap_dances.h b/users/ninjonas/tap_dances.h
deleted file mode 100644
index 11f77e7171..0000000000
--- a/users/ninjonas/tap_dances.h
+++ /dev/null
@@ -1,37 +0,0 @@
-#pragma once
-#include "ninjonas.h"
-
-typedef struct {
- bool is_press_action;
- int state;
-} tap;
-
-enum tapdance_types{
- 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 custom_tapdances{
- TD_ESC_CAPS = 0,
- TD_LBRC_BACK,
- TD_RBRC_FWD,
- TD_TAB_CTRLTAB,
- TD_GRV_CTRLGRV,
- TD_GUI_GUISPC,
- TD_COPY_PASTE_APP,
- TD_Y_NUMPAD,
-};
-
-#define T_ESC TD(TD_ESC_CAPS) // Tap for ESC, double tap for CAPSLOCK
-#define T_LBRC TD(TD_LBRC_BACK) // Tap for [, double tap for back browser
-#define T_RBRC TD(TD_RBRC_FWD) // Tap for ], double tap for forward browser
-#define T_TAB TD(TD_TAB_CTRLTAB) // Tap for TAB, double tap for CTRL + TAB
-#define T_GRV TD(TD_GRV_CTRLGRV) // Tap for GRV, double tap for Cmd + GRV
-#define T_GUI TD(TD_GUI_GUISPC) // Tap for Cmd, double tap for Cmd + Space
-#define T_CPAP TD(TD_COPY_PASTE_APP) // Tap for paste, hold for copy, double tap for Line App
-#define T_Y TD(TD_Y_NUMPAD) // Tap for Y, double tap for NUMPAD \ No newline at end of file
diff --git a/users/noroadsleft/noroadsleft.c b/users/noroadsleft/noroadsleft.c
deleted file mode 100644
index 80d18f4026..0000000000
--- a/users/noroadsleft/noroadsleft.c
+++ /dev/null
@@ -1,140 +0,0 @@
-/* Copyright 2020-2022 James Young (@noroadsleft)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "noroadsleft.h"
-#include "version.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;
- }
-#if defined(ANSI_NUBS_ROW) && defined(ANSI_NUBS_COL)
- // if ANSI_NUBS_ROW and ANSI_NUBS_COL are both defined, and Right Alt mod is active
- if ( record->event.key.row == ANSI_NUBS_ROW && record->event.key.col == ANSI_NUBS_COL && get_mods() & MOD_MASK_RALT ) {
- if (record->event.pressed) {
- register_code(KC_NUBS);
- } else {
- unregister_code(KC_NUBS);
- }
- return false;
- }
-#endif
- switch (keycode) {
- case VRSN:
- if (record->event.pressed) {
- SEND_STRING(QMK_KEYBOARD ":" QMK_KEYMAP " # @ " QMK_VERSION);
- }
- return false;
- case G_PUSH:
- if (record->event.pressed) {
- SEND_STRING("git push origin ");
- };
- return false;
- case G_FTCH:
- if (record->event.pressed) {
- if ( get_mods() & MOD_MASK_SHIFT ) {
- clear_mods();
- SEND_STRING("git pull upstream ");
- } else {
- SEND_STRING("git fetch upstream ");
- }
- };
- return false;
- case G_BRCH:
- if (record->event.pressed) {
- if ( get_mods() & MOD_MASK_SHIFT ) {
- clear_mods();
- SEND_STRING("master");
- } else {
- SEND_STRING("$(git branch-name)");
- }
- };
- return false;
- case G_PWD:
- if (record->event.pressed) {
- clear_mods();
- SEND_STRING("$( pwd | sed -e 's;^.*/keyboards/;;' -e 's;/;_;g')");
- };
- return false;
- case M_SALL:
- if (record->event.pressed) {
- tap_code16(C(KC_A));
- }
- return false;
- case M_UNDO:
- if (record->event.pressed) {
- register_code(KC_LCTL);
- register_code(KC_Z);
- } else {
- unregister_code(KC_Z);
- unregister_code(KC_LCTL);
- }
- return false;
- case M_CUT:
- if (record->event.pressed) {
- tap_code16(C(KC_X));
- }
- return false;
- case M_COPY:
- if (record->event.pressed) {
- tap_code16(C(KC_C));
- }
- return false;
- case M_PASTE:
- if (record->event.pressed) {
- register_code(KC_LCTL);
- register_code(KC_V);
- } else {
- unregister_code(KC_V);
- unregister_code(KC_LCTL);
- }
- return false;
- case KC_1 ... KC_0:
- if (record->event.pressed) {
- if (get_mods() & MOD_MASK_RALT) {
- register_code(keycode + 0x3B);
- } else {
- register_code(keycode);
- }
- } else {
- if (get_mods() & MOD_MASK_RALT) {
- unregister_code(keycode + 0x3B);
- } else {
- unregister_code(keycode);
- }
- }
- return false;
- case KC_F1 ... KC_F12:
- if (record->event.pressed) {
- if (get_mods() & MOD_MASK_RALT) {
- register_code(keycode + 0x2E);
- } else {
- register_code(keycode);
- }
- } else {
- if (get_mods() & MOD_MASK_RALT) {
- unregister_code(keycode + 0x2E);
- } else {
- unregister_code(keycode);
- }
- }
- return false;
- } // switch()
- return true;
-};
diff --git a/users/noroadsleft/noroadsleft.h b/users/noroadsleft/noroadsleft.h
deleted file mode 100644
index 1d1a547562..0000000000
--- a/users/noroadsleft/noroadsleft.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Copyright 2020-2022 James Young (@noroadsleft)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-#include QMK_KEYBOARD_H
-
-#define MOD_MASK_RALT (MOD_BIT(KC_RALT))
-
-enum userspace_keycodes {
- VRSN = SAFE_RANGE,
- G_PUSH,
- G_FTCH,
- G_BRCH,
- G_PWD,
- M_SALL,
- M_UNDO,
- M_CUT,
- M_COPY,
- M_PASTE,
- KEYMAP_SAFE_RANGE
-};
-
-bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
diff --git a/users/noroadsleft/readme.md b/users/noroadsleft/readme.md
deleted file mode 100644
index d32e66917f..0000000000
--- a/users/noroadsleft/readme.md
+++ /dev/null
@@ -1,85 +0,0 @@
-# @noroadsleft's Userspace
-
-This directory holds the code that's the same for every keyboard I use in QMK, which is currently:
-
-- `kc60`
-- `kbdfans/kbd75/rev1`
-- `coseyfannitutti/discipline`
-
-
-## Macro Features and Custom Keycodes
-
-### [VRSN](./noroadsleft.c#L44-L48)
-
-Outputs a string that tells me the Git commit from which my flashed firmware was built. Looks something like:
-
- kc60:noroadsleft # @ 0.6.326-6-gae6d7b-dirty
-
-### Git Macros
-
-Some frequently used Git commands.
-
-| Keycode | Output | Output with <kbd>Shift</kbd> |
-| :---------------------------------- | :---------------------------------------------------- | :---------------------------------------------------- |
-| [`G_PUSH`](./noroadsleft.c#L44-L48) | `git push origin ` | `git push origin ` |
-| [`G_FTCH`](./noroadsleft.c#L49-L58) | `git fetch upstream ` | `git pull upstream ` |
-| [`G_BRCH`](./noroadsleft.c#L59-L68) | `master` | `$(git branch-name)` |
-| [`G_PWD`](./noroadsleft.c#L69-L74) | `$( pwd \| sed -e 's;^.*/keyboards/;;' -e 's;/;_;g')` | `$( pwd \| sed -e 's;^.*/keyboards/;;' -e 's;/;_;g')` |
-
-`$(git branch-name)` is an alias for `git rev-parse --abbrev-ref HEAD`, which normally returns the name of the current branch.
-
-The `G_PWD` macro outputs a shell expansion that returns the current working directory in relation to `qmk_firmware/keyboards/`, and with the slashes replaced with underscores. I do a lot of keyboard refactoring in QMK, and this is a string I use regularly.
-
-### Customized Keycodes
-
-I used to have a boolean variable that changed the functionality of these keycodes, but I no longer work in the environment that I wrote the functionality for, so I took it out. The keycodes still exist because all my `keymap.c` files reference the custom keycodes I defined.
-
-| Keycode | Action |
-| :------------------------------------ | :-------- |
-| [`M_SALL`](./noroadsleft.c#L75-L79) | `Ctrl+A` |
-| [`M_UNDO`](./noroadsleft.c#L80-L88) | `Ctrl+Z` |
-| [`M_CUT`](./noroadsleft.c#L89-L93) | `Ctrl+X` |
-| [`M_COPY`](./noroadsleft.c#L94-L98) | `Ctrl+C` |
-| [`M_PASTE`](./noroadsleft.c#L99-L107) | `Ctrl+V` |
-
-### [Emulated Non-US Backslash](./noroadsleft.c#L27-L37)
-
-Sometimes I type in languages from countries that use ISO layout, but my keyboards are all ANSI layout, so I have one key fewer than necessary.
-
-This macro simulates the Non-US Backslash key if I hold Right Alt and tap the key to the right of Left Shift.
-
-Requires defining `ANSI_NUBS_ROW` and `ANSI_NUBS_COL` in `config.h` at the keymap level.[<sup>1</sup>](#footnotes)
-
-### [Emulated Numeric Keypad](./noroadsleft.c#L108-L122)
-
-If I hold the Right Alt key, the number row (`KC_1` through `KC_0`) will output numpad keycodes instead of number row keycodes, enabling quicker access to characters like ™ and °.
-
-### [Emulated Extended Function Keys](./noroadsleft.c#L123-L137)
-
-Similar to the emulated numpad, if I hold the Right Alt key with the Fn key, the function row (`KC_F1` through `KC_F12`) will output keycodes `KC_F13` throught `KC_F24`.
-
-
-## License
-
-Copyright 2020-2022 James Young (@noroadsleft)
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-
-## Footnotes
-
-- 1: [^](#emulated-non-us-backslash) `ANSI_NUBS_ROW` and `ANSI_NUBS_COL` are in the following locations:
- - [KC60](../../keyboards/kc60/keymaps/noroadsleft/config.h#L35-L36)
- - [KBDfans KBD75 rev1](../../keyboards/kbdfans/kbd75/keymaps/noroadsleft/config.h#L26-L27)
- - [CoseyFannitutti Discipline](../../keyboards/coseyfannitutti/discipline/keymaps/noroadsleft/config.h#L19-L20)
diff --git a/users/noroadsleft/rules.mk b/users/noroadsleft/rules.mk
deleted file mode 100644
index 2ae1988142..0000000000
--- a/users/noroadsleft/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-SRC += noroadsleft.c \ No newline at end of file
diff --git a/users/not-quite-neo/nqn-basic-layout.h b/users/not-quite-neo/nqn-basic-layout.h
deleted file mode 100644
index 71db9d379b..0000000000
--- a/users/not-quite-neo/nqn-basic-layout.h
+++ /dev/null
@@ -1,124 +0,0 @@
-#ifndef NQN_BASIC_LAYOUT_H
-#define NQN_BASIC_LAYOUT_H
-
-/*
-This is the basic NQN layout
-
-It consists of a block of 5x3, 5x4, 6x3, or 6x4 for each hand. This allows us
-to use these blocks for a variety of keyboards like the planck, preonic and
-even splits like the ergodox.
-
-You can see that we use some quirky preprocessor defines to achive what we
-desire. In the future I would like to see qmk taking a more generic approach
-like the KLL.
-
-The naming convention for these blocks is
- L<LAYER>_<SIDE>_<ROW>
-
- The LAYER is a number following the neo2 manner starting at 1 for the base
- layer, 2 is shift, 3 is for special chars etc.
-
- SIDE is, well either the left or right side/half of a keyboard.
-
- The ROW is starting from the top, numbering beginning at 1.
-*/
-
-
-#include "nqn-common.h"
-
-
-/*
- *
- * LEFT RIGHT
- * ,----------------------------------. ,----------------------------------.
- * 01 | x | v | l | c | w | | k | h | g | f | q |
- * |------+------+------+------+------| |------+------+------+------+------|
- * 02 | u | i | a | e | o | | s | n | r | t | d |
- * |------+------+------+------+------| |------+------+------+------+------|
- * 03 | y | < | # | p | z | | b | m | , | . | j |
- * `----------------------------------' `----------------------------------'
- */
-#define L01_LEFT_01 KC_X, KC_V, KC_L, KC_C, KC_W
-#define L01_LEFT_02 KC_U, KC_I, KC_A, KC_E, KC_O
-#define L01_LEFT_03 N_Y, N_LT, N_HS, KC_P, N_Z
-#define L01_RIGHT_02 KC_S, KC_N, KC_R, KC_T, KC_D
-#define L01_RIGHT_01 KC_K, KC_H, KC_G, KC_F, KC_Q
-#define L01_RIGHT_03 KC_B, KC_M, KC_COMM, KC_DOT, KC_J
-
-
-/*
- *
- * LEFT RIGHT
- * ,----------------------------------. ,----------------------------------.
- * 01 | … | _ | [ | ] | ^ | | ! | < | > | = | & |
- * |------+------+------+------+------| |------+------+------+------+------|
- * 02 | \ | / | { | } | * | | ? | ( | ) | - | @ |
- * |------+------+------+------+------| |------+------+------+------+------|
- * 03 | # | $ | | | ~ | ` | | + | % | " | ' | ° |
- * `----------------------------------' `----------------------------------'
- */
-#define L03_LEFT_01 N_DOTS, N_USC, N_LSQBR, N_RSQBR, N_CIRC
-#define L03_LEFT_02 N_BSLS, N_SLSH, N_LCUBR, N_RCUBR, N_ASTR
-#define L03_LEFT_03 N_HASH, N_DLR, N_PIPE, N_TILD, N_GRAVE
-#define L03_RIGHT_01 N_EXKL, N_LT, N_GT, N_EQ, N_AMP
-#define L03_RIGHT_02 N_QUES, N_LPARN, N_RPARN, N_MINS, N_AT
-#define L03_RIGHT_03 N_PLUS, N_PERC, N_QUOT, N_SING, N_DEGRE
-
-
-/*
- *
- * LEFT RIGHT
- * ,----------------------------------. ,----------------------------------.
- * 01 | PAGEU| BACKS| UP | DELET| PAGED| | / | 7 | 8 | 9 | - |
- * |------+------+------+------+------| |------+------+------+------+------|
- * 02 | HOME | LEFT | DOWN | RIGHT| END | | * | 4 | 5 | 6 | + |
- * |------+------+------+------+------| |------+------+------+------+------|
- * 03 | ESC | TAB | INSRT| ENTER| UNDO | | ENTER| 1 | 2 | 3 | , |
- * `----------------------------------' `----------------------------------'
- */
-#define L04_LEFT_01 KC_PGUP, KC_BSPC, KC_UP, KC_DEL, KC_PGDN
-#define L04_LEFT_02 KC_HOME, KC_LEFT, KC_DOWN, KC_RIGHT, KC_END
-#define L04_LEFT_03 KC_ESC, KC_TAB, KC_INS, KC_ENTER, N_UNDO
-#define L04_RIGHT_01 KC_KP_SLASH, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_MINUS
-#define L04_RIGHT_02 KC_KP_ASTERISK, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_PLUS
-#define L04_RIGHT_03 KC_KP_ENTER, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_DOT
-
-
-/*
- * LEFT RIGHT
- * ,----------------------------------. ,----------------------------------.
- * 01 | | | | | | | | | | | |
- * |------+------+------+------+------| |------+------+------+------+------|
- * 02 | ü | | ä | € | ö | | ß | | | | |
- * |------+------+------+------+------| |------+------+------+------+------|
- * 03 | | | | | | | | µ | | | |
- * `----------------------------------' `----------------------------------'
- */
-#define L05_LEFT_01 _______, _______, _______, _______, _______
-#define L05_LEFT_02 N_UE, _______, N_AE, N_EURO, N_OE
-#define L05_LEFT_03 _______, _______, _______, _______, _______
-#define L05_RIGHT_01 _______, _______, _______, _______, _______
-#define L05_RIGHT_02 N_SS, _______, _______, _______, _______
-#define L05_RIGHT_03 _______, N_MU, _______, _______, _______
-
-
-/*
- *
- * LEFT RIGHT
- * ,----------------------------------. ,----------------------------------.
- * 01 | F1 | F2 | F3 | F4 | | | MAIL | MUSIC| FILES| CALC | PASTE|
- * |------+------+------+------+------| |------+------+------+------+------|
- * 02 | F5 | F6 | F7 | F8 | | | PREV |PLAY/P| NEXT | STOP | COPY |
- * |------+------+------+------+------| |------+------+------+------+------|
- * 03 | F9 | F10 | F11 | F12 | | | PRINT| SCROL| PAUSE| NUMLK| CUT |
- * `----------------------------------' `----------------------------------'
- */
-#define L06_LEFT_01 KC_F1, KC_F2, KC_F3, KC_F4, _______
-#define L06_LEFT_02 KC_F5, KC_F6, KC_F7, KC_F8, _______
-#define L06_LEFT_03 KC_F9, KC_F10, KC_F11, KC_F12, _______
-#define L06_RIGHT_01 KC_MAIL, KC_MSEL, KC_MY_COMPUTER, KC_CALCULATOR, N_PASTE
-#define L06_RIGHT_02 KC_MPRV, KC_MPLY, KC_MNXT, KC_MSTP, N_COPY
-#define L06_RIGHT_03 KC_PSCR, KC_SCRL, KC_PAUS, KC_NUM, N_CUT
-
-
-#endif
diff --git a/users/not-quite-neo/nqn-common.h b/users/not-quite-neo/nqn-common.h
deleted file mode 100644
index bcd79505f7..0000000000
--- a/users/not-quite-neo/nqn-common.h
+++ /dev/null
@@ -1,9 +0,0 @@
-#ifndef NQN_COMMON_H
-#define NQN_COMMON_H
-
-
-/*
-This file holds some commen NQN definitions
-*/
-
-#endif
diff --git a/users/not-quite-neo/nqn-keys-on-quertz-de-latin1.h b/users/not-quite-neo/nqn-keys-on-quertz-de-latin1.h
deleted file mode 100644
index f5ab1631a7..0000000000
--- a/users/not-quite-neo/nqn-keys-on-quertz-de-latin1.h
+++ /dev/null
@@ -1,73 +0,0 @@
-#ifndef NQN_KEYS_ON_QUERTZ_DE_LATIN1_H
-#define NQN_KEYS_ON_QUERTZ_DE_LATIN1_H
-
-
-/*
-This file defines the desierd NQN keys if you use a software (operating sysetm)
-configured for a QUERTZ layout (de-latin1).
-
-These chars can be created by using ALTGR on linux and a few of them on windows
-with a German de-latin1 layout (depending on desktop environment and/or
-application).
- ′¹²³¼½¬{[]}\¸
- @ł€¶ŧ←↓→øþ¨~
- æſðđŋħ̣ĸł˝^’
- |»«¢„“”µ·…–
-
-Additionally, there are some common chars that we dit not yet define:
- §
-*/
-
-
-#include "nqn-common.h"
-
-
-// NQN key definitions in no particular order
-#define N_LT KC_NONUS_BACKSLASH
-#define N_HS KC_NONUS_HASH
-#define N_DOTS RALT(KC_DOT) // …
-#define N_USC LSFT(KC_SLASH) // _
-#define N_LSQBR RALT(KC_8) // [
-#define N_RSQBR RALT(KC_9) // ]
-#define N_CIRC KC_GRAVE // ^
-#define N_EXKL LSFT(KC_1) // !
-#define N_GT LSFT(KC_NONUS_BACKSLASH) // >
-#define N_EQ LSFT(KC_0) // =
-#define N_AMP LSFT(KC_6) // &
-#define N_BSLS RALT(KC_MINS) // \ backslash
-#define N_SLSH LSFT(KC_7) // /
-#define N_LCUBR RALT(KC_7) // {
-#define N_RCUBR RALT(KC_0) // }
-#define N_ASTR LSFT(KC_RBRC) // *
-#define N_QUES LSFT(KC_MINS) // ?
-#define N_LPARN LSFT(KC_8) // (
-#define N_RPARN LSFT(KC_9) // )
-#define N_MINS KC_SLASH // -
-#define N_COLN LSFT(KC_DOT) // :
-#define N_HASH KC_BACKSLASH // #
-#define N_DLR LSFT(KC_4) // $
-#define N_PIPE RALT(KC_NONUS_BACKSLASH) // |
-#define N_TILD RALT(KC_RBRC) // ~
-#define N_GRAVE LSFT(KC_EQUAL) // `
-#define N_PLUS KC_RBRC // +
-#define N_PERC LSFT(KC_5) // %
-#define N_QUOT LSFT(KC_2) // "
-#define N_SING LSFT(KC_BACKSLASH) // '
-#define N_SEMI LSFT(KC_COMM) // ;
-#define N_EURO RALT(KC_E) // €
-#define N_AT RALT(KC_Q) // @
-#define N_Z KC_Y
-#define N_Y KC_Z
-#define N_AE KC_QUOTE // ä
-#define N_OE KC_SCLN // ö
-#define N_UE KC_LBRC // ü
-#define N_MU RALT(KC_M) // µ
-#define N_SS KC_MINS // ß
-#define N_DEGRE LSFT(KC_GRAVE) // °
-#define N_PASTE LCTL(KC_V) // CTRL+V
-#define N_COPY LCTL(KC_C) // CTRL+C
-#define N_CUT LCTL(KC_X) // CTRL+X
-#define N_UNDO LCTL(N_Z) // CTRL+Z
-
-
-#endif
diff --git a/users/not-quite-neo/readme.md b/users/not-quite-neo/readme.md
deleted file mode 100644
index 85a29ecc66..0000000000
--- a/users/not-quite-neo/readme.md
+++ /dev/null
@@ -1,24 +0,0 @@
-# not-quite-neo
-
-This is my personal take on porting the [neo2 layout](https://www.neo-layout.org/) to support both a ergodox (infinity) and a planck keyboard. Some sacrifices needed to be made, hence this layout is not-quite-neo.
-
-## Use case
-My use case is simple:
-
-* I want to use neo2 (or a keymap as close as possible) on any computer I can plug my keyboards in. Because installing the neo2 SW driver is often not a acceptable solution.
-* Since most computers I work on (colleagues, family, etc.) use a de-DE keymap, I can not use the official neo2 implementation, because it relies on a us layout and I often times do not even posses the administration rights to change that.
-* neo2 makes use of most of the keys of a standard 104 key keyboard, especially for supporting the planck I needed to deviate from the original neo2 layout in order to fit everything I wanted.
-
-Therefore, I put all reusable code in the users/not-quite-neo directory and created a custom not-quite-neo keymap for the planck and the ergodox infinity keyboard respectively.
-
-## Pitfalls
-Mind, since neo2 is a SW driver supported layout it offers a lot of features that are hard to support in hardware (especially the fancy utf stuff with math symbols and greek letters etc.).
-
-Right now this implementation only incompletely supports neo2 layers 1 to 4.
-
-The biggest difference is probably the support for the German Umlauts ä, ö, ü and the ß. Since we rely on a smaller number of keys some glyphs needed to be created otherwise. See the implementation in [nqn-basic-layout.h](nqn-basic-layout.h) for details.
-
-## Keyboards and keymaps
-
-You can find the *not-quite-neo* keymap for the ergodox infinity under [qmk_firmware/keyboards/ergodox_infinity/keymaps/not-quite-neo/](../../keyboards/ergodox_infinity/keymaps/not-quite-neo/readme.md). Respectively the keymap for the planck resides in [qmk_firmware/keyboards/planck/keymaps/not-quite-neo/](../../keyboards/planck/keymaps/not-quite-neo/readme.md)
- . \ No newline at end of file
diff --git a/users/nstickney/config.h b/users/nstickney/config.h
deleted file mode 100644
index b853038c21..0000000000
--- a/users/nstickney/config.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/* Copyright 2021 @nstickney
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-// Changes from Bastyl defaults
-#ifdef MASTER_RIGHT
-# undef MASTER_RIGHT
-#endif
-
-// Turn off RGB lights when computer is sleeping
-#define RGBLIGHT_SLEEP
-
-// https://beta.docs.qmk.fm/developing-qmk/qmk-reference/config_options#features-that-can-be-disabled
-#define NO_ACTION_ONESHOT
-#define NO_ACTION_MACRO
-#define NO_ACTION_FUNCTION
-
-// Turn off all possible RGB animations
-#ifdef RGB_ANIMATIONS
-# undef RGB_ANIMATIONS
-#endif
-#ifdef RGB_EFFECT_ALTERNATING
-# undef RGB_EFFECT_ALTERNATING
-#endif
-#ifdef RGB_EFFECT_BREATHING
-# undef RGB_EFFECT_BREATHING
-#endif
-#ifdef RGB_EFFECT_CHRISTMAS
-# undef RGB_EFFECT_CHRISTMAS
-#endif
-#ifdef RGB_EFFECT_KNIGHT
-# undef RGB_EFFECT_KNIGHT
-#endif
-#ifdef RGB_EFFECT_RAINBOW_MOOD
-# undef RGB_EFFECT_RAINBOW_MOOD
-#endif
-#ifdef RGB_EFFECT_RAINBOW_SWIRL
-# undef RGB_EFFECT_RAINBOW_SWIRL
-#endif
-#ifdef RGB_EFFECT_RGB_TEST
-# undef RGB_EFFECT_RGB_TEST
-#endif
-#ifdef RGB_EFFECT_SNAKE
-# undef RGB_EFFECT_SNAKE
-#endif
-#ifdef RGB_EFFECT_STATIC_GRADIENT
-# undef RGB_EFFECT_STATIC_GRADIENT
-#endif
-#ifdef RGB_EFFECT_TWINKLE
-# undef RGB_EFFECT_TWINKLE
-#endif
diff --git a/users/nstickney/nstickney.c b/users/nstickney/nstickney.c
deleted file mode 100644
index b056e1cbaf..0000000000
--- a/users/nstickney/nstickney.c
+++ /dev/null
@@ -1,96 +0,0 @@
-/* Copyright 2021 @nstickney
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#include "nstickney.h"
-
-// Tap Dancing
-void dance_layer(tap_dance_state_t *state, void *user_data) {
- switch (state->count) {
- case 1:
- tap_code(KC_APP);
- break;
- case 2:
- layer_invert(NUMP);
- break;
- case 3:
- layer_invert(SYMB);
- break;
- default:
- break;
- }
-};
-
-void dance_lock_finished(tap_dance_state_t *state, void *user_data) {
- switch (state->count) {
- case 1:
- register_code(KC_LGUI);
- break;
- case 2:
- register_code(KC_NUM);
- break;
- case 3:
- register_code(KC_CAPS);
- break;
- case 4:
- register_code(KC_SCRL);
- break;
- default:
- break;
- }
-};
-
-void dance_lock_reset(tap_dance_state_t *state, void *user_data) {
- switch (state->count) {
- case 1:
- unregister_code(KC_LGUI);
- break;
- case 2:
- register_code(KC_NUM);
- break;
- case 3:
- register_code(KC_CAPS);
- break;
- case 4:
- register_code(KC_SCRL);
- break;
- default:
- break;
- }
-};
-
-tap_dance_action_t tap_dance_actions[] = {
- [LOCKS] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_lock_finished, dance_lock_reset),
- [LAYERS] = ACTION_TAP_DANCE_FN(dance_layer)
-};
-
-// RGB underglow per-layer hue values
-const uint16_t LAYER_HUE[] = {6, 197, 133, 69};
-
-// Initialize RGB underglow (colorful)
-void keyboard_post_init_user(void) {
- rgblight_enable_noeeprom();
- rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
- for (uint16_t i = 0; i < 256; ++i) {
- rgblight_sethsv_noeeprom((i + LAYER_HUE[BASE]) % 256, 255, 136);
- wait_ms(8);
- }
-};
-
-// Turn on RGB underglow according to active layer
-layer_state_t layer_state_set_user(layer_state_t state) {
- uint8_t user_val = rgblight_get_val();
- rgblight_sethsv_noeeprom(LAYER_HUE[get_highest_layer(state)], 255, user_val);
- return state;
-};
diff --git a/users/nstickney/nstickney.h b/users/nstickney/nstickney.h
deleted file mode 100644
index 2b596b25e5..0000000000
--- a/users/nstickney/nstickney.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Copyright 2021 @nstickney
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#pragma once
-#include QMK_KEYBOARD_H
-
-// Specialty keycodes
-#define CC_ESC LCTL_T(KC_ESC)
-#define CC_QUOT RCTL_T(KC_QUOT)
-#define AC_SLSH LALT_T(KC_SLSH)
-#define AC_EQL RALT_T(KC_EQL)
-#define FC_BSLS LT(FCTN, KC_BSLS)
-#define FC_MINS LT(FCTN, KC_MINS)
-
-// Layers
-enum {
- BASE, // Base layer
- SYMB, // Symbols
- NUMP, // Numpad
- FCTN // Function
-};
-
-// Tap dance
-enum {
- LOCKS, // Activate NUM/CAPS/SCROLL lock
- LAYERS // Activate NUMP and SYMB layers
-};
diff --git a/users/nstickney/readme.md b/users/nstickney/readme.md
deleted file mode 100644
index fbd86bc607..0000000000
--- a/users/nstickney/readme.md
+++ /dev/null
@@ -1,49 +0,0 @@
-# nstickney's Ortholinear Layout
-
- > Familiar layout for users who regularly switch between Bastyl/Iris and standard QWERTY.
-
-## Install
-
-For instructions on building and installing this keymap, see the [docs](https://docs.qmk.fm/#/getting_started_make_guide).
-Below is the command for me; it may be different for you.
-Note that my Iris keyboard has an Elite-C on the left half and a ProMicro on the right half.
-
-- Bastyl: `make hidtech/bastyl:nstickney:dfu`
-- Iris
- - Elite-C: `make keebio/iris/rev2:nstickney:dfu`
- - ProMicro: `make keebio/iris/rev2:nstickney:avrdude`
-
-## Usage
-
-0. QWERTY `BASE` layer.
- * `/`, `\`, `[SPACE]`, `[ENTER]`, `-`, and `=` on the thumb clusters.
- * `[` and `]` added on Bastyl.
- * `CAPSLOCK` replaced by `ESC`; hold it down for `CTRL`.
- * `'` can also be held for `CTRL`.
- * [Space-Cadet Shift](https://beta.docs.qmk.fm/using-qmk/advanced-keycodes/feature_space_cadet) is enabled, so the `SHIFT` keys send `(` and `)` when tapped.
- * Hold down `/` or `=` for `ALT`.
- * Hold down `\` or `-` to access the functions layer.
- * Farthest thumb keys are `GUI` (left) and `MENU` (right).
- * Tapping `GUI` 2, 3, or 4 times will toggle `NUMLOCK`, `CAPSLOCK`, or `SCROLLLOCK`, respectively.
- * Tapping `MENU` 2 or 3 times will toggle the `NUMP` and `SYMB` layers, respectively.
-0. Unicode-input symbols on `SYMB` layer. Based (loosely) on US-International layout.
-0. `NUMP` layer has number pads on each hand. Number pad `7`-`8`-`9` align with QWERTY `7`-`8`-`9` on right hand.
-0. Function, arrow, media, and miscellaneous keys on `FCTN` layer.
- * `F1` through `F10` on `1`-`10`. `F11` is on `GUI` and `F12` is on `MENU`.
- * Brackets (`[` and `]`) available on `U` and `I`; braces (`{` and `}`) on `O` and `P`.
- * Arrow keys on `ESDF` and `HJKL`; familiar for both Vim users and FPS gamers.
- * `W` is `HOME`; `R` is `END`. `T` is `PAGE UP` and `G` is `PAGE DOWN`.
- * Music controls on lower row of left hand.
- * Volume and screen brightness on lower row of right hand.
- * `PRINT SCREEN`, `PAUSE`, `SYSREQ`, `INSERT`, and `CLEAR` also mapped, as intelligently as possible.
- * `Q` toggles the RGB underglow (which changes color to indicate active layer).
- * `A` increases RGB underglow brightness (with `SHIFT`, decreases brightness).
- * `Y` is mapped to [`QK_LOCK`](https://beta.docs.qmk.fm/using-qmk/software-features/feature_key_lock).
-
-## Contribute
-
-If you are using this layout and think you've found a better way to do something, I'd appreciate an [issue](https://github.com/nstickney/qmk_firmware/issues), or better yet a [pull request](https://github.com/nstickney/qmk_firmware/pulls).
-
-## License
-
-Copyright &copy; 2016-2021 @nstickney. Released under [GPL-2.0](/LICENSE).
diff --git a/users/nstickney/rules.mk b/users/nstickney/rules.mk
deleted file mode 100644
index cad245cc24..0000000000
--- a/users/nstickney/rules.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright 2021 @nstickney
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-SRC += nstickney.c
-
-KEY_LOCK_ENABLE = yes
-RGBLIGHT_ENABLE = yes
-TAP_DANCE_ENABLE = yes
-UNICODE_ENABLE = no
-UNICODEMAP_ENABLE = yes
-UCIS_ENABLE = no
-
-# https://github.com/qmk/qmk_firmware/issues/3224#issuecomment-399769416
-LTO_ENABLE = yes
-
-# https://beta.docs.qmk.fm/developing-qmk/qmk-reference/getting_started_make_guide#rules-mk-options
-AUDIO_ENABLE = no
-BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
-COMMAND_ENABLE = no
-CONSOLE_ENABLE = no
-MOUSEKEY_ENABLE = no
-MIDI_ENABLE = no
-NKRO_ENABLE = no
-SLEEP_LED_ENABLE = no
-VARIABLE_TRACE = no
diff --git a/users/nstickney/unicodemap.h b/users/nstickney/unicodemap.h
deleted file mode 100644
index 4360504ecb..0000000000
--- a/users/nstickney/unicodemap.h
+++ /dev/null
@@ -1,106 +0,0 @@
-/* Copyright 2021 @nstickney
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#pragma once
-
-enum {
- // Used on base
-
- // Used on US-International
- IEX, SS2, SS3, CUR, EUR, V14, V12, V34, LSQ, RSQ, YEN, MLT,
- A_D, A_R, E_A, REG, THR, U_D, U_A, I_A, O_A, O_D, LDA, RDA, NOT,
- A_A, S_S, ETH, EMD, OEL, O_S, PLC, ACT,
- AEL, CPR, N_T, MCR, C_C, IQM,
-
- // Used on US-International with Shift
- SS1, GBP, DIV,
- AXD, ACR, ECA, UCD, UCA, ICA, OCA, OCD, BKB,
- ACA, SEC, ETC, OEC, OCS, DEG, DIS,
- AEC, CNT, NCT, CCC,
-
- // Added to US-International
-
- // Added to US-International with Shift
- LDQ, RDQ,
- CPL
-};
-
-const uint32_t unicode_map[] PROGMEM = {
- [IEX] = 0xA1, // ¡
- [SS2] = 0xB2, // ²
- [SS3] = 0xB3, // ³
- [CUR] = 0xA4, // ¤
- [EUR] = 0x20AC, // €
- [V14] = 0xBC, // ¼
- [V12] = 0xBD, // ½
- [V34] = 0xBE, // ¾
- [LSQ] = 0x2018, // ‘
- [RSQ] = 0x2019, // ’
- [YEN] = 0xA5, // ¥
- [MLT] = 0xD7, // ×
- [A_D] = 0xE4, // ä
- [A_R] = 0xE5, // å
- [E_A] = 0xE9, // é
- [REG] = 0xAE, // ®
- [THR] = 0xFE, // þ
- [U_D] = 0xFC, // ü
- [U_A] = 0xFA, // ú
- [I_A] = 0xED, // í
- [O_A] = 0xF3, // ó
- [O_D] = 0xF6, // ö
- [LDA] = 0xAB, // «
- [RDA] = 0xBB, // »
- [NOT] = 0xAC, // ¬
- [A_A] = 0xE1, // á
- [S_S] = 0xDF, // ß
- [ETH] = 0xF0, // ð
- [EMD] = 0x2014, // —
- [OEL] = 0x153, // œ
- [O_S] = 0xF8, // ø
- [PLC] = 0xB6, // ¶
- [ACT] = 0xB4, // ´
- [AEL] = 0xE6, // æ
- [CPR] = 0xA9, // ©
- [N_T] = 0xF1, // ñ
- [MCR] = 0xB5, // µ
- [C_C] = 0xE7, // ç
- [IQM] = 0xBF, // ¿
- [SS1] = 0xB9, // ¹
- [GBP] = 0xA3, // £
- [DIV] = 0xF7, // ÷
- [AXD] = 0xC4, // Ä
- [ACR] = 0xC5, // Å
- [ECA] = 0xC9, // É
- [UCD] = 0xDC, // Ü
- [UCA] = 0xDA, // Ú
- [ICA] = 0xCD, // Í
- [OCA] = 0xD3, // Ó
- [OCD] = 0xD6, // Ö
- [BKB] = 0xA6, // ¦
- [ACA] = 0xC1, // Á
- [SEC] = 0xA7, // §
- [ETC] = 0xD0, // Ð
- [OEC] = 0x152, // Œ
- [OCS] = 0xD8, // Ø
- [DEG] = 0xB0, // °
- [DIS] = 0xA8, // ¨
- [AEC] = 0xC6, // Æ
- [CNT] = 0xA2, // ¢
- [NCT] = 0xD1, // Ñ
- [CCC] = 0xC7, // Ç
- [LDQ] = 0x201C, // “
- [RDQ] = 0x201D, // ”
- [CPL] = 0x1F12F // 🄯
-};
diff --git a/users/ollyhayes/ollyhayes.c b/users/ollyhayes/ollyhayes.c
deleted file mode 100644
index 6dfd61b263..0000000000
--- a/users/ollyhayes/ollyhayes.c
+++ /dev/null
@@ -1,153 +0,0 @@
-/* Copyright 2022 Olly Hayes (@ollyhayes)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "ollyhayes.h"
-
-#ifdef VIRTSER_ENABLE
-# include "virtser.h"
-#endif
-
-layer_state_t default_layer_state_set_kb(layer_state_t state) {
- if (layer_state_cmp(state, BASE)) {
- rgb_matrix_mode(3);
- } else if (layer_state_cmp(state, GAMES)) {
- rgb_matrix_mode(1);
- }
- return state;
-}
-
-uint16_t key_presses = 0;
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- // for tab/number layer switch
- static bool key_pressed_since_switch = false;
- static uint16_t switch_down_time = 0;
-
- // for alt-tab on punc layer
- static bool alt_tab_used = false;
-
- // for capital umlauts
- static bool shift_held = false;
-
-#ifdef VIRTSER_ENABLE
- if (record->event.pressed) {
- uint8_t key_index = 40 + record->event.key.col + record->event.key.row * 6;
- virtser_send(key_index);
- } else {
- uint8_t key_index = 90 + record->event.key.col + record->event.key.row * 6;
- virtser_send(key_index);
- }
-#endif
-
- if (record->event.pressed) {
- key_pressed_since_switch = true;
- key_presses++;
- }
-
- switch (keycode) {
- case UP4:
- if (record->event.pressed) {
- tap_code(KC_UP);
- tap_code(KC_UP);
- tap_code(KC_UP);
- tap_code(KC_UP);
- return false;
- }
- break;
-
- case DOWN4:
- if (record->event.pressed) {
- tap_code(KC_DOWN);
- tap_code(KC_DOWN);
- tap_code(KC_DOWN);
- tap_code(KC_DOWN);
- return false;
- }
- break;
-
- case NUM_SWITCH:
- if (record->event.pressed) {
- layer_on(NUM);
- key_pressed_since_switch = false;
- switch_down_time = timer_read();
- } else {
- layer_off(NUM);
-
- if (!key_pressed_since_switch && timer_elapsed(switch_down_time) < 200) {
- tap_code(KC_TAB);
- }
- }
- return false;
-
- case MO(PUNC):
- if (!record->event.pressed) {
- if (alt_tab_used) {
- unregister_code(KC_LALT);
- alt_tab_used = false;
- }
- }
- return true;
-
- case MO(FUNCTIONS):
- if (!record->event.pressed) {
- // if NUM_SWITCH has been lifted first, toggle to that layer
- // (4 = 2^NUM)
- if ((layer_state & 4) != 0) {
- layer_on(FUNCTIONS);
- return false;
- }
- }
- return true;
-
- case ALTTAB:
- if (record->event.pressed) {
- alt_tab_used = true;
- register_code(KC_LALT);
- tap_code(KC_TAB);
- }
- return false;
-
- case KC_LSFT:
- case KC_RSFT:
- shift_held = record->event.pressed;
- break;
-
- case A_UMLAUT:
- if (record->event.pressed) {
- if (shift_held)
- register_unicode(0x00c4);
- else
- register_unicode(0x00e4);
- }
- break;
- case O_UMLAUT:
- if (record->event.pressed) {
- if (shift_held)
- register_unicode(0x00d6);
- else
- register_unicode(0x00f6);
- }
- break;
- case U_UMLAUT:
- if (record->event.pressed) {
- if (shift_held)
- register_unicode(0x00dc);
- else
- register_unicode(0x00fc);
- }
- break;
- }
- return true;
-}
diff --git a/users/ollyhayes/ollyhayes.h b/users/ollyhayes/ollyhayes.h
deleted file mode 100644
index c65422937c..0000000000
--- a/users/ollyhayes/ollyhayes.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Copyright 2022 Olly Hayes (@ollyhayes)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include QMK_KEYBOARD_H
-
-enum layers {
- BASE,
- QWERTY,
- GAMES,
- NUM,
- FUNCTIONS,
- ARR,
- PUNC,
- DUBPUNC,
- MEDIA,
-};
-
-enum custom_keycodes {
- DOWN4 = SAFE_RANGE,
- UP4,
- NUM_SWITCH,
- ALTTAB,
- A_UMLAUT,
- O_UMLAUT,
- U_UMLAUT,
-};
-
-extern uint16_t key_presses;
diff --git a/users/ollyhayes/rules.mk b/users/ollyhayes/rules.mk
deleted file mode 100644
index 27752a5dee..0000000000
--- a/users/ollyhayes/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-SRC += ollyhayes.c
diff --git a/users/pcewing/README.md b/users/pcewing/README.md
deleted file mode 100644
index 0073b4f492..0000000000
--- a/users/pcewing/README.md
+++ /dev/null
@@ -1,85 +0,0 @@
-# User Space Code for Paul Ewing
-
-This folder contains my user space code.
-
-## Key Repeater
-
-I've implemented a key repeater utility in [./key_repeater.h](./key_repeater.h)
-and [./key_repeater.c](./key_repeater.c) that is similar in concept to the
-"rapid fire" feature many game controllers come with. The intent behind this is
-that the user can hold down a key and while it is pressed, a keycode will be
-repeatedly sent. I have found this useful in certain games and during game
-development.
-
-The duration of the key press as well as the time between key presses is
-slightly randomized by design. This is to simulate more realistic human
-behavior. By setting the minimum and maximum duration fields to the same value
-in the configuration, this randomization can be disabled.
-
-**Note:** Please be aware that this might be against the terms of service in
-certain games so use your own discretion before using this feature.
-
-### How to Use
-
-Define the repeater and then configure and allocate it in your keymap's
-initialization process:
-
-```c
-static struct key_repeater_t* click_repeater = NULL;
-
-void keyboard_post_init_user(void) {
- // Seed the random number generator which is used by the key repeater
- srand(timer_read32());
-
- // Configure and instantiate a key repeater for mouse button 1 "rapid fire"
- struct key_repeater_config_t cfg = {
- .key = KC_BTN1, // Press mouse button 1 (Left click)
- .key_duration_min = 20, // Press key for 20 to 50 milliseconds
- .key_duration_max = 50,
- .wait_duration_min = 90, // Wait for 90 to 140 milliseconds before pressing again
- .wait_duration_max = 140,
- };
-
- click_repeater = kr_new(&cfg);
-}
-```
-
-Make sure the key repeater is polled during matrix scanning:
-
-```c
-void matrix_scan_user(void) {
- kr_poll(click_repeater);
-}
-```
-
-Define a custom keycode that will enable/disable the repeater:
-
-```c
-enum {
- RP_BTN1 = SAFE_RANGE, // Click repeatedly while key is held
-};
-```
-
-Assign the keycode to a key in your `LAYOUT(...)` macro.
-
-Define the logic to enable/disable the repeater when the custom keycode is
-pressed or released:
-
-```c
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case RP_BTN1:
- if (record->event.pressed) {
- kr_enable(click_repeater);
- } else {
- kr_disable(click_repeater);
- }
- return false;
- default:
- return true;
- }
-}
-```
-
-For a full working example in own of my own keymaps, see:
-[keyboards/cozykeys/speedo/v3/keymaps/pcewing/keymap.c](../../keyboards/cozykeys/speedo/v3/keymaps/pcewing/keymap.c)
diff --git a/users/pcewing/key_repeater.c b/users/pcewing/key_repeater.c
deleted file mode 100644
index 6c77d45b5f..0000000000
--- a/users/pcewing/key_repeater.c
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * Copyright 2022 Paul Ewing
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "key_repeater.h"
-#include <stdlib.h>
-#include QMK_KEYBOARD_H
-
-enum key_repeater_state {
- KR_DISABLED,
- KR_WAITING,
- KR_BUTTON_DOWN,
-
- __KR_STATE_COUNT
-};
-
-struct key_repeater_t {
- int key;
- uint32_t key_duration_min;
- uint32_t key_duration_max;
- uint32_t wait_duration_min;
- uint32_t wait_duration_max;
-
- enum key_repeater_state state;
- uint32_t previous_button_down;
- uint32_t previous_button_up;
- uint32_t key_duration;
- uint32_t wait_duration;
-};
-
-// Utility functions
-uint32_t get_rand(uint32_t min, uint32_t max);
-
-// State handler function table
-void kr_waiting(struct key_repeater_t *kr);
-void kr_button_down(struct key_repeater_t *kr);
-
-typedef void (*kr_state_handler)(struct key_repeater_t *kr);
-static kr_state_handler kr_state_handlers[] = {
- [KR_DISABLED] = NULL,
- [KR_WAITING] = kr_waiting,
- [KR_BUTTON_DOWN] = kr_button_down,
-};
-
-struct key_repeater_t* kr_new(struct key_repeater_config_t* cfg) {
- struct key_repeater_t* kr = (struct key_repeater_t*)malloc(sizeof(struct key_repeater_t));
-
- if (cfg) {
- kr->key = cfg->key;
- kr->key_duration_min = cfg->key_duration_min;
- kr->key_duration_max = cfg->key_duration_max;
- kr->wait_duration_min = cfg->wait_duration_min;
- kr->wait_duration_max = cfg->wait_duration_max;
- } else {
- kr->key = KC_NO;
- kr->key_duration_min = 0;
- kr->key_duration_max = 0;
- kr->wait_duration_min = 0;
- kr->wait_duration_max = 0;
- }
-
- kr->state = KR_DISABLED;
- kr->previous_button_down = 0;
- kr->previous_button_up = 0;
- kr->key_duration = 0;
- kr->wait_duration = 0;
-
- return kr;
-}
-
-void kr_free(struct key_repeater_t **kr) {
- if (kr && *kr) {
- free(*kr);
- *kr = NULL;
- }
-}
-
-void kr_enable(struct key_repeater_t *kr) {
- if (!kr || kr->key == KC_NO) {
- return;
- }
-
- if (kr->state != KR_DISABLED) {
- return;
- }
- kr->state = KR_WAITING;
- kr->previous_button_down = 0;
- kr->previous_button_up = 0;
- kr->key_duration = 0;
- kr->wait_duration = 0;
-}
-
-void kr_disable(struct key_repeater_t *kr) {
- if (!kr || kr->key == KC_NO) {
- return;
- }
-
- if (kr->state == KR_BUTTON_DOWN) {
- unregister_code(kr->key);
- }
- kr->state = KR_DISABLED;
-}
-
-void kr_poll(struct key_repeater_t *kr) {
- if (!kr || kr->key == KC_NO) {
- return;
- }
-
- kr_state_handler handler = kr_state_handlers[kr->state];
- if (handler) {
- (handler)(kr);
- }
-}
-
-void kr_waiting(struct key_repeater_t *kr) {
- if (!kr || kr->key == KC_NO) {
- return;
- }
-
- uint32_t now = timer_read32();
- if (now > (kr->previous_button_up + kr->wait_duration)) {
- kr->state = KR_BUTTON_DOWN;
- kr->previous_button_down = now;
- if (kr->key_duration_min == kr->key_duration_max) {
- kr->key_duration = kr->key_duration_min;
- } else {
- kr->key_duration = get_rand(kr->key_duration_min, kr->key_duration_max);
- }
- register_code(kr->key);
- }
-}
-
-void kr_button_down(struct key_repeater_t *kr) {
- if (!kr || kr->key == KC_NO) {
- return;
- }
-
- uint32_t now = timer_read32();
- if (now > (kr->previous_button_down + kr->key_duration)) {
- kr->state = KR_WAITING;
- kr->previous_button_up = now;
- if (kr->wait_duration_min == kr->wait_duration_max) {
- kr->wait_duration = kr->wait_duration_min;
- } else {
- kr->wait_duration = get_rand(kr->wait_duration_min, kr->wait_duration_max);
- }
- unregister_code(kr->key);
- }
-}
-
-// Return a random number between min and max; assumes that the random number
-// generator has already been seeded
-uint32_t get_rand(uint32_t min, uint32_t max) {
- return (rand() % (max - min)) + min;
-}
diff --git a/users/pcewing/key_repeater.h b/users/pcewing/key_repeater.h
deleted file mode 100644
index 30b7f748ff..0000000000
--- a/users/pcewing/key_repeater.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright 2022 Paul Ewing
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// The key_repeater_config_t type holds user configurable options set when
-// allocating a new key repeater.
-struct key_repeater_config_t {
- // The key code that will be repeatedly registered
- int key;
-
- // The minimum amount of time to press down the key when registered
- const uint32_t key_duration_min;
-
- // The maximum amount of time to press down the key when registered
- const uint32_t key_duration_max;
-
- // The minimum amount of time to wait between registering key presses
- const uint32_t wait_duration_min;
-
- // The maximum amount of time to wait between registering key presses
- const uint32_t wait_duration_max;
-};
-
-// The key_repeater_t type represents a key repeater. This is similar to the
-// "Rapid fire" feature on many game controllers. The intention behind this is
-// to periodically send a key code while the user is pressing a key.
-//
-// The duration of the key press as well as the time between key presses is
-// slightly randomized by design. This is to simulate more realistic human
-// behavior. By setting the minimum and maximum duration fields to the same
-// value in the configuration, this randomization can be disabled.
-//
-// This type is intentionally opaque to avoid the user setting internal fields
-// directly. It must be allocated and destroyed using the kr_new() and
-// kr_free() functions respectively.
-struct key_repeater_t;
-
-// Allocate a new key repeater.
-struct key_repeater_t* kr_new(struct key_repeater_config_t* cfg);
-
-// Release an allocated key repeater.
-void kr_free(struct key_repeater_t** kr);
-
-// Enable the key repeater such that it will start periodically registering the
-// configured key code.
-void kr_enable(struct key_repeater_t* kr);
-
-// Disable the key repeater such that it will stop periodically registering the
-// configured key code.
-void kr_disable(struct key_repeater_t* kr);
-
-// Poll the key repeater to execute, tyically called from matrix_scan_user().
-void kr_poll(struct key_repeater_t* kr);
diff --git a/users/pcewing/rules.mk b/users/pcewing/rules.mk
deleted file mode 100644
index 35d0bc3ab7..0000000000
--- a/users/pcewing/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-SRC += key_repeater.c
diff --git a/users/pdl/pdl.c b/users/pdl/pdl.c
deleted file mode 100644
index 1ad2e02c12..0000000000
--- a/users/pdl/pdl.c
+++ /dev/null
@@ -1,216 +0,0 @@
-/*
-Copyright 2018-2021 Daniel Perrett
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "pdl.h"
-
-// unshifted
-//
-// regardless of current mods, send this character in an unshifted state
-
-__attribute__ ((weak))
-bool unshifted (uint16_t keycode, keyrecord_t *record) {
- uint8_t mods;
-
- if (record->event.pressed) {
- mods = keyboard_report->mods & EITHER_SHIFT;
-
- if (mods) {
- unregister_mods(mods);
- register_code(keycode);
- register_mods(mods);
- } else {
- register_code(keycode);
- }
-
- return false;
- } else {
- return true;
- }
-}
-
-/*
- * update_punctn_coding_layer_state
- *
- * Check NAVIGN and NUMBRS layers. If one is activated, also activate PUNCTN. If both are activated, also activate CODING.
- */
-
-__attribute__ ((weak))
-uint32_t update_punctn_coding_layer_state(uint32_t state) {
- uint32_t maskEither = (1UL << _NAVIGN) | (1UL << _NUMBRS);
- uint32_t maskPunctn = 1UL << _PUNCTN;
- uint32_t maskCoding = 1UL << _CODING;
-
-#ifdef COMBO_PDL
- return (
- (state & maskEither)
- ? (state | maskPunctn) & ~maskCoding // either => punctn
- : (state & ~maskCoding) & ~maskPunctn // neither => neither
- );
-#endif
-
- return (
- (state & maskEither)
- ? (state & maskEither) == maskEither
- ? (state & ~maskPunctn) | maskCoding // both => coding
- : (state | maskPunctn) & ~maskCoding // either => punctn
- : (state & ~maskCoding) & ~maskPunctn // neither => neither
- );
-}
-
-__attribute__ ((weak))
-uint32_t layer_state_set_user(uint32_t state) {
- return update_punctn_coding_layer_state(state);
-}
-
-__attribute__ ((weak))
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case QK_LAYER_TAP_TOGGLE ... QK_LAYER_TAP_TOGGLE_MAX:
- if (record->event.pressed) {
- // ensure that the toggled layer is switched off by a single tap
- layer_off(keycode & 0xFF);
- }
- break;
- case QWERTY:
- if (record->event.pressed) {
- set_single_persistent_default_layer(_QWERTY);
- }
- return false;
- break;
- case PROXIM:
- if (record->event.pressed) {
- set_single_persistent_default_layer(_PROXIM);
- }
- return false;
- break;
- // KC_LBRC, KC_NUHS, KC_GRV, KC_RBRC [#`]
- // These four keys are unshifted in the UK layout and should be sent as such.
- case KU_LBRC:
- return unshifted(KC_LBRC, record);
- case KU_NUHS:
- return unshifted(KC_NUHS, record);
- case KU_GRV:
- return unshifted(KC_GRV, record);
- case KU_RBRC:
- return unshifted(KC_RBRC, record);
- case KC_ESC:
- if (!record->event.pressed) {
- layer_off(_NUMBRS);
- layer_off(_NAVIGN);
- layer_off(_PUNCTN);
- layer_off(_CODING);
- }
- return true;
- }
- return true;
-}
-
-#ifdef COMBO_PDL
-enum combos {
- VCOMBO_PU,
- VCOMBO_NU,
- VCOMBO_EU,
- VCOMBO_IU,
- VCOMBO_LU,
- VCOMBO_PD,
- VCOMBO_ND,
- VCOMBO_ED,
- VCOMBO_ID,
- VCOMBO_LD,
- HCOMBO_JR,
- HCOMBO_UR,
- HCOMBO_PR,
- HCOMBO_MR,
- HCOMBO_HR,
- XCOMBO_LEFT,
- XCOMBO_RIGHT,
- XCOMBO_UP,
- XCOMBO_DOWN,
- XCOMBO_ENTER,
- XCOMBO_DEL,
- XCOMBO_BKSP,
- XCOMBO_MINS,
- XCOMBO_TAB,
- XCOMBO_UNDO,
- XCOMBO_REDO,
- XCOMBO_PGUP,
- XCOMBO_PGDN
-};
-
-const uint16_t PROGMEM vcombo_pu[] = {KC_J, KC_P, COMBO_END};
-const uint16_t PROGMEM vcombo_nu[] = {KC_Y, KC_N, COMBO_END};
-const uint16_t PROGMEM vcombo_eu[] = {KC_O, KC_E, COMBO_END};
-const uint16_t PROGMEM vcombo_iu[] = {KC_U, KC_I, COMBO_END};
-const uint16_t PROGMEM vcombo_lu[] = {KC_QUOT, KC_L, COMBO_END};
-const uint16_t PROGMEM vcombo_pd[] = {KC_M, KC_P, COMBO_END};
-const uint16_t PROGMEM vcombo_nd[] = {KC_H, KC_N, COMBO_END};
-const uint16_t PROGMEM vcombo_ed[] = {KC_COMM, KC_E, COMBO_END};
-const uint16_t PROGMEM vcombo_id[] = {KC_DOT, KC_I, COMBO_END};
-const uint16_t PROGMEM vcombo_ld[] = {KC_SLSH, KC_L, COMBO_END};
-const uint16_t PROGMEM hcombo_jr[] = {KC_J, KC_Y, COMBO_END};
-const uint16_t PROGMEM hcombo_ur[] = {KC_QUOT, KC_U, COMBO_END};
-const uint16_t PROGMEM hcombo_pr[] = {KC_P, KC_N, COMBO_END};
-const uint16_t PROGMEM hcombo_mr[] = {KC_M, KC_H, COMBO_END};
-const uint16_t PROGMEM hcombo_hr[] = {KC_COMM, KC_H, COMBO_END};
-
-const uint16_t PROGMEM xcombo_left[] = {KC_K, KC_P, COMBO_END};
-const uint16_t PROGMEM xcombo_right[] = {KC_M, KC_G, COMBO_END};
-const uint16_t PROGMEM xcombo_up[] = {KC_B, KC_J, COMBO_END};
-const uint16_t PROGMEM xcombo_down[] = {KC_K, KC_M, COMBO_END};
-const uint16_t PROGMEM xcombo_enter[] = {KC_G, KC_P, COMBO_END};
-const uint16_t PROGMEM xcombo_del[] = {KC_M, KC_B, COMBO_END};
-const uint16_t PROGMEM xcombo_bksp[] = {KC_K, KC_J, COMBO_END};
-const uint16_t PROGMEM xcombo_mins[] = {KC_V, KC_H, COMBO_END};
-const uint16_t PROGMEM xcombo_tab[] = {KC_V, KC_K, COMBO_END};
-const uint16_t PROGMEM xcombo_undo[] = {KC_V, KC_J, COMBO_END};
-const uint16_t PROGMEM xcombo_redo[] = {KC_B, KC_H, COMBO_END};
-const uint16_t PROGMEM xcombo_pgup[] = {KC_G, KC_B, COMBO_END};
-const uint16_t PROGMEM xcombo_pgdn[] = {KC_G, KC_K, COMBO_END};
-
-combo_t key_combos[] = {
- [VCOMBO_PU] = COMBO(vcombo_pu, KC_CIRC),
- [VCOMBO_NU] = COMBO(vcombo_nu, KC_LBRC),
- [VCOMBO_EU] = COMBO(vcombo_eu, LSFT(KC_9)),
- [VCOMBO_IU] = COMBO(vcombo_iu, LSFT(KC_0)),
- [VCOMBO_LU] = COMBO(vcombo_lu, KC_RBRC),
- [VCOMBO_PD] = COMBO(vcombo_pd, LSFT(KC_7)),
- [VCOMBO_ND] = COMBO(vcombo_nd, KC_EQL),
- [VCOMBO_ED] = COMBO(vcombo_ed, KC_MINS),
- [VCOMBO_ID] = COMBO(vcombo_id, LSFT(KC_1)),
- [VCOMBO_LD] = COMBO(vcombo_ld, LSFT(KC_5)),
- [HCOMBO_JR] = COMBO(hcombo_jr, KC_GRV),
- [HCOMBO_UR] = COMBO(hcombo_ur, LSFT(KC_2)),
- [HCOMBO_PR] = COMBO(hcombo_pr, LSFT(KC_8)),
- [HCOMBO_MR] = COMBO(hcombo_mr, KC_NUHS),
- [HCOMBO_HR] = COMBO(hcombo_hr, KC_NUBS),
-
- [XCOMBO_LEFT] = COMBO(xcombo_left, KC_LEFT),
- [XCOMBO_RIGHT] = COMBO(xcombo_right, KC_RGHT),
- [XCOMBO_UP] = COMBO(xcombo_up, KC_UP),
- [XCOMBO_DOWN] = COMBO(xcombo_down, KC_DOWN),
- [XCOMBO_ENTER] = COMBO(xcombo_enter, KC_ENT),
- [XCOMBO_DEL] = COMBO(xcombo_del, KC_DEL),
- [XCOMBO_BKSP] = COMBO(xcombo_bksp, KC_BSPC),
- [XCOMBO_MINS] = COMBO(xcombo_mins, KC_MINS),
- [XCOMBO_TAB] = COMBO(xcombo_tab, KC_TAB),
- [XCOMBO_UNDO] = COMBO(xcombo_undo, LCTL(KC_Y)),
- [XCOMBO_REDO] = COMBO(xcombo_redo, LCTL(KC_Z)),
- [XCOMBO_PGUP] = COMBO(xcombo_pgup, KC_PGUP),
- [XCOMBO_PGDN] = COMBO(xcombo_pgdn, KC_PGDN)
-};
-
-#endif
diff --git a/users/pdl/pdl.h b/users/pdl/pdl.h
deleted file mode 100644
index 4079ba9d33..0000000000
--- a/users/pdl/pdl.h
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
-Copyright 2018-2021 Daniel Perrett
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-
-#include "quantum.h"
-
-enum userspace_layer_codes {
- QWERTY = SAFE_RANGE,
- PROXIM,
- PUNCTN,
- CODING,
- KU_LBRC,
- KU_NUHS,
- KU_GRV,
- KU_RBRC,
- NEW_SAFE_RANGE
-};
-
-enum userspace_layers {
- _PROXIM,
- _QWERTY,
- _NUMBRS,
- _NAVIGN,
- _PUNCTN,
- _CODING,
- _FUNCTN
-};
-
-#define MY_FESC LT(_FUNCTN, KC_ESC)
-#define MY_SSPC MT(MOD_RSFT, KC_SPC)
-#define MY_SESC MT(MOD_LSFT, KC_ESC)
-#define MY_SBSL MT(MOD_LSFT, KC_NUBS)
-#define MY_CBSL MT(MOD_LCTL, KC_NUBS)
-#define MY_SSCL MT(MOD_RSFT, KC_SCLN)
-#define MY_ASCL MT(MOD_LALT, KC_SCLN)
-#define MY_SQUO MT(MOD_RSFT, KC_QUOT)
-#define MY_CENT MT(MOD_RCTL, KC_ENT)
-#define MY_SENT MT(MOD_RSFT, KC_ENT)
-#define MY_AMNU MT(MOD_RALT, KC_APP)
-
-#define MY_TILD S(KC_NUHS)
-#define MY_SEQL MT(MOD_RALT, KC_PEQL)
-#define MY_CMIN MT(MOD_RALT, KC_MINS)
-#define MY_ASLS MT(MOD_RALT, KC_SLSH)
-
-#define MY_UNDO LCTL(KC_Z)
-#define MY_CUT LCTL(KC_X)
-#define MY_COPY LCTL(KC_C)
-#define MY_PASTE LCTL(KC_V)
-
-#define MY_AF4 LALT(KC_F4)
-#define MY_CF4 LCTL(KC_F4)
-#define MY_CF5 LCTL(KC_F5)
-#define MY_CAD LCTL(LALT(KC_DEL))
-
-#define NUMBRS TT(_NUMBRS)
-#define NAVIGN TT(_NAVIGN)
-#define FUNCTN TT(_FUNCTN)
-
-#define EITHER_SHIFT (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT))
-
-// Cannot redefine this here
-// #define TAPPING_TOGGLE 2
-
-// Taken from drashna:
-// 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)
-#if defined(LAYOUT_ortho_4x12)
-#define LAYOUT_wrapper_ortho_4x12(...) LAYOUT_ortho_4x12(__VA_ARGS__)
-#define LAYOUT LAYOUT_ortho_4x12
-#elif defined(KEYMAP)
-#define LAYOUT KEYMAP
-#endif
-#endif
-#define KEYMAP_wrapper(...) LAYOUT(__VA_ARGS__)
-#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
-
-#define ___________________________________________ _______, _______, _______, _______, _______
-
-#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 _________________PROXIM_L1_________________ KC_Q, KC_W, KC_F, KC_R, KC_B
-#define _________________PROXIM_L2_________________ KC_A, KC_S, KC_D, KC_T, KC_G
-#define _________________PROXIM_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_K
-
-#define _________________PROXIM_R1_________________ KC_J, KC_Y, KC_O, KC_U, KC_QUOT
-#define _________________PROXIM_R2_________________ KC_P, KC_N, KC_E, KC_I, KC_L
-#define _________________PROXIM_R3_________________ KC_M, KC_H, KC_COMM, KC_DOT, KC_SLASH
-
-#define _________________PUNCTN_R1_________________ KC_NUBS, KC_NUHS, KC_LPRN, KC_RPRN, _______
-#define _________________PUNCTN_R2_________________ KC_GRV, KC_EQL, KC_MINS, KC_PLUS, KC_SLSH
-#define _________________PUNCTN_R3_________________ KC_LBRC, KC_RBRC, _______, _______, _______
-
-#define _________________CODING_R1_________________ KU_GRV, KC_PERC, KC_DLR, KC_AT, _______
-#define _________________CODING_R2_________________ KC_CIRC, KC_UNDS, MY_TILD, KC_AMPR, KU_NUHS
-#define _________________CODING_R3_________________ KU_LBRC, KU_RBRC, _______, _______, _______
-
-#define _________________NAVIGN_L1_________________ KC_DEL, KC_PGUP, KC_UP, KC_PGDN, KC_BSPC
-#define _________________NAVIGN_L2_________________ KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END
-#define _________________NAVIGN_L3_________________ MY_UNDO, MY_CUT, MY_COPY, MY_PASTE, KC_ENT
-
-#define _________________NUMBRS_L1_________________ KC_1, KC_2, KC_3, KC_4, KC_5
-#define _________________NUMBRS_L2_________________ KC_6, KC_7, KC_8, KC_9, KC_0
-#define _________________NUMBRS_L3_________________ KC_UNDO, KC_MINS, KC_EQL, KC_PDOT, KC_ENT
-
-#define _________________FUNCTN_L1_________________ KC_ESC, KC_F1, KC_F2, KC_F3, MY_AF4
-#define _________________FUNCTN_L2_________________ KC_APP, KC_F4, KC_F5, KC_F6, MY_CF5
-#define _________________FUNCTN_L3_________________ QK_BOOT, KC_F7, KC_F8, KC_F9, MY_CF4
-
-#define _________________FUNCTN_R1_________________ KC_VOLU, KC_F10, KC_F11, KC_F12, KC_INS
-#define _________________FUNCTN_R2_________________ KC_VOLD, KC_MPRV, KC_MSTP, KC_MPLY, KC_MNXT
-#define _________________FUNCTN_R3_________________ KC_MUTE, KC_PAUS, QWERTY, PROXIM, DB_TOGG
diff --git a/users/pdl/rules.mk b/users/pdl/rules.mk
deleted file mode 100644
index ff681299e4..0000000000
--- a/users/pdl/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-COMBO_ENABLE = yes \ No newline at end of file
diff --git a/users/peej/layout.h b/users/peej/layout.h
deleted file mode 100644
index 4340ed4a0b..0000000000
--- a/users/peej/layout.h
+++ /dev/null
@@ -1,150 +0,0 @@
-/* Copyright 2020 Paul James
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/* Base layer
- * ,-----------------------------------------. ,-------------. ,-----------------------------------------.
- * | Esc | 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 | ; | ' |
- * |------+------+------+------+------+------| |------+------| |------+------+------+------+------+------|
- * | Shft | Z | X | C | V | B | | ( | ) | | N | M | , | . | / | Entr |
- * |------+------+------+------+------+------| |------+------| |------+------+------+------+------+------|
- * | Ctrl | Symb | Alt | Cmd | Symb | Spce | | | | | Spce | Fn | Left | Down | Up | Rght |
- * `-----------------------------------------' `-------------' `-----------------------------------------'
- */
-#define BASE_ROW_1_L KC_1, KC_2, KC_3, KC_4, KC_5
-#define BASE_ROW_2_L KC_Q, KC_W, KC_E, KC_R, KC_T
-#define BASE_ROW_3_L KC_A, KC_S, KC_D, FN_F, KC_G
-#define BASE_ROW_4_L KC_Z, KC_X, KC_C, KC_V, KC_B
-#define BASE_ROW_5_L KC_LCTL, SYMBOL, KC_LALT, KC_LGUI, SYMBOL, KC_SPC
-
-#define BASE_ROW_1_R KC_6, KC_7, KC_8, KC_9, KC_0
-#define BASE_ROW_2_R KC_Y, KC_U, KC_I, KC_O, KC_P
-#define BASE_ROW_3_R KC_H, SY_J, KC_K, KC_L, KC_SCLN
-#ifdef ARROW_LAYOUT
- #define BASE_ROW_4_R KC_N, KC_M, KC_COMM, KC_DOT, KC_UP
- #define BASE_ROW_5_R KC_SPC, FN_SPC, KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT
-#else
- #define BASE_ROW_4_R KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH
- #define BASE_ROW_5_R KC_SPC, FUNCT, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
-#endif
-
-#define BASE_ROW_1_M KC_MINS, KC_EQL
-#define BASE_ROW_2_M KC_LBRC, KC_RBRC
-#define BASE_ROW_3_M KC_LCBR, KC_RCBR
-#define BASE_ROW_4_M KC_LPRN, KC_RPRN
-
-#define BASE_ROW_1 QK_GESC, BASE_ROW_1_L, BASE_ROW_1_R, KC_DEL
-#define BASE_ROW_2 KC_TAB, BASE_ROW_2_L, BASE_ROW_2_R, KC_BSPC
-#define BASE_ROW_3 QK_GESC, BASE_ROW_3_L, BASE_ROW_3_R, KC_QUOT
-#define BASE_ROW_4 KC_LSFT, BASE_ROW_4_L, BASE_ROW_4_R, KC_ENTER
-#define BASE_ROW_5 BASE_ROW_5_L, BASE_ROW_5_R
-
-
-/* Function layer
- * ,-----------------------------------------. ,-----------------------------------------.
- * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | Lock |
- * |------+------+------+------+------+------| |------+------+------+------+------+------|
- * | Adju | F1 | F2 | F3 | F4 | F5 | | | Home | Up | PgUp | \ | |
- * |------+------+------+------+------+------| |------+------+------+------+------+------|
- * | Shft | Ctrl | Alt | Cmd | | | | | Left | Down | Rght | | ` |
- * |------+------+------+------+------+------| |------+------+------+------+------+------|
- * | | F6 | F7 | F8 | F9 | F10 | | | End | Shft | PgDn | \ | |
- * |------+------+------+------+------+------| |------+------+------+------+------+------|
- * | | | | | Adju | BkSp | | | | Home | PgDn | PgUp | End |
- * `-----------------------------------------' `-----------------------------------------'
- */
-#define FUNCTION_ROW_1_L KC_F1, KC_F2, KC_F3, KC_F4, KC_F5
-#define FUNCTION_ROW_2_L KC_F1, KC_F2, KC_F3, KC_F4, KC_F5
-#define FUNCTION_ROW_3_L KC_LCTL, KC_LALT, KC_LGUI, _______, _______
-#define FUNCTION_ROW_4_L KC_F6, KC_F7, KC_F8, KC_F9, KC_F10
-#define FUNCTION_ROW_5_L _______, _______, _______, _______, ADJUST, KC_BSPC
-
-#define FUNCTION_ROW_1_R KC_F6, KC_F7, KC_F8, KC_F9, KC_F10
-#define FUNCTION_ROW_2_R _______, KC_HOME, KC_UP, KC_PGUP, KC_BSLS
-#define FUNCTION_ROW_3_R _______, KC_LEFT, KC_DOWN, KC_RGHT, _______
-#ifdef ARROW_LAYOUT
- #define FUNCTION_ROW_4_R _______, KC_END, KC_LSFT, KC_PGDN, KC_PGUP
- #define FUNCTION_ROW_5_R _______, _______, KC_BSLS, KC_HOME, KC_PGUP, KC_END
-#else
- #define FUNCTION_ROW_4_R _______, KC_END, KC_LSFT, KC_PGDN, KC_BSLS
- #define FUNCTION_ROW_5_R _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END
-#endif
-
-#define FUNCTION_ROW_1 _______, FUNCTION_ROW_1_L, FUNCTION_ROW_1_R, LOCK
-#define FUNCTION_ROW_2 ADJUST, FUNCTION_ROW_2_L, FUNCTION_ROW_2_R, _______
-#define FUNCTION_ROW_3 KC_LSFT, FUNCTION_ROW_3_L, FUNCTION_ROW_3_R, KC_GRV
-#define FUNCTION_ROW_4 _______, FUNCTION_ROW_4_L, FUNCTION_ROW_4_R, _______
-#define FUNCTION_ROW_5 FUNCTION_ROW_5_L, FUNCTION_ROW_5_R
-
-
-/* Symbol layer
- * ,-----------------------------------------. ,-----------------------------------------.
- * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | Lock |
- * |------+------+------+------+------+------| |------+------+------+------+------+------|
- * | | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | |
- * |------+------+------+------+------+------| |------+------+------+------+------+------|
- * | Shft | _ | + | ( | { | [ | | ] | | Shft | { | } | ` |
- * |------+------+------+------+------+------| |------+------+------+------+------+------|
- * | | - | = | => | -> | - | | = | == | === | [ | ] | |
- * |------+------+------+------+------+------| |------+------+------+------+------+------|
- * | | | | | | | | Del | Adju | Home | PgDn | PgUp | End |
- * `-----------------------------------------' `-----------------------------------------'
- */
-#define SYMBOL_ROW_2_L KC_1, KC_2, KC_3, KC_4, KC_5
-#define SYMBOL_ROW_3_L KC_UNDS, KC_PLUS, KC_LPRN, KC_LCBR, KC_LBRC
-#define SYMBOL_ROW_4_L KC_MINS, KC_EQL, MC_DARR, MC_ARR, KC_MINS
-#define SYMBOL_ROW_5_L _______, _______, _______, _______, _______, _______
-
-#define SYMBOL_ROW_2_R KC_6, KC_7, KC_8, KC_9, KC_0
-#define SYMBOL_ROW_3_R KC_RBRC, _______, KC_RSFT, KC_LCBR, KC_RCBR
-#ifdef ARROW_LAYOUT
- #define SYMBOL_ROW_4_R KC_EQL, MC_DEQL, MC_TEQL, KC_LBRC, KC_PGUP
- #define SYMBOL_ROW_5_R KC_DEL, ADJUST, KC_BSLS, KC_HOME, KC_PGUP, KC_END
-#else
- #define SYMBOL_ROW_4_R KC_EQL, MC_DEQL, MC_TEQL, KC_LBRC, KC_RBRC
- #define SYMBOL_ROW_5_R KC_DEL, ADJUST, KC_HOME, KC_PGDN, KC_PGUP, KC_END
-#endif
-
-#define SYMBOL_ROW_1 _______, FUNCTION_ROW_1_L, FUNCTION_ROW_1_R, LOCK
-#define SYMBOL_ROW_2 _______, SYMBOL_ROW_2_L, SYMBOL_ROW_2_R, _______
-#define SYMBOL_ROW_3 KC_LSFT, SYMBOL_ROW_3_L, SYMBOL_ROW_3_R, KC_GRV
-#define SYMBOL_ROW_4 _______, SYMBOL_ROW_4_L, SYMBOL_ROW_4_R, _______
-#define SYMBOL_ROW_5 SYMBOL_ROW_5_L, SYMBOL_ROW_5_R
-
-
-/* Adjust layer */
-#define ADJUST_ROW_2_L KC_RESET, XXXXXXX, XXXXXXX, BL_STEP, BL_TOGG
-#define ADJUST_ROW_2_R RGB_TOG, RGB_VAI, RGB_SAI, RGB_HUI, XXXXXXX
-
-#define ADJUST_ROW_3_L XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
-#define ADJUST_ROW_3_R RGB_MOD, RGB_VAD, RGB_SAD, RGB_HUD, XXXXXXX
-
-#define ADJUST_ROW_4_L AG_NORM, AG_SWAP, XXXXXXX, XXXXXXX, XXXXXXX
-#define ADJUST_ROW_4_R RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_G, RGB_M_T
-
-#define ADJUST_ROW_5_L XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX
-#define ADJUST_ROW_5_R XXXXXXX, _______, KC_MPLY, KC_VOLD, KC_VOLU, KC_MUTE
-
-#define ADJUST_ROW_1 LOCK, ADJUST_ROW_2_L, ADJUST_ROW_2_R, LOCK
-#define ADJUST_ROW_2 _______, ADJUST_ROW_2_L, ADJUST_ROW_2_R, LOCK
-#define ADJUST_ROW_3 XXXXXXX, ADJUST_ROW_3_L, ADJUST_ROW_3_R, XXXXXXX
-#define ADJUST_ROW_4 XXXXXXX, ADJUST_ROW_4_L, ADJUST_ROW_4_R, XXXXXXX
-#define ADJUST_ROW_5 ADJUST_ROW_5_L, ADJUST_ROW_5_R
-
-#define EMPTY_ROW XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
diff --git a/users/peej/peej.c b/users/peej/peej.c
deleted file mode 100644
index bd9264ea60..0000000000
--- a/users/peej/peej.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/* Copyright 2020 Paul James
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "peej.h"
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- bool is_shifted = get_mods() & MOD_LSFT;
-
- if (record->event.pressed) {
- switch(keycode) {
- case MC_ARR:
- if (is_shifted) {
- unregister_mods(MOD_LSFT);
- SEND_STRING("=>");
- register_mods(MOD_LSFT);
- } else {
- SEND_STRING("->");
- }
- break;
- case MC_DARR:
- unregister_mods(MOD_LSFT);
- SEND_STRING("=>");
- if (is_shifted) register_mods(MOD_LSFT);
- break;
- case MC_DEQL:
- if (is_shifted) {
- unregister_mods(MOD_LSFT);
- SEND_STRING("!=");
- register_mods(MOD_LSFT);
- } else {
- SEND_STRING("==");
- }
- break;
- case MC_TEQL:
- if (is_shifted) {
- unregister_mods(MOD_LSFT);
- SEND_STRING("!==");
- register_mods(MOD_LSFT);
- } else {
- SEND_STRING("===");
- }
- break;
- case KC_RESET:
- #ifdef RGBLIGHT_ENABLE
- rgblight_enable_noeeprom();
- rgblight_mode_noeeprom(1);
- rgblight_setrgb(RGB_RED);
- #endif
- reset_keyboard();
- break;
- }
- }
-
- return true;
-};
diff --git a/users/peej/peej.h b/users/peej/peej.h
deleted file mode 100644
index b9ec571e57..0000000000
--- a/users/peej/peej.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/* Copyright 2020 Paul James
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-#include QMK_KEYBOARD_H
-
-#include "eeconfig.h"
-
-enum custom_layers {
- _BASE = 0,
- _SYMBOL,
- _FUNCTION,
- _ADJUST,
-};
-
-// Fillers to make layering more clear
-#define ______2 KC_TRNS, KC_TRNS
-#define ______3 KC_TRNS, KC_TRNS, KC_TRNS
-#define ______4 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
-#define ______5 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
-
-enum custom_keycodes {
- MC_ARR = SAFE_RANGE,
- MC_DARR,
- MC_DEQL,
- MC_TEQL,
- KC_RESET
-};
-
-#define SYMBOL MO(_SYMBOL)
-#define FUNCT MO(_FUNCTION)
-#define ADJUST MO(_ADJUST)
-
-#define FN_SPC LT(_FUNCTION, KC_SPC)
-#define SY_SPC LT(_SYMBOL, KC_SPC)
-#define FN_F LT(_FUNCTION, KC_F)
-#define SY_J LT(_SYMBOL, KC_J)
-
-#define CTLESC LCTL_T(KC_ESC)
-#define SFTENT RSFT_T(KC_ENT)
-#define LOCK LCTL(LGUI(KC_Q))
-#define BACK LGUI(KC_LBRC)
-#define FORWARD LGUI(KC_RBRC)
-#define NXTFUNC LCTL(KC_DOWN)
-#define PRVFUNC LCTL(KC_UP)
-#define TOP LGUI(KC_UP)
-#define BOTTOM LGUI(KC_DOWN)
-
-#ifdef LAYOUT_ortho_4x12
- #define LAYOUT_PEEJ(...) LAYOUT_ortho_4x12(__VA_ARGS__)
-#endif
-
-#ifdef LAYOUT_ortho_5x12
- #define LAYOUT_PEEJ(...) LAYOUT_ortho_5x12(__VA_ARGS__)
-#endif
-
-#ifdef LAYOUT_ortho_hhkb
- #define LAYOUT_PEEJ_hhkb(...) LAYOUT_ortho_hhkb(__VA_ARGS__)
-#endif
-
-#ifdef LAYOUT_ortho_7u
- #define LAYOUT_PEEJ_7u(...) LAYOUT_ortho_7u(__VA_ARGS__)
-#endif
-
-#include "layout.h"
diff --git a/users/peej/rules.mk b/users/peej/rules.mk
deleted file mode 100644
index 9c1105e722..0000000000
--- a/users/peej/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-SRC += peej.c
diff --git a/users/peterfalken/config.h b/users/peterfalken/config.h
deleted file mode 100644
index 1342705550..0000000000
--- a/users/peterfalken/config.h
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2023 Peter.Falken (@PeterFalken)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#pragma once
-
-// Fix warning - "Attached USB accessory uses too much power."
-#ifndef USB_MAX_POWER_CONSUMPTION
- #define USB_MAX_POWER_CONSUMPTION 100
-#endif
-
-// Fix unresponsiveness on wake from sleep
-#ifndef USB_SUSPEND_WAKEUP_DELAY
- #define USB_SUSPEND_WAKEUP_DELAY 200
-#endif
-
-// Space optimizations
-#define LAYER_STATE_8BIT
-#undef LOCKING_SUPPORT_ENABLE
-#undef LOCKING_RESYNC_ENABLE
-
-// Disable animations for RGB underglow & key matrix
-#define DISABLE_RGB_LIGHT_ANIMATIONS
-#define DISABLE_RGB_MATRIX_ANIMATIONS
diff --git a/users/peterfalken/peterfalken.c b/users/peterfalken/peterfalken.c
deleted file mode 100644
index dcec1d650b..0000000000
--- a/users/peterfalken/peterfalken.c
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2023 Peter.Falken (@PeterFalken)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#include "peterfalken.h"
-
-// Magic keycodes - overwrite placeholder functions
-uint16_t keycode_config(uint16_t keycode) {
- return keycode;
-}
-
-uint8_t mod_config(uint8_t mod) {
- return mod;
-}
-
-// Switch layer
-#ifndef CUSTOM_LAYER_STATE
-layer_state_t layer_state_set_user(layer_state_t state) {
- return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
-}
-#endif // CUSTOM_LAYER_STATE
diff --git a/users/peterfalken/peterfalken.h b/users/peterfalken/peterfalken.h
deleted file mode 100644
index 1f978c49e8..0000000000
--- a/users/peterfalken/peterfalken.h
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2023 Peter.Falken (@PeterFalken)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#pragma once
-#include QMK_KEYBOARD_H
-
-#ifndef CUSTOM_KEYMAP_LAYERS
- enum default_layers {
- _QWERTY,
- _LOWER,
- _RAISE,
- _ADJUST
- };
-#endif // CUSTOM_KEYMAP_LAYERS
-
-// Custom definitions for keys
-#define CK_CW CW_TOGG // CAPS_WORD for Caps Word feature
-#define CK_SLP KC_SLEP // System Sleep
-#define CK_M1 C(KC_DOWN) // Mission Control - One apps
-#define CK_CO KC_COPY // COPY = CMD + C
-#define CK_CU KC_CUT // CUT = CMD + X
-#define CK_MV LAG(KC_V) // MOVE = CMD + OPT + V
-#define CK_PA KC_PASTE // PASTE = CMD + V
-
-// Layer activation
-#define LOWER MO(_LOWER)
-#define RAISE MO(_RAISE)
diff --git a/users/peterfalken/readme.md b/users/peterfalken/readme.md
deleted file mode 100644
index f64d682a51..0000000000
--- a/users/peterfalken/readme.md
+++ /dev/null
@@ -1,14 +0,0 @@
-Copyright 2023 LEG <ucaboys@gmail.com> @PeterFalken
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
diff --git a/users/peterfalken/rules.mk b/users/peterfalken/rules.mk
deleted file mode 100644
index dfa5d574aa..0000000000
--- a/users/peterfalken/rules.mk
+++ /dev/null
@@ -1,18 +0,0 @@
-# Setup QMK features
-BOOTMAGIC_ENABLE = yes # Enable QMK_Boot on plug-in
-CAPS_WORD_ENABLE = yes # Enable Caps Word
-COMMAND_ENABLE = no # Won't use for now
-CONSOLE_ENABLE = no # Won't use for now
-DIP_SWITCH_ENABLE = no # Won't use for now
-GRAVE_ESC_ENABLE = no # Won't use for now
-MAGIC_ENABLE = no # Won't use for now
-MOUSEKEY_ENABLE = no # Won't use for now
-RAW_ENABLE = no # Disable raw HID commands
-RGBLIGHT_ENABLE = no # Disable RGB underglow
-SPACE_CADET_ENABLE = no # Free up space
-
-# Enable Link Time Optimizations
-LTO_ENABLE = yes
-
-# Include userspace files
-SRC += $(USER_PATH)/peterfalken.c
diff --git a/users/pvinis/config.h b/users/pvinis/config.h
deleted file mode 100644
index 01bb47dde1..0000000000
--- a/users/pvinis/config.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#pragma once
-
-// #define TAPPING_TERM 150
-
-#if defined(MOUSE_KEYS)
-# define MOUSEKEY_WHEEL_TIME_TO_MAX 1
-#endif
diff --git a/users/pvinis/pvinis.c b/users/pvinis/pvinis.c
deleted file mode 100644
index f3263f9bd5..0000000000
--- a/users/pvinis/pvinis.c
+++ /dev/null
@@ -1,98 +0,0 @@
-#include "pvinis.h"
-#include "version.h"
-
-#ifdef AUDIO_ENABLE
-# include "audio.h"
-
-float song_sonic_ring[][2] = SONG(SONIC_RING);
-float song_coin_sound[][2] = SONG(COIN_SOUND);
-float song_test[][2] = SONG(QWERTY_SOUND);
-#endif
-
-// SYMBOL + SYSCTL = KBCTL
-layer_state_t layer_state_set_user(layer_state_t state) {
- uint32_t intermediate_state = update_tri_layer_state(state, LR_SYMBOL, LR_SYSCTL, LR_KBCTL);
- intermediate_state = layer_state_set_user_keymap(intermediate_state);
- return intermediate_state;
-}
-
-// functions for the individual keymaps to implement if they need something extra
-__attribute__((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; }
-
-// Handle my own keycodes.
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case PV_VRSN:
- if (record->event.pressed) {
- SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
- }
- return false;
-
- case PV_MAKE:
- // make ergodox_ez:pvinis:teensy
- 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;
-
- case PV_FLSH:
- reset_keyboard();
- return false;
-
- case PV_SSNC:
- if (record->event.pressed) {
-#ifdef AUDIO_ENABLE
- PLAY_SONG(song_sonic_ring);
-#endif
- }
- return false;
-
- case PV_SCIN:
- if (record->event.pressed) {
-#ifdef AUDIO_ENABLE
- PLAY_SONG(song_coin_sound);
-#endif
- }
- return false;
-
- case PV_TEST:
- if (record->event.pressed) {
-#ifdef AUDIO_ENABLE
- PLAY_SONG(song_test);
-#endif
- }
- return false;
- }
- return process_record_keymap(keycode, record);
-}
-
-#ifdef TAP_DANCE_ENABLE
-tap_dance_action_t tap_dance_actions[] = {};
-#endif
-
-void keyboard_post_init_rgb_light(void) {
- rgblight_sethsv(HSV_GOLD);
- rgblight_mode(RGBLIGHT_MODE_BREATHING);
- // rgblight_mode(RGBLIGHT_MODE_KNIGHT+1);
-}
-
-// Init stuff.
-void keyboard_post_init_user(void) {
-#if defined(RGBLIGHT_ENABLE)
- keyboard_post_init_rgb_light();
-#endif
- keyboard_post_init_user_keymap();
-}
-
-// Default functions.
-__attribute__((weak)) void keyboard_post_init_user_keymap(void) {}
-
-__attribute__((weak)) layer_state_t layer_state_set_user_keymap(layer_state_t state) { return state; }
diff --git a/users/pvinis/pvinis.h b/users/pvinis/pvinis.h
deleted file mode 100644
index 5a11a6cb6f..0000000000
--- a/users/pvinis/pvinis.h
+++ /dev/null
@@ -1,172 +0,0 @@
-#pragma once
-
-#include "quantum.h"
-
-// My own keycodes.
-enum userspace_custom_keycodes {
- PV_ = SAFE_RANGE,
-
- PV_VRSN, // Print firmware version.
- PV_MAKE, // Print the make command of the keyboard.
- PV_FLSH, // Reset keyboard.
-
- PV_SSNC, // Play Sonic Ring.
- PV_SCIN, // Play Coin Sound.
-
- PV_TEST, // For quick testing purposes.
-
- PV_SAFE_RANGE, // Used for extra keycodes in individual keymaps.
-};
-
-enum tap_dance_indexes {
- // tap dance
- TD_FLSH, // flash keyboard (as if the physical flash key was pressed)
-};
-
-#define ALLM(kc) LCAG(kc) // Easier name for left ctrl-alt-gui.
-#define PV_ESCC CTL_T(KC_ESC) // esc on tap, ctrl on hold.
-#define PV_LOCK LCTL(LSFT(KC_PWR)) // Lock computer.
-#define TD_3FLS TD(TD_FLSH) // Tap dance 3 times for flash.
-
-// Layers.
-enum {
- LR_BASE = 0, // used for basic keys like the surrounding ctrl, cmd, etc
-
- LR_QWERTY,
- LR_CARPALX,
- LR_GAME1, // game layout (space on the left thumb, no modifiers, etc)
- LR_GAME2, // game layout (space on the left thumb, no modifiers, etc, arrows)
-
- LR_SYMBOL, // symbol input (!, @, #, etc)
- LR_SYSCTL, // system control (music, volume, keyboard flash, etc)
- LR_KBCTL, // keyboard control (version, make, flash, etc)
-
-};
-
-// Layer switchers.
-#define BASE TO(LR_BASE)
-#define QWERTY TO(LR_QWERTY)
-#define CARPALX TO(LR_CARPALX)
-#define GAME1 TO(LR_GAME1)
-#define GAME2 TO(LR_GAME2)
-
-#define SYMBOL MO(LR_SYMBOL)
-#define SYSCTL MO(LR_SYSCTL)
-#define KBCTL MO(LR_KBCTL)
-
-// Layout parts for easy reuse between keyboard keymaps.
-
-// Transparent.
-// ┌─────┬─────┬─────┬─────┬─────┐
-// │ │ │ │ │ │
-// └─────┴─────┴─────┴─────┴─────┘
-#define ___________________________________________ _______, _______, _______, _______, _______
-
-// Numbers.
-// ┌─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┐
-// │ 1 │ 2 │ 3 │ 4 │ 5 │ │ 6 │ 7 │ 8 │ 9 │ 0 │
-// └─────┴─────┴─────┴─────┴─────┘ └─────┴─────┴─────┴─────┴─────┘
-#define ________________NUMBERS_L__________________ KC_1, KC_2, KC_3, KC_4, KC_5
-#define ________________NUMBERS_R__________________ KC_6, KC_7, KC_8, KC_9, KC_0
-
-// F keys.
-// ┌─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┐
-// │ F1 │ F2 │ F3 │ F4 │ F5 │ │ F6 │ F7 │ F8 │ F9 │ F10 │
-// └─────┴─────┴─────┴─────┴─────┘ └─────┴─────┴─────┴─────┴─────┘
-#define ______________________F_L__________________ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5
-#define ______________________F_R__________________ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10
-
-// QWERTY.
-// ┌─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┐
-// │ 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 │ , │ . │ / │
-// └─────┴─────┴─────┴─────┴─────┘ └─────┴─────┴─────┴─────┴─────┘
-#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
-
-// QWERTY with mods.
-// ┌───────┬───────┬───────┲━━━━━━━┱───────┐ ┌───────┲━━━━━━━┱───────┬───────┬───────┐
-// │ ctl/A │ sft/S │ cmd/D ┃ opt/F ┃ G │ │ H ┃ opt/J ┃ cmd/K │ sft/L │ ctl/; │
-// └───────┴───────┴───────┺━━━━━━━┹───────┘ └───────┺━━━━━━━┹───────┴───────┴───────┘
-// #define _____________MOD_QWERTY_L2_________________ CTL_T(KC_A), SFT_T(KC_S), GUI_T(KC_D), ALT_T(KC_F), KC_G
-#define _____________MOD_QWERTY_L2_________________ KC_A, KC_S, KC_D, ALT_T(KC_F), KC_G
-#define _____________MOD_QWERTY_R2_________________ KC_H, ALT_T(KC_J), GUI_T(KC_K), SFT_T(KC_L), CTL_T(KC_SCLN)
-
-// ,-----+-----+-----+-----+-----, ,-----+-----+-----+-----+-----,
-// | Q | G | M | L | W | | Y | F | I | O | P |
-// ,-----+-----+-----x-----x-----, ,-----x-----x-----+-----+-----,
-// | D | S | T | N | R | | I | A | K | L | ; |
-// ,-----+-----+-----x-----x-----, ,-----x-----x-----+-----+-----,
-// | Z | X | C | V | J | | K | P | , | . | / |
-// ,-----+-----+-----+-----+-----, ,-----+-----+-----+-----+-----,
-#define ________________CARPALX_L1_________________ KC_Q, KC_G, KC_M, KC_L, KC_W
-#define ________________CARPALX_L2_________________ KC_D, KC_S, KC_T, KC_N, KC_R
-#define ________________CARPALX_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_J
-
-#define ________________CARPALX_R1_________________ KC_Y, KC_F, KC_U, KC_B, KC_SCLN
-#define ________________CARPALX_R2_________________ KC_I, KC_A, KC_E, KC_O, KC_H
-#define ________________CARPALX_R3_________________ KC_K, KC_P, KC_COMM, KC_DOT, KC_SLSH
-
-// ,-----+-----+-----+-----+-----, ,-----+-----+-----+-----+-----,
-// | ! | @ | { | } | _ | | \ | | ` | | |
-// ,-----+-----+-----x-----x-----, ,-----x-----x-----+-----+-----,
-// | # | $ | ( | ) | - | | = | & | ' | " | | |
-// ,-----+-----+-----x-----x-----, ,-----x-----x-----+-----+-----,
-// | % | ^ | [ | ] | + | | * | ~ | < | > | / |
-// ,-----+-----+-----+-----+-----, ,-----+-----+-----+-----+-----,
-#define _________________SYMBOL_L1_________________ KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_UNDS
-#define _________________SYMBOL_L2_________________ KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_MINS
-#define _________________SYMBOL_L3_________________ KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_PLUS
-
-#define _________________SYMBOL_R1_________________ KC_BSLS, _______, KC_GRV, _______, _______
-#define _________________SYMBOL_R2_________________ KC_EQL, KC_AMPR, KC_QUOT, KC_DQUO, KC_PIPE
-#define _________________SYMBOL_R3_________________ KC_ASTR, KC_TILD, KC_LABK, KC_RABK, KC_SLSH
-
-// System Control.
-// vol ↓ ctl ↓
-// ┌─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┐
-// │ │ │ │ │ │ │MUTE │HOME │ ↑ │ END │LOCK │
-// ├─────┼─────┼─────╆━━━━━╅─────┤ ├─────╆━━━━━╅─────┼─────┼─────┤
-// │ │ │ ┃ ┃ │ │VOLUP┃ ← ┃ ↓ │ → │SLEEP│ ← arrows
-// ├─────┼─────┼─────╄━━━━━╃─────┤ ├─────╄━━━━━╃─────┼─────┼─────┤
-// │ │ │ │ │ │ │VOLDN│MPREV│MPLAY│MNEXT│ PWR │ ← music
-// └─────┴─────┴─────┴─────┴─────┘ └─────┴─────┴─────┴─────┴─────┘
-#define _________________SYSCTL_L1_________________ XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_BTN1, XXXXXXX
-#define _________________SYSCTL_L2_________________ XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_RIGHT, KC_MS_WH_UP
-#define _________________SYSCTL_L3_________________ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_WH_DOWN
-
-// vol v ctl v
-#define _________________SYSCTL_R1_________________ KC_MUTE, KC_HOME, KC_UP, KC_END, PV_LOCK
-#define _________________SYSCTL_R2_________________ KC_VOLU, KC_LEFT, KC_DOWN, KC_RGHT /* < arrows */, KC_SLEP
-#define _________________SYSCTL_R3_________________ KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT /* < music */, KC_PWR
-
-// ,-----+-----+-----+-----+-----, ,-----+-----+-----+-----+-----,
-// |GAME |CRPLX|XXXXX|XXXXX|XXXXX| |XXXXX|XXXXX|XXXXX|XXXXX|XXXXX|
-// ,-----+-----+-----x-----x-----, ,-----x-----x-----+-----+-----,
-// |XXXXX|XXXXX|XXXXX|XXXXX|XXXXX| |XXXXX|VERSN|MAKE |FLASH|XXXXX|
-// ,-----+-----+-----x-----x-----, ,-----x-----x-----+-----+-----,
-// |XXXXX|XXXXX|XXXXX|XXXXX|XXXXX| |XXXXX|XXXXX|XXXXX|XXXXX|XXXXX|
-// ,-----+-----+-----+-----+-----, ,-----+-----+-----+-----+-----,
-#define __________________KBCTL_L1_________________ PV_SSNC, PV_SCIN, PV_TEST, XXXXXXX, XXXXXXX
-#define __________________KBCTL_L2_________________ RGB_TOG, RGB_VAI, XXXXXXX, XXXXXXX, XXXXXXX
-#define __________________KBCTL_L3_________________ RGB_MOD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX
-
-#define __________________KBCTL_R1_________________ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
-#define __________________KBCTL_R2_________________ XXXXXXX, PV_VRSN, PV_MAKE, PV_FLSH, XXXXXXX
-#define __________________KBCTL_R3_________________ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
-
-// We need wrappers in order for these definitions, because they need to be expanded before being used as arguments to the LAYOUT_xxx macro.
-#define LAYOUT_ergodox_pretty_wrapper(...) LAYOUT_ergodox_pretty(__VA_ARGS__)
-#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
-
-// Extra stuff that might be needed.
-void keyboard_post_init_user_keymap(void);
-layer_state_t layer_state_set_user_keymap(layer_state_t state);
diff --git a/users/pvinis/rules.mk b/users/pvinis/rules.mk
deleted file mode 100644
index 6c7b47399a..0000000000
--- a/users/pvinis/rules.mk
+++ /dev/null
@@ -1,19 +0,0 @@
-SRC += pvinis.c # add userspace file
-
-
-## Use the stuff below on the keyboard keymaps, not here.
-## If they are used here, they will replace the keymap's rules, since this file is eval'd later.
-
-# TAP_DANCE_ENABLE = yes
-# AUDIO_ENABLE = yes # piezo speaker sounds
-# RGBLIGHT_ENABLE = yes # rgb leds underlight
-# BACKLIGHT_ENABLE = no # leds under keycaps
-# MOUSEKEY_ENABLE = yes
-# LEEP_LED_ENABLE = no # no led blinking while sleeping
-# KRO_ENABLE = yes
-
-## Some extra stuff to make firmware smaller.
-
-# LTO_ENABLE = yes
-# CONSOLE_ENABLE = no
-# COMMAND_ENABLE = no
diff --git a/users/riblee/readme.md b/users/riblee/readme.md
deleted file mode 100644
index 54f5cc8bb0..0000000000
--- a/users/riblee/readme.md
+++ /dev/null
@@ -1,14 +0,0 @@
-Copyright 2020 Janos Daniel Reibl <janos.daniel.reibl@protonmail.com> @riblee
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
diff --git a/users/riblee/riblee.c b/users/riblee/riblee.c
deleted file mode 100644
index 4be43ba82c..0000000000
--- a/users/riblee/riblee.c
+++ /dev/null
@@ -1,174 +0,0 @@
-/* Copyright 2020 Janos Daniel Reibl <janos.daniel.reibl@protonmail.com> @riblee
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "riblee.h"
-#include <string.h>
-
-// Tap Dance functions
-void dance_key_a (tap_dance_state_t *state, void *user_data) {
- if (state->count == 1) {
- SEND_STRING("a");
- reset_tap_dance(state);
- } else if (state->count == 2) {
- if (!(keyboard_report->mods & MOD_MASK_SHIFT)) {
- send_unicode_string("á");
- } else {
- send_unicode_string("Á");
- }
-
- reset_tap_dance(state);
- }
-}
-
-void dance_key_e (tap_dance_state_t *state, void *user_data) {
- if (state->count == 1) {
- SEND_STRING("e");
- reset_tap_dance(state);
- } else if (state->count == 2) {
- if (!(keyboard_report->mods & MOD_MASK_SHIFT)) {
- send_unicode_string("é");
- } else {
- send_unicode_string("É");
- }
-
- reset_tap_dance(state);
- }
-}
-
-void dance_key_i (tap_dance_state_t *state, void *user_data) {
- if (state->count == 1) {
- SEND_STRING("i");
- reset_tap_dance(state);
- } else if (state->count == 2) {
- if (!(keyboard_report->mods & MOD_MASK_SHIFT)) {
- send_unicode_string("í");
- } else {
- send_unicode_string("Í");
- }
-
- reset_tap_dance(state);
- }
-}
-
-void dance_key_o (tap_dance_state_t *state, void *user_data) {
- if (state->count == 1) {
- SEND_STRING("o");
- reset_tap_dance(state);
- } else if (state->count == 2) {
- if (!(keyboard_report->mods & MOD_MASK_SHIFT)) {
- send_unicode_string("ó");
- } else {
- send_unicode_string("Ó");
- }
-
- reset_tap_dance(state);
- } else if (state->count == 3) {
- if (!(keyboard_report->mods & MOD_MASK_SHIFT)) {
- send_unicode_string("ö");
- } else {
- send_unicode_string("Ö");
- }
-
- reset_tap_dance(state);
- } else if (state->count == 4) {
- if (!(keyboard_report->mods & MOD_MASK_SHIFT)) {
- send_unicode_string("ő");
- } else {
- send_unicode_string("Ő");
- }
-
- reset_tap_dance(state);
- }
-}
-
-void dance_key_u (tap_dance_state_t *state, void *user_data) {
- if (state->count == 1) {
- SEND_STRING("u");
- reset_tap_dance(state);
- } else if (state->count == 2) {
- if (!(keyboard_report->mods & MOD_MASK_SHIFT)) {
- send_unicode_string("ú");
- } else {
- send_unicode_string("Ú");
- }
-
- reset_tap_dance(state);
- } else if (state->count == 3) {
- if (!(keyboard_report->mods & MOD_MASK_SHIFT)) {
- send_unicode_string("ü");
- } else {
- send_unicode_string("Ü");
- }
-
- reset_tap_dance(state);
- } else if (state->count == 4) {
- if (!(keyboard_report->mods & MOD_MASK_SHIFT)) {
- send_unicode_string("ű");
- } else {
- send_unicode_string("Ű");
- }
-
- reset_tap_dance(state);
- }
-}
-
-layer_state_t layer_state_set_user(layer_state_t state) {
- return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
-}
-
-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 DVORAK:
- if (record->event.pressed) {
- set_single_persistent_default_layer(_DVORAK);
- }
- return false;
- break;
- case WORKMAN:
- if (record->event.pressed) {
- set_single_persistent_default_layer(_WORKMAN);
- }
- return false;
- break;
- case HUNGARIAN:
- if (record->event.pressed) {
- set_single_persistent_default_layer(_HUNGARIAN);
- }
- return false;
- break;
- }
- return true;
-};
-
-void keyboard_pre_init_user(void) {
- // Set C13 pin as output
- setPinOutput(C13);
-
- // Turn off the LED
- writePinHigh(C13);
-} \ No newline at end of file
diff --git a/users/riblee/riblee.h b/users/riblee/riblee.h
deleted file mode 100644
index 910c57db69..0000000000
--- a/users/riblee/riblee.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/* Copyright 2020 Janos Daniel Reibl <janos.daniel.reibl@protonmail.com> @riblee
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-#include QMK_KEYBOARD_H
-
-enum layer_names {
- _QWERTY,
- _HUNGARIAN,
- _COLEMAK,
- _DVORAK,
- _WORKMAN,
- _LOWER,
- _RAISE,
- _ADJUST
-};
-
-enum custom_keycodes {
- QWERTY = SAFE_RANGE,
- HUNGARIAN,
- COLEMAK,
- DVORAK,
- WORKMAN,
-};
-
-#define LOWER MO(_LOWER)
-#define RAISE MO(_RAISE)
-
-// Tap Dance declarations
-enum {
- TD_A,
- TD_E,
- TD_I,
- TD_O,
- TD_U,
-};
-
-void dance_key_a (tap_dance_state_t *, void *);
-void dance_key_e (tap_dance_state_t *, void *);
-void dance_key_i (tap_dance_state_t *, void *);
-void dance_key_o (tap_dance_state_t *, void *);
-void dance_key_u (tap_dance_state_t *, void *);
-
-layer_state_t layer_state_set_user(layer_state_t);
-bool process_record_user(uint16_t keycode, keyrecord_t *record); \ No newline at end of file
diff --git a/users/riblee/rules.mk b/users/riblee/rules.mk
deleted file mode 100644
index 31c0645d78..0000000000
--- a/users/riblee/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-SRC += riblee.c \ No newline at end of file
diff --git a/users/ridingqwerty/config.h b/users/ridingqwerty/config.h
deleted file mode 100644
index 2bb32a0120..0000000000
--- a/users/ridingqwerty/config.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#pragma once
-
-#define BOOTMAGIC_LITE_ROW 0
-#define BOOTMAGIC_LITE_COL 0
-
-#define TAPPING_TERM 175
-#define MACRO_TIMER 5
-#define QUICK_TAP_TERM_PER_KEY
-// testing
-#define TAPPING_TERM_PER_KEY
diff --git a/users/ridingqwerty/dict.h b/users/ridingqwerty/dict.h
deleted file mode 100644
index 43d4d50b50..0000000000
--- a/users/ridingqwerty/dict.h
+++ /dev/null
@@ -1,1012 +0,0 @@
-#pragma once
-
-// lower this number if a smaller dictionary is desired
-#define NUMBER_OF_WORDS 1000
-
-#define MAX_WORDS 1000
-#if (NUMBER_OF_WORDS > MAX_WORDS)
-# error *** NUMBER_OF_WORDS must be between 0 and 1000 inclusive
-#endif
-
-const char *dict[MAX_WORDS] = { \
-"the", \
-"of", \
-"to", \
-"and", \
-"a", \
-"in", \
-"is", \
-"it", \
-"you", \
-"that", \
-"he", \
-"was", \
-"for", \
-"on", \
-"are", \
-"with", \
-"as", \
-"I", \
-"his", \
-"they", \
-"be", \
-"at", \
-"one", \
-"have", \
-"this", \
-"from", \
-"or", \
-"had", \
-"by", \
-"not", \
-"word", \
-"but", \
-"what", \
-"some", \
-"we", \
-"can", \
-"out", \
-"other", \
-"were", \
-"all", \
-"there", \
-"when", \
-"up", \
-"use", \
-"your", \
-"how", \
-"said", \
-"an", \
-"each", \
-"she", \
-"which", \
-"do", \
-"their", \
-"time", \
-"if", \
-"will", \
-"way", \
-"about", \
-"many", \
-"then", \
-"them", \
-"write", \
-"would", \
-"like", \
-"so", \
-"these", \
-"her", \
-"long", \
-"make", \
-"thing", \
-"see", \
-"him", \
-"two", \
-"has", \
-"look", \
-"more", \
-"day", \
-"could", \
-"go", \
-"come", \
-"did", \
-"number", \
-"sound", \
-"no", \
-"most", \
-"people", \
-"my", \
-"over", \
-"know", \
-"water", \
-"than", \
-"call", \
-"first", \
-"who", \
-"may", \
-"down", \
-"side", \
-"been", \
-"now", \
-"find", \
-"any", \
-"new", \
-"work", \
-"part", \
-"take", \
-"get", \
-"place", \
-"made", \
-"live", \
-"where", \
-"after", \
-"back", \
-"little", \
-"only", \
-"round", \
-"man", \
-"year", \
-"came", \
-"show", \
-"every", \
-"good", \
-"me", \
-"give", \
-"our", \
-"under", \
-"name", \
-"very", \
-"through", \
-"just", \
-"form", \
-"sentence", \
-"great", \
-"think", \
-"say", \
-"help", \
-"low", \
-"line", \
-"differ", \
-"turn", \
-"cause", \
-"much", \
-"mean", \
-"before", \
-"move", \
-"right", \
-"boy", \
-"old", \
-"too", \
-"same", \
-"tell", \
-"does", \
-"set", \
-"three", \
-"want", \
-"air", \
-"well", \
-"also", \
-"play", \
-"small", \
-"end", \
-"put", \
-"home", \
-"read", \
-"hand", \
-"port", \
-"large", \
-"spell", \
-"add", \
-"even", \
-"land", \
-"here", \
-"must", \
-"big", \
-"high", \
-"such", \
-"follow", \
-"act", \
-"why", \
-"ask", \
-"men", \
-"change", \
-"went", \
-"light", \
-"kind", \
-"off", \
-"need", \
-"house", \
-"picture", \
-"try", \
-"us", \
-"again", \
-"animal", \
-"point", \
-"mother", \
-"world", \
-"near", \
-"build", \
-"self", \
-"earth", \
-"father", \
-"head", \
-"stand", \
-"own", \
-"page", \
-"should", \
-"country", \
-"found", \
-"answer", \
-"school", \
-"grow", \
-"study", \
-"still", \
-"learn", \
-"plant", \
-"cover", \
-"food", \
-"sun", \
-"four", \
-"between", \
-"state", \
-"keep", \
-"eye", \
-"never", \
-"last", \
-"let", \
-"thought", \
-"city", \
-"tree", \
-"cross", \
-"farm", \
-"hard", \
-"start", \
-"might", \
-"story", \
-"saw", \
-"far", \
-"sea", \
-"draw", \
-"left", \
-"late", \
-"run", \
-"don't", \
-"while", \
-"press", \
-"close", \
-"night", \
-"real", \
-"life", \
-"few", \
-"north", \
-"open", \
-"seem", \
-"together", \
-"next", \
-"white", \
-"children", \
-"begin", \
-"got", \
-"walk", \
-"example", \
-"ease", \
-"paper", \
-"group", \
-"always", \
-"music", \
-"those", \
-"both", \
-"mark", \
-"often", \
-"letter", \
-"until", \
-"mile", \
-"river", \
-"car", \
-"feet", \
-"care", \
-"second", \
-"book", \
-"carry", \
-"took", \
-"science", \
-"eat", \
-"room", \
-"friend", \
-"began", \
-"idea", \
-"fish", \
-"mountain", \
-"stop", \
-"once", \
-"base", \
-"hear", \
-"horse", \
-"cut", \
-"sure", \
-"watch", \
-"color", \
-"face", \
-"wood", \
-"main", \
-"enough", \
-"plain", \
-"girl", \
-"usual", \
-"young", \
-"ready", \
-"above", \
-"ever", \
-"red", \
-"list", \
-"though", \
-"feel", \
-"talk", \
-"bird", \
-"soon", \
-"body", \
-"dog", \
-"family", \
-"direct", \
-"pose", \
-"leave", \
-"song", \
-"measure", \
-"door", \
-"product", \
-"black", \
-"short", \
-"numeral", \
-"class", \
-"wind", \
-"question", \
-"happen", \
-"complete", \
-"ship", \
-"area", \
-"half", \
-"rock", \
-"order", \
-"fire", \
-"south", \
-"problem", \
-"piece", \
-"told", \
-"knew", \
-"pass", \
-"since", \
-"top", \
-"whole", \
-"king", \
-"space", \
-"heard", \
-"best", \
-"hour", \
-"better", \
-"true", \
-"during", \
-"hundred", \
-"five", \
-"remember", \
-"step", \
-"early", \
-"hold", \
-"west", \
-"ground", \
-"interest", \
-"reach", \
-"fast", \
-"verb", \
-"sing", \
-"listen", \
-"six", \
-"table", \
-"travel", \
-"less", \
-"morning", \
-"ten", \
-"simple", \
-"several", \
-"vowel", \
-"toward", \
-"war", \
-"lay", \
-"against", \
-"pattern", \
-"slow", \
-"center", \
-"love", \
-"person", \
-"money", \
-"serve", \
-"appear", \
-"road", \
-"map", \
-"rain", \
-"rule", \
-"govern", \
-"pull", \
-"cold", \
-"notice", \
-"voice", \
-"unit", \
-"power", \
-"town", \
-"fine", \
-"certain", \
-"fly", \
-"fall", \
-"lead", \
-"cry", \
-"dark", \
-"machine", \
-"note", \
-"wait", \
-"plan", \
-"figure", \
-"star", \
-"box", \
-"noun", \
-"field", \
-"rest", \
-"correct", \
-"able", \
-"pound", \
-"done", \
-"beauty", \
-"drive", \
-"stood", \
-"contain", \
-"front", \
-"teach", \
-"week", \
-"final", \
-"gave", \
-"green", \
-"oh", \
-"quick", \
-"develop", \
-"ocean", \
-"warm", \
-"free", \
-"minute", \
-"strong", \
-"special", \
-"mind", \
-"behind", \
-"clear", \
-"tail", \
-"produce", \
-"fact", \
-"street", \
-"inch", \
-"multiply", \
-"nothing", \
-"course", \
-"stay", \
-"wheel", \
-"full", \
-"force", \
-"blue", \
-"object", \
-"decide", \
-"surface", \
-"deep", \
-"moon", \
-"island", \
-"foot", \
-"system", \
-"busy", \
-"test", \
-"record", \
-"boat", \
-"common", \
-"gold", \
-"possible", \
-"plane", \
-"stead", \
-"dry", \
-"wonder", \
-"laugh", \
-"thousand", \
-"ago", \
-"ran", \
-"check", \
-"game", \
-"shape", \
-"equate", \
-"hot", \
-"miss", \
-"brought", \
-"heat", \
-"snow", \
-"tire", \
-"bring", \
-"yes", \
-"distant", \
-"fill", \
-"east", \
-"paint", \
-"language", \
-"among", \
-"grand", \
-"ball", \
-"yet", \
-"wave", \
-"drop", \
-"heart", \
-"am", \
-"present", \
-"heavy", \
-"dance", \
-"engine", \
-"position", \
-"arm", \
-"wide", \
-"sail", \
-"material", \
-"size", \
-"vary", \
-"settle", \
-"speak", \
-"weight", \
-"general", \
-"ice", \
-"matter", \
-"circle", \
-"pair", \
-"include", \
-"divide", \
-"syllable", \
-"felt", \
-"perhaps", \
-"pick", \
-"sudden", \
-"count", \
-"square", \
-"reason", \
-"length", \
-"represent", \
-"art", \
-"subject", \
-"region", \
-"energy", \
-"hunt", \
-"probable", \
-"bed", \
-"brother", \
-"egg", \
-"ride", \
-"cell", \
-"believe", \
-"fraction", \
-"forest", \
-"sit", \
-"race", \
-"window", \
-"store", \
-"summer", \
-"train", \
-"sleep", \
-"prove", \
-"lone", \
-"leg", \
-"exercise", \
-"wall", \
-"catch", \
-"mount", \
-"wish", \
-"sky", \
-"board", \
-"joy", \
-"winter", \
-"sat", \
-"written", \
-"wild", \
-"instrument", \
-"kept", \
-"glass", \
-"grass", \
-"cow", \
-"job", \
-"edge", \
-"sign", \
-"visit", \
-"past", \
-"soft", \
-"fun", \
-"bright", \
-"gas", \
-"weather", \
-"month", \
-"million", \
-"bear", \
-"finish", \
-"happy", \
-"hope", \
-"flower", \
-"clothe", \
-"strange", \
-"gone", \
-"jump", \
-"baby", \
-"eight", \
-"village", \
-"meet", \
-"root", \
-"buy", \
-"raise", \
-"solve", \
-"metal", \
-"whether", \
-"push", \
-"seven", \
-"paragraph", \
-"third", \
-"shall", \
-"held", \
-"hair", \
-"describe", \
-"cook", \
-"floor", \
-"either", \
-"result", \
-"burn", \
-"hill", \
-"safe", \
-"cat", \
-"century", \
-"consider", \
-"type", \
-"law", \
-"bit", \
-"coast", \
-"copy", \
-"phrase", \
-"silent", \
-"tall", \
-"sand", \
-"soil", \
-"roll", \
-"temperature", \
-"finger", \
-"industry", \
-"value", \
-"fight", \
-"lie", \
-"beat", \
-"excite", \
-"natural", \
-"view", \
-"sense", \
-"ear", \
-"else", \
-"quite", \
-"broke", \
-"case", \
-"middle", \
-"kill", \
-"son", \
-"lake", \
-"moment", \
-"scale", \
-"loud", \
-"spring", \
-"observe", \
-"child", \
-"straight", \
-"consonant", \
-"nation", \
-"dictionary", \
-"milk", \
-"speed", \
-"method", \
-"organ", \
-"pay", \
-"age", \
-"section", \
-"dress", \
-"cloud", \
-"surprise", \
-"quiet", \
-"stone", \
-"tiny", \
-"climb", \
-"cool", \
-"design", \
-"poor", \
-"lot", \
-"experiment", \
-"bottom", \
-"key", \
-"iron", \
-"single", \
-"stick", \
-"flat", \
-"twenty", \
-"skin", \
-"smile", \
-"crease", \
-"hole", \
-"trade", \
-"melody", \
-"trip", \
-"office", \
-"receive", \
-"row", \
-"mouth", \
-"exact", \
-"symbol", \
-"die", \
-"least", \
-"trouble", \
-"shout", \
-"except", \
-"wrote", \
-"seed", \
-"tone", \
-"join", \
-"suggest", \
-"clean", \
-"break", \
-"lady", \
-"yard", \
-"rise", \
-"bad", \
-"blow", \
-"oil", \
-"blood", \
-"touch", \
-"grew", \
-"cent", \
-"mix", \
-"team", \
-"wire", \
-"cost", \
-"lost", \
-"brown", \
-"wear", \
-"garden", \
-"equal", \
-"sent", \
-"choose", \
-"fell", \
-"fit", \
-"flow", \
-"fair", \
-"bank", \
-"collect", \
-"save", \
-"control", \
-"decimal", \
-"gentle", \
-"woman", \
-"captain", \
-"practice", \
-"separate", \
-"difficult", \
-"doctor", \
-"please", \
-"protect", \
-"noon", \
-"whose", \
-"locate", \
-"ring", \
-"character", \
-"insect", \
-"caught", \
-"period", \
-"indicate", \
-"radio", \
-"spoke", \
-"atom", \
-"human", \
-"history", \
-"effect", \
-"electric", \
-"expect", \
-"crop", \
-"modern", \
-"element", \
-"hit", \
-"student", \
-"corner", \
-"party", \
-"supply", \
-"bone", \
-"rail", \
-"imagine", \
-"provide", \
-"agree", \
-"thus", \
-"capital", \
-"won't", \
-"chair", \
-"danger", \
-"fruit", \
-"rich", \
-"thick", \
-"soldier", \
-"process", \
-"operate", \
-"guess", \
-"necessary", \
-"sharp", \
-"wing", \
-"create", \
-"neighbor", \
-"wash", \
-"bat", \
-"rather", \
-"crowd", \
-"corn", \
-"compare", \
-"poem", \
-"string", \
-"bell", \
-"depend", \
-"meat", \
-"rub", \
-"tube", \
-"famous", \
-"dollar", \
-"stream", \
-"fear", \
-"sight", \
-"thin", \
-"triangle", \
-"planet", \
-"hurry", \
-"chief", \
-"colony", \
-"clock", \
-"mine", \
-"tie", \
-"enter", \
-"major", \
-"fresh", \
-"search", \
-"send", \
-"yellow", \
-"gun", \
-"allow", \
-"print", \
-"dead", \
-"spot", \
-"desert", \
-"suit", \
-"current", \
-"lift", \
-"rose", \
-"continue", \
-"block", \
-"chart", \
-"hat", \
-"sell", \
-"success", \
-"company", \
-"subtract", \
-"event", \
-"particular", \
-"deal", \
-"swim", \
-"term", \
-"opposite", \
-"wife", \
-"shoe", \
-"shoulder", \
-"spread", \
-"arrange", \
-"camp", \
-"invent", \
-"cotton", \
-"born", \
-"determine", \
-"quart", \
-"nine", \
-"truck", \
-"noise", \
-"level", \
-"chance", \
-"gather", \
-"shop", \
-"stretch", \
-"throw", \
-"shine", \
-"property", \
-"column", \
-"molecule", \
-"select", \
-"wrong", \
-"gray", \
-"repeat", \
-"require", \
-"broad", \
-"prepare", \
-"salt", \
-"nose", \
-"plural", \
-"anger", \
-"claim", \
-"continent", \
-"oxygen", \
-"sugar", \
-"death", \
-"pretty", \
-"skill", \
-"women", \
-"season", \
-"solution", \
-"magnet", \
-"silver", \
-"thank", \
-"branch", \
-"match", \
-"suffix", \
-"especially", \
-"fig", \
-"afraid", \
-"huge", \
-"sister", \
-"steel", \
-"discuss", \
-"forward", \
-"similar", \
-"guide", \
-"experience", \
-"score", \
-"apple", \
-"bought", \
-"led", \
-"pitch", \
-"coat", \
-"mass", \
-"card", \
-"band", \
-"rope", \
-"slip", \
-"win", \
-"dream", \
-"evening", \
-"condition", \
-"feed", \
-"tool", \
-"total", \
-"basic", \
-"smell", \
-"valley", \
-"nor", \
-"double", \
-"seat", \
-"arrive", \
-"master", \
-"track", \
-"parent", \
-"shore", \
-"division", \
-"sheet", \
-"substance", \
-"favor", \
-"connect", \
-"post", \
-"spend", \
-"chord", \
-"fat", \
-"glad", \
-"original", \
-"share", \
-"station", \
-"dad", \
-"bread", \
-"charge", \
-"proper", \
-"bar", \
-"offer", \
-"segment", \
-"slave", \
-"duck", \
-"instant", \
-"market", \
-"degree", \
-"populate", \
-"chick", \
-"dear", \
-"enemy", \
-"reply", \
-"drink", \
-"occur", \
-"support", \
-"speech", \
-"nature", \
-"range", \
-"steam", \
-"motion", \
-"path", \
-"liquid", \
-"log", \
-"meant", \
-"quotient", \
-"teeth", \
-"shell", \
-"neck" \
-};
diff --git a/users/ridingqwerty/process_records.c b/users/ridingqwerty/process_records.c
deleted file mode 100644
index 4aa688ca00..0000000000
--- a/users/ridingqwerty/process_records.c
+++ /dev/null
@@ -1,486 +0,0 @@
-#include <stdio.h>
-#include <time.h>
-#include "ridingqwerty.h"
-#include "dict.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;
-}
-
-/*
-typedef union {
- struct {
- uint8_t aesthetic : 1,
- spongebob : 1,
- uppercase : 1,
- australia : 1,
- unusued : 4;
- };
- uint8_t all;
-} mode_config_t;
-*/
-mode_config_t mode = {.all = 0U};
-
-bool randword_seed = false;
-uint8_t user_mod_state;
-uint16_t rand_key;
-uint16_t temp_keycode;
-uint32_t user_key_timer;
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-#ifdef CONSOLE_ENABLE
- uprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed);
-#endif
-
- temp_keycode = keycode;
- if ((mode.all != 0U) && ((keycode != DB(TAB) || keycode != ED(ESC)) && ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)))) {
- temp_keycode &= 0xFF;
- }
-
- if (mode.spongebob) {
- switch(temp_keycode) {
- case KC_A ... KC_Z:
- if (record->event.pressed) {
- (mode.uppercase ^= 1) == 0 ? tap_code16(S(temp_keycode)) : tap_code(temp_keycode);
- }
- return false;
- }
- }
-
- if (mode.aesthetic) {
- switch(temp_keycode) {
-#if defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE)
- case KC_A:
- if (record->event.pressed) {
- send_unicode_string("Λ ");
- }
- return false;
- case KC_E:
- if (record->event.pressed) {
- send_unicode_string("Ξ ");
- }
- return false;
-#else
- case A:
- case E:
- if (record->event.pressed) {
- tap_code16(S(temp_keycode));
- tap_code(KC_SPC);
- }
- return false;
-#endif
- case KC_B ... KC_D:
- case KC_F ... KC_Z:
- if (record->event.pressed) {
- tap_code16(S(temp_keycode));
- tap_code(KC_SPC);
- }
- return false;
- case KC_1 ... KC_0:
- if (record->event.pressed) {
- tap_code(temp_keycode);
- tap_code(KC_SPC);
- }
- return false;
-
- case KC_BSPC:
- if (record->event.pressed) {
- tap_code(KC_BSPC);
- tap_code(KC_BSPC);
- }
- return false;
- case KC_SPC:
- if (record->event.pressed) {
- tap_code(KC_SPC);
- tap_code(KC_SPC);
- tap_code(KC_SPC);
- }
- return false;
- }
- }
-
- if (mode.australia) {
- switch(temp_keycode) {
- // IDEMPOTENT
- case KC_L:
- case KC_O:
- case KC_S:
- case KC_Z:
- case KC_8:
- case KC_0:
- if (record->event.pressed) {
- tap_code(temp_keycode);
- tap_code(KC_LEFT);
- }
- return false;
-
- // INVERSE
- case KC_B:
- if (record->event.pressed) {
- tap_code(KC_Q);
- tap_code(KC_LEFT);
- }
- return false;
- case KC_Q:
- if (record->event.pressed) {
- tap_code(KC_B);
- tap_code(KC_LEFT);
- }
- return false;
- case KC_D:
- if (record->event.pressed) {
- tap_code(KC_P);
- tap_code(KC_LEFT);
- }
- return false;
- case KC_P:
- if (record->event.pressed) {
- tap_code(KC_D);
- tap_code(KC_LEFT);
- }
- return false;
- case KC_N:
- if (record->event.pressed) {
- tap_code(KC_U);
- tap_code(KC_LEFT);
- }
- return false;
- case KC_U:
- if (record->event.pressed) {
- tap_code(KC_N);
- tap_code(KC_LEFT);
- }
- return false;
- case KC_6:
- if (record->event.pressed) {
- tap_code(KC_9);
- tap_code(KC_LEFT);
- }
- return false;
- case KC_9:
- if (record->event.pressed) {
- tap_code(KC_6);
- tap_code(KC_LEFT);
- }
- return false;
-
- // TRANSLATE
- case KC_A:
- if (record->event.pressed) {
- register_unicode(0x0250); // ɐ
- tap_code(KC_LEFT);
- return false;
- }
- break;
- case KC_C:
- if (record->event.pressed) {
- register_unicode(0x0254); // ɔ
- tap_code(KC_LEFT);
- return false;
- }
- break;
- case KC_E:
- if (record->event.pressed) {
- register_unicode(0x01DD); // ǝ
- tap_code(KC_LEFT);
- return false;
- }
- break;
- case KC_F:
- if (record->event.pressed) {
- register_unicode(0x025F); // ɟ
- tap_code(KC_LEFT);
- return false;
- }
- break;
- case KC_G:
- if (record->event.pressed) {
- register_unicode(0x0183); // ƃ
- tap_code(KC_LEFT);
- return false;
- }
- break;
- case KC_H:
- if (record->event.pressed) {
- register_unicode(0x0265); // ɥ
- tap_code(KC_LEFT);
- return false;
- }
- break;
- case KC_I:
- if (record->event.pressed) {
- register_unicode(0x1D09); // ᴉ
- tap_code(KC_LEFT);
- return false;
- }
- break;
- case KC_J:
- if (record->event.pressed) {
- register_unicode(0x027E); // ɾ
- tap_code(KC_LEFT);
- return false;
- }
- break;
- case KC_K:
- if (record->event.pressed) {
- register_unicode(0x029E); // ʞ
- tap_code(KC_LEFT);
- return false;
- }
- break;
- case KC_M:
- if (record->event.pressed) {
- register_unicode(0x026F); // ɯ
- tap_code(KC_LEFT);
- return false;
- }
- break;
- case KC_R:
- if (record->event.pressed) {
- register_unicode(0x0279); // ɹ
- tap_code(KC_LEFT);
- return false;
- }
- break;
- case KC_T:
- if (record->event.pressed) {
- register_unicode(0x0287); // ʇ
- tap_code(KC_LEFT);
- return false;
- }
- break;
- case KC_V:
- if (record->event.pressed) {
- register_unicode(0x028C); // ʌ
- tap_code(KC_LEFT);
- return false;
- }
- break;
- case KC_W:
- if (record->event.pressed) {
- register_unicode(0x028D); // ʍ
- tap_code(KC_LEFT);
- return false;
- }
- break;
- case KC_X:
- if (record->event.pressed) {
- register_unicode(0x2717); // ✗
- tap_code(KC_LEFT);
- return false;
- }
- break;
- case KC_Y:
- if (record->event.pressed) {
- register_unicode(0x028E); // ʎ
- tap_code(KC_LEFT);
- return false;
- }
- break;
- case KC_1:
- if (record->event.pressed) {
- register_unicode(0x0269); // ɩ
- tap_code(KC_LEFT);
- return false;
- }
- break;
- case KC_2:
- if (record->event.pressed) {
- register_unicode(0x3139); // ㄹ
- tap_code(KC_LEFT);
- return false;
- }
- break;
- case KC_3:
- if (record->event.pressed) {
- register_unicode(0x0190); // Ɛ
- tap_code(KC_LEFT);
- return false;
- }
- break;
- case KC_4:
- if (record->event.pressed) {
- register_unicode(0x3123); // ㄣ
- tap_code(KC_LEFT);
- return false;
- }
- break;
- case KC_5:
- if (record->event.pressed) {
- register_unicode(0x03DB); // ϛ
- tap_code(KC_LEFT);
- return false;
- }
- break;
- case KC_7:
- if (record->event.pressed) {
- register_unicode(0x3125); // ㄥ
- tap_code(KC_LEFT);
- }
- return false;
-
- // CONTROLS
- case KC_ENT:
- if (record->event.pressed) {
- tap_code(KC_END);
- tap_code(KC_ENTER);
- }
- return false;
- case KC_BSPC:
- if (record->event.pressed) {
- tap_code(KC_DEL);
- }
- return false;
- case KC_SPC:
- if (record->event.pressed) {
- tap_code(KC_SPC);
- tap_code(KC_LEFT);
- }
- return false;
- }
- }
-
- 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 QWERTY ... COLEMAK:
-#if defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE)
- case GREEK ... HIRAGAN:
-#endif
- if (record->event.pressed) {
- //set_single_persistent_default_layer(keycode - QWERTY);
- default_layer_set(1U << (keycode - QWERTY));
- }
- break;
-
- case MAKE:
- if (record->event.pressed) {
- user_mod_state = get_mods() & MOD_MASK_CTRL;
- if (user_mod_state) {
- clear_mods();
- send_string_with_delay_P(PSTR("sleep 1 && "), MACRO_TIMER);
- }
- send_string_with_delay_P(PSTR("make " QMK_KEYBOARD ":" QMK_KEYMAP), MACRO_TIMER);
- if (user_mod_state) {
- send_string_with_delay_P(PSTR(":flash\n"), MACRO_TIMER);
- reset_keyboard();
- } else {
- send_string_with_delay_P(PSTR("\n"), MACRO_TIMER);
- }
- }
- break;
-
- case RNGWORD:
- if (randword_seed == false) {
- randword_seed = true;
- srand(timer_read32());
- }
- rand_key = rand() % NUMBER_OF_WORDS;
- if (record->event.pressed) {
- send_string(dict[rand_key]);
- tap_code(KC_SPC);
- }
- break;
-
- case RG_QUOT:
- if (record->event.pressed) {
-#if defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE)
- user_mod_state = get_mods() & MOD_MASK_ALT;
- if (user_mod_state) {
- unregister_mods(MOD_BIT(KC_RALT));
- register_unicode(0x00B0); // °
- set_mods(user_mod_state);
- return false;
- }
-#endif
- user_key_timer = timer_read32();
- layer_on(_NUMBER);
- register_mods(MOD_BIT(KC_RGUI));
- } else {
- unregister_mods(MOD_BIT(KC_RGUI));
- layer_off(_NUMBER);
- if (timer_elapsed32(user_key_timer) < TAPPING_TERM) {
- tap_code(KC_QUOT);
- }
- }
- return false; break;
-
- case TESTING:
- /*
- if (record->event.pressed) {
- int length = snprintf( NULL, 0, "%lu", test_number );
- char* str = malloc( length + 1 );
- snprintf( str, length + 1, "%lu", test_number );
- send_string(str);
- free(str);
- // make CFLAGS+="-lc -specs=nosys.specs" board:keymap
- }
- */
- break;
-
- case CCCV: // One key copy/paste
- if (record->event.pressed) {
- user_key_timer = timer_read32();
- } else {
- if (timer_elapsed32(user_key_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;
-
- case SEED:
- if (record->event.pressed) {
- srand(timer_read32());
- }
- break;
-
- case SARCASM:
- if (record->event.pressed) {
- if (!(mode.spongebob ^= 1)) { mode.all = 0U; };
- }
- break;
-
- case VPRWAVE:
- if (record->event.pressed) {
- if (!(mode.aesthetic ^= 1)) { mode.all = 0U; };
- }
- break;
-
- case STRAYA:
- if (record->event.pressed) {
- if (!(mode.australia ^= 1)) { mode.all = 0U; };
- }
- break;
- default:
- if (record->event.pressed && record->event.key.col == 4 && record->event.key.row == 1) {
- if (get_mods() & MOD_BIT(KC_RALT)) {
- unregister_mods(MOD_BIT(KC_RALT));
- //register_unicode(0x262D); // ☭
- tap_code(KC_BSPC);
- set_mods(MOD_BIT(KC_RALT));
- return false;
- }
- }
- break;
-
- }
- return process_record_keymap(keycode, record) &&
- process_record_secrets(keycode, record);
-}
diff --git a/users/ridingqwerty/process_records.h b/users/ridingqwerty/process_records.h
deleted file mode 100644
index 47c5f67903..0000000000
--- a/users/ridingqwerty/process_records.h
+++ /dev/null
@@ -1,58 +0,0 @@
-#pragma once
-#include "ridingqwerty.h"
-
-#if defined(KEYMAP_SAFE_RANGE)
- #define PLACEHOLDER_SAFE_RANGE KEYMAP_SAFE_RANGE
-#else
- #define PLACEHOLDER_SAFE_RANGE SAFE_RANGE
-#endif
-
-bool process_record_secrets(uint16_t keycode, keyrecord_t *record);
-bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
-
-enum userspace_custom_keycodes {
- VERSION = PLACEHOLDER_SAFE_RANGE,
- QWERTY,
- DVORAK,
- COLEMAK,
-#if defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE)
- GREEK,
- RUSSIAN,
- RUNES,
- HIRAGAN,
-#endif
- MAKE,
- RG_QUOT,
- TESTING,
- RNGWORD,
- CCCV,
- SEED,
- SARCASM,
- VPRWAVE,
- STRAYA,
- SECRET0,
- SECRET1,
- SECRET2,
- SECRET3,
- SECRET4,
- SECRET5,
- SECRET6,
- SECRET7,
- SECRET8,
- NEW_SAFE_RANGE // start new keyboard-level declarations with NEW_SAFE_RANGE
-};
-
-// clang-format off
-typedef union {
- struct {
- uint8_t aesthetic : 1,
- spongebob : 1,
- uppercase : 1,
- australia : 1,
- unusued : 4;
- };
- uint8_t all;
-} mode_config_t;
-// clang-format on
-
-extern mode_config_t mode;
diff --git a/users/ridingqwerty/ridingqwerty.c b/users/ridingqwerty/ridingqwerty.c
deleted file mode 100644
index 639bb8d2b3..0000000000
--- a/users/ridingqwerty/ridingqwerty.c
+++ /dev/null
@@ -1,65 +0,0 @@
-#include "ridingqwerty.h"
-
-__attribute__((weak))
-void matrix_init_keymap(void) {}
-
-void matrix_init_user(void) {
- matrix_init_keymap();
-
-#if defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE)
- set_unicode_input_mode(UNICODE_MODE_LINUX);
-#endif
-
- //set_single_persistent_default_layer(_QWERTY);
- default_layer_set(1U << _QWERTY);
-}
-
-__attribute__((weak))
-void matrix_scan_keymap(void) {
-}
-
-void matrix_scan_user(void) {
- // use for global event timers
-}
-
-__attribute__((weak))
-void keyboard_post_init_keymap(void) {}
-
-void keyboard_post_init_user(void) {
-#if defined(CONSOLE_ENABLE)
- debug_enable = true;
- debug_matrix = true;
- //debug_keyboard=true;
- //debug_mouse=true;
-#endif
-}
-
-__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, _EDITOR, _DEBUG, _SECRET);
-#ifdef CONSOLE_ENABLE
- uprintf("LAYER: %u\n", state);
-#endif
- return state;
-}
-
-uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case RC(ENT):
- case ED(ESC):
- return 225;
- default:
- return TAPPING_TERM;
- }
-};
-
-uint16_t get_quick_tap_term(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case NM(SCLN):
- return 0;
- default:
- return QUICK_TAP_TERM;
- }
-}
diff --git a/users/ridingqwerty/ridingqwerty.h b/users/ridingqwerty/ridingqwerty.h
deleted file mode 100644
index 6bd4aa5700..0000000000
--- a/users/ridingqwerty/ridingqwerty.h
+++ /dev/null
@@ -1,61 +0,0 @@
-#pragma once
-
-#include "quantum.h"
-#include "version.h"
-#include "process_records.h"
-#include "wrappers.h"
-#ifdef TAP_DANCE_ENABLE
-# include "tapdances.h"
-#endif
-#if defined(UNICODEMAP_ENABLE) || defined(UNICODE_ENABLE)
-# include "unicode.h"
-#endif
-
-enum userspace_layers
-{
- _QWERTY,
- _DVORAK,
- _COLEMAK,
-/*
- _WORKMAN et al. go here
-*/
-#if defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE)
- _GREEK,
- _RUSSIAN,
- _RUNES,
- _HIRA1,
- _HIRA2,
-#endif
- _EDITOR,
- _NUMBER,
- _SYMBOL,
- _F_KEYS,
- _DEBUG,
- _SECRET,
-#if defined(MOUSEKEY_ENABLED)
- _MOUSE,
-#endif
- _MEDIA,
- _FINAL
-};
-
-#define LS(kc) MT(MOD_LSFT, KC_##kc)
-#define LC(kc) MT(MOD_LCTL, KC_##kc)
-#define LG(kc) MT(MOD_LGUI, KC_##kc)
-#define LA(kc) MT(MOD_LALT, KC_##kc)
-#define RS(kc) MT(MOD_RSFT, KC_##kc)
-#define RC(kc) MT(MOD_RCTL, KC_##kc)
-#define RG(kc) MT(MOD_RGUI, KC_##kc)
-#define RA(kc) MT(MOD_RALT, KC_##kc)
-
-#define ED(kc) LT(_EDITOR, KC_##kc)
-#define NM(kc) LT(_NUMBER, KC_##kc)
-#define SM(kc) LT(_SYMBOL, KC_##kc)
-#define SC(kc) LT(_SECRET, KC_##kc)
-#define FK(kc) LT(_F_KEYS, KC_##kc)
-#define DB(kc) LT(_DEBUG, KC_##kc)
-
-void matrix_init_keymap(void);
-void matrix_scan_keymap(void);
-void keyboard_post_init_keymap(void);
-layer_state_t layer_state_set_keymap(layer_state_t state);
diff --git a/users/ridingqwerty/rules.mk b/users/ridingqwerty/rules.mk
deleted file mode 100644
index cc53f3f53e..0000000000
--- a/users/ridingqwerty/rules.mk
+++ /dev/null
@@ -1,24 +0,0 @@
-SRC += ridingqwerty.c \
- process_records.c
-
-BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
-CONSOLE_ENABLE = no
-COMMAND_ENABLE = no
-UNICODE_ENABLE = no # "yes" in Atreus default keymap, blocking UNICODEMAP_ENABLE
-UNICODEMAP_ENABLE = yes
-MOUSEKEY_ENABLE = no
-TAP_DANCE_ENABLE = yes
-AUTO_SHIFT_ENABLE = no
-
-ifneq ("$(wildcard $(USER_PATH)/secrets.c)","")
- SRC += secrets.c
-endif
-
-ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
- SRC += tapdances.c
-endif
-
-ifeq ($(strip $(UNICODEMAP_ENABLE)), yes)
- SRC += unicode.c
-endif
-
diff --git a/users/ridingqwerty/tapdances.c b/users/ridingqwerty/tapdances.c
deleted file mode 100644
index 0fdd941637..0000000000
--- a/users/ridingqwerty/tapdances.c
+++ /dev/null
@@ -1,33 +0,0 @@
-#include "ridingqwerty.h"
-#include "tapdances.h"
-
-void braces_finished (tap_dance_state_t *state, void *user_data) {
- if ((state->count == 1) || (state->count == 3)) {
- register_code(KC_LSFT);
- }
-}
-
-void braces_reset (tap_dance_state_t *state, void *user_data) {
- // two or three taps for "[]"/"{}"
- if ((state->count == 2) || (state->count == 3)) {
- tap_code(KC_LBRC);
- tap_code(KC_RBRC);
- }
- // one tap for "()"
- else if (state->count == 1) {
- tap_code(KC_9);
- tap_code(KC_0);
- }
-
- // unregister the shift unconditionally
- unregister_code(KC_LSFT);
-
- // move back one space, inside the braces
- if (state->count <= 3) {
- tap_code(KC_LEFT);
- }
-}
-
-tap_dance_action_t tap_dance_actions[] = {
- [TD_BRACES] = ACTION_TAP_DANCE_FN_ADVANCED (NULL, braces_finished, braces_reset)
-};
diff --git a/users/ridingqwerty/tapdances.h b/users/ridingqwerty/tapdances.h
deleted file mode 100644
index 6eba0e2cbc..0000000000
--- a/users/ridingqwerty/tapdances.h
+++ /dev/null
@@ -1,9 +0,0 @@
-#pragma once
-
-#include "quantum.h"
-
-#define TD_BRC TD(TD_BRACES)
-
-enum tapdance_id {
- TD_BRACES = 0
-};
diff --git a/users/ridingqwerty/unicode.c b/users/ridingqwerty/unicode.c
deleted file mode 100644
index 5a4c154919..0000000000
--- a/users/ridingqwerty/unicode.c
+++ /dev/null
@@ -1,7 +0,0 @@
-#include "unicode.h"
-
-#ifdef UNICODEMAP_ENABLE
-const uint32_t unicode_map[] PROGMEM = {
- FOREACH_UNICODE(UCM_ENTRY)
-};
-#endif
diff --git a/users/ridingqwerty/unicode.h b/users/ridingqwerty/unicode.h
deleted file mode 100644
index 08b6f4fb8d..0000000000
--- a/users/ridingqwerty/unicode.h
+++ /dev/null
@@ -1,295 +0,0 @@
-#pragma once
-#include "quantum.h"
-
-// clang-format off
-#define FOREACH_UNICODE(M) \
- M(UALP, 0x0391) /* Α */ \
- M(UBET, 0x0392) /* Β */ \
- M(UGAM, 0x0393) /* Γ */ \
- M(UDEL, 0x0394) /* Δ */ \
- M(UEPS, 0x0395) /* Ε */ \
- M(UZET, 0x0396) /* Ζ */ \
- M(UETA, 0x0397) /* Η */ \
- M(UTHE, 0x0398) /* Θ */ \
- M(UIOT, 0x0399) /* Ι */ \
- M(UKAP, 0x039A) /* Κ */ \
- M(ULAM, 0x039B) /* Λ */ \
- M(UMU, 0x039C) /* M */ \
- M(UNU, 0x039D) /* Ν */ \
- M(UXI, 0x039E) /* Ξ */ \
- M(UOMI, 0x039F) /* Ο */ \
- M(UPI, 0x03A0) /* Π */ \
- M(URHO, 0x03A1) /* Ρ */ \
- M(USIG, 0x03A3) /* Σ */ \
- M(UTAU, 0x03A4) /* Τ */ \
- M(UUPS, 0x03A5) /* Υ */ \
- M(UPHI, 0x03A6) /* Φ */ \
- M(UCHI, 0x03A7) /* Χ */ \
- M(UPSI, 0x03A8) /* Ψ */ \
- M(UOME, 0x03A9) /* Ω */ \
- M(LALP, 0x03B1) /* α */ \
- M(LBET, 0x03B2) /* β */ \
- M(LGAM, 0x03B3) /* γ */ \
- M(LDEL, 0x03B4) /* δ */ \
- M(LEPS, 0x03B5) /* ε */ \
- M(LZET, 0x03B6) /* ζ */ \
- M(LETA, 0x03B7) /* η */ \
- M(LTHE, 0x03B8) /* θ */ \
- M(LIOT, 0x03B9) /* ι */ \
- M(LKAP, 0x03BA) /* κ */ \
- M(LLAM, 0x03BB) /* λ */ \
- M(LMU, 0x03BC) /* μ */ \
- M(LNU, 0x03BD) /* ν */ \
- M(LXI, 0x03BE) /* ξ */ \
- M(LOMI, 0x03BF) /* ο */ \
- M(LPI, 0x03C0) /* π */ \
- M(LRHO, 0x03C1) /* ρ */ \
- M(LSIG, 0x03C3) /* σ */ \
- M(LTAU, 0x03C4) /* τ */ \
- M(LUPS, 0x03C5) /* υ */ \
- M(LPHI, 0x03C6) /* φ */ \
- M(LCHI, 0x03C7) /* χ */ \
- M(LPSI, 0x03C8) /* ψ */ \
- M(LOME, 0x03C9) /* ω */ \
- M(UAH, 0x0410) /* А */ \
- M(UBE, 0x0411) /* Б */ \
- M(UVE, 0x0412) /* В */ \
- M(UGHE, 0x0413) /* Г */ \
- M(UDE, 0x0414) /* Д */ \
- M(UIE, 0x0415) /* Е */ \
- M(UIO, 0x0401) /* Ё */ \
- M(UZHE, 0x0416) /* Ж */ \
- M(UZE, 0x0417) /* З */ \
- M(UIH, 0x0418) /* И */ \
- M(USIH, 0x0419) /* Й */ \
- M(UKA, 0x041A) /* К */ \
- M(UEL, 0x041B) /* Л */ \
- M(UEM, 0x041C) /* М */ \
- M(UEN, 0x041D) /* Н */ \
- M(UOH, 0x041E) /* О */ \
- M(UPE, 0x041F) /* П */ \
- M(UER, 0x0420) /* Р */ \
- M(UES, 0x0421) /* С */ \
- M(UTE, 0x0422) /* Т */ \
- M(UUU, 0x0423) /* У */ \
- M(UEF, 0x0424) /* Ф */ \
- M(UHA, 0x0425) /* Х */ \
- M(UTSE, 0x0426) /* Ц */ \
- M(UCHE, 0x0427) /* Ч */ \
- M(USHA, 0x0428) /* Ш */ \
- M(USCHA, 0x0429) /* Щ */ \
- M(UHARD, 0x042A) /* Ъ */ \
- M(UYERU, 0x042B) /* Ы */ \
- M(USOFT, 0x042C) /* Ь */ \
- M(UEH, 0x042D) /* Э */ \
- M(UYU, 0x042E) /* Ю */ \
- M(UYA, 0x042F) /* Я */ \
- M(LAH, 0x0430) /* а */ \
- M(LBE, 0x0431) /* б */ \
- M(LVE, 0x0432) /* в */ \
- M(LGHE, 0x0433) /* г */ \
- M(LDE, 0x0434) /* д */ \
- M(LIE, 0x0435) /* е */ \
- M(LIO, 0x0451) /* ё */ \
- M(LZHE, 0x0436) /* ж */ \
- M(LZE, 0x0437) /* з */ \
- M(LIH, 0x0438) /* и */ \
- M(LSIH, 0x0439) /* й */ \
- M(LKA, 0x043A) /* к */ \
- M(LEL, 0x043B) /* л */ \
- M(LEM, 0x043C) /* м */ \
- M(LEN, 0x043D) /* н */ \
- M(LOH, 0x043E) /* о */ \
- M(LPE, 0x043F) /* п */ \
- M(LER, 0x0440) /* р */ \
- M(LES, 0x0441) /* с */ \
- M(LTE, 0x0442) /* т */ \
- M(LUU, 0x0443) /* у */ \
- M(LEF, 0x0444) /* ф */ \
- M(LHA, 0x0445) /* х */ \
- M(LTSE, 0x0446) /* ц */ \
- M(LCHE, 0x0447) /* ч */ \
- M(LSHA, 0x0448) /* ш */ \
- M(LSCHA, 0x0449) /* щ */ \
- M(LHARD, 0x044A) /* ъ */ \
- M(LYERU, 0x044B) /* ы */ \
- M(LSOFT, 0x044C) /* ь */ \
- M(LEH, 0x044D) /* э */ \
- M(LYU, 0x044E) /* ю */ \
- M(LYA, 0x044F) /* я */ \
- M(FE, 0x16A0) /* ᚠ */ \
- M(UR, 0x16A2) /* ᚢ */ \
- M(THURS, 0x16A6) /* ᚦ */ \
- M(ANSUZ, 0x16A8) /* ᚨ */ \
- M(RAIDO, 0x16B1) /* ᚱ */ \
- M(KAUNA, 0x16B2) /* ᚲ */ \
- M(GEBO, 0x16B7) /* ᚷ */ \
- M(WUNJO, 0x16B9) /* ᚹ */ \
- M(HAGLZ, 0x16BA) /* ᚺ */ \
- M(NAUDZ, 0x16BE) /* ᚾ */ \
- M(ISAZ, 0x16C1) /* ᛁ */ \
- M(JERAN, 0x16C3) /* ᛃ */ \
- M(IWAZ, 0x16C7) /* ᛇ */ \
- M(PERTH, 0x16C8) /* ᛈ */ \
- M(ALGIZ, 0x16C9) /* ᛉ */ \
- M(SOWIL, 0x16CA) /* ᛊ */ \
- M(TIWAZ, 0x16CF) /* ᛏ */ \
- M(BEORC, 0x16D2) /* ᛒ */ \
- M(EHWAZ, 0x16D6) /* ᛖ */ \
- M(MANNZ, 0x16D7) /* ᛗ */ \
- M(LAUKZ, 0x16DA) /* ᛚ */ \
- M(INGWZ, 0x16DC) /* ᛜ */ \
- M(DAGAZ, 0x16DE) /* ᛞ */ \
- M(ETHEL, 0x16DF) /* ᛟ */ \
- M(JRO, 0x308D) /* ろ */ \
- M(JWA, 0x308F) /* わ */ \
- M(JNU, 0x306C) /* ぬ */ \
- M(JHU, 0x3075) /* ふ */ \
- M(JA, 0x3042) /* あ */ \
- M(JU, 0x3046) /* う */ \
- M(JE, 0x3048) /* え */ \
- M(JO, 0x304A) /* お */ \
- M(JYA, 0x3084) /* や */ \
- M(JYU, 0x3086) /* ゆ */ \
- M(JYO, 0x3088) /* よ */ \
- M(JHO, 0x307B) /* ほ */ \
- M(JHE, 0x3078) /* へ */ \
- M(JMU, 0x3080) /* む */ \
- M(JTA, 0x305F) /* た */ \
- M(JTE, 0x3066) /* て */ \
- M(JI, 0x3044) /* い */ \
- M(JSU, 0x3059) /* す */ \
- M(JKA, 0x3095) /* ゕ */ \
- M(JN, 0x3093) /* ん */ \
- M(JNA, 0x306A) /* な */ \
- M(JNI, 0x306B) /* に */ \
- M(JRA, 0x3089) /* ら */ \
- M(JSE, 0x305B) /* せ */ \
- M(JVV, 0x309B) /* ゛*/ \
- M(JSV, 0x309C) /* ゜*/ \
- M(JTI, 0x3061) /* ち */ \
- M(JTO, 0x3068) /* と */ \
- M(JSI, 0x3057) /* し */ \
- M(JHA, 0x306F) /* は */ \
- M(JKI, 0x304D) /* き */ \
- M(JKU, 0x304F) /* く */ \
- M(JMA, 0x307E) /* ま */ \
- M(JNO, 0x306E) /* の */ \
- M(JRI, 0x308A) /* り */ \
- M(JRE, 0x308C) /* れ */ \
- M(JKE, 0x3051) /* け */ \
- M(JTU, 0x3064) /* つ */ \
- M(JSA, 0x3055) /* さ */ \
- M(JSO, 0x305D) /* そ */ \
- M(JHI, 0x3072) /* ひ */ \
- M(JKO, 0x3053) /* こ */ \
- M(JMI, 0x307F) /* み */ \
- M(JMO, 0x3082) /* も */ \
- M(JNE, 0x306D) /* ね */ \
- M(JRU, 0x308B) /* る */ \
- M(JME, 0x3081) /* め */ \
- M(ALEF, 0x05D0) /* א */ \
- M(BET, 0x05D1) /* ב */ \
- M(GIMEL, 0x05D2) /* ג */ \
- M(DALET, 0x05D3) /* ד */ \
- M(HE, 0x05D4) /* ה */ \
- M(VAV, 0x05D5) /* ו */ \
- M(ZAYIN, 0x05D6) /* ז */ \
- M(CHET, 0x05D7) /* ח */ \
- M(TET, 0x05D8) /* ט */ \
- M(YOD, 0x05D9) /* י */ \
- M(KAF, 0x05DB) /* כ */ \
- M(LAMED, 0x05DC) /* ל */ \
- M(MEM, 0x05DE) /* מ */ \
- M(NUN, 0x05E0) /* נ */ \
- M(SAMCH, 0x05E1) /* ס */ \
- M(AYIN, 0x05E2) /* ע */ \
- M(PE, 0x05E4) /* פ */ \
- M(TZADI, 0x05E6) /* צ */ \
- M(KOF, 0x05E7) /* ק */ \
- M(RESH, 0x05E8) /* ר */ \
- M(SHIN, 0x05E9) /* ש */ \
- M(TAV, 0x05EA) /* ת */
-// clang-format on
-
-#define UC_KEYCODE(name, code) name = UC(code), // LALP = UC(0x03B1),
-
-#define UCM_NAME(name, code) UCM_ ## name, // UCM_LALP,
-#define UCM_ENTRY(name, code) [UCM_ ## name] = code, // [UCM_LALP] = 0x03B1,
-#define UCM_KEYCODE(name, code) name = UM(UCM_ ## name), // LALP = UM(UCM_LALP)
-
-#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
-
-
-#define ALPHA UP(LALP, UALP)
-#define BETA UP(LBET, UBET)
-#define GAMMA UP(LGAM, UGAM)
-#define DELTA UP(LDEL, UDEL)
-#define EPSLN UP(LEPS, UEPS)
-#define ZETA UP(LZET, UZET)
-#define ETA UP(LETA, UETA)
-#define THETA UP(LTHE, UTHE)
-#define IOTA UP(LIOT, UIOT)
-#define KAPPA UP(LKAP, UKAP)
-#define LAMBD UP(LLAM, ULAM)
-#define GMU UP(LMU, UMU)
-#define NU UP(LNU, UNU)
-#define XI UP(LXI, UXI)
-#define OMCRN UP(LOMI, UOMI)
-#define PI UP(LPI, UPI)
-#define RHO UP(LRHO, URHO)
-#define SIGMA UP(LSIG, USIG)
-#define TAU UP(LTAU, UTAU)
-#define UPSLN UP(LUPS, UUPS)
-#define PHI UP(LPHI, UPHI)
-#define CHI UP(LCHI, UCHI)
-#define PSI UP(LPSI, UPSI)
-#define OMEGA UP(LOME, UOME)
-
-#define AH UP(LAH, UAH)
-#define BE UP(LBE, UBE)
-#define VE UP(LVE, UVE)
-#define GHE UP(LGHE, UGHE)
-#define DE UP(LDE, UDE)
-#define IE UP(LIE, UIE)
-#define IO UP(LIO, UIO)
-#define ZHE UP(LZHE, UZHE)
-#define ZE UP(LZE, UZE)
-#define IH UP(LIH, UIH)
-#define SIH UP(LSIH, USIH)
-#define KA UP(LKA, UKA)
-#define EL UP(LEL, UEL)
-#define EM UP(LEM, UEM)
-#define EN UP(LEN, UEN)
-#define OH UP(LOH, UOH)
-#define PE UP(LPE, UPE)
-#define ER UP(LER, UER)
-#define ES UP(LES, UES)
-#define TE UP(LTE, UTE)
-#define UU UP(LUU, UUU)
-#define EF UP(LEF, UEF)
-#define HA UP(LHA, UHA)
-#define TSE UP(LTSE, UTSE)
-#define CHE UP(LCHE, UCHE)
-#define SHA UP(LSHA, USHA)
-#define SCHA UP(LSCHA, USCHA)
-#define HARD UP(LHARD, UHARD)
-#define YERU UP(LYERU, UYERU)
-#define SOFT UP(LSOFT, USOFT)
-#define EH UP(LEH, UEH)
-#define YU UP(LYU, UYU)
-#define YA UP(LYA, UYA)
diff --git a/users/ridingqwerty/wrappers.h b/users/ridingqwerty/wrappers.h
deleted file mode 100644
index dbfd8ea050..0000000000
--- a/users/ridingqwerty/wrappers.h
+++ /dev/null
@@ -1,156 +0,0 @@
-#pragma once
-#include "ridingqwerty.h"
-
-// clang-format off
-#define LAYOUT_atreus_wrapper(...) LAYOUT_atreus(__VA_ARGS__)
-#define LAYOUT_minorca_wrapper(...) LAYOUT_minorca(__VA_ARGS__)
-
-#define ___________VI_ARROWS______________ KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
-
-// 1......__2......__3......__4......__5...... 1......__2......__3......__4......__5......
-#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 ________________ATREUS_L1__________________ ________________QWERTY_L1__________________
-#define ________________ATREUS_L2__________________ ED(A), KC_S, KC_D, KC_F, KC_G
-#define ________________ATREUS_L3__________________ LS(Z), KC_X, KC_C, KC_V, KC_B
-
-#define ________________ATREUS_R1__________________ ________________QWERTY_R1__________________
-#define ________________ATREUS_R2__________________ KC_H, KC_J, KC_K, KC_L, NM(SCLN)
-#define ________________ATREUS_R3__________________ KC_N, KC_M, KC_COMM, FK(DOT), RS(SLSH)
-
-#define ________________FNHOMEROW_L2_______________ C(KC_A), G(KC_S), A(KC_D), S(KC_F), KC_G
-#define ________________FNHOMEROW_R2_______________ KC_H, S(KC_J), A(KC_K), G(KC_L), C(SCLN)
-
-#define ____THUMBS_R4___ ED(ESC), DB(TAB)
-#define _____BLANK_R4___ _______, _______
-#define ________________ _______, _______
-
-
-#define ________________COLEMAK_L1_________________ KC_Q, KC_W, KC_F, KC_P, KC_G
-#define ________________COLEMAK_L2_________________ ED(A), KC_R, KC_S, KC_T, KC_D
-#define ________________COLEMAK_L3_________________ LS(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, NM(O)
-#define ________________COLEMAK_R3_________________ KC_K, KC_M, KC_COMM, FK(DOT), RS(SLSH)
-
-
-#define ________________DVORAK_L1__________________ KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y
-#define ________________DVORAK_L2__________________ ED(A), KC_O, KC_E, KC_U, KC_I
-#define ________________DVORAK_L3__________________ LS(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, NM(S)
-#define ________________DVORAK_R3__________________ KC_B, KC_M, KC_W, FK(V), RS(Z)
-
-#define ________________BOTTOM_L4__________________ LC(ESC), LG(TAB), LA(LBRC), LS(RBRC), NM(BSPC)
-#define ________________BOTTOM_R4__________________ SM(SPC), RS(MINS), RA(EQL), RG_QUOT, RC(ENT)
-
-
-#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 ________________NUMPAD_R1__________________ _______, KC_7, KC_8, KC_9, KC_0
-#define ________________NUMPAD_R2__________________ _______, KC_4, KC_5, KC_6, _______
-#define ________________NUMPAD_R3__________________ _______, KC_1, KC_2, KC_3, KC_BSLS
-#define ________________NUMPAD_R4__________________ KC_0, KC_0, KC_DOT, KC_3, _______
-
-
-#define ________________SYMROW_L1__________________ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC
-#define ________________SYMROW_R1__________________ KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN
-
-
-#define ________________ _______, _______
-#define _________________________ _______, _______, _______
-#define __________________________________ _______, _______, _______, _______
-#define ___________________________________________ _______, _______, _______, _______, _______
-#define ___________________________________________ _______, _______, _______, _______, _______
-#define ___________________________________________ _______, _______, _______, _______, _______
-#define ________________BLANK______________________ ___________________________________________
-#define ________________BLOCK______________________ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
-#define XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ________________BLOCK______________________
-
-#define ________________FKEYROW_L1_________________ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5
-#define ________________FKEYROW_R1_________________ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10
-
-#define ________________EDITOR_L1__________________ KC_GRV, _______, KC_END, _______, KC_F5
-#define ________________EDITOR_L2__________________ KC_HOME, _______, KC_DEL, _______, _______
-#if defined(TAP_DANCE_ENABLE)
-#define ________________EDITOR_L3__________________ _______, KC_VOLD, KC_VOLU, CCCV, TD_BRC
-#else
-#define ________________EDITOR_L3__________________ _______, KC_VOLD, KC_VOLU, CCCV, _______
-#endif
-
-#define ________________EDITOR_R1__________________ _______, _______, KC_INS, _______, KC_PGUP
-#define ________________EDITOR_R2__________________ ___________VI_ARROWS______________, _______
-#define ________________EDITOR_R3__________________ KC_PGDN, _______, _______, _______, KC_BSLS
-
-
-#define ________________DEBUG_L1___________________ DB_TOGG, _______, _______, RNGWORD, SARCASM
-#define ________________DEBUG_L2___________________ GREEK, RUSSIAN, HIRAGAN, RUNES, _______
-#define ________________DEBUG_L3___________________ _______, _______, _______, VERSION, _______
-
-#define ________________DEBUG_R1___________________ VPRWAVE, STRAYA, _______, TESTING, _______
-#define ________________DEBUG_R2___________________ _______, _______, EE_CLR, QK_BOOT, MAKE
-#define ________________DEBUG_R3___________________ QWERTY, DVORAK, COLEMAK, _______, _______
-
-
-#define ________________SECRET_L1__________________ _______, _______, _______, SECRET0, SECRET1
-#define ________________SECRET_L2__________________ SECRET4, SECRET8, _______, _______, _______
-#define ________________SECRET_L3__________________ SECRET7, _______, SECRET2, SECRET5, _______
-
-#define ________________SECRET_R1__________________ _______, _______, _______, _______, _______
-#define ________________SECRET_R2__________________ _______, _______, _______, SECRET6, _______
-#define ________________SECRET_R3__________________ _______, SECRET3, _______, _______, _______
-
-
-#if defined(UNICODEMAP_ENABLE)
-// Greek
-#define ________________GREEK_L1___________________ THETA, OMEGA, EPSLN, RHO, TAU
-#define ________________GREEK_L2___________________ ALPHA, SIGMA, DELTA, PHI, GAMMA
-#define ________________GREEK_L3___________________ ZETA, XI, CHI, PHI, BETA
-#define ________________GREEK_R1___________________ UPSLN, UPSLN, IOTA, OMCRN, PI
-#define ________________GREEK_R2___________________ ETA, PSI, KAPPA, LAMBD, NM(SCLN)
-#define ________________GREEK_R3___________________ NU, GMU, KC_COMM, FK(DOT), RS(SLSH)
-
-// Elder Futhark
-#define ________________FTHRK_L1___________________ INGWZ, WUNJO, EHWAZ, RAIDO, TIWAZ
-#define ________________FTHRK_L2___________________ ANSUZ, SOWIL, DAGAZ, FE, GEBO
-#define ________________FTHRK_L3___________________ ALGIZ, THURS, KAUNA, WUNJO, BEORC
-#define ________________FTHRK_R1___________________ IWAZ, UR, ISAZ, ETHEL, PERTH
-#define ________________FTHRK_R2___________________ HAGLZ, JERAN, KAUNA, LAUKZ, KC_SCLN
-#define ________________FTHRK_R3___________________ NAUDZ, MANNZ, KC_COMM, KC_DOT, KC_SLSH
-
-// Russian Cyrillic
-#define ________________CYRLC_L1___________________ YA, SCHA, IE, ER, TE
-#define ________________CYRLC_L2___________________ AH, ES, DE, EF, GHE
-#define ________________CYRLC_L3___________________ ZE, HA, TSE, VE, BE
-#define ________________CYRLC_R1___________________ YERU, UU, IH, OH, PE
-#define ________________CYRLC_R2___________________ CHE, SIH, KA, EL, SOFT
-#define ________________CYRLC_R3___________________ EN, EM, YU, SCHA, EH
-#define ________________CYRLC_R4___________________ SM(SPC), IO, HARD, ZHE, RC(ENT)
-
-// Hiragana
-#define ________________JIS1_R1____________________ JTA, JTE, JI, JSU, JKA
-#define ________________JIS1_R2____________________ JTI, JTO, JSI, JHA, JKI
-#define ________________JIS1_R3____________________ JMI, JMO, KC_COMM, KC_DOT, MO(_HIRA2)
-#define ________________JIS1_L1____________________ JN, JNA, JNI, JRA, JSE
-#define ________________JIS1_L2____________________ JKU, JMA, JNO, JRI, JRE
-#define ________________JIS1_L3____________________ JTU, JSA, JSO, JHI, JKO
-
-#define ________________JIS2_R1____________________ JRO, JWA, JNU, JHU, JA
-#define ________________JIS2_R2____________________ JYO, JHO, JHE, JMU, JVV
-#define ________________JIS2_R3____________________ JRU, JME, KC_COMM, KC_DOT, _______
-#define ________________JIS2_L1____________________ JU, JE, JO, JYA, JYU
-#define ________________JIS2_L2____________________ JSV, JKE, JMI, JMO, JNE
-#define ________________JIS2_L3____________________ JTU, JSA, JSO, JHI, JKO
-
-#endif
-// clang-format on
diff --git a/users/rishka/rishka.c b/users/rishka/rishka.c
deleted file mode 100644
index c988072d63..0000000000
--- a/users/rishka/rishka.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "rishka.h"
diff --git a/users/rishka/rishka.h b/users/rishka/rishka.h
deleted file mode 100644
index 96915993dc..0000000000
--- a/users/rishka/rishka.h
+++ /dev/null
@@ -1,74 +0,0 @@
-#pragma once
-
-#if (!defined(LAYOUT) && defined(KEYMAP))
-# define LAYOUT KEYMAP
-#endif
-
-#undef MK_MOMENTARY_ACCEL
-#define MK_3_SPEED 1
-
-#define LAYOUT_ergodox_pretty_wrapper(...) LAYOUT_ergodox_pretty(__VA_ARGS__)
-#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
-#define LAYOUT_5x6_wrapper(...) LAYOUT_5x6(__VA_ARGS__)
-#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 MOUSE_L LSFT(KC_WH_D)
-#define MOUSE_R LSFT(KC_WH_U)
-#define OSX_LOCK LCTL(LGUI(KC_Q))
-
-// layout parts for easy reuse between keyboard keymaps
-// ,-----+-----+-----+-----+-----, ,-----+-----+-----+-----+-----,
-// | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 |
-// ,-----+-----+-----+-----+-----, ,-----+-----+-----+-----+-----,
-#define ________________NUMBERS_L__________________ KC_1, KC_2, KC_3, KC_4, KC_5
-#define ________________NUMBERS_R__________________ KC_6, KC_7, KC_8, KC_9, KC_0
-
-// ,-----+-----+-----+-----+-----, ,-----+-----+-----+-----+-----,
-// | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 |
-// ,-----+-----+-----+-----+-----, ,-----+-----+-----+-----+-----,
-#define ______________________F_L__________________ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5
-#define ______________________F_R__________________ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10
-
-// ,-----+-----+-----+-----+-----, ,-----+-----+-----+-----+-----,
-// | Q | W | E | R | T | | Y | U | I | O | P |
-// ,-----+-----+-----x-----x-----, ,-----x-----x-----+-----+-----,
-// | A | S | D | F | G | | H | J | K | L | ; |
-// ,-----+-----+-----x-----x-----, ,-----x-----x-----+-----+-----,
-// | Z | X | C | V | B | | N | M | , | . | / |
-// ,-----+-----+-----+-----+-----, ,-----+-----+-----+-----+-----,
-#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 _____________MOD_QWERTY_L2_________________ CTL_T(KC_A), SFT_T(KC_S), GUI_T(KC_D), ALT_T(KC_F), KC_G
-#define _____________MOD_QWERTY_R2_________________ KC_H , ALT_T(KC_J), GUI_T(KC_K), SFT_T(KC_L), CTL_T(KC_SCLN)
-
-// ,-----+-----+-----+-----+-----, ,-----+-----+-----+-----+-----,
-// | ! | @ | { | } | _ | | \ | 7 | 8 | 9 | |
-// ,-----+-----+-----x-----x-----, ,-----x-----x-----+-----+-----,
-// | # | $ | ( | ) | - | | = | 4 | 5 | 6 | | |
-// ,-----+-----+-----x-----x-----, ,-----x-----x-----+-----+-----,
-// | % | ^ | [ | ] | + | | * | 1 | 2 | 3 | / |
-// ,-----+-----+-----+-----+-----, ,-----+-----+-----+-----+-----,
-#define _________________SYMBOL_L1_________________ KC_EXLM, KC_AT , KC_LCBR, KC_RCBR, KC_UNDS
-#define _________________SYMBOL_L2_________________ KC_HASH, KC_DLR , KC_LPRN, KC_RPRN, KC_MINS
-#define _________________SYMBOL_L3_________________ KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_PLUS
-
-#define _________________SYMBOL_R1_________________ KC_BSLS, KC_P7, KC_P8 , KC_P9, KC_PAST
-#define _________________SYMBOL_R2_________________ KC_EQL , KC_P4, KC_P5, KC_P6, KC_PPLS
-#define _________________SYMBOL_R3_________________ KC_ASTR, KC_P1, KC_P2, KC_P3, KC_PMNS
diff --git a/users/rishka/rules.mk b/users/rishka/rules.mk
deleted file mode 100644
index a0b8e58470..0000000000
--- a/users/rishka/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-SRC += rishka.c
diff --git a/users/rmeli/.gitignore b/users/rmeli/.gitignore
deleted file mode 100644
index 799fc4adc1..0000000000
--- a/users/rmeli/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-# Ignore symlinks to keymaps
-km_* \ No newline at end of file
diff --git a/users/rmeli/config.h b/users/rmeli/config.h
deleted file mode 100644
index c51093ab38..0000000000
--- a/users/rmeli/config.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-Copyright 2021-2022 Rocco Meli <@RMeli>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-
-#define TAPPING_TERM 200
-
-#ifdef UNICODEMAP_ENABLE
-# define UNICODE_SELECTED_MODES UNICODE_MODE_MACOS, UNICODE_MODE_LINUX
-#endif
-
-#ifdef AUTO_SHIFT_ENABLED
-# define AUTO_SHIFT_REPEAT
-#endif
-
-#ifdef CAPS_WORD_ENABLE
-# define BOTH_SHIFTS_TURNS_ON_CAPS_WORD
-//#define DOUBLE_TAP_SHIFT_TURNS_ON_CAPS_WORD
-#endif
-
-#ifdef RGBLIGHT_ENABLE
-# define RGBLIGHT_LIMIT_VAL 120
-# define RGBLIGHT_HUE_STEP 10
-# define RGBLIGHT_SAT_STEP 17
-# define RGBLIGHT_VAL_STEP 17
-#endif
diff --git a/users/rmeli/keyrecords/tap_dances.c b/users/rmeli/keyrecords/tap_dances.c
deleted file mode 100644
index 4e7ac31962..0000000000
--- a/users/rmeli/keyrecords/tap_dances.c
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
-Copyright 2021-2022 Rocco Meli <@RMeli>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "keyrecords/tap_dances.h"
-
-// + ---------- +
-// + TAP DANCES |
-// + ---------- +
-
-// Tap dances definitions
-// Need to needs to be defined in a .c file to avoid a linker error (multiple definitions)
-tap_dance_action_t tap_dance_actions[] = {
- [TD_LSPO_CAPS] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, LSPO_CAPS_finished, LSPO_CAPS_reset),
- [TD_RSPC_CAPS] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, RSPC_CAPS_finished, RSPC_CAPS_reset),
- [TD_ESC_DEL] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_DEL),
-};
-
-// + ------ +
-// + DANCES |
-// + ------ +
-
-// https://github.com/qmk/qmk_firmware/blob/9294258c02d3e025e01935a06c4d9f1997535bda/users/gordon/gordon.c#L112-L135
-td_state_t hold_cur_dance(tap_dance_state_t *state) {
- if (state->count == 1) {
- if (state->interrupted) {
- if (!state->pressed)
- return TD_SINGLE_TAP;
- else
- return TD_SINGLE_HOLD;
- } else {
- if (!state->pressed)
- return TD_SINGLE_TAP;
- else
- return TD_SINGLE_HOLD;
- }
- } else if (state->count == 2) {
- if (state->pressed)
- return TD_NONE;
- else
- return TD_DOUBLE_TAP;
- } else
- return TD_NONE;
-}
-
-// + ------------------------------------------------ +
-// + LEFT SHIFT PARENTHESIS OPEN (LSPO) AND CAPS LOCK |
-// + ------------------------------------------------ +
-
-// Create an instance of 'td_tap_t' for the 'LSPO_CAPS' tap dance.
-static td_tap_t LSPO_CAPS_state = {.is_press_action = true, .state = TD_NONE};
-
-void LSPO_CAPS_finished(tap_dance_state_t *state, void *user_data) {
- LSPO_CAPS_state.state = hold_cur_dance(state);
- switch (LSPO_CAPS_state.state) {
- case TD_SINGLE_TAP:
- register_code16(KC_LPRN);
- break;
- case TD_SINGLE_HOLD:
- register_code16(KC_LSFT);
- break;
- case TD_DOUBLE_TAP:
- register_code16(KC_CAPS);
- break;
- case TD_NONE:
- break;
- }
-}
-
-void LSPO_CAPS_reset(tap_dance_state_t *state, void *user_data) {
- switch (LSPO_CAPS_state.state) {
- case TD_SINGLE_TAP:
- unregister_code16(KC_LPRN);
- break;
- case TD_SINGLE_HOLD:
- unregister_code16(KC_LSFT);
- break;
- case TD_DOUBLE_TAP:
- unregister_code16(KC_CAPS);
- break;
- case TD_NONE:
- break;
- }
- LSPO_CAPS_state.state = TD_NONE;
-}
-
-// + -------------------------------------------------- +
-// + RIGHT SHIFT PARENTHESIS CLOSE (RSPC) AND CAPS LOCK |
-// + -------------------------------------------------- +
-
-// Create an instance of 'td_tap_t' for the 'RSPC_CAPS' tap dance.
-static td_tap_t RSPC_CAPS_state = {.is_press_action = true, .state = TD_NONE};
-
-void RSPC_CAPS_finished(tap_dance_state_t *state, void *user_data) {
- RSPC_CAPS_state.state = hold_cur_dance(state);
- switch (RSPC_CAPS_state.state) {
- case TD_SINGLE_TAP:
- register_code16(KC_RPRN);
- break;
- case TD_SINGLE_HOLD:
- register_code16(KC_RSFT);
- break;
- case TD_DOUBLE_TAP:
- register_code16(KC_CAPS);
- break;
- case TD_NONE:
- break;
- }
-}
-
-void RSPC_CAPS_reset(tap_dance_state_t *state, void *user_data) {
- switch (RSPC_CAPS_state.state) {
- case TD_SINGLE_TAP:
- unregister_code16(KC_RPRN);
- break;
- case TD_SINGLE_HOLD:
- unregister_code16(KC_RSFT);
- break;
- case TD_DOUBLE_TAP:
- unregister_code16(KC_CAPS);
- break;
- case TD_NONE:
- break;
- }
- RSPC_CAPS_state.state = TD_NONE;
-}
diff --git a/users/rmeli/keyrecords/tap_dances.h b/users/rmeli/keyrecords/tap_dances.h
deleted file mode 100644
index 40866fe17f..0000000000
--- a/users/rmeli/keyrecords/tap_dances.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
-Copyright 2021-2022 Rocco Meli <@RMeli>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-
-#include QMK_KEYBOARD_H
-
-// https://beta.docs.qmk.fm/using-qmk/software-features/feature_tap_dance#example-4-quad-function-tap-dance-id-example-4
-
-// + ---------- +
-// + TAP DANCES |
-// + ---------- +
-
-// Tap dance enums
-enum {
- TD_LSPO_CAPS, // Tap once for (, hold once for LSFT, tap twice for CAPS
- TD_RSPC_CAPS, // Tap once for ), hold once for RSFT, tap twice for CAPS
- TD_ESC_DEL, // Tap once for KC_ESC, twice for KC_DEL
-};
-
-// Rename tap dances for keymap with shortcuts
-#define TD_LSPC TD(TD_LSPO_CAPS)
-#define TD_RSPC TD(TD_RSPC_CAPS)
-#define TD_ED TD(TD_ESC_DEL)
-
-// + ----------- +
-// + KEY PRESSES |
-// + ----------- +
-
-// Different types of key presses
-typedef enum {
- TD_NONE,
- TD_SINGLE_TAP,
- TD_SINGLE_HOLD,
- TD_DOUBLE_TAP,
-} td_state_t;
-
-// Key press state
-typedef struct {
- bool is_press_action;
- td_state_t state;
-} td_tap_t;
-
-// + --------- +
-// + FUNCTIONS |
-// + --------- +
-
-// Tap dance for fast modifiers; favors being held over being tapped.
-td_state_t hold_cur_dance(tap_dance_state_t *state);
-
-// Left Shift Parenthesis Open (LSPO) and Caps Lock (CAPS) on DOUBLE_TAP
-void LSPO_CAPS_finished(tap_dance_state_t *state, void *user_data);
-void LSPO_CAPS_reset(tap_dance_state_t *state, void *user_data);
-
-// Right Shift Parenthesis Close (RSPC) and Caps Lock (CAPS) on DOUBLE_TAP
-void RSPC_CAPS_finished(tap_dance_state_t *state, void *user_data);
-void RSPC_CAPS_reset(tap_dance_state_t *state, void *user_data);
diff --git a/users/rmeli/keyrecords/unicode.h b/users/rmeli/keyrecords/unicode.h
deleted file mode 100644
index 63c355415e..0000000000
--- a/users/rmeli/keyrecords/unicode.h
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
-Copyright 2021-2022 Rocco Meli <@RMeli>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-
-#include QMK_KEYBOARD_H
-
-// Needs to be active on the OS side as well
-// https://docs.qmk.fm/#/feature_unicode?id=input-modes
-
-enum unicode_names {
- aGRV,
- AGRV,
- aUML,
- AUML,
- eGRV,
- EGRV,
- eACT,
- EACT,
- iGRV,
- IGRV,
- iCIR,
- ICIR,
- oGRV,
- OGRV,
- oUML,
- OUML,
- uGRV,
- UGRV,
- uUML,
- UUML,
-};
-
-const uint32_t unicode_map[] PROGMEM = {
- // KC_A
- [aGRV] = 0x00E0, // à
- [AGRV] = 0x00C0, // À
- [aUML] = 0x00E4, // ä
- [AUML] = 0x00C4, // Ä
- // KC_E
- [eGRV] = 0x00E8, // è
- [EGRV] = 0x00C8, // È
- [eACT] = 0x00E9, // é
- [EACT] = 0x00C9, // É
- // KC_I
- [iGRV] = 0x00EC, // ì
- [IGRV] = 0x00CC, // Ì
- [iCIR] = 0x00EE, // î
- [ICIR] = 0x00CE, // Î
- // KC_O
- [oGRV] = 0x00F2, // ò
- [OGRV] = 0x00D2, // Ò
- [oUML] = 0x00F6, // ö
- [OUML] = 0x00D6, // Ö
- // KC_U
- [uGRV] = 0x00F9, // ù
- [UGRV] = 0x00D9, // Ù
- [uUML] = 0x00FC, // ü
- [UUML] = 0x00DC, // Ü
-};
-
-// Accents
-#define A_GRV UP(aGRV, AGRV)
-#define A_UML UP(aUML, AUML)
-#define E_GRV UP(eGRV, EGRV)
-#define E_ACT UP(eACT, EACT)
-#define I_GRV UP(iGRV, IGRV)
-#define I_CIR UP(iCIR, ICIR)
-#define O_GRV UP(oGRV, OGRV)
-#define O_UML UP(oUML, OUML)
-#define U_GRV UP(uGRV, UGRV)
-#define U_UML UP(uUML, UUML)
diff --git a/users/rmeli/keyrecords/wrappers.h b/users/rmeli/keyrecords/wrappers.h
deleted file mode 100644
index 3513fd0abb..0000000000
--- a/users/rmeli/keyrecords/wrappers.h
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
-Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
-Copyright 2020 @jola5
-Copyright 2021-2022 Rocco Meli <@RMeli>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-
-#ifdef UNICODEMAP_ENABLE
-# include "keyrecords/unicode.h"
-#endif
-
-// + ------------- +
-// + HOME ROW MODS |
-// + ------------- +
-
-// https://precondition.github.io/home-row-mods
-
-// Left, QWERTY
-#define HM_A LCTL_T(KC_A)
-#define HM_S LALT_T(KC_S)
-#define HM_D LGUI_T(KC_D)
-#define HM_F LSFT_T(KC_F)
-
-// Left, COLEMAK
-#define HMCMK_A LCTL_T(KC_A)
-#define HMCMK_R LALT_T(KC_R)
-#define HMCMK_S LGUI_T(KC_S)
-#define HMCMK_T LSFT_T(KC_T)
-
-// Right, QWERTY
-#define HM_J RSFT_T(KC_J)
-#define HM_K RGUI_T(KC_K)
-#define HM_L LALT_T(KC_L) // LALT, not RALT
-#define HM_SCLN RCTL_T(KC_SCLN)
-
-// Right, COLEMAK
-#define HMCMK_N RSFT_T(KC_N)
-#define HMCMK_E RGUI_T(KC_E)
-#define HMCMK_I LALT_T(KC_I) // LALT, not RALT
-#define HMCMK_O RCTL_T(KC_O)
-
-// clang-format off
-
-// + ------ +
-// + QWERTY |
-// + ------ +
-
-#define _________QWERTY_HRM_LEFT__________ HM_A, HM_S, HM_D, HM_F
-#define _________QWERTY_HRM_RIGHT_________ HM_J, HM_K, HM_L, HM_SCLN
-
-#define _______________QWERTY_L1_x5________________ KC_Q, KC_W, KC_E, KC_R, KC_T
-#ifdef HOME_ROW_MODS_ENABLED
-#define _______________QWERTY_L2_x5________________ _________QWERTY_HRM_LEFT__________, KC_G
-#else
-#define _______________QWERTY_L2_x5________________ KC_A, KC_S, KC_D, KC_F, KC_G
-#endif
-#define _______________QWERTY_L3_x5________________ KC_Z, KC_X, KC_C, KC_V, KC_B
-
-#define _______________QWERTY_R1_x5________________ KC_Y, KC_U, KC_I, KC_O, KC_P
-#ifdef HOME_ROW_MODS_ENABLED
-#define _______________QWERTY_R2_x5________________ KC_H, _________QWERTY_HRM_RIGHT_________
-#else
-#define _______________QWERTY_R2_x5________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN
-#endif
-#define _______________QWERTY_R3_x5________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH
-
-// + ------ +
-
-#define ___________________QWERTY_L1_x6_____________________ KC_TAB, _______________QWERTY_L1_x5________________
-#define ___________________QWERTY_L2_x6_____________________ TD_ED, _______________QWERTY_L2_x5________________
-#define ___________________QWERTY_L3_x6_____________________ TD_LSPC, _______________QWERTY_L3_x5________________
-#define ___________________QWERTY_R1_x6_____________________ _______________QWERTY_R1_x5________________, KC_BSPC
-#define ___________________QWERTY_R2_x6_____________________ _______________QWERTY_R2_x5________________, KC_QUOT
-#define ___________________QWERTY_R3_x6_____________________ _______________QWERTY_R3_x5________________, TD_RSPC
-
-// + -------------- +
-// + COLEMAK_MOD_DH |
-// + -------------- +
-
-#define _____COLEMAK_MOD_DH_HRM_LEFT______ HMCMK_A, HMCMK_R, HMCMK_S, HMCMK_T
-#define _____COLEMAK_MOD_DH_HMR_RIGHT_____ HMCMK_N, HMCMK_E, HMCMK_I, HMCMK_O
-
-#define ____________COLEMAK_MOD_DH_L1_x5___________ KC_Q, KC_W, KC_F, KC_P, KC_B
-#ifdef HOME_ROW_MODS_ENABLED
-#define ____________COLEMAK_MOD_DH_L2_x5___________ _____COLEMAK_MOD_DH_HRM_LEFT______, KC_G
-#else
-#define ____________COLEMAK_MOD_DH_L2_x5___________ KC_A, KC_R, KC_S, KC_T, KC_G
-#endif
-#define ____________COLEMAK_MOD_DH_L3_x5___________ KC_Z, KC_X, KC_C, KC_D, KC_V
-
-#define ____________COLEMAK_MOD_DH_R1_x5___________ KC_J, KC_L, KC_U, KC_Y, KC_SCLN
-#ifdef HOME_ROW_MODS_ENABLED
-#define ____________COLEMAK_MOD_DH_R2_x5___________ KC_M, _____COLEMAK_MOD_DH_HMR_RIGHT_____
-#else
-#define ____________COLEMAK_MOD_DH_R2_x5___________ KC_M, KC_N, KC_E, KC_I, KC_O
-#endif
-#define ____________COLEMAK_MOD_DH_R3_x5___________ KC_K, KC_H, KC_COMM, KC_DOT,KC_SLASH
-
-// + ------- +
-
-#define ________________COLEMAK_MOD_DH_L1_x6________________ KC_TAB, ____________COLEMAK_MOD_DH_L1_x5___________
-#define ________________COLEMAK_MOD_DH_L2_x6________________ TD_ED, ____________COLEMAK_MOD_DH_L2_x5___________
-#define ________________COLEMAK_MOD_DH_L3_x6________________ TD_LSPC, ____________COLEMAK_MOD_DH_L3_x5___________
-#define ________________COLEMAK_MOD_DH_R1_x6________________ ____________COLEMAK_MOD_DH_R1_x5___________, KC_BSPC
-#define ________________COLEMAK_MOD_DH_R2_x6________________ ____________COLEMAK_MOD_DH_R2_x5___________, KC_QUOT
-#define ________________COLEMAK_MOD_DH_R3_x6________________ ____________COLEMAK_MOD_DH_R3_x5___________, TD_RSPC
-
-// + --------------- +
-// + NUMBERS/SYMBOLS |
-// + --------------- +
-
-#define ______________NUMBER_LEFT_x5_______________ KC_1, KC_2, KC_3, KC_4, KC_5
-#define ______________NUMBER_RIGHT_x5______________ KC_6, KC_7, KC_8, KC_9, KC_0
-#define ___________________NUMBER_LEFT_x6___________________ KC_GRV, ______________NUMBER_LEFT_x5_______________
-#define ___________________NUMBER_RIGHT_x6__________________ ______________NUMBER_RIGHT_x5______________, KC_MINS
-
-#define ______________SYMBOL_LEFT_x5_______________ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC
-#define ______________SYMBOL_RIGHT_x5______________ KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN
-#define ___________________SYMBOL_LEFT_x6___________________ KC_GRV, ______________SYMBOL_LEFT_x5_______________
-#define ___________________SYMBOL_RIGHT_x6__________________ ______________SYMBOL_RIGHT_x5______________, KC_TILD
-
-#define ____________________SYMBOL_R2_x6____________________ KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_GRV
-#define ____________________SYMBOL_R3_x6____________________ KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, KC_TILD
-
-// + ------- +
-// + UNICODE |
-// + ------- +
-
-#ifdef UNICODEMAP_ENABLE
-#define ______________UNICODE_L2_x5________________ A_GRV, E_GRV, I_GRV, O_GRV, U_GRV
-#define ______________UNICODE_L3_x5________________ A_UML, E_ACT, I_CIR, O_UML, U_UML
-#endif
-
-// + ---- +
-// + FUNC |
-// + ---- +
-
-#define ______________FUNC_LEFT_5x_________________ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5
-#define ______________FUNC_RIGHT_5x________________ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10
-#define ____________________FUNC_LEFT_x6____________________ ______________FUNC_LEFT_5x_________________, KC_F6
-#define ____________________FUNC_RIGHT_x6___________________ KC_F7, ______________FUNC_RIGHT_5x________________
-
-// + ---- +
-// + MISC |
-// + ---- +
-
-#define _________________BLANK_5x__________________ _______, _______, _______, _______, _______
-#define ______________________BLANK_6x______________________ _________________BLANK_5x__________________, _______
-
-#define _________________NONE_5x___________________ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
-#define ______________________NONE_6x_______________________ _________________NONE_5x___________________, XXXXXXX
-
-#define ________________NAV_R2_x5__________________ XXXXXXX, XXXXXXX, KC_UP, XXXXXXX, KC_PGUP
-#define ________________NAV_R3_x5__________________ XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN
-#define ____________NAV_VIM_x4____________ KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT
-
-#define _______________CONFIG_R1_x5________________ UC_NEXT, AS_UP, NK_ON, XXXXXXX, XXXXXXX
-#define _______________CONFIG_R2_x5________________ XXXXXXX, AS_TOGG, NK_TOGG, CG_TOGG, XXXXXXX
-#define _______________CONFIG_R3_x5________________ UC_PREV, AS_DOWN, NK_OFF, CG_NORM, XXXXXXX
-
-#define ________________RGB_L2_x5__________________ RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI
-#define ________________RGB_L3_x5__________________ RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD
-
-// clang-format on
diff --git a/users/rmeli/oled/oled.c b/users/rmeli/oled/oled.c
deleted file mode 100644
index 27c1e9c600..0000000000
--- a/users/rmeli/oled/oled.c
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
-Copyright 2021-2022 Rocco Meli <@RMeli>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "oled/oled.h"
-
-void oled_render_rocco(void) {
- // clang-format off
- static const char PROGMEM rocco[] = {
- // 'rocco', 128x32px
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf8, 0xf8, 0xf8, 0x18,
- 0x18, 0x18, 0x18, 0x18, 0x38, 0x38, 0x78, 0xf0, 0xe0, 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, 0xff, 0xff, 0xff, 0xff, 0x80,
- 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, 0xe0, 0xff, 0x7f, 0x3f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x80, 0xe0, 0xf0, 0x78, 0x38, 0x1c, 0x1c, 0x1c, 0x0c, 0x1c, 0x1c, 0x1c, 0x38, 0xf8, 0xf0,
- 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xf0, 0x78, 0x38, 0x1c, 0x1c, 0x1c,
- 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xf8, 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe0,
- 0xf0, 0xf0, 0x38, 0x3c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xf8, 0xf8, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xf0, 0xf0, 0x38, 0x38, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
- 0x38, 0x78, 0xf0, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x03,
- 0x03, 0x03, 0x03, 0x03, 0x0f, 0x3f, 0xff, 0xf8, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x18, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
- 0xff, 0xff, 0x18, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xff, 0xff, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
- 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x81, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x1f, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1f, 0x1f, 0x1c, 0x10, 0x00, 0x00, 0x00,
- 0x00, 0x01, 0x03, 0x07, 0x0f, 0x1e, 0x1c, 0x18, 0x18, 0x38, 0x18, 0x18, 0x1c, 0x1c, 0x0f, 0x07,
- 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0f, 0x0f, 0x1e, 0x1c, 0x1c, 0x1c,
- 0x38, 0x38, 0x18, 0x1c, 0x1c, 0x1c, 0x0e, 0x0e, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
- 0x07, 0x0f, 0x0e, 0x1e, 0x1c, 0x1c, 0x18, 0x38, 0x18, 0x1c, 0x1c, 0x1c, 0x1c, 0x0e, 0x0e, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0f, 0x0e, 0x1c, 0x1c, 0x18, 0x18, 0x18, 0x18, 0x18,
- 0x1c, 0x0e, 0x0f, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- };
- // clang-format on
-
- oled_write_raw_P(rocco, sizeof(rocco));
-}
-
-void oled_render_meli(void) {
- // clang-format off
- static const char PROGMEM meli[] = {
- // 'meli', 128x32px
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xf8, 0xf8, 0xf8, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xc0, 0xf0, 0xf8, 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, 0x18, 0x18, 0x18, 0x38, 0xf8, 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x30, 0x78, 0x78, 0x78, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xff, 0xff, 0x01, 0x07, 0x1f, 0x3f, 0xfc, 0xf8, 0xf0, 0xf8,
- 0x7e, 0x1f, 0x07, 0x03, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xf0, 0xf0,
- 0x38, 0x18, 0x1c, 0x1c, 0x1c, 0x0c, 0x1c, 0x1c, 0x1c, 0x38, 0xf8, 0xf0, 0xc0, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
- 0x1c, 0xfc, 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, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x8c,
- 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0f,
- 0x0e, 0x1c, 0x1c, 0x18, 0x18, 0x38, 0x18, 0x18, 0x1c, 0x1c, 0x0c, 0x0e, 0x06, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x1f, 0x1c, 0x18, 0x38, 0x38, 0x18,
- 0x1c, 0x1c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
- 0x18, 0x1f, 0x1f, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- };
- // clang-format on
-
- oled_write_raw_P(meli, sizeof(meli));
-}
diff --git a/users/rmeli/oled/oled.h b/users/rmeli/oled/oled.h
deleted file mode 100644
index b91fe2d76b..0000000000
--- a/users/rmeli/oled/oled.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
-Copyright 2021-2022 Rocco Meli <@RMeli>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-#include QMK_KEYBOARD_H
-
-// + --------- +
-// + RENDERERS |
-// + --------- +
-
-void oled_render_rocco(void);
-void oled_render_meli(void);
diff --git a/users/rmeli/readme.md b/users/rmeli/readme.md
deleted file mode 100644
index ed5561dea7..0000000000
--- a/users/rmeli/readme.md
+++ /dev/null
@@ -1,14 +0,0 @@
-Copyright 2022 Rocco Meli @RMeli
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>. \ No newline at end of file
diff --git a/users/rmeli/rmeli.h b/users/rmeli/rmeli.h
deleted file mode 100644
index d3533db7c3..0000000000
--- a/users/rmeli/rmeli.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
-Copyright 2021-2022 Rocco Meli <@RMeli>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-
-#include "keyrecords/wrappers.h"
-
-#ifdef UNICODEMAP_ENABLE
-# include "keyrecords/unicode.h"
-#endif
-
-#ifdef OLED_ENABLE
-# include "oled/oled.h"
-#endif
-
-#ifdef TAP_DANCE_ENABLE
-# include "keyrecords/tap_dances.h"
-#endif
diff --git a/users/rmeli/rules.mk b/users/rmeli/rules.mk
deleted file mode 100644
index db68d6326c..0000000000
--- a/users/rmeli/rules.mk
+++ /dev/null
@@ -1,26 +0,0 @@
-# https://github.com/qmk/qmk_firmware/blob/develop/docs/squeezing_avr.md
-CONSOLE_ENABLE = no
-COMMAND_ENABLE = no # Turned off for Space Cadet Shift and Caps Word
-MOUSEKEY_ENABLE = no
-SPACE_CADET_ENABLE = no # Implemented with tap dance
-GRAVE_ESC_ENABLE = no
-MUSIC_ENABLE = no
-CAPS_WORD_ENABLE = yes
-HOME_ROW_MODS_ENABLE = yes
-
-# VIA only support 4 layers by default
-# Use "#define DYNAMIC_KEYMAP_LAYER_COUNT" in config.h to change the limit
-VIA_ENABLE = no
-
-ifeq ($(strip $(OLED_ENABLE)), yes)
- SRC += $(USER_PATH)/oled/oled.c
-endif
-
-ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
- SRC += $(USER_PATH)/keyrecords/tap_dances.c
-endif
-
-ifeq ($(strip $(HOME_ROW_MODS_ENABLE)), yes)
- # Define custom variable
- OPT_DEFS += -DHOME_ROW_MODS_ENABLED
-endif \ No newline at end of file
diff --git a/users/rmw/encoder_functions.c b/users/rmw/encoder_functions.c
deleted file mode 100644
index 39032d0eba..0000000000
--- a/users/rmw/encoder_functions.c
+++ /dev/null
@@ -1,53 +0,0 @@
-// Encoder functions to mix and match!
-
-#include "encoder_functions.h"
-
-void enc_move_words(bool cw){ // Move whole words. Hold shift to select while moving.
- if (cw) {
- tap_code16(A(KC_RGHT));
- } else {
- tap_code16(A(KC_LEFT));
- }
-}
-void enc_history_scrubbing(bool cw){ // Undo/Redo.
- if (cw) {
- tap_code16(G(S(KC_Z)));
- } else {
- tap_code16(G(KC_Z));
- }
-}
-void enc_scrolling(bool cw){ // Scrolling.
- if (cw) {
- tap_code(KC_MS_WH_DOWN);
- } else {
- tap_code(KC_MS_WH_UP);
- }
-}
-void enc_scrolling_h(bool cw){ // Scrolling.
- if (cw) {
- tap_code(KC_MS_WH_RIGHT);
- } else {
- tap_code(KC_MS_WH_LEFT);
- }
-}
-void enc_volume_knob(bool cw){ // Volume control.
- if (cw) {
- tap_code(KC_VOLU);
- } else {
- tap_code(KC_VOLD);
- }
-}
-void enc_move_desktop(bool cw){ // Switch Desktops (Mac).
- if (cw) {
- tap_code16(C(KC_RIGHT));
- } else {
- tap_code16(C(KC_LEFT));
- }
-}
-void enc_zoom(bool cw){ // Zoom in/zoom out.
- if (cw) {
- tap_code16(G(KC_PLUS));
- } else {
- tap_code16(G(KC_MINUS));
- }
-}
diff --git a/users/rmw/encoder_functions.h b/users/rmw/encoder_functions.h
deleted file mode 100644
index d80a78668a..0000000000
--- a/users/rmw/encoder_functions.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#pragma once
-#include QMK_KEYBOARD_H
-#include "rmw.h"
-
-void enc_move_words(bool cw);
-void enc_history_scrubbing(bool cw);
-void enc_scrolling(bool cw);
-void enc_scrolling_h(bool cw);
-void enc_volume_knob(bool cw);
-void enc_move_desktop(bool cw);
-void enc_zoom(bool cw);
diff --git a/users/rmw/rmw.c b/users/rmw/rmw.c
deleted file mode 100644
index bb1c1984f5..0000000000
--- a/users/rmw/rmw.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "rmw.h"
diff --git a/users/rmw/rmw.h b/users/rmw/rmw.h
deleted file mode 100644
index b4018d5570..0000000000
--- a/users/rmw/rmw.h
+++ /dev/null
@@ -1,87 +0,0 @@
-#pragma once
-#include QMK_KEYBOARD_H
-
-#include "quantum.h"
-#include "action.h"
-#include "version.h"
-
-#ifdef TAP_DANCE_ENABLE
-#include "tapdances.h"
-#endif
-
-#ifdef ENCODER_ENABLE
-#include "encoder_functions.h"
-#endif
-
-enum user_layers {
- QWERTY = 0
- ,MINIMAK4
- ,NUMPAD
- ,EDIT
- ,FSYM
- ,JSYM
- ,MEDIA
- ,ADJUST
-};
-
-
-// Custom keycodes
-#define SFTENT SFT_T(KC_ENT)
-
-enum user_custom_keycodes_universal {
- VRSN = SAFE_RANGE
- ,OS_CSFT = OSM(MOD_LSFT | MOD_LCTL)
- ,OS_GSFT = OSM(MOD_LSFT | MOD_LGUI)
- ,OS_CALT = OSM(MOD_LCTL | MOD_LALT)
- ,OS_ALT = OSM(MOD_LALT)
- ,OS_CTL = OSM(MOD_LCTL)
- ,NEW_SAFE_RANGE
-};
-
-#ifdef MACOSX
- enum user_custom_keycodes {
- FORM_GET = NEW_SAFE_RANGE
- ,FORM_PUT
- ,OS_CMD = OSM(MOD_LGUI)
- ,R_UNDO = LGUI(KC_Z)
- ,R_REDO = LGUI(KC_Y)
- ,R_CUT = LGUI(KC_X)
- ,R_COPY = LGUI(KC_C)
- ,R_PASTE = LGUI(KC_V)
- ,DEL_WRD = LALT(KC_BACKSPACE)
- ,MVW_LEFT = LALT(KC_LEFT)
- ,MVW_RIGHT = LALT(KC_RIGHT)
- ,SELW_LEFT = LALT(S(KC_LEFT))
- ,SELW_RIGHT = LALT(S(KC_RIGHT))
- ,NEW_TAB = LGUI(KC_T)
- ,TASK_MAN = LGUI(LALT(KC_ESCAPE))
- ,SEL_HOME = S(LGUI(KC_LEFT))
- ,SEL_END = S(LGUI(KC_RIGHT))
- ,R_HOME = LGUI(KC_LEFT)
- ,R_END = LGUI(KC_RIGHT)
- };
-#endif
-
-#ifdef WINDOWS
- enum user_custom_keycodes {
- FORM_GET = NEW_SAFE_RANGE
- ,FORM_PUT
- ,OS_WIN = OSM(MOD_LGUI)
- ,R_UNDO = LCTL(KC_Z)
- ,R_REDO = LCTL(KC_Y)
- ,R_CUT = LCTL(KC_X)
- ,R_COPY = LCTL(KC_C)
- ,R_PASTE = LCTL(KC_V)
- ,DEL_WRD = LALT(KC_BACKSPACE)
- ,MVW_LEFT = LCTL(KC_LEFT)
- ,MVW_RIGHT = LCTL(KC_RIGHT)
- ,SELW_LEFT = LCTL(S(KC_LEFT))
- ,SELW_RIGHT = LCTL(S(KC_RIGHT))
- ,NEW_TAB = LCTL(KC_T)
- ,TASK_MAN = LCTL(LALT(KC_ESCAPE))
- ,SEL_HOME = S(KC_HOME)
- ,SEL_END = S(KC_END)
- ,R_HOME = KC_HOME
- ,R_END = KC_END
-};
-#endif
diff --git a/users/rmw/rules.mk b/users/rmw/rules.mk
deleted file mode 100644
index 468745dbc2..0000000000
--- a/users/rmw/rules.mk
+++ /dev/null
@@ -1,9 +0,0 @@
-SRC += rmw.c
-
-ifdef TAP_DANCE_ENABLE
-SRC += tapdances.c
-endif
-
-ifdef ENCODER_ENABLE
-SRC += encoder_functions.c
-endif
diff --git a/users/rmw/tapdances.c b/users/rmw/tapdances.c
deleted file mode 100644
index 792bd83e55..0000000000
--- a/users/rmw/tapdances.c
+++ /dev/null
@@ -1,389 +0,0 @@
-// Useful tapdance functions!
-
-#include "tapdances.h"
-
-tap_dance_action_t tap_dance_actions[] = {
- [SHCAP] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, caps, shift_reset)
- ,[TDGUI] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, shiftgui, gui_reset)
- ,[TDGUI2] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, guictl, ubermod_reset)
- ,[SHENT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, shiftenter, shift_reset)
- ,[SHNTC] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, shiftentercaps, shift_reset)
- ,[GCA] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ubermod_mac, ubermod_reset) // GUI->CTL->ALT
- ,[AGC] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ubermod2_mac, ubermod_reset) // ALT->GUI->CTL
- ,[SGCA] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, shift_and_mac, CASG_reset) // SG->SC->SA
- ,[GUCTL] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, guictl, ubermod_reset)
- ,[CAG] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ubermod, ubermod_reset) // CTL->ALT->GUI
- ,[ACG] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ubermod2, ubermod_reset) // ALT->GUI->CTL
- ,[SCAG] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, shift_and, CASG_reset) // SG->SC->SA
- ,[DLTR] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, deleter, ubermod_reset) // backspace, backspace, alt backspace, gui backspace
- ,[FRBK2] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, forward_back_mac, ubermod_reset)
- ,[CTLALL] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ctrl_all_mac, ubermod_reset) // C->CG->CA->CAG
- ,[CTLAND] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ctrl_all, ubermod_reset) // C->CA->CG->CAG
- ,[FRBK] = ACTION_TAP_DANCE_DOUBLE(KC_WWW_BACK,KC_WWW_FORWARD)
-};
-
-void caps(tap_dance_state_t *state, void *user_data) // Shift, Caps
-{ if (state->count >= 2) {register_code(KC_CAPS); unregister_code(KC_CAPS);}
- else if (state->pressed) {register_mods(MOD_LSFT);} else {set_oneshot_mods(MOD_LSFT);}
- reset_tap_dance(state);
-}
-
-void forward_back_mac(tap_dance_state_t *state, void *user_data) // G<-, then G->
-{
- if (state->count > 1) {
- tap_code16(G(KC_RGHT));
- }
- else {
- tap_code16(G(KC_LEFT));
- }
- reset_tap_dance(state);
-}
-
-void shiftgui(tap_dance_state_t *state, void *user_data) // G->SG
-{
- if (state->count > 1) {
- if (state->pressed) {
- register_mods(MOD_LSFT | MOD_LGUI);
- }
- else {
- set_oneshot_mods(MOD_LSFT | MOD_LGUI);
- }
- }
- else if (state->pressed) {
- register_mods(MOD_LGUI);
- }
- else {
- set_oneshot_mods(MOD_LGUI);
- }
- reset_tap_dance(state);
-}
-
-void guictl(tap_dance_state_t *state, void *user_data) // G->GC
-{
- if (state->count > 1) {
- if (state->pressed) {
- register_mods(MOD_LCTL | MOD_LGUI);
- }
- else {
- set_oneshot_mods(MOD_LCTL | MOD_LGUI);
- }
- }
- else if (state->pressed) {
- register_mods(MOD_LGUI);
- }
- else {
- set_oneshot_mods(MOD_LGUI);
- }
- reset_tap_dance(state);
-}
-
-void deleter(tap_dance_state_t *state, void *user_data) // bkspc -> delwrd -> delline
-{
- if (state->count > 3) {
- tap_code16(G(KC_BSPC));
- }
- else if (state->count > 2) {
- tap_code16(A(KC_BSPC));
- }
- else {
- tap_code(KC_BSPC);
- }
- reset_tap_dance(state);
-}
-
-void ubermod(tap_dance_state_t *state, void *user_data) // CTL->ALT->GUI
-{
- if (state->count > 2) {
- if (state->pressed) {
- register_mods(MOD_LGUI);
- }
- else {
- set_oneshot_mods(MOD_LGUI);
- }
- }
- else if (state->count > 1) {
- if (state->pressed) {
- register_mods(MOD_LALT);
- }
- else {
- set_oneshot_mods(MOD_LALT);
- }
- }
- else if (state->pressed) {
- register_mods(MOD_LCTL);
- }
- else {
- set_oneshot_mods(MOD_LCTL);
- }
- reset_tap_dance(state);
-}
-
-void ubermod_mac(tap_dance_state_t *state, void *user_data) // GUI->CTL->ALT
-{
- if (state->count > 2) {
- if (state->pressed) {
- register_mods(MOD_LALT);
- }
- else {
- set_oneshot_mods(MOD_LALT);
- }
- }
- else if (state->count > 1) {
- if (state->pressed) {
- register_mods(MOD_LCTL);
- }
- else {
- set_oneshot_mods(MOD_LCTL);
- }
- }
- else if (state->pressed) {
- register_mods(MOD_LGUI);
- }
- else {
- set_oneshot_mods(MOD_LGUI);
- }
- reset_tap_dance(state);
-}
-
-void ubermod2(tap_dance_state_t *state, void *user_data) // ALT->CTL->GUI
-{
- if (state->count > 2) {
- if (state->pressed) {
- register_mods(MOD_LGUI);
- }
- else {
- set_oneshot_mods(MOD_LGUI);
- }
- }
- else if (state->count > 1) {
- if (state->pressed) {
- register_mods(MOD_LCTL);
- }
- else {
- set_oneshot_mods(MOD_LCTL);
- }
- }
- else if (state->pressed) {
- register_mods(MOD_LALT);
- }
- else {
- set_oneshot_mods(MOD_LALT);
- }
- reset_tap_dance(state);
-}
-
-void ubermod2_mac(tap_dance_state_t *state, void *user_data) // ALT->GUI->CTL
-{
- if (state->count > 2) {
- if (state->pressed) {
- register_mods(MOD_LCTL);
- }
- else {
- set_oneshot_mods(MOD_LCTL);
- }
- }
- else if (state->count > 1) {
- if (state->pressed) {
- register_mods(MOD_LGUI);
- }
- else {
- set_oneshot_mods(MOD_LGUI);
- }
- }
- else if (state->pressed) {
- register_mods(MOD_LALT);
- }
- else {
- set_oneshot_mods(MOD_LALT);
- }
- reset_tap_dance(state);
-}
-
-void shift_reset(tap_dance_state_t *state, void *user_data)
-{
- unregister_mods(MOD_LSFT);
- // clear_oneshot_mods();
-}
-void gui_reset(tap_dance_state_t *state, void *user_data)
-{
- unregister_mods(MOD_LSFT | MOD_LGUI);
-}
-void CAS_reset(tap_dance_state_t *state, void *user_data)
-{
- unregister_mods(MOD_LCTL | MOD_LSFT | MOD_LALT);
-}
-void CASG_reset(tap_dance_state_t *state, void *user_data)
-{
- unregister_mods(MOD_LCTL | MOD_LSFT | MOD_LALT | MOD_LGUI);
- // clear_oneshot_mods();
-}
-void ubermod_reset(tap_dance_state_t *state, void *user_data) // AKA CAG_reset
-{
- unregister_mods(MOD_LCTL | MOD_LALT | MOD_LGUI);
-}
-
-void shiftenter(tap_dance_state_t *state, void *user_data)
-{
- if (state->count > 1) {
- tap_code(KC_ENT);
- }
- else if (state->pressed) {
- register_mods(MOD_LSFT);
- }
- else {
- set_oneshot_mods(MOD_LSFT);
- }
- reset_tap_dance(state);
-}
-
-void shiftentercaps(tap_dance_state_t *state, void *user_data)
-{
- if (state->count > 2) {
- tap_code(KC_CAPS);
- }
- else if (state->count > 1) {
- tap_code(KC_ENT);
- }
- else if (state->pressed) {
- register_mods(MOD_LSFT);
- }
- else {
- set_oneshot_mods(MOD_LSFT);
- }
- reset_tap_dance(state);
-}
-
-void ctrl_all_mac(tap_dance_state_t *state, void *user_data) // C->CG->CAG
-{
- if (state->count > 2) {
- if (state->pressed) {
- register_mods(MOD_LCTL | MOD_LALT | MOD_LGUI);
- }
- else {
- set_oneshot_mods(MOD_LCTL | MOD_LGUI | MOD_LALT);
- }
- }
- else if (state->count > 1) {
- if (state->pressed) {
- register_mods(MOD_LCTL | MOD_LGUI);
- }
- else {
- set_oneshot_mods(MOD_LCTL | MOD_LGUI);
- }
- }
- else if (state->pressed) {
- register_mods(MOD_LCTL);
- }
- else {
- set_oneshot_mods(MOD_LCTL);
- }
- reset_tap_dance(state);
-}
-
-void ctrl_all(tap_dance_state_t *state, void *user_data) // C->CA->SC
-{
- if (state->count > 2) {
- if (state->pressed) {
- register_mods(MOD_LCTL | MOD_LSFT);
- }
- else {
- set_oneshot_mods(MOD_LCTL | MOD_LSFT);
- }
- }
- else if (state->count > 1) {
- if (state->pressed) {
- register_mods(MOD_LCTL | MOD_LALT);
- }
- else {
- set_oneshot_mods(MOD_LCTL | MOD_LALT);
- }
- }
- else if (state->pressed) {
- register_mods(MOD_LCTL);
- }
- else {
- set_oneshot_mods(MOD_LCTL);
- }
- reset_tap_dance(state);
-}
-
-void alt_all(tap_dance_state_t *state, void *user_data) // A->SA->AC
-{
- if (state->count > 2) {
- if (state->pressed) {
- register_mods(MOD_LCTL | MOD_LALT);
- }
- else {
- set_oneshot_mods(MOD_LALT | MOD_LCTL);
- }
- }
- else if (state->count > 1) {
- if (state->pressed) {
- register_mods(MOD_LSFT | MOD_LALT);
- }
- else {
- set_oneshot_mods(MOD_LALT | MOD_LSFT);
- }
- }
- else if (state->pressed) {
- register_mods(MOD_LALT);
- }
- else {
- set_oneshot_mods(MOD_LALT);
- }
- reset_tap_dance(state);
-}
-
-void shift_and(tap_dance_state_t *state, void *user_data) // SC->SA->SG
-{
- if (state->count > 2) {
- if (state->pressed) {
- register_mods(MOD_LSFT | MOD_LGUI);
- }
- else {
- set_oneshot_mods(MOD_LGUI | MOD_LSFT);
- }
- }
- else if (state->count > 1) {
- if (state->pressed) {
- register_mods(MOD_LSFT | MOD_LALT);
- }
- else {
- set_oneshot_mods(MOD_LALT | MOD_LSFT);
- }
- }
- else if (state->pressed) {
- register_mods(MOD_LCTL | MOD_LSFT);
- }
- else {
- set_oneshot_mods(MOD_LSFT | MOD_LCTL);
- }
- reset_tap_dance(state);
-}
-
-void shift_and_mac(tap_dance_state_t *state, void *user_data) // SG->SC->SA
-{
- if (state->count > 1) {
- if (state->pressed) {
- register_mods(MOD_LSFT | MOD_LALT);
- }
- else {
- set_oneshot_mods(MOD_LALT | MOD_LSFT);
- }
- }
- else if (state->count > 2) {
- if (state->pressed) {
- register_mods(MOD_LCTL | MOD_LSFT);
- }
- else {
- set_oneshot_mods(MOD_LSFT | MOD_LCTL);
- }
- }
- else if (state->pressed) {
- register_mods(MOD_LSFT | MOD_LGUI);
- }
- else {
- set_oneshot_mods(MOD_LGUI | MOD_LSFT);
- }
- reset_tap_dance(state);
-}
diff --git a/users/rmw/tapdances.h b/users/rmw/tapdances.h
deleted file mode 100644
index f358358cb6..0000000000
--- a/users/rmw/tapdances.h
+++ /dev/null
@@ -1,46 +0,0 @@
-#pragma once
-#include "rmw.h"
-#include "process_tap_dance.h"
-#include "action.h"
-
-void caps(tap_dance_state_t *state, void *user_data); // Shift, Caps
-void forward_back_mac(tap_dance_state_t *state, void *user_data); // G<-, then G->
-void shiftgui(tap_dance_state_t *state, void *user_data); // G->SG
-void guictl(tap_dance_state_t *state, void *user_data); // G->GC
-void deleter(tap_dance_state_t *state, void *user_data); // bkspc -> delwrd -> delline
-void ubermod(tap_dance_state_t *state, void *user_data); // CTL->ALT->GUI
-void ubermod_mac(tap_dance_state_t *state, void *user_data); // GUI->CTL->ALT
-void ubermod2(tap_dance_state_t *state, void *user_data); // ALT->CTL->GUI
-void ubermod2_mac(tap_dance_state_t *state, void *user_data); // ALT->GUI->CTL
-void shift_reset(tap_dance_state_t *state, void *user_data);
-void gui_reset(tap_dance_state_t *state, void *user_data);
-void CAS_reset(tap_dance_state_t *state, void *user_data);
-void CASG_reset(tap_dance_state_t *state, void *user_data);
-void ubermod_reset(tap_dance_state_t *state, void *user_data); // AKA CAG_reset
-void shiftenter(tap_dance_state_t *state, void *user_data);
-void shiftentercaps(tap_dance_state_t *state, void *user_data);
-void ctrl_all_mac(tap_dance_state_t *state, void *user_data); // C->CG->CAG
-void ctrl_all(tap_dance_state_t *state, void *user_data); // C->CA->SC
-void alt_all(tap_dance_state_t *state, void *user_data); // A->SA->AC
-void shift_and(tap_dance_state_t *state, void *user_data); // SC->SA->SG
-void shift_and_mac(tap_dance_state_t *state, void *user_data); // SG->SC->SA
-
-enum {
- SHCAP = 0
- ,TDGUI
- ,TDGUI2
- ,SHENT
- ,SHNTC
- ,GUCTL
- ,FRBK
- ,FRBK2
- ,GCA
- ,AGC
- ,SGCA
- ,SCAG
- ,CAG
- ,ACG
- ,CTLALL
- ,CTLAND
- ,DLTR
-};
diff --git a/users/romus/README.md b/users/romus/README.md
deleted file mode 100644
index 0de9d9a817..0000000000
--- a/users/romus/README.md
+++ /dev/null
@@ -1,45 +0,0 @@
-# overview
-
- this is a modified version of let's split keyboard from bbaserdem. i don't like standard dvorak overuses right pinky
- so i shifted the columns out. i'm not sure if this is any good, time will tell.
-
- i have ortholinear let's split eh, which share a lot of functions with other ortholinear keyboards.
-
-# layout
-
-i use dvorak with an unorthodox off layout.
-if you wanna grab my code, and you used a layout with a persistent base
-layer change, change it to layer 0 before proceeding.
-
-# layers
-
-* **dvorak**: base layer,with dvorak layout.
-* **alternative**: has alternate characters.
-* **game**: toggled from *function*, comfortable for gaming use.
-* **numeric**: has numericals and symbols. can be locked.
-* **function**: layer has media and function keys.
-* **mouse**: manipulates mouse. can be locked.
-* **music** allows playing sounds.
-
-# functionality
-
-* **rgb backlight**: with layer indication, and ability to change base layer lighting mode.
-* **secrets**: by placing a secrets.h, and not tracking it, passwords can be stored.
-* **mouse**: mouse emulation, complete with diagonal keys.
-* **turkish**: an altgr-like overlay that allows some non-common letters, in unicode.
-
-i suggest checking out how i enabled turkish keys,
-how i planned out rgb lighting,
-and my mouse implementation;
-they might offer some insight into fringe user cases.
-
-# issues
-
-all features are too big for the 32kb bootloader.
-offenders are audio and rgb lights; it comes down to one or the other.
-
-~the proton board, and rev 6 might fix that.~
-
-# credits
-
-this is a modified version of let's split keyboard from bbaserdem who has previously written his keymap by himself before, but rewrote it here.
diff --git a/users/romus/config.h b/users/romus/config.h
deleted file mode 100644
index 9332febe63..0000000000
--- a/users/romus/config.h
+++ /dev/null
@@ -1,8 +0,0 @@
-#pragma once
-
-#ifdef TAP_DANCE_ENABLE
- #define TAPPING_TERM 300
- #define TAPPING_TOGGLE 1
-#endif
-
-// !USERSPACE_CONFIG_H
diff --git a/users/romus/romus.c b/users/romus/romus.c
deleted file mode 100644
index a49a2fe205..0000000000
--- a/users/romus/romus.c
+++ /dev/null
@@ -1,509 +0,0 @@
-#include "romus.h"
-
-/*-----------------*\
-|*-----SECRETS-----*|
-\*-----------------*/
-// Enabled by adding a non-tracked secrets.h to this dir.
-#if (__has_include("secrets.h"))
-#include "secrets.h"
-#endif
-
-/*---------------*\
-|*-----MUSIC-----*|
-\*---------------*/
-#ifdef AUDIO_ENABLE
-float tone_game[][2] = SONG(ZELDA_PUZZLE);
-float tone_return[][2] = SONG(ZELDA_TREASURE);
-float tone_linux[][2] = SONG(UNICODE_LINUX);
-float tone_windows[][2] = SONG(UNICODE_WINDOWS);
-#endif
-
-/*-------------------*\
-|*-----TAP-DANCE-----*|
-\*-------------------*/
-#ifdef TAP_DANCE_ENABLE
-tap_dance_action_t tap_dance_actions[] = {
- // Shift on double tap of semicolon
- [SCL] = ACTION_TAP_DANCE_DOUBLE( KC_SCLN, KC_COLN )
-};
-#endif
-
-/* In keymaps, instead of writing _user functions, write _keymap functions
- * The __attribute__((weak)) allows for empty definitions here, and during
- * compilation, if these functions are defined elsewhere, they are written
- * over. This allows to include custom code from keymaps in the generic code
- * in this file.
- */
-__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) { }
-
-/* ----------------------- *\
- * -----RGB Functions----- *
-\* ----------------------- */
-#ifdef RGBLIGHT_ENABLE
-
-// Set RGBLIGHT state depending on layer
-void rgblight_change( uint8_t this_layer ) {
- // Enable RGB light; will not work without this
- //rgblight_enable_noeeprom();
- // Change RGB light
- switch ( this_layer ) {
- case _DV:
- // Load base layer
- rgblight_disable_noeeprom();
- break;
- case _AL:
- // Do yellow for alternate
- rgblight_enable_noeeprom();
- rgblight_sethsv_noeeprom( 60,255,255);
-
-
- break;
- case _GA:
- // Do purple for game
- rgblight_enable_noeeprom();
- rgblight_sethsv_noeeprom(285,255,255);
-
-
- break;
- case _NU:
- // Do azure for number
- rgblight_enable_noeeprom();
- rgblight_sethsv_noeeprom(186,200,255);
-
-
- break;
- case _SE:
- // Do red for settings
- rgblight_enable_noeeprom();
-
- rgblight_sethsv_noeeprom( 16,255,255);
-
- break;
- case _MO:
- // Do green for mouse
- rgblight_enable_noeeprom();
- rgblight_sethsv_noeeprom(120,255,255);
-
-
- break;
- case _MU:
- // Do orange for music
-
- rgblight_enable_noeeprom();
- rgblight_sethsv_noeeprom( 39,255,255);
-
- break;
- default:
- // Something went wrong
- rgblight_enable_noeeprom();
- rgblight_sethsv_noeeprom( 0,255,255);
-
- break;
- }
-}
-
-#endif
-
-/*---------------------*\
-|*-----MATRIX INIT-----*|
-\*---------------------*/
-void matrix_init_user (void) {
-
- // Keymap specific things, do it first thing to allow for delays etc
- matrix_init_keymap();
-
- // Correct unicode
-#ifdef UNICODE_ENABLE
- set_unicode_input_mode(UNICODE_MODE_LINUX);
-#endif
-
- // Make beginning layer DVORAK
- set_single_persistent_default_layer(_DV);
-
-}
-
-/*---------------------*\
-|*-----MATRIX SCAN-----*|
-\*---------------------*/
-void matrix_scan_user (void) {
- // Keymap specific, do it first
- matrix_scan_keymap();
-}
-
-/*------------------*\
-|*-----KEYCODES-----*|
-\*------------------*/
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-
- // Shift check
- bool is_capital = ( keyboard_report->mods & (MOD_BIT(KC_LSFT)|MOD_BIT(KC_RSFT)) );
- static bool lock_flag = false;
- uint8_t layer = biton32 (layer_state);
-
- switch (keycode) {
- // Secrets implementation
-#if (__has_include("secrets.h"))
- case SECRET1:
- if( !record->event.pressed ) {
- send_string_P( secret[ keycode - SECRET1 ] );
- }
- return false;
- break;
- case SECRET2:
- if( !record->event.pressed ) {
- send_string_P( secret[ keycode - SECRET2 ] );
- }
- return false;
- break;
- case SECRET3:
- if( !record->event.pressed ) {
- send_string_P( secret[ keycode - SECRET3 ] );
- }
- return false;
- break;
-#endif
-
- // Lock functionality: These layers are locked if the LOCKED buttons are
- // pressed. Otherwise, they are momentary toggles
- case K_LOCK:
- if (record->event.pressed) {
- lock_flag = !lock_flag;
- }
- return false;
- break;
- case K_MOUSE:
- if (record->event.pressed) {
- layer_on(_MO);
- lock_flag = false;
- } else {
- if ( lock_flag ) {
- lock_flag = false;
- } else {
- layer_off(_MO);
- }
- }
- return false;
- break;
- case K_NUMBR:
- if (record->event.pressed) {
- layer_on(_NU);
- lock_flag = false;
- } else {
- if ( lock_flag ) {
- lock_flag = false;
- } else {
- layer_off(_NU);
- }
- }
- return false;
- break;
-
- // Layer switches with sound
- case K_GAMES:
- if (record->event.pressed) {
- // On press, turn off layer if active
- if ( layer == _GA ) {
-#ifdef AUDIO_ENABLE
- stop_all_notes();
- PLAY_SONG(tone_return);
-#endif
- layer_off(_GA);
- }
- } else {
- // After click, turn on layer if accessed from setting
- if ( layer == _SE ) {
-#ifdef AUDIO_ENABLE
- stop_all_notes();
- PLAY_SONG(tone_game);
-#endif
- layer_on(_GA);
- layer_off(_SE);
- }
- }
- return false;
- break;
- case QK_MUSIC_TOGGLE:
- if (record->event.pressed) {
- // On press, turn off layer if active
- if ( layer == _SE ) {
- layer_off(_SE);
- layer_on(_MU);
- } else {
- layer_off(_MU);
- }
- }
- return true;
- break;
-
-//------UNICODE
- // Unicode switches with sound
-#ifdef UNICODE_ENABLE
- case UNI_LI:
- if (record->event.pressed) {
-#ifdef AUDIO_ENABLE
- stop_all_notes();
- PLAY_SONG(tone_linux);
-#endif
- set_unicode_input_mode(UNICODE_MODE_LINUX);
- }
- return false;
- break;
- case UNI_WN:
- if (record->event.pressed) {
-#ifdef AUDIO_ENABLE
- stop_all_notes();
- PLAY_SONG(tone_windows);
-#endif
- set_unicode_input_mode(UNICODE_MODE_WINDOWS);
- }
- return false;
- break;
-
- // Turkish letters, with capital functionality
- case TUR_A:
- if (record->event.pressed) {
- if ( is_capital ) {
- register_unicode(0x00c2);
- } else {
- register_unicode(0x00e2);
- }
- }
- return false;
- break;
- case TUR_O:
- if (record->event.pressed) {
- if ( is_capital ) {
- register_unicode(0x00d6);
- } else {
- register_unicode(0x00f6);
- }
- }
- return false;
- break;
- case TUR_U:
- if (record->event.pressed) {
- if ( is_capital ) {
- register_unicode(0x00dc);
- } else {
- register_unicode(0x00fc);
- }
- }
- return false;
- break;
- case TUR_I:
- if (record->event.pressed) {
- if ( is_capital ) {
- register_unicode(0x0130);
- } else {
- register_unicode(0x0131);
- }
- }
- return false;
- break;
- case TUR_G:
- if (record->event.pressed) {
- if ( is_capital ) {
- register_unicode(0x011e);
- } else {
- register_unicode(0x011f);
- }
- }
- return false;
- break;
- case TUR_C:
- if (record->event.pressed) {
- if ( is_capital ) {
- register_unicode(0x00c7);
- } else {
- register_unicode(0x00e7);
- }
- }
- return false;
- break;
- case TUR_S:
- if (record->event.pressed) {
- if ( is_capital ) {
- register_unicode(0x015e);
- } else {
- register_unicode(0x015f);
- }
- }
- return false;
- break;
-#endif
-
-//-------Diagonal mouse movements
-#ifdef MOUSEKEY_ENABLE
- case MO_NE:
- if( record->event.pressed ) {
- mousekey_on(MO_N);
- mousekey_on(MO_E);
- mousekey_send();
- } else {
- mousekey_off(MO_N);
- mousekey_off(MO_E);
- mousekey_send();
- }
- return false;
- break;
- case MO_NW:
- if( record->event.pressed ) {
- mousekey_on(MO_N);
- mousekey_on(MO_W);
- mousekey_send();
- } else {
- mousekey_off(MO_N);
- mousekey_off(MO_W);
- mousekey_send();
- }
- return false;
- break;
- case MO_SE:
- if( record->event.pressed ) {
- mousekey_on(MO_S);
- mousekey_on(MO_E);
- mousekey_send();
- } else {
- mousekey_off(MO_S);
- mousekey_off(MO_E);
- mousekey_send();
- }
- return false;
- break;
- case MO_SW:
- if( record->event.pressed ) {
- mousekey_on(MO_S);
- mousekey_on(MO_W);
- mousekey_send();
- } else {
- mousekey_off(MO_S);
- mousekey_off(MO_W);
- mousekey_send();
- }
- return false;
- break;
- case MO_S_NE:
- if( record->event.pressed ) {
- mousekey_on(MO_S_N);
- mousekey_on(MO_S_E);
- mousekey_send();
- } else {
- mousekey_off(MO_S_N);
- mousekey_off(MO_S_E);
- mousekey_send();
- }
- return false;
- break;
- case MO_S_NW:
- if( record->event.pressed ) {
- mousekey_on(MO_S_N);
- mousekey_on(MO_S_W);
- mousekey_send();
- } else {
- mousekey_off(MO_S_N);
- mousekey_off(MO_S_W);
- mousekey_send();
- }
- return false;
- break;
- case MO_S_SE:
- if( record->event.pressed ) {
- mousekey_on(MO_S_S);
- mousekey_on(MO_S_E);
- mousekey_send();
- } else {
- mousekey_off(MO_S_S);
- mousekey_off(MO_S_E);
- mousekey_send();
- }
- return false;
- break;
- case MO_S_SW:
- if( record->event.pressed ) {
- mousekey_on(MO_S_S);
- mousekey_on(MO_S_W);
- mousekey_send();
- } else {
- mousekey_off(MO_S_S);
- mousekey_off(MO_S_W);
- mousekey_send();
- }
- return false;
- break;
-#endif
-
-//------DOUBLE PRESS, with added left navigation
- case DBL_SPC:
- if( record->event.pressed ) {
- SEND_STRING(" "SS_TAP(X_LEFT));
- }
- return false;
- break;
- case DBL_ANG:
- if( record->event.pressed ) {
- SEND_STRING("<>"SS_TAP(X_LEFT));
- }
- return false;
- break;
- case DBL_PAR:
- if( record->event.pressed ) {
- SEND_STRING("()"SS_TAP(X_LEFT));
- }
- return false;
- break;
- case DBL_SQR:
- if( record->event.pressed ) {
- SEND_STRING("[]"SS_TAP(X_LEFT));
- }
- return false;
- break;
- case DBL_BRC:
- if( record->event.pressed ) {
- SEND_STRING("{}"SS_TAP(X_LEFT));
- }
- return false;
- break;
- case DBL_QUO:
- if( record->event.pressed ) {
- SEND_STRING("\'\'"SS_TAP(X_LEFT));
- }
- return false;
- break;
- case DBL_DQT:
- if( record->event.pressed ) {
- SEND_STRING("\"\""SS_TAP(X_LEFT));
- }
- return false;
- break;
- case DBL_GRV:
- if( record->event.pressed ) {
- SEND_STRING("``"SS_TAP(X_LEFT));
- }
- return false;
- break;
-// END OF KEYCODES
- }
- return process_record_keymap(keycode, record);
-}
-
-/*----------------------*\
-|*-----LAYER CHANGE-----*|
-\*----------------------*/
-
-layer_state_t layer_state_set_user(layer_state_t state) {
-
- state = layer_state_set_keymap (state);
-#ifdef RGBLIGHT_ENABLE
- // Change RGB lighting depending on the last layer activated
- rgblight_change( get_highest_layer(state) );
-#endif
- return state;
-}
diff --git a/users/romus/romus.h b/users/romus/romus.h
deleted file mode 100644
index d240c47b43..0000000000
--- a/users/romus/romus.h
+++ /dev/null
@@ -1,270 +0,0 @@
-// This is a modified version of Let's Split keyboard from bbaserdem
-
-#pragma once
-
-#include "quantum.h"
-
-#define XXX KC_NO
-
-// Layers
-#define _DV 0 // Base layer
-#define _AL 1 // Alt char overlay
-#define _GA 2 // Game layer
-#define _NU 3 // Numbers layer
-#define _SE 4 // Settings layer
-#define _MO 5 // Mouse emulation
-#define _MU 6 // Music mode
-
-// Define short macros
-#define UNDO LCTL(KC_Z)
-#define REDO LCTL(KC_Y)
-#define COPY LCTL(KC_C)
-#define CUT LCTL(KC_X)
-#define PASTE LCTL(KC_V)
-#define EXIT LALT(KC_F4)
-#define CAPS SFT_T(KC_CAPS)
-
-
-// Rename mouse keys with 7 letters
-#ifdef MOUSEKEY_ENABLE
-#define MO_S_N KC_MS_WH_UP
-#define MO_S_S KC_MS_WH_DOWN
-#define MO_S_E KC_MS_WH_RIGHT
-#define MO_S_W KC_MS_WH_LEFT
-#define MO_N KC_MS_UP
-#define MO_S KC_MS_DOWN
-#define MO_E KC_MS_RIGHT
-#define MO_W KC_MS_LEFT
-#define MO_CL_L KC_MS_BTN1
-#define MO_CL_R KC_MS_BTN2
-#define MO_CL_M KC_MS_BTN3
-#define MO_CL_4 KC_MS_BTN4
-#define MO_CL_5 KC_MS_BTN5
-#define MO_AC_0 KC_MS_ACCEL0
-#define MO_AC_1 KC_MS_ACCEL1
-#define MO_AC_2 KC_MS_ACCEL2
-#else
-#define MO_S_N KC_NO
-#define MO_S_S KC_NO
-#define MO_S_E KC_NO
-#define MO_S_W KC_NO
-#define MO_N KC_NO
-#define MO_S KC_NO
-#define MO_E KC_NO
-#define MO_W KC_NO
-#define MO_CL_L KC_NO
-#define MO_CL_R KC_NO
-#define MO_CL_M KC_NO
-#define MO_CL_1 KC_NO
-#define MO_CL_2 KC_NO
-#define MO_AC_0 KC_NO
-#define MO_AC_1 KC_NO
-#define MO_AC_2 KC_NO
-#endif
-
-// Rename music keys with <8 letters
-#ifdef AUDIO_ENABLE
-#define MU_REC KC_LCTL
-#define MU_STOP KC_LALT
-#define MU_PLAY KC_LGUI
-#define MU_PLAY KC_LGUI
-#define MU_FAST KC_UP
-#define MU_SLOW KC_DOWN
-#define MU_MASK KC_A
-#else
-#define MU_REC KC_NO
-#define MU_STOP KC_NO
-#define MU_PLAY KC_NO
-#define MU_PLAY KC_NO
-#define MU_FAST KC_NO
-#define MU_SLOW KC_NO
-#define MU_MASK KC_NO
-#endif
-
-// Define non-capitalized UTF shortcuts here
-#ifdef UNICODE_ENABLE
-#define PHY_HBR UC(0x0127)
-#define PHY_DEG UC(0x00b0)
-#define CUR_LIR UC(0x20ba)
-#define CUR_BIT UC(0x20bf)
-#define CUR_EUR UC(0x20ac)
-#define CUR_BPN UC(0x00a3)
-#define CUR_YEN UC(0x00a5)
-#else
-#define PHY_HBR KC_NO
-#define PHY_DEG KC_NO
-#define CUR_LIR KC_NO
-#define CUR_BIT KC_NO
-#define CUR_EUR KC_NO
-#define CUR_BPN KC_NO
-#define CUR_YEN KC_NO
-#endif
-
-// Custom keycodes
-enum userspace_custom_keycodes {
- // Turkish letters, with shifting
- TUR_A = SAFE_RANGE,
- TUR_C,
- TUR_G,
- TUR_I,
- TUR_O,
- TUR_S,
- TUR_U,
- // Unicode mode switch
- UNI_LI,
- UNI_WN,
- // Double keys
- DBL_SPC,
- DBL_ANG,
- DBL_PAR,
- DBL_SQR,
- DBL_BRC,
- DBL_QUO,
- DBL_DQT,
- DBL_GRV,
- // Diagonal mouse movements
- MO_NE,
- MO_NW,
- MO_SE,
- MO_SW,
- MO_S_NE,
- MO_S_NW,
- MO_S_SE,
- MO_S_SW,
- // Layer switches and lock functionality
- K_MOUSE,
- K_NUMBR,
- K_LOCK,
- K_GAMES,
- // Secret macros
- SECRET1,
- SECRET2,
- SECRET3
-};
-
-// Do tap dancable semicolon key if available
-#ifdef TAP_DANCE_ENABLE
-enum {
- SCL = 0
-};
-#define MY_SCL TD(SCL)
-#else
-#define MY_SCL KC_SCLN
-#endif
-
-// Shared keymaps
-#define LAYOUT_planck_wrapper(...) LAYOUT_planck_grid(__VA_ARGS__)
-#define LAYOUT_letssplit_wrapper(...) LAYOUT_ortho_4x12(__VA_ARGS__)
-
-/* Dvorak
- * ,------------------------------------------------------------------------.
- * | ' " | , | . | P | Y | Esc || Del | F | G | C | R | L |
- * |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
- * | A | O | E | U | I | Bkp || Ent | D | H | T | N | S |
- * |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
- * | ; : | Q | J | K | X | Spc || SET | B | M | W | V | Z |
- * |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
- * | Ctrl| OS | Alt | Tab | Cps | ACH || SYM | Spc | Lft | Up | Dwn | Rght|
- * `------------------------------------------------------------------------' */
-#define DVORAK \
- KC_QUOT,KC_COMM,KC_DOT, KC_P, KC_Y, KC_ESC, KC_DEL, KC_F, KC_G, KC_C, KC_R, KC_L, \
- KC_A, KC_O, KC_E, KC_U, KC_I, KC_BSPC,KC_ENT, KC_D, KC_H, KC_T, KC_N, KC_S, \
- MY_SCL, KC_Q, KC_J, KC_K, KC_X, KC_SPC, MO(_SE),KC_B, KC_M, KC_W, KC_V, KC_Z, \
- KC_LCTL,KC_LGUI,KC_LALT,KC_TAB, CAPS, MO(_AL),K_NUMBR,KC_SPC, KC_LEFT,KC_UP, KC_DOWN,KC_RGHT
-
-/* Alternative character overlay
- * ,------------------------------------------------------------------------.
- * | ` ~ | ' ' | " " | Euro|Pound| || Del | Home| PgUp| Prn | \ | | / ? |
- * |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
- * | Redo| < > | ( ) | [ ] | { } | Alt || Ins | End |PgDwn| Scl | BTC | - _ |
- * |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
- * | Undo| Cut | Copy|Paste| EXIT| Shf || | | | | Yen | = + |
- * |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
- * | | | | | | || | | | | | |
- * `------------------------------------------------------------------------' */
-#define ALTCHAR \
- KC_GRV, DBL_QUO,DBL_DQT,CUR_EUR,CUR_BPN,_______,_______,KC_HOME,KC_PGUP,KC_PSCR, KC_BSLS, KC_SLSH, \
- REDO, DBL_ANG,DBL_PAR,DBL_SQR,DBL_BRC,KC_LALT,KC_INS, KC_END, KC_PGDN,KC_SCRL, CUR_BIT, KC_MINUS, \
- UNDO, CUT, COPY, PASTE, EXIT, KC_LSFT,_______,_______,_______,_______, CUR_YEN, KC_EQUAL, \
- _______,_______,_______,_______,_______,_______,_______,DBL_SPC,_______,_______, _______, _______
-
-/* Game layer
- * ,------------------------------------------------------------------------.
- * | OFF | Q | W | E | R | T || Esc | 7 | 8 | 9 |NumLk|Bkspc|
- * |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
- * | Tab | A | S | D | F | G || F1 | 4 | 5 | 6 | \ | Ent |
- * |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
- * | Shf | Z | X | C | V | B || F2 | 1 | 2 | 3 | ^ | MSE |
- * |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
- * | Ctrl| Alt | / | ` | SYM | Spc || F5 | Ent | 0 | < | v | > |
- * `------------------------------------------------------------------------' */
-#define GAME \
- K_GAMES,KC_Q, KC_W, KC_E, KC_R, KC_T, KC_ESC, KC_P7, KC_P8, KC_P9, KC_NUM, KC_BSPC, \
- KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_F1, KC_P4, KC_P5, KC_P6, KC_BSLS,KC_ENT , \
- KC_LSFT,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_F2, KC_P1, KC_P2, KC_P3, KC_UP,K_MOUSE, \
- KC_LCTL,KC_LALT,KC_SLSH,KC_GRV, K_NUMBR,KC_SPC, KC_F5, KC_ENT, KC_P0, KC_LEFT,KC_DOWN,KC_RGHT
-
-/* Symbols layer
- * ,------------------------------------------------------------------------.
- * | OFF | ` | ~ | \ | [ | { || } | ] | - | _ | = | + |
- * |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
- * | 1 | 2 | 3 | 4 | 5 | || LCK | 6 | 7 | 8 | 9 | 0 |
- * |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
- * | ! | @ | # | $ | % | ||Vol +| ^ | & | * | ( | ) |
- * |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
- * | | | | | | | || | | | | | |
- * `------------------------------------------------------------------------' */
-#define NUMBERS \
- K_NUMBR,KC_GRV, KC_TILD,KC_BSLS,KC_LBRC,KC_LCBR,KC_RCBR,KC_RBRC,KC_MINS,KC_UNDS,KC_EQL, KC_PLUS, \
- KC_1, KC_2, KC_3, KC_4, KC_5, _______,K_LOCK, KC_6, KC_7, KC_8, KC_9, KC_0, \
- KC_EXLM,KC_AT, KC_HASH,KC_DLR, KC_PERC,_______,KC_VOLU,KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN, \
- KC_PIPE,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______
-
-/* Settings layer
- * ,------------------------------------------------------------------------.
- * |BLLed| F1 | F2 | F3 | F4 | Lin || Win | Wake| |Hue -|Hue +|Reset|
- * |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
- * | | F5 | F6 | F7 | F8 | ||Vol 0| |RGBto|Sat -|Sat +| |
- * |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
- * | Game| F9 | F10 | F11 | F12 |Vol 0|| |PrtSc|RGBan|Bri -|Bri +| |
- * |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
- * |Musir| | | | |Vol +||Vol -| Prev| Stop|TogMu| Next| |
- * `------------------------------------------------------------------------' */
-#define SETTINGS \
- BL_STEP,KC_F1, KC_F2, KC_F3, KC_F4, UNI_LI, UNI_WN, KC_WAKE,_______,RGB_HUD,RGB_HUI,QK_BOOT, \
- _______,KC_F5, KC_F6, KC_F7, KC_F8, _______,KC_MUTE,_______,RGB_TOG,RGB_SAD,RGB_SAI,_______, \
- K_GAMES,KC_F9, KC_F10, KC_F11, KC_F12, KC_MUTE,_______,KC_PSCR,RGB_MOD,RGB_VAD,RGB_VAI,_______, \
- MU_TOGG, _______,_______,_______,_______,KC_VOLU,KC_VOLD,KC_MPRV,KC_MSTP,KC_MPLY,KC_MNXT,_______
-
-/* Mouse layer
- * ,------------------------------------------------------------------------.
- * |Ulock| \ | ^ | / |.....|.....||.....|.....| |\|.| |^| | |/|.| |
- * |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
- * | | < | Mid | > |Btn 4|.....||.....|Btn 5| <-- | Mid | --> | |
- * |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
- * | | / | v | \ |.....|.....||.....|.....| |/| | |v| | |\| | LCK |
- * |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
- * | | | | | | Left||Right| | |Accl0|Accl1|Accl2|
- * `------------------------------------------------------------------------' */
-#define MOUSE \
- K_MOUSE,MO_NW, MO_N, MO_NE, XXX, XXX ,XXX, XXX, MO_S_NW,MO_S_N, MO_S_NE,_______, \
- _______,MO_W, MO_CL_M,MO_E, MO_CL_4,XXX ,XXX, MO_CL_5,MO_S_W, MO_CL_M,MO_S_E, _______, \
- _______,MO_SW, MO_S, MO_SE, XXX, XXX ,XXX, XXX, MO_S_SW,MO_S_S, MO_S_SE,K_LOCK , \
- _______,_______,_______,_______,_______,MO_CL_L,MO_CL_R,_______,MO_AC_0,MO_AC_1,MO_AC_2,_______
-
-/* Music layer
- * ,------------------------------------------------------------------------.
- * |.....|.....|.....|.....|.....|.....||.....|.....|.....|.....|.....|.....|
- * |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
- * |.....|.....|.....|.....|.....|.....||.....|.....|.....|.....|.....|.....|
- * |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
- * |.....|.....|.....|.....|.....|.....||.....|.....|.....|.....|.....|.....|
- * |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
- * | togg| rec | stop| play| slow| fast||modes|.....|.....|.....|.....|.....|
- * `------------------------------------------------------------------------'
- */
-#define MUSIC \
- MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK, \
- MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK, \
- MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK, \
- MU_TOGG,MU_REC, MU_STOP,MU_PLAY,MU_SLOW,MU_FAST,MU_NEXT,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK
diff --git a/users/romus/rules.mk b/users/romus/rules.mk
deleted file mode 100644
index 32a5ab0923..0000000000
--- a/users/romus/rules.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-SRC += romus.c
-EXTRAFLAGS += -flto # Used to make code smaller
-
-# ENABLE
-UNICODE_ENABLE = yes # Used for unicode character emulation
-EXTRAKEY_ENABLE = yes # OS signals like volume control
-
-# DISABLE
-ifndef BLUETOOTH_ENABLE
- BLUETOOTH_ENABLE = no # No bluetooth
-endif
-COMMAND_ENABLE = no # Some bootmagic thing i dont use
-BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
-CONSOLE_ENABLE = no # Allows console output with a command
-SLEEP_LED_ENABLE = no # Breathes LED's when computer is asleep. Untested.
-NKRO_ENABLE = no # Default is 6KRO which is plenty
-MIDI_ENABLE = no # Untested feature
-KEY_LOCK_ENABLE = no # Allows locking any key. Not used
-
-# Disabling this makes it compile, i dont know why
-# VARIABLE_TRACE = no # Allows debugging variables
diff --git a/users/rossman360/readme.md b/users/rossman360/readme.md
deleted file mode 100644
index ebb17d16cf..0000000000
--- a/users/rossman360/readme.md
+++ /dev/null
@@ -1,14 +0,0 @@
-Copyright 2020 Ross Montsinger rmontsinger@gmail.com @Rossman360
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>. \ No newline at end of file
diff --git a/users/rossman360/rossman360.c b/users/rossman360/rossman360.c
deleted file mode 100644
index 10911bddec..0000000000
--- a/users/rossman360/rossman360.c
+++ /dev/null
@@ -1,85 +0,0 @@
-#include "rossman360.h"
-
-void my_custom_function(void) {
-
-}
-
-__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 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("make " QMK_KEYBOARD ":" QMK_KEYMAP);
- #ifndef FLASH_BOOTLOADER
- if ((temp_mod | temp_osm) & MOD_MASK_SHIFT)
- #endif
- {
- SEND_STRING(":flash");
- }
- if ((temp_mod | temp_osm) & MOD_MASK_CTRL) {
- SEND_STRING(" -j8 --output-sync");
- }
- tap_code(KC_ENT);
- set_mods(temp_mod);
- }
- break;
- case CSPEAK:
- if (record->event.pressed) {
- SEND_STRING(SS_TAP(X_PAGE_DOWN) SS_TAP(X_ENTER) SS_TAP(X_ENTER) SS_TAP(X_PAGE_DOWN));
- }
- break;
- case SPEAK1:
- if (record->event.pressed) {
- SEND_STRING(SS_TAP(X_PAGE_DOWN) SS_TAP(X_ENTER) SS_TAP(X_ENTER) SS_TAP(X_PAGE_DOWN) SS_LCTL(SS_TAP(X_1)));
- }
- break;
- case SPEAK2:
- if (record->event.pressed) {
- SEND_STRING(SS_TAP(X_PAGE_DOWN) SS_TAP(X_ENTER) SS_TAP(X_ENTER) SS_TAP(X_PAGE_DOWN) SS_LCTL(SS_TAP(X_2)));
- }
- break;
- case SPEAK3:
- if (record->event.pressed) {
- SEND_STRING(SS_TAP(X_PAGE_DOWN) SS_TAP(X_ENTER) SS_TAP(X_ENTER) SS_TAP(X_PAGE_DOWN) SS_LCTL(SS_TAP(X_3)));
- }
- break;
- case SPEAK4:
- if (record->event.pressed) {
- SEND_STRING(SS_TAP(X_PAGE_DOWN) SS_TAP(X_ENTER) SS_TAP(X_ENTER) SS_TAP(X_PAGE_DOWN) SS_LCTL(SS_TAP(X_4)));
- }
- break;
- case PARADOWN:
- if (record->event.pressed) {
- SEND_STRING(SS_TAP(X_PAGE_DOWN) SS_TAP(X_ENTER) SS_TAP(X_PAGE_DOWN));
- }
- break;
- case PMERGE:
- if (record->event.pressed) {
- SEND_STRING(SS_TAP(X_HOME) SS_TAP(X_BACKSPACE) SS_TAP(X_SPACE) SS_LCTL(SS_TAP(X_BACKSPACE)) SS_TAP(X_SPACE));
- }
- break;
- case WREFRESH:
- if (record->event.pressed) {
- SEND_STRING(SS_TAP(X_SPACE) SS_TAP(X_BACKSPACE));
- }
- break;
- case REMCAPS:
- if (record->event.pressed) {
- SEND_STRING(SS_TAP(X_LEFT) SS_TAP(X_LEFT) SS_LCTL(SS_TAP(X_LEFT)) SS_TAP(X_DELETE));
- }
- break;
- case EMDASH:
- if (record->event.pressed) {
- SEND_STRING(SS_LCTL(SS_LSFT(SS_TAP(X_U))) SS_TAP(X_2) SS_TAP(X_0) SS_TAP(X_1) SS_TAP(X_4) SS_TAP(X_SPACE) SS_TAP(X_SPACE));
- }
- break;
-};
-return true;
-};
diff --git a/users/rossman360/rossman360.h b/users/rossman360/rossman360.h
deleted file mode 100644
index 8786da8313..0000000000
--- a/users/rossman360/rossman360.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#pragma once
-#include "quantum.h"
-
-#define BWORD LCTL(KC_BSPC)
-#define BLINE LALT(KC_BSPC)
-#define LWORD LCTL(KC_LEFT)
-#define RWORD LCTL(KC_RIGHT)
-#define JUMPBACK LSFT(KC_TAB)
-#define UNDO LCTL(KC_Z)
-#define XPANDR LCTL(LSFT(KC_X))
-#define NTAB LCTL(KC_T)
-#define CTAB LCTL(KC_W)
-#define XPANDR LCTL(LSFT(KC_X))
-#define CMDBSP MT(MOD_LGUI, KC_BSPC)
-#define ALTDEL MT(MOD_LALT, KC_DEL)
-#define TAB1 LCTL(KC_1)
-#define TAB2 LCTL(KC_2)
-#define TAB3 LCTL(KC_3)
-#define TAB4 LCTL(KC_4)
-#define CTRLSP MT(MOD_LCTL, KC_SPACE)
-#define RVOLU LCTL(KC_RBRC)
-#define RVOLD LCTL(KC_LBRC)
-#define QUIT LCTL(KC_Q)
-
-// Define all of
-enum custom_keycodes {
- KC_MAKE = SAFE_RANGE,
- CSPEAK,
- SPEAK1,
- SPEAK2,
- SPEAK3,
- SPEAK4,
- PARADOWN,
- WREFRESH,
- PMERGE,
- REMCAPS,
- EMDASH
-};
diff --git a/users/rossman360/rules.mk b/users/rossman360/rules.mk
deleted file mode 100644
index 8aaa74316f..0000000000
--- a/users/rossman360/rules.mk
+++ /dev/null
@@ -1,5 +0,0 @@
-SRC += rossman360.c
-
-ifeq ($(strip $(MACROS_ENABLED)), yes)
- OPT_DEFS += -DMACROS_ENABLED
-endif \ No newline at end of file
diff --git a/users/rs/karabiner.json b/users/rs/karabiner.json
deleted file mode 100644
index f5214650ad..0000000000
--- a/users/rs/karabiner.json
+++ /dev/null
@@ -1,154 +0,0 @@
-{
- "title": "RS",
- "rules": [{
- "description": "CapsLock to Escape / Control Mod-Tap",
- "manipulators": [{
- "type": "basic",
- "from": {
- "key_code": "caps_lock",
- "modifiers": {
- "optional": ["any"]
- }
- },
- "to": [{"key_code": "left_control"}],
- "to_if_alone": [{"key_code": "escape"}]
- }]
- },
- {
- "description": "Right-Shift / Enter Mod-Tap",
- "manipulators": [{
- "type": "basic",
- "from": {
- "key_code": "right_shift",
- "modifiers": {
- "optional": ["any"]
- }
- },
- "to": [{"key_code": "right_shift"}],
- "to_if_alone": [{"key_code": "return_or_enter"}]
- }]
- },
- {
- "description": "Right-Command / Backspace Mod-Tap",
- "manipulators": [{
- "type": "basic",
- "from": {
- "key_code": "right_command",
- "modifiers": {
- "optional": ["any"]
- }
- },
- "to": [{"key_code": "right_command"}],
- "to_if_alone": [{"key_code": "delete_or_backspace"}]
- }]
- },
- {
- "description": "Right-Command Accents",
- "manipulators": [
- {
- "type": "basic",
- "from": {
- "key_code": "a",
- "modifiers": {
- "mandatory": ["right_command"],
- "optional": ["left_shift", "right_shift"]
- }
- },
- "to": [
- {"key_code": "grave_accent_and_tilde", "modifiers": ["left_option"]},
- {"key_code": "a"}
- ]
- }]
- },
- {
- "description": "Right Command Navigation",
- "manipulators": [{
- "type": "basic",
- "from": {
- "key_code": "j",
- "modifiers": {
- "mandatory": ["right_command"],
- "optional": ["any"]
- }
- },
- "to": [{"key_code": "left_arrow"}]
- },
- {
- "type": "basic",
- "from": {
- "key_code": "k",
- "modifiers": {
- "mandatory": ["right_command"],
- "optional": ["any"]
- }
- },
- "to": [{"key_code": "down_arrow"}]
- },
- {
- "type": "basic",
- "from": {
- "key_code": "i",
- "modifiers": {
- "mandatory": ["right_command"],
- "optional": ["any"]
- }
- },
- "to": [{"key_code": "up_arrow"}]
- },
- {
- "type": "basic",
- "from": {
- "key_code": "l",
- "modifiers": {
- "mandatory": ["right_command"],
- "optional": ["any"]
- }
- },
- "to": [{"key_code": "right_arrow"}]
- },
- {
- "type": "basic",
- "from": {
- "key_code": "e",
- "modifiers": {
- "mandatory": ["right_command"],
- "optional": ["any"]
- }
- },
- "to": [{"key_code": "page_up"}]
- },
- {
- "type": "basic",
- "from": {
- "key_code": "d",
- "modifiers": {
- "mandatory": ["right_command"],
- "optional": ["any"]
- }
- },
- "to": [{"key_code": "page_down"}]
- },
- {
- "type": "basic",
- "from": {
- "key_code": "s",
- "modifiers": {
- "mandatory": ["right_command"],
- "optional": ["any"]
- }
- },
- "to": [{"key_code": "home"}]
- },
- {
- "type": "basic",
- "from": {
- "key_code": "f",
- "modifiers": {
- "mandatory": ["right_command"],
- "optional": ["any"]
- }
- },
- "to": [{"key_code": "end"}]
- }]
- }]
-}
diff --git a/users/rs/readme.md b/users/rs/readme.md
deleted file mode 100644
index 60b34ea32f..0000000000
--- a/users/rs/readme.md
+++ /dev/null
@@ -1,30 +0,0 @@
-# RS: Code Friendly 40% – 60% Keymaps
-
-The rs keymap collection is an evolution of my previous keymap optimized for coding with a 60% keyboards like the Iris. I tried to keep the simplicity of my previous keymap with all the keys necessary for coding on a single layer in addition to the base one. It work well with any 40% and 60% keyboard, split or not.
-
-To build it, use:
-
- make <keyboard>:rs
-
-Example:
-
- make keebio/iris:rs
- make crkbd:rs
- make planck:rs
- make preonic:rs
- make ergotravel:rs
- make handwired/rs60:rs
-
-Because I sometime have to use my internal keyboard I my macbook, a [karabiner configuration](karabiner.json) is also provided to get most of the features of this keyboard, including the code layer / backspace on right command key etc.
-
-This set of keymaps have been tested with those keyboards:
-- [Planck](../../keyboards/planck/)
-- [Preonic](../../keyboards/preonic/)
-- [My preonic clone](../../keyboards/handwired/rs60/)
-
-This keymap in is also available for other keyboards:
-- [Crkdb/rs](../../keyboards/crkbd/keymaps/rs/keymap.c)
-- [Iris/rs](../../keyboards/keebio/iris/keymaps/rs/keymap.c)
-- [Ergotravel/rs](../../keyboards/ergotravel/keymaps/rs/keymap.c)
-- [ortho_5x12/rs](../../layouts/community/ortho_5x12/rs/keymap.c)
-- [ortho_4x12/rs](../../layouts/community/ortho_4x12/rs/keymap.c)
diff --git a/users/rs/rs.c b/users/rs/rs.c
deleted file mode 100644
index fa634bb928..0000000000
--- a/users/rs/rs.c
+++ /dev/null
@@ -1,74 +0,0 @@
-
-#include "rs.h"
-
-// process_record_user is like process_record_user for keymaps including this file.
-__attribute__ ((weak))
-bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
- return true;
-}
-
-// rgb_mod_changed_keymap is called any time the RGB mod has been changed.
-__attribute__ ((weak))
-void rgb_mod_changed_keymap(void) {
-}
-
-// keylog_set_keymap is called for every key press.
-__attribute__ ((weak))
-void keylog_set_keymap(uint16_t keycode, keyrecord_t *record) {
-}
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- if (record->event.pressed) {
- keylog_set_keymap(keycode, record);
- }
-
- switch (keycode) {
- case NEQL: // !=
- if (record->event.pressed) {
- SEND_STRING("!=");
- }
- return false;
- case LPLT: // ( or < with shift
- if (record->event.pressed) {
- if (get_mods() & (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT))) {
- // <
- tap_code(KC_COMM); // shift is already registered
- } else {
- // (
- register_mods(MOD_BIT(KC_LSFT));
- tap_code(KC_9);
- unregister_mods(MOD_BIT(KC_LSFT));
- }
- }
- return false;
- case RPGT: // ) or > with shift
- if (record->event.pressed) {
- if (get_mods() & (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT))) {
- // <
- tap_code(KC_DOT); // shift is already registered
- } else {
- // )
- register_mods(MOD_BIT(KC_LSFT));
- tap_code(KC_0);
- unregister_mods(MOD_BIT(KC_LSFT));
- }
- }
- return false;
-#ifdef RGBLIGHT_ENABLE
- case RGB_MOD:
- if (record->event.pressed) {
- rgblight_step();
- rgb_mod_changed_keymap();
- }
- return false;
- case RGBRST:
- if (record->event.pressed) {
- eeconfig_update_rgblight_default();
- rgblight_enable();
- rgb_mod_changed_keymap();
- }
- return false;
-#endif
- }
- return process_record_keymap(keycode, record);
-} \ No newline at end of file
diff --git a/users/rs/rs.h b/users/rs/rs.h
deleted file mode 100644
index ecd9a06de6..0000000000
--- a/users/rs/rs.h
+++ /dev/null
@@ -1,48 +0,0 @@
-#pragma once
-#include "quantum.h"
-
-enum layers {
- _QWERTY,
- _CODE,
- _FN,
-};
-
-enum custom_keycodes {
- CODE = SAFE_RANGE,
- FN,
- LPLT,
- RPGT,
- NEQL,
-#ifdef RGBLIGHT_ENABLE
- RGBRST,
-#endif
-};
-
-#define KC_ESCC MT(MOD_LCTL, KC_ESC)
-#define KC_ENTS MT(MOD_LSFT, KC_ENT)
-#define KC_LTGT LTGT // > or < with shift
-#define KC_LPLT LPLT // ( or < with shift
-#define KC_RPGT RPGT // ) or > with shift
-#define KC_NEQL NEQL // !=
-#define KC_CODE MO(_CODE)
-#define KC_BCOD LT(_CODE, KC_BSPC)
-#define KC_FN MO(_FN)
-#define KC_RST QK_BOOT
-#define KC_CTRA LCTL(KC_A)
-#define KC_CTRE LCTL(KC_E)
-#define KC_BLTG BL_TOGG
-#define KC_BLUP BL_UP
-#define KC_BLDN BL_DOWN
-#define KC_BLBR BL_BRTG
-
-#ifdef RGBLIGHT_ENABLE
-#define KC_LRST RGBRST
-#define KC_LTOG RGB_TOG
-#define KC_LHUI RGB_HUI
-#define KC_LHUD RGB_HUD
-#define KC_LSAI RGB_SAI
-#define KC_LSAD RGB_SAD
-#define KC_LVAI RGB_VAI
-#define KC_LVAD RGB_VAD
-#define KC_LMOD RGB_MOD
-#endif
diff --git a/users/rs/rules.mk b/users/rs/rules.mk
deleted file mode 100644
index edb5be0f5b..0000000000
--- a/users/rs/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-SRC += rs.c \ No newline at end of file
diff --git a/users/rupa/config.h b/users/rupa/config.h
deleted file mode 100644
index 42a1708f9c..0000000000
--- a/users/rupa/config.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#pragma once
-
-#define UNICODE_SELECTED_MODES UNICODE_MODE_MACOS, UNICODE_MODE_LINUX
-
-#define ONESHOT_TAP_TOGGLE 5
-#define ONESHOT_TIMEOUT 5000
-
-#undef TAP_CODE_DELAY
-#define TAP_CODE_DELAY 5 //DEFAULT: 100
-
-//#define UNICODE_SCRIPT_MODE_ENABLE
diff --git a/users/rupa/process_records.c b/users/rupa/process_records.c
deleted file mode 100644
index 2d23e34017..0000000000
--- a/users/rupa/process_records.c
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
-Copyright 2020 rupa <rupa@lrrr.us> @rupa
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "rupa.h"
-
-uint16_t processed_keycode;
-
-__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 (record->event.pressed) {
-
- processed_keycode = keycode;
- // mask out mod taps
- if (
- (keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) ||
- (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)
- ) {
- processed_keycode &= 0xFF;
- }
-
- bool is_shifted = (get_mods() | get_oneshot_mods() | get_weak_mods()) & MOD_MASK_SHIFT;
- switch(processed_keycode) {
- case VRSN:
- send_string_with_delay_P(PSTR(
- "# " QMK_KEYBOARD "/" QMK_KEYMAP ":" QMK_VERSION " " QMK_BUILDDATE "\n"
- ), TAP_CODE_DELAY);
- return false;
-
- case BUGS:
- return u_xp(is_shifted, "ᙙᙖ", "ଳ");
- case CATS:
- return u_xp(is_shifted, "ⓛ ᆽ ⓛ ", "ㅇㅅㅇ");
- case DANCE:
- return u_x(dance(is_shifted));
- case DICE:
- return u_x(d6());
- case DOMO:
- return u_xp(is_shifted, "(シ_ _)シ", "m(_ _)m");
- case FART:
- return u_x("⊥ʶ∀Ⅎ");
- case FLIP:
- return u_x(flip(is_shifted));
- case HUGS:
- return u_xp(is_shifted, "(づ ̄ ³ ̄)づ", "(っಠ‿ಠ)っ");
- case JOY:
- return u_x(joy(is_shifted));
- case RNDM:
- return false;
- case KISS:
- return u_xp(is_shifted, "꒒ ০ ⌵ ୧ ♡", "( ˘ ³˘)♥");
- case LOD:
- return u_xp(is_shifted, "( ͡ಠ ʖ̯ ͡ಠ)", "ಠ_ಠ");
- case MUSIC:
- return u_xp(is_shifted, "(˳˘ ɜ˘)˳ ♬ ♪♫", "(´▽`)ノ♫");
- case RUPA:
- return u_xp(is_shifted, "Śrīrūpa", "rūpa");
- case SHRUG:
- return u_xp(is_shifted, "⋌ ༼ •̀ ⌂ •́ ༽⋋", "¯\\_(ツ)_/¯");
- case TADA:
- return u_xp(is_shifted, "☆ *・゜゚・*(^O^)/*・゜゚・*☆", "\\(゜ロ\\)Ξ(//ロ゜)//");
- case WAT:
- return u_xp(is_shifted, "༼ ຶཽཀ ຶཽ༽", "ヽ༼⊙_⊙༽ノ");
- case YUNO:
- return u_xp(is_shifted, "o(^^o)", "щ(゜ロ゜щ)");
- case ZALGO:
- set_combined_mode(CM_ZALGO);
- break;
- case ZZZZZ:
- cycle_combined_mode();
- break;
-
-#if defined(UNICODE_SCRIPT_MODE_ENABLE)
- // script modes
- case U_FRACT:
- return set_script_mode(F_FRACT);
- case U_ITALI:
- return set_script_mode(F_ITALI);
- case U_MONOS:
- return set_script_mode(F_MONOS);
- case U_NORML:
- return set_script_mode(F_NORML);
- case U_SANSI:
- return set_script_mode(F_SANSI);
- case U_SANSN:
- return set_script_mode(F_SANSN);
- case U_SCRPT:
- return set_script_mode(F_SCRPT);
-
- default:
- if (get_script_mode() != NULL) {
- return script_mode_translate(is_shifted, processed_keycode);
- }
- if (combined_mode != CM_NULL && combined_text(processed_keycode)) {
- return false;
- }
-#endif
- }
- }
- return process_record_keymap(keycode, record);
-}
diff --git a/users/rupa/process_records.h b/users/rupa/process_records.h
deleted file mode 100644
index 7c7fe491be..0000000000
--- a/users/rupa/process_records.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
-Copyright 2020 rupa <rupa@lrrr.us> @rupa
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-#include "rupa.h"
-
-bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
diff --git a/users/rupa/readme.md b/users/rupa/readme.md
deleted file mode 100644
index b6c2dd1f7f..0000000000
--- a/users/rupa/readme.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# rupa's userspace
-
-* rupa.c has some unicode script mode stuff
-* unicode.c has my unicode map
-* process_record.c has my keycode handler
-
-my keymap is in [keyboards/tada68](../../keyboards/tada68/keymaps/rupa/)
diff --git a/users/rupa/rules.mk b/users/rupa/rules.mk
deleted file mode 100644
index ed33e85f3a..0000000000
--- a/users/rupa/rules.mk
+++ /dev/null
@@ -1,5 +0,0 @@
-UNICODEMAP_ENABLE = yes
-LTO_ENABLE = yes
-SRC += rupa.c \
- process_records.c \
- unicode.c
diff --git a/users/rupa/rupa.c b/users/rupa/rupa.c
deleted file mode 100644
index 85de5c16fd..0000000000
--- a/users/rupa/rupa.c
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
-Copyright 2020 rupa <rupa@lrrr.us> @rupa
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include <print.h>
-#include "rupa.h"
-
-#if defined(UNICODE_SCRIPT_MODE_ENABLE)
-const font_t * translator = NULL;
-
-// https://en.wikipedia.org/wiki/Mathematical_Alphanumeric_Symbols
-static const font_t *fonts_map[] = {
- [F_FRACT] = &(font_t){0x1D56C, 0x1D586, 0x1D7D8}, // fraktur/doublestruck numbers
- [F_ITALI] = &(font_t){0x1D468, 0x1D482, 0x1D7CE}, // italic/bold numbers
- [F_MONOS] = &(font_t){0x1D670, 0x1D68A, 0x1D7F6}, // monospace
- [F_NORML] = &(font_t){0x1D400, 0x1D41A, 0x00030}, // normal!
- [F_SANSI] = &(font_t){0x1D63C, 0x1D656, 0x1D7EC}, // sans 1talic/sans bold numbers
- [F_SANSN] = &(font_t){0x1D5D4, 0x1D5EE, 0x1D7E2}, // sans normal/sans numbers
- [F_SCRPT] = &(font_t){0x1D4D0, 0x1D4EA, 0x1D7CE}, // script/bold numbers
-};
-
-/*
-font_t doublestruc = {0x1D538, 0x1D552, 0x1D7D8};
-uint_32 []snowflakes = {
- // doublestruck
- 0x1D53B, // C
- 0x1D540, // H
- 0x1D546, // N
- 0x1D548, // P
- 0x1D549, // Q
- 0x1D54A, // R
- 0x1D552, // Z
-};
-*/
-
-const font_t *get_script_mode(void) {
- return translator;
-}
-bool set_script_mode(int fc) {
- translator = translator == fonts_map[fc] ? NULL : fonts_map[fc];
- dprintf("set_script_mode: %u %b\n", fc, translator != NULL);
- return true;
-}
-
-// Maps A-Z, a-z, and 0-9 to other unicode ranges. We also map space to EN
-// SPACE for some reason :)
-uint32_t map_alnum(const font_t *f, bool is_shifted, uint32_t keycode) {
- switch (keycode) {
- case KC_SPACE:
- return (is_shifted ? 0 : 0x2002); // EN SPACE
- case KC_0:
- return (is_shifted ? 0 : f->zero_glyph);
- case KC_A ... KC_Z:
- return (is_shifted ? f->upper_alpha : f->lower_alpha) + keycode - KC_A;
- case KC_1 ... KC_9:
- return (is_shifted ? 0 : f->zero_glyph + keycode - KC_1 + 1);
- default:
- return 0;
- }
-}
-
-bool script_mode_translate(bool is_shifted, uint32_t keycode) {
- uint32_t translated = map_alnum(translator, is_shifted, keycode);
- if (translated == 0) return true;
- dprintf("script_mode_translate: %u => %d\n", keycode, translated);
- register_unicode(translated);
- return false;
-}
-#endif
diff --git a/users/rupa/rupa.h b/users/rupa/rupa.h
deleted file mode 100644
index cfe873ffc6..0000000000
--- a/users/rupa/rupa.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
-Copyright 2020 rupa <rupa@lrrr.us> @rupa
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-#include QMK_KEYBOARD_H
-#include "version.h"
-#include "process_records.h"
-#include "unicode.h"
-#include "wrappers.h"
-
-enum userspace_layers {
- _QWERTY = 0,
- _LOWER,
- _RAISE,
- _ADJUST
-};
-
-enum userspace_custom_keycodes {
- VRSN = SAFE_RANGE,
- BUGS,
- CATS,
- DANCE,
- DICE,
- DOMO,
- FART,
- FLIP,
- HUGS,
- JOY,
- KISS,
- LOD,
- MUSIC,
- RNDM,
- RUPA,
- SHRUG,
- TADA,
- U_FRACT,
- U_ITALI,
- U_MONOS,
- U_NORML,
- U_SANSI,
- U_SANSN,
- U_SCRPT,
- WAT,
- YUNO,
- ZALGO,
- ZZZZZ,
- NEXT_SAFE_RANGE
-};
-
-enum userspace_font_choices {
- F_FRACT = 0,
- F_ITALI,
- F_MONOS,
- F_NORML,
- F_SANSI,
- F_SANSN,
- F_SCRPT
-};
-
-typedef struct font_t {
- uint32_t upper_alpha;
- uint32_t lower_alpha;
- uint32_t zero_glyph;
-} font_t;
-
-const font_t* get_script_mode(void);
-bool set_script_mode(int fc);
-bool script_mode_translate(bool is_shifted, uint32_t keycode);
diff --git a/users/rupa/unicode.c b/users/rupa/unicode.c
deleted file mode 100644
index 56b4509813..0000000000
--- a/users/rupa/unicode.c
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
-Copyright 2020 rupa <rupa@lrrr.us> @rupa
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "unicode.h"
-
-combined_mode_t combined_mode = CM_NULL;
-bool _seeded = false;
-
-#if defined(UNICODEMAP_ENABLE)
-const uint32_t unicode_map[] PROGMEM = {
- [CCIR] = 0x20DD, // COMBINING CIRCLE ⃝
- [CENT] = 0x00A2, // ¢
- [CHEK] = 0x2713, // ✓
- [CKEY] = 0x20E3, // COMBINING KEYCAP ⃣
- [CUI] = 0x26A0, // ⚠
- [ECKS] = 0x2716, // ✖
- [EFF] = 0x017F, // ſ
- [HAS] = 0x262D, // ☭
- [HUN] = 0x1F4AF, // 💯
- [IBNG] = 0x203D, // ‽
- [IRNY] = 0x2E2E, // ⸮
- [LALL] = 0x2200, // ∀
- [LELM] = 0x2208, // ∈
- [LEXI] = 0x2203, // ∃
- [LPRO] = 0x22A2, // ⊢
- [M4] = 0x2669, // ♩
- [M8] = 0x266A, // ♪
- [M8B] = 0x266B, // ♫
- [M16] = 0x266C, // ♬
- [NEG] = 0x20E0, // COMBINING NO ⃠
- [NOPE] = 0x1F6AB, // 🚫
- [NUM] = 0x2116, // №
- [OM] = 0x0950, // ॐ
- [SMB] = 0x263A, // ☻
- [SMW] = 0x263B, // ☺
- [STB] = 0x2605, // ★
- [STOP] = 0x26D4, // ⛔
- [STW] = 0x2606, // ☆
-};
-#endif
-
-const char *d6_map[] = {
- "⚀", "⚁", "⚂", "⚃", "⚄", "⚅"
-};
-const char *dance_map[] = {
- "〜( ̄▽ ̄〜)",
- "(〜 ̄▽ ̄)〜"
-};
-const char *dance_more_map[] = {
- "ƪ(˘⌣˘)┐",
- "┌(˘⌣˘)ʃ"
-};
-const char *flip_map[] = {
- "(╯°□°)╯︵ ┻━━┻",
- "(ノ-_-)ノ・・ ┻━━┻",
- "(ノꐦ⊙曲ఠ)ノ彡┻━┻"
-};
-const char *flip_back_map[] = {
- "┬──┬◡ノ(° -°ノ)",
- "┬──┬ノ( ゜-゜ノ)",
- "┬──┬ノ(ಠ_ಠノ)"
-};
-const char *joy_map[] = {
- "ᕕ( ᐛ )ᕗ ",
- "٩(ˊᗜˋ*)و",
- "٩( ᐛ )و"
-};
-const char *joy_harder_map[] = {
- "\\\ ٩( ᐛ )و //",
- "✧*。٩(ˊᗜˋ*)و✧*。"
-};
-
-const char *choice(const char *choices[], int size) {
- if (_seeded == false) {
- srand(timer_read32());
- dprintf("_seeded the roll\n");
- _seeded = true;
- }
- return choices[rand() % size];
-}
-
-const char *d6(void) {
- return choice(d6_map, 6);
-}
-const char *dance(bool more) {
- if (more) {
- return choice(dance_more_map, 2);
- }
- return choice(dance_map, 2);
-}
-const char *flip(bool flip_back) {
- if (flip_back) {
- return choice(flip_back_map, 3);
- }
- return choice(flip_map, 3);
-}
-const char *joy(bool harder) {
- if (harder) {
- return choice(joy_harder_map, 2);
- }
- return choice(joy_map, 3);
-}
-
-bool u_x(const char *text) {
- send_unicode_string(text);
- return false;
-};
-bool u_xp(bool is_shifted, const char *shifted, const char *plain) {
- send_unicode_string(is_shifted ? shifted : plain);
- return false;
-};
-
-void zalgo(void) {
- unicode_input_start();
- int number = (rand() % (8 + 1 - 2)) + 2;
- unsigned int index;
- for (index=0; index<number; index++) {
- uint16_t hex = (rand() % (0x036F + 1 - 0x0300)) + 0x0300;
- register_hex(hex);
- }
- unicode_input_finish();
-}
-
-bool combined_text(uint16_t keycode) {
- if (keycode < KC_A || (keycode > KC_0 && keycode < KC_MINUS) || keycode > KC_SLASH) {
- return false;
- }
- tap_code(keycode);
-
- switch (combined_mode) {
- case CM_CIRCLE:
- register_unicode(0x20DD);
- break;
- case CM_NO:
- register_unicode(0x20E0);
- break;
- case CM_KEYCAP:
- register_unicode(0x20E3);
- break;
- case CM_ZALGO:
- zalgo();
- break;
- default:
- break;
- }
- return true;
-}
-
-void cycle_combined_mode(void) {
- if (combined_mode++ >= CM_MAX - 1) {
- combined_mode = CM_NULL;
- }
-}
-
-combined_mode_t set_combined_mode(combined_mode_t mode) {
- combined_mode = combined_mode == mode ? CM_NULL : mode;
- return combined_mode;
-}
diff --git a/users/rupa/unicode.h b/users/rupa/unicode.h
deleted file mode 100644
index 92303b13f5..0000000000
--- a/users/rupa/unicode.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
-Copyright 2020 rupa <rupa@lrrr.us> @rupa
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-#include "rupa.h"
-
-#if defined(UNICODEMAP_ENABLE)
-enum unicode_names {
- CCIR, // COMBINING ⃝
- CENT, // ¢
- CHEK, // ✓
- CKEY, // COMBINING ⃣
- CUI, // ⚠
- ECKS, // ✖
- EFF, // ſ
- HAS, // ☭
- HUN, // 💯
- IBNG, // ‽
- IRNY, // ⸮
- LALL, // ∀
- LELM, // ∈
- LEXI, // ∃
- LPRO, // ⊢
- M4, // ♩
- M8, // ♪
- M8B, // ♫
- M16, // ♬
- NEG, // COMBINING ⃠
- NOPE, // 🚫
- NUM, // №
- OM, // ॐ
- SMB, // ☻
- SMW, // ☺
- STB, // ★
- STOP, // ⛔
- STW, // ☆
-};
-#endif
-
-typedef enum combined_modes {
- CM_NULL = 0,
- CM_CIRCLE,
- CM_NO,
- CM_KEYCAP,
- CM_ZALGO,
- CM_MAX
-} combined_mode_t;
-
-combined_mode_t combined_mode;
-
-// random choices
-const char * d6(void);
-const char * dance(bool more);
-const char * flip(bool back);
-const char * joy(bool harder);
-
-// like X and XP
-bool u_x(const char *text);
-bool u_xp(bool is_shifted, const char * shifted, const char *plain);
-
-bool combined_text(uint16_t keycode);
-void cycle_combined_mode(void);
-combined_mode_t set_combined_mode(combined_mode_t mode);
diff --git a/users/rupa/wrappers.h b/users/rupa/wrappers.h
deleted file mode 100644
index df32ef39ab..0000000000
--- a/users/rupa/wrappers.h
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
-Copyright 2020 rupa <rupa@lrrr.us> @rupa
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-#include "rupa.h"
-
-#define LOWER MO(_LOWER)
-#define RAISE MO(_RAISE)
-#define OS_RGUI OSM(MOD_RGUI)
-#define OS_RALT OSM(MOD_RALT)
-#define OS_RCTL OSM(MOD_RCTL)
-#define OS_RSFT OSM(MOD_RSFT)
-
-#define G_LWR LT(_LOWER, KC_G)
-
-#if defined(UNICODEMAP_ENABLE)
-# define CSHAPES UP(CCIR,CKEY)
-# define CUIDADO UP(CUI,HAS)
-# define NOPENAH UP(NOPE,STOP)
-# define MUSIC_A UP(M4,M8)
-# define MUSIC_B UP(M8B,M16)
-# define SMILE UP(SMB,SMW)
-# define STARS UP(STB,STW)
-# define YEPYEP UP(CHEK,HUN)
-#endif
-
-/* _QWERTY
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
- * │Es~│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│~ `│
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
- * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │Del│
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
- * │RAISE │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │PgU│
- * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
- * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │PgD│
- * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
- * │Ctrl│Alt │Gui │ Space │RAI│LOW│CAP│ ← │ ↓ │ → │
- * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
- */
-#define ____65_QWERTY______________ROW1 QK_GESC, 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_GRV
-#define ____65_QWERTY______________ROW2 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, KC_DEL
-#define ____65_QWERTY______________ROW3 RAISE, KC_A, KC_S, KC_D, KC_F, G_LWR, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP
-#define ____65_QWERTY______________ROW4 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
-#define ____65_QWERTY______________ROW5 KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, RAISE, LOWER, KC_CAPS, KC_LEFT, KC_DOWN, KC_RGHT
-
-/* _RAISE
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
- * │ ` │ ‽ │ ⸮ │ │ ¢ │ │ │ │★ │ │ ☻ │ ⃠ │CSH│ Del │Hme│
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
- * │ │ │WAT│ ∃ │Rup│TAD│YUN│ │ ∈ │ ॐ │ │♩ ♪│♫ ♬│ │Ins│
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
- * │ │ ∀ │ ſ │ ⚂ │FRT│ │HUG│JOY│KSS│LOD│ │NO!│ ✓ 💯 │End│
- * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
- * │ RShift │⚠ ☭│ ✖ │CAT│BOW│BUG│ № │MUS│DNC│ ⊢ │SHR│ McL│M↑ │McR│
- * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
- * │RCtl│RAlt│RGui│ FLIP │ │ │ │M← │M↓ │M→ │
- * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
- */
-#define ____65_RAISE_______________ROW1 KC_GRV, UM(IBNG), UM(IRNY), _______, UM(CENT), _______, _______, _______, STARS, _______, SMILE, UM(NEG), CSHAPES, KC_DEL, KC_HOME
-#define ____65_RAISE_______________ROW2 _______, _______, WAT, UM(LEXI), RUPA, TADA, YUNO, _______, UM(LELM), UM(OM), _______, MUSIC_A, MUSIC_B, _______, KC_INS
-#define ____65_RAISE_______________ROW3 _______, UM(LALL), UM(EFF), DICE, FART, _______, HUGS, JOY, KISS, LOD, _______, NOPENAH, YEPYEP, KC_END
-#define ____65_RAISE_______________ROW4 OS_RSFT, CUIDADO, UM(ECKS), CATS, DOMO, BUGS, UM(NUM), MUSIC, DANCE, UM(LPRO), SHRUG, KC_BTN1, KC_MS_U, KC_BTN2
-#define ____65_RAISE_______________ROW5 OS_RCTL, OS_RALT, OS_RGUI, FLIP, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R
-
-/* _LOWER
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
- * │ │ │ │ │ │ │ │ │ │ │ │ │zzz│ │ │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
- * │ │u_f│u_i│u_m│u_n│usi│usn│u_s│ │ │PRT│ │ │ │ │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
- * │ │ │SLK│PAU│ │ │ │ │ │ │ │ │ │ │
- * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
- * │ │ZAL│ │CAP│VSN│ │NLK│ │ │ │ │ │ │ │
- * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
- * │ │ │ │ │ │ │ │ ← │ ↓ │ → │
- * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
- */
-#define ____65_LOWER_______________ROW1 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ZZZZZ, _______, _______
-#define ____65_LOWER_______________ROW2 _______, U_FRACT, U_ITALI, U_MONOS, U_NORML, U_SANSI, U_SANSN, U_SCRPT, _______, _______, KC_PSCR, _______, _______, _______, _______
-#define ____65_LOWER_______________ROW3 _______, _______, KC_SCRL, KC_PAUS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
-#define ____65_LOWER_______________ROW4 _______, ZALGO , _______, KC_CAPS, VRSN, _______, KC_NUM, _______, _______, _______, _______, _______, _______, _______
-#define ____65_LOWER_______________ROW5 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
-
-/* _ADJUST
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
- * │ │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│ │ │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
- * │ │r x│r m│rh+│rh-│rs+│rs-│rv+│rv-│ra+│ra-│ │ │RESET│ │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
- * │ │ │ │ │ │ │ │ │ │ │ │ │EEP RSET│ │
- * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
- * │ │ │ │ │ │ │ │Mut│V- │V+ │ │U MODE│ │ │
- * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
- * │ │ │ │ │ │ │ │ │ │ │
- * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
- */
-#define ____65_ADJUST______________ROW1 _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______
-#define ____65_ADJUST______________ROW2 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______
-#define ____65_ADJUST______________ROW3 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, EE_CLR, _______
-#define ____65_ADJUST______________ROW4 _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, UC_NEXT, _______, _______
-#define ____65_ADJUST______________ROW5 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
-
-#define ____65_ADJUST__________RGB_ROW2 _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, _______, _______, QK_BOOT, _______
-#define ____65_ADJUST__________RGB_ROW3 _______, RGB_M_P, RGB_M_B, _______, _______, _______, _______, _______, _______, _______, _______, _______, EE_CLR, _______
-
-#define ____65_ADJUST___________BL_ROW2 _______, BL_TOGG, BL_BRTG, BL_STEP, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______
-
-// clang-format on
diff --git a/users/rverst/config.h b/users/rverst/config.h
deleted file mode 100644
index 52e7c861ca..0000000000
--- a/users/rverst/config.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/* Copyright 2021 Robert Verst <robert@verst.eu> @rverst
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-#ifdef RGBLIGHT_ENABLE
-# define 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_SLEEP
-# define RGBLIGHT_EFFECT_BREATHING
-# define RGBLIGHT_EFFECT_RAINBOW_MOOD
-# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
-# define RGBLIGHT_EFFECT_STATIC_GRADIENT
-# define RGBLIGHT_EFFECT_TWINKLE
-#endif // RGBLIGHT_ENABLE
-
-#if defined(LOCKING_SUPPORT_ENABLE)
-# undef LOCKING_SUPPORT_ENABLE
-#endif
-
-#if defined(LOCKING_RESYNC_ENABLE)
-# undef LOCKING_RESYNC_ENABLE
-#endif
diff --git a/users/rverst/readme.md b/users/rverst/readme.md
deleted file mode 100644
index b25af82db4..0000000000
--- a/users/rverst/readme.md
+++ /dev/null
@@ -1,18 +0,0 @@
-# Overview
-
-This is my user space, main goal is to unify the experience between different
-keyboard models and operating systems.
-My native language is German and I almost exclusively use keyboards in the
-US-ANSI layout. I find this layout the most practical for programming as
-far as the placement of special characters is concerned. However, when I write
-in German, I miss a few special characters like umlauts, etc.
-Since I also use different operating systems (MacOS, Linux and Windows)
-and especially Windows and MacOS behave very differently regarding the input
-of such characters (under Linux there is at least the Compose key).
-So I needed a hardware solution, and that's how I came to QMK.
-
-Here are defined some key codes to put the keyboard in different modes
-(Mac, Windows, Linux) and the corresponding functions to make the input.
-And some logic to store the respective mode and load it at boot time.
-
-You'll find a proper layout here: [keyborads/id80/keymaps/rverst](../../keyboards/id80/keymaps/rverst)
diff --git a/users/rverst/rules.mk b/users/rverst/rules.mk
deleted file mode 100644
index 2b8fe92959..0000000000
--- a/users/rverst/rules.mk
+++ /dev/null
@@ -1,9 +0,0 @@
-SRC += rverst.c
-
-LEADER_ENABLE = no
-MOUSEKEY_ENABLE = no
-LTO_ENABLE = yes
-CONSOLE_ENABLE = yes
-UNICODEMAP_ENABLE = yes
-COMMAND_ENABLE = no
-
diff --git a/users/rverst/rverst.c b/users/rverst/rverst.c
deleted file mode 100644
index df37ba9b5f..0000000000
--- a/users/rverst/rverst.c
+++ /dev/null
@@ -1,425 +0,0 @@
-/* Copyright 2021 Robert Verst <robert@verst.eu> @rverst
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "rverst.h"
-#include "print.h"
-
-#ifdef UNICODEMAP_ENABLE
-# include "unicode.h"
-#endif
-
-userspace_config_t userspace_config;
-
-uint8_t get_mode(void) {
- int m = 0;
- if (userspace_config.mode_1) {
- m += 1;
- }
- if (userspace_config.mode_2) {
- m += 2;
- }
- if (userspace_config.mode_3) {
- m += 4;
- }
-
- return m;
-}
-
-void set_mode(uint8_t mode, bool save) {
- dprintf("set_mode - mode: %d, save: %s\n", mode, save ? "true" : "false");
- switch_mode(mode);
-
- if (mode > 7) {
- mode = 7;
- }
-
- if (mode >= 4) {
- userspace_config.mode_3 = true;
- mode -= 4;
- } else {
- userspace_config.mode_3 = false;
- }
-
- if (mode >= 2) {
- userspace_config.mode_2 = true;
- mode -= 2;
- } else {
- userspace_config.mode_2 = false;
- }
-
- if (mode > 0) {
- userspace_config.mode_1 = true;
- } else {
- userspace_config.mode_1 = false;
- }
-
- if (save) {
- eeconfig_update_user(userspace_config.raw);
- }
-}
-
-void switch_mode(uint8_t mode) {
-#ifdef UNICODEMAP_ENABLE
- switch (mode) {
- case MAC_UNI:
- set_unicode_input_mode(UNICODE_MODE_MACOS);
- break;
- case WINDOWS_UNI:
- set_unicode_input_mode(UNICODE_MODE_WINCOMPOSE);
- break;
- case LINUX_UNI:
- set_unicode_input_mode(UNICODE_MODE_LINUX);
- break;
- }
-#endif
-}
-
-bool is_unicode(uint8_t mode) { return (mode == MAC_UNI) || (mode == WINDOWS_UNI) || (mode == LINUX_UNI); }
-
-//**********************
-// keyboard_pre_init
-//**********************
-__attribute__((weak)) void keyboard_pre_init_keymap(void) {}
-
-void keyboard_pre_init_user(void) {
- userspace_config.raw = eeconfig_read_user();
- switch_mode(get_mode());
- keyboard_pre_init_keymap();
-}
-
-//************************
-// keyboard_post_init
-//************************
-__attribute__((weak)) void keyboard_post_init_keymap(void) {}
-
-void keyboard_post_init_user(void) {
- // debug_enable = true;
- // debug_matrix=true;
- // debug_keyboard = true;
-
-#ifdef RGBLIGHT_ENABLE
-
-#endif
-
- keyboard_post_init_keymap();
-}
-
-//**********************
-// eeconfig_init
-//**********************
-
-__attribute__((weak)) void eeconfig_init_keymap(void) {}
-
-void eeconfig_init_user(void) {
- userspace_config.raw = 0;
- eeconfig_update_user(userspace_config.raw);
- eeconfig_init_keymap();
- keyboard_init();
-}
-
-//**********************
-// process_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) {
- if (!process_record_keymap(keycode, record)) {
- return false;
- }
-
- if (!record->event.pressed) {
- return true;
- }
-
- bool ls = (get_mods() | get_weak_mods()) & MOD_BIT(KC_LSFT);
- bool rs = (get_mods() | get_weak_mods()) & MOD_BIT(KC_RSFT);
- bool as = ls || rs;
-
- int mode = get_mode();
-
- switch (keycode) {
- case RV_SM0:
- case RV_SM0S:
- set_mode(MAC_UNI, keycode == RV_SM0S);
- return false;
- case RV_SM1:
- case RV_SM1S:
- set_mode(WINDOWS_UNI, keycode == RV_SM1S);
- return false;
- case RV_SM2:
- case RV_SM2S:
- set_mode(LINUX_UNI, keycode == RV_SM2S);
- return false;
- case RV_SM3:
- case RV_SM3S:
- set_mode(MAC, keycode == RV_SM3S);
- return false;
- case RV_SM4:
- case RV_SM4S:
- set_mode(WINDOWS, keycode == RV_SM4S);
- return false;
-
- case RV_SAYM:
- switch (mode) {
- case MAC:
- send_string("MacOS (normal)");
- break;
- case WINDOWS:
- send_string("Windows (normal)");
- break;
- case MAC_UNI:
- send_string("MacOS (unicode)");
- break;
- case WINDOWS_UNI:
- send_string("Windows (unicode)");
- break;
- case LINUX_UNI:
- send_string("Linux (unicode)");
- break;
- }
- return false;
-
- // Lock computer
- case RV_LOCK:
- if (mode == MAC || mode == MAC_UNI) {
- tap_code16(G(C(KC_Q)));
- } else if (mode == WINDOWS || mode == WINDOWS_UNI) {
- tap_code16(G(KC_L));
- }
- return false;
-
- // Screenshot
- case RV_SNAP:
- if (mode == MAC || mode == MAC_UNI) {
- if (ls) unregister_code(KC_LSFT);
- if (rs) unregister_code(KC_RSFT);
-
- tap_code16(G(S(as ? KC_4 : KC_5)));
-
- if (ls) register_code(KC_LSFT);
- if (rs) register_code(KC_RSFT);
- } else if (mode == WINDOWS || mode == WINDOWS_UNI) {
- tap_code16(G(S(KC_S)));
- }
- return false;
-
- // Umlauts - äÄöÖüÜ
- case RV_AUML:
- case RV_OUML:
- case RV_UUML:
- if (is_unicode(mode)) {
- if (keycode == RV_AUML) {
- if (as)
- send_unicode_string("Ä");
- else
- send_unicode_string("ä");
- } else if (keycode == RV_OUML) {
- if (as)
- send_unicode_string("Ö");
- else
- send_unicode_string("ö");
- } else if (keycode == RV_UUML) {
- if (as)
- send_unicode_string("Ü");
- else
- send_unicode_string("ü");
- }
- } else if (mode == MAC) {
- if (ls) unregister_code(KC_LSFT);
- if (rs) unregister_code(KC_RSFT);
-
- tap_code16(A(KC_U));
-
- if (as) register_code(KC_LSFT);
- if (keycode == RV_AUML) {
- tap_code(KC_A);
- } else if (keycode == RV_OUML) {
- tap_code(KC_O);
- } else if (keycode == RV_UUML) {
- tap_code(KC_U);
- }
- if (rs) {
- unregister_code(KC_LSFT);
- register_code(KC_RSFT);
- }
- } else if (mode == WINDOWS) {
- if (ls) unregister_code(KC_LSFT);
- if (rs) unregister_code(KC_RSFT);
-
- register_code(KC_RALT);
- tap_code(KC_1);
- if (keycode == RV_AUML) {
- if (as)
- tap_code(KC_4);
- else
- tap_code(KC_3);
- tap_code(KC_2);
- } else if (keycode == RV_OUML) {
- if (as) {
- tap_code(KC_5);
- tap_code(KC_3);
- } else {
- tap_code(KC_4);
- tap_code(KC_8);
- }
- } else if (keycode == RV_UUML) {
- if (as) {
- tap_code(KC_5);
- tap_code(KC_4);
- } else {
- tap_code(KC_2);
- tap_code(KC_9);
- }
- }
- unregister_code(KC_RALT);
-
- if (ls) register_code(KC_LSFT);
- if (rs) register_code(KC_RSFT);
- }
- return false;
-
- // Euro sign - €
- // with legacy-mode for MAC and WINDOWS without unicode support
- case RV_EUR:
- if (is_unicode(mode)) {
- send_unicode_string("€");
- } else if (mode == MAC) {
- tap_code16(S(A(KC_2)));
- } else if (mode == WINDOWS) {
- register_code(KC_RALT);
- tap_code(KC_0);
- tap_code(KC_1);
- tap_code(KC_2);
- tap_code(KC_8);
- unregister_code(KC_RALT);
- }
- return false;
-
- // Sharp-S - ß
- // with legacy-mode for MAC and WINDOWS without unicode support
- case RV_SZ:
- if (is_unicode(mode)) {
- if (as) {
- send_unicode_string("§");
- } else {
- send_unicode_string("ß");
- }
- } else if (mode == MAC) {
- tap_code16(A(KC_S));
- } else if (mode == WINDOWS) {
- register_code(KC_RALT);
- tap_code(KC_2);
- tap_code(KC_2);
- tap_code(KC_5);
- unregister_code(KC_RALT);
- }
- return false;
-
- // Trademark - ™
- case RV_TM:
- if (is_unicode(mode)) {
- send_unicode_string("™");
- }
- return false;
-
- // Registered trademark - ®
- case RV_RT:
- if (is_unicode(mode)) {
- send_unicode_string("®");
- }
- return false;
-
- // Copyright - ©
- case RV_CC:
- if (is_unicode(mode)) {
- send_unicode_string("©");
- }
- return false;
-
- // Degree - °
- case RV_DEG:
- if (is_unicode(mode)) {
- send_unicode_string("°");
- }
- return false;
-
- // Plus-minus - ±
- case RV_PM:
- if (is_unicode(mode)) {
- send_unicode_string("±");
- }
- return false;
-
- // Not equal - ≠
- case RV_UNEQ:
- if (is_unicode(mode)) {
- send_unicode_string("≠");
- }
- return false;
-
- // Superscript one - ¹
- case RV_SUP1:
- if (is_unicode(mode)) {
- send_unicode_string("¹");
- }
- return false;
-
- // Superscript two - ²
- case RV_SUP2:
- if (is_unicode(mode)) {
- send_unicode_string("²");
- }
- return false;
-
- // Superscript three - ³
- case RV_SUP3:
- if (is_unicode(mode)) {
- send_unicode_string("³");
- }
- return false;
- // vim equal split
- case RV_SEQU:
- tap_code16(C(KC_W));
- tap_code(KC_EQL);
- return false;
- // vim vertical split increase
- case RV_VINC:
- tap_code16(C(KC_W));
- tap_code(KC_4);
- tap_code16(S(KC_DOT));
- return false;
- // vim vertical split decrease
- case RV_VDEC:
- tap_code16(C(KC_W));
- tap_code(KC_4);
- tap_code16(S(KC_COMM));
- return false;
- // vim split increase
- case RV_SINC:
- tap_code16(C(KC_W));
- tap_code(KC_4);
- tap_code16(S(KC_EQL));
- return false;
- // vim split decrease
- case RV_SDEC:
- tap_code16(C(KC_W));
- tap_code(KC_4);
- tap_code(KC_MINS);
- return false;
- }
-
- return true;
-}
diff --git a/users/rverst/rverst.h b/users/rverst/rverst.h
deleted file mode 100644
index 2e46d41d06..0000000000
--- a/users/rverst/rverst.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/* Copyright 2021 Robert Verst <robert@verst.eu> @rverst
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-#include QMK_KEYBOARD_H
-
-enum userspace_mode {
- MAC = 0,
- WINDOWS,
- MAC_UNI,
- WINDOWS_UNI,
- LINUX_UNI,
-};
-
-enum userspace_keycodes {
- RV_NON = SAFE_RANGE,
- RV_SM0, // set Mac Unicode mode
- RV_SM1, // set Window Unicode mode
- RV_SM2, // set Linux Unicode mode
- RV_SM3, // set Mac lagecy mode
- RV_SM4, // set Windows legacy mode
- RV_SM0S, // set Mac Unicode mode and save
- RV_SM1S, // set Windows Unicode mode and save
- RV_SM2S, // set Linux Unicode and save
- RV_SM3S, // set Mac legacy mode
- RV_SM4S, // set Windows legacy and save
- RV_SAYM, // say mode
- RV_LOCK, // lock computer
- RV_AUML, // äÄ
- RV_OUML, // öÖ
- RV_UUML, // üÜ
- RV_EUR, // €
- RV_SZ, // ߧ
- RV_TM, // ™
- RV_RT, // ®
- RV_CC, // ©
- RV_DEG, // °
- RV_SNAP, // Screenshot
- RV_PM, // ±
- RV_UNEQ, // ≠
- RV_SUP1, // ¹
- RV_SUP2, // ²
- RV_SUP3, // ³
- RV_VINC, // vim increase vertical split size (<c-w> 4>)
- RV_VDEC, // vim decrease vertical split size (<c-w> 4<)
- RV_SINC, // vim increase vertical split size (<c-w> 4+)
- RV_SDEC, // vim decrease vertical split size (<c-w> 4-)
- RV_SEQU, // vim equal split size (<c-w> =)
-};
-
-typedef union {
- uint32_t raw;
- struct {
- bool mode_1 : 1;
- bool mode_2 : 1;
- bool mode_3 : 1;
- };
-} userspace_config_t;
-
-extern userspace_config_t userspace_config;
-
-uint8_t get_mode(void);
-void set_mode(uint8_t mode, bool save);
-void switch_mode(uint8_t mode);
-bool is_unicode(uint8_t mode);
-
-void keyboard_pre_init_keymap(void);
-void keyboard_post_init_keymap(void);
-void eeconfig_init_keymap(void);
-bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
-
diff --git a/users/rverst/unicode.h b/users/rverst/unicode.h
deleted file mode 100644
index 4a92d32038..0000000000
--- a/users/rverst/unicode.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Copyright 2021 Robert Verst <robert@verst.eu> @rverst
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-#ifdef UNICODE_SELECTED_MODES
-# undef UNICODE_SELECTED_MODES
-# define UNICODE_SELECTED_MODES UNICODE_MODE_MACOS, UNICODE_MODE_LINUX, UNICODE_MODE_WINCOMPOSE
-#endif
-
-enum unicode_names { BANG, IRONY, SNEK };
-
-const uint32_t unicode_map[] PROGMEM = {
- [BANG] = 0x203D,
- [IRONY] = 0x2E2E,
- [SNEK] = 0x1F40D,
-};
-
diff --git a/users/scheiklp/koy_keys_on_quertz_de_latin1.h b/users/scheiklp/koy_keys_on_quertz_de_latin1.h
deleted file mode 100644
index 7c88eabd79..0000000000
--- a/users/scheiklp/koy_keys_on_quertz_de_latin1.h
+++ /dev/null
@@ -1,64 +0,0 @@
-#pragma once
-
-/*
-This file defines the desierd KOY keys if you use a software (operating sysetm)
-configured for a QUERTZ layout (de-latin1).
-These chars can be created by using ALTGR on linux and a few of them on windows
-with a German de-latin1 layout (depending on desktop environment and/or
-application).
- ′¹²³¼½¬{[]}\¸
- @ł€¶ŧ←↓→øþ¨~
- æſðđŋħ̣ĸł˝^’
- |»«¢„“”µ·…–
-Additionally, there are some common chars that we dit not yet define:
- §
-*/
-
-
-// NQN key definitions in no particular order
-#define N_LT KC_NONUS_BACKSLASH
-#define N_HS KC_NONUS_HASH
-#define N_DOTS RALT(KC_DOT) // …
-#define N_USC LSFT(KC_SLASH) // _
-#define N_LSQBR RALT(KC_8) // [
-#define N_RSQBR RALT(KC_9) // ]
-#define N_CIRC KC_GRAVE // ^
-#define N_EXKL LSFT(KC_1) // !
-#define N_GT LSFT(KC_NONUS_BACKSLASH) // >
-#define N_EQ LSFT(KC_0) // =
-#define N_AMP LSFT(KC_6) // &
-#define N_BSLS RALT(KC_MINS) // \ backslash
-#define N_SLSH LSFT(KC_7) // /
-#define N_LCUBR RALT(KC_7) // {
-#define N_RCUBR RALT(KC_0) // }
-#define N_ASTR LSFT(KC_RBRC) // *
-#define N_QUES LSFT(KC_MINS) // ?
-#define N_LPARN LSFT(KC_8) // (
-#define N_RPARN LSFT(KC_9) // )
-#define N_MINS KC_SLASH // -
-#define N_COLN LSFT(KC_DOT) // :
-#define N_HASH KC_BACKSLASH // #
-#define N_DLR LSFT(KC_4) // $
-#define N_PIPE RALT(KC_NONUS_BACKSLASH) // |
-#define N_TILD RALT(KC_RBRC) // ~
-#define N_GRAVE LSFT(KC_EQUAL) // `
-#define N_PLUS KC_RBRC // +
-#define N_PERC LSFT(KC_5) // %
-#define N_QUOT LSFT(KC_2) // "
-#define N_SING LSFT(KC_BACKSLASH) // '
-#define N_SEMI LSFT(KC_COMM) // ;
-#define N_EURO RALT(KC_E) // €
-#define N_AT RALT(KC_Q) // @
-#define N_Z KC_Y
-#define N_Y KC_Z
-#define N_AE KC_QUOTE // ä
-#define N_OE KC_SCLN // ö
-#define N_UE KC_LBRC // ü
-#define N_MU RALT(KC_M) // µ
-#define N_SS KC_MINS // ß
-#define N_DEGRE LSFT(KC_GRAVE) // °
-#define N_PASTE LCTL(KC_V) // CTRL+V
-#define N_COPY LCTL(KC_C) // CTRL+C
-#define N_CUT LCTL(KC_X) // CTRL+X
-#define N_UNDO LCTL(N_Z) // CTRL+Z
-#define N_ACUT KC_EQL // ´
diff --git a/users/scotto/config.h b/users/scotto/config.h
deleted file mode 100644
index 34fe069d6e..0000000000
--- a/users/scotto/config.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
-Copyright 2023 Joe Scotto
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-
-// config added when Tap Dance is enabled
-#ifdef TAP_DANCE_ENABLE
-# ifdef TAPPING_TERM
-# undef TAPPING_TERM
-# define TAPPING_TERM 135
-# endif
-# define TAPPING_TERM_PER_KEY
-# define PERMISSIVE_HOLD
-#endif
diff --git a/users/scotto/readme.md b/users/scotto/readme.md
deleted file mode 100644
index f7fdeb24c4..0000000000
--- a/users/scotto/readme.md
+++ /dev/null
@@ -1,17 +0,0 @@
-# Scotto
-
-Applies to layouts:
-- LAYOUT_ortho_4x10
-- LAYOUT_split_3x5_2
-- LAYOUT_split_3x5_3
-
-### QWERTY
-
-Scotto's default functional layout is Colemak. To compile this layout in QWERTY (US English), append compile command with `KEYMAP=QWERTY` environment variable.
-```
-qmk compile -kb <keyboardName> -km scotto -e KEYMAP=QWERTY
-```
-Example for [Scotto34](/keyboards/scottokeebs/scotto34):
-```
-qmk compile -kb scottokeebs/scotto34 -km scotto -e KEYMAP=QWERTY
-```
diff --git a/users/scotto/rules.mk b/users/scotto/rules.mk
deleted file mode 100644
index 50a0196675..0000000000
--- a/users/scotto/rules.mk
+++ /dev/null
@@ -1,11 +0,0 @@
-SRC += scotto.c
-
-TAP_DANCE_ENABLE = yes
-
-ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
- SRC += tap_dance.c
-endif
-
-ifneq ($(strip $(KEYMAP)),)
- OPT_DEFS += -DKEYMAP_$(KEYMAP)
-endif
diff --git a/users/scotto/scotto.c b/users/scotto/scotto.c
deleted file mode 100644
index 41520973c6..0000000000
--- a/users/scotto/scotto.c
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
-Copyright 2023 Joe Scotto
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "scotto.h"
diff --git a/users/scotto/scotto.h b/users/scotto/scotto.h
deleted file mode 100644
index 023906852e..0000000000
--- a/users/scotto/scotto.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
-Copyright 2023 Joe Scotto
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-
-#include QMK_KEYBOARD_H
-
-#ifdef TAP_DANCE_ENABLE
- #include "tap_dance.h"
-#endif
-
-// Assign rows of keycodes to a single def each
-#define __QWERTY1__ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P
-#define __QWERTY2__ KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_BSPC
-#define __QWERTY3a_ LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH)
-#define __QWERTY3b_ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH
-
-#define __COLEMAK1__ KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_BSPC
-#define __COLEMAK2__ KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O
-#define __COLEMAK3a_ LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH)
-#define __COLEMAK3b_ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH
-
-#define ______________SYM_MEDIA_NAV1______________ KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL
-#define ______________SYM_MEDIA_NAV2______________ KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT
-#define ______________SYM_MEDIA_NAV3______________ LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILD, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS)
-
-#define _________________NUM_SYM1_________________ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC
-#define _________________NUM_SYM2_________________ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0
-#define _________________NUM_SYM3a________________ KC_LSFT, KC_NO, KC_NO, KC_NO, MO(3), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH)
-#define _________________NUM_SYM3b________________ KC_LSFT, KC_NO, KC_NO, KC_NO, MO(8), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH)
-
-#define ________________FUNC_SYS1a________________ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(5), TO(4)
-#define ________________FUNC_SYS1b________________ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(4), TO(5), TO(0)
-#define ________________FUNC_SYS2_________________ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10
-#define ________________FUNC_SYS3_________________ KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12
-
-#define _______THUMB6_1_______ TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI), KC_LALT, LGUI_T(KC_SPC), LT(1, KC_TAB), LT(2, KC_ENT), TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI)
-#define _______THUMB6_4_______ TD(TD_LALT_ESC_WINDOWS_EMOJI), KC_LALT, LCTL_T(KC_SPC), LT(6, KC_TAB), LT(7, KC_ENT), TD(TD_LALT_ESC_WINDOWS_EMOJI)
-#define _______THUMB6_5_______ TD(TD_LALT_ESC_WINDOWS_EMOJI), KC_LCTL, KC_SPC, LT(6, KC_TAB), LT(7, KC_ENT), TD(TD_LALT_ESC_WINDOWS_EMOJI)
-#define _____THUMB6_TRNS______ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
-
-#define _______THUMB4_1_______ TD(TD_ESC_LALT_LCTL_SPOTLIGHT_EMOJI), LGUI_T(KC_SPC), LT(1, KC_TAB), LT(2, KC_ENT)
-#define _______THUMB4_4_______ TD(TD_ESC_LCTL_LALT_WINDOWS_EMOJI), LCTL_T(KC_SPC), LT(6, KC_TAB), LT(7, KC_ENT)
-#define _______THUMB4_5_______ KC_LCTL, KC_SPC, LT(6, KC_TAB), LT(7, KC_ENT)
-#define _____THUMB4_TRNS______ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
-
-// set functional layout
-#if defined (KEYMAP_QWERTY)
- #define _________________KEYMAP1__________________ __QWERTY1__
- #define _________________KEYMAP2__________________ __QWERTY2__
- #define _________________KEYMAP3a_________________ __QWERTY3a_
- #define _________________KEYMAP3b_________________ __QWERTY3b_
-#else
- #define _________________KEYMAP1__________________ __COLEMAK1__
- #define _________________KEYMAP2__________________ __COLEMAK2__
- #define _________________KEYMAP3a_________________ __COLEMAK3a_
- #define _________________KEYMAP3b_________________ __COLEMAK3b_
-#endif
diff --git a/users/scotto/tap_dance.c b/users/scotto/tap_dance.c
deleted file mode 100644
index e618384334..0000000000
--- a/users/scotto/tap_dance.c
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
-Copyright 2023 Joe Scotto
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "tap_dance.h"
-#include "scotto.h"
-
-// Create an instance of 'td_tap_t' for the 'x' tap dance.
-static td_tap_t xtap_state = {
- .is_press_action = true,
- .state = TD_NONE
-};
-
-td_state_t cur_dance(tap_dance_state_t *state) {
- if (state->count == 1) {
- if (state->interrupted || !state->pressed) {
- return TD_SINGLE_TAP;
- } else {
- return TD_SINGLE_HOLD;
- }
- } else if (state->count == 2) {
- if (state->interrupted || !state->pressed) {
- return TD_DOUBLE_TAP;
- } else {
- return TD_DOUBLE_HOLD;
- }
- } else if (state->count == 3) {
- if (state->interrupted || !state->pressed) {
- return TD_TRIPLE_TAP;
- } else {
- return TD_TRIPLE_HOLD;
- }
- }
-
- return TD_UNKNOWN;
-}
-
-void td_esc_lalt_lctl_spotlight_emoji_finished(tap_dance_state_t *state, void *user_data) {
- xtap_state.state = cur_dance(state);
- switch (xtap_state.state) {
- case TD_SINGLE_TAP: tap_code(KC_ESC); break;
- case TD_SINGLE_HOLD: register_code(KC_LALT); break;
- case TD_DOUBLE_HOLD: register_code(KC_LCTL); break;
- case TD_DOUBLE_TAP: tap_code16(G(KC_SPC)); break;
- case TD_TRIPLE_TAP: tap_code16(C(G(KC_SPC))); break;
- default: break;
- }
-}
-
-void td_esc_lalt_lctl_spotlight_emoji_reset(tap_dance_state_t *state, void *user_data) {
- switch (xtap_state.state) {
- case TD_SINGLE_TAP: unregister_code(KC_ESC); break;
- case TD_SINGLE_HOLD: unregister_code(KC_LALT); break;
- case TD_DOUBLE_HOLD: unregister_code(KC_LCTL); break;
- default: break;
- }
- xtap_state.state = TD_NONE;
-}
-
-void td_esc_lctl_lalt_windows_emoji_finished(tap_dance_state_t *state, void *user_data) {
- xtap_state.state = cur_dance(state);
- switch (xtap_state.state) {
- case TD_SINGLE_TAP: tap_code16(KC_ESC); break;
- case TD_SINGLE_HOLD: register_code(KC_LCTL); break;
- case TD_DOUBLE_HOLD: register_code(KC_LALT); break;
- case TD_DOUBLE_TAP: tap_code(KC_LGUI); break;
- case TD_TRIPLE_TAP: tap_code16(G(KC_DOT)); break;
- default: break;
- }
-}
-
-void td_esc_lctl_lalt_windows_emoji_reset(tap_dance_state_t *state, void *user_data) {
- switch (xtap_state.state) {
- case TD_SINGLE_TAP: unregister_code(KC_ESC); break;
- case TD_SINGLE_HOLD: unregister_code(KC_LCTL); break;
- case TD_DOUBLE_HOLD: unregister_code(KC_LALT); break;
- default: break;
- }
- xtap_state.state = TD_NONE;
-}
-
-void td_lalt_esc_windowr_emoji_finished(tap_dance_state_t *state, void *user_data) {
- xtap_state.state = cur_dance(state);
- switch (xtap_state.state) {
- case TD_SINGLE_TAP: register_code(KC_ESC); break;
- case TD_SINGLE_HOLD: register_code(KC_LALT); break;
- case TD_DOUBLE_TAP: tap_code(KC_LGUI); break;
- case TD_TRIPLE_TAP: tap_code16(G(KC_DOT)); break;
- default: break;
- }
-}
-
-void td_lalt_esc_windowr_emoji_reset(tap_dance_state_t *state, void *user_data) {
- switch (xtap_state.state) {
- case TD_SINGLE_TAP: unregister_code(KC_ESC); break;
- case TD_SINGLE_HOLD: unregister_code(KC_LALT); break;
- default: break;
- }
- xtap_state.state = TD_NONE;
-}
-
-void td_lctl_esc_spotlight_emoji_finished(tap_dance_state_t *state, void *user_data) {
- xtap_state.state = cur_dance(state);
- switch (xtap_state.state) {
- case TD_SINGLE_TAP: register_code(KC_ESC); break;
- case TD_SINGLE_HOLD: register_code(KC_LCTL); break;
- case TD_DOUBLE_TAP: tap_code16(G(KC_SPC)); break;
- case TD_TRIPLE_TAP: tap_code16(C(G(KC_SPC))); break;
- default: break;
- }
-}
-
-void td_lctl_esc_spotlight_emoji_reset(tap_dance_state_t *state, void *user_data) {
- switch (xtap_state.state) {
- case TD_SINGLE_TAP: unregister_code(KC_ESC); break;
- case TD_SINGLE_HOLD: unregister_code(KC_LCTL); break;
- default: break;
- }
- xtap_state.state = TD_NONE;
-}
-
- // Tap Dance definitions
-tap_dance_action_t tap_dance_actions[] = {
- [TD_LCTL_ESC_SPOTLIGHT_EMOJI] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, td_lctl_esc_spotlight_emoji_finished, td_lctl_esc_spotlight_emoji_reset),
- [TD_LALT_ESC_WINDOWS_EMOJI] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, td_lalt_esc_windowr_emoji_finished, td_lalt_esc_windowr_emoji_reset),
- [TD_ESC_LALT_LCTL_SPOTLIGHT_EMOJI] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, td_esc_lalt_lctl_spotlight_emoji_finished, td_esc_lalt_lctl_spotlight_emoji_reset),
- [TD_ESC_LCTL_LALT_WINDOWS_EMOJI] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, td_esc_lctl_lalt_windows_emoji_finished, td_esc_lctl_lalt_windows_emoji_reset),
-};
-
-uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI) :
- case TD(TD_LALT_ESC_WINDOWS_EMOJI) :
- case TD(TD_ESC_LALT_LCTL_SPOTLIGHT_EMOJI) :
- case TD(TD_ESC_LCTL_LALT_WINDOWS_EMOJI) :
- case LGUI_T(KC_SPC) :
- case LT(1, KC_SPC) :
- case LT(1, KC_TAB) :
- case LT(2, KC_ENT) :
- return 200;
- default:
- return TAPPING_TERM;
- }
-};
diff --git a/users/scotto/tap_dance.h b/users/scotto/tap_dance.h
deleted file mode 100644
index 4082d2b9fb..0000000000
--- a/users/scotto/tap_dance.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
-Copyright 2023 Joe Scotto
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-#include "scotto.h"
-
-typedef enum {
- TD_NONE = 0,
- TD_UNKNOWN,
- TD_SINGLE_HOLD,
- TD_DOUBLE_HOLD,
- TD_TRIPLE_HOLD,
- TD_SINGLE_TAP,
- TD_DOUBLE_TAP,
- TD_TRIPLE_TAP
-} td_state_t;
-
-typedef struct {
- bool is_press_action;
- td_state_t state;
-} td_tap_t;
-
-enum {
- TD_LCTL_ESC_SPOTLIGHT_EMOJI = 0,
- TD_LALT_ESC_WINDOWS_EMOJI,
- TD_ESC_LALT_LCTL_SPOTLIGHT_EMOJI,
- TD_ESC_LCTL_LALT_WINDOWS_EMOJI
-};
diff --git a/users/sethBarberee/config.h b/users/sethBarberee/config.h
deleted file mode 100644
index f323b27368..0000000000
--- a/users/sethBarberee/config.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/* Copyright 2021 SethBarberee <seth.barberee@gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#pragma once
-
-#ifdef RGBLIGHT_ENABLE
-# define RGBLIGHT_SLEEP
-# ifndef RGBLIGHT_HUE_STEP
-# define RGBLIGHT_HUE_STEP 8
-# endif
-# ifndef RGBLIGHT_SAT_STEPT
-# define RGBLIGHT_SAT_STEP 8
-# endif
-# ifndef RGBLIGHT_VAL_STEP
-# define RGBLIGHT_VAL_STEP 8
-# endif
-
-// Trim animations I don't use/like
-# ifndef RGBLIGHT_EFFECT_BREATHING
-# define RGBLIGHT_EFFECT_BREATHING
-# endif
-# ifndef RGBLIGHT_EFFECT_STATIC_GRADIENT
-# define RGBLIGHT_EFFECT_STATIC_GRADIENT
-# endif
-# ifndef RGBLIGHT_EFFECT_TWINKLE
-# define RGBLIGHT_EFFECT_TWINKLE
-# endif
-# ifdef RGBLIGHT_DEFAULT_MODE
-# undef RGBLIGHT_DEFAULT_MODE
-# define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_TWINKLE
-# endif
-
-# ifndef CAPS_LOCK_MODE
-# define CAPS_LOCK_MODE RGBLIGHT_MODE_STATIC_LIGHT
-# endif
-#endif // RGBLIGHT_ENABLE
-
-#ifndef AUDIO_ENABLE
-# define NO_MUSIC_MODE
-#endif // AUDIO_ENABLE
-
-#define FORCE_NKRO // Force NKRO on by default
-
-// Totally taken from @drashna's userspace
-#ifdef TAPPING_TERM
-# undef TAPPING_TERM
-#endif // TAPPING_TERM
-//
-// Keeping these commented for examples when I want to tweak per keyboard
-// but setting a default across my boards for now
-//
-//#if defined(KEYBOARD_ergodox_ez)
-//# define TAPPING_TERM 185
-#if defined(KEYBOARD_crkbd)
-# define TAPPING_TERM 185
-#else
-# define TAPPING_TERM 200
-#endif
-
-#if !defined(LAYER_STATE_16BIT) && !defined(LAYER_STATE_8BIT) && !defined(LAYER_STATE_32BIT)
-# define LAYER_STATE_8BIT
-#endif
-
-/* 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
diff --git a/users/sethBarberee/readme.md b/users/sethBarberee/readme.md
deleted file mode 100644
index 75d892cb85..0000000000
--- a/users/sethBarberee/readme.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# seth's userspace
-
-## Features
-* Escape/Caps Lock tap dance (1 for Escape / 2 for Caps Lock)
- * RGB Mode indication for Caps Lock
- * Solid Mode for Caps On
diff --git a/users/sethBarberee/rgb_light.c b/users/sethBarberee/rgb_light.c
deleted file mode 100644
index d1f43080c3..0000000000
--- a/users/sethBarberee/rgb_light.c
+++ /dev/null
@@ -1,52 +0,0 @@
- /* Copyright 2021 SethBarberee <seth.barberee@gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#include "rgb_light.h"
-
-#if defined(RGBLIGHT_ENABLE)
-layer_state_t layer_state_set_rgb_light(layer_state_t state){
- switch(get_highest_layer(state)) {
- case _QWERTY:
- rgblight_set_hsv_and_mode(HSV_RED, RGBLIGHT_MODE_TWINKLE + 3);
- break;
- case _LOWER:
- rgblight_set_hsv_and_mode(HSV_GREEN, RGBLIGHT_MODE_BREATHING + 3);
- break;
- case _RAISE:
- rgblight_set_hsv_and_mode(HSV_BLUE, RGBLIGHT_MODE_BREATHING + 3);
- break;
- case _ADJUST:
- rgblight_set_hsv_and_mode(HSV_GOLDENROD, RGBLIGHT_MODE_BREATHING + 3);
- break;
- default:
- rgblight_set_hsv_and_mode(HSV_PINK, RGBLIGHT_MODE_TWINKLE + 3);
- break;
-
- }
- return state;
-}
-
-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);
-}
-
-void keyboard_post_init_rgb_light(void)
-{
- layer_state_set_rgb_light(layer_state);
-}
-#endif
-
diff --git a/users/sethBarberee/rgb_light.h b/users/sethBarberee/rgb_light.h
deleted file mode 100644
index 2e0477ce59..0000000000
--- a/users/sethBarberee/rgb_light.h
+++ /dev/null
@@ -1,21 +0,0 @@
- /* Copyright 2021 SethBarberee <seth.barberee@gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#pragma once
-#include "sethBarberee.h"
-
-layer_state_t layer_state_set_rgb_light(layer_state_t state);
-void keyboard_post_init_rgb_light(void);
-void rgblight_set_hsv_and_mode(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode);
diff --git a/users/sethBarberee/rules.mk b/users/sethBarberee/rules.mk
deleted file mode 100644
index f1bc3325fe..0000000000
--- a/users/sethBarberee/rules.mk
+++ /dev/null
@@ -1,10 +0,0 @@
-SRC += sethBarberee.c
-
-# Add in custom tap dances when tap dance is enabled
-ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
- SRC += tap_dance.c
-endif
-
-ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
- SRC += rgb_light.c
-endif
diff --git a/users/sethBarberee/sethBarberee.c b/users/sethBarberee/sethBarberee.c
deleted file mode 100644
index e6e9dbf4a2..0000000000
--- a/users/sethBarberee/sethBarberee.c
+++ /dev/null
@@ -1,100 +0,0 @@
- /* Copyright 2021 SethBarberee <seth.barberee@gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#include "sethBarberee.h"
-#include "version.h"
-
-__attribute__ ((weak)) void keyboard_pre_init_keymap(void) {}
-
-void keyboard_pre_init_user(void){
-#if defined(BOOTLOADER_CATERINA)
- // Make sure the red LEDs don't light
- setPinOutput(D5);
- writePinHigh(D5);
-
- setPinOutput(B0);
- writePinHigh(B0);
-#endif
- keyboard_pre_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){
-
- if (!is_keyboard_master()) {
- return state;
- }
-
- state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
-#if defined(RGBLIGHT_ENABLE)
- state = layer_state_set_rgb_light(state);
-#endif
- return layer_state_set_keymap(state);
-}
-
-__attribute__ ((weak)) void keyboard_post_init_keymap(void) {}
-
-void keyboard_post_init_user(void)
-{
-#if defined(RGBLIGHT_ENABLE)
- keyboard_post_init_rgb_light();
-#endif
- keyboard_post_init_keymap();
-}
-
-__attribute__((weak)) void suspend_power_down_keymap(void) {}
-
-void suspend_power_down_user(void) {
-#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(); }
-
-__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))
- {
- switch (keycode) {
- case KC_VRSN: // Prints firmware version
- if (record->event.pressed) {
- SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE);
- }
- break;
- case KC_QWER: // Set default layer to QWERTY
- if (record->event.pressed) {
- set_single_persistent_default_layer(_QWERTY);
- }
- break;
- case KC_COLE: // Set default layer to COLEMAK
- if (record->event.pressed) {
- set_single_persistent_default_layer(_COLEMAK);
- }
- break;
- case KC_DVOR: // Set default layer to DVORAK
- if (record->event.pressed) {
- set_single_persistent_default_layer(_DVORAK);
- }
- break;
- }
- }
- return true;
-}
diff --git a/users/sethBarberee/sethBarberee.h b/users/sethBarberee/sethBarberee.h
deleted file mode 100644
index ba19a524a4..0000000000
--- a/users/sethBarberee/sethBarberee.h
+++ /dev/null
@@ -1,55 +0,0 @@
- /* Copyright 2021 SethBarberee <seth.barberee@gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#pragma once
-
-#include QMK_KEYBOARD_H
-
-#include "wrappers.h"
-
-enum layers {
- _QWERTY,
- _COLEMAK,
- _DVORAK,
- _LOWER,
- _RAISE,
- _ADJUST
-};
-
-enum userspace_keycodes {
- KC_VRSN = SAFE_RANGE,
- KC_QWER,
- KC_COLE,
- KC_DVOR,
- NEW_SAFE_RANGE
-};
-
-#define KC_LOWR MO(_LOWER)
-#define KC_RASE MO(_RAISE)
-
-#ifdef TAP_DANCE_ENABLE
-# include "tap_dance.h"
-#endif
-
-#ifdef RGBLIGHT_ENABLE
-# include "rgb_light.h"
-#endif
-
-void keyboard_pre_init_keymap(void);
-void keyboard_post_init_keymap(void);
-void suspend_power_down_keymap(void);
-void suspend_wakeup_init_keymap(void);
-layer_state_t layer_state_set_keymap (layer_state_t state);
-bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
diff --git a/users/sethBarberee/tap_dance.c b/users/sethBarberee/tap_dance.c
deleted file mode 100644
index 924b3141fe..0000000000
--- a/users/sethBarberee/tap_dance.c
+++ /dev/null
@@ -1,89 +0,0 @@
- /* Copyright 2021 SethBarberee <seth.barberee@gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#include "tap_dance.h"
-
-// Shamelessly stolen from QMK Docs
-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;
-}
-
-
-// Initialize it now
-tap caps_status = {
- .toggled = false,
- .state = 0
-};
-
-
-void dance_ecap_finished (tap_dance_state_t *state, void *user_data){
- caps_status.state = cur_dance(state);
- switch(caps_status.state){
- case SINGLE_TAP:
- tap_code(KC_ESC);
- break;
- case SINGLE_HOLD:
- register_code(KC_LCTL);
- break;
- case DOUBLE_TAP:
- tap_code(KC_CAPS);
- if(!caps_status.toggled){
- // Toggling caps so indicate
- caps_status.toggled = true;
-#ifdef RGBLIGHT_ENABLE
- // Save mode we can from
- caps_status.normal_mode = rgblight_get_mode();
- rgblight_mode_noeeprom(CAPS_LOCK_MODE);
-#endif
- } else {
- // Turning off so return to normal mode
- caps_status.toggled = false;
-#ifdef RGBLIGHT_ENABLE
- rgblight_mode_noeeprom(caps_status.normal_mode);
-#endif
- }
- break;
- }
-}
-
-void dance_ecap_reset (tap_dance_state_t *state, void *user_data){
- if(caps_status.state == SINGLE_HOLD){
- unregister_code(KC_LCTL);
- }
- caps_status.state = 0;
-}
-
-//Tap Dance Definitions
-tap_dance_action_t tap_dance_actions[] = {
- //Tap once for Esc, twice for Caps Lock
- [TD_ECAP] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_ecap_finished, dance_ecap_reset),
-// Other declarations would go here, separated by commas, if you have them
-};
diff --git a/users/sethBarberee/tap_dance.h b/users/sethBarberee/tap_dance.h
deleted file mode 100644
index 709185b39a..0000000000
--- a/users/sethBarberee/tap_dance.h
+++ /dev/null
@@ -1,43 +0,0 @@
- /* Copyright 2021 SethBarberee <seth.barberee@gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#pragma once
-#include "sethBarberee.h"
-
-//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 {
- TD_ECAP = 0,
-};
-
-#define KC_ECAP TD(TD_ECAP)
-
-typedef struct {
- bool toggled; // store whether we have toggled caps lock
-#ifdef RGBLIGHT_ENABLE
- int normal_mode;
-#endif // RGBLIGHT_ENABLE
- int state;
-} tap;
diff --git a/users/sethBarberee/wrappers.h b/users/sethBarberee/wrappers.h
deleted file mode 100644
index 4767afa82f..0000000000
--- a/users/sethBarberee/wrappers.h
+++ /dev/null
@@ -1,71 +0,0 @@
- /* Copyright 2021 SethBarberee <seth.barberee@gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#pragma once
-
-#include "sethBarberee.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 _________________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 ________________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___________________ _______, _______, _______, _______, _______
-
-// clang-format on
-
diff --git a/users/sigma/config.h b/users/sigma/config.h
deleted file mode 100644
index 53b986cdac..0000000000
--- a/users/sigma/config.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- Copyright 2018 Yann Hodique <yann.hodique@gmail.com> @sigma
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-#pragma once
-
-#define LEADER_TIMEOUT 1000
-
-#define MACRO_TIMER 5
diff --git a/users/sigma/rules.mk b/users/sigma/rules.mk
deleted file mode 100644
index a4cd2b34d3..0000000000
--- a/users/sigma/rules.mk
+++ /dev/null
@@ -1,3 +0,0 @@
-LEADER_ENABLE = yes
-
-SRC += sigma.c
diff --git a/users/sigma/sigma.c b/users/sigma/sigma.c
deleted file mode 100644
index bd66729bdc..0000000000
--- a/users/sigma/sigma.c
+++ /dev/null
@@ -1,271 +0,0 @@
-/*
- Copyright 2018 Yann Hodique <yann.hodique@gmail.com> @sigma
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-#include "sigma.h"
-
-userspace_config_t runtime_userspace_config;
-userspace_config_t stored_userspace_config;
-
-__attribute__ ((weak))
-void matrix_init_keymap(void) {}
-
-__attribute__ ((weak))
-void startup_keymap(void) {}
-
-__attribute__ ((weak))
-void shutdown_keymap(void) {}
-
-__attribute__ ((weak))
-void suspend_power_down_keymap(void) {}
-
-__attribute__ ((weak))
-void suspend_wakeup_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;
-}
-
-
-__attribute__ ((weak))
-layer_state_t layer_state_set_keymap (layer_state_t state) {
- return state;
-}
-
-__attribute__ ((weak))
-layer_state_t default_layer_state_set_keymap (layer_state_t state) {
- return state;
-}
-
-__attribute__ ((weak))
-void led_set_keymap(uint8_t usb_led) {}
-
-void set_os(uint8_t os) {
- runtime_userspace_config.os_target = os;
-
-#if defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE)
- switch (os) {
- case _OS_MACOS:
- set_unicode_input_mode(UNICODE_MODE_MACOS);
- break;
- case _OS_LINUX:
- set_unicode_input_mode(UNICODE_MODE_LINUX);
- break;
- case _OS_WINDOWS:
- set_unicode_input_mode(UNICODE_MODE_WINDOWS);
- break;
- }
-#endif
-}
-
-void matrix_init_user(void) {
- stored_userspace_config.raw = eeconfig_read_user();
- runtime_userspace_config.raw = stored_userspace_config.raw;
-
- set_os(runtime_userspace_config.os_target);
-}
-
-void store_userspace_config(void) {
- eeconfig_update_user(stored_userspace_config.raw);
-}
-
-void leader_end_user(void) {
- if (leader_sequence_two_keys(KC_F1, KC_L)) {
- set_os(_OS_LINUX);
- }
- if (leader_sequence_two_keys(KC_F1, KC_M)) {
- set_os(_OS_MACOS);
- }
- if (leader_sequence_two_keys(KC_F1, KC_W)) {
- set_os(_OS_WINDOWS);
- }
- if (leader_sequence_two_keys(KC_F1, KC_S)) {
- stored_userspace_config.raw = runtime_userspace_config.raw;
- store_userspace_config();
- }
-}
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- uint8_t os_target = runtime_userspace_config.os_target;
- bool pressed = record->event.pressed;
-
- switch (keycode) {
- case KC_QWERTY:
- if (pressed) {
- set_single_persistent_default_layer(_QWERTY);
- }
- return false;
- break;
-
- case KC_MAKE: // Compiles the firmware, and adds the flash command based on keyboard bootloader
- if (!pressed) {
- send_string_with_delay_P(PSTR("make " QMK_KEYBOARD ":" QMK_KEYMAP
-#if defined(__ARM__)
- ":dfu-util"
-#elif defined(BOOTLOADER_DFU)
- ":dfu"
-#elif defined(BOOTLOADER_HALFKAY)
- ":teensy"
-#elif defined(BOOTLOADER_CATERINA)
- ":avrdude"
-#endif // bootloader options
- SS_TAP(X_ENTER)), 10);
- }
- return false;
- break;
-
- case EPRM: // Resets EEPROM
- if (pressed) {
- eeconfig_init();
- default_layer_set(1UL<<eeconfig_read_default_layer());
- layer_state_set(layer_state);
- set_os(_OS_MACOS);
- store_userspace_config();
- }
- return false;
- break;
- case VRSN: // Prints firmware version
- if (pressed) {
- send_string_with_delay_P(PSTR(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE), MACRO_TIMER);
- }
- return false;
- break;
-
- case KC_OS_CUT:
- switch (os_target) {
- case _OS_MACOS:
- if (pressed)
- SEND_STRING(SS_LGUI("x"));
- break;
- case _OS_LINUX:
- pressed ?
- register_code(KC_CUT)
- : unregister_code(KC_CUT);
- break;
- default:
- if (pressed)
- SEND_STRING(SS_LCTL("x"));
- break;
- }
- break;
-
- case KC_OS_COPY:
- switch (os_target) {
- case _OS_MACOS:
- if (pressed)
- SEND_STRING(SS_LGUI("c"));
- break;
- case _OS_LINUX:
- pressed ?
- register_code(KC_COPY)
- : unregister_code(KC_COPY);
- break;
- default:
- if (pressed)
- SEND_STRING(SS_LCTL("c"));
- break;
- }
- break;
-
- case KC_OS_PASTE:
- switch (os_target) {
- case _OS_MACOS:
- if (pressed)
- SEND_STRING(SS_LGUI("v"));
- break;
- case _OS_LINUX:
- pressed ?
- register_code(KC_PASTE)
- : unregister_code(KC_PASTE);
- break;
- default:
- if (pressed)
- SEND_STRING(SS_LCTL("v"));
- break;
- }
- break;
-
- case KC_OS_UNDO:
- switch (os_target) {
- case _OS_MACOS:
- if (pressed)
- SEND_STRING(SS_LGUI("z"));
- break;
- case _OS_LINUX:
- pressed ?
- register_code(KC_UNDO)
- : unregister_code(KC_UNDO);
- break;
- default:
- if (pressed)
- SEND_STRING(SS_LCTL("z"));
- break;
- }
- break;
-
- case KC_OS_REDO:
- switch (os_target) {
- case _OS_MACOS:
- if (pressed)
- SEND_STRING(SS_LGUI(SS_LSFT("z")));
- break;
- case _OS_LINUX:
- pressed ?
- register_code(KC_AGAIN)
- : unregister_code(KC_AGAIN);
- break;
- default:
- if (pressed)
- SEND_STRING(SS_LCTL(SS_LSFT("z")));
- break;
- }
- break;
-
- case KC_OS_LOCK:
- switch (os_target) {
- case _OS_MACOS:
- if (pressed)
- SEND_STRING(SS_LGUI(SS_LCTL("q")));
- break;
- case _OS_LINUX:
- pressed ?
- register_code(KC_PWR)
- : unregister_code(KC_PWR);
- break;
- default:
- if (pressed)
- SEND_STRING(SS_LGUI("l"));
- break;
- }
- break;
-
- case KC_SCRT:
- if (pressed) {
- SEND_STRING(SS_LGUI("`"));
- }
- break;
- }
-
- return process_record_keymap(keycode, record);
-}
diff --git a/users/sigma/sigma.h b/users/sigma/sigma.h
deleted file mode 100644
index e47e889b8c..0000000000
--- a/users/sigma/sigma.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- Copyright 2018 Yann Hodique <yann.hodique@gmail.com> @sigma
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-#pragma once
-
-#include "quantum.h"
-#include "version.h"
-#include "eeprom.h"
-
-// Define os types
-enum os_types
- {
- _OS_MACOS = 0,
- _OS_LINUX,
- _OS_WINDOWS,
- };
-
-// Define layer names
-enum userspace_layers
- {
- _QWERTY = 0,
- };
-
-typedef union {
- uint32_t raw;
- struct {
- uint8_t os_target :2;
- };
-} userspace_config_t;
-
-enum userspace_custom_keycodes
- {
- EPRM = SAFE_RANGE, // Resets EEPROM
- VRSN, // Prints QMK Firmware and board info
- KC_QWERTY, // Sets default layer to QWERTY
- KC_MAKE, // Rebuild the current firmware
- KC_OS_CUT,
- KC_OS_COPY,
- KC_OS_PASTE,
- KC_OS_UNDO,
- KC_OS_REDO,
- KC_OS_LOCK,
- KC_SCRT,
- NEW_SAFE_RANGE //use NEW_SAFE_RANGE for keymap specific codes
- };
diff --git a/users/sigul/.gitignore b/users/sigul/.gitignore
deleted file mode 100644
index 12165fdbd7..0000000000
--- a/users/sigul/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-secrets.h
-secrets.c
diff --git a/users/sigul/README.md b/users/sigul/README.md
deleted file mode 100644
index a8f705e154..0000000000
--- a/users/sigul/README.md
+++ /dev/null
@@ -1,17 +0,0 @@
-Copyright 2020 Silvio Gulizia desk@silviogulizia.com @sigul
-
-Userspace by Silvio Gulizia
-Contains code for ANSI / Italian layouts.
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
diff --git a/users/sigul/config.h b/users/sigul/config.h
deleted file mode 100644
index dc0cd0f070..0000000000
--- a/users/sigul/config.h
+++ /dev/null
@@ -1,21 +0,0 @@
-#pragma once
-
-// My custom configurations
-#define TAPPING_TOGGLE 3 // enable tapping toggle, used to lock level with a custom keycode defined by TT (in my case RAISE, LOWER and MOUSE)
-#define USB_MAX_POWER_CONSUMPTION 100 // required to be able to use the keyboard with iPad
-
-// Settings for using the keybaord as a mouse
-#define MOUSEKEY_DELAY 30
-// Delay between pressing a movement key and cursor movement
-#define MOUSEKEY_INTERVAL 16
-// Time between cursor movements
-#define MOUSEKEY_MAX_SPEED 3
-// Maximum cursor speed at which acceleration stops
-#define MOUSEKEY_TIME_TO_MAX 40
-// Time until maximum cursor speed is reached
-#define MOUSEKEY_WHEEL_MAX_SPEED 0
-// Maximum number of scroll steps per scroll action
-#define MOUSEKEY_WHEEL_TIME_TO_MAX 0
-// Time until maximum scroll speed is reached
-
-#define MACRO_TIMER 5
diff --git a/users/sigul/rules.mk b/users/sigul/rules.mk
deleted file mode 100644
index e272957d0a..0000000000
--- a/users/sigul/rules.mk
+++ /dev/null
@@ -1,8 +0,0 @@
-SRC += sigul.c
-MOUSEKEY_ENABLE = yes
-
-ifneq ($(strip $(NO_SECRETS)), yes)
- ifneq ("$(wildcard $(USER_PATH)/secrets.c)","")
- SRC += secrets.c
- endif
-endif
diff --git a/users/sigul/sigul.c b/users/sigul/sigul.c
deleted file mode 100644
index c9793ebb1f..0000000000
--- a/users/sigul/sigul.c
+++ /dev/null
@@ -1,100 +0,0 @@
-#include "keymap_italian_mac_ansi.h"
-#include "sigul.h"
-
-__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 update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
-}
-
-__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 IT_SCCL:
- if (record->event.pressed){
- if (get_mods() & MOD_BIT(KC_LSFT) || get_mods() & MOD_BIT(KC_RIGHT_SHIFT)){
- register_code16(IT_COLN);
- } else {
- register_code16(IT_SCLN);
- }
- } else {
- unregister_code16(IT_COLN);
- unregister_code16(IT_SCLN);
- }
- return false;
- break;
-
- case IT_APDQ:
- if (record->event.pressed){
- if (get_mods() & MOD_BIT(KC_LSFT) || get_mods() & MOD_BIT(KC_RIGHT_SHIFT)){
- register_code16(IT_DQUO);
- } else {
- register_code16(IT_QUOT);
- }
- } else {
- unregister_code16(IT_DQUO);
- unregister_code16(IT_QUOT);
- }
- return false;
- break;
-
- case IT_CMLS:
- if (record->event.pressed){
- if (get_mods() & MOD_BIT(KC_LSFT) || get_mods() & MOD_BIT(KC_RIGHT_SHIFT)){
- unregister_code16(KC_LSFT);
- register_code16(IT_LABK);
- register_code16(KC_LSFT);
- } else {
- register_code16(IT_COMM);
- }
- } else {
- unregister_code16(IT_LABK);
- unregister_code16(IT_COMM);
- }
- return false;
- break;
-
- case IT_DTMR:
- if (record->event.pressed){
- if (get_mods() & MOD_BIT(KC_LSFT) || get_mods() & MOD_BIT(KC_RIGHT_SHIFT)){
- register_code16(IT_RABK);
- } else {
- register_code16(IT_DOT);
- }
- } else {
- unregister_code16(IT_RABK);
- unregister_code16(IT_DOT);
- }
- return false;
- break;
-
- case IT_SLQS:
- if (record->event.pressed){
- if (get_mods() & MOD_BIT(KC_LSFT) || get_mods() & MOD_BIT(KC_RIGHT_SHIFT)){
- register_code16(IT_QUES);
- } else {
- register_code16(IT_SLSH);
- }
- } else {
- unregister_code16(IT_QUES);
- unregister_code16(IT_SLSH);
- }
- return false;
- break;
- }
- return process_record_keymap(keycode, record) && process_record_secrets(keycode, record);
-};
-
diff --git a/users/sigul/sigul.h b/users/sigul/sigul.h
deleted file mode 100644
index 8f806017cc..0000000000
--- a/users/sigul/sigul.h
+++ /dev/null
@@ -1,42 +0,0 @@
-#pragma once
-
-#include "quantum.h"
-
-enum userspace_layers {
- _QWERTY,
- _LOWER, //symbols
- _RAISE, //numbers
- _ADJUST, //system
- _NUMPAD,
- _FN,
- _MOUSE
-};
-
-enum userspace_custom_keycodes {
- QWERTY = SAFE_RANGE,
- // custom keycodes for an Italian ANSI layout with accented vowels
- IT_CMLS, // IT_COMM and IT_LABK when combined with shift
- IT_DTMR, // IT_DOT and IT_RABK when combined with shift
- IT_SLQS, // IT_SLSH and IT_QUES when combined with shift
- IT_APDQ, // IT_APO and IT_DQUO when combined with shift
- IT_SCCL, // IT_SMCL and IT_COLN when combined with shift
- SECRET0,
- SECRET1,
- SECRET2,
- SECRET3,
- SECRET4,
- SECRET5,
- NEW_SAFE_RANGE // start new keyboard-level declarations with NEW_SAFE_RANGE
-};
-
-// Defining Layer Keycodes
-#define QWERTY DF(_QWERTY)
-// For LOWER and RAISE I use TT instead of MO to be able to lock those layer tapping three times the key (TAPPING_TOGGLE 3 has been added in sigul.h)
-#define LOWER TT(_LOWER)
-#define RAISE TT(_RAISE)
-#define NUMPAD TG(_NUMPAD)
-#define FN MO(_FN)
-#define TABFN LT(_FN, KC_TAB)
-#define ESCFN LT(_FN, KC_ESC)
-#define MS_B LT(_MOUSE, IT_B)
-
diff --git a/users/snowe/luna.c b/users/snowe/luna.c
deleted file mode 100644
index 4653abfaeb..0000000000
--- a/users/snowe/luna.c
+++ /dev/null
@@ -1,229 +0,0 @@
-/*
- * Copyright 2021 QMK Community
- * Copyright 2021 Tyler Thrailkill (@snowe/@snowe2010) <tyler.b.thrailkill@gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "quantum.h"
-#include "luna.h"
-
-// KEYBOARD PET START
-
-// settings
-#define MIN_WALK_SPEED 10
-#define MIN_RUN_SPEED 40
-
-// advanced settings
-#define ANIM_FRAME_DURATION 200 // how long each frame lasts in ms
-#define ANIM_SIZE 96 // number of bytes in array. If you change sprites, minimize for adequate firmware size. max is 1024
-
-bool isSneaking = false;
-bool isJumping = false;
-bool showedJump = true;
-
-// status variables
-int current_wpm = 0;
-led_t led_usb_state = {
- .num_lock = false,
- .caps_lock = false,
- .scroll_lock = false
-};
-
-// current frame
-uint8_t current_frame = 0;
-
-// timers
-uint32_t anim_timer = 0;
-uint32_t anim_sleep = 0;
-
-// logic
-void render_luna(int LUNA_X, int LUNA_Y) {
-
- // Sit
- static const char PROGMEM sit[2][ANIM_SIZE] = {
- // 'sit1', 32x22px
- {
- 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,
- },
-
- // 'sit2', 32x22px
- {
- 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
- }
- };
-
- // Walk
- static const char PROGMEM walk[2][ANIM_SIZE] = {
- // 'walk1', 32x22px
- {
- 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,
- },
-
- // 'walk2', 32x22px
- {
- 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,
- }
- };
-
- // Run
- static const char PROGMEM run[2][ANIM_SIZE] = {
- // 'run1', 32x22px
- {
- 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,
- },
-
- // 'run2', 32x22px
- {
- 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,
- }
- };
-
- // Bark
- static const char PROGMEM bark[2][ANIM_SIZE] = {
- // 'bark1', 32x22px
- {
- 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,
- },
-
- // 'bark2', 32x22px
- {
- 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,
- }
- };
-
- // Sneak
- static const char PROGMEM sneak[2][ANIM_SIZE] = {
- // 'sneak1', 32x22px
- {
- 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,
- },
-
- // 'sneak2', 32x22px
- {
- 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,
- }
- };
-
- // animation
- void animation_phase(void) {
-
- // jump
- if (isJumping || !showedJump) {
-
- // clear
- oled_set_cursor(LUNA_X,LUNA_Y +2);
- oled_write(" ", false);
-
- oled_set_cursor(LUNA_X,LUNA_Y -1);
-
- showedJump = true;
- } else {
-
- // clear
- oled_set_cursor(LUNA_X,LUNA_Y -1);
- oled_write(" ", false);
-
- oled_set_cursor(LUNA_X,LUNA_Y);
- }
-
- // switch frame
- current_frame = (current_frame + 1) % 2;
-
- // current status
- if(led_usb_state.caps_lock) {
- oled_write_raw_P(bark[abs(1 - current_frame)], ANIM_SIZE);
-
- } else if(isSneaking) {
- oled_write_raw_P(sneak[abs(1 - current_frame)], ANIM_SIZE);
-
- } else if(current_wpm <= MIN_WALK_SPEED) {
- oled_write_raw_P(sit[abs(1 - current_frame)], ANIM_SIZE);
-
- } else if(current_wpm <= MIN_RUN_SPEED) {
- oled_write_raw_P(walk[abs(1 - current_frame)], ANIM_SIZE);
-
- } else {
- oled_write_raw_P(run[abs(1 - current_frame)], ANIM_SIZE);
- }
- }
-
- // animation timer
- if(timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
- anim_timer = timer_read32();
- current_wpm = get_current_wpm();
- animation_phase();
- }
-
- // this fixes the screen on and off bug
- if (current_wpm > 0) {
- oled_on();
- anim_sleep = timer_read32();
- } else if(timer_elapsed32(anim_sleep) > OLED_TIMEOUT) {
- oled_off();
- }
-
-}
-
-// KEYBOARD PET END \ No newline at end of file
diff --git a/users/snowe/luna.h b/users/snowe/luna.h
deleted file mode 100644
index c96d7a12df..0000000000
--- a/users/snowe/luna.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright 2021 QMK Community
- * Copyright 2021 Tyler Thrailkill (@snowe/@snowe2010) <tyler.b.thrailkill@gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-
-extern bool isSneaking;
-extern bool isJumping;
-extern bool showedJump;
-
-// status variables
-extern led_t led_usb_state;
-//extern int current_wpm;
-
-
-void render_luna(int LUNA_X, int LUNA_Y);
-
diff --git a/users/snowe/ocean_dream.c b/users/snowe/ocean_dream.c
deleted file mode 100644
index bd95ea16f8..0000000000
--- a/users/snowe/ocean_dream.c
+++ /dev/null
@@ -1,556 +0,0 @@
-/*
- * Copyright 2021 Tyler Thrailkill (@snowe/@snowe2010) <tyler.b.thrailkill@gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "ocean_dream.h"
-#include "quantum.h"
-#include "print.h"
-
-// Calculated Parameters
-#define TWINKLE_PROBABILITY_MODULATOR 100 / TWINKLE_PROBABILITY // CALCULATED: Don't Touch
-#define TOTAL_STARS STARS_PER_LINE *NUMBER_OF_STAR_LINES // CALCULATED: Don't Touch
-#define OCEAN_ANIMATION_MODULATOR NUMBER_OF_FRAMES / OCEAN_ANIMATION_SPEED // CALCULATED: Don't Touch
-#define SHOOTING_STAR_ANIMATION_MODULATOR NUMBER_OF_FRAMES / SHOOTING_STAR_ANIMATION_SPEED // CALCULATED: Don't Touch
-#define STAR_ANIMATION_MODULATOR NUMBER_OF_FRAMES / STAR_ANIMATION_SPEED // CALCULATED: Don't Touch
-
-uint8_t animation_counter = 0; // global animation counter.
-bool is_calm = false;
-uint32_t starry_night_anim_timer = 0;
-uint32_t starry_night_anim_sleep = 0;
-static int current_wpm = 0;
-
-static uint8_t increment_counter(uint8_t counter, uint8_t max) {
- counter++;
- if (counter >= max) {
- return 0;
- } else {
- return counter;
- }
-}
-
-#ifdef ENABLE_WAVE
-static uint8_t decrement_counter(uint8_t counter, uint8_t max) {
- counter--;
- if (counter < 0 || counter > max) {
- return max;
- } else {
- return counter;
- }
-}
-#endif
-
-#ifdef ENABLE_MOON // region
-# ifndef STATIC_MOON
-uint8_t moon_animation_frame = 0; // keeps track of current moon frame
-uint16_t moon_animation_counter = 0; // counts how many frames to wait before animating moon to next frame
-# endif
-
-# ifdef STATIC_MOON
-static const char PROGMEM moon[6] = {
- 0x18, 0x7E, 0xFF, 0xC3, 0x81, 0x81,
-};
-# endif
-
-# ifndef STATIC_MOON
-static const char PROGMEM moon_animation[14][8] = {
- // clang-format off
- { 0x3C, 0x7E, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x3C, },
- { 0x3C, 0x7E, 0xFF, 0xFF, 0xFF, 0xFF, 0x42, 0x00, },
- { 0x3C, 0x7E, 0xFF, 0xFF, 0xFF, 0xC3, 0x00, 0x00, },
- { 0x3C, 0x7E, 0xFF, 0xFF, 0xC3, 0x81, 0x00, 0x00, },
- { 0x3C, 0x7E, 0xFF, 0xC3, 0x81, 0x00, 0x00, 0x00, },
- { 0x3C, 0x7E, 0xC3, 0x81, 0x81, 0x00, 0x00, 0x00, },
- { 0x3C, 0x42, 0x81, 0x81, 0x00, 0x00, 0x00, 0x00, },
- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, },
- { 0x00, 0x00, 0x00, 0x00, 0x81, 0x81, 0x42, 0x3C, },
- { 0x00, 0x00, 0x00, 0x81, 0x81, 0xC3, 0x7E, 0x3C, },
- { 0x00, 0x00, 0x00, 0x81, 0xC3, 0xFF, 0x7E, 0x3C, },
- { 0x00, 0x00, 0x81, 0xC3, 0xFF, 0xFF, 0x7E, 0x3C, },
- { 0x00, 0x00, 0xC3, 0xFF, 0xFF, 0xFF, 0x7E, 0x3C, },
- { 0x00, 0x42, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x3C, },
- // clang-format on
-};
-# endif
-
-static void draw_moon(void) {
-# ifdef STATIC_MOON
- oled_set_cursor(MOON_COLUMN, MOON_LINE);
- oled_write_raw_P(moon, 6);
-# endif
-# ifndef STATIC_MOON
- moon_animation_counter = increment_counter(moon_animation_counter, ANIMATE_MOON_EVERY_N_FRAMES);
- if (moon_animation_counter == 0) {
- moon_animation_frame = increment_counter(moon_animation_frame, 14);
- oled_set_cursor(MOON_COLUMN, MOON_LINE);
- oled_write_raw_P(moon_animation[moon_animation_frame], 8);
- }
-# endif
-}
-#endif // endregion
-
-#ifdef ENABLE_WAVE // region
-uint8_t starry_night_wave_frame_width_counter = 31;
-uint8_t rough_waves_frame_counter = 0;
-
-// clang-format off
-static const char PROGMEM ocean_top[8][32] = {
- // still ocean
- {
- 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
- 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
- 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
- 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
- },
- // small ripples
- {
- 0x20, 0x60, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
- 0x20, 0x60, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
- 0x20, 0x60, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
- 0x20, 0x60, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
- },
- // level 2 ripples
- {
- 0x20, 0x60, 0x40, 0x40, 0x20, 0x60, 0x40, 0x40,
- 0x20, 0x60, 0x40, 0x40, 0x20, 0x60, 0x40, 0x40,
- 0x20, 0x60, 0x40, 0x40, 0x20, 0x60, 0x40, 0x40,
- 0x20, 0x60, 0x40, 0x40, 0x20, 0x60, 0x40, 0x40,
- },
- // level 3 waves
- {
- 0x40, 0x20, 0x10, 0x20, 0x40, 0x40, 0x40, 0x40,
- 0x40, 0x20, 0x10, 0x20, 0x40, 0x40, 0x40, 0x40,
- 0x40, 0x20, 0x10, 0x20, 0x40, 0x40, 0x40, 0x40,
- 0x40, 0x20, 0x10, 0x20, 0x40, 0x40, 0x40, 0x40,
- },
- {
- 0x40, 0x40, 0x20, 0x10, 0x28, 0x50, 0x40, 0x40,
- 0x40, 0x40, 0x20, 0x10, 0x28, 0x50, 0x40, 0x40,
- 0x40, 0x40, 0x20, 0x10, 0x28, 0x50, 0x40, 0x40,
- 0x40, 0x40, 0x20, 0x10, 0x28, 0x50, 0x40, 0x40,
- },
- {
- 0x40, 0x40, 0x40, 0x20, 0x10, 0x30, 0x70, 0x60,
- 0x40, 0x40, 0x40, 0x20, 0x10, 0x30, 0x70, 0x60,
- 0x40, 0x40, 0x40, 0x20, 0x10, 0x30, 0x70, 0x60,
- 0x40, 0x40, 0x40, 0x20, 0x10, 0x30, 0x70, 0x60,
- },
-};
-static const char PROGMEM ocean_bottom[8][32] = {
- // still ocean
- {
- 0x00, 0x40, 0x40, 0x41, 0x01, 0x01, 0x01, 0x21,
- 0x20, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x44,
- 0x44, 0x40, 0x40, 0x00, 0x00, 0x08, 0x08, 0x00,
- 0x01, 0x01, 0x01, 0x00, 0x40, 0x40, 0x00, 0x00,
- },
- // small ripples
- {
- 0x00, 0x00, 0x40, 0x40, 0x01, 0x01, 0x01, 0x20,
- 0x20, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04,
- 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,
- 0x00, 0x01, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00,
- },
- // level 2 ripples
- {
- 0x00, 0x00, 0x40, 0x40, 0x01, 0x01, 0x01, 0x20,
- 0x20, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04,
- 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,
- 0x00, 0x01, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00,
- },
- // level 3 waves
- {
- 0x00, 0x40, 0x40, 0x42, 0x42, 0x03, 0x11, 0x11,
- 0x20, 0x20, 0x00, 0x00, 0x08, 0x0C, 0x0C, 0x04,
- 0x05, 0x41, 0x41, 0x21, 0x20, 0x00, 0x00, 0x08,
- 0x0A, 0x0A, 0x0B, 0x41, 0x41, 0x41, 0x41, 0x00,
- },
- {
- 0x10, 0x10, 0x00, 0x80, 0x84, 0xC4, 0x02, 0x06,
- 0x84, 0x44, 0xC0, 0x80, 0x80, 0x20, 0x20, 0x10,
- 0x08, 0x12, 0x91, 0x81, 0x42, 0x40, 0x00, 0x00,
- 0x10, 0x12, 0x22, 0x22, 0x24, 0x04, 0x84, 0x80,
- },
- {
- 0x08, 0x80, 0x80, 0x82, 0x82, 0x03, 0x21, 0x21,
- 0x10, 0x10, 0x00, 0x00, 0x04, 0x04, 0x0C, 0x08,
- 0x09, 0x41, 0x42, 0x22, 0x20, 0x00, 0x00, 0x08,
- 0x0A, 0x0A, 0x0B, 0x41, 0x43, 0x42, 0x42, 0x00,
- },
-};
-// clang-format on
-
-static void animate_waves(void) {
- starry_night_wave_frame_width_counter = decrement_counter(starry_night_wave_frame_width_counter, WIDTH - 1); // only 3 frames for last wave type
- rough_waves_frame_counter = increment_counter(rough_waves_frame_counter, 3); // only 3 frames for last wave type
-
- void draw_ocean(uint8_t frame, uint16_t offset, uint8_t byte_index) {
- oled_write_raw_byte(pgm_read_byte(ocean_top[frame] + byte_index), offset);
- oled_write_raw_byte(pgm_read_byte(ocean_bottom[frame] + byte_index), offset + WIDTH);
- }
-
- for (int i = 0; i < WIDTH; ++i) {
- uint16_t offset = OCEAN_LINE * WIDTH + i;
- uint8_t byte_index = starry_night_wave_frame_width_counter + i;
- if (byte_index >= WIDTH) {
- byte_index = byte_index - WIDTH;
- }
- if (is_calm || current_wpm <= WAVE_CALM) {
- draw_ocean(0, offset, byte_index);
- } else if (current_wpm <= WAVE_HEAVY_STORM) {
- draw_ocean(1, offset, byte_index);
- } else if (current_wpm <= WAVE_HURRICANE) {
- draw_ocean(2, offset, byte_index);
- } else {
- draw_ocean(3 + rough_waves_frame_counter, offset, byte_index);
- }
- }
-}
-#endif // endregion
-
-#ifdef ENABLE_ISLAND // region
-uint8_t island_frame_1 = 0;
-
-// clang-format off
-// only use 46 bytes (first 18 are blank, so we don't write them, makes it smaller and we can see the shooting stars properly!)
-
-// To save space and allow the shooting stars to be seen, only draw the tree on every frame.
-// Tree is only 14bytes wide so we save 108 bytes on just the first row. Second row, the
-// first 18 bytes is always the same piece of land, so only store that once, which saves 90 bytes
-static const char PROGMEM islandRightTop[6][14] = {
- {0x84, 0xEC, 0x6C, 0x3C, 0xF8, 0xFE, 0x3F, 0x6B, 0xDB, 0xB9, 0x30, 0x40, 0x00, 0x00,},
- {0x80, 0xC3, 0xEE, 0x7C, 0xB8, 0xFC, 0xFE, 0x6F, 0xDB, 0x9B, 0xB2, 0x30, 0x00, 0x00,},
- {0x00, 0xC0, 0xEE, 0x7F, 0x3D, 0xF8, 0xFC, 0x7E, 0x57, 0xDB, 0xDB, 0x8A, 0x00, 0x00,},
- {0x00, 0xC0, 0xE6, 0x7F, 0x3B, 0xF9, 0xFC, 0xFC, 0xB6, 0xB3, 0x33, 0x61, 0x00, 0x00,},
- {0x00, 0x00, 0x00, 0x00, 0x80, 0xEE, 0xFF, 0xFB, 0xF9, 0xFC, 0xDE, 0xB6, 0xB6, 0x24,},
- {0x00, 0x00, 0x00, 0x00, 0xC0, 0xEE, 0xFE, 0xFF, 0xFB, 0xFD, 0xEE, 0xB6, 0xB6, 0x92,},
-};
-static const char PROGMEM islandRightBottom[6][14] = {
- {0x41, 0x40, 0x60, 0x3E, 0x3F, 0x23, 0x20, 0x60, 0x41, 0x43, 0x40, 0x40, 0x40, 0x80,},
- {0x40, 0x41, 0x60, 0x3E, 0x3F, 0x23, 0x20, 0x60, 0x40, 0x40, 0x41, 0x41, 0x40, 0x80,},
- {0x40, 0x40, 0x61, 0x3D, 0x3F, 0x27, 0x21, 0x60, 0x40, 0x40, 0x40, 0x40, 0x40, 0x80,},
- {0x40, 0x43, 0x61, 0x3C, 0x3F, 0x27, 0x21, 0x60, 0x41, 0x43, 0x43, 0x42, 0x40, 0x80,},
- {0x40, 0x40, 0x60, 0x3C, 0x3F, 0x27, 0x23, 0x63, 0x44, 0x40, 0x41, 0x41, 0x41, 0x81,},
- {0x40, 0x40, 0x60, 0x3C, 0x3F, 0x27, 0x23, 0x63, 0x42, 0x42, 0x41, 0x41, 0x41, 0x80,},
-};
-static const char PROGMEM islandLeft[18] = {
- 0x80, 0x40, 0x40, 0x40, 0x40, 0x60,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x60, 0x40, 0x40,
-};
-// clang-format on
-
-static void animate_island(void) {
- if (animation_counter == 0) {
- island_frame_1 = increment_counter(island_frame_1, 2);
- }
-
- void draw_island_parts(uint8_t frame) {
- oled_set_cursor(ISLAND_COLUMN + 3, ISLAND_LINE);
- oled_write_raw_P(islandRightTop[frame], 14);
- oled_set_cursor(ISLAND_COLUMN + 0, ISLAND_LINE + 1);
- oled_write_raw_P(islandLeft, 18);
- oled_set_cursor(ISLAND_COLUMN + 3, ISLAND_LINE + 1);
- oled_write_raw_P(islandRightBottom[frame], 14);
- }
-
- if (is_calm || current_wpm < ISLAND_CALM) {
- draw_island_parts(0);
- } else if (current_wpm >= ISLAND_CALM && current_wpm < ISLAND_HEAVY_STORM) {
- draw_island_parts(island_frame_1 + 1);
- } else if (current_wpm >= ISLAND_HEAVY_STORM && current_wpm < ISLAND_HURRICANE) {
- draw_island_parts(island_frame_1 + 2);
- } else {
- draw_island_parts(island_frame_1 + 4);
- }
-}
-#endif // endregion
-
-#ifdef ENABLE_STARS // region
-bool stars_setup = false; // only setup stars once, then we just twinkle them
-struct Coordinate {
- int x;
- int y;
- bool exists;
-};
-
-struct Coordinate stars[TOTAL_STARS]; // tracks all stars/coordinates
-
-/**
- * Setup all the initial stars on the screen
- * This function divides the screen into regions based on STARS_PER_LINE and NUMBER_OF_STAR_LINES
- * where each line is made up of 8x8 pixel groups, that are populated by a single star.
- *
- * Not sure how this function will work with larger or smaller screens.
- * It should be fine, as long as the screen width is a multiple of 8
- */
-static void setup_stars(void) {
- // For every line, split the line into STARS_PER_LINE, find a random point in that region, and turn the pixel on
- // 36% probability it will not be added
- // (said another way, 80% chance it will start out lit in the x direction, then 80% chance it will start out lit in the y direction = 64% probability it will start out lit at all)
- for (int line = 0; line < NUMBER_OF_STAR_LINES; ++line) {
- for (int column_group = 0; column_group < STARS_PER_LINE; ++column_group) {
- uint8_t rand_column = rand() % 10;
- uint8_t rand_row = rand() % 10;
- if (rand_column < 8 && rand_row < 8) {
- int column_adder = column_group * 8;
- int line_adder = line * 8;
- int x = rand_column + column_adder;
- int y = rand_row + line_adder;
- oled_write_pixel(x, y, true);
- stars[column_group + (line * STARS_PER_LINE)].x = x;
- stars[column_group + (line * STARS_PER_LINE)].y = y;
- stars[column_group + (line * STARS_PER_LINE)].exists = true;
- } else {
- stars[column_group + (line * STARS_PER_LINE)].exists = false;
- }
- }
- }
- stars_setup = true;
-}
-
-/**
- * Twinkle the stars (move them one pixel in any direction) with a probability of 50% to twinkle any given star
- */
-static void twinkle_stars(void) {
- for (int line = 0; line < NUMBER_OF_STAR_LINES; ++line) {
- for (int column_group = 0; column_group < STARS_PER_LINE; ++column_group) {
- struct Coordinate star = stars[column_group + (line * STARS_PER_LINE)];
-
- // skip stars that were never added
- if (!star.exists) {
- continue;
- }
- if (rand() % TWINKLE_PROBABILITY_MODULATOR == 0) {
- oled_write_pixel(star.x, star.y, false); // black out pixel
-
- // don't allow stars to leave their own region
- if (star.x == (column_group * 8)) { // star is the farthest left it can go in its region
- star.x++; // move it right immediately
- } else if (star.x == (((column_group + 1) * 8) - 1)) { // star is farthest right it can go in its region
- star.x--; // move it left immediately
- }
- if (star.y == (line * 8)) { // star is the farthest up it can go in its region
- star.y++; // move it down immediately
- } else if (star.y == (((line + 1) * 8) - 1)) { // star is farthest down it can go in its region
- star.y--; // move it up immediately
- }
-
- // now decide direction
- int new_x;
- int x_choice = rand() % 3;
- if (x_choice == 0) {
- new_x = star.x - 1;
- } else if (x_choice == 1) {
- new_x = star.x + 1;
- } else {
- new_x = star.x;
- }
-
- int new_y;
- int y_choice = rand() % 3;
- if (y_choice == 0) {
- new_y = star.y - 1;
- } else if (y_choice == 1) {
- new_y = star.y + 1;
- } else {
- new_y = star.y;
- }
-
- star.x = new_x;
- star.y = new_y;
- oled_write_pixel(new_x, new_y, true);
- }
-
- stars[column_group + (line * STARS_PER_LINE)] = star;
- }
- }
-}
-
-/**
- * Setup the stars and then animate them on subsequent frames
- */
-static void animate_stars(void) {
- if (!stars_setup) {
- setup_stars();
- } else {
- twinkle_stars();
- }
-}
-#endif // endregion
-
-#ifdef ENABLE_SHOOTING_STARS // region
-bool shooting_stars_setup = false; // only setup shooting stars array once with defaults
-
-struct ShootingStar {
- int x_1;
- int y_1;
- int x_2;
- int y_2;
- bool running;
- int frame;
- int delay;
-};
-
-struct ShootingStar shooting_stars[MAX_NUMBER_OF_SHOOTING_STARS]; // tracks all the shooting stars
-
-static void setup_shooting_star(struct ShootingStar *shooting_star) {
- int column_to_start = rand() % (WIDTH / 2);
- int row_to_start = rand() % (HEIGHT - 48); // shooting_stars travel diagonally 1 down, 1 across. So the lowest a shooting_star can start and not 'hit' the ocean is 32 above the ocean.
-
- shooting_star->x_1 = column_to_start;
- shooting_star->y_1 = row_to_start;
- shooting_star->x_2 = column_to_start + 1;
- shooting_star->y_2 = row_to_start + 1;
- shooting_star->running = true;
- shooting_star->frame++;
- shooting_star->delay = rand() % SHOOTING_STAR_DELAY;
-}
-
-static void move_shooting_star(struct ShootingStar *shooting_star) {
- oled_write_pixel(shooting_star->x_1, shooting_star->y_1, false);
- oled_write_pixel(shooting_star->x_2, shooting_star->y_2, false);
-
- shooting_star->x_1++;
- shooting_star->y_1++;
- shooting_star->x_2++;
- shooting_star->y_2++;
- shooting_star->frame++;
-
- oled_write_pixel(shooting_star->x_1, shooting_star->y_1, true);
- oled_write_pixel(shooting_star->x_2, shooting_star->y_2, true);
-}
-
-static void finish_shooting_star(struct ShootingStar *shooting_star) {
- oled_write_pixel(shooting_star->x_1, shooting_star->y_1, false);
- oled_write_pixel(shooting_star->x_2, shooting_star->y_2, false);
- shooting_star->running = false;
- shooting_star->frame = 0;
-}
-
-static void animate_shooting_star(struct ShootingStar *shooting_star) {
- if (shooting_star->frame > SHOOTING_STAR_FRAMES) {
- finish_shooting_star(shooting_star);
- return;
- } else if (!shooting_star->running) {
- setup_shooting_star(shooting_star);
- } else {
- if (shooting_star->delay == 0) {
- move_shooting_star(shooting_star);
- } else {
- shooting_star->delay--;
- }
- }
-}
-
-static void animate_shooting_stars(void) {
- if (is_calm) {
- return;
- }
- if (!shooting_stars_setup) {
- for (int i = 0; i < MAX_NUMBER_OF_SHOOTING_STARS; ++i) {
- shooting_stars[i].running = false;
- }
- shooting_stars_setup = true;
- }
- /**
- * Fixes issue with stars that were falling _while_ the
- * wpm dropped below the condition for them to keep falling
- */
- void end_extra_stars(uint8_t starting_index) {
- for (int shooting_star_index = starting_index; shooting_star_index < MAX_NUMBER_OF_SHOOTING_STARS; ++shooting_star_index) {
- struct ShootingStar shooting_star = shooting_stars[shooting_star_index];
- if (shooting_star.running) {
- finish_shooting_star(&shooting_star);
- shooting_stars[shooting_star_index] = shooting_star;
- }
- }
- }
-
- int number_of_shooting_stars = current_wpm / SHOOTING_STAR_WPM_INCREMENT;
- number_of_shooting_stars = (number_of_shooting_stars > MAX_NUMBER_OF_SHOOTING_STARS) ? MAX_NUMBER_OF_SHOOTING_STARS : number_of_shooting_stars;
-
- if (number_of_shooting_stars == 0) {
- // make sure all shooting_stars are ended
- end_extra_stars(0);
- } else {
- for (int shooting_star_index = 0; shooting_star_index < number_of_shooting_stars; ++shooting_star_index) {
- struct ShootingStar shooting_star = shooting_stars[shooting_star_index];
- animate_shooting_star(&shooting_star);
- shooting_stars[shooting_star_index] = shooting_star;
- }
- end_extra_stars(number_of_shooting_stars);
- }
-}
-#endif // endregion
-
-/**
- * Main rendering function
- *
- * Calls all different animations at different rates
- */
-void render_stars(void) {
- current_wpm = get_current_wpm();
-
- void render_stars_anim(void) {
-#ifdef ENABLE_ISLAND
- animate_island();
-#endif
-
-#ifdef ENABLE_SHOOTING_STARS
- if (animation_counter % SHOOTING_STAR_ANIMATION_MODULATOR == 0) {
- animate_shooting_stars();
- }
-#endif
-
-#ifdef ENABLE_STARS
- // TODO offsetting the star animation from the wave animation would look better,
- // but if I do that, then the stars appear in the water because
- // the ocean animation has to wait a bunch of frames to overwrite it.
- // Possible solutions:
- // 1. Only draw stars to the top of the island/ocean.
- // 2. Draw ocean every frame, only move ocean on frames matching modulus
- // Problems:
- // 1. What if someone wants to move the island up a bit, or they want to have the stars reflect in the water?
- // 2. More cpu intensive. And I'm already running out of cpu as it is...
- if (animation_counter % STAR_ANIMATION_MODULATOR == 0) {
- animate_stars();
- }
-#endif
-
-#ifdef ENABLE_WAVE
- if (animation_counter % OCEAN_ANIMATION_MODULATOR == 0) {
- animate_waves();
- }
-#endif
-
-#ifdef ENABLE_MOON
- draw_moon();
-#endif
-
- animation_counter = increment_counter(animation_counter, NUMBER_OF_FRAMES);
- }
-
-
- // Turn screen on/off based on typing and timeout
- if (current_wpm > 0 && timer_elapsed32(starry_night_anim_timer) > STARRY_NIGHT_ANIM_FRAME_DURATION) {
- starry_night_anim_timer = timer_read32();
- oled_on();
- render_stars_anim();
- starry_night_anim_sleep = timer_read32();
- } else if (timer_elapsed32(starry_night_anim_sleep) > OLED_TIMEOUT) {
- oled_off();
- }
-}
diff --git a/users/snowe/ocean_dream.h b/users/snowe/ocean_dream.h
deleted file mode 100644
index 57e0b91557..0000000000
--- a/users/snowe/ocean_dream.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright 2021 Tyler Thrailkill (@snowe/@snowe2010) <tyler.b.thrailkill@gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-#include "quantum.h"
-
-/**
- * Features:
- * You can turn on and off features in this section
- */
-//#define ENABLE_MOON // Uses 182 bytes
-#define ENABLE_WAVE // Uses 844 bytes
-#define ENABLE_SHOOTING_STARS // Uses 872 bytes
-#define ENABLE_ISLAND
-#define ENABLE_STARS // Uses 606 bytes
-
-/**
- * Global Settings
- */
-#define STARRY_NIGHT_ANIM_FRAME_DURATION 30 // how long each frame lasts in ms
-#define NUMBER_OF_FRAMES 20 // Self explanatory. Probably shouldn't touch this, not sure how stuff will work if it's changed. If changed should be multiple of 1, 2, 3, 4, and 5
-#define WIDTH OLED_DISPLAY_HEIGHT // for vertical displays
-#define HEIGHT OLED_DISPLAY_WIDTH // for vertical displays
-
-/**
- * Moon Parameters
- */
-#define MOON_LINE 4 // the line you want the moon to appear at
-#define MOON_COLUMN 4 // the column you want the moon to appear at
-//#define STATIC_MOON // uncomment this to make the moon a static image, no animation
-#ifndef STATIC_MOON
-# define ANIMATE_MOON_EVERY_N_FRAMES 100 // animate the moon every n frames
-#endif
-
-/**
- * Wave Parameters
- */
-#define OCEAN_LINE 14 // Line you want to render the ocean starting at (best at oled_max_lines() - 2)
-#define WAVE_CALM 20 // render calm ocean under this WPM and ripple ocean at this WPM
-#define WAVE_HEAVY_STORM 40 // render medium ocean at this WPM
-#define WAVE_HURRICANE 60 // render heavy waves above this WPM
-// What number of frames you want to animate the ocean at.
-// Should be equal to or smaller than NUMBER_OF_FRAMES, e.g. 30, would animate on every other frame, 20, every third frame, etc
-// Don't set equal to 0.
-#define OCEAN_ANIMATION_SPEED 1
-
-/**
- * Shooting Star Parameters
- */
-#define SHOOTING_STAR_DELAY 12 // delay modulus for time between shooting stars. Decides number of frames to delay, e.g. 12 means 0-11 frames of delay between each shooting star
-#define SHOOTING_STAR_FRAMES 16 // how many 2 pixel frames per shooting star. Increment this for longer shooting stars
-#define MAX_NUMBER_OF_SHOOTING_STARS 12 // maximum number of shooting stars that can be on screen at the same time
-#define SHOOTING_STAR_WPM_INCREMENT 10 // every n WPM increase, add an extra star, up to MAX_NUMBER_OF_SHOOTING_STARS, e.g. an increment of 5 would result in 1 shooting star at 5-9wpm, 2 at 10-14, etc.
-// What number of frames you want to animate the shooting stars at.
-// Should be equal to or smaller than NUMBER_OF_FRAMES, e.g. 30, would animate on every other frame, 20, every third frame, etc
-// Don't set equal to 0.
-#define SHOOTING_STAR_ANIMATION_SPEED 30
-
-/**
- * Star Parameters
- */
-#define STARS_PER_LINE 4 // number of stars per line (for a display that is 128x32, this would be 4 stars spread out evenly over the 32byte width, one every 8 bytes)
-#define NUMBER_OF_STAR_LINES 16 // number of lines to fill up with stars (for a display that is 128x32, 16 bytes are filled with the ocean animation, so that leaves 112 pixels left over. The number of lines depends on your OLED_FONT_HEIGHT)
-#define TWINKLE_PROBABILITY 25 // probability that any star twinkles on a given frame
-// What number of frames you want to animate the stars at.
-// Should be equal to or smaller than NUMBER_OF_FRAMES, e.g. 20, would animate on every frame, 10, every other frame, etc
-// Don't set equal to 0.
-#define STAR_ANIMATION_SPEED 1
-
-/**
- * Island Parameters
- */
-#define ISLAND_LINE 12 // line that the island starts at. Island is 2 lines tall
-#define ISLAND_COLUMN 0 // column that the island starts at
-#define ISLAND_CALM 20 // WPM at which the palm tree calmly moves
-#define ISLAND_HEAVY_STORM 40 // WPM at which the heavy storm occurs
-#define ISLAND_HURRICANE 60 // WPM at which THE HURRICANE STARTS
-
-/*
- * DON'T TOUCH
- */
-
-extern bool is_calm;
-
-// timers
-extern uint32_t starry_night_anim_timer;
-extern uint32_t starry_night_anim_sleep;
-
-void render_stars(void);
diff --git a/users/snowe/oled_setup.c b/users/snowe/oled_setup.c
deleted file mode 100644
index be54d9f558..0000000000
--- a/users/snowe/oled_setup.c
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * Copyright QMK Community
- * Copyright 2021 Tyler Thrailkill (@snowe/@snowe2010) <tyler.b.thrailkill@gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifdef OLED_ENABLE
-
-# include QMK_KEYBOARD_H
-# include "quantum.h"
-# include "snowe.h"
-
-# include <stdio.h> // for keylog?
-
-oled_rotation_t oled_init_user(oled_rotation_t rotation) {
- if (!is_keyboard_master()) {
- return OLED_ROTATION_270; // flips the display 180 degrees if offhand
- }
- return OLED_ROTATION_270;
-}
-
-# define L_BASE 0
-# define L_GAME 2
-# define L_LOWER 4
-# define L_RAISE 6
-# define L_ADJUST 8
-
-void oled_render_layer_state(void) {
- oled_write_P(PSTR("Layer"), false);
- switch (layer_state) {
- case L_BASE:
- oled_write_ln_P(PSTR("Main"), false);
- break;
- case L_GAME:
- oled_write_ln_P(PSTR("Game"), false);
- break;
- case L_LOWER:
- oled_write_ln_P(PSTR("Bot"), false);
- break;
- case L_RAISE:
- oled_write_ln_P(PSTR("Top"), false);
- break;
-// case L_ADJUST:
-// case L_ADJUST | L_LOWER:
-// case L_ADJUST | L_RAISE:
-// case L_ADJUST | L_LOWER | L_RAISE:
-// oled_write_ln_P(PSTR("Comb"), false);
-// break;
- }
-}
-
-char keylog_str[24] = {};
-
-const char code_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 set_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 = code_to_name[keycode];
- }
-
- // update keylog
- snprintf(keylog_str, sizeof(keylog_str), "%dx%d, k%2d : %c", record->event.key.row, record->event.key.col, keycode, name);
-}
-
-void oled_render_keylog(void) { oled_write(keylog_str, false); }
-
-// 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);
-// }
-//}
-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);
- if (!keymap_config.swap_lctl_lgui) {
- oled_write_P(logo[1][0], false);
- oled_write_P(PSTR(" "), false);
- oled_write_P(logo[1][1], false);
- } else {
- oled_write_P(logo[0][0], false);
- oled_write_P(PSTR(" "), false);
- oled_write_P(logo[0][1], false);
- }
- oled_write_P(PSTR(" NKRO "), keymap_config.nkro);
- oled_write_P(PSTR("WPM: "), false);
-
- char wpm[6];
- itoa(get_current_wpm(), wpm, 10);
- oled_write_ln(wpm, false);
-}
-
-bool oled_task_user(void) {
- if (is_keyboard_master()) {
- oled_render_layer_state();
- oled_render_keylog();
- render_bootmagic_status();
-
-# ifdef LUNA_ENABLE
- led_usb_state = host_keyboard_led_state();
- render_luna(0, 13);
-# endif
- } else {
-# ifdef OCEAN_DREAM_ENABLE
- render_stars();
-# endif
- }
- return false;
-}
-
-#endif // OLED_ENABLE
diff --git a/users/snowe/oled_setup.h b/users/snowe/oled_setup.h
deleted file mode 100644
index 7281dcd766..0000000000
--- a/users/snowe/oled_setup.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright 2021 Tyler Thrailkill (@snowe/@snowe2010) <tyler.b.thrailkill@gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-#include "quantum.h"
-#ifdef OLED_ENABLE
-# include "oled_driver.h"
-# define OLED_RENDER_WPM_COUNTER " WPM: "
-#endif
-#ifdef LUNA_ENABLE
-# include "luna.h"
-#endif
-#ifdef OCEAN_DREAM_ENABLE
-# include "ocean_dream.h"
-#endif
diff --git a/users/snowe/readme.md b/users/snowe/readme.md
deleted file mode 100644
index ff45c9df29..0000000000
--- a/users/snowe/readme.md
+++ /dev/null
@@ -1,10 +0,0 @@
-# Welcome
-
-Welcome to my userspace.
-
-There's nothing really outstanding here, except the [Ocean Dream](readme_ocean_dream.md)
-animation I made.
-
-A lot of the code for my wrappers/keymaps came from other users.
-
-I will probably update this with more in-depth information later.
diff --git a/users/snowe/readme_ocean_dream.md b/users/snowe/readme_ocean_dream.md
deleted file mode 100644
index fd6de1bca7..0000000000
--- a/users/snowe/readme_ocean_dream.md
+++ /dev/null
@@ -1,258 +0,0 @@
-# Ocean Dream
-
-Tapping away at your IMX Corne with Box Jades, you feel yourself
-drifting off, into a soundscape of waves and rustling leaves.
-You open your eyes only to find yourself in an _Ocean Dream_.
-
-Introducing, **Ocean Dream**, an animation for keyboards with tall OLED
-screens. Built for 128x32 screens, this animation should work for 128x64
-at least, though it hasn't been tested there.
-
-Completely customizable, you can change everything about the animation,
-from the number of falling stars, to how likely a star is to twinkle, and
-even if the moon has phases or not.
-
-# Installation
-
-Installation is easy.
-
-1. Add `ocean.h` and `ocean.c` to your keyboard folder or userspace.
-2. In your `keymap.c` or wherever you handle your oled code, add
-```c
-# ifdef OCEAN_DREAM_ENABLE
- render_stars();
-# endif
-```
-to `oled_task_user(void)`, where you would like (see [my keymap](../../keyboards/crkbd/keymaps/snowe/keymap.c) for an example)
-3. In your `keymap.c` or wherever you handle your process_record code,
- add an event that sets `is_calm` when you press `ctrl`
-```c
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case KC_LCTL:
- case KC_RCTL:
-#ifdef OCEAN_DREAM_ENABLE
- is_calm = (record->event.pressed) ? true : false;
-#endif
- break;
- }
- return true;
-}
-```
-4. In your `rules.mk` to make it easier to turn the animation on/off, add
-```makefile
-ifeq ($(strip $(OLED_ENABLE)), yes)
- #... your code here...
-
- ifdef OCEAN_DREAM_ENABLE
- ifeq ($(strip $(OCEAN_DREAM_ENABLE)), yes)
- SRC += ocean_dream.c
- OPT_DEFS += -DOCEAN_DREAM_ENABLE
- endif
- endif
- ifndef OCEAN_DREAM_ENABLE
- SRC += ocean_dream.c
- OPT_DEFS += -DOCEAN_DREAM_ENABLE
- endif
-endif
-```
-
-You're done! Now you can enable **Ocean Dream** by simply turning on the OLED feature
-```makefile
-OLED_ENABLE = yes
-```
-
-And if you want to disable it without turning off the OLED Driver you can simply set
-```makefile
-OCEAN_DREAM_ENABLE = no
-```
-
-# Settings
-
-**Ocean Dream** comes with several different animations, all individually configurable:
-
-* 🌌 Stars that twinkle
-* 🌠 Meteor showers that get more vibrant the faster you type
-* 🌊 Waves that get rougher the faster you type
-* 🏝 An island with a palm tree that blows in the wind the faster you type
-* 🌗 A moon that goes through the moon phases (or not, your choice!)
-
-Each feature can be individually turned on and off, with a simple `#define`.
-
-You can see all the options and more documentation by looking at `ocean_dream.h`.
-
-All options come enabled by default.
-
-## Global Flags:
-
-### Toggles:
-
-You can toggle on/off any features using these flags:
-
-* `ENABLE_MOON` // Uses 182 bytes
-* `ENABLE_WAVE` // Uses 844 bytes
-* `ENABLE_SHOOTING_STARS` // Uses 872 bytes
-* `ENABLE_ISLAND`
-* `ENABLE_STARS` // Uses 606 bytes
-
-### Global Configuration:
-
-* `STARRY_NIGHT_ANIM_FRAME_DURATION` - configures how long each frame lasts in ms
-* `NUMBER_OF_FRAMES` - configures the number of frames that constitute a single 'round trip' of animation.
- Enables keeping animations in sync/timed with each other.
- Probably shouldn't touch this, not sure how stuff will work if it's changed.
- If changed should probably be multiple of 1, 2, 3, 4, and 5
-* `WIDTH` - for vertical displays, configures the width (the shortest measurement of your display). defaults to `OLED_DISPLAY_HEIGHT`
-* `HEIGHT` - for vertical displays, configures the height (the longest measurement of your display). defaults to `OLED_DISPLAY_WIDTH`
-
-## Stars
-
-### Description
-
-The 🌌 stars animation is a background of slowly twinkling stars.
-The stars are built on a grid of sorts, where each cell of the grid
-is 8x8 pixels with 1 star per cell. There is a probability of any
-star twinkling on any given frame, decided by the corresponding flags.
-
-### Flags
-
-Enabled with the `#define ENABLE_STARS` directive.
-
-The stars come with several configuration options:
-
-* `STARS_PER_LINE` - configures the number of stars per line. Defaulting to 4, this would
- mean that you have 4 stars across each line (8x32 on a 128x32 display), where each star
- is in a 8x8 grid
-* `NUMBER_OF_STAR_LINES` - configures the number of lines to fill up with stars.
- Defaults to 16, filling the whole display.
-* `TWINKLE_PROBABILITY` - configures the probability of a star twinkling on a given frame.
-* `STAR_ANIMATION_SPEED` - configures the number of frames you want to animate the star at.
- Must be equal to or lower than `NUMBER_OF_FRAMES`.
- Example:
- ```c
- #define NUMBER_OF_FRAMES 20
- #define STAR_ANIMATION_SPEED 5
- ```
- would result in the star animation happening every 4 frames. 20 would result in every frame,
- 1 would be once every 20 frames. This essentially changes how fast stars will twinkle, but
- does not change the probability of the stars twinkling.
-
-## Moon
-
-### Description
-
-The 🌗 moon animation is an 8x8 animation of a moon, or, if you are running out of program memory, you
-can set it to just a static crescent moon, with no animation.
-
-### Flags
-
-Enabled with the `#define ENABLE_MOON` directive.
-
-The moon comes with only a few configuration options:
-
-* `STATIC_MOON` - include this directive if you want your moon to have no animation. It will simply be a static crescent
- moon, only taking up 6 bytes of space. If you do not include this directive, then the moon will have an animation.
- The default is a moon with animation.
-* `MOON_LINE` - defines the line that the moon sits on. Default is `4`. (see [reference](#reference))
-* `MOON_COLUMN` - defines the column that the moon sits at. Default is `4`. (see [reference](#reference))
-* `ANIMATE_MOON_EVERY_N_FRAMES` - only enabled when `STATIC_MOON` is disabled, this affects how often the moon changes phases.
- Example:
- ```c
- #define STARRY_NIGHT_ANIM_FRAME_DURATION 30
- #ifndef STATIC_MOON
- # define ANIMATE_MOON_EVERY_N_FRAMES 100
- #endif
- ```
- would result in the moon changing phases every 3000ms, or every 3 seconds.
-
-## Ocean
-
-### Description
-
-The 🌊 ocean animation is a full width animation of ocean waves, where the waves get rougher the faster you type.
-You can configure the boundaries for each degree of _wave ferocity_ as well as how fast the ocean/waves move.
-
-### Flags
-
-* `OCEAN_LINE` - where to render the ocean at. Defaults to `14`. (see [reference](#reference))
-* `OCEAN_ANIMATION_SPEED` - configures the number of frames you want to animate the ocean at.
- Must be equal to or lower than `NUMBER_OF_FRAMES`.
- Example:
- ```c
- #define NUMBER_OF_FRAMES 20
- #define OCEAN_ANIMATION_SPEED 5
- ```
- would result in the ocean animation happening every 4 frames. 20 would result in every frame,
- 1 would be once every 20 frames. This essentially changes how fast the waves will move.
-* `WAVE_CALM` - Defines the WPM at which the _Wave Ferocity_ kicks up.
- At any WPM between `WAVE_CALM` and `WAVE_HEAVY_STORM`, the waves will be just tiny ripples.
-* `WAVE_HEAVY_STORM` - Defines the WPM at which the _Wave Ferocity_ kicks up to medium.
- At any WPM between `WAVE_HEAVY_STORM` and `WAVE_HURRICANE`, the waves will be medium sized waves.
-* `WAVE_HURRICANE` - Defines the WPM at which the _Wave Ferocity_ kicks up to the last notch.
- At any WPM above `WAVE_HURRICANE`, the waves will be torrential.
-
-## Shooting Stars
-
-The 🌠 shooting star animation is a full screen animation that renders a meteor shower based on your typing speed. The
-faster you type, the more shooting stars there are!
-
-You can configure many parts of the shooting stars, from shower size, to speed, to length of each trail, to how spaced
-out they are.
-
-Note: Each frame of a shooting star is only 2 pixels in length. This is a design decision, and could probably be changed
-with a decent amount of work, but was chosen for looks and memory constraints.
-
-### Flags
-
-* `SHOOTING_STAR_DELAY` - Decides number of frames to delay, based on modulus, e.g. 12 means 0-11 frames of delay between each shooting star
-* `SHOOTING_STAR_FRAMES` - how long each shooting star will be. A size of `16` will result in shooting stars that are 32 pixels long
-* `MAX_NUMBER_OF_SHOOTING_STARS` - maximum number of shooting stars that can be on screen at the same time
-* `SHOOTING_STAR_WPM_INCREMENT` - every n WPM increase, add an extra star, up to MAX_NUMBER_OF_SHOOTING_STARS
- Example: an increment of 5 would result in 1 shooting star at 5-9wpm, 2 at 10-14, etc.
-* `SHOOTING_STAR_ANIMATION_SPEED` - configures the number of frames you want to animate the shooting stars at.
- Must be equal to or lower than `NUMBER_OF_FRAMES`.
- Example:
- ```c
- #define NUMBER_OF_FRAMES 20
- #define SHOOTING_STAR_ANIMATION_SPEED 5
- ```
- would result in the shooting star animation happening every 4 frames. 20 would result in every frame,
- 1 would be once every 20 frames. This essentially changes how fast the stars move through the sky.
-
-
-## Island
-
-The 🏝 island animation is a 32w x 16h animation of a small island with a single palm tree blowing in the wind. The faster
-you type the harder the palm tree blows in the wind!
-
-Since this animation has significant black space to the left side of the tree, certain design decisions were made to allow the
-shooting stars to still show up in the sky there. This animation should work on any size screen >=32 pixels wide, and you
-can place it anywhere on the screen, but above the ocean is recommended.
-
-### Flags
-
-* `ISLAND_LINE` - where to render the island at. Defaults to `12`. The island is 2 lines tall. (see [reference](#reference))
-* `ISLAND_COLUMN` - where to render the island at. Defaults to `0`. The island is 32 pixels wide. (see [reference](#reference))
-* `ISLAND_CALM` - Defines the WPM at which the _Storm Ferocity_ kicks up.
- At any WPM between `ISLAND_CALM` and `ISLAND_HEAVY_STORM`, the palm tree will just calmly blow in the wind.
-* `ISLAND_HEAVY_STORM` - Defines the WPM at which the _Storm Ferocity_ kicks up.
- At any WPM between `ISLAND_HEAVY_STORM` and `ISLAND_HURRICANE`, the palm tree will be blowing hard in the wind
-* `ISLAND_HURRICANE` - Defines the WPM at which the _Storm Ferocity_ kicks up.
- At any WPM above `ISLAND_HURRICANE`, the palm tree will almost be torn from its roots!
-
-
-# Reference
-
-Any reference to `_LINE` or `COLUMN` refers to setting a cursor position using `oled_set_cursor()`, which uses
-`OLED_FONT_WIDTH` and `OLED_FONT_HEIGHT` internally.
-This will be the top-leftmost pixel of the image, so `_LINE 1` would start at the 9th pixel down and `_COLUMN 1`
-would be the 7th pixel to the right, starting from the topleftmost pixel on the screen.
-
-This code has been untested with different font heights/widths, so you might have to adjust a bit to make it work if you
-have modified those values.
-
-# ToDo
-
-- [ ] don't require `is_calm` as a keyboard event. Not sure if the code will work without it currently.
-- [ ] make all the stars twinkle brightly based on keypresses rather than timed. Not just a movement twinkle, but a larger
- 'full' twinkle, where the star actually gets bigger. This will be quite difficult, thus is left out of the v1.
diff --git a/users/snowe/rules.mk b/users/snowe/rules.mk
deleted file mode 100644
index f188c90229..0000000000
--- a/users/snowe/rules.mk
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-ifeq ($(strip $(OLED_ENABLE)), yes)
- SRC += oled_setup.c
-
- ifdef OCEAN_DREAM_ENABLE
- ifeq ($(strip $(OCEAN_DREAM_ENABLE)), yes)
- SRC += ocean_dream.c
- OPT_DEFS += -DOCEAN_DREAM_ENABLE
- endif
- endif
- ifndef OCEAN_DREAM_ENABLE
- SRC += ocean_dream.c
- OPT_DEFS += -DOCEAN_DREAM_ENABLE
- endif
-
- ifdef LUNA_ENABLE
- ifeq ($(strip $(LUNA_ENABLE)), yes)
- SRC += luna.c
- OPT_DEFS += -DLUNA_ENABLE
- endif
- endif
- ifndef LUNA_ENABLE
- SRC += luna.c
- OPT_DEFS += -DLUNA_ENABLE
- endif
-endif
diff --git a/users/snowe/snowe.h b/users/snowe/snowe.h
deleted file mode 100644
index caba9d21bc..0000000000
--- a/users/snowe/snowe.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
-Copyright 2021 Tyler Thrailkill <@snowe/@snowe2010>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-
-#pragma once
-#include QMK_KEYBOARD_H
-
-#ifndef QMK_FIRMWARE_SNOWE_H
-# define QMK_FIRMWARE_SNOWE_H ;
-#endif // QMK_FIRMWARE_SNOWE_H
-
-#include "wrappers.h"
-#include "keycode_aliases.h"
-
-#undef PERMISSIVE_HOLD
-
-//#if defined(RGBLIGHT_ENABLE)
-//# include "rgb_stuff.h"
-//#endif
-//#if defined(RGB_MATRIX_ENABLE)
-//# include "rgb_matrix_stuff.h"
-//#endif
-#ifdef OLED_ENABLE
-# include "oled_setup.h"
-#endif
-
-
-enum layers { _MAIN, _GAMING, _LOWER, _UPPER, _ADJUST };
diff --git a/users/snowe/wrappers.h b/users/snowe/wrappers.h
deleted file mode 100644
index cf32a345c5..0000000000
--- a/users/snowe/wrappers.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
- * 2021 Tyler Thrailkill (@snowe/@snowe2010) <tyler.b.thrailkill@gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-#include "snowe.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_gergo_wrapper(...) LAYOUT_gergo(__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, 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 ________________NUMBER_RIGHT_______________ KC_6, KC_7, TD(TD_8_UP), 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_LEFT, KC_UP , KC_DOWN, KC_RGHT
-
-
-#define _________________RAISE_L1__________________ ________________NUMBER_LEFT________________
-#define _________________RAISE_L2__________________ _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC
-#define _________________RAISE_L3__________________ ___________________BLANK___________________
-
-#define _________________RAISE_R1__________________ ________________NUMBER_RIGHT_______________
-#define _________________RAISE_R2__________________ KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______
-#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, TG(_GAMING), AU_ON, AU_OFF, AG_NORM
-#define _________________ADJUST_L3_________________ RGB_RMOD,RGB_HUD,RGB_SAD, RGB_VAD, _______
-#define _________________ADJUST_R1_________________ _______, _______, _______, _______, _______
-#define _________________ADJUST_R2_________________ KC_RESET,CG_TOGG, _______, _______, _______
-#define _________________ADJUST_R3_________________ _______, KC_MNXT, KC_VOLU, KC_VOLD, KC_MPLY
diff --git a/users/spacebarracecar/config.h b/users/spacebarracecar/config.h
deleted file mode 100644
index 748c047155..0000000000
--- a/users/spacebarracecar/config.h
+++ /dev/null
@@ -1,2 +0,0 @@
-#pragma once
-#define TAPPING_TERM 200
diff --git a/users/spacebarracecar/readme.md b/users/spacebarracecar/readme.md
deleted file mode 100644
index 3d9ceb80c4..0000000000
--- a/users/spacebarracecar/readme.md
+++ /dev/null
@@ -1,111 +0,0 @@
-# SpacebarRacecar Userspace
-
-The main purpose of this userspace is to keep my personal keymaps clean by moving shared code in here and also allowing me to easily change all my keymaps at once. However it also contains code that might be interesting to QMK Users living in Germany. Most of this code will be explained here.
-
-
-## US Layout Keys for German PCs
-
-I'm using the US Ansi layout however I'm living in Germany which means that every PC here has its input language set to German. My goal was to create custom keycodes that emulate the US Keys so that I can plug my keyboards into any German PC and have them working without changing any settings.
-
-### How to use
-
-- To activate the custom keycodes set GERMAN_ENABLE = yes in the keyboards rules.mk file.
-- The keycodes are listed and explained in [spacebarracecar.h](spacebarracecar.h) under `enum userspace_custom_keycodes`.
-- The keycodes are handled by the `process_record_user` function which is now located in [spacebarracecar.c](spacebarracecar.c). To change keyboard specific configuration `process_record_keymap` is used (see [drashna userspace readme](../drashna/readme.md) for better explanation).
-- There is a predefined `_DEADKEY` layer in [spacebarracecar.h](spacebarracecar.h) under `enum userspace_layers`. Shifted CU_QUOT enables the dead key layer, just like KC_QUOT would when using the US International layout. (See `enum userspace_custom_keycodes` for more explanation).
-- On Windows grave and circonflexe are defined as dead keys when using the standard german layout. Those are automatically escaped when using the custom keycodes. `CU_ESCT` can be used to enable/disable this behavior.
-- For a complete example see my [planck](../../keyboards/planck/keymaps/spacebarracecar/keymap.c) keymap.
-
-### How it works
-
-Creating the custom keycodes was not a trivial task because it is necessary that they are able to send different keycodes depending on the physical shift state. Also the shift state of the actual send keycodes has to be completely independent of the physical shift state. At the same time it has to be ensured that shift never gets stuck or disabled accidentaly.
-
-(Shift state: If shift keycode is registered; Physical shift state: If shift key is actually pressed)
-
-Here is an example for a custom *US Equal* keycode that illustrates the problem:
-
-| Physical Shift State | Custom keycode | Actual send keycodes |
-|----------------------|----------------|----------------------|
-| Unshifted | = | Shifted DE_0 |
-| Shifted | + | Unshifted DE_PLUS |
-
-#### Tracking the physical shift state
-
-To track the physical shift state there are two custom left and right shift keycodes `CU_LSFT` and `CU_RSFT`. These track the current physical shift state using two booleans `lshift` and `rshift`. To make things easier both custom shifts use KC_LSFT. A space cadet shift functionality is also included. The preexisting space cadet shift implementation could not be used because it doesn't reset when custom keycodes are pressed and therefore produces unwated parenthesis.
-
-#### Custom keycode templates
-
-To ease the creation of custom keycodes there are a few templates defined in [spacebarracecar.h](spacebarracecar.h).
-
-- `SHIFT_NORM(kc1, kc2)` Sends independent keycodes kc1 and kc2 depending on physical shift state without changing shift state.
-- `SHIFT_SWITCH(kc1, kc2)` Sends independent keycodes kc1 and kc2 depending on physical shift state while flipping shift state.
-- `SHIFT_ALL(kc1, kc2)` Sends independent keycodes kc1 and kc2 depending on physical shift state while always sending shift.
-- `SHIFT_NO(kc1, kc2)` Sends independent keycodes kc1 and kc2 depending on physical shift state while never sending shift.
-- `SHIFT_ALGR(kc1, kc2)` Sends independent keycodes kc1 and kc2 depending on physical shift state while never sending shift and always sending ralt.
-- `UML(kc)` Sends keycode kc without changing shift state and then escapes the `_DEADKEY` layer.
-
-Here is `SHIFT_NORM` as an example:
-```c
-#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;
-```
-
-It is noticeable that before registering a keycode the same keycode gets unregistered first. The reason for this is that there can now be two physical keys that use the same keycode only with different shift states. When rolling those two keys the keycode has to be unregistered first, otherwise the second key doesn't register. Also noticable is that sometimes the `add_to_prev` function is called. This will be explained later. The `timer_timeout` function is necessary to reset the timers of the custom space cadet shift functionality.
-
-It's worth mentioning that `SHIFT_ALGR` unlike the other templates doesn't allow repetition of characters when held. This is because it would otherwise require extensive checking of physical ralt status similar to shift to prevent ralt from getting stuck.
-
-#### Ensuring that shift state is always correct when pressing normal keycodes
-
-To ensure that non custom keycodes always get send with the correct shift state the default case in `process_record_user` includes a physical shift check that sets shift accordingly before registering the keycode. Also `timer_timeout` is always called to reset the space cadet shift timers to prevent unwanted parenthesis.
-
-```c
-default:
- if(record->event.pressed) {
- timer_timeout();
-
- #ifdef GERMAN_ENABLE
- if (lshift || rshift)
- register_code(KC_LSFT);
- else
- unregister_code(KC_LSFT);
- #endif
-
- }
- return process_record_keymap(keycode, record);
-```
-
-#### Ensuring that custom keycodes always produce the correct character
-
-When very specific key combinations that include custom keycodes and/or shift are pressed it can happen that wrong characters are produced due to changing shift states. The previously mentioned `add_to_prev` function is there to prevent that. It can be used to add a keycode to the `prev_kcs` array that can hold up to 6 keycodes. On various occasions, but mainly when shift is released `unreg_prev` is called, which then unregisters all saved keycodes.
-
-For real use this is probably not needed, but it doesn't hurt either.
-
-#### Adapting the templates for other languages
-
-In theory the templates can be used to create custom keycodes that map any layout to any other layout.
-
-## Other stuff
-
-### Custom Nav/Esc Key
-
-Since I'm always using a navigation layer with all my keyboards there is a `_NAV` layer predefined in [spacebarracecar.h](spacebarracecar.h) under `enum userspace_layers`. In addition to that I wanted to have a keycode that activates the navigation layer when held, but acts as Escape when pressed. In QMK there already exists `LT(layer, kc)`, however I found that there is some amount of lag before the layer is actived. Therefore I created a custom keycode CU_NAV that does the same without lag using a custom timer. Since I already need timers for the custom space cadet shift implementing this was very easy by adding the timer to the `timer_timeout` function.
-
-### Gamemode
-
-The userspace includes the custom keycode `CU_GAME` that is used to flip a boolean variable called `game`. That variable is used to enable/disable windows keys and space cadet shift. In my [planck keymap](../../keyboards/planck/keymaps/spacebarracecar/keymap.c) it also makes Lower act like Space which is more comfortable when resting on wasd and it could also be used to change various other things when gaming.
diff --git a/users/spacebarracecar/rules.mk b/users/spacebarracecar/rules.mk
deleted file mode 100644
index 319e887ae3..0000000000
--- a/users/spacebarracecar/rules.mk
+++ /dev/null
@@ -1,5 +0,0 @@
-SRC += spacebarracecar.c
-
-ifeq ($(strip $(GERMAN_ENABLE)), yes)
- OPT_DEFS += -DGERMAN_ENABLE
-endif
diff --git a/users/spacebarracecar/spacebarracecar.c b/users/spacebarracecar/spacebarracecar.c
deleted file mode 100644
index 3141b8758e..0000000000
--- a/users/spacebarracecar/spacebarracecar.c
+++ /dev/null
@@ -1,352 +0,0 @@
-#include "spacebarracecar.h"
-
-#ifdef GERMAN_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; i<prev_indx; i++){
- if (kc == prev_kcs[i])
- return;
- }
- if (prev_indx == 6){
- for (int i=5; i>0; 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; i<prev_indx; i++){
- unregister_code(prev_kcs[i]);
- }
- prev_indx = 0;
-}
-#endif
-
-// Interrupt and times for Nav/Esc
-bool navesc = false;
-uint16_t navesc_timer = 0;
-
-// If true Gui keys and Space Cadet Shift get disabled
-bool game = false;
-
-// Interrupts all timers
-void timer_timeout(void){
- #ifdef GERMAN_ENABLE
- lshiftp = false;
- rshiftp = false;
- #endif
- navesc = false;
- timer_timeout_keymap();
-}
-
-__attribute__((weak))
-void timer_timeout_keymap(void){
-}
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case CU_GAME:
- if(record->event.pressed) {
- timer_timeout();
- game = !game;
- }
- // allows keymap to execute further commands when CU_GAME is pressed, for example enabling a macro layer
- return process_record_keymap(keycode, record) && false;
- case KC_LGUI:
- case KC_RGUI:
- if (record->event.pressed)
- timer_timeout();
- if (game)
- return false;
- else
- 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) {
- register_code(KC_ESC);
- unregister_code(KC_ESC);
- }
- layer_off(_NAV);
- }
- return false;
- case KC_P00:
- if(record->event.pressed) {
- timer_timeout();
- register_code(KC_P0);
- unregister_code(KC_P0);
- register_code(KC_P0);
- unregister_code(KC_P0);
- }
- return false;
-
- #ifdef RGBLIGHT_ENABLE
- case CU_RGBV:
- if(record->event.pressed) {
- timer_timeout();
- if (rgblight_get_val()+32>255)
- rgblight_sethsv(rgblight_get_hue(), rgblight_get_sat(), 31);
- else
- rgblight_sethsv(rgblight_get_hue(), rgblight_get_sat(), rgblight_get_val()+32);
- }
- return false;
- #endif
-
- #ifdef GERMAN_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 && !game) {
- register_code(KC_LSFT);
- register_code(KC_8);
- unregister_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 && !game) {
- register_code(KC_LSFT);
- register_code(KC_9);
- unregister_code(KC_9);
- unregister_code(KC_LSFT);
- }
- unreg_prev();
- if (!lshift)
- unregister_code(KC_LSFT);
- rshift = false;
- }
- return false;
- case CU_ESCT:
- if(record->event.pressed) {
- timer_timeout();
- esct = !esct;
- }
- return false;
- case CU_AE:
- UML(DE_ADIA)
- case CU_OE:
- UML(DE_ODIA)
- case CU_UE:
- UML(DE_UDIA)
- case CU_SS:
- if(record->event.pressed) {
- timer_timeout();
- unregister_code(KC_LSFT);
- register_code(DE_SS);
- unregister_code(DE_SS);
- if (lshift || rshift)
- register_code(KC_LSFT);
- layer_off(_DEADKEY);
- }
- return false;
- case CU_DDQ:
- if(record->event.pressed) {
- timer_timeout();
- register_code(KC_LSFT);
- register_code(KC_2);
- unregister_code(KC_2);
- if (!lshift && !rshift)
- unregister_code(KC_LSFT);
- layer_off(_DEADKEY);
- }
- return false;
- case CU_ED:
- if(record->event.pressed) {
- timer_timeout();
- layer_off(_DEADKEY);
- }
- return false;
- case CU_GRV:
- if(record->event.pressed) {
- timer_timeout();
- if (lshift || rshift){
- unregister_code(KC_LSFT);
- register_code(KC_ALGR);
- unregister_code(DE_PLUS);
- register_code(DE_PLUS);
- unregister_code(DE_PLUS);
- unregister_code(KC_ALGR);
- register_code(KC_LSFT);
- } else {
- register_code(KC_LSFT);
- unregister_code(DE_ACUT);
- register_code(DE_ACUT);
- unregister_code(DE_ACUT);
- unregister_code(KC_LSFT);
- if (!esct) {
- register_code(KC_SPC);
- unregister_code(KC_SPC);
- }
- }
- }
- return false;
- case CU_CIRC:
- if(record->event.pressed) {
- timer_timeout();
- unregister_code(KC_LSFT);
- unregister_code(DE_CIRC);
- register_code(DE_CIRC);
- unregister_code(DE_CIRC);
- if (!esct) {
- register_code(KC_SPC);
- unregister_code(KC_SPC);
- }
- if (lshift || rshift)
- register_code(KC_LSFT);
- }
- return false;
- case CU_QUOT:
- if(record->event.pressed){
- timer_timeout();
- register_code(KC_LSFT);
- if (lshift || rshift){
- layer_on(_DEADKEY);
- } else {
- unregister_code(DE_HASH);
- register_code(DE_HASH);
- add_to_prev(DE_HASH);
- }
- } else {
- unregister_code(DE_HASH);
- unreg_prev();
- if (lshift || rshift)
- register_code(KC_LSFT);
- else
- unregister_code(KC_LSFT);
- }
- return false;
- case CU_6:
- if(record->event.pressed){
- timer_timeout();
- unregister_code(KC_LSFT);
- if (lshift || rshift){
- unregister_code(DE_CIRC);
- register_code(DE_CIRC);
- unregister_code(DE_CIRC);
- if (!esct) {
- register_code(KC_SPC);
- unregister_code(KC_SPC);
- }
- register_code(KC_LSFT);
- } else {
- register_code(DE_6);
- }
- } else {
- unregister_code(DE_6);
- }
- return false;
- case CU_COMM:
- SHIFT_NO(DE_COMM, DE_LABK)
- case CU_DOT:
- SHIFT_NORM(DE_DOT, DE_LABK)
- case CU_SLSH:
- SHIFT_ALL(DE_7, DE_SS)
- case CU_SCLN:
- SHIFT_ALL(DE_COMM, DE_DOT)
- case CU_3:
- SHIFT_NO(DE_3, DE_HASH)
- case CU_7:
- SHIFT_NORM(DE_7, DE_6)
- case CU_8:
- SHIFT_NORM(DE_8, DE_PLUS)
- case CU_9:
- SHIFT_NORM(DE_9, DE_8)
- case CU_0:
- SHIFT_NORM(DE_0, DE_9)
- case CU_EQL:
- SHIFT_SWITCH(DE_0, DE_PLUS)
- case CU_LBRC:
- SHIFT_ALGR(DE_8, DE_7)
- case CU_RBRC:
- SHIFT_ALGR(DE_9, DE_0)
- case CU_BSLS:
- SHIFT_ALGR(DE_SS, DE_LABK)
- case CU_Z:
- CTRL(DE_Z, KC_Z)
- case CU_Y:
- CTRL(DE_Y, KC_Y)
- 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 GERMAN_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/spacebarracecar/spacebarracecar.h b/users/spacebarracecar/spacebarracecar.h
deleted file mode 100644
index 43bfc5e655..0000000000
--- a/users/spacebarracecar/spacebarracecar.h
+++ /dev/null
@@ -1,247 +0,0 @@
-#pragma once
-
-#include "quantum.h"
-#include "keymap_german.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, // NAV | ESC
- KC_P00, // Numpad double zero
-
- #ifdef GERMAN_ENABLE
- CU_LSFT, // LSFT | (
- CU_RSFT, // LSFT | )
- CU_COMM, // , | <
- CU_DOT, // . | >
- CU_SLSH, // / | ?
- CU_SCLN, // ; | :
- CU_QUOT, // ' | Enable deadkey layer
- CU_GRV, // ` | ~
- CU_CIRC, // ^
- CU_3, // 3 | #
- CU_6, // 6 | ^
- CU_7, // 7 | &
- CU_8, // 8 | *
- CU_9, // 9 | (
- CU_0, // 0 | )
- CU_EQL, // = | +
- CU_LBRC, // [ | {
- CU_RBRC, // ] | }
- CU_BSLS, // \ | |
- CU_Z, // Z | Y in conjunction with ctrl
- CU_Y, // Y | Z in conjunction wiht ctrl
- CU_ESCT, // Toggle escape of grv and circ on/off
- // Deadkey Layer
- CU_AE, // Ä
- CU_OE, // Ö
- CU_UE, // Ü
- CU_SS, // ß
- CU_DDQ, // "
- CU_ED, // Escape deadkey layer
- #endif
-
- #ifdef RGBLIGHT_ENABLE
- CU_RGBV, // Cycle through RGB brightness
- #endif
-
- NEW_SAFE_RANGE // Use for keymap specific keycodes
-};
-
-#ifdef GERMAN_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;
-
-extern bool game;
-
-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) { \
- unregister_code(kc2); \
- register_code(kc2); \
- add_to_prev(kc2); \
- } else { \
- 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;
-
-// Never shifted
-#define SHIFT_NO(kc1, kc2) \
-if (record->event.pressed) { \
- timer_timeout(); \
- unregister_code(KC_LSFT); \
- if (lshift || rshift) { \
- unregister_code(kc2); \
- register_code(kc2); \
- add_to_prev(kc2); \
- } else { \
- unregister_code(kc1); \
- register_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;
-
-// 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); \
- register_code(kc2); \
- unregister_code(kc2); \
- register_code(KC_LSFT); \
- } else { \
- unregister_code(kc1); \
- register_code(kc1); \
- unregister_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;
-
-// Template for keys on deadkey layer (mostly Umlaute)
-#define UML(kc) \
-if(record->event.pressed) { \
- timer_timeout(); \
- if (lshift || rshift) \
- register_code(KC_LSFT); \
- else \
- unregister_code(KC_LSFT); \
- register_code(kc); \
- unregister_code(kc); \
- layer_off(_DEADKEY); \
-} \
-return false;
diff --git a/users/spidey3/config.h b/users/spidey3/config.h
deleted file mode 100644
index 0b3bf8f723..0000000000
--- a/users/spidey3/config.h
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2022 Joshua Diamond josh@windowoffire.com (@spidey3)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#pragma once
-
-#define LED_DISABLE_WHEN_USB_SUSPENDED
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-
-#ifdef RGBLIGHT_ENABLE
-
-# define RGBLIGHT_LAYERS
-# define RGBLIGHT_MAX_LAYERS 18
-# define RGBLIGHT_LAYER_BLINK
-# define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF
-# define RGBLIGHT_STARTUP_ANIMATION
-
-# undef RGBLIGHT_EFFECT_CHRISTMAS
-# undef RGBLIGHT_EFFECT_ALTERNATING
-
-# define RGBLIGHT_DEFAULT_HUE 213
-# define RGBLIGHT_DEFAULT_SAT UINT8_MAX
-# define RGBLIGHT_DEFAULT_VAL RGBLIGHT_LIMIT_VAL / 2
-
-# if defined(RGBLIGHT_EFFECT_TWINKLE)
-# define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_TWINKLE
-# elif defined(RGBLIGHT_EFFECT_RAINBOW_MOOD)
-# define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_MOOD
-# else
-# define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_STATIC_LIGHT
-# endif
-
-#endif
-
-#define UNICODE_SELECTED_MODES UNICODE_MODE_MACOS, UNICODE_MODE_LINUX, UNICODE_MODE_WINCOMPOSE, UNICODE_MODE_EMACS
-
-#define SPI_DEBUG_SCAN_RATE
-
-#undef MANUFACTURER
-#define MANUFACTURER "Window of Fire"
-
-// Some keyboards enable BACKLIGHT_CAPS_LOCK without checking if backlight is enabled.
-// Undef as appropriate to avoid compiler warnings in that case.
-#ifndef BACKLIGHT_ENABLE
-#undef BACKLIGHT_CAPS_LOCK
-#endif
diff --git a/users/spidey3/init.c b/users/spidey3/init.c
deleted file mode 100644
index 15789b3958..0000000000
--- a/users/spidey3/init.c
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright 2022 Joshua Diamond josh@windowoffire.com (@spidey3)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#include "spidey3.h"
-
-void keyboard_post_init_user(void) {
-#ifdef RGBLIGHT_ENABLE
- keyboard_post_init_user_rgb();
-#endif
-}
-
-void eeconfig_init_user(void) {
- set_single_persistent_default_layer(_BASE);
-#ifdef UNICODEMAP_ENABLE
- eeconfig_init_user_unicode();
-#endif
-}
-
-#ifdef RGBLIGHT_ENABLE
-bool shutdown_user(bool jump_to_bootloader) {
- shutdown_user_rgb();
- return true;
-}
-#endif
diff --git a/users/spidey3/layer_rgb.c b/users/spidey3/layer_rgb.c
deleted file mode 100644
index be76788d21..0000000000
--- a/users/spidey3/layer_rgb.c
+++ /dev/null
@@ -1,486 +0,0 @@
-// Copyright 2022 Joshua Diamond josh@windowoffire.com (@spidey3)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#include QMK_KEYBOARD_H
-
-#include "spidey3.h"
-#include "velocikey.h"
-#include <lib/lib8tion/lib8tion.h>
-
-uint32_t rgb_mode;
-uint16_t rgb_hue;
-uint8_t rgb_sat;
-uint8_t rgb_val;
-bool rgb_saved = 0;
-
-extern bool spi_gflock;
-extern uint16_t spi_replace_mode;
-
-static void set_rgb_default(void) {
- rgblight_enable();
- rgblight_sethsv(RGBLIGHT_DEFAULT_HUE, RGBLIGHT_DEFAULT_SAT, RGBLIGHT_DEFAULT_VAL);
- rgblight_mode(RGBLIGHT_DEFAULT_MODE);
-#ifdef VELOCIKEY_ENABLE
- if (velocikey_enabled()) velocikey_toggle();
-#endif
-}
-
-// clang-format off
-
-// Convenience macros
-#define NONE { RGBLIGHT_END_SEGMENTS }
-#define CORNER_BL(color) { 0, 1, color }
-#define CORNER_BR(color) { RGBLED_NUM / 2 - 1, 1, color }
-#define CORNER_FR(color) { RGBLED_NUM / 2, 1, color }
-#define CORNER_FL(color) { RGBLED_NUM - 1, 1, color }
-#define CORNERS(color) {0, 1, color}, {RGBLED_NUM / 2 - 1, 2, color}, { RGBLED_NUM - 1, 1, color }
-#define FRONT(inset, color) { RGBLED_NUM / 2 + inset, RGBLED_NUM / 2 - 2 * inset, color }
-#define BACK(inset, color) { inset, RGBLED_NUM / 2 - 2 * inset, color }
-
-const rgblight_segment_t PROGMEM _none[] = NONE;
-
-#define LAYER_OFFSET 0
-// No indicator for base layer
-const rgblight_segment_t PROGMEM _layer1_layer[] = RGBLIGHT_LAYER_SEGMENTS(CORNERS(HSV_MAGENTA)); // _NUMPAD
-const rgblight_segment_t PROGMEM _layer2_layer[] = RGBLIGHT_LAYER_SEGMENTS(CORNERS(HSV_GREEN)); // _FN
-
-#define LOCK_OFFSET 3
-const rgblight_segment_t PROGMEM _numlock_layer[] = RGBLIGHT_LAYER_SEGMENTS(FRONT(3, HSV_YELLOW));
-const rgblight_segment_t PROGMEM _capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS(CORNER_FL(HSV_AZURE));
-const rgblight_segment_t PROGMEM _scrolllock_layer[] = RGBLIGHT_LAYER_SEGMENTS(CORNER_FR(HSV_ORANGE));
-
-#define MISC_OFFSET 6
-const rgblight_segment_t PROGMEM _gflock_layer[] = RGBLIGHT_LAYER_SEGMENTS(BACK(1, HSV_ORANGE));
-const rgblight_segment_t PROGMEM _glyphreplace_layer[] = RGBLIGHT_LAYER_SEGMENTS(FRONT(1, HSV_ORANGE));
-
-#define ACK_OFFSET 8
-const rgblight_segment_t PROGMEM _no_layer[] = RGBLIGHT_LAYER_SEGMENTS(FRONT(1, HSV_RED));
-const rgblight_segment_t PROGMEM _yes_layer[] = RGBLIGHT_LAYER_SEGMENTS(FRONT(1, HSV_GREEN));
-const rgblight_segment_t PROGMEM _meh_layer[] = RGBLIGHT_LAYER_SEGMENTS(FRONT(1, HSV_YELLOW));
-const rgblight_segment_t PROGMEM _huh_layer[] = RGBLIGHT_LAYER_SEGMENTS(CORNERS(HSV_YELLOW), FRONT(1, HSV_BLUE), BACK(1, HSV_BLUE));
-
-#define UNICODE_OFFSET 12
-const rgblight_segment_t PROGMEM _uc_mac_layer[] = RGBLIGHT_LAYER_SEGMENTS(CORNER_BR(HSV_PURPLE));
-// No indicator for UNICODE_MODE_LINUX
-// UNICODE_MODE_WINDOWS disabled in config.h
-// UNICODE_MODE_BSD not implemented
-const rgblight_segment_t PROGMEM _uc_winc_layer[] = RGBLIGHT_LAYER_SEGMENTS(CORNER_BR(HSV_CYAN));
-const rgblight_segment_t PROGMEM _uc_emacs_layer[] = RGBLIGHT_LAYER_SEGMENTS(CORNER_BR(HSV_GREEN));
-
-// Now define the array of layers. Higher numbered layers take precedence.
-const rgblight_segment_t *const PROGMEM _rgb_layers[] = {
- [LAYER_OFFSET + _BASE] = _none,
- [LAYER_OFFSET + _NUMPAD] = _layer1_layer,
- [LAYER_OFFSET + _FN] = _layer2_layer,
-
- [LOCK_OFFSET + 0] = _numlock_layer,
- [LOCK_OFFSET + 1] = _capslock_layer,
- [LOCK_OFFSET + 2] = _scrolllock_layer,
-
- [MISC_OFFSET + 0] = _gflock_layer,
- [MISC_OFFSET + 1] = _glyphreplace_layer,
-
- [ACK_OFFSET + ACK_NO] = _no_layer,
- [ACK_OFFSET + ACK_YES] = _yes_layer,
- [ACK_OFFSET + ACK_MEH] = _meh_layer,
- [ACK_OFFSET + ACK_HUH] = _huh_layer,
-
- [UNICODE_OFFSET + UNICODE_MODE_MACOS] = _uc_mac_layer,
- [UNICODE_OFFSET + UNICODE_MODE_LINUX] = _none,
- [UNICODE_OFFSET + UNICODE_MODE_WINDOWS] = _none,
- [UNICODE_OFFSET + UNICODE_MODE_BSD] = _none,
- [UNICODE_OFFSET + UNICODE_MODE_WINCOMPOSE] = _uc_winc_layer,
- [UNICODE_OFFSET + UNICODE_MODE_EMACS] = _uc_emacs_layer,
-
- [UNICODE_OFFSET + UNICODE_MODE_COUNT] = NULL
-};
-
-// clang-format on
-
-const uint8_t PROGMEM _n_rgb_layers = ARRAY_SIZE(_rgb_layers) - 1;
-
-void clear_rgb_layers(void) {
- for (uint8_t i = 0; i < _n_rgb_layers; i++) {
- rgblight_set_layer_state(i, false);
- }
-}
-
-void do_rgb_layers(layer_state_t state, uint8_t start, uint8_t end) {
- for (uint8_t i = start; i < end; i++) {
- bool is_on = layer_state_cmp(state, i);
- rgblight_set_layer_state(LAYER_OFFSET + i, is_on);
- }
-}
-
-void do_rgb_unicode(uint8_t uc_mode) {
- for (uint8_t i = 0; i < UNICODE_MODE_COUNT; i++) {
- bool is_on = i == uc_mode;
- rgblight_set_layer_state(UNICODE_OFFSET + i, is_on);
- }
-}
-
-void do_rgb_all(void) {
- do_rgb_layers(default_layer_state, LAYER_BASE_DEFAULT, LAYER_BASE_REGULAR);
- do_rgb_layers(layer_state, LAYER_BASE_REGULAR, LAYER_BASE_END);
- do_rgb_unicode(get_unicode_input_mode());
- rgblight_set_layer_state(MISC_OFFSET + 0, spi_gflock);
- rgblight_set_layer_state(MISC_OFFSET + 1, spi_replace_mode != SPI_NORMAL);
-}
-
-// flags. 0 = no change, 1 = increment, -1 = decrement.
-int8_t change_hue = 0;
-int8_t change_sat = 0;
-int8_t change_val = 0;
-
-// timer to control color change speed
-uint16_t change_timer = 0;
-const uint16_t change_tick = 15;
-
-extern rgblight_config_t rgblight_config;
-extern rgblight_status_t rgblight_status;
-
-#if defined(RGBLIGHT_STARTUP_ANIMATION)
-
-# define STARTUP_ANIMATION_SATURATION 200
-# define STARTUP_ANIMATION_VALUE 255
-# define STARTUP_ANIMATION_FADE_STEP 5
-# define STARTUP_ANIMATION_CYCLE_STEP 2
-# define STARTUP_ANIMATION_RAMP_TO_STEPS 70
-# define STARTUP_ANIMATION_STEP_TIME 10
-# define STARTUP_ANIMATION_INITIAL_DELAY 0 // milliseconds, must be < 255 * STEP_TIME
-
-// clang-format off
-typedef enum {
- DISABLED,
- WAITING,
- RESTART,
- START,
- FADE_OLD,
- FADE_IN,
- CYCLE,
- RAMP_DOWN,
- RAMP_TO,
- CLEAN_UP,
- DONE
-} startup_animation_state_t;
-// clang-format on
-
-static rgblight_config_t old_config;
-static uint8_t old_base_mode;
-static startup_animation_state_t startup_animation_state = DISABLED;
-static uint16_t rgblight_startup_loop_timer;
-
-void startup_animation_init(void) {
- old_config.raw = rgblight_config.raw;
- old_base_mode = rgblight_status.base_mode;
-
- if (!old_config.enable) rgblight_enable_noeeprom();
-}
-#endif
-
-void keyboard_post_init_user_rgb(void) {
- // Enable the LED layers
- rgblight_layers = _rgb_layers;
- do_rgb_all();
-
-#if defined(RGBLIGHT_STARTUP_ANIMATION)
- startup_animation_init();
- startup_animation_state = STARTUP_ANIMATION_INITIAL_DELAY ? WAITING : START;
-#endif
-}
-
-void matrix_scan_user_rgb(void) {
-#if defined(RGBLIGHT_STARTUP_ANIMATION)
- if (startup_animation_state != DONE && is_keyboard_master()) {
- if (startup_animation_state == START || timer_elapsed(rgblight_startup_loop_timer) > STARTUP_ANIMATION_STEP_TIME) {
- static uint8_t counter;
- rgblight_startup_loop_timer = timer_read();
-
- switch (startup_animation_state) {
- case WAITING:
-# ifdef STARTUP_ANIMATION_DEBUG
- dprintf("sua WAITING counter=%u\n", counter);
-# endif
- if (counter < STARTUP_ANIMATION_INITIAL_DELAY / STARTUP_ANIMATION_STEP_TIME) {
- counter++;
- } else {
- startup_animation_state = START;
- }
- break;
-
- case RESTART:
-# ifdef STARTUP_ANIMATION_DEBUG
- dprintln("sua RESTART");
-# endif
- startup_animation_init();
- case START:
-# ifdef STARTUP_ANIMATION_DEBUG
- dprintln("sua START");
-# endif
- startup_animation_state = FADE_OLD;
- counter = old_config.val;
- // No break! Just roll into FADE_OLD in the same iteration...
-
- case FADE_OLD:
-# ifdef STARTUP_ANIMATION_DEBUG
- dprintf("sua FADE_OLD counter=%u\n", counter);
-# endif
- if (counter >= STARTUP_ANIMATION_FADE_STEP) {
- rgblight_sethsv_noeeprom(old_config.hue, old_config.sat, counter);
- counter -= STARTUP_ANIMATION_FADE_STEP;
- } else {
- counter = 0;
- startup_animation_state = FADE_IN;
- rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
- }
- break;
-
- case FADE_IN:
-# ifdef STARTUP_ANIMATION_DEBUG
- dprintf("sua FADE_IN counter=%u\n", counter);
-# endif
- if (counter < STARTUP_ANIMATION_VALUE) {
- rgblight_sethsv_noeeprom(old_config.hue, STARTUP_ANIMATION_SATURATION, counter);
- counter += STARTUP_ANIMATION_FADE_STEP;
- } else {
- counter = 255;
- startup_animation_state = CYCLE;
- }
- break;
-
- case CYCLE:
-# ifdef STARTUP_ANIMATION_DEBUG
- dprintf("sua CYCLE counter=%u\n", counter);
-# endif
- if (counter >= STARTUP_ANIMATION_CYCLE_STEP) {
- rgblight_sethsv_noeeprom((counter + old_config.hue) % 255, STARTUP_ANIMATION_SATURATION, STARTUP_ANIMATION_VALUE);
- counter -= STARTUP_ANIMATION_CYCLE_STEP;
- } else {
- if (
-# ifdef RGBLIGHT_EFFECT_BREATHING
- (old_base_mode == RGBLIGHT_MODE_BREATHING) ||
-# endif
-# ifdef RGBLIGHT_EFFECT_SNAKE
- (old_base_mode == RGBLIGHT_MODE_SNAKE) ||
-# endif
-# ifdef RGBLIGHT_EFFECT_KNIGHT
- (old_base_mode == RGBLIGHT_MODE_KNIGHT) ||
-# endif
-# ifdef RGBLIGHT_EFFECT_TWINKLE
- (old_base_mode == RGBLIGHT_MODE_TWINKLE) ||
-# endif
- !old_config.enable) {
- counter = STARTUP_ANIMATION_VALUE;
- startup_animation_state = RAMP_DOWN;
- } else if (
-# ifdef RGBLIGHT_EFFECT_STATIC_GRADIENT
- (old_base_mode == RGBLIGHT_MODE_STATIC_GRADIENT) ||
-# endif
-# ifdef RGBLIGHT_EFFECT_RAINBOW_MOOD
- (old_base_mode == RGBLIGHT_MODE_RAINBOW_MOOD) ||
-# endif
-# ifdef RGBLIGHT_EFFECT_RAINBOW_SWIRL
- (old_base_mode == RGBLIGHT_MODE_RAINBOW_SWIRL) ||
-# endif
-# ifdef RGBLIGHT_EFFECT_RAINBOW_CHRISTMAS
- (old_base_mode == RGBLIGHT_MODE_CHRISTMAS) ||
-# endif
-# ifdef RGBLIGHT_EFFECT_RAINBOW_RGB_TEST
- (old_base_mode == RGBLIGHT_MODE_RGB_TEST) ||
-# endif
- (old_base_mode == RGBLIGHT_MODE_STATIC_LIGHT)) {
- counter = 0;
- startup_animation_state = RAMP_TO;
- } else {
- startup_animation_state = CLEAN_UP;
- }
- }
- break;
-
- case RAMP_DOWN:
-# ifdef STARTUP_ANIMATION_DEBUG
- dprintf("sua RAMP_DOWN counter=%u\n", counter);
-# endif
- rgblight_sethsv_noeeprom(old_config.hue, STARTUP_ANIMATION_SATURATION, counter);
- if (counter >= STARTUP_ANIMATION_FADE_STEP) {
- counter -= STARTUP_ANIMATION_FADE_STEP;
- } else {
- startup_animation_state = CLEAN_UP;
- }
- break;
-
- case RAMP_TO: {
-# ifdef STARTUP_ANIMATION_DEBUG
- dprintf("sua RAMP_TO s=%u, v=%u, counter=%u\n", old_config.sat, old_config.val, counter);
-# endif
- uint8_t steps = STARTUP_ANIMATION_RAMP_TO_STEPS;
- if (counter < steps) {
- uint8_t s = STARTUP_ANIMATION_SATURATION + counter * (((float)old_config.sat - STARTUP_ANIMATION_SATURATION) / (float)steps);
- uint8_t v = STARTUP_ANIMATION_VALUE + counter * (((float)old_config.val - STARTUP_ANIMATION_VALUE) / (float)steps);
- rgblight_sethsv_noeeprom(old_config.hue, s, v);
- counter++;
- } else {
- startup_animation_state = CLEAN_UP;
- }
- } break;
-
- case CLEAN_UP:
-# ifdef STARTUP_ANIMATION_DEBUG
- dprintln("sua CLEAN_UP");
-# endif
- rgblight_reload_from_eeprom();
- startup_animation_state = DONE;
-# ifdef STARTUP_ANIMATION_DEBUG
- dprintln("sua DONE");
-# endif
- break;
-
- default:
- break;
- }
- }
- }
-#endif
-
- if (change_hue != 0 || change_val != 0 || change_sat != 0) {
- if (timer_elapsed(change_timer) > change_tick) {
- HSV hsv = rgblight_get_hsv();
- hsv.h += change_hue;
- hsv.s = change_sat > 0 ? qadd8(hsv.s, (uint8_t)change_sat) : qsub8(hsv.s, (uint8_t)-change_sat);
- hsv.v = change_val > 0 ? qadd8(hsv.v, (uint8_t)change_val) : qsub8(hsv.v, (uint8_t)-change_val);
- rgblight_sethsv_noeeprom(hsv.h, hsv.s, hsv.v);
- change_timer = timer_read();
- }
- }
-}
-
-void shutdown_user_rgb(void) {
- clear_rgb_layers();
- rgblight_enable_noeeprom();
- rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
- for (int i = 0; i < RGBLED_NUM; i++) {
- rgblight_setrgb_at(0xFF, 0x80 * (i % 2), 0, i);
- }
-}
-
-layer_state_t default_layer_state_set_user_rgb(layer_state_t state) {
- do_rgb_layers(state, LAYER_BASE_DEFAULT, LAYER_BASE_REGULAR);
- return state;
-}
-
-layer_state_t layer_state_set_user_rgb(layer_state_t state) {
- do_rgb_layers(state, LAYER_BASE_REGULAR, LAYER_BASE_END);
- return state;
-}
-
-bool led_update_user_rgb(led_t led_state) {
- rgblight_set_layer_state(LOCK_OFFSET + 0, led_state.num_lock);
- rgblight_set_layer_state(LOCK_OFFSET + 1, led_state.caps_lock);
- rgblight_set_layer_state(LOCK_OFFSET + 2, led_state.scroll_lock);
-
- return true;
-}
-
-#if defined(UNICODE_COMMON_ENABLE)
-void unicode_input_mode_set_user_rgb(uint8_t input_mode) {
- rgb_layer_ack(ACK_MEH);
- do_rgb_unicode(input_mode);
-}
-#endif
-
-void rgb_layer_ack_yn(bool yn) { rgb_layer_ack(yn ? ACK_YES : ACK_NO); }
-
-void rgb_layer_ack(layer_ack_t n) {
- uint8_t layer = ACK_OFFSET + n;
- rgblight_blink_layer(layer, RGB_LAYER_ACK_DURATION);
-}
-
-extern keymap_config_t keymap_config;
-extern rgblight_config_t rgblight_config;
-
-bool process_record_user_rgb(uint16_t keycode, keyrecord_t *record) {
- if (record->event.pressed) {
- switch (keycode) {
- // clang-format off
- case SPI_GLO: set_rgb_default(); return false;
-
- case RGB_HUI: change_timer = timer_read(); change_hue = 1; return false;
- case RGB_HUD: change_timer = timer_read(); change_hue = -1; return false;
- case RGB_SAI: change_timer = timer_read(); change_sat = 1; return false;
- case RGB_SAD: change_timer = timer_read(); change_sat = -1; return false;
- case RGB_VAI: change_timer = timer_read(); change_val = 1; return false;
- case RGB_VAD: change_timer = timer_read(); change_val = -1; return false;
- // clang-format on
- }
- } else {
- bool rgb_done = false;
- switch (keycode) {
- case RGB_HUI:
- case RGB_HUD:
- change_hue = 0;
- rgb_done = true;
- break;
- case RGB_SAI:
- case RGB_SAD:
- change_sat = 0;
- rgb_done = true;
- break;
- case RGB_VAI:
- case RGB_VAD:
- change_val = 0;
- rgb_done = true;
- break;
- }
-
- if (rgb_done) {
- HSV final = rgblight_get_hsv();
- rgblight_sethsv(final.h, final.s, final.v);
- }
- }
-
- return true;
-}
-
-void post_process_record_user_rgb(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- // Acks follow...
- case QK_DEBUG_TOGGLE:
- if (debug_matrix || debug_keyboard)
- rgb_layer_ack(ACK_HUH);
- else if (debug_enable)
- rgb_layer_ack(ACK_YES);
- else
- rgb_layer_ack(ACK_NO);
- break;
-
- case SPI_GFLOCK:
- rgb_layer_ack_yn(spi_gflock);
- rgblight_set_layer_state(MISC_OFFSET + 0, spi_gflock);
- break;
-
- case SPI_NORMAL ... SPI_FRAKTR:
- rgb_layer_ack_yn(spi_replace_mode != SPI_NORMAL);
- rgblight_set_layer_state(MISC_OFFSET + 1, spi_replace_mode != SPI_NORMAL);
- break;
-
- case RGB_TOG:
- // Hack - we only get called on the press for RGB_TOG,
- // but the flag is only flipped on the release...
- rgb_layer_ack_yn(!rgblight_config.enable);
- break;
-
-#ifdef VELOCIKEY_ENABLE
- case QK_VELOCIKEY_TOGGLE:
- rgb_layer_ack_yn(velocikey_enabled());
- break;
-#endif
-
-#ifdef NKRO_ENABLE
- case NK_TOGG:
- case NK_ON:
- case NK_OFF:
- rgb_layer_ack_yn(keymap_config.nkro);
- break;
-#endif
- }
-}
diff --git a/users/spidey3/readme.md b/users/spidey3/readme.md
deleted file mode 100644
index 409d6e5f81..0000000000
--- a/users/spidey3/readme.md
+++ /dev/null
@@ -1,14 +0,0 @@
-Copyright 2020 Joshua Diamond josh@windowoffire.com @spidey3
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
diff --git a/users/spidey3/rules.mk b/users/spidey3/rules.mk
deleted file mode 100644
index 35cfdb4187..0000000000
--- a/users/spidey3/rules.mk
+++ /dev/null
@@ -1,15 +0,0 @@
-BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
-CONSOLE_ENABLE = yes # Console for debug
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-NKRO_ENABLE = yes
-LTO_ENABLE = yes
-
-SRC += init.c
-SRC += spidey3.c
-
-ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
- SRC += layer_rgb.c
-endif
-ifeq ($(strip $(UNICODEMAP_ENABLE)), yes)
- SRC += spidey3_unicode.c
-endif
diff --git a/users/spidey3/spidey3.c b/users/spidey3/spidey3.c
deleted file mode 100644
index b177f9f652..0000000000
--- a/users/spidey3/spidey3.c
+++ /dev/null
@@ -1,384 +0,0 @@
-// Copyright 2022 Joshua Diamond josh@windowoffire.com (@spidey3)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#include QMK_KEYBOARD_H
-
-#include "spidey3.h"
-#include "version.h"
-#include <stdlib.h>
-
-static bool rand_seeded = false;
-
-uint16_t spi_replace_mode = SPI_NORMAL;
-bool spi_gflock = false;
-
-#if defined(CONSOLE_ENABLE) && !defined(NO_DEBUG)
-static uint32_t matrix_scan_count = 0;
-static bool reported_version = false;
-
-# if defined(SPI_DEBUG_SCAN_RATE)
-static uint32_t matrix_timer = 0;
-# endif
-
-void report_version(void) {
- uprintln(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION " - " QMK_BUILDDATE);
- reported_version = true;
-}
-#endif
-
-void matrix_scan_user(void) {
-#if defined(CONSOLE_ENABLE) && !defined(NO_DEBUG)
-# if defined(SPI_DEBUG_SCAN_RATE)
- matrix_scan_count++;
- if (debug_enable) {
- uint32_t timer_now = timer_read32();
- if (matrix_timer == 0) {
- matrix_timer = timer_now;
- matrix_scan_count = 0;
- } else if (TIMER_DIFF_32(timer_now, matrix_timer) > SPI_SCAN_RATE_INTERVAL * 1000) {
- matrix_timer = timer_now;
- uprintf("scan rate: %lu/s\n", matrix_scan_count / SPI_SCAN_RATE_INTERVAL);
- matrix_scan_count = 0;
- if (!reported_version) report_version();
- }
- }
-# else
- if (!reported_version) {
- matrix_scan_count++;
- if (matrix_scan_count > 300) report_version();
- }
-# endif
-#endif
-#ifdef RGBLIGHT_ENABLE
- matrix_scan_user_rgb();
-#endif
-}
-
-static uint32_t math_glyph_exceptions(const uint16_t keycode, const bool shifted) {
- bool caps = host_keyboard_led_state().caps_lock;
- if (shifted != caps) {
- switch (keycode) {
- // clang-format off
- case KC_C: return 0x2102;
- case KC_H: return 0x210D;
- case KC_N: return 0x2115;
- case KC_P: return 0x2119;
- case KC_Q: return 0x211A;
- case KC_R: return 0x211D;
- case KC_Z: return 0x2124;
- // clang-format on
- }
- }
- return 0;
-}
-
-bool process_record_glyph_replacement(uint16_t keycode, keyrecord_t *record, uint32_t baseAlphaLower, uint32_t baseAlphaUpper, uint32_t zeroGlyph, uint32_t baseNumberOne, uint32_t spaceGlyph, uint32_t (*exceptions)(const uint16_t keycode, const bool shifted), uint8_t temp_mod, uint8_t temp_osm) {
- if ((((temp_mod | temp_osm) & (MOD_MASK_CTRL | MOD_MASK_ALT | MOD_MASK_GUI))) == 0) {
- bool shifted = ((temp_mod | temp_osm) & MOD_MASK_SHIFT);
- if (exceptions) {
- uint32_t res = exceptions(keycode, shifted);
- if (res) {
- if (record->event.pressed) {
- register_unicode(res);
- }
- return false;
- }
- }
- switch (keycode) {
- case KC_A ... KC_Z:
- if (record->event.pressed) {
- clear_mods();
-#ifndef NO_ACTION_ONESHOT
- clear_oneshot_mods();
-#endif
-
- bool caps = host_keyboard_led_state().caps_lock;
- uint32_t base = ((shifted == caps) ? baseAlphaLower : baseAlphaUpper);
- register_unicode(base + (keycode - KC_A));
- set_mods(temp_mod);
- }
- return false;
- case KC_0:
- if (shifted) { // skip shifted numbers, so that we can still use symbols etc.
- return true;
- }
- if (record->event.pressed) {
- register_unicode(zeroGlyph);
- }
- return false;
- case KC_1 ... KC_9:
- if (shifted) { // skip shifted numbers, so that we can still use symbols etc.
- return true;
- }
- if (record->event.pressed) {
- register_unicode(baseNumberOne + (keycode - KC_1));
- }
- return false;
- case KC_SPACE:
- if (record->event.pressed) {
- register_unicode(spaceGlyph); // em space
- }
- return false;
- }
- }
-
- return true;
-}
-
-bool process_gflock(uint16_t keycode, keyrecord_t *record) {
- if (!spi_gflock) {
- return true;
- }
-
- if (record->event.pressed) {
- register_code16(G(keycode));
- } else {
- unregister_code16(G(keycode));
- }
- return false;
-}
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- dprintf("key event: kc: %02X, col: %02u, row: %02u, pressed: %u mods: %08b "
-#if !defined(NO_ACTION_ONESHOT)
- "os: %08b "
-#endif
- "weak: %08b\n",
- keycode, record->event.key.col, record->event.key.row, record->event.pressed, bitrev(get_mods()),
-#if !defined(NO_ACTION_ONESHOT)
- bitrev(get_oneshot_mods()),
-#endif
- bitrev(get_weak_mods()));
-
- if (!rand_seeded) {
- srand(record->event.time % keycode);
- rand_seeded = true;
- }
-
- uint8_t mods = get_mods();
-#ifndef NO_ACTION_ONESHOT
- uint8_t osm = get_oneshot_mods();
-#else
- uint8_t osm = 0;
-#endif
-
- if (record->event.pressed) {
- switch (keycode) {
-#ifndef NO_DEBUG
- // Re-implement this here, but fix the persistence!
- case QK_DEBUG_TOGGLE:
- if (get_mods() & MOD_MASK_SHIFT) {
- debug_enable = 0;
- debug_keyboard = 0;
- debug_matrix = 0;
- } else if (!debug_enable) {
- debug_enable = 1;
-# if defined(SPI_DEBUG_SCAN_RATE)
- matrix_timer = 0;
- report_version();
-# endif
- } else if (!debug_keyboard) {
- debug_keyboard = 1;
- } else if (!debug_matrix) {
- debug_matrix = 1;
- } else {
- debug_enable = 0;
- debug_keyboard = 0;
- debug_matrix = 0;
- }
- uprintf("DEBUG: enable=%u, kb=%u, matrix=%u\n", debug_enable, debug_keyboard, debug_matrix);
- eeconfig_update_debug(debug_config.raw);
- return false;
-#endif
-
- // clang-format off
-
- case CH_SUSP: tap_code16(LGUI(LSFT(KC_L))); return true;
-
- // clang-format on
-
- case SPI_NORMAL ... SPI_MATH:
- spi_replace_mode = (spi_replace_mode == keycode) ? SPI_NORMAL : keycode;
- break;
-
- case SPI_GFLOCK:
- spi_gflock = !spi_gflock;
- break;
-
- case SPI_KP_00:
- tap_code(KC_KP_0);
-#if TAP_CODE_DELAY > 0
- wait_ms(TAP_CODE_DELAY);
-#endif
- register_code(KC_KP_0);
- return false;
-
- case KC_PSCR: {
- // It's kind of a hack, but we use unicode input mode
- // to determine what Print Screen key should do. The
- // idea here is to make it consistent across hosts.
- switch (get_unicode_input_mode()) {
- case UNICODE_MODE_MACOS:
- if ((mods | osm) & MOD_MASK_ALT) {
- // Window screenshot
- clear_mods();
-#ifndef NO_ACTION_ONESHOT
- clear_oneshot_mods();
-#endif
- tap_code16(LSFT(LGUI(KC_4)));
- wait_ms(100);
- tap_code(KC_SPC);
- set_mods(mods);
- return false;
- } else if ((mods | osm) & MOD_MASK_SHIFT) {
- // Partial screenshot
- tap_code16(LSFT(LGUI(KC_4)));
- return false;
- } else {
- // Full screenshot
- tap_code16(LSFT(LGUI(KC_3)));
- return false;
- }
- break;
-
- case UNICODE_MODE_WINDOWS:
- case UNICODE_MODE_WINCOMPOSE:
- if ((mods | osm) & MOD_MASK_ALT) {
- // Window screenshot
- // Alt+PrintScreen should work as is
- } else if ((mods | osm) & MOD_MASK_SHIFT) {
- // Partial screenshot
- tap_code16(LGUI(LSFT(KC_S)));
- return false;
- } else {
- // Full screenshot
- // PrintScreen should work as is
- }
- break;
-
- default:
- // Note: These are specific to ChromeOS
- if ((mods | osm) & MOD_MASK_ALT) {
- // Window screenshot
- tap_code16(LCTL(LALT(KC_F5)));
- return false;
- } else if ((mods | osm) & MOD_MASK_SHIFT) {
- // Partial screenshot
- tap_code16(LCTL(LSFT(KC_F5)));
- return false;
- } else {
- // Full screenshot
- // PrintScreen should work as is
- }
- break;
- }
- break;
- }
- }
- } else {
- switch (keycode) {
- case SPI_KP_00:
- unregister_code(KC_KP_0);
- return false;
- }
- }
-
- switch (keycode) {
- case KC_A ... KC_0:
- case KC_SPACE:
- switch (spi_replace_mode) {
- case SPI_WIDE:
- return process_record_glyph_replacement(keycode, record, 0xFF41, 0xFF21, 0xFF10, 0xFF11, 0x2003, NULL, mods, osm);
- case SPI_SCRIPT:
- return process_record_glyph_replacement(keycode, record, 0x1D4EA, 0x1D4D0, 0x1D7CE, 0x1D7CF, 0x2002, NULL, mods, osm);
- case SPI_BLOCKS:
- return process_record_glyph_replacement(keycode, record, 0x1F170, 0x1F170, '0', '1', 0x2002, NULL, mods, osm);
- case SPI_CIRCLE:
- return process_record_glyph_replacement(keycode, record, 0x1F150, 0x1F150, '0', '1', 0x2002, NULL, mods, osm);
- case SPI_SQUARE:
- return process_record_glyph_replacement(keycode, record, 0x1F130, 0x1F130, '0', '1', 0x2002, NULL, mods, osm);
- case SPI_PARENS:
- return process_record_glyph_replacement(keycode, record, 0x1F110, 0x1F110, '0', '1', 0x2002, NULL, mods, osm);
- case SPI_FRAKTR:
- return process_record_glyph_replacement(keycode, record, 0x1D586, 0x1D56C, '0', '1', 0x2002, NULL, mods, osm);
- case SPI_BOLD:
- return process_record_glyph_replacement(keycode, record, 0x1D41A, 0x1D400, '0', '1', 0x2002, NULL, mods, osm);
- case SPI_MATH:
- return process_record_glyph_replacement(keycode, record, 0x1D552, 0x1D538, '0', '1', 0x2002, &math_glyph_exceptions, mods, osm);
- }
- break;
-
- case KC_F1 ... KC_F12:
- return process_gflock(keycode, record);
-
-#ifdef SHIFT_BACKSPACE_DELETE
- case KC_BSPC: {
- static bool delkey_registered;
- if (record->event.pressed) {
- if ((mods | osm) & MOD_MASK_SHIFT) {
- del_mods(MOD_MASK_SHIFT);
-# ifndef NO_ACTION_ONESHOT
- clear_oneshot_mods();
-# endif
- register_code(KC_DEL);
- delkey_registered = true;
- set_mods(mods);
- return false;
- }
- } else { // on release of KC_BSPC
- // In case KC_DEL is still being sent even after the release of KC_BSPC
- if (delkey_registered) {
- unregister_code(KC_DEL);
- delkey_registered = false;
- return false;
- }
- }
- }
-#endif
- }
-
-#ifdef RGBLIGHT_ENABLE
- return process_record_user_rgb(keycode, record);
-#else
- return true;
-#endif
-}
-
-void post_process_record_user(uint16_t keycode, keyrecord_t *record) {
-#ifdef RGBLIGHT_ENABLE
- post_process_record_user_rgb(keycode, record);
-#endif
- return;
-}
-
-layer_state_t default_layer_state_set_user(layer_state_t state) {
-#ifdef RGBLIGHT_ENABLE
- return default_layer_state_set_user_rgb(state);
-#else
- return state;
-#endif
-}
-
-layer_state_t layer_state_set_user(layer_state_t state) {
-#ifdef RGBLIGHT_ENABLE
- return layer_state_set_user_rgb(state);
-#else
- return state;
-#endif
-}
-
-bool led_update_user(led_t led_state) {
-#ifdef RGBLIGHT_ENABLE
- return led_update_user_rgb(led_state);
-#else
- return true;
-#endif
-}
-
-#if defined(UNICODE_COMMON_ENABLE)
-void unicode_input_mode_set_user(uint8_t input_mode) {
-# ifdef RGBLIGHT_ENABLE
- unicode_input_mode_set_user_rgb(input_mode);
-# endif
-}
-#endif
diff --git a/users/spidey3/spidey3.h b/users/spidey3/spidey3.h
deleted file mode 100644
index 2b2cac0a20..0000000000
--- a/users/spidey3/spidey3.h
+++ /dev/null
@@ -1,81 +0,0 @@
-// Copyright 2022 Joshua Diamond josh@windowoffire.com (@spidey3)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#pragma once
-
-#include QMK_KEYBOARD_H
-
-#ifdef UNICODEMAP_ENABLE
-# include "spidey3_unicode.h"
-#endif
-
-enum userspace_layers {
- _BASE = 0,
- _NUMPAD,
- _FN,
- _GLYPH,
-};
-
-enum custom_keycodes {
- CH_SUSP = SAFE_RANGE, // Suspend
-
- SPI_NORMAL,
- SPI_WIDE,
- SPI_SCRIPT,
- SPI_BLOCKS,
- SPI_CIRCLE,
- SPI_SQUARE,
- SPI_PARENS,
- SPI_FRAKTR,
- SPI_BOLD,
- SPI_MATH,
- SPI_GFLOCK,
- SPI_KP_00,
- SPI_GLO,
-};
-
-#ifdef RGBLIGHT_ENABLE
-
-enum layer_base {
- LAYER_BASE_DEFAULT = _BASE,
- LAYER_BASE_REGULAR = _NUMPAD,
- LAYER_BASE_END = _FN + 1,
-};
-
-typedef enum layer_ack {
- ACK_NO = 0,
- ACK_YES,
- ACK_MEH,
- ACK_HUH,
-} layer_ack_t;
-
-# define RGB_LAYER_ACK_DURATION 500
-
-void matrix_init_user_rgb(void);
-void matrix_scan_user_rgb(void);
-void keyboard_post_init_user_rgb(void);
-bool process_record_user_rgb(uint16_t keycode, keyrecord_t *record);
-void post_process_record_user_rgb(uint16_t keycode, keyrecord_t *record);
-layer_state_t layer_state_set_user_rgb(layer_state_t state);
-layer_state_t default_layer_state_set_user_rgb(layer_state_t state);
-bool led_update_user_rgb(led_t led_state);
-void rgb_layer_ack(layer_ack_t n);
-void rgb_layer_ack_yn(bool yn);
-void clear_rgb_layers(void);
-void shutdown_user_rgb(void);
-
-# if defined(UNICODE_COMMON_ENABLE)
-void unicode_input_mode_set_user_rgb(uint8_t input_mode);
-# endif
-
-#endif
-
-#ifdef UNICODEMAP_ENABLE
-void eeconfig_init_user_unicode(void);
-#endif
-
-#ifdef SPI_DEBUG_SCAN_RATE
-# ifndef SPI_SCAN_RATE_INTERVAL
-# define SPI_SCAN_RATE_INTERVAL 10
-# endif
-#endif
diff --git a/users/spidey3/spidey3_unicode.c b/users/spidey3/spidey3_unicode.c
deleted file mode 100644
index 011eaeb3fa..0000000000
--- a/users/spidey3/spidey3_unicode.c
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2022 Joshua Diamond josh@windowoffire.com (@spidey3)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-
-#include "spidey3_unicode.h"
-
-const uint32_t unicode_map[] PROGMEM = {
- [BUL1] = 0x2022, // •
- [BUL2] = 0x25E6, // ◦
- [LARR] = 0x2190, // ←
- [RARR] = 0x2192, // →
- [ENDASH] = 0x2013, // –
- [EMDASH] = 0x2014, // —
- [SPIDER] = 0x1F577, // 🕷
- [SAD] = 0x2639, // ☹
- [MEH] = 0x1F611, // 😑
- [HAPPY] = 0x1F600, // 😀
- [ANGRY] = 0x1F620, // 😠
- [THUMBUP] = 0x1F44D, // 👍
- [THUMBDN] = 0x1F44E, // 👎
- [LOL] = 0x1F602, // 😂
- [SURPRISE] = 0x1F62E, // 😮
-};
-
-void eeconfig_init_user_unicode(void) {
- // Default to Linux style
- set_unicode_input_mode(UNICODE_MODE_LINUX);
-}
diff --git a/users/spidey3/spidey3_unicode.h b/users/spidey3/spidey3_unicode.h
deleted file mode 100644
index 4a3657fdfd..0000000000
--- a/users/spidey3/spidey3_unicode.h
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2022 Joshua Diamond josh@windowoffire.com (@spidey3)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#pragma once
-
-#include QMK_KEYBOARD_H
-
-#ifdef UNICODEMAP_ENABLE
-
-enum unicode_names {
- BUL1,
- BUL2,
- LARR,
- RARR,
- ENDASH,
- EMDASH,
- SPIDER,
- SAD,
- MEH,
- HAPPY,
- ANGRY,
- THUMBUP,
- THUMBDN,
- LOL,
- SURPRISE,
-};
-
-# define X_BUL (UP(BUL1, BUL2))
-# define X_DASH (UP(EMDASH, ENDASH))
-
-#endif
diff --git a/users/spotpuff/rules.mk b/users/spotpuff/rules.mk
deleted file mode 100644
index 7b4abdbc1b..0000000000
--- a/users/spotpuff/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
diff --git a/users/stanrc85/config.h b/users/stanrc85/config.h
deleted file mode 100644
index d9600b8b3c..0000000000
--- a/users/stanrc85/config.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#pragma once
-
-#define TAPPING_TERM 250
-#define RETRO_TAPPING
-#define FORCE_NKRO
-
-#ifdef RGBLIGHT_ENABLE
- #define RGBLIGHT_LAYERS
- #define RGBLIGHT_SLEEP
-#endif
-
-#ifdef KEYBOARD_sneakbox_aliceclone
- #define INDICATOR_PIN_0 D7
- #define INDICATOR_PIN_1 D6
- #define INDICATOR_PIN_2 D4
-#endif
-
-#if defined(KEYBOARD_mechlovin_adelais_standard_led_arm_rev4_stm32f303) || defined(KEYBOARD_mechlovin_adelais_standard_led_arm_rev4_apm32f103)
- #define INDICATOR_PIN_0 B2
- #define INDICATOR_PIN_1 C15
- #define INDICATOR_PIN_2 B9
-#endif
-
-#ifdef KEYBOARD_boardsource_the_mark
- #define RGB_MATRIX_KEYPRESSES
-#endif
-
-#ifdef KEYBOARD_jacky_studio_bear_65
- #define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
- #define ENABLE_RGB_MATRIX_MULTISPLASH
- #define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#endif
-
-#ifdef KEYBOARD_nasu
- #define INDICATOR_PIN_0 B1
- #define INDICATOR_PIN_1 B0
- #define INDICATOR_PIN_2 A7
-#endif
diff --git a/users/stanrc85/indicator_layers_sneakbox.c b/users/stanrc85/indicator_layers_sneakbox.c
deleted file mode 100644
index 8aa1a41e49..0000000000
--- a/users/stanrc85/indicator_layers_sneakbox.c
+++ /dev/null
@@ -1,28 +0,0 @@
- /* Copyright 2020 Stanrc85
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "stanrc85.h"
-
-layer_state_t layer_state_set_user(layer_state_t state) {
- writePin(INDICATOR_PIN_2, layer_state_cmp(state, _FN2_60) || layer_state_cmp(state, _DEFAULT));
- writePin(INDICATOR_PIN_1, layer_state_cmp(state, _FN1_60) || layer_state_cmp(state, _DEFAULT));
- return state;
-}
-
-bool led_update_user(led_t led_state) {
- writePin(INDICATOR_PIN_0, led_state.caps_lock);
- return false;
-} \ No newline at end of file
diff --git a/users/stanrc85/layer_rgb.c b/users/stanrc85/layer_rgb.c
deleted file mode 100644
index ad30c2ee65..0000000000
--- a/users/stanrc85/layer_rgb.c
+++ /dev/null
@@ -1,29 +0,0 @@
-#include "stanrc85.h"
-
-void matrix_init_user(void) {
- rgblight_setrgb(0xFF, 0x00, 0x00);
-};
-
-layer_state_t layer_state_set_user(layer_state_t state) {
- switch (get_highest_layer(state)) {
- case 0:
- rgblight_setrgb (0xFF, 0x00, 0x00);
- break;
- case 1:
- rgblight_setrgb (0x00, 0xFF, 0x00);
- break;
- case 2:
- rgblight_setrgb (0x00, 0x00, 0xFF);
- break;
- case 3:
- rgblight_setrgb (0xFF, 0xFF, 0xFF);
- break;
- case 4:
- rgblight_setrgb (0xFF, 0x00, 0xFF);
- break;
- default: // for any other layers, or the default layer
- rgblight_setrgb (0xFF, 0x00, 0x00);
- break;
- }
- return state;
-}
diff --git a/users/stanrc85/readme.md b/users/stanrc85/readme.md
deleted file mode 100644
index 8dff9c8e30..0000000000
--- a/users/stanrc85/readme.md
+++ /dev/null
@@ -1,57 +0,0 @@
-<!-- Copyright 2021 Stanrc85
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.-->
-
-# Stanrc85's Standard Layout
-
-Shared keymap between 60%, 65%, Alice layouts:
-- 1upkeyboards60HSE
-- Mark65
-- Sneakbox Alice
-
-## Keymap Notes
-- Layer 0 is default QWERTY layout with additional custom features:
- - SpaceFN to function layer 2 on `Space`
- - `CTRL` when held and `ESC` when tapped on `CAPS LOCK`
- - Tap Dance on `Fn1` for `CTRL+ALT+DEL` and `WIN+L`
- - Tap Dance on `ESC` for `ESC` and ` ` `
-
-![Base QWERTY Layer](https://imgur.com/gvCkVUW.png)
-
-- Layer 1 is default QWERTY with no custom features used mostly for gaming
- - Enabled by `Fn2+RCTL` from base layer
-
-![Default ANSI Layer](https://imgur.com/2SAel0K.png)
-
-- Layer 2 is Function layer:
- - F keys
- - Arrows
- - Volume and Media controls
- - AutoHotkey shortcuts based on [Speaker Control](https://github.com/stanrc85/Speaker-Control) script
- - AHK Mic is used to mute/unmute microphone
- - AHK Speaker switches audio output between headphones and speakers
-
-![Function Layer](https://imgur.com/FUjG0pL.png)
-
-- Layer 3 is RGB Underglow control and RESET
- - `Fn2+RCTL` used to toggle Default QWERTY layer on and off
- - `qmk compile` command on `Fn2+Enter`
- - `qmk flash` command on `Fn2+Shift+enter`
-
-![RGB and RESET Layer](https://imgur.com/UPdhR12.png)
-
-
-
-### Build
-To build the firmware file associated with this keymap, simply run `make your_keyboard:stanrc85-ansi` or `make your_keyboard:stanrc85-alice`.
diff --git a/users/stanrc85/rgb_layers.c b/users/stanrc85/rgb_layers.c
deleted file mode 100644
index 7138323f23..0000000000
--- a/users/stanrc85/rgb_layers.c
+++ /dev/null
@@ -1,36 +0,0 @@
- /* Copyright 2021 Stanrc85
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "stanrc85.h"
-
-layer_state_t layer_state_set_user(layer_state_t state) {
- switch (get_highest_layer(state)) {
- case _FN1_60:
- break;
- case _FN2_60:
- rgb_matrix_mode_noeeprom(RGB_MATRIX_RAINBOW_MOVING_CHEVRON);
- break;
- case _DEFAULT:
- rgb_matrix_mode_noeeprom(RGB_MATRIX_MULTISPLASH);
- break;
- case _QWERTY:
- rgb_matrix_mode_noeeprom(RGB_MATRIX_TYPING_HEATMAP);
- break;
- default: // for any other layers, or the default layer
- break;
- }
- return state;
-}
diff --git a/users/stanrc85/rgb_timeout.c b/users/stanrc85/rgb_timeout.c
deleted file mode 100644
index 4aa2427816..0000000000
--- a/users/stanrc85/rgb_timeout.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
-Copyright 2021 Stanrc85
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-#include "stanrc85.h"
-
-// Backlight timeout feature
-// Modified from https://www.reddit.com/r/MechanicalKeyboards/comments/ix65z0/looking_for_qmk_led_idle_timeout_info/g64yov7/
-#define BACKLIGHT_TIMEOUT 10 // in minutes
-static uint16_t idle_timer = 0;
-static uint8_t halfmin_counter = 0;
-static bool led_on = true;
-static bool rgb_on = true;
-static bool rgb_was_on = false;
-
-void matrix_scan_user(void) {
- // idle_timer needs to be set one time
- if (idle_timer == 0) idle_timer = timer_read();
- if ( (led_on && timer_elapsed(idle_timer) > 30000) || (rgb_on && timer_elapsed(idle_timer) > 30000)) {
- halfmin_counter++;
- idle_timer = timer_read();
- }
-
- if ( (led_on && halfmin_counter >= BACKLIGHT_TIMEOUT * 2) || (rgb_on && halfmin_counter >= BACKLIGHT_TIMEOUT * 2)) {
- if(rgblight_is_enabled()) {
- rgb_was_on = true;
- rgblight_disable_noeeprom();
- led_on = false;
- rgb_on = false;
- } else {
- rgb_was_on = false;
- }
- halfmin_counter = 0;
- }
-};
-
-bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
- if (record->event.pressed) {
- if (led_on == false || rgb_on == false ) {
- if (rgb_was_on) {
- rgblight_enable_noeeprom();
- led_on = true;
- rgb_on = true;
- }
- }
- idle_timer = timer_read();
- halfmin_counter = 0;
- }
- return true;
-}
diff --git a/users/stanrc85/rgblight_layers.c b/users/stanrc85/rgblight_layers.c
deleted file mode 100644
index 1fbd541498..0000000000
--- a/users/stanrc85/rgblight_layers.c
+++ /dev/null
@@ -1,30 +0,0 @@
-#include "stanrc85.h"
-
-static uint8_t middle = 0;
-static uint8_t bottom = 0;
-
-layer_state_t layer_state_set_user(layer_state_t state) {
- middle = bottom = 0;
- switch (get_highest_layer(state)) {
- case _FN1_60:
- middle = 1;
- break;
- case _FN2_60:
- bottom = 1;
- break;
- case _DEFAULT:
- middle = 1;
- bottom = 1;
- break;
- default: // for any other layers, or the default layer
- break;
- }
- return state;
-}
-
-bool led_update_user(led_t led_state) {
- writePin(INDICATOR_PIN_0, !led_state.caps_lock);
- writePin(INDICATOR_PIN_1, !middle);
- writePin(INDICATOR_PIN_2, !bottom);
- return false;
-} \ No newline at end of file
diff --git a/users/stanrc85/rgblight_layers_osa.c b/users/stanrc85/rgblight_layers_osa.c
deleted file mode 100644
index aff96c9699..0000000000
--- a/users/stanrc85/rgblight_layers_osa.c
+++ /dev/null
@@ -1,68 +0,0 @@
-#include "stanrc85.h"
-
-static uint8_t middle = 0;
-static uint8_t bottom = 0;
-
-const rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS(
- {2, 2, HSV_RED},
- {6, 2, HSV_RED}
-);
-
-const rgblight_segment_t PROGMEM my_layer1_layer[] = RGBLIGHT_LAYER_SEGMENTS(
- {2, 2, HSV_GREEN},
- {6, 2, HSV_GREEN}
-);
-
-const rgblight_segment_t PROGMEM my_layer2_layer[] = RGBLIGHT_LAYER_SEGMENTS(
- {2, 2, HSV_BLUE},
- {6, 2, HSV_BLUE}
-);
-
-const rgblight_segment_t PROGMEM my_layer3_layer[] = RGBLIGHT_LAYER_SEGMENTS(
- {2, 2, HSV_WHITE},
- {6, 2, HSV_WHITE}
-);
-
-// Now define the array of layers. Later layers take precedence
-const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
- my_capslock_layer,
- my_layer1_layer,
- my_layer2_layer,
- my_layer3_layer
-);
-
-void keyboard_post_init_user(void) {
- // Enable the LED layers
- rgblight_layers = my_rgb_layers;
-}
-
-layer_state_t layer_state_set_user(layer_state_t state) {
- // Both layers will light up if both kb layers are active
- rgblight_set_layer_state(1, layer_state_cmp(state, 1));
- rgblight_set_layer_state(2, layer_state_cmp(state, 2));
- rgblight_set_layer_state(3, layer_state_cmp(state, 3));
- middle = bottom = 0;
- switch (get_highest_layer(state)) {
- case _FN1_60:
- middle = 1;
- break;
- case _FN2_60:
- bottom = 1;
- break;
- case _DEFAULT:
- middle = 1;
- bottom = 1;
- break;
- default: // for any other layers, or the default layer
- break;
- }
- return state;
-}
-
-bool led_update_user(led_t led_state) {
- rgblight_set_layer_state(0, led_state.caps_lock);
- writePin(C7, led_state.caps_lock);
- writePin(C6, middle);
- writePin(B6, bottom);
- return false;
-}
diff --git a/users/stanrc85/rules.mk b/users/stanrc85/rules.mk
deleted file mode 100644
index 141b4581a4..0000000000
--- a/users/stanrc85/rules.mk
+++ /dev/null
@@ -1,55 +0,0 @@
-TAP_DANCE_ENABLE = yes
-EXTRAKEY_ENABLE = yes
-BACKLIGHT_ENABLE = no
-COMMAND_ENABLE = no
-MOUSEKEY_ENABLE = no
-AUDIO_ENABLE = no
-CONSOLE_ENABLE = no
-NKRO_ENABLE = yes
-LTO_ENABLE = yes
-VIA_ENABLE = yes
-
-SRC += stanrc85.c
-
-ifeq ($(strip $(KEYBOARD)), projectkb/alice/rev2)
- SRC += rgblight_layers.c
- SRC += startup_fanfare.c
- OPT_DEFS += -DHAS_INDICATORS
- VELOCIKEY_ENABLE=yes
-endif
-ifeq ($(strip $(KEYBOARD)), sneakbox/aliceclone)
- SRC += indicator_layers_sneakbox.c
- SRC += startup_fanfare.c
- OPT_DEFS += -DHAS_INDICATORS
- OPT_DEFS += -DHAS_ROTARY
-endif
-ifeq ($(strip $(KEYBOARD)), tkc/osav2)
- SRC += rgblight_layers_osa.c
- VELOCIKEY_ENABLE=yes
- SRC += rgb_timeout.c
-endif
-ifeq ($(strip $(KEYBOARD)), jacky_studio/bear_65)
- BACKLIGHT_ENABLE = yes
- RGB_MATRIX_ENABLE = yes
- RGBLIGHT_ENABLE = no
- SRC += rgb_layers.c
-endif
-ifeq ($(strip $(KEYBOARD)), mechlovin/adelais/rgb_led/rev2)
- SRC += rgb_layers.c
- SRC += rgb_timeout.c
-endif
-ifeq ($(strip $(KEYBOARD)), mechlovin/adelais/standard_led/arm/rev4/stm32f303)
- OPT_DEFS += -DHAS_INDICATORS
- SRC += rgb_timeout.c
- SRC += indicator_layers_sneakbox.c
-endif
-ifeq ($(strip $(KEYBOARD)), nasu)
- SRC += indicator_layers_sneakbox.c
- SRC += startup_fanfare.c
- OPT_DEFS += -DHAS_INDICATORS
-endif
-ifeq ($(strip $(KEYBOARD)), mechlovin/adelais/standard_led/arm/rev4/apm32f103)
- OPT_DEFS += -DHAS_INDICATORS
- SRC += rgb_timeout.c
- SRC += indicator_layers_sneakbox.c
-endif
diff --git a/users/stanrc85/stanrc85.c b/users/stanrc85/stanrc85.c
deleted file mode 100644
index 6dd5db0e33..0000000000
--- a/users/stanrc85/stanrc85.c
+++ /dev/null
@@ -1,133 +0,0 @@
-#include "stanrc85.h"
-
-static td_state_t td_state;
-
-__attribute__ ((weak))
-bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
- return true;
-}
-
-// 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
-}
-
-// handle the possible states for each tapdance keycode you define:
-void ctl_copy_finished (tap_dance_state_t *state, void *user_data) {
- td_state = cur_dance(state);
- switch (td_state) {
- case SINGLE_TAP:
- SEND_STRING(SS_LCTL("c"));
- break;
- case SINGLE_HOLD:
- register_mods(MOD_BIT(KC_RCTL));
- break;
- case DOUBLE_TAP:
- SEND_STRING(SS_LCTL("v"));
- }
-}
-
-void ctl_copy_reset (tap_dance_state_t *state, void *user_data) {
- switch (td_state) {
- case SINGLE_TAP:
- break;
- case SINGLE_HOLD:
- unregister_mods(MOD_BIT(KC_RCTL));
- break;
- case DOUBLE_TAP:
- break;
- }
-}
-
-#if defined(HAS_ROTARY)
- bool encoder_update_user(uint8_t index, bool clockwise) {
- if (index == 0) { /* First encoder */
- if (clockwise) {
- tap_code(KC_VOLD);
- } else {
- tap_code(KC_VOLU);
- }
- }
- return true;
- }
-#endif
-
-#if defined(HAS_INDICATORS)
- static uint8_t led_user = 0;
-#endif
-
-void lock_unlock (tap_dance_state_t *state, void *user_data) {
- td_state = cur_dance(state);
- switch (td_state) {
- case SINGLE_TAP: // Ctl + Alt + Del to unlock workstation
- tap_code16(KC_CAD);
- #if defined(HAS_INDICATORS)
- led_user = 0;
- #if defined(KEYBOARD_sneakbox_aliceclone) || defined(KEYBOARD_mechlovin_adelais_standard_led_arm_rev4_stm32f303)
- led_user = 1;
- #endif
- writePin(INDICATOR_PIN_0, !led_user);
- wait_ms(200);
- writePin(INDICATOR_PIN_1, !led_user);
- wait_ms(200);
- writePin(INDICATOR_PIN_2, !led_user);
- #endif
- break;
- case SINGLE_HOLD:
- break;
- case DOUBLE_TAP: //Lock workstation
- tap_code16(KC_LOCK);
- #if defined(HAS_INDICATORS)
- led_user = 1;
- #if defined(KEYBOARD_sneakbox_aliceclone) || defined(KEYBOARD_mechlovin_adelais_standard_led_arm_rev4_stm32f303)
- led_user = 0;
- #endif
- writePin(INDICATOR_PIN_2, !led_user);
- wait_ms(200);
- writePin(INDICATOR_PIN_1, !led_user);
- wait_ms(200);
- writePin(INDICATOR_PIN_0, !led_user);
- #endif
- break;
- }
-}
-
-tap_dance_action_t tap_dance_actions[] = {
- [TD_WIN] = ACTION_TAP_DANCE_FN(lock_unlock),
- [TD_ESC] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_GRV),
- [TD_RCTL] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ctl_copy_finished, ctl_copy_reset)
-};
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case KC_MAKE:
- if (!record->event.pressed) {
- uint8_t mods = get_mods();
- clear_mods();
- if (mods & MOD_MASK_SHIFT) {
- send_string_with_delay_P(PSTR("qmk flash -j 6 -kb " QMK_KEYBOARD " -km " QMK_KEYMAP "\n"), 10); //New way
- reset_keyboard();
- }
- else
- send_string_with_delay_P(PSTR("qmk compile -j 6 -kb " QMK_KEYBOARD " -km " QMK_KEYMAP "\n"), 10); //New way
- set_mods(mods);
- }
- break;
- case KC_RDP: //Opens Windows RDP
- if (!record->event.pressed) {
- register_code(KC_LGUI);
- tap_code(KC_R);
- unregister_code(KC_LGUI);
- wait_ms(200);
- send_string_with_delay_P(PSTR("mstsc"), 10);
- send_string_with_delay_P(PSTR(SS_TAP(X_ENTER)), 10);
- }
- break;
- }
- return process_record_keymap(keycode, record);
-}
diff --git a/users/stanrc85/stanrc85.h b/users/stanrc85/stanrc85.h
deleted file mode 100644
index a6550ca72c..0000000000
--- a/users/stanrc85/stanrc85.h
+++ /dev/null
@@ -1,55 +0,0 @@
-#pragma once
-
-#include "quantum.h"
-#include "version.h"
-
-enum my_layers {
- _NUMPAD = 0, //Macropad numpad
- _NAVKEY, //Macropad nav keys
- _MEDIA, //Macropad media controls
- _RGB, //Macropad RGB controls
- _FN1PAD, //Macropad reset and make commands
- _QWERTY = 0, //Qwerty with custom shortcuts and functions
- _DEFAULT, //Default ANSI for gaming, enable with FN2+RCtl
- _FN1_60, //Function keys, arrows, custom shortcuts, volume control
- _FN2_60 //RGB Underglow controls and RESET
-};
-
-//Aliases for longer keycodes
-#define KC_CAD LALT(LCTL(KC_DEL))
-#define KC_LOCK LGUI(KC_L)
-#define CA_QUOT LCA(KC_QUOT)
-#define CA_SCLN LCA(KC_SCLN)
-#define KC_CTLE LCTL_T(KC_ESC)
-#define LT_SPCF LT(_FN1_60, KC_SPC)
-#define LT_BPCF LT(_FN1_60, KC_BSPC)
-#define TD_TESC TD(TD_ESC)
-#define TD_TWIN TD(TD_WIN)
-#define TD_TCTL TD(TD_RCTL)
-#define CA_COPY LCTL(KC_C)
-#define CA_PSTE LCTL(KC_V)
-
-enum cust_keys {
- KC_MAKE = SAFE_RANGE,
- KC_RDP
-};
-
-enum tap_dance {
- TD_WIN,
- TD_ESC,
- TD_RCTL
-};
-
-// define a type containing as many tapdance states as you need
-typedef enum {
- SINGLE_TAP,
- SINGLE_HOLD,
- DOUBLE_TAP
-} td_state_t;
-
-// function to determine the current tapdance state
-int cur_dance (tap_dance_state_t *state);
-
-// `finished` and `reset` functions for each tapdance keycode
-void ctl_copy_finished (tap_dance_state_t *state, void *user_data);
-void ctl_copy_reset (tap_dance_state_t *state, void *user_data);
diff --git a/users/stanrc85/startup_fanfare.c b/users/stanrc85/startup_fanfare.c
deleted file mode 100644
index ae73261ae5..0000000000
--- a/users/stanrc85/startup_fanfare.c
+++ /dev/null
@@ -1,43 +0,0 @@
-#include "stanrc85.h"
-
-static uint8_t top = 0;
-static uint8_t middle = 0;
-static uint8_t bottom = 0;
-
-static bool is_enabled = true;
-static bool is_rgblight_startup = true;
-static uint16_t rgblight_startup_loop_timer;
-
-void matrix_scan_user(void) {
- // Boot up "fanfare"
- if (is_rgblight_startup && is_keyboard_master()) {
- if (timer_elapsed(rgblight_startup_loop_timer) > 10) {
- static uint8_t counter;
- counter++;
- if (counter == 1) {
- top = 1;
- writePin(INDICATOR_PIN_0, top);
- wait_ms(300);
- top = 0;
- writePin(INDICATOR_PIN_0, top);
- }
- if (counter == 2) {
- middle = 1;
- writePin(INDICATOR_PIN_1, middle);
- wait_ms(300);
- middle = 0;
- writePin(INDICATOR_PIN_1, middle);
- }
- if (counter == 3) {
- bottom = 1;
- writePin(INDICATOR_PIN_2, bottom);
- wait_ms(300);
- bottom = 0;
- writePin(INDICATOR_PIN_2, bottom);
- }
- if (counter == 4) {
- is_enabled = is_rgblight_startup = false;
- }
- }
- }
-}
diff --git a/users/talljoe/config.h b/users/talljoe/config.h
deleted file mode 100644
index 6cf0605be3..0000000000
--- a/users/talljoe/config.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/* Copyright 2020 Joseph Wasson
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#pragma once
-
-#define PERMISSIVE_HOLD
-
-#define RESET_LAYER 15
-
-#define COMBO_TERM 250
diff --git a/users/talljoe/macros.c b/users/talljoe/macros.c
deleted file mode 100644
index 1afc1ef7f6..0000000000
--- a/users/talljoe/macros.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Copyright 2020 Joseph Wasson
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#include "talljoe.h"
-
-extern keymap_config_t keymap_config;
-
-ostype_t get_os() {
- if(keymap_config.swap_lalt_lgui) {
- return MACOSX;
- }
-
- return WINDOWS;
-}
-
-#define IS_OSX() (get_os() == MACOSX)
-
-#define MOD_SEND(KEY) (IS_OSX() ? SEND_STRING(SS_LCMD(KEY)) : SEND_STRING(SS_LCTL(KEY)))
-
-void macro_copy(void) { MOD_SEND("c"); }
-void macro_paste(void) { MOD_SEND("v"); }
-void macro_lock(void) {
- if (IS_OSX()) {
- SEND_STRING(SS_LCTL(SS_LCMD("q")));
- } else {
- SEND_STRING(SS_LGUI("l"));
- }
-}
diff --git a/users/talljoe/macros.h b/users/talljoe/macros.h
deleted file mode 100644
index 832d4403fc..0000000000
--- a/users/talljoe/macros.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/* Copyright 2020 Joseph Wasson
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-typedef enum OSTYPE {
- WINDOWS,
- MACOSX,
- LINUX
-} ostype_t;
-
-ostype_t get_os(void);
-
-void macro_copy(void);
-void macro_paste(void);
-void macro_lock(void);
diff --git a/users/talljoe/readme.md b/users/talljoe/readme.md
deleted file mode 100644
index e70c5c6dc0..0000000000
--- a/users/talljoe/readme.md
+++ /dev/null
@@ -1,7 +0,0 @@
-Copyright 2018 Joe Wasson <info@talljoe.com> @talljoe
-
-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. \ No newline at end of file
diff --git a/users/talljoe/rules.mk b/users/talljoe/rules.mk
deleted file mode 100644
index 957ce2a71a..0000000000
--- a/users/talljoe/rules.mk
+++ /dev/null
@@ -1,18 +0,0 @@
-INTROSPECTION_KEYMAP_C = talljoe.c
-
-SRC += macros.c $(wildcard users/talljoe/tapdance/*.c)
-ifeq ($(strip $(VISUALIZER_ENABLE)), yes)
- SRC += visualizer.c
-endif
-
-ifeq ($(strip $(FLASH_BOOTLOADER)), yes)
- OPT_DEFS += -DFLASH_BOOTLOADER
-endif
-
-EXTRAFLAGS+=-flto
-
-TAP_DANCE_ENABLE=yes
-CONSOLE_ENABLE=no
-COMMAND_ENABLE=no
-DYNAMIC_KEYMAP_ENABLE=no
-BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
diff --git a/users/talljoe/talljoe.c b/users/talljoe/talljoe.c
deleted file mode 100644
index 61158be760..0000000000
--- a/users/talljoe/talljoe.c
+++ /dev/null
@@ -1,229 +0,0 @@
-/* Copyright 2020 Joseph Wasson
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#include QMK_KEYBOARD_H
-
-#include "talljoe.h"
-#ifdef ZEAL_RGB
-#include "../../../keyboards/wilba_tech/wt_rgb_backlight.h"
-#endif
-
-#ifdef VISUALIZER_ENABLE
-const char layer_names[32][16] = {
- [_BASE] = "QWERTY",
- [_WORKMAN] = "Workman",
- [_NORMAN] = "Norman",
- [_DVORAK] = "Dvorak",
- [_COLMAK] = "Colmak",
- [_MALTROFF] = "Maltroff",
- [_NORTRON] = "Nortron",
- [_GAME] = "Game",
- [_NAV] = "Navigation",
- [_NUM] = "Numpad",
- [_ADJUST] = "Adjust",
- [_RESET] = "Reset",
-};
-#endif
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_BASE] = TEMPLATE_TKL(
- US_LOCK, 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_PSCR, KC_SCRL, MO_ADJ ,
- US_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , US_BSLS, KC_INS , KC_HOME, KC_PGUP,
- US_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_BSPC, KC_DEL , KC_END , KC_PGDN,
- CTL_ESC, KC_A, KC_S, KC_D, KC_F, KC_G , KC_H, KC_J, KC_K, KC_L, US_SCLN, KC_QUOT, US_ENT ,
- SH_LBRC, KC_Z, KC_X, KC_C, KC_V, KC_B , KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SH_RBRC, KC_UP ,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC2, KC_SPC3, KC_SPC1, KC_RALT, KC_RGUI, KC_RCTL, KC_PTT , KC_LEFT, KC_DOWN, KC_RGHT),
- [_WORKMAN] = TEMPLATE(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, KC_Q , KC_D , KC_R , KC_W , KC_B , KC_J , KC_F , KC_U , KC_P , US_SCLN, _______, _______, _______,
- _______, 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, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_NORMAN] = TEMPLATE(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, KC_Q , KC_W , KC_D , KC_F , KC_K , KC_J , KC_U , KC_R , KC_L , US_SCLN, _______, _______, _______,
- _______, KC_A , KC_S , KC_E , KC_T , KC_G , KC_Y , KC_N , KC_I , KC_O , KC_H , _______, _______,
- _______, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_P , KC_M , KC_COMM, KC_DOT , KC_SLSH, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_DVORAK] = TEMPLATE(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, _______, _______,
- _______, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y , KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL , _______,
- _______, KC_A, KC_O, KC_E, KC_U, KC_I , KC_D, KC_H, KC_T, KC_N, KC_S, US_MINS, _______,
- _______, US_SCLN, KC_Q, KC_J, KC_K, KC_X , KC_B, KC_M, KC_W, KC_V, KC_Z, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_COLMAK] = TEMPLATE(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, KC_Q, KC_W, KC_F, KC_P, KC_G , KC_J, KC_L, KC_U, KC_Y, US_SCLN, _______, _______, _______,
- _______, 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, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
-#if (SPACE_COUNT > 1)
- // A tweaked version of the Maltron layout
- [_MALTROFF] = TEMPLATE(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, KC_Q, KC_P, KC_Y, KC_G, KC_B , KC_J, KC_M, KC_U, KC_K, KC_L, _______, _______, _______,
- _______, KC_A, KC_N, KC_I, KC_S, KC_F , KC_D, KC_T, KC_H, KC_O, KC_R , _______, _______,
- _______, KC_Z, KC_X, KC_C, KC_V, KC_SCLN, KC_BSPC, KC_W, KC_COMM, KC_DOT, KC_SLSH, _______, _______,
- _______, _______, _______, MLT_E , _______, _______, _______, _______, _______, _______),
- // It's Norman but like Maltron
- [_NORTRON] = TEMPLATE(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, KC_Q , KC_W , KC_D , KC_F , KC_K , KC_J , KC_U , KC_BSPC, KC_L , US_SCLN, _______, _______, _______,
- _______, KC_A , KC_S , KC_I , KC_T , KC_G , KC_Y , KC_N , KC_R , KC_O , KC_H , _______, _______,
- _______, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_P , KC_M , KC_COMM, KC_DOT , KC_SLSH, _______, _______,
- _______, _______, _______, MLT_E , US_ENT , _______, _______, _______, _______, _______),
-#endif
-#ifdef ENABLE_GAME_LAYER
- [_GAME] = TEMPLATE(
- KC_ESC , 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_BSLS, KC_GRV,
- 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_BSPC,
- MO_NAV , 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_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, MO_ADJ ,
- KC_LCTL, KC_PTT , KC_PGDN, KC_SPC , KC_SPC , KC_SPC , KC_RALT, KC_APP , KC_RCTL, KC_PTT ),
-#endif
- [_NAV] = TEMPLATE_NAV(
- KC_GRV , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , XXXXXXX, XXXXXXX,
- US_TAB , KC_EXLM, KC_AT , KC_HASH, KC_DLR , KC_PERC, KC_INS , KC_PGUP, KC_UP , KC_PGDN, KC_BTN1, KC_BTN3, KC_BTN2, KC_DEL ,
- CTL_ESC, KC_LCBR, KC_RCBR, KC_LPRN, KC_RPRN, KC_AMPR, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END , KC_BSPC, TG_ADJ ,
- KC_LSFT, KC_EQL, KC_PLUS, KC_MINS, KC_UNDS, KC_ASTR, KC_CALC, US_GRV , KC_WBAK, KC_WFWD, KC_WREF, KC_RSFT, KC_APP ,
- KC_LCTL, KC_LGUI, KC_LALT, NV_SPC2, NV_SPC3, NV_SPC1, KC_RALT, KC_RGUI, KC_RCTL, KC_PTT ),
- [_NUM] = TEMPLATE_NUM(
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- KC_GRV , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_VOLU, KC_CIRC, KC_7, KC_8, KC_9, KC_PMNS, XXXXXXX, XXXXXXX, KC_DEL ,
- CTL_ESC, KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_MUTE, KC_PENT, KC_4, KC_5, KC_6, KC_PPLS, KC_BSPC, KC_ENT ,
- KC_LSFT, KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_VOLD, KC_PIPE, KC_1, KC_2, KC_3, KC_PAST, KC_PSLS, TG_NUM ,
- KC_LCTL, KC_LGUI, KC_LALT, NM_SPC2, NM_SPC3, NM_SPC1, KC_PDOT, KC_PCMM, KC_RCTL, KC_PTT ),
- // Adjust layer is on the split-shift key; or NAV+Enter (for non-split keyboards)
- [_ADJUST] = TEMPLATE_ADJUST(
- MO_RST , FX(1) , FX(2) , FX(3) , FX(4) , FX(5) , FX(6) , FX(7) , FX(8) , FX(9) , FX(10) , BR_DEC , BR_INC , XXXXXXX, MO_RST ,
- MO_RST , H1_INC , S1_INC , H2_INC , S2_INC , EF_INC , RGB_HUI, RGB_SAI, RGB_MOD, RGB_M_P, DFAULTS, RGB_VAD, RGB_VAI, MO_RST ,
- XXXXXXX, H1_DEC , S1_DEC , H2_DEC , S2_DEC , EF_DEC , RGB_HUD, RGB_SAD, RGB_RMOD,RGB_M_K, RGB_M_B, RGB_M_G, TG_ADJ ,
- TG_NKRO, LY_QWER, LY_WORK, LY_CLMK, LY_DVRK, LY_NTRN, LY_NRMN, LY_MALT, XXXXXXX, XXXXXXX, KC_MAKE, KC_CAPS, XXXXXXX,
- MO_RST , AG_SWAP, AG_NORM, XXXXXXX, XXXXXXX, BL_TOGG, RGB_TOG, XXXXXXX, XXXXXXX, TG_GAME),
- // To Reset hit FN + ` + Esc
- [_RESET] = TEMPLATE_RESET,
-};
-
-__attribute__((weak))
-void matrix_scan_keymap(void) {
-}
-
-void matrix_scan_user(void) {
- matrix_scan_keymap();
-
- #ifdef KEYBOARD_gh60
- if (IS_LAYER_ON(_GAME)) {
- gh60_wasd_leds_on();
- } else {
- gh60_wasd_leds_off();
- }
- #endif
-}
-
-void matrix_init_user(void) {
- if (!eeconfig_is_enabled()) {
- eeconfig_init();
- }
-}
-
-layer_state_t default_layer_state_set_kb(layer_state_t state) {
- // persist changes to default layers
- eeconfig_update_default_layer(state);
- return state;
-}
-
-__attribute__ ((weak))
-bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
- return true;
-}
-
-#ifdef ZEAL_RGB
-extern backlight_config g_config;
-#endif
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-#ifdef ZEAL_RGB
- static uint8_t last_effect;
-#endif
-
-#ifdef RGBLIGHT_ENABLE
- static uint32_t savedRgbMode;
- static uint16_t savedHue;
- static uint8_t savedSat;
- static uint8_t savedVal;
-
- if (keycode == KC_ESC) {
- if (record->event.pressed) {
- savedRgbMode = rgblight_get_mode();
- savedHue = rgblight_get_hue();
- savedSat = rgblight_get_sat();
- savedVal = rgblight_get_val();
- rgblight_mode(1);
- rgblight_setrgb(255, 0, 0);
- } else {
- rgblight_mode(savedRgbMode);
- rgblight_sethsv(savedHue, savedSat, savedVal);
- }
- }
-#endif
-// If console is enabled, it will print the matrix position and status of each key pressed
-#ifdef CONSOLE_ENABLE
- xprintf("KL: row: %u, column: %u, pressed: %u\n", record->event.key.row, record->event.key.col, record->event.pressed);
-#endif //CONSOLE_ENABLE
-
- switch (keycode) {
- 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("make " QMK_KEYBOARD ":" QMK_KEYMAP);
-#ifndef FLASH_BOOTLOADER
- if ((temp_mod | temp_osm) & MOD_MASK_SHIFT)
-#endif
- {
- SEND_STRING(":flash");
- }
- if ((temp_mod | temp_osm) & MOD_MASK_CTRL) {
- SEND_STRING(" -j8 --output-sync");
- }
- tap_code(KC_ENT);
- set_mods(temp_mod);
- }
- return false;
- break;
-#ifdef ZEAL_RGB
- case BL_TOGG:
- if (record->event.pressed) {
- if (g_config.effect) {
- last_effect = g_config.effect;
- g_config.effect = 0;
- } else {
- g_config.effect = last_effect;
- }
- }
- return false;
- case EFFECT...EFFECT_END:
- if (record->event.pressed) {
- uint8_t effect = keycode - EFFECT;
- if(effect == g_config.effect)
- effect = 0; // Toggle effect on second press
- g_config.effect = effect;
- backlight_config_save();
- }
- return false;
-#endif
- }
- return process_record_keymap(keycode, record);
-}
diff --git a/users/talljoe/talljoe.h b/users/talljoe/talljoe.h
deleted file mode 100644
index 04d640b1ea..0000000000
--- a/users/talljoe/talljoe.h
+++ /dev/null
@@ -1,184 +0,0 @@
-/* Copyright 2020 Joseph Wasson
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-#include QMK_KEYBOARD_H
-#include "tapdance/tapdance.h"
-#include "macros.h"
-
-enum userspace_custom_keycodes {
- KC_MAKE = SAFE_RANGE, // can always be here
- DFAULTS,
- TOGGLE_BACKLIGHT,
- EFFECT,
- EFFECT_END = EFFECT + 20
-};
-
-#ifndef RESET_LAYER
-#define RESET_LAYER 15
-#endif
-
-enum layers {
- _BASE = 0,
- _WORKMAN,
- _NORMAN,
- _DVORAK,
- _COLMAK,
- _MALTROFF,
- _NORTRON,
- _GAME,
- _NAV,
- _NUM,
- _ADJUST,
- _RESET = RESET_LAYER,
-};
-
-#ifdef VISUALIZER_ENABLE
- extern const char layer_names[][16];
-#endif
-
-#define MO_NAV MO(_NAV)
-#define MO_ADJ TD(TD_FUNCTION)
-#define MO_RST MO(_RESET)
-#define TG_ADJ TG(_ADJUST)
-#define TG_NUM TG(_NUM)
-#ifdef ENABLE_GAME_LAYER
- #define TG_GAME TG(_GAME)
-#else
- #define TG_GAME KC_NO
-#endif
-#define LY_QWER DF(_BASE)
-#define LY_WORK DF(_WORKMAN)
-#define LY_NRMN DF(_NORMAN)
-#define LY_DVRK DF(_DVORAK)
-#define LY_CLMK DF(_COLMAK)
-#if SPACE_COUNT >= 2
- #define LY_MALT DF(_MALTROFF)
- #define LY_NTRN DF(_NORTRON)
-#else
- #define LY_MALT KC_NO
- #define LY_NTRN KC_NO
-#endif
-#define TG_NKRO MAGIC_TOGGLE_NKRO
-#define KC_PTT KC_F24
-#define MS_MID KC_MS_BTN3
-#define FX(x) (EFFECT + x)
-
-#define CTL_ESC CTL_T(KC_ESC)
-#define US_ENT RCTL_T(KC_ENT)
-#define US_MINS RCTL_T(KC_QUOT)
-#define US_BSLS LCA_T(KC_BSLS)
-#define US_SCLN TD(TD_SEMICOLON)
-#define US_GRV TD(TD_GRAVE)
-#define US_TAB C_S_T(KC_TAB)
-#define SH_LBRC LSFT_T(KC_LBRC)
-#define SH_RBRC RSFT_T(KC_RBRC)
-#define US_LOCK TD(TD_LOCK)
-
-#define MLT_E LT(_NUM, KC_E)
-
-#ifndef SWAP_HANDS_ENABLE
-#undef SH_T
-#define SH_T
-#endif
-
-#define KC_SPC1 LT(_NAV,KC_SPC)
-#define KC_SPC2 LT(_NUM,KC_ENT)
-#define KC_SPC3 SH_T(KC_BSPC)
-
-#define NV_SPC1 KC_SPC
-#define NV_SPC2 KC_ENT
-#define NV_SPC3 KC_SPC
-
-#define NM_SPC1 KC_0
-#define NM_SPC2 XXXXXXX
-#define NM_SPC3 KC_SPC
-
-#ifndef ZEAL_RGB
- #define BR_INC KC_NO
- #define BR_DEC KC_NO
- #define EF_INC KC_NO
- #define EF_DEC KC_NO
- #define ES_INC KC_NO
- #define ES_DEC KC_NO
- #define H1_INC KC_NO
- #define H1_DEC KC_NO
- #define S1_INC KC_NO
- #define S1_DEC KC_NO
- #define H2_INC KC_NO
- #define H2_DEC KC_NO
- #define S2_INC KC_NO
- #define S2_DEC KC_NO
- #define TL_LOWR KC_NO
- #define FN_MO2 KC_NO
-#endif
-
-#ifndef TEMPLATE
- #define _X_ KC_NO
- #define TEMPLATE( \
- KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, KJ6, \
- KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3, \
- KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB1, \
- KN2, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, KA5, \
- KA4, KP2, KC6, KX1, KK6, KX2, KC0, KM3, KD0, KA1 \
- ) TEMPLATE_TKL ( \
- KJ6, _X_, _X_, _X_, _X_, _X_, _X_, _X_, _X_, _X_, _X_, _X_, _X_, _X_, _X_, KA5, \
- KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, _X_, _X_, _X_, \
- KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3, _X_, _X_, _X_, \
- KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB1, \
- KN2, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, _X_, \
- KA4, KP2, KC6, KX1, KK6, KX2, KC0, KM3, KD0, KA1, _X_, _X_, _X_ \
- )
-#endif
-#ifndef TEMPLATE_TKL
- #define TEMPLATE_TKL( \
- KJ6, KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0, KC7, KC5, KA5, \
- KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, KL4, KO4, KQ4, \
- KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3, KK4, KO7, KQ7, \
- KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB1, \
- KN2, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, KO6, \
- KA4, KP2, KC6, KX1, KK6, KX2, KC0, KM3, KD0, KA1, KO0, KK0, KL0 \
- ) TEMPLATE( \
- KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, KJ6, \
- KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3, \
- KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB1, \
- KN2, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, KA5, \
- KA4, KP2, KC6, KX1, KK6, KX2, KC0, KM3, KD0, KA1 \
- )
-#endif
-
-#ifndef TEMPLATE_ALT
- #define TEMPLATE_ALT TEMPLATE
-#endif
-#ifndef TEMPLATE_NUM
- #define TEMPLATE_NUM TEMPLATE_ALT
-#endif
-#ifndef TEMPLATE_NAV
- #define TEMPLATE_NAV TEMPLATE_ALT
-#endif
-#ifndef TEMPLATE_ADJUST
- #define TEMPLATE_ADJUST TEMPLATE_ALT
-#endif
-
-#ifndef TEMPLATE_RESET
- #define TEMPLATE_RESET TEMPLATE_ALT( \
- QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, \
- QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, \
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
- QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX)
-#endif
diff --git a/users/talljoe/tapdance/actions/td.function.c b/users/talljoe/tapdance/actions/td.function.c
deleted file mode 100644
index 577f2be3d4..0000000000
--- a/users/talljoe/tapdance/actions/td.function.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Copyright 2020 Joseph Wasson
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-static struct {
- int state;
-} function_state = {0};
-
-// Send semi-colon + enter on two taps
-void tap_dance_function_finished(tap_dance_state_t *state, void *user_data) {
- function_state.state = hold_cur_dance(state);
- switch (function_state.state) {
- case SINGLE_HOLD: layer_on(_ADJUST); break;
- }
-}
-
-void tap_dance_function_reset(tap_dance_state_t *state, void *user_data) {
- switch (function_state.state) {
- case SPECIAL: reset_keyboard(); break;
- case SINGLE_HOLD: layer_off(_ADJUST); break;
- }
- function_state.state = 0;
-}
diff --git a/users/talljoe/tapdance/actions/td.grave.c b/users/talljoe/tapdance/actions/td.grave.c
deleted file mode 100644
index f58f00f8c0..0000000000
--- a/users/talljoe/tapdance/actions/td.grave.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Copyright 2020 Joseph Wasson
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-// Send `. ~. ```
-void tap_dance_grave_finished(tap_dance_state_t *state, void *user_data) {
- switch(state->count) {
- case 1:
- SEND_STRING("`");
- break;
- case 2:
- SEND_STRING("~");
- break;
- }
-}
-
-void tap_dance_grave_each(tap_dance_state_t *state, void *user_data) {
- if(state->count == 3) {
- SEND_STRING("```");
- } else if (state->count > 3) {
- SEND_STRING("`");
- }
-}
-
diff --git a/users/talljoe/tapdance/actions/td.lock.c b/users/talljoe/tapdance/actions/td.lock.c
deleted file mode 100644
index bdca0bb11b..0000000000
--- a/users/talljoe/tapdance/actions/td.lock.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Copyright 2020 Joseph Wasson
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-static struct {
- int state;
-} lock_state = {0};
-
-// Send semi-colon + enter on two taps
-void tap_dance_lock_finished(tap_dance_state_t *state, void *user_data) {
- lock_state.state = cur_dance(state);
- switch (lock_state.state) {
- case SINGLE_TAP: register_code(KC_ESC); break;
- case SINGLE_HOLD: macro_lock(); break;
- }
-}
-
-void tap_dance_lock_reset(tap_dance_state_t *state, void *user_data) {
- switch (lock_state.state) {
- case SINGLE_TAP: unregister_code(KC_ESC); break;
- }
- lock_state.state = 0;
-}
diff --git a/users/talljoe/tapdance/actions/td.semicolon.c b/users/talljoe/tapdance/actions/td.semicolon.c
deleted file mode 100644
index c2fc500c48..0000000000
--- a/users/talljoe/tapdance/actions/td.semicolon.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/* Copyright 2020 Joseph Wasson
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-static struct {
- int semicolon;
- bool mods;
-} tap_state = {0};
-
-void tap_dance_semicolon_each(tap_dance_state_t *state, void *user_data) {
- tap_state.mods |= get_mods();
-}
-
-// Send semi-colon + enter on two taps
-void tap_dance_semicolon_finished(tap_dance_state_t *state, void *user_data) {
- tap_state.semicolon = hold_cur_dance(state);
- switch (tap_state.semicolon) {
- case SINGLE_TAP: case DOUBLE_HOLD: register_code(KC_SCLN); break;
- case SINGLE_HOLD: layer_on(_NUM); break;
- }
-}
-
-void tap_dance_semicolon_reset(tap_dance_state_t *state, void *user_data) {
- switch (tap_state.semicolon) {
- case SINGLE_TAP: case DOUBLE_HOLD: unregister_code(KC_SCLN); break;
- case DOUBLE_TAP: {
- if (tap_state.mods) {
- SEND_STRING(";;"); // send normal when mods are pressed
- }
- else {
- SEND_STRING(";\n");
- }
- break;
- }
- case TRIPLE_TAP: {
- SEND_STRING(";\n\n");
- }
- case SPECIAL: layer_invert(_NUM); break;
- case SINGLE_HOLD: layer_off(_NUM); break;
- }
- tap_state.semicolon = 0;
-}
diff --git a/users/talljoe/tapdance/tapdance.h b/users/talljoe/tapdance/tapdance.h
deleted file mode 100644
index 532e978ca8..0000000000
--- a/users/talljoe/tapdance/tapdance.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Copyright 2020 Joseph Wasson
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "quantum.h"
-#include "td_setup.h"
-
-enum tap_dancers {
- TD_SEMICOLON,
- TD_GRAVE,
- TD_LOCK,
- TD_FUNCTION,
-};
-
diff --git a/users/talljoe/tapdance/tapdance_actions.c b/users/talljoe/tapdance/tapdance_actions.c
deleted file mode 100644
index b574586171..0000000000
--- a/users/talljoe/tapdance/tapdance_actions.c
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Copyright 2020 Joseph Wasson
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "../talljoe.h"
-#include "actions/td.grave.c"
-#include "actions/td.lock.c"
-#include "actions/td.semicolon.c"
-#include "actions/td.function.c"
-
-tap_dance_action_t tap_dance_actions[] = {
- [TD_SEMICOLON] = ACTION_TAP_DANCE_FN_ADVANCED(tap_dance_semicolon_each, tap_dance_semicolon_finished, tap_dance_semicolon_reset),
- [TD_LOCK] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, tap_dance_lock_finished, tap_dance_lock_reset),
- [TD_GRAVE] = ACTION_TAP_DANCE_FN_ADVANCED(tap_dance_grave_each, tap_dance_grave_finished, NULL),
- [TD_FUNCTION] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, tap_dance_function_finished, tap_dance_function_reset),
-};
diff --git a/users/talljoe/tapdance/td_setup.c b/users/talljoe/tapdance/td_setup.c
deleted file mode 100644
index 0742763266..0000000000
--- a/users/talljoe/tapdance/td_setup.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/* Copyright 2020 Joseph Wasson
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "tapdance.h"
-
-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 SINGLE_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 SPECIAL;
-}
-
-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 SPECIAL;
-}
diff --git a/users/talljoe/tapdance/td_setup.h b/users/talljoe/tapdance/td_setup.h
deleted file mode 100644
index e9685c83b2..0000000000
--- a/users/talljoe/tapdance/td_setup.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/* Copyright 2020 Joseph Wasson
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-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,
- SPECIAL = 8
-};
-
-int cur_dance (tap_dance_state_t *state);
-int hold_cur_dance (tap_dance_state_t *state);
diff --git a/users/toinux/keymap_qwerty_fr.h b/users/toinux/keymap_qwerty_fr.h
deleted file mode 100644
index 3c0195c7f0..0000000000
--- a/users/toinux/keymap_qwerty_fr.h
+++ /dev/null
@@ -1,153 +0,0 @@
-/* Copyright 2022
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-#include "keycodes.h"
-
-// clang-format off
-
-// keymap adapted for https://qwerty-fr.org/
-
-/* AltGr symbols (* symbol = dead key)
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
- * │* `│ ¹ │ ² │ ê │ € │* ¯│* ^│ û │ î │ ô │ ø │ – │ ≠ │ │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
- * │ │ â │ é │ è │ ® │ þ │* ̑ │ ù │ î │ ò │ œ │ « │ » │ │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
- * │ │ à │ æ │ ë │ │* Ω│ ÿ │ ü │ ï │ ö │ ´ │ ̀ │ │ │
- * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
- * │ │ ≤ │ ä │ × │ ç │ │ ß │ ñ │* ∫│* ¸│ · │ ’ │ │
- * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
- * │ │ │ │ non-breaking space │ │ │ │ │
- * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
- */
-// Row 1
-#define QF_DGRV RALT(KC_GRV) // ` (dead)
-#define QF_SUP1 RALT(KC_1) // ¹
-#define QF_SUP2 RALT(KC_2) // ²
-#define QF_ECIR RALT(KC_3) // ê
-#define QF_EURO RALT(KC_4) // €
-#define QF_MACR RALT(KC_5) // ¯ (dead)
-#define QF_DCIR RALT(KC_6) // ^ (dead)
-#define QF_UCIR RALT(KC_7) // û
-#define QF_ICIR RALT(KC_8) // î
-#define QF_OCIR RALT(KC_9) // ô
-#define QF_OSTR RALT(KC_0) // ø
-#define QF_DASH RALT(KC_MINUS) // –
-#define QF_NEQL RALT(KC_EQUAL) // ≠
-// Row 2
-#define QF_ACIR RALT(KC_Q) // â
-#define QF_EACU RALT(KC_W) // é
-#define QF_EGRV RALT(KC_E) // è
-#define QF_REGD RALT(KC_R) // ®
-#define QF_THRN RALT(KC_T) // þ
-#define QF_RBRV RALT(KC_Y) // ̑ (dead)
-#define QF_UGRV RALT(KC_U) // ù
-#define QF_IGRV RALT(KC_I) // ì
-#define QF_OGRV RALT(KC_O) // ò
-#define QF_OE RALT(KC_P) // œ
-#define QF_LDAQ RALT(KC_LBRC) // «
-#define QF_RDAQ RALT(KC_RBRC) // »
-// Row 3
-#define QF_AGRV RALT(KC_A) // à
-#define QF_AE RALT(KC_S) // æ
-#define QF_EDIA RALT(KC_D) // ë
-#define QF_GR RALT(KC_G) // Greek (dead)
-#define QF_YDIA RALT(KC_H) // ÿ
-#define QF_UDIA RALT(KC_J) // ü
-#define QF_IDIA RALT(KC_K) // ï
-#define QF_ODIA RALT(KC_L) // ö
-#define QF_ACUT RALT(KC_SCLN) // ´ (dead)
-#define QF_AGR RALT(KC_QUOT) // ̀ (dead)
-// Row 4
-#define QF_LTEQ RALT(KC_NUBS) // ≤
-#define QF_ADIA RALT(KC_Z) // ä
-#define QF_MUL RALT(KC_X) // ×
-#define QF_CCED RALT(KC_C) // ç
-#define QF_SS RALT(KC_B) // ß
-#define QF_NTIL RALT(KC_N) // ñ
-#define QF_MATH RALT(KC_M) // Math (dead)
-#define QF_CEDL RALT(KC_COMM) // ¸ (dead)
-#define QF_MED RALT(KC_DOT) // ·
-#define QF_APO RALT(KC_SLSH) // ’
-// Row 5
-#define QF_NBSP RALT(KC_SPC) //   (non-breaking space)
-
-
-/* Shift+AltGr symbols
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
- * │* ~│ ¡ │* ˝│ Ê │* ¤│* ˙│* ˇ│ Û │ Î │ Ô │ Ø │ — │ ≈ │ │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
- * │ │  │ É │ È │ © │ Þ │* ˘│ Ù │ Ì │ Ò │ Œ │ “ │ ” │ │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
- * │ │ À │ Æ │ Ë │ │ │ Ÿ │ Ü │ Ï │ Ö │* °│* ¨│ „ │ │
- * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
- * │ │ ≥ │ Ä │ ÷ │ Ç │ │ ẞ │ Ñ │ │ ˛ │ … │ ¿ │ │
- * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
- * │ │ │ │ narrow non-breaking spc│ │ │ │ │
- * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
- */
-// Row 1
-#define QF_DTIL S(RALT(KC_GRV)) // ~ (dead)
-#define QF_IEXL S(RALT(KC_1)) // ¡
-#define QF_DACU S(RALT(KC_2)) // ˝ (dead)
-#define QF_ECIU S(RALT(KC_3)) // Ê
-#define QF_CURR S(RALT(KC_4)) // ¤ (dead)
-#define QF_NTON S(RALT(KC_5)) // ˙ (dead)
-#define QF_CARN S(RALT(KC_6)) // ˇ (dead)
-#define QF_UCIU S(RALT(KC_7)) // Û
-#define QF_ICIU S(RALT(KC_8)) // Î
-#define QF_OCIO S(RALT(KC_9)) // Ô
-#define QF_UOST S(RALT(KC_0)) // Ø
-#define QF_NDSH S(RALT(KC_MINUS)) // —
-#define QF_APPR S(RALT(KC_EQUAL)) // ≈
-// Row 2
-#define QF_ACIU S(RALT(KC_Q)) // Â
-#define QF_ECUU S(RALT(KC_W)) // É
-#define QF_EGRU S(RALT(KC_E)) // È
-#define QF_COPY S(RALT(KC_R)) // ©
-#define QF_UTRN S(RALT(KC_T)) // Þ
-#define QF_BRV S(RALT(KC_Y)) // ˘ (dead)
-#define QF_UGRU S(RALT(KC_U)) // Ù
-#define QF_IGRU S(RALT(KC_I)) // Ì
-#define QF_OGRU S(RALT(KC_O)) // Ò
-#define QF_OEU S(RALT(KC_P)) // Œ
-#define QF_LDQU S(RALT(KC_LBRC)) // “
-#define QF_RDQU S(RALT(KC_RBRC)) // ”
-// Row 3
-#define QF_AGRU S(RALT(KC_A)) // À
-#define QF_AEU S(RALT(KC_S)) // Æ
-#define QF_EDIU S(RALT(KC_D)) // Ë
-#define QF_YDIU S(RALT(KC_H)) // Ÿ
-#define QF_UDIU S(RALT(KC_J)) // Ü
-#define QF_IDIU S(RALT(KC_K)) // Ï
-#define QF_ODIU S(RALT(KC_L)) // Ö
-#define QF_DEG S(RALT(KC_SCLN)) // ° (dead)
-#define QF_DIAE S(RALT(KC_QUOT)) // ¨ (dead)
-#define QF_DLQM S(RALT(KC_BSLS)) // „
-// Row 4
-#define QF_GTEQ S(RALT(KC_NUBS)) // ≥
-#define QF_ADIU S(RALT(KC_Z)) // Ä
-#define QF_DIV S(RALT(KC_X)) // ÷
-#define QF_CCDU S(RALT(KC_C)) // Ç
-#define QF_USS S(RALT(KC_B)) // ẞ
-#define QF_NTIU S(RALT(KC_N)) // Ñ
-#define QF_OGON S(RALT(KC_COMM)) // ˛ (dead)
-#define QF_SUSP S(RALT(KC_DOT)) // …
-#define QF_IQUE S(RALT(KC_SLSH)) // ¿
-// Row 5
-#define QF_NNBS RALT(KC_SPC) // (narrow non-breaking space)
diff --git a/users/tominabox1/.gitignore b/users/tominabox1/.gitignore
deleted file mode 100644
index 62a8666982..0000000000
--- a/users/tominabox1/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-*.bmp
-*.py
diff --git a/users/tominabox1/config.h b/users/tominabox1/config.h
deleted file mode 100644
index 7d338005f1..0000000000
--- a/users/tominabox1/config.h
+++ /dev/null
@@ -1,87 +0,0 @@
-#pragma once
-
-// Tapping term settings
-#define TAPPING_TERM_PER_KEY
-#define TAP_HOLD_CAPS_DELAY 350
-
-// OLED settings
-#define OLED_FONT_H "users/tominabox1/doug.c"
-#define OLED_DISABLE_TIMEOUT
-
-#define DEBOUNCE 5
-
-// Setup RGB settings for the Dimple.
-#ifdef KEYBOARD_lazydesigners_dimple
- #ifdef RGBLIGHT_ENABLE
- #undef RGBLED_NUM
- #define RGBLED_NUM 50
-#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 RGBLIGHT_SLEEP
- #endif // RGBLIGHT_ENABLE
-
- #ifdef RGB_MATRIX_ENABLE
- #undef RGBLED_NUM
- #define RGBLED_NUM 50
- #define RGB_MATRIX_LED_COUNT RGBLED_NUM
- #endif // RGBL_MATRIX_ENABLE
-#endif // KEYBOARD_lazydesigners_dimple
-
-// RGB_Matrix settings
-#ifdef RGB_MATRIX_ENABLE
- #define RGB_MATRIX_KEYPRESSES // reacts to keypresses
- #define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
- #define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
- #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash.
- #define RGB_MATRIX_HUE_STEP 8
- #define RGB_MATRIX_SAT_STEP 8
- #define RGB_MATRIX_VAL_STEP 8
- #define RGB_MATRIX_SPD_STEP 10
- #define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT
- /* Disable the animations you don't want/need. You will need to disable a good number of these
- because they take up a lot of space. Disable until you can successfully compile your firmware. */
-// #undef ENABLE_RGB_MATRIX_ALPHAS_MODS
-// #undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# undef ENABLE_RGB_MATRIX_BREATHING
-// #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
-// #undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# 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_JELLYBEN_RAINDROPS
-// # undef 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_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
-
-// Hex size reduction options
-#ifndef NO_DEBUG
- #define NO_DEBUG
-#endif // !NO_DEBUG
-#if !defined(NO_PRINT) && !defined(CONSOLE_ENABLE)
- #define NO_PRINT
-#endif // !NO_PRINT
-#define NO_ACTION_ONESHOT
diff --git a/users/tominabox1/dimple_rgb.c b/users/tominabox1/dimple_rgb.c
deleted file mode 100644
index 8d80d45b95..0000000000
--- a/users/tominabox1/dimple_rgb.c
+++ /dev/null
@@ -1,433 +0,0 @@
-#include "dz60rgb.h"
-#include "config.h"
-#if defined (dzrgb60_iso)
-const is31fl3733_led_t g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = {
- {0, K_14, J_14, L_14},
- {0, K_13, J_13, L_13},
- {0, K_12, J_12, L_12},
- {0, K_11, J_11, L_11},
- {0, K_10, J_10, L_10},
- {0, K_9, J_9, L_9},
- {0, K_8, J_8, L_8},
- {0, K_7, J_7, L_7},
- {0, K_6, J_6, L_6},
- {0, K_5, J_5, L_5},
- {0, K_4, J_4, L_4},
- {0, K_3, J_3, L_3},
- {0, K_2, J_2, L_2},
- {0, K_1, J_1, L_1},
- {0, H_15, G_15, I_15},
- {0, H_13, G_13, I_13},
- {0, H_12, G_12, I_12},
- {0, H_11, G_11, I_11},
- {0, H_10, G_10, I_10},
- {0, H_9, G_9, I_9},
- {0, H_8, G_8, I_8},
- {0, H_7, G_7, I_7},
- {0, H_6, G_6, I_6},
- {0, H_5, G_5, I_5},
- {0, H_4, G_4, I_4},
- {0, H_3, G_3, I_3},
- {0, H_2, G_2, I_2},
- {0, H_1, G_1, I_1},
- {0, B_14, A_14, C_14},
- {0, E_12, D_12, F_12},
- {0, E_11, D_11, F_11},
- {0, E_10, D_10, F_10},
- {0, E_9, D_9, F_9},
- {0, E_8, D_8, F_8},
- {0, E_7, D_7, F_7},
- {0, E_6, D_6, F_6},
- {0, E_5, D_5, F_5},
- {0, E_4, D_4, F_4},
- {0, E_3, D_3, F_3},
- {0, E_2, D_2, F_2},
- {0, E_1, D_1, F_1},
- {0, B_13, A_13, C_13},
- {0, B_11, A_11, C_11},
- {0, B_10, A_10, C_10},
- {0, B_9, A_9, C_9},
- {0, B_8, A_8, C_8},
- {0, B_7, A_7, C_7},
- {0, B_6, A_6, C_6},
- {0, B_5, A_5, C_5},
- {0, B_4, A_4, C_4},
- {0, B_3, A_3, C_3},
- {0, B_2, A_2, C_2},
- {0, B_1, A_1, C_1},
- {0, B_15, A_15, C_15},
- {0, E_13, D_13, F_13},
- {0, B_12, A_12, C_12},
- {0, E_15, D_15, F_15},
- {0, B_16, A_16, C_16},
- {0, E_16, D_16, F_16},
- {0, H_16, G_16, I_16},
- {0, K_16, J_16, L_16},
-};
-
-led_config_t g_led_config = { {
- { 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 },
- { 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 28 },
- { 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, NO_LED, 14 },
- { 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, NO_LED, NO_LED },
- { 60, 59, 58, NO_LED, NO_LED, 57, NO_LED, NO_LED, NO_LED, 56, 55, 54, NO_LED, 53 }
-}, {
- { 216, 0 }, { 192, 0 }, { 176, 0 }, { 160, 0 }, { 144, 0 }, { 128, 0 }, { 112, 0 }, { 96, 0 }, { 80, 0 }, { 64, 0 }, { 48, 0 }, { 32, 0 }, { 16, 0 }, { 0, 0 },
- { 220, 24 }, { 200, 16 }, { 184, 16 }, { 168, 16 }, { 152, 16 }, { 136, 16 }, { 120, 16 }, { 104, 16 }, { 88, 16 }, { 72, 16 }, { 56, 16 }, { 40, 16 }, { 24, 16 }, { 4, 16 },
- { 204, 32 }, { 188, 32 }, { 172, 32 }, { 156, 32 }, { 140, 32 }, { 124, 32 }, { 108, 32 }, { 92, 32 }, { 76, 32 }, { 60, 32 }, { 44, 32 }, { 28, 32 }, { 6, 32 }, { 210, 48 },
- { 180, 48 }, { 164, 48 }, { 148, 48 }, { 132, 48 }, { 116, 48 }, { 100, 48 }, { 84, 48 }, { 68, 48 }, { 52, 48 }, { 20, 48 }, { 10, 48 }, { 222, 64 }, { 202, 64 }, { 182, 64 },
- { 162, 64 }, { 102, 64 }, { 42, 64 }, { 22, 64 }, { 2, 64 }
-}, {
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
- 1, 4, 1, 1, 1
-} };
-
-#elif defined (dzrgb60_hhkb)
-const is31fl3733_led_t g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = {
- {0, H_15, G_15, I_15},
- {0, K_14, J_14, L_14},
- {0, K_13, J_13, L_13},
- {0, K_12, J_12, L_12},
- {0, K_11, J_11, L_11},
- {0, K_10, J_10, L_10},
- {0, K_9, J_9, L_9},
- {0, K_8, J_8, L_8},
- {0, K_7, J_7, L_7},
- {0, K_6, J_6, L_6},
- {0, K_5, J_5, L_5},
- {0, K_4, J_4, L_4},
- {0, K_3, J_3, L_3},
- {0, K_2, J_2, L_2},
- {0, K_1, J_1, L_1},
- {0, H_14, G_14, I_14},
- {0, H_13, G_13, I_13},
- {0, H_12, G_12, I_12},
- {0, H_11, G_11, I_11},
- {0, H_10, G_10, I_10},
- {0, H_9, G_9, I_9},
- {0, H_8, G_8, I_8},
- {0, H_7, G_7, I_7},
- {0, H_6, G_6, I_6},
- {0, H_5, G_5, I_5},
- {0, H_4, G_4, I_4},
- {0, H_3, G_3, I_3},
- {0, H_2, G_2, I_2},
- {0, H_1, G_1, I_1},
- {0, E_14, D_14, F_14},
- {0, E_12, D_12, F_12},
- {0, E_11, D_11, F_11},
- {0, E_10, D_10, F_10},
- {0, E_9, D_9, F_9},
- {0, E_8, D_8, F_8},
- {0, E_7, D_7, F_7},
- {0, E_6, D_6, F_6},
- {0, E_5, D_5, F_5},
- {0, E_4, D_4, F_4},
- {0, E_3, D_3, F_3},
- {0, E_2, D_2, F_2},
- {0, E_1, D_1, F_1},
- {0, B_14, A_14, C_14},
- {0, B_13, A_13, C_13},
- {0, B_11, A_11, C_11},
- {0, B_10, A_10, C_10},
- {0, B_9, A_9, C_9},
- {0, B_8, A_8, C_8},
- {0, B_7, A_7, C_7},
- {0, B_6, A_6, C_6},
- {0, B_5, A_5, C_5},
- {0, B_4, A_4, C_4},
- {0, B_3, A_3, C_3},
- {0, B_2, A_2, C_2},
- {0, B_1, A_1, C_1},
- {0, B_15, A_15, C_15},
- {0, E_13, D_13, F_13},
- {0, B_12, A_12, C_12},
- {0, B_16, A_16, C_16},
- {0, E_16, D_16, F_16},
- {0, H_16, G_16, I_16},
- {0, K_16, J_16, L_16},
-};
-
-led_config_t g_led_config = { {
- { 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 },
- { 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15 },
- { 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 0, 29 },
- { 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, NO_LED, 42 },
- { 61, 60, 59, NO_LED, NO_LED, 58, NO_LED, NO_LED, NO_LED, NO_LED, 57, 56, NO_LED, 55 }
-}, {
- { 224, 0 }, { 208, 0 }, { 192, 0 }, { 176, 0 }, { 160, 0 }, { 144, 0 }, { 128, 0 }, { 112, 0 }, { 96, 0 }, { 80, 0 }, { 64, 0 }, { 48, 0 }, { 32, 0 }, { 16, 0 },
- { 0, 0 }, { 220, 16 }, { 200, 16 }, { 184, 16 }, { 168, 16 }, { 152, 16 }, { 136, 16 }, { 120, 16 }, { 104, 16 }, { 88, 16 }, { 72, 16 }, { 56, 16 }, { 40, 16 }, { 24, 16 },
- { 4, 16 }, { 204, 32 }, { 188, 32 }, { 172, 32 }, { 156, 32 }, { 140, 32 }, { 124, 32 }, { 108, 32 }, { 92, 32 }, { 76, 32 }, { 60, 32 }, { 44, 32 }, { 28, 32 }, { 6, 32 },
- { 224, 48 }, { 202, 48 }, { 180, 48 }, { 164, 48 }, { 148, 48 }, { 132, 48 }, { 116, 48 }, { 100, 48 }, { 84, 48 }, { 68, 48 }, { 52, 48 }, { 20, 48 }, { 10, 48 }, { 218, 64 },
- { 198, 64 }, { 178, 64 }, { 112, 64 }, { 46, 64 }, { 26, 64 }, { 6, 64 }
-}, {
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 4, 1, 1, 1
-} };
-
-#elif defined (dzrgb60_hhkb_iso)
-const is31fl3733_led_t g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = {
- {0, H_15, G_15, I_15},
- {0, K_14, J_14, L_14},
- {0, K_13, J_13, L_13},
- {0, K_12, J_12, L_12},
- {0, K_11, J_11, L_11},
- {0, K_10, J_10, L_10},
- {0, K_9, J_9, L_9},
- {0, K_8, J_8, L_8},
- {0, K_7, J_7, L_7},
- {0, K_6, J_6, L_6},
- {0, K_5, J_5, L_5},
- {0, K_4, J_4, L_4},
- {0, K_3, J_3, L_3},
- {0, K_2, J_2, L_2},
- {0, K_1, J_1, L_1},
- {0, K_15, J_15, L_15},
- {0, H_13, G_13, I_13},
- {0, H_12, G_12, I_12},
- {0, H_11, G_11, I_11},
- {0, H_10, G_10, I_10},
- {0, H_9, G_9, I_9},
- {0, H_8, G_8, I_8},
- {0, H_7, G_7, I_7},
- {0, H_6, G_6, I_6},
- {0, H_5, G_5, I_5},
- {0, H_4, G_4, I_4},
- {0, H_3, G_3, I_3},
- {0, H_2, G_2, I_2},
- {0, H_1, G_1, I_1},
- {0, E_15, D_15, F_15},
- {0, E_12, D_12, F_12},
- {0, E_11, D_11, F_11},
- {0, E_10, D_10, F_10},
- {0, E_9, D_9, F_9},
- {0, E_8, D_8, F_8},
- {0, E_7, D_7, F_7},
- {0, E_6, D_6, F_6},
- {0, E_5, D_5, F_5},
- {0, E_4, D_4, F_4},
- {0, E_3, D_3, F_3},
- {0, E_2, D_2, F_2},
- {0, E_1, D_1, F_1},
- {0, B_14, A_14, C_14},
- {0, B_13, A_13, C_13},
- {0, B_11, A_11, C_11},
- {0, B_10, A_10, C_10},
- {0, B_9, A_9, C_9},
- {0, B_8, A_8, C_8},
- {0, B_7, A_7, C_7},
- {0, B_6, A_6, C_6},
- {0, B_5, A_5, C_5},
- {0, B_4, A_4, C_4},
- {0, B_3, A_3, C_3},
- {0, B_2, A_2, C_2},
- {0, B_1, A_1, C_1},
- {0, B_15, A_15, C_15},
- {0, E_13, D_13, F_13},
- {0, B_12, A_12, C_12},
- {0, B_16, A_16, C_16},
- {0, E_16, D_16, F_16},
- {0, H_16, G_16, I_16},
- {0, K_16, J_16, L_16},
-};
-
-led_config_t g_led_config = { {
- { 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 },
- { 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 29 },
- { 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 0, 15 },
- { 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, NO_LED, 42 },
- { 61, 60, 59, NO_LED, NO_LED, 58, NO_LED, NO_LED, NO_LED, NO_LED, 57, 56, NO_LED, 55 }
-}, {
- { 224, 0 }, { 208, 0 }, { 192, 0 }, { 176, 0 }, { 160, 0 }, { 144, 0 }, { 128, 0 }, { 112, 0 }, { 96, 0 }, { 80, 0 }, { 64, 0 }, { 48, 0 }, { 32, 0 }, { 16, 0 },
- { 0, 0 }, { 220, 24 }, { 200, 16 }, { 184, 16 }, { 168, 16 }, { 152, 16 }, { 136, 16 }, { 120, 16 }, { 104, 16 }, { 88, 16 }, { 72, 16 }, { 56, 16 }, { 40, 16 }, { 24, 16 },
- { 4, 16 }, { 204, 32 }, { 188, 32 }, { 172, 32 }, { 156, 32 }, { 140, 32 }, { 124, 32 }, { 108, 32 }, { 92, 32 }, { 76, 32 }, { 60, 32 }, { 44, 32 }, { 28, 32 }, { 6, 32 },
- { 224, 48 }, { 202, 48 }, { 180, 48 }, { 164, 48 }, { 148, 48 }, { 132, 48 }, { 116, 48 }, { 100, 48 }, { 84, 48 }, { 68, 48 }, { 52, 48 }, { 20, 48 }, { 10, 48 }, { 218, 64 },
- { 198, 64 }, { 178, 64 }, { 112, 64 }, { 46, 64 }, { 26, 64 }, { 6, 64 }
-}, {
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 4, 1, 1, 1
-} };
-
-#elif defined (dzrgb60_ansi)
-const is31fl3733_led_t g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = {
- {0, K_14, J_14, L_14},
- {0, K_13, J_13, L_13},
- {0, K_12, J_12, L_12},
- {0, K_11, J_11, L_11},
- {0, K_10, J_10, L_10},
- {0, K_9, J_9, L_9},
- {0, K_8, J_8, L_8},
- {0, K_7, J_7, L_7},
- {0, K_6, J_6, L_6},
- {0, K_5, J_5, L_5},
- {0, K_4, J_4, L_4},
- {0, K_3, J_3, L_3},
- {0, K_2, J_2, L_2},
- {0, K_1, J_1, L_1},
- {0, H_14, G_14, I_14},
- {0, H_13, G_13, I_13},
- {0, H_12, G_12, I_12},
- {0, H_11, G_11, I_11},
- {0, H_10, G_10, I_10},
- {0, H_9, G_9, I_9},
- {0, H_8, G_8, I_8},
- {0, H_7, G_7, I_7},
- {0, H_6, G_6, I_6},
- {0, H_5, G_5, I_5},
- {0, H_4, G_4, I_4},
- {0, H_3, G_3, I_3},
- {0, H_2, G_2, I_2},
- {0, H_1, G_1, I_1},
- {0, E_14, D_14, F_14},
- {0, E_12, D_12, F_12},
- {0, E_11, D_11, F_11},
- {0, E_10, D_10, F_10},
- {0, E_9, D_9, F_9},
- {0, E_8, D_8, F_8},
- {0, E_7, D_7, F_7},
- {0, E_6, D_6, F_6},
- {0, E_5, D_5, F_5},
- {0, E_4, D_4, F_4},
- {0, E_3, D_3, F_3},
- {0, E_2, D_2, F_2},
- {0, E_1, D_1, F_1},
- {0, B_13, A_13, C_13},
- {0, B_11, A_11, C_11},
- {0, B_10, A_10, C_10},
- {0, B_9, A_9, C_9},
- {0, B_8, A_8, C_8},
- {0, B_7, A_7, C_7},
- {0, B_6, A_6, C_6},
- {0, B_5, A_5, C_5},
- {0, B_4, A_4, C_4},
- {0, B_3, A_3, C_3},
- {0, B_2, A_2, C_2},
- {0, B_1, A_1, C_1},
- {0, B_15, A_15, C_15},
- {0, E_13, D_13, F_13},
- {0, B_12, A_12, C_12},
- {0, E_15, D_15, F_15},
- {0, B_16, A_16, C_16},
- {0, E_16, D_16, F_16},
- {0, H_16, G_16, I_16},
- {0, K_16, J_16, L_16},
-};
-
-led_config_t g_led_config = { {
- { 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 },
- { 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14 },
- { 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, NO_LED, 28 },
- { 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, NO_LED, NO_LED },
- { 60, 59, 58, NO_LED, NO_LED, 57, NO_LED, NO_LED, NO_LED, 56, 55, 54, NO_LED, 53 }
-}, {
- { 216, 0 }, { 192, 0 }, { 176, 0 }, { 160, 0 }, { 144, 0 }, { 128, 0 }, { 112, 0 }, { 96, 0 }, { 80, 0 }, { 64, 0 }, { 48, 0 }, { 32, 0 }, { 16, 0 }, { 0, 0 },
- { 220, 16 }, { 200, 16 }, { 184, 16 }, { 168, 16 }, { 152, 16 }, { 136, 16 }, { 120, 16 }, { 104, 16 }, { 88, 16 }, { 72, 16 }, { 56, 16 }, { 40, 16 }, { 24, 16 }, { 4, 16 },
- { 214, 24 }, { 188, 32 }, { 172, 32 }, { 156, 32 }, { 140, 32 }, { 124, 32 }, { 108, 32 }, { 92, 32 }, { 76, 32 }, { 60, 32 }, { 44, 32 }, { 28, 32 }, { 6, 32 }, { 210, 48 },
- { 180, 48 }, { 164, 48 }, { 148, 48 }, { 132, 48 }, { 116, 48 }, { 100, 48 }, { 84, 48 }, { 68, 48 }, { 52, 48 }, { 20, 48 }, { 10, 48 }, { 222, 64 }, { 202, 64 }, { 182, 64 },
- { 162, 64 }, { 102, 64 }, { 42, 64 }, { 22, 64 }, { 2, 64 }
-}, {
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
- 1, 4, 1, 1, 1
-} };
-
-#else
-const is31fl3733_led_t g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = {
- {0, K_14, J_14, L_14},
- {0, K_13, J_13, L_13},
- {0, K_12, J_12, L_12},
- {0, K_11, J_11, L_11},
- {0, K_10, J_10, L_10},
- {0, K_9, J_9, L_9},
- {0, K_8, J_8, L_8},
- {0, K_7, J_7, L_7},
- {0, K_6, J_6, L_6},
- {0, K_5, J_5, L_5},
- {0, K_4, J_4, L_4},
- {0, K_3, J_3, L_3},
- {0, K_2, J_2, L_2},
- {0, K_1, J_1, L_1},
- {0, H_14, G_14, I_14},
- {0, H_13, G_13, I_13},
- {0, H_12, G_12, I_12},
- {0, H_11, G_11, I_11},
- {0, H_10, G_10, I_10},
- {0, H_9, G_9, I_9},
- {0, H_8, G_8, I_8},
- {0, H_7, G_7, I_7},
- {0, H_6, G_6, I_6},
- {0, H_5, G_5, I_5},
- {0, H_4, G_4, I_4},
- {0, H_3, G_3, I_3},
- {0, H_2, G_2, I_2},
- {0, H_1, G_1, I_1},
- {0, E_14, D_14, F_14},
- {0, E_12, D_12, F_12},
- {0, E_11, D_11, F_11},
- {0, E_10, D_10, F_10},
- {0, E_9, D_9, F_9},
- {0, E_8, D_8, F_8},
- {0, E_7, D_7, F_7},
- {0, E_6, D_6, F_6},
- {0, E_5, D_5, F_5},
- {0, E_4, D_4, F_4},
- {0, E_3, D_3, F_3},
- {0, E_2, D_2, F_2},
- {0, E_1, D_1, F_1},
- {0, B_14, A_14, C_14},
- {0, B_13, A_13, C_13},
- {0, B_11, A_11, C_11},
- {0, B_10, A_10, C_10},
- {0, B_9, A_9, C_9},
- {0, B_8, A_8, C_8},
- {0, B_7, A_7, C_7},
- {0, B_6, A_6, C_6},
- {0, B_5, A_5, C_5},
- {0, B_4, A_4, C_4},
- {0, B_3, A_3, C_3},
- {0, B_2, A_2, C_2},
- {0, B_1, A_1, C_1},
- {0, B_15, A_15, C_15},
- {0, E_13, D_13, F_13},
- {0, B_12, A_12, C_12},
- {0, E_15, D_15, F_15},
- {0, H_15, G_15, I_15},
- {0, B_16, A_16, C_16},
- {0, E_16, D_16, F_16},
- {0, H_16, G_16, I_16},
- {0, K_16, J_16, L_16},
-};
-
-led_config_t g_led_config = { {
- { 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 },
- { 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14 },
- { 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, NO_LED, 28 },
- { 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, NO_LED, 41 },
- { 62, 61, 60, NO_LED, NO_LED, 59, NO_LED, NO_LED, 58, 57, 56, 55, NO_LED, 54 }
-}, {
- { 216, 0 }, { 192, 0 }, { 176, 0 }, { 160, 0 }, { 144, 0 }, { 128, 0 }, { 112, 0 }, { 96, 0 }, { 80, 0 }, { 64, 0 }, { 48, 0 }, { 32, 0 }, { 16, 0 }, { 0, 0 },
- { 220, 16 }, { 200, 16 }, { 184, 16 }, { 168, 16 }, { 152, 16 }, { 136, 16 }, { 120, 16 }, { 104, 16 }, { 88, 16 }, { 72, 16 }, { 56, 16 }, { 40, 16 }, { 24, 16 }, { 4, 16 },
- { 214, 32 }, { 188, 32 }, { 172, 32 }, { 156, 32 }, { 140, 32 }, { 124, 32 }, { 108, 32 }, { 92, 32 }, { 76, 32 }, { 60, 32 }, { 44, 32 }, { 28, 32 }, { 6, 32 }, { 224, 48 },
- { 208, 48 }, { 186, 48 }, { 164, 48 }, { 148, 48 }, { 132, 48 }, { 116, 48 }, { 100, 48 }, { 84, 48 }, { 68, 48 }, { 52, 48 }, { 36, 48 }, { 9, 48 }, { 224, 64 }, { 208, 64 },
- { 192, 64 }, { 176, 64 }, { 160, 64 }, { 102, 64 }, { 42, 64 }, { 22, 64 }, { 2, 64 }
-}, {
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
- 1, 1, 1, 4, 1, 1, 1
-} };
-
-
-#endif
diff --git a/users/tominabox1/doug.c b/users/tominabox1/doug.c
deleted file mode 100644
index fccb1bb6fd..0000000000
--- a/users/tominabox1/doug.c
+++ /dev/null
@@ -1,232 +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"
-
-// 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, 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, 0x2C, 0x2C, 0x2C, 0x34, 0x34,
-0x34, 0x24, 0x2C, 0x2C, 0x2C, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x18, 0x14,
-0x14, 0x3C, 0x20, 0x00, 0x00, 0x04,
-0x0C, 0x00, 0x00, 0x20, 0x00, 0xC0,
-0x00, 0x00, 0x00, 0xA0, 0x20, 0x30,
-0x7C, 0x78, 0x0C, 0x0C, 0x18, 0x18,
-0x18, 0x14, 0x14, 0x14, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x80, 0x5C, 0x5C, 0x24, 0x20,
-0xA0, 0xA0, 0xA0, 0x20, 0x60, 0x20,
-0xBC, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x14, 0x94, 0x94,
-0x14, 0x94, 0x94, 0x94, 0x94, 0x14,
-0x1C, 0x1C, 0x1C, 0x88, 0x08, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x18, 0x08,
-0x84, 0x84, 0x84, 0x84, 0x80, 0x98,
-0x80, 0x9C, 0x9C, 0x90, 0x80, 0x00,
-0x10, 0x1C, 0x1C, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x10, 0x10, 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,
-0x80, 0x80, 0x40, 0x00, 0x80, 0x80,
-0x00, 0x00, 0x00, 0x00, 0x80, 0x80,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x50, 0xA0, 0x40, 0x80, 0x80, 0x40,
-0xA0, 0x50, 0x00, 0x00, 0xF0, 0x00,
-0x01, 0x08, 0x08, 0x88, 0x08, 0x08,
-0x00, 0x00, 0x00, 0x00, 0x0A, 0x0C,
-0x0E, 0x0A, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x02, 0x82, 0x80, 0x80,
-0x00, 0x00, 0x80, 0x80, 0x00, 0x00,
-0x00, 0xC0, 0x00, 0x00, 0x00, 0x01,
-0x00, 0x00, 0x00, 0x40, 0x00, 0x40,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x03, 0x00,
-0x01, 0x01, 0x01, 0x60, 0x60, 0x40,
-0xF1, 0xB3, 0x03, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x90, 0x90, 0xD0, 0xC0,
-0xE0, 0xE0, 0x00, 0x00, 0x00, 0x01,
-0x00, 0x90, 0xA0, 0xA0, 0x63, 0x60,
-0x40, 0x40, 0xC0, 0x00, 0x00, 0x00,
-0x00, 0x02, 0x02, 0x02, 0x03, 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,
-0x07, 0x06, 0x00, 0x70, 0x10, 0x10,
-0x31, 0x11, 0x16, 0x06, 0x07, 0x01,
-0x00, 0x08, 0x08, 0x08, 0x70, 0x70,
-0x40, 0x40, 0x41, 0x46, 0x46, 0x41,
-0x40, 0x40, 0x00, 0x00, 0x07, 0x00,
-0x00, 0x00, 0x00, 0x75, 0x75, 0x15,
-0x77, 0x77, 0x35, 0x15, 0x75, 0x75,
-0x75, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x70, 0x70, 0x56, 0x56, 0x56,
-0x51, 0x11, 0x26, 0x00, 0x00, 0x00,
-0x00, 0x17, 0x10, 0x10, 0x70, 0x00,
-0x00, 0x00, 0x30, 0x20, 0x27, 0x77,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0xE0, 0xE0, 0xA0, 0xA0, 0xA0, 0xA0,
-0xA0, 0xA0, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x90, 0x90, 0x90, 0x90,
-0x90, 0xF0, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x20, 0x40,
-0xF0, 0x30, 0x10, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-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/tominabox1/readme.md b/users/tominabox1/readme.md
deleted file mode 100644
index 99a3542bc3..0000000000
--- a/users/tominabox1/readme.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# Overview
-
-My user-space code covers the [Minivan](../../keyboards/thevankeyboards/minivan/keymaps/tominabox1/keymap.c), [Dimple](../../keyboards/lazydesigners/dimple/keymaps/tominabox1/keymap.c), [CRKBD](../../keyboards/crkbd/keymaps/tominabox1/keymap.c), and [Teensy based HHKB converter](../../keyboards/hhkb/keymaps/tominabox1/). My code makes extensive use of @Drashna's code and much love and praise goes to him for figuring a lot of this stuff out!
-
-My usercode utilizes the layout wrappers contained in [wrappers.h](wrappers.h). All of the keymaps are derivative of the Dimple keymap and utilize its wrappers in the definition of additional wrappers.
diff --git a/users/tominabox1/rules.mk b/users/tominabox1/rules.mk
deleted file mode 100644
index f1ee5c0485..0000000000
--- a/users/tominabox1/rules.mk
+++ /dev/null
@@ -1,25 +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
-#
-CONSOLE_ENABLE = no
-TAP_DANCE_ENABLE = yes
-NKRO_ENABLE = yes
-BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
-
-ifeq ($(strip $(KEYBOARD)), crkbd/rev1)
-RGB_MATRIX_ENABLE = yes
-EXTRAFLAGS += -flto
-BOOTLOADER = qmk-dfu
-OLED_ENABLE = yes
-endif
-
-ifeq ($(strip $(KEYBOARD)), lazydesigners/dimple)
-MOUSEKEY_ENABLE = no # Mouse keys
-EXTRAKEY_ENABLE = yes # Audio control and System control
-BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
-RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-endif
-
-
-SRC += tominabox1.c
diff --git a/users/tominabox1/tominabox1.c b/users/tominabox1/tominabox1.c
deleted file mode 100644
index 2c3c1ac9ff..0000000000
--- a/users/tominabox1/tominabox1.c
+++ /dev/null
@@ -1,281 +0,0 @@
-#include "tominabox1.h"
-
-#ifdef KEYBOARD_lazydesigners_dimple
-#ifdef RGBLIGHT_ENABLE
-__attribute__ ((weak))
-void keyboard_post_init_keymap(void) {}
-
-void keyboard_post_init_user(void) { // sets the backlighting to come on upon successful load then turn off
- rgblight_enable_noeeprom();
- rgblight_sethsv_noeeprom(RGB_RED);
- rgblight_mode_noeeprom(0);
- wait_ms(700);
- rgblight_disable_noeeprom();
-}
-#endif // RGBLIGHT
-#endif // Dimple
-
-
-#ifdef RGB_MATRIX_ENABLE
-void rgb_matrix_layer_helper(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode, uint8_t speed, uint8_t led_type);
-static bool is_suspended;
-static bool rgb_matrix_enabled;
-
-__attribute__ ((weak))
-void suspend_power_down_keymap(void) {}
-
-void suspend_power_down_user(void) {
- rgb_matrix_set_suspend_state(true);
- if (!is_suspended) {
- is_suspended = true;
- rgb_matrix_enabled = (bool)rgb_matrix_config.enable;
- rgb_matrix_disable_noeeprom();
- }
-}
-
-__attribute__ ((weak))
-void suspend_wakeup_init_keymap(void) {}
-
-void suspend_wakeup_init_user(void) {
- rgb_matrix_set_suspend_state(false);
- is_suspended = false;
- if (rgb_matrix_enabled) {
- rgb_matrix_enable_noeeprom();
- }
-}
-
-# include "lib/lib8tion/lib8tion.h"
-extern led_config_t g_led_config;
-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(g_rgb_counters.tick, 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;
- }
- }
-}
-#endif //RGB_MATRIX_ENABLE
-
-void dance_cln_finished (tap_dance_state_t *state, void *user_data) {
- if (state->count == 1) {
- register_code16(S(KC_2));
- } else {
- SEND_STRING("tom.campie@gmail.com");
- }
-}
-
-void dance_cln_reset (tap_dance_state_t *state, void *user_data) {
- if (state->count == 1) {
- unregister_code16(S(KC_2));
- } else {
- }
-}
-
-tap_dance_action_t tap_dance_actions[] = {
- [KC_EMAIL] = ACTION_TAP_DANCE_FN_ADVANCED (NULL, dance_cln_finished, dance_cln_reset),
- [TD_SFT_CPS] = ACTION_TAP_DANCE_DOUBLE(KC_LSFT, KC_CAPS),
-};
-
-#define TAPPING_TERM 200
-
-#ifdef KEYBOARD_crkbd_rev1
-
-#endif // CRKBD
-
-uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case LSFT_T(KC_CAPS):
- return 250;
- case KC_ENT_LOW:
- return 150;
- case KC_SPC_RSE:
- return(250);
- case LCTL_T(KC_TAB):
- return 300;
- default:
- return TAPPING_TERM;
- }
-};
-
-__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, _LOWER, _RAISE, _ADJUST);
- switch (get_highest_layer(state)) {
- case _LOWER:
- break;
- case _RAISE:
- break;
- case _ADJUST:
- break;
- default:
- break;
- }
- return state;
-}
-
-#ifdef KEYBOARD_crkbd_rev1
-
-__attribute__((weak))
-void matrix_scan_keymap(void) {}
-
-extern bool oled_initialized;
-void matrix_scan_user(void) {
- if(!oled_initialized) {
- wait_ms(200);
- oled_init(0);
- return;
- }
- matrix_scan_keymap();
- }
-
-extern uint8_t is_master;
-#endif // CRKBD
-
-uint16_t oled_timer;
-
-__attribute__ ((weak))
-bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
- return true;
-}
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- #ifdef CONSOLE_ENABLE
- uprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed);
- #endif
-
- if (record->event.pressed) {
- #ifdef OLED_ENABLE
- oled_timer = timer_read();
- oled_on();
- #endif // OLED_ENABLE
- switch (keycode) {
- case KC_BBB:
- if (record->event.pressed) {
- SEND_STRING(":b:");
- } else {}
- break;
- case KC_BEPIS:
- if (record->event.pressed) {
- SEND_STRING("BEPIS");
- } else {}
- break;
- }
- }
- return true;
-
-}
-#ifdef KEYBOARD_crkbd_rev1
-#ifdef OLED_ENABLE
-void render_logo(void) {
- static const char PROGMEM 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};
- oled_write_P(logo, false);
-}
-
-void render_status_main(void) {
- // Host Keyboard USB Status
- oled_write_P(PSTR("USB: "), false);
- switch (USB_DeviceState) {
- case DEVICE_STATE_Unattached:
- oled_write_P(PSTR("Unattached\n"), false);
- break;
- case DEVICE_STATE_Suspended:
- oled_write_P(PSTR("Suspended\n"), false);
- break;
- case DEVICE_STATE_Configured:
- oled_write_P(PSTR("Connected\n"), false);
- break;
- case DEVICE_STATE_Powered:
- oled_write_P(PSTR("Powered\n"), false);
- break;
- case DEVICE_STATE_Default:
- oled_write_P(PSTR("Default\n"), false);
- break;
- case DEVICE_STATE_Addressed:
- oled_write_P(PSTR("Addressed\n"), false);
- break;
- default:
- oled_write_P(PSTR("Invalid\n"), false);
- }
-
- // Host Keyboard Layer Status
- oled_write_P(PSTR("Layer: "), false);
- switch (get_highest_layer(layer_state)) {
- case _BASE:
- oled_write_P(PSTR("Colemak\n"), false);
- break;
- case _RAISE:
- oled_write_P(PSTR("Numbers\n"), false);
- break;
- case _LOWER:
- oled_write_P(PSTR("Symbols\n"), false);
- break;
- case _ADJUST:
- oled_write_P(PSTR("Adjust\n"), false);
- break;
- case _ARROW:
- oled_write_P(PSTR("Navigation\n"), false);
- break;
- case _FKEY:
- oled_write_P(PSTR("Function\n"), false);
- break;
- default:
- // Or use the write_ln shortcut over adding '\n' to the end of your string
- oled_write_ln_P(PSTR("Undefined"), false);
- }
-
- // Host Keyboard LED Status
-
- oled_write_ln_P(host_keyboard_led_state().caps_lock ? PSTR("Caps Lock\n") : PSTR(" \n"), false);
-}
-__attribute__ ((weak))
-void oled_task_keymap(void) {}
-
-bool oled_task_user(void) {
-
- if (timer_elapsed(oled_timer) > 20000) {
- oled_off();
- return;
- }
- if (is_master) {
- render_status_main(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
- } else {
- render_logo();
- oled_scroll_left();
- }
- oled_task_keymap();
- return false;
- }
-
-#endif // OLED_Driver
-#endif // crkbd
diff --git a/users/tominabox1/tominabox1.h b/users/tominabox1/tominabox1.h
deleted file mode 100644
index 00f8e65162..0000000000
--- a/users/tominabox1/tominabox1.h
+++ /dev/null
@@ -1,56 +0,0 @@
-#pragma once
-#include "quantum.h"
-#include "action.h"
-#include "version.h"
-#include "wrappers.h"
-
-// #define KC_SFT_CPS MT(MOD_LSFT, KC_CAPS) // Act as Shift on hold and as CapsLock on tap
-#define SPC_LOW LT(_LOWER, KC_ENT) // Left space on tap, LOWER on hold
-#define SPC_UPR LT(_RAISE, KC_SPC) // Left space on tap, UPPER on hold
-
-extern keymap_config_t keymap_config;
-
-enum layers {
- _BASE,
- _LOWER,
- _RAISE,
- _ADJUST,
- _ARROW,
- _FKEY
-};
-
-enum custom_keycodes {
- BASE = SAFE_RANGE,
- KC_BEPIS,
- KC_BBB,
- LOWER,
- RAISE,
- ADJUST,
- ARROW,
- FKEY,
- KC_LFT_NUM_F,
- RGBRST,
- KC_PASTA
-};
-
-enum tap_dance_indexes {
- KC_EMAIL,
- TD_SFT_CPS,
-};
-
-#define KC_ARROW MO(4)
-#define KC_LTOG RGB_TOG
-#define KC_LHUI RGB_HUI
-#define KC_LHUD RGB_HUD
-#define KC_LSAI RGB_SAI
-#define KC_LSAD RGB_SAD
-#define KC_LVAI RGB_VAI
-#define KC_LVAD RGB_VAD
-#define KC_LMOD RGB_MOD
-#define KC_CTLTB CTL_T(KC_TAB) // Tab on tap, ctrl on hold
-#define KC_SFT_CPS TD(TD_SFT_CPS) // Hold for shift, double tap for caps
-#define KC_ENT_LOW LT(_LOWER, KC_ENT) // Return on tap, Lower on hold
-#define KC_SPC_RSE LT(_RAISE, KC_SPC) // Space on tap, raise on hold
-#define KC_EML TD(KC_EMAIL) // Double tap @ for email macro
-#define KC_FKEY LT(_FKEY, KC_ENT) // Return on tap, Fkey on hold
-#define KC_NUMF TD(KC_LFT_NUM_F)
diff --git a/users/tominabox1/wrappers.h b/users/tominabox1/wrappers.h
deleted file mode 100644
index f7f4c7fd23..0000000000
--- a/users/tominabox1/wrappers.h
+++ /dev/null
@@ -1,142 +0,0 @@
-#pragma once
-#include "tominabox1.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 LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
-#define LAYOUT_arrow_wrapper(...) LAYOUT_arrow(__VA_ARGS__)
-
-/*
- _____ _ _
- | __ \(_) | |
- | | | |_ _ __ ___ _ __ | | ___
- | | | | | '_ ` _ \| '_ \| |/ _ \
- | |__| | | | | | | | |_) | | __/
- |_____/|_|_| |_| |_| .__/|_|\___|
- | |
- |_|
-*/
-// Dimple Base layer
-#define __________________DIMPLE1__________________ QK_GESC, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC
-#define __________________DIMPLE2__________________ LCTL_T(KC_TAB), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT
-#define __________________DIMPLE3L_________________ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B
-#define __________________DIMPLE3R_________________ KC_K, KC_M, KC_COMM, KC_UP, LT(_FKEY,KC_DOT)
-#define __________________DIMPLE4__________________ KC_LCTL, KC_LGUI, KC_LALT, KC_ENT_LOW, KC_SPC_RSE, KC_LEFT, KC_DOWN, KC_RGHT
-
-// Dimple Symbol Layer
-#define _________________LOWER_1___________________ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC
-#define _________________LOWER_2___________________ KC_DEL, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE
-#define _________________LOWER_3___________________ KC_CAPS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PGUP, KC_QUES
-#define _________________LOWER_4___________________ LCA(KC_DEL), KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, KC_END
-
-// Dimple Number layer
-#define ___________________RAISE1__________________ KC_TILD, KC_EXLM, TD(KC_EMAIL), KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL
-#define ___________________RAISE2__________________ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS
-#define ___________________RAISE3__________________ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_DOT, KC_SLSH
-#define ___________________RAISE4__________________ KC_VOLD, KC_MUTE, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO
-
-// Dimple F-key layer
-#define ___________________FKEY1___________________ KC_PASTA, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_NO
-#define ___________________FKEY2___________________ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_F11, KC_F12, KC_NO
-#define ___________________FKEY3___________________ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
-#define ___________________FKEY4___________________ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO
-
-// Dimple Adjust layer
-#define ___________________ADJST1__________________ QK_BOOT,RGBRST, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
-#define ___________________ADJST2__________________ RGB_M_P, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
-#define ___________________ADJST3__________________ RGB_MOD, RGB_HUI, RGB_HUD, RGB_M_SN, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
-#define ___________________ADJST4__________________ RGB_VAD, RGB_TOG, RGB_VAI, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO
-
-/*
-__ __ _ _
-| \/ (_) (_)
-| \ / |_ _ __ ___ ____ _ _ __
-| |\/| | | '_ \| \ \ / / _` | '_ \
-| | | | | | | | |\ V / (_| | | | |
-|_| |_|_|_| |_|_| \_/ \__,_|_| |_|
-*/
-
-
-// Minivan Base Layer
-#define __________________MINIVAN1_________________ __________________DIMPLE1__________________
-#define __________________MINIVAN2_________________ __________________DIMPLE2__________________
-#define __________________MINIVAN3_________________ __________________DIMPLE3L_________________, __________________DIMPLE3R_________________, KC_RSFT
-#define __________________MINIVAN4_________________ KC_LCTL, KC_LGUI, KC_LALT, KC_ENT_LOW, KC_SPC_RSE, KC_LEFT, KC_DOWN, KC_RGHT, MO(_FKEY)
-
-/* Minivan Symbol Layer
-#define _________________LOWER_1___________________
-#define _________________LOWER_2___________________ */
-#define __________________MININUM3_________________ _________________LOWER_3___________________, KC_SLSH
-#define __________________MININUM4_________________ _________________LOWER_4___________________, KC_END
-
-/* Minvian Number Layer
-#define ___________________RAISE1__________________
-#define ___________________RAISE2__________________ */
-#define ___________________RVAN_3__________________ ___________________RAISE3__________________, KC_NO
-#define ___________________RVAN_4__________________ ___________________RAISE4__________________, KC_NO
-
-/* Minvian F-key layer
-#define ___________________FKEY1___________________
-#define ___________________FKEY2___________________ */
-#define ___________________FVAN_3__________________ ___________________FKEY3___________________, KC_NO
-#define ___________________FVAN_4__________________ ___________________FKEY4___________________, KC_TRNS
-
-/* Minivan Adjust Layer
-#define ___________________ADJST1__________________
-#define ___________________ADJST2__________________ */
-#define ___________________ADJVAN3_________________ ___________________ADJST3__________________, KC_NO
-#define ___________________ADJVAN4_________________ ___________________ADJST4__________________, KC_TRNS
-
-/*
- _____ _____ _ ______ _____
- / ____| __ \| |/ / _ \| __ \
-| | | |__) | ' /| |_) | | | |
-| | | _ /| < | _ <| | | |
-| |____| | \ \| . \| |_) | |__| |
- \_____|_| \_\_|\_\____/|_____/
-*/
-
-// CRKBD Base Layer
-#define ___________________CRKBD1__________________ __________________DIMPLE1__________________
-#define ___________________CRKBD2__________________ __________________DIMPLE2__________________
-#define ___________________CRKBD3__________________ __________________DIMPLE3L_________________, KC_K, KC_M,KC_COMM, KC_DOT, KC_SLSH, KC_BBB
-#define ___________________CRKBD4__________________ KC_LGUI, KC_LALT,KC_ENT_LOW, KC_SPC_RSE, KC_ARROW, KC_FKEY
-
-/* CRKBD Number layer
-#define ___________________RAISE1__________________
-#define ___________________RAISE1__________________ */
-#define ___________________CRKBD_RAISE3____________ ___________________RVAN_3__________________
-#define ___________________CRKBD_RAISE4____________ ___________________CRKBD4__________________
-
-/* CRKBD Symbol Layer
-#define _________________LOWER_1___________________
-#define _________________LOWER_2___________________ */
-#define ___________________CRKBD_LOW3______________ __________________MININUM3_________________
-#define ___________________CRKBD_LOW4______________ ___________________CRKBD4__________________
-
-/* CRKBD F-key layer
-#define ___________________FKEY1___________________
-#define ___________________FKEY2___________________ */
-#define ___________________CRKBD_FKEY3_____________ ___________________FVAN_3__________________
-#define ___________________CRKBD_FKEY4_____________ ___________________CRKBD4__________________
-
-/* CRKBD adjust layer
-#define ___________________ADJST1__________________ */
-#define ___________________CRKBD_ADJST2____________ KC_LTOG,KC_LHUI,KC_LSAI,KC_LVAI,KC_NO,KC_NO,KC_NO,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
-#define ___________________CRKBD_ADJST3____________ KC_LMOD, KC_LHUD, KC_LSAD, KC_LVAD, KC_NO, KC_NO,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
-#define ___________________CRKBD_ADJST4____________ ___________________CRKBD4__________________
-
-// CRKBD arrow layer
-#define ___________________ARROW1__________________ KC_NO, KC_NO, KC_UP, KC_NO, KC_NO, KC_NO, KC_NO, KC_PGDN, KC_UP, KC_PGUP, KC_NO, KC_NO
-#define ___________________ARROW2__________________ KC_NO, KC_LEFT, KC_DOWN, KC_RIGHT, KC_NO, KC_NO,KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO
-#define ___________________ARROW3__________________ 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 ___________________ARROW4__________________ ___________________CRKBD4__________________
-
-// clang-format on
diff --git a/users/turbomech/backupturbomech.c b/users/turbomech/backupturbomech.c
deleted file mode 100644
index 70d3d065c4..0000000000
--- a/users/turbomech/backupturbomech.c
+++ /dev/null
@@ -1,390 +0,0 @@
-/* Copyright 2017 @TurboMech /u/TurboMech <discord> @A9entOran9e#6134
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "turbomech.h"
-#include "quantum.h"
-//#include "action_layer.h"
-#include "action.h"
-//#include "rgblight.h"
-
-__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) {}
-
-//#define default_layer _QWERTY (0)
-//extern keymap_config_t keymap_config;
-
-extern rgblight_config_t rgblight_config;
-
-
-//#ifdef RGBLIGHT_ENABLE
-/*change the rgblight_setrgb(#, #, #) to what you want CAPS lock - currenlty red*/
- //#define rgblight_set_caps rgblight_setrgb(255, 0, 0)
- //#define rgblight_base rgblight_mode(RGB_current_mode)
-//#endif
-//
-//bool rgb_layer_change = true;
-//bool RGB_INIT = false;
-//bool TOG_STATUS = false;
-#ifdef RGBLIGHT_ENABLE
-bool rgb_layer_change = true;
-#endif
-int RGB_current_mode;
-
-/*void matrix_init_user(void) {
- #ifdef RGBLIGHT_ENABLE
- rgblight_enable();
- if (true) {
- eeconfig_read_rgblight();
- rgblight_get_mode();
- eeconfig_update_rgblight_default();
-
-
- // eeconfig_debug_rgblight();
- //rgblight_init();
- }
- #endif
-
-}
-*/
-
-/*void matrix_init_user(void) {
- #ifdef RGBLIGHT_ENABLE
- eeconfig_read_rgblight();
- eeconfig_update_rgblight_default();
- //rgblight_init();
- //rgblight_mode(RGB_current_mode);
- //rgblight_mode(RGB_current_mode);
- //RGB_current_mode = rgblight_config.mode;
- #endif
-}*/
-
-
-void persistent_default_layer_set(uint16_t default_layer) {
- eeconfig_update_default_layer(default_layer);
- default_layer_set(default_layer);
- default_layer = _QWERTY;
- // eeconfig_update_rgblight(rgblight_config.raw);
-}
-
- //Setting ADJUST layer RGB back to default
-/*void update_tri_layer_RGB(uint8_t layer1, uint8_t layer2, uint8_t layer3) {
- if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) {
- rgblight_mode(RGB_current_mode);
- layer_on(layer1);
- } else {
- layer_off(layer2);
- }
-}*/
-
-
-void matrix_init_user(void) {
-
- uint8_t default_layer = eeconfig_read_default_layer();
-
- rgblight_enable();
-
- if(true) {
- if (default_layer & (1UL << _QWERTY)) {
- //RGB_current_mode = rgblight_config.mode;
- rgblight_mode(11);
- }
- else {
- rgblight_mode (12);
- }
-
- /*else if (default_layer & (1UL << _DVORAK)) {
- rgblight_set_green;
- }
- //else if (default_layer & (1UL << _WORKMAN)) {
- rgblight_set_purple;
- }
- else {
- rgblight_set_teal;*/
-
-
- }
-
-
-}
-
-static bool is_capslocked = false;
-bool led_update_user(led_t led_state) {
- if (led_state.caps_lock) {
- is_capslocked = true;
- // DDRB |= (1 << 2); PORTB &= ~(1 << 2);
- } else {
- is_capslocked = false;
- // DDRB &= ~(1 << 2); PORTB &= ~(1 << 2);
- }
- return false;
-}
- //rgblight_set();
-
-
-//static uint8_t is_capslocked = false;
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case _QWERTY:
- persistent_default_layer_set(1UL << _QWERTY);
- return false;
- break;
- case KC_MAKE_ALU84:
- if (!record->event.pressed) {
- SEND_STRING("make alu84:TurboMech:dfu");
- SEND_STRING(SS_TAP(X_ENTER));
- }
- return false;
- break;
- case KC_QMK:
- if (!record->event.pressed) {
- SEND_STRING("cd QMK/qmk_firmware");
- SEND_STRING(SS_TAP(X_ENTER));
- }
- return false;
- break;
- case KC_RESET:
- if (!record->event.pressed) {
- #ifdef RGBLIGHT_ENABLE
- rgblight_enable();
- rgblight_mode(1);
- rgblight_setrgb(255, 255, 255);
- #endif
- //_delay_ms(2000);
- reset_keyboard();
- }
- return false;
- break;
- /*case RGB_MOD:
- //led operations - RGB mode change now updates the RGB_current_mode to allow the right RGB mode to be set after reactive keys are released
- if (record->event.pressed) {
- rgblight_mode(RGB_current_mode);
- RGB_current_mode = rgblight_config.mode;
- rgblight_step();
- // rgblight_mode(RGB_current_mode);
- //RGB_current_mode = rgblight_config.mode;
- // _delay_ms(50);
- // rgblight_set();
- RGB_current_mode = rgblight_config.mode;
- }
- else //if (rgblight_config.enable)
- {
- _delay_ms(50);
- rgblight_set();
- //rgblight_mode(rgblight_config.mode);
- // eeconfig_update_rgblight(rgblight_config.raw);
- }
-
- return true;
- break;*/
-
- /*case MO(1):
- if (record->event.realeased) {
- rgblight_mode(1);
- rgblight_set_red;
- }
- return true;
- break;*/
-
- /*case KC_CAPS:
- if (record->event.pressed) {
- rgblight_mode(RGB_current_mode);
- register_code(KC_CAPS);
- rgblight_mode(1);
- rgblight_set_red;
- }
- else {
- unregister_code(KC_CAPS);
- rgblight_mode(RGB_current_mode);
-
- }
- return false;
- break;*/
-
- /* rgblight_mode(RGB_current_mode);
- register_code(KC_CAPS);
- rgblight_mode(1);
- rgblight_set_red;
- }
- else {
- unregister_code(KC_CAPS);
- rgblight_mode(RGB_current_mode);*/
-
- // }
- // return true;
- // break;
- /*case KC_RESET:
- if (record->event.pressed) {
- layer_off(_FUNCTION);
- rgblight_mode(RGB_current_mode);
- RGB_current_mode = rgblight_config.mode;
- layer_clear();
- _delay_ms(1000);
- reset_keyboard();
- }
- else{
- //layer_off(_FUNCTION);
- _delay_ms(1000);
- rgblight_mode(RGB_current_mode);
- RGB_current_mode = rgblight_config.mode;
-
- //eeconfig_update_rgblight_default();
- }
-
- return false;
- break;
- }*/
-
-
- return true;
- break;
-
-
-
-
-
-/*case RGB_MOD:
-case RGB_HUI:
-case RGB_HUD:
-case RGB_SAI:
-case RGB_SAD:
-case RGB_VAI:
-case RGB_VAD:
-case RGB_MODE_PLAIN:
-case RGB_MODE_BREATHE:
-case RGB_MODE_RAINBOW:
-case RGB_MODE_SWIRL:
-case RGB_MODE_SNAKE:
-case RGB_MODE_KNIGHT:
-case RGB_MODE_XMAS:
-case RGB_MODE_GRADIENT:
- if (record->event.pressed) {
- rgb_layer_change = false;
- }
- break;
- }
- return true;*/
- }
-
-
- return process_record_keymap(keycode, record);
-
-}
-
-layer_state_t layer_state_set_user(layer_state_t state) {
-#ifdef RGBLIGHT_ENABLE
- uint8_t default_layer = eeconfig_read_default_layer();
- if (rgb_layer_change) {
- switch (get_highest_layer(state)) {
- case _FUNCTION:
- rgblight_set_blue;
- rgblight_mode(1);
- break;
- case _QWERTY:
-
- rgblight_mode(11);
- break;
- // case _MOUS:
- // rgblight_set_yellow;
- // rgblight_mode(1);
- // break;
- //case _MACROS:
- //rgblight_set_orange;
- //is_overwatch ? rgblight_mode(17) : rgblight_mode(18);
- //break;
- //case _MEDIA:
- //rgblight_set_green;
- //rgblight_mode(22);
- //break;
- default:
- if (is_capslocked) {
- rgblight_mode(1);
- rgblight_set_red;
- }
- else { if (default_layer & (1UL << _QWERTY)) {
- rgblight_mode(11);
- }
-
- else if (default_layer & (1UL << _FUNCTION)) {
- rgblight_set_cyan;
- }
- //else if (default_layer & (1UL << _WORKMAN)) {
- // rgblight_set_purple;
- // }
- else {
- rgblight_set_orange;
- }
- }
- rgblight_mode(1);
- break;
- }
- }
-#endif
- return state;
-}
-
-
-!!** possible for later
-
-void set_single_persistent_default_layer(uint8_t default_layer);
-
-void set_single_persistent_default_layer(uint8_t default_layer) {
- #if defined(AUDIO_ENABLE) && defined(DEFAULT_LAYER_SONGS)
- PLAY_SONG(default_layer_songs[default_layer]);
- #endif
- eeconfig_update_default_layer(1U<<default_layer);
- default_layer_set(1U<<default_layer);
-
-void matrix_init_kb(void);
-
-void matrix_init_user(void);
-
-!!** line 31
-
-__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) {}
-
-Alt +30C4
-¯\_(ツ)_/¯
-
-Alt +00AF
diff --git a/users/turbomech/turbomech.c b/users/turbomech/turbomech.c
deleted file mode 100644
index 75796fb8fb..0000000000
--- a/users/turbomech/turbomech.c
+++ /dev/null
@@ -1,124 +0,0 @@
-/* Copyright 2017 @TurboMech /u/TurboMech <discord> @A9entOran9e#6134
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-//**!! Currently after reboot the set rgb mode does not persist after reboot. Need to find a way to "save" the rgb mode. Color remains after reboot though.
-
-#include "turbomech.h"
-#include "quantum.h"
-#include "action_layer.h"
-#include "action.h"
-#include "rgblight.h"
-//#include "process_unicode.h"
-
-extern keymap_config_t keymap_config;
-extern rgblight_config_t rgblight_config;
-bool RGB_INIT = false;
-bool TOG_STATUS = false;
-bool caps_is_active = false;
-int RGB_current_mode;
-
-void matirx_scan_kb (void) {
- if (RGB_INIT) {}
- else {
- RGB_current_mode = rgblight_config.mode;
- RGB_INIT = true;
- }
- rgblight_mode(RGB_current_mode); // revert RGB to initial mode prior to RGB mode change
- TOG_STATUS = false;
-}
-
-void persistent_default_layer_set(uint16_t default_layer) {
- eeconfig_update_default_layer(default_layer);
- default_layer_set(default_layer);
-}
-/*void update_tri_layer_RGB(uint8_t layer1, uint8_t layer2, uint8_t layer3) {
- if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) {
- rgblight_mode(RGB_current_mode);
- layer_on(layer3);
- } else {
- layer_off(layer3);
- }
-}*/
-
-__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 KC_CAPS:
- if (record->event.pressed) {
- register_code(KC_CAPS);
- caps_is_active = !caps_is_active;
- if (caps_is_active) {
- rgblight_mode(14);
- }
- else if (!caps_is_active) {
- unregister_code(KC_CAPS);
- rgblight_mode(RGB_current_mode);
- }
- }
- return false;
- break;
-
- case RGB_MOD:
- //led operations - RGB mode change now updates the RGB_current_mode to allow the right RGB mode to be set after reactive keys are released
- if (record->event.pressed) {
- rgblight_mode(RGB_current_mode);
- rgblight_step();
- RGB_current_mode = rgblight_config.mode;
- // rgblight_set();
- }
- return false;
- break;
-
- case KC_RESET:
- if (record->event.pressed) {
- rgblight_enable();
- rgblight_mode(1);
- rgblight_setrgb(255, 255, 255);
- //_delay_ms(2000);
- reset_keyboard();
- }
- return false;
- break;
-
- /*case _FLIP: //(╯°□°)╯︵ ┻━┻
- if (record->event.pressed) {
- register_code(KC_LPRN);
- unregister_code(KC_LPRN);
- register_unicode(0x00B0);
-
- UC(0x256F);
- PROCESS_UNICODE(UC(0x00B0));
- SEND_TAP(UC(0x25A1));
- SEND_TAP(UC(0x00B0));
- SEND_STRING(")");
- SEND_TAP(UC(0x256F));
- SEND_TAP(UC(0xFE35));
- SEND_TAP(UC(0x253B));
- SEND_TAP(UC(0x2501));
- SEND_TAP(UC(0x253B));
- }
- return false;
- break;*/
-
- return true;
- break;
- }
-return process_record_keymap(keycode, record);
-}
diff --git a/users/turbomech/turbomech.h b/users/turbomech/turbomech.h
deleted file mode 100644
index 87fd4da684..0000000000
--- a/users/turbomech/turbomech.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/* Copyright 2017 @TurboMech /u/TurboMech <discord> @A9entOran9e#6134
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-
-#ifndef USERSPACE
-#define USERSPACE
-
-#include "quantum.h"
-
-// Definine layer names
-#define _QWERTY 0
-#define _FUNCTION 1
-
-#ifdef RGBLIGHT_ENABLE
-//values are HSV (Hue, Sat, Val) - except Sat and Val equal 255 for 100%.
-#define rgblight_set_blue rgblight_sethsv (240, 255, 255);
-#define rgblight_set_red rgblight_sethsv (0, 255, 255);
-#define rgblight_set_green rgblight_sethsv (120, 255, 255);
-#define rgblight_set_orange rgblight_sethsv (30, 255, 255);
-#define rgblight_set_teal rgblight_sethsv (195, 255, 255);
-#define rgblight_set_magenta rgblight_sethsv (300, 255, 255);
-#define rgblight_set_yellow rgblight_sethsv (60, 255, 255);
-#define rgblight_set_purple rgblight_sethsv (270, 255, 255);
-#define rgblight_set_cyan rgblight_sethsv (180, 255, 255);
-#define rgblight_set_white rgblight_sethsv (0, 0, 255)
-#endif
-
-//must use KC_RESET in order to have RESET indicate a color/mode
-enum userspace_custom_keycodes {
- EPRM = SAFE_RANGE, //should always be here
- KC_RESET,
- KC_MAKE_ALU84,
- KC_QMK,
- _FLIP,
- NEW_SAFE_RANGE
-};
-#endif
diff --git a/users/twschum/config.h b/users/twschum/config.h
deleted file mode 100644
index e69de29bb2..0000000000
--- a/users/twschum/config.h
+++ /dev/null
diff --git a/users/twschum/readme.md b/users/twschum/readme.md
deleted file mode 100644
index b354e4b79c..0000000000
--- a/users/twschum/readme.md
+++ /dev/null
@@ -1,14 +0,0 @@
-Copyright 2019 Tim Schumacher <twschum@gmail.com> @twschum
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
diff --git a/users/twschum/rules.mk b/users/twschum/rules.mk
deleted file mode 100644
index 9878e6f690..0000000000
--- a/users/twschum/rules.mk
+++ /dev/null
@@ -1,5 +0,0 @@
-SRC += twschum.c
-SRC += xtonhasvim.c
-ifeq ($(strip $(FLASH_BOOTLOADER)), yes)
- OPT_DEFS += -DFLASH_BOOTLOADER
-endif
diff --git a/users/twschum/twschum.c b/users/twschum/twschum.c
deleted file mode 100644
index f0ae1e65a9..0000000000
--- a/users/twschum/twschum.c
+++ /dev/null
@@ -1,256 +0,0 @@
-#include "twschum.h"
-
-#ifdef TWSCHUM_TAPPING_CTRL_PREFIX
-// state for the great state machine of custom actions!
-#define TIMEOUT_DELAY 200 // ms
-static uint16_t idle_timer;
-static bool timeout_is_active = false;
-
-static bool ctrl_shortcuts_enabled_g = false;
-//static bool B_down = 0; // TODO just use top bit from count
-//static int8_t B_count = 0;
-
-#define N_TAPPING_CTRL_KEYS 2
-static struct Tapping_ctrl_key_t special_keys_g[N_TAPPING_CTRL_KEYS] = {
- {false, 0, KC_B}, {false, 0, KC_A}
-};
-
-static inline void start_idle_timer(void) {
- idle_timer = timer_read();
- timeout_is_active = true;
-}
-static inline void clear_state_after_idle_timeout(void) {
- idle_timer = 0;
- timeout_is_active = false;
-
- // send timed out plain keys from tapping ctrl mod
- for (int i = 0; i < N_TAPPING_CTRL_KEYS; ++i) {
- struct Tapping_ctrl_key_t* key = special_keys_g + i;
- repeat_send_keys(key->count, key->keycode);
- key->count = 0;
- }
-}
-
-inline void matrix_scan_user(void) {
- if (timeout_is_active && timer_elapsed(idle_timer) > TIMEOUT_DELAY) {
- clear_state_after_idle_timeout();
- }
-}
-
-static inline bool tap_ctrl_event(struct Tapping_ctrl_key_t* key, keyrecord_t* record) {
- if (!ctrl_shortcuts_enabled_g) {
- // normal operation, just send the plain keycode
- if (record->event.pressed) {
- register_code(key->keycode);
- }
- else {
- unregister_code(key->keycode);
- }
- return false;
- }
- key->down = record->event.pressed;
- // increment count and reset timer when key pressed
- // start the timeout when released
- if (key->down) {
- ++(key->count);
- timeout_is_active = false;
- idle_timer = 0;
- }
- else {
- if (key->count) {
- start_idle_timer();
- }
- }
- return false;
-}
-
-static inline bool tap_ctrl_other_pressed(void) {
- for (int i = 0; i < N_TAPPING_CTRL_KEYS; ++i) {
- struct Tapping_ctrl_key_t* key = special_keys_g + i;
- if (key->count) {
- if (key->down) {
- // another key has been pressed while the leader key is down,
- // so send number of ctrl-KEY combos before the other key
- repeat_send_keys(key->count, KC_LCTL, key->keycode);
- key->count = 0;
- }
- else {
- // another key pressed after leader key released,
- // need to send the plain keycode plus potential mods
- if (get_mods() & MOD_MASK_CTRL) {
- // make sure to send a shift if prssed
- repeat_send_keys(key->count, KC_RSFT, key->keycode);
- }
- else {
- repeat_send_keys(key->count, key->keycode);
- }
- key->count = 0;
- }
- return true; // will send the other keycode
- }
- }
- return true; // safe default
-}
-#endif /* TWSCHUM_TAPPING_CTRL_PREFIX */
-
-
-/* Use RGB underglow to indicate layer
- * https://docs.qmk.fm/reference/customizing-functionality
- */
-#ifdef RGBLIGHT_ENABLE
-static bool rgb_layers_enabled = true;
-static bool rgb_L0_enabled = false;
-
-layer_state_t layer_state_set_user(layer_state_t state) {
- if (!rgb_layers_enabled) {
- return state;
- }
- switch (get_highest_layer(state)) {
- case _Base:
- if (rgb_L0_enabled) {
- rgblight_sethsv_noeeprom(_Base_HSV_ON);
- }
- else {
- rgblight_sethsv_noeeprom(_Base_HSV_OFF);
- }
- break;
- case _Vim:
- rgblight_sethsv_noeeprom(_Vim_HSV);
- break;
- case _Fn:
- rgblight_sethsv_noeeprom(_Fn_HSV);
- break;
- case _Nav:
- rgblight_sethsv_noeeprom(_Nav_HSV);
- break;
- case _Num:
- rgblight_sethsv_noeeprom(_Num_HSV);
- break;
- case _Cfg:
- rgblight_sethsv_noeeprom(_Cfg_HSV);
- break;
- case _None:
- rgblight_sethsv_noeeprom(_None_HSV);
- break;
- }
- return state;
-}
-#endif /* RGBLIGHT_ENABLE */
-
-/* process_record_vimlayer: handles the VIM_ keycodes from xtonhasvim's vim
- * emulation layer
- * add process_record_keymap to allow specific keymap to still add keys
- * Makes the callstack look like:
- * process_record_
- * _quantum
- * _kb
- * _user
- * _keymap
- * _vimlayer
- */
-__attribute__ ((weak))
-bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
- return true;
-}
-
-/* Return True to continue processing keycode, false to stop further processing
- * process_record_keymap to be call by process_record_user in the vim addon */
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-
- /* keymap gets first whack, then vimlayer */
- if(!process_record_keymap(keycode, record)) return false;
- if(!process_record_vimlayer(keycode, record)) return false;
-
- switch (keycode) {
- /* KC_MAKE is a keycode to be used with any keymap
- * Outputs `make <keyboard>:<keymap>`
- * Holding shift will add the appropriate flashing command (:dfu,
- * :teensy, :avrdude, :dfu-util) for a majority of keyboards.
- * Holding control will add some commands that will speed up compiling
- * time by processing multiple files at once
- * For the boards that lack a shift key, or that you want to always
- * attempt the flashing part, you can add FLASH_BOOTLOADER = yes to the
- * rules.mk of that keymap.
- */
- 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("make " QMK_KEYBOARD ":" QMK_KEYMAP);
- #ifndef FLASH_BOOTLOADER
- if ( (temp_mod | temp_osm) & MOD_MASK_SHIFT ) {
- SEND_STRING(":flash");
- }
- #endif
- if ( (temp_mod | temp_osm) & MOD_MASK_CTRL) {
- SEND_STRING(" -j8 --output-sync");
- }
- SEND_STRING(SS_TAP(X_ENTER));
- set_mods(temp_mod);
- }
- break;
-
- #ifdef RGBLIGHT_ENABLE
- case TG_LAYER_RGB:
- if (record->event.pressed) {
- rgb_layers_enabled = !rgb_layers_enabled;
- }
- return false;
- case TG_L0_RGB:
- if (record->event.pressed) {
- rgb_L0_enabled = !rgb_L0_enabled;
- }
- return false;
- #endif
-
- case SALT_CMD:
- if (!record->event.pressed) {
- SEND_STRING(SALT_CMD_MACRO);
- }
- return false;
- case LESS_PD:
- if (!record->event.pressed) {
- SEND_STRING(LESS_PD_MACRO);
- }
- return false;
- case CODE_PASTE:
- if (!record->event.pressed) {
- SEND_STRING(CODE_PASTE_MACRO);
- }
- return false;
-
- #ifdef TWSCHUM_TAPPING_CTRL_PREFIX
- case EN_CTRL_SHORTCUTS:
- if (record->event.pressed) {
- ctrl_shortcuts_enabled_g = !ctrl_shortcuts_enabled_g;
- start_idle_timer(); // need to clear out state in some cases
- }
- return false;
- case CTRL_A:
- return tap_ctrl_event(&special_keys_g[1], record);
- case CTRL_B:
- return tap_ctrl_event(&special_keys_g[0], record);
- default:
- if (record->event.pressed) {
- return tap_ctrl_other_pressed();
- }
- #endif
- }
- return true;
-}
-
-#ifdef RGBLIGHT_ENABLE
-void matrix_init_user(void) {
- // called once on board init
- rgblight_enable();
-}
-#endif
-
-void suspend_power_down_user(void) {
- // TODO shut off backlighting
-}
-
-void suspend_wakeup_init_user(void) {
- // TODO turn on backlighting
-}
diff --git a/users/twschum/twschum.h b/users/twschum/twschum.h
deleted file mode 100644
index e8c9aeffcd..0000000000
--- a/users/twschum/twschum.h
+++ /dev/null
@@ -1,131 +0,0 @@
-#pragma once
-#include <stdarg.h>
-#include "quantum.h"
-#include "xtonhasvim.h"
-
-/**************************
- * QMK Features Used
- **************************
- * RGBLIGHT_ENABLE
- * - Adds layer indication via RGB underglow
- * - see the `layer_definitions` enum and following _*_HSV #defines
- *
- *
- *
- **************************
- * Custom Feature Flags
- **************************
- *
- * TWSCHUM_TAPPING_CTRL_PREFIX
- * - Adds feature that makes sending nested sequences of C-a, C-b[, C-b, ...]
- * as simple as C-a b [b ...]
- * - Not necessarily super useful outside specialized nested tmux sessions,
- * but it was a fun state-machine to build
- *
- * TWSCHUM_VIM_LAYER
- * - Fork of xtonhasvim, adding vim-emulation
- *
- * TWSCHUM_IS_MAC
- * - Flag for handling media keys and other settings between OSX and Win/Unix
- * without having to include bootmagic
- *
- **************************
- * Features Wishlist
- **************************
- * use VIM_Q as macro recorder!
- * Dynamic macros
- * Leader functions
- * Uniicode leader commands??? (symbolic unicode)
- * Mac mode vs not: -probably bootmagic or use default with dynamic swap out here
- * KC_MFFD(KC_MEDIA_FAST_FORWARD) and KC_MRWD(KC_MEDIA_REWIND) instead of KC_MNXT and KC_MPRV
- */
-
-/* Each layer gets a color, overwritable per keyboard */
-enum layers_definitions {
- _Base,
- _Vim,
- _Fn,
- _Nav,
- _Num,
- _Cfg,
- _None,
-};
-#ifdef RGBLIGHT_ENABLE
-#define _Base_HSV_ON HSV_WHITE
-#define _Base_HSV_OFF 0, 0, 0
-#define _Vim_HSV HSV_ORANGE
-#define _Fn_HSV HSV_GREEN
-#define _Nav_HSV HSV_AZURE
-#define _Num_HSV HSV_GOLD
-#define _Cfg_HSV HSV_RED
-#define _None_HSV HSV_WHITE
-#endif
-
-enum extra_keycodes {
- TWSCHUM_START = VIM_SAFE_RANGE,
- KC_MAKE, // types the make command for this keyboard
-#ifdef TWSCHUM_TAPPING_CTRL_PREFIX
- CTRL_A,
- CTRL_B,
- EN_CTRL_SHORTCUTS,
-#endif
-#ifdef RGBLIGHT_ENABLE
- TG_LAYER_RGB, // Toggle between standard RGB underglow, and RGB underglow to do layer indication
- TG_L0_RGB, // Toggle color on or off of layer0
-#endif
- SALT_CMD, // macro
- LESS_PD, // macro
- CODE_PASTE, // macro
- KEYMAP_SAFE_RANGE, // range to start for the keymap
-};
-#define SALT_CMD_MACRO "sudo salt \\* cmd.run ''"SS_TAP(X_LEFT)
-#define LESS_PD_MACRO "sudo less /pipedream/cache/"
-// TODO mac vs linux
-#define CODE_PASTE_MACRO SS_LSFT("\n")"```"SS_LSFT("\n")SS_LALT("v")SS_LSFT("\n")"```"
-
-
-/* PP_NARG macro returns the number of arguments passed to it.
- * https://groups.google.com/forum/#!topic/comp.std.c/d-6Mj5Lko_s
- */
-#define PP_NARG(...) PP_NARG_(__VA_ARGS__,PP_RSEQ_N())
-#define PP_NARG_(...) PP_ARG_N(__VA_ARGS__)
-#define PP_MAX_ARGS 64
-#define PP_ARG_N( \
- _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,_33,_34,_35,_36,_37,_38,_39,_40, \
- _41,_42,_43,_44,_45,_46,_47,_48,_49,_50, \
- _51,_52,_53,_54,_55,_56,_57,_58,_59,_60, \
- _61,_62,_63,N,...) N
-#define PP_RSEQ_N() 63,62,61,60, \
- 59,58,57,56,55,54,53,52,51,50, \
- 49,48,47,46,45,44,43,42,41,40, \
- 39,38,37,36,35,34,33,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,0
-
-#define send_keys(...) send_n_keys(PP_NARG(__VA_ARGS__), __VA_ARGS__)
-static inline void send_n_keys(int n, ...) {
- uint8_t i = 0;
- uint16_t keycodes[PP_MAX_ARGS];
- va_list keys;
- va_start(keys, n);
- for (; i < n; ++i) {
- keycodes[i] = (uint16_t)va_arg(keys, int); // cast suppresses warning
- register_code(keycodes[i]);
- }
- for (; n > 0; --n) {
- unregister_code(keycodes[n-1]);
- }
- va_end(keys);
-}
-#define repeat_send_keys(n, ...) {for (int i=0; i < n; ++i) {send_keys(__VA_ARGS__);}}
-
-/* State functions for nested c-a & c-b leader keystrokes */
-struct Tapping_ctrl_key_t {
- bool down;
- int8_t count;
- const uint16_t keycode;
-};
diff --git a/users/twschum/xtonhasvim.c b/users/twschum/xtonhasvim.c
deleted file mode 100644
index 60f6fa1377..0000000000
--- a/users/twschum/xtonhasvim.c
+++ /dev/null
@@ -1,593 +0,0 @@
- /* Copyright 2015-2017 Christon DeWan *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "xtonhasvim.h"
-
-
-uint16_t vstate = VIM_START;
-static bool yank_was_lines = false;
-static bool SHIFTED = false;
-static uint32_t mod_override_layer_state = 0;
-static uint16_t mod_override_triggering_key = 0;
-
-static void edit(void) { vstate = VIM_START; layer_clear(); }
-#define EDIT edit()
-
-
-static void simple_movement(uint16_t keycode) {
- switch(keycode) {
- case VIM_B:
- register_code(KC_LALT);
- tap_code16(LSFT(KC_LEFT)); // select to start of this word
- unregister_code(KC_LALT);
- break;
- case VIM_E:
- register_code(KC_LALT);
- tap_code16(LSFT(KC_RIGHT)); // select to end of this word
- unregister_code(KC_LALT);
- break;
- case VIM_H:
- tap_code16(LSFT(KC_LEFT));
- break;
- case VIM_J:
- tap_code16(LGUI(KC_LEFT));
- tap_code16(LSFT(KC_DOWN));
- tap_code16(LSFT(KC_DOWN));
- break;
- case VIM_K:
- tap_code16(LGUI(KC_LEFT));
- tap_code(KC_DOWN);
- tap_code16(LSFT(KC_UP));
- tap_code16(LSFT(KC_UP));
- break;
- case VIM_L:
- tap_code16(LSFT(KC_RIGHT));
- break;
- case VIM_W:
- register_code(KC_LALT);
- tap_code16(LSFT(KC_RIGHT)); // select to end of this word
- tap_code16(LSFT(KC_RIGHT)); // select to end of next word
- tap_code16(LSFT(KC_LEFT)); // select to start of next word
- unregister_code(KC_LALT);
- break;
- }
-}
-
-static void comma_period(uint16_t keycode) {
- switch (keycode) {
- case VIM_COMMA:
- if (SHIFTED) {
- // indent
- tap_code16(LGUI(KC_LEFT_BRACKET));
- } else {
- // toggle comment
- tap_code16(LGUI(KC_SLASH));
- }
- break;
- case VIM_PERIOD:
- if (SHIFTED) {
- // outdent
- tap_code16(LGUI(KC_RIGHT_BRACKET));
- }
- break;
- }
-}
-
-
-bool process_record_vimlayer(uint16_t keycode, keyrecord_t *record) {
-
- /****** mod passthru *****/
- if(record->event.pressed && layer_state_is(vim_cmd_layer()) && (IS_MODIFIER_KEYCODE(keycode) || keycode == LSFT(KC_LALT))) {
- mod_override_layer_state = layer_state;
- mod_override_triggering_key = keycode;
- // TODO: change this to track key location instead
- layer_clear();
- return true; // let the event fall through...
- }
- if(mod_override_layer_state && !record->event.pressed && keycode == mod_override_triggering_key) {
- layer_state_set(mod_override_layer_state);
- mod_override_layer_state = 0;
- mod_override_triggering_key = 0;
- return true;
- }
-
- if (VIM_START <= keycode && keycode <= VIM_ESC) {
- if(keycode == VIM_SHIFT) {
- SHIFTED = record->event.pressed;
- return false;
- }
-
- if (record->event.pressed) {
- if(keycode == VIM_START) {
- // entry from anywhere
- layer_on(vim_cmd_layer());
- vstate = VIM_START;
-
- // reset state
- yank_was_lines = false;
- SHIFTED = false;
- mod_override_layer_state = 0;
- mod_override_triggering_key = 0;
-
- return false;
- }
- switch(vstate) {
- case VIM_START:
- switch(keycode){
- /*****************************
- * ground state
- *****************************/
- case VIM_A:
- if(SHIFTED) {
- // tap_code16(LGUI(KC_RIGHT));
- tap_code16(LCTL(KC_E));
- } else {
- tap_code(KC_RIGHT);
- }
- EDIT;
- break;
- case VIM_B:
- register_code(KC_LALT);
- register_code(KC_LEFT);
- break;
- case VIM_C:
- if(SHIFTED) {
- register_code(KC_LSFT);
- tap_code16(LGUI(KC_RIGHT));
- unregister_code(KC_LSFT);
- tap_code16(LGUI(KC_X));
- yank_was_lines = false;
- EDIT;
- } else {
- vstate = VIM_C;
- }
- break;
- case VIM_D:
- if(SHIFTED) {
- tap_code16(LCTL(KC_K));
- } else {
- vstate = VIM_D;
- }
- break;
- case VIM_E:
- register_code(KC_LALT);
- register_code(KC_RIGHT);
- break;
- case VIM_G:
- if(SHIFTED) {
- tap_code(KC_END);
- } else {
- vstate = VIM_G;
- }
- break;
- case VIM_H:
- register_code(KC_LEFT);
- break;
- case VIM_I:
- if(SHIFTED){
- tap_code16(LCTL(KC_A));
- }
- EDIT;
- break;
- case VIM_J:
- if(SHIFTED) {
- tap_code16(LGUI(KC_RIGHT));
- tap_code(KC_DEL);
- } else {
- register_code(KC_DOWN);
- }
- break;
- case VIM_K:
- register_code(KC_UP);
- break;
- case VIM_L:
- register_code(KC_RIGHT);
- break;
- case VIM_O:
- if(SHIFTED) {
- tap_code16(LGUI(KC_LEFT));
- tap_code(KC_ENTER);
- tap_code(KC_UP);
- EDIT;
- } else {
- tap_code16(LGUI(KC_RIGHT));
- tap_code(KC_ENTER);
- EDIT;
- }
- break;
- case VIM_P:
- if(SHIFTED) {
- tap_code16(LGUI(KC_LEFT));
- tap_code16(LGUI(KC_V));
- } else {
- if(yank_was_lines) {
- tap_code16(LGUI(KC_RIGHT));
- tap_code(KC_RIGHT);
- tap_code16(LGUI(KC_V));
- } else {
- tap_code16(LGUI(KC_V));
- }
- }
- break;
- case VIM_S:
- // s for substitute?
- if(SHIFTED) {
- tap_code16(LGUI(KC_LEFT));
- register_code(KC_LSFT);
- tap_code16(LGUI(KC_RIGHT));
- unregister_code(KC_LSFT);
- tap_code16(LGUI(KC_X));
- yank_was_lines = false;
- EDIT;
- } else {
- tap_code16(LSFT(KC_RIGHT));
- tap_code16(LGUI(KC_X));
- yank_was_lines = false;
- EDIT;
- }
- break;
- case VIM_U:
- if(SHIFTED) {
- register_code(KC_LSFT);
- tap_code16(LGUI(KC_Z));
- unregister_code(KC_LSFT);
- } else {
- tap_code16(LGUI(KC_Z));
- }
- break;
- case VIM_V:
- if(SHIFTED) {
- tap_code16(LGUI(KC_LEFT));
- tap_code16(LSFT(KC_DOWN));
- vstate = VIM_VS;
- } else {
- vstate = VIM_V;
- }
- break;
- case VIM_W:
- register_code(KC_LALT);
- tap_code(KC_RIGHT);
- tap_code(KC_RIGHT);
- tap_code(KC_LEFT);
- unregister_code(KC_LALT);
- break;
- case VIM_X:
- // tap_code16(LSFT(KC_RIGHT));
- // tap_code16(LGUI(KC_X));
- register_code(KC_DEL);
- break;
- case VIM_Y:
- if(SHIFTED) {
- tap_code16(LGUI(KC_LEFT));
- tap_code16(LSFT(KC_DOWN));
- tap_code16(LGUI(KC_C));
- tap_code(KC_RIGHT);
- yank_was_lines = true;
- } else {
- vstate = VIM_Y;
- }
- break;
- case VIM_COMMA:
- case VIM_PERIOD:
- comma_period(keycode);
- break;
- }
- break;
- case VIM_C:
- /*****************************
- * c- ...for change. I never use this...
- *****************************/
- switch(keycode) {
- case VIM_B:
- case VIM_E:
- case VIM_H:
- case VIM_J:
- case VIM_K:
- case VIM_L:
- case VIM_W:
- simple_movement(keycode);
- tap_code16(LGUI(KC_X));
- yank_was_lines = false;
- EDIT;
- break;
-
- case VIM_C:
- tap_code16(LGUI(KC_LEFT));
- register_code(KC_LSFT);
- tap_code16(LGUI(KC_RIGHT));
- unregister_code(KC_LSFT);
- tap_code16(LGUI(KC_X));
- yank_was_lines = false;
- EDIT;
- break;
- case VIM_I:
- vstate = VIM_CI;
- break;
- default:
- vstate = VIM_START;
- break;
- }
- break;
- case VIM_CI:
- /*****************************
- * ci- ...change inner word
- *****************************/
- switch(keycode) {
- case VIM_W:
- tap_code16(LALT(KC_LEFT));
- register_code(KC_LSFT);
- tap_code16(LALT(KC_RIGHT));
- unregister_code(KC_LSFT);
- tap_code16(LGUI(KC_X));
- yank_was_lines = false;
- EDIT;
- default:
- vstate = VIM_START;
- break;
- }
- break;
- case VIM_D:
- /*****************************
- * d- ...delete stuff
- *****************************/
- switch(keycode) {
- case VIM_B:
- case VIM_E:
- case VIM_H:
- case VIM_J:
- case VIM_K:
- case VIM_L:
- case VIM_W:
- simple_movement(keycode);
- tap_code16(LGUI(KC_X));
- yank_was_lines = false;
- vstate = VIM_START;
- break;
- case VIM_D:
- tap_code16(LGUI(KC_LEFT));
- tap_code16(LSFT(KC_DOWN));
- tap_code16(LGUI(KC_X));
- yank_was_lines = true;
- vstate = VIM_START;
- break;
- case VIM_I:
- vstate = VIM_DI;
- break;
- default:
- vstate = VIM_START;
- break;
- }
- break;
- case VIM_DI:
- /*****************************
- * ci- ...delete a word... FROM THE INSIDE!
- *****************************/
- switch(keycode) {
- case VIM_W:
- tap_code16(LALT(KC_LEFT));
- register_code(KC_LSFT);
- tap_code16(LALT(KC_RIGHT));
- unregister_code(KC_LSFT);
- tap_code16(LGUI(KC_X));
- yank_was_lines = false;
- vstate = VIM_START;
- default:
- vstate = VIM_START;
- break;
- }
- break;
- case VIM_V:
- /*****************************
- * visual!
- *****************************/
- switch(keycode) {
- case VIM_D:
- case VIM_X:
- tap_code16(LGUI(KC_X));
- yank_was_lines = false;
- vstate = VIM_START;
- break;
- case VIM_B:
- register_code(KC_LALT);
- register_code(KC_LSFT);
- register_code(KC_LEFT);
- // leave open for key repeat
- break;
- case VIM_E:
- register_code(KC_LALT);
- register_code(KC_LSFT);
- register_code(KC_RIGHT);
- // leave open for key repeat
- break;
- case VIM_H:
- register_code(KC_LSFT);
- register_code(KC_LEFT);
- break;
- case VIM_I:
- vstate = VIM_VI;
- break;
- case VIM_J:
- register_code(KC_LSFT);
- register_code(KC_DOWN);
- break;
- case VIM_K:
- register_code(KC_LSFT);
- register_code(KC_UP);
- break;
- case VIM_L:
- register_code(KC_LSFT);
- register_code(KC_RIGHT);
- break;
- case VIM_W:
- register_code(KC_LALT);
- tap_code16(LSFT(KC_RIGHT)); // select to end of this word
- tap_code16(LSFT(KC_RIGHT)); // select to end of next word
- tap_code16(LSFT(KC_LEFT)); // select to start of next word
- unregister_code(KC_LALT);
- break;
- case VIM_P:
- tap_code16(LGUI(KC_V));
- vstate = VIM_START;
- break;
- case VIM_Y:
- tap_code16(LGUI(KC_C));
- tap_code(KC_RIGHT);
- yank_was_lines = false;
- vstate = VIM_START;
- break;
- case VIM_V:
- case VIM_ESC:
- tap_code(KC_RIGHT);
- vstate = VIM_START;
- break;
- case VIM_COMMA:
- case VIM_PERIOD:
- comma_period(keycode);
- break;
- default:
- // do nothing
- break;
- }
- break;
- case VIM_VI:
- /*****************************
- * vi- ...select a word... FROM THE INSIDE!
- *****************************/
- switch(keycode) {
- case VIM_W:
- tap_code16(LALT(KC_LEFT));
- register_code(KC_LSFT);
- tap_code16(LALT(KC_RIGHT));
- unregister_code(KC_LSFT);
- vstate = VIM_V;
- default:
- // ignore
- vstate = VIM_V;
- break;
- }
- break;
- case VIM_VS:
- /*****************************
- * visual line
- *****************************/
- switch(keycode) {
- case VIM_D:
- case VIM_X:
- tap_code16(LGUI(KC_X));
- yank_was_lines = true;
- vstate = VIM_START;
- break;
- case VIM_J:
- register_code(KC_LSFT);
- register_code(KC_DOWN);
- break;
- case VIM_K:
- register_code(KC_LSFT);
- register_code(KC_UP);
- break;
- case VIM_Y:
- tap_code16(LGUI(KC_C));
- yank_was_lines = true;
- tap_code(KC_RIGHT);
- vstate = VIM_START;
- break;
- case VIM_P:
- tap_code16(LGUI(KC_V));
- vstate = VIM_START;
- break;
- case VIM_V:
- case VIM_ESC:
- tap_code(KC_RIGHT);
- vstate = VIM_START;
- break;
- case VIM_COMMA:
- case VIM_PERIOD:
- comma_period(keycode);
- break;
- default:
- // do nothing
- break;
- }
- break;
- case VIM_G:
- /*****************************
- * gg, and a grab-bag of other macros i find useful
- *****************************/
- switch(keycode) {
- case VIM_G:
- tap_code(KC_HOME);
- break;
- // codes b
- case VIM_H:
- tap_code16(LCTL(KC_A));
- break;
- case VIM_J:
- register_code(KC_PGDN);
- break;
- case VIM_K:
- register_code(KC_PGUP);
- break;
- case VIM_L:
- tap_code16(LCTL(KC_E));
- break;
- default:
- // do nothing
- break;
- }
- vstate = VIM_START;
- break;
- case VIM_Y:
- /*****************************
- * yoink!
- *****************************/
- switch(keycode) {
- case VIM_B:
- case VIM_E:
- case VIM_H:
- case VIM_J:
- case VIM_K:
- case VIM_L:
- case VIM_W:
- simple_movement(keycode);
- tap_code16(LGUI(KC_C));
- tap_code(KC_RIGHT);
- yank_was_lines = false;
- break;
- case VIM_Y:
- tap_code16(LGUI(KC_LEFT));
- tap_code16(LSFT(KC_DOWN));
- tap_code16(LGUI(KC_C));
- tap_code(KC_RIGHT);
- yank_was_lines = true;
- break;
- default:
- // NOTHING
- break;
- }
- vstate = VIM_START;
- break;
- }
- } else {
- /************************
- * key unregister_code events
- ************************/
- clear_keyboard();
- }
- return false;
- } else {
- return true;
- }
-}
-
diff --git a/users/twschum/xtonhasvim.h b/users/twschum/xtonhasvim.h
deleted file mode 100644
index fd9ebd4f03..0000000000
--- a/users/twschum/xtonhasvim.h
+++ /dev/null
@@ -1,62 +0,0 @@
- /* Copyright 2015-2017 Christon DeWan
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef USERSPACE
-#define USERSPACE
-
-#include QMK_KEYBOARD_H
-
-enum xtonhasvim_keycodes {
- VIM_START = SAFE_RANGE, // bookend for vim states
- VIM_A,
- VIM_B,
- VIM_C,
- VIM_CI,
- VIM_D,
- VIM_DI,
- VIM_E,
- VIM_H,
- VIM_G,
- VIM_I,
- VIM_J,
- VIM_K,
- VIM_L,
- VIM_O,
- VIM_P,
- VIM_S,
- VIM_U,
- VIM_V,
- VIM_VS, // visual-line
- VIM_VI,
- VIM_W,
- VIM_X,
- VIM_Y,
- VIM_PERIOD, // to support indent/outdent
- VIM_COMMA, // and toggle comments
- VIM_SHIFT, // avoid side-effect of supporting real shift.
- VIM_ESC, // bookend
- VIM_SAFE_RANGE // start other keycodes here.
-};
-
-bool process_record_vimlayer(uint16_t keycode, keyrecord_t *record);
-
-// NOTE: Define this in keymap.c to return vim layer
-extern uint8_t vim_cmd_layer(void);
-
-extern uint16_t vstate;
-
-
-#endif
diff --git a/users/uqs/config.h b/users/uqs/config.h
deleted file mode 100644
index 94e50d063b..0000000000
--- a/users/uqs/config.h
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2022 Ulrich Spörlein (@uqs)
-// SPDX-License-Identifier: GPL-2.0-or-later
-#pragma once
-
-#ifdef RGBLIGHT_ENABLE
-# define RGBLIGHT_SLEEP
-# define RGBLIGHT_LAYERS
-# define RGBLIGHT_MAX_LAYERS 8 // default is 16
-# define RGBLIGHT_DISABLE_KEYCODES // RGB_foo keys no longer work, saves 600 bytes
-# define RGBLIGHT_DEFAULT_HUE 15
-#endif
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 6 // default is 4 for VIA builds
-
-#define TAPPING_TOGGLE 2 // number of taps for a toggle-on-tap
-#define TAPPING_TERM 170 // ms to trigger tap
-// https://precondition.github.io/home-row-mods
-#define QUICK_TAP_TERM 0 // make tap-then-hold _not_ do key auto repeat
-#define PERMISSIVE_HOLD // I don't think this works for me, hence I rolled my own implementation.
-
-#define LEADER_TIMEOUT 400
-#define LEADER_PER_KEY_TIMING
-
-#define UNICODE_SELECTED_MODES UNICODE_MODE_LINUX
-
-// make KC_ACL0 et al work when held.
-#define MK_COMBINED
-#define MOUSEKEY_WHEEL_INTERVAL 40 // default is 50, lower means more scroll events, 40 works ok.
-
-// From https://michael.stapelberg.ch/posts/2021-05-08-keyboard-input-latency-qmk-kinesis/
-#define USB_POLLING_INTERVAL_MS 1
-
-#ifdef KEYBOARD_preonic_rev3
-// Some games seem to not register Esc otherwise when tapped, maybe try with this delay?
-# define TAP_CODE_DELAY 30
-#else
-# define TAP_CODE_DELAY 10
-#endif
diff --git a/users/uqs/rules.mk b/users/uqs/rules.mk
deleted file mode 100644
index 6050362952..0000000000
--- a/users/uqs/rules.mk
+++ /dev/null
@@ -1,24 +0,0 @@
-# don't include for keyboards/ploopyco/mouse/keymaps/uqs
-ifeq ($(filter $(strip $(KEYBOARD)),ploopyco/mouse),)
- SRC += uqs.c
-
- RGBLIGHT_ENABLE ?= yes # Enable keyboard RGB underglow
- LTO_ENABLE ?= yes # disables the legacy TMK Macros and Functions features
-
- UCIS_ENABLE = yes
- LEADER_ENABLE = yes
- COMBO_ENABLE = yes
- MOUSEKEY_ENABLE = yes
-
- # Disable all the unused stuff.
- SPACE_CADET_ENABLE = no
- COMMAND_ENABLE = no
- MAGIC_ENABLE = no
-endif
-
-# From https://michael.stapelberg.ch/posts/2021-05-08-keyboard-input-latency-qmk-kinesis/
-# adds about 900 bytes! Don't use it on puny AVR though.
-# ifeq (,$(filter $(MCU), atmega16u2 atmega32u2 at90usb162)) # doesn't work MCU not set yet
-ifneq (,$(filter $(KEYBOARD),ploopyco/mouse preonic/rev3))
- DEBOUNCE_TYPE = asym_eager_defer_pk
-endif
diff --git a/users/uqs/uqs.c b/users/uqs/uqs.c
deleted file mode 100644
index cd5e86bdcb..0000000000
--- a/users/uqs/uqs.c
+++ /dev/null
@@ -1,575 +0,0 @@
-// Copyright 2022 Ulrich Spörlein (@uqs)
-// SPDX-License-Identifier: GPL-2.0-or-later
-// vi:et sw=4:
-
-#include "uqs.h"
-
-// LOG:
-// late Jan 2020, got Ohkeycaps Dactyl Manuform 5x6
-// https://play.typeracer.com shows about 75-80wpm (en) or ~400cpm (de) on my classic keeb.
-// Never did proper touch typing, basically didn't use ring finger much, mostly index/middle and pinky (only to hold down modifiers, really).
-// Feb 2020, switching to Colemak DH after 30 years of Qwerty, uh oh...
-// mid Feb, 20wpm/87% on monkeytype.com (no punct, numbers)
-// early March, 28wpm/90% on MT (plus punct./numbers from here on); 25wpm on typeracer
-// early April, 35wpm/92% on MT; 41wpm on typeracer
-// early May, 45wpm/96% on MT; 46wpm on typeracer; my qwerty is deteriorating, I need to look at the keys more and more o_O
-// early June, 49wpm/95% on MT (sigh ...); 50wpm on typeracer;
-// early July, 50wpm/96% on MT (...); 52wpm/96% on typeracer;
-// early August, 55wpm/96% on MT; 55wpm/98% on typeracer;
-// early September, 57wpm/97% on MT; 58wpm/97% on typeracer;
-// early October, 59wpm/96% on MT; 61wpm/97% on typeracer;
-// November, 56wpm/97% on MT; 62wpm/98% on typeracer;
-// December, 62wpm/96% on MT; 66wpm/98% on typeracer;
-// January, 61wpm/97% on MT; 65wpm/98% on typeracer;
-// February, 64wpm/97% on MT; 67wpm/98% on typeracer; my qwerty on the laptop is still fine, but I miss my shortcuts badly.
-//
-// So that's one year on Colemak. Was it worth the switch? Probably not, though
-// I also had to first learn proper technique, but that was actually swift, as
-// the keyboard nicely forces that on you. I really like home row mods though,
-// they are so comfy. Need to rethink my combos some more, still.
-
-
-#ifdef RGBLIGHT_LAYERS
-layer_state_t default_layer_state_set_user(layer_state_t state) {
- rgblight_set_layer_state(L_QWER, layer_state_cmp(state, L_QWER));
- rgblight_set_layer_state(L_WASD, layer_state_cmp(state, L_WASD));
- rgblight_set_layer_state(L_COLM, layer_state_cmp(state, L_COLM));
- return state;
-}
-#endif
-
-layer_state_t layer_state_set_user(layer_state_t state) {
-#if 0
- // defining layer L_FUNC when both keys are pressed
- state = update_tri_layer_state(state, L_EXTD, L_NUM, L_FUNC);
-#endif
-#ifdef RGBLIGHT_LAYERS
- rgblight_set_layer_state(L_EXTD, layer_state_cmp(state, L_EXTD));
- rgblight_set_layer_state(L_NUM, layer_state_cmp(state, L_NUM));
- rgblight_set_layer_state(L_FUNC, layer_state_cmp(state, L_FUNC));
- rgblight_set_layer_state(L_MOUSE, layer_state_cmp(state, L_MOUSE));
-#else
-#endif
- return state;
-}
-
-#ifdef RGBLIGHT_LAYERS
-// NOTE: at most 2 elements, last one needs to be RGBLIGHT_END_SEGMENTS
-typedef rgblight_segment_t rgblight_layer_t[3];
-
-const rgblight_layer_t PROGMEM my_rgb_segments[] = {
- [L_QWER] = {{0, RGBLED_NUM, HSV_WHITE}, RGBLIGHT_END_SEGMENTS},
- [L_WASD] = {{0, RGBLED_NUM/2, HSV_RED}, {RGBLED_NUM/2, RGBLED_NUM/2, HSV_OFF}, RGBLIGHT_END_SEGMENTS},
- [L_COLM] = {{0, RGBLED_NUM, HSV_GREEN}, RGBLIGHT_END_SEGMENTS},
- [L_EXTD] = {{0, RGBLED_NUM, HSV_BLUE}, RGBLIGHT_END_SEGMENTS},
- [L_NUM] = {{0, RGBLED_NUM, HSV_ORANGE}, RGBLIGHT_END_SEGMENTS},
- [L_FUNC] = {{0, RGBLED_NUM, HSV_YELLOW}, RGBLIGHT_END_SEGMENTS},
- [L_MOUSE]= {{0, RGBLED_NUM, HSV_PURPLE}, RGBLIGHT_END_SEGMENTS},
-};
-
-// This array needs pointers, :/
-const rgblight_segment_t* const PROGMEM my_rgb_layers[] = {
- my_rgb_segments[L_QWER],
- my_rgb_segments[L_WASD],
- my_rgb_segments[L_COLM],
- my_rgb_segments[L_EXTD],
- my_rgb_segments[L_NUM],
- my_rgb_segments[L_FUNC],
- my_rgb_segments[L_MOUSE],
-};
-
-_Static_assert(ARRAY_SIZE(my_rgb_layers) ==
- ARRAY_SIZE(my_rgb_segments),
- "Number of rgb_segment definitions does not match up!");
-#endif
-
-#ifdef COMBO_ENABLE
-enum combo_events {
- C_AUML,
- C_OUML,
- C_UUML,
- C_SZ,
- C_CBR,
- C_PRN,
- C_BRC,
-};
-
-// Maybe use this?
-// #define COMBO_ONLY_FROM_LAYER L_COLM
-
-// The official way has way too much duplication and intermediate names for my taste...
-const uint16_t PROGMEM my_action_combos[][3] = {
- [C_AUML] = {KC_G_A, KC_W, COMBO_END},
- [C_OUML] = {KC_G_O, KC_Y, COMBO_END},
- [C_UUML] = {KC_C_N, KC_U, COMBO_END},
- [C_SZ] = {KC_S_S, KC_Z, COMBO_END},
- [C_CBR] = {KC_COLN, KC_LCBR, COMBO_END},
- [C_PRN] = {KC_LCBR, KC_LPRN, COMBO_END},
- [C_BRC] = {KC_LPRN, KC_LBRC, COMBO_END},
-};
-const uint16_t PROGMEM my_combos[][4] = {
- {KC_LPRN, KC_F, KC_P, COMBO_END},
- {KC_RPRN, KC_C, KC_D, COMBO_END},
- {KC_LCBR, KC_W, KC_F, COMBO_END},
- {KC_RCBR, KC_X, KC_C, COMBO_END},
- {KC_TAB, KC_G_A, KC_A_R, COMBO_END},
- {KC_BSLS, KC_B, KC_J, COMBO_END}, // remove this?
- {KC_BSLS, KC_F, KC_U, COMBO_END},
- {LSFT(KC_BSLS), KC_P, KC_L, COMBO_END},
- {KC_MINUS, KC_C_T, KC_C_N, COMBO_END},
- {LSFT(KC_MINUS), KC_D, KC_H, COMBO_END},
- {KC_GRV, KC_Q, KC_W, COMBO_END}, // remove this?
- {KC_GRV, KC_C, KC_COMM, COMBO_END},
- {LSFT(KC_GRV), KC_G, KC_M, COMBO_END},
- {KC_BTN3, KC_BTN1, KC_BTN2, COMBO_END},
- {KC_BTN1, KC_BTN2, KC_BTN3, COMBO_END},
-};
-
-#define MY_ACTION_COMBO(ck) \
- [ck] = { .keys = &(my_action_combos[ck][0]) }
-#define MY_COMBO(ck) \
- { .keys = &(my_combos[ck][1]), .keycode = my_combos[ck][0] }
-
-// NOTE: while my_combos can live in PROGMEM, the key_combos data also
-// contains state that is tweaked at runtime, so we need to indirect. Ugh.
-#define COMBO_STATICALLY
-#ifdef COMBO_STATICALLY
-// TODO: fill this at runtime with a loop?
-combo_t key_combos[] = {
- MY_ACTION_COMBO(0),
- MY_ACTION_COMBO(1),
- MY_ACTION_COMBO(2),
- MY_ACTION_COMBO(3),
- MY_ACTION_COMBO(4),
- MY_ACTION_COMBO(5),
- MY_ACTION_COMBO(6),
- MY_COMBO(0),
- MY_COMBO(1),
- MY_COMBO(2),
- MY_COMBO(3),
- MY_COMBO(4),
- MY_COMBO(5),
- MY_COMBO(6),
- MY_COMBO(7),
- MY_COMBO(8),
- MY_COMBO(9),
- MY_COMBO(10),
- MY_COMBO(11),
- MY_COMBO(12),
- MY_COMBO(13),
- MY_COMBO(14),
-};
-
-_Static_assert(ARRAY_SIZE(key_combos) ==
- (ARRAY_SIZE(my_action_combos) + ARRAY_SIZE(my_combos)),
- "Number of combo definitions does not match up!");
-#else
-combo_t key_combos[ARRAY_SIZE(my_action_combos) + ARRAY_SIZE(my_combos)];
-#endif
-
-void process_combo_event(uint16_t combo_index, bool pressed) {
- switch (combo_index) {
- case C_AUML:
- if (pressed) {
- tap_code16(KC_RALT);
- tap_code16(LSFT(KC_QUOT));
- tap_code16(KC_A);
- }
- break;
- case C_OUML:
- if (pressed) {
- tap_code16(KC_RALT);
- tap_code16(LSFT(KC_QUOT));
- tap_code16(KC_O);
- }
- break;
- case C_UUML:
- if (pressed) {
- tap_code16(KC_RALT);
- tap_code16(LSFT(KC_QUOT));
- tap_code16(KC_U);
- }
- break;
- case C_SZ:
- if (pressed) {
- tap_code16(KC_RALT);
- tap_code16(KC_S);
- tap_code16(KC_S);
- }
- break;
- case C_CBR:
- if (pressed) {
- tap_code16(KC_LCBR);
- tap_code16(KC_RCBR);
- tap_code16(KC_LEFT);
- }
- break;
- case C_PRN:
- if (pressed) {
- tap_code16(KC_LPRN);
- tap_code16(KC_RPRN);
- tap_code16(KC_LEFT);
- }
- break;
- case C_BRC:
- if (pressed) {
- tap_code16(KC_LBRC);
- tap_code16(KC_RBRC);
- tap_code16(KC_LEFT);
- }
- break;
- }
-}
-#endif
-
-void keyboard_post_init_user(void) {
-#ifndef KEYBOARD_preonic_rev3
- default_layer_set(1ul << L_COLM);
-#endif
-#ifdef RGBLIGHT_LAYERS
- // Enable the LED layers
- rgblight_layers = my_rgb_layers;
- rgblight_set_layer_state(0, true);
-#endif
-#if defined(COMBO_ENABLE) && !defined(COMBO_STATICALLY)
- uint8_t i = 0;
- for (; i < ARRAY_SIZE(my_action_combos); i++) {
- key_combos[i].keys = &(my_action_combos[i][0]);
- }
- for (uint8_t j = 0; j < ARRAY_SIZE(my_combos); j++, i++) {
- key_combos[i].keycode = my_combos[j][0];
- key_combos[i].keys = &(my_combos[j][1]);
- }
-#endif
-}
-
-uint16_t key_timer;
-bool delkey_registered;
-bool num_layer_was_used;
-bool extd_layer_was_used;
-// These keep state about the long-press-means-umlaut keys.
-bool auml_pressed;
-bool ouml_pressed;
-bool uuml_pressed;
-
-void maybe_send_umlaut(uint16_t keycode, bool *is_pressed) {
- // Some other key did _not_ already re-arm this key, so now we need to do
- // that ourselves.
- if (*is_pressed) {
- *is_pressed = false;
- // If released within the timer, then just KC_A, KC_O, KC_U
- if (timer_elapsed(key_timer) < TAPPING_TERM) {
- tap_code16(keycode);
- } else {
- tap_code16(KC_RALT);
- tap_code16(LSFT(KC_QUOT));
- tap_code16(keycode);
- }
- }
-}
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- // TODO: why not use key_timer here? is it dynamic or not?
- static uint16_t extd_layer_timer;
- if (layer_state_is(L_EXTD) && record->event.pressed) {
- extd_layer_was_used = true;
- }
- if (layer_state_is(L_NUM) && record->event.pressed) {
- num_layer_was_used = true;
- }
-
- // An umlaut key was pressed previously (but will only emit the key on
- // release), but we've pressed a different key now, so fire the regular key,
- // re-arm it and continue with whatever actual key was pressed just now.
- if (record->event.pressed) {
- if (auml_pressed) {
- tap_code16(KC_A);
- auml_pressed = false;
- }
- if (ouml_pressed) {
- tap_code16(KC_O);
- ouml_pressed = false;
- }
- if (uuml_pressed) {
- tap_code16(KC_U);
- uuml_pressed = false;
- }
- }
-
- switch (keycode) {
- // From https://github.com/qmk/qmk_firmware/issues/6053
- case LT_EXTD_ESC:
- if (record->event.pressed) {
- extd_layer_was_used = false;
- extd_layer_timer = timer_read();
- layer_on(L_EXTD);
- } else {
- layer_off(L_EXTD);
- unregister_mods(MOD_BIT(KC_LALT)); // undo what ALT_TAB might've set
- // NOTE: need to track whether we made use of the extd layer and
- // that all happened within the tapping term. Otherwise we'd emit
- // that layer key code _plus_ an extra Esc.
- if (timer_elapsed(extd_layer_timer) < TAPPING_TERM && !extd_layer_was_used) {
- tap_code(KC_ESC);
- }
- }
- return true;
- case LT_NUM_BSPC:
- if (record->event.pressed){
- num_layer_was_used = false;
- extd_layer_timer = timer_read();
- layer_on(L_NUM);
- } else {
- layer_off(L_NUM);
- // NOTE: Custom LT method so that any press of a key on that layer will prevent the backspace.
- if (timer_elapsed(extd_layer_timer) < TAPPING_TERM && !num_layer_was_used) {
- tap_code(KC_BSPC);
- }
- }
- return true;
- case LT_MOUSE_ALT_SHIFT_INS:
- if (record->event.pressed) {
- key_timer = timer_read();
- layer_on(L_MOUSE);
- } else {
- layer_off(L_MOUSE);
- if (timer_elapsed(key_timer) < TAPPING_TERM) {
- tap_code16(LALT(LSFT(KC_INS)));
- }
- }
- return true;
- case LT_FUNC_SHIFT_INS:
- if (record->event.pressed) {
- key_timer = timer_read();
- layer_on(L_FUNC);
- } else {
- layer_off(L_FUNC);
- if (timer_elapsed(key_timer) < TAPPING_TERM) {
- tap_code16(LSFT(KC_INS));
- }
- }
- return true;
-#if 1
- /* Looks like PERMISSIVE_HOLD on LT and OSM doesn't work properly. This
- * is probaby https://github.com/qmk/qmk_firmware/issues/8971
- */
- case OSM_GUI:
- /* OSM(MOD_LGUI) is delaying the event, but I need immediate triggering
- * of the modifier to move windows around with the mouse. If only
- * tapped, however, have it be a win OSM */
- if (record->event.pressed) {
- key_timer = timer_read();
- register_mods(MOD_BIT(KC_LGUI));
- } else {
- unregister_mods(MOD_BIT(KC_LGUI));
- if (timer_elapsed(key_timer) < TAPPING_TERM) {
- add_oneshot_mods(MOD_BIT(KC_LGUI));
- } else {
- del_oneshot_mods(MOD_BIT(KC_LGUI));
- }
- }
- return true;
- // Why do I have to roll my own? It seems the original ones work on
- // keyrelease, at which time I might have let go of the layer tap
- // already, so I cannot roll them fast...
- case OSM_SFT:
- if (record->event.pressed) {
- key_timer = timer_read();
- register_mods(MOD_BIT(KC_LSFT));
- } else {
- unregister_mods(MOD_BIT(KC_LSFT));
- if (timer_elapsed(key_timer) < TAPPING_TERM) {
- add_oneshot_mods(MOD_BIT(KC_LSFT));
- } /*else {
- del_oneshot_mods(MOD_BIT(KC_LSFT));
- }*/
- }
- return true;
- case OSM_CTL:
- if (record->event.pressed) {
- key_timer = timer_read();
- register_mods(MOD_BIT(KC_LCTL));
- } else {
- unregister_mods(MOD_BIT(KC_LCTL));
- if (timer_elapsed(key_timer) < TAPPING_TERM) {
- add_oneshot_mods(MOD_BIT(KC_LCTL));
- } /*else {
- del_oneshot_mods(MOD_BIT(KC_LCTL));
- }*/
- }
- return true;
- case OSM_ALT:
- if (record->event.pressed) {
- key_timer = timer_read();
- register_mods(MOD_BIT(KC_LALT));
- } else {
- unregister_mods(MOD_BIT(KC_LALT));
- if (timer_elapsed(key_timer) < TAPPING_TERM) {
- add_oneshot_mods(MOD_BIT(KC_LALT));
- } /*else {
- del_oneshot_mods(MOD_BIT(KC_LALT));
- }*/
- }
- return true;
-#else
-#define OSM_ALT OSM(MOD_LALT)
-#define OSM_CTL OSM(MOD_LCTL)
-#define OSM_GUI OSM(MOD_LGUI)
-#define OSM_SFT OSM(MOD_LSFT)
-#endif
- // Obsoleted by using combos for umlauts now.
- case KC_A_AE:
- if (record->event.pressed) {
- key_timer = timer_read();
- auml_pressed = true;
- } else {
- maybe_send_umlaut(KC_A, &auml_pressed);
- }
- break;
- case KC_O_OE:
- if (record->event.pressed) {
- key_timer = timer_read();
- ouml_pressed = true;
- } else {
- maybe_send_umlaut(KC_O, &ouml_pressed);
- }
- break;
- case KC_U_UE:
- if (record->event.pressed) {
- key_timer = timer_read();
- uuml_pressed = true;
- } else {
- maybe_send_umlaut(KC_U, &uuml_pressed);
- }
- break;
- case MINS_UNDSCR:
- if (record->event.pressed) {
- key_timer = timer_read();
- } else {
- if (timer_elapsed(key_timer) < TAPPING_TERM) {
- // Can't send KC_KP_MINUS, it doesn't compose to, say →
- tap_code16(KC_MINUS);
- } else {
- tap_code16(KC_UNDERSCORE);
- }
- }
- break;
- case ALT_TAB:
- if (record->event.pressed) {
- register_mods(MOD_BIT(KC_LALT));
- tap_code16(KC_TAB);
- }
- break;
- case INS_HARD:
- // Do Alt-Shift-Ins first to have xdotool copy from SELECTION to CLIPBOARD, then Shift-Ins to paste.
- if (record->event.pressed) {
- tap_code16(LSFT(LALT(KC_INS)));
- } else {
- tap_code16(LSFT(KC_INS));
- }
- break;
- case SHIFT_INS:
- if (record->event.pressed) {
- // when keycode is pressed
- key_timer = timer_read();
- // Shift when held ...
- register_mods(MOD_BIT(KC_RSFT));
- } else {
- // If released within the timer, then Shift+Ins
- if (timer_elapsed(key_timer) < TAPPING_TERM) {
- tap_code16(KC_INS);
- }
- unregister_mods(MOD_BIT(KC_RSFT));
- }
- break;
- case ALT_SHIFT_INS:
- if (record->event.pressed) {
- key_timer = timer_read();
- // Shift when held ...
- register_mods(MOD_BIT(KC_LSFT));
- } else {
- // If released within the timer, then Shift+Alt+Ins
- if (timer_elapsed(key_timer) < TAPPING_TERM) {
- register_mods(MOD_BIT(KC_LALT));
- tap_code16(KC_INS);
- }
- // Note: this makes xev(1) see KeyPress for Meta_L but KeyRelease for Alt_L
- unregister_mods(MOD_BIT(KC_LSFT) | MOD_BIT(KC_LALT));
- }
- break;
-/*
- * Obsoleted by making tmux understand Ctrl-(Shift)-Tab natively.
- case TM_NEXT:
- if (record->event.pressed) SEND_STRING(SS_LCTL("a") "n");
- break;
- case TM_PREV:
- if (record->event.pressed) SEND_STRING(SS_LCTL("a") "p");
- break;
-*/
- // TODO: use key overrides to turn, e.g. Win+Ctrl-Tab into VIM_NEXT.
- // Not sure why Ctrl-Pgup works in vim, but not in vim-inside-tmux.
- case VIM_NEXT:
- if (record->event.pressed) SEND_STRING(SS_TAP(X_ESC) SS_TAP(X_G) SS_TAP(X_T));
- break;
- case VIM_PREV:
- if (record->event.pressed) SEND_STRING(SS_TAP(X_ESC) SS_TAP(X_G) SS_LSFT("t"));
- break;
- case WIN_LEFT:
- if (record->event.pressed) SEND_STRING(SS_LCTL("w") SS_TAP(X_H));
- break;
- case WIN_DN:
- if (record->event.pressed) SEND_STRING(SS_LCTL("w") SS_TAP(X_J));
- break;
- case WIN_UP:
- if (record->event.pressed) SEND_STRING(SS_LCTL("w") SS_TAP(X_K));
- break;
- case WIN_RGHT:
- if (record->event.pressed) SEND_STRING(SS_LCTL("w") SS_TAP(X_L));
- break;
- }
-
- return true;
-}
-
-#ifdef LEADER_ENABLE
-void leader_end_user(void) {
-#ifdef UCIS_ENABLE
- if (leader_sequence_one_key(KC_U)) {
- ucis_start();
- }
-#endif
- if (leader_sequence_one_key(KC_H)) {
- send_unicode_string("ᕕ( ᐛ )ᕗ"); // happy
- }
- if (leader_sequence_one_key(KC_D)) {
- send_unicode_string("ಠ_ಠ"); // disapproval
- }
- if (leader_sequence_one_key(KC_L)) {
- send_unicode_string("( ͡° ͜ʖ ͡°)"); // lenny
- }
- if (leader_sequence_one_key(KC_S)) {
- send_unicode_string("¯\\_(ツ)_/¯"); // shrug
- }
- // tableflip (LEADER - TF)
- if (leader_sequence_two_keys(KC_T, KC_F)) {
- //set_unicode_input_mode(UNICODE_MODE_LINUX);
- //send_unicode_hex_string("0028 30CE 0CA0 75CA 0CA0 0029 30CE 5F61 253B 2501 253B");
- send_unicode_string("(╯°□°)╯︵ ┻━┻");
- }
- // untableflip
- if (leader_sequence_three_keys(KC_U, KC_T, KC_F)) {
- //set_unicode_input_mode(UNICODE_MODE_LINUX);
- //send_unicode_hex_string("0028 30CE 0CA0 75CA 0CA0 0029 30CE 5F61 253B 2501 253B");
- send_unicode_string("┬─┬ノ( º _ ºノ)");
- }
-}
-#endif
-
-#ifdef UCIS_ENABLE
-// 3 codepoints at most, otherwise increase UCIS_MAX_CODE_POINTS
-const ucis_symbol_t ucis_symbol_table[] = UCIS_TABLE(
- UCIS_SYM("poop", 0x1F4A9), // 💩
- UCIS_SYM("rofl", 0x1F923), // 🤣
- UCIS_SYM("look", 0x0CA0, 0x005F, 0x0CA0) // ಠ_ಠ
-);
-#endif
diff --git a/users/uqs/uqs.h b/users/uqs/uqs.h
deleted file mode 100644
index b5026e5b59..0000000000
--- a/users/uqs/uqs.h
+++ /dev/null
@@ -1,77 +0,0 @@
-// Copyright 2022 Ulrich Spörlein (@uqs)
-// SPDX-License-Identifier: GPL-2.0-or-later
-// vi:et sw=4:
-#pragma once
-
-#include QMK_KEYBOARD_H
-
-enum layers {
- L_QWER = 0,
- L_WASD, // wasd gaming
- L_COLM, // Colemak DHm
- L_EXTD,
- L_NUM,
- L_FUNC,
- L_MOUSE,
- L_LAST, // unused
-};
-
-#ifdef VIA_ENABLE
-_Static_assert(DYNAMIC_KEYMAP_LAYER_COUNT >= L_LAST, "VIA enabled, but not enough DYNAMIC_KEYMAP_LAYER_COUNT for all layers");
-#endif
-
-#define KC_CTAB LCTL(KC_TAB)
-#define KC_SCTAB LCTL(LSFT(KC_TAB))
-
-// Custom single-key codes, see uqs.c for the combos.
-enum custom_keycodes {
- SHIFT_INS = SAFE_RANGE,
- ALT_SHIFT_INS,
- INS_HARD,
- KC_A_AE,
- KC_O_OE,
- KC_U_UE,
- MINS_UNDSCR, // obsoleted by combos, remove this!
- TM_NEXT,
- TM_PREV,
- VIM_NEXT,
- VIM_PREV,
- WIN_LEFT,
- WIN_RGHT,
- WIN_UP,
- WIN_DN,
- LT_EXTD_ESC,
- LT_NUM_BSPC,
- LT_MOUSE_ALT_SHIFT_INS,
- LT_FUNC_SHIFT_INS,
- OSM_GUI,
- OSM_SFT,
- OSM_CTL,
- OSM_ALT,
- ALT_TAB,
-};
-
-#ifndef LEADER_ENABLE
-#define QK_LEAD KC_NO
-#endif
-
-// Shorter names
-#define MS_WHDN KC_MS_WH_DOWN
-#define MS_WHUP KC_MS_WH_UP
-#define MS_WHLEFT KC_MS_WH_LEFT
-#define MS_WHRGHT KC_MS_WH_RIGHT
-
-// GASC/◆⎇⇧⎈ home row mod, read all about it here:
-// https://precondition.github.io/home-row-mods
-// Left-hand home row mods
-#define KC_G_A LGUI_T(KC_A)
-#define KC_A_R LALT_T(KC_R)
-#define KC_S_S LSFT_T(KC_S)
-#define KC_C_T LCTL_T(KC_T)
-
-// Right-hand home row mods
-#define KC_C_N RCTL_T(KC_N)
-#define KC_S_E RSFT_T(KC_E)
-#define KC_A_I LALT_T(KC_I) // RALT is special, it's AltGr and my compose key under Win (layout UScmpse) and *nix (setxkbmap -option compose:ralt)
-#define KC_G_O RGUI_T(KC_O)
-
diff --git a/users/vitoni/readme.adoc b/users/vitoni/readme.adoc
deleted file mode 100644
index acf65793d2..0000000000
--- a/users/vitoni/readme.adoc
+++ /dev/null
@@ -1,16 +0,0 @@
-= User functions
-
-Functions are mostly related to changing the RGB lights depending on user interaction and when idling.
-
-== utils.h
-
-Common functions are declared in link:utils.h[]. These function are not directly RGB related but used to modify state and calculate values.
-
-== rgb_matrix_effects.h
-
-Functions in link:rgb_matrix_effects.h[] make use of common function in `utils.h` and are used to create to RGB matrix effects such as fading or breathing.
-
-== vitoni.h
-
-The functions declared in link:vitoni.h[] are used as entry points for usage of RGB effects.
-One entry point is `matrix_scan` based for regular task while the other is `process_record` based for user activity tasks.
diff --git a/users/vitoni/rgb_matrix_effects.c b/users/vitoni/rgb_matrix_effects.c
deleted file mode 100644
index 3a13e99bc7..0000000000
--- a/users/vitoni/rgb_matrix_effects.c
+++ /dev/null
@@ -1,236 +0,0 @@
-// Copyright 2021 Victor Toni (@vitoni)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#include "rgb_matrix_effects.h"
-
-#include <rgb_matrix.h>
-#include <lib/lib8tion/lib8tion.h>
-
-#include "utils.h"
-
-/*
- Offset used to start at the right point in th curve to avoid big jumps in brightness
- 0 => 0% (signed) => 50% (unsigned)
- 64 => 100% (signed) => 100% (unsigned)
- 128 => 0% (signed) => 50% (unsigned)
- 192 => -100% (signed) => 0% (unsigned)
-*/
-enum PHASE {
- PHASE_ZERO_RAISING
- ,PHASE_HIGH
- ,PHASE_ZERO_FALLING
- ,PHASE_LOW
-};
-
-/**
- * @brief Calculates the offset so that a specific time is aligned to a specific point in the sine curve.
- * @param[in] time The time for which the offset shopuld be calculated.
- * @param[in] phase Phase which should be reached with the offset
- * @see PHASE
- */
-uint8_t offset_for_time(const uint8_t time, const uint8_t phase) {
- switch (phase) {
- case PHASE_ZERO_RAISING:
- return 0 - time;
- case PHASE_HIGH:
- return 64 - time;
- case PHASE_ZERO_FALLING:
- return 128 - time;
- case PHASE_LOW:
- return 192 - time;
- default:
- return 0;
- }
-}
-
-/**
- * @brief Scales down `g_rgb_timer` so that it can be used for RGB effects.
- * @return scaled down timer
- * @see rgb_time_2_scale_w_factor()
- */
-uint8_t rgb_time_2_scale(void) {
- static const uint8_t factor = 1;
- return rgb_time_2_scale_w_factor(factor);
-}
-
-/*
- * Used to slow down RGB speed.
- */
-static const uint8_t rgb_speed_divisor = 8;
-
-/**
- * @brief Scales down `g_rgb_timer` so that it can be used for RGB effects.
- * @details Usually these calculations aredone internally by some RGB effects.
- This method exposed to scaling so that all effects to have same timebase. If `rgb_matrix_config.speed` all effects are affected the same.
- * @param[in] factor The factor can be used to speed up some operations in relation to others.
- * @return scaled down timer taking into account the given factor
- * @see g_rgb_timer
- * @see rgb_matrix_config.speed
- */
-uint8_t rgb_time_2_scale_w_factor(const uint8_t rgb_speed_factor) {
- const uint8_t scaled_time = scale16by8(g_rgb_timer, rgb_matrix_config.speed * rgb_speed_factor / rgb_speed_divisor);
-
- return scaled_time;
-}
-
-/**
- * @brief Inverse function to calculate time required to execute `timer` steps.
- * @details This method allows calculation of the time needed to execute N `timer`steps.
- Usefull when using a scaled down time but requiring the time needed to perform these steps.
- * @param[in] scaled_time scaled down timer to inverse to time
- * @return time corresponding to scaled down time
- * @see rgb_time_2_scale()
- */
-uint16_t scale_2_rgb_time(const uint8_t scaled_time) {
- const uint16_t time = scaled_time * rgb_speed_divisor * UINT8_MAX / rgb_matrix_config.speed;
-
- return time;
-}
-
-bool fade_in_ranged(const uint8_t time, const uint8_t range_min, const uint8_t range_max) {
- static const uint8_t max_delta = 1;
- return scaled_sin_up(time, range_min, range_max, max_delta, &(rgb_matrix_config.hsv.v));
-}
-
-bool fade_out_ranged(const uint8_t time, const uint8_t range_min, const uint8_t range_max) {
- static const uint8_t max_delta = 1;
- return scaled_sin_down(time, range_min, range_max, max_delta, &(rgb_matrix_config.hsv.v));
-}
-
-/**
- * @brief Convenience method to eventually skip the value part when setting HSV.
- * @details When setting HSV this includes the value/brightness.
- As changing brightness might interfer with fading or breathing effects,
- this method can skip the value part of HSV (depending on the preprocessor flag: RGB_FADE_IN).
- * @param[in] hue Hue
- * @param[in] sat Saturation
- * @param[in] hue Value (brightness)
- * @see rgb_matrix_sethsv_noeeprom()
- */
-void rgb_matrix_sethsv_noeeprom_user(const uint16_t hue, const uint8_t sat, const uint8_t val) {
-#if defined(RGB_FADE_IN) || defined(RGB_IDLE_TIMEOUT)
- rgb_matrix_config.hsv.h = hue;
- rgb_matrix_config.hsv.s = sat;
- // omitting setting the value to avoid interfering with effects
-// rgb_matrix_config.hsv.v = val;
-#else
- rgb_matrix_sethsv_noeeprom(hue, sat, val);
-#endif
-}
-
-#if defined(RGB_FADE_IN) || defined(RGB_IDLE_TIMEOUT)
-/**
- * @brief Calculates the time offset required by fade in.
- * @details Using an arbitrary timer any point on the sine curve might be pointed to.
- * The offest is calculated so that
- * a) the point is at the lowest point in the curve and the curve is raising
- * b) the point is near the current brightness (eg. fade in might be called while fading out and the lowest value has not yet been reached).
- * @param[in] time Current time usually represented by (usually scaled) timer
- * @return Offset required so that time matches the current brightness
- */
-uint8_t calc_fade_in_offset(const uint8_t time) {
- static const uint8_t max_steps = UINT8_MAX/2;
- static const uint8_t range_min = 0;
- static const uint8_t range_max = RGB_MATRIX_MAXIMUM_BRIGHTNESS;
-
- // start at the right point in the sine curve
- uint8_t time_offset = offset_for_time(time, PHASE_LOW);
-
- // find the right offset to match the current brightness
- for (int i = 1; i < max_steps; i++) {
- const uint8_t value = scaled_sin(time + time_offset + 1, range_min, range_max);
- if (in_range(value, range_min, range_max) && value < rgb_matrix_config.hsv.v) {
- time_offset++;
- } else {
- break;
- }
- }
-
- return time_offset;
-}
-
-/**
- * @brief Increases value/brightness until reaching RGB_MATRIX_MAXIMUM_BRIGHTNESS based on given timer.
- * @param[in] time A (usually scaled) timer
- * @return Returns `true` if RGB_MATRIX_MAXIMUM_BRIGHTNESS has been reached, `false` otherwise.
- */
-bool fade_in(const uint8_t time) {
- static const uint8_t range_min = 0;
- static const uint8_t range_max = RGB_MATRIX_MAXIMUM_BRIGHTNESS;
-
- return fade_in_ranged(time, range_min, range_max);
-}
-#endif
-
-#if defined(RGB_DISABLE_WITH_FADE_OUT) || defined(RGB_IDLE_TIMEOUT)
-/**
- * @brief Calculates the time offset required by fade out.
- * @details Using an arbitrary timer any point on the Sinus curve might be pointed to.
- * The offest is calculated so that
- * a) the point is at the highest point in the curve and the curve is failing
- * b) the point is near the current brightness (eg. fade out might be called while on breath effect).
- * @param[in] time Current time usually represented by a(usually scaled) timer
- * @return Offset required so that time matches the current brightness
- */
-uint8_t calc_fade_out_offset(const uint8_t time) {
- static const uint8_t range_min = 0;
- static const uint8_t range_max = RGB_MATRIX_MAXIMUM_BRIGHTNESS;
-
- // start at the right point in the sin() curve
- uint8_t time_offset = offset_for_time(time, PHASE_HIGH);
-
- // find the right offset to match the current brightness
- for (int i = 1; i < 127; i++) {
- const uint8_t value = scaled_sin(time + time_offset + 1, range_min, range_max);
- if (in_range(value, range_min, range_max) && rgb_matrix_config.hsv.v < value) {
- time_offset++;
- } else {
- break;
- }
- }
-
- return time_offset;
-}
-#endif
-
-#if defined(RGB_DISABLE_WITH_FADE_OUT)
-/**
- * @brief Decreases value/brightness until reaching 0 based on given timer.
- * @param[in] time A (usually scaled) timer
- * @return Returns `true` if 0 has been reached, `false` otherwise.
- */
-bool fade_out(const uint8_t time) {
- static const uint8_t range_min = 0;
- static const uint8_t range_max = RGB_MATRIX_MAXIMUM_BRIGHTNESS;
-
- return fade_out_ranged(time, range_min, range_max);
-}
-#endif
-
-#if defined(RGB_IDLE_TIMEOUT)
-/**
- * @brief Decreases value/brightness until reaching `RGB_IDLE_MINIMUM_BRIGHTNESS` based on given timer.
- * @param[in] time A (usually scaled) timer
- * @return Returns `true` if `RGB_IDLE_MINIMUM_BRIGHTNESS` has been reached, `false` otherwise.
- */
-bool idle_fade_out(const uint8_t time) {
- static const uint8_t range_min = RGB_IDLE_MINIMUM_BRIGHTNESS;
- static const uint8_t range_max = RGB_MATRIX_MAXIMUM_BRIGHTNESS;
-
- return fade_out_ranged(time, range_min, range_max);
-}
-
-#if defined(RGB_IDLE_BREATHE)
-/**
- * @brief Changes value/brightness to create a breathing effect based on given timer.
- * @details Brightness will breathe in the range starting from `RGB_IDLE_MINIMUM_BRIGHTNESS` to `RGB_IDLE_MAXIMUM_BRIGHTNESS`.
- * @param[in] time A (usually scaled) timer
- */
-void idle_breathe(const uint8_t time) {
- static const uint8_t range_min = RGB_IDLE_MINIMUM_BRIGHTNESS;
- static const uint8_t range_max = RGB_IDLE_MAXIMUM_BRIGHTNESS;
-
- rgb_matrix_config.hsv.v = scaled_sin(time, range_min, range_max);
-}
-#endif // RGB_IDLE_BREATHE
-#endif // RGB_IDLE_TIMEOUT
diff --git a/users/vitoni/rgb_matrix_effects.h b/users/vitoni/rgb_matrix_effects.h
deleted file mode 100644
index c3234b159b..0000000000
--- a/users/vitoni/rgb_matrix_effects.h
+++ /dev/null
@@ -1,174 +0,0 @@
-// Copyright 2021 Victor Toni (@vitoni)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#pragma once
-
-#include <stdint.h>
-#include <stdbool.h>
-
-/**
- * States reflecting the state of the keyboard.
- * Dependeing on these states various effects can set for the RGB matrix.
- */
-enum states {
- REGULAR //!< when in regular use
-#if defined(RGB_IDLE_TIMEOUT)
- ,IDLE_FADE_OUT //!< when started idling
- ,IDLE //!< when idling
-#endif
-#if defined(RGB_FADE_IN) || defined(RGB_IDLE_TIMEOUT)
- ,FADE_IN //!< when starting initially or before going back to REGULAR
-#endif
-#if defined(RGB_DISABLE_WITH_FADE_OUT)
- ,FADE_OUT //!< before supending
-#endif
- ,SUSPENDED //!< expecting to be suspended by RGB_MATRIX_TIMEOUT any time
-};
-
-/**
- * @brief Scales down `g_rgb_timer` so that it can be used for RGB effects.
- * @details Usually these calculations aredone internally by some RGB effects.
- This method exposed to scaling so that all effects to have same timebase. If `rgb_matrix_config.speed` all effects are affected the same.
- * @param[in] factor The factor can be used to speed up some operations in relation to others.
- * @return scaled down timer taking into account the given factor
- * @see g_rgb_timer
- * @see rgb_matrix_config.speed
- */
-uint8_t rgb_time_2_scale_w_factor(const uint8_t factor);
-
-/**
- * @brief Scales down `g_rgb_timer` so that it can be used for RGB effects.
- * @return scaled down timer
- * @see rgb_time_2_scale_w_factor()
- */
-uint8_t rgb_time_2_scale(void);
-
-/**
- * @brief Inverse function to calculate time required to execute `timer` steps.
- * @details This method allows calculation of the time needed to execute N `timer`steps.
- Usefull when using a scaled down time but requiring the time needed to perform these steps.
- * @param[in] scaled_time scaled down timer to inverse to time
- * @return time corresponding to scaled down time
- * @see rgb_time_2_scale()
- */
-uint16_t scale_2_rgb_time(const uint8_t scaled_time);
-
-/**
- * @brief Convenience method to eventually skip the value part when setting HSV.
- * @details When setting HSV this includes the value/brightness.
- As changing brightness might interfer with fading or breathing effects,
- this method can skip the value part of HSV (depending on the preprocessor flag: RGB_FADE_IN).
- * @param[in] hue Hue
- * @param[in] sat Saturation
- * @param[in] hue Value (brightness)
- * @see rgb_matrix_sethsv_noeeprom()
- */
-void rgb_matrix_sethsv_noeeprom_user(const uint16_t hue, const uint8_t sat, const uint8_t val);
-
-#if defined(RGB_FADE_IN) || defined(RGB_DISABLE_WITH_FADE_OUT) || defined(RGB_IDLE_TIMEOUT)
-# if defined(RGB_MATRIX_MAXIMUM_BRIGHTNESS)
-# if (RGB_MATRIX_MAXIMUM_BRIGHTNESS) < 1
-# error "RGB_MATRIX_MAXIMUM_BRIGHTNESS must not be less than ONE"
-# endif
-# if UINT8_MAX < (RGB_MATRIX_MAXIMUM_BRIGHTNESS)
-# error "RGB_MATRIX_MAXIMUM_BRIGHTNESS must not be larger than UINT8_MAX"
-# endif
-# else
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
-# endif
-#endif
-
-#if defined(RGB_FADE_IN) || defined(RGB_IDLE_TIMEOUT)
-/**
- * @brief Calculates the time offset required by fade in.
- * @details Using an arbitrary timer any point on the sine curve might be pointed to.
- * The offset is calculated so that
- * a) the point is at the lowest point in the curve and the curve is raising
- * b) the point is near the current brightness (eg. fade in might be called while fading out and the lowest value has not yet been reached).
- * @param[in] time Current time usually represented by a(usually scaled) timer
- * @return Offset required so that time matches the current brightness
- */
-uint8_t calc_fade_in_offset(const uint8_t time);
-
-/**
- * @brief Increases value/brightness until reaching RGB_MATRIX_MAXIMUM_BRIGHTNESS based on given timer.
- * @param[in] time A (usually scaled) timer
- * @return Returns `true` if RGB_MATRIX_MAXIMUM_BRIGHTNESS has been reached, `false` otherwise.
- */
-bool fade_in(const uint8_t time);
-#endif
-
-#if defined(RGB_DISABLE_WITH_FADE_OUT)
-# if !defined(RGB_MATRIX_TIMEOUT)
-# warning "RGB_DISABLE_WITH_FADE_OUT expects RGB_MATRIX_TIMEOUT to be defined"
-# endif
-#endif
-
-#if defined(RGB_DISABLE_WITH_FADE_OUT) || defined(RGB_IDLE_TIMEOUT)
-/**
- * @brief Calculates the time offset required by fade out.
- * @details Using an arbitrary timer any point on the Sinus curve might be pointed to.
- * The offest is calculated so that
- * a) the point is at the highest point in the curve and the curve is failing
- * b) the point is near the current brightness (eg. fade out might be called while on breath effect).
- * @param[in] time Current time usually represented by a(usually scaled) timer
- * @return Offset required so that time matches the current brightness
- */
-uint8_t calc_fade_out_offset(const uint8_t time);
-#endif
-
-#if defined(RGB_DISABLE_WITH_FADE_OUT)
-/**
- * @brief Decreases value/brightness until reaching 0 based on given timer.
- * @param[in] time A (usually scaled) timer
- * @return Returns `true` if 0 has been reached, `false` otherwise.
- */
-bool fade_out(const uint8_t time);
-#endif
-
-#if defined(RGB_IDLE_TIMEOUT)
-# if RGB_IDLE_TIMEOUT < 0
-# error "RGB_IDLE_TIMEOUT must not be less than ZERO"
-# endif
-# if !defined(RGB_IDLE_MINIMUM_BRIGHTNESS)
- // minimum brightness when idling
-# define RGB_IDLE_MINIMUM_BRIGHTNESS (RGB_MATRIX_MAXIMUM_BRIGHTNESS/5)
-# endif
-# if RGB_IDLE_MINIMUM_BRIGHTNESS < 0
-# error "RGB_IDLE_MINIMUM_BRIGHTNESS must not be less than ZERO"
-# endif // RGB_IDLE_MINIMUM_BRIGHTNESS < 0
-# if RGB_MATRIX_MAXIMUM_BRIGHTNESS <= RGB_IDLE_MINIMUM_BRIGHTNESS
-# error "RGB_IDLE_MINIMUM_BRIGHTNESS must be less than RGB_MATRIX_MAXIMUM_BRIGHTNESS"
-# endif // RGB_MATRIX_MAXIMUM_BRIGHTNESS <= RGB_IDLE_MINIMUM_BRIGHTNESS
-
-/**
- * @brief Decreases value/brightness until reaching `RGB_IDLE_MINIMUM_BRIGHTNESS` based on given timer.
- * @param[in] time A (usually scaled) timer
- * @return Returns `true` if `RGB_IDLE_MINIMUM_BRIGHTNESS` has been reached, `false` otherwise.
- */
-bool idle_fade_out(const uint8_t time);
-
-#if defined(RGB_IDLE_BREATHE)
-# if !defined(RGB_IDLE_MAXIMUM_BRIGHTNESS)
- // maximum brightness when idling
-# define RGB_IDLE_MAXIMUM_BRIGHTNESS (RGB_MATRIX_MAXIMUM_BRIGHTNESS*3/5)
-# endif
-# if !(0 <= RGB_IDLE_MAXIMUM_BRIGHTNESS)
-# error "RGB_IDLE_MINIMUM_BRIGHTNESS must not be less than ZERO, was: " RGB_IDLE_MAXIMUM_BRIGHTNESS
-# endif // RGB_IDLE_MAXIMUM_BRIGHTNESS < 0
-# if !(RGB_IDLE_MINIMUM_BRIGHTNESS < RGB_IDLE_MAXIMUM_BRIGHTNESS)
-# error "RGB_IDLE_MINIMUM_BRIGHTNESS must be less than RGB_IDLE_MAXIMUM_BRIGHTNESS"
-# endif // RGB_IDLE_MAXIMUM_BRIGHTNESS <= RGB_IDLE_MINIMUM_BRIGHTNESS
-# if !(RGB_IDLE_MAXIMUM_BRIGHTNESS <= RGB_MATRIX_MAXIMUM_BRIGHTNESS)
-# error "RGB_IDLE_MAXIMUM_BRIGHTNESS must be less than or equal to RGB_MATRIX_MAXIMUM_BRIGHTNESS"
-# endif // RGB_MATRIX_MAXIMUM_BRIGHTNESS <= RGB_IDLE_MAXIMUM_BRIGHTNESS
-
-/**
- * @brief Changes value/brightness to create a breathing effect based on given timer.
- * @details Brightness will breathe in the range starting from `RGB_IDLE_MINIMUM_BRIGHTNESS` to `RGB_IDLE_MAXIMUM_BRIGHTNESS`.
- * @param[in] time A (usually scaled) timer
- */
-void idle_breathe(const uint8_t time);
-#endif // RGB_IDLE_BREATHE
-
-#endif // RGB_IDLE_TIMEOUT
diff --git a/users/vitoni/rules.mk b/users/vitoni/rules.mk
deleted file mode 100644
index 2f3b0d15e5..0000000000
--- a/users/vitoni/rules.mk
+++ /dev/null
@@ -1,4 +0,0 @@
-SRC += \
- vitoni.c \
- utils.c \
- rgb_matrix_effects.c
diff --git a/users/vitoni/utils.c b/users/vitoni/utils.c
deleted file mode 100644
index fb011570e4..0000000000
--- a/users/vitoni/utils.c
+++ /dev/null
@@ -1,129 +0,0 @@
-// Copyright 2021 Victor Toni (@vitoni)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#include "utils.h"
-
-#include <lib/lib8tion/lib8tion.h>
-
-/**
-* @brief Changes `*value` to `new_value`.
-* @param[in,out] value Pointer to variable to be changed.
-* @param[in] new_value Value to be changed.
-* @param[in,out] changed Flag indicating `*value` and `new_value` were different.
-*/
-void update_value(uint8_t *value, const uint8_t new_value, bool *changed) {
- if (new_value != (*value)) {
- (*changed) = true;
- (*value) = new_value;
- }
-}
-
-/**
-* @brief Checks whether a value is in the given range.
-* @param[in] value Value to be checked.
-* @param[in] range_min Lower bound of range (inclusive).
-* @param[in] range_max Upper bound of range (inclusive).
-* @return `true` if (range_min <= value <= range_max), `false` otherwise
-*/
-bool in_range(const uint8_t value, const uint8_t range_min, const uint8_t range_max) {
- return range_min <= value && value <= range_max;
-}
-
-/**
-* @brief Calculates the sine value based on sin8() and scales it to the given range (unsigned).
-*
-* Table of values for unscaled sin8() eg. a theta of 0 results to 128 and a theta of 255 (240+15) results to 125.
- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
- +----------------------------------------------------------------
- 0: 128 131 134 137 140 143 146 149 152 155 158 161 164 167 170 173
- 16: 177 179 182 184 187 189 192 194 197 200 202 205 207 210 212 215
- 32: 218 219 221 223 224 226 228 229 231 233 234 236 238 239 241 243
- 48: 245 245 246 246 247 248 248 249 250 250 251 251 252 253 253 254
- 64: 255 254 253 253 252 251 251 250 250 249 248 248 247 246 246 245
- 80: 245 243 241 239 238 236 234 233 231 229 228 226 224 223 221 219
- 96: 218 215 212 210 207 205 202 200 197 194 192 189 187 184 182 179
- 112: 177 173 170 167 164 161 158 155 152 149 146 143 140 137 134 131
- 128: 128 125 122 119 116 113 110 107 104 101 98 95 92 89 86 83
- 144: 79 77 74 72 69 67 64 62 59 56 54 51 49 46 44 41
- 160: 38 37 35 33 32 30 28 27 25 23 22 20 18 17 15 13
- 176: 11 11 10 10 9 8 8 7 6 6 5 5 4 3 3 2
- 192: 1 2 3 3 4 5 5 6 6 7 8 8 9 10 10 11
- 208: 11 13 15 17 18 20 22 23 25 27 28 30 32 33 35 37
- 224: 38 41 44 46 49 51 54 56 59 62 64 67 69 72 74 77
- 240: 79 83 86 89 92 95 98 101 104 107 110 113 116 119 122 125
-*
-* @param[in] theta Angle (a full circle mapped to 0-255) used as input for sine calculation.
-* @param[in] range_min Lower bound of range (inclusive).
-* @param[in] range_max Upper bound of range (inclusive).
-* @return Calculated sine value mapped to the given range.
-*/
-uint8_t scaled_sin(const uint8_t theta, const uint8_t range_min, const uint8_t range_max) {
- const uint8_t range = range_max - range_min;
- return scale8(sin8(theta), range) + range_min;
-}
-
-/**
-* @brief Increases the given value until reaching range_max.
-* The increments occur following an upwards sine wave (scaled from range_min to range_max).
-* @param[in] theta Angle (a full circle mapped to 0-255) used as input for sine calculation.
-* @param[in] range_min Lower bound of range (inclusive).
-* @param[in] range_max Upper bound of range (inclusive).
-* @param[in] max_delta Maximum delta between value and range_max (due to values being integers and eventually not fully matching).
-* @param[in,out] value Reference of variable to be increased
-* @return `true` if value and range_max are within a delta of 3 (chosen by fair dice rolling), `false` otherwise
-* @see scaled_sin()
-*/
-bool scaled_sin_up(const uint8_t theta, const uint8_t range_min, const uint8_t range_max, const uint8_t max_delta, uint8_t *value) {
- // ensure upper range bound
- if (range_max <= (*value)) {
- (*value) = range_max;
- return true;
- }
-
- const uint8_t new_value = scaled_sin(theta, range_min, range_max);
- if (in_range(new_value, range_min, range_max) && (*value) < new_value) {
- (*value) = new_value;
-
- return range_max == (*value);
- }
-
- const uint8_t delta = range_max - (*value);
- if (delta <= max_delta) {
- (*value) = range_max;
- }
-
- return delta <= max_delta;
-}
-
-/**
-* @brief Decreases the given value until reaching range_min.
-* The decrements occur following an downwards sinus wave (scaled from range_min to range_max).
-* @param[in] theta Angle (a full circle mapped to 0-255) used as input for sinus calculation.
-* @param[in] range_min Lower bound of range (inclusive).
-* @param[in] range_max Upper bound of range (inclusive).
-* @param[in] max_delta Maximum delta between value and range_min (due to values being integers and eventually not fully matching).
-* @param[in,out] value Reference of variable to be decreased
-* @return `true` if value and range_max are within a delta of 3 (chosen by fair dice rolling), `false` otherwise
-* @see scaled_sin()
-*/
-bool scaled_sin_down(const uint8_t theta, const uint8_t range_min, const uint8_t range_max, const uint8_t max_delta, uint8_t *value) {
- // ensure lower range bound
- if ((*value) <= range_min) {
- (*value) = range_min;
- return true;
- }
-
- const uint8_t new_value = scaled_sin(theta, range_min, range_max);
- if (in_range(new_value, range_min, range_max) && new_value < (*value)) {
- (*value) = new_value;
-
- return range_min == (*value);
- }
-
- const uint8_t delta = (*value) - range_min;
- if (delta <= max_delta) {
- (*value) = range_min;
- }
-
- return delta <= max_delta;
-}
diff --git a/users/vitoni/utils.h b/users/vitoni/utils.h
deleted file mode 100644
index 987b612d58..0000000000
--- a/users/vitoni/utils.h
+++ /dev/null
@@ -1,80 +0,0 @@
-// Copyright 2021 Victor Toni (@vitoni)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#pragma once
-
-#include <stdint.h>
-#include <stdbool.h>
-
-/**
-* @brief Changes `*value` to `new_value`.
-* @param[in,out] value Pointer to variable to be changed.
-* @param[in] new_value Value to be changed.
-* @param[in,out] changed Flag indicating `*value` and `new_value` were different.
-*/
-void update_value(uint8_t *value, const uint8_t new_value, bool *changed);
-
-/**
-* @brief Checks whether a value is in the given range.
-* @param[in] value Value to be checked.
-* @param[in] range_min Lower bound of range (inclusive).
-* @param[in] range_max Upper bound of range (inclusive).
-* @return `true` if (range_min <= value <= range_max), `false` otherwise
-*/
-bool in_range(const uint8_t value, const uint8_t range_min, const uint8_t range_max);
-
-/**
-* @brief Calculates the sine value based on sin8() and scales it to the given range (unsigned).
-*
-* Table of values for unscaled sin8() eg. a theta of 0 results to 128 and a theta of 255 (240+15) results to 125.
- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
- +----------------------------------------------------------------
- 0: 128 131 134 137 140 143 146 149 152 155 158 161 164 167 170 173
- 16: 177 179 182 184 187 189 192 194 197 200 202 205 207 210 212 215
- 32: 218 219 221 223 224 226 228 229 231 233 234 236 238 239 241 243
- 48: 245 245 246 246 247 248 248 249 250 250 251 251 252 253 253 254
- 64: 255 254 253 253 252 251 251 250 250 249 248 248 247 246 246 245
- 80: 245 243 241 239 238 236 234 233 231 229 228 226 224 223 221 219
- 96: 218 215 212 210 207 205 202 200 197 194 192 189 187 184 182 179
- 112: 177 173 170 167 164 161 158 155 152 149 146 143 140 137 134 131
- 128: 128 125 122 119 116 113 110 107 104 101 98 95 92 89 86 83
- 144: 79 77 74 72 69 67 64 62 59 56 54 51 49 46 44 41
- 160: 38 37 35 33 32 30 28 27 25 23 22 20 18 17 15 13
- 176: 11 11 10 10 9 8 8 7 6 6 5 5 4 3 3 2
- 192: 1 2 3 3 4 5 5 6 6 7 8 8 9 10 10 11
- 208: 11 13 15 17 18 20 22 23 25 27 28 30 32 33 35 37
- 224: 38 41 44 46 49 51 54 56 59 62 64 67 69 72 74 77
- 240: 79 83 86 89 92 95 98 101 104 107 110 113 116 119 122 125
-*
-* @param[in] theta Angle (a full circle mapped to 0-255) used as input for sine calculation.
-* @param[in] range_min Lower bound of range (inclusive).
-* @param[in] range_max Upper bound of range (inclusive).
-* @return Calculated sine value mapped to the given range.
-*/
-uint8_t scaled_sin(const uint8_t theta, const uint8_t range_min, const uint8_t range_max);
-
-/**
-* @brief Increases the given value until reaching range_max.
-* The increments occur following an upwards sine wave (scaled from range_min to range_max).
-* @param[in] theta Angle (a full circle mapped to 0-255) used as input for sine calculation.
-* @param[in] range_min Lower bound of range (inclusive).
-* @param[in] range_max Upper bound of range (inclusive).
-* @param[in] max_delta Maximum delta between value and range_max (due to values being integers and eventually not fully matching).
-* @param[in,out] value Reference of variable to be increased
-* @return `true` if value and range_max are within a delta of 3 (chosen by fair dice rolling), `false` otherwise
-* @see scaled_sin()
-*/
-bool scaled_sin_up(const uint8_t thea, const uint8_t range_min, const uint8_t range_max, const uint8_t max_delta, uint8_t *value);
-
-/**
-* @brief Decreases the given value until reaching range_min.
-* The decrements occur following an downwards sinus wave (scaled from range_min to range_max).
-* @param[in] theta Angle (a full circle mapped to 0-255) used as input for sinus calculation.
-* @param[in] range_min Lower bound of range (inclusive).
-* @param[in] range_max Upper bound of range (inclusive).
-* @param[in] max_delta Maximum delta between value and range_min (due to values being integers and eventually not fully matching).
-* @param[in,out] value Reference of variable to be decreased
-* @return `true` if value and range_max are within a delta of 3 (chosen by fair dice rolling), `false` otherwise
-* @see scaled_sin()
-*/
-bool scaled_sin_down(const uint8_t theta, const uint8_t range_min, const uint8_t range_max, const uint8_t max_delta, uint8_t *value);
diff --git a/users/vitoni/vitoni.c b/users/vitoni/vitoni.c
deleted file mode 100644
index f8cb50ea78..0000000000
--- a/users/vitoni/vitoni.c
+++ /dev/null
@@ -1,131 +0,0 @@
-// Copyright 2021 Victor Toni (@vitoni)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#include "vitoni.h"
-
-#include <rgb_matrix.h>
-#include <lib/lib8tion/lib8tion.h>
-
-#include "rgb_matrix_effects.h"
-#include "utils.h"
-
-#if defined(RGB_FADE_IN) || defined(RGB_DISABLE_WITH_FADE_OUT) || defined(RGB_IDLE_TIMEOUT)
-static uint8_t state;
-
-// flag used to indicate that offset calculation is needed to adjust the timer,
-// so that it matches the index used for sine calculation
-static bool calc_offset;
-
-void matrix_scan_user_rgb(void) {
-#if defined(RGB_DISABLE_WITH_FADE_OUT) || defined(RGB_IDLE_TIMEOUT)
- const uint8_t time = rgb_time_2_scale();
-#endif
- static uint8_t time_offset;
-
- const uint32_t inactivity_millis = last_input_activity_elapsed();
-
-#if defined(RGB_IDLE_TIMEOUT)
- if (IDLE != state && RGB_IDLE_TIMEOUT <= inactivity_millis) {
- update_value(&state, IDLE_FADE_OUT, &calc_offset);
- }
-#endif
-#if defined(RGB_DISABLE_WITH_FADE_OUT)
- const uint32_t fade_out_duration = scale_2_rgb_time(128);
- const uint32_t start_fade_out_after_millis = (RGB_MATRIX_TIMEOUT) > fade_out_duration
- ? (RGB_MATRIX_TIMEOUT) - fade_out_duration
- : 0;
-
- if (start_fade_out_after_millis <= inactivity_millis) {
- update_value(&state, FADE_OUT, &calc_offset);
- }
-#elif defined(RGB_MATRIX_TIMEOUT)
- // having to set brightness "manually" to black as starting point for fade in
- // for the time when returning from suspended state
- if (RGB_MATRIX_TIMEOUT <= inactivity_millis + 15) {
- rgb_matrix_config.hsv.v = 0;
- state = SUSPENDED;
- }
-#endif
-
- switch(state) {
-#if defined(RGB_IDLE_TIMEOUT)
- case IDLE_FADE_OUT:
- if (calc_offset) {
- time_offset = calc_fade_out_offset(time);
-
- // resetting flag for subsequent calls
- calc_offset = false;
- }
- if (idle_fade_out(time + time_offset)) {
- update_value(&state, IDLE, &calc_offset);
- }
- break;
- case IDLE:
-#if defined(RGB_IDLE_BREATHE)
- if (calc_offset) {
- // no need to calculate time_offset since we are aligned already due to IDLE_FADE_OUT
- // resetting flag for subsequent calls
- calc_offset = false;
- }
- idle_breathe(time + time_offset);
-#endif
- break;
-#endif
-#if defined(RGB_DISABLE_WITH_FADE_OUT)
- case FADE_OUT:
- if (calc_offset) {
- time_offset = calc_fade_out_offset(time);
-
- // resetting flag for subsequent calls
- calc_offset = false;
- }
- if (fade_out(time + time_offset)) {
- update_value(&state, SUSPENDED, &calc_offset);
- }
- break;
-#endif
-#if defined(RGB_FADE_IN) || defined(RGB_IDLE_TIMEOUT)
- case FADE_IN:
- {
- // since we want to be active, fade in should be faster than e.g. fading out
- const uint8_t fade_in_time = rgb_time_2_scale_w_factor(4);
- if (calc_offset) {
- time_offset = calc_fade_in_offset(fade_in_time);
-
- // resetting flag for subsequent calls
- calc_offset = false;
- }
- if (fade_in(fade_in_time + time_offset)) {
- update_value(&state, REGULAR, &calc_offset);
- }
- }
- break;
-#endif
- default:
- break;
- }
-}
-
-#if defined(RGB_FADE_IN) || defined(RGB_IDLE_TIMEOUT)
-bool process_record_user_rgb(const uint16_t keycode, const keyrecord_t *record) {
- // if we are in a non regular state we might have faded out (eventually partially)
- // so we restore brightness (to max as we don't keep track of manually changed brightness)
- // if (REGULAR != state && FADE_IN != state) {
- if (FADE_IN != state && REGULAR != state) {
- update_value(&state, FADE_IN, &calc_offset);
- }
-
- return true; // Process all other keycodes normally
-}
-
-void suspend_wakeup_init_user(void) {
- if (FADE_IN != state) {
- // setting brightness to black as starting point for fade in
- rgb_matrix_config.hsv.v = 0;
-
- update_value(&state, FADE_IN, &calc_offset);
- }
-}
-#endif // defined(RGB_FADE_IN)
-
-#endif // defined(RGB_FADE_IN) || defined(RGB_DISABLE_WITH_FADE_OUT)
diff --git a/users/vitoni/vitoni.h b/users/vitoni/vitoni.h
deleted file mode 100644
index 1f26037135..0000000000
--- a/users/vitoni/vitoni.h
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2021 Victor Toni (@vitoni)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#pragma once
-
-#include <stdint.h>
-#include <stdbool.h>
-
-#include <quantum/action.h>
-
-#include "rgb_matrix_effects.h"
-
-/**
- * @brief Executes periodic tasks, eg. fading or checking for upcoming supend.
- * @details Function declaration as weak as the implementation might "disappear" depending on the RGB settings used.
- * The weak declaration avoids having to change `keymap.c`.
- */
-__attribute__((weak))
-void matrix_scan_user_rgb(void);
-
-/**
- * @brief Executes tasks based on user activity, eg. fading in.
- * @details Function declaration as weak as the implementation might "disappear" depending on the RGB settings used.
- * The weak declaration avoids having to change `keymap.c`.
- * @param[in] keycode
- * @param[in] record
- * @return `false` if further processing should be stopped, `true` otherwise
- */
-__attribute__((weak))
-bool process_record_user_rgb(const uint16_t keycode, const keyrecord_t *record);
diff --git a/users/vnmm/config.h b/users/vnmm/config.h
deleted file mode 100644
index 3642c5784c..0000000000
--- a/users/vnmm/config.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// All of these config options can be changed by keyboard in their config.h
-// These are all just the defaults I like for most of my keyboards
-
-#ifndef RGB_MATRIX_TIMEOUT
-// If the keyboard is unused for 20 minutes then just turn off RGB
-# define RGB_MATRIX_TIMEOUT 1200000 // 20 minutes (20 * 60 * 1000ms)
-
-#endif
-
-#ifndef CAPS_LOCK_INDICATOR_COLOR
-// When caps lock is pressed, the letter keys, caps lock, and both shift keys, will light up this color.
-# define CAPS_LOCK_INDICATOR_COLOR RGB_RED
-#endif
-
-#ifndef SHIFT_INDICATOR_COLOR
-// If defined also light up alphabet keys when either shift is held
-# define SHIFT_INDICATOR_COLOR RGB_WHITE
-#endif
-
-#ifndef CAPS_LOCK_INDICATOR_OTHER
-// When caps lock is pressed, all other keys will light up this color
-// #define CAPS_LOCK_INDICATOR_OTHER RGB_WHITE
-#endif
-
-#ifndef CAPS_LOCK_INDICATOR_LIGHT_ALPHAS
-// All alphabet keys will light up, othe rwise just caps lock.
-# define CAPS_LOCK_INDICATOR_LIGHT_ALPHAS
-#endif
-
-#ifndef FN_LAYER_TRANSPARENT_KEYS_COLOR
-// Keys not defined in the current layer will use this color
-# define FN_LAYER_TRANSPARENT_KEYS_COLOR RGB_OFF
-#endif
-
-// Keys defined in the current layer will use this color
-#ifndef FN_LAYER_KEYS_COLOR
-// #define FN_LAYER_KEYS_COLOR RGB_WHITE
-#endif
-
-#ifndef CURRENT_LAYER_INDICATOR_COLOR
-// If a key on a FN layer changes the default layer to the current layer, light up this color
-# define CURRENT_LAYER_INDICATOR_COLOR RGB_WHITE
-#endif
-
-#ifndef NKRO_INDICATOR_COLOR
-// If NKRO is enabled, the key on the fn layer that toggles it will light up this color
-# define NKRO_INDICATOR_COLOR RGB_WHITE
-#endif
-
-// Don't light up my whole room when the pc is asleep
-#ifndef RGB_DISABLE_WHEN_USB_SUSPENDED
-# define RGB_DISABLE_WHEN_USB_SUSPENDED
-#endif
diff --git a/users/vnmm/keymap_user.h b/users/vnmm/keymap_user.h
deleted file mode 100644
index 2262910bcc..0000000000
--- a/users/vnmm/keymap_user.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Copyright 2021
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-#ifdef DYNAMIC_KEYMAP_LAYER_COUNT
-#undef DYNAMIC_KEYMAP_LAYER_COUNT
-#endif
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
-
-#define WIN_F MO(WIN_FN)
-#define MAC_F MO(MAC_FN)
-#define EXT_F MO(EXTRA_FN)
-
-#define DF_WIN DF(WIN_BASE)
-#define DF_MAC DF(MAC_BASE)
-
-// clang-format off
-
-enum layers {
- WIN_BASE,
- MAC_BASE,
- WIN_FN,
- MAC_FN,
- EXTRA_FN
-};
-
-// clang-format on
diff --git a/users/vnmm/readme.md b/users/vnmm/readme.md
deleted file mode 100644
index 637e92c063..0000000000
--- a/users/vnmm/readme.md
+++ /dev/null
@@ -1,10 +0,0 @@
-# Vnmm's stuff
-
-This keymap builds on archrovisual's but with some changes and uses the default key placements
-
-## Features
-
-- Alphabet keys light up red when caps lock is on or shift is on
-- Pressing FN shows keys that have a definition
-- Via enabled
-- Quick reset with fn+space
diff --git a/users/vnmm/rgb_matrix_user.c b/users/vnmm/rgb_matrix_user.c
deleted file mode 100644
index c85f86782e..0000000000
--- a/users/vnmm/rgb_matrix_user.c
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include QMK_KEYBOARD_H
-#include "rgb_matrix_user.h"
-#include "keymap_user.h"
-
-keypos_t led_index_key_position[RGB_MATRIX_LED_COUNT];
-
-#ifdef SHIFT_INDICATOR_COLOR
-# define is_shift_pressed (get_mods() & MOD_MASK_SHIFT)
-#else
-# define is_shift_pressed false
-#endif
-
-void rgb_matrix_init_user(void) {
- // Set up led_index_key_position
- for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
- for (uint8_t col = 0; col < MATRIX_COLS; col++) {
- uint8_t led_index = g_led_config.matrix_co[row][col];
- if (led_index != NO_LED) {
- led_index_key_position[led_index] = (keypos_t){.row = row, .col = col};
- }
- }
- }
-}
-
-bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
- uint8_t current_layer = get_highest_layer(layer_state);
- bool caps = host_keyboard_led_state().caps_lock;
- switch (current_layer) {
- case WIN_BASE:
- case MAC_BASE:
- // Light up letters if caps and light up letters and numbers if shift. If shift and caps light up just numbers.
-#ifdef CAPS_LOCK_INDICATOR_COLOR
- if (caps && !is_shift_pressed) {
- rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_caps_lock_indicator, CAPS_LOCK_INDICATOR_COLOR);
-# ifdef CAPS_LOCK_INDICATOR_OTHER
- rgb_matrix_set_color_by_not_keycode(led_min, led_max, current_layer, is_caps_lock_indicator, CAPS_LOCK_INDICATOR_OTHER);
-# endif
- }
-# ifdef SHIFT_INDICATOR_COLOR
- else if (is_shift_pressed && !caps) {
- // Light up letters and other shift affected keys
- rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_shift_indicator, SHIFT_INDICATOR_COLOR);
- rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_caps_lock_indicator, CAPS_LOCK_INDICATOR_COLOR);
- } else if (is_shift_pressed && caps) {
- // Only shift affected keys light up
- rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_shift_indicator, SHIFT_INDICATOR_COLOR);
- }
-# endif // SHIFT_INDICATOR_COLOR
-#endif // CAPS_LOCK_INDICATOR_COLOR
- break;
- default:
-#ifdef FN_LAYER_TRANSPARENT_KEYS_COLOR
- rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_transparent, FN_LAYER_TRANSPARENT_KEYS_COLOR);
-#endif
-#ifdef FN_LAYER_KEYS_COLOR
- rgb_matrix_set_color_by_not_keycode(led_min, led_max, current_layer, is_transparent, FN_LAYER_KEYS_COLOR);
-#endif
-#ifdef CURRENT_LAYER_INDICATOR_COLOR
- rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_default_layer, CURRENT_LAYER_INDICATOR_COLOR);
-#endif
-#ifdef NKRO_INDICATOR_COLOR
- if (keymap_config.nkro) {
- rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_nkro_indicator, NKRO_INDICATOR_COLOR);
- }
-#endif
- break;
- }
- return false;
-}
-
-// set color of keys that match the keycode
-void rgb_matrix_set_color_by_keycode(uint8_t led_min, uint8_t led_max, uint8_t layer, bool (*is_keycode)(uint16_t), uint8_t red, uint8_t green, uint8_t blue) {
- for (uint8_t i = led_min; i < led_max; i++) {
- uint16_t keycode = keymap_key_to_keycode(layer, led_index_key_position[i]);
- if ((*is_keycode)(keycode)) {
- rgb_matrix_set_color(i, red, green, blue);
- }
- }
-}
-
-// set color of all leds that are not a certain keycode
-void rgb_matrix_set_color_by_not_keycode(uint8_t led_min, uint8_t led_max, uint8_t layer, bool (*is_keycode)(uint16_t), uint8_t red, uint8_t green, uint8_t blue) {
- for (uint8_t i = led_min; i < led_max; i++) {
- uint16_t keycode = keymap_key_to_keycode(layer, led_index_key_position[i]);
- if (!(*is_keycode)(keycode)) {
- rgb_matrix_set_color(i, red, green, blue);
- }
- }
-}
-
-// check if keycode is a letter or shift or caps lock
-bool is_caps_lock_indicator(uint16_t keycode) {
-#ifdef CAPS_LOCK_INDICATOR_LIGHT_ALPHAS
- return (KC_A <= keycode && keycode <= KC_Z) || keycode == KC_CAPS || keycode == KC_LSFT || keycode == KC_RSFT;
-#else
- return keycode == KC_CAPS;
-#endif
-}
-
-// check if keycode is the DF to default layer
-#ifdef CURRENT_LAYER_INDICATOR_COLOR
-bool is_default_layer(uint16_t keycode) {
- return keycode == DF(get_highest_layer(default_layer_state));
-}
-#endif
-
-// check if keycode is the NKRO toggle
-#ifdef NKRO_INDICATOR_COLOR
-bool is_nkro_indicator(uint16_t keycode) {
- return keycode == NK_TOGG;
-}
-#endif
-
-// check if keycode is transparent
-bool is_transparent(uint16_t keycode) {
- return keycode == KC_TRNS;
-}
-
-// check if keycode is affected by shift on the number row
-#ifdef SHIFT_INDICATOR_COLOR
-bool is_shift_indicator(uint16_t keycode) {
- return (KC_1 <= keycode && keycode <= KC_0) || keycode == KC_MINS || keycode == KC_EQL || keycode == KC_GRV || keycode == KC_BSLS || keycode == KC_LBRC || keycode == KC_RBRC || keycode == KC_SCLN || keycode == KC_QUOT || keycode == KC_COMM || keycode == KC_DOT || keycode == KC_SLSH || keycode == QK_GESC || keycode == KC_LSFT || keycode == KC_RSFT;
-}
-#endif
diff --git a/users/vnmm/rgb_matrix_user.h b/users/vnmm/rgb_matrix_user.h
deleted file mode 100644
index 7fe3d8229a..0000000000
--- a/users/vnmm/rgb_matrix_user.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-void rgb_matrix_init_user(void);
-
-void rgb_matrix_set_color_by_keycode(uint8_t led_min, uint8_t led_max, uint8_t layer, bool (*is_keycode)(uint16_t), uint8_t red, uint8_t green, uint8_t blue);
-void rgb_matrix_set_color_by_not_keycode(uint8_t led_min, uint8_t led_max, uint8_t layer, bool (*is_keycode)(uint16_t), uint8_t red, uint8_t green, uint8_t blue);
-
-bool is_default_layer(uint16_t keycode);
-bool is_nkro_indicator(uint16_t keycode);
-bool is_caps_lock_indicator(uint16_t keycode);
-bool is_transparent(uint16_t keycode);
-bool is_shift_indicator(uint16_t keycode);
diff --git a/users/vnmm/rules.mk b/users/vnmm/rules.mk
deleted file mode 100644
index 2b601fd3e5..0000000000
--- a/users/vnmm/rules.mk
+++ /dev/null
@@ -1,5 +0,0 @@
-SRC += vnmm.c
-
-ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes)
- SRC += rgb_matrix_user.c
-endif
diff --git a/users/vnmm/vnmm.c b/users/vnmm/vnmm.c
deleted file mode 100644
index a4d4a7928e..0000000000
--- a/users/vnmm/vnmm.c
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "vnmm.h"
-
-void keyboard_post_init_user(void) {
-#ifdef RGB_MATRIX_ENABLE
- rgb_matrix_init_user();
-#endif
-} \ No newline at end of file
diff --git a/users/vnmm/vnmm.h b/users/vnmm/vnmm.h
deleted file mode 100644
index 03723c3deb..0000000000
--- a/users/vnmm/vnmm.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#pragma once
-
-#include "keymap_user.h"
-#ifdef RGB_MATRIX_ENABLE
-# include "rgb_matrix_user.h"
-#endif \ No newline at end of file
diff --git a/users/vosechu/config.h b/users/vosechu/config.h
deleted file mode 100644
index 7f4f000c41..0000000000
--- a/users/vosechu/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#pragma once
-
-#undef PERMISSIVE_HOLD
-//#define QUICK_TAP_TERM 0
-//#define RETRO_TAPPING
-
-#ifndef TAPPING_TOGGLE
-#define TAPPING_TOGGLE 2
-#endif
-
-#ifdef TAPPING_TERM
-#undef TAPPING_TERM
-#endif
-#define TAPPING_TERM 150
-
-// Disable action_get_macro and fn_actions, since we don't use these
-// and it saves on space in the firmware.
-#define NO_ACTION_MACRO
-#define NO_ACTION_FUNCTION
diff --git a/users/vosechu/readme.md b/users/vosechu/readme.md
deleted file mode 100644
index 44789a9ff2..0000000000
--- a/users/vosechu/readme.md
+++ /dev/null
@@ -1,14 +0,0 @@
-Copyright 2018 Chuck Lauer Vose vosechu@gmail.com @vosechu
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
diff --git a/users/vosechu/rules.mk b/users/vosechu/rules.mk
deleted file mode 100644
index e346db93fb..0000000000
--- a/users/vosechu/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-SRC += vosechu.c
diff --git a/users/vosechu/vosechu.c b/users/vosechu/vosechu.c
deleted file mode 100644
index 3f58ca26a8..0000000000
--- a/users/vosechu/vosechu.c
+++ /dev/null
@@ -1,25 +0,0 @@
-#include "vosechu.h"
-
-// void my_custom_function(void) {
-
-// }
-
-// [DV] = { /* ================================================== DVORAK ============================================================ */
-// { KC_1, KC_A, KC_B, KC_C, KC_D, KC_E, _______ , KC_G, KC_H, KC_J, KC_K, KC_L, KC_M },
-// { KC_2, KC_A, KC_B, KC_C, KC_D, KC_E, _______ , KC_G, KC_H, KC_J, KC_K, KC_L, KC_M },
-// { KC_3, KC_A, KC_B, KC_C, KC_D, KC_E, _______ , KC_G, KC_H, KC_J, KC_K, KC_L, KC_M },
-// { KC_4, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F , KC_G, KC_H, KC_J, KC_K, KC_L, KC_M },
-// { KC_5, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F , KC_G, KC_H, KC_J, KC_K, KC_L, KC_M }
-// },
-
-// bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-// if (record->event.pressed) {
-// // These also need to be defined in the header file
-// switch(keycode) {
-// case PAWFIVE:
-// SEND_STRING(":pawfive:");
-// return false;
-// }
-// }
-// return true;
-// };
diff --git a/users/vosechu/vosechu.h b/users/vosechu/vosechu.h
deleted file mode 100644
index 3e65f8c955..0000000000
--- a/users/vosechu/vosechu.h
+++ /dev/null
@@ -1,89 +0,0 @@
-#pragma once
-
-#include "quantum.h"
-
-// Each layer gets a name for readability, which is then used in the keymap matrix below.
-enum userspace_custom_layers {
- DV = 0,
- QW,
- GAM1,
- RSE,
- LWR,
- LFT,
- MOUSE,
- TT1,
- TT2,
- TT3,
- T23X
-};
-#define BASE DV
-
-enum userspace_custom_keycodes {
- PAWFIVE = SAFE_RANGE,
- MOUKEY,
- MS_BTN1,
- MS_BTN2,
- MS_BTN3
-};
-
-// Transparent macro to indicate that this spot is already being pressed
-// to activate this layer
-#define _LAYER_ KC_TRNS
-
-// == Dual-action keys on most of the modifiers
-#define CTL_ESC CTL_T(KC_ESC)
-#define CTL_GRV CTL_T(KC_GRV)
-#define ALT_TAB ALT_T(KC_TAB)
-#define SFT_SPC SFT_T(KC_SPC)
-
-// == Macro keys for commonly used apps
-// -- Slack
-// Move one conversation up/down
-#define SLACKTB LGUI(LSFT(KC_T))
-#define SLACKUP LALT(LSFT(KC_UP))
-#define SLACKDN LALT(LSFT(KC_DOWN))
-
-// -- 1password
-#define PSWD LCTL(KC_BSLS)
-#define PSWD_ALT LCTL(LALT(KC_BSLS))
-
-// -- Browser and OS X
-// Activate one tab left/right
-#define TAB_LFT LGUI(LSFT(KC_LBRC))
-#define TAB_RGT LGUI(LSFT(KC_RBRC))
-// Go back/forward in history
-#define BWSR_BK LGUI(KC_LBRC)
-#define BWSR_FW LGUI(KC_RBRC)
-
-// -- Screen management
-// Make window fill the left/right side
-#define SCR_LFT HYPR(KC_LEFT)
-#define SCR_RGT HYPR(KC_RGHT)
-// Make window fill the whole monitor
-#define SCR_FUL HYPR(KC_F)
-
-// -- Windows variants of browser commanads
-// Activate one tab left/right
-#define WTABLFT LCTL(LSFT(KC_TAB))
-#define WTABRGT LCTL(KC_TAB)
-// Go back/forward in history
-#define WBWSRBK LALT(KC_LEFT)
-#define WBWSRFW LALT(KC_RGHT)
-
-// == Extended alpha layer toggles
-// -- Dvorak
-// Pressing U opens up the LWR layer (numpad)
-#define LWR_U LT(LWR, KC_U)
-// Pressing H opens up the RSE layer (brackets/parens)
-#define RSE_H LT(RSE, KC_H)
-
-// -- Qwerty
-// Pressing F opens up the LWR layer (numpad)
-#define LWR_F LT(LWR, KC_F)
-// Pressing J opens up the RSE layer (brackets/parens)
-#define RSE_J LT(RSE, KC_J)
-
-// -- LFT layer (Works on both Qwerty and Dvorak)
-// Pressing Back space or Enter opens up the LFT layer (media/navigation)
-#define LFT_BK LT(LFT, KC_BSPC)
-#define LFT_ENT LT(LFT, KC_ENT)
diff --git a/users/wanleg/config.h b/users/wanleg/config.h
deleted file mode 100644
index 984bdf6194..0000000000
--- a/users/wanleg/config.h
+++ /dev/null
@@ -1,47 +0,0 @@
-#pragma once
-
-//TAPPING_TERM
-//tapping term short (<100): on multi-purpose keys, slow taps may not register, but "holds" register easier. multi-tap keys may be difficult to activate.
-//tapping term long (>200): holds don't register as easily - noticeable when typing quickly (e.g. shift doesn't want to engage.)
-
-
-//MIGHT HAVE TO SPLIT THIS INTO TWO CONDITIONS
-#if defined(TAP_DANCE_ENABLE) && defined(KEYBOARD_lets_split_rev2) || defined(KEYBOARD_keebio_iris_rev2)
-//Kailh Coppers activate quickly and don't need a long tapping term
-#define TAPPING_TERM 180
-
-#elif defined(TAP_DANCE_ENABLE) && defined(KEYBOARD_bigswitch)
-#define TAPPING_TERM 700
-
-#else
-#define TAPPING_TERM 145
-#endif
-
-//Mousekey Settings
-#ifdef MOUSEKEY_ENABLE
-#define MOUSEKEY_INTERVAL 16
-#define MOUSEKEY_DELAY 0
-#define MOUSEKEY_TIME_TO_MAX 60
-#define MOUSEKEY_MAX_SPEED 7
-#define MOUSEKEY_WHEEL_DELAY 0
-#endif
-
-// Disable action_get_macro and fn_actions, since we don't use these
-// and it saves on space in the firmware.
-#ifndef NO_DEBUG
-#define NO_DEBUG
-#endif // !NO_DEBUG
-#if !defined(NO_PRINT) && !defined(CONSOLE_ENABLE)
-#define NO_PRINT
-#endif // !NO_PRINT
-#define NO_ACTION_MACRO
-#define NO_ACTION_FUNCTION
-#define NO_ACTION_ONESHOT
-
-
-#define PERMISSIVE_HOLD
-
-//set max breathing brightness on kbd6x
-#if defined(KEYBOARD_kbdfans_kbd6x)
-#define RGBLIGHT_EFFECT_BREATHE_MAX 128 // 0-255
-#endif
diff --git a/users/wanleg/readme.md b/users/wanleg/readme.md
deleted file mode 100644
index 4276111280..0000000000
--- a/users/wanleg/readme.md
+++ /dev/null
@@ -1,125 +0,0 @@
-# Contents
- * [Git Basics](#git-basics)
- * [Update a Feature Branch](#update-a-development-branch)
- * [Delete Branch Locally and Remotely](#delete-branch-locally-and-remotely)
- * [Merge TEST branch into DEV branch](#merge-test-branch-into-dev-branch)
- * [STM32F103C8T6 Setup](#STM32F103C8T6-setup)
- * [Bootloader](#bootloader)
- * [Flashing QMK](#flashing-qmk)
-
----
-## Git Basics
-### Update a Development Branch
-
-This is how to update a working branch with upstream changes.
-First we'll update your local master branch. Go to your local project and check out the branch you want to merge into (your local master branch)
-```bash
-$ git checkout master
-```
-
-Fetch the remote, bringing the branches and their commits from the remote repository.
-You can use the -p, --prune option to delete any remote-tracking references that no longer exist in the remote. Commits to master will be stored in a local branch, remotes/origin/master
-```bash
-$ git fetch -p origin
-```
-
-Merge the changes from origin/master into your local master branch. This brings your master branch in sync with the remote repository, without losing your local changes. If your local branch didn't have any unique commits, Git will instead perform a "fast-forward".
-```bash
-$ git merge origin/master
-```
-
-Checkout the branch you want to merge into
-```bash
-$ git checkout <feature-branch>
-```
-
-Merge your (now updated) master branch into your feature branch to update it with the latest changes from your team.
-```bash
-$ git merge master
-```
-
-This will open your git-configured text editor. Edit the message as desired, save, and exit the editor.
-
-The above steps only update your local feature branch. To update it on GitHub, push your changes.
-```bash
-$ git push origin <feature-branch>
-```
-
-### Delete Branch Locally and Remotely
-
-Executive Summary
-```bash
-$ git push --delete <remote_name> <branch_name>
-$ git branch -d <branch_name>
-```
-Note that in most cases the remote name is origin.
-
-Delete Local Branch
-To delete the local branch use one of the following:
-```bash
-$ git branch -d branch_name
-$ git branch -D branch_name
-```
-Note: The -d option is an alias for --delete, which only deletes the branch if it has already been fully merged in its upstream branch. You could also use -D, which is an alias for --delete --force, which deletes the branch "irrespective of its merged status." [Source: man git-branch]
-
-Delete Remote Branch [Updated on 8-Sep-2017]
-As of Git v1.7.0, you can delete a remote branch using
-```bash
-$ git push <remote_name> --delete <branch_name>
-```
-which might be easier to remember than
-```bash
-$ git push <remote_name> :<branch_name>
-```
-which was added in Git v1.5.0 "to delete a remote branch or a tag."
-
-Starting on Git v2.8.0 you can also use `git push` with the `-d` option as an alias for `--delete`.
-
-Therefore, the version of Git you have installed will dictate whether you need to use the easier or harder syntax.
-
-### Merge TEST branch into DEV branch
-
-Executive Summary
-```bash
-$ git checkout DEV
-$ git merge TEST
-$ git push <remote_name> DEV
-$ git branch -d TEST
-$ git push <remote_name> :TEST
-```
-Note that in most cases the remote name is origin.
-The above code will merge, push to remote, and delete both the local and remote TEST branches
-
----
-## STM32F103C8T6 Setup
-Cheap "Blue/Black Pills" typically do not come with a bootloader installed. The Black Pill uses [generic_boot20_pb12.bin](https://github.com/rogerclarkmelbourne/STM32duino-bootloader/blob/master/binaries/generic_boot20_pb12.bin). The Blue Pill uses [generic_boot20_pc13.bin](https://github.com/rogerclarkmelbourne/STM32duino-bootloader/blob/master/binaries/generic_boot20_pc13.bin).
-The following instructions have been adapted from [here](http://wiki.stm32duino.com/index.php?title=Burning_the_bootloader).
-### Bootloader
-Flashing a bootloader on to a Black Pill can be done via a USB to Serial converter (e.g. CP2102). This process should be roughly the same for all F103 boards.
-
-1. Download the correct bootloader binary
-2. Set the 'boot 0' pin/jumper high, and 'boot 1' low
- B0+ to center pin
- B1- to center pin
-3. Connect the board to the PC using a USB to serial converter
- RX to PA9
- TX to PA10
- GND to Ground
- 3.3V to 3.3 Volts
-4. Download and install __Flash Loader Demonstrator__ from [here](http://www.st.com/content/st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-programmers/flasher-stm32.html)
-5. Use __Flash Loader Demonstrator__ to flash the bootloader
- Ensure the correct COM port is selected. Leave other options with their default values/selections.
- Use the "Download to Device" option, with "Erase necessary pages" selected
-6. After a successful flash, set 'boot 0' pin/jumper low
- B0- to center pin
- B1- to center pin (no change)
-
-### Flashing QMK
-As of April 2019, the `:dfu-util` target doesn't work on a \*Pill. You will need to use dfu-util directly.
-1. Use QMK to build your `.bin`
-2. Run `dfu-util.exe -d 1eaf:0003 -a 2 -D YOUR_FIRMWARE.bin"`
- If this is the first QMK flash on the \*Pill, you will need to synchronize your Reset Button-push with starting the command. By default, the \*Pill only stays in bootloader mode for about 3 seconds before returning to normal operation.
-
-See [this page](https://docs.qmk.fm/#/faq_build?id=unknown-device-for-dfu-bootloader) if Windows can't see anything to upload to.
-
----
diff --git a/users/wanleg/rules.mk b/users/wanleg/rules.mk
deleted file mode 100644
index cb447a1792..0000000000
--- a/users/wanleg/rules.mk
+++ /dev/null
@@ -1,45 +0,0 @@
-SRC += wanleg.c tapdances.c
-
-TAP_DANCE_ENABLE = yes
-MOUSEKEY_ENABLE = yes
-
-#If using a ProMicro and it has the QMK DFU bootloader instead of Caterina,
-#run "make <keyboard>:<keymap> dfu=qmk" when compiling to ensure it is flagged properly after being flashed
-ifeq ($(strip $(dfu)), qmk)
- BOOTLOADER = qmk-dfu
-endif
-
-#use alternate settings for boards using ProMicro instead of Micro
-#example usage: make 4x4:wanleg PM=yes
-ifeq ($(strip $(PM)), yes)
- OPT_DEFS += -DPRO_MICRO
-endif
-
-#use alternate settings for boards using "Adafruit Feather 32u4 Bluefruit LE" instead of Micro
-#example usage: make 5x5:wanleg BT=yes
-ifeq ($(strip $(BT)), yes)
- #opt_defs for alternate pin usage
- OPT_DEFS += -DBLUEFRUIT
- #Adafruit Bluefruit controller settings
- BLUETOOTH_ENABLE = yes
- BLUETOOTH_DRIVER = bluefruit_le
- F_CPU = 8000000
- CONSOLE_ENABLE = no # Console for debug(+400)
- COMMAND_ENABLE = no # Commands for debug and configuration
- RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-endif
-
-#move numpad to Left/Centre/Right(default) on 5x15 boards
-#example usage: make 4x4:wanleg padc=yes
-ifeq ($(strip $(padc)), yes)
- OPT_DEFS += -DPADC
-endif
-ifeq ($(strip $(padl)), yes)
- OPT_DEFS += -DPADL
-endif
-
-#change gherkin orientation (i.e. move USB port from right side to left side)
-#example usage: make gherkin:wanleg flip=yes
-ifeq ($(strip $(flip)), yes)
- OPT_DEFS += -DFLIP
-endif
diff --git a/users/wanleg/tapdances.c b/users/wanleg/tapdances.c
deleted file mode 100644
index 5d820df3b8..0000000000
--- a/users/wanleg/tapdances.c
+++ /dev/null
@@ -1,264 +0,0 @@
-//Tap Dance Settings
-#include "wanleg.h"
-
-//audio settings for one of the tap dances below
-#ifdef AUDIO_ENABLE
- float lyrup_song[][2] = SONG(MUSIC_ON_SOUND);
- float lyrdown_song[][2] = SONG(MUSIC_OFF_SOUND);
-#endif
-
-///// QUAD FUNCTION TAP DANCE GENERAL SETUP SECTION START /////
-///// (no need to edit this section) /////
-//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
- TRIPLE_TAP = 6,
- TRIPLE_HOLD = 7,
- TRIPLE_SINGLE_TAP = 8
- // Add more enums here if you want for triple, quadruple, etc.
-};
-
-typedef struct {
- bool is_press_action;
- int state;
-} tap;
-
-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) return SINGLE_TAP;
- if (state->interrupted) 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;
- }
-
- //If count = 3, and it has been interrupted - assume that user is trying to type the letter associated
- //with double tap.
- else if (state->count == 3) {
- if (state->interrupted) return TRIPLE_SINGLE_TAP;
- else if (state->pressed) return TRIPLE_HOLD;
- else return TRIPLE_TAP;
- }
- else return 9; //magic number. At some point this method will expand to work for more presses
-}
-///// QUAD FUNCTION TAP DANCE GENERAL SETUP SECTION END /////
-///// QUAD FUNCTION TAP DANCE PERSONALIZATION SECTION START /////
-//instantiate 'tap' for the 'CAD' tap dance.
-static tap CADtap_state = {
- .is_press_action = true,
- .state = 0
-};
-
-void CAD_finished (tap_dance_state_t *state, void *user_data) {
- CADtap_state.state = cur_dance(state);
- switch (CADtap_state.state) {
- case SINGLE_TAP:
- //register_code(KC_SPC);
- SEND_STRING(SS_LGUI("l"));
- #ifdef BACKLIGHT_ENABLE
- backlight_level(3);
- #endif
- break;
- case SINGLE_HOLD:
- //register_code(KC_NO);
- //take a screenshot of a single window, open Paint and paste
- SEND_STRING(SS_LALT(SS_TAP(X_PRINT_SCREEN)) SS_LGUI("r"));
- wait_ms(500);
- SEND_STRING("mspaint" SS_TAP(X_ENTER));
- wait_ms(700);
- SEND_STRING(SS_LCTL("v"));
- break; //register this keycode when button is held
- case DOUBLE_TAP:
- //register_code(KC_ENT);
- SEND_STRING(SS_LCTL(SS_LALT(SS_TAP(X_DELETE))));
- #ifdef BACKLIGHT_ENABLE
- backlight_level(0);
- #endif
- break;
- //case DOUBLE_HOLD: register_code(KC_NO); break; //register this keycode when button is tapped and then held
- case DOUBLE_HOLD:
- reset_keyboard();
- break; //register this keycode when button is tapped and then held
- case TRIPLE_TAP:
- SEND_STRING("wanleg@github.com");
- break;
- case TRIPLE_HOLD:
- set_single_persistent_default_layer(1);
- #ifdef AUDIO_ENABLE
- stop_all_notes();
- PLAY_SONG(lyrup_song);
- #endif
- break;
- }
-}
-
-void CAD_reset (tap_dance_state_t *state, void *user_data) {
- switch (CADtap_state.state) {
-//nothing to do
- }
- CADtap_state.state = 0;
-}
-
-//instantiate 'tap' for the 'RST' tap dance.
-static tap RSTtap_state = {
- .is_press_action = true,
- .state = 0
-};
-
-void RST_finished (tap_dance_state_t *state, void *user_data) {
- RSTtap_state.state = cur_dance(state);
- switch (RSTtap_state.state) {
- case SINGLE_TAP: register_code(KC_LCTL); break;
- case SINGLE_HOLD: register_code(KC_LCTL); break;
- case DOUBLE_TAP: reset_keyboard(); break;
- case DOUBLE_SINGLE_TAP: register_code(KC_LCTL); unregister_code(KC_LCTL); register_code(KC_LCTL); break;
- }
-}
-
-void RST_reset (tap_dance_state_t *state, void *user_data) {
- switch (RSTtap_state.state) {
- case SINGLE_TAP: unregister_code(KC_LCTL); break;
- case SINGLE_HOLD: unregister_code(KC_LCTL); break;
- case DOUBLE_SINGLE_TAP: unregister_code(KC_LCTL); break;
- }
- RSTtap_state.state = 0;
-}
-
-//instantiate 'tap' for the 'LYR' tap dance.
-static tap LYRtap_state = {
- .is_press_action = true,
- .state = 0
-};
-
-void LYR_finished (tap_dance_state_t *state, void *user_data) {
- LYRtap_state.state = cur_dance(state);
- switch (LYRtap_state.state) {
- case SINGLE_TAP: register_code(KC_PSLS); break;
- case DOUBLE_TAP: set_single_persistent_default_layer(_GK); break;
- case DOUBLE_SINGLE_TAP: register_code(KC_PSLS); unregister_code(KC_PSLS); register_code(KC_PSLS);
- }
-}
-
-void LYR_reset (tap_dance_state_t *state, void *user_data) {
- switch (LYRtap_state.state) {
- case SINGLE_TAP: unregister_code(KC_PSLS); break;
- case DOUBLE_TAP: set_single_persistent_default_layer(_GK); break;
- case DOUBLE_SINGLE_TAP: unregister_code(KC_PSLS);
- }
- LYRtap_state.state = 0;
-}
-
-//instantiate 'tap' for the 'LYR75' tap dance.
-static tap LYR75tap_state = {
- .is_press_action = true,
- .state = 0
-};
-
-void LYR75_finished (tap_dance_state_t *state, void *user_data) {
- LYR75tap_state.state = cur_dance(state);
- switch (LYR75tap_state.state) {
- case SINGLE_TAP: register_code(KC_PSLS); break;
- case DOUBLE_TAP: set_single_persistent_default_layer(_GK); break;
- case DOUBLE_SINGLE_TAP: register_code(KC_PSLS); unregister_code(KC_PSLS); register_code(KC_PSLS);
- }
-}
-
-void LYR75_reset (tap_dance_state_t *state, void *user_data) {
- switch (LYR75tap_state.state) {
- case SINGLE_TAP: unregister_code(KC_PSLS); break;
- case DOUBLE_TAP: set_single_persistent_default_layer(_GK); break;
- case DOUBLE_SINGLE_TAP: unregister_code(KC_PSLS);
- }
- LYR75tap_state.state = 0;
-}
-
-//instantiate 'tap' for the 'LYR50' tap dance.
-static tap LYR50tap_state = {
- .is_press_action = true,
- .state = 0
-};
-
-void LYR50_finished (tap_dance_state_t *state, void *user_data) {
- LYR50tap_state.state = cur_dance(state);
- switch (LYR75tap_state.state) {
- case SINGLE_TAP: register_code(KC_PSLS); break;
- case DOUBLE_TAP: set_single_persistent_default_layer(GK50); break;
- case DOUBLE_SINGLE_TAP: register_code(KC_PSLS); unregister_code(KC_PSLS); register_code(KC_PSLS);
- }
-}
-
-void LYR50_reset (tap_dance_state_t *state, void *user_data) {
- switch (LYR50tap_state.state) {
- case SINGLE_TAP: unregister_code(KC_PSLS); break;
- case DOUBLE_TAP: set_single_persistent_default_layer(GK50); break;
- case DOUBLE_SINGLE_TAP: unregister_code(KC_PSLS);
- }
- LYR50tap_state.state = 0;
-}
-
-//instantiate 'tap' for the 'BSW' tap dance.
-static tap BSWtap_state = {
- .is_press_action = true,
- .state = 0
-};
-
-void BSW_finished (tap_dance_state_t *state, void *user_data) {
- BSWtap_state.state = cur_dance(state);
- switch (BSWtap_state.state) {
- case SINGLE_TAP: register_code(KC_ENTER); break;
- case SINGLE_HOLD:
- set_single_persistent_default_layer(0);
- #ifdef AUDIO_ENABLE
- stop_all_notes();
- PLAY_SONG(lyrdown_song);
- #endif
- break;
- case DOUBLE_TAP:
- register_code(KC_LCTL);
- register_code(KC_C);
- break;
- case DOUBLE_HOLD:
- reset_keyboard();
- break; //register this keycode when button is tapped and then held
- }
-}
-
-void BSW_reset (tap_dance_state_t *state, void *user_data) {
- switch (BSWtap_state.state) {
- case SINGLE_TAP: unregister_code(KC_ENTER); break;
- case DOUBLE_TAP:
- unregister_code(KC_LCTL);
- unregister_code(KC_C);
- break;
- }
- BSWtap_state.state = 0;
-}
-
-///// QUAD FUNCTION TAP DANCE PERSONALIZATION SECTION END /////
-
-//Tap Dance Definitions
-//THIS SECTION HAS TO BE AT THE END OF THE TAP DANCE SECTION
-tap_dance_action_t tap_dance_actions[] = {
- [TD_SFT_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_LSFT, KC_CAPS)
-// Other declarations would go here, separated by commas, if you have them
- ,[TD_Q_ESC] = ACTION_TAP_DANCE_DOUBLE(KC_Q, KC_ESC)
- ,[RST_TAP_DANCE] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, RST_finished, RST_reset)
- ,[CAD_TD] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, CAD_finished, CAD_reset)
- ,[LYR_TAP_DANCE] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, LYR_finished, LYR_reset)
- ,[LYR75_TAP_DANCE] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, LYR75_finished, LYR75_reset)
- ,[LYR50_TAP_DANCE] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, LYR50_finished, LYR50_reset)
- ,[BSW_TAP_DANCE] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, BSW_finished, BSW_reset)
-};
-
-//In Layer declaration, add tap dance item in place of a key code
-//TD(TD_SFT_CAPS)
diff --git a/users/wanleg/wanleg.c b/users/wanleg/wanleg.c
deleted file mode 100644
index c8ca77676b..0000000000
--- a/users/wanleg/wanleg.c
+++ /dev/null
@@ -1,176 +0,0 @@
-#include "wanleg.h"
-
-// Defines actions for my global custom keycodes. Defined in wanleg.h file
-// Then runs the _keymap's record handier if not processed here
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case QWERTY:
- if (record->event.pressed) {
- set_single_persistent_default_layer(_QW);
- #if defined(RGBLIGHT_ENABLE)
- rgblight_sethsv_noeeprom(0,0,128);
- rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING);
- #endif
- }
- return false;
- break;
- case GHERKIN:
- if (record->event.pressed) {
- set_single_persistent_default_layer(_GK);
- #if defined(RGBLIGHT_ENABLE)
- rgblight_sethsv_noeeprom(128,255,64);
- #endif
- }
- return false;
- break;
- case gGHERKIN:
- if (record->event.pressed) {
- set_single_persistent_default_layer(gGK);
- #if defined(RGBLIGHT_ENABLE)
- rgblight_sethsv_noeeprom(128,255,128);
- rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT);
- #endif
- }
- return false;
- break;
- case ONEHAND:
- if (record->event.pressed) {
- set_single_persistent_default_layer(ONE);
- }
- return false;
- break;
- case NUMPAD:
- if (record->event.pressed) {
- set_single_persistent_default_layer(PAD);
- }
- return false;
- break;
- case GHERKIN50:
- if (record->event.pressed) {
- set_single_persistent_default_layer(GK50);
- }
- return false;
- break;
- case SUBTER:
- if (record->event.pressed) {
- layer_on(SUB);
- } else {
- layer_off(SUB);
- }
- return false;
- break;
- case SUPRA:
- if (record->event.pressed) {
- layer_on(SUP);
- } else {
- layer_off(SUP);
- }
- return false;
- break;
- case NUMBER:
- if (record->event.pressed) {
- layer_on(NUM);
- } else {
- layer_off(NUM);
- }
- return false;
- break;
- case DIRECTION:
- if (record->event.pressed) {
- layer_on(DIR);
- } else {
- layer_off(DIR);
- }
- return false;
- break;
- case ETCETERA:
- if (record->event.pressed) {
- layer_on(ETC);
- } else {
- layer_off(ETC);
- }
- return false;
- break;
- case gNUMBER:
- if (record->event.pressed) {
- layer_on(gNUM);
- } else {
- layer_off(gNUM);
- }
- return false;
- break;
- case gDIRECTION:
- if (record->event.pressed) {
- layer_on(gDIR);
- } else {
- layer_off(gDIR);
- }
- return false;
- break;
- case gETCETERA:
- if (record->event.pressed) {
- layer_on(gETC);
- } else {
- layer_off(gETC);
- }
- return false;
- break;
- case FUNCTION:
- if (record->event.pressed) {
- layer_on(_FN);
- } else {
- layer_off(_FN);
- }
- return false;
- break;
- //on RESET, underglow red if present
- case QK_BOOT:
- if (record->event.pressed) {
- #if defined(RGBLIGHT_ENABLE)
- rgblight_enable_noeeprom(); // enables Rgb, without saving settings
- rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
- rgblight_sethsv_noeeprom(HSV_RED);
- #endif
- }
- return true; // Let QMK send the press/release events as normal
- break;
- }
- return true;
-}
-
-/// Turn off LEDs on ProMicros of Let's Split ///
-// LEDs only on by default on Let's Split
-// 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) {
-//turn off pro micro LEDs
-#if defined(KEYBOARD_lets_split_rev2)
- DDRD &= ~(1<<5);
- PORTD &= ~(1<<5);
-
- DDRB &= ~(1<<0);
- PORTB &= ~(1<<0);
-#endif
-
-//disable backlight breathing for keyboard using random flashing RGB LEDs for backlight
-//(breathing provides insufficient power to integrated LED IC)
-#if defined(KEYBOARD_kbdfans_kbd6x) && defined(BACKLIGHT_BREATHING)
- breathing_disable();
-#endif
- matrix_init_keymap();
-}
-
-//at end of firmware startup process, change powerup default layer and underglow colour for kbd6x
-void keyboard_post_init_user(void) {
- #if defined(KEYBOARD_kbdfans_kbd6x)
- set_single_persistent_default_layer(_QW);
- rgblight_mode_noeeprom(RGBLIGHT_MODE_SNAKE + 5);
- rgblight_sethsv_noeeprom(0,0,128);
- #endif
-}
diff --git a/users/wanleg/wanleg.h b/users/wanleg/wanleg.h
deleted file mode 100644
index a9d1bbf6a6..0000000000
--- a/users/wanleg/wanleg.h
+++ /dev/null
@@ -1,322 +0,0 @@
-#pragma once
-
-#include "quantum.h"
-
-// Define layer names and order
-#if defined(KEYBOARD_40percentclub_gherkin) || defined(KEYBOARD_kbdfans_kbd6x)
-enum userspace_layers {
- gGK = 0,
- gNUM,
- gDIR,
- gETC,
- _GK,
- _QW,
- ONE,
- SUB,
- SUP,
- NUM,
- DIR,
- ETC,
- _FN,
- PAD,
- GK50,
-};
-#elif KEYBOARD_40percentclub_5x5
-enum userspace_layers {
- GK50 = 0,
- _GK,
- _QW,
- PAD,
- gNUM,
- gDIR,
- gETC,
- gGK,
- ONE,
- SUB,
- SUP,
- NUM,
- DIR,
- ETC,
- _FN,
-};
-#else
- enum userspace_layers {
- _GK = 0,
- _QW,
- PAD,
- ONE,
- SUB,
- SUP,
- NUM,
- DIR,
- ETC,
- gGK,
- gNUM,
- gDIR,
- gETC,
- _FN,
- GK50,
-};
-#endif
-
-enum userspace_custom_keycodes {
- gGHERKIN = SAFE_RANGE,
- GHERKIN,
- QWERTY,
- ONEHAND,
- SUBTER,
- SUPRA,
- NUMBER,
- DIRECTION,
- ETCETERA,
- gNUMBER,
- gDIRECTION,
- gETCETERA,
- FUNCTION,
- NUMPAD,
- GHERKIN50,
-
-};
-
-//Tap Dance Declarations (list of my tap dance configurations)
-#ifdef TAP_DANCE_ENABLE
-enum {
- TD_SFT_CAPS = 0
- ,TD_Q_ESC
- ,CAD_TD
- ,RST_TAP_DANCE
- ,LYR_TAP_DANCE
- ,LYR50_TAP_DANCE
- ,LYR75_TAP_DANCE
- ,BSW_TAP_DANCE
-};
-#endif
-
-// 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 KEYMAP_wrapper(...) LAYOUT(__VA_ARGS__)
-#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
-#define LAYOUT_ortho_3x10_wrapper(...) LAYOUT_ortho_3x10(__VA_ARGS__)
-#define LAYOUT_ortho_4x4_wrapper(...) LAYOUT_ortho_4x4(__VA_ARGS__)
-#define LAYOUT_ortho_4x12_wrapper(...) LAYOUT_ortho_4x12(__VA_ARGS__)
-#define LAYOUT_ortho_5x5_wrapper(...) LAYOUT_ortho_5x5(__VA_ARGS__)
-#define LAYOUT_ortho_5x10_wrapper(...) LAYOUT_ortho_5x10(__VA_ARGS__)
-#define LAYOUT_ortho_5x15_wrapper(...) LAYOUT_ortho_5x15(__VA_ARGS__)
-
-// Blocks for each of the 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.
-
-// 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.
-
-
-/* Gherkin
- * .-----------------------------------------------------------------------------------------.
- * | Q//ESC | W | E | R | T | Y | U | I | O | P |
- * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | A | S | D | F | G | H | J | K | L | SPACE |
- * | | | | | | | | | |SFThold |
- * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | Z | X | C | V/gNUM | B/gETC | N/Fn | M/gDIR | ,/GUI | ./ALT | BSPC |
- * | SFThold| | | | | | | | |CTRLhold|
- * '-----------------------------------------------------------------------------------------'
- */
-#define _______________Gherkin_Row_0_______________ TD(TD_Q_ESC), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P
-#define _______________Gherkin_Row_1_______________ KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, SFT_T(KC_SPC)
-#define _______________Gherkin_Row_2_______________ SFT_T(KC_Z), KC_X, KC_C, LT(gNUM,KC_V), LT(gETC,KC_B), LT(_FN,KC_N), LT(gDIR,KC_M), GUI_T(KC_COMM), ALT_T(KC_DOT), CTL_T(KC_BSPC)
-
-/* Gherkin Directional Keys
- * .-----------------------------------------------------------------------------------------.
- * | TAB | up | | INS | CTRL | SHIFT | PgUp | HOME | - | = |
- * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | left | down | right | PrScr | SHIFT | CTRL | PgDn | END | [ | ] |
- * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | P-Brk | | | | | | | RGUI | ALT | / |
- * '-----------------------------------------------------------------------------------------'
- */
-#define _______________Gherkin_DIR_0_______________ KC_TAB, KC_UP, _______, KC_INS, KC_LCTL, KC_RSFT, KC_PGUP, KC_HOME, KC_MINS, KC_EQL
-#define _______________Gherkin_DIR_1_______________ KC_LEFT, KC_DOWN, KC_RGHT, KC_PSCR, KC_LSFT, KC_RCTL, KC_PGDN, KC_END, KC_LBRC, KC_RBRC
-#define _______________Gherkin_DIR_2_______________ KC_PAUS, _______, _______, _______, _______, _______, _______, KC_RGUI, KC_LALT, KC_SLSH
-
-/* Gherkin Numbers
- * .-----------------------------------------------------------------------------------------.
- * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 |
- * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 |
- * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | F11 | F12 | | | | ENTER | SHIFT | GUI | ./ALT | BSPC |
- * | | | | | | | | | |CTRLhold|
- * '-----------------------------------------------------------------------------------------'
- */
-#define _______________Gherkin_NUM_0_______________ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10
-#define _______________Gherkin_NUM_1_______________ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0
-#define _______________Gherkin_NUM_2_______________ KC_F11, KC_F12, _______,_______, _______, KC_ENT, KC_RSFT, KC_RGUI, ALT_T(KC_DOT), CTL_T(KC_BSPC)
-
-/* Gherkin Et Cetera
- * .-----------------------------------------------------------------------------------------.
- * | ` | mUP | | ESC | RESET | SHIFT | mScrDn | mScrUp | | \ |
- * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | mLeft | mDown | mRight | | SHIFT | mBtn3 | mBtn1 | mBtn2 | ; | ' |
- * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | Sft//Cp| CAPS | | | | C-A-D | mScrL | mScrR | ALT | DEL |
- * '-----------------------------------------------------------------------------------------'
- */
-#define _______________Gherkin_ETC_0_______________ KC_GRV, KC_MS_U, _______,KC_ESC, QK_BOOT, KC_RSFT, KC_WH_D, KC_WH_U, _______, KC_BSLS
-#define _______________Gherkin_ETC_1_______________ KC_MS_L, KC_MS_D, KC_MS_R,_______, KC_LSFT, KC_BTN3, KC_BTN1, KC_BTN2, KC_SCLN, KC_QUOT
-#define _______________Gherkin_ETC_2_______________ TD(TD_SFT_CAPS),KC_CAPS, _______,_______, _______, LALT(LCTL(KC_DEL)), KC_WH_L, KC_WH_R, KC_LALT, KC_DEL
-
-/* Gherkin-Like
- * .-----------------------------------------------------------------------------------------------------------.
- * | ESC | Q//ESC | W | E | R | T | Y | U | I | O | P | BSPC |
- * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | TAB | A | S | D | F | G | H | J | K | L | SPACE | ' |
- * | | | | | | | | | | |SFThold | |
- * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * |SFT/CAPS| Z | X | C | V/NUM | B/ETC | N/Fn | M/DIR | ,/GUI | ./ALT | BSPC | ENT/SFT|
- * | |SFThold | | | | | | | | |CTRLhold| |
- * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | LCTRL | LGUI | ALT | ONEHAND| NUM | ETC | SPACE | DIR | RGUI | ALT | DEL | CTRL |
- * '-----------------------------------------------------------------------------------------------------------'
- */
-#define _______________GherkinLike_0_______________ KC_ESC, _______________Gherkin_Row_0_______________, KC_BSPC
-#define _______________GherkinLike_1_______________ KC_TAB, _______________Gherkin_Row_1_______________, KC_QUOT
-#define _______________GherkinLike_2_______________ TD(TD_SFT_CAPS), SFT_T(KC_Z), KC_X, KC_C, LT(NUM, KC_V),LT(ETC, KC_B),LT(_FN,KC_N), LT(DIR, KC_M), GUI_T(KC_COMM), ALT_T(KC_DOT), CTL_T(KC_BSPC), SFT_T(KC_ENT)
-#define _______________GherkinLike_3_______________ KC_LCTL, KC_LGUI, KC_LALT, KC_LALT, NUMBER, ETCETERA, KC_SPC,DIRECTION, KC_RGUI, KC_RALT, KC_DEL, KC_RCTL
-#define _______________GherkinLike_3_OneHand_______ KC_LCTL, KC_LGUI, KC_LALT, ONEHAND, NUMBER, ETCETERA, KC_SPC,DIRECTION, KC_RGUI, KC_RALT, ONEHAND, KC_RCTL
-
-/* Qwerty
- * .-------------------------------------------------------------------------------------.
- * | Esc | Q | W | E | R | T | Y | U | I | O | P | BSPC |
- * |-------+------+------+------+------+-------------+------+------+------+------+-------|
- * | Tab | A | S | D | F | G | H | J | K | L | ; | ' |
- * |-------+------+------+------+------+------|------+------+------+------+------+-------|
- * |Sft/Cps| Z | X | C | V | B | N | M | , | . | / |ENT/SFT|
- * |-------+------+------+------+------+------+------+------+------+------+------+-------|
- * | LCTRL | LGUI | ALT | ALT | SUB | SHIFT| SPACE| SUP | RGUI | RALT | DEL | CTRL |
- * '-------------------------------------------------------------------------------------'
- */
-#define _______________Qwerty_Row__0_______________ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC
-#define _______________Qwerty_Row__1_______________ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT
-#define _______________Qwerty_Row__2_______________ TD(TD_SFT_CAPS), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_ENT)
-#define _______________Qwerty_Row__3_______________ KC_LCTL, KC_LGUI, KC_LALT, KC_LALT, SUBTER, KC_LSFT, KC_SPC, SUPRA, KC_RGUI, KC_RALT, KC_DEL, KC_RCTL
-
-/* SUPRA
- * .-----------------------------------------------------------------------------------------------------------.
- * | RESET | TAB | up | | INS | CTRL | SHIFT | PgUp | Home | - | = | DEL |
- * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | | left | down | right | PrScr | SHIFT | CTRL | PgDn | End | [ | ] | \ |
- * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | | P-Brk | | | | | | | RGUI | ALT | | |
- * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | | | | | | | | | | | | |
- * '-----------------------------------------------------------------------------------------------------------'
- */
-#define ________________SUPRA_Row_0________________ QK_BOOT, KC_TAB, KC_UP, _______, KC_INS, KC_LCTL, KC_RSFT, KC_PGUP, KC_HOME, KC_MINS, KC_EQL, KC_DEL
-#define ________________SUPRA_Row_1________________ _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PSCR, KC_LSFT, KC_RCTL, KC_PGDN, KC_END, KC_LBRC, KC_RBRC, KC_BSLS
-#define ________________SUPRA_Row_2________________ _______, KC_PAUS, _______, _______, _______, _______, _______, _______, KC_RGUI, KC_RALT, _______, _______
-#define ________________SUPRA_Row_3________________ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
-
-/* SUBTER
- * .-----------------------------------------------------------------------------------------------------------.
- * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | DEL |
- * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | |
- * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | | F11 | F12 | | | | | | RGUI | ./ALT | BSPC | |
- * | | | | | | | | | | |CTRLhold| |
- * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | | | gherkin| | | | ENTER | SHIFT | | | | |
- * '-----------------------------------------------------------------------------------------------------------'
- */
-#define _______________SUBTER_Row__0_______________ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL
-#define _______________SUBTER_Row__1_______________ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______
-#define _______________SUBTER_Row__2_______________ _______, KC_F11, KC_F12, _______, _______, _______, _______, _______, KC_RGUI,ALT_T(KC_DOT), CTL_T(KC_BSPC), _______
-#define _______________SUBTER_Row__3_______________ _______, _______, GHERKIN, _______, _______, _______, KC_ENT, KC_LSFT, _______,_______, _______, _______
-
-/* Gherkin-Like Numbers
- * .-----------------------------------------------------------------------------------------------------------.
- * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | BSPC |
- * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | |
- * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | | F11 | F12 | | | | ENTER | SHIFT | RGUI | ./ALT | BSPC | |
- * | | | | | | | | | | |CTRLhold| |
- * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | | | | | | | ENTER | SHIFT | RGUI | | | |
- * '-----------------------------------------------------------------------------------------------------------'
- */
-#define _______________NUMBERS_Row_0_______________ _______, _______________Gherkin_NUM_0_______________, KC_BSPC
-#define _______________NUMBERS_Row_1_______________ _______, _______________Gherkin_NUM_1_______________, _______
-#define _______________NUMBERS_Row_2_______________ _______, _______________Gherkin_NUM_2_______________, _______
-#define _______________NUMBERS_Row_3_______________ _______, _______, _______, _______, _______, _______, KC_ENT, KC_RSFT, KC_RGUI, _______, _______, _______
-
-
-/* Gherkin-Like Directional Keys
- * .-----------------------------------------------------------------------------------------------------------.
- * | | TAB | up | | INS | CTRL | SHIFT | PgUp | HOME | - | = | DEL |
- * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | | left | down | right | PrScr | SHIFT | CTRL | PgDn | END | [ | ] | |
- * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | | P-Brk | | | | | | | RGUI | ALT | / | |
- * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | | | qwerty | | | | | | | | | |
- * '-----------------------------------------------------------------------------------------------------------'
- */
-#define _____________DIRECTIONS_Row__0_____________ _______, _______________Gherkin_DIR_0_______________, KC_DEL
-#define _____________DIRECTIONS_Row__1_____________ _______, _______________Gherkin_DIR_1_______________, _______
-#define _____________DIRECTIONS_Row__2_____________ _______, _______________Gherkin_DIR_2_______________, _______
-#define _____________DIRECTIONS_Row__3_____________ _______, _______, QWERTY, _______, _______, _______, _______, _______, _______, _______, _______, _______
-
-/* Gherkin-Like Et Cetera
- * .-----------------------------------------------------------------------------------------------------------.
- * | | ` | mUP | | | RESET | SHIFT | mScrDn | mScrUp | | \ | DEL |
- * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | | mLeft | mDown | mRight | | SHIFT | mBtn3 | mBtn1 | mBtn2 | ; | ' | |
- * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | | Sft//Cp| | | | | C-A-D |mScrLeft| mScrRt | ALT | DEL | |
- * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | | | | | | | C-A-D | | | | | |
- * '-----------------------------------------------------------------------------------------------------------'
- */
-#define ______________ETCETERA_Row__0______________ _______, _______________Gherkin_ETC_0_______________, KC_DEL
-#define ______________ETCETERA_Row__1______________ _______, _______________Gherkin_ETC_1_______________, _______
-#define ______________ETCETERA_Row__2______________ _______, _______________Gherkin_ETC_2_______________, _______
-#define ______________ETCETERA_Row__3______________ _______, _______, _______, _______, _______, _______, LALT(LCTL(KC_DEL)), _______, _______, _______, _______, _______
-
-/* Single 4x4 board only
- * .-----------------------------------.
- * | 7 | 8 | 9 | BSPC |
- * |--------+--------+--------+--------|
- * | 4 | 5 | 6 | SPACE |
- * |--------+--------+--------+--------|
- * | 1 | 2 | 3 | ENTER |
- * |--------+--------+--------+--------|
- * | 0 |/ //_GK | . | - |
- * '-----------------------------------'
- */
-
-#define _______________NUMPAD_Row__0_______________ KC_KP_7, KC_KP_8, KC_KP_9, KC_BSPC
-#define _______________NUMPAD_Row__1_______________ KC_KP_4, KC_KP_5, KC_KP_6, KC_SPC
-#define _______________NUMPAD_Row__2_______________ KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT
-#define _______________NUMPAD_Row__3_______________ KC_KP_0, TD(LYR_TAP_DANCE), KC_KP_DOT, KC_PMNS
-
-/* Gherkin FN/Lighting
- * .-----------------------------------------------------------------------------------------------------.
- * | BL_breathe | BL_brite- | BL_brite+ | BL_toggle | BL_briteCyc | BL_briteMax | | | | |
- * |------------+-----------+-----------+-----------+-------------+-------------+-----+-----+-----+------|
- * | UG_breathe | UG_brite- | UG_brite+ | UG_toggle | UG_modeCycle| | | | | |
- * |------------+-----------+-----------+-----------+-------------+-------------+-----+-----+-----+------|
- * | UG_hue- | UG_hue+ | UG_sat- | UG_sat+ | | | | | |QWERTY|
- * '-----------------------------------------------------------------------------------------------------'
- */
-#define _______________Gherkin_FN_0________________ BL_BRTG, BL_DOWN, BL_UP, BL_TOGG, BL_STEP, BL_ON, _______, _______, _______, _______
-#define _______________Gherkin_FN_1________________ RGB_M_B, RGB_VAD, RGB_VAI, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______
-#define _______________Gherkin_FN_2________________ RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, _______, _______, _______, _______, _______, QWERTY
diff --git a/users/xtonhasvim/fancylighting.c b/users/xtonhasvim/fancylighting.c
deleted file mode 100644
index e3d1093b8d..0000000000
--- a/users/xtonhasvim/fancylighting.c
+++ /dev/null
@@ -1,172 +0,0 @@
- /* Copyright 2015-2017 Christon DeWan
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifdef RGBLIGHT_ENABLE
-
-#include <math.h>
-
-#include "rgblight.h"
-#include "color.h"
-#include "fancylighting.h"
-
-
-__attribute__ ((weak))
-void matrix_scan_keymap(void) {
- // override me, if you want.
- return;
-}
-
-#define ABSDIFF(a,b) ((a)>(b)?(a)-(b):(b)-(a))
-
-#define FADE_BACK_TIME 500
-#define BREATH_FIRE_TIME 1000
-#define ANIMATION_STEP_INTERVAL 20
-
-#if RGBLED_NUM >= 2
-#define POWER_KEY_OFFSET (RGBLED_NUM / 2)
-#define SPACE_OFFSET_MAX (RGBLED_NUM / 2)
-#else
-#define POWER_KEY_OFFSET 1
-#define SPACE_OFFSET_MAX 1
-#endif
-
-uint16_t effect_start_timer = 0;
-uint8_t user_rgb_mode = 0;
-rgb_led_t shadowed_led[RGBLED_NUM] = {{0}};
-
-void start_firey_return(void) {
- user_rgb_mode = BREATH_FIRE;
- effect_start_timer = timer_read();
- for(uint8_t i = 0; i < RGBLED_NUM; i++) {
- shadowed_led[i] = led[i];
- }
-}
-
-/** 0---max
- * [___]
- * [__/]
- * [_/\]
- * [/\_]
- * [\__]
- * [___]
- **/
-
-void set_color_for_offsets(uint16_t time_offset, uint16_t space_offset, uint8_t idx) {
- float time_progress = (float)time_offset / BREATH_FIRE_TIME;
- float space_progress = (float)space_offset / SPACE_OFFSET_MAX;
- float progress = time_progress * 5.0 - space_progress;
- if(progress > 1.0) {
- progress -= 1.0;
- progress /= 4.0;
- progress = 1.0 - progress;
- }
- progress = fmax(0.0,progress);
- progress *= progress; // squared!
-
- float alpha = (time_progress + 0.1) * 7.0 - space_progress;
- alpha = fmin(1.0, alpha*alpha);
-
- rgb_led_t px[1] = {{0}};
- sethsv((uint16_t)(fmod(time_progress * 1.5 + space_progress,1.0)*360), 255, (uint8_t)(progress*255),&px[0]);
- led[idx].r = alpha * px[0].r + ( 1.0 - alpha) * shadowed_led[idx].r;
- led[idx].g = alpha * px[0].g + ( 1.0 - alpha) * shadowed_led[idx].g;
- led[idx].b = alpha * px[0].b + ( 1.0 - alpha) * shadowed_led[idx].b;
-}
-
-/**
- * It's actually a rainbow: a fire curve didn't really look right.
- * it's still cool, though!
- */
-void rgb_mode_breath_fire(void) {
- static uint16_t last_timer = 0;
- if(!last_timer) last_timer = timer_read();
- uint16_t this_timer = timer_read();
-
- // too soon. don't spam updates
- if(this_timer - last_timer < ANIMATION_STEP_INTERVAL) return;
-
- uint16_t elapsed = this_timer - effect_start_timer;
-
- last_timer = this_timer;
- if(elapsed >= BREATH_FIRE_TIME) {
- // complete
- user_rgb_mode = FADE_BACK;
- effect_start_timer = this_timer;
- } else {
- // linear fade
- for(uint16_t i = 0; i < RGBLED_NUM; i++) {
- uint16_t space_offset = ABSDIFF(i,POWER_KEY_OFFSET);
- if(space_offset > SPACE_OFFSET_MAX) space_offset = RGBLED_NUM - space_offset;
-
- set_color_for_offsets(elapsed, space_offset, i);
- }
- rgblight_set();
- }
-}
-
-void rgb_mode_fade_back(void) {
- static uint16_t last_timer = 0;
- if(!last_timer) last_timer = timer_read();
- uint16_t this_timer = timer_read();
-
- // too soon. don't spam updates
- if(this_timer - last_timer < ANIMATION_STEP_INTERVAL) return;
-
- uint16_t elapsed = this_timer - effect_start_timer;
-
- last_timer = this_timer;
- float progress = (float)elapsed / FADE_BACK_TIME;
- progress = fmin(1.0,progress);
-
- for(uint8_t i = 0; i < RGBLED_NUM; i++) {
- led[i].r = shadowed_led[i].r * progress;
- led[i].g = shadowed_led[i].g * progress;
- led[i].b = shadowed_led[i].b * progress;
- }
- rgblight_set();
-
- if(elapsed >= FADE_BACK_TIME) user_rgb_mode = 0;
-}
-
-/** called when layer state or vstate has changed */
-__attribute__ ((weak))
-void set_state_leds(void) {
- return;
-}
-
-void matrix_scan_user(void) {
- static uint32_t last_layer = 0;
- static uint32_t last_vstate = 0;
- if(last_layer != layer_state || last_vstate != vstate) set_state_leds();
- last_layer = layer_state;
- last_vstate = vstate;
-
- switch (user_rgb_mode) {
- case BREATH_FIRE:
- rgb_mode_breath_fire();
- break;
- case FADE_BACK:
- rgb_mode_fade_back();
- break;
- }
- matrix_scan_keymap();
-}
-
-#else
-
-void start_firey_return(void) {}
-
-#endif
diff --git a/users/xtonhasvim/fancylighting.h b/users/xtonhasvim/fancylighting.h
deleted file mode 100644
index b1a5c725f1..0000000000
--- a/users/xtonhasvim/fancylighting.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Copyright 2015-2017 Christon DeWan
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef _fancy_lighting_h
-#define _fancy_lighting_h
-#ifdef RGBLIGHT_ENABLE
-
-#include "xtonhasvim.h"
-
-
-extern uint8_t user_rgb_mode;
-extern rgb_led_t shadowed_led[];
-
-
-#endif //RGBLIGHT_ENABLE
-void start_firey_return(void);
-
-enum xtonhasvim_rgbmodes {
- BREATH_FIRE = 1,
- FADE_BACK
-};
-
-#endif //_fancy_lighting_h
diff --git a/users/xtonhasvim/readme.md b/users/xtonhasvim/readme.md
deleted file mode 100644
index e08e972f4d..0000000000
--- a/users/xtonhasvim/readme.md
+++ /dev/null
@@ -1,10 +0,0 @@
-
-# Xton has Vim!
-
-Contains common code for Xton's vim emulation (vimulation?) layer.
-
-Inspired/stolen from the `ergodox_ez/vim` keymap. Rewritten to be a more straightforward state machine and support more macros. Vim layers `_CMD` and `_EDIT` are designed to lay on top of an otherwise fully-functional layout. `_CMD` runs the entire vim state machine while `_EDIT` should lay across your base layer and mask off just the escape key.
-
-Works via OSX text editing shortcuts, mainly MOD+arrow combinations. This has some limitations and only works on OSX.
-
-The `_CMD` layer will temporarily disable itself while *CMD* or *ALT* are held down so that typical OSX shortcuts can be used without switching out of vim mode.
diff --git a/users/xtonhasvim/rules.mk b/users/xtonhasvim/rules.mk
deleted file mode 100644
index a901bfcf67..0000000000
--- a/users/xtonhasvim/rules.mk
+++ /dev/null
@@ -1,2 +0,0 @@
-SRC += xtonhasvim.c
-SRC += fancylighting.c
diff --git a/users/xtonhasvim/xtonhasvim.c b/users/xtonhasvim/xtonhasvim.c
deleted file mode 100644
index a33dc68cad..0000000000
--- a/users/xtonhasvim/xtonhasvim.c
+++ /dev/null
@@ -1,643 +0,0 @@
- /* Copyright 2015-2017 Christon DeWan
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "xtonhasvim.h"
-#include "fancylighting.h"
-
-/************************************
- * helper foo
- ************************************/
-
-#define PRESS(kc) register_code(kc)
-#define RELEASE(kc) unregister_code(kc)
-
-static void TAP(uint16_t keycode) {
- PRESS(keycode);
- RELEASE(keycode);
-}
-
-static void CMD(uint16_t keycode) {
- PRESS(KC_LGUI);
- TAP(keycode);
- RELEASE(KC_LGUI);
-}
-
-static void CTRL(uint16_t keycode) {
- PRESS(KC_LCTL);
- TAP(keycode);
- RELEASE(KC_LCTL);
-}
-
-static void SHIFT(uint16_t keycode) {
- PRESS(KC_LSFT);
- TAP(keycode);
- RELEASE(KC_LSFT);
-}
-
-static void ALT(uint16_t keycode) {
- PRESS(KC_LALT);
- TAP(keycode);
- RELEASE(KC_LALT);
-}
-
-
-uint16_t vstate = VIM_START;
-static bool yank_was_lines = false;
-static bool SHIFTED = false;
-static uint32_t mod_override_layer_state = 0;
-static uint16_t mod_override_triggering_key = 0;
-
-static void edit(void) { vstate = VIM_START; layer_clear(); }
-#define EDIT edit()
-
-
-static void simple_movement(uint16_t keycode) {
- switch(keycode) {
- case VIM_B:
- PRESS(KC_LALT);
- SHIFT(KC_LEFT); // select to start of this word
- RELEASE(KC_LALT);
- break;
- case VIM_E:
- PRESS(KC_LALT);
- SHIFT(KC_RIGHT); // select to end of this word
- RELEASE(KC_LALT);
- break;
- case VIM_H:
- SHIFT(KC_LEFT);
- break;
- case VIM_J:
- CMD(KC_LEFT);
- SHIFT(KC_DOWN);
- SHIFT(KC_DOWN);
- break;
- case VIM_K:
- CMD(KC_LEFT);
- TAP(KC_DOWN);
- SHIFT(KC_UP);
- SHIFT(KC_UP);
- break;
- case VIM_L:
- SHIFT(KC_RIGHT);
- break;
- case VIM_W:
- PRESS(KC_LALT);
- SHIFT(KC_RIGHT); // select to end of this word
- SHIFT(KC_RIGHT); // select to end of next word
- SHIFT(KC_LEFT); // select to start of next word
- RELEASE(KC_LALT);
- break;
- }
-}
-
-static void comma_period(uint16_t keycode) {
- switch (keycode) {
- case VIM_COMMA:
- if (SHIFTED) {
- // indent
- CMD(KC_LEFT_BRACKET);
- } else {
- // toggle comment
- CMD(KC_SLASH);
- }
- break;
- case VIM_PERIOD:
- if (SHIFTED) {
- // outdent
- CMD(KC_RIGHT_BRACKET);
- }
- break;
- }
-}
-
-__attribute__ ((weak))
-bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
- return true;
-}
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- /* keymap gets first whack */
- if(!process_record_keymap(keycode, record)) return false;
-
- /****** FIREY_RETURN *****/
- if(record->event.pressed && keycode == FIREY_RETURN) {
- start_firey_return();
- TAP(KC_ENT);
- }
-
- /****** mod passthru *****/
- if(record->event.pressed && layer_state_is(vim_cmd_layer()) && (IS_MODIFIER_KEYCODE(keycode) || keycode == LSFT(KC_LALT))) {
- mod_override_layer_state = layer_state;
- mod_override_triggering_key = keycode;
- // TODO: change this to track key location instead
- layer_clear();
- return true; // let the event fall through...
- }
- if(mod_override_layer_state && !record->event.pressed && keycode == mod_override_triggering_key) {
- layer_state_set(mod_override_layer_state);
- mod_override_layer_state = 0;
- mod_override_triggering_key = 0;
- return true;
- }
-
- if (VIM_START <= keycode && keycode <= VIM_ESC) {
- if(keycode == VIM_SHIFT) {
- SHIFTED = record->event.pressed;
- return false;
- }
-
- if (record->event.pressed) {
- if(keycode == VIM_START) {
- // entry from anywhere
- layer_on(vim_cmd_layer());
- vstate = VIM_START;
-
- // reset state
- yank_was_lines = false;
- SHIFTED = false;
- mod_override_layer_state = 0;
- mod_override_triggering_key = 0;
-
- return false;
- }
- switch(vstate) {
- case VIM_START:
- switch(keycode){
- /*****************************
- * ground state
- *****************************/
- case VIM_A:
- if(SHIFTED) {
- // CMD(KC_RIGHT);
- CTRL(KC_E);
- } else {
- TAP(KC_RIGHT);
- }
- EDIT;
- break;
- case VIM_B:
- PRESS(KC_LALT);
- PRESS(KC_LEFT);
- break;
- case VIM_C:
- if(SHIFTED) {
- PRESS(KC_LSFT);
- CMD(KC_RIGHT);
- RELEASE(KC_LSFT);
- CMD(KC_X);
- yank_was_lines = false;
- EDIT;
- } else {
- vstate = VIM_C;
- }
- break;
- case VIM_D:
- if(SHIFTED) {
- CTRL(KC_K);
- } else {
- vstate = VIM_D;
- }
- break;
- case VIM_E:
- PRESS(KC_LALT);
- PRESS(KC_RIGHT);
- break;
- case VIM_G:
- if(SHIFTED) {
- TAP(KC_END);
- } else {
- vstate = VIM_G;
- }
- break;
- case VIM_H:
- PRESS(KC_LEFT);
- break;
- case VIM_I:
- if(SHIFTED){
- CTRL(KC_A);
- }
- EDIT;
- break;
- case VIM_J:
- if(SHIFTED) {
- CMD(KC_RIGHT);
- TAP(KC_DEL);
- } else {
- PRESS(KC_DOWN);
- }
- break;
- case VIM_K:
- PRESS(KC_UP);
- break;
- case VIM_L:
- PRESS(KC_RIGHT);
- break;
- case VIM_O:
- if(SHIFTED) {
- CMD(KC_LEFT);
- TAP(KC_ENTER);
- TAP(KC_UP);
- EDIT;
- } else {
- CMD(KC_RIGHT);
- TAP(KC_ENTER);
- EDIT;
- }
- break;
- case VIM_P:
- if(SHIFTED) {
- CMD(KC_LEFT);
- CMD(KC_V);
- } else {
- if(yank_was_lines) {
- CMD(KC_RIGHT);
- TAP(KC_RIGHT);
- CMD(KC_V);
- } else {
- CMD(KC_V);
- }
- }
- break;
- case VIM_S:
- // s for substitute?
- if(SHIFTED) {
- CMD(KC_LEFT);
- PRESS(KC_LSFT);
- CMD(KC_RIGHT);
- RELEASE(KC_LSFT);
- CMD(KC_X);
- yank_was_lines = false;
- EDIT;
- } else {
- SHIFT(KC_RIGHT);
- CMD(KC_X);
- yank_was_lines = false;
- EDIT;
- }
- break;
- case VIM_U:
- if(SHIFTED) {
- PRESS(KC_LSFT);
- CMD(KC_Z);
- RELEASE(KC_LSFT);
- } else {
- CMD(KC_Z);
- }
- break;
- case VIM_V:
- if(SHIFTED) {
- CMD(KC_LEFT);
- SHIFT(KC_DOWN);
- vstate = VIM_VS;
- } else {
- vstate = VIM_V;
- }
- break;
- case VIM_W:
- PRESS(KC_LALT);
- TAP(KC_RIGHT);
- TAP(KC_RIGHT);
- TAP(KC_LEFT);
- RELEASE(KC_LALT);
- break;
- case VIM_X:
- // SHIFT(KC_RIGHT);
- // CMD(KC_X);
- PRESS(KC_DEL);
- break;
- case VIM_Y:
- if(SHIFTED) {
- CMD(KC_LEFT);
- SHIFT(KC_DOWN);
- CMD(KC_C);
- TAP(KC_RIGHT);
- yank_was_lines = true;
- } else {
- vstate = VIM_Y;
- }
- break;
- case VIM_COMMA:
- case VIM_PERIOD:
- comma_period(keycode);
- break;
- }
- break;
- case VIM_C:
- /*****************************
- * c- ...for change. I never use this...
- *****************************/
- switch(keycode) {
- case VIM_B:
- case VIM_E:
- case VIM_H:
- case VIM_J:
- case VIM_K:
- case VIM_L:
- case VIM_W:
- simple_movement(keycode);
- CMD(KC_X);
- yank_was_lines = false;
- EDIT;
- break;
-
- case VIM_C:
- CMD(KC_LEFT);
- PRESS(KC_LSFT);
- CMD(KC_RIGHT);
- RELEASE(KC_LSFT);
- CMD(KC_X);
- yank_was_lines = false;
- EDIT;
- break;
- case VIM_I:
- vstate = VIM_CI;
- break;
- default:
- vstate = VIM_START;
- break;
- }
- break;
- case VIM_CI:
- /*****************************
- * ci- ...change inner word
- *****************************/
- switch(keycode) {
- case VIM_W:
- ALT(KC_LEFT);
- PRESS(KC_LSFT);
- ALT(KC_RIGHT);
- RELEASE(KC_LSFT);
- CMD(KC_X);
- yank_was_lines = false;
- EDIT;
- default:
- vstate = VIM_START;
- break;
- }
- break;
- case VIM_D:
- /*****************************
- * d- ...delete stuff
- *****************************/
- switch(keycode) {
- case VIM_B:
- case VIM_E:
- case VIM_H:
- case VIM_J:
- case VIM_K:
- case VIM_L:
- case VIM_W:
- simple_movement(keycode);
- CMD(KC_X);
- yank_was_lines = false;
- vstate = VIM_START;
- break;
- case VIM_D:
- CMD(KC_LEFT);
- SHIFT(KC_DOWN);
- CMD(KC_X);
- yank_was_lines = true;
- vstate = VIM_START;
- break;
- case VIM_I:
- vstate = VIM_DI;
- break;
- default:
- vstate = VIM_START;
- break;
- }
- break;
- case VIM_DI:
- /*****************************
- * ci- ...delete a word... FROM THE INSIDE!
- *****************************/
- switch(keycode) {
- case VIM_W:
- ALT(KC_LEFT);
- PRESS(KC_LSFT);
- ALT(KC_RIGHT);
- RELEASE(KC_LSFT);
- CMD(KC_X);
- yank_was_lines = false;
- vstate = VIM_START;
- default:
- vstate = VIM_START;
- break;
- }
- break;
- case VIM_V:
- /*****************************
- * visual!
- *****************************/
- switch(keycode) {
- case VIM_D:
- case VIM_X:
- CMD(KC_X);
- yank_was_lines = false;
- vstate = VIM_START;
- break;
- case VIM_B:
- PRESS(KC_LALT);
- PRESS(KC_LSFT);
- PRESS(KC_LEFT);
- // leave open for key repeat
- break;
- case VIM_E:
- PRESS(KC_LALT);
- PRESS(KC_LSFT);
- PRESS(KC_RIGHT);
- // leave open for key repeat
- break;
- case VIM_H:
- PRESS(KC_LSFT);
- PRESS(KC_LEFT);
- break;
- case VIM_I:
- vstate = VIM_VI;
- break;
- case VIM_J:
- PRESS(KC_LSFT);
- PRESS(KC_DOWN);
- break;
- case VIM_K:
- PRESS(KC_LSFT);
- PRESS(KC_UP);
- break;
- case VIM_L:
- PRESS(KC_LSFT);
- PRESS(KC_RIGHT);
- break;
- case VIM_W:
- PRESS(KC_LALT);
- SHIFT(KC_RIGHT); // select to end of this word
- SHIFT(KC_RIGHT); // select to end of next word
- SHIFT(KC_LEFT); // select to start of next word
- RELEASE(KC_LALT);
- break;
- case VIM_P:
- CMD(KC_V);
- vstate = VIM_START;
- break;
- case VIM_Y:
- CMD(KC_C);
- TAP(KC_RIGHT);
- yank_was_lines = false;
- vstate = VIM_START;
- break;
- case VIM_V:
- case VIM_ESC:
- TAP(KC_RIGHT);
- vstate = VIM_START;
- break;
- case VIM_COMMA:
- case VIM_PERIOD:
- comma_period(keycode);
- break;
- default:
- // do nothing
- break;
- }
- break;
- case VIM_VI:
- /*****************************
- * vi- ...select a word... FROM THE INSIDE!
- *****************************/
- switch(keycode) {
- case VIM_W:
- ALT(KC_LEFT);
- PRESS(KC_LSFT);
- ALT(KC_RIGHT);
- RELEASE(KC_LSFT);
- vstate = VIM_V;
- default:
- // ignore
- vstate = VIM_V;
- break;
- }
- break;
- case VIM_VS:
- /*****************************
- * visual line
- *****************************/
- switch(keycode) {
- case VIM_D:
- case VIM_X:
- CMD(KC_X);
- yank_was_lines = true;
- vstate = VIM_START;
- break;
- case VIM_J:
- PRESS(KC_LSFT);
- PRESS(KC_DOWN);
- break;
- case VIM_K:
- PRESS(KC_LSFT);
- PRESS(KC_UP);
- break;
- case VIM_Y:
- CMD(KC_C);
- yank_was_lines = true;
- TAP(KC_RIGHT);
- vstate = VIM_START;
- break;
- case VIM_P:
- CMD(KC_V);
- vstate = VIM_START;
- break;
- case VIM_V:
- case VIM_ESC:
- TAP(KC_RIGHT);
- vstate = VIM_START;
- break;
- case VIM_COMMA:
- case VIM_PERIOD:
- comma_period(keycode);
- break;
- default:
- // do nothing
- break;
- }
- break;
- case VIM_G:
- /*****************************
- * gg, and a grab-bag of other macros i find useful
- *****************************/
- switch(keycode) {
- case VIM_G:
- TAP(KC_HOME);
- break;
- // codes b
- case VIM_H:
- CTRL(KC_A);
- break;
- case VIM_J:
- PRESS(KC_PGDN);
- break;
- case VIM_K:
- PRESS(KC_PGUP);
- break;
- case VIM_L:
- CTRL(KC_E);
- break;
- default:
- // do nothing
- break;
- }
- vstate = VIM_START;
- break;
- case VIM_Y:
- /*****************************
- * yoink!
- *****************************/
- switch(keycode) {
- case VIM_B:
- case VIM_E:
- case VIM_H:
- case VIM_J:
- case VIM_K:
- case VIM_L:
- case VIM_W:
- simple_movement(keycode);
- CMD(KC_C);
- TAP(KC_RIGHT);
- yank_was_lines = false;
- break;
- case VIM_Y:
- CMD(KC_LEFT);
- SHIFT(KC_DOWN);
- CMD(KC_C);
- TAP(KC_RIGHT);
- yank_was_lines = true;
- break;
- default:
- // NOTHING
- break;
- }
- vstate = VIM_START;
- break;
- }
- } else {
- /************************
- * key release events
- ************************/
- clear_keyboard();
- }
- return false;
- } else {
- return true;
- }
-}
-
diff --git a/users/xtonhasvim/xtonhasvim.h b/users/xtonhasvim/xtonhasvim.h
deleted file mode 100644
index 2d6670a5e6..0000000000
--- a/users/xtonhasvim/xtonhasvim.h
+++ /dev/null
@@ -1,65 +0,0 @@
- /* Copyright 2015-2017 Christon DeWan
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef USERSPACE
-#define USERSPACE
-
-#include QMK_KEYBOARD_H
-#include "action_layer.h"
-
-#define X_____X KC_NO
-
-enum xtonhasvim_keycodes {
- // 20: give keyboard-specific codes some room
- FIREY_RETURN = SAFE_RANGE + 20, // kick off special effects
- VIM_START, // bookend for vim states
- VIM_A,
- VIM_B,
- VIM_C,
- VIM_CI,
- VIM_D,
- VIM_DI,
- VIM_E,
- VIM_H,
- VIM_G,
- VIM_I,
- VIM_J,
- VIM_K,
- VIM_L,
- VIM_O,
- VIM_P,
- VIM_S,
- VIM_U,
- VIM_V,
- VIM_VS, // visual-line
- VIM_VI,
- VIM_W,
- VIM_X,
- VIM_Y,
- VIM_PERIOD, // to support indent/outdent
- VIM_COMMA, // and toggle comments
- VIM_SHIFT, // avoid side-effect of supporting real shift.
- VIM_ESC, // bookend
- VIM_SAFE_RANGE // start other keycodes here.
-};
-
-// NOTE: YOU MUST DEFINE THIS
-extern uint8_t vim_cmd_layer(void);
-
-extern uint16_t vstate;
-
-
-#endif
diff --git a/users/xulkal/config.h b/users/xulkal/config.h
deleted file mode 100644
index bc175dda98..0000000000
--- a/users/xulkal/config.h
+++ /dev/null
@@ -1,36 +0,0 @@
-#pragma once
-
-#undef TAPPING_TERM
-#define TAPPING_TERM 175
-
-#undef QUICK_TAP_TERM
-#define QUICK_TAP_TERM TAPPING_TERM
-
-#define SPACE_CADET_MODIFIER_CARRYOVER
-#define LSPO_KEYS KC_LSFT, KC_TRNS, KC_LBRC
-#define RSPC_KEYS KC_RSFT, KC_TRNS, KC_RBRC
-#define LCPO_KEYS KC_LCTL, KC_TRNS, KC_MINS
-#define RCPC_KEYS KC_RCTL, KC_TRNS, KC_EQL
-
-// Running out of firmware space
-#if defined(__AVR__)
-#undef RGB_MATRIX_KEYPRESSES
-#undef RGB_MATRIX_KEYRELEASES
-#undef RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#else
-# define RGB_MATRIX_KEYPRESSES
-# undef RGB_MATRIX_KEYRELEASES
-# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-# define ENABLE_TYPING_HEATMAP_DISTANCE_CHECK
-#endif
-
-// No need for the single versions when multi performance isn't a problem =D
-#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#undef ENABLE_RGB_MATRIX_SPLASH
-#undef ENABLE_RGB_MATRIX_SOLID_SPLASH
-
-// 20m timeout (20m * 60s * 1000mil)
-#define RGB_MATRIX_TIMEOUT 1200000
-#define OLED_SCROLL_TIMEOUT 20000
diff --git a/users/xulkal/custom_encoder.c b/users/xulkal/custom_encoder.c
deleted file mode 100644
index acd0275a8b..0000000000
--- a/users/xulkal/custom_encoder.c
+++ /dev/null
@@ -1,73 +0,0 @@
-#include "custom_encoder.h"
-#include "custom_keycodes.h"
-
-#ifdef RGB_OLED_MENU
-#include "custom_rgb.h"
-
-// I'm lazy and like constants over calculations, also using it as a compile time check
-#if defined(RGB_MATRIX_ENABLE)
- #define RGB_FUNCTION_COUNT 6
-#elif defined(RGBLIGHT_ENABLE)
- #define RGB_FUNCTION_COUNT 5
-#endif
-
-typedef void (*rgb_f)(void);
-
-const rgb_f rgb_functions[RGB_FUNCTION_COUNT][2] = {
-#if defined(RGB_MATRIX_ENABLE)
- { rgb_matrix_increase_hue, rgb_matrix_decrease_hue },
- { rgb_matrix_increase_sat, rgb_matrix_decrease_sat },
- { rgb_matrix_increase_val, rgb_matrix_decrease_val },
- { rgb_matrix_increase_speed, rgb_matrix_decrease_speed },
- { rgb_matrix_step, rgb_matrix_step_reverse },
- { rgb_matrix_increase_flags, rgb_matrix_decrease_flags }
-#elif defined(RGBLIGHT_ENABLE)
- { rgblight_increase_hue, rgblight_decrease_hue },
- { rgblight_increase_sat, rgblight_decrease_sat },
- { rgblight_increase_val, rgblight_decrease_val },
- { rgblight_increase_speed, rgblight_decrease_speed },
- { rgblight_step, rgblight_step_reverse }
-#endif
-};
-
-// Start at the end for mode
-uint8_t rgb_encoder_state = 4;
-
-bool process_record_encoder(uint16_t keycode, keyrecord_t *record)
-{
- switch (keycode)
- {
- case RGB_ENC:
- if (record->event.pressed) {
- if (get_mods() & MOD_MASK_SHIFT) {
- rgb_encoder_state = (rgb_encoder_state - 1);
- if (rgb_encoder_state >= RGB_FUNCTION_COUNT)
- rgb_encoder_state = RGB_FUNCTION_COUNT - 1;
- } else {
- rgb_encoder_state = (rgb_encoder_state + 1) % RGB_FUNCTION_COUNT;
- }
- }
- return false;
- }
- return true;
-}
-#endif // RGB_OLED_MENU
-
-const uint16_t PROGMEM encoders[][2] = {
- { KC_PGUP, KC_PGDN },
- { KC_VOLU, KC_VOLD }
-};
-
-bool encoder_update_user(uint8_t index, bool clockwise)
-{
- if (!is_keyboard_master())
- return;
-
-#ifdef RGB_OLED_MENU
- if (index == RGB_OLED_MENU)
- (*rgb_functions[rgb_encoder_state][clockwise])();
- else
-#endif // RGB_OLED_MENU
- tap_code16(pgm_read_word(&encoders[index][clockwise]));
- return true;
-}
diff --git a/users/xulkal/custom_encoder.h b/users/xulkal/custom_encoder.h
deleted file mode 100644
index 010d4b1383..0000000000
--- a/users/xulkal/custom_encoder.h
+++ /dev/null
@@ -1,2 +0,0 @@
-#pragma once
-#include "quantum.h"
diff --git a/users/xulkal/custom_keycodes.h b/users/xulkal/custom_keycodes.h
deleted file mode 100644
index 7ced92bf4c..0000000000
--- a/users/xulkal/custom_keycodes.h
+++ /dev/null
@@ -1,40 +0,0 @@
-#pragma once
-
-enum custom_keycodes {
- RGBRST = SAFE_RANGE,
-#ifndef TAP_DANCE_ENABLE
- TD_MIN,
- TD_COMM = TD_MIN,
- TD_BSPC,
- TD_DEL,
- TD_DOT,
- TD_MAX,
-#endif
-#ifdef ENCODER_ENABLE
- RGB_ENC,
-#endif
- KEYMAP_SAFE_RANGE
-};
-
-#define RIS_ESC LT(_RAISE, KC_ESC)
-#define RIS_CAPS LT(_RAISE, KC_CAPS)
-
-#define QWERTY DF(_QWERTY)
-
-#ifndef GAMELAYER_DISABLE
-#define GAME DF(_GAME)
-#else
-#define GAME KC_TRANSPARENT
-#endif
-
-#define LOWER MO(_LOWER)
-#define RAISE MO(_RAISE)
-
-
-#ifdef ENCODER_ENABLE
-#define KC_ENC1 RGB_ENC
-#define KC_ENC2 KC_MPLY
-#else
-#define KC_ENC1 RGB_RMOD
-#define KC_ENC2 RGB_MOD
-#endif
diff --git a/users/xulkal/custom_oled.c b/users/xulkal/custom_oled.c
deleted file mode 100644
index c6341fa3d7..0000000000
--- a/users/xulkal/custom_oled.c
+++ /dev/null
@@ -1,189 +0,0 @@
-#include "custom_oled.h"
-#include "process_records.h"
-
-#include <stdio.h>
-
-#ifdef RGBLIGHT_ENABLE
-rgblight_config_t rgblight_config;
-#endif
-
-static void render_logo(void)
-{
- static const char PROGMEM font_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};
- oled_write_P(font_logo, false);
-}
-
-static void render_icon(void)
-{
-#ifdef OLED_90ROTATION
- static const char PROGMEM font_icon[] = {
- 0x9b,0x9c,0x9d,0x9e,0x9f,
- 0xbb,0xbc,0xbd,0xbe,0xbf,
- 0xdb,0xdc,0xdd,0xde,0xdf,0
- };
-#else
- static const char PROGMEM font_icon[] = {
- // Use \r (0x0d) to jump to the next line without clearing the rest of the current line
- 0x9b,0x9c,0x9d,0x9e,0x9f,0x0d,
- 0xbb,0xbc,0xbd,0xbe,0xbf,0x0d,
- 0xdb,0xdc,0xdd,0xde,0xdf,0
- };
-#endif
- oled_write_P(font_icon, false);
-}
-
-static void render_layer(void)
-{
- uint8_t layer = layer_state ? get_highest_layer(layer_state) : get_highest_layer(default_layer_state);
-#ifdef OLED_90ROTATION
- oled_write_P(PSTR("Layer"), false);
-#else
- oled_write_P(PSTR("Layer: "), false);
-#endif
-
- switch (layer)
- {
- case _QWERTY:
- oled_write_P(PSTR("BASE "), false);
- break;
-#ifndef GAMELAYER_DISABLE
- case _GAME:
- oled_write_P(PSTR("GAME "), false);
- break;
-#endif
- case _LOWER:
- oled_write_P(PSTR("LOWER"), false);
- break;
- case _RAISE:
- oled_write_P(PSTR("RAISE"), false);
- break;
-#ifdef TRILAYER_ENABLED
- case _ADJUST:
- oled_write_P(PSTR("ADJST"), false);
- break;
-#endif
- }
-}
-
-static void render_keyboard_leds(void)
-{
- // Host Keyboard LED Status
- led_t led_state = host_keyboard_led_state();
-#ifdef OLED_90ROTATION
- oled_write_P(led_state.num_lock ? PSTR("NUMLK") : PSTR(" "), false);
- oled_write_P(led_state.caps_lock ? PSTR("CAPLK") : PSTR(" "), false);
- oled_write_P(led_state.scroll_lock ? PSTR("SCRLK") : PSTR(" "), false);
-#else
- oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
- oled_write_P(led_state.caps_lock ? PSTR("CAPS ") : PSTR(" "), false);
- oled_write_P(led_state.scroll_lock ? PSTR("SCRL") : PSTR(" "), false);
-#endif
-}
-
-#ifdef RGB_OLED_MENU
-extern uint8_t rgb_encoder_state;
-#endif
-
-#if defined(OLED_90ROTATION)
-
-#ifdef RGB_ENABLE
-static void render_rgb_state(void)
-{
- // TODO: need to do a bit more handling here for horizontal rendering
-#if defined(RGB_MATRIX_ENABLE)
- static char buffer[31] = {0};
- snprintf(buffer, sizeof(buffer), "h%3d s%3d v%3d s%3d m%3d e%3d ", rgb_matrix_config.hsv.h, rgb_matrix_config.hsv.s, rgb_matrix_config.hsv.v, rgb_matrix_config.speed, rgb_matrix_config.mode, rgb_matrix_get_flags());
-#elif defined(RGBLIGHT_ENABLE)
- static char buffer[26] = {0};
- snprintf(buffer, sizeof(buffer), "h%3d s%3d v%3d s%3d m%3d ", rgblight_config.hue, rgblight_config.sat, rgblight_config.val, rgblight_config.speed, rgblight_config.mode);
-#endif
-
-#ifdef RGB_OLED_MENU
- buffer[4 + rgb_encoder_state * 5] = '<';
-#endif
- oled_write(buffer, false);
-}
-#endif
-
-static void render_status(void)
-{
- render_icon();
- render_layer();
-
- // Host Keyboard LED Status
- oled_write_P(PSTR("-----"), false);
- render_keyboard_leds();
-
- oled_write_P(PSTR("-----"), false);
-#ifdef RGB_ENABLE
- render_rgb_state();
-#endif
-}
-
-oled_rotation_t oled_init_user(oled_rotation_t rotation) {
-#if KEYBOARD_helix_rev2
- if (is_keyboard_master())
- return OLED_ROTATION_270;
- return rotation;
-#else
- if (is_keyboard_master())
- return OLED_ROTATION_90;
- return rotation;
-#endif
-}
-
-#else // OLED_90ROTATION
-
-#ifdef RGB_ENABLE
-static void render_rgb_state(void)
-{
- // TODO: need to do a bit more handling here for horizontal rendering
-#if defined(RGB_MATRIX_ENABLE)
- static char buffer[37] = {0};
- snprintf(buffer, sizeof(buffer), "h%3d s%3d v%3d s%3d m%3d e%3d ", rgb_matrix_config.hsv.h, rgb_matrix_config.hsv.s, rgb_matrix_config.hsv.v, rgb_matrix_config.speed, rgb_matrix_config.mode, rgb_matrix_get_flags());
-#elif defined(RGBLIGHT_ENABLE)
- static char buffer[32] = {0};
- snprintf(buffer, sizeof(buffer), "h%3d s%3d v%3d s%3d m%3d ", rgblight_config.hue, rgblight_config.sat, rgblight_config.val, rgblight_config.speed, rgblight_config.mode);
-#endif
-
-#ifdef RGB_OLED_MENU
- buffer[4 + rgb_encoder_state * 5] = '<';
-#endif
- oled_write(buffer, false);
-}
-#endif
-
-static void render_status(void)
-{
- render_icon();
-
- // Host Layer Status
- oled_set_cursor(6, 0);
- render_layer();
-
- // Host Keyboard LED Status
- oled_set_cursor(6, 1);
- render_keyboard_leds();
-
-#ifdef RGB_ENABLE
- oled_set_cursor(6, 2);
- render_rgb_state();
-#endif
-}
-
-#endif // OLED_90ROTATION
-
-bool oled_task_user(void)
-{
- if (is_keyboard_master())
- render_status();
- else
- {
- render_logo();
- oled_scroll_left();
- }
- return false;
-}
diff --git a/users/xulkal/custom_oled.h b/users/xulkal/custom_oled.h
deleted file mode 100644
index 010d4b1383..0000000000
--- a/users/xulkal/custom_oled.h
+++ /dev/null
@@ -1,2 +0,0 @@
-#pragma once
-#include "quantum.h"
diff --git a/users/xulkal/custom_rgb.c b/users/xulkal/custom_rgb.c
deleted file mode 100644
index f68a7c56c0..0000000000
--- a/users/xulkal/custom_rgb.c
+++ /dev/null
@@ -1,64 +0,0 @@
-#include "custom_rgb.h"
-
-#ifdef RGB_MATRIX_ENABLE
-void rgb_matrix_increase_flags(void)
-{
- switch (rgb_matrix_get_flags()) {
- case LED_FLAG_ALL: {
- rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER);
- rgb_matrix_set_color_all(0, 0, 0);
- }
- break;
- case LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER: {
- rgb_matrix_set_flags(LED_FLAG_NONE);
- rgb_matrix_disable_noeeprom();
- }
- break;
- case LED_FLAG_UNDERGLOW: {
- rgb_matrix_set_flags(LED_FLAG_ALL);
- rgb_matrix_set_color_all(0, 0, 0);
- }
- break;
- default: {
- rgb_matrix_set_flags(LED_FLAG_UNDERGLOW);
- rgb_matrix_enable_noeeprom();
- }
- break;
- }
-}
-
-void rgb_matrix_decrease_flags(void)
-{
- switch (rgb_matrix_get_flags()) {
- case LED_FLAG_ALL: {
- rgb_matrix_set_flags(LED_FLAG_UNDERGLOW);
- rgb_matrix_set_color_all(0, 0, 0);
- }
- break;
- case LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER: {
- rgb_matrix_set_flags(LED_FLAG_ALL);
- rgb_matrix_set_color_all(0, 0, 0);
- }
- break;
- case LED_FLAG_UNDERGLOW: {
- rgb_matrix_set_flags(LED_FLAG_NONE);
- rgb_matrix_disable_noeeprom();
- }
- break;
- default: {
- rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER);
- rgb_matrix_enable_noeeprom();
- }
- break;
- }
-}
-#endif
-
-void rgb_reset(void) {
-#if defined(RGB_MATRIX_ENABLE)
- eeconfig_update_rgb_matrix_default();
-#elif defined(RGBLIGHT_ENABLE)
- eeconfig_update_rgblight_default();
- rgblight_enable();
-#endif
-}
diff --git a/users/xulkal/custom_rgb.h b/users/xulkal/custom_rgb.h
deleted file mode 100644
index 10010b5242..0000000000
--- a/users/xulkal/custom_rgb.h
+++ /dev/null
@@ -1,17 +0,0 @@
-#pragma once
-
-#if defined(RGB_MATRIX_ENABLE)
-# include "rgb_matrix.h"
-#elif defined(RGBLIGHT_ENABLE)
-# if !defined(__AVR__)
-# define PROGMEM
-# endif
-# include "rgblight.h"
-#endif
-
-#ifdef RGB_MATRIX_ENABLE
-void rgb_matrix_increase_flags(void);
-void rgb_matrix_decrease_flags(void);
-#endif
-
-void rgb_reset(void);
diff --git a/users/xulkal/custom_tap_dance.c b/users/xulkal/custom_tap_dance.c
deleted file mode 100644
index c2f9efe44b..0000000000
--- a/users/xulkal/custom_tap_dance.c
+++ /dev/null
@@ -1,59 +0,0 @@
-#include "custom_tap_dance.h"
-#include "custom_keycodes.h"
-
-#ifdef TAP_DANCE_ENABLE
-
-//Tap Dance Definitions
-tap_dance_action_t tap_dance_actions[] = {
- [COMM_QUOT] = ACTION_TAP_DANCE_DOUBLE(KC_COMM, KC_QUOT),
- [BACKSPACE] = ACTION_TAP_DANCE_DOUBLE (KC_BACKSPACE, LCTL(KC_BACKSPACE)),
- [DELETE] = ACTION_TAP_DANCE_DOUBLE (KC_DELETE, LCTL(KC_DELETE))
-};
-
-#else
-
-static uint16_t td_keycode;
-static uint16_t td_timer;
-
-const uint16_t PROGMEM td_keymaps[TD_MAX - TD_MIN][2] = {
- [TD_COMM - TD_MIN] = { KC_COMM, KC_QUOT },
- [TD_BSPC - TD_MIN] = { KC_BACKSPACE, LCTL(KC_BACKSPACE) },
- [TD_DEL - TD_MIN] = { KC_DELETE, LCTL(KC_DELETE) }
-};
-
-static void run_custom_tap_dance(uint8_t i)
-{
- tap_code16(pgm_read_word(&td_keymaps[td_keycode - TD_MIN][i]));
- td_keycode = KC_TRANSPARENT;
- td_timer = timer_read() + TAPPING_TERM;
-}
-
-bool process_custom_tap_dance(uint16_t keycode, keyrecord_t *record)
-{
- if (TD_MIN <= keycode && keycode < TD_MAX)
- {
- if (record->event.pressed)
- {
- if (td_keycode != keycode || timer_expired(td_timer))
- {
- td_keycode = keycode;
- td_timer = timer_read() + TAPPING_TERM;
- }
- else
- run_custom_tap_dance(1);
- }
- return false;
- }
-
- if (td_keycode != KC_TRANSPARENT)
- run_custom_tap_dance(0);
- return true;
-}
-
-void matrix_scan_user(void)
-{
- if (td_keycode != KC_TRANSPARENT && timer_expired(td_timer))
- run_custom_tap_dance(0);
-}
-
-#endif
diff --git a/users/xulkal/custom_tap_dance.h b/users/xulkal/custom_tap_dance.h
deleted file mode 100644
index c4da9318c2..0000000000
--- a/users/xulkal/custom_tap_dance.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#pragma once
-#include "quantum.h"
-
-#ifdef TAP_DANCE_ENABLE
-
-#include "process_tap_dance.h"
-
-//Tap Dance Declarations
-enum {
- COMM_QUOT = 0,
- BACKSPACE,
- DELETE
-};
-
-#define TD_COMM TD(COMM_QUOT)
-#define TD_BSPC TD(BACKSPACE)
-#define TD_DEL TD(DELETE)
-
-#else
-
-bool process_custom_tap_dance(uint16_t keycode, keyrecord_t *record);
-
-#endif
diff --git a/users/xulkal/layouts.h b/users/xulkal/layouts.h
deleted file mode 100644
index 2b939b23bf..0000000000
--- a/users/xulkal/layouts.h
+++ /dev/null
@@ -1,119 +0,0 @@
-#pragma once
-
- /* Qwerty Layout
- * ,-----------------------------------------. ,-----------------------------------------.
- * | GESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BkSp |
- * |------+------+------+------+------+------| |------+------+------+------+------+------|
- * | Tab | Q | W | E | R | T | | Y | U | I | O | P | \ |
- * |------+------+------+------+------+------| |------+------+------+------+------+------|
- * |FN(CAPS)| A | S | D | F | G | | H | J | K | L | ; | Enter|
- * |------+------+------+------+------+------| |------+------+------+------+------+------|
- * | Sft[ | Z | X | C | V | B | | N | M | , | . | / | Sft] |
- * |------+------+------+------+------+------| |------+------+------+------+------+------|
- * | Ctrl | Win | ADJ | FN | Alt | Space| | Space| Left | Up | Down | Right| Ctrl |
- * `-----------------------------------------' `-----------------------------------------'
- */
-
-#define _________________QWERTY_L1_________________ QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5
-#define _________________QWERTY_L2_________________ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T
-#define _________________QWERTY_L3_________________ RIS_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G
-#define _________________QWERTY_L4_________________ SC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B
-#define _________________QWERTY_L5_________________ SC_LCPO, KC_LGUI, KC_LALT, LOWER, RAISE, KC_SPC
-
-#define _________________QWERTY_R1_________________ KC_6, KC_7, KC_8, KC_9, KC_0, TD_BSPC
-#define _________________QWERTY_R2_________________ KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS
-#define _________________QWERTY_R3_________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT
-#define _________________QWERTY_R4_________________ KC_N, KC_M, TD_COMM, KC_DOT, KC_SLASH, SC_RSPC
-#define _________________QWERTY_R5_________________ KC_SPC, KC_LEFT, KC_UP, KC_DOWN, KC_RIGHT, SC_RCPC
-
-
-#define ___________________GAME_L1_________________ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5
-#define ___________________GAME_L2_________________ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T
-#define ___________________GAME_L3_________________ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G
-#define ___________________GAME_L4_________________ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B
-#define ___________________GAME_L5_________________ KC_LCTL, KC_LGUI, LOWER, RAISE, KC_LALT, KC_SPC
-
-#define ___________________GAME_R1_________________ KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC
-#define ___________________GAME_R2_________________ KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS
-#define ___________________GAME_R3_________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT
-#define ___________________GAME_R4_________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLASH, KC_RSFT
-#define ___________________GAME_R5_________________ KC_SPC, KC_LEFT, KC_UP, KC_DOWN, KC_RIGHT, KC_RCTL
-
-
- /* RAISE Layout
- * ,-----------------------------------------. ,-----------------------------------------.
- * | F12 | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 |
- * |------+------+------+------+------+------| |------+------+------+------+------+------|
- * | | PGDN | UP | PGUP | |QWERTY| | | INS | HOME | PGUP | PRINT| |
- * |------+------+------+------+------+------| |------+------+------+------+------+------|
- * | | LEFT | DOWN | RIGHT| | GAME | | | DEL | END | PGDN |SCRLCK| |
- * |------+------+------+------+------+------| |------+------+------+------+------+------|
- * | | | | | | | | | | | | | |
- * |------+------+------+------+------+------| |------+------+------+------+------+------|
- * | | | | | | | | | PREV | VOL+ | VOL- | NEXT | PLAY |
- * `-----------------------------------------' `-----------------------------------------'
- */
-
-#define __________________RAISE_L1_________________ KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5
-#define __________________RAISE_L2_________________ _______, KC_PGDN, KC_UP, KC_PGUP, _______, QWERTY
-#define __________________RAISE_L3_________________ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, GAME
-#define __________________RAISE_L4_________________ _______, _______, _______, _______, _______, _______
-#define __________________RAISE_L5_________________ _______, _______, _______, _______, _______, _______
-
-#define __________________RAISE_R1_________________ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11
-#define __________________RAISE_R2_________________ _______, KC_INS, KC_HOME, KC_PGUP, KC_PSCR, _______
-#define __________________RAISE_R3_________________ _______, KC_DEL, KC_END, KC_PGDN, KC_SCRL, _______
-#define __________________RAISE_R4_________________ _______, _______, _______, _______, _______, _______
-#define __________________RAISE_R5_________________ _______, KC_MPRV, KC_VOLU, KC_VOLD, KC_MNXT, KC_MPLY
-
- /* LOWER Layout
- * ,-----------------------------------------. ,-----------------------------------------.
- * | |RGBMD |RGBRMD|RGBTOG| | | | | | | SLCK | NLCK | DEL |
- * |------+------+------+------+------+------| |------+------+------+------+------+------|
- * | SPDI | SAI | VAI | HUI | RESET| | | | | 7 | 8 | 9 | |
- * |------+------+------+------+------+------| |------+------+------+------+------+------|
- * | SPDD | SAD | VAD | HUD |RGBRST| | | | | 4 | 5 | 6 | |
- * |------+------+------+------+------+------| |------+------+------+------+------+------|
- * | | | | | | | | | | 1 | 2 | 3 | |
- * |------+------+------+------+------+------| |------+------+------+------+------+------|
- * | | | | | | | | | | | 0 | . | |
- * `-----------------------------------------' `-----------------------------------------'
- */
-
-#define __________________LOWER_L1_________________ _______, RGB_RMOD, RGB_MOD, RGB_TOG, _______, _______
-#define __________________LOWER_L2_________________ RGB_SPI, RGB_SAI, RGB_VAI, RGB_HUI, QK_BOOT, _______
-#define __________________LOWER_L3_________________ RGB_SPD, RGB_SAD, RGB_VAD, RGB_HUD, RGBRST, _______
-#define __________________LOWER_L4_________________ _______, _______, _______, _______, _______, _______
-#define __________________LOWER_L5_________________ _______, _______, _______, _______, _______, _______
-
-#define __________________LOWER_R1_________________ _______, _______, _______, KC_SCRL, KC_NUM, KC_DEL
-#define __________________LOWER_R2_________________ _______, _______, KC_KP_7, KC_KP_8, KC_KP_9, _______
-#define __________________LOWER_R3_________________ _______, _______, KC_KP_4, KC_KP_5, KC_KP_6, _______
-#define __________________LOWER_R4_________________ _______, _______, KC_KP_1, KC_KP_2, KC_KP_3, _______
-#define __________________LOWER_R5_________________ _______, _______, _______, KC_KP_0, KC_PDOT, _______
-
- /* ADJUST Layout
- * ,-----------------------------------------. ,-----------------------------------------.
- * | | | | | | | | | | | | | |
- * |------+------+------+------+------+------| |------+------+------+------+------+------|
- * | | RESET| Debug| | | | | | | | | | |
- * |------+------+------+------+------+------| |------+------+------+------+------+------|
- * | | |MusMod|Aud on|AudOff|AGnorm| |AGswap|ClkUp |ClkDwn| | | |
- * |------+------+------+------+------+------| |------+------+------+------+------+------|
- * | |Voice-|Voice+|Mus on|MusOff|MidiOn| |MidOff|ClkOn |ClkOff| | | |
- * |------+------+------+------+------+------| |------+------+------+------+------+------|
- * | | | | | | | | | | | | | |
- * `-----------------------------------------' `-----------------------------------------'
- */
-
-#define _________________ADJUST_L1_________________ _______, _______, _______, _______, _______, _______
-#define _________________ADJUST_L2_________________ _______, QK_BOOT, DB_TOGG, _______, _______, _______
-#define _________________ADJUST_L3_________________ _______, _______, MU_NEXT, AU_ON, AU_OFF, AG_NORM
-#define _________________ADJUST_L4_________________ _______, AU_PREV, AU_NEXT, MU_ON, MU_OFF, MI_ON
-#define _________________ADJUST_L5_________________ _______, _______, _______, _______, _______, _______
-
-#define _________________ADJUST_R1_________________ _______, _______, _______, _______, _______, _______
-#define _________________ADJUST_R2_________________ _______, _______, _______, _______, _______, _______
-#define _________________ADJUST_R3_________________ AG_SWAP, CK_UP, CK_DOWN, _______, _______, _______
-#define _________________ADJUST_R4_________________ MI_OFF, CK_ON, CK_OFF, _______, _______, _______
-#define _________________ADJUST_R5_________________ _______, _______, _______, _______, _______, _______
diff --git a/users/xulkal/process_records.c b/users/xulkal/process_records.c
deleted file mode 100644
index 804dd4677a..0000000000
--- a/users/xulkal/process_records.c
+++ /dev/null
@@ -1,62 +0,0 @@
-#include "process_records.h"
-#include "custom_keycodes.h"
-
-#ifdef RGB_ENABLE
-#include "custom_rgb.h"
-#endif
-
-#ifdef TRILAYER_ENABLED
-layer_state_t layer_state_set_user(layer_state_t state)
-{
- return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
-}
-#endif
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record)
-{
- static uint16_t reset_timer;
-
-#ifndef TAP_DANCE_ENABLE
- if (!process_custom_tap_dance(keycode, record))
- return false;
-#endif
-
- switch (keycode)
- {
- case RGBRST:
-#ifdef RGB_ENABLE
- if (record->event.pressed)
- rgb_reset();
-#endif
- return false;
- case QK_BOOT:
- {
- if (record->event.pressed)
- reset_timer = timer_read() + 500;
- else if (timer_expired(timer_read(), reset_timer))
- reset_keyboard();
- }
- return false;
-#if defined(RGB_MATRIX_TOG_LAYERS) && defined(RGB_ENABLE)
- case RGB_TOG:
- if (record->event.pressed) {
- rgb_matrix_increase_flags();
- }
- return false;
-#endif
- }
-
- return process_record_encoder(keycode, record) && process_record_keymap(keycode, record);
-}
-
-__attribute__ ((weak))
-bool process_record_keymap(uint16_t keycode, keyrecord_t *record)
-{
- return true;
-}
-
-__attribute__ ((weak))
-bool process_record_encoder(uint16_t keycode, keyrecord_t *record)
-{
- return true;
-}
diff --git a/users/xulkal/process_records.h b/users/xulkal/process_records.h
deleted file mode 100644
index c219394f8e..0000000000
--- a/users/xulkal/process_records.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#pragma once
-#include "quantum.h"
-#include "custom_tap_dance.h"
-
-enum layer_number {
- _QWERTY = 0,
-#ifndef GAMELAYER_DISABLE
- _GAME,
-#endif
- _LOWER,
- _RAISE,
-#ifdef TRILAYER_ENABLED
- _ADJUST
-#endif
-};
-
-bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
-bool process_record_encoder(uint16_t keycode, keyrecord_t *record);
diff --git a/users/xulkal/rules.mk b/users/xulkal/rules.mk
deleted file mode 100644
index 7094191f2f..0000000000
--- a/users/xulkal/rules.mk
+++ /dev/null
@@ -1,32 +0,0 @@
-SRC += xulkal.c \
- process_records.c \
- custom_tap_dance.c
-
-# Some usual defaults
-MOUSEKEY_ENABLE = no # Mouse keys (+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control (+450)
-TAP_DANCE_ENABLE = yes
-
-ifneq ($(strip $(DISABLE_LTO)), yes)
- EXTRAFLAGS += -flto
- OPT_DEFS += -DNO_ACTION_MACRO
- OPT_DEFS += -DNO_ACTION_FUNCTION
-endif
-
-ifeq ($(strip $(ENCODER_ENABLE)), yes)
- SRC += custom_encoder.c
-endif
-
-ifneq ($(strip $(RGB_MATRIX_ENABLE)), no)
- OPT_DEFS += -DRGB_ENABLE
- SRC += custom_rgb.c
-endif
-
-ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
- OPT_DEFS += -DRGB_ENABLE
- SRC += custom_rgb.c
-endif
-
-ifeq ($(strip $(OLED_ENABLE)), yes)
- SRC += custom_oled.c
-endif
diff --git a/users/xulkal/xulkal.c b/users/xulkal/xulkal.c
deleted file mode 100644
index ea9b6bdbbe..0000000000
--- a/users/xulkal/xulkal.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "xulkal.h"
diff --git a/users/xulkal/xulkal.h b/users/xulkal/xulkal.h
deleted file mode 100644
index 32df8df0c6..0000000000
--- a/users/xulkal/xulkal.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#pragma once
-
-#include "process_records.h"
-#include "layouts.h"
-#include "custom_keycodes.h"
-#include "custom_tap_dance.h"
diff --git a/users/yanfali/config.h b/users/yanfali/config.h
deleted file mode 100644
index fa5ec42c09..0000000000
--- a/users/yanfali/config.h
+++ /dev/null
@@ -1,30 +0,0 @@
-#pragma once
-
-#ifdef KEYBOARD_evyd13_plain60
-
-#define AUDIO_PIN B7
-#ifdef AUDIO_ENABLE
- #define STARTUP_SONG SONG(GUITAR_SOUND)
-#endif
-
-#endif
-
-#ifdef KEYBOARD_xd84
-
-#undef RGBLED_NUM
-#define RGBLED_NUM 20
-
-#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_RAINBOW_MOOD
-#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
-
-#endif
diff --git a/users/yanfali/rules.mk b/users/yanfali/rules.mk
deleted file mode 100644
index 6c0c48c764..0000000000
--- a/users/yanfali/rules.mk
+++ /dev/null
@@ -1,38 +0,0 @@
-BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
-DYNAMIC_KEYMAP_ENABLE = no
-LTO_ENABLE = yes
-AUDIO_ENABLE = no
-
-# only enable audio on specific boards
-ifeq ($(strip $(KEYBOARD)), evyd13/plain60)
- AUDIO_ENABLE = yes
- CONSOLE_ENABLE = yes
- COMMAND_ENABLE = yes
-endif
-
-ifeq ($(strip $(KEYBOARD)), clueboard/60)
- AUDIO_ENABLE = yes
- CONSOLE_ENABLE = yes
- COMMAND_ENABLE = yes
-endif
-
-ifeq ($(strip $(KEYBOARD)), hadron/ver3)
- AUDIO_ENABLE = yes
- CONSOLE_ENABLE = yes
- COMMAND_ENABLE = yes
-endif
-
-ifeq ($(strip $(KEYBOARD)), fruity60)
- CONSOLE_ENABLE = yes
- COMMAND_ENABLE = no
-endif
-
-ifeq ($(strip $(KEYBOARD)), kbdfans/kbd75/rev1)
- COMMAND_ENABLE = no
-endif
-
-ifeq ($(strip $(KEYBOARD)), ai03/polaris)
- RGBLIGHT_ENABLE = no
- CONSOLE_ENABLE = yes
- COMMAND_ENABLE = yes
-endif
diff --git a/users/yet-another-developer/.gitignore b/users/yet-another-developer/.gitignore
deleted file mode 100644
index d815569141..0000000000
--- a/users/yet-another-developer/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-secrets.c
-secrets.h \ No newline at end of file
diff --git a/users/yet-another-developer/README.md b/users/yet-another-developer/README.md
deleted file mode 100644
index 3e528bcf5d..0000000000
--- a/users/yet-another-developer/README.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# User Space for yet-another-developer
-
-
-## Reference / Inspiration
- - /u/kuchosauronad0
- - /u/drashna
- - /u/not-quite-neo \ No newline at end of file
diff --git a/users/yet-another-developer/combo.c b/users/yet-another-developer/combo.c
deleted file mode 100644
index 0a58e02770..0000000000
--- a/users/yet-another-developer/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/yet-another-developer/combo.h b/users/yet-another-developer/combo.h
deleted file mode 100644
index 6fb3eaf58c..0000000000
--- a/users/yet-another-developer/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/yet-another-developer/config.h b/users/yet-another-developer/config.h
deleted file mode 100644
index 4836822eb4..0000000000
--- a/users/yet-another-developer/config.h
+++ /dev/null
@@ -1,46 +0,0 @@
-#pragma once
-
-/* Set Polling rate to 1000Hz */
-#define USB_POLLING_INTERVAL_MS 1
-
-#ifndef ONESHOT_TAP_TOGGLE
- #define ONESHOT_TAP_TOGGLE 2
-#endif // !ONESHOT_TAP_TOGGLE
-
-#ifndef ONESHOT_TIMEOUT
- #define ONESHOT_TIMEOUT 2000
-#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_ergodash)
- #define TAPPING_TERM 240
-#else
- #define TAPPING_TERM 200
-#endif
-
-#define TAP_CODE_DELAY 5 //DEFAULT: 100
-
-#define MACRO_TIMER 5
diff --git a/users/yet-another-developer/leader_user.c b/users/yet-another-developer/leader_user.c
deleted file mode 100644
index 53a7e2d7e5..0000000000
--- a/users/yet-another-developer/leader_user.c
+++ /dev/null
@@ -1,41 +0,0 @@
-#include "leader_user.h"
-
-void leader_end_user(void) {
- if (leader_sequence_two_keys(KC_V, KC_Z)){
- // vim: Zoom pane
- tap_code16(LCTL(KC_W));
- tap_code16(LSFT(KC_BSLS));
- }
-
- 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);
- }
-
- 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));
- }
-
- if (leader_sequence_three_keys(KC_BSPC, KC_BSPC, KC_BSPC)){
- // Reset the keyboard
- reset_keyboard();
- }
-}
-
-// Runs constantly in the background, in a loop.
-void matrix_scan_user(void){
-
-#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();
-}
diff --git a/users/yet-another-developer/leader_user.h b/users/yet-another-developer/leader_user.h
deleted file mode 100644
index 84cc6f65fa..0000000000
--- a/users/yet-another-developer/leader_user.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#pragma once
-#include "yet-another-developer.h"
-
-#include "leader_user.h"
-
-void matrix_scan_user(void);
diff --git a/users/yet-another-developer/process_records.c b/users/yet-another-developer/process_records.c
deleted file mode 100644
index 7dba702bf5..0000000000
--- a/users/yet-another-developer/process_records.c
+++ /dev/null
@@ -1,193 +0,0 @@
-#include "yet-another-developer.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 yet-another-developer.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_UNICODE:
- 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) {
- clear_mods();
- clear_oneshot_mods();
- send_string_with_delay_P(PSTR("make " QMK_KEYBOARD ":" QMK_KEYMAP), TAP_CODE_DELAY);
- {
- send_string_with_delay_P(PSTR(":flash"), TAP_CODE_DELAY);
- }
- }
- break;
-
- /* Tap Dance */
- 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){
- SEND_STRING(":neww");
- tap_code(KC_ENT);
- }
- break;
- case MCT_SH: // Tmux horizontal split
- if(record->event.pressed){
- SEND_STRING("%");
- }
- break;
- case MCT_SV: // Tmux vertical split
- if(record->event.pressed){
- SEND_STRING("\"");
- }
- break;
- case MCT_ZM: // Tmux zoom
- if(record->event.pressed){
- tap_code(KC_Z);
- }
- break;
- case MCT_SCR: // Tmux scroll mode
- if(record->event.pressed){
- 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
- 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;
-
-
- 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;
-#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_ENABLE
- }
-
- 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/yet-another-developer/process_records.h b/users/yet-another-developer/process_records.h
deleted file mode 100644
index d4b9e21326..0000000000
--- a/users/yet-another-developer/process_records.h
+++ /dev/null
@@ -1,109 +0,0 @@
-#pragma once
-#include "yet-another-developer.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_UNICODE, // Sets default layer to UNICOD
-
- KC_MAKE, // Run keyboard's customized make command
- 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, // ಠ_ಠ
-
- 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_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 OS_UNI OSL(_UNICODE)
-
-#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_DVORAK
-#define COLEMAK KC_COLEMAK
-#define WORKMAN KC_WORKMAN
-#define UNICODE KC_UNICODE
-
-#define KC_RESET QK_BOOT
-#define KC_RST KC_RESET
-
-#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 UC_IRNY UC(0x2E2E)
-#define UC_CLUE UC(0x203D)
diff --git a/users/yet-another-developer/rules.mk b/users/yet-another-developer/rules.mk
deleted file mode 100644
index 9afa78e3f7..0000000000
--- a/users/yet-another-developer/rules.mk
+++ /dev/null
@@ -1,50 +0,0 @@
-SRC += yet-another-developer.c \
- process_records.c
-
-LTO_ENABLE = yes
-SPACE_CADET_ENABLE = no
-
-ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
- SRC += tap_dances.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/yet-another-developer/tap_dances.c b/users/yet-another-developer/tap_dances.c
deleted file mode 100644
index cde0cb832e..0000000000
--- a/users/yet-another-developer/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_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/yet-another-developer/tap_dances.h b/users/yet-another-developer/tap_dances.h
deleted file mode 100644
index ca925e71bd..0000000000
--- a/users/yet-another-developer/tap_dances.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#pragma once
-#include "yet-another-developer.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/yet-another-developer/unicode.c b/users/yet-another-developer/unicode.c
deleted file mode 100644
index f0168cef9f..0000000000
--- a/users/yet-another-developer/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/yet-another-developer/unicode.h b/users/yet-another-developer/unicode.h
deleted file mode 100644
index 340b4cf94b..0000000000
--- a/users/yet-another-developer/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/yet-another-developer/wrappers.h b/users/yet-another-developer/wrappers.h
deleted file mode 100644
index 776da0c77e..0000000000
--- a/users/yet-another-developer/wrappers.h
+++ /dev/null
@@ -1,166 +0,0 @@
-#pragma once
-#include "yet-another-developer.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_5x14_wrapper(...) LAYOUT_ortho_5x14(__VA_ARGS__)
-
-/* ---------- LEFT HAND ----------- ---------- RIGHT HAND ---------- */
-#define LAYOUT_ergodash_pretty( \
- 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, L26, R20, R21, R22, R23, R24, R25, R26, \
- L30, L31, L32, L33, L34, L35, R31, R32, R33, R34, R35, R36, \
- L40, L41, L42, L43, R43, R44, R45, R46, \
- L36, R30, \
- L44, L45, L46, R40, R41, R42 \
- ) \
- { \
- { L00, L01, L02, L03, L04, L05, L06 }, \
- { L10, L11, L12, L13, L14, L15, L16 }, \
- { L20, L21, L22, L23, L24, L25, L26 }, \
- { L30, L31, L32, L33, L34, L35, L36 }, \
- { L40, L41, L42, L43, L44, L45, L46 }, \
- { R06, R05, R04, R03, R02, R01, R00 }, \
- { R16, R15, R14, R13, R12, R11, R10 }, \
- { R26, R25, R24, R23, R22, R21, R20 }, \
- { R36, R35, R34, R33, R32, R31, R30 }, \
- { R46, R45, R44, R43, R42, R41, R40 } \
- }
-
-/*
-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, KC_SCLN
-#define _________________QWERTY_R3_________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLASH
-
-
-#ifdef TAP_DANCE_ENABLE
- #define _________________COLEMAK_L1________________ KC_Q, KC_W, KC_F, KC_P, KC_G
- #define _________________COLEMAK_L2________________ KC_BOL, 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
-#else
- #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
-#endif
-
-
-
-
-#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 _________________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
-
-
-#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 ___________________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__________________ OS_UNI, 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_________________ ___________________BLANK___________________
-#define _________________ADJUST_L2_________________ _________________FUNC_LEFT_________________
-#define _________________ADJUST_L3_________________ _______, QWERTY, COLEMAK, DVORAK, WORKMAN
-
-#define _________________ADJUST_R1_________________ KC_SEC1, KC_SEC2, KC_SEC3, KC_SEC4, KC_SEC5
-#define _________________ADJUST_R2_________________ _________________FUNC_RIGHT________________
-#define _________________ADJUST_R3_________________ KC_MUTE, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT
-
-// clang-format on
diff --git a/users/yet-another-developer/yet-another-developer.c b/users/yet-another-developer/yet-another-developer.c
deleted file mode 100644
index 0e62d0cc88..0000000000
--- a/users/yet-another-developer/yet-another-developer.c
+++ /dev/null
@@ -1,160 +0,0 @@
-#include "quantum.h"
-#include "yet-another-developer.h"
-
-userspace_config_t userspace_config;
-
-#if (defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE))
- #define YAD_UNICODE_MODE UNICODE_MODE_WINDOWS
-#else
-// set to 2 for UNICODE_MODE_WINDOWS, set to 4 for UNICODE_MODE_WINCOMPOSE
- #define YAD_UNICODE_MODE 2
-#endif
-
-
-bool mod_key_press_timer(uint16_t code, uint16_t mod_code, bool pressed) {
- static 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;
-}
-
-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;
-}
-
-// 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();
-
- #if (defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE))
- set_unicode_input_mode(YAD_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))
-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){
-
-#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(YAD_UNICODE_MODE);
- get_unicode_input_mode();
- #else
- eeprom_update_byte(EECONFIG_UNICODEMODE, YAD_UNICODE_MODE);
- #endif
-}
diff --git a/users/yet-another-developer/yet-another-developer.h b/users/yet-another-developer/yet-another-developer.h
deleted file mode 100644
index e0d02f707f..0000000000
--- a/users/yet-another-developer/yet-another-developer.h
+++ /dev/null
@@ -1,87 +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: <CTL>+b
- #define KC_EOL TD(TD_EOL) // tap1: 'e' tap2: <CTL>+e
- #define KC_BOL TD(TD_BOL) // tap1: 'a' tap2: <CTL>+a
- #define KC_NW TD(TD_NW) // tap1: 'f' tap2: <ALT>+f
- #define KC_PW TD(TD_PW) // tap1: 'b' tap2: <ALT>+b
- #define KC_DW TD(TD_DW) // tap1: 'w' tap2: <CTL>+w
-#endif //!TAP_DANCE_ENABLE
-#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
- #include "rgb_stuff.h"
-#endif
-#if defined(UNICODEMAP_ENABLE) || defined(UNICODE_ENABLE)
- #include "unicode.h"
-#endif //!UNICODE_ENABLE
-
-#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,
- _UNICODE,
- _MODS, /* layer 8 */
- _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);
-void matrix_init_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);
-
-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 // 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
-
-
diff --git a/users/zer09/config.h b/users/zer09/config.h
deleted file mode 100644
index 48dd17dfc3..0000000000
--- a/users/zer09/config.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifndef USERSPACE_CONFIG_H
-#define USERSPACE_CONFIG_H
-
-#undef PERMISSIVE_HOLD
-#define STRICT_LAYER_RELEASE
-
-#define FORCE_NKRO
-
-#ifndef TAPPING_TOGGLE
-#define TAPPING_TOGGLE 1
-#endif
-
-#ifdef TAPPING_TERM
-#undef TAPPING_TERM
-#endif
-#define TAPPING_TERM 95
-
-// Disable action_get_macro and fn_actions, since we don't use these
-// and it saves on space in the firmware.
-#define NO_ACTION_MACRO
-#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/users/zer09/lights.c b/users/zer09/lights.c
deleted file mode 100644
index 448ef494e8..0000000000
--- a/users/zer09/lights.c
+++ /dev/null
@@ -1,189 +0,0 @@
-#include "lights.h"
-
-static bool active_key_pos[50] = {};
-static uint8_t led_dim = 0;
-
-volatile led_key rbw_led_keys[RBW] = {
- [RBW_LCTL] = {DEFAULT, 21, true}, [RBW_LCAP] = {DEFAULT, 24, false},
- [RBW_LSPR] = {DEFAULT, 23, true}, [RBW_RCTL] = {DEFAULT, 48, true},
- [RBW_RCAP] = {DEFAULT, 45, false}, [RBW_RALT] = {DEFAULT, 46, true},
- [RBW_SCRL] = {DEFAULT, 42, true}};
-
-/* Pressed led color. */
-const uint32_t _PC[3] = {0xFF, 0x00, 0x00};
-
-/* Layer color. */
-const uint8_t _LC[5][3] = {[_BL] = {0x00, 0x00, 0x00},
- [_UL] = {0x00, 0x00, 0xFF},
- [_VL] = {0xFF, 0xFF, 0x00},
- [_DL] = {0x00, 0xFF, 0x00},
- [_AL] = {0xFF, 0x00, 0x00}};
-
-/* Color table by sine wave */
-const uint8_t _LIGHTS[360] = {
- 0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 4, 5, 6, 7, 8,
- 11, 12, 9, 13, 15, 17, 18, 20, 22, 24, 26, 28, 30, 32, 35,
- 37, 39, 42, 44, 47, 49, 52, 55, 58, 60, 63, 66, 69, 72, 75,
- 78, 81, 85, 88, 91, 94, 97, 101, 104, 107, 111, 114, 117, 121, 124,
- 127, 131, 134, 137, 141, 144, 147, 150, 154, 157, 160, 163, 167, 170, 173,
- 176, 179, 182, 185, 188, 191, 194, 197, 200, 202, 205, 208, 210, 213, 215,
- 217, 220, 222, 224, 226, 229, 231, 232, 234, 236, 238, 239, 241, 242, 244,
- 245, 246, 248, 249, 250, 251, 251, 252, 253, 253, 254, 254, 255, 255, 255,
- 255, 255, 255, 255, 254, 254, 253, 253, 252, 251, 251, 250, 249, 248, 246,
- 245, 244, 242, 241, 239, 238, 236, 234, 232, 231, 229, 226, 224, 222, 220,
- 217, 215, 213, 210, 208, 205, 202, 200, 197, 194, 191, 188, 185, 182, 179,
- 176, 173, 170, 167, 163, 160, 157, 154, 150, 147, 144, 141, 137, 134, 131,
- 127, 124, 121, 117, 114, 111, 107, 104, 101, 97, 94, 91, 88, 85, 81,
- 78, 75, 72, 69, 66, 63, 60, 58, 55, 52, 49, 47, 44, 42, 39,
- 37, 35, 32, 30, 28, 26, 24, 22, 20, 18, 17, 15, 13, 12, 11,
- 9, 8, 7, 6, 5, 4, 3, 2, 2, 1, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-
-void set_key_led(keyrecord_t *record, uint8_t lyr) {
- static uint8_t base = 5;
-
- uint8_t r = record->event.key.row;
- uint8_t c = record->event.key.col;
- uint8_t pos;
-
- // This was the result of my soldering.
- // Lesson of the day: always check.
- if (r < 5) {
- pos = r % 2 == 0 ? r * base + c : r * base + (base - (c + 1));
- } else {
- pos = r % 2 == 0 ? r * base + (base - (c + 1)) : r * base + c;
- }
-
- if (record->event.pressed) {
- active_key_pos[pos] = true;
- SET_LED_RGB(_PC[0], _PC[1], _PC[2], led_dim, pos);
- } else {
- active_key_pos[pos] = false;
- SET_LED_RGB(_LC[lyr][0], _LC[lyr][1], _LC[lyr][2], led_dim, pos);
- }
-}
-
-/* Fix for unknown reason after testin flash the eeprom handedness,
- the leds will ligth up after boot.
- This should be call in the set layer led.*/
-bool is_first_run(void) {
- static uint8_t run = 0;
-
- if (run == 0) {
- run++;
- return true;
- } else {
- return false;
- }
-}
-
-bool set_layer_led(uint8_t lyr) {
- static uint8_t p_lyr = 0; // Previous layer.
- static uint8_t p_dim = 0; // Previous dim.
-
- if (p_lyr == lyr && p_dim == led_dim && !is_first_run()) {
- return false;
- }
-
- p_lyr = lyr;
- p_dim = led_dim;
- const uint8_t r = _LC[lyr][0];
- const uint8_t g = _LC[lyr][1];
- const uint8_t b = _LC[lyr][2];
- const uint8_t d = (p_lyr == _VL && p_dim < 1) ? 1 : p_dim;
-
- for (uint8_t i = 0; i < RGBLED_NUM; i++) {
- SET_LED_RGB(r, g, b, d, i);
- }
-
- return true;
-}
-
-bool rainbow_loop(uint8_t lyr) {
- static uint16_t last_timer = 0;
- static uint16_t i = 0;
- static uint8_t r, g, b, pos;
-
- if (timer_elapsed(last_timer) < 8) {
- return false;
- }
-
- if (i >= 360) {
- i = 0;
- }
-
- last_timer = timer_read();
- r = _LIGHTS[(i + 120) % 360];
- g = _LIGHTS[i];
- b = _LIGHTS[(i + 240) % 360];
-
- i++;
-
- bool set_rbw = false;
-
- for (uint8_t j = 0; j < RBW; j++) {
- pos = rbw_led_keys[j].pos;
-
- switch (rbw_led_keys[j].status) {
- case ENABLED:
- if (!active_key_pos[pos] || rbw_led_keys[j].forced) {
- SET_LED_RGB(r, g, b, led_dim, pos);
- set_rbw = true;
- }
-
- break;
- case DISABLED:
- if (!active_key_pos[pos] || rbw_led_keys[j].forced) {
- SET_LED_RGB(_LC[lyr][0], _LC[lyr][1], _LC[lyr][2], led_dim, pos);
- set_rbw = true;
- }
-
- rbw_led_keys[j].status = DEFAULT;
- break;
- default:
- break;
- }
- }
-
- return set_rbw;
-}
-
-bool led_brightness(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case RGUP:
- if (record->event.pressed && led_dim > 0) {
- led_dim--;
- eeprom_write_byte(EECONFIG_LED_DIM_LVL, led_dim);
- }
-
- return true;
- break;
- case RGDWN:
- if (record->event.pressed && led_dim < 8) {
- led_dim++;
- eeprom_write_byte(EECONFIG_LED_DIM_LVL, led_dim);
- }
-
- return true;
- break;
- default:
- return false;
- break;
- }
-}
-
-void eeprom_read_led_dim_lvl(void) {
- led_dim = eeprom_read_byte(EECONFIG_LED_DIM_LVL);
-
- if (led_dim > 8 || led_dim < 0) {
- led_dim = 0;
- eeprom_write_byte(EECONFIG_LED_DIM_LVL, led_dim);
- }
-}
diff --git a/users/zer09/lights.h b/users/zer09/lights.h
deleted file mode 100644
index 380283b733..0000000000
--- a/users/zer09/lights.h
+++ /dev/null
@@ -1,45 +0,0 @@
-#ifndef LIGHTS_H
-#define LIGHTS_H
-
-#include "eeprom.h"
-#include "tap_dance.h"
-#include "zer09.h"
-
-/* Will hold the RGB brightness level */
-#define EECONFIG_LED_DIM_LVL (uint8_t *)15
-
-#define SET_LED_RGB(r, g, b, led_dim, pos) \
- setrgb(r >> led_dim, g >> led_dim, b >> led_dim, (rgb_led_t *)&led[pos])
-
-typedef enum {
- DEFAULT,
- ENABLED,
- DISABLED,
-} led_status;
-
-typedef struct {
- led_status status;
- uint8_t pos;
- bool forced;
-} led_key;
-
-enum rbw_keys {
- RBW_LCTL,
- RBW_LCAP,
- RBW_LSPR,
- RBW_RCTL,
- RBW_RCAP,
- RBW_RALT,
- RBW_SCRL,
- RBW
-};
-
-extern volatile led_key rbw_led_keys[RBW];
-
-void set_key_led(keyrecord_t *record, uint8_t lyr);
-bool set_layer_led(uint8_t lyr);
-bool rainbow_loop(uint8_t lyr);
-bool led_brightness(uint16_t keycode, keyrecord_t *record);
-void eeprom_read_led_dim_lvl(void);
-
-#endif
diff --git a/users/zer09/rules.mk b/users/zer09/rules.mk
deleted file mode 100644
index 43b409eca7..0000000000
--- a/users/zer09/rules.mk
+++ /dev/null
@@ -1,2 +0,0 @@
-SRC += zer09.c tap_dance.c lights.c
-EXTRAFLAGS += -flto
diff --git a/users/zer09/tap_dance.c b/users/zer09/tap_dance.c
deleted file mode 100644
index dc87f31eb5..0000000000
--- a/users/zer09/tap_dance.c
+++ /dev/null
@@ -1,203 +0,0 @@
-#include "tap_dance.h"
-#include "lights.h"
-
-tap_dance_action_t tap_dance_actions[] = {
- [DA_LCTL] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_lctl_finished,
- dance_lctl_reset),
- [DA_LSPR] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_lspr_finished,
- dance_lspr_reset),
- [DA_RCTL] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_rctl_finished,
- dance_rctl_reset),
- [DA_RALT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_ralt_finished,
- dance_ralt_reset),
- [DA_UPLY] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_uply_finished,
- dance_uply_reset),
- [DA_DWLY] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_dwly_finished,
- dance_dwly_reset),
-};
-
-volatile uint8_t active_layer = _BL;
-volatile uint8_t gm_layer_act = false;
-static tap upltap_state = {.state = 0};
-static tap dwltap_state = {.state = 0};
-static tap lsprtap_state = {.state = 0};
-static tap ralttap_state = {.state = 0};
-
-void layer_switcher_tap(uint8_t new_layer) {
- if (gm_layer_act == true) {
- layer_off(active_layer);
- if (new_layer == _BL) {
- layer_on(_GM);
- active_layer = _GM;
- } else {
- layer_on(new_layer);
- active_layer = new_layer;
- }
- } else {
- layer_off(active_layer);
- layer_on(new_layer);
- active_layer = new_layer;
- }
-}
-
-int cur_dance(tap_dance_state_t *state) {
- switch (state->count) {
- case 1:
- return state->pressed == 0 ? SINGLE_TAP : SINGLE_HOLD;
- case 2:
- return state->pressed == 0 ? DOUBLE_TAP : DOUBLE_HOLD;
- case 3:
- return state->pressed == 0 ? TRIPLE_TAP : TRIPLE_HOLD;
- default:
- return state->pressed == 0 ? DEFAULT_TAP : DEFAULT_HOLD;
- }
-}
-
-void dance_lctl_finished(tap_dance_state_t *state, void *user_data) {
- rbw_led_keys[RBW_LCTL].status = ENABLED;
- register_code(KC_LCTL);
-};
-
-void dance_lctl_reset(tap_dance_state_t *state, void *user_data) {
- unregister_code(KC_LCTL);
- rbw_led_keys[RBW_LCTL].status = DISABLED;
-};
-
-void dance_lspr_finished(tap_dance_state_t *state, void *user_data) {
- lsprtap_state.state = cur_dance(state);
-
- switch (lsprtap_state.state) {
- case DOUBLE_HOLD:
- rbw_led_keys[RBW_LSPR].status = ENABLED;
- register_code(KC_LALT);
- break;
- default:
- register_code(KC_LGUI);
- break;
- }
-};
-
-void dance_lspr_reset(tap_dance_state_t *state, void *user_data) {
- switch (lsprtap_state.state) {
- case DOUBLE_HOLD:
- unregister_code(KC_LALT);
- rbw_led_keys[RBW_LSPR].status = DISABLED;
- break;
- default:
- unregister_code(KC_LGUI);
- break;
- }
-};
-
-void dance_rctl_finished(tap_dance_state_t *state, void *user_data) {
- rbw_led_keys[RBW_RCTL].status = ENABLED;
- register_code(KC_RCTL);
-};
-
-void dance_rctl_reset(tap_dance_state_t *state, void *user_data) {
- unregister_code(KC_RCTL);
- rbw_led_keys[RBW_RCTL].status = DISABLED;
-};
-
-void dance_ralt_finished(tap_dance_state_t *state, void *user_data) {
- ralttap_state.state = cur_dance(state);
-
- switch (ralttap_state.state) {
- case DOUBLE_HOLD:
- rbw_led_keys[RBW_RALT].status = ENABLED;
- unregister_code(KC_LGUI);
- break;
- default:
- register_code(KC_RALT);
- break;
- }
-};
-
-void dance_ralt_reset(tap_dance_state_t *state, void *user_data) {
- switch (ralttap_state.state) {
- case DOUBLE_HOLD:
- unregister_code(KC_RGUI);
- rbw_led_keys[RBW_RALT].status = DISABLED;
- break;
- default:
- unregister_code(KC_RALT);
- break;
- }
-};
-
-void dance_uply_finished(tap_dance_state_t *state, void *user_data) {
- upltap_state.state = cur_dance(state);
-
- switch (upltap_state.state) {
- case SINGLE_TAP:
- if (active_layer == _UL) {
- layer_switcher_tap(_BL);
- } else {
- layer_switcher_tap(_UL);
- }
- break;
- case SINGLE_HOLD:
- layer_switcher_tap(_UL);
- break;
- default:
- layer_switcher_tap(_BL);
- break;
- }
-}
-
-void dance_uply_reset(tap_dance_state_t *state, void *user_data) {
- switch (upltap_state.state) {
- case SINGLE_TAP:
- break;
- case SINGLE_HOLD:
- default:
- layer_switcher_tap(_BL);
- break;
- }
- upltap_state.state = 0;
-}
-
-void dance_dwly_finished(tap_dance_state_t *state, void *user_data) {
- dwltap_state.state = cur_dance(state);
-
- switch (dwltap_state.state) {
- case SINGLE_TAP:
- if (active_layer == _DL) {
- layer_switcher_tap(_BL);
- } else {
- layer_switcher_tap(_DL);
- }
- break;
- case SINGLE_HOLD:
- layer_switcher_tap(_DL);
- break;
- case DOUBLE_HOLD:
- layer_switcher_tap(_AL);
- break;
- case TRIPLE_TAP:
- if (gm_layer_act == true) {
- gm_layer_act = false;
- layer_switcher_tap(_BL);
- } else {
- gm_layer_act = true;
- layer_switcher_tap(_GM);
- }
- default:
- layer_switcher_tap(_BL);
- break;
- }
-}
-
-void dance_dwly_reset(tap_dance_state_t *state, void *user_data) {
- switch (dwltap_state.state) {
- case SINGLE_TAP:
- break;
- case SINGLE_HOLD:
- case DOUBLE_HOLD:
- case TRIPLE_TAP:
- default:
- layer_switcher_tap(_BL);
- break;
- }
- dwltap_state.state = 0;
-}
diff --git a/users/zer09/tap_dance.h b/users/zer09/tap_dance.h
deleted file mode 100644
index 293b5eedc5..0000000000
--- a/users/zer09/tap_dance.h
+++ /dev/null
@@ -1,55 +0,0 @@
-#ifndef TAP_DANCE_H
-#define TAP_DANCE_H
-
-#include "zer09.h"
-
-typedef struct {
- int state;
-} tap;
-
-enum {
- DEFAULT_TAP,
- DEFAULT_HOLD,
- SINGLE_TAP,
- SINGLE_HOLD,
- DOUBLE_TAP,
- DOUBLE_HOLD,
- TRIPLE_TAP,
- TRIPLE_HOLD
-};
-
-enum {
- DA_SAFE_START,
- DA_LCTL,
- DA_LSPR,
- DA_RCTL,
- DA_RALT,
- DA_UPLY,
- DA_DWLY,
- DA_SAFE_END
-};
-
-extern volatile uint8_t active_layer;
-
-void layer_switcher_tap(uint8_t);
-int cur_dance(tap_dance_state_t *);
-
-void dance_lctl_finished(tap_dance_state_t *, void *);
-void dance_lctl_reset(tap_dance_state_t *, void *);
-
-void dance_lspr_finished(tap_dance_state_t *, void *);
-void dance_lspr_reset(tap_dance_state_t *, void *);
-
-void dance_rctl_finished(tap_dance_state_t *, void *);
-void dance_rctl_reset(tap_dance_state_t *, void *);
-
-void dance_ralt_finished(tap_dance_state_t *, void *);
-void dance_ralt_reset(tap_dance_state_t *, void *);
-
-void dance_uply_finished(tap_dance_state_t *, void *);
-void dance_uply_reset(tap_dance_state_t *, void *);
-
-void dance_dwly_finished(tap_dance_state_t *, void *);
-void dance_dwly_reset(tap_dance_state_t *, void *);
-
-#endif
diff --git a/users/zer09/zer09.c b/users/zer09/zer09.c
deleted file mode 100644
index 5e192f037a..0000000000
--- a/users/zer09/zer09.c
+++ /dev/null
@@ -1,89 +0,0 @@
-#include "zer09.h"
-#include "lights.h"
-#include "tap_dance.h"
-
-__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)) void led_set_keymap(uint8_t usb_led) {}
-
-static uint8_t c_lyr = 0; // current layer.
-
-bool shifted_layer(void) {
- static bool is_shifted = false;
-
- if (c_lyr == _VL) {
- if (!is_shifted) {
- register_code(KC_LSFT);
- is_shifted = true;
- return true;
- }
- } else {
- if (is_shifted) {
- unregister_code(KC_LSFT);
- is_shifted = false;
- return true;
- }
- }
-
- return false;
-}
-
-void matrix_init_user(void) {
- eeprom_read_led_dim_lvl();
-
- matrix_init_keymap();
-}
-
-void matrix_scan_user(void) {
- static uint8_t is_leds_changes = 1;
- c_lyr = get_highest_layer(layer_state);
-
- is_leds_changes = is_leds_changes << set_layer_led(c_lyr);
- is_leds_changes = is_leds_changes << shifted_layer();
- is_leds_changes = is_leds_changes << rainbow_loop(c_lyr);
-
- if (is_leds_changes > 1) {
- rgblight_set();
- is_leds_changes = 1;
- }
-
- matrix_scan_keymap();
-}
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- set_key_led(record, c_lyr);
-
- if (led_brightness(keycode, record)) {
- rgblight_set();
- return false;
- }
-
- rgblight_set();
- return process_record_keymap(keycode, record);
-}
-
-bool led_update_user(led_t led_state) {
- if (led_state.caps_lock) {
- rbw_led_keys[RBW_LCAP].status = ENABLED;
- rbw_led_keys[RBW_RCAP].status = ENABLED;
- } else {
- rbw_led_keys[RBW_LCAP].status = DISABLED;
- rbw_led_keys[RBW_RCAP].status = DISABLED;
- }
-
- if (led_state.scroll_lock) {
- rbw_led_keys[RBW_SCRL].status = ENABLED;
- } else {
- rbw_led_keys[RBW_SCRL].status = DISABLED;
- }
-
- led_set_keymap(led_state.raw);
- return false;
-}
diff --git a/users/zer09/zer09.h b/users/zer09/zer09.h
deleted file mode 100644
index 764fed2315..0000000000
--- a/users/zer09/zer09.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef USERSPACE
-#define USERSPACE
-
-#include QMK_KEYBOARD_H
-
-enum custom_keycodes {
- CK_SAFE = SAFE_RANGE,
- RGUP,
- RGDWN,
- YREG,
- NEW_SAFE_RANGE
-};
-
-#define KC_RGUP RGUP
-#define KC_RGDWN RGDWN
-#define KC_YREG YREG
-
-#define _BL 0 // The base layer
-#define _UL 1 // The up layer
-#define _DL 2 // The down layer
-#define _VL 3 // The shifted up layer
-#define _AL 4 // The assorted layer
-#define _GM 5
-
-#endif
diff --git a/users/zigotica/combos.c b/users/zigotica/combos.c
deleted file mode 100644
index 3f37f3c859..0000000000
--- a/users/zigotica/combos.c
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Copyright 2020 Sergi Meseguer <zigotica@gmail.com>
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "combos.h"
-
-enum combos {
- EM_EMAIL,
- CL_CAPSL
-};
-
-const uint16_t PROGMEM email_combo[] = {LT(_SYM, KC_E), KC_M, COMBO_END};
-const uint16_t PROGMEM caps_combo[] = {KC_C, KC_L, COMBO_END};
-
-combo_t key_combos[] = {
- [EM_EMAIL] = COMBO_ACTION(email_combo),
- [CL_CAPSL] = COMBO(caps_combo, KC_CAPS),
-};
-
-void process_combo_event(uint16_t combo_index, bool pressed) {
- switch(combo_index) {
- case EM_EMAIL:
- if (pressed) {
- SEND_STRING("zigotica@gmail.com");
- }
- break;
- }
-}
diff --git a/users/zigotica/combos.h b/users/zigotica/combos.h
deleted file mode 100644
index c75a107b9a..0000000000
--- a/users/zigotica/combos.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* Copyright 2020 Sergi Meseguer <zigotica@gmail.com>
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-
-#pragma once
-#include "zigotica.h"
-
diff --git a/users/zigotica/rows.h b/users/zigotica/rows.h
deleted file mode 100644
index 575b32186e..0000000000
--- a/users/zigotica/rows.h
+++ /dev/null
@@ -1,211 +0,0 @@
-/* Copyright 2020 Sergi Meseguer <zigotica@gmail.com>
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-#include "zigotica.h"
-
-// clang-format off
-#define _BLANK_THUMB _______, _______
-#define _BLANK_3 _______, _______, _______
-#define _BLANK_4 _______, _______, _______, _______
-#define _BLANK_ROW _______, _______, _______, _______, _______
-
-/*
- * STENAI Layer
- *
- * ,---------------------------------------. ,---------------------------------------.
- * | | | | | | | | | | | |
- * | ` ~ | W | D | P | F | | Q | L | U | Y | ' " |
- * | | | | | | | | | | | |
- * |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
- * | | | | | | | | | | | |
- * | H | R | S | T | G | | M | N | A | I | O |
- * | alt | ctrl | shft | meta | | | | meta | shft | ctrl | alt |
- * |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
- * | | | | | | | | | | | |
- * | B | X | C | V | [ { | | , < | K | Z | J | . > |
- * | | | | | TD ]} | | TD ; | | | | TD : |
- * `-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------.
- * | | | | | |
- * | TAB | SPC | | E | INTRO |
- * | num | nav | | sym | fn |
- * `---------------' `---------------'
- *
- */
-#define _STENAI_L1 KC_GRV, KC_W, KC_D, KC_P, KC_F
-#define _STENAI_L2 LALT_T(KC_H), LCTL_T(KC_R), LSFT_T(KC_S), LGUI_T(KC_T), KC_G
-#define _STENAI_L3 KC_B, KC_X, KC_C, KC_V, ZK_BRC
-#define _STENAI_LT LT(_NUM, KC_TAB), LT(_NAV, KC_SPC)
-
-#define _STENAI_R1 KC_Q, KC_L, KC_U, KC_Y, KC_QUOT
-#define _STENAI_R2 KC_M, RGUI_T(KC_N), RSFT_T(KC_A), RCTL_T(KC_I), RALT_T(KC_O)
-#define _STENAI_R3 ZK_SEMI, KC_K, KC_Z, KC_J, ZK_COLON
-#define _STENAI_RT LT(_SYM, KC_E), LT(_FN, KC_ENT)
-
-
-#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 _QWERTY_L1 KC_Q, KC_W, KC_E, KC_R, KC_T
-#define _QWERTY_L2 LALT_T(KC_A), LCTL_T(KC_S), LSFT_T(KC_D), LGUI_T(KC_F), KC_G
-#define _QWERTY_L3 KC_Z, KC_X, KC_C, KC_V, KC_B
-#define _QWERTY_LT LT(_NUM, KC_TAB), LT(_NAV, KC_SPC)
-
-#define _QWERTY_R1 KC_Y, KC_U, KC_I, KC_O, KC_P
-#define _QWERTY_R2 KC_H, RGUI_T(KC_J), RSFT_T(KC_K), RCTL_T(KC_L), RALT_T(KC_SCLN)
-#define _QWERTY_R3 KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH
-#define _QWERTY_RT LT(_SYM, KC_SPC), LT(_FN, KC_ENT)
-
-/*
- * NUM Layer
- *
- * ,---------------------------------------. ,---------------------------------------.
- * | | | | | | | | | | | |
- * | | - | + | = | | | | 7 | 8 | 9 | |
- * | | | | | | | | | | | |
- * |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
- * | | | | | | | | | | | |
- * | | | | | | | | 1 | 2 | 3 | |
- * | | | | | | | | | | | |
- * |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
- * | | | | | | | | | | | |
- * | | | / | * | | | | 4 | 5 | 6 | |
- * | | | | | | | | | | | |
- * `-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------.
- * |:::::::| | | | |
- * |:::::::| | | 0 | BACK |
- * |:::::::| | | | |
- * `---------------' `---------------'
- *
- */
-#define ____NUM_L1 _______, KC_MINS, KC_PLUS, KC_EQL, _______
-#define ____NUM_L2 _BLANK_ROW
-#define ____NUM_L3 _______, _______, KC_SLSH, KC_ASTR, _______
-#define ____NUM_LT _BLANK_THUMB
-
-#define ____NUM_R1 _______, KC_7, KC_8, KC_9, _______
-#define ____NUM_R2 _______, KC_1, KC_2, KC_3, _______
-#define ____NUM_R3 _______, KC_4, KC_5, KC_6, _______
-#define ____NUM_RT KC_0, KC_BSPC
-
-/*
-* NAVIGATION Layer
-*
-* ,---------------------------------------. ,---------------------------------------.
-* | | | | | | | | | | | |
-* | | PREV | PLAY | NEXT | | | WHDN | HOME | UP | PGUP | |
-* | | | | | | | | | | | |
-* |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
-* | | | | | | | | | | | |
-* | | | | | | | WHUP | LF | DN | RG | |
-* | | | | | | | | | | | |
-* |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
-* | | | | | | | | | | | |
-* | | | | | | | | END | | PGDN | |
-* | | | | | | | | | | | |
-* `-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------.
-* | |:::::::| | | |
-* | |:::::::| | | DEL |
-* | |:::::::| | | |
-* `---------------' `---------------'
-*/
-#define ____NAV_L1 _______, KC_MPRV, KC_MPLY, KC_MNXT, _______
-#define ____NAV_L2 _BLANK_ROW
-#define ____NAV_L3 _BLANK_ROW
-#define ____NAV_LT _BLANK_THUMB
-
-#define ____NAV_R1 KC_WH_D, KC_HOME, KC_UP, KC_PGUP, _______
-#define ____NAV_R2 KC_WH_U, KC_LEFT, KC_DOWN, KC_RGHT, _______
-#define ____NAV_R3 _______, KC_END, _______, KC_PGDN, _______
-#define ____NAV_RT _______, KC_DEL
-
-/*
-* SYMBOLS Layer
-*
-* ,---------------------------------------. ,---------------------------------------.
-* | | | | | | | | | | | |
-* | % | & | ? | | | ! | | | | | | |
-* | | | | | | | | | | | |
-* |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
-* | | | | | | | | | | | |
-* | # | @ | : | ; | $ | | | | | | |
-* | | | | | | | | | | | |
-* |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
-* | | | | | | | | | | | |
-* | ( | ~ | / | \ | ^ | | | | | | |
-* | | | | | | | | | | | |
-* `-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------.
-* | | | |:::::::| |
-* | | ESC | |:::::::| |
-* | | | |:::::::| |
-* `---------------' `---------------'
-*/
-#define ____SYM_L1 KC_PERC, KC_AMPR, KC_QUES, KC_PIPE, KC_EXLM
-#define ____SYM_L2 KC_HASH, KC_AT, KC_COLN, KC_SCLN, KC_DLR
-#define ____SYM_L3 ZK_PRN, KC_TILD, KC_SLSH, KC_BSLS, KC_CIRC
-#define ____SYM_LT _______, KC_ESC
-
-#define ____SYM_R1 _BLANK_ROW
-#define ____SYM_R2 _BLANK_ROW
-#define ____SYM_R3 _BLANK_ROW
-#define ____SYM_RT _BLANK_THUMB
-
-/*
-* FUNCTION KEYS Layer
-*
-* ,---------------------------------------. ,---------------------------------------.
-* | | | | | | | | | | | |
-* | | | | | | | | F7 | F8 | F9 | F10 |
-* | | | | | | | | | | | |
-* |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
-* | | | | | | | | | | | |
-* | | | | | | | | F1 | F2 | F3 | F11 |
-* | | | | | | | | | | | |
-* |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
-* | | | | | | | | | | | |
-* | | | | | | | | F4 | F5 | F6 | F12 |
-* | | | | | | | | | | | |
-* `-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------.
-* | | | | |:::::::|
-* | | ESC | | |:::::::|
-* | | | | |:::::::|
-* `---------------' `---------------'
-*/
-#define ____FN_L1 _BLANK_ROW
-#define ____FN_L2 _BLANK_ROW
-#define ____FN_L3 _BLANK_ROW
-#define ____FN_LT _______, KC_ESC
-
-#define ____FN_R1 _______, KC_F7, KC_F8, KC_F9, KC_F10
-#define ____FN_R2 _______, KC_F1, KC_F2, KC_F3, KC_F11
-#define ____FN_R3 _______, KC_F4, KC_F5, KC_F6, KC_F12
-#define ____FN_RT _BLANK_THUMB
-
-
-// Ortho short rows
-#define ____NUM15 KC_1, KC_2, KC_3, KC_4, KC_5
-#define ____NUM60 KC_6, KC_7, KC_8, KC_9, KC_0
-#define ____FN_15 KC_F1, KC_F2, KC_F3, KC_F4, KC_F5
-#define ____FN_60 KC_F6, KC_F7, KC_F8, KC_F9, KC_F10
-#define ____LMODS KC_LCTL, KC_LALT, KC_LGUI
-#define ____TARRS _______, KC_UP, _______
-#define ____BARRS KC_LEFT, KC_DOWN, KC_RIGHT
-#define ____LORTH ____LMODS, KC_MINS
-#define ____RORTH KC_BSPC, KC_SCLN, KC_BSLS, KC_SLSH
-
-// clang-format on
diff --git a/users/zigotica/rules.mk b/users/zigotica/rules.mk
deleted file mode 100644
index 93b0b5704d..0000000000
--- a/users/zigotica/rules.mk
+++ /dev/null
@@ -1,18 +0,0 @@
-SRC += zigotica.c
-
-ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
- SRC += tapdances.c
-endif
-
-ifeq ($(strip $(COMBO_ENABLE)), yes)
- INTROSPECTION_KEYMAP_C = combos.c
-endif
-
-ifeq ($(strip $(OLED_ENABLE)), yes)
- SRC += oled.c
-endif
-
-ifeq ($(strip $(ENCODER_ENABLE)), yes)
- SRC += encoder.c
-endif
-
diff --git a/users/zigotica/tapdances.c b/users/zigotica/tapdances.c
deleted file mode 100644
index 69390d244c..0000000000
--- a/users/zigotica/tapdances.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/* Copyright 2020 Sergi Meseguer <zigotica@gmail.com>
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "tapdances.h"
-
-void ios_media(tap_dance_state_t *state, void *user_data) {
- if (state->count == 1) {
- tap_code(KC_MPLY);
- } else if (state->count == 2) {
- tap_code(KC_MNXT);
- } else if (state->count == 3) {
- tap_code(KC_MPRV);
- } else {
- reset_tap_dance(state);
- }
-}
-
-tap_dance_action_t tap_dance_actions[] = {
- [0] = ACTION_TAP_DANCE_FN(ios_media),
- [1] = ACTION_TAP_DANCE_DOUBLE(KC_COMM, KC_SCLN),
- [2] = ACTION_TAP_DANCE_DOUBLE(KC_DOT, KC_COLON),
- [3] = ACTION_TAP_DANCE_DOUBLE(KC_LBRC, KC_RBRC),
- [4] = ACTION_TAP_DANCE_DOUBLE(KC_LPRN, KC_RPRN),
-};
diff --git a/users/zigotica/tapdances.h b/users/zigotica/tapdances.h
deleted file mode 100644
index 051c8a90bc..0000000000
--- a/users/zigotica/tapdances.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/* Copyright 2020 Sergi Meseguer <zigotica@gmail.com>
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-
-#pragma once
-#include "zigotica.h"
-
-#ifdef TAP_DANCE_ENABLE
- #define ZK_MEDIA TD(0)
- #define ZK_SEMI TD(1)
- #define ZK_COLON TD(2)
- #define ZK_BRC TD(3)
- #define ZK_PRN TD(4)
-#endif
diff --git a/users/zigotica/zigotica.c b/users/zigotica/zigotica.c
deleted file mode 100644
index 9de57406c4..0000000000
--- a/users/zigotica/zigotica.c
+++ /dev/null
@@ -1,14 +0,0 @@
-/* Copyright 2020 Sergi Meseguer <zigotica@gmail.com>
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "zigotica.h"
diff --git a/users/zigotica/zigotica.h b/users/zigotica/zigotica.h
deleted file mode 100644
index e7ac83e0dc..0000000000
--- a/users/zigotica/zigotica.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Copyright 2020 Sergi Meseguer <zigotica@gmail.com>
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-#include QMK_KEYBOARD_H
-
-#include "rows.h"
-
-#if defined(SPLIT_KEYBOARD) || defined(ORTHOLINEAR_KEYBOARD)
-enum userspace_layers {
- BASE = 0,
- _NUM,
- _NAV,
- _SYM,
- _FN,
-};
-#else
-enum userspace_layers {
- _BASE = 0,
- _FIGMA,
- _BROWSER,
- _VIM,
-};
-#endif
-
-
-#ifdef TAP_DANCE_ENABLE
-# include "tapdances.h"
-#endif
-
-#ifdef COMBO_ENABLE
-# include "combos.h"
-#endif
-
-#ifdef OLED_ENABLE
- #include "oled.h"
-#endif
-
-#ifdef ENCODER_ENABLE
- #include "encoder.h"
-#endif
diff --git a/users/zyber/config.h b/users/zyber/config.h
deleted file mode 100644
index be005d8008..0000000000
--- a/users/zyber/config.h
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright 2022 ZyBeR (@ZyberSE)
-// SPDX-License-Identifier: GPL-2.0
-
-#pragma once
-
-#undef TAPPING_TERM
-#define TAPPING_TERM 152
-#define GRAVE_ESC_GUI_OVERRIDE
-#define BOTH_SHIFTS_TURNS_ON_CAPS_WORD
diff --git a/users/zyber/rules.mk b/users/zyber/rules.mk
deleted file mode 100644
index 83559df609..0000000000
--- a/users/zyber/rules.mk
+++ /dev/null
@@ -1,8 +0,0 @@
-SRC += zyber.c
-
-CAPS_WORD_ENABLE = yes
-TAP_DANCE_ENABLE = yes
-COMMAND_ENABLE = no
-
-# DISABLE VIA CONFIGURATOR (otherwise QMK won't work properly)
-DYNAMIC_KEYMAP_ENABLE = no
diff --git a/users/zyber/zyber.c b/users/zyber/zyber.c
deleted file mode 100644
index 72852d091a..0000000000
--- a/users/zyber/zyber.c
+++ /dev/null
@@ -1,137 +0,0 @@
-// Copyright 2022 ZyBeR (@ZyberSE)
-// SPDX-License-Identifier: GPL-2.0
-
-#include "zyber.h"
-
-
-__attribute__((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; }
-
-uint16_t key_timer;
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- if (record->event.pressed) {
- key_timer = timer_read();
- }
-
- if (!process_caps_word(keycode, record)) {
- return false;
- }
-
- switch(keycode) {
- case C_BLK:
- if (record->event.pressed) {
- send_string("```" SS_DELAY(80) SS_LCMD("v") SS_DELAY(80) "```");
- }
- break;
-
- case CTRL_C_UP:
- if (record->event.pressed) {
- register_mods(MOD_BIT(KC_LEFT_CTRL));
- } else {
- unregister_mods(MOD_BIT(KC_LEFT_CTRL));
- if (timer_elapsed(key_timer) < TAPPING_TERM) {
- tap_code16(C(KC_UP));
- }
- }
- return false;
- break;
-
- case L1_EXPL:
- if (record->event.pressed) {
- layer_on(1);
- } else {
- layer_off(1);
- if (timer_elapsed(key_timer) < TAPPING_TERM) {
- tap_code16(C(KC_UP));
- }
- }
- return false;
- break;
-
- case ROPT_SRH:
- if (record->event.pressed) {
- register_mods(MOD_BIT(KC_ROPT));
- } else {
- unregister_mods(MOD_BIT(KC_ROPT));
- if (timer_elapsed(key_timer) < TAPPING_TERM) {
- tap_code16(G(KC_SPC));
- }
- }
- return false;
- break;
- }
-
- return process_record_keymap(keycode, record);
-}
-
-/* Screenshoot */
-void dance_SSHT_finished(tap_dance_state_t *state, void *user_data) {
- if (state->count == 2) {
- tap_code16(C(S(G(KC_4))));
- } else {
- tap_code(KC_4);
- }
-}
-void dance_SSHT_reset(tap_dance_state_t *state, void *user_data) {
- if (state->count == 2) {
- unregister_code16(C(S(G(KC_4))));
- } else {
- unregister_code(KC_4);
- }
-}
-
-/* Å */
-void dance_LBRC_finished(tap_dance_state_t *state, void *user_data) {
- if (state->count == 2) {
- tap_code16(A(KC_LBRC));
- } else {
- tap_code(KC_LBRC);
- }
-}
-void dance_LBRC_reset(tap_dance_state_t *state, void *user_data) {
- if (state->count == 2) {
- unregister_code16(A(KC_LBRC));
- } else {
- unregister_code(KC_LBRC);
- }
-}
-
-/* Ö */
-void dance_SCLN_finished(tap_dance_state_t *state, void *user_data) {
- if (state->count == 2) {
- tap_code16(A(KC_SCLN));
- } else {
- tap_code(KC_SCLN);
- }
-}
-void dance_SCLN_reset(tap_dance_state_t *state, void *user_data) {
- if (state->count == 2) {
- unregister_code16(A(KC_SCLN));
- } else {
- unregister_code(KC_SCLN);
- }
-}
-
-/* Ä */
-void dance_QUOT_finished(tap_dance_state_t *state, void *user_data) {
- if (state->count == 2) {
- tap_code16(A(KC_QUOT));
- } else {
- tap_code(KC_QUOT);
- }
-}
-void dance_QUOT_reset(tap_dance_state_t *state, void *user_data) {
- if (state->count == 2) {
- unregister_code16(A(KC_QUOT));
- } else {
- unregister_code(KC_QUOT);
- }
-}
-
-tap_dance_action_t tap_dance_actions[] = {
- [SSHT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_SSHT_finished, dance_SSHT_reset),
- [LBRC] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_LBRC_finished, dance_LBRC_reset),
- [SCLN] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_SCLN_finished, dance_SCLN_reset),
- [QUOT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_QUOT_finished, dance_QUOT_reset),
- [END_HOME] = ACTION_TAP_DANCE_DOUBLE(LGUI(KC_LEFT), LGUI(KC_RIGHT))
-};
diff --git a/users/zyber/zyber.h b/users/zyber/zyber.h
deleted file mode 100644
index 018d0f5e85..0000000000
--- a/users/zyber/zyber.h
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2022 ZyBeR (@ZyberSE)
-// SPDX-License-Identifier: GPL-2.0
-
-#pragma once
-
-#include QMK_KEYBOARD_H
-#include "quantum.h"
-
-enum custom_keycodes {
- CTRL_C_UP = SAFE_RANGE,
- L1_EXPL,
- ROPT_SRH,
- C_BLK
-};
-
-enum tap_dances {
- SSHT = 0,
- LBRC,
- SCLN,
- QUOT,
- END_HOME
-};
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record);
-
-void dance_SSHT_finished(tap_dance_state_t *state, void *user_data);
-void dance_SSHT_reset(tap_dance_state_t *state, void *user_data);
-void dance_LBRC_finished(tap_dance_state_t *state, void *user_data);
-void dance_LBRC_reset(tap_dance_state_t *state, void *user_data);
-void dance_SCLN_finished(tap_dance_state_t *state, void *user_data);
-void dance_SCLN_reset(tap_dance_state_t *state, void *user_data);
-void dance_QUOT_finished(tap_dance_state_t *state, void *user_data);
-void dance_QUOT_reset(tap_dance_state_t *state, void *user_data);