diff --git a/keyboards/lfkeyboards/lfkpad/config.h b/keyboards/lfkeyboards/lfkpad/config.h
index 1d8de837d..fb48297e5 100644
--- a/keyboards/lfkeyboards/lfkpad/config.h
+++ b/keyboards/lfkeyboards/lfkpad/config.h
@@ -15,31 +15,56 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
+/* USB Device descriptor parameter */
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x6060
#define DEVICE_VER 0x0001
#define MANUFACTURER LFKeyboards
#define PRODUCT LFKPad 21
-#define DESCRIPTION QMK keyboard firmware for LFKPad LFK_REV_STRING
+#define DESCRIPTION QMK keyboard firmware for LFKPad
-#define DIODE_DIRECTION COL2ROW
+/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 4
-#define MATRIX_ROW_PINS { D5, F4, F6, F7, C7, C6}
-#define MATRIX_COL_PINS { F1, F0, D4, D6}
-#define UNUSED_PINS { }
-#define RGBLED_NUM 28 // Number of LEDs
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { D5, F4, F6, F7, C7, C6 }
+#define MATRIX_COL_PINS { F1, F0, D4, D6 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+//#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
+
+// #define BACKLIGHT_PIN B7
+// #define BACKLIGHT_BREATHING
+// #define BACKLIGHT_LEVELS 3
#define RGB_DI_PIN C7 // Have to set it to something to get the ws2812 code to compile
-#define RGBLIGHT_ANIMATIONS
-#define RGBLIGHT_HUE_STEP 10
-#define RGBLIGHT_SAT_STEP 17
-#define RGBLIGHT_VAL_STEP 17
+#ifdef RGB_DI_PIN
+# define RGBLED_NUM 28
+# define RGBLIGHT_HUE_STEP 10
+# define RGBLIGHT_SAT_STEP 17
+# define RGBLIGHT_VAL_STEP 17
+# define RGBLIGHT_ANIMATIONS
+#endif
#define TAPPING_TERM 200
@@ -49,13 +74,16 @@ along with this program. If not, see .
/* define if matrix has ghost (lacks anti-ghosting diodes) */
//#define MATRIX_HAS_GHOST
-/* number of backlight levels */
-
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is userful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+// #define GRAVE_ESC_CTRL_OVERRIDE
+
/*
* Force NKRO
*
@@ -89,6 +117,10 @@ along with this program. If not, see .
*
*/
+/* key combination for magic key command */
+/* defined by default; to change, uncomment and set to the combination you want */
+// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT)
+
/* control how magic key switches layers */
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
@@ -98,8 +130,8 @@ along with this program. If not, see .
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
-//#define MAGIC_KEY_HELP1 H
-//#define MAGIC_KEY_HELP2 SLASH
+//#define MAGIC_KEY_HELP H
+//#define MAGIC_KEY_HELP_ALT SLASH
//#define MAGIC_KEY_DEBUG D
//#define MAGIC_KEY_DEBUG_MATRIX X
//#define MAGIC_KEY_DEBUG_KBD K
@@ -107,9 +139,8 @@ along with this program. If not, see .
//#define MAGIC_KEY_VERSION V
//#define MAGIC_KEY_STATUS S
//#define MAGIC_KEY_CONSOLE C
-//#define MAGIC_KEY_LAYER0_ALT1 ESC
-//#define MAGIC_KEY_LAYER0_ALT2 GRAVE
//#define MAGIC_KEY_LAYER0 0
+//#define MAGIC_KEY_LAYER0_ALT GRAVE
//#define MAGIC_KEY_LAYER1 1
//#define MAGIC_KEY_LAYER2 2
//#define MAGIC_KEY_LAYER3 3
@@ -119,9 +150,11 @@ along with this program. If not, see .
//#define MAGIC_KEY_LAYER7 7
//#define MAGIC_KEY_LAYER8 8
//#define MAGIC_KEY_LAYER9 9
-//#define MAGIC_KEY_BOOTLOADER PAUSE
+//#define MAGIC_KEY_BOOTLOADER B
+//#define MAGIC_KEY_BOOTLOADER_ALT ESC
//#define MAGIC_KEY_LOCK CAPS
//#define MAGIC_KEY_EEPROM E
+//#define MAGIC_KEY_EEPROM_CLEAR BSPACE
//#define MAGIC_KEY_NKRO N
//#define MAGIC_KEY_SLEEP_LED Z
@@ -140,7 +173,63 @@ along with this program. If not, see .
//#define NO_ACTION_LAYER
//#define NO_ACTION_TAPPING
//#define NO_ACTION_ONESHOT
-//#define NO_ACTION_MACRO
-//#define NO_ACTION_FUNCTION
+/* disable these deprecated features by default */
+#ifndef LINK_TIME_OPTIMIZATION_ENABLE
+ #define NO_ACTION_MACRO
+ #define NO_ACTION_FUNCTION
#endif
+/*
+ * MIDI options
+ */
+
+/* Prevent use of disabled MIDI features in the keymap */
+//#define MIDI_ENABLE_STRICT 1
+
+/* enable basic MIDI features:
+ - MIDI notes can be sent when in Music mode is on
+*/
+//#define MIDI_BASIC
+
+/* enable advanced MIDI features:
+ - MIDI notes can be added to the keymap
+ - Octave shift and transpose
+ - Virtual sustain, portamento, and modulation wheel
+ - etc.
+*/
+//#define MIDI_ADVANCED
+
+/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
+//#define MIDI_TONE_KEYCODE_OCTAVES 1
+
+/*
+ * HD44780 LCD Display Configuration
+ */
+/*
+#define LCD_LINES 2 //< number of visible lines of the display
+#define LCD_DISP_LENGTH 16 //< visibles characters per line of the display
+
+#define LCD_IO_MODE 1 //< 0: memory mapped mode, 1: IO port mode
+
+#if LCD_IO_MODE
+#define LCD_PORT PORTB //< port for the LCD lines
+#define LCD_DATA0_PORT LCD_PORT //< port for 4bit data bit 0
+#define LCD_DATA1_PORT LCD_PORT //< port for 4bit data bit 1
+#define LCD_DATA2_PORT LCD_PORT //< port for 4bit data bit 2
+#define LCD_DATA3_PORT LCD_PORT //< port for 4bit data bit 3
+#define LCD_DATA0_PIN 4 //< pin for 4bit data bit 0
+#define LCD_DATA1_PIN 5 //< pin for 4bit data bit 1
+#define LCD_DATA2_PIN 6 //< pin for 4bit data bit 2
+#define LCD_DATA3_PIN 7 //< pin for 4bit data bit 3
+#define LCD_RS_PORT LCD_PORT //< port for RS line
+#define LCD_RS_PIN 3 //< pin for RS line
+#define LCD_RW_PORT LCD_PORT //< port for RW line
+#define LCD_RW_PIN 2 //< pin for RW line
+#define LCD_E_PORT LCD_PORT //< port for Enable line
+#define LCD_E_PIN 1 //< pin for Enable line
+#endif
+*/
+
+/* Bootmagic Lite key configuration */
+// #define BOOTMAGIC_LITE_ROW 0
+// #define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/lfkeyboards/lfkpad/info.json b/keyboards/lfkeyboards/lfkpad/info.json
index 71adb5d44..f5f41f5a7 100644
--- a/keyboards/lfkeyboards/lfkpad/info.json
+++ b/keyboards/lfkeyboards/lfkpad/info.json
@@ -1,12 +1,34 @@
{
- "keyboard_name": "LFKPad",
- "url": "",
- "maintainer": "qmk",
- "width": 4,
- "height": 6,
- "layouts": {
- "LAYOUT_numpad_6x4": {
- "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"Tab", "x":1, "y":0}, {"label":"=", "x":2, "y":0}, {"label":"Fn", "x":3, "y":0}, {"label":"Num Lock", "x":0, "y":1}, {"label":"/", "x":1, "y":1}, {"label":"*", "x":2, "y":1}, {"label":"-", "x":3, "y":1}, {"label":"7", "x":0, "y":2}, {"label":"8", "x":1, "y":2}, {"label":"9", "x":2, "y":2}, {"label":"4", "x":0, "y":3}, {"label":"5", "x":1, "y":3}, {"label":"6", "x":2, "y":3}, {"label":"+", "x":3, "y":2, "h":2}, {"label":"1", "x":0, "y":4}, {"label":"2", "x":1, "y":4}, {"label":"3", "x":2, "y":4}, {"label":"0", "x":0, "y":5, "w":2}, {"label":".", "x":2, "y":5}, {"label":"Enter", "x":3, "y":4, "h":2}]
+ "keyboard_name": "LFKPad",
+ "url": "",
+ "maintainer": "qmk",
+ "width": 4,
+ "height": 6,
+ "layouts": {
+ "LAYOUT_numpad_6x4": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":0, "y":1},
+ {"x":1, "y":1},
+ {"x":2, "y":1},
+ {"x":3, "y":1},
+ {"x":0, "y":2},
+ {"x":1, "y":2},
+ {"x":2, "y":2},
+ {"x":0, "y":3},
+ {"x":1, "y":3},
+ {"x":2, "y":3},
+ {"x":3, "y":2, "h":2},
+ {"x":0, "y":4},
+ {"x":1, "y":4},
+ {"x":2, "y":4},
+ {"x":0, "y":5, "w":2},
+ {"x":2, "y":5},
+ {"x":3, "y":4, "h":2}
+ ]
+ }
}
- }
}
diff --git a/keyboards/lfkeyboards/lfkpad/keymaps/default/config.h b/keyboards/lfkeyboards/lfkpad/keymaps/default/config.h
deleted file mode 100644
index 271f48d00..000000000
--- a/keyboards/lfkeyboards/lfkpad/keymaps/default/config.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#pragma once
-
-// place overrides here
diff --git a/keyboards/lfkeyboards/lfkpad/keymaps/default/keymap.c b/keyboards/lfkeyboards/lfkpad/keymaps/default/keymap.c
index 3e131b241..0aa720e40 100644
--- a/keyboards/lfkeyboards/lfkpad/keymaps/default/keymap.c
+++ b/keyboards/lfkeyboards/lfkpad/keymaps/default/keymap.c
@@ -1,41 +1,31 @@
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT_numpad_6x4( /* Base */
- KC_ESC, KC_TAB, KC_PEQL, MO(1), \
- KC_LNUM, 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 \
- ),
+ /* Base */
+ [0] = LAYOUT_numpad_6x4(
+ KC_ESC, KC_TAB, KC_PEQL, MO(1),
+ KC_LNUM, 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
+ ),
- [1] = LAYOUT_numpad_6x4( /* RGB */
- RGB_SAI, RGB_VAI, RGB_HUI, _______, \
- RGB_SAD, RGB_VAD, RGB_HUD, _______, \
- 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 \
- ),
+ /* RGB */
+ [1] = LAYOUT_numpad_6x4(
+ RGB_SAI, RGB_VAI, RGB_HUI, _______,
+ RGB_SAD, RGB_VAD, RGB_HUD, _______,
+ 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
+ )
};
void matrix_init_user(void) {
// This keymap only has a single base layer, so reset the default if needed
- if(eeconfig_read_default_layer() > 1){
+ if (eeconfig_read_default_layer() > 1) {
eeconfig_update_default_layer(1);
default_layer_set(1);
}
}
-
-void matrix_scan_user(void) {
-
-}
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- return true;
-}
-
-void led_set_user(uint8_t usb_led) {
-
-}
diff --git a/keyboards/lfkeyboards/lfkpad/keymaps/default/readme.md b/keyboards/lfkeyboards/lfkpad/keymaps/default/readme.md
index 6c48b8d0b..9c0dad030 100644
--- a/keyboards/lfkeyboards/lfkpad/keymaps/default/readme.md
+++ b/keyboards/lfkeyboards/lfkpad/keymaps/default/readme.md
@@ -1 +1 @@
-# The default keymap LFKPad 21
+# The default keymap for the LFKPad 21
diff --git a/keyboards/lfkeyboards/lfkpad/lfkpad.c b/keyboards/lfkeyboards/lfkpad/lfkpad.c
index 232285c32..b91b7da67 100644
--- a/keyboards/lfkeyboards/lfkpad/lfkpad.c
+++ b/keyboards/lfkeyboards/lfkpad/lfkpad.c
@@ -1,112 +1,117 @@
-#include
+#include "lfkpad.h"
+
+#include "quantum.h"
+
#include
#include
-#include "lfkpad.h"
-#include "keymap.h"
#include "issi.h"
#include "TWIlib.h"
#include "lighting.h"
-#include "debug.h"
-#include "quantum.h"
uint16_t click_hz = CLICK_HZ;
uint16_t click_time = CLICK_MS;
uint8_t click_toggle = CLICK_ENABLED;
-
-void matrix_init_kb(void)
-{
+void matrix_init_kb(void) {
matrix_init_user();
+
#ifndef AUDIO_ENABLE
// If we're not using the audio pin, drive it low
- sbi(DDRC, 6);
- cbi(PORTC, 6);
+ setPinOutput(C6);
+ writePinLow(C6);
#endif
#ifdef ISSI_ENABLE
issi_init();
#endif
+
#ifdef WATCHDOG_ENABLE
// This is done after turning the layer LED red, if we're caught in a loop
// we should get a flashing red light
wdt_enable(WDTO_500MS);
#endif
-
}
-void matrix_scan_kb(void)
-{
+void matrix_scan_kb(void) {
#ifdef WATCHDOG_ENABLE
wdt_reset();
#endif
+
#ifdef ISSI_ENABLE
// switch/underglow lighting update
static uint32_t issi_device = 0;
static uint32_t twi_last_ready = 0;
- if(twi_last_ready > 1000){
- // Its been way too long since the last ISSI update, reset the I2C bus and start again
+
+ if (twi_last_ready > 1000) {
+ // It's been way too long since the last ISSI update, reset the I2C bus and start again
dprintf("TWI failed to recover, TWI re-init\n");
twi_last_ready = 0;
TWIInit();
force_issi_refresh();
}
- if(isTWIReady()){
+
+ if (isTWIReady()) {
twi_last_ready = 0;
// If the i2c bus is available, kick off the issi update, alternate between devices
update_issi(issi_device, issi_device);
- if(issi_device){
+
+ if (issi_device) {
issi_device = 0;
- }else{
+ } else {
issi_device = 3;
}
- }else{
+ } else {
twi_last_ready++;
}
#endif
+
matrix_scan_user();
}
-void click(uint16_t freq, uint16_t duration){
+void click(uint16_t freq, uint16_t duration) {
#ifdef AUDIO_ENABLE
- if(freq >= 100 && freq <= 20000 && duration < 100){
+ if (freq >= 100 && freq <= 20000 && duration < 100) {
play_note(freq, 10);
- for (uint16_t i = 0; i < duration; i++){
+
+ 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){
+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();
- } else {
}
+
return process_record_user(keycode, record);
}
-void action_function(keyrecord_t *event, uint8_t id, uint8_t opt)
-{
+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){
+
+ 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_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT));
- if(layer_state == 0){
+ uint8_t shifted = get_mods() & MOD_MASK_SHIFT;
+
+ if (layer_state == 0) {
method(shifted ? KC_GRAVE : KC_ESCAPE);
- }else{
+ } else {
method(shifted ? KC_ESCAPE : KC_GRAVE);
}
send_keyboard_report();
- }else if(event->event.pressed){
- switch(id){
+ } 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);
@@ -117,24 +122,24 @@ void action_function(keyrecord_t *event, uint8_t id, uint8_t opt)
break;
#ifdef AUDIO_ENABLE
case LFK_CLICK_FREQ_LOWER:
- sign = -1; // continue to next statement
+ 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){
+ if (click_toggle) {
click_toggle = 0;
click(4000, 100);
click(1000, 100);
- }else{
+ } else {
click_toggle = 1;
click(1000, 100);
click(4000, 100);
}
break;
case LFK_CLICK_TIME_SHORTER:
- sign = -1; // continue to next statement
+ sign = -1; // continue to next statement
case LFK_CLICK_TIME_LONGER:
click_time += sign;
click(click_hz, click_time);
@@ -144,22 +149,18 @@ void action_function(keyrecord_t *event, uint8_t id, uint8_t opt)
}
}
-void reset_keyboard_kb(){
+void reset_keyboard_kb() {
#ifdef WATCHDOG_ENABLE
MCUSR = 0;
wdt_disable();
wdt_reset();
#endif
+
reset_keyboard();
}
-void led_set_kb(uint8_t usb_led)
-{
- led_set_user(usb_led);
-}
-
// LFK lighting info
-const uint8_t rgb_matrices[] = {0, 1};
+const uint8_t rgb_matrices[] = { 0, 1 };
const uint8_t rgb_sequence[] = {
32, 1, 2, 3,
31, 30, 5, 6,
@@ -172,5 +173,4 @@ const uint8_t rgb_sequence[] = {
4, 25,
13, 24,
20
-
};
diff --git a/keyboards/lfkeyboards/lfkpad/lfkpad.h b/keyboards/lfkeyboards/lfkpad/lfkpad.h
index a4c248e2a..0f34150db 100644
--- a/keyboards/lfkeyboards/lfkpad/lfkpad.h
+++ b/keyboards/lfkeyboards/lfkpad/lfkpad.h
@@ -1,23 +1,6 @@
-#ifndef LFKPAD_H
-#define LFKPAD_H
-
-/* if the kb.h file exists (because we're running from qmkbuilder) include it */
-#if __has_include("kb.h")
-#include "kb.h"
-#endif
+#pragma once
#include "quantum.h"
-#include "matrix.h"
-#include
-
-#ifndef cbi
-#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
-#endif
-
-#ifndef sbi
-#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
-#endif
-
typedef struct RGB_Color {
uint16_t red;
@@ -57,7 +40,6 @@ void click(uint16_t freq, uint16_t duration);
// readability
#define ___ KC_NO
-
#define LAYOUT_numpad_6x4( \
k00, k01, k02, k03, \
k10, k11, k12, k13, \
@@ -73,5 +55,3 @@ void click(uint16_t freq, uint16_t duration);
{ k40, k41, k42, k43 }, \
{ k50, ___, k52, ___ } \
}
-
-#endif //LFKPAD_H
diff --git a/keyboards/lfkeyboards/lfkpad/readme.md b/keyboards/lfkeyboards/lfkpad/readme.md
index 7dd8337e8..ce5e7f67b 100644
--- a/keyboards/lfkeyboards/lfkpad/readme.md
+++ b/keyboards/lfkeyboards/lfkpad/readme.md
@@ -1,28 +1,15 @@
-bluepad keyboard firmware
-======================
+# LFKPad
-## Quantum MK Firmware
+![LFKPad](https://cdn11.bigcommerce.com/s-dvx2zpcx7r/images/stencil/500x659/products/118/385/img_0256__06462.1546304848.jpg)
-For the full Quantum feature list, see [the parent readme.md](/docs/README.md).
+Hotswap 21-key numpad PCB with USB-C, per-key RGB and underglow.
-## Building
+* Keyboard Maintainer: QMK community
+* Hardware Supported: LFKPad HS21 PCB
+* Hardware Availability: [LFKeyboards](https://www.lfkeyboards.com/lfkpad/)
-Download or clone the whole firmware and navigate to the keyboards/bluepad folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file.
+Make example for this keyboard (after setting up your build environment):
-Depending on which keymap you would like to use, you will have to compile slightly differently.
+ make lfkeyboards/lfkpad:default
-### Default
-
-To build with the default keymap, simply run `make`.
-
-### Other Keymaps
-
-Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a folder with the name of your keymap in the keymaps folder, and see keymap documentation (you can find in top readme.md) and existant keymap files.
-
-To build the firmware binary hex file with a keymap just do `make` with `keymap` option like:
-
-```
-$ make keymap=[default|jack|]
-```
-
-Keymaps follow the format **__keymap.c__** and are stored in folders in the `keymaps` folder, eg `keymaps/my_keymap/`
+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).
diff --git a/keyboards/lfkeyboards/lfkpad/rules.mk b/keyboards/lfkeyboards/lfkpad/rules.mk
index 1529f8986..aca77f562 100644
--- a/keyboards/lfkeyboards/lfkpad/rules.mk
+++ b/keyboards/lfkeyboards/lfkpad/rules.mk
@@ -11,26 +11,29 @@ MCU = atmega32u4
# ATmega328P USBasp
BOOTLOADER = atmel-dfu
-LAYOUTS = numpad_6x4
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+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
+MIDI_ENABLE = no # MIDI support
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+AUDIO_ENABLE = no # Audio output on port C6
+FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
-MOUSEKEY_ENABLE = no # Mouse keys
-EXTRAKEY_ENABLE = yes # Audio control and System control
-CONSOLE_ENABLE = no # Console for debug
-COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-MIDI_ENABLE = no # MIDI controls
-AUDIO_ENABLE = no # Audio output on port C6
-UNICODE_ENABLE = no # Unicode
-BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
-RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-RGBLIGHT_CUSTOM_DRIVER = yes # RGB code is implemented in lefkeyboards, not qmk base
-SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-TAP_DANCE_ENABLE = no
-
-ISSI_ENABLE = yes # If the I2C pullup resistors aren't install this must be disabled
-WATCHDOG_ENABLE = no # Resets keyboard if matrix_scan isn't run every 250ms
+ISSI_ENABLE = yes # If the I2C pullup resistors aren't installed this must be disabled
+WATCHDOG_ENABLE = no # Resets keyboard if matrix_scan() isn't run every 250ms
SRC = TWIlib.c issi.c lighting.c
@@ -41,3 +44,5 @@ endif
ifeq ($(strip $(WATCHDOG_ENABLE)), yes)
TMK_COMMON_DEFS += -DWATCHDOG_ENABLE
endif
+
+LAYOUTS = numpad_6x4