summaryrefslogtreecommitdiffstats
path: root/keyboards/handwired
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/handwired')
-rw-r--r--keyboards/handwired/promethium/keymaps/default/README.md44
-rw-r--r--keyboards/handwired/promethium/keymaps/default/config.h29
-rw-r--r--keyboards/handwired/promethium/keymaps/default/flash.sh4
-rw-r--r--keyboards/handwired/promethium/keymaps/default/keymap.c1368
-rw-r--r--keyboards/handwired/promethium/keymaps/default/rgbtheme.h1
-rw-r--r--keyboards/handwired/promethium/keymaps/default/rgbtheme_carbon.h36
-rw-r--r--keyboards/handwired/promethium/keymaps/default/rgbtheme_default.h36
-rw-r--r--keyboards/handwired/promethium/keymaps/default/rules.mk26
8 files changed, 1544 insertions, 0 deletions
diff --git a/keyboards/handwired/promethium/keymaps/default/README.md b/keyboards/handwired/promethium/keymaps/default/README.md
new file mode 100644
index 0000000000..48824b9f73
--- /dev/null
+++ b/keyboards/handwired/promethium/keymaps/default/README.md
@@ -0,0 +1,44 @@
+Priyadi Keymap for Planck-like Keyboards
+========================================
+
+Main layer modifications from default Planck layout:
+
+* Enter moved to quotes position
+* Quotes moved to semicolon position.
+* QWERTZ style colon & semicolon. shift-. = : shift-, = ; This is done in hardware, no layout switching needed in software.
+* < & > occupied precious real estate, and so they are moved down to punctuation layer.
+* Right-shift on Enter position.
+* Removed arrow keys, they are on another layer now.
+* Put Ctrl-Alt-Super and Super-AltGr-Ctrl in left & right corners.
+* Lower & Raise is now called Num and Fun.
+* OS & Left keys become another thumb modifier: Empty & Greek (Empty because I used this for another use and my muscle memory is not adapted to it yet)
+
+On Promethium, Trackpoint is enabled on PD2 and PD3. We impersonate a Thinkpad keyboard to be able to use Thinkpad driver on Windows (still needs verification).
+
+AltGr & Compose dual use key. Tap for Compose (mapped to Scroll Lock in hardware) and press for AltGr.
+
+Supported layouts: QWERTY, DVORAK, Colemak, Workman, Norman. Switchable from SYS layer. In DVORAK, semicolon is replaced by /? key.
+
+Num activates NUM layer: hexkeypad on the right side and most punctuation on the left side. Hexkeypad is optimized for C-style hex, IPv6, HTML RGB triplets, etc.
+
+Fun activates FUN layer: arrow cluster on right home row, F-numbers on left side.
+
+Pressing Num+Fun activates PUNC layer: same punctuations as NUM layer on the left side, parens on the right side.
+
+Greek activates either GREEKU or GREEKL layer, depending whether shift is pressed or not. Shift state changes are also taken into account when the layer is active.
+
+Greek+Empty activates EMOJI layer. The whole keyboard now outputs emojis!
+
+Pressing both spacebars (spacekeys, actually) activates GUI layer. QWERTYUIOP switches to a virtual desktop. J & L switches virtual desktop to the left or right. S & F behaves like Alt-Tab and Alt-Shift-Tab. This works by sending Alt press when entering the layer, and Alt release when other than S or F keys are pressed.
+
+Pressing both Ctrls activates SYS layer for configuring the keyboard.
+
+On Promethium, USB or Bluetooth output is detected on startup. If USB is connected, then USB is used initially. SYS-U and SYS-B switch output to USB or Bluetooth at runtime. Current active output is indicated with LEDs.
+
+SYS-W, SYS-L, SYS-M switch Unicode input method. SYS-Q, SYS-D, SYS-C, SYS-K, SYS-N switch to QWERTY, DVORAK, Colemak, Workman and Norman, respectively.
+
+SYS-A (mnemonic: audio) toggles faux clicky: use buzzer to emit clicks on key presses and releases.
+
+On Promethium there are 16 indicator LEDs, and under switch LEDs on each switches, including Trackpoint buttons. Totaling 67 LEDs. Output is limited to 0xF for each LEDs to conserve power. SYS-G (mnemonic: glow) toggles various backlighting modes.
+
+On Promethium, there's a LED to indicate battery level. Hue indicates level: green is full, red is empty. \ No newline at end of file
diff --git a/keyboards/handwired/promethium/keymaps/default/config.h b/keyboards/handwired/promethium/keymaps/default/config.h
new file mode 100644
index 0000000000..fa86e22479
--- /dev/null
+++ b/keyboards/handwired/promethium/keymaps/default/config.h
@@ -0,0 +1,29 @@
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+#include "../../config.h"
+
+#define PRIYADI_PROMETHIUM
+
+/* bootmagic salt key */
+#define BOOTMAGIC_KEY_SALT KC_ESC
+
+/* skip bootmagic and eeconfig */
+#define BOOTMAGIC_KEY_SKIP KC_SPACE
+
+#define PREVENT_STUCK_MODIFIERS
+
+#define RGBSPS_ENABLE
+#define RGBSPS_DEMO_ENABLE
+
+#define UNICODE_TYPE_DELAY 0
+
+#define LAYOUT_DVORAK
+#define LAYOUT_COLEMAK
+#define LAYOUT_NORMAN
+#define LAYOUT_WORKMAN
+
+#define DOUBLESPACE_LAYER_ENABLE
+// #define TOLELOT_ENABLE
+
+#endif
diff --git a/keyboards/handwired/promethium/keymaps/default/flash.sh b/keyboards/handwired/promethium/keymaps/default/flash.sh
new file mode 100644
index 0000000000..14a3b43789
--- /dev/null
+++ b/keyboards/handwired/promethium/keymaps/default/flash.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+sleep 10
+avrdude -p m32u4 -P /dev/ttyACM0 -c avr109 -U flash:w:../../../../../.build/handwired_promethium_priyadi.hex
diff --git a/keyboards/handwired/promethium/keymaps/default/keymap.c b/keyboards/handwired/promethium/keymaps/default/keymap.c
new file mode 100644
index 0000000000..e229b67e54
--- /dev/null
+++ b/keyboards/handwired/promethium/keymaps/default/keymap.c
@@ -0,0 +1,1368 @@
+/*
+Copyright 2017 Priyadi Iman Nurcahyo
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+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(PRIYADI_PROMETHIUM)
+ #include "promethium.h"
+#elif defined(PRIYADI_PLANCK)
+ #include "planck.h"
+#else
+ #error "no keyboard defined"
+#endif
+
+#include "action_layer.h"
+#ifdef AUDIO_ENABLE
+ #include "audio.h"
+ #include "musical_notes.h"
+#endif
+#include "eeconfig.h"
+#include "process_unicode.h"
+#include "quantum.h"
+#ifdef RGBSPS_ENABLE
+#include "rgbsps.h"
+#include "rgbtheme.h"
+#endif
+#ifdef PS2_MOUSE_ENABLE
+#include "ps2_mouse.h"
+#include "ps2.h"
+#endif
+#ifdef FAUXCLICKY_ENABLE
+#include "fauxclicky.h"
+#ifdef RGBSPS_ENABLE
+#undef FAUXCLICKY_OFF
+#define FAUXCLICKY_OFF do { \
+ fauxclicky_enabled = false; \
+ rgbsps_set(LED_AUDIO, COLOR_BLANK); \
+ fauxclicky_stop(); \
+} while (0)
+#undef FAUXCLICKY_ON
+#define FAUXCLICKY_ON do { \
+ fauxclicky_enabled = true; \
+ rgbsps_set(LED_AUDIO, THEME_COLOR_AUDIO); \
+} while (0)
+#endif
+#endif
+#include "outputselect.h"
+#include "led.h"
+#define COUNT(x) (sizeof (x) / sizeof (*(x)))
+
+// Fillers to make layering clearer
+#define _______ KC_TRNS
+#define XXXXXXX KC_NO
+#define G(x) LGUI(x)
+#define KC_WWWB KC_WWW_BACK
+#define KC_WWWF KC_WWW_FORWARD
+
+// hybrid right-alt & scroll lock (mapped to Compose in OS)
+#define C_RALT MT(MOD_RALT, KC_SLCK)
+
+// dual use right-shift & del key
+// #define C_RSFT MT(MOD_RSFT, KC_DEL)
+
+bool capslock = false;
+#ifdef DOUBLESPACE_LAYER_ENABLE
+bool lspace_active = false;
+bool rspace_active = false;
+bool lspace_emitted = false;
+bool rspace_emitted = false;
+bool space_layer_entered = false;
+#endif
+
+// glow
+enum glow_modes {
+ GLOW_NONE,
+ GLOW_MIN,
+ GLOW_FULL
+};
+uint8_t glow_mode = GLOW_MIN;
+
+void turn_off_capslock(void);
+extern keymap_config_t keymap_config;
+
+// layers, ordering is important!
+enum layers {
+ _QWERTY,
+ _DVORAK,
+ _COLEMAK,
+ _WORKMAN,
+ _NORMAN,
+ _DEFAULT_LAYER_MAX = _NORMAN,
+
+ _GREEKU,
+ _GREEKL,
+
+ _NUM,
+ _FUN,
+ _PUNC,
+
+ _EMPTY,
+ _EMOJI,
+ _GUI,
+ _SYS
+};
+
+// double-space layer
+#define _SPACE _GUI
+
+enum planck_keycodes {
+ // layouts
+ QWERTY = SAFE_RANGE,
+ DVORAK,
+ COLEMAK,
+ WORKMAN,
+ NORMAN,
+
+ // layer switchers
+ EMOJI,
+ GUI,
+ GREEK,
+
+ // os switchers
+ LINUX,
+ WIN,
+ OSX,
+
+ // others
+ LSPACE,
+ RSPACE,
+ GLOW,
+
+ // stub
+#ifndef FAUXCLICKY_ENABLE
+ FC_TOG,
+#endif
+#ifndef MODULE_ADAFRUIT_BLE
+ OUT_BT,
+#endif
+ RGBDEMO,
+ KEYCODE_END
+};
+
+#define EMPTY MO(_EMPTY)
+#define NUM MO(_NUM)
+#define FUN MO(_FUN)
+#define FUN0 LT(_FUN, KC_0)
+
+// unicode map
+
+enum unicode_name {
+ GRIN, // grinning face 😊
+ TJOY, // tears of joy 😂
+ SMILE, // grining face with smiling eyes 😁
+ HEART, // heart ❤
+ EYERT, // smiling face with heart shaped eyes 😍
+ CRY, // crying face 😭
+ SMEYE, // smiling face with smiling eyes 😊
+ UNAMU, // unamused 😒
+ KISS, // kiss 😘
+ HART2, // two hearts 💕
+ WEARY, // weary 😩
+ OKHND, // ok hand sign 👌
+ PENSV, // pensive 😔
+ SMIRK, // smirk 😏
+ RECYC, // recycle ♻
+ WINK, // wink 😉
+ THMUP, // thumb up 👍
+ THMDN, // thumb down 👎
+ PRAY, // pray 🙏
+ PHEW, // relieved 😌
+ MUSIC, // musical notes
+ FLUSH, // flushed 😳
+ CELEB, // celebration 🙌
+ CRY2, // crying face 😢
+ COOL, // smile with sunglasses 😎
+ NOEVS, // see no evil
+ NOEVH, // hear no evil
+ NOEVK, // speak no evil
+ POO, // pile of poo
+ EYES, // eyes
+ VIC, // victory hand
+ BHART, // broken heart
+ SLEEP, // sleeping face
+ SMIL2, // smiling face with open mouth & sweat
+ HUNRD, // 100
+ CONFU, // confused
+ TONGU, // face with tongue & winking eye
+ DISAP, // disappointed
+ YUMMY, // face savoring delicious food
+ CLAP, // hand clapping
+ FEAR, // face screaming in fear
+ HORNS, // smiling face with horns
+ HALO, // smiling face with halo
+ BYE, // waving hand
+ SUN, // sun
+ MOON, // moon
+ SKULL, // skull
+
+ // greek letters
+ UALPH,
+ UBETA,
+ UGAMM,
+ UDELT,
+ UEPSI,
+ UZETA,
+ UETA,
+ UTHET,
+ UIOTA,
+ UKAPP,
+ ULAMB,
+ UMU,
+ UNU,
+ UXI,
+ UOMIC,
+ UPI,
+ URHO,
+ USIGM,
+ UTAU,
+ UUPSI,
+ UPHI,
+ UCHI,
+ UPSI,
+ UOMEG,
+
+ LALPH,
+ LBETA,
+ LGAMM,
+ LDELT,
+ LEPSI,
+ LZETA,
+ LETA,
+ LTHET,
+ LIOTA,
+ LKAPP,
+ LLAMB,
+ LMU,
+ LNU,
+ LXI,
+ LOMIC,
+ LPI,
+ LRHO,
+ LSIGM,
+ LTAU,
+ LUPSI,
+ LPHI,
+ LCHI,
+ LPSI,
+ LOMEG,
+
+ FSIGM,
+
+ LTEQ,
+ GTEQ,
+ NOTEQ,
+ PLMIN,
+};
+
+const uint32_t PROGMEM unicode_map[] = {
+ [GRIN] = 0x1F600,
+ [TJOY] = 0x1F602,
+ [SMILE] = 0x1F601,
+ [HEART] = 0x2764,
+ [EYERT] = 0x1f60d,
+ [CRY] = 0x1f62d,
+ [SMEYE] = 0x1F60A,
+ [UNAMU] = 0x1F612,
+ [KISS] = 0x1F618,
+ [HART2] = 0x1F495,
+ [WEARY] = 0x1F629,
+ [OKHND] = 0x1F44C,
+ [PENSV] = 0x1F614,
+ [SMIRK] = 0x1F60F,
+ [RECYC] = 0x267B,
+ [WINK] = 0x1F609,
+ [THMUP] = 0x1F44D,
+ [THMDN] = 0x1F44E,
+ [PRAY] = 0x1F64F,
+ [PHEW] = 0x1F60C,
+ [MUSIC] = 0x1F3B6,
+ [FLUSH] = 0x1F633,
+ [CELEB] = 0x1F64C,
+ [CRY2] = 0x1F622,
+ [COOL] = 0x1F60E,
+ [NOEVS] = 0x1F648,
+ [NOEVH] = 0x1F649,
+ [NOEVK] = 0x1F64A,
+ [POO] = 0x1F4A9,
+ [EYES] = 0x1F440,
+ [VIC] = 0x270C,
+ [BHART] = 0x1F494,
+ [SLEEP] = 0x1F634,
+ [SMIL2] = 0x1F605,
+ [HUNRD] = 0x1F4AF,
+ [CONFU] = 0x1F615,
+ [TONGU] = 0x1F61C,
+ [DISAP] = 0x1F61E,
+ [YUMMY] = 0x1F60B,
+ [CLAP] = 0x1F44F,
+ [FEAR] = 0x1F631,
+ [HORNS] = 0x1F608,
+ [HALO] = 0x1F607,
+ [BYE] = 0x1F44B,
+ [SUN] = 0x2600,
+ [MOON] = 0x1F314,
+ [SKULL] = 0x1F480,
+
+ // greek letters
+ [UALPH] = 0x0391,
+ [UBETA] = 0x0392,
+ [UGAMM] = 0x0393,
+ [UDELT] = 0x0394,
+ [UEPSI] = 0x0395,
+ [UZETA] = 0x0396,
+ [UETA] = 0x0397,
+ [UTHET] = 0x0398,
+ [UIOTA] = 0x0399,
+ [UKAPP] = 0x039A,
+ [ULAMB] = 0x039B,
+ [UMU] = 0x039C,
+ [UNU] = 0x039D,
+ [UXI] = 0x039E,
+ [UOMIC] = 0x039F,
+ [UPI] = 0x03A0,
+ [URHO] = 0x03A1,
+ [USIGM] = 0x03A3,
+ [UTAU] = 0x03A4,
+ [UUPSI] = 0x03A5,
+ [UPHI] = 0x03A6,
+ [UCHI] = 0x03A7,
+ [UPSI] = 0x03A8,
+ [UOMEG] = 0x03A9,
+ [LALPH] = 0x03B1,
+ [LBETA] = 0x03B2,
+ [LGAMM] = 0x03B3,
+ [LDELT] = 0x03B4,
+ [LEPSI] = 0x03B5,
+ [LZETA] = 0x03B6,
+ [LETA] = 0x03B7,
+ [LTHET] = 0x03B8,
+ [LIOTA] = 0x03B9,
+ [LKAPP] = 0x03BA,
+ [LLAMB] = 0x03BB,
+ [LMU] = 0x03BC,
+ [LNU] = 0x03BD,
+ [LXI] = 0x03BE,
+ [LOMIC] = 0x03BF,
+ [LPI] = 0x03C0,
+ [LRHO] = 0x03C1,
+ [LSIGM] = 0x03C3,
+ [LTAU] = 0x03C4,
+ [LUPSI] = 0x03C5,
+ [LPHI] = 0x03C6,
+ [LCHI] = 0x03C7,
+ [LPSI] = 0x03C8,
+ [LOMEG] = 0x03C9,
+ [FSIGM] = 0x03C2,
+
+ // other
+ [LTEQ] = 0x2264, // less than or equal
+ [GTEQ] = 0x2265, // greater than or equal
+ [NOTEQ] = 0x2260, // not equal
+ [PLMIN] = 0xB1, // plus minus
+};
+
+// RGBSPS
+
+#ifdef RGBSPS_ENABLE
+const uint8_t PROGMEM LED_ALNUM[] = {
+ LED_Z,
+ LED_A,
+ LED_Q,
+ LED_W,
+ LED_S,
+ LED_X,
+ LED_C,
+ LED_D,
+ LED_E,
+ LED_R,
+ LED_F,
+ LED_V,
+ LED_B,
+ LED_G,
+ LED_T,
+ LED_N,
+ LED_HH,
+ LED_Y,
+ LED_U,
+ LED_J,
+ LED_M,
+ LED_COMM,
+ LED_K,
+ LED_I,
+ LED_O,
+ LED_L,
+ LED_DOT,
+ LED_SLSH,
+ LED_SCLN,
+ LED_P,
+ LED_LSPC,
+ LED_RSPC
+};
+
+const uint8_t PROGMEM LED_HOMING[] = {
+ LED_A,
+ LED_S,
+ LED_D,
+ LED_F,
+ LED_J,
+ LED_K,
+ LED_L,
+ LED_SCLN
+};
+
+const uint8_t PROGMEM LED_MODS[] = {
+ LED_TAB,
+ LED_ESC,
+ LED_LSFT,
+ LED_LCTL,
+ LED_LGUI,
+ LED_LALT,
+ LED_RALT,
+ LED_RGUI,
+ LED_BKSP,
+ LED_ENT,
+ LED_RSFT,
+ LED_RCTL
+};
+
+const uint8_t PROGMEM LED_FN[] = {
+ LED_EMPTY,
+ LED_NUM,
+ LED_FUN,
+ LED_GREEK
+};
+
+const uint8_t PROGMEM LED_INDICATORS[] = {
+ LED_IND_LINUX,
+ LED_IND_APPLE,
+ LED_IND_WINDOWS,
+ LED_IND_QWERTY,
+ LED_IND_ALT,
+ LED_IND_AUDIO,
+ LED_IND_BLUETOOTH,
+ LED_IND_USB,
+
+ LED_IND_BATTERY,
+ LED_IND_CAPSLOCK,
+ LED_IND_GUI,
+ LED_IND_FUN,
+ LED_IND_NUM,
+ LED_IND_PUNC,
+ LED_IND_EMOJI,
+ LED_IND_GREEK,
+};
+
+const uint8_t PROGMEM LED_TRACKPOINT[] = {
+ LED_TRACKPOINT1,
+ LED_TRACKPOINT2,
+ LED_TRACKPOINT3,
+};
+
+void led_turnoff_keys(void) {
+ for(uint8_t i = 0; i < COUNT(LED_ALNUM); i++) {
+ rgbsps_set(pgm_read_byte(&LED_ALNUM[i]), COLOR_BLACK);
+ }
+ for(uint8_t i = 0; i < COUNT(LED_MODS); i++) {
+ rgbsps_set(pgm_read_byte(&LED_MODS[i]), COLOR_BLACK);
+ }
+ for(uint8_t i = 0; i < COUNT(LED_FN); i++) {
+ rgbsps_set(pgm_read_byte(&LED_FN[i]), COLOR_BLACK);
+ }
+}
+
+#ifdef RGBSPS_DEMO_ENABLE
+void led_demo(void) {
+ rgbsps_set(LED_IND_LINUX, THEME_COLOR_LINUX);
+ rgbsps_set(LED_IND_APPLE, THEME_COLOR_APPLE);
+ rgbsps_set(LED_IND_WINDOWS, THEME_COLOR_WINDOWS);
+ rgbsps_set(LED_IND_QWERTY, THEME_COLOR_QWERTY);
+ rgbsps_set(LED_IND_ALT, THEME_COLOR_ALT);
+ rgbsps_set(LED_IND_AUDIO, THEME_COLOR_AUDIO);
+ rgbsps_set(LED_IND_BLUETOOTH, THEME_COLOR_BLUETOOTH);
+ rgbsps_set(LED_IND_USB, THEME_COLOR_USB);
+ rgbsps_set(LED_IND_CAPSLOCK, THEME_COLOR_CAPSLOCK);
+ rgbsps_set(LED_IND_GUI, THEME_COLOR_GUI);
+ rgbsps_set(LED_IND_FUN, THEME_COLOR_FUN);
+ rgbsps_set(LED_IND_NUM, THEME_COLOR_NUM);
+ rgbsps_set(LED_IND_PUNC, THEME_COLOR_PUNC);
+ rgbsps_set(LED_IND_GREEK, THEME_COLOR_GREEK);
+ rgbsps_set(LED_IND_EMOJI, THEME_COLOR_EMOJI);
+ rgbsps_send();
+}
+#endif
+
+void led_reset(void) {
+ switch (glow_mode) {
+ case GLOW_NONE:
+ led_turnoff_keys();
+ break;
+ case GLOW_MIN:
+ led_turnoff_keys();
+ for(uint8_t i = 0; i < COUNT(LED_HOMING); i++) {
+ rgbsps_set(pgm_read_byte(&LED_HOMING[i]), THEME_COLOR_GLOW1_HOME);
+ }
+ rgbsps_set(LED_F, THEME_COLOR_GLOW1_HOMING);
+ rgbsps_set(LED_J, THEME_COLOR_GLOW1_HOMING);
+ break;
+ case GLOW_FULL:
+ for(uint8_t i = 0; i < COUNT(LED_ALNUM); i++) {
+ rgbsps_set(pgm_read_byte(&LED_ALNUM[i]), THEME_COLOR_GLOW2_ALPHA);
+ }
+ for(uint8_t i = 0; i < COUNT(LED_MODS); i++) {
+ rgbsps_set(pgm_read_byte(&LED_MODS[i]), THEME_COLOR_GLOW2_MODS);
+ }
+ for(uint8_t i = 0; i < COUNT(LED_FN); i++) {
+ rgbsps_set(pgm_read_byte(&LED_FN[i]), THEME_COLOR_GLOW2_FN);
+ }
+ for(uint8_t i = 0; i < COUNT(LED_HOMING); i++) {
+ rgbsps_set(pgm_read_byte(&LED_HOMING[i]), THEME_COLOR_GLOW2_HOME);
+ }
+ rgbsps_set(LED_F, THEME_COLOR_GLOW2_HOMING);
+ rgbsps_set(LED_J, THEME_COLOR_GLOW2_HOMING);
+ break;
+ }
+}
+
+void led_set_default_layer_indicator(void) {
+ uint8_t default_layer = biton32(default_layer_state);
+ if (default_layer == _QWERTY) {
+ rgbsps_set(LED_IND_QWERTY, THEME_COLOR_QWERTY);
+ rgbsps_set(LED_IND_ALT, COLOR_BLANK);
+ } else {
+ rgbsps_set(LED_IND_QWERTY, COLOR_BLANK);
+ rgbsps_set(LED_IND_ALT, THEME_COLOR_ALT);
+ }
+ rgbsps_send();
+ return;
+}
+
+void led_set_layer_indicator(void) {
+ static uint8_t oldlayer = 255;
+
+ led_reset();
+
+ rgbsps_set(LED_IND_GUI, COLOR_BLANK);
+ rgbsps_set(LED_IND_FUN, COLOR_BLANK);
+ rgbsps_set(LED_IND_NUM, COLOR_BLANK);
+ rgbsps_set(LED_IND_PUNC, COLOR_BLANK);
+ rgbsps_set(LED_IND_GREEK, COLOR_BLANK);
+ rgbsps_set(LED_IND_EMOJI, COLOR_BLANK);
+
+ uint8_t layer = biton32(layer_state);
+ if (oldlayer == layer) {
+ return;
+ }
+
+ oldlayer = layer;
+
+ if (layer <= _DEFAULT_LAYER_MAX) {
+ rgbsps_send();
+ return;
+ }
+
+ switch(layer) {
+ case _GUI:
+ rgbsps_set(LED_IND_GUI, THEME_COLOR_GUI);
+ break;
+ case _FUN:
+ rgbsps_set(LED_IND_FUN, THEME_COLOR_FUN);
+ break;
+ case _NUM:
+ rgbsps_set(LED_IND_NUM, THEME_COLOR_NUM);
+ break;
+ case _PUNC:
+ rgbsps_set(LED_IND_PUNC, THEME_COLOR_PUNC);
+ break;
+ case _GREEKL:
+ case _GREEKU:
+ rgbsps_set(LED_IND_GREEK, THEME_COLOR_GREEK);
+ break;
+ case _EMOJI:
+ rgbsps_set(LED_IND_EMOJI, THEME_COLOR_EMOJI);
+ break;
+ default:
+ rgbsps_set(LED_IND_GUI, THEME_COLOR_OTHERLAYER);
+ rgbsps_set(LED_IND_FUN, THEME_COLOR_OTHERLAYER);
+ rgbsps_set(LED_IND_NUM, THEME_COLOR_OTHERLAYER);
+ rgbsps_set(LED_IND_PUNC, THEME_COLOR_OTHERLAYER);
+ rgbsps_set(LED_IND_GREEK, THEME_COLOR_OTHERLAYER);
+ rgbsps_set(LED_IND_EMOJI, THEME_COLOR_OTHERLAYER);
+ }
+
+ rgbsps_send();
+}
+
+void led_set_unicode_input_mode(void) {
+ rgbsps_set(LED_IND_LINUX, COLOR_BLANK);
+ rgbsps_set(LED_IND_APPLE, COLOR_BLANK);
+ rgbsps_set(LED_IND_WINDOWS, COLOR_BLANK);
+
+ switch (get_unicode_input_mode()) {
+ case UC_LNX:
+ rgbsps_set(LED_IND_LINUX, THEME_COLOR_LINUX);
+ break;
+ case UC_OSX:
+ rgbsps_set(LED_IND_APPLE, THEME_COLOR_APPLE);
+ break;
+ case UC_WIN:
+ case UC_WINC:
+ rgbsps_set(LED_IND_WINDOWS, THEME_COLOR_WINDOWS);
+ break;
+ }
+ rgbsps_send();
+}
+
+void led_set_output_ble(void) {
+ rgbsps_set(LED_IND_BLUETOOTH, THEME_COLOR_BLUETOOTH);
+ rgbsps_set(LED_IND_USB, COLOR_BLANK);
+ rgbsps_send();
+}
+
+void led_set_output_usb(void) {
+ rgbsps_set(LED_IND_BLUETOOTH, COLOR_BLANK);
+ rgbsps_set(LED_IND_USB, THEME_COLOR_USB);
+ rgbsps_send();
+}
+
+void led_set_output_none(void) {
+ rgbsps_set(LED_IND_BLUETOOTH, COLOR_BLANK);
+ rgbsps_set(LED_IND_USB, COLOR_BLANK);
+ rgbsps_send();
+}
+
+void led_init(void) {
+ // turn off all
+ rgbsps_turnoff();
+
+ // set trackpoint color
+ rgbsps_set(LED_TRACKPOINT1, THEME_COLOR_TP1);
+ rgbsps_set(LED_TRACKPOINT2, THEME_COLOR_TP2);
+ rgbsps_set(LED_TRACKPOINT3, THEME_COLOR_TP3);
+
+ // unicode input mode
+ led_set_unicode_input_mode();
+
+ // layer indicator
+ led_set_layer_indicator();
+ led_set_default_layer_indicator();
+
+ // clicky
+#ifdef FAUXCLICKY_ENABLE
+ if (fauxclicky_enabled) {
+ rgbsps_set(LED_IND_AUDIO, THEME_COLOR_AUDIO);
+ } else {
+ rgbsps_set(LED_IND_AUDIO, COLOR_BLANK);
+ }
+#endif
+
+ rgbsps_send();
+}
+
+
+#endif // RGBSPS_ENABLE
+
+// keymaps
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Qwerty
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc | A | S | D | F | G | H | J | K | L | ' |Enter |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | N | M | , | . | / |Shift |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | Alt | GUI | Punc | Num | Space | Fun |Greek | GUI |AltGr | Ctrl |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_QWERTY] = KEYMAP_CUSTOM(
+ 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_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,
+ KC_LCTL, KC_LALT, KC_LGUI, EMPTY, NUM, LSPACE, RSPACE, FUN, GREEK, KC_RGUI, C_RALT, KC_RCTL,
+ _______, _______, _______
+),
+
+/* Dvorak
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | ' | , | . | P | Y | F | G | C | R | L | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc | A | O | E | U | I | D | H | T | N | S |Enter |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| / | Q | J | K | X | B | M | W | V | Z |Shift |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | Alt | GUI | Punc | Num | Space | Func |Greek | GUI |AltGr | Ctrl |
+ * `-----------------------------------------------------------------------------------'
+ */
+#ifdef LAYOUT_DVORAK
+[_DVORAK] = KEYMAP_CUSTOM(
+ _______, 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, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______
+),
+#endif
+
+/* Colemak
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc | A | R | S | T | D | H | N | E | I | O |Enter |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | K | M | , | . | / |Shift |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | Alt | GUI | Punc | Num | Space | Func |Greek | GUI |AltGr | Ctrl |
+ * `-----------------------------------------------------------------------------------'
+ */
+
+#ifdef LAYOUT_COLEMAK
+[_COLEMAK] = KEYMAP_CUSTOM(
+ _______, 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, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______
+),
+#endif
+
+/* Norman
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | Q | W | D | F | K | J | U | R | L | ; | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc | A | S | E | T | G | Y | N | I | O | H |Enter |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | P | M | , | . | / |Shift |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | Alt | GUI | Punc | Num | Space | Func |Greek | GUI |AltGr | Ctrl |
+ * `-----------------------------------------------------------------------------------'
+ */
+
+#ifdef LAYOUT_NORMAN
+[_NORMAN] = KEYMAP_CUSTOM(
+ _______, KC_Q, KC_W, KC_D, KC_F, KC_K, KC_J, KC_U, KC_R, KC_L, KC_QUOT, _______,
+ _______, 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, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______
+),
+#endif
+
+/* Workman
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | Q | D | R | W | B | J | F | U | P | ; | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc | A | S | H | T | G | Y | N | E | O | I |Enter |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| Z | X | M | C | V | K | K | , | . | / |Shift |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | Alt | GUI | Punc | Num | Space | Func |Greek | GUI |AltGr | Ctrl |
+ * `-----------------------------------------------------------------------------------'
+ */
+
+#ifdef LAYOUT_WORKMAN
+[_WORKMAN] = KEYMAP_CUSTOM(
+ _______, 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, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______
+),
+#endif
+
+/* Punc
+ * ,-----------------------------------------------------------------------------------.
+ * | ~ | ! | @ | # | $ | % | ^ | & | * | ≤ | ≥ | ` |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | * | \ | - | = | / | ≠ | ( | ) | < | > | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | & | ^ | | | _ | + | ? | ± | [ | ] | { | } | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | : | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_PUNC] = KEYMAP_CUSTOM(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, X(LTEQ), X(GTEQ), _______,
+ KC_GRV, KC_ASTR, KC_BSLS, KC_MINS, KC_EQL, KC_SLSH, X(NOTEQ),KC_LPRN, KC_RPRN, KC_LABK, KC_RABK, _______,
+ KC_AMPR, KC_CIRC, KC_PIPE, KC_UNDS, KC_PLUS, KC_QUES, X(PLMIN),KC_LBRC, KC_RBRC, KC_LCBR, KC_RCBR, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_COLN, _______,
+ _______, _______, _______
+),
+
+/* Num
+ * ,-----------------------------------------------------------------------------------.
+ * | ~ | ! | @ | # | $ | % | A | 7 | 8 | 9 | D | |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | ` | * | \ | - | = | / | B | 4 | 5 | 6 | E | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | & | ^ | | | _ | + | ? | C | 1 | 2 | 3 | F | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | x | | | | | 0 | , | . | : | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_NUM] = KEYMAP_CUSTOM(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, S(KC_A), KC_1, KC_2, KC_3, S(KC_D), _______,
+ KC_GRV, KC_ASTR, KC_BSLS, KC_MINS, KC_EQL, KC_SLSH, S(KC_B), KC_4, KC_5, KC_6, S(KC_E), _______,
+ KC_AMPR, KC_CIRC, KC_PIPE, KC_UNDS, KC_PLUS, KC_QUES, S(KC_C), KC_7, KC_8, KC_9, S(KC_F), _______,
+ _______, _______, KC_X, _______, _______, _______, _______, FUN0 , KC_COMM, KC_DOT, KC_COLN, _______,
+ _______, _______, _______
+),
+
+/* Func
+ * ,-----------------------------------------------------------------------------------.
+ * | | F1 | F2 | F3 | F4 | Ins | | PgUp | Up | PgDn | PgUp | |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Caps | F5 | F6 | F7 | F8 |PrtSc | | Left | Down | Right| PgDn | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | F9 | F10 | F11 | F12 |Pause | | | Home | End | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_FUN] = KEYMAP_CUSTOM(
+ XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_INS, XXXXXXX, KC_PGUP, KC_UP, KC_PGDN, KC_PGUP, KC_DEL,
+ KC_CAPS, KC_F5, KC_F6, KC_F7, KC_F8, KC_PSCR, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______,
+ _______, KC_F9, KC_F10, KC_F11, KC_F12, KC_PAUS, XXXXXXX, XXXXXXX, KC_HOME, KC_END, XXXXXXX, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______
+),
+
+/* Uppercase Greek
+ * ,-----------------------------------------------------------------------------------.
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_GREEKU] = KEYMAP_CUSTOM(
+ _______, XXXXXXX, XXXXXXX,X(UEPSI), X(URHO), X(UTAU),X(UUPSI),X(UTHET),X(UIOTA),X(UOMIC), X(UPI), _______,
+ _______,X(UALPH),X(USIGM),X(UDELT), X(UPHI),X(UGAMM), X(UETA), X(UXI),X(UKAPP),X(ULAMB), KC_QUOT, _______,
+ _______,X(UZETA), X(UCHI), X(UPSI),X(UOMEG),X(UBETA), X(UNU), X(UMU), KC_COMM, KC_DOT, KC_SLSH, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______
+),
+
+/* Lowercase Greek
+ * ,-----------------------------------------------------------------------------------.
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_GREEKL] = KEYMAP_CUSTOM(
+ _______, XXXXXXX,X(FSIGM),X(LEPSI), X(LRHO), X(LTAU),X(LUPSI),X(LTHET),X(LIOTA),X(LOMIC), X(LPI), _______,
+ _______,X(LALPH),X(LSIGM),X(LDELT), X(LPHI),X(LGAMM), X(LETA), X(LXI),X(LKAPP),X(LLAMB), KC_QUOT, _______,
+ _______,X(LZETA), X(LCHI), X(LPSI),X(LOMEG),X(LBETA), X(LNU), X(LMU), KC_COMM, KC_DOT, KC_SLSH, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______
+),
+
+/* Empty
+ * ,-----------------------------------------------------------------------------------.
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_EMPTY] = KEYMAP_CUSTOM(
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXX