From 00b6f14821f44ead75504e28d7fed26791cb2875 Mon Sep 17 00:00:00 2001
From: Drashna Jaelre <drashna@live.com>
Date: Mon, 22 Oct 2018 08:57:37 -0700
Subject: Replace outdated RGB/Audio information

---
 keyboards/comet46/keymaps/satt/rules.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'keyboards/comet46/keymaps/satt')

diff --git a/keyboards/comet46/keymaps/satt/rules.mk b/keyboards/comet46/keymaps/satt/rules.mk
index 08af2e70a4..dc4355c78f 100644
--- a/keyboards/comet46/keymaps/satt/rules.mk
+++ b/keyboards/comet46/keymaps/satt/rules.mk
@@ -15,7 +15,7 @@ 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
-RGBLIGHT_ENABLE = no        # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time.
+RGBLIGHT_ENABLE = no        # Enable WS2812 RGB underlight. 
 ONEHAND_ENABLE = no        # Enable one-hand typing
 
 # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-- 
cgit v1.2.3


From 46b4b4407ff6e23d0799b0f902e61f1fe3645a9a Mon Sep 17 00:00:00 2001
From: satt99 <39004890+satt99@users.noreply.github.com>
Date: Mon, 31 Dec 2018 01:34:06 +0900
Subject: Comet46 add support for OLED (#4745)

* Add OLED support for Comet46

* fix length of char "name" of keylogger.c

* update ssd1306

* fix rules.mk

* update led-receiver keymap

* Update OLED related code

* add mod_state_reader & modify led_state_reader

* Update OLED related files

* Update kemaps

* Update readme

* change default-oled-display to default

* Add OSM compatibility to mod_state_reader

* Code formatting

* Use PROGMEM to store code_to_name

* Clean up satt keymap

* Rename default-led keymap to defult-rgbled
---
 keyboards/comet46/keymaps/satt/action_pseudo_lut.c | 212 ++++++++---------
 keyboards/comet46/keymaps/satt/config.h            |  34 +++
 keyboards/comet46/keymaps/satt/keymap.c            | 256 +++++++++++++--------
 keyboards/comet46/keymaps/satt/keymap_jis2us.h     |  46 ++--
 keyboards/comet46/keymaps/satt/rules.mk            |  29 +--
 5 files changed, 332 insertions(+), 245 deletions(-)
 create mode 100644 keyboards/comet46/keymaps/satt/config.h

(limited to 'keyboards/comet46/keymaps/satt')

diff --git a/keyboards/comet46/keymaps/satt/action_pseudo_lut.c b/keyboards/comet46/keymaps/satt/action_pseudo_lut.c
index 5664d4d2a5..0ac7133591 100644
--- a/keyboards/comet46/keymaps/satt/action_pseudo_lut.c
+++ b/keyboards/comet46/keymaps/satt/action_pseudo_lut.c
@@ -10,133 +10,133 @@ static uint8_t send_key_shift_bit[SHIFT_BIT_SIZE];
  * Memo: Using other layer keymap to get keycode
  */
 void action_pseudo_lut(keyrecord_t *record, uint8_t base_keymap_id, const uint16_t (*keymap)[2]) {
-    uint8_t prev_shift;
-    uint16_t keycode;
-    uint16_t pseudo_keycode;
+  uint8_t prev_shift;
+  uint16_t keycode;
+  uint16_t pseudo_keycode;
 
-    /* get keycode from keymap you specified */
-    keycode = keymap_key_to_keycode(base_keymap_id, record->event.key);
+  /* get keycode from keymap you specified */
+  keycode = keymap_key_to_keycode(base_keymap_id, record->event.key);
 
-    prev_shift = keyboard_report->mods & (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT));
+  prev_shift = keyboard_report->mods & (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT));
 
