summaryrefslogtreecommitdiffstats
path: root/users
diff options
context:
space:
mode:
Diffstat (limited to 'users')
-rw-r--r--users/333fred/333fred.c22
-rw-r--r--users/333fred/333fred.h35
-rw-r--r--users/333fred/config.h22
-rw-r--r--users/333fred/layout_macros.h22
-rw-r--r--users/333fred/rgb.c22
-rw-r--r--users/333fred/rules.mk1
-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/rules.mk2
-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/danielo515/combo.c44
-rw-r--r--users/danielo515/config.h4
-rw-r--r--users/danielo515/process_records.c247
-rw-r--r--users/danielo515/process_records.h94
-rw-r--r--users/dshields/rules.mk3
-rw-r--r--users/issmirnov/issmirnov.c2
-rw-r--r--users/issmirnov/rules.mk2
-rw-r--r--users/kuchosauronad0/combo.c2
-rw-r--r--users/kuchosauronad0/rules.mk4
-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/combos.c2
-rw-r--r--users/pvinis/rules.mk2
-rw-r--r--users/riblee/readme.md14
-rw-r--r--users/riblee/riblee.c166
-rw-r--r--users/riblee/riblee.h56
-rw-r--r--users/riblee/rules.mk1
-rw-r--r--users/spotpuff/rules.mk1
-rw-r--r--users/stanrc85/rgblight_layers.c38
-rw-r--r--users/stanrc85/rules.mk18
-rw-r--r--users/stanrc85/stanrc85.c36
-rw-r--r--users/stanrc85/startup_fanfare.c43
-rw-r--r--users/yanfali/rules.mk2
-rw-r--r--users/yet-another-developer/combo.c2
-rw-r--r--users/yet-another-developer/rules.mk2
46 files changed, 1535 insertions, 248 deletions
diff --git a/users/333fred/333fred.c b/users/333fred/333fred.c
index 79df8c4dea..621b9e6649 100644
--- a/users/333fred/333fred.c
+++ b/users/333fred/333fred.c
@@ -1,3 +1,25 @@
+/*
+ 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"
diff --git a/users/333fred/333fred.h b/users/333fred/333fred.h
index 716b61a25c..0532ff2df7 100644
--- a/users/333fred/333fred.h
+++ b/users/333fred/333fred.h
@@ -1,16 +1,37 @@
+/*
+ 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 CODE 1 // code layer
-#define CODEFLOW 2
-#define SYMB 3
-#define MDIA 4 // media keys
-#define VIM 5
-#define GAME 6
-#define GAME_ARROW 7
+#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 {
diff --git a/users/333fred/config.h b/users/333fred/config.h
index 5974b78926..0bbaa38a99 100644
--- a/users/333fred/config.h
+++ b/users/333fred/config.h
@@ -1,3 +1,25 @@
+/*
+ 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
diff --git a/users/333fred/layout_macros.h b/users/333fred/layout_macros.h
index 3b163f6ce7..d46a41905e 100644
--- a/users/333fred/layout_macros.h
+++ b/users/333fred/layout_macros.h
@@ -1,3 +1,25 @@
+/*
+ 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 _______, _______, _______, _______, _______, _______
diff --git a/users/333fred/rgb.c b/users/333fred/rgb.c
index c86cd1c77d..d287143302 100644
--- a/users/333fred/rgb.c
+++ b/users/333fred/rgb.c
@@ -1,3 +1,25 @@
+/*
+ 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"
diff --git a/users/333fred/rules.mk b/users/333fred/rules.mk
index 191422e365..265a6c18cb 100644
--- a/users/333fred/rules.mk
+++ b/users/333fred/rules.mk
@@ -7,3 +7,4 @@ endif
TAP_DANCE_ENABLE=yes
NKRO_ENABLE = yes
PERMISSIVE_HOLD = yes
+LTO_ENABLE = yes
diff --git a/users/badger/README.md b/users/badger/README.md
new file mode 100644
index 0000000000..fca1028a59
--- /dev/null
+++ b/users/badger/README.md
@@ -0,0 +1,31 @@
+# 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
new file mode 100644
index 0000000000..4551840610
--- /dev/null
+++ b/users/badger/badger.c
@@ -0,0 +1,49 @@
+/*
+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
new file mode 100644
index 0000000000..bb2dcd0bd3
--- /dev/null
+++ b/users/badger/badger.h
@@ -0,0 +1,109 @@
+/*
+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
new file mode 100644
index 0000000000..ff84e1706f
--- /dev/null
+++ b/users/badger/ortho.c
@@ -0,0 +1,151 @@
+/*
+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
new file mode 100644
index 0000000000..207f2e2822
--- /dev/null
+++ b/users/badger/ortho.h
@@ -0,0 +1,58 @@
+/*
+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
new file mode 100644
index 0000000000..4f1507b8f3
--- /dev/null
+++ b/users/badger/rules.mk
@@ -0,0 +1,2 @@
+SRC += badger.c
+SRC += ortho.c
diff --git a/users/bcat/rules.mk b/users/bcat/rules.mk
index a595d1f588..f87974ed96 100644
--- a/users/bcat/rules.mk
+++ b/users/bcat/rules.mk
@@ -14,7 +14,7 @@ EXTRAKEY_ENABLE = yes
NKRO_ENABLE = yes
# Enable link-time optimization to reduce binary size.
-LINK_TIME_OPTIMIZATION_ENABLE = yes
+LTO_ENABLE = yes
# Disable unused build options on all keyboards.
COMMAND_ENABLE = no
diff --git a/users/callum/callum.c b/users/callum/callum.c
new file mode 100644
index 0000000000..4661902af5
--- /dev/null
+++ b/users/callum/callum.c
@@ -0,0 +1,130 @@
+#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 SPCR 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, RESET, 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, SPCR, 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;
+ }
+}