diff --git a/keyboards/rookiebwoy/late9/readme.md b/keyboards/rookiebwoy/late9/readme.md index bc6dfab57e2c..9815391cbd54 100644 --- a/keyboards/rookiebwoy/late9/readme.md +++ b/keyboards/rookiebwoy/late9/readme.md @@ -5,9 +5,11 @@ The LATE-9 is a multi-tap input keyboard based on mobile phones from the late '9 ![LATE-9](https://i.imgur.com/QXycTC3h.jpg "LATE-9 first proto") +See the project repository for gerbers. + * Keyboard maintainer: [rookiebwoy](https://github.com/rookiebwoy) * Hardware supported: ProMicro, _Elite-C (not tested)_ -* Hardware Availability: LATE-9 is open source, check the [project repository](https://github.com/rookiebwoy/late-9) for gerbers. +* Project repository: [LATE-9 on github](https://github.com/rookiebwoy/late-9) Make example for this keyboard (after setting up your build environment): @@ -17,9 +19,9 @@ Flashing example for this keyboard: make rookiebwoy/late9/rev1: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 +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). -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. \ No newline at end of file diff --git a/keyboards/rookiebwoy/late9/rev1/info.json b/keyboards/rookiebwoy/late9/rev1/info.json index 48f3cff840d6..05d0934b9647 100644 --- a/keyboards/rookiebwoy/late9/rev1/info.json +++ b/keyboards/rookiebwoy/late9/rev1/info.json @@ -4,8 +4,8 @@ "url": "https://github.com/rookiebwoy/late-9)", "maintainer": "rookiebwoy", "usb": { - "vid": "0x6961", - "pid": "0x3032", + "vid": "0xFEED", + "pid": "0x3777", "device_version": "0.1.0" }, "tapping": { @@ -19,11 +19,6 @@ "rows": ["B4", "E6", "D7", "B3", "B2", "B6"] }, "diode_direction": "ROW2COL", - "features": { - "bootmagic": true, - "nkro": true, - "oled": true - }, "processor": "atmega32u4", "bootloader": "caterina", "layouts": { diff --git a/keyboards/rookiebwoy/late9/rev1/keymaps/default/keymap.c b/keyboards/rookiebwoy/late9/rev1/keymaps/default/keymap.c index f93958fe8f3a..bed15eb57e5d 100644 --- a/keyboards/rookiebwoy/late9/rev1/keymaps/default/keymap.c +++ b/keyboards/rookiebwoy/late9/rev1/keymaps/default/keymap.c @@ -22,23 +22,23 @@ enum layers { }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* BL: Base Layer +/* Keymap _BL: Base Layer * ,-----------------------. * |MO(OP) | ↑ | BSPC | * | | | | - * |-------+-------+-------| + * |-------|-------|-------| * | <- | ↓ | -> | * | | | | - * |-------+-------+-------| + * |-------|-------|-------| * | 1 | 2 | 3 | * | | | | - * |-------+-------+-------| + * |-------|-------|-------| * | 4 | 5 | 6 | * | | | | - * |-------+-------+-------| + * |-------|-------|-------| * | 7 | 8 | 9 | * | | | | - * |-------+-------+-------| + * |-------|-------|-------| * | 0 | . | = | * | | | | * `-----------------------' @@ -52,23 +52,23 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_P0, KC_PDOT, KC_PEQL ), -/* OP: Operators Layer +/* Keymap _OP: Operators Layer * ,-----------------------. * |MO(OP) | ↑ | BSPC | * | | | | - * |-------+-------+-------| + * |-------|-------|-------| * | <- | ↓ | -> | * | | | | - * |-------+-------+-------| + * |-------|-------|-------| * | / | * | - | * | | | | - * |-------+-------+-------| + * |-------|-------|-------| * | ( | ) | + | * | | | | - * |-------+-------+-------| + * |-------|-------|-------| * | & | % | ^ | * | | | | - * |-------+-------+-------| + * |-------|-------|-------| * | | | . | = | * | | | | * `-----------------------' diff --git a/keyboards/rookiebwoy/late9/rev1/keymaps/multitap/keymap.c b/keyboards/rookiebwoy/late9/rev1/keymaps/multitap/keymap.c new file mode 100644 index 000000000000..e378fb4921f9 --- /dev/null +++ b/keyboards/rookiebwoy/late9/rev1/keymaps/multitap/keymap.c @@ -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 . + */ +#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 (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 (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 (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 (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 (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 (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 (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 (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 (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 (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 (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 +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), +}; diff --git a/keyboards/rookiebwoy/late9/rev1/keymaps/multitap/readme.md b/keyboards/rookiebwoy/late9/rev1/keymaps/multitap/readme.md new file mode 100644 index 000000000000..2b5136c2b8ec --- /dev/null +++ b/keyboards/rookiebwoy/late9/rev1/keymaps/multitap/readme.md @@ -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.. diff --git a/keyboards/rookiebwoy/late9/rev1/keymaps/multitap/rules.mk b/keyboards/rookiebwoy/late9/rev1/keymaps/multitap/rules.mk new file mode 100644 index 000000000000..4141c3e7a422 --- /dev/null +++ b/keyboards/rookiebwoy/late9/rev1/keymaps/multitap/rules.mk @@ -0,0 +1,2 @@ +# Enable Tap Dance feature +TAP_DANCE_ENABLE = yes diff --git a/keyboards/rookiebwoy/late9/rev1/keymaps/via/keymap.c b/keyboards/rookiebwoy/late9/rev1/keymaps/via/keymap.c deleted file mode 100644 index f93958fe8f3a..000000000000 --- a/keyboards/rookiebwoy/late9/rev1/keymaps/via/keymap.c +++ /dev/null @@ -1,84 +0,0 @@ -/* 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 . - */ -#include QMK_KEYBOARD_H - -// Layers declarations -enum layers { - _BL, - _OL -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* 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 - ), - -/* 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 - ), -}; \ No newline at end of file diff --git a/keyboards/rookiebwoy/late9/rev1/keymaps/via/rules.mk b/keyboards/rookiebwoy/late9/rev1/keymaps/via/rules.mk deleted file mode 100644 index 036bd6d1c3ec..000000000000 --- a/keyboards/rookiebwoy/late9/rev1/keymaps/via/rules.mk +++ /dev/null @@ -1 +0,0 @@ -VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/rookiebwoy/late9/rev1/rules.mk b/keyboards/rookiebwoy/late9/rev1/rules.mk index 6e7633bfe015..874033acc902 100644 --- a/keyboards/rookiebwoy/late9/rev1/rules.mk +++ b/keyboards/rookiebwoy/late9/rev1/rules.mk @@ -1 +1,14 @@ -# This file intentionally left blank +# 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