Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add new keyboard Tightwriter #20136

Merged
merged 23 commits into from
Mar 28, 2023
Merged
Show file tree
Hide file tree
Changes from 19 commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
2846cc3
Merge remote-tracking branch 'qmk/master'
takashicompany Sep 27, 2022
998aee1
Merge branch 'master' of github.com:qmk/qmk_firmware
takashicompany Oct 20, 2022
377db38
Merge branch 'master' of github.com:qmk/qmk_firmware
takashicompany Oct 28, 2022
cafe9a8
Merge branch 'master' of github.com:qmk/qmk_firmware
takashicompany Oct 31, 2022
2d599a4
start tightwriter
takashicompany Dec 22, 2022
a86d3f8
default keymap
takashicompany Dec 30, 2022
c3fac58
led
takashicompany Dec 30, 2022
36bbf23
SWITCH LANG
takashicompany Jan 2, 2023
de4401f
add VIA
takashicompany Mar 16, 2023
7cf45f7
fix keymap
takashicompany Mar 16, 2023
767d489
readme
takashicompany Mar 16, 2023
5095da4
Update keyboards/takashicompany/tightwriter/info.json
takashicompany Mar 21, 2023
d73c1a6
Update keyboards/takashicompany/tightwriter/info.json
takashicompany Mar 21, 2023
1090bdf
Update keyboards/takashicompany/tightwriter/info.json
takashicompany Mar 21, 2023
5d32d34
Update keyboards/takashicompany/tightwriter/info.json
takashicompany Mar 21, 2023
766773f
Update keyboards/takashicompany/tightwriter/keymaps/default/keymap.c
takashicompany Mar 21, 2023
b7ecbda
Update keyboards/takashicompany/tightwriter/keymaps/via/keymap.c
takashicompany Mar 21, 2023
75894a4
Update readme.md
takashicompany Mar 21, 2023
919992b
Delete config.h
takashicompany Mar 21, 2023
5e26e20
fix keymap
takashicompany Mar 28, 2023
76f32e0
淇
takashicompany Mar 28, 2023
d523da2
fix keymap
takashicompany Mar 28, 2023
874f26a
fix keymap
takashicompany Mar 28, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
97 changes: 97 additions & 0 deletions keyboards/takashicompany/tightwriter/info.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
{
"manufacturer": "takashicompany",
"keyboard_name": "Tightwriter",
"maintainer": "takashicompany",
"development_board": "promicro",
"diode_direction": "COL2ROW",
"features": {
"bootmagic": true,
"command": false,
"console": false,
"extrakey": true,
"mousekey": true,
"nkro": true,
"rgblight": true
},
"matrix_pins": {
"cols": [
"D4",
"C6",
"D7",
"E6",
"B4",
"B5"
],
"rows": [
"F6",
"F7",
"B1",
"B3",
"B2",
"B6"
]
},
"url": "",
"usb": {
"device_version": "1.0.0",
"pid": "0x0025",
"vid": "0x7463"
},
"rgblight": {
"led_count": 10,
"pin": "D3",
"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
}
},
"layouts": {
"LAYOUT": {
"layout": [
{ "matrix": [0, 0], "x": 0, "y": 0, "w": 1.25 },
{ "matrix": [0, 1], "x": 1.25, "y": 0 },
{ "matrix": [0, 2], "x": 2.25, "y": 0 },
{ "matrix": [0, 3], "x": 3.25, "y": 0 },
{ "matrix": [0, 4], "x": 4.25, "y": 0 },
{ "matrix": [0, 5], "x": 5.25, "y": 0 },
{ "matrix": [1, 0], "x": 6.25, "y": 0 },
{ "matrix": [1, 1], "x": 7.25, "y": 0 },
{ "matrix": [1, 2], "x": 8.25, "y": 0 },
{ "matrix": [1, 3], "x": 9.25, "y": 0 },
{ "matrix": [1, 4], "x": 10.25, "y": 0 },
{ "matrix": [2, 0], "x": 0, "y": 1, "w": 1.75 },
{ "matrix": [2, 1], "x": 1.75, "y": 1 },
{ "matrix": [2, 2], "x": 2.75, "y": 1 },
{ "matrix": [2, 3], "x": 3.75, "y": 1 },
{ "matrix": [2, 4], "x": 4.75, "y": 1 },
{ "matrix": [2, 5], "x": 5.75, "y": 1 },
{ "matrix": [3, 0], "x": 6.75, "y": 1 },
{ "matrix": [3, 1], "x": 7.75, "y": 1 },
{ "matrix": [3, 2], "x": 8.75, "y": 1 },
{ "matrix": [1, 5], "x": 10, "y": 1, "w": 1.25, "h": 2 },
{ "matrix": [4, 0], "x": 0, "y": 2, "w": 2 },
{ "matrix": [4, 1], "x": 2, "y": 2 },
{ "matrix": [4, 2], "x": 3, "y": 2 },
{ "matrix": [4, 3], "x": 4, "y": 2 },
{ "matrix": [4, 4], "x": 5, "y": 2 },
{ "matrix": [4, 5], "x": 6, "y": 2 },
{ "matrix": [3, 3], "x": 7, "y": 2 },
{ "matrix": [3, 4], "x": 8, "y": 2 },
{ "matrix": [3, 5], "x": 9, "y": 2 },
{ "matrix": [5, 0], "x": 0, "y": 3, "w": 1.25 },
{ "matrix": [5, 1], "x": 1.25, "y": 3, "w": 1.25 },
{ "matrix": [5, 2], "x": 2.5, "y": 3, "w": 6.25 },
{ "matrix": [5, 3], "x": 8.75, "y": 3, "w": 1.25 },
{ "matrix": [5, 4], "x": 10, "y": 3, "w": 1.25 }
]
}
}
}
112 changes: 112 additions & 0 deletions keyboards/takashicompany/tightwriter/keymaps/default/keymap.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
// Copyright 2023 takashicompany (@takashicompany)
// SPDX-License-Identifier: GPL-2.0-or-later

