diff options
Diffstat (limited to 'keyboards/keyboardio/model01')
11 files changed, 665 insertions, 0 deletions
diff --git a/keyboards/keyboardio/model01/config.h b/keyboards/keyboardio/model01/config.h new file mode 100644 index 0000000000..c3874206d0 --- /dev/null +++ b/keyboards/keyboardio/model01/config.h @@ -0,0 +1,79 @@ +/* +Copyright 2018 James Laird-Wah + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#pragma once + +#include "config_common.h" + +/* key matrix size; rows are doubled for split */ +#define MATRIX_ROWS 8 +#define MATRIX_COLS 8 + +/* The scanners already debounce for us */ +#define DEBOUNCE 0 + +/* RGB matrix constants */ +#define RGB_MATRIX_LED_COUNT 64 + +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_PIXEL_RAIN +#define ENABLE_RGB_MATRIX_PIXEL_FLOW +#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH diff --git a/keyboards/keyboardio/model01/keymaps/default/keymap.c b/keyboards/keyboardio/model01/keymaps/default/keymap.c new file mode 100644 index 0000000000..3ed72adb73 --- /dev/null +++ b/keyboards/keyboardio/model01/keymaps/default/keymap.c @@ -0,0 +1,125 @@ +/* Copyright 2018 James Laird-Wah + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +#include QMK_KEYBOARD_H + +/* layer constants */ +enum { + DEF = 0, + NUM, + FUN, +}; + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[DEF] = LAYOUT( + QK_BOOT , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , TG(NUM), + KC_GRV , KC_Q , KC_W , KC_E , KC_R , KC_T , RGB_MOD, _______, KC_Y , KC_U , KC_I , KC_O , KC_P , KC_EQL , + KC_PGUP, KC_A , KC_S , KC_D , KC_F , KC_G , KC_TAB , KC_ENT , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, + KC_PGDN, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_ESC , _______, KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_MINS, + KC_LCTL, KC_RCTL, + KC_BSPC, KC_SPC , + KC_LGUI, KC_RALT, + KC_LSFT, KC_RSFT, + MO(FUN), MO(FUN) + ), +[NUM] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, KC_P7 , KC_P8 , KC_P9 , KC_PMNS, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P4 , KC_P5 , KC_P6 , KC_PPLS, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P1 , KC_P2 , KC_P3 , KC_PEQL, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P0 , KC_PDOT, KC_PAST, KC_PSLS, KC_PENT, + _______, _______, + _______, _______, + _______, _______, + _______, _______, + _______, _______ + ), +[FUN] = LAYOUT( + _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , + KC_TAB , _______, KC_MS_U, _______, KC_BTN3, _______, RGB_TOG, KC_MPRV, KC_MNXT, KC_LCBR, KC_RCBR, KC_LBRC, KC_RBRC, KC_F12 , + KC_HOME, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN1, _______, _______, KC_MPLY, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, _______, _______, + KC_END , KC_PSCR, KC_INS , _______, KC_BTN2, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, KC_BSLS, KC_PIPE, + _______, _______, + KC_DEL , KC_ENT , + _______, _______, + _______, _______, + _______, _______ + ) +}; + +/* template for new layouts: +LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, + _______, _______, + _______, _______, + _______, _______, + _______, _______ + ) +*/ + +static void set_numpad_colours(int on, void (*write)(int, uint8_t, uint8_t, uint8_t)) { + if (!on) { + for (int i=44; i<=60; i++) + write(i, 0, 0, 0); + write(63, 0, 0, 0); + return; + } + + /* main number keys */ + for (int i=44; i<=47; i++) + write(i, 255, 0, 0); + for (int i=49; i<=54; i++) + write(i, 255, 0, 0); + + /* accessory keys */ + write(48, 128, 128, 0); + for (int i=55; i<=59; i++) + write(i, 128, 128, 0); + + // enter + write(63, 0, 128, 0); + + // num key + write(60, 128, 0, 128); +} + +#ifdef RGB_MATRIX_ENABLE +/* the RGB matrix effects will overwrite the numpad indicator. + * this handy mechanism allows to override the matrix effects. + */ +bool rgb_matrix_indicators_user(void) { + if (layer_state & (1 << NUM)) { + set_numpad_colours(1, &rgb_matrix_set_color); + } + return false; +} +#else /* no RGB matrix support */ + +layer_state_t layer_state_set_user(layer_state_t state) { + if (state & (1<<NUM)) { + set_numpad_colours(1, &set_led_to); + } else { + set_numpad_colours(0, &set_led_to); + } + + return state; +} +#endif + +/* vim: set ts=2 sw=2 et: */ diff --git a/keyboards/keyboardio/model01/keymaps/dshields/keymap.c b/keyboards/keyboardio/model01/keymaps/dshields/keymap.c new file mode 100644 index 0000000000..aa5ef5d4ca --- /dev/null +++ b/keyboards/keyboardio/model01/keymaps/dshields/keymap.c @@ -0,0 +1,28 @@ +#include QMK_KEYBOARD_H +#include "dshields.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[DEF] = LAYOUT( + QK_BOOT, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , _______, + KC_GRV , KC_Q , KC_W , KC_E , KC_R , KC_T , RGB_TOG, DM_REC1, KC_Y , KC_U , KC_I , KC_O , KC_P , KC_EQL , + KC_PGUP, MT_A , MT_S , MT_D , MT_F , LT_G , KC_TAB , KC_ENT , LT_H , MT_J , MT_K , MT_L , MT_SCLN, KC_QUOT, + KC_PGDN, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_ESC , DM_PLY1, KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_MINS, + OSMLCTL, OSMRCTL, + KC_BSPC, KC_SPC , + KC_LGUI, OSMRALT, + OSMLSFT, OSMRSFT, + OSL_FUN, OSL_FUN + ), +[FUN] = LAYOUT( + EE_CLR, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , + KC_TAB , _______, KC_MS_U, _______, KC_BTN3, _______, RGB_MOD, DM_REC2, _______, KC_LCBR, KC_RCBR, KC_LBRC, KC_RBRC, KC_F12 , + KC_HOME, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN1, _______, RGB_HUI, DM_RSTP, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, _______, _______, + KC_END , KC_PSCR, KC_INS , _______, KC_BTN2, _______, RGB_HUD, DM_PLY2, _______, _______, _______, _______, KC_BSLS, KC_PIPE, + _______, _______, + KC_DEL , KC_ENT , + _______, _______, + _______, _______, + _______, _______ + ) +}; + diff --git a/keyboards/keyboardio/model01/keymaps/manna-harbour_miryoku/config.h b/keyboards/keyboardio/model01/keymaps/manna-harbour_miryoku/config.h new file mode 100644 index 0000000000..b97a66c264 --- /dev/null +++ b/keyboards/keyboardio/model01/keymaps/manna-harbour_miryoku/config.h @@ -0,0 +1,26 @@ +// Copyright 2022 Manna Harbour +// https://github.com/manna-harbour/miryoku + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. + +#pragma once + +#define XXX KC_NO + +#define LAYOUT_miryoku( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \ + N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ +) \ +LAYOUT( \ +XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, \ +XXX, K00, K01, K02, K03, K04, XXX, XXX, K05, K06, K07, K08, K09, XXX, \ +XXX, K10, K11, K12, K13, K14, XXX, XXX, K15, K16, K17, K18, K19, XXX, \ +XXX, K20, K21, K22, K23, K24, XXX, XXX, K25, K26, K27, K28, K29, XXX, \ + K32, K37, \ + K33, K36, \ + K34, K35, \ + XXX, XXX, \ + XXX, XXX \ +) diff --git a/keyboards/keyboardio/model01/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/keyboardio/model01/keymaps/manna-harbour_miryoku/keymap.c new file mode 100644 index 0000000000..dbab7f9820 --- /dev/null +++ b/keyboards/keyboardio/model01/keymaps/manna-harbour_miryoku/keymap.c @@ -0,0 +1,4 @@ +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. diff --git a/keyboards/keyboardio/model01/keymaps/manna-harbour_miryoku/rules.mk b/keyboards/keyboardio/model01/keymaps/manna-harbour_miryoku/rules.mk new file mode 100644 index 0000000000..6a111feef0 --- /dev/null +++ b/keyboards/keyboardio/model01/keymaps/manna-harbour_miryoku/rules.mk @@ -0,0 +1,4 @@ +# Copyright 2022 Manna Harbour +# https://github.com/manna-harbour/miryoku + +CONSOLE_ENABLE = no diff --git a/keyboards/keyboardio/model01/keymaps/pugmajere/config.h b/keyboards/keyboardio/model01/keymaps/pugmajere/config.h new file mode 100644 index 0000000000..ef75a034de --- /dev/null +++ b/keyboards/keyboardio/model01/keymaps/pugmajere/config.h @@ -0,0 +1,54 @@ +// Copyright 2022 Ryan Anderson <ryan@michonline.com> (@pugmajere) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define USB_MAX_POWER_CONSUMPTION 500 + +#define RGBLIGHT_LIMIT_VAL 175 + +#undef ENABLE_RGB_MATRIX_ALPHAS_MODS +#undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#undef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#undef ENABLE_RGB_MATRIX_BREATHING +#undef ENABLE_RGB_MATRIX_BAND_SAT +#undef ENABLE_RGB_MATRIX_BAND_VAL +#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#undef ENABLE_RGB_MATRIX_CYCLE_ALL +#undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +/* #undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON */ +#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL +/* #undef ENABLE_RGB_MATRIX_DUAL_BEACON */ +/* #undef ENABLE_RGB_MATRIX_RAINBOW_BEACON */ +/* #undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS */ +#undef ENABLE_RGB_MATRIX_RAINDROPS +#undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#undef ENABLE_RGB_MATRIX_HUE_BREATHING +#undef ENABLE_RGB_MATRIX_HUE_PENDULUM +#undef ENABLE_RGB_MATRIX_HUE_WAVE +#undef ENABLE_RGB_MATRIX_PIXEL_RAIN +#undef ENABLE_RGB_MATRIX_PIXEL_FLOW +#undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is undefd +#undef ENABLE_RGB_MATRIX_TYPING_HEATMAP +#undef ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is undefd +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#undef ENABLE_RGB_MATRIX_SPLASH +#undef ENABLE_RGB_MATRIX_MULTISPLASH +#undef ENABLE_RGB_MATRIX_SOLID_SPLASH +#undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH diff --git a/keyboards/keyboardio/model01/keymaps/pugmajere/keymap.c b/keyboards/keyboardio/model01/keymaps/pugmajere/keymap.c new file mode 100644 index 0000000000..9520a116fd --- /dev/null +++ b/keyboards/keyboardio/model01/keymaps/pugmajere/keymap.c @@ -0,0 +1,192 @@ +/* Copyright 2022 Ryan Anderson <ryan@michonline.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +#include QMK_KEYBOARD_H + +/* layer constants */ +enum { + DEF = 0, + FUN, +}; + +enum custom_keycode { + MACRO_CTRL_PAGE_UP = SAFE_RANGE, + KC_MT_LCBRC, + KC_MT_RCBRC, + KC_MT_LPAR, + KC_MT_RPAR, + MACRO_KVM_1, + MACRO_KVM_2, + MACRO_KVM_3, + MACRO_KVM_4, + MACRO_KVM_TG, +}; + +// Work around limitations in mod-tapping +static uint16_t space_cadet_control_timer = 0; +static bool space_cadet_key_pressed_flag = false; + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[DEF] = LAYOUT( + QK_BOOT , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , MACRO_CTRL_PAGE_UP, + KC_GRV , KC_Q , KC_W , KC_E , KC_R , KC_T , RGB_MOD, MACRO_KVM_TG, KC_Y , KC_U , KC_I , KC_O , KC_P , KC_EQL , + LCTL_T(KC_PGUP), KC_A , KC_S , KC_D , KC_F , KC_G , KC_TAB , KC_ENT , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, + KC_PGDN, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_ESC , KC_RALT, KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_MINS, + LCTL_T(KC_LBRC), RCTL_T(KC_RBRC), + KC_BSPC, KC_SPC , + KC_MT_LCBRC, KC_MT_RCBRC, + KC_MT_LPAR, KC_MT_RPAR, + MO(FUN), MO(FUN) + ), +[FUN] = LAYOUT( + _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , + KC_TAB , _______, KC_MS_U, KC_WH_U, KC_BTN3, MACRO_KVM_1, RGB_TOG, KC_MPRV, KC_MNXT, KC_LCBR, KC_RCBR, KC_LBRC, KC_RBRC, KC_F12 , + KC_HOME, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN1, MACRO_KVM_2, RGB_SPI, KC_MPLY, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, _______, _______, + KC_END , KC_PSCR, KC_INS , KC_WH_D, KC_BTN2, MACRO_KVM_4, RGB_SPD, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, KC_BSLS, KC_PIPE, + _______, _______, + KC_DEL , KC_ENT , + _______, _______, + _______, _______, + _______, _______ + ) +}; + +/* template for new layouts: +LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, + _______, _______, + _______, _______, + _______, _______, + _______, _______ + ) +*/ +// clang-format on + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + if (record->event.pressed) { + space_cadet_key_pressed_flag = true; + } + switch (keycode) { + case MACRO_CTRL_PAGE_UP: + if (record->event.pressed) { + // send some data + SEND_STRING(SS_LCTL(SS_TAP(X_PGUP))); + } else { + // when keycode MACRO_CTRL_PAGE_UP is pressed + } + break; + + // These next two cases duplicate mod-tap functionality by hand to + // work around the lack of support for shifted/modded keys as + // "tap" side of things. + case KC_MT_LCBRC: + if (record->event.pressed) { + space_cadet_control_timer = timer_read(); + space_cadet_key_pressed_flag = false; + register_mods(MOD_BIT(KC_LGUI)); + } else { + unregister_mods(MOD_BIT(KC_LGUI)); + if (timer_elapsed(space_cadet_control_timer) < TAPPING_TERM && !space_cadet_key_pressed_flag) { + tap_code16(LSFT(KC_LBRC)); + } + } + return false; + break; + case KC_MT_RCBRC: + if (record->event.pressed) { + space_cadet_control_timer = timer_read(); + space_cadet_key_pressed_flag = false; + register_mods(MOD_BIT(KC_LALT)); + } else { + unregister_mods(MOD_BIT(KC_LALT)); + if (timer_elapsed(space_cadet_control_timer) < TAPPING_TERM && !space_cadet_key_pressed_flag) { + tap_code16(LSFT(KC_RBRC)); + } + } + return false; + break; + case KC_MT_LPAR: + if (record->event.pressed) { + space_cadet_control_timer = timer_read(); + space_cadet_key_pressed_flag = false; + register_mods(MOD_BIT(KC_LSFT)); + } else { + unregister_mods(MOD_BIT(KC_LSFT)); + if (timer_elapsed(space_cadet_control_timer) < TAPPING_TERM && !space_cadet_key_pressed_flag) { + tap_code16(LSFT(KC_9)); + } + } + return false; + break; + case KC_MT_RPAR: + if (record->event.pressed) { + space_cadet_control_timer = timer_read(); + space_cadet_key_pressed_flag = false; + register_mods(MOD_BIT(KC_RSFT)); + } else { + unregister_mods(MOD_BIT(KC_RSFT)); + if (timer_elapsed(space_cadet_control_timer) < TAPPING_TERM && !space_cadet_key_pressed_flag) { + tap_code16(LSFT(KC_0)); + } + } + return false; + break; + case MACRO_KVM_1: + if (record->event.pressed) { + tap_code(KC_SCRL); + tap_code(KC_SCRL); + tap_code(KC_1); + } + break; + case MACRO_KVM_2: + if (record->event.pressed) { + tap_code(KC_SCRL); + tap_code(KC_SCRL); + tap_code(KC_2); + } + break; + case MACRO_KVM_3: + if (record->event.pressed) { + tap_code(KC_SCRL); + tap_code(KC_SCRL); + tap_code(KC_3); + } + break; + case MACRO_KVM_4: + if (record->event.pressed) { + tap_code(KC_SCRL); + tap_code(KC_SCRL); + tap_code(KC_4); + } + break; + case MACRO_KVM_TG: + if (record->event.pressed) { + register_code(KC_LSFT); + tap_code(KC_NUM); + tap_code(KC_NUM); + unregister_code(KC_LSFT); + tap_code(KC_LCTL); + } + break; + } + return true; +}; + +/* vim: set ts=2 sw=2 et: */ diff --git a/keyboards/keyboardio/model01/keymaps/pugmajere/readme.md b/keyboards/keyboardio/model01/keymaps/pugmajere/readme.md new file mode 100644 index 0000000000..a985158c5b --- /dev/null +++ b/keyboards/keyboardio/model01/keymaps/pugmajere/readme.md @@ -0,0 +1,20 @@ +# pugmajere's fairly modified version of the default keymap + +This is fairly modified, but roughly follows the original default +keymap in spirit. + +- The num lock layer is removed. +- The "any" key is replace with RALT. +- The thumb keys are converted into combo keys. +- Page-Up is a combo key with LCTRL. +- The NUMLOCK key is replaced with LCTRL-PGUP (for bouncing through + browser tabs) +- Mouse scroll keys are added. +- Some KVM control sequences are worked into a few open slots in the + keymap. (FN-[tgb]) +- QMK-standard debouncing is enabled. +- A bunch of RGB Matrix modes are turned off to save space. + +Quite possibly something else that I'm forgetting about. + + diff --git a/keyboards/keyboardio/model01/keymaps/pugmajere/rules.mk b/keyboards/keyboardio/model01/keymaps/pugmajere/rules.mk new file mode 100644 index 0000000000..4db69c92e2 --- /dev/null +++ b/keyboards/keyboardio/model01/keymaps/pugmajere/rules.mk @@ -0,0 +1 @@ +DEBOUNCE_TYPE = sym_defer_pk diff --git a/keyboards/keyboardio/model01/leds.c b/keyboards/keyboardio/model01/leds.c new file mode 100644 index 0000000000..7e65134bd4 --- /dev/null +++ b/keyboards/keyboardio/model01/leds.c @@ -0,0 +1,132 @@ +/* Copyright 2018 James Laird-Wah + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +#include "quantum.h" +#include "i2c_master.h" +#include "led_tables.h" +#include "rgb_matrix.h" +#include <string.h> +#include "model01.h" + +#define I2C_TIMEOUT 1000 + +void set_all_leds_to(uint8_t r, uint8_t g, uint8_t b) { + uint8_t buf[] = { + TWI_CMD_LED_SET_ALL_TO, + b, g, r + }; + i2c_transmit(I2C_ADDR(LEFT), buf, sizeof(buf), I2C_TIMEOUT); + i2c_transmit(I2C_ADDR(RIGHT), buf, sizeof(buf), I2C_TIMEOUT); + _delay_us(10); +} + +void set_led_to(int led, uint8_t r, uint8_t g, uint8_t b) { + uint8_t buf[] = { + TWI_CMD_LED_SET_ONE_TO, + led & 0x1f, + b, g, r + }; + int hand = (led >= 32) ? RIGHT : LEFT; + i2c_transmit(I2C_ADDR(hand), buf, sizeof(buf), I2C_TIMEOUT); + _delay_us(10); +} + +#ifdef RGB_MATRIX_ENABLE + +__attribute__ ((weak)) +led_config_t g_led_config = { { + { 27, 26, 20, 19, 12, 11, 4, 3 }, + { 28, 25, 21, 18, 13, 10, 5, 2 }, + { 29, 24, 22, 17, 14, 9, 6, 1 }, + { 30, 31, 23, 16, 15, 8, 7, 0 }, + { 60, 59, 52, 51, 44, 43, 37, 36 }, + { 61, 58, 53, 50, 45, 42, 38, 35 }, + { 62, 57, 54, 49, 46, 41, 39, 34 }, + { 63, 56, 55, 48, 47, 40, 32, 33 } +}, { + { 3, 35 }, { 0, 26 }, { 0, 17 }, { 0, 6 }, { 14, 5 }, { 15, 16 }, { 16, 25 }, { 17, 34 }, + { 31, 29 }, { 31, 19 }, { 30, 11 }, { 30, 1 }, { 45, 0 }, { 45, 8 }, { 46, 17 }, { 46, 27 }, + { 60, 27 }, { 60, 18 }, { 60, 9 }, { 60, 0 }, { 74, 2 }, { 74, 11 }, { 75, 20 }, { 74, 28 }, + { 89, 30 }, { 89, 19 }, { 89, 7 }, { 70, 38 }, { 82, 41 }, { 93, 45 }, { 104, 50 }, { 74, 64 }, + { 149, 64 }, { 119, 50 }, { 130, 45 }, { 141, 41 }, { 153, 38 }, { 134, 7 }, { 134, 19 }, { 134, 30 }, + { 149, 28 }, { 148, 20 }, { 149, 11 }, { 149, 2 }, { 163, 0 }, { 163, 9 }, { 163, 18 }, { 163, 27 }, + { 177, 27 }, { 177, 17 }, { 178, 8 }, { 178, 0 }, { 193, 1 }, { 193, 11 }, { 192, 19 }, { 192, 29 }, + { 206, 34 }, { 207, 25 }, { 208, 16 }, { 209, 5 }, { 224, 6 }, { 223, 17 }, { 223, 26 }, { 220, 35 } +}, { + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4 +} }; + + +static struct { + uint8_t b; + uint8_t g; + uint8_t r; +} __attribute__((packed)) led_state[64]; + +static void set_color(int index, uint8_t r, uint8_t g, uint8_t b) { + led_state[index].r = r; + led_state[index].g = g; + led_state[index].b = b; +} + +static void set_color_all(uint8_t r, uint8_t g, uint8_t b) { + for (int i=0; i<RGB_MATRIX_LED_COUNT; i++) + set_color(i, r, g, b); +} + +static void init(void) { + // Enable high current pathway to LEDs - this does violate the USB spec though! (1.6 amps...) + DDRE |= _BV(6); + PORTE &= ~_BV(6); + + // Overcurrent check input + DDRB &= ~_BV(4); + PORTB &= ~_BV(4); +} + +static void flush(void) { + uint8_t *bank_data = (uint8_t*)&led_state[0]; + uint8_t command[1 + 8*3]; + for (int hand=0; hand<2; hand++) { + int addr = I2C_ADDR(hand); + + for (int bank=0; bank<4; bank++) { + command[0] = TWI_CMD_LED_BASE + bank; + memcpy(&command[1], bank_data, 8*3); + i2c_transmit(addr, command, sizeof(command), I2C_TIMEOUT); + _delay_us(100); + + bank_data += 8*3; + } + } +} + +const rgb_matrix_driver_t rgb_matrix_driver = { + .init = init, + .flush = flush, + .set_color = set_color, + .set_color_all = set_color_all +}; + +#endif + +/* vim: set ts=2 sw=2 et: */ |