diff options
| -rw-r--r-- | keyboards/lfkeyboards/lfkpad/keymaps/pascalpfeil/config.h | 30 | ||||
| -rw-r--r-- | keyboards/lfkeyboards/lfkpad/keymaps/pascalpfeil/keymap.c | 73 | ||||
| -rw-r--r-- | keyboards/lfkeyboards/lfkpad/keymaps/pascalpfeil/rules.mk | 2 | ||||
| -rw-r--r-- | keyboards/lfkeyboards/lfkpad/lfkpad.c | 102 | ||||
| -rw-r--r-- | keyboards/lfkeyboards/lfkpad/lfkpad.h | 36 | ||||
| -rw-r--r-- | keyboards/lfkeyboards/lfkpad/rules.mk | 2 | 
6 files changed, 106 insertions, 139 deletions
| diff --git a/keyboards/lfkeyboards/lfkpad/keymaps/pascalpfeil/config.h b/keyboards/lfkeyboards/lfkpad/keymaps/pascalpfeil/config.h new file mode 100644 index 0000000000..a121543417 --- /dev/null +++ b/keyboards/lfkeyboards/lfkpad/keymaps/pascalpfeil/config.h @@ -0,0 +1,30 @@ +/* Copyright 2021 Pascal Pfeil + * + * 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 + +/* 1000Hz USB polling */ +#define USB_POLLING_INTERVAL_MS 1 + +/* Send up to 4 key press events per scan */ +#define QMK_KEYS_PER_SCAN 4 + +/* Force NKRO on boot up */ +#define FORCE_NKRO  + +#define RGB_DISABLE_WHEN_USB_SUSPENDED true + +#define RGB_DISABLE_TIMEOUT 900000 diff --git a/keyboards/lfkeyboards/lfkpad/keymaps/pascalpfeil/keymap.c b/keyboards/lfkeyboards/lfkpad/keymaps/pascalpfeil/keymap.c new file mode 100644 index 0000000000..b2b97f442d --- /dev/null +++ b/keyboards/lfkeyboards/lfkpad/keymaps/pascalpfeil/keymap.c @@ -0,0 +1,73 @@ +/* Copyright 2021 Pascal Pfeil + * + * 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 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +    [0] = LAYOUT_numpad_6x4( +        KC_ESC,  KC_TAB,  KC_BSPC, MO(1), +        KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, +        KC_P7,   KC_P8,   KC_P9, +        KC_P4,   KC_P5,   KC_P6,   KC_PPLS, +        KC_P1,   KC_P2,   KC_P3, +            KC_P0,        KC_PDOT, KC_PENT +    ), + +    /* RGB */ +    [1] = LAYOUT_numpad_6x4( +        RGB_SAI, RGB_VAI, RGB_HUI, _______, +        RGB_SAD, RGB_VAD, RGB_HUD, RESET, +        RGB_M_X, RGB_M_G, RGB_MOD, +        RGB_M_SW,RGB_M_SN,RGB_M_K, RGB_RMOD, +        RGB_M_P, RGB_M_B, RGB_M_R, +            XXXXXXX,      XXXXXXX, RGB_TOG +    ), + +    /* VIA wants four keymaps */ +    [2] = LAYOUT_numpad_6x4( +        _______, _______, _______, _______, +        _______, _______, _______, _______, +        _______, _______, _______, +        _______, _______, _______, _______, +        _______, _______, _______, +            _______,      _______, _______ +    ), + +    /* VIA wants four keymaps */ +    [3] = LAYOUT_numpad_6x4( +        _______, _______, _______, _______, +        _______, _______, _______, _______, +        _______, _______, _______, +        _______, _______, _______, _______, +        _______, _______, _______, +            _______,      _______, _______ +    ), +}; + +const uint8_t number_leds[] = {8, 9, 10, 11, 12, 13, 15, 16, 17}; +const uint8_t number_leds_size = sizeof(number_leds) / sizeof(uint8_t); + +bool led_update_user(led_t led_state) { +    for (uint8_t i = 0; i < number_leds_size; i++) +        if (led_state.num_lock) +            // set to whatever the other leds are doing +            // this is needed so that upon disabling num lock, the leds don't stay red  +            rgblight_sethsv_at(rgblight_get_hue(), rgblight_get_sat(), rgblight_get_val(), numer_leds[i]);  +        else +            rgblight_setrgb_red_at(numer_leds[i]); // set to red + +    return true; +} diff --git a/keyboards/lfkeyboards/lfkpad/keymaps/pascalpfeil/rules.mk b/keyboards/lfkeyboards/lfkpad/keymaps/pascalpfeil/rules.mk new file mode 100644 index 0000000000..36b7ba9cbc --- /dev/null +++ b/keyboards/lfkeyboards/lfkpad/keymaps/pascalpfeil/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/lfkeyboards/lfkpad/lfkpad.c b/keyboards/lfkeyboards/lfkpad/lfkpad.c index b91b7da67d..fffa26ca3a 100644 --- a/keyboards/lfkeyboards/lfkpad/lfkpad.c +++ b/keyboards/lfkeyboards/lfkpad/lfkpad.c @@ -8,19 +8,9 @@  #include "TWIlib.h"  #include "lighting.h" -uint16_t click_hz = CLICK_HZ; -uint16_t click_time = CLICK_MS; -uint8_t click_toggle = CLICK_ENABLED; -  void matrix_init_kb(void) {      matrix_init_user(); -#ifndef AUDIO_ENABLE -    // If we're not using the audio pin, drive it low -    setPinOutput(C6); -    writePinLow(C6); -#endif -  #ifdef ISSI_ENABLE      issi_init();  #endif @@ -68,97 +58,6 @@ void matrix_scan_kb(void) {      matrix_scan_user();  } -void click(uint16_t freq, uint16_t duration) { -#ifdef AUDIO_ENABLE -    if (freq >= 100 && freq <= 20000 && duration < 100) { -        play_note(freq, 10); - -        for (uint16_t i = 0; i < duration; i++) { -            _delay_ms(1); -        } - -        stop_all_notes(); -    } -#endif -} - -bool process_record_kb(uint16_t keycode, keyrecord_t* record) { -    if (click_toggle && record->event.pressed) { -        click(click_hz, click_time); -    } - -    if (keycode == RESET) { -        reset_keyboard_kb(); -    } - -    return process_record_user(keycode, record); -} - -void action_function(keyrecord_t *event, uint8_t id, uint8_t opt) { -#ifdef AUDIO_ENABLE -    int8_t sign = 1; -#endif - -    if (id == LFK_ESC_TILDE) { -        // Send ~ on shift-esc -        void (*method)(uint8_t) = (event->event.pressed) ? &add_key : &del_key; -        uint8_t shifted = get_mods() & MOD_MASK_SHIFT; - -        if (layer_state == 0) { -            method(shifted ? KC_GRAVE : KC_ESCAPE); -        } else { -            method(shifted ? KC_ESCAPE : KC_GRAVE); -        } -        send_keyboard_report(); -    } else if (event->event.pressed) { -        switch (id) { -            case LFK_SET_DEFAULT_LAYER: -                // set/save the current base layer to eeprom, falls through to LFK_CLEAR -                eeconfig_update_default_layer(1UL << opt); -                default_layer_set(1UL << opt); -            case LFK_CLEAR: -                // Go back to default layer -                layer_clear(); -                break; -#ifdef AUDIO_ENABLE -            case LFK_CLICK_FREQ_LOWER: -                sign = -1; // continue to next statement -            case LFK_CLICK_FREQ_HIGHER: -                click_hz += sign * 100; -                click(click_hz, click_time); -                break; -            case LFK_CLICK_TOGGLE: -                if (click_toggle) { -                    click_toggle = 0; -                    click(4000, 100); -                    click(1000, 100); -                } else { -                    click_toggle = 1; -                    click(1000, 100); -                    click(4000, 100); -                } -                break; -            case LFK_CLICK_TIME_SHORTER: -                sign = -1; // continue to next statement -            case LFK_CLICK_TIME_LONGER: -                click_time += sign; -                click(click_hz, click_time); -                break; -#endif -        } -    } -} - -void reset_keyboard_kb() { -#ifdef WATCHDOG_ENABLE -    MCUSR = 0; -    wdt_disable(); -    wdt_reset(); -#endif - -    reset_keyboard(); -} -  // LFK lighting info  const uint8_t rgb_matrices[] = { 0, 1 };  const uint8_t rgb_sequence[] = { @@ -168,7 +67,6 @@ const uint8_t rgb_sequence[] = {      17, 18,  9,  8,      19, 21, 11,        22,   14, 12, -      16,         26,       4,         25,      13,         24, diff --git a/keyboards/lfkeyboards/lfkpad/lfkpad.h b/keyboards/lfkeyboards/lfkpad/lfkpad.h index 0f34150db9..5ca8a3c50d 100644 --- a/keyboards/lfkeyboards/lfkpad/lfkpad.h +++ b/keyboards/lfkeyboards/lfkpad/lfkpad.h @@ -2,42 +2,6 @@  #include "quantum.h" -typedef struct RGB_Color { -    uint16_t red; -    uint16_t green; -    uint16_t blue; -} RGB_Color; - -typedef struct Layer_Info { -    uint32_t layer; -    uint32_t mask; -    RGB_Color color; -} Layer_Info; - -extern const uint32_t layer_count; -extern const Layer_Info layer_info[]; - -enum action_functions { -    LFK_CLEAR = 0,          // Resets all layers -    LFK_ESC_TILDE,          // esc+lshift = ~ -    LFK_SET_DEFAULT_LAYER,  // changes and saves current base layer to eeprom -    LFK_CLICK_TOGGLE,       // Adjusts click duration -    LFK_CLICK_FREQ_HIGHER,  // Adjusts click frequency -    LFK_CLICK_FREQ_LOWER,   // Adjusts click frequency -    LFK_CLICK_TIME_LONGER,  // Adjusts click duration -    LFK_CLICK_TIME_SHORTER, // Adjusts click duration -    LFK_DEBUG_SETTINGS,     // prints LED and click settings to HID -    LFK_LED_TEST            // cycles through switch and RGB LEDs -}; - -#define CLICK_HZ 500 -#define CLICK_MS 2 -#define CLICK_ENABLED 0 - -void reset_keyboard_kb(void); -void click(uint16_t freq, uint16_t duration); - -// readability  #define ___ KC_NO  #define LAYOUT_numpad_6x4( \ diff --git a/keyboards/lfkeyboards/lfkpad/rules.mk b/keyboards/lfkeyboards/lfkpad/rules.mk index 91d7548037..13951e4c68 100644 --- a/keyboards/lfkeyboards/lfkpad/rules.mk +++ b/keyboards/lfkeyboards/lfkpad/rules.mk @@ -25,7 +25,7 @@ SLEEP_LED_ENABLE = yes       # Breathing sleep LED during USB suspend  NKRO_ENABLE = no             # USB Nkey Rollover  BACKLIGHT_ENABLE = no        # Enable keyboard backlight functionality  RGBLIGHT_ENABLE = yes        # Enable keyboard RGB underglow -RGBLIGHT_CUSTOM_DRIVER = yes # RGB code is implemented in lefkeyboards, not qmk base +RGBLIGHT_CUSTOM_DRIVER = yes # RGB code is implemented in lfkeyboards, not qmk base  MIDI_ENABLE = no             # MIDI support  BLUETOOTH_ENABLE = no        # Enable Bluetooth with the Adafruit EZ-Key HID  AUDIO_ENABLE = no            # Audio output on port C6 | 