-    if (record->event.pressed) {
-        /* when magic commands entered, keycode does not converted */
-        if (IS_COMMAND()) {
-            if (prev_shift) {
-                add_shift_bit(keycode);
-            }
-            register_code(keycode);
-            return;
-        }
+  if (record->event.pressed) {
+    /* when magic commands entered, keycode does not converted */
+    if (IS_COMMAND()) {
+      if (prev_shift) {
+        add_shift_bit(keycode);
+      }
+      register_code(keycode);
+      return;
+    }
 
-        if (prev_shift) {
-            pseudo_keycode = convert_keycode(keymap, keycode, true);
-            dprintf("pressed: %02X, converted: %04X\n", keycode, pseudo_keycode);
-            add_shift_bit(keycode);
+    if (prev_shift) {
+      pseudo_keycode = convert_keycode(keymap, keycode, true);
+      dprintf("pressed: %02X, converted: %04X\n", keycode, pseudo_keycode);
+      add_shift_bit(keycode);
 
-            if (IS_LSFT(pseudo_keycode)) {
-                register_code(QK_LSFT ^ pseudo_keycode);
-            } else {
-                /* delete shift mod temporarily */
-                del_mods(prev_shift);
-                send_keyboard_report();
-                register_code(pseudo_keycode);
-                add_mods(prev_shift);
-                send_keyboard_report();
-            }
-        } else {
-            pseudo_keycode = convert_keycode(keymap, keycode, false);
-            dprintf("pressed: %02X, converted: %04X\n", keycode, pseudo_keycode);
+      if (IS_LSFT(pseudo_keycode)) {
+        register_code(QK_LSFT ^ pseudo_keycode);
+      } else {
+        /* delete shift mod temporarily */
+        del_mods(prev_shift);
+        send_keyboard_report();
+        register_code(pseudo_keycode);
+        add_mods(prev_shift);
+        send_keyboard_report();
+      }
+    } else {
+      pseudo_keycode = convert_keycode(keymap, keycode, false);
+      dprintf("pressed: %02X, converted: %04X\n", keycode, pseudo_keycode);
 
-            if (IS_LSFT(pseudo_keycode)) {
-                add_weak_mods(MOD_BIT(KC_LSFT));
-                send_keyboard_report();
-                register_code(QK_LSFT ^ pseudo_keycode);
-                /* on Windows, prevent key repeat to avoid unintended output */
-                unregister_code(QK_LSFT ^ pseudo_keycode);
-                del_weak_mods(MOD_BIT(KC_LSFT));
-                send_keyboard_report();
-            } else {
-                register_code(pseudo_keycode);
-            }
-        }
+      if (IS_LSFT(pseudo_keycode)) {
+        add_weak_mods(MOD_BIT(KC_LSFT));
+        send_keyboard_report();
+        register_code(QK_LSFT ^ pseudo_keycode);
+        /* on Windows, prevent key repeat to avoid unintended output */
+        unregister_code(QK_LSFT ^ pseudo_keycode);
+        del_weak_mods(MOD_BIT(KC_LSFT));
+        send_keyboard_report();
+      } else {
+        register_code(pseudo_keycode);
+      }
+    }
+  } else {
+    if (get_shift_bit(keycode)) {
+      del_shift_bit(keycode);
+      pseudo_keycode = convert_keycode(keymap, keycode, true);
     } else {
-        if (get_shift_bit(keycode)) {
-            del_shift_bit(keycode);
-            pseudo_keycode = convert_keycode(keymap, keycode, true);
-        } else {
-            pseudo_keycode = convert_keycode(keymap, keycode, false);
-        }
-        dprintf("released: %02X, converted: %04X\n", keycode, pseudo_keycode);
+      pseudo_keycode = convert_keycode(keymap, keycode, false);
+    }
+    dprintf("released: %02X, converted: %04X\n", keycode, pseudo_keycode);
 
-        if (IS_LSFT(pseudo_keycode)) {
-            unregister_code(QK_LSFT ^ pseudo_keycode);
-        } else {
-            unregister_code(pseudo_keycode);
-        }
+    if (IS_LSFT(pseudo_keycode)) {
+      unregister_code(QK_LSFT ^ pseudo_keycode);
+    } else {
+      unregister_code(pseudo_keycode);
     }
+  }
 }
 
 uint16_t convert_keycode(const uint16_t (*keymap)[2], uint16_t keycode, bool shift_modded)
 {
-    uint16_t pseudo_keycode;
+  uint16_t pseudo_keycode;
 
-    switch (keycode) {
-        case KC_A ... KC_CAPSLOCK:
-#if defined(__AVR__)
-            if (shift_modded) {
-                pseudo_keycode = pgm_read_word(&keymap[keycode][1]);
-            } else {
-                pseudo_keycode = pgm_read_word(&keymap[keycode][0]);
-            }
-#else
-            if (shift_modded) {
-                pseudo_keycode = keymap[keycode][1];
-            } else {
-                pseudo_keycode = keymap[keycode][0];
-            }
-#endif
-            /* if undefined, use got keycode as it is */
-            if (pseudo_keycode == 0x00) {
-                if (shift_modded) {
-                    pseudo_keycode = S(keycode);
-                } else {
-                    pseudo_keycode = keycode;
-                }
-            }
-            break;
-        default:
-            if (shift_modded) {
-                pseudo_keycode = S(keycode);
-            } else {
-                pseudo_keycode = keycode;
-            }
-            break;
-    }
-    return pseudo_keycode;
+  switch (keycode) {
+    case KC_A ... KC_CAPSLOCK:
+      #if defined(__AVR__) 
+        if (shift_modded) {
+          pseudo_keycode = pgm_read_word(&keymap[keycode][1]);
+        } else {
+          pseudo_keycode = pgm_read_word(&keymap[keycode][0]);
+        }
+      #else
+        if (shift_modded) {
+          pseudo_keycode = keymap[keycode][1];
+        } else {
+          pseudo_keycode = keymap[keycode][0];
+        }
+      #endif
+      /* if undefined, use got keycode as it is */
+      if (pseudo_keycode == 0x00) {
+        if (shift_modded) {
+          pseudo_keycode = S(keycode);
+        } else {
+          pseudo_keycode = keycode;
+        }
+      }
+      break;
+    default:
+      if (shift_modded) {
+        pseudo_keycode = S(keycode);
+      } else {
+        pseudo_keycode = keycode;
+      }
+      break;
+  }
+  return pseudo_keycode;
 }
 
 uint8_t get_shift_bit(uint16_t keycode) {
-    if ((keycode >> 3) < SHIFT_BIT_SIZE) {
-        return send_key_shift_bit[keycode >> 3] & (1 << (keycode & 7));
-    } else {
-        dprintf("get_shift_bit: Can't get shift bit. keycode: %02X\n", keycode);
-        return 0;
-    }
+  if ((keycode >> 3) < SHIFT_BIT_SIZE) {
+    return send_key_shift_bit[keycode >> 3] & (1 << (keycode & 7));
+  } else {
+    dprintf("get_shift_bit: Can't get shift bit. keycode: %02X\n", keycode);
+    return 0;
+  }
 }
 
 void add_shift_bit(uint16_t keycode) {
-    if ((keycode >> 3) < SHIFT_BIT_SIZE) {
-        send_key_shift_bit[keycode >> 3] |= (1 << (keycode & 7));
-    } else {
-        dprintf("add_shift_bit: Can't add shift bit. keycode: %02X\n", keycode);
-    }
+  if ((keycode >> 3) < SHIFT_BIT_SIZE) {
+    send_key_shift_bit[keycode >> 3] |= (1 << (keycode & 7));
+  } else {
+    dprintf("add_shift_bit: Can't add shift bit. keycode: %02X\n", keycode);
+  }
 }
 
 void del_shift_bit(uint16_t keycode) {
-    if ((keycode >> 3) < SHIFT_BIT_SIZE) {
-        send_key_shift_bit[keycode >> 3] &= ~(1 << (keycode & 7));
-    } else {
-        dprintf("del_shift_bit: Can't delete shift bit. keycode: %02X\n", keycode);
-    }
+  if ((keycode >> 3) < SHIFT_BIT_SIZE) {
+    send_key_shift_bit[keycode >> 3] &= ~(1 << (keycode & 7));
+  } else {
+    dprintf("del_shift_bit: Can't delete shift bit. keycode: %02X\n", keycode);
+  }
 }
