diff --git a/keyboards/t9/config.h b/keyboards/t9/config.h new file mode 100644 index 0000000000..e7b3aaa829 --- /dev/null +++ b/keyboards/t9/config.h @@ -0,0 +1,114 @@ +// Copyright 2022 XenGi (@XenGi) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT + +// The pin connected to the data pin of the LEDs +#define RGB_DI_PIN D7? +// The number of LEDs connected +#define DRIVER_LED_TOTAL 21 + +/* + * ┌───┬───┬───┬───┐ + * │ ⏮ │ ⏯ │ ■ │ ⏭ │ + * ├───┼───┼───┼───┤ + * │Num│ / │ * │ - │ + * ├───┼───┼───┼───┤ + * │ 7 │ 8 │ 9 │ │ + * ├───┼───┼───┤ + │ + * │ 4 │ 5 │ 6 │ │ + * ├───┼───┼───┼───┤ + * │ 1 │ 2 │ 3 │ │ + * ├───┴───┼───┤Ent│ + * │ 0 │ . │ │ + * └───────┴───┴───┘ + */ + +led_config_t g_led_config = { { + // Key Matrix to LED Index + { 21, 20, 19, 18, }, + { 17, 16, 15, 14, }, + { 13, 12, 11, NO_LED }, + { 10, 9, 8, 7 }, + { 6, 5, 4, NO_LED }, + { 3, NO_LED, 1, 0 } +}, { + // LED Index to Physical Position + // x = 224 / (NUMBER_OF_COLS - 1) * COL_POSITION + // y = 64 / (NUMBER_OF_ROWS - 1) * ROW_POSITION + { 224, 58 }, { 149, 64 }, { 112, 64 }, { 149, 51 }, { 75, 51 }, { 0, 51 }, { 224, 32 }, { 149, 38 }, { 75, 38 }, { 0, 38 }, { 149, 26 }, { 75, 26 }, { 0, 26 }, { 224, 13 }, { 149, 13 }, { 75, 13 }, { 0, 13 }, { 224, 0 }, { 149, 0 }, { 75, 0 }, { 0, 0 } +}, { + // LED Index to Flag + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 +} }; + +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN Enables +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +#define ENABLE_RGB_MATRIX_PIXEL_FLOW +#define ENABLE_RGB_MATRIX_PIXEL_RAIN + +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN + +#define RGB_MATRIX_KEYPRESSES +#define RGB_MATRIX_KEYRELEASES +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + +// limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness) +#define RGB_MATRIX_LED_FLUSH_LIMIT 16 +// limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255 +#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 + diff --git a/keyboards/t9/info.json b/keyboards/t9/info.json new file mode 100644 index 0000000000..ca612de89e --- /dev/null +++ b/keyboards/t9/info.json @@ -0,0 +1,53 @@ +{ + "manufacturer": "XenGi", + "keyboard_name": "t9", + "maintainer": "XenGi", + "bootloader": "atmel-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["C2", "C2", "C2", "C2"], + "rows": ["D1", "D1", "D1", "D1", "D1"] + }, + "processor": "atmega32u4", + "url": "https://gitlab.com/tnine", + "usb": { + "device_version": "1.0.0", + "pid": "0x0000", + "vid": "0xFEED" + }, + "layouts": { + "LAYOUT_numpad": { + "layout": [ + { "matrix": [0, 0], "x": 0, "y": 0 }, + { "matrix": [0, 1], "x": 1, "y": 0 }, + { "matrix": [0, 2], "x": 2, "y": 0 }, + { "matrix": [0, 3], "x": 3, "y": 0 }, + { "matrix": [1, 0], "x": 0, "y": 1 }, + { "matrix": [1, 1], "x": 1, "y": 1 }, + { "matrix": [1, 2], "x": 2, "y": 1 }, + { "matrix": [1, 3], "x": 3, "y": 1 }, + { "matrix": [2, 0], "x": 0, "y": 2 }, + { "matrix": [2, 1], "x": 1, "y": 2 }, + { "matrix": [2, 2], "x": 2, "y": 2 }, + { "matrix": [3, 0], "x": 0, "y": 3 }, + { "matrix": [3, 1], "x": 1, "y": 3 }, + { "matrix": [3, 2], "x": 2, "y": 3 }, + { "h": 2, "matrix": [2, 3], "x": 3, "y": 2 }, + { "matrix": [4, 0], "x": 0, "y": 4 }, + { "matrix": [4, 1], "x": 1, "y": 4 }, + { "matrix": [4, 2], "x": 2, "y": 4 }, + { "matrix": [5, 0], "w": 2, "x": 0, "y": 5 }, + { "matrix": [5, 2], "x": 2, "y": 5 }, + { "h": 2, "matrix": [5, 3], "x": 3, "y": 4 } + ] + } + } +} diff --git a/keyboards/t9/keymaps/numpad/keymap.c b/keyboards/t9/keymaps/numpad/keymap.c new file mode 100644 index 0000000000..137471eca3 --- /dev/null +++ b/keyboards/t9/keymaps/numpad/keymap.c @@ -0,0 +1,75 @@ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┬───┬───┬───┐ + * │ ⏮ │ ⏯ │ ■ │ ⏭ │ + * ├───┼───┼───┼───┤ + * │TG1│ / │ * │ - │ + * ├───┼───┼───┼───┤ + * │ 7 │ 8 │ 9 │ │ + * ├───┼───┼───┤ + │ + * │ 4 │ 5 │ 6 │ │ + * ├───┼───┼───┼───┤ + * │ 1 │ 2 │ 3 │ │ + * ├───┴───┼───┤Ent│ + * │ 0 │ . │ │ + * └───────┴───┴───┘ + */ + [0] = LAYOUT_numpad( + KC_MPRV, KC_MPLY, KC_MSTP, KC_MNXT, + TG(1), KC_PSLS, KC_PAST, KC_PMNS, // KC_NUM + KC_P7, KC_P8, KC_P9, + KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_P1, KC_P2, KC_P3, + KC_P0, KC_PDOT, KC_PENT + ), + + /* + * ┌───┬───┬───┬───┐ + * │ ⏮ │ ⏯ │ ■ │ ⏭ │ + * ├───┼───┼───┼───┤ + * │TG1│ / │ * │ - │ + * ├───┼───┼───┼───┤ + * │Hom│ ↑ │PgU│ │ + * ├───┼───┼───┤ + │ + * │ ← │ │ → │ │ + * ├───┼───┼───┼───┤ + * │End│ ↓ │PgD│ │ + * ├───┴───┼───┤Ent│ + * │Insert │Del│ │ + * └───────┴───┴───┘ + */ + [1] = LAYOUT_numpad( + _______, _______, _______, _______, + _______, _______, _______, _______, + KC_HOME, KC_UP, KC_PGUP, + KC_LEFT, XXXXXXX, KC_RGHT, _______, + KC_END, KC_DOWN, KC_PGDN, + KC_INS, KC_DEL, _______ + ), + + /* + * ┌─────┬─────┬─────┬─────┐ + * │ModeR│Breat│Plain│Mode │ + * ├─────┼─────┼─────┼─────┤ + * │▒▒▒▒▒│Rainb│Swirl│Sped-│ + * ├─────┼─────┼─────┼─────┤ + * │Brig+│Brig-│ │ │ + * ├─────┼─────┼─────┤Sped+│ + * │Satu+│Satu-│ │ │ + * ├─────┼─────┼─────┼─────┤ + * │Hue+ │Hue- │ │ │ + * ├─────┴─────┼─────┤OnOff│ + * │ │ │ │ + * └───────────┴─────┴─────┘ + */ + [2] = LAYOUT_numpad( + RGB_RMOD, RGB_M_B, RGB_M_P, RGB_MOD, + _______, RGB_M_R, RGB_M_SW, RGB_SPD, + RGB_VAI, RGB_VAD, _______, + RGB_SAI, RGB_SAD, _______, RGB_SPI, + RGB_HUI, RGB_HUD, _______, + _______, _______, RGB_TOG, + ) +}; diff --git a/keyboards/t9/readme.md b/keyboards/t9/readme.md new file mode 100644 index 0000000000..9891ffebe8 --- /dev/null +++ b/keyboards/t9/readme.md @@ -0,0 +1,27 @@ +# t9 + +![t9](imgur.com image replace me!) + +*A short description of the keyboard/project* + +* Keyboard Maintainer: [XenGi](https://github.com/XenGi) +* Hardware Supported: *The PCBs, controllers supported* +* Hardware Availability: *Links to where you can find this hardware* + +Make example for this keyboard (after setting up your build environment): + + make t9:default + +Flashing example for this keyboard: + + make t9: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 `RESET` if it is available diff --git a/keyboards/t9/rules.mk b/keyboards/t9/rules.mk new file mode 100644 index 0000000000..b73f8b8237 --- /dev/null +++ b/keyboards/t9/rules.mk @@ -0,0 +1,4 @@ +# This file intentionally left blank +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = WS2812 # also supports SK6812MINI +