[Keyboard] added custom keyboard (#6141)

* added keyboard_layout_jopr

* making it compile

* #pragma once instead of #ifndef and #define

* renamed and added keymap

renamed old "default" to "modded_white", added new "default" that resembles an ISO 105-key layout

* reordered keyboards/jopr/info.json to match order o layout array

* implemented most suggestions

* fixed missing ;

* fixed bootloader setting for rules.mk

* adopted standard layout matrix naming convention

* "fixed" commented-out code in keymaps

* changes to keymap layers and LEDs

Turns out adding a layer for ROYA-modified keycodes is more trouble than it's worth and works better by just defining a ROYA key.
Also, LEDs were set up incorrectly.
Lastly, implemented SysReq-Warning LED.

* moved forced NumLock code

just in case either it or the CapsLock & ScrlLock update code wouldn't both work otherwise

* rearranged media keycodes

* replaced Shifted keycodes with basic ones

* Apply suggestions from code review

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* implemented suggestions by noroadsleft

* Apply suggestions from code review

Make ISO-Enter QMK Configurator-friendly

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update readme.md

* Update keyboards/jopr/info.json

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* moved keyboard to handwired folder

It was said that personal passion projects belong in there, even if they're not actually handwired

* Update readme.md
This commit is contained in:
joelproko 2019-06-18 20:34:36 +02:00 committed by Drashna Jaelre
parent d5f0327b97
commit 2d15961855
8 changed files with 844 additions and 0 deletions

View File

@ -0,0 +1,49 @@
#pragma once
#include "config_common.h"
/* USB Device descriptor parameter */
#define VENDOR_ID 0x4DAE
#define PRODUCT_ID 0x1000
#define DEVICE_VER 0x0001
#define MANUFACTURER joelproko
#define PRODUCT jopr-106-Nl2SR-Cl2nL
#define DESCRIPTION jopr-106 Mechanical Keyboard
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 11
/* key matrix pins */
#define MATRIX_ROW_PINS { D0, D6, D2, D4, D3, D5, D7, C6, B6, F5 }
#define MATRIX_COL_PINS { B3, B2, B1, B0, F7, E6, F6, B5, C7, B4, D1 }
#define UNUSED_PINS { B7 }
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
/* number of backlight levels */
#ifdef BACKLIGHT_PIN
#define BACKLIGHT_LEVELS 0
#endif
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
/* #define LOCKING_SUPPORT_ENABLE */
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
/* #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) */
#define NO_ACTION_ONESHOT
#define TAPPING_TOGGLE 3
/*#define RGB_DI_PIN F4*/
#ifdef RGB_DI_PIN
/*#define RGBLIGHT_ANIMATIONS*/
#define RGBLED_NUM 1
#define RGBLIGHT_HUE_STEP 1
#define RGBLIGHT_SAT_STEP 1
#define RGBLIGHT_VAL_STEP 1
#endif

View File

@ -0,0 +1,562 @@
{
"keyboard_name": "jopr-106",
"url": "https://github.com/joelproko/keyboard_layout_jopr",
"maintainer": "joelproko",
"width": 22.5,
"height": 6.25,
"layouts": {
"LAYOUT": {
"key_count": 106,
"layout": [
{
"label": "MX_A0",
"x": 0,
"y": 0
},
{
"label": "MX_B0",
"x": 1.25,
"y": 0
},
{
"label": "MX_C0",
"x": 2.25,
"y": 0
},
{
"label": "MX_D0",
"x": 3.25,
"y": 0
},
{
"label": "MX_E0",
"x": 4.25,
"y": 0
},
{
"label": "MX_F0",
"x": 5.5,
"y": 0
},
{
"label": "MX_G0",
"x": 6.5,
"y": 0
},
{
"label": "MX_H0",
"x": 7.5,
"y": 0
},
{
"label": "MX_I0",
"x": 8.5,
"y": 0
},
{
"label": "MX_J0",
"x": 9.75,
"y": 0
},
{
"label": "MX_A6",
"x": 10.75,
"y": 0
},
{
"label": "MX_B6",
"x": 11.75,
"y": 0
},
{
"label": "MX_C6",
"x": 12.75,
"y": 0
},
{
"label": "MX_D6",
"x": 14,
"y": 0
},
{
"label": "MX_E6",
"x": 15.25,
"y": 0
},
{
"label": "MX_F6",
"x": 16.25,
"y": 0
},
{
"label": "MX_G6",
"x": 17.25,
"y": 0
},
{
"label": "MX_H6",
"x": 18.25,
"y": 0
},
{
"label": "MX_A1",
"x": 0,
"y": 1.25
},
{
"label": "MX_B1",
"x": 1,
"y": 1.25
},
{
"label": "MX_C1",
"x": 2,
"y": 1.25
},
{
"label": "MX_D1",
"x": 3,
"y": 1.25
},
{
"label": "MX_E1",
"x": 4,
"y": 1.25
},
{
"label": "MX_F1",
"x": 5,
"y": 1.25
},
{
"label": "MX_G1",
"x": 6,
"y": 1.25
},
{
"label": "MX_H1",
"x": 7,
"y": 1.25
},
{
"label": "MX_I1",
"x": 8,
"y": 1.25
},
{
"label": "MX_J1",
"x": 9,
"y": 1.25
},
{
"label": "MX_A7",
"x": 10,
"y": 1.25
},
{
"label": "MX_B7",
"x": 11,
"y": 1.25
},
{
"label": "MX_C7",
"x": 12,
"y": 1.25
},
{
"label": "MX_D7",
"x": 13,
"y": 1.25,
"w": 2
},
{
"label": "MX_E7",
"x": 15.25,
"y": 1.25
},
{
"label": "MX_F7",
"x": 16.25,
"y": 1.25
},
{
"label": "MX_G7",
"x": 17.25,
"y": 1.25
},
{
"label": "MX_H7",
"x": 18.25,
"y": 1.25
},
{
"label": "MX_A2",
"x": 0,
"y": 2.25,
"w": 1.5
},
{
"label": "MX_B2",
"x": 1.5,
"y": 2.25
},
{
"label": "MX_C2",
"x": 2.5,
"y": 2.25
},
{
"label": "MX_D2",
"x": 3.5,
"y": 2.25
},
{
"label": "MX_E2",
"x": 4.5,
"y": 2.25
},
{
"label": "MX_F2",
"x": 5.5,
"y": 2.25
},
{
"label": "MX_G2",
"x": 6.5,
"y": 2.25
},
{
"label": "MX_H2",
"x": 7.5,
"y": 2.25
},
{
"label": "MX_I2",
"x": 8.5,
"y": 2.25
},
{
"label": "MX_J2",
"x": 9.5,
"y": 2.25
},
{
"label": "MX_A8",
"x": 10.5,
"y": 2.25
},
{
"label": "MX_B8",
"x": 11.5,
"y": 2.25
},
{
"label": "MX_C8",
"x": 12.5,
"y": 2.25
},
{
"label": "MX_D8",
"x": 13.75,
"y": 2.25,
"w": 1.25,
"h": 2
},
{
"label": "MX_E8",
"x": 15.25,
"y": 2.25
},
{
"label": "MX_F8",
"x": 16.25,
"y": 2.25
},
{
"label": "MX_G8",
"x": 17.25,
"y": 2.25
},
{
"label": "MX_H8",
"x": 18.25,
"y": 2.25,
"h": 2
},
{
"label": "MX_A3",
"x": 0,
"y": 3.25,
"w": 1.75
},
{
"label": "MX_B3",
"x": 1.75,
"y": 3.25
},
{
"label": "MX_C3",
"x": 2.75,
"y": 3.25
},
{
"label": "MX_D3",
"x": 3.75,
"y": 3.25
},
{
"label": "MX_E3",
"x": 4.75,
"y": 3.25
},
{
"label": "MX_F3",
"x": 5.75,
"y": 3.25
},
{
"label": "MX_G3",
"x": 6.75,
"y": 3.25
},
{
"label": "MX_H3",
"x": 7.75,
"y": 3.25
},
{
"label": "MX_I3",
"x": 8.75,
"y": 3.25
},
{
"label": "MX_J3",
"x": 9.75,
"y": 3.25
},
{
"label": "MX_A9",
"x": 10.75,
"y": 3.25
},
{
"label": "MX_B9",
"x": 11.75,
"y": 3.25
},
{
"label": "MX_C9",
"x": 12.75,
"y": 3.25
},
{
"label": "MX_E9",
"x": 15.25,
"y": 3.25
},
{
"label": "MX_F9",
"x": 16.25,
"y": 3.25
},
{
"label": "MX_G9",
"x": 17.25,
"y": 3.25
},
{
"label": "MX_H9",
"x": 19.5,
"y": 3.25
},
{
"label": "MX_K1",
"x": 20.5,
"y": 3.25
},
{
"label": "MX_K0",
"x": 21.5,
"y": 3.25
},
{
"label": "MX_A4",
"x": 0,
"y": 4.25,
"w": 1.25
},
{
"label": "MX_B4",
"x": 1.25,
"y": 4.25
},
{
"label": "MX_C4",
"x": 2.25,
"y": 4.25
},
{
"label": "MX_D4",
"x": 3.25,
"y": 4.25
},
{
"label": "MX_E4",
"x": 4.25,
"y": 4.25
},
{
"label": "MX_F4",
"x": 5.25,
"y": 4.25
},
{
"label": "MX_G4",
"x": 6.25,
"y": 4.25
},
{
"label": "MX_H4",
"x": 7.25,
"y": 4.25
},
{
"label": "MX_I4",
"x": 8.25,
"y": 4.25
},
{
"label": "MX_J4",
"x": 9.25,
"y": 4.25
},
{
"label": "MX_I9",
"x": 10.25,
"y": 4.25
},
{
"label": "MX_I8",
"x": 11.25,
"y": 4.25
},
{
"label": "MX_I7",
"x": 12.25,
"y": 4.25,
"w": 2.75
},
{
"label": "MX_I6",
"x": 15.25,
"y": 4.25
},
{
"label": "MX_J9",
"x": 16.25,
"y": 4.25
},
{
"label": "MX_J8",
"x": 17.25,
"y": 4.25
},
{
"label": "MX_J7",
"x": 18.25,
"y": 4.25,
"h": 2
},
{
"label": "MX_J6",
"x": 19.5,
"y": 4.25
},
{
"label": "MX_K3",
"x": 20.5,
"y": 4.25
},
{
"label": "MX_K2",
"x": 21.5,
"y": 4.25
},
{
"label": "MX_A5",
"x": 0,
"y": 5.25,
"w": 1.25
},
{
"label": "MX_B5",
"x": 1.25,
"y": 5.25,
"w": 1.25
},
{
"label": "MX_C5",
"x": 2.5,
"y": 5.25,
"w": 1.25
},
{
"label": "MX_D5",
"x": 3.75,
"y": 5.25,
"w": 6.25
},
{
"label": "MX_J5",
"x": 10,
"y": 5.25,
"w": 1.25
},
{
"label": "MX_I5",
"x": 11.25,
"y": 5.25,
"w": 1.25
},
{
"label": "MX_K9",
"x": 12.5,
"y": 5.25,
"w": 1.25
},
{
"label": "MX_E5",
"x": 13.75,
"y": 5.25,
"w": 1.25
},
{
"label": "MX_K8",
"x": 15.25,
"y": 5.25,
"w": 2
},
{
"label": "MX_K7",
"x": 17.25,
"y": 5.25
},
{
"label": "MX_K6",
"x": 19.5,
"y": 5.25
},
{
"label": "MX_K5",
"x": 20.5,
"y": 5.25
},
{
"label": "MX_K4",
"x": 21.5,
"y": 5.25
}
]
}
}
}

View File

@ -0,0 +1,11 @@
#include "jopr.h"
void matrix_init_kb(void) {
matrix_init_user();
led_init_ports();
};
void led_init_ports(void) {
setPinOutput(F0);
setPinOutput(F1);
setPinOutput(F4);
}

View File

@ -0,0 +1,24 @@
#pragma once
#include "quantum.h"
#define LAYOUT( \
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K600, K601, K602, K603, K604, K605, K606, K607, \
K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K700, K701, K702, K703, K704, K705, K706, K707, \
K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K800, K801, K802, K803, K804, K805, K806, K807, \
K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K900, K901, K902, K904, K905, K906, K907, K110, K010, \
K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K908, K808, K708, K608, K909, K809, K709, K609, K310, K210, \
K500, K501, K502, K503, K509, K508, K910, K504, K810, K710, K610, K510, K410 \
) \
{ \
{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010 }, \
{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110 }, \
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210 }, \
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310 }, \
{ K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410 }, \
{ K500, K501, K502, K503, K504, KC_NO, KC_NO, KC_NO, K508, K509, K510 }, \
{ K600, K601, K602, K603, K604, K605, K606, K607, K608, K609, K610 }, \
{ K700, K701, K702, K703, K704, K705, K706, K707, K708, K709, K710 }, \
{ K800, K801, K802, K803, K804, K805, K806, K807, K808, K809, K810 }, \
{ K900, K901, K902, KC_NO, K904, K905, K906, K907, K908, K909, K910 } \
}