#include QMK_KEYBOARD_H
takashicompany marked this conversation as resolved.
Show resolved Hide resolved

enum custom_keycodes {
SWITCH_LANG = SAFE_RANGE
};

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT(
LT(7, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
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_LGUI, LALT_T(KC_LANG2), LT(1, KC_SPC), LT(1, KC_LANG1), KC_BSPC
),

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

LAYOUT(
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, LGUI(KC_JYEN), KC_TRNS,
KC_PLUS, KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_RO), KC_COLN, KC_DQUO, KC_RCBR, LSFT(KC_NUHS), LSFT(KC_JYEN),
KC_LSFT, KC_LGUI, KC_LALT, KC_LANG2, KC_LSFT, KC_SPC, KC_LANG1, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),

LAYOUT(
LT(7, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_TRNS,
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_LGUI, LALT_T(KC_LANG2), LT(4, KC_SPC), LT(4, KC_LANG1), KC_BSPC
),

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

LAYOUT(
KC_EXLM, KC_DQUO, KC_HASH, KC_DLR, KC_PERC, KC_AMPR, KC_QUOT, KC_LPRN, KC_RPRN, KC_BSLS, KC_TRNS,
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_LANG2, KC_LSFT, KC_SPC, KC_LANG1, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),

LAYOUT(
KC_ESC, KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO, KC_TRNS,
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_LANG2, KC_TRNS, KC_NO, KC_LANG1, KC_NO, KC_NO,
KC_TRNS, KC_TRNS, SWITCH_LANG, KC_TRNS, KC_TRNS
),

LAYOUT(
KC_NO, KC_TAB, KC_NO, KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_TRNS,
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),
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),

LAYOUT(
RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_NO, KC_NO, KC_NO, DF(0), DF(3), KC_TRNS,
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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),

LAYOUT(
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
)
};

bool is_lang1 = false;

bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case SWITCH_LANG:
if (record->event.pressed) {

if (is_lang1) {
register_code(KC_LANG1);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If this is setting the compose/kana leds, you don't need to manually track these.

(eg, host_keyboard_led_state().compose or host_keyboard_led_state().kana may work, specifically)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This function is implemented for language switching without depending on the PC or OS to be connected to.

is_lang1 = false;
}
else {
register_code(KC_LANG2);
is_lang1 = true;
}
}
break;
case KC_LANG1:
if (record->event.pressed) {
is_lang1 = false;
}
break;

