diff --git a/keyboards/armada/armada.c b/keyboards/armada/armada.c new file mode 100644 index 00000000000..a98a238e299 --- /dev/null +++ b/keyboards/armada/armada.c @@ -0,0 +1 @@ +#include "armada.h" diff --git a/keyboards/armada/armada.h b/keyboards/armada/armada.h new file mode 100644 index 00000000000..52d5b928c16 --- /dev/null +++ b/keyboards/armada/armada.h @@ -0,0 +1,35 @@ +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT_armada( \ + r06cn1, r06c00, r06c01, r06c02, r06c03, r06c04, r06c05, r06c06, r06c07, r06c09, r06c10, r06c11, r06c12, r06c13, r06c14, r06c15, r06c16, r06c17, r06c18, r06c19, r06c20, r06c21, r06c22, r06c23, \ + r05cn1, r05c00, r05c01, r05c02, r05c03, r05c04, r05c05, r05c06, r05c07, r05c08, r05c09, r05c10, r05c11, r05c12, r05c13, r05c14, r05c15, r05c16, r05c17, r05c18, r05c19, r05c20, r05c21, r05c22, r05c23, \ + r04cn1, r04c00, r04c01, r04c02, r04c03, r04c04, r04c05, r04c06, r04c07, r03c09, r04c09, r04c10, r04c11, r04c12, r04c13, r04c14, r04c15, r04c16, r04c17, r04c18, r04c19, r04c20, r04c21, r04c22, r04c23, \ + r03cn1, r03c00, r03c01, r03c03, r03c04, r03c05, r03c06, r03c07, r03c08, r02c09, r03c10, r03c11, r03c12, r03c13, r03c14, r03c15, r03c16, r03c20, r03c21, r03c22, \ + r02cn1, r02c00, r02c02, r02c03, r02c04, r02c05, r02c06, r02c07, r02c08, r02c10, r02c11, r02c12, r02c13, r02c14, r02c15, r02c16, r02c18, r02c20, r02c21, r02c22, r02c23, \ + r01cn1, r01c00, r01c01, r01c02, r01c04, r01c07, r01c11, r01c13, r01c14, r01c15, r01c16, r01c17, r01c18, r01c19, r01c20, r01c22 \ +) \ +{ \ + { r01cn1, r01c00, r01c01, r01c02, KC_NO, r01c04, KC_NO, KC_NO, r01c07, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ + { r02cn1, r02c00, KC_NO, r02c02, r02c03, r02c04, r02c05, r02c06, r02c07, r02c08, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ + { r03cn1, r03c00, r03c01, KC_NO, r03c03, r03c04, r03c05, r03c06, r03c07, r03c08, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ + { r04cn1, r04c00, r04c01, r04c02, r04c03, r04c04, r04c05, r04c06, r04c07, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ + { r05cn1, r05c00, r05c01, r05c02, r05c03, r05c04, r05c05, r05c06, r05c07, r05c08, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ + { r06cn1, r06c00, r06c01, r06c02, r06c03, r06c04, r06c05, r06c06, r06c07, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ +\ + { KC_NO, KC_NO, r01c11, KC_NO, r01c13, r01c14, r01c15, r01c16, r01c17, r01c18, r01c19, r01c20, KC_NO, r01c22, KC_NO }, \ + { r02c09, r02c10, r02c11, r02c12, r02c13, r02c14, r02c15, r02c16, KC_NO, r02c18, KC_NO, r02c20, r02c21, r02c22, r02c23 }, \ + { r03c09, r03c10, r03c11, r03c12, r03c13, r03c14, r03c15, r03c16, KC_NO, KC_NO, KC_NO, r03c20, r03c21, r03c22, KC_NO }, \ + { r04c09, r04c10, r04c11, r04c12, r04c13, r04c14, r04c15, r04c16, r04c17, r04c18, r04c19, r04c20, r04c21, r04c22, r04c23 }, \ + { r05c09, r05c10, r05c11, r05c12, r05c13, r05c14, r05c15, r05c16, r05c17, r05c18, r05c19, r05c20, r05c21, r05c22, r05c23 }, \ + { r06c09, r06c10, r06c11, r06c12, r06c13, r06c14, r06c15, r06c16, r06c17, r06c18, r06c19, r06c20, r06c21, r06c22, r06c23 } \ +} diff --git a/keyboards/armada/config.h b/keyboards/armada/config.h new file mode 100644 index 00000000000..ff10480cced --- /dev/null +++ b/keyboards/armada/config.h @@ -0,0 +1,94 @@ +#pragma once + + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x0000 +#define DEVICE_VER 0x0001 +#define MANUFACTURER "Cyboard" +#define PRODUCT "Armada" + +/* key matrix size */ +#define MATRIX_ROWS 12 +#define MATRIX_COLS 15 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ + +#define MATRIX_ROW_PINS { B3, B1, F7, F6, F5, F4 } +#define MATRIX_COL_PINS { D1, D0, D4, C6, D7, E6, B4, B5, B6, B2, B7, D5, C7, F1, F0 } //last 5 are unused on left hand +#define MATRIX_ROW_PINS_RIGHT { B3, B1, F7, F6, F5, F4 } +#define MATRIX_COL_PINS_RIGHT { D1, D0, D4, C6, D7, E6, B4, B5, B7, D5, C7, F1, F0, B6, B2 } + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION ROW2COL + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +#define SOFT_SERIAL_PIN D2 // or D0, D1, D3, E6 +#define EE_HANDS + +//#define LED_NUM_LOCK_PIN B0 +//#define LED_CAPS_LOCK_PIN B1 +//#define LED_SCROLL_LOCK_PIN B2 +//#define LED_COMPOSE_PIN B3 +//#define LED_KANA_PIN B4 + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +//#define BACKLIGHT_BREATHING + +#define WS2812_DI_PIN D3 +#ifdef WS2812_DI_PIN +# define RGBLED_NUM 131 +# define RGBLIGHT_SPLIT +# define RGBLIGHT_SPLIT +# define RGBLED_SPLIT { 52, 79 } +//# define RGBLIGHT_HUE_STEP 8 +//# define RGBLIGHT_SAT_STEP 8 +//# define RGBLIGHT_VAL_STEP 8 +# define RGBLIGHT_LIMIT_VAL 120 /* The maximum brightness level */ +# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +//# define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +//# define RGBLIGHT_EFFECT_BREATHING +//# define RGBLIGHT_EFFECT_RAINBOW_MOOD +//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +//# define RGBLIGHT_EFFECT_CHRISTMAS +//# define RGBLIGHT_EFFECT_STATIC_GRADIENT +//# define RGBLIGHT_EFFECT_RGB_TEST +//# define RGBLIGHT_EFFECT_ALTERNATING +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +#endif + +#define RGBLIGHT_LAYERS +#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF +//#define SPLIT_LAYER_STATE_ENABLE//this would be needed for non-caps/num/scroll lock layer statuses +#define SPLIT_LED_STATE_ENABLE + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +#define TAPPING_TERM_PER_KEY + +/* Bootmagic Lite key configuration */ +/* Bootmagic Lite key is F9 */ +#define BOOTMAGIC_LITE_ROW 11 +#define BOOTMAGIC_LITE_COLUMN 4 diff --git a/keyboards/armada/keymaps/vial/config.h b/keyboards/armada/keymaps/vial/config.h new file mode 100644 index 00000000000..5b5177e29e8 --- /dev/null +++ b/keyboards/armada/keymaps/vial/config.h @@ -0,0 +1,8 @@ +#pragma once + +#define VIAL_KEYBOARD_UID {0xD5, 0x68, 0xF8, 0xDB, 0xDE, 0xF8, 0xB0, 0xF3} + +#define VIAL_UNLOCK_COMBO_ROWS { 0, 2 } +#define VIAL_UNLOCK_COMBO_COLS { 0, 2 } + +#define DYNAMIC_KEYMAP_LAYER_COUNT 2 diff --git a/keyboards/armada/keymaps/vial/keymap.c b/keyboards/armada/keymaps/vial/keymap.c new file mode 100644 index 00000000000..5ae107c4725 --- /dev/null +++ b/keyboards/armada/keymaps/vial/keymap.c @@ -0,0 +1,73 @@ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_armada( + KC_F11, KC_F12, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, LT(1,KC_F5), KC_F6, LT(1,KC_F5), KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCROLL_LOCK, KC_PAUS, RGB_TOG, RGB_VAI, RGB_VAD, _______, + KC_F1, KC_F2, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM_LOCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENTER, KC_P4, KC_P5, KC_P6, + KC_F7, KC_F8, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT + ), + + [1] = LAYOUT_armada( + _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; + +const rgblight_segment_t PROGMEM caps_lock_layer[] = RGBLIGHT_LAYER_SEGMENTS( + // {34, 1, HSV_CYAN}, // Light caps lock + // {39, 1, HSV_CYAN} // Light lshift + // below lights all alphas as well as caps lock + {22, 13, HSV_CYAN}, // Light 13 leds, Q through caps lock on left hand + {40, 6, HSV_CYAN}, // Light 6 leds, Z through N on left hand + {71, 11, HSV_CYAN}, // right hand alphas + {89, 3, HSV_CYAN} // right hand alphas +); + +const rgblight_segment_t PROGMEM num_lock_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {107, 1, HSV_CYAN}, //numlock key + {112, 3, HSV_CYAN}, + {118, 3, HSV_CYAN}, + {122, 3, HSV_CYAN}, + {129, 2, HSV_CYAN} +); + +const rgblight_segment_t PROGMEM scroll_lock_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {102, 1, HSV_CYAN} +); + +// Now define the array of layers. Later layers take precedence +const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST( + caps_lock_layer, + num_lock_layer, + scroll_lock_layer +); + +void keyboard_post_init_user(void) { + // Enable the LED layers + rgblight_layers = my_rgb_layers; +} + +bool led_update_user(led_t led_state) { + rgblight_set_layer_state(0, led_state.caps_lock); + rgblight_set_layer_state(1, led_state.num_lock); + rgblight_set_layer_state(2, led_state.scroll_lock); + rgblight_set(); + return true; +} + +uint16_t g_tapping_term(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case LT(1, KC_F5): + return 2000; + default: + return TAPPING_TERM; + } +} diff --git a/keyboards/armada/keymaps/vial/rules.mk b/keyboards/armada/keymaps/vial/rules.mk new file mode 100644 index 00000000000..5a573729a73 --- /dev/null +++ b/keyboards/armada/keymaps/vial/rules.mk @@ -0,0 +1,7 @@ +VIA_ENABLE = yes +VIAL_ENABLE = yes +LTO_ENABLE = yes +QMK_SETTINGS = no +TAP_DANCE_ENABLE = no +COMBO_ENABLE = no +KEY_OVERRIDE_ENABLE = yes diff --git a/keyboards/armada/keymaps/vial/vial.json b/keyboards/armada/keymaps/vial/vial.json new file mode 100644 index 00000000000..56d86fdb257 --- /dev/null +++ b/keyboards/armada/keymaps/vial/vial.json @@ -0,0 +1,437 @@ +{ + "name": "Armada", + "vendorId": "0xFEED", + "productId": "0x0000", + "lighting": "qmk_rgblight", + "matrix": { + "rows": 12, + "cols": 15 + }, + "layouts": { + "keymap": +[ + [ + "5,0", + { + "x": 2.220446049250313e-16 + }, + "5,1", + { + "x": 0.24999999999999956 + }, + "5,2", + { + "x": 0.666666666666667 + }, + "5,3", + { + "x": 8.881784197001252e-16 + }, + "5,4", + "5,5", + "5,6", + { + "x": 0.6666666666666652 + }, + "5,7", + "5,8", + { + "x": 1.8333333333333304 + }, + "11,0", + { + "x": 5.329070518200751e-15 + }, + "11,1", + { + "x": -1.7763568394002505e-15 + }, + "11,2", + "11,3", + { + "x": 0.6666666666666679 + }, + "11,4", + "11,5", + { + "x": 3.552713678800501e-15 + }, + "11,6", + "11,7", + { + "x": 0.12499999999999645 + }, + "11,8", + { + "x": 3.552713678800501e-15 + }, + "11,9", + "11,10", + { + "x": 0.25 + }, + "11,11", + { + "x": -3.552713678800501e-15 + }, + "11,12", + { + "x": -3.552713678800501e-15 + }, + "11,13", + "11,14" + ], + [ + { + "y": 0.25000000000000067 + }, + "4,0", + { + "x": 2.220446049250313e-16 + }, + "4,1", + { + "x": 0.24999999999999956 + }, + "4,2", + "4,3", + "4,4", + "4,5", + "4,6", + "4,7", + "4,8", + "4,9", + { + "x": 2.833333333333332 + }, + "10,1", + { + "x": 1.7763568394002505e-15 + }, + "10,2", + "10,3", + "10,4", + "10,5", + { + "x": -3.552713678800501e-15 + }, + "10,6", + { + "x": 3.552713678800501e-15, + "w": 2 + }, + "10,7", + { + "x": 0.12500000000000355 + }, + "10,8", + { + "x": -3.552713678800501e-15 + }, + "10,9", + "10,10", + { + "x": 0.25 + }, + "10,11", + { + "x": -3.552713678800501e-15 + }, + "10,12", + { + "x": 3.552713678800501e-15 + }, + "10,13", + "10,14" + ], + [ + { + "y": -1, + "x": 12.083333333333334 + }, + "10,0" + ], + [ + { + "y": -4.440892098500626e-16 + }, + "3,0", + { + "x": 2.220446049250313e-16 + }, + "3,1", + { + "x": 0.25, + "w": 1.5 + }, + "3,2", + "3,3", + "3,4", + "3,5", + "3,6", + { + "x": 8.881784197001252e-16 + }, + "3,7", + { + "x": 1.7763568394002505e-15 + }, + "3,8", + { + "x": 1.8333333333333304 + }, + "8,0", + { + "x": 1.7763568394002505e-15 + }, + "9,0", + { + "x": 1.7763568394002505e-15 + }, + "9,1", + "9,2", + { + "x": -1.7763568394002505e-15 + }, + "9,3", + { + "x": -3.552713678800501e-15 + }, + "9,4", + { + "x": 3.552713678800501e-15 + }, + "9,5", + "9,6", + { + "x": -3.552713678800501e-15, + "w": 1.5 + }, + "9,7", + { + "x": 0.1250000000000071 + }, + "9,8", + { + "x": -3.552713678800501e-15 + }, + "9,9", + "9,10", + { + "x": 0.25 + }, + "9,11", + { + "x": -3.552713678800501e-15 + }, + "9,12", + { + "x": 3.552713678800501e-15 + }, + "9,13" + ], + [ + "2,0", + { + "x": 2.220446049250313e-16 + }, + "2,1", + { + "x": 0.25, + "w": 1.75 + }, + "2,2", + "2,4", + "2,5", + "2,6", + { + "x": 8.881784197001252e-16 + }, + "2,7", + "2,8", + "2,9", + { + "x": 1.8333333333333321 + }, + "7,0", + "8,1", + { + "x": 1.7763568394002505e-15 + }, + "8,2", + { + "x": 1.7763568394002505e-15 + }, + "8,3", + "8,4", + { + "x": -3.552713678800501e-15 + }, + "8,5", + "8,6", + { + "x": 3.552713678800501e-15, + "w": 2.25 + }, + "8,7", + { + "x": 3.375 + }, + "8,11", + { + "x": 3.552713678800501e-15 + }, + "8,12", + { + "x": -3.552713678800501e-15 + }, + "8,13" + ], + [ + "1,0", + { + "x": 2.220446049250313e-16 + }, + "1,1", + { + "x": 0.24999999999999956, + "w": 2.25 + }, + "1,3", + { + "x": -8.881784197001252e-16 + }, + "1,4", + { + "x": 8.881784197001252e-16 + }, + "1,5", + "1,6", + { + "x": 8.881784197001252e-16 + }, + "1,7", + "1,8", + "1,9", + { + "x": 1.8333333333333304 + }, + "7,1", + { + "x": 5.329070518200751e-15 + }, + "7,2", + { + "x": -1.7763568394002505e-15 + }, + "7,3", + "7,4", + "7,5", + "7,6", + { + "x": -3.552713678800501e-15, + "w": 2.75 + }, + "7,7", + { + "x": 1.1250000000000036 + }, + "7,9", + { + "x": 1.25 + }, + "7,11", + { + "x": -3.552713678800501e-15 + }, + "7,12", + { + "x": 3.552713678800501e-15 + }, + "7,13", + { + "h": 2 + }, + "7,14" + ], + [ + { + "y": 8.881784197001252e-16 + }, + "0,0", + { + "x": 2.220446049250313e-16 + }, + "0,1", + { + "x": 0.25, + "w": 1.25 + }, + "0,2", + { + "w": 1.25 + }, + "0,3", + { + "w": 1.25 + }, + "0,5", + { + "x": 8.881784197001252e-16, + "w": 4 + }, + "0,8", + { + "x": 1.833333333333334, + "w": 4.25 + }, + "6,2", + { + "x": -3.552713678800501e-15, + "w": 1.25 + }, + "6,4", + { + "w": 1.25 + }, + "6,5", + { + "w": 1.25 + }, + "6,6", + { + "w": 1.25 + }, + "6,7", + { + "x": 0.1250000000000071 + }, + "6,8", + { + "x": -3.552713678800501e-15 + }, + "6,9", + "6,10", + { + "x": 0.25000000000000355, + "w": 2 + }, + "6,11", + { + "x": -3.552713678800501e-15 + }, + "6,13" + ], + [ + { + "rx": 28, + "ry": 3.25, + "y": -1, + "x": -0.5416666666666643, + "h": 2 + }, + "9,14" + ] +] + } +} diff --git a/keyboards/armada/rules.mk b/keyboards/armada/rules.mk new file mode 100644 index 00000000000..cab43dee980 --- /dev/null +++ b/keyboards/armada/rules.mk @@ -0,0 +1,23 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +SPLIT_KEYBOARD = yes +RGB_MATRIX_ENABLE = no