View File

@ -0,0 +1,59 @@
#include QMK_KEYBOARD_H
#define _BL 0
#define _FN 1
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BL] = LAYOUT(
KC_ESC, 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_NO, KC_CAPS, KC_SLCK, KC_PAUS,
KC_GRV, 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_PSCR, KC_PSLS, KC_PAST, KC_PMNS,
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_P7, KC_P8, KC_P9, KC_PPLS,
KC_MHEN, 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_P4, KC_P5, KC_P6, KC_PGUP, KC_INS, KC_PGDN,
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_P1, KC_P2, KC_P3, KC_PENT, KC_HOME, KC_UP, KC_END,
KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, LT(_FN,KC_APP), KC_RCTL, KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT
),
[_FN] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_SYSREQ, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MSTP, KC_VOLU, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, KC_MUTE, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, _______, _______, KC_VOLD, KC_MSTP, KC_VOLU,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT
)
};
void led_set_user(uint8_t usb_led) {
if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) {
writePinHigh(F1);
} else {
writePinLow(F1);
}
if (IS_LED_ON(usb_led, USB_LED_SCROLL_LOCK)) {
writePinHigh(F0);
} else {
writePinLow(F0);
}
if (!(IS_LED_ON(usb_led, USB_LED_NUM_LOCK))) {
tap_code(KC_NUMLOCK);
}
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
static bool sysreq_led = false;
if (record->event.pressed) {
if (sysreq_led) {
sysreq_led = false;
writePinLow(F4);
}
else {
switch(keycode) {
case KC_SYSREQ:
sysreq_led = true;
writePinHigh(F4);
}
}
}
return true;
}

