summaryrefslogtreecommitdiff
path: root/keyboards/janus
diff options
context:
space:
mode:
authorSteven Karrmann <skarrmann@gmail.com>2022-09-24 11:35:37 -0400
committerGitHub <noreply@github.com>2022-09-24 08:35:37 -0700
commit3072feb8ed79c861a0066ec6721669dec6f6309f (patch)
tree6a38d84ca22d68425b0e37238183bd506095e67e /keyboards/janus
parent45cc7f1e94e2eeee2a25195fcb7719d08570272d (diff)
[Keyboard] Add Janus keyboard (#18367)
Co-authored-by: Ryan <fauxpark@gmail.com>
Diffstat (limited to 'keyboards/janus')
-rw-r--r--keyboards/janus/config.h16
-rw-r--r--keyboards/janus/halconf.h9
-rw-r--r--keyboards/janus/info.json75
-rw-r--r--keyboards/janus/keymaps/default/keymap.c50
-rw-r--r--keyboards/janus/keymaps/default/readme.md13
-rw-r--r--keyboards/janus/mcuconf.h9
-rw-r--r--keyboards/janus/readme.md27
-rw-r--r--keyboards/janus/rules.mk1
8 files changed, 200 insertions, 0 deletions
diff --git a/keyboards/janus/config.h b/keyboards/janus/config.h
new file mode 100644
index 0000000000..8124f0db57
--- /dev/null
+++ b/keyboards/janus/config.h
@@ -0,0 +1,16 @@
1// Copyright 2022 Steven Karrmann (@skarrmann)
2// SPDX-License-Identifier: GPL-2.0-or-later
3
4#pragma once
5
6#include "config_common.h"
7
8/* Serial communication */
9#define SERIAL_USART_FULL_DUPLEX
10#define SERIAL_USART_TX_PIN GP0
11#define SERIAL_USART_RX_PIN GP1
12
13/* Double tap reset button to enter bootloader */
14#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
15#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP17
16#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U \ No newline at end of file
diff --git a/keyboards/janus/halconf.h b/keyboards/janus/halconf.h
new file mode 100644
index 0000000000..550a6e0abf
--- /dev/null
+++ b/keyboards/janus/halconf.h
@@ -0,0 +1,9 @@
1// Copyright 2022 Steven Karrmann (@skarrmann)
2// SPDX-License-Identifier: GPL-2.0-or-later
3
4#pragma once
5
6#include_next <halconf.h>
7
8#undef HAL_USE_SIO
9#define HAL_USE_SIO TRUE \ No newline at end of file
diff --git a/keyboards/janus/info.json b/keyboards/janus/info.json
new file mode 100644
index 0000000000..6169dc6ed5
--- /dev/null
+++ b/keyboards/janus/info.json
@@ -0,0 +1,75 @@
1{
2 "keyboard_name": "Janus",
3 "manufacturer": "Steven Karrmann",
4 "url": "https://github.com/skarrmann/janus",
5 "maintainer": "skarrmann",
6 "processor": "RP2040",
7 "bootloader": "rp2040",
8 "diode_direction": "COL2ROW",
9 "matrix_pins": {
10 "cols": ["GP6", "GP7", "GP2", "GP4", "GP3"],
11 "rows": ["GP26", "GP27", "GP28", "GP29"]
12 },
13 "indicators": {
14 "num_lock": "GP17",
15 "caps_lock": "GP16",
16 "scroll_lock": "GP25",
17 "on_state": 0
18 },
19 "features": {
20 "bootmagic": true,
21 "command": false,
22 "console": false,
23 "extrakey": true,
24 "mousekey": true,
25 "nkro": true
26 },
27 "split": {
28 "enabled": true
29 },
30 "layouts": {
31 "LAYOUT_split_3x5_2": {
32 "layout": [
33 { "matrix": [0, 0], "x": 0, "y": 0 },
34 { "matrix": [0, 1], "x": 1, "y": 0 },
35 { "matrix": [0, 2], "x": 2, "y": 0 },
36 { "matrix": [0, 3], "x": 3, "y": 0 },
37 { "matrix": [0, 4], "x": 4, "y": 0 },
38 { "matrix": [4, 4], "x": 6, "y": 0 },
39 { "matrix": [4, 3], "x": 7, "y": 0 },
40 { "matrix": [4, 2], "x": 8, "y": 0 },
41 { "matrix": [4, 1], "x": 9, "y": 0 },
42 { "matrix": [4, 0], "x": 10, "y": 0 },
43 { "matrix": [1, 0], "x": 0, "y": 1 },
44 { "matrix": [1, 1], "x": 1, "y": 1 },
45 { "matrix": [1, 2], "x": 2, "y": 1 },
46 { "matrix": [1, 3], "x": 3, "y": 1 },
47 { "matrix": [1, 4], "x": 4, "y": 1 },
48 { "matrix": [5, 4], "x": 6, "y": 1 },
49 { "matrix": [5, 3], "x": 7, "y": 1 },
50 { "matrix": [5, 2], "x": 8, "y": 1 },
51 { "matrix": [5, 1], "x": 9, "y": 1 },
52 { "matrix": [5, 0], "x": 10, "y": 1 },
53 { "matrix": [2, 0], "x": 0, "y": 2 },
54 { "matrix": [2, 1], "x": 1, "y": 2 },
55 { "matrix": [2, 2], "x": 2, "y": 2 },
56 { "matrix": [2, 3], "x": 3, "y": 2 },
57 { "matrix": [2, 4], "x": 4, "y": 2 },
58 { "matrix": [6, 4], "x": 6, "y": 2 },
59 { "matrix": [6, 3], "x": 7, "y": 2 },
60 { "matrix": [6, 2], "x": 8, "y": 2 },
61 { "matrix": [6, 1], "x": 9, "y": 2 },
62 { "matrix": [6, 0], "x": 10, "y": 2 },
63 { "matrix": [3, 3], "x": 3, "y": 3 },
64 { "matrix": [3, 4], "x": 4, "y": 3 },
65 { "matrix": [7, 4], "x": 6, "y": 3 },
66 { "matrix": [7, 3], "x": 7, "y": 3 }
67 ]
68 }
69 },
70 "usb": {
71 "device_version": "1.0.0",
72 "pid": "0x9A25",
73 "vid": "0xFEED"
74 }
75} \ No newline at end of file
diff --git a/keyboards/janus/keymaps/default/keymap.c b/keyboards/janus/keymaps/default/keymap.c
new file mode 100644
index 0000000000..440645a15d
--- /dev/null
+++ b/keyboards/janus/keymaps/default/keymap.c
@@ -0,0 +1,50 @@
1// Copyright 2022 Steven Karrmann (@skarrmann)
2// SPDX-License-Identifier: GPL-2.0-or-later
3
4#include QMK_KEYBOARD_H
5
6enum layer_names {
7 _BASE,
8 _SYMBOL,
9 _NAVIGATION,
10 _FUNCTION
11};
12
13#define MO_SYM MO(_SYMBOL)
14#define MO_NAV MO(_NAVIGATION)
15#define MO_FUN MO(_FUNCTION)
16#define OS_LCTL OSM(MOD_LCTL)
17#define OS_LSFT OSM(MOD_LSFT)
18#define OS_LALT OSM(MOD_LALT)
19#define OS_LGUI OSM(MOD_LGUI)
20#define OS_RCTL OSM(MOD_RCTL)
21#define OS_RSFT OSM(MOD_RSFT)
22#define OS_RALT OSM(MOD_RALT)
23#define OS_RGUI OSM(MOD_RGUI)
24
25const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
26 [_BASE] = LAYOUT_split_3x5_2(
27 KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,
28 KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_QUOT,
29 KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH,
30 MO_NAV , KC_LSFT, KC_SPC , MO_SYM
31 ),
32 [_SYMBOL] = LAYOUT_split_3x5_2(
33 KC_SCLN, KC_LBRC, KC_RBRC, KC_5 , XXXXXXX, XXXXXXX, KC_6 , KC_MINS, KC_EQL , KC_GRV ,
34 KC_1 , KC_2 , KC_3 , KC_4 , KC_BSLS, XXXXXXX, KC_7 , KC_8 , KC_9 , KC_0 ,
35 OS_LGUI, OS_LALT, OS_LSFT, OS_LCTL, XXXXXXX, XXXXXXX, OS_RCTL, OS_RSFT, OS_RALT, OS_RGUI,
36 MO_FUN , _______, _______, _______
37 ),
38 [_NAVIGATION] = LAYOUT_split_3x5_2(
39 KC_PSCR, KC_INS , KC_APP , KC_DEL , XXXXXXX, XXXXXXX, KC_HOME, KC_PGDN, KC_PGUP, KC_END ,
40 KC_ESC , KC_TAB , KC_ENT , KC_BSPC, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT,
41 OS_LGUI, OS_LALT, OS_LSFT, OS_LCTL, XXXXXXX, XXXXXXX, OS_RCTL, OS_RSFT, OS_RALT, OS_RGUI,
42 _______, _______, _______, MO_FUN
43 ),
44 [_FUNCTION] = LAYOUT_split_3x5_2(
45 KC_F1 , KC_F2 , KC_F3 , KC_F4 , QK_BOOT, KC_SLCK, KC_F9 , KC_F10 , KC_F11 , KC_F12 ,
46 KC_F5 , KC_F6 , KC_F7 , KC_F8 , XXXXXXX, KC_CLCK, KC_MUTE, KC_VOLD, KC_VOLU, KC_PAUS,
47 OS_LGUI, OS_LALT, OS_LSFT, OS_LCTL, XXXXXXX, KC_NLCK, OS_RCTL, OS_RSFT, OS_RALT, OS_RGUI,
48 _______, _______, _______, _______
49 ),
50}; \ No newline at end of file
diff --git a/keyboards/janus/keymaps/default/readme.md b/keyboards/janus/keymaps/default/readme.md
new file mode 100644
index 0000000000..dc7534e317
--- /dev/null
+++ b/keyboards/janus/keymaps/default/readme.md
@@ -0,0 +1,13 @@
1# Janus Default Keymap
2
3![Janus default keymap image](https://i.imgur.com/7FevUIZh.png)
4
5The default Janus keymap is simple and organized. The only QMK special features used are layers and one shot keys for modifiers.
6
7It is inspired by [Callum's keymap](https://github.com/qmk/qmk_firmware/tree/master/users/callum), with a few differences:
8
9* Modifier keys are moved to the bottom row on every layer, and are mirrored on both sides.
10* Symbol layer only contains non-shifted symbol keys.
11* General differences in key positions.
12
13For simplicity's sake, the keymap uses QMK's native one shot key implementation. There are other excellent one shot implementations out there, including Callum's in the aforementioned keymap. \ No newline at end of file
diff --git a/keyboards/janus/mcuconf.h b/keyboards/janus/mcuconf.h
new file mode 100644
index 0000000000..c41253d4fb
--- /dev/null
+++ b/keyboards/janus/mcuconf.h
@@ -0,0 +1,9 @@
1// Copyright 2022 Steven Karrmann (@skarrmann)
2// SPDX-License-Identifier: GPL-2.0-or-later
3
4#pragma once
5
6#include_next <mcuconf.h>
7
8#undef RP_SIO_USE_UART0
9#define RP_SIO_USE_UART0 TRUE \ No newline at end of file
diff --git a/keyboards/janus/readme.md b/keyboards/janus/readme.md
new file mode 100644
index 0000000000..aa9e65cdc4
--- /dev/null
+++ b/keyboards/janus/readme.md
@@ -0,0 +1,27 @@
1# Janus
2
3![Janus](https://i.imgur.com/7Lzhafeh.jpg)
4
5A 34-key split ortholinear keyboard, powered by two Seeed XIAO RP2040.
6
7* Keyboard Maintainer: [Steven Karrmann](https://github.com/skarrmann)
8* Hardware Supported: Janus PCBs, Seeed XIAO RP2040
9* Hardware Availability: [Janus GitHub repository](https://github.com/skarrmann/janus)
10
11Make example for this keyboard (after setting up your build environment):
12
13 make janus:default
14
15Flashing example for this keyboard:
16
17 make janus:default:flash
18
19See 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).
20
21## Bootloader
22
23Enter the bootloader in 3 ways:
24
25* **Bootmagic reset**: Hold down the top left key on the left half, or top right key on the right half, and then plug in the USB cable on that keyboard half.
26* **Physical reset button**: Double tap the reset button on the XIAO RP2040.
27* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available.
diff --git a/keyboards/janus/rules.mk b/keyboards/janus/rules.mk
new file mode 100644
index 0000000000..59b74ac86b
--- /dev/null
+++ b/keyboards/janus/rules.mk
@@ -0,0 +1 @@
SERIAL_DRIVER = usart \ No newline at end of file