How to build the Callan58

If I were to do this again, I would use a nice!nano instead of the Pro Micro for wireless functionality

Callan58 split keyboard Callan58 split keyboard different angle
  1. Buy the parts
  2. Solder the switchs or the hotswap sockets, diodes and controller onto the keyboard pcb here is a vod of this being done
  3. Add the other plates to the pcb and install switches and keycaps
  4. Install QMK and follow instructions to learn how to flash the controllers
  5. Enjoy

Here is the map I use on mine

                        #include QMK_KEYBOARD_H

                        enum layer_number {
                          _QWERTY = 0,
                          _LOWER,
                          _RAISE,
                          _ADJUST,
                        };
                        
                        const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
                        
                        /* QWERTY
                         * ,-----------------------------------------.                    ,-----------------------------------------.
                         * | ESC  |   1  |   2  |   3  |   4  |   5  |                    |   6  |   7  |   8  |   9  |   0  |  =   |
                         * |------+------+------+------+------+------|                    |------+------+------+------+------+------|
                         * | Tab  |   Q  |   W  |   E  |   R  |   T  |                    |   Y  |   U  |   I  |   O  |   P  |  -   |
                         * |------+------+------+------+------+------|                    |------+------+------+------+------+------|
                         * |RAISE |   A  |   S  |   D  |   F  |   G  |-------.    ,-------|   H  |   J  |   K  |   L  |   ;  |  '   |
                         * |------+------+------+------+------+------|   [   |    |    ]  |------+------+------+------+------+------|
                         * |LShift|   Z  |   X  |   C  |   V  |   B  |-------|    |-------|   N  |   M  |   ,  |   .  |   /  |RShift|
                         * `-----------------------------------------/       /     \      \-----------------------------------------'
                         *                   | LCTRL| LGUI |LAlt  | /Space  /       \Space \  |BackSP| |RGUI| RAISE|
                         *                   |      |      |      |/       /         \      \ |      |      |      |
                         *                   `----------------------------'           '------''--------------------'
                         */
                        
                         [_QWERTY] = LAYOUT(
                          KC_ESC,   KC_1,   KC_2,    KC_3,    KC_4,    KC_5,                     KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_EQUAL,
                          KC_TAB,   KC_Q,   KC_W,    KC_E,    KC_R,    KC_T,                     KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_MINS,
                          MO(_RAISE), KC_A,   KC_S,    KC_D,    KC_F,    KC_G,                     KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT,
                          KC_LSFT,  KC_Z,   KC_X,    KC_C,    KC_V,    KC_B, KC_LBRC,  KC_RBRC,  KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH,  KC_RSFT,
                                                KC_LCTRL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_BSPC, KC_RGUI, MO(_RAISE)
                        ),
                        /* LOWER
                         * ,-----------------------------------------.                    ,-----------------------------------------.
                         * |      |      |      |      |      |      |                    |      |      |      |      |      |      |
                         * |------+------+------+------+------+------|                    |------+------+------+------+------+------|
                         * |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |                    |  F7  |  F8  |  F9  | F10  | F11  | F12  |
                         * |------+------+------+------+------+------|                    |------+------+------+------+------+------|
                         * |   `  |   !  |   @  |   #  |   $  |   %  |-------.    ,-------|   ^  |   &  |   *  |   (  |   )  |   -  |
                         * |------+------+------+------+------+------|   [   |    |    ]  |------+------+------+------+------+------|
                         * |      |      |      |      |      |      |-------|    |-------|      |   _  |   +  |   {  |   }  |   |  |
                         * `-----------------------------------------/       /     \      \-----------------------------------------'
                         *                   | LAlt | LGUI |LOWER | /Space  /       \Enter \  |RAISE |BackSP| RGUI |
                         *                   |      |      |      |/       /         \      \ |      |      |      |
                         *                   `----------------------------'           '------''--------------------'
                         */
                        [_LOWER] = LAYOUT(
                          XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, XXXXXXX, XXXXXXX,XXXXXXX, XXXXXXX, XXXXXXX,
                          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_GRV, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC,                   KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TILD,
                          XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
                                                     XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,  XXXXXXX, XXXXXXX, XXXXXXX
                        ),
                        /* RAISE
                         * ,-----------------------------------------.                    ,-----------------------------------------.
                         * |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |                    |  F7  |  F8  |  F9  | F10  | F11  | F12  |
                         * |------+------+------+------+------+------|                    |------+------+------+------+------+------|
                         * |  `   |      |      |      |      |      |                    |      |      |      |      |      |  `   |
                         * |------+------+------+------+------+------|                    |------+------+------+------+------+------|
                         * |      | Up   |      |      |      |pageup|-------.    ,-------|PG DN |      |      |      | Up   |      |
                         * |------+------+------+------+------+------|   \   |    |    \  |------+------+------+------+------+------|
                         * | Left | Down | Right|  F10 |  F11 |  F12 |-------|    |-------|      |      |      | Left | Down | Right|
                         * `-----------------------------------------/       /     \      \-----------------------------------------'
                         *                   | LCTRL| LGUI |BackSP| /Enter  /       \Enter \  |BackSP| |RGUI| RAISE|
                         *                   |      |      |      |/       /         \      \ |      |      |      |
                         *                   `----------------------------'           '------''--------------------'
                         */
                        
                        [_RAISE] = 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,
                           KC_GRV, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                       XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,  KC_GRV,
                          XXXXXXX,   KC_UP, XXXXXXX, XXXXXXX, XXXXXXX, KC_PAGE_UP,                       KC_PAGE_DOWN, XXXXXXX, XXXXXXX, XXXXXXX,   KC_UP, XXXXXXX,
                          KC_LEFT, KC_DOWN, KC_RGHT,   KC_F10,  KC_F11,  KC_F12,   KC_BSLS, KC_BSLS,  XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT,
                                                KC_LCTRL, KC_LGUI, KC_BSPC, KC_ENT, KC_ENT, KC_BSPC, KC_RGUI, MO(_RAISE)
                        ),
                        /* ADJUST
                         * ,-----------------------------------------.                    ,-----------------------------------------.
                         * |      |      |      |      |      |      |                    |      |      |      |      |      |      |
                         * |------+------+------+------+------+------|                    |------+------+------+------+------+------|
                         * |      |      |      |      |      |      |                    |      |      |      |      |      |      |
                         * |------+------+------+------+------+------|                    |------+------+------+------+------+------|
                         * |      |      |      |      |      |      |-------.    ,-------|      |      |RGB ON| HUE+ | SAT+ | VAL+ |
                         * |------+------+------+------+------+------|       |    |       |------+------+------+------+------+------|
                         * |      |      |      |      |      |      |-------|    |-------|      |      | MODE | HUE- | SAT- | VAL- |
                         * `-----------------------------------------/       /     \      \-----------------------------------------'
                         *                   | LAlt | LGUI |LOWER | /Space  /       \Enter \  |RAISE |BackSP| RGUI |
                         *                   |      |      |      |/       /         \      \ |      |      |      |
                         *                   `----------------------------'           '------''--------------------'
                         */
                          [_ADJUST] = LAYOUT(
                          XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
                          XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
                          XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
                          XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
                                                     XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,  XXXXXXX, XXXXXXX, XXXXXXX
                          )
                        };
                        
                        layer_state_t layer_state_set_user(layer_state_t state) {
                          return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
                        }
                        
                        //SSD1306 OLED update loop, make sure to enable OLED_ENABLE=yes in rules.mk
                        #ifdef OLED_ENABLE
                        
                        oled_rotation_t oled_init_user(oled_rotation_t rotation) {
                          if (!is_keyboard_master())
                            return OLED_ROTATION_180;  // flips the display 180 degrees if offhand
                          return rotation;
                        }
                        
                        // When you 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);
                        
                        bool oled_task_user(void) {
                          if (is_keyboard_master()) {
                            // If you want to change the display of OLED, you need to change here
                            oled_write_ln(read_layer_state(), false);
                            oled_write_ln(read_keylog(), false);
                            oled_write_ln(read_keylogs(), false);
                            //oled_write_ln(read_mode_icon(keymap_config.swap_lalt_lgui), false);
                            //oled_write_ln(read_host_led_state(), false);
                            //oled_write_ln(read_timelog(), false);
                          } else {
                            oled_write(read_logo(), false);
                          }
                            return false;
                        }
                        #endif // OLED_ENABLE
                        
                        bool process_record_user(uint16_t keycode, keyrecord_t *record) {
                          if (record->event.pressed) {
                        #ifdef OLED_ENABLE
                            set_keylog(keycode, record);
                        #endif
                            // set_timelog();
                          }
                          return true;
                        }