View File

@ -0,0 +1,59 @@
#include QMK_KEYBOARD_H
#define _BL 0
#define _FN 1
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BL] = LAYOUT(
KC_ESC, 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_NO, KC_CAPS, KC_SLCK, KC_PAUS,
KC_NUHS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_NUBS, KC_SLSH, KC_BSPC, KC_PSCR, KC_PSLS, KC_PAST, KC_PMNS,
KC_TAB, KC_V, KC_Y, KC_D, KC_COMM, KC_QUOT, KC_INT1, KC_J, KC_M, KC_L, KC_U, KC_LBRC, KC_RBRC, KC_ENT, KC_P7, KC_P8, KC_P9, KC_PPLS,
KC_MHEN, KC_A, KC_T, KC_H, KC_E, KC_B, KC_MINS, KC_C, KC_S, KC_N, KC_O, KC_I, KC_EQL, KC_P4, KC_P5, KC_P6, KC_PGUP, KC_INS, KC_PGDN,
KC_LSFT, KC_GRV, KC_P, KC_K, KC_G, KC_W, KC_Q, KC_X, KC_R, KC_F, KC_DOT, KC_Z, KC_RSFT, KC_P1, KC_P2, KC_P3, KC_PENT, KC_HOME, KC_UP, KC_END,
KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, LT(_FN,KC_APP), KC_RCTL, KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT
),
[_FN] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_SYSREQ, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MSTP, KC_VOLU, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, KC_MUTE, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, _______, _______, KC_VOLD, KC_MSTP, KC_VOLU,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT
)
};
void led_set_user(uint8_t usb_led) {
if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) {
writePinHigh(F1);
} else {
writePinLow(F1);
}
if (IS_LED_ON(usb_led, USB_LED_SCROLL_LOCK)) {
writePinHigh(F0);
} else {
writePinLow(F0);
}
if (!(IS_LED_ON(usb_led, USB_LED_NUM_LOCK))) {
tap_code(KC_NUMLOCK);
}
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
static bool sysreq_led = false;
if (record->event.pressed) {
if (sysreq_led) {
sysreq_led = false;
writePinLow(F4);
}
else {
switch(keycode) {
case KC_SYSREQ:
sysreq_led = true;
writePinHigh(F4);
}
}
}
return true;
}

