@ -26,10 +26,10 @@ enum crkbd_keycodes {
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_ BSPC , \
KC_TAB , K11 , K12 , K13 , K14 , K15 , K16 , K17 , K18 , K19 , K1A , KC_QUOT , \
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 , LALT_T ( KC_BSPC ) , KC_DEL , KC_ENT , RAISE \
LT ( _LOWER , KC_GRV ) , KC_SPC , KC_BSPC , KC_DEL , KC_ENT , RAISE \
)
# define LAYOUT_crkbd_base_wrapper(...) LAYOUT_crkbd_base(__VA_ARGS__)
@ -66,14 +66,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
) ,
[ _LOWER ] = LAYOUT_wrapper (
KC_ TILD, _________________LOWER_L1__________________ , _________________LOWER_R1__________________ , KC_ BSPC ,
KC_F1 1 , _________________LOWER_L2__________________ , _________________LOWER_R2__________________ , KC_PIPE ,
KC_F12, _________________LOWER_L3__________________ , _________________LOWER_R3__________________ , _______ ,
KC_ F11, _________________LOWER_L1__________________ , _________________LOWER_R1__________________ , KC_ F11 ,
KC_F1 2 , _________________LOWER_L2__________________ , _________________LOWER_R2__________________ , KC_PIPE ,
_______, _________________LOWER_L3__________________ , _________________LOWER_R3__________________ , _______ ,
_______ , _______ , _______ , _______ , _______ , _______
) ,
[ _RAISE ] = LAYOUT_wrapper ( \
KC_GRV, _________________RAISE_L1__________________ , _________________RAISE_R1__________________ , KC_BSPC ,
_______, _________________RAISE_L1__________________ , _________________RAISE_R1__________________ , _______ ,
_______ , _________________RAISE_L2__________________ , _________________RAISE_R2__________________ , KC_BSLS ,
_______ , _________________RAISE_L3__________________ , _________________RAISE_R3__________________ , _______ ,
_______ , _______ , _______ , _______ , _______ , _______
@ -81,18 +81,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[ _ADJUST ] = LAYOUT_wrapper ( \
KC_MAKE , _________________ADJUST_L1_________________ , _________________ADJUST_R1_________________ , KC_RESET ,
VRSN , _________________ADJUST_L2_________________ , _________________ADJUST_R2_________________ , E PRM ,
TG_MODS , _________________ADJUST_L3_________________ , _________________ADJUST_R3_________________ , KC_MPLY ,
_______ , _______ , _______ , _______, _______ , _______
VRSN , _________________ADJUST_L2_________________ , _________________ADJUST_R2_________________ , E EP_RST ,
_______ , _________________ADJUST_L3_________________ , _________________ADJUST_R3_________________ , KC_MPLY ,
_______ , _______ , _______ , KC_NUKE, TG_MODS , _______
)
} ;
int RGB_current_mode ;
void matrix_init_keymap ( 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
@ -102,53 +97,118 @@ void matrix_init_keymap(void) {
PORTD & = ~ ( 1 < < 5 ) ;
DDRB & = ~ ( 1 < < 0 ) ;
PORTB & = ~ ( 1 < < 0 ) ; }
PORTB & = ~ ( 1 < < 0 ) ;
}
//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 ) ;
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);
const char * read_host_led_state ( void ) ;
// 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 < 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 ( layer_state ) {
case _QWERTY :
switch ( default_layer_state ) {
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 " ) ;
snprintf ( layer_state_str , sizeof ( layer_state_str ) , " Layer: Q werty " ) ;
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 " ) ;
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 ;
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 :
snprintf ( layer_state_str , sizeof ( layer_state_str ) , " Layer: Undef-%ld " , layer_state ) ;
}
return layer_state_str ;
@ -160,12 +220,13 @@ void matrix_scan_keymap(void) {
void matrix_render_user ( struct CharacterMatrix * matrix ) {
if ( is_master ) {
// If you want to change the display of OLED, you need to change here
// 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_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 _ln ( matrix , read_host_led_state ( ) ) ;
// 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 ( ) ) ;
@ -187,8 +248,14 @@ void iota_gfx_task_user(void) {
}
bool process_record_keymap ( uint16_t keycode , keyrecord_t * record ) {
if ( record - > event . pressed ) {
set_keylog ( keycode , 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 ;