summaryrefslogtreecommitdiffstats
path: root/keyboards/arch_36/keymaps
diff options
context:
space:
mode:
authorobosob <obosob@users.noreply.github.com>2020-08-06 20:08:20 +0100
committerGitHub <noreply@github.com>2020-08-06 12:08:20 -0700
commitd9fe755f7e1f6c0635780071691af0c0a20c4076 (patch)
tree407c0f9f4a7f3b29458abfa5de3ef55392c8bc00 /keyboards/arch_36/keymaps
parentc8b721d7c6cf683473bcf3d0af6ec561471b1dcc (diff)
[Keyboard] Add Arch-36 keyboard (#9688)
* Add Arch-36 keyboard * Apply suggestions from code review Update based on PR Review comments * Apply suggestions from code review Update to PR comments * Fix Build * Use full rules.mk template for Arch-36 keyboard * Reduce default firmware size * Update based on PR comments * Fix Copyright statement on arch_36:obosob keymap * Apply suggestions from code review
Diffstat (limited to 'keyboards/arch_36/keymaps')
-rw-r--r--keyboards/arch_36/keymaps/default/keymap.c309
-rw-r--r--keyboards/arch_36/keymaps/obosob/config.h31
-rw-r--r--keyboards/arch_36/keymaps/obosob/keymap.c818
-rw-r--r--keyboards/arch_36/keymaps/obosob/readme.md1
-rw-r--r--keyboards/arch_36/keymaps/obosob/rules.mk3
5 files changed, 1162 insertions, 0 deletions
diff --git a/keyboards/arch_36/keymaps/default/keymap.c b/keyboards/arch_36/keymaps/default/keymap.c
new file mode 100644
index 0000000000..48412f812a
--- /dev/null
+++ b/keyboards/arch_36/keymaps/default/keymap.c
@@ -0,0 +1,309 @@
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+ _ADJUST
+};
+
+#define LOWER MO(_LOWER)
+#define RAISE MO(_RAISE)
+
+// Defines for task manager and such
+#define CALTDEL LCTL(LALT(KC_DEL))
+#define TSKMGR LCTL(LSFT(KC_ESC))
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Qwerty
+ *
+ * ,----------------------------------. ,----------------------------------.
+ * | Q | W | E | R | T | | Y | U | I | O | P |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | A | S | D | F | G | | H | J | K | L | ; |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | Z | X | C | V | B | | N | M | , | . | / |
+ * `----------------------------------' `----------------------------------'
+ * ,--------------------. ,--------------------.
+ * | Ctrl | LOWER| Space| |BckSpc| RAISE| Shift|
+ * `--------------------' `--------------------.
+ */
+[_QWERTY] = LAYOUT_split_3x5_3(
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ KC_LCTL, LOWER, KC_SPC, KC_BSPC, RAISE, OSM(MOD_LSFT)
+),
+
+/* Raise
+ *
+ * ,----------------------------------. ,----------------------------------.
+ * | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | Tab | Left | Down | Up | Right| | | - | = | [ | ] |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | Ctrl| ` | GUI | Alt | | | | | | \ | ' |
+ * `----------------------------------' `----------------------------------'
+ * ,--------------------. ,--------------------.
+ * | | LOWER| | | | RAISE| |
+ * `--------------------' `--------------------.
+ */
+[_RAISE] = LAYOUT_split_3x5_3(
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ KC_TAB, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC,
+ KC_LCTL, KC_GRV, KC_LGUI, KC_LALT, _______, _______, _______, _______, KC_BSLS, KC_QUOT,
+ _______, _______, _______, _______, _______, _______
+),
+
+/* Lower
+ *
+ * ,----------------------------------. ,----------------------------------.
+ * | ! | @ | # | $ | % | | ^ | & | * | ( | ) |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | Esc | | | | | | | _ | + | { | } |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | Caps| ~ | | | | | | | | | | " |
+ * `----------------------------------' `----------------------------------'
+ * ,--------------------. ,--------------------.
+ * | | LOWER| | | | RAISE| Del |
+ * `--------------------' `--------------------.
+ */
+[_LOWER] = LAYOUT_split_3x5_3(
+ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,
+ KC_ESC, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR,
+ KC_CAPS, KC_TILD, _______, _______, _______, _______, _______, _______, KC_PIPE, KC_DQT,
+ _______, _______, _______, KC_ENT, _______, KC_DEL
+),
+
+/* Adjust (Lower + Raise)
+ *
+ * ,----------------------------------. ,----------------------------------.
+ * | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | F11 | F12 | | | | | | | |Taskmg|caltde|
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | Reset| | | | | | | | | | |
+ * `----------------------------------' `----------------------------------'
+ * ,--------------------. ,--------------------.
+ * | | LOWER| | | | RAISE| |
+ * `--------------------' `--------------------.
+ */
+[_ADJUST] = LAYOUT_split_3x5_3(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
+ KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, TSKMGR, CALTDEL,
+ RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+)
+};
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
+}
+
+uint16_t rgb_edit_timer = 0;
+uint16_t last_rgb_char = 0;
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch(keycode) {
+ case RGB_TOG:
+ case RGB_MOD:
+ case RGB_HUD:
+ case RGB_HUI:
+ case RGB_SAD:
+ case RGB_SAI:
+ case RGB_VAI:
+ case RGB_VAD:
+ rgb_edit_timer = timer_read();
+ last_rgb_char = keycode;
+ return true;
+ }
+ return true;
+}
+
+#ifdef OLED_DRIVER_ENABLE
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ return OLED_ROTATION_180;
+}
+
+void render_default_layer_state(void) {
+ oled_write_P(PSTR("Layout: "), false);
+ switch (get_highest_layer(default_layer_state)) {
+ case _QWERTY:
+ oled_write_ln_P(PSTR("Qwerty"), false);
+ break;
+ }
+}
+
+#ifdef RGBLIGHT_ENABLE
+bool cleared = false;
+void render_rgb_state(void) {
+ if(!rgblight_get_mode()) {
+ if(!cleared) {
+ oled_clear();
+ cleared = true;
+ }
+ return;
+ }
+ cleared = false;
+ uint8_t width = (OLED_DISPLAY_WIDTH/OLED_FONT_WIDTH)-10;
+ uint8_t hue = (rgblight_get_hue()*width/255),
+ sat = (rgblight_get_sat()*width/255),
+ val = (rgblight_get_val()*width/255);
+ bool changing_hue = timer_elapsed(rgb_edit_timer) < 1000 && (last_rgb_char == RGB_HUI || last_rgb_char == RGB_HUD);
+ bool changing_sat = timer_elapsed(rgb_edit_timer) < 1000 && (last_rgb_char == RGB_SAI || last_rgb_char == RGB_SAD);
+ bool changing_val = timer_elapsed(rgb_edit_timer) < 1000 && (last_rgb_char == RGB_VAI || last_rgb_char == RGB_VAD);
+
+ uint8_t i;
+
+ oled_write_ln_P(PSTR(""), false);
+
+ oled_write_P(PSTR("Hue: ["), changing_hue);
+ for(i = 0; i < width; ++i) {
+ oled_write_P(i<hue?PSTR("-"):i==hue?PSTR("|"):PSTR(" "), changing_hue);
+ }
+ oled_write_P(PSTR("]"), changing_hue);
+ oled_write_P(PSTR("Sat: ["), changing_sat);
+ for(i = 0; i < width; ++i) {
+ oled_write_P(i<sat?PSTR("-"):i==sat?PSTR("|"):PSTR(" "), changing_sat);
+ }
+ oled_write_P(PSTR("]"), changing_sat);
+ oled_write_P(PSTR("Bri: ["), changing_val);
+ for(i = 0; i < width; ++i) {
+ oled_write_P(i<val?PSTR("-"):i==val?PSTR("|"):PSTR(" "), changing_val);
+ }
+ oled_write_P(PSTR("]"), changing_val);
+}
+#endif // RGBLIGHT_ENABLE
+
+void render_layer_state(void) {
+ oled_write_P(PSTR("Layer: "), false);
+ switch (get_highest_layer(layer_state)) {
+ case _QWERTY:
+ oled_write_ln_P(PSTR("Base"), false);
+ break;
+ case _LOWER:
+ oled_write_ln_P(PSTR("Lower"), false);
+ break;
+ case _RAISE:
+ oled_write_ln_P(PSTR("Raise"), false);
+ break;
+ case _ADJUST:
+ oled_write_ln_P(PSTR("Adjust"), false);
+ break;
+ default:
+ oled_write_ln_P(PSTR("Unknown"), false);
+ }
+}
+
+void render_keylock_status(led_t led_state) {
+ oled_write_P(PSTR("Lock: "), false);
+ oled_write_P(PSTR("123"), led_state.num_lock);
+ oled_write_P(PSTR(" "), false);
+ oled_write_ln_P(led_state.caps_lock?PSTR("ABC"):PSTR("abc"), led_state.caps_lock);
+}
+
+void render_mod_status(uint8_t modifiers) {
+ oled_write_P(PSTR("Mods: "), false);
+ oled_write_P(PSTR("S"), (modifiers & MOD_MASK_SHIFT));
+ oled_write_P(PSTR(" "), false);
+ oled_write_P(PSTR("C"), (modifiers & MOD_MASK_CTRL));
+ oled_write_P(PSTR(" "), false);
+ oled_write_P(PSTR("A"), (modifiers & MOD_MASK_ALT));
+ oled_write_P(PSTR(" "), false);
+ oled_write_ln_P(PSTR("W"), (modifiers & MOD_MASK_GUI));
+}
+
+static void render_status(void) {
+ // Host Keyboard Layer Status
+ render_default_layer_state();
+ render_layer_state();
+ render_keylock_status(host_keyboard_led_state());
+ render_mod_status(get_mods() | get_oneshot_mods());
+#ifdef RGBLIGHT_ENABLE
+ render_rgb_state();
+#endif // RGBLIGHT_ENABLE
+}
+
+static void render_logo(void) {
+ static const char PROGMEM logo[] = {
+ 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, 0xfc, 0xfc, 0x1c, 0x1c, 0x38, 0xf8,
+ 0xf0, 0xe0, 0x80, 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, 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, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00,
+ 0x03, 0x1f, 0x7f, 0xfe, 0xf0, 0xc0, 0x80, 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, 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, 0x80, 0x80, 0x87, 0x9f, 0x3f, 0xfc, 0xf0,
+ 0xe0, 0xc0, 0x00, 0x01, 0x07, 0x0f, 0x3f, 0x3f, 0x7f, 0xfe, 0xfe, 0xee, 0xce, 0xfe, 0x8e, 0x0e,
+ 0xfe, 0x8e, 0x0e, 0xfe, 0x8e, 0x0e, 0xfe, 0xfe, 0x7e, 0xee, 0xdc, 0x9c, 0x38, 0x78, 0xf0, 0xe0,
+ 0xc0, 0x80, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf7, 0xe3, 0xc3, 0xc7, 0x8f, 0x0e, 0x1f,
+ 0x1f, 0x3f, 0x7f, 0x7f, 0xfe, 0xfc, 0xf8, 0xf8, 0xf8, 0xf0, 0xf0, 0xf0, 0xe0, 0xe0, 0xe0, 0xe0,
+ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe7, 0xff, 0xdb, 0xff, 0xff, 0x00, 0x00, 0x00, 0x03,
+ 0x1f, 0xff, 0xfe, 0x60, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xfc, 0xff, 0xff, 0x8f, 0x8f, 0x0f, 0x0f, 0x0f, 0x0f,
+ 0x0e, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0f, 0x0f, 0x0c, 0x08, 0x0f, 0x0c, 0x08,
+ 0x0f, 0x0c, 0x08, 0x0f, 0x0c, 0x08, 0x0f, 0x0f, 0x0e, 0x07, 0x03, 0x01, 0x80, 0xc0, 0xe0, 0x40,
+ 0x01, 0x03, 0x07, 0x1f, 0xfe, 0xfc, 0xf0, 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, 0xc0,
+ 0xe0, 0xe0, 0xe0, 0xe0, 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, 0x01, 0xf3, 0xf3, 0xf3, 0x03, 0x03, 0x03, 0x03,
+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xf3, 0xff, 0xff, 0x9f, 0x8f, 0x80, 0x80, 0xc0, 0xf0, 0xfc,
+ 0x7e, 0x1e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0xce, 0xce, 0xef, 0x67, 0x67, 0x6f, 0x6f, 0xef, 0xee,
+ 0xce, 0x8e, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xe0, 0x60,
+ 0x20, 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, 0xfc, 0xff,
+ 0xbf, 0x83, 0x8f, 0xff, 0xff, 0xf0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0xfe,
+ 0x1c, 0x0c, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xf8, 0xfc, 0x1c, 0x0e, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x04, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x0c, 0x06, 0x06, 0x06,
+ 0x0e, 0xfe, 0xfc, 0xf8, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x33, 0x33, 0x33, 0x33, 0x33, 0x31,
+ 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x30, 0x30, 0x30, 0x78, 0xff,
+ 0xef, 0xc7, 0x80, 0x00, 0x00, 0x00, 0xe0, 0xf8, 0xfc, 0x7e, 0x3f, 0x1f, 0x1b, 0x39, 0x70, 0xf0,
+ 0xe0, 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, 0x30, 0x3f, 0x3f, 0x1f, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x07, 0x3f, 0x3f, 0x3c, 0x20, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x1f, 0x1c, 0x38, 0x30,
+ 0x30, 0x30, 0x30, 0x38, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x3f, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x38, 0x30, 0x30, 0x30, 0x30, 0x30, 0x38, 0x3f,
+ 0x1f, 0x1f, 0x0f, 0x00, 0x00, 0x00, 0x07, 0x1f, 0x1f, 0x3c, 0x30, 0x30, 0x30, 0x30, 0x3c, 0x1f,
+ 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+
+ oled_write_raw_P(logo, 1024);
+}
+
+void oled_task_user(void) {
+ if (is_keyboard_master()) {
+ render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
+ }
+ else {
+ render_logo();
+ }
+}
+#endif
diff --git a/keyboards/arch_36/keymaps/obosob/config.h b/keyboards/arch_36/keymaps/obosob/config.h
new file mode 100644
index 0000000000..02be7b511a
--- /dev/null
+++ b/keyboards/arch_36/keymaps/obosob/config.h
@@ -0,0 +1,31 @@
+/* Copyright 2020 Obosob <obosob@riseup.net>
+ *
+ * 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
+
+#ifdef OLED_DRIVER_ENABLE
+ #define OLED_DISPLAY_128X64
+#endif
+
+#ifdef RGBLIGHT_ENABLE
+// #define RGBLIGHT_ANIMATIONS
+ #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+ #define RGBLIGHT_HUE_STEP 8
+ #define RGBLIGHT_SAT_STEP 8
+ #define RGBLIGHT_VAL_STEP 8
+#endif
+
+#define PERMISSIVE_HOLD
diff --git a/keyboards/arch_36/keymaps/obosob/keymap.c b/keyboards/arch_36/keymaps/obosob/keymap.c
new file mode 100644
index 0000000000..a938314ac8
--- /dev/null
+++ b/keyboards/arch_36/keymaps/obosob/keymap.c
@@ -0,0 +1,818 @@
+/* Copyright 2020 Obosob <obosob@riseup.net>
+ *
+ * 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
+
+enum layer_names {
+ _QWERTY,
+ _COLMAK,
+ _NUM,
+ _NAV,
+ _SYM,
+ _MISC,
+ _ADJUST
+};
+
+#define MY_SPC LT(_NAV, KC_SPC)
+#define MY_ENT LT(_NUM, KC_ENT)
+#define MY_BSPC SFT_T(KC_BSPC)
+#define MY_DEL SFT_T(KC_DEL)
+#define MY_ESC CTL_T(KC_ESC)
+#define MY_TAB RALT_T(KC_TAB)
+
+#define KC_NUPI S(KC_NUBS)
+
+#define OS_SFT OSM(MOD_LSFT)
+#define OS_CTL OSM(MOD_LCTL)
+#define OS_GUI OSM(MOD_LGUI)
+#define OS_ALT OSM(MOD_LALT)
+
+enum keycodes {
+ QWERTY = SAFE_RANGE,
+ COLEMAK,
+// layers
+ SYM,
+ MISC,
+// special keys
+ ENC_PRS,
+ DOTSPC,
+ COMMSPC,
+ EXLMSPC,
+ QUESSPC,
+ DQUOT,
+ QUOT,
+ PRN,
+ BRC,
+ CBR,
+ LTGT,
+ LTGTC,
+ GRV,
+ A_TAB,
+ AS_TAB,
+ WOKE,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+// Qwerty ________ ________
+// ________| E |________ ________| I |________
+// | W | | R |________ ________| U | | O |
+// ________| |________| | T | | Y | |________| |________
+// | Q |________| D |________| | | |________| K |________| P |
+// | | S | | F |________| |________| J | | L | |
+// |________| |________| | G | | H | |________| |________|
+// | A |________| C |________| | | |________| SYM |________| : |
+// | | X | | V |________| |________| M | | MISC | ; |
+// |________| |________| | B | | N | |________| |________|
+// | Z |________| |________| | | |________| |________| ? |
+// | | | Esc |________| |________| Tab | | / |
+// |________| | Ctrl | Enter |________ ________| Space | Alt | |________|
+// |________| NUM | Del | | BkSp | NAV |________|
+// ________| Shift | | Shift |________
+// |________| |________|
+
+ [_QWERTY] = LAYOUT_split_3x5_3(
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, SYM, MISC, KC_SLSH,
+ MY_ESC, MY_ENT, MY_DEL, MY_BSPC, MY_SPC, MY_TAB
+ ),
+// Colemak (Mod-DH) ________ ________
+// ________| F |________ ________| U |________
+// | W | | P |________ ________| L | | Y |
+// ________| |________| | B | | J | |________| |________
+// | Q |________| S |________| | | |________| E |________| : |
+// | | R | | T |________| |________| N | | I | ; |
+// |________| |________| | G | | K | |________| |________|
+// | A |________| C |________| | | |________| SYM |________| O |
+// | | X | | D |________| |________| H | | MISC | |
+// |________| |________| | V | | M | |________| |________|
+// | Z |________| |________| | | |________| |________| ? |
+// | | | Esc |________| |________| Tab | | / |
+// |________| | Ctrl | Enter |________ ________| Space | Alt | |________|
+// |________| NUM | Del | | BkSp | NAV |________|
+// ________| Shift | | Shift |________
+// |________| |________|
+
+ [_COLMAK] = LAYOUT_split_3x5_3(
+ KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN,
+ KC_A, KC_R, KC_S, KC_T, KC_G, KC_K, KC_N, KC_E, KC_I, KC_O,
+ KC_Z, KC_X, KC_C, KC_D, KC_V, KC_M, KC_H, SYM, MISC, KC_SLSH,
+ MY_ESC, MY_ENT, MY_DEL, MY_BSPC, MY_SPC, MY_TAB
+ ),
+// Number ________ ________
+// ________| F3 |________ ________| 8 |________
+// | F2 | | F4 |________ ________| 7 | | 9 |
+// ________| |________| | | | + | |________| |________
+// | F1 |________| F7 |________| | | |________| 5 |________| / |
+// | | F6 | | F8 |________| |________| 4 | | 6 | |
+// |________| |________| | | | 0 | |________| |________|
+// | F5 |________| F11 |________| | | |________| 2 |________| . |
+// | | F10 | | F12 |________| |________| 1 | | 3 | |
+// |________| |________| | | | - | |________| |________|
+// | F9 |________| |________| | | |________| |________| * |
+// | | | |________| |________| | | |
+// |________| | | |________ ________| ADJUST | | |________|
+// |________| **** | | | | |________|
+// |________| | | |________|
+// |________| |________|
+ [_NUM] = LAYOUT_split_3x5_3(
+ KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, KC_PLUS, KC_7, KC_8, KC_9, KC_SLSH,
+ KC_F5, KC_F6, KC_F7, KC_F8, XXXXXXX, KC_COMM, KC_4, KC_5, KC_6, KC_DOT,
+ KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, KC_MINS, KC_1, KC_2, KC_3, KC_ASTR,
+ XXXXXXX, _______, XXXXXXX, _______, _______, KC_0
+ ),
+// Navigation ________ ________
+// ________| OS |________ ________| PgUp |________
+// | OS | Ctrl | OS |________ ________| PgDn | | End |
+// ________| Alt |________| Shift | AltTab | | Home | |________| |________
+// | OS |________| Ctrl |________| | | |________| Up |________| PrtScr |
+// | Super | Alt | | Shift |________| |________| Down | | Right | |
+// |________| |________| | | | Left | |________| |________|
+// | Super |________| |________| | | |________| |________| Insert |
+// | | | | |________| |________| | | | |
+// |________| |________| | | | | |________| |________|
+// | |________| |________| | | |________| |________| |
+// | | | |________| |________| | | |
+// |________| | | ADJUST |________ ________| | | |________|
+// |________| | | | | **** |________|
+// |________| | | |________|
+// |________| |________|
+ [_NAV] = LAYOUT_split_3x5_3(
+ OS_GUI, OS_ALT, OS_CTL, OS_SFT, XXXXXXX, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_PSCR,
+ KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_INS,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, AS_TAB, A_TAB, XXXXXXX, XXXXXXX,
+ _______, _______, _______, XXXXXXX, _______, XXXXXXX
+ ),
+// Symbol ________ ________
+// ________| { |________ ________| |________
+// | > | | } |________ ________| | | |
+// ________| |________| | ` | | | |________| |________
+// | < |________| ( |________| | | |________| |________| | |
+// | | £ | | ) |________| |________| - | | & | |
+// |________| |________| | ^ | | _ | |________| |________|
+// | * |________| [ |________| | | |________| |________| ~ |
+// | | $ | | ] |________| |________| + | **** | % | |
+// |________| |________| | @ | | = | |________| |________|
+// | \ |________| |________| | | |________| |________| # |
+// | | | ? |________| |________| ! | | |
+// |________| | | ' |________ ________| . | | |________|
+// |________| | " | | , | |________|
+// |________| | | |________|
+// |________| |________|
+//
+ [_SYM] = LAYOUT_split_3x5_3(
+ KC_LT, KC_GT, KC_LCBR, KC_RCBR, KC_GRV, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_NUPI,
+ KC_ASTR, KC_HASH, KC_LPRN, KC_RPRN, KC_CIRC, KC_UNDS, KC_MINS, XXXXXXX, KC_AMPR, KC_PIPE,
+ KC_NUBS, KC_DLR, KC_LBRC, KC_RBRC, KC_DQUO, KC_EQL, KC_PLUS, _______, KC_PERC, KC_NUHS,
+ KC_QUES, KC_QUOT, KC_AT, KC_COMM, KC_DOT, KC_EXLM
+ ),
+// Miscellaneous ________ ________
+// ________| {|} |________ ________| |________
+// | </|> | | {|} |________ ________| | | |
+// ________| |________| | | | | |________| |________
+// | <|> |________| (|) |________| | | |________| |________| |
+// | | | | (|) |________| |________| | | | |
+// |________| |________| | | | | |________| |________|
+// | |________| [|] |________| | | |________| |________| |
+// | | | | [|] |________| |________| | | | |
+// |________| |________| | | | | |________| **** |________|
+// | |________| |________| | | |________| |________| |
+// | | | ?_^ |________| |________| !_^ | | |
+// |________| | | '|' |________ ________| ._^ | | |________|
+// |________| | "|" | | ,_ | |________|
+// |________| | | |________|
+// |________| |________|
+//
+ [_MISC] = LAYOUT_split_3x5_3(
+ LTGT, LTGTC, CBR, CBR, GRV, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, PRN, PRN, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, BRC, BRC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX,
+ QUESSPC, QUOT, DQUOT, COMMSPC, DOTSPC, EXLMSPC
+ ),
+// Adjust ________ ________
+// ________| RESET |________ ________| |________
+// | | EEPROM | RESET |________ ________| | | |
+// ________| |________| | | | | |________| |________
+// | |________| RGB |________| | | |________| |________| |
+// | | RGB | Hue+ | RGB |________| |________| | | | |
+// |________| Toggle |________| Sat+ | RGB | | | |________| |________|
+// | |________| RGB |________| Bri+ | | |________| |________| |
+// | | RGB | Hue- | RGB |________| |________| | | | |
+// |________| Mode |________| Sat- | RGB | | | |________| |________|
+// | |________| |________| Bri- | | |________| |________| |
+// | | | |________| |________| | | |
+// |________| | | |________ ________| | | |________|
+// |________| **** | | | | **** |________|
+// |________| | | |________|
+// |________| |________|
+ [_ADJUST] = LAYOUT_split_3x5_3(
+ XXXXXXX, WOKE, EEP_RST, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, QWERTY, COLEMAK, XXXXXXX, XXXXXXX,
+ XXXXXXX, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
+ ),
+};
+
+bool alt_tabbing = false;
+bool woke_mode = false;
+uint16_t rgb_edit_timer = 0;
+uint16_t last_rgb_char = 0;
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case QWERTY:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_QWERTY);
+ }
+ return false;
+ case COLEMAK:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_COLMAK);
+ }
+ return false;
+ case SYM:
+ if (record->event.pressed) {
+ layer_on(_SYM);
+ } else {
+ layer_off(_SYM);
+ }
+ return false;
+ case MY_SPC:
+ if (!record->event.pressed) {
+ if(alt_tabbing) {
+ unregister_code(KC_LALT);
+ alt_tabbing = false;
+ }
+ }
+ return true;
+ case MISC:
+ if (record->event.pressed) {
+ layer_on(_MISC);
+ } else {
+ layer_off(_MISC);
+ }
+ return false;
+ case DOTSPC:
+ if (record->event.pressed) {
+ tap_code(KC_DOT);
+ tap_code(KC_SPC);
+ set_oneshot_mods(MOD_LSFT);
+ }
+ return false;
+ case COMMSPC:
+ if (record->event.pressed) {
+ tap_code(KC_COMM);
+ tap_code(KC_SPC);
+ }
+ return false;
+ case EXLMSPC:
+ if (record->event.pressed) {
+ tap_code16(KC_EXLM);
+ tap_code(KC_SPC);
+ set_oneshot_mods(MOD_LSFT);
+ }
+ return false;
+ case QUESSPC:
+ if (record->event.pressed) {
+ tap_code16(KC_QUES);
+ tap_code(KC_SPC);
+ set_oneshot_mods(MOD_LSFT);
+ }
+ return false;
+ case QUOT:
+ if (record->event.pressed) {
+ tap_code(KC_QUOT);
+ tap_code(KC_QUOT);
+ tap_code(KC_LEFT);
+ }
+ return false;
+ case DQUOT:
+ if (record->event.pressed) {
+ tap_code16(KC_DQUO);
+ tap_code16(KC_DQUO);
+ tap_code(KC_LEFT);
+ }
+ return false;
+ case PRN:
+ if (record->event.pressed) {
+ tap_code16(KC_LPRN);
+ tap_code16(KC_RPRN);
+ tap_code(KC_LEFT);
+ }
+ return false;
+ case BRC:
+ if (record->event.pressed) {
+ tap_code(KC_LBRC);
+ tap_code(KC_RBRC);
+ tap_code(KC_LEFT);
+ }
+ return false;
+ case CBR:
+ if (record->event.pressed) {
+ tap_code16(KC_LCBR);
+ tap_code16(KC_RCBR);
+ tap_code(KC_LEFT);
+ }
+ return false;
+ case LTGT:
+ if (record->event.pressed) {
+ tap_code16(KC_LT);
+ tap_code16(KC_GT);
+ tap_code(KC_LEFT);
+ }
+ return false;
+ case LTGTC:
+ if (record->event.pressed) {
+ tap_code16(KC_LT);
+ tap_code(KC_SLSH);
+ tap_code16(KC_GT);
+ tap_code(KC_LEFT);
+ }
+ return false;
+ case GRV:
+ if (record->event.pressed) {
+ tap_code(KC_GRV);
+ tap_code(KC_GRV);
+ tap_code(KC_LEFT);
+ }
+ return false;
+ case AS_TAB:
+ if (record->event.pressed) {
+ register_code(KC_LSFT);
+ } else {
+ unregister_code(KC_LSFT);
+ }
+ case A_TAB:
+ if (record->event.pressed) {
+ register_code(KC_LALT);
+ register_code(KC_TAB);
+ alt_tabbing = true;
+ } else {
+ unregister_code(KC_TAB);
+ }
+ return false;
+ case WOKE:
+ if (!record->event.pressed) {
+ woke_mode = !woke_mode;
+ }
+ return false;
+ case RGB_TOG:
+ case RGB_MOD:
+ case RGB_HUD:
+ case RGB_HUI:
+ case RGB_SAD:
+ case RGB_SAI:
+ case RGB_VAI:
+ case RGB_VAD:
+ rgb_edit_timer = timer_read();
+ last_rgb_char = keycode;