[Keyboard] Add Janus keyboard (#18367)

Co-authored-by: Ryan <fauxpark@gmail.com>
This commit is contained in:
Steven Karrmann 2022-09-24 11:35:37 -04:00 committed by GitHub
parent 45cc7f1e94
commit 3072feb8ed
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 200 additions and 0 deletions

16
keyboards/janus/config.h Normal file
View file

@ -0,0 +1,16 @@
// Copyright 2022 Steven Karrmann (@skarrmann)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include "config_common.h"
/* Serial communication */
#define SERIAL_USART_FULL_DUPLEX
#define SERIAL_USART_TX_PIN GP0
#define SERIAL_USART_RX_PIN GP1
/* Double tap reset button to enter bootloader */
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP17
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U

View file

@ -0,0 +1,9 @@
// Copyright 2022 Steven Karrmann (@skarrmann)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include_next <halconf.h>
#undef HAL_USE_SIO
#define HAL_USE_SIO TRUE

75
keyboards/janus/info.json Normal file
View file

@ -0,0 +1,75 @@
{
"keyboard_name": "Janus",
"manufacturer": "Steven Karrmann",
"url": "https://github.com/skarrmann/janus",
"maintainer": "skarrmann",
"processor": "RP2040",
"bootloader": "rp2040",
"diode_direction": "COL2ROW",
"matrix_pins": {
"cols": ["GP6", "GP7", "GP2", "GP4", "GP3"],
"rows": ["GP26", "GP27", "GP28", "GP29"]
},
"indicators": {
"num_lock": "GP17",
"caps_lock": "GP16",
"scroll_lock": "GP25",
"on_state": 0
},
"features": {
"bootmagic": true,
"command": false,
"console": false,
"extrakey": true,
"mousekey": true,
"nkro": true
},
"split": {
"enabled": true
},
"layouts": {
"LAYOUT_split_3x5_2": {
"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": [4, 4], "x": 6, "y": 0 },
{ "matrix": [4, 3], "x": 7, "y": 0 },
{ "matrix": [4, 2], "x": 8, "y": 0 },
{ "matrix": [4, 1], "x": 9, "y": 0 },
{ "matrix": [4, 0], "x": 10, "y": 0 },
{ "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": [5, 4], "x": 6, "y": 1 },
{ "matrix": [5, 3], "x": 7, "y": 1 },
{ "matrix": [5, 2], "x": 8, "y": 1 },
{ "matrix": [5, 1], "x": 9, "y": 1 },
{ "matrix": [5, 0], "x": 10, "y": 1 },
{ "matrix": [2, 0], "x": 0, "y": 2 },
{ "matrix": [2, 1], "x": 1, "y": 2 },
{ "matrix": [2, 2], "x": 2, "y": 2 },
{ "matrix": [2, 3], "x": 3, "y": 2 },
{ "matrix": [2, 4], "x": 4, "y": 2 },
{ "matrix": [6, 4], "x": 6, "y": 2 },
{ "matrix": [6, 3], "x": 7, "y": 2 },
{ "matrix": [6, 2], "x": 8, "y": 2 },
{ "matrix": [6, 1], "x": 9, "y": 2 },
{ "matrix": [6, 0], "x": 10, "y": 2 },
{ "matrix": [3, 3], "x": 3, "y": 3 },
{ "matrix": [3, 4], "x": 4, "y": 3 },
{ "matrix": [7, 4], "x": 6, "y": 3 },
{ "matrix": [7, 3], "x": 7, "y": 3 }
]
}
},
"usb": {
"device_version": "1.0.0",
"pid": "0x9A25",
"vid": "0xFEED"
}
}

View file

@ -0,0 +1,50 @@
// Copyright 2022 Steven Karrmann (@skarrmann)
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
enum layer_names {
_BASE,
_SYMBOL,
_NAVIGATION,
_FUNCTION
};
#define MO_SYM MO(_SYMBOL)
#define MO_NAV MO(_NAVIGATION)
#define MO_FUN MO(_FUNCTION)
#define OS_LCTL OSM(MOD_LCTL)
#define OS_LSFT OSM(MOD_LSFT)
#define OS_LALT OSM(MOD_LALT)
#define OS_LGUI OSM(MOD_LGUI)
#define OS_RCTL OSM(MOD_RCTL)
#define OS_RSFT OSM(MOD_RSFT)
#define OS_RALT OSM(MOD_RALT)
#define OS_RGUI OSM(MOD_RGUI)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT_split_3x5_2(
KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,
KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_QUOT,
KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH,
MO_NAV , KC_LSFT, KC_SPC , MO_SYM
),
[_SYMBOL] = LAYOUT_split_3x5_2(
KC_SCLN, KC_LBRC, KC_RBRC, KC_5 , XXXXXXX, XXXXXXX, KC_6 , KC_MINS, KC_EQL , KC_GRV ,
KC_1 , KC_2 , KC_3 , KC_4 , KC_BSLS, XXXXXXX, KC_7 , KC_8 , KC_9 , KC_0 ,
OS_LGUI, OS_LALT, OS_LSFT, OS_LCTL, XXXXXXX, XXXXXXX, OS_RCTL, OS_RSFT, OS_RALT, OS_RGUI,
MO_FUN , _______, _______, _______
),
[_NAVIGATION] = LAYOUT_split_3x5_2(
KC_PSCR, KC_INS , KC_APP , KC_DEL , XXXXXXX, XXXXXXX, KC_HOME, KC_PGDN, KC_PGUP, KC_END ,
KC_ESC , KC_TAB , KC_ENT , KC_BSPC, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT,
OS_LGUI, OS_LALT, OS_LSFT, OS_LCTL, XXXXXXX, XXXXXXX, OS_RCTL, OS_RSFT, OS_RALT, OS_RGUI,
_______, _______, _______, MO_FUN
),
[_FUNCTION] = LAYOUT_split_3x5_2(
KC_F1 , KC_F2 , KC_F3 , KC_F4 , QK_BOOT, KC_SLCK, KC_F9 , KC_F10 , KC_F11 , KC_F12 ,
KC_F5 , KC_F6 , KC_F7 , KC_F8 , XXXXXXX, KC_CLCK, KC_MUTE, KC_VOLD, KC_VOLU, KC_PAUS,
OS_LGUI, OS_LALT, OS_LSFT, OS_LCTL, XXXXXXX, KC_NLCK, OS_RCTL, OS_RSFT, OS_RALT, OS_RGUI,
_______, _______, _______, _______
),
};

View file

@ -0,0 +1,13 @@
# Janus Default Keymap
![Janus default keymap image](https://i.imgur.com/7FevUIZh.png)
The default Janus keymap is simple and organized. The only QMK special features used are layers and one shot keys for modifiers.
It is inspired by [Callum's keymap](https://github.com/qmk/qmk_firmware/tree/master/users/callum), with a few differences:
* Modifier keys are moved to the bottom row on every layer, and are mirrored on both sides.
* Symbol layer only contains non-shifted symbol keys.
* General differences in key positions.
For 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.

View file

@ -0,0 +1,9 @@
// Copyright 2022 Steven Karrmann (@skarrmann)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include_next <mcuconf.h>
#undef RP_SIO_USE_UART0
#define RP_SIO_USE_UART0 TRUE

27
keyboards/janus/readme.md Normal file
View file

@ -0,0 +1,27 @@
# Janus
![Janus](https://i.imgur.com/7Lzhafeh.jpg)
A 34-key split ortholinear keyboard, powered by two Seeed XIAO RP2040.
* Keyboard Maintainer: [Steven Karrmann](https://github.com/skarrmann)
* Hardware Supported: Janus PCBs, Seeed XIAO RP2040
* Hardware Availability: [Janus GitHub repository](https://github.com/skarrmann/janus)
Make example for this keyboard (after setting up your build environment):
make janus:default
Flashing example for this keyboard:
make janus: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 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.
* **Physical reset button**: Double tap the reset button on the XIAO RP2040.
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available.

1
keyboards/janus/rules.mk Normal file
View file

@ -0,0 +1 @@
SERIAL_DRIVER = usart