~ruther/qmk_firmware

110de0b512375d33a0936424e05404e4edbee147 — ebastler 3 years ago f46379f
Add EM.8 keyboard  (#18328)

by ebastler
A keyboards/linworks/em8/config.h => keyboards/linworks/em8/config.h +8 -0
@@ 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

A keyboards/linworks/em8/info.json => keyboards/linworks/em8/info.json +190 -0
@@ 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] }
            ]
        }
    }
}
\ No newline at end of file

A keyboards/linworks/em8/keymaps/default/keymap.c => keyboards/linworks/em8/keymaps/default/keymap.c +52 -0
@@ 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
  )
};

A keyboards/linworks/em8/keymaps/via/keymap.c => keyboards/linworks/em8/keymaps/via/keymap.c +52 -0
@@ 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
  )
};

A keyboards/linworks/em8/keymaps/via/rules.mk => keyboards/linworks/em8/keymaps/via/rules.mk +1 -0
@@ 0,0 1,1 @@
VIA_ENABLE = yes

A keyboards/linworks/em8/readme.md => keyboards/linworks/em8/readme.md +22 -0
@@ 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
\ No newline at end of file

A keyboards/linworks/em8/rules.mk => keyboards/linworks/em8/rules.mk +1 -0
@@ 0,0 1,1 @@
# This file intentionally left blank
\ No newline at end of file