case KC_LANG2:
if (record->event.pressed) {
is_lang1 = true;
}
break;
}
return true;
}
5 changes: 5 additions & 0 deletions keyboards/takashicompany/tightwriter/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
112 changes: 112 additions & 0 deletions keyboards/takashicompany/tightwriter/keymaps/via/keymap.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
// Copyright 2023 takashicompany (@takashicompany)
// SPDX-License-Identifier: GPL-2.0-or-later

#include QMK_KEYBOARD_H
takashicompany marked this conversation as resolved.
Show resolved Hide resolved

enum custom_keycodes {
SWITCH_LANG = SAFE_RANGE
};

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT(
LT(7, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
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_LGUI, LALT_T(KC_LANG2), LT(1, KC_SPC), LT(1, KC_LANG1), KC_BSPC
),

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

LAYOUT(
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, LGUI(KC_JYEN), KC_TRNS,
KC_PLUS, KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_RO), KC_COLN, KC_DQUO, KC_RCBR, LSFT(KC_NUHS), LSFT(KC_JYEN),
KC_LSFT, KC_LGUI, KC_LALT, KC_LANG2, KC_LSFT, KC_SPC, KC_LANG1, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),

LAYOUT(
LT(7, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_TRNS,
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_LGUI, LALT_T(KC_LANG2), LT(4, KC_SPC), LT(4, KC_LANG1), KC_BSPC
),

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

LAYOUT(
KC_EXLM, KC_DQUO, KC_HASH, KC_DLR, KC_PERC, KC_AMPR, KC_QUOT, KC_LPRN, KC_RPRN, KC_BSLS, KC_TRNS,
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_LANG2, KC_LSFT, KC_SPC, KC_LANG1, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),

LAYOUT(
KC_ESC, KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO, KC_TRNS,
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_LANG2, KC_TRNS, KC_NO, KC_LANG1, KC_NO, KC_NO,
KC_TRNS, KC_TRNS, SWITCH_LANG, KC_TRNS, KC_TRNS
),

LAYOUT(
KC_NO, KC_TAB, KC_NO, KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_TRNS,
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),
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),

LAYOUT(
RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_NO, KC_NO, KC_NO, DF(0), DF(3), KC_TRNS,
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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),

LAYOUT(
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
)
};

bool is_lang1 = false;

bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case SWITCH_LANG:
if (record->event.pressed) {

if (is_lang1) {
register_code(KC_LANG1);
is_lang1 = false;
}
else {
register_code(KC_LANG2);
is_lang1 = true;
}
}
break;
case KC_LANG1:
if (record->event.pressed) {
is_lang1 = false;
}
break;

case KC_LANG2:
if (record->event.pressed) {
is_lang1 = true;
}
break;
}
return true;
}
1 change: 1 addition & 0 deletions keyboards/takashicompany/tightwriter/keymaps/via/rules.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
VIA_ENABLE = yes
29 changes: 29 additions & 0 deletions keyboards/takashicompany/tightwriter/readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# takashicompany/tightwriter

![Tightwriter](https://i.imgur.com/evVMdSRh.jpg)

Tightwriter is a 35-key keyboard.
The PCB is compatible with Cherry MX compatible key switches and Kailh Choc v1 key switches.
It can be equipped with backlight LEDs and a TRRS socket.

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

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

caterina:
make takashicompany/tightwriter:default

Many popular Pro Micro alternatives like the Elite-C, Bit-C, Sea-Micro, Puchi-C etc...
make takashicompany/tightwriter:default:dfu

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 top-left key and plug in the keyboard. This will also clear EEPROM, so it is a good first step if the keyboard is misbehaving.
- Physical reset button: Briefly press the button on the back of the PCB.
- Keycode in layout: Press the key mapped to QK_BOOT. In the pre-supplied keymaps it is on the ninth layer, replacing the N key.
1 change: 1 addition & 0 deletions keyboards/takashicompany/tightwriter/rules.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# This file intentionally left blank