diff --git a/keyboards/comet46/keymaps/satt/config.h b/keyboards/comet46/keymaps/satt/config.h
new file mode 100644
index 0000000000..c99de2cf80
--- /dev/null
+++ b/keyboards/comet46/keymaps/satt/config.h
@@ -0,0 +1,34 @@
+/*
+This is the c configuration file for the keymap
+
+Copyright 2012 Jun Wako <wakojun@gmail.com>
+Copyright 2015 Jack Humbert
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+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 CONFIG_USER_H
+#define CONFIG_USER_H
+
+/* key combination for command */
+#define IS_COMMAND() ( \
+  keyboard_report->mods == (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)) \
+)
+
+/* Use I2C or Serial */
+
+#define USE_I2C
+#define SSD1306OLED
+
+#endif
diff --git a/keyboards/comet46/keymaps/satt/keymap.c b/keyboards/comet46/keymaps/satt/keymap.c
index 7e728e5d08..eec40eff49 100644
--- a/keyboards/comet46/keymaps/satt/keymap.c
+++ b/keyboards/comet46/keymaps/satt/keymap.c
@@ -4,64 +4,96 @@
 #include QMK_KEYBOARD_H
 #include "keymap_jis2us.h"
 #include "action_pseudo_lut.h"
+#include "keymap_jp.h"
+#ifdef SSD1306OLED
+  #include "ssd1306.h"
+#endif
 
 // 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 comet46_layers {
-    _QWERTY,
-    _LOWER,
-    _RAISE,
-    _PSEUDO_US,
-    _PSEUDO_US_LOWER,
-    _PSEUDO_US_RAISE,
-    _ADJUST
+  _QWERTY,
+  _LOWER,
+  _RAISE,
+  _PSEUDO_US,
+  _PSEUDO_US_LOWER,
+  _PSEUDO_US_RAISE,
+  _ADJUST
 };
 
 enum custom_keycodes {
   QWERTY = SAFE_RANGE,
   PSEUDO_US,
+  JIS2US,
 };
 
