diff options
24 files changed, 707 insertions, 74 deletions
diff --git a/keyboards/atreus62/atreus62.h b/keyboards/atreus62/atreus62.h index eacf5b451..ca5cda8a8 100644 --- a/keyboards/atreus62/atreus62.h +++ b/keyboards/atreus62/atreus62.h | |||
| @@ -9,18 +9,34 @@ void promicro_bootloader_jmp(bool program); | |||
| 9 | // The first section contains all of the arguements | 9 | // The first section contains all of the arguements |
| 10 | // The second converts the arguments into a two-dimensional array | 10 | // The second converts the arguments into a two-dimensional array |
| 11 | #define KEYMAP( \ | 11 | #define KEYMAP( \ |
| 12 | k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ | 12 | k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ |
| 13 | k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \ | 13 | k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \ |
| 14 | k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \ | 14 | k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \ |
| 15 | k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, \ | 15 | k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, \ |
| 16 | k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d \ | 16 | k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d \ |
| 17 | ) \ | 17 | ) \ |
| 18 | { \ | 18 | { \ |
| 19 | { k00, k01, k02, k03, k04, k05, KC_NO, k06, k07, k08, k09, k0a, k0b }, \ | 19 | { k00, k01, k02, k03, k04, k05, KC_NO, k06, k07, k08, k09, k0a, k0b }, \ |
| 20 | { k10, k11, k12, k13, k14, k15, KC_NO, k16, k17, k18, k19, k1a, k1b }, \ | 20 | { k10, k11, k12, k13, k14, k15, KC_NO, k16, k17, k18, k19, k1a, k1b }, \ |
| 21 | { k20, k21, k22, k23, k24, k25, KC_NO, k26, k27, k28, k29, k2a, k2b }, \ | 21 | { k20, k21, k22, k23, k24, k25, KC_NO, k26, k27, k28, k29, k2a, k2b }, \ |
| 22 | { k30, k31, k32, k33, k34, k35, k46, k36, k37, k38, k39, k3a, k3b }, \ | 22 | { k30, k31, k32, k33, k34, k35, k46, k36, k37, k38, k39, k3a, k3b }, \ |
| 23 | { k40, k41, k42, k43, k44, k45, k47, k48, k49, k4a, k4b, k4c, k4d } \ | 23 | { k40, k41, k42, k43, k44, k45, k47, k48, k49, k4a, k4b, k4c, k4d } \ |
| 24 | } | 24 | } |
| 25 | 25 | ||
| 26 | #endif \ No newline at end of file | 26 | // Used to create a keymap using only KC_ prefixed keys. |
| 27 | #define KC_KEYMAP( \ | ||
| 28 | k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ | ||
| 29 | k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \ | ||
| 30 | k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \ | ||
| 31 | k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, \ | ||
| 32 | k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d \ | ||
| 33 | ) \ | ||
| 34 | { \ | ||
| 35 | { KC_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05, KC_NO, KC_##k06, KC_##k07, KC_##k08, KC_##k09, KC_##k0a, KC_##k0b }, \ | ||
| 36 | { KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15, KC_NO, KC_##k16, KC_##k17, KC_##k18, KC_##k19, KC_##k1a, KC_##k1b }, \ | ||
| 37 | { KC_##k20, KC_##k21, KC_##k22, KC_##k23, KC_##k24, KC_##k25, KC_NO, KC_##k26, KC_##k27, KC_##k28, KC_##k29, KC_##k2a, KC_##k2b }, \ | ||
| 38 | { KC_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35, KC_##k46, KC_##k36, KC_##k37, KC_##k38, KC_##k39, KC_##k3a, KC_##k3b }, \ | ||
| 39 | { KC_##k40, KC_##k41, KC_##k42, KC_##k43, KC_##k44, KC_##k45, KC_##k47, KC_##k48, KC_##k49, KC_##k4a, KC_##k4b, KC_##k4c, KC_##k4d } \ | ||
| 40 | } | ||
| 41 | |||
| 42 | #endif | ||
diff --git a/keyboards/frosty_flake/Makefile b/keyboards/frosty_flake/Makefile new file mode 100644 index 000000000..57b2ef62e --- /dev/null +++ b/keyboards/frosty_flake/Makefile | |||
| @@ -0,0 +1,3 @@ | |||
| 1 | ifndef MAKEFILE_INCLUDED | ||
| 2 | include ../../Makefile | ||
| 3 | endif | ||
diff --git a/keyboards/frosty_flake/config.h b/keyboards/frosty_flake/config.h new file mode 100644 index 000000000..2c73f1074 --- /dev/null +++ b/keyboards/frosty_flake/config.h | |||
| @@ -0,0 +1,147 @@ | |||
| 1 | /* | ||
| 2 | Copyright 2012 Jun Wako <wakojun@gmail.com> | ||
| 3 | |||
| 4 | This program is free software: you can redistribute it and/or modify | ||
| 5 | it under the terms of the GNU General Public License as published by | ||
| 6 | the Free Software Foundation, either version 2 of the License, or | ||
| 7 | (at your option) any later version. | ||
| 8 | |||
| 9 | This program is distributed in the hope that it will be useful, | ||
| 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 12 | GNU General Public License for more details. | ||
| 13 | |||
| 14 | You should have received a copy of the GNU General Public License | ||
| 15 | along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 16 | */ | ||
| 17 | |||
| 18 | #ifndef CONFIG_H | ||
| 19 | #define CONFIG_H | ||
| 20 | |||
| 21 | #include "config_common.h" | ||
| 22 | |||
| 23 | /* USB Device descriptor parameter */ | ||
| 24 | #define VENDOR_ID 0xFEED | ||
| 25 | #define PRODUCT_ID 0x6060 | ||
| 26 | #define DEVICE_VER 0x0001 | ||
| 27 | #define MANUFACTURER Bathroom Epiphanies | ||
| 28 | #define PRODUCT frosty_flake | ||
| 29 | #define DESCRIPTION Frosty Flake controller for the CM Storm Quick Fire Rapid | ||
| 30 | |||
| 31 | /* | ||
| 32 | * Frosty Flake Rev. 20140521 made by Bathroom Ephiphanies | ||
| 33 | * Ported from the Bathroom Epiphanies TMK Firmware: | ||
| 34 | * https://github.com/BathroomEpiphanies/epiphanies_tmk_keyboard/tree/master/be_controllers | ||
| 35 | * | ||
| 36 | */ | ||
| 37 | |||
| 38 | /* key matrix size */ | ||
| 39 | #define MATRIX_ROWS 8 // Row0 - Row7 in the schematic | ||
| 40 | #define MATRIX_COLS 18 // ColA - ColR in the schematic | ||
| 41 | |||
| 42 | /* | ||
| 43 | * Keyboard Matrix Assignments | ||
| 44 | */ | ||
| 45 | #define UNUSED_PINS { B0, C4, D3 } | ||
| 46 | |||
| 47 | /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ | ||
| 48 | #define DEBOUNCING_DELAY 5 | ||
| 49 | |||
| 50 | /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ | ||
| 51 | #define LOCKING_SUPPORT_ENABLE | ||
| 52 | /* Locking resynchronize hack */ | ||
| 53 | #define LOCKING_RESYNC_ENABLE | ||
| 54 | |||
| 55 | /* | ||
| 56 | * Force NKRO | ||
| 57 | * | ||
| 58 | * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved | ||
| 59 | * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the | ||
| 60 | * makefile for this to work.) | ||
| 61 | * | ||
| 62 | * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) | ||
| 63 | * until the next keyboard reset. | ||
| 64 | * | ||
| 65 | * NKRO may prevent your keystrokes from being detected in the BIOS, but it is | ||
| 66 | * fully operational during normal computer usage. | ||
| 67 | * | ||
| 68 | * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) | ||
| 69 | * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by | ||
| 70 | * bootmagic, NKRO mode will always be enabled until it is toggled again during a | ||
| 71 | * power-up. | ||
| 72 | * | ||
| 73 | */ | ||
| 74 | //#define FORCE_NKRO | ||
| 75 | |||
| 76 | /* | ||
| 77 | * Magic Key Options | ||
| 78 | * | ||
| 79 | * Magic keys are hotkey commands that allow control over firmware functions of | ||
| 80 | * the keyboard. They are best used in combination with the HID Listen program, | ||
| 81 | * found here: https://www.pjrc.com/teensy/hid_listen.html | ||
| 82 | * | ||
| 83 | * The options below allow the magic key functionality to be changed. This is | ||
| 84 | * useful if your keyboard/keypad is missing keys and you want magic key support. | ||
| 85 | * | ||
| 86 | */ | ||
| 87 | |||
| 88 | /* key combination for magic key command */ | ||
| 89 | #define IS_COMMAND() ( \ | ||
| 90 | keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ | ||
| 91 | ) | ||
| 92 | |||
| 93 | /* control how magic key switches layers */ | ||
| 94 | //#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true | ||
| 95 | //#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true | ||
| 96 | //#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false | ||
| 97 | |||
| 98 | /* override magic key keymap */ | ||
| 99 | //#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS | ||
| 100 | //#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS | ||
| 101 | //#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM | ||
| 102 | //#define MAGIC_KEY_HELP1 H | ||
| 103 | //#define MAGIC_KEY_HELP2 SLASH | ||
| 104 | //#define MAGIC_KEY_DEBUG D | ||
| 105 | //#define MAGIC_KEY_DEBUG_MATRIX X | ||
| 106 | //#define MAGIC_KEY_DEBUG_KBD K | ||
| 107 | //#define MAGIC_KEY_DEBUG_MOUSE M | ||
| 108 | //#define MAGIC_KEY_VERSION V | ||
| 109 | //#define MAGIC_KEY_STATUS S | ||
| 110 | //#define MAGIC_KEY_CONSOLE C | ||
| 111 | //#define MAGIC_KEY_LAYER0_ALT1 ESC | ||
| 112 | //#define MAGIC_KEY_LAYER0_ALT2 GRAVE | ||
| 113 | //#define MAGIC_KEY_LAYER0 0 | ||
| 114 | //#define MAGIC_KEY_LAYER1 1 | ||
| 115 | //#define MAGIC_KEY_LAYER2 2 | ||
| 116 | //#define MAGIC_KEY_LAYER3 3 | ||
| 117 | //#define MAGIC_KEY_LAYER4 4 | ||
| 118 | //#define MAGIC_KEY_LAYER5 5 | ||
| 119 | //#define MAGIC_KEY_LAYER6 6 | ||
| 120 | //#define MAGIC_KEY_LAYER7 7 | ||
| 121 | //#define MAGIC_KEY_LAYER8 8 | ||
| 122 | //#define MAGIC_KEY_LAYER9 9 | ||
| 123 | //#define MAGIC_KEY_BOOTLOADER PAUSE | ||
| 124 | //#define MAGIC_KEY_LOCK CAPS | ||
| 125 | //#define MAGIC_KEY_EEPROM E | ||
| 126 | //#define MAGIC_KEY_NKRO N | ||
| 127 | //#define MAGIC_KEY_SLEEP_LED Z | ||
| 128 | |||
| 129 | /* | ||
| 130 | * Feature disable options | ||
| 131 | * These options are also useful to firmware size reduction. | ||
| 132 | */ | ||
| 133 | |||
| 134 | /* disable debug print */ | ||
| 135 | //#define NO_DEBUG | ||
| 136 | |||
| 137 | /* disable print */ | ||
| 138 | //#define NO_PRINT | ||
| 139 | |||
| 140 | /* disable action features */ | ||
| 141 | //#define NO_ACTION_LAYER | ||
| 142 | //#define NO_ACTION_TAPPING | ||
| 143 | //#define NO_ACTION_ONESHOT | ||
| 144 | //#define NO_ACTION_MACRO | ||
| 145 | //#define NO_ACTION_FUNCTION | ||
| 146 | |||
| 147 | #endif | ||
diff --git a/keyboards/frosty_flake/frosty_flake.c b/keyboards/frosty_flake/frosty_flake.c new file mode 100644 index 000000000..1cd476038 --- /dev/null +++ b/keyboards/frosty_flake/frosty_flake.c | |||
| @@ -0,0 +1,63 @@ | |||
| 1 | #include "frosty_flake.h" | ||
| 2 | |||
| 3 | void matrix_init_kb(void) { | ||
| 4 | // put your keyboard start-up code here | ||
| 5 | // runs once when the firmware starts up | ||
| 6 | |||
| 7 | matrix_init_user(); | ||
| 8 | } | ||
| 9 | |||
| 10 | void matrix_scan_kb(void) { | ||
| 11 | // put your looping keyboard code here | ||
| 12 | // runs every cycle (a lot) | ||
| 13 | |||
| 14 | matrix_scan_user(); | ||
| 15 | } | ||
| 16 | |||
| 17 | bool process_record_kb(uint16_t keycode, keyrecord_t *record) { | ||
| 18 | // put your per-action keyboard code here | ||
| 19 | // runs for every action, just before processing by the firmware | ||
| 20 | |||
| 21 | return process_record_user(keycode, record); | ||
| 22 | } | ||
| 23 | |||
| 24 | void led_set_kb(uint8_t usb_led) { | ||
| 25 | DDRB |= (1<<7); | ||
| 26 | DDRC |= (1<<5) | (1<<6); | ||
| 27 | |||
| 28 | print_dec(usb_led); | ||
| 29 | |||
| 30 | if (usb_led & (1<<USB_LED_CAPS_LOCK)) | ||
| 31 | PORTC &= ~(1<<5); | ||
| 32 | else | ||
| 33 | PORTC |= (1<<5); | ||
| 34 | |||
| 35 | if (usb_led & (1<<USB_LED_NUM_LOCK)) | ||
| 36 | PORTB &= ~(1<<7); | ||
| 37 | else | ||
| 38 | PORTB |= (1<<7); | ||
| 39 | |||
| 40 | if (usb_led & (1<<USB_LED_SCROLL_LOCK)) | ||
| 41 | PORTC &= ~(1<<6); | ||
| 42 | else | ||
| 43 | PORTC |= (1<<6); | ||
| 44 | |||
| 45 | led_set_user(usb_led); | ||
| 46 | } | ||
| 47 | |||
| 48 | __attribute__ ((weak)) | ||
| 49 | void matrix_init_user(void) { | ||
| 50 | } | ||
| 51 | |||
| 52 | __attribute__ ((weak)) | ||
| 53 | void matrix_scan_user(void) { | ||
| 54 | } | ||
| 55 | |||
| 56 | __attribute__ ((weak)) | ||
| 57 | bool process_record_user(uint16_t keycode, keyrecord_t *record) { | ||
| 58 | return true; | ||
| 59 | } | ||
| 60 | |||
| 61 | __attribute__ ((weak)) | ||
| 62 | void led_set_user(uint8_t usb_led) { | ||
| 63 | } \ No newline at end of file | ||
diff --git a/keyboards/frosty_flake/frosty_flake.h b/keyboards/frosty_flake/frosty_flake.h new file mode 100644 index 000000000..3b52df6ba --- /dev/null +++ b/keyboards/frosty_flake/frosty_flake.h | |||
| @@ -0,0 +1,50 @@ | |||
| 1 | #ifndef FROSTY_FLAKE_H | ||
| 2 | #define FROSTY_FLAKE_H | ||
| 3 | |||
| 4 | #include "quantum.h" | ||
| 5 | |||
| 6 | // This a shortcut to help you visually see your layout. | ||
| 7 | // The following is an example using the Planck MIT layout | ||
| 8 | // The first section contains all of the arguements | ||
| 9 | // The second converts the arguments into a two-dimensional array | ||
| 10 | |||
| 11 | /* | ||
| 12 | Matrix col/row mapping | ||
| 13 | |||
| 14 | ,----. ,-------------------. ,-------------------. ,-------------------. ,--------------. | ||
| 15 | | J6 | | I4 | H4 | H2 | H6 | | A7 | E6 | D2 | D4 | | B4 | B7 | B6 | B0 | | C7 | C5 | A5 | | ||
| 16 | `----' `-------------------' `-------------------' `-------------------' `--------------' | ||
| 17 | ,-------------------------------------------------------------------------. ,--------------. ,-------------------. | ||
| 18 | | J4 | J7 | I7 | H7 | G7 | G4 | F4 | F7 | E7 | D7 | R7 | R4 | E4 | B2 | | L4 | O4 | Q4 | | K1 | L1 | Q1 | Q0 | | ||
| 19 | |-------------------------------------------------------------------------| |--------------| |-------------------| | ||
| 20 | | J2 | J5 | I5 | H5 | G5 | G2 | F2 | F5 | E5 | D5 | R5 | R2 | E2 | B3 | | K4 | O7 | Q7 | | K5 | L5 | Q5 | O5 | | ||
| 21 | |-------------------------------------------------------------------------| '--------------' |-------------- | | ||
| 22 | | O5 | J3 | I3 | H3 | G3 | G6 | F6 | F3 | E3 | D3 | R3 | R6 | B1 | | K2 | L2 | Q2 | | | ||
| 23 | |-------------------------------------------------------------------------| ,----. |-------------------| | ||
| 24 | | N2 | J1 | I1 | H1 | G1 | G0 | F0 | F1 | E1 | D1 | R0 | N3 | | O6 | | K3 | L3 | Q3 | O3 | | ||
| 25 | |-------------------------------------------------------------------------| ,--------------. |-------------- | | ||
| 26 | | A4 | P2 | C6 | K6 | C0 | M3 | D0 | A1 | | O0 | K0 | L0 | | L6 | Q6 | | | ||
| 27 | `-------------------------------------------------------------------------' `--------------' `-------------------' | ||
| 28 | */ | ||
| 29 | #define KEYMAP( \ | ||
| 30 | KJ6, KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0, KC7, KC5, KA5, \ | ||
| 31 | KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, KL4, KO4, KQ4, KK1, KL1, KQ1, KQ0, \ | ||
| 32 | KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3, KK4, KO7, KQ7, KK5, KL5, KQ5, KO5, \ | ||
| 33 | KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB1, KK2, KL2, KQ2, \ | ||
| 34 | KN2, KI6, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, KO6, KK3, KL3, KQ3, KO3, \ | ||
| 35 | KA4, KP2, KC6, KK6, KC0, KM3, KD0, KA1, KO0, KK0, KL0, KL6, KQ6 \ | ||
| 36 | ) \ | ||
| 37 | { \ | ||
| 38 | /* Columns and rows need to be swapped in the below definition */ \ | ||
| 39 | /* A B C D E F G H I J K L M N O P Q R */ \ | ||
| 40 | /* 0 */ { KC_NO, KB0, KC0, KD0, KC_NO, KF0, KG0, KC_NO, KC_NO, KC_NO, KK0, KL0, KC_NO, KC_NO, KO0, KC_NO, KQ0, KR0 }, \ | ||
| 41 | /* 1 */ { KA1, KB1, KC_NO, KD1, KE1, KF1, KG1, KH1, KI1, KJ1, KK1, KL1, KC_NO, KC_NO, KC_NO, KC_NO, KQ1, KC_NO }, \ | ||
| 42 | /* 2 */ { KC_NO, KB2, KC_NO, KD2, KE2, KF2, KG2, KH2, KI2, KJ2, KK2, KL2, KC_NO, KN2, KC_NO, KP2, KQ2, KR2 }, \ | ||
| 43 | /* 3 */ { KC_NO, KB3, KC_NO, KD3, KE3, KF3, KG3, KH3, KI3, KJ3, KK3, KL3, KM3, KN3, KO3, KC_NO, KQ3, KR3 }, \ | ||
| 44 | /* 4 */ { KA4, KB4, KC_NO, KD4, KE4, KF4, KG4, KH4, KI4, KJ4, KK4, KL4, KC_NO, KC_NO, KO4, KC_NO, KQ4, KR4 }, \ | ||
| 45 | /* 5 */ { KA5, KC_NO, KC5, KD5, KE5, KF5, KG5, KH5, KI5, KJ5, KK5, KL5, KC_NO, KC_NO, KO5, KC_NO, KQ5, KR5 }, \ | ||
| 46 | /* 6 */ { KC_NO, KB6, KC6, KC_NO, KE6, KF6, KG6, KH6, KI6, KJ6, KK6, KL6, KC_NO, KC_NO, KO6, KC_NO, KQ6, KR6 }, \ | ||
| 47 | /* 7 */ { KA7, KB7, KC7, KD7, KE7, KF7, KG7, KH7, KI7, KJ7, KC_NO, KC_NO, KC_NO, KC_NO, KO7, KC_NO, KQ7, KR7 } \ | ||
| 48 | } | ||
| 49 | |||
| 50 | #endif | ||
diff --git a/keyboards/frosty_flake/keymaps/default/Makefile b/keyboards/frosty_flake/keymaps/default/Makefile new file mode 100644 index 000000000..9d3df5964 --- /dev/null +++ b/keyboards/frosty_flake/keymaps/default/Makefile | |||
| @@ -0,0 +1,21 @@ | |||
| 1 | # Build Options | ||
| 2 | # change to "no" to disable the options, or define them in the Makefile in | ||
| 3 | # the appropriate keymap folder that will get included automatically | ||
| 4 | # | ||
| 5 | BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) | ||
| 6 | MOUSEKEY_ENABLE = yes # Mouse keys(+4700) | ||
| 7 | EXTRAKEY_ENABLE = yes # Audio control and System control(+450) | ||
| 8 | CONSOLE_ENABLE = no # Console for debug(+400) | ||
| 9 | COMMAND_ENABLE = yes # Commands for debug and configuration | ||
| 10 | NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work | ||
| 11 | BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality | ||
| 12 | MIDI_ENABLE = no # MIDI controls | ||
| 13 | AUDIO_ENABLE = no # Audio output on port C6 | ||
| 14 | UNICODE_ENABLE = no # Unicode | ||
| 15 | BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID | ||
| 16 | RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. | ||
| 17 | SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend | ||
| 18 | |||
| 19 | ifndef QUANTUM_DIR | ||
| 20 | include ../../../../Makefile | ||
| 21 | endif | ||
diff --git a/keyboards/frosty_flake/keymaps/default/config.h b/keyboards/frosty_flake/keymaps/default/config.h new file mode 100644 index 000000000..8893d122e --- /dev/null +++ b/keyboards/frosty_flake/keymaps/default/config.h | |||
| @@ -0,0 +1,8 @@ | |||
| 1 | #ifndef CONFIG_USER_H | ||
| 2 | #define CONFIG_USER_H | ||
| 3 | |||
| 4 | #include "../../config.h" | ||
| 5 | |||
| 6 | // place overrides here | ||
| 7 | |||
| 8 | #endif | ||
diff --git a/keyboards/frosty_flake/keymaps/default/keymap.c b/keyboards/frosty_flake/keymaps/default/keymap.c new file mode 100644 index 000000000..4dc7ed655 --- /dev/null +++ b/keyboards/frosty_flake/keymaps/default/keymap.c | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | #include "frosty_flake.h" | ||
| 2 | |||
| 3 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
| 4 | [0] = KEYMAP(\ | ||
| 5 | KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,KC_SLCK,KC_PAUS, \ | ||
| 6 | KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL,KC_BSPC, KC_INS,KC_HOME,KC_PGUP, KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS, \ | ||
| 7 | KC_TAB, KC_Q, KC_W, KC_E, KC_R, 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, \ | ||
| 8 | KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, \ | ||
| 9 | KC_LSFT,KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3,KC_PENT, \ | ||
| 10 | KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI, KC_APP,KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT, KC_P0,KC_PDOT) | ||
| 11 | }; \ No newline at end of file | ||
diff --git a/keyboards/frosty_flake/keymaps/default/readme.md b/keyboards/frosty_flake/keymaps/default/readme.md new file mode 100644 index 000000000..11bf4825f --- /dev/null +++ b/keyboards/frosty_flake/keymaps/default/readme.md | |||
| @@ -0,0 +1 @@ | |||
| # The default keymap for frosty_flake | |||
diff --git a/keyboards/frosty_flake/matrix.c b/keyboards/frosty_flake/matrix.c new file mode 100644 index 000000000..05dffdb64 --- /dev/null +++ b/keyboards/frosty_flake/matrix.c | |||
| @@ -0,0 +1,135 @@ | |||
| 1 | /* | ||
| 2 | Copyright 2017 Gabriel Young <gabeplaysdrums@live.com> | ||
| 3 | |||
| 4 | This program is free software: you can redistribute it and/or modify | ||
| 5 | it under the terms of the GNU General Public License as published by | ||
| 6 | the Free Software Foundation, either version 2 of the License, or | ||
| 7 | (at your option) any later version. | ||
| 8 | |||
| 9 | This program is distributed in the hope that it will be useful, | ||
| 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 12 | GNU General Public License for more details. | ||
| 13 | |||
| 14 | You should have received a copy of the GNU General Public License | ||
| 15 | along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 16 | */ | ||
| 17 | |||
| 18 | #include <stdint.h> | ||
| 19 | #include <stdbool.h> | ||
| 20 | #include <avr/io.h> | ||
| 21 | #include <util/delay.h> | ||
| 22 | #include "print.h" | ||
| 23 | #include "debug.h" | ||
| 24 | #include "util.h" | ||
| 25 | #include "matrix.h" | ||
| 26 | |||
| 27 | #ifndef DEBOUNCING_DELAY | ||
| 28 | # define DEBOUNCING_DELAY 5 | ||
| 29 | #endif | ||
| 30 | static uint8_t debouncing = DEBOUNCING_DELAY; | ||
| 31 | |||
| 32 | static matrix_row_t matrix[MATRIX_ROWS]; | ||
| 33 | static matrix_row_t matrix_debouncing[MATRIX_ROWS]; | ||
| 34 | |||
| 35 | static matrix_row_t scan_col(void) { | ||
| 36 | return ( | ||
| 37 | (PINC&(1<<7) ? 0 : ((matrix_row_t)1<<0)) | | ||
| 38 | (PINB&(1<<5) ? 0 : ((matrix_row_t)1<<1)) | | ||
| 39 | (PINB&(1<<4) ? 0 : ((matrix_row_t)1<<2)) | | ||
| 40 | (PINB&(1<<6) ? 0 : ((matrix_row_t)1<<3)) | | ||
| 41 | (PINB&(1<<1) ? 0 : ((matrix_row_t)1<<4)) | | ||
| 42 | (PINB&(1<<2) ? 0 : ((matrix_row_t)1<<5)) | | ||
| 43 | (PINB&(1<<3) ? 0 : ((matrix_row_t)1<<6)) | | ||
| 44 | (PINB&(1<<0) ? 0 : ((matrix_row_t)1<<7)) | ||
| 45 | ); | ||
| 46 | } | ||
| 47 | |||
| 48 | static void select_col(uint8_t col) { | ||
| 49 | switch (col) { | ||
| 50 | case 0: PORTD = (PORTD & ~0b01111011) | 0b00011011; break; | ||
| 51 | case 1: PORTD = (PORTD & ~0b01111011) | 0b01000011; break; | ||
| 52 | case 2: PORTD = (PORTD & ~0b01111011) | 0b01101010; break; | ||
| 53 | case 3: PORTD = (PORTD & ~0b01111011) | 0b01111001; break; | ||
| 54 | case 4: PORTD = (PORTD & ~0b01111011) | 0b01100010; break; | ||
| 55 | case 5: PORTD = (PORTD & ~0b01111011) | 0b01110001; break; | ||
| 56 | case 6: PORTD = (PORTD & ~0b01111011) | 0b01100001; break; | ||
| 57 | case 7: PORTD = (PORTD & ~0b01111011) | 0b01110000; break; | ||
| 58 | case 8: PORTD = (PORTD & ~0b01111011) | 0b01100000; break; | ||
| 59 | case 9: PORTD = (PORTD & ~0b01111011) | 0b01101000; break; | ||
| 60 | case 10: PORTD = (PORTD & ~0b01111011) | 0b00101011; break; | ||
| 61 | case 11: PORTD = (PORTD & ~0b01111011) | 0b00110011; break; | ||
| 62 | case 12: PORTD = (PORTD & ~0b01111011) | 0b00100011; break; | ||
| 63 | case 13: PORTD = (PORTD & ~0b01111011) | 0b01111000; break; | ||
| 64 | case 14: PORTD = (PORTD & ~0b01111011) | 0b00010011; break; | ||
| 65 | case 15: PORTD = (PORTD & ~0b01111011) | 0b01101001; break; | ||
| 66 | case 16: PORTD = (PORTD & ~0b01111011) | 0b00001011; break; | ||
| 67 | case 17: PORTD = (PORTD & ~0b01111011) | 0b00111011; break; | ||
| 68 | } | ||
| 69 | } | ||
| 70 | |||
| 71 | void matrix_init(void) { | ||
| 72 | /* Row output pins */ | ||
| 73 | DDRD |= 0b01111011; | ||
| 74 | /* Column input pins */ | ||
| 75 | DDRC &= ~0b10000000; | ||
| 76 | DDRB &= ~0b01111111; | ||
| 77 | PORTC |= 0b10000000; | ||
| 78 | PORTB |= 0b01111111; | ||
| 79 | |||
| 80 | for (uint8_t i=0; i < MATRIX_ROWS; i++) | ||
| 81 | matrix[i] = matrix_debouncing[i] = 0; | ||
| 82 | |||
| 83 | matrix_init_quantum(); | ||
| 84 | } | ||
| 85 | |||
| 86 | uint8_t matrix_scan(void) { | ||
| 87 | for (uint8_t col = 0; col < MATRIX_COLS; col++) { | ||
| 88 | select_col(col); | ||
| 89 | _delay_us(3); | ||
| 90 | matrix_row_t col_scan = scan_col(); | ||
| 91 | for (uint8_t row = 0; row < MATRIX_ROWS; row++) { | ||
| 92 | bool prev_bit = matrix_debouncing[row] & ((matrix_row_t)1<<col); | ||
| 93 | bool curr_bit = col_scan & (1<<row); | ||
| 94 | if (prev_bit != curr_bit) { | ||
| 95 | matrix_debouncing[row] ^= ((matrix_row_t)1<<col); | ||
| 96 | debouncing = DEBOUNCING_DELAY; | ||
| 97 | } | ||
| 98 | } | ||
| 99 | } | ||
| 100 | |||
| 101 | if (debouncing) { | ||
| 102 | if (--debouncing) | ||
| 103 | _delay_ms(1); | ||
| 104 | else | ||
| 105 | for (uint8_t i = 0; i < MATRIX_ROWS; i++) | ||
| 106 | matrix[i] = matrix_debouncing[i]; | ||
| 107 | } | ||
| 108 | |||
| 109 | matrix_scan_quantum(); | ||
| 110 | return 1; | ||
| 111 | } | ||
| 112 | |||
| 113 | inline matrix_row_t matrix_get_row(uint8_t row) { | ||
| 114 | return matrix[row]; | ||
| 115 | } | ||
| 116 | |||
| 117 | void matrix_print(void) { | ||
| 118 | print("\nr\\c ABCDEFGHIJKLMNOPQR\n"); | ||
| 119 | for (uint8_t row = 0; row < MATRIX_ROWS; row++) { | ||
| 120 | matrix_row_t matrix_row = matrix_get_row(row); | ||
| 121 | xprintf("%02X: ", row); | ||
| 122 | for (uint8_t col = 0; col < MATRIX_COLS; col++) { | ||
| 123 | bool curr_bit = matrix_row & (1<<col); | ||
| 124 | xprintf("%c", curr_bit ? '*' : '.'); | ||
| 125 | } | ||
| 126 | print("\n"); | ||
| 127 | } | ||
| 128 | } | ||
| 129 | |||
| 130 | uint8_t matrix_key_count(void) { | ||
| 131 | uint8_t count = 0; | ||
| 132 | for (uint8_t row = 0; row < MATRIX_ROWS; row++) | ||
| 133 | count += bitpop32(matrix[row]); | ||
| 134 | return count; | ||
| 135 | } \ No newline at end of file | ||
diff --git a/keyboards/frosty_flake/readme.md b/keyboards/frosty_flake/readme.md new file mode 100644 index 000000000..ff440e33b --- /dev/null +++ b/keyboards/frosty_flake/readme.md | |||
| @@ -0,0 +1,32 @@ | |||
| 1 | frosty_flake keyboard firmware | ||
| 2 | ====================== | ||
| 3 | |||
| 4 | This is the firmware for Rev. 20140521 of the Frosty Flake controller by [Bathroom Epiphanies](http://bathroomepiphanies.com/controllers/), a replacement controller for the [Cooler Master Quick Fire Rapid](http://www.coolermaster.com/peripheral/keyboards/quickfirerapid/). | ||
| 5 | |||
| 6 | The code was adapted from the [BathroomEpiphanies TMK Firmware](https://github.com/BathroomEpiphanies/epiphanies_tmk_keyboard/tree/master/be_controllers), but has been cleaned up to match the [schematic](https://deskthority.net/wiki/File:Frosty_Flake_Schematics.pdf) and gone through some minor refactoring for QMK. | ||
| 7 | |||
| 8 | ## Quantum MK Firmware | ||
| 9 | |||
| 10 | For the full Quantum feature list, see [the parent readme](/). | ||
| 11 | |||
| 12 | ## Building | ||
| 13 | |||
| 14 | Download or clone the whole firmware and navigate to the keyboards/frosty_flake folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file. | ||
| 15 | |||
| 16 | Depending on which keymap you would like to use, you will have to compile slightly differently. | ||
| 17 | |||
| 18 | ### Default | ||
| 19 | |||
| 20 | To build with the default keymap, simply run `make default`. | ||
| 21 | |||
| 22 | ### Other Keymaps | ||
| 23 | |||
| 24 | Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a folder with the name of your keymap in the keymaps folder, and see keymap documentation (you can find in top readme.md) and existant keymap files. | ||
| 25 | |||
| 26 | To build the firmware binary hex file with a keymap just do `make` with a keymap like this: | ||
| 27 | |||
| 28 | ``` | ||
| 29 | $ make [default|jack|<name>] | ||
| 30 | ``` | ||
| 31 | |||
| 32 | Keymaps follow the format **__\<name\>.c__** and are stored in the `keymaps` folder. | ||
diff --git a/keyboards/frosty_flake/rules.mk b/keyboards/frosty_flake/rules.mk new file mode 100644 index 000000000..dd2f4b6ee --- /dev/null +++ b/keyboards/frosty_flake/rules.mk | |||
| @@ -0,0 +1,71 @@ | |||
| 1 | # MCU name | ||
| 2 | #MCU = at90usb1287 | ||
| 3 | MCU = atmega32u2 | ||
| 4 | |||
| 5 | # Processor frequency. | ||
| 6 | # This will define a symbol, F_CPU, in all source code files equal to the | ||
| 7 | # processor frequency in Hz. You can then use this symbol in your source code to | ||
| 8 | # calculate timings. Do NOT tack on a 'UL' at the end, this will be done | ||
| 9 | # automatically to create a 32-bit value in your source code. | ||
| 10 | # | ||
| 11 | # This will be an integer division of F_USB below, as it is sourced by | ||
| 12 | # F_USB after it has run through any CPU prescalers. Note that this value | ||
| 13 | # does not *change* the processor frequency - it should merely be updated to | ||
| 14 | # reflect the processor speed set externally so that the code can use accurate | ||
| 15 | # software delays. | ||
| 16 | F_CPU = 16000000 | ||
| 17 | |||
| 18 | |||
| 19 | # | ||
| 20 | # LUFA specific | ||
| 21 | # | ||
| 22 | # Target architecture (see library "Board Types" documentation). | ||
| 23 | ARCH = AVR8 | ||
| 24 | |||
| 25 | # Input clock frequency. | ||
| 26 | # This will define a symbol, F_USB, in all source code files equal to the | ||
| 27 | # input clock frequency (before any prescaling is performed) in Hz. This value may | ||
| 28 | # differ from F_CPU if prescaling is used on the latter, and is required as the | ||
| 29 | # raw input clock is fed directly to the PLL sections of the AVR for high speed | ||
| 30 | # clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' | ||
| 31 | # at the end, this will be done automatically to create a 32-bit value in your | ||
| 32 | # source code. | ||
| 33 | # | ||
| 34 | # If no clock division is performed on the input clock inside the AVR (via the | ||
| 35 | # CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. | ||
| 36 | F_USB = $(F_CPU) | ||
| 37 | |||
| 38 | # Interrupt driven control endpoint task(+60) | ||
| 39 | OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT | ||
| 40 | |||
| 41 | |||
| 42 | # Boot Section Size in *bytes* | ||
| 43 | # Teensy halfKay 512 | ||
| 44 | # Teensy++ halfKay 1024 | ||
| 45 | # Atmel DFU loader 4096 | ||
| 46 | # LUFA bootloader 4096 | ||
| 47 | # USBaspLoader 2048 | ||
| 48 | OPT_DEFS += -DBOOTLOADER_SIZE=4096 | ||
| 49 | |||
| 50 | |||
| 51 | # Build Options | ||
| 52 | # change yes to no to disable | ||
| 53 | # | ||
| 54 | BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) | ||
| 55 | MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) | ||
| 56 | EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) | ||
| 57 | CONSOLE_ENABLE ?= yes # Console for debug(+400) | ||
| 58 | COMMAND_ENABLE ?= yes # Commands for debug and configuration | ||
| 59 | # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE | ||
| 60 | SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend | ||
| 61 | # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work | ||
| 62 | NKRO_ENABLE ?= no # USB Nkey Rollover | ||
| 63 | BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default | ||
| 64 | MIDI_ENABLE ?= no # MIDI controls | ||
| 65 | UNICODE_ENABLE ?= no # Unicode | ||
| 66 | BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID | ||
| 67 | AUDIO_ENABLE ?= no # Audio output on port C6 | ||
| 68 | FAUXCLICKY_ENABLE ?= no # Use buzzer to emulate clicky switches | ||
| 69 | |||
| 70 | CUSTOM_MATRIX = yes | ||
| 71 | SRC += matrix.c \ No newline at end of file | ||
diff --git a/keyboards/xd60/keymaps/cheese/README.md b/keyboards/xd60/keymaps/cheese/README.md new file mode 100644 index 000000000..8a5b97c03 --- /dev/null +++ b/keyboards/xd60/keymaps/cheese/README.md | |||
| @@ -0,0 +1,13 @@ | |||
| 1 | # cheese's Layout | ||
| 2 | Customized xd60 keymap | ||
| 3 | |||
| 4 |  | ||
| 5 |  | ||
| 6 | |||
| 7 | ## Programming Instructions: | ||
| 8 | `cd` into keymap directory, `make dfu` | ||
| 9 | |||
| 10 | ## Features | ||
| 11 | - Media keys and movement keys setup like on the pok3r | ||
| 12 | - Lower right movement keys setup like on the fc660m (fn+direction for home/end/page up and down) | ||
| 13 | - Caps lock can be triggered by pressing both shift keys at the same time (and deactivated the same way) | ||
diff --git a/keyboards/xd60/keymaps/cheese/base_layout.png b/keyboards/xd60/keymaps/cheese/base_layout.png new file mode 100644 index 000000000..211c4c731 --- /dev/null +++ b/keyboards/xd60/keymaps/cheese/base_layout.png | |||
| Binary files differ | |||
diff --git a/keyboards/xd60/keymaps/cheese/fn_layout.png b/keyboards/xd60/keymaps/cheese/fn_layout.png new file mode 100644 index 000000000..fe5ae99e0 --- /dev/null +++ b/keyboards/xd60/keymaps/cheese/fn_layout.png | |||
| Binary files differ | |||
diff --git a/keyboards/xd60/keymaps/cheese/keymap.c b/keyboards/xd60/keymaps/cheese/keymap.c new file mode 100644 index 000000000..25919a41f --- /dev/null +++ b/keyboards/xd60/keymaps/cheese/keymap.c | |||
| @@ -0,0 +1,67 @@ | |||
| 1 | #include "xd60.h" | ||
| 2 | #include "action_layer.h" | ||
| 3 | |||
| 4 | // Each layer gets a name for readability. | ||
| 5 | // The underscores don't mean anything - you can | ||
| 6 | // have a layer called STUFF or any other name. | ||
| 7 | // Layer names don't all need to be of the same | ||
| 8 | // length, and you can also skip them entirely | ||
| 9 | // and just use numbers. | ||
| 10 | #define _BL 0 | ||
| 11 | #define _FL 1 | ||
| 12 | #define _LS 2 | ||
| 13 | #define _RS 3 | ||
| 14 | |||
| 15 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
| 16 | |||
| 17 | /* (Base Layer) Default Layer | ||
| 18 | * ,-----------------------------------------------------------. | ||
| 19 | * |Esc~| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp | | ||
| 20 | * |-----------------------------------------------------------| | ||
| 21 | * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ | | ||
| 22 | * |-----------------------------------------------------------| | ||
| 23 | * |FUNCTION| A| S| D| F| G| H| J| K| L| ;| '|Return| | ||
| 24 | * |-----------------------------------------------------------| | ||
| 25 | * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | | ||
| 26 | * |-----------------------------------------------------------| | ||
| 27 | * |Ctrl|Gui |Alt | Space |FN|Left|Up|Down|Right| | ||
| 28 | * `-----------------------------------------------------------' | ||
| 29 | */ | ||
| 30 | [_BL] = KEYMAP( | ||
| 31 | KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, \ | ||
| 32 | KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \ | ||
| 33 | MO(_FL), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT, \ | ||
| 34 | F(0), KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, F(1), F(1), F(1), \ | ||
| 35 | KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_FL), KC_LEFT, KC_UP, KC_DOWN, KC_RIGHT), | ||
| 36 | |||
| 37 | // Function Layer | ||
| 38 | [_FL] = KEYMAP( | ||
| 39 | KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_DEL, \ | ||
| 40 | KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_CALC, KC_INS, KC_PGUP, KC_UP, KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, \ | ||
| 41 | KC_TRNS, KC_VOLD, KC_MUTE, KC_VOLU, KC_TRNS, KC_TRNS, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, KC_TRNS, KC_TRNS, KC_TRNS, \ | ||
| 42 | KC_TRNS, KC_TRNS, KC_APP, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, \ | ||
| 43 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_PGDN, KC_END), | ||
| 44 | |||
| 45 | // Left Shift Layer | ||
| 46 | [_LS] = KEYMAP( | ||
| 47 | KC_GRV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ | ||
| 48 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ | ||
| 49 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ | ||
| 50 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_CAPS, KC_CAPS, KC_CAPS, \ | ||
| 51 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), | ||
| 52 | |||
| 53 | // Right Shift Layer | ||
| 54 | [_RS] = KEYMAP( | ||
| 55 | KC_GRV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ | ||
| 56 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ | ||
| 57 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ | ||
| 58 | KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ | ||
| 59 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), | ||
| 60 | |||
| 61 | }; | ||
| 62 | |||
| 63 | // Custom Actions | ||
| 64 | const uint16_t PROGMEM fn_actions[] = { | ||
| 65 | [0] = ACTION_LAYER_MODS(_LS, MOD_LSFT), | ||
| 66 | [1] = ACTION_LAYER_MODS(_RS, MOD_RSFT), | ||
| 67 | }; | ||
diff --git a/quantum/quantum.c b/quantum/quantum.c index 582f8920b..807a7084a 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c | |||
| @@ -294,14 +294,6 @@ bool process_record_quantum(keyrecord_t *record) { | |||
| 294 | return false; | 294 | return false; |
| 295 | break; | 295 | break; |
| 296 | #endif | 296 | #endif |
| 297 | #ifdef ADAFRUIT_BLE_ENABLE | ||
| 298 | case OUT_BLE: | ||
| 299 | if (record->event.pressed) { | ||
| 300 | set_output(OUTPUT_ADAFRUIT_BLE); | ||
| 301 | } | ||
| 302 | return false; | ||
| 303 | break; | ||
| 304 | #endif | ||
| 305 | #endif | 297 | #endif |
| 306 | case MAGIC_SWAP_CONTROL_CAPSLOCK ... MAGIC_TOGGLE_NKRO: | 298 | case MAGIC_SWAP_CONTROL_CAPSLOCK ... MAGIC_TOGGLE_NKRO: |
| 307 | if (record->event.pressed) { | 299 | if (record->event.pressed) { |
diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h index 903d57f1e..78b02a0de 100644 --- a/quantum/quantum_keycodes.h +++ b/quantum/quantum_keycodes.h | |||
| @@ -159,9 +159,6 @@ enum quantum_keycodes { | |||
| 159 | #ifdef BLUETOOTH_ENABLE | 159 | #ifdef BLUETOOTH_ENABLE |
| 160 | OUT_BT, | 160 | OUT_BT, |
| 161 | #endif | 161 | #endif |
| 162 | #ifdef ADAFRUIT_BLE_ENABLE | ||
| 163 | OUT_BLE, | ||
| 164 | #endif | ||
| 165 | 162 | ||
| 166 | // always leave at the end | 163 | // always leave at the end |
| 167 | SAFE_RANGE | 164 | SAFE_RANGE |
diff --git a/tmk_core/common.mk b/tmk_core/common.mk index a86dccc61..47f6fc571 100644 --- a/tmk_core/common.mk +++ b/tmk_core/common.mk | |||
| @@ -93,14 +93,20 @@ ifeq ($(strip $(BACKLIGHT_ENABLE)), yes) | |||
| 93 | TMK_COMMON_DEFS += -DBACKLIGHT_ENABLE | 93 | TMK_COMMON_DEFS += -DBACKLIGHT_ENABLE |
| 94 | endif | 94 | endif |
| 95 | 95 | ||
| 96 | ifeq ($(strip $(ADAFRUIT_BLE_ENABLE)), yes) | ||
| 97 | TMK_COMMON_DEFS += -DADAFRUIT_BLE_ENABLE | ||
| 98 | endif | ||
| 99 | |||
| 100 | ifeq ($(strip $(BLUETOOTH_ENABLE)), yes) | 96 | ifeq ($(strip $(BLUETOOTH_ENABLE)), yes) |
| 101 | TMK_COMMON_DEFS += -DBLUETOOTH_ENABLE | 97 | TMK_COMMON_DEFS += -DBLUETOOTH_ENABLE |
| 102 | endif | 98 | endif |
| 103 | 99 | ||
| 100 | ifeq ($(strip $(BLUETOOTH)), AdafruitBLE) | ||
| 101 | TMK_COMMON_DEFS += -DBLUETOOTH_ENABLE | ||
| 102 | TMK_COMMON_DEFS += -DMODULE_ADAFRUIT_BLE | ||
| 103 | endif | ||
| 104 | |||
| 105 | ifeq ($(strip $(BLUETOOTH)), AdafruitEZKey) | ||
| 106 | TMK_COMMON_DEFS += -DBLUETOOTH_ENABLE | ||
| 107 | TMK_COMMON_DEFS += -DMODULE_ADAFRUIT_EZKEY | ||
| 108 | endif | ||
| 109 | |||
| 104 | ifeq ($(strip $(ONEHAND_ENABLE)), yes) | 110 | ifeq ($(strip $(ONEHAND_ENABLE)), yes) |
| 105 | TMK_COMMON_DEFS += -DONEHAND_ENABLE | 111 | TMK_COMMON_DEFS += -DONEHAND_ENABLE |
| 106 | endif | 112 | endif |
diff --git a/tmk_core/protocol/lufa.mk b/tmk_core/protocol/lufa.mk index de0cc795f..5b1577972 100644 --- a/tmk_core/protocol/lufa.mk +++ b/tmk_core/protocol/lufa.mk | |||
| @@ -22,11 +22,16 @@ ifeq ($(strip $(MIDI_ENABLE)), yes) | |||
| 22 | include $(TMK_PATH)/protocol/midi.mk | 22 | include $(TMK_PATH)/protocol/midi.mk |
| 23 | endif | 23 | endif |
| 24 | 24 | ||
| 25 | ifeq ($(strip $(ADAFRUIT_BLE_ENABLE)), yes) | 25 | ifeq ($(strip $(BLUETOOTH_ENABLE)), yes) |
| 26 | LUFA_SRC += $(LUFA_DIR)/adafruit_ble.cpp | 26 | LUFA_SRC += $(LUFA_DIR)/bluetooth.c \ |
| 27 | $(TMK_DIR)/protocol/serial_uart.c | ||
| 27 | endif | 28 | endif |
| 28 | 29 | ||
| 29 | ifeq ($(strip $(BLUETOOTH_ENABLE)), yes) | 30 | ifeq ($(strip $(BLUETOOTH)), AdafruitBLE) |
| 31 | LUFA_SRC += $(LUFA_DIR)/adafruit_ble.cpp | ||
| 32 | endif | ||
| 33 | |||
| 34 | ifeq ($(strip $(BLUETOOTH)), AdafruitEZKey) | ||
| 30 | LUFA_SRC += $(LUFA_DIR)/bluetooth.c \ | 35 | LUFA_SRC += $(LUFA_DIR)/bluetooth.c \ |
| 31 | $(TMK_DIR)/protocol/serial_uart.c | 36 | $(TMK_DIR)/protocol/serial_uart.c |
| 32 | endif | 37 | endif |
| @@ -54,6 +59,7 @@ LUFA_OPTS += -DUSE_FLASH_DESCRIPTORS | |||
| 54 | LUFA_OPTS += -DUSE_STATIC_OPTIONS="(USB_DEVICE_OPT_FULLSPEED | USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)" | 59 | LUFA_OPTS += -DUSE_STATIC_OPTIONS="(USB_DEVICE_OPT_FULLSPEED | USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)" |
| 55 | #LUFA_OPTS += -DINTERRUPT_CONTROL_ENDPOINT | 60 | #LUFA_OPTS += -DINTERRUPT_CONTROL_ENDPOINT |
| 56 | LUFA_OPTS += -DFIXED_CONTROL_ENDPOINT_SIZE=8 | 61 | LUFA_OPTS += -DFIXED_CONTROL_ENDPOINT_SIZE=8 |
| 62 | LUFA_OPTS += -DFIXED_CONTROL_ENDPOINT_SIZE=8 | ||
| 57 | LUFA_OPTS += -DFIXED_NUM_CONFIGURATIONS=1 | 63 | LUFA_OPTS += -DFIXED_NUM_CONFIGURATIONS=1 |
| 58 | 64 | ||
| 59 | # Remote wakeup fix for ATmega32U2 https://github.com/tmk/tmk_keyboard/issues/361 | 65 | # Remote wakeup fix for ATmega32U2 https://github.com/tmk/tmk_keyboard/issues/361 |
diff --git a/tmk_core/protocol/lufa/adafruit_ble.h b/tmk_core/protocol/lufa/adafruit_ble.h index 351fd55ae..b3bab3ca0 100644 --- a/tmk_core/protocol/lufa/adafruit_ble.h +++ b/tmk_core/protocol/lufa/adafruit_ble.h | |||
| @@ -3,7 +3,7 @@ | |||
| 3 | * Supports the Adafruit BLE board built around the nRF51822 chip. | 3 | * Supports the Adafruit BLE board built around the nRF51822 chip. |
| 4 | */ | 4 | */ |
| 5 | #pragma once | 5 | #pragma once |
| 6 | #ifdef ADAFRUIT_BLE_ENABLE | 6 | #ifdef MODULE_ADAFRUIT_BLE |
| 7 | #include <stdbool.h> | 7 | #include <stdbool.h> |
| 8 | #include <stdint.h> | 8 | #include <stdint.h> |
| 9 | #include <string.h> | 9 | #include <string.h> |
| @@ -57,4 +57,4 @@ extern bool adafruit_ble_set_power_level(int8_t level); | |||
| 57 | } | 57 | } |
| 58 | #endif | 58 | #endif |
| 59 | 59 | ||
| 60 | #endif // ADAFRUIT_BLE_ENABLE | 60 | #endif // MODULE_ADAFRUIT_BLE |
diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c index ba49284c9..4cb23ebc8 100644 --- a/tmk_core/protocol/lufa/lufa.c +++ b/tmk_core/protocol/lufa/lufa.c | |||
| @@ -67,10 +67,11 @@ | |||
| 67 | #endif | 67 | #endif |
| 68 | 68 | ||
| 69 | #ifdef BLUETOOTH_ENABLE | 69 | #ifdef BLUETOOTH_ENABLE |
| 70 | #include "bluetooth.h" | 70 | #ifdef MODULE_ADAFRUIT_BLE |
| 71 | #endif | ||
| 72 | #ifdef ADAFRUIT_BLE_ENABLE | ||
| 73 | #include "adafruit_ble.h" | 71 | #include "adafruit_ble.h" |
| 72 | #else | ||
| 73 | #include "bluetooth.h" | ||
| 74 | #endif | ||
| 74 | #endif | 75 | #endif |
| 75 | 76 | ||
| 76 | #ifdef VIRTSER_ENABLE | 77 | #ifdef VIRTSER_ENABLE |
| @@ -602,18 +603,16 @@ static void send_keyboard(report_keyboard_t *report) | |||
| 602 | uint8_t where = where_to_send(); | 603 | uint8_t where = where_to_send(); |
| 603 | 604 | ||
| 604 | #ifdef BLUETOOTH_ENABLE | 605 | #ifdef BLUETOOTH_ENABLE |
| 605 | if (where == OUTPUT_BLUETOOTH || where == OUTPUT_USB_AND_BT) { | 606 | if (where == OUTPUT_BLUETOOTH || where == OUTPUT_USB_AND_BT) { |
| 606 | bluefruit_serial_send(0xFD); | 607 | #ifdef MODULE_ADAFRUIT_BLE |
| 607 | for (uint8_t i = 0; i < KEYBOARD_EPSIZE; i++) { | ||
| 608 | bluefruit_serial_send(report->raw[i]); | ||
| 609 | } | ||
| 610 | } | ||
| 611 | #endif | ||
| 612 | |||
| 613 | #ifdef ADAFRUIT_BLE_ENABLE | ||
| 614 | if (where == OUTPUT_ADAFRUIT_BLE) { | ||
| 615 | adafruit_ble_send_keys(report->mods, report->keys, sizeof(report->keys)); | 608 | adafruit_ble_send_keys(report->mods, report->keys, sizeof(report->keys)); |
| 616 | } | 609 | #else |
| 610 | bluefruit_serial_send(0xFD); | ||
| 611 | for (uint8_t i = 0; i < KEYBOARD_EPSIZE; i++) { | ||
| 612 | bluefruit_serial_send(report->raw[i]); | ||
| 613 | } | ||
| 614 | #endif | ||
| 615 | } | ||
| 617 | #endif | 616 | #endif |
| 618 | 617 | ||
| 619 | if (where != OUTPUT_USB && where != OUTPUT_USB_AND_BT) { | 618 | if (where != OUTPUT_USB && where != OUTPUT_USB_AND_BT) { |
| @@ -660,24 +659,22 @@ static void send_mouse(report_mouse_t *report) | |||
| 660 | uint8_t where = where_to_send(); | 659 | uint8_t where = where_to_send(); |
| 661 | 660 | ||
| 662 | #ifdef BLUETOOTH_ENABLE | 661 | #ifdef BLUETOOTH_ENABLE |
| 663 | if (where == OUTPUT_BLUETOOTH || where == OUTPUT_USB_AND_BT) { | 662 | if (where == OUTPUT_BLUETOOTH || where == OUTPUT_USB_AND_BT) { |
| 664 | bluefruit_serial_send(0xFD); | 663 | #ifdef MODULE_ADAFRUIT_BLE |
| 665 | bluefruit_serial_send(0x00); | ||
| 666 | bluefruit_serial_send(0x03); | ||
| 667 | bluefruit_serial_send(report->buttons); | ||
| 668 | bluefruit_serial_send(report->x); | ||
| 669 | bluefruit_serial_send(report->y); | ||
| 670 | bluefruit_serial_send(report->v); // should try sending the wheel v here | ||
| 671 | bluefruit_serial_send(report->h); // should try sending the wheel h here | ||
| 672 | bluefruit_serial_send(0x00); | ||
| 673 | } | ||
| 674 | #endif | ||
| 675 | |||
| 676 | #ifdef ADAFRUIT_BLE_ENABLE | ||
| 677 | if (where == OUTPUT_ADAFRUIT_BLE) { | ||
| 678 | // FIXME: mouse buttons | 664 | // FIXME: mouse buttons |
| 679 | adafruit_ble_send_mouse_move(report->x, report->y, report->v, report->h); | 665 | adafruit_ble_send_mouse_move(report->x, report->y, report->v, report->h); |
| 680 | } | 666 | #else |
| 667 | bluefruit_serial_send(0xFD); | ||
| 668 | bluefruit_serial_send(0x00); | ||
| 669 | bluefruit_serial_send(0x03); | ||
| 670 | bluefruit_serial_send(report->buttons); | ||
| 671 | bluefruit_serial_send(report->x); | ||
| 672 | bluefruit_serial_send(report->y); | ||
| 673 | bluefruit_serial_send(report->v); // should try sending the wheel v here | ||
| 674 | bluefruit_serial_send(report->h); // should try sending the wheel h here | ||
| 675 | bluefruit_serial_send(0x00); | ||
| 676 | #endif | ||
| 677 | } | ||
| 681 | #endif | 678 | #endif |
| 682 | 679 | ||
| 683 | if (where != OUTPUT_USB && where != OUTPUT_USB_AND_BT) { | 680 | if (where != OUTPUT_USB && where != OUTPUT_USB_AND_BT) { |
| @@ -727,6 +724,9 @@ static void send_consumer(uint16_t data) | |||
| 727 | 724 | ||
| 728 | #ifdef BLUETOOTH_ENABLE | 725 | #ifdef BLUETOOTH_ENABLE |
| 729 | if (where == OUTPUT_BLUETOOTH || where == OUTPUT_USB_AND_BT) { | 726 | if (where == OUTPUT_BLUETOOTH || where == OUTPUT_USB_AND_BT) { |
| 727 | #ifdef MODULE_ADAFRUIT_BLE | ||
| 728 | adafruit_ble_send_consumer_key(data, 0); | ||
| 729 | #else | ||
| 730 | static uint16_t last_data = 0; | 730 | static uint16_t last_data = 0; |
| 731 | if (data == last_data) return; | 731 | if (data == last_data) return; |
| 732 | last_data = data; | 732 | last_data = data; |
| @@ -740,12 +740,7 @@ static void send_consumer(uint16_t data) | |||
| 740 | bluefruit_serial_send(0x00); | 740 | bluefruit_serial_send(0x00); |
| 741 | bluefruit_serial_send(0x00); | 741 | bluefruit_serial_send(0x00); |
| 742 | bluefruit_serial_send(0x00); | 742 | bluefruit_serial_send(0x00); |
| 743 | } | 743 | #endif |
| 744 | #endif | ||
| 745 | |||
| 746 | #ifdef ADAFRUIT_BLE_ENABLE | ||
| 747 | if (where == OUTPUT_ADAFRUIT_BLE) { | ||
| 748 | adafruit_ble_send_consumer_key(data, 0); | ||
| 749 | } | 744 | } |
| 750 | #endif | 745 | #endif |
| 751 | 746 | ||
| @@ -1130,7 +1125,7 @@ int main(void) | |||
| 1130 | // midi_send_noteoff(&midi_device, 0, 64, 127); | 1125 | // midi_send_noteoff(&midi_device, 0, 64, 127); |
| 1131 | #endif | 1126 | #endif |
| 1132 | 1127 | ||
| 1133 | #ifdef BLUETOOTH_ENABLE | 1128 | #ifdef MODULE_ADAFRUIT_EZKEY |
| 1134 | serial_init(); | 1129 | serial_init(); |
| 1135 | #endif | 1130 | #endif |
| 1136 | 1131 | ||
| @@ -1161,7 +1156,7 @@ int main(void) | |||
| 1161 | 1156 | ||
| 1162 | print("Keyboard start.\n"); | 1157 | print("Keyboard start.\n"); |
| 1163 | while (1) { | 1158 | while (1) { |
| 1164 | #if !defined(BLUETOOTH_ENABLE) && !defined(ADAFRUIT_BLE_ENABLE) | 1159 | #if !defined(BLUETOOTH_ENABLE) |
| 1165 | while (USB_DeviceState == DEVICE_STATE_Suspended) { | 1160 | while (USB_DeviceState == DEVICE_STATE_Suspended) { |
| 1166 | print("[s]"); | 1161 | print("[s]"); |
| 1167 | suspend_power_down(); | 1162 | suspend_power_down(); |
| @@ -1182,7 +1177,7 @@ int main(void) | |||
| 1182 | rgblight_task(); | 1177 | rgblight_task(); |
| 1183 | #endif | 1178 | #endif |
| 1184 | 1179 | ||
| 1185 | #ifdef ADAFRUIT_BLE_ENABLE | 1180 | #ifdef MODULE_ADAFRUIT_BLE |
| 1186 | adafruit_ble_task(); | 1181 | adafruit_ble_task(); |
| 1187 | #endif | 1182 | #endif |
| 1188 | 1183 | ||
diff --git a/tmk_core/protocol/lufa/outputselect.c b/tmk_core/protocol/lufa/outputselect.c index 5d2457bff..0df5d3b75 100644 --- a/tmk_core/protocol/lufa/outputselect.c +++ b/tmk_core/protocol/lufa/outputselect.c | |||
| @@ -14,7 +14,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
| 14 | 14 | ||
| 15 | #include "lufa.h" | 15 | #include "lufa.h" |
| 16 | #include "outputselect.h" | 16 | #include "outputselect.h" |
| 17 | #ifdef ADAFRUIT_BLE_ENABLE | 17 | #ifdef MODULE_ADAFRUIT_BLE |
| 18 | #include "adafruit_ble.h" | 18 | #include "adafruit_ble.h" |
| 19 | #endif | 19 | #endif |
| 20 | 20 | ||
| @@ -34,9 +34,9 @@ uint8_t auto_detect_output(void) { | |||
| 34 | return OUTPUT_USB; | 34 | return OUTPUT_USB; |
| 35 | } | 35 | } |
| 36 | 36 | ||
| 37 | #ifdef ADAFRUIT_BLE_ENABLE | 37 | #ifdef MODULE_ADAFRUIT_BLE |
| 38 | if (adafruit_ble_is_connected()) { | 38 | if (adafruit_ble_is_connected()) { |
| 39 | return OUTPUT_ADAFRUIT_BLE; | 39 | return OUTPUT_BLUETOOTH; |
| 40 | } | 40 | } |
| 41 | #endif | 41 | #endif |
| 42 | 42 | ||
diff --git a/tmk_core/protocol/lufa/outputselect.h b/tmk_core/protocol/lufa/outputselect.h index 79b4dd35d..28cc3298e 100644 --- a/tmk_core/protocol/lufa/outputselect.h +++ b/tmk_core/protocol/lufa/outputselect.h | |||
| @@ -18,7 +18,6 @@ enum outputs { | |||
| 18 | OUTPUT_NONE, | 18 | OUTPUT_NONE, |
| 19 | OUTPUT_USB, | 19 | OUTPUT_USB, |
| 20 | OUTPUT_BLUETOOTH, | 20 | OUTPUT_BLUETOOTH, |
| 21 | OUTPUT_ADAFRUIT_BLE, | ||
| 22 | 21 | ||
| 23 | // backward compatibility | 22 | // backward compatibility |
| 24 | OUTPUT_USB_AND_BT | 23 | OUTPUT_USB_AND_BT |
