diff options
| author | ishtob <ishtob@gmail.com> | 2019-04-22 23:26:51 -0400 |
|---|---|---|
| committer | MechMerlin <30334081+mechmerlin@users.noreply.github.com> | 2019-04-22 20:26:51 -0700 |
| commit | ce8fb1eab923a8ce37022a898597048e5893b078 (patch) | |
| tree | eaf6e163d0ac625ed5fb333ce27f6aaed840e390 /keyboards/boston_meetup | |
| parent | a2cec0594b15dc667adf7f1b0e35cb698dc1758d (diff) | |
| download | qmk_firmware-ce8fb1eab923a8ce37022a898597048e5893b078.tar.gz qmk_firmware-ce8fb1eab923a8ce37022a898597048e5893b078.zip | |
Boston meetup 2019 (#5611)
* Add boston_meetup folder for community meetup macropads
* Modify OLED indicators to match macropad
* PR cleanup
* Spelling fix
Co-Authored-By: ishtob <ishtob@gmail.com>
* convert custom matrix to standard matrix defines
* refactor layer define with enum
* Remove un-used files
* remove "\" in keymap
Diffstat (limited to 'keyboards/boston_meetup')
| -rw-r--r-- | keyboards/boston_meetup/2019/2019.c | 217 | ||||
| -rw-r--r-- | keyboards/boston_meetup/2019/2019.h | 19 | ||||
| -rw-r--r-- | keyboards/boston_meetup/2019/config.h | 196 | ||||
| -rw-r--r-- | keyboards/boston_meetup/2019/info.json | 12 | ||||
| -rw-r--r-- | keyboards/boston_meetup/2019/keymaps/default/keymap.c | 166 | ||||
| -rw-r--r-- | keyboards/boston_meetup/2019/keymaps/default/readme.md | 51 | ||||
| -rw-r--r-- | keyboards/boston_meetup/2019/keymaps/readme.md | 22 | ||||
| -rw-r--r-- | keyboards/boston_meetup/2019/readme.md | 13 | ||||
| -rw-r--r-- | keyboards/boston_meetup/2019/rules.mk | 24 | ||||
| -rw-r--r-- | keyboards/boston_meetup/boston_meetup.c | 2 | ||||
| -rw-r--r-- | keyboards/boston_meetup/boston_meetup.h | 19 | ||||
| -rw-r--r-- | keyboards/boston_meetup/config.h | 60 | ||||
| -rw-r--r-- | keyboards/boston_meetup/readme.md | 14 | ||||
| -rw-r--r-- | keyboards/boston_meetup/rules.mk | 2 |
14 files changed, 817 insertions, 0 deletions
diff --git a/keyboards/boston_meetup/2019/2019.c b/keyboards/boston_meetup/2019/2019.c new file mode 100644 index 000000000..9baed223b --- /dev/null +++ b/keyboards/boston_meetup/2019/2019.c | |||
| @@ -0,0 +1,217 @@ | |||
| 1 | /* Copyright 2019 ishtob | ||
| 2 | * | ||
| 3 | * This program is free software: you can redistribute it and/or modify | ||
| 4 | * it under the terms of the GNU General Public License as published by | ||
| 5 | * the Free Software Foundation, either version 2 of the License, or | ||
| 6 | * (at your option) any later version. | ||
| 7 | * | ||
| 8 | * This program is distributed in the hope that it will be useful, | ||
| 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 11 | * GNU General Public License for more details. | ||
| 12 | * | ||
| 13 | * You should have received a copy of the GNU General Public License | ||
| 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 15 | */ | ||
| 16 | #include "2019.h" | ||
| 17 | #include "qwiic.h" | ||
| 18 | #include "action_layer.h" | ||
| 19 | #include "haptic.h" | ||
| 20 | |||
| 21 | #ifdef RGB_MATRIX_ENABLE | ||
| 22 | #include "rgblight.h" | ||
| 23 | |||
| 24 | const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = { | ||
| 25 | /*{row | col << 4} | ||
| 26 | | {x=0..224, y=0..64} | ||
| 27 | | | modifier | ||
| 28 | | | | */ | ||
| 29 | {{1|(3<<4)}, {188, 16}, 0}, | ||
| 30 | {{3|(3<<4)}, {187, 48}, 0}, | ||
| 31 | {{4|(2<<4)}, {149, 64}, 0}, | ||
| 32 | {{4|(1<<4)}, {112, 64}, 0}, | ||
| 33 | {{3|(0<<4)}, {37, 48}, 0}, | ||
| 34 | {{1|(0<<4)}, {38, 16}, 0} | ||
| 35 | }; | ||
| 36 | #endif | ||
| 37 | |||
| 38 | uint8_t *o_fb; | ||
| 39 | |||
| 40 | uint16_t counterst = 0; | ||
| 41 | |||
| 42 | |||
| 43 | |||
| 44 | #ifdef QWIIC_MICRO_OLED_ENABLE | ||
| 45 | |||
| 46 | /* screen off after this many milliseconds */ | ||
| 47 | #include "timer.h" | ||
| 48 | #define ScreenOffInterval 60000 /* milliseconds */ | ||
| 49 | static uint16_t last_flush; | ||
| 50 | |||
| 51 | volatile uint8_t led_numlock = false; | ||
| 52 | volatile uint8_t led_capslock = false; | ||
| 53 | volatile uint8_t led_scrolllock = false; | ||
| 54 | |||
| 55 | static uint8_t layer; | ||
| 56 | static bool queue_for_send = false; | ||
| 57 | static uint8_t encoder_value = 32; | ||
| 58 | |||
| 59 | __attribute__ ((weak)) | ||
| 60 | void draw_ui(void) { | ||
| 61 | clear_buffer(); | ||
| 62 | last_flush = timer_read(); | ||
| 63 | send_command(DISPLAYON); | ||
| 64 | |||
| 65 | /* Boston MK title is 55 x 10 pixels */ | ||
| 66 | #define NAME_X 0 | ||
| 67 | #define NAME_Y 0 | ||
| 68 | |||
| 69 | draw_string(NAME_X + 1, NAME_Y + 2, "BOSTON MK", PIXEL_ON, NORM, 0); | ||
| 70 | |||
| 71 | /* Layer indicator is 41 x 10 pixels */ | ||
| 72 | #define LAYER_INDICATOR_X 60 | ||
| 73 | #define LAYER_INDICATOR_Y 0 | ||
| 74 | |||
| 75 | draw_string(LAYER_INDICATOR_X + 1, LAYER_INDICATOR_Y + 2, "LAYER", PIXEL_ON, NORM, 0); | ||
| 76 | draw_rect_filled_soft(LAYER_INDICATOR_X + 32, LAYER_INDICATOR_Y + 1, 9, 9, PIXEL_ON, NORM); | ||
| 77 | draw_char(LAYER_INDICATOR_X + 34, LAYER_INDICATOR_Y + 2, layer + 0x30, PIXEL_ON, XOR, 0); | ||
| 78 | |||
| 79 | /* Matrix display is 12 x 12 pixels */ | ||
| 80 | #define MATRIX_DISPLAY_X 8 | ||
| 81 | #define MATRIX_DISPLAY_Y 16 | ||
| 82 | |||
| 83 | for (uint8_t x = 0; x < MATRIX_ROWS; x++) { | ||
| 84 | for (uint8_t y = 0; y < MATRIX_COLS; y++) { | ||
| 85 | draw_pixel(MATRIX_DISPLAY_X + y + y + 2, MATRIX_DISPLAY_Y + x + x + 2,(matrix_get_row(x) & (1 << y)) > 0, NORM); | ||
| 86 | draw_pixel(MATRIX_DISPLAY_X + y + y + 3, MATRIX_DISPLAY_Y + x + x + 2,(matrix_get_row(x) & (1 << y)) > 0, NORM); | ||
| 87 | draw_pixel(MATRIX_DISPLAY_X + y + y + 2, MATRIX_DISPLAY_Y + x + x + 3,(matrix_get_row(x) & (1 << y)) > 0, NORM); | ||
| 88 | draw_pixel(MATRIX_DISPLAY_X + y + y + 3, MATRIX_DISPLAY_Y + x + x + 3,(matrix_get_row(x) & (1 << y)) > 0, NORM); | ||
| 89 | |||
| 90 | } | ||
| 91 | } | ||
| 92 | draw_rect_soft(MATRIX_DISPLAY_X, MATRIX_DISPLAY_Y, 12, 12, PIXEL_ON, NORM); | ||
| 93 | /* hadron oled location on thumbnail */ | ||
| 94 | draw_rect_filled_soft(MATRIX_DISPLAY_X + 5, MATRIX_DISPLAY_Y + 2, 6, 2, PIXEL_ON, NORM); | ||
| 95 | /* | ||
| 96 | draw_rect_soft(0, 13, 64, 6, PIXEL_ON, NORM); | ||
| 97 | draw_line_vert(encoder_value, 13, 6, PIXEL_ON, NORM); | ||
| 98 | |||
| 99 | */ | ||
| 100 | |||
| 101 | /* Mod display is 41 x 16 pixels */ | ||
| 102 | #define MOD_DISPLAY_X 60 | ||
| 103 | #define MOD_DISPLAY_Y 20 | ||
| 104 | |||
| 105 | uint8_t mods = get_mods(); | ||
| 106 | if (mods & MOD_LSFT) { | ||
| 107 | draw_rect_filled_soft(MOD_DISPLAY_X + 0, MOD_DISPLAY_Y, 5 + (1 * 6), 11, PIXEL_ON, NORM); | ||
| 108 | draw_string(MOD_DISPLAY_X + 3, MOD_DISPLAY_Y + 2, "S", PIXEL_OFF, NORM, 0); | ||
| 109 | } else { | ||
| 110 | draw_string(MOD_DISPLAY_X + 3, MOD_DISPLAY_Y + 2, "S", PIXEL_ON, NORM, 0); | ||
| 111 | } | ||
| 112 | if (mods & MOD_LCTL) { | ||
| 113 | draw_rect_filled_soft(MOD_DISPLAY_X + 10, MOD_DISPLAY_Y, 5 + (1 * 6), 11, PIXEL_ON, NORM); | ||
| 114 | draw_string(MOD_DISPLAY_X + 13, MOD_DISPLAY_Y + 2, "C", PIXEL_OFF, NORM, 0); | ||
| 115 | } else { | ||
| 116 | draw_string(MOD_DISPLAY_X + 13, MOD_DISPLAY_Y + 2, "C", PIXEL_ON, NORM, 0); | ||
| 117 | } | ||
| 118 | if (mods & MOD_LALT) { | ||
| 119 | draw_rect_filled_soft(MOD_DISPLAY_X + 20, MOD_DISPLAY_Y, 5 + (1 * 6), 11, PIXEL_ON, NORM); | ||
| 120 | draw_string(MOD_DISPLAY_X + 23, MOD_DISPLAY_Y + 2, "A", PIXEL_OFF, NORM, 0); | ||
| 121 | } else { | ||
| 122 | draw_string(MOD_DISPLAY_X + 23, MOD_DISPLAY_Y + 2, "A", PIXEL_ON, NORM, 0); | ||
| 123 | } | ||
| 124 | if (mods & MOD_LGUI) { | ||
| 125 | draw_rect_filled_soft(MOD_DISPLAY_X + 30, MOD_DISPLAY_Y, 5 + (1 * 6), 11, PIXEL_ON, NORM); | ||
| 126 | draw_string(MOD_DISPLAY_X + 33, MOD_DISPLAY_Y + 2, "G", PIXEL_OFF, NORM, 0); | ||
| 127 | } else { | ||
| 128 | draw_string(MOD_DISPLAY_X + 33, MOD_DISPLAY_Y + 2, "G", PIXEL_ON, NORM, 0); | ||
| 129 | } | ||
| 130 | |||
| 131 | /* Lock display is 23 x 32 */ | ||
| 132 | #define LOCK_DISPLAY_X 104 | ||
| 133 | #define LOCK_DISPLAY_Y 0 | ||
| 134 | |||
| 135 | if (led_numlock == true) { | ||
| 136 | draw_rect_filled_soft(LOCK_DISPLAY_X, LOCK_DISPLAY_Y, 5 + (3 * 6), 9, PIXEL_ON, NORM); | ||
| 137 | draw_string(LOCK_DISPLAY_X + 3, LOCK_DISPLAY_Y + 1, "NUM", PIXEL_OFF, NORM, 0); | ||
| 138 | } else if (led_numlock == false) { | ||
| 139 | draw_string(LOCK_DISPLAY_X + 3, LOCK_DISPLAY_Y + 1, "NUM", PIXEL_ON, NORM, 0); | ||
| 140 | } | ||
| 141 | if (led_capslock == true) { | ||
| 142 | draw_rect_filled_soft(LOCK_DISPLAY_X + 0, LOCK_DISPLAY_Y + 11, 5 + (3 * 6), 9, PIXEL_ON, NORM); | ||
| 143 | draw_string(LOCK_DISPLAY_X + 3, LOCK_DISPLAY_Y + 11 +1, "CAP", PIXEL_OFF, NORM, 0); | ||
| 144 | } else if (led_capslock == false) { | ||
| 145 | draw_string(LOCK_DISPLAY_X + 3, LOCK_DISPLAY_Y + 11 +1, "CAP", PIXEL_ON, NORM, 0); | ||
| 146 | } | ||
| 147 | |||
| 148 | if (led_scrolllock == true) { | ||
| 149 | draw_rect_filled_soft(LOCK_DISPLAY_X + 0, LOCK_DISPLAY_Y + 22, 5 + (3 * 6), 9, PIXEL_ON, NORM); | ||
| 150 | draw_string(LOCK_DISPLAY_X + 3, LOCK_DISPLAY_Y + 22 +1, "SCR", PIXEL_OFF, NORM, 0); | ||
| 151 | } else if (led_scrolllock == false) { | ||
| 152 | draw_string(LOCK_DISPLAY_X + 3, LOCK_DISPLAY_Y + 22 +1, "SCR", PIXEL_ON, NORM, 0); | ||
| 153 | } | ||
| 154 | send_buffer(); | ||
| 155 | } | ||
| 156 | |||
| 157 | void led_set_user(uint8_t usb_led) { | ||
| 158 | if (IS_LED_ON(usb_led, USB_LED_NUM_LOCK)) { | ||
| 159 | if (led_numlock == false){led_numlock = true;} | ||
| 160 | } else { | ||
| 161 | if (led_numlock == true){led_numlock = false;} | ||
| 162 | } | ||
| 163 | if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) { | ||
| 164 | if (led_capslock == false){led_capslock = true;} | ||
| 165 | } else { | ||
| 166 | if (led_capslock == true){led_capslock = false;} | ||
| 167 | } | ||
| 168 | if (IS_LED_ON(usb_led, USB_LED_SCROLL_LOCK)) { | ||
| 169 | if (led_scrolllock == false){led_scrolllock = true;} | ||
| 170 | } else { | ||
| 171 | if (led_scrolllock == true){led_scrolllock = false;} | ||
| 172 | } | ||
| 173 | } | ||
| 174 | |||
| 175 | uint32_t layer_state_set_kb(uint32_t state) { | ||
| 176 | state = layer_state_set_user(state); | ||
| 177 | layer = biton32(state); | ||
| 178 | queue_for_send = true; | ||
| 179 | return state; | ||
| 180 | } | ||
| 181 | |||
| 182 | bool process_record_kb(uint16_t keycode, keyrecord_t *record) { | ||
| 183 | queue_for_send = true; | ||
| 184 | return process_record_user(keycode, record); | ||
| 185 | } | ||
| 186 | |||
| 187 | void encoder_update_kb(uint8_t index, bool clockwise) { | ||
| 188 | encoder_value = (encoder_value + (clockwise ? 1 : -1)) % 64; | ||
| 189 | queue_for_send = true; | ||
| 190 | } | ||
| 191 | |||
| 192 | #endif | ||
| 193 | |||
| 194 | void matrix_init_kb(void) { | ||
| 195 | queue_for_send = true; | ||
| 196 | matrix_init_user(); | ||
| 197 | } | ||
| 198 | |||
| 199 | void matrix_scan_kb(void) { | ||
| 200 | if (queue_for_send) { | ||
| 201 | #ifdef QWIIC_MICRO_OLED_ENABLE | ||
| 202 | draw_ui(); | ||
| 203 | #endif | ||
| 204 | queue_for_send = false; | ||
| 205 | } | ||
| 206 | #ifdef QWIIC_MICRO_OLED_ENABLE | ||
| 207 | if (timer_elapsed(last_flush) > ScreenOffInterval) { | ||
| 208 | send_command(DISPLAYOFF); /* 0xAE */ | ||
| 209 | } | ||
| 210 | #endif | ||
| 211 | if (counterst == 0) { | ||
| 212 | //testPatternFB(o_fb); | ||
| 213 | } | ||
| 214 | counterst = (counterst + 1) % 1024; | ||
| 215 | //rgblight_task(); | ||
| 216 | matrix_scan_user(); | ||
| 217 | } | ||
diff --git a/keyboards/boston_meetup/2019/2019.h b/keyboards/boston_meetup/2019/2019.h new file mode 100644 index 000000000..fbba5c315 --- /dev/null +++ b/keyboards/boston_meetup/2019/2019.h | |||
| @@ -0,0 +1,19 @@ | |||
| 1 | /* Copyright 2019 ishtob | ||
| 2 | * | ||
| 3 | * This program is free software: you can redistribute it and/or modify | ||
| 4 | * it under the terms of the GNU General Public License as published by | ||
| 5 | * the Free Software Foundation, either version 2 of the License, or | ||
| 6 | * (at your option) any later version. | ||
| 7 | * | ||
| 8 | * This program is distributed in the hope that it will be useful, | ||
| 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 11 | * GNU General Public License for more details. | ||
| 12 | * | ||
| 13 | * You should have received a copy of the GNU General Public License | ||
| 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 15 | */ | ||
| 16 | #pragma once | ||
| 17 | |||
| 18 | #include "boston_meetup.h" | ||
| 19 | |||
diff --git a/keyboards/boston_meetup/2019/config.h b/keyboards/boston_meetup/2019/config.h new file mode 100644 index 000000000..565281644 --- /dev/null +++ b/keyboards/boston_meetup/2019/config.h | |||
| @@ -0,0 +1,196 @@ | |||
| 1 | #pragma once | ||
| 2 | |||
| 3 | /* USB Device descriptor parameter */ | ||
| 4 | #define DEVICE_VER 0x07E3 | ||
| 5 | |||
| 6 | #undef MATRIX_ROWS | ||
| 7 | #undef MATRIX_COLS | ||
| 8 | /* key matrix size */ | ||
| 9 | #define MATRIX_ROWS 4 | ||
| 10 | #define MATRIX_COLS 4 | ||
| 11 | |||
| 12 | /* | ||
| 13 | * Keyboard Matrix Assignments | ||
| 14 | * | ||
| 15 | * Change this to how you wired your keyboard | ||
| 16 | * COLS: AVR pins used for columns, left to right | ||
| 17 | * ROWS: AVR pins used for rows, top to bottom | ||
| 18 | * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) | ||
| 19 | * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) | ||
| 20 | * | ||
| 21 | */ | ||
| 22 | |||
| 23 | #undef MATRIX_ROW_PINS | ||
| 24 | #undef MATRIX_COL_PINS | ||
| 25 | |||
| 26 | #define MATRIX_ROW_PINS { A3, B8, B9, B1 } | ||
| 27 | #define MATRIX_COL_PINS { A7, A8, B2, B10 } | ||
| 28 | |||
| 29 | #define NUMBER_OF_ENCODERS 1 | ||
| 30 | #define ENCODERS_PAD_A { B13 } | ||
| 31 | #define ENCODERS_PAD_B { B14 } | ||
| 32 | |||
| 33 | //Audio | ||
| 34 | #undef AUDIO_VOICES | ||
| 35 | #undef C6_AUDIO | ||
| 36 | |||
| 37 | #ifdef AUDIO_ENABLE | ||
| 38 | #define STARTUP_SONG SONG(ONE_UP_SOUND) | ||
| 39 | // #define STARTUP_SONG SONG(NO_SOUND) | ||
| 40 | |||
| 41 | #define AUDIO_CLICKY | ||
| 42 | /* to enable clicky on startup */ | ||
| 43 | //#define AUDIO_CLICKY_ON | ||
| 44 | #define AUDIO_CLICKY_FREQ_RANDOMNESS 1.5f | ||
| 45 | #endif | ||
| 46 | |||
| 47 | //configure qwiic micro_oled driver for the 128x32 oled | ||
| 48 | #ifdef QWIIC_MICRO_OLED_ENABLE | ||
| 49 | |||
| 50 | #undef I2C_ADDRESS_SA0_1 | ||
| 51 | #define I2C_ADDRESS_SA0_1 0b0111100 | ||
| 52 | #define LCDWIDTH 128 | ||
| 53 | #define LCDHEIGHT 32 | ||
| 54 | #define micro_oled_rotate_180 | ||
| 55 | |||
| 56 | #endif | ||
| 57 | /* | ||
| 58 | * Keyboard Matrix Assignments | ||
| 59 | * | ||
| 60 | * Change this to how you wired your keyboard | ||
| 61 | * COLS: AVR pins used for columns, left to right | ||
| 62 | * ROWS: AVR pins used for rows, top to bottom | ||
| 63 | * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) | ||
| 64 | * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) | ||
| 65 | * | ||
| 66 | */ | ||
| 67 | |||
| 68 | /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ | ||
| 69 | #define DEBOUNCE 6 | ||
| 70 | |||
| 71 | /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ | ||
| 72 | //#define LOCKING_SUPPORT_ENABLE | ||
| 73 | /* Locking resynchronize hack */ | ||
| 74 | //#define LOCKING_RESYNC_ENABLE | ||
| 75 | |||
| 76 | /* | ||
| 77 | * Force NKRO | ||
| 78 | * | ||
| 79 | * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved | ||
| 80 | * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the | ||
| 81 | * makefile for this to work.) | ||
| 82 | * | ||
| 83 | * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) | ||
| 84 | * until the next keyboard reset. | ||
| 85 | * | ||
| 86 | * NKRO may prevent your keystrokes from being detected in the BIOS, but it is | ||
| 87 | * fully operational during normal computer usage. | ||
| 88 | * | ||
| 89 | * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) | ||
| 90 | * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by | ||
| 91 | * bootmagic, NKRO mode will always be enabled until it is toggled again during a | ||
| 92 | * power-up. | ||
| 93 | * | ||
| 94 | */ | ||
| 95 | //#define FORCE_NKRO | ||
| 96 | |||
| 97 | /* | ||
| 98 | * Feature disable options | ||
| 99 | * These options are also useful to firmware size reduction. | ||
| 100 | */ | ||
| 101 | |||
| 102 | /* disable debug print */ | ||
| 103 | //#define NO_DEBUG | ||
| 104 | |||
| 105 | /* disable print */ | ||
| 106 | //#define NO_PRINT | ||
| 107 | |||
| 108 | /* disable action features */ | ||
| 109 | //#define NO_ACTION_LAYER | ||
| 110 | //#define NO_ACTION_TAPPING | ||
| 111 | //#define NO_ACTION_ONESHOT | ||
| 112 | //#define NO_ACTION_MACRO | ||
| 113 | //#define NO_ACTION_FUNCTION | ||
| 114 | /* | ||
| 115 | * MIDI options | ||
| 116 | */ | ||
| 117 | |||
| 118 | /* Prevent use of disabled MIDI features in the keymap */ | ||
| 119 | //#define MIDI_ENABLE_STRICT 1 | ||
| 120 | |||
| 121 | /* enable basic MIDI features: | ||
| 122 | - MIDI notes can be sent when in Music mode is on | ||
| 123 | */ | ||
| 124 | |||
| 125 | #define MIDI_BASIC | ||
| 126 | |||
| 127 | /* enable advanced MIDI features: | ||
| 128 | - MIDI notes can be added to the keymap | ||
| 129 | - Octave shift and transpose | ||
| 130 | - Virtual sustain, portamento, and modulation wheel | ||
| 131 | - etc. | ||
| 132 | */ | ||
| 133 | //#define MIDI_ADVANCED | ||
| 134 | |||
| 135 | /* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ | ||
| 136 | //#define MIDI_TONE_KEYCODE_OCTAVES 2 | ||
| 137 | |||
| 138 | /* Haptic Driver initialization settings | ||
| 139 | * Feedback Control Settings */ | ||
| 140 | #define FB_ERM_LRA 1 /* For ERM:0 or LRA:1*/ | ||
| 141 | #define FB_BRAKEFACTOR 6 /* For 1x:0, 2x:1, 3x:2, 4x:3, 6x:4, 8x:5, 16x:6, Disable Braking:7 */ | ||
| 142 | #define FB_LOOPGAIN 1 /* For Low:0, Medium:1, High:2, Very High:3 */ | ||
| 143 | |||
| 144 | /* default 3V ERM vibration motor voltage and library*/ | ||
| 145 | #if FB_ERM_LRA == 0 | ||
| 146 | #define RATED_VOLTAGE 3 | ||
| 147 | #define V_RMS 2.3 | ||
| 148 | #define V_PEAK 3.30 | ||
| 149 | /* Library Selection */ | ||
| 150 | #define LIB_SELECTION 4 /* For Empty:0' TS2200 library A to D:1-5, LRA Library: 6 */ | ||
| 151 | |||
| 152 | /* default 2V LRA voltage and library */ | ||
| 153 | #elif FB_ERM_LRA == 1 | ||
| 154 | #define RATED_VOLTAGE 2 | ||
| 155 | #define V_RMS 2.0 | ||
| 156 | #define V_PEAK 2.85 | ||
| 157 | #define F_LRA 200 | ||
| 158 | /* Library Selection */ | ||
| 159 | #define LIB_SELECTION 6 /* For Empty:0' TS2200 library A to D:1-5, LRA Library: 6 */ | ||
| 160 | |||
| 161 | #endif | ||
| 162 | |||
| 163 | /* Control 1 register settings */ | ||
| 164 | #define DRIVE_TIME 25 | ||
| 165 | #define AC_COUPLE 0 | ||
| 166 | #define STARTUP_BOOST 1 | ||
| 167 | |||
| 168 | /* Control 2 Settings */ | ||
| 169 | #define BIDIR_INPUT 1 | ||
| 170 | #define BRAKE_STAB 1 /* Loopgain is reduced when braking is almost complete to improve stability */ | ||
| 171 | #define SAMPLE_TIME 3 | ||
| 172 | #define BLANKING_TIME 1 | ||
| 173 | #define IDISS_TIME 1 | ||
| 174 | |||
| 175 | /* Control 3 settings */ | ||
| 176 | #define NG_THRESH 2 | ||
| 177 | #define ERM_OPEN_LOOP 1 | ||
| 178 | #define SUPPLY_COMP_DIS 0 | ||
| 179 | #define DATA_FORMAT_RTO 0 | ||
| 180 | #define LRA_DRIVE_MODE 0 | ||
| 181 | #define N_PWM_ANALOG 0 | ||
| 182 | #define LRA_OPEN_LOOP 0 | ||
| 183 | /* Control 4 settings */ | ||
| 184 | #define ZC_DET_TIME 0 | ||
| 185 | #define AUTO_CAL_TIME 3 | ||
| 186 | |||
| 187 | #define RGBLIGHT_ANIMATIONS | ||
| 188 | |||
| 189 | #define RGBLED_NUM 10 | ||
| 190 | #define RGB_DI_PIN B5 | ||
| 191 | #define DRIVER_LED_TOTAL RGBLED_NUM | ||
| 192 | |||
| 193 | #define RGB_MATRIX_KEYPRESSES | ||
| 194 | |||
| 195 | #define SOLENOID_PIN A14 | ||
| 196 | |||
diff --git a/keyboards/boston_meetup/2019/info.json b/keyboards/boston_meetup/2019/info.json new file mode 100644 index 000000000..15ab72935 --- /dev/null +++ b/keyboards/boston_meetup/2019/info.json | |||
| @@ -0,0 +1,12 @@ | |||
| 1 | { | ||
| 2 | "keyboard_name": "Boston Meetup 2019", | ||
| 3 | "url": "", | ||
| 4 | "maintainer": "qmk", | ||
| 5 | "width": 4, | ||
| 6 | "height": 4, | ||
| 7 | "layouts": { | ||
| 8 | "LAYOUT": { | ||
| 9 | "key_count": 13, | ||
| 10 | "layout": [{"label":"K00", "x":0, "y":0}, {"label":"K10", "x":0, "y":1}, {"label":"K11", "x":1, "y":1}, {"label":"K12", "x":2, "y":1}, {"label":"K13", "x":3, "y":1}, {"label":"K20", "x":0, "y":2}, {"label":"K21", "x":1, "y":2}, {"label":"K22", "x":2, "y":2}, {"label":"K23", "x":3, "y":2}, {"label":"K30", "x":0, "y":3}, {"label":"K31", "x":1, "y":3}, {"label":"K32", "x":2, "y":3}, {"label":"K33", "x":3, "y":3}] } | ||
| 11 | } | ||
| 12 | } | ||
diff --git a/keyboards/boston_meetup/2019/keymaps/default/keymap.c b/keyboards/boston_meetup/2019/keymaps/default/keymap.c new file mode 100644 index 000000000..52d67273e --- /dev/null +++ b/keyboards/boston_meetup/2019/keymaps/default/keymap.c | |||
| @@ -0,0 +1,166 @@ | |||
| 1 | #include QMK_KEYBOARD_H | ||
| 2 | |||
| 3 | // Each layer gets a name for readability, which is then used in the keymap matrix below. | ||
| 4 | // The underscores don't mean anything - you can have a layer called STUFF or any other name. | ||
| 5 | // Layer names don't all need to be of the same length, obviously, and you can also skip them | ||
| 6 | // entirely and just use numbers. | ||
| 7 | |||
| 8 | enum custom_layers { | ||
| 9 | _BASE, | ||
| 10 | _LOWER, | ||
| 11 | _RAISE, | ||
| 12 | _ADJUST | ||
| 13 | }; | ||
| 14 | |||
| 15 | enum custom_keycodes { | ||
| 16 | BASE = SAFE_RANGE, | ||
| 17 | LOWER, | ||
| 18 | RAISE, | ||
| 19 | KC_DEMOMACRO | ||
| 20 | }; | ||
| 21 | |||
| 22 | // Custom macros | ||
| 23 | #define CTL_ESC CTL_T(KC_ESC) // Tap for Esc, hold for Ctrl | ||
| 24 | #define CTL_TTAB CTL_T(KC_TAB) // Tap for Esc, hold for Ctrl | ||
| 25 | #define CTL_ENT CTL_T(KC_ENT) // Tap for Enter, hold for Ctrl | ||
| 26 | #define SFT_ENT SFT_T(KC_ENT) // Tap for Enter, hold for Shift | ||
| 27 | // Requires KC_TRNS/_______ for the trigger key in the destination layer | ||
| 28 | #define LT_MC(kc) LT(_MOUSECURSOR, kc) // L-ayer T-ap M-ouse C-ursor | ||
| 29 | #define LT_RAI(kc) LT(_RAISE, kc) // L-ayer T-ap to Raise | ||
| 30 | #define DEMOMACRO KC_DEMOMACRO // Sample for macros | ||
| 31 | |||
| 32 | |||
| 33 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
| 34 | |||
| 35 | /* Base | ||
| 36 | * ,------. | ||
| 37 | * | Esc | | ||
| 38 | * |------+------+-------------. | ||
| 39 | * | : | 7 | 8 | 9 | | ||
| 40 | * |------+------+------+------| | ||
| 41 | * | RAISE| 4 | 5 | 6 | | ||
| 42 | * |------+------+------+------| | ||
| 43 | * | LOWER| 1 | 2 | 3 | | ||
| 44 | * `---------------------------' | ||
| 45 | */ | ||
| 46 | [_BASE] = LAYOUT( | ||
| 47 | KC_ESC, | ||
| 48 | KC_COLN, KC_P7, KC_P8, KC_P9, | ||
| 49 | RAISE, KC_P4, KC_P5, KC_P6, | ||
| 50 | LOWER, KC_P1, KC_P2, KC_P3 | ||
| 51 | ), | ||
| 52 | |||
| 53 | /* Lower | ||
| 54 | * ,------. | ||
| 55 | * | Nmlk | | ||
| 56 | * |------+------+-------------. | ||
| 57 | * | : | / | * | - | | ||
| 58 | * |------+------+------+------| | ||
| 59 | * | | | = | + | | ||
| 60 | * |------+------+------+------| | ||
| 61 | * | | 0 | . | ENT | | ||
| 62 | * `---------------------------' | ||
| 63 | */ | ||
| 64 | [_LOWER] = LAYOUT( | ||
| 65 | KC_NLCK, | ||
| 66 | KC_COLN, KC_PSLS, KC_PAST, KC_PMNS, | ||
| 67 | _______, XXXXXXX, KC_EQL, KC_PPLS, | ||
| 68 | _______, KC_P0, KC_PDOT, KC_PENT | ||
| 69 | ), | ||
| 70 | |||
| 71 | /* Raise | ||
| 72 | * ,------. | ||
| 73 | * | Esc | | ||
| 74 | * |------+------+-------------. | ||
| 75 | * |RGB TG|RGB M+|RGB M-| | | ||
| 76 | * |------+------+------+------| | ||
| 77 | * | |RGB H+|RGB S+|RGB V+| | ||
| 78 | * |------+------+------+------| | ||
| 79 | * | ` |RGB H-|RGB S-|RGB V-| | ||
| 80 | * `---------------------------' | ||
| 81 | */ | ||
| 82 | [_RAISE] = LAYOUT( | ||
| 83 | KC_NLCK, | ||
| 84 | RGB_TOG, RGB_MOD, RGB_RMOD, XXXXXXX, | ||
| 85 | _______, RGB_HUI, RGB_SAI, RGB_VAI, | ||
| 86 | _______, RGB_HUD, RGB_SAD, RGB_VAD | ||
| 87 | |||
| 88 | ), | ||
| 89 | |||
| 90 | /* Adjust | ||
| 91 | * ,------. | ||
| 92 | * | DFU | | ||
| 93 | * |------+------+-------------. | ||
| 94 | * |HPT TG|HPT FB|HPT RS| BKSP | | ||
| 95 | * |------+------+------+------| | ||
| 96 | * | |HPT M+| | | | ||
| 97 | * |------+------+------+------| | ||
| 98 | * | |HPT M-|Clk TG| Del | | ||
| 99 | * `---------------------------' | ||
| 100 | */ | ||
| 101 | [_ADJUST] = LAYOUT( | ||
| 102 | RESET, | ||
| 103 | HPT_TOG, HPT_FBK, HPT_RST, KC_BSPC, | ||
| 104 | _______, HPT_MODI, XXXXXXX, XXXXXXX, | ||
| 105 | _______, HPT_MODD, CK_TOGG, KC_DEL | ||
| 106 | ), | ||
| 107 | |||
| 108 | |||
| 109 | }; | ||
| 110 | |||
| 111 | uint32_t layer_state_set_user(uint32_t state) { | ||
| 112 | return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); | ||
| 113 | } | ||
| 114 | |||
| 115 | |||
| 116 | bool process_record_user(uint16_t keycode, keyrecord_t *record) { | ||
| 117 | switch (keycode) { | ||
| 118 | case KC_DEMOMACRO: | ||
| 119 | if (record->event.pressed) { | ||
| 120 | // when keycode KC_DEMOMACRO is pressed | ||
| 121 | SEND_STRING("QMK is the best thing ever!"); | ||
| 122 | } else { | ||
| 123 | // when keycode KC_DEMOMACRO is released | ||
| 124 | } | ||
| 125 | break; | ||
| 126 | case LOWER: | ||
| 127 | if (record->event.pressed) { | ||
| 128 | //not sure how to have keyboard check mode and set it to a variable, so my work around | ||
| 129 | //uses another variable that would be set to true after the first time a reactive key is pressed. | ||
| 130 | layer_on(_LOWER); | ||
| 131 | } else { | ||
| 132 | layer_off(_LOWER); | ||
| 133 | } | ||
| 134 | return false; | ||
| 135 | break; | ||
| 136 | case RAISE: | ||
| 137 | if (record->event.pressed) { | ||
| 138 | //not sure how to have keyboard check mode and set it to a variable, so my work around | ||
| 139 | //uses another variable that would be set to true after the first time a reactive key is pressed. | ||
| 140 | layer_on(_RAISE); | ||
| 141 | } else { | ||
| 142 | layer_off(_RAISE); | ||
| 143 | } | ||
| 144 | return false; | ||
| 145 | break; | ||
| 146 | } | ||
| 147 | return true; | ||
| 148 | } | ||
| 149 | |||
| 150 | bool music_mask_user(uint16_t keycode) { | ||
| 151 | switch (keycode) { | ||
| 152 | case RAISE: | ||
| 153 | case LOWER: | ||
| 154 | return false; | ||
| 155 | default: | ||
| 156 | return true; | ||
| 157 | } | ||
| 158 | } | ||
| 159 | |||
| 160 | void matrix_init_user(void) { | ||
| 161 | } | ||
| 162 | |||
| 163 | |||
| 164 | void matrix_scan_user(void) { | ||
| 165 | } | ||
| 166 | |||
diff --git a/keyboards/boston_meetup/2019/keymaps/default/readme.md b/keyboards/boston_meetup/2019/keymaps/default/readme.md new file mode 100644 index 000000000..75f80b519 --- /dev/null +++ b/keyboards/boston_meetup/2019/keymaps/default/readme.md | |||
| @@ -0,0 +1,51 @@ | |||
| 1 | # The Default Boston Meetup 2019 board Layout | ||
| 2 | |||
| 3 | Keymap: | ||
| 4 | ``` | ||
| 5 | Base | ||
| 6 | ,------. | ||
| 7 | | Esc | | ||
| 8 | |------+------+-------------. | ||
| 9 | | : | 7 | 8 | 9 | | ||
| 10 | |------+------+------+------| | ||
| 11 | | RAISE| 4 | 5 | 6 | | ||
| 12 | |------+------+------+------| | ||
| 13 | | LOWER| 1 | 2 | 3 | | ||
| 14 | `---------------------------' | ||
| 15 | |||
| 16 | Lower | ||
| 17 | ,------. | ||
| 18 | | Nmlk | | ||
| 19 | |------+------+-------------. | ||
| 20 | | : | / | * | - | | ||
| 21 | |------+------+------+------| | ||
| 22 | | | | = | + | | ||
| 23 | |------+------+------+------| | ||
| 24 | | | 0 | . | ENT | | ||
| 25 | `---------------------------' | ||
| 26 | |||
| 27 | Raise | ||
| 28 | ,------. | ||
| 29 | | Esc | | ||
| 30 | |------+------+-------------. | ||
| 31 | |RGB TG|RGB M+|RGB M-| | | ||
| 32 | |------+------+------+------| | ||
| 33 | | |RGB H+|RGB S+|RGB V+| | ||
| 34 | |------+------+------+------| | ||
| 35 | | |RGB H-|RGB S-|RGB V-| | ||
| 36 | `---------------------------' | ||
| 37 | |||
| 38 | Adjust: | ||
| 39 | ,------. | ||
| 40 | | DFU | | ||
| 41 | |------+------+-------------. | ||
| 42 | |HPT TG|HPT FB|HPT RS| BKSP | | ||
| 43 | |------+------+------+------| | ||
| 44 | | |HPT M+| | | | ||
| 45 | |------+------+------+------| | ||
| 46 | | |HPT M-|Clk TG| Del | | ||
| 47 | `---------------------------' | ||
| 48 | |||
| 49 | ``` | ||
| 50 | |||
| 51 | RGB still work in progress \ No newline at end of file | ||
diff --git a/keyboards/boston_meetup/2019/keymaps/readme.md b/keyboards/boston_meetup/2019/keymaps/readme.md new file mode 100644 index 000000000..c10a49f7d --- /dev/null +++ b/keyboards/boston_meetup/2019/keymaps/readme.md | |||
| @@ -0,0 +1,22 @@ | |||
| 1 | # How to add your own keymap | ||
| 2 | |||
| 3 | Folders can be named however you'd like (will be approved upon merging), or should follow the format with a preceding `_`: | ||
| 4 | |||
| 5 | _[ISO 3166-1 alpha-2 code*]_[layout variant]_[layout name/author] | ||
| 6 | |||
| 7 | \* See full list: https://en.wikipedia.org/wiki/ISO_3166-1#Officially_assigned_code_elements | ||
| 8 | |||
| 9 | and contain the following files: | ||
| 10 | |||
| 11 | * `keymap.c` | ||
| 12 | * `readme.md` *recommended* | ||
| 13 | * `config.h` *optional*, found automatically when compiling | ||
| 14 | * `Makefile` *optional*, found automatically when compling | ||
| 15 | |||
| 16 | When adding your keymap to this list, keep it organised alphabetically (select list, edit->sort lines), and use this format: | ||
| 17 | |||
| 18 | * **folder_name** description | ||
| 19 | |||
| 20 | # List of 2019 keymaps | ||
| 21 | |||
| 22 | * **default** default 2019 macropad layout \ No newline at end of file | ||
diff --git a/keyboards/boston_meetup/2019/readme.md b/keyboards/boston_meetup/2019/readme.md new file mode 100644 index 000000000..2bdac9dcd --- /dev/null +++ b/keyboards/boston_meetup/2019/readme.md | |||
| @@ -0,0 +1,13 @@ | |||
| 1 | # Boston Meetup 2019 Macropad | ||
| 2 | |||
| 3 |  | ||
| 4 | |||
| 5 | Limited-run board designed for Boston MK community meetup 2019. | ||
| 6 | |||
| 7 | Keyboard Maintainer: [ishtob](https://github.com/ishtob), [QMK](https://github.com/qmk) | ||
| 8 | |||
| 9 | Make example for this keyboard (after setting up your build environment): | ||
| 10 | |||
| 11 | make boston_meetup/2019:default | ||
| 12 | |||
| 13 | 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). \ No newline at end of file | ||
diff --git a/keyboards/boston_meetup/2019/rules.mk b/keyboards/boston_meetup/2019/rules.mk new file mode 100644 index 000000000..7c03a025e --- /dev/null +++ b/keyboards/boston_meetup/2019/rules.mk | |||
| @@ -0,0 +1,24 @@ | |||
| 1 | # project specific files | ||
| 2 | |||
| 3 | # Cortex version | ||
| 4 | MCU = STM32F303 | ||
| 5 | |||
| 6 | # Build Options | ||
| 7 | # comment out to disable the options. | ||
| 8 | # | ||
| 9 | BACKLIGHT_ENABLE = no | ||
| 10 | BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration | ||
| 11 | ## (Note that for BOOTMAGIC on Teensy LC you have to use a custom .ld script.) | ||
| 12 | MOUSEKEY_ENABLE = yes # Mouse keys | ||
| 13 | EXTRAKEY_ENABLE = yes # Audio control and System control | ||
| 14 | CONSOLE_ENABLE = no # Console for debug | ||
| 15 | COMMAND_ENABLE = no # Commands for debug and configuration | ||
| 16 | #SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend | ||
| 17 | NKRO_ENABLE = yes # USB Nkey Rollover | ||
| 18 | CUSTOM_MATRIX = no # Custom matrix file | ||
| 19 | AUDIO_ENABLE = yes | ||
| 20 | RGBLIGHT_ENABLE = no | ||
| 21 | RGB_MATRIX_ENABLE = no #WS2812 | ||
| 22 | HAPTIC_ENABLE += DRV2605L | ||
| 23 | QWIIC_ENABLE += MICRO_OLED | ||
| 24 | # SERIAL_LINK_ENABLE = yes | ||
diff --git a/keyboards/boston_meetup/boston_meetup.c b/keyboards/boston_meetup/boston_meetup.c new file mode 100644 index 000000000..a9201ac85 --- /dev/null +++ b/keyboards/boston_meetup/boston_meetup.c | |||
| @@ -0,0 +1,2 @@ | |||
| 1 | #include "boston_meetup.h" | ||
| 2 | |||
diff --git a/keyboards/boston_meetup/boston_meetup.h b/keyboards/boston_meetup/boston_meetup.h new file mode 100644 index 000000000..e1d9d9206 --- /dev/null +++ b/keyboards/boston_meetup/boston_meetup.h | |||
| @@ -0,0 +1,19 @@ | |||
| 1 | #pragma once | ||
| 2 | |||
| 3 | #ifdef KEYBOARD_boston_meetup_2019 | ||
| 4 | #include "2019.h" | ||
| 5 | #define LAYOUT( \ | ||
| 6 | K00, \ | ||
| 7 | K10, K11, K12, K13, \ | ||
| 8 | K20, K21, K22, K23, \ | ||
| 9 | K30, K31, K32, K33 \ | ||
| 10 | ) \ | ||
| 11 | { \ | ||
| 12 | { K00, KC_NO, KC_NO, KC_NO }, \ | ||
| 13 | { K10, K11, K12, K13 }, \ | ||
| 14 | { K20, K21, K22, K23 }, \ | ||
| 15 | { K30, K31, K32, K33 } \ | ||
| 16 | } | ||
| 17 | #endif | ||
| 18 | |||
| 19 | #include "quantum.h" \ No newline at end of file | ||
diff --git a/keyboards/boston_meetup/config.h b/keyboards/boston_meetup/config.h new file mode 100644 index 000000000..b025e18df --- /dev/null +++ b/keyboards/boston_meetup/config.h | |||
| @@ -0,0 +1,60 @@ | |||
| 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 | #pragma once | ||
| 19 | |||
| 20 | #include "config_common.h" | ||
| 21 | |||
| 22 | /* USB Device descriptor parameter */ | ||
| 23 | #define VENDOR_ID 0xFB30 | ||
| 24 | #define PRODUCT_ID 0x26BE | ||
| 25 | #define MANUFACTURER ishtob | ||
| 26 | #define PRODUCT Boston Meetup Board | ||
| 27 | #define DESCRIPTION A limited-run community meetup board | ||
| 28 | |||
| 29 | //#define AUDIO_VOICES | ||
| 30 | |||
| 31 | //#define BACKLIGHT_PIN B7 | ||
| 32 | |||
| 33 | /* COL2ROW or ROW2COL */ | ||
| 34 | #define DIODE_DIRECTION COL2ROW | ||
| 35 | |||
| 36 | /* define if matrix has ghost */ | ||
| 37 | //#define MATRIX_HAS_GHOST | ||
| 38 | |||
| 39 | /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ | ||
| 40 | //#define LOCKING_SUPPORT_ENABLE | ||
| 41 | /* Locking resynchronize hack */ | ||
| 42 | //#define LOCKING_RESYNC_ENABLE | ||
| 43 | |||
| 44 | /* | ||
| 45 | * Feature disable options | ||
| 46 | * These options are also useful to firmware size reduction. | ||
| 47 | */ | ||
| 48 | |||
| 49 | /* disable debug print */ | ||
| 50 | //#define NO_DEBUG | ||
| 51 | |||
| 52 | /* disable print */ | ||
| 53 | //#define NO_PRINT | ||
| 54 | |||
| 55 | /* disable action features */ | ||
| 56 | //#define NO_ACTION_LAYER | ||
| 57 | //#define NO_ACTION_TAPPING | ||
| 58 | //#define NO_ACTION_ONESHOT | ||
| 59 | //#define NO_ACTION_MACRO | ||
| 60 | //#define NO_ACTION_FUNCTION | ||
diff --git a/keyboards/boston_meetup/readme.md b/keyboards/boston_meetup/readme.md new file mode 100644 index 000000000..2fa1ec958 --- /dev/null +++ b/keyboards/boston_meetup/readme.md | |||
| @@ -0,0 +1,14 @@ | |||
| 1 | # Boston Meetup Macropads | ||
| 2 | |||
| 3 |  | ||
| 4 | |||
| 5 | Limited-run boards designed for Boston MK community meetups. | ||
| 6 | |||
| 7 | Keyboard Maintainer: [ishtob](https://github.com/ishtob), [QMK](https://github.com/qmk) | ||
| 8 | Hardware Supported: Boston Meetup PCB 2018, 2019 | ||
| 9 | |||
| 10 | Make example for this keyboard (after setting up your build environment): | ||
| 11 | |||
| 12 | make boston_meetup/YYYY:default | ||
| 13 | |||
| 14 | 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). \ No newline at end of file | ||
diff --git a/keyboards/boston_meetup/rules.mk b/keyboards/boston_meetup/rules.mk new file mode 100644 index 000000000..6dd899edc --- /dev/null +++ b/keyboards/boston_meetup/rules.mk | |||
| @@ -0,0 +1,2 @@ | |||
| 1 | |||
| 2 | DEFAULT_FOLDER = boston_meetup/2019 | ||
