Skip to content

Commit

Permalink
[Keyboard] Add minidivide (qmk#19870)
Browse files Browse the repository at this point in the history
Co-authored-by: jack <[email protected]>
Co-authored-by: Ryan <[email protected]>
Co-authored-by: Joel Challis <[email protected]>
Co-authored-by: Drashna Jaelre <[email protected]>
  • Loading branch information
5 people authored and autoferrit committed Dec 6, 2023
1 parent da9798f commit 4064e66
Show file tree
Hide file tree
Showing 8 changed files with 343 additions and 0 deletions.
105 changes: 105 additions & 0 deletions keyboards/takashicompany/minidivide/info.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
{
"manufacturer": "takashicompany",
"keyboard_name": "miniDivide",
"maintainer": "takashicompany",
"build": {
"lto": true
},
"development_board": "promicro",
"diode_direction": "COL2ROW",
"features": {
"bootmagic": true,
"command": false,
"console": false,
"extrakey": true,
"mousekey": true,
"nkro": true,
"oled": true,
"rgblight": true
},
"matrix_pins": {
"cols": ["D4", "C6", "D7", "E6", "B4"],
"rows": ["F4", "F5", "F6", "F7"]
},
"pin_compatible": "promicro",
"rgblight": {
"animations": {
"alternating": true,
"breathing": true,
"christmas": true,
"knight": true,
"rainbow_mood": true,
"rainbow_swirl": true,
"rgb_test": true,
"snake": true,
"static_gradient": true,
"twinkle": true
},
"led_count": 10,
"sleep": true,
"split_count": [5, 5]
},
"split": {
"enabled": true,
"matrix_pins": {
"right": {
"cols": ["B4", "E6", "D7", "C6", "D4"],
"rows": ["F4", "F5", "F6", "F7"]
}
},
"soft_serial_pin": "D2"
},
"url": "",
"usb": {
"device_version": "0.0.1",
"pid": "0x0037",
"vid": "0x7463"
},
"ws2812": {
"pin": "D3"
},
"layouts": {
"LAYOUT": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0.42},
{"matrix": [0, 1], "x": 0.84, "y": 0.21},
{"matrix": [0, 2], "x": 1.68, "y": 0},
{"matrix": [0, 3], "x": 2.52, "y": 0.21},
{"matrix": [0, 4], "x": 3.36, "y": 0.42},
{"matrix": [4, 0], "x": 6.3, "y": 0.42},
{"matrix": [4, 1], "x": 7.14, "y": 0.21},
{"matrix": [4, 2], "x": 7.98, "y": 0},
{"matrix": [4, 3], "x": 8.82, "y": 0.21},
{"matrix": [4, 4], "x": 9.66, "y": 0.42},
{"matrix": [1, 0], "x": 0, "y": 1.26},
{"matrix": [1, 1], "x": 0.84, "y": 1.05},
{"matrix": [1, 2], "x": 1.68, "y": 0.84},
{"matrix": [1, 3], "x": 2.52, "y": 1.05},
{"matrix": [1, 4], "x": 3.36, "y": 1.26},
{"matrix": [5, 0], "x": 6.3, "y": 1.26},
{"matrix": [5, 1], "x": 7.14, "y": 1.05},
{"matrix": [5, 2], "x": 7.98, "y": 0.84},
{"matrix": [5, 3], "x": 8.82, "y": 1.05},
{"matrix": [5, 4], "x": 9.66, "y": 1.26},
{"matrix": [2, 0], "x": 0, "y": 2.1},
{"matrix": [2, 1], "x": 0.84, "y": 1.89},
{"matrix": [2, 2], "x": 1.68, "y": 1.68},
{"matrix": [2, 3], "x": 2.52, "y": 1.89},
{"matrix": [2, 4], "x": 3.36, "y": 2.1},
{"matrix": [6, 0], "x": 6.3, "y": 2.1},
{"matrix": [6, 1], "x": 7.14, "y": 1.89},
{"matrix": [6, 2], "x": 7.98, "y": 1.68},
{"matrix": [6, 3], "x": 8.82, "y": 1.89},
{"matrix": [6, 4], "x": 9.66, "y": 2.1},
{"matrix": [3, 1], "x": 1.68, "y": 3.15},
{"matrix": [3, 2], "x": 2.52, "y": 3.15},
{"matrix": [3, 3], "x": 3.36, "y": 3.15},
{"matrix": [3, 4], "x": 4.2, "y": 3.15},
{"matrix": [7, 0], "x": 5.46, "y": 3.15},
{"matrix": [7, 1], "x": 6.3, "y": 3.15},
{"matrix": [7, 2], "x": 7.14, "y": 3.15},
{"matrix": [7, 3], "x": 7.98, "y": 3.15}
]
}
}
}
70 changes: 70 additions & 0 deletions keyboards/takashicompany/minidivide/keymaps/default/keymap.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
// Copyright 2023 takashicompany (@takashicompany)
// SPDX-License-Identifier: GPL-2.0-or-later

