summaryrefslogtreecommitdiff
path: root/keyboards/kbd6x
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/kbd6x')
-rw-r--r--keyboards/kbd6x/config.h5
-rw-r--r--keyboards/kbd6x/keymaps/default/keymap.c21
-rw-r--r--keyboards/kbd6x/keymaps/hhkb-default-improved/keymap.c50
-rw-r--r--keyboards/kbd6x/keymaps/hhkb-default-improved/readme.md1
-rw-r--r--keyboards/kbd6x/keymaps/hhkb-default/keymap.c51
-rw-r--r--keyboards/kbd6x/keymaps/hhkb-default/readme.md1
-rw-r--r--keyboards/kbd6x/keymaps/othi/config.h10
-rw-r--r--keyboards/kbd6x/keymaps/othi/keymap.c190
-rw-r--r--keyboards/kbd6x/keymaps/othi/readme.md56
-rw-r--r--keyboards/kbd6x/keymaps/othi/rules.mk19
-rw-r--r--keyboards/kbd6x/readme.md3
-rw-r--r--keyboards/kbd6x/rules.mk6
12 files changed, 386 insertions, 27 deletions
diff --git a/keyboards/kbd6x/config.h b/keyboards/kbd6x/config.h
index 6a5ebf0624..9f23fb867c 100644
--- a/keyboards/kbd6x/config.h
+++ b/keyboards/kbd6x/config.h
@@ -169,8 +169,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_LAYER
//#define NO_ACTION_TAPPING
//#define NO_ACTION_ONESHOT
-//#define NO_ACTION_MACRO
-//#define NO_ACTION_FUNCTION
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
/*
* MIDI options
@@ -222,4 +222,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define LCD_E_PIN 1 //< pin for Enable line
#endif
*/
-
diff --git a/keyboards/kbd6x/keymaps/default/keymap.c b/keyboards/kbd6x/keymaps/default/keymap.c
index fd73b1445f..e2e96fc634 100644
--- a/keyboards/kbd6x/keymaps/default/keymap.c
+++ b/keyboards/kbd6x/keymaps/default/keymap.c
@@ -26,32 +26,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[1] = LAYOUT(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
};
-const uint16_t PROGMEM fn_actions[] = {
-
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
- // MACRODOWN only works in this function
- switch(id) {
- case 0:
- if (record->event.pressed) {
- register_code(KC_RSFT);
- } else {
- unregister_code(KC_RSFT);
- }
- break;
- }
- return MACRO_NONE;
-};
-
void matrix_init_user(void) {
diff --git a/keyboards/kbd6x/keymaps/hhkb-default-improved/keymap.c b/keyboards/kbd6x/keymaps/hhkb-default-improved/keymap.c
new file mode 100644
index 0000000000..80c22e5d90
--- /dev/null
+++ b/keyboards/kbd6x/keymaps/hhkb-default-improved/keymap.c
@@ -0,0 +1,50 @@
+/* Copyright 2018 MechMerlin
+ *
+ * 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/>.
+ */
+#include QMK_KEYBOARD_H
+
+// iproved hhkb layout with more functionality
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, KC_RALT, KC_RGUI, KC_RCTL
+ ),
+
+ [1] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, RESET,
+ KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_DEL,
+ KC_RCTL, KC_VOLU, KC_VOLD, KC_MUTE, KC_MPLY, KC_MSTP, KC_ASTR, KC_SLSH, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PLUS, KC_UNDS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+};
+
+
+void matrix_init_user(void) {
+
+}
+
+void matrix_scan_user(void) {
+
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ return true;
+}
+
diff --git a/keyboards/kbd6x/keymaps/hhkb-default-improved/readme.md b/keyboards/kbd6x/keymaps/hhkb-default-improved/readme.md
new file mode 100644
index 0000000000..be22dd16c0
--- /dev/null
+++ b/keyboards/kbd6x/keymaps/hhkb-default-improved/readme.md
@@ -0,0 +1 @@
+# this is the default hhkb layout in a more useable normalized form (aka the way i use mine) \ No newline at end of file
diff --git a/keyboards/kbd6x/keymaps/hhkb-default/keymap.c b/keyboards/kbd6x/keymaps/hhkb-default/keymap.c
new file mode 100644
index 0000000000..03153b67ac
--- /dev/null
+++ b/keyboards/kbd6x/keymaps/hhkb-default/keymap.c
@@ -0,0 +1,51 @@
+/* Copyright 2018 MechMerlin
+ *
+ * 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/>.
+ */
+#include QMK_KEYBOARD_H
+
+// stock hhkb as referenced by https://i.imgur.com/QoBTDHf.png
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
+ KC_TRNS, KC_LALT, KC_LGUI, KC_SPACE, KC_RGUI, KC_RALT, KC_TRNS
+ ),
+
+ [1] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL,
+ KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, RESET,
+ KC_TRNS, KC_VOLU, KC_VOLD, KC_MUTE, KC_MSTP, KC_TRNS, KC_ASTR, KC_SLSH, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PLUS, KC_UNDS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+};
+
+
+
+void matrix_init_user(void) {
+
+}
+
+void matrix_scan_user(void) {
+
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ return true;
+}
+
diff --git a/keyboards/kbd6x/keymaps/hhkb-default/readme.md b/keyboards/kbd6x/keymaps/hhkb-default/readme.md
new file mode 100644
index 0000000000..cf93c3553a
--- /dev/null
+++ b/keyboards/kbd6x/keymaps/hhkb-default/readme.md
@@ -0,0 +1 @@
+# default hhkb layout adapted to the 6x (for tofu hhkb) \ No newline at end of file
diff --git a/keyboards/kbd6x/keymaps/othi/config.h b/keyboards/kbd6x/keymaps/othi/config.h
new file mode 100644
index 0000000000..42f68b4358
--- /dev/null
+++ b/keyboards/kbd6x/keymaps/othi/config.h
@@ -0,0 +1,10 @@
+#pragma once
+#define ONESHOT_TAP_TOOGLE 2
+#define ONESHOT_TIMEOUT 2000
+// tap dance configurations
+#define TAPPING_TERM 200
+#define TAPPING_TOGGLE 2
+#define PERMISSIVE_HOLD
+// Fix KC_GESC conflict with Cmd+Alt+Esc on macros
+#define GRAVE_ESC_GUI_OVERRIDE
+
diff --git a/keyboards/kbd6x/keymaps/othi/keymap.c b/keyboards/kbd6x/keymaps/othi/keymap.c
new file mode 100644
index 0000000000..1e0fc8ad7e
--- /dev/null
+++ b/keyboards/kbd6x/keymaps/othi/keymap.c
@@ -0,0 +1,190 @@
+/* Copyright 2018 Othi
+ *
+ * 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/>.
+ */
+#include QMK_KEYBOARD_H
+
+// read README.md for rundown of what does what
+
+// #define BL 0
+#define CL 0
+#define NM_MODE 2
+#define VI_MODE 3
+#define FN3 4
+#define ACCENT 5
+#define ACCENT_CAP 6
+
+//Unicode keymaps
+void eeconfig_init_user(void) {
+ set_unicode_input_mode(UC_LNX);
+}
+#define DE_AE UC(0x00E4)
+#define DE_SS UC(0x00DF)
+#define DE_OE UC(0x00F6)
+#define DE_UE UC(0x00FC)
+#define DE_AE_CAP UC(0x00C4)
+#define DE_OE_CAP UC(0x00D6)
+#define DE_UE_CAP UC(0x00DC)
+
+uint32_t layer_state_set_user(uint32_t state) {
+ switch (biton32(state)) {
+ case NM_MODE:
+ rgblight_setrgb (0x00, 0x66, 0x00);
+ break;
+ case VI_MODE:
+ rgblight_setrgb (0x66, 0x66, 0x00);
+ break;
+ case ACCENT:
+ rgblight_setrgb (0x7A, 0x00, 0xFF);
+ break;
+ case ACCENT_CAP:
+ rgblight_setrgb (0x7A, 0xFF, 0xFF);
+ break;
+ default: // for any other layers, or the default layer
+ rgblight_setrgb (0xFF, 0x00, 0x00);
+ break;
+ }
+ return state;
+}
+
+//Tap Dance Declarations
+enum {
+ CTL_NM = 0,
+ ALT_NM = 1,
+ SFT_NM = 2,
+ GUI_NM = 3
+};
+
+void dance_CTL_NM_finished (qk_tap_dance_state_t *state, void *user_data) {
+ if (state->count == 1) {
+ set_oneshot_mods(MOD_LCTL);
+ } else {
+ register_code (KC_LCTL);
+ layer_on(NM_MODE);
+ }
+}
+
+void dance_CTL_NM_reset (qk_tap_dance_state_t *state, void *user_data) {
+ if (state->count == 1) {
+ unregister_code (KC_LCTL);
+ } else {
+ unregister_code (KC_LCTL);
+ layer_off(NM_MODE);
+ }
+}
+
+void dance_GUI_NM_finished (qk_tap_dance_state_t *state, void *user_data) {
+ if (state->count == 1) {
+ register_code (KC_LGUI);
+ } else {
+ register_code (KC_LGUI);
+ layer_on(NM_MODE);
+ }
+}
+
+void dance_GUI_NM_reset (qk_tap_dance_state_t *state, void *user_data) {
+ if (state->count == 1) {
+ unregister_code (KC_LGUI);
+ } else {
+ unregister_code (KC_LGUI);
+ layer_off(NM_MODE);
+ }
+}
+
+void dance_ALT_NM_finished (qk_tap_dance_state_t *state, void *user_data) {
+ if (state->count == 1) {
+ register_code (KC_LALT);
+ } else {
+ register_code (KC_LALT);
+ layer_on(NM_MODE);
+ }
+}
+
+void dance_ALT_NM_reset (qk_tap_dance_state_t *state, void *user_data) {
+ if (state->count == 1) {
+ unregister_code (KC_LALT);
+ } else {
+ unregister_code (KC_LALT);
+ layer_off(NM_MODE);
+ }
+}
+
+void dance_SFT_NM_finished (qk_tap_dance_state_t *state, void *user_data) {
+ if (state->count == 1) {
+ register_code (KC_LSFT);
+ set_oneshot_mods(MOD_LSFT);
+ } else {
+ register_code (KC_LSFT);
+ layer_on(NM_MODE);
+ }
+}
+
+void dance_SFT_NM_reset (qk_tap_dance_state_t *state, void *user_data) {
+ if (state->count == 1) {
+ unregister_code (KC_LSFT);
+ } else {
+ unregister_code (KC_LSFT);
+ layer_off(NM_MODE);
+ }
+}
+
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+ [CTL_NM] = ACTION_TAP_DANCE_FN_ADVANCED (NULL, dance_CTL_NM_finished, dance_CTL_NM_reset),
+ [GUI_NM] = ACTION_TAP_DANCE_FN_ADVANCED (NULL, dance_GUI_NM_finished, dance_GUI_NM_reset),
+ [ALT_NM] = ACTION_TAP_DANCE_FN_ADVANCED (NULL, dance_ALT_NM_finished, dance_ALT_NM_reset),
+ [SFT_NM] = ACTION_TAP_DANCE_FN_ADVANCED (NULL, dance_SFT_NM_finished, dance_SFT_NM_reset)
+};
+
+// backup
+// old R3 capslock, LT(NM_MODE,KC_BSPC),
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [CL] = LAYOUT(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_DEL,
+ MT(MOD_LGUI,KC_TAB), LT(NM_MODE,KC_Q), KC_W, LT(ACCENT,KC_F), KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSPC,
+ MT(MOD_LCTL,KC_BSPC), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_ENT,
+ TD(SFT_NM), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, MT(MOD_LCTL,KC_COMM), MT(MOD_LSFT,KC_DOT), MT(MOD_LALT,KC_SLSH), LM(CL,MOD_LGUI|MOD_LSFT), TT(NM_MODE),
+ _______, TD(CTL_NM), TD(ALT_NM), KC_SPC, LM(CL,MOD_LGUI|MOD_LALT), OSL(ACCENT) , _______
+ ),
+ [NM_MODE] = LAYOUT(
+ KC_GRV, KC_MPRV, KC_MNXT, KC_MPLY, KC_END, _______, _______, _______, _______, _______, KC_HOME, _______, _______, RESET, KC_INS,
+ LGUI(KC_TAB), _______, LCTL(KC_RGHT), _______, _______, _______, _______, KC_UP, KC_PGUP, _______, _______, _______, TG(CL), KC_DEL,
+ _______, KC_LEFT, _______, KC_RGHT, _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, _______, KC_ENT, KC_QUOT, KC_LGUI,
+ KC_LSFT, _______, _______, _______, _______, LCTL(KC_LEFT), _______, _______, _______, _______, _______, TG(VI_MODE), TO(CL),
+ _______, TD(CTL_NM), TD(ALT_NM), KC_SPC, LM(CL,MOD_LGUI|MOD_LALT), OSL(ACCENT), _______
+ ),
+
+ [VI_MODE] = LAYOUT(
+ KC_GRV, KC_MPRV, KC_MNXT, KC_MPLY, LSFT(KC_END), KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, LSFT(KC_HOME), KC_F11, KC_F12, RESET, KC_INS,
+ LGUI(KC_TAB), _______, LSFT(LCTL(KC_RGHT)), _______, _______, _______, _______, LSFT(KC_UP), _______, _______, _______, _______, TG(CL), KC_BSPC,
+ _______, _______, _______, _______, _______, _______, LSFT(LCTL(KC_LEFT)), LSFT(KC_DOWN), LSFT(KC_RGHT), _______, KC_SCLN, KC_QUOT, KC_LGUI,
+ KC_LSFT, _______, _______, _______, _______, LSFT(LCTL(KC_LEFT)), _______, _______, _______, _______, KC_SLSH, OSM(MOD_LSFT), TO(CL),
+ _______, TD(CTL_NM), TD(ALT_NM), KC_SPC, LM(CL,MOD_LGUI|MOD_LALT), OSL(ACCENT), _______
+ ),
+ [ACCENT] = LAYOUT(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ _______, RGB_TOG, RGB_MODE_PLAIN, _______, _______, _______, _______, _______, DE_UE, _______, _______, _______, _______, _______,
+ _______, DE_AE, UC_Z, DE_SS, _______, _______, _______, _______, _______, _______, DE_OE, _______, _______,
+ OSL(ACCENT_CAP), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, TO(CL),
+ _______, _______, _______, _______, _______, _______, _______
+ ),
+ [ACCENT_CAP] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, DE_UE_CAP, _______, _______, _______, _______, _______,
+ _______, DE_AE_CAP, _______, DE_SS, _______, _______, _______, _______, _______, _______, DE_OE_CAP, _______, TO(CL),
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______
+ ),
+};
+
diff --git a/keyboards/kbd6x/keymaps/othi/readme.md b/keyboards/kbd6x/keymaps/othi/readme.md
new file mode 100644
index 0000000000..95be36d057
--- /dev/null
+++ b/keyboards/kbd6x/keymaps/othi/readme.md
@@ -0,0 +1,56 @@
+## Othi's Universal HHKB keymap
+
+### Goals
+- Colemak layout. If you don't use Colemak then you'll need to also change the arrow key bindigns in other layers
+
+- Vim-like navigation layer so you can use vim binding arrowkeys in non-vim environment
+
+- Good modifier support so you don't have to hold 14 modifier keys at the same time
+
+- RGB indicating layer change(only work with plain colors so far, don't put your rgb to pulsing or any non static animation)
+
+### Layers
+- **CL:**
+
+ The base layer, default is Colemak
+
+- **NM_MODE:**
+
+ Vim-like arrowkeys in the home row, it's `LHNE` for *JENK Colemak* and `HJKL` for *QWERTY*
+
+ Also `HOME`, `END` and next/prev word (`Ctrl + Left/Right`) in `0, 4, w, b` like in vim
+
+- **VI_MODE:**
+
+ The same as `NM_MODE` but with `KC_LSFT` held down for mostly highlighting
+
+- **ACCENT + ACCENT_CAP:**
+
+ Function row and Unicode characters
+
+### Modifiers and Tap Dance keys
+**LHS:**
+
+- Any Tap Dance key with the format of `TD(XXX_NM)` act as normal XXX modifier upon hold, but will hold **and** put you to `NM_MODE` when double click hold(a tap before the hold)(eg you can produce `Alt + PgUp` by pressing `Alt + Alt + U`)
+
+- `KC_TAB` acts as both `KC_TAB` on tap and `KC_LGUI` on hold
+
+- R3 CapsLock acts as both `KC_BSPC` on tap and `KC_LCTL` on hold
+
+- Holding `KC_Q` also puts you into `NM_MODE`
+
+- Holding `KC_F` puts you into `VI_MODE` for fast function keys
+
+**RHS:**
+
+- 3 keys `KC_SCLN`, `KC_DOT` and `KC_SLSH` in `CL` layer can also be held down for respectively `KC_LCTL`, `KC_LSFT`, `KC_LALT` for easier 2-hand modifier holding
+
+- Right modifiers hold the selected modifier with `KC_LGUI` at the same time, mainly for i3wm, you can change this to whatever combination you want
+
+### Misc. functionalities
+
+**Unicode:**
+
+- In case the keyboard output the 4-digit codepoint instead of the actual unicode, you need to change the rewrite input mode of the keyboard into the EEPROM(you only have to do this if the EEPROM was cleared or your current machine use another unicode compose method other than IBus/Linux's `Ctrl + Shift + U`). Change the corresponding Input `void eeconfig_init_user(void)`. See [this](https://docs.qmk.fm/#/feature_unicode) for availble input modes.
+
+- **NOTE:** make sure to keep your qmk env up to date with upstream
diff --git a/keyboards/kbd6x/keymaps/othi/rules.mk b/keyboards/kbd6x/keymaps/othi/rules.mk
new file mode 100644
index 0000000000..9cda4109dd
--- /dev/null
+++ b/keyboards/kbd6x/keymaps/othi/rules.mk
@@ -0,0 +1,19 @@
+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
+# 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 this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
+MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+UNICODE_ENABLE = yes # Unicode
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+RGBLIGHT_ENABLE = yes
+AUDIO_ENABLE = no # Audio output on port C6
+FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+TAP_DANCE_ENABLE=yes
+
diff --git a/keyboards/kbd6x/readme.md b/keyboards/kbd6x/readme.md
index 625ec8968b..b50646ace1 100644
--- a/keyboards/kbd6x/readme.md
+++ b/keyboards/kbd6x/readme.md
@@ -4,7 +4,8 @@ A WKL Hot Swap Double USB C 60%
Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin)
Hardware Supported: KBD6x PCB
-Hardware Availability: [KBDFans](https://kbdfans.cn/products/kbd6x-wkl-hot-swap-60-double-type-c-pcb)
+Hardware Availability: [KBDFans](https://kbdfans.cn/products/kbd6x-wkl-hot-swap-60-double-type-c-pcb)
+
Make example for this keyboard (after setting up your build environment):
make kbd6x:default
diff --git a/keyboards/kbd6x/rules.mk b/keyboards/kbd6x/rules.mk
index 8f2e7e2adb..e9b61a76d6 100644
--- a/keyboards/kbd6x/rules.mk
+++ b/keyboards/kbd6x/rules.mk
@@ -51,11 +51,11 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE = no # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = yes # Console for debug(+400)
-COMMAND_ENABLE = yes # Commands for debug and configuration
+COMMAND_ENABLE = no # Commands for debug and configuration
# 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 this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work