[Keyboard] Add LATE-9 keyboard (#13966)
This commit is contained in:
		
							
								
								
									
										31
									
								
								keyboards/late9/config.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								keyboards/late9/config.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,31 @@ | ||||
| /* | ||||
| Copyright 2021 rookiebwoy | ||||
|  | ||||
| This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | ||||
| the Free Software Foundation, either version 2 of the License, or | ||||
| (at your option) any later version. | ||||
|  | ||||
| This program is distributed in the hope that it will be useful, | ||||
| but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
| GNU General Public License for more details. | ||||
|  | ||||
| You should have received a copy of the GNU General Public License | ||||
| along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||
| */ | ||||
| #pragma once | ||||
|  | ||||
| #include "config_common.h" | ||||
|  | ||||
| /* USB Device descriptor parameter */ | ||||
| #define VENDOR_ID       0xFEED | ||||
| #define PRODUCT_ID      0x3777 | ||||
| #define MANUFACTURER    rookiebwoy | ||||
| #define PRODUCT         LATE-9 | ||||
|  | ||||
| /* COL2ROW or ROW2COL */ | ||||
| #define DIODE_DIRECTION ROW2COL | ||||
|  | ||||
| /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ | ||||
| #define DEBOUNCE 5 | ||||
							
								
								
									
										27
									
								
								keyboards/late9/readme.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								keyboards/late9/readme.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | ||||
| # LATE-9 | ||||
|  | ||||
|  | ||||
| The LATE-9 is a multi-tap input keyboard based on mobile phones from the late '90s. LATE-9 is intended as a dev board with 18 buttons and an OLED screen, made by through-hole components only. With this, you can experiment QMK OLED capabilities with very little expense. | ||||
|  | ||||
|  | ||||
|  | ||||
| See the project repository for gerbers. | ||||
|  | ||||
| * Keyboard maintainer: [rookiebwoy](https://github.com/rookiebwoy) | ||||
| * Hardware supported: ProMicro, _Elite-C (not tested)_ | ||||
| * Project repository: [LATE-9 on github](https://github.com/rookiebwoy/late-9) | ||||
|  | ||||
| Make example for this keyboard (after setting up your build environment): | ||||
|  | ||||
|     make late9/rev1:default | ||||
|  | ||||
| Flashing example for this keyboard: | ||||
|  | ||||
|     make late9/rev1:default:flash | ||||
|  | ||||
|  | ||||
| When asked by the terminal, short with a metal wire the pins on the backside of the board highlighted as `RST` (one is the `RESET` and the other one is `GROUND`) to enter the bootloader and let the OS detects the device. | ||||
| After installing this firmware you can use Bootmagic to enter the bootloader while plugging in your LATE-9. By default it's the button on the upper-left of the keyboard. | ||||
|  | ||||
| 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 [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). | ||||
|  | ||||
							
								
								
									
										38
									
								
								keyboards/late9/rev1/config.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								keyboards/late9/rev1/config.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,38 @@ | ||||
| /* | ||||
| Copyright 2021 rookiebwoy | ||||
|  | ||||
| This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | ||||
| the Free Software Foundation, either version 2 of the License, or | ||||
| (at your option) any later version. | ||||
|  | ||||
| This program is distributed in the hope that it will be useful, | ||||
| but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
| GNU General Public License for more details. | ||||
|  | ||||
| You should have received a copy of the GNU General Public License | ||||
| along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||
| */ | ||||
| #pragma once | ||||
|  | ||||
| #include "config_common.h" | ||||
|  | ||||
| /* USB Device descriptor parameter */ | ||||
| #define DEVICE_VER      0x0010 | ||||
|  | ||||
| /* Column/Row IO definitions */ | ||||
| #define MATRIX_ROWS 6 | ||||
| #define MATRIX_COLS 3 | ||||
| #define MATRIX_ROW_PINS { B4, E6, D7, B3, B2, B6 } | ||||
| #define MATRIX_COL_PINS { B5, C6, D4 } | ||||
|  | ||||
| /* Bootmagic - hold down top left button while plugging in to enter bootloader */ | ||||
| #define BOOTMAGIC_LITE_ROW 0 | ||||
| #define BOOTMAGIC_LITE_COLUMN 0 | ||||
|  | ||||
| /* Tap interval for tap dance */ | ||||
| #define TAPPING_TERM 400 | ||||
|  | ||||
| /* Oneshot interval */ | ||||
| #define ONESHOT_TIMEOUT 5000 | ||||
							
								
								
									
										18
									
								
								keyboards/late9/rev1/info.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								keyboards/late9/rev1/info.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | ||||
| { | ||||
|     "keyboard_name": "LATE-9", | ||||
|     "keyboard_folder": "late9/rev1", | ||||
|     "url": "https://github.com/rookiebwoy/late-9)", | ||||
|     "maintainer": "rookiebwoy", | ||||
|     "layouts": { | ||||
|         "LAYOUT": { | ||||
|             "layout": [ | ||||
|                 {"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, | ||||
|                 {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, | ||||
|                 {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, | ||||
|                 {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, | ||||
|                 {"x":0, "y":4}, {"x":1, "y":4}, {"x":2, "y":4}, | ||||
|                 {"x":0, "y":5}, {"x":1, "y":5}, {"x":2, "y":5} | ||||
|             ] | ||||
|         } | ||||
|     } | ||||
| } | ||||
							
								
								
									
										84
									
								
								keyboards/late9/rev1/keymaps/default/keymap.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										84
									
								
								keyboards/late9/rev1/keymaps/default/keymap.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,84 @@ | ||||
| /* Copyright 2021 rookiebwoy | ||||
|  * | ||||
|  * This program is free software: you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation, either version 2 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  * | ||||
|  * This program is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||
|  */ | ||||
| #include QMK_KEYBOARD_H | ||||
|  | ||||
| // Layers declarations | ||||
| enum layers { | ||||
|     _BL, | ||||
|     _OL | ||||
| }; | ||||
|  | ||||
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||||
| /* Keymap _BL: Base Layer | ||||
|  * ,-----------------------. | ||||
|  * |MO(OP) | ↑     | BSPC  | | ||||
|  * |       |       |       | | ||||
|  * |-------|-------|-------| | ||||
|  * | <-    | ↓     | ->    | | ||||
|  * |       |       |       | | ||||
|  * |-------|-------|-------| | ||||
|  * | 1     | 2     | 3     | | ||||
|  * |       |       |       | | ||||
|  * |-------|-------|-------| | ||||
|  * | 4     | 5     | 6     | | ||||
|  * |       |       |       | | ||||
|  * |-------|-------|-------| | ||||
|  * | 7     | 8     | 9     | | ||||
|  * |       |       |       | | ||||
|  * |-------|-------|-------| | ||||
|  * | 0     | .     | =     | | ||||
|  * |       |       |       | | ||||
|  * `-----------------------' | ||||
|  */ | ||||
|   [_BL] = LAYOUT( | ||||
|     MO(1),         KC_UP,         KC_BSPC, | ||||
|     KC_LEFT,       KC_DOWN,       KC_RIGHT, | ||||
|     KC_P1,         KC_P2,         KC_P3, | ||||
|     KC_P4,         KC_P5,         KC_P6, | ||||
|     KC_P7,         KC_P8,         KC_P9, | ||||
|     KC_P0,         KC_PDOT,       KC_PEQL | ||||
|   ), | ||||
|  | ||||
| /* Keymap _OP: Operators Layer | ||||
|  * ,-----------------------. | ||||
|  * |MO(OP) | ↑     | BSPC  | | ||||
|  * |       |       |       | | ||||
|  * |-------|-------|-------| | ||||
|  * | <-    | ↓     | ->    | | ||||
|  * |       |       |       | | ||||
|  * |-------|-------|-------| | ||||
|  * | /     | *     | -     | | ||||
|  * |       |       |       | | ||||
|  * |-------|-------|-------| | ||||
|  * | (     | )     | +     | | ||||
|  * |       |       |       | | ||||
|  * |-------|-------|-------| | ||||
|  * | &     | %     | ^     | | ||||
|  * |       |       |       | | ||||
|  * |-------|-------|-------| | ||||
|  * | |     | .     | =     | | ||||
|  * |       |       |       | | ||||
|  * `-----------------------' | ||||
|  */ | ||||
|   [_OL] = LAYOUT( | ||||
|     MO(1),         KC_UP,         KC_BSPC, | ||||
|     KC_LEFT,       KC_DOWN,       KC_RIGHT, | ||||
|     KC_PSLS,       KC_PAST,       KC_PMNS, | ||||
|     LSFT(KC_9),    LSFT(KC_0),    KC_PPLS, | ||||
|     LSFT(KC_7),    LSFT(KC_5),    LSFT(KC_6), | ||||
|     LSFT(KC_BSLS), KC_PDOT,       KC_PEQL | ||||
|   ), | ||||
| }; | ||||
							
								
								
									
										3
									
								
								keyboards/late9/rev1/keymaps/default/readme.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								keyboards/late9/rev1/keymaps/default/readme.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| # LATE-9 default keymap | ||||
|  | ||||
| This is a simple 2-layer calculator look-a-like layout. | ||||
							
								
								
									
										235
									
								
								keyboards/late9/rev1/keymaps/multitap/keymap.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										235
									
								
								keyboards/late9/rev1/keymaps/multitap/keymap.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,235 @@ | ||||
| /* Copyright 2021 rookiebwoy | ||||
|  * | ||||
|  * This program is free software: you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation, either version 2 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  * | ||||
|  * This program is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||
|  */ | ||||
| #include QMK_KEYBOARD_H | ||||
|  | ||||
| // Layers declarations | ||||
| enum layers { | ||||
|     _BL | ||||
| }; | ||||
|  | ||||
| // Tap Dance declarations | ||||
| enum { | ||||
|     TD_PNCT, | ||||
|     TD_ABC, | ||||
|     TD_DEF, | ||||
|     TD_GHI, | ||||
|     TD_JKL, | ||||
|     TD_MNO, | ||||
|     TD_PQRS, | ||||
|     TD_TUV, | ||||
|     TD_WXYZ, | ||||
|     TD_SPACE, | ||||
|     TD_UPRCS, | ||||
| }; | ||||
|  | ||||
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||||
| /* Keymap _BL: Base Layer | ||||
|  * ,-----------------------. | ||||
|  * |ENTER  | ↑     | BSPC  | | ||||
|  * |       |       |       | | ||||
|  * |-------|-------|-------| | ||||
|  * | <-    | ↓     | ->    | | ||||
|  * |       |       |       | | ||||
|  * |-------|-------|-------| | ||||
|  * | 1 .,' | 2     | 3     | | ||||
|  * |?!-:;/ | abc   | def   | | ||||
|  * |-------|-------|-------| | ||||
|  * | 4     | 5     | 6     | | ||||
|  * | ghi   | jkl   | mno   | | ||||
|  * |-------|-------|-------| | ||||
|  * | 7     | 8     | 9     | | ||||
|  * | pqrs  | tuv   | wxyz  | | ||||
|  * |-------|-------|-------| | ||||
|  * | *     | 0     | CAPS  | | ||||
|  * |       | space |       | | ||||
|  * `-----------------------' | ||||
|  */ | ||||
|   [_BL] = LAYOUT( | ||||
|     KC_ENT,       KC_UP,        KC_BSPC, | ||||
|     KC_LEFT,      KC_DOWN,      KC_RIGHT, | ||||
|     TD(TD_PNCT),  TD(TD_ABC),   TD(TD_DEF), | ||||
|     TD(TD_GHI),   TD(TD_JKL),   TD(TD_MNO), | ||||
|     TD(TD_PQRS),  TD(TD_TUV),   TD(TD_WXYZ), | ||||
|     KC_PAST,      TD(TD_SPACE), TD(TD_UPRCS) | ||||
|   ), | ||||
| }; | ||||
|  | ||||
| // Tap Dance cycles | ||||
| void dance_1 (qk_tap_dance_state_t *state, void *user_data) { | ||||
|     if (state->count == 1) { | ||||
|         if (state->interrupted || !state->pressed) return tap_code(KC_DOT); | ||||
|         else return tap_code(KC_1); | ||||
|     } else if (state->count == 2) { | ||||
|         tap_code (KC_COMM); | ||||
|     } else if (state->count == 3) { | ||||
|         tap_code(KC_QUOT); | ||||
|     } else if (state->count == 4) { | ||||
|         tap_code16(KC_QUES); | ||||
|     } else if (state->count == 5) { | ||||
|         tap_code16(KC_EXLM); | ||||
|     } else if (state->count == 6) { | ||||
|         tap_code(KC_MINS); | ||||
|     } else if (state->count == 7) { | ||||
|         tap_code16(KC_COLN); | ||||
|     } else if (state->count == 8) { | ||||
|         tap_code(KC_SCLN); | ||||
|     } else if (state->count == 9) { | ||||
|         tap_code(KC_SLSH); | ||||
|     } else { | ||||
|         reset_tap_dance (state); | ||||
|     } | ||||
| } | ||||
|  | ||||
| void dance_2 (qk_tap_dance_state_t *state, void *user_data) { | ||||
|     if (state->count == 1) { | ||||
|         if (state->interrupted || !state->pressed) return tap_code(KC_A); | ||||
|         else return tap_code(KC_2); | ||||
|     } else if (state->count == 2) { | ||||
|         tap_code (KC_B); | ||||
|     } else if (state->count == 3) { | ||||
|         tap_code(KC_C); | ||||
|     } else { | ||||
|         reset_tap_dance (state); | ||||
|     } | ||||
| } | ||||
|  | ||||
| void dance_3 (qk_tap_dance_state_t *state, void *user_data) { | ||||
|     if (state->count == 1) { | ||||
|         if (state->interrupted || !state->pressed) return tap_code(KC_D); | ||||
|         else return tap_code(KC_3); | ||||
|     } else if (state->count == 2) { | ||||
|         tap_code (KC_E); | ||||
|     } else if (state->count == 3) { | ||||
|         tap_code(KC_F); | ||||
|     } else { | ||||
|         reset_tap_dance (state); | ||||
|     } | ||||
| } | ||||
|  | ||||
| void dance_4 (qk_tap_dance_state_t *state, void *user_data) { | ||||
|     if (state->count == 1) { | ||||
|         if (state->interrupted || !state->pressed) return tap_code(KC_G); | ||||
|         else return tap_code(KC_4); | ||||
|     } else if (state->count == 2) { | ||||
|         tap_code (KC_H); | ||||
|     } else if (state->count == 3) { | ||||
|         tap_code(KC_I); | ||||
|     } else { | ||||
|         reset_tap_dance (state); | ||||
|     } | ||||
| } | ||||
|  | ||||
| void dance_5 (qk_tap_dance_state_t *state, void *user_data) { | ||||
|     if (state->count == 1) { | ||||
|         if (state->interrupted || !state->pressed) return tap_code(KC_J); | ||||
|         else return tap_code(KC_5); | ||||
|     } else if (state->count == 2) { | ||||
|         tap_code (KC_K); | ||||
|     } else if (state->count == 3) { | ||||
|         tap_code(KC_L); | ||||
|     } else { | ||||
|         reset_tap_dance (state); | ||||
|     } | ||||
| } | ||||
|  | ||||
| void dance_6 (qk_tap_dance_state_t *state, void *user_data) { | ||||
|     if (state->count == 1) { | ||||
|         if (state->interrupted || !state->pressed) return tap_code(KC_M); | ||||
|         else return tap_code(KC_6); | ||||
|     } else if (state->count == 2) { | ||||
|         tap_code (KC_N); | ||||
|     } else if (state->count == 3) { | ||||
|         tap_code(KC_O); | ||||
|     } else { | ||||
|         reset_tap_dance (state); | ||||
|     } | ||||
| } | ||||
|  | ||||
| void dance_7 (qk_tap_dance_state_t *state, void *user_data) { | ||||
|     if (state->count == 1) { | ||||
|         if (state->interrupted || !state->pressed) return tap_code(KC_P); | ||||
|         else return tap_code(KC_7); | ||||
|     } else if (state->count == 2) { | ||||
|         tap_code (KC_Q); | ||||
|     } else if (state->count == 3) { | ||||
|         tap_code(KC_R); | ||||
|     } else if (state->count == 4) { | ||||
|         tap_code(KC_S); | ||||
|     } else { | ||||
|         reset_tap_dance (state); | ||||
|     } | ||||
| } | ||||
|  | ||||
| void dance_8 (qk_tap_dance_state_t *state, void *user_data) { | ||||
|     if (state->count == 1) { | ||||
|         if (state->interrupted || !state->pressed) return tap_code(KC_T); | ||||
|         else return tap_code(KC_8); | ||||
|     } else if (state->count == 2) { | ||||
|         tap_code (KC_U); | ||||
|     } else if (state->count == 3) { | ||||
|         tap_code(KC_V); | ||||
|     } else { | ||||
|         reset_tap_dance (state); | ||||
|     } | ||||
| } | ||||
|  | ||||
| void dance_9 (qk_tap_dance_state_t *state, void *user_data) { | ||||
|     if (state->count == 1) { | ||||
|         if (state->interrupted || !state->pressed) return tap_code(KC_W); | ||||
|         else return tap_code(KC_9); | ||||
|     } else if (state->count == 2) { | ||||
|         tap_code (KC_X); | ||||
|     } else if (state->count == 3) { | ||||
|         tap_code(KC_Y); | ||||
|     } else if (state->count == 4) { | ||||
|         tap_code(KC_Z); | ||||
|     } else { | ||||
|         reset_tap_dance (state); | ||||
|     } | ||||
| } | ||||
|  | ||||
| void dance_0 (qk_tap_dance_state_t *state, void *user_data) { | ||||
|     if (state->count == 1) { | ||||
|         if (state->interrupted || !state->pressed) return tap_code(KC_SPACE); | ||||
|         else return tap_code(KC_0); | ||||
|     } else { | ||||
|         reset_tap_dance (state); | ||||
|     } | ||||
| } | ||||
|  | ||||
| void dance_maiusc (qk_tap_dance_state_t *state, void *user_data) { | ||||
|     if (state->count == 1) { | ||||
|         if (state->interrupted || !state->pressed) return set_oneshot_mods(MOD_BIT(KC_LSFT));  | ||||
|         else return tap_code(KC_CAPS); | ||||
|     } else { | ||||
|         reset_tap_dance (state); | ||||
|     } | ||||
| } | ||||
|  | ||||
| // Tap Dance actions | ||||
| qk_tap_dance_action_t tap_dance_actions[] = { | ||||
|     [TD_PNCT] = ACTION_TAP_DANCE_FN (dance_1), | ||||
|     [TD_ABC] = ACTION_TAP_DANCE_FN (dance_2), | ||||
|     [TD_DEF] = ACTION_TAP_DANCE_FN (dance_3), | ||||
|     [TD_GHI] = ACTION_TAP_DANCE_FN (dance_4), | ||||
|     [TD_JKL] = ACTION_TAP_DANCE_FN (dance_5), | ||||
|     [TD_MNO] = ACTION_TAP_DANCE_FN (dance_6), | ||||
|     [TD_PQRS] = ACTION_TAP_DANCE_FN (dance_7), | ||||
|     [TD_TUV] = ACTION_TAP_DANCE_FN (dance_8), | ||||
|     [TD_WXYZ] = ACTION_TAP_DANCE_FN (dance_9), | ||||
|     [TD_SPACE] = ACTION_TAP_DANCE_FN (dance_0), | ||||
|     [TD_UPRCS] = ACTION_TAP_DANCE_FN (dance_maiusc), | ||||
| }; | ||||
							
								
								
									
										3
									
								
								keyboards/late9/rev1/keymaps/multitap/readme.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								keyboards/late9/rev1/keymaps/multitap/readme.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| # LATE-9 multitap keymap | ||||
|  | ||||
| This is the intended LATE-9 layout with multitap `ON` and old mobile phone look-a-like layout.. | ||||
							
								
								
									
										2
									
								
								keyboards/late9/rev1/keymaps/multitap/rules.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								keyboards/late9/rev1/keymaps/multitap/rules.mk
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | ||||
| # Enable Tap Dance feature | ||||
| TAP_DANCE_ENABLE = yes | ||||
							
								
								
									
										5
									
								
								keyboards/late9/rev1/readme.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								keyboards/late9/rev1/readme.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | ||||
| # LATE-9 rev1 | ||||
|  | ||||
| First (and final untill now) revision of the LATE-9. For in depth look please go to [project repository](https://github.com/rookiebwoy/late-9). | ||||
|  | ||||
|  | ||||
							
								
								
									
										60
									
								
								keyboards/late9/rev1/rev1.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								keyboards/late9/rev1/rev1.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,60 @@ | ||||
| /* Copyright 2021 rookiebwoy | ||||
|  * | ||||
|  * This program is free software: you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation, either version 2 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  * | ||||
|  * This program is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||
|  */ | ||||
| #include "rev1.h" | ||||
|  | ||||
| // OLED logo | ||||
| #ifdef OLED_ENABLE | ||||
| bool oled_task_kb(void) { | ||||
|     if (!oled_task_user()) { return false; } | ||||
|         static const char PROGMEM rb_logo[] = { | ||||
|             // rookiebwoy 128x32px | ||||
|             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  | ||||
|             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  | ||||
|             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00,  | ||||
|             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  | ||||
|             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00,  | ||||
|             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  | ||||
|             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  | ||||
|             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  | ||||
|             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0x00,  | ||||
|             0x00, 0x00, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0xe0, 0xe0,  | ||||
|             0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,  | ||||
|             0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0xe3, 0xe3, 0xe3, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0xe0, 0x1c,  | ||||
|             0x1c, 0x1c, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,  | ||||
|             0xe0, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00,  | ||||
|             0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0x00,  | ||||
|             0x00, 0x00, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,  | ||||
|             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  | ||||
|             0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x38, 0x38, 0x38, 0x3f, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x3f, 0x3f,  | ||||
|             0x3f, 0x38, 0x38, 0x38, 0x3f, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x07, 0x07, 0x07,  | ||||
|             0x38, 0x38, 0x38, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x3f,  | ||||
|             0x3f, 0x3f, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x38, 0x38, 0x38, 0x3f, 0x3f,  | ||||
|             0x3f, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x38, 0x38, 0x38, 0x3f, 0x3f, 0x3f, 0x38, 0x38, 0x38,  | ||||
|             0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x38, 0x38, 0x38, 0x3f, 0x3f, 0x3f, 0x00,  | ||||
|             0x00, 0x00, 0x07, 0x07, 0x07, 0x38, 0x38, 0x38, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,  | ||||
|             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  | ||||
|             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  | ||||
|             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  | ||||
|             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  | ||||
|             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  | ||||
|             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  | ||||
|             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  | ||||
|             0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0e, 0x0e, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 | ||||
|         }; | ||||
|     oled_write_raw_P(rb_logo, sizeof(rb_logo)); | ||||
| } | ||||
|  | ||||
| #endif | ||||
							
								
								
									
										59
									
								
								keyboards/late9/rev1/rev1.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								keyboards/late9/rev1/rev1.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,59 @@ | ||||
| /* Copyright 2021 rookiebwoy | ||||
|  * | ||||
|  * This program is free software: you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation, either version 2 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  * | ||||
|  * This program is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||
|  */ | ||||
| #pragma once | ||||
|  | ||||
| #include "quantum.h" | ||||
|  | ||||
| /* This 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. | ||||
|  */ | ||||
|  | ||||
| /* Matrix layout | ||||
|  *   ,--------------. | ||||
|  *   | 00 | 01 | 02 | | ||||
|  *   |----|----|----| | ||||
|  *   | 10 | 11 | 12 | | ||||
|  *   |----|----|----| | ||||
|  *   | 20 | 21 | 22 | | ||||
|  *   |----|----|----| | ||||
|  *   | 30 | 31 | 32 | | ||||
|  *   |----|----|----| | ||||
|  *   | 40 | 41 | 42 | | ||||
|  *   |----|----|----| | ||||
|  *   | 50 | 51 | 52 | | ||||
|  *   `--------------' | ||||
|  */ | ||||
| #define LAYOUT( \ | ||||
| 	k00, k01, k02,  \ | ||||
| 	k10, k11, k12,  \ | ||||
| 	k20, k21, k22,  \ | ||||
| 	k30, k31, k32,  \ | ||||
| 	k40, k41, k42,  \ | ||||
| 	k50, k51, k52   \ | ||||
| ) \ | ||||
| { \ | ||||
| 	{k00, k01, k02}, \ | ||||
| 	{k10, k11, k12}, \ | ||||
| 	{k20, k21, k22}, \ | ||||
| 	{k30, k31, k32}, \ | ||||
| 	{k40, k41, k42}, \ | ||||
| 	{k50, k51, k52}  \ | ||||
| } | ||||
							
								
								
									
										21
									
								
								keyboards/late9/rev1/rules.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								keyboards/late9/rev1/rules.mk
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | ||||
| # MCU name | ||||
| MCU = atmega32u4 | ||||
|  | ||||
| # Bootloader selection | ||||
| BOOTLOADER = caterina | ||||
|  | ||||
| # Build Options | ||||
| #   change yes to no to disable | ||||
| # | ||||
| BOOTMAGIC_ENABLE = yes      # Enable Bootmagic Lite | ||||
| MOUSEKEY_ENABLE = no        # Mouse keys | ||||
| EXTRAKEY_ENABLE = no        # Audio control and System control | ||||
| CONSOLE_ENABLE = no         # Console for debug | ||||
| COMMAND_ENABLE = no         # Commands for debug and configuration | ||||
| NKRO_ENABLE = yes           # Enable N-Key Rollover | ||||
| BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality | ||||
| RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow | ||||
| AUDIO_ENABLE = no           # Audio output | ||||
|  | ||||
| OLED_ENABLE = yes | ||||
| DEBOUNCE_TYPE = sym_eager_pk | ||||
							
								
								
									
										1
									
								
								keyboards/late9/rules.mk
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										1
									
								
								keyboards/late9/rules.mk
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1 @@ | ||||
| DEFAULT_FOLDER = late9/rev1 | ||||
		Reference in New Issue
	
	Block a user