[Keyboard] Add LATE-9 keyboard (#13966)
This commit is contained in:
		
							parent
							
								
									eb35f58a6e
								
							
						
					
					
						commit
						87c2f97def
					
				
					 14 changed files with 587 additions and 0 deletions
				
			
		
							
								
								
									
										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 | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 rookiebwoy
						rookiebwoy