From 6d1f0598684f250256f68f85e673109675e8be86 Mon Sep 17 00:00:00 2001 From: wxyangf Date: Sun, 16 May 2021 18:34:18 -0400 Subject: [Keyboard] Added bradpad support (#12912) Co-authored-by: Ryan Co-authored-by: Drashna Jaelre --- .../tempo_turtle/bradpad/keymaps/4brad/config.h | 20 +++ .../tempo_turtle/bradpad/keymaps/4brad/keymap.c | 148 +++++++++++++++++++++ .../tempo_turtle/bradpad/keymaps/4brad/rules.mk | 1 + .../tempo_turtle/bradpad/keymaps/default/keymap.c | 24 ++++ .../bradpad/keymaps/midi_demo/config.h | 20 +++ .../bradpad/keymaps/midi_demo/keymap.c | 42 ++++++ .../bradpad/keymaps/midi_demo/rules.mk | 1 + .../tempo_turtle/bradpad/keymaps/via/keymap.c | 50 +++++++ .../tempo_turtle/bradpad/keymaps/via/rules.mk | 1 + 9 files changed, 307 insertions(+) create mode 100644 keyboards/tempo_turtle/bradpad/keymaps/4brad/config.h create mode 100644 keyboards/tempo_turtle/bradpad/keymaps/4brad/keymap.c create mode 100644 keyboards/tempo_turtle/bradpad/keymaps/4brad/rules.mk create mode 100644 keyboards/tempo_turtle/bradpad/keymaps/default/keymap.c create mode 100644 keyboards/tempo_turtle/bradpad/keymaps/midi_demo/config.h create mode 100644 keyboards/tempo_turtle/bradpad/keymaps/midi_demo/keymap.c create mode 100644 keyboards/tempo_turtle/bradpad/keymaps/midi_demo/rules.mk create mode 100644 keyboards/tempo_turtle/bradpad/keymaps/via/keymap.c create mode 100644 keyboards/tempo_turtle/bradpad/keymaps/via/rules.mk (limited to 'keyboards/tempo_turtle/bradpad/keymaps') diff --git a/keyboards/tempo_turtle/bradpad/keymaps/4brad/config.h b/keyboards/tempo_turtle/bradpad/keymaps/4brad/config.h new file mode 100644 index 0000000000..4b885f24a1 --- /dev/null +++ b/keyboards/tempo_turtle/bradpad/keymaps/4brad/config.h @@ -0,0 +1,20 @@ +/* +Copyright 2021 v3ritas +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 . +*/ + +#pragma once +#undef TAPPING_TERM +#define TAPPING_TERM 190 + +#define MUSIC_MASK (keycode != KC_NO) +#define MIDI_ADVANCED diff --git a/keyboards/tempo_turtle/bradpad/keymaps/4brad/keymap.c b/keyboards/tempo_turtle/bradpad/keymaps/4brad/keymap.c new file mode 100644 index 0000000000..4c5e988ed5 --- /dev/null +++ b/keyboards/tempo_turtle/bradpad/keymaps/4brad/keymap.c @@ -0,0 +1,148 @@ +/* +Copyright 2021 v3ritas +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 + +extern MidiDevice midi_device; + +enum layers { + _NATURAL, + _SHARP, + _FLAT, +}; + +/* +MIDI CC codes for generic ON/OFF swiches +80,81,82,83 +values off = 0-63 +*/ + +#define OFF 0 + +/*values on = 64-127*/ + +#define ON 127 + +/*implementation inspo taken from here: https://github.com/luantty2/pheromone_keyboard/blob/master/keyboards/pheromone/keymaps/default/keymap.c */ + +enum custom_keycodes { MIDI_CC80 = SAFE_RANGE, MIDI_CC81, MIDI_CC82, MIDI_CC83 }; + +static bool toggled_MIDI_CC80 = 0, toggled_MIDI_CC81 = 0, toggled_MIDI_CC82 = 0, toggled_MIDI_CC83 = 0; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case MIDI_CC80: + if (!IS_LAYER_ON(_NATURAL)) { + toggled_MIDI_CC80 = false; + if (record->event.pressed) { + midi_send_cc(&midi_device, midi_config.channel, 80, ON); + } else { + midi_send_cc(&midi_device, midi_config.channel, 80, OFF); + } + return true; + } else { + if (record->event.pressed) { + if (!toggled_MIDI_CC80) { + midi_send_cc(&midi_device, midi_config.channel, 80, ON); + } else { + midi_send_cc(&midi_device, midi_config.channel, 80, OFF); + } + toggled_MIDI_CC80 = !toggled_MIDI_CC80; + } + return false; + } + case MIDI_CC81: + if (!IS_LAYER_ON(_NATURAL)) { + toggled_MIDI_CC81 = false; + if (record->event.pressed) { + midi_send_cc(&midi_device, midi_config.channel, 81, ON); + } else { + midi_send_cc(&midi_device, midi_config.channel, 81, OFF); + } + return true; + } else { + if (record->event.pressed) { + if (!toggled_MIDI_CC81) { + midi_send_cc(&midi_device, midi_config.channel, 81, ON); + } else { + midi_send_cc(&midi_device, midi_config.channel, 81, OFF); + } + toggled_MIDI_CC81 = !toggled_MIDI_CC81; + } + return false; + } + case MIDI_CC82: + if (!IS_LAYER_ON(_NATURAL)) { + toggled_MIDI_CC82 = false; + if (record->event.pressed) { + midi_send_cc(&midi_device, midi_config.channel, 82, ON); + } else { + midi_send_cc(&midi_device, midi_config.channel, 82, OFF); + } + return true; + } else { + if (record->event.pressed) { + if (!toggled_MIDI_CC82) { + midi_send_cc(&midi_device, midi_config.channel, 82, ON); + } else { + midi_send_cc(&midi_device, midi_config.channel, 82, OFF); + } + toggled_MIDI_CC82 = !toggled_MIDI_CC82; + } + return false; + } + case MIDI_CC83: + if (!IS_LAYER_ON(_NATURAL)) { + toggled_MIDI_CC83 = false; + if (record->event.pressed) { + midi_send_cc(&midi_device, midi_config.channel, 83, ON); + } else { + midi_send_cc(&midi_device, midi_config.channel, 83, OFF); + } + return true; + } else { + if (record->event.pressed) { + if (!toggled_MIDI_CC83) { + midi_send_cc(&midi_device, midi_config.channel, 83, ON); + } else { + midi_send_cc(&midi_device, midi_config.channel, 83, OFF); + } + toggled_MIDI_CC83 = !toggled_MIDI_CC83; + } + return false; + } + } + return true; +} + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_NATURAL] = LAYOUT( + MI_C, MI_BENDD, MI_BENDU, MI_G, + MI_D, MIDI_CC80, MIDI_CC81, MI_A, + MI_E, MIDI_CC82, MIDI_CC83, MI_B, + MI_F, MI_OCTD, MI_OCTU, MI_C, + MO(_SHARP), MO(_FLAT)), + [_SHARP] = LAYOUT( + MI_Cs, KC_TRNS, KC_TRNS, MI_Gs, + MI_Ds, KC_TRNS, KC_TRNS, MI_As, + MI_F , KC_TRNS, KC_TRNS, MI_C , + MI_Fs, MI_TRNSD, MI_TRNSU, MI_Cs, + KC_TRNS, KC_TRNS), + [_FLAT] = LAYOUT( + MI_B , KC_TRNS, KC_TRNS, MI_Gb, + MI_Db, KC_TRNS, KC_TRNS, MI_Ab, + MI_Eb, KC_TRNS, KC_TRNS, MI_Bb, + MI_E , MI_TRNSD, MI_TRNSU, MI_B, + KC_TRNS, KC_TRNS), +}; diff --git a/keyboards/tempo_turtle/bradpad/keymaps/4brad/rules.mk b/keyboards/tempo_turtle/bradpad/keymaps/4brad/rules.mk new file mode 100644 index 0000000000..b7152364ae --- /dev/null +++ b/keyboards/tempo_turtle/bradpad/keymaps/4brad/rules.mk @@ -0,0 +1 @@ +MIDI_ENABLE = yes #enable MIDI \ No newline at end of file diff --git a/keyboards/tempo_turtle/bradpad/keymaps/default/keymap.c b/keyboards/tempo_turtle/bradpad/keymaps/default/keymap.c new file mode 100644 index 0000000000..331466438a --- /dev/null +++ b/keyboards/tempo_turtle/bradpad/keymaps/default/keymap.c @@ -0,0 +1,24 @@ +/* +Copyright 2021 v3ritas +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 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_MINUS, + KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_PLUS, + KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_SLASH, + KC_NUMLOCK, KC_KP_0, KC_KP_DOT, KC_KP_ASTERISK, + KC_KP_ENTER, KC_EQUAL) +}; diff --git a/keyboards/tempo_turtle/bradpad/keymaps/midi_demo/config.h b/keyboards/tempo_turtle/bradpad/keymaps/midi_demo/config.h new file mode 100644 index 0000000000..4b885f24a1 --- /dev/null +++ b/keyboards/tempo_turtle/bradpad/keymaps/midi_demo/config.h @@ -0,0 +1,20 @@ +/* +Copyright 2021 v3ritas +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 . +*/ + +#pragma once +#undef TAPPING_TERM +#define TAPPING_TERM 190 + +#define MUSIC_MASK (keycode != KC_NO) +#define MIDI_ADVANCED diff --git a/keyboards/tempo_turtle/bradpad/keymaps/midi_demo/keymap.c b/keyboards/tempo_turtle/bradpad/keymaps/midi_demo/keymap.c new file mode 100644 index 0000000000..714e64ba80 --- /dev/null +++ b/keyboards/tempo_turtle/bradpad/keymaps/midi_demo/keymap.c @@ -0,0 +1,42 @@ +/* +Copyright 2021 v3ritas +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 + +enum layers { + _NATURAL, + _SHARP, + _FLAT +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_NATURAL] = LAYOUT( + MI_C, MI_BENDD, MI_BENDU, MI_G, + MI_D, MI_VELD, MI_VELU, MI_A, + MI_E, MI_TRNSD, MI_TRNSU, MI_B, + MI_F, MI_OCTD, MI_OCTU, MI_C, + MO(_SHARP), MO(_FLAT)), + [_SHARP] = LAYOUT( + MI_Cs, KC_TRNS, KC_TRNS, MI_Gs, + MI_Ds, KC_TRNS, KC_TRNS, MI_As, + MI_F , KC_TRNS, KC_TRNS, MI_C , + MI_Fs, KC_TRNS, KC_TRNS, MI_Cs, + KC_TRNS, KC_TRNS), + [_FLAT] = LAYOUT( + MI_B , KC_TRNS, KC_TRNS, MI_Gb, + MI_Db, KC_TRNS, KC_TRNS, MI_Ab, + MI_Eb, KC_TRNS, KC_TRNS, MI_Bb, + MI_E , KC_TRNS, KC_TRNS, MI_B, + KC_TRNS, KC_TRNS), +}; diff --git a/keyboards/tempo_turtle/bradpad/keymaps/midi_demo/rules.mk b/keyboards/tempo_turtle/bradpad/keymaps/midi_demo/rules.mk new file mode 100644 index 0000000000..b7152364ae --- /dev/null +++ b/keyboards/tempo_turtle/bradpad/keymaps/midi_demo/rules.mk @@ -0,0 +1 @@ +MIDI_ENABLE = yes #enable MIDI \ No newline at end of file diff --git a/keyboards/tempo_turtle/bradpad/keymaps/via/keymap.c b/keyboards/tempo_turtle/bradpad/keymaps/via/keymap.c new file mode 100644 index 0000000000..0ef205288a --- /dev/null +++ b/keyboards/tempo_turtle/bradpad/keymaps/via/keymap.c @@ -0,0 +1,50 @@ +/* +Copyright 2021 v3ritas +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 + +enum layers { + _LAYER0, + _LAYER1, + _LAYER2, + _LAYER3, +}; +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_LAYER0] = LAYOUT( + KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_MINUS, \ + KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_PLUS, \ + KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_SLASH, \ + KC_NUMLOCK, KC_KP_0, KC_KP_DOT, KC_KP_ASTERISK, \ + KC_KP_ENTER, KC_EQUAL), + [_LAYER1] = LAYOUT( + 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, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS), + [_LAYER2] = LAYOUT( + 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, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS), + [_LAYER3] = LAYOUT( + 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, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS) +}; +// clang-format on diff --git a/keyboards/tempo_turtle/bradpad/keymaps/via/rules.mk b/keyboards/tempo_turtle/bradpad/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/tempo_turtle/bradpad/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes -- cgit v1.2.1