diff --git a/keyboards/helix/rev2/keymaps/five_rows/config.h b/keyboards/helix/rev2/keymaps/five_rows/config.h
index 538859bc3c5d..30848162cbf4 100644
--- a/keyboards/helix/rev2/keymaps/five_rows/config.h
+++ b/keyboards/helix/rev2/keymaps/five_rows/config.h
@@ -27,6 +27,9 @@ along with this program. If not, see .
/* when TAPPING_TERM >= 500 same effect PERMISSIVE_HOLD.
see tmk_core/common/action_tapping.c */
+//#define DIP_SWITCH_PINS { B5, B6 }
+#define DIP_SWITCH_PINS { B5, B6, B5, B6 }
+
// place overrides here
// If you need more program area, try select and reduce rgblight modes to use.
diff --git a/keyboards/helix/rev2/keymaps/five_rows/keymap.c b/keyboards/helix/rev2/keymaps/five_rows/keymap.c
index eb73881c6ba9..b8c4602af651 100644
--- a/keyboards/helix/rev2/keymaps/five_rows/keymap.c
+++ b/keyboards/helix/rev2/keymaps/five_rows/keymap.c
@@ -1,4 +1,5 @@
#include QMK_KEYBOARD_H
+#include
#include "bootloader.h"
#ifdef PROTOCOL_LUFA
#include "lufa.h"
@@ -13,6 +14,7 @@
#ifdef CONSOLE_ENABLE
#include
#endif
+#include "timer.h"
extern keymap_config_t keymap_config;
@@ -332,8 +334,13 @@ uint32_t default_layer_state_set_kb(uint32_t state) {
return state;
}
+void dump_pbuf(void);
void update_base_layer(int base)
{
+ uprintf("layer\n");
+ dump_pbuf();
+ uprintf("call dip_switch_read(true)\n");
+ dip_switch_read(true);
if( current_default_layer != base ) {
eeconfig_update_default_layer(1UL< 0 ) {
+ if (pbuf_count > 1)
+ uprintf(" %06d : dump_pbuf %d\n", timer_read(), pbuf_count);
+ for( uint8_t i = 0; i < pbuf_count; i++ ) {
+ uprintf(" %06d : ", pbuf[i].timer);
+ __xprintf(pbuf[i].fmt, pbuf[i].arg1, pbuf[i].arg2);
+ }
+ pbuf_count = 0;
+ if( pbuf_overflow ) {
+ uprintf(" pbuf overflow \n");
+ pbuf_overflow = false;
+ }
+ }
+#endif
+}
+
+void matrix_scan_user(void) {
+ if( pbuf_wait ) {
+ if( pbuf_timer == 0 ) {
+ /* the first scan. */
+ pbuf_timer = timer_read();
+ }
+ if( timer_elapsed(pbuf_timer) < 2000 ) {
+ return;
+ }
+ pbuf_wait = false;
+ dump_pbuf();
+ }
+}
+
+void dip_switch_update_user(uint8_t index, bool active) {
+ if( pbuf_count < sizeof(pbuf)/sizeof(pbuf[0]) ) {
+ pbuf[pbuf_count].fmt = PSTR("dip_switch_update_user(%d,%d)\n");
+ pbuf[pbuf_count].arg1 = index;
+ pbuf[pbuf_count].arg2 = active;
+ pbuf[pbuf_count].timer = timer_read();
+ pbuf_count++;
+ } else {
+ pbuf_overflow = true;
+ }
+ dump_pbuf();
+}
+
+void dip_switch_update_mask_user(uint32_t state) {
+ if( pbuf_count < sizeof(pbuf)/sizeof(pbuf[0]) ) {
+ pbuf[pbuf_count].fmt = PSTR("dip_switch_update_mask_user(0b%b)\n");
+ pbuf[pbuf_count].arg1 = state;
+ pbuf[pbuf_count].timer = timer_read();
+ pbuf_count++;
+ } else {
+ pbuf_overflow = true;
+ }
+ dump_pbuf();
+}
+
+void keyboard_pre_init_user(void)
+{
+ if( pbuf_count < sizeof(pbuf)/sizeof(pbuf[0]) ) {
+ pbuf[pbuf_count].fmt = PSTR("keyboard_pre_init_user()\n");
+ pbuf[pbuf_count].timer = timer_read();
+ pbuf_count++;
+ } else {
+ pbuf_overflow = true;
+ }
+}
+
+void keyboard_post_init_user(void)
+{
+ if( pbuf_count < sizeof(pbuf)/sizeof(pbuf[0]) ) {
+ pbuf[pbuf_count].fmt = PSTR("keyboard_post_init_user()\n");
+ pbuf[pbuf_count].timer = timer_read();
+ pbuf_count++;
+ } else {
+ pbuf_overflow = true;
+ }
+}
diff --git a/keyboards/helix/rev2/keymaps/five_rows/rules.mk b/keyboards/helix/rev2/keymaps/five_rows/rules.mk
index fb564b6e0424..0303d49aeaf5 100644
--- a/keyboards/helix/rev2/keymaps/five_rows/rules.mk
+++ b/keyboards/helix/rev2/keymaps/five_rows/rules.mk
@@ -30,6 +30,9 @@ ifneq ($(strip $(HELIX)),)
endif
endif
+CONSOLE_ENABLE = yes
+DIP_SWITCH_ENABLE = yes
+
# convert Helix-specific options (that represent combinations of standard options)
# into QMK standard options.
include $(strip $(KEYBOARD_LOCAL_FEATURES_MK))