[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.mdmaster
parent
d5f0327b97
commit
2d15961855
|
@ -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
|
|
@ -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
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -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);
|
||||||
|
}
|
|
@ -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 } \
|
||||||
|
}
|
|
@ -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;
|
||||||
|
}
|
|
@ -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;
|
||||||
|
}
|
|
@ -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).
|
|
@ -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
|
Loading…
Reference in New Issue