summaryrefslogtreecommitdiff
path: root/keyboards/crkbd/keymaps
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/crkbd/keymaps')
-rw-r--r--keyboards/crkbd/keymaps/default/config.h11
-rw-r--r--keyboards/crkbd/keymaps/default/glcdfont.c244
-rw-r--r--keyboards/crkbd/keymaps/default/keymap.c41
-rw-r--r--keyboards/crkbd/keymaps/default/rules.mk24
-rw-r--r--keyboards/crkbd/keymaps/drashna/config.h50
-rw-r--r--keyboards/crkbd/keymaps/drashna/keymap.c266
-rw-r--r--keyboards/crkbd/keymaps/drashna/rules.mk33
-rw-r--r--keyboards/crkbd/keymaps/edvorakjp/config.h24
-rw-r--r--keyboards/crkbd/keymaps/edvorakjp/keymap.c158
-rw-r--r--keyboards/crkbd/keymaps/edvorakjp/oled.c82
-rw-r--r--keyboards/crkbd/keymaps/edvorakjp/oled.h24
-rw-r--r--keyboards/crkbd/keymaps/edvorakjp/readme.md21
-rw-r--r--keyboards/crkbd/keymaps/edvorakjp/rules.mk32
-rw-r--r--keyboards/crkbd/keymaps/lib/host_led_state_reader.c13
-rw-r--r--keyboards/crkbd/keymaps/lib/keylogger.c49
-rw-r--r--keyboards/crkbd/keymaps/lib/layer_state_reader.c33
-rw-r--r--keyboards/crkbd/keymaps/lib/logo_reader.c12
-rw-r--r--keyboards/crkbd/keymaps/lib/mode_icon_reader.c15
-rw-r--r--keyboards/crkbd/keymaps/lib/timelogger.c17
-rw-r--r--keyboards/crkbd/keymaps/like_jis/config.h6
-rw-r--r--keyboards/crkbd/keymaps/like_jis/glcdfont.c244
-rw-r--r--keyboards/crkbd/keymaps/like_jis/keymap.c304
-rw-r--r--keyboards/crkbd/keymaps/like_jis/oled_helper.c83
-rw-r--r--keyboards/crkbd/keymaps/like_jis/oled_helper.h35
-rw-r--r--keyboards/crkbd/keymaps/like_jis/rules.mk23
25 files changed, 1049 insertions, 795 deletions
diff --git a/keyboards/crkbd/keymaps/default/config.h b/keyboards/crkbd/keymaps/default/config.h
index 15aeb098bc..644e813650 100644
--- a/keyboards/crkbd/keymaps/default/config.h
+++ b/keyboards/crkbd/keymaps/default/config.h
@@ -18,15 +18,8 @@ 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
+#pragma once
-#include "../../config.h"
-
-/* Use I2C or Serial */
-
-#define USE_I2C
-#define USE_SERIAL
//#define USE_MATRIX_I2C
/* Select hand configuration */
@@ -39,7 +32,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define USE_SERIAL_PD2
-#define PREVENT_STUCK_MODIFIERS
#define TAPPING_FORCE_HOLD
#define TAPPING_TERM 100
@@ -50,4 +42,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_HUE_STEP 10
#define RGBLIGHT_SAT_STEP 17
#define RGBLIGHT_VAL_STEP 17
-#endif
diff --git a/keyboards/crkbd/keymaps/default/glcdfont.c b/keyboards/crkbd/keymaps/default/glcdfont.c
deleted file mode 100644
index 4e7b27bc0c..0000000000
--- a/keyboards/crkbd/keymaps/default/glcdfont.c
+++ /dev/null
@@ -1,244 +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.
-
-#ifndef FONT5X7_H
-#define FONT5X7_H
-
-#ifdef __AVR__
- #include <avr/io.h>
- #include <avr/pgmspace.h>
-#elif defined(ESP8266)
- #include <pgmspace.h>
-#else
- #define PROGMEM
-#endif
-
-// Standard ASCII 5x7 font
-
-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, 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, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x0E, 0x3F, 0xFF, 0xFF,
-0xFF, 0xFF, 0xFE, 0xE0, 0x80, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x1E, 0xBE,
-0x7F, 0xFF, 0xFF, 0xFE, 0xFE, 0xF0,
-0xE0, 0xC0, 0x80, 0x00, 0x0E, 0xEF,
-0xDF, 0xDE, 0xBE, 0x3C, 0x38, 0x70,
-0xE0, 0xDD, 0xBB, 0x7B, 0x07, 0x0E,
-0x0E, 0x0C, 0x98, 0xF0, 0xE0, 0xF0,
-0xF0, 0xF8, 0x78, 0x3C, 0x1C, 0x1E,
-0x0E, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F,
-0x1F, 0xFE, 0xFE, 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, 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, 0x01, 0x03,
-0x0F, 0x3F, 0xFF, 0xFF, 0xFF, 0xFE,
-0xF8, 0xF0, 0xE0, 0xC0, 0x80, 0x7F,
-0xFF, 0xFE, 0xFD, 0xFB, 0x1B, 0x07,
-0x07, 0x0F, 0x1F, 0x1F, 0x1E, 0x1D,
-0x0B, 0x07, 0x01, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0xE0,
-0xF8, 0xFE, 0xFF, 0xFF, 0x1F, 0x07,
-0x01, 0x01, 0x01, 0x03, 0x06, 0x06,
-0x0C, 0x0C, 0x08, 0x0C, 0x0C, 0x0E,
-0x07, 0x83, 0xC1, 0xE0, 0x70, 0x30,
-0x18, 0x1C, 0x7C, 0xCC, 0x8C, 0xDC,
-0xF8, 0xC0, 0xE0, 0xE0, 0x70, 0xB8,
-0xF0, 0x60, 0x00, 0x00, 0x80, 0xC0,
-0xE0, 0xF0, 0x70, 0xF8, 0xFC, 0xFC,
-0x3C, 0x30, 0x38, 0xF8, 0xF8, 0xF8,
-0x78, 0x00, 0x80, 0x80, 0xC0, 0xE0,
-0x70, 0x38, 0x38, 0x9C, 0xDC, 0xFC,
-0x7C, 0x38, 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, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x01, 0x03, 0x07,
-0x1F, 0x3F, 0x3F, 0x7F, 0x7F, 0x7F,
-0x7E, 0x7D, 0x3B, 0x17, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
-0x0F, 0x1F, 0x3F, 0x3F, 0x7E, 0x7C,
-0x78, 0x70, 0x70, 0x70, 0x70, 0x70,
-0x70, 0x78, 0x38, 0x18, 0x1C, 0x0E,
-0x07, 0x0F, 0x1F, 0x3F, 0x3C, 0x38,
-0x38, 0x18, 0x0C, 0x06, 0x03, 0x01,
-0x01, 0x01, 0x01, 0x0E, 0x1F, 0x1F,
-0x1C, 0x1C, 0x1E, 0x0F, 0x0F, 0x03,
-0x1D, 0x0E, 0x07, 0x03, 0x01, 0x00,
-0x00, 0x0E, 0x1F, 0x1F, 0x1D, 0x1E,
-0x0F, 0x07, 0x03, 0x03, 0x0F, 0x1F,
-0x1F, 0x19, 0x19, 0x19, 0x19, 0x0C,
-0x0C, 0x04, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-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 // FONT5X7_H
diff --git a/keyboards/crkbd/keymaps/default/keymap.c b/keyboards/crkbd/keymaps/default/keymap.c
index ac3b7215cd..1e2e57a2b4 100644
--- a/keyboards/crkbd/keymaps/default/keymap.c
+++ b/keyboards/crkbd/keymaps/default/keymap.c
@@ -1,24 +1,13 @@
-#include "crkbd.h"
+#include QMK_KEYBOARD_H
#include "bootloader.h"
-#include "action_layer.h"
-#include "action_util.h"
-#include "eeconfig.h"
#ifdef PROTOCOL_LUFA
-#include "lufa.h"
-#include "split_util.h"
+ #include "lufa.h"
+ #include "split_util.h"
#endif
-#include "LUFA/Drivers/Peripheral/TWI.h"
#ifdef SSD1306OLED
#include "ssd1306.h"
#endif
-#include "../lib/mode_icon_reader.c"
-#include "../lib/layer_state_reader.c"
-#include "../lib/host_led_state_reader.c"
-#include "../lib/logo_reader.c"
-#include "../lib/keylogger.c"
-#include "../lib/timelogger.c"
-
extern keymap_config_t keymap_config;
#ifdef RGBLIGHT_ENABLE
@@ -63,7 +52,7 @@ enum macro_keycodes {
#define KC_LSAD RGB_SAD
#define KC_LVAI RGB_VAI
#define KC_LVAD RGB_VAD
-#define KC_LSMOD RGB_SMOD
+#define KC_LMOD RGB_MOD
#define KC_CTLTB CTL_T(KC_TAB)
#define KC_GUIEI GUI_T(KC_LANG2)
#define KC_ALTKN ALT_T(KC_LANG1)
@@ -111,7 +100,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//|------+------+------+------+------+------| |------+------+------+------+------+------|
LTOG, LHUI, LSAI, LVAI, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,\
//|------+------+------+------+------+------| |------+------+------+------+------+------|
- LSMOD, LHUD, LSAD, LVAD, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,\
+ LMOD, LHUD, LSAD, LVAD, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,\
//|------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
GUIEI, LOWER, SPC, ENT, RAISE, ALTKN \
//`--------------------' `--------------------'
@@ -140,7 +129,6 @@ void matrix_init_user(void) {
#endif
//SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h
#ifdef SSD1306OLED
- TWI_Init(TWI_BIT_PRESCALE_1, TWI_BITLENGTH_FROM_FREQ(1, 800000));
iota_gfx_init(!has_usb()); // turns on the display
#endif
}
@@ -148,12 +136,25 @@ void matrix_init_user(void) {
//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
#ifdef SSD1306OLED
+// When add source files to SRC in rules.mk, you can use functions.
+const char *read_layer_state(void);
+const char *read_logo(void);
+void set_keylog(uint16_t keycode, keyrecord_t *record);
+const char *read_keylog(void);
+const char *read_keylogs(void);
+
+// const char *read_mode_icon(bool swap);
+// const char *read_host_led_state(void);
+// void set_timelog(void);
+// const char *read_timelog(void);
+
void matrix_scan_user(void) {
iota_gfx_task();
}
void matrix_render_user(struct CharacterMatrix *matrix) {
if (is_master) {
+ // If you want to change the display of OLED, you need to change here
matrix_write_ln(matrix, read_layer_state());
matrix_write_ln(matrix, read_keylog());
matrix_write_ln(matrix, read_keylogs());
@@ -178,11 +179,14 @@ void iota_gfx_task_user(void) {
matrix_render_user(&matrix);
matrix_update(&display, &matrix);
}
+#endif//SSD1306OLED
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (record->event.pressed) {
+#ifdef SSD1306OLED
set_keylog(keycode, record);
- set_timelog();
+#endif
+ // set_timelog();
}
switch (keycode) {
@@ -243,4 +247,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return true;
}
-#endif
diff --git a/keyboards/crkbd/keymaps/default/rules.mk b/keyboards/crkbd/keymaps/default/rules.mk
index 33ddd82a43..16deaf45d1 100644
--- a/keyboards/crkbd/keymaps/default/rules.mk
+++ b/keyboards/crkbd/keymaps/default/rules.mk
@@ -4,22 +4,28 @@
# 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)
+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
+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
+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 = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
-ONEHAND_ENABLE = no # Enable one-hand typing
+RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
+SWAP_HANDS_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 the display of OLED, you need to change here
+SRC += ./lib/glcdfont.c \
+ ./lib/rgb_state_reader.c \
+ ./lib/layer_state_reader.c \
+ ./lib/logo_reader.c \
+ ./lib/keylogger.c \
+ # ./lib/mode_icon_reader.c \
+ # ./lib/host_led_state_reader.c \
+ # ./lib/timelogger.c \
diff --git a/keyboards/crkbd/keymaps/drashna/config.h b/keyboards/crkbd/keymaps/drashna/config.h
new file mode 100644
index 0000000000..cbc3feeb61
--- /dev/null
+++ b/keyboards/crkbd/keymaps/drashna/config.h
@@ -0,0 +1,50 @@
+/*
+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/>.
+*/
+
+#pragma once
+
+
+/* Select hand configuration */
+
+// #define MASTER_LEFT
+// #define MASTER_RIGHT
+#define EE_HANDS
+
+#define SSD1306OLED
+
+#define USE_SERIAL_PD2
+
+// #define TAPPING_FORCE_HOLD
+// #define TAPPING_TERM 100
+
+#ifdef RGBLIGHT_ENABLE
+#undef RGBLED_NUM
+#define RGBLED_NUM 27
+
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+#define RGBLIGHT_LIMIT_VAL 100
+#endif
+
+#ifdef AUDIO_ENABLE
+#define B6_AUDIO
+// #define NO_MUSIC_MODE
+#endif
diff --git a/keyboards/crkbd/keymaps/drashna/keymap.c b/keyboards/crkbd/keymaps/drashna/keymap.c
new file mode 100644
index 0000000000..678fd33b57
--- /dev/null
+++ b/keyboards/crkbd/keymaps/drashna/keymap.c
@@ -0,0 +1,266 @@
+#include QMK_KEYBOARD_H
+#include "drashna.h"
+#ifdef PROTOCOL_LUFA
+ #include "lufa.h"
+ #include "split_util.h"
+#endif
+#ifdef SSD1306OLED
+ #include "ssd1306.h"
+#endif
+
+extern keymap_config_t keymap_config;
+extern uint8_t is_master;
+
+#ifdef RGBLIGHT_ENABLE
+//Following line allows macro to read current RGB settings
+extern rgblight_config_t rgblight_config;
+#endif
+
+enum crkbd_keycodes {
+ RGBRST = NEW_SAFE_RANGE
+};
+
+#define LAYOUT_crkbd_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 \
+ ) \
+ LAYOUT_wrapper( \
+ KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_MINS, \
+ KC_TAB, ALT_T(K11), K12, K13, K14, K15, K16, K17, K18, K19, K1A, RGUI_T(KC_QUOT), \
+ OS_LSFT, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, CTL_T(K2A), OS_RSFT, \
+ LT(_LOWER,KC_GRV), KC_SPC, KC_BSPC, KC_DEL, KC_ENT, RAISE \
+ )
+#define LAYOUT_crkbd_base_wrapper(...) LAYOUT_crkbd_base(__VA_ARGS__)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_crkbd_base_wrapper(
+ _________________QWERTY_L1_________________, _________________QWERTY_R1_________________,
+ _________________QWERTY_L2_________________, _________________QWERTY_R2_________________,
+ _________________QWERTY_L3_________________, _________________QWERTY_R3_________________
+ ),
+
+ [_COLEMAK] = LAYOUT_crkbd_base_wrapper(
+ _________________COLEMAK_L1________________, _________________COLEMAK_R1________________,
+ _________________COLEMAK_L2________________, _________________COLEMAK_R2________________,
+ _________________COLEMAK_L3________________, _________________COLEMAK_R3________________
+ ),
+
+ [_DVORAK] = LAYOUT_crkbd_base_wrapper(
+ _________________DVORAK_L1_________________, _________________DVORAK_R1_________________,
+ _________________DVORAK_L2_________________, _________________DVORAK_R2_________________,
+ _________________DVORAK_L3_________________, _________________DVORAK_R3_________________
+ ),
+
+ [_WORKMAN] = LAYOUT_crkbd_base_wrapper(
+ _________________WORKMAN_L1________________, _________________WORKMAN_R1________________,
+ _________________WORKMAN_L2________________, _________________WORKMAN_R2________________,
+ _________________WORKMAN_L3________________, _________________WORKMAN_R3________________
+ ),
+
+ [_MODS] = LAYOUT_wrapper(
+ _______, ___________________BLANK___________________, ___________________BLANK___________________, _______,
+ _______, ___________________BLANK___________________, ___________________BLANK___________________, _______,
+ KC_LSFT, ___________________BLANK___________________, ___________________BLANK___________________, KC_RSFT,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [_LOWER] = LAYOUT_wrapper(
+ KC_F11, _________________LOWER_L1__________________, _________________LOWER_R1__________________, KC_F11,
+ KC_F12, _________________LOWER_L2__________________, _________________LOWER_R2__________________, KC_PIPE,
+ _______, _________________LOWER_L3__________________, _________________LOWER_R3__________________, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [_RAISE] = LAYOUT_wrapper( \
+ _______, _________________RAISE_L1__________________, _________________RAISE_R1__________________, _______,
+ _______, _________________RAISE_L2__________________, _________________RAISE_R2__________________, KC_BSLS,
+ _______, _________________RAISE_L3__________________, _________________RAISE_R3__________________, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [_ADJUST] = LAYOUT_wrapper( \
+ KC_MAKE, _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, KC_RESET,
+ VRSN, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, EEP_RST,
+ _______, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, KC_MPLY,
+ _______, _______, _______, KC_NUKE, TG_MODS, _______
+ )
+};
+
+void matrix_init_keymap(void) {
+ //SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h
+ #ifdef SSD1306OLED
+ iota_gfx_init(!has_usb()); // turns on the display
+ #endif
+
+ #ifndef CONVERT_TO_PROTON_C
+ setPinOutput(D5);
+ writePinHigh(D5);
+
+ setPinOutput(B0);
+ writePinHigh(B0);
+ #endif
+}
+
+//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
+#ifdef SSD1306OLED
+
+// When add source files to SRC in rules.mk, you can use functions.
+const char *read_logo(void);
+char layer_state_str[24];
+char modifier_state_str[24];
+char host_led_state_str[24];
+char keylog_str[24] = {};
+char keylogs_str[21] = {};
+int keylogs_str_idx = 0;
+
+// const char *read_mode_icon(bool swap);
+// void set_timelog(void);
+// const char *read_timelog(void);
+
+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);
+
+ // update keylogs
+ if (keylogs_str_idx == sizeof(keylogs_str) - 1) {
+ keylogs_str_idx = 0;
+ for (int i = 0; i < sizeof(keylogs_str) - 1; i++) {
+ keylogs_str[i] = ' ';
+ }
+ }
+
+ keylogs_str[keylogs_str_idx] = name;
+ keylogs_str_idx++;
+}
+
+const char *read_keylog(void) {
+ return keylog_str;
+}
+
+const char *read_keylogs(void) {
+ return keylogs_str;
+}
+
+
+const char* read_modifier_state(void) {
+ uint8_t modifiers = get_mods();
+ uint8_t one_shot = get_oneshot_mods();
+
+ snprintf(modifier_state_str, sizeof(modifier_state_str), "Mods:%s %s %s %s",
+ (modifiers & MODS_CTRL_MASK || one_shot & MODS_CTRL_MASK) ? "CTL" : " ",
+ (modifiers & MODS_GUI_MASK || one_shot & MODS_GUI_MASK) ? "GUI" : " ",
+ (modifiers & MODS_ALT_MASK || one_shot & MODS_ALT_MASK) ? "ALT" : " ",
+ (modifiers & MODS_SHIFT_MASK || one_shot & MODS_SHIFT_MASK) ? "SFT" : " "
+ );
+
+ return modifier_state_str;
+}
+
+const char *read_host_led_state(void) {
+ uint8_t leds = host_keyboard_leds();
+
+ snprintf(host_led_state_str, sizeof(host_led_state_str), "NL:%s CL:%s SL:%s",
+ (leds & (1 << USB_LED_NUM_LOCK)) ? "on" : "- ",
+ (leds & (1 << USB_LED_CAPS_LOCK)) ? "on" : "- ",
+ (leds & (1 << USB_LED_SCROLL_LOCK)) ? "on" : "- "
+ );
+
+ return host_led_state_str;
+}
+
+const char* read_layer_state(void) {
+ switch (biton32(layer_state)) {
+ case _RAISE:
+ snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Raise ");
+ break;
+ case _LOWER:
+ snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Lower ");
+ break;
+ case _ADJUST:
+ snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Adjust ");
+ break;
+ default:
+ switch (biton32(default_layer_state)) {
+ case _QWERTY:
+ snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Qwerty ");
+ break;
+ case _COLEMAK:
+ snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Colemak");
+ break;
+ case _DVORAK:
+ snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Dvorak ");
+ break;
+ case _WORKMAN:
+ snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Workman");
+ break;
+ }
+ break;
+ }
+
+ return layer_state_str;
+}
+
+void matrix_scan_keymap(void) {
+ iota_gfx_task();
+}
+
+void matrix_render_user(struct CharacterMatrix *matrix) {
+ if (is_master) {
+ //If you want to change the display of OLED, you need to change here
+ matrix_write_ln(matrix, read_layer_state());
+ matrix_write_ln(matrix, read_modifier_state());
+ // matrix_write_ln(matrix, read_keylog());
+ matrix_write_ln(matrix, read_keylogs());
+ // matrix_write_ln(matrix, read_mode_icon(keymap_config.swap_lalt_lgui));
+ matrix_write(matrix, read_host_led_state());
+ //matrix_write_ln(matrix, read_timelog());
+ } else {
+ matrix_write(matrix, read_logo());
+ }
+}
+
+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 iota_gfx_task_user(void) {
+ struct CharacterMatrix matrix;
+ matrix_clear(&matrix);
+ matrix_render_user(&matrix);
+ matrix_update(&display, &matrix);
+}
+
+bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ 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:
+ if (record->event.pressed) { set_keylog(keycode, record); }
+ break;
+ // set_timelog();
+ }
+ return true;
+}
+
+#endif
diff --git a/keyboards/crkbd/keymaps/drashna/rules.mk b/keyboards/crkbd/keymaps/drashna/rules.mk
new file mode 100644
index 0000000000..4b70f66f7b
--- /dev/null
+++ b/keyboards/crkbd/keymaps/drashna/rules.mk
@@ -0,0 +1,33 @@
+
+# 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 = yes # Audio control and System control(+450)
+CONSOLE_ENABLE = no # Console for debug(+400)
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # 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 = yes # Enable WS2812 RGB underlight.
+SWAP_HANDS_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
+
+BOOTLOADER = qmk-dfu
+
+# If you want to change the display of OLED, you need to change here
+SRC += ./lib/glcdfont.c \
+ ./lib/rgb_state_reader.c \
+ ./lib/logo_reader.c \
+ # ./lib/keylogger.c \
+ # ./lib/host_led_state_reader.c \
+ # ./lib/mode_icon_reader.c \
+ # ./lib/layer_state_reader.c \
+ # ./lib/timelogger.c \
diff --git a/keyboards/crkbd/keymaps/edvorakjp/config.h b/keyboards/crkbd/keymaps/edvorakjp/config.h
new file mode 100644
index 0000000000..515591a429
--- /dev/null
+++ b/keyboards/crkbd/keymaps/edvorakjp/config.h
@@ -0,0 +1,24 @@
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+/* Select hand configuration */
+
+#define MASTER_LEFT
+// #define MASTER_RIGHT
+// #define EE_HANDS
+
+#define SSD1306OLED
+#define SWAP_SCLN
+
+// #define TAPPING_FORCE_HOLD
+#define TAPPING_TERM 120
+
+#undef RGBLED_NUM
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLED_NUM 27
+#define RGBLIGHT_LIMIT_VAL 100
+#define RGBLIGHT_HUE_STEP 10
+#define RGBLIGHT_SAT_STEP 17
+#define RGBLIGHT_VAL_STEP 17
+
+#endif // CONFIG_USER_H
diff --git a/keyboards/crkbd/keymaps/edvorakjp/keymap.c b/keyboards/crkbd/keymaps/edvorakjp/keymap.c
new file mode 100644
index 0000000000..ae2f710a03
--- /dev/null
+++ b/keyboards/crkbd/keymaps/edvorakjp/keymap.c
@@ -0,0 +1,158 @@
+#include QMK_KEYBOARD_H
+#ifdef PROTOCOL_LUFA
+ #include "split_util.h"
+#endif
+#ifdef SSD1306OLED
+ #include "oled.h"
+#endif
+
+#include "edvorakjp.h"
+
+/*
+ * enum custom_keycodes {
+ * KC_LOCK = NEW_SAFE_RANGE,
+ * };
+ */
+
+#define KC_ KC_TRNS
+
+#define KC_TMB1 LGUI_T(KC_TAB)
+#define KC_TMB2 LSFT_T(KC_SPC)
+#define KC_TMB3 TD(TD_LOWER) // act as LOWER when hold, as KC_LANG2(=English) when tapped
+#define KC_TMB4 TD(TD_RAISE) // act as RAISE when hold, as KC_LANG1(=Japanese) when tapped
+#define KC_TMB5 RCTL_T(KC_BSPC)
+#define KC_TMB6 RALT_T(KC_ENT)
+#define KC_TMB7 KC_DEL
+#define KC_TMB8 RALT(KC_ENT)
+#define KC_TMB9 LGUI(KC_TAB)
+
+#define KC_RST RESET
+#define KC_DBUG DEBUG
+#define KC_RTOG RGB_TOG
+#define KC_EDJP EDVORAK
+#define KC_QWER QWERTY
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_EDVORAK] = LAYOUT_kc(
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ ESC ,QUOT,COMM,DOT , Y , P , F , G , R , W , Q ,BSLS,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ EQL , A , O , E , I , U , D , T , N , S , M ,MINS,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ GRV ,SCLN, X , C , V , Z , B , H , J , K , L ,SLSH,
+ //`----+----+----+----+----+----+----| |----+----+----+----+----+----+----'
+ TMB1,TMB2,TMB3, TMB4,TMB5,TMB6
+ // `----+----+----' `----+----+----'
+ ),
+
+ [_EDVORAKJ1] = LAYOUT_kc(
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ , AI , OU , EI , , , , , , , , ,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ , , , , , , , , , Y , , ,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ ,ANN ,ONN ,ENN ,INN ,UNN , , , , , , ,
+ //`----+----+----+----+----+----+----| |----+----+----+----+----+----+----'
+ , , , , ,
+ // `----+----+----' `----+----+----'
+ ),
+
+ [_EDVORAKJ2] = LAYOUT_kc(
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ , AI , OU , EI , , , , , , , , ,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ , , , , , , , Y , , , , ,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ ,ANN ,ONN ,ENN ,INN ,UNN , , , , , , ,
+ //`----+----+----+----+----+----+----| |----+----+----+----+----+----+----'
+ , , , , ,
+ // `----+----+----' `----+----+----'
+ ),
+
+ [_QWERTY] = LAYOUT_kc(
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ TAB , Q , W , E , R , T , Y , U , I , O , P ,MINS,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ EQL , A , S , D , F , G , H , J , K , L ,SCLN,QUOT,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ GRV , Z , X , C , V , B , N , M ,COMM,DOT ,SLSH,BSLS,
+ //`----+----+----+----+----+----+----| |----+----+----+----+----+----+----'
+ , , , , ,
+ // `----+----+----' `----+----+----'
+ ),
+
+ [_LOWER] = LAYOUT_kc(
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ , , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , , ,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ , 1 ,EXLM, AT ,HASH,DLR , PERC,CIRC,AMPR,ASTR, 0 , ,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ , , LT ,LCBR,LPRN,LBRC, RBRC,RPRN,RCBR, GT , , ,
+ //`----+----+----+----+----+----+----| |----+----+----+----+----+----+----'
+ , , , ,TMB7,TMB8
+ // `----+----+----' `----+----+----'
+ ),
+
+ [_RAISE] = LAYOUT_kc(
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ , F1 , F2 , F3 , F4 , F5 , F6 , F7 , F8 , F9 ,F10 , ,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ ,F11 ,F12 ,PSCR,SLCK,PAUS, ,HOME,PGDN,PGUP,END , ,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ , , , , , , ,LEFT,DOWN, UP ,RGHT, ,
+ //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----'
+ TMB9, , , , ,
+ // `----+----+----' `----+----+----'
+ ),
+
+ [_ADJUST] = LAYOUT_kc(
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ , , , ,EXTOFF, , ,EXTON, , , , ,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ , , ,QWER,WIN ,RST , RTOG,MAC ,EDJP, , , ,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ , , , , , , , , , , , ,
+ //`----+----+----+----+----+----+----| |----+----+----+----+----+----+----'
+ , , , , ,
+ // `----+----+----' `----+----+----'
+ )
+};
+
+#ifdef SSD1306OLED
+void matrix_init_keymap(void) {
+ //SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h
+ iota_gfx_init(!has_usb()); // turns on the display
+}
+
+void matrix_scan_user(void) {
+ iota_gfx_task(); // this is what updates the display continuously
+}
+#endif
+
+#ifdef RGBLIGHT_EFFECT_STATIC_GRADIENT
+uint32_t layer_state_set_keymap(uint32_t state) {
+ rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
+ switch (biton32(state)) {
+ case _EDVORAKJ1:
+ case _EDVORAKJ2:
+ // _EDVORAKJ1 & J2 are same colored
+ rgblight_sethsv_noeeprom_white();
+ break;
+ case _LOWER:
+ rgblight_sethsv_noeeprom_red();
+ break;
+ case _RAISE:
+ rgblight_sethsv_noeeprom_blue();
+ break;
+ case _ADJUST:
+ rgblight_sethsv_noeeprom_green();
+ break;
+ default: // for any other layers, or the default layer
+ rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_GRADIENT + 3);
+ rgblight_sethsv_noeeprom_red();
+ break;
+ }
+ return state;
+}
+#endif
diff --git a/keyboards/crkbd/keymaps/edvorakjp/oled.c b/keyboards/crkbd/keymaps/edvorakjp/oled.c
new file mode 100644
index 0000000000..e4cccf3e7f
--- /dev/null
+++ b/keyboards/crkbd/keymaps/edvorakjp/oled.c
@@ -0,0 +1,82 @@
+#include <string.h>
+#include "oled.h"
+
+// NOTE: Redefined to avoid to use snprintf(); It makes size of firmware big.
+const char *read_mode_icon(bool windows_mode) {
+ static const char logo[][2][3] = {{{0x95, 0x96, 0}, {0xb5, 0xb6, 0}}, {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}}};
+ static char mode_icon[10];
+
+ int mode_number = windows_mode ? 1 : 0;
+ strcpy(mode_icon, logo[mode_number][0]);
+
+ strcat(mode_icon, "\n");
+ strcat(mode_icon, logo[mode_number][1]);
+
+ return mode_icon;
+}
+
+const char *read_layer_state(void) {
+ static char layer_state_str[24];
+ char layer_name[17];
+
+ switch (biton32(layer_state)) {
+ case L_BASE:
+ strcpy(layer_name, default_layer_state == 1UL<<_EDVORAK ? "EDVORAK" : "QWERTY");
+ break;
+ case _EDVORAKJ1:
+ case _EDVORAKJ2:
+ strcpy(layer_name, "JP_EXT");
+ break;
+ case _RAISE:
+ strcpy(layer_name, "Raise");
+ break;
+ case _LOWER:
+ strcpy(layer_name, "Lower");
+ break;
+ case _ADJUST:
+ strcpy(layer_name, "Adjust");
+ break;
+ default:
+ snprintf(layer_name, sizeof(layer_name), "Undef-%ld", layer_state);
+ }
+
+ strcpy(layer_state_str, "Layer: ");
+
+ strcat(layer_state_str, layer_name);
+ strcat(layer_state_str, "\n");
+ return layer_state_str;
+}
+
+const char *read_host_led_state(void) {
+ static char led_str[24];
+ bool ext_status = get_enable_jp_extra_layer() && get_japanese_mode();
+ strcpy(led_str, ext_status ? "EXT" : " ");
+
+ strcat(led_str, (host_keyboard_leds() & (1<<USB_LED_NUM_LOCK)) ? " NMLK" : " ");
+ strcat(led_str, (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) ? " CAPS" : " ");
+ strcat(led_str, (host_keyboard_leds() & (1<<USB_LED_SCROLL_LOCK)) ? " SCLK" : " ");
+ return led_str;
+}
+
+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 iota_gfx_task_user(void) {
+ struct CharacterMatrix matrix;
+
+ matrix_clear(&matrix);
+ if (is_master) {
+ matrix_write(&matrix, read_mode_icon(!get_enable_kc_lang()));
+ matrix_write(&matrix, " ");
+ matrix_write(&matrix, read_layer_state());
+ matrix_write(&matrix, read_host_led_state());
+ } else {
+ matrix_write(&matrix, read_logo());
+ }
+ matrix_update(&display, &matrix);
+}
diff --git a/keyboards/crkbd/keymaps/edvorakjp/oled.h b/keyboards/crkbd/keymaps/edvorakjp/oled.h
new file mode 100644
index 0000000000..896347aea9
--- /dev/null
+++ b/keyboards/crkbd/keymaps/edvorakjp/oled.h
@@ -0,0 +1,24 @@
+#ifndef OLED_USER_H
+#define OLED_USER_H
+
+//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
+#include "ssd1306.h"
+#include "edvorakjp.h"
+
+//assign the right code to your layers for OLED display
+#define L_BASE 0
+
+extern uint8_t is_master;
+extern bool japanese_mode;
+
+// method prototypes defined in crkbd/lib
+extern const char *read_logo(void);
+
+const char *read_mode_icon(bool swap);
+const char *read_layer_state(void);
+const char *read_host_led_state(void);
+void matrix_update(struct CharacterMatrix *dest,
+ const struct CharacterMatrix *source);
+void iota_gfx_task_user(void);
+
+#endif // OLED_CONFIG_USER_H
diff --git a/keyboards/crkbd/keymaps/edvorakjp/readme.md b/keyboards/crkbd/keymaps/edvorakjp/readme.md
new file mode 100644
index 0000000000..dd406523d2
--- /dev/null
+++ b/keyboards/crkbd/keymaps/edvorakjp/readme.md
@@ -0,0 +1,21 @@
+# edvorakjp
+
+Epaew's Enhanced Dvorak layout for Japanese Programmer
+see [here](/users/edvorakjp) for more informations.
+
+## 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/keyboards/crkbd/keymaps/edvorakjp/rules.mk b/keyboards/crkbd/keymaps/edvorakjp/rules.mk
new file mode 100644
index 0000000000..b4f6d2f1f1
--- /dev/null
+++ b/keyboards/crkbd/keymaps/edvorakjp/rules.mk
@@ -0,0 +1,32 @@
+# 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 = yes # Enable WS2812 RGB underlight.
+SWAP_HANDS_ENABLE = no # Enable one-hand typing
+TAP_DANCE_ENABLE = yes
+
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+
+# If you want to change the display of OLED, you need to change here
+SRC += ./lib/glcdfont.c \
+ ./lib/logo_reader.c \
+ oled.c \
+ # ./lib/rgb_state_reader.c \
+ # ./lib/layer_state_reader.c \
+ # ./lib/keylogger.c \
+ # ./lib/mode_icon_reader.c \
+ # ./lib/host_led_state_reader.c \
+ # ./lib/timelogger.c \
diff --git a/keyboards/crkbd/keymaps/lib/host_led_state_reader.c b/keyboards/crkbd/keymaps/lib/host_led_state_reader.c
deleted file mode 100644
index c19af11f8a..0000000000
--- a/keyboards/crkbd/keymaps/lib/host_led_state_reader.c
+++ /dev/null
@@ -1,13 +0,0 @@
-#include "crkbd.h"
-
-char host_led_state[40];
-
-char *read_host_led_state(void)
-{
- snprintf(host_led_state, sizeof(host_led_state), "\n%s %s %s",
- (host_keyboard_leds() & (1 << USB_LED_NUM_LOCK)) ? "NUMLOCK" : " ",
- (host_keyboard_leds() & (1 << USB_LED_CAPS_LOCK)) ? "CAPS" : " ",
- (host_keyboard_leds() & (1 << USB_LED_SCROLL_LOCK)) ? "SCLK" : " ");
-
- return host_led_state;
-}
diff --git a/keyboards/crkbd/keymaps/lib/keylogger.c b/keyboards/crkbd/keymaps/lib/keylogger.c
deleted file mode 100644
index ee14ff0335..0000000000
--- a/keyboards/crkbd/keymaps/lib/keylogger.c
+++ /dev/null
@@ -1,49 +0,0 @@
-#include "crkbd.h"
-
-char keylog[40] = {};
-char keylogs[21] = {};
-int keylogs_idx = 0;
-
-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 < 60)
- {
- name = code_to_name[keycode];
- }
-
- // update keylog
- snprintf(keylog, sizeof(keylog), "%dx%d, k%2d : %c",
- record->event.key.row,
- record->event.key.col,
- keycode,
- name);
-
- // update keylogs
- if (keylogs_idx == sizeof(keylogs) - 1)
- {
- keylogs_idx = 0;
- for (int i = 0; i < sizeof(keylogs) - 1; i++)
- {
- keylogs[i] = ' ';
- }
- }
- keylogs[keylogs_idx] = name;
- keylogs_idx++;
-}
-
-char *read_keylog(void) {
- return keylog;
-}
-
-char *read_keylogs(void) {
- return keylogs;
-}
diff --git a/keyboards/crkbd/keymaps/lib/layer_state_reader.c b/keyboards/crkbd/keymaps/lib/layer_state_reader.c
deleted file mode 100644
index f79720d6f9..0000000000
--- a/keyboards/crkbd/keymaps/lib/layer_state_reader.c
+++ /dev/null
@@ -1,33 +0,0 @@
-#include "crkbd.h"
-
-#define L_BASE 0
-#define L_LOWER 8
-#define L_RAISE 16
-#define L_ADJUST 65536
-#define L_ADJUST_TRI 65560
-
-char layer_state_str[40];
-
-char *read_layer_state(void)
-{
- switch (layer_state)
- {
- case L_BASE:
- snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Default");
- break;
- case L_RAISE:
- snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Raise");
- break;
- case L_LOWER:
- snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Lower");
- break;
- case L_ADJUST:
- case L_ADJUST_TRI:
- snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Adjust");
- break;
- default:
- snprintf(layer_state_str,sizeof(layer_state_str), "Layer: Undef-%ld", layer_state);
- }
-
- return layer_state_str;
-}
diff --git a/keyboards/crkbd/keymaps/lib/logo_reader.c b/keyboards/crkbd/keymaps/lib/logo_reader.c
deleted file mode 100644
index 46de17bfe0..0000000000
--- a/keyboards/crkbd/keymaps/lib/logo_reader.c
+++ /dev/null
@@ -1,12 +0,0 @@
-#include "crkbd.h"
-
-char *read_logo(void)
-{
- static char 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};
-
- return logo;
-}
diff --git a/keyboards/crkbd/keymaps/lib/mode_icon_reader.c b/keyboards/crkbd/keymaps/lib/mode_icon_reader.c
deleted file mode 100644
index cb3d8adb12..0000000000
--- a/keyboards/crkbd/keymaps/lib/mode_icon_reader.c
+++ /dev/null
@@ -1,15 +0,0 @@
-#include "crkbd.h"
-
-char mode_icon[40];
-
-char *read_mode_icon(bool swap)
-{
- static char logo[][2][3]={{{0x95,0x96,0},{0xb5,0xb6,0}},{{0x97,0x98,0},{0xb7,0xb8,0}}};
- if(swap == false){
- snprintf(mode_icon, sizeof(mode_icon), "%s\n%s", logo[0][0], logo[0][1]);
- }else{
- snprintf(mode_icon, sizeof(mode_icon), "%s\n%s", logo[1][0], logo[1][1]);
- }
-
- return mode_icon;
-}
diff --git a/keyboards/crkbd/keymaps/lib/timelogger.c b/keyboards/crkbd/keymaps/lib/timelogger.c
deleted file mode 100644
index 0e22bafe7f..0000000000
--- a/keyboards/crkbd/keymaps/lib/timelogger.c
+++ /dev/null
@@ -1,17 +0,0 @@
-#include "crkbd.h"
-
-char timelog[40] = {};
-int last_time = 0;
-int elapsed_time = 0;
-
-void set_timelog(void)
-{
- elapsed_time = timer_elapsed(last_time);
- last_time = timer_read();
- snprintf(timelog, sizeof(timelog), "lt:%5d, et:%5d", last_time, elapsed_time);
-}
-
-char *read_timelog(void)
-{
- return timelog;
-}
diff --git a/keyboards/crkbd/keymaps/like_jis/config.h b/keyboards/crkbd/keymaps/like_jis/config.h
index 4c31cc7794..a061b4fb09 100644
--- a/keyboards/crkbd/keymaps/like_jis/config.h
+++ b/keyboards/crkbd/keymaps/like_jis/config.h
@@ -20,10 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* Use I2C or Serial */
-
-#define USE_I2C
-#define USE_SERIAL
//#define USE_MATRIX_I2C
/* Select hand configuration */
@@ -38,7 +34,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define PREVENT_STUCK_MODIFIERS
#define TAPPING_FORCE_HOLD
-#define TAPPING_TERM 150
+#define TAPPING_TERM 250
#undef RGBLED_NUM
#define RGBLIGHT_ANIMATIONS
diff --git a/keyboards/crkbd/keymaps/like_jis/glcdfont.c b/keyboards/crkbd/keymaps/like_jis/glcdfont.c
deleted file mode 100644
index 4e7b27bc0c..0000000000
--- a/keyboards/crkbd/keymaps/like_jis/glcdfont.c
+++ /dev/null
@@ -1,244 +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.
-
-#ifndef FONT5X7_H
-#define FONT5X7_H
-
-#ifdef __AVR__
- #include <avr/io.h>
- #include <avr/pgmspace.h>
-#elif defined(ESP8266)
- #include <pgmspace.h>
-#else
- #define PROGMEM
-#endif
-
-// Standard ASCII 5x7 font
-
-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, 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, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x0E, 0x3F, 0xFF, 0xFF,
-0xFF, 0xFF, 0xFE, 0xE0, 0x80, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x1E, 0xBE,
-0x7F, 0xFF, 0xFF, 0xFE, 0xFE, 0xF0,
-0xE0, 0xC0, 0x80, 0x00, 0x0E, 0xEF,
-0xDF, 0xDE, 0xBE, 0x3C, 0x38, 0x70,
-0xE0, 0xDD, 0xBB, 0x7B, 0x07, 0x0E,
-0x0E, 0x0C, 0x98, 0xF0, 0xE0, 0xF0,
-0xF0, 0xF8, 0x78, 0x3C, 0x1C, 0x1E,
-0x0E, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F,
-0x1F, 0xFE, 0xFE, 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, 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, 0x01, 0x03,
-0x0F, 0x3F, 0xFF, 0xFF, 0xFF, 0xFE,
-0xF8, 0xF0, 0xE0, 0xC0, 0x80, 0x7F,
-0xFF, 0xFE, 0xFD, 0xFB, 0x1B, 0x07,
-0x07, 0x0F, 0x1F, 0x1F, 0x1E, 0x1D,
-0x0B, 0x07, 0x01, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0xE0,
-0xF8, 0xFE, 0xFF, 0xFF, 0x1F, 0x07,
-0x01, 0x01, 0x01, 0x03, 0x06, 0x06,
-0x0C, 0x0C, 0x08, 0x0C, 0x0C, 0x0E,
-0x07, 0x83, 0xC1, 0xE0, 0x70, 0x30,
-0x18, 0x1C, 0x7C, 0xCC, 0x8C, 0xDC,
-0xF8, 0xC0, 0xE0, 0xE0, 0x70, 0xB8,
-0xF0, 0x60, 0x00, 0x00, 0x80, 0xC0,
-0xE0, 0xF0, 0x70, 0xF8, 0xFC, 0xFC,
-0x3C, 0x30, 0x38, 0xF8, 0xF8, 0xF8,
-0x78, 0x00, 0x80, 0x80, 0xC0, 0xE0,
-0x70, 0x38, 0x38, 0x9C, 0xDC, 0xFC,
-0x7C, 0x38, 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, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x01, 0x03, 0x07,
-0x1F, 0x3F, 0x3F, 0x7F, 0x7F, 0x7F,
-0x7E, 0x7D, 0x3B, 0x17, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
-0x0F, 0x1F, 0x3F, 0x3F, 0x7E, 0x7C,
-0x78, 0x70, 0x70, 0x70, 0x70, 0x70,
-0x70, 0x78, 0x38, 0x18, 0x1C, 0x0E,
-0x07, 0x0F, 0x1F, 0x3F, 0x3C, 0x38,
-0x38, 0x18, 0x0C, 0x06, 0x03, 0x01,
-0x01, 0x01, 0x01, 0x0E, 0x1F, 0x1F,
-0x1C, 0x1C, 0x1E, 0x0F, 0x0F, 0x03,
-0x1D, 0x0E, 0x07, 0x03, 0x01, 0x00,
-0x00, 0x0E, 0x1F, 0x1F, 0x1D, 0x1E,
-0x0F, 0x07, 0x03, 0x03, 0x0F, 0x1F,
-0x1F, 0x19, 0x19, 0x19, 0x19, 0x0C,
-0x0C, 0x04, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-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 // FONT5X7_H
diff --git a/keyboards/crkbd/keymaps/like_jis/keymap.c b/keyboards/crkbd/keymaps/like_jis/keymap.c
index 0dd9c15500..b1b6c64b1e 100644
--- a/keyboards/crkbd/keymaps/like_jis/keymap.c
+++ b/keyboards/crkbd/keymaps/like_jis/keymap.c
@@ -7,13 +7,7 @@
#ifdef SSD1306OLED
#include "ssd1306.h"
#endif
-
-#include "../lib/mode_icon_reader.c"
-#include "../lib/layer_state_reader.c"
-#include "../lib/host_led_state_reader.c"
-#include "../lib/logo_reader.c"
-#include "../lib/keylogger.c"
-#include "../lib/timelogger.c"
+#include "oled_helper.h"
extern keymap_config_t keymap_config;
@@ -28,27 +22,35 @@ extern uint8_t is_master;
// 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 _LOWER 3
-#define _RAISE 4
-#define _ADJUST 16
+enum layer_number {
+ _BASE = 0,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
+};
enum custom_keycodes {
LOWER = SAFE_RANGE,
RAISE,
ADJUST,
+ KANJI,
RGBRST
};
-#define KC______ KC_TRNS
-#define KC_XXXXX KC_NO
-#define KC_KANJI KC_GRV
+enum tapdances{
+ TD_CODO = 0,
+ // TD_MNUB,
+};
+// Layer Mode aliases
#define KC_LOWER LOWER
#define KC_RAISE RAISE
-#define KC_RST RESET
+#define KC______ KC_TRNS
+#define KC_XXXXX KC_NO
+#define KC_KANJI KANJI
+#define KC_RST RESET
#define KC_LRST RGBRST
#define KC_LTOG RGB_TOG
#define KC_LHUI RGB_HUI
@@ -57,173 +59,237 @@ enum custom_keycodes {
#define KC_LSAD RGB_SAD
#define KC_LVAI RGB_VAI
#define KC_LVAD RGB_VAD
-#define KC_LSMOD RGB_SMOD
-
+#define KC_LMOD RGB_MOD
#define KC_KNRM AG_NORM
#define KC_KSWP AG_SWAP
-#define KC_GUAP LALT_T(KC_APP)
+
+#define KC_TBSF LSFT_T(KC_TAB)
+// #define KC_SPSF LSFT_T(KC_SPC)
+#define KC_ALAP LALT_T(KC_APP)
+
+#define KC_CODO TD(TD_CODO)
+// #define KC_MNUB TD(TD_MNUB)
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+ [TD_CODO] = ACTION_TAP_DANCE_DOUBLE(KC_COMM, KC_DOT),
+ // [TD_MNUB] = ACTION_TAP_DANCE_DOUBLE(KC_MINS, LSFT(KC_RO)),
+};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_QWERTY] = LAYOUT_kc( \
+ [_BASE] = LAYOUT_kc( \
//,-----------------------------------------. ,-----------------------------------------.
ESC, Q, W, E, R, T, Y, U, I, O, P, MINS,\
//|------+------+------+------+------+------| |------+------+------+------+------+------|
- LSFT, A, S, D, F, G, H, J, K, L, UP, ENT,\
+ TBSF, A, S, D, F, G, H, J, K, L, UP, ENT,\
//|------+------+------+------+------+------| |------+------+------+------+------+------|
- LCTRL, Z, X, C, V, B, N, M, COMM, LEFT, DOWN, RGHT,\
+ LCTRL, Z, X, C, V, B, N, M, CODO, LEFT, DOWN, RGHT,\
//|------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
- LGUI, LOWER, BSPC, SPC, RAISE, GUAP \
+ LGUI, LOWER, BSPC, SPC, RAISE, ALAP \
//`--------------------' `--------------------'
),
[_LOWER] = LAYOUT_kc( \
//,-----------------------------------------. ,-----------------------------------------.
- TAB, F1, F2, F3, F4, F5, XXXXX, MINS, EQL, JYEN, LBRC, RBRC,\
+ _____, F1, F2, F3, F4, F5, XXXXX, MINS, EQL, JYEN, LBRC, RBRC,\
//|------+------+------+------+------+------| |------+------+------+------+------+------|
_____, F6, F7, F8, F9, F10, XXXXX, XXXXX, XXXXX, SCLN, QUOT, BSLS,\
//|------+------+------+------+------+------| |------+------+------+------+------+------|
- _____, F11, F12, XXXXX, KANJI, ENT, XXXXX, XXXXX, COMM, DOT, SLSH, RO,\
+ _____, F11, F12, TAB, KANJI, ENT, XXXXX, XXXXX, COMM, DOT, SLSH, RO,\
//|------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
- _____, _____, DEL, XXXXX, _____, APP \
+ _____, _____, DEL, _____, _____, APP \
//`--------------------' `--------------------'
),
[_RAISE] = LAYOUT_kc( \
//,-----------------------------------------. ,-----------------------------------------.
- _____, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, XXXXX,\
+ _____, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, PSLS,\
//|------+------+------+------+------+------| |------+------+------+------+------+------|
- _____, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, 4, 5, 6, QUOT, XXXXX,\
+ _____, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, QUOT, 4, 5, 6, PPLS, PAST,\
//|------+------+------+------+------+------| |------+------+------+------+------+------|
- _____, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, 0, 1, 2, 3, DOT, XXXXX,\
+ _____, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, 0, 1, 2, 3, DOT, PMNS,\
//|------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
- _____, _____, XXXXX, XXXXX, _____, LALT \
+ _____, _____, BSPC, _____, _____, LALT \
//`--------------------' `--------------------'
),
[_ADJUST] = LAYOUT_kc( \
//,-----------------------------------------. ,-----------------------------------------.
- RST, LRST, KNRM, KSWP, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,\
- //|------+------+------+------+------+------| |------+------+------+------+------+------|
- LTOG, LHUI, LSAI, LVAI, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, PGUP, XXXXX,\
- //|------+------+------+------+------+------| |------+------+------+------+------+------|
- LSMOD, LHUD, LSAD, LVAD, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, HOME, PGDN, END,\
+ _____, RST, LRST, KNRM, KSWP, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,\
+ //|------+-------+------+------+------+-----| |------+------+------+------+------+------|
+ _____, LTOG, LHUI, LSAI, LVAI, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, PGUP, XXXXX,\
+ //|------+-------+------+------+------+-----| |------+------+------+------+------+------|
+ _____, LMOD, LHUD, LSAD, LVAD, XXXXX, XXXXX, XXXXX, XXXXX, HOME, PGDN, END,\
//|------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
- _____, _____, XXXXX, XXXXX, _____, XXXXX \
+ _____, _____, XXXXX, _____, _____, XXXXX \
//`--------------------' `--------------------'
)
};
-int RGB_current_mode;
+#define L_BASE _BASE
+#define L_LOWER (1<<_LOWER)
+#define L_RAISE (1<<_RAISE)
+#define L_ADJUST (1<<_ADJUST)
+#define L_ADJUST_TRI (L_ADJUST|L_RAISE|L_LOWER)
-// Setting ADJUST layer RGB back to default
-inline void update_tri_layer_RGB(uint8_t layer1, uint8_t layer2, uint8_t layer3) {
- if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) {
- layer_on(layer3);
- } else {
- layer_off(layer3);
- }
-}
+#ifdef SSD1306OLED
+typedef struct {
+ uint8_t state;
+ char name[8];
+}LAYER_DISPLAY_NAME;
-void matrix_init_user(void) {
- #ifdef RGBLIGHT_ENABLE
- RGB_current_mode = rgblight_config.mode;
- #endif
- //SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h
- #ifdef SSD1306OLED
- iota_gfx_init(!has_usb()); // turns on the display
- #endif
-}
+#define LAYER_DISPLAY_MAX 5
+const LAYER_DISPLAY_NAME layer_display_name[LAYER_DISPLAY_MAX] = {
+ {L_BASE, "Base"},
+ {L_BASE + 1, "Base"},
+ {L_LOWER, "Lower"},
+ {L_RAISE, "Raise"},
+ {L_ADJUST_TRI, "Adjust"}
+};
-//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
-#ifdef SSD1306OLED
+static inline const char* get_leyer_status(void) {
-void matrix_scan_user(void) {
- iota_gfx_task();
-}
+ for (uint8_t i = 0; i < LAYER_DISPLAY_MAX; ++i) {
+ if (layer_state == 0 && layer_display_name[i].state == default_layer_state) {
-inline void matrix_render_user(struct CharacterMatrix *matrix) {
- if (is_master) {
- matrix_write_ln(matrix, read_layer_state());
- matrix_write_ln(matrix, read_keylog());
- matrix_write_ln(matrix, read_keylogs());
- //matrix_write_ln(matrix, read_mode_icon(keymap_config.swap_lalt_lgui));
- //matrix_write_ln(matrix, read_host_led_state());
- //matrix_write_ln(matrix, read_timelog());
- } else {
- matrix_write(matrix, read_logo());
+ return layer_display_name[i].name;
+ } else if (layer_state != 0 && layer_display_name[i].state == layer_state) {
+
+ return layer_display_name[i].name;
+ }
}
+
+ return "?";
}
-inline 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;
- }
+static char layer_status_buf[24] = "Layer state ready.\n";
+static inline void update_keymap_status(void) {
+
+ snprintf(layer_status_buf, sizeof(layer_status_buf) - 1, "OS:%s Layer:%s\n",
+ keymap_config.swap_lalt_lgui? "win" : "mac", get_leyer_status());
}
-void iota_gfx_task_user(void) {
- struct CharacterMatrix matrix;
- matrix_clear(&matrix);
- matrix_render_user(&matrix);
- matrix_update(&display, &matrix);
+static inline void render_keymap_status(struct CharacterMatrix *matrix) {
+
+ matrix_write(matrix, layer_status_buf);
}
+#define UPDATE_KEYMAP_STATUS() update_keymap_status()
+#define RENDER_KEYMAP_STATUS(a) render_keymap_status(a)
+
+#else
+
+#define UPDATE_KEYMAP_STATUS()
+#define RENDER_KEYMAP_STATUS(a)
+
#endif
+static inline void update_change_layer(bool pressed, uint8_t layer1, uint8_t layer2, uint8_t layer3) {
+
+ pressed ? layer_on(layer1) : layer_off(layer1);
+ IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2) ? layer_on(layer3) : layer_off(layer3);
+}
+
+int RGB_current_mode;
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- #ifdef SSD1306OLED
- if (record->event.pressed) {
- set_keylog(keycode, record);
- set_timelog();
- }
- #endif
+ UPDATE_KEY_STATUS(keycode, record);
+
+ bool result = false;
switch (keycode) {
case LOWER:
- if (record->event.pressed) {
- layer_on(_LOWER);
- update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
- } else {
- layer_off(_LOWER);
- update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
- }
+ update_change_layer(record->event.pressed, _LOWER, _RAISE, _ADJUST);
break;
case RAISE:
+ update_change_layer(record->event.pressed, _RAISE, _LOWER, _ADJUST);
+ break;
+ case KANJI:
if (record->event.pressed) {
- layer_on(_RAISE);
- update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
+ if (keymap_config.swap_lalt_lgui == false) {
+ register_code(KC_LANG2);
+ } else {
+ SEND_STRING(SS_LALT("`"));
+ }
} else {
- layer_off(_RAISE);
- update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
+ unregister_code(KC_LANG2);
}
break;
- case ADJUST:
- if (record->event.pressed) {
- layer_on(_ADJUST);
- } else {
- layer_off(_ADJUST);
- }
- break;
-
#ifdef RGBLIGHT_ENABLE
- case RGB_MOD:
- if (record->event.pressed) {
- rgblight_mode(RGB_current_mode);
- rgblight_step();
- RGB_current_mode = rgblight_config.mode;
- }
- break;
- case RGBRST:
- if (record->event.pressed) {
- eeconfig_update_rgblight_default();
- rgblight_enable();
- RGB_current_mode = rgblight_config.mode;
- }
- break;
+ case RGB_MOD:
+ if (record->event.pressed) {
+ rgblight_mode(RGB_current_mode);
+ rgblight_step();
+ RGB_current_mode = rgblight_config.mode;
+ }
+ break;
+ case RGBRST:
+ if (record->event.pressed) {
+ eeconfig_update_rgblight_default();
+ rgblight_enable();
+ RGB_current_mode = rgblight_config.mode;
+ }
+ break;
#endif
default:
- return true;
+ result = true;
+ break;
}
- return false;
+ UPDATE_KEYMAP_STATUS();
+ return result;
+}
+
+void matrix_init_user(void) {
+ #ifdef RGBLIGHT_ENABLE
+ RGB_current_mode = rgblight_config.mode;
+ #endif
+ //SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h
+ #ifdef SSD1306OLED
+ iota_gfx_init(!has_usb()); // turns on the display
+ #endif
}
+
+//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
+#ifdef SSD1306OLED
+
+void matrix_scan_user(void) {
+ iota_gfx_task(); // this is what updates the display continuously
+}
+
+static inline 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;
+ }
+}
+
+static inline void render_status(struct CharacterMatrix *matrix) {
+
+ UPDATE_LED_STATUS();
+ RENDER_LED_STATUS(matrix);
+ RENDER_KEYMAP_STATUS(matrix);
+ UPDATE_LOCK_STATUS();
+ RENDER_LOCK_STATUS(matrix);
+ RENDER_KEY_STATUS(matrix);
+}
+
+void iota_gfx_task_user(void) {
+ struct CharacterMatrix matrix;
+
+ #if DEBUG_TO_SCREEN
+ if (debug_enable) {
+ return;
+ }
+ #endif
+
+ matrix_clear(&matrix);
+ if (is_master) {
+ render_status(&matrix);
+ } else {
+ RENDER_LOGO(&matrix);
+ }
+
+ matrix_update(&display, &matrix);
+}
+
+#endif
diff --git a/keyboards/crkbd/keymaps/like_jis/oled_helper.c b/keyboards/crkbd/keymaps/like_jis/oled_helper.c
new file mode 100644
index 0000000000..500d3c0dc1
--- /dev/null
+++ b/keyboards/crkbd/keymaps/like_jis/oled_helper.c
@@ -0,0 +1,83 @@
+#ifdef SSD1306OLED
+#include QMK_KEYBOARD_H
+#include "ssd1306.h"
+
+void render_logo(struct CharacterMatrix *matrix) {
+
+ const char logo_buf[]={
+ 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};
+
+ matrix_write(matrix, logo_buf);
+}
+
+static char keylog_buf[24] = "Key state ready.";
+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 update_key_status(uint16_t keycode, keyrecord_t *record) {
+
+ if (!record->event.pressed) return;
+
+ char name = (keycode < 60) ? code_to_name[keycode] : ' ';
+ snprintf(keylog_buf, sizeof(keylog_buf) - 1, "Key:%dx%d %2x %c",
+ record->event.key.row, record->event.key.col,
+ (uint16_t)keycode, name);
+}
+
+void render_key_status(struct CharacterMatrix *matrix) {
+
+ matrix_write(matrix, keylog_buf);
+}
+
+static char lock_buf[24] = "Lock state ready.\n";
+void update_lock_status(void) {
+
+ uint8_t leds = host_keyboard_leds();
+ char *num_lock = (leds & (1<<USB_LED_NUM_LOCK)) ? "Num" : "";
+ char *caps_lock = (leds & (1<<USB_LED_CAPS_LOCK)) ? "Caps" : "";
+ char *scrl_lock = (leds & (1<<USB_LED_SCROLL_LOCK)) ? "Scrn" : "";
+ snprintf(lock_buf, sizeof(lock_buf) - 1, "Lock:%s %s %s\n",
+ num_lock, caps_lock, scrl_lock);
+}
+
+void render_lock_status(struct CharacterMatrix *matrix) {
+
+ matrix_write(matrix, lock_buf);
+}
+
+#ifdef RGBLIGHT_ENABLE
+extern rgblight_config_t rgblight_config;
+
+static char led_buf[24] = "LED state ready.\n";
+rgblight_config_t rgblight_config_bak;
+void update_led_status(void) {
+
+ if (rgblight_config_bak.enable != rgblight_config.enable ||
+ rgblight_config_bak.mode != rgblight_config.mode ||
+ rgblight_config_bak.hue != rgblight_config.hue ||
+ rgblight_config_bak.sat != rgblight_config.sat ||
+ rgblight_config_bak.val != rgblight_config.val
+ ) {
+ snprintf(led_buf, sizeof(led_buf) - 1, "LED%c:%2d hsv:%2d %2d %2d\n",
+ rgblight_config.enable ? '*' : '.', (uint8_t)rgblight_config.mode,
+ (uint8_t)(rgblight_config.hue / RGBLIGHT_HUE_STEP),
+ (uint8_t)(rgblight_config.sat / RGBLIGHT_SAT_STEP),
+ (uint8_t)(rgblight_config.val / RGBLIGHT_VAL_STEP));
+ rgblight_config_bak = rgblight_config;
+ }
+}
+
+void render_led_status(struct CharacterMatrix *matrix) {
+
+ matrix_write(matrix, led_buf);
+}
+#endif
+#endif
diff --git a/keyboards/crkbd/keymaps/like_jis/oled_helper.h b/keyboards/crkbd/keymaps/like_jis/oled_helper.h
new file mode 100644
index 0000000000..44628a5261
--- /dev/null
+++ b/keyboards/crkbd/keymaps/like_jis/oled_helper.h
@@ -0,0 +1,35 @@
+#ifdef SSD1306OLED
+
+void render_logo(struct CharacterMatrix *matrix);
+void update_key_status(uint16_t keycode, keyrecord_t *record);
+void render_key_status(struct CharacterMatrix *matrix);
+void update_lock_status(void);
+void render_lock_status(struct CharacterMatrix *matrix);
+
+#define RENDER_LOGO(a) render_logo(a)
+#define UPDATE_KEY_STATUS(a, b) update_key_status(a, b)
+#define RENDER_KEY_STATUS(a) render_key_status(a)
+#define UPDATE_LOCK_STATUS() update_lock_status()
+#define RENDER_LOCK_STATUS(a) render_lock_status(a)
+
+#ifdef RGBLIGHT_ENABLE
+ void update_led_status(void);
+ void render_led_status(struct CharacterMatrix *matrix);
+ #define UPDATE_LED_STATUS() update_led_status()
+ #define RENDER_LED_STATUS(a) render_led_status(a)
+#else
+ #define UPDATE_LED_STATUS()
+ #define RENDER_LED_STATUS(a)
+#endif
+
+#else
+
+#define RENDER_LOGO(a)
+#define UPDATE_KEY_STATUS(a, b)
+#define RENDER_KEY_STATUS(a)
+#define UPDATE_LOCK_STATUS()
+#define RENDER_LOCK_STATUS(a)
+#define UPDATE_LED_STATUS()
+#define RENDER_LED_STATUS(a)
+
+#endif
diff --git a/keyboards/crkbd/keymaps/like_jis/rules.mk b/keyboards/crkbd/keymaps/like_jis/rules.mk
index 3f1bd9108d..92f4693aa7 100644
--- a/keyboards/crkbd/keymaps/like_jis/rules.mk
+++ b/keyboards/crkbd/keymaps/like_jis/rules.mk
@@ -4,18 +4,29 @@
# 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)
+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
+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
+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 = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
-SWAP_HANDS_ENABLE = no # Enable one-hand typing
+RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
+SWAP_HANDS_ENABLE = no # Enable one-hand typing
+TAP_DANCE_ENABLE = yes
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+
+Link_Time_Optimization = yes # if firmware size over limit, try this option
+
+ifeq ($(strip $(Link_Time_Optimization)),yes)
+ EXTRAFLAGS += -flto -DUSE_Link_Time_Optimization
+endif
+
+# If you want to change the display of OLED, you need to change here
+SRC += ./lib/glcdfont.c \
+ oled_helper.c \