-#define KC_LWR MO(_LOWER)
-#define KC_RSE MO(_RAISE)
+// JIS keycodes
+#define KC_JZHT JP_ZHTG  // hankaku/zenkaku|kanzi
+#define KC_JCIR JP_CIRC  // ^, ~
+#define KC_JAT  JP_AT    // @, `
+#define KC_JLBR JP_LBRC  // [, {
+#define KC_JCOL JP_COLN  // :, *
+#define KC_JRBR JP_RBRC  // ], }
+#define KC_JBSL JP_BSLS  // \, _
+#define KC_JMHE JP_MHEN  // muhenkan
+#define KC_JHEN JP_HENK  // henkan
+#define KC_JKAN JP_KANA  // katakana/hiragana|ro-mazi
+#define KC_JMKA JP_MKANA //kana on MacOSX
+#define KC_JMEI JP_MEISU //eisu on MacOSX
+#define KC_JAMP JP_AMPR  // &
+#define KC_JQUO JP_QUOT  // '
+#define KC_JLPR JP_LPRN  // (
+#define KC_JRPR JP_RPRN  // )
+#define KC_JEQL JP_EQL   // =
+#define KC_JTIL JP_TILD  // ~
+#define KC_JPIP JP_PIPE  // |
+#define KC_JGRV JP_GRV   // `
+#define KC_JLCB JP_LCBR  // {
+#define KC_JPLU JP_PLUS  // +
+#define KC_JAST JP_ASTR  // *
+#define KC_JRCB JP_RCBR  // }
+#define KC_JUND JP_UNDS  // _
+
+// Layer related keycodes
+#define KC_LWR  MO(_LOWER)
+#define KC_RSE  MO(_RAISE)
 #define KC_P_LW MO(_PSEUDO_US_LOWER)
 #define KC_P_RS MO(_PSEUDO_US_RAISE)
 #define KC_QWRT QWERTY
 #define KC_P_US PSEUDO_US
+#define KC_J2US JIS2US
+
+// Special keycodes
 #define KC_SPCT CTL_T(KC_SPC)
 #define KC_ENSF SFT_T(KC_ENT)
-#define KC_SFTA SFT_T(KC_A)
-#define KC_CTSF S(KC_LCTL)
+#define KC_CAEC MT(MOD_LCTL | MOD_LALT, KC_ESC)
+#define KC_CSTB C_S_T(KC_TAB)
 #define KC_IMON ALT_T(KC_F13)
 #define KC_IMOF GUI_T(KC_F14)
-#define KC_SRO S(KC_RO)
-#define KC_SYEN S(KC_JYEN)
 #define KC_CAD LCA(KC_DEL)
 #define KC_RST RESET
 
-#define LONGPRESS_DELAY 150
-
 // Fillers to make layering more clear
