~ruther/qmk_firmware

5c84d935f992d98803b92b89a39e4a878f054ebb — Habib 1 year, 2 months ago 6fed854
[Keyboard] Add mntre_v3 (#22739)

A keyboards/mntre_v3/info.json => keyboards/mntre_v3/info.json +120 -0
@@ 0,0 1,120 @@
{
    "keyboard_name": "MNT Reform Keyboard 3.0",
    "manufacturer": "MNT Research GmbH",
    "url": "https://shop.mntre.com/products/mnt-reform-keyboard-30",
    "maintainer": "Habibmuhd",
    "usb": {
        "vid": "0xFEED",
        "pid": "0x1302",
        "device_version": "0.0.2"
    },
    "matrix_pins": {
        "cols": ["D5", "F7", "E6", "C7", "B3", "B2", "B1", "B0", "F0", "F1", "F4", "F5", "F6", "C6"],
        "rows": ["B6", "B5", "B4", "D7", "D6", "D4"]
    },
    "diode_direction": "COL2ROW",
    "backlight": {
        "pin": "B7",
        "max_brightness": 84
    },
	"features": {
        "bootmagic": true,
        "extrakey": true,
        "mousekey": true,
        "backlight": true,
        "oled": true
    },
    "processor": "atmega32u4",
    "bootloader": "atmel-dfu",
    "layouts": {
        "LAYOUT": {
            "layout": [
                {"matrix": [0, 0], "x": 0, "y": 0},
                {"matrix": [0, 1], "x": 1, "y": 0},
                {"matrix": [0, 2], "x": 2, "y": 0},
                {"matrix": [0, 3], "x": 3, "y": 0},
                {"matrix": [0, 4], "x": 4, "y": 0},
                {"matrix": [0, 5], "x": 5, "y": 0},
                {"matrix": [0, 6], "x": 6, "y": 0},
                {"matrix": [0, 7], "x": 7, "y": 0},
                {"matrix": [0, 8], "x": 8, "y": 0},
                {"matrix": [0, 9], "x": 9, "y": 0},
                {"matrix": [0, 10], "x": 10, "y": 0},
                {"matrix": [0, 11], "x": 11, "y": 0},
                {"matrix": [0, 12], "x": 12, "y": 0},
                {"matrix": [0, 13], "x": 13, "y": 0, "w": 1.5},

                {"matrix": [1, 0], "x": 0, "y": 1},
                {"matrix": [1, 1], "x": 1, "y": 1},
                {"matrix": [1, 2], "x": 2, "y": 1},
                {"matrix": [1, 3], "x": 3, "y": 1},
                {"matrix": [1, 4], "x": 4, "y": 1},
                {"matrix": [1, 5], "x": 5, "y": 1},
                {"matrix": [1, 6], "x": 6, "y": 1},
                {"matrix": [1, 7], "x": 7, "y": 1},
                {"matrix": [1, 8], "x": 8, "y": 1},
                {"matrix": [1, 9], "x": 9, "y": 1},
                {"matrix": [1, 10], "x": 10, "y": 1},
                {"matrix": [1, 11], "x": 11, "y": 1},
                {"matrix": [1, 12], "x": 12, "y": 1},
                {"matrix": [1, 13], "x": 13, "y": 1, "w": 1.5},

                {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.5},
                {"matrix": [2, 1], "x": 1.5, "y": 2},
                {"matrix": [2, 2], "x": 2.5, "y": 2},
                {"matrix": [2, 3], "x": 3.5, "y": 2},
                {"matrix": [2, 4], "x": 4.5, "y": 2},
                {"matrix": [2, 5], "x": 5.5, "y": 2},
                {"matrix": [2, 6], "x": 6.5, "y": 2},
                {"matrix": [2, 7], "x": 7.5, "y": 2},
                {"matrix": [2, 8], "x": 8.5, "y": 2},
                {"matrix": [2, 9], "x": 9.5, "y": 2},
                {"matrix": [2, 10], "x": 10.5, "y": 2},
                {"matrix": [2, 11], "x": 11.5, "y": 2},
                {"matrix": [2, 12], "x": 12.5, "y": 2},
                {"matrix": [2, 13], "x": 13.5, "y": 2},

                {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.75},
                {"matrix": [3, 1], "x": 1, "y": 3},
                {"matrix": [3, 2], "x": 2, "y": 3},
                {"matrix": [3, 3], "x": 3, "y": 3},
                {"matrix": [3, 4], "x": 4, "y": 3},
                {"matrix": [3, 5], "x": 5, "y": 3},
                {"matrix": [3, 6], "x": 6, "y": 3},
                {"matrix": [3, 7], "x": 7, "y": 3},
                {"matrix": [3, 8], "x": 8, "y": 3},
                {"matrix": [3, 9], "x": 9, "y": 3},
                {"matrix": [3, 10], "x": 10, "y": 3},
                {"matrix": [3, 11], "x": 11, "y": 3},
                {"matrix": [3, 12], "x": 12, "y": 3, "w": 1.75},

                {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
                {"matrix": [4, 1], "x": 1.5, "y": 4},
                {"matrix": [4, 2], "x": 2.5, "y": 4},
                {"matrix": [4, 3], "x": 3.5, "y": 4},
                {"matrix": [4, 4], "x": 4.5, "y": 4},
                {"matrix": [4, 5], "x": 5.5, "y": 4},
                {"matrix": [4, 6], "x": 6.5, "y": 4},
                {"matrix": [4, 7], "x": 7.5, "y": 4},
                {"matrix": [4, 8], "x": 8.5, "y": 4},
                {"matrix": [4, 9], "x": 9.5, "y": 4},
                {"matrix": [4, 10], "x": 10.5, "y": 4},
                {"matrix": [4, 11], "x": 11.5, "y": 4},
                {"matrix": [4, 12], "x": 12.5, "y": 4},
                {"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.25},

                {"matrix": [5, 0], "x": 0, "y": 5, "w": 1.25},
                {"matrix": [5, 1], "x": 1.5, "y": 5, "w": 1.5},
                {"matrix": [5, 2], "x": 3, "y": 5, "w": 1.5},
                {"matrix": [5, 3], "x": 4.5, "y": 5, "w": 1.5},
                {"matrix": [5, 4], "x": 6, "y": 5,"w": 2},
                {"matrix": [5, 5], "x": 7, "y": 5,"w": 1.5},
                {"matrix": [5, 6], "x": 8, "y": 5},
                {"matrix": [5, 7], "x": 9.5, "y": 5},
                {"matrix": [5, 8], "x": 10.5, "y": 5},
                {"matrix": [5, 9], "x": 11.5, "y": 5},
                {"matrix": [5, 10], "x": 12.5, "y": 5,"w": 1.25}
            ]
        }
    }
}

A keyboards/mntre_v3/keymaps/default/keymap.c => keyboards/mntre_v3/keymaps/default/keymap.c +31 -0
@@ 0,0 1,31 @@
// Copyright 2021 Cedric Vincent (@cdc-mkb)
// SPDX-License-Identifier: GPL-2.0-or-later

#include QMK_KEYBOARD_H

// Defines names for use in layer keycodes and the keymap
enum layer_names {
    _BASE,
    _FN,
};

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    /* Base */
    [_BASE] = 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,      MO(_FN),
        KC_GRAVE,  KC_1,    KC_2,     KC_3,     KC_4,    KC_5,    KC_6,     KC_7,    KC_8,      KC_9,     KC_0,    KC_MINUS,    KC_EQUAL,    KC_BSPC,
        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_LCTL,   KC_A,    KC_S,     KC_D,     KC_F,    KC_G,    KC_H,     KC_J,    KC_K,      KC_L,     KC_SCLN, KC_QUOTE,    KC_ENTER,
        KC_LSFT,   KC_DEL,  KC_Z,     KC_X,     KC_C,    KC_V,    KC_B,     KC_N,    KC_M,      KC_COMMA, KC_DOT,  KC_SLASH,    KC_UP,       KC_RSFT,
        KC_RGUI,   KC_LGUI, KC_LALT,  KC_SPACE, KC_SPACE, KC_SPACE, KC_RALT, KC_RCTL, KC_LEFT,  KC_DOWN, KC_RIGHT
    ),

    [_FN] = LAYOUT(
        _______, BL_DOWN,  BL_UP,   _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
        _______, _______,  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
        _______, _______,  _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
        _______, _______,  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 
        _______, _______,  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
        _______, _______,  _______, _______, _______, _______, _______, _______, _______, _______, _______
	),
};

A keyboards/mntre_v3/keymaps/default/readme.md => keyboards/mntre_v3/keymaps/default/readme.md +21 -0
@@ 0,0 1,21 @@
# Default layout of MNT Reform USB Keyboard 3.0 (Standalone)

This is exactly the same layout as in the original firmware.
Backlight level can be decreased and increased using Fn+F1 and Fn+F2
respectively.

  ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
  ┃  Esc │  F1  │  F2  │  F3  │  F4  │  F5  │  F6  │  F7  │  F8  │  F9  │  F10 │  F11 │  F12 │    Fn    ┃
  ┠──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────────┨
  ┃  `~  │  1!  │  2@  │  3#  │  4$  │  5%  │  6^  │  7&  │  8*  │  9(  │  0)  │  -_  │  =+  │ Backspace┃
  ┠──────┴───┬──┴───┬──┴───┬──┴───┬──┴───┬──┴───┬──┴───┬──┴───┬──┴───┬──┴───┬──┴───┬──┴───┬──┴───┬──────┨
  ┃    Tab   │   Q  │   W  │   E  │   R  │   T  │   Y  │   U  │   I  │   O  │   P  │  [{  │  ]}  │  \|  ┃
  ┠──────────┴──┬───┴──┬───┴──┬───┴──┬───┴──┬───┴──┬───┴──┬───┴──┬───┴──┬───┴──┬───┴──┬───┴──┬───┴──────┨
  ┃    LCtrl    │   A  │   S  │   D  │   F  │   G  │   H  │   J  │   K  │   L  │  ;:  │  '"  │   Enter  ┃
  ┠─────────┬───┴──┬───┴──┬───┴──┬───┴──┬───┴──┬───┴──┬───┴──┬───┴──┬───┴──┬───┴──┬───┴──┬───┴──┬───────┨
  ┃  LShift │  Del │   Z  │   X  │   C  │   V  │   B  │   N  │   M  │  ,<  │  .>  │  /?  │  Up  │ RShift┃
  ┠─────────┼──────┴──┬───┴──────┼──────┴──┬───┴──────┴──┬───┴──────┼──────┼──────┼──────┼──────┼───────┨
  ┃   RGUI  │   LGUI  │   ALT    │   Space │     Space   │  Space   │ ALT │ RCtrl │ Left │ Down │  Right┃
  ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛



A keyboards/mntre_v3/mntre.c => keyboards/mntre_v3/mntre.c +19 -0
@@ 0,0 1,19 @@
// Copyright 2021 Cedric Vincent (@cdc-mkb)
// SPDX-License-Identifier: GPL-2.0-or-later

#include "quantum.h"

#ifdef OLED_ENABLE
bool oled_task_kb(void) {
    if (!oled_task_user()) { return false; }

    static const char PROGMEM qmk_logo[] = {
        0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94,
        0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4,
        0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00
    };

    oled_write_P(qmk_logo, false);
    return true;
}
#endif

A keyboards/mntre_v3/readme.md => keyboards/mntre_v3/readme.md +27 -0
@@ 0,0 1,27 @@
# MNT Reform USB Keyboard (Standalone)

![MNT Reform USB Keyboard (Standalone)](https://i.imgur.com/pXDDan6h.jpeg)

A compact and slim mechanical keyboard designed for comfort and portability.

* Keyboard QMK port Maintainer: [cdc-mkb](https://github.com/cdc-mkb)
* Hardware Supported: MNT Reform USB Keyboard (Standalone)
* Hardware Availability: https://shop.mntre.com/products/mnt-reform-keyboard-30

Make example for this keyboard (after setting up your build environment):

    make mntre_v3:default

Flashing example for this keyboard:

    make mntre_v3: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).

## Bootloader

Enter the bootloader in 3 ways:

* **Bootmagic reset**: Hold down the "Esc" key and plug in the keyboard
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available (default: "Circle" + "R")
* **Physical reset button**: Remove the keyboard’s frame and toggle the programming DIP switch SW84 on the keyboard to “ON”.  Then press the reset button SW83.

A keyboards/mntre_v3/rules.mk => keyboards/mntre_v3/rules.mk +1 -0
@@ 0,0 1,1 @@
# This file intentionally left blank

Do not follow this link