#include QMK_KEYBOARD_H

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {

[0] = LAYOUT(
LT(7, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
KC_A, KC_S, LT(6, KC_D), KC_F, KC_G, KC_H, KC_J, LT(6, KC_K), KC_L, KC_ENT,
LSFT_T(KC_Z), LGUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LCTL_T(KC_DOT), KC_BSPC,
KC_LCTL, KC_LGUI, LALT_T(KC_LNG2), LSFT_T(KC_TAB), LT(2, KC_SPC), LT(1, KC_LNG1), KC_RGUI, KC_RCTL
),

[1] = LAYOUT(
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
LCTL_T(KC_EQL), KC_LBRC, KC_SLSH, KC_MINS, KC_INT1, KC_SCLN, KC_QUOT, KC_RBRC, KC_NUHS, KC_INT3,
LSFT_T(KC_PLUS), KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_INT1), KC_COLN, KC_DQUO, KC_RCBR, LSFT(KC_NUHS), LSFT(KC_INT3),
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),

[2] = LAYOUT(
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, LGUI(KC_INT3),
KC_PLUS, KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_INT1), KC_COLN, KC_DQUO, KC_RCBR, LSFT(KC_NUHS), LSFT(KC_INT3),
KC_LSFT, KC_LGUI, KC_LALT, KC_LNG2, KC_LSFT, KC_SPC, KC_LNG1, KC_TRNS, KC_TRNS, KC_DEL,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),