-#define KC_ KC_TRNS 
+#define KC_ KC_TRNS
 #define KC_XXXX KC_NO
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
-  [_QWERTY] = LAYOUT_kc(  
+  [_QWERTY] = LAYOUT_kc(
   //,----+----+----+----+----+----+               +----+----+----+----+----+----.
-     ESC , Q  , W  , E  , R  , T  ,                 Y  , U  , I  , O  , P  ,DEL ,
+     CAEC, Q  , W  , E  , R  , T  ,                 Y  , U  , I  , O  , P  ,DEL ,
   //|----+----+----+----+----+----+----+     +----+----+----+----+----+----+----|
-     TAB ,SFTA, S  , D  , F  , G  ,LPRN,      RPRN, H  , J  , K  , L  ,SCLN,BSPC,
+     CSTB, A  , S  , D  , F  , G  ,LPRN,      RPRN, H  , J  , K  , L  ,SCLN,BSPC,
   //|----+----+----+----+----+----+----|     |----+----+----+----+----+----+----|
-     CTSF, Z  , X  , C  , V  , B  ,LBRC,      RBRC, N  , M  ,COMM,DOT ,SLSH,QUOT,
+     LSFT, Z  , X  , C  , V  , B  ,LBRC,      RBRC, N  , M  ,COMM,DOT ,SLSH,QUOT,
   //|----+----+----+----+----+----+----|     |----+----+----+----+----+----+----|
                          IMOF,LWR ,SPCT,      ENSF,RSE ,IMON
   //                    +----+----+---/       \---+----+----+
   ),
 
-  [_LOWER] = LAYOUT_kc(  
+  [_LOWER] = LAYOUT_kc(
   //,----+----+----+----+----+----+               +----+----+----+----+----+----.
          ,EXLM, AT ,HASH,DLR ,PERC,                CIRC,AMPR,ASTR,LPRN,RPRN,    ,
   //|----+----+----+----+----+----+----+     +----+----+----+----+----+----+----|
@@ -69,60 +101,60 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   //|----+----+----+----+----+----+----|     |----+----+----+----+----+----+----|
          , F7 , F8 , F9 , F10, F11, F12,      TILD,PIPE,UNDS,PLUS,LCBR,RCBR,    ,
   //|----+----+----+----+----+----+----|     |----+----+----+----+----+----+----|
-                             ,    ,    ,          ,    ,    
+                             ,    ,    ,          ,    ,
   //                    +----+----+---/       \---+----+----+
   ),
 
-  [_RAISE] = LAYOUT_kc(  
+  [_RAISE] = LAYOUT_kc(
   //,----+----+----+----+----+----+               +----+----+----+----+----+----.
          , 1  , 2  , 3  , 4  , 5  ,                 6  , 7  , 8  , 9  , 0  ,    ,
   //|----+----+----+----+----+----+----+     +----+----+----+----+----+----+----|
          ,    ,    ,    ,    ,    ,    ,      XXXX,LEFT,DOWN, UP ,RGHT,END ,    ,
   //|----+----+----+----+----+----+----|     |----+----+----+----+----+----+----|
-         ,    ,    ,    ,    ,    ,    ,      HOME,XXXX,XXXX,XXXX,XXXX,XXXX,    ,
+         ,    ,    ,    ,    ,    ,    ,      HOME,XXXX,PGDN,PGUP,XXXX,XXXX,    ,
   //|----+----+----+----+----+----+----|     |----+----+----+----+----+----+----|
-                             ,    ,    ,          ,    ,    
+                             ,    ,    ,          ,    ,
   //                    +----+----+---/       \---+----+----+
   ),
 
-  [_PSEUDO_US] = LAYOUT_kc(  
+  [_PSEUDO_US] = LAYOUT_kc(
   //,----+----+----+----+----+----+               +----+----+----+----+----+----.
-     ESC , Q  , W  , E  , R  , T  ,                 Y  , U  , I  , O  , P  ,DEL ,
+     CAEC, Q  , W  , E  , R  , T  ,                 Y  , U  , I  , O  , P  ,DEL ,
   //|----+----+----+----+----+----+----+     +----+----+----+----+----+----+----|
-     TAB ,SFTA, S  , D  , F  , G  ,ASTR,      LPRN, H  , J  , K  , L  ,FN0 ,BSPC,
+     CSTB, A  , S  , D  , F  , G  ,JLPR,      JRPR, H  , J  , K  , L  ,J2US,BSPC,
   //|----+----+----+----+----+----+----|     |----+----+----+----+----+----+----|
-     CTSF, Z  , X  , C  , V  , B  ,FN0 ,      FN0 , N  , M  ,COMM,DOT ,SLSH,FN0 ,
+     LSFT, Z  , X  , C  , V  , B  ,J2US,      J2US, N  , M  ,COMM,DOT ,SLSH,J2US,
   //|----+----+----+----+----+----+----|     |----+----+----+----+----+----+----|
                          IMOF,P_LW,SPCT,      ENSF,P_RS,IMON
   //                    +----+----+---/       \---+----+----+
   ),
 
 
-  [_PSEUDO_US_LOWER] = LAYOUT_kc(  
+  [_PSEUDO_US_LOWER] = LAYOUT_kc(
   //,----+----+----+----+----+----+               +----+----+----+----+----+----.
-         ,EXLM,LBRC,HASH,DLR ,PERC,                EQL ,CIRC, DQT,ASTR,LPRN,    ,
+         ,EXLM,JAT ,HASH,DLR ,PERC,                JCIR,JAMP,JAST,JLPR,JRPR,    ,
   //|----+----+----+----+----+----+----+     +----+----+----+----+----+----+----|
-         , F1 , F2 , F3 , F4 , F5 , F6 ,      LCBR,JYEN,MINS,UNDS,RBRC,BSLS,    ,
+         , F1 , F2 , F3 , F4 , F5 , F6 ,      JGRV,JBSL,MINS,JEQL,JLBR,JRBR,    ,
   //|----+----+----+----+----+----+----|     |----+----+----+----+----+----+----|
-         , F7 , F8 , F9 , F10, F11, F12,      PLUS,SYEN,SRO ,COLN,RCBR,PIPE,    ,
+         , F7 , F8 , F9 , F10, F11, F12,      JTIL,JPIP,JUND,JPLU,JLCB,JRCB,    ,
   //|----+----+----+----+----+----+----|     |----+----+----+----+----+----+----|
-                             ,    ,    ,          ,    ,    
+                             ,    ,    ,          ,    ,
   //                    +----+----+---/       \---+----+----+
   ),
 
-  [_PSEUDO_US_RAISE] = LAYOUT_kc(  
+  [_PSEUDO_US_RAISE] = LAYOUT_kc(
   //,----+----+----+----+----+----+               +----+----+----+----+----+----.
          , 1  , 2  , 3  , 4  , 5  ,                 6  , 7  , 8  , 9  , 0  ,    ,
   //|----+----+----+----+----+----+----+     +----+----+----+----+----+----+----|
-         ,    ,    ,    ,    ,    , GRV,      XXXX,LEFT,DOWN, UP ,RGHT,END ,    ,
+         ,    ,    ,    ,    ,    ,JZHT,      XXXX,LEFT,DOWN, UP ,RGHT,END ,    ,
   //|----+----+----+----+----+----+----|     |----+----+----+----+----+----+----|
-         ,    ,    ,    ,    ,    ,    ,      HOME,XXXX,XXXX,XXXX,XXXX,XXXX,    ,
+         ,    ,    ,    ,    ,    ,    ,      HOME,XXXX,PGDN,PGUP,XXXX,XXXX,    ,
   //|----+----+----+----+----+----+----|     |----+----+----+----+----+----+----|
-                             ,    ,    ,          ,    ,    
+                             ,    ,    ,          ,    ,
   //                    +----+----+---/       \---+----+----+
   ),
 
-  [_ADJUST] = LAYOUT_kc(  
+  [_ADJUST] = LAYOUT_kc(
   //,----+----+----+----+----+----+               +----+----+----+----+----+----.
          ,    ,    ,    ,    ,    ,                    ,    ,    ,    ,    ,    ,
   //|----+----+----+----+----+----+----+     +----+----+----+----+----+----+----|
@@ -130,90 +162,130 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   //|----+----+----+----+----+----+----|     |----+----+----+----+----+----+----|
          ,    ,    ,    ,    ,    ,RST ,      P_US,    ,    ,    ,    ,    ,    ,
   //|----+----+----+----+----+----+----|     |----+----+----+----+----+----+----|
-                             ,    ,    ,          ,    ,    
+                             ,    ,    ,          ,    ,
   //                    +----+----+---/       \---+----+----+
   )
 
 };
 
+uint32_t layer_state_set_user(uint32_t state) {
+  switch (biton32(state)) {
+    case _PSEUDO_US_LOWER:
+    case _PSEUDO_US_RAISE:
+      return update_tri_layer_state(state, _PSEUDO_US_RAISE, _PSEUDO_US_LOWER, _ADJUST);
+      break;
+    default:
+      return update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
+      break;
+  }
+}
 
-/*
- * user defined action function
- */
-enum function_id {
-    PSEUDO_US_FUNCTION,
-};
+//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
+#ifdef SSD1306OLED
 
-void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
-    switch (id)
-    {
-    case PSEUDO_US_FUNCTION:
-        action_pseudo_lut(record, _QWERTY, keymap_jis2us);
-        break;
-    }
-}
+// You need to add source files to SRC in rules.mk when using OLED display functions
+void set_keylog(uint16_t keycode);
+const char *read_keylog(void);
+const char *read_modifier_state(void);
+const char *read_host_led_state(void);
 
-/*
- * Fn action definition
- */
-const uint16_t PROGMEM fn_actions[] = {
-    [0] = ACTION_FUNCTION(PSEUDO_US_FUNCTION),
-};
+void matrix_init_user(void) {
+  iota_gfx_init(false);   // turns on the display
+}
 
 void matrix_scan_user(void) {
-    uint8_t layer = biton32(layer_state);
+  iota_gfx_task();  // this is what updates the display continuously
+}
+
+void matrix_update(struct CharacterMatrix *dest, const struct CharacterMatrix *source) {
+  if (memcmp(dest->display, source->display, sizeof(dest->display))) {
+    memcpy(dest->display, source->display, sizeof(dest->display));
+    dest->dirty = true;
+  }
+}
+
+void render_status(struct CharacterMatrix *matrix) {
+  // Layer state
+  char layer_str[22];
+  matrix_write(matrix, "Layer: ");
+  uint8_t layer = biton32(layer_state);
+  uint8_t default_layer = biton32(eeconfig_read_default_layer());
     switch (layer) {
-      case _LOWER:
-          set_led_red;
-          break;
+      case _QWERTY:
+        switch (default_layer) {
+          case _QWERTY:
+            snprintf(layer_str, sizeof(layer_str), "Qwerty");
+            break;
+          case _PSEUDO_US:
+            snprintf(layer_str, sizeof(layer_str), "Psuedo_US");
+            break;
+          default:
+            snprintf(layer_str, sizeof(layer_str), "Undef-%d", default_layer);
+            break;
+        }
+        break;
       case _RAISE:
-          set_led_blue;
-          break;
-      case _PSEUDO_US_LOWER:
-          set_led_yellow;
-          break;
+        snprintf(layer_str, sizeof(layer_str), "Raise");
+        break;
+      case _LOWER:
+        snprintf(layer_str, sizeof(layer_str), "Lower");
+        break;
       case _PSEUDO_US_RAISE:
-          set_led_cyan;
-          break;
+        snprintf(layer_str, sizeof(layer_str), "P_US_Raise");
+        break;
+      case _PSEUDO_US_LOWER:
+        snprintf(layer_str, sizeof(layer_str), "P_US_Lower");
+        break;
       case _ADJUST:
-          set_led_magenta;
-          break;
+        snprintf(layer_str, sizeof(layer_str), "Adjust");
+        break;
       default:
-          set_led_green;
-          break;
+        snprintf(layer_str, sizeof(layer_str), "Undef-%d", layer);
     }
-};
+  matrix_write_ln(matrix, layer_str);
+  // Last entered keycode
+  matrix_write_ln(matrix, read_keylog());
+  // Modifier state
+  matrix_write_ln(matrix, read_modifier_state());
+  // Host Keyboard LED Status
+  matrix_write(matrix, read_host_led_state());
+}
 
-uint32_t layer_state_set_user(uint32_t state) {
-  switch (biton32(state)) {
-    case _PSEUDO_US:
-      return update_tri_layer_state(state, _PSEUDO_US_RAISE, _PSEUDO_US_LOWER, _ADJUST);
-      break;
-    case _PSEUDO_US_LOWER:
-      return update_tri_layer_state(state, _PSEUDO_US_RAISE, _PSEUDO_US_LOWER, _ADJUST);
-      break;
-    case _PSEUDO_US_RAISE: 
-      return update_tri_layer_state(state, _PSEUDO_US_RAISE, _PSEUDO_US_LOWER, _ADJUST);
-      break;
-    default:
-      return update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
-      break;
+void iota_gfx_task_user(void) {
+  struct CharacterMatrix matrix;
+
+#if DEBUG_TO_SCREEN
+  if (debug_enable) {
+    return;
   }
+#endif
+
+  matrix_clear(&matrix);
+  render_status(&matrix);
+  matrix_update(&display, &matrix);
 }
 
+#endif//SSD1306OLED
+
 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+  #ifdef SSD1306OLED
+    if (record->event.pressed) {
+      set_keylog(keycode);
+    }
+  #endif
   switch (keycode) {
     case QWERTY:
       if (record->event.pressed) {
         set_single_persistent_default_layer(_QWERTY);
       }
-      return false;
       break;
     case PSEUDO_US:
       if (record->event.pressed) {
         set_single_persistent_default_layer(_PSEUDO_US);
       }
-      return false;
+      break;
+    case JIS2US:
+      action_pseudo_lut(record, _QWERTY, keymap_jis2us);
       break;
   }
   return true;
diff --git a/keyboards/comet46/keymaps/satt/keymap_jis2us.h b/keyboards/comet46/keymaps/satt/keymap_jis2us.h
index cf2bd4f0e8..e32a0579aa 100644
--- a/keyboards/comet46/keymaps/satt/keymap_jis2us.h
+++ b/keyboards/comet46/keymaps/satt/keymap_jis2us.h
@@ -3,30 +3,30 @@
 
 /* keymap for convert from JIS to US */
 const uint16_t PROGMEM keymap_jis2us[][2] = {
-    [KC_A ... KC_CAPS] = { 0x00, 0x00 }, /* default value */
+  [KC_A ... KC_CAPS] = { 0x00, 0x00 }, /* default value */
 
-    [KC_1]    = { KC_1,    KC_EXLM    }, /* 1 and ! -> 1 and ! */
-    [KC_2]    = { KC_2,    KC_LBRC    }, /* 2 and " -> 2 and @ */
-    [KC_3]    = { KC_3,    KC_HASH    }, /* 3 and # -> 3 and # */
-    [KC_4]    = { KC_4,    KC_DLR     }, /* 4 and $ -> 4 and $ */
-    [KC_5]    = { KC_5,    KC_PERC    }, /* 5 and % -> 5 and % */
-    [KC_6]    = { KC_6,    KC_EQL     }, /* 6 and & -> 6 and ^ */
-    [KC_7]    = { KC_7,    KC_CIRC    }, /* 7 and ' -> 7 and & */
-    [KC_8]    = { KC_8,    KC_DQT     }, /* 8 and ( -> 8 and * */
-    [KC_9]    = { KC_9,    KC_ASTR    }, /* 9 and ) -> 9 and ( */
-    [KC_0]    = { KC_0,    KC_LPRN    }, /* 0 and (no assign) -> 0 and ) */
-    [KC_MINS] = { KC_MINS, S(KC_RO)   }, /* - and = -> - and _ */
-    [KC_EQL]  = { KC_UNDS, KC_COLN    }, /* ^ and ~ -> = and + */
-    [KC_LBRC] = { KC_RBRC, KC_RCBR    }, /* @ and ` -> [ and { */
-    [KC_RBRC] = { KC_BSLS, KC_PIPE    }, /* [ and { -> ] and } */
-    [KC_BSLS] = { KC_JYEN, S(KC_JYEN) }, /* ] and } -> / and | */
-    [KC_NUHS] = { KC_NUHS, S(KC_NUHS) }, /* (no assign) */
-    [KC_SCLN] = { KC_SCLN, KC_QUOT    }, /* ; and + -> ; and : */
-    [KC_QUOT] = { KC_AMPR, KC_AT      }, /* : and * -> ' and " */
-    [KC_GRV]  = { KC_LCBR, KC_PLUS    }, /* (no assign) -> ` and ~ */
-    [KC_COMM] = { KC_COMM, KC_LT      }, /* , and < -> , and < */
-    [KC_DOT]  = { KC_DOT,  KC_GT      }, /* . and > -> . and > */
-    [KC_SLSH] = { KC_SLSH, KC_QUES    }, /* / and ? -> / and ? */
+  [KC_1]    = { KC_1,    KC_EXLM    }, /* 1 and ! -> 1 and ! */
+  [KC_2]    = { KC_2,    KC_LBRC    }, /* 2 and " -> 2 and @ */
+  [KC_3]    = { KC_3,    KC_HASH    }, /* 3 and # -> 3 and # */
+  [KC_4]    = { KC_4,    KC_DLR     }, /* 4 and $ -> 4 and $ */
+  [KC_5]    = { KC_5,    KC_PERC    }, /* 5 and % -> 5 and % */
+  [KC_6]    = { KC_6,    KC_EQL     }, /* 6 and & -> 6 and ^ */
+  [KC_7]    = { KC_7,    KC_CIRC    }, /* 7 and ' -> 7 and & */
+  [KC_8]    = { KC_8,    KC_DQT     }, /* 8 and ( -> 8 and * */
+  [KC_9]    = { KC_9,    KC_ASTR    }, /* 9 and ) -> 9 and ( */
+  [KC_0]    = { KC_0,    KC_LPRN    }, /* 0 and (no assign) -> 0 and ) */
+  [KC_MINS] = { KC_MINS, S(KC_RO)   }, /* - and = -> - and _ */
+  [KC_EQL]  = { KC_UNDS, KC_COLN    }, /* ^ and ~ -> = and + */
+  [KC_LBRC] = { KC_RBRC, KC_RCBR    }, /* @ and ` -> [ and { */
+  [KC_RBRC] = { KC_BSLS, KC_PIPE    }, /* [ and { -> ] and } */
+  [KC_BSLS] = { KC_JYEN, S(KC_JYEN) }, /* ] and } -> / and | */
+  [KC_NUHS] = { KC_NUHS, S(KC_NUHS) }, /* (no assign) */
+  [KC_SCLN] = { KC_SCLN, KC_QUOT    }, /* ; and + -> ; and : */
+  [KC_QUOT] = { KC_AMPR, KC_AT      }, /* : and * -> ' and " */
+  [KC_GRV]  = { KC_LCBR, KC_PLUS    }, /* (no assign) -> ` and ~ */
+  [KC_COMM] = { KC_COMM, KC_LT      }, /* , and < -> , and < */
+  [KC_DOT]  = { KC_DOT,  KC_GT      }, /* . and > -> . and > */
+  [KC_SLSH] = { KC_SLSH, KC_QUES    }, /* / and ? -> / and ? */
 };
 
 #endif
diff --git a/keyboards/comet46/keymaps/satt/rules.mk b/keyboards/comet46/keymaps/satt/rules.mk
index dc4355c78f..5839b778b8 100644
--- a/keyboards/comet46/keymaps/satt/rules.mk
+++ b/keyboards/comet46/keymaps/satt/rules.mk
@@ -1,26 +1,7 @@
 SRC += action_pseudo_lut.c
 
-# 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       # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no       # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no       # Audio control and System control(+450)
-CONSOLE_ENABLE = no         # Console for debug(+400)
-COMMAND_ENABLE = no        # Commands for debug and configuration
-NKRO_ENABLE = no            # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-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
-RGBLIGHT_ENABLE = no        # Enable WS2812 RGB underlight. 
-ONEHAND_ENABLE = no        # Enable one-hand typing
-
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend
-
-ifndef QUANTUM_DIR
-	include ../../../../Makefile
-endif
+# If you want to change display settings of the OLED, you need to change the following lines
+SRC +=  ./lib/glcdfont.c \
+		./lib/keylogger.c \
+        ./lib/modifier_state_reader.c \
+        ./lib/host_led_state_reader.c
-- 
cgit v1.2.3