Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
972f8ba69a | ||
|
|
9ac0023a6a | ||
|
|
49be4860f7 | ||
|
|
d6eee3e0f2 | ||
|
|
468661280b | ||
|
|
068ab2800c | ||
|
|
ac1309cd75 | ||
|
|
6200907417 | ||
|
|
0daccebaf9 | ||
|
|
b21e093057 | ||
|
|
b51a187d77 | ||
|
|
33587254a0 | ||
|
|
ab10ce4932 | ||
|
|
a8f893ed2c | ||
|
|
837571ef7f | ||
|
|
cab1347387 | ||
|
|
08b2d08593 | ||
|
|
d9bb42e37b | ||
|
|
0c6155ec42 | ||
|
|
b512afc347 | ||
|
|
3c3c5965f1 | ||
|
|
4c93c350a6 | ||
|
|
b1d8efeb59 | ||
|
|
209fd753cb | ||
|
|
1e4f0d9dcf | ||
|
|
fce12f0075 | ||
|
|
de29364827 | ||
|
|
47b76f556b | ||
|
|
90583a1668 | ||
|
|
e2c6dadfbf | ||
|
|
ed350a1aa6 | ||
|
|
088d6abf54 | ||
|
|
2881517097 | ||
|
|
ade989962a | ||
|
|
424b9ff709 | ||
|
|
af98005b02 | ||
|
|
9b922d55dd | ||
|
|
74c9c3e9c2 | ||
|
|
4db9aa65b2 | ||
|
|
504d443ee3 | ||
|
|
0f0ebde0aa | ||
|
|
0972789e76 | ||
|
|
2aeacf9db7 | ||
|
|
ac3b9333d8 | ||
|
|
3366c5628c | ||
|
|
1b5d7616d3 | ||
|
|
d5eb673426 | ||
|
|
20589fb050 | ||
|
|
d52e9321e9 | ||
|
|
325009587a | ||
|
|
670603590e | ||
|
|
2c9957eb7e | ||
|
|
f00e56eb0b | ||
|
|
8392729d74 | ||
|
|
0014c32375 | ||
|
|
0967d4c8a9 | ||
|
|
0b90877b4b | ||
|
|
4742a3a48f | ||
|
|
0c175d63cf | ||
|
|
fd4759dcfa | ||
|
|
80015f7fb0 | ||
|
|
2218879d68 | ||
|
|
a2d5468df3 | ||
|
|
541e749aa8 | ||
|
|
74aff52bff | ||
|
|
7ee2b0f1ee | ||
|
|
022e2748af | ||
|
|
8b9c5a9c33 | ||
|
|
356561c438 | ||
|
|
30843f8329 | ||
|
|
1e9d91d4ef | ||
|
|
b61613ccb4 | ||
|
|
ac92f4b721 | ||
|
|
6a5c07680c | ||
|
|
2bc2a51618 | ||
|
|
af81e3e63d | ||
|
|
02ac0f89c4 | ||
|
|
710d37b3eb | ||
|
|
71ce2b0d79 | ||
|
|
3161f10b1f | ||
|
|
af3627db25 | ||
|
|
83a1c4763a | ||
|
|
04b9286605 | ||
|
|
8d4fcd678a | ||
|
|
817fcfdc9a | ||
|
|
ed84a4e7e3 | ||
|
|
9a0118c603 | ||
|
|
aeff347a07 | ||
|
|
d3932a104c | ||
|
|
076c8cc45f | ||
|
|
8ef58e3291 | ||
|
|
760caaa9af | ||
|
|
26ea090190 | ||
|
|
23becac3a6 | ||
|
|
5a59363e28 | ||
|
|
8936d0ae4b | ||
|
|
9a1a35f681 | ||
|
|
be72a64cf6 | ||
|
|
e6c171bdd6 | ||
|
|
5eb0e406fd | ||
|
|
79d5b27993 | ||
|
|
59b5c884ff | ||
|
|
7c2f48e55d | ||
|
|
ac2090bf4e | ||
|
|
bfa7449041 | ||
|
|
b046bffcb8 | ||
|
|
bc2b73f997 | ||
|
|
41d854048c | ||
|
|
27d0844efb | ||
|
|
34689e348f | ||
|
|
07e2c11e55 | ||
|
|
85c32da989 | ||
|
|
a9b0750f7b | ||
|
|
8a9688bc64 | ||
|
|
9d88786b6f | ||
|
|
e4342f8630 | ||
|
|
9c03d41f6a | ||
|
|
95fed3bfcf | ||
|
|
a3cb3e139a | ||
|
|
d917bfb277 | ||
|
|
744019c032 | ||
|
|
6721825df5 | ||
|
|
bdf86c4cbd | ||
|
|
c588d232cb | ||
|
|
b9a1b61f6a | ||
|
|
28b59c30d2 | ||
|
|
f4c55db8dd | ||
|
|
4445455c1f | ||
|
|
8e8803459f | ||
|
|
ae20574f84 | ||
|
|
a0f2be18a4 | ||
|
|
9c69db4700 | ||
|
|
8802d28aad | ||
|
|
d1cbea685e | ||
|
|
2b097d670a | ||
|
|
f2fc23d1b1 | ||
|
|
e9a3e20813 | ||
|
|
853344235a | ||
|
|
4d42fb2031 | ||
|
|
2d78a43556 | ||
|
|
fd9d531bd9 | ||
|
|
be9031d01d | ||
|
|
c2f227d2a8 | ||
|
|
720c676403 | ||
|
|
4b630c46fe | ||
|
|
851d995a7d | ||
|
|
1305b6d82e | ||
|
|
3f5482bbb7 | ||
|
|
954806c80f | ||
|
|
4604b58769 | ||
|
|
56f84774d7 | ||
|
|
d191ccfdc5 | ||
|
|
56200de2eb | ||
|
|
e755c5fe1f | ||
|
|
fb6c66a14b | ||
|
|
ec2f6026b9 | ||
|
|
a4c050b5ae | ||
|
|
b459f314ec | ||
|
|
addb389a5e | ||
|
|
7bfe53ee2f | ||
|
|
aece9ad5fa | ||
|
|
e180524c10 | ||
|
|
57ad8db60e | ||
|
|
4758ea2188 | ||
|
|
069f479af4 | ||
|
|
6af2d3a32c | ||
|
|
d1db008745 | ||
|
|
cfca970718 | ||
|
|
1e2408af91 | ||
|
|
77735b0a56 | ||
|
|
6823e03b01 | ||
|
|
f2d34f38be | ||
|
|
8b39a3c484 | ||
|
|
d93089d8ea | ||
|
|
e1ce0d2836 | ||
|
|
6fd9b2feba | ||
|
|
a1f7d86ef5 | ||
|
|
03212ced24 | ||
|
|
7e1d28006f | ||
|
|
219ce2b58a | ||
|
|
104cdef329 | ||
|
|
327e5a08d9 | ||
|
|
86c0a6d3d7 | ||
|
|
fab1af4154 | ||
|
|
987e8e3529 | ||
|
|
8ca6d835b9 | ||
|
|
c0149dc376 | ||
|
|
a78fdbb1f6 | ||
|
|
5a0985aa4a | ||
|
|
aa0b7079a4 | ||
|
|
441fd2ca5b | ||
|
|
6bdecb16c0 | ||
|
|
768072e824 | ||
|
|
ae268596ce | ||
|
|
ad6acb3a03 | ||
|
|
8fa674727d | ||
|
|
8d611f6873 | ||
|
|
dc2dfe2a6c | ||
|
|
3a48cd64cb | ||
|
|
f3d7901950 | ||
|
|
e646211919 | ||
|
|
ccdb432f71 | ||
|
|
491b83aa32 | ||
|
|
fcce9f2a4f | ||
|
|
9088df04c3 | ||
|
|
ae2c2358ec | ||
|
|
a617c8b80a | ||
|
|
b1c5a53a68 | ||
|
|
e6e4ec6267 | ||
|
|
a73e0a7b13 | ||
|
|
2e5cecd704 | ||
|
|
d45da3f0fb | ||
|
|
fc9fb2c775 | ||
|
|
b69e7431aa | ||
|
|
b5bcd5b0a1 | ||
|
|
145d89ab91 | ||
|
|
44a0aa924c | ||
|
|
1b002b7dcc | ||
|
|
d4bc77ac94 | ||
|
|
e08203f16a | ||
|
|
4a47ee937d | ||
|
|
cda1792ece | ||
|
|
a08c7087be | ||
|
|
dfd795e48e | ||
|
|
4a8f540949 | ||
|
|
270bf7a87a | ||
|
|
79c8f035cc | ||
|
|
5d7f2823c9 | ||
|
|
95a7c22824 | ||
|
|
58abdfc834 | ||
|
|
78a3f43c08 | ||
|
|
8158473464 | ||
|
|
336c8d3efe | ||
|
|
a400681ccf | ||
|
|
e9c3f71e74 | ||
|
|
92cca84651 | ||
|
|
8e905a7a5c | ||
|
|
8c17a822a8 | ||
|
|
5766b9bfb7 | ||
|
|
fbe782534a | ||
|
|
665af4fa8d | ||
|
|
5b8d2b5cde | ||
|
|
b564ba13ee | ||
|
|
c79bc7c909 | ||
|
|
2b260bd846 | ||
|
|
ca1aa56c7f | ||
|
|
afc629210c | ||
|
|
ec1a6f6b8b | ||
|
|
ddc2766537 | ||
|
|
dbca44ae8d | ||
|
|
81cac8eec6 | ||
|
|
c1ba35363d | ||
|
|
3591312fa3 | ||
|
|
42ac7c0541 | ||
|
|
8c526703f8 | ||
|
|
c6698cfce3 | ||
|
|
8f6867ce95 | ||
|
|
16e52980c4 | ||
|
|
ec78f8bca2 | ||
|
|
4f880801ec | ||
|
|
9d523499af | ||
|
|
388a4ae817 | ||
|
|
3486870ee4 | ||
|
|
7ea1b97785 | ||
|
|
815c17b726 | ||
|
|
b887a1b995 | ||
|
|
1256915583 | ||
|
|
35ee990bd0 | ||
|
|
17933a884a | ||
|
|
6ab0593f44 | ||
|
|
9941cf0051 | ||
|
|
8b0a996d5d | ||
|
|
f439bfd543 | ||
|
|
46b8230468 | ||
|
|
8e30ec1eee | ||
|
|
1105f2eb47 | ||
|
|
5ee5280fa1 | ||
|
|
10905a6500 | ||
|
|
44a8ad265c | ||
|
|
8bc8eadaf9 | ||
|
|
7e698c71cd | ||
|
|
046429fa87 | ||
|
|
4b55b7f852 | ||
|
|
58f9321a77 | ||
|
|
5b6780f999 | ||
|
|
07ae72ea6b | ||
|
|
876f861715 | ||
|
|
26e64f4fd3 | ||
|
|
ca0e7e7bd9 | ||
|
|
b127180c0c | ||
|
|
d26537acc1 | ||
|
|
932a67ced2 | ||
|
|
6c550cc7f7 | ||
|
|
89eeb4987c | ||
|
|
455a988aa6 | ||
|
|
6cc03dd30a | ||
|
|
366be0f7e9 |
No files matched your search
@@ -252,11 +252,20 @@ define PARSE_RULE
|
|||||||
else
|
else
|
||||||
$$(info make: *** No rule to make target '$1'. Stop.)
|
$$(info make: *** No rule to make target '$1'. Stop.)
|
||||||
$$(info |)
|
$$(info |)
|
||||||
$$(info | QMK's make format recently changed to use folder locations and colons:)
|
$$(info | QMK's make format is:)
|
||||||
$$(info | make project_folder:keymap[:target])
|
$$(info | make keyboard_folder:keymap_folder[:target])
|
||||||
$$(info | Examples:)
|
$$(info |)
|
||||||
$$(info | make dz60:default)
|
$$(info | Where `keyboard_folder` is the path to the keyboard relative to)
|
||||||
$$(info | make planck/rev6:default:flash)
|
$$(info | `qmk_firmware/keyboards/`, and `keymap_folder` is the name of the)
|
||||||
|
$$(info | keymap folder under that board's `keymaps/` directory.)
|
||||||
|
$$(info |)
|
||||||
|
$$(info | Examples:)
|
||||||
|
$$(info | keyboards/dz60, keyboards/dz60/keymaps/default)
|
||||||
|
$$(info | -> make dz60:default)
|
||||||
|
$$(info | -> qmk compile -kb dz60 -km default)
|
||||||
|
$$(info | keyboards/planck/rev6, keyboards/planck/keymaps/default)
|
||||||
|
$$(info | -> make planck/rev6:default:flash)
|
||||||
|
$$(info | -> qmk flash -kb planck/rev6 -km default)
|
||||||
$$(info |)
|
$$(info |)
|
||||||
endif
|
endif
|
||||||
endef
|
endef
|
||||||
|
|||||||
+11
-2
@@ -24,7 +24,6 @@ GTEST_INTERNAL_INC :=\
|
|||||||
|
|
||||||
$(GTEST_OUTPUT)_SRC :=\
|
$(GTEST_OUTPUT)_SRC :=\
|
||||||
googletest/src/gtest-all.cc\
|
googletest/src/gtest-all.cc\
|
||||||
googletest/src/gtest_main.cc\
|
|
||||||
googlemock/src/gmock-all.cc
|
googlemock/src/gmock-all.cc
|
||||||
|
|
||||||
$(GTEST_OUTPUT)_DEFS :=
|
$(GTEST_OUTPUT)_DEFS :=
|
||||||
@@ -35,7 +34,8 @@ CREATE_MAP := no
|
|||||||
|
|
||||||
VPATH +=\
|
VPATH +=\
|
||||||
$(LIB_PATH)/googletest\
|
$(LIB_PATH)/googletest\
|
||||||
$(LIB_PATH)/googlemock
|
$(LIB_PATH)/googlemock\
|
||||||
|
$(LIB_PATH)/printf
|
||||||
|
|
||||||
all: elf
|
all: elf
|
||||||
|
|
||||||
@@ -43,6 +43,10 @@ VPATH += $(COMMON_VPATH)
|
|||||||
PLATFORM:=TEST
|
PLATFORM:=TEST
|
||||||
PLATFORM_KEY:=test
|
PLATFORM_KEY:=test
|
||||||
|
|
||||||
|
ifeq ($(strip $(DEBUG)), 1)
|
||||||
|
CONSOLE_ENABLE = yes
|
||||||
|
endif
|
||||||
|
|
||||||
ifneq ($(filter $(FULL_TESTS),$(TEST)),)
|
ifneq ($(filter $(FULL_TESTS),$(TEST)),)
|
||||||
include tests/$(TEST)/rules.mk
|
include tests/$(TEST)/rules.mk
|
||||||
endif
|
endif
|
||||||
@@ -55,6 +59,11 @@ ifneq ($(filter $(FULL_TESTS),$(TEST)),)
|
|||||||
include build_full_test.mk
|
include build_full_test.mk
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
$(TEST)_SRC += \
|
||||||
|
tests/test_common/main.c \
|
||||||
|
$(LIB_PATH)/printf/printf.c \
|
||||||
|
$(COMMON_DIR)/printf.c
|
||||||
|
|
||||||
$(TEST_OBJ)/$(TEST)_SRC := $($(TEST)_SRC)
|
$(TEST_OBJ)/$(TEST)_SRC := $($(TEST)_SRC)
|
||||||
$(TEST_OBJ)/$(TEST)_INC := $($(TEST)_INC) $(VPATH) $(GTEST_INC)
|
$(TEST_OBJ)/$(TEST)_INC := $($(TEST)_INC) $(VPATH) $(GTEST_INC)
|
||||||
$(TEST_OBJ)/$(TEST)_DEFS := $($(TEST)_DEFS)
|
$(TEST_OBJ)/$(TEST)_DEFS := $($(TEST)_DEFS)
|
||||||
|
|||||||
@@ -82,6 +82,22 @@ Example code before change:
|
|||||||
void encoder_update_kb(uint8_t index, bool clockwise) {
|
void encoder_update_kb(uint8_t index, bool clockwise) {
|
||||||
encoder_update_user(index, clockwise);
|
encoder_update_user(index, clockwise);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void encoder_update_user(uint8_t index, bool clockwise) {
|
||||||
|
if (index == 0) { /* First encoder */
|
||||||
|
if (clockwise) {
|
||||||
|
tap_code(KC_PGDN);
|
||||||
|
} else {
|
||||||
|
tap_code(KC_PGUP);
|
||||||
|
}
|
||||||
|
} else if (index == 1) { /* Second encoder */
|
||||||
|
if (clockwise) {
|
||||||
|
tap_code(KC_DOWN);
|
||||||
|
} else {
|
||||||
|
tap_code(KC_UP);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
Example code after change:
|
Example code after change:
|
||||||
@@ -90,6 +106,25 @@ Example code after change:
|
|||||||
bool encoder_update_kb(uint8_t index, bool clockwise) {
|
bool encoder_update_kb(uint8_t index, bool clockwise) {
|
||||||
return encoder_update_user(index, clockwise);
|
return encoder_update_user(index, clockwise);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool encoder_update_user(uint8_t index, bool clockwise) {
|
||||||
|
if (index == 0) { /* First encoder */
|
||||||
|
if (clockwise) {
|
||||||
|
tap_code(KC_PGDN);
|
||||||
|
} else {
|
||||||
|
tap_code(KC_PGUP);
|
||||||
|
}
|
||||||
|
} else if (index == 1) { /* Second encoder */
|
||||||
|
if (clockwise) {
|
||||||
|
tap_code(KC_DOWN);
|
||||||
|
} else {
|
||||||
|
tap_code(KC_UP);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
// If you return true, this will allow the keyboard level code to run, as well.
|
||||||
|
//Returning false will override the keyboard level code. Depending on how the keyboard level function is set up.
|
||||||
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
## Core Changes :id=core-changes
|
## Core Changes :id=core-changes
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
* [Overview](newbs_building_firmware_configurator.md)
|
* [Overview](newbs_building_firmware_configurator.md)
|
||||||
* [Step by Step](configurator_step_by_step.md)
|
* [Step by Step](configurator_step_by_step.md)
|
||||||
* [Troubleshooting](configurator_troubleshooting.md)
|
* [Troubleshooting](configurator_troubleshooting.md)
|
||||||
|
* [Architecture](configurator_architecture.md)
|
||||||
* QMK API
|
* QMK API
|
||||||
* [Overview](api_overview.md)
|
* [Overview](api_overview.md)
|
||||||
* [API Documentation](api_docs.md)
|
* [API Documentation](api_docs.md)
|
||||||
|
|||||||
@@ -349,11 +349,12 @@ qmk cformat -b branch_name
|
|||||||
## `qmk docs`
|
## `qmk docs`
|
||||||
|
|
||||||
This command starts a local HTTP server which you can use for browsing or improving the docs. Default port is 8936.
|
This command starts a local HTTP server which you can use for browsing or improving the docs. Default port is 8936.
|
||||||
|
Use the `-b`/`--browser` flag to automatically open the local webserver in your default browser.
|
||||||
|
|
||||||
**Usage**:
|
**Usage**:
|
||||||
|
|
||||||
```
|
```
|
||||||
qmk docs [-p PORT]
|
qmk docs [-b] [-p PORT]
|
||||||
```
|
```
|
||||||
|
|
||||||
## `qmk generate-docs`
|
## `qmk generate-docs`
|
||||||
|
|||||||
@@ -0,0 +1,61 @@
|
|||||||
|
# QMK Configurator Architecture
|
||||||
|
|
||||||
|
This page describes the web architecture behind QMK Configurator at a high level. If you are interested in the architecture of the QMK Configurator code itself you should start at the [qmk_configurator](https://github.com/qmk/qmk_configurator) repository.
|
||||||
|
|
||||||
|
# Overview
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
# Detailed Description
|
||||||
|
|
||||||
|
QMK Configurator is a [Single Page Application](https://en.wikipedia.org/wiki/Single-page_application) that allows users to create custom keymaps for their QMK-compatible keyboard. They can export JSON representation of their keymaps and compile firmware binaries that can be flashed to their keyboard using a tool like [QMK Toolbox](https://github.com/qmk/qmk_toolbox).
|
||||||
|
|
||||||
|
Configurator gets metadata about keyboards from the Keyboard Metadata store and submits compile requests to the QMK API. The results of those compile requests will be made available on [Digital Ocean Spaces](https://www.digitalocean.com/products/spaces/), an S3-compatible data store.
|
||||||
|
|
||||||
|
## Configurator Frontend
|
||||||
|
|
||||||
|
Address: <https://config.qmk.fm>
|
||||||
|
|
||||||
|
The [Configurator Frontend](https://config.qmk.fm) is compiled into a set of static files that are served by Github Pages. This action happens every time a commit is pushed to the [qmk_configurator `master`](https://github.com/qmk/qmk_configurator) branch. You can view the status of these jobs on the [qmk_configurator actions tab](https://github.com/qmk/qmk_configurator/actions/workflows/build.yml).
|
||||||
|
|
||||||
|
## Keyboard Metadata
|
||||||
|
|
||||||
|
Address: <https://keyboards.qmk.fm>
|
||||||
|
|
||||||
|
The Keyboard Metadata is generated every time a keyboard in [qmk_firmware](https://github.com/qmk/qmk_firmware) changes. The resulting JSON files are uploaded to Spaces and used by Configurator to generate UI for each keyboard. You can view the status of this job on the [qmk_firmware actions tab](https://github.com/qmk/qmk_firmware/actions/workflows/api.yml). If you are a QMK Collaborator you can manually run this job using the `workflow_dispatch` event trigger.
|
||||||
|
|
||||||
|
## QMK API
|
||||||
|
|
||||||
|
Address: <http://api.qmk.fm>
|
||||||
|
|
||||||
|
The QMK API accepts `keymap.json` files for compilation. These are the same files you can use directly with `qmk compile` and `qmk flash`. When a `keymap.json` is submitted the browser will poll the status of the job periodically (every 2 seconds or longer, preferably) until the job has completed. The final status JSON will contain pointers to source and binary downloads for the keymap.
|
||||||
|
|
||||||
|
QMK API always presents the source and binary downloads side-by-side to comply with the GPL.
|
||||||
|
|
||||||
|
There are 3 non-error status responses from the API-
|
||||||
|
|
||||||
|
1. Compile Job Queued
|
||||||
|
2. Compile Job Running
|
||||||
|
3. Compile Job Finished
|
||||||
|
|
||||||
|
### Compile Job Queued
|
||||||
|
|
||||||
|
This status indicates that the job has not yet been picked up by a [QMK Compiler](#qmk-compiler) node. Configurator shows this status as "Waiting for an oven".
|
||||||
|
|
||||||
|
### Compile Job Running
|
||||||
|
|
||||||
|
This status indicates that the job has started compiling. Configurator shows this status as "Baking".
|
||||||
|
|
||||||
|
### Compile Job Finished
|
||||||
|
|
||||||
|
This status indicates that the job has completed. There will be keys in the status JSON for source and binary downloads.
|
||||||
|
|
||||||
|
## Redis/RQ
|
||||||
|
|
||||||
|
QMK API uses RQ to distribute jobs to the available [QMK Compiler](#qmk-compiler) nodes. When a `keymap.json` is received it's put into the RQ queue, where a `qmk_compiler` node will pick it up from.
|
||||||
|
|
||||||
|
## QMK Compiler
|
||||||
|
|
||||||
|
[QMK Compiler](https://github.com/qmk/qmk_compiler) is what actually performs the compilation of the `keymap.json`. It does so by checking out the requested `qmk_firmware` branch, running `qmk compile keymap.json`, and then uploading the resulting source and binary to Digital Ocean Spaces.
|
||||||
|
|
||||||
|
When users download their source/binary, API will redirect them to the authenticated Spaces download URL.
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
<mxfile host="Electron" modified="2021-08-09T19:46:29.036Z" agent="5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/14.6.13 Chrome/89.0.4389.128 Electron/12.0.7 Safari/537.36" etag="PQ2r34UrZa0TfW4Fw0EV" version="14.6.13" type="device"><diagram id="NEtccoSKIy4HskWlhJpu" name="Page-1">5VvbcqM4EP2a1O4+hOLqy2Ni5zKX1CTxzszOU0oG2dZEIBZEYu/XbwuEDQg7csZ2vFlXjQca0RLdR+eohXPiDML5VYLi2Q0LMD2xzWB+4gxPbNvqezb8JywLaTFtr7BMExJI28owIv/gsqG0ZiTAaa0hZ4xyEteNPosi7POaDSUJe643mzBa7zVGU6wYRj6iqvU7CfissPY8c2W/xmQ6K3u2THklRGVjaUhnKGDPFZNzceIMEsZ4cRTOB5iK6JVxKe67XHN1ObAER1znhgfT76Zzxxp3Z49j5+7zjw/z+NSS+XlCNJNPLEfLF2UIcAARkacs4TM2ZRGiFyvrecKyKMCiHxPOVm0+MxaD0QLjT8z5QqYXZZyBacZDKq/iKDgTyYLTiEW4sFwSSqXLAKWz3L9orD64jEXKssTHG57WlQBCyRTzTVGRDsWTV3qQcb3CLMQ8WUCDBFPEyVMdK0hCbrpst8oKHMjEbJEk9+UckTDHcTWm0jQk4RR6pWQM3z4l8QNKuDhkYZxxnKRw/J0ljymHJ2HRg2X35vDPiKPp2kA/4YTj+cbIyKunjmv0zMpHeljSQXH6XJla0jSrzKrStvPIei9Hdgm9HNoZpyTCgyXZmPWYI0qmERz7EDGcgIGiMaa3LCUittULIoQEaOZzo8GYcc7CSoMz6ZKLqXQOJBKLgYXzqSBc4xmPKcy11JgSPsvG0GLCIn6JQkJFiK8xfcLCjbwgJyDM+uJ8wChL8ud0ivSILnjCHnHblQlMyIp9kn/ADkMJCK55G14OL4YXmybrFhhyOzXQtKEGdMVwVeBUzDvHTjmKjdS54jWfojQlfpP3YCR/CRwZXnn6o3ptOJcgK84W8gwma8JVz7lZ0qZVI9Ff401PkzddTdqsJM5rme6lTZtdZQ+3jMCTLXFjlRkqyaZJI8Vzy7uqytl01Gk4chqOisAojnJYLR/7F5BWTpkV0gZUTDjgbnOUxTEorqCosxO7QyGG5+MEjqbiaDBLoPsTGzo2L0mCJ2yuNhri9FHQi21+iehCAfHzjHA8ilEOkWegnTqGm0QVkiDIVwU5950j/3Garw9Kdsjd7YYZlmurkhlUYrDNFoB19qUnltPCCUW40xhFZcBnnIvl65noTChxNCFT4+/w0ZiEZXOwV+9Qk9bmd0SiKYTeNm+F9AM2RKTX3tno4iN6QiM/IbFYHXz7eqHeOJI8AeM2YbTQDL4fiuFnCeIs0RvmNUt54eWqUK1iwOnaZ28Asr7cfC0894E/q2PYehDs7w2CGqtFdbndqklVRaoI1BpN2tEaXVdryql2JGKzTKiEgvdasXHchqNDi01XAz/vpiK0tOHW0YTbYUpC6/1ULj9TuH0XlWZ93riOuhjotsz/rmf09pWkjpKkuvI/4sWYoSRIG+K/ks9PsgV4ucEcBYgjXV2ekCR8hoiq7a+uoeGZX+RN3PQ1BsdiwXB2+wG+h629rFR7SKDaRPSLj4VIm7n2ptsuG2voPKRIu7Zt9N9apHtbiXRr7VirASVHVgtAc4cFoDZNekclypZnWK5p9Tp9y+v1up1y73nRQMbWBWHdz3LP90ASbav14HuW6L4m9spsHotE95Us3d18Kkm2mS5KSZziik76lGXBy+XNLpTTq8O5Y6rKadkts3Rv27JlZ2uFE8VkrWTeX4z+nGS0DLSeWILDTYp3jyJ/Bqsf2xRrFXP4Bb6+3fy2tegdUuc6pqenct29pVFjkfryDulhtzDLWXskCnbarCtd75WadaoUlpqqBelBi0qzWDRINwzZanTkOObmkTVv8Pq1G+CgGMNuRVSl53csonZXV0R7RyWitrobIasPMMoCRGF4WY807b+PnD+OS3idXh347fuHrdrbt8qWu4+5WpzU1RcE81QocLTwHcMPIiMoUsJEPtI8+obPWqRZRlNK7+kLoqskejut3UWCeg1msh3L6PYrn54qsf2WbO3thYOjrpTeTGK1Oea4ikSQ/EaSX7t1qwiZfeC9W6ft9dO71TSn/D3YS3hz7KPSNEct3+/vlDyVciS2/FLOEnwYSWpskXS7ai3YOSjB2WqwcEDEm+9cjEwRuqaGfGTineJdhrOW3c/2AjApnO6/BNxBkpqVXrfz1pWes91Lx73KkPZ+UTkP31qHyiw26zFt2fEacGiWiPtWHXWNXvwuIIwpETNmDbPhuZhhAcvG+RWrJj3Wm2x99Vt+QXLYrS9XXdAVu4YDCCehIpztbHefRVH+a07dX22sc/efoLy+/daU5+pswh+I8vRXQt3joDyZVbeW015ztaxLgHU3/eZbnT3Tn6uuULYGwoF/z+lo7wYdF16AHes00GuuO/V3Qxui2bP0ULP1bqjTYK5yS2Gvm5vu/6sQ1IVzKa67KwTXEJK3GVu6KLWd14H0ZRjB6eovj4rmqz/gci7+BQ==</diagram></mxfile>
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1261px" height="991px" viewBox="-0.5 -0.5 1261 991" style="background-color: rgb(255, 255, 255);"><defs/><g><path d="M 885.2 40 L 1060 40" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><image x="804.7" y="-0.5" width="80" height="80" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHcAAAB8CAYAAABT/i9JAAAgAElEQVR4Xu19CbhdZXnuu/Y8n3k+OUPmhAyQQMJMQCZxqFpBvU7VKk6otQIq4BBBLVQF7a2ot/a2trW3j09br+3F1lZAJBBIQkLInJOcedjD2WfPwxrv8/3/+tdee+eckIRDCMcsnnCmvdfee73r/Yb3+77/l3D+OKMr0NbZ8xmfz/95p9PVkEonP5SMTf7zGZ3oVXyS9Cqee8GdurV10RKP3/tIMBS+0e3xegzDAP3TNA3pmcQTU+PD1wPQz5UPfh7cU0Cis6fvM35/6PPBcF0PXTACVNd19lWWy8hnZiBJBnKZ9NJ0On3sFE55Vh5yHtw5LnNbb29/wO3/fjBcd6PX5/MYugGdmGqCmkknIZcKcLlcYIDDQHomeR7cs3LbnuGL9PYvuSMQjNwVqqvvkSBxQA0dBG6pXER2ZpqB6XA5icKMvfSPvk+nzoN7hpf91Xtab29vv8cf/n64rv5Gnz9QxVLd0JFOJlAqFuBymyy1g0qcZdgayJwH99UD6XTP3L985R3BYPiu+vqmHkmqZmmxWEAqGWcG1+kklnIA6T9AgivYjIBHwkx8gjMYBO7MebN8uiDM5+N7e1f0B8OB74XrG28KBAMeXTdNq66zIGl6OoZSPgeX2819qQkcM71OP3zNfWjoXgU5n4YrN4TxwUOWWc6kz4M7n1id8rmWr1x9RzBSf2dDY0uvwyGBg0qAGigW8piOT7FzMZYyU8v/SZIL4dZeRDpWQPLVM4YSzvmZKbgZuAfNxwLZ8+CeMh6v+IG9K1b0hwOR7zU2Nt0UCIYqLDV0aJqORGwC+VwOHo+HvZYAlL66A/Vo6V2Ftv41cDg9KJZkZDIZ6Dx2QoHAzQ9h/LgJLgxk06nzZvkVo/YyJ1i5dv0ddZGGOxubW3slh8QiXcHSfD6H+NQEIJEvdVVFvJLkQF3HEnQsXofG1m4oGt0EGlRVR0kuI5PNmcETZ64nP4QxE1z6QzZzHtxXBdsVK9b1ByKB7zU1td4UDIc9PCel3FSHrumYmhhDPp+Bxy1YWvGnHn8EnUvXo2vxGji9PsZqTdVs4GoolRXkcjnOXBBzJ+HJD2Ps+AGL8edFjHmG9oILN3yqvr7xrpbW9l7J4aiw1CDFKIPo5Djzky6nqyo4oui4qXMpelduQFP7IqgalxFVk6nse12HqumMucVSGYVCocLc1CS8BO4xE1ycV6jmBdoV69b1RwJ1jzS3tt0citR5hMggWDoxNoxsJgOP12ulKcKf+gIRBmjv8rVwewMWeKqucoBVjTGXg0xgc/9cKJVQKpUrPtcEd/TYfitNymXPy49nDPCFGzZ/qr6p8a7Wts5eh5OzVChImVQKk+OjjKXXfOh+/Oaf/hKeUtxMU4C23mVYesElaOvuhaYbjI0MQAaiyVrxO12DRt/rOjSFMziXL0BRVM5cGCikphhzCVyhUOWymfMB1emgu27duv5AXdMjbe0dN4cZSyu+VFNVjA4PIZtJw+PzWcHRRW//LJ79xU8QCRhYdsElWLZ6A9xeP2MisdAeKHHTq3K2EqCqDk3nQRQBr+k6FFVDPl9gj+HRsoFiagqewjDGBji49F/+PLinBu2GzZd9qqGp5c6Oju4+J7HUVolJzyQxOjrMzCEJ99zkckaR8NDRuwyrL7wUnT39jKUc0IqJJbAoyJJNs0vfMxNMTNU0BiYPqkyfq2nI5nLs7OK1BLijA/vMmwrI584zd050N27c2BOINP5FW0fXTXX1DV6RvtBXYung8WPIpNPw2ljK5EDDgD8QxqqLLsXqdRvgDQQ5A22+U2GMNEEUv9cMzk4RGdvYave5ZI6LxRK7gbgbAIrpKXgLwyBwhVnO57LnzXItupsvu/pTTa0td3Z0L+pzOpxmaY3nptOJBEaHB7meSyy1q0eQsKh/OdZtuhy9vUu5L2UAqqZZ5X6zApQAU/yO/m76VxNwzlx+IxBzFV1DuVyGLJv+VoBLPrc4jNGjHFzmh8+Dy6HduPGKnkhj5C/auxfd1FDfyFlq1ksVVcXxo0eQTs3A6/NXqUeMpcEA1l9yJdZvuIQxlgdGnJVkfjViJDO5ZJJV5mPZ36tSHf547mvNnNZkNmO4Qv6W+95CscTlSlN6JL9LZtlXHMbI0ZcsX1/I536/mXv5Vdd9orm19e6unt4+l7OapYlEHEPHjgGSyVJbaY1qq71Ll+OSy67C4iXL2I0gIlpimshPK0ALQCnFqfhP5nuFiRZ+mBhKQJsstm4QAldRbSmQKO9xs+wrDGNk4CXLLP9egrvxiit6muoav9+5qOfmhoZmL+WjPOrVISsKBg4fQkqw1AKUqb3wBf245LKrccmmyxAMmixljDM4I8kEM8bZgiZbIMQZa/paK4etAC9ukEpqxNUp4a/LZQWKRia5Aixn7iT8xRGMHN1rBXPF3yfmXnXd9Z9obWu7e1Hv4j5SiOySYCw6hcFjA9TTUIl4TX8KQ8fiZStw5TXXYfnyFeziMT9oRb3cT3Jwud9UFDNgIp8pclcC3jLJFXYL9Ymdj8w3Oze/STioHGD6yoQLK5/m0iMLqKrA5RWkYiG/sM3yFVdc3xNuCn+/p6fv5sbmFq9oJBMsPXRgP2aSSfj8gSr1iEe8flx+1RZcfsWViETCDEBZsI5FtjxQ4nmq6StZ4MN9JmdfdZQs5EPL32oGT4PMKLk6guapEGezCkVWURbCRRVzDZTSU4y5w0f2WiXCBQ/uO9793rGGxqau1rYOKzedmpjAwNEjoKoLtaqIthSRQixZtgw33HgjVq9aRaS1BUAUDNnVJGKaWakxWSdECZbSMNZSMGQKEJZgMVt0LExvJdAiUO1gC9baAynx3jm4wwxc8TmKxcLCZu77PvyxeG//4uax0WHEo1FMT0/D5w9a2Y+4EJSrXnXNNbj22mvQ3NDIGMejWm5KeZAk2MhlQvY7FslW/KiIaK2giokWFSGCsZydi7OegWfLf4VvFWaeiRfEWkWDLCuWImX2wDGzTO6FwA3YwKXPVVro4L73Qx+N9/QtbiY0H/+vX3Pzazv6+vpww0034sK1a+GiDkK6WEziMwE10w8R1VI6Q6kRD5ooiCKpUKQ6Zgpk/syrOmbka/pny4eKn0VkzEAUNw/dUDxI48qUipKssL/XBlLiZwZuaRhDh1+0UrVUsbC0vJD7lt/zwY/Ee/r6GbhP/ua/q8D90r33oG9RdxXYdLE4YwkwzlpZ5TVY+j2XDSklqWay8LuCpZXASQBuD4wq0qMIwKwcl4HKH0vn1Ml/qypjrV2REoGUJT+mpxA0wRXWKFUqLmxw3/3+D8cXmeA+9cTjVeA+/N3vIBDgooQ4GAs1jQVOQh0SOSsPkipiv/V7M4iqmG0TGDNStgsT9BzdZL+9aCAKBdxPc/B1M/ImRUrTeVRczVyhYYOb5dIwhg+/aBXr06ni0nJ5AU8c3Pa+D8YX9XLmPv3bJyv+1jDw8MPfrQKXfJeIcJlPNVMYlp7Y81NmqvlNYEXLTOgXZtgWITOgeF22okqZ1R5xA9mKCKKNhqVBZI7LMmOyKERw9p4INIkYwfIwhg7tMaNlYMGDe+t7PxDv7ulj4G576in4AzyYIgY8UgOuAJD5VMZgEUjZgDHLcNznmt0RigbF9JeceVxmtAdglRJe5SawgLSlSyyNMvNbRVFs5riatSKQEoEVMVeAK8xyOp1aWi6XF+6s0Dvf/f54V08vA/fZbU/PCS4rxZkRseVXmVBfqavatWAC154GCVZyEcIwdWAOFPPXImUywWMmV3RWWDcK5bRmMUGjVhqhIdea4xOBrgWXAM4sdHDf/q73xrsXcXCfe/YZBq64sx955GHLLFdYWmEcz2lNFpPqRP6WRcgiIOK/48BWQKkKuMwAjD2PtGJR7WHacSXFYmKFGUyRby/LZVYsEMwUpb3aQEqY6LLF3N1WpSqTTi9s5r7ttv8R7+ruYeDueG67BS4B/D0TXJH6UDAlCuaWAFFlmm0yo5WbVoQGqwjAmtkoZeJF+EogZhbgrZaaSquq1QBH1kJRGbhz+dfZgC6lowiVhzF4aLdVFcpkFji4b33nuy1wd+143oyWeZRJ4Pr9/irBgphFqY9dThTlOqvSY9ZVrSBJiBmW6eV1V2Hm7W0yXDfm6RSPlrnIIfwvPZbMMd1oFaGCfz9bIMVbWw2UGbhDDFx6LP1vwYP7lne8K97ZvYgxd/eunQxcYZa/971H4PN5udIkhH+rX6kmmLKxzfKvTPcV5pgrViw3NWVHDj4PzERfVJV2bPZH2W+SsixDUXlOWwHUDnSl+8ICnylUUYTlIQwerJjlbCazsM3ym99+W7yjq5uB++LuXSwVEm2lBK7b4zEBsBUBqoA20x2rTYYLGcJ3iuqQAFAUCuzFBMHSSiHBrOmaUTI7HxUlFBlU0mP9WWaz+VyKFE+NKkATcwnc4wcrZjmbXeDg3vIH77TA3btnN/zEXLOU9/DDj7C5HCFYCKmQpzBmMGX6Tt7+woMpxjQKhsyynuWfRRXIVLaEbmw9h4EpqkmC8Sprx5FZELine truncated
|
||||||
|
After Width: | Height: | Size: 39 KiB |
@@ -30,18 +30,38 @@ If you find that you can no longer type with the keyboard, you may have accident
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
Open the Device Manager and look for a device that looks like your keyboard.
|
Open the Device Manager, select **View → Devices by container**, and look for an entry with your keyboard's name.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
Right-click it and hit **Uninstall device**. Make sure to tick **Delete the driver software for this device** first.
|
Right-click each entry and hit **Uninstall device**. Make sure to tick **Delete the driver software for this device** first if it appears.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
Click **Action → Scan for hardware changes**. At this point, you should be able to type again. Double check in Zadig that the keyboard device(s) are using the `HidUsb` driver. If so, you're all done, and your board should be functional again! Otherwise, repeat the process until Zadig reports the correct driver.
|
Click **Action → Scan for hardware changes**. At this point, you should be able to type again. Double check in Zadig that the keyboard device(s) are using the `HidUsb` driver. If so, you're all done, and your board should be functional again! Otherwise, repeat this process until Zadig reports the correct driver.
|
||||||
|
|
||||||
?> A full reboot of your computer may sometimes be necessary at this point, to get Windows to pick up the new driver.
|
?> A full reboot of your computer may sometimes be necessary at this point, to get Windows to pick up the new driver.
|
||||||
|
|
||||||
|
## Uninstallation
|
||||||
|
|
||||||
|
Uninstallation of bootloader devices is a little more involved than installation.
|
||||||
|
|
||||||
|
Open the Device Manager, select **View → Devices by container**, and look for the bootloader device. Match up the USB VID and PID in Zadig with one from [the table below](#list-of-known-bootloaders).
|
||||||
|
|
||||||
|
Find the `Inf name` value in the Details tab of the device properties. This should generally be something like `oemXX.inf`:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Then, open a new Command Prompt window as an Administrator (type in `cmd` into the Start menu and press Ctrl+Shift+Enter). Run `pnputil /enum-drivers` to verify the `Inf name` matches the `Published Name` field of one of the entries:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Run `pnputil /delete-driver oemXX.inf /uninstall`. This will delete the driver and remove it from any devices using it. Note that this will not uninstall the device itself.
|
||||||
|
|
||||||
|
As with the previous section, this process may need to be repeated multiple times, as multiple drivers can be applicable to the same device.
|
||||||
|
|
||||||
|
!> **WARNING:** Be *extremely careful* when doing this! You could potentially uninstall the driver for some other critical device. If you are unsure, double check the output of `/enum-drivers`, and omit the `/uninstall` flag when running `/delete-driver`.
|
||||||
|
|
||||||
## List of Known Bootloaders
|
## List of Known Bootloaders
|
||||||
|
|
||||||
This is a list of known bootloader devices and their USB vendor and product IDs, as well as the correct driver to assign for flashing with QMK. Note that the usbser and HidUsb drivers are built in to Windows, and cannot be assigned with Zadig - if your device has an incorrect driver, you must use the Device Manager to uninstall it as described in the previous section.
|
This is a list of known bootloader devices and their USB vendor and product IDs, as well as the correct driver to assign for flashing with QMK. Note that the usbser and HidUsb drivers are built in to Windows, and cannot be assigned with Zadig - if your device has an incorrect driver, you must use the Device Manager to uninstall it as described in the previous section.
|
||||||
|
|||||||
+1
-1
@@ -28,7 +28,7 @@ For compatible platforms, [QMK Toolbox](https://github.com/qmk/qmk_toolbox) can
|
|||||||
|
|
||||||
Prefer a terminal based solution? [hid_listen](https://www.pjrc.com/teensy/hid_listen.html), provided by PJRC, can also be used to display debug messages. Prebuilt binaries for Windows,Linux,and MacOS are available.
|
Prefer a terminal based solution? [hid_listen](https://www.pjrc.com/teensy/hid_listen.html), provided by PJRC, can also be used to display debug messages. Prebuilt binaries for Windows,Linux,and MacOS are available.
|
||||||
|
|
||||||
## Sending Your Own Debug Messages
|
## Sending Your Own Debug Messages :id=debug-api
|
||||||
|
|
||||||
Sometimes it's useful to print debug messages from within your [custom code](custom_quantum_functions.md). Doing so is pretty simple. Start by including `print.h` at the top of your file:
|
Sometimes it's useful to print debug messages from within your [custom code](custom_quantum_functions.md). Doing so is pretty simple. Start by including `print.h` at the top of your file:
|
||||||
|
|
||||||
|
|||||||
@@ -146,7 +146,7 @@ And to trigger the bootloader, you hold this key down when plugging the keyboard
|
|||||||
|
|
||||||
## Split Keyboards
|
## Split Keyboards
|
||||||
|
|
||||||
When handedness is predetermined via an option like `SPLIT_HAND_PIN`, you might need to configure a different key between halves. This To do so, add these entries to your `config.h` file:
|
When handedness is predetermined via an option like `SPLIT_HAND_PIN`, you might need to configure a different key between halves. To do so, add these entries to your `config.h` file:
|
||||||
|
|
||||||
```c
|
```c
|
||||||
#define BOOTMAGIC_LITE_ROW_RIGHT 4
|
#define BOOTMAGIC_LITE_ROW_RIGHT 4
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
# LED Indicators
|
# LED Indicators
|
||||||
|
|
||||||
|
?> Currently, this feature is not supported for split keyboards
|
||||||
|
|
||||||
QMK provides methods to read 5 of the LEDs defined in the HID spec:
|
QMK provides methods to read 5 of the LEDs defined in the HID spec:
|
||||||
|
|
||||||
* Num Lock
|
* Num Lock
|
||||||
|
|||||||
@@ -490,6 +490,8 @@ void ql_finished(qk_tap_dance_state_t *state, void *user_data) {
|
|||||||
layer_on(_MY_LAYER);
|
layer_on(_MY_LAYER);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -45,6 +45,7 @@ bool wpm_keycode_user(uint16_t keycode) {
|
|||||||
|
|
||||||
Additionally, if `WPM_ALLOW_COUNT_REGRESSION` is defined, there is the `uint8_t wpm_regress_count(uint16_t keycode)` function that allows you to decrease the WPM. This is useful if you want to be able to penalize certain keycodes (or even combinations).
|
Additionally, if `WPM_ALLOW_COUNT_REGRESSION` is defined, there is the `uint8_t wpm_regress_count(uint16_t keycode)` function that allows you to decrease the WPM. This is useful if you want to be able to penalize certain keycodes (or even combinations).
|
||||||
|
|
||||||
|
```c
|
||||||
__attribute__((weak)) uint8_t wpm_regress_count(uint16_t keycode) {
|
__attribute__((weak)) uint8_t wpm_regress_count(uint16_t keycode) {
|
||||||
bool weak_modded = (keycode >= QK_LCTL && keycode < QK_LSFT) || (keycode >= QK_RCTL && keycode < QK_RSFT);
|
bool weak_modded = (keycode >= QK_LCTL && keycode < QK_LSFT) || (keycode >= QK_RCTL && keycode < QK_RSFT);
|
||||||
|
|
||||||
@@ -60,3 +61,4 @@ __attribute__((weak)) uint8_t wpm_regress_count(uint16_t keycode) {
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
```
|
||||||
+1
-1
@@ -113,7 +113,7 @@ Don't hold the iron on the solder/joint longer than necessary. Heat will be cond
|
|||||||
|
|
||||||
#### Soldering the Diodes
|
#### Soldering the Diodes
|
||||||
|
|
||||||
Starting at the top-left switch, place the diode (with tweezers if you have them) on the switch so that the diode itself is vertically aligned, and the black line is facing toward you. The input lead of the diode should be touching the left contact on the switch, and the bent, output end should be facing to the right and resting on the switch there, like this:
|
Starting at the top-left switch, place the diode (with tweezers if you have them) on the switch so that the diode itself is vertically aligned, and the black line is facing toward you. Make sure the diodes are soldered in parallel (diode outputs shouldn't connect to diode inputs). The input lead of the diode should be touching the left contact on the switch, and the bent, output end should be facing to the right and resting on the switch there, like this:
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
# タップダンス: 1つのキーが3つ、5つまたは100の異なる動作をします
|
# タップダンス: 1つのキーが3つ、5つまたは100の異なる動作をします
|
||||||
|
|
||||||
<!---
|
<!---
|
||||||
original document: 0.10.33:docs/feature_tap_dance.md
|
original document: 0.13.15:docs/feature_tap_dance.md
|
||||||
git diff 0.10.33 HEAD -- docs/feature_tap_dance.md | cat
|
git diff 0.13.15 HEAD -- docs/feature_tap_dance.md | cat
|
||||||
-->
|
-->
|
||||||
|
|
||||||
## イントロダクション :id=introduction
|
## イントロダクション :id=introduction
|
||||||
@@ -22,7 +22,7 @@
|
|||||||
|
|
||||||
`TAPPING_TERM` の時間は、あなたのタップダンスのキーのタップとタップの間の時間として許可された最大の時間で、ミリ秒単位で計測されます。例えば、もし、あなたがこの上にある `#define` ステートメントを使い、1回タップすると `Space` が送信され、2回タップすると `Enter` が送信されるタップダンスキーをセットアップした場合、175ミリ秒以内に2回キーをタップすれば `ENT` だけが送信されるでしょう。もし、1回タップしてから175ミリ秒以上待ってからもう一度タップすると、`SPC SPC` が送信されます。
|
`TAPPING_TERM` の時間は、あなたのタップダンスのキーのタップとタップの間の時間として許可された最大の時間で、ミリ秒単位で計測されます。例えば、もし、あなたがこの上にある `#define` ステートメントを使い、1回タップすると `Space` が送信され、2回タップすると `Enter` が送信されるタップダンスキーをセットアップした場合、175ミリ秒以内に2回キーをタップすれば `ENT` だけが送信されるでしょう。もし、1回タップしてから175ミリ秒以上待ってからもう一度タップすると、`SPC SPC` が送信されます。
|
||||||
|
|
||||||
次に、いくつかのタップダンスのキーを定義するためには、`TD()` マクロを使うのが最も簡単です。これは数字を受け取り、この数字は後で `tap_dance-actions` 配列のインデックスとして使われます。
|
次に、いくつかのタップダンスのキーを定義するためには、`TD()` マクロを使うのが最も簡単です。これは数字を受け取り、この数字は後で `tap_dance_actions` 配列のインデックスとして使われます。
|
||||||
|
|
||||||
その後、`tap_dance_actions` 配列を使って、タップダンスキーを押した時のアクションを定義します。現在は、5つの可能なオプションがあります:
|
その後、`tap_dance_actions` 配列を使って、タップダンスキーを押した時のアクションを定義します。現在は、5つの可能なオプションがあります:
|
||||||
|
|
||||||
@@ -85,7 +85,7 @@ qk_tap_dance_action_t tap_dance_actions[] = {
|
|||||||
[TD_ESC_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS),
|
[TD_ESC_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS),
|
||||||
};
|
};
|
||||||
|
|
||||||
// キーコードの代わりにタップダンスキーを追加します
|
// キーマップにキーコードの代わりにタップダンスの項目を追加します
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
// ...
|
// ...
|
||||||
TD(TD_ESC_CAPS)
|
TD(TD_ESC_CAPS)
|
||||||
@@ -215,20 +215,22 @@ qk_tap_dance_action_t tap_dance_actions[] = {
|
|||||||
`keymap.c` ファイルの先頭、つまりキーマップの前に、以下のコードを追加します。
|
`keymap.c` ファイルの先頭、つまりキーマップの前に、以下のコードを追加します。
|
||||||
|
|
||||||
```c
|
```c
|
||||||
|
typedef enum {
|
||||||
|
TD_NONE,
|
||||||
|
TD_UNKNOWN,
|
||||||
|
TD_SINGLE_TAP,
|
||||||
|
TD_SINGLE_HOLD,
|
||||||
|
TD_DOUBLE_TAP,
|
||||||
|
TD_DOUBLE_HOLD,
|
||||||
|
TD_DOUBLE_SINGLE_TAP, // Send two single taps
|
||||||
|
TD_TRIPLE_TAP,
|
||||||
|
TD_TRIPLE_HOLD
|
||||||
|
} td_state_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
bool is_press_action;
|
bool is_press_action;
|
||||||
uint8_t state;
|
td_state_t state;
|
||||||
} tap;
|
} td_tap_t;
|
||||||
|
|
||||||
enum {
|
|
||||||
SINGLE_TAP = 1,
|
|
||||||
SINGLE_HOLD,
|
|
||||||
DOUBLE_TAP,
|
|
||||||
DOUBLE_HOLD,
|
|
||||||
DOUBLE_SINGLE_TAP, // シングルタップを2回送信
|
|
||||||
TRIPLE_TAP,
|
|
||||||
TRIPLE_HOLD
|
|
||||||
};
|
|
||||||
|
|
||||||
// タップダンスの列挙型
|
// タップダンスの列挙型
|
||||||
enum {
|
enum {
|
||||||
@@ -236,7 +238,7 @@ enum {
|
|||||||
SOME_OTHER_DANCE
|
SOME_OTHER_DANCE
|
||||||
};
|
};
|
||||||
|
|
||||||
uint8_t cur_dance(qk_tap_dance_state_t *state);
|
td_state_t cur_dance(qk_tap_dance_state_t *state);
|
||||||
|
|
||||||
// xタップダンスのための関数。キーマップで利用できるようにするため、ここに置きます。
|
// xタップダンスのための関数。キーマップで利用できるようにするため、ここに置きます。
|
||||||
void x_finished(qk_tap_dance_state_t *state, void *user_data);
|
void x_finished(qk_tap_dance_state_t *state, void *user_data);
|
||||||
@@ -273,63 +275,63 @@ void x_reset(qk_tap_dance_state_t *state, void *user_data);
|
|||||||
* 一般的な単語で2回続けて使われる文字でないこと。例えば 'pepper' 中の 'p'。もしタップダンス機能が
|
* 一般的な単語で2回続けて使われる文字でないこと。例えば 'pepper' 中の 'p'。もしタップダンス機能が
|
||||||
* 文字 'p' に存在する場合、'pepper' という単語は入力するのが非常にいらだたしいものになるでしょう。
|
* 文字 'p' に存在する場合、'pepper' という単語は入力するのが非常にいらだたしいものになるでしょう。
|
||||||
*
|
*
|
||||||
* 3つ目の点については、'DOUBLE_SINGLE_TAP' が存在しますが、これは完全にはテストされていません
|
* 3つ目の点については、'TD_DOUBLE_SINGLE_TAP' が存在しますが、これは完全にはテストされていません
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
uint8_t cur_dance(qk_tap_dance_state_t *state) {
|
td_state_t cur_dance(qk_tap_dance_state_t *state) {
|
||||||
if (state->count == 1) {
|
if (state->count == 1) {
|
||||||
if (state->interrupted || !state->pressed) return SINGLE_TAP;
|
if (state->interrupted || !state->pressed) return TD_SINGLE_TAP;
|
||||||
// キーは割り込まれていませんが、まだ押し続けられています。'HOLD' を送信することを意味します。
|
// キーは割り込まれていませんが、まだ押し続けられています。'HOLD' を送信することを意味します。
|
||||||
else return SINGLE_HOLD;
|
else return TD_SINGLE_HOLD;
|
||||||
} else if (state->count == 2) {
|
} else if (state->count == 2) {
|
||||||
// DOUBLE_SINGLE_TAP は "pepper" と入力することと、'pp' と入力したときに実際に
|
// TD_DOUBLE_SINGLE_TAP は "pepper" と入力することと、'pp' と入力したときに実際に
|
||||||
// ダブルタップしたい場合とを区別するためのものです。
|
// ダブルタップしたい場合とを区別するためのものです。
|
||||||
// この戻り値の推奨されるユースケースは、'ダブルタップ' 動作やマクロではなく、
|
// この戻り値の推奨されるユースケースは、'ダブルタップ' 動作やマクロではなく、
|
||||||
// そのキーの2つのキー入力を送信したい場合です。
|
// そのキーの2つのキー入力を送信したい場合です。
|
||||||
if (state->interrupted) return DOUBLE_SINGLE_TAP;
|
if (state->interrupted) return TD_DOUBLE_SINGLE_TAP;
|
||||||
else if (state->pressed) return DOUBLE_HOLD;
|
else if (state->pressed) return TD_DOUBLE_HOLD;
|
||||||
else return DOUBLE_TAP;
|
else return TD_DOUBLE_TAP;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 誰も同じ文字を3回入力しようとしていないと仮定します(少なくとも高速には)。
|
// 誰も同じ文字を3回入力しようとしていないと仮定します(少なくとも高速には)。
|
||||||
// タップダンスキーが 'KC_W' で、"www." と高速に入力したい場合、ここに例外を追加して
|
// タップダンスキーが 'KC_W' で、"www." と高速に入力したい場合、ここに例外を追加して
|
||||||
// 'TRIPLE_SINGLE_TAP' を返し、'DOUBLE_SINGLE_TAP' のようにその列挙型を定義する必要があります。
|
// 'TD_TRIPLE_SINGLE_TAP' を返し、'TD_DOUBLE_SINGLE_TAP' のようにその列挙型を定義する必要があります。
|
||||||
if (state->count == 3) {
|
if (state->count == 3) {
|
||||||
if (state->interrupted || !state->pressed) return TRIPLE_TAP;
|
if (state->interrupted || !state->pressed) return TD_TRIPLE_TAP;
|
||||||
else return TRIPLE_HOLD;
|
else return TD_TRIPLE_HOLD;
|
||||||
} else return 8; // マジックナンバー。いつかこのメソッドはより多くの押下に対して機能するよう拡張されるでしょう
|
} else return TD_UNKNOWN;
|
||||||
}
|
}
|
||||||
|
|
||||||
//'x' タップダンスの 'tap' のインスタンスを生成します。
|
//'x' タップダンスの 'td_tap_t' のインスタンスを生成します。
|
||||||
static tap xtap_state = {
|
static td_tap_t xtap_state = {
|
||||||
.is_press_action = true,
|
.is_press_action = true,
|
||||||
.state = 0
|
.state = TD_NONE
|
||||||
};
|
};
|
||||||
|
|
||||||
void x_finished(qk_tap_dance_state_t *state, void *user_data) {
|
void x_finished(qk_tap_dance_state_t *state, void *user_data) {
|
||||||
xtap_state.state = cur_dance(state);
|
xtap_state.state = cur_dance(state);
|
||||||
switch (xtap_state.state) {
|
switch (xtap_state.state) {
|
||||||
case SINGLE_TAP: register_code(KC_X); break;
|
case TD_SINGLE_TAP: register_code(KC_X); break;
|
||||||
case SINGLE_HOLD: register_code(KC_LCTRL); break;
|
case TD_SINGLE_HOLD: register_code(KC_LCTRL); break;
|
||||||
case DOUBLE_TAP: register_code(KC_ESC); break;
|
case TD_DOUBLE_TAP: register_code(KC_ESC); break;
|
||||||
case DOUBLE_HOLD: register_code(KC_LALT); break;
|
case TD_DOUBLE_HOLD: register_code(KC_LALT); break;
|
||||||
// 最後の case は高速入力用です。キーが `f` であると仮定します:
|
// 最後の case は高速入力用です。キーが `f` であると仮定します:
|
||||||
// 例えば、`buffer` という単語を入力するとき、`Esc` ではなく `ff` を送信するようにします。
|
// 例えば、`buffer` という単語を入力するとき、`Esc` ではなく `ff` を送信するようにします。
|
||||||
// 高速入力時に `ff` と入力するには、次の文字は `TAPPING_TERM` 以内に入力する必要があります。
|
// 高速入力時に `ff` と入力するには、次の文字は `TAPPING_TERM` 以内に入力する必要があります。
|
||||||
// `TAPPING_TERM` はデフォルトでは 200ms です。
|
// `TAPPING_TERM` はデフォルトでは 200ms です。
|
||||||
case DOUBLE_SINGLE_TAP: tap_code(KC_X); register_code(KC_X);
|
case TD_DOUBLE_SINGLE_TAP: tap_code(KC_X); register_code(KC_X);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void x_reset(qk_tap_dance_state_t *state, void *user_data) {
|
void x_reset(qk_tap_dance_state_t *state, void *user_data) {
|
||||||
switch (xtap_state.state) {
|
switch (xtap_state.state) {
|
||||||
case SINGLE_TAP: unregister_code(KC_X); break;
|
case TD_SINGLE_TAP: unregister_code(KC_X); break;
|
||||||
case SINGLE_HOLD: unregister_code(KC_LCTRL); break;
|
case TD_SINGLE_HOLD: unregister_code(KC_LCTRL); break;
|
||||||
case DOUBLE_TAP: unregister_code(KC_ESC); break;
|
case TD_DOUBLE_TAP: unregister_code(KC_ESC); break;
|
||||||
case DOUBLE_HOLD: unregister_code(KC_LALT);
|
case TD_DOUBLE_HOLD: unregister_code(KC_LALT);
|
||||||
case DOUBLE_SINGLE_TAP: unregister_code(KC_X);
|
case TD_DOUBLE_SINGLE_TAP: unregister_code(KC_X);
|
||||||
}
|
}
|
||||||
xtap_state.state = 0;
|
xtap_state.state = TD_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
qk_tap_dance_action_t tap_dance_actions[] = {
|
qk_tap_dance_action_t tap_dance_actions[] = {
|
||||||
@@ -357,9 +359,11 @@ enum td_keycodes {
|
|||||||
|
|
||||||
// 必要な数のタップダンス状態を含むタイプを定義します
|
// 必要な数のタップダンス状態を含むタイプを定義します
|
||||||
typedef enum {
|
typedef enum {
|
||||||
SINGLE_TAP,
|
TD_NONE,
|
||||||
SINGLE_HOLD,
|
TD_UNKNOWN,
|
||||||
DOUBLE_SINGLE_TAP
|
TD_SINGLE_TAP,
|
||||||
|
TD_SINGLE_HOLD,
|
||||||
|
TD_DOUBLE_SINGLE_TAP
|
||||||
} td_state_t;
|
} td_state_t;
|
||||||
|
|
||||||
// タップダンスの状態の型のグローバルインスタンスを作ります
|
// タップダンスの状態の型のグローバルインスタンスを作ります
|
||||||
@@ -368,7 +372,7 @@ static td_state_t td_state;
|
|||||||
// タップダンス関数を宣言します:
|
// タップダンス関数を宣言します:
|
||||||
|
|
||||||
// 現在のタップダンスの状態を特定するための関数
|
// 現在のタップダンスの状態を特定するための関数
|
||||||
uint8_t cur_dance(qk_tap_dance_state_t *state);
|
td_state_t cur_dance(qk_tap_dance_state_t *state);
|
||||||
|
|
||||||
// それぞれのタップダンスキーコードに適用する `finished` と `reset` 関数
|
// それぞれのタップダンスキーコードに適用する `finished` と `reset` 関数
|
||||||
void altlp_finished(qk_tap_dance_state_t *state, void *user_data);
|
void altlp_finished(qk_tap_dance_state_t *state, void *user_data);
|
||||||
@@ -379,14 +383,14 @@ void altlp_reset(qk_tap_dance_state_t *state, void *user_data);
|
|||||||
|
|
||||||
```c
|
```c
|
||||||
// 返却するタップダンス状態を特定します
|
// 返却するタップダンス状態を特定します
|
||||||
uint8_t cur_dance(qk_tap_dance_state_t *state) {
|
td_state_t cur_dance(qk_tap_dance_state_t *state) {
|
||||||
if (state->count == 1) {
|
if (state->count == 1) {
|
||||||
if (state->interrupted || !state->pressed) return SINGLE_TAP;
|
if (state->interrupted || !state->pressed) return TD_SINGLE_TAP;
|
||||||
else return SINGLE_HOLD;
|
else return TD_SINGLE_HOLD;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (state->count == 2) return DOUBLE_SINGLE_TAP;
|
if (state->count == 2) return TD_DOUBLE_SINGLE_TAP;
|
||||||
else return 3; // 上記で返却する最大の状態の値より大きい任意の数
|
else return TD_UNKNOWN; // 上記で返却する最大の状態の値より大きい任意の数
|
||||||
}
|
}
|
||||||
|
|
||||||
// 定義する各タップダンスキーコードのとりうる状態を制御します:
|
// 定義する各タップダンスキーコードのとりうる状態を制御します:
|
||||||
@@ -394,13 +398,13 @@ uint8_t cur_dance(qk_tap_dance_state_t *state) {
|
|||||||
void altlp_finished(qk_tap_dance_state_t *state, void *user_data) {
|
void altlp_finished(qk_tap_dance_state_t *state, void *user_data) {
|
||||||
td_state = cur_dance(state);
|
td_state = cur_dance(state);
|
||||||
switch (td_state) {
|
switch (td_state) {
|
||||||
case SINGLE_TAP:
|
case TD_SINGLE_TAP:
|
||||||
register_code16(KC_LPRN);
|
register_code16(KC_LPRN);
|
||||||
break;
|
break;
|
||||||
case SINGLE_HOLD:
|
case TD_SINGLE_HOLD:
|
||||||
register_mods(MOD_BIT(KC_LALT)); // レイヤータップキーの場合、ここでは `layer_on(_MY_LAYER)` を使います
|
register_mods(MOD_BIT(KC_LALT)); // レイヤータップキーの場合、ここでは `layer_on(_MY_LAYER)` を使います
|
||||||
break;
|
break;
|
||||||
case DOUBLE_SINGLE_TAP: // タップ時間内に2つの括弧 `((` の入れ子を可能にします
|
case TD_DOUBLE_SINGLE_TAP: // タップ時間内に2つの括弧 `((` の入れ子を可能にします
|
||||||
tap_code16(KC_LPRN);
|
tap_code16(KC_LPRN);
|
||||||
register_code16(KC_LPRN);
|
register_code16(KC_LPRN);
|
||||||
}
|
}
|
||||||
@@ -408,13 +412,13 @@ void altlp_finished(qk_tap_dance_state_t *state, void *user_data) {
|
|||||||
|
|
||||||
void altlp_reset(qk_tap_dance_state_t *state, void *user_data) {
|
void altlp_reset(qk_tap_dance_state_t *state, void *user_data) {
|
||||||
switch (td_state) {
|
switch (td_state) {
|
||||||
case SINGLE_TAP:
|
case TD_SINGLE_TAP:
|
||||||
unregister_code16(KC_LPRN);
|
unregister_code16(KC_LPRN);
|
||||||
break;
|
break;
|
||||||
case SINGLE_HOLD:
|
case TD_SINGLE_HOLD:
|
||||||
unregister_mods(MOD_BIT(KC_LALT)); // レイヤータップキーの場合、ここでは `layer_off(_MY_LAYER)` を使います
|
unregister_mods(MOD_BIT(KC_LALT)); // レイヤータップキーの場合、ここでは `layer_off(_MY_LAYER)` を使います
|
||||||
break;
|
break;
|
||||||
case DOUBLE_SINGLE_TAP:
|
case TD_DOUBLE_SINGLE_TAP:
|
||||||
unregister_code16(KC_LPRN);
|
unregister_code16(KC_LPRN);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -431,20 +435,22 @@ qk_tap_dance_action_t tap_dance_actions[] = {
|
|||||||
|
|
||||||
タップダンスは、MO(layer) と TG(layer) 機能を模倣することにも使用できます。この例では、1回タップすると `KC_QUOT` 、1回押してそのまま押し続けたら `MO(_MY_LAYER)` 、2回タップしたときは `TG(_MY_LAYER)` として機能するキーを設定します。
|
タップダンスは、MO(layer) と TG(layer) 機能を模倣することにも使用できます。この例では、1回タップすると `KC_QUOT` 、1回押してそのまま押し続けたら `MO(_MY_LAYER)` 、2回タップしたときは `TG(_MY_LAYER)` として機能するキーを設定します。
|
||||||
|
|
||||||
最初のステップは、あなたの `keymap.c` ファイルの最初のあたりに以下のコードを追加します。
|
最初のステップは、あなたの `keymap.c` ファイルの最初のあたりに以下のコードを追加することです。
|
||||||
|
|
||||||
```c
|
```c
|
||||||
|
// 必要な数のタップダンス状態のタイプを定義します
|
||||||
|
typedef enum {
|
||||||
|
TD_NONE,
|
||||||
|
TD_UNKNOWN,
|
||||||
|
TD_SINGLE_TAP,
|
||||||
|
TD_SINGLE_HOLD,
|
||||||
|
TD_DOUBLE_TAP
|
||||||
|
} td_state_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
bool is_press_action;
|
bool is_press_action;
|
||||||
uint8_t state;
|
td_state_t state;
|
||||||
} tap;
|
} td_tap_t;
|
||||||
|
|
||||||
// 必要な数のタップダンス状態のタイプを定義します
|
|
||||||
enum {
|
|
||||||
SINGLE_TAP = 1,
|
|
||||||
SINGLE_HOLD,
|
|
||||||
DOUBLE_TAP
|
|
||||||
};
|
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
QUOT_LAYR, // カスタムタップダンスキー。他のタップダンスキーはこの列挙型に追加します
|
QUOT_LAYR, // カスタムタップダンスキー。他のタップダンスキーはこの列挙型に追加します
|
||||||
@@ -453,7 +459,7 @@ enum {
|
|||||||
// タップダンスキーで使われる関数を宣言します
|
// タップダンスキーで使われる関数を宣言します
|
||||||
|
|
||||||
// 全てのタップダンスに関連する関数
|
// 全てのタップダンスに関連する関数
|
||||||
uint8_t cur_dance(qk_tap_dance_state_t *state);
|
td_state_t cur_dance(qk_tap_dance_state_t *state);
|
||||||
|
|
||||||
// 個別のタップダンスに関連する関数
|
// 個別のタップダンスに関連する関数
|
||||||
void ql_finished(qk_tap_dance_state_t *state, void *user_data);
|
void ql_finished(qk_tap_dance_state_t *state, void *user_data);
|
||||||
@@ -464,31 +470,31 @@ void ql_reset(qk_tap_dance_state_t *state, void *user_data);
|
|||||||
|
|
||||||
```c
|
```c
|
||||||
// 現在のタップダンスの状態を決定します
|
// 現在のタップダンスの状態を決定します
|
||||||
uint8_t cur_dance(qk_tap_dance_state_t *state) {
|
td_state_t cur_dance(qk_tap_dance_state_t *state) {
|
||||||
if (state->count == 1) {
|
if (state->count == 1) {
|
||||||
if (!state->pressed) return SINGLE_TAP;
|
if (!state->pressed) return TD_SINGLE_TAP;
|
||||||
else return SINGLE_HOLD;
|
else return TD_SINGLE_HOLD;
|
||||||
} else if (state->count == 2) return DOUBLE_TAP;
|
} else if (state->count == 2) return TD_DOUBLE_TAP;
|
||||||
else return 8;
|
else return TD_UNKNOWN;
|
||||||
}
|
}
|
||||||
|
|
||||||
// この例のタップダンスキーに関連付けられた "tap" 構造体を初期化します
|
// この例のタップダンスキーに関連付けられた "tap" 構造体を初期化します
|
||||||
static tap ql_tap_state = {
|
static td_tap_t ql_tap_state = {
|
||||||
.is_press_action = true,
|
.is_press_action = true,
|
||||||
.state = 0
|
.state = TD_NONE
|
||||||
};
|
};
|
||||||
|
|
||||||
// タップダンスキーの動作をコントロールする関数
|
// タップダンスキーの動作をコントロールする関数
|
||||||
void ql_finished(qk_tap_dance_state_t *state, void *user_data) {
|
void ql_finished(qk_tap_dance_state_t *state, void *user_data) {
|
||||||
ql_tap_state.state = cur_dance(state);
|
ql_tap_state.state = cur_dance(state);
|
||||||
switch (ql_tap_state.state) {
|
switch (ql_tap_state.state) {
|
||||||
case SINGLE_TAP:
|
case TD_SINGLE_TAP:
|
||||||
tap_code(KC_QUOT);
|
tap_code(KC_QUOT);
|
||||||
break;
|
break;
|
||||||
case SINGLE_HOLD:
|
case TD_SINGLE_HOLD:
|
||||||
layer_on(_MY_LAYER);
|
layer_on(_MY_LAYER);
|
||||||
break;
|
break;
|
||||||
case DOUBLE_TAP:
|
case TD_DOUBLE_TAP:
|
||||||
// レイヤーが既にセットされているか確認します
|
// レイヤーが既にセットされているか確認します
|
||||||
if (layer_state_is(_MY_LAYER)) {
|
if (layer_state_is(_MY_LAYER)) {
|
||||||
// レイヤーが既にセットされていたら、オフにします。
|
// レイヤーが既にセットされていたら、オフにします。
|
||||||
@@ -503,10 +509,10 @@ void ql_finished(qk_tap_dance_state_t *state, void *user_data) {
|
|||||||
|
|
||||||
void ql_reset(qk_tap_dance_state_t *state, void *user_data) {
|
void ql_reset(qk_tap_dance_state_t *state, void *user_data) {
|
||||||
// キーを押し続けていて今離したら、レイヤーをオフに切り替えます。
|
// キーを押し続けていて今離したら、レイヤーをオフに切り替えます。
|
||||||
if (ql_tap_state.state == SINGLE_HOLD) {
|
if (ql_tap_state.state == TD_SINGLE_HOLD) {
|
||||||
layer_off(_MY_LAYER);
|
layer_off(_MY_LAYER);
|
||||||
}
|
}
|
||||||
ql_tap_state.state = 0;
|
ql_tap_state.state = TD_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
// タップダンスキーを機能に関連付けます
|
// タップダンスキーを機能に関連付けます
|
||||||
@@ -519,7 +525,7 @@ qk_tap_dance_action_t tap_dance_actions[] = {
|
|||||||
|
|
||||||
`cur_dance()` と `ql_tap_state` の使い方は、上の例と似ています。
|
`cur_dance()` と `ql_tap_state` の使い方は、上の例と似ています。
|
||||||
|
|
||||||
`ql_finished` 関数における `case:SINGLE_TAP` は、上の例と似ています。`SINGLE_HOLD` の case では、`ql_reset()` と連動してタップダンスキーを押している間 `_MY_LAYER` に切り替わり、キーを離した時に `_MY_LAYER` から離れます。これは、`MO(_MY_LAYER)` に似ています。`DOUBLE_TAP` の case では、`_MY_LAYER` がアクティブレイヤーかどうかを確認することによって動きます。そして、その結果に基づいてレイヤーのオン・オフをトグルします。これは `TG(_MY_LAYER)` に似ています。
|
`ql_finished` 関数における `case: TD_SINGLE_TAP` は、上の例と似ています。`TD_SINGLE_HOLD` の case では、`ql_reset()` と連動してタップダンスキーを押している間 `_MY_LAYER` に切り替わり、キーを離した時に `_MY_LAYER` から離れます。これは、`MO(_MY_LAYER)` に似ています。`TD_DOUBLE_TAP` の case では、`_MY_LAYER` がアクティブレイヤーかどうかを確認することによって動きます。そして、その結果に基づいてレイヤーのオン・オフをトグルします。これは `TG(_MY_LAYER)` に似ています。
|
||||||
|
|
||||||
`tap_dance_actions[]` は、上の例に似ています。 `ACTION_TAP_DANCE_FN_ADVANCED()` の代わりに `ACTION_TAP_DANCE_FN_ADVANCED_TIME()` を使ったことに注意してください。
|
`tap_dance_actions[]` は、上の例に似ています。 `ACTION_TAP_DANCE_FN_ADVANCED()` の代わりに `ACTION_TAP_DANCE_FN_ADVANCED_TIME()` を使ったことに注意してください。
|
||||||
この理由は、私は、非タップダンスキーを使うにあたり `TAPPING_TERM` が短い(175ミリ秒以内)方が好きなのですが、タップダンスのアクションを確実に完了させるには短すぎるとわかったからです——そのため、ここでは時間を275ミリ秒に増やしています。
|
この理由は、私は、非タップダンスキーを使うにあたり `TAPPING_TERM` が短い(175ミリ秒以内)方が好きなのですが、タップダンスのアクションを確実に完了させるには短すぎるとわかったからです——そのため、ここでは時間を275ミリ秒に増やしています。
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
<!---
|
<!---
|
||||||
grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh
|
grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh
|
||||||
original document: 0.12.45:docs/newbs_getting_started.md
|
original document: 0.13.20:docs/newbs_getting_started.md
|
||||||
git diff 0.12.45 HEAD -- docs/newbs_getting_started.md | cat
|
git diff 0.13.20 HEAD -- docs/newbs_getting_started.md | cat
|
||||||
-->
|
-->
|
||||||
|
|
||||||
キーマップをビルドする前に、いくつかのソフトウェアをインストールしてビルド環境を構築する必要があります。
|
キーマップをビルドする前に、いくつかのソフトウェアをインストールしてビルド環境を構築する必要があります。
|
||||||
@@ -57,9 +57,7 @@ MSYS2 をインストールしたら、開いている MSYS の全ターミナ
|
|||||||
|
|
||||||
次のコマンドを実行して、QMK CLI をインストールします:
|
次のコマンドを実行して、QMK CLI をインストールします:
|
||||||
|
|
||||||
PYTHONUTF8=1 python3 -m pip install qmk
|
python3 -m pip install qmk
|
||||||
|
|
||||||
!> **訳注:** 現在、日本語版 Windows 環境では、環境変数として `PYTHONUTF8=1` を指定してインストールする必要があります。この環境変数を指定しない場合、システムのロケール設定が原因で一部の Python モジュールのインストールでエラーが発生します。この問題は該当モジュールのソースコードでは修正済みですが、配布モジュールはまだ修正されていません。
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ You can control the behavior of one shot keys by defining these in `config.h`:
|
|||||||
* `OSL(layer)` - momentary switch to *layer*.
|
* `OSL(layer)` - momentary switch to *layer*.
|
||||||
* `OS_ON` - Turns on One Shot keys.
|
* `OS_ON` - Turns on One Shot keys.
|
||||||
* `OS_OFF` - Turns off One Shot keys. OSM act as regular mod keys, OSL act like `MO`.
|
* `OS_OFF` - Turns off One Shot keys. OSM act as regular mod keys, OSL act like `MO`.
|
||||||
* `ON_TOGG` - Toggles the one shot key status.
|
* `OS_TOGG` - Toggles the one shot key status.
|
||||||
|
|
||||||
Sometimes, you want to activate a one-shot key as part of a macro or tap dance routine.
|
Sometimes, you want to activate a one-shot key as part of a macro or tap dance routine.
|
||||||
|
|
||||||
|
|||||||
+10
-7
@@ -65,14 +65,17 @@ Now, we will set up the MSYS2 window to show up in VSCode as the integrated term
|
|||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"terminal.integrated.shell.windows": "C:\\msys64\\usr\\bin\\bash.exe",
|
"terminal.integrated.profiles.windows": {
|
||||||
"terminal.integrated.env.windows": {
|
"QMK_MSYS": {
|
||||||
"MSYSTEM": "MINGW64",
|
"path": "C:/QMK_MSYS/usr/bin/bash.exe",
|
||||||
"CHERE_INVOKING": "1"
|
"env": {
|
||||||
|
"MSYSTEM": "MINGW64",
|
||||||
|
"CHERE_INVOKING": "1"
|
||||||
|
},
|
||||||
|
"args": ["--login"]
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"terminal.integrated.shellArgs.windows": [
|
|
||||||
"--login"
|
|
||||||
],
|
|
||||||
"terminal.integrated.cursorStyle": "line"
|
"terminal.integrated.cursorStyle": "line"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -93,6 +93,7 @@ https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard
|
|||||||
- default (and via) keymaps should be "pristine"
|
- default (and via) keymaps should be "pristine"
|
||||||
- bare minimum to be used as a "clean slate" for another user to develop their own user-specific keymap
|
- bare minimum to be used as a "clean slate" for another user to develop their own user-specific keymap
|
||||||
- standard layouts preferred in these keymaps, if possible
|
- standard layouts preferred in these keymaps, if possible
|
||||||
|
- default keymap should not enable VIA -- the VIA integration documentation requires a keymap called `via`
|
||||||
- submitters can have a personal (or bells-and-whistles) keymap showcasing capabilities in the same PR but it shouldn't be embedded in the 'default' keymap
|
- submitters can have a personal (or bells-and-whistles) keymap showcasing capabilities in the same PR but it shouldn't be embedded in the 'default' keymap
|
||||||
- submitters can also have a "manufacturer-matching" keymap that mirrors existing functionality of the commercial product, if porting an existing board
|
- submitters can also have a "manufacturer-matching" keymap that mirrors existing functionality of the commercial product, if porting an existing board
|
||||||
- Do not include VIA json files in the PR. These do not belong in the QMK repository as they are not used by QMK firmware -- they belong in the [VIA Keyboard Repo](https://github.com/the-via/keyboards)
|
- Do not include VIA json files in the PR. These do not belong in the QMK repository as they are not used by QMK firmware -- they belong in the [VIA Keyboard Repo](https://github.com/the-via/keyboards)
|
||||||
|
|||||||
@@ -1,86 +1,91 @@
|
|||||||
# Language-specific Keycodes
|
# Language-specific Keycodes
|
||||||
|
|
||||||
Keyboards are able to support a wide range of languages. However, they do not send the actual characters produced by pressing their keys - instead, they send numerical codes. In the USB HID spec, these are called "usages", although they are more often referred to as "scancodes" or "keycodes" when in the context of keyboards.
|
Keyboards are able to support a wide range of languages. However, this support is not actually achieved within the keyboard itself - instead, it sends numerical codes, which the operating system maps to the appropriate characters depending on the user's configured keyboard layout. By default (and per the HID spec), this is the US ANSI layout. For example, when a Swedish person presses the key with the `å` character printed on it, the keyboard is *actually* sending the keycode for `[`.
|
||||||
Less than 256 usages are defined in the HID Keyboard/Keypad usage page, and some of those do nothing on modern operating systems. So, how is this language support achieved?
|
|
||||||
|
|
||||||
In a nutshell, the operating system maps the usages it receives to the appropriate character based on the user's configured keyboard layout. For example, when a Swedish person presses the key with the `å` character printed on it, the keyboard is *actually* sending the keycode for `[`.
|
Obviously, this can get confusing, so QMK provides language-specific keycode aliases for many keyboard layouts. These won't do much on their own - you still have to set the matching keyboard layout in your OS settings. Think of them more as keycap labels for your keymap.
|
||||||
|
|
||||||
Obviously, this could get confusing, so QMK provides language-specific keycode aliases for many keyboard layouts. These won't do much on their own - you still have to set the matching keyboard layout in your OS settings. Think of them more as keycap labels for your keymap.
|
Simply `#include` one of the keycode headers below at the top of your `keymap.c`, and assign the keycodes defined in the header in place of the `KC_` prefixed ones.
|
||||||
|
|
||||||
To use these, simply `#include` the corresponding [header file](https://github.com/qmk/qmk_firmware/tree/master/quantum/keymap_extras) in your `keymap.c`, and add the keycodes defined in them in place of the `KC_` prefixed ones:
|
|
||||||
|
|
||||||
|Layout |Header |
|
|
||||||
|---------------------------|--------------------------------|
|
|
||||||
|Canadian Multilingual (CSA)|`keymap_canadian_multilingual.h`|
|
|
||||||
|Croatian |`keymap_croatian.h` |
|
|
||||||
|Czech |`keymap_czech.h` |
|
|
||||||
|Danish |`keymap_danish.h` |
|
|
||||||
|Dutch (Belgium) |`keymap_belgian.h` |
|
|
||||||
|English (Ireland) |`keymap_irish.h` |
|
|
||||||
|English (UK) |`keymap_uk.h` |
|
|
||||||
|English (US Extended) |`keymap_us_extended.h` |
|
|
||||||
|English (US International) |`keymap_us_international.h` |
|
|
||||||
|English (US International, Linux)|`keymap_us_international_linux.h`|
|
|
||||||
|Estonian |`keymap_estonian.h` |
|
|
||||||
|Finnish |`keymap_finnish.h` |
|
|
||||||
|French |`keymap_french.h` |
|
|
||||||
|French (AFNOR) |`keymap_french_afnor.h` |
|
|
||||||
|French (BÉPO) |`keymap_bepo.h` |
|
|
||||||
|French (Belgium) |`keymap_belgian.h` |
|
|
||||||
|French (Switzerland) |`keymap_fr_ch.h` |
|
|
||||||
|French (macOS, ISO) |`keymap_french_osx.h` |
|
|
||||||
|German |`keymap_german.h` |
|
|
||||||
|German (Switzerland) |`keymap_german_ch.h` |
|
|
||||||
|German (macOS) |`keymap_german_osx.h` |
|
|
||||||
|German (Neo2)* |`keymap_neo2.h` |
|
|
||||||
|Greek* |`keymap_greek.h` |
|
|
||||||
|Hebrew* |`keymap_hebrew.h` |
|
|
||||||
|Hungarian |`keymap_hungarian.h` |
|
|
||||||
|Icelandic |`keymap_icelandic.h` |
|
|
||||||
|Italian |`keymap_italian.h` |
|
|
||||||
|Italian (macOS, ANSI) |`keymap_italian_osx_ansi.h` |
|
|
||||||
|Italian (macOS, ISO) |`keymap_italian_osx_iso.h` |
|
|
||||||
|Japanese |`keymap_jp.h` |
|
|
||||||
|Korean |`keymap_korean.h` |
|
|
||||||
|Latvian |`keymap_latvian.h` |
|
|
||||||
|Lithuanian (ĄŽERTY) |`keymap_lithuanian_azerty.h` |
|
|
||||||
|Lithuanian (QWERTY) |`keymap_lithuanian_qwerty.h` |
|
|
||||||
|Norwegian |`keymap_norwegian.h` |
|
|
||||||
|Polish |`keymap_polish.h` |
|
|
||||||
|Portuguese |`keymap_portuguese.h` |
|
|
||||||
|Portuguese (macOS, ISO) |`keymap_portuguese_osx_iso.h` |
|
|
||||||
|Portuguese (Brazil) |`keymap_br_abnt2.h` |
|
|
||||||
|Romanian |`keymap_romanian.h` |
|
|
||||||
|Russian* |`keymap_russian.h` |
|
|
||||||
|Serbian* |`keymap_serbian.h` |
|
|
||||||
|Serbian (Latin) |`keymap_serbian_latin.h` |
|
|
||||||
|Slovak |`keymap_slovak.h` |
|
|
||||||
|Slovenian |`keymap_slovenian.h` |
|
|
||||||
|Spanish |`keymap_spanish.h` |
|
|
||||||
|Spanish (Dvorak) |`keymap_spanish_dvorak.h` |
|
|
||||||
|Swedish |`keymap_swedish.h` |
|
|
||||||
|Turkish (F) |`keymap_turkish_f.h` |
|
|
||||||
|Turkish (Q) |`keymap_turkish_q.h` |
|
|
||||||
|
|
||||||
There are also a few which are not quite language-specific, but useful if you are not using a QWERTY layout:
|
|
||||||
|
|
||||||
|Layout |Header |
|
|
||||||
|-------------------|------------------------|
|
|
||||||
|Colemak |`keymap_colemak.h` |
|
|
||||||
|Dvorak |`keymap_dvorak.h` |
|
|
||||||
|Dvorak (French) |`keymap_dvorak_fr.h` |
|
|
||||||
|Dvorak (Programmer)|`keymap_dvp.h` |
|
|
||||||
|Norman |`keymap_norman.h` |
|
|
||||||
|Plover* |`keymap_plover.h` |
|
|
||||||
|Plover (Dvorak)* |`keymap_plover_dvorak.h`|
|
|
||||||
|Steno* |`keymap_steno.h` |
|
|
||||||
|Workman |`keymap_workman.h` |
|
|
||||||
|Workman (ZXCVM) |`keymap_workman_zxcvm.h`|
|
|
||||||
|
|
||||||
## Sendstring Support
|
## Sendstring Support
|
||||||
|
|
||||||
By default, `SEND_STRING()` assumes a US ANSI keyboard layout is set. If you are using a different layout, you can also `#include "sendstring_*.h"` (as above) in your keymap to override the lookup tables used for mapping ASCII characters to keycodes.
|
By default, `SEND_STRING()` assumes a US ANSI keyboard layout is set. If you are using a different layout, you can include one of the Sendstring LUT headers below in your `keymap.c` to override the lookup tables used for mapping ASCII characters to keycodes. You do not need to include the corresponding `keymap_*.h` header, as it is implicit when including the Sendstring header.
|
||||||
|
|
||||||
An important thing to note here is that `SEND_STRING()` only operates on [ASCII text](https://en.wikipedia.org/wiki/ASCII#Character_set). This means that you cannot pass it a string containing Unicode characters - this unfortunately includes accented characters that may be present in your desired layout.
|
An important thing to note here is that `SEND_STRING()` only operates on [ASCII text](https://en.wikipedia.org/wiki/ASCII#Character_set). This means that you cannot pass it a string containing Unicode characters - this unfortunately includes accented characters that may be present in your desired layout.
|
||||||
Many layouts make certain characters, such as Grave or Tilde, available only as [dead keys](https://en.wikipedia.org/wiki/Dead_key), so you must add a space immediately after it in the string you want to send, to prevent it from potentially combining with the next character.
|
Many layouts make certain characters, such as Grave or Tilde, available only as [dead keys](https://en.wikipedia.org/wiki/Dead_key), so you must add a space immediately after it in the string you want to send, to prevent it from potentially combining with the next character.
|
||||||
Certain other layouts have no Sendstring header as they do not use a Latin-derived alphabet (for example Greek and Russian), and thus there is no way to input most of the ASCII character set. These are marked above with a `*`.
|
Certain other layouts have no Sendstring header as they do not use a Latin-derived alphabet (for example Greek and Russian), and thus there is no way to input most of the ASCII character set.
|
||||||
|
|
||||||
|
## Header Files
|
||||||
|
|
||||||
|
These headers are located in [`quantum/keymap_extras/`](https://github.com/qmk/qmk_firmware/tree/master/quantum/keymap_extras).
|
||||||
|
|
||||||
|
|Layout |Keycodes Header |Sendstring LUT Header |
|
||||||
|
|---------------------------------|---------------------------------|------------------------------------|
|
||||||
|
|Canadian Multilingual (CSA) |`keymap_canadian_multilingual.h` |`sendstring_canadian_multilingual.h`|
|
||||||
|
|Croatian |`keymap_croatian.h` |`sendstring_croatian.h` |
|
||||||
|
|Czech |`keymap_czech.h` |`sendstring_czech.h` |
|
||||||
|
|Danish |`keymap_danish.h` |`sendstring_danish.h` |
|
||||||
|
|Dutch (Belgium) |`keymap_belgian.h` |`sendstring_belgian.h` |
|
||||||
|
|English (Ireland) |`keymap_irish.h` | |
|
||||||
|
|English (UK) |`keymap_uk.h` |`sendstring_uk.h` |
|
||||||
|
|English (US Extended) |`keymap_us_extended.h` | |
|
||||||
|
|English (US International) |`keymap_us_international.h` |`sendstring_us_international.h` |
|
||||||
|
|English (US International, Linux)|`keymap_us_international_linux.h`| |
|
||||||
|
|Estonian |`keymap_estonian.h` |`sendstring_estonian.h` |
|
||||||
|
|Finnish |`keymap_finnish.h` |`sendstring_finnish.h` |
|
||||||
|
|French |`keymap_french.h` |`sendstring_french.h` |
|
||||||
|
|French (AFNOR) |`keymap_french_afnor.h` |`sendstring_french_afnor.h` |
|
||||||
|
|French (BÉPO) |`keymap_bepo.h` |`sendstring_bepo.h` |
|
||||||
|
|French (Belgium) |`keymap_belgian.h` |`sendstring_belgian.h` |
|
||||||
|
|French (Switzerland) |`keymap_fr_ch.h` |`sendstring_fr_ch.h` |
|
||||||
|
|French (macOS, ISO) |`keymap_french_osx.h` |`sendstring_french_osx.h` |
|
||||||
|
|German |`keymap_german.h` |`sendstring_german.h` |
|
||||||
|
|German (Switzerland) |`keymap_german_ch.h` |`sendstring_german_ch.h` |
|
||||||
|
|German (macOS) |`keymap_german_osx.h` |`sendstring_german_osx.h` |
|
||||||
|
|German (Neo2) |`keymap_neo2.h` | |
|
||||||
|
|Greek |`keymap_greek.h` | |
|
||||||
|
|Hebrew |`keymap_hebrew.h` | |
|
||||||
|
|Hungarian |`keymap_hungarian.h` |`sendstring_hungarian.h` |
|
||||||
|
|Icelandic |`keymap_icelandic.h` |`sendstring_icelandic.h` |
|
||||||
|
|Italian |`keymap_italian.h` |`sendstring_italian.h` |
|
||||||
|
|Italian (macOS, ANSI) |`keymap_italian_osx_ansi.h` |`sendstring_italian_osx_ansi.h` |
|
||||||
|
|Italian (macOS, ISO) |`keymap_italian_osx_iso.h` |`sendstring_italian_osx_iso.h` |
|
||||||
|
|Japanese |`keymap_jp.h` |`sendstring_jis.h` |
|
||||||
|
|Korean |`keymap_korean.h` | |
|
||||||
|
|Latvian |`keymap_latvian.h` |`sendstring_latvian.h` |
|
||||||
|
|Lithuanian (ĄŽERTY) |`keymap_lithuanian_azerty.h` |`sendstring_lithuanian_azerty.h` |
|
||||||
|
|Lithuanian (QWERTY) |`keymap_lithuanian_qwerty.h` |`sendstring_lithuanian_qwerty.h` |
|
||||||
|
|Norwegian |`keymap_norwegian.h` |`sendstring_norwegian.h` |
|
||||||
|
|Polish |`keymap_polish.h` | |
|
||||||
|
|Portuguese |`keymap_portuguese.h` |`sendstring_portuguese.h` |
|
||||||
|
|Portuguese (macOS, ISO) |`keymap_portuguese_osx_iso.h` |`sendstring_portuguese_osx_iso.h` |
|
||||||
|
|Portuguese (Brazil) |`keymap_br_abnt2.h` |`sendstring_br_abnt2.h` |
|
||||||
|
|Romanian |`keymap_romanian.h` |`sendstring_romanian.h` |
|
||||||
|
|Russian |`keymap_russian.h` | |
|
||||||
|
|Serbian |`keymap_serbian.h` | |
|
||||||
|
|Serbian (Latin) |`keymap_serbian_latin.h` |`sendstring_serbian_latin.h` |
|
||||||
|
|Slovak |`keymap_slovak.h` |`sendstring_slovak.h` |
|
||||||
|
|Slovenian |`keymap_slovenian.h` |`sendstring_slovenian.h` |
|
||||||
|
|Spanish |`keymap_spanish.h` |`sendstring_spanish.h` |
|
||||||
|
|Spanish (Dvorak) |`keymap_spanish_dvorak.h` |`sendstring_spanish_dvorak.h` |
|
||||||
|
|Swedish |`keymap_swedish.h` |`sendstring_swedish.h` |
|
||||||
|
|Swedish (macOS, ANSI) |`keymap_swedish_osx_ansi.h` | |
|
||||||
|
|Swedish (macOS, ISO) |`keymap_swedish_osx_iso.h` | |
|
||||||
|
|Swedish Pro (macOS, ANSI) |`keymap_swedish_pro_osx_ansi.h` | |
|
||||||
|
|Swedish Pro (macOS, ISO) |`keymap_swedish_pro_osx_iso.h` | |
|
||||||
|
|Turkish (F) |`keymap_turkish_f.h` |`sendstring_turkish_f.h` |
|
||||||
|
|Turkish (Q) |`keymap_turkish_q.h` |`sendstring_turkish_q.h` |
|
||||||
|
|
||||||
|
There are also a few which are not quite language-specific, but useful if you are not using a QWERTY layout:
|
||||||
|
|
||||||
|
|Layout |Keycodes Header |Sendstring LUT Header |
|
||||||
|
|-------------------|------------------------|----------------------------|
|
||||||
|
|Colemak |`keymap_colemak.h` |`sendstring_colemak.h` |
|
||||||
|
|Dvorak |`keymap_dvorak.h` |`sendstring_dvorak.h` |
|
||||||
|
|Dvorak (French) |`keymap_dvorak_fr.h` |`sendstring_dvorak_fr.h` |
|
||||||
|
|Dvorak (Programmer)|`keymap_dvp.h` |`sendstring_dvp.h` |
|
||||||
|
|Norman |`keymap_norman.h` |`sendstring_norman.h` |
|
||||||
|
|Plover |`keymap_plover.h` | |
|
||||||
|
|Plover (Dvorak) |`keymap_plover_dvorak.h`| |
|
||||||
|
|Steno |`keymap_steno.h` | |
|
||||||
|
|Workman |`keymap_workman.h` |`sendstring_workman.h` |
|
||||||
|
|Workman (ZXCVM) |`keymap_workman_zxcvm.h`|`sendstring_workman_zxcvm.h`|
|
||||||
@@ -36,12 +36,20 @@ Note how there's several different tests, each mocking out a separate part. Also
|
|||||||
|
|
||||||
## Running the Tests
|
## Running the Tests
|
||||||
|
|
||||||
To run all the tests in the codebase, type `make test`. You can also run test matching a substring by typing `make test:matchingsubstring` Note that the tests are always compiled with the native compiler of your platform, so they are also run like any other program on your computer.
|
To run all the tests in the codebase, type `make test:all`. You can also run test matching a substring by typing `make test:matchingsubstring` Note that the tests are always compiled with the native compiler of your platform, so they are also run like any other program on your computer.
|
||||||
|
|
||||||
## Debugging the Tests
|
## Debugging the Tests
|
||||||
|
|
||||||
If there are problems with the tests, you can find the executable in the `./build/test` folder. You should be able to run those with GDB or a similar debugger.
|
If there are problems with the tests, you can find the executable in the `./build/test` folder. You should be able to run those with GDB or a similar debugger.
|
||||||
|
|
||||||
|
To forward any [debug messages](unit_testing.md#debug-api) to `stderr`, the tests can run with `DEBUG=1`. For example
|
||||||
|
|
||||||
|
```console
|
||||||
|
make test:all DEBUG=1
|
||||||
|
```
|
||||||
|
|
||||||
|
Alternatively, add `CONSOLE_ENABLE=yes` to the tests `rules.mk`.
|
||||||
|
|
||||||
## Full Integration Tests
|
## Full Integration Tests
|
||||||
|
|
||||||
It's not yet possible to do a full integration test, where you would compile the whole firmware and define a keymap that you are going to test. However there are plans for doing that, because writing tests that way would probably be easier, at least for people that are not used to unit testing.
|
It's not yet possible to do a full integration test, where you would compile the whole firmware and define a keymap that you are going to test. However there are plans for doing that, because writing tests that way would probably be easier, at least for people that are not used to unit testing.
|
||||||
|
|||||||
@@ -20,13 +20,6 @@ void eeconfig_init_kb(void) {
|
|||||||
#ifdef BACKLIGHT_ENABLE
|
#ifdef BACKLIGHT_ENABLE
|
||||||
backlight_enable();
|
backlight_enable();
|
||||||
backlight_level(5);
|
backlight_level(5);
|
||||||
#endif
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
|
||||||
rgblight_enable();
|
|
||||||
rgblight_sethsv(0, 255, 255);
|
|
||||||
#ifdef RGBLIGHT_ANIMATIONS
|
|
||||||
rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL + 2);
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
eeconfig_update_kb(0);
|
eeconfig_update_kb(0);
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
* The second converts the arguments into a two-dimensional array which
|
* The second converts the arguments into a two-dimensional array which
|
||||||
* represents the switch matrix.
|
* represents the switch matrix.
|
||||||
*/
|
*/
|
||||||
|
// clang-format off
|
||||||
#define LAYOUT( \
|
#define LAYOUT( \
|
||||||
KA1, KA2, KA3, \
|
KA1, KA2, KA3, \
|
||||||
KB1, KB2, KB3, \
|
KB1, KB2, KB3, \
|
||||||
@@ -36,3 +37,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
{ KB1, KB2, KB3 }, \
|
{ KB1, KB2, KB3 }, \
|
||||||
{ KC1, KC2, KC3 } \
|
{ KC1, KC2, KC3 } \
|
||||||
}
|
}
|
||||||
|
// clang-format on
|
||||||
@@ -17,6 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "config_common.h"
|
#include "config_common.h"
|
||||||
|
// clang-format off
|
||||||
|
|
||||||
/* USB Device descriptor parameter */
|
/* USB Device descriptor parameter */
|
||||||
#define VENDOR_ID 0xCB00
|
#define VENDOR_ID 0xCB00
|
||||||
@@ -47,19 +48,26 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
|
|
||||||
#define RGB_DI_PIN D3
|
#define RGB_DI_PIN D3
|
||||||
#ifdef RGB_DI_PIN
|
#ifdef RGB_DI_PIN
|
||||||
#define RGBLED_NUM 5
|
#define RGBLED_NUM 4
|
||||||
#define RGBLIGHT_HUE_STEP 8
|
#define RGBLIGHT_HUE_STEP 8
|
||||||
#define RGBLIGHT_SAT_STEP 8
|
#define RGBLIGHT_SAT_STEP 8
|
||||||
#define RGBLIGHT_VAL_STEP 8
|
#define RGBLIGHT_VAL_STEP 8
|
||||||
#define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
|
#define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
|
||||||
#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
|
#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
|
||||||
// #define RGBLIGHT_ANIMATIONS
|
#define RGBLIGHT_ANIMATIONS /* comment this and uncomment the lines below to save space */
|
||||||
#define RGBLIGHT_EFFECT_BREATHING
|
// #define RGBLIGHT_EFFECT_BREATHING
|
||||||
#define RGBLIGHT_EFFECT_SNAKE
|
// #define RGBLIGHT_EFFECT_SNAKE
|
||||||
#define RGBLIGHT_EFFECT_STATIC_GRADIENT
|
// #define RGBLIGHT_EFFECT_STATIC_GRADIENT
|
||||||
#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
|
// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
|
||||||
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
|
// #define RGBLIGHT_EFFECT_RAINBOW_MOOD
|
||||||
|
/* default setup after eeprom reset */
|
||||||
|
#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_EFFECT_BREATHING + 2
|
||||||
|
#define RGBLIGHT_DEFAULT_HUE 152
|
||||||
|
#define RGBLIGHT_DEFAULT_SAT 232
|
||||||
|
#define RGBLIGHT_DEFAULT_VAR 255
|
||||||
|
#define RGBLIGHT_DEFAULT_SPD 2
|
||||||
#endif
|
#endif
|
||||||
|
// clang-format on
|
||||||
|
|
||||||
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||||
#define DEBOUNCE 5
|
#define DEBOUNCE 5
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ You should have received a copy of the GNU General Public License
|
|||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
#include "progmem.h"
|
#include "progmem.h"
|
||||||
|
// clang-format off
|
||||||
static const unsigned char font[] PROGMEM = {
|
static const unsigned char font[] PROGMEM = {
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00,
|
0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00,
|
||||||
@@ -274,3 +274,4 @@ static const unsigned char font[] PROGMEM = {
|
|||||||
0x07, 0x07, 0x0F, 0x0F, 0x1E, 0x3E,
|
0x07, 0x07, 0x0F, 0x0F, 0x1E, 0x3E,
|
||||||
0x3C, 0x7C, 0x70, 0xC0, 0x80, 0x00,
|
0x3C, 0x7C, 0x70, 0xC0, 0x80, 0x00,
|
||||||
};
|
};
|
||||||
|
// clang-format on
|
||||||
@@ -0,0 +1,185 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2021 0xCB - Conor Burns
|
||||||
|
|
||||||
|
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
|
||||||
|
// clang-format off
|
||||||
|
enum layer_names {
|
||||||
|
_HOME,
|
||||||
|
_MISC,
|
||||||
|
_RGB,
|
||||||
|
_BLED
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[_HOME] = LAYOUT(
|
||||||
|
KC_MPRV, KC_MNXT, KC_MPLY,
|
||||||
|
KC_PGUP, KC_PGDN, TO(3),
|
||||||
|
KC_HOME, KC_END, TO(1)
|
||||||
|
),
|
||||||
|
[_MISC] = LAYOUT(
|
||||||
|
_______, _______, _______,
|
||||||
|
_______, _______, TO(0),
|
||||||
|
_______, _______, TO(2)
|
||||||
|
),
|
||||||
|
[_RGB] = LAYOUT(
|
||||||
|
RGB_HUI, RGB_HUD, RGB_MOD,
|
||||||
|
RGB_SAI, RGB_SAD, TO(1),
|
||||||
|
RGB_SPI, RGB_SPD, TO(3)
|
||||||
|
),
|
||||||
|
[_BLED] = LAYOUT(
|
||||||
|
BL_STEP, BL_BRTG, BL_TOGG,
|
||||||
|
BL_ON, BL_OFF, TO(2),
|
||||||
|
BL_INC, BL_DEC, TO(0)
|
||||||
|
)
|
||||||
|
};
|
||||||
|
// clang-format on
|
||||||
|
|
||||||
|
/* rotary encoder (SW3) - add more else if blocks for more granular layer control */
|
||||||
|
#ifdef ENCODER_ENABLE
|
||||||
|
bool encoder_update_user(uint8_t index, bool clockwise) {
|
||||||
|
if (IS_LAYER_ON(_RGB)) {
|
||||||
|
#ifdef RGBLIGHT_ENABLE
|
||||||
|
if (clockwise) {
|
||||||
|
rgblight_increase_val();
|
||||||
|
} else {
|
||||||
|
rgblight_decrease_val();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
} else if (IS_LAYER_ON(_BLED)) {
|
||||||
|
if (clockwise) {
|
||||||
|
backlight_increase();
|
||||||
|
} else {
|
||||||
|
backlight_decrease();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (clockwise) {
|
||||||
|
tap_code(KC_VOLU);
|
||||||
|
} else {
|
||||||
|
tap_code(KC_VOLD);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* oled stuff :) */
|
||||||
|
#ifdef OLED_DRIVER_ENABLE
|
||||||
|
uint16_t startup_timer;
|
||||||
|
|
||||||
|
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
|
||||||
|
startup_timer = timer_read();
|
||||||
|
return rotation;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void render_logo(void) {
|
||||||
|
static const char PROGMEM raw_logo[] = {
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 1, 2, 4, 2, 1, 1, 1, 1, 1, 1,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 1, 1, 1, 1, 1, 2, 4, 2, 1, 0, 0, 0, 0, 0, 0,128, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 5,248, 5, 2, 0, 0, 0, 0, 0, 0,128,192,192,224,224,112,120, 56, 63, 28, 14, 14, 14,254, 14, 14, 30, 28, 63, 56,120,112,224,224,192,128, 0, 0, 0, 0, 0, 0, 0, 2, 5,248, 5, 2, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,160, 19,162, 66, 66, 66, 66, 66, 66, 66,255,255,255, 0, 0, 0,252,254,254,192,192,192,192,255, 0, 0, 0, 62, 62, 60, 60, 0, 0, 1,255,255,255, 66, 66, 66, 66, 66, 66, 66,162, 19,160, 64, 0,
|
||||||
|
0, 0, 0,128, 64, 64, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,192, 64, 64,192,128, 0, 0,192, 64, 64,192,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 64,192, 0, 0, 0, 0, 0,128,192, 64, 64,192,128, 0, 0,128,192, 64, 64,192,128, 0, 0, 64, 64, 64, 64, 64,192, 0, 0, 0, 0, 0,249, 8, 8, 8, 8, 8, 8, 8, 8,127,255,255,192,128,128, 15, 31, 31, 1, 1, 1, 1,255, 0, 0, 0, 30, 30, 14, 14,128,192,192,255,255,127, 8, 8, 8, 8, 8, 8, 8, 8,249, 0, 0, 0,
|
||||||
|
0, 0, 31, 49, 64, 78, 64, 49, 31, 0, 0, 97, 22, 8, 22, 97, 0, 0, 31, 49, 96, 64, 64, 96, 32, 0, 0,127, 68, 68,100, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64,127, 64, 64, 0, 0, 0, 32,100, 68, 68,110, 59, 0, 0, 32,100, 68, 68,110, 59, 0, 0, 0, 0, 0,126, 3, 1, 0, 0, 0, 8, 20, 35, 20, 8, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 7, 15,254, 30, 28, 28, 28,255, 28, 28, 28, 30,254, 15, 7, 3, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 10, 17, 10, 4, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 40, 68, 40, 16, 16, 16, 16, 16, 16, 31, 0, 0, 16, 40, 71, 40, 16, 0, 0, 31, 16, 16, 16, 16, 16, 16, 40, 68, 40, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
};
|
||||||
|
oled_write_raw_P(raw_logo, sizeof(raw_logo));
|
||||||
|
}
|
||||||
|
static void render_logo_font(void) {
|
||||||
|
static const char PROGMEM qmk_logo[] = {
|
||||||
|
0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xCB, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0xCB, 0xCB, 0xCB, 0x9C, 0x9D, 0xCB, 0xCB,
|
||||||
|
0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xCB, 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xCB, 0xCB, 0xBB, 0xBC, 0xBD, 0xBE, 0xCB,
|
||||||
|
0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xCB, 0x88, 0x89, 0x8A, 0x8B, 0x8A, 0x8B, 0x8C, 0x8D, 0xCB, 0xCB, 0xDB, 0xDC, 0xDD, 0xDE, 0xCB,
|
||||||
|
0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xCB, 0xA8, 0xA9, 0xAA, 0xAB, 0xAA, 0xAB, 0xAC, 0xAD, 0xCB, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF, 0x00
|
||||||
|
};
|
||||||
|
|
||||||
|
oled_write_P(qmk_logo, false);
|
||||||
|
}
|
||||||
|
/* Shows the name of the current layer and locks for the host (CAPS etc.) */
|
||||||
|
static void render_info(void) {
|
||||||
|
oled_write_P(PSTR("Layer: "), false);
|
||||||
|
|
||||||
|
switch (get_highest_layer(layer_state)) {
|
||||||
|
case _HOME:
|
||||||
|
oled_write_ln_P(PSTR("HOME"), false);
|
||||||
|
break;
|
||||||
|
case _MISC:
|
||||||
|
oled_write_ln_P(PSTR("MISC"), false);
|
||||||
|
break;
|
||||||
|
case _RGB:
|
||||||
|
oled_write_ln_P(PSTR("RGB"), false);
|
||||||
|
break;
|
||||||
|
case _BLED:
|
||||||
|
oled_write_ln_P(PSTR("Backlight"), false);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
oled_write_ln_P(PSTR("Undefined"), false);
|
||||||
|
}
|
||||||
|
led_t led_state = host_keyboard_led_state();
|
||||||
|
oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
|
||||||
|
oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
|
||||||
|
oled_write_ln_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
|
||||||
|
}
|
||||||
|
static void render_rgbled_status(bool) {
|
||||||
|
char string[4];
|
||||||
|
if (RGBLIGHT_MODES > 1 && rgblight_is_enabled() && get_highest_layer(layer_state) == _RGB) {
|
||||||
|
uint16_t m = rgblight_get_mode();
|
||||||
|
string[3] = '\0';
|
||||||
|
string[2] = '0' + m % 10;
|
||||||
|
string[1] = ( m /= 10) % 10 ? '0' + (m) % 10 : (m / 10) % 10 ? '0' : ' ';
|
||||||
|
string[0] = m / 10 ? '0' + m / 10 : ' ';
|
||||||
|
oled_write_P(PSTR("Conf:"), false);
|
||||||
|
oled_write(string, false);
|
||||||
|
uint16_t h = rgblight_get_hue()/RGBLIGHT_HUE_STEP;
|
||||||
|
string[3] = '\0';
|
||||||
|
string[2] = '0' + h % 10;
|
||||||
|
string[1] = ( h /= 10) % 10 ? '0' + (h) % 10 : (h / 10) % 10 ? '0' : ' ';
|
||||||
|
string[0] = h / 10 ? '0' + h / 10 : ' ';
|
||||||
|
oled_write_P(PSTR(","), false);
|
||||||
|
oled_write(string, false);
|
||||||
|
uint16_t s = rgblight_get_sat()/RGBLIGHT_SAT_STEP;
|
||||||
|
string[3] = '\0';
|
||||||
|
string[2] = '0' + s % 10;
|
||||||
|
string[1] = ( s /= 10) % 10 ? '0' + (s) % 10 : (s / 10) % 10 ? '0' : ' ';
|
||||||
|
string[0] = s / 10 ? '0' + s / 10 : ' ';
|
||||||
|
oled_write_P(PSTR(","), false);
|
||||||
|
oled_write(string, false);
|
||||||
|
uint16_t v = rgblight_get_val()/RGBLIGHT_VAL_STEP;
|
||||||
|
string[3] = '\0';
|
||||||
|
string[2] = '0' + v % 10;
|
||||||
|
string[1] = ( v /= 10) % 10 ? '0' + (v) % 10 : (v / 10) % 10 ? '0' : ' ';
|
||||||
|
string[0] = v / 10 ? '0' + v / 10 : ' ';
|
||||||
|
oled_write_P(PSTR(","), false);
|
||||||
|
oled_write(string, false);
|
||||||
|
oled_write_ln_P(PSTR("\n MOD HUE SAT VAR"), false);
|
||||||
|
} else {
|
||||||
|
oled_write_ln_P(PSTR("\n"), false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void oled_task_user(void) {
|
||||||
|
static bool finished_timer = false;
|
||||||
|
if (!finished_timer && (timer_elapsed(startup_timer) < 1000)) {
|
||||||
|
render_logo();
|
||||||
|
} else {
|
||||||
|
if (!finished_timer) {
|
||||||
|
oled_clear();
|
||||||
|
finished_timer = true;
|
||||||
|
}
|
||||||
|
render_info();
|
||||||
|
render_rgbled_status(true);
|
||||||
|
render_logo_font();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
File renamed without changes.
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
|
|||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
#include QMK_KEYBOARD_H
|
#include QMK_KEYBOARD_H
|
||||||
#include <stdio.h>
|
// clang-format off
|
||||||
|
|
||||||
enum layer_names {
|
enum layer_names {
|
||||||
_HOME,
|
_HOME,
|
||||||
_MISC,
|
_MISC,
|
||||||
@@ -46,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
BL_INC, BL_DEC, TO(0)
|
BL_INC, BL_DEC, TO(0)
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
// clang-format on
|
||||||
|
|
||||||
/* rotary encoder (SW3) - add more else if blocks for more granular layer control */
|
/* rotary encoder (SW3) - add more else if blocks for more granular layer control */
|
||||||
#ifdef ENCODER_ENABLE
|
#ifdef ENCODER_ENABLE
|
||||||
@@ -100,10 +99,10 @@ static void render_logo(void) {
|
|||||||
}
|
}
|
||||||
static void render_logo_font(void) {
|
static void render_logo_font(void) {
|
||||||
static const char PROGMEM qmk_logo[] = {
|
static const char PROGMEM qmk_logo[] = {
|
||||||
0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xCB, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0xCB, 0xCB, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9,
|
0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xC0, 0xC1, 0xC2, 0xC3, 0xC4,
|
||||||
0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xCB, 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xCB, 0xCB, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9,
|
0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xE0, 0xE1, 0xE2, 0xE3, 0xE4,
|
||||||
0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xCB, 0x88, 0x89, 0x8A, 0x8B, 0x8A, 0x8B, 0x8C, 0x8D, 0xCB, 0xCB, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5,
|
0x88, 0x89, 0x8A, 0x8B, 0x8A, 0x8B, 0x8C, 0x8D, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0,
|
||||||
0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xCB, 0xA8, 0xA9, 0xAA, 0xAB, 0xAA, 0xAB, 0xAC, 0xAD, 0xCB, 0xCB, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0x00
|
0xA8, 0xA9, 0xAA, 0xAB, 0xAA, 0xAB, 0xAC, 0xAD, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0x00
|
||||||
};
|
};
|
||||||
|
|
||||||
oled_write_P(qmk_logo, false);
|
oled_write_P(qmk_logo, false);
|
||||||
@@ -133,24 +132,41 @@ static void render_info(void) {
|
|||||||
oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
|
oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
|
||||||
oled_write_ln_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
|
oled_write_ln_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
|
||||||
}
|
}
|
||||||
static void render_rgbled_status(bool full) {
|
static void render_rgbled_status(bool) {
|
||||||
#ifdef RGBLIGHT_ENABLE
|
char string[4];
|
||||||
char buf[30];
|
if (RGBLIGHT_MODES > 1 && rgblight_is_enabled() && get_highest_layer(layer_state) == _RGB) {
|
||||||
if (RGBLIGHT_MODES > 1 && rgblight_is_enabled() && get_highest_layer(layer_state) == _RGB) {
|
uint16_t m = rgblight_get_mode();
|
||||||
if (full) {
|
string[3] = '\0';
|
||||||
snprintf(buf, sizeof(buf), "RGB mode %2d: %d,%d,%d \n",
|
string[2] = '0' + m % 10;
|
||||||
rgblight_get_mode(),
|
string[1] = ( m /= 10) % 10 ? '0' + (m) % 10 : (m / 10) % 10 ? '0' : ' ';
|
||||||
rgblight_get_hue()/RGBLIGHT_HUE_STEP,
|
string[0] = m / 10 ? '0' + m / 10 : ' ';
|
||||||
rgblight_get_sat()/RGBLIGHT_SAT_STEP,
|
oled_write_P(PSTR("Conf:"), false);
|
||||||
rgblight_get_val()/RGBLIGHT_VAL_STEP);
|
oled_write(string, false);
|
||||||
} else {
|
uint16_t h = rgblight_get_hue()/RGBLIGHT_HUE_STEP;
|
||||||
snprintf(buf, sizeof(buf), "[%2d] ", rgblight_get_mode());
|
string[3] = '\0';
|
||||||
}
|
string[2] = '0' + h % 10;
|
||||||
oled_write(buf, false);
|
string[1] = ( h /= 10) % 10 ? '0' + (h) % 10 : (h / 10) % 10 ? '0' : ' ';
|
||||||
} else {
|
string[0] = h / 10 ? '0' + h / 10 : ' ';
|
||||||
oled_write_ln_P(PSTR("\n"), false);
|
oled_write_P(PSTR(","), false);
|
||||||
}
|
oled_write(string, false);
|
||||||
#endif
|
uint16_t s = rgblight_get_sat()/RGBLIGHT_SAT_STEP;
|
||||||
|
string[3] = '\0';
|
||||||
|
string[2] = '0' + s % 10;
|
||||||
|
string[1] = ( s /= 10) % 10 ? '0' + (s) % 10 : (s / 10) % 10 ? '0' : ' ';
|
||||||
|
string[0] = s / 10 ? '0' + s / 10 : ' ';
|
||||||
|
oled_write_P(PSTR(","), false);
|
||||||
|
oled_write(string, false);
|
||||||
|
uint16_t v = rgblight_get_val()/RGBLIGHT_VAL_STEP;
|
||||||
|
string[3] = '\0';
|
||||||
|
string[2] = '0' + v % 10;
|
||||||
|
string[1] = ( v /= 10) % 10 ? '0' + (v) % 10 : (v / 10) % 10 ? '0' : ' ';
|
||||||
|
string[0] = v / 10 ? '0' + v / 10 : ' ';
|
||||||
|
oled_write_P(PSTR(","), false);
|
||||||
|
oled_write(string, false);
|
||||||
|
oled_write_ln_P(PSTR("\n MOD HUE SAT VAR"), false);
|
||||||
|
} else {
|
||||||
|
oled_write_ln_P(PSTR("\n"), false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
void oled_task_user(void) {
|
void oled_task_user(void) {
|
||||||
static bool finished_timer = false;
|
static bool finished_timer = false;
|
||||||
|
|||||||
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
|
|||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
#include QMK_KEYBOARD_H
|
#include QMK_KEYBOARD_H
|
||||||
#include <stdio.h>
|
// clang-format off
|
||||||
|
|
||||||
enum layer_names {
|
enum layer_names {
|
||||||
_HOME,
|
_HOME,
|
||||||
_MISC,
|
_MISC,
|
||||||
@@ -46,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
BL_INC, BL_DEC, TO(0)
|
BL_INC, BL_DEC, TO(0)
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
// clang-format on
|
||||||
|
|
||||||
/* rotary encoder (SW3) - add more else if blocks for more granular layer control */
|
/* rotary encoder (SW3) - add more else if blocks for more granular layer control */
|
||||||
#ifdef ENCODER_ENABLE
|
#ifdef ENCODER_ENABLE
|
||||||
@@ -100,10 +99,10 @@ static void render_logo(void) {
|
|||||||
}
|
}
|
||||||
static void render_logo_font(void) {
|
static void render_logo_font(void) {
|
||||||
static const char PROGMEM qmk_logo[] = {
|
static const char PROGMEM qmk_logo[] = {
|
||||||
0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xCB, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0xCB, 0xCB, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9,
|
0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xC0, 0xC1, 0xC2, 0xC3, 0xC4,
|
||||||
0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xCB, 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xCB, 0xCB, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9,
|
0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xE0, 0xE1, 0xE2, 0xE3, 0xE4,
|
||||||
0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xCB, 0x88, 0x89, 0x8A, 0x8B, 0x8A, 0x8B, 0x8C, 0x8D, 0xCB, 0xCB, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5,
|
0x88, 0x89, 0x8A, 0x8B, 0x8A, 0x8B, 0x8C, 0x8D, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0,
|
||||||
0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xCB, 0xA8, 0xA9, 0xAA, 0xAB, 0xAA, 0xAB, 0xAC, 0xAD, 0xCB, 0xCB, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0x00
|
0xA8, 0xA9, 0xAA, 0xAB, 0xAA, 0xAB, 0xAC, 0xAD, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0x00
|
||||||
};
|
};
|
||||||
|
|
||||||
oled_write_P(qmk_logo, false);
|
oled_write_P(qmk_logo, false);
|
||||||
@@ -133,24 +132,41 @@ static void render_info(void) {
|
|||||||
oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
|
oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
|
||||||
oled_write_ln_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
|
oled_write_ln_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
|
||||||
}
|
}
|
||||||
static void render_rgbled_status(bool full) {
|
static void render_rgbled_status(bool) {
|
||||||
#ifdef RGBLIGHT_ENABLE
|
char string[4];
|
||||||
char buf[30];
|
if (RGBLIGHT_MODES > 1 && rgblight_is_enabled() && get_highest_layer(layer_state) == _RGB) {
|
||||||
if (RGBLIGHT_MODES > 1 && rgblight_is_enabled() && get_highest_layer(layer_state) == _RGB) {
|
uint16_t m = rgblight_get_mode();
|
||||||
if (full) {
|
string[3] = '\0';
|
||||||
snprintf(buf, sizeof(buf), "RGB mode %2d: %d,%d,%d \n",
|
string[2] = '0' + m % 10;
|
||||||
rgblight_get_mode(),
|
string[1] = ( m /= 10) % 10 ? '0' + (m) % 10 : (m / 10) % 10 ? '0' : ' ';
|
||||||
rgblight_get_hue()/RGBLIGHT_HUE_STEP,
|
string[0] = m / 10 ? '0' + m / 10 : ' ';
|
||||||
rgblight_get_sat()/RGBLIGHT_SAT_STEP,
|
oled_write_P(PSTR("Conf:"), false);
|
||||||
rgblight_get_val()/RGBLIGHT_VAL_STEP);
|
oled_write(string, false);
|
||||||
} else {
|
uint16_t h = rgblight_get_hue()/RGBLIGHT_HUE_STEP;
|
||||||
snprintf(buf, sizeof(buf), "[%2d] ", rgblight_get_mode());
|
string[3] = '\0';
|
||||||
}
|
string[2] = '0' + h % 10;
|
||||||
oled_write(buf, false);
|
string[1] = ( h /= 10) % 10 ? '0' + (h) % 10 : (h / 10) % 10 ? '0' : ' ';
|
||||||
} else {
|
string[0] = h / 10 ? '0' + h / 10 : ' ';
|
||||||
oled_write_ln_P(PSTR("\n"), false);
|
oled_write_P(PSTR(","), false);
|
||||||
}
|
oled_write(string, false);
|
||||||
#endif
|
uint16_t s = rgblight_get_sat()/RGBLIGHT_SAT_STEP;
|
||||||
|
string[3] = '\0';
|
||||||
|
string[2] = '0' + s % 10;
|
||||||
|
string[1] = ( s /= 10) % 10 ? '0' + (s) % 10 : (s / 10) % 10 ? '0' : ' ';
|
||||||
|
string[0] = s / 10 ? '0' + s / 10 : ' ';
|
||||||
|
oled_write_P(PSTR(","), false);
|
||||||
|
oled_write(string, false);
|
||||||
|
uint16_t v = rgblight_get_val()/RGBLIGHT_VAL_STEP;
|
||||||
|
string[3] = '\0';
|
||||||
|
string[2] = '0' + v % 10;
|
||||||
|
string[1] = ( v /= 10) % 10 ? '0' + (v) % 10 : (v / 10) % 10 ? '0' : ' ';
|
||||||
|
string[0] = v / 10 ? '0' + v / 10 : ' ';
|
||||||
|
oled_write_P(PSTR(","), false);
|
||||||
|
oled_write(string, false);
|
||||||
|
oled_write_ln_P(PSTR("\n MOD HUE SAT VAR"), false);
|
||||||
|
} else {
|
||||||
|
oled_write_ln_P(PSTR("\n"), false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
void oled_task_user(void) {
|
void oled_task_user(void) {
|
||||||
static bool finished_timer = false;
|
static bool finished_timer = false;
|
||||||
|
|||||||
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
|
|||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
#include QMK_KEYBOARD_H
|
#include QMK_KEYBOARD_H
|
||||||
#include <stdio.h>
|
// clang-format off
|
||||||
|
|
||||||
enum layer_names {
|
enum layer_names {
|
||||||
_HOME,
|
_HOME,
|
||||||
_MISC,
|
_MISC,
|
||||||
@@ -46,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
BL_INC, BL_DEC, TO(0)
|
BL_INC, BL_DEC, TO(0)
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
// clang-format on
|
||||||
|
|
||||||
/* rotary encoder (SW3) - add more else if blocks for more granular layer control */
|
/* rotary encoder (SW3) - add more else if blocks for more granular layer control */
|
||||||
#ifdef ENCODER_ENABLE
|
#ifdef ENCODER_ENABLE
|
||||||
@@ -100,10 +99,10 @@ static void render_logo(void) {
|
|||||||
}
|
}
|
||||||
static void render_logo_font(void) {
|
static void render_logo_font(void) {
|
||||||
static const char PROGMEM qmk_logo[] = {
|
static const char PROGMEM qmk_logo[] = {
|
||||||
0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xCB, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0xCB, 0xCB, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9,
|
0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xC0, 0xC1, 0xC2, 0xC3, 0xC4,
|
||||||
0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xCB, 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xCB, 0xCB, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9,
|
0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xE0, 0xE1, 0xE2, 0xE3, 0xE4,
|
||||||
0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xCB, 0x88, 0x89, 0x8A, 0x8B, 0x8A, 0x8B, 0x8C, 0x8D, 0xCB, 0xCB, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5,
|
0x88, 0x89, 0x8A, 0x8B, 0x8A, 0x8B, 0x8C, 0x8D, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0,
|
||||||
0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xCB, 0xA8, 0xA9, 0xAA, 0xAB, 0xAA, 0xAB, 0xAC, 0xAD, 0xCB, 0xCB, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0x00
|
0xA8, 0xA9, 0xAA, 0xAB, 0xAA, 0xAB, 0xAC, 0xAD, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0x00
|
||||||
};
|
};
|
||||||
|
|
||||||
oled_write_P(qmk_logo, false);
|
oled_write_P(qmk_logo, false);
|
||||||
@@ -133,24 +132,41 @@ static void render_info(void) {
|
|||||||
oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
|
oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
|
||||||
oled_write_ln_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
|
oled_write_ln_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
|
||||||
}
|
}
|
||||||
static void render_rgbled_status(bool full) {
|
static void render_rgbled_status(void) {
|
||||||
#ifdef RGBLIGHT_ENABLE
|
char string[4];
|
||||||
char buf[30];
|
if (RGBLIGHT_MODES > 1 && rgblight_is_enabled() && get_highest_layer(layer_state) == _RGB) {
|
||||||
if (RGBLIGHT_MODES > 1 && rgblight_is_enabled() && get_highest_layer(layer_state) == _RGB) {
|
uint16_t m = rgblight_get_mode();
|
||||||
if (full) {
|
string[3] = '\0';
|
||||||
snprintf(buf, sizeof(buf), "RGB mode %2d: %d,%d,%d \n",
|
string[2] = '0' + m % 10;
|
||||||
rgblight_get_mode(),
|
string[1] = ( m /= 10) % 10 ? '0' + (m) % 10 : (m / 10) % 10 ? '0' : ' ';
|
||||||
rgblight_get_hue()/RGBLIGHT_HUE_STEP,
|
string[0] = m / 10 ? '0' + m / 10 : ' ';
|
||||||
rgblight_get_sat()/RGBLIGHT_SAT_STEP,
|
oled_write_P(PSTR("Conf:"), false);
|
||||||
rgblight_get_val()/RGBLIGHT_VAL_STEP);
|
oled_write(string, false);
|
||||||
} else {
|
uint16_t h = rgblight_get_hue()/RGBLIGHT_HUE_STEP;
|
||||||
snprintf(buf, sizeof(buf), "[%2d] ", rgblight_get_mode());
|
string[3] = '\0';
|
||||||
}
|
string[2] = '0' + h % 10;
|
||||||
oled_write(buf, false);
|
string[1] = ( h /= 10) % 10 ? '0' + (h) % 10 : (h / 10) % 10 ? '0' : ' ';
|
||||||
} else {
|
string[0] = h / 10 ? '0' + h / 10 : ' ';
|
||||||
oled_write_ln_P(PSTR("\n"), false);
|
oled_write_P(PSTR(","), false);
|
||||||
}
|
oled_write(string, false);
|
||||||
#endif
|
uint16_t s = rgblight_get_sat()/RGBLIGHT_SAT_STEP;
|
||||||
|
string[3] = '\0';
|
||||||
|
string[2] = '0' + s % 10;
|
||||||
|
string[1] = ( s /= 10) % 10 ? '0' + (s) % 10 : (s / 10) % 10 ? '0' : ' ';
|
||||||
|
string[0] = s / 10 ? '0' + s / 10 : ' ';
|
||||||
|
oled_write_P(PSTR(","), false);
|
||||||
|
oled_write(string, false);
|
||||||
|
uint16_t v = rgblight_get_val()/RGBLIGHT_VAL_STEP;
|
||||||
|
string[3] = '\0';
|
||||||
|
string[2] = '0' + v % 10;
|
||||||
|
string[1] = ( v /= 10) % 10 ? '0' + (v) % 10 : (v / 10) % 10 ? '0' : ' ';
|
||||||
|
string[0] = v / 10 ? '0' + v / 10 : ' ';
|
||||||
|
oled_write_P(PSTR(","), false);
|
||||||
|
oled_write(string, false);
|
||||||
|
oled_write_ln_P(PSTR("\n MOD HUE SAT VAR"), false);
|
||||||
|
} else {
|
||||||
|
oled_write_ln_P(PSTR("\n"), false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
void oled_task_user(void) {
|
void oled_task_user(void) {
|
||||||
static bool finished_timer = false;
|
static bool finished_timer = false;
|
||||||
@@ -162,7 +178,7 @@ void oled_task_user(void) {
|
|||||||
finished_timer = true;
|
finished_timer = true;
|
||||||
}
|
}
|
||||||
render_info();
|
render_info();
|
||||||
render_rgbled_status(true);
|
render_rgbled_status();
|
||||||
render_logo_font();
|
render_logo_font();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,16 +3,16 @@
|
|||||||
Macro keypad
|
Macro keypad
|
||||||
|
|
||||||
* Keyboard Maintainer: [Conor Burns](https://github.com/conor-burns)
|
* Keyboard Maintainer: [Conor Burns](https://github.com/conor-burns)
|
||||||
* Hardware Supported: https://github.com/conor-burns/0xcb-1337
|
* Hardware Supported: https://github.com/0xcb-dev/0xcb-1337
|
||||||
* Hardware Availability: Soon on tindie or order your own parts - the hardware in the repo is Open Source :D
|
* Hardware Availability: On [tindie](https://www.tindie.com/products/0xcb/0xcb-1337-a-customizable-macro-keyboard-with-qmk/) or order your own parts - the hardware in the repo is Open Source :D
|
||||||
* PCB renders :)
|
* PCB renders :)
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
More Pictures [here](https://0xcb.dev/1337/)
|
||||||
To go to bootloader press row 0 col 0 key (top left) while plugging in the board.
|
To go to bootloader press row 0 col 0 key (top left) while plugging in the board. (Or press the reset button on V2.0 and v3.0)
|
||||||
|
|
||||||
Make example for this keyboard (after setting up your build environment):
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
|||||||
@@ -4,8 +4,11 @@
|
|||||||
"maintainer": "Conor-Burns",
|
"maintainer": "Conor-Burns",
|
||||||
"width": 12,
|
"width": 12,
|
||||||
"height": 5,
|
"height": 5,
|
||||||
|
"layout_aliases": {
|
||||||
|
"LAYOUT": "LAYOUT_all"
|
||||||
|
},
|
||||||
"layouts": {
|
"layouts": {
|
||||||
"LAYOUT": {
|
"LAYOUT_all": {
|
||||||
"layout": [
|
"layout": [
|
||||||
{"x":11, "y":0},
|
{"x":11, "y":0},
|
||||||
{"x":0, "y":1},
|
{"x":0, "y":1},
|
||||||
|
|||||||
@@ -23,28 +23,28 @@ enum layer_names {
|
|||||||
_FN4
|
_FN4
|
||||||
};
|
};
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
[_HOME] = LAYOUT(
|
[_HOME] = LAYOUT_all(
|
||||||
KC_MPLY,
|
KC_MPLY,
|
||||||
KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
KC_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_ENT,
|
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT,
|
||||||
KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSPC,
|
KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSPC,
|
||||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), MO(2)
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), MO(2)
|
||||||
),
|
),
|
||||||
[_FN2] = LAYOUT(
|
[_FN2] = LAYOUT_all(
|
||||||
RESET,
|
RESET,
|
||||||
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_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL,
|
||||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
|
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______
|
_______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
),
|
),
|
||||||
[_FN3] = LAYOUT(
|
[_FN3] = LAYOUT_all(
|
||||||
EEP_RST,
|
EEP_RST,
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, KC_BSLS,
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, KC_SCLN, KC_QUOT, _______,
|
_______, _______, _______, _______, _______, _______, _______, _______, KC_SCLN, KC_QUOT, _______,
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_SLSH,
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_SLSH,
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______
|
_______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
),
|
),
|
||||||
[_FN4] = LAYOUT(
|
[_FN4] = LAYOUT_all(
|
||||||
_______,
|
_______,
|
||||||
_______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPRV, KC_MNXT, KC_MSTP, KC_INS, KC_HOME, KC_DEL, KC_END, _______,
|
_______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPRV, KC_MNXT, KC_MSTP, KC_INS, KC_HOME, KC_DEL, KC_END, _______,
|
||||||
_______, _______, KC_BRID, KC_BRIU, _______, _______, _______, KC_PGUP, KC_UP, KC_PGDN, _______,
|
_______, _______, KC_BRID, KC_BRIU, _______, _______, _______, KC_PGUP, KC_UP, KC_PGDN, _______,
|
||||||
|
|||||||
@@ -23,28 +23,28 @@ enum layer_names {
|
|||||||
_FN4
|
_FN4
|
||||||
};
|
};
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
[_HOME] = LAYOUT(
|
[_HOME] = LAYOUT_all(
|
||||||
KC_MPLY,
|
KC_MPLY,
|
||||||
KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
KC_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_ENT,
|
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT,
|
||||||
KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSPC,
|
KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSPC,
|
||||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), MO(2)
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), MO(2)
|
||||||
),
|
),
|
||||||
[_FN2] = LAYOUT(
|
[_FN2] = LAYOUT_all(
|
||||||
RESET,
|
RESET,
|
||||||
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_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL,
|
||||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
|
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______
|
_______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
),
|
),
|
||||||
[_FN3] = LAYOUT(
|
[_FN3] = LAYOUT_all(
|
||||||
EEP_RST,
|
EEP_RST,
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, KC_BSLS,
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, KC_SCLN, KC_QUOT, _______,
|
_______, _______, _______, _______, _______, _______, _______, _______, KC_SCLN, KC_QUOT, _______,
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_SLSH,
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_SLSH,
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______
|
_______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
),
|
),
|
||||||
[_FN4] = LAYOUT(
|
[_FN4] = LAYOUT_all(
|
||||||
_______,
|
_______,
|
||||||
_______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPRV, KC_MNXT, KC_MSTP, KC_INS, KC_HOME, KC_DEL, KC_END, _______,
|
_______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPRV, KC_MNXT, KC_MSTP, KC_INS, KC_HOME, KC_DEL, KC_END, _______,
|
||||||
_______, _______, KC_BRID, KC_BRIU, _______, _______, _______, KC_PGUP, KC_UP, KC_PGDN, _______,
|
_______, _______, KC_BRID, KC_BRIU, _______, _______, _______, KC_PGUP, KC_UP, KC_PGDN, _______,
|
||||||
|
|||||||
@@ -28,21 +28,39 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
// clang-format off
|
// clang-format off
|
||||||
#define LAYOUT( \
|
#define LAYOUT_all( \
|
||||||
K15, \
|
K15, \
|
||||||
K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K35, \
|
K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K35, \
|
||||||
K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, \
|
K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, \
|
||||||
K40, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, \
|
K40, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, \
|
||||||
K60, K70, K61, K71, K72, K64, K74, K65, K75 \
|
K60, K70, K61, K71, K72, K64, K74, K65, K75 \
|
||||||
) \
|
) \
|
||||||
{ \
|
{ \
|
||||||
{ K00, K01, K02, K03, K04, K05 }, \
|
{ K00, K01, K02, K03, K04, K05 }, \
|
||||||
{ K10, K11, K12, K13, K14, K15 }, \
|
{ K10, K11, K12, K13, K14, K15 }, \
|
||||||
{ K20, K21, K22, K23, K24, K25 }, \
|
{ K20, K21, K22, K23, K24, K25 }, \
|
||||||
{ K30, K31, K32, K33, K34, K35 }, \
|
{ K30, K31, K32, K33, K34, K35 }, \
|
||||||
{ K40, K41, K42, K43, K44, K45 }, \
|
{ K40, K41, K42, K43, K44, K45 }, \
|
||||||
{ KC_NO, K51, K52, K53, K54, K55 }, \
|
{ KC_NO, K51, K52, K53, K54, K55 }, \
|
||||||
{ K60, K61, KC_NO, KC_NO, K64, K65 }, \
|
{ K60, K61, KC_NO, KC_NO, K64, K65 }, \
|
||||||
{ K70, K71, K72, KC_NO, K74, K75 }, \
|
{ K70, K71, K72, KC_NO, K74, K75 }, \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_bigbar( \
|
||||||
|
K15, \
|
||||||
|
K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K35, \
|
||||||
|
K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, \
|
||||||
|
K40, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, \
|
||||||
|
K60, K70, K61, K72, K65, K75 \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{ K00, K01, K02, K03, K04, K05 }, \
|
||||||
|
{ K10, K11, K12, K13, K14, K15 }, \
|
||||||
|
{ K20, K21, K22, K23, K24, K25 }, \
|
||||||
|
{ K30, K31, K32, K33, K34, K35 }, \
|
||||||
|
{ K40, K41, K42, K43, K44, K45 }, \
|
||||||
|
{ KC_NO, K51, K52, K53, K54, K55 }, \
|
||||||
|
{ K60, K61, KC_NO, KC_NO, KC_NO, K65 }, \
|
||||||
|
{ K70, KC_NO, K72, KC_NO, KC_NO, K75 }, \
|
||||||
|
}
|
||||||
// clang-format on
|
// clang-format on
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"keyboard_name": "40percent.club 4x4",
|
"keyboard_name": "40percent.club 5x5",
|
||||||
"url": "",
|
"url": "",
|
||||||
"maintainer": "qmk",
|
"maintainer": "qmk",
|
||||||
"height": 4,
|
"height": 4,
|
||||||
|
|||||||
@@ -32,3 +32,5 @@ AUDIO_ENABLE = no # Audio output on port C6
|
|||||||
|
|
||||||
# Enable generic behavior for split boards
|
# Enable generic behavior for split boards
|
||||||
SPLIT_KEYBOARD = yes
|
SPLIT_KEYBOARD = yes
|
||||||
|
|
||||||
|
LAYOUTS = ortho_2x3 ortho_2x6
|
||||||
@@ -5,7 +5,7 @@
|
|||||||
"width": 3,
|
"width": 3,
|
||||||
"height": 3,
|
"height": 3,
|
||||||
"layouts": {
|
"layouts": {
|
||||||
"LAYOUT": {
|
"LAYOUT_ortho_3x3": {
|
||||||
"layout": [
|
"layout": [
|
||||||
{"x":0, "y":0},
|
{"x":0, "y":0},
|
||||||
{"x":1, "y":0},
|
{"x":1, "y":0},
|
||||||
|
|||||||
@@ -40,7 +40,7 @@
|
|||||||
{ K00, K01, K02, K03, K04, K05, K06, K07, ___, ___, ___, ___ }, \
|
{ K00, K01, K02, K03, K04, K05, K06, K07, ___, ___, ___, ___ }, \
|
||||||
{ K10, K11, K12, K13, K14, K15, K16, K17, ___, ___, ___, ___ }, \
|
{ K10, K11, K12, K13, K14, K15, K16, K17, ___, ___, ___, ___ }, \
|
||||||
{ K20, K21, K22, K23, K24, K25, K26, K27, ___, ___, ___, ___ }, \
|
{ K20, K21, K22, K23, K24, K25, K26, K27, ___, ___, ___, ___ }, \
|
||||||
{ K30, K31, K32, K33, K34, K35, K35, K37, ___, ___, ___, ___ } \
|
{ K30, K31, K32, K33, K34, K35, K36, K37, ___, ___, ___, ___ } \
|
||||||
}
|
}
|
||||||
#define LAYOUT_ortho_4x12( \
|
#define LAYOUT_ortho_4x12( \
|
||||||
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0a, K0b, \
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0a, K0b, \
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ UNICODE_ENABLE = no # Unicode
|
|||||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
AUDIO_ENABLE = no # Audio output on port C6
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
|
|
||||||
LAYOUTS = ortho_4x4 ortho_4x8 ortho_4x12
|
LAYOUTS = ortho_4x4 ortho_4x12
|
||||||
|
|
||||||
# Disable unsupported hardware
|
# Disable unsupported hardware
|
||||||
AUDIO_SUPPORTED = no
|
AUDIO_SUPPORTED = no
|
||||||
@@ -40,8 +40,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
// #define MATRIX_ROW_PINS { B0 } // B0 equivalents the ground pin
|
|
||||||
// #define MATRIX_COL_PINS { E6, D7, C6, D4 }
|
|
||||||
#define DIRECT_PINS { \
|
#define DIRECT_PINS { \
|
||||||
{ D4, C6, D7 }, \
|
{ D4, C6, D7 }, \
|
||||||
{ E6, B4, B5 } \
|
{ E6, B4, B5 } \
|
||||||
@@ -56,6 +54,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#define BACKLIGHT_LEVELS 6
|
#define BACKLIGHT_LEVELS 6
|
||||||
#define BACKLIGHT_PINS { F4, F5 } // Top Row, Bottom Row
|
#define BACKLIGHT_PINS { F4, F5 } // Top Row, Bottom Row
|
||||||
|
|
||||||
|
/* LED Indicators */
|
||||||
|
#define LED_PIN_ON_STATE 0
|
||||||
|
#define LED_CAPS_LOCK_PIN B0 // RX Led
|
||||||
|
#define LED_NUM_LOCK_PIN D5 // TX Led
|
||||||
|
|
||||||
// #define RGB_DI_PIN B1 // PB1 on expansion connector
|
// #define RGB_DI_PIN B1 // PB1 on expansion connector
|
||||||
// #ifdef RGB_DI_PIN
|
// #ifdef RGB_DI_PIN
|
||||||
// #define RGBLED_NUM 16
|
// #define RGBLED_NUM 16
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"keyboard_name": "sixpack",
|
"keyboard_name": "Six Pack",
|
||||||
"url": "https://www.40percent.club/2017/05/six-pack-11.html",
|
"url": "https://www.40percent.club/2017/05/six-pack-11.html",
|
||||||
"maintainer": "qmk",
|
"maintainer": "qmk",
|
||||||
"width": 3,
|
"width": 3,
|
||||||
|
|||||||
@@ -33,9 +33,5 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
KC_TRNS, KC_TRNS, KC_TRNS),
|
KC_TRNS, KC_TRNS, KC_TRNS),
|
||||||
[3] = LAYOUT_ortho_2x3(KC_TRNS, KC_TRNS, KC_TRNS,
|
[3] = LAYOUT_ortho_2x3(KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS),
|
KC_TRNS, KC_TRNS, KC_TRNS),
|
||||||
[4] = LAYOUT_ortho_2x3(KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS),
|
|
||||||
[5] = LAYOUT_ortho_2x3(KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS),
|
|
||||||
|
|
||||||
};
|
};
|
||||||
@@ -20,3 +20,5 @@ BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
|||||||
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||||
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||||
AUDIO_ENABLE = no # Audio output
|
AUDIO_ENABLE = no # Audio output
|
||||||
|
|
||||||
|
LAYOUTS = ortho_2x3
|
||||||
@@ -48,7 +48,8 @@
|
|||||||
{ "label": "L", "x": 9.75, "y": 2 },
|
{ "label": "L", "x": 9.75, "y": 2 },
|
||||||
{ "label": ":", "x": 10.75, "y": 2 },
|
{ "label": ":", "x": 10.75, "y": 2 },
|
||||||
{ "label": "\"", "x": 11.75, "y": 2 },
|
{ "label": "\"", "x": 11.75, "y": 2 },
|
||||||
{ "label": "Enter", "x": 12.75, "y": 2, "w": 2.25 },
|
{ "label": "~", "x": 12.75, "y": 2},
|
||||||
|
{ "label": "Enter", "x": 13.75, "y": 2, "w": 1.25 },
|
||||||
{ "label": "Shift", "x": 0, "y": 3, "w": 1.25 },
|
{ "label": "Shift", "x": 0, "y": 3, "w": 1.25 },
|
||||||
{ "label": "|", "x": 1.25, "y": 3 },
|
{ "label": "|", "x": 1.25, "y": 3 },
|
||||||
{ "label": "Z", "x": 2.25, "y": 3 },
|
{ "label": "Z", "x": 2.25, "y": 3 },
|
||||||
|
|||||||
@@ -1,3 +1,19 @@
|
|||||||
|
/* Copyright 2021 Jonathan Rascher
|
||||||
|
*
|
||||||
|
* 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
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
enum layer {
|
enum layer {
|
||||||
@@ -6,18 +22,19 @@ enum layer {
|
|||||||
};
|
};
|
||||||
|
|
||||||
#define LY_FUNC MO(LAYER_FUNCTION)
|
#define LY_FUNC MO(LAYER_FUNCTION)
|
||||||
#define KY_LOCK LCA(KC_L) /* Cinnamon lock screen */
|
#define KY_LOCK LCA(KC_L) /* Cinnamon lock screen */
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
// clang-format off
|
||||||
[LAYER_DEFAULT] = LAYOUT(
|
[LAYER_DEFAULT] = LAYOUT(
|
||||||
KC_MPLY, KC_VOLU, KC_MSTP,
|
KC_MPLY, KC_VOLU, KC_MSTP,
|
||||||
KC_MPRV, KC_VOLD, KC_MNXT,
|
KC_MPRV, KC_VOLD, KC_MNXT,
|
||||||
KY_LOCK, KC_MUTE, LY_FUNC
|
KY_LOCK, KC_MUTE, LY_FUNC
|
||||||
),
|
),
|
||||||
|
|
||||||
[LAYER_FUNCTION] = LAYOUT(
|
[LAYER_FUNCTION] = LAYOUT(
|
||||||
EEP_RST, _______, RESET,
|
EEP_RST, _______, RESET,
|
||||||
_______, _______, _______,
|
_______, _______, _______,
|
||||||
_______, _______, _______
|
_______, _______, _______
|
||||||
),
|
),
|
||||||
|
// clang-format on
|
||||||
};
|
};
|
||||||
@@ -0,0 +1,70 @@
|
|||||||
|
/* Copyright 2021 alittlepeace
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[0] = LAYOUT_default(
|
||||||
|
KC_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_BSLS, KC_GRV, KC_INS, KC_HOME, KC_PGUP,
|
||||||
|
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_BSPC, KC_DEL, KC_END, KC_PGDN,
|
||||||
|
KC_LCTL, 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_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT),
|
||||||
|
|
||||||
|
[1] = LAYOUT_default(
|
||||||
|
_______, 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_SLCK, KC_PAUS,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
|
||||||
|
|
||||||
|
[2] = LAYOUT_default(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
|
||||||
|
|
||||||
|
[3] = LAYOUT_default(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
bool encoder_update_user(uint8_t index, bool clockwise) {
|
||||||
|
if (index == 0) { /* First encoder */
|
||||||
|
switch(get_highest_layer(layer_state)){
|
||||||
|
case 1:
|
||||||
|
if (clockwise){
|
||||||
|
tap_code(KC_VOLU);
|
||||||
|
} else{
|
||||||
|
tap_code(KC_VOLD);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if (clockwise) {
|
||||||
|
tap_code(KC_WH_D);
|
||||||
|
} else {
|
||||||
|
tap_code(KC_WH_U);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
VIA_ENABLE = yes
|
||||||
|
MOUSEKEY_ENABLE = yes
|
||||||
+16
-27
@@ -1,28 +1,17 @@
|
|||||||
|
/* Copyright 2017 Ryan Mitchell (@newtmitch)
|
||||||
|
*
|
||||||
|
* 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 "acr60.h"
|
#include "acr60.h"
|
||||||
#include "led.h"
|
|
||||||
|
|
||||||
void matrix_init_kb(void) {
|
|
||||||
// Keyboard start-up code goes here
|
|
||||||
// Runs once when the firmware starts up
|
|
||||||
matrix_init_user();
|
|
||||||
led_init_ports();
|
|
||||||
};
|
|
||||||
|
|
||||||
void matrix_scan_kb(void) {
|
|
||||||
// Looping keyboard code goes here
|
|
||||||
// This runs every cycle (a lot)
|
|
||||||
matrix_scan_user();
|
|
||||||
};
|
|
||||||
|
|
||||||
void led_init_ports(void) {
|
|
||||||
// Set caps lock LED pin as output
|
|
||||||
DDRB |= (1 << 2);
|
|
||||||
// Default to off
|
|
||||||
PORTB |= (1 << 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
void led_set_kb(uint8_t usb_led) {
|
|
||||||
// Code for caps lock LED as reported by the OS
|
|
||||||
// Set this per keymap, instead of globally
|
|
||||||
led_set_user(usb_led);
|
|
||||||
}
|
|
||||||
+95
-80
@@ -1,76 +1,93 @@
|
|||||||
#ifndef ARC60_H
|
/* Copyright 2017 Ryan Mitchell (@newtmitch)
|
||||||
#define ARC60_H
|
*
|
||||||
|
* 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"
|
#include "quantum.h"
|
||||||
|
|
||||||
#define LAYOUT( \
|
#define ___ KC_NO
|
||||||
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \
|
|
||||||
K100, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \
|
#define LAYOUT_all( \
|
||||||
K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, \
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
|
||||||
K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, \
|
K10, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
|
||||||
K400, K401, K403, K404, K406, K408, K410, K411, K412, K413, K414 \
|
K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \
|
||||||
|
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
|
||||||
|
K40, K41, K43, K44, K46, K48, K4A, K4B, K4C, K4D, K4E \
|
||||||
) { \
|
) { \
|
||||||
{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
|
||||||
{ K100, KC_NO, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \
|
{ K10, ___, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
|
||||||
{ K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, KC_NO }, \
|
{ K20, ___, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, ___ }, \
|
||||||
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, K314 }, \
|
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
|
||||||
{ K400, K401, KC_NO, K403, K404, KC_NO, K406, KC_NO, K408, KC_NO, K410, K411, K412, K413, K414 } \
|
{ K40, K41, ___, K43, K44, ___, K46, ___, K48, ___, K4A, K4B, K4C, K4D, K4E } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT( \
|
||||||
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
|
||||||
|
K10, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
|
||||||
|
K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \
|
||||||
|
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, \
|
||||||
|
K40, K41, K43, K44, K46, K48, K4A, K4B, K4C, K4D, K4E \
|
||||||
|
) { \
|
||||||
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
|
||||||
|
{ K10, ___, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
|
||||||
|
{ K20, ___, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, ___ }, \
|
||||||
|
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, K3D, K3E }, \
|
||||||
|
{ K40, K41, ___, K43, K44, ___, K46, ___, K48, ___, K4A, K4B, K4C, K4D, K4E } \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define LAYOUT_hhkb( \
|
#define LAYOUT_hhkb( \
|
||||||
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
|
||||||
K100, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \
|
K10, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
|
||||||
K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, \
|
K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \
|
||||||
K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, \
|
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, \
|
||||||
K401, K403, K406, K411, K413 \
|
K41, K43, K46, K4B, K4D \
|
||||||
) { \
|
) { \
|
||||||
{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
|
||||||
{ K100, KC_NO, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \
|
{ K10, ___, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
|
||||||
{ K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, KC_NO }, \
|
{ K20, ___, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, ___ }, \
|
||||||
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, K314 }, \
|
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, K3D, K3E }, \
|
||||||
{ KC_NO, K401, KC_NO, K403, KC_NO, KC_NO, K406, KC_NO, KC_NO, KC_NO, KC_NO, K411, KC_NO, K413, KC_NO } \
|
{ ___, K41, ___, K43, ___, ___, K46, ___, ___, ___, ___, K4B, ___, K4D, ___ } \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define LAYOUT_true_hhkb( \
|
#define LAYOUT_true_hhkb( \
|
||||||
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
|
||||||
K100, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \
|
K10, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
|
||||||
K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, \
|
K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \
|
||||||
K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, \
|
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, \
|
||||||
K401, K403, K406, K410, K411 \
|
K41, K43, K46, K4A, K4B \
|
||||||
) { \
|
) { \
|
||||||
{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
|
||||||
{ K100, KC_NO, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \
|
{ K10, ___, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
|
||||||
{ K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, KC_NO }, \
|
{ K20, ___, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, ___ }, \
|
||||||
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, K314 }, \
|
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, K3D, K3E }, \
|
||||||
{ KC_NO, K401, KC_NO, K403, KC_NO, KC_NO, K406, KC_NO, KC_NO, KC_NO, K410, K411, KC_NO, KC_NO, KC_NO } \
|
{ ___, K41, ___, K43, ___, ___, K46, ___, ___, ___, K4A, K4B, ___, ___, ___ } \
|
||||||
}
|
|
||||||
|
|
||||||
#define LAYOUT_2_shifts( \
|
|
||||||
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \
|
|
||||||
K100, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \
|
|
||||||
K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, \
|
|
||||||
K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, \
|
|
||||||
K400, K401, K403, K404, K406, K408, K410, K411, K412, K413, K414 \
|
|
||||||
) { \
|
|
||||||
{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \
|
|
||||||
{ K100, KC_NO, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \
|
|
||||||
{ K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, KC_NO }, \
|
|
||||||
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314 }, \
|
|
||||||
{ K400, K401, KC_NO, K403, K404, KC_NO, K406, KC_NO, K408, KC_NO, K410, K411, K412, K413, K414 } \
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#define LAYOUT_directional( \
|
#define LAYOUT_directional( \
|
||||||
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
|
||||||
K100, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \
|
K10, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
|
||||||
K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, \
|
K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \
|
||||||
K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K312, K313, K314, \
|
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3C, K3D, K3E, \
|
||||||
K400, K401, K403, K404, K406, K408, K410, K411, K412, K413, K414 \
|
K40, K41, K43, K44, K46, K48, K4A, K4B, K4C, K4D, K4E \
|
||||||
) { \
|
) { \
|
||||||
{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
|
||||||
{ K100, KC_NO, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \
|
{ K10, ___, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
|
||||||
{ K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, KC_NO }, \
|
{ K20, ___, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, ___ }, \
|
||||||
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, KC_NO, K312, K313, K314 }, \
|
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, ___, K3C, K3D, K3E }, \
|
||||||
{ K400, K401, KC_NO, K403, K404, KC_NO, K406, KC_NO, K408, KC_NO, K410, K411, K412, K413, K414 } \
|
{ K40, K41, ___, K43, K44, ___, K46, ___, K48, ___, K4A, K4B, K4C, K4D, K4E } \
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Mitch's keymap, "MitchSplit":
|
/* Mitch's keymap, "MitchSplit":
|
||||||
@@ -78,30 +95,28 @@
|
|||||||
* Split shift is 2.75u + 1.25u + 2.25u (total of 6.25u). Might not work with other orientations.
|
* Split shift is 2.75u + 1.25u + 2.25u (total of 6.25u). Might not work with other orientations.
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* ,-----------------------------------------------------------------------------------------.
|
* ,-----------------------------------------------------------.
|
||||||
* |K000 |K001 |K002 |K003 |K004 |K005 |K006 |K007 |K008 |K009 |K010 |K011 |K012 | K014 |
|
* |00 |01 |02 |03 |04 |05 |06 |07 |08 |09 |0A |0B |0C |0E |
|
||||||
* |-----------------------------------------------------------------------------------------+
|
* |-----------------------------------------------------------|
|
||||||
* | K100 |K102 |K103 |K104 |K105 |K106 |K107 |K108 |K109 |K110 |K111 |K112 |K113 | K114 |
|
* |10 |12 |13 |14 |15 |16 |17 |18 |19 |1A |1B |1C |1D |1E |
|
||||||
* |-----------------------------------------------------------------------------------------+
|
* |-----------------------------------------------------------|
|
||||||
* | K200 |K202 |K203 |K204 |K205 |K206 |K207 |K208 |K209 |K210 |K211 |K212 | K213 |
|
* |20 |22 |23 |24 |25 |26 |27 |28 |29 |2A |2B |2C |2D |
|
||||||
* |-----------------------------------------------------------------------------------------+
|
* |-----------------------------------------------------------|
|
||||||
* | K300 |K302 |K303 |K304 |K305 |K306 |K307 |K308 |K309 |K310 |K311 | K313 |K314 |
|
* |30 |32 |33 |34 |35 |36 |37 |38 |39 |3A |3B |3D |3E |
|
||||||
* |-----------------------------------------------------------------------------------------+
|
* |-----------------------------------------------------------|
|
||||||
* | K400 | K401 | K403 | K404 | K406 | K408 | K410 | K411 | K413 | K414 |
|
* |40 |41 |43 |44 |46 |48 |4A |4B |4D |4E |
|
||||||
* `-----------------------------------------------------------------------------------------'
|
* `-----------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
#define LAYOUT_mitchsplit( \
|
#define LAYOUT_mitchsplit( \
|
||||||
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, \
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, \
|
||||||
K100, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \
|
K10, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
|
||||||
K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, \
|
K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \
|
||||||
K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, \
|
K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, \
|
||||||
K400, K401, K403, K404, K406, K408, K410, K411, K413, K414 \
|
K40, K41, K43, K44, K46, K48, K4A, K4B, K4D, K4E \
|
||||||
) { \
|
) { \
|
||||||
{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, KC_NO, K014 }, \
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, ___, K0E }, \
|
||||||
{ K100, KC_NO, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \
|
{ K10, ___, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
|
||||||
{ K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, KC_NO }, \
|
{ K20, ___, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, ___ }, \
|
||||||
{ K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, K314 }, \
|
{ K30, ___, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, K3D, K3E }, \
|
||||||
{ K400, K401, KC_NO, K403, K404, KC_NO, K406, KC_NO, K408, KC_NO, K410, K411, KC_NO, K413, K414 } \
|
{ K40, K41, ___, K43, K44, ___, K46, ___, K48, ___, K4A, K4B, ___, K4D, K4E } \
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -1,5 +1,20 @@
|
|||||||
#ifndef CONFIG_H
|
/* Copyright 2017 Ryan Mitchell (@newtmitch)
|
||||||
#define CONFIG_H
|
*
|
||||||
|
* 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 "config_common.h"
|
#include "config_common.h"
|
||||||
|
|
||||||
@@ -22,6 +37,9 @@
|
|||||||
/* COL2ROW or ROW2COL */
|
/* COL2ROW or ROW2COL */
|
||||||
#define DIODE_DIRECTION COL2ROW
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
#define LED_CAPS_LOCK_PIN B2
|
||||||
|
#define LED_PIN_ON_STATE 0
|
||||||
|
|
||||||
/* number of backlight levels */
|
/* number of backlight levels */
|
||||||
#define BACKLIGHT_PIN B6
|
#define BACKLIGHT_PIN B6
|
||||||
#define BACKLIGHT_LEVELS 5
|
#define BACKLIGHT_LEVELS 5
|
||||||
@@ -41,5 +59,3 @@
|
|||||||
#define RGBLIGHT_HUE_STEP 8
|
#define RGBLIGHT_HUE_STEP 8
|
||||||
#define RGBLIGHT_SAT_STEP 8
|
#define RGBLIGHT_SAT_STEP 8
|
||||||
#define RGBLIGHT_VAL_STEP 8
|
#define RGBLIGHT_VAL_STEP 8
|
||||||
|
|
||||||
#endif
|
|
||||||
+444
-29
@@ -1,33 +1,448 @@
|
|||||||
{
|
{
|
||||||
"keyboard_name": "ACR60",
|
"keyboard_name": "ACR60",
|
||||||
"url": "",
|
"url": "",
|
||||||
"maintainer": "qmk",
|
"maintainer": "qmk",
|
||||||
"width": 15,
|
"width": 15,
|
||||||
"height": 5,
|
"height": 5,
|
||||||
"layouts": {
|
"layout_aliases": {
|
||||||
"LAYOUT": {
|
"LAYOUT_2_shifts": "LAYOUT_all"
|
||||||
"key_count": 67,
|
|
||||||
"layout": [{"label":"K000", "x":0, "y":0}, {"label":"K001", "x":1, "y":0}, {"label":"K002", "x":2, "y":0}, {"label":"K003", "x":3, "y":0}, {"label":"K004", "x":4, "y":0}, {"label":"K005", "x":5, "y":0}, {"label":"K006", "x":6, "y":0}, {"label":"K007", "x":7, "y":0}, {"label":"K008", "x":8, "y":0}, {"label":"K009", "x":9, "y":0}, {"label":"K010", "x":10, "y":0}, {"label":"K011", "x":11, "y":0}, {"label":"K012", "x":12, "y":0}, {"label":"K013", "x":13, "y":0}, {"label":"K014", "x":14, "y":0}, {"label":"K100", "x":0, "y":1, "w":1.5}, {"label":"K102", "x":1.5, "y":1}, {"label":"K103", "x":2.5, "y":1}, {"label":"K104", "x":3.5, "y":1}, {"label":"K105", "x":4.5, "y":1}, {"label":"K106", "x":5.5, "y":1}, {"label":"K107", "x":6.5, "y":1}, {"label":"K108", "x":7.5, "y":1}, {"label":"K109", "x":8.5, "y":1}, {"label":"K110", "x":9.5, "y":1}, {"label":"K111", "x":10.5, "y":1}, {"label":"K112", "x":11.5, "y":1}, {"label":"K113", "x":12.5, "y":1}, {"label":"K114", "x":13.5, "y":1, "w":1.5}, {"label":"K200", "x":0, "y":2, "w":1.75}, {"label":"K202", "x":1.75, "y":2}, {"label":"K203", "x":2.75, "y":2}, {"label":"K204", "x":3.75, "y":2}, {"label":"K205", "x":4.75, "y":2}, {"label":"K206", "x":5.75, "y":2}, {"label":"K207", "x":6.75, "y":2}, {"label":"K208", "x":7.75, "y":2}, {"label":"K209", "x":8.75, "y":2}, {"label":"K210", "x":9.75, "y":2}, {"label":"K211", "x":10.75, "y":2}, {"label":"K212", "x":11.75, "y":2}, {"label":"K213", "x":12.75, "y":2, "w":2.25}, {"label":"K300", "x":0, "y":3, "w":1.25}, {"label":"K301", "x":1.25, "y":3}, {"label":"K302", "x":2.25, "y":3}, {"label":"K303", "x":3.25, "y":3}, {"label":"K304", "x":4.25, "y":3}, {"label":"K305", "x":5.25, "y":3}, {"label":"K306", "x":6.25, "y":3}, {"label":"K307", "x":7.25, "y":3}, {"label":"K308", "x":8.25, "y":3}, {"label":"K309", "x":9.25, "y":3}, {"label":"K310", "x":10.25, "y":3}, {"label":"K311", "x":11.25, "y":3}, {"label":"K313", "x":12.25, "y":3, "w":1.75}, {"label":"K314", "x":14, "y":3}, {"label":"K400", "x":0, "y":4, "w":1.25}, {"label":"K401", "x":1.25, "y":4, "w":1.25}, {"label":"K403", "x":2.5, "y":4, "w":1.25}, {"label":"K404", "x":3.75, "y":4, "w":2.25}, {"label":"K406", "x":6, "y":4, "w":1.25}, {"label":"K408", "x":7.25, "y":4, "w":2.75}, {"label":"K410", "x":10, "y":4}, {"label":"K411", "x":11, "y":4}, {"label":"K412", "x":12, "y":4}, {"label":"K413", "x":13, "y":4}, {"label":"K414", "x":14, "y":4}]
|
|
||||||
},
|
},
|
||||||
"LAYOUT_hhkb": {
|
"layouts": {
|
||||||
"key_count": 61,
|
"LAYOUT_all": {
|
||||||
"layout": [{"label":"K000", "x":0, "y":0}, {"label":"K001", "x":1, "y":0}, {"label":"K002", "x":2, "y":0}, {"label":"K003", "x":3, "y":0}, {"label":"K004", "x":4, "y":0}, {"label":"K005", "x":5, "y":0}, {"label":"K006", "x":6, "y":0}, {"label":"K007", "x":7, "y":0}, {"label":"K008", "x":8, "y":0}, {"label":"K009", "x":9, "y":0}, {"label":"K010", "x":10, "y":0}, {"label":"K011", "x":11, "y":0}, {"label":"K012", "x":12, "y":0}, {"label":"K013", "x":13, "y":0}, {"label":"K014", "x":14, "y":0}, {"label":"K100", "x":0, "y":1, "w":1.5}, {"label":"K102", "x":1.5, "y":1}, {"label":"K103", "x":2.5, "y":1}, {"label":"K104", "x":3.5, "y":1}, {"label":"K105", "x":4.5, "y":1}, {"label":"K106", "x":5.5, "y":1}, {"label":"K107", "x":6.5, "y":1}, {"label":"K108", "x":7.5, "y":1}, {"label":"K109", "x":8.5, "y":1}, {"label":"K110", "x":9.5, "y":1}, {"label":"K111", "x":10.5, "y":1}, {"label":"K112", "x":11.5, "y":1}, {"label":"K113", "x":12.5, "y":1}, {"label":"K114", "x":13.5, "y":1, "w":1.5}, {"label":"K200", "x":0, "y":2, "w":1.75}, {"label":"K202", "x":1.75, "y":2}, {"label":"K203", "x":2.75, "y":2}, {"label":"K204", "x":3.75, "y":2}, {"label":"K205", "x":4.75, "y":2}, {"label":"K206", "x":5.75, "y":2}, {"label":"K207", "x":6.75, "y":2}, {"label":"K208", "x":7.75, "y":2}, {"label":"K209", "x":8.75, "y":2}, {"label":"K210", "x":9.75, "y":2}, {"label":"K211", "x":10.75, "y":2}, {"label":"K212", "x":11.75, "y":2}, {"label":"K213", "x":12.75, "y":2, "w":2.25}, {"label":"K300", "x":0, "y":3, "w":1.25}, {"label":"K301", "x":1.25, "y":3}, {"label":"K302", "x":2.25, "y":3}, {"label":"K303", "x":3.25, "y":3}, {"label":"K304", "x":4.25, "y":3}, {"label":"K305", "x":5.25, "y":3}, {"label":"K306", "x":6.25, "y":3}, {"label":"K307", "x":7.25, "y":3}, {"label":"K308", "x":8.25, "y":3}, {"label":"K309", "x":9.25, "y":3}, {"label":"K310", "x":10.25, "y":3}, {"label":"K311", "x":11.25, "y":3}, {"label":"K313", "x":12.25, "y":3, "w":1.75}, {"label":"K314", "x":14, "y":3}, {"label":"K401", "x":1.5, "y":4}, {"label":"K403", "x":2.5, "y":4, "w":1.5}, {"label":"K406", "x":4, "y":4, "w":7}, {"label":"K411", "x":11, "y":4, "w":1.5}, {"label":"K413", "x":12.5, "y":4}]
|
"layout": [
|
||||||
},
|
{"label":"K00", "x":0, "y":0},
|
||||||
"LAYOUT_true_hhkb": {
|
{"label":"K01", "x":1, "y":0},
|
||||||
"key_count": 61,
|
{"label":"K02", "x":2, "y":0},
|
||||||
"layout": [{"label":"K000", "x":0, "y":0}, {"label":"K001", "x":1, "y":0}, {"label":"K002", "x":2, "y":0}, {"label":"K003", "x":3, "y":0}, {"label":"K004", "x":4, "y":0}, {"label":"K005", "x":5, "y":0}, {"label":"K006", "x":6, "y":0}, {"label":"K007", "x":7, "y":0}, {"label":"K008", "x":8, "y":0}, {"label":"K009", "x":9, "y":0}, {"label":"K010", "x":10, "y":0}, {"label":"K011", "x":11, "y":0}, {"label":"K012", "x":12, "y":0}, {"label":"K013", "x":13, "y":0}, {"label":"K014", "x":14, "y":0}, {"label":"K100", "x":0, "y":1, "w":1.5}, {"label":"K102", "x":1.5, "y":1}, {"label":"K103", "x":2.5, "y":1}, {"label":"K104", "x":3.5, "y":1}, {"label":"K105", "x":4.5, "y":1}, {"label":"K106", "x":5.5, "y":1}, {"label":"K107", "x":6.5, "y":1}, {"label":"K108", "x":7.5, "y":1}, {"label":"K109", "x":8.5, "y":1}, {"label":"K110", "x":9.5, "y":1}, {"label":"K111", "x":10.5, "y":1}, {"label":"K112", "x":11.5, "y":1}, {"label":"K113", "x":12.5, "y":1}, {"label":"K114", "x":13.5, "y":1, "w":1.5}, {"label":"K200", "x":0, "y":2, "w":1.75}, {"label":"K202", "x":1.75, "y":2}, {"label":"K203", "x":2.75, "y":2}, {"label":"K204", "x":3.75, "y":2}, {"label":"K205", "x":4.75, "y":2}, {"label":"K206", "x":5.75, "y":2}, {"label":"K207", "x":6.75, "y":2}, {"label":"K208", "x":7.75, "y":2}, {"label":"K209", "x":8.75, "y":2}, {"label":"K210", "x":9.75, "y":2}, {"label":"K211", "x":10.75, "y":2}, {"label":"K212", "x":11.75, "y":2}, {"label":"K213", "x":12.75, "y":2, "w":2.25}, {"label":"K300", "x":0, "y":3, "w":1.25}, {"label":"K301", "x":1.25, "y":3}, {"label":"K302", "x":2.25, "y":3}, {"label":"K303", "x":3.25, "y":3}, {"label":"K304", "x":4.25, "y":3}, {"label":"K305", "x":5.25, "y":3}, {"label":"K306", "x":6.25, "y":3}, {"label":"K307", "x":7.25, "y":3}, {"label":"K308", "x":8.25, "y":3}, {"label":"K309", "x":9.25, "y":3}, {"label":"K310", "x":10.25, "y":3}, {"label":"K311", "x":11.25, "y":3}, {"label":"K313", "x":12.25, "y":3, "w":1.75}, {"label":"K314", "x":14, "y":3}, {"label":"K401", "x":1.5, "y":4}, {"label":"K403", "x":2.5, "y":4, "w":1.5}, {"label":"K406", "x":4, "y":4, "w":6}, {"label":"K410", "x":10, "y":4, "w":1.5}, {"label":"K411", "x":11.5, "y":4}]
|
{"label":"K03", "x":3, "y":0},
|
||||||
},
|
{"label":"K04", "x":4, "y":0},
|
||||||
"LAYOUT_2_shifts": {
|
{"label":"K05", "x":5, "y":0},
|
||||||
"key_count": 68,
|
{"label":"K06", "x":6, "y":0},
|
||||||
"layout": [{"label":"K000", "x":0, "y":0}, {"label":"K001", "x":1, "y":0}, {"label":"K002", "x":2, "y":0}, {"label":"K003", "x":3, "y":0}, {"label":"K004", "x":4, "y":0}, {"label":"K005", "x":5, "y":0}, {"label":"K006", "x":6, "y":0}, {"label":"K007", "x":7, "y":0}, {"label":"K008", "x":8, "y":0}, {"label":"K009", "x":9, "y":0}, {"label":"K010", "x":10, "y":0}, {"label":"K011", "x":11, "y":0}, {"label":"K012", "x":12, "y":0}, {"label":"K013", "x":13, "y":0}, {"label":"K014", "x":14, "y":0}, {"label":"K100", "x":0, "y":1, "w":1.5}, {"label":"K102", "x":1.5, "y":1}, {"label":"K103", "x":2.5, "y":1}, {"label":"K104", "x":3.5, "y":1}, {"label":"K105", "x":4.5, "y":1}, {"label":"K106", "x":5.5, "y":1}, {"label":"K107", "x":6.5, "y":1}, {"label":"K108", "x":7.5, "y":1}, {"label":"K109", "x":8.5, "y":1}, {"label":"K110", "x":9.5, "y":1}, {"label":"K111", "x":10.5, "y":1}, {"label":"K112", "x":11.5, "y":1}, {"label":"K113", "x":12.5, "y":1}, {"label":"K114", "x":13.5, "y":1, "w":1.5}, {"label":"K200", "x":0, "y":2, "w":1.75}, {"label":"K202", "x":1.75, "y":2}, {"label":"K203", "x":2.75, "y":2}, {"label":"K204", "x":3.75, "y":2}, {"label":"K205", "x":4.75, "y":2}, {"label":"K206", "x":5.75, "y":2}, {"label":"K207", "x":6.75, "y":2}, {"label":"K208", "x":7.75, "y":2}, {"label":"K209", "x":8.75, "y":2}, {"label":"K210", "x":9.75, "y":2}, {"label":"K211", "x":10.75, "y":2}, {"label":"K212", "x":11.75, "y":2}, {"label":"K213", "x":12.75, "y":2, "w":2.25}, {"label":"K300", "x":0, "y":3}, {"label":"K301", "x":1, "y":3}, {"label":"K302", "x":2, "y":3}, {"label":"K303", "x":3, "y":3}, {"label":"K304", "x":4, "y":3}, {"label":"K305", "x":5, "y":3}, {"label":"K306", "x":6, "y":3}, {"label":"K307", "x":7, "y":3}, {"label":"K308", "x":8, "y":3}, {"label":"K309", "x":9, "y":3}, {"label":"K310", "x":10, "y":3}, {"label":"K311", "x":11, "y":3}, {"label":"K312", "x":12, "y":3}, {"label":"K313", "x":13, "y":3}, {"label":"K314", "x":14, "y":3}, {"label":"K400", "x":0, "y":4, "w":1.25}, {"label":"K401", "x":1.25, "y":4, "w":1.25}, {"label":"K403", "x":2.5, "y":4, "w":1.25}, {"label":"K404", "x":3.75, "y":4, "w":2.25}, {"label":"K406", "x":6, "y":4, "w":1.25}, {"label":"K408", "x":7.25, "y":4, "w":2.75}, {"label":"K410", "x":10, "y":4}, {"label":"K411", "x":11, "y":4}, {"label":"K412", "x":12, "y":4}, {"label":"K413", "x":13, "y":4}, {"label":"K414", "x":14, "y":4}]
|
{"label":"K07", "x":7, "y":0},
|
||||||
},
|
{"label":"K08", "x":8, "y":0},
|
||||||
"LAYOUT_directional": {
|
{"label":"K09", "x":9, "y":0},
|
||||||
"key_count": 67,
|
{"label":"K0A", "x":10, "y":0},
|
||||||
"layout": [{"label":"K000", "x":0, "y":0}, {"label":"K001", "x":1, "y":0}, {"label":"K002", "x":2, "y":0}, {"label":"K003", "x":3, "y":0}, {"label":"K004", "x":4, "y":0}, {"label":"K005", "x":5, "y":0}, {"label":"K006", "x":6, "y":0}, {"label":"K007", "x":7, "y":0}, {"label":"K008", "x":8, "y":0}, {"label":"K009", "x":9, "y":0}, {"label":"K010", "x":10, "y":0}, {"label":"K011", "x":11, "y":0}, {"label":"K012", "x":12, "y":0}, {"label":"K013", "x":13, "y":0}, {"label":"K014", "x":14, "y":0}, {"label":"K100", "x":0, "y":1, "w":1.5}, {"label":"K102", "x":1.5, "y":1}, {"label":"K103", "x":2.5, "y":1}, {"label":"K104", "x":3.5, "y":1}, {"label":"K105", "x":4.5, "y":1}, {"label":"K106", "x":5.5, "y":1}, {"label":"K107", "x":6.5, "y":1}, {"label":"K108", "x":7.5, "y":1}, {"label":"K109", "x":8.5, "y":1}, {"label":"K110", "x":9.5, "y":1}, {"label":"K111", "x":10.5, "y":1}, {"label":"K112", "x":11.5, "y":1}, {"label":"K113", "x":12.5, "y":1}, {"label":"K114", "x":13.5, "y":1, "w":1.5}, {"label":"K200", "x":0, "y":2, "w":1.75}, {"label":"K202", "x":1.75, "y":2}, {"label":"K203", "x":2.75, "y":2}, {"label":"K204", "x":3.75, "y":2}, {"label":"K205", "x":4.75, "y":2}, {"label":"K206", "x":5.75, "y":2}, {"label":"K207", "x":6.75, "y":2}, {"label":"K208", "x":7.75, "y":2}, {"label":"K209", "x":8.75, "y":2}, {"label":"K210", "x":9.75, "y":2}, {"label":"K211", "x":10.75, "y":2}, {"label":"K212", "x":11.75, "y":2}, {"label":"K213", "x":12.75, "y":2, "w":2.25}, {"label":"K300", "x":0, "y":3, "w":1.25}, {"label":"K301", "x":1.25, "y":3}, {"label":"K302", "x":2.25, "y":3}, {"label":"K303", "x":3.25, "y":3}, {"label":"K304", "x":4.25, "y":3}, {"label":"K305", "x":5.25, "y":3}, {"label":"K306", "x":6.25, "y":3}, {"label":"K307", "x":7.25, "y":3}, {"label":"K308", "x":8.25, "y":3}, {"label":"K309", "x":9.25, "y":3}, {"label":"K310", "x":10.25, "y":3}, {"label":"K312", "x":11.25, "y":3, "w":1.75}, {"label":"K313", "x":13, "y":3}, {"label":"K314", "x":14, "y":3}, {"label":"K400", "x":0, "y":4, "w":1.25}, {"label":"K401", "x":1.25, "y":4, "w":1.25}, {"label":"K403", "x":2.5, "y":4, "w":1.25}, {"label":"K404", "x":3.75, "y":4, "w":2.25}, {"label":"K406", "x":6, "y":4, "w":1.25}, {"label":"K408", "x":7.25, "y":4, "w":2.75}, {"label":"K410", "x":10, "y":4}, {"label":"K411", "x":11, "y":4}, {"label":"K412", "x":12, "y":4}, {"label":"K413", "x":13, "y":4}, {"label":"K414", "x":14, "y":4}]
|
{"label":"K0B", "x":11, "y":0},
|
||||||
},
|
{"label":"K0C", "x":12, "y":0},
|
||||||
"LAYOUT_mitchsplit": {
|
{"label":"K0D", "x":13, "y":0},
|
||||||
"key_count": 64,
|
{"label":"K0E", "x":14, "y":0},
|
||||||
"layout": [{"label":"K000", "x":0, "y":0}, {"label":"K001", "x":1, "y":0}, {"label":"K002", "x":2, "y":0}, {"label":"K003", "x":3, "y":0}, {"label":"K004", "x":4, "y":0}, {"label":"K005", "x":5, "y":0}, {"label":"K006", "x":6, "y":0}, {"label":"K007", "x":7, "y":0}, {"label":"K008", "x":8, "y":0}, {"label":"K009", "x":9, "y":0}, {"label":"K010", "x":10, "y":0}, {"label":"K011", "x":11, "y":0}, {"label":"K012", "x":12, "y":0}, {"label":"K014", "x":13, "y":0, "w":2}, {"label":"K100", "x":0, "y":1, "w":1.5}, {"label":"K102", "x":1.5, "y":1}, {"label":"K103", "x":2.5, "y":1}, {"label":"K104", "x":3.5, "y":1}, {"label":"K105", "x":4.5, "y":1}, {"label":"K106", "x":5.5, "y":1}, {"label":"K107", "x":6.5, "y":1}, {"label":"K108", "x":7.5, "y":1}, {"label":"K109", "x":8.5, "y":1}, {"label":"K110", "x":9.5, "y":1}, {"label":"K111", "x":10.5, "y":1}, {"label":"K112", "x":11.5, "y":1}, {"label":"K113", "x":12.5, "y":1}, {"label":"K114", "x":13.5, "y":1, "w":1.5}, {"label":"K200", "x":0, "y":2, "w":1.75}, {"label":"K202", "x":1.75, "y":2}, {"label":"K203", "x":2.75, "y":2}, {"label":"K204", "x":3.75, "y":2}, {"label":"K205", "x":4.75, "y":2}, {"label":"K206", "x":5.75, "y":2}, {"label":"K207", "x":6.75, "y":2}, {"label":"K208", "x":7.75, "y":2}, {"label":"K209", "x":8.75, "y":2}, {"label":"K210", "x":9.75, "y":2}, {"label":"K211", "x":10.75, "y":2}, {"label":"K212", "x":11.75, "y":2}, {"label":"K213", "x":12.75, "y":2, "w":2.25}, {"label":"K300", "x":0, "y":3, "w":2.25}, {"label":"K302", "x":2.25, "y":3}, {"label":"K303", "x":3.25, "y":3}, {"label":"K304", "x":4.25, "y":3}, {"label":"K305", "x":5.25, "y":3}, {"label":"K306", "x":6.25, "y":3}, {"label":"K307", "x":7.25, "y":3}, {"label":"K308", "x":8.25, "y":3}, {"label":"K309", "x":9.25, "y":3}, {"label":"K310", "x":10.25, "y":3}, {"label":"K311", "x":11.25, "y":3}, {"label":"K313", "x":12.25, "y":3, "w":1.75}, {"label":"K314", "x":14, "y":3}, {"label":"K400", "x":0, "y":4, "w":1.25}, {"label":"K401", "x":1.25, "y":4, "w":1.25}, {"label":"K403", "x":2.5, "y":4, "w":1.25}, {"label":"K404", "x":3.75, "y":4, "w":2.75}, {"label":"K406", "x":6.5, "y":4, "w":1.25}, {"label":"K408", "x":7.75, "y":4, "w":2.25}, {"label":"K410", "x":10, "y":4, "w":1.25}, {"label":"K411", "x":11.25, "y":4, "w":1.25}, {"label":"K413", "x":12.5, "y":4, "w":1.25}, {"label":"K414", "x":13.75, "y":4, "w":1.25}]
|
|
||||||
|
{"label":"K10", "x":0, "y":1, "w":1.5},
|
||||||
|
{"label":"K12", "x":1.5, "y":1},
|
||||||
|
{"label":"K13", "x":2.5, "y":1},
|
||||||
|
{"label":"K14", "x":3.5, "y":1},
|
||||||
|
{"label":"K15", "x":4.5, "y":1},
|
||||||
|
{"label":"K16", "x":5.5, "y":1},
|
||||||
|
{"label":"K17", "x":6.5, "y":1},
|
||||||
|
{"label":"K18", "x":7.5, "y":1},
|
||||||
|
{"label":"K19", "x":8.5, "y":1},
|
||||||
|
{"label":"K1A", "x":9.5, "y":1},
|
||||||
|
{"label":"K1B", "x":10.5, "y":1},
|
||||||
|
{"label":"K1C", "x":11.5, "y":1},
|
||||||
|
{"label":"K1D", "x":12.5, "y":1},
|
||||||
|
{"label":"K1E", "x":13.5, "y":1, "w":1.5},
|
||||||
|
|
||||||
|
{"label":"K20", "x":0, "y":2, "w":1.75},
|
||||||
|
{"label":"K22", "x":1.75, "y":2},
|
||||||
|
{"label":"K23", "x":2.75, "y":2},
|
||||||
|
{"label":"K24", "x":3.75, "y":2},
|
||||||
|
{"label":"K25", "x":4.75, "y":2},
|
||||||
|
{"label":"K26", "x":5.75, "y":2},
|
||||||
|
{"label":"K27", "x":6.75, "y":2},
|
||||||
|
{"label":"K28", "x":7.75, "y":2},
|
||||||
|
{"label":"K29", "x":8.75, "y":2},
|
||||||
|
{"label":"K2A", "x":9.75, "y":2},
|
||||||
|
{"label":"K2B", "x":10.75, "y":2},
|
||||||
|
{"label":"K2C", "x":11.75, "y":2},
|
||||||
|
{"label":"K2D", "x":12.75, "y":2, "w":2.25},
|
||||||
|
|
||||||
|
{"label":"K30", "x":0, "y":3},
|
||||||
|
{"label":"K31", "x":1, "y":3},
|
||||||
|
{"label":"K32", "x":2, "y":3},
|
||||||
|
{"label":"K33", "x":3, "y":3},
|
||||||
|
{"label":"K34", "x":4, "y":3},
|
||||||
|
{"label":"K35", "x":5, "y":3},
|
||||||
|
{"label":"K36", "x":6, "y":3},
|
||||||
|
{"label":"K37", "x":7, "y":3},
|
||||||
|
{"label":"K38", "x":8, "y":3},
|
||||||
|
{"label":"K39", "x":9, "y":3},
|
||||||
|
{"label":"K3A", "x":10, "y":3},
|
||||||
|
{"label":"K3B", "x":11, "y":3},
|
||||||
|
{"label":"K3C", "x":12, "y":3},
|
||||||
|
{"label":"K3D", "x":13, "y":3},
|
||||||
|
{"label":"K3E", "x":14, "y":3},
|
||||||
|
|
||||||
|
{"label":"K40", "x":0, "y":4, "w":1.25},
|
||||||
|
{"label":"K41", "x":1.25, "y":4, "w":1.25},
|
||||||
|
{"label":"K43", "x":2.5, "y":4, "w":1.25},
|
||||||
|
{"label":"K44", "x":3.75, "y":4, "w":2.25},
|
||||||
|
{"label":"K46", "x":6, "y":4, "w":1.25},
|
||||||
|
{"label":"K48", "x":7.25, "y":4, "w":2.75},
|
||||||
|
{"label":"K4A", "x":10, "y":4},
|
||||||
|
{"label":"K4B", "x":11, "y":4},
|
||||||
|
{"label":"K4C", "x":12, "y":4},
|
||||||
|
{"label":"K4D", "x":13, "y":4},
|
||||||
|
{"label":"K4E", "x":14, "y":4}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT": {
|
||||||
|
"layout": [
|
||||||
|
{"label":"K00", "x":0, "y":0},
|
||||||
|
{"label":"K01", "x":1, "y":0},
|
||||||
|
{"label":"K02", "x":2, "y":0},
|
||||||
|
{"label":"K03", "x":3, "y":0},
|
||||||
|
{"label":"K04", "x":4, "y":0},
|
||||||
|
{"label":"K05", "x":5, "y":0},
|
||||||
|
{"label":"K06", "x":6, "y":0},
|
||||||
|
{"label":"K07", "x":7, "y":0},
|
||||||
|
{"label":"K08", "x":8, "y":0},
|
||||||
|
{"label":"K09", "x":9, "y":0},
|
||||||
|
{"label":"K0A", "x":10, "y":0},
|
||||||
|
{"label":"K0B", "x":11, "y":0},
|
||||||
|
{"label":"K0C", "x":12, "y":0},
|
||||||
|
{"label":"K0D", "x":13, "y":0},
|
||||||
|
{"label":"K0E", "x":14, "y":0},
|
||||||
|
|
||||||
|
{"label":"K10", "x":0, "y":1, "w":1.5},
|
||||||
|
{"label":"K12", "x":1.5, "y":1},
|
||||||
|
{"label":"K13", "x":2.5, "y":1},
|
||||||
|
{"label":"K14", "x":3.5, "y":1},
|
||||||
|
{"label":"K15", "x":4.5, "y":1},
|
||||||
|
{"label":"K16", "x":5.5, "y":1},
|
||||||
|
{"label":"K17", "x":6.5, "y":1},
|
||||||
|
{"label":"K18", "x":7.5, "y":1},
|
||||||
|
{"label":"K19", "x":8.5, "y":1},
|
||||||
|
{"label":"K1A", "x":9.5, "y":1},
|
||||||
|
{"label":"K1B", "x":10.5, "y":1},
|
||||||
|
{"label":"K1C", "x":11.5, "y":1},
|
||||||
|
{"label":"K1D", "x":12.5, "y":1},
|
||||||
|
{"label":"K1E", "x":13.5, "y":1, "w":1.5},
|
||||||
|
|
||||||
|
{"label":"K20", "x":0, "y":2, "w":1.75},
|
||||||
|
{"label":"K22", "x":1.75, "y":2},
|
||||||
|
{"label":"K23", "x":2.75, "y":2},
|
||||||
|
{"label":"K24", "x":3.75, "y":2},
|
||||||
|
{"label":"K25", "x":4.75, "y":2},
|
||||||
|
{"label":"K26", "x":5.75, "y":2},
|
||||||
|
{"label":"K27", "x":6.75, "y":2},
|
||||||
|
{"label":"K28", "x":7.75, "y":2},
|
||||||
|
{"label":"K29", "x":8.75, "y":2},
|
||||||
|
{"label":"K2A", "x":9.75, "y":2},
|
||||||
|
{"label":"K2B", "x":10.75, "y":2},
|
||||||
|
{"label":"K2C", "x":11.75, "y":2},
|
||||||
|
{"label":"K2D", "x":12.75, "y":2, "w":2.25},
|
||||||
|
|
||||||
|
{"label":"K30", "x":0, "y":3, "w":1.25},
|
||||||
|
{"label":"K31", "x":1.25, "y":3},
|
||||||
|
{"label":"K32", "x":2.25, "y":3},
|
||||||
|
{"label":"K33", "x":3.25, "y":3},
|
||||||
|
{"label":"K34", "x":4.25, "y":3},
|
||||||
|
{"label":"K35", "x":5.25, "y":3},
|
||||||
|
{"label":"K36", "x":6.25, "y":3},
|
||||||
|
{"label":"K37", "x":7.25, "y":3},
|
||||||
|
{"label":"K38", "x":8.25, "y":3},
|
||||||
|
{"label":"K39", "x":9.25, "y":3},
|
||||||
|
{"label":"K3A", "x":10.25, "y":3},
|
||||||
|
{"label":"K3B", "x":11.25, "y":3},
|
||||||
|
{"label":"K3D", "x":12.25, "y":3, "w":1.75},
|
||||||
|
{"label":"K3E", "x":14, "y":3},
|
||||||
|
|
||||||
|
{"label":"K40", "x":0, "y":4, "w":1.25},
|
||||||
|
{"label":"K41", "x":1.25, "y":4, "w":1.25},
|
||||||
|
{"label":"K43", "x":2.5, "y":4, "w":1.25},
|
||||||
|
{"label":"K44", "x":3.75, "y":4, "w":2.25},
|
||||||
|
{"label":"K46", "x":6, "y":4, "w":1.25},
|
||||||
|
{"label":"K48", "x":7.25, "y":4, "w":2.75},
|
||||||
|
{"label":"K4A", "x":10, "y":4},
|
||||||
|
{"label":"K4B", "x":11, "y":4},
|
||||||
|
{"label":"K4C", "x":12, "y":4},
|
||||||
|
{"label":"K4D", "x":13, "y":4},
|
||||||
|
{"label":"K4E", "x":14, "y":4}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_hhkb": {
|
||||||
|
"layout": [
|
||||||
|
{"label":"K00", "x":0, "y":0},
|
||||||
|
{"label":"K01", "x":1, "y":0},
|
||||||
|
{"label":"K02", "x":2, "y":0},
|
||||||
|
{"label":"K03", "x":3, "y":0},
|
||||||
|
{"label":"K04", "x":4, "y":0},
|
||||||
|
{"label":"K05", "x":5, "y":0},
|
||||||
|
{"label":"K06", "x":6, "y":0},
|
||||||
|
{"label":"K07", "x":7, "y":0},
|
||||||
|
{"label":"K08", "x":8, "y":0},
|
||||||
|
{"label":"K09", "x":9, "y":0},
|
||||||
|
{"label":"K0A", "x":10, "y":0},
|
||||||
|
{"label":"K0B", "x":11, "y":0},
|
||||||
|
{"label":"K0C", "x":12, "y":0},
|
||||||
|
{"label":"K0D", "x":13, "y":0},
|
||||||
|
{"label":"K0E", "x":14, "y":0},
|
||||||
|
|
||||||
|
{"label":"K10", "x":0, "y":1, "w":1.5},
|
||||||
|
{"label":"K12", "x":1.5, "y":1},
|
||||||
|
{"label":"K13", "x":2.5, "y":1},
|
||||||
|
{"label":"K14", "x":3.5, "y":1},
|
||||||
|
{"label":"K15", "x":4.5, "y":1},
|
||||||
|
{"label":"K16", "x":5.5, "y":1},
|
||||||
|
{"label":"K17", "x":6.5, "y":1},
|
||||||
|
{"label":"K18", "x":7.5, "y":1},
|
||||||
|
{"label":"K19", "x":8.5, "y":1},
|
||||||
|
{"label":"K1A", "x":9.5, "y":1},
|
||||||
|
{"label":"K1B", "x":10.5, "y":1},
|
||||||
|
{"label":"K1C", "x":11.5, "y":1},
|
||||||
|
{"label":"K1D", "x":12.5, "y":1},
|
||||||
|
{"label":"K1E", "x":13.5, "y":1, "w":1.5},
|
||||||
|
|
||||||
|
{"label":"K20", "x":0, "y":2, "w":1.75},
|
||||||
|
{"label":"K22", "x":1.75, "y":2},
|
||||||
|
{"label":"K23", "x":2.75, "y":2},
|
||||||
|
{"label":"K24", "x":3.75, "y":2},
|
||||||
|
{"label":"K25", "x":4.75, "y":2},
|
||||||
|
{"label":"K26", "x":5.75, "y":2},
|
||||||
|
{"label":"K27", "x":6.75, "y":2},
|
||||||
|
{"label":"K28", "x":7.75, "y":2},
|
||||||
|
{"label":"K29", "x":8.75, "y":2},
|
||||||
|
{"label":"K2A", "x":9.75, "y":2},
|
||||||
|
{"label":"K2B", "x":10.75, "y":2},
|
||||||
|
{"label":"K2C", "x":11.75, "y":2},
|
||||||
|
{"label":"K2D", "x":12.75, "y":2, "w":2.25},
|
||||||
|
|
||||||
|
{"label":"K30", "x":0, "y":3, "w":1.25},
|
||||||
|
{"label":"K31", "x":1.25, "y":3},
|
||||||
|
{"label":"K32", "x":2.25, "y":3},
|
||||||
|
{"label":"K33", "x":3.25, "y":3},
|
||||||
|
{"label":"K34", "x":4.25, "y":3},
|
||||||
|
{"label":"K35", "x":5.25, "y":3},
|
||||||
|
{"label":"K36", "x":6.25, "y":3},
|
||||||
|
{"label":"K37", "x":7.25, "y":3},
|
||||||
|
{"label":"K38", "x":8.25, "y":3},
|
||||||
|
{"label":"K39", "x":9.25, "y":3},
|
||||||
|
{"label":"K3A", "x":10.25, "y":3},
|
||||||
|
{"label":"K3B", "x":11.25, "y":3},
|
||||||
|
{"label":"K3D", "x":12.25, "y":3, "w":1.75},
|
||||||
|
{"label":"K3E", "x":14, "y":3},
|
||||||
|
|
||||||
|
{"label":"K41", "x":1.5, "y":4},
|
||||||
|
{"label":"K43", "x":2.5, "y":4, "w":1.5},
|
||||||
|
{"label":"K46", "x":4, "y":4, "w":7},
|
||||||
|
{"label":"K4B", "x":11, "y":4, "w":1.5},
|
||||||
|
{"label":"K4D", "x":12.5, "y":4}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_true_hhkb": {
|
||||||
|
"layout": [
|
||||||
|
{"label":"K00", "x":0, "y":0},
|
||||||
|
{"label":"K01", "x":1, "y":0},
|
||||||
|
{"label":"K02", "x":2, "y":0},
|
||||||
|
{"label":"K03", "x":3, "y":0},
|
||||||
|
{"label":"K04", "x":4, "y":0},
|
||||||
|
{"label":"K05", "x":5, "y":0},
|
||||||
|
{"label":"K06", "x":6, "y":0},
|
||||||
|
{"label":"K07", "x":7, "y":0},
|
||||||
|
{"label":"K08", "x":8, "y":0},
|
||||||
|
{"label":"K09", "x":9, "y":0},
|
||||||
|
{"label":"K0A", "x":10, "y":0},
|
||||||
|
{"label":"K0B", "x":11, "y":0},
|
||||||
|
{"label":"K0C", "x":12, "y":0},
|
||||||
|
{"label":"K0D", "x":13, "y":0},
|
||||||
|
{"label":"K0E", "x":14, "y":0},
|
||||||
|
|
||||||
|
{"label":"K10", "x":0, "y":1, "w":1.5},
|
||||||
|
{"label":"K12", "x":1.5, "y":1},
|
||||||
|
{"label":"K13", "x":2.5, "y":1},
|
||||||
|
{"label":"K14", "x":3.5, "y":1},
|
||||||
|
{"label":"K15", "x":4.5, "y":1},
|
||||||
|
{"label":"K16", "x":5.5, "y":1},
|
||||||
|
{"label":"K17", "x":6.5, "y":1},
|
||||||
|
{"label":"K18", "x":7.5, "y":1},
|
||||||
|
{"label":"K19", "x":8.5, "y":1},
|
||||||
|
{"label":"K1A", "x":9.5, "y":1},
|
||||||
|
{"label":"K1B", "x":10.5, "y":1},
|
||||||
|
{"label":"K1C", "x":11.5, "y":1},
|
||||||
|
{"label":"K1D", "x":12.5, "y":1},
|
||||||
|
{"label":"K1E", "x":13.5, "y":1, "w":1.5},
|
||||||
|
|
||||||
|
{"label":"K20", "x":0, "y":2, "w":1.75},
|
||||||
|
{"label":"K22", "x":1.75, "y":2},
|
||||||
|
{"label":"K23", "x":2.75, "y":2},
|
||||||
|
{"label":"K24", "x":3.75, "y":2},
|
||||||
|
{"label":"K25", "x":4.75, "y":2},
|
||||||
|
{"label":"K26", "x":5.75, "y":2},
|
||||||
|
{"label":"K27", "x":6.75, "y":2},
|
||||||
|
{"label":"K28", "x":7.75, "y":2},
|
||||||
|
{"label":"K29", "x":8.75, "y":2},
|
||||||
|
{"label":"K2A", "x":9.75, "y":2},
|
||||||
|
{"label":"K2B", "x":10.75, "y":2},
|
||||||
|
{"label":"K2C", "x":11.75, "y":2},
|
||||||
|
{"label":"K2D", "x":12.75, "y":2, "w":2.25},
|
||||||
|
|
||||||
|
{"label":"K30", "x":0, "y":3, "w":1.25},
|
||||||
|
{"label":"K31", "x":1.25, "y":3},
|
||||||
|
{"label":"K32", "x":2.25, "y":3},
|
||||||
|
{"label":"K33", "x":3.25, "y":3},
|
||||||
|
{"label":"K34", "x":4.25, "y":3},
|
||||||
|
{"label":"K35", "x":5.25, "y":3},
|
||||||
|
{"label":"K36", "x":6.25, "y":3},
|
||||||
|
{"label":"K37", "x":7.25, "y":3},
|
||||||
|
{"label":"K38", "x":8.25, "y":3},
|
||||||
|
{"label":"K39", "x":9.25, "y":3},
|
||||||
|
{"label":"K3A", "x":10.25, "y":3},
|
||||||
|
{"label":"K3B", "x":11.25, "y":3},
|
||||||
|
{"label":"K3D", "x":12.25, "y":3, "w":1.75},
|
||||||
|
{"label":"K3E", "x":14, "y":3},
|
||||||
|
|
||||||
|
{"label":"K41", "x":1.5, "y":4},
|
||||||
|
{"label":"K43", "x":2.5, "y":4, "w":1.5},
|
||||||
|
{"label":"K46", "x":4, "y":4, "w":6},
|
||||||
|
{"label":"K4A", "x":10, "y":4, "w":1.5},
|
||||||
|
{"label":"K4B", "x":11.5, "y":4}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_directional": {
|
||||||
|
"layout": [
|
||||||
|
{"label":"K00", "x":0, "y":0},
|
||||||
|
{"label":"K01", "x":1, "y":0},
|
||||||
|
{"label":"K02", "x":2, "y":0},
|
||||||
|
{"label":"K03", "x":3, "y":0},
|
||||||
|
{"label":"K04", "x":4, "y":0},
|
||||||
|
{"label":"K05", "x":5, "y":0},
|
||||||
|
{"label":"K06", "x":6, "y":0},
|
||||||
|
{"label":"K07", "x":7, "y":0},
|
||||||
|
{"label":"K08", "x":8, "y":0},
|
||||||
|
{"label":"K09", "x":9, "y":0},
|
||||||
|
{"label":"K0A", "x":10, "y":0},
|
||||||
|
{"label":"K0B", "x":11, "y":0},
|
||||||
|
{"label":"K0C", "x":12, "y":0},
|
||||||
|
{"label":"K0D", "x":13, "y":0},
|
||||||
|
{"label":"K0E", "x":14, "y":0},
|
||||||
|
|
||||||
|
{"label":"K10", "x":0, "y":1, "w":1.5},
|
||||||
|
{"label":"K12", "x":1.5, "y":1},
|
||||||
|
{"label":"K13", "x":2.5, "y":1},
|
||||||
|
{"label":"K14", "x":3.5, "y":1},
|
||||||
|
{"label":"K15", "x":4.5, "y":1},
|
||||||
|
{"label":"K16", "x":5.5, "y":1},
|
||||||
|
{"label":"K17", "x":6.5, "y":1},
|
||||||
|
{"label":"K18", "x":7.5, "y":1},
|
||||||
|
{"label":"K19", "x":8.5, "y":1},
|
||||||
|
{"label":"K1A", "x":9.5, "y":1},
|
||||||
|
{"label":"K1B", "x":10.5, "y":1},
|
||||||
|
{"label":"K1C", "x":11.5, "y":1},
|
||||||
|
{"label":"K1D", "x":12.5, "y":1},
|
||||||
|
{"label":"K1E", "x":13.5, "y":1, "w":1.5},
|
||||||
|
|
||||||
|
{"label":"K20", "x":0, "y":2, "w":1.75},
|
||||||
|
{"label":"K22", "x":1.75, "y":2},
|
||||||
|
{"label":"K23", "x":2.75, "y":2},
|
||||||
|
{"label":"K24", "x":3.75, "y":2},
|
||||||
|
{"label":"K25", "x":4.75, "y":2},
|
||||||
|
{"label":"K26", "x":5.75, "y":2},
|
||||||
|
{"label":"K27", "x":6.75, "y":2},
|
||||||
|
{"label":"K28", "x":7.75, "y":2},
|
||||||
|
{"label":"K29", "x":8.75, "y":2},
|
||||||
|
{"label":"K2A", "x":9.75, "y":2},
|
||||||
|
{"label":"K2B", "x":10.75, "y":2},
|
||||||
|
{"label":"K2C", "x":11.75, "y":2},
|
||||||
|
{"label":"K2D", "x":12.75, "y":2, "w":2.25},
|
||||||
|
|
||||||
|
{"label":"K30", "x":0, "y":3, "w":1.25},
|
||||||
|
{"label":"K31", "x":1.25, "y":3},
|
||||||
|
{"label":"K32", "x":2.25, "y":3},
|
||||||
|
{"label":"K33", "x":3.25, "y":3},
|
||||||
|
{"label":"K34", "x":4.25, "y":3},
|
||||||
|
{"label":"K35", "x":5.25, "y":3},
|
||||||
|
{"label":"K36", "x":6.25, "y":3},
|
||||||
|
{"label":"K37", "x":7.25, "y":3},
|
||||||
|
{"label":"K38", "x":8.25, "y":3},
|
||||||
|
{"label":"K39", "x":9.25, "y":3},
|
||||||
|
{"label":"K3A", "x":10.25, "y":3},
|
||||||
|
{"label":"K3C", "x":11.25, "y":3, "w":1.75},
|
||||||
|
{"label":"K3D", "x":13, "y":3},
|
||||||
|
{"label":"K3E", "x":14, "y":3},
|
||||||
|
|
||||||
|
{"label":"K40", "x":0, "y":4, "w":1.25},
|
||||||
|
{"label":"K41", "x":1.25, "y":4, "w":1.25},
|
||||||
|
{"label":"K43", "x":2.5, "y":4, "w":1.25},
|
||||||
|
{"label":"K44", "x":3.75, "y":4, "w":2.25},
|
||||||
|
{"label":"K46", "x":6, "y":4, "w":1.25},
|
||||||
|
{"label":"K48", "x":7.25, "y":4, "w":2.75},
|
||||||
|
{"label":"K4A", "x":10, "y":4},
|
||||||
|
{"label":"K4B", "x":11, "y":4},
|
||||||
|
{"label":"K4C", "x":12, "y":4},
|
||||||
|
{"label":"K4D", "x":13, "y":4},
|
||||||
|
{"label":"K4E", "x":14, "y":4}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_mitchsplit": {
|
||||||
|
"layout": [
|
||||||
|
{"label":"K00", "x":0, "y":0},
|
||||||
|
{"label":"K01", "x":1, "y":0},
|
||||||
|
{"label":"K02", "x":2, "y":0},
|
||||||
|
{"label":"K03", "x":3, "y":0},
|
||||||
|
{"label":"K04", "x":4, "y":0},
|
||||||
|
{"label":"K05", "x":5, "y":0},
|
||||||
|
{"label":"K06", "x":6, "y":0},
|
||||||
|
{"label":"K07", "x":7, "y":0},
|
||||||
|
{"label":"K08", "x":8, "y":0},
|
||||||
|
{"label":"K09", "x":9, "y":0},
|
||||||
|
{"label":"K0A", "x":10, "y":0},
|
||||||
|
{"label":"K0B", "x":11, "y":0},
|
||||||
|
{"label":"K0C", "x":12, "y":0},
|
||||||
|
{"label":"K0E", "x":13, "y":0, "w":2},
|
||||||
|
|
||||||
|
{"label":"K10", "x":0, "y":1, "w":1.5},
|
||||||
|
{"label":"K12", "x":1.5, "y":1},
|
||||||
|
{"label":"K13", "x":2.5, "y":1},
|
||||||
|
{"label":"K14", "x":3.5, "y":1},
|
||||||
|
{"label":"K15", "x":4.5, "y":1},
|
||||||
|
{"label":"K16", "x":5.5, "y":1},
|
||||||
|
{"label":"K17", "x":6.5, "y":1},
|
||||||
|
{"label":"K18", "x":7.5, "y":1},
|
||||||
|
{"label":"K19", "x":8.5, "y":1},
|
||||||
|
{"label":"K1A", "x":9.5, "y":1},
|
||||||
|
{"label":"K1B", "x":10.5, "y":1},
|
||||||
|
{"label":"K1C", "x":11.5, "y":1},
|
||||||
|
{"label":"K1D", "x":12.5, "y":1},
|
||||||
|
{"label":"K1E", "x":13.5, "y":1, "w":1.5},
|
||||||
|
|
||||||
|
{"label":"K20", "x":0, "y":2, "w":1.75},
|
||||||
|
{"label":"K22", "x":1.75, "y":2},
|
||||||
|
{"label":"K23", "x":2.75, "y":2},
|
||||||
|
{"label":"K24", "x":3.75, "y":2},
|
||||||
|
{"label":"K25", "x":4.75, "y":2},
|
||||||
|
{"label":"K26", "x":5.75, "y":2},
|
||||||
|
{"label":"K27", "x":6.75, "y":2},
|
||||||
|
{"label":"K28", "x":7.75, "y":2},
|
||||||
|
{"label":"K29", "x":8.75, "y":2},
|
||||||
|
{"label":"K2A", "x":9.75, "y":2},
|
||||||
|
{"label":"K2B", "x":10.75, "y":2},
|
||||||
|
{"label":"K2C", "x":11.75, "y":2},
|
||||||
|
{"label":"K2D", "x":12.75, "y":2, "w":2.25},
|
||||||
|
|
||||||
|
{"label":"K30", "x":0, "y":3, "w":2.25},
|
||||||
|
{"label":"K32", "x":2.25, "y":3},
|
||||||
|
{"label":"K33", "x":3.25, "y":3},
|
||||||
|
{"label":"K34", "x":4.25, "y":3},
|
||||||
|
{"label":"K35", "x":5.25, "y":3},
|
||||||
|
{"label":"K36", "x":6.25, "y":3},
|
||||||
|
{"label":"K37", "x":7.25, "y":3},
|
||||||
|
{"label":"K38", "x":8.25, "y":3},
|
||||||
|
{"label":"K39", "x":9.25, "y":3},
|
||||||
|
{"label":"K3A", "x":10.25, "y":3},
|
||||||
|
{"label":"K3B", "x":11.25, "y":3},
|
||||||
|
{"label":"K3D", "x":12.25, "y":3, "w":1.75},
|
||||||
|
{"label":"K3E", "x":14, "y":3},
|
||||||
|
|
||||||
|
{"label":"K40", "x":0, "y":4, "w":1.25},
|
||||||
|
{"label":"K41", "x":1.25, "y":4, "w":1.25},
|
||||||
|
{"label":"K43", "x":2.5, "y":4, "w":1.25},
|
||||||
|
{"label":"K44", "x":3.75, "y":4, "w":2.75},
|
||||||
|
{"label":"K46", "x":6.5, "y":4, "w":1.25},
|
||||||
|
{"label":"K48", "x":7.75, "y":4, "w":2.25},
|
||||||
|
{"label":"K4A", "x":10, "y":4, "w":1.25},
|
||||||
|
{"label":"K4B", "x":11.25, "y":4, "w":1.25},
|
||||||
|
{"label":"K4D", "x":12.5, "y":4, "w":1.25},
|
||||||
|
{"label":"K4E", "x":13.75, "y":4, "w":1.25}
|
||||||
|
]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -1,67 +1,38 @@
|
|||||||
|
/* Copyright 2017 Ryan Mitchell (@newtmitch)
|
||||||
|
* 2021 James Young for QMK (@noroadsleft)
|
||||||
|
*
|
||||||
|
* 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
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
#define MODS_SHIFT_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
|
|
||||||
|
|
||||||
enum custom_keycodes {
|
|
||||||
SFT_ESC = SAFE_RANGE
|
|
||||||
};
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
/*
|
[0] = LAYOUT_all(
|
||||||
* Default keymap with standard 60% layout. Split space possible but entirely optional with this layout, as this
|
KC_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, XXXXXXX, KC_BSPC,
|
||||||
* layout covers all three split space keys as space keycodes. This also has alt right next to the space bar
|
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,
|
||||||
* on both sides (Windows keyboard layout), no right-side system/GUI key, and momentary layer switching on
|
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,
|
||||||
* the right modifiers into the 3rd (macro) and 2nd (function/sfx) layers, respectively. This also has the grave
|
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, MO(1),
|
||||||
* accent key set up on the 2nd layer, although on the first layer it includes grave key (tilde) when shift is held down,
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
* via the function actions code at the bottom.
|
),
|
||||||
*/
|
|
||||||
LAYOUT(
|
|
||||||
SFT_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_NO, 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, KC_NO,
|
|
||||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(2), KC_NO, MO(1), KC_RCTL),
|
|
||||||
|
|
||||||
LAYOUT(
|
[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_TRNS, KC_DEL,
|
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_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET,
|
_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, RESET,
|
||||||
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, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
_______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, BL_STEP, _______, _______, _______, _______, _______, _______, _______,
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
|
||||||
LAYOUT(
|
|
||||||
KC_TRNS, M(1), M(2), M(3), M(4), M(5), M(6), M(7), M(8), M(9), M(10), M(11), M(12), 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, 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),
|
|
||||||
};
|
};
|
||||||
|
|
||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|
||||||
switch (keycode) {
|
|
||||||
case SFT_ESC:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
if (get_mods() & MODS_SHIFT_MASK) {
|
|
||||||
add_key(KC_GRV);
|
|
||||||
send_keyboard_report();
|
|
||||||
} else {
|
|
||||||
add_key(KC_ESC);
|
|
||||||
send_keyboard_report();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (get_mods() & MODS_SHIFT_MASK) {
|
|
||||||
del_key(KC_GRV);
|
|
||||||
send_keyboard_report();
|
|
||||||
} else {
|
|
||||||
del_key(KC_ESC);
|
|
||||||
send_keyboard_report();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
|
|
||||||
default:
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,18 +1,24 @@
|
|||||||
ACR60
|
# ACR60
|
||||||
=====
|
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
A customizable 60% keyboard made and sold by mechkeys.ca [More info on MECHKEYS](https://mechkeys.ca)
|
A customizable 60% keyboard made and sold by mechkeys.ca [More info on MECHKEYS](https://mechkeys.ca)
|
||||||
|
|
||||||
Keyboard Maintainer: [TurboMech](https://github.com/TurboMech)
|
* Keyboard Maintainer: [TurboMech](https://github.com/TurboMech)
|
||||||
|
* Hardware Supported: ACR60
|
||||||
Hardware Supported: ACR60
|
* Hardware Availability: [~~MECHKEYS~~](https://mechkeys.ca/products/acr60) (no longer available)
|
||||||
|
|
||||||
Hardware Availability: [MECHKEYS](https://mechkeys.ca/products/acr60)
|
|
||||||
|
|
||||||
Make example for this keyboard (after setting up your build environment):
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
make acr60:default
|
make acr60:default
|
||||||
|
|
||||||
See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information.
|
Flashing example for this keyboard:
|
||||||
|
|
||||||
|
make acr60:default:flash
|
||||||
|
|
||||||
|
To reset the board into bootloader mode, do one of the following:
|
||||||
|
|
||||||
|
* Tap the Reset switch mounted on the bottom side of the PCB
|
||||||
|
* Hold Space+B while connecting the USB cable
|
||||||
|
|
||||||
|
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).`
|
||||||
@@ -31,7 +31,7 @@
|
|||||||
|
|
||||||
/* key matrix pins */
|
/* key matrix pins */
|
||||||
#define MATRIX_ROW_PINS { B15, A14, A2, B13, B14 }
|
#define MATRIX_ROW_PINS { B15, A14, A2, B13, B14 }
|
||||||
#define MATRIX_COL_PINS { B12, H0, C15, C14, B11, B10, B2, B1, B0, A7, A6, A5, A4, A3 }
|
#define MATRIX_COL_PINS { B12, A1, H0, C15, C14, B11, B10, B2, B1, B0, A7, A6, A5, A4, A3 }
|
||||||
#define UNUSED_PINS
|
#define UNUSED_PINS
|
||||||
|
|
||||||
/* COL2ROW or ROW2COL */
|
/* COL2ROW or ROW2COL */
|
||||||
|
|||||||
@@ -13,4 +13,5 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "al1.h"
|
#include "al1.h"
|
||||||
+28
-30
@@ -13,41 +13,39 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
#ifndef AL1_H
|
|
||||||
#define AL1_H
|
#pragma once
|
||||||
|
|
||||||
#include "quantum.h"
|
#include "quantum.h"
|
||||||
|
|
||||||
|
#define XXX KC_NO
|
||||||
|
|
||||||
#define LAYOUT( \
|
#define LAYOUT( \
|
||||||
K500, K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K415, K414,\
|
k50, k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k4F, k4E, \
|
||||||
K501, K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K215, K413,\
|
k51, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k2F, k4D, \
|
||||||
K502, K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, \
|
k52, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, \
|
||||||
K503, K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, K412,\
|
k53, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, k4C, \
|
||||||
K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411 \
|
k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B \
|
||||||
) \
|
) { \
|
||||||
{ \
|
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
|
||||||
{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015}, \
|
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F }, \
|
||||||
{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115}, \
|
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F }, \
|
||||||
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215}, \
|
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F }, \
|
||||||
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315}, \
|
{ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F }, \
|
||||||
{ K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, K414, K415}, \
|
{ k50, k51, k52, k53, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX } \
|
||||||
{ K500, K501, K502, K503, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO} \
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#define LAYOUT_split_bs( \
|
#define LAYOUT_split_bs( \
|
||||||
K500, K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K512, K012, K013, K014, K015, K415, K414, \
|
k50, k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k5C, k0C, k0D, k0E, k0F, k4F, k4E, \
|
||||||
K501, K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K215, K413,\
|
k51, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k2F, k4D, \
|
||||||
K502, K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, \
|
k52, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, \
|
||||||
K503, K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, K412,\
|
k53, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, k4C, \
|
||||||
K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411 \
|
k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B \
|
||||||
) \
|
) { \
|
||||||
{ \
|
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
|
||||||
{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015}, \
|
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F }, \
|
||||||
{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115}, \
|
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F }, \
|
||||||
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215}, \
|
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F }, \
|
||||||
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315}, \
|
{ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F }, \
|
||||||
{ K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, K414, K415}, \
|
{ k50, k51, k52, k53, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, k5C, XXX, XXX, XXX } \
|
||||||
{ K500, K501, K502, K503, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K512, KC_NO, KC_NO, KC_NO} \
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
|
||||||
+12
-100
@@ -15,62 +15,42 @@ You should have received a copy of the GNU General Public License
|
|||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef CONFIG_H
|
#pragma once
|
||||||
#define CONFIG_H
|
|
||||||
|
|
||||||
#include "config_common.h"
|
#include "config_common.h"
|
||||||
|
|
||||||
/* USB Device descriptor parameter */
|
/* USB Device descriptor parameter */
|
||||||
#define VENDOR_ID 0xFEED
|
#define VENDOR_ID 0xFEED
|
||||||
#define PRODUCT_ID 0x6050
|
#define PRODUCT_ID 0x6050
|
||||||
#define DEVICE_VER 0x0104
|
#define DEVICE_VER 0x0104
|
||||||
#define MANUFACTURER Alsoran
|
#define MANUFACTURER Alsoran
|
||||||
#define PRODUCT AL1
|
#define PRODUCT AL1
|
||||||
|
|
||||||
/* key matrix size */
|
/* key matrix size */
|
||||||
#define MATRIX_ROWS 7
|
#define MATRIX_ROWS 7
|
||||||
#define MATRIX_COLS 20
|
#define MATRIX_COLS 20
|
||||||
|
|
||||||
/*
|
|
||||||
* Keyboard Matrix Assignments
|
|
||||||
*
|
|
||||||
* Change this to how you wired your keyboard
|
|
||||||
* COLS: AVR pins used for columns, left to right
|
|
||||||
* ROWS: AVR pins used for rows, top to bottom
|
|
||||||
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
|
|
||||||
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* COL2ROW, ROW2COL*/
|
|
||||||
#define DIODE_DIRECTION COL2ROW
|
|
||||||
|
|
||||||
#define LED_NUM_LOCK_PIN D0
|
#define LED_NUM_LOCK_PIN D0
|
||||||
#define LED_CAPS_LOCK_PIN B7
|
#define LED_CAPS_LOCK_PIN B7
|
||||||
#define LED_SCROLL_LOCK_PIN D1
|
#define LED_SCROLL_LOCK_PIN D1
|
||||||
#define LED_PIN_ON_STATE 0
|
#define LED_PIN_ON_STATE 0
|
||||||
|
|
||||||
#define BACKLIGHT_PIN B6
|
#define BACKLIGHT_PIN B6
|
||||||
#define BACKLIGHT_BREATHING
|
|
||||||
#define BACKLIGHT_LEVELS 3
|
#define BACKLIGHT_LEVELS 3
|
||||||
|
#define BACKLIGHT_BREATHING
|
||||||
|
|
||||||
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||||
#define DEBOUNCE 5
|
#define DEBOUNCE 5
|
||||||
|
|
||||||
/* define if matrix has ghost (lacks anti-ghosting diodes) */
|
|
||||||
//#define MATRIX_HAS_GHOST
|
|
||||||
|
|
||||||
/* number of backlight levels */
|
|
||||||
|
|
||||||
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||||
#define LOCKING_SUPPORT_ENABLE
|
#define LOCKING_SUPPORT_ENABLE
|
||||||
/* Locking resynchronize hack */
|
/* Locking resynchronize hack */
|
||||||
#define LOCKING_RESYNC_ENABLE
|
#define LOCKING_RESYNC_ENABLE
|
||||||
|
|
||||||
/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
|
/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
|
||||||
* This is userful for the Windows task manager shortcut (ctrl+shift+esc).
|
* This is useful for the Windows task manager shortcut (ctrl+shift+esc).
|
||||||
*/
|
*/
|
||||||
// #define GRAVE_ESC_CTRL_OVERRIDE
|
//#define GRAVE_ESC_CTRL_OVERRIDE
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Force NKRO
|
* Force NKRO
|
||||||
@@ -93,54 +73,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
*/
|
*/
|
||||||
//#define FORCE_NKRO
|
//#define FORCE_NKRO
|
||||||
|
|
||||||
/*
|
|
||||||
* Magic Key Options
|
|
||||||
*
|
|
||||||
* Magic keys are hotkey commands that allow control over firmware functions of
|
|
||||||
* the keyboard. They are best used in combination with the HID Listen program,
|
|
||||||
* found here: https://www.pjrc.com/teensy/hid_listen.html
|
|
||||||
*
|
|
||||||
* The options below allow the magic key functionality to be changed. This is
|
|
||||||
* useful if your keyboard/keypad is missing keys and you want magic key support.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* control how magic key switches layers */
|
|
||||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
|
|
||||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
|
|
||||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
|
|
||||||
|
|
||||||
/* override magic key keymap */
|
|
||||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
|
|
||||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
|
|
||||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
|
|
||||||
//#define MAGIC_KEY_HELP1 H
|
|
||||||
//#define MAGIC_KEY_HELP2 SLASH
|
|
||||||
//#define MAGIC_KEY_DEBUG D
|
|
||||||
//#define MAGIC_KEY_DEBUG_MATRIX X
|
|
||||||
//#define MAGIC_KEY_DEBUG_KBD K
|
|
||||||
//#define MAGIC_KEY_DEBUG_MOUSE M
|
|
||||||
//#define MAGIC_KEY_VERSION V
|
|
||||||
//#define MAGIC_KEY_STATUS S
|
|
||||||
//#define MAGIC_KEY_CONSOLE C
|
|
||||||
//#define MAGIC_KEY_LAYER0_ALT1 ESC
|
|
||||||
//#define MAGIC_KEY_LAYER0_ALT2 GRAVE
|
|
||||||
//#define MAGIC_KEY_LAYER0 0
|
|
||||||
//#define MAGIC_KEY_LAYER1 1
|
|
||||||
//#define MAGIC_KEY_LAYER2 2
|
|
||||||
//#define MAGIC_KEY_LAYER3 3
|
|
||||||
//#define MAGIC_KEY_LAYER4 4
|
|
||||||
//#define MAGIC_KEY_LAYER5 5
|
|
||||||
//#define MAGIC_KEY_LAYER6 6
|
|
||||||
//#define MAGIC_KEY_LAYER7 7
|
|
||||||
//#define MAGIC_KEY_LAYER8 8
|
|
||||||
//#define MAGIC_KEY_LAYER9 9
|
|
||||||
//#define MAGIC_KEY_BOOTLOADER PAUSE
|
|
||||||
//#define MAGIC_KEY_LOCK CAPS
|
|
||||||
//#define MAGIC_KEY_EEPROM E
|
|
||||||
//#define MAGIC_KEY_NKRO N
|
|
||||||
//#define MAGIC_KEY_SLEEP_LED Z
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Feature disable options
|
* Feature disable options
|
||||||
* These options are also useful to firmware size reduction.
|
* These options are also useful to firmware size reduction.
|
||||||
@@ -156,27 +88,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
//#define NO_ACTION_LAYER
|
//#define NO_ACTION_LAYER
|
||||||
//#define NO_ACTION_TAPPING
|
//#define NO_ACTION_TAPPING
|
||||||
//#define NO_ACTION_ONESHOT
|
//#define NO_ACTION_ONESHOT
|
||||||
//#define NO_ACTION_MACRO
|
|
||||||
//#define NO_ACTION_FUNCTION
|
|
||||||
|
|
||||||
/*
|
/* disable these deprecated features by default */
|
||||||
* MIDI options
|
#define NO_ACTION_MACRO
|
||||||
*/
|
#define NO_ACTION_FUNCTION
|
||||||
|
|
||||||
/* enable basic MIDI features:
|
|
||||||
- MIDI notes can be sent when in Music mode is on
|
|
||||||
*/
|
|
||||||
//#define MIDI_BASIC
|
|
||||||
|
|
||||||
/* enable advanced MIDI features:
|
|
||||||
- MIDI notes can be added to the keymap
|
|
||||||
- Octave shift and transpose
|
|
||||||
- Virtual sustain, portamento, and modulation wheel
|
|
||||||
- etc.
|
|
||||||
*/
|
|
||||||
//#define MIDI_ADVANCED
|
|
||||||
|
|
||||||
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
|
|
||||||
//#define MIDI_TONE_KEYCODE_OCTAVES 1
|
|
||||||
|
|
||||||
#endif
|
|
||||||
+209
-12
@@ -1,15 +1,212 @@
|
|||||||
{
|
{
|
||||||
"keyboard_name": "AL1",
|
"keyboard_name": "AL1",
|
||||||
"url": "",
|
"url": "",
|
||||||
"maintainer": "qmk",
|
"maintainer": "qmk",
|
||||||
"width": 20.5,
|
"width": 20.5,
|
||||||
"height": 5.25,
|
"height": 5.25,
|
||||||
"layouts": {
|
"layouts": {
|
||||||
"LAYOUT": {
|
"LAYOUT": {
|
||||||
"layout": [{"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Insert", "x":15.25, "y":0}, {"label":"Num Lock", "x":16.5, "y":0}, {"label":"/", "x":17.5, "y":0}, {"label":"*", "x":18.5, "y":0}, {"label":"-", "x":19.5, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Delete", "x":15.25, "y":1}, {"label":"7", "x":16.5, "y":1}, {"label":"8", "x":17.5, "y":1}, {"label":"9", "x":18.5, "y":1}, {"label":"+", "x":19.5, "y":1, "h":2}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"4", "x":16.5, "y":2}, {"label":"5", "x":17.5, "y":2}, {"label":"6", "x":18.5, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"Fn", "x":14, "y":3}, {"label":"↑", "x":15.25, "y":3.25}, {"label":"1", "x":16.5, "y":3}, {"label":"2", "x":17.5, "y":3}, {"label":"3", "x":18.5, "y":3}, {"label":"Enter", "x":19.5, "y":3, "h":2}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4}, {"label":"Alt", "x":2.25, "y":4, "w":1.25}, {"x":3.5, "y":4, "w":7}, {"label":"Alt", "x":10.5, "y":4, "w":1.25}, {"label":"Win", "x":11.75, "y":4}, {"label":"Menu", "x":12.75, "y":4, "w":1.25}, {"label":"←", "x":14.25, "y":4.25}, {"label":"↓", "x":15.25, "y":4.25}, {"label":"→", "x":16.25, "y":4.25}, {"label":"0", "x":17.5, "y":4}, {"label":".", "x":18.5, "y":4}]
|
"layout": [
|
||||||
},
|
{"x": 0, "y": 0},
|
||||||
"LAYOUT_split_bs": {
|
{"x": 1, "y": 0},
|
||||||
"layout": [{"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"label":"Insert", "x":15.25, "y":0}, {"label":"Num Lock", "x":16.5, "y":0}, {"label":"/", "x":17.5, "y":0}, {"label":"*", "x":18.5, "y":0}, {"label":"-", "x":19.5, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Delete", "x":15.25, "y":1}, {"label":"7", "x":16.5, "y":1}, {"label":"8", "x":17.5, "y":1}, {"label":"9", "x":18.5, "y":1}, {"label":"+", "x":19.5, "y":1, "h":2}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"4", "x":16.5, "y":2}, {"label":"5", "x":17.5, "y":2}, {"label":"6", "x":18.5, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"Fn", "x":14, "y":3}, {"label":"↑", "x":15.25, "y":3.25}, {"label":"1", "x":16.5, "y":3}, {"label":"2", "x":17.5, "y":3}, {"label":"3", "x":18.5, "y":3}, {"label":"Enter", "x":19.5, "y":3, "h":2}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4}, {"label":"Alt", "x":2.25, "y":4, "w":1.25}, {"x":3.5, "y":4, "w":7}, {"label":"Alt", "x":10.5, "y":4, "w":1.25}, {"label":"Win", "x":11.75, "y":4}, {"label":"Menu", "x":12.75, "y":4, "w":1.25}, {"label":"←", "x":14.25, "y":4.25}, {"label":"↓", "x":15.25, "y":4.25}, {"label":"→", "x":16.25, "y":4.25}, {"label":"0", "x":17.5, "y":4}, {"label":".", "x":18.5, "y":4}]
|
{"x": 2, "y": 0},
|
||||||
|
{"x": 3, "y": 0},
|
||||||
|
{"x": 4, "y": 0},
|
||||||
|
{"x": 5, "y": 0},
|
||||||
|
{"x": 6, "y": 0},
|
||||||
|
{"x": 7, "y": 0},
|
||||||
|
{"x": 8, "y": 0},
|
||||||
|
{"x": 9, "y": 0},
|
||||||
|
{"x": 10, "y": 0},
|
||||||
|
{"x": 11, "y": 0},
|
||||||
|
{"x": 12, "y": 0},
|
||||||
|
{"x": 13, "y": 0, "w": 2},
|
||||||
|
|
||||||
|
{"x": 15.25, "y": 0},
|
||||||
|
|
||||||
|
{"x": 16.5, "y": 0},
|
||||||
|
{"x": 17.5, "y": 0},
|
||||||
|
{"x": 18.5, "y": 0},
|
||||||
|
{"x": 19.5, "y": 0},
|
||||||
|
|
||||||
|
{"x": 0, "y": 1, "w": 1.5},
|
||||||
|
{"x": 1.5, "y": 1},
|
||||||
|
{"x": 2.5, "y": 1},
|
||||||
|
{"x": 3.5, "y": 1},
|
||||||
|
{"x": 4.5, "y": 1},
|
||||||
|
{"x": 5.5, "y": 1},
|
||||||
|
{"x": 6.5, "y": 1},
|
||||||
|
{"x": 7.5, "y": 1},
|
||||||
|
{"x": 8.5, "y": 1},
|
||||||
|
{"x": 9.5, "y": 1},
|
||||||
|
{"x": 10.5, "y": 1},
|
||||||
|
{"x": 11.5, "y": 1},
|
||||||
|
{"x": 12.5, "y": 1},
|
||||||
|
{"x": 13.5, "y": 1, "w": 1.5},
|
||||||
|
|
||||||
|
{"x": 15.25, "y": 1},
|
||||||
|
|
||||||
|
{"x": 16.5, "y": 1},
|
||||||
|
{"x": 17.5, "y": 1},
|
||||||
|
{"x": 18.5, "y": 1},
|
||||||
|
{"x": 19.5, "y": 1, "h": 2},
|
||||||
|
|
||||||
|
{"x": 0, "y": 2, "w": 1.75},
|
||||||
|
{"x": 1.75, "y": 2},
|
||||||
|
{"x": 2.75, "y": 2},
|
||||||
|
{"x": 3.75, "y": 2},
|
||||||
|
{"x": 4.75, "y": 2},
|
||||||
|
{"x": 5.75, "y": 2},
|
||||||
|
{"x": 6.75, "y": 2},
|
||||||
|
{"x": 7.75, "y": 2},
|
||||||
|
{"x": 8.75, "y": 2},
|
||||||
|
{"x": 9.75, "y": 2},
|
||||||
|
{"x": 10.75, "y": 2},
|
||||||
|
{"x": 11.75, "y": 2},
|
||||||
|
{"x": 12.75, "y": 2, "w": 2.25},
|
||||||
|
|
||||||
|
{"x": 16.5, "y": 2},
|
||||||
|
{"x": 17.5, "y": 2},
|
||||||
|
{"x": 18.5, "y": 2},
|
||||||
|
|
||||||
|
{"x": 0, "y": 3, "w": 2.25},
|
||||||
|
{"x": 2.25, "y": 3},
|
||||||
|
{"x": 3.25, "y": 3},
|
||||||
|
{"x": 4.25, "y": 3},
|
||||||
|
{"x": 5.25, "y": 3},
|
||||||
|
{"x": 6.25, "y": 3},
|
||||||
|
{"x": 7.25, "y": 3},
|
||||||
|
{"x": 8.25, "y": 3},
|
||||||
|
{"x": 9.25, "y": 3},
|
||||||
|
{"x": 10.25, "y": 3},
|
||||||
|
{"x": 11.25, "y": 3},
|
||||||
|
{"x": 12.25, "y": 3, "w": 1.75},
|
||||||
|
{"x": 14, "y": 3},
|
||||||
|
|
||||||
|
{"x": 15.25, "y": 3.25},
|
||||||
|
|
||||||
|
{"x": 16.5, "y": 3},
|
||||||
|
{"x": 17.5, "y": 3},
|
||||||
|
{"x": 18.5, "y": 3},
|
||||||
|
{"x": 19.5, "y": 3, "h": 2},
|
||||||
|
|
||||||
|
{"x": 0, "y": 4, "w": 1.25},
|
||||||
|
{"x": 1.25, "y": 4},
|
||||||
|
{"x": 2.25, "y": 4, "w": 1.25},
|
||||||
|
{"x": 3.5, "y": 4, "w": 7},
|
||||||
|
{"x": 10.5, "y": 4, "w": 1.25},
|
||||||
|
{"x": 11.75, "y": 4},
|
||||||
|
{"x": 12.75, "y": 4, "w": 1.25},
|
||||||
|
|
||||||
|
{"x": 14.25, "y": 4.25},
|
||||||
|
{"x": 15.25, "y": 4.25},
|
||||||
|
{"x": 16.25, "y": 4.25},
|
||||||
|
|
||||||
|
{"x": 17.5, "y": 4},
|
||||||
|
{"x": 18.5, "y": 4}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_split_bs": {
|
||||||
|
"layout": [
|
||||||
|
{"x": 0, "y": 0},
|
||||||
|
{"x": 1, "y": 0},
|
||||||
|
{"x": 2, "y": 0},
|
||||||
|
{"x": 3, "y": 0},
|
||||||
|
{"x": 4, "y": 0},
|
||||||
|
{"x": 5, "y": 0},
|
||||||
|
{"x": 6, "y": 0},
|
||||||
|
{"x": 7, "y": 0},
|
||||||
|
{"x": 8, "y": 0},
|
||||||
|
{"x": 9, "y": 0},
|
||||||
|
{"x": 10, "y": 0},
|
||||||
|
{"x": 11, "y": 0},
|
||||||
|
{"x": 12, "y": 0},
|
||||||
|
{"x": 13, "y": 0},
|
||||||
|
{"x": 14, "y": 0},
|
||||||
|
|
||||||
|
{"x": 15.25, "y": 0},
|
||||||
|
|
||||||
|
{"x": 16.5, "y": 0},
|
||||||
|
{"x": 17.5, "y": 0},
|
||||||
|
{"x": 18.5, "y": 0},
|
||||||
|
{"x": 19.5, "y": 0},
|
||||||
|
|
||||||
|
{"x": 0, "y": 1, "w": 1.5},
|
||||||
|
{"x": 1.5, "y": 1},
|
||||||
|
{"x": 2.5, "y": 1},
|
||||||
|
{"x": 3.5, "y": 1},
|
||||||
|
{"x": 4.5, "y": 1},
|
||||||
|
{"x": 5.5, "y": 1},
|
||||||
|
{"x": 6.5, "y": 1},
|
||||||
|
{"x": 7.5, "y": 1},
|
||||||
|
{"x": 8.5, "y": 1},
|
||||||
|
{"x": 9.5, "y": 1},
|
||||||
|
{"x": 10.5, "y": 1},
|
||||||
|
{"x": 11.5, "y": 1},
|
||||||
|
{"x": 12.5, "y": 1},
|
||||||
|
{"x": 13.5, "y": 1, "w": 1.5},
|
||||||
|
|
||||||
|
{"x": 15.25, "y": 1},
|
||||||
|
|
||||||
|
{"x": 16.5, "y": 1},
|
||||||
|
{"x": 17.5, "y": 1},
|
||||||
|
{"x": 18.5, "y": 1},
|
||||||
|
{"x": 19.5, "y": 1, "h": 2},
|
||||||
|
|
||||||
|
{"x": 0, "y": 2, "w": 1.75},
|
||||||
|
{"x": 1.75, "y": 2},
|
||||||
|
{"x": 2.75, "y": 2},
|
||||||
|
{"x": 3.75, "y": 2},
|
||||||
|
{"x": 4.75, "y": 2},
|
||||||
|
{"x": 5.75, "y": 2},
|
||||||
|
{"x": 6.75, "y": 2},
|
||||||
|
{"x": 7.75, "y": 2},
|
||||||
|
{"x": 8.75, "y": 2},
|
||||||
|
{"x": 9.75, "y": 2},
|
||||||
|
{"x": 10.75, "y": 2},
|
||||||
|
{"x": 11.75, "y": 2},
|
||||||
|
{"x": 12.75, "y": 2, "w": 2.25},
|
||||||
|
|
||||||
|
{"x": 16.5, "y": 2},
|
||||||
|
{"x": 17.5, "y": 2},
|
||||||
|
{"x": 18.5, "y": 2},
|
||||||
|
|
||||||
|
{"x": 0, "y": 3, "w": 2.25},
|
||||||
|
{"x": 2.25, "y": 3},
|
||||||
|
{"x": 3.25, "y": 3},
|
||||||
|
{"x": 4.25, "y": 3},
|
||||||
|
{"x": 5.25, "y": 3},
|
||||||
|
{"x": 6.25, "y": 3},
|
||||||
|
{"x": 7.25, "y": 3},
|
||||||
|
{"x": 8.25, "y": 3},
|
||||||
|
{"x": 9.25, "y": 3},
|
||||||
|
{"x": 10.25, "y": 3},
|
||||||
|
{"x": 11.25, "y": 3},
|
||||||
|
{"x": 12.25, "y": 3, "w": 1.75},
|
||||||
|
{"x": 14, "y": 3},
|
||||||
|
|
||||||
|
{"x": 15.25, "y": 3.25},
|
||||||
|
|
||||||
|
{"x": 16.5, "y": 3},
|
||||||
|
{"x": 17.5, "y": 3},
|
||||||
|
{"x": 18.5, "y": 3},
|
||||||
|
{"x": 19.5, "y": 3, "h": 2},
|
||||||
|
|
||||||
|
{"x": 0, "y": 4, "w": 1.25},
|
||||||
|
{"x": 1.25, "y": 4},
|
||||||
|
{"x": 2.25, "y": 4, "w": 1.25},
|
||||||
|
{"x": 3.5, "y": 4, "w": 7},
|
||||||
|
{"x": 10.5, "y": 4, "w": 1.25},
|
||||||
|
{"x": 11.75, "y": 4},
|
||||||
|
{"x": 12.75, "y": 4, "w": 1.25},
|
||||||
|
|
||||||
|
{"x": 14.25, "y": 4.25},
|
||||||
|
{"x": 15.25, "y": 4.25},
|
||||||
|
{"x": 16.25, "y": 4.25},
|
||||||
|
|
||||||
|
{"x": 17.5, "y": 4},
|
||||||
|
{"x": 18.5, "y": 4}
|
||||||
|
]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -13,36 +13,23 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include QMK_KEYBOARD_H
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
[0] = LAYOUT(\
|
LAYOUT(
|
||||||
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_INS, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,\
|
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_INS, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
|
||||||
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_DELETE, KC_P7, KC_P8, KC_P9, KC_PPLS,\
|
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_DEL, KC_P7, KC_P8, KC_P9, KC_PPLS,
|
||||||
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_P4, KC_P5, KC_P6, \
|
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_P4, KC_P5, KC_P6,
|
||||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, \
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
|
||||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, MO(1), KC_RGUI, KC_RCTRL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_P0, KC_PDOT ),
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
|
||||||
|
),
|
||||||
|
|
||||||
[1] = LAYOUT(\
|
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_BSPC, KC_INS, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,\
|
_______, 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_TAB, KC_Q, KC_W, KC_E, RESET, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DELETE, KC_P7, KC_P8, KC_P9, KC_PPLS,\
|
_______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
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_P4, KC_P5, KC_P6, \
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLSH, KC_RSFT, KC_TRNS, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, \
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, KC_TRNS, KC_RGUI, KC_RCTRL, BL_TOGG, BL_DEC, BL_INC, KC_P0, KC_PDOT ),
|
_______, _______, _______, _______, _______, _______, _______, BL_TOGG, BL_DEC, BL_INC, _______, _______
|
||||||
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
void matrix_init_user(void) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void matrix_scan_user(void) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void led_set_user(uint8_t usb_led) {
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
# The default keymap for al1
|
|
||||||
@@ -1,32 +1,35 @@
|
|||||||
|
/* Copyright 2018 MechMerlin
|
||||||
|
*
|
||||||
|
* 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
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
[0] = LAYOUT_split_bs(\
|
LAYOUT_split_bs(
|
||||||
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_GRAVE, KC_BSPC, KC_INS, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
|
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_GRV, KC_BSPC, KC_INS, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
|
||||||
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_DELETE, KC_P7, KC_P8, KC_P9, KC_PPLS,\
|
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_DEL, KC_P7, KC_P8, KC_P9, KC_PPLS,
|
||||||
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_P4, KC_P5, KC_P6, \
|
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_P4, KC_P5, KC_P6,
|
||||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, \
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
|
||||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, MO(1), KC_RGUI, KC_RCTRL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_P0, KC_PDOT ),
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
|
||||||
[1] = LAYOUT_split_bs(\
|
),
|
||||||
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_GRAVE, KC_DELETE, KC_INS, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
|
|
||||||
KC_TAB, KC_Q, KC_W, KC_E, RESET, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DELETE, KC_P7, KC_P8, KC_P9, KC_PPLS,\
|
LAYOUT_split_bs(
|
||||||
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_P4, KC_P5, KC_P6, \
|
_______, 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLSH, KC_RSFT, KC_TRNS, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, \
|
_______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, KC_TRNS, KC_RGUI, KC_RCTRL, BL_TOGG, BL_DEC, BL_INC, KC_P0, KC_PDOT ),
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, BL_TOGG, BL_DEC, BL_INC, _______, _______
|
||||||
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
void matrix_init_user(void) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void matrix_scan_user(void) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void led_set_user(uint8_t usb_led) {
|
|
||||||
|
|
||||||
}
|
|
||||||
+83
-192
@@ -1,201 +1,92 @@
|
|||||||
#include <stdint.h>
|
|
||||||
#include <stdbool.h>
|
|
||||||
#include <avr/io.h>
|
|
||||||
#include <util/delay.h>
|
|
||||||
#include "print.h"
|
|
||||||
#include "debug.h"
|
|
||||||
#include "util.h"
|
|
||||||
#include "matrix.h"
|
#include "matrix.h"
|
||||||
|
|
||||||
#ifndef DEBOUNCE
|
#include "gpio.h"
|
||||||
# define DEBOUNCE 5
|
|
||||||
#endif
|
|
||||||
static uint8_t debouncing = DEBOUNCE;
|
|
||||||
|
|
||||||
static matrix_row_t matrix[MATRIX_ROWS];
|
|
||||||
static matrix_row_t matrix_debouncing[MATRIX_ROWS];
|
|
||||||
|
|
||||||
static uint8_t read_rows(void);
|
|
||||||
static void init_rows(void);
|
|
||||||
static void unselect_cols(void);
|
|
||||||
static void select_col(uint8_t col);
|
|
||||||
|
|
||||||
inline uint8_t matrix_rows(void) {
|
|
||||||
return MATRIX_ROWS;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline uint8_t matrix_cols(void) {
|
|
||||||
return MATRIX_COLS;
|
|
||||||
}
|
|
||||||
|
|
||||||
__attribute__ ((weak))
|
|
||||||
void matrix_init_kb(void) {
|
|
||||||
matrix_init_user();
|
|
||||||
}
|
|
||||||
|
|
||||||
__attribute__ ((weak))
|
|
||||||
void matrix_scan_kb(void) {
|
|
||||||
matrix_scan_user();
|
|
||||||
}
|
|
||||||
|
|
||||||
__attribute__ ((weak))
|
|
||||||
void matrix_init_user(void) {
|
|
||||||
}
|
|
||||||
|
|
||||||
__attribute__ ((weak))
|
|
||||||
void matrix_scan_user(void) {
|
|
||||||
}
|
|
||||||
|
|
||||||
void matrix_init(void) {
|
|
||||||
// initialize row and col
|
|
||||||
unselect_cols();
|
|
||||||
init_rows();
|
|
||||||
|
|
||||||
// initialize matrix state: all keys off
|
|
||||||
for (uint8_t i=0; i < MATRIX_ROWS; i++) {
|
|
||||||
matrix[i] = 0;
|
|
||||||
matrix_debouncing[i] = 0;
|
|
||||||
}
|
|
||||||
matrix_init_quantum();
|
|
||||||
}
|
|
||||||
|
|
||||||
uint8_t matrix_scan(void) {
|
|
||||||
for (uint8_t col = 0; col < MATRIX_COLS; col++) {
|
|
||||||
select_col(col);
|
|
||||||
_delay_us(3);
|
|
||||||
uint8_t rows = read_rows();
|
|
||||||
for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
|
|
||||||
bool prev_bit = matrix_debouncing[row] & ((matrix_row_t)1<<col);
|
|
||||||
bool curr_bit = rows & (1<<row);
|
|
||||||
if (prev_bit != curr_bit) {
|
|
||||||
matrix_debouncing[row] ^= ((matrix_row_t)1<<col);
|
|
||||||
debouncing = DEBOUNCE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
unselect_cols();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (debouncing) {
|
|
||||||
if (--debouncing) {
|
|
||||||
_delay_ms(1);
|
|
||||||
} else {
|
|
||||||
for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
|
|
||||||
matrix[i] = matrix_debouncing[i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
matrix_scan_quantum();
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool matrix_is_modified(void) {
|
|
||||||
if (debouncing)
|
|
||||||
return false;
|
|
||||||
else
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline bool matrix_is_on(uint8_t row, uint8_t col) {
|
|
||||||
return (matrix[row] & ((matrix_row_t)1<<col));
|
|
||||||
}
|
|
||||||
|
|
||||||
inline matrix_row_t matrix_get_row(uint8_t row) {
|
|
||||||
return matrix[row];
|
|
||||||
}
|
|
||||||
|
|
||||||
void matrix_print(void) {
|
|
||||||
print("\nr/c 0123456789ABCDEF\n");
|
|
||||||
for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
|
|
||||||
xprintf("%02X: %032lb\n", row, bitrev32(matrix_get_row(row)));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
uint8_t matrix_key_count(void) {
|
|
||||||
uint8_t count = 0;
|
|
||||||
for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
|
|
||||||
count += bitpop32(matrix[i]);
|
|
||||||
}
|
|
||||||
return count;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Row pin configuration
|
|
||||||
*
|
|
||||||
* row: 0 1 2 3 4 5
|
|
||||||
* pin: C7 B1 B2 C6 B4 B5
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
static void init_rows(void)
|
|
||||||
{
|
|
||||||
DDRC &= ~0b11000000;
|
|
||||||
DDRB &= ~0b00110110;
|
|
||||||
PORTC |= 0b11000000;
|
|
||||||
PORTB |= 0b00110110;
|
|
||||||
}
|
|
||||||
|
|
||||||
static uint8_t read_rows(void) {
|
static uint8_t read_rows(void) {
|
||||||
return (PINC&(1<<PC7) ? 0 : (1<<0)) |
|
return (readPin(C7) ? 0 : 1) |
|
||||||
(PINB&(1<<PB1) ? 0 : (1<<1)) |
|
(readPin(B1) ? 0 : 2) |
|
||||||
(PINB&(1<<PB2) ? 0 : (1<<2)) |
|
(readPin(B2) ? 0 : 4) |
|
||||||
(PINC&(1<<PC6) ? 0 : (1<<3)) |
|
(readPin(C6) ? 0 : 8) |
|
||||||
(PINB&(1<<PB4) ? 0 : (1<<4)) |
|
(readPin(B4) ? 0 : 16) |
|
||||||
(PINB&(1<<PB5) ? 0 : (1<<5));
|
(readPin(B5) ? 0 : 32);
|
||||||
}
|
|
||||||
|
|
||||||
/* Row pin configuration
|
|
||||||
* pin: D3 D7 D6 D5 D4
|
|
||||||
* row: off 0 x x x x
|
|
||||||
* 0 1 0 0 0 0
|
|
||||||
* 1 1 0 0 0 1
|
|
||||||
* 2 1 0 0 1 0
|
|
||||||
* 3 1 0 0 1 1
|
|
||||||
* 4 1 0 1 0 0
|
|
||||||
* 5 1 0 1 0 1
|
|
||||||
* 6 1 0 1 1 0
|
|
||||||
* 7 1 0 1 1 1
|
|
||||||
* 8 1 1 0 0 0
|
|
||||||
* 9 1 1 0 0 1
|
|
||||||
* 10 1 1 0 1 0
|
|
||||||
* 11 1 1 0 1 1
|
|
||||||
* 12 1 1 1 0 0
|
|
||||||
* 13 1 1 1 0 1
|
|
||||||
* 14 1 1 1 1 0
|
|
||||||
* 15 1 1 1 1 1
|
|
||||||
*/
|
|
||||||
static void unselect_cols(void)
|
|
||||||
{
|
|
||||||
// output high(DDR:1, PORT:1) to unselect
|
|
||||||
DDRB |= (1 << PD3);
|
|
||||||
PORTB |= (1 << PD3);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void select_col(uint8_t col) {
|
static void select_col(uint8_t col) {
|
||||||
DDRD |= (1<<PD3 | 1<<PD4 | 1<<PD5 | 1<<PD6 | 1<<PD7);
|
writePinLow(D3);
|
||||||
|
|
||||||
PORTD &= ~(1<<PD3);
|
writePin(D4, (col & 1));
|
||||||
|
writePin(D5, (col & 2));
|
||||||
if (col & (1<<0)) {
|
writePin(D6, (col & 4));
|
||||||
PORTD |= (1<<PD4);
|
writePin(D7, (col & 8));
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
PORTD &= ~(1<<PD4);
|
static void unselect_cols(void) {
|
||||||
}
|
writePinHigh(D3);
|
||||||
if (col & (1<<1)) {
|
}
|
||||||
PORTD |= (1<<PD5);
|
|
||||||
}
|
void matrix_init_custom(void) {
|
||||||
else {
|
/* 74HC154 col pin configuration
|
||||||
PORTD &= ~(1<<PD5);
|
* pin: D3 D7 D6 D5 D4
|
||||||
}
|
* row: off 0 x x x x
|
||||||
if (col & (1<<2)) {
|
* 0 1 0 0 0 0
|
||||||
PORTD |= (1<<PD6);
|
* 1 1 0 0 0 1
|
||||||
}
|
* 2 1 0 0 1 0
|
||||||
else {
|
* 3 1 0 0 1 1
|
||||||
PORTD &= ~(1<<PD6);
|
* 4 1 0 1 0 0
|
||||||
}
|
* 5 1 0 1 0 1
|
||||||
if (col & (1<<3)) {
|
* 6 1 0 1 1 0
|
||||||
PORTD |= (1<<PD7);
|
* 7 1 0 1 1 1
|
||||||
}
|
* 8 1 1 0 0 0
|
||||||
else {
|
* 9 1 1 0 0 1
|
||||||
PORTD &= ~(1<<PD7);
|
* 10 1 1 0 1 0
|
||||||
}
|
* 11 1 1 0 1 1
|
||||||
|
* 12 1 1 1 0 0
|
||||||
|
* 13 1 1 1 0 1
|
||||||
|
* 14 1 1 1 1 0
|
||||||
|
* 15 1 1 1 1 1
|
||||||
|
*/
|
||||||
|
setPinOutput(D3);
|
||||||
|
writePinHigh(D3);
|
||||||
|
|
||||||
|
setPinOutput(D4);
|
||||||
|
setPinOutput(D5);
|
||||||
|
setPinOutput(D6);
|
||||||
|
setPinOutput(D7);
|
||||||
|
|
||||||
|
|
||||||
|
/* Row pin configuration
|
||||||
|
*
|
||||||
|
* row: 0 1 2 3 4 5
|
||||||
|
* pin: C7 B1 B2 C6 B4 B5
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
setPinInputHigh(C7);
|
||||||
|
setPinInputHigh(B1);
|
||||||
|
setPinInputHigh(B2);
|
||||||
|
setPinInputHigh(C6);
|
||||||
|
setPinInputHigh(B4);
|
||||||
|
setPinInputHigh(B5);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool matrix_scan_custom(matrix_row_t current_matrix[]) {
|
||||||
|
bool changed = false;
|
||||||
|
|
||||||
|
for (uint8_t col = 0; col < MATRIX_COLS; col++) {
|
||||||
|
select_col(col);
|
||||||
|
matrix_io_delay();
|
||||||
|
uint8_t rows = read_rows();
|
||||||
|
|
||||||
|
for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
|
||||||
|
bool prev_bit = current_matrix[row] & ((matrix_row_t)1 << col);
|
||||||
|
bool curr_bit = rows & (1 << row);
|
||||||
|
|
||||||
|
if (prev_bit != curr_bit) {
|
||||||
|
current_matrix[row] ^= ((matrix_row_t)1 << col);
|
||||||
|
changed = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
unselect_cols();
|
||||||
|
}
|
||||||
|
|
||||||
|
return changed;
|
||||||
}
|
}
|
||||||
@@ -2,15 +2,12 @@
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin), [Olivia](https://github.com/olivia)
|
* Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin), [Olivia](https://github.com/olivia)
|
||||||
Hardware Supported: AL1 PCB
|
* Hardware Supported: AL1 PCB
|
||||||
Hardware Availability: [GroupBuy](https://geekhack.org/index.php?topic=93258.0)
|
* Hardware Availability: [GroupBuy](https://geekhack.org/index.php?topic=93258.0)
|
||||||
|
|
||||||
Ported from [TriangleLab](https://github.com/TriangleLab)'s repo: https://github.com/TriangleLab/AL1-Firmware/tree/master/keyboards/al1
|
|
||||||
|
|
||||||
Make example for this keyboard (after setting up your build environment):
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
make al1:default
|
make al1:default
|
||||||
make al1:splitbs
|
|
||||||
|
|
||||||
See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information.
|
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).
|
||||||
+7
-15
@@ -2,19 +2,12 @@
|
|||||||
MCU = atmega32u4
|
MCU = atmega32u4
|
||||||
|
|
||||||
# Bootloader selection
|
# Bootloader selection
|
||||||
# Teensy halfkay
|
|
||||||
# Pro Micro caterina
|
|
||||||
# Atmel DFU atmel-dfu
|
|
||||||
# LUFA DFU lufa-dfu
|
|
||||||
# QMK DFU qmk-dfu
|
|
||||||
# ATmega32A bootloadHID
|
|
||||||
# ATmega328P USBasp
|
|
||||||
BOOTLOADER = atmel-dfu
|
BOOTLOADER = atmel-dfu
|
||||||
|
|
||||||
# Build Options
|
# Build Options
|
||||||
# change yes to no to disable
|
# change yes to no to disable
|
||||||
#
|
#
|
||||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
||||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
CONSOLE_ENABLE = yes # Console for debug
|
CONSOLE_ENABLE = yes # Console for debug
|
||||||
@@ -23,11 +16,10 @@ COMMAND_ENABLE = yes # Commands for debug and configuration
|
|||||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
NKRO_ENABLE = no # USB Nkey Rollover
|
NKRO_ENABLE = no # USB Nkey Rollover
|
||||||
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
|
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||||
RGBLIGHT_ENABLE = no
|
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||||
MIDI_ENABLE = no # MIDI support
|
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||||
UNICODE_ENABLE = no # Unicode
|
AUDIO_ENABLE = no # Audio output
|
||||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
|
||||||
AUDIO_ENABLE = no # Audio output on port C6
|
CUSTOM_MATRIX = lite
|
||||||
CUSTOM_MATRIX = yes
|
|
||||||
SRC += matrix.c
|
SRC += matrix.c
|
||||||
@@ -2,14 +2,71 @@
|
|||||||
"keyboard_name": "allison_numpad",
|
"keyboard_name": "allison_numpad",
|
||||||
"url": "www.yiancar-designs.com",
|
"url": "www.yiancar-designs.com",
|
||||||
"maintainer": "Yiancar",
|
"maintainer": "Yiancar",
|
||||||
"width": 4,
|
"width": 4,
|
||||||
"height": 6.25,
|
"height": 6.25,
|
||||||
"layouts": {
|
"layouts": {
|
||||||
"LAYOUT_ortho_6x4": {
|
"LAYOUT_ortho_6x4": {
|
||||||
"layout": [{"label":"0,0", "x":0, "y":0}, {"label":"0,1", "x":1, "y":0}, {"label":"0,2", "x":2, "y":0}, {"label":"0,3", "x":3, "y":0}, {"label":"1,0", "x":0, "y":1.25}, {"label":"1,1", "x":1, "y":1.25}, {"label":"1,2", "x":2, "y":1.25}, {"label":"1,3", "x":3, "y":1.25}, {"label":"2,0", "x":0, "y":2.25}, {"label":"2,1", "x":1, "y":2.25}, {"label":"2,2", "x":2, "y":2.25}, {"label":"2,3", "x":3, "y":2.25}, {"label":"3,0", "x":0, "y":3.25}, {"label":"3,1", "x":1, "y":3.25}, {"label":"3,2", "x":2, "y":3.25}, {"label":"3,3", "x":3, "y":3.25}, {"label":"4,0", "x":0, "y":4.25}, {"label":"4,1", "x":1, "y":4.25}, {"label":"4,2", "x":2, "y":4.25}, {"label":"4,3", "x":3, "y":4.25}, {"label":"5,0", "x":0, "y":5.25}, {"label":"5,1", "x":1, "y":5.25}, {"label":"5,2", "x":2, "y":5.25}, {"label":"5,3", "x":3, "y":5.25}]
|
"layout": [
|
||||||
|
{"label":"0,0", "x":0, "y":0},
|
||||||
|
{"label":"0,1", "x":1, "y":0},
|
||||||
|
{"label":"0,2", "x":2, "y":0},
|
||||||
|
{"label":"0,3", "x":3, "y":0},
|
||||||
|
|
||||||
|
{"label":"1,0", "x":0, "y":1.25},
|
||||||
|
{"label":"1,1", "x":1, "y":1.25},
|
||||||
|
{"label":"1,2", "x":2, "y":1.25},
|
||||||
|
{"label":"1,3", "x":3, "y":1.25},
|
||||||
|
|
||||||
|
{"label":"2,0", "x":0, "y":2.25},
|
||||||
|
{"label":"2,1", "x":1, "y":2.25},
|
||||||
|
{"label":"2,2", "x":2, "y":2.25},
|
||||||
|
{"label":"2,3", "x":3, "y":2.25},
|
||||||
|
|
||||||
|
{"label":"3,0", "x":0, "y":3.25},
|
||||||
|
{"label":"3,1", "x":1, "y":3.25},
|
||||||
|
{"label":"3,2", "x":2, "y":3.25},
|
||||||
|
{"label":"3,3", "x":3, "y":3.25},
|
||||||
|
|
||||||
|
{"label":"4,0", "x":0, "y":4.25},
|
||||||
|
{"label":"4,1", "x":1, "y":4.25},
|
||||||
|
{"label":"4,2", "x":2, "y":4.25},
|
||||||
|
{"label":"4,3", "x":3, "y":4.25},
|
||||||
|
|
||||||
|
{"label":"5,0", "x":0, "y":5.25},
|
||||||
|
{"label":"5,1", "x":1, "y":5.25},
|
||||||
|
{"label":"5,2", "x":2, "y":5.25},
|
||||||
|
{"label":"5,3", "x":3, "y":5.25}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"LAYOUT_numpad_6x4": {
|
"LAYOUT_numpad_6x4": {
|
||||||
"layout": [{"label":"0,0", "x":0, "y":0}, {"label":"0,1", "x":1, "y":0}, {"label":"0,2", "x":2, "y":0}, {"label":"0,3", "x":3, "y":0}, {"label":"1,0", "x":0, "y":1.25}, {"label":"1,1", "x":1, "y":1.25}, {"label":"1,2", "x":2, "y":1.25}, {"label":"1,3", "x":3, "y":1.25}, {"label":"2,0", "x":0, "y":2.25}, {"label":"2,1", "x":1, "y":2.25}, {"label":"2,2", "x":2, "y":2.25}, {"label":"3,3", "x":3, "y":2.25, "h":2}, {"label":"3,0", "x":0, "y":3.25}, {"label":"3,1", "x":1, "y":3.25}, {"label":"3,2", "x":2, "y":3.25}, {"label":"4,0", "x":0, "y":4.25}, {"label":"4,1", "x":1, "y":4.25}, {"label":"4,2", "x":2, "y":4.25}, {"label":"5,3", "x":3, "y":4.25, "h":2}, {"label":"5,0", "x":0, "y":5.25, "w":2}, {"label":"5,2", "x":2, "y":5.25}]
|
"layout": [
|
||||||
|
{"label":"0,0", "x":0, "y":0},
|
||||||
|
{"label":"0,1", "x":1, "y":0},
|
||||||
|
{"label":"0,2", "x":2, "y":0},
|
||||||
|
{"label":"0,3", "x":3, "y":0},
|
||||||
|
|
||||||
|
{"label":"1,0", "x":0, "y":1.25},
|
||||||
|
{"label":"1,1", "x":1, "y":1.25},
|
||||||
|
{"label":"1,2", "x":2, "y":1.25},
|
||||||
|
{"label":"1,3", "x":3, "y":1.25},
|
||||||
|
|
||||||
|
{"label":"2,0", "x":0, "y":2.25},
|
||||||
|
{"label":"2,1", "x":1, "y":2.25},
|
||||||
|
{"label":"2,2", "x":2, "y":2.25},
|
||||||
|
|
||||||
|
{"label":"3,0", "x":0, "y":3.25},
|
||||||
|
{"label":"3,1", "x":1, "y":3.25},
|
||||||
|
{"label":"3,2", "x":2, "y":3.25},
|
||||||
|
{"label":"3,3", "x":3, "y":2.25, "h":2},
|
||||||
|
|
||||||
|
{"label":"4,0", "x":0, "y":4.25},
|
||||||
|
{"label":"4,1", "x":1, "y":4.25},
|
||||||
|
{"label":"4,2", "x":2, "y":4.25},
|
||||||
|
|
||||||
|
{"label":"5,0", "x":0, "y":5.25, "w":2},
|
||||||
|
{"label":"5,2", "x":2, "y":5.25},
|
||||||
|
{"label":"5,3", "x":3, "y":4.25, "h":2}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -14,33 +14,4 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include "alu84.h"
|
#include "alu84.h"
|
||||||
#include "rgblight.h"
|
|
||||||
#include "action_layer.h"
|
|
||||||
#include "quantum.h"
|
|
||||||
#include "action.h"
|
|
||||||
|
|
||||||
|
|
||||||
void matrix_scan_kb(void) {
|
|
||||||
// put your looping keyboard code here
|
|
||||||
// runs every cycle (a lot)
|
|
||||||
|
|
||||||
matrix_scan_user();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
|
|
||||||
// put your per-action keyboard code here
|
|
||||||
// runs for every action, just before processing by the firmware
|
|
||||||
|
|
||||||
return process_record_user(keycode, record);
|
|
||||||
}
|
|
||||||
|
|
||||||
void led_set_kb(uint8_t usb_led) {
|
|
||||||
// put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
|
|
||||||
|
|
||||||
led_set_user(usb_led);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+15
-19
@@ -14,28 +14,24 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
#ifndef ALU84_H
|
|
||||||
#define ALU84_H
|
|
||||||
|
|
||||||
#include "quantum.h"
|
#include "quantum.h"
|
||||||
|
|
||||||
|
#define ___ KC_NO
|
||||||
|
|
||||||
|
#define LAYOUT_75_ansi( \
|
||||||
#define LAYOUT( \
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, \
|
||||||
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, \
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, K1F, \
|
||||||
K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K114, K115, \
|
K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, \
|
||||||
K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, \
|
K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3F, \
|
||||||
K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K315, \
|
K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4D, K4E, K4F, \
|
||||||
K400, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K413, K414, K415, \
|
K50, K51, K53, K56, K5A, K5B, K5C, K5D, K5E, K5F \
|
||||||
K500, K501, K503, K506, K510, K511, K512, K513, K514, K515 \
|
|
||||||
) { \
|
) { \
|
||||||
{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \
|
||||||
{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, KC_NO, K114, K115 }, \
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, ___, K1E, K1F }, \
|
||||||
{ K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215 }, \
|
{ K20, ___, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F }, \
|
||||||
{ K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, KC_NO, K315 }, \
|
{ K30, ___, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, ___, K3F }, \
|
||||||
{ K400, KC_NO, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, KC_NO, K413, K414, K415 }, \
|
{ K40, ___, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, ___, K4D, K4E, K4F }, \
|
||||||
{ K500, K501, KC_NO, K503, KC_NO, KC_NO, K506, KC_NO, KC_NO, KC_NO, K510, K511, K512, K513, K514, K515 } \
|
{ K50, K51, ___, K53, ___, ___, K56, ___, ___, ___, K5A, K5B, K5C, K5D, K5E, K5F } \
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
|
||||||
+22
-20
@@ -14,8 +14,7 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef ALU84_CONFIG_H
|
#pragma once
|
||||||
#define ALU84_CONFIG_H
|
|
||||||
|
|
||||||
#include "config_common.h"
|
#include "config_common.h"
|
||||||
|
|
||||||
@@ -30,21 +29,37 @@
|
|||||||
#define MATRIX_ROWS 6
|
#define MATRIX_ROWS 6
|
||||||
#define MATRIX_COLS 16
|
#define MATRIX_COLS 16
|
||||||
|
|
||||||
/* key matrix pins */
|
/*
|
||||||
|
* Keyboard Matrix Assignments
|
||||||
|
*
|
||||||
|
* Change this to how you wired your keyboard
|
||||||
|
* COLS: AVR pins used for columns, left to right
|
||||||
|
* ROWS: AVR pins used for rows, top to bottom
|
||||||
|
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
|
||||||
|
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
||||||
|
*
|
||||||
|
*/
|
||||||
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5, B7 }
|
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5, B7 }
|
||||||
#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, F5, D4, B1, B0, B5, B4, D7, D6, B3, F4, F6 }
|
#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, F5, D4, B1, B0, B5, B4, D7, D6, B3, F4, F6 }
|
||||||
#define UNUSED_PINS
|
#define UNUSED_PINS
|
||||||
|
|
||||||
/* COL2ROW or ROW2COL */
|
/* COL2ROW, ROW2COL */
|
||||||
#define DIODE_DIRECTION COL2ROW
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
/* number of backlight levels */
|
|
||||||
#define BACKLIGHT_PIN B6
|
#define BACKLIGHT_PIN B6
|
||||||
#ifdef BACKLIGHT_PIN
|
|
||||||
#define BACKLIGHT_LEVELS 3
|
#define BACKLIGHT_LEVELS 3
|
||||||
|
#define BACKLIGHT_BREATHING
|
||||||
|
|
||||||
|
#define RGB_DI_PIN E2
|
||||||
|
#if defined(RGBLIGHT_ENABLE)
|
||||||
|
# define RGBLED_NUM 16
|
||||||
|
# define RGBLIGHT_HUE_STEP 10
|
||||||
|
# define RGBLIGHT_SAT_STEP 10
|
||||||
|
# define RGBLIGHT_VAL_STEP 10
|
||||||
|
# define RGBLIGHT_ANIMATIONS
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Set 0 if debouncing isn't needed */
|
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||||
#define DEBOUNCE 5
|
#define DEBOUNCE 5
|
||||||
|
|
||||||
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||||
@@ -52,16 +67,3 @@
|
|||||||
|
|
||||||
/* Locking resynchronize hack */
|
/* Locking resynchronize hack */
|
||||||
#define LOCKING_RESYNC_ENABLE
|
#define LOCKING_RESYNC_ENABLE
|
||||||
|
|
||||||
#define RGB_DI_PIN E2
|
|
||||||
#ifdef RGB_DI_PIN
|
|
||||||
#define RGBLED_NUM 16
|
|
||||||
#define RGBLIGHT_HUE_STEP 10
|
|
||||||
#define RGBLIGHT_SAT_STEP 10
|
|
||||||
#define RGBLIGHT_VAL_STEP 10
|
|
||||||
|
|
||||||
#define RGBLIGHT_ANIMATIONS
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
+102
-9
@@ -1,12 +1,105 @@
|
|||||||
{
|
{
|
||||||
"keyboard_name": "ALU84",
|
"keyboard_name": "ALU84",
|
||||||
"url": "",
|
"url": "",
|
||||||
"maintainer": "qmk",
|
"maintainer": "qmk",
|
||||||
"width": 16,
|
"width": 16,
|
||||||
"height": 6,
|
"height": 6,
|
||||||
"layouts": {
|
"layout_aliases": {
|
||||||
"LAYOUT": {
|
"LAYOUT": "LAYOUT_75_ansi"
|
||||||
"layout": [{"label":"K000", "x":0, "y":0}, {"label":"K001", "x":1, "y":0}, {"label":"K002", "x":2, "y":0}, {"label":"K003", "x":3, "y":0}, {"label":"K004", "x":4, "y":0}, {"label":"K005", "x":5, "y":0}, {"label":"K006", "x":6, "y":0}, {"label":"K007", "x":7, "y":0}, {"label":"K008", "x":8, "y":0}, {"label":"K009", "x":9, "y":0}, {"label":"K010", "x":10, "y":0}, {"label":"K011", "x":11, "y":0}, {"label":"K012", "x":12, "y":0}, {"label":"K013", "x":13, "y":0}, {"label":"K014", "x":14, "y":0}, {"label":"K015", "x":15, "y":0}, {"label":"K100", "x":0, "y":1}, {"label":"K101", "x":1, "y":1}, {"label":"K102", "x":2, "y":1}, {"label":"K103", "x":3, "y":1}, {"label":"K104", "x":4, "y":1}, {"label":"K105", "x":5, "y":1}, {"label":"K106", "x":6, "y":1}, {"label":"K107", "x":7, "y":1}, {"label":"K108", "x":8, "y":1}, {"label":"K109", "x":9, "y":1}, {"label":"K110", "x":10, "y":1}, {"label":"K111", "x":11, "y":1}, {"label":"K112", "x":12, "y":1}, {"label":"K114", "x":13, "y":1, "w":2}, {"label":"K115", "x":15, "y":1}, {"label":"K200", "x":0, "y":2, "w":1.5}, {"label":"K202", "x":1.5, "y":2}, {"label":"K203", "x":2.5, "y":2}, {"label":"K204", "x":3.5, "y":2}, {"label":"K205", "x":4.5, "y":2}, {"label":"K206", "x":5.5, "y":2}, {"label":"K207", "x":6.5, "y":2}, {"label":"K208", "x":7.5, "y":2}, {"label":"K209", "x":8.5, "y":2}, {"label":"K210", "x":9.5, "y":2}, {"label":"K211", "x":10.5, "y":2}, {"label":"K212", "x":11.5, "y":2}, {"label":"K213", "x":12.5, "y":2}, {"label":"K214", "x":13.5, "y":2, "w":1.5}, {"label":"K215", "x":15, "y":2}, {"label":"K300", "x":0, "y":3, "w":1.75}, {"label":"K302", "x":1.75, "y":3}, {"label":"K303", "x":2.75, "y":3}, {"label":"K304", "x":3.75, "y":3}, {"label":"K305", "x":4.75, "y":3}, {"label":"K306", "x":5.75, "y":3}, {"label":"K307", "x":6.75, "y":3}, {"label":"K308", "x":7.75, "y":3}, {"label":"K309", "x":8.75, "y":3}, {"label":"K310", "x":9.75, "y":3}, {"label":"K311", "x":10.75, "y":3}, {"label":"K312", "x":11.75, "y":3}, {"label":"K313", "x":12.75, "y":3, "w":2.25}, {"label":"K315", "x":15, "y":3}, {"label":"K400", "x":0, "y":4, "w":2.25}, {"label":"K402", "x":2.25, "y":4}, {"label":"K403", "x":3.25, "y":4}, {"label":"K404", "x":4.25, "y":4}, {"label":"K405", "x":5.25, "y":4}, {"label":"K406", "x":6.25, "y":4}, {"label":"K407", "x":7.25, "y":4}, {"label":"K408", "x":8.25, "y":4}, {"label":"K409", "x":9.25, "y":4}, {"label":"K410", "x":10.25, "y":4}, {"label":"K411", "x":11.25, "y":4}, {"label":"K413", "x":12.25, "y":4, "w":1.75}, {"label":"K414", "x":14, "y":4}, {"label":"K415", "x":15, "y":4}, {"label":"K500", "x":0, "y":5, "w":1.25}, {"label":"K501", "x":1.25, "y":5, "w":1.25}, {"label":"K503", "x":2.5, "y":5, "w":1.25}, {"label":"K506", "x":3.75, "y":5, "w":6.25}, {"label":"K510", "x":10, "y":5}, {"label":"K511", "x":11, "y":5}, {"label":"K512", "x":12, "y":5}, {"label":"K513", "x":13, "y":5}, {"label":"K514", "x":14, "y":5}, {"label":"K515", "x":15, "y":5}]
|
},
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT_75_ansi": {
|
||||||
|
"layout": [
|
||||||
|
{"label":"K00", "x":0, "y":0},
|
||||||
|
{"label":"K01", "x":1, "y":0},
|
||||||
|
{"label":"K02", "x":2, "y":0},
|
||||||
|
{"label":"K03", "x":3, "y":0},
|
||||||
|
{"label":"K04", "x":4, "y":0},
|
||||||
|
{"label":"K05", "x":5, "y":0},
|
||||||
|
{"label":"K06", "x":6, "y":0},
|
||||||
|
{"label":"K07", "x":7, "y":0},
|
||||||
|
{"label":"K08", "x":8, "y":0},
|
||||||
|
{"label":"K09", "x":9, "y":0},
|
||||||
|
{"label":"K0A", "x":10, "y":0},
|
||||||
|
{"label":"K0B", "x":11, "y":0},
|
||||||
|
{"label":"K0C", "x":12, "y":0},
|
||||||
|
{"label":"K0D", "x":13, "y":0},
|
||||||
|
{"label":"K0E", "x":14, "y":0},
|
||||||
|
{"label":"K0F", "x":15, "y":0},
|
||||||
|
|
||||||
|
{"label":"K10", "x":0, "y":1},
|
||||||
|
{"label":"K11", "x":1, "y":1},
|
||||||
|
{"label":"K12", "x":2, "y":1},
|
||||||
|
{"label":"K13", "x":3, "y":1},
|
||||||
|
{"label":"K14", "x":4, "y":1},
|
||||||
|
{"label":"K15", "x":5, "y":1},
|
||||||
|
{"label":"K16", "x":6, "y":1},
|
||||||
|
{"label":"K17", "x":7, "y":1},
|
||||||
|
{"label":"K18", "x":8, "y":1},
|
||||||
|
{"label":"K19", "x":9, "y":1},
|
||||||
|
{"label":"K1A", "x":10, "y":1},
|
||||||
|
{"label":"K1B", "x":11, "y":1},
|
||||||
|
{"label":"K1C", "x":12, "y":1},
|
||||||
|
{"label":"K1E", "x":13, "y":1, "w":2},
|
||||||
|
{"label":"K1F", "x":15, "y":1},
|
||||||
|
|
||||||
|
{"label":"K20", "x":0, "y":2, "w":1.5},
|
||||||
|
{"label":"K22", "x":1.5, "y":2},
|
||||||
|
{"label":"K23", "x":2.5, "y":2},
|
||||||
|
{"label":"K24", "x":3.5, "y":2},
|
||||||
|
{"label":"K25", "x":4.5, "y":2},
|
||||||
|
{"label":"K26", "x":5.5, "y":2},
|
||||||
|
{"label":"K27", "x":6.5, "y":2},
|
||||||
|
{"label":"K28", "x":7.5, "y":2},
|
||||||
|
{"label":"K29", "x":8.5, "y":2},
|
||||||
|
{"label":"K2A", "x":9.5, "y":2},
|
||||||
|
{"label":"K2B", "x":10.5, "y":2},
|
||||||
|
{"label":"K2C", "x":11.5, "y":2},
|
||||||
|
{"label":"K2D", "x":12.5, "y":2},
|
||||||
|
{"label":"K2E", "x":13.5, "y":2, "w":1.5},
|
||||||
|
{"label":"K2F", "x":15, "y":2},
|
||||||
|
|
||||||
|
{"label":"K30", "x":0, "y":3, "w":1.75},
|
||||||
|
{"label":"K32", "x":1.75, "y":3},
|
||||||
|
{"label":"K33", "x":2.75, "y":3},
|
||||||
|
{"label":"K34", "x":3.75, "y":3},
|
||||||
|
{"label":"K35", "x":4.75, "y":3},
|
||||||
|
{"label":"K36", "x":5.75, "y":3},
|
||||||
|
{"label":"K37", "x":6.75, "y":3},
|
||||||
|
{"label":"K38", "x":7.75, "y":3},
|
||||||
|
{"label":"K39", "x":8.75, "y":3},
|
||||||
|
{"label":"K3A", "x":9.75, "y":3},
|
||||||
|
{"label":"K3B", "x":10.75, "y":3},
|
||||||
|
{"label":"K3C", "x":11.75, "y":3},
|
||||||
|
{"label":"K3D", "x":12.75, "y":3, "w":2.25},
|
||||||
|
{"label":"K3F", "x":15, "y":3},
|
||||||
|
|
||||||
|
{"label":"K40", "x":0, "y":4, "w":2.25},
|
||||||
|
{"label":"K42", "x":2.25, "y":4},
|
||||||
|
{"label":"K43", "x":3.25, "y":4},
|
||||||
|
{"label":"K44", "x":4.25, "y":4},
|
||||||
|
{"label":"K45", "x":5.25, "y":4},
|
||||||
|
{"label":"K46", "x":6.25, "y":4},
|
||||||
|
{"label":"K47", "x":7.25, "y":4},
|
||||||
|
{"label":"K48", "x":8.25, "y":4},
|
||||||
|
{"label":"K49", "x":9.25, "y":4},
|
||||||
|
{"label":"K4A", "x":10.25, "y":4},
|
||||||
|
{"label":"K4B", "x":11.25, "y":4},
|
||||||
|
{"label":"K4D", "x":12.25, "y":4, "w":1.75},
|
||||||
|
{"label":"K4E", "x":14, "y":4},
|
||||||
|
{"label":"K4F", "x":15, "y":4},
|
||||||
|
|
||||||
|
{"label":"K50", "x":0, "y":5, "w":1.25},
|
||||||
|
{"label":"K51", "x":1.25, "y":5, "w":1.25},
|
||||||
|
{"label":"K53", "x":2.5, "y":5, "w":1.25},
|
||||||
|
{"label":"K56", "x":3.75, "y":5, "w":6.25},
|
||||||
|
{"label":"K5A", "x":10, "y":5},
|
||||||
|
{"label":"K5B", "x":11, "y":5},
|
||||||
|
{"label":"K5C", "x":12, "y":5},
|
||||||
|
{"label":"K5D", "x":13, "y":5},
|
||||||
|
{"label":"K5E", "x":14, "y":5},
|
||||||
|
{"label":"K5F", "x":15, "y":5}
|
||||||
|
]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -1,100 +1,45 @@
|
|||||||
|
/* Copyright 2017 @TurboMech /u/TurboMech <discord> @A9entOran9e#6134
|
||||||
|
* 2021 QMK
|
||||||
|
*
|
||||||
|
* 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
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
#define _BL 0
|
enum layer_names {
|
||||||
#define _FN1 1
|
_BL,
|
||||||
|
_FN1,
|
||||||
|
};
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
/* BL
|
[_BL] = LAYOUT_75_ansi(
|
||||||
* ,- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .
|
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_MUTE, KC_VOLD, KC_VOLU,
|
||||||
* | Esc | Scrn Brght Up | Scrn Bright Down | Expose | Launchpad | Show Desktop | Dock Hide Tog | Screen Capture | Shortcut | Shortcut | Shortcut| Shortcut | Play/Pause | Mute | Vol Up | Vol Down |
|
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_PGUP,
|
||||||
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | + | Backspace | POWER |
|
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_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,
|
||||||
* | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | Shortcut |
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
* |- - -+ - - - - - - - + - - - - - - - - -+ - - - -+ - - - - - + - - - - - - -+ - - - - - - - + - - - - - - - -+ - - - - -+ - - - - -+ - - - - + - - - - -+ - - - - - -+ - - -+ - - - -+ - - - - -|
|
),
|
||||||
* | CAPS | A | S | D | F | G | H | J | K | L | ; | ' | Enter | Pg Up |
|
|
||||||
* |- - -+ - - - - - - - + - - - - - - - - -+ - - - -+ - - - - - + - - - - - - -+ - - - - - - - + - - - - - - - -+ - - - - -+ - - - - -+ - - - - + - - - - -+ - - - - - -+ - - -+ - - - -+ - - - - -|
|
|
||||||
* | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | Up | Pg Dn |
|
|
||||||
* |- - -+ - - - - - - - + - - - - - - - - -+ - - - -+ - - - - - + - - - - - - -+ - - - - - - - + - - - - - - - -+ - - - - -+ - - - - -+ - - - - + - - - - -+ - - - - - -+ - - -+ - - - -+ - - - - -|
|
|
||||||
* | Control | Option/Alt | Gui | Space | Gui | Opt | Fn (layer) | Left | Down | Right |
|
|
||||||
* `- - -+ - - - - - - - + - - - - - - - - -+ - - - -+ - - - - - + - - - - - - -+ - - - - - - - + - - - - - - - -+ - - - - -+ - - - - -+ - - - - + - - - - -+ - - - - - -+ - - -+ - - - -+ - - - - -'
|
|
||||||
*/
|
|
||||||
|
|
||||||
[_BL] = LAYOUT(
|
[_FN1] = LAYOUT_75_ansi(
|
||||||
KC_ESC, KC_F14, KC_F15, LCTL(KC_UP), LCTL(KC_L), KC_F11, LALT(LGUI(KC_D)), LCTL(KC_S), LCTL(LSFT(KC_O)), LCTL(LGUI(KC_1)), LCTL(LGUI(KC_2)), LCTL(LGUI(KC_3)), KC_MPLY, KC_MUTE, KC_VOLD, KC_VOLU,
|
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RESET,
|
||||||
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_POWER,
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, _______,
|
||||||
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, LCTL(LGUI(KC_N)),
|
_______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______,
|
||||||
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_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, KC_UP, KC_PGDN,
|
_______, BL_TOGG, BL_INC, BL_DEC, BL_STEP, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT),
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
/* FN1
|
|
||||||
* ,- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .
|
|
||||||
* | Quit All | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Trns | Trns | DFU RESET |
|
|
||||||
* |- - -+ - - - - - - - + - - - - - - - - -+ - - - -+ - - - - - + - - - - - - -+ - - - - - - - + - - - - - - - -+ - - - - -+ - - - - -+ - - - - + - - - - -+ - - - - - -+ - - -+ - - - -+ - - - - -|
|
|
||||||
* | Trns | Trns | Trns | Trns | Trns | Trns | Trns | Trns | Trns | Trns | Trns | Trns | Trns | DELETE | Lock Shrct |
|
|
||||||
* |- - -+ - - - - - - - + - - - - - - - - -+ - - - -+ - - - - - + - - - - - - -+ - - - - - - - + - - - - - - - -+ - - - - -+ - - - - -+ - - - - + - - - - -+ - - - - - -+ - - -+ - - - -+ - - - - -|
|
|
||||||
* | Trns | RGB Toggle | RGB Mode | RGB Increase | RGB Decrease | RGB Hue Inc | RGB Hue Dec | RGB Sat Inc | RGB Sat Dec | Trns | Trns | Trns | Trns | Trns | Trns |
|
|
||||||
* |- - -+ - - - - - - - + - - - - - - - - -+ - - - -+ - - - - - + - - - - - - -+ - - - - - - - + - - - - - - - -+ - - - - -+ - - - - -+ - - - - + - - - - -+ - - - - - -+ - - -+ - - - -+ - - - - -|
|
|
||||||
* | Trns | Trns | Trns | Trns | Trns | Trns | Trns | Trns | Trns | Trns | Trns | Trns | Trns | Trns |
|
|
||||||
* |- - -+ - - - - - - - + - - - - - - - - -+ - - - -+ - - - - - + - - - - - - -+ - - - - - - - + - - - - - - - -+ - - - - -+ - - - - -+ - - - - + - - - - -+ - - - - - -+ - - -+ - - - -+ - - - - -|
|
|
||||||
* | Trns | Backlight Tog | Backlight Inc | Backlight Dec | Backlight Step | Trns | Trns | Trns | Trns | Trns | Trns | Trns | Trns | Trns |
|
|
||||||
* |- - -+ - - - - - - - + - - - - - - - - -+ - - - -+ - - - - - + - - - - - - -+ - - - - - - - + - - - - - - - -+ - - - - -+ - - - - -+ - - - - + - - - - -+ - - - - - -+ - - -+ - - - -+ - - - - -|
|
|
||||||
* | Trns | Trns | Trns | Trns | Trns | Trns | Trns | Trns | Trns | Trns |
|
|
||||||
* `- - -+ - - - - - - - + - - - - - - - - -+ - - - -+ - - - - - + - - - - - - -+ - - - - - - - + - - - - - - - -+ - - - - -+ - - - - -+ - - - - + - - - - -+ - - - - - -+ - - -+ - - - -+ - - - - -'
|
|
||||||
*/
|
|
||||||
|
|
||||||
[_FN1] = LAYOUT(
|
|
||||||
LALT(LGUI(KC_Q)), 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_TRNS, KC_TRNS, RESET,
|
|
||||||
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_DEL, LCTL(LALT(LGUI(KC_S))),
|
|
||||||
KC_TRNS, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, 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, BL_TOGG, BL_INC, BL_DEC, BL_STEP, 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),
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
void matrix_init_user(void) {
|
|
||||||
}
|
|
||||||
|
|
||||||
void matrix_scan_user(void) {
|
|
||||||
}
|
|
||||||
|
|
||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void led_set_user(uint8_t usb_led) {
|
|
||||||
|
|
||||||
if (usb_led & (1 << USB_LED_NUM_LOCK)) {
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
|
|
||||||
DDRB |= (1 << 2); PORTB &= ~(1 << 2);
|
|
||||||
} else {
|
|
||||||
DDRB &= ~(1 << 2); PORTB &= ~(1 << 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
if (usb_led & (1 << USB_LED_COMPOSE)) {
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
if (usb_led & (1 << USB_LED_KANA)) {
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -14,12 +14,7 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef CONFIG_USER_H
|
#pragma once
|
||||||
#define CONFIG_USER_H
|
|
||||||
|
|
||||||
#define TAPPING_TOGGLE 2
|
|
||||||
#include "../../config.h"
|
|
||||||
|
|
||||||
// place overrides here
|
// place overrides here
|
||||||
|
#define TAPPING_TOGGLE 2
|
||||||
#endif
|
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
/* Copyright 2017 @TurboMech /u/TurboMech <discord> @A9entOran9e#6134
|
/* Copyright 2017 @TurboMech /u/TurboMech <discord> @A9entOran9e#6134
|
||||||
|
* 2021 QMK
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
@@ -14,12 +15,9 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include QMK_KEYBOARD_H
|
#include QMK_KEYBOARD_H
|
||||||
#include "turbomech.h"
|
#include "turbomech.h"
|
||||||
|
|
||||||
#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
|
|
||||||
|
|
||||||
#define _QWERTY 0 //BASE layer
|
#define _QWERTY 0 //BASE layer
|
||||||
#define _FUNCTION 1 //Function layer
|
#define _FUNCTION 1 //Function layer
|
||||||
|
|
||||||
@@ -47,13 +45,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* `- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -'
|
* `- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -'
|
||||||
*/
|
*/
|
||||||
|
|
||||||
[_QWERTY] = LAYOUT(
|
[_QWERTY] = LAYOUT_75_ansi(
|
||||||
KC_ESC, KC_F14, KC_F15, LCTL(KC_UP), LCTL(KC_L), KC_F11, LALT(LGUI(KC_D)), LCTL(KC_S), LCTL(LSFT(KC_O)), LCTL(LGUI(KC_1)), LCTL(LGUI(KC_2)), LCTL(LGUI(KC_3)), KC_MPLY, KC_MUTE, KC_VOLD, KC_VOLU,
|
KC_ESC, KC_F14, KC_F15, C(KC_UP), C(KC_L), KC_F11, A(G(KC_D)), C(KC_S), C(S(KC_O)), C(G(KC_1)), C(G(KC_2)), C(G(KC_3)), KC_MPLY, KC_MUTE, KC_VOLD, KC_VOLU,
|
||||||
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_POWER,
|
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_POWER,
|
||||||
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, LCTL(LGUI(KC_N)),
|
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, C(G(KC_N)),
|
||||||
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_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_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, KC_UP, KC_PGDN,
|
KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, KC_UP, KC_PGDN,
|
||||||
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT),
|
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
|
),
|
||||||
|
|
||||||
/* FN1 - SEE readme.md
|
/* FN1 - SEE readme.md
|
||||||
* ,- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -.
|
* ,- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -.
|
||||||
@@ -77,81 +76,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* `- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -'
|
* `- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -'
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
[_FUNCTION] = LAYOUT_75_ansi(
|
||||||
[_FUNCTION] = LAYOUT(
|
A(G(KC_Q)), 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_RESET,
|
||||||
LALT(LGUI(KC_Q)), 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_TRNS, KC_TRNS, KC_RESET,
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, C(A(G(KC_S))),
|
||||||
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_DEL, LCTL(LALT(LGUI(KC_S))),
|
_______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______,
|
||||||
KC_TRNS, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, 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,
|
_______, BL_TOGG, BL_INC, BL_DEC, BL_STEP, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
KC_TRNS, BL_TOGG, BL_INC, BL_DEC, BL_STEP, 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),
|
),
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
void led_set_user(uint8_t usb_led) {
|
|
||||||
|
|
||||||
if (usb_led & (1 << USB_LED_NUM_LOCK)) {
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
|
|
||||||
DDRB |= (1 << 2); PORTB &= ~(1 << 2);
|
|
||||||
} else {
|
|
||||||
DDRB &= ~(1 << 2); PORTB &= ~(1 << 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
if (usb_led & (1 << USB_LED_COMPOSE)) {
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
if (usb_led & (1 << USB_LED_KANA)) {
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
enum function_id {
|
|
||||||
SHIFT_ESC,
|
|
||||||
};
|
|
||||||
|
|
||||||
const uint16_t PROGMEM fn_actions[] = {
|
|
||||||
[0] = ACTION_FUNCTION(SHIFT_ESC),
|
|
||||||
};
|
|
||||||
|
|
||||||
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
|
|
||||||
static uint8_t shift_esc_shift_mask;
|
|
||||||
switch (id) {
|
|
||||||
case SHIFT_ESC:
|
|
||||||
shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
|
|
||||||
if (record->event.pressed) {
|
|
||||||
if (shift_esc_shift_mask) {
|
|
||||||
add_key(KC_GRV);
|
|
||||||
send_keyboard_report();
|
|
||||||
} else {
|
|
||||||
add_key(KC_ESC);
|
|
||||||
send_keyboard_report();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (shift_esc_shift_mask) {
|
|
||||||
del_key(KC_GRV);
|
|
||||||
send_keyboard_report();
|
|
||||||
} else {
|
|
||||||
del_key(KC_ESC);
|
|
||||||
send_keyboard_report();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,12 +1,2 @@
|
|||||||
BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000)
|
SLEEP_LED_ENABLE = no
|
||||||
MOUSEKEY_ENABLE ?= no # Mouse keys(+4700)
|
UNICODE_ENABLE = yes
|
||||||
EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
|
|
||||||
CONSOLE_ENABLE ?= no # Console for debug(+400)
|
|
||||||
COMMAND_ENABLE ?= no # Commands for debug and configuration
|
|
||||||
SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
|
|
||||||
NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
|
||||||
BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality
|
|
||||||
AUDIO_ENABLE ?= no
|
|
||||||
RGBLIGHT_ENABLE ?= yes
|
|
||||||
UNICODE_ENABLE ?= yes
|
|
||||||
|
|
||||||
@@ -1,16 +1,21 @@
|
|||||||
ALU84
|
# ALU84
|
||||||
===
|
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
A 75% keyboard made and sold by MECHKEYS [More info on MECHKEYS](https://mechkeys.ca).
|
A 75% keyboard made and sold by MECHKEYS.
|
||||||
|
|
||||||
Keyboard Maintainer: [TurboMech](https://github.com/TurboMech)
|
* Keyboard Maintainer: [The QMK Community](https://github.com/qmk)
|
||||||
Hardware Supported: ALU84
|
* Hardware Supported: ALU84
|
||||||
Hardware Availability: [MECHKEYS](https://mechkeys.ca)
|
* Hardware Availability: [~~MECHKEYS~~](https://mechkeys.ca) (No longer available)
|
||||||
|
|
||||||
Make example for this keyboard (after setting up your build environment):
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
make alu84:default
|
make alu84:default
|
||||||
|
|
||||||
See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information.
|
Flashing example for this keyboard:
|
||||||
|
|
||||||
|
make alu84:default:flash
|
||||||
|
|
||||||
|
To reset the board into bootloader mode, hold Space+B while plugging the cable in.
|
||||||
|
|
||||||
|
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).
|
||||||
+16
-18
@@ -2,25 +2,23 @@
|
|||||||
MCU = atmega32u4
|
MCU = atmega32u4
|
||||||
|
|
||||||
# Bootloader selection
|
# Bootloader selection
|
||||||
# Teensy halfkay
|
|
||||||
# Pro Micro caterina
|
|
||||||
# Atmel DFU atmel-dfu
|
|
||||||
# LUFA DFU lufa-dfu
|
|
||||||
# QMK DFU qmk-dfu
|
|
||||||
# ATmega32A bootloadHID
|
|
||||||
# ATmega328P USBasp
|
|
||||||
BOOTLOADER = atmel-dfu
|
BOOTLOADER = atmel-dfu
|
||||||
|
|
||||||
# Build Options
|
# Build Options
|
||||||
# comment out to disable the options.
|
# change yes to no to disable
|
||||||
#
|
#
|
||||||
BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration
|
BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration
|
||||||
MOUSEKEY_ENABLE = no # Mouse keys
|
MOUSEKEY_ENABLE = no # Mouse keys
|
||||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
CONSOLE_ENABLE = no # Console for debug
|
CONSOLE_ENABLE = no # Console for debug
|
||||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
|
||||||
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
AUDIO_ENABLE = no
|
NKRO_ENABLE = yes # USB Nkey Rollover
|
||||||
RGBLIGHT_ENABLE = yes
|
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||||
|
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||||
|
AUDIO_ENABLE = no # Audio output
|
||||||
|
|
||||||
|
LAYOUTS = 75_ansi
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
/* Copyright 2021 Lfgberg
|
||||||
|
*
|
||||||
|
* 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 "a65i.h"
|
||||||
@@ -0,0 +1,101 @@
|
|||||||
|
/* Copyright 2021 Lfgberg
|
||||||
|
*
|
||||||
|
* 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"
|
||||||
|
|
||||||
|
/* This a shortcut to help you visually see your layout.
|
||||||
|
*
|
||||||
|
* The first section contains all of the arguments representing the physical
|
||||||
|
* layout of the board and position of the keys.
|
||||||
|
*
|
||||||
|
* The second converts the arguments into a two-dimensional array which
|
||||||
|
* represents the switch matrix.
|
||||||
|
*/
|
||||||
|
#define LAYOUT_all( \
|
||||||
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, \
|
||||||
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, K1F, \
|
||||||
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, \
|
||||||
|
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E, K3F, \
|
||||||
|
K40, K41, K42, K47, K4A, K4B, K4D, K4E, K4F \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \
|
||||||
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, KC_NO, K1E, K1F }, \
|
||||||
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F }, \
|
||||||
|
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KC_NO, K3E, K3F }, \
|
||||||
|
{ K40, K41, K42, KC_NO, KC_NO, KC_NO, KC_NO, K47, KC_NO, KC_NO, K4A, K4B, KC_NO, K4D, K4E, K4F }, \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_65_ansi_blocker( \
|
||||||
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0F, \
|
||||||
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, K1F, \
|
||||||
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2F, \
|
||||||
|
K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E, K3F, \
|
||||||
|
K40, K41, K42, K47, K4A, K4B, K4D, K4E, K4F \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, KC_NO, K0F }, \
|
||||||
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, KC_NO, K1E, K1F }, \
|
||||||
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, KC_NO, K2F }, \
|
||||||
|
{ K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KC_NO, K3E, K3F }, \
|
||||||
|
{ K40, K41, K42, KC_NO, KC_NO, KC_NO, KC_NO, K47, KC_NO, KC_NO, K4A, K4B, KC_NO, K4D, K4E, K4F }, \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_65_ansi_blocker_split_bs( \
|
||||||
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, \
|
||||||
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, K1F, \
|
||||||
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2F, \
|
||||||
|
K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E, K3F, \
|
||||||
|
K40, K41, K42, K47, K4A, K4B, K4D, K4E, K4F \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \
|
||||||
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, KC_NO, K1E, K1F }, \
|
||||||
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, KC_NO, K2F }, \
|
||||||
|
{ K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KC_NO, K3E, K3F }, \
|
||||||
|
{ K40, K41, K42, KC_NO, KC_NO, KC_NO, KC_NO, K47, KC_NO, KC_NO, K4A, K4B, KC_NO, K4D, K4E, K4F }, \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_65_iso_blocker( \
|
||||||
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0F, \
|
||||||
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1F, \
|
||||||
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, K2F, \
|
||||||
|
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E, K3F, \
|
||||||
|
K40, K41, K42, K47, K4A, K4B, K4D, K4E, K4F \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, KC_NO, K0F }, \
|
||||||
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, KC_NO, KC_NO, K1F }, \
|
||||||
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO, K2E, K2F }, \
|
||||||
|
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KC_NO, K3E, K3F }, \
|
||||||
|
{ K40, K41, K42, KC_NO, KC_NO, KC_NO, KC_NO, K47, KC_NO, KC_NO, K4A, K4B, KC_NO, K4D, K4E, K4F }, \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_65_iso_blocker_split_bs( \
|
||||||
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, \
|
||||||
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1F, \
|
||||||
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, K2F, \
|
||||||
|
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E, K3F, \
|
||||||
|
K40, K41, K42, K47, K4A, K4B, K4D, K4E, K4F \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \
|
||||||
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, KC_NO, KC_NO, K1F }, \
|
||||||
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO, K2E, K2F }, \
|
||||||
|
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KC_NO, K3E, K3F }, \
|
||||||
|
{ K40, K41, K42, KC_NO, KC_NO, KC_NO, KC_NO, K47, KC_NO, KC_NO, K4A, K4B, KC_NO, K4D, K4E, K4F }, \
|
||||||
|
}
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2021 Lfgberg
|
||||||
|
|
||||||
|
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 "config_common.h"
|
||||||
|
|
||||||
|
/* USB Device descriptor parameter */
|
||||||
|
#define VENDOR_ID 0x4C47
|
||||||
|
#define PRODUCT_ID 0x0004
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER AnomalyKB
|
||||||
|
#define PRODUCT AnomalyKB A65I
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 5
|
||||||
|
#define MATRIX_COLS 16
|
||||||
|
|
||||||
|
#define MATRIX_ROW_PINS { B3, B2, B1, B0, B5 }
|
||||||
|
#define MATRIX_COL_PINS { D7, D6, D4, B4, B6, E6, F1, B7, C6, C7, D5, D3, D2, F0, D1, D0 }
|
||||||
|
#define UNUSED_PINS
|
||||||
|
|
||||||
|
/* COL2ROW or ROW2COL */
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
/* Set 0 if debouncing isn't needed */
|
||||||
|
#define DEBOUNCE 5
|
||||||
|
|
||||||
|
/* 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
|
||||||
@@ -0,0 +1,397 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "A65I",
|
||||||
|
"maintainer": "Lfgberg",
|
||||||
|
"width": 16,
|
||||||
|
"height": 5,
|
||||||
|
"layout_aliases": {
|
||||||
|
"LAYOUT_ansi": "LAYOUT_65_ansi_blocker",
|
||||||
|
"LAYOUT_ansi_splitbs": "LAYOUT_65_ansi_blocker_split_bs",
|
||||||
|
"LAYOUT_iso": "LAYOUT_65_iso_blocker",
|
||||||
|
"LAYOUT_iso_splitbs": "LAYOUT_65_iso_blocker_split_bs"
|
||||||
|
},
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT_all": {
|
||||||
|
"layout": [
|
||||||
|
{"label":"Esc", "x":0, "y":0},
|
||||||
|
{"label":"!", "x":1, "y":0},
|
||||||
|
{"label":"@", "x":2, "y":0},
|
||||||
|
{"label":"#", "x":3, "y":0},
|
||||||
|
{"label":"$", "x":4, "y":0},
|
||||||
|
{"label":"%", "x":5, "y":0},
|
||||||
|
{"label":"^", "x":6, "y":0},
|
||||||
|
{"label":"&", "x":7, "y":0},
|
||||||
|
{"label":"*", "x":8, "y":0},
|
||||||
|
{"label":"(", "x":9, "y":0},
|
||||||
|
{"label":")", "x":10, "y":0},
|
||||||
|
{"label":"_", "x":11, "y":0},
|
||||||
|
{"label":"+", "x":12, "y":0},
|
||||||
|
{"label":"~", "x":13, "y":0},
|
||||||
|
{"label":"Back", "x":14, "y":0},
|
||||||
|
{"label":"Print", "x":15, "y":0},
|
||||||
|
|
||||||
|
{"label":"Tab", "x":0, "y":1, "w":1.5},
|
||||||
|
{"label":"Q", "x":1.5, "y":1},
|
||||||
|
{"label":"W", "x":2.5, "y":1},
|
||||||
|
{"label":"E", "x":3.5, "y":1},
|
||||||
|
{"label":"R", "x":4.5, "y":1},
|
||||||
|
{"label":"T", "x":5.5, "y":1},
|
||||||
|
{"label":"Y", "x":6.5, "y":1},
|
||||||
|
{"label":"U", "x":7.5, "y":1},
|
||||||
|
{"label":"I", "x":8.5, "y":1},
|
||||||
|
{"label":"O", "x":9.5, "y":1},
|
||||||
|
{"label":"P", "x":10.5, "y":1},
|
||||||
|
{"label":"{", "x":11.5, "y":1},
|
||||||
|
{"label":"}", "x":12.5, "y":1},
|
||||||
|
{"label":"|", "x":13.5, "y":1, "w":1.5},
|
||||||
|
{"label":"PgUp", "x":15, "y":1},
|
||||||
|
|
||||||
|
{"label":"Caps Lock", "x":0, "y":2, "w":1.75},
|
||||||
|
{"label":"A", "x":1.75, "y":2},
|
||||||
|
{"label":"S", "x":2.75, "y":2},
|
||||||
|
{"label":"D", "x":3.75, "y":2},
|
||||||
|
{"label":"F", "x":4.75, "y":2},
|
||||||
|
{"label":"G", "x":5.75, "y":2},
|
||||||
|
{"label":"H", "x":6.75, "y":2},
|
||||||
|
{"label":"J", "x":7.75, "y":2},
|
||||||
|
{"label":"K", "x":8.75, "y":2},
|
||||||
|
{"label":"L", "x":9.75, "y":2},
|
||||||
|
{"label":":", "x":10.75, "y":2},
|
||||||
|
{"label":"\"", "x":11.75, "y":2},
|
||||||
|
{"label":"ISO #/~", "x":16.25, "y":2},
|
||||||
|
{"label":"ANSI Enter", "x":12.75, "y":2, "w":2.25},
|
||||||
|
{"label":"ISO Enter", "x":17.25, "y":1, "w":1.25, "h":2},
|
||||||
|
{"label":"PgDn", "x":15, "y":2},
|
||||||
|
|
||||||
|
{"label":"Shift", "x":0, "y":3, "w":1.25},
|
||||||
|
{"label":"ISO \\/|", "x":1.25, "y":3},
|
||||||
|
{"label":"Z", "x":2.25, "y":3},
|
||||||
|
{"label":"X", "x":3.25, "y":3},
|
||||||
|
{"label":"C", "x":4.25, "y":3},
|
||||||
|
{"label":"V", "x":5.25, "y":3},
|
||||||
|
{"label":"B", "x":6.25, "y":3},
|
||||||
|
{"label":"N", "x":7.25, "y":3},
|
||||||
|
{"label":"M", "x":8.25, "y":3},
|
||||||
|
{"label":"<", "x":9.25, "y":3},
|
||||||
|
{"label":">", "x":10.25, "y":3},
|
||||||
|
{"label":"?", "x":11.25, "y":3},
|
||||||
|
{"label":"Shift", "x":12.25, "y":3, "w":1.75},
|
||||||
|
{"label":"Up", "x":14, "y":3},
|
||||||
|
{"label":"Delete", "x":15, "y":3},
|
||||||
|
|
||||||
|
{"label":"Ctrl", "x":0, "y":4, "w":1.25},
|
||||||
|
{"label":"Win", "x":1.25, "y":4, "w":1.25},
|
||||||
|
{"label":"Alt", "x":2.5, "y":4, "w":1.25},
|
||||||
|
{"label":"Space", "x":3.75, "y":4, "w":6.25},
|
||||||
|
{"label":"Alt", "x":10, "y":4, "w":1.25},
|
||||||
|
{"label":"MO(1)", "x":11.25, "y":4, "w":1.25},
|
||||||
|
{"label":"Left", "x":13, "y":4},
|
||||||
|
{"label":"Down", "x":14, "y":4},
|
||||||
|
{"label":"Right", "x":15, "y":4}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_65_ansi_blocker": {
|
||||||
|
"layout": [
|
||||||
|
{"label":"Esc", "x":0, "y":0},
|
||||||
|
{"label":"!", "x":1, "y":0},
|
||||||
|
{"label":"@", "x":2, "y":0},
|
||||||
|
{"label":"#", "x":3, "y":0},
|
||||||
|
{"label":"$", "x":4, "y":0},
|
||||||
|
{"label":"%", "x":5, "y":0},
|
||||||
|
{"label":"^", "x":6, "y":0},
|
||||||
|
{"label":"&", "x":7, "y":0},
|
||||||
|
{"label":"*", "x":8, "y":0},
|
||||||
|
{"label":"(", "x":9, "y":0},
|
||||||
|
{"label":")", "x":10, "y":0},
|
||||||
|
{"label":"_", "x":11, "y":0},
|
||||||
|
{"label":"+", "x":12, "y":0},
|
||||||
|
{"label":"Backspace", "x":13, "y":0, "w":2},
|
||||||
|
{"label":"Print", "x":15, "y":0},
|
||||||
|
|
||||||
|
{"label":"Tab", "x":0, "y":1, "w":1.5},
|
||||||
|
{"label":"Q", "x":1.5, "y":1},
|
||||||
|
{"label":"W", "x":2.5, "y":1},
|
||||||
|
{"label":"E", "x":3.5, "y":1},
|
||||||
|
{"label":"R", "x":4.5, "y":1},
|
||||||
|
{"label":"T", "x":5.5, "y":1},
|
||||||
|
{"label":"Y", "x":6.5, "y":1},
|
||||||
|
{"label":"U", "x":7.5, "y":1},
|
||||||
|
{"label":"I", "x":8.5, "y":1},
|
||||||
|
{"label":"O", "x":9.5, "y":1},
|
||||||
|
{"label":"P", "x":10.5, "y":1},
|
||||||
|
{"label":"{", "x":11.5, "y":1},
|
||||||
|
{"label":"}", "x":12.5, "y":1},
|
||||||
|
{"label":"|", "x":13.5, "y":1, "w":1.5},
|
||||||
|
{"label":"PgUp", "x":15, "y":1},
|
||||||
|
|
||||||
|
{"label":"Caps Lock", "x":0, "y":2, "w":1.75},
|
||||||
|
{"label":"A", "x":1.75, "y":2},
|
||||||
|
{"label":"S", "x":2.75, "y":2},
|
||||||
|
{"label":"D", "x":3.75, "y":2},
|
||||||
|
{"label":"F", "x":4.75, "y":2},
|
||||||
|
{"label":"G", "x":5.75, "y":2},
|
||||||
|
{"label":"H", "x":6.75, "y":2},
|
||||||
|
{"label":"J", "x":7.75, "y":2},
|
||||||
|
{"label":"K", "x":8.75, "y":2},
|
||||||
|
{"label":"L", "x":9.75, "y":2},
|
||||||
|
{"label":":", "x":10.75, "y":2},
|
||||||
|
{"label":"\"", "x":11.75, "y":2},
|
||||||
|
{"label":"Enter", "x":12.75, "y":2, "w":2.25},
|
||||||
|
{"label":"PgDn", "x":15, "y":2},
|
||||||
|
|
||||||
|
{"label":"Shift", "x":0, "y":3, "w":2.25},
|
||||||
|
{"label":"Z", "x":2.25, "y":3},
|
||||||
|
{"label":"X", "x":3.25, "y":3},
|
||||||
|
{"label":"C", "x":4.25, "y":3},
|
||||||
|
{"label":"V", "x":5.25, "y":3},
|
||||||
|
{"label":"B", "x":6.25, "y":3},
|
||||||
|
{"label":"N", "x":7.25, "y":3},
|
||||||
|
{"label":"M", "x":8.25, "y":3},
|
||||||
|
{"label":"<", "x":9.25, "y":3},
|
||||||
|
{"label":">", "x":10.25, "y":3},
|
||||||
|
{"label":"?", "x":11.25, "y":3},
|
||||||
|
{"label":"Shift", "x":12.25, "y":3, "w":1.75},
|
||||||
|
{"label":"Up", "x":14, "y":3},
|
||||||
|
{"label":"Delete", "x":15, "y":3},
|
||||||
|
|
||||||
|
{"label":"Ctrl", "x":0, "y":4, "w":1.25},
|
||||||
|
{"label":"Win", "x":1.25, "y":4, "w":1.25},
|
||||||
|
{"label":"Alt", "x":2.5, "y":4, "w":1.25},
|
||||||
|
{"label":"Space", "x":3.75, "y":4, "w":6.25},
|
||||||
|
{"label":"Alt", "x":10, "y":4, "w":1.25},
|
||||||
|
{"label":"MO(1)", "x":11.25, "y":4, "w":1.25},
|
||||||
|
{"label":"Left", "x":13, "y":4},
|
||||||
|
{"label":"Down", "x":14, "y":4},
|
||||||
|
{"label":"Right", "x":15, "y":4}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_65_ansi_blocker_split_bs": {
|
||||||
|
"layout": [
|
||||||
|
{"label":"Esc", "x":0, "y":0},
|
||||||
|
{"label":"!", "x":1, "y":0},
|
||||||
|
{"label":"@", "x":2, "y":0},
|
||||||
|
{"label":"#", "x":3, "y":0},
|
||||||
|
{"label":"$", "x":4, "y":0},
|
||||||
|
{"label":"%", "x":5, "y":0},
|
||||||
|
{"label":"^", "x":6, "y":0},
|
||||||
|
{"label":"&", "x":7, "y":0},
|
||||||
|
{"label":"*", "x":8, "y":0},
|
||||||
|
{"label":"(", "x":9, "y":0},
|
||||||
|
{"label":")", "x":10, "y":0},
|
||||||
|
{"label":"_", "x":11, "y":0},
|
||||||
|
{"label":"+", "x":12, "y":0},
|
||||||
|
{"label":"~", "x":13, "y":0},
|
||||||
|
{"label":"Back", "x":14, "y":0},
|
||||||
|
{"label":"Print", "x":15, "y":0},
|
||||||
|
|
||||||
|
{"label":"Tab", "x":0, "y":1, "w":1.5},
|
||||||
|
{"label":"Q", "x":1.5, "y":1},
|
||||||
|
{"label":"W", "x":2.5, "y":1},
|
||||||
|
{"label":"E", "x":3.5, "y":1},
|
||||||
|
{"label":"R", "x":4.5, "y":1},
|
||||||
|
{"label":"T", "x":5.5, "y":1},
|
||||||
|
{"label":"Y", "x":6.5, "y":1},
|
||||||
|
{"label":"U", "x":7.5, "y":1},
|
||||||
|
{"label":"I", "x":8.5, "y":1},
|
||||||
|
{"label":"O", "x":9.5, "y":1},
|
||||||
|
{"label":"P", "x":10.5, "y":1},
|
||||||
|
{"label":"{", "x":11.5, "y":1},
|
||||||
|
{"label":"}", "x":12.5, "y":1},
|
||||||
|
{"label":"|", "x":13.5, "y":1, "w":1.5},
|
||||||
|
{"label":"PgUp", "x":15, "y":1},
|
||||||
|
|
||||||
|
{"label":"Caps Lock", "x":0, "y":2, "w":1.75},
|
||||||
|
{"label":"A", "x":1.75, "y":2},
|
||||||
|
{"label":"S", "x":2.75, "y":2},
|
||||||
|
{"label":"D", "x":3.75, "y":2},
|
||||||
|
{"label":"F", "x":4.75, "y":2},
|
||||||
|
{"label":"G", "x":5.75, "y":2},
|
||||||
|
{"label":"H", "x":6.75, "y":2},
|
||||||
|
{"label":"J", "x":7.75, "y":2},
|
||||||
|
{"label":"K", "x":8.75, "y":2},
|
||||||
|
{"label":"L", "x":9.75, "y":2},
|
||||||
|
{"label":":", "x":10.75, "y":2},
|
||||||
|
{"label":"\"", "x":11.75, "y":2},
|
||||||
|
{"label":"Enter", "x":12.75, "y":2, "w":2.25},
|
||||||
|
{"label":"PgDn", "x":15, "y":2},
|
||||||
|
|
||||||
|
{"label":"Shift", "x":0, "y":3, "w":2.25},
|
||||||
|
{"label":"Z", "x":2.25, "y":3},
|
||||||
|
{"label":"X", "x":3.25, "y":3},
|
||||||
|
{"label":"C", "x":4.25, "y":3},
|
||||||
|
{"label":"V", "x":5.25, "y":3},
|
||||||
|
{"label":"B", "x":6.25, "y":3},
|
||||||
|
{"label":"N", "x":7.25, "y":3},
|
||||||
|
{"label":"M", "x":8.25, "y":3},
|
||||||
|
{"label":"<", "x":9.25, "y":3},
|
||||||
|
{"label":">", "x":10.25, "y":3},
|
||||||
|
{"label":"?", "x":11.25, "y":3},
|
||||||
|
{"label":"Shift", "x":12.25, "y":3, "w":1.75},
|
||||||
|
{"label":"Up", "x":14, "y":3},
|
||||||
|
{"label":"Delete", "x":15, "y":3},
|
||||||
|
|
||||||
|
{"label":"Ctrl", "x":0, "y":4, "w":1.25},
|
||||||
|
{"label":"Win", "x":1.25, "y":4, "w":1.25},
|
||||||
|
{"label":"Alt", "x":2.5, "y":4, "w":1.25},
|
||||||
|
{"label":"Space", "x":3.75, "y":4, "w":6.25},
|
||||||
|
{"label":"Alt", "x":10, "y":4, "w":1.25},
|
||||||
|
{"label":"MO(1)", "x":11.25, "y":4, "w":1.25},
|
||||||
|
{"label":"Left", "x":13, "y":4},
|
||||||
|
{"label":"Down", "x":14, "y":4},
|
||||||
|
{"label":"Right", "x":15, "y":4}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_65_iso_blocker": {
|
||||||
|
"layout": [
|
||||||
|
{"label":"Esc", "x":0, "y":0},
|
||||||
|
{"label":"!", "x":1, "y":0},
|
||||||
|
{"label":"@", "x":2, "y":0},
|
||||||
|
{"label":"#", "x":3, "y":0},
|
||||||
|
{"label":"$", "x":4, "y":0},
|
||||||
|
{"label":"%", "x":5, "y":0},
|
||||||
|
{"label":"^", "x":6, "y":0},
|
||||||
|
{"label":"&", "x":7, "y":0},
|
||||||
|
{"label":"*", "x":8, "y":0},
|
||||||
|
{"label":"(", "x":9, "y":0},
|
||||||
|
{"label":")", "x":10, "y":0},
|
||||||
|
{"label":"_", "x":11, "y":0},
|
||||||
|
{"label":"+", "x":12, "y":0},
|
||||||
|
{"label":"Backspace", "x":13, "y":0, "w":2},
|
||||||
|
{"label":"Print", "x":15, "y":0},
|
||||||
|
|
||||||
|
{"label":"Tab", "x":0, "y":1, "w":1.5},
|
||||||
|
{"label":"Q", "x":1.5, "y":1},
|
||||||
|
{"label":"W", "x":2.5, "y":1},
|
||||||
|
{"label":"E", "x":3.5, "y":1},
|
||||||
|
{"label":"R", "x":4.5, "y":1},
|
||||||
|
{"label":"T", "x":5.5, "y":1},
|
||||||
|
{"label":"Y", "x":6.5, "y":1},
|
||||||
|
{"label":"U", "x":7.5, "y":1},
|
||||||
|
{"label":"I", "x":8.5, "y":1},
|
||||||
|
{"label":"O", "x":9.5, "y":1},
|
||||||
|
{"label":"P", "x":10.5, "y":1},
|
||||||
|
{"label":"{", "x":11.5, "y":1},
|
||||||
|
{"label":"}", "x":12.5, "y":1},
|
||||||
|
{"label":"PgUp", "x":15, "y":1},
|
||||||
|
|
||||||
|
{"label":"Caps Lock", "x":0, "y":2, "w":1.75},
|
||||||
|
{"label":"A", "x":1.75, "y":2},
|
||||||
|
{"label":"S", "x":2.75, "y":2},
|
||||||
|
{"label":"D", "x":3.75, "y":2},
|
||||||
|
{"label":"F", "x":4.75, "y":2},
|
||||||
|
{"label":"G", "x":5.75, "y":2},
|
||||||
|
{"label":"H", "x":6.75, "y":2},
|
||||||
|
{"label":"J", "x":7.75, "y":2},
|
||||||
|
{"label":"K", "x":8.75, "y":2},
|
||||||
|
{"label":"L", "x":9.75, "y":2},
|
||||||
|
{"label":":", "x":10.75, "y":2},
|
||||||
|
{"label":"\"", "x":11.75, "y":2},
|
||||||
|
{"label":"~", "x":12.75, "y":2},
|
||||||
|
{"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2},
|
||||||
|
{"label":"PgDn", "x":15, "y":2},
|
||||||
|
|
||||||
|
{"label":"Shift", "x":0, "y":3, "w":1.25},
|
||||||
|
{"label":"|", "x":1.25, "y":3},
|
||||||
|
{"label":"Z", "x":2.25, "y":3},
|
||||||
|
{"label":"X", "x":3.25, "y":3},
|
||||||
|
{"label":"C", "x":4.25, "y":3},
|
||||||
|
{"label":"V", "x":5.25, "y":3},
|
||||||
|
{"label":"B", "x":6.25, "y":3},
|
||||||
|
{"label":"N", "x":7.25, "y":3},
|
||||||
|
{"label":"M", "x":8.25, "y":3},
|
||||||
|
{"label":"<", "x":9.25, "y":3},
|
||||||
|
{"label":">", "x":10.25, "y":3},
|
||||||
|
{"label":"?", "x":11.25, "y":3},
|
||||||
|
{"label":"Shift", "x":12.25, "y":3, "w":1.75},
|
||||||
|
{"label":"Up", "x":14, "y":3},
|
||||||
|
{"label":"Delete", "x":15, "y":3},
|
||||||
|
|
||||||
|
{"label":"Ctrl", "x":0, "y":4, "w":1.25},
|
||||||
|
{"label":"Win", "x":1.25, "y":4, "w":1.25},
|
||||||
|
{"label":"Alt", "x":2.5, "y":4, "w":1.25},
|
||||||
|
{"label":"Space", "x":3.75, "y":4, "w":6.25},
|
||||||
|
{"label":"Alt", "x":10, "y":4, "w":1.25},
|
||||||
|
{"label":"MO(1)", "x":11.25, "y":4, "w":1.25},
|
||||||
|
{"label":"Left", "x":13, "y":4},
|
||||||
|
{"label":"Down", "x":14, "y":4},
|
||||||
|
{"label":"Right", "x":15, "y":4}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_65_iso_blocker_split_bs": {
|
||||||
|
"layout": [
|
||||||
|
{"label":"Esc", "x":0, "y":0},
|
||||||
|
{"label":"!", "x":1, "y":0},
|
||||||
|
{"label":"@", "x":2, "y":0},
|
||||||
|
{"label":"#", "x":3, "y":0},
|
||||||
|
{"label":"$", "x":4, "y":0},
|
||||||
|
{"label":"%", "x":5, "y":0},
|
||||||
|
{"label":"^", "x":6, "y":0},
|
||||||
|
{"label":"&", "x":7, "y":0},
|
||||||
|
{"label":"*", "x":8, "y":0},
|
||||||
|
{"label":"(", "x":9, "y":0},
|
||||||
|
{"label":")", "x":10, "y":0},
|
||||||
|
{"label":"_", "x":11, "y":0},
|
||||||
|
{"label":"+", "x":12, "y":0},
|
||||||
|
{"label":"~", "x":13, "y":0},
|
||||||
|
{"label":"Back", "x":14, "y":0},
|
||||||
|
{"label":"Print", "x":15, "y":0},
|
||||||
|
|
||||||
|
{"label":"Tab", "x":0, "y":1, "w":1.5},
|
||||||
|
{"label":"Q", "x":1.5, "y":1},
|
||||||
|
{"label":"W", "x":2.5, "y":1},
|
||||||
|
{"label":"E", "x":3.5, "y":1},
|
||||||
|
{"label":"R", "x":4.5, "y":1},
|
||||||
|
{"label":"T", "x":5.5, "y":1},
|
||||||
|
{"label":"Y", "x":6.5, "y":1},
|
||||||
|
{"label":"U", "x":7.5, "y":1},
|
||||||
|
{"label":"I", "x":8.5, "y":1},
|
||||||
|
{"label":"O", "x":9.5, "y":1},
|
||||||
|
{"label":"P", "x":10.5, "y":1},
|
||||||
|
{"label":"{", "x":11.5, "y":1},
|
||||||
|
{"label":"}", "x":12.5, "y":1},
|
||||||
|
{"label":"PgUp", "x":15, "y":1},
|
||||||
|
|
||||||
|
{"label":"Caps Lock", "x":0, "y":2, "w":1.75},
|
||||||
|
{"label":"A", "x":1.75, "y":2},
|
||||||
|
{"label":"S", "x":2.75, "y":2},
|
||||||
|
{"label":"D", "x":3.75, "y":2},
|
||||||
|
{"label":"F", "x":4.75, "y":2},
|
||||||
|
{"label":"G", "x":5.75, "y":2},
|
||||||
|
{"label":"H", "x":6.75, "y":2},
|
||||||
|
{"label":"J", "x":7.75, "y":2},
|
||||||
|
{"label":"K", "x":8.75, "y":2},
|
||||||
|
{"label":"L", "x":9.75, "y":2},
|
||||||
|
{"label":":", "x":10.75, "y":2},
|
||||||
|
{"label":"\"", "x":11.75, "y":2},
|
||||||
|
{"label":"~", "x":12.75, "y":2},
|
||||||
|
{"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2},
|
||||||
|
{"label":"PgDn", "x":15, "y":2},
|
||||||
|
|
||||||
|
{"label":"Shift", "x":0, "y":3, "w":1.25},
|
||||||
|
{"label":"|", "x":1.25, "y":3},
|
||||||
|
{"label":"Z", "x":2.25, "y":3},
|
||||||
|
{"label":"X", "x":3.25, "y":3},
|
||||||
|
{"label":"C", "x":4.25, "y":3},
|
||||||
|
{"label":"V", "x":5.25, "y":3},
|
||||||
|
{"label":"B", "x":6.25, "y":3},
|
||||||
|
{"label":"N", "x":7.25, "y":3},
|
||||||
|
{"label":"M", "x":8.25, "y":3},
|
||||||
|
{"label":"<", "x":9.25, "y":3},
|
||||||
|
{"label":">", "x":10.25, "y":3},
|
||||||
|
{"label":"?", "x":11.25, "y":3},
|
||||||
|
{"label":"Shift", "x":12.25, "y":3, "w":1.75},
|
||||||
|
{"label":"Up", "x":14, "y":3},
|
||||||
|
{"label":"Delete", "x":15, "y":3},
|
||||||
|
|
||||||
|
{"label":"Ctrl", "x":0, "y":4, "w":1.25},
|
||||||
|
{"label":"Win", "x":1.25, "y":4, "w":1.25},
|
||||||
|
{"label":"Alt", "x":2.5, "y":4, "w":1.25},
|
||||||
|
{"label":"Space", "x":3.75, "y":4, "w":6.25},
|
||||||
|
{"label":"Alt", "x":10, "y":4, "w":1.25},
|
||||||
|
{"label":"MO(1)", "x":11.25, "y":4, "w":1.25},
|
||||||
|
{"label":"Left", "x":13, "y":4},
|
||||||
|
{"label":"Down", "x":14, "y":4},
|
||||||
|
{"label":"Right", "x":15, "y":4}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
/* Copyright 2021 Lfgberg
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/* Default Layer
|
||||||
|
* ,----------------------------------------------------------------.
|
||||||
|
* |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|~ |Back|Home|
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ |PgUp|
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Caps | A| S| D| F| G| H| J| K| L| ;| '|Return |PgDn|
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | Up|Del |
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Ctrl|Win |Alt | Space |Alt| FN|Ctrl|Lef|Dow|Rig |
|
||||||
|
* `----------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
|
||||||
|
[0] = LAYOUT_65_ansi_blocker_split_bs(
|
||||||
|
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_GRV, KC_BSPC, KC_PSCR,
|
||||||
|
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_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_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT),
|
||||||
|
|
||||||
|
/* Layer One
|
||||||
|
* ,----------------------------------------------------------------.
|
||||||
|
* |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp |Home|
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ |PgUp|
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Caps | A| S| D| F| G| H| J| K| L| ;| '|Return |PgDn|
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | Up|Del |
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Ctrl|Win |Alt | Space |Alt| FN|Ctrl|Lef|Dow|Rig |
|
||||||
|
* `----------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
|
||||||
|
[1] = LAYOUT_65_ansi_blocker_split_bs(
|
||||||
|
RESET, 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_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, 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),
|
||||||
|
|
||||||
|
};
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
/* Copyright 2021 Lfgberg
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/* Default Layer
|
||||||
|
* ,----------------------------------------------------------------.
|
||||||
|
* |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp |Home|
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ |PgUp|
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Caps | A| S| D| F| G| H| J| K| L| ;| '|Return |PgDn|
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | Up|Del |
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Ctrl|Win |Alt | Space |Alt| FN|Ctrl|Lef|Dow|Rig |
|
||||||
|
* `----------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
|
||||||
|
[0] = LAYOUT_65_ansi_blocker(
|
||||||
|
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_PSCR,
|
||||||
|
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_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_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT),
|
||||||
|
|
||||||
|
/* Layer One
|
||||||
|
* ,----------------------------------------------------------------.
|
||||||
|
* |RST| F1| F2| F3| F4| F5| F6| F7| F8| F9| F0|F11|F12|Backsp |Home|
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ |PgUp|
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Caps | A| S| D| F| G| H| J| K| L| ;| '|Return |PgDn|
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | Up|Del |
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Ctrl|Win |Alt | Space |Alt| FN|Ctrl|Lef|Dow|Rig |
|
||||||
|
* `----------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
|
||||||
|
[1] = LAYOUT_65_ansi_blocker(
|
||||||
|
RESET, 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_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, 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),
|
||||||
|
|
||||||
|
};
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
/* Copyright 2021 Lfgberg
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/* Default Layer
|
||||||
|
* ,----------------------------------------------------------------.
|
||||||
|
* |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| Delete|Home|
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| E |PgUp|
|
||||||
|
* |-----------------------------------------------------| N |----|
|
||||||
|
* |Caps | A| S| D| F| G| H| J| K| L| ;|' |~ | T |PgDn|
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | Up|Del |
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Ctrl|Win |Alt | Space |Alt| FN|Ctrl|Lef|Dow|Rig |
|
||||||
|
* `----------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
|
||||||
|
[0] = LAYOUT_65_iso_blocker(
|
||||||
|
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_PSCR,
|
||||||
|
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_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_NUHS, KC_ENT, KC_PGDN,
|
||||||
|
KC_LSFT, KC_BSLS, 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_DEL,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT),
|
||||||
|
|
||||||
|
/* Layer One
|
||||||
|
* ,----------------------------------------------------------------.
|
||||||
|
* |RST| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| Delete|Home|
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| E |PgUp|
|
||||||
|
* |-----------------------------------------------------| N |----|
|
||||||
|
* |Caps | A| S| D| F| G| H| J| K| L| ;|' |~ | T |PgDn|
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | Up|Del |
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Ctrl|Win |Alt | Space |Alt| FN|Ctrl|Lef|Dow|Rig |
|
||||||
|
* `----------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
|
||||||
|
[1] = LAYOUT_65_iso_blocker(
|
||||||
|
RESET, 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_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, 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),
|
||||||
|
|
||||||
|
};
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
/* Copyright 2021 Lfgberg
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/* Default Layer
|
||||||
|
* ,----------------------------------------------------------------.
|
||||||
|
* |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|~ |Back|Home|
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| E |PgUp|
|
||||||
|
* |-----------------------------------------------------| N |----|
|
||||||
|
* |Caps | A| S| D| F| G| H| J| K| L| ;|' |~ | T |PgDn|
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | Up|Del |
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Ctrl|Win |Alt | Space |Alt| FN|Ctrl|Lef|Dow|Rig |
|
||||||
|
* `----------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
|
||||||
|
[0] = LAYOUT_65_iso_blocker_split_bs(
|
||||||
|
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_GRV, KC_BSPC, KC_PSCR,
|
||||||
|
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_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_NUHS, KC_ENT, KC_PGDN,
|
||||||
|
KC_LSFT, KC_BSLS, 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_DEL,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT),
|
||||||
|
|
||||||
|
/* Layer One
|
||||||
|
* ,----------------------------------------------------------------.
|
||||||
|
* |RST| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|~ |Back|Home|
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| E |PgUp|
|
||||||
|
* |-----------------------------------------------------| N |----|
|
||||||
|
* |Caps | A| S| D| F| G| H| J| K| L| ;|' |~ | T |PgDn|
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | Up|Del |
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Ctrl|Win |Alt | Space |Alt| FN|Ctrl|Lef|Dow|Rig |
|
||||||
|
* `----------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
|
||||||
|
[1] = LAYOUT_65_iso_blocker_split_bs(
|
||||||
|
RESET, 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_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, 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),
|
||||||
|
|
||||||
|
};
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
/* Copyright 2021 Lfgberg
|
||||||
|
*
|
||||||
|
* 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 DYNAMIC_KEYMAP_LAYER_COUNT 2
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
/* Copyright 2021 Lfgberg
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/* Default Layer
|
||||||
|
* ,----------------------------------------------------------------.
|
||||||
|
* |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp |Home|
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ |PgUp|
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Caps | A| S| D| F| G| H| J| K| L| ;| '|Return |PgDn|
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | Up|Del |
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Ctrl|Win |Alt | Space |Alt| FN|Ctrl|Lef|Dow|Rig |
|
||||||
|
* `----------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
|
||||||
|
[0] = LAYOUT_65_ansi_blocker(
|
||||||
|
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_PSCR,
|
||||||
|
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_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_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT),
|
||||||
|
|
||||||
|
/* Layer One
|
||||||
|
* ,----------------------------------------------------------------.
|
||||||
|
* |RST| F1| F2| F3| F4| F5| F6| F7| F8| F9| F0|F11|F12|Backsp |Home|
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ |PgUp|
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Caps | A| S| D| F| G| H| J| K| L| ;| '|Return |PgDn|
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | Up|Del |
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Ctrl|Win |Alt | Space |Alt| FN|Ctrl|Lef|Dow|Rig |
|
||||||
|
* `----------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
|
||||||
|
[1] = LAYOUT_65_ansi_blocker(
|
||||||
|
RESET, 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_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, 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),
|
||||||
|
|
||||||
|
};
|
||||||
File renamed without changes.
@@ -0,0 +1,17 @@
|
|||||||
|
# a65i
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
PCB designed by Lfgberg for the AnomalyKB a65i.
|
||||||
|
|
||||||
|
To enter bootloader mode, either utilize the reset button near the MCU, or short the ESC key for bootmagic lite.
|
||||||
|
|
||||||
|
* Keyboard Maintainer: [Lfgberg](https://github.com/lfgberg)
|
||||||
|
* Hardware Supported: A65I PCB
|
||||||
|
* Hardware Availability: [AnomalyKB](anomalykb.co)
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make anomalykb/a65i:default
|
||||||
|
|
||||||
|
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).
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
# MCU name
|
||||||
|
MCU = atmega32u4
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
BOOTLOADER = atmel-dfu
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
|
||||||
|
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||||
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
|
CONSOLE_ENABLE = yes # Console for debug
|
||||||
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
|
NKRO_ENABLE = yes # USB Nkey Rollover
|
||||||
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
|
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||||
|
AUDIO_ENABLE = no # Audio output
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
/* Copyright 2021 Salmon Cat Studio
|
||||||
|
*
|
||||||
|
* 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 "config_common.h"
|
||||||
|
|
||||||
|
/* USB Device descriptor parameter */
|
||||||
|
#define VENDOR_ID 0xCA75
|
||||||
|
#define PRODUCT_ID 0x4014
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER Salmon Cat Studio
|
||||||
|
#define PRODUCT Aozora
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 5
|
||||||
|
#define MATRIX_COLS 16
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Keyboard Matrix Assignments
|
||||||
|
*
|
||||||
|
* Change this to how you wired your keyboard
|
||||||
|
* COLS: AVR pins used for columns, left to right
|
||||||
|
* ROWS: AVR pins used for rows, top to bottom
|
||||||
|
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
|
||||||
|
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#define MATRIX_ROW_PINS { F6, F5, F4, F1, F0 }
|
||||||
|
#define MATRIX_COL_PINS { B0, B1, B2, B3, B7, D0, D1, D4, D6, D7, B4, B5, B6, C6, C7, F7 }
|
||||||
|
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
/* Copyright 2021 Salmon Cat Studio
|
||||||
|
*
|
||||||
|
* 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 "hotswap.h"
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
/* Copyright 2021 Salmon Cat Studio
|
||||||
|
*
|
||||||
|
* 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"
|
||||||
|
|
||||||
|
#define LAYOUT( \
|
||||||
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, \
|
||||||
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, \
|
||||||
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
|
||||||
|
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3D, K3E, K3F, \
|
||||||
|
K40, K41, K42, K44, K48, K49, K4A, K4D, K4E, K4F \
|
||||||
|
) { \
|
||||||
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \
|
||||||
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
|
||||||
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, KC_NO, KC_NO }, \
|
||||||
|
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, KC_NO, KC_NO, K3D, K3E, K3F }, \
|
||||||
|
{ K40, K41, K42, KC_NO, K44, KC_NO, KC_NO, KC_NO, K48, K49, K4A, KC_NO, KC_NO, K4D, K4E, K4F }, \
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,83 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "Aozora",
|
||||||
|
"url": "https://salmoncat.studio/pages/aozora-%E9%9D%92%E7%A9%BA-6-9-21-7-10-21",
|
||||||
|
"maintainer": "Food",
|
||||||
|
"width": 17.25,
|
||||||
|
"height": 5,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT": {
|
||||||
|
"layout": [
|
||||||
|
{"label":"K00 (F6,B0)", "x":0, "y":0},
|
||||||
|
{"label":"K01 (F6,B1)", "x":1, "y":0},
|
||||||
|
{"label":"K02 (F6,B2)", "x":2, "y":0},
|
||||||
|
{"label":"K03 (F6,B3)", "x":3, "y":0},
|
||||||
|
{"label":"K04 (F6,B7)", "x":4, "y":0},
|
||||||
|
{"label":"K05 (F6,D0)", "x":5, "y":0},
|
||||||
|
{"label":"K06 (F6,D1)", "x":6, "y":0},
|
||||||
|
{"label":"K07 (F6,D4)", "x":7, "y":0},
|
||||||
|
{"label":"K08 (F6,D6)", "x":8, "y":0},
|
||||||
|
{"label":"K09 (F6,D7)", "x":9, "y":0},
|
||||||
|
{"label":"K0A (F6,B4)", "x":10, "y":0},
|
||||||
|
{"label":"K0B (F6,B5)", "x":11, "y":0},
|
||||||
|
{"label":"K0C (F6,B6)", "x":12, "y":0},
|
||||||
|
{"label":"K0D (F6,C6)", "x":13, "y":0, "w":2},
|
||||||
|
{"label":"K0E (F6,C7)", "x":15.25, "y":0},
|
||||||
|
{"label":"K0F (F6,F7)", "x":16.25, "y":0},
|
||||||
|
{"label":"K10 (F5,B0)", "x":0, "y":1, "w":1.5},
|
||||||
|
{"label":"K11 (F5,B1)", "x":1.5, "y":1},
|
||||||
|
{"label":"K12 (F5,B2)", "x":2.5, "y":1},
|
||||||
|
{"label":"K13 (F5,B3)", "x":3.5, "y":1},
|
||||||
|
{"label":"K14 (F5,B7)", "x":4.5, "y":1},
|
||||||
|
{"label":"K15 (F5,D0)", "x":5.5, "y":1},
|
||||||
|
{"label":"K16 (F5,D1)", "x":6.5, "y":1},
|
||||||
|
{"label":"K17 (F5,D4)", "x":7.5, "y":1},
|
||||||
|
{"label":"K18 (F5,D6)", "x":8.5, "y":1},
|
||||||
|
{"label":"K19 (F5,D7)", "x":9.5, "y":1},
|
||||||
|
{"label":"K1A (F5,B4)", "x":10.5, "y":1},
|
||||||
|
{"label":"K1B (F5,B5)", "x":11.5, "y":1},
|
||||||
|
{"label":"K1C (F5,B6)", "x":12.5, "y":1},
|
||||||
|
{"label":"K1D (F5,C6)", "x":13.5, "y":1, "w":1.5},
|
||||||
|
{"label":"K1E (F5,C7)", "x":15.25, "y":1},
|
||||||
|
{"label":"K1F (F5,F7)", "x":16.25, "y":1},
|
||||||
|
{"label":"K20 (F4,B0)", "x":0, "y":2, "w":1.75},
|
||||||
|
{"label":"K21 (F4,B1)", "x":1.75, "y":2},
|
||||||
|
{"label":"K22 (F4,B2)", "x":2.75, "y":2},
|
||||||
|
{"label":"K23 (F4,B3)", "x":3.75, "y":2},
|
||||||
|
{"label":"K24 (F4,B7)", "x":4.75, "y":2},
|
||||||
|
{"label":"K25 (F4,D0)", "x":5.75, "y":2},
|
||||||
|
{"label":"K26 (F4,D1)", "x":6.75, "y":2},
|
||||||
|
{"label":"K27 (F4,D4)", "x":7.75, "y":2},
|
||||||
|
{"label":"K28 (F4,D6)", "x":8.75, "y":2},
|
||||||
|
{"label":"K29 (F4,D7)", "x":9.75, "y":2},
|
||||||
|
{"label":"K2A (F4,B4)", "x":10.75, "y":2},
|
||||||
|
{"label":"K2B (F4,B5)", "x":11.75, "y":2},
|
||||||
|
{"label":"K2D (F4,C6)", "x":12.75, "y":2, "w":2.25},
|
||||||
|
{"label":"K30 (F1,B0)", "x":0, "y":3, "w":2.25},
|
||||||
|
{"label":"K31 (F1,B1)", "x":2.25, "y":3},
|
||||||
|
{"label":"K32 (F1,B2)", "x":3.25, "y":3},
|
||||||
|
{"label":"K33 (F1,B3)", "x":4.25, "y":3},
|
||||||
|
{"label":"K34 (F1,B7)", "x":5.25, "y":3},
|
||||||
|
{"label":"K35 (F1,D0)", "x":6.25, "y":3},
|
||||||
|
{"label":"K36 (F1,D1)", "x":7.25, "y":3},
|
||||||
|
{"label":"K37 (F1,D4)", "x":8.25, "y":3},
|
||||||
|
{"label":"K38 (F1,D6)", "x":9.25, "y":3},
|
||||||
|
{"label":"K39 (F1,D7)", "x":10.25, "y":3},
|
||||||
|
{"label":"K3A (F1,B4)", "x":11.25, "y":3},
|
||||||
|
{"label":"K3D (F1,C6)", "x":12.25, "y":3, "w":2.75},
|
||||||
|
{"label":"K3E (F1,C7)", "x":15.25, "y":3},
|
||||||
|
{"label":"K3F (F1,F7)", "x":16.25, "y":3},
|
||||||
|
{"label":"K40 (F0,B0)", "x":0, "y":4, "w":1.25},
|
||||||
|
{"label":"K41 (F0,B1)", "x":1.25, "y":4, "w":1.25},
|
||||||
|
{"label":"K42 (F0,B2)", "x":2.5, "y":4, "w":1.25},
|
||||||
|
{"label":"K44 (F0,B7)", "x":3.75, "y":4, "w":6.25},
|
||||||
|
{"label":"K48 (F0,D6)", "x":10, "y":4, "w":1.25},
|
||||||
|
{"label":"K49 (F0,D7)", "x":11.25, "y":4, "w":1.25},
|
||||||
|
{"label":"K4A (F0,B4)", "x":12.5, "y":4, "w":1.25},
|
||||||
|
{"label":"K4D (F0,C6)", "x":14.25, "y":4},
|
||||||
|
{"label":"K4E (F0,C7)", "x":15.25, "y":4},
|
||||||
|
{"label":"K4F (F0,F7)", "x":16.25, "y":4}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/"
|
||||||
|
}
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
/* Copyright 2021 Salmon Cat Studio
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[0] = LAYOUT(
|
||||||
|
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_PSCR, KC_PGUP,
|
||||||
|
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_DEL, KC_PGDN,
|
||||||
|
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_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, MO(1),
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LGUI, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
|
),
|
||||||
|
[1] = LAYOUT(
|
||||||
|
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_F13, KC_F14, KC_F15,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
|
||||||
|
};
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
# Aozora
|
||||||
|
|
||||||
|
A 65%-Style 6-Key keyboard featuring a cloud-shaped badge.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
* Keyboard Maintainer: [Food](https://github.com/Phooood)
|
||||||
|
* Hardware Supported: [Aozora](https://salmoncat.studio/pages/aozora-%E9%9D%92%E7%A9%BA-6-9-21-7-10-21)
|
||||||
|
* Hardware Availability: [salmoncat.studio](https://salmoncat.studio/pages/aozora-%E9%9D%92%E7%A9%BA-6-9-21-7-10-21) | GB is over.
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make aozora/hotswap:default
|
||||||
|
|
||||||
|
To reset, press the button on the back of the PCB.
|
||||||
|
|
||||||
|
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).
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
# MCU name
|
||||||
|
MCU = atmega32u4
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
BOOTLOADER = atmel-dfu
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
|
||||||
|
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||||
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
|
CONSOLE_ENABLE = yes # Console for debug
|
||||||
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
|
NKRO_ENABLE = no # USB Nkey Rollover
|
||||||
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
|
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||||
|
AUDIO_ENABLE = no # Audio output
|
||||||
|
|
||||||
+32
-1
@@ -1,5 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 Evy Dekkers
|
Copyright 2019 Evy Dekkers
|
||||||
|
2021 James Young for QMK (@noroadsleft)
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
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
|
it under the terms of the GNU General Public License as published by
|
||||||
@@ -21,7 +22,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
|
|
||||||
#define XXX KC_NO
|
#define XXX KC_NO
|
||||||
|
|
||||||
#define LAYOUT( \
|
#define LAYOUT_all( \
|
||||||
k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4e, \
|
k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4e, \
|
||||||
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \
|
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \
|
||||||
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
|
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
|
||||||
@@ -35,3 +36,33 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
{k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, XXX}, \
|
{k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, XXX}, \
|
||||||
{k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4e} \
|
{k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4e} \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_60_ansi_split_bs_rshift( \
|
||||||
|
k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4e, \
|
||||||
|
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \
|
||||||
|
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \
|
||||||
|
k10, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \
|
||||||
|
k00, k01, k02, k06, k0a, k0b, k0c, k0d \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{k00, k01, k02, XXX, XXX, XXX, k06, XXX, XXX, XXX, k0a, k0b, k0c, k0d, XXX}, \
|
||||||
|
{k10, XXX, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, XXX}, \
|
||||||
|
{k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d, XXX}, \
|
||||||
|
{k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, XXX}, \
|
||||||
|
{k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4e} \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_60_hhkb( \
|
||||||
|
k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4e, \
|
||||||
|
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \
|
||||||
|
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \
|
||||||
|
k10, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \
|
||||||
|
k01, k02, k06, k0b, k0c \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{XXX, k01, k02, XXX, XXX, XXX, k06, XXX, XXX, XXX, XXX, k0b, k0c, XXX, XXX}, \
|
||||||
|
{k10, XXX, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, XXX}, \
|
||||||
|
{k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d, XXX}, \
|
||||||
|
{k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, XXX}, \
|
||||||
|
{k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4e} \
|
||||||
|
}
|
||||||
@@ -49,5 +49,5 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)))
|
// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)))
|
||||||
|
|
||||||
/* Bootmagic Lite key configuration */
|
/* Bootmagic Lite key configuration */
|
||||||
// #define BOOTMAGIC_LITE_ROW 0
|
#define BOOTMAGIC_LITE_ROW 4
|
||||||
// #define BOOTMAGIC_LITE_COLUMN 0
|
#define BOOTMAGIC_LITE_COLUMN 0
|
||||||
+220
-8
@@ -1,12 +1,224 @@
|
|||||||
{
|
{
|
||||||
"keyboard_name": "LSJ Ares",
|
"keyboard_name": "LSJ Ares",
|
||||||
"url": "",
|
"url": "",
|
||||||
"maintainer": "qmk",
|
"maintainer": "qmk",
|
||||||
"width": 15,
|
"width": 15,
|
||||||
"height": 5,
|
"height": 5,
|
||||||
|
"layout_aliases": {
|
||||||
|
"LAYOUT": "LAYOUT_all"
|
||||||
|
},
|
||||||
"layouts": {
|
"layouts": {
|
||||||
"LAYOUT": {
|
"LAYOUT_all": {
|
||||||
"layout": [{"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"|", "x":13, "y":0}, {"label":"Back space", "x":14, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"|", "x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":2, "w":1.25}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"label":"|", "x":1.25, "y":3}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"Fn", "x":14, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Win", "x":11.25, "y":4, "w":1.25}, {"label":"Menu", "x":12.5, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}]
|
"layout": [
|
||||||
|
{"label":"~", "x":0, "y":0},
|
||||||
|
{"label":"!", "x":1, "y":0},
|
||||||
|
{"label":"@", "x":2, "y":0},
|
||||||
|
{"label":"#", "x":3, "y":0},
|
||||||
|
{"label":"$", "x":4, "y":0},
|
||||||
|
{"label":"%", "x":5, "y":0},
|
||||||
|
{"label":"^", "x":6, "y":0},
|
||||||
|
{"label":"&", "x":7, "y":0},
|
||||||
|
{"label":"*", "x":8, "y":0},
|
||||||
|
{"label":"(", "x":9, "y":0},
|
||||||
|
{"label":")", "x":10, "y":0},
|
||||||
|
{"label":"_", "x":11, "y":0},
|
||||||
|
{"label":"+", "x":12, "y":0},
|
||||||
|
{"label":"|", "x":13, "y":0},
|
||||||
|
{"label":"Back space", "x":14, "y":0},
|
||||||
|
|
||||||
|
{"label":"Tab", "x":0, "y":1, "w":1.5},
|
||||||
|
{"label":"Q", "x":1.5, "y":1},
|
||||||
|
{"label":"W", "x":2.5, "y":1},
|
||||||
|
{"label":"E", "x":3.5, "y":1},
|
||||||
|
{"label":"R", "x":4.5, "y":1},
|
||||||
|
{"label":"T", "x":5.5, "y":1},
|
||||||
|
{"label":"Y", "x":6.5, "y":1},
|
||||||
|
{"label":"U", "x":7.5, "y":1},
|
||||||
|
{"label":"I", "x":8.5, "y":1},
|
||||||
|
{"label":"O", "x":9.5, "y":1},
|
||||||
|
{"label":"P", "x":10.5, "y":1},
|
||||||
|
{"label":"{", "x":11.5, "y":1},
|
||||||
|
{"label":"}", "x":12.5, "y":1},
|
||||||
|
{"label":"|", "x":13.5, "y":1, "w":1.5},
|
||||||
|
|
||||||
|
{"label":"Caps Lock", "x":0, "y":2, "w":1.75},
|
||||||
|
{"label":"A", "x":1.75, "y":2},
|
||||||
|
{"label":"S", "x":2.75, "y":2},
|
||||||
|
{"label":"D", "x":3.75, "y":2},
|
||||||
|
{"label":"F", "x":4.75, "y":2},
|
||||||
|
{"label":"G", "x":5.75, "y":2},
|
||||||
|
{"label":"H", "x":6.75, "y":2},
|
||||||
|
{"label":"J", "x":7.75, "y":2},
|
||||||
|
{"label":"K", "x":8.75, "y":2},
|
||||||
|
{"label":"L", "x":9.75, "y":2},
|
||||||
|
{"label":":", "x":10.75, "y":2},
|
||||||
|
{"label":"\"", "x":11.75, "y":2},
|
||||||
|
{"label":"|", "x":12.75, "y":2},
|
||||||
|
{"label":"Enter", "x":13.75, "y":2, "w":1.25},
|
||||||
|
|
||||||
|
{"label":"Shift", "x":0, "y":3, "w":1.25},
|
||||||
|
{"label":"|", "x":1.25, "y":3},
|
||||||
|
{"label":"Z", "x":2.25, "y":3},
|
||||||
|
{"label":"X", "x":3.25, "y":3},
|
||||||
|
{"label":"C", "x":4.25, "y":3},
|
||||||
|
{"label":"V", "x":5.25, "y":3},
|
||||||
|
{"label":"B", "x":6.25, "y":3},
|
||||||
|
{"label":"N", "x":7.25, "y":3},
|
||||||
|
{"label":"M", "x":8.25, "y":3},
|
||||||
|
{"label":"<", "x":9.25, "y":3},
|
||||||
|
{"label":">", "x":10.25, "y":3},
|
||||||
|
{"label":"?", "x":11.25, "y":3},
|
||||||
|
{"label":"Shift", "x":12.25, "y":3, "w":1.75},
|
||||||
|
{"label":"Fn", "x":14, "y":3},
|
||||||
|
|
||||||
|
{"label":"Ctrl", "x":0, "y":4, "w":1.25},
|
||||||
|
{"label":"Win", "x":1.25, "y":4, "w":1.25},
|
||||||
|
{"label":"Alt", "x":2.5, "y":4, "w":1.25},
|
||||||
|
{"label":"Space", "x":3.75, "y":4, "w":6.25},
|
||||||
|
{"label":"Alt", "x":10, "y":4, "w":1.25},
|
||||||
|
{"label":"Win", "x":11.25, "y":4, "w":1.25},
|
||||||
|
{"label":"Menu", "x":12.5, "y":4, "w":1.25},
|
||||||
|
{"label":"Ctrl", "x":13.75, "y":4, "w":1.25}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_60_ansi_split_bs_rshift": {
|
||||||
|
"layout": [
|
||||||
|
{"x":0, "y":0},
|
||||||
|
{"x":1, "y":0},
|
||||||
|
{"x":2, "y":0},
|
||||||
|
{"x":3, "y":0},
|
||||||
|
{"x":4, "y":0},
|
||||||
|
{"x":5, "y":0},
|
||||||
|
{"x":6, "y":0},
|
||||||
|
{"x":7, "y":0},
|
||||||
|
{"x":8, "y":0},
|
||||||
|
{"x":9, "y":0},
|
||||||
|
{"x":10, "y":0},
|
||||||
|
{"x":11, "y":0},
|
||||||
|
{"x":12, "y":0},
|
||||||
|
{"x":13, "y":0},
|
||||||
|
{"x":14, "y":0},
|
||||||
|
|
||||||
|
{"x":0, "y":1, "w":1.5},
|
||||||
|
{"x":1.5, "y":1},
|
||||||
|
{"x":2.5, "y":1},
|
||||||
|
{"x":3.5, "y":1},
|
||||||
|
{"x":4.5, "y":1},
|
||||||
|
{"x":5.5, "y":1},
|
||||||
|
{"x":6.5, "y":1},
|
||||||
|
{"x":7.5, "y":1},
|
||||||
|
{"x":8.5, "y":1},
|
||||||
|
{"x":9.5, "y":1},
|
||||||
|
{"x":10.5, "y":1},
|
||||||
|
{"x":11.5, "y":1},
|
||||||
|
{"x":12.5, "y":1},
|
||||||
|
{"x":13.5, "y":1, "w":1.5},
|
||||||
|
|
||||||
|
{"x":0, "y":2, "w":1.75},
|
||||||
|
{"x":1.75, "y":2},
|
||||||
|
{"x":2.75, "y":2},
|
||||||
|
{"x":3.75, "y":2},
|
||||||
|
{"x":4.75, "y":2},
|
||||||
|
{"x":5.75, "y":2},
|
||||||
|
{"x":6.75, "y":2},
|
||||||
|
{"x":7.75, "y":2},
|
||||||
|
{"x":8.75, "y":2},
|
||||||
|
{"x":9.75, "y":2},
|
||||||
|
{"x":10.75, "y":2},
|
||||||
|
{"x":11.75, "y":2},
|
||||||
|
{"x":12.75, "y":2, "w":2.25},
|
||||||
|
|
||||||
|
{"x":0, "y":3, "w":2.25},
|
||||||
|
{"x":2.25, "y":3},
|
||||||
|
{"x":3.25, "y":3},
|
||||||
|
{"x":4.25, "y":3},
|
||||||
|
{"x":5.25, "y":3},
|
||||||
|
{"x":6.25, "y":3},
|
||||||
|
{"x":7.25, "y":3},
|
||||||
|
{"x":8.25, "y":3},
|
||||||
|
{"x":9.25, "y":3},
|
||||||
|
{"x":10.25, "y":3},
|
||||||
|
{"x":11.25, "y":3},
|
||||||
|
{"x":12.25, "y":3, "w":1.75},
|
||||||
|
{"x":14, "y":3},
|
||||||
|
|
||||||
|
{"x":0, "y":4, "w":1.25},
|
||||||
|
{"x":1.25, "y":4, "w":1.25},
|
||||||
|
{"x":2.5, "y":4, "w":1.25},
|
||||||
|
{"x":3.75, "y":4, "w":6.25},
|
||||||
|
{"x":10, "y":4, "w":1.25},
|
||||||
|
{"x":11.25, "y":4, "w":1.25},
|
||||||
|
{"x":12.5, "y":4, "w":1.25},
|
||||||
|
{"x":13.75, "y":4, "w":1.25}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_60_hhkb": {
|
||||||
|
"layout": [
|
||||||
|
{"x":0, "y":0},
|
||||||
|
{"x":1, "y":0},
|
||||||
|
{"x":2, "y":0},
|
||||||
|
{"x":3, "y":0},
|
||||||
|
{"x":4, "y":0},
|
||||||
|
{"x":5, "y":0},
|
||||||
|
{"x":6, "y":0},
|
||||||
|
{"x":7, "y":0},
|
||||||
|
{"x":8, "y":0},
|
||||||
|
{"x":9, "y":0},
|
||||||
|
{"x":10, "y":0},
|
||||||
|
{"x":11, "y":0},
|
||||||
|
{"x":12, "y":0},
|
||||||
|
{"x":13, "y":0},
|
||||||
|
{"x":14, "y":0},
|
||||||
|
|
||||||
|
{"x":0, "y":1, "w":1.5},
|
||||||
|
{"x":1.5, "y":1},
|
||||||
|
{"x":2.5, "y":1},
|
||||||
|
{"x":3.5, "y":1},
|
||||||
|
{"x":4.5, "y":1},
|
||||||
|
{"x":5.5, "y":1},
|
||||||
|
{"x":6.5, "y":1},
|
||||||
|
{"x":7.5, "y":1},
|
||||||
|
{"x":8.5, "y":1},
|
||||||
|
{"x":9.5, "y":1},
|
||||||
|
{"x":10.5, "y":1},
|
||||||
|
{"x":11.5, "y":1},
|
||||||
|
{"x":12.5, "y":1},
|
||||||
|
{"x":13.5, "y":1, "w":1.5},
|
||||||
|
|
||||||
|
{"x":0, "y":2, "w":1.75},
|
||||||
|
{"x":1.75, "y":2},
|
||||||
|
{"x":2.75, "y":2},
|
||||||
|
{"x":3.75, "y":2},
|
||||||
|
{"x":4.75, "y":2},
|
||||||
|
{"x":5.75, "y":2},
|
||||||
|
{"x":6.75, "y":2},
|
||||||
|
{"x":7.75, "y":2},
|
||||||
|
{"x":8.75, "y":2},
|
||||||
|
{"x":9.75, "y":2},
|
||||||
|
{"x":10.75, "y":2},
|
||||||
|
{"x":11.75, "y":2},
|
||||||
|
{"x":12.75, "y":2, "w":2.25},
|
||||||
|
|
||||||
|
{"x":0, "y":3, "w":2.25},
|
||||||
|
{"x":2.25, "y":3},
|
||||||
|
{"x":3.25, "y":3},
|
||||||
|
{"x":4.25, "y":3},
|
||||||
|
{"x":5.25, "y":3},
|
||||||
|
{"x":6.25, "y":3},
|
||||||
|
{"x":7.25, "y":3},
|
||||||
|
{"x":8.25, "y":3},
|
||||||
|
{"x":9.25, "y":3},
|
||||||
|
{"x":10.25, "y":3},
|
||||||
|
{"x":11.25, "y":3},
|
||||||
|
{"x":12.25, "y":3, "w":1.75},
|
||||||
|
{"x":14, "y":3},
|
||||||
|
|
||||||
|
{"x":1.5, "y":4},
|
||||||
|
{"x":2.5, "y":4, "w":1.5},
|
||||||
|
{"x":4, "y":4, "w":7},
|
||||||
|
{"x":11, "y":4, "w":1.5},
|
||||||
|
{"x":12.5, "y":4}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loaded 100 of 1721 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user