[3] = LAYOUT(
LT(7, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
KC_A, KC_S, LT(6, KC_D), KC_F, KC_G, KC_H, KC_J, LT(6, KC_K), KC_L, KC_ENT,
LSFT_T(KC_Z), LGUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LCTL_T(KC_DOT), KC_BSPC,
KC_LCTL, KC_LGUI, LALT_T(KC_LNG2), LSFT_T(KC_TAB), LT(5, KC_SPC), LT(4, KC_LNG1), KC_RGUI, KC_RCTL
),

[4] = LAYOUT(
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
KC_CIRC, KC_AT, KC_SLSH, KC_MINS, KC_UNDS, KC_SCLN, KC_COLN, KC_LBRC, KC_RBRC, KC_INT3,
LT(5, KC_TILD), KC_GRV, KC_QUES, KC_EQL, KC_UNDS, KC_PLUS, KC_ASTR, KC_LCBR, KC_RCBR, KC_PIPE,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),

[5] = LAYOUT(
KC_EXLM, KC_DQUO, KC_HASH, KC_DLR, KC_PERC, KC_AMPR, KC_QUOT, KC_LPRN, KC_RPRN, KC_BSLS,
KC_TILD, KC_GRV, KC_QUES, KC_EQL, KC_UNDS, KC_PLUS, KC_ASTR, KC_LCBR, KC_RCBR, KC_PIPE,
KC_LSFT, KC_LGUI, KC_LALT, KC_LNG2, KC_LSFT, KC_SPC, KC_LNG1, KC_TRNS, KC_TRNS, KC_DEL,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),

[6] = LAYOUT(
KC_ESC, KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO,
KC_LCTL, KC_TRNS, KC_QUES, KC_EXLM, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO,
KC_LSFT, KC_LGUI, KC_LALT, KC_LNG2, KC_TRNS, KC_NO, KC_LNG1, KC_NO, KC_NO, KC_DEL,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),

[7] = LAYOUT(
KC_NO, KC_TAB, KC_NO, KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
KC_NO, KC_NO, KC_NO, KC_NO, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
KC_LSFT, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, MO(8), MO(9),
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),

[8] = LAYOUT(
RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_NO, KC_NO, KC_NO, DF(0), DF(3),
RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
RGB_M_K, RGB_M_X, RGB_M_G, KC_NO, KC_NO, QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};
5 changes: 5 additions & 0 deletions keyboards/takashicompany/minidivide/keymaps/via/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
// Copyright 2022 takashicompany (@takashicompany)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once

#define DYNAMIC_KEYMAP_LAYER_COUNT 10
70 changes: 70 additions & 0 deletions keyboards/takashicompany/minidivide/keymaps/via/keymap.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
// Copyright 2023 takashicompany (@takashicompany)
// SPDX-License-Identifier: GPL-2.0-or-later

#include QMK_KEYBOARD_H

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {

[0] = LAYOUT(
LT(7, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
KC_A, KC_S, LT(6, KC_D), KC_F, KC_G, KC_H, KC_J, LT(6, KC_K), KC_L, KC_ENT,
LSFT_T(KC_Z), LGUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LCTL_T(KC_DOT), KC_BSPC,
KC_LCTL, KC_LGUI, LALT_T(KC_LNG2), LSFT_T(KC_TAB), LT(2, KC_SPC), LT(1, KC_LNG1), KC_RGUI, KC_RCTL
),

[1] = LAYOUT(
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
LCTL_T(KC_EQL), KC_LBRC, KC_SLSH, KC_MINS, KC_INT1, KC_SCLN, KC_QUOT, KC_RBRC, KC_NUHS, KC_INT3,
LSFT_T(KC_PLUS), KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_INT1), KC_COLN, KC_DQUO, KC_RCBR, LSFT(KC_NUHS), LSFT(KC_INT3),
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),

[2] = LAYOUT(
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, LGUI(KC_INT3),
KC_PLUS, KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_INT1), KC_COLN, KC_DQUO, KC_RCBR, LSFT(KC_NUHS), LSFT(KC_INT3),
KC_LSFT, KC_LGUI, KC_LALT, KC_LNG2, KC_LSFT, KC_SPC, KC_LNG1, KC_TRNS, KC_TRNS, KC_DEL,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),

[3] = LAYOUT(
LT(7, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
KC_A, KC_S, LT(6, KC_D), KC_F, KC_G, KC_H, KC_J, LT(6, KC_K), KC_L, KC_ENT,
LSFT_T(KC_Z), LGUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LCTL_T(KC_DOT), KC_BSPC,
KC_LCTL, KC_LGUI, LALT_T(KC_LNG2), LSFT_T(KC_TAB), LT(5, KC_SPC), LT(4, KC_LNG1), KC_RGUI, KC_RCTL
),

[4] = LAYOUT(
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
KC_CIRC, KC_AT, KC_SLSH, KC_MINS, KC_UNDS, KC_SCLN, KC_COLN, KC_LBRC, KC_RBRC, KC_INT3,
LT(5, KC_TILD), KC_GRV, KC_QUES, KC_EQL, KC_UNDS, KC_PLUS, KC_ASTR, KC_LCBR, KC_RCBR, KC_PIPE,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),

[5] = LAYOUT(
KC_EXLM, KC_DQUO, KC_HASH, KC_DLR, KC_PERC, KC_AMPR, KC_QUOT, KC_LPRN, KC_RPRN, KC_BSLS,
KC_TILD, KC_GRV, KC_QUES, KC_EQL, KC_UNDS, KC_PLUS, KC_ASTR, KC_LCBR, KC_RCBR, KC_PIPE,
KC_LSFT, KC_LGUI, KC_LALT, KC_LNG2, KC_LSFT, KC_SPC, KC_LNG1, KC_TRNS, KC_TRNS, KC_DEL,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),

[6] = LAYOUT(
KC_ESC, KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO,
KC_LCTL, KC_TRNS, KC_QUES, KC_EXLM, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO,
KC_LSFT, KC_LGUI, KC_LALT, KC_LNG2, KC_TRNS, KC_NO, KC_LNG1, KC_NO, KC_NO, KC_DEL,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),

[7] = LAYOUT(
KC_NO, KC_TAB, KC_NO, KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
KC_NO, KC_NO, KC_NO, KC_NO, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
KC_LSFT, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, MO(8), MO(9),
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),

[8] = LAYOUT(
RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_NO, KC_NO, KC_NO, DF(0), DF(3),
RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
RGB_M_K, RGB_M_X, RGB_M_G, KC_NO, KC_NO, QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};
1 change: 1 addition & 0 deletions keyboards/takashicompany/minidivide/keymaps/via/rules.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
VIA_ENABLE = yes
48 changes: 48 additions & 0 deletions keyboards/takashicompany/minidivide/minidivide.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
// Copyright 2023 takashicompany (@takashicompany)
// SPDX-License-Identifier: GPL-2.0-or-later

#include "quantum.h"

#ifdef OLED_ENABLE

oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
return OLED_ROTATION_270;
}

//Variable that stores the number of times the key was pressed
static uint16_t press_count = 0;

bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
if (!process_record_user(keycode, record)) {
return false;
}
// Increment the counter when a key is pressed
if (record->event.pressed) {
press_count++;
}

return process_record_user(keycode, record);
}

