Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Clean up lfkpad and add keymap #13881

Merged
merged 2 commits into from
Aug 8, 2021
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions keyboards/lfkeyboards/lfkpad/keymaps/pascalpfeil/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
/* 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/>.
*/

/* 1000Hz USB polling */
pascalpfeil marked this conversation as resolved.
Show resolved Hide resolved
#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
73 changes: 73 additions & 0 deletions keyboards/lfkeyboards/lfkpad/keymaps/pascalpfeil/keymap.c
Original file line number Diff line number Diff line change
@@ -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;
}
2 changes: 2 additions & 0 deletions keyboards/lfkeyboards/lfkpad/keymaps/pascalpfeil/rules.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
VIA_ENABLE = yes
LTO_ENABLE = yes
102 changes: 0 additions & 102 deletions keyboards/lfkeyboards/lfkpad/lfkpad.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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[] = {
Expand All @@ -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,
Expand Down
36 changes: 0 additions & 36 deletions keyboards/lfkeyboards/lfkpad/lfkpad.h
Original file line number Diff line number Diff line change
Expand Up @@ -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( \
Expand Down
2 changes: 1 addition & 1 deletion keyboards/lfkeyboards/lfkpad/rules.mk
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down