Add EM.8 keyboard (#18328)

by ebastler
master^2
ebastler 2022-09-12 18:17:01 +02:00 committed by GitHub
parent f46379f308
commit 110de0b512
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 326 additions and 0 deletions

View File

@ -0,0 +1,8 @@
// Copyright 2022 moritz plattner (@moritz plattner)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
// Move Bootmagic key from ~ to ESC (0,0 to 1,0)
#define BOOTMAGIC_LITE_ROW 1
#define BOOTMAGIC_LITE_COLUMN 0

View File

@ -0,0 +1,190 @@
{
"manufacturer": "Linworks",
"keyboard_name": "EM.8",
"maintainer": "ebastler",
"bootloader": "atmel-dfu",
"diode_direction": "COL2ROW",
"features": {
"bootmagic": true,
"command": false,
"console": false,
"extrakey": true,
"mousekey": false,
"nkro": true
},
"matrix_pins": {
"cols": [ "B5", "B4", "D0", "D1", "D4", "D6", "D7", "F6", "F5", "F4", "F1", "B2", "B6", "C6", "C7" ],
"rows": [ "B7", "B0", "F0", "E6", "F7" ]
},
"processor": "atmega32u4",
"url": "https://klc-playground.com/",
"usb": {
"device_version": "1.0.0",
"pid": "0x0006",
"vid": "0x4C58"
},
"indicators": {
"num_lock": "D2",
"caps_lock": "D3",
"scroll_lock": "D5",
"on_state": 0
},
"layouts": {
"LAYOUT_em8_2u_backsp": {
"layout": [
{"x":0, "y":0, "matrix":[1,0] },
{"x":1.25, "y":0, "matrix":[0,0] },
{"x":2.25, "y":0, "matrix":[0,1] },
{"x":3.25, "y":0, "matrix":[0,2] },
{"x":4.25, "y":0, "matrix":[0,3] },
{"x":5.25, "y":0, "matrix":[0,4] },
{"x":6.25, "y":0, "matrix":[0,5] },
{"x":7.25, "y":0, "matrix":[0,6] },
{"x":10.25, "y":0, "matrix":[0,7] },
{"x":11.25, "y":0, "matrix":[0,8] },
{"x":12.25, "y":0, "matrix":[0,9] },
{"x":13.25, "y":0, "matrix":[0,10] },
{"x":14.25, "y":0, "matrix":[0,11] },
{"x":15.25, "y":0, "matrix":[0,12] },
{"x":16.25, "y":0, "w": 2, "matrix":[0,13] },
{"x":18.5, "y":0, "matrix":[0,14] },
{"x":0, "y":1, "matrix":[2,0] },
{"x":1.25, "y":1, "w":1.5, "matrix":[1,1] },
{"x":2.75, "y":1, "matrix":[1,2] },
{"x":3.75, "y":1, "matrix":[1,3] },
{"x":4.75, "y":1, "matrix":[1,4] },
{"x":5.75, "y":1, "matrix":[1,5] },
{"x":6.75, "y":1, "matrix":[1,6] },
{"x":9.75, "y":1, "matrix":[1,7] },
{"x":10.75, "y":1, "matrix":[1,8] },
{"x":11.75, "y":1, "matrix":[1,9] },
{"x":12.75, "y":1, "matrix":[1,10] },
{"x":13.75, "y":1, "matrix":[1,11] },
{"x":14.75, "y":1, "matrix":[1,12] },
{"x":15.75, "y":1, "matrix":[1,13] },
{"x":16.75, "y":1, "w":1.5, "matrix":[1,14] },
{"x":18.5, "y":1, "matrix":[2,14] },
{"x":0, "y":2, "matrix":[3,0] },
{"x":1.25, "y":2, "w":1.75, "matrix":[2,1] },
{"x":3, "y":2, "matrix":[2,2] },
{"x":4, "y":2, "matrix":[2,3] },
{"x":5, "y":2, "matrix":[2,4] },
{"x":6, "y":2, "matrix":[2,5] },
{"x":7, "y":2, "matrix":[2,6] },
{"x":10, "y":2, "matrix":[2,7] },
{"x":11, "y":2, "matrix":[2,8] },
{"x":12, "y":2, "matrix":[2,9] },
{"x":13, "y":2, "matrix":[2,10] },
{"x":14, "y":2, "matrix":[2,11] },
{"x":15, "y":2, "matrix":[2,12] },
{"x":16, "y":2, "w":2.25, "matrix":[2,13] },
{"x":1.25, "y":3, "w":2.25, "matrix":[3,1] },
{"x":3.5, "y":3, "matrix":[3,2] },
{"x":4.5, "y":3, "matrix":[3,3] },
{"x":5.5, "y":3, "matrix":[3,4] },
{"x":6.5, "y":3, "matrix":[3,5] },
{"x":7.5, "y":3, "matrix":[3,6] },
{"x":9.5, "y":3, "matrix":[3,7] },
{"x":10.5, "y":3, "matrix":[3,8] },
{"x":11.5, "y":3, "matrix":[3,9] },
{"x":12.5, "y":3, "matrix":[3,10] },
{"x":13.5, "y":3, "matrix":[3,11] },
{"x":14.5, "y":3, "matrix":[3,12] },
{"x":15.5, "y":3, "w":1.75, "matrix":[3,13] },
{"x":17.5, "y":3.25, "matrix":[3,14] },
{"x":1.25, "y":4, "w":1.5, "matrix":[4,1] },
{"x":4.25, "y":4, "w":1.5, "matrix":[4,3] },
{"x":5.75, "y":4, "w":2.25, "matrix":[4,5] },
{"x":8, "y":4, "w":1, "matrix":[4,6] },
{"x":9.5, "y":4, "w":2.75, "matrix":[4,8] },
{"x":12.25, "y":4, "w":1.5, "matrix":[4,10] },
{"x":16.5, "y":4.25, "w":1, "matrix":[4,12] },
{"x":17.5, "y":4.25, "w":1, "matrix":[4,13] },
{"x":18.5, "y":4.25, "w":1, "matrix":[4,14] }
]
},
"LAYOUT_em8_all": {
"layout": [
{"x":0, "y":0, "matrix":[1,0] },
{"x":1.25, "y":0, "matrix":[0,0] },
{"x":2.25, "y":0, "matrix":[0,1] },
{"x":3.25, "y":0, "matrix":[0,2] },
{"x":4.25, "y":0, "matrix":[0,3] },
{"x":5.25, "y":0, "matrix":[0,4] },
{"x":6.25, "y":0, "matrix":[0,5] },
{"x":7.25, "y":0, "matrix":[0,6] },
{"x":10.25, "y":0, "matrix":[0,7] },
{"x":11.25, "y":0, "matrix":[0,8] },
{"x":12.25, "y":0, "matrix":[0,9] },
{"x":13.25, "y":0, "matrix":[0,10] },
{"x":14.25, "y":0, "matrix":[0,11] },
{"x":15.25, "y":0, "matrix":[0,12] },
{"x":16.25, "y":0, "matrix":[0,13] },
{"x":17.25, "y":0, "matrix":[4,11] },
{"x":18.5, "y":0, "matrix":[0,14] },
{"x":0, "y":1, "matrix":[2,0] },
{"x":1.25, "y":1, "w":1.5, "matrix":[1,1] },
{"x":2.75, "y":1, "matrix":[1,2] },
{"x":3.75, "y":1, "matrix":[1,3] },
{"x":4.75, "y":1, "matrix":[1,4] },
{"x":5.75, "y":1, "matrix":[1,5] },
{"x":6.75, "y":1, "matrix":[1,6] },
{"x":9.75, "y":1, "matrix":[1,7] },
{"x":10.75, "y":1, "matrix":[1,8] },
{"x":11.75, "y":1, "matrix":[1,9] },
{"x":12.75, "y":1, "matrix":[1,10] },
{"x":13.75, "y":1, "matrix":[1,11] },
{"x":14.75, "y":1, "matrix":[1,12] },
{"x":15.75, "y":1, "matrix":[1,13] },
{"x":16.75, "y":1, "w":1.5, "matrix":[1,14] },
{"x":18.5, "y":1, "matrix":[2,14] },
{"x":0, "y":2, "matrix":[3,0] },
{"x":1.25, "y":2, "w":1.75, "matrix":[2,1] },
{"x":3, "y":2, "matrix":[2,2] },
{"x":4, "y":2, "matrix":[2,3] },
{"x":5, "y":2, "matrix":[2,4] },
{"x":6, "y":2, "matrix":[2,5] },
{"x":7, "y":2, "matrix":[2,6] },
{"x":10, "y":2, "matrix":[2,7] },
{"x":11, "y":2, "matrix":[2,8] },
{"x":12, "y":2, "matrix":[2,9] },
{"x":13, "y":2, "matrix":[2,10] },
{"x":14, "y":2, "matrix":[2,11] },
{"x":15, "y":2, "matrix":[2,12] },
{"x":16, "y":2, "w":2.25, "matrix":[2,13] },
{"x":1.25, "y":3, "w":2.25, "matrix":[3,1] },
{"x":3.5, "y":3, "matrix":[3,2] },
{"x":4.5, "y":3, "matrix":[3,3] },
{"x":5.5, "y":3, "matrix":[3,4] },
{"x":6.5, "y":3, "matrix":[3,5] },
{"x":7.5, "y":3, "matrix":[3,6] },
{"x":9.5, "y":3, "matrix":[3,7] },
{"x":10.5, "y":3, "matrix":[3,8] },
{"x":11.5, "y":3, "matrix":[3,9] },
{"x":12.5, "y":3, "matrix":[3,10] },
{"x":13.5, "y":3, "matrix":[3,11] },
{"x":14.5, "y":3, "matrix":[3,12] },
{"x":15.5, "y":3, "w":1.75, "matrix":[3,13] },
{"x":17.5, "y":3.25, "matrix":[3,14] },
{"x":1.25, "y":4, "w":1.5, "matrix":[4,1] },
{"x":4.25, "y":4, "w":1.5, "matrix":[4,3] },
{"x":5.75, "y":4, "w":2.25, "matrix":[4,5] },
{"x":8, "y":4, "w":1, "matrix":[4,6] },
{"x":9.5, "y":4, "w":2.75, "matrix":[4,8] },
{"x":12.25, "y":4, "w":1.5, "matrix":[4,10] },
{"x":16.5, "y":4.25, "w":1, "matrix":[4,12] },
{"x":17.5, "y":4.25, "w":1, "matrix":[4,13] },
{"x":18.5, "y":4.25, "w":1, "matrix":[4,14] }
]
}
}
}

View File

@ -0,0 +1,52 @@
/* Copyright 2022 Moritz Plattner
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_em8_all(
KC_ESC, 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_BSPC, KC_INS,
KC_PGUP, 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_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT_em8_all(
KC_TRNS, KC_TRNS, 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_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT
),
[2] = LAYOUT_em8_all(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[3] = LAYOUT_em8_all(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};

View File

@ -0,0 +1,52 @@
/* Copyright 2022 Moritz Plattner
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_em8_all(
KC_ESC, 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_BSPC, KC_INS,
KC_PGUP, 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_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT_em8_all(
KC_TRNS, KC_TRNS, 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_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT
),
[2] = LAYOUT_em8_all(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[3] = LAYOUT_em8_all(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};

View File

@ -0,0 +1 @@
VIA_ENABLE = yes

View File

@ -0,0 +1,22 @@
# EM.8
The Ergonomic Modified 8 is a tented ergonomic keyboard and the successor to the EM.7, designed by Syryan and Lx3.The default PCB supports hotswap and the layout options are limited to split or regular backpsace, as well as regular or stepped caps lock.
* Keyboard maintainer: [ebastler](https://github.com/ebastler)
* Hardware supported: Lin EM.8
* Hardware availability: Groupbuy. More infos on [the Linworks Discord](https://discord.gg/UC8gTdVnsj)
Make example for this keyboard (after setting up your build environment):
make linworks/em8:default
Flash example for this keyboard:
make linworks/em8:default:flash
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).
## How to enter the bootloader
* **Bootmagic reset**: Hold down the key `ESC` key and plug in the keyboard (Top left most switch). On older firmware revisions, `~` (top left most switch of the alpha cluster) may be needed instead.
* **Physical reset button**: Briefly press the button on the back of the PCB

View File

@ -0,0 +1 @@
# This file intentionally left blank