bool oled_task_kb(void) {

if (!oled_task_user()) { return false; }

oled_write_ln_P(PSTR("mini"), false);
oled_write_ln_P(PSTR("Divide"), false);

oled_set_cursor(0, 5);

oled_write_ln_P(PSTR("Layer"), false);
oled_write_ln(get_u8_str(get_highest_layer(layer_state), ' '), false);

oled_write_ln_P(PSTR(" "), false);
oled_write_ln_P(PSTR(" "), false);

oled_write_ln_P(PSTR("Count"), false);
oled_write_ln(get_u16_str(press_count, ' '), false);

return false;

}
#endif
43 changes: 43 additions & 0 deletions keyboards/takashicompany/minidivide/readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# miniDivide

![miniDivide](https://i.imgur.com/x91x9yjh.jpg)

miniDivide is a split keyboard with 0.8u (16mm) key pitch.
The size of a single key is 80% of that of a conventional keyboard key.
Although the key size is more compact than usual, it has the advantage of requiring minimal finger movement.
The number of keys is 19 keys for one hand and 38 keys for two hands.

It is small and thin, making it easy to carry around.
The option to mount a coin cell battery on the PCB is available so that the BLE Micro Pro can be installed.
OLED can also be mounted.

miniDivideは0.8u(16mm)キーピッチの分割型のキーボードです。
一つのキーの大きさが従来のキーボードのキーと比較すると80%のサイズとなっています。
通常よりコンパクトなキーサイズですが、指の動きが最小限で済むという強みがあります。
キー数は片手で19キー、両手で38キーとなります。

小さく、薄いので持ち運びにも便利です。
またBLE Micro Proを搭載できるよう、コイン電池をPCBに搭載するオプションが可能です。
OLEDも搭載できます。

* Keyboard Maintainer: [takashicompany](https://github.com/takashicompany)
* Hardware Supported: PCB, Pro Micro
* Hardware Availability: https://github.com/takashicompany/minidivide

Make example for this keyboard (after setting up your build environment):

make takashicompany/minidivide:default

Flashing example for this keyboard:

make takashicompany/minidivide:default:flash

See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).

## Bootloader

Enter the bootloader in 3 ways:

* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
1 change: 1 addition & 0 deletions keyboards/takashicompany/minidivide/rules.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# This file intentionally left blank

0 comments on commit 4064e66

Please sign in to comment.