View File

@ -0,0 +1,17 @@
# jopr-106-Nl2SR-Cl2MH
106-key based on ISO 105-key, NumLock to SysReq, CapsLock to Muhenkan/ROYA, NumLock state forced on
![jopr-106-default](https://raw.githubusercontent.com/joelproko/keyboard_layout_jopr/master/keycode_layout_default.png)
![jopr-106-modded_white](https://raw.githubusercontent.com/joelproko/keyboard_layout_jopr/master/keycap_layout_modded_white.png)
Inspired by [KeyBored](https://github.com/itractus/KeyBored) and [white_keyboard_layout](https://github.com/mw8/white_keyboard_layout)
Keyboard Maintainer: [joelproko](https://github.com/joelproko)
Hardware: https://github.com/joelproko/keyboard_layout_jopr
Make example for this keyboard (after setting up your build environment):
make jopr:default
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).

View File

@ -0,0 +1,63 @@
# MCU name
MCU = atmega32u4
# Processor frequency.
# This will define a symbol, F_CPU, in all source code files equal to the
# processor frequency in Hz. You can then use this symbol in your source code to
# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
# automatically to create a 32-bit value in your source code.
#
# This will be an integer division of F_USB below, as it is sourced by
# F_USB after it has run through any CPU prescalers. Note that this value
# does not *change* the processor frequency - it should merely be updated to
# reflect the processor speed set externally so that the code can use accurate
# software delays.
F_CPU = 16000000
#
# LUFA specific
#
# Target architecture (see library "Board Types" documentation).
ARCH = AVR8
# Input clock frequency.
# This will define a symbol, F_USB, in all source code files equal to the
# input clock frequency (before any prescaling is performed) in Hz. This value may
# differ from F_CPU if prescaling is used on the latter, and is required as the
# raw input clock is fed directly to the PLL sections of the AVR for high speed
# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
# at the end, this will be done automatically to create a 32-bit value in your
# source code.
#
# If no clock division is performed on the input clock inside the AVR (via the
# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
F_USB = $(F_CPU)
# Interrupt driven control endpoint task(+60)
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
# Bootloader selection
# Teensy halfkay
# Pro Micro caterina
# Atmel DFU atmel-dfu
# LUFA DFU lufa-dfu
# QMK DFU qmk-dfu
# atmega32a bootloadHID
BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = no # Console for debug(+400)
COMMAND_ENABLE = no # Commands for debug and configuration
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no
UNICODE_ENABLE = yes
RGBLIGHT_ENABLE = no