aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChuck Lauer Vose <vosechu@gmail.com>2019-02-06 14:41:17 -0800
committerDrashna Jaelre <drashna@live.com>2019-02-06 14:41:17 -0800
commita3104a71105e7743c778c47617dce0468bf8dc1f (patch)
treee98ae28920f033b26dfddbd6b5d9e5366c40c2b7
parent35f6919673c57a9fea9305a001c0069e8bbc2844 (diff)
downloadqmk_firmware-a3104a71105e7743c778c47617dce0468bf8dc1f.tar.gz
qmk_firmware-a3104a71105e7743c778c47617dce0468bf8dc1f.zip
[Keyboard] Initial commit of Laptreus Keyboard (#4967)
* Add userspace files for vosechu * Code review corrections * Few more code review corrections * Initial add of Laptreus code * Initial add of Laptreus code * Adding last punctuation to default * Add some debug suggestions to the debug readme * Fixes for PR feedback * Fixing capitalization of readme files * update auto detect connection logic
-rw-r--r--keyboards/laptreus/config.h72
-rw-r--r--keyboards/laptreus/keymaps/debug/keymap.c11
-rw-r--r--keyboards/laptreus/keymaps/debug/readme.md81
-rw-r--r--keyboards/laptreus/keymaps/default/keymap.c74
-rw-r--r--keyboards/laptreus/keymaps/default/readme.md79
-rw-r--r--keyboards/laptreus/keymaps/vosechu/keymap.c36
-rw-r--r--keyboards/laptreus/keymaps/vosechu/readme.md0
-rw-r--r--keyboards/laptreus/laptreus.c6
-rw-r--r--keyboards/laptreus/laptreus.h41
-rw-r--r--keyboards/laptreus/readme.md35
-rw-r--r--keyboards/laptreus/rules.mk67
11 files changed, 502 insertions, 0 deletions
diff --git a/keyboards/laptreus/config.h b/keyboards/laptreus/config.h
new file mode 100644
index 000000000..de6b7ce94
--- /dev/null
+++ b/keyboards/laptreus/config.h
@@ -0,0 +1,72 @@
1/*
2Copyright 2019 Chuck "@vosechu" Lauer Vose <vosechu@gmail.com>
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#pragma once
19
20#include "config_common.h"
21
22/* USB Device descriptor parameter */
23
24#define VENDOR_ID 0x1209 // pid.codes Vendor ID
25#define PRODUCT_ID 0xA1F1 // FIXME: Need to send PR to pid.codes to make this official
26#define DEVICE_VER 0x0001
27#define MANUFACTURER Vosechu
28#define PRODUCT Laptreus
29#define DESCRIPTION keyboard
30
31/* key matrix size */
32#define MATRIX_ROWS 5
33#define MATRIX_COLS 10
34
35#define MATRIX_ROW_PINS { F7, F6, F5, F1, F4 }
36#define MATRIX_COL_PINS { D6, B7, B6, D7, C6, D1, D0, D3, D2, F0 }
37#define UNUSED_PINS { }
38
39/* COL2ROW or ROW2COL */
40#define DIODE_DIRECTION ROW2COL
41
42/* define if matrix has ghost */
43//#define MATRIX_HAS_GHOST
44
45/* number of backlight levels */
46// #define BACKLIGHT_LEVELS 3
47
48/* Set 0 if debouncing isn't needed */
49#define DEBOUNCING_DELAY 5
50
51/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
52#define LOCKING_SUPPORT_ENABLE
53/* Locking resynchronize hack */
54#define LOCKING_RESYNC_ENABLE
55
56/*
57 * Feature disable options
58 * These options are also useful to firmware size reduction.
59 */
60
61/* disable debug print */
62// #define NO_DEBUG
63
64/* disable print */
65// #define NO_PRINT
66
67/* disable action features */
68// #define NO_ACTION_LAYER
69// #define NO_ACTION_TAPPING
70// #define NO_ACTION_ONESHOT
71// #define NO_ACTION_MACRO
72// #define NO_ACTION_FUNCTION
diff --git a/keyboards/laptreus/keymaps/debug/keymap.c b/keyboards/laptreus/keymaps/debug/keymap.c
new file mode 100644
index 000000000..8ffb06fa2
--- /dev/null
+++ b/keyboards/laptreus/keymaps/debug/keymap.c
@@ -0,0 +1,11 @@
1#include QMK_KEYBOARD_H
2
3const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
4 /* ============================= DEBUG LAYER ============================= */
5 [0] = LAYOUT(
6 KC_A, KC_1, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,
7 KC_A, KC_2, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,
8 KC_A, KC_3, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,
9 KC_A, KC_4, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L
10 )
11};
diff --git a/keyboards/laptreus/keymaps/debug/readme.md b/keyboards/laptreus/keymaps/debug/readme.md
new file mode 100644
index 000000000..fa4a27eda
--- /dev/null
+++ b/keyboards/laptreus/keymaps/debug/readme.md
@@ -0,0 +1,81 @@
1# Debug layout
2
3This layout is expressly for debugging to see if your keys are working.
4
5## Flashing
6
7**NOTE**: Make sure you don't have a second QMK keyboard plugged in when you do this!
8
9To compile and flash to the board:
10
11 make laptreus:debug:avrdude
12
13To just compile:
14
15 make laptreus:debug
16
17Then use QMK toolbox to write the file
18
19# Testing
20
21Now that you've got the image flashed, do the following:
22
23* Open a new text document
24* Click each key in order and hit enter (with the other keyboard) between each line
25* For any keys that don't register, hit space (with the other keyboard) and continue on
26* You'll end up with something looking like this:
27
28 a1bcdefghijkl
29 a2bcdefghijkl
30 a3bcdefghijkl
31 a4bcdefghijkl
32
33But almost certainly it won't be perfect, so lets go through some scenarios:
34
35## Step 1: Get all the letters to output _something_
36
37For lines that look like this:
38
39 a1bc efg ijkl
40
41* Option 1: Bent pin - Pull out the switch in those spots, probably the pin got bent when you inserted it into the hotswap socket. Gently bend the pin straight and re-insert.
42* Option 2: Broken joint on hotswap - If the pin looks okay, try connecting the two metal plated holes underneath the hotswap holes to see if the letter comes out. If it does, reflow (aka, apply some flux to both pads and reheat) the solder joint.
43* Option 3: Diode is backwards - If connecting the two metal pins didn't work, double check that the diode is the right direction. This may also need to be reflowed.
44* Option 4: ??? - Hop in [the discord]() and let's chat!
45
46## Step 2: Correct double letters
47
48Once you have all the keys outputting _anything_, flash the default layout and do the same thing. If everything is working, your layout will look something like this:
49
50 qwertyuiop
51 asdfghjkl;'
52 zxcvbnm,./
53
54**Note**: Don't worry about hitting the backspace or command keys
55
56### Duplicate letters
57
58For lines that look like this:
59
60 qwertyyuiop (double y)
61
62* Option 1: Bent pin - Pull out the switch in those spots, probably the pin got bent when you inserted it into the hotswap socket. Gently bend the pin straight and re-insert.
63* Option 2: Switch is broken - Try connecting the two metal plated holes underneath the hotswap holes to see if the letter comes out just once. If it does, the switch is broken and should be replaced. If you don't have another switch, you _may_ be able to unbend the leaf inside the switch, but it's really tricky.
64
65### Second letter sent (same row)
66
67For lines that look like this:
68
69 qwertyyuiop (t sent t AND y)
70
71* Option 1: ??? - I can't imagine how this would happen with this layout, but let me know if it does!
72
73### Second letter sent (same column)
74
75For lines that look like this:
76
77 qwertgyuiop (t sent t AND g)
78 qwertgbyuiop (t sent t AND g AND b)
79
80* Option 1: Diodes are backwards - Some of the diodes on this column are backwards, you can use a diode tester to confirm the direction, or just check them with a magnifying glass and switch them if needed.
81* Option 2: ???
diff --git a/keyboards/laptreus/keymaps/default/keymap.c b/keyboards/laptreus/keymaps/default/keymap.c
new file mode 100644
index 000000000..b0e1c9f02
--- /dev/null
+++ b/keyboards/laptreus/keymaps/default/keymap.c
@@ -0,0 +1,74 @@
1#include QMK_KEYBOARD_H
2
3enum layer_names {
4 _QWERTY = 0,
5 _DVORAK,
6 _LOWER,
7 _RAISE,
8 _LIFT
9};
10
11// Fillers to make layering more clear
12#define _LAYER_ KC_TRNS
13
14// Adding macros to make the keymaps below much easier to read.
15#define CTL_ESC CTL_T(KC_ESC)
16#define CTL_GRV CTL_T(KC_GRV)
17#define ALT_TAB ALT_T(KC_TAB)
18#define SFT_SPC SFT_T(KC_SPC)
19
20// Extended alpha key layers
21#define RSE_J LT(_RAISE, KC_J)
22#define LWR_F LT(_LOWER, KC_F)
23#define RSE_H LT(_RAISE, KC_H)
24#define LWR_U LT(_LOWER, KC_U)
25#define LFT_BK LT(_LIFT, KC_BSPC)
26#define LFT_ENT LT(_LIFT, KC_ENT)
27
28// Macro keys for some apps
29#define SLACKUP LALT(LSFT(KC_UP))
30#define SLACKDN LALT(LSFT(KC_DOWN))
31#define TAB_LFT LGUI(LSFT(KC_LBRC))
32#define TAB_RGT LGUI(LSFT(KC_RBRC))
33#define BWSR_BK LGUI(KC_LBRC)
34#define BWSR_FW LGUI(KC_RBRC)
35#define SCR_LFT HYPR(KC_LEFT)
36#define SCR_RGT HYPR(KC_RGHT)
37#define SCR_FUL HYPR(KC_F)
38
39// Layer toggles
40#define TO_QW TO(_QWERTY)
41#define TO_DV TO(_DVORAK)
42
43const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
44 [_QWERTY] = LAYOUT(
45 KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_BSPC ,
46 KC_ESC , KC_A , KC_S , KC_D , LWR_F , KC_G , KC_H , RSE_J , KC_K , KC_L , KC_SCLN , KC_QUOT ,
47 KC_LSFT , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM , KC_DOT , KC_SLSH , KC_ENT ,
48 KC_HYPR , CTL_GRV , ALT_TAB , KC_LGUI , LFT_BK , SFT_SPC , KC_SPC , LFT_ENT , KC_LEFT , KC_DOWN , KC_UP , KC_RGHT
49 ),
50 [_DVORAK] = LAYOUT(
51 KC_TAB , KC_QUOT , KC_COMM , KC_DOT , KC_P , KC_Y , KC_F , KC_G , KC_C , KC_R , KC_L , KC_BSPC ,
52 KC_ESC , KC_A , KC_O , KC_E , LWR_U , KC_I , KC_D , RSE_H , KC_T , KC_N , KC_S , KC_SLSH ,
53 KC_LSFT , KC_SCLN , KC_Q , KC_J , KC_K , KC_X , KC_B , KC_M , KC_W , KC_V , KC_Z , KC_ENT ,
54 KC_HYPR , CTL_GRV , ALT_TAB , KC_LGUI , LFT_BK , SFT_SPC , KC_SPC , LFT_ENT , KC_LEFT , KC_DOWN , KC_UP , KC_RGHT
55 ),
56 [_LOWER] = LAYOUT(
57 _______ , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_7 , KC_8 , KC_9 , XXXXXXX , _______ ,
58 _______ , XXXXXXX , XXXXXXX , XXXXXXX , _LAYER_ , XXXXXXX , XXXXXXX , KC_4 , KC_5 , KC_6 , XXXXXXX , _______ ,
59 _______ , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_1 , KC_2 , KC_3 , XXXXXXX , _______ ,
60 _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , KC_0 , KC_DOT , _______ , _______
61 ),
62 [_RAISE] = LAYOUT(
63 _______ , KC_LABK , KC_RABK , KC_LCBR , KC_RCBR , KC_EQL , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , _______ ,
64 _______ , KC_LPRN , KC_RPRN , KC_LBRC , KC_RBRC , KC_MINS , XXXXXXX , _LAYER_ , XXXXXXX , XXXXXXX , XXXXXXX , _______ ,
65 _______ , XXXXXXX , XXXXXXX , XXXXXXX , KC_BSLS , KC_SLSH , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , _______ ,
66 _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______
67 ),
68 [_LIFT] = LAYOUT(
69 _______ , BWSR_BK , TAB_LFT , KC_UP , TAB_RGT , BWSR_FW , KC_MUTE , XXXXXXX , SCR_LFT , SCR_FUL , SCR_RGT , _______ ,
70 _______ , XXXXXXX , KC_LEFT , KC_DOWN , KC_RGHT , KC_PGUP , KC_VOLU , SLACKUP , XXXXXXX , XXXXXXX , TO_QW , _______ ,
71 _______ , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_PGDN , KC_VOLD , SLACKDN , XXXXXXX , XXXXXXX , TO_DV , _______ ,
72 _______ , RESET , _______ , _______ , _LAYER_ , KC_BSPC , _______ , KC_LSFT , KC_LGUI , KC_LALT , KC_LCTL , _______
73 )
74};
diff --git a/keyboards/laptreus/keymaps/default/readme.md b/keyboards/laptreus/keymaps/default/readme.md
new file mode 100644
index 000000000..0124ab9a9
--- /dev/null
+++ b/keyboards/laptreus/keymaps/default/readme.md
@@ -0,0 +1,79 @@
1# Default layout
2
3This is the default layout for the Laptreus
4
5## Layout
6
7Some special things:
8
9* Lower/Raise are on the F/J keys. Tap to type the character, hold to activate the layer
10* Enter and Backspace also activate the Lift layer.
11* -- To get repeated backspace, hold BkLft and then press Shift
12
13### Qwerty
14
15 ,-----------------------------------------------------------------------------------.
16 | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
17 |------+------+------+------+------+-------------+------+------+------+------+------|
18 | Esc | A | S | D | Lwr/F| G | H | Rse/J| K | L | ; | " |
19 |------+------+------+------+------+------|------+------+------+------+------+------|
20 | Shift| Z | X | C | V | B | N | M | , | . | / | Enter|
21 |------+------+------+------+------+------+------+------+------+------+------+------|
22 | Hyper|Ctrl/~|AltTab| Cmd | BkLft| Shift| Space|EntLft| Left | Down | Up | Right|
23 `-----------------------------------------------------------------------------------'
24
25### Dvorak
26
27 ,-----------------------------------------------------------------------------------.
28 | Tab | ' | , | . | P | Y | F | G | C | R | L | Bksp |
29 |------+------+------+------+------+-------------+------+------+------+------+------|
30 | Esc | A | O | E | Lwr/U| I | D | Rse/H| T | N | S | / |
31 |------+------+------+------+------+------|------+------+------+------+------+------|
32 | Shift| ; | Q | J | K | X | B | M | W | V | Z | Enter|
33 |------+------+------+------+------+------+------+------+------+------+------+------|
34 | Hyper|Ctrl/~|AltTab| Cmd | BkLft| Shift| Space|EntLft| Left | Down | Up | Right|
35 `-----------------------------------------------------------------------------------'
36
37### Raise
38
39 ,-----------------------------------------------------------------------------------.
40 | | < | > | { | } | | | | | | | |
41 |------+------+------+------+------+-------------+------+------+------+------+------|
42 | | ( | ) | [ | ] | | | | | | | |
43 |------+------+------+------+------+------|------+------+------+------+------+------|
44 | | | | | | | | | | | | |
45 |------+------+------+------+------+------+------+------+------+------+------+------|
46 | | | | | BkLft| Shift| Space|EntLft| | | | |
47 `-----------------------------------------------------------------------------------'
48
49### Lower
50
51 ,-----------------------------------------------------------------------------------.
52 | | | | | | | | 7 | 8 | 9 | | |
53 |------+------+------+------+------+-------------+------+------+------+------+------|
54 | | | | | | | | 4 | 5 | 6 | | |
55 |------+------+------+------+------+------|------+------+------+------+------+------|
56 | | | | | | | | 1 | 2 | 3 | | |
57 |------+------+------+------+------+------+------+------+------+------+------+------|
58 | | | | | BkLft| Shift| Space| 0 | 0 | . | | |
59 `-----------------------------------------------------------------------------------'
60
61### Lift
62
63 ,-----------------------------------------------------------------------------------.
64 | |Hist ←| Tab ←| ↑ | Tab →|Hist →| Mute | |ScrLft|ScrFul|ScrRgt| |
65 |------+------+------+------+------+-------------+------+------+------+------+------|
66 | | | ← | ↓ | → | Pg Up|Vol up|Slk up| | |Qwerty| |
67 |------+------+------+------+------+------|------+------+------+------+------+------|
68 | | | | | | Pg Dn|Vol dn|Slk dn| | |Dvorak| |
69 |------+------+------+------+------+------+------+------+------+------+------+------|
70 | | Reset| | | | Bksp | | Shift| Cmd | Opt | Ctrl | |
71 `-----------------------------------------------------------------------------------'
72
73Special things:
74
75* Hist: Back button in your browser
76* Tab: Move one tab left/right in most mac apps
77* Slk: Go to the previous/next unread conversation in Slack
78* Scr: Make this app fill the left/right side of your monitor (or full screen)
79* Since arrows are on this layer, the command keys are moved to the right side
diff --git a/keyboards/laptreus/keymaps/vosechu/keymap.c b/keyboards/laptreus/keymaps/vosechu/keymap.c
new file mode 100644
index 000000000..8bb08a873
--- /dev/null
+++ b/keyboards/laptreus/keymaps/vosechu/keymap.c
@@ -0,0 +1,36 @@
1#include QMK_KEYBOARD_H
2
3#include "vosechu.h"
4
5const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
6 [DV] = LAYOUT(
7 PAWFIVE , KC_QUOT , KC_COMM , KC_DOT , KC_P , KC_Y , KC_F , KC_G , KC_C , KC_R , KC_L , RESET ,
8 KC_ESC , KC_A , KC_O , KC_E , LWR_U , KC_I , KC_D , RSE_H , KC_T , KC_N , KC_S , XXXXXXX ,
9 XXXXXXX , KC_SCLN , KC_Q , KC_J , KC_K , KC_X , KC_B , KC_M , KC_W , KC_V , KC_Z , KC_ENT ,
10 XXXXXXX , CTL_GRV , ALT_TAB , KC_LGUI , LFT_BK , SFT_SPC , KC_SPC , LFT_ENT , KC_MINS , KC_EQL , KC_SLSH , KC_BSLS
11 ),
12 [QW] = LAYOUT(
13 KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_BSPC ,
14 KC_ESC , KC_A , KC_S , KC_D , LWR_F , KC_G , KC_H , RSE_J , KC_K , KC_L , KC_SCLN , KC_QUOT ,
15 KC_LSFT , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM , KC_DOT , KC_SLSH , KC_ENT ,
16 KC_HYPR , CTL_GRV , ALT_TAB , KC_LGUI , LFT_BK , SFT_SPC , KC_SPC , LFT_ENT , KC_LEFT , KC_DOWN , KC_UP , KC_RGHT
17 ),
18 [LWR] = LAYOUT(
19 _______ , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_7 , KC_8 , KC_9 , XXXXXXX , _______ ,
20 _______ , XXXXXXX , XXXXXXX , XXXXXXX , _LAYER_ , XXXXXXX , XXXXXXX , KC_4 , KC_5 , KC_6 , XXXXXXX , _______ ,
21 _______ , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_1 , KC_2 , KC_3 , XXXXXXX , _______ ,
22 _______ , _______ , _______ , _______ , _______ , _______ , _______ , KC_0 , KC_0 , KC_DOT , _______ , _______
23 ),
24 [RSE] = LAYOUT(
25 _______ , KC_LABK , KC_RABK , KC_LCBR , KC_RCBR , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , _______ ,
26 _______ , KC_LPRN , KC_RPRN , KC_LBRC , KC_RBRC , XXXXXXX , XXXXXXX , _LAYER_ , XXXXXXX , XXXXXXX , XXXXXXX , _______ ,
27 _______ , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , _______ ,
28 _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______
29 ),
30 [LFT] = LAYOUT(
31 _______ , BWSR_BK , TAB_LFT , KC_UP , TAB_RGT , BWSR_FW , KC_MUTE , XXXXXXX , SCR_LFT , SCR_FUL , SCR_RGT , _______ ,
32 _______ , XXXXXXX , KC_LEFT , KC_DOWN , KC_RGHT , KC_PGUP , KC_VOLU , SLACKUP , XXXXXXX , XXXXXXX , TO(QW) , _______ ,
33 _______ , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_PGDN , KC_VOLD , SLACKDN , XXXXXXX , XXXXXXX , TO(DV) , _______ ,
34 _______ , RESET , _______ , _______ , _LAYER_ , KC_BSPC , _______ , KC_LSFT , KC_LGUI , KC_LALT , KC_LCTL , _______
35 )
36};
diff --git a/keyboards/laptreus/keymaps/vosechu/readme.md b/keyboards/laptreus/keymaps/vosechu/readme.md
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/keyboards/laptreus/keymaps/vosechu/readme.md
diff --git a/keyboards/laptreus/laptreus.c b/keyboards/laptreus/laptreus.c
new file mode 100644
index 000000000..2e59ffd62
--- /dev/null
+++ b/keyboards/laptreus/laptreus.c
@@ -0,0 +1,6 @@
1#include "laptreus.h"
2
3void matrix_init_kb() {
4 // auto detect output on init
5 set_output(OUTPUT_AUTO);
6}
diff --git a/keyboards/laptreus/laptreus.h b/keyboards/laptreus/laptreus.h
new file mode 100644
index 000000000..305d41274
--- /dev/null
+++ b/keyboards/laptreus/laptreus.h
@@ -0,0 +1,41 @@
1#ifndef LAPTREUS_H
2#define LAPTREUS_H
3
4#include "quantum.h"
5#include "outputselect.h"
6
7/*
8// This a shortcut to help you visually see your layout.
9// The first section contains all of the arguments
10// The second converts the arguments into a two-dimensional array
11*/
12#define LAYOUT( \
13 A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, \
14 B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, \
15 C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, \
16 D1, D2, D3, D4, D5, D6, D7, D8, D9, D10, D11, D12 \
17) \
18{ \
19 {A2, A3, A4, A5, A6, A7, A8, A9, A10, A11}, \
20 {B2, B3, B4, B5, B6, B7, B8, B9, B10, B11}, \
21 {C2, C3, C4, C5, C6, C7, C8, C9, C10, C11}, \
22 {D2, D3, D4, D5, D6, D7, D8, D9, D10, D11}, \
23 {A1, B1, C1, D1, KC_NO, KC_NO, D12, C12, B12, A12} \
24}
25
26#define LAYOUT_kc( \
27 A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, \
28 B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, \
29 C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, \
30 D1, D2, D3, D4, D5, D6, D7, D8, D9, D10, D11, D12 \
31) \
32{ \
33 LAYOUT( \
34 KC_##A1, KC_##A2, KC_##A3, KC_##A4, KC_##A5, KC_##A6, KC_##A7, KC_##A8, KC_##A9, KC_##A10, KC_##A11, KC_##A12, \
35 KC_##B1, KC_##B2, KC_##B3, KC_##B4, KC_##B5, KC_##B6, KC_##B7, KC_##B8, KC_##B9, KC_##B10, KC_##B11, KC_##B12, \
36 KC_##C1, KC_##C2, KC_##C3, KC_##C4, KC_##C5, KC_##C6, KC_##C7, KC_##C8, KC_##C9, KC_##C10, KC_##C11, KC_##C12, \
37 KC_##D1, KC_##D2, KC_##D3, KC_##D4, KC_##D5, KC_##D6, KC_##D7, KC_##D8, KC_##D9, KC_##D10, KC_##D11, KC_##D12 \
38 ) \
39}
40
41#endif
diff --git a/keyboards/laptreus/readme.md b/keyboards/laptreus/readme.md
new file mode 100644
index 000000000..e27c20604
--- /dev/null
+++ b/keyboards/laptreus/readme.md
@@ -0,0 +1,35 @@
1# Laptreus
2
3TODO: Insert cool photo
4
5Laptreus is a 40% bluetooth keyboard in the style of the Atreus, which is specifically designed to sit atop your laptop keyboard.
6
7Maintainer: [Chuck Lauer Vose](https://github.com/vosechu)
8MCU: Adafruit Feather 32u4 BLE
9Purchase link: GB coming soon
10Case link: GB coming soon
11Case design files: TODO
12
13## Flashing
14
15**NOTE**: Make sure you don't have a second QMK keyboard plugged in when you do this!
16
17[Default layout documentation](https://github.com/qmk/qmk_firmware/tree/master/keyboards/laptreus/keymaps/default)
18
19To compile and flash to the board:
20
21 make laptreus:default:avrdude
22
23To just compile:
24
25 make laptreus:default
26
27Then use QMK toolbox to write the file
28
29## Changelog
30
31v1.2: Mostly working, but JST connector is a little too tight and the reset switch is not connected.
32
33## Build log
34
35TODO
diff --git a/keyboards/laptreus/rules.mk b/keyboards/laptreus/rules.mk
new file mode 100644
index 000000000..d17034507
--- /dev/null
+++ b/keyboards/laptreus/rules.mk
@@ -0,0 +1,67 @@
1
2# MCU name
3#MCU = at90usb1287
4MCU = atmega32u4
5
6# Processor frequency.
7# This will define a symbol, F_CPU, in all source code files equal to the
8# processor frequency in Hz. You can then use this symbol in your source code to
9# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
10# automatically to create a 32-bit value in your source code.
11#
12# This will be an integer division of F_USB below, as it is sourced by
13# F_USB after it has run through any CPU prescalers. Note that this value
14# does not *change* the processor frequency - it should merely be updated to
15# reflect the processor speed set externally so that the code can use accurate
16# software delays.
17F_CPU = 8000000
18
19#
20# LUFA specific
21#
22# Target architecture (see library "Board Types" documentation).
23ARCH = AVR8
24
25# Input clock frequency.
26# This will define a symbol, F_USB, in all source code files equal to the
27# input clock frequency (before any prescaling is performed) in Hz. This value may
28# differ from F_CPU if prescaling is used on the latter, and is required as the
29# raw input clock is fed directly to the PLL sections of the AVR for high speed
30# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
31# at the end, this will be done automatically to create a 32-bit value in your
32# source code.
33#
34# If no clock division is performed on the input clock inside the AVR (via the
35# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
36F_USB = $(F_CPU)
37
38# Bootloader
39# This definition is optional, and if your keyboard supports multiple bootloaders of
40# different sizes, comment this out, and the correct address will be loaded
41# automatically (+60). See bootloader.mk for all options.
42BOOTLOADER = catarina
43
44# Interrupt driven control endpoint task(+60)
45OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
46
47# Build Options
48# change to "no" to disable the options, or define them in the Makefile in
49# the appropriate keymap folder that will get included automatically
50#
51BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
52MOUSEKEY_ENABLE = no # Mouse keys(+4700)
53EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
54CONSOLE_ENABLE = yes # Console for debug(+400)
55COMMAND_ENABLE = yes # Commands for debug and configuration
56NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
57#BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
58#MIDI_ENABLE = no # MIDI controls
59UNICODE_ENABLE = no # Unicode
60KEY_LOCK_ENABLE = no
61TAP_DANCE_ENABLE = no
62
63# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
64SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
65
66BLUETOOTH_ENABLE = no # Legacy bluetooth support
67BLUETOOTH = AdafruitBLE