[Keyboard] LFK78 refactor (#7835)
* Change include guards to pragma once * Clean up default keymaps * Remove some magic numbers and use GPIO macros * Clean up keyboard.[ch] * Tidy up info.json and readme * Align config.h with template * Split up revision code into subfolders * rev C-H has no audio, apparently * Change revc_h to revc and document differences * Turn off Audio on revb for now, for Travis' sake * Split info.json into revision folders * Clean up default keymaps some more
This commit is contained in:
parent
910d603c65
commit
8c3ff3f32c
25 changed files with 1581 additions and 672 deletions
|
@ -15,68 +15,58 @@ You should have received a copy of the GNU General Public License
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef CONFIG_H
|
#pragma once
|
||||||
#define CONFIG_H
|
|
||||||
|
|
||||||
#include "config_common.h"
|
#include "config_common.h"
|
||||||
|
|
||||||
|
/* USB Device descriptor parameter */
|
||||||
#define VENDOR_ID 0xFEED
|
#define VENDOR_ID 0xFEED
|
||||||
#define PRODUCT_ID 0x6060
|
#define PRODUCT_ID 0x6060
|
||||||
#define DEVICE_VER 0x0001
|
#define DEVICE_VER 0x0001
|
||||||
#define MANUFACTURER LFKeyboards
|
#define MANUFACTURER LFKeyboards
|
||||||
#define PRODUCT LFK78
|
#define PRODUCT LFK78
|
||||||
#define DESCRIPTION QMK keyboard firmware for LFK78 LFK_REV_STRING
|
#define DESCRIPTION QMK keyboard firmware for LFK78
|
||||||
|
|
||||||
#ifdef LFK_REV_B
|
/* COL2ROW, ROW2COL*/
|
||||||
/* RevB Matrix config */
|
#define DIODE_DIRECTION COL2ROW
|
||||||
#define DIODE_DIRECTION COL2ROW
|
|
||||||
#define MATRIX_ROWS 10
|
|
||||||
#define MATRIX_COLS 8
|
|
||||||
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4, F0, F1, F4, F5, F6}
|
|
||||||
#define MATRIX_COL_PINS { E6, F7, D2, D3, D4, D5, D6, D7 }
|
|
||||||
#define UNUSED_PINS { C7 }
|
|
||||||
#define RGBLED_NUM 31 // Number of LEDs
|
|
||||||
#else
|
|
||||||
/* RevC/D Matrix config */
|
|
||||||
#define DIODE_DIRECTION COL2ROW
|
|
||||||
#define MATRIX_ROWS 5
|
|
||||||
#define MATRIX_COLS 18
|
|
||||||
#define MATRIX_ROW_PINS {D2, D3, D4, D5, D6 }
|
|
||||||
#define MATRIX_COL_PINS {A0, A1, A2, A3, A4, A5, A6, A7, E6, E7,\
|
|
||||||
F0, F1, F2, F3, C0, C1, C2, C3 }
|
|
||||||
#define UNUSED_PINS {B0, B1, B2, B3, B4, B4, B5, B6, B7, C4, C5, C6, C7,\
|
|
||||||
D0, D1, D7, E0, E1, E2, E3, E4, D5, F4, F5, F6, F7,\
|
|
||||||
E6, E7, F0, F1, F2, F3, C0, C1, C2, C3}
|
|
||||||
#define RGBLED_NUM 27 // Number of LEDs
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define AUDIO_VOICES
|
/*
|
||||||
#define C6_AUDIO
|
* 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_LEVELS 8
|
#define BACKLIGHT_LEVELS 8
|
||||||
#define BACKLIGHT_PWM_MAP {8, 16, 40, 55, 70, 128, 200, 255}
|
#define BACKLIGHT_PWM_MAP { 8, 16, 40, 55, 70, 128, 200, 255 }
|
||||||
|
|
||||||
#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
|
|
||||||
|
|
||||||
#define TAPPING_TERM 200
|
#define TAPPING_TERM 200
|
||||||
|
|
||||||
|
#define C6_AUDIO
|
||||||
|
#define AUDIO_VOICES
|
||||||
|
|
||||||
|
#define RGB_DI_PIN C7 // Have to set it to something to get the ws2812 code to compile
|
||||||
|
#ifdef RGB_DI_PIN
|
||||||
|
# define RGBLIGHT_HUE_STEP 10
|
||||||
|
# define RGBLIGHT_SAT_STEP 17
|
||||||
|
# define RGBLIGHT_VAL_STEP 17
|
||||||
|
# define RGBLIGHT_ANIMATIONS
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||||
#define DEBOUNCE 5
|
#define DEBOUNCE 5
|
||||||
|
|
||||||
/* define if matrix has ghost (lacks anti-ghosting diodes) */
|
/* define if matrix has ghost (lacks anti-ghosting diodes) */
|
||||||
//#define MATRIX_HAS_GHOST
|
//#define MATRIX_HAS_GHOST
|
||||||
|
|
||||||
/* number of backlight levels */
|
|
||||||
|
|
||||||
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||||
#define LOCKING_SUPPORT_ENABLE
|
#define LOCKING_SUPPORT_ENABLE
|
||||||
/* Locking resynchronize hack */
|
/* Locking resynchronize hack */
|
||||||
#define LOCKING_RESYNC_ENABLE
|
#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
|
* Force NKRO
|
||||||
*
|
*
|
||||||
|
@ -110,6 +100,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* 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 */
|
/* control how magic key switches layers */
|
||||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
|
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
|
||||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
|
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
|
||||||
|
@ -119,8 +113,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
|
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
|
||||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
|
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
|
||||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
|
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
|
||||||
//#define MAGIC_KEY_HELP1 H
|
//#define MAGIC_KEY_HELP H
|
||||||
//#define MAGIC_KEY_HELP2 SLASH
|
//#define MAGIC_KEY_HELP_ALT SLASH
|
||||||
//#define MAGIC_KEY_DEBUG D
|
//#define MAGIC_KEY_DEBUG D
|
||||||
//#define MAGIC_KEY_DEBUG_MATRIX X
|
//#define MAGIC_KEY_DEBUG_MATRIX X
|
||||||
//#define MAGIC_KEY_DEBUG_KBD K
|
//#define MAGIC_KEY_DEBUG_KBD K
|
||||||
|
@ -128,9 +122,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
//#define MAGIC_KEY_VERSION V
|
//#define MAGIC_KEY_VERSION V
|
||||||
//#define MAGIC_KEY_STATUS S
|
//#define MAGIC_KEY_STATUS S
|
||||||
//#define MAGIC_KEY_CONSOLE C
|
//#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 0
|
||||||
|
//#define MAGIC_KEY_LAYER0_ALT GRAVE
|
||||||
//#define MAGIC_KEY_LAYER1 1
|
//#define MAGIC_KEY_LAYER1 1
|
||||||
//#define MAGIC_KEY_LAYER2 2
|
//#define MAGIC_KEY_LAYER2 2
|
||||||
//#define MAGIC_KEY_LAYER3 3
|
//#define MAGIC_KEY_LAYER3 3
|
||||||
|
@ -140,9 +133,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
//#define MAGIC_KEY_LAYER7 7
|
//#define MAGIC_KEY_LAYER7 7
|
||||||
//#define MAGIC_KEY_LAYER8 8
|
//#define MAGIC_KEY_LAYER8 8
|
||||||
//#define MAGIC_KEY_LAYER9 9
|
//#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_LOCK CAPS
|
||||||
//#define MAGIC_KEY_EEPROM E
|
//#define MAGIC_KEY_EEPROM E
|
||||||
|
//#define MAGIC_KEY_EEPROM_CLEAR BSPACE
|
||||||
//#define MAGIC_KEY_NKRO N
|
//#define MAGIC_KEY_NKRO N
|
||||||
//#define MAGIC_KEY_SLEEP_LED Z
|
//#define MAGIC_KEY_SLEEP_LED Z
|
||||||
|
|
||||||
|
@ -161,7 +156,63 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
//#define NO_ACTION_LAYER
|
//#define NO_ACTION_LAYER
|
||||||
//#define NO_ACTION_TAPPING
|
//#define NO_ACTION_TAPPING
|
||||||
//#define NO_ACTION_ONESHOT
|
//#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
|
#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
|
||||||
|
|
|
@ -1,21 +0,0 @@
|
||||||
{
|
|
||||||
"keyboard_name": "LFK78/68",
|
|
||||||
"url": "",
|
|
||||||
"maintainer": "qmk",
|
|
||||||
"width": 19.5,
|
|
||||||
"height": 5,
|
|
||||||
"layouts": {
|
|
||||||
"LAYOUT": {
|
|
||||||
"layout": [{"label":"F1", "x":0, "y":0}, {"label":"F2", "x":1, "y":0}, {"label":"Esc", "x":2.25, "y":0}, {"label":"!", "x":3.25, "y":0}, {"label":"@", "x":4.25, "y":0}, {"label":"#", "x":5.25, "y":0}, {"label":"$", "x":6.25, "y":0}, {"label":"%", "x":7.25, "y":0}, {"label":"^", "x":8.25, "y":0}, {"label":"&", "x":9.25, "y":0}, {"label":"*", "x":10.25, "y":0}, {"label":"(", "x":11.25, "y":0}, {"label":")", "x":12.25, "y":0}, {"label":"_", "x":13.25, "y":0}, {"label":"+", "x":14.25, "y":0}, {"label":"Back Space", "x":15.25, "y":0, "w":2}, {"label":"Insert", "x":17.5, "y":0}, {"label":"PgUp", "x":18.5, "y":0}, {"label":"F3", "x":0, "y":1}, {"label":"F4", "x":1, "y":1}, {"label":"Tab", "x":2.25, "y":1, "w":1.5}, {"label":"Q", "x":3.75, "y":1}, {"label":"W", "x":4.75, "y":1}, {"label":"E", "x":5.75, "y":1}, {"label":"R", "x":6.75, "y":1}, {"label":"T", "x":7.75, "y":1}, {"label":"Y", "x":8.75, "y":1}, {"label":"U", "x":9.75, "y":1}, {"label":"I", "x":10.75, "y":1}, {"label":"O", "x":11.75, "y":1}, {"label":"P", "x":12.75, "y":1}, {"label":"{", "x":13.75, "y":1}, {"label":"}", "x":14.75, "y":1}, {"label":"|", "x":15.75, "y":1, "w":1.5}, {"label":"Delete", "x":17.5, "y":1}, {"label":"PgDn", "x":18.5, "y":1}, {"label":"F5", "x":0, "y":2}, {"label":"F6", "x":1, "y":2}, {"label":"Caps Lock", "x":2.25, "y":2, "w":1.75}, {"label":"A", "x":4, "y":2}, {"label":"S", "x":5, "y":2}, {"label":"D", "x":6, "y":2}, {"label":"F", "x":7, "y":2}, {"label":"G", "x":8, "y":2}, {"label":"H", "x":9, "y":2}, {"label":"J", "x":10, "y":2}, {"label":"K", "x":11, "y":2}, {"label":"L", "x":12, "y":2}, {"label":":", "x":13, "y":2}, {"label":"\"", "x":14, "y":2}, {"label":"Enter", "x":15, "y":2, "w":2.25}, {"label":"F7", "x":0, "y":3}, {"label":"F8", "x":1, "y":3}, {"label":"Shift", "x":2.25, "y":3, "w":2.25}, {"label":"Z", "x":4.5, "y":3}, {"label":"X", "x":5.5, "y":3}, {"label":"C", "x":6.5, "y":3}, {"label":"V", "x":7.5, "y":3}, {"label":"B", "x":8.5, "y":3}, {"label":"N", "x":9.5, "y":3}, {"label":"M", "x":10.5, "y":3}, {"label":"<", "x":11.5, "y":3}, {"label":">", "x":12.5, "y":3}, {"label":"?", "x":13.5, "y":3}, {"label":"Shift", "x":14.5, "y":3, "w":2.75}, {"label":"\u2191", "x":17.5, "y":3}, {"label":"F9", "x":0, "y":4}, {"label":"F10", "x":1, "y":4}, {"label":"Ctrl", "x":2.25, "y":4, "w":1.25}, {"label":"GUI", "x":3.5, "y":4, "w":1.25}, {"label":"Alt", "x":4.75, "y":4, "w":1.25}, {"x":6, "y":4, "w":6.25}, {"label":"Alt", "x":12.25, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.25}, {"label":"Fn", "x":14.75, "y":4, "w":1.25}, {"label":"\u2190", "x":16.5, "y":4}, {"label":"\u2193", "x":17.5, "y":4}, {"label":"\u2192", "x":18.5, "y":4}]
|
|
||||||
},
|
|
||||||
"LAYOUT_split_bs": {
|
|
||||||
"layout": [{"label":"F1", "x":0, "y":0}, {"label":"F2", "x":1, "y":0}, {"label":"Esc", "x":2.25, "y":0}, {"label":"!", "x":3.25, "y":0}, {"label":"@", "x":4.25, "y":0}, {"label":"#", "x":5.25, "y":0}, {"label":"$", "x":6.25, "y":0}, {"label":"%", "x":7.25, "y":0}, {"label":"^", "x":8.25, "y":0}, {"label":"&", "x":9.25, "y":0}, {"label":"*", "x":10.25, "y":0}, {"label":"(", "x":11.25, "y":0}, {"label":")", "x":12.25, "y":0}, {"label":"_", "x":13.25, "y":0}, {"label":"+", "x":14.25, "y":0}, {"label":"Back Space", "x":15.25, "y":0}, {"label":"Back Space", "x":16.25, "y":0}, {"label":"Insert", "x":17.5, "y":0}, {"label":"PgUp", "x":18.5, "y":0}, {"label":"F3", "x":0, "y":1}, {"label":"F4", "x":1, "y":1}, {"label":"Tab", "x":2.25, "y":1, "w":1.5}, {"label":"Q", "x":3.75, "y":1}, {"label":"W", "x":4.75, "y":1}, {"label":"E", "x":5.75, "y":1}, {"label":"R", "x":6.75, "y":1}, {"label":"T", "x":7.75, "y":1}, {"label":"Y", "x":8.75, "y":1}, {"label":"U", "x":9.75, "y":1}, {"label":"I", "x":10.75, "y":1}, {"label":"O", "x":11.75, "y":1}, {"label":"P", "x":12.75, "y":1}, {"label":"{", "x":13.75, "y":1}, {"label":"}", "x":14.75, "y":1}, {"label":"|", "x":15.75, "y":1, "w":1.5}, {"label":"Delete", "x":17.5, "y":1}, {"label":"PgDn", "x":18.5, "y":1}, {"label":"F5", "x":0, "y":2}, {"label":"F6", "x":1, "y":2}, {"label":"Caps Lock", "x":2.25, "y":2, "w":1.75}, {"label":"A", "x":4, "y":2}, {"label":"S", "x":5, "y":2}, {"label":"D", "x":6, "y":2}, {"label":"F", "x":7, "y":2}, {"label":"G", "x":8, "y":2}, {"label":"H", "x":9, "y":2}, {"label":"J", "x":10, "y":2}, {"label":"K", "x":11, "y":2}, {"label":"L", "x":12, "y":2}, {"label":":", "x":13, "y":2}, {"label":"\"", "x":14, "y":2}, {"label":"Enter", "x":15, "y":2, "w":2.25}, {"label":"F7", "x":0, "y":3}, {"label":"F8", "x":1, "y":3}, {"label":"Shift", "x":2.25, "y":3, "w":2.25}, {"label":"Z", "x":4.5, "y":3}, {"label":"X", "x":5.5, "y":3}, {"label":"C", "x":6.5, "y":3}, {"label":"V", "x":7.5, "y":3}, {"label":"B", "x":8.5, "y":3}, {"label":"N", "x":9.5, "y":3}, {"label":"M", "x":10.5, "y":3}, {"label":"<", "x":11.5, "y":3}, {"label":">", "x":12.5, "y":3}, {"label":"?", "x":13.5, "y":3}, {"label":"Shift", "x":14.5, "y":3, "w":2.75}, {"label":"\u2191", "x":17.5, "y":3}, {"label":"F9", "x":0, "y":4}, {"label":"F10", "x":1, "y":4}, {"label":"Ctrl", "x":2.25, "y":4, "w":1.25}, {"label":"GUI", "x":3.5, "y":4, "w":1.25}, {"label":"Alt", "x":4.75, "y":4, "w":1.25}, {"x":6, "y":4, "w":6.25}, {"label":"Alt", "x":12.25, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.25}, {"label":"Fn", "x":14.75, "y":4, "w":1.25}, {"label":"\u2190", "x":16.5, "y":4}, {"label":"\u2193", "x":17.5, "y":4}, {"label":"\u2192", "x":18.5, "y":4}]
|
|
||||||
},
|
|
||||||
"LAYOUT_split_rshift": {
|
|
||||||
"layout": [{"label":"F1", "x":0, "y":0}, {"label":"F2", "x":1, "y":0}, {"label":"Esc", "x":2.25, "y":0}, {"label":"!", "x":3.25, "y":0}, {"label":"@", "x":4.25, "y":0}, {"label":"#", "x":5.25, "y":0}, {"label":"$", "x":6.25, "y":0}, {"label":"%", "x":7.25, "y":0}, {"label":"^", "x":8.25, "y":0}, {"label":"&", "x":9.25, "y":0}, {"label":"*", "x":10.25, "y":0}, {"label":"(", "x":11.25, "y":0}, {"label":")", "x":12.25, "y":0}, {"label":"_", "x":13.25, "y":0}, {"label":"+", "x":14.25, "y":0}, {"label":"Backspace", "x":15.25, "y":0, "w":2}, {"label":"Insert", "x":17.5, "y":0}, {"label":"PgUp", "x":18.5, "y":0}, {"label":"F3", "x":0, "y":1}, {"label":"F4", "x":1, "y":1}, {"label":"Tab", "x":2.25, "y":1, "w":1.5}, {"label":"Q", "x":3.75, "y":1}, {"label":"W", "x":4.75, "y":1}, {"label":"E", "x":5.75, "y":1}, {"label":"R", "x":6.75, "y":1}, {"label":"T", "x":7.75, "y":1}, {"label":"Y", "x":8.75, "y":1}, {"label":"U", "x":9.75, "y":1}, {"label":"I", "x":10.75, "y":1}, {"label":"O", "x":11.75, "y":1}, {"label":"P", "x":12.75, "y":1}, {"label":"{", "x":13.75, "y":1}, {"label":"}", "x":14.75, "y":1}, {"label":"|", "x":15.75, "y":1, "w":1.5}, {"label":"Delete", "x":17.5, "y":1}, {"label":"PgDn", "x":18.5, "y":1}, {"label":"F5", "x":0, "y":2}, {"label":"F6", "x":1, "y":2}, {"label":"Caps Lock", "x":2.25, "y":2, "w":1.75}, {"label":"A", "x":4, "y":2}, {"label":"S", "x":5, "y":2}, {"label":"D", "x":6, "y":2}, {"label":"F", "x":7, "y":2}, {"label":"G", "x":8, "y":2}, {"label":"H", "x":9, "y":2}, {"label":"J", "x":10, "y":2}, {"label":"K", "x":11, "y":2}, {"label":"L", "x":12, "y":2}, {"label":":", "x":13, "y":2}, {"label":"\"", "x":14, "y":2}, {"label":"Enter", "x":15, "y":2, "w":2.25}, {"label":"F7", "x":0, "y":3}, {"label":"F8", "x":1, "y":3}, {"label":"Shift", "x":2.25, "y":3, "w":2.25}, {"label":"Z", "x":4.5, "y":3}, {"label":"X", "x":5.5, "y":3}, {"label":"C", "x":6.5, "y":3}, {"label":"V", "x":7.5, "y":3}, {"label":"B", "x":8.5, "y":3}, {"label":"N", "x":9.5, "y":3}, {"label":"M", "x":10.5, "y":3}, {"label":"<", "x":11.5, "y":3}, {"label":">", "x":12.5, "y":3}, {"label":"?", "x":13.5, "y":3}, {"label":"Shift", "x":14.5, "y":3, "w":1.75}, {"label":"Fn", "x":16.25, "y":3}, {"label":"\u2191", "x":17.5, "y":3}, {"label":"F9", "x":0, "y":4}, {"label":"F10", "x":1, "y":4}, {"label":"Ctrl", "x":2.25, "y":4, "w":1.25}, {"label":"GUI", "x":3.5, "y":4, "w":1.25}, {"label":"Alt", "x":4.75, "y":4, "w":1.25}, {"x":6, "y":4, "w":6.25}, {"label":"Alt", "x":12.25, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.25}, {"label":"Fn", "x":14.75, "y":4, "w":1.25}, {"label":"\u2190", "x":16.5, "y":4}, {"label":"\u2193", "x":17.5, "y":4}, {"label":"\u2192", "x":18.5, "y":4}]
|
|
||||||
},
|
|
||||||
"LAYOUT_iso": {
|
|
||||||
"layout": [{"label":"F1", "x":0, "y":0}, {"label":"F2", "x":1, "y":0}, {"label":"Esc", "x":2.25, "y":0}, {"label":"!", "x":3.25, "y":0}, {"label":"@", "x":4.25, "y":0}, {"label":"#", "x":5.25, "y":0}, {"label":"$", "x":6.25, "y":0}, {"label":"%", "x":7.25, "y":0}, {"label":"^", "x":8.25, "y":0}, {"label":"&", "x":9.25, "y":0}, {"label":"*", "x":10.25, "y":0}, {"label":"(", "x":11.25, "y":0}, {"label":")", "x":12.25, "y":0}, {"label":"_", "x":13.25, "y":0}, {"label":"+", "x":14.25, "y":0}, {"label":"Backspace", "x":15.25, "y":0, "w":2}, {"label":"Insert", "x":17.5, "y":0}, {"label":"PgUp", "x":18.5, "y":0}, {"label":"F3", "x":0, "y":1}, {"label":"F4", "x":1, "y":1}, {"label":"Tab", "x":2.25, "y":1, "w":1.5}, {"label":"Q", "x":3.75, "y":1}, {"label":"W", "x":4.75, "y":1}, {"label":"E", "x":5.75, "y":1}, {"label":"R", "x":6.75, "y":1}, {"label":"T", "x":7.75, "y":1}, {"label":"Y", "x":8.75, "y":1}, {"label":"U", "x":9.75, "y":1}, {"label":"I", "x":10.75, "y":1}, {"label":"O", "x":11.75, "y":1}, {"label":"P", "x":12.75, "y":1}, {"label":"{", "x":13.75, "y":1}, {"label":"}", "x":14.75, "y":1}, {"label":"Enter", "x":16, "y":1, "w":1.25, "h":2}, {"label":"Delete", "x":17.5, "y":1}, {"label":"PgDn", "x":18.5, "y":1}, {"label":"F5", "x":0, "y":2}, {"label":"F6", "x":1, "y":2}, {"label":"Caps Lock", "x":2.25, "y":2, "w":1.75}, {"label":"A", "x":4, "y":2}, {"label":"S", "x":5, "y":2}, {"label":"D", "x":6, "y":2}, {"label":"F", "x":7, "y":2}, {"label":"G", "x":8, "y":2}, {"label":"H", "x":9, "y":2}, {"label":"J", "x":10, "y":2}, {"label":"K", "x":11, "y":2}, {"label":"L", "x":12, "y":2}, {"label":":", "x":13, "y":2}, {"label":"@", "x":14, "y":2}, {"label":"~", "x":15, "y":2}, {"label":"F7", "x":0, "y":3}, {"label":"F8", "x":1, "y":3}, {"label":"Shift", "x":2.25, "y":3, "w":1.25}, {"label":"|", "x":3.5, "y":3}, {"label":"Z", "x":4.5, "y":3}, {"label":"X", "x":5.5, "y":3}, {"label":"C", "x":6.5, "y":3}, {"label":"V", "x":7.5, "y":3}, {"label":"B", "x":8.5, "y":3}, {"label":"N", "x":9.5, "y":3}, {"label":"M", "x":10.5, "y":3}, {"label":"<", "x":11.5, "y":3}, {"label":">", "x":12.5, "y":3}, {"label":"?", "x":13.5, "y":3}, {"label":"Shift", "x":14.5, "y":3, "w":2.75}, {"label":"\u2191", "x":17.5, "y":3}, {"label":"F9", "x":0, "y":4}, {"label":"F10", "x":1, "y":4}, {"label":"Ctrl", "x":2.25, "y":4, "w":1.25}, {"label":"GUI", "x":3.5, "y":4, "w":1.25}, {"label":"Alt", "x":4.75, "y":4, "w":1.25}, {"x":6, "y":4, "w":6.25}, {"label":"Alt", "x":12.25, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.25}, {"label":"Fn", "x":14.75, "y":4, "w":1.25}, {"label":"\u2190", "x":16.5, "y":4}, {"label":"\u2193", "x":17.5, "y":4}, {"label":"\u2192", "x":18.5, "y":4}]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,111 +1,99 @@
|
||||||
#include QMK_KEYBOARD_H
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
enum keymap_layout {
|
enum keymap_layout {
|
||||||
VANILLA = 0, // matches MF68 layout
|
VANILLA = 0, // matches MF68 layout
|
||||||
FUNC, // 0x02
|
FUNC,
|
||||||
SETTINGS, // 0x04
|
SETTINGS
|
||||||
};
|
};
|
||||||
|
|
||||||
// Colors of the layer indicator LED
|
// Colors of the layer indicator LED
|
||||||
// This list needs to define layer 0xFFFFFFFF, it is the end of the list, and the unknown layer
|
// This list needs to define layer 0xFFFFFFFF, it is the end of the list, and the unknown layer
|
||||||
const Layer_Info layer_info[] = {
|
const Layer_Info layer_info[] = {
|
||||||
// Layer Mask Red Green Blue
|
// Layer Mask Red Green Blue
|
||||||
{0x00000000, 0xFFFFFFFF, {0x0000, 0x0FFF, 0x0000}}, // base layer - green
|
{ 0x00000000, 0xFFFFFFFF, { 0x0000, 0x0FFF, 0x0000 } }, // base layer - green
|
||||||
{0x00000002, 0xFFFFFFFE, {0x0000, 0x0000, 0x0FFF}}, // function layer - blue
|
{ 0x00000002, 0xFFFFFFFE, { 0x0000, 0x0000, 0x0FFF } }, // function layer - blue
|
||||||
{0x00000004, 0xFFFFFFFC, {0x0FFF, 0x0000, 0x0FFF}}, // settings layer - magenta
|
{ 0x00000004, 0xFFFFFFFC, { 0x0FFF, 0x0000, 0x0FFF } }, // settings layer - magenta
|
||||||
{0xFFFFFFFF, 0xFFFFFFFF, {0x0FFF, 0x0FFF, 0x0FFF}}, // unknown layer - REQUIRED - white
|
{ 0xFFFFFFFF, 0xFFFFFFFF, { 0x0FFF, 0x0FFF, 0x0FFF } } // unknown layer - REQUIRED - white
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
/* Keymap VANILLA: (Base Layer) Default Layer
|
/* Keymap VANILLA: (Base Layer) Default Layer
|
||||||
* ,---------. ,------------------------------------------------------------. ,---------.
|
* ,---------. ,------------------------------------------------------------. ,---------.
|
||||||
* | F1 | F2 | |Esc~| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0| - | = |Backspa| | Ins|PgUp|
|
* | F1 | F2 | |Esc~| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0| - | = |Backspa| | Ins|PgUp|
|
||||||
* |---------| |------------------------------------------------------------| |---------|
|
* |---------| |------------------------------------------------------------| |---------|
|
||||||
* | F3 | F4 | |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| | Del|PgDn|
|
* | F3 | F4 | |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| | Del|PgDn|
|
||||||
* |---------| |------------------------------------------------------------| `---------'
|
* |---------| |------------------------------------------------------------| `---------'
|
||||||
* | F5 | F6 | |CAPS | A| S| D| F| G| H| J| K| L| ;| '|Return |
|
* | F5 | F6 | |CAPS | A| S| D| F| G| H| J| K| L| ;| '| Return |
|
||||||
* |---------| |------------------------------------------------------------| ,----.
|
* |---------| |------------------------------------------------------------| ,----.
|
||||||
* | F7 | F8 | |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | | Up |
|
* | F7 | F8 | |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | | Up |
|
||||||
* |---------| |-------------------------------------------------------------------------.
|
* |---------| |-------------------------------------------------------------------------.
|
||||||
* | F9 | F10| |Ctrl|Win |Alt | Space |Alt |Ctrl|Func | |Lft| Dn |Rig |
|
* | F9 | F10| |Ctrl|Win |Alt | Space |Alt |Ctrl|Func | |Lft| Dn |Rig |
|
||||||
* `---------' `------------------------------------------------------' `-------------'
|
* `---------' `------------------------------------------------------' `-------------'
|
||||||
*/
|
*/
|
||||||
[VANILLA] = LAYOUT(
|
[VANILLA] = LAYOUT(
|
||||||
KC_F1, KC_F2, KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_PGUP, \
|
KC_F1, KC_F2, KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_PGUP,
|
||||||
KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN, \
|
KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN,
|
||||||
KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
|
KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
|
||||||
KC_F7, KC_F8, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \
|
KC_F7, KC_F8, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
|
||||||
KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(FUNC), KC_LEFT, KC_DOWN, KC_RGHT \
|
KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(FUNC), KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
),
|
),
|
||||||
|
|
||||||
/* Keymap FUNCTION: Function Layer
|
/* Keymap FUNCTION: Function Layer
|
||||||
* ,---------. ,-------------------------------------------------------------. ,---------.
|
* ,---------. ,-------------------------------------------------------------. ,---------.
|
||||||
* | | | | ` |F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12|Delete | | Ins|Home|
|
* | | | | ` |F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12|Delete | | Ins|Home|
|
||||||
* |---------| |-------------------------------------------------------------| |---------|
|
* |---------| |-------------------------------------------------------------| |---------|
|
||||||
* | | | |Tab |Hom| Up|End|PgU| | | | | | | | | | | Del|End |
|
* | | | |Tab |Hom| Up|End|PgU| | | | | | | | | | | Del|End |
|
||||||
* |---------| |-------------------------------------------------------------| `---------'
|
* |---------| |-------------------------------------------------------------| `---------'
|
||||||
* | | | |MO(FUNC)|Lft|Dn |Rig|PgD| |Lft|Dwn| Up|Rgt| | | |
|
* | | | |MO(FUNC)|Lft|Dn |Rig|PgD| |Lft|Dwn| Up|Rgt| | | |
|
||||||
* |---------| |-------------------------------------------------------------| ,----.
|
* |---------| |-------------------------------------------------------------| ,----.
|
||||||
* | | | |Shift | | | | | | |Mute|V- |V+ | |TG(SETTINGS)| | Up |
|
* | | | |Shift | | | | | | |Mute|V- |V+ | |TG(SETTINGS)| | Up |
|
||||||
* |---------| |--------------------------------------------------------------------------.
|
* |---------| |--------------------------------------------------------------------------.
|
||||||
* | | | |Ctrl|Win |Alt | Enter |Alt |Func |CTRL | |Lft| Dn |Rig |
|
* | | | |Ctrl|Win |Alt | Enter |Alt |Func |CTRL | |Lft| Dn |Rig |
|
||||||
* `---------' `------------------------------------------------------' `-------------'
|
* `---------' `------------------------------------------------------' `-------------'
|
||||||
*/
|
*/
|
||||||
[FUNC] = LAYOUT(
|
[FUNC] = LAYOUT(
|
||||||
_______, _______, KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, KC_HOME, \
|
_______, _______, KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, KC_HOME,
|
||||||
_______, _______, XXXXXXX, KC_HOME, KC_UP, KC_END, KC_PGUP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, KC_END, \
|
_______, _______, XXXXXXX, KC_HOME, KC_UP, KC_END, KC_PGUP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, KC_END,
|
||||||
_______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, XXXXXXX, XXXXXXX, \
|
_______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
_______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, TG(SETTINGS), _______, \
|
_______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, TG(SETTINGS), _______,
|
||||||
_______, _______, _______, _______, _______, KC_ENT, _______, _______, _______, _______, _______, _______ \
|
_______, _______, _______, _______, _______, KC_ENT, _______, _______, _______, _______, _______, _______
|
||||||
),
|
),
|
||||||
|
|
||||||
/* Keymap SETTINGS: Settings Layer
|
/* Keymap SETTINGS: Settings Layer
|
||||||
* ,---------. ,-------------------------------------------------------------. ,-------------.
|
* ,---------. ,-------------------------------------------------------------. ,-------------.
|
||||||
* | | | |LayClr| | | | | | | | | | |BL-|BL+|BL Togl| |RGB Tog |Val+|
|
* | | | |LayClr| | | | | | | | | | |BL-|BL+|BL Togl| |RGB Tog |Val+|
|
||||||
* |---------| |-------------------------------------------------------------| |-------------|
|
* |---------| |-------------------------------------------------------------| |-------------|
|
||||||
* | | | |MuMode | | | | | | | | | | | | |LEDTst| |RGB Mode|Val-|
|
* | | | |MuMode | | | | | | | | | | | | |LEDTst| |RGB Mode|Val-|
|
||||||
* |---------| |-------------------------------------------------------------| `-------------'
|
* |---------| |-------------------------------------------------------------| `-------------'
|
||||||
* | | | |AudTgl |Hz+|MS+| | | | | | | | | | RST |
|
* | | | |AudTgl |Hz+|MS+| | | | | | | | | | RST |
|
||||||
* |---------| |-------------------------------------------------------------| ,----.
|
* |---------| |-------------------------------------------------------------| ,----.
|
||||||
* | | | |ClickTgl |Hz-|MS-| | | | |MuTgl| | | |Layer Clr | |Hue+|
|
* | | | |ClickTgl |Hz-|MS-| | | | |MuTgl| | | |Layer Clr | |Hue+|
|
||||||
* |---------| |-------------------------------------------------------------------------.
|
* |---------| |-------------------------------------------------------------------------.
|
||||||
* | | | | | | | | | | | |Sat-|Hue-|Sat+|
|
* | | | | | | | | | | | |Sat-|Hue-|Sat+|
|
||||||
* `---------' `--------------------------------------------------------' `--------------'
|
* `---------' `--------------------------------------------------------' `--------------'
|
||||||
*/
|
*/
|
||||||
[SETTINGS] = LAYOUT(
|
[SETTINGS] = LAYOUT(
|
||||||
XXXXXXX, XXXXXXX, KC_FN0, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, BL_INC, BL_TOGG, RGB_TOG, RGB_VAI, \
|
XXXXXXX, XXXXXXX, F(0), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, BL_INC, BL_TOGG, RGB_TOG, RGB_VAI,
|
||||||
XXXXXXX, XXXXXXX, MU_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_MOD, RGB_VAD, \
|
XXXXXXX, XXXXXXX, MU_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_MOD, RGB_VAD,
|
||||||
XXXXXXX, XXXXXXX, AU_TOG, KC_FN1, KC_FN3, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, \
|
XXXXXXX, XXXXXXX, AU_TOG, F(1), F(3), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET,
|
||||||
XXXXXXX, XXXXXXX, KC_FN5, KC_FN2, KC_FN4, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MU_TOG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUI, \
|
XXXXXXX, XXXXXXX, F(5), F(2), F(4), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MU_TOG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUI,
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_SAD, RGB_HUD, RGB_SAI \
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_SAD, RGB_HUD, RGB_SAI
|
||||||
),
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
const uint16_t PROGMEM fn_actions[] = {
|
const uint16_t PROGMEM fn_actions[] = {
|
||||||
ACTION_FUNCTION(LFK_CLEAR), // FN0 - reset layers
|
ACTION_FUNCTION(LFK_CLEAR), // FN0 - reset layers
|
||||||
ACTION_FUNCTION(LFK_CLICK_FREQ_HIGHER), // FN1 - Increase Freq of audio click
|
ACTION_FUNCTION(LFK_CLICK_FREQ_HIGHER), // FN1 - Increase Freq of audio click
|
||||||
ACTION_FUNCTION(LFK_CLICK_FREQ_LOWER), // FN2 - Decrease Freq of audio click
|
ACTION_FUNCTION(LFK_CLICK_FREQ_LOWER), // FN2 - Decrease Freq of audio click
|
||||||
ACTION_FUNCTION(LFK_CLICK_TIME_LONGER), // FN3 - Increase length of audio click
|
ACTION_FUNCTION(LFK_CLICK_TIME_LONGER), // FN3 - Increase length of audio click
|
||||||
ACTION_FUNCTION(LFK_CLICK_TIME_SHORTER), // FN4 - Decrease length of audio click
|
ACTION_FUNCTION(LFK_CLICK_TIME_SHORTER), // FN4 - Decrease length of audio click
|
||||||
ACTION_FUNCTION(LFK_CLICK_TOGGLE), // FN5 - Toggle audio click
|
ACTION_FUNCTION(LFK_CLICK_TOGGLE) // FN5 - Toggle audio click
|
||||||
};
|
};
|
||||||
|
|
||||||
void matrix_init_user(void) {
|
void matrix_init_user(void) {
|
||||||
// This keymap only has a single base layer, so reset the default if needed
|
// 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);
|
eeconfig_update_default_layer(1);
|
||||||
default_layer_set(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) {
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,32 +0,0 @@
|
||||||
# Build Options
|
|
||||||
# change to "no" to disable the options, or define them in the Makefile in
|
|
||||||
# the appropriate keymap folder that will get included automatically
|
|
||||||
#
|
|
||||||
|
|
||||||
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 = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
|
||||||
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
|
||||||
MIDI_ENABLE = no # MIDI controls
|
|
||||||
AUDIO_ENABLE = yes # 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
|
|
||||||
CAPSLOCK_LED = no # Toggle back light LED of Caps Lock
|
|
||||||
|
|
||||||
|
|
||||||
# Override the LFK78 hardware version:
|
|
||||||
#
|
|
||||||
# B - first public release, uses atmega32u4, has audio, ISSI matrix split between RGB and backlight
|
|
||||||
# C-H - at90usb1286, no audio, ISSI device 0 is backlight, 4 is RGB
|
|
||||||
# J - at90usb646, C6 audio, ISSI device 0 is backlight, 4 is RGB
|
|
||||||
# LFK_REV = J
|
|
|
@ -2,112 +2,98 @@
|
||||||
|
|
||||||
enum keymap_layout {
|
enum keymap_layout {
|
||||||
VANILLA = 0, // matches MF68 layout
|
VANILLA = 0, // matches MF68 layout
|
||||||
FUNC, // 0x02
|
FUNC,
|
||||||
SETTINGS, // 0x04
|
SETTINGS
|
||||||
};
|
};
|
||||||
|
|
||||||
// Colors of the layer indicator LED
|
// Colors of the layer indicator LED
|
||||||
// This list needs to define layer 0xFFFFFFFF, it is the end of the list, and the unknown layer
|
// This list needs to define layer 0xFFFFFFFF, it is the end of the list, and the unknown layer
|
||||||
const Layer_Info layer_info[] = {
|
const Layer_Info layer_info[] = {
|
||||||
// Layer Mask Red Green Blue
|
// Layer Mask Red Green Blue
|
||||||
{0x00000000, 0xFFFFFFFF, {0x0000, 0x0FFF, 0x0000}}, // base layer - green
|
{ 0x00000000, 0xFFFFFFFF, { 0x0000, 0x0FFF, 0x0000 } }, // base layer - green
|
||||||
{0x00000002, 0xFFFFFFFE, {0x0000, 0x0000, 0x0FFF}}, // function layer - blue
|
{ 0x00000002, 0xFFFFFFFE, { 0x0000, 0x0000, 0x0FFF } }, // function layer - blue
|
||||||
{0x00000004, 0xFFFFFFFC, {0x0FFF, 0x0000, 0x0FFF}}, // settings layer - magenta
|
{ 0x00000004, 0xFFFFFFFC, { 0x0FFF, 0x0000, 0x0FFF } }, // settings layer - magenta
|
||||||
{0xFFFFFFFF, 0xFFFFFFFF, {0x0FFF, 0x0FFF, 0x0FFF}}, // unknown layer - REQUIRED - white
|
{ 0xFFFFFFFF, 0xFFFFFFFF, { 0x0FFF, 0x0FFF, 0x0FFF } } // unknown layer - REQUIRED - white
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
/* Keymap VANILLA: (Base Layer) Default Layer
|
/* Keymap VANILLA: (Base Layer) Default Layer
|
||||||
* ,---------. ,------------------------------------------------------------. ,---------.
|
* ,---------. ,------------------------------------------------------------. ,---------.
|
||||||
* | F1 | F2 | |Esc~| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0| - | = |Backspa| | Ins|PgUp|
|
* | F1 | F2 | |Esc~| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0| - | = |Backspa| | Ins|PgUp|
|
||||||
* |---------| |------------------------------------------------------------| |---------|
|
* |---------| |------------------------------------------------------------| |---------|
|
||||||
* | F3 | F4 | |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| Ret| | Del|PgDn|
|
* | F3 | F4 | |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| Ret| | Del|PgDn|
|
||||||
* |---------| |--------------------------------------------------------. | `---------'
|
* |---------| |--------------------------------------------------------. | `---------'
|
||||||
* | F5 | F6 | |CAPS | A| S| D| F| G| H| J| K| L| ;| '| # | |
|
* | F5 | F6 | |CAPS | A| S| D| F| G| H| J| K| L| ;| '| # | |
|
||||||
* |---------| |-----------------------------------------------------------| ,----.
|
* |---------| |-----------------------------------------------------------| ,----.
|
||||||
* | F7 | F8 | |Shft| \ | Z| X| C| V| B| N| M| ,| .| /|Shift | | Up |
|
* | F7 | F8 | |Shft| \ | Z| X| C| V| B| N| M| ,| .| /|Shift | | Up |
|
||||||
* |---------| |-------------------------------------------------------------------------.
|
* |---------| |-------------------------------------------------------------------------.
|
||||||
* | F9 | F10| |Ctrl|Win |Alt | Space |Alt |Ctrl|Func | |Lft| Dn |Rig |
|
* | F9 | F10| |Ctrl|Win |Alt | Space |Alt |Ctrl|Func | |Lft| Dn |Rig |
|
||||||
* `---------' `------------------------------------------------------' `-------------'
|
* `---------' `------------------------------------------------------' `-------------'
|
||||||
*/
|
*/
|
||||||
[VANILLA] = LAYOUT_iso(
|
[VANILLA] = LAYOUT_iso(
|
||||||
KC_F1, KC_F2, KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_PGUP, \
|
KC_F1, KC_F2, KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_PGUP,
|
||||||
KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT, KC_DEL, KC_PGDN, \
|
KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT, KC_DEL, KC_PGDN,
|
||||||
KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, \
|
KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS,
|
||||||
KC_F7, KC_F8, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \
|
KC_F7, KC_F8, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
|
||||||
KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(FUNC), KC_LEFT, KC_DOWN, KC_RGHT \
|
KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(FUNC), KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
),
|
),
|
||||||
|
|
||||||
/* Keymap FUNCTION: Function Layer
|
/* Keymap FUNCTION: Function Layer
|
||||||
* ,---------. ,-------------------------------------------------------------. ,---------.
|
* ,---------. ,-------------------------------------------------------------. ,---------.
|
||||||
* | | | | ` |F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12|Delete | | Ins|Home|
|
* | | | | ` |F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12|Delete | | Ins|Home|
|
||||||
* |---------| |-------------------------------------------------------------| |---------|
|
* |---------| |-------------------------------------------------------------| |---------|
|
||||||
* | | | |Tab |Hom| Up|End|PgU| | | | | | | | | | | Del|End |
|
* | | | |Tab |Hom| Up|End|PgU| | | | | | | | | | | Del|End |
|
||||||
* |---------| |-------------------------------------------------------------| `---------'
|
* |---------| |-------------------------------------------------------------| `---------'
|
||||||
* | | | |MO(FUNC)|Lft|Dn |Rig|PgD| |Lft|Dwn| Up|Rgt| | | |
|
* | | | |MO(FUNC)|Lft|Dn |Rig|PgD| |Lft|Dwn| Up|Rgt| | | |
|
||||||
* |---------| |-------------------------------------------------------------| ,----.
|
* |---------| |-------------------------------------------------------------| ,----.
|
||||||
* | | | |Shift | | | | | | |Mute|V- |V+ | |TG(SETTINGS)| | Up |
|
* | | | |Shift | | | | | | |Mute|V- |V+ | |TG(SETTINGS)| | Up |
|
||||||
* |---------| |--------------------------------------------------------------------------.
|
* |---------| |--------------------------------------------------------------------------.
|
||||||
* | | | |Ctrl|Win |Alt | PgD |Alt |Func |CTRL | |Lft| Dn |Rig |
|
* | | | |Ctrl|Win |Alt | PgD |Alt |Func |CTRL | |Lft| Dn |Rig |
|
||||||
* `---------' `------------------------------------------------------' `-------------'
|
* `---------' `------------------------------------------------------' `-------------'
|
||||||
*/
|
*/
|
||||||
[FUNC] = LAYOUT(
|
[FUNC] = LAYOUT_iso(
|
||||||
_______, _______, KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, KC_HOME, \
|
_______, _______, KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, KC_HOME,
|
||||||
_______, _______, XXXXXXX, KC_HOME, KC_UP, KC_END, KC_PGUP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, KC_END, \
|
_______, _______, XXXXXXX, KC_HOME, KC_UP, KC_END, KC_PGUP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, KC_END,
|
||||||
_______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, XXXXXXX, XXXXXXX, \
|
_______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
_______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, TG(SETTINGS), _______, \
|
_______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, XXXXXXX, TG(SETTINGS), _______,
|
||||||
_______, _______, _______, _______, _______, KC_PGDN, _______, _______, _______, _______, _______, _______ \
|
_______, _______, _______, _______, _______, KC_PGDN, _______, _______, _______, _______, _______, _______
|
||||||
),
|
),
|
||||||
|
|
||||||
/* Keymap SETTINGS: Settings Layer
|
/* Keymap SETTINGS: Settings Layer
|
||||||
* ,---------. ,-------------------------------------------------------------. ,-------------.
|
* ,---------. ,-------------------------------------------------------------. ,-------------.
|
||||||
* | | | |LayClr| | | | | | | | | | |BL-|BL+|BL Togl| |RGB Tog |Val+|
|
* | | | |LayClr| | | | | | | | | | |BL-|BL+|BL Togl| |RGB Tog |Val+|
|
||||||
* |---------| |-------------------------------------------------------------| |-------------|
|
* |---------| |-------------------------------------------------------------| |-------------|
|
||||||
* | | | |MuMode | | | | | | | | | | | | |LEDTst| |RGB Mode|Val-|
|
* | | | |MuMode | | | | | | | | | | | | |LEDTst| |RGB Mode|Val-|
|
||||||
* |---------| |-------------------------------------------------------------| `-------------'
|
* |---------| |-------------------------------------------------------------| `-------------'
|
||||||
* | | | |AudTgl |Hz+|MS+| | | | | | | | | | RST |
|
* | | | |AudTgl |Hz+|MS+| | | | | | | | | | RST |
|
||||||
* |---------| |-------------------------------------------------------------| ,----.
|
* |---------| |-------------------------------------------------------------| ,----.
|
||||||
* | | | |ClickTgl |Hz-|MS-| | | | |MuTgl| | | |Layer Clr | |Hue+|
|
* | | | |ClickTgl |Hz-|MS-| | | | |MuTgl| | | |Layer Clr | |Hue+|
|
||||||
* |---------| |-------------------------------------------------------------------------.
|
* |---------| |-------------------------------------------------------------------------.
|
||||||
* | | | | | | | | | | | |Sat-|Hue-|Sat+|
|
* | | | | | | | | | | | |Sat-|Hue-|Sat+|
|
||||||
* `---------' `--------------------------------------------------------' `--------------'
|
* `---------' `--------------------------------------------------------' `--------------'
|
||||||
*/
|
*/
|
||||||
[SETTINGS] = LAYOUT(
|
[SETTINGS] = LAYOUT_iso(
|
||||||
XXXXXXX, XXXXXXX, KC_FN0, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, BL_INC, BL_TOGG, RGB_TOG, RGB_VAI, \
|
XXXXXXX, XXXXXXX, F(0), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, BL_INC, BL_TOGG, RGB_TOG, RGB_VAI,
|
||||||
XXXXXXX, XXXXXXX, MU_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_MOD, RGB_VAD, \
|
XXXXXXX, XXXXXXX, MU_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_MOD, RGB_VAD,
|
||||||
XXXXXXX, XXXXXXX, AU_TOG, KC_FN1, KC_FN3, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, \
|
XXXXXXX, XXXXXXX, AU_TOG, F(1), F(3), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET,
|
||||||
XXXXXXX, XXXXXXX, KC_FN5, KC_FN2, KC_FN4, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MU_TOG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUI, \
|
XXXXXXX, XXXXXXX, F(5), F(2), F(4), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MU_TOG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUI,
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_SAD, RGB_HUD, RGB_SAI \
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_SAD, RGB_HUD, RGB_SAI
|
||||||
),
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
const uint16_t PROGMEM fn_actions[] = {
|
const uint16_t PROGMEM fn_actions[] = {
|
||||||
ACTION_FUNCTION(LFK_CLEAR), // FN0 - reset layers
|
ACTION_FUNCTION(LFK_CLEAR), // FN0 - reset layers
|
||||||
ACTION_FUNCTION(LFK_CLICK_FREQ_HIGHER), // FN1 - Increase Freq of audio click
|
ACTION_FUNCTION(LFK_CLICK_FREQ_HIGHER), // FN1 - Increase Freq of audio click
|
||||||
ACTION_FUNCTION(LFK_CLICK_FREQ_LOWER), // FN2 - Decrease Freq of audio click
|
ACTION_FUNCTION(LFK_CLICK_FREQ_LOWER), // FN2 - Decrease Freq of audio click
|
||||||
ACTION_FUNCTION(LFK_CLICK_TIME_LONGER), // FN3 - Increase length of audio click
|
ACTION_FUNCTION(LFK_CLICK_TIME_LONGER), // FN3 - Increase length of audio click
|
||||||
ACTION_FUNCTION(LFK_CLICK_TIME_SHORTER), // FN4 - Decrease length of audio click
|
ACTION_FUNCTION(LFK_CLICK_TIME_SHORTER), // FN4 - Decrease length of audio click
|
||||||
ACTION_FUNCTION(LFK_CLICK_TOGGLE), // FN5 - Toggle audio click
|
ACTION_FUNCTION(LFK_CLICK_TOGGLE) // FN5 - Toggle audio click
|
||||||
};
|
};
|
||||||
|
|
||||||
void matrix_init_user(void) {
|
void matrix_init_user(void) {
|
||||||
// This keymap only has a single base layer, so reset the default if needed
|
// 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);
|
eeconfig_update_default_layer(1);
|
||||||
default_layer_set(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) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
# The default keymap for bluepad
|
# The default ISO keymap for LFK78
|
||||||
|
|
|
@ -1,41 +0,0 @@
|
||||||
# Build Options
|
|
||||||
# change to "no" to disable the options, or define them in the Makefile in
|
|
||||||
# the appropriate keymap folder that will get included automatically
|
|
||||||
#
|
|
||||||
|
|
||||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
|
||||||
MOUSEKEY_ENABLE = no # Mouse keys
|
|
||||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
|
||||||
CONSOLE_ENABLE = yes # Console for debug
|
|
||||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
|
||||||
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
|
||||||
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
|
||||||
MIDI_ENABLE = no # MIDI controls
|
|
||||||
AUDIO_ENABLE = yes # 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
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# # Set the LFK78 hardware version. This is defined in rules.mk, but can be overidden here if desired
|
|
||||||
# #
|
|
||||||
# # RevB - first public release, uses atmega32u4, has audio, ISSI matrix split between RGB and backlight
|
|
||||||
# # RevC/D - at90usb1286, no audio, ISSI device 0 is backlight, 4 is RGB
|
|
||||||
# #
|
|
||||||
# # Set to B, C or D
|
|
||||||
# LFK_REV = D
|
|
||||||
|
|
||||||
# ifeq ($(LFK_REV), B)
|
|
||||||
# MCU = atmega32u4
|
|
||||||
# else
|
|
||||||
# MCU = at90usb1286
|
|
||||||
# endif
|
|
||||||
# OPT_DEFS += -DLFK_REV_$(LFK_REV)
|
|
||||||
# OPT_DEFS += -DUSB_PRODUCT=\"LFK_Rev$(LFK_REV)\"
|
|
|
@ -2,110 +2,98 @@
|
||||||
|
|
||||||
enum keymap_layout {
|
enum keymap_layout {
|
||||||
VANILLA = 0, // matches MF68 layout
|
VANILLA = 0, // matches MF68 layout
|
||||||
FUNC, // 0x02
|
FUNC,
|
||||||
SETTINGS, // 0x04
|
SETTINGS
|
||||||
};
|
};
|
||||||
|
|
||||||
// Colors of the layer indicator LED
|
// Colors of the layer indicator LED
|
||||||
// This list needs to define layer 0xFFFFFFFF, it is the end of the list, and the unknown layer
|
// This list needs to define layer 0xFFFFFFFF, it is the end of the list, and the unknown layer
|
||||||
const Layer_Info layer_info[] = {
|
const Layer_Info layer_info[] = {
|
||||||
// Layer Mask Red Green Blue
|
// Layer Mask Red Green Blue
|
||||||
{0x00000000, 0xFFFFFFFF, {0x0000, 0x0FFF, 0x0000}}, // base layer - green
|
{ 0x00000000, 0xFFFFFFFF, { 0x0000, 0x0FFF, 0x0000 } }, // base layer - green
|
||||||
{0x00000002, 0xFFFFFFFE, {0x0000, 0x0000, 0x0FFF}}, // function layer - blue
|
{ 0x00000002, 0xFFFFFFFE, { 0x0000, 0x0000, 0x0FFF } }, // function layer - blue
|
||||||
{0x00000004, 0xFFFFFFFC, {0x0FFF, 0x0000, 0x0FFF}}, // settings layer - magenta
|
{ 0x00000004, 0xFFFFFFFC, { 0x0FFF, 0x0000, 0x0FFF } }, // settings layer - magenta
|
||||||
{0xFFFFFFFF, 0xFFFFFFFF, {0x0FFF, 0x0FFF, 0x0FFF}}, // unknown layer - REQUIRED - white
|
{ 0xFFFFFFFF, 0xFFFFFFFF, { 0x0FFF, 0x0FFF, 0x0FFF } } // unknown layer - REQUIRED - white
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
/* Keymap VANILLA: (Base Layer) Default Layer
|
/* Keymap VANILLA: (Base Layer) Default Layer
|
||||||
* ,---------. ,------------------------------------------------------------. ,---------.
|
* ,---------. ,------------------------------------------------------------. ,---------.
|
||||||
* | F1 | F2 | |Esc~| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0| - | = | / | ` | | Ins|PgUp|
|
* | F1 | F2 | |Esc~| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0| - | = | / | ` | | Ins|PgUp|
|
||||||
* |---------| |------------------------------------------------------------| |---------|
|
* |---------| |------------------------------------------------------------| |---------|
|
||||||
* | F3 | F4 | |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]|Backsp| | Del|PgDn|
|
* | F3 | F4 | |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]|Backsp| | Del|PgDn|
|
||||||
* |---------| |------------------------------------------------------------| `---------'
|
* |---------| |------------------------------------------------------------| `---------'
|
||||||
* | F5 | F6 | |CAPS | A| S| D| F| G| H| J| K| L| ;| '|Return |
|
* | F5 | F6 | |CAPS | A| S| D| F| G| H| J| K| L| ;| '|Return |
|
||||||
* |---------| |------------------------------------------------------------| ,----.
|
* |---------| |------------------------------------------------------------| ,----.
|
||||||
* | F7 | F8 | |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | | Up |
|
* | F7 | F8 | |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | | Up |
|
||||||
* |---------| |-------------------------------------------------------------------------.
|
* |---------| |-------------------------------------------------------------------------.
|
||||||
* | F9 | F10| |Ctrl|Alt |Cmd | Space |Cmd |Ctrl|Func | |Lft| Dn |Rig |
|
* | F9 | F10| |Ctrl|Alt |Cmd | Space |Cmd |Ctrl|Func | |Lft| Dn |Rig |
|
||||||
* `---------' `------------------------------------------------------' `-------------'
|
* `---------' `------------------------------------------------------' `-------------'
|
||||||
*/
|
*/
|
||||||
[VANILLA] = LAYOUT_split_bs(
|
[VANILLA] = LAYOUT_split_bs(
|
||||||
KC_F1, KC_F2, KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, KC_INS, KC_PGUP, \
|
KC_F1, KC_F2, KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, KC_INS, KC_PGUP,
|
||||||
KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_DEL, KC_PGDN, \
|
KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_DEL, KC_PGDN,
|
||||||
KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
|
KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
|
||||||
KC_F7, KC_F8, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \
|
KC_F7, KC_F8, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
|
||||||
KC_F9, KC_F10, KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RCTL, MO(FUNC), KC_LEFT, KC_DOWN, KC_RGHT \
|
KC_F9, KC_F10, KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RCTL, MO(FUNC), KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
),
|
),
|
||||||
|
|
||||||
/* Keymap FUNCTION: Function Layer
|
/* Keymap FUNCTION: Function Layer
|
||||||
* ,---------. ,-------------------------------------------------------------. ,---------.
|
* ,---------. ,-------------------------------------------------------------. ,---------.
|
||||||
* | | | | ` |F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12|Ins |Del | | Ins|Home|
|
* | | | | ` |F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12|Ins |Del | | Ins|Home|
|
||||||
* |---------| |-------------------------------------------------------------| |---------|
|
* |---------| |-------------------------------------------------------------| |---------|
|
||||||
* | | | |Tab |Hom| Up|End|PgU| | | | | | | | | | | Del|End |
|
* | | | |Tab |Hom| Up|End|PgU| | | | | | | | | | | Del|End |
|
||||||
* |---------| |-------------------------------------------------------------| `---------'
|
* |---------| |-------------------------------------------------------------| `---------'
|
||||||
* | | | |MO(FUNC)|Lft|Dn |Rig|PgD| |Lft|Dwn| Up|Rgt| | | |
|
* | | | |MO(FUNC)|Lft|Dn |Rig|PgD| |Lft|Dwn| Up|Rgt| | | |
|
||||||
* |---------| |-------------------------------------------------------------| ,----.
|
* |---------| |-------------------------------------------------------------| ,----.
|
||||||
* | | | |Shift | | | | | | |Mute|V- |V+ | |TG(SETTINGS)| | Up |
|
* | | | |Shift | | | | | | |Mute|V- |V+ | |TG(SETTINGS)| | Up |
|
||||||
* |---------| |--------------------------------------------------------------------------.
|
* |---------| |--------------------------------------------------------------------------.
|
||||||
* | | | |Ctrl|Alt |Cmd | Enter |Alt |Func |CTRL | |Lft| Dn |Rig |
|
* | | | |Ctrl|Alt |Cmd | Enter |Alt |Func |CTRL | |Lft| Dn |Rig |
|
||||||
* `---------' `------------------------------------------------------' `-------------'
|
* `---------' `------------------------------------------------------' `-------------'
|
||||||
*/
|
*/
|
||||||
[FUNC] = LAYOUT_split_bs(
|
[FUNC] = LAYOUT_split_bs(
|
||||||
_______, _______, KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, _______, KC_HOME, \
|
_______, _______, KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, _______, KC_HOME,
|
||||||
_______, _______, XXXXXXX, KC_HOME, KC_UP, KC_END, KC_PGUP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, KC_END, \
|
_______, _______, XXXXXXX, KC_HOME, KC_UP, KC_END, KC_PGUP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, KC_END,
|
||||||
_______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, XXXXXXX, XXXXXXX, \
|
_______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
_______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, TG(SETTINGS), _______, \
|
_______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, TG(SETTINGS), _______,
|
||||||
_______, _______, _______, _______, _______, KC_ENT, _______, _______, _______, _______, _______, _______ \
|
_______, _______, _______, _______, _______, KC_ENT, _______, _______, _______, _______, _______, _______
|
||||||
),
|
),
|
||||||
|
|
||||||
/* Keymap SETTINGS: Settings Layer
|
/* Keymap SETTINGS: Settings Layer
|
||||||
* ,---------. ,-------------------------------------------------------------. ,-------------.
|
* ,---------. ,-------------------------------------------------------------. ,-------------.
|
||||||
* | | | |LayClr| | | | | | | | | | |BL-|BL+| | | |RGB Tog |Val+|
|
* | | | |LayClr| | | | | | | | | | |BL-|BL+| | | |RGB Tog |Val+|
|
||||||
* |---------| |-------------------------------------------------------------| |-------------|
|
* |---------| |-------------------------------------------------------------| |-------------|
|
||||||
* | | | |MuMode | | | | | | | | | | | | |BLTogl| |RGB Mode|Val-|
|
* | | | |MuMode | | | | | | | | | | | | |BLTogl| |RGB Mode|Val-|
|
||||||
* |---------| |-------------------------------------------------------------| `-------------'
|
* |---------| |-------------------------------------------------------------| `-------------'
|
||||||
* | | | |AudTgl |Hz+|MS+| | | | | | | | | | RST |
|
* | | | |AudTgl |Hz+|MS+| | | | | | | | | | RST |
|
||||||
* |---------| |-------------------------------------------------------------| ,----.
|
* |---------| |-------------------------------------------------------------| ,----.
|
||||||
* | | | |ClickTgl |Hz-|MS-| | | | |MuTgl| | | |Layer Clr | |Hue+|
|
* | | | |ClickTgl |Hz-|MS-| | | | |MuTgl| | | |Layer Clr | |Hue+|
|
||||||
* |---------| |-------------------------------------------------------------------------.
|
* |---------| |-------------------------------------------------------------------------.
|
||||||
* | | | | | | | | | | | |Sat-|Hue-|Sat+|
|
* | | | | | | | | | | | |Sat-|Hue-|Sat+|
|
||||||
* `---------' `--------------------------------------------------------' `--------------'
|
* `---------' `--------------------------------------------------------' `--------------'
|
||||||
*/
|
*/
|
||||||
[SETTINGS] = LAYOUT_split_bs(
|
[SETTINGS] = LAYOUT_split_bs(
|
||||||
XXXXXXX, XXXXXXX, KC_FN0, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, BL_INC, XXXXXXX, XXXXXXX, RGB_TOG, RGB_VAI, \
|
XXXXXXX, XXXXXXX, F(0), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, BL_INC, XXXXXXX, XXXXXXX, RGB_TOG, RGB_VAI,
|
||||||
XXXXXXX, XXXXXXX, MU_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_TOGG, RGB_MOD, RGB_VAD, \
|
XXXXXXX, XXXXXXX, MU_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_TOGG, RGB_MOD, RGB_VAD,
|
||||||
XXXXXXX, XXXXXXX, AU_TOG, KC_FN1, KC_FN3, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, \
|
XXXXXXX, XXXXXXX, AU_TOG, F(1), F(3), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET,
|
||||||
XXXXXXX, XXXXXXX, KC_FN5, KC_FN2, KC_FN4, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MU_TOG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUI, \
|
XXXXXXX, XXXXXXX, F(5), F(2), F(4), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MU_TOG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUI,
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_SAD, RGB_HUD, RGB_SAI \
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_SAD, RGB_HUD, RGB_SAI
|
||||||
),
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
const uint16_t PROGMEM fn_actions[] = {
|
const uint16_t PROGMEM fn_actions[] = {
|
||||||
ACTION_FUNCTION(LFK_CLEAR), // FN0 - reset layers
|
ACTION_FUNCTION(LFK_CLEAR), // FN0 - reset layers
|
||||||
ACTION_FUNCTION(LFK_CLICK_FREQ_HIGHER), // FN1 - Increase Freq of audio click
|
ACTION_FUNCTION(LFK_CLICK_FREQ_HIGHER), // FN1 - Increase Freq of audio click
|
||||||
ACTION_FUNCTION(LFK_CLICK_FREQ_LOWER), // FN2 - Decrease Freq of audio click
|
ACTION_FUNCTION(LFK_CLICK_FREQ_LOWER), // FN2 - Decrease Freq of audio click
|
||||||
ACTION_FUNCTION(LFK_CLICK_TIME_LONGER), // FN3 - Increase length of audio click
|
ACTION_FUNCTION(LFK_CLICK_TIME_LONGER), // FN3 - Increase length of audio click
|
||||||
ACTION_FUNCTION(LFK_CLICK_TIME_SHORTER), // FN4 - Decrease length of audio click
|
ACTION_FUNCTION(LFK_CLICK_TIME_SHORTER), // FN4 - Decrease length of audio click
|
||||||
ACTION_FUNCTION(LFK_CLICK_TOGGLE), // FN5 - Toggle audio click
|
ACTION_FUNCTION(LFK_CLICK_TOGGLE) // FN5 - Toggle audio click
|
||||||
};
|
};
|
||||||
|
|
||||||
void matrix_init_user(void) {
|
void matrix_init_user(void) {
|
||||||
// This keymap only has a single base layer, so reset the default if needed
|
// 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);
|
eeconfig_update_default_layer(1);
|
||||||
default_layer_set(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) {
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,31 +0,0 @@
|
||||||
# Build Options
|
|
||||||
# change to "no" to disable the options, or define them in the Makefile in
|
|
||||||
# the appropriate keymap folder that will get included automatically
|
|
||||||
#
|
|
||||||
|
|
||||||
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 = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
|
||||||
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
|
||||||
MIDI_ENABLE = no # MIDI controls
|
|
||||||
AUDIO_ENABLE = yes # 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
|
|
||||||
CAPSLOCK_LED = no # Toggle back light LED of Caps Lock
|
|
||||||
|
|
||||||
# Override the LFK78 hardware version:
|
|
||||||
#
|
|
||||||
# B - first public release, uses atmega32u4, has audio, ISSI matrix split between RGB and backlight
|
|
||||||
# C-H - at90usb1286, no audio, ISSI device 0 is backlight, 4 is RGB
|
|
||||||
# J - at90usb646, C6 audio, ISSI device 0 is backlight, 4 is RGB
|
|
||||||
# LFK_REV = J
|
|
|
@ -1,13 +1,11 @@
|
||||||
#include <avr/sfr_defs.h>
|
#include "lfk78.h"
|
||||||
|
|
||||||
#include <avr/timer_avr.h>
|
#include <avr/timer_avr.h>
|
||||||
#include <avr/wdt.h>
|
#include <avr/wdt.h>
|
||||||
#include "lfk78.h"
|
#include <audio/audio.h>
|
||||||
#include "keymap.h"
|
|
||||||
#include "issi.h"
|
#include "issi.h"
|
||||||
#include "TWIlib.h"
|
#include "TWIlib.h"
|
||||||
#include "lighting.h"
|
#include "lighting.h"
|
||||||
#include "debug.h"
|
|
||||||
#include <audio/audio.h>
|
|
||||||
|
|
||||||
uint16_t click_hz = CLICK_HZ;
|
uint16_t click_hz = CLICK_HZ;
|
||||||
uint16_t click_time = CLICK_MS;
|
uint16_t click_time = CLICK_MS;
|
||||||
|
@ -15,85 +13,91 @@ uint8_t click_toggle = CLICK_ENABLED;
|
||||||
|
|
||||||
__attribute__((weak))
|
__attribute__((weak))
|
||||||
const Layer_Info layer_info[] = {
|
const Layer_Info layer_info[] = {
|
||||||
// Layer Mask Red Green Blue
|
// Layer Mask Red Green Blue
|
||||||
{0x00000000, 0xFFFFFFFF, {0x0000, 0x0FFF, 0x0000}}, // base layer - green
|
{ 0x00000000, 0xFFFFFFFF, { 0x0000, 0x0FFF, 0x0000 } }, // base layer - green
|
||||||
{0x00000002, 0xFFFFFFFE, {0x0000, 0x0000, 0x0FFF}}, // function layer - blue
|
{ 0x00000002, 0xFFFFFFFE, { 0x0000, 0x0000, 0x0FFF } }, // function layer - blue
|
||||||
{0x00000004, 0xFFFFFFFC, {0x0FFF, 0x0000, 0x0FFF}}, // settings layer - magenta
|
{ 0x00000004, 0xFFFFFFFC, { 0x0FFF, 0x0000, 0x0FFF } }, // settings layer - magenta
|
||||||
{0xFFFFFFFF, 0xFFFFFFFF, {0x0FFF, 0x0FFF, 0x0FFF}}, // unknown layer - REQUIRED - white
|
{ 0xFFFFFFFF, 0xFFFFFFFF, { 0x0FFF, 0x0FFF, 0x0FFF } } // unknown layer - REQUIRED - white
|
||||||
};
|
};
|
||||||
|
|
||||||
void matrix_init_kb(void)
|
void matrix_init_kb(void) {
|
||||||
{
|
|
||||||
matrix_init_user();
|
matrix_init_user();
|
||||||
|
|
||||||
// Configure the Layer LED
|
// Configure the Layer LED
|
||||||
// Set up 16 bit PWM: Fast PWM, mode 15, inverted
|
// Set up 16 bit PWM: Fast PWM, mode 14, inverted
|
||||||
TCCR1A = 0b11111110;
|
TCCR1A = _BV(COM1A1) | _BV(COM1A0) | _BV(COM1B1) | _BV(COM1B0) | _BV(COM1C1) | _BV(COM1C0) | _BV(WGM11);
|
||||||
TCCR1B = 0b00011001;
|
TCCR1B = _BV(WGM13) | _BV(WGM12) | _BV(CS10);
|
||||||
ICR1 = 0xFFFF;
|
ICR1 = 0xFFFF;
|
||||||
// PWM values - 0xFFFF = off, 0x0000 = max
|
// PWM values - 0xFFFF = off, 0x0000 = max
|
||||||
OCR1C = 0x0000; // B7 - Blue
|
|
||||||
OCR1B = 0x0000; // B6 - Green
|
|
||||||
OCR1A = 0x0FFF; // B5 - Red
|
OCR1A = 0x0FFF; // B5 - Red
|
||||||
|
OCR1B = 0x0000; // B6 - Green
|
||||||
|
OCR1C = 0x0000; // B7 - Blue
|
||||||
// Set as output
|
// Set as output
|
||||||
DDRB |= 0b11100000;
|
setPinOutput(B5);
|
||||||
|
setPinOutput(B6);
|
||||||
|
setPinOutput(B7);
|
||||||
|
|
||||||
#ifndef AUDIO_ENABLE
|
#ifndef AUDIO_ENABLE
|
||||||
// If we're not using the audio pin, drive it low
|
// If we're not using the audio pin, drive it low
|
||||||
sbi(DDRC, 6);
|
setPinOutput(C6);
|
||||||
cbi(PORTC, 6);
|
writePinLow(C6);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ISSI_ENABLE
|
#ifdef ISSI_ENABLE
|
||||||
issi_init();
|
issi_init();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef WATCHDOG_ENABLE
|
#ifdef WATCHDOG_ENABLE
|
||||||
// This is done after turning the layer LED red, if we're caught in a loop
|
// This is done after turning the layer LED red, if we're caught in a loop
|
||||||
// we should get a flashing red light
|
// we should get a flashing red light
|
||||||
wdt_enable(WDTO_500MS);
|
wdt_enable(WDTO_500MS);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void matrix_scan_kb(void)
|
void matrix_scan_kb(void) {
|
||||||
{
|
|
||||||
#ifdef WATCHDOG_ENABLE
|
#ifdef WATCHDOG_ENABLE
|
||||||
wdt_reset();
|
wdt_reset();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ISSI_ENABLE
|
#ifdef ISSI_ENABLE
|
||||||
// switch/underglow lighting update
|
// switch/underglow lighting update
|
||||||
static uint32_t issi_device = 0;
|
static uint32_t issi_device = 0;
|
||||||
static uint32_t twi_last_ready = 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");
|
dprintf("TWI failed to recover, TWI re-init\n");
|
||||||
twi_last_ready = 0;
|
twi_last_ready = 0;
|
||||||
TWIInit();
|
TWIInit();
|
||||||
force_issi_refresh();
|
force_issi_refresh();
|
||||||
}
|
}
|
||||||
if(isTWIReady()){
|
|
||||||
|
if (isTWIReady()) {
|
||||||
twi_last_ready = 0;
|
twi_last_ready = 0;
|
||||||
// If the i2c bus is available, kick off the issi update, alternate between devices
|
// If the i2c bus is available, kick off the issi update, alternate between devices
|
||||||
update_issi(issi_device, issi_device);
|
update_issi(issi_device, issi_device);
|
||||||
if(issi_device){
|
|
||||||
|
if (issi_device) {
|
||||||
issi_device = 0;
|
issi_device = 0;
|
||||||
}else{
|
} else {
|
||||||
issi_device = 3;
|
issi_device = 3;
|
||||||
}
|
}
|
||||||
}else{
|
} else {
|
||||||
twi_last_ready++;
|
twi_last_ready++;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Update layer indicator LED
|
// Update layer indicator LED
|
||||||
//
|
//
|
||||||
// Not sure how else to reliably do this... TMK has the 'hook_layer_change'
|
// Not sure how else to reliably do this... TMK has the 'hook_layer_change'
|
||||||
// but can't find QMK equiv
|
// but can't find QMK equiv
|
||||||
static uint32_t layer_indicator = -1;
|
static uint32_t layer_indicator = -1;
|
||||||
if(layer_indicator != layer_state){
|
|
||||||
for(uint32_t i=0;; i++){
|
if (layer_indicator != layer_state) {
|
||||||
|
for (uint32_t i = 0; ; i++) {
|
||||||
// the layer_info list should end with layer 0xFFFFFFFF
|
// the layer_info list should end with layer 0xFFFFFFFF
|
||||||
// it will break this out of the loop and define the unknown layer color
|
// it will break this out of the loop and define the unknown layer color
|
||||||
if((layer_info[i].layer == (layer_state & layer_info[i].mask)) || (layer_info[i].layer == 0xFFFFFFFF)){
|
if ((layer_info[i].layer == (layer_state & layer_info[i].mask)) || (layer_info[i].layer == 0xFFFFFFFF)) {
|
||||||
OCR1A = layer_info[i].color.red;
|
OCR1A = layer_info[i].color.red;
|
||||||
OCR1B = layer_info[i].color.green;
|
OCR1B = layer_info[i].color.green;
|
||||||
OCR1C = layer_info[i].color.blue;
|
OCR1C = layer_info[i].color.blue;
|
||||||
|
@ -102,14 +106,15 @@ void matrix_scan_kb(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
matrix_scan_user();
|
matrix_scan_user();
|
||||||
}
|
}
|
||||||
|
|
||||||
void click(uint16_t freq, uint16_t duration){
|
void click(uint16_t freq, uint16_t duration) {
|
||||||
#ifdef AUDIO_ENABLE
|
#ifdef AUDIO_ENABLE
|
||||||
if(freq >= 100 && freq <= 20000 && duration < 100){
|
if (freq >= 100 && freq <= 20000 && duration < 100) {
|
||||||
play_note(freq, 10);
|
play_note(freq, 10);
|
||||||
for (uint16_t i = 0; i < duration; i++){
|
for (uint16_t i = 0; i < duration; i++) {
|
||||||
_delay_ms(1);
|
_delay_ms(1);
|
||||||
}
|
}
|
||||||
stop_all_notes();
|
stop_all_notes();
|
||||||
|
@ -117,35 +122,37 @@ void click(uint16_t freq, uint16_t duration){
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
bool process_record_kb(uint16_t keycode, keyrecord_t* record)
|
bool process_record_kb(uint16_t keycode, keyrecord_t* record) {
|
||||||
{
|
if (click_toggle && record->event.pressed) {
|
||||||
if (click_toggle && record->event.pressed){
|
|
||||||
click(click_hz, click_time);
|
click(click_hz, click_time);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (keycode == RESET) {
|
if (keycode == RESET) {
|
||||||
reset_keyboard_kb();
|
reset_keyboard_kb();
|
||||||
} else {
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return process_record_user(keycode, record);
|
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
|
#ifdef AUDIO_ENABLE
|
||||||
int8_t sign = 1;
|
int8_t sign = 1;
|
||||||
#endif
|
#endif
|
||||||
if(id == LFK_ESC_TILDE){
|
|
||||||
|
if (id == LFK_ESC_TILDE) {
|
||||||
// Send ~ on shift-esc
|
// Send ~ on shift-esc
|
||||||
void (*method)(uint8_t) = (event->event.pressed) ? &add_key : &del_key;
|
void (*method)(uint8_t) = (event->event.pressed) ? &add_key : &del_key;
|
||||||
uint8_t shifted = get_mods() & (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT));
|
uint8_t shifted = get_mods() & (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT));
|
||||||
if(layer_state == 0){
|
|
||||||
|
if (layer_state == 0) {
|
||||||
method(shifted ? KC_GRAVE : KC_ESCAPE);
|
method(shifted ? KC_GRAVE : KC_ESCAPE);
|
||||||
}else{
|
} else {
|
||||||
method(shifted ? KC_ESCAPE : KC_GRAVE);
|
method(shifted ? KC_ESCAPE : KC_GRAVE);
|
||||||
}
|
}
|
||||||
|
|
||||||
send_keyboard_report();
|
send_keyboard_report();
|
||||||
}else if(event->event.pressed){
|
} else if (event->event.pressed) {
|
||||||
switch(id){
|
switch (id) {
|
||||||
case LFK_SET_DEFAULT_LAYER:
|
case LFK_SET_DEFAULT_LAYER:
|
||||||
// set/save the current base layer to eeprom, falls through to LFK_CLEAR
|
// set/save the current base layer to eeprom, falls through to LFK_CLEAR
|
||||||
eeconfig_update_default_layer(1UL << opt);
|
eeconfig_update_default_layer(1UL << opt);
|
||||||
|
@ -161,24 +168,24 @@ void action_function(keyrecord_t *event, uint8_t id, uint8_t opt)
|
||||||
#endif
|
#endif
|
||||||
#ifdef AUDIO_ENABLE
|
#ifdef AUDIO_ENABLE
|
||||||
case LFK_CLICK_FREQ_LOWER:
|
case LFK_CLICK_FREQ_LOWER:
|
||||||
sign = -1; // continue to next statement
|
sign = -1; // continue to next statement
|
||||||
case LFK_CLICK_FREQ_HIGHER:
|
case LFK_CLICK_FREQ_HIGHER:
|
||||||
click_hz += sign * 100;
|
click_hz += sign * 100;
|
||||||
click(click_hz, click_time);
|
click(click_hz, click_time);
|
||||||
break;
|
break;
|
||||||
case LFK_CLICK_TOGGLE:
|
case LFK_CLICK_TOGGLE:
|
||||||
if(click_toggle){
|
if (click_toggle) {
|
||||||
click_toggle = 0;
|
click_toggle = 0;
|
||||||
click(4000, 100);
|
click(4000, 100);
|
||||||
click(1000, 100);
|
click(1000, 100);
|
||||||
}else{
|
} else {
|
||||||
click_toggle = 1;
|
click_toggle = 1;
|
||||||
click(1000, 100);
|
click(1000, 100);
|
||||||
click(4000, 100);
|
click(4000, 100);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case LFK_CLICK_TIME_SHORTER:
|
case LFK_CLICK_TIME_SHORTER:
|
||||||
sign = -1; // continue to next statement
|
sign = -1; // continue to next statement
|
||||||
case LFK_CLICK_TIME_LONGER:
|
case LFK_CLICK_TIME_LONGER:
|
||||||
click_time += sign;
|
click_time += sign;
|
||||||
click(click_hz, click_time);
|
click(click_hz, click_time);
|
||||||
|
@ -194,49 +201,52 @@ void action_function(keyrecord_t *event, uint8_t id, uint8_t opt)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void reset_keyboard_kb(){
|
void reset_keyboard_kb() {
|
||||||
#ifdef WATCHDOG_ENABLE
|
#ifdef WATCHDOG_ENABLE
|
||||||
MCUSR = 0;
|
MCUSR = 0;
|
||||||
wdt_disable();
|
wdt_disable();
|
||||||
wdt_reset();
|
wdt_reset();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
OCR1A = 0x0000; // B5 - Red
|
OCR1A = 0x0000; // B5 - Red
|
||||||
OCR1B = 0x0FFF; // B6 - Green
|
OCR1B = 0x0FFF; // B6 - Green
|
||||||
OCR1C = 0x0FFF; // B7 - Blue
|
OCR1C = 0x0FFF; // B7 - Blue
|
||||||
|
|
||||||
reset_keyboard();
|
reset_keyboard();
|
||||||
}
|
}
|
||||||
|
|
||||||
void led_set_kb(uint8_t usb_led)
|
void led_set_kb(uint8_t usb_led) {
|
||||||
{
|
|
||||||
// put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
|
// put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
|
||||||
#ifdef ISSI_ENABLE
|
#ifdef ISSI_ENABLE
|
||||||
#ifdef CAPSLOCK_LED
|
# ifdef CAPSLOCK_LED
|
||||||
if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
|
if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
|
||||||
activateLED(0, 3, 7, 255);
|
activateLED(0, 3, 7, 255);
|
||||||
}else{
|
} else {
|
||||||
activateLED(0, 3, 7, 0);
|
activateLED(0, 3, 7, 0);
|
||||||
}
|
}
|
||||||
#endif // CAPSLOCK_LED
|
# endif // CAPSLOCK_LED
|
||||||
#endif // ISS_ENABLE
|
#endif // ISS_ENABLE
|
||||||
|
|
||||||
led_set_user(usb_led);
|
led_set_user(usb_led);
|
||||||
}
|
}
|
||||||
|
|
||||||
// LFK lighting info
|
// LFK lighting info
|
||||||
const uint8_t switch_matrices[] = {0, 1};
|
const uint8_t switch_matrices[] = { 0, 1 };
|
||||||
const uint8_t rgb_matrices[] = {6, 7};
|
const uint8_t rgb_matrices[] = { 6, 7 };
|
||||||
const uint8_t rgb_sequence[] = {
|
const uint8_t rgb_sequence[] = {
|
||||||
12, 11, 10, 9, 16, 32, 31, 30, 28, 25, 24, 22, 21,
|
12, 11, 10, 9, 16, 32, 31, 30, 28, 25, 24, 22, 21,
|
||||||
20, 19, 18, 17, 1, 2, 3, 4, 5, 6, 7, 8, 14, 13
|
20, 19, 18, 17, 1, 2, 3, 4, 5, 6, 7, 8, 14, 13
|
||||||
};
|
};
|
||||||
|
|
||||||
// Maps switch LEDs from Row/Col to ISSI matrix.
|
// Maps switch LEDs from Row/Col to ISSI matrix.
|
||||||
// Value breakdown:
|
// Value breakdown:
|
||||||
// Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|
// Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|
||||||
// / \ ISSI Col | ISSI Row |
|
// / \ ISSI Col | ISSI Row |
|
||||||
// matrix idx
|
// matrix idx
|
||||||
const uint8_t switch_leds[MATRIX_ROWS][MATRIX_COLS] =
|
const uint8_t switch_leds[MATRIX_ROWS][MATRIX_COLS] = LAYOUT(
|
||||||
LAYOUT(
|
0x19, 0x18, 0x17, 0x16, 0x15, 0x14, 0x13, 0x12, 0x11, 0x99, 0x98, 0x97, 0x96, 0x95, 0x94, 0x93, 0x92, 0x91,
|
||||||
0x19, 0x18, 0x17, 0x16, 0x15, 0x14, 0x13, 0x12, 0x11, 0x99, 0x98, 0x97, 0x96, 0x95, 0x94, 0x93, 0x92, 0x91,
|
0x29, 0x28, 0x27, 0x26, 0x25, 0x24, 0x23, 0x22, 0x21, 0xA9, 0xA8, 0xA7, 0xA6, 0xA5, 0xA4, 0xA3, 0xA2, 0xA1,
|
||||||
0x29, 0x28, 0x27, 0x26, 0x25, 0x24, 0x23, 0x22, 0x21, 0xA9, 0xA8, 0xA7, 0xA6, 0xA5, 0xA4, 0xA3, 0xA2, 0xA1,
|
0x39, 0x38, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0xB9, 0xB8, 0xB7, 0xB6, 0xB5, 0xB3,
|
||||||
0x39, 0x38, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0xB9, 0xB8, 0xB7, 0xB6, 0xB5, 0xB3,
|
0x49, 0x48, 0x47, 0x45, 0x44, 0x43, 0x42, 0x41, 0xC9, 0xC8, 0xC7, 0xC6, 0xC5, 0xC4, 0xC2,
|
||||||
0x49, 0x48, 0x47, 0x45, 0x44, 0x43, 0x42, 0x41, 0xC9, 0xC8, 0xC7, 0xC6, 0xC5, 0xC4, 0xC2,
|
0x59, 0x58, 0x57, 0x56, 0x55, 0x51, 0xD6, 0xE5, 0xE4, 0xE3, 0xE2, 0xE1
|
||||||
0x59, 0x58, 0x57, 0x56, 0x55, 0x51, 0xD6, 0xE5, 0xE4, 0xE3, 0xE2, 0xE1);
|
);
|
||||||
|
|
|
@ -1,24 +1,15 @@
|
||||||
#ifndef LFK78_H
|
#pragma once
|
||||||
#define LFK78_H
|
|
||||||
|
|
||||||
/* if the kb.h file exists (because we're running from qmkbuilder) include it */
|
|
||||||
#if __has_include("kb.h")
|
|
||||||
#include "kb.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "quantum.h"
|
#include "quantum.h"
|
||||||
#include "matrix.h"
|
|
||||||
#include <avr/sfr_defs.h>
|
|
||||||
|
|
||||||
#ifndef cbi
|
#if defined(KEYBOARD_lfkeyboards_lfk78_revb)
|
||||||
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
|
# include "revb.h"
|
||||||
|
#elif defined(KEYBOARD_lfkeyboards_lfk78_revc)
|
||||||
|
# include "revc.h"
|
||||||
|
#elif defined(KEYBOARD_lfkeyboards_lfk78_revj)
|
||||||
|
# include "revj.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef sbi
|
|
||||||
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct RGB_Color {
|
typedef struct RGB_Color {
|
||||||
uint16_t red;
|
uint16_t red;
|
||||||
uint16_t green;
|
uint16_t green;
|
||||||
|
@ -53,120 +44,3 @@ enum action_functions {
|
||||||
|
|
||||||
void reset_keyboard_kb(void);
|
void reset_keyboard_kb(void);
|
||||||
void click(uint16_t freq, uint16_t duration);
|
void click(uint16_t freq, uint16_t duration);
|
||||||
|
|
||||||
// readability
|
|
||||||
#define ___ KC_NO
|
|
||||||
|
|
||||||
#ifdef LFK_REV_B
|
|
||||||
/* RevB Keymap */
|
|
||||||
// This a shortcut to help you visually see your layout.
|
|
||||||
/*
|
|
||||||
* ,---------. ,-----------------------------------------------------------------------. ,---------.
|
|
||||||
* | 0 | 1 | | 2 | 3 | 4 | 5 | 6 | 7 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | | 94 | 95 |
|
|
||||||
* |---------| |-----------------------------------------------------------------------| |---------|
|
|
||||||
* | 10 | 11 | | 12 | 13 | 14 | 15 | 16 | 17 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | | 96 | 97 |
|
|
||||||
* |---------| |-----------------------------------------------------------------------| `---------'
|
|
||||||
* | 20 | 21 | | 22 | 23 | 24 | 25 | 26 | 27 | 70 | 71 | 72 | 73 | 74 | 75 | 76 |
|
|
||||||
* |---------| |-----------------------------------------------------------------------| ,----.
|
|
||||||
* | 30 | 31 | | 32 | 33 | 34 | 35 | 36 | 37 | 80 | 81 | 82 | 83 | 84 | 85 | | 86 |
|
|
||||||
* |---------| |-------------------------------------------------------------------------------------.
|
|
||||||
* | 40 | 41 | | 42 | 43 | 44 | 45 | 46 | 47 | 90 | | 91 | 92 | 93 |
|
|
||||||
* `---------' `--------------------------------------------------------------------' `--------------'
|
|
||||||
*/
|
|
||||||
// The first section contains all of the arguements
|
|
||||||
// The second converts the arguments into a two-dimensional array
|
|
||||||
#define LAYOUT( \
|
|
||||||
k00, k01, k02, k03, k04, k05, k06, k07, k50, k51, k52, k53, k54, k55, k56, k57, k94, k95, \
|
|
||||||
k10, k11, k12, k13, k14, k15, k16, k17, k60, k61, k62, k63, k64, k65, k66, k67, k96, k97, \
|
|
||||||
k20, k21, k22, k23, k24, k25, k26, k27, k70, k71, k72, k73, k74, k75, k76, \
|
|
||||||
k30, k31, k32, k33, k34, k35, k36, k37, k80, k81, k82, k83, k84, k85, k86, \
|
|
||||||
k40, k41, k42, k43, k44, k45, k46, k47, k90, k91, k92, k93 \
|
|
||||||
) { \
|
|
||||||
{ k00, k01, k02, k03, k04, k05, k06, k07 }, \
|
|
||||||
{ k10, k11, k12, k13, k14, k15, k16, k17 }, \
|
|
||||||
{ k20, k21, k22, k23, k24, k25, k26, k27 }, \
|
|
||||||
{ k30, k31, k32, k33, k34, k35, k36, k37 }, \
|
|
||||||
{ k40, k41, k42, k43, k44, k45, k46, k47 }, \
|
|
||||||
{ k50, k51, k52, k53, k54, k55, k56, k57 }, \
|
|
||||||
{ k60, k61, k62, k63, k64, k65, k66, k67 }, \
|
|
||||||
{ k70, k71, k72, k73, k74, k75, k76, ___ }, \
|
|
||||||
{ k80, k81, k82, k83, k84, k85, k86, ___ }, \
|
|
||||||
{ k90, k91, k92, k93, k94, k95, k96, k97 }, \
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
/* RevC+ Keymap */
|
|
||||||
// This a shortcut to help you visually see your layout.
|
|
||||||
/*
|
|
||||||
* ,---------. ,-----------------------------------------------------------------------. ,---------.
|
|
||||||
* | 11 | 12 | | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 1A | 1B | 1C | 1D | 1E | 1F | 1G | | 1H | 1I |
|
|
||||||
* |---------| |-----------------------------------------------------------------------| |---------|
|
|
||||||
* | 21 | 22 | | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 2A | 2B | 2C | 2D | 2E | 2F | 2G | | 2H | 2I |
|
|
||||||
* |---------| |-----------------------------------------------------------------------| `---------'
|
|
||||||
* | 31 | 32 | | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 3A | 3B | 3C | 3D | 3E | 3F |
|
|
||||||
* |---------| |-----------------------------------------------------------------------| ,----.
|
|
||||||
* | 41 | 42 | | 43 | 45 | 46 | 47 | 48 | 49 | 4A | 4B | 4C | 4D | 4E | 4F | | 4H |
|
|
||||||
* |---------| |-------------------------------------------------------------------------------------.
|
|
||||||
* | 51 | 52 | | 53 | 54 | 55 | 59 | 5D | 5E | 5F | | 5G | 5H | 5I |
|
|
||||||
* `---------' `--------------------------------------------------------------------' `--------------'
|
|
||||||
*/
|
|
||||||
// The first section contains all of the arguements
|
|
||||||
// The second converts the arguments into a two-dimensional array
|
|
||||||
#define LAYOUT( \
|
|
||||||
k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, k1H, k1I, \
|
|
||||||
k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, k2G, k2H, k2I, \
|
|
||||||
k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, \
|
|
||||||
k41, k42, k43, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, k4H, \
|
|
||||||
k51, k52, k53, k54, k55, k59, k5D, k5E, k5F, k5G, k5H, k5I \
|
|
||||||
) { \
|
|
||||||
{ k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, k1H, k1I }, \
|
|
||||||
{ k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, k2G, k2H, k2I }, \
|
|
||||||
{ k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, ___, ___, ___ }, \
|
|
||||||
{ k41, k42, k43, ___, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, ___, k4H, ___ }, \
|
|
||||||
{ k51, k52, k53, k54, k55, ___, ___, ___, k59, ___, ___, ___, k5D, k5E, k5F, k5G, k5H, k5I } \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define LAYOUT_split_bs( \
|
|
||||||
k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, k3G, k1H, k1I, \
|
|
||||||
k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, k2G, k2H, k2I, \
|
|
||||||
k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, \
|
|
||||||
k41, k42, k43, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, k4H, \
|
|
||||||
k51, k52, k53, k54, k55, k59, k5D, k5E, k5F, k5G, k5H, k5I \
|
|
||||||
) { \
|
|
||||||
{ k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, k1H, k1I }, \
|
|
||||||
{ k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, k2G, k2H, k2I }, \
|
|
||||||
{ k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, k3G, ___, ___ }, \
|
|
||||||
{ k41, k42, k43, ___, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, ___, k4H, ___ }, \
|
|
||||||
{ k51, k52, k53, k54, k55, ___, ___, ___, k59, ___, ___, ___, k5D, k5E, k5F, k5G, k5H, k5I } \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define LAYOUT_split_rshift( \
|
|
||||||
k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, k1H, k1I, \
|
|
||||||
k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, k2G, k2H, k2I, \
|
|
||||||
k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, \
|
|
||||||
k41, k42, k43, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, k4G, k4H, \
|
|
||||||
k51, k52, k53, k54, k55, k59, k5D, k5E, k5F, k5G, k5H, k5I \
|
|
||||||
) { \
|
|
||||||
{ k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, k1H, k1I }, \
|
|
||||||
{ k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, k2G, k2H, k2I }, \
|
|
||||||
{ k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, ___, ___, ___ }, \
|
|
||||||
{ k41, k42, k43, ___, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, k4G, k4H, ___ }, \
|
|
||||||
{ k51, k52, k53, k54, k55, ___, ___, ___, k59, ___, ___, ___, k5D, k5E, k5F, k5G, k5H, k5I } \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define LAYOUT_iso( \
|
|
||||||
k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, k1H, k1I, \
|
|
||||||
k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, k2G, k2H, k2I, \
|
|
||||||
k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, \
|
|
||||||
k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, k4H, \
|
|
||||||
k51, k52, k53, k54, k55, k59, k5D, k5E, k5F, k5G, k5H, k5I \
|
|
||||||
) { \
|
|
||||||
{ k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, k1H, k1I }, \
|
|
||||||
{ k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, k2G, k2H, k2I }, \
|
|
||||||
{ k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, ___, ___, ___ }, \
|
|
||||||
{ k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, ___, k4H, ___ }, \
|
|
||||||
{ k51, k52, k53, k54, k55, ___, ___, ___, k59, ___, ___, ___, k5D, k5E, k5F, k5G, k5H, k5I } \
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif //LFK_REV_B
|
|
||||||
|
|
||||||
#endif //LFK78_H
|
|
||||||
|
|
|
@ -1,11 +1,18 @@
|
||||||
LFK78/68
|
# LFK78/68
|
||||||
===
|
|
||||||
|
|
||||||
A 65% keyboard similar to the MagicForce68 or VA68M. Optional function key block on left side.
|
A 65% keyboard similar to the MagicForce68 or VA68M. Optional function key block on left side.
|
||||||
|
|
||||||
Keyboard Maintainer: [LFKeyboards](https://github.com/lfkeyboards)
|
* Keyboard Maintainer: [LFKeyboards](https://github.com/lfkeyboards)
|
||||||
Hardware Supported: LFK78/68 RevB - RevJ, SMK78/68
|
* Hardware Supported: LFK78/68 RevB - RevJ, SMK78/68
|
||||||
Hardware Availability: [LFKeyboards.com](https://www.lfkeyboards.com/)
|
* Hardware Availability: [LFKeyboards.com](https://www.lfkeyboards.com/)
|
||||||
|
|
||||||
|
## Revisions
|
||||||
|
|
||||||
|
* `revb`: First public release, uses ATmega32U4, has audio, ISSI matrix split between RGB and backlight
|
||||||
|
* `revc`: Revisions C through H, uses AT90USB1286, no audio, ISSI device 0 is backlight, 4 is RGB
|
||||||
|
* `revj`: Audio on pin C6, uses AT90USB646
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
Make example for this keyboard (after setting up your build environment):
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
|
21
keyboards/lfkeyboards/lfk78/revb/config.h
Normal file
21
keyboards/lfkeyboards/lfk78/revb/config.h
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 10
|
||||||
|
#define MATRIX_COLS 8
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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 { B0, B1, B2, B3, B4, F0, F1, F4, F5, F6 }
|
||||||
|
#define MATRIX_COL_PINS { E6, F7, D2, D3, D4, D5, D6, D7 }
|
||||||
|
#define UNUSED_PINS
|
||||||
|
|
||||||
|
#define RGBLED_NUM 31
|
104
keyboards/lfkeyboards/lfk78/revb/info.json
Normal file
104
keyboards/lfkeyboards/lfk78/revb/info.json
Normal file
|
@ -0,0 +1,104 @@
|
||||||
|
{
|
||||||
|
"keyboard_name": "LFK78/68 Rev B",
|
||||||
|
"url": "",
|
||||||
|
"maintainer": "qmk",
|
||||||
|
"width": 19.5,
|
||||||
|
"height": 5,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT": {
|
||||||
|
"layout": [
|
||||||
|
{"x":0, "y":0},
|
||||||
|
{"x":1, "y":0},
|
||||||
|
|
||||||
|
{"x":2.25, "y":0},
|
||||||
|
{"x":3.25, "y":0},
|
||||||
|
{"x":4.25, "y":0},
|
||||||
|
{"x":5.25, "y":0},
|
||||||
|
{"x":6.25, "y":0},
|
||||||
|
{"x":7.25, "y":0},
|
||||||
|
{"x":8.25, "y":0},
|
||||||
|
{"x":9.25, "y":0},
|
||||||
|
{"x":10.25, "y":0},
|
||||||
|
{"x":11.25, "y":0},
|
||||||
|
{"x":12.25, "y":0},
|
||||||
|
{"x":13.25, "y":0},
|
||||||
|
{"x":14.25, "y":0},
|
||||||
|
{"x":15.25, "y":0, "w":2},
|
||||||
|
|
||||||
|
{"x":17.5, "y":0},
|
||||||
|
{"x":18.5, "y":0},
|
||||||
|
|
||||||
|
{"x":0, "y":1},
|
||||||
|
{"x":1, "y":1},
|
||||||
|
|
||||||
|
{"x":2.25, "y":1, "w":1.5},
|
||||||
|
{"x":3.75, "y":1},
|
||||||
|
{"x":4.75, "y":1},
|
||||||
|
{"x":5.75, "y":1},
|
||||||
|
{"x":6.75, "y":1},
|
||||||
|
{"x":7.75, "y":1},
|
||||||
|
{"x":8.75, "y":1},
|
||||||
|
{"x":9.75, "y":1},
|
||||||
|
{"x":10.75, "y":1},
|
||||||
|
{"x":11.75, "y":1},
|
||||||
|
{"x":12.75, "y":1},
|
||||||
|
{"x":13.75, "y":1},
|
||||||
|
{"x":14.75, "y":1},
|
||||||
|
{"x":15.75, "y":1, "w":1.5},
|
||||||
|
|
||||||
|
{"x":17.5, "y":1},
|
||||||
|
{"x":18.5, "y":1},
|
||||||
|
|
||||||
|
{"x":0, "y":2},
|
||||||
|
{"x":1, "y":2},
|
||||||
|
|
||||||
|
{"x":2.25, "y":2, "w":1.75},
|
||||||
|
{"x":4, "y":2},
|
||||||
|
{"x":5, "y":2},
|
||||||
|
{"x":6, "y":2},
|
||||||
|
{"x":7, "y":2},
|
||||||
|
{"x":8, "y":2},
|
||||||
|
{"x":9, "y":2},
|
||||||
|
{"x":10, "y":2},
|
||||||
|
{"x":11, "y":2},
|
||||||
|
{"x":12, "y":2},
|
||||||
|
{"x":13, "y":2},
|
||||||
|
{"x":14, "y":2},
|
||||||
|
{"x":15, "y":2, "w":2.25},
|
||||||
|
|
||||||
|
{"x":0, "y":3},
|
||||||
|
{"x":1, "y":3},
|
||||||
|
|
||||||
|
{"x":2.25, "y":3, "w":2.25},
|
||||||
|
{"x":4.5, "y":3},
|
||||||
|
{"x":5.5, "y":3},
|
||||||
|
{"x":6.5, "y":3},
|
||||||
|
{"x":7.5, "y":3},
|
||||||
|
{"x":8.5, "y":3},
|
||||||
|
{"x":9.5, "y":3},
|
||||||
|
{"x":10.5, "y":3},
|
||||||
|
{"x":11.5, "y":3},
|
||||||
|
{"x":12.5, "y":3},
|
||||||
|
{"x":13.5, "y":3},
|
||||||
|
{"x":14.5, "y":3, "w":2.75},
|
||||||
|
|
||||||
|
{"x":17.5, "y":3},
|
||||||
|
|
||||||
|
{"x":0, "y":4},
|
||||||
|
{"x":1, "y":4},
|
||||||
|
|
||||||
|
{"x":2.25, "y":4, "w":1.25},
|
||||||
|
{"x":3.5, "y":4, "w":1.25},
|
||||||
|
{"x":4.75, "y":4, "w":1.25},
|
||||||
|
{"x":6, "y":4, "w":6.25},
|
||||||
|
{"x":12.25, "y":4, "w":1.25},
|
||||||
|
{"x":13.5, "y":4, "w":1.25},
|
||||||
|
{"x":14.75, "y":4, "w":1.25},
|
||||||
|
|
||||||
|
{"x":16.5, "y":4},
|
||||||
|
{"x":17.5, "y":4},
|
||||||
|
{"x":18.5, "y":4}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
39
keyboards/lfkeyboards/lfk78/revb/revb.h
Normal file
39
keyboards/lfkeyboards/lfk78/revb/revb.h
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
// readability
|
||||||
|
#define XXX KC_NO
|
||||||
|
|
||||||
|
// This is a shortcut to help you visually see your layout.
|
||||||
|
/*
|
||||||
|
* ,---------. ,-----------------------------------------------------------------------. ,---------.
|
||||||
|
* | 0 | 1 | | 2 | 3 | 4 | 5 | 6 | 7 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | | 94 | 95 |
|
||||||
|
* |---------| |-----------------------------------------------------------------------| |---------|
|
||||||
|
* | 10 | 11 | | 12 | 13 | 14 | 15 | 16 | 17 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | | 96 | 97 |
|
||||||
|
* |---------| |-----------------------------------------------------------------------| `---------'
|
||||||
|
* | 20 | 21 | | 22 | 23 | 24 | 25 | 26 | 27 | 70 | 71 | 72 | 73 | 74 | 75 | 76 |
|
||||||
|
* |---------| |-----------------------------------------------------------------------| ,----.
|
||||||
|
* | 30 | 31 | | 32 | 33 | 34 | 35 | 36 | 37 | 80 | 81 | 82 | 83 | 84 | 85 | | 86 |
|
||||||
|
* |---------| |-------------------------------------------------------------------------------------.
|
||||||
|
* | 40 | 41 | | 42 | 43 | 44 | 45 | 46 | 47 | 90 | | 91 | 92 | 93 |
|
||||||
|
* `---------' `--------------------------------------------------------------------' `--------------'
|
||||||
|
*/
|
||||||
|
// The first section contains all of the arguements
|
||||||
|
// The second converts the arguments into a two-dimensional array
|
||||||
|
#define LAYOUT( \
|
||||||
|
k00, k01, k02, k03, k04, k05, k06, k07, k50, k51, k52, k53, k54, k55, k56, k57, k94, k95, \
|
||||||
|
k10, k11, k12, k13, k14, k15, k16, k17, k60, k61, k62, k63, k64, k65, k66, k67, k96, k97, \
|
||||||
|
k20, k21, k22, k23, k24, k25, k26, k27, k70, k71, k72, k73, k74, k75, k76, \
|
||||||
|
k30, k31, k32, k33, k34, k35, k36, k37, k80, k81, k82, k83, k84, k85, k86, \
|
||||||
|
k40, k41, k42, k43, k44, k45, k46, k47, k90, k91, k92, k93 \
|
||||||
|
) { \
|
||||||
|
{ k00, k01, k02, k03, k04, k05, k06, k07 }, \
|
||||||
|
{ k10, k11, k12, k13, k14, k15, k16, k17 }, \
|
||||||
|
{ k20, k21, k22, k23, k24, k25, k26, k27 }, \
|
||||||
|
{ k30, k31, k32, k33, k34, k35, k36, k37 }, \
|
||||||
|
{ k40, k41, k42, k43, k44, k45, k46, k47 }, \
|
||||||
|
{ k50, k51, k52, k53, k54, k55, k56, k57 }, \
|
||||||
|
{ k60, k61, k62, k63, k64, k65, k66, k67 }, \
|
||||||
|
{ k70, k71, k72, k73, k74, k75, k76, XXX }, \
|
||||||
|
{ k80, k81, k82, k83, k84, k85, k86, XXX }, \
|
||||||
|
{ k90, k91, k92, k93, k94, k95, k96, k97 } \
|
||||||
|
}
|
2
keyboards/lfkeyboards/lfk78/revb/rules.mk
Normal file
2
keyboards/lfkeyboards/lfk78/revb/rules.mk
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
# MCU name
|
||||||
|
MCU = atmega32u4
|
21
keyboards/lfkeyboards/lfk78/revc/config.h
Normal file
21
keyboards/lfkeyboards/lfk78/revc/config.h
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 5
|
||||||
|
#define MATRIX_COLS 18
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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 { D2, D3, D4, D5, D6 }
|
||||||
|
#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, E6, E7, F0, F1, F2, F3, C0, C1, C2, C3 }
|
||||||
|
#define UNUSED_PINS
|
||||||
|
|
||||||
|
#define RGBLED_NUM 27
|
392
keyboards/lfkeyboards/lfk78/revc/info.json
Normal file
392
keyboards/lfkeyboards/lfk78/revc/info.json
Normal file
|
@ -0,0 +1,392 @@
|
||||||
|
{
|
||||||
|
"keyboard_name": "LFK78/68 Rev C-H",
|
||||||
|
"url": "",
|
||||||
|
"maintainer": "qmk",
|
||||||
|
"width": 19.5,
|
||||||
|
"height": 5,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT": {
|
||||||
|
"layout": [
|
||||||
|
{"x":0, "y":0},
|
||||||
|
{"x":1, "y":0},
|
||||||
|
|
||||||
|
{"x":2.25, "y":0},
|
||||||
|
{"x":3.25, "y":0},
|
||||||
|
{"x":4.25, "y":0},
|
||||||
|
{"x":5.25, "y":0},
|
||||||
|
{"x":6.25, "y":0},
|
||||||
|
{"x":7.25, "y":0},
|
||||||
|
{"x":8.25, "y":0},
|
||||||
|
{"x":9.25, "y":0},
|
||||||
|
{"x":10.25, "y":0},
|
||||||
|
{"x":11.25, "y":0},
|
||||||
|
{"x":12.25, "y":0},
|
||||||
|
{"x":13.25, "y":0},
|
||||||
|
{"x":14.25, "y":0},
|
||||||
|
{"x":15.25, "y":0, "w":2},
|
||||||
|
|
||||||
|
{"x":17.5, "y":0},
|
||||||
|
{"x":18.5, "y":0},
|
||||||
|
|
||||||
|
{"x":0, "y":1},
|
||||||
|
{"x":1, "y":1},
|
||||||
|
|
||||||
|
{"x":2.25, "y":1, "w":1.5},
|
||||||
|
{"x":3.75, "y":1},
|
||||||
|
{"x":4.75, "y":1},
|
||||||
|
{"x":5.75, "y":1},
|
||||||
|
{"x":6.75, "y":1},
|
||||||
|
{"x":7.75, "y":1},
|
||||||
|
{"x":8.75, "y":1},
|
||||||
|
{"x":9.75, "y":1},
|
||||||
|
{"x":10.75, "y":1},
|
||||||
|
{"x":11.75, "y":1},
|
||||||
|
{"x":12.75, "y":1},
|
||||||
|
{"x":13.75, "y":1},
|
||||||
|
{"x":14.75, "y":1},
|
||||||
|
{"x":15.75, "y":1, "w":1.5},
|
||||||
|
|
||||||
|
{"x":17.5, "y":1},
|
||||||
|
{"x":18.5, "y":1},
|
||||||
|
|
||||||
|
{"x":0, "y":2},
|
||||||
|
{"x":1, "y":2},
|
||||||
|
|
||||||
|
{"x":2.25, "y":2, "w":1.75},
|
||||||
|
{"x":4, "y":2},
|
||||||
|
{"x":5, "y":2},
|
||||||
|
{"x":6, "y":2},
|
||||||
|
{"x":7, "y":2},
|
||||||
|
{"x":8, "y":2},
|
||||||
|
{"x":9, "y":2},
|
||||||
|
{"x":10, "y":2},
|
||||||
|
{"x":11, "y":2},
|
||||||
|
{"x":12, "y":2},
|
||||||
|
{"x":13, "y":2},
|
||||||
|
{"x":14, "y":2},
|
||||||
|
{"x":15, "y":2, "w":2.25},
|
||||||
|
|
||||||
|
{"x":0, "y":3},
|
||||||
|
{"x":1, "y":3},
|
||||||
|
|
||||||
|
{"x":2.25, "y":3, "w":2.25},
|
||||||
|
{"x":4.5, "y":3},
|
||||||
|
{"x":5.5, "y":3},
|
||||||
|
{"x":6.5, "y":3},
|
||||||
|
{"x":7.5, "y":3},
|
||||||
|
{"x":8.5, "y":3},
|
||||||
|
{"x":9.5, "y":3},
|
||||||
|
{"x":10.5, "y":3},
|
||||||
|
{"x":11.5, "y":3},
|
||||||
|
{"x":12.5, "y":3},
|
||||||
|
{"x":13.5, "y":3},
|
||||||
|
{"x":14.5, "y":3, "w":2.75},
|
||||||
|
|
||||||
|
{"x":17.5, "y":3},
|
||||||
|
|
||||||
|
{"x":0, "y":4},
|
||||||
|
{"x":1, "y":4},
|
||||||
|
|
||||||
|
{"x":2.25, "y":4, "w":1.25},
|
||||||
|
{"x":3.5, "y":4, "w":1.25},
|
||||||
|
{"x":4.75, "y":4, "w":1.25},
|
||||||
|
{"x":6, "y":4, "w":6.25},
|
||||||
|
{"x":12.25, "y":4, "w":1.25},
|
||||||
|
{"x":13.5, "y":4, "w":1.25},
|
||||||
|
{"x":14.75, "y":4, "w":1.25},
|
||||||
|
|
||||||
|
{"x":16.5, "y":4},
|
||||||
|
{"x":17.5, "y":4},
|
||||||
|
{"x":18.5, "y":4}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_split_bs": {
|
||||||
|
"layout": [
|
||||||
|
{"x":0, "y":0},
|
||||||
|
{"x":1, "y":0},
|
||||||
|
|
||||||
|
{"x":2.25, "y":0},
|
||||||
|
{"x":3.25, "y":0},
|
||||||
|
{"x":4.25, "y":0},
|
||||||
|
{"x":5.25, "y":0},
|
||||||
|
{"x":6.25, "y":0},
|
||||||
|
{"x":7.25, "y":0},
|
||||||
|
{"x":8.25, "y":0},
|
||||||
|
{"x":9.25, "y":0},
|
||||||
|
{"x":10.25, "y":0},
|
||||||
|
{"x":11.25, "y":0},
|
||||||
|
{"x":12.25, "y":0},
|
||||||
|
{"x":13.25, "y":0},
|
||||||
|
{"x":14.25, "y":0},
|
||||||
|
{"x":15.25, "y":0},
|
||||||
|
{"x":16.25, "y":0},
|
||||||
|
|
||||||
|
{"x":17.5, "y":0},
|
||||||
|
{"x":18.5, "y":0},
|
||||||
|
|
||||||
|
{"x":0, "y":1},
|
||||||
|
{"x":1, "y":1},
|
||||||
|
|
||||||
|
{"x":2.25, "y":1, "w":1.5},
|
||||||
|
{"x":3.75, "y":1},
|
||||||
|
{"x":4.75, "y":1},
|
||||||
|
{"x":5.75, "y":1},
|
||||||
|
{"x":6.75, "y":1},
|
||||||
|
{"x":7.75, "y":1},
|
||||||
|
{"x":8.75, "y":1},
|
||||||
|
{"x":9.75, "y":1},
|
||||||
|
{"x":10.75, "y":1},
|
||||||
|
{"x":11.75, "y":1},
|
||||||
|
{"x":12.75, "y":1},
|
||||||
|
{"x":13.75, "y":1},
|
||||||
|
{"x":14.75, "y":1},
|
||||||
|
{"x":15.75, "y":1, "w":1.5},
|
||||||
|
|
||||||
|
{"x":17.5, "y":1},
|
||||||
|
{"x":18.5, "y":1},
|
||||||
|
|
||||||
|
{"x":0, "y":2},
|
||||||
|
{"x":1, "y":2},
|
||||||
|
|
||||||
|
{"x":2.25, "y":2, "w":1.75},
|
||||||
|
{"x":4, "y":2},
|
||||||
|
{"x":5, "y":2},
|
||||||
|
{"x":6, "y":2},
|
||||||
|
{"x":7, "y":2},
|
||||||
|
{"x":8, "y":2},
|
||||||
|
{"x":9, "y":2},
|
||||||
|
{"x":10, "y":2},
|
||||||
|
{"x":11, "y":2},
|
||||||
|
{"x":12, "y":2},
|
||||||
|
{"x":13, "y":2},
|
||||||
|
{"x":14, "y":2},
|
||||||
|
{"x":15, "y":2, "w":2.25},
|
||||||
|
|
||||||
|
{"x":0, "y":3},
|
||||||
|
{"x":1, "y":3},
|
||||||
|
|
||||||
|
{"x":2.25, "y":3, "w":2.25},
|
||||||
|
{"x":4.5, "y":3},
|
||||||
|
{"x":5.5, "y":3},
|
||||||
|
{"x":6.5, "y":3},
|
||||||
|
{"x":7.5, "y":3},
|
||||||
|
{"x":8.5, "y":3},
|
||||||
|
{"x":9.5, "y":3},
|
||||||
|
{"x":10.5, "y":3},
|
||||||
|
{"x":11.5, "y":3},
|
||||||
|
{"x":12.5, "y":3},
|
||||||
|
{"x":13.5, "y":3},
|
||||||
|
{"x":14.5, "y":3, "w":2.75},
|
||||||
|
|
||||||
|
{"x":17.5, "y":3},
|
||||||
|
|
||||||
|
{"x":0, "y":4},
|
||||||
|
{"x":1, "y":4},
|
||||||
|
|
||||||
|
{"x":2.25, "y":4, "w":1.25},
|
||||||
|
{"x":3.5, "y":4, "w":1.25},
|
||||||
|
{"x":4.75, "y":4, "w":1.25},
|
||||||
|
{"x":6, "y":4, "w":6.25},
|
||||||
|
{"x":12.25, "y":4, "w":1.25},
|
||||||
|
{"x":13.5, "y":4, "w":1.25},
|
||||||
|
{"x":14.75, "y":4, "w":1.25},
|
||||||
|
|
||||||
|
{"x":16.5, "y":4},
|
||||||
|
{"x":17.5, "y":4},
|
||||||
|
{"x":18.5, "y":4}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_split_rshift": {
|
||||||
|
"layout": [
|
||||||
|
{"x":0, "y":0},
|
||||||
|
{"x":1, "y":0},
|
||||||
|
|
||||||
|
{"x":2.25, "y":0},
|
||||||
|
{"x":3.25, "y":0},
|
||||||
|
{"x":4.25, "y":0},
|
||||||
|
{"x":5.25, "y":0},
|
||||||
|
{"x":6.25, "y":0},
|
||||||
|
{"x":7.25, "y":0},
|
||||||
|
{"x":8.25, "y":0},
|
||||||
|
{"x":9.25, "y":0},
|
||||||
|
{"x":10.25, "y":0},
|
||||||
|
{"x":11.25, "y":0},
|
||||||
|
{"x":12.25, "y":0},
|
||||||
|
{"x":13.25, "y":0},
|
||||||
|
{"x":14.25, "y":0},
|
||||||
|
{"x":15.25, "y":0, "w":2},
|
||||||
|
|
||||||
|
{"x":17.5, "y":0},
|
||||||
|
{"x":18.5, "y":0},
|
||||||
|
|
||||||
|
{"x":0, "y":1},
|
||||||
|
{"x":1, "y":1},
|
||||||
|
|
||||||
|
{"x":2.25, "y":1, "w":1.5},
|
||||||
|
{"x":3.75, "y":1},
|
||||||
|
{"x":4.75, "y":1},
|
||||||
|
{"x":5.75, "y":1},
|
||||||
|
{"x":6.75, "y":1},
|
||||||
|
{"x":7.75, "y":1},
|
||||||
|
{"x":8.75, "y":1},
|
||||||
|
{"x":9.75, "y":1},
|
||||||
|
{"x":10.75, "y":1},
|
||||||
|
{"x":11.75, "y":1},
|
||||||
|
{"x":12.75, "y":1},
|
||||||
|
{"x":13.75, "y":1},
|
||||||
|
{"x":14.75, "y":1},
|
||||||
|
{"x":15.75, "y":1, "w":1.5},
|
||||||
|
|
||||||
|
{"x":17.5, "y":1},
|
||||||
|
{"x":18.5, "y":1},
|
||||||
|
|
||||||
|
{"x":0, "y":2},
|
||||||
|
{"x":1, "y":2},
|
||||||
|
|
||||||
|
{"x":2.25, "y":2, "w":1.75},
|
||||||
|
{"x":4, "y":2},
|
||||||
|
{"x":5, "y":2},
|
||||||
|
{"x":6, "y":2},
|
||||||
|
{"x":7, "y":2},
|
||||||
|
{"x":8, "y":2},
|
||||||
|
{"x":9, "y":2},
|
||||||
|
{"x":10, "y":2},
|
||||||
|
{"x":11, "y":2},
|
||||||
|
{"x":12, "y":2},
|
||||||
|
{"x":13, "y":2},
|
||||||
|
{"x":14, "y":2},
|
||||||
|
{"x":15, "y":2, "w":2.25},
|
||||||
|
|
||||||
|
{"x":0, "y":3},
|
||||||
|
{"x":1, "y":3},
|
||||||
|
|
||||||
|
{"x":2.25, "y":3, "w":2.25},
|
||||||
|
{"x":4.5, "y":3},
|
||||||
|
{"x":5.5, "y":3},
|
||||||
|
{"x":6.5, "y":3},
|
||||||
|
{"x":7.5, "y":3},
|
||||||
|
{"x":8.5, "y":3},
|
||||||
|
{"x":9.5, "y":3},
|
||||||
|
{"x":10.5, "y":3},
|
||||||
|
{"x":11.5, "y":3},
|
||||||
|
{"x":12.5, "y":3},
|
||||||
|
{"x":13.5, "y":3},
|
||||||
|
{"x":14.5, "y":3, "w":1.75},
|
||||||
|
{"x":16.25, "y":3},
|
||||||
|
|
||||||
|
{"x":17.5, "y":3},
|
||||||
|
|
||||||
|
{"x":0, "y":4},
|
||||||
|
{"x":1, "y":4},
|
||||||
|
|
||||||
|
{"x":2.25, "y":4, "w":1.25},
|
||||||
|
{"x":3.5, "y":4, "w":1.25},
|
||||||
|
{"x":4.75, "y":4, "w":1.25},
|
||||||
|
{"x":6, "y":4, "w":6.25},
|
||||||
|
{"x":12.25, "y":4, "w":1.25},
|
||||||
|
{"x":13.5, "y":4, "w":1.25},
|
||||||
|
{"x":14.75, "y":4, "w":1.25},
|
||||||
|
|
||||||
|
{"x":16.5, "y":4},
|
||||||
|
{"x":17.5, "y":4},
|
||||||
|
{"x":18.5, "y":4}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_iso": {
|
||||||
|
"layout": [
|
||||||
|
{"x":0, "y":0},
|
||||||
|
{"x":1, "y":0},
|
||||||
|
|
||||||
|
{"x":2.25, "y":0},
|
||||||
|
{"x":3.25, "y":0},
|
||||||
|
{"x":4.25, "y":0},
|
||||||
|
{"x":5.25, "y":0},
|
||||||
|
{"x":6.25, "y":0},
|
||||||
|
{"x":7.25, "y":0},
|
||||||
|
{"x":8.25, "y":0},
|
||||||
|
{"x":9.25, "y":0},
|
||||||
|
{"x":10.25, "y":0},
|
||||||
|
{"x":11.25, "y":0},
|
||||||
|
{"x":12.25, "y":0},
|
||||||
|
{"x":13.25, "y":0},
|
||||||
|
{"x":14.25, "y":0},
|
||||||
|
{"x":15.25, "y":0, "w":2},
|
||||||
|
|
||||||
|
{"x":17.5, "y":0},
|
||||||
|
{"x":18.5, "y":0},
|
||||||
|
|
||||||
|
{"x":0, "y":1},
|
||||||
|
{"x":1, "y":1},
|
||||||
|
|
||||||
|
{"x":2.25, "y":1, "w":1.5},
|
||||||
|
{"x":3.75, "y":1},
|
||||||
|
{"x":4.75, "y":1},
|
||||||
|
{"x":5.75, "y":1},
|
||||||
|
{"x":6.75, "y":1},
|
||||||
|
{"x":7.75, "y":1},
|
||||||
|
{"x":8.75, "y":1},
|
||||||
|
{"x":9.75, "y":1},
|
||||||
|
{"x":10.75, "y":1},
|
||||||
|
{"x":11.75, "y":1},
|
||||||
|
{"x":12.75, "y":1},
|
||||||
|
{"x":13.75, "y":1},
|
||||||
|
{"x":14.75, "y":1},
|
||||||
|
{"x":16, "y":1, "w":1.25, "h":2},
|
||||||
|
|
||||||
|
{"x":17.5, "y":1},
|
||||||
|
{"x":18.5, "y":1},
|
||||||
|
|
||||||
|
{"x":0, "y":2},
|
||||||
|
{"x":1, "y":2},
|
||||||
|
|
||||||
|
{"x":2.25, "y":2, "w":1.75},
|
||||||
|
{"x":4, "y":2},
|
||||||
|
{"x":5, "y":2},
|
||||||
|
{"x":6, "y":2},
|
||||||
|
{"x":7, "y":2},
|
||||||
|
{"x":8, "y":2},
|
||||||
|
{"x":9, "y":2},
|
||||||
|
{"x":10, "y":2},
|
||||||
|
{"x":11, "y":2},
|
||||||
|
{"x":12, "y":2},
|
||||||
|
{"x":13, "y":2},
|
||||||
|
{"x":14, "y":2},
|
||||||
|
{"x":15, "y":2},
|
||||||
|
|
||||||
|
{"x":0, "y":3},
|
||||||
|
{"x":1, "y":3},
|
||||||
|
|
||||||
|
{"x":2.25, "y":3, "w":1.25},
|
||||||
|
{"x":3.5, "y":3},
|
||||||
|
{"x":4.5, "y":3},
|
||||||
|
{"x":5.5, "y":3},
|
||||||
|
{"x":6.5, "y":3},
|
||||||
|
{"x":7.5, "y":3},
|
||||||
|
{"x":8.5, "y":3},
|
||||||
|
{"x":9.5, "y":3},
|
||||||
|
{"x":10.5, "y":3},
|
||||||
|
{"x":11.5, "y":3},
|
||||||
|
{"x":12.5, "y":3},
|
||||||
|
{"x":13.5, "y":3},
|
||||||
|
{"x":14.5, "y":3, "w":2.75},
|
||||||
|
|
||||||
|
{"x":17.5, "y":3},
|
||||||
|
|
||||||
|
{"x":0, "y":4},
|
||||||
|
{"x":1, "y":4},
|
||||||
|
|
||||||
|
{"x":2.25, "y":4, "w":1.25},
|
||||||
|
{"x":3.5, "y":4, "w":1.25},
|
||||||
|
{"x":4.75, "y":4, "w":1.25},
|
||||||
|
{"x":6, "y":4, "w":6.25},
|
||||||
|
{"x":12.25, "y":4, "w":1.25},
|
||||||
|
{"x":13.5, "y":4, "w":1.25},
|
||||||
|
{"x":14.75, "y":4, "w":1.25},
|
||||||
|
|
||||||
|
{"x":16.5, "y":4},
|
||||||
|
{"x":17.5, "y":4},
|
||||||
|
{"x":18.5, "y":4}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
76
keyboards/lfkeyboards/lfk78/revc/revc.h
Normal file
76
keyboards/lfkeyboards/lfk78/revc/revc.h
Normal file
|
@ -0,0 +1,76 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
// readability
|
||||||
|
#define XXX KC_NO
|
||||||
|
|
||||||
|
// This is a shortcut to help you visually see your layout.
|
||||||
|
/*
|
||||||
|
* ,---------. ,-----------------------------------------------------------------------. ,---------.
|
||||||
|
* | 11 | 12 | | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 1A | 1B | 1C | 1D | 1E | 1F | 1G | | 1H | 1I |
|
||||||
|
* |---------| |-----------------------------------------------------------------------| |---------|
|
||||||
|
* | 21 | 22 | | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 2A | 2B | 2C | 2D | 2E | 2F | 2G | | 2H | 2I |
|
||||||
|
* |---------| |-----------------------------------------------------------------------| `---------'
|
||||||
|
* | 31 | 32 | | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 3A | 3B | 3C | 3D | 3E | 3F |
|
||||||
|
* |---------| |-----------------------------------------------------------------------| ,----.
|
||||||
|
* | 41 | 42 | | 43 | 45 | 46 | 47 | 48 | 49 | 4A | 4B | 4C | 4D | 4E | 4F | | 4H |
|
||||||
|
* |---------| |-------------------------------------------------------------------------------------.
|
||||||
|
* | 51 | 52 | | 53 | 54 | 55 | 59 | 5D | 5E | 5F | | 5G | 5H | 5I |
|
||||||
|
* `---------' `--------------------------------------------------------------------' `--------------'
|
||||||
|
*/
|
||||||
|
// The first section contains all of the arguements
|
||||||
|
// The second converts the arguments into a two-dimensional array
|
||||||
|
#define LAYOUT( \
|
||||||
|
k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, k1H, k1I, \
|
||||||
|
k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, k2G, k2H, k2I, \
|
||||||
|
k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, \
|
||||||
|
k41, k42, k43, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, k4H, \
|
||||||
|
k51, k52, k53, k54, k55, k59, k5D, k5E, k5F, k5G, k5H, k5I \
|
||||||
|
) { \
|
||||||
|
{ k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, k1H, k1I }, \
|
||||||
|
{ k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, k2G, k2H, k2I }, \
|
||||||
|
{ k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, XXX, XXX, XXX }, \
|
||||||
|
{ k41, k42, k43, XXX, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, XXX, k4H, XXX }, \
|
||||||
|
{ k51, k52, k53, k54, k55, XXX, XXX, XXX, k59, XXX, XXX, XXX, k5D, k5E, k5F, k5G, k5H, k5I } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_split_bs( \
|
||||||
|
k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, k3G, k1H, k1I, \
|
||||||
|
k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, k2G, k2H, k2I, \
|
||||||
|
k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, \
|
||||||
|
k41, k42, k43, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, k4H, \
|
||||||
|
k51, k52, k53, k54, k55, k59, k5D, k5E, k5F, k5G, k5H, k5I \
|
||||||
|
) { \
|
||||||
|
{ k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, k1H, k1I }, \
|
||||||
|
{ k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, k2G, k2H, k2I }, \
|
||||||
|
{ k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, k3G, XXX, XXX }, \
|
||||||
|
{ k41, k42, k43, XXX, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, XXX, k4H, XXX }, \
|
||||||
|
{ k51, k52, k53, k54, k55, XXX, XXX, XXX, k59, XXX, XXX, XXX, k5D, k5E, k5F, k5G, k5H, k5I } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_split_rshift( \
|
||||||
|
k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, k1H, k1I, \
|
||||||
|
k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, k2G, k2H, k2I, \
|
||||||
|
k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, \
|
||||||
|
k41, k42, k43, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, k4G, k4H, \
|
||||||
|
k51, k52, k53, k54, k55, k59, k5D, k5E, k5F, k5G, k5H, k5I \
|
||||||
|
) { \
|
||||||
|
{ k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, k1H, k1I }, \
|
||||||
|
{ k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, k2G, k2H, k2I }, \
|
||||||
|
{ k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, XXX, XXX, XXX }, \
|
||||||
|
{ k41, k42, k43, XXX, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, k4G, k4H, XXX }, \
|
||||||
|
{ k51, k52, k53, k54, k55, XXX, XXX, XXX, k59, XXX, XXX, XXX, k5D, k5E, k5F, k5G, k5H, k5I } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_iso( \
|
||||||
|
k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, k1H, k1I, \
|
||||||
|
k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, k2G, k2H, k2I, \
|
||||||
|
k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, \
|
||||||
|
k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, k4H, \
|
||||||
|
k51, k52, k53, k54, k55, k59, k5D, k5E, k5F, k5G, k5H, k5I \
|
||||||
|
) { \
|
||||||
|
{ k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, k1H, k1I }, \
|
||||||
|
{ k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, k2G, k2H, k2I }, \
|
||||||
|
{ k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, XXX, XXX, XXX }, \
|
||||||
|
{ k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, XXX, k4H, XXX }, \
|
||||||
|
{ k51, k52, k53, k54, k55, XXX, XXX, XXX, k59, XXX, XXX, XXX, k5D, k5E, k5F, k5G, k5H, k5I } \
|
||||||
|
}
|
2
keyboards/lfkeyboards/lfk78/revc/rules.mk
Normal file
2
keyboards/lfkeyboards/lfk78/revc/rules.mk
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
# MCU name
|
||||||
|
MCU = at90usb1286
|
21
keyboards/lfkeyboards/lfk78/revj/config.h
Normal file
21
keyboards/lfkeyboards/lfk78/revj/config.h
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 5
|
||||||
|
#define MATRIX_COLS 18
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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 { D2, D3, D4, D5, D6 }
|
||||||
|
#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, E6, E7, F0, F1, F2, F3, C0, C1, C2, C3 }
|
||||||
|
#define UNUSED_PINS
|
||||||
|
|
||||||
|
#define RGBLED_NUM 27
|
392
keyboards/lfkeyboards/lfk78/revj/info.json
Normal file
392
keyboards/lfkeyboards/lfk78/revj/info.json
Normal file
|
@ -0,0 +1,392 @@
|
||||||
|
{
|
||||||
|
"keyboard_name": "LFK78/68 Rev J",
|
||||||
|
"url": "",
|
||||||
|
"maintainer": "qmk",
|
||||||
|
"width": 19.5,
|
||||||
|
"height": 5,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT": {
|
||||||
|
"layout": [
|
||||||
|
{"x":0, "y":0},
|
||||||
|
{"x":1, "y":0},
|
||||||
|
|
||||||
|
{"x":2.25, "y":0},
|
||||||
|
{"x":3.25, "y":0},
|
||||||
|
{"x":4.25, "y":0},
|
||||||
|
{"x":5.25, "y":0},
|
||||||
|
{"x":6.25, "y":0},
|
||||||
|
{"x":7.25, "y":0},
|
||||||
|
{"x":8.25, "y":0},
|
||||||
|
{"x":9.25, "y":0},
|
||||||
|
{"x":10.25, "y":0},
|
||||||
|
{"x":11.25, "y":0},
|
||||||
|
{"x":12.25, "y":0},
|
||||||
|
{"x":13.25, "y":0},
|
||||||
|
{"x":14.25, "y":0},
|
||||||
|
{"x":15.25, "y":0, "w":2},
|
||||||
|
|
||||||
|
{"x":17.5, "y":0},
|
||||||
|
{"x":18.5, "y":0},
|
||||||
|
|
||||||
|
{"x":0, "y":1},
|
||||||
|
{"x":1, "y":1},
|
||||||
|
|
||||||
|
{"x":2.25, "y":1, "w":1.5},
|
||||||
|
{"x":3.75, "y":1},
|
||||||
|
{"x":4.75, "y":1},
|
||||||
|
{"x":5.75, "y":1},
|
||||||
|
{"x":6.75, "y":1},
|
||||||
|
{"x":7.75, "y":1},
|
||||||
|
{"x":8.75, "y":1},
|
||||||
|
{"x":9.75, "y":1},
|
||||||
|
{"x":10.75, "y":1},
|
||||||
|
{"x":11.75, "y":1},
|
||||||
|
{"x":12.75, "y":1},
|
||||||
|
{"x":13.75, "y":1},
|
||||||
|
{"x":14.75, "y":1},
|
||||||
|
{"x":15.75, "y":1, "w":1.5},
|
||||||
|
|
||||||
|
{"x":17.5, "y":1},
|
||||||
|
{"x":18.5, "y":1},
|
||||||
|
|
||||||
|
{"x":0, "y":2},
|
||||||
|
{"x":1, "y":2},
|
||||||
|
|
||||||
|
{"x":2.25, "y":2, "w":1.75},
|
||||||
|
{"x":4, "y":2},
|
||||||
|
{"x":5, "y":2},
|
||||||
|
{"x":6, "y":2},
|
||||||
|
{"x":7, "y":2},
|
||||||
|
{"x":8, "y":2},
|
||||||
|
{"x":9, "y":2},
|
||||||
|
{"x":10, "y":2},
|
||||||
|
{"x":11, "y":2},
|
||||||
|
{"x":12, "y":2},
|
||||||
|
{"x":13, "y":2},
|
||||||
|
{"x":14, "y":2},
|
||||||
|
{"x":15, "y":2, "w":2.25},
|
||||||
|
|
||||||
|
{"x":0, "y":3},
|
||||||
|
{"x":1, "y":3},
|
||||||
|
|
||||||
|
{"x":2.25, "y":3, "w":2.25},
|
||||||
|
{"x":4.5, "y":3},
|
||||||
|
{"x":5.5, "y":3},
|
||||||
|
{"x":6.5, "y":3},
|
||||||
|
{"x":7.5, "y":3},
|
||||||
|
{"x":8.5, "y":3},
|
||||||
|
{"x":9.5, "y":3},
|
||||||
|
{"x":10.5, "y":3},
|
||||||
|
{"x":11.5, "y":3},
|
||||||
|
{"x":12.5, "y":3},
|
||||||
|
{"x":13.5, "y":3},
|
||||||
|
{"x":14.5, "y":3, "w":2.75},
|
||||||
|
|
||||||
|
{"x":17.5, "y":3},
|
||||||
|
|
||||||
|
{"x":0, "y":4},
|
||||||
|
{"x":1, "y":4},
|
||||||
|
|
||||||
|
{"x":2.25, "y":4, "w":1.25},
|
||||||
|
{"x":3.5, "y":4, "w":1.25},
|
||||||
|
{"x":4.75, "y":4, "w":1.25},
|
||||||
|
{"x":6, "y":4, "w":6.25},
|
||||||
|
{"x":12.25, "y":4, "w":1.25},
|
||||||
|
{"x":13.5, "y":4, "w":1.25},
|
||||||
|
{"x":14.75, "y":4, "w":1.25},
|
||||||
|
|
||||||
|
{"x":16.5, "y":4},
|
||||||
|
{"x":17.5, "y":4},
|
||||||
|
{"x":18.5, "y":4}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_split_bs": {
|
||||||
|
"layout": [
|
||||||
|
{"x":0, "y":0},
|
||||||
|
{"x":1, "y":0},
|
||||||
|
|
||||||
|
{"x":2.25, "y":0},
|
||||||
|
{"x":3.25, "y":0},
|
||||||
|
{"x":4.25, "y":0},
|
||||||
|
{"x":5.25, "y":0},
|
||||||
|
{"x":6.25, "y":0},
|
||||||
|
{"x":7.25, "y":0},
|
||||||
|
{"x":8.25, "y":0},
|
||||||
|
{"x":9.25, "y":0},
|
||||||
|
{"x":10.25, "y":0},
|
||||||
|
{"x":11.25, "y":0},
|
||||||
|
{"x":12.25, "y":0},
|
||||||
|
{"x":13.25, "y":0},
|
||||||
|
{"x":14.25, "y":0},
|
||||||
|
{"x":15.25, "y":0},
|
||||||
|
{"x":16.25, "y":0},
|
||||||
|
|
||||||
|
{"x":17.5, "y":0},
|
||||||
|
{"x":18.5, "y":0},
|
||||||
|
|
||||||
|
{"x":0, "y":1},
|
||||||
|
{"x":1, "y":1},
|
||||||
|
|
||||||
|
{"x":2.25, "y":1, "w":1.5},
|
||||||
|
{"x":3.75, "y":1},
|
||||||
|
{"x":4.75, "y":1},
|
||||||
|
{"x":5.75, "y":1},
|
||||||
|
{"x":6.75, "y":1},
|
||||||
|
{"x":7.75, "y":1},
|
||||||
|
{"x":8.75, "y":1},
|
||||||
|
{"x":9.75, "y":1},
|
||||||
|
{"x":10.75, "y":1},
|
||||||
|
{"x":11.75, "y":1},
|
||||||
|
{"x":12.75, "y":1},
|
||||||
|
{"x":13.75, "y":1},
|
||||||
|
{"x":14.75, "y":1},
|
||||||
|
{"x":15.75, "y":1, "w":1.5},
|
||||||
|
|
||||||
|
{"x":17.5, "y":1},
|
||||||
|
{"x":18.5, "y":1},
|
||||||
|
|
||||||
|
{"x":0, "y":2},
|
||||||
|
{"x":1, "y":2},
|
||||||
|
|
||||||
|
{"x":2.25, "y":2, "w":1.75},
|
||||||
|
{"x":4, "y":2},
|
||||||
|
{"x":5, "y":2},
|
||||||
|
{"x":6, "y":2},
|
||||||
|
{"x":7, "y":2},
|
||||||
|
{"x":8, "y":2},
|
||||||
|
{"x":9, "y":2},
|
||||||
|
{"x":10, "y":2},
|
||||||
|
{"x":11, "y":2},
|
||||||
|
{"x":12, "y":2},
|
||||||
|
{"x":13, "y":2},
|
||||||
|
{"x":14, "y":2},
|
||||||
|
{"x":15, "y":2, "w":2.25},
|
||||||
|
|
||||||
|
{"x":0, "y":3},
|
||||||
|
{"x":1, "y":3},
|
||||||
|
|
||||||
|
{"x":2.25, "y":3, "w":2.25},
|
||||||
|
{"x":4.5, "y":3},
|
||||||
|
{"x":5.5, "y":3},
|
||||||
|
{"x":6.5, "y":3},
|
||||||
|
{"x":7.5, "y":3},
|
||||||
|
{"x":8.5, "y":3},
|
||||||
|
{"x":9.5, "y":3},
|
||||||
|
{"x":10.5, "y":3},
|
||||||
|
{"x":11.5, "y":3},
|
||||||
|
{"x":12.5, "y":3},
|
||||||
|
{"x":13.5, "y":3},
|
||||||
|
{"x":14.5, "y":3, "w":2.75},
|
||||||
|
|
||||||
|
{"x":17.5, "y":3},
|
||||||
|
|
||||||
|
{"x":0, "y":4},
|
||||||
|
{"x":1, "y":4},
|
||||||
|
|
||||||
|
{"x":2.25, "y":4, "w":1.25},
|
||||||
|
{"x":3.5, "y":4, "w":1.25},
|
||||||
|
{"x":4.75, "y":4, "w":1.25},
|
||||||
|
{"x":6, "y":4, "w":6.25},
|
||||||
|
{"x":12.25, "y":4, "w":1.25},
|
||||||
|
{"x":13.5, "y":4, "w":1.25},
|
||||||
|
{"x":14.75, "y":4, "w":1.25},
|
||||||
|
|
||||||
|
{"x":16.5, "y":4},
|
||||||
|
{"x":17.5, "y":4},
|
||||||
|
{"x":18.5, "y":4}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_split_rshift": {
|
||||||
|
"layout": [
|
||||||
|
{"x":0, "y":0},
|
||||||
|
{"x":1, "y":0},
|
||||||
|
|
||||||
|
{"x":2.25, "y":0},
|
||||||
|
{"x":3.25, "y":0},
|
||||||
|
{"x":4.25, "y":0},
|
||||||
|
{"x":5.25, "y":0},
|
||||||
|
{"x":6.25, "y":0},
|
||||||
|
{"x":7.25, "y":0},
|
||||||
|
{"x":8.25, "y":0},
|
||||||
|
{"x":9.25, "y":0},
|
||||||
|
{"x":10.25, "y":0},
|
||||||
|
{"x":11.25, "y":0},
|
||||||
|
{"x":12.25, "y":0},
|
||||||
|
{"x":13.25, "y":0},
|
||||||
|
{"x":14.25, "y":0},
|
||||||
|
{"x":15.25, "y":0, "w":2},
|
||||||
|
|
||||||
|
{"x":17.5, "y":0},
|
||||||
|
{"x":18.5, "y":0},
|
||||||
|
|
||||||
|
{"x":0, "y":1},
|
||||||
|
{"x":1, "y":1},
|
||||||
|
|
||||||
|
{"x":2.25, "y":1, "w":1.5},
|
||||||
|
{"x":3.75, "y":1},
|
||||||
|
{"x":4.75, "y":1},
|
||||||
|
{"x":5.75, "y":1},
|
||||||
|
{"x":6.75, "y":1},
|
||||||
|
{"x":7.75, "y":1},
|
||||||
|
{"x":8.75, "y":1},
|
||||||
|
{"x":9.75, "y":1},
|
||||||
|
{"x":10.75, "y":1},
|
||||||
|
{"x":11.75, "y":1},
|
||||||
|
{"x":12.75, "y":1},
|
||||||
|
{"x":13.75, "y":1},
|
||||||
|
{"x":14.75, "y":1},
|
||||||
|
{"x":15.75, "y":1, "w":1.5},
|
||||||
|
|
||||||
|
{"x":17.5, "y":1},
|
||||||
|
{"x":18.5, "y":1},
|
||||||
|
|
||||||
|
{"x":0, "y":2},
|
||||||
|
{"x":1, "y":2},
|
||||||
|
|
||||||
|
{"x":2.25, "y":2, "w":1.75},
|
||||||
|
{"x":4, "y":2},
|
||||||
|
{"x":5, "y":2},
|
||||||
|
{"x":6, "y":2},
|
||||||
|
{"x":7, "y":2},
|
||||||
|
{"x":8, "y":2},
|
||||||
|
{"x":9, "y":2},
|
||||||
|
{"x":10, "y":2},
|
||||||
|
{"x":11, "y":2},
|
||||||
|
{"x":12, "y":2},
|
||||||
|
{"x":13, "y":2},
|
||||||
|
{"x":14, "y":2},
|
||||||
|
{"x":15, "y":2, "w":2.25},
|
||||||
|
|
||||||
|
{"x":0, "y":3},
|
||||||
|
{"x":1, "y":3},
|
||||||
|
|
||||||
|
{"x":2.25, "y":3, "w":2.25},
|
||||||
|
{"x":4.5, "y":3},
|
||||||
|
{"x":5.5, "y":3},
|
||||||
|
{"x":6.5, "y":3},
|
||||||
|
{"x":7.5, "y":3},
|
||||||
|
{"x":8.5, "y":3},
|
||||||
|
{"x":9.5, "y":3},
|
||||||
|
{"x":10.5, "y":3},
|
||||||
|
{"x":11.5, "y":3},
|
||||||
|
{"x":12.5, "y":3},
|
||||||
|
{"x":13.5, "y":3},
|
||||||
|
{"x":14.5, "y":3, "w":1.75},
|
||||||
|
{"x":16.25, "y":3},
|
||||||
|
|
||||||
|
{"x":17.5, "y":3},
|
||||||
|
|
||||||
|
{"x":0, "y":4},
|
||||||
|
{"x":1, "y":4},
|
||||||
|
|
||||||
|
{"x":2.25, "y":4, "w":1.25},
|
||||||
|
{"x":3.5, "y":4, "w":1.25},
|
||||||
|
{"x":4.75, "y":4, "w":1.25},
|
||||||
|
{"x":6, "y":4, "w":6.25},
|
||||||
|
{"x":12.25, "y":4, "w":1.25},
|
||||||
|
{"x":13.5, "y":4, "w":1.25},
|
||||||
|
{"x":14.75, "y":4, "w":1.25},
|
||||||
|
|
||||||
|
{"x":16.5, "y":4},
|
||||||
|
{"x":17.5, "y":4},
|
||||||
|
{"x":18.5, "y":4}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_iso": {
|
||||||
|
"layout": [
|
||||||
|
{"x":0, "y":0},
|
||||||
|
{"x":1, "y":0},
|
||||||
|
|
||||||
|
{"x":2.25, "y":0},
|
||||||
|
{"x":3.25, "y":0},
|
||||||
|
{"x":4.25, "y":0},
|
||||||
|
{"x":5.25, "y":0},
|
||||||
|
{"x":6.25, "y":0},
|
||||||
|
{"x":7.25, "y":0},
|
||||||
|
{"x":8.25, "y":0},
|
||||||
|
{"x":9.25, "y":0},
|
||||||
|
{"x":10.25, "y":0},
|
||||||
|
{"x":11.25, "y":0},
|
||||||
|
{"x":12.25, "y":0},
|
||||||
|
{"x":13.25, "y":0},
|
||||||
|
{"x":14.25, "y":0},
|
||||||
|
{"x":15.25, "y":0, "w":2},
|
||||||
|
|
||||||
|
{"x":17.5, "y":0},
|
||||||
|
{"x":18.5, "y":0},
|
||||||
|
|
||||||
|
{"x":0, "y":1},
|
||||||
|
{"x":1, "y":1},
|
||||||
|
|
||||||
|
{"x":2.25, "y":1, "w":1.5},
|
||||||
|
{"x":3.75, "y":1},
|
||||||
|
{"x":4.75, "y":1},
|
||||||
|
{"x":5.75, "y":1},
|
||||||
|
{"x":6.75, "y":1},
|
||||||
|
{"x":7.75, "y":1},
|
||||||
|
{"x":8.75, "y":1},
|
||||||
|
{"x":9.75, "y":1},
|
||||||
|
{"x":10.75, "y":1},
|
||||||
|
{"x":11.75, "y":1},
|
||||||
|
{"x":12.75, "y":1},
|
||||||
|
{"x":13.75, "y":1},
|
||||||
|
{"x":14.75, "y":1},
|
||||||
|
{"x":16, "y":1, "w":1.25, "h":2},
|
||||||
|
|
||||||
|
{"x":17.5, "y":1},
|
||||||
|
{"x":18.5, "y":1},
|
||||||
|
|
||||||
|
{"x":0, "y":2},
|
||||||
|
{"x":1, "y":2},
|
||||||
|
|
||||||
|
{"x":2.25, "y":2, "w":1.75},
|
||||||
|
{"x":4, "y":2},
|
||||||
|
{"x":5, "y":2},
|
||||||
|
{"x":6, "y":2},
|
||||||
|
{"x":7, "y":2},
|
||||||
|
{"x":8, "y":2},
|
||||||
|
{"x":9, "y":2},
|
||||||
|
{"x":10, "y":2},
|
||||||
|
{"x":11, "y":2},
|
||||||
|
{"x":12, "y":2},
|
||||||
|
{"x":13, "y":2},
|
||||||
|
{"x":14, "y":2},
|
||||||
|
{"x":15, "y":2},
|
||||||
|
|
||||||
|
{"x":0, "y":3},
|
||||||
|
{"x":1, "y":3},
|
||||||
|
|
||||||
|
{"x":2.25, "y":3, "w":1.25},
|
||||||
|
{"x":3.5, "y":3},
|
||||||
|
{"x":4.5, "y":3},
|
||||||
|
{"x":5.5, "y":3},
|
||||||
|
{"x":6.5, "y":3},
|
||||||
|
{"x":7.5, "y":3},
|
||||||
|
{"x":8.5, "y":3},
|
||||||
|
{"x":9.5, "y":3},
|
||||||
|
{"x":10.5, "y":3},
|
||||||
|
{"x":11.5, "y":3},
|
||||||
|
{"x":12.5, "y":3},
|
||||||
|
{"x":13.5, "y":3},
|
||||||
|
{"x":14.5, "y":3, "w":2.75},
|
||||||
|
|
||||||
|
{"x":17.5, "y":3},
|
||||||
|
|
||||||
|
{"x":0, "y":4},
|
||||||
|
{"x":1, "y":4},
|
||||||
|
|
||||||
|
{"x":2.25, "y":4, "w":1.25},
|
||||||
|
{"x":3.5, "y":4, "w":1.25},
|
||||||
|
{"x":4.75, "y":4, "w":1.25},
|
||||||
|
{"x":6, "y":4, "w":6.25},
|
||||||
|
{"x":12.25, "y":4, "w":1.25},
|
||||||
|
{"x":13.5, "y":4, "w":1.25},
|
||||||
|
{"x":14.75, "y":4, "w":1.25},
|
||||||
|
|
||||||
|
{"x":16.5, "y":4},
|
||||||
|
{"x":17.5, "y":4},
|
||||||
|
{"x":18.5, "y":4}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
76
keyboards/lfkeyboards/lfk78/revj/revj.h
Normal file
76
keyboards/lfkeyboards/lfk78/revj/revj.h
Normal file
|
@ -0,0 +1,76 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
// readability
|
||||||
|
#define XXX KC_NO
|
||||||
|
|
||||||
|
// This is a shortcut to help you visually see your layout.
|
||||||
|
/*
|
||||||
|
* ,---------. ,-----------------------------------------------------------------------. ,---------.
|
||||||
|
* | 11 | 12 | | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 1A | 1B | 1C | 1D | 1E | 1F | 1G | | 1H | 1I |
|
||||||
|
* |---------| |-----------------------------------------------------------------------| |---------|
|
||||||
|
* | 21 | 22 | | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 2A | 2B | 2C | 2D | 2E | 2F | 2G | | 2H | 2I |
|
||||||
|
* |---------| |-----------------------------------------------------------------------| `---------'
|
||||||
|
* | 31 | 32 | | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 3A | 3B | 3C | 3D | 3E | 3F |
|
||||||
|
* |---------| |-----------------------------------------------------------------------| ,----.
|
||||||
|
* | 41 | 42 | | 43 | 45 | 46 | 47 | 48 | 49 | 4A | 4B | 4C | 4D | 4E | 4F | | 4H |
|
||||||
|
* |---------| |-------------------------------------------------------------------------------------.
|
||||||
|
* | 51 | 52 | | 53 | 54 | 55 | 59 | 5D | 5E | 5F | | 5G | 5H | 5I |
|
||||||
|
* `---------' `--------------------------------------------------------------------' `--------------'
|
||||||
|
*/
|
||||||
|
// The first section contains all of the arguements
|
||||||
|
// The second converts the arguments into a two-dimensional array
|
||||||
|
#define LAYOUT( \
|
||||||
|
k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, k1H, k1I, \
|
||||||
|
k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, k2G, k2H, k2I, \
|
||||||
|
k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, \
|
||||||
|
k41, k42, k43, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, k4H, \
|
||||||
|
k51, k52, k53, k54, k55, k59, k5D, k5E, k5F, k5G, k5H, k5I \
|
||||||
|
) { \
|
||||||
|
{ k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, k1H, k1I }, \
|
||||||
|
{ k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, k2G, k2H, k2I }, \
|
||||||
|
{ k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, XXX, XXX, XXX }, \
|
||||||
|
{ k41, k42, k43, XXX, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, XXX, k4H, XXX }, \
|
||||||
|
{ k51, k52, k53, k54, k55, XXX, XXX, XXX, k59, XXX, XXX, XXX, k5D, k5E, k5F, k5G, k5H, k5I } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_split_bs( \
|
||||||
|
k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, k3G, k1H, k1I, \
|
||||||
|
k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, k2G, k2H, k2I, \
|
||||||
|
k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, \
|
||||||
|
k41, k42, k43, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, k4H, \
|
||||||
|
k51, k52, k53, k54, k55, k59, k5D, k5E, k5F, k5G, k5H, k5I \
|
||||||
|
) { \
|
||||||
|
{ k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, k1H, k1I }, \
|
||||||
|
{ k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, k2G, k2H, k2I }, \
|
||||||
|
{ k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, k3G, XXX, XXX }, \
|
||||||
|
{ k41, k42, k43, XXX, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, XXX, k4H, XXX }, \
|
||||||
|
{ k51, k52, k53, k54, k55, XXX, XXX, XXX, k59, XXX, XXX, XXX, k5D, k5E, k5F, k5G, k5H, k5I } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_split_rshift( \
|
||||||
|
k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, k1H, k1I, \
|
||||||
|
k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, k2G, k2H, k2I, \
|
||||||
|
k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, \
|
||||||
|
k41, k42, k43, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, k4G, k4H, \
|
||||||
|
k51, k52, k53, k54, k55, k59, k5D, k5E, k5F, k5G, k5H, k5I \
|
||||||
|
) { \
|
||||||
|
{ k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, k1H, k1I }, \
|
||||||
|
{ k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, k2G, k2H, k2I }, \
|
||||||
|
{ k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, XXX, XXX, XXX }, \
|
||||||
|
{ k41, k42, k43, XXX, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, k4G, k4H, XXX }, \
|
||||||
|
{ k51, k52, k53, k54, k55, XXX, XXX, XXX, k59, XXX, XXX, XXX, k5D, k5E, k5F, k5G, k5H, k5I } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_iso( \
|
||||||
|
k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, k1H, k1I, \
|
||||||
|
k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, k2G, k2H, k2I, \
|
||||||
|
k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, \
|
||||||
|
k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, k4H, \
|
||||||
|
k51, k52, k53, k54, k55, k59, k5D, k5E, k5F, k5G, k5H, k5I \
|
||||||
|
) { \
|
||||||
|
{ k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, k1H, k1I }, \
|
||||||
|
{ k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, k2G, k2H, k2I }, \
|
||||||
|
{ k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, XXX, XXX, XXX }, \
|
||||||
|
{ k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, XXX, k4H, XXX }, \
|
||||||
|
{ k51, k52, k53, k54, k55, XXX, XXX, XXX, k59, XXX, XXX, XXX, k5D, k5E, k5F, k5G, k5H, k5I } \
|
||||||
|
}
|
4
keyboards/lfkeyboards/lfk78/revj/rules.mk
Normal file
4
keyboards/lfkeyboards/lfk78/revj/rules.mk
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
# MCU name
|
||||||
|
MCU = at90usb646
|
||||||
|
|
||||||
|
AUDIO_ENABLE = yes
|
|
@ -1,24 +1,16 @@
|
||||||
# Set the LFK78 hardware version.
|
# Bootloader selection
|
||||||
#
|
# Teensy halfkay
|
||||||
# B - first public release, uses atmega32u4, has audio, ISSI matrix split between RGB and backlight
|
# Pro Micro caterina
|
||||||
# C-H - at90usb1286, no audio, ISSI device 0 is backlight, 4 is RGB
|
# Atmel DFU atmel-dfu
|
||||||
# J - at90usb646, C6 audio, ISSI device 0 is backlight, 4 is RGB
|
# LUFA DFU lufa-dfu
|
||||||
LFK_REV = J
|
# QMK DFU qmk-dfu
|
||||||
|
# ATmega32A bootloadHID
|
||||||
ifeq ($(LFK_REV), B)
|
# ATmega328P USBasp
|
||||||
MCU = atmega32u4
|
|
||||||
else ifeq ($(LFK_REV), J)
|
|
||||||
MCU = at90usb646
|
|
||||||
else
|
|
||||||
MCU = at90usb1286
|
|
||||||
endif
|
|
||||||
BOOTLOADER = atmel-dfu
|
BOOTLOADER = atmel-dfu
|
||||||
OPT_DEFS += -DLFK_REV_$(LFK_REV)
|
|
||||||
OPT_DEFS += -DLFK_REV_STRING=\"Rev$(LFK_REV)\"
|
|
||||||
|
|
||||||
# Extra source files for IS3731 lighting
|
|
||||||
SRC = TWIlib.c issi.c lighting.c
|
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
||||||
MOUSEKEY_ENABLE = no # Mouse keys
|
MOUSEKEY_ENABLE = no # Mouse keys
|
||||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
|
@ -28,11 +20,11 @@ NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here
|
||||||
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||||
BACKLIGHT_DRIVER = custom
|
BACKLIGHT_DRIVER = custom
|
||||||
MIDI_ENABLE = no # MIDI controls
|
MIDI_ENABLE = no # MIDI controls
|
||||||
AUDIO_ENABLE = yes # Audio output on port C6
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
UNICODE_ENABLE = no # Unicode
|
UNICODE_ENABLE = no # Unicode
|
||||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
|
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
|
||||||
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
|
||||||
SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
|
SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
|
||||||
TAP_DANCE_ENABLE = no
|
TAP_DANCE_ENABLE = no
|
||||||
|
|
||||||
|
@ -40,6 +32,8 @@ ISSI_ENABLE = yes # If the I2C pullup resistors aren't install thi
|
||||||
WATCHDOG_ENABLE = no # Resets keyboard if matrix_scan isn't run every 250ms
|
WATCHDOG_ENABLE = no # Resets keyboard if matrix_scan isn't run every 250ms
|
||||||
CAPSLOCK_LED = no # Toggle back light LED of Caps Lock
|
CAPSLOCK_LED = no # Toggle back light LED of Caps Lock
|
||||||
|
|
||||||
|
# Extra source files for IS3731 lighting
|
||||||
|
SRC = TWIlib.c issi.c lighting.c
|
||||||
|
|
||||||
ifeq ($(strip $(ISSI_ENABLE)), yes)
|
ifeq ($(strip $(ISSI_ENABLE)), yes)
|
||||||
TMK_COMMON_DEFS += -DISSI_ENABLE
|
TMK_COMMON_DEFS += -DISSI_ENABLE
|
||||||
|
@ -53,18 +47,4 @@ ifeq ($(strip $(CAPSLOCK_LED)), yes)
|
||||||
TMK_COMMON_DEFS += -DCAPSLOCK_LED
|
TMK_COMMON_DEFS += -DCAPSLOCK_LED
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# # Set the LFK78 hardware version. This is defined in rules.mk, but can be overidden here if desired
|
DEFAULT_FOLDER = lfkeyboards/lfk78/revj
|
||||||
# #
|
|
||||||
# # RevB - first public release, uses atmega32u4, has audio, ISSI matrix split between RGB and backlight
|
|
||||||
# # RevC/D - at90usb1286, no audio, ISSI device 0 is backlight, 4 is RGB
|
|
||||||
# #
|
|
||||||
# # Set to B, C or D
|
|
||||||
# LFK_REV = D
|
|
||||||
|
|
||||||
# ifeq ($(LFK_REV), B)
|
|
||||||
# MCU = atmega32u4
|
|
||||||
# else
|
|
||||||
# MCU = at90usb1286
|
|
||||||
# endif
|
|
||||||
# OPT_DEFS += -DLFK_REV_$(LFK_REV)
|
|
||||||
# OPT_DEFS += -DUSB_PRODUCT=\"LFK_Rev$(LFK_REV)\"
|
|
||||||
|
|
Loading…
Reference in a new issue