Compare commits

..

10 Commits

Author SHA1 Message Date
82b9c99b59
sofle own keymap 2023-10-23 15:34:25 +02:00
Nick Brassel
0e6d47e1e4
Fixup symbol sizing listing. (#22307) 2023-10-21 21:31:23 +11:00
Nick Brassel
f6c70c40af
Allow for disabling of parallel processing of qmk find and qmk mass-compile. (#22160)
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
2023-10-17 09:43:50 +11:00
Nick Brassel
81a3aa025c
Fix typo in keychron v6 encoder map enable (#22272) 2023-10-14 23:10:55 +11:00
jukaie
23a8f7f03b
[Keyboard] jukaie/jk01 (#20573)
* ADD Keyboard

* Resolved requested changes

* update keymap.c file

* resolved requested changes

* updated info.json file

* Updated requested changes

* Delete JK01.h file

* Resolved requested changes

* Delete readme.md

* add rules.mk to default folder

* Upload default/keymap.c

* Add via/keymap.c

* Updated info.Json file

* Change VID in info.json

* Resolved requested changes

* Resolved requested changes.

* Resolved requested changes

* Updated changes

---------

Co-authored-by: gksygithub <gskyGit@gsky.com.tw>
2023-10-14 00:03:29 -07:00
MakotoKurauchi
a46c7abd01
Enable encoder map on navpad1.0 (#22266) 2023-10-13 21:30:25 -07:00
Sắn
62ff02a101
[Keyboard] Add Okayu (#22077)
Co-authored-by: jack <0x6a73@protonmail.com>
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2023-10-13 01:53:12 -06:00
Duncan Sutherland
032b039d0b
amend alice* community_layouts in keyboards (#21846)
* add alice* to keyboards

* add seigaiha

* additions

* Update info.json

* revert wanderland

* add tgr/alice

* add matrix diagram.md
2023-10-13 00:07:16 -07:00
lendunistus
0477160109
[Keyboard] RPNeko65 by lendunistus (#21747)
* initialise rpneko65, info.json

* force NKRO

* define WS2812 stuff

and capitalise RPNeko65

* use RGBlight, add ANSI to keymap.c

also remove _ADC suffixes from pins

* basic readme

plus making it so the info.json RGB values are actually recognised as integers

* update repository URL

* fix info.json formatting

* caps lock LED implementation

"borrowed" from waffling60

* put RGBLIGHT_ENABLE in json

also remove "pin" from the rgblight option

* add actually correct keymaps

also reformat info.json

* move to designer folder, add image to README

* move keyboard to separate revision folder

and remove erroneous tag from config.h

* remove brightness/hue/saturation steps

* change device version to 1.0

* move quantum.h include to top

* actually, let's try a new image

I also forgot to save the info.json file beforehand
oops

* Remove comma in info.json

* Community layouts in info.json

* Delete rpneko65/readme.md

* Apply suggested changes to readme

* Suggested code changes

* Suggested imgur link

* rename code file

this was the issue all along
sigh

* Correct layer matching this time

* Move Enter in info.json

* README/info.json change

* Another batch of suggestions
2023-10-12 14:56:01 -07:00
jonylee@hfd
e22cb99bc4
[Keyboard] Inland V83P (#21725)
* [Keyboard]add v83p keyboard.

* Update keymap.c

* Update keyboards/inland/v83p/keymaps/via/keymap.c

* Update keyboards/inland/v83p/keymaps/default/keymap.c

* Update keyboards/inland/v83p/config.h

* Update keyboards/inland/v83p/info.json

* Update info.json

* Update keymap.c

* Update keyboards/inland/v83p/mcuconf.h

* Update keyboards/inland/v83p/halconf.h

* Update keyboards/inland/v83p/info.json

* Update keyboards/inland/v83p/v83p.c

* Update keymap.c

replace the tabs with spaces

* Update keymap.c

replace the tabs with spaces

* Update keyboards/inland/v83p/info.json
2023-10-12 14:35:39 -07:00
75 changed files with 4457 additions and 41 deletions

View File

@ -495,10 +495,10 @@ check-size: top-symbols
top-symbols: build top-symbols: build
echo "###########################################" echo "###########################################"
echo "# Highest flash usage:" echo "# Highest flash usage:"
$(NM) -Crtd --size-sort $(BUILD_DIR)/$(TARGET).elf | grep -i ' [t] ' | head -n$(NUM_TOP_SYMBOLS) | sed -e 's#^0000000# #g' -e 's#^000000# #g' -e 's#^00000# #g' -e 's#^0000# #g' -e 's#^000# #g' -e 's#^00# #g' -e 's#^0# #g' $(NM) -Crtd --size-sort $(BUILD_DIR)/$(TARGET).elf | grep ' [RrTt] ' | head -n$(NUM_TOP_SYMBOLS) | sed -e 's#^0000000# #g' -e 's#^000000# #g' -e 's#^00000# #g' -e 's#^0000# #g' -e 's#^000# #g' -e 's#^00# #g' -e 's#^0# #g'
echo "###########################################" echo "###########################################"
echo "# Highest RAM usage:" echo "# Highest RAM usage:"
$(NM) -Crtd --size-sort $(BUILD_DIR)/$(TARGET).elf | grep -i ' [dbv] ' | head -n$(NUM_TOP_SYMBOLS) | sed -e 's#^0000000# #g' -e 's#^000000# #g' -e 's#^00000# #g' -e 's#^0000# #g' -e 's#^000# #g' -e 's#^00# #g' -e 's#^0# #g' $(NM) -Crtd --size-sort $(BUILD_DIR)/$(TARGET).elf | grep ' [BbCDdGgSs] ' | head -n$(NUM_TOP_SYMBOLS) | sed -e 's#^0000000# #g' -e 's#^000000# #g' -e 's#^00000# #g' -e 's#^0000# #g' -e 's#^000# #g' -e 's#^00# #g' -e 's#^0# #g'
echo "###########################################" echo "###########################################"
endif endif

View File

@ -0,0 +1,36 @@
// Copyright 2023 jonylee@hfd (@jonylee1986)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define ENCODER_DEFAULT_POS 0x3
/* DIP switch */
#define DIP_SWITCH_PINS \
{ C11 }
/* I2C Config for LED Driver */
#define DRIVER_COUNT 2
#define DRIVER_ADDR_1 0b1110100
#define DRIVER_ADDR_2 0b1110111
#define I2C1_SDA_PIN B7
#define I2C1_SCL_PIN B6
#define I2C1_SCL_PAL_MODE 4
#define I2C1_OPMODE OPMODE_I2C
#define I2C1_CLOCK_SPEED 400000
#define RGB_MATRIX_LED_COUNT 92
#define RGB_DISABLE_WHEN_USB_SUSPENDED
/* SPI Config for spi flash*/
#define SPI_DRIVER SPIDQ
#define SPI_SCK_PIN B3
#define SPI_MOSI_PIN B5
#define SPI_MISO_PIN B4
#define SPI_MOSI_PAL_MODE 5
#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN C12
#define WEAR_LEVELING_BACKING_SIZE (4 * 1024)
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
#define RGB_MATRIX_KEYPRESSES
#define RGB_MATRIX_KEYRELEASES

View File

@ -0,0 +1,11 @@
// Copyright 2023 jonylee@hfd (@jonylee1986)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define HAL_USE_I2C TRUE
#define HAL_USE_SPI TRUE
#define SPI_USE_WAIT TRUE
#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
#include_next <halconf.h>

View File

@ -0,0 +1,253 @@
{
"manufacturer": "Inland",
"keyboard_name": "V83P",
"maintainer": "jonylee@hfd",
"processor": "WB32FQ95",
"bootloader": "wb32-dfu",
"usb": {
"vid": "0xFFFE",
"pid": "0x001B",
"device_version": "1.0.3",
"force_nkro": true,
"suspend_wakeup_delay": 1000
},
"diode_direction": "ROW2COL",
"features": {
"bootmagic": true,
"command": false,
"console": false,
"extrakey": true,
"mousekey": true,
"nkro": true,
"rgb_matrix": true,
"encoder": true,
"dip_switch":true
},
"matrix_pins": {
"cols": ["C1","C2","C3","A0","A1","A2","A3","A4","A5","A6","A7","C4","C5","B0","B1","B2"],
"rows": ["B15", "C6", "C7", "C8", "C9", "B14"]
},
"encoder": {
"rotary": [
{ "pin_a": "A8", "pin_b": "B13" }
]
},
"rgb_matrix": {
"driver": "ckled2001",
"max_brightness": 180,
"animations": {
"solid_color": true,
"breathing": true,
"cycle_all": true,
"cycle_left_right": true,
"cycle_up_down": true,
"cycle_out_in": true,
"cycle_out_in_dual": true,
"rainbow_moving_chevron": true,
"cycle_pinwheel": true,
"cycle_spiral": true,
"dual_beacon": true,
"rainbow_beacon": true,
"raindrops": true,
"typing_heatmap": true,
"solid_reactive_simple": true,
"solid_reactive": true,
"multisplash": true
},
"layout": [
{ "flags": 4, "matrix": [0,0], "x": 0, "y": 0 },
{ "flags": 4, "matrix": [0,1], "x": 14, "y": 0 },
{ "flags": 4, "matrix": [0,2], "x": 29, "y": 0 },
{ "flags": 4, "matrix": [0,3], "x": 44, "y": 0 },
{ "flags": 4, "matrix": [0,4], "x": 59, "y": 0 },
{ "flags": 4, "matrix": [0,5], "x": 74, "y": 0 },
{ "flags": 4, "matrix": [0,6], "x": 89, "y": 0 },
{ "flags": 4, "matrix": [0,7], "x": 104, "y": 0 },
{ "flags": 4, "matrix": [0,8], "x": 119, "y": 0 },
{ "flags": 4, "matrix": [0,9], "x": 134, "y": 0 },
{ "flags": 4, "matrix": [0,10], "x": 149, "y": 0 },
{ "flags": 4, "matrix": [0,11], "x": 164, "y": 0 },
{ "flags": 4, "matrix": [0,12], "x": 179, "y": 0 },
{ "flags": 4, "matrix": [0,13], "x": 194, "y": 0 },
{ "flags": 4, "matrix": [1,0], "x": 0, "y": 13},
{ "flags": 4, "matrix": [1,1], "x": 14, "y": 13},
{ "flags": 4, "matrix": [1,2], "x": 28, "y": 13},
{ "flags": 4, "matrix": [1,3], "x": 42, "y": 13},
{ "flags": 4, "matrix": [1,4], "x": 56, "y": 13},
{ "flags": 4, "matrix": [1,5], "x": 70, "y": 13},
{ "flags": 4, "matrix": [1,6], "x": 84, "y": 13},
{ "flags": 4, "matrix": [1,7], "x": 98, "y": 13},
{ "flags": 4, "matrix": [1,8], "x": 112, "y": 13},
{ "flags": 4, "matrix": [1,9], "x": 126, "y": 13},
{ "flags": 4, "matrix": [1,10], "x": 140, "y": 13},
{ "flags": 4, "matrix": [1,11], "x": 154, "y": 13},
{ "flags": 4, "matrix": [1,12], "x": 168, "y": 13},
{ "flags": 4, "matrix": [1,13], "x": 182, "y": 13},
{ "flags": 4, "matrix": [1,15], "x": 224, "y": 13},
{ "flags": 4, "matrix": [2,0], "x": 0, "y": 26},
{ "flags": 4, "matrix": [2,1], "x": 14, "y": 26},
{ "flags": 4, "matrix": [2,2], "x": 28, "y": 26},
{ "flags": 4, "matrix": [2,3], "x": 42, "y": 26},
{ "flags": 4, "matrix": [2,4], "x": 56, "y": 26},
{ "flags": 4, "matrix": [2,5], "x": 70, "y": 26},
{ "flags": 4, "matrix": [2,6], "x": 84, "y": 26},
{ "flags": 4, "matrix": [2,7], "x": 98, "y": 26},
{ "flags": 4, "matrix": [2,8], "x": 112, "y": 26},
{ "flags": 4, "matrix": [2,9], "x": 126, "y": 26},
{ "flags": 4, "matrix": [2,10], "x": 140, "y": 26},
{ "flags": 4, "matrix": [2,11], "x": 154, "y": 26},
{ "flags": 4, "matrix": [2,12], "x": 168, "y": 26},
{ "flags": 4, "matrix": [2,13], "x": 182, "y": 26},
{ "flags": 4, "matrix": [2,15], "x": 224, "y": 26},
{ "flags": 1, "matrix": [3,0], "x": 0, "y": 38},
{ "flags": 4, "matrix": [3,1], "x": 28, "y": 38},
{ "flags": 4, "matrix": [3,2], "x": 42, "y": 38},
{ "flags": 4, "matrix": [3,3], "x": 56, "y": 38},
{ "flags": 4, "matrix": [3,4], "x": 70, "y": 38},
{ "flags": 4, "matrix": [3,5], "x": 84, "y": 38},
{ "flags": 4, "matrix": [3,6], "x": 98, "y": 38},
{ "flags": 4, "matrix": [3,7], "x": 112, "y": 38},
{ "flags": 4, "matrix": [3,8], "x": 126, "y": 38},
{ "flags": 4, "matrix": [3,9], "x": 140, "y": 38},
{ "flags": 4, "matrix": [3,10], "x": 154, "y": 38},
{ "flags": 4, "matrix": [3,11], "x": 168, "y": 38},
{ "flags": 1, "matrix": [3,13], "x": 182, "y": 38},
{ "flags": 4, "matrix": [3,15], "x": 224, "y": 38},
{ "flags": 1, "matrix": [4,0], "x": 0, "y": 51},
{ "flags": 4, "matrix": [4,1], "x": 18, "y": 51},
{ "flags": 4, "matrix": [4,2], "x": 37, "y": 51},
{ "flags": 4, "matrix": [4,3], "x": 56, "y": 51},
{ "flags": 4, "matrix": [4,4], "x": 74, "y": 51},
{ "flags": 4, "matrix": [4,5], "x": 93, "y": 51},
{ "flags": 4, "matrix": [4,6], "x": 112, "y": 51},
{ "flags": 4, "matrix": [4,7], "x": 130, "y": 51},
{ "flags": 4, "matrix": [4,8], "x": 149, "y": 51},
{ "flags": 4, "matrix": [4,9], "x": 168, "y": 51},
{ "flags": 4, "matrix": [4,10], "x": 186, "y": 51},
{ "flags": 1, "matrix": [4,13], "x": 200, "y": 51},
{ "flags": 1, "matrix": [4,14], "x": 214, "y": 51},
{ "flags": 1, "matrix": [4,15], "x": 224, "y": 51},
{ "flags": 1, "matrix": [5,0], "x": 0, "y": 64},
{ "flags": 1, "matrix": [5,1], "x": 18, "y": 64},
{ "flags": 1, "matrix": [5,2], "x": 37, "y": 64},
{ "flags": 4, "matrix": [5,5], "x": 92, "y": 64},
{ "flags": 1, "matrix": [5,9], "x": 140, "y": 64},
{ "flags": 1, "matrix": [5,10], "x": 154, "y": 64},
{ "flags": 1, "matrix": [5,11], "x": 168, "y": 64},
{ "flags": 1, "matrix": [5,13], "x": 196, "y": 64},
{ "flags": 1, "matrix": [5,14], "x": 210, "y": 64},
{ "flags": 1, "matrix": [5,15], "x": 224, "y": 64},
{ "flags": 2, "x": 0, "y": 0 },
{ "flags": 2, "x": 0, "y": 16},
{ "flags": 2, "x": 0, "y": 32},
{ "flags": 2, "x": 0, "y": 48},
{ "flags": 2, "x": 0, "y": 64},
{ "flags": 2, "x": 224, "y": 0 },
{ "flags": 2, "x": 224, "y": 16},
{ "flags": 2, "x": 224, "y": 32},
{ "flags": 2, "x": 224, "y": 48},
{ "flags": 2, "x": 224, "y": 64}
]
},
"layouts": {
"LAYOUT_ansi": {
"layout": [
{ "matrix": [0,0], "x": 0, "y": 0 },
{ "matrix": [0,1], "x": 1.25, "y": 0 },
{ "matrix": [0,2], "x": 2.25, "y": 0 },
{ "matrix": [0,3], "x": 3.25, "y": 0 },
{ "matrix": [0,4], "x": 4.25, "y": 0 },
{ "matrix": [0,5], "x": 5.5, "y": 0 },
{ "matrix": [0,6], "x": 6.5, "y": 0 },
{ "matrix": [0,7], "x": 7.5, "y": 0 },
{ "matrix": [0,8], "x": 8.5, "y": 0 },
{ "matrix": [0,9], "x": 9.75, "y": 0 },
{ "matrix": [0,10], "x": 10.75, "y": 0 },
{ "matrix": [0,11], "x": 11.75, "y": 0 },
{ "matrix": [0,12], "x": 12.75, "y": 0 },
{ "matrix": [0,13], "x": 14, "y": 0 },
{ "matrix": [0,15], "x": 15.5, "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": [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], "w": 2, "x": 13, "y": 1 },
{ "matrix": [1,15], "x": 15.5, "y": 1 },
{ "matrix": [2,0], "w": 1.5, "x": 0, "y": 2 },
{ "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], "w": 1.5, "x": 13.5, "y": 2 },
{ "matrix": [2,15], "x": 15.5, "y": 2 },
{ "matrix": [3,0], "w": 1.75, "x": 0, "y": 3 },
{ "matrix": [3,1], "x": 1.75, "y": 3 },
{ "matrix": [3,2], "x": 2.75, "y": 3 },
{ "matrix": [3,3], "x": 3.75, "y": 3 },
{ "matrix": [3,4], "x": 4.75, "y": 3 },
{ "matrix": [3,5], "x": 5.75, "y": 3 },
{ "matrix": [3,6], "x": 6.75, "y": 3 },
{ "matrix": [3,7], "x": 7.75, "y": 3 },
{ "matrix": [3,8], "x": 8.75, "y": 3 },
{ "matrix": [3,9], "x": 9.75, "y": 3 },
{ "matrix": [3,10], "x": 10.75, "y": 3 },
{ "matrix": [3,11], "x": 11.75, "y": 3 },
{ "matrix": [3,13], "w": 2.25, "x": 12.75, "y": 3 },
{ "matrix": [3,15], "x": 15.5, "y": 3 },
{ "matrix": [4,0], "w": 2.25, "x": 0, "y": 4 },
{ "matrix": [4,1], "x": 2.25, "y": 4 },
{ "matrix": [4,2], "x": 3.25, "y": 4 },
{ "matrix": [4,3], "x": 4.25, "y": 4 },
{ "matrix": [4,4], "x": 5.25, "y": 4 },
{ "matrix": [4,5], "x": 6.25, "y": 4 },
{ "matrix": [4,6], "x": 7.25, "y": 4 },
{ "matrix": [4,7], "x": 8.25, "y": 4 },
{ "matrix": [4,8], "x": 9.25, "y": 4 },
{ "matrix": [4,9], "x": 10.25, "y": 4 },
{ "matrix": [4,10], "x": 11.25, "y": 4 },
{ "matrix": [4,13], "w": 1.75, "x": 12.25, "y": 4 },
{ "matrix": [4,14], "x": 14.25, "y": 4.25 },
{ "matrix": [4,15], "x": 15.5, "y": 4 },
{ "matrix": [5,0], "w": 1.25, "x": 0, "y": 5 },
{ "matrix": [5,1], "w": 1.25, "x": 1.25, "y": 5 },
{ "matrix": [5,2], "w": 1.25, "x": 2.5, "y": 5 },
{ "matrix": [5,5], "w": 6.25, "x": 3.75, "y": 5 },
{ "matrix": [5,9], "x": 10, "y": 5 },
{ "matrix": [5,10], "x": 11, "y": 5 },
{ "matrix": [5,11], "x": 12, "y": 5 },
{ "matrix": [5,13], "x": 13.25, "y": 5.25 },
{ "matrix": [5,14], "x": 14.25, "y": 5.25 },
{ "matrix": [5,15], "x": 15.25, "y": 5.25 }
]
}
}
}

View File

@ -0,0 +1,55 @@
// Copyright 2023 jonylee@hfd (@jonylee1986)
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
// clang-format off
enum __layers {
WIN_B,
WIN_FN,
MAC_B,
MAC_FN
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[WIN_B] = LAYOUT_ansi( /* Base */
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, KC_DEL, KC_MUTE,
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_HOME,
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_END,
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_PGUP,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_ansi( /* FN */
EE_CLR, KC_BRID, KC_BRIU, KC_MAIL, KC_WSCH, KC_CALC, KC_MSEL, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI,
_______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_VAI, RGB_HUD,
_______, GU_TOGG, _______, _______, _______, _______, _______, RGB_SPD, RGB_VAD, RGB_SPI),
[MAC_B] = LAYOUT_ansi( /* Base */
KC_ESC, KC_BRID, KC_BRIU, KC_F3, KC_F4, KC_F5, KC_F6, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
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_HOME,
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_END,
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_PGUP,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_ansi( /* FN */
EE_CLR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI,
_______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_VAI, RGB_HUD,
_______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_VAD, RGB_SPI)
};
#if defined(ENCODER_MAP_ENABLE)
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[WIN_B] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD) },
[WIN_FN] = { ENCODER_CCW_CW(RGB_SAI, RGB_SAD) },
[MAC_B] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD) },
[MAC_FN] = { ENCODER_CCW_CW(RGB_SAI, RGB_SAD) },
};
#endif

View File

@ -0,0 +1 @@
ENCODER_MAP_ENABLE = yes

View File

@ -0,0 +1,76 @@
// Copyright 2023 jonylee@hfd (@jonylee1986)
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
// clang-format off
enum __layers {
WIN_B,
WIN_FN,
MAC_B,
MAC_FN
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[WIN_B] = LAYOUT_ansi( /* Base */
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, KC_DEL, KC_MUTE,
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_HOME,
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_END,
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_PGUP,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_ansi( /* FN */
EE_CLR, KC_BRID, KC_BRIU, KC_MAIL, KC_WSCH, KC_CALC, KC_MSEL, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI,
_______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_VAI, RGB_HUD,
_______, GU_TOGG, _______, _______, _______, _______, _______, RGB_SPD, RGB_VAD, RGB_SPI),
[MAC_B] = LAYOUT_ansi( /* Base */
KC_ESC, KC_BRID, KC_BRIU, KC_F3, KC_F4, KC_F5, KC_F6, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
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_HOME,
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_END,
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_PGUP,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_ansi( /* FN */
EE_CLR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI,
_______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_VAI, RGB_HUD,
_______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_VAD, RGB_SPI)
};
#if defined(ENCODER_MAP_ENABLE)
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[WIN_B] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD) },
[WIN_FN] = { ENCODER_CCW_CW(RGB_SAI, RGB_SAD) },
[MAC_B] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD) },
[MAC_FN] = { ENCODER_CCW_CW(RGB_SAI, RGB_SAD) },
};
#endif
// clang-format on
bool dip_switch_update_user(uint8_t index, bool active) {
if (index == 0) {
default_layer_set(1UL << (active ? 2 : 0));
}
if (active) {
keymap_config.no_gui = 0;
}
return true;
}
bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
// caps lock red
if ((host_keyboard_led_state().caps_lock)) {
RGB_MATRIX_INDICATOR_SET_COLOR(44, 128, 0, 0);
}
// GUI lock red
if (keymap_config.no_gui) {
RGB_MATRIX_INDICATOR_SET_COLOR(73, 128, 0, 0);
}
return true;
}

View File

@ -0,0 +1,2 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes

View File

@ -0,0 +1,12 @@
// Copyright 2023 jonylee@hfd (@jonylee1986)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include_next <mcuconf.h>
#undef WB32_SPI_USE_QSPI
#define WB32_SPI_USE_QSPI TRUE
#undef WB32_I2C_USE_I2C1
#define WB32_I2C_USE_I2C1 TRUE

View File

@ -0,0 +1,26 @@
# v83p
A customizable 75% encoder keyboard.
* Keyboard Maintainer: [jonylee@hfd](https://github.com/jonylee1986)
* Hardware Supported: v83p
* Hardware Availability: [inland](https://www.microcenter.com/search/search_results.aspx?N=4294961018+4294822437)
Make example for this keyboard (after setting up your build environment):
make inland/v83p:default
Flashing example for this keyboard:
make inland/v83p: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:
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (the top left key) and plug in the keyboard
* **Physical BOOT contact**: Short circuit the BOOT contact located below the spacebar of the PCB and plug in the keyboard

View File

@ -0,0 +1,2 @@
EEPROM_DRIVER = wear_leveling
WEAR_LEVELING_DRIVER = spi_flash

View File

@ -0,0 +1,119 @@
// Copyright 2023 JoyLee (@itarze)
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
// clang-format off
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
* | | | B location
* | | | | */
{1, A_1, B_1, C_1},
{1, A_2, B_2, C_2},
{1, A_3, B_3, C_3},
{1, A_4, B_4, C_4},
{1, A_5, B_5, C_5},
{1, A_6, B_6, C_6},
{1, A_7, B_7, C_7},
{1, A_8, B_8, C_8},
{1, A_9, B_9, C_9},
{1, A_10, B_10, C_10},
{1, A_11, B_11, C_11},
{1, A_12, B_12, C_12},
{1, A_13, B_13, C_13},
{1, A_14, B_14, C_14},
{0, A_1, B_1, C_1},
{0, A_2, B_2, C_2},
{0, A_3, B_3, C_3},
{0, A_4, B_4, C_4},
{0, A_5, B_5, C_5},
{0, A_6, B_6, C_6},
{0, A_7, B_7, C_7},
{0, A_8, B_8, C_8},
{0, A_9, B_9, C_9},
{0, A_10, B_10, C_10},
{0, A_11, B_11, C_11},
{0, A_12, B_12, C_12},
{0, A_13, B_13, C_13},
{0, A_14, B_14, C_14},
{1, D_1, E_1, F_1},
{0, D_1, E_1, F_1},
{0, D_2, E_2, F_2},
{0, D_3, E_3, F_3},
{0, D_4, E_4, F_4},
{0, D_5, E_5, F_5},
{0, D_6, E_6, F_6},
{0, D_7, E_7, F_7},
{0, D_8, E_8, F_8},
{0, D_9, E_9, F_9},
{0, D_10, E_10, F_10},
{0, D_11, E_11, F_11},
{0, D_12, E_12, F_12},
{0, D_13, E_13, F_13},
{0, D_14, E_14, F_14},
{1, D_2, E_2, F_2},
{0, G_1, H_1, I_1},
{0, G_2, H_2, I_2},
{0, G_3, H_3, I_3},
{0, G_4, H_4, I_4},
{0, G_5, H_5, I_5},
{0, G_6, H_6, I_6},
{0, G_7, H_7, I_7},
{0, G_8, H_8, I_8},
{0, G_9, H_9, I_9},
{0, G_10, H_10, I_10},
{0, G_11, H_11, I_11},
{0, G_12, H_12, I_12},
{0, G_13, H_13, I_13},
{1, D_3, E_3, F_3},
{0, J_1, K_1, L_1},
{0, J_2, K_2, L_2},
{0, J_3, K_3, L_3},
{0, J_4, K_4, L_4},
{0, J_5, K_5, L_5},
{0, J_6, K_6, L_6},
{0, J_7, K_7, L_7},
{0, J_8, K_8, L_8},
{0, J_9, K_9, L_9},
{0, J_10, K_10, L_10},
{0, J_11, K_11, L_11},
{0, J_12, K_12, L_12},
{1, D_7, E_7, F_7},
{1, D_4, E_4, F_4},
{0, J_13, K_13, L_13},
{0, J_14, K_14, L_14},
{0, J_15, K_15, L_15},
{0, J_16, K_16, L_16},
{0, G_14, H_14, I_14},
{0, G_15, H_15, I_15},
{0, G_16, H_16, I_16},
{0, D_15, E_15, F_15},
{1, D_6, E_6, F_6},
{1, D_5, E_5, F_5},
{1, G_1, H_1, I_1},
{1, G_2, H_2, I_2},
{1, G_3, H_3, I_3},
{1, G_4, H_4, I_4},
{1, G_5, H_5, I_5},
{1, J_1, K_1, L_1},
{1, J_2, K_2, L_2},
{1, J_3, K_3, L_3},
{1, J_4, K_4, L_4},
{1, J_5, K_5, L_5},
};
#endif

View File

@ -0,0 +1,44 @@
/* Copyright 2023 JUKAIE <lice@jukaie.com>
*
* 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/>.
*/
#pragma once
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
#define RGB_DISABLE_WHEN_USB_SUSPENDED
/* External spi flash */
#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN B14
#define WEAR_LEVELING_BACKING_SIZE (8 * 1024)
/* SPI Config for LED Driver */
#define SPI_DRIVER SPIDQ
#define SPI_SCK_PIN A5
#define SPI_MOSI_PIN A7
#define SPI_MISO_PIN A6
#define DRIVER_1_CS A15
#define DRIVER_2_CS B15
#define DRIVER_1_EN C13
#define DRIVER_2_EN C13
#define DRIVER_COUNT 2
#define DRIVER_1_LED_TOTAL 66
#define DRIVER_2_LED_TOTAL 19
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)

View File

@ -0,0 +1,23 @@
/* Copyright (C) 2023 Westberry Technology (ChangZhou) Corp., Ltd
*
* 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/>.
*/
#pragma once
#define HAL_USE_SPI TRUE
#define SPI_USE_WAIT TRUE
#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
#include_next <halconf.h>

View File

@ -0,0 +1,270 @@
{
"manufacturer": "Jukaie",
"keyboard_name": "JK01",
"maintainer": "Jukaie",
"bootloader": "wb32-dfu",
"bootmagic": {
"matrix": [1, 3]
},
"diode_direction": "COL2ROW",
"encoder": {
"rotary": [
{"pin_a": "C2", "pin_b": "C3"}
]
},
"features": {
"bootmagic": true,
"command": false,
"console": false,
"encoder": true,
"extrakey": true,
"mousekey": true,
"nkro": true,
"rgb_matrix": true
},
"indicators": {
"caps_lock": "C14"
},
"matrix_pins": {
"cols": ["A0", "A1", "A2", "A3", "A4", "A8", "A9", "A10"],
"rows": ["B0", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "B10", "B12"]
},
"processor": "WB32FQ95",
"qmk": {
"tap_keycode_delay": 10
},
"rgb_matrix": {
"animations": {
"alphas_mods": true,
"gradient_up_down": true,
"gradient_left_right": true,
"breathing": true,
"band_sat": true,
"band_val": true,
"band_pinwheel_sat": true,
"band_pinwheel_val": true,
"band_spiral_sat": true,
"band_spiral_val": true,
"cycle_all": true,
"cycle_left_right": true,
"cycle_up_down": true,
"cycle_out_in": true,
"cycle_out_in_dual": true,
"rainbow_moving_chevron": true,
"cycle_pinwheel": true,
"cycle_spiral": true,
"dual_beacon": true,
"rainbow_beacon": true,
"rainbow_pinwheels": true,
"raindrops": true,
"jellybean_raindrops": true,
"hue_breathing": true,
"hue_pendulum": true,
"hue_wave": true,
"pixel_fractal": true,
"pixel_flow": true,
"pixel_rain": true,
"typing_heatmap": true,
"digital_rain": true,
"solid_reactive_simple": true,
"solid_reactive": true,
"solid_reactive_wide": true,
"solid_reactive_multiwide": true,
"solid_reactive_cross": true,
"solid_reactive_multicross": true,
"solid_reactive_nexus": true,
"solid_reactive_multinexus": true,
"splash": true,
"multisplash": true,
"solid_splash": true,
"solid_multisplash": true
},
"center_point": [76, 25],
"driver": "aw20216",
"layout": [
{ "flags": 4, "matrix": [1, 3], "x": 0, "y": 0 },
{ "flags": 4, "matrix": [2, 6], "x": 20, "y": 0 },
{ "flags": 4, "matrix": [3, 6], "x": 30, "y": 0 },
{ "flags": 4, "matrix": [3, 1], "x": 40, "y": 0 },
{ "flags": 4, "matrix": [3, 3], "x": 50, "y": 0 },
{ "flags": 4, "matrix": [0, 7], "x": 60, "y": 0 },
{ "flags": 4, "matrix": [6, 3], "x": 70, "y": 0 },
{ "flags": 4, "matrix": [7, 1], "x": 80, "y": 0 },
{ "flags": 4, "matrix": [7, 6], "x": 90, "y": 0 },
{ "flags": 4, "matrix": [10, 6], "x": 100, "y": 0 },
{ "flags": 4, "matrix": [10, 7], "x": 110, "y": 0 },
{ "flags": 4, "matrix": [10, 3], "x": 120, "y": 0 },
{ "flags": 4, "matrix": [10, 5], "x": 130, "y": 0 },
{ "flags": 4, "matrix": [9, 7], "x": 140, "y": 0 },
{ "flags": 4, "matrix": [0, 2], "x": 150, "y": 0 },
{ "flags": 4, "matrix": [1, 6], "x": 0, "y": 10 },
{ "flags": 4, "matrix": [1, 7], "x": 10, "y": 10 },
{ "flags": 4, "matrix": [2, 7], "x": 20, "y": 10 },
{ "flags": 4, "matrix": [3, 7], "x": 30, "y": 10 },
{ "flags": 4, "matrix": [4, 7], "x": 40, "y": 10 },
{ "flags": 4, "matrix": [4, 6], "x": 50, "y": 10 },
{ "flags": 4, "matrix": [5, 6], "x": 60, "y": 10 },
{ "flags": 4, "matrix": [5, 7], "x": 70, "y": 10 },
{ "flags": 4, "matrix": [6, 7], "x": 80, "y": 10 },
{ "flags": 4, "matrix": [7, 7], "x": 90, "y": 10 },
{ "flags": 4, "matrix": [8, 7], "x": 100, "y": 10 },
{ "flags": 4, "matrix": [8, 6], "x": 110, "y": 10 },
{ "flags": 4, "matrix": [6, 6], "x": 120, "y": 10 },
{ "flags": 4, "matrix": [10, 1], "x": 130, "y": 10 },
{ "flags": 4, "matrix": [11, 6], "x": 150, "y": 10 },
{ "flags": 4, "matrix": [1, 1], "x": 0, "y": 20 },
{ "flags": 4, "matrix": [1, 0], "x": 15, "y": 20 },
{ "flags": 4, "matrix": [2, 0], "x": 25, "y": 20 },
{ "flags": 4, "matrix": [3, 0], "x": 35, "y": 20 },
{ "flags": 4, "matrix": [4, 0], "x": 45, "y": 20 },
{ "flags": 4, "matrix": [4, 1], "x": 55, "y": 20 },
{ "flags": 4, "matrix": [5, 1], "x": 65, "y": 20 },
{ "flags": 4, "matrix": [5, 0], "x": 75, "y": 20 },
{ "flags": 4, "matrix": [6, 0], "x": 85, "y": 20 },
{ "flags": 4, "matrix": [7, 0], "x": 95, "y": 20 },
{ "flags": 4, "matrix": [8, 0], "x": 105, "y": 20 },
{ "flags": 4, "matrix": [8, 1], "x": 115, "y": 20 },
{ "flags": 4, "matrix": [6, 1], "x": 125, "y": 20 },
{ "flags": 4, "matrix": [10, 2], "x": 135, "y": 20 },
{ "flags": 4, "matrix": [6, 5], "x": 150, "y": 20 },
{ "flags": 4, "matrix": [2, 1], "x": 0, "y": 30 },
{ "flags": 4, "matrix": [1, 2], "x": 17, "y": 30 },
{ "flags": 8, "matrix": [2, 2], "x": 27, "y": 30 },
{ "flags": 4, "matrix": [3, 2], "x": 37, "y": 30 },
{ "flags": 4, "matrix": [4, 2], "x": 47, "y": 30 },
{ "flags": 4, "matrix": [4, 3], "x": 57, "y": 30 },
{ "flags": 4, "matrix": [5, 3], "x": 67, "y": 30 },
{ "flags": 4, "matrix": [5, 2], "x": 77, "y": 30 },
{ "flags": 4, "matrix": [6, 2], "x": 87, "y": 30 },
{ "flags": 4, "matrix": [7, 2], "x": 97, "y": 30 },
{ "flags": 4, "matrix": [8, 2], "x": 107, "y": 30 },
{ "flags": 4, "matrix": [8, 3], "x": 117, "y": 30 },
{ "flags": 4, "matrix": [10, 4], "x": 127, "y": 30 },
{ "flags": 4, "matrix": [1, 5], "x": 150, "y": 30 },
{ "flags": 4, "matrix": [0, 0], "x": 0, "y": 40 },
{ "flags": 4, "matrix": [1, 4], "x": 22, "y": 40 },
{ "flags": 4, "matrix": [2, 4], "x": 32, "y": 40 },
{ "flags": 4, "matrix": [3, 4], "x": 42, "y": 40 },
{ "flags": 4, "matrix": [4, 4], "x": 52, "y": 40 },
{ "flags": 4, "matrix": [4, 5], "x": 62, "y": 40 },
{ "flags": 4, "matrix": [5, 5], "x": 72, "y": 40 },
{ "flags": 4, "matrix": [5, 4], "x": 82, "y": 40 },
{ "flags": 4, "matrix": [6, 4], "x": 92, "y": 40 },
{ "flags": 4, "matrix": [7, 4], "x": 102, "y": 40 },
{ "flags": 4, "matrix": [8, 5], "x": 112, "y": 40 },
{ "flags": 4, "matrix": [9, 1], "x": 122, "y": 40 },
{ "flags": 4, "matrix": [3, 5], "x": 140, "y": 40 },
{ "flags": 4, "matrix": [2, 5], "x": 150, "y": 40 },
{ "flags": 4, "matrix": [0, 6], "x": 0, "y": 50 },
{ "flags": 4, "matrix": [9, 0], "x": 12, "y": 50 },
{ "flags": 4, "matrix": [9, 3], "x": 25, "y": 50 },
{ "flags": 4, "matrix": [9, 4], "x": 37, "y": 50 },
{ "flags": 4, "matrix": [9, 5], "x": 100, "y": 50 },
{ "flags": 4, "matrix": [9, 2], "x": 110, "y": 50 },
{ "flags": 4, "matrix": [0, 4], "x": 120, "y": 50 },
{ "flags": 4, "matrix": [0, 3], "x": 130, "y": 50 },
{ "flags": 4, "matrix": [7, 3], "x": 140, "y": 50 },
{ "flags": 4, "matrix": [0, 5], "x": 150, "y": 50 },
{ "flags": 4, "matrix": [11, 0], "x": 0, "y": 1 },
{ "flags": 4, "matrix": [11, 1], "x": 0, "y": 2 }
]
},
"url": "",
"usb": {
"device_version": "0.0.2",
"pid": "0x0002",
"vid": "0x4141"
},
"eeprom": {
"driver": "wear_leveling"
},
"layouts": {
"LAYOUT": {
"layout": [
{ "label": "ESC", "matrix": [1, 3], "x": 0, "y": 0 },
{ "label": "F1", "matrix": [2, 6], "x": 2, "y": 0 },
{ "label": "F2", "matrix": [3, 6], "x": 3, "y": 0 },
{ "label": "F3", "matrix": [3, 1], "x": 4, "y": 0 },
{ "label": "F4", "matrix": [3, 3], "x": 5, "y": 0 },
{ "label": "F5", "matrix": [0, 7], "x": 6, "y": 0 },
{ "label": "F6", "matrix": [6, 3], "x": 7, "y": 0 },
{ "label": "F7", "matrix": [7, 1], "x": 8, "y": 0 },
{ "label": "F8", "matrix": [7, 6], "x": 9, "y": 0 },
{ "label": "F9", "matrix": [10, 6], "x": 10, "y": 0 },
{ "label": "F10", "matrix": [10, 7], "x": 11, "y": 0 },
{ "label": "F11", "matrix": [10, 3], "x": 12, "y": 0 },
{ "label": "F12", "matrix": [10, 5], "x": 13, "y": 0 },
{ "label": "Printscreen", "matrix": [9, 7], "x": 14, "y": 0 },
{ "label": "Del", "matrix": [0, 2], "x": 15, "y": 0 },
{ "label": "`", "matrix": [1, 6], "x": 0, "y": 1 },
{ "label": "1", "matrix": [1, 7], "x": 1, "y": 1 },
{ "label": "2", "matrix": [2, 7], "x": 2, "y": 1 },
{ "label": "3", "matrix": [3, 7], "x": 3, "y": 1 },
{ "label": "4", "matrix": [4, 7], "x": 4, "y": 1 },
{ "label": "5", "matrix": [4, 6], "x": 5, "y": 1 },
{ "label": "6", "matrix": [5, 6], "x": 6, "y": 1 },
{ "label": "7", "matrix": [5, 7], "x": 7, "y": 1 },
{ "label": "8", "matrix": [6, 7], "x": 8, "y": 1 },
{ "label": "9", "matrix": [7, 7], "x": 9, "y": 1 },
{ "label": "0", "matrix": [8, 7], "x": 10, "y": 1 },
{ "label": "-", "matrix": [8, 6], "x": 11, "y": 1 },
{ "label": "=", "matrix": [6, 6], "x": 12, "y": 1 },
{ "label": "Backspace", "matrix": [10, 1], "w": 2, "x": 13, "y": 1 },
{ "label": "Home", "matrix": [11, 6], "x": 15, "y": 1 },
{ "label": "Tab", "matrix": [1, 1], "w": 1.5, "x": 0, "y": 2 },
{ "label": "Q", "matrix": [1, 0], "x": 1.5, "y": 2 },
{ "label": "W", "matrix": [2, 0], "x": 2.5, "y": 2 },
{ "label": "E", "matrix": [3, 0], "x": 3.5, "y": 2 },
{ "label": "R", "matrix": [4, 0], "x": 4.5, "y": 2 },
{ "label": "T", "matrix": [4, 1], "x": 5.5, "y": 2 },
{ "label": "Y", "matrix": [5, 1], "x": 6.5, "y": 2 },
{ "label": "U", "matrix": [5, 0], "x": 7.5, "y": 2 },
{ "label": "I", "matrix": [6, 0], "x": 8.5, "y": 2 },
{ "label": "O", "matrix": [7, 0], "x": 9.5, "y": 2 },
{ "label": "P", "matrix": [8, 0], "x": 10.5, "y": 2 },
{ "label": "[", "matrix": [8, 1], "x": 11.5, "y": 2 },
{ "label": "]", "matrix": [6, 1], "x": 12.5, "y": 2 },
{ "label": "\\", "matrix": [10, 2], "w": 1.5, "x": 13.5, "y": 2 },
{ "label": "End", "matrix": [6, 5], "x": 15, "y": 2 },
{ "label": "Caps Lock", "matrix": [2, 1], "w": 1.75, "x": 0, "y": 3 },
{ "label": "A", "matrix": [1, 2], "x": 1.75, "y": 3 },
{ "label": "S", "matrix": [2, 2], "x": 2.75, "y": 3 },
{ "label": "D", "matrix": [3, 2], "x": 3.75, "y": 3 },
{ "label": "F", "matrix": [4, 2], "x": 4.75, "y": 3 },
{ "label": "G", "matrix": [4, 3], "x": 5.75, "y": 3 },
{ "label": "H", "matrix": [5, 3], "x": 6.75, "y": 3 },
{ "label": "J", "matrix": [5, 2], "x": 7.75, "y": 3 },
{ "label": "K", "matrix": [6, 2], "x": 8.75, "y": 3 },
{ "label": "L", "matrix": [7, 2], "x": 9.75, "y": 3 },
{ "label": ";", "matrix": [8, 2], "x": 10.75, "y": 3 },
{ "label": "'", "matrix": [8, 3], "x": 11.75, "y": 3 },
{ "label": "Enter", "matrix": [10, 4], "w": 2.25, "x": 12.75, "y": 3 },
{ "label": "PgUp", "matrix": [1, 5], "x": 15, "y": 3 },
{ "label": "Shift", "matrix": [0, 0], "w": 2.25, "x": 0, "y": 4 },
{ "label": "Z", "matrix": [1, 4], "x": 2.25, "y": 4 },
{ "label": "X", "matrix": [2, 4], "x": 3.25, "y": 4 },
{ "label": "C", "matrix": [3, 4], "x": 4.25, "y": 4 },
{ "label": "V", "matrix": [4, 4], "x": 5.25, "y": 4 },
{ "label": "B", "matrix": [4, 5], "x": 6.25, "y": 4 },
{ "label": "N", "matrix": [5, 5], "x": 7.25, "y": 4 },
{ "label": "M", "matrix": [5, 4], "x": 8.25, "y": 4 },
{ "label": ",", "matrix": [6, 4], "x": 9.25, "y": 4 },
{ "label": ".", "matrix": [7, 4], "x": 10.25, "y": 4 },
{ "label": "/", "matrix": [8, 5], "x": 11.25, "y": 4 },
{ "label": "Shift", "matrix": [9, 1], "w": 1.75, "x": 12.25, "y": 4 },
{ "label": "Up", "matrix": [3, 5], "x": 14, "y": 4 },
{ "label": "PgDn", "matrix": [2, 5], "x": 15, "y": 4 },
{ "label": "Ctrl", "matrix": [0, 6], "w": 1.25, "x": 0, "y": 5 },
{ "label": "Win", "matrix": [9, 0], "w": 1.25, "x": 1.25, "y": 5 },
{ "label": "Alt", "matrix": [9, 3], "w": 1.25, "x": 2.5, "y": 5 },
{ "label": "Space", "matrix": [9, 4], "w": 6.25, "x": 3.75, "y": 5 },
{ "label": "Alt", "matrix": [9, 5], "x": 10, "y": 5 },
{ "label": "FN", "matrix": [9, 2], "x": 11, "y": 5 },
{ "label": "Ctrl", "matrix": [0, 4], "x": 12, "y": 5 },
{ "label": "Left", "matrix": [0, 3], "x": 13, "y": 5 },
{ "label": "Down", "matrix": [7, 3], "x": 14, "y": 5 },
{ "label": "Right", "matrix": [0, 5], "x": 15, "y": 5 }
]
}
}
}

View File

@ -0,0 +1,173 @@
/* Copyright 2023 JUKAIE <lice@jukaie.com>
*
* 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 "jk01.h"
#ifdef RGB_MATRIX_ENABLE
const aw_led g_aw_leds[RGB_MATRIX_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
* | | | B location
* | | | | */
//{0, CS1_SW4, CS2_SW4, CS3_SW4}, // 0, k00, Esc
{0, CS1_SW1, CS2_SW1, CS3_SW1}, // 1, k13, Esc
{0, CS1_SW2, CS2_SW2, CS3_SW2}, // 2, k26, F1
{0, CS1_SW3, CS2_SW3, CS3_SW3}, // 3, k36, F2
{0, CS1_SW4, CS2_SW4, CS3_SW4}, // 4, k31, F3
{0, CS1_SW5, CS2_SW5, CS3_SW5}, // 5, k33, F4
{0, CS1_SW6, CS2_SW6, CS3_SW6}, // 6, k07, F5
{0, CS1_SW7, CS2_SW7, CS3_SW7}, // 7, k63, F6
{0, CS1_SW8, CS2_SW8, CS3_SW8}, // 8, k71, F7
{0, CS1_SW9, CS2_SW9, CS3_SW9}, // 9, k76, F8
{0, CS1_SW10, CS2_SW10, CS3_SW10}, // 10, ka6, F9
{0, CS1_SW11, CS2_SW11, CS3_SW11}, // 11, ka7, F10
{0, CS1_SW12, CS2_SW12, CS3_SW12}, // 12, ka3, F11
{1, CS1_SW1, CS2_SW1, CS3_SW1}, // 13, ka5, F12
{1, CS4_SW2, CS5_SW2, CS6_SW2}, // 14, k97, Printscreen
{1, CS4_SW5, CS5_SW5, CS6_SW5}, // 15, k02, Del
{0, CS4_SW1, CS5_SW1, CS6_SW1}, // 16, k16, `
{0, CS4_SW2, CS5_SW2, CS6_SW2}, // 17, k17, 1
{0, CS4_SW3, CS5_SW3, CS6_SW3}, // 18, k27, 2
{0, CS4_SW4, CS5_SW4, CS6_SW4}, // 19, k37, 3
{0, CS4_SW5, CS5_SW5, CS6_SW5}, // 20, k47, 4
{0, CS4_SW6, CS5_SW6, CS6_SW6}, // 21, k46, 5
{0, CS4_SW7, CS5_SW7, CS6_SW7}, // 22, k56, 6
{0, CS4_SW8, CS5_SW8, CS6_SW8}, // 23, k57, 7
{0, CS4_SW9, CS5_SW9, CS6_SW9}, // 24, k67, 8
{0, CS4_SW10, CS5_SW10, CS6_SW10}, // 25, k77, 9
{0, CS4_SW11, CS5_SW11, CS6_SW11}, // 26, k87, 0
{0, CS4_SW12, CS5_SW12, CS6_SW12}, // 27, k86, -
{1, CS1_SW5, CS2_SW5, CS3_SW5}, // 28, k66, =
{1, CS1_SW7, CS2_SW7, CS3_SW7}, // 29, ka1, Backspace
{1, CS1_SW2, CS2_SW2, CS3_SW2}, // 30, kc6, Home
{0, CS7_SW1, CS8_SW1, CS9_SW1}, // 31, k11, Tab
{0, CS7_SW2, CS8_SW2, CS9_SW2}, // 32, k10, Q
{0, CS7_SW3, CS8_SW3, CS9_SW3}, // 33, k20, W
{0, CS7_SW4, CS8_SW4, CS9_SW4}, // 34, k30, E
{0, CS7_SW5, CS8_SW5, CS9_SW5}, // 35, k40, R
{0, CS7_SW6, CS8_SW6, CS9_SW6}, // 36, k41, T
{0, CS7_SW7, CS8_SW7, CS9_SW7}, // 37, k51, Y
{0, CS7_SW8, CS8_SW8, CS9_SW8}, // 38, k50, U
{0, CS7_SW9, CS8_SW9, CS9_SW9}, // 39, k60, I
{0, CS7_SW10, CS8_SW10, CS9_SW10}, // 40, k70, O
{0, CS7_SW11, CS8_SW11, CS9_SW11}, // 41, k80, P
{0, CS7_SW12, CS8_SW12, CS9_SW12}, // 42, k81, [
{1, CS1_SW8, CS2_SW8, CS3_SW8}, // 43, k61, ]
{1, CS1_SW9, CS2_SW9, CS3_SW9}, // 44, ka2, "\\"
{1, CS4_SW3, CS5_SW3, CS6_SW3}, // 45, k65, End
{0, CS10_SW1, CS11_SW1, CS12_SW1}, // 46, k21, Caps Lock
{0, CS10_SW2, CS11_SW2, CS12_SW2}, // 47, k12, A
{0, CS10_SW3, CS11_SW3, CS12_SW3}, // 48, k22, S
{0, CS10_SW4, CS11_SW4, CS12_SW4}, // 49, k32, D
{0, CS10_SW5, CS11_SW5, CS12_SW5}, // 50, k42, F
{0, CS10_SW6, CS11_SW6, CS12_SW6}, // 51, k43, G
{0, CS10_SW7, CS11_SW7, CS12_SW7}, // 52, k53, H
{0, CS10_SW8, CS11_SW8, CS12_SW8}, // 53, k52, J
{0, CS10_SW9, CS11_SW9, CS12_SW9}, // 54, k62, K
{0, CS10_SW10, CS11_SW10, CS12_SW10}, // 55, k72, L
{0, CS10_SW11, CS11_SW11, CS12_SW11}, // 56, k82, ;
{0, CS10_SW12, CS11_SW12, CS12_SW12}, // 57, k83, '
{1, CS1_SW11, CS2_SW11, CS3_SW11}, // 58, ka4, Enter
{1, CS4_SW4, CS5_SW4, CS6_SW4}, // 59, k15, PgUp
{0, CS13_SW1, CS14_SW1, CS15_SW1}, // 60, k00, Shift_L
{0, CS13_SW2, CS14_SW2, CS15_SW2}, // 61, k14, Z
{0, CS13_SW3, CS14_SW3, CS15_SW3}, // 62, k24, X
{0, CS13_SW4, CS14_SW4, CS15_SW4}, // 63, k34, C
{0, CS13_SW5, CS14_SW5, CS15_SW5}, // 64, k44, V
{0, CS13_SW6, CS14_SW6, CS15_SW6}, // 65, k45, B
{0, CS13_SW7, CS14_SW7, CS15_SW7}, // 66, k55, N
{0, CS13_SW8, CS14_SW8, CS15_SW8}, // 67, k54, M
{0, CS13_SW9, CS14_SW9, CS15_SW9}, // 68, k64, ,
{0, CS13_SW10, CS14_SW10, CS15_SW10}, // 69, k74, .
{0, CS13_SW11, CS14_SW11, CS15_SW11}, // 70, k85, /
{1, CS4_SW8, CS5_SW8, CS6_SW8}, // 71, k91, Shift_R
{1, CS4_SW9, CS5_SW9, CS6_SW9}, // 72, k35, Up
{1, CS4_SW7, CS5_SW7, CS6_SW7}, // 73, k25, PgDn
{0, CS16_SW1, CS17_SW1, CS18_SW1}, // 74, k06, Ctrl_L
{0, CS16_SW2, CS17_SW2, CS18_SW2}, // 75, k90, Win_L
{0, CS16_SW3, CS17_SW3, CS18_SW3}, // 76, k93, Alt_L
{0, CS16_SW6, CS17_SW6, CS18_SW6}, // 77, k94, Space
{0, CS16_SW9, CS17_SW9, CS18_SW9}, // 78, k95, Alt_R
{0, CS16_SW10, CS17_SW10, CS18_SW10}, // 79, k92, FN
{0, CS16_SW12, CS17_SW12, CS18_SW12}, // 80, k04, Ctrl_R
{1, CS4_SW10, CS5_SW10, CS6_SW10}, // 81, k03, Left
{1, CS4_SW11, CS5_SW11, CS6_SW11}, // 82, k73, Down
{1, CS10_SW5, CS11_SW5, CS12_SW5}, // 83, k05, Right
{1, CS10_SW10, CS11_SW10, CS12_SW10}, // 84, kb0, Z1
{1, CS10_SW11, CS11_SW11, CS12_SW11}, // 85, kb1, Z2
};
#endif
#ifdef EEPROM_ENABLE
#include "spi_master.h"
void spi_init(void) {
static bool is_initialised = false;
if (!is_initialised) {
is_initialised = true;
// Try releasing special pins for a short time
setPinInput(SPI_SCK_PIN);
setPinInput(SPI_MOSI_PIN);
setPinInput(SPI_MISO_PIN);
chThdSleepMilliseconds(10);
palSetPadMode(PAL_PORT(SPI_SCK_PIN), PAL_PAD(SPI_SCK_PIN), PAL_MODE_ALTERNATE(SPI_SCK_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL | PAL_OUTPUT_SPEED_HIGHEST | PAL_WB32_CURRENT_LEVEL3);
palSetPadMode(PAL_PORT(SPI_MOSI_PIN), PAL_PAD(SPI_MOSI_PIN), PAL_MODE_ALTERNATE(SPI_MOSI_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL | PAL_OUTPUT_SPEED_HIGHEST);
palSetPadMode(PAL_PORT(SPI_MISO_PIN), PAL_PAD(SPI_MISO_PIN), PAL_MODE_ALTERNATE(SPI_MISO_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL | PAL_OUTPUT_SPEED_HIGHEST);
}
}
#endif
void keyboard_pre_init_kb(void) {
setPinOutput(C0);
setPinOutput(C15);
keyboard_pre_init_user();
};
void housekeeping_task_kb(void) {
writePin(C15, keymap_config.no_gui);
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case KC_SIRI:
if (record->event.pressed) {
host_consumer_send(0xCF);
} else {
host_consumer_send(0);
}
return false; /* Skip all further processing of this key */
default:
return true; /* Process all other keycodes normally */
}
};

View File

@ -0,0 +1,22 @@
/* Copyright 2022 GSKY <gskyGit@gsky.com.tw>
*
* 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/>.
*/
#pragma once
#include "quantum.h"
enum keyboard_keycodes {
KC_SIRI = QK_KB
};

View File

@ -0,0 +1,78 @@
/* Copyright 2023 JUKAIE <lice@jukaie.com>
*
* 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
// Each layer gets a name for readability, which is then used in the keymap matrix below.
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
enum custom_layers {
Win,
Mac,
Winfn,
Macfn,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap _BL: Base Layer (Default Layer)
*/
[Win] = 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, KC_PSCR, KC_DEL,
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_HOME,
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_END,
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_PGUP,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(Winfn),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[Mac] = LAYOUT(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_SIRI, KC_F5, KC_F6, KC_MRWD, KC_MPLY, KC_MFFD, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, KC_DEL,
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_HOME,
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_END,
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_PGUP,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RALT, MO(Macfn),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[Winfn] = LAYOUT(
QK_BOOT, KC_MYCM, KC_MAIL, KC_WSCH, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, RGB_MOD,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI,
KC_TRNS, KC_TRNS, TO(Win), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, TO(Mac), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAI, KC_TRNS,
KC_TRNS, GUI_TOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SPD, RGB_VAD, RGB_SPI),
[Macfn] = LAYOUT(
QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_TRNS, KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, RGB_MOD,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI,
KC_TRNS, KC_TRNS, TO(Win), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, TO(Mac), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAI, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SPD, RGB_VAD, RGB_SPI),
};
#if defined(ENCODER_MAP_ENABLE)
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[1] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
[3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }
};
#endif
layer_state_t layer_state_set_user(layer_state_t state) {
writePin(C0, layer_state_cmp(state, 1));
return state;
};

View File

@ -0,0 +1 @@
ENCODER_MAP_ENABLE = yes

View File

@ -0,0 +1,78 @@
/* Copyright 2023 JUKAIE <lice@jukaie.com>
*
* 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
// Each layer gets a name for readability, which is then used in the keymap matrix below.
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
enum custom_layers {
Win,
Mac,
Winfn,
Macfn,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap _BL: Base Layer (Default Layer)
*/
[Win] = 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, KC_PSCR, KC_DEL,
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_HOME,
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_END,
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_PGUP,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(Winfn),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[Mac] = LAYOUT(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_SIRI, KC_F5, KC_F6, KC_MRWD, KC_MPLY, KC_MFFD, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, KC_DEL,
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_HOME,
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_END,
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_PGUP,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RALT, MO(Macfn),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[Winfn] = LAYOUT(
QK_BOOT, KC_MYCM, KC_MAIL, KC_WSCH, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, RGB_MOD,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI,
KC_TRNS, KC_TRNS, TO(Win), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, TO(Mac), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAI, KC_TRNS,
KC_TRNS, GUI_TOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SPD, RGB_VAD, RGB_SPI),
[Macfn] = LAYOUT(
QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_TRNS, KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, RGB_MOD,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI,
KC_TRNS, KC_TRNS, TO(Win), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, TO(Mac), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAI, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SPD, RGB_VAD, RGB_SPI),
};
#if defined(ENCODER_MAP_ENABLE)
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[1] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
[3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }
};
#endif
layer_state_t layer_state_set_user(layer_state_t state) {
writePin(C0, layer_state_cmp(state, 1));
return state;
};

View File

@ -0,0 +1,2 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes

View File

@ -0,0 +1,25 @@
/* Copyright (C) 2023 Westberry Technology (ChangZhou) Corp., Ltd
*
* 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/>.
*/
#pragma once
#include_next <mcuconf.h>
#undef WB32_SPI_USE_QSPI
#define WB32_SPI_USE_QSPI TRUE
#undef WB32_SPI_USE_SPIM2
#define WB32_SPI_USE_SPIM2 TRUE

View File

@ -0,0 +1,23 @@
# jk01
An 83 keys keyboard, Equipped with the WestBerry Q95 microcontroller.
* Keyboard Maintainer: [JUKAIE](https://github.com/jukaie)
* Hardware Supported: JK01
* Hardware Availability: [JUKAIE](https://github.com/jukaie/keyboard1)
Make example for this keyboard (after setting up your build environment):
make jukaie/jk01:default
Flashing example for this keyboard:
make jukaie/jk01:default:flash
To reset the board into bootloader mode, do one of the following:
* Hold the Reset switch mounted on the surface of the PCB back side after the USB cable is connected
* Hold the Escape key while connecting the USB cable (also erases persistent settings)
* Fn+ESC will reset the board to bootloader mode
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).

View File

@ -0,0 +1 @@
WEAR_LEVELING_DRIVER = spi_flash

View File

@ -25,8 +25,85 @@
}, },
"processor": "STM32F072", "processor": "STM32F072",
"bootloader": "stm32-dfu", "bootloader": "stm32-dfu",
"community_layouts": ["alice_split_bs"], "community_layouts": ["alice", "alice_split_bs"],
"layouts": { "layouts": {
"LAYOUT_alice": {
"layout": [
{"matrix": [8, 1], "x": 0.4, "y": 0},
{"matrix": [3, 6], "x": 1.55, "y": 0.1},
{"matrix": [3, 7], "x": 2.55, "y": 0.1},
{"matrix": [4, 6], "x": 3.55, "y": 0},
{"matrix": [4, 7], "x": 4.55, "y": 0.1},
{"matrix": [5, 6], "x": 5.55, "y": 0.1},
{"matrix": [5, 7], "x": 6.55, "y": 0.1},
{"matrix": [6, 6], "x": 7.55, "y": 0.1},
{"matrix": [6, 7], "x": 9.75, "y": 0.1},
{"matrix": [7, 6], "x": 10.75, "y": 0.1},
{"matrix": [7, 7], "x": 11.75, "y": 0.1},
{"matrix": [0, 6], "x": 12.75, "y": 0.1},
{"matrix": [0, 7], "x": 13.75, "y": 0},
{"matrix": [1, 7], "x": 14.75, "y": 0.1},
{"matrix": [2, 7], "x": 15.75, "y": 0.1, "w": 2},
{"matrix": [8, 0], "x": 0.2, "y": 1},
{"matrix": [3, 4], "x": 1.35, "y": 1.1, "w": 1.5},
{"matrix": [3, 5], "x": 2.85, "y": 1.1},
{"matrix": [4, 4], "x": 3.85, "y": 1.1},
{"matrix": [4, 5], "x": 4.85, "y": 1.1},
{"matrix": [5, 4], "x": 5.85, "y": 1.1},
{"matrix": [5, 5], "x": 6.85, "y": 1.1},
{"matrix": [6, 4], "x": 9.45, "y": 1.1},
{"matrix": [6, 5], "x": 10.45, "y": 1.1},
{"matrix": [7, 5], "x": 11.45, "y": 1.1},
{"matrix": [0, 5], "x": 12.45, "y": 1.1},
{"matrix": [1, 5], "x": 13.45, "y": 1.1},
{"matrix": [1, 6], "x": 14.45, "y": 1.1},
{"matrix": [2, 5], "x": 15.45, "y": 1.1},
{"matrix": [2, 4], "x": 16.45, "y": 1.1, "w": 1.5},
{"matrix": [8, 2], "x": 0, "y": 2},
{"matrix": [3, 2], "x": 1.15, "y": 2.1, "w": 1.75},
{"matrix": [3, 3], "x": 2.9, "y": 2.1},
{"matrix": [4, 3], "x": 3.9, "y": 2.1},
{"matrix": [5, 2], "x": 4.9, "y": 2.1},
{"matrix": [5, 3], "x": 5.9, "y": 2.1},
{"matrix": [6, 3], "x": 6.9, "y": 2.1},
{"matrix": [7, 3], "x": 9.9, "y": 2.1},
{"matrix": [7, 4], "x": 10.9, "y": 2.1},
{"matrix": [0, 3], "x": 11.9, "y": 2.1},
{"matrix": [0, 4], "x": 12.9, "y": 2.1},
{"matrix": [1, 3], "x": 13.9, "y": 2.1},
{"matrix": [1, 4], "x": 14.9, "y": 2.1},
{"matrix": [2, 3], "x": 15.9, "y": 2.1, "w": 2.25},
{"matrix": [3, 1], "x": 0.95, "y": 3.1, "w": 2.25},
{"matrix": [4, 1], "x": 3.2, "y": 3.1},
{"matrix": [4, 2], "x": 4.2, "y": 3.1},
{"matrix": [5, 1], "x": 5.2, "y": 3.1},
{"matrix": [6, 1], "x": 6.2, "y": 3.1},
{"matrix": [6, 2], "x": 7.2, "y": 3.1},
{"matrix": [7, 1], "x": 9.6, "y": 3.1},
{"matrix": [7, 2], "x": 10.6, "y": 3.1},
{"matrix": [0, 1], "x": 11.6, "y": 3.1},
{"matrix": [0, 2], "x": 12.6, "y": 3.1},
{"matrix": [1, 1], "x": 13.6, "y": 3.1},
{"matrix": [1, 2], "x": 14.6, "y": 3.1},
{"matrix": [2, 1], "x": 15.6, "y": 3.1, "w": 1.75},
{"matrix": [2, 2], "x": 17.35, "y": 3.1},
{"matrix": [3, 0], "x": 0.95, "y": 4.1, "w": 1.5},
{"matrix": [4, 0], "x": 3.85, "y": 4.1, "w": 1.5},
{"matrix": [5, 0], "x": 5.35, "y": 4.1, "w": 2},
{"matrix": [6, 0], "x": 7.35, "y": 4.1, "w": 1.25},
{"matrix": [0, 0], "x": 9.6, "y": 4.1, "w": 2.75},
{"matrix": [1, 0], "x": 12.35, "y": 4.1, "w": 1.5},
{"matrix": [2, 0], "x": 16.65, "y": 4.1, "w": 1.5}
]
},
"LAYOUT_alice_split_bs": { "LAYOUT_alice_split_bs": {
"layout": [ "layout": [
{"matrix": [8, 1], "x": 0.4, "y": 0}, {"matrix": [8, 1], "x": 0.4, "y": 0},

View File

@ -0,0 +1,24 @@
# Matrix Diagram for Kapcave Arya
```
┌───────┐
2u Backspace │27 │
└───────┘
┌───┐ ┌───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┬───┬───┐
│81 │ │36 │37 │46 │47 │56 │57 │66 │ │67 │76 │77 │06 │07 │17 │26 │27 │
┌┴──┬┘ ┌┴───┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┘ ┌─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┐
│80 │ │34 │35 │44 │45 │54 │55 │ │64 │65 │75 │05 │15 │16 │25 │24 │
┌┴──┬┘ ┌┴─────┼───┼───┼───┼───┼───┤ └┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴──────┴┐
│82 │ │32 │33 │43 │52 │53 │63 │ │73 │74 │03 │04 │13 │14 │23 │
└───┘ ┌┴──────┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ ┌─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───────┬──┴┐
│31 │41 │42 │51 │61 │62 │ │71 │72 │01 │02 │11 │12 │21 │22 │
├─────┬──┴──┬┴───┴┬──┴───┴┬──┴──┐ ├───┴───┴──┬┴───┴┬──┴───┴──────┬──┴──┬┘
│30 │ │40 │50 │60 │ │00 │10 │ │20 │
└─────┘ └─────┴───────┴─────┘ └──────────┴─────┘ └─────┘
┌────────────┐
2.75u RShift │21 │
└────────────┘
┌─────────┬───┐
│50 │60 │ 2.25u-1u Left Space
└─────────┴───┘
```

View File

@ -1,2 +1,2 @@
VIA_ENABLE = yes VIA_ENABLE = yes
EMCODER_MAP_ENABLE = yes ENCODER_MAP_ENABLE = yes

View File

@ -0,0 +1,6 @@
// Copyright 2023 lendunistus
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define CAPS_LOCK_ENABLE true

View File

@ -0,0 +1,766 @@
{
"manufacturer": "lendunistus",
"keyboard_name": "RPNeko65",
"maintainer": "lendunistus",
"bootloader": "rp2040",
"diode_direction": "COL2ROW",
"features": {
"bootmagic": true,
"command": false,
"console": false,
"extrakey": true,
"mousekey": true,
"nkro": true,
"rgblight": true
},
"matrix_pins": {
"cols": ["GP29", "GP15", "GP14", "GP13", "GP12", "GP11", "GP10", "GP9", "GP8", "GP6", "GP5", "GP4", "GP3", "GP2", "GP0", "GP1"],
"rows": ["GP28", "GP27", "GP26", "GP25", "GP24"]
},
"processor": "RP2040",
"rgblight": {
"led_count": 1
},
"url": "https://github.com/lendunistus/rpneko65",
"usb": {
"device_version": "1.0.0",
"force_nkro": true,
"pid": "0x0001",
"vid": "0x6C75"
},
"ws2812": {
"driver": "vendor",
"pin": "GP18"
},
"community_layouts": [
"65_ansi_blocker",
"65_ansi_blocker_split_bs",
"65_ansi_blocker_tsangan",
"65_ansi_blocker_tsangan_split_bs",
"65_iso_blocker",
"65_iso_blocker_split_bs",
"65_iso_blocker_tsangan",
"65_iso_blocker_tsangan_split_bs"
],
"layouts": {
"LAYOUT_65_ansi_blocker": {
"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, 14], "x": 13, "y": 0, "w": 2},
{"matrix": [0, 15], "x": 15, "y": 0},
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"matrix": [1, 1], "x": 1.5, "y": 1},
{"matrix": [1, 2], "x": 2.5, "y": 1},
{"matrix": [1, 3], "x": 3.5, "y": 1},
{"matrix": [1, 4], "x": 4.5, "y": 1},
{"matrix": [1, 5], "x": 5.5, "y": 1},
{"matrix": [1, 6], "x": 6.5, "y": 1},
{"matrix": [1, 7], "x": 7.5, "y": 1},
{"matrix": [1, 8], "x": 8.5, "y": 1},
{"matrix": [1, 9], "x": 9.5, "y": 1},
{"matrix": [1, 10], "x": 10.5, "y": 1},
{"matrix": [1, 11], "x": 11.5, "y": 1},
{"matrix": [1, 12], "x": 12.5, "y": 1},
{"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
{"matrix": [1, 15], "x": 15, "y": 1},
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"matrix": [2, 1], "x": 1.75, "y": 2},
{"matrix": [2, 2], "x": 2.75, "y": 2},
{"matrix": [2, 3], "x": 3.75, "y": 2},
{"matrix": [2, 4], "x": 4.75, "y": 2},
{"matrix": [2, 5], "x": 5.75, "y": 2},
{"matrix": [2, 6], "x": 6.75, "y": 2},
{"matrix": [2, 7], "x": 7.75, "y": 2},
{"matrix": [2, 8], "x": 8.75, "y": 2},
{"matrix": [2, 9], "x": 9.75, "y": 2},
{"matrix": [2, 10], "x": 10.75, "y": 2},
{"matrix": [2, 11], "x": 11.75, "y": 2},
{"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
{"matrix": [2, 15], "x": 15, "y": 2},
{"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
{"matrix": [3, 2], "x": 2.25, "y": 3},
{"matrix": [3, 3], "x": 3.25, "y": 3},
{"matrix": [3, 4], "x": 4.25, "y": 3},
{"matrix": [3, 5], "x": 5.25, "y": 3},
{"matrix": [3, 6], "x": 6.25, "y": 3},
{"matrix": [3, 7], "x": 7.25, "y": 3},
{"matrix": [3, 8], "x": 8.25, "y": 3},
{"matrix": [3, 9], "x": 9.25, "y": 3},
{"matrix": [3, 10], "x": 10.25, "y": 3},
{"matrix": [3, 11], "x": 11.25, "y": 3},
{"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
{"matrix": [3, 13], "x": 14, "y": 3},
{"matrix": [3, 15], "x": 15, "y": 3},
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
{"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
{"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
{"matrix": [4, 9], "x": 10, "y": 4, "w": 1.25},
{"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
{"matrix": [4, 12], "x": 13, "y": 4},
{"matrix": [4, 13], "x": 14, "y": 4},
{"matrix": [4, 15], "x": 15, "y": 4}
]
},
"LAYOUT_65_ansi_blocker_split_bs": {
"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},
{"matrix": [0, 14], "x": 14, "y": 0},
{"matrix": [0, 15], "x": 15, "y": 0},
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"matrix": [1, 1], "x": 1.5, "y": 1},
{"matrix": [1, 2], "x": 2.5, "y": 1},
{"matrix": [1, 3], "x": 3.5, "y": 1},
{"matrix": [1, 4], "x": 4.5, "y": 1},
{"matrix": [1, 5], "x": 5.5, "y": 1},
{"matrix": [1, 6], "x": 6.5, "y": 1},
{"matrix": [1, 7], "x": 7.5, "y": 1},
{"matrix": [1, 8], "x": 8.5, "y": 1},
{"matrix": [1, 9], "x": 9.5, "y": 1},
{"matrix": [1, 10], "x": 10.5, "y": 1},
{"matrix": [1, 11], "x": 11.5, "y": 1},
{"matrix": [1, 12], "x": 12.5, "y": 1},
{"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
{"matrix": [1, 15], "x": 15, "y": 1},
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"matrix": [2, 1], "x": 1.75, "y": 2},
{"matrix": [2, 2], "x": 2.75, "y": 2},
{"matrix": [2, 3], "x": 3.75, "y": 2},
{"matrix": [2, 4], "x": 4.75, "y": 2},
{"matrix": [2, 5], "x": 5.75, "y": 2},
{"matrix": [2, 6], "x": 6.75, "y": 2},
{"matrix": [2, 7], "x": 7.75, "y": 2},
{"matrix": [2, 8], "x": 8.75, "y": 2},
{"matrix": [2, 9], "x": 9.75, "y": 2},
{"matrix": [2, 10], "x": 10.75, "y": 2},
{"matrix": [2, 11], "x": 11.75, "y": 2},
{"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
{"matrix": [2, 15], "x": 15, "y": 2},
{"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
{"matrix": [3, 2], "x": 2.25, "y": 3},
{"matrix": [3, 3], "x": 3.25, "y": 3},
{"matrix": [3, 4], "x": 4.25, "y": 3},
{"matrix": [3, 5], "x": 5.25, "y": 3},
{"matrix": [3, 6], "x": 6.25, "y": 3},
{"matrix": [3, 7], "x": 7.25, "y": 3},
{"matrix": [3, 8], "x": 8.25, "y": 3},
{"matrix": [3, 9], "x": 9.25, "y": 3},
{"matrix": [3, 10], "x": 10.25, "y": 3},
{"matrix": [3, 11], "x": 11.25, "y": 3},
{"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
{"matrix": [3, 13], "x": 14, "y": 3},
{"matrix": [3, 15], "x": 15, "y": 3},
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
{"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
{"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
{"matrix": [4, 9], "x": 10, "y": 4, "w": 1.25},
{"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
{"matrix": [4, 12], "x": 13, "y": 4},
{"matrix": [4, 13], "x": 14, "y": 4},
{"matrix": [4, 15], "x": 15, "y": 4}
]
},
"LAYOUT_65_ansi_blocker_split_space": {
"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, 14], "x": 13, "y": 0, "w": 2},
{"matrix": [0, 15], "x": 15, "y": 0},
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"matrix": [1, 1], "x": 1.5, "y": 1},
{"matrix": [1, 2], "x": 2.5, "y": 1},
{"matrix": [1, 3], "x": 3.5, "y": 1},
{"matrix": [1, 4], "x": 4.5, "y": 1},
{"matrix": [1, 5], "x": 5.5, "y": 1},
{"matrix": [1, 6], "x": 6.5, "y": 1},
{"matrix": [1, 7], "x": 7.5, "y": 1},
{"matrix": [1, 8], "x": 8.5, "y": 1},
{"matrix": [1, 9], "x": 9.5, "y": 1},
{"matrix": [1, 10], "x": 10.5, "y": 1},
{"matrix": [1, 11], "x": 11.5, "y": 1},
{"matrix": [1, 12], "x": 12.5, "y": 1},
{"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
{"matrix": [1, 15], "x": 15, "y": 1},
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"matrix": [2, 1], "x": 1.75, "y": 2},
{"matrix": [2, 2], "x": 2.75, "y": 2},
{"matrix": [2, 3], "x": 3.75, "y": 2},
{"matrix": [2, 4], "x": 4.75, "y": 2},
{"matrix": [2, 5], "x": 5.75, "y": 2},
{"matrix": [2, 6], "x": 6.75, "y": 2},
{"matrix": [2, 7], "x": 7.75, "y": 2},
{"matrix": [2, 8], "x": 8.75, "y": 2},
{"matrix": [2, 9], "x": 9.75, "y": 2},
{"matrix": [2, 10], "x": 10.75, "y": 2},
{"matrix": [2, 11], "x": 11.75, "y": 2},
{"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
{"matrix": [2, 15], "x": 15, "y": 2},
{"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
{"matrix": [3, 2], "x": 2.25, "y": 3},
{"matrix": [3, 3], "x": 3.25, "y": 3},
{"matrix": [3, 4], "x": 4.25, "y": 3},
{"matrix": [3, 5], "x": 5.25, "y": 3},
{"matrix": [3, 6], "x": 6.25, "y": 3},
{"matrix": [3, 7], "x": 7.25, "y": 3},
{"matrix": [3, 8], "x": 8.25, "y": 3},
{"matrix": [3, 9], "x": 9.25, "y": 3},
{"matrix": [3, 10], "x": 10.25, "y": 3},
{"matrix": [3, 11], "x": 11.25, "y": 3},
{"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
{"matrix": [3, 13], "x": 14, "y": 3},
{"matrix": [3, 15], "x": 15, "y": 3},
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
{"matrix": [4, 1], "x": 1.5, "y": 4},
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
{"matrix": [4, 5], "x": 4, "y": 4, "w": 2.25},
{"matrix": [4, 6], "x": 6.25, "y": 4, "w": 2},
{"matrix": [4, 7], "x": 8.25, "y": 4, "w": 2.75},
{"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
{"matrix": [4, 12], "x": 13, "y": 4},
{"matrix": [4, 13], "x": 14, "y": 4},
{"matrix": [4, 15], "x": 15, "y": 4}
]
},
"LAYOUT_65_ansi_blocker_tsangan": {
"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, 14], "x": 13, "y": 0, "w": 2},
{"matrix": [0, 15], "x": 15, "y": 0},
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"matrix": [1, 1], "x": 1.5, "y": 1},
{"matrix": [1, 2], "x": 2.5, "y": 1},
{"matrix": [1, 3], "x": 3.5, "y": 1},
{"matrix": [1, 4], "x": 4.5, "y": 1},
{"matrix": [1, 5], "x": 5.5, "y": 1},
{"matrix": [1, 6], "x": 6.5, "y": 1},
{"matrix": [1, 7], "x": 7.5, "y": 1},
{"matrix": [1, 8], "x": 8.5, "y": 1},
{"matrix": [1, 9], "x": 9.5, "y": 1},
{"matrix": [1, 10], "x": 10.5, "y": 1},
{"matrix": [1, 11], "x": 11.5, "y": 1},
{"matrix": [1, 12], "x": 12.5, "y": 1},
{"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
{"matrix": [1, 15], "x": 15, "y": 1},
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"matrix": [2, 1], "x": 1.75, "y": 2},
{"matrix": [2, 2], "x": 2.75, "y": 2},
{"matrix": [2, 3], "x": 3.75, "y": 2},
{"matrix": [2, 4], "x": 4.75, "y": 2},
{"matrix": [2, 5], "x": 5.75, "y": 2},
{"matrix": [2, 6], "x": 6.75, "y": 2},
{"matrix": [2, 7], "x": 7.75, "y": 2},
{"matrix": [2, 8], "x": 8.75, "y": 2},
{"matrix": [2, 9], "x": 9.75, "y": 2},
{"matrix": [2, 10], "x": 10.75, "y": 2},
{"matrix": [2, 11], "x": 11.75, "y": 2},
{"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
{"matrix": [2, 15], "x": 15, "y": 2},
{"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
{"matrix": [3, 2], "x": 2.25, "y": 3},
{"matrix": [3, 3], "x": 3.25, "y": 3},
{"matrix": [3, 4], "x": 4.25, "y": 3},
{"matrix": [3, 5], "x": 5.25, "y": 3},
{"matrix": [3, 6], "x": 6.25, "y": 3},
{"matrix": [3, 7], "x": 7.25, "y": 3},
{"matrix": [3, 8], "x": 8.25, "y": 3},
{"matrix": [3, 9], "x": 9.25, "y": 3},
{"matrix": [3, 10], "x": 10.25, "y": 3},
{"matrix": [3, 11], "x": 11.25, "y": 3},
{"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
{"matrix": [3, 13], "x": 14, "y": 3},
{"matrix": [3, 15], "x": 15, "y": 3},
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
{"matrix": [4, 1], "x": 1.5, "y": 4},
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
{"matrix": [4, 6], "x": 4, "y": 4, "w": 7},
{"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
{"matrix": [4, 12], "x": 13, "y": 4},
{"matrix": [4, 13], "x": 14, "y": 4},
{"matrix": [4, 15], "x": 15, "y": 4}
]
},
"LAYOUT_65_ansi_blocker_tsangan_split_bs": {
"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},
{"matrix": [0, 14], "x": 14, "y": 0},
{"matrix": [0, 15], "x": 15, "y": 0},
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"matrix": [1, 1], "x": 1.5, "y": 1},
{"matrix": [1, 2], "x": 2.5, "y": 1},
{"matrix": [1, 3], "x": 3.5, "y": 1},
{"matrix": [1, 4], "x": 4.5, "y": 1},
{"matrix": [1, 5], "x": 5.5, "y": 1},
{"matrix": [1, 6], "x": 6.5, "y": 1},
{"matrix": [1, 7], "x": 7.5, "y": 1},
{"matrix": [1, 8], "x": 8.5, "y": 1},
{"matrix": [1, 9], "x": 9.5, "y": 1},
{"matrix": [1, 10], "x": 10.5, "y": 1},
{"matrix": [1, 11], "x": 11.5, "y": 1},
{"matrix": [1, 12], "x": 12.5, "y": 1},
{"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
{"matrix": [1, 15], "x": 15, "y": 1},
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"matrix": [2, 1], "x": 1.75, "y": 2},
{"matrix": [2, 2], "x": 2.75, "y": 2},
{"matrix": [2, 3], "x": 3.75, "y": 2},
{"matrix": [2, 4], "x": 4.75, "y": 2},
{"matrix": [2, 5], "x": 5.75, "y": 2},
{"matrix": [2, 6], "x": 6.75, "y": 2},
{"matrix": [2, 7], "x": 7.75, "y": 2},
{"matrix": [2, 8], "x": 8.75, "y": 2},
{"matrix": [2, 9], "x": 9.75, "y": 2},
{"matrix": [2, 10], "x": 10.75, "y": 2},
{"matrix": [2, 11], "x": 11.75, "y": 2},
{"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
{"matrix": [2, 15], "x": 15, "y": 2},
{"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
{"matrix": [3, 2], "x": 2.25, "y": 3},
{"matrix": [3, 3], "x": 3.25, "y": 3},
{"matrix": [3, 4], "x": 4.25, "y": 3},
{"matrix": [3, 5], "x": 5.25, "y": 3},
{"matrix": [3, 6], "x": 6.25, "y": 3},
{"matrix": [3, 7], "x": 7.25, "y": 3},
{"matrix": [3, 8], "x": 8.25, "y": 3},
{"matrix": [3, 9], "x": 9.25, "y": 3},
{"matrix": [3, 10], "x": 10.25, "y": 3},
{"matrix": [3, 11], "x": 11.25, "y": 3},
{"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
{"matrix": [3, 13], "x": 14, "y": 3},
{"matrix": [3, 15], "x": 15, "y": 3},
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
{"matrix": [4, 1], "x": 1.5, "y": 4},
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
{"matrix": [4, 6], "x": 4, "y": 4, "w": 7},
{"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
{"matrix": [4, 12], "x": 13, "y": 4},
{"matrix": [4, 13], "x": 14, "y": 4},
{"matrix": [4, 15], "x": 15, "y": 4}
]
},
"LAYOUT_65_iso_blocker": {
"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, 14], "x": 13, "y": 0, "w": 2},
{"matrix": [0, 15], "x": 15, "y": 0},
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"matrix": [1, 1], "x": 1.5, "y": 1},
{"matrix": [1, 2], "x": 2.5, "y": 1},
{"matrix": [1, 3], "x": 3.5, "y": 1},
{"matrix": [1, 4], "x": 4.5, "y": 1},
{"matrix": [1, 5], "x": 5.5, "y": 1},
{"matrix": [1, 6], "x": 6.5, "y": 1},
{"matrix": [1, 7], "x": 7.5, "y": 1},
{"matrix": [1, 8], "x": 8.5, "y": 1},
{"matrix": [1, 9], "x": 9.5, "y": 1},
{"matrix": [1, 10], "x": 10.5, "y": 1},
{"matrix": [1, 11], "x": 11.5, "y": 1},
{"matrix": [1, 12], "x": 12.5, "y": 1},
{"matrix": [1, 15], "x": 15, "y": 1},
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"matrix": [2, 1], "x": 1.75, "y": 2},
{"matrix": [2, 2], "x": 2.75, "y": 2},
{"matrix": [2, 3], "x": 3.75, "y": 2},
{"matrix": [2, 4], "x": 4.75, "y": 2},
{"matrix": [2, 5], "x": 5.75, "y": 2},
{"matrix": [2, 6], "x": 6.75, "y": 2},
{"matrix": [2, 7], "x": 7.75, "y": 2},
{"matrix": [2, 8], "x": 8.75, "y": 2},
{"matrix": [2, 9], "x": 9.75, "y": 2},
{"matrix": [2, 10], "x": 10.75, "y": 2},
{"matrix": [2, 11], "x": 11.75, "y": 2},
{"matrix": [1, 13], "x": 12.75, "y": 2},
{"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
{"matrix": [2, 15], "x": 15, "y": 2},
{"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
{"matrix": [3, 1], "x": 1.25, "y": 3},
{"matrix": [3, 2], "x": 2.25, "y": 3},
{"matrix": [3, 3], "x": 3.25, "y": 3},
{"matrix": [3, 4], "x": 4.25, "y": 3},
{"matrix": [3, 5], "x": 5.25, "y": 3},
{"matrix": [3, 6], "x": 6.25, "y": 3},
{"matrix": [3, 7], "x": 7.25, "y": 3},
{"matrix": [3, 8], "x": 8.25, "y": 3},
{"matrix": [3, 9], "x": 9.25, "y": 3},
{"matrix": [3, 10], "x": 10.25, "y": 3},
{"matrix": [3, 11], "x": 11.25, "y": 3},
{"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
{"matrix": [3, 13], "x": 14, "y": 3},
{"matrix": [3, 15], "x": 15, "y": 3},
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
{"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
{"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
{"matrix": [4, 9], "x": 10, "y": 4, "w": 1.25},
{"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
{"matrix": [4, 12], "x": 13, "y": 4},
{"matrix": [4, 13], "x": 14, "y": 4},
{"matrix": [4, 15], "x": 15, "y": 4}
]
},
"LAYOUT_65_iso_blocker_split_bs": {
"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},
{"matrix": [0, 14], "x": 14, "y": 0},
{"matrix": [0, 15], "x": 15, "y": 0},
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"matrix": [1, 1], "x": 1.5, "y": 1},
{"matrix": [1, 2], "x": 2.5, "y": 1},
{"matrix": [1, 3], "x": 3.5, "y": 1},
{"matrix": [1, 4], "x": 4.5, "y": 1},
{"matrix": [1, 5], "x": 5.5, "y": 1},
{"matrix": [1, 6], "x": 6.5, "y": 1},
{"matrix": [1, 7], "x": 7.5, "y": 1},
{"matrix": [1, 8], "x": 8.5, "y": 1},
{"matrix": [1, 9], "x": 9.5, "y": 1},
{"matrix": [1, 10], "x": 10.5, "y": 1},
{"matrix": [1, 11], "x": 11.5, "y": 1},
{"matrix": [1, 12], "x": 12.5, "y": 1},
{"matrix": [1, 15], "x": 15, "y": 1},
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"matrix": [2, 1], "x": 1.75, "y": 2},
{"matrix": [2, 2], "x": 2.75, "y": 2},
{"matrix": [2, 3], "x": 3.75, "y": 2},
{"matrix": [2, 4], "x": 4.75, "y": 2},
{"matrix": [2, 5], "x": 5.75, "y": 2},
{"matrix": [2, 6], "x": 6.75, "y": 2},
{"matrix": [2, 7], "x": 7.75, "y": 2},
{"matrix": [2, 8], "x": 8.75, "y": 2},
{"matrix": [2, 9], "x": 9.75, "y": 2},
{"matrix": [2, 10], "x": 10.75, "y": 2},
{"matrix": [2, 11], "x": 11.75, "y": 2},
{"matrix": [1, 13], "x": 12.75, "y": 2},
{"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
{"matrix": [2, 15], "x": 15, "y": 2},
{"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
{"matrix": [3, 1], "x": 1.25, "y": 3},
{"matrix": [3, 2], "x": 2.25, "y": 3},
{"matrix": [3, 3], "x": 3.25, "y": 3},
{"matrix": [3, 4], "x": 4.25, "y": 3},
{"matrix": [3, 5], "x": 5.25, "y": 3},
{"matrix": [3, 6], "x": 6.25, "y": 3},
{"matrix": [3, 7], "x": 7.25, "y": 3},
{"matrix": [3, 8], "x": 8.25, "y": 3},
{"matrix": [3, 9], "x": 9.25, "y": 3},
{"matrix": [3, 10], "x": 10.25, "y": 3},
{"matrix": [3, 11], "x": 11.25, "y": 3},
{"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
{"matrix": [3, 13], "x": 14, "y": 3},
{"matrix": [3, 15], "x": 15, "y": 3},
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
{"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
{"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
{"matrix": [4, 9], "x": 10, "y": 4, "w": 1.25},
{"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
{"matrix": [4, 12], "x": 13, "y": 4},
{"matrix": [4, 13], "x": 14, "y": 4},
{"matrix": [4, 15], "x": 15, "y": 4}
]
},
"LAYOUT_65_iso_blocker_tsangan": {
"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, 14], "x": 13, "y": 0, "w": 2},
{"matrix": [0, 15], "x": 15, "y": 0},
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"matrix": [1, 1], "x": 1.5, "y": 1},
{"matrix": [1, 2], "x": 2.5, "y": 1},
{"matrix": [1, 3], "x": 3.5, "y": 1},
{"matrix": [1, 4], "x": 4.5, "y": 1},
{"matrix": [1, 5], "x": 5.5, "y": 1},
{"matrix": [1, 6], "x": 6.5, "y": 1},
{"matrix": [1, 7], "x": 7.5, "y": 1},
{"matrix": [1, 8], "x": 8.5, "y": 1},
{"matrix": [1, 9], "x": 9.5, "y": 1},
{"matrix": [1, 10], "x": 10.5, "y": 1},
{"matrix": [1, 11], "x": 11.5, "y": 1},
{"matrix": [1, 12], "x": 12.5, "y": 1},
{"matrix": [1, 15], "x": 15, "y": 1},
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"matrix": [2, 1], "x": 1.75, "y": 2},
{"matrix": [2, 2], "x": 2.75, "y": 2},
{"matrix": [2, 3], "x": 3.75, "y": 2},
{"matrix": [2, 4], "x": 4.75, "y": 2},
{"matrix": [2, 5], "x": 5.75, "y": 2},
{"matrix": [2, 6], "x": 6.75, "y": 2},
{"matrix": [2, 7], "x": 7.75, "y": 2},
{"matrix": [2, 8], "x": 8.75, "y": 2},
{"matrix": [2, 9], "x": 9.75, "y": 2},
{"matrix": [2, 10], "x": 10.75, "y": 2},
{"matrix": [2, 11], "x": 11.75, "y": 2},
{"matrix": [1, 13], "x": 12.75, "y": 2},
{"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
{"matrix": [2, 15], "x": 15, "y": 2},
{"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
{"matrix": [3, 1], "x": 1.25, "y": 3},
{"matrix": [3, 2], "x": 2.25, "y": 3},
{"matrix": [3, 3], "x": 3.25, "y": 3},
{"matrix": [3, 4], "x": 4.25, "y": 3},
{"matrix": [3, 5], "x": 5.25, "y": 3},
{"matrix": [3, 6], "x": 6.25, "y": 3},
{"matrix": [3, 7], "x": 7.25, "y": 3},
{"matrix": [3, 8], "x": 8.25, "y": 3},
{"matrix": [3, 9], "x": 9.25, "y": 3},
{"matrix": [3, 10], "x": 10.25, "y": 3},
{"matrix": [3, 11], "x": 11.25, "y": 3},
{"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
{"matrix": [3, 13], "x": 14, "y": 3},
{"matrix": [3, 15], "x": 15, "y": 3},
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
{"matrix": [4, 1], "x": 1.5, "y": 4},
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
{"matrix": [4, 6], "x": 4, "y": 4, "w": 7},
{"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
{"matrix": [4, 12], "x": 13, "y": 4},
{"matrix": [4, 13], "x": 14, "y": 4},
{"matrix": [4, 15], "x": 15, "y": 4}
]
},
"LAYOUT_65_iso_blocker_tsangan_split_bs": {
"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},
{"matrix": [0, 14], "x": 14, "y": 0},
{"matrix": [0, 15], "x": 15, "y": 0},
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"matrix": [1, 1], "x": 1.5, "y": 1},
{"matrix": [1, 2], "x": 2.5, "y": 1},
{"matrix": [1, 3], "x": 3.5, "y": 1},
{"matrix": [1, 4], "x": 4.5, "y": 1},
{"matrix": [1, 5], "x": 5.5, "y": 1},
{"matrix": [1, 6], "x": 6.5, "y": 1},
{"matrix": [1, 7], "x": 7.5, "y": 1},
{"matrix": [1, 8], "x": 8.5, "y": 1},
{"matrix": [1, 9], "x": 9.5, "y": 1},
{"matrix": [1, 10], "x": 10.5, "y": 1},
{"matrix": [1, 11], "x": 11.5, "y": 1},
{"matrix": [1, 12], "x": 12.5, "y": 1},
{"matrix": [1, 15], "x": 15, "y": 1},
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"matrix": [2, 1], "x": 1.75, "y": 2},
{"matrix": [2, 2], "x": 2.75, "y": 2},
{"matrix": [2, 3], "x": 3.75, "y": 2},
{"matrix": [2, 4], "x": 4.75, "y": 2},
{"matrix": [2, 5], "x": 5.75, "y": 2},
{"matrix": [2, 6], "x": 6.75, "y": 2},
{"matrix": [2, 7], "x": 7.75, "y": 2},
{"matrix": [2, 8], "x": 8.75, "y": 2},
{"matrix": [2, 9], "x": 9.75, "y": 2},
{"matrix": [2, 10], "x": 10.75, "y": 2},
{"matrix": [2, 11], "x": 11.75, "y": 2},
{"matrix": [1, 13], "x": 12.75, "y": 2},
{"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
{"matrix": [2, 15], "x": 15, "y": 2},
{"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
{"matrix": [3, 1], "x": 1.25, "y": 3},
{"matrix": [3, 2], "x": 2.25, "y": 3},
{"matrix": [3, 3], "x": 3.25, "y": 3},
{"matrix": [3, 4], "x": 4.25, "y": 3},
{"matrix": [3, 5], "x": 5.25, "y": 3},
{"matrix": [3, 6], "x": 6.25, "y": 3},
{"matrix": [3, 7], "x": 7.25, "y": 3},
{"matrix": [3, 8], "x": 8.25, "y": 3},
{"matrix": [3, 9], "x": 9.25, "y": 3},
{"matrix": [3, 10], "x": 10.25, "y": 3},
{"matrix": [3, 11], "x": 11.25, "y": 3},
{"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
{"matrix": [3, 13], "x": 14, "y": 3},
{"matrix": [3, 15], "x": 15, "y": 3},
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
{"matrix": [4, 1], "x": 1.5, "y": 4},
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
{"matrix": [4, 6], "x": 4, "y": 4, "w": 7},
{"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
{"matrix": [4, 12], "x": 13, "y": 4},
{"matrix": [4, 13], "x": 14, "y": 4},
{"matrix": [4, 15], "x": 15, "y": 4}
]
},
"LAYOUT_all": {
"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},
{"matrix": [0, 14], "x": 14, "y": 0},
{"matrix": [0, 15], "x": 15, "y": 0},
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"matrix": [1, 1], "x": 1.5, "y": 1},
{"matrix": [1, 2], "x": 2.5, "y": 1},
{"matrix": [1, 3], "x": 3.5, "y": 1},
{"matrix": [1, 4], "x": 4.5, "y": 1},
{"matrix": [1, 5], "x": 5.5, "y": 1},
{"matrix": [1, 6], "x": 6.5, "y": 1},
{"matrix": [1, 7], "x": 7.5, "y": 1},
{"matrix": [1, 8], "x": 8.5, "y": 1},
{"matrix": [1, 9], "x": 9.5, "y": 1},
{"matrix": [1, 10], "x": 10.5, "y": 1},
{"matrix": [1, 11], "x": 11.5, "y": 1},
{"matrix": [1, 12], "x": 12.5, "y": 1},
{"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
{"matrix": [1, 15], "x": 15, "y": 1},
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"matrix": [2, 1], "x": 1.75, "y": 2},
{"matrix": [2, 2], "x": 2.75, "y": 2},
{"matrix": [2, 3], "x": 3.75, "y": 2},
{"matrix": [2, 4], "x": 4.75, "y": 2},
{"matrix": [2, 5], "x": 5.75, "y": 2},
{"matrix": [2, 6], "x": 6.75, "y": 2},
{"matrix": [2, 7], "x": 7.75, "y": 2},
{"matrix": [2, 8], "x": 8.75, "y": 2},
{"matrix": [2, 9], "x": 9.75, "y": 2},
{"matrix": [2, 10], "x": 10.75, "y": 2},
{"matrix": [2, 11], "x": 11.75, "y": 2},
{"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
{"matrix": [2, 15], "x": 15, "y": 2},
{"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
{"matrix": [3, 1], "x": 1.25, "y": 3},
{"matrix": [3, 2], "x": 2.25, "y": 3},
{"matrix": [3, 3], "x": 3.25, "y": 3},
{"matrix": [3, 4], "x": 4.25, "y": 3},
{"matrix": [3, 5], "x": 5.25, "y": 3},
{"matrix": [3, 6], "x": 6.25, "y": 3},
{"matrix": [3, 7], "x": 7.25, "y": 3},
{"matrix": [3, 8], "x": 8.25, "y": 3},
{"matrix": [3, 9], "x": 9.25, "y": 3},
{"matrix": [3, 10], "x": 10.25, "y": 3},
{"matrix": [3, 11], "x": 11.25, "y": 3},
{"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
{"matrix": [3, 13], "x": 14, "y": 3},
{"matrix": [3, 15], "x": 15, "y": 3},
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
{"matrix": [4, 1], "x": 1.5, "y": 4},
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
{"matrix": [4, 5], "x": 4, "y": 4, "w": 2.25},
{"matrix": [4, 6], "x": 6.25, "y": 4, "w": 2},
{"matrix": [4, 7], "x": 8.25, "y": 4, "w": 1.75},
{"matrix": [4, 9], "x": 10, "y": 4, "w": 1.25},
{"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
{"matrix": [4, 12], "x": 13, "y": 4},
{"matrix": [4, 13], "x": 14, "y": 4},
{"matrix": [4, 15], "x": 15, "y": 4}
]
}
}
}

View File

@ -0,0 +1,23 @@
// Copyright 2023 lendunistus
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Main layer
[0] = LAYOUT_all(
KC_ESC, 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_HOME,
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_NUHS, KC_PGUP,
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_PGDN,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
),
// Function layer
[1] = LAYOUT_all(
KC_GRV, 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_DEL, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, KC_INS, _______, _______, _______, _______, KC_PSCR, KC_SCRL, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PAUS, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};

View File

@ -0,0 +1,23 @@
// Copyright 2023 lendunistus
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Main layer
[0] = LAYOUT_all(
KC_ESC, 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_HOME,
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_NUHS, KC_PGUP,
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_PGDN,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
),
// Function layer
[1] = LAYOUT_all(
KC_GRV, 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_DEL, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, KC_INS, _______, _______, _______, _______, KC_PSCR, KC_SCRL, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PAUS, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};

View File

@ -0,0 +1 @@
VIA_ENABLE = yes

View File

@ -0,0 +1,24 @@
# rpneko65
![rpneko65](https://i.imgur.com/QUIUSqJh.png)\
*PCB rear side*
A multi-layout PCB designed to fit the Bakeneko65 case by kkatano.
* Keyboard Maintainer: [lendunistus](https://github.com/lendunistus)
* Hardware Supported: RPNeko65 PCB; [Bakeneko65 V3 Case](https://github.com/kkatano/bakeneko-65)
* Hardware Availability: [Open source on GitHub](https://github.com/lendunistus/rpneko65)
Make example for this keyboard (after setting up your build environment):
make lendunistus/rpneko65/rev1:default
Flashing example for this keyboard:
make lendunistus/rpneko65/rev1: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
Plug in the keyboard while holding down either the ESC key or the button on the back of the PCB labelled "USB Boot".

View File

@ -0,0 +1,34 @@
/*
Copyright 2022 Stefan Sundin "4pplet" <mail@4pplet.com>
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 "quantum.h"
bool led_update_kb(led_t led_state) {
bool res = led_update_user(led_state);
if (CAPS_LOCK_ENABLE && res) {
if(led_state.caps_lock) {
#ifdef CAPS_LOCK_COLOR
rgblight_sethsv_at(CAPS_LOCK_COLOR, 0);
#else
rgblight_sethsv_at(rgblight_get_hue(),rgblight_get_sat(),rgblight_get_val(), 0);
#endif
}
else{
rgblight_sethsv_at(HSV_BLACK, 0);
}
}
return res;
}

View File

@ -0,0 +1 @@
# This file intentionally left blank

View File

@ -25,9 +25,10 @@
}, },
"processor": "atmega32u4", "processor": "atmega32u4",
"bootloader": "atmel-dfu", "bootloader": "atmel-dfu",
"layout_aliases": { "layout_aliases": {
"LAYOUT_all": "LAYOUT_alice_split_bs" "LAYOUT_all": "LAYOUT_alice_split_bs"
}, },
"community_layouts": ["alice", "alice_split_bs"],
"layouts": { "layouts": {
"LAYOUT_alice": { "LAYOUT_alice": {
"layout": [ "layout": [

View File

@ -0,0 +1,24 @@
# Matrix Diagram for Linworks Dolice
```
┌───────┐
2u Backspace │17 │
└───────┘
┌───┐ ┌───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┬───┬───┐
│00 │ │10 │01 │11 │02 │12 │03 │13 │ │14 │05 │15 │06 │16 │07 │17 │57 │
┌┴──┬┘ ┌┴───┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┘ ┌─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┐
│20 │ │30 │21 │22 │32 │23 │33 │ │24 │34 │25 │35 │26 │36 │27 │37 │
┌┴──┬┘ ┌┴─────┼───┼───┼───┼───┼───┤ └┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴──────┴┐
│40 │ │50 │41 │42 │52 │43 │53 │ │44 │54 │45 │55 │46 │56 │47 │
└───┘ ┌┴──────┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ ┌─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───────┬──┴┐
│70 │61 │62 │72 │63 │73 │ │64 │74 │65 │75 │66 │76 │67 │77 │
├─────┬──┴──┬┴───┴┬──┴───┴┬──┴──┐ ├───┴───┴──┬┴───┴┬──┴───┴──────┬──┴──┬┘
│80 │ │81 │82 │83 │ │84 │85 │ │87 │
└─────┘ └─────┴───────┴─────┘ └──────────┴─────┘ └─────┘
┌────────────┐
2.75u RShift │67 │
└────────────┘
┌─────────┬───┐
│82 │83 │ 2.25u-1u Left Space
└─────────┴───┘
```

View File

@ -0,0 +1,9 @@
// Copyright 2023 MaiTheSan
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define HAL_USE_SPI TRUE
#define SPI_USE_WAIT TRUE
#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
#include_next <halconf.h>

View File

@ -0,0 +1,766 @@
{
"keyboard_name": "Okayu",
"manufacturer": "Salane",
"url": "",
"maintainer": "Mai The San",
"usb": {
"vid": "0x5350",
"pid": "0x00A1",
"device_version": "1.0.0",
"force_nkro": true
},
"features": {
"bootmagic": true,
"mousekey": true,
"extrakey": true,
"console": true,
"command": false,
"nkro": true,
"rgblight": true
},
"community_layouts": [
"60_ansi",
"60_ansi_split_bs_rshift",
"60_ansi_tsangan",
"60_tsangan_hhkb",
"60_hhkb",
"60_iso",
"60_iso_split_bs_rshift",
"60_iso_tsangan"
],
"matrix_pins": {
"cols": ["A9", "A0", "A8", "C13", "A1", "A2", "B11", "B10", "B1", "B0", "A7", "A6", "A5", "A4"],
"rows": ["B3", "A15", "A3", "A10", "B14"]
},
"diode_direction": "COL2ROW",
"indicators": {
"caps_lock": "B12",
"on_state": 0
},
"ws2812": {
"pin": "B15",
"driver": "spi"
},
"rgblight": {
"led_count": 24,
"sleep": true,
"animations": {
"alternating": true,
"breathing": true,
"christmas": true,
"knight": true,
"rainbow_mood": true,
"rainbow_swirl": true,
"rgb_test": true,
"snake": true,
"static_gradient": true,
"twinkle": true
}
},
"layouts": {
"LAYOUT_all": {
"layout": [
{"label": "K00", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "K01", "matrix": [0, 1], "x": 1, "y": 0},
{"label": "K02", "matrix": [0, 2], "x": 2, "y": 0},
{"label": "K03", "matrix": [0, 3], "x": 3, "y": 0},
{"label": "K04", "matrix": [0, 4], "x": 4, "y": 0},
{"label": "K05", "matrix": [0, 5], "x": 5, "y": 0},
{"label": "K06", "matrix": [0, 6], "x": 6, "y": 0},
{"label": "K07", "matrix": [0, 7], "x": 7, "y": 0},
{"label": "K08", "matrix": [0, 8], "x": 8, "y": 0},
{"label": "K09", "matrix": [0, 9], "x": 9, "y": 0},
{"label": "K0A", "matrix": [0, 10], "x": 10, "y": 0},
{"label": "K0B", "matrix": [0, 11], "x": 11, "y": 0},
{"label": "K0C", "matrix": [0, 12], "x": 12, "y": 0},
{"label": "K0D", "matrix": [0, 13], "x": 13, "y": 0},
{"label": "K2D", "matrix": [2, 13], "x": 14, "y": 0},
{"label": "K10", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"label": "K11", "matrix": [1, 1], "x": 1.5, "y": 1},
{"label": "K12", "matrix": [1, 2], "x": 2.5, "y": 1},
{"label": "K13", "matrix": [1, 3], "x": 3.5, "y": 1},
{"label": "K14", "matrix": [1, 4], "x": 4.5, "y": 1},
{"label": "K15", "matrix": [1, 5], "x": 5.5, "y": 1},
{"label": "K16", "matrix": [1, 6], "x": 6.5, "y": 1},
{"label": "K17", "matrix": [1, 7], "x": 7.5, "y": 1},
{"label": "K18", "matrix": [1, 8], "x": 8.5, "y": 1},
{"label": "K19", "matrix": [1, 9], "x": 9.5, "y": 1},
{"label": "K1A", "matrix": [1, 10], "x": 10.5, "y": 1},
{"label": "K1B", "matrix": [1, 11], "x": 11.5, "y": 1},
{"label": "K1C", "matrix": [1, 12], "x": 12.5, "y": 1},
{"label": "K1D", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
{"label": "K20", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"label": "K21", "matrix": [2, 1], "x": 1.75, "y": 2},
{"label": "K22", "matrix": [2, 2], "x": 2.75, "y": 2},
{"label": "K23", "matrix": [2, 3], "x": 3.75, "y": 2},
{"label": "K24", "matrix": [2, 4], "x": 4.75, "y": 2},
{"label": "K25", "matrix": [2, 5], "x": 5.75, "y": 2},
{"label": "K26", "matrix": [2, 6], "x": 6.75, "y": 2},
{"label": "K27", "matrix": [2, 7], "x": 7.75, "y": 2},
{"label": "K28", "matrix": [2, 8], "x": 8.75, "y": 2},
{"label": "K29", "matrix": [2, 9], "x": 9.75, "y": 2},
{"label": "K2A", "matrix": [2, 10], "x": 10.75, "y": 2},
{"label": "K2B", "matrix": [2, 11], "x": 11.75, "y": 2},
{"label": "K2C", "matrix": [2, 12], "x": 12.75, "y": 2, "w": 2.25},
{"label": "K30", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
{"label": "K31", "matrix": [3, 1], "x": 1.25, "y": 3},
{"label": "K32", "matrix": [3, 2], "x": 2.25, "y": 3},
{"label": "K33", "matrix": [3, 3], "x": 3.25, "y": 3},
{"label": "K34", "matrix": [3, 4], "x": 4.25, "y": 3},
{"label": "K35", "matrix": [3, 5], "x": 5.25, "y": 3},
{"label": "K36", "matrix": [3, 6], "x": 6.25, "y": 3},
{"label": "K37", "matrix": [3, 7], "x": 7.25, "y": 3},
{"label": "K38", "matrix": [3, 8], "x": 8.25, "y": 3},
{"label": "K39", "matrix": [3, 9], "x": 9.25, "y": 3},
{"label": "K3A", "matrix": [3, 10], "x": 10.25, "y": 3},
{"label": "K3B", "matrix": [3, 11], "x": 11.25, "y": 3},
{"label": "K3C", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
{"label": "K3D", "matrix": [3, 13], "x": 14, "y": 3},
{"label": "K40", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
{"label": "K41", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
{"label": "K42", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
{"label": "K46", "matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
{"label": "K4A", "matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
{"label": "K4B", "matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
{"label": "K4C", "matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25},
{"label": "K4D", "matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}
]
},
"LAYOUT_60_ansi": {
"layout": [
{"label": "K00", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "K01", "matrix": [0, 1], "x": 1, "y": 0},
{"label": "K02", "matrix": [0, 2], "x": 2, "y": 0},
{"label": "K03", "matrix": [0, 3], "x": 3, "y": 0},
{"label": "K04", "matrix": [0, 4], "x": 4, "y": 0},
{"label": "K05", "matrix": [0, 5], "x": 5, "y": 0},
{"label": "K06", "matrix": [0, 6], "x": 6, "y": 0},
{"label": "K07", "matrix": [0, 7], "x": 7, "y": 0},
{"label": "K08", "matrix": [0, 8], "x": 8, "y": 0},
{"label": "K09", "matrix": [0, 9], "x": 9, "y": 0},
{"label": "K0A", "matrix": [0, 10], "x": 10, "y": 0},
{"label": "K0B", "matrix": [0, 11], "x": 11, "y": 0},
{"label": "K0C", "matrix": [0, 12], "x": 12, "y": 0},
{"label": "K0D", "matrix": [0, 13], "x": 13, "y": 0, "w": 2},
{"label": "K10", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"label": "K11", "matrix": [1, 1], "x": 1.5, "y": 1},
{"label": "K12", "matrix": [1, 2], "x": 2.5, "y": 1},
{"label": "K13", "matrix": [1, 3], "x": 3.5, "y": 1},
{"label": "K14", "matrix": [1, 4], "x": 4.5, "y": 1},
{"label": "K15", "matrix": [1, 5], "x": 5.5, "y": 1},
{"label": "K16", "matrix": [1, 6], "x": 6.5, "y": 1},
{"label": "K17", "matrix": [1, 7], "x": 7.5, "y": 1},
{"label": "K18", "matrix": [1, 8], "x": 8.5, "y": 1},
{"label": "K19", "matrix": [1, 9], "x": 9.5, "y": 1},
{"label": "K1A", "matrix": [1, 10], "x": 10.5, "y": 1},
{"label": "K1B", "matrix": [1, 11], "x": 11.5, "y": 1},
{"label": "K1C", "matrix": [1, 12], "x": 12.5, "y": 1},
{"label": "K1D", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
{"label": "K20", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"label": "K21", "matrix": [2, 1], "x": 1.75, "y": 2},
{"label": "K22", "matrix": [2, 2], "x": 2.75, "y": 2},
{"label": "K23", "matrix": [2, 3], "x": 3.75, "y": 2},
{"label": "K24", "matrix": [2, 4], "x": 4.75, "y": 2},
{"label": "K25", "matrix": [2, 5], "x": 5.75, "y": 2},
{"label": "K26", "matrix": [2, 6], "x": 6.75, "y": 2},
{"label": "K27", "matrix": [2, 7], "x": 7.75, "y": 2},
{"label": "K28", "matrix": [2, 8], "x": 8.75, "y": 2},
{"label": "K29", "matrix": [2, 9], "x": 9.75, "y": 2},
{"label": "K2A", "matrix": [2, 10], "x": 10.75, "y": 2},
{"label": "K2B", "matrix": [2, 11], "x": 11.75, "y": 2},
{"label": "K2C", "matrix": [2, 12], "x": 12.75, "y": 2, "w": 2.25},
{"label": "K30", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
{"label": "K32", "matrix": [3, 2], "x": 2.25, "y": 3},
{"label": "K33", "matrix": [3, 3], "x": 3.25, "y": 3},
{"label": "K34", "matrix": [3, 4], "x": 4.25, "y": 3},
{"label": "K35", "matrix": [3, 5], "x": 5.25, "y": 3},
{"label": "K36", "matrix": [3, 6], "x": 6.25, "y": 3},
{"label": "K37", "matrix": [3, 7], "x": 7.25, "y": 3},
{"label": "K38", "matrix": [3, 8], "x": 8.25, "y": 3},
{"label": "K39", "matrix": [3, 9], "x": 9.25, "y": 3},
{"label": "K3A", "matrix": [3, 10], "x": 10.25, "y": 3},
{"label": "K3B", "matrix": [3, 11], "x": 11.25, "y": 3},
{"label": "K3C", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75},
{"label": "K40", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
{"label": "K41", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
{"label": "K42", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
{"label": "K46", "matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
{"label": "K4A", "matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
{"label": "K4B", "matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
{"label": "K4C", "matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25},
{"label": "K4D", "matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}
]
},
"LAYOUT_60_ansi_split_bs_rshift": {
"layout": [
{"label": "K00", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "K01", "matrix": [0, 1], "x": 1, "y": 0},
{"label": "K02", "matrix": [0, 2], "x": 2, "y": 0},
{"label": "K03", "matrix": [0, 3], "x": 3, "y": 0},
{"label": "K04", "matrix": [0, 4], "x": 4, "y": 0},
{"label": "K05", "matrix": [0, 5], "x": 5, "y": 0},
{"label": "K06", "matrix": [0, 6], "x": 6, "y": 0},
{"label": "K07", "matrix": [0, 7], "x": 7, "y": 0},
{"label": "K08", "matrix": [0, 8], "x": 8, "y": 0},
{"label": "K09", "matrix": [0, 9], "x": 9, "y": 0},
{"label": "K0A", "matrix": [0, 10], "x": 10, "y": 0},
{"label": "K0B", "matrix": [0, 11], "x": 11, "y": 0},
{"label": "K0C", "matrix": [0, 12], "x": 12, "y": 0},
{"label": "K0D", "matrix": [0, 13], "x": 13, "y": 0},
{"label": "K2D", "matrix": [2, 13], "x": 14, "y": 0},
{"label": "K10", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"label": "K11", "matrix": [1, 1], "x": 1.5, "y": 1},
{"label": "K12", "matrix": [1, 2], "x": 2.5, "y": 1},
{"label": "K13", "matrix": [1, 3], "x": 3.5, "y": 1},
{"label": "K14", "matrix": [1, 4], "x": 4.5, "y": 1},
{"label": "K15", "matrix": [1, 5], "x": 5.5, "y": 1},
{"label": "K16", "matrix": [1, 6], "x": 6.5, "y": 1},
{"label": "K17", "matrix": [1, 7], "x": 7.5, "y": 1},
{"label": "K18", "matrix": [1, 8], "x": 8.5, "y": 1},
{"label": "K19", "matrix": [1, 9], "x": 9.5, "y": 1},
{"label": "K1A", "matrix": [1, 10], "x": 10.5, "y": 1},
{"label": "K1B", "matrix": [1, 11], "x": 11.5, "y": 1},
{"label": "K1C", "matrix": [1, 12], "x": 12.5, "y": 1},
{"label": "K1D", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
{"label": "K20", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"label": "K21", "matrix": [2, 1], "x": 1.75, "y": 2},
{"label": "K22", "matrix": [2, 2], "x": 2.75, "y": 2},
{"label": "K23", "matrix": [2, 3], "x": 3.75, "y": 2},
{"label": "K24", "matrix": [2, 4], "x": 4.75, "y": 2},
{"label": "K25", "matrix": [2, 5], "x": 5.75, "y": 2},
{"label": "K26", "matrix": [2, 6], "x": 6.75, "y": 2},
{"label": "K27", "matrix": [2, 7], "x": 7.75, "y": 2},
{"label": "K28", "matrix": [2, 8], "x": 8.75, "y": 2},
{"label": "K29", "matrix": [2, 9], "x": 9.75, "y": 2},
{"label": "K2A", "matrix": [2, 10], "x": 10.75, "y": 2},
{"label": "K2B", "matrix": [2, 11], "x": 11.75, "y": 2},
{"label": "K2C", "matrix": [2, 12], "x": 12.75, "y": 2, "w": 2.25},
{"label": "K30", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
{"label": "K32", "matrix": [3, 2], "x": 2.25, "y": 3},
{"label": "K33", "matrix": [3, 3], "x": 3.25, "y": 3},
{"label": "K34", "matrix": [3, 4], "x": 4.25, "y": 3},
{"label": "K35", "matrix": [3, 5], "x": 5.25, "y": 3},
{"label": "K36", "matrix": [3, 6], "x": 6.25, "y": 3},
{"label": "K37", "matrix": [3, 7], "x": 7.25, "y": 3},
{"label": "K38", "matrix": [3, 8], "x": 8.25, "y": 3},
{"label": "K39", "matrix": [3, 9], "x": 9.25, "y": 3},
{"label": "K3A", "matrix": [3, 10], "x": 10.25, "y": 3},
{"label": "K3B", "matrix": [3, 11], "x": 11.25, "y": 3},
{"label": "K3C", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
{"label": "K3D", "matrix": [3, 13], "x": 14, "y": 3},
{"label": "K40", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
{"label": "K41", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
{"label": "K42", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
{"label": "K46", "matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
{"label": "K4A", "matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
{"label": "K4B", "matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
{"label": "K4C", "matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25},
{"label": "K4D", "matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}
]
},
"LAYOUT_60_ansi_tsangan": {
"layout": [
{"label": "K00", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "K01", "matrix": [0, 1], "x": 1, "y": 0},
{"label": "K02", "matrix": [0, 2], "x": 2, "y": 0},
{"label": "K03", "matrix": [0, 3], "x": 3, "y": 0},
{"label": "K04", "matrix": [0, 4], "x": 4, "y": 0},
{"label": "K05", "matrix": [0, 5], "x": 5, "y": 0},
{"label": "K06", "matrix": [0, 6], "x": 6, "y": 0},
{"label": "K07", "matrix": [0, 7], "x": 7, "y": 0},
{"label": "K08", "matrix": [0, 8], "x": 8, "y": 0},
{"label": "K09", "matrix": [0, 9], "x": 9, "y": 0},
{"label": "K0A", "matrix": [0, 10], "x": 10, "y": 0},
{"label": "K0B", "matrix": [0, 11], "x": 11, "y": 0},
{"label": "K0C", "matrix": [0, 12], "x": 12, "y": 0},
{"label": "K0D", "matrix": [0, 13], "x": 13, "y": 0, "w": 2},
{"label": "K10", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"label": "K11", "matrix": [1, 1], "x": 1.5, "y": 1},
{"label": "K12", "matrix": [1, 2], "x": 2.5, "y": 1},
{"label": "K13", "matrix": [1, 3], "x": 3.5, "y": 1},
{"label": "K14", "matrix": [1, 4], "x": 4.5, "y": 1},
{"label": "K15", "matrix": [1, 5], "x": 5.5, "y": 1},
{"label": "K16", "matrix": [1, 6], "x": 6.5, "y": 1},
{"label": "K17", "matrix": [1, 7], "x": 7.5, "y": 1},
{"label": "K18", "matrix": [1, 8], "x": 8.5, "y": 1},
{"label": "K19", "matrix": [1, 9], "x": 9.5, "y": 1},
{"label": "K1A", "matrix": [1, 10], "x": 10.5, "y": 1},
{"label": "K1B", "matrix": [1, 11], "x": 11.5, "y": 1},
{"label": "K1C", "matrix": [1, 12], "x": 12.5, "y": 1},
{"label": "K1D", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
{"label": "K20", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"label": "K21", "matrix": [2, 1], "x": 1.75, "y": 2},
{"label": "K22", "matrix": [2, 2], "x": 2.75, "y": 2},
{"label": "K23", "matrix": [2, 3], "x": 3.75, "y": 2},
{"label": "K24", "matrix": [2, 4], "x": 4.75, "y": 2},
{"label": "K25", "matrix": [2, 5], "x": 5.75, "y": 2},
{"label": "K26", "matrix": [2, 6], "x": 6.75, "y": 2},
{"label": "K27", "matrix": [2, 7], "x": 7.75, "y": 2},
{"label": "K28", "matrix": [2, 8], "x": 8.75, "y": 2},
{"label": "K29", "matrix": [2, 9], "x": 9.75, "y": 2},
{"label": "K2A", "matrix": [2, 10], "x": 10.75, "y": 2},
{"label": "K2B", "matrix": [2, 11], "x": 11.75, "y": 2},
{"label": "K2C", "matrix": [2, 12], "x": 12.75, "y": 2, "w": 2.25},
{"label": "K30", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
{"label": "K32", "matrix": [3, 2], "x": 2.25, "y": 3},
{"label": "K33", "matrix": [3, 3], "x": 3.25, "y": 3},
{"label": "K34", "matrix": [3, 4], "x": 4.25, "y": 3},
{"label": "K35", "matrix": [3, 5], "x": 5.25, "y": 3},
{"label": "K36", "matrix": [3, 6], "x": 6.25, "y": 3},
{"label": "K37", "matrix": [3, 7], "x": 7.25, "y": 3},
{"label": "K38", "matrix": [3, 8], "x": 8.25, "y": 3},
{"label": "K39", "matrix": [3, 9], "x": 9.25, "y": 3},
{"label": "K3A", "matrix": [3, 10], "x": 10.25, "y": 3},
{"label": "K3B", "matrix": [3, 11], "x": 11.25, "y": 3},
{"label": "K3C", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75},
{"label": "K40", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
{"label": "K41", "matrix": [4, 1], "x": 1.5, "y": 4},
{"label": "K42", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
{"label": "K46", "matrix": [4, 6], "x": 4, "y": 4, "w": 7},
{"label": "K4B", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
{"label": "K4C", "matrix": [4, 12], "x": 12.5, "y": 4},
{"label": "K4D", "matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}
]
},
"LAYOUT_60_tsangan_hhkb": {
"layout": [
{"label": "K00", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "K01", "matrix": [0, 1], "x": 1, "y": 0},
{"label": "K02", "matrix": [0, 2], "x": 2, "y": 0},
{"label": "K03", "matrix": [0, 3], "x": 3, "y": 0},
{"label": "K04", "matrix": [0, 4], "x": 4, "y": 0},
{"label": "K05", "matrix": [0, 5], "x": 5, "y": 0},
{"label": "K06", "matrix": [0, 6], "x": 6, "y": 0},
{"label": "K07", "matrix": [0, 7], "x": 7, "y": 0},
{"label": "K08", "matrix": [0, 8], "x": 8, "y": 0},
{"label": "K09", "matrix": [0, 9], "x": 9, "y": 0},
{"label": "K0A", "matrix": [0, 10], "x": 10, "y": 0},
{"label": "K0B", "matrix": [0, 11], "x": 11, "y": 0},
{"label": "K0C", "matrix": [0, 12], "x": 12, "y": 0},
{"label": "K0D", "matrix": [0, 13], "x": 13, "y": 0},
{"label": "K2D", "matrix": [2, 13], "x": 14, "y": 0},
{"label": "K10", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"label": "K11", "matrix": [1, 1], "x": 1.5, "y": 1},
{"label": "K12", "matrix": [1, 2], "x": 2.5, "y": 1},
{"label": "K13", "matrix": [1, 3], "x": 3.5, "y": 1},
{"label": "K14", "matrix": [1, 4], "x": 4.5, "y": 1},
{"label": "K15", "matrix": [1, 5], "x": 5.5, "y": 1},
{"label": "K16", "matrix": [1, 6], "x": 6.5, "y": 1},
{"label": "K17", "matrix": [1, 7], "x": 7.5, "y": 1},
{"label": "K18", "matrix": [1, 8], "x": 8.5, "y": 1},
{"label": "K19", "matrix": [1, 9], "x": 9.5, "y": 1},
{"label": "K1A", "matrix": [1, 10], "x": 10.5, "y": 1},
{"label": "K1B", "matrix": [1, 11], "x": 11.5, "y": 1},
{"label": "K1C", "matrix": [1, 12], "x": 12.5, "y": 1},
{"label": "K1D", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
{"label": "K20", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"label": "K21", "matrix": [2, 1], "x": 1.75, "y": 2},
{"label": "K22", "matrix": [2, 2], "x": 2.75, "y": 2},
{"label": "K23", "matrix": [2, 3], "x": 3.75, "y": 2},
{"label": "K24", "matrix": [2, 4], "x": 4.75, "y": 2},
{"label": "K25", "matrix": [2, 5], "x": 5.75, "y": 2},
{"label": "K26", "matrix": [2, 6], "x": 6.75, "y": 2},
{"label": "K27", "matrix": [2, 7], "x": 7.75, "y": 2},
{"label": "K28", "matrix": [2, 8], "x": 8.75, "y": 2},
{"label": "K29", "matrix": [2, 9], "x": 9.75, "y": 2},
{"label": "K2A", "matrix": [2, 10], "x": 10.75, "y": 2},
{"label": "K2B", "matrix": [2, 11], "x": 11.75, "y": 2},
{"label": "K2C", "matrix": [2, 12], "x": 12.75, "y": 2, "w": 2.25},
{"label": "K30", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
{"label": "K32", "matrix": [3, 2], "x": 2.25, "y": 3},
{"label": "K33", "matrix": [3, 3], "x": 3.25, "y": 3},
{"label": "K34", "matrix": [3, 4], "x": 4.25, "y": 3},
{"label": "K35", "matrix": [3, 5], "x": 5.25, "y": 3},
{"label": "K36", "matrix": [3, 6], "x": 6.25, "y": 3},
{"label": "K37", "matrix": [3, 7], "x": 7.25, "y": 3},
{"label": "K38", "matrix": [3, 8], "x": 8.25, "y": 3},
{"label": "K39", "matrix": [3, 9], "x": 9.25, "y": 3},
{"label": "K3A", "matrix": [3, 10], "x": 10.25, "y": 3},
{"label": "K3B", "matrix": [3, 11], "x": 11.25, "y": 3},
{"label": "K3C", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
{"label": "K3D", "matrix": [3, 13], "x": 14, "y": 3},
{"label": "K40", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
{"label": "K41", "matrix": [4, 1], "x": 1.5, "y": 4},
{"label": "K42", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
{"label": "K46", "matrix": [4, 6], "x": 4, "y": 4, "w": 7},
{"label": "K4B", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
{"label": "K4C", "matrix": [4, 12], "x": 12.5, "y": 4},
{"label": "K4D", "matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}
]
},
"LAYOUT_60_hhkb": {
"layout": [
{"label": "K00", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "K01", "matrix": [0, 1], "x": 1, "y": 0},
{"label": "K02", "matrix": [0, 2], "x": 2, "y": 0},
{"label": "K03", "matrix": [0, 3], "x": 3, "y": 0},
{"label": "K04", "matrix": [0, 4], "x": 4, "y": 0},
{"label": "K05", "matrix": [0, 5], "x": 5, "y": 0},
{"label": "K06", "matrix": [0, 6], "x": 6, "y": 0},
{"label": "K07", "matrix": [0, 7], "x": 7, "y": 0},
{"label": "K08", "matrix": [0, 8], "x": 8, "y": 0},
{"label": "K09", "matrix": [0, 9], "x": 9, "y": 0},
{"label": "K0A", "matrix": [0, 10], "x": 10, "y": 0},
{"label": "K0B", "matrix": [0, 11], "x": 11, "y": 0},
{"label": "K0C", "matrix": [0, 12], "x": 12, "y": 0},
{"label": "K0D", "matrix": [0, 13], "x": 13, "y": 0},
{"label": "K2D", "matrix": [2, 13], "x": 14, "y": 0},
{"label": "K10", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"label": "K11", "matrix": [1, 1], "x": 1.5, "y": 1},
{"label": "K12", "matrix": [1, 2], "x": 2.5, "y": 1},
{"label": "K13", "matrix": [1, 3], "x": 3.5, "y": 1},
{"label": "K14", "matrix": [1, 4], "x": 4.5, "y": 1},
{"label": "K15", "matrix": [1, 5], "x": 5.5, "y": 1},
{"label": "K16", "matrix": [1, 6], "x": 6.5, "y": 1},
{"label": "K17", "matrix": [1, 7], "x": 7.5, "y": 1},
{"label": "K18", "matrix": [1, 8], "x": 8.5, "y": 1},
{"label": "K19", "matrix": [1, 9], "x": 9.5, "y": 1},
{"label": "K1A", "matrix": [1, 10], "x": 10.5, "y": 1},
{"label": "K1B", "matrix": [1, 11], "x": 11.5, "y": 1},
{"label": "K1C", "matrix": [1, 12], "x": 12.5, "y": 1},
{"label": "K1D", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
{"label": "K20", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"label": "K21", "matrix": [2, 1], "x": 1.75, "y": 2},
{"label": "K22", "matrix": [2, 2], "x": 2.75, "y": 2},
{"label": "K23", "matrix": [2, 3], "x": 3.75, "y": 2},
{"label": "K24", "matrix": [2, 4], "x": 4.75, "y": 2},
{"label": "K25", "matrix": [2, 5], "x": 5.75, "y": 2},
{"label": "K26", "matrix": [2, 6], "x": 6.75, "y": 2},
{"label": "K27", "matrix": [2, 7], "x": 7.75, "y": 2},
{"label": "K28", "matrix": [2, 8], "x": 8.75, "y": 2},
{"label": "K29", "matrix": [2, 9], "x": 9.75, "y": 2},
{"label": "K2A", "matrix": [2, 10], "x": 10.75, "y": 2},
{"label": "K2B", "matrix": [2, 11], "x": 11.75, "y": 2},
{"label": "K2C", "matrix": [2, 12], "x": 12.75, "y": 2, "w": 2.25},
{"label": "K30", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
{"label": "K32", "matrix": [3, 2], "x": 2.25, "y": 3},
{"label": "K33", "matrix": [3, 3], "x": 3.25, "y": 3},
{"label": "K34", "matrix": [3, 4], "x": 4.25, "y": 3},
{"label": "K35", "matrix": [3, 5], "x": 5.25, "y": 3},
{"label": "K36", "matrix": [3, 6], "x": 6.25, "y": 3},
{"label": "K37", "matrix": [3, 7], "x": 7.25, "y": 3},
{"label": "K38", "matrix": [3, 8], "x": 8.25, "y": 3},
{"label": "K39", "matrix": [3, 9], "x": 9.25, "y": 3},
{"label": "K3A", "matrix": [3, 10], "x": 10.25, "y": 3},
{"label": "K3B", "matrix": [3, 11], "x": 11.25, "y": 3},
{"label": "K3C", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
{"label": "K3D", "matrix": [3, 13], "x": 14, "y": 3},
{"label": "K41", "matrix": [4, 1], "x": 1.5, "y": 4},
{"label": "K42", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
{"label": "K46", "matrix": [4, 6], "x": 4, "y": 4, "w": 7},
{"label": "K4B", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
{"label": "K4C", "matrix": [4, 12], "x": 12.5, "y": 4}
]
},
"LAYOUT_60_iso": {
"layout": [
{"label": "K00", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "K01", "matrix": [0, 1], "x": 1, "y": 0},
{"label": "K02", "matrix": [0, 2], "x": 2, "y": 0},
{"label": "K03", "matrix": [0, 3], "x": 3, "y": 0},
{"label": "K04", "matrix": [0, 4], "x": 4, "y": 0},
{"label": "K05", "matrix": [0, 5], "x": 5, "y": 0},
{"label": "K06", "matrix": [0, 6], "x": 6, "y": 0},
{"label": "K07", "matrix": [0, 7], "x": 7, "y": 0},
{"label": "K08", "matrix": [0, 8], "x": 8, "y": 0},
{"label": "K09", "matrix": [0, 9], "x": 9, "y": 0},
{"label": "K0A", "matrix": [0, 10], "x": 10, "y": 0},
{"label": "K0B", "matrix": [0, 11], "x": 11, "y": 0},
{"label": "K0C", "matrix": [0, 12], "x": 12, "y": 0},
{"label": "K0D", "matrix": [0, 13], "x": 13, "y": 0, "w": 2},
{"label": "K10", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"label": "K11", "matrix": [1, 1], "x": 1.5, "y": 1},
{"label": "K12", "matrix": [1, 2], "x": 2.5, "y": 1},
{"label": "K13", "matrix": [1, 3], "x": 3.5, "y": 1},
{"label": "K14", "matrix": [1, 4], "x": 4.5, "y": 1},
{"label": "K15", "matrix": [1, 5], "x": 5.5, "y": 1},
{"label": "K16", "matrix": [1, 6], "x": 6.5, "y": 1},
{"label": "K17", "matrix": [1, 7], "x": 7.5, "y": 1},
{"label": "K18", "matrix": [1, 8], "x": 8.5, "y": 1},
{"label": "K19", "matrix": [1, 9], "x": 9.5, "y": 1},
{"label": "K1A", "matrix": [1, 10], "x": 10.5, "y": 1},
{"label": "K1B", "matrix": [1, 11], "x": 11.5, "y": 1},
{"label": "K1C", "matrix": [1, 12], "x": 12.5, "y": 1},
{"label": "K20", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"label": "K21", "matrix": [2, 1], "x": 1.75, "y": 2},
{"label": "K22", "matrix": [2, 2], "x": 2.75, "y": 2},
{"label": "K23", "matrix": [2, 3], "x": 3.75, "y": 2},
{"label": "K24", "matrix": [2, 4], "x": 4.75, "y": 2},
{"label": "K25", "matrix": [2, 5], "x": 5.75, "y": 2},
{"label": "K26", "matrix": [2, 6], "x": 6.75, "y": 2},
{"label": "K27", "matrix": [2, 7], "x": 7.75, "y": 2},
{"label": "K28", "matrix": [2, 8], "x": 8.75, "y": 2},
{"label": "K29", "matrix": [2, 9], "x": 9.75, "y": 2},
{"label": "K2A", "matrix": [2, 10], "x": 10.75, "y": 2},
{"label": "K2B", "matrix": [2, 11], "x": 11.75, "y": 2},
{"label": "K1D", "matrix": [1, 13], "x": 12.75, "y": 2},
{"label": "K2C", "matrix": [2, 12], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
{"label": "K30", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
{"label": "K31", "matrix": [3, 1], "x": 1.25, "y": 3},
{"label": "K32", "matrix": [3, 2], "x": 2.25, "y": 3},
{"label": "K33", "matrix": [3, 3], "x": 3.25, "y": 3},
{"label": "K34", "matrix": [3, 4], "x": 4.25, "y": 3},
{"label": "K35", "matrix": [3, 5], "x": 5.25, "y": 3},
{"label": "K36", "matrix": [3, 6], "x": 6.25, "y": 3},
{"label": "K37", "matrix": [3, 7], "x": 7.25, "y": 3},
{"label": "K38", "matrix": [3, 8], "x": 8.25, "y": 3},
{"label": "K39", "matrix": [3, 9], "x": 9.25, "y": 3},
{"label": "K3A", "matrix": [3, 10], "x": 10.25, "y": 3},
{"label": "K3B", "matrix": [3, 11], "x": 11.25, "y": 3},
{"label": "K3C", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75},
{"label": "K40", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
{"label": "K41", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
{"label": "K42", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
{"label": "K46", "matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
{"label": "K4A", "matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
{"label": "K4B", "matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
{"label": "K4C", "matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25},
{"label": "K4D", "matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}
]
},
"LAYOUT_60_iso_split_bs_rshift": {
"layout": [
{"label": "K00", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "K01", "matrix": [0, 1], "x": 1, "y": 0},
{"label": "K02", "matrix": [0, 2], "x": 2, "y": 0},
{"label": "K03", "matrix": [0, 3], "x": 3, "y": 0},
{"label": "K04", "matrix": [0, 4], "x": 4, "y": 0},
{"label": "K05", "matrix": [0, 5], "x": 5, "y": 0},
{"label": "K06", "matrix": [0, 6], "x": 6, "y": 0},
{"label": "K07", "matrix": [0, 7], "x": 7, "y": 0},
{"label": "K08", "matrix": [0, 8], "x": 8, "y": 0},
{"label": "K09", "matrix": [0, 9], "x": 9, "y": 0},
{"label": "K0A", "matrix": [0, 10], "x": 10, "y": 0},
{"label": "K0B", "matrix": [0, 11], "x": 11, "y": 0},
{"label": "K0C", "matrix": [0, 12], "x": 12, "y": 0},
{"label": "K0D", "matrix": [0, 13], "x": 13, "y": 0},
{"label": "K2D", "matrix": [2, 13], "x": 14, "y": 0},
{"label": "K10", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"label": "K11", "matrix": [1, 1], "x": 1.5, "y": 1},
{"label": "K12", "matrix": [1, 2], "x": 2.5, "y": 1},
{"label": "K13", "matrix": [1, 3], "x": 3.5, "y": 1},
{"label": "K14", "matrix": [1, 4], "x": 4.5, "y": 1},
{"label": "K15", "matrix": [1, 5], "x": 5.5, "y": 1},
{"label": "K16", "matrix": [1, 6], "x": 6.5, "y": 1},
{"label": "K17", "matrix": [1, 7], "x": 7.5, "y": 1},
{"label": "K18", "matrix": [1, 8], "x": 8.5, "y": 1},
{"label": "K19", "matrix": [1, 9], "x": 9.5, "y": 1},
{"label": "K1A", "matrix": [1, 10], "x": 10.5, "y": 1},
{"label": "K1B", "matrix": [1, 11], "x": 11.5, "y": 1},
{"label": "K1C", "matrix": [1, 12], "x": 12.5, "y": 1},
{"label": "K20", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"label": "K21", "matrix": [2, 1], "x": 1.75, "y": 2},
{"label": "K22", "matrix": [2, 2], "x": 2.75, "y": 2},
{"label": "K23", "matrix": [2, 3], "x": 3.75, "y": 2},
{"label": "K24", "matrix": [2, 4], "x": 4.75, "y": 2},
{"label": "K25", "matrix": [2, 5], "x": 5.75, "y": 2},
{"label": "K26", "matrix": [2, 6], "x": 6.75, "y": 2},
{"label": "K27", "matrix": [2, 7], "x": 7.75, "y": 2},
{"label": "K28", "matrix": [2, 8], "x": 8.75, "y": 2},
{"label": "K29", "matrix": [2, 9], "x": 9.75, "y": 2},
{"label": "K2A", "matrix": [2, 10], "x": 10.75, "y": 2},
{"label": "K2B", "matrix": [2, 11], "x": 11.75, "y": 2},
{"label": "K1D", "matrix": [1, 13], "x": 12.75, "y": 2},
{"label": "K2C", "matrix": [2, 12], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
{"label": "K30", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
{"label": "K31", "matrix": [3, 1], "x": 1.25, "y": 3},
{"label": "K32", "matrix": [3, 2], "x": 2.25, "y": 3},
{"label": "K33", "matrix": [3, 3], "x": 3.25, "y": 3},
{"label": "K34", "matrix": [3, 4], "x": 4.25, "y": 3},
{"label": "K35", "matrix": [3, 5], "x": 5.25, "y": 3},
{"label": "K36", "matrix": [3, 6], "x": 6.25, "y": 3},
{"label": "K37", "matrix": [3, 7], "x": 7.25, "y": 3},
{"label": "K38", "matrix": [3, 8], "x": 8.25, "y": 3},
{"label": "K39", "matrix": [3, 9], "x": 9.25, "y": 3},
{"label": "K3A", "matrix": [3, 10], "x": 10.25, "y": 3},
{"label": "K3B", "matrix": [3, 11], "x": 11.25, "y": 3},
{"label": "K3C", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
{"label": "K3D", "matrix": [3, 13], "x": 14, "y": 3},
{"label": "K40", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
{"label": "K41", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
{"label": "K42", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
{"label": "K46", "matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
{"label": "K4A", "matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
{"label": "K4B", "matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
{"label": "K4C", "matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25},
{"label": "K4D", "matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}
]
},
"LAYOUT_60_iso_tsangan": {
"layout": [
{"label": "K00", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "K01", "matrix": [0, 1], "x": 1, "y": 0},
{"label": "K02", "matrix": [0, 2], "x": 2, "y": 0},
{"label": "K03", "matrix": [0, 3], "x": 3, "y": 0},
{"label": "K04", "matrix": [0, 4], "x": 4, "y": 0},
{"label": "K05", "matrix": [0, 5], "x": 5, "y": 0},
{"label": "K06", "matrix": [0, 6], "x": 6, "y": 0},
{"label": "K07", "matrix": [0, 7], "x": 7, "y": 0},
{"label": "K08", "matrix": [0, 8], "x": 8, "y": 0},
{"label": "K09", "matrix": [0, 9], "x": 9, "y": 0},
{"label": "K0A", "matrix": [0, 10], "x": 10, "y": 0},
{"label": "K0B", "matrix": [0, 11], "x": 11, "y": 0},
{"label": "K0C", "matrix": [0, 12], "x": 12, "y": 0},
{"label": "K0D", "matrix": [0, 13], "x": 13, "y": 0, "w": 2},
{"label": "K10", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"label": "K11", "matrix": [1, 1], "x": 1.5, "y": 1},
{"label": "K12", "matrix": [1, 2], "x": 2.5, "y": 1},
{"label": "K13", "matrix": [1, 3], "x": 3.5, "y": 1},
{"label": "K14", "matrix": [1, 4], "x": 4.5, "y": 1},
{"label": "K15", "matrix": [1, 5], "x": 5.5, "y": 1},
{"label": "K16", "matrix": [1, 6], "x": 6.5, "y": 1},
{"label": "K17", "matrix": [1, 7], "x": 7.5, "y": 1},
{"label": "K18", "matrix": [1, 8], "x": 8.5, "y": 1},
{"label": "K19", "matrix": [1, 9], "x": 9.5, "y": 1},
{"label": "K1A", "matrix": [1, 10], "x": 10.5, "y": 1},
{"label": "K1B", "matrix": [1, 11], "x": 11.5, "y": 1},
{"label": "K1C", "matrix": [1, 12], "x": 12.5, "y": 1},
{"label": "K20", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"label": "K21", "matrix": [2, 1], "x": 1.75, "y": 2},
{"label": "K22", "matrix": [2, 2], "x": 2.75, "y": 2},
{"label": "K23", "matrix": [2, 3], "x": 3.75, "y": 2},
{"label": "K24", "matrix": [2, 4], "x": 4.75, "y": 2},
{"label": "K25", "matrix": [2, 5], "x": 5.75, "y": 2},
{"label": "K26", "matrix": [2, 6], "x": 6.75, "y": 2},
{"label": "K27", "matrix": [2, 7], "x": 7.75, "y": 2},
{"label": "K28", "matrix": [2, 8], "x": 8.75, "y": 2},
{"label": "K29", "matrix": [2, 9], "x": 9.75, "y": 2},
{"label": "K2A", "matrix": [2, 10], "x": 10.75, "y": 2},
{"label": "K2B", "matrix": [2, 11], "x": 11.75, "y": 2},
{"label": "K1D", "matrix": [1, 13], "x": 12.75, "y": 2},
{"label": "K2C", "matrix": [2, 12], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
{"label": "K30", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
{"label": "K31", "matrix": [3, 1], "x": 1.25, "y": 3},
{"label": "K32", "matrix": [3, 2], "x": 2.25, "y": 3},
{"label": "K33", "matrix": [3, 3], "x": 3.25, "y": 3},
{"label": "K34", "matrix": [3, 4], "x": 4.25, "y": 3},
{"label": "K35", "matrix": [3, 5], "x": 5.25, "y": 3},
{"label": "K36", "matrix": [3, 6], "x": 6.25, "y": 3},
{"label": "K37", "matrix": [3, 7], "x": 7.25, "y": 3},
{"label": "K38", "matrix": [3, 8], "x": 8.25, "y": 3},
{"label": "K39", "matrix": [3, 9], "x": 9.25, "y": 3},
{"label": "K3A", "matrix": [3, 10], "x": 10.25, "y": 3},
{"label": "K3B", "matrix": [3, 11], "x": 11.25, "y": 3},
{"label": "K3C", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75},
{"label": "K40", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
{"label": "K41", "matrix": [4, 1], "x": 1.5, "y": 4},
{"label": "K42", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
{"label": "K46", "matrix": [4, 6], "x": 4, "y": 4, "w": 7},
{"label": "K4B", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
{"label": "K4C", "matrix": [4, 12], "x": 12.5, "y": 4},
{"label": "K4D", "matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}
]
},
"LAYOUT_60_iso_tsangan_split_bs_rshift": {
"layout": [
{"label": "K00", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "K01", "matrix": [0, 1], "x": 1, "y": 0},
{"label": "K02", "matrix": [0, 2], "x": 2, "y": 0},
{"label": "K03", "matrix": [0, 3], "x": 3, "y": 0},
{"label": "K04", "matrix": [0, 4], "x": 4, "y": 0},
{"label": "K05", "matrix": [0, 5], "x": 5, "y": 0},
{"label": "K06", "matrix": [0, 6], "x": 6, "y": 0},
{"label": "K07", "matrix": [0, 7], "x": 7, "y": 0},
{"label": "K08", "matrix": [0, 8], "x": 8, "y": 0},
{"label": "K09", "matrix": [0, 9], "x": 9, "y": 0},
{"label": "K0A", "matrix": [0, 10], "x": 10, "y": 0},
{"label": "K0B", "matrix": [0, 11], "x": 11, "y": 0},
{"label": "K0C", "matrix": [0, 12], "x": 12, "y": 0},
{"label": "K0D", "matrix": [0, 13], "x": 13, "y": 0},
{"label": "K2D", "matrix": [2, 13], "x": 14, "y": 0},
{"label": "K10", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"label": "K11", "matrix": [1, 1], "x": 1.5, "y": 1},
{"label": "K12", "matrix": [1, 2], "x": 2.5, "y": 1},
{"label": "K13", "matrix": [1, 3], "x": 3.5, "y": 1},
{"label": "K14", "matrix": [1, 4], "x": 4.5, "y": 1},
{"label": "K15", "matrix": [1, 5], "x": 5.5, "y": 1},
{"label": "K16", "matrix": [1, 6], "x": 6.5, "y": 1},
{"label": "K17", "matrix": [1, 7], "x": 7.5, "y": 1},
{"label": "K18", "matrix": [1, 8], "x": 8.5, "y": 1},
{"label": "K19", "matrix": [1, 9], "x": 9.5, "y": 1},
{"label": "K1A", "matrix": [1, 10], "x": 10.5, "y": 1},
{"label": "K1B", "matrix": [1, 11], "x": 11.5, "y": 1},
{"label": "K1C", "matrix": [1, 12], "x": 12.5, "y": 1},
{"label": "K20", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"label": "K21", "matrix": [2, 1], "x": 1.75, "y": 2},
{"label": "K22", "matrix": [2, 2], "x": 2.75, "y": 2},
{"label": "K23", "matrix": [2, 3], "x": 3.75, "y": 2},
{"label": "K24", "matrix": [2, 4], "x": 4.75, "y": 2},
{"label": "K25", "matrix": [2, 5], "x": 5.75, "y": 2},
{"label": "K26", "matrix": [2, 6], "x": 6.75, "y": 2},
{"label": "K27", "matrix": [2, 7], "x": 7.75, "y": 2},
{"label": "K28", "matrix": [2, 8], "x": 8.75, "y": 2},
{"label": "K29", "matrix": [2, 9], "x": 9.75, "y": 2},
{"label": "K2A", "matrix": [2, 10], "x": 10.75, "y": 2},
{"label": "K2B", "matrix": [2, 11], "x": 11.75, "y": 2},
{"label": "K1D", "matrix": [1, 13], "x": 12.75, "y": 2},
{"label": "K2C", "matrix": [2, 12], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
{"label": "K30", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
{"label": "K31", "matrix": [3, 1], "x": 1.25, "y": 3},
{"label": "K32", "matrix": [3, 2], "x": 2.25, "y": 3},
{"label": "K33", "matrix": [3, 3], "x": 3.25, "y": 3},
{"label": "K34", "matrix": [3, 4], "x": 4.25, "y": 3},
{"label": "K35", "matrix": [3, 5], "x": 5.25, "y": 3},
{"label": "K36", "matrix": [3, 6], "x": 6.25, "y": 3},
{"label": "K37", "matrix": [3, 7], "x": 7.25, "y": 3},
{"label": "K38", "matrix": [3, 8], "x": 8.25, "y": 3},
{"label": "K39", "matrix": [3, 9], "x": 9.25, "y": 3},
{"label": "K3A", "matrix": [3, 10], "x": 10.25, "y": 3},
{"label": "K3B", "matrix": [3, 11], "x": 11.25, "y": 3},
{"label": "K3C", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
{"label": "K3D", "matrix": [3, 13], "x": 14, "y": 3},
{"label": "K40", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
{"label": "K41", "matrix": [4, 1], "x": 1.5, "y": 4},
{"label": "K42", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
{"label": "K46", "matrix": [4, 6], "x": 4, "y": 4, "w": 7},
{"label": "K4B", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
{"label": "K4C", "matrix": [4, 12], "x": 12.5, "y": 4},
{"label": "K4D", "matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}
]
}
}
}

View File

@ -0,0 +1,42 @@
// Copyright 2023 MaiTheSan (@maithesan)
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
enum {
_BL,
_FL,
_AL,
_CL,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BL] = LAYOUT_all(
QK_GESC, 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_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_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_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, TG(_AL),
KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, MO(_FL), KC_RALT, KC_RGUI, KC_RCTL),
[_FL] = LAYOUT_all(
KC_GRV, 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_DEL, KC_DEL,
BL_TOGG, BL_UP, BL_DOWN, BL_STEP, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______,
VK_TOGG, _______, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______,
_______, _______, _______, MO(_CL), _______, _______, _______, _______),
[_AL] = LAYOUT_all(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______,
_______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT),
[_CL] = LAYOUT_all(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, EE_CLR, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______)
};

View File

@ -0,0 +1,42 @@
// Copyright 2023 MaiTheSan (@maithesan)
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
enum {
_BL,
_FL,
_AL,
_CL,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BL] = LAYOUT_all(
QK_GESC, 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_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_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_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, TG(_AL),
KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, MO(_FL), KC_RALT, KC_RGUI, KC_RCTL),
[_FL] = LAYOUT_all(
KC_GRV, 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_DEL, KC_DEL,
BL_TOGG, BL_UP, BL_DOWN, BL_STEP, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______,
VK_TOGG, _______, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______,
_______, _______, _______, MO(_CL), _______, _______, _______, _______),
[_AL] = LAYOUT_all(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______,
_______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT),
[_CL] = LAYOUT_all(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, EE_CLR, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______)
};

View File

@ -0,0 +1 @@
VIA_ENABLE = yes

View File

@ -0,0 +1,27 @@
# Okayu
![Okayu](https://i.imgur.com/pRnRHl8h.png)
A Wibu 60% keyboard PCB Design by inspire of Nekomata Okayu and can fit many keyboard case
* Keyboard Maintainer: [Mai The San](https://github.com/maithesan)
* Hardware Supported: Several 60% keyboard (RE60, Krush60, Unikorn, Tinyneko, Bakeneko60...)
* Hardware Availability: NuxrosKB, Salane Discord
Make example for this keyboard (after setting up your build environment):
make sawnsprojects/okayu:default
Flashing example for this keyboard:
make sawnsprojects/okayu: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 key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available

View File

@ -0,0 +1 @@
DEFAULT_FOLDER = sawnsprojects/okayu/stm32f072

View File

@ -0,0 +1,8 @@
// Copyright 2023 MaiTheSan
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define WS2812_SPI SPID1
#define WS2812_SPI_MOSI_PAL_MODE 5
#define WS2812_SPI_SCK_PIN B13
#define WS2812_SPI_SCK_PAL_MODE 5

View File

@ -0,0 +1,4 @@
{
"processor": "STM32F072",
"bootloader": "stm32-dfu",
}

View File

@ -0,0 +1,8 @@
// Copyright 2023 MaiTheSan
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include_next <mcuconf.h>
#undef STM32_SPI_USE_SPI1
#define STM32_SPI_USE_SPI1 TRUE

View File

@ -0,0 +1,8 @@
// Copyright 2023 MaiTheSan
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define WS2812_SPI SPID2
#define WS2812_SPI_MOSI_PAL_MODE 5
#define WS2812_SPI_SCK_PIN B13
#define WS2812_SPI_SCK_PAL_MODE 5

View File

@ -0,0 +1,3 @@
{
"development_board": "bluepill"
}

View File

@ -0,0 +1,8 @@
// Copyright 2023 MaiTheSan
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include_next <mcuconf.h>
#undef STM32_SPI_USE_SPI2
#define STM32_SPI_USE_SPI2 TRUE

View File

@ -0,0 +1,8 @@
// Copyright 2023 MaiTheSan
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define WS2812_SPI SPID1
#define WS2812_SPI_MOSI_PAL_MODE 5
#define WS2812_SPI_SCK_PIN B13
#define WS2812_SPI_SCK_PAL_MODE 5

View File

@ -0,0 +1,4 @@
{
"processor": "STM32F303",
"bootloader": "stm32-dfu"
}

View File

@ -0,0 +1,8 @@
// Copyright 2023 MaiTheSan
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include_next <mcuconf.h>
#undef STM32_SPI_USE_SPI1
#define STM32_SPI_USE_SPI1 TRUE

View File

@ -0,0 +1 @@
qmk flash -kb sofle/keyhive -km Kabbone -bl avrdude-split-left

View File

@ -0,0 +1,43 @@
#pragma once
/* The way how "handedness" is decided (which half is which),
see https://docs.qmk.fm/#/feature_split_keyboard?id=setting-handedness
for more options.
*/
#ifdef ENCODER_ENABLE
// #define ENCODER_RESOLUTIONS { 4, 2 }
#endif
#ifdef TAPPING_TERM
#undef TAPPING_TERM
#define TAPPING_TERM 700
#endif
//#define TAPPING_FORCE_HOLD
//#define PERMISSIVE_HOLD
//#define RETRO_SHIFT 175
#define AUTO_SHIFT_TIMEOUT 250
//#define RETRO_TAPPING
#ifdef RGBLIGHT_ENABLE
#define RGBLIGHT_SLEEP //Turn off LEDs when computer sleeping (+72)
#define RGBLIGHT_LAYERS //Enable layer light indicators. Not required as updates are done in layer_state_set_user and led_update_user (+588).
#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_STATIC_LIGHT
#define RGBLIGHT_DEFAULT_HUE 30
#define RGBLIGHT_DEFAULT_VAL 30
#define RGBLIGHT_STATIC_LIGHT
//#define RGBLIGHT_ANIMATIONS
//#define RGBLIGHT_EFFECT_BREATHING
//#define RGBLIGHT_EFFECT_RAINBOW_MOOD
//#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
//#define RGBLIGHT_EFFECT_SNAKE
//#define RGBLIGHT_EFFECT_KNIGHT
//#define RGBLIGHT_EFFECT_CHRISTMAS
//#define RGBLIGHT_EFFECT_STATIC_GRADIENT
//#define RGBLIGHT_EFFECT_RGB_TEST
//#define RGBLIGHT_EFFECT_ALTERNATING
//#define RGBLIGHT_EFFECT_TWINKLE
#define RGBLIGHT_HUE_STEP 10
#define RGBLIGHT_SAT_STEP 17
#define RGBLIGHT_VAL_STEP 17
#endif

View File

@ -0,0 +1,462 @@
#include QMK_KEYBOARD_H
#define INDICATOR_BRIGHTNESS 30
enum sofle_layers {
_DEFAULTS = 0,
_COLEMAKDH = 0,
_QWERTY,
_SYM,
_NAV,
_ADJUST,
_NUMPAD,
_SWITCH
};
enum custom_keycodes {
KC_QWERTY = SAFE_RANGE,
KC_COLEMAKDH,
KC_SYM,
KC_NAV,
KC_ADJUST,
KC_D_MUTE
};
enum unicode_names {
DESSS,
DEBAE,
DESAE,
DEBOE,
DESOE,
DEBUE,
DESUE
};
const uint32_t PROGMEM unicode_map[] = {
[DESSS] = 0x00DF, // ß
[DEBAE] = 0x00C4, // Ä
[DESAE] = 0x00E4, // ä
[DEBOE] = 0x00D6, // Ö
[DESOE] = 0x00F6, // ö
[DEBUE] = 0x00DC, // Ü
[DESUE] = 0x00FC, // ü
};
#define UE UC(0x00DC)
// Left-hand home row mods
#define HOME_A LCTL_T(KC_A)
#define HOME_R LSFT_T(KC_R)
#define HOME_S LGUI_T(KC_S)
#define HOME_T LALT_T(KC_T)
// Right-hand home row mods
#define HOME_N LALT_T(KC_N)
#define HOME_E RGUI_T(KC_E)
#define HOME_I RSFT_T(KC_I)
#define HOME_O RCTL_T(KC_O)
#define RSA_GUI RSA_T(KC_LGUI)
#define UML_A ALGR(KC_Q)
#define UML_O ALGR(KC_P)
#define UML_U ALGR(KC_Y)
#define UML_SS ALGR(KC_S)
#define NAV_DEL LT(_NAV,KC_DEL)
#define SYM_ESC LT(_SYM,KC_ESC)
#define SWI_GUI LT(_SWITCH,KC_LGUI)
#define ADJ_GUI LT(_ADJUST,KC_LGUI)
bool get_custom_auto_shifted_key(uint16_t keycode, keyrecord_t *record) {
switch(keycode) {
case HOME_A:
return true;
case HOME_R:
return true;
case HOME_S:
return true;
case HOME_T:
return true;
case HOME_N:
return true;
case HOME_E:
return true;
case HOME_I:
return true;
case HOME_O:
return true;
default:
return false;
}
}
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
* QWERTY
* ,-----------------------------------------. ,-----------------------------------------.
* | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ` |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | ESC | Q | W | E | R | T | | Y | U | I | O | P | Bspc |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | Tab | A | S | D | F | G |-------. ,-------| H | J | K | L | ; | ' |
* |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
* |LShift| Z | X | C | V | B |-------| |-------| N | M | , | . | / |RShift|
* `-----------------------------------------/ / \ \-----------------------------------------'
* | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI |
* | | | | |/ / \ \ | | | | |
* `----------------------------------' '------''---------------------------'
*/
[_QWERTY] = LAYOUT(
KC_GRV , KC_1, KC_2, KC_3, KC_4, KC_5, LT(_SWITCH,KC_6), KC_7, KC_8, KC_9, KC_0, KC_GRV,
QK_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
KC_TAB , KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
DF(_COLEMAKDH), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, KC_D_MUTE,KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT,
KC_LCTL,KC_LALT,MO(_SYM),KC_LSFT,KC_ENT, KC_BSPC,KC_SPC, NAV_DEL, KC_LBRC, KC_RBRC
),
/*
* COLEMAK
* ,-----------------------------------------. ,-----------------------------------------.
* | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ` |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | ESC | Q | W | F | P | B | | J | L | U | Y | ; | Bspc |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | TAB | A | R | S | T | G |-------. ,-------| M | N | E | I | O | ' |
* |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
* |LShift| Z | X | C | D | V |-------| |-------| K | H | , | . | / |RShift|
* `-----------------------------------------/ / \ \-----------------------------------------'
* | LGUI | LAlt | LCTR |SHIFT | /Enter / \Bspace\ |SPACE | RCTR | RAlt | RGUI |
* | | | | |/ / \ \ | | | | |
* `----------------------------------' '------''---------------------------'
*/
[_COLEMAKDH] = LAYOUT(
KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5, KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_ESC ,
QK_GESC, KC_Q , KC_W , KC_F , KC_P , KC_B, KC_J , KC_L , KC_U , KC_Y , KC_QUOT, KC_BSLS,
KC_TAB , HOME_A, HOME_R, HOME_S, HOME_T, KC_G, KC_M , HOME_N , HOME_E , HOME_I, HOME_O , KC_SCLN,
ADJ_GUI, KC_Z , KC_X , KC_C , KC_D , KC_V, KC_MUTE, KC_NO, KC_K , KC_H , KC_COMM, KC_DOT, KC_SLSH, KC_EQL,
KC_LCTL,KC_LALT,MO(_SYM),KC_LSFT,KC_ENT, KC_BSPC,KC_SPC, NAV_DEL, KC_LBRC, KC_RBRC
),
/* SYM
* ,-----------------------------------------. ,-----------------------------------------.
* | trans| F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | F12 |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | trans| ! | @ | # | $ | % |-------. ,-------| ^ | & | * | ( | ) | | |
* |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
* | trans| = | - | + | { | } |-------| |-------| [ | ] | ; | : | \ | Shift|
* `-----------------------------------------/ / \ \-----------------------------------------'
* | Bspc | WIN |SYM | Enter| /Space / \Enter \ |SPACE |NAV | RCTR | RAlt |
* | | | | |/ / \ \ | | | | |
* `----------------------------------' '------''---------------------------'
*/
[_SYM] = LAYOUT(
_______ , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 ,
KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_F12 ,
_______ , KC_DLR , KC_PLUS, KC_LPRN, KC_RPRN, KC_AT , KC_PIPE, KC_MINS, KC_EQL , KC_UNDS, KC_ASTR, KC_LT,
DF(_QWERTY), KC_EXLM, KC_HASH, KC_LCBR, KC_RCBR, KC_GRV, _______,_______, KC_AMPR, KC_LBRC, KC_RBRC, KC_PERC, KC_CIRC, KC_GT,
RGB_MODE_SWIRL, RGB_VAI, _______, RGB_VAD, RGB_TOG, KC_BSPC, KC_COLN, _______, _______, _______
),
/* NAV
* ,----------------------------------------. ,-----------------------------------------.
* | | | | | | | | | | | | | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | Esc | Ins | Pscr | Menu | | | | | PWrd | Up | NWrd | DLine| Bspc |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | Tab | LAt | LCtl |LShift| | Caps |-------. ,-------| | Left | Down | Rigth| Del | Bspc |
* |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
* |Shift | Undo | Cut | Copy | Paste| |-------| |-------| | LStr | | LEnd | | Shift|
* `-----------------------------------------/ / \ \-----------------------------------------'
* | LGUI | LAlt | LCTR |SYM | /Enter / \Space \ |NAV | RCTR | RAlt | RGUI |
* | | | | |/ / \ \ | | | | |
* `----------------------------------' '------''---------------------------'
*/
[_NAV] = LAYOUT(
_______, _______, _______, _______, _______, _______, KC_MS_LEFT,KC_MS_DOWN,KC_MS_UP,KC_MS_RIGHT,KC_MS_BTN1,KC_MS_BTN2,
_______, XXXXXXX, KC_PSCR, KC_APP , XXXXXXX, XXXXXXX, KC_PGUP , KC_PASTE , KC_COPY, KC_CUT , KC_UNDO , KC_BSPC,
_______, KC_LCTL, KC_LSFT, KC_LGUI, KC_LALT, KC_CAPS, KC_LEFT , KC_DOWN , KC_UP , KC_RGHT , KC_DEL , KC_BSPC,
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, KC_PGDN , KC_HOME , KC_END , KC_INS , _______ , _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/* ADJUST
* ,-----------------------------------------. ,-----------------------------------------.
* | | | | | | | | | | | | | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | QK_BOOT| | | | | | | | | | | | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* |RGB_TOG|hue^ |sat ^ | bri ^| |COLEMAK|-------. ,-------|desk <| | |desk >| | |
* |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
* | mode | hue dn|sat d|bri dn| |QWERTY|-------| |-------| | PREV | PLAY | NEXT | | |
* `-----------------------------------------/ / \ \-----------------------------------------'
* | LGUI | LAlt | LCTR |SYM | /Enter / \Space \ |NAV | RCTR | RAlt | RGUI |
* | | | | |/ / \ \ | | | | |
* `----------------------------------' '------''---------------------------'
*/
[_ADJUST] = LAYOUT(
//,------------------------------------------------. ,---------------------------------------------------.
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
//|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, UML_U, XXXXXXX, XXXXXXX, XXXXXXX,
//|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
XXXXXXX, UML_A, XXXXXXX, UML_SS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, UML_O, XXXXXXX,
//|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
//|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
_______, _______, _______, KC_LSFT, _______, _______, _______, _______, _______, _______
// \--------+--------+--------+---------+-------| |--------+---------+--------+---------+-------/
),
/* NUMPAD
* ,-----------------------------------------. ,-----------------------------------------.
* | trans| | | | | | | |NumLck| | | | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | ` | | | | | | | ^ | 7 | 8 | 9 | * | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | trans| | | | | |-------. ,-------| - | 4 | 5 | 6 | | | |
* |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
* | trans| | | | | |-------| |-------| + | 1 | 2 | 3 | \ | Shift|
* `-----------------------------------------/ / \ \-----------------------------------------'
* | Bspc | WIN |SYM | Enter| /Space / \Enter \ |SPACE | 0 | . | RAlt |
* | | | | |/ / \ \ | | | | |
* `----------------------------------' '------''---------------------------'
*/
[_NUMPAD] = LAYOUT(
//,------------------------------------------------. ,---------------------------------------------------.
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, KC_NUM, XXXXXXX, XXXXXXX,XXXXXXX, XXXXXXX,
//|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_CIRC, KC_P7, KC_P8, KC_P9, KC_ASTR, XXXXXXX,
//|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, KC_P4, KC_P5, KC_P6, KC_EQL, KC_PIPE,
//|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,_______, _______,KC_PLUS, KC_P1, KC_P2, KC_P3, KC_SLSH, _______,
//|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
_______, OSM(MOD_MEH), _______, _______, _______, _______, _______, KC_P0, KC_PDOT, _______
// \--------+--------+--------+---------+-------| |--------+---------+--------+---------+-------/
),
/* SWITCH
* ,-----------------------------------------. ,-----------------------------------------.
* | | | | | | | | | | | | | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | qwer | cole |col_dh| low | raise| adj | |numpad| | | | |QK_BOOT |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | | | | | | |-------. ,-------| | | | | |EEP_RST|
* |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
* | SLEEP| | | | | |-------| |-------| | | | | | |
* `-----------------------------------------/ / \ \-----------------------------------------'
* | Bspc | WIN |SYM | Enter| /Space / \Enter \ |SPACE | 0 | . | RAlt |
* | | | | |/ / \ \ | | | | |
* `----------------------------------' '------''---------------------------'
*/
// layer switcher
[_SWITCH] = LAYOUT(
//,------------------------------------------------. ,---------------------------------------------------.
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,XXXXXXX, XXXXXXX,
//|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
TO(0), TO(1), TO(2), TO(3), TO(4), TO(5), TO(6), KC_NO, KC_NO, KC_NO, KC_NO, QK_BOOT,
//|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, EE_CLR,
//|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
UE, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
//|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
KC_NO, KC_NO, KC_NO, KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
// \--------+--------+--------+---------+-------| |--------+---------+--------+---------+-------/
),
};
/* RAISE
* ,----------------------------------------. ,-----------------------------------------.
* | | | | | | | | | | | | | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | Esc | Ins | Pscr | Menu | | | | | PWrd | Up | NWrd | DLine| Bspc |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | Tab | LAt | LCtl |LShift| | Caps |-------. ,-------| | Left | Down | Rigth| Del | Bspc |
* |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
* |Shift | Undo | Cut | Copy | Paste| |-------| |-------| | LStr | | LEnd | | Shift|
* `-----------------------------------------/ / \ \-----------------------------------------'
* | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI |
* | | | | |/ / \ \ | | | | |
* `----------------------------------' '------''---------------------------'
*/
#ifdef OLED_ENABLE
static void render_logo(void) {
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,0
};
oled_write_P(qmk_logo, false);
}
static void print_status_narrow(void) {
// Print current mode
oled_write_P(PSTR("\n\n"), false);
switch (get_highest_layer(default_layer_state)) {
case _QWERTY:
oled_write_ln_P(PSTR("Qwrt"), false);
break;
case _COLEMAKDH:
oled_write_ln_P(PSTR("CmkDH"), false);
break;
default:
oled_write_P(PSTR("Undef"), false);
}
oled_write_P(PSTR("\n\n"), false);
// Print current layer
oled_write_ln_P(PSTR("LAYER"), false);
switch (get_highest_layer(layer_state)) {
case _QWERTY:
case _COLEMAKDH:
oled_write_P(PSTR("Base\n"), false);
break;
case _NAV:
oled_write_P(PSTR("NAV"), false);
break;
case _SYM:
oled_write_P(PSTR("SYM"), false);
break;
case _ADJUST:
oled_write_P(PSTR("Adj\n"), false);
case _NUMPAD:
oled_write_P(PSTR("Nump\n"), false);
break;
case _SWITCH:
oled_write_P(PSTR("Swit\n"), false);
break;
default:
oled_write_ln_P(PSTR("Undef"), false);
}
oled_write_P(PSTR("\n\n"), false);
led_t led_usb_state = host_keyboard_led_state();
oled_write_ln_P(PSTR("CPSLK"), led_usb_state.caps_lock);
}
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
if (is_keyboard_master()) {
return OLED_ROTATION_270;
}
return rotation;
}
bool oled_task_user(void) {
if (is_keyboard_master()) {
print_status_narrow();
} else {
render_logo();
}
return false;
}
#endif
layer_state_t layer_state_set_user(layer_state_t state) {
return update_tri_layer_state(state, _SYM, _NAV, _ADJUST);
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case KC_QWERTY:
if (record->event.pressed) {
set_single_persistent_default_layer(_QWERTY);
}
return false;
case KC_COLEMAKDH:
if (record->event.pressed) {
set_single_persistent_default_layer(_COLEMAKDH);
}
return false;
case KC_SYM:
if (record->event.pressed) {
layer_on(_SYM);
update_tri_layer(_SYM, _NAV, _ADJUST);
} else {
layer_off(_SYM);
update_tri_layer(_SYM, _NAV, _ADJUST);
}
return false;
case KC_NAV:
if (record->event.pressed) {
layer_on(_NAV);
update_tri_layer(_SYM, _NAV, _ADJUST);
} else {
layer_off(_NAV);
update_tri_layer(_SYM, _NAV, _ADJUST);
}
return false;
case KC_ADJUST:
if (record->event.pressed) {
layer_on(_ADJUST);
} else {
layer_off(_ADJUST);
}
return false;
case KC_D_MUTE:
if (record->event.pressed) {
register_mods(mod_config(MOD_MEH));
register_code(KC_UP);
} else {
unregister_mods(mod_config(MOD_MEH));
unregister_code(KC_UP);
}
}
return true;
}
//#ifdef ENCODER_ENABLE
//
//bool encoder_update_user(uint8_t index, bool clockwise) {
// if (index == 0) {
// if (clockwise) {
// tap_code(KC_VOLU);
// } else {
// tap_code(KC_VOLD);
// }
// } else if (index == 1) {
// switch (get_highest_layer(layer_state)) {
// case _COLEMAKDH:
// if (clockwise) {
// tap_code(KC_PGDN);
// } else {
// tap_code(KC_PGUP);
// }
// //break;
// case _NAV:
// case _SYM:
// if (clockwise) {
// tap_code(KC_UP);
// } else {
// tap_code(KC_DOWN);
// }
// //break;
// case _QWERTY:
// default:
// if (clockwise) {
// tap_code(KC_PGDN);
// } else {
// tap_code(KC_PGUP);
// }
// //break;
// }
// }
// return true;
//}
#if defined(ENCODER_MAP_ENABLE)
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[_QWERTY] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_PGUP, KC_PGDN) },
[_COLEMAKDH] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_PGUP, KC_PGDN) },
[_NAV] = { ENCODER_CCW_CW(RGB_HUD, RGB_HUI), ENCODER_CCW_CW(RGB_SAD, RGB_SAI) },
[_SYM] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI), ENCODER_CCW_CW(RGB_SPD, RGB_SPI) },
[_ADJUST] = { ENCODER_CCW_CW(RGB_HUD, RGB_HUI), ENCODER_CCW_CW(RGB_SAD, RGB_SAI) },
[_NUMPAD] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI), ENCODER_CCW_CW(RGB_SPD, RGB_SPI) },
[_SWITCH] = { ENCODER_CCW_CW(RGB_HUD, RGB_HUI), ENCODER_CCW_CW(RGB_SAD, RGB_SAI) },
};
#endif
//#endif

View File

@ -0,0 +1,19 @@
![SofleKeyboard default keymap](https://github.com/josefadamcik/SofleKeyboard/raw/master/Images/soflekeyboard.png)
![SofleKeyboard adjust layer](https://github.com/josefadamcik/SofleKeyboard/raw/master/Images/soflekeyboard_layout_adjust.png)
# Default keymap for Sofle Keyboard
Layout in [Keyboard Layout Editor](http://www.keyboard-layout-editor.com/#/gists/76efb423a46cbbea75465cb468eef7ff) and [adjust layer](http://www.keyboard-layout-editor.com/#/gists/4bcf66f922cfd54da20ba04905d56bd4)
Features:
- Symmetric modifiers (CMD/Super, Alt/Opt, Ctrl, Shift)
- Various modes, can be switched (using Adjust layer and the selected one is stored in EEPROM.
- Modes for Qwerty and Colemak support
- Modes for Mac vs Linux/Win support -> different order of modifiers and different action shortcuts on the "UPPER" layer (the red one in the image). Designed to simplify transtions when switching between operating systems often.
- The OLED on master half shows selected mode and caps lock state and is rotated.
- Left encoder controls volume up/down/mute. Right encoder PGUP/PGDOWN.

View File

@ -0,0 +1,12 @@
OLED_ENABLE = yes
ENCODER_ENABLE = yes
ENCODER_MAP_ENABLE = yes
CONSOLE_ENABLE = no
EXTRAKEY_ENABLE = yes
MOUSEKEY_ENABLE = no
RGBLIGHT_ENABLE = yes
NKRO_ENABLE = yes # Enable N-Key Rollover
DEBOUNCE_TYPE = sym_eager_pk # Debounce eagerly (report change immediately), keep per-key timers. We can use
# this because the sofle does not have to deal with noise.
AUTO_SHIFT_ENABLE = yes

View File

@ -41,11 +41,90 @@
}, },
"processor": "atmega32a", "processor": "atmega32a",
"bootloader": "bootloadhid", "bootloader": "bootloadhid",
"community_layouts": ["alice_split_bs"], "community_layouts": ["alice", "alice_split_bs"],
"layout_aliases": { "layout_aliases": {
"LAYOUT": "LAYOUT_alice_split_bs" "LAYOUT": "LAYOUT_alice_split_bs"
}, },
"layouts": { "layouts": {
"LAYOUT_alice": {
"layout": [
{"matrix": [5, 0], "x": 0, "y": 0},
{"matrix": [0, 0], "x": 1.25, "y": 0},
{"matrix": [0, 1], "x": 2.25, "y": 0},
{"matrix": [0, 2], "x": 3.25, "y": 0},
{"matrix": [0, 3], "x": 4.25, "y": 0},
{"matrix": [0, 4], "x": 5.25, "y": 0},
{"matrix": [0, 5], "x": 6.25, "y": 0},
{"matrix": [0, 6], "x": 7.25, "y": 0},
{"matrix": [0, 7], "x": 10.25, "y": 0},
{"matrix": [0, 8], "x": 11.25, "y": 0},
{"matrix": [0, 9], "x": 12.25, "y": 0},
{"matrix": [0, 10], "x": 13.25, "y": 0},
{"matrix": [0, 11], "x": 14.25, "y": 0},
{"matrix": [0, 12], "x": 15.25, "y": 0},
{"matrix": [0, 13], "x": 16.25, "y": 0, "w": 2},
{"matrix": [5, 1], "x": 0, "y": 1},
{"matrix": [1, 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": [5, 2], "x": 0, "y": 2},
{"matrix": [2, 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": [3, 0], "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.25, "y": 3},
{"matrix": [4, 0], "x": 1.25, "y": 4, "w": 1.5},
{"matrix": [4, 1], "x": 4.25, "y": 4, "w": 1.5},
{"matrix": [4, 2], "x": 5.75, "y": 4, "w": 2},
{"matrix": [4, 3], "x": 7.75, "y": 4, "w": 1.25},
{"matrix": [4, 6], "x": 9.5, "y": 4, "w": 2.75},
{"matrix": [4, 7], "x": 12.25, "y": 4, "w": 1.5},
{"matrix": [4, 8], "x": 16.75, "y": 4, "w": 1.5}
]
},
"LAYOUT_alice_split_bs": { "LAYOUT_alice_split_bs": {
"layout": [ "layout": [
{"matrix": [5, 0], "x": 0, "y": 0}, {"matrix": [5, 0], "x": 0, "y": 0},

View File

@ -33,6 +33,7 @@
"diode_direction": "COL2ROW", "diode_direction": "COL2ROW",
"processor": "STM32F072", "processor": "STM32F072",
"bootloader": "stm32-dfu", "bootloader": "stm32-dfu",
"community_layouts": ["alice"],
"layouts": { "layouts": {
"LAYOUT_alice": { "LAYOUT_alice": {
"layout": [ "layout": [

View File

@ -34,11 +34,91 @@
"diode_direction": "COL2ROW", "diode_direction": "COL2ROW",
"processor": "atmega32u4", "processor": "atmega32u4",
"bootloader": "atmel-dfu", "bootloader": "atmel-dfu",
"community_layouts": ["alice_split_bs"], "community_layouts": ["alice", "alice_split_bs"],
"layout_aliases": { "layout_aliases": {
"LAYOUT_all": "LAYOUT_alice_split_bs" "LAYOUT_all": "LAYOUT_alice_split_bs"
}, },
"layouts": { "layouts": {
"LAYOUT_alice": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 1.25, "y": 0},
{"matrix": [0, 2], "x": 2.25, "y": 0},
{"matrix": [0, 3], "x": 3.25, "y": 0},
{"matrix": [0, 4], "x": 4.25, "y": 0},
{"matrix": [0, 5], "x": 5.25, "y": 0},
{"matrix": [0, 6], "x": 6.25, "y": 0},
{"matrix": [0, 7], "x": 7.25, "y": 0},
{"matrix": [0, 8], "x": 10.25, "y": 0},
{"matrix": [0, 9], "x": 11.25, "y": 0},
{"matrix": [0, 10], "x": 12.25, "y": 0},
{"matrix": [0, 11], "x": 13.25, "y": 0},
{"matrix": [0, 12], "x": 14.25, "y": 0},
{"matrix": [0, 13], "x": 15.25, "y": 0},
{"matrix": [0, 14], "x": 16.25, "y": 0, "w": 2},
{"matrix": [1, 0], "x": 0, "y": 1},
{"matrix": [1, 1], "x": 1.25, "y": 1, "w": 1.5},
{"matrix": [1, 2], "x": 2.75, "y": 1},
{"matrix": [1, 3], "x": 3.75, "y": 1},
{"matrix": [1, 4], "x": 4.75, "y": 1},
{"matrix": [1, 5], "x": 5.75, "y": 1},
{"matrix": [1, 6], "x": 6.75, "y": 1},
{"matrix": [1, 7], "x": 9.75, "y": 1},
{"matrix": [1, 8], "x": 10.75, "y": 1},
{"matrix": [1, 9], "x": 11.75, "y": 1},
{"matrix": [1, 10], "x": 12.75, "y": 1},
{"matrix": [1, 11], "x": 13.75, "y": 1},
{"matrix": [1, 12], "x": 14.75, "y": 1},
{"matrix": [1, 13], "x": 15.75, "y": 1},
{"matrix": [1, 14], "x": 16.75, "y": 1, "w": 1.5},
{"matrix": [2, 0], "x": 0, "y": 2},
{"matrix": [2, 1], "x": 1.25, "y": 2, "w": 1.75},
{"matrix": [2, 2], "x": 3, "y": 2},
{"matrix": [2, 3], "x": 4, "y": 2},
{"matrix": [2, 4], "x": 5, "y": 2},
{"matrix": [2, 5], "x": 6, "y": 2},
{"matrix": [2, 6], "x": 7, "y": 2},
{"matrix": [2, 7], "x": 10, "y": 2},
{"matrix": [2, 8], "x": 11, "y": 2},
{"matrix": [2, 9], "x": 12, "y": 2},
{"matrix": [2, 10], "x": 13, "y": 2},
{"matrix": [2, 11], "x": 14, "y": 2},
{"matrix": [2, 12], "x": 15, "y": 2},
{"matrix": [2, 13], "x": 16, "y": 2, "w": 2.25},
{"matrix": [3, 1], "x": 1.25, "y": 3, "w": 2.25},
{"matrix": [3, 2], "x": 3.5, "y": 3},
{"matrix": [3, 3], "x": 4.5, "y": 3},
{"matrix": [3, 4], "x": 5.5, "y": 3},
{"matrix": [3, 5], "x": 6.5, "y": 3},
{"matrix": [3, 6], "x": 7.5, "y": 3},
{"matrix": [3, 7], "x": 9.5, "y": 3},
{"matrix": [3, 8], "x": 10.5, "y": 3},
{"matrix": [3, 9], "x": 11.5, "y": 3},
{"matrix": [3, 10], "x": 12.5, "y": 3},
{"matrix": [3, 11], "x": 13.5, "y": 3},
{"matrix": [3, 12], "x": 14.5, "y": 3},
{"matrix": [3, 13], "x": 15.5, "y": 3, "w": 1.75},
{"matrix": [3, 14], "x": 17.25, "y": 3},
{"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.5},
{"matrix": [4, 3], "x": 4.25, "y": 4, "w": 1.5},
{"matrix": [4, 5], "x": 5.75, "y": 4, "w": 2},
{"matrix": [4, 6], "x": 7.75, "y": 4, "w": 1.25},
{"matrix": [4, 8], "x": 9.5, "y": 4, "w": 2.75},
{"matrix": [4, 10], "x": 12.25, "y": 4, "w": 1.5},
{"matrix": [4, 13], "x": 16.75, "y": 4, "w": 1.5}
]
},
"LAYOUT_alice_split_bs": { "LAYOUT_alice_split_bs": {
"layout": [ "layout": [
{"matrix": [0, 0], "x": 0, "y": 0}, {"matrix": [0, 0], "x": 0, "y": 0},

View File

@ -0,0 +1,24 @@
# Matrix Diagram for Xelus Valor Rev. 1
```
┌───────┐
2u Backspace │0E │
└───────┘
┌───┐ ┌───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┬───┬───┐
│00 │ │01 │02 │03 │04 │05 │06 │07 │ │08 │09 │0A │0B │0C │0D │0E │2E │
┌┴──┬┘ ┌┴───┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┘ ┌─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┐
│10 │ │11 │12 │13 │14 │15 │16 │ │17 │18 │19 │1A │1B │1C │1D │1E │
┌┴──┬┘ ┌┴─────┼───┼───┼───┼───┼───┤ └┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴──────┴┐
│20 │ │21 │22 │23 │24 │25 │26 │ │27 │28 │29 │2A │2B │2C │2D │
└───┘ ┌┴──────┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ ┌─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───────┬──┴┐
│31 │32 │33 │34 │35 │36 │ │37 │38 │39 │3A │3B │3C │3D │3E │
├─────┬──┴──┬┴───┴┬──┴───┴┬──┴──┐ ├───┴───┴──┬┴───┴┬──┴───┴──────┬──┴──┬┘
│41 │ │43 │45 │46 │ │48 │4A │ │4D │
└─────┘ └─────┴───────┴─────┘ └──────────┴─────┘ └─────┘
┌────────────┐
2.75u RShift │3D │
└────────────┘
┌─────────┬───┐
│45 │46 │ 2.25u-1u Left Space
└─────────┴───┘
```

View File

@ -22,11 +22,90 @@
"diode_direction": "COL2ROW", "diode_direction": "COL2ROW",
"processor": "STM32L422", "processor": "STM32L422",
"bootloader": "stm32-dfu", "bootloader": "stm32-dfu",
"community_layouts": ["alice_split_bs"], "community_layouts": ["alice", "alice_split_bs"],
"layout_aliases": { "layout_aliases": {
"LAYOUT_all": "LAYOUT_alice_split_bs" "LAYOUT_all": "LAYOUT_alice_split_bs"
}, },
"layouts": { "layouts": {
"LAYOUT_alice": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 1.25, "y": 0},
{"matrix": [0, 2], "x": 2.25, "y": 0},
{"matrix": [0, 3], "x": 3.25, "y": 0},
{"matrix": [0, 4], "x": 4.25, "y": 0},
{"matrix": [0, 5], "x": 5.25, "y": 0},
{"matrix": [0, 6], "x": 6.25, "y": 0},
{"matrix": [0, 7], "x": 7.25, "y": 0},
{"matrix": [0, 8], "x": 10.25, "y": 0},
{"matrix": [0, 9], "x": 11.25, "y": 0},
{"matrix": [0, 10], "x": 12.25, "y": 0},
{"matrix": [0, 11], "x": 13.25, "y": 0},
{"matrix": [0, 12], "x": 14.25, "y": 0},
{"matrix": [0, 13], "x": 15.25, "y": 0},
{"matrix": [0, 14], "x": 16.25, "y": 0, "w": 2},
{"matrix": [1, 0], "x": 0, "y": 1},
{"matrix": [1, 1], "x": 1.25, "y": 1, "w": 1.5},
{"matrix": [1, 2], "x": 2.75, "y": 1},
{"matrix": [1, 3], "x": 3.75, "y": 1},
{"matrix": [1, 4], "x": 4.75, "y": 1},
{"matrix": [1, 5], "x": 5.75, "y": 1},
{"matrix": [1, 6], "x": 6.75, "y": 1},
{"matrix": [1, 7], "x": 9.75, "y": 1},
{"matrix": [1, 8], "x": 10.75, "y": 1},
{"matrix": [1, 9], "x": 11.75, "y": 1},
{"matrix": [1, 10], "x": 12.75, "y": 1},
{"matrix": [1, 11], "x": 13.75, "y": 1},
{"matrix": [1, 12], "x": 14.75, "y": 1},
{"matrix": [1, 13], "x": 15.75, "y": 1},
{"matrix": [1, 14], "x": 16.75, "y": 1, "w": 1.5},
{"matrix": [2, 0], "x": 0, "y": 2},
{"matrix": [2, 1], "x": 1.25, "y": 2, "w": 1.75},
{"matrix": [2, 2], "x": 3, "y": 2},
{"matrix": [2, 3], "x": 4, "y": 2},
{"matrix": [2, 4], "x": 5, "y": 2},
{"matrix": [2, 5], "x": 6, "y": 2},
{"matrix": [2, 6], "x": 7, "y": 2},
{"matrix": [2, 7], "x": 10, "y": 2},
{"matrix": [2, 8], "x": 11, "y": 2},
{"matrix": [2, 9], "x": 12, "y": 2},
{"matrix": [2, 10], "x": 13, "y": 2},
{"matrix": [2, 11], "x": 14, "y": 2},
{"matrix": [2, 12], "x": 15, "y": 2},
{"matrix": [2, 13], "x": 16, "y": 2, "w": 2.25},
{"matrix": [3, 1], "x": 1.25, "y": 3, "w": 2.25},
{"matrix": [3, 2], "x": 3.5, "y": 3},
{"matrix": [3, 3], "x": 4.5, "y": 3},
{"matrix": [3, 4], "x": 5.5, "y": 3},
{"matrix": [3, 5], "x": 6.5, "y": 3},
{"matrix": [3, 6], "x": 7.5, "y": 3},
{"matrix": [3, 7], "x": 9.5, "y": 3},
{"matrix": [3, 8], "x": 10.5, "y": 3},
{"matrix": [3, 9], "x": 11.5, "y": 3},
{"matrix": [3, 10], "x": 12.5, "y": 3},
{"matrix": [3, 11], "x": 13.5, "y": 3},
{"matrix": [3, 12], "x": 14.5, "y": 3},
{"matrix": [3, 13], "x": 15.5, "y": 3, "w": 1.75},
{"matrix": [3, 14], "x": 17.25, "y": 3},
{"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.5},
{"matrix": [4, 3], "x": 4.25, "y": 4, "w": 1.5},
{"matrix": [4, 5], "x": 5.75, "y": 4, "w": 2},
{"matrix": [4, 6], "x": 7.75, "y": 4, "w": 1.25},
{"matrix": [4, 8], "x": 9.5, "y": 4, "w": 2.75},
{"matrix": [4, 10], "x": 12.25, "y": 4, "w": 1.5},
{"matrix": [4, 13], "x": 16.75, "y": 4, "w": 1.5}
]
},
"LAYOUT_alice_split_bs": { "LAYOUT_alice_split_bs": {
"layout": [ "layout": [
{"matrix": [0, 0], "x": 0, "y": 0}, {"matrix": [0, 0], "x": 0, "y": 0},

View File

@ -0,0 +1,21 @@
# Matrix Diagram for Xelus Valor Rev. 2
```
┌───────┐
2u Backspace │0E │
└───────┘
┌───┐ ┌───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┬───┬───┐
│00 │ │01 │02 │03 │04 │05 │06 │07 │ │08 │09 │0A │0B │0C │0D │0E │2E │
┌┴──┬┘ ┌┴───┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┘ ┌─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┐
│10 │ │11 │12 │13 │14 │15 │16 │ │17 │18 │19 │1A │1B │1C │1D │1E │
┌┴──┬┘ ┌┴─────┼───┼───┼───┼───┼───┤ └┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴──────┴┐
│20 │ │21 │22 │23 │24 │25 │26 │ │27 │28 │29 │2A │2B │2C │2D │
└───┘ ┌┴──────┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ ┌─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───────┬──┴┐
│31 │32 │33 │34 │35 │36 │ │37 │38 │39 │3A │3B │3C │3D │3E │
├─────┬──┴──┬┴───┴┬──┴───┴──┬┴──┐ ├───┴───┴──┬┴───┴┬──┴───┴──────┬──┴──┬┘
│41 │ │43 │45 │46 │ │48 │4A │ │4D │
└─────┘ └─────┴─────────┴───┘ └──────────┴─────┘ └─────┘
┌────────────┐
2.75u RShift │3D │
└────────────┘
```

View File

@ -14,8 +14,247 @@
}, },
"processor": "atmega328p", "processor": "atmega328p",
"bootloader": "usbasploader", "bootloader": "usbasploader",
"community_layouts": ["alice_split_bs"], "community_layouts": ["alice", "alice_split_bs"],
"layouts": { "layouts": {
"LAYOUT_alice": {
"layout": [
{"matrix": [1, 0], "x": 0, "y": 0},
{"matrix": [0, 0], "x": 1.25, "y": 0},
{"matrix": [0, 1], "x": 2.25, "y": 0},
{"matrix": [0, 2], "x": 3.25, "y": 0},
{"matrix": [0, 3], "x": 4.25, "y": 0},
{"matrix": [0, 4], "x": 5.25, "y": 0},
{"matrix": [0, 5], "x": 6.25, "y": 0},
{"matrix": [0, 6], "x": 7.25, "y": 0},
{"matrix": [0, 7], "x": 10.25, "y": 0},
{"matrix": [0, 8], "x": 11.25, "y": 0},
{"matrix": [0, 9], "x": 12.25, "y": 0},
{"matrix": [0, 10], "x": 13.25, "y": 0},
{"matrix": [0, 11], "x": 14.25, "y": 0},
{"matrix": [0, 12], "x": 15.25, "y": 0},
{"matrix": [0, 14], "x": 16.25, "y": 0, "w": 2},
{"matrix": [2, 0], "x": 0, "y": 1},
{"matrix": [1, 1], "x": 1.25, "y": 1, "w": 1.5},
{"matrix": [1, 2], "x": 2.75, "y": 1},
{"matrix": [1, 3], "x": 3.75, "y": 1},
{"matrix": [1, 4], "x": 4.75, "y": 1},
{"matrix": [1, 5], "x": 5.75, "y": 1},
{"matrix": [1, 6], "x": 6.75, "y": 1},
{"matrix": [1, 7], "x": 9.75, "y": 1},
{"matrix": [1, 8], "x": 10.75, "y": 1},
{"matrix": [1, 9], "x": 11.75, "y": 1},
{"matrix": [1, 10], "x": 12.75, "y": 1},
{"matrix": [1, 11], "x": 13.75, "y": 1},
{"matrix": [1, 12], "x": 14.75, "y": 1},
{"matrix": [1, 13], "x": 15.75, "y": 1},
{"matrix": [1, 14], "x": 16.75, "y": 1, "w": 1.5},
{"matrix": [3, 0], "x": 0, "y": 2},
{"matrix": [2, 1], "x": 1.25, "y": 2, "w": 1.75},
{"matrix": [2, 2], "x": 3, "y": 2},
{"matrix": [2, 3], "x": 4, "y": 2},
{"matrix": [2, 4], "x": 5, "y": 2},
{"matrix": [2, 5], "x": 6, "y": 2},
{"matrix": [2, 6], "x": 7, "y": 2},
{"matrix": [2, 7], "x": 10, "y": 2},
{"matrix": [2, 8], "x": 11, "y": 2},
{"matrix": [2, 9], "x": 12, "y": 2},
{"matrix": [2, 10], "x": 13, "y": 2},
{"matrix": [2, 11], "x": 14, "y": 2},
{"matrix": [2, 12], "x": 15, "y": 2},
{"matrix": [2, 14], "x": 16, "y": 2, "w": 2.25},
{"matrix": [3, 1], "x": 1.25, "y": 3, "w": 2.25},
{"matrix": [3, 2], "x": 3.5, "y": 3},
{"matrix": [3, 3], "x": 4.5, "y": 3},
{"matrix": [3, 4], "x": 5.5, "y": 3},
{"matrix": [3, 5], "x": 6.5, "y": 3},
{"matrix": [3, 6], "x": 7.5, "y": 3},
{"matrix": [3, 7], "x": 9.5, "y": 3},
{"matrix": [3, 8], "x": 10.5, "y": 3},
{"matrix": [3, 9], "x": 11.5, "y": 3},
{"matrix": [3, 10], "x": 12.5, "y": 3},
{"matrix": [3, 11], "x": 13.5, "y": 3},
{"matrix": [3, 12], "x": 14.5, "y": 3},
{"matrix": [3, 13], "x": 15.5, "y": 3, "w": 1.75},
{"matrix": [3, 14], "x": 17.25, "y": 3},
{"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.5},
{"matrix": [4, 3], "x": 4.25, "y": 4, "w": 1.5},
{"matrix": [4, 5], "x": 5.75, "y": 4, "w": 2},
{"matrix": [4, 6], "x": 7.75, "y": 4, "w": 1.25},
{"matrix": [4, 8], "x": 9.5, "y": 4, "w": 2.75},
{"matrix": [4, 10], "x": 12.25, "y": 4, "w": 1.5},
{"matrix": [4, 14], "x": 16.75, "y": 4, "w": 1.5}
]
},
"LAYOUT_alice_rshift": {
"layout": [
{"matrix": [1, 0], "x": 0, "y": 0},
{"matrix": [0, 0], "x": 1.25, "y": 0},
{"matrix": [0, 1], "x": 2.25, "y": 0},
{"matrix": [0, 2], "x": 3.25, "y": 0},
{"matrix": [0, 3], "x": 4.25, "y": 0},
{"matrix": [0, 4], "x": 5.25, "y": 0},
{"matrix": [0, 5], "x": 6.25, "y": 0},
{"matrix": [0, 6], "x": 7.25, "y": 0},
{"matrix": [0, 7], "x": 10.25, "y": 0},
{"matrix": [0, 8], "x": 11.25, "y": 0},
{"matrix": [0, 9], "x": 12.25, "y": 0},
{"matrix": [0, 10], "x": 13.25, "y": 0},
{"matrix": [0, 11], "x": 14.25, "y": 0},
{"matrix": [0, 12], "x": 15.25, "y": 0},
{"matrix": [0, 14], "x": 16.25, "y": 0, "w": 2},
{"matrix": [2, 0], "x": 0, "y": 1},
{"matrix": [1, 1], "x": 1.25, "y": 1, "w": 1.5},
{"matrix": [1, 2], "x": 2.75, "y": 1},
{"matrix": [1, 3], "x": 3.75, "y": 1},
{"matrix": [1, 4], "x": 4.75, "y": 1},
{"matrix": [1, 5], "x": 5.75, "y": 1},
{"matrix": [1, 6], "x": 6.75, "y": 1},
{"matrix": [1, 7], "x": 9.75, "y": 1},
{"matrix": [1, 8], "x": 10.75, "y": 1},
{"matrix": [1, 9], "x": 11.75, "y": 1},
{"matrix": [1, 10], "x": 12.75, "y": 1},
{"matrix": [1, 11], "x": 13.75, "y": 1},
{"matrix": [1, 12], "x": 14.75, "y": 1},
{"matrix": [1, 13], "x": 15.75, "y": 1},
{"matrix": [1, 14], "x": 16.75, "y": 1, "w": 1.5},
{"matrix": [3, 0], "x": 0, "y": 2},
{"matrix": [2, 1], "x": 1.25, "y": 2, "w": 1.75},
{"matrix": [2, 2], "x": 3, "y": 2},
{"matrix": [2, 3], "x": 4, "y": 2},
{"matrix": [2, 4], "x": 5, "y": 2},
{"matrix": [2, 5], "x": 6, "y": 2},
{"matrix": [2, 6], "x": 7, "y": 2},
{"matrix": [2, 7], "x": 10, "y": 2},
{"matrix": [2, 8], "x": 11, "y": 2},
{"matrix": [2, 9], "x": 12, "y": 2},
{"matrix": [2, 10], "x": 13, "y": 2},
{"matrix": [2, 11], "x": 14, "y": 2},
{"matrix": [2, 12], "x": 15, "y": 2},
{"matrix": [2, 14], "x": 16, "y": 2, "w": 2.25},
{"matrix": [3, 1], "x": 1.25, "y": 3, "w": 2.25},
{"matrix": [3, 2], "x": 3.5, "y": 3},
{"matrix": [3, 3], "x": 4.5, "y": 3},
{"matrix": [3, 4], "x": 5.5, "y": 3},
{"matrix": [3, 5], "x": 6.5, "y": 3},
{"matrix": [3, 6], "x": 7.5, "y": 3},
{"matrix": [3, 7], "x": 9.5, "y": 3},
{"matrix": [3, 8], "x": 10.5, "y": 3},
{"matrix": [3, 9], "x": 11.5, "y": 3},
{"matrix": [3, 10], "x": 12.5, "y": 3},
{"matrix": [3, 11], "x": 13.5, "y": 3},
{"matrix": [3, 12], "x": 14.5, "y": 3},
{"matrix": [3, 13], "x": 15.5, "y": 3, "w": 2.75},
{"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.5},
{"matrix": [4, 3], "x": 4.25, "y": 4, "w": 1.5},
{"matrix": [4, 5], "x": 5.75, "y": 4, "w": 2},
{"matrix": [4, 6], "x": 7.75, "y": 4, "w": 1.25},
{"matrix": [4, 8], "x": 9.5, "y": 4, "w": 2.75},
{"matrix": [4, 10], "x": 12.25, "y": 4, "w": 1.5},
{"matrix": [4, 14], "x": 16.75, "y": 4, "w": 1.5}
]
},
"LAYOUT_alice_rshift_split_bs": {
"layout": [
{"matrix": [1, 0], "x": 0, "y": 0},
{"matrix": [0, 0], "x": 1.25, "y": 0},
{"matrix": [0, 1], "x": 2.25, "y": 0},
{"matrix": [0, 2], "x": 3.25, "y": 0},
{"matrix": [0, 3], "x": 4.25, "y": 0},
{"matrix": [0, 4], "x": 5.25, "y": 0},
{"matrix": [0, 5], "x": 6.25, "y": 0},
{"matrix": [0, 6], "x": 7.25, "y": 0},
{"matrix": [0, 7], "x": 10.25, "y": 0},
{"matrix": [0, 8], "x": 11.25, "y": 0},
{"matrix": [0, 9], "x": 12.25, "y": 0},
{"matrix": [0, 10], "x": 13.25, "y": 0},
{"matrix": [0, 11], "x": 14.25, "y": 0},
{"matrix": [0, 12], "x": 15.25, "y": 0},
{"matrix": [0, 13], "x": 16.25, "y": 0},
{"matrix": [0, 14], "x": 17.25, "y": 0},
{"matrix": [2, 0], "x": 0, "y": 1},
{"matrix": [1, 1], "x": 1.25, "y": 1, "w": 1.5},
{"matrix": [1, 2], "x": 2.75, "y": 1},
{"matrix": [1, 3], "x": 3.75, "y": 1},
{"matrix": [1, 4], "x": 4.75, "y": 1},
{"matrix": [1, 5], "x": 5.75, "y": 1},
{"matrix": [1, 6], "x": 6.75, "y": 1},
{"matrix": [1, 7], "x": 9.75, "y": 1},
{"matrix": [1, 8], "x": 10.75, "y": 1},
{"matrix": [1, 9], "x": 11.75, "y": 1},
{"matrix": [1, 10], "x": 12.75, "y": 1},
{"matrix": [1, 11], "x": 13.75, "y": 1},
{"matrix": [1, 12], "x": 14.75, "y": 1},
{"matrix": [1, 13], "x": 15.75, "y": 1},
{"matrix": [1, 14], "x": 16.75, "y": 1, "w": 1.5},
{"matrix": [3, 0], "x": 0, "y": 2},
{"matrix": [2, 1], "x": 1.25, "y": 2, "w": 1.75},
{"matrix": [2, 2], "x": 3, "y": 2},
{"matrix": [2, 3], "x": 4, "y": 2},
{"matrix": [2, 4], "x": 5, "y": 2},
{"matrix": [2, 5], "x": 6, "y": 2},
{"matrix": [2, 6], "x": 7, "y": 2},
{"matrix": [2, 7], "x": 10, "y": 2},
{"matrix": [2, 8], "x": 11, "y": 2},
{"matrix": [2, 9], "x": 12, "y": 2},
{"matrix": [2, 10], "x": 13, "y": 2},
{"matrix": [2, 11], "x": 14, "y": 2},
{"matrix": [2, 12], "x": 15, "y": 2},
{"matrix": [2, 14], "x": 16, "y": 2, "w": 2.25},
{"matrix": [3, 1], "x": 1.25, "y": 3, "w": 2.25},
{"matrix": [3, 2], "x": 3.5, "y": 3},
{"matrix": [3, 3], "x": 4.5, "y": 3},
{"matrix": [3, 4], "x": 5.5, "y": 3},
{"matrix": [3, 5], "x": 6.5, "y": 3},
{"matrix": [3, 6], "x": 7.5, "y": 3},
{"matrix": [3, 7], "x": 9.5, "y": 3},
{"matrix": [3, 8], "x": 10.5, "y": 3},
{"matrix": [3, 9], "x": 11.5, "y": 3},
{"matrix": [3, 10], "x": 12.5, "y": 3},
{"matrix": [3, 11], "x": 13.5, "y": 3},
{"matrix": [3, 12], "x": 14.5, "y": 3},
{"matrix": [3, 13], "x": 15.5, "y": 3, "w": 2.75},
{"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.5},
{"matrix": [4, 3], "x": 4.25, "y": 4, "w": 1.5},
{"matrix": [4, 5], "x": 5.75, "y": 4, "w": 2},
{"matrix": [4, 6], "x": 7.75, "y": 4, "w": 1.25},
{"matrix": [4, 8], "x": 9.5, "y": 4, "w": 2.75},
{"matrix": [4, 10], "x": 12.25, "y": 4, "w": 1.5},
{"matrix": [4, 14], "x": 16.75, "y": 4, "w": 1.5}
]
},
"LAYOUT_alice_split_bs": { "LAYOUT_alice_split_bs": {
"layout": [ "layout": [
{"matrix": [1, 0], "x": 0, "y": 0}, {"matrix": [1, 0], "x": 0, "y": 0},

View File

@ -0,0 +1,21 @@
# Matrix Diagram for Yiancar-Designs Seigaiha
```
┌───────┐
2u Backspace │0E │
└───────┘
┌───┐ ┌───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┬───┬───┐
│10 │ │00 │01 │02 │03 │04 │05 │06 │ │07 │08 │09 │0A │0B │0C │0D │0E │
┌┴──┬┘ ┌┴───┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┘ ┌─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┐
│20 │ │11 │12 │13 │14 │15 │16 │ │17 │18 │19 │1A │1B │1C │1D │1E │
┌┴──┬┘ ┌┴─────┼───┼───┼───┼───┼───┤ └┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴──────┴┐
│30 │ │21 │22 │23 │24 │25 │26 │ │27 │28 │29 │2A │2B │2C │2E │
└───┘ ┌┴──────┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ ┌─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───────┬──┴┐
│31 │32 │33 │34 │35 │36 │ │37 │38 │39 │3A │3B │3C │3D │3E │
├─────┬──┴──┬┴───┴┬──┴───┴┬──┴──┐ ├───┴───┴──┬┴───┴┬──┴───┴──────┬──┴──┬┘
│41 │ │43 │45 │46 │ │48 │4A │ │4E │
└─────┘ └─────┴───────┴─────┘ └──────────┴─────┘ └─────┘
┌────────────┐
2.75u RShift │3D │
└────────────┘
```

View File

@ -53,17 +53,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
) )
}; };
#ifdef ENCODER_ENABLE #if defined(ENCODER_MAP_ENABLE)
bool encoder_update_user(uint8_t index, bool clockwise) { const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
if (index == 0) { /* First encoder */ [_BASE] = { ENCODER_CCW_CW(KC_WH_U, KC_WH_D) },
if (clockwise) { [_FN1] = { ENCODER_CCW_CW(KC_NO, KC_NO) },
tap_code16(KC_WH_U); [_FN2] = { ENCODER_CCW_CW(KC_NO, KC_NO) },
} else { [_FN3] = { ENCODER_CCW_CW(KC_NO, KC_NO) },
tap_code16(KC_WH_D); };
}
}
return false;
}
#endif #endif
#ifdef RGBLIGHT_LAYERS #ifdef RGBLIGHT_LAYERS

View File

@ -1 +1,2 @@
VIA_ENABLE = yes ENCODER_MAP_ENABLE = yes
VIA_ENABLE = yes

View File

@ -23,7 +23,7 @@ def find(cli):
if len(cli.args.filter) == 0 and len(cli.args.print) > 0: if len(cli.args.filter) == 0 and len(cli.args.print) > 0:
cli.log.warning('No filters supplied -- keymaps not parsed, unable to print requested values.') cli.log.warning('No filters supplied -- keymaps not parsed, unable to print requested values.')
targets = search_keymap_targets(cli.args.keymap, cli.args.filter, cli.args.print) targets = search_keymap_targets([('all', cli.config.find.keymap)], cli.args.filter, cli.args.print)
for keyboard, keymap, print_vals in targets: for keyboard, keymap, print_vals in targets:
print(f'{keyboard}:{keymap}') print(f'{keyboard}:{keymap}')

View File

@ -97,6 +97,6 @@ def mass_compile(cli):
if len(cli.args.builds) > 0: if len(cli.args.builds) > 0:
targets = search_make_targets(cli.args.builds, cli.args.filter) targets = search_make_targets(cli.args.builds, cli.args.filter)
else: else:
targets = search_keymap_targets(cli.args.keymap, cli.args.filter) targets = search_keymap_targets([('all', cli.config.mass_compile.keymap)], cli.args.filter)
return mass_compile_targets(targets, cli.args.clean, cli.args.dry_run, cli.args.no_temp, cli.args.parallel, cli.args.env) return mass_compile_targets(targets, cli.args.clean, cli.args.dry_run, cli.config.mass_compile.no_temp, cli.config.mass_compile.parallel, cli.args.env)

View File

@ -4,12 +4,12 @@ import contextlib
import functools import functools
import fnmatch import fnmatch
import logging import logging
import multiprocessing
import re import re
from typing import List, Tuple from typing import List, Tuple
from dotty_dict import dotty from dotty_dict import dotty
from milc import cli from milc import cli
from qmk.util import parallel_map
from qmk.info import keymap_json from qmk.info import keymap_json
import qmk.keyboard import qmk.keyboard
import qmk.keymap import qmk.keymap
@ -78,17 +78,16 @@ def _expand_keymap_target(keyboard: str, keymap: str, all_keyboards: List[str] =
all_keyboards = qmk.keyboard.list_keyboards() all_keyboards = qmk.keyboard.list_keyboards()
if keyboard == 'all': if keyboard == 'all':
with multiprocessing.Pool() as pool: if keymap == 'all':
if keymap == 'all': cli.log.info('Retrieving list of all keyboards and keymaps...')
cli.log.info('Retrieving list of all keyboards and keymaps...') targets = []
targets = [] for kb in parallel_map(_all_keymaps, all_keyboards):
for kb in pool.imap_unordered(_all_keymaps, all_keyboards): targets.extend(kb)
targets.extend(kb) return targets
return targets else:
else: cli.log.info(f'Retrieving list of keyboards with keymap "{keymap}"...')
cli.log.info(f'Retrieving list of keyboards with keymap "{keymap}"...') keyboard_filter = functools.partial(_keymap_exists, keymap=keymap)
keyboard_filter = functools.partial(_keymap_exists, keymap=keymap) return [(kb, keymap) for kb in filter(lambda e: e is not None, parallel_map(keyboard_filter, all_keyboards))]
return [(kb, keymap) for kb in filter(lambda e: e is not None, pool.imap_unordered(keyboard_filter, all_keyboards))]
else: else:
if keymap == 'all': if keymap == 'all':
keyboard = qmk.keyboard.resolve_keyboard(keyboard) keyboard = qmk.keyboard.resolve_keyboard(keyboard)
@ -117,8 +116,7 @@ def _filter_keymap_targets(target_list: List[Tuple[str, str]], filters: List[str
targets = [(kb, km, {}) for kb, km in target_list] targets = [(kb, km, {}) for kb, km in target_list]
else: else:
cli.log.info('Parsing data for all matching keyboard/keymap combinations...') cli.log.info('Parsing data for all matching keyboard/keymap combinations...')
with multiprocessing.Pool() as pool: valid_keymaps = [(e[0], e[1], dotty(e[2])) for e in parallel_map(_load_keymap_info, target_list)]
valid_keymaps = [(e[0], e[1], dotty(e[2])) for e in pool.imap_unordered(_load_keymap_info, target_list)]
function_re = re.compile(r'^(?P<function>[a-zA-Z]+)\((?P<key>[a-zA-Z0-9_\.]+)(,\s*(?P<value>[^#]+))?\)$') function_re = re.compile(r'^(?P<function>[a-zA-Z]+)\((?P<key>[a-zA-Z0-9_\.]+)(,\s*(?P<value>[^#]+))?\)$')
equals_re = re.compile(r'^(?P<key>[a-zA-Z0-9_\.]+)\s*=\s*(?P<value>[^#]+)$') equals_re = re.compile(r'^(?P<key>[a-zA-Z0-9_\.]+)\s*=\s*(?P<value>[^#]+)$')
@ -179,10 +177,10 @@ def _filter_keymap_targets(target_list: List[Tuple[str, str]], filters: List[str
return targets return targets
def search_keymap_targets(keymap='default', filters: List[str] = [], print_vals: List[str] = []) -> List[Tuple[str, str, List[Tuple[str, str]]]]: def search_keymap_targets(targets: List[Tuple[str, str]] = [('all', 'default')], filters: List[str] = [], print_vals: List[str] = []) -> List[Tuple[str, str, List[Tuple[str, str]]]]:
"""Search for build targets matching the supplied criteria. """Search for build targets matching the supplied criteria.
""" """
return list(sorted(_filter_keymap_targets(expand_keymap_targets([('all', keymap)]), filters, print_vals), key=lambda e: (e[0], e[1]))) return list(sorted(_filter_keymap_targets(expand_keymap_targets(targets), filters, print_vals), key=lambda e: (e[0], e[1])))
def search_make_targets(targets: List[str], filters: List[str] = [], print_vals: List[str] = []) -> List[Tuple[str, str, List[Tuple[str, str]]]]: def search_make_targets(targets: List[str], filters: List[str] = [], print_vals: List[str] = []) -> List[Tuple[str, str, List[Tuple[str, str]]]]:

56
lib/python/qmk/util.py Normal file
View File

@ -0,0 +1,56 @@
"""Utility functions.
"""
import contextlib
import multiprocessing
from milc import cli
@contextlib.contextmanager
def parallelize():
"""Returns a function that can be used in place of a map() call.
Attempts to use `mpire`, falling back to `multiprocessing` if it's not
available. If parallelization is not requested, returns the original map()
function.
"""
# Work out if we've already got a config value for parallel searching
if cli.config.user.parallel_search is None:
parallel_search = True
else:
parallel_search = cli.config.user.parallel_search
# Non-parallel searches use `map()`
if not parallel_search:
yield map
return
# Prefer mpire's `WorkerPool` if it's available
with contextlib.suppress(ImportError):
from mpire import WorkerPool
from mpire.utils import make_single_arguments
with WorkerPool() as pool:
def _worker(func, *args):
# Ensure we don't unpack tuples -- mpire's `WorkerPool` tries to do so normally so we tell it not to.
for r in pool.imap_unordered(func, make_single_arguments(*args, generator=False), progress_bar=True):
yield r
yield _worker
return
# Otherwise fall back to multiprocessing's `Pool`
with multiprocessing.Pool() as pool:
yield pool.imap_unordered
def parallel_map(*args, **kwargs):
"""Effectively runs `map()` but executes it in parallel if necessary.
"""
with parallelize() as map_fn:
# This needs to be enclosed in a `list()` as some implementations return
# a generator function, which means the scope of the pool is closed off
# before the results are returned. Returning a list ensures results are
# materialised before any worker pool is shut down.
return list(map_fn(*args, **kwargs))