Compare commits

..

547 Commits

Author SHA1 Message Date
Sergey Vlasov
2d71ac7541 Add Keyboardio Atreus 2 Bootloader to udev rules (#15241)
The Keyboardio Atreus 2 Bootloader is a clone of the Caterina bootloader
with different USB VID:PID values (1209:2302):

  https://github.com/keyboardio/Atreus2-Bootloader
2021-11-20 22:01:22 +00:00
ForeverAnApple
eff9288759 [Keymap] Initial simple keymap for ForeverAnApple (#14654)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-11-19 20:14:54 -08:00
jels
60b032e3bf [Keyboard] Added Jels88 (#15090)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@users.noreply.github.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-11-19 19:47:58 -08:00
James Young
f7b24e2965 Meletrix Zoom65 Refactor (#15222) 2021-11-19 19:44:23 -08:00
James Young
9ccd22e8de Minimon Index Tab touch-up (#15224) 2021-11-19 19:44:10 -08:00
James Young
5de50cf645 Undead60M touch-up (#15214) 2021-11-19 19:42:44 -08:00
James Young
0facda9ecb Lime rev1: fix Configurator implementation (#15213) 2021-11-19 19:42:27 -08:00
Drashna Jaelre
7343a2fc93 [Keyboard] Fix xox70 via layout (#15220) 2021-11-19 19:40:02 -08:00
James Young
0107d77c24 Handwired Split65: Fix QMK Configurator Implementation (#15209) 2021-11-19 09:53:42 -08:00
rhmokey
6b3b302dfe [Keyboard] Add xox70 (#15098) 2021-11-19 09:53:00 -08:00
HellTM
fa35df0374 [Keymap] 3w6 helltm keymap (with ascii art) (#15146)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-11-19 09:52:33 -08:00
Andy
3491a386da [Keymap] Sofle RGB - fixed switch and numpad layers (#15094) 2021-11-19 09:52:15 -08:00
Callum Hart
802d7e5e15 [Keyboard] Add Keebcats Denis PCB (#15154) 2021-11-19 09:51:42 -08:00
jels
5c3afe3e6b [Keyboard] Add b87 keyboard (#15091)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-11-19 09:51:21 -08:00
Ramon Imbao
817a82378b [Keyboard] Add TKL-FF v2 (#15144)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-11-19 09:51:00 -08:00
Nick Abe
66792b0769 [Keyboard] Aozora update (#15201)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-11-19 09:50:10 -08:00
Yoshihiro Saito
94b5350246 [Keymap] Add yoshimaru46's keymap for Ergodash mini (#15191) 2021-11-19 09:42:39 -08:00
Callum Hart
10c36032a0 [Keyboard] Add Keebcats Dougal PCB (#15168) 2021-11-19 09:41:12 -08:00
Kyle Gieselman
58e7527e60 [Keyboard] Add MTBKeys MTB60 Keyboard (Solderable and Hotswap edition) (#14222)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-11-19 08:02:19 -08:00
James Young
4f764519ab Chalice: Fix QMK Configurator Implementation (#15206) 2021-11-18 22:13:05 -08:00
James Young
9cdbc040cd FFKeebs Púca Refactor (#15208) 2021-11-18 22:12:49 -08:00
James Young
26ae432190 handwired/split89 Layout Macro Refactor (#15210) 2021-11-18 22:12:21 -08:00
jfescobar18
d2b20692fb [Keyboard] Add miniashen40 (#14238)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-11-18 21:03:56 -08:00
Ryan
aee10ccc5c [CLI] list-keymaps/list-layouts: Check keyboard passed in (#15204)
* [CLI] `list-keymaps`/`list-layouts`: Check keyboard passed in

* Update lib/python/qmk/cli/list/keymaps.py

Co-authored-by: Joel Challis <git@zvecr.com>

* Update lib/python/qmk/cli/list/layouts.py

Co-authored-by: Joel Challis <git@zvecr.com>

Co-authored-by: Joel Challis <git@zvecr.com>
2021-11-18 17:55:07 +00:00
Joel Challis
cd50fdf7ee Add diff logic to python format subcommand (#15156)
* Add diff logic to python format subcommand

* Update test

* Add in filter per format-c

* fix tests

* Update new workflow
2021-11-17 23:02:45 +00:00
Alexis Jeandeau
b5d24f9efb Call steno_set_mode inside eeconfig_init_user in the doc (#15176) 2021-11-17 22:30:42 +00:00
Drashna Jaelre
10e896630c [Keyboard] Move encoder hacks into via keymaps for Work Louder boards (#15192) 2021-11-17 20:54:12 +00:00
Drashna Jaelre
254e26554b [Keymap] updates for oled, and diablo 2 layer - Drashna (#15194) 2021-11-17 12:45:50 -08:00
QMK Bot
2c5d66987d Format code according to conventions (#15193) 2021-11-18 07:28:38 +11:00
Joel Challis
b06740c933 Auto-create PRs for merged formatting issues (#15157)
* Auto-create PRs for merged formatting issues

* Update .github/workflows/format_push.yaml
2021-11-17 20:05:12 +00:00
Alexis Jeandeau
3d49069a46 [Keyboard] Add SOFT/HRUF Splitography keyboard (#15133) 2021-11-16 18:59:03 -08:00
drhigsby
596511a959 [Keyboard] Packrat (#14574)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-11-16 18:58:32 -08:00
James Young
86dd439eb6 handwired/myskeeb Layout Macro Refactor (#15181)
* handwired/myskeeb: update key positions in info.json

* remove unused matrix positions

L26 and R20 aren't physically present on the keyboard.

* add image to readme file

* add supported hardware and flashing example to readme
2021-11-16 17:36:10 -08:00
James Young
c6c35f3363 wsk/sl40: remove dead space from LAYOUT_all (#15183) 2021-11-16 15:05:54 -08:00
Sleepdealer
f3897f55b5 [Keyboard] Add FootFingers Puca (#14837) 2021-11-16 11:30:21 -08:00
Xelus22
053a970cba [Keyboard] Add Pachi RGB Rev 2 (#15141)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-11-16 11:16:06 -08:00
yiancar
bed4ab6f6f [Keyboard] Emery65 (#15145)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: yiancar <yiancar@gmail.com>
2021-11-16 11:15:35 -08:00
Albert Y
22eba60041 [Keyboard] Add macro3 PCB support (#15131)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: filterpaper <filterpaper@localhost>
2021-11-15 17:05:15 -08:00
Matthew Dias
d3ae937b50 [Keyboard] Add layout options, hotswap version to portal 66 (#14719)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-11-15 16:29:19 -08:00
studiokestra
269990ed95 [Keyboard] Add Bourgeau 75% PCB (#15072)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-11-15 15:44:17 -08:00
James Young
0db70f1f2a kb_elmo/m0116_usb: Fix Configurator Key Sequence (#15147)
* friendly-format info.json

* fix info.json key sequence
2021-11-15 10:41:44 -08:00
Joel Challis
ec0bb791f8 Partially reinstate CI formatting process (#15155)
* Partially reinstate CI formatting process

* Fix exit code on clean run

* Fix exit code on clean run
2021-11-14 23:06:22 +00:00
James Young
b785305080 kb_elmo/elmopad: fix macro reference in info.json (#15142) 2021-11-13 20:22:35 +00:00
James Young
562c828f75 kb_elmo/m0110a_usb: Fix Configurator Key Sequence (#15143)
* correct info.json key sequence

* friendly-format info.json

Adds label keys and line breaks between the keyboard rows.
2021-11-13 20:22:10 +00:00
peepeetee
0ee9c41cc6 Fix hebrew emoji in langs.md (#15140) 2021-11-13 17:18:02 +00:00
Albert Y
f3efc98877 [Keyboard] Add space between Cradio info.json layout (#15127)
Co-authored-by: filterpaper <filterpaper@localhost>
2021-11-13 09:10:44 -08:00
Markus Fritsche
8323177472 add wait to unicode for win (#15061)
Co-authored-by: Markus Fritsche <fritsche.markus@gmail.com>
2021-11-12 15:00:36 -08:00
Albert Y
57f63e43d8 [Docs] Correct logic of tap hold statement (#14992)
Co-authored-by: filterpaper <filterpaper@localhost>
2021-11-12 14:14:28 -08:00
WiZ.GG
463cb40e16 [Keyboard] Add JadooKB JKB2 (#15036)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-11-12 08:39:04 -08:00
Albert Y
9e84be7821 [Keyboard] Update a_dux info.json (#15126)
Co-authored-by: filterpaper <filterpaper@localhost>
2021-11-12 08:38:21 -08:00
Josh Johnson
051bde9c63 [Keyboard] Add Chalice Support (#15106)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-11-12 08:37:54 -08:00
Drashna Jaelre
7c2b2c81b5 [Docs] Codify not using code from other keyboards in PRs (#15128)
* [Docs] Codify not using code from other keyboards in PRs

* add additional comments
2021-11-12 18:33:16 +11:00
Joel Challis
a2baed0ebf Fix obsolete or unknown configuration file (#15129) 2021-11-12 01:44:35 +00:00
Joel Challis
0b2bc89559 Avoid MATRIX_*_PINS due to schema validation errors (#15123) 2021-11-12 06:02:00 +11:00
George Petri
d13286fd29 Update Gergoplex keymap (#15111)
* fix wrong config

* start work on gaming layer

* mod tap per key

* tap dance to game layer

* impl game layer

* add double quotes and underline
2021-11-11 17:38:25 +00:00
Drashna Jaelre
7d1c33afe6 [Keyboard] Reduce compiled size for pk64rgb's via keymap (#15118) 2021-11-11 08:57:44 -08:00
Drashna Jaelre
6ab68e9318 [Keyboard] Fix compilation issues for Krush boards (#15117) 2021-11-11 08:56:51 -08:00
HellTM
c48e9f9e77 [Keyboard] Lime by HellTM (#14710)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-11-10 20:32:31 -08:00
Gustavs Gūtmanis
48eddeeea4 [Keymap] Adding keymap for BDN9 and Planck (#15067) 2021-11-10 20:31:39 -08:00
Sắn
a4eb73eef0 [Keyboard] Added Krush Solder (60% & 65%) (#15074) 2021-11-10 20:30:27 -08:00
Drashna Jaelre
1989eb17ec [Keyboard] Fix compilation issues for teleport numpad (#15110) 2021-11-10 09:48:59 -08:00
Albert Y
67387cf277 [Keyboard] Add Paroxysm keyboard to Cradio (#15097)
Co-authored-by: filterpaper <filterpaper@localhost>
2021-11-10 08:33:11 -08:00
melonbred
d3fe3cf3e8 [Keyboard] Update mb44.h (#15092) 2021-11-10 08:31:41 -08:00
Barry Huang
474921d231 [Keyboard] PK64RGB Keyboard Addition (#14627) 2021-11-10 07:03:58 -08:00
MechMerlin
6ccf774ea5 [Keyboard] Element Hotswap PCB (#15082)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-11-10 06:24:16 -08:00
Moritz
40ac8d1536 [Keyboard] Teleport numpad (#14905)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-11-10 06:22:53 -08:00
Drashna Jaelre
83ab7d41ef Updates to drashna keymap and minor updates to tractyl manuform (#15101) 2021-11-10 06:10:00 -08:00
James Young
8df90c63c1 Update noroadsleft userspace and keymaps (2021-11-09) (#15099) 2021-11-09 19:45:59 -08:00
James Young
93b3d9b33c Mechlovin Pisces Refactor (#15080) 2021-11-07 20:40:30 -08:00
James Young
0b89fa3324 idb 60 Layout Macro Refactor (#15079)
* alias LAYOUT to LAYOUT_all

* move layout alias to info.json

* use XXX for KC_NO in idb_60.h

* remove newline characters from info.json labels

* put LAYOUT_all data first in info.json

Matches the order of idb_60.h.

* friendly-format info.json

* add matrix diagram to idb_60.h

* rename LAYOUT_default to LAYOUT_60_ansi_wkl_split_rshift

* add LAYOUT_60_tsangan_hhkb

* add LAYOUT_60_ansi_tsangan

* add LAYOUT_60_iso_tsangan

* add LAYOUT_60_iso_wkl_split_rshift

* add LAYOUT_60_iso_tsangan_hhkb

* edit Backspace label for LAYOUT_60_ansi_wkl_split_rshift

* use GitHub username in info.json maintainer field
2021-11-06 11:52:31 -07:00
takashicompany
74b5a4357c [Keyboard] Add new keyboard "Heavy Left" (#15052)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Takeshi ISHII <2170248+mtei@users.noreply.github.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-11-06 08:41:22 -07:00
Evelien Dekkers
4de89df5dc [Keyboard] Add VIA to Gud70 (#15071) 2021-11-05 21:22:01 -07:00
Drashna Jaelre
731938ce9d [Keyboard] Fix compilation issues for superuser tkl (#15070) 2021-11-05 20:49:39 +00:00
kb-elmo
058248e28c [Keyboard] Add Ziggurat keyboard (#15008)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-11-05 11:48:49 -07:00
mizuhof
42af494f8e [Keymap] add keymap for xd60 (#15053)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-11-05 11:41:52 -07:00
kototama
827115a4f6 [Keymap] Revamp the ergodox french_hacker layout (#15064) 2021-11-05 11:27:48 -07:00
Sergey Vlasov
892666f19a kprepublic/bm65rgb/rev1: Fix info.json (#15066) 2021-11-05 11:27:35 -07:00
Cory Ginsberg
6bed639d08 [Keymap][GMMK Pro] Add personal profile (#15069)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Cory Ginsberg <coryginsberg@fb.com>
2021-11-05 11:27:18 -07:00
James Young
125b27f31a Superuser TKL Layout Macro Refactor (#15048)
* rename LAYOUT_tkl to LAYOUT_all

* friendly-format info.json

* use K<row><column> notation in tkl.h

* add matrix diagram to tkl.h

* add LAYOUT_tkl_ansi_tsangan

* add LAYOUT_tkl_ansi_tsangan_split_bs_rshift

* add LAYOUT_tkl_iso_tsangan

* add LAYOUT_tkl_iso_tsangan_split_bs_rshift

* correct keyboard maintainer values
2021-11-05 11:03:07 -07:00
James Young
991235cd78 Superuser EXT Layout Macro Refactor (#15043)
* fix info.json macro reference

* rename LAYOUT_tkl to LAYOUT_all

* use K<row><column> notation in ext.h

* add matrix diagram to ext.h

* friendly-format info.json

* add LAYOUT_ansi

* add LAYOUT_ansi_split_bs_rshift

* add LAYOUT_iso

* add LAYOUT_iso_split_bs_rshift

* correct keyboard maintainer values
2021-11-05 10:36:41 -07:00
Albert Y
c1edd0e10e Improve Sweep keyboard readme documentation (#15038)
Co-authored-by: filterpaper <filterpaper@localhost>
2021-11-05 09:01:31 -07:00
Albert Y
a2d2c5bc69 Add toolbox handedness instructions for Cradio (#15046)
Co-authored-by: filterpaper <filterpaper@localhost>
2021-11-05 09:00:44 -07:00
Albert Y
74b3f76bf5 Improve handedness documentation for Architeuthis Dux (#15051)
Co-authored-by: filterpaper <filterpaper@localhost>
2021-11-05 09:00:34 -07:00
James Young
25c93bd9a3 Mechlovin Infinity88 Layout Extension (#15058) 2021-11-05 08:28:12 -07:00
Yang Hu
ad6d85ef5a Add a new keyboard "Unicorne" (#12993)
* Add keyboards/yanghu/unicorne initial files.

* add default keymap to yanghu/unicorne

* use slow i2c and enable internal pullup resistor

* add oled to default keymaps

* fix unicorne default keymap

* fix encoder pad direction

* fix marauder

* add led matrix configs.

* add encoder code to default keymap.

* fix encoder direction

* add readme, info.json and update copyright for c files.

* fix build error by clean up include in unicorne.c

* fix images in readme files

* Fix various issues in PR #12993 feedback.

* Added copyright in glcdfont, fix include in that file.
* Removed `_kc` layout and renamed layout with generic style.
* Moved capslock oled update to oled.c inside `oled_task_user()`.

* Update keyboards/yanghu/unicorne/keymaps/default/rules.mk

Always include oled.c

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Update keyboards/yanghu/unicorne/keymaps/default/oled.c

Wrap `oled.c` with ifdef.

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Update keyboards/yanghu/unicorne/keymaps/default/oled.c

Co-authored-by: Drashna Jaelre <drashna@live.com>

* move oled code to unicorne.c, and set weakly.

* Update keyboards/yanghu/unicorne/config.h

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Update keyboards/yanghu/unicorne/keymaps/default/keymap.c

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Update keyboards/yanghu/unicorne/keymaps/default/keymap.c

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Update keyboards/yanghu/unicorne/keymaps/default/keymap.c

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Update keyboards/yanghu/unicorne/unicorne.c

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Update keyboards/yanghu/unicorne/readme.md

Co-authored-by: Ryan <fauxpark@gmail.com>

* Update keyboards/yanghu/unicorne/readme.md

Co-authored-by: Ryan <fauxpark@gmail.com>

* Update keyboards/yanghu/unicorne/readme.md

Co-authored-by: Ryan <fauxpark@gmail.com>

* Update keyboards/yanghu/unicorne/readme.md

Co-authored-by: Ryan <fauxpark@gmail.com>

* Update keyboards/yanghu/unicorne/keymaps/default/oled.c

Co-authored-by: Ryan <fauxpark@gmail.com>

* Update keyboards/yanghu/unicorne/f411/rules.mk

Co-authored-by: Ryan <fauxpark@gmail.com>

* Update keyboards/yanghu/unicorne/rules.mk

Co-authored-by: Ryan <fauxpark@gmail.com>

* remove oled.h

* remove include of oled.h after the file is deleted.

* Apply suggestions from code review: remove redundant macros and reformat.

Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>

* Apply suggestions from code review: change OLED driver macro.

Use `OLED_ENABLE` instead of `OLED_DRIVER_ENABLE`.

Co-authored-by: Jonathan Rascher <jon@bcat.name>

Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Jonathan Rascher <jon@bcat.name>
2021-11-05 20:10:15 +11:00
devilzmods
8f2ffea656 My Personal Keymaps for the Planck and melody96 (#12672)
* my planck keymap

* my planck keymap

* minor changes

* Added personalized, VIA compatible keymap to the Melody96

* lighting layers added and keymap tweaked

* added basic descriptions

* added basic descriptions

* added basic descriptions

* added basic descriptions

* hopefully removed personal change to .gitignore

* restored .gitignore from my master

* restored .gitignore from my master

* requested changes and minor functionality tweaks

* Apply suggestions from code review

Co-authored-by: Ryan <fauxpark@gmail.com>

Co-authored-by: Nick Brassel <nick@tzarc.org>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-11-05 19:56:38 +11:00
Albert Y
a63c2c5f50 Add example for turning off RGB colors and retaining indicator function (#14997)
* Add init function for solid effect with colors off

* Restructure sentence

Co-authored-by: filterpaper <filterpaper@localhost>
2021-11-05 19:11:45 +11:00
Ryan
cc5a38e787 Rework ISP flashing guide (#14938)
Co-authored-by: Sergey Vlasov <sigprof@gmail.com>
Co-authored-by: Dasky <32983009+daskygit@users.noreply.github.com>
2021-11-05 14:42:08 +11:00
yulei
3f62b46939 add matrix abelx keyboard (#10968)
* add matrix abelx keyboard

* Update keyboards/matrix/abelx/abelx.c

Co-authored-by: Drashna Jaelre <drashna@live.com>

* fixed rgb led pin issue

* Apply suggestions from code review

Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/matrix/abelx/aw9523b.h

Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/matrix/abelx/aw9523b.c

Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/matrix/abelx/abelx.h

Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/matrix/abelx/abelx.c

Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>

* fixed board name

* Apply suggestions from code review

Co-authored-by: Nick Brassel <nick@tzarc.org>

* move led update from scan_kb to hoursekeeping_kb

* move led update from scan_kb to housekeeping_kb

Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: Nick Brassel <nick@tzarc.org>
2021-11-05 13:54:40 +11:00
foxx1337
2ac2695cb5 [Keymap] foxx1337 for Massdrop CTRL with raw HID (#8692)
* [Keymap] foxx1337's personal keymap

* Add keymap based on ctrl default
* Add 5 minute rgb matrix timeout

* Add foxx1337 layout defaults

* Add raw HID communication protocol

* Add rgbmatrix to the raw HID protocol

* Add readme

* Modernize ctrl, shift, alt mods detection

* Add GPL like copyright headers
2021-11-05 13:36:27 +11:00
mechlovin
45b35e6ea1 [Keyboard] Update Infinity87 rev. 2 (#14820)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-11-04 15:08:40 -07:00
Nick Brassel
c8da63382c Fixup actions. (#15057) 2021-11-04 21:49:09 +00:00
Erovia
c8b09d0d4a CLI: Add 'cd' subcommand (#12584)
* CLI: Add 'cd' subcommand

Go to your qmk_firmware dir with ease.

* Fix for Windows and do not run if already under QMK Home

* Make flake8 happy

* Fix prompt for Windows

* Make flake8 happy once again

* I'll get it right eventually

* Apply suggestions from code review

Co-authored-by: Ryan <fauxpark@gmail.com>

* Add subcommand to __init__.py and fixup after rebase

* Update Windows code to use milc's run

* Unify the subshell starting with os.execl

* Exit with error msg when output is redirected to non-TTY.

* Revert Windows-specific code

Co-authored-by: Ryan <fauxpark@gmail.com>
2021-11-05 08:21:09 +11:00
Mikkel Jeppesen
fefd7fdc51 Refactor new-keyboard to be python3.7 compatible (#14707)
* Use copy_tree from distutils for python 3.7 support

* Bump python version in docs

* Changed new-keyboard to use printf-style format strings

* Use username for manunfacturer / maintainer

* Update lib/python/qmk/cli/new/keyboard.py

Co-authored-by: Zach White <skullydazed@drpepper.org>

Co-authored-by: Zach White <skullydazed@drpepper.org>
2021-11-05 08:14:43 +11:00
Ryan
6437045166 qmk docs: Run docsify serve if available (#15056) 2021-11-05 08:02:27 +11:00
Drashna Jaelre
c85109b108 [Keyboard] Reduce compile size for takashicompany compacx (#15054) 2021-11-04 15:53:02 +00:00
James Young
aaf4b348f0 Xelus Dawn60 Layout Macro Additions (#15049)
* add matrix diagrams to keyboard header files

* rename LAYOUT_60_all to LAYOUT_all

* add LAYOUT_60_ansi_arrow

* add LAYOUT_60_tsangan_hhkb
2021-11-04 00:16:35 -07:00
takashicompany
8ce69e6a83 [Keyboard] Add new keyboard "Compacx" (#14903)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-11-03 22:26:18 -07:00
Mike Killewald
3f33362740 [Keymap] added caps lock indicator for Keychron Q1 rev_0100 (#14653) 2021-11-03 21:20:35 -07:00
Wolf Van Herreweghe
c8c7386ed4 [Keyboard] Add the Kuku65 (#14910)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Wolf Van Herreweghe <wolfvh@getupgamesofficial.com>
2021-11-03 21:16:32 -07:00
jurassic73
8fa8712987 [Keyboard] Layout update to split89.h (#14930) 2021-11-03 21:14:21 -07:00
James Young
712c01e98f Sets3n kk980 Layout Macro Refactor (#15039)
* physically arrange layout macro

Arranges the layout macro to resemble the keyboard layout, and updates the keymaps to match.

* use 3-character notation for position identifiers in kk980.h

* add matrix diagram to kk980.h

* fix syntax error in info.json

Apparently the API doesn't care about this error... but QMK Configurator does if you use the local import mode (Ctrl+Shift+I).
2021-11-03 16:31:07 +00:00
James Young
7d66e8fe50 steal_this_keyboard fix info.json macro reference (#15032)
- change LAYOUT to LAYOUT_split_3x5_2
2021-11-03 01:01:11 +00:00
James Young
6d807af783 Fix Rocketboard-16 QMK Configurator Implementation (#15028)
* rename LAYOUT_default to LAYOUT

Only one layout is supported.

* refactor keymaps

- use short-form keycodes
2021-11-03 01:00:27 +00:00
James Young
87fc950707 Add Redox Media Configurator Data (#15013) 2021-11-02 19:26:28 +11:00
Albert Y
2761b17b98 Clarify placement of configuration options (#15015)
Co-authored-by: filterpaper <filterpaper@localhost>
2021-11-02 17:19:01 +11:00
Drashna Jaelre
72f94daae1 [Keyboard] Fix compilation size issues for Canary 60 RGB (#15016) 2021-11-02 15:36:00 +11:00
AnthonyNguyen168
3c08817e44 [Keyboard] Fix keymaps, RGB matrix, add support for WS2812 (#14974) 2021-10-31 20:45:48 -07:00
Mateusz Ż
fe0acdd2cb [CLI] Fix broken layout rendering in qmk info by '\n' (#14970) 2021-10-31 01:21:20 -07:00
takashicompany
53d614955d [Keyboard] Add new keyboard "QooLee" (#14977)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-10-31 01:17:38 -07:00
MechMerlin
ba69c47bb8 Add new default community layout for no f-row TKLs (#14812)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-10-31 01:17:23 -07:00
MechMerlin
1351dfff08 [Keymap] Disable in-switch RGB when computer goes to bed (#14993) 2021-10-30 21:17:42 -07:00
Albert Y
32d18f2857 [Keymap] Improved settings for Cradio default keymap (#14971)
Co-authored-by: filterpaper <filterpaper@localhost>
2021-10-30 11:54:36 -07:00
jonavin
5334e087ef [Keymap] Jonavin userspace encoder alt tab scrolling (#14979)
Co-authored-by: Jonavin <=>
2021-10-30 11:53:58 -07:00
Alan Pocklington
28120c1a63 [Keymap] ajp10304: add mouse scroll keys (#14953) 2021-10-29 16:30:23 -07:00
peepeetee
128b4eb005 [Keyboard] Add support for bm65rgb, a revival of #13361 (#14800)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: bytesapart <osama@bytesapart.com>
2021-10-27 08:09:52 -07:00
pttbx
e4ae4c8b1c [Keymap] Add personal lily58 keymap (#14834)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: polplop <paultan@handshakes.com.sg>
Co-authored-by: paultan <47445257+polplop@users.noreply.github.com>
2021-10-27 08:09:19 -07:00
binepad
5973895529 [Keyboard] binepad bn009 (#14881)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-10-27 08:07:58 -07:00
TW59420
2e3514f21c [Keyboard] Add MW65 Series PCB (#14939) 2021-10-27 08:03:51 -07:00
Albert Y
9b912416b4 [Docs] Add instructions to create keymap before proceeding (#14945)
Co-authored-by: filterpaper <filterpaper@localhost>
2021-10-27 08:03:00 -07:00
Albert Y
546e6a15dc [Keyboard] Cradio keyboard (#14946)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: filterpaper <filterpaper@localhost>
2021-10-27 08:02:21 -07:00
Jeremy Levy
db634c21a7 [Keyboard] update(readme): with PCB reset instructions (#14961) 2021-10-27 08:01:54 -07:00
Marc Nause
77877990ff [Keymap] Add VLC keymap (#14956)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-10-27 08:00:35 -07:00
jfescobar18
0b0edf3d81 [Keyboard] Docs/folder organization and info json fixed (#14239)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-10-27 07:59:58 -07:00
Drashna Jaelre
2ac9b31ed1 Fix white spacing issues in kb files (#14963) 2021-10-27 07:47:42 -07:00
Přemysl Eric Janouch
b29f005936 [Keymap] Add planck/pjanx and keebio/nyquist/pjanx keymaps (#13115) 2021-10-26 17:56:38 -07:00
projectcain
e5a729ccab [Keyboard] add ProjectCain Vault35; update Vault45 (#13652)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: ridingqwerty <george.g.koenig@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2021-10-26 17:54:17 -07:00
Albert Y
c0c7c4692b Add MAGIC_TOGGLE_GUI line to main keycode documentation (#14959)
Co-authored-by: filterpaper <filterpaper@localhost>
2021-10-27 01:09:12 +01:00
JayceFayne
312b1b95a8 Document MAGIC feature (#14301) 2021-10-26 16:55:04 -07:00
Kyrre Havik
b168fb3b2c [Keyboard] Add minimon/Index tab 13x6 ortho (#14765)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-10-26 16:41:54 -07:00
npspears
2938c4e059 [Keyboard] add support for Phoenix45_Ortho PCB (#14798)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-10-26 16:34:21 -07:00
MakotoKurauchi
e90e633c3b [Keymap] Add via keymap for meishi2 (#14892)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-10-26 16:28:41 -07:00
MasterSpoon
015c4cf5be Update mcu_selection.mk with current ChibiOS path (#14909) 2021-10-26 16:10:48 -07:00
David Martinz
0f96364daf [Keymap] Adding a new keymap for bm60poker and some led configs (#14918) 2021-10-26 16:05:37 -07:00
GG
eb8174bc40 [Keyboard] Add Mammoth75x (#14925) 2021-10-26 16:04:39 -07:00
GG
d595dce89f [Keyboard] Add zoom65 (#14926) 2021-10-26 16:03:52 -07:00
Drashna Jaelre
028edfc2df Remove unused KEYBOARD_LOCK_ENABLE from rules (#14920) 2021-10-25 21:14:46 -07:00
Lucas Rodrigues
6e8eb2cf54 [Keyboard] temporary fix for SpiderIsland 78 (#14935) (#14941) 2021-10-25 16:05:12 +11:00
coliss86
0002acd4a3 Fix Typo in documentation (#14942) 2021-10-24 23:32:42 +01:00
Ryan
6ee29d9aa6 Tidy up ADNS9800 and PMW3360 firmware blobs (#14936) 2021-10-24 10:46:20 -07:00
Reibl János Dániel
ec8c1e05af [Keymap] Add logo to riblee userspace (#14875) 2021-10-23 15:20:18 -07:00
ForsakenRei
ff39890620 [Docs] Add default case to tap dance example 5. (#14893) 2021-10-22 23:45:07 -07:00
George Petri
974e9e0a6b [Keymap] Add Gergoplex keymap (#14768) 2021-10-22 23:34:05 -07:00
Reibl János Dániel
a167a95bd0 [Keymap] Simplify unicode input mode change and CTRL and GUI swapping (#14874) 2021-10-22 23:30:43 -07:00
Ingomancer
bfddc7dfa1 Reformat iris keymap antonlindstrom to be a bit more readable and consistent (#14902)
Co-authored-by: Ingo Junefjord <ingo.junefjord@attentec.se>
2021-10-23 17:15:39 +11:00
jonavin
443d306827 [Keymap] Jonavin userspace keymap updates INVERT_NUMLOCK_INDICATOR (#14880)
Co-authored-by: Jonavin <=>
2021-10-22 23:04:08 -07:00
jurassic73
09daafd489 Corrected keyboard layout which was causing issue in QMK configurator (#14891) 2021-10-22 23:03:49 -07:00
Álvaro A. Volpato
d71c962b61 [Keyboard] Update encoder callback on Evolv75 (#14757)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-10-22 22:58:52 -07:00
TW59420
8ec1afd17c [Keyboard] Add MW75 support (#14833) 2021-10-22 22:05:23 -07:00
Dasky
1953a968c5 Check usb transmit status in send_extra() (#14643) 2021-10-23 15:04:15 +11:00
Danny
1e13d07cac Fix right half of Nyquist in 4x12 mode having row shifted up by one (#14914) 2021-10-22 15:12:35 +01:00
James Young
3979137995 Pteron36 Refactor (#14904)
* reformat info.json

- friendly-format info.json
- move the right half to the left by 0.5u (improves readability, for me anyway)
- correct key sequence

* refactor default keymap

- use short-form keycodes
- use four-space indent

* refactor via keymap

- use short-form keycodes
- use four-space indent

* update maintainer field in info.json

Use the maintainer's GitHub username.

* readme touch-up

Minor edit to the lead paragraph, and reformat the Hardware Availability section.

* change BOOTMAGIC_ENABLE from `lite` to `yes`
2021-10-22 14:32:14 +01:00
Drashna Jaelre
0fd45d5984 Fix type of Tap Dance max index variable (#14887) 2021-10-19 20:50:44 -07:00
Sergey Vlasov
c9562ebfde Make the MAGIC_TOGGLE_GUI keycode work (#14886) 2021-10-19 18:48:01 -07:00
precondition
5fbcbc6af8 [DOCS] Fix the STENO_COMBINEDMAP table (#14883) 2021-10-20 01:26:59 +11:00
Sergey Vlasov
587f7508fc preonic/rev3_drop: Fix old custom matrix code (#14857)
The old custom matrix code for Preonic rev3 was relying on the
`matrix_col_t` type, because the code actually reads the row pins and
assembles the state for whole columns, and then transposes the matrix in
the custom debouncing code.  Restore that type (which is no longer
defined by the core QMK code) to make the custom matrix code work
properly (when `matrix_row_t` was used instead of `matrix_col_t`, the
state of two electrical rows was lost, and those electrical rows
corresponded to the bottom physical row, which did not work).
2021-10-18 11:09:33 +11:00
Roger
d2f9e352c8 [Keymap] added media controls, copy and paste; moved print screen (#14850) 2021-10-16 21:26:13 -07:00
​Andrzej Ressel
b8ca0af06a [Keyboard] Add SpiderIsland 25 key keyboard (#14793)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-10-16 19:51:02 -07:00
Peter Park
772f67484f [Keyboard] Update Support for The Uni (#14569)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: ridingqwerty <george.g.koenig@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Peter Park <peter@Peters-MacBook-Air.local>
2021-10-16 19:22:35 -07:00
Ryan
3c0eeec755 Try to clarify "number of elements in info.json does not match" error (#14844) 2021-10-16 17:44:56 +01:00
tangowithfoxtrot
9200baf593 [Keyboard] Fix minor typo in Ploopy Trackball Nano Docs (#14717) 2021-10-16 09:03:12 -07:00
Takeshi ISHII
eddb206369 add docs/ja/ja_doc_status.sh (#14402) 2021-10-16 17:31:09 +09:00
AKiwi92
9e2e773782 [Keyboard] Amended Some Pins - KiwiKeebs Macro V2 (#14824)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Ash <ash@splitpixel.co.uk>
2021-10-15 23:08:41 -07:00
hadi
79a34d8ec3 [Keyboard] Adding CK60 and CK65 (#14737)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-10-15 23:06:43 -07:00
Manna Harbour
6b299fab6e [Keymap] Update Miryoku (#14827) 2021-10-15 22:33:45 -07:00
Drashna Jaelre
9a0addc77e [Keymap] Drashna Keymap Updates (#14842)
* Fix issues with user split transport code
* Improve OLED (More font stuff, improved keylogger, etc)
* Add `KEYLOCK` macro to disable USB, borrowed from command feature.
* Convert Kyria fully to proton C (no more AVR kyria)
* Add Work Louder Work Board keymap
2021-10-15 22:30:23 -07:00
Drashna Jaelre
a8422cca03 [Keyboard] Tractyl Manuform Updates (#14841) 2021-10-15 22:09:40 -07:00
BenSchaeff
4db5d85273 [Keymap] Added GMMK Pro keymap with RGB (#14648)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-10-15 19:02:19 -07:00
Sergi Meseguer
40badc4413 [Keymap] zigotica userspace (#14670)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-10-15 19:02:04 -07:00
floookay
b0d293a841 [Keyboard] add Pluckey (#14672)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-10-15 19:01:35 -07:00
stanrc85
8bb1fd04d4 [Keymap] Userspace updates (#14832) 2021-10-15 19:00:19 -07:00
Aaron Paterson
c8b00b2e91 Update documentation because GPIO functions are no longer in quantum.h (#14826)
* GPIO functions are no longer in quantum.h

* Update docs/internals_gpio_control.md

Co-authored-by: Ryan <fauxpark@gmail.com>

Co-authored-by: Ryan <fauxpark@gmail.com>
2021-10-16 01:43:03 +01:00
Felix Jen
235323269c [Keyboard] Add MK61-RGB-ANSI keyboard (#14795)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-10-14 21:22:55 -07:00
Ryan
b7a346600c [Docs] Clean up reference_info_json.md (#14806) 2021-10-15 12:45:33 +11:00
Tom
dd42387d9f [Keymap] Add keebio iris layout beakl 15 (#14762) 2021-10-14 18:11:01 -07:00
Alex Meyer
c2d72a60f0 remove Bracket Pair Colorizer recommendation (#14816)
As of v1.60, vscode has a much faster built-in method of colorizing bracket pairs, making the extension unnecessary.
https://code.visualstudio.com/blogs/2021/09/29/bracket-pair-colorization
2021-10-15 11:54:19 +11:00
James Young
44bfe04f53 [Keyboard] PLX Refactor (#14809) 2021-10-14 17:00:08 -07:00
rhmokey
943ca36acc [Keyboard] Add ginkgo65 (#14802)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-10-14 16:55:51 -07:00
MechMerlin
a827adeaae Documentation: Updated KBDFans readmes (#14725)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-10-14 16:03:53 -07:00
Reibl János Dániel
e8dadf51ad [Keymap] Display default layer name (#14819) 2021-10-14 10:28:06 -07:00
Steven Karrmann
b8de20f1e2 Add KC_BSLS key to Horizon keyboard default layout (#14815)
* Define Horizon keyboard

* Set indentation according to QMK coding convention

* Update horizon keyboard readme to satisfy current QMK template

* Use row-column order in horizon readme

* Update keyboards/horizon/rules.mk

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Update keyboards/horizon/rules.mk

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Update keyboards/horizon/rules.mk

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Update keyboards/horizon/rules.mk

Co-authored-by: Ryan <fauxpark@gmail.com>

* Update keyboards/horizon/rules.mk

Co-authored-by: Ryan <fauxpark@gmail.com>

* Update keyboards/horizon/rules.mk

Co-authored-by: Ryan <fauxpark@gmail.com>

* Update keyboards/horizon/info.json

Co-authored-by: Ryan <fauxpark@gmail.com>

* Update keyboards/horizon/info.json

Co-authored-by: Ryan <fauxpark@gmail.com>

* Add KC_BSLS to Horizon default keymap

Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-10-14 14:47:29 +01:00
Sergey Vlasov
f9f3a11c20 contra, fractal: Remove wrongly copypasted pin E6 manipulation code (#14818)
Apparently the default keymaps for `contra` and `fractal` were derived
from some `planck` keymap which contained code to control the status LED
in the implementation of the `BACKLIT` custom keycode.  Unfortunately,
the code to control the LED manipulated the `E6` pin directly, and it
was copied without changes, but the `contra` and `fractal` boards use
the `E6` pin in the matrix, therefore pressing the key mapped to
`BACKLIT` resulted in phantom keypresses for all keys in the
corresponding column.
2021-10-14 14:41:30 +01:00
James Young
04cf161aa0 maxr1998/pulse4k: use layout macros in keymaps (#14808) 2021-10-13 19:56:48 +11:00
James Young
ec32365944 Kopibeng MNK88 Patch (#14807)
* refactor default keymap

- correct keycode sequence (`KC_RGHT` was in the wrong place)
- change tabs to spaces (four-space indent)
- update grid alignment

* refactor via keymap

- change tabs to spaces (four-space indent)
- update grid alignment
2021-10-12 23:50:04 -07:00
James Young
bc51e330c0 Lucid Alexa layout macro rework (#14799)
* refactor keymaps for readability

- use QMK-native keycode aliases
- physically align keycodes

* rework layout macro

A discrepancy between the default and via keymaps prompted a deep dive into the keyboard's switch matrix, which led to the discovery that (1) the layout macro's arguments were not arranged physically, and (2) the keymaps didn't assign the keycodes to the same switches (the default keymap's keycodes were in the wrong sequence).

Additionally, the layout macro was built to support a split Backspace, but named as if it were for a 2u Backspace, which broke the enabled support for Community Layout keymaps.

This commit:

- arranges the layout macro arguments according to physical order
- corrects the keymaps
- renames the layout macro to specify the split Backspace
- disables Community Layout support
- updates the `info.json` data

* add LAYOUT_65_ansi_blocker

* enable Community Layout support

* update `info.json` metadata

- use full product listing URL
- use GitHub username for maintainer field

* update readme

- fix vendor link in lead paragraph
- update metadata list
  - use GitHub username of keyboard maintainer
  - correct Supported Hardware
  - add Hardware Availability link
- add flashing and bootloader instructions
2021-10-12 22:47:54 -07:00
James Young
c63c78f080 Kopibeng MNK88 Layout Extension (#14796)
* friendly-format info.json

* mnk88.h: use QMK 3-character notation

* mnk88.h: add matrix diagram

* add LAYOUT_tkl_ansi_f13

* add LAYOUT_tkl_ansi_tsangan_f13

* add LAYOUT_tkl_iso_f13

* add LAYOUT_tkl_iso_tsangan_f13
2021-10-12 22:40:48 -07:00
etiennelepagel
a0b7c1618a [Keyboard] Add MachKeyboards Mach3 (#14791)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-10-11 19:42:14 -07:00
takashicompany
2d8dcf08e8 [Keyboard] Add "Center x Enter" (#14790)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-10-11 19:41:50 -07:00
James Young
78509658e6 KabeDon98E Refactor (#14778)
Co-authored-by: Joel Challis <git@zvecr.com>
2021-10-11 19:40:29 -07:00
Reibl János Dániel
4b2866dd96 [Keymap] Add workman layout (#14792) 2021-10-11 19:26:47 -07:00
kb-elmo
25eac95348 [Keyboard] Add ISOlation and some kb-elmo keyboard updates (#14656)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-10-11 19:25:28 -07:00
James Young
bedecd3cbc Nordic60 layout rework/extension (#14794) 2021-10-11 18:44:47 -07:00
Joris Wachsmuth
8385ab32d0 [Keyboard] Add Split65 to keyboards/handwired (#13264)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Joris Wachsmuth <jwachsmuth@techfak.uni-bielefeld.de>
2021-10-11 18:09:25 -07:00
thompson-ele
e33ccc556f [Keymap] Added Gherkin VIA keymap (#14779) 2021-10-11 18:06:48 -07:00
Sergi Meseguer
598f3fa7a7 [Keyboard] z34 split keyboard by zigotica (#14582)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-10-11 18:04:47 -07:00
Jimmy Sjölund
cecf5d52f9 [Keymap] Adding my personal Planck layout (#14564)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-10-11 18:04:24 -07:00
jonavin
ea2505901e [Keymap] Jonavin new obe keymap (#14657)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Jonavin <=>
2021-10-11 18:03:58 -07:00
Ryan
633ef1441b handwired/nicekey optimisation (#14788)
* handwired/nicekey optimisation

* Add some consts

* Read address from progmem, pass it into send_string_with_delay_P
2021-10-11 14:41:31 +01:00
Drashna Jaelre
5640b6cd77 Allow AVR Bootloader size to be configurable (#14783)
* Allow AVR Bootloader size to be configurable

* revert changes to atmel dfu
2021-10-11 14:30:17 +01:00
bgrosse-midokura
a7313992de [Keymap] gipsy-king's layout for cornelius (#14602)
Co-authored-by: Benjamin Große <ste3ls@gmail.com>
2021-10-11 02:59:52 -07:00
Quinn Mikelson
d9e077468a [Keyboard] Add ZSA Moonlander VIA support (#14603)
Co-authored-by: Quinn Mikelson <quinn.mikelson@tyvak.com>
Co-authored-by: Drashna Jael're <drashna@live.com>
2021-10-11 02:57:44 -07:00
Alabahuy
9351eb395b [Keyboard] Add Rart67M and support via (#14630) 2021-10-11 02:57:16 -07:00
mechlovin
3289f74179 [Keyboard] Add Jay60 PCB (#14676)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-10-11 02:56:30 -07:00
Shay Merrill
39499f9df7 [Keymap] lets split keymap for shaymdev (#14663)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-10-11 02:55:41 -07:00
Dalius Dobravolskas
0633bc9a8b [Keymap] Architeutis Dux keymap (#14728) 2021-10-11 02:55:20 -07:00
gkeyboard
b64ea02d9b [Keyboard] Add blank01 keyboard (#14698)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-10-11 02:54:04 -07:00
Steven Karrmann
ab7d731049 [Keyboard] New Keyboard: Horizon (#14776)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-10-11 02:53:41 -07:00
rhmokey
f57de35dcf [Keyboard] Modify mokey64 matrix (#14761) 2021-10-11 02:51:42 -07:00
kb-elmo
daece508da [Keyboard] Add BIOI F60 (#14763) 2021-10-11 02:50:52 -07:00
Drashna Jaelre
064f6d96c3 [Keyboard] Fix lck75 via keymap (#14786) 2021-10-11 16:54:20 +11:00
Albert Y
8045ad711a [Keyboard] Add bootmagic lite keys to both halve of Sweep (#14732)
Co-authored-by: filterpaper <filterpaper@localhost>
2021-10-10 20:48:02 -07:00
Albert Y
5d7efc7183 [Keyboard] Add bootmagic lite keys to both halve of A.dux (#14731)
Co-authored-by: filterpaper <filterpaper@localhost>
2021-10-10 20:46:45 -07:00
im a can what do you think lmao?
ef7fa0fe91 [Keyboard] update lck75 keyboard layouts (#14687)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-10-10 20:30:55 -07:00
Shay Merrill
ae73df00ec [Keymap] orthodox keymap for shaymdev (#14660)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-10-10 19:56:27 -07:00
KnoblesseOblige
5414e61f01 [Keyboard] Add keebsforall/freebirdtkl (#14460) 2021-10-10 18:38:58 -07:00
Jay Greco
c75bf9daf4 [Keyboard] nullbitsco keyboards: common file cleanup (#14358) 2021-10-10 18:37:33 -07:00
Wolf Van Herreweghe
5c034c43ab [Keyboard] Add firmware for the TS60 (#14157)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Wolf Van Herreweghe <wolfvh@getupgamesofficial.com>
2021-10-10 18:21:49 -07:00
leonardusdipa
c8d5988ba4 [Keyboad] Add VIA support for Atreus promicro (#13169) 2021-10-10 17:24:45 -07:00
Kyle McCreery
fa1a59e7f8 Changing RGB default to on so it plays well with VIA's QMK lighting section and adding the B9 init workaround to obe.c so the I2C EEPROM will initialize correctly since we are using B9 for caps lock indicator. (#14677) 2021-10-10 21:30:00 +01:00
Sergey Vlasov
06124f9885 cannonkeys/satisfaction75: Add empty layers to the via keymap (#14782) 2021-10-11 06:19:08 +11:00
Drashna Jaelre
ee9da1fcf3 [Keyboard] Fix DZTECH duo_s default keymap (#14772) 2021-10-09 21:50:35 -07:00
James Young
a8a5d20464 Ein_60: add Configurator layout data (#14777) 2021-10-10 00:56:21 +01:00
Dao Tak Isaac
3c188d98a1 [Keyboard] Add cg108 keyboard and fix keymap Dosa40rgb (#14753)
* Add cg108 keyboard and fix keymap Dosa40rgb

* Update keyboards/dtisaac/cg108/readme.md

* Update keyboards/dtisaac/dosa40rgb/rules.mk

* Update keyboards/dtisaac/cg108/info.json

* Update keyboards/dtisaac/cg108/keymaps/default/keymap.c

* Update keyboards/dtisaac/cg108/rules.mk

* Update keyboards/dtisaac/cg108/rules.mk
2021-10-09 14:55:00 -07:00
shela
f216c20fc7 Update Japanese document (#14766) 2021-10-09 21:04:00 +01:00
shela
5aca3f613c Update Japanese document (#14767) 2021-10-09 21:03:17 +01:00
shela
969596bd67 Update Japanese document (#14769) 2021-10-09 21:02:55 +01:00
Drashna Jaelre
82bf688e44 [Keyboard] Update Tractyl Manuform config for F411 (#14770) 2021-10-09 11:31:13 -07:00
Drashna Jaelre
f90d8b35f2 [Keyboard] Fix IS31FL3741 driver flushin for Xelus pachi rgb (#14755) 2021-10-08 22:23:03 +01:00
s-show
7205b70e84 Translate keycodes us ansi shifted (#13820)
* copy "keycodes_us_ansi_shifted.md" to docs/ja.

* Add japanese translation "docs/keycodes_us_ansi_shifted.md".

* Apply suggestions from code review

Co-authored-by: shela <shelaf@users.noreply.github.com>

* Update docs/ja/keycodes_us_ansi_shifted.md

Co-authored-by: Takeshi ISHII <2170248+mtei@users.noreply.github.com>

Co-authored-by: shela <shelaf@users.noreply.github.com>
Co-authored-by: Takeshi ISHII <2170248+mtei@users.noreply.github.com>
2021-10-08 19:28:00 +09:00
James Young
d35a98ca24 dyz selka40 touch-up (#14748)
* friendly-format info.json

* remove info.json rounding errors

* fix info.json layout macro reference

JSON data referenced `LAYOUT` instead of `LAYOUT_all`.

* correct info.json key sequence

* remove dead space from info.json layout data

* remove vertical offsets from info.json layout data

* horizontally align info.json layout data

* add matrix diagram to selka40.h

* add LAYOUT_2u_bs

* remove duplicated settings
2021-10-07 21:12:46 -07:00
James Young
9d070e6a08 DYZ TKL touch-up (#14744)
* friendly-format info.json

* add LAYOUT_all layout data

* add matrix diagram to dyz_tkl.h

* add LAYOUT_tkl_ansi

* add LAYOUT_tkl_ansi_f13

* add LAYOUT_tkl_iso

* add LAYOUT_tkl_iso_f13

* remove `ENCODER_ENABLE = no` from rules.mk

* remove redundant definitions from config.h

Data-driven compilation calculates `MATRIX_ROWS` and `MATRIX_COLS` from the info.json data, so defining them in config.h isn't necessary.

* add missing comma to info.json per fauxpark
2021-10-07 17:26:38 -07:00
James Young
51470dfae1 Dyz60 touch-up (#14742)
* friendly-format info.json

* refactor keymaps

- update grid alignment
- use four-space indent
- use QMK short-form keycodes

* correct info.json layout data

Adds three missing positions, and corrects some key sizes.

* add matrix diagram to dyz60.h

* add LAYOUT_60_ansi

* add LAYOUT_60_iso

* add LAYOUT_60_ansi_split_bs_rshift

* add LAYOUT_60_iso_split_bs_rshift

* add readme

* Remove duplication between config.h and info.json

Duplicating settings between config.h and info.json leads to warnings when compiling.

Removes the duplicated settings from config.h.
2021-10-07 21:20:34 +01:00
precondition
13f3e30e86 Fix link from feature_tap_dance.md to tapping term settings (#14741) 2021-10-07 21:03:21 +01:00
James Young
cbf1e0bab5 Dyz40 Configurator fixes (#14739)
* add matrix diagram to keyboard header file

* friendly-format info.json

* correct layout data

* add legends to info.json key labels

* add LAYOUT_split_space_split_bs

Rename the `LAYOUT` tree in info.json to `LAYOUT_split_space_split_bs`, and add a corresponding layout macro.

* add LAYOUT_all data to info.json

* add LAYOUT_7u_space

* add LAYOUT_7u_space_split_bs

* add LAYOUT_split_space

* convert tabs to spaces in dyz40.h
2021-10-07 10:51:38 -07:00
Bahrul Hidayat
12b9bedee5 update product id for selka40 (#14629) 2021-10-07 10:45:56 -07:00
jmcwilliams403
63cb273d15 Enabled Bootmagic Lite (#14573)
* Enabled Bootmagic Lite

* Enabled Bootmagic Lite

Co-authored-by: Sergey Vlasov <sigprof@gmail.com>

Co-authored-by: Sergey Vlasov <sigprof@gmail.com>
2021-10-07 14:49:16 +01:00
Grayson Carr
d5fae3a6f9 Updated Keychron Q1 user keymap (#14666)
* Updated Keychron Q1 user keymap
- Added Caps Lock indicator
- Mission Control and Launchpad custom keycodes are now defined using the VIA user keycodes range so they can be labeled properly in VIA

* Only use VIA keycode range if VIA is enabled

* Reformatted led_indexes enum to match layout

* Feature: When the Fn layer is active, RGB lighting turns off for keys that are not assigned

* Fixes

* Cleanup: Updated method signature of rgb_matrix_set_color_by_keycode to more closely match rgb_matrix_set_color

* Fixed int sizing for keycodes
2021-10-06 08:36:04 -07:00
James Young
f32db0bdd1 Mode M65S touch-up (#14722)
* add Configurator data

* rename README.md to lowercase

API can't find this file unless the filename is lowercase (`readme.md`).

* readme touch-up

Correct typos and improve some grammar and Markdown.
2021-10-06 01:44:57 -07:00
James Young
c33491d72b MelGeek Mach80: correct Configurator layout (#14716)
Adds a 0.5u gap between the top two rows.
2021-10-05 22:53:53 -07:00
remanifest
4782e038d9 Added semicolons to rules.mk to allow symlinks from /bin/sh to /bin/zsh to complete the filesize check without error. (#14718)
Co-authored-by: John Beard <jbeard@pipelinerx.com>
2021-10-06 12:58:40 +11:00
Drashna Jaelre
3b8c4979dc [Bug] Fix command feature if mousekey is enabled and using 3-speed setting (#14697) 2021-10-05 17:50:23 -07:00
Drashna Jaelre
22470f0302 [Keyboard] Add basic Keyhive Sofle support (#14296)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Sergey Vlasov <sigprof@gmail.com>
2021-10-05 17:49:39 -07:00
MechMerlin
e8db309613 [Keymap] Some updates to mechmerlin userspace and keymaps (#14711) 2021-10-05 16:49:50 -07:00
James Young
e762db44ba 0xc7/61key touch-up (#14712)
* correct Configurator layout data

* rename LAYOUT to LAYOUT_60_ansi

* correct info.json maintainer field

Use the maintainer's GitHub username.

* correct the compiling/flashing instructions

Keyboard value is relative to `qmk_firmware/keyboards/`.
2021-10-05 16:37:42 -07:00
James Young
aabc0cc8ad Durgod DGK6X Galaxy: correct Configurator layout (#14714)
Top row had a y-value of 1, which placed it behind the number row when rendered.
2021-10-05 16:30:09 -07:00
Nick Brassel
4676a14596 More PR checklist updates (#14705)
* Wording, clarification.

* Apply suggestions from code review

Co-authored-by: Mikkel Jeppesen <2756925+Duckle29@users.noreply.github.com>

Co-authored-by: Mikkel Jeppesen <2756925+Duckle29@users.noreply.github.com>
2021-10-06 06:46:36 +11:00
Nick Brassel
7a49e5d207 Add clarification for licensing. (#14704)
* Add clarification for licensing.

* Errr, v2.
2021-10-05 20:29:52 +11:00
Danny
46fe8ab4e2 [Keyboard] Update Iris default keymap (#14701) 2021-10-04 20:38:24 -07:00
Daniel Cormier
85ba507482 [Keyboard] Added DC MC 001 (#14661) 2021-10-04 18:35:48 -07:00
moyi4681
b441efbdf6 [Keyboard] add dztech duo_s keyboard (#14625)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-10-04 18:16:47 -07:00
Albert Y
27d9579fd5 Document examples on intercepting Mod-Tap (#14502)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Dasky <32983009+daskygit@users.noreply.github.com>
Co-authored-by: filterpaper <filterpaper@localhost>
2021-10-04 16:21:02 -07:00
Zach White
20f81af98a Allow community layouts to be specified in info.json (#14682)
* move the community layout detection to python

* fixup tests
2021-10-04 09:26:19 -07:00
Danny
f72b2ad720 [Keyboard] Add Iris Rev. 6 (#14683)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-10-03 22:35:00 -07:00
Drashna Jaelre
6279399425 [Keyboard] Fix Mechlovin's Olly/BB keyboard matrix file (#14680) 2021-10-03 22:17:46 +01:00
Drashna Jaelre
640869257f [Keyboard] Disable RGBLIGHT on mokey64 (#14681) 2021-10-03 22:17:23 +01:00
tiltowait
8782dc824d [Keyboard] Add anti-ghosting support to Model M Converter (#14049) 2021-10-03 12:02:51 -07:00
Christian Sandven
5ece2846b6 [Keyboard] Fix key routing for Keyprez Rhino ergo keys (#14589) 2021-10-03 12:01:15 -07:00
4pplet
0acedbe09f [Keyboard] Adding kbnordic nordic60 (#14555)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: 4pplet <4pplet@protonmail.com>
Co-authored-by: 4pplet <stefan.ess@gmail.com>
2021-10-02 08:17:54 -07:00
ai03
875bbd31dc [Keyboard] Add JP60 keyboard (#14219)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-10-02 08:06:37 -07:00
mechlovin
0eaefb2a6c [Keyboard] Add Olly BB PCB (#14545)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-10-02 08:00:05 -07:00
rhmokey
20a689e27c [Keyboard] Modify mokey64 (#14612)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-10-02 07:59:47 -07:00
john-ezra
79ad30a9d5 [Keymap] Updates to Personal Kyria Keymap (#14669)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-10-02 07:50:55 -07:00
Drashna Jaelre
54b8d6a891 [Keyboard] Convert ZSA's Moonlander keyboard to matrix lite (#14667) 2021-10-01 17:13:15 -07:00
negatv
bed7625f93 Add FIRMWARE_FORMAT = hex for /keyboards/kinesis/kint36 and /keyboards/kinesis/kint41 (#14665)
* Specify hex as the default FIRMWARE_FORMAT which is copied to qmk_firmware root folder

* Specify hex as the default FIRMWARE_FORMAT which is copied to qmk_firmware root folder

Co-authored-by: sadkins <sadkins@iMac-Pro.local>
2021-10-02 08:32:53 +10:00
umi
e54a57d32a [Docs] update Japanese translation of mod_tap.md (#13981)
* update mod_tap.md translation

* add id on config_options.md and update text based on comments
2021-10-01 17:24:53 +09:00
Purdea Andrei
52cb19713b Fix documentation for NO_HAPTIC_MOD and NO_HAPTIC_FN features. (#14180) 2021-10-01 07:24:19 +10:00
npspears
0be3cd3e2b Quark_LP- change MCU and RGB (#14650) 2021-09-30 15:50:18 +01:00
James Young
292b7b3835 Remove firmware size impact notes from <keyboard>/rules.mk (#14652) 2021-09-30 15:48:36 +01:00
Ryan
0b37e07f90 Remove redundant MIDI_ENABLE = no in keyboard-level rules.mk (#14649) 2021-09-30 19:17:20 +10:00
James Young
a8e13f041e Mechlovin Hex4B: extend layout support (#14651)
* use XXX for KC_NO in hex4b.h

* add matrix diagram to hex4b.h

* rename LAYOUT to LAYOUT_all

* remove reference to KBFirmware JSON Parser

* info.json: add line breaks between rows

* rename LAYOUT_all to LAYOUT_split_bs

- LAYOUT alias for backward compatibility
- LAYOUT_all alias to signify support for every matrix position

* add LAYOUT_2u_bs

* add LAYOUT_tsangan_split_bs

* add LAYOUT_tsangan_2u_bs

* info.json: remove meta key
2021-09-30 01:20:46 -07:00
Ryan
36bc3c867e Remove redundant UNICODE_ENABLE = no in keyboard-level rules.mk (#14633) 2021-09-30 08:14:21 +10:00
James Young
8fccd82d4e Mechlovin Hannah60RGB touch-up (#14646)
* use XXX for KC_NO in rev1.h

* add matrix diagram to rev1.h

* remove reference to KBFirmware JSON Parser from rev1.h

* use XXX for KC_NO in rev2.h

* add matrix diagram to rev2.h

* add LAYOUT_60_ansi and LAYOUT_60_iso

* enable Community Layout support

* update info.json metadata

- specify keyboard revision in keyboard_name
- use GitHub username in maintainer field

* remove reference to KBFirmware JSON Parser from main rules.mk
2021-09-29 12:48:37 -07:00
Drashna Jaelre
02ab7b1888 [Core] Fix "6kro enable" and clarify naming (#14563)
* Fix USB_6KRO_ENABLE compilation errors

* Add info to docs

* Rename define to be more accurate

* Remove unused rule

* Refixe docs
2021-09-29 11:37:11 -07:00
Drashna Jaelre
1e54796f0c [Keymap] Update to Drashna Code (#14644) 2021-09-29 11:16:11 -07:00
npspears
929d959ef9 [Keyboard] add support for Quark_LP (#14552)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-09-29 09:55:58 -07:00
vattern
03df754551 [Keyboard] Update Grandiceps to Rev2 (#14618)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Dasky <32983009+daskygit@users.noreply.github.com>
Co-authored-by: Thys de Wet <thys@vectorphoto.co.uk>
2021-09-29 09:55:34 -07:00
jonavin
c89f74b929 [Keymap] Jonavin murphpad keymap update (#14637)
Co-authored-by: Jonavin <=>
2021-09-29 09:42:53 -07:00
Drashna Jaelre
0338481090 [Keyboard] Updates for Tractyl Manuform config (#14641) 2021-09-29 09:30:25 -07:00
Drashna Jaelre
363eb645fc [Keyboard] Fix end of file issue for Owlab suit80 (#14640) 2021-09-29 17:38:41 +10:00
Grayson Carr
046e3ce5c9 [Keymap] Keychron Q1 user keymap (#14636) 2021-09-28 19:45:29 -07:00
James Young
02b760c6b0 convert checkerboards/quark_squared:via rules.mk to Unix line endings (#14638) 2021-09-28 16:02:48 -07:00
James Young
732535c1bb Mechlovin Delphine: add LAYOUT_numpad_6x4 (#14635)
* add LAYOUT_numpad_6x4

* tidy-up info.json data

* use GitHub account name for maintainer field
* remove meta key

* add matrix diagram to delphine.h

* update Community Layout support
2021-09-28 14:49:35 -07:00
Ryan
873a1999bb Move "firmware size check skipped" note to message.mk (#14632) 2021-09-29 06:08:46 +10:00
jonavin
705cd433c2 [Keymap] fix NKRO - switch to get_mods() and refactor encoder action code (#14278)
Co-authored-by: Jonavin <=>
2021-09-28 12:24:12 -07:00
Greg Knapp
724ee24075 [Keyboard] Yampad VIA support (#14397)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-09-28 12:23:38 -07:00
owlab-git
4a2062cc01 [Keyboard] Add OwLab Suit80 (#14362)
* add suit80 files

* first add suit80 files

* modified suit80 files

* layout change

* modified again

* changed png url
2021-09-28 12:22:56 -07:00
Alexander Kagno
bc818352a3 [Keymap] arkag userspace/keymap -- new macro and minor preonic keymap change (#14623)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-28 12:21:10 -07:00
Harshit Goel
ac1d48cbf5 [Keyboard] Pteron36 (#13475)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Harshti Goel <harshitgoel@licious.com>
2021-09-28 12:00:34 -07:00
James Young
adc7cc5981 Mechlovin Adelais: add support for full-length Right Shift (#14622)
* add layout variants with 2.75u Right Shift

* move layout alias to info.json

* match info.json labels to matrix positions

Edits the label keys in info.json to match the matrix position identifiers in adelais.h.

* info.json: add line breaks between keyboard rows

* info.json: use GitHub username in maintainer field
2021-09-28 09:38:34 -07:00
Dasky
02451fcc75 [Keyboard] Add dz60rgb_ansi v2_1 (#14614)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-27 22:26:30 -07:00
Sergi Meseguer
574b3d8a5a [Keyboard] z12 micropad by zigotica (#14583)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-27 22:10:10 -07:00
peepeetee
2742d0c4c1 [Keyboard] Add BM80 Keyboard (#12948)
* Initial compatibility with bm80

* move files to kprepublic directory, see #12159

* fix pin assignment

* Revert "fix pin assignment"

This reverts commit 5a53a74953a23bb5064c11d5d9e6daf007a54872.

* add testing setup (peepeetee keymap, will use for personal purposes later), fix LED assignment, add indicator LED, LED location, count, and flags are broken

* fixed flags( not sure, please check)

* fixed number of LEDs

* add comment about f11

* remove comment about f11, change capslock flag to be 1 rather than 1+8 as there is a standalone indicator LED

* readme.md

* add via keymap

* add info.json with help from noroadsleft's converter

* add suspended state implementation, I don't think it's working

* update to my testing setup

* restore erroneously included bm68rgb config

* Update keyboards/kprepublic/bm80/config.h

Co-authored-by: Drashna Jaelre <drashna@live.com>

* add reset instructions

* change reset instruction grammar

* remove not working sleep function, add comment for RGB flags

* add LED mapping comments

* change readme grammar

* replace rgb light paremeters with rgb matrix paremeters, enable framebuffer effects

* re-enable peepeetee/config.h, updating my disabled effect list

* updating my disabled effect list

* update LED struct documentation

* update readme with RGB matrix effect information

* Update keyboards/kprepublic/bm80/rules.mk

Co-authored-by: Drashna Jaelre <drashna@live.com>

* move files back to keyboard from keyboard/kprepublic, see 85b33d6 and qmk#12159

* Apply suggestions from code review

Co-authored-by: ridingqwerty <george.g.koenig@gmail.com>

* cleanup peepeetee keymap

* update peepeetee keymap; rebase on current master

* moved to /kprepublic, see #12159

* Apply suggestions from code review

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Apply suggestions from code review

Co-authored-by: Ryan <fauxpark@gmail.com>

Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: ridingqwerty <george.g.koenig@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-27 22:00:47 -07:00
Ryan
ae993dc068 Zinc: Clean up LTO rules (#14597) 2021-09-28 03:50:06 +10:00
Ryan
e8b7cee9d3 SquishyTKL: Layouts cleanup (#14594) 2021-09-28 03:46:10 +10:00
Zach White
fce9cb9338 Cleanup issues identified by lgtm (#14459)
* cleanup issues identified by lgtm

* fix the git_status check
2021-09-27 10:02:54 -07:00
peott-fr
5f38a98fa0 Adding SP Mini keymap. (#14593) 2021-09-27 14:41:48 +10:00
Drashna Jaelre
3823fdc9e0 [Keyboard] Fix Compile issues for Signum 3.0 (#14588)
* [Keyboard] Fix Compile issues for Signum 3.0

* quantuuum
2021-09-26 17:50:22 +01:00
Drashna Jaelre
f07de1b309 [Keyboard] Fix double comment in config files (#14615) 2021-09-27 00:54:17 +10:00
James Young
03f4c53564 Unicomp Mini M handwired Configurator fix (#14609)
* apply human-friendly formatting

* correct info.json data
2021-09-26 03:10:40 -07:00
James Young
6f36eb469d Remove unused IS_COMMAND() instances and Magic Key definitions (#14610)
* Remove unused IS_COMMAND() instances from keyboard-level config.h, 0-9

* Remove unused IS_COMMAND() instances from keyboard-level config.h, A-B

* Remove unused IS_COMMAND() instances from keyboard-level config.h, C-D

* Remove unused IS_COMMAND() instances from keyboard-level config.h, E-G

* Remove unused IS_COMMAND() instances from keyboard-level config.h, handwired

* Remove unused IS_COMMAND() instances from keyboard-level config.h, H-M

* Remove unused IS_COMMAND() instances from keyboard-level config.h, N-R

* Remove unused IS_COMMAND() instances from keyboard-level config.h, S-Z

* Remove unused Magic Key definitions from keyboard-level config.h, 0-9

* Remove unused Magic Key definitions from keyboard-level config.h, A

* Remove unused Magic Key definitions from keyboard-level config.h, B

* Remove unused Magic Key definitions from keyboard-level config.h, C

* Remove unused Magic Key definitions from keyboard-level config.h, D-E

* Remove unused Magic Key definitions from keyboard-level config.h, F-H

* Remove unused Magic Key definitions from keyboard-level config.h, handwired

* Remove unused Magic Key definitions from keyboard-level config.h, I-K

* Remove unused Magic Key definitions from keyboard-level config.h, L-M

* Remove unused Magic Key definitions from keyboard-level config.h, N-R

* Remove unused Magic Key definitions from keyboard-level config.h, S-V

* Remove unused Magic Key definitions from keyboard-level config.h, W-Z

* Merge remote-tracking branch 'upstream/master' into clean/command_and_magic

* Remove remaining unused IS_COMMAND() instances from keyboard-level config.h
2021-09-26 02:57:20 -07:00
James Young
95733d1c16 Remove references to KBFirmware JSON Parser (#14608)
* remove refs: exclusive/e85/soldered

* remove refs: handwired/bigmac

* remove refs: handwired/boss566y/redragon_vara

* remove refs: handwired/marauder

* remove refs: id67

* remove refs: kprepublic/bm60rgb

* remove refs: playkbtw/helen80

* remove refs: sam/sg81m

* remove refs: sawnsprojects/satxri6key

* remove refs: yncognito/batpad
2021-09-26 00:01:11 -07:00
James Young
14f0a417c7 GG Keyboards Genesis: Layout Macro update and clean-up (#14606)
* Genesis Hotswap: rename LAYOUT to LAYOUT_tkl_ansi

* Genesis Hotswap: delete blank layers from default keymap

Results in a smaller compiled firmware size.

* Genesis Hotswap: tidy-up via keymap

Fixes the visual alignment of keycodes.

* Genesis Hotswap: specify Hotswap in info.json

* Genesis Hotswap: enable Community Layout support

* Genesis Hotswap: remove KBFirmware Parser references

* Genesis Hotswap: specify Hotswap in config.h

* Genesis Solder: correct keyboard layout

* Genesis Solder: rename LAYOUT to LAYOUT_all

I don't actually know with certainty that this *is* LAYOUT_all, but in the absence of more concrete information, I'm going with this.

* Genesis Solder: delete blank layers from default keymap

Results in a smaller compiled firmware size.

* Genesis Solder: tidy-up via keymap

Fixes the visual alignment of keycodes.

* Genesis Solder: specify Hotswap in info.json

* Genesis Solder: add LAYOUT_tkl_ansi

* Genesis Solder: enable Community Layout support

* Genesis Solder: remove KBFirmware Parser references

* Genesis Solder: specify Solder in config.h
2021-09-25 22:48:14 -07:00
James Young
532cfd56ca Exclusive E6 RGB Refactor (#14604) 2021-09-26 15:22:04 +10:00
James Young
8c76e1ec08 FLX Virgo: metadata clean-up (#14605)
* correct maintainer field in info.json

* remove KBFirmware Parser references
2021-09-25 21:53:57 -07:00
James Young
3296c26c98 Saka68 Solder Refactor (#14596)
* rename LAYOUT to LAYOUT_68_ansi

* tidy-up keymaps

Adjusts indenting for readability/aesthetics.

* add LAYOUT_68_iso macro

* enable Community Layout support

* add Split Backspace layout variants

* remove KBFirmware Parser references

* correct keyboard metadata
2021-09-25 12:25:43 -07:00
James Young
5c2d15573d Saka68 Hotswap Refactor (#14595)
* rename LAYOUT to LAYOUT_68_ansi

* tidy-up keymaps

Adjusts indenting for readability/aesthetics.

* remove default keymap readme

* add LAYOUT_68_iso macro

* enable Community Layout support

* remove KBFirmware Parser references

* correct keyboard metadata

* specify keyboard variant in info.json and config.h
* correct maintainer field in info.json
2021-09-25 11:03:00 -07:00
Bahrul Hidayat
aee0b0097b [Keyboard] add keyboard dyz_TKL (#14535)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-09-25 09:49:58 -07:00
Bahrul Hidayat
29079e54f1 [Keyboard] add keyboard dyz40 (#14533)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-09-25 09:49:26 -07:00
Bahrul Hidayat
8b0b858db9 [Keyboard] add keyboard selka40 (#14560)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-09-25 09:48:47 -07:00
Albert Y
c74bd72d4f [Keyboard] Fix pin spacing alignmnent (#14592)
Co-authored-by: filterpaper <filterpaper@localhost>
2021-09-25 09:47:56 -07:00
Ryan
68c327f672 Remove keyboard-level COMBO_ENABLE rules (#14550) 2021-09-25 18:31:24 +10:00
Drashna Jaelre
3be47b3eaa [Keyboard] Fix default keymap for Potato65s (#14587) 2021-09-25 00:29:47 +01:00
James Young
216620ee76 tidy up Clawsome Boards info.json files (#14586)
* removes `meta` field
* changes `maintainer` field to use GitHub username
2021-09-25 00:29:08 +01:00
James Young
9e87b47a9c Aozora Hotswap info.json clean-up (#14585)
* clean up info.json

* correct maintainer field to use GitHub username
* remove `meta` key

* clean up readme.md

* correct key count in intro paragraph
2021-09-25 00:28:25 +01:00
Stan Gurenkov
4493a05b74 [Keyboard] refactor signum30 (#14527)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Stan Gurenkov <stan.gurenkov@docusign.com>
2021-09-24 10:05:29 -07:00
James Young
60b13d04cd Alf X2 Refactor (#14572) 2021-09-24 09:29:58 -07:00
James Young
076a332613 Swift65 Solder Refactor (#14579) 2021-09-24 09:29:46 -07:00
WiZ.GG
3778dd5727 [Keyboard] add 2 keys in jkb65 keymap (#14576) 2021-09-24 09:29:18 -07:00
Andrew Braini
863d9c35fe [Keyboard] Create the battleship gamepad keyboard. (#14551)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-24 09:27:29 -07:00
Aeonstrife
257bc473e5 [Keyboard] Add Potato65 Solderable PCB (#14047)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-24 09:13:53 -07:00
Nick Abe
768803ef72 [Keyboard] PLX info.json update (#14536)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-24 08:57:08 -07:00
Nick Abe
2d079c984f [Keyboard] Add Rotor Keyboard (#14407)
* rotor keyboard

* readme image

* info.json update

* Update readme.md

* Update keyboards/rotor/rules.mk

Co-authored-by: Ryan <fauxpark@gmail.com>

* Update keyboards/rotor/info.json

Co-authored-by: Ryan <fauxpark@gmail.com>

Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-24 08:56:37 -07:00
clickclackwho
4f37084677 [Docs] Broken FAQ hyperlink (#14578) 2021-09-24 08:43:05 -07:00
Albert Engelbrecht
77bb907fee [Keyboard] Added A. Dux keyboard configurations (#14320)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-24 00:30:52 -07:00
phrygiandesign
c6f92e37aa [Keyboard] Add phrygian design ph100 (#13738)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-24 00:25:33 -07:00
ryanbughuang
c242693ec7 [Keyboard] Add sam/sg81m layout (#13432)
Co-authored-by: Joel Challis <git@zvecr.com>
2021-09-23 23:41:05 -07:00
Albert Y
e36c2cbf90 [Keyboard] Disable console on Sofle for size concerns (#14577)
Co-authored-by: filterpaper <filterpaper@localhost>
2021-09-23 23:32:40 -07:00
umi
30140f48d0 [Docs] update Japanese translation of pr_checklist.md (#13693)
* update pr_checklist.md translation

* update file based on comments

* add id on feature_led_indicators.md and update text based on comments

* update file based on comments

* update file based on comment
2021-09-24 14:51:34 +09:00
Sets3n
f4e42bde4a kk980 - Fix Configurator rendering (#14556)
* add kk980

* fix

* fix config.h

* Modified readme.md

* fix

* Modified format.

* Modified image.

* Modified rules.mk

* Modified rules.mk + #

* fix info.json: keys dislocation
2021-09-23 20:16:20 +01:00
Drashna Jaelre
a68c4d8b81 [Keyboard] Update default keymaps for OLKB boards (#14565) 2021-09-23 20:08:23 +01:00
James Young
29f199f456 AMJ96 Refactor (#14571)
* clean up amj96.h

- use #pragma once include guard
- remove extra comments
- update matrix position alignment (easier readability)

* info.json: apply human-friendly formatting

* rename LAYOUT to LAYOUT_all

* clean up rules.mk

Align to QMK's AVR template.

* clean up default keymap

- use four-space indent
- add RESET keycode (Fn+R)
- remove unnecessary functions

* clean up config.h

- use #pragma once include guard
- move lighting settings to the middle of the file (QMK template conformance)
- remove Magic and MIDI configuration blocks

* update readme.md file

- update keyboard info list
- add flashing instructions
- update Docs links
- remove trailing spaces

* remove "empty" config.h and readme.md from default keymap
2021-09-23 11:01:49 -07:00
James Young
66857b919b Wuque Mammoth20x Layout Macro Refactor (#14568)
* mammoth20x: edit size of RightEncode key in Configurator

* physically arrange layout macro

Arranges the keycodes to resemble the assembled board.

* rename LAYOUT_default to LAYOUT

Includes "layout_aliases" tree in info.json for backwards compatibility.

* rules.mk touch-up

* convert tabs to spaces
* add line break before ENCODER_ENABLE (not included in QMK's template)

* readme.md touch-up

* remove zero-width space characters
* markdown fix for info paragraph
* update link text
2021-09-23 01:31:11 -07:00
James Young
62ef4a9c8a Meira Refactor (#14566)
* clean up keyboard header files

* use #pragma once include guard
* convert tabs to spaces
* remove redundant #include statements
* update revision references to main header (`../meira.h` -> `meira.h`)

* refactor default keymap

* use LAYOUT as layout macro reference
* use enum statement for layer indexes; make layers contiguous
* use four-space indent
* update keycode grid alignment

* update layout macro aliases

* move layout macro aliases to info.json
  * alias KEYMAP to LAYOUT_ortho_4x12 so the user keymaps don't have to be edited

* touch up meira.h

There's no Planck MIT layout reference here.

* add copyright headers

* workaround patch for grahampheath keymap

The `matrix_init_kb()` function in `meira.c` calls `backlight_set()`, but the grahampheath keymap disables Backlight to make space for Audio, causing the firmware to fail to compile.

This commit wraps the `backlight_set()` call in an ifdef statement, so the call is excluded if Backlight is disabled.

* clean up rules.mk inline comments

* re-order rules.mk settings

* clean up readme.md

* correct link to keyboard image
* change metadata section to unordered list
* spelling corrections
* update make instructions and Docs links
2021-09-23 00:49:02 -07:00
umi
0fc15f4d30 [Docs] update Japanese translation of feature_backlight.md (#14403)
* update feature_backlight.md translation

* update file based on comments
2021-09-23 13:02:32 +09:00
umi
7f0c397c72 [Docs] update Japanese translation of feature_advanced_keycodes.md (#14309)
* update feature_advanced_keycodes.md translation

* update file based on comments
2021-09-23 13:01:42 +09:00
umi
5347577346 [Docs] update Japanese translation of isp_flashing_guide.md (#13700)
* update isp_flashing_guide.md translation

* update isp_flashing_guide.md translation

* correct url

* trim remaining merge identifier
2021-09-23 12:58:56 +09:00
umi
7bfc6083b7 [Docs] update Japanese translation of feature_leader_key.md (#13669)
* update feature_leader_key.md translation

* update file based on comments

* update text based on comments
2021-09-23 12:55:19 +09:00
umi
618a28c6ae [Docs] update Japanese translation of one_shot_keys.md (#13656)
* update one_shot_keys.md translation

* update one_shot_keys.md translation

* correct paramter for function

* add change of #13754
2021-09-23 12:52:53 +09:00
drhigsby
4062860c05 [Keyboard] Bkf (#14534)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-22 18:02:49 -07:00
James Young
1aaef6c988 Remove BLUETOOTH_ENABLE from keyboard-level rules.mk (2021-09-22) (#14567)
* Remove BLUETOOTH_ENABLE from keyboard-level rules.mk (2021-09-22)

* update keyboards/handwired/slash/rules.mk per fauxpark
2021-09-22 12:33:41 -07:00
Drashna Jaelre
ce5bb612a9 [Keyboard] Fix default keymap for Draytronics Elise V2 keyboard (#14562) 2021-09-23 02:53:03 +10:00
Drashna Jaelre
57d4e80845 [Keyboard] Disable console on Smallkeyboard (#14561) 2021-09-23 02:47:56 +10:00
Blake
01b0eeac1e [Keyboard] Version 2 of Draytronics Elise Keyboard + ISO Keymap Change (#14253)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-21 23:49:46 -07:00
Sets3n
c78a057ec4 [Keyboard] add kk980 keyboard (#14436) 2021-09-21 23:38:07 -07:00
Drashna Jaelre
5ddbabfa2a [Keyboard] Fix jkb65 compile issues (#14554) 2021-09-21 22:51:54 -07:00
Drashna Jaelre
ea5735b074 [Keyboard] Fix font file for Ein 60 Keyboard (#14553) 2021-09-21 22:39:19 -07:00
Brandon Claveria
9c564b6a5f [Keyboard] Add Dango40 (#14437)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Swiftrax <swiftrax@gmail.com>
Co-authored-by: Swiftrax <swiftrax@github.com>
2021-09-21 21:25:59 -07:00
Caleb Lightfoot
c8a3353003 [Keyboard] Add Free Willy Keyboard (#14394)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-21 21:24:44 -07:00
Vinam Arora
02556b3d8a [Keyboard] 0-Sixty: Splits kb config into base and underglow (#14384)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-09-21 21:24:14 -07:00
kopibeng
4e0125c22c [Keyboard] Add support for XT8x (#14440)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-09-21 21:23:51 -07:00
milostatsea
f37af05f2a [Keyboard] fixed one of the unicode drawings of the layout in dz60.h (#14482) 2021-09-21 21:22:04 -07:00
WiZ.GG
88f6776216 [Keyboard] Add JadooKB JKB65 RGB (#14525)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-09-21 21:21:44 -07:00
Pylon
e0022daf11 Changed VENDOR_ID and PRODUCT_ID of Boston keyboard (#14528) 2021-09-21 21:21:23 -07:00
precondition
88283cdab8 [Keyboard] Add commented out OLED/encoder code in default Kyria (#14539)
Co-authored-by: Dasky <32983009+daskygit@users.noreply.github.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-09-21 21:19:50 -07:00
James Smith
43e88f34aa [Keyboard] add ein_60 (#14398)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-21 21:18:25 -07:00
Drashna Jaelre
208ea0e18c [Keyboard] smallkeyboard fix of rgb matrix config (#14548) 2021-09-21 21:16:19 -07:00
Salicylic-acid3
033a318bdf [Keyboard] Addition of VIA keymap and a few fixes for naked48 (#14177)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-21 17:12:57 -07:00
Dasky
45f88af4a1 [Docs] update suspend_*_user examples (#14542) 2021-09-21 16:40:19 -07:00
zhouqiong19840119
bb754069e9 [Keyboard] smallkeyboard support (#12817)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-09-21 15:52:39 -07:00
Laneware
32a96be093 [Keyboard] Macro-1 keyboard by Laneware Peripherals (#14472) 2021-09-21 15:06:56 -07:00
bt66tech
922fbea558 [Keyboard] add via keymap support for bt66tech/bt66tech60 (#13818)
Co-authored-by: root <crkndevops@gmail.com>
2021-09-21 14:45:26 -07:00
qpockets
be273bd003 [Keyboard] add wanten keyboard to QMK (#14410)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-21 14:16:16 -07:00
kopibeng
bd0040068e [Keyboard] Add support for MNK88 (#14435)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-21 14:15:09 -07:00
3araht
cebc5688a0 [Keyboard] add bandominedoni keyboard (#13116) 2021-09-21 14:13:36 -07:00
qpockets
c8a5869114 [Keyboard] add synapse pcb (#14428)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-21 14:12:55 -07:00
Purdea Andrei
376968ade4 [Keyboard] Add 5 boards by the OverNumpad Controller (#14382)
* Add initial implementation of 5 keyboards supported by the OverNumpad Controller.

* Apply suggestions from code review

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Apply changes similar to other code review suggestions.

* Apply suggestions from code review

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Apply changes similar to other code review suggestions.

* overnumpad controller info.jsons: update maintainer and url.

* classic_ultracl_pre_2013: added support for the default 'fullsize_ansi' layout

* classic_ultracl_pre_2013: moved the order of the iso enter key in the layout macro to be considered to be on the bottom row, like in the default fullsize_iso layout. Rename the iso layout to fullsize_iso, and enable it in rules.mk

* Removed QMKBEST and QMKURL

* Apply suggestions from code review

Co-authored-by: Ryan <fauxpark@gmail.com>

* Deleting empty files

Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-21 14:09:01 -07:00
Phil Pirozhkov
8d32ddd8e9 [Keyboard] gBoards GergoPlex (#13027)
* Moved gergoplex to seperate PR

* vendor + cformat

* Update keyboards/gboards/k/gergoplex/matrix.c

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* lifiting keyboards up

* Update readme.md

* Update keyboards/gboards/gergoplex/config.h

Co-authored-by: Drashna Jaelre <drashna@live.com>

* remove English dicts

* cformatted

* Prettify keymap

* Remove via keymaps

Via doesn't support chords/combos, and this makes the keymap on such a
small keyboard quite uncomfortable and incomplete.

* Address QMK pull code review notes

* Cleanup (tabs, excessive comments)

* Fix keymap typos

* Use enum to define layers

* Multiple changes

 - got rid of LAYOUT_kc in favour of LAYOUT_split_3x5_3
 - fixed matrix custom C code to build with updated external dependencies (gcc)
 - fixed used combo docs

    keyboards/gboards/gergoplex/matrix.c:189:9: error: implicit declaration of function 'phex' [-Werror=implicit-function-declaration]
             phex(row);
             ^~~~
    keyboards/gboards/gergoplex/matrix.c:191:9: error: implicit declaration of function 'pbin_reverse16'; did you mean 'print_bin_reverse16'? [-Werror=implicit-function-declaration]
             pbin_reverse16(matrix_get_row(row));

* Remove apparently redundant macros

* Replace direct pin control with IO functions

* config mouse enable and combo delay fix

The default delay is 200:

    #define COMBO_TERM 200
        how long for the Combo keys to be detected. Defaults to TAPPING_TERM if not defined.

    tmk_core/common/action_tapping.h|22| 13:#    define TAPPING_TERM 200

* Remove redundant defines

* Unambiguously refer to the Special layer

* Fix formatting

* gboards/gergoplex set IGNORE_MOD_TAP_INTERRUPT

This solves my issue was with KC_CTL_A working correctly and it was set in @germ's repo
39c86e080d/keyboards/gboards/k/gergoplex/config.h (L49)

 https://beta.docs.qmk.fm/using-qmk/software-features/tap_hold#ignore-mod-tap-interrupt

* Name change

See commit 581368596e

* Wording change

* Update keyboards/gboards/gergoplex/keymaps/default/keymap.c

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Add copyright headers

* Fix debounce type

 | avr-gcc: error: .build/obj_gboards_gergoplex_default/quantum/debounce/eager_pr.o: No such file or directory

* Implement colemak-dhm keymap

Co-authored-by: Germ <jeremythegeek@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Brian Tannous <Brian@BrianTannous.com>
2021-09-21 14:07:55 -07:00
Ryan
d84794b352 Remove keyboard-level TAP_DANCE_ENABLE rules (#14538) 2021-09-21 17:54:36 +01:00
Ryan
be3259b793 Remove outputselect.h include from BIOI code (#14543) 2021-09-21 17:21:10 +01:00
Dasky
19e33b685f [Docs] Modify encoder_update_user example to return false (#14541) 2021-09-21 07:52:57 -07:00
Ryan
6b74e48f81 Remove audio pin references in rules.mk (#14532) 2021-09-21 20:04:03 +10:00
Ryan
574b6734af Remove backlight pin references in rules.mk (#14513) 2021-09-20 16:51:00 +10:00
Ben Lipson
e25d37454c [Keymap] blipson corne keymap (#14469)
revert lib/chibios

revert lib/chibios

Finish up

remove files

Update copyrights

remove copyrights

readd copyrights

add stop macro

PR suggestions

PR suggestions

readme lowercase

fix rotate for oled

Co-authored-by: Z003YW4 <ben.lipson@target.com>
2021-09-19 13:23:40 -07:00
XScorpion2
4dbeeaa0d6 Doc Fixes & Custom Matrix Fix (#14526) 2021-09-20 06:18:32 +10:00
im a can what do you think lmao?
121ca7eca9 [Keyboard] Add LeFishe Keyboard (#14498)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-19 11:54:40 -07:00
Jakob Weickmann
a068b14686 [Keymap] Added my own keymap for MIT Planck (#14481)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-19 11:53:47 -07:00
David Xia
ddb6821b97 [Docs] fix wrong directory for RGB Matrix animations (#14494) 2021-09-19 11:53:22 -07:00
James Young
53c2f67748 cKeys theDora Refactor (#14495) 2021-09-19 11:52:54 -07:00
peott-fr
4e7801d4fb [Keymap] Adding my Mun keymap. (#14501) 2021-09-19 11:52:37 -07:00
Konstantin Đorđević
4348e2ffc1 [Keymap] Updates to existing keymaps and userspace (#14503)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-09-19 11:47:40 -07:00
Pylon
e83fb69ae8 [Keyboard] Enabled Mousekeys by default on Boston (#14507) 2021-09-19 11:47:13 -07:00
Dasky
5dbde91bdf [Keyboard] Change printf to dprintf (#14510) 2021-09-19 11:45:11 -07:00
Jack Humbert
fa5d21a58e [Keyboard] Enables I2C for OLKB rev*_drop boards (#14514)
Co-authored-by: daskygit <32983009+daskygit@users.noreply.github.com>
2021-09-19 11:43:37 -07:00
XScorpion2
0e34efd9a2 [Keyboard] Quick fixes for the Mun to unblock customers (#14505) 2021-09-19 11:31:17 -07:00
Drashna Jaelre
d9ca201f79 [Keyboard] Fix Compiler issues for quick17 (#14500) 2021-09-19 07:01:02 -07:00
Drashna Jaelre
ef5c6ea096 [Keyboard] Use old custom matrix for Drop Planck+Preonic (#14488)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Jack Humbert <jack.humb@gmail.com>
2021-09-18 20:10:32 -07:00
Ramya Challa
f61f79b7cd [Keyboard] Add Gentleman65 (#12971)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-09-18 12:47:26 -07:00
MakotoKurauchi
c2f3c418f3 [Keyboard] Add new keyboard quick17 (#13703)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: keyaki-namiki <28521374+keyaki-namiki@users.noreply.github.com>
2021-09-18 12:28:41 -07:00
kaylanm
e3e58aae6a [Keyboard] Add superuser keyboard (#13840)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-18 12:27:49 -07:00
Bahrul Hidayat
23c3b9decb [Keyboard] Add dyz60 (#13864)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-18 12:26:46 -07:00
Elliot Powell
4e7133e262 [Keyboard] Add support for Coarse60 (#14416)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-18 11:39:58 -07:00
Lui Wolff
2c4660e40d [Keymap] Added Brazilian keymap for BM40RGB (#14431) 2021-09-18 09:06:46 -07:00
Drashna Jaelre
c681c1a6a8 [Keyboard] Fix dosa40rgb compilation issues (#14491) 2021-09-18 00:53:16 -07:00
Jordan Duabe
d51bb76ec9 [Keymap] Add 'j4ckofalltrades' keymap for sofle/rev1 (#14446) 2021-09-17 23:52:53 -07:00
Dao Tak Isaac
09b66c06d4 [Keyboard] Add Dosa40RGB + dtisaac01 (#14476) 2021-09-17 23:52:18 -07:00
john-ezra
228c7b095b [Keymap] Major Updates to Personal Kyria Keymap (#14485)
* added john ezra keymap with updates

* changed tapping term
2021-09-17 23:51:09 -07:00
Takeshi ISHII
f93597d66b fix link error for helix/rev3_5rows:five_rows (#14466)
This is a tentative quick fix.
I was adding the same functions for both #14426 and #14427 and they were in conflict.
2021-09-18 11:51:04 +09:00
James Young
7c09b2667b Nix Studio OXALYS80 Refactor (#14473)
* update grid alignment of keycodes

* update key assignments on via keymap

A seemingly-misplaced key assignment on Layers 1 through 3 of the via keymap led to keys being off by one in comparison to the default keymap.

* switch Backslash and Backspace on via keymap base layer

Matches the via keymap's key mapping to that of the default keymap.

* use QMK 3-character notation in oxalys80.h

* add matrix diagram; remove Planck reference

* add LAYOUT_tkl_ansi and LAYOUT_tkl_ansi_wkl layout macros

* add LAYOUT_tkl_ansi_tsangan macro

* add ISO layouts

Add LAYOUT_tkl_iso, LAYOUT_tkl_iso_tsangan, and LAYOUT_tkl_iso_wkl macros.

* enable Community Layouts support

* tidy up rules.mk

* readme tidy-up
2021-09-17 13:48:14 -07:00
Drashna Jaelre
0c1341daa8 [Keyboard] Move Planck EZ off 'Proton C' board (#14479) 2021-09-17 13:01:06 -07:00
Drashna Jaelre
40578621a7 [Keyboard] Move Moonlander off 'Proton C' board (#14478) 2021-09-17 13:00:42 -07:00
X-Bows Tech
c9b91443e1 Update rules.mk for xbows keyboard (#14477)
* Update rules.mk

* Update rules.mk

* Update rules.mk
2021-09-17 17:48:11 +01:00
Matt
3496513865 [Keymap] Adding personal keymap (#14326)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-09-16 21:38:11 -07:00
Andy Yong
b1605f2ad9 [Keyboard] Add Sauce Mild Keyboard (#14287)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-16 20:19:58 -07:00
r-pufky
87665f404b [Keymap] Add gaming toggle layer & layer colors to r-pufky keymap. (#14251) 2021-09-16 20:15:01 -07:00
Álvaro A. Volpato
c6b87be8c7 Mode 65S: Tap code and extra keys for media keys (#14471) 2021-09-16 21:42:26 +01:00
Takeshi ISHII
85a0c494ff [Keymap] Update Helix:five_rows OLED code (#14427)
* Stop using snprintf() in keymaps/five_rows/oled_display.c.

The binary size becomes 1350 bytes smaller.

make HELIX=verbose,core-oled helix/rev2/sc:five_rows
(104 bytes over) -> (95%, 1256 bytes free)

make helix/rev3_5rows:five_rows
(528 bytes over) -> (97%, 830 bytes free)

* add matrix scan rate display to OLED for keymaps/five_rows

* add matrix_output_unselect_delay.c to helix keymaps/five_rows

* add GPLv2 header

* apply review comment
2021-09-16 18:47:47 +09:00
Takeshi ISHII
13b93c212d [Keyboard] Increase the way to add oled code for helix/rev3. (#14426)
* move rev3_Xrows/oled_display.c to rev3_Xrows/keymaps/default/oled_display.c

* add dummy rev3_Xrows/oled_display.c

* Add default minimum oled_task_user() to helix/rev3_Xrows/rev3_Xrows.c

* remove unnecessary comment in rev3_Xrows/keymaps/default/oled_display.c

* copy rev3_Xrows/keymaps/default/oled_display.c to rev3_Xrows/keymaps/via/oled_display.c
2021-09-16 18:46:51 +09:00
Jos Boersema
d140e41c93 Adds optional hebrew layout (Unicode) (#14156) 2021-09-15 22:27:44 -07:00
Vino Rodrigues
b5cc2bdc34 [Keyboard] Add the Idobao ID96 keyboard (#14371)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-15 20:28:40 -07:00
Felix Jen
ae821ce4b7 [Keyboard] Add FJLabs TF60 Variants and TF65 Variant (#14392)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-15 19:25:30 -07:00
Felix Jen
40c58b1734 [Keyboard] Add Absolute Designs AD65 Keyboard (#14391)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-15 19:25:03 -07:00
yulei
303e063b71 [Keyboard] add Matrix Me (#14331)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-15 10:20:20 -07:00
Felix Jen
4b7503097c [Keyboard] Replaced Maker Keyboards & FJLabs Legacy Code (#14393) 2021-09-15 10:18:47 -07:00
Albert Y
0097886db6 [Keyboard] Add NO_LED positions to match key matrix. (#14417)
Co-authored-by: filterpaper <filterpaper@localhost>
2021-09-15 10:16:32 -07:00
IFo Hancroft
9503d8bd03 [Keymap] A slight improvement to my own ErgoDox keymap (#14425) 2021-09-15 10:15:42 -07:00
peott-fr
0f3343aa93 [Keymap] Trying again with Prime-e update! (#14429) 2021-09-15 10:14:57 -07:00
X-Bows Tech
6930eed964 [Keyboard] Update lighting effects for xbows keyboard (#14432) 2021-09-15 10:14:05 -07:00
Dasky
12a8e59e9c [Docs] add sync options heading, update led indicators (#14441)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-15 10:11:25 -07:00
Drashna Jaelre
169d5bd21d [Bug] Fix IS31fl3741 driver to accept 1 or 2 addresses (#14451)
Co-authored-by: Joel Challis <git@zvecr.com>
2021-09-15 10:07:08 -07:00
Drashna Jaelre
7e36a81383 [Keyboard] Fix Boop65 rgb compile issues (#14444) 2021-09-15 01:31:25 -07:00
Dan Nixon
a2d43ca024 [Keyboard] Add Aya keyboard (#14378)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-14 23:56:12 -07:00
moyi4681
c2f2f9bfd3 [Keyboard] add kbd75 hotswap keyboard (#14283)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-14 23:00:48 -07:00
moyi4681
07a4e3b176 [Keyboard] add boop65 rgb keyboard (#14166)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-14 22:20:34 -07:00
Wolf Van Herreweghe
344a73fddd [Keyboard] Add KeyBee65 (#14163)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Wolf Van Herreweghe <wolfvh@getupgamesofficial.com>
2021-09-14 22:20:07 -07:00
bomb
3435289052 [Keyboard] Add Mach80 for Melgeek (#14076)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-09-14 22:09:49 -07:00
jmcwilliams403
fcebd17267 [Keyboard] added 64_ansi_split_bs layout (#13776) 2021-09-14 21:44:41 -07:00
ぺらねこ
830fb5fd05 [Keyboard] Update peranekofactory/tone/rev2/rev2.h (#13610)
I changed the description that was mistakenly described as the same wiring as Rev1 to the correct description.
2021-09-14 21:21:31 -07:00
vsrivastava
657323a206 [Docs] fixed incorrect amount of steps for oled usage (#13519)
changed line 21 from saying "three steps" to "two steps" as there are only two steps

Co-authored-by: feynmantf <46390109+feynmantf@users.noreply.github.com>
2021-09-14 21:12:37 -07:00
drhigsby
00c60c9410 [Keyboard] Dubba175 Default Keymap Update (#13486)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: ridingqwerty <george.g.koenig@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-14 20:55:09 -07:00
Carlos Martins
0dfc1db74a [Keyboard] VIA support with top facing LEDs and underglow (#12814)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-14 20:38:13 -07:00
Álvaro A. Volpato
eee553337a Add initial support for M65S (#14027)
* Add initial support for M65S

* Remove LTO_ENABLE from rules.mk

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Removed defs in rules.mk, remove EEPROM debug code in m65s.c

Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-09-14 07:01:23 +10:00
stanrc85
ca626f59a7 [Keymap] Userspace updates (#14418) 2021-09-13 13:15:10 -07:00
Drashna Jaelre
2b956e6eb9 [Keyboard] fix mokey63 keymaps (#14424) 2021-09-13 19:30:37 +01:00
Drashna Jaelre
ab34ecb669 Apply TAP_CODE_DELAY to Tap Dance key sequences (#14412)
* Add  support to tap dances

* Move default tap code defines to header file
2021-09-13 00:48:11 +01:00
umi
10362777a5 update compatible_microcontrollers.md translation (#14401) 2021-09-12 16:08:22 +09:00
Xelus22
5ae2ae8a36 [Bug] Keymap Fixes - lyra and reviung39 (#14400) 2021-09-11 23:21:56 -07:00
Drashna Jaelre
f6a67c10bd [Keyboard] Fix Redox Media compilation errors (#14345)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-11 23:21:28 -07:00
Ryan
5af1799735 Remove BLUETOOTH_ENABLE from keyboard-level rules.mk (#14379) 2021-09-12 15:27:29 +10:00
Ryan
4791cfae1a Remove width, height and key_count from info.json (#14274) 2021-09-12 14:04:56 +10:00
X-Bows Tech
f1084712d7 [Keyboard] Update lighting effects for xbows ranger keyboard (#14318) 2021-09-11 14:37:43 -07:00
Ananya Kirti
85b052bdd4 [Keyboard] add support for Bobpad (#13989)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-11 14:36:58 -07:00
John Mueller
22dd68520b [Keyboard] Add 3keyecosystem and 2key2 keyboard (#14023)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-11 07:33:48 -07:00
alittlepeace
99d465bee0 [keyboard] Add hotswap YMDK Wings (#14176)
* Add files via upload

* Update keyboards/ymdk/wingshs/readme.md

Co-authored-by: Joel Challis <git@zvecr.com>

* Delete wingshs.json

* Update keyboards/ymdk/wingshs/config.h

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Update keyboards/ymdk/wingshs/rules.mk

Co-authored-by: Ryan <fauxpark@gmail.com>

* Update keyboards/ymdk/wingshs/info.json

Co-authored-by: Ryan <fauxpark@gmail.com>

Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-11 07:33:13 -07:00
john-ezra
5eb500a877 [Keymap] Add john-ezra Kyria Keymap (#14338)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-11 07:31:24 -07:00
Seth
35bff470f7 [Keyboard] Update rocketboard_16 with *most* of its final features (#12537) 2021-09-11 00:32:29 -07:00
rhmokey
5f94191075 [Keyboard] Add mokey63 (#14357)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-09-10 23:24:37 -07:00
Sebastian Laube
9630a7bde2 [Keyboard] added KPs BM43 RGB board (#13888)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-10 23:01:14 -07:00
AnthonyNguyen168
047291728d [Keyboard] New PCB Canary60RGB from CanaryTeam (#14321)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-10 22:49:45 -07:00
yfuku
46f15cd1a5 [Keyboard] owl8 bugfix (#14020) 2021-09-10 21:59:28 -07:00
AKiwi92
d0b1d9f548 [Keyboard] KiwiKeebs Macro V2 (QMK/VIA) and update to V1 (#13499)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Ash <ash@splitpixel.co.uk>
2021-09-10 21:20:43 -07:00
rarick
6213989c32 [Keymap] Add keymap for crkbd/rarick (#13240)
* Added new keymap for crkbd/rarick

* Delete flash.sh

Deleted rarick crkbd flashing script, as it will not be used by most users.

* Applied feedback, and fixed build error caused by builder updates

* Update keyboards/crkbd/keymaps/rarick/config.h

Removed USE_MATRIX_I2C, no longer used.

Co-authored-by: Drashna Jaelre <drashna@live.com>

Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-09-10 20:52:17 -07:00
Zac Moulton
d7747a2d70 [Keymap] moults31 userspace and keymaps (#12025) 2021-09-10 18:56:50 -07:00
Xelus22
759d1927f0 [Keyboard] Add RS60 (#14073)
* initial rs60

* update

* remove

* Include rs60.h

Co-authored-by: Joel Challis <git@zvecr.com>

* change layout name

Co-authored-by: Joel Challis <git@zvecr.com>

* change layout name

Co-authored-by: Joel Challis <git@zvecr.com>

* change layout name

Co-authored-by: Joel Challis <git@zvecr.com>

* change layout name

Co-authored-by: Joel Challis <git@zvecr.com>

* change layout name

Co-authored-by: Joel Challis <git@zvecr.com>

* List form readme.

Co-authored-by: Joel Challis <git@zvecr.com>

* change layout name

Co-authored-by: Joel Challis <git@zvecr.com>

* change layout name

Co-authored-by: Joel Challis <git@zvecr.com>

* change layout name

Co-authored-by: Joel Challis <git@zvecr.com>

* add layout

Co-authored-by: Joel Challis <git@zvecr.com>

* add license

Co-authored-by: Joel Challis <git@zvecr.com>

* 2021 update

Co-authored-by: Joel Challis <git@zvecr.com>

* add license

Co-authored-by: Joel Challis <git@zvecr.com>

* sigprof suggested changes

* Remove redundant define

Co-authored-by: Ryan <fauxpark@gmail.com>

* Fixup readme

Co-authored-by: Sergey Vlasov <sigprof@gmail.com>

* Update keyboards/xelus/rs60/info.json

Co-authored-by: Ryan <fauxpark@gmail.com>

Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Sergey Vlasov <sigprof@gmail.com>
2021-09-10 20:14:39 +01:00
Ryan
7277f1febe Remove BLUETOOTH_ENABLE from defaultish keymaps (#14375) 2021-09-10 14:11:17 +01:00
Ryan
d5cb7de5e4 Change USBasp and bootloadHID bootloaders to lowercase (#14354) 2021-09-10 17:17:54 +10:00
Ryan
7eea780a7d Remove bootloader listings from rules.mk (#14330) 2021-09-10 13:35:46 +10:00
Ryan
2cb9219a3e Remove commented out BLUETOOTH_ENABLE rules (#14361) 2021-09-10 13:32:22 +10:00
Joel Challis
7f80076d04 Align rgb/led matrix docs with current behaviour (#14367) 2021-09-10 03:57:36 +01:00
Uy Bui
2249963687 [Keyboard] Add custom pcb for Polaris (#14347)
* [Keyboard] pcb for Polaris

* [Keyboard] pcb for Polaris: update  layout

* Update keyboards/wekey/polaris/info.json

Co-authored-by: Ryan <fauxpark@gmail.com>

Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-09 10:02:45 -07:00
Ryan
d6dd2e0d51 Fix CRLF in lyra/rev1 (#14360) 2021-09-09 16:50:52 +10:00
Malevolti
4c88f76be8 [Keyboard] add lyra (#13977)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-08 23:34:32 -07:00
mechlovin
82ee9bd475 [Keyboard] Add Olly JF PCB (#14056)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-08 22:23:26 -07:00
Drashna Jaelre
6d43a5daf4 Backport F_CPU/F_USB hack from system76 (#14286)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-08 20:19:06 -07:00
Felix Jen
cb4006c0b4 [Keymap] Fix Maker Keyboards Alexa Keymap (#14355) 2021-09-08 19:44:52 -07:00
Ethan Yates
891ddd9a30 [Keyboard] Add 61Key (#14259)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-08 19:14:03 -07:00
JayceFayne
f3bef84dac ST7565_TIMEOUT 0 and ST7565_DISABLE_TIMEOUT should behave the same (#14315) 2021-09-08 18:34:49 -07:00
JayceFayne
da81e5c7cd OLED TIMEOUT 0 and OLED_DISABLE_TIMEOUT should behave the same (#14302) 2021-09-08 18:34:34 -07:00
Drashna Jaelre
853e56d080 [Keyboard] Minor tweaks to Work Board layout (#14351) 2021-09-08 18:10:43 -07:00
Ryan
9e77cdf4e6 Bugfix for Joystick and JSON schema (#14295) 2021-09-09 10:27:58 +10:00
rhmokey
3f2a030de6 [Keyboard] Add new Mokey keyboard (#14329)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-08 16:57:43 -07:00
Gastón Jorquera
d510f6afa9 [Keymap] Add Gaston's Lily58 custom keymap (#14334)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Gaston Jorquera <gjorquera@gmail.com>
2021-09-08 16:55:12 -07:00
Drashna Jaelre
4294aa0f1e [Keyboard] Tractyl Manuform - configuration updates (#14314)
* [Keyboard] Tractyl Manuform - configuration updates

* Update readmes

* Add more details

* Fix issues with encoder pins

* Additional fixes for pin config

* Fix up some comments
2021-09-08 16:52:43 -07:00
Keenan Brock
8f8411a98a [Keyboard] Add VIA keymap for the reviung39 (#14234) 2021-09-08 16:02:50 -07:00
Joel Challis
2e0659f7fd Fixes for recent i2c migrations (#14352) 2021-09-08 15:44:18 -07:00
jackytrabbit
9c175f1801 [Keyboard] Update VIA support for lazydesigners/the40 (#14240)
Co-authored-by: Joel Challis <git@zvecr.com>
2021-09-08 00:34:36 -07:00
Gabriel Bustamante
541e101291 [Keymap] New keymap for bm40 (#14182) 2021-09-07 23:53:33 -07:00
Rifaa Subekti
3ef01a3482 [Keyboard] add wang ergo (#14245)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-07 21:07:00 -07:00
James Young
1ebaec96e7 Sneakbox Ava tidy-up (#14298) 2021-09-07 20:23:45 -07:00
IFo Hancroft
267ffb9914 [Keymap] Adding IFo Hancroft's ErgoDox EZ Keymap (#14342) 2021-09-07 20:01:58 -07:00
Drashna Jaelre
0b8d6df390 [Keyboard] Fix issues with 3w6 rev2 matrix (#14346) 2021-09-08 02:53:55 +01:00
Joel Challis
60c5bd7b5e handwired/dactyl - Refactor use of legacy i2c implementation (#14344) 2021-09-07 18:23:11 -07:00
Joel Challis
04c0704b28 3w6 - Refactor use of AVR only I2C functions (#14339)
* Refactor use of legacy i2c functions

* Align rev2

* Review fixes
2021-09-07 16:35:13 +01:00
Joel Challis
e7a5c006d9 Refactor use of legacy i2c implementation (#14341) 2021-09-07 16:34:59 +01:00
Joel Challis
2d6635214a ergodone - Refactor use of legacy i2c implementation (#14340)
* Refactor use of legacy i2c implementation

* copy-paste error
2021-09-07 16:33:29 +01:00
shiftux
1dbe4e7dd0 [Keyboard] Redox media (#13084)
* adding a new revision 'media' to the redox keyboard

* readme update

* encoder fix

* video link

* drashna change requests

* removing SPLIT_USB_TIMEOUT

* intermediate rename

* lowercase

* drashna comments

* include if defined KEYBOARD_redox_media

* lowercase readme, tmp step

* lowercase readme

* drashna changes

* more drashna comments

* readme update

* readme update

* fauxpark and drashna comments

* fauxpark comments

* Update keyboards/redox/media/readme.md

Co-authored-by: Ryan <fauxpark@gmail.com>

Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-06 12:44:39 -07:00
Monksoffunk
85a14ac25b [Keyboard] Zinc: fix RGBLED_NUM bug (#13287) 2021-09-06 06:49:09 -07:00
Joel Challis
1a494da288 Fix eeprom for Durgod boards (#14324) 2021-09-05 23:56:10 +01:00
Drashna Jaelre
1e1be4c229 [Bug] Fix compile issues for boards with custom matrix (#14323) 2021-09-05 23:35:42 +01:00
Joel Challis
8d6d8cfadf Tidy up defines within STM EEPROM emulation (#14275)
* Tidy up defines within stm eeprom emulation

* Fix tests

* Resolve todo

* Still use page notion in clear

* Remove more f4 refs
2021-09-05 21:36:43 +01:00
Ryan
fe6d6cf76d Remove empty override functions (#14312)
* Remove empty override functions, 0-9

* Remove empty override functions, A-D

* Remove empty override functions, E-H

* Remove empty override functions, handwired

* Remove empty override functions, I-L

* Remove empty override functions, M-P

* Remove empty override functions, Q-T

* Remove empty override functions, U-Z
2021-09-05 21:36:31 +01:00
Niko Wenselowski
8a8fdd9a72 Highlight keycode (#14317)
This should make it consistent with other docs and hopefully will make less people miss this detail.
2021-09-05 20:36:16 +01:00
JayceFayne
767f2c0284 [Core] Add is_oled_scrolling (#14305) 2021-09-05 09:09:20 -07:00
kb-elmo
0471429c01 [Keyboard] Fix rotary encoder function for Voice65 (#14316)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-05 09:05:55 -07:00
JayceFayne
014aa0661e Fix Space Cadet md link (#14300) 2021-09-04 15:01:56 +01:00
Albert Y
c9262cf7f8 Enable extra keys for Technik ortho and stagger (#14282)
* Extra keys for technik ortho

* Extra keys for technik staggered

Co-authored-by: filterpaper <filterpaper@localhost>
2021-09-04 03:02:15 +01:00
James Young
b15bd128a5 FJLabs Ready100 Configurator Fixes (#14291)
* grid-align keycodes; use short-form keycodes

No logic change.

* info.json: correct layout macro reference

* info.json: correct LAYOUT_64key data

Removes an extra key from the layout data.

* 64_ansi Community Layout support

* rename LAYOUT_64key to LAYOUT_64_ansi (with alias for backwards compatibility)
* add LAYOUTS = 64_ansi to rules.mk

* remove width and height keys from info.json
2021-09-03 21:03:15 +01:00
James Young
06c89e8abf Naiping NPhhkb: 60_tsangan_hhkb Community Layout support (#14292)
* 60_tsangan_hhkb Community Layout support

* rename LAYOUT to LAYOUT_60_tsangan_hhkb
* add LAYOUTS = 60_tsangan_hhkb to rules.mk

* correct maintainer field in info.json

* remove width and height keys from info.json

* fix GitHub account link on readme
2021-09-03 21:01:50 +01:00
James Young
90909fbaf7 takashicompany/endzone34: correct QMK Configurator key sequence (#14290)
* update info.json formatting

* convert tabs to spaces
* apply human-friendly formatting

* correct Configurator key sequence

* remove width and height keys from info.json
2021-09-03 21:00:29 +01:00
James Young
5f6d9913f8 OwLab Voice65 Hotswap: 65_ansi_blocker Community Layout support (#14293)
* 65_ansi_blocker Community Layout support

* rename LAYOUT to LAYOUT_65_ansi_blocker (with alias for backwards compatibility)
* add LAYOUTS = 65_ansi_blocker to rules.mk

* remove width and height keys from info.json
2021-09-03 11:48:10 -07:00
Ryan
8574bf20d3 Remove more cruft in keyboard files (#14288) 2021-09-03 17:09:30 +01:00
jhauh
a01057d19d [Keymap] Update iris fluffactually keymap (#14265)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-09-02 10:50:17 -07:00
Drashna Jaelre
956cf8d7bf [Keyboard] Work Louder board fixup (#14247)
* [Keyboard] Add some last minute tweaks to Work board

* Additional fixes

* Fix rgb pin

* Fix ws2812 hackery

* additional led tweaks

* Add indicator LEDs

* fix bootmagic settings

* Fix up RGB stuff

* Limit power draw for entire board

* fixup lights and such

* change LED order on loop

* Fix indicators if via is not enabled

* Enable Sleep for rgb matrix

* Even more LED tweaks

* Final tweaks?

* Tweak keycodes
2021-09-02 10:49:44 -07:00
James Young
d36a7c512d PistachioPro: correct Configurator key sequence (#14277)
* info.json: apply human-friendly formatting

* correct LAYOUT key sequence

Moves the Enter key object to the correct place in sequence.
2021-09-02 10:17:35 -07:00
James Young
ebfa7e14f3 Matrix Falcon info.json fixes (#14273)
* apply human-friendly formatting to info.json

* update key labels; correct maintainer field

* add LAYOUT_all data to info.json

* remove width and height keys from info.json (per fauxpark)

Co-authored-by: Ryan <fauxpark@gmail.com>

Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-02 18:09:38 +01:00
James Young
0290dd3547 Yoichiro Lunakey Macro: correct Configurator key sequence (#14276)
* apply human-friendly formatting to info.json

* correct Configurator key sequence
2021-09-02 18:08:35 +01:00
jonavin
98a2e9dc0e [Keymap] new murphpad landscape keymap with encoder enhanced functions (#14103)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Jonavin <=>
2021-09-01 21:12:57 -07:00
peott-fr
e056ae58a0 [Keymap] Fine-tuning Nyquist keymap. (#14269) 2021-09-01 21:12:15 -07:00
Drashna Jaelre
37aef4ebe1 [Keymap] Fix Drashna Keymap issues missed before Develop merge (#14271) 2021-09-01 21:08:58 -07:00
James Young
c1e5c920a9 naiping/np64: 64_ansi Community Layout support and codebase touch-up (#14264) 2021-09-01 20:50:44 -07:00
James Young
b55154fb0a neson design/n6: Extended Community Layout Support and Layout Macro Fix (#14266) 2021-09-01 20:47:28 -07:00
James Young
c0eab2a504 wuque/serneity65: Layout Macro rework and Configurator fix (#14267) 2021-09-01 20:46:53 -07:00
hvp
cb53c4fd41 [Keymap] hvp keymap for Cornelius, updated ut47.2 and userspace (#14187) 2021-09-01 20:44:36 -07:00
peott-fr
872414f454 [Keymap] Add peott-fr H87 keymap (#14232) 2021-09-01 20:44:12 -07:00
jonavin
b6ca21c65c [Keymap] Jonavin keymap gmmk pro (#14220)
add rgb nightmode and optional colemak layer 

Co-authored-by: Jonavin <=>
2021-09-01 20:42:31 -07:00
Christian Eiden
cded3b7582 [Keymap] own scylla keymap (#14224)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-09-01 20:41:17 -07:00
qieq
bb356a1584 [Docs] Update path to keycode.h (#14263) 2021-09-01 20:40:12 -07:00
James Young
7575bc23a6 MatchstickWorks SouthPad: correct Configurator key sequence (#14255)
* matchstickworks/southpad: correct Configurator key sequence

* replace tabs with spaces; apply four-space indent
2021-09-01 10:44:03 -07:00
James Young
583f07ac58 owl8: add info.json file (#14256)
* owl8: add info.json file

* remove width and height keys (per fauxpark)

Co-authored-by: Ryan <fauxpark@gmail.com>

Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-01 13:20:56 +01:00
Jay Greco
c573926e05 Fix snailmap compilation error (#14250)
* Fix snailmap compilation error

* Update keymap.c with correct OLED_ENABLE defines
2021-09-01 10:48:14 +01:00
James Young
8d97c54770 mnk50: Configurator Fix and Layout Macro Additions (#14257)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-01 12:50:32 +10:00
Casey Webster
c5ec423438 [Keymap] cwebster2 Keymap and userspace updates (#14258) 2021-08-31 17:50:42 -07:00
Andre Brait
fac5ec4656 Move GMMK Pro layouts to the correct subdir (#14241)
Also fix a compilation issue in the mike1808 keymap
2021-09-01 00:18:35 +01:00
Drashna Jaelre
b7693c971c [Keyboard] Disable console on Iris Rev5 (#14249) 2021-08-31 15:25:46 -07:00
James Young
92106ee038 emi20: remove dead space from Configurator layout (#14254) 2021-08-31 19:29:49 +01:00
Felix Jen
b6d7b13a7a [Keyboard] Add FJLabs KF87 PCB (#14179)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-08-31 11:24:41 -07:00
Ibnu Daru Aji
6f5428687c [Keymap] reflects current rick's keymap (#14169) 2021-08-31 11:23:02 -07:00
Salicylic-acid3
bdd0a6c097 [Keyboard] Addition of VIA keymap and a few fixes for naked60 (#14225)
Co-authored-by: Joel Challis <git@zvecr.com>
2021-08-30 22:19:21 -07:00
Joel Challis
f2c9e82e5b cherry pick tidy up (#14244) 2021-08-31 00:25:41 +01:00
coliss86
1e7117317f Documentation: Fix links in key overrides (#14228)
Co-authored-by: Joel Challis <git@zvecr.com>
2021-08-31 09:13:19 +10:00
JX
5ed8edae49 Update ws2812_spi.c (#14237) 2021-08-30 20:34:19 +01:00
Danny
2dc07391bd [Keyboard] Add Iris Rev. 5 (#13934)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-08-30 11:49:46 -07:00
dogspace
27aebba1b1 [Keymap] Add new snailmap keymap to nullbitsco/nibble keyboard (#14024)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-08-30 11:42:04 -07:00
kb-elmo
c9283f4c1f [Keyboard] Add OwLab Jelly Epoch (#14190)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-08-30 11:29:15 -07:00
Rifaa Subekti
b63114ea29 [Keyboard] add slamz keyboard (#14188)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-08-30 11:28:54 -07:00
Purdea Andrei
9583f9f589 [Bug] Fix build error when enabling NO_HAPTIC_MOD (#14178)
Without this build would fail, if a keyboard had haptic feedback enabled,
TAPPING_TOGGLE was not overridden in a config.h, and if NO_HAPTIC_MOD was
defined in config.h.
2021-08-30 11:22:53 -07:00
Felix Jen
949cfd4632 [Keyboard] add maker keyboards alexa (#14165) 2021-08-30 11:05:13 -07:00
peott-fr
557fce7a8e [Keymap] Add peott-fr keymap for Kbd6x (#14164) 2021-08-30 11:04:42 -07:00
Vincent Vorholter
9d32cb68c3 [Keyboard] Changed ProductID on basketweav keyboards (#14162)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Vince Vorholter <vince@28east.co.za>
2021-08-30 11:03:53 -07:00
Zach White
baa423004a ensure that the directory for sys.executable is in the user's path (#14229) 2021-08-29 16:46:36 -07:00
Zach White
b705020daf move everything from qmkfm/base_container to qmkfm/qmk_cli (#14230) 2021-08-29 16:41:56 -07:00
peott-fr
13a2da973f Nyquist (#14202)
* adding my Nyquist keymap

* Updating Nyquist keymap with licensing.

* Cleaning-up and improving Nyquist keymap.

* Cleaning-up and improving Nyquist keymap.
2021-08-29 22:52:49 +01:00
Sergey Vlasov
a1866a962c Update the nix-shell environment (#13316)
* Nix: Allow calls to `bin/qmk` even when the build was started by `qmk`

The `$PATH` modifications performed by the Nix wrapper for the `qmk`
executable prevent `bin/qmk` from working properly (the changed `$PATH`
contains a wrong `python3` executable which does not have the needed
Python modules in its module path).  As a workaround, disable the
generation of that wrapper for the `qmk` Python package (there is yet
another wrapper generated while building the Python environment, which
would still set the Python module path properly when running `qmk`).

Although `bin/qmk` is officially deprecated, QMK CLI still invokes it in
some cases (at least `qmk doctor` and `qmk pytest`), therefore keeping
these invocations working is useful.

* Nix: Update `util/nix/pyproject.toml` to match `requirements*.txt`

Update the Python dependency information used by Poetry to match the
current state of the qmk_firmware code.

* Nix: Bump QMK CLI dependency to 1.0.0; bump other Python deps

Update Python dependencies for nix-shell to the most recent releases:

 - dotty-dict: 1.3.0 -> no longer used
 - milc: 1.4.2 -> 1.6.2
 - pep8-naming: 0.11.1 -> 0.12.1
 - pygments: 2.9.0 -> 2.10.0
 - pyrsistent: 0.17.3 -> 0.18.0
 - pyusb: 1.1.1 -> 1.2.1
 - setuptools-scm: 6.0.1 -> no longer used
 - qmk: 0.1.0 -> 1.0.0
 - qmk-dotty-dict: not used -> 1.3.0.post1
 - yapf: 0.30.0 -> 0.31.0

Note to self: The command to update Python dependencies changed to:

    ( cd util/nix && nix run 'nixpkgs#poetry' -- update --lock )
2021-08-29 22:24:43 +01:00
J.Flanagan
ef7fdee6c8 [Keyboard] Add Viktus SP Mini (#14069)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-08-29 12:18:56 -07:00
Trent Hoh
f87cd8e8a0 [Keyboard] Corrected layout for np24 by YMDK (#14096)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-08-29 04:09:43 -07:00
peott-fr
94d7635a4a [Keymap] My Prime E keymap (#14117) 2021-08-29 04:08:23 -07:00
Weirdo
5d5668c3f8 [Keyboard] Add kelownaRGB64 (#14141)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-08-29 04:07:54 -07:00
Takeshi ISHII
9afc64cd61 [Keyboard] fix compile error make helix/rev2/sc:all (#14214) 2021-08-29 15:06:00 +09:00
6877 changed files with 123089 additions and 52579 deletions

View File

@@ -12,7 +12,7 @@ on:
jobs:
api_data:
runs-on: ubuntu-latest
container: qmkfm/base_container
container: qmkfm/qmk_cli
# protect against those who develop with their fork on master
if: github.repository == 'qmk/qmk_firmware'

View File

@@ -16,7 +16,7 @@ jobs:
test:
runs-on: ubuntu-latest
container: qmkfm/base_container
container: qmkfm/qmk_cli
steps:
- uses: actions/checkout@v2
@@ -25,4 +25,4 @@ jobs:
- name: Install dependencies
run: pip3 install -r requirements-dev.txt
- name: Run tests
run: bin/qmk pytest
run: qmk pytest

View File

@@ -12,7 +12,7 @@ on:
jobs:
api_data:
runs-on: ubuntu-latest
container: qmkfm/base_container
container: qmkfm/qmk_cli
# protect against those who work in their fork on develop
if: github.repository == 'qmk/qmk_firmware'

View File

@@ -14,7 +14,7 @@ on:
jobs:
generate:
runs-on: ubuntu-latest
container: qmkfm/base_container
container: qmkfm/qmk_cli
# protect against those who develop with their fork on master
if: github.repository == 'qmk/qmk_firmware'

View File

@@ -16,10 +16,12 @@ jobs:
lint:
runs-on: ubuntu-latest
container: qmkfm/base_container
container: qmkfm/qmk_cli
steps:
- uses: rlespinasse/github-slug-action@v3.x
- name: Install dependencies
run: |
apt-get update && apt-get install -y dos2unix
- uses: actions/checkout@v2
with:
@@ -31,12 +33,17 @@ jobs:
output: ' '
fileOutput: ' '
- name: Run qmk format-c and qmk format-python
- name: Run qmk formatters
shell: 'bash {0}'
run: |
qmk format-c --core-only -n $(< ~/files.txt)
format_c_exit=$?
qmk format-python -n
format_python_exit=$?
qmk format-c --core-only $(< ~/files.txt)
qmk format-python $(< ~/files.txt)
qmk format-text $(< ~/files.txt)
git diff
exit $((format_c_exit + format_python_exit))
- name: Fail when formatting required
run: |
for file in $(git diff --name-only); do
echo "::error file=${file}::::File Requires Formatting"
done
test -z "$(git diff --name-only)"

49
.github/workflows/format_push.yaml vendored Normal file
View File

@@ -0,0 +1,49 @@
name: Lint Format
on:
push:
branches:
- master
- develop
jobs:
lint:
runs-on: ubuntu-latest
container: qmkfm/qmk_cli
steps:
- name: Install dependencies
run: |
apt-get update && apt-get install -y dos2unix
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Run qmk formatters
shell: 'bash {0}'
run: |
qmk format-c -a
qmk format-python -a
qmk format-text -a
git diff
- uses: rlespinasse/github-slug-action@v3.x
- name: Become QMK Bot
run: |
git config user.name 'QMK Bot'
git config user.email 'hello@qmk.fm'
- name: Create Pull Request
uses: peter-evans/create-pull-request@v3
if: ${{ github.repository == 'qmk/qmk_firmware'}}
with:
token: ${{ secrets.QMK_BOT_TOKEN }}
delete-branch: true
branch: bugfix/format_${{ env.GITHUB_REF_SLUG }}
author: QMK Bot <hello@qmk.fm>
committer: QMK Bot <hello@qmk.fm>
commit-message: Format code according to conventions
title: '[CI] Format code according to conventions'

View File

@@ -9,7 +9,7 @@ jobs:
lint:
runs-on: ubuntu-latest
container: qmkfm/base_container
container: qmkfm/qmk_cli
steps:
- uses: actions/checkout@v2

View File

@@ -5,7 +5,6 @@
"xaver.clang-format",
"ms-vscode.cpptools",
"bierner.github-markdown-preview",
"donjayamanne.git-extension-pack",
"CoenraadS.bracket-pair-colorizer-2"
"donjayamanne.git-extension-pack"
]
}

View File

@@ -1,7 +1,6 @@
FROM qmkfm/base_container
FROM qmkfm/qmk_cli
VOLUME /qmk_firmware
WORKDIR /qmk_firmware
COPY . .
CMD make all:default
CMD qmk compile -kb all -km default

View File

@@ -303,37 +303,8 @@ define PARSE_KEYBOARD
KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_3)/keymaps/*/.)))
KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_4)/keymaps/*/.)))
KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_5)/keymaps/*/.)))
# this might be needed, but in a different form
#KEYMAPS := $$(sort $$(filter-out $$(KEYBOARD_FOLDER_1) $$(KEYBOARD_FOLDER_2) \
$$(KEYBOARD_FOLDER_3) $$(KEYBOARD_FOLDER_4) $$(KEYBOARD_FOLDER_5), $$(KEYMAPS)))
KEYBOARD_LAYOUTS :=
ifneq ("$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_5)/rules.mk)","")
LAYOUTS :=
$$(eval include $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_5)/rules.mk)
KEYBOARD_LAYOUTS := $$(sort $$(LAYOUTS) $$(KEYBOARD_LAYOUTS))
endif
ifneq ("$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_4)/rules.mk)","")
LAYOUTS :=
$$(eval include $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_4)/rules.mk)
KEYBOARD_LAYOUTS := $$(sort $$(LAYOUTS) $$(KEYBOARD_LAYOUTS))
endif
ifneq ("$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_3)/rules.mk)","")
LAYOUTS :=
$$(eval include $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_3)/rules.mk)
KEYBOARD_LAYOUTS := $$(sort $$(LAYOUTS) $$(KEYBOARD_LAYOUTS))
endif
ifneq ("$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_2)/rules.mk)","")
LAYOUTS :=
$$(eval include $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_2)/rules.mk)
KEYBOARD_LAYOUTS := $$(sort $$(LAYOUTS) $$(KEYBOARD_LAYOUTS))
endif
ifneq ("$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_1)/rules.mk)","")
LAYOUTS :=
$$(eval include $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_1)/rules.mk)
KEYBOARD_LAYOUTS := $$(sort $$(LAYOUTS) $$(KEYBOARD_LAYOUTS))
endif
KEYBOARD_LAYOUTS := $(shell $(QMK_BIN) list-layouts --keyboard $1)
LAYOUT_KEYMAPS :=
$$(foreach LAYOUT,$$(KEYBOARD_LAYOUTS),$$(eval LAYOUT_KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/layouts/*/$$(LAYOUT)/*/.)))))

4
Vagrantfile vendored
View File

@@ -68,13 +68,13 @@ Vagrant.configure(2) do |config|
["virtualbox", "vmware_workstation", "vmware_fusion"].each do |type|
config.vm.provider type do |virt, override|
override.vm.provision "docker" do |d|
d.run "qmkfm/base_container",
d.run "qmkfm/qmk_cli",
cmd: "tail -f /dev/null",
args: "--privileged -v /dev:/dev -v '/vagrant:/vagrant'"
end
override.vm.provision "shell", inline: <<-SHELL
echo 'docker restart qmkfm-base_container && exec docker exec -it qmkfm-base_container /bin/bash -l' >> ~vagrant/.bashrc
echo 'docker restart qmkfm-qmk_cli && exec docker exec -it qmkfm-qmk_cli /bin/bash -l' >> ~vagrant/.bashrc
SHELL
end
end

View File

@@ -21,19 +21,19 @@
# Current options:
#
# AVR:
# halfkay PJRC Teensy
# caterina Pro Micro (Sparkfun/generic)
# atmel-dfu Atmel factory DFU
# lufa-dfu LUFA DFU
# qmk-dfu QMK DFU (LUFA + blinkenlight)
# qmk-hid QMK HID (LUFA + blinkenlight)
# bootloadHID HIDBootFlash compatible (ATmega32A)
# USBasp USBaspLoader (ATmega328P)
# halfkay PJRC Teensy
# caterina Pro Micro (Sparkfun/generic)
# atmel-dfu Atmel factory DFU
# lufa-dfu LUFA DFU
# qmk-dfu QMK DFU (LUFA + blinkenlight)
# qmk-hid QMK HID (LUFA + blinkenlight)
# bootloadhid HIDBootFlash compatible (ATmega32A)
# usbasploader USBaspLoader (ATmega328P)
# ARM:
# kiibohd Input:Club Kiibohd bootloader (only used on their boards)
# stm32duino STM32Duino (STM32F103x8)
# stm32-dfu STM32 USB DFU in ROM
# apm32-dfu APM32 USB DFU in ROM
# kiibohd Input:Club Kiibohd bootloader (only used on their boards)
# stm32duino STM32Duino (STM32F103x8)
# stm32-dfu STM32 USB DFU in ROM
# apm32-dfu APM32 USB DFU in ROM
#
# BOOTLOADER_SIZE can still be defined manually, but it's recommended
# you add any possible configuration to this list
@@ -52,26 +52,26 @@ ifeq ($(strip $(BOOTLOADER)), lufa-dfu)
OPT_DEFS += -DBOOTLOADER_LUFA_DFU
OPT_DEFS += -DBOOTLOADER_DFU
ifneq (,$(filter $(MCU), at90usb162 atmega16u2 atmega32u2 atmega16u4 atmega32u4 at90usb646 at90usb647))
BOOTLOADER_SIZE = 4096
BOOTLOADER_SIZE ?= 4096
endif
ifneq (,$(filter $(MCU), at90usb1286 at90usb1287))
BOOTLOADER_SIZE = 8192
BOOTLOADER_SIZE ?= 8192
endif
endif
ifeq ($(strip $(BOOTLOADER)), qmk-dfu)
OPT_DEFS += -DBOOTLOADER_QMK_DFU
OPT_DEFS += -DBOOTLOADER_DFU
ifneq (,$(filter $(MCU), at90usb162 atmega16u2 atmega32u2 atmega16u4 atmega32u4 at90usb646 at90usb647))
BOOTLOADER_SIZE = 4096
BOOTLOADER_SIZE ?= 4096
endif
ifneq (,$(filter $(MCU), at90usb1286 at90usb1287))
BOOTLOADER_SIZE = 8192
BOOTLOADER_SIZE ?= 8192
endif
endif
ifeq ($(strip $(BOOTLOADER)), qmk-hid)
OPT_DEFS += -DBOOTLOADER_QMK_HID
OPT_DEFS += -DBOOTLOADER_HID
BOOTLOADER_SIZE = 4096
BOOTLOADER_SIZE ?= 4096
endif
ifeq ($(strip $(BOOTLOADER)), halfkay)
OPT_DEFS += -DBOOTLOADER_HALFKAY
@@ -86,11 +86,11 @@ ifeq ($(strip $(BOOTLOADER)), caterina)
OPT_DEFS += -DBOOTLOADER_CATERINA
BOOTLOADER_SIZE = 4096
endif
ifeq ($(strip $(BOOTLOADER)), bootloadHID)
ifneq (,$(filter $(BOOTLOADER), bootloadhid bootloadHID))
OPT_DEFS += -DBOOTLOADER_BOOTLOADHID
BOOTLOADER_SIZE = 4096
endif
ifeq ($(strip $(BOOTLOADER)), USBasp)
ifneq (,$(filter $(BOOTLOADER), usbasploader USBasp))
OPT_DEFS += -DBOOTLOADER_USBASP
BOOTLOADER_SIZE = 4096
endif

View File

@@ -698,19 +698,23 @@ ifeq ($(strip $(AUTO_SHIFT_ENABLE)), yes)
endif
JOYSTICK_ENABLE ?= no
ifneq ($(strip $(JOYSTICK_ENABLE)), no)
VALID_JOYSTICK_TYPES := analog digital
JOYSTICK_DRIVER ?= analog
ifeq ($(strip $(JOYSTICK_ENABLE)), yes)
ifeq ($(filter $(JOYSTICK_DRIVER),$(VALID_JOYSTICK_TYPES)),)
$(error "$(JOYSTICK_DRIVER)" is not a valid joystick driver)
endif
OPT_DEFS += -DJOYSTICK_ENABLE
SRC += $(QUANTUM_DIR)/process_keycode/process_joystick.c
SRC += $(QUANTUM_DIR)/joystick.c
endif
ifeq ($(strip $(JOYSTICK_ENABLE)), analog)
OPT_DEFS += -DANALOG_JOYSTICK_ENABLE
SRC += analog.c
endif
ifeq ($(strip $(JOYSTICK_ENABLE)), digital)
OPT_DEFS += -DDIGITAL_JOYSTICK_ENABLE
ifeq ($(strip $(JOYSTICK_DRIVER)), analog)
OPT_DEFS += -DANALOG_JOYSTICK_ENABLE
SRC += analog.c
endif
ifeq ($(strip $(JOYSTICK_DRIVER)), digital)
OPT_DEFS += -DDIGITAL_JOYSTICK_ENABLE
endif
endif
DIGITIZER_ENABLE ?= no

View File

@@ -56,7 +56,7 @@
},
"bootloader": {
"type": "string",
"enum": ["atmel-dfu", "bootloadHID", "caterina", "halfkay", "kiibohd", "lufa-dfu", "lufa-ms", "micronucleus", "qmk-dfu", "qmk-hid", "stm32-dfu", "stm32duino", "unknown", "USBasp", "tinyuf2"],
"enum": ["atmel-dfu", "bootloadhid", "bootloadHID", "caterina", "halfkay", "kiibohd", "lufa-dfu", "lufa-ms", "micronucleus", "qmk-dfu", "qmk-hid", "stm32-dfu", "stm32duino", "unknown", "usbasploader", "USBasp", "tinyuf2"],
},
"bootloader_instructions": {
"type": "string",
@@ -118,7 +118,6 @@
"c_macro": {
"type": "boolean"
},
"key_count": {"$ref": "qmk.definitions.v1#/key_unit"},
"layout": {
"type": "array",
"items": {
@@ -136,7 +135,6 @@
"multipleOf": 1
}
},
"key_count": {"$ref": "qmk.definitions.v1#/key_unit"},
"r": {"$ref": "qmk.definitions.v1#/unsigned_decimal"},
"rx": {"$ref": "qmk.definitions.v1#/unsigned_decimal"},
"ry": {"$ref": "qmk.definitions.v1#/unsigned_decimal"},

View File

@@ -1,19 +1,5 @@
/*
Copyright %YEAR% %YOUR_NAME%
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/>.
*/
// Copyright %(YEAR)s %(YOUR_NAME)s (@%(USER_NAME)s)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
@@ -23,8 +9,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x0000
#define DEVICE_VER 0x0001
#define MANUFACTURER %YOUR_NAME%
#define PRODUCT %KEYBOARD%
#define MANUFACTURER %(USER_NAME)s
#define PRODUCT %(KEYBOARD)s
/* key matrix size */
#define MATRIX_ROWS 2

View File

@@ -1,20 +1,20 @@
# %KEYBOARD%
# %(KEYBOARD)s
![%KEYBOARD%](imgur.com image replace me!)
![%(KEYBOARD)s](imgur.com image replace me!)
*A short description of the keyboard/project*
* Keyboard Maintainer: [%YOUR_NAME%](https://github.com/yourusername)
* Keyboard Maintainer: [%(YOUR_NAME)s](https://github.com/%(USER_NAME)s)
* Hardware Supported: *The PCBs, controllers supported*
* Hardware Availability: *Links to where you can find this hardware*
Make example for this keyboard (after setting up your build environment):
make %KEYBOARD%:default
make %(KEYBOARD)s:default
Flashing example for this keyboard:
make %KEYBOARD%:default:flash
make %(KEYBOARD)s:default:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).

View File

@@ -18,5 +18,4 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
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

View File

@@ -0,0 +1,4 @@
// Copyright %(YEAR)s %(YOUR_NAME)s (@%(USER_NAME)s)
// SPDX-License-Identifier: GPL-2.0-or-later
#include "%(KEYBOARD)s.h"

View File

@@ -0,0 +1,22 @@
// Copyright %(YEAR)s %(YOUR_NAME)s (@%(USER_NAME)s)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include "quantum.h"
/* This is 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( \
k00, k01, k02, \
k10, k12 \
) { \
{ k00, k01, k02 }, \
{ k10, KC_NO, k12 } \
}

View File

@@ -1,9 +1,7 @@
{
"keyboard_name": "%KEYBOARD%",
"keyboard_name": "%(KEYBOARD)s",
"url": "",
"maintainer": "%YOUR_NAME%",
"width": 3,
"height": 2,
"maintainer": "%(USER_NAME)s",
"layouts": {
"LAYOUT": {
"layout": [

View File

@@ -1,18 +1,6 @@
/* Copyright %YEAR% %YOUR_NAME%
*
* 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/>.
*/
// Copyright %(YEAR)s %(YOUR_NAME)s (@%(USER_NAME)s)
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
// Defines names for use in layer keycodes and the keymap
@@ -21,12 +9,6 @@ enum layer_names {
_FN
};
// Defines the keycodes used by our macros in process_record_user
enum custom_keycodes {
QMKBEST = SAFE_RANGE,
QMKURL
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Base */
[_BASE] = LAYOUT(
@@ -34,29 +16,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TAB, KC_SPC
),
[_FN] = LAYOUT(
QMKBEST, QMKURL, _______,
_______, _______, _______,
RESET, XXXXXXX
)
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case QMKBEST:
if (record->event.pressed) {
// when keycode QMKBEST is pressed
SEND_STRING("QMK is the best thing ever!");
} else {
// when keycode QMKBEST is released
}
break;
case QMKURL:
if (record->event.pressed) {
// when keycode QMKURL is pressed
SEND_STRING("https://qmk.fm/\n");
} else {
// when keycode QMKURL is released
}
break;
}
return true;
}

View File

@@ -1 +1 @@
# The default keymap for %KEYBOARD%
# The default keymap for %(KEYBOARD)s

View File

@@ -1,19 +1,5 @@
/*
Copyright %YEAR% %YOUR_NAME%
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/>.
*/
// Copyright %(YEAR)s %(YOUR_NAME)s (@%(USER_NAME)s)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
@@ -23,8 +9,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x0000
#define DEVICE_VER 0x0001
#define MANUFACTURER %YOUR_NAME%
#define PRODUCT %KEYBOARD%
#define MANUFACTURER %(USER_NAME)s
#define PRODUCT %(KEYBOARD)s
/* key matrix size */
#define MATRIX_ROWS 8

View File

@@ -1,20 +1,20 @@
# %KEYBOARD%
# %(KEYBOARD)s
![%KEYBOARD%](imgur.com image replace me!)
![%(KEYBOARD)s](imgur.com image replace me!)
*A short description of the keyboard/project*
* Keyboard Maintainer: [%YOUR_NAME%](https://github.com/yourusername)
* Keyboard Maintainer: [%(YOUR_NAME)s](https://github.com/yourusername)
* Hardware Supported: *The PCBs, controllers supported*
* Hardware Availability: *Links to where you can find this hardware*
Make example for this keyboard (after setting up your build environment):
make %KEYBOARD%:default
make %(KEYBOARD)s:default
Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](https://docs.qmk.fm/#/flashing_bootloadhid))
make %KEYBOARD%:default:flash
make %(KEYBOARD)s:default:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).

View File

@@ -2,7 +2,7 @@
MCU = atmega32a
# Bootloader selection
BOOTLOADER = bootloadHID
BOOTLOADER = bootloadhid
# Build Options
# change yes to no to disable

View File

@@ -3,7 +3,7 @@
- [:cn: 中文](/zh-cn/)
- [:es: Español](/es/)
- [:fr: Français](/fr-fr/)
- [:he: עברית](/he-il/)
- [:israel: עברית](/he-il/)
- [:brazil: Português](/pt-br/)
- [:ru: Русский](/ru-ru/)
- [:jp: 日本語](/ja/)

View File

@@ -118,6 +118,20 @@ This command lets you configure the behavior of QMK. For the full `qmk config` d
qmk config [-ro] [config_token1] [config_token2] [...] [config_tokenN]
```
## `qmk cd`
This command opens a new shell in your `qmk_firmware` directory.
Note that if you are already somewhere within `QMK_HOME` (for example, the `keyboards/` folder), nothing will happen.
To exit out into the parent shell, simply type `exit`.
**Usage**:
```
qmk cd
```
## `qmk console`
This command lets you connect to keyboard consoles to get debugging messages. It only works if your keyboard firmware has been compiled with `CONSOLE_ENABLE=yes`.
@@ -373,6 +387,8 @@ qmk format-c -b branch_name
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.
This command runs `docsify serve` if `docsify-cli` is installed (which provides live reload), otherwise Python's builtin HTTP server module will be used.
**Usage**:
```

View File

@@ -18,7 +18,7 @@ If you put `qmk_firmware` into another location you will need to adjust this pat
If you want the tab completion available to all users of the system you can add a symlink to the `qmk_tab_complete.sh` script:
`ln -s ~/qmk_firmware/util/qmk_tab_complete.sh /etc/profile.d/qmk_tab_complete.sh`
ln -s ~/qmk_firmware/util/qmk_tab_complete.sh /etc/profile.d/qmk_tab_complete.sh
### System Wide Copy

View File

@@ -2,7 +2,7 @@
Most of our style follows PEP8 with some local modifications to make things less nit-picky.
* We target Python 3.6 for compatability with all supported platforms.
* We target Python 3.7 for compatability with all supported platforms.
* We indent using four (4) spaces (soft tabs)
* We encourage liberal use of comments
* Think of them as a story describing the feature

View File

@@ -397,13 +397,15 @@ However, this will automatically disable the legacy TMK Macros and Functions fea
* `qmk-dfu`
* `halfkay`
* `caterina`
* `bootloadHID`
* `USBasp`
* `bootloadhid`
* `usbasploader`
## Feature Options :id=feature-options
Use these to enable or disable building certain features. The more you have enabled the bigger your firmware will be, and you run the risk of building a firmware too large for your MCU.
* `MAGIC_ENABLE`
* MAGIC actions (BOOTMAGIC without the boot)
* `BOOTMAGIC_ENABLE`
* Virtual DIP switch configuration
* `MOUSEKEY_ENABLE`
@@ -418,6 +420,8 @@ Use these to enable or disable building certain features. The more you have enab
* Key combo feature
* `NKRO_ENABLE`
* USB N-Key Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
* `RING_BUFFERED_6KRO_REPORT_ENABLE`
* USB 6-Key Rollover - Instead of stopping any new input once 6 keys are pressed, the oldest key is released and the new key is pressed.
* `AUDIO_ENABLE`
* Enable the audio subsystem.
* `KEY_OVERRIDE_ENABLE`

View File

@@ -148,8 +148,8 @@ This is useful for setting up stuff that you may need elsewhere, but isn't hardw
* GPIO pin initialisation: `void matrix_init_pins(void)`
* This needs to perform the low-level initialisation of all row and column pins. By default this will initialise the input/output state of each of the GPIO pins listed in `MATRIX_ROW_PINS` and `MATRIX_COL_PINS`, based on whether or not the keyboard is set up for `ROW2COL`, `COL2ROW`, or `DIRECT_PINS`. Should the keyboard designer override this function, no initialisation of pin state will occur within QMK itself, instead deferring to the keyboard's override.
* `COL2ROW`-based row reads: `void matrix_read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)`
* `ROW2COL`-based column reads: `void matrix_read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)`
* `COL2ROW`-based row reads: `void matrix_read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)`
* `ROW2COL`-based column reads: `void matrix_read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)`
* `DIRECT_PINS`-based reads: `void matrix_read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)`
* These three functions need to perform the low-level retrieval of matrix state of relevant input pins, based on the matrix type. Only one of the functions should be implemented, if needed. By default this will iterate through `MATRIX_ROW_PINS` and `MATRIX_COL_PINS`, configuring the inputs and outputs based on whether or not the keyboard is set up for `ROW2COL`, `COL2ROW`, or `DIRECT_PINS`. Should the keyboard designer override this function, no manipulation of matrix GPIO pin state will occur within QMK itself, instead deferring to the keyboard's override.
@@ -214,11 +214,11 @@ This is controlled by two functions: `suspend_power_down_*` and `suspend_wakeup_
```c
void suspend_power_down_user(void) {
rgb_matrix_set_suspend_state(true);
// code will run multiple times while keyboard is suspended
}
void suspend_wakeup_init_user(void) {
rgb_matrix_set_suspend_state(false);
// code will run on keyboard wakeup
}
```

View File

@@ -68,31 +68,31 @@ This is a list of known bootloader devices and their USB vendor and product IDs,
The device name here is the name that appears in Zadig, and may not be what the Device Manager or QMK Toolbox displays.
|Bootloader |Device Name |VID/PID |Driver |
|-------------|------------------------------|--------------|-------|
|`atmel-dfu` |ATmega16u2 DFU |`03EB:2FEF` |libusb0|
|`atmel-dfu` |ATmega32U2 DFU |`03EB:2FF0` |libusb0|
|`atmel-dfu` |ATm16U4 DFU V1.0.2 |`03EB:2FF3` |libusb0|
|`atmel-dfu` |ATm32U4DFU |`03EB:2FF4` |libusb0|
|`atmel-dfu` |*none* (AT90USB64) |`03EB:2FF9` |libusb0|
|`atmel-dfu` |AT90USB128 DFU |`03EB:2FFB` |libusb0|
|`qmk-dfu` |(keyboard name) Bootloader |As `atmel-dfu`|libusb0|
|`halfkay` |*none* |`16C0:0478` |HidUsb |
|`caterina` |Pro Micro 3.3V |`1B4F:9203` |usbser |
|`caterina` |Pro Micro 5V |`1B4F:9205` |usbser |
|`caterina` |LilyPadUSB |`1B4F:9207` |usbser |
|`caterina` |Pololu A-Star 32U4 Bootloader |`1FFB:0101` |usbser |
|`caterina` |Arduino Leonardo |`2341:0036` |usbser |
|`caterina` |Arduino Micro |`2341:0037` |usbser |
|`caterina` |Adafruit Feather 32u4 |`239A:000C` |usbser |
|`caterina` |Adafruit ItsyBitsy 32u4 3V |`239A:000D` |usbser |
|`caterina` |Adafruit ItsyBitsy 32u4 5V |`239A:000E` |usbser |
|`caterina` |Arduino Leonardo |`2A03:0036` |usbser |
|`caterina` |Arduino Micro |`2A03:0037` |usbser |
|`bootloadHID`|HIDBoot |`16C0:05DF` |HidUsb |
|`USBasp` |USBasp |`16C0:05DC` |libusbK|
|`apm32-dfu` |APM32 DFU ISP Mode |`314B:0106` |WinUSB |
|`stm32-dfu` |STM32 BOOTLOADER |`0483:DF11` |WinUSB |
|`kiibohd` |Kiibohd DFU Bootloader |`1C11:B007` |WinUSB |
|`stm32duino` |Maple 003 |`1EAF:0003` |WinUSB |
|`qmk-hid` |(keyboard name) Bootloader |`03EB:2067` |HidUsb |
|Bootloader |Device Name |VID/PID |Driver |
|--------------|------------------------------|--------------|-------|
|`atmel-dfu` |ATmega16u2 DFU |`03EB:2FEF` |libusb0|
|`atmel-dfu` |ATmega32U2 DFU |`03EB:2FF0` |libusb0|
|`atmel-dfu` |ATm16U4 DFU V1.0.2 |`03EB:2FF3` |libusb0|
|`atmel-dfu` |ATm32U4DFU |`03EB:2FF4` |libusb0|
|`atmel-dfu` |*none* (AT90USB64) |`03EB:2FF9` |libusb0|
|`atmel-dfu` |AT90USB128 DFU |`03EB:2FFB` |libusb0|
|`qmk-dfu` |(keyboard name) Bootloader |As `atmel-dfu`|libusb0|
|`halfkay` |*none* |`16C0:0478` |HidUsb |
|`caterina` |Pro Micro 3.3V |`1B4F:9203` |usbser |
|`caterina` |Pro Micro 5V |`1B4F:9205` |usbser |
|`caterina` |LilyPadUSB |`1B4F:9207` |usbser |
|`caterina` |Pololu A-Star 32U4 Bootloader |`1FFB:0101` |usbser |
|`caterina` |Arduino Leonardo |`2341:0036` |usbser |
|`caterina` |Arduino Micro |`2341:0037` |usbser |
|`caterina` |Adafruit Feather 32u4 |`239A:000C` |usbser |
|`caterina` |Adafruit ItsyBitsy 32u4 3V |`239A:000D` |usbser |
|`caterina` |Adafruit ItsyBitsy 32u4 5V |`239A:000E` |usbser |
|`caterina` |Arduino Leonardo |`2A03:0036` |usbser |
|`caterina` |Arduino Micro |`2A03:0037` |usbser |
|`bootloadhid` |HIDBoot |`16C0:05DF` |HidUsb |
|`usbasploader`|USBasp |`16C0:05DC` |libusbK|
|`apm32-dfu` |APM32 DFU ISP Mode |`314B:0106` |WinUSB |
|`stm32-dfu` |STM32 BOOTLOADER |`0483:DF11` |WinUSB |
|`kiibohd` |Kiibohd DFU Bootloader |`1C11:B007` |WinUSB |
|`stm32duino` |Maple 003 |`1EAF:0003` |WinUSB |
|`qmk-hid` |(keyboard name) Bootloader |`03EB:2067` |HidUsb |

View File

@@ -5,7 +5,7 @@ This page covers questions people often have about keymaps. If you haven't you s
## What Keycodes Can I Use?
See [Keycodes](keycodes.md) for an index of keycodes available to you. These link to more extensive documentation when available.
Keycodes are actually defined in [common/keycode.h](https://github.com/qmk/qmk_firmware/blob/master/tmk_core/common/keycode.h).
Keycodes are actually defined in [quantum/keycode.h](https://github.com/qmk/qmk_firmware/blob/master/quantum/keycode.h).
## What Are the Default Keycodes?

View File

@@ -81,7 +81,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
tap_code(KC_UP);
}
}
return true;
return false;
}
```

View File

@@ -168,10 +168,16 @@ This mode sets continuous haptic feedback with the option to increase or decreas
The Haptic Exclusion is implemented as `__attribute__((weak)) bool get_haptic_enabled_key(uint16_t keycode, keyrecord_t *record)` in haptic.c. This allows a re-definition at the required level with the specific requirement / exclusion.
### NO_HAPTIC_MOD
With the entry of `#define NO_HAPTIC_MOD` in config.h, modifiers from Left Control to Right GUI will not trigger a feedback. This also includes modifiers in a Mod Tap configuration.
With the entry of `#define NO_HAPTIC_MOD` in config.h, the following keys will not trigger feedback:
* Usual modifier keys such as Control/Shift/Alt/Gui (For example `KC_LCTRL`)
* `MO()` momentary keys. See also [Layers](feature_layers.md).
* `LT()` layer tap keys, when held to activate a layer. However when tapped, and the key is quickly released, and sends a keycode, haptic feedback is still triggered.
* `TT()` layer tap toggle keys, when held to activate a layer. However when tapped `TAPPING_TOGGLE` times to permanently toggle the layer, on the last tap haptic feedback is still triggered.
* `MT()` mod tap keys, when held to keep a usual modifier key pressed. However when tapped, and the key is quickly released, and sends a keycode, haptic feedback is still triggered. See also [Mod-Tap](mod_tap.md).
### NO_HAPTIC_FN
With the entry of `#define NO_HAPTIC_FN` in config.h, layer keys will not rigger a feedback.
With the entry of `#define NO_HAPTIC_FN` in config.h, deprecated `fn_actions` type function keys will not trigger a feedback.
### NO_HAPTIC_ALPHA
With the entry of `#define NO_HAPTIC_ALPHA` in config.h, none of the alpha keys (A ... Z) will trigger a feedback.

View File

@@ -2,8 +2,6 @@
The keyboard can be made to be recognized as a joystick HID device by the operating system.
This is enabled by adding `JOYSTICK_ENABLE` to `rules.mk`. You can set this value to `analog`, `digital`, or `no`.
!> Joystick support is not currently available on V-USB devices.
The joystick feature provides two services:
@@ -18,7 +16,8 @@ or send gamepad reports based on values computed by the keyboard.
To use analog input you must first enable it in `rules.mk`:
```makefile
JOYSTICK_ENABLE = analog
JOYSTICK_ENABLE = yes
JOYSTICK_DRIVER = analog # or 'digital'
```
An analog device such as a potentiometer found on a gamepad's analog axes is based on a [voltage divider](https://en.wikipedia.org/wiki/Voltage_divider).

View File

@@ -103,7 +103,7 @@ const key_override_t **key_overrides = (const key_override_t *[]){
```
### Flexible macOS-friendly Grave Escape
The [Grave Escape feature](https://docs.qmk.fm/using-qmk/advanced-keycodes/feature_grave_esc) is limited in its configurability and has [bugs when used on macOS](https://docs.qmk.fm/using-qmk/advanced-keycodes/feature_grave_esc#caveats). Key overrides can be used to achieve a similar functionality as Grave Escape, but with more customization and without bugs on macOS.
The [Grave Escape feature](feature_grave_esc.md) is limited in its configurability and has [bugs when used on macOS](feature_grave_esc.md#caveats). Key overrides can be used to achieve a similar functionality as Grave Escape, but with more customization and without bugs on macOS.
```c
// Shift + esc = ~

View File

@@ -1,6 +1,6 @@
# LED Indicators
?> Currently, this feature is not supported for split keyboards
?> This feature requires additional configuration to work on both halves of a split keyboard see [Data sync options](feature_split_keyboard.md#data-sync-options)
QMK provides methods to read 5 of the LEDs defined in the HID spec:

View File

@@ -164,26 +164,26 @@ You can disable a single effect by defining `DISABLE_[EFFECT_NAME]` in your `con
|Define |Description |
|-------------------------------------------------------|-----------------------------------------------|
|`#define ENABLE_LED_MATRIX_ALPHAS_MODS` |Enables `LED_MATRIX_ALPHAS_MODS` |
|`#define ENABLE_LED_MATRIX_BREATHING` |Enables `LED_MATRIX_BREATHING` |
|`#define ENABLE_LED_MATRIX_BAND` |Enables `LED_MATRIX_BAND` |
|`#define ENABLE_LED_MATRIX_BAND_PINWHEEL` |Enables `LED_MATRIX_BAND_PINWHEEL` |
|`#define ENABLE_LED_MATRIX_BAND_SPIRAL` |Enables `LED_MATRIX_BAND_SPIRAL` |
|`#define ENABLE_LED_MATRIX_CYCLE_LEFT_RIGHT` |Enables `LED_MATRIX_CYCLE_LEFT_RIGHT` |
|`#define ENABLE_LED_MATRIX_CYCLE_UP_DOWN` |Enables `LED_MATRIX_CYCLE_UP_DOWN` |
|`#define ENABLE_LED_MATRIX_CYCLE_OUT_IN` |Enables `LED_MATRIX_CYCLE_OUT_IN` |
|`#define ENABLE_LED_MATRIX_DUAL_BEACON` |Enables `LED_MATRIX_DUAL_BEACON` |
|`#define ENABLE_LED_MATRIX_SOLID_REACTIVE_SIMPLE` |Enables `LED_MATRIX_SOLID_REACTIVE_SIMPLE` |
|`#define ENABLE_LED_MATRIX_SOLID_REACTIVE_WIDE` |Enables `LED_MATRIX_SOLID_REACTIVE_WIDE` |
|`#define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDE` |Enables `LED_MATRIX_SOLID_REACTIVE_MULTIWIDE` |
|`#define ENABLE_LED_MATRIX_SOLID_REACTIVE_CROSS` |Enables `LED_MATRIX_SOLID_REACTIVE_CROSS` |
|`#define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTICROSS` |Enables `LED_MATRIX_SOLID_REACTIVE_MULTICROSS`|
|`#define ENABLE_LED_MATRIX_SOLID_REACTIVE_NEXUS` |Enables `LED_MATRIX_SOLID_REACTIVE_NEXUS` |
|`#define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTINEXUS` |Enables `LED_MATRIX_SOLID_REACTIVE_MULTINEXUS`|
|`#define ENABLE_LED_MATRIX_SOLID_SPLASH` |Enables `LED_MATRIX_SOLID_SPLASH` |
|`#define ENABLE_LED_MATRIX_SOLID_MULTISPLASH` |Enables `LED_MATRIX_SOLID_MULTISPLASH` |
|`#define ENABLE_LED_MATRIX_WAVE_LEFT_RIGHT` |Enables `LED_MATRIX_WAVE_LEFT_RIGHT` |
|`#define ENABLE_LED_MATRIX_WAVE_UP_DOWN` |Enables `LED_MATRIX_WAVE_UP_DOWN` |
|`#define DISABLE_LED_MATRIX_ALPHAS_MODS` |Disables `LED_MATRIX_ALPHAS_MODS` |
|`#define DISABLE_LED_MATRIX_BREATHING` |Disables `LED_MATRIX_BREATHING` |
|`#define DISABLE_LED_MATRIX_BAND` |Disables `LED_MATRIX_BAND` |
|`#define DISABLE_LED_MATRIX_BAND_PINWHEEL` |Disables `LED_MATRIX_BAND_PINWHEEL` |
|`#define DISABLE_LED_MATRIX_BAND_SPIRAL` |Disables `LED_MATRIX_BAND_SPIRAL` |
|`#define DISABLE_LED_MATRIX_CYCLE_LEFT_RIGHT` |Disables `LED_MATRIX_CYCLE_LEFT_RIGHT` |
|`#define DISABLE_LED_MATRIX_CYCLE_UP_DOWN` |Disables `LED_MATRIX_CYCLE_UP_DOWN` |
|`#define DISABLE_LED_MATRIX_CYCLE_OUT_IN` |Disables `LED_MATRIX_CYCLE_OUT_IN` |
|`#define DISABLE_LED_MATRIX_DUAL_BEACON` |Disables `LED_MATRIX_DUAL_BEACON` |
|`#define DISABLE_LED_MATRIX_SOLID_REACTIVE_SIMPLE` |Disables `LED_MATRIX_SOLID_REACTIVE_SIMPLE` |
|`#define DISABLE_LED_MATRIX_SOLID_REACTIVE_WIDE` |Disables `LED_MATRIX_SOLID_REACTIVE_WIDE` |
|`#define DISABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDE` |Disables `LED_MATRIX_SOLID_REACTIVE_MULTIWIDE` |
|`#define DISABLE_LED_MATRIX_SOLID_REACTIVE_CROSS` |Disables `LED_MATRIX_SOLID_REACTIVE_CROSS` |
|`#define DISABLE_LED_MATRIX_SOLID_REACTIVE_MULTICROSS` |Disables `LED_MATRIX_SOLID_REACTIVE_MULTICROSS`|
|`#define DISABLE_LED_MATRIX_SOLID_REACTIVE_NEXUS` |Disables `LED_MATRIX_SOLID_REACTIVE_NEXUS` |
|`#define DISABLE_LED_MATRIX_SOLID_REACTIVE_MULTINEXUS` |Disables `LED_MATRIX_SOLID_REACTIVE_MULTINEXUS`|
|`#define DISABLE_LED_MATRIX_SOLID_SPLASH` |Disables `LED_MATRIX_SOLID_SPLASH` |
|`#define DISABLE_LED_MATRIX_SOLID_MULTISPLASH` |Disables `LED_MATRIX_SOLID_MULTISPLASH` |
|`#define DISABLE_LED_MATRIX_WAVE_LEFT_RIGHT` |Disables `LED_MATRIX_WAVE_LEFT_RIGHT` |
|`#define DISABLE_LED_MATRIX_WAVE_UP_DOWN` |Disables `LED_MATRIX_WAVE_UP_DOWN` |
## Custom LED Matrix Effects :id=custom-led-matrix-effects
@@ -244,14 +244,7 @@ static bool my_cool_effect2(effect_params_t* params) {
#endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS
```
For inspiration and examples, check out the built-in effects under `quantum/led_matrix_animations/`
For inspiration and examples, check out the built-in effects under `quantum/led_matrix/animations/`.
## Additional `config.h` Options :id=additional-configh-options

View File

@@ -18,7 +18,7 @@ Hardware configurations using Arm-based microcontrollers or different sizes of O
## Usage
To enable the OLED feature, there are three steps. First, when compiling your keyboard, you'll need to add the following to your `rules.mk`:
To enable the OLED feature, there are two steps. First, when compiling your keyboard, you'll need to add the following to your `rules.mk`:
```make
OLED_ENABLE = yes
@@ -146,6 +146,11 @@ void oled_task_user(void) {
## Basic Configuration
These configuration options should be placed in `config.h`. Example:
```c
#define OLED_BRIGHTNESS 128
```
|Define |Default |Description |
|---------------------------|-----------------|--------------------------------------------------------------------------------------------------------------------------|
|`OLED_DISPLAY_ADDRESS` |`0x3C` |The i2c address of the OLED Display |
@@ -356,6 +361,10 @@ bool oled_scroll_left(void);
// Returns true if the screen was not scrolling or stops scrolling
bool oled_scroll_off(void);
// Returns true if the oled is currently scrolling, false if it is
// not
bool is_oled_scrolling(void);
// Inverts the display
// Returns true if the screen was or is inverted
bool oled_invert(bool invert);

View File

@@ -448,46 +448,46 @@ You can disable a single effect by defining `DISABLE_[EFFECT_NAME]` in your `con
|Define |Description |
|-------------------------------------------------------|-----------------------------------------------|
|`#define ENABLE_RGB_MATRIX_ALPHAS_MODS` |Enables `RGB_MATRIX_ALPHAS_MODS` |
|`#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN` |Enables `RGB_MATRIX_GRADIENT_UP_DOWN` |
|`#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT` |Enables `MATRIX_GRADIENT_LEFT_RIGHT` |
|`#define ENABLE_RGB_MATRIX_BREATHING` |Enables `RGB_MATRIX_BREATHING` |
|`#define ENABLE_RGB_MATRIX_BAND_SAT` |Enables `RGB_MATRIX_BAND_SAT` |
|`#define ENABLE_RGB_MATRIX_BAND_VAL` |Enables `RGB_MATRIX_BAND_VAL` |
|`#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT` |Enables `RGB_MATRIX_BAND_PINWHEEL_SAT` |
|`#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL` |Enables `RGB_MATRIX_BAND_PINWHEEL_VAL` |
|`#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT` |Enables `RGB_MATRIX_BAND_SPIRAL_SAT` |
|`#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL` |Enables `RGB_MATRIX_BAND_SPIRAL_VAL` |
|`#define ENABLE_RGB_MATRIX_CYCLE_ALL` |Enables `RGB_MATRIX_CYCLE_ALL` |
|`#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT` |Enables `RGB_MATRIX_CYCLE_LEFT_RIGHT` |
|`#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN` |Enables `RGB_MATRIX_CYCLE_UP_DOWN` |
|`#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON` |Enables `RGB_MATRIX_RAINBOW_MOVING_CHEVRON` |
|`#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN` |Enables `RGB_MATRIX_CYCLE_OUT_IN` |
|`#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL` |Enables `RGB_MATRIX_CYCLE_OUT_IN_DUAL` |
|`#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL` |Enables `RGB_MATRIX_CYCLE_PINWHEEL` |
|`#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL` |Enables `RGB_MATRIX_CYCLE_SPIRAL` |
|`#define ENABLE_RGB_MATRIX_DUAL_BEACON` |Enables `RGB_MATRIX_DUAL_BEACON` |
|`#define ENABLE_RGB_MATRIX_RAINBOW_BEACON` |Enables `RGB_MATRIX_RAINBOW_BEACON` |
|`#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS` |Enables `RGB_MATRIX_RAINBOW_PINWHEELS` |
|`#define ENABLE_RGB_MATRIX_RAINDROPS` |Enables `RGB_MATRIX_RAINDROPS` |
|`#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS` |Enables `RGB_MATRIX_JELLYBEAN_RAINDROPS` |
|`#define ENABLE_RGB_MATRIX_HUE_BREATHING` |Enables `RGB_MATRIX_HUE_BREATHING` |
|`#define ENABLE_RGB_MATRIX_HUE_PENDULUM` |Enables `RGB_MATRIX_HUE_PENDULUM` |
|`#define ENABLE_RGB_MATRIX_HUE_WAVE ` |Enables `RGB_MATRIX_HUE_WAVE ` |
|`#define ENABLE_RGB_MATRIX_TYPING_HEATMAP` |Enables `RGB_MATRIX_TYPING_HEATMAP` |
|`#define ENABLE_RGB_MATRIX_DIGITAL_RAIN` |Enables `RGB_MATRIX_DIGITAL_RAIN` |
|`#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE` |Enables `RGB_MATRIX_SOLID_REACTIVE_SIMPLE` |
|`#define ENABLE_RGB_MATRIX_SOLID_REACTIVE` |Enables `RGB_MATRIX_SOLID_REACTIVE` |
|`#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE` |Enables `RGB_MATRIX_SOLID_REACTIVE_WIDE` |
|`#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE` |Enables `RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE` |
|`#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS` |Enables `RGB_MATRIX_SOLID_REACTIVE_CROSS` |
|`#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS` |Enables `RGB_MATRIX_SOLID_REACTIVE_MULTICROSS`|
|`#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS` |Enables `RGB_MATRIX_SOLID_REACTIVE_NEXUS` |
|`#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS` |Enables `RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS`|
|`#define ENABLE_RGB_MATRIX_SPLASH` |Enables `RGB_MATRIX_SPLASH` |
|`#define ENABLE_RGB_MATRIX_MULTISPLASH` |Enables `RGB_MATRIX_MULTISPLASH` |
|`#define ENABLE_RGB_MATRIX_SOLID_SPLASH` |Enables `RGB_MATRIX_SOLID_SPLASH` |
|`#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH` |Enables `RGB_MATRIX_SOLID_MULTISPLASH` |
|`#define DISABLE_RGB_MATRIX_ALPHAS_MODS` |Disables `RGB_MATRIX_ALPHAS_MODS` |
|`#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN` |Disables `RGB_MATRIX_GRADIENT_UP_DOWN` |
|`#define DISABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT` |Disables `MATRIX_GRADIENT_LEFT_RIGHT` |
|`#define DISABLE_RGB_MATRIX_BREATHING` |Disables `RGB_MATRIX_BREATHING` |
|`#define DISABLE_RGB_MATRIX_BAND_SAT` |Disables `RGB_MATRIX_BAND_SAT` |
|`#define DISABLE_RGB_MATRIX_BAND_VAL` |Disables `RGB_MATRIX_BAND_VAL` |
|`#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT` |Disables `RGB_MATRIX_BAND_PINWHEEL_SAT` |
|`#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL` |Disables `RGB_MATRIX_BAND_PINWHEEL_VAL` |
|`#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT` |Disables `RGB_MATRIX_BAND_SPIRAL_SAT` |
|`#define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL` |Disables `RGB_MATRIX_BAND_SPIRAL_VAL` |
|`#define DISABLE_RGB_MATRIX_CYCLE_ALL` |Disables `RGB_MATRIX_CYCLE_ALL` |
|`#define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT` |Disables `RGB_MATRIX_CYCLE_LEFT_RIGHT` |
|`#define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN` |Disables `RGB_MATRIX_CYCLE_UP_DOWN` |
|`#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON` |Disables `RGB_MATRIX_RAINBOW_MOVING_CHEVRON` |
|`#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN` |Disables `RGB_MATRIX_CYCLE_OUT_IN` |
|`#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL` |Disables `RGB_MATRIX_CYCLE_OUT_IN_DUAL` |
|`#define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL` |Disables `RGB_MATRIX_CYCLE_PINWHEEL` |
|`#define DISABLE_RGB_MATRIX_CYCLE_SPIRAL` |Disables `RGB_MATRIX_CYCLE_SPIRAL` |
|`#define DISABLE_RGB_MATRIX_DUAL_BEACON` |Disables `RGB_MATRIX_DUAL_BEACON` |
|`#define DISABLE_RGB_MATRIX_RAINBOW_BEACON` |Disables `RGB_MATRIX_RAINBOW_BEACON` |
|`#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS` |Disables `RGB_MATRIX_RAINBOW_PINWHEELS` |
|`#define DISABLE_RGB_MATRIX_RAINDROPS` |Disables `RGB_MATRIX_RAINDROPS` |
|`#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS` |Disables `RGB_MATRIX_JELLYBEAN_RAINDROPS` |
|`#define DISABLE_RGB_MATRIX_HUE_BREATHING` |Disables `RGB_MATRIX_HUE_BREATHING` |
|`#define DISABLE_RGB_MATRIX_HUE_PENDULUM` |Disables `RGB_MATRIX_HUE_PENDULUM` |
|`#define DISABLE_RGB_MATRIX_HUE_WAVE ` |Disables `RGB_MATRIX_HUE_WAVE ` |
|`#define DISABLE_RGB_MATRIX_TYPING_HEATMAP` |Disables `RGB_MATRIX_TYPING_HEATMAP` |
|`#define DISABLE_RGB_MATRIX_DIGITAL_RAIN` |Disables `RGB_MATRIX_DIGITAL_RAIN` |
|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE` |Disables `RGB_MATRIX_SOLID_REACTIVE_SIMPLE` |
|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE` |Disables `RGB_MATRIX_SOLID_REACTIVE` |
|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE` |Disables `RGB_MATRIX_SOLID_REACTIVE_WIDE` |
|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE` |Disables `RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE` |
|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS` |Disables `RGB_MATRIX_SOLID_REACTIVE_CROSS` |
|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS` |Disables `RGB_MATRIX_SOLID_REACTIVE_MULTICROSS`|
|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS` |Disables `RGB_MATRIX_SOLID_REACTIVE_NEXUS` |
|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS` |Disables `RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS`|
|`#define DISABLE_RGB_MATRIX_SPLASH` |Disables `RGB_MATRIX_SPLASH` |
|`#define DISABLE_RGB_MATRIX_MULTISPLASH` |Disables `RGB_MATRIX_MULTISPLASH` |
|`#define DISABLE_RGB_MATRIX_SOLID_SPLASH` |Disables `RGB_MATRIX_SOLID_SPLASH` |
|`#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH` |Disables `RGB_MATRIX_SOLID_MULTISPLASH` |
### RGB Matrix Effect Typing Heatmap :id=rgb-matrix-effect-typing-heatmap
@@ -562,7 +562,7 @@ static bool my_cool_effect2(effect_params_t* params) {
#endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS
```
For inspiration and examples, check out the built-in effects under `quantum/rgb_matrix_animations/`
For inspiration and examples, check out the built-in effects under `quantum/rgb_matrix/animations/`.
## Colors :id=colors
@@ -780,3 +780,13 @@ void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
}
}
```
#### Indicators without RGB Matrix Effect
If you want to just use RGB indicators without RGB matrix effect, it is not possible to disable the latter because toggling RGB off will disable everything. You can workaround it with solid effect and colors off using this init function:
```c
void keyboard_post_init_user(void) {
rgb_matrix_mode_noeeprom(RGB_MATRIX_SOLID_COLOR);
rgb_matrix_sethsv_noeeprom(HSV_OFF);
}
```

View File

@@ -219,47 +219,52 @@ One communication attempt will be allowed everytime this amount of time has pass
Set to 0 to disable this throttling of communications while disconnected. This can save you a couple of bytes of firmware size.
### Data Sync Options
The following sync options add overhead to the split communication protocol and may negatively impact the matrix scan speed when enabled. These can be enabled by adding the chosen option(s) to your `config.h` file.
```c
#define SPLIT_TRANSPORT_MIRROR
```
This mirrors the master side matrix to the slave side for features that react or require knowledge of master side key presses on the slave side. The purpose of this feature is to support cosmetic use of key events (e.g. RGB reacting to keypresses). This adds overhead to the split communication protocol and may negatively impact the matrix scan speed when enabled.
This mirrors the master side matrix to the slave side for features that react or require knowledge of master side key presses on the slave side. The purpose of this feature is to support cosmetic use of key events (e.g. RGB reacting to keypresses).
```c
#define SPLIT_LAYER_STATE_ENABLE
```
This enables syncing of the layer state between both halves of the split keyboard. The main purpose of this feature is to enable support for use of things like OLED display of the currently active layer. This adds overhead to the split communication protocol and may negatively impact the matrix scan speed when enabled.
This enables syncing of the layer state between both halves of the split keyboard. The main purpose of this feature is to enable support for use of things like OLED display of the currently active layer.
```c
#define SPLIT_LED_STATE_ENABLE
```
This enables syncing of the Host LED status (caps lock, num lock, etc) between both halves of the split keyboard. The main purpose of this feature is to enable support for use of things like OLED display of the Host LED status. This adds overhead to the split communication protocol and may negatively impact the matrix scan speed when enabled.
This enables syncing of the Host LED status (caps lock, num lock, etc) between both halves of the split keyboard. The main purpose of this feature is to enable support for use of things like OLED display of the Host LED status.
```c
#define SPLIT_MODS_ENABLE
```
This enables transmitting modifier state (normal, weak and oneshot) to the non primary side of the split keyboard. The purpose of this feature is to support cosmetic use of modifer state (e.g. displaying status on an OLED screen). This adds overhead to the split communication protocol and may negatively impact the matrix scan speed when enabled.
This enables transmitting modifier state (normal, weak and oneshot) to the non primary side of the split keyboard. The purpose of this feature is to support cosmetic use of modifer state (e.g. displaying status on an OLED screen).
```c
#define SPLIT_WPM_ENABLE
```
This enables transmitting the current WPM to the slave side of the split keyboard. The purpose of this feature is to support cosmetic use of WPM (e.g. displaying the current value on an OLED screen). This adds overhead to the split communication protocol and may negatively impact the matrix scan speed when enabled.
This enables transmitting the current WPM to the slave side of the split keyboard. The purpose of this feature is to support cosmetic use of WPM (e.g. displaying the current value on an OLED screen).
```c
#define SPLIT_OLED_ENABLE
```
This enables transmitting the current OLED on/off status to the slave side of the split keyboard. The purpose of this feature is to support state (on/off state only) syncing. This adds overhead to the split communication protocol and may negatively impact the matrix scan speed when enabled.
This enables transmitting the current OLED on/off status to the slave side of the split keyboard. The purpose of this feature is to support state (on/off state only) syncing.
```c
#define SPLIT_ST7565_ENABLE
```
This enables transmitting the current ST7565 on/off status to the slave side of the split keyboard. The purpose of this feature is to support state (on/off state only) syncing. This adds overhead to the split communication protocol and may negatively impact the matrix scan speed when enabled.
This enables transmitting the current ST7565 on/off status to the slave side of the split keyboard. The purpose of this feature is to support state (on/off state only) syncing.
### Custom data sync between sides :id=custom-data-sync

View File

@@ -40,8 +40,8 @@ MOUSEKEY_ENABLE = no
In your keymap create a new layer for Plover. You will need to include `keymap_steno.h`. See `planck/keymaps/steno/keymap.c` for an example. Remember to create a key to switch to the layer as well as a key for exiting the layer. If you would like to switch modes on the fly you can use the keycodes `QK_STENO_BOLT` and `QK_STENO_GEMINI`. If you only want to use one of the protocols you may set it up in your initialization function:
```c
void matrix_init_user() {
steno_set_mode(STENO_MODE_GEMINI); // or STENO_MODE_BOLT
void eeconfig_init_user() {
steno_set_mode(STENO_MODE_GEMINI); // or STENO_MODE_BOLT
}
```
@@ -129,7 +129,8 @@ As defined in `keymap_steno.h`.
|`STN_RES2`||(GeminiPR only)|
|`STN_PWR`||(GeminiPR only)|
If you do not want to hit two keys with one finger combined keycodes can be used. These are also defined in `keymap_steno.h`, and causes both keys to be reported as pressed or released. To use these keycodes define `STENO_COMBINEDMAP` in your `config.h` file
If you do not want to hit two keys with one finger combined keycodes can be used. These are also defined in `keymap_steno.h`, and causes both keys to be reported as pressed or released. To use these keycodes define `STENO_COMBINEDMAP` in your `config.h` file.
|Combined key | Key1 | Key 2 |
|---------------|--------|----------|
|STN_S3 | STN_S1 | STN_S2 |

View File

@@ -29,7 +29,7 @@ After this, you'll want to use the `tap_dance_actions` array to specify what act
* `ACTION_TAP_DANCE_FN(fn)`: Calls the specified function - defined in the user keymap - with the final tap count of the tap dance action.
* `ACTION_TAP_DANCE_FN_ADVANCED(on_each_tap_fn, on_dance_finished_fn, on_dance_reset_fn)`: Calls the first specified function - defined in the user keymap - on every tap, the second function when the dance action finishes (like the previous option), and the last function when the tap dance action resets.
* ~~`ACTION_TAP_DANCE_FN_ADVANCED_TIME(on_each_tap_fn, on_dance_finished_fn, on_dance_reset_fn, tap_specific_tapping_term)`~~: This functions identically to the `ACTION_TAP_DANCE_FN_ADVANCED` function, but uses a custom tapping term for it, instead of the predefined `TAPPING_TERM`.
* This is deprecated in favor of the Per Key Tapping Term functionality, as outlined [here](custom_quantum_functions.md#Custom_Tapping_Term). You'd want to check for the specific `TD()` macro that you want to use (such as `TD(TD_ESC_CAPS)`) instead of using this specific Tap Dance function.
* This is deprecated in favor of the Per Key Tapping Term functionality, as outlined [here](tap_hold.md#tapping-term). You'd want to check for the specific `TD()` macro that you want to use (such as `TD(TD_ESC_CAPS)`) instead of using this specific Tap Dance function.
The first option is enough for a lot of cases, that just want dual roles. For example, `ACTION_TAP_DANCE_DOUBLE(KC_SPC, KC_ENT)` will result in `Space` being sent on single-tap, `Enter` otherwise.
@@ -393,6 +393,9 @@ void altlp_finished(qk_tap_dance_state_t *state, void *user_data) {
case TD_DOUBLE_SINGLE_TAP: // Allow nesting of 2 parens `((` within tapping term
tap_code16(KC_LPRN);
register_code16(KC_LPRN);
break;
default:
break;
}
}
@@ -406,6 +409,9 @@ void altlp_reset(qk_tap_dance_state_t *state, void *user_data) {
break;
case TD_DOUBLE_SINGLE_TAP:
unregister_code16(KC_LPRN);
break;
default:
break;
}
}

View File

@@ -13,7 +13,7 @@ EXTRAKEY_ENABLE = yes
VELOCIKEY_ENABLE = yes
```
Then, while using your keyboard, you need to also turn it on with the VLK_TOG keycode, which toggles the feature on and off.
Then, while using your keyboard, you need to also turn it on with the `VLK_TOG` keycode, which toggles the feature on and off.
The following light effects will all be controlled by Velocikey when it is enabled:
- RGB Breathing

View File

@@ -127,7 +127,7 @@ To ensure compatibility with the USBasploader bootloader, make sure this block i
```make
# Bootloader selection
BOOTLOADER = USBasp
BOOTLOADER = usbasploader
```
Compatible flashers:
@@ -153,13 +153,13 @@ To ensure compatibility with the bootloadHID bootloader, make sure this block is
```make
# Bootloader selection
BOOTLOADER = bootloadHID
BOOTLOADER = bootloadhid
```
Compatible flashers:
* [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (recommended GUI)
* [bootloadHID CLI](https://www.obdev.at/products/vusb/bootloadhid.html) / `:bootloadHID` target in QMK (recommended command line)
* [bootloadHID CLI](https://www.obdev.at/products/vusb/bootloadhid.html) / `:bootloadhid` target in QMK (recommended command line)
* [HIDBootFlash](http://vusb.wikidot.com/project:hidbootflash)
Flashing sequence:

View File

@@ -15,9 +15,9 @@ General flashing sequence:
?> Using the QMK installation script, detailed [here](newbs_getting_started.md), the required bootloadHID tools should be automatically installed.
To flash via the command line, use the target `:bootloadHID` by executing the following command:
To flash via the command line, use the target `:bootloadhid` by executing the following command:
make <keyboard>:<keymap>:bootloadHID
make <keyboard>:<keymap>:bootloadhid
## GUI Flashing

View File

@@ -14,7 +14,7 @@ The full syntax of the `make` command is `<keyboard_folder>:<keymap>:<target>`,
The `<target>` means the following
* If no target is given, then it's the same as `all` below
* `all` compiles as many keyboard/revision/keymap combinations as specified. For example, `make planck/rev4:default` will generate a single .hex, while `make planck/rev4:all` will generate a hex for every keymap available to the planck.
* `flash`, `dfu`, `teensy`, `avrdude`, `dfu-util`, or `bootloadHID` compile and upload the firmware to the keyboard. If the compilation fails, then nothing will be uploaded. The programmer to use depends on the keyboard. For most keyboards it's `dfu`, but for ChibiOS keyboards you should use `dfu-util`, and `teensy` for standard Teensys. To find out which command you should use for your keyboard, check the keyboard specific readme.
* `flash`, `dfu`, `teensy`, `avrdude`, `dfu-util`, or `bootloadhid` compile and upload the firmware to the keyboard. If the compilation fails, then nothing will be uploaded. The programmer to use depends on the keyboard. For most keyboards it's `dfu`, but for ChibiOS keyboards you should use `dfu-util`, and `teensy` for standard Teensys. To find out which command you should use for your keyboard, check the keyboard specific readme.
Visit the [Flashing Firmware](flashing.md) guide for more details of the available bootloaders.
* **Note**: some operating systems need privileged access for these commands to work. This means that you may need to setup [`udev rules`](faq_build.md#linux-udev-rules) to access these without root access, or to run the command with root access (`sudo make planck/rev4:default:flash`).
* `clean`, cleans the build output folders to make sure that everything is built from scratch. Run this before normal compilation if you have some unexplainable problems.

View File

@@ -24,7 +24,7 @@ The "easy" way to flash the firmware is using a tool from your host OS:
If you want to program via the command line you can uncomment the ['modifyvm'] lines in the Vagrantfile to enable the USB passthrough into Linux and then program using the command line tools like dfu-util/dfu-programmer or you can install the Teensy CLI version.
## Vagrantfile Overview
The development environment is configured to run the QMK Docker image, `qmkfm/base_container`. This not only ensures predictability between systems, it also mirrors the CI environment.
The development environment is configured to run the QMK Docker image, `qmkfm/qmk_cli`. This not only ensures predictability between systems, it also mirrors the CI environment.
## FAQ

View File

@@ -4,7 +4,7 @@ QMK has a GPIO control abstraction layer which is microcontroller agnostic. This
## Functions :id=functions
The following functions can provide basic control of GPIOs and are found in `quantum/quantum.h`.
The following functions provide basic control of GPIOs and are found in `tmk_core/common/<platform>/gpio.h`.
|Function |Description | Old AVR Examples | Old ChibiOS/ARM Examples |
|------------------------|--------------------------------------------------|-------------------------------------------------|-------------------------------------------------|

View File

@@ -1,263 +1,242 @@
# ISP Flashing Guide
ISP flashing (also known as ICSP flashing) is the process of programming a microcontroller directly. This allows you to replace the bootloader, or change the "fuses" on the controller, which control a number of hardware- and software-related functions, such as the speed of the controller, how it boots, and other options.
In order to flash a microcontroller over USB, it needs something called a bootloader. This bootloader lives in a specific section of the flash memory, and allows you to load the actual application firmware (in this case, QMK) into the rest of the flash.
The main use of ISP flashing for QMK is flashing or replacing the bootloader on your AVR-based controller (Pro Micros, or V-USB chips).
However, it can sometimes happen that the bootloader becomes corrupted and needs reflashing, or you may want to change the bootloader to another one. It's not possible to do this with the existing bootloader, because, of course, it is already running, and cannot overwrite itself. Instead, you will need to ISP flash the microcontroller.
?> This is only for programming AVR based boards, such as the Pro Micro or other ATmega controllers. It is not for Arm controllers, such as the Proton C.
There are several different kinds of bootloaders available for AVR microcontrollers. Most STM32 ARM-based microcontrollers already have a USB-capable bootloader in ROM, so generally do not need to be ISP flashed.
## Dealing with Corrupted Bootloaders
## Hardware
If you're having trouble flashing/erasing your board, and running into cryptic error messages like any of the following for a DFU based controller:
One of the following devices is required to perform the ISP flashing. The product links are to the official versions, however you can certainly source them elsewhere.
libusb: warning [darwin_transfer_status] transfer error: timed out
dfu.c:844: -ETIMEDOUT: Transfer timed out, NAK 0xffffffc4 (-60)
atmel.c:1627: atmel_flash: flash data dfu_download failed.
atmel.c:1629: Expected message length of 1072, got -60.
atmel.c:1434: Error flashing the block: err -2.
ERROR
Memory write error, use debug for more info.
commands.c:360: Error writing memory data. (err -4)
You'll also need some jumper wires to connect the ISP flasher and the target board. Some boards have an ISP header with the necessary pins broken out. If not, then you will need to temporarily solder the wires to the PCB -- usually to switch pins or directly to the MCU.
The wiring is fairly straightforward; for the most part, you'll be connecting like to like. Refer to the target MCU's datasheet for the exact `RESET`, `SCLK`, `MOSI` and `MISO` pins.
dfu.c:844: -EPIPE: a) Babble detect or b) Endpoint stalled 0xffffffe0 (-32)
Device is write protected.
dfu.c:252: dfu_clear_status( 0x7fff4fc2ea80 )
atmel.c:1434: Error flashing the block: err -2.
ERROR
Memory write error, use debug for more info.
commands.c:360: Error writing memory data. (err -4)
### Pro Micro as ISP
Or, if you see this sort of message for a Pro Micro based controller:
[SparkFun Pro Micro](https://www.sparkfun.com/products/12640)
avrdude: butterfly_recv(): programmer is not responding
avrdude: butterfly_recv(): programmer is not responding
avrdude: verification error, first mismatch at byte 0x002a
0x2b != 0x75
avrdude: verification error; content mismatch
avrdude: verification error; content mismatch
To use a 5V/16MHz Pro Micro as an ISP flashing tool, you will first need to load a [special firmware](https://github.com/qmk/qmk_firmware/blob/master/util/pro_micro_ISP_B6_10.hex) onto it that emulates a hardware ISP flasher.
**AVRDUDE Programmer**: `avrisp`
**AVRDUDE Port**: Serial
You're likely going to need to ISP flash your board/device to get it working again.
#### Wiring
## Hardware Needed
|Pro Micro |Keyboard|
|-----------|--------|
|`VCC` |`VCC` |
|`GND` |`GND` |
|`10` (`B6`)|`RESET` |
|`15` (`B1`)|`SCLK` |
|`16` (`B2`)|`MOSI` |
|`14` (`B3`)|`MISO` |
You'll need one of the following to actually perform the ISP flashing (followed by the protocol they use):
!> Note that the `10` pin on the Pro Micro should be wired to the `RESET` pin on the keyboard's controller. ***DO NOT*** connect the `RESET` pin on the Pro Micro to the `RESET` on the keyboard.
* [SparkFun PocketAVR](https://www.sparkfun.com/products/9825) - (USB Tiny)
* [USBtinyISP AVR Programmer Kit](https://www.adafruit.com/product/46) - (USB Tiny)
* [USBasp](https://www.fischl.de/usbasp/) - (usbasp)
* [Teensy 2.0](https://www.pjrc.com/store/teensy.html) - (avrisp)
* [Pro Micro](https://www.sparkfun.com/products/12640) - (avrisp)
* [Bus Pirate](https://www.adafruit.com/product/237) - (buspirate)
### Teensy 2.0 as ISP
There are other devices that can be used to ISP flash, but these are the main ones. Also, all product links are to the official versions. You can source them elsewhere.
[PJRC Teensy 2.0](https://www.pjrc.com/store/teensy.html)
You'll also need something to wire your "ISP Programmer" to the device that you're programming. Some PCBs may have ISP headers that you can use directly, but this often isn't the case, so you'll likely need to solder to the controller itself or to different switches or other components.
To use a Teensy 2.0 as an ISP flashing tool, you will first need to load a [special firmware](https://github.com/qmk/qmk_firmware/blob/master/util/teensy_2.0_ISP_B0.hex) onto it that emulates a hardware ISP flasher.
### The ISP Firmware
**AVRDUDE Programmer**: `avrisp`
**AVRDUDE Port**: Serial
The Teensy and Pro Micro controllers will need you to flash the ISP firmware to the controllers before you can use them as an ISP programmer. The rest of the hardware should come preprogrammed. So, for these controllers, download the correct hex file, and flash it first.
#### Wiring
* Teensy 2.0: [`util/teensy_2.0_ISP_B0.hex`](https://github.com/qmk/qmk_firmware/blob/master/util/teensy_2.0_ISP_B0.hex) (`B0`)
* Pro Micro: [`util/pro_micro_ISP_B6_10.hex`](https://github.com/qmk/qmk_firmware/blob/master/util/pro_micro_ISP_B6_10.hex) (`10/B6`)
|Teensy|Keyboard|
|------|--------|
|`VCC` |`VCC` |
|`GND` |`GND` |
|`B0` |`RESET` |
|`B1` |`SCLK` |
|`B2` |`MOSI` |
|`B3` |`MISO` |
Once you've flashed your controller, you won't need this hex file anymore.
!> Note that the `B0` pin on the Teensy should be wired to the `RESET` pin on the keyboard's controller. ***DO NOT*** connect the `RESET` pin on the Teensy to the `RESET` on the keyboard.
## Software Needed
### SparkFun PocketAVR / USBtinyISP / USBasp
The QMK Toolbox can be used for most (all) of this.
[SparkFun PocketAVR](https://www.sparkfun.com/products/9825)
[Adafruit USBtinyISP](https://www.adafruit.com/product/46)
[Thomas Fischl's USBasp](https://www.fischl.de/usbasp/)
However, you can grab the [Teensy Loader](https://www.pjrc.com/teensy/loader.html) to flash your Teensy 2.0 board, if you are using that. Or you can use `avrdude` (installed as part of `qmk_install.sh`), or [AVRDUDESS](https://blog.zakkemble.net/avrdudess-a-gui-for-avrdude/) (for Windows) to flash the Pro Micro, and the ISP flashing.
**AVRDUDE Programmer**: `usbtiny` / `usbasp`
**AVRDUDE Port**: `usb`
#### Wiring
## Wiring
|ISP |Keyboard|
|---------|--------|
|`VCC` |`VCC` |
|`GND` |`GND` |
|`RST` |`RESET` |
|`SCLK` |`SCLK` |
|`MOSI` |`MOSI` |
|`MISO` |`MISO` |
This is pretty straight-forward - we'll be connecting like-things to like-things in the following manner.
### SparkFun Pocket AVR
### Bus Pirate
PocketAVR RST <-> Keyboard RESET
PocketAVR SCLK <-> Keyboard B1 (SCLK)
PocketAVR MOSI <-> Keyboard B2 (MOSI)
PocketAVR MISO <-> Keyboard B3 (MISO)
PocketAVR VCC <-> Keyboard VCC
PocketAVR GND <-> Keyboard GND
[Adafruit Bus Pirate](https://www.adafruit.com/product/237)
### USBasp
!> The 5-pin "ICSP" header is for ISP flashing the PIC microcontroller of the Bus Pirate. Connect your target board to the 10-pin header opposite the USB connector instead.
USBasp RST <-> Keyboard RESET
USBasp SCLK <-> Keyboard B1 (SCLK)
USBasp MOSI <-> Keyboard B2 (MOSI)
USBasp MISO <-> Keyboard B3 (MISO)
USBasp VCC <-> Keyboard VCC
USBasp GND <-> Keyboard GND
**AVRDUDE Programmer**: `buspirate`
**AVRDUDE Port**: Serial
### Teensy 2.0
#### Wiring
Teensy B0 <-> Keyboard RESET
Teensy B1 <-> Keyboard B1 (SCLK)
Teensy B2 <-> Keyboard B2 (MOSI)
Teensy B3 <-> Keyboard B3 (MISO)
Teensy VCC <-> Keyboard VCC
Teensy GND <-> Keyboard GND
!> Note that the B0 pin on the Teensy is wired to the RESET/RST pin on the keyboard's controller. ***DO NOT*** wire the RESET pin on the Teensy to the RESET on the keyboard.
### Pro Micro
Pro Micro 10 (B6) <-> Keyboard RESET
Pro Micro 15 (B1) <-> Keyboard B1 (SCLK)
Pro Micro 16 (B2) <-> Keyboard B2 (MOSI)
Pro Micro 14 (B3) <-> Keyboard B3 (MISO)
Pro Micro VCC <-> Keyboard VCC
Pro Micro GND <-> Keyboard GND
!> Note that the 10/B6 pin on the Pro Micro is wired to the RESET/RST pin on the keyboard's controller. ***DO NOT*** wire the RESET pin on the Pro Micro to the RESET on the keyboard.
## Flashing Your Keyboard
After you have your ISP programmer set up, and wired to your keyboard, it's time to flash your keyboard.
### The Bootloader File
The simplest and quickest way to get things back to normal is to flash only a bootloader to the keyboard. Once this is done, you can connect the keyboard normally and flash the keyboard like you normally would.
You can find the stock bootloaders in the [`util/` folder](https://github.com/qmk/qmk_firmware/tree/master/util). Be sure to flash the correct bootloader for your chip:
* **Atmel DFU**
* [ATmega16U4](https://github.com/qmk/qmk_firmware/blob/master/util/bootloader_atmega16u4_1.0.1.hex)
* [ATmega32U4](https://github.com/qmk/qmk_firmware/blob/master/util/bootloader_atmega32u4_1.0.0.hex)
* [AT90USB64](https://github.com/qmk/qmk_firmware/blob/master/util/bootloader_at90usb64_1.0.0.hex)
* [AT90USB128](https://github.com/qmk/qmk_firmware/blob/master/util/bootloader_at90usb128_1.0.1.hex)
* **Caterina**
* [Pro Micro (5V/16MHz)](https://github.com/sparkfun/Arduino_Boards/blob/master/sparkfun/avr/bootloaders/caterina/Caterina-promicro16.hex)
* [Pro Micro (3.3V/8MHz)](https://github.com/sparkfun/Arduino_Boards/blob/master/sparkfun/avr/bootloaders/caterina/Caterina-promicro8.hex)
* **BootloadHID (PS2AVRGB)**
* [ATmega32A](https://github.com/qmk/qmk_firmware/blob/master/util/bootloader_ps2avrgb_bootloadhid_1.0.1.hex)
If you're not sure what your board uses, look in the `rules.mk` file for the keyboard in QMK. The `MCU` and `BOOTLOADER` lines will have the value you need. It may differ between different versions of the board.
### Production Techniques
If you'd like to flash both the bootloader **and** the regular firmware at the same time, there are two options to do so. Manually, or with the `:production` target when compiling.
To do this manually:
1. Open the original firmware .hex file in a text editor
2. Remove the last line (which should be `:00000001FF` - this is an EOF message)
3. Copy the entire bootloader's contents onto a new line (with no empty lines between) and paste it at the end of the original file
4. Save it as a new file by naming it `<keyboard>_<keymap>_production.hex`
?> It's possible to use other bootloaders here in the same way, but __you need a bootloader__, otherwise you'll have to use ISP again to write new firmware to your keyboard.
#### Create QMK DFU Bootloader and Production images
You can create the firmware, the QMK DFU Bootloader and the production firmware images for the board using the `:production` target when compiling. Once this is done, you'll see three files:
* `<keyboard>_<keymap>.hex`
* `<keyboard>_<keymap>_bootloader.hex`
* `<keyboard>_<keymap>_production.hex`
The QMK DFU bootloader has only really been tested on `atmega32u4` controllers (such as the AVR based Planck boards, and the Pro Micro), and hasn't been tested on other controllers. However, it will definitely not work on V-USB controllers, such as the `atmega32a` or `atmega328p`.
You can flash either the bootloader or the production firmware file. The production firmware file will take a lot longer to flash, since it's flashing a lot more data.
?> Note: You should stay with the same bootloader. If you're using DFU already, switching to QMK DFU is fine. But flashing QMK DFU onto a Pro Micro, for instance, has additional steps needed.
## Flashing Your Bootloader/Production File
Make sure your keyboard is unplugged from any device, and plug in your ISP Programmer.
If you want to change bootloader types, You'll need to use the command line.
### QMK Toolbox
1. `AVRISP device connected` or `USB Tiny device connected` will show up in yellow
2. Select the correct bootloader/production .hex file with the `Open` dialog (spaces can't be in the path)
3. Be sure the correct `Microcontroller` option for the keyboard you're flashing (not the ISP programmer) is selected
4. Hit `Flash`
5. Wait, as nothing will output for a while, especially with production files
If the verification and fuse checks are ok, you're done! Your board may restart automatically, otherwise, unplug your Teensy and plug in your keyboard - you can leave your Teensy wired to your keyboard while testing things, but it's recommended that you desolder it/remove the wiring once you're sure everything works.
### Command Line
Open a terminal (`cmd` on Windows, for instance) and navigate to your where your modified .hex file is. We'll pretend this file is called `main.hex`, and that your Teensy 2.0 is on the `COM3` port - if you're unsure, you can open your Device Manager, and look for `Ports > USB Serial Device`. Use that COM port here. You can confirm it's the right port with:
avrdude -c avrisp -P COM3 -p atmega32u4
and you should get something like the following output:
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.02s
avrdude: Device signature = 0x1e9587
avrdude: safemode: Fuses OK
avrdude done. Thank you.
Since our keyboard uses an `atmega32u4` (common), that is the chip we'll specify. This is the full command:
avrdude -c avrisp -P COM3 -p atmega32u4 -U flash:w:main.hex:i
If your board uses an `atmega32a` (e.g. on a jj40), the command is this (the extra code at the end sets the fuses correctly):
avrdude -c avrisp -P COM3 -p atmega32 -U flash:w:main.hex:i -U hfuse:w:0xD0:m -U lfuse:w:0x0F:m
You should see a couple of progress bars, then you should see:
avrdude: verifying ...
avrdude: 32768 bytes of flash verified
avrdude: safemode: Fuses OK
avrdude done. Thank you.
Which means everything should be ok! Your board may restart automatically, otherwise, unplug your Teensy and plug in your keyboard - you can leave your Teensy wired to your keyboard while testing things, but it's recommended that you desolder it/remove the wiring once you're sure everything works.
If you're using a SparkFun PocketAVR Programmer, or another USB Tiny based ISP programmer, you will want to use something like this:
avrdude -c usbtiny -P usb -p atmega32u4
#### Advanced: Changing Fuses
If you're switching bootloaders, such as flashing QMK DFU on a Pro Micro, you will need to change the fuses, in additional to flashing the bootloader hex file. This is because `caterina` (the Pro Micro bootloader) and `dfu` handle the startup routines differently, and that behavior is controlled by the fuses.
!> This is one area that it is very important to be careful, as changing fuses is one of the ways that you can permanently brick your controller.
For this, we are assuming the 5V 16MHz versions of the `atmega32u4` (such as the 5V Pro Micro).
For DFU on the `atmega32u4`, these are the fuse settings that you want:
| Fuse | Setting |
|----------|------------------|
| Low | `0x5E` |
| High | `0xD9` or `0x99` |
| Extended | `0xC3` |
The High fuse can be 0xD9 or 0x99. The difference is that 0xD9 disables JTAG, which QMK Firmware disables via software as well, while 0x99 doesn't disable JTAG.
To set this add `-U lfuse:w:0x5E:m -U hfuse:w:0xD9:m -U efuse:w:0xC3:m` to your command. So the final command should look something like:
avrdude -c avrisp -P COM3 -p atmega32u4 -U flash:w:main.hex:i -U lfuse:w:0x5E:m -U hfuse:w:0xD9:m -U efuse:w:0xC3:m
For Caterina on the `atmega32u4`, these are the fuse settings that you want:
| Fuse | Setting|
|Bus Pirate|Keyboard|
|----------|--------|
| Low | `0xFF` |
| High | `0xD8` |
| Extended | `0xCB` |
|`+5V` |`VCC` |
|`GND` |`GND` |
|`RST` |`RESET` |
|`CLK` |`SCLK` |
|`MOSI` |`MOSI` |
|`MISO` |`MISO` |
To set this add `-U lfuse:w:0xFF:m -U hfuse:w:0xD8:m -U efuse:w:0xCB:m` to your command. So the final command should look something like:
## Software
avrdude -c avrisp -P COM3 -p atmega32u4 -U flash:w:main.hex:i -U lfuse:w:0xFF:m -U hfuse:w:0xD8:m -U efuse:w:0xCB:m
[QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) supports flashing both the ISP firmware and bootloader, but note that it cannot (currently) set the AVR fuse bytes for the actual ISP flashing step, so you may want to work with `avrdude` directly instead.
Setting up the [QMK environment](newbs.md) is highly recommended, as it automatically installs `avrdude` along with a host of other tools.
If you are using a different controller or want different configuration, you can use [this AVR Fuse Calculator](https://www.engbedded.com/fusecalc/) to find a better value for you.
## Bootloader Firmware
## Help
One of these files is what you will be ISP flashing onto the board. The default fuses are also listed.
If you have any questions/problems, feel free to [open an issue](https://github.com/qmk/qmk_firmware/issues/new)!
If you're not sure what your board uses, look in the `rules.mk` file for the keyboard in QMK. The `MCU` and `BOOTLOADER` lines will have the values you need. It may differ between different versions of the board.
### Atmel DFU
These are the [factory default bootloaders](https://www.microchip.com/content/dam/mchp/documents/OTH/ProductDocuments/SoftwareLibraries/Firmware/megaUSB_DFU_Bootloaders.zip) shipped by Atmel (now Microchip). Note that the AT90USB64 and AT90USB128 bootloaders are [slightly modified](https://github.com/qmk/qmk_firmware/pull/14064), due to a bug causing them to not enumerate properly in Windows 8 and later.
|MCU |Low |High |Extended|USB ID |
|--------------------------------------------------------------------------------------------------|------|-------------------------------|--------|-----------|
|[ATmega16U4](https://github.com/qmk/qmk_firmware/blob/master/util/bootloader_atmega16u4_1.0.1.hex)|`0x5E`|`0x99` / `0xD9` (JTAG disabled)|`0xF3` |`03EB:2FF3`|
|[ATmega32U4](https://github.com/qmk/qmk_firmware/blob/master/util/bootloader_atmega32u4_1.0.0.hex)|`0x5E`|`0x99` / `0xD9` (JTAG disabled)|`0xF3` |`03EB:2FF4`|
|[AT90USB64](https://github.com/qmk/qmk_firmware/blob/master/util/bootloader_at90usb64_1.0.0.hex) |`0x5E`|`0x9B` / `0xDB` (JTAG disabled)|`0xF3` |`03EB:2FF9`|
|[AT90USB128](https://github.com/qmk/qmk_firmware/blob/master/util/bootloader_at90usb128_1.0.1.hex)|`0x5E`|`0x99` / `0xD9` (JTAG disabled)|`0xF3` |`03EB:2FFB`|
### Caterina
This is the default Arduino-style bootloader derived from the [LUFA CDC bootloader](https://github.com/abcminiuser/lufa/tree/master/Bootloaders/CDC), and is only for the ATmega32U4.
There are several variants depending on the vendor, but they all mostly work the same way. The SparkFun variants, for example, require the `RESET` pin to be [grounded twice quickly](https://learn.sparkfun.com/tutorials/pro-micro--fio-v3-hookup-guide#ts-reset) in order to stay in bootloader mode for more than 750 ms.
|MCU |Low |High |Extended|USB ID |
|-----------------------------------------------------------------------------------------------------------------------------------------------------------------|------|------|--------|-----------|
|[SparkFun Pro Micro (3V3/8MHz)](https://github.com/sparkfun/Arduino_Boards/blob/master/sparkfun/avr/bootloaders/caterina/Caterina-promicro8.hex) |`0xFF`|`0xD8`|`0xFE` |`1B4F:9203`|
|[SparkFun Pro Micro (5V/16MHz)](https://github.com/sparkfun/Arduino_Boards/blob/master/sparkfun/avr/bootloaders/caterina/Caterina-promicro16.hex) |`0xFF`|`0xD8`|`0xFB` |`1B4F:9205`|
|[SparkFun LilyPadUSB (and some Pro Micro clones)](https://github.com/sparkfun/Arduino_Boards/blob/main/sparkfun/avr/bootloaders/caterina/Caterina-lilypadusb.hex)|`0xFF`|`0xD8`|`0xFE` |`1B4F:9207`|
|[Pololu A-Star 32U4](https://github.com/pololu/a-star/blob/master/bootloaders/caterina/Caterina-A-Star.hex)* |`0xFF`|`0xD0`|`0xF8` |`1FFB:0101`|
|[Adafruit Feather 32U4](https://github.com/adafruit/Caterina-Bootloader/blob/master/Built%20Firmwares/Caterina-Feather32u4.hex) |`0xFF`|`0xD8`|`0xFB` |`239A:000C`|
|[Adafruit ItsyBitsy 32U4 (3V3/8MHz)](https://github.com/adafruit/Caterina-Bootloader/blob/master/Caterina_itsybitsy3V.hex)* |`0xFF`|`0xD8`|`0xFB` |`239A:000D`|
|[Adafruit ItsyBitsy 32U4 (5V/16MHz)](https://github.com/adafruit/Caterina-Bootloader/blob/master/Caterina_itsybitsy5V.hex) |`0xFF`|`0xD8`|`0xFB` |`239A:000E`|
|[Arduino Leonardo](https://github.com/arduino/ArduinoCore-avr/blob/master/bootloaders/caterina/Caterina-Leonardo.hex)* |`0xFF`|`0xD8`|`0xFB` |`2341:0036`|
|[Arduino Micro](https://github.com/arduino/ArduinoCore-avr/blob/master/bootloaders/caterina/Caterina-Micro.hex)* |`0xFF`|`0xD8`|`0xFB` |`2341:0037`|
?> Files marked with a * have combined Arduino sketches, which runs by default and also appears as a serial port. However, this is *not* the bootloader device.
### BootloadHID (PS2AVRGB)
This bootloader is primarily for keyboards originally designed for the PS2AVRGB firmware and Bootmapper Client. It is not recommended for use in new designs.
|MCU |Low |High |USB ID |
|-----------------------------------------------------------------------------------------------------------|------|------|-----------|
|[ATmega32A](https://github.com/qmk/qmk_firmware/blob/master/util/bootloader_ps2avrgb_bootloadhid_1.0.1.hex)|`0x0F`|`0xD0`|`16C0:05DF`|
### USBaspLoader
USBaspLoader is a bootloader based on V-USB that emulates a hardware USBasp device. It runs on ATmega32A and ATmega328P MCUs.
Precompiled `.hex` files are generally not available, but you can compile it yourself by setting up the QMK environment and following Coseyfannitutti's guide for the appropriate MCU:
|MCU |Low |High |Extended|USB ID |
|-------------------------------------------------------------------------------------|------|------|--------|-----------|
|[ATmega32A](https://github.com/coseyfannitutti/discipline/tree/master/doc/bootloader)|`0x1F`|`0xC0`|*n/a* |`16C0:05DC`|
|[ATmega328P](https://github.com/coseyfannitutti/discipad/tree/master/doc/bootloader) |`0xD7`|`0xD0`|`0x04` |`16C0:05DC`|
Note that some boards may have their own specialized build of this bootloader in a separate repository. This will usually be linked to in the board's readme.
## Flashing the Bootloader
Open a new Terminal window - if you are on Windows, use MSYS2 or QMK MSYS, not the Command Prompt. Navigate to the directory your bootloader `.hex` is in. Now it's time to run the `avrdude` command.
The syntax of `avrdude` is:
```
avrdude -c <programmer> -P <port> -p <mcu> -U flash:w:<filename>:i
```
* `<programmer>` corresponds to the programmer type listed for each ISP flasher in the [Hardware](#hardware) section, for example `avrisp`.
* `<port>` is the serial port that appears when you plug the ISP flasher in, if any. For some programmers this is simply `usb` (or you can omit the `-P` argument completely) since they do not operate as a serial device.
* Windows: `COMx` - check Device Manager, under the "Ports (COM & LPT)" section
* Linux: `/dev/ttyACMx`
* macOS: `/dev/tty.usbmodemXXXXXX`
* `<mcu>` should be the lowercase name of the target AVR microcontroller, for example `atmega32u4`.
* `<filename>` is the absolute or relative path to the bootloader to be flashed, for example `Caterina-Micro.hex`.
You can also run `man avrdude` for more information.
If all goes well, you should get output similar to the following:
```
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude: Device signature = 0x1e9587 (probably m32u4)
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "Caterina-Micro.hex"
avrdude: writing flash (32730 bytes):
Writing | ################################################## | 100% 11.58s
avrdude: 32730 bytes of flash written
avrdude: verifying flash memory against Caterina-Micro.hex:
avrdude: load data flash data from input file Caterina-Micro.hex:
avrdude: input file Caterina-Micro.hex contains 32730 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 10.33s
avrdude: verifying ...
avrdude: 32730 bytes of flash verified
avrdude: safemode: Fuses OK (E:CB, H:D8, L:FF)
avrdude done. Thank you.
```
### Setting the Fuses
This is a slightly more advanced topic, but may be necessary if you are switching from one bootloader to another (for example, Caterina to Atmel/QMK DFU on a Pro Micro). Fuses control some of the low-level functionality of the AVR microcontroller, such as clock speed, whether JTAG is enabled, and the size of the section of flash memory reserved for the bootloader, among other things. You can find a fuse calculator for many AVR parts [here](https://www.engbedded.com/conffuse/).
!> **WARNING:** Setting incorrect fuse values, in particular the clock-related bits, may render the MCU practically unrecoverable without high voltage programming (not covered here)! Make sure to double check the commands you enter before you execute them.
To set the fuses, add the following to the `avrdude` command:
```
-U lfuse:w:0xXX:m -U hfuse:w:0xXX:m -U efuse:w:0xXX:m
```
where the `lfuse`, `hfuse` and `efuse` arguments represent the low, high and extended fuse bytes as listed in the [Hardware](#hardware) section.
?> You may get a warning from `avrdude` that the extended fuse byte does not match what you provided when reading it back. If the second hex digit matches, this can usually be safely ignored, because the top four bits of this fuse do not actually exist on many AVR parts, and may read back as anything.
## Creating a "Production" Firmware
For mass production purposes, it is possible to join the bootloader and QMK firmware together into a single file, due to the way the [Intel Hex format](https://en.wikipedia.org/wiki/Intel_HEX) works:
1. Open the QMK firmware and bootloader `.hex` files in a text editor.
2. Remove the last line of the QMK firmware (which should be `:00000001FF` - this is just an "end of file" marker).
3. Paste the contents of the bootloader `.hex` file onto a new line at the end of the QMK firmware file, with no empty lines between.
4. Save it as a new file, for example `<keyboard>_<keymap>_production.hex`.
You can then ISP flash this combined firmware instead, which allows you to skip the extra step of flashing the QMK firmware over USB.

View File

@@ -1,8 +1,8 @@
# 互換性のあるマイクロコントローラ
<!---
original document: 0.9.19:docs/compatible_microcontrollers.md
git diff 0.9.19 HEAD -- docs/compatible_microcontrollers.md | cat
original document: 0.14.14:docs/compatible_microcontrollers.md
git diff 0.14.14 HEAD -- docs/compatible_microcontrollers.md | cat
-->
QMK は十分な容量のフラッシュメモリを備えた USB 対応 AVR または ARM マイクロコントローラで実行されます - 一般的に 32kB 以上ですが、ほとんどの機能を無効にすると*ほんの* 16kB に詰め込むことができます。

View File

@@ -141,7 +141,7 @@ QMK での全ての利用可能な設定にはデフォルトがあります。
* `#define STRICT_LAYER_RELEASE`
* キーリリースがどのレイヤーから来たのかを覚えるのではなく、現在のレイヤースタックを使って強制的に評価されるようにします (高度なケースに使われます)
## 設定可能な挙動
## 設定可能な挙動 :id=behaviors-that-can-be-configured
* `#define TAPPING_TERM 200`
* タップがホールドになるまでの時間。500以上に設定された場合、タップ期間中にタップされたキーもホールドになります。(訳注: PERMISSIVE_HOLDも参照)

View File

@@ -1,8 +1,8 @@
# 貢献方法
<!---
original document: 0.13.15:docs/contributing.md
git diff 0.13.15 HEAD -- docs/contributing.md | cat
original document: 0.14.22:docs/contributing.md
git diff 0.14.22 HEAD -- docs/contributing.md | cat
-->
👍🎉 まず、これを読み貢献する時間を作ってくれてありがとうございます!🎉👍
@@ -79,7 +79,7 @@ QMK には幾つかの異なるタイプの変更があり、それぞれ異な
```
kerpleplork の fronzlebop を調整します
kerpleplork はエラーコード 23 で連続的に失敗していました。根本的な原因は fronzlebop 設定で、これにより kerpleplork はN回の繰り返しごとにアクティブになります。
kerpleplork はエラーコード 23 で連続的に失敗していました。根本的な原因は fronzlebop 設定で、これにより kerpleplork は N 回の繰り返しごとにアクティブになります。
私が使用できるデバイスの限られた実験では、kerpleplork の混乱を避けるために 7 は十分高い値であることを示していますが、念のため ARM デバイスを持つ人たちからフィードバックを得たいです。
```
@@ -122,7 +122,7 @@ enum my_keycodes {
ほとんどの初めての QMK 貢献者は、個人のキーマップから始めます。キーマップの標準はかなりカジュアルなものにしようとしています(キーマップは結局のところ作成者の性格を反映しています)が、他の人があなたのキーマップを簡単に見つけて学ぶことができるように、これらのガイドラインに従うようにお願いします。
* [テンプレート](documentation_templates.md) を使って `readme.md` を書きます。
* [テンプレート](ja/documentation_templates.md) を使って `readme.md` を書きます。
* 全てのキーマップの PR は squash されるため、コミットがどのように squash されるかを気にする場合は、自分で行う必要があります。
* キーマップの PR に機能をまとめないでください。最初に機能をサブミットし、次にキーマップのための2つ目の PR をサブミットします。
* `Makefile` をキーマップフォルダに含めないでください(もう使われていません)。

View File

@@ -211,11 +211,11 @@ void keyboard_post_init_user(void) {
```c
void suspend_power_down_user(void) {
rgb_matrix_set_suspend_state(true);
// code will run multiple times while keyboard is suspended
}
void suspend_wakeup_init_user(void) {
rgb_matrix_set_suspend_state(false);
// code will run on keyboard wakeup
}
```

View File

@@ -1,30 +1,33 @@
# 修飾キー :id=modifier-keys
<!---
original document: 0.12.29:docs/feature_advanced_keycodes.md
git diff 0.12.29 HEAD -- docs/feature_advanced_keycodes.md | cat
original document: 0.14.6:docs/feature_advanced_keycodes.md
git diff 0.14.6 HEAD -- docs/feature_advanced_keycodes.md | cat
-->
以下のようにキーコードとモディファイアを組み合わせることができます。押すと、モディファイアのキーダウンイベントが送信され、次に `kc` のキーダウンイベントが送信されます。放すと、`kc` のキーアップイベントが送信され、次にモディファイアのキーアップイベントが送信されます。
| キー | エイリアス | 説明 |
| ---------- | ------------------------------- | ------------------------------------------------------------------- |
| `LCTL(kc)` | `C(kc)` | 左 Control を押しながら `kc` を押します。 |
| `LSFT(kc)` | `S(kc)` | 左 Shift を押しながら `kc` を押します。 |
| `LALT(kc)` | `A(kc)`, `LOPT(kc)` | 左 Alt を押しながら `kc`を押します。 |
| `LGUI(kc)` | `G(kc)`, `LCMD(kc)`, `LWIN(kc)` | 左 GUI を押しながら `kc` を押します。 |
| `RCTL(kc)` | | 右 Control を押しながら `kc` を押します。 |
| `RSFT(kc)` | | 右 Shift を押しながら `kc` を押します。 |
| `RALT(kc)` | `ROPT(kc)`, `ALGR(kc)` | 右 Alt を押しながら `kc` を押します。 |
| `RGUI(kc)` | `RCMD(kc)`, `LWIN(kc)` | 右 GUI を押しながら `kc` を押します。 |
| `SGUI(kc)` | `SCMD(kc)`, `SWIN(kc)` | 左 Shift と左 GUI を押しながら `kc` を押します。 |
| `LCA(kc)` | | 左 Control と左 Alt を押しながら `kc` を押します。 |
| `LSA(kc)` | | Shift と左 Alt を押しながら `kc` を押します。 |
| `RSA(kc)` | `SAGR(kc)` | 右 Shift と右 Alt (AltGr) を押しながら `kc` を押します。 |
| `RCS(kc)` | | Control と右 Shift を押しながら `kc` を押します。 |
| `LCAG(kc)` | | 左 Control、左 Alt、左 GUI を押しながら `kc` を押します。 |
| `MEH(kc)` | | 左 Control、左 Shift、左 Alt を押しながら `kc` を押します。 |
| `HYPR(kc)` | | Control、左 Shift、左 Alt、左 GUI を押しながら `kc` を押します。 |
| キー | エイリアス | 説明 |
| ---------- | ---------------------------------- | ------------------------------------------------------------------- |
| `LCTL(kc)` | `C(kc)` | 左 Control を押しながら `kc` を押します。 |
| `LSFT(kc)` | `S(kc)` | 左 Shift を押しながら `kc` を押します。 |
| `LALT(kc)` | `A(kc)`, `LOPT(kc)` | 左 Alt を押しながら `kc`を押します。 |
| `LGUI(kc)` | `G(kc)`, `LCMD(kc)`, `LWIN(kc)` | 左 GUI を押しながら `kc` を押します。 |
| `RCTL(kc)` | | 右 Control を押しながら `kc` を押します。 |
| `RSFT(kc)` | | 右 Shift を押しながら `kc` を押します。 |
| `RALT(kc)` | `ROPT(kc)`, `ALGR(kc)` | 右 Alt を押しながら `kc` を押します。 |
| `RGUI(kc)` | `RCMD(kc)`, `LWIN(kc)` | 右 GUI を押しながら `kc` を押します。 |
| `LSG(kc)` | `SGUI(kc)`, `SCMD(kc)`, `SWIN(kc)` | 左 Shift と左 GUI を押しながら `kc` を押します。 |
| `LAG(kc)` | | 左 Alt と左 GUI を押しながら `kc` を押します。 |
| `RSG(kc)` | | Shift と右 GUI を押しながら `kc` を押します。 |
| `RAG(kc)` | | 右 Alt と右 GUI を押しながら `kc` を押します。 |
| `LCA(kc)` | | Control と左 Alt を押しながら `kc` を押します。 |
| `LSA(kc)` | | 左 Shift と左 Alt を押しながら `kc` を押します。 |
| `RSA(kc)` | `SAGR(kc)` | Shift と右 Alt (AltGr) を押しながら `kc` を押します。 |
| `RCS(kc)` | | Control と右 Shift を押しながら `kc` を押します。 |
| `LCAG(kc)` | | 左 Control、左 Alt、左 GUI を押しながら `kc` を押します。 |
| `MEH(kc)` | | 左 Control、左 Shift、左 Alt を押しながら `kc` を押します。 |
| `HYPR(kc)` | | 左 Control、左 Shift、左 Alt、左 GUI を押しながら `kc` を押します。 |
また、それらを繋げることができます。例えば、`LCTL(LALT(KC_DEL))` または `C(A(KC_DEL))` は1回のキー押下で Control+Alt+Delete を送信するキーを作成します。

View File

@@ -1,8 +1,8 @@
# バックライト :id=backlighting
<!---
original document: 0.10.33:docs/feature_backlight.md
git diff 0.10.33 HEAD -- docs/feature_backlight.md | cat
original document: 0.14.14:docs/feature_backlight.md
git diff 0.14.14 HEAD -- docs/feature_backlight.md | cat
-->
多くのキーボードは、キースイッチを貫通して配置されたり、キースイッチの下に配置された個々の LED によって、バックライトキーをサポートします。この機能は通常スイッチごとに単一の色しか使用できないため、[RGB アンダーグロー](ja/feature_rgblight.md)および [RGB マトリックス](ja/feature_rgb_matrix.md)機能のどちらとも異なりますが、キーボードに複数の異なる単一色の LED を取り付けることは当然可能です。
@@ -67,14 +67,17 @@ BACKLIGHT_DRIVER = software
バックライトを設定するには、`config.h` の中で以下の `#define` をします:
| 定義 | デフォルト | 説明 |
| --------------------- | ---------- | ------------------------------------------------------------------------------------------- |
| `BACKLIGHT_PIN` | *定義なし* | LED を制御するピン |
| `BACKLIGHT_LEVELS` | `3` | 輝度のレベルの数 (オフを除いて最大 31) |
| `BACKLIGHT_CAPS_LOCK` | *定義なし* | バックライトを使って Caps Lock のインジケータを有効にする (専用 LED の無いキーボードのため) |
| `BACKLIGHT_BREATHING` | *定義なし* | サポートされる場合は、バックライトの明滅動作を有効にする |
| `BREATHING_PERIOD` | `6` | 各バックライトの "明滅" の長さ(秒) |
| `BACKLIGHT_ON_STATE` | `1` | バックライトが "オン" の時のバックライトピンの状態 - high の場合は `1`、low の場合は `0` |
| 定義 | デフォルト | 説明 |
| ----------------------------- | ------------------ | --------------------------------------------------------------------------------------------- |
| `BACKLIGHT_PIN` | *定義なし* | LED を制御するピン |
| `BACKLIGHT_LEVELS` | `3` | 輝度のレベルの数 (オフを除いて最大 31) |
| `BACKLIGHT_CAPS_LOCK` | *定義なし* | バックライトを使って Caps Lock のインジケータを有効にする (専用 LED の無いキーボードのため) |
| `BACKLIGHT_BREATHING` | *定義なし* | サポートされる場合は、バックライトの明滅動作を有効にする |
| `BREATHING_PERIOD` | `6` | 各バックライトの "明滅" の長さ(秒) |
| `BACKLIGHT_ON_STATE` | `1` | バックライトが "オン" の時のバックライトピンの状態 - high の場合は `1`、low の場合は `0` |
| `BACKLIGHT_LIMIT_VAL` | `255` | バックライトの最大デューティサイクル -- `255` で最大輝度になり、それ未満では最大値が減少する |
| `BACKLIGHT_DEFAULT_LEVEL` | `BACKLIGHT_LEVELS` | EEPROM をクリアする時に使うデフォルトのバックライトレベル |
| `BACKLIGHT_DEFAULT_BREATHING` | *定義なし* | EEPROM をクリアする時に、バックライトのブリージングを有効にするかどうか |
独自のキーボードを設計しているわけではない限り、通常は `BACKLIGHT_PIN` または `BACKLIGHT_ON_STATE` を変更する必要はありません。
@@ -97,18 +100,18 @@ BACKLIGHT_DRIVER = pwm
AVR ボードでは、QMK はどのドライバを使うかを以下の表に従って自動的に決定します:
| バックライトピン | AT90USB64/128 | ATmega16/32U4 | ATmega16/32U2 | ATmega32A | ATmega328/P |
| ---------------- | ------------- | ------------- | ------------- | --------- | ----------- |
| `B1` | | | | | Timer 1 |
| `B2` | | | | | Timer 1 |
| `B5` | Timer 1 | Timer 1 | | | |
| `B6` | Timer 1 | Timer 1 | | | |
| `B7` | Timer 1 | Timer 1 | Timer 1 | | |
| `C4` | Timer 3 | | | | |
| `C5` | Timer 3 | | Timer 1 | | |
| `C6` | Timer 3 | Timer 3 | Timer 1 | | |
| `D4` | | | | Timer 1 | |
| `D5` | | | | Timer 1 | |
| バックライトピン | AT90USB64/128 | AT90USB162 | ATmega16/32U4 | ATmega16/32U2 | ATmega32A | ATmega328/P |
| ---------------- | ------------- | ---------- | ------------- | ------------- | --------- | ----------- |
| `B1` | | | | | | Timer 1 |
| `B2` | | | | | | Timer 1 |
| `B5` | Timer 1 | | Timer 1 | | | |
| `B6` | Timer 1 | | Timer 1 | | | |
| `B7` | Timer 1 | Timer 1 | Timer 1 | Timer 1 | | |
| `C4` | Timer 3 | | | | | |
| `C5` | Timer 3 | Timer 1 | | Timer 1 | | |
| `C6` | Timer 3 | Timer 1 | Timer 3 | Timer 1 | | |
| `D4` | | | | | Timer 1 | |
| `D5` | | | | | Timer 1 | |
他の全てのピンはタイマー支援ソフトウェア PWM を使います。

View File

@@ -76,7 +76,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
tap_code(KC_UP);
}
}
return true;
return false;
}
```

View File

@@ -1,8 +1,8 @@
# リーダーキー: 新しい種類のモディファイア
<!---
original document: 0.10.33:docs/feature_leader_key.md
git diff 0.10.33 HEAD -- docs/feature_leader_key.md | cat
original document: 0.13.24:docs/feature_leader_key.md
git diff 0.13.24 HEAD -- docs/feature_leader_key.md | cat
-->
もしあなたが Vim を使ったことがある場合、リーダーキーは何であるかを知っています。そうでなければ、素晴らしい概念を発見しようとしています。:) 例えば、Alt+Shift+W を押す(3つのキーを同時に押す)代わりに、キーの_シーケンス_を押すことができたらどうでしょうつまり、特別なモディファイア (リーダーキー)を押して、続けて W と C を押すと (単純にキーを高速に繋げます)、何かが起こります。
@@ -77,6 +77,19 @@ SEQ_THREE_KEYS(KC_C, KC_C, KC_C) {
}
```
## リーダーキーの無限タイムアウト
リーダーキーが、シーケンスの残りのキーのような快適な場所にない場合があります。リーダーキーが右上の外側のキーの1つである場合、リーダーキーに届くように手の位置を変えなければならないことがあります。
これにより、シーケンスの大部分をすばやく入力できたとしても、シーケンス全体を時間通りに入力するのが難しい場合があります。例えば、シーケンスが `Leader + asd` の場合、手をホーム行に置けば `asd` を素早く打つのは非常に簡単です。しかし、リーダーキーに届くようにホーム行から手を移動し、戻った後、時間内にシーケンスを開始することはできません。
この状況が手に与えるストレスを取り除くために、リーダーキーだけに無限のタイムアウトを有効にすることができます。つまり、リーダーキーを押した後、シーケンスの残りを開始するまでの時間が無限になり、シーケンスの残りを快適に入力するための最適な位置に手を置くことができます。
この無限のタイムアウトはリーダーキーにのみ影響するため、前述の `Leader + asd` の例では、`Leader``a` の間に無限の時間があります。ただし、シーケンスを開始すると、(グローバルまたはキーごとに)設定したタイムアウトは正常に機能します。
このようにして、非常に短い `LEADER_TIMEOUT` を設定できますが、それでも手を置く時間は十分にあります。
これを有効にするには、以下を `config.h` に配置します:
```c
#define LEADER_NO_TIMEOUT
```
## 厳密なキー処理
デフォルトでは、リーダーキー機能は、リーダーシーケンスの確認時に [`モッドタップ`](ja/mod_tap.md) および [`レイヤータップ`](ja/feature_layers.md#switching-and-toggling-layers) 機能からのキーコードをフィルターします。つまり、`LT(3, KC_A)` を使っている場合、`LT(3, KC_A)` ではなくシーケンスの `KC_A` として取り出され、新しいユーザにとってより期待される動作を提供します。

View File

@@ -25,7 +25,7 @@ LED の状態を `uint8_t` として提供する2つの非推奨の関数があ
* `uint8_t led_set_kb(uint8_t usb_led)``_user(uint8_t usb_led)`
* `uint8_t host_keyboard_leds()`
## 設定オプション
## 設定オプション :id=configuration-options
インジケータを設定するには、`config.h` で以下の `#define` をします:

View File

@@ -45,8 +45,8 @@ MOUSEKEY_ENABLE = no
キーマップで Plover 用の新しいレイヤーを作成します。`keymap_steno.h` をインクルードする必要があります。例については `planck/keymaps/steno/keymap.c` を見てください。レイヤーに切り替えるためのキーとレイヤーから抜けるためのキーを作成することを忘れないでください。その場でモードを切り替えたい場合は、キーコード `QK_STENO_BOLT` および `QK_STENO_GEMINI` を使うことができます。プロトコルのうちの1つのみを使う場合は、初期化関数の中でそれをセットアップすることができます:
```c
void matrix_init_user() {
steno_set_mode(STENO_MODE_GEMINI); // あるいは STENO_MODE_BOLT
void eeconfig_init_user() {
steno_set_mode(STENO_MODE_GEMINI); // あるいは STENO_MODE_BOLT
}
```

View File

@@ -29,7 +29,7 @@ Vagrant 以外に、適切なプロバイダがインストールされ、その
コマンドラインでプログラムしたい場合は、Vagranfile の ['modifyvm'] 行のコメントを解除して Linux への USB パススルーを有効にし、dfu-util/dfu-programmer のようなコマンドラインツールを使ってプログラムすることができます。あるいは Teensy CLI バージョンをインストールすることができます。
## Vagrantfile の概要
開発環境は QMK Docker イメージ、`qmkfm/base_container` を実行するように設定されています。これはシステム間の予測可能性が保証されるだけでなく、CI 環境もミラーされます。
開発環境は QMK Docker イメージ、`qmkfm/qmk_cli` を実行するように設定されています。これはシステム間の予測可能性が保証されるだけでなく、CI 環境もミラーされます。
## FAQ

View File

@@ -2,8 +2,8 @@
<!---
grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh
original document: 0.9.46:docs/isp_flashing_guide.md
git diff 0.9.46 HEAD -- docs/isp_flashing_guide.md | cat
original document: 0.13.29:docs/isp_flashing_guide.md
git diff 0.13.29 HEAD -- docs/isp_flashing_guide.md | cat
-->
ISP 書き込み(ICSP 書き込みと呼ぶ場合もあります)とは、マイクロコントローラーを直接プログラミングするプロセスです。
@@ -52,6 +52,7 @@ QMK の ISP 書き込みの主な用途は、AVRベースのコントローラ
* [SparkFun PocketAVR](https://www.sparkfun.com/products/9825) - (USB Tiny)
* [USBtinyISP AVR Programmer Kit](https://www.adafruit.com/product/46) - (USB Tiny)
* [USBasp](https://www.fischl.de/usbasp/) - (usbasp)
* [Teensy 2.0](https://www.pjrc.com/store/teensy.html) - (avrisp)
* [Pro Micro](https://www.sparkfun.com/products/12640) - (avrisp)
* [Bus Pirate](https://www.adafruit.com/product/237) - (buspirate)
@@ -77,8 +78,8 @@ Teensy と Pro Micro のコントローラを ISP プログラマとして使用
QMK ツールボックスは、このほとんど(すべて)に使用することができます。
ただし、Teensy 2.0 ボードを使っている場合は、[Teensy Loader](https:/www.pjrc.comteensyloader.html) を使えば、Teensy 2.0 ボードに書き込むことができます。
あるいは、`avrdude` (`qmk_install.sh` の一部としてインストールされています) や、[AVRDUDESS](https:/blog.zakkemble.netavrdudess-a-gui-for-avrdude)(Windows 用) を使って、Pro Micro に書き込んだり、ISP を書き込んだりすることができます。
ただし、Teensy 2.0 ボードを使っている場合は、[Teensy Loader](https://www.pjrc.com/teensy/loader.html) を使えば、Teensy 2.0 ボードに書き込むことができます。
あるいは、`avrdude` (`qmk_install.sh` の一部としてインストールされています) や、[AVRDUDESS](https://blog.zakkemble.net/avrdudess-a-gui-for-avrdude/) (Windows 用) を使って、Pro Micro に書き込んだり、ISP を書き込んだりすることができます。
## 配線
@@ -93,6 +94,15 @@ QMK ツールボックスは、このほとんど(すべて)に使用する
PocketAVR VCC <-> Keyboard VCC
PocketAVR GND <-> Keyboard GND
### USBasp
USBasp RST <-> Keyboard RESET
USBasp SCLK <-> Keyboard B1 (SCLK)
USBasp MOSI <-> Keyboard B2 (MOSI)
USBasp MISO <-> Keyboard B3 (MISO)
USBasp VCC <-> Keyboard VCC
USBasp GND <-> Keyboard GND
### Teensy 2.0
Teensy B0 <-> Keyboard RESET
@@ -180,7 +190,7 @@ QMK DFU ブートローダは `atmega32u4` コントローラ (AVR ベースの
### QMK Toolbox
1. 'AVRISP device connected' または `USB Tiny device connected` が黄色で表示されます。
1. `AVRISP device connected` または `USB Tiny device connected` が黄色で表示されます。
2. `Open` ダイアログで正しいブートローダー/プロダクションの .hex ファイルを選択します(パスにスペースを含めることはできません)
3. 書きこもうとしているキーボードISP プログラマではなく)のための正しい `Microcontroller` オプションが選択されていることを確認してください。
4. `Flash` を押します
@@ -277,7 +287,7 @@ High ヒューズは 0xD9 か 0x99 のどちらかになります。
avrdude -c avrisp -P COM3 -p atmega32u4 -U flash:w:main.hex:i -U lfuse:w:0xFF:m -U hfuse:w:0xD8:m -U efuse:w:0xCB:m
別のコントローラーを使用している場合や、別の設定を希望する場合は、この[AVR ヒューズ計算機](https://www.engbedded.com/fusecalc)を使用して、より適切な値を見つけることができます。
別のコントローラーを使用している場合や、別の設定を希望する場合は、この[AVR ヒューズ計算機](https://www.engbedded.com/fusecalc/)を使用して、より適切な値を見つけることができます。
## ヘルプ

34
docs/ja/ja_doc_status.sh Normal file
View File

@@ -0,0 +1,34 @@
#! /bin/sh
#
# Script to display the Japanese translation status of documents
#
if [ ! -d docs/ja ]; then
echo "'docs/ja' not found."
echo "do:"
echo " cd \$(QMK_TOP)"
echo " ./docs/ja/ja_doc_status.sh"
exit 1
fi
en_docs=`cd docs;ls -1 [a-z]*.md`
ja_docs=`cd docs/ja;ls -1 [a-z]*.md`
en_count=`echo $en_docs | wc -w`
ja_count=`echo $ja_docs | wc -w`
echo "English documents $en_count files."
echo "Japanese documents $ja_count files."
echo "Files that have not been translated yet:"
for docfile in $en_docs
do
if [ ! -f docs/ja/$docfile ]; then
wc docs/$docfile
fi
done | sort
echo "Files that have not been updated yet:"
grep --no-filename "^[ ]*git diff" docs/ja/*.md | while read cmd
do
cline=`echo $cmd | sh | wc -l`
if [ $cline -gt 0 ]; then
echo "$cline $cmd"
fi
done | sort

View File

@@ -0,0 +1,41 @@
# US ANSI シフト記号
<!---
original document: 0.13.23:docs/keycodes_us_ansi_shifted.md
git diff 0.13.23 HEAD -- docs/keycodes_us_ansi_shifted.md | cat
-->
これらのキーコードは、標準の US ANSI 配列のキーボードで「シフトされる」文字に対応します。これらのキーコードは自身のキーコードを持たず、`LSFT(kc)` の単なるショートカットであり、記号自体ではなく Shift キー抜きのキーコードと左 Shift キーを送信します。
## 注意書き
残念ながら、これらのキーコードは、モッドタップやレイヤータップの中で使えません。キーコードで指定されたモディファイアは無視されるからです。
さらに、Windows でリモートデスクトップ接続を使う場合に、問題が発生する場合があります。なぜならば、これらのコードは Shift キーを非常に速く送信するため、リモートデスクトップがコードを見落とすかもしれないからです。
この問題を解決するには、リモートデスクトップ接続を開いて「オプションの表示」をクリックし、「ローカル リソース」タブを開きます。キーボードセクションでドロップダウンを「このコンピュータ」に変更します。これで問題が解決され、文字が正しく機能するようになります。
## キーコード
|キー |エイリアス |説明 |
|------------------------|-------------------|-----------|
|`KC_TILDE` |`KC_TILD` |`~` |
|`KC_EXCLAIM` |`KC_EXLM` |`!` |
|`KC_AT` | |`@` |
|`KC_HASH` | |`#` |
|`KC_DOLLAR` |`KC_DLR` |`$` |
|`KC_PERCENT` |`KC_PERC` |`%` |
|`KC_CIRCUMFLEX` |`KC_CIRC` |`^` |
|`KC_AMPERSAND` |`KC_AMPR` |`&` |
|`KC_ASTERISK` |`KC_ASTR` |`*` |
|`KC_LEFT_PAREN` |`KC_LPRN` |`(` |
|`KC_RIGHT_PAREN` |`KC_RPRN` |`)` |
|`KC_UNDERSCORE` |`KC_UNDS` |`_` |
|`KC_PLUS` | |`+` |
|`KC_LEFT_CURLY_BRACE` |`KC_LCBR` |`{` |
|`KC_RIGHT_CURLY_BRACE` |`KC_RCBR` |`}` |
|`KC_PIPE` | |`\|` |
|`KC_COLON` |`KC_COLN` |`:` |
|`KC_DOUBLE_QUOTE` |`KC_DQUO`, `KC_DQT`|`"` |
|`KC_LEFT_ANGLE_BRACKET` |`KC_LABK`, `KC_LT` |`<` |
|`KC_RIGHT_ANGLE_BRACKET`|`KC_RABK`, `KC_GT` |`>` |
|`KC_QUESTION` |`KC_QUES` |`?` |

View File

@@ -1,8 +1,8 @@
# モッドタップ
<!---
original document: 0.10.36:docs/mod_tap.md
git diff 0.10.36 HEAD -- docs/mod_tap.md | cat
original document: 0.13.34:docs/mod_tap.md
git diff 0.13.34 HEAD -- docs/mod_tap.md | cat
-->
モッドタップキー `MT(mod, kc)` は、押したままの時にモディファイアのように機能し、タップされた時に通常のキーのように振舞います。別の言い方をすると、タップした時に Escape を送信しますが、押したままの時に Control あるいは Shift キーとして機能するキーを持つことができます。
@@ -42,7 +42,10 @@ MT(MOD_LCTL | MOD_LSFT, KC_ESC)
| `RSFT_T(kc)` | | 押したままの場合は右 Shift、タップした場合は `kc` |
| `RALT_T(kc)` | `ROPT_T(kc)`, `ALGR_T(kc)` | 押したままの場合は右 Alt、タップした場合は `kc` |
| `RGUI_T(kc)` | `RCMD_T(kc)`, `RWIN_T(kc)` | 押したままの場合は右 GUI、タップした場合は `kc` |
| `SGUI_T(kc)` | `SCMD_T(kc)`, `SWIN_T(kc)` | 押したままの場合は左 Shift と左 GUI、タップした場合は `kc` |
| `LSG_T(kc)` | `SGUI_T(kc)`, `SCMD_T(kc)`, `SWIN_T(kc)` | 押したままの場合は左 Shift と左 GUI、タップした場合は `kc` |
| `LAG_T(kc)` | | 押したままの場合は左 Alt と左 GUI、タップした場合は `kc` |
| `RSG_T(kc)` | | 押したままの場合は右 Shift と右 GUI、タップした場合は `kc` |
| `RAG_T(kc)` | | 押したままの場合は右 Alt と右 GUI、タップした場合は `kc` |
| `LCA_T(kc)` | | 押したままの場合は左 Control と左 Alt、タップした場合は `kc` |
| `LSA_T(kc)` | | 押したままの場合は左 Shift と Alt、タップした場合は `kc` |
| `RSA_T(kc)` | `SAGR_T(kc)` | 押したままの場合は右 Shift と Alt (AltGr)、タップした場合は `kc` |
@@ -55,11 +58,13 @@ MT(MOD_LCTL | MOD_LSFT, KC_ESC)
## 注意事項
残念ながら、キーコードで指定されたモディファイアは無視されるため、これらのキーコードはモッドタップまたはレイヤータップで使うことできません。
現在のところ、`MT()` の引数 `kc` は[基本的なキーコードセット](ja/keycodes_basic.md)に制限されています。つまり、`LCTL()``KC_TILD`、あるいは `0xFF` より大きなキーコードを使うことができません。これは、QMK が16ビットのキーコードを使うためです。3ビットは機能の識別のために使われ、1ビットは右または左の mod を選択するために使われ、4ビットはどの mod かを区別するために使われ、キーコードには8ビットしか残されていません。さらに、モッドタップで少なくとも1つの右手用のモディファイアが指定された場合、指定された全てのモディファイアが右手用になるため、2つをうまく組み合わせて一致させることできません。例えば、左 Control と右 Shift は、右 Control と右 Shift になります。
さらに、Windows でリモートデスクトップ接続を使う場合に、問題が発生する場合があります。これらのコードはシフトを非常に高速に送信するため、リモートデスクトップはコードを見逃すかもしれません
これを拡張してもせいぜい複雑になるだけでしょう。32ビットキーコードに移行すると、これの多くが解決されますが、キーマップマトリックスが使用する領域が2倍になります。また、問題が起きる可能性もあります。タップしたキーコードにモディファイアを適用する必要がある場合は、[タップダンス](ja/feature_tap_dance.md#example-5)を使うことができます
これを修正するには、リモートデスクトップ接続を開き、「オプションの表示」を開き、「ローカル リソース」タブを開きます。キーードセクションで、ドロップダウンを「このコンピューター」に変更します。これにより問題が修正され、キャラクタが正しく動作するようになります。
さらに、Windows でリモートデスクトップ接続を使う場合に、問題が発生する場合があります。なぜならば、これらのキーードは人よりも速くキーイベントを送信するため、リモートデスクトップがキーコードを見落とすかもしれないからです。
この問題を解決するには、リモートデスクトップ接続を開いて「オプションの表示」をクリックし、「ローカル リソース」タブを開きます。キーボードセクションで、ドロップダウンを「このコンピューター」に変更します。これで問題が解決され、文字が正しく機能するようになります。
[`TAP_CODE_DELAY`](ja/config_options.md#behaviors-that-can-be-configured) を増やすことで緩和することもできます。
## 他のリソース

View File

@@ -1,9 +1,9 @@
# ワンショットキー
<!---
original document: 0.12.41:docs/one_shot_keys.md
git diff 0.12.41 HEAD -- docs/one_shot_keys.md | cat
-->
original document: 0.13.34:docs/one_shot_keys.md
git diff 0.13.34 HEAD -- docs/one_shot_keys.md | cat
--->
ワンショットキーは次のキーが押されるまでアクティブのままになり、そのあと放されるキーです。これにより一度に1つ以上のキーを押すことなく、キーボードの組み合わせを入力することができます。これらのキーは通常「スティッキーキー」あるいは「デッドキー」と呼ばれます。
@@ -22,10 +22,13 @@
* `OSM(mod)` - *mod*を一時的に押し続けます。[モッドタップ](ja/mod_tap.md)で示したように、`KC_*` コードでは無く、`MOD_*` キーコードを使わなければなりません。
* `OSL(layer)` - 一時的に*レイヤー*に切り替えます。
* `OS_ON` - ワンショットキーをオンにします。
* `OS_OFF` - ワンショットキーをオフにします。OSM は通常の mod キーのように機能し、OSL は `MO` キーのように機能します。
* `OS_TOGG` - ワンショットキーの状態を切り替えます。
ワンショットキーをマクロあるいはタップダンスルーチンの一部として有効にしたい場合があります。
ワンショットレイヤーについては、キーを押した時に `set_oneshot_layer(LAYER, ONESHOT_START)` を呼び出し、キーを放した時に `clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED)` を呼び出す必要があります。ワンショットをキャンセルする場合は、`reset_oneshot_layer()` を呼び出してください。
ワンショットレイヤーについては、キーを押した時に `set_oneshot_layer(LAYER, ONESHOT_START)` を呼び出し、キーを放した時に `clear_oneshot_layer_state(ONESHOT_PRESSED)` を呼び出す必要があります。ワンショットをキャンセルする場合は、`reset_oneshot_layer()` を呼び出してください。
ワンショットモッドについては、設定するためには `set_oneshot_mods(MOD_BIT(KC_*))` を呼び出し、キャンセルするためには `clear_oneshot_mods()` を呼び出す必要があります。

View File

@@ -1,8 +1,8 @@
# PR チェックリスト
<!---
original document: 0.10.7:docs/pr_checklist.md
git diff 0.10.7 HEAD -- docs/pr_checklist.md | cat
original document: 0.13.34:docs/pr_checklist.md
git diff 0.13.34 HEAD -- docs/pr_checklist.md | cat
-->
これは、提出された PR を QMK の協力者がレビューする際に何をチェックするのかの非網羅的なチェックリストです。
@@ -73,11 +73,13 @@ https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard
- キーボードが QMK で起動するために最低限必要なコードが存在する必要があります
- マトリックスと重要なデバイスの初期化コード
- (カスタムキーコードや特別なアニメーションなど)商用キーボードの既存の機能をミラーリングする場合は、`default` ではないキーマップを使って処理する必要があります
- Vial 関連のファイルまたは変更は QMK ファームウェアで使用されないため受け入れられません (Vial 固有のコアコードは提出またはマージされていません)
- `keyboard.c`
- 空の `xxxx_xxxx_kb()` または他の weak-define のデフォルト実装関数が削除されていること
- コメントアウトされた関数も削除されていること
- `matrix_init_board()` などが `keyboard_pre_init_kb()` に移行されました。[keyboard_pre_init*](https://docs.qmk.fm/#/ja/custom_quantum_functions?id=keyboard_pre_init_-function-documentation) を参照してください
- カスタムマトリックスを使用する場合は、`CUSTOM_MATRIX = lite` を選択し、標準のデバウンスを許可します。[マトリックスコードの部分置き換え](https://docs.qmk.fm/#/ja/custom_matrix?id=lite) を参照してください
- 可能な場合は、独自の `led_update_*()` 実装よりも LED インジケータの[設定オプション](https://docs.qmk.fm/#/ja/feature_led_indicators?id=configuration-options)を優先してください。
- `keyboard.h`
- 先頭に `#include "quantum.h"` を置きます
- `LAYOUT` マクロは、該当する場合は標準の定義を使用してください
@@ -95,9 +97,12 @@ https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard
...キーマップの `process_record_user()` 内で `layer_on()`、 `update_tri_layer()` を手動で処理する代わりに。
- default (および via) のキーマップは「素朴」でなければなりません。
- 他のユーザーが独自のユーザー固有のキーマップを開発するための「クリーンな状態」として使用するための最低限のもの。
- これらのキーマップで推奨される標準レイアウト(可能な場合)
- これらのキーマップで標準レイアウトが推奨されます(可能な場合)
- デフォルトのキーマップは VIA を有効にするべきではありません -- VIA の統合ドキュメント類には `via` という名前のキーマップが必要です。
- PR の提出者は、同じ PR に機能を紹介する個人的な(または豪華な)キーマップを持たせることができますが、「デフォルト」のキーマップに埋め込むべきではありません
- PR の提出者はまた、既存の商用キーボードへ QMK を移植する場合、その商用製品の既存の機能を反映する「製造業者に一致する」キーマップを持つことができます
- PR に VIA の json ファイルを含めないでください。これらは QMK ファームウェアで使われないため QMK リポジトリに属しません -- それらは [VIA のキーボードリポジトリ](https://github.com/the-via/keyboards)に属します。
さらに、ChibiOS に固有で:
- 既存の ChibiOS ボード定義を使用することを**強く**推奨します。
@@ -132,3 +137,9 @@ There are instructions on how to keep your fork updated here:
Thanks for contributing!
```
## レビュープロセス
一般的に、PR がマージの対象となる前に、意味のある(例えば、コードを検査した)2つ(またはそれ以上)の承認を確認したいと考えています。これらのレビューはコラボレータに限られません -- 時間を割いてくれるコミュニティメンバーは誰でも歓迎(奨励)されます。唯一の違いは、チェックマークが緑にならないことですが、それは問題ありません。
また、PR レビューは自由な時間に行われるものです。それは好意で行われるものなので、私たちはレビューに費やす時間に対して、報酬はうけとっていませんし埋め合わせもありません。そのため、私たちがあなたのプルリクエストに取り掛かるのには時間がかかります。家族や生活のことで PR に手が回らなくなることもあり、そして燃え尽き症候群は深刻な懸念です。QMK ファームウェアリポジトリは、毎月平均200件の PR が開かれ、200件の PR がマージされますので、しばらくお待ちください。

View File

@@ -25,14 +25,8 @@
### レイアウトの形式
`info.json` ファイル内の辞書の `layouts` 部分は、幾つかの入れ子になった辞書を含みます。外側のレイヤーは QMK レイアウトマクロで構成されます。例えば、`LAYOUT_ansi` あるいは `LAYOUT_iso`各レイアウトマクロ内には、`width``height``key_count` のキーがあります。これらは自明でなければなりません。
`info.json` ファイル内の辞書の `layouts` 部分は、幾つかの入れ子になった辞書を含みます。外側のレイヤーは QMK レイアウトマクロで構成されます。例えば、`LAYOUT_ansi` あるいは `LAYOUT_iso`
* `width`
* オプション: キー単位でのレイアウトの幅
* `height`
* オプション: キー単位でのレイアウトの高さ
* `key_count`
* オプション: このレイアウトのキーの数
* `layout`
* 物理レイアウトを説明するキー辞書のリスト。詳細は次のセクションを見てください。

View File

@@ -1,8 +1,8 @@
# QMK シラバス
<!---
original document: 0.9.51:docs/syllabus.md
git diff 0.9.51 HEAD -- docs/syllabus.md | cat
original document: 0.14.22:docs/syllabus.md
git diff 0.14.22 HEAD -- docs/syllabus.md | cat
-->
このページは最初に基本を紹介し、そして、QMK に習熟するために必要な全ての概念を理解するように導くことで、QMK の知識を構築するのに役立ちます。
@@ -45,6 +45,7 @@
* [タップダンス](ja/feature_tap_dance.md)
* [コンボ](ja/feature_combo.md)
* [ユーザスペース](ja/feature_userspace.md)
* [キーオーバーライド](ja/feature_key_overrides.md)
# 上級トピック
@@ -58,7 +59,7 @@
* **高度な機能**
* [ユニコード](ja/feature_unicode.md)
* [API](ja/api_overview.md)
* [ブートマジック](ja/feature_bootmagic.md)
* [ブートマジックライト](ja/feature_bootmagic.md)
* **ハードウェア**
* [キーボードがどのように動作するか](ja/how_keyboards_work.md)
* [キーボードマトリックスの仕組み](ja/how_a_matrix_works.md)

View File

@@ -1,15 +1,15 @@
# QMK のコードの理解
<!---
original document: 0.13.15:docs/understanding_qmk.md
git diff 0.13.15 HEAD -- docs/understanding_qmk.md | cat
original document: 0.14.22:docs/understanding_qmk.md
git diff 0.14.22 HEAD -- docs/understanding_qmk.md | cat
-->
このドキュメントでは、QMK ファームウェアがどのように機能するかを非常に高いレベルから説明しようとしています。基本的なプログラミングの概念を理解していることを前提としていますが、(実例を示す必要がある場合を除き) C に精通していることを前提にはしていません。以下のドキュメントの基本的な知識があることを前提としています。
* [入門](ja/getting_started_introduction.md)
* [キーボードがどのように動作するか](ja/how_keyboards_work.md)
* [FAQ](ja/faq.md)
* [FAQ](ja/faq_general.md)
## スタートアップ
@@ -138,41 +138,42 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
`process_record()` 関数自体は一見簡単に見えますが、その内部は QMK の様々なレベルで機能を上書きするためのゲートウェイが隠されています。キーボード/キーマップレベルの機能について調べる必要があるときは、以下に列挙した一連のイベントを手引帳として使います。`rules.mk` またはほかの場所で設定されたオプションに応じて、最終的なファームウェアに以下の関数のサブセットのみが含まれます。
* [`void process_record(keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/tmk_core/common/action.c#L172)
* [`bool process_record_quantum(keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/quantum.c#L206)
* [このレコードをキーコードにマップする](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/quantum.c#L226)
* [`void velocikey_accelerate(void)`](https://github.com/qmk/qmk_firmware/blob/c1c5922aae7b60b7c7d13d3769350eed9dda17ab/quantum/velocikey.c#L27)
* [`void preprocess_tap_dance(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_tap_dance.c#L119)
* [`bool process_key_lock(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_key_lock.c#L62)
* [`bool process_clicky(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_clicky.c#L79)
* [`bool process_haptic(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/2cee371bf125a6ec541dd7c5a809573facc7c456/drivers/haptic/haptic.c#L216)
* [`bool process_record_kb(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/keyboards/clueboard/card/card.c#L20)
* [`bool process_record_user(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/keyboards/clueboard/card/keymaps/default/keymap.c#L58)
* [`bool process_midi(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_midi.c#L81)
* [`bool process_audio(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_audio.c#L19)
* [`bool process_steno(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_steno.c#L160)
* [`bool process_music(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_music.c#L114)
* [`bool process_tap_dance(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_tap_dance.c#L141)
* [`bool process_unicode_common(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_unicode_common.c#L169) は、以下のいずれかを呼び出します:
* [`bool process_unicode(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_unicode.c#L20)
* [`bool process_unicodemap(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_unicodemap.c#L46)
* [`bool process_ucis(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_ucis.c#L95)
* [`bool process_leader(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_leader.c#L51)
* [`bool process_combo(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_combo.c#L115)
* [`bool process_printer(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_printer.c#L77)
* [`bool process_auto_shift(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_auto_shift.c#L94)
* [`bool process_terminal(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_terminal.c#L264)
* [Quantum 固有のキーコードを識別して処理する](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/quantum.c#L291)
* [`bool process_record_quantum(keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/quantum.c#L206)
* [このレコードをキーコードにマップする](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/quantum.c#L226)
* [`void velocikey_accelerate(void)`](https://github.com/qmk/qmk_firmware/blob/c1c5922aae7b60b7c7d13d3769350eed9dda17ab/quantum/velocikey.c#L27)
* [`void preprocess_tap_dance(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_tap_dance.c#L119)
* [`bool process_key_lock(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_key_lock.c#L62)
* [`bool process_clicky(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_clicky.c#L79)
* [`bool process_haptic(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/2cee371bf125a6ec541dd7c5a809573facc7c456/drivers/haptic/haptic.c#L216)
* [`bool process_record_kb(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/keyboards/clueboard/card/card.c#L20)
* [`bool process_record_user(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/keyboards/clueboard/card/keymaps/default/keymap.c#L58)
* [`bool process_midi(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_midi.c#L81)
* [`bool process_audio(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_audio.c#L19)
* [`bool process_steno(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_steno.c#L160)
* [`bool process_music(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_music.c#L114)
* [`bool process_key_override(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/5a1b857dea45a17698f6baa7dd1b7a7ea907fb0a/quantum/process_keycode/process_key_override.c#L397)
* [`bool process_tap_dance(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_tap_dance.c#L141)
* [`bool process_unicode_common(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_unicode_common.c#L169) は、以下のいずれかを呼び出します:
* [`bool process_unicode(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_unicode.c#L20)
* [`bool process_unicodemap(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_unicodemap.c#L46)
* [`bool process_ucis(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_ucis.c#L95)
* [`bool process_leader(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_leader.c#L51)
* [`bool process_combo(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_combo.c#L115)
* [`bool process_printer(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_printer.c#L77)
* [`bool process_auto_shift(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_auto_shift.c#L94)
* [`bool process_terminal(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_terminal.c#L264)
* [Quantum 固有のキーコードを識別して処理する](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/quantum.c#L291)
この一連のイベントの中の任意のステップで (`process_record_kb()` のような)関数は `false` を返して、以降の処理を停止することができます。
この呼び出しの後で、`post_process_record()` が呼ばれます。これはキーコードが通常処理された後に実行する必要がある追加のクリーンアップを処理するために使うことができます。
* [`void post_process_record(keyrecord_t *record)`]()
* [`void post_process_record_quantum(keyrecord_t *record)`]()
* [このレコードをキーコードにマップする]()
* [`void post_process_clicky(uint16_t keycode, keyrecord_t *record)`]()
* [`void post_process_record_kb(uint16_t keycode, keyrecord_t *record)`]()
* [`void post_process_record_user(uint16_t keycode, keyrecord_t *record)`]()
* [`void post_process_record_quantum(keyrecord_t *record)`]()
* [このレコードをキーコードにマップする]()
* [`void post_process_clicky(uint16_t keycode, keyrecord_t *record)`]()
* [`void post_process_record_kb(uint16_t keycode, keyrecord_t *record)`]()
* [`void post_process_record_user(uint16_t keycode, keyrecord_t *record)`]()
<!--
#### Mouse Handling

View File

@@ -344,6 +344,7 @@ See also: [Magic Keycodes](keycodes_magic.md)
|`MAGIC_TOGGLE_ALT_GUI` |`AG_TOGG`|Toggle Alt and GUI swap on both sides |
|`MAGIC_NO_GUI` |`GUI_OFF`|Disable the GUI keys |
|`MAGIC_UNNO_GUI` |`GUI_ON` |Enable the GUI keys |
|`MAGIC_TOGGLE_GUI` |`GUI_TOG`|Toggles the status of the GUI keys |
|`MAGIC_SWAP_GRAVE_ESC` |`GE_SWAP`|Swap <code>&#96;</code> and Escape |
|`MAGIC_UNSWAP_GRAVE_ESC` |`GE_NORM`|Unswap <code>&#96;</code> and Escape |
|`MAGIC_SWAP_BACKSLASH_BACKSPACE` |`BS_SWAP`|Swap `\` and Backspace |

View File

@@ -61,6 +61,77 @@ You may also run into issues when using Remote Desktop Connection on Windows. Be
To fix this, open Remote Desktop Connection, click on "Show Options", open the the "Local Resources" tab, and in the keyboard section, change the drop down to "On this Computer". This will fix the issue, and allow the characters to work correctly.
It can also be mitigated by increasing [`TAP_CODE_DELAY`](config_options.md#behaviors-that-can-be-configured).
## Intercepting Mod-Taps
### Changing tap function
The basic keycode limitation with Mod-Tap can be worked around by intercepting it in `process_record_user`. For example, shifted keycode `KC_DQUO` cannot be used with `MT()` because it is a 16-bit keycode alias of `LSFT(KC_QUOT)`. Modifiers on `KC_DQUO` will be masked by `MT()`. But the following custom code can be used to intercept the "tap" function to manually send `KC_DQUO`:
```c
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case LCTL_T(KC_DQUO):
if (record->tap.count && record->event.pressed) {
tap_code16(KC_DQUO); // Send KC_DQUO on tap
return false; // Return false to ignore further processing of key
}
break;
}
return true;
}
```
### Changing hold function
Likewise, similar custom code can also be used to intercept the hold function to send custom user key code. The following example uses `LT(0, kc)` (layer-tap key with no practical use because layer 0 is always active) to add cut, copy and paste function to X,C and V keys when they are held down:
```c
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case LT(0,KC_X):
if (!record->tap.count && record->event.pressed) {
tap_code16(C(KC_X)); // Intercept hold function to send Ctrl-X
return false;
}
return true; // Return true for normal processing of tap keycode
case LT(0,KC_C):
if (!record->tap.count && record->event.pressed) {
tap_code16(C(KC_C)); // Intercept hold function to send Ctrl-C
return false;
}
return true; // Return true for normal processing of tap keycode
case LT(0,KC_V):
if (!record->tap.count && record->event.pressed) {
tap_code16(C(KC_V)); // Intercept hold function to send Ctrl-V
return false;
}
return true; // Return true for normal processing of tap keycode
}
return true;
}
```
Enabling `IGNORE_MOD_TAP_INTERRUPT` is recommended when using Mod-Tap on alphanumeric keys to avoid hold function taking precendence when the next key is pressed quickly. See [Ignore Mod Tap Interrupt](tap_hold.md#ignore-mod-tap-interrupt) for more details.
### Changing both tap and hold
This last example implements custom tap and hold function with `LT(0,KC_NO)` to create a single copy-on-tap, paste-on-hold key:
```c
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case LT(0,KC_NO):
if (record->tap.count && record->event.pressed) {
tap_code16(C(KC_C)); // Intercept tap function to send Ctrl-C
} else if (record->event.pressed) {
tap_code16(C(KC_V)); // Intercept hold function to send Ctrl-V
}
return false;
}
return true;
}
```
## Other Resources
See the [Tap-Hold Configuration Options](tap_hold.md) for additional flags that tweak Mod-Tap behavior.

View File

@@ -194,7 +194,7 @@ You can also set your default keymap name. Most people use their GitHub username
qmk config user.keymap=<github_username>
After this you can leave those arguments off and compile your keyboard like this:
The keyboard can now be compiled without arguments using the following command after creating your keymap in the next section:
qmk compile

View File

@@ -4,22 +4,24 @@ This is a non-exhaustive checklist of what the QMK Collaborators will be checkin
If there are any inconsistencies with these recommendations, you're best off [creating an issue](https://github.com/qmk/qmk_firmware/issues/new) against this document, or getting in touch with a QMK Collaborator on [Discord](https://discord.gg/Uq7gcHh).
## General PRs
## Requirements for all PRs
- PR should be submitted using a non-`master` branch on the source repository
- this does not mean you target a different branch for your PR, rather that you're not working out of your own master branch
- if submitter _does_ use their own `master` branch, they'll be given a link to the ["how to git"](https://docs.qmk.fm/#/newbs_git_using_your_master_branch) page after merging -- (end of this document will contain the contents of the message)
- newly-added directories and filenames must be lowercase
- this rule may be relaxed if upstream sources originally had uppercase characters (e.g. ChibiOS, or imported files from other repositories etc.)
- if there is enough justification (i.e. consistency with existing core files etc.) this can be relaxed
- this rule may be relaxed if upstream sources originally had uppercase characters (e.g. LUFA, ChibiOS, or imported files from other repositories etc.)
- if there is valid justification (i.e. consistency with existing core files etc.) this can be relaxed
- a board designer naming their keyboard with uppercase letters is not enough justification
- valid license headers on all `*.c` and `*.h` source files
- GPL2/GPL3 recommended for consistency
- an example GPL2+ license header may be copied and modified from the bottom of this document
- other licenses are permitted, however they must be GPL-compatible and must allow for redistribution. Using a different license will almost certainly delay a PR getting merged.
- missing license headers will prevent PR merge due to ambiguity with license compatibility
- QMK Codebase "best practices" followed
- this is not an exhaustive list, and will likely get amended as time goes by
- `#pragma once` instead of `#ifndef` include guards in header files
- no "old-school" GPIO/I2C/SPI functions used -- must use QMK abstractions unless justifiable (and laziness is not valid justification)
- no "old-school" or other low-level GPIO/I2C/SPI functions may be used -- must use QMK abstractions unless justifiable (and laziness is not valid justification)
- timing abstractions should be followed too:
- `wait_ms()` instead of `_delay_ms()` (remove `#include <util/delay.h>` too)
- `timer_read()` and `timer_read32()` etc. -- see [timer.h](https://github.com/qmk/qmk_firmware/blob/master/tmk_core/common/timer.h) for the timing APIs
@@ -28,7 +30,7 @@ If there are any inconsistencies with these recommendations, you're best off [cr
- discuss it with QMK Collaborators on Discord
- refactor it as a separate core change
- remove your specific copy in your board
- rebase and fix all merge conflicts before opening the PR (in case you need help or advice, reach out to QMK Collaborators on Discord)
- fix all merge conflicts before opening the PR (in case you need help or advice, reach out to QMK Collaborators on Discord)
## Keymap PRs
@@ -48,11 +50,13 @@ https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard
- valid maintainer
- displays correctly in Configurator (press Ctrl+Shift+I to preview local file, turn on fast input to verify ordering)
- `readme.md`
- standard template should be present
- flash command has `:flash` at end
- standard template should be present -- [link to template](https://github.com/qmk/qmk_firmware/blob/master/data/templates/avr/readme.md)
- flash command is present, and has `:flash` at end
- valid hardware availability link (unless handwired) -- private groupbuys are okay, but one-off prototypes will be questioned. If open-source, a link to files should be provided.
- clear instructions on how to reset the board into bootloader mode
- a picture about the keyboard and preferably about the PCB, too
- images are not to be placed in the `qmk_firmware` repository
- images should be uploaded to an external image hosting service, such as [imgur](https://imgur.com/).
- `rules.mk`
- removed `MIDI_ENABLE`, `FAUXCLICKY_ENABLE` and `HD44780_ENABLE`
- modified `# Enable Bluetooth with the Adafruit EZ-Key HID` -> `# Enable Bluetooth`
@@ -69,20 +73,20 @@ https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard
- initialisation code for the matrix and critical devices
- mirroring existing functionality of a commercial board (like custom keycodes and special animations etc.) should be handled through non-`default` keymaps
- Vial-related files or changes will not be accepted, as they are not used by QMK firmware (no Vial-specific core code has been submitted or merged)
- `keyboard.c`
- `<keyboard>.c`
- empty `xxxx_xxxx_kb()` or other weak-defined default implemented functions removed
- commented-out functions removed too
- `matrix_init_board()` etc. migrated to `keyboard_pre_init_kb()`, see: [keyboard_pre_init*](https://docs.qmk.fm/#/custom_quantum_functions?id=keyboard_pre_init_-function-documentation)
- prefer `CUSTOM_MATRIX = lite` if custom matrix used, allows for standard debounce, see [custom matrix 'lite'](https://docs.qmk.fm/#/custom_matrix?id=lite)
- prefer LED indicator [Configuration Options](https://docs.qmk.fm/#/feature_led_indicators?id=configuration-options) to custom `led_update_*()` implementations where possible
- `keyboard.h`
- `<keyboard>.h`
- `#include "quantum.h"` appears at the top
- `LAYOUT` macros should use standard definitions if applicable
- use the Community Layout macro names where they apply (preferred above `LAYOUT`/`LAYOUT_all`)
- keymap `config.h`
- no duplication of `rules.mk` or `config.h` from keyboard
- `keymaps/default/keymap.c`
- `QMKBEST`/`QMKURL` removed (sheesh)
- `QMKBEST`/`QMKURL` removed
- if using `MO(_LOWER)` and `MO(_RAISE)` keycodes or equivalent, and the keymap has an adjust layer when holding both keys -- if the keymap has no "direct-to-adjust" keycode (such as `MO(_ADJUST)`) then you should prefer to write...
```
layer_state_t layer_state_set_user(layer_state_t state) {
@@ -97,7 +101,9 @@ https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard
- 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
- 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 source files from another keyboard or vendors keyboard folder. Including core files is fine.
- For instance, only `wilba_tech` boards using be including `keyboards/wilba_tech/wt_main.c` and `keyboards/wilba_tech/wt_rgb_backlight.c`. But including `drivers/sensors/pmw3360.c` is absolutely fine.
- Code that needs to be used by multiple boards is a candidate for core code changes, and should be separated out.
Also, specific to ChibiOS:
- **strong** preference to using existing ChibiOS board definitions.
@@ -112,7 +118,7 @@ Also, specific to ChibiOS:
## Core PRs
- must now target `develop` branch, which will subsequently be merged back to `master` on the breaking changes timeline
- other notes TBD
- other requirements are at the discretion of QMK collaborators
- core is a lot more subjective given the breadth of posted changes
---
@@ -134,6 +140,33 @@ Thanks for contributing!
## Review Process
In general, we want to see two (or more) approvals that are meaningful (e.g. that have inspected code) before a PR will be considered for merge. These reviews are not limited to collaborators -- any community member willing to put in the time is welcomed (and encouraged). The only difference is that your checkmark won't be green, and that's fine!
In general, we want to see two (or more) approvals that are meaningful (e.g. that have inspected code) before a PR will be considered for merge. These reviews are not limited to collaborators -- any community member willing to put in the time is welcomed (and encouraged). The only difference is that your checkmark won't be green, and that's fine!
Additionally, PR reviews are something that is done in our free time. We are not paid nor compensated for the time we spend reviewing, as it is a labor of love. As such, this means that it can take time for us to get to your Pull Request. Things like family, or life can get in the way of us getting to PRs, and burnout is a serious concern. The QMK firmware repository averages 200 PRs opened and 200 PRs merged every month, so please have patience.
## Example GPLv2 Header
```
/* Copyright 2021 Your Name (@yourgithub)
*
* 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/>.
*/
```
Or, optionally, using [SPDX identifier](https://spdx.org/licenses/) instead:
```
// Copyright 2021 Your Name (@yourgithub)
// SPDX-License-Identifier: GPL-2.0-or-later
```

View File

@@ -130,7 +130,7 @@ A 1 byte number that is sent as part of a HID report over USB that represents a
## Space Cadet Shift
A special set of shift keys which allow you to type various types of braces by tapping the left or right shift one or more times.
* [Space Cadet Shift Documentation](feature_space_cadet_shift.md)
* [Space Cadet Shift Documentation](feature_space_cadet.md)
## Tap
Pressing and releasing a key. In some situations you will need to distinguish between a key down and a key up event, and Tap always refers to both at once.

View File

@@ -9,39 +9,39 @@ You can create `info.json` files at every level under `qmk_firmware/keyboards/<n
The `info.json` file is a JSON formatted dictionary with the following keys available to be set. You do not have to set all of them, merely the keys that apply to your keyboard.
* `keyboard_name`
* A free-form text string describing the keyboard.
* Example: `Clueboard 66%`
* A free-form text string describing the keyboard.
* Example: `Clueboard 66%`
* `manufacturer`
* A free-form text string describing the keyboard's manufacturer.
* Example: `Clueboard`
* `url`
* A URL to the keyboard's product page, [QMK.fm/keyboards](https://qmk.fm/keyboards) page, or other page describing information about the keyboard.
* A URL to the keyboard's product page, [QMK.fm/keyboards](https://qmk.fm/keyboards) page, or other page describing information about the keyboard.
* Example: `https://clueboard.co`
* `maintainer`
* GitHub username of the maintainer, or `qmk` for community maintained boards
* GitHub username of the maintainer, or `qmk` for community maintained boards.
* Example: `skullydazed`
* `debounce`
* How many milliseconds (ms) to wait for debounce to happen. (Default: 5)
* The amount of time in milliseconds to wait for debounce to happen.
* Default: `5`
* `diode_direction`
* The direction diodes face. See [`DIRECT_PINS` in the hardware configuration](https://docs.qmk.fm/#/config_options?id=hardware-options) for more details.
* The direction diodes face. See [`DIRECT_PINS` in the hardware configuration](https://docs.qmk.fm/#/config_options?id=hardware-options) for more details.
* `layout_aliases`
* A dictionary containing layout aliases. The key is the alias and the value is a layout in `layouts` it maps to.
* A dictionary containing layout aliases. The key is the alias and the value is a layout in `layouts` it maps to.
* `layouts`
* Physical Layout representations. See the [Layout Format](#layout_format) section for more detail.
* Physical Layout representations. See the [Layout Format](#layout_format) section for more detail.
* `matrix_pins`
* Configure the pins corresponding to columns and rows, or direct pins. See [Matrix Pins](#matrix_pins) for more detail.
* Configure the pins corresponding to columns and rows, or direct pins. See the [Matrix Pins](#matrix_pins) section for more detail.
* `rgblight`
* Configure the [RGB Lighting feature](feature_rgblight.md). See the [RGB Lighting](#rgb_lighting) section for more detail.
* Configure the [RGB Lighting feature](feature_rgblight.md). See the [RGB Lighting](#rgb_lighting) section for more detail.
* `usb`
* Configure USB VID, PID, and other parameters. See [USB](#USB) for more detail.
* Configure USB VID, PID, and other parameters. See the [USB](#USB) section for more detail.
### Layout Format
Within our `info.json` file the `layouts` portion of the dictionary contains several nested dictionaries. The outer layer consists of QMK layout macros, for example `LAYOUT_ansi` or `LAYOUT_iso`. Within each layout macro are keys for `width`, `height`, and `key_count`, each of which should be self-explanatory.
Within our `info.json` file the `layouts` portion of the dictionary contains several nested dictionaries. The outer layer consists of QMK layout macros, for example `LAYOUT_ansi` or `LAYOUT_iso`.
* `width`
* Optional: The width of the layout in Key Units
* `height`
* Optional: The height of the layout in Key Units
* `key_count`
* Optional: The number of keys in this layout
* `layout`
* A list of Key Dictionaries describing the physical layout. See the next section for more details.
* A list of Key Dictionaries describing the physical layout. See the next section for more details.
### Key Dictionary Format
@@ -50,18 +50,20 @@ Each Key Dictionary in a layout describes the physical properties of a key. If y
All key positions and rotations are specified in relation to the top-left corner of the keyboard, and the top-left corner of each key.
* `x`
* **Required**: The absolute position of the key in the horizontal axis, in Key Units.
* **Required**. The absolute position of the key in the horizontal axis, in Key Units.
* `y`
* **Required**: The absolute position of the key in the vertical axis, in Key Units.
* **Required**. The absolute position of the key in the vertical axis, in Key Units.
* `w`
* The width of the key, in Key Units. Ignored if `ks` is provided. Default: `1`
* The width of the key, in Key Units.
* Default: `1`
* `h`
* The height of the key, in Key Units. Ignored if `ks` is provided. Default: `1`
* The height of the key, in Key Units.
* Default: `1`
* `label`
* What to name this position in the matrix.
* This should usually correspond to the keycode for the first layer of the default keymap.
* What to name this position in the matrix. This should usually correspond to the keycode for the first layer of the default keymap.
* `matrix`
* A 2 item list describing the row and column location for this key.
* A two item list describing the row and column location for this key.
* Example: `[0, 4]`
### Matrix Pins
@@ -75,11 +77,11 @@ Example:
```json
{
"diode_direction": "COL2ROW",
"matrix_pins": {
"cols": ["F4", "E6", "B1", "D2"],
"rows": ["B0", "D3", "D5", "D4", "D6"]
}
"diode_direction": "COL2ROW",
"matrix_pins": {
"cols": ["F4", "E6", "B1", "D2"],
"rows": ["B0", "D3", "D5", "D4", "D6"]
}
}
```
@@ -150,23 +152,23 @@ Example:
}
```
#### RGB Light Animations
#### RGBLight Animations
The following animations can be enabled:
| Key | Description |
|-----|-------------|
| `all` | Enable all additional animation modes. |
| `alternating` | Enable alternating animation mode. |
| `breathing` | Enable breathing animation mode. |
| `christmas` | Enable christmas animation mode. |
| `knight` | Enable knight animation mode. |
| `rainbow_mood` | Enable rainbow mood animation mode. |
| `rainbow_swirl` | Enable rainbow swirl animation mode. |
| `rgb_test` | Enable RGB test animation mode. |
| `snake` | Enable snake animation mode. |
| `static_gradient` | Enable static gradient mode. |
| `twinkle` | Enable twinkle animation mode. |
|Key |Description |
|-----------------|--------------------------------------|
|`all` |Enable all additional animation modes.|
|`alternating` |Enable alternating animation mode. |
|`breathing` |Enable breathing animation mode. |
|`christmas` |Enable christmas animation mode. |
|`knight` |Enable knight animation mode. |
|`rainbow_mood` |Enable rainbow mood animation mode. |
|`rainbow_swirl` |Enable rainbow swirl animation mode. |
|`rgb_test` |Enable RGB test animation mode. |
|`snake` |Enable snake animation mode. |
|`static_gradient`|Enable static gradient mode. |
|`twinkle` |Enable twinkle animation mode. |
### USB
@@ -176,10 +178,10 @@ Example:
```json
{
"usb": {
"vid": "0xC1ED",
"pid": "0x23B0",
"device_ver": "0x0001"
}
"usb": {
"vid": "0xC1ED",
"pid": "0x23B0",
"device_ver": "0x0001"
}
}
```

View File

@@ -4,7 +4,7 @@ This document attempts to explain how the QMK firmware works from a very high le
* [Introduction](getting_started_introduction.md)
* [How Keyboards Work](how_keyboards_work.md)
* [FAQ](faq.md)
* [FAQ](faq_general.md)
## Startup

View File

@@ -275,11 +275,11 @@ void keyboard_post_init_user(void) {
```c
void suspend_power_down_user(void) {
rgb_matrix_set_suspend_state(true);
// code will run multiple times while keyboard is suspended
}
void suspend_wakeup_init_user(void) {
rgb_matrix_set_suspend_state(false);
// code will run on keyboard wakeup
}
```

View File

@@ -73,7 +73,7 @@ uint8_t g_twi_transfer_buffer[20] = {0xFF};
// buffers and the transfers in IS31FL3741_write_pwm_buffer() but it's
// probably not worth the extra complexity.
uint8_t g_pwm_buffer[DRIVER_COUNT][ISSI_MAX_LEDS];
bool g_pwm_buffer_update_required = false;
bool g_pwm_buffer_update_required[DRIVER_COUNT] = {false};
bool g_scaling_registers_update_required[DRIVER_COUNT] = {false};
uint8_t g_scaling_registers[DRIVER_COUNT][ISSI_MAX_LEDS];
@@ -169,10 +169,10 @@ void IS31FL3741_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) {
if (index >= 0 && index < DRIVER_LED_TOTAL) {
is31_led led = g_is31_leds[index];
g_pwm_buffer[led.driver][led.r] = red;
g_pwm_buffer[led.driver][led.g] = green;
g_pwm_buffer[led.driver][led.b] = blue;
g_pwm_buffer_update_required = true;
g_pwm_buffer[led.driver][led.r] = red;
g_pwm_buffer[led.driver][led.g] = green;
g_pwm_buffer[led.driver][led.b] = blue;
g_pwm_buffer_update_required[led.driver] = true;
}
}
@@ -206,12 +206,12 @@ void IS31FL3741_set_led_control_register(uint8_t index, bool red, bool green, bo
g_scaling_registers_update_required[led.driver] = true;
}
void IS31FL3741_update_pwm_buffers(uint8_t addr1, uint8_t addr2) {
if (g_pwm_buffer_update_required) {
IS31FL3741_write_pwm_buffer(addr1, g_pwm_buffer[0]);
void IS31FL3741_update_pwm_buffers(uint8_t addr, uint8_t index) {
if (g_pwm_buffer_update_required[index]) {
IS31FL3741_write_pwm_buffer(addr, g_pwm_buffer[index]);
}
g_pwm_buffer_update_required = false;
g_pwm_buffer_update_required[index] = false;
}
void IS31FL3741_set_pwm_buffer(const is31_led *pled, uint8_t red, uint8_t green, uint8_t blue) {
@@ -219,7 +219,7 @@ void IS31FL3741_set_pwm_buffer(const is31_led *pled, uint8_t red, uint8_t green,
g_pwm_buffer[pled->driver][pled->g] = green;
g_pwm_buffer[pled->driver][pled->b] = blue;
g_pwm_buffer_update_required = true;
g_pwm_buffer_update_required[pled->driver] = true;
}
void IS31FL3741_update_led_control_registers(uint8_t addr, uint8_t index) {

View File

@@ -45,8 +45,8 @@ void IS31FL3741_set_led_control_register(uint8_t index, bool red, bool green, bo
// (eg. from a timer interrupt).
// Call this while idle (in between matrix scans).
// If the buffer is dirty, it will update the driver with the buffer.
void IS31FL3741_update_pwm_buffers(uint8_t addr1, uint8_t addr2);
void IS31FL3741_update_led_control_registers(uint8_t addr1, uint8_t addr2);
void IS31FL3741_update_pwm_buffers(uint8_t addr, uint8_t index);
void IS31FL3741_update_led_control_registers(uint8_t addr, uint8_t index);
void IS31FL3741_set_scaling_registers(const is31_led *pled, uint8_t red, uint8_t green, uint8_t blue);
void IS31FL3741_set_pwm_buffer(const is31_led *pled, uint8_t red, uint8_t green, uint8_t blue);

View File

@@ -313,6 +313,10 @@ bool oled_scroll_left(void);
// Returns true if the screen was not scrolling or stops scrolling
bool oled_scroll_off(void);
// Returns true if the oled is currently scrolling, false if it is
// not
bool is_oled_scrolling(void);
// Inverts the display
// Returns true if the screen was or is inverted
bool oled_invert(bool invert);

View File

@@ -692,6 +692,8 @@ bool oled_scroll_off(void) {
return !oled_scrolling;
}
bool is_oled_scrolling(void) { return oled_scrolling; }
bool oled_invert(bool invert) {
if (!oled_initialized) {
return oled_inverted;

View File

@@ -149,7 +149,7 @@ void micro_oled_init(void) {
#endif
send_command(MEMORYMODE);
send_command(0x02); // 0x02 = 10b, Page addressing mode
send_command(0x02); // 0x02 = 10b, Page addressing mode
send_command(SETCOMPINS); // 0xDA
if (LCDHEIGHT > 32) {

View File

@@ -17,7 +17,6 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "adns5050.h"
#include "wait.h"
#include "debug.h"
@@ -61,13 +60,9 @@ void adns_sync(void) {
writePinHigh(ADNS_CS_PIN);
}
void adns_cs_select(void) {
writePinLow(ADNS_CS_PIN);
}
void adns_cs_select(void) { writePinLow(ADNS_CS_PIN); }
void adns_cs_deselect(void) {
writePinHigh(ADNS_CS_PIN);
}
void adns_cs_deselect(void) { writePinHigh(ADNS_CS_PIN); }
uint8_t adns_serial_read(void) {
setPinInput(ADNS_SDIO_PIN);
@@ -121,7 +116,7 @@ uint8_t adns_read_reg(uint8_t reg_addr) {
// We don't need a minimum tSRAD here. That's because a 4ms wait time is
// already included in adns_serial_write(), so we're good.
// See page 10 and 15 of the ADNS spec sheet.
//wait_us(4);
// wait_us(4);
uint8_t byte = adns_serial_read();
@@ -138,7 +133,7 @@ uint8_t adns_read_reg(uint8_t reg_addr) {
void adns_write_reg(uint8_t reg_addr, uint8_t data) {
adns_cs_select();
adns_serial_write( 0b10000000 | reg_addr );
adns_serial_write(0b10000000 | reg_addr);
adns_serial_write(data);
adns_cs_deselect();
}
@@ -155,7 +150,7 @@ report_adns_t adns_read_burst(void) {
// We don't need a minimum tSRAD here. That's because a 4ms wait time is
// already included in adns_serial_write(), so we're good.
// See page 10 and 15 of the ADNS spec sheet.
//wait_us(4);
// wait_us(4);
uint8_t x = adns_serial_read();
uint8_t y = adns_serial_read();
@@ -180,13 +175,11 @@ int8_t convert_twoscomp(uint8_t data) {
}
// Don't forget to use the definitions for CPI in the header file.
void adns_set_cpi(uint8_t cpi) {
adns_write_reg(REG_MOUSE_CONTROL2, cpi);
}
void adns_set_cpi(uint8_t cpi) { adns_write_reg(REG_MOUSE_CONTROL2, cpi); }
bool adns_check_signature(void) {
uint8_t pid = adns_read_reg(REG_PRODUCT_ID);
uint8_t rid = adns_read_reg(REG_REVISION_ID);
uint8_t pid = adns_read_reg(REG_PRODUCT_ID);
uint8_t rid = adns_read_reg(REG_REVISION_ID);
uint8_t pid2 = adns_read_reg(REG_PRODUCT_ID2);
return (pid == 0x12 && rid == 0x01 && pid2 == 0x26);

View File

@@ -67,13 +67,13 @@ typedef struct {
// A bunch of functions to implement the ADNS5050-specific serial protocol.
// Note that the "serial.h" driver is insufficient, because it does not
// manually manipulate a serial clock signal.
void adns_init(void);
void adns_sync(void);
uint8_t adns_serial_read(void);
void adns_serial_write(uint8_t data);
uint8_t adns_read_reg(uint8_t reg_addr);
void adns_write_reg(uint8_t reg_addr, uint8_t data);
void adns_init(void);
void adns_sync(void);
uint8_t adns_serial_read(void);
void adns_serial_write(uint8_t data);
uint8_t adns_read_reg(uint8_t reg_addr);
void adns_write_reg(uint8_t reg_addr, uint8_t data);
report_adns_t adns_read_burst(void);
int8_t convert_twoscomp(uint8_t data);
void adns_set_cpi(uint8_t cpi);
bool adns_check_signature(void);
int8_t convert_twoscomp(uint8_t data);
void adns_set_cpi(uint8_t cpi);
bool adns_check_signature(void);

View File

@@ -20,57 +20,57 @@
#include "adns9800.h"
// registers
#define REG_Product_ID 0x00
#define REG_Revision_ID 0x01
#define REG_Motion 0x02
#define REG_Delta_X_L 0x03
#define REG_Delta_X_H 0x04
#define REG_Delta_Y_L 0x05
#define REG_Delta_Y_H 0x06
#define REG_SQUAL 0x07
#define REG_Pixel_Sum 0x08
#define REG_Maximum_Pixel 0x09
#define REG_Minimum_Pixel 0x0a
#define REG_Shutter_Lower 0x0b
#define REG_Shutter_Upper 0x0c
#define REG_Frame_Period_Lower 0x0d
#define REG_Frame_Period_Upper 0x0e
#define REG_Configuration_I 0x0f
#define REG_Configuration_II 0x10
#define REG_Frame_Capture 0x12
#define REG_SROM_Enable 0x13
#define REG_Run_Downshift 0x14
#define REG_Rest1_Rate 0x15
#define REG_Rest1_Downshift 0x16
#define REG_Rest2_Rate 0x17
#define REG_Rest2_Downshift 0x18
#define REG_Rest3_Rate 0x19
#define REG_Frame_Period_Max_Bound_Lower 0x1a
#define REG_Frame_Period_Max_Bound_Upper 0x1b
#define REG_Frame_Period_Min_Bound_Lower 0x1c
#define REG_Frame_Period_Min_Bound_Upper 0x1d
#define REG_Shutter_Max_Bound_Lower 0x1e
#define REG_Shutter_Max_Bound_Upper 0x1f
#define REG_LASER_CTRL0 0x20
#define REG_Observation 0x24
#define REG_Data_Out_Lower 0x25
#define REG_Data_Out_Upper 0x26
#define REG_SROM_ID 0x2a
#define REG_Lift_Detection_Thr 0x2e
#define REG_Configuration_V 0x2f
#define REG_Configuration_IV 0x39
#define REG_Power_Up_Reset 0x3a
#define REG_Shutdown 0x3b
#define REG_Inverse_Product_ID 0x3f
#define REG_Motion_Burst 0x50
#define REG_SROM_Load_Burst 0x62
#define REG_Pixel_Burst 0x64
#define REG_Product_ID 0x00
#define REG_Revision_ID 0x01
#define REG_Motion 0x02
#define REG_Delta_X_L 0x03
#define REG_Delta_X_H 0x04
#define REG_Delta_Y_L 0x05
#define REG_Delta_Y_H 0x06
#define REG_SQUAL 0x07
#define REG_Pixel_Sum 0x08
#define REG_Maximum_Pixel 0x09
#define REG_Minimum_Pixel 0x0a
#define REG_Shutter_Lower 0x0b
#define REG_Shutter_Upper 0x0c
#define REG_Frame_Period_Lower 0x0d
#define REG_Frame_Period_Upper 0x0e
#define REG_Configuration_I 0x0f
#define REG_Configuration_II 0x10
#define REG_Frame_Capture 0x12
#define REG_SROM_Enable 0x13
#define REG_Run_Downshift 0x14
#define REG_Rest1_Rate 0x15
#define REG_Rest1_Downshift 0x16
#define REG_Rest2_Rate 0x17
#define REG_Rest2_Downshift 0x18
#define REG_Rest3_Rate 0x19
#define REG_Frame_Period_Max_Bound_Lower 0x1a
#define REG_Frame_Period_Max_Bound_Upper 0x1b
#define REG_Frame_Period_Min_Bound_Lower 0x1c
#define REG_Frame_Period_Min_Bound_Upper 0x1d
#define REG_Shutter_Max_Bound_Lower 0x1e
#define REG_Shutter_Max_Bound_Upper 0x1f
#define REG_LASER_CTRL0 0x20
#define REG_Observation 0x24
#define REG_Data_Out_Lower 0x25
#define REG_Data_Out_Upper 0x26
#define REG_SROM_ID 0x2a
#define REG_Lift_Detection_Thr 0x2e
#define REG_Configuration_V 0x2f
#define REG_Configuration_IV 0x39
#define REG_Power_Up_Reset 0x3a
#define REG_Shutdown 0x3b
#define REG_Inverse_Product_ID 0x3f
#define REG_Motion_Burst 0x50
#define REG_SROM_Load_Burst 0x62
#define REG_Pixel_Burst 0x64
#define ADNS_CLOCK_SPEED 2000000
#define MIN_CPI 200
#define MAX_CPI 8200
#define CPI_STEP 200
#define CLAMP_CPI(value) value < MIN_CPI ? MIN_CPI : value > MAX_CPI ? MAX_CPI : value
#define CLAMP_CPI(value) value<MIN_CPI ? MIN_CPI : value> MAX_CPI ? MAX_CPI : value
#define SPI_MODE 3
#define SPI_DIVISOR (F_CPU / ADNS_CLOCK_SPEED)
#define US_BETWEEN_WRITES 120
@@ -78,15 +78,11 @@
#define US_BEFORE_MOTION 100
#define MSB1 0x80
extern const uint16_t adns_firmware_length;
extern const uint8_t adns_firmware_data[];
extern const uint8_t firmware_data[];
void adns_spi_start(void){
spi_start(SPI_SS_PIN, false, SPI_MODE, SPI_DIVISOR);
}
void adns_write(uint8_t reg_addr, uint8_t data){
void adns_spi_start(void) { spi_start(SPI_SS_PIN, false, SPI_MODE, SPI_DIVISOR); }
void adns_write(uint8_t reg_addr, uint8_t data) {
adns_spi_start();
spi_write(reg_addr | MSB1);
spi_write(data);
@@ -94,10 +90,9 @@ void adns_write(uint8_t reg_addr, uint8_t data){
wait_us(US_BETWEEN_WRITES);
}
uint8_t adns_read(uint8_t reg_addr){
uint8_t adns_read(uint8_t reg_addr) {
adns_spi_start();
spi_write(reg_addr & 0x7f );
spi_write(reg_addr & 0x7f);
uint8_t data = spi_read();
spi_stop();
wait_us(US_BETWEEN_READS);
@@ -106,7 +101,6 @@ uint8_t adns_read(uint8_t reg_addr){
}
void adns_init() {
setPinOutput(SPI_SS_PIN);
spi_init();
@@ -145,8 +139,8 @@ void adns_init() {
// send all bytes of the firmware
unsigned char c;
for(int i = 0; i < adns_firmware_length; i++){
c = (unsigned char)pgm_read_byte(adns_firmware_data + i);
for (int i = 0; i < FIRMWARE_LENGTH; i++) {
c = (unsigned char)pgm_read_byte(firmware_data + i);
spi_write(c);
wait_us(15);
}
@@ -162,7 +156,7 @@ void adns_init() {
config_adns_t adns_get_config(void) {
uint8_t config_1 = adns_read(REG_Configuration_I);
return (config_adns_t){ (config_1 & 0xFF) * CPI_STEP };
return (config_adns_t){(config_1 & 0xFF) * CPI_STEP};
}
void adns_set_config(config_adns_t config) {
@@ -170,20 +164,17 @@ void adns_set_config(config_adns_t config) {
adns_write(REG_Configuration_I, config_1);
}
static int16_t convertDeltaToInt(uint8_t high, uint8_t low){
static int16_t convertDeltaToInt(uint8_t high, uint8_t low) {
// join bytes into twos compliment
uint16_t twos_comp = (high << 8) | low;
// convert twos comp to int
if (twos_comp & 0x8000)
return -1 * (~twos_comp + 1);
if (twos_comp & 0x8000) return -1 * (~twos_comp + 1);
return twos_comp;
}
report_adns_t adns_get_report(void) {
report_adns_t report = {0, 0};
adns_spi_start();
@@ -195,8 +186,7 @@ report_adns_t adns_get_report(void) {
uint8_t motion = spi_read();
if(motion & 0x80) {
if (motion & 0x80) {
// clear observation register
spi_read();

View File

@@ -28,8 +28,8 @@ typedef struct {
int16_t y;
} report_adns_t;
void adns_init(void);
void adns_init(void);
config_adns_t adns_get_config(void);
void adns_set_config(config_adns_t);
void adns_set_config(config_adns_t);
/* Reads and clears the current delta values on the ADNS sensor */
report_adns_t adns_get_report(void);

File diff suppressed because it is too large Load Diff

View File

@@ -23,55 +23,55 @@
#include "pmw3360_firmware.h"
// Registers
#define REG_Product_ID 0x00
#define REG_Revision_ID 0x01
#define REG_Motion 0x02
#define REG_Delta_X_L 0x03
#define REG_Delta_X_H 0x04
#define REG_Delta_Y_L 0x05
#define REG_Delta_Y_H 0x06
#define REG_SQUAL 0x07
#define REG_Raw_Data_Sum 0x08
#define REG_Maximum_Raw_data 0x09
#define REG_Minimum_Raw_data 0x0A
#define REG_Shutter_Lower 0x0B
#define REG_Shutter_Upper 0x0C
#define REG_Control 0x0D
#define REG_Config1 0x0F
#define REG_Config2 0x10
#define REG_Angle_Tune 0x11
#define REG_Frame_Capture 0x12
#define REG_SROM_Enable 0x13
#define REG_Run_Downshift 0x14
#define REG_Rest1_Rate_Lower 0x15
#define REG_Rest1_Rate_Upper 0x16
#define REG_Rest1_Downshift 0x17
#define REG_Rest2_Rate_Lower 0x18
#define REG_Rest2_Rate_Upper 0x19
#define REG_Rest2_Downshift 0x1A
#define REG_Rest3_Rate_Lower 0x1B
#define REG_Rest3_Rate_Upper 0x1C
#define REG_Observation 0x24
#define REG_Data_Out_Lower 0x25
#define REG_Data_Out_Upper 0x26
#define REG_Raw_Data_Dump 0x29
#define REG_SROM_ID 0x2A
#define REG_Min_SQ_Run 0x2B
#define REG_Raw_Data_Threshold 0x2C
#define REG_Config5 0x2F
#define REG_Power_Up_Reset 0x3A
#define REG_Shutdown 0x3B
#define REG_Inverse_Product_ID 0x3F
#define REG_LiftCutoff_Tune3 0x41
#define REG_Angle_Snap 0x42
#define REG_LiftCutoff_Tune1 0x4A
#define REG_Motion_Burst 0x50
#define REG_LiftCutoff_Tune_Timeout 0x58
#define REG_Product_ID 0x00
#define REG_Revision_ID 0x01
#define REG_Motion 0x02
#define REG_Delta_X_L 0x03
#define REG_Delta_X_H 0x04
#define REG_Delta_Y_L 0x05
#define REG_Delta_Y_H 0x06
#define REG_SQUAL 0x07
#define REG_Raw_Data_Sum 0x08
#define REG_Maximum_Raw_data 0x09
#define REG_Minimum_Raw_data 0x0A
#define REG_Shutter_Lower 0x0B
#define REG_Shutter_Upper 0x0C
#define REG_Control 0x0D
#define REG_Config1 0x0F
#define REG_Config2 0x10
#define REG_Angle_Tune 0x11
#define REG_Frame_Capture 0x12
#define REG_SROM_Enable 0x13
#define REG_Run_Downshift 0x14
#define REG_Rest1_Rate_Lower 0x15
#define REG_Rest1_Rate_Upper 0x16
#define REG_Rest1_Downshift 0x17
#define REG_Rest2_Rate_Lower 0x18
#define REG_Rest2_Rate_Upper 0x19
#define REG_Rest2_Downshift 0x1A
#define REG_Rest3_Rate_Lower 0x1B
#define REG_Rest3_Rate_Upper 0x1C
#define REG_Observation 0x24
#define REG_Data_Out_Lower 0x25
#define REG_Data_Out_Upper 0x26
#define REG_Raw_Data_Dump 0x29
#define REG_SROM_ID 0x2A
#define REG_Min_SQ_Run 0x2B
#define REG_Raw_Data_Threshold 0x2C
#define REG_Config5 0x2F
#define REG_Power_Up_Reset 0x3A
#define REG_Shutdown 0x3B
#define REG_Inverse_Product_ID 0x3F
#define REG_LiftCutoff_Tune3 0x41
#define REG_Angle_Snap 0x42
#define REG_LiftCutoff_Tune1 0x4A
#define REG_Motion_Burst 0x50
#define REG_LiftCutoff_Tune_Timeout 0x58
#define REG_LiftCutoff_Tune_Min_Length 0x5A
#define REG_SROM_Load_Burst 0x62
#define REG_Lift_Config 0x63
#define REG_Raw_Data_Burst 0x64
#define REG_LiftCutoff_Tune2 0x65
#define REG_SROM_Load_Burst 0x62
#define REG_Lift_Config 0x63
#define REG_Raw_Data_Burst 0x64
#define REG_LiftCutoff_Tune2 0x65
bool _inBurst = false;
@@ -196,7 +196,7 @@ void pmw_upload_firmware(void) {
wait_us(15);
unsigned char c;
for (int i = 0; i < firmware_length; i++) {
for (int i = 0; i < FIRMWARE_LENGTH; i++) {
c = (unsigned char)pgm_read_byte(firmware_data + i);
spi_write(c);
wait_us(15);

View File

@@ -66,20 +66,17 @@ typedef struct {
int8_t mdy;
} report_pmw_t;
bool spi_start_adv(void);
void spi_stop_adv(void);
bool spi_start_adv(void);
void spi_stop_adv(void);
spi_status_t spi_write_adv(uint8_t reg_addr, uint8_t data);
uint8_t spi_read_adv(uint8_t reg_addr);
bool pmw_spi_init(void);
void pmw_set_cpi(uint16_t cpi);
uint16_t pmw_get_cpi(void);
void pmw_upload_firmware(void);
bool pmw_check_signature(void);
uint8_t spi_read_adv(uint8_t reg_addr);
bool pmw_spi_init(void);
void pmw_set_cpi(uint16_t cpi);
uint16_t pmw_get_cpi(void);
void pmw_upload_firmware(void);
bool pmw_check_signature(void);
report_pmw_t pmw_read_burst(void);
#define degToRad(angleInDegrees) ((angleInDegrees)*M_PI / 180.0)
#define radToDeg(angleInRadians) ((angleInRadians)*180.0 / M_PI)
#define constrain(amt, low, high) ((amt) < (low) ? (low) : ((amt) > (high) ? (high) : (amt)))

View File

@@ -18,283 +18,266 @@
#pragma once
// clang-format off
// Firmware Blob foor PMW3360
const uint16_t firmware_length = 4094;
// clang-format off
const uint8_t firmware_data[] PROGMEM = { // SROM 0x04
0x01, 0x04, 0x8e, 0x96, 0x6e, 0x77, 0x3e, 0xfe, 0x7e, 0x5f, 0x1d, 0xb8, 0xf2, 0x66, 0x4e,
0xff, 0x5d, 0x19, 0xb0, 0xc2, 0x04, 0x69, 0x54, 0x2a, 0xd6, 0x2e, 0xbf, 0xdd, 0x19, 0xb0,
0xc3, 0xe5, 0x29, 0xb1, 0xe0, 0x23, 0xa5, 0xa9, 0xb1, 0xc1, 0x00, 0x82, 0x67, 0x4c, 0x1a,
0x97, 0x8d, 0x79, 0x51, 0x20, 0xc7, 0x06, 0x8e, 0x7c, 0x7c, 0x7a, 0x76, 0x4f, 0xfd, 0x59,
0x30, 0xe2, 0x46, 0x0e, 0x9e, 0xbe, 0xdf, 0x1d, 0x99, 0x91, 0xa0, 0xa5, 0xa1, 0xa9, 0xd0,
0x22, 0xc6, 0xef, 0x5c, 0x1b, 0x95, 0x89, 0x90, 0xa2, 0xa7, 0xcc, 0xfb, 0x55, 0x28, 0xb3,
0xe4, 0x4a, 0xf7, 0x6c, 0x3b, 0xf4, 0x6a, 0x56, 0x2e, 0xde, 0x1f, 0x9d, 0xb8, 0xd3, 0x05,
0x88, 0x92, 0xa6, 0xce, 0x1e, 0xbe, 0xdf, 0x1d, 0x99, 0xb0, 0xe2, 0x46, 0xef, 0x5c, 0x07,
0x11, 0x5d, 0x98, 0x0b, 0x9d, 0x94, 0x97, 0xee, 0x4e, 0x45, 0x33, 0x6b, 0x44, 0xc7, 0x29,
0x56, 0x27, 0x30, 0xc6, 0xa7, 0xd5, 0xf2, 0x56, 0xdf, 0xb4, 0x38, 0x62, 0xcb, 0xa0, 0xb6,
0xe3, 0x0f, 0x84, 0x06, 0x24, 0x05, 0x65, 0x6f, 0x76, 0x89, 0xb5, 0x77, 0x41, 0x27, 0x82,
0x66, 0x65, 0x82, 0xcc, 0xd5, 0xe6, 0x20, 0xd5, 0x27, 0x17, 0xc5, 0xf8, 0x03, 0x23, 0x7c,
0x5f, 0x64, 0xa5, 0x1d, 0xc1, 0xd6, 0x36, 0xcb, 0x4c, 0xd4, 0xdb, 0x66, 0xd7, 0x8b, 0xb1,
0x99, 0x7e, 0x6f, 0x4c, 0x36, 0x40, 0x06, 0xd6, 0xeb, 0xd7, 0xa2, 0xe4, 0xf4, 0x95, 0x51,
0x5a, 0x54, 0x96, 0xd5, 0x53, 0x44, 0xd7, 0x8c, 0xe0, 0xb9, 0x40, 0x68, 0xd2, 0x18, 0xe9,
0xdd, 0x9a, 0x23, 0x92, 0x48, 0xee, 0x7f, 0x43, 0xaf, 0xea, 0x77, 0x38, 0x84, 0x8c, 0x0a,
0x72, 0xaf, 0x69, 0xf8, 0xdd, 0xf1, 0x24, 0x83, 0xa3, 0xf8, 0x4a, 0xbf, 0xf5, 0x94, 0x13,
0xdb, 0xbb, 0xd8, 0xb4, 0xb3, 0xa0, 0xfb, 0x45, 0x50, 0x60, 0x30, 0x59, 0x12, 0x31, 0x71,
0xa2, 0xd3, 0x13, 0xe7, 0xfa, 0xe7, 0xce, 0x0f, 0x63, 0x15, 0x0b, 0x6b, 0x94, 0xbb, 0x37,
0x83, 0x26, 0x05, 0x9d, 0xfb, 0x46, 0x92, 0xfc, 0x0a, 0x15, 0xd1, 0x0d, 0x73, 0x92, 0xd6,
0x8c, 0x1b, 0x8c, 0xb8, 0x55, 0x8a, 0xce, 0xbd, 0xfe, 0x8e, 0xfc, 0xed, 0x09, 0x12, 0x83,
0x91, 0x82, 0x51, 0x31, 0x23, 0xfb, 0xb4, 0x0c, 0x76, 0xad, 0x7c, 0xd9, 0xb4, 0x4b, 0xb2,
0x67, 0x14, 0x09, 0x9c, 0x7f, 0x0c, 0x18, 0xba, 0x3b, 0xd6, 0x8e, 0x14, 0x2a, 0xe4, 0x1b,
0x52, 0x9f, 0x2b, 0x7d, 0xe1, 0xfb, 0x6a, 0x33, 0x02, 0xfa, 0xac, 0x5a, 0xf2, 0x3e, 0x88,
0x7e, 0xae, 0xd1, 0xf3, 0x78, 0xe8, 0x05, 0xd1, 0xe3, 0xdc, 0x21, 0xf6, 0xe1, 0x9a, 0xbd,
0x17, 0x0e, 0xd9, 0x46, 0x9b, 0x88, 0x03, 0xea, 0xf6, 0x66, 0xbe, 0x0e, 0x1b, 0x50, 0x49,
0x96, 0x40, 0x97, 0xf1, 0xf1, 0xe4, 0x80, 0xa6, 0x6e, 0xe8, 0x77, 0x34, 0xbf, 0x29, 0x40,
0x44, 0xc2, 0xff, 0x4e, 0x98, 0xd3, 0x9c, 0xa3, 0x32, 0x2b, 0x76, 0x51, 0x04, 0x09, 0xe7,
0xa9, 0xd1, 0xa6, 0x32, 0xb1, 0x23, 0x53, 0xe2, 0x47, 0xab, 0xd6, 0xf5, 0x69, 0x5c, 0x3e,
0x5f, 0xfa, 0xae, 0x45, 0x20, 0xe5, 0xd2, 0x44, 0xff, 0x39, 0x32, 0x6d, 0xfd, 0x27, 0x57,
0x5c, 0xfd, 0xf0, 0xde, 0xc1, 0xb5, 0x99, 0xe5, 0xf5, 0x1c, 0x77, 0x01, 0x75, 0xc5, 0x6d,
0x58, 0x92, 0xf2, 0xb2, 0x47, 0x00, 0x01, 0x26, 0x96, 0x7a, 0x30, 0xff, 0xb7, 0xf0, 0xef,
0x77, 0xc1, 0x8a, 0x5d, 0xdc, 0xc0, 0xd1, 0x29, 0x30, 0x1e, 0x77, 0x38, 0x7a, 0x94, 0xf1,
0xb8, 0x7a, 0x7e, 0xef, 0xa4, 0xd1, 0xac, 0x31, 0x4a, 0xf2, 0x5d, 0x64, 0x3d, 0xb2, 0xe2,
0xf0, 0x08, 0x99, 0xfc, 0x70, 0xee, 0x24, 0xa7, 0x7e, 0xee, 0x1e, 0x20, 0x69, 0x7d, 0x44,
0xbf, 0x87, 0x42, 0xdf, 0x88, 0x3b, 0x0c, 0xda, 0x42, 0xc9, 0x04, 0xf9, 0x45, 0x50, 0xfc,
0x83, 0x8f, 0x11, 0x6a, 0x72, 0xbc, 0x99, 0x95, 0xf0, 0xac, 0x3d, 0xa7, 0x3b, 0xcd, 0x1c,
0xe2, 0x88, 0x79, 0x37, 0x11, 0x5f, 0x39, 0x89, 0x95, 0x0a, 0x16, 0x84, 0x7a, 0xf6, 0x8a,
0xa4, 0x28, 0xe4, 0xed, 0x83, 0x80, 0x3b, 0xb1, 0x23, 0xa5, 0x03, 0x10, 0xf4, 0x66, 0xea,
0xbb, 0x0c, 0x0f, 0xc5, 0xec, 0x6c, 0x69, 0xc5, 0xd3, 0x24, 0xab, 0xd4, 0x2a, 0xb7, 0x99,
0x88, 0x76, 0x08, 0xa0, 0xa8, 0x95, 0x7c, 0xd8, 0x38, 0x6d, 0xcd, 0x59, 0x02, 0x51, 0x4b,
0xf1, 0xb5, 0x2b, 0x50, 0xe3, 0xb6, 0xbd, 0xd0, 0x72, 0xcf, 0x9e, 0xfd, 0x6e, 0xbb, 0x44,
0xc8, 0x24, 0x8a, 0x77, 0x18, 0x8a, 0x13, 0x06, 0xef, 0x97, 0x7d, 0xfa, 0x81, 0xf0, 0x31,
0xe6, 0xfa, 0x77, 0xed, 0x31, 0x06, 0x31, 0x5b, 0x54, 0x8a, 0x9f, 0x30, 0x68, 0xdb, 0xe2,
0x40, 0xf8, 0x4e, 0x73, 0xfa, 0xab, 0x74, 0x8b, 0x10, 0x58, 0x13, 0xdc, 0xd2, 0xe6, 0x78,
0xd1, 0x32, 0x2e, 0x8a, 0x9f, 0x2c, 0x58, 0x06, 0x48, 0x27, 0xc5, 0xa9, 0x5e, 0x81, 0x47,
0x89, 0x46, 0x21, 0x91, 0x03, 0x70, 0xa4, 0x3e, 0x88, 0x9c, 0xda, 0x33, 0x0a, 0xce, 0xbc,
0x8b, 0x8e, 0xcf, 0x9f, 0xd3, 0x71, 0x80, 0x43, 0xcf, 0x6b, 0xa9, 0x51, 0x83, 0x76, 0x30,
0x82, 0xc5, 0x6a, 0x85, 0x39, 0x11, 0x50, 0x1a, 0x82, 0xdc, 0x1e, 0x1c, 0xd5, 0x7d, 0xa9,
0x71, 0x99, 0x33, 0x47, 0x19, 0x97, 0xb3, 0x5a, 0xb1, 0xdf, 0xed, 0xa4, 0xf2, 0xe6, 0x26,
0x84, 0xa2, 0x28, 0x9a, 0x9e, 0xdf, 0xa6, 0x6a, 0xf4, 0xd6, 0xfc, 0x2e, 0x5b, 0x9d, 0x1a,
0x2a, 0x27, 0x68, 0xfb, 0xc1, 0x83, 0x21, 0x4b, 0x90, 0xe0, 0x36, 0xdd, 0x5b, 0x31, 0x42,
0x55, 0xa0, 0x13, 0xf7, 0xd0, 0x89, 0x53, 0x71, 0x99, 0x57, 0x09, 0x29, 0xc5, 0xf3, 0x21,
0xf8, 0x37, 0x2f, 0x40, 0xf3, 0xd4, 0xaf, 0x16, 0x08, 0x36, 0x02, 0xfc, 0x77, 0xc5, 0x8b,
0x04, 0x90, 0x56, 0xb9, 0xc9, 0x67, 0x9a, 0x99, 0xe8, 0x00, 0xd3, 0x86, 0xff, 0x97, 0x2d,
0x08, 0xe9, 0xb7, 0xb3, 0x91, 0xbc, 0xdf, 0x45, 0xc6, 0xed, 0x0f, 0x8c, 0x4c, 0x1e, 0xe6,
0x5b, 0x6e, 0x38, 0x30, 0xe4, 0xaa, 0xe3, 0x95, 0xde, 0xb9, 0xe4, 0x9a, 0xf5, 0xb2, 0x55,
0x9a, 0x87, 0x9b, 0xf6, 0x6a, 0xb2, 0xf2, 0x77, 0x9a, 0x31, 0xf4, 0x7a, 0x31, 0xd1, 0x1d,
0x04, 0xc0, 0x7c, 0x32, 0xa2, 0x9e, 0x9a, 0xf5, 0x62, 0xf8, 0x27, 0x8d, 0xbf, 0x51, 0xff,
0xd3, 0xdf, 0x64, 0x37, 0x3f, 0x2a, 0x6f, 0x76, 0x3a, 0x7d, 0x77, 0x06, 0x9e, 0x77, 0x7f,
0x5e, 0xeb, 0x32, 0x51, 0xf9, 0x16, 0x66, 0x9a, 0x09, 0xf3, 0xb0, 0x08, 0xa4, 0x70, 0x96,
0x46, 0x30, 0xff, 0xda, 0x4f, 0xe9, 0x1b, 0xed, 0x8d, 0xf8, 0x74, 0x1f, 0x31, 0x92, 0xb3,
0x73, 0x17, 0x36, 0xdb, 0x91, 0x30, 0xd6, 0x88, 0x55, 0x6b, 0x34, 0x77, 0x87, 0x7a, 0xe7,
0xee, 0x06, 0xc6, 0x1c, 0x8c, 0x19, 0x0c, 0x48, 0x46, 0x23, 0x5e, 0x9c, 0x07, 0x5c, 0xbf,
0xb4, 0x7e, 0xd6, 0x4f, 0x74, 0x9c, 0xe2, 0xc5, 0x50, 0x8b, 0xc5, 0x8b, 0x15, 0x90, 0x60,
0x62, 0x57, 0x29, 0xd0, 0x13, 0x43, 0xa1, 0x80, 0x88, 0x91, 0x00, 0x44, 0xc7, 0x4d, 0x19,
0x86, 0xcc, 0x2f, 0x2a, 0x75, 0x5a, 0xfc, 0xeb, 0x97, 0x2a, 0x70, 0xe3, 0x78, 0xd8, 0x91,
0xb0, 0x4f, 0x99, 0x07, 0xa3, 0x95, 0xea, 0x24, 0x21, 0xd5, 0xde, 0x51, 0x20, 0x93, 0x27,
0x0a, 0x30, 0x73, 0xa8, 0xff, 0x8a, 0x97, 0xe9, 0xa7, 0x6a, 0x8e, 0x0d, 0xe8, 0xf0, 0xdf,
0xec, 0xea, 0xb4, 0x6c, 0x1d, 0x39, 0x2a, 0x62, 0x2d, 0x3d, 0x5a, 0x8b, 0x65, 0xf8, 0x90,
0x05, 0x2e, 0x7e, 0x91, 0x2c, 0x78, 0xef, 0x8e, 0x7a, 0xc1, 0x2f, 0xac, 0x78, 0xee, 0xaf,
0x28, 0x45, 0x06, 0x4c, 0x26, 0xaf, 0x3b, 0xa2, 0xdb, 0xa3, 0x93, 0x06, 0xb5, 0x3c, 0xa5,
0xd8, 0xee, 0x8f, 0xaf, 0x25, 0xcc, 0x3f, 0x85, 0x68, 0x48, 0xa9, 0x62, 0xcc, 0x97, 0x8f,
0x7f, 0x2a, 0xea, 0xe0, 0x15, 0x0a, 0xad, 0x62, 0x07, 0xbd, 0x45, 0xf8, 0x41, 0xd8, 0x36,
0xcb, 0x4c, 0xdb, 0x6e, 0xe6, 0x3a, 0xe7, 0xda, 0x15, 0xe9, 0x29, 0x1e, 0x12, 0x10, 0xa0,
0x14, 0x2c, 0x0e, 0x3d, 0xf4, 0xbf, 0x39, 0x41, 0x92, 0x75, 0x0b, 0x25, 0x7b, 0xa3, 0xce,
0x39, 0x9c, 0x15, 0x64, 0xc8, 0xfa, 0x3d, 0xef, 0x73, 0x27, 0xfe, 0x26, 0x2e, 0xce, 0xda,
0x6e, 0xfd, 0x71, 0x8e, 0xdd, 0xfe, 0x76, 0xee, 0xdc, 0x12, 0x5c, 0x02, 0xc5, 0x3a, 0x4e,
0x4e, 0x4f, 0xbf, 0xca, 0x40, 0x15, 0xc7, 0x6e, 0x8d, 0x41, 0xf1, 0x10, 0xe0, 0x4f, 0x7e,
0x97, 0x7f, 0x1c, 0xae, 0x47, 0x8e, 0x6b, 0xb1, 0x25, 0x31, 0xb0, 0x73, 0xc7, 0x1b, 0x97,
0x79, 0xf9, 0x80, 0xd3, 0x66, 0x22, 0x30, 0x07, 0x74, 0x1e, 0xe4, 0xd0, 0x80, 0x21, 0xd6,
0xee, 0x6b, 0x6c, 0x4f, 0xbf, 0xf5, 0xb7, 0xd9, 0x09, 0x87, 0x2f, 0xa9, 0x14, 0xbe, 0x27,
0xd9, 0x72, 0x50, 0x01, 0xd4, 0x13, 0x73, 0xa6, 0xa7, 0x51, 0x02, 0x75, 0x25, 0xe1, 0xb3,
0x45, 0x34, 0x7d, 0xa8, 0x8e, 0xeb, 0xf3, 0x16, 0x49, 0xcb, 0x4f, 0x8c, 0xa1, 0xb9, 0x36,
0x85, 0x39, 0x75, 0x5d, 0x08, 0x00, 0xae, 0xeb, 0xf6, 0xea, 0xd7, 0x13, 0x3a, 0x21, 0x5a,
0x5f, 0x30, 0x84, 0x52, 0x26, 0x95, 0xc9, 0x14, 0xf2, 0x57, 0x55, 0x6b, 0xb1, 0x10, 0xc2,
0xe1, 0xbd, 0x3b, 0x51, 0xc0, 0xb7, 0x55, 0x4c, 0x71, 0x12, 0x26, 0xc7, 0x0d, 0xf9, 0x51,
0xa4, 0x38, 0x02, 0x05, 0x7f, 0xb8, 0xf1, 0x72, 0x4b, 0xbf, 0x71, 0x89, 0x14, 0xf3, 0x77,
0x38, 0xd9, 0x71, 0x24, 0xf3, 0x00, 0x11, 0xa1, 0xd8, 0xd4, 0x69, 0x27, 0x08, 0x37, 0x35,
0xc9, 0x11, 0x9d, 0x90, 0x1c, 0x0e, 0xe7, 0x1c, 0xff, 0x2d, 0x1e, 0xe8, 0x92, 0xe1, 0x18,
0x10, 0x95, 0x7c, 0xe0, 0x80, 0xf4, 0x96, 0x43, 0x21, 0xf9, 0x75, 0x21, 0x64, 0x38, 0xdd,
0x9f, 0x1e, 0x95, 0x16, 0xda, 0x56, 0x1d, 0x4f, 0x9a, 0x53, 0xb2, 0xe2, 0xe4, 0x18, 0xcb,
0x6b, 0x1a, 0x65, 0xeb, 0x56, 0xc6, 0x3b, 0xe5, 0xfe, 0xd8, 0x26, 0x3f, 0x3a, 0x84, 0x59,
0x72, 0x66, 0xa2, 0xf3, 0x75, 0xff, 0xfb, 0x60, 0xb3, 0x22, 0xad, 0x3f, 0x2d, 0x6b, 0xf9,
0xeb, 0xea, 0x05, 0x7c, 0xd8, 0x8f, 0x6d, 0x2c, 0x98, 0x9e, 0x2b, 0x93, 0xf1, 0x5e, 0x46,
0xf0, 0x87, 0x49, 0x29, 0x73, 0x68, 0xd7, 0x7f, 0xf9, 0xf0, 0xe5, 0x7d, 0xdb, 0x1d, 0x75,
0x19, 0xf3, 0xc4, 0x58, 0x9b, 0x17, 0x88, 0xa8, 0x92, 0xe0, 0xbe, 0xbd, 0x8b, 0x1d, 0x8d,
0x9f, 0x56, 0x76, 0xad, 0xaf, 0x29, 0xe2, 0xd9, 0xd5, 0x52, 0xf6, 0xb5, 0x56, 0x35, 0x57,
0x3a, 0xc8, 0xe1, 0x56, 0x43, 0x19, 0x94, 0xd3, 0x04, 0x9b, 0x6d, 0x35, 0xd8, 0x0b, 0x5f,
0x4d, 0x19, 0x8e, 0xec, 0xfa, 0x64, 0x91, 0x0a, 0x72, 0x20, 0x2b, 0xbc, 0x1a, 0x4a, 0xfe,
0x8b, 0xfd, 0xbb, 0xed, 0x1b, 0x23, 0xea, 0xad, 0x72, 0x82, 0xa1, 0x29, 0x99, 0x71, 0xbd,
0xf0, 0x95, 0xc1, 0x03, 0xdd, 0x7b, 0xc2, 0xb2, 0x3c, 0x28, 0x54, 0xd3, 0x68, 0xa4, 0x72,
0xc8, 0x66, 0x96, 0xe0, 0xd1, 0xd8, 0x7f, 0xf8, 0xd1, 0x26, 0x2b, 0xf7, 0xad, 0xba, 0x55,
0xca, 0x15, 0xb9, 0x32, 0xc3, 0xe5, 0x88, 0x97, 0x8e, 0x5c, 0xfb, 0x92, 0x25, 0x8b, 0xbf,
0xa2, 0x45, 0x55, 0x7a, 0xa7, 0x6f, 0x8b, 0x57, 0x5b, 0xcf, 0x0e, 0xcb, 0x1d, 0xfb, 0x20,
0x82, 0x77, 0xa8, 0x8c, 0xcc, 0x16, 0xce, 0x1d, 0xfa, 0xde, 0xcc, 0x0b, 0x62, 0xfe, 0xcc,
0xe1, 0xb7, 0xf0, 0xc3, 0x81, 0x64, 0x73, 0x40, 0xa0, 0xc2, 0x4d, 0x89, 0x11, 0x75, 0x33,
0x55, 0x33, 0x8d, 0xe8, 0x4a, 0xfd, 0xea, 0x6e, 0x30, 0x0b, 0xd7, 0x31, 0x2c, 0xde, 0x47,
0xe3, 0xbf, 0xf8, 0x55, 0x42, 0xe2, 0x7f, 0x59, 0xe5, 0x17, 0xef, 0x99, 0x34, 0x69, 0x91,
0xb1, 0x23, 0x8e, 0x20, 0x87, 0x2d, 0xa8, 0xfe, 0xd5, 0x8a, 0xf3, 0x84, 0x3a, 0xf0, 0x37,
0xe4, 0x09, 0x00, 0x54, 0xee, 0x67, 0x49, 0x93, 0xe4, 0x81, 0x70, 0xe3, 0x90, 0x4d, 0xef,
0xfe, 0x41, 0xb7, 0x99, 0x7b, 0xc1, 0x83, 0xba, 0x62, 0x12, 0x6f, 0x7d, 0xde, 0x6b, 0xaf,
0xda, 0x16, 0xf9, 0x55, 0x51, 0xee, 0xa6, 0x0c, 0x2b, 0x02, 0xa3, 0xfd, 0x8d, 0xfb, 0x30,
0x17, 0xe4, 0x6f, 0xdf, 0x36, 0x71, 0xc4, 0xca, 0x87, 0x25, 0x48, 0xb0, 0x47, 0xec, 0xea,
0xb4, 0xbf, 0xa5, 0x4d, 0x9b, 0x9f, 0x02, 0x93, 0xc4, 0xe3, 0xe4, 0xe8, 0x42, 0x2d, 0x68,
0x81, 0x15, 0x0a, 0xeb, 0x84, 0x5b, 0xd6, 0xa8, 0x74, 0xfb, 0x7d, 0x1d, 0xcb, 0x2c, 0xda,
0x46, 0x2a, 0x76, 0x62, 0xce, 0xbc, 0x5c, 0x9e, 0x8b, 0xe7, 0xcf, 0xbe, 0x78, 0xf5, 0x7c,
0xeb, 0xb3, 0x3a, 0x9c, 0xaa, 0x6f, 0xcc, 0x72, 0xd1, 0x59, 0xf2, 0x11, 0x23, 0xd6, 0x3f,
0x48, 0xd1, 0xb7, 0xce, 0xb0, 0xbf, 0xcb, 0xea, 0x80, 0xde, 0x57, 0xd4, 0x5e, 0x97, 0x2f,
0x75, 0xd1, 0x50, 0x8e, 0x80, 0x2c, 0x66, 0x79, 0xbf, 0x72, 0x4b, 0xbd, 0x8a, 0x81, 0x6c,
0xd3, 0xe1, 0x01, 0xdc, 0xd2, 0x15, 0x26, 0xc5, 0x36, 0xda, 0x2c, 0x1a, 0xc0, 0x27, 0x94,
0xed, 0xb7, 0x9b, 0x85, 0x0b, 0x5e, 0x80, 0x97, 0xc5, 0xec, 0x4f, 0xec, 0x88, 0x5d, 0x50,
0x07, 0x35, 0x47, 0xdc, 0x0b, 0x3b, 0x3d, 0xdd, 0x60, 0xaf, 0xa8, 0x5d, 0x81, 0x38, 0x24,
0x25, 0x5d, 0x5c, 0x15, 0xd1, 0xde, 0xb3, 0xab, 0xec, 0x05, 0x69, 0xef, 0x83, 0xed, 0x57,
0x54, 0xb8, 0x64, 0x64, 0x11, 0x16, 0x32, 0x69, 0xda, 0x9f, 0x2d, 0x7f, 0x36, 0xbb, 0x44,
0x5a, 0x34, 0xe8, 0x7f, 0xbf, 0x03, 0xeb, 0x00, 0x7f, 0x59, 0x68, 0x22, 0x79, 0xcf, 0x73,
0x6c, 0x2c, 0x29, 0xa7, 0xa1, 0x5f, 0x38, 0xa1, 0x1d, 0xf0, 0x20, 0x53, 0xe0, 0x1a, 0x63,
0x14, 0x58, 0x71, 0x10, 0xaa, 0x08, 0x0c, 0x3e, 0x16, 0x1a, 0x60, 0x22, 0x82, 0x7f, 0xba,
0xa4, 0x43, 0xa0, 0xd0, 0xac, 0x1b, 0xd5, 0x6b, 0x64, 0xb5, 0x14, 0x93, 0x31, 0x9e, 0x53,
0x50, 0xd0, 0x57, 0x66, 0xee, 0x5a, 0x4f, 0xfb, 0x03, 0x2a, 0x69, 0x58, 0x76, 0xf1, 0x83,
0xf7, 0x4e, 0xba, 0x8c, 0x42, 0x06, 0x60, 0x5d, 0x6d, 0xce, 0x60, 0x88, 0xae, 0xa4, 0xc3,
0xf1, 0x03, 0xa5, 0x4b, 0x98, 0xa1, 0xff, 0x67, 0xe1, 0xac, 0xa2, 0xb8, 0x62, 0xd7, 0x6f,
0xa0, 0x31, 0xb4, 0xd2, 0x77, 0xaf, 0x21, 0x10, 0x06, 0xc6, 0x9a, 0xff, 0x1d, 0x09, 0x17,
0x0e, 0x5f, 0xf1, 0xaa, 0x54, 0x34, 0x4b, 0x45, 0x8a, 0x87, 0x63, 0xa6, 0xdc, 0xf9, 0x24,
0x30, 0x67, 0xc6, 0xb2, 0xd6, 0x61, 0x33, 0x69, 0xee, 0x50, 0x61, 0x57, 0x28, 0xe7, 0x7e,
0xee, 0xec, 0x3a, 0x5a, 0x73, 0x4e, 0xa8, 0x8d, 0xe4, 0x18, 0xea, 0xec, 0x41, 0x64, 0xc8,
0xe2, 0xe8, 0x66, 0xb6, 0x2d, 0xb6, 0xfb, 0x6a, 0x6c, 0x16, 0xb3, 0xdd, 0x46, 0x43, 0xb9,
0x73, 0x00, 0x6a, 0x71, 0xed, 0x4e, 0x9d, 0x25, 0x1a, 0xc3, 0x3c, 0x4a, 0x95, 0x15, 0x99,
0x35, 0x81, 0x14, 0x02, 0xd6, 0x98, 0x9b, 0xec, 0xd8, 0x23, 0x3b, 0x84, 0x29, 0xaf, 0x0c,
0x99, 0x83, 0xa6, 0x9a, 0x34, 0x4f, 0xfa, 0xe8, 0xd0, 0x3c, 0x4b, 0xd0, 0xfb, 0xb6, 0x68,
0xb8, 0x9e, 0x8f, 0xcd, 0xf7, 0x60, 0x2d, 0x7a, 0x22, 0xe5, 0x7d, 0xab, 0x65, 0x1b, 0x95,
0xa7, 0xa8, 0x7f, 0xb6, 0x77, 0x47, 0x7b, 0x5f, 0x8b, 0x12, 0x72, 0xd0, 0xd4, 0x91, 0xef,
0xde, 0x19, 0x50, 0x3c, 0xa7, 0x8b, 0xc4, 0xa9, 0xb3, 0x23, 0xcb, 0x76, 0xe6, 0x81, 0xf0,
0xc1, 0x04, 0x8f, 0xa3, 0xb8, 0x54, 0x5b, 0x97, 0xac, 0x19, 0xff, 0x3f, 0x55, 0x27, 0x2f,
0xe0, 0x1d, 0x42, 0x9b, 0x57, 0xfc, 0x4b, 0x4e, 0x0f, 0xce, 0x98, 0xa9, 0x43, 0x57, 0x03,
0xbd, 0xe7, 0xc8, 0x94, 0xdf, 0x6e, 0x36, 0x73, 0x32, 0xb4, 0xef, 0x2e, 0x85, 0x7a, 0x6e,
0xfc, 0x6c, 0x18, 0x82, 0x75, 0x35, 0x90, 0x07, 0xf3, 0xe4, 0x9f, 0x3e, 0xdc, 0x68, 0xf3,
0xb5, 0xf3, 0x19, 0x80, 0x92, 0x06, 0x99, 0xa2, 0xe8, 0x6f, 0xff, 0x2e, 0x7f, 0xae, 0x42,
0xa4, 0x5f, 0xfb, 0xd4, 0x0e, 0x81, 0x2b, 0xc3, 0x04, 0xff, 0x2b, 0xb3, 0x74, 0x4e, 0x36,
0x5b, 0x9c, 0x15, 0x00, 0xc6, 0x47, 0x2b, 0xe8, 0x8b, 0x3d, 0xf1, 0x9c, 0x03, 0x9a, 0x58,
0x7f, 0x9b, 0x9c, 0xbf, 0x85, 0x49, 0x79, 0x35, 0x2e, 0x56, 0x7b, 0x41, 0x14, 0x39, 0x47,
0x83, 0x26, 0xaa, 0x07, 0x89, 0x98, 0x11, 0x1b, 0x86, 0xe7, 0x73, 0x7a, 0xd8, 0x7d, 0x78,
0x61, 0x53, 0xe9, 0x79, 0xf5, 0x36, 0x8d, 0x44, 0x92, 0x84, 0xf9, 0x13, 0x50, 0x58, 0x3b,
0xa4, 0x6a, 0x36, 0x65, 0x49, 0x8e, 0x3c, 0x0e, 0xf1, 0x6f, 0xd2, 0x84, 0xc4, 0x7e, 0x8e,
0x3f, 0x39, 0xae, 0x7c, 0x84, 0xf1, 0x63, 0x37, 0x8e, 0x3c, 0xcc, 0x3e, 0x44, 0x81, 0x45,
0xf1, 0x4b, 0xb9, 0xed, 0x6b, 0x36, 0x5d, 0xbb, 0x20, 0x60, 0x1a, 0x0f, 0xa3, 0xaa, 0x55,
0x77, 0x3a, 0xa9, 0xae, 0x37, 0x4d, 0xba, 0xb8, 0x86, 0x6b, 0xbc, 0x08, 0x50, 0xf6, 0xcc,
0xa4, 0xbd, 0x1d, 0x40, 0x72, 0xa5, 0x86, 0xfa, 0xe2, 0x10, 0xae, 0x3d, 0x58, 0x4b, 0x97,
0xf3, 0x43, 0x74, 0xa9, 0x9e, 0xeb, 0x21, 0xb7, 0x01, 0xa4, 0x86, 0x93, 0x97, 0xee, 0x2f,
0x4f, 0x3b, 0x86, 0xa1, 0x41, 0x6f, 0x41, 0x26, 0x90, 0x78, 0x5c, 0x7f, 0x30, 0x38, 0x4b,
0x3f, 0xaa, 0xec, 0xed, 0x5c, 0x6f, 0x0e, 0xad, 0x43, 0x87, 0xfd, 0x93, 0x35, 0xe6, 0x01,
0xef, 0x41, 0x26, 0x90, 0x99, 0x9e, 0xfb, 0x19, 0x5b, 0xad, 0xd2, 0x91, 0x8a, 0xe0, 0x46,
0xaf, 0x65, 0xfa, 0x4f, 0x84, 0xc1, 0xa1, 0x2d, 0xcf, 0x45, 0x8b, 0xd3, 0x85, 0x50, 0x55,
0x7c, 0xf9, 0x67, 0x88, 0xd4, 0x4e, 0xe9, 0xd7, 0x6b, 0x61, 0x54, 0xa1, 0xa4, 0xa6, 0xa2,
0xc2, 0xbf, 0x30, 0x9c, 0x40, 0x9f, 0x5f, 0xd7, 0x69, 0x2b, 0x24, 0x82, 0x5e, 0xd9, 0xd6,
0xa7, 0x12, 0x54, 0x1a, 0xf7, 0x55, 0x9f, 0x76, 0x50, 0xa9, 0x95, 0x84, 0xe6, 0x6b, 0x6d,
0xb5, 0x96, 0x54, 0xd6, 0xcd, 0xb3, 0xa1, 0x9b, 0x46, 0xa7, 0x94, 0x4d, 0xc4, 0x94, 0xb4,
0x98, 0xe3, 0xe1, 0xe2, 0x34, 0xd5, 0x33, 0x16, 0x07, 0x54, 0xcd, 0xb7, 0x77, 0x53, 0xdb,
0x4f, 0x4d, 0x46, 0x9d, 0xe9, 0xd4, 0x9c, 0x8a, 0x36, 0xb6, 0xb8, 0x38, 0x26, 0x6c, 0x0e,
0xff, 0x9c, 0x1b, 0x43, 0x8b, 0x80, 0xcc, 0xb9, 0x3d, 0xda, 0xc7, 0xf1, 0x8a, 0xf2, 0x6d,
0xb8, 0xd7, 0x74, 0x2f, 0x7e, 0x1e, 0xb7, 0xd3, 0x4a, 0xb4, 0xac, 0xfc, 0x79, 0x48, 0x6c,
0xbc, 0x96, 0xb6, 0x94, 0x46, 0x57, 0x2d, 0xb0, 0xa3, 0xfc, 0x1e, 0xb9, 0x52, 0x60, 0x85,
0x2d, 0x41, 0xd0, 0x43, 0x01, 0x1e, 0x1c, 0xd5, 0x7d, 0xfc, 0xf3, 0x96, 0x0d, 0xc7, 0xcb,
0x2a, 0x29, 0x9a, 0x93, 0xdd, 0x88, 0x2d, 0x37, 0x5d, 0xaa, 0xfb, 0x49, 0x68, 0xa0, 0x9c,
0x50, 0x86, 0x7f, 0x68, 0x56, 0x57, 0xf9, 0x79, 0x18, 0x39, 0xd4, 0xe0, 0x01, 0x84, 0x33,
0x61, 0xca, 0xa5, 0xd2, 0xd6, 0xe4, 0xc9, 0x8a, 0x4a, 0x23, 0x44, 0x4e, 0xbc, 0xf0, 0xdc,
0x24, 0xa1, 0xa0, 0xc4, 0xe2, 0x07, 0x3c, 0x10, 0xc4, 0xb5, 0x25, 0x4b, 0x65, 0x63, 0xf4,
0x80, 0xe7, 0xcf, 0x61, 0xb1, 0x71, 0x82, 0x21, 0x87, 0x2c, 0xf5, 0x91, 0x00, 0x32, 0x0c,
0xec, 0xa9, 0xb5, 0x9a, 0x74, 0x85, 0xe3, 0x36, 0x8f, 0x76, 0x4f, 0x9c, 0x6d, 0xce, 0xbc,
0xad, 0x0a, 0x4b, 0xed, 0x76, 0x04, 0xcb, 0xc3, 0xb9, 0x33, 0x9e, 0x01, 0x93, 0x96, 0x69,
0x7d, 0xc5, 0xa2, 0x45, 0x79, 0x9b, 0x04, 0x5c, 0x84, 0x09, 0xed, 0x88, 0x43, 0xc7, 0xab,
0x93, 0x14, 0x26, 0xa1, 0x40, 0xb5, 0xce, 0x4e, 0xbf, 0x2a, 0x42, 0x85, 0x3e, 0x2c, 0x3b,
0x54, 0xe8, 0x12, 0x1f, 0x0e, 0x97, 0x59, 0xb2, 0x27, 0x89, 0xfa, 0xf2, 0xdf, 0x8e, 0x68,
0x59, 0xdc, 0x06, 0xbc, 0xb6, 0x85, 0x0d, 0x06, 0x22, 0xec, 0xb1, 0xcb, 0xe5, 0x04, 0xe6,
0x3d, 0xb3, 0xb0, 0x41, 0x73, 0x08, 0x3f, 0x3c, 0x58, 0x86, 0x63, 0xeb, 0x50, 0xee, 0x1d,
0x2c, 0x37, 0x74, 0xa9, 0xd3, 0x18, 0xa3, 0x47, 0x6e, 0x93, 0x54, 0xad, 0x0a, 0x5d, 0xb8,
0x2a, 0x55, 0x5d, 0x78, 0xf6, 0xee, 0xbe, 0x8e, 0x3c, 0x76, 0x69, 0xb9, 0x40, 0xc2, 0x34,
0xec, 0x2a, 0xb9, 0xed, 0x7e, 0x20, 0xe4, 0x8d, 0x00, 0x38, 0xc7, 0xe6, 0x8f, 0x44, 0xa8,
0x86, 0xce, 0xeb, 0x2a, 0xe9, 0x90, 0xf1, 0x4c, 0xdf, 0x32, 0xfb, 0x73, 0x1b, 0x6d, 0x92,
0x1e, 0x95, 0xfe, 0xb4, 0xdb, 0x65, 0xdf, 0x4d, 0x23, 0x54, 0x89, 0x48, 0xbf, 0x4a, 0x2e,
0x70, 0xd6, 0xd7, 0x62, 0xb4, 0x33, 0x29, 0xb1, 0x3a, 0x33, 0x4c, 0x23, 0x6d, 0xa6, 0x76,
0xa5, 0x21, 0x63, 0x48, 0xe6, 0x90, 0x5d, 0xed, 0x90, 0x95, 0x0b, 0x7a, 0x84, 0xbe, 0xb8,
0x0d, 0x5e, 0x63, 0x0c, 0x62, 0x26, 0x4c, 0x14, 0x5a, 0xb3, 0xac, 0x23, 0xa4, 0x74, 0xa7,
0x6f, 0x33, 0x30, 0x05, 0x60, 0x01, 0x42, 0xa0, 0x28, 0xb7, 0xee, 0x19, 0x38, 0xf1, 0x64,
0x80, 0x82, 0x43, 0xe1, 0x41, 0x27, 0x1f, 0x1f, 0x90, 0x54, 0x7a, 0xd5, 0x23, 0x2e, 0xd1,
0x3d, 0xcb, 0x28, 0xba, 0x58, 0x7f, 0xdc, 0x7c, 0x91, 0x24, 0xe9, 0x28, 0x51, 0x83, 0x6e,
0xc5, 0x56, 0x21, 0x42, 0xed, 0xa0, 0x56, 0x22, 0xa1, 0x40, 0x80, 0x6b, 0xa8, 0xf7, 0x94,
0xca, 0x13, 0x6b, 0x0c, 0x39, 0xd9, 0xfd, 0xe9, 0xf3, 0x6f, 0xa6, 0x9e, 0xfc, 0x70, 0x8a,
0xb3, 0xbc, 0x59, 0x3c, 0x1e, 0x1d, 0x6c, 0xf9, 0x7c, 0xaf, 0xf9, 0x88, 0x71, 0x95, 0xeb,
0x57, 0x00, 0xbd, 0x9f, 0x8c, 0x4f, 0xe1, 0x24, 0x83, 0xc5, 0x22, 0xea, 0xfd, 0xd3, 0x0c,
0xe2, 0x17, 0x18, 0x7c, 0x6a, 0x4c, 0xde, 0x77, 0xb4, 0x53, 0x9b, 0x4c, 0x81, 0xcd, 0x23,
0x60, 0xaa, 0x0e, 0x25, 0x73, 0x9c, 0x02, 0x79, 0x32, 0x30, 0xdf, 0x74, 0xdf, 0x75, 0x19,
0xf4, 0xa5, 0x14, 0x5c, 0xf7, 0x7a, 0xa8, 0xa5, 0x91, 0x84, 0x7c, 0x60, 0x03, 0x06, 0x3b,
0xcd, 0x50, 0xb6, 0x27, 0x9c, 0xfe, 0xb1, 0xdd, 0xcc, 0xd3, 0xb0, 0x59, 0x24, 0xb2, 0xca,
0xe2, 0x1c, 0x81, 0x22, 0x9d, 0x07, 0x8f, 0x8e, 0xb9, 0xbe, 0x4e, 0xfa, 0xfc, 0x39, 0x65,
0xba, 0xbf, 0x9d, 0x12, 0x37, 0x5e, 0x97, 0x7e, 0xf3, 0x89, 0xf5, 0x5d, 0xf5, 0xe3, 0x09,
0x8c, 0x62, 0xb5, 0x20, 0x9d, 0x0c, 0x53, 0x8a, 0x68, 0x1b, 0xd2, 0x8f, 0x75, 0x17, 0x5d,
0xd4, 0xe5, 0xda, 0x75, 0x62, 0x19, 0x14, 0x6a, 0x26, 0x2d, 0xeb, 0xf8, 0xaf, 0x37, 0xf0,
0x6c, 0xa4, 0x55, 0xb1, 0xbc, 0xe2, 0x33, 0xc0, 0x9a, 0xca, 0xb0, 0x11, 0x49, 0x4f, 0x68,
0x9b, 0x3b, 0x6b, 0x3c, 0xcc, 0x13, 0xf6, 0xc7, 0x85, 0x61, 0x68, 0x42, 0xae, 0xbb, 0xdd,
0xcd, 0x45, 0x16, 0x29, 0x1d, 0xea, 0xdb, 0xc8, 0x03, 0x94, 0x3c, 0xee, 0x4f, 0x82, 0x11,
0xc3, 0xec, 0x28, 0xbd, 0x97, 0x05, 0x99, 0xde, 0xd7, 0xbb, 0x5e, 0x22, 0x1f, 0xd4, 0xeb,
0x64, 0xd9, 0x92, 0xd9, 0x85, 0xb7, 0x6a, 0x05, 0x6a, 0xe4, 0x24, 0x41, 0xf1, 0xcd, 0xf0,
0xd8, 0x3f, 0xf8, 0x9e, 0x0e, 0xcd, 0x0b, 0x7a, 0x70, 0x6b, 0x5a, 0x75, 0x0a, 0x6a, 0x33,
0x88, 0xec, 0x17, 0x75, 0x08, 0x70, 0x10, 0x2f, 0x24, 0xcf, 0xc4, 0xe9, 0x42, 0x00, 0x61,
0x94, 0xca, 0x1f, 0x3a, 0x76, 0x06, 0xfa, 0xd2, 0x48, 0x81, 0xf0, 0x77, 0x60, 0x03, 0x45,
0xd9, 0x61, 0xf4, 0xa4, 0x6f, 0x3d, 0xd9, 0x30, 0xc3, 0x04, 0x6b, 0x54, 0x2a, 0xb7, 0xec,
0x3b, 0xf4, 0x4b, 0xf5, 0x68, 0x52, 0x26, 0xce, 0xff, 0x5d, 0x19, 0x91, 0xa0, 0xa3, 0xa5,
0xa9, 0xb1, 0xe0, 0x23, 0xc4, 0x0a, 0x77, 0x4d, 0xf9, 0x51, 0x20, 0xa3, 0xa5, 0xa9, 0xb1,
0xc1, 0x00, 0x82, 0x86, 0x8e, 0x7f, 0x5d, 0x19, 0x91, 0xa0, 0xa3, 0xc4, 0xeb, 0x54, 0x0b,
0x75, 0x68, 0x52, 0x07, 0x8c, 0x9a, 0x97, 0x8d, 0x79, 0x70, 0x62, 0x46, 0xef, 0x5c, 0x1b,
0x95, 0x89, 0x71, 0x41, 0xe1, 0x21, 0xa1, 0xa1, 0xa1, 0xc0, 0x02, 0x67, 0x4c, 0x1a, 0xb6,
0xcf, 0xfd, 0x78, 0x53, 0x24, 0xab, 0xb5, 0xc9, 0xf1, 0x60, 0x23, 0xa5, 0xc8, 0x12, 0x87,
0x6d, 0x58, 0x13, 0x85, 0x88, 0x92, 0x87, 0x6d, 0x58, 0x32, 0xc7, 0x0c, 0x9a, 0x97, 0xac,
0xda, 0x36, 0xee, 0x5e, 0x3e, 0xdf, 0x1d, 0xb8, 0xf2, 0x66, 0x2f, 0xbd, 0xf8, 0x72, 0x47,
0xed, 0x58, 0x13, 0x85, 0x88, 0x92, 0x87, 0x8c, 0x7b, 0x55, 0x09, 0x90, 0xa2, 0xc6, 0xef,
0x3d, 0xf8, 0x53, 0x24, 0xab, 0xd4, 0x2a, 0xb7, 0xec, 0x5a, 0x36, 0xee, 0x5e, 0x3e, 0xdf,
0x3c, 0xfa, 0x76, 0x4f, 0xfd, 0x59, 0x30, 0xe2, 0x46, 0xef, 0x3d, 0xf8, 0x53, 0x05, 0x69,
0x31, 0xc1, 0x00, 0x82, 0x86, 0x8e, 0x7f, 0x5d, 0x19, 0xb0, 0xe2, 0x27, 0xcc, 0xfb, 0x74,
0x4b, 0x14, 0x8b, 0x94, 0x8b, 0x75, 0x68, 0x33, 0xc5, 0x08, 0x92, 0x87, 0x8c, 0x9a, 0xb6,
0xcf, 0x1c, 0xba, 0xd7, 0x0d, 0x98, 0xb2, 0xe6, 0x2f, 0xdc, 0x1b, 0x95, 0x89, 0x71, 0x60,
0x23, 0xc4, 0x0a, 0x96, 0x8f, 0x9c, 0xba, 0xf6, 0x6e, 0x3f, 0xfc, 0x5b, 0x15, 0xa8, 0xd2,
0x26, 0xaf, 0xbd, 0xf8, 0x72, 0x66, 0x2f, 0xdc, 0x1b, 0xb4, 0xcb, 0x14, 0x8b, 0x94, 0xaa,
0xb7, 0xcd, 0xf9, 0x51, 0x01, 0x80, 0x82, 0x86, 0x6f, 0x3d, 0xd9, 0x30, 0xe2, 0x27, 0xcc,
0xfb, 0x74, 0x4b, 0x14, 0xaa, 0xb7, 0xcd, 0xf9, 0x70, 0x43, 0x04, 0x6b, 0x35, 0xc9, 0xf1,
0x60, 0x23, 0xa5, 0xc8, 0xf3, 0x45, 0x08, 0x92, 0x87, 0x6d, 0x58, 0x32, 0xe6, 0x2f, 0xbd,
0xf8, 0x72, 0x66, 0x4e, 0x1e, 0xbe, 0xfe, 0x7e, 0x7e, 0x7e, 0x5f, 0x1d, 0x99, 0x91, 0xa0,
0xa3, 0xc4, 0x0a, 0x77, 0x4d, 0x18, 0x93, 0xa4, 0xab, 0xd4, 0x0b, 0x75, 0x49, 0x10, 0xa2,
0xc6, 0xef, 0x3d, 0xf8, 0x53, 0x24, 0xab, 0xb5, 0xe8, 0x33, 0xe4, 0x4a, 0x16, 0xae, 0xde,
0x1f, 0xbc, 0xdb, 0x15, 0xa8, 0xb3, 0xc5, 0x08, 0x73, 0x45, 0xe9, 0x31, 0xc1, 0xe1, 0x21,
0xa1, 0xa1, 0xa1, 0xc0, 0x02, 0x86, 0x6f, 0x5c, 0x3a, 0xd7, 0x0d, 0x98, 0x93, 0xa4, 0xca,
0x16, 0xae, 0xde, 0x1f, 0x9d, 0x99, 0xb0, 0xe2, 0x46, 0xef, 0x3d, 0xf8, 0x72, 0x47, 0x0c,
0x9a, 0xb6, 0xcf, 0xfd, 0x59, 0x11, 0xa0, 0xa3, 0xa5, 0xc8, 0xf3, 0x45, 0x08, 0x92, 0x87,
0x6d, 0x39, 0xf0, 0x43, 0x04, 0x8a, 0x96, 0xae, 0xde, 0x3e, 0xdf, 0x1d, 0x99, 0x91, 0xa0,
0xc2, 0x06, 0x6f, 0x3d, 0xf8, 0x72, 0x47, 0x0c, 0x9a, 0x97, 0x8d, 0x98, 0x93, 0x85, 0x88,
0x73, 0x45, 0xe9, 0x31, 0xe0, 0x23, 0xa5, 0xa9, 0xd0, 0x03, 0x84, 0x8a, 0x96, 0xae, 0xde,
0x1f, 0xbc, 0xdb, 0x15, 0xa8, 0xd2, 0x26, 0xce, 0xff, 0x5d, 0x19, 0x91, 0x81, 0x80, 0x82,
0x67, 0x2d, 0xd8, 0x13, 0xa4, 0xab, 0xd4, 0x0b, 0x94, 0xaa, 0xb7, 0xcd, 0xf9, 0x51, 0x20,
0xa3, 0xa5, 0xc8, 0xf3, 0x45, 0xe9, 0x50, 0x22, 0xc6, 0xef, 0x5c, 0x3a, 0xd7, 0x0d, 0x98,
0x93, 0x85, 0x88, 0x73, 0x64, 0x4a, 0xf7, 0x4d, 0xf9, 0x51, 0x20, 0xa3, 0xc4, 0x0a, 0x96,
0xae, 0xde, 0x3e, 0xfe, 0x7e, 0x7e, 0x7e, 0x5f, 0x3c, 0xfa, 0x76, 0x4f, 0xfd, 0x78, 0x72,
0x66, 0x2f, 0xbd, 0xd9, 0x30, 0xc3, 0xe5, 0x48, 0x12, 0x87, 0x8c, 0x7b, 0x55, 0x28, 0xd2,
0x07, 0x8c, 0x9a, 0x97, 0xac, 0xda, 0x17, 0x8d, 0x79, 0x51, 0x20, 0xa3, 0xc4, 0xeb, 0x54,
0x0b, 0x94, 0x8b, 0x94, 0xaa, 0xd6, 0x2e, 0xbf, 0xfc, 0x5b, 0x15, 0xa8, 0xd2, 0x26, 0xaf,
0xdc, 0x1b, 0xb4, 0xea, 0x37, 0xec, 0x3b, 0xf4, 0x6a, 0x37, 0xcd, 0x18, 0x93, 0x85, 0x69,
0x31, 0xc1, 0xe1, 0x40, 0xe3, 0x25, 0xc8, 0x12, 0x87, 0x8c, 0x9a, 0xb6, 0xcf, 0xfd, 0x59,
0x11, 0xa0, 0xc2, 0x06, 0x8e, 0x7f, 0x5d, 0x38, 0xf2, 0x47, 0x0c, 0x7b, 0x74, 0x6a, 0x37,
0xec, 0x5a, 0x36, 0xee, 0x3f, 0xfc, 0x7a, 0x76, 0x4f, 0x1c, 0x9b, 0x95, 0x89, 0x71, 0x41,
0x00, 0x63, 0x44, 0xeb, 0x54, 0x2a, 0xd6, 0x0f, 0x9c, 0xba, 0xd7, 0x0d, 0x98, 0x93, 0x85,
0x69, 0x31, 0xc1, 0x00, 0x82, 0x86, 0x8e, 0x9e, 0xbe, 0xdf, 0x3c, 0xfa, 0x57, 0x2c, 0xda,
0x36, 0xee, 0x3f, 0xfc, 0x5b, 0x15, 0x89, 0x71, 0x41, 0x00, 0x82, 0x86, 0x8e, 0x7f, 0x5d,
0x38, 0xf2, 0x47, 0xed, 0x58, 0x13, 0xa4, 0xca, 0xf7, 0x4d, 0xf9, 0x51, 0x01, 0x80, 0x63,
0x44, 0xeb, 0x54, 0x2a, 0xd6, 0x2e, 0xbf, 0xdd, 0x19, 0x91, 0xa0, 0xa3, 0xa5, 0xa9, 0xb1,
0xe0, 0x42, 0x06, 0x8e, 0x7f, 0x5d, 0x19, 0x91, 0xa0, 0xa3, 0xc4, 0x0a, 0x96, 0x8f, 0x7d,
0x78, 0x72, 0x47, 0x0c, 0x7b, 0x74, 0x6a, 0x56, 0x2e, 0xde, 0x1f, 0xbc, 0xfa, 0x57, 0x0d,
0x79, 0x51, 0x01, 0x61, 0x21, 0xa1, 0xc0, 0xe3, 0x25, 0xa9, 0xb1, 0xc1, 0xe1, 0x40, 0x02,
0x67, 0x4c, 0x1a, 0x97, 0x8d, 0x98, 0x93, 0xa4, 0xab, 0xd4, 0x2a, 0xd6, 0x0f, 0x9c, 0x9b,
0xb4, 0xcb, 0x14, 0xaa, 0xb7, 0xcd, 0xf9, 0x51, 0x20, 0xa3, 0xc4, 0xeb, 0x35, 0xc9, 0xf1,
0x60, 0x42, 0x06, 0x8e, 0x7f, 0x7c, 0x7a, 0x76, 0x6e, 0x3f, 0xfc, 0x7a, 0x76, 0x6e, 0x5e,
0x3e, 0xfe, 0x7e, 0x5f, 0x3c, 0xdb, 0x15, 0x89, 0x71, 0x41, 0xe1, 0x21, 0xc0, 0xe3, 0x44,
0xeb, 0x54, 0x2a, 0xb7, 0xcd, 0xf9, 0x70, 0x62, 0x27, 0xad, 0xd8, 0x32, 0xc7, 0x0c, 0x7b,
0x74, 0x4b, 0x14, 0xaa, 0xb7, 0xec, 0x3b, 0xd5, 0x28, 0xd2, 0x07, 0x6d, 0x39, 0xd1, 0x20,
0xc2, 0xe7, 0x4c, 0x1a, 0x97, 0x8d, 0x98, 0xb2, 0xc7, 0x0c, 0x59, 0x28, 0xf3, 0x9b };
#include "progmem.h"
#define FIRMWARE_LENGTH 4094
// clang-format off
const uint8_t firmware_data[FIRMWARE_LENGTH] PROGMEM = {
0x01, 0x04, 0x8E, 0x96, 0x6E, 0x77, 0x3E, 0xFE, 0x7E, 0x5F, 0x1D, 0xB8, 0xF2, 0x66, 0x4E, 0xFF,
0x5D, 0x19, 0xB0, 0xC2, 0x04, 0x69, 0x54, 0x2A, 0xD6, 0x2E, 0xBF, 0xDD, 0x19, 0xB0, 0xC3, 0xE5,
0x29, 0xB1, 0xE0, 0x23, 0xA5, 0xA9, 0xB1, 0xC1, 0x00, 0x82, 0x67, 0x4C, 0x1A, 0x97, 0x8D, 0x79,
0x51, 0x20, 0xC7, 0x06, 0x8E, 0x7C, 0x7C, 0x7A, 0x76, 0x4F, 0xFD, 0x59, 0x30, 0xE2, 0x46, 0x0E,
0x9E, 0xBE, 0xDF, 0x1D, 0x99, 0x91, 0xA0, 0xA5, 0xA1, 0xA9, 0xD0, 0x22, 0xC6, 0xEF, 0x5C, 0x1B,
0x95, 0x89, 0x90, 0xA2, 0xA7, 0xCC, 0xFB, 0x55, 0x28, 0xB3, 0xE4, 0x4A, 0xF7, 0x6C, 0x3B, 0xF4,
0x6A, 0x56, 0x2E, 0xDE, 0x1F, 0x9D, 0xB8, 0xD3, 0x05, 0x88, 0x92, 0xA6, 0xCE, 0x1E, 0xBE, 0xDF,
0x1D, 0x99, 0xB0, 0xE2, 0x46, 0xEF, 0x5C, 0x07, 0x11, 0x5D, 0x98, 0x0B, 0x9D, 0x94, 0x97, 0xEE,
0x4E, 0x45, 0x33, 0x6B, 0x44, 0xC7, 0x29, 0x56, 0x27, 0x30, 0xC6, 0xA7, 0xD5, 0xF2, 0x56, 0xDF,
0xB4, 0x38, 0x62, 0xCB, 0xA0, 0xB6, 0xE3, 0x0F, 0x84, 0x06, 0x24, 0x05, 0x65, 0x6F, 0x76, 0x89,
0xB5, 0x77, 0x41, 0x27, 0x82, 0x66, 0x65, 0x82, 0xCC, 0xD5, 0xE6, 0x20, 0xD5, 0x27, 0x17, 0xC5,
0xF8, 0x03, 0x23, 0x7C, 0x5F, 0x64, 0xA5, 0x1D, 0xC1, 0xD6, 0x36, 0xCB, 0x4C, 0xD4, 0xDB, 0x66,
0xD7, 0x8B, 0xB1, 0x99, 0x7E, 0x6F, 0x4C, 0x36, 0x40, 0x06, 0xD6, 0xEB, 0xD7, 0xA2, 0xE4, 0xF4,
0x95, 0x51, 0x5A, 0x54, 0x96, 0xD5, 0x53, 0x44, 0xD7, 0x8C, 0xE0, 0xB9, 0x40, 0x68, 0xD2, 0x18,
0xE9, 0xDD, 0x9A, 0x23, 0x92, 0x48, 0xEE, 0x7F, 0x43, 0xAF, 0xEA, 0x77, 0x38, 0x84, 0x8C, 0x0A,
0x72, 0xAF, 0x69, 0xF8, 0xDD, 0xF1, 0x24, 0x83, 0xA3, 0xF8, 0x4A, 0xBF, 0xF5, 0x94, 0x13, 0xDB,
0xBB, 0xD8, 0xB4, 0xB3, 0xA0, 0xFB, 0x45, 0x50, 0x60, 0x30, 0x59, 0x12, 0x31, 0x71, 0xA2, 0xD3,
0x13, 0xE7, 0xFA, 0xE7, 0xCE, 0x0F, 0x63, 0x15, 0x0B, 0x6B, 0x94, 0xBB, 0x37, 0x83, 0x26, 0x05,
0x9D, 0xFB, 0x46, 0x92, 0xFC, 0x0A, 0x15, 0xD1, 0x0D, 0x73, 0x92, 0xD6, 0x8C, 0x1B, 0x8C, 0xB8,
0x55, 0x8A, 0xCE, 0xBD, 0xFE, 0x8E, 0xFC, 0xED, 0x09, 0x12, 0x83, 0x91, 0x82, 0x51, 0x31, 0x23,
0xFB, 0xB4, 0x0C, 0x76, 0xAD, 0x7C, 0xD9, 0xB4, 0x4B, 0xB2, 0x67, 0x14, 0x09, 0x9C, 0x7F, 0x0C,
0x18, 0xBA, 0x3B, 0xD6, 0x8E, 0x14, 0x2A, 0xE4, 0x1B, 0x52, 0x9F, 0x2B, 0x7D, 0xE1, 0xFB, 0x6A,
0x33, 0x02, 0xFA, 0xAC, 0x5A, 0xF2, 0x3E, 0x88, 0x7E, 0xAE, 0xD1, 0xF3, 0x78, 0xE8, 0x05, 0xD1,
0xE3, 0xDC, 0x21, 0xF6, 0xE1, 0x9A, 0xBD, 0x17, 0x0E, 0xD9, 0x46, 0x9B, 0x88, 0x03, 0xEA, 0xF6,
0x66, 0xBE, 0x0E, 0x1B, 0x50, 0x49, 0x96, 0x40, 0x97, 0xF1, 0xF1, 0xE4, 0x80, 0xA6, 0x6E, 0xE8,
0x77, 0x34, 0xBF, 0x29, 0x40, 0x44, 0xC2, 0xFF, 0x4E, 0x98, 0xD3, 0x9C, 0xA3, 0x32, 0x2B, 0x76,
0x51, 0x04, 0x09, 0xE7, 0xA9, 0xD1, 0xA6, 0x32, 0xB1, 0x23, 0x53, 0xE2, 0x47, 0xAB, 0xD6, 0xF5,
0x69, 0x5C, 0x3E, 0x5F, 0xFA, 0xAE, 0x45, 0x20, 0xE5, 0xD2, 0x44, 0xFF, 0x39, 0x32, 0x6D, 0xFD,
0x27, 0x57, 0x5C, 0xFD, 0xF0, 0xDE, 0xC1, 0xB5, 0x99, 0xE5, 0xF5, 0x1C, 0x77, 0x01, 0x75, 0xC5,
0x6D, 0x58, 0x92, 0xF2, 0xB2, 0x47, 0x00, 0x01, 0x26, 0x96, 0x7A, 0x30, 0xFF, 0xB7, 0xF0, 0xEF,
0x77, 0xC1, 0x8A, 0x5D, 0xDC, 0xC0, 0xD1, 0x29, 0x30, 0x1E, 0x77, 0x38, 0x7A, 0x94, 0xF1, 0xB8,
0x7A, 0x7E, 0xEF, 0xA4, 0xD1, 0xAC, 0x31, 0x4A, 0xF2, 0x5D, 0x64, 0x3D, 0xB2, 0xE2, 0xF0, 0x08,
0x99, 0xFC, 0x70, 0xEE, 0x24, 0xA7, 0x7E, 0xEE, 0x1E, 0x20, 0x69, 0x7D, 0x44, 0xBF, 0x87, 0x42,
0xDF, 0x88, 0x3B, 0x0C, 0xDA, 0x42, 0xC9, 0x04, 0xF9, 0x45, 0x50, 0xFC, 0x83, 0x8F, 0x11, 0x6A,
0x72, 0xBC, 0x99, 0x95, 0xF0, 0xAC, 0x3D, 0xA7, 0x3B, 0xCD, 0x1C, 0xE2, 0x88, 0x79, 0x37, 0x11,
0x5F, 0x39, 0x89, 0x95, 0x0A, 0x16, 0x84, 0x7A, 0xF6, 0x8A, 0xA4, 0x28, 0xE4, 0xED, 0x83, 0x80,
0x3B, 0xB1, 0x23, 0xA5, 0x03, 0x10, 0xF4, 0x66, 0xEA, 0xBB, 0x0C, 0x0F, 0xC5, 0xEC, 0x6C, 0x69,
0xC5, 0xD3, 0x24, 0xAB, 0xD4, 0x2A, 0xB7, 0x99, 0x88, 0x76, 0x08, 0xA0, 0xA8, 0x95, 0x7C, 0xD8,
0x38, 0x6D, 0xCD, 0x59, 0x02, 0x51, 0x4B, 0xF1, 0xB5, 0x2B, 0x50, 0xE3, 0xB6, 0xBD, 0xD0, 0x72,
0xCF, 0x9E, 0xFD, 0x6E, 0xBB, 0x44, 0xC8, 0x24, 0x8A, 0x77, 0x18, 0x8A, 0x13, 0x06, 0xEF, 0x97,
0x7D, 0xFA, 0x81, 0xF0, 0x31, 0xE6, 0xFA, 0x77, 0xED, 0x31, 0x06, 0x31, 0x5B, 0x54, 0x8A, 0x9F,
0x30, 0x68, 0xDB, 0xE2, 0x40, 0xF8, 0x4E, 0x73, 0xFA, 0xAB, 0x74, 0x8B, 0x10, 0x58, 0x13, 0xDC,
0xD2, 0xE6, 0x78, 0xD1, 0x32, 0x2E, 0x8A, 0x9F, 0x2C, 0x58, 0x06, 0x48, 0x27, 0xC5, 0xA9, 0x5E,
0x81, 0x47, 0x89, 0x46, 0x21, 0x91, 0x03, 0x70, 0xA4, 0x3E, 0x88, 0x9C, 0xDA, 0x33, 0x0A, 0xCE,
0xBC, 0x8B, 0x8E, 0xCF, 0x9F, 0xD3, 0x71, 0x80, 0x43, 0xCF, 0x6B, 0xA9, 0x51, 0x83, 0x76, 0x30,
0x82, 0xC5, 0x6A, 0x85, 0x39, 0x11, 0x50, 0x1A, 0x82, 0xDC, 0x1E, 0x1C, 0xD5, 0x7D, 0xA9, 0x71,
0x99, 0x33, 0x47, 0x19, 0x97, 0xB3, 0x5A, 0xB1, 0xDF, 0xED, 0xA4, 0xF2, 0xE6, 0x26, 0x84, 0xA2,
0x28, 0x9A, 0x9E, 0xDF, 0xA6, 0x6A, 0xF4, 0xD6, 0xFC, 0x2E, 0x5B, 0x9D, 0x1A, 0x2A, 0x27, 0x68,
0xFB, 0xC1, 0x83, 0x21, 0x4B, 0x90, 0xE0, 0x36, 0xDD, 0x5B, 0x31, 0x42, 0x55, 0xA0, 0x13, 0xF7,
0xD0, 0x89, 0x53, 0x71, 0x99, 0x57, 0x09, 0x29, 0xC5, 0xF3, 0x21, 0xF8, 0x37, 0x2F, 0x40, 0xF3,
0xD4, 0xAF, 0x16, 0x08, 0x36, 0x02, 0xFC, 0x77, 0xC5, 0x8B, 0x04, 0x90, 0x56, 0xB9, 0xC9, 0x67,
0x9A, 0x99, 0xE8, 0x00, 0xD3, 0x86, 0xFF, 0x97, 0x2D, 0x08, 0xE9, 0xB7, 0xB3, 0x91, 0xBC, 0xDF,
0x45, 0xC6, 0xED, 0x0F, 0x8C, 0x4C, 0x1E, 0xE6, 0x5B, 0x6E, 0x38, 0x30, 0xE4, 0xAA, 0xE3, 0x95,
0xDE, 0xB9, 0xE4, 0x9A, 0xF5, 0xB2, 0x55, 0x9A, 0x87, 0x9B, 0xF6, 0x6A, 0xB2, 0xF2, 0x77, 0x9A,
0x31, 0xF4, 0x7A, 0x31, 0xD1, 0x1D, 0x04, 0xC0, 0x7C, 0x32, 0xA2, 0x9E, 0x9A, 0xF5, 0x62, 0xF8,
0x27, 0x8D, 0xBF, 0x51, 0xFF, 0xD3, 0xDF, 0x64, 0x37, 0x3F, 0x2A, 0x6F, 0x76, 0x3A, 0x7D, 0x77,
0x06, 0x9E, 0x77, 0x7F, 0x5E, 0xEB, 0x32, 0x51, 0xF9, 0x16, 0x66, 0x9A, 0x09, 0xF3, 0xB0, 0x08,
0xA4, 0x70, 0x96, 0x46, 0x30, 0xFF, 0xDA, 0x4F, 0xE9, 0x1B, 0xED, 0x8D, 0xF8, 0x74, 0x1F, 0x31,
0x92, 0xB3, 0x73, 0x17, 0x36, 0xDB, 0x91, 0x30, 0xD6, 0x88, 0x55, 0x6B, 0x34, 0x77, 0x87, 0x7A,
0xE7, 0xEE, 0x06, 0xC6, 0x1C, 0x8C, 0x19, 0x0C, 0x48, 0x46, 0x23, 0x5E, 0x9C, 0x07, 0x5C, 0xBF,
0xB4, 0x7E, 0xD6, 0x4F, 0x74, 0x9C, 0xE2, 0xC5, 0x50, 0x8B, 0xC5, 0x8B, 0x15, 0x90, 0x60, 0x62,
0x57, 0x29, 0xD0, 0x13, 0x43, 0xA1, 0x80, 0x88, 0x91, 0x00, 0x44, 0xC7, 0x4D, 0x19, 0x86, 0xCC,
0x2F, 0x2A, 0x75, 0x5A, 0xFC, 0xEB, 0x97, 0x2A, 0x70, 0xE3, 0x78, 0xD8, 0x91, 0xB0, 0x4F, 0x99,
0x07, 0xA3, 0x95, 0xEA, 0x24, 0x21, 0xD5, 0xDE, 0x51, 0x20, 0x93, 0x27, 0x0A, 0x30, 0x73, 0xA8,
0xFF, 0x8A, 0x97, 0xE9, 0xA7, 0x6A, 0x8E, 0x0D, 0xE8, 0xF0, 0xDF, 0xEC, 0xEA, 0xB4, 0x6C, 0x1D,
0x39, 0x2A, 0x62, 0x2D, 0x3D, 0x5A, 0x8B, 0x65, 0xF8, 0x90, 0x05, 0x2E, 0x7E, 0x91, 0x2C, 0x78,
0xEF, 0x8E, 0x7A, 0xC1, 0x2F, 0xAC, 0x78, 0xEE, 0xAF, 0x28, 0x45, 0x06, 0x4C, 0x26, 0xAF, 0x3B,
0xA2, 0xDB, 0xA3, 0x93, 0x06, 0xB5, 0x3C, 0xA5, 0xD8, 0xEE, 0x8F, 0xAF, 0x25, 0xCC, 0x3F, 0x85,
0x68, 0x48, 0xA9, 0x62, 0xCC, 0x97, 0x8F, 0x7F, 0x2A, 0xEA, 0xE0, 0x15, 0x0A, 0xAD, 0x62, 0x07,
0xBD, 0x45, 0xF8, 0x41, 0xD8, 0x36, 0xCB, 0x4C, 0xDB, 0x6E, 0xE6, 0x3A, 0xE7, 0xDA, 0x15, 0xE9,
0x29, 0x1E, 0x12, 0x10, 0xA0, 0x14, 0x2C, 0x0E, 0x3D, 0xF4, 0xBF, 0x39, 0x41, 0x92, 0x75, 0x0B,
0x25, 0x7B, 0xA3, 0xCE, 0x39, 0x9C, 0x15, 0x64, 0xC8, 0xFA, 0x3D, 0xEF, 0x73, 0x27, 0xFE, 0x26,
0x2E, 0xCE, 0xDA, 0x6E, 0xFD, 0x71, 0x8E, 0xDD, 0xFE, 0x76, 0xEE, 0xDC, 0x12, 0x5C, 0x02, 0xC5,
0x3A, 0x4E, 0x4E, 0x4F, 0xBF, 0xCA, 0x40, 0x15, 0xC7, 0x6E, 0x8D, 0x41, 0xF1, 0x10, 0xE0, 0x4F,
0x7E, 0x97, 0x7F, 0x1C, 0xAE, 0x47, 0x8E, 0x6B, 0xB1, 0x25, 0x31, 0xB0, 0x73, 0xC7, 0x1B, 0x97,
0x79, 0xF9, 0x80, 0xD3, 0x66, 0x22, 0x30, 0x07, 0x74, 0x1E, 0xE4, 0xD0, 0x80, 0x21, 0xD6, 0xEE,
0x6B, 0x6C, 0x4F, 0xBF, 0xF5, 0xB7, 0xD9, 0x09, 0x87, 0x2F, 0xA9, 0x14, 0xBE, 0x27, 0xD9, 0x72,
0x50, 0x01, 0xD4, 0x13, 0x73, 0xA6, 0xA7, 0x51, 0x02, 0x75, 0x25, 0xE1, 0xB3, 0x45, 0x34, 0x7D,
0xA8, 0x8E, 0xEB, 0xF3, 0x16, 0x49, 0xCB, 0x4F, 0x8C, 0xA1, 0xB9, 0x36, 0x85, 0x39, 0x75, 0x5D,
0x08, 0x00, 0xAE, 0xEB, 0xF6, 0xEA, 0xD7, 0x13, 0x3A, 0x21, 0x5A, 0x5F, 0x30, 0x84, 0x52, 0x26,
0x95, 0xC9, 0x14, 0xF2, 0x57, 0x55, 0x6B, 0xB1, 0x10, 0xC2, 0xE1, 0xBD, 0x3B, 0x51, 0xC0, 0xB7,
0x55, 0x4C, 0x71, 0x12, 0x26, 0xC7, 0x0D, 0xF9, 0x51, 0xA4, 0x38, 0x02, 0x05, 0x7F, 0xB8, 0xF1,
0x72, 0x4B, 0xBF, 0x71, 0x89, 0x14, 0xF3, 0x77, 0x38, 0xD9, 0x71, 0x24, 0xF3, 0x00, 0x11, 0xA1,
0xD8, 0xD4, 0x69, 0x27, 0x08, 0x37, 0x35, 0xC9, 0x11, 0x9D, 0x90, 0x1C, 0x0E, 0xE7, 0x1C, 0xFF,
0x2D, 0x1E, 0xE8, 0x92, 0xE1, 0x18, 0x10, 0x95, 0x7C, 0xE0, 0x80, 0xF4, 0x96, 0x43, 0x21, 0xF9,
0x75, 0x21, 0x64, 0x38, 0xDD, 0x9F, 0x1E, 0x95, 0x16, 0xDA, 0x56, 0x1D, 0x4F, 0x9A, 0x53, 0xB2,
0xE2, 0xE4, 0x18, 0xCB, 0x6B, 0x1A, 0x65, 0xEB, 0x56, 0xC6, 0x3B, 0xE5, 0xFE, 0xD8, 0x26, 0x3F,
0x3A, 0x84, 0x59, 0x72, 0x66, 0xA2, 0xF3, 0x75, 0xFF, 0xFB, 0x60, 0xB3, 0x22, 0xAD, 0x3F, 0x2D,
0x6B, 0xF9, 0xEB, 0xEA, 0x05, 0x7C, 0xD8, 0x8F, 0x6D, 0x2C, 0x98, 0x9E, 0x2B, 0x93, 0xF1, 0x5E,
0x46, 0xF0, 0x87, 0x49, 0x29, 0x73, 0x68, 0xD7, 0x7F, 0xF9, 0xF0, 0xE5, 0x7D, 0xDB, 0x1D, 0x75,
0x19, 0xF3, 0xC4, 0x58, 0x9B, 0x17, 0x88, 0xA8, 0x92, 0xE0, 0xBE, 0xBD, 0x8B, 0x1D, 0x8D, 0x9F,
0x56, 0x76, 0xAD, 0xAF, 0x29, 0xE2, 0xD9, 0xD5, 0x52, 0xF6, 0xB5, 0x56, 0x35, 0x57, 0x3A, 0xC8,
0xE1, 0x56, 0x43, 0x19, 0x94, 0xD3, 0x04, 0x9B, 0x6D, 0x35, 0xD8, 0x0B, 0x5F, 0x4D, 0x19, 0x8E,
0xEC, 0xFA, 0x64, 0x91, 0x0A, 0x72, 0x20, 0x2B, 0xBC, 0x1A, 0x4A, 0xFE, 0x8B, 0xFD, 0xBB, 0xED,
0x1B, 0x23, 0xEA, 0xAD, 0x72, 0x82, 0xA1, 0x29, 0x99, 0x71, 0xBD, 0xF0, 0x95, 0xC1, 0x03, 0xDD,
0x7B, 0xC2, 0xB2, 0x3C, 0x28, 0x54, 0xD3, 0x68, 0xA4, 0x72, 0xC8, 0x66, 0x96, 0xE0, 0xD1, 0xD8,
0x7F, 0xF8, 0xD1, 0x26, 0x2B, 0xF7, 0xAD, 0xBA, 0x55, 0xCA, 0x15, 0xB9, 0x32, 0xC3, 0xE5, 0x88,
0x97, 0x8E, 0x5C, 0xFB, 0x92, 0x25, 0x8B, 0xBF, 0xA2, 0x45, 0x55, 0x7A, 0xA7, 0x6F, 0x8B, 0x57,
0x5B, 0xCF, 0x0E, 0xCB, 0x1D, 0xFB, 0x20, 0x82, 0x77, 0xA8, 0x8C, 0xCC, 0x16, 0xCE, 0x1D, 0xFA,
0xDE, 0xCC, 0x0B, 0x62, 0xFE, 0xCC, 0xE1, 0xB7, 0xF0, 0xC3, 0x81, 0x64, 0x73, 0x40, 0xA0, 0xC2,
0x4D, 0x89, 0x11, 0x75, 0x33, 0x55, 0x33, 0x8D, 0xE8, 0x4A, 0xFD, 0xEA, 0x6E, 0x30, 0x0B, 0xD7,
0x31, 0x2C, 0xDE, 0x47, 0xE3, 0xBF, 0xF8, 0x55, 0x42, 0xE2, 0x7F, 0x59, 0xE5, 0x17, 0xEF, 0x99,
0x34, 0x69, 0x91, 0xB1, 0x23, 0x8E, 0x20, 0x87, 0x2D, 0xA8, 0xFE, 0xD5, 0x8A, 0xF3, 0x84, 0x3A,
0xF0, 0x37, 0xE4, 0x09, 0x00, 0x54, 0xEE, 0x67, 0x49, 0x93, 0xE4, 0x81, 0x70, 0xE3, 0x90, 0x4D,
0xEF, 0xFE, 0x41, 0xB7, 0x99, 0x7B, 0xC1, 0x83, 0xBA, 0x62, 0x12, 0x6F, 0x7D, 0xDE, 0x6B, 0xAF,
0xDA, 0x16, 0xF9, 0x55, 0x51, 0xEE, 0xA6, 0x0C, 0x2B, 0x02, 0xA3, 0xFD, 0x8D, 0xFB, 0x30, 0x17,
0xE4, 0x6F, 0xDF, 0x36, 0x71, 0xC4, 0xCA, 0x87, 0x25, 0x48, 0xB0, 0x47, 0xEC, 0xEA, 0xB4, 0xBF,
0xA5, 0x4D, 0x9B, 0x9F, 0x02, 0x93, 0xC4, 0xE3, 0xE4, 0xE8, 0x42, 0x2D, 0x68, 0x81, 0x15, 0x0A,
0xEB, 0x84, 0x5B, 0xD6, 0xA8, 0x74, 0xFB, 0x7D, 0x1D, 0xCB, 0x2C, 0xDA, 0x46, 0x2A, 0x76, 0x62,
0xCE, 0xBC, 0x5C, 0x9E, 0x8B, 0xE7, 0xCF, 0xBE, 0x78, 0xF5, 0x7C, 0xEB, 0xB3, 0x3A, 0x9C, 0xAA,
0x6F, 0xCC, 0x72, 0xD1, 0x59, 0xF2, 0x11, 0x23, 0xD6, 0x3F, 0x48, 0xD1, 0xB7, 0xCE, 0xB0, 0xBF,
0xCB, 0xEA, 0x80, 0xDE, 0x57, 0xD4, 0x5E, 0x97, 0x2F, 0x75, 0xD1, 0x50, 0x8E, 0x80, 0x2C, 0x66,
0x79, 0xBF, 0x72, 0x4B, 0xBD, 0x8A, 0x81, 0x6C, 0xD3, 0xE1, 0x01, 0xDC, 0xD2, 0x15, 0x26, 0xC5,
0x36, 0xDA, 0x2C, 0x1A, 0xC0, 0x27, 0x94, 0xED, 0xB7, 0x9B, 0x85, 0x0B, 0x5E, 0x80, 0x97, 0xC5,
0xEC, 0x4F, 0xEC, 0x88, 0x5D, 0x50, 0x07, 0x35, 0x47, 0xDC, 0x0B, 0x3B, 0x3D, 0xDD, 0x60, 0xAF,
0xA8, 0x5D, 0x81, 0x38, 0x24, 0x25, 0x5D, 0x5C, 0x15, 0xD1, 0xDE, 0xB3, 0xAB, 0xEC, 0x05, 0x69,
0xEF, 0x83, 0xED, 0x57, 0x54, 0xB8, 0x64, 0x64, 0x11, 0x16, 0x32, 0x69, 0xDA, 0x9F, 0x2D, 0x7F,
0x36, 0xBB, 0x44, 0x5A, 0x34, 0xE8, 0x7F, 0xBF, 0x03, 0xEB, 0x00, 0x7F, 0x59, 0x68, 0x22, 0x79,
0xCF, 0x73, 0x6C, 0x2C, 0x29, 0xA7, 0xA1, 0x5F, 0x38, 0xA1, 0x1D, 0xF0, 0x20, 0x53, 0xE0, 0x1A,
0x63, 0x14, 0x58, 0x71, 0x10, 0xAA, 0x08, 0x0C, 0x3E, 0x16, 0x1A, 0x60, 0x22, 0x82, 0x7F, 0xBA,
0xA4, 0x43, 0xA0, 0xD0, 0xAC, 0x1B, 0xD5, 0x6B, 0x64, 0xB5, 0x14, 0x93, 0x31, 0x9E, 0x53, 0x50,
0xD0, 0x57, 0x66, 0xEE, 0x5A, 0x4F, 0xFB, 0x03, 0x2A, 0x69, 0x58, 0x76, 0xF1, 0x83, 0xF7, 0x4E,
0xBA, 0x8C, 0x42, 0x06, 0x60, 0x5D, 0x6D, 0xCE, 0x60, 0x88, 0xAE, 0xA4, 0xC3, 0xF1, 0x03, 0xA5,
0x4B, 0x98, 0xA1, 0xFF, 0x67, 0xE1, 0xAC, 0xA2, 0xB8, 0x62, 0xD7, 0x6F, 0xA0, 0x31, 0xB4, 0xD2,
0x77, 0xAF, 0x21, 0x10, 0x06, 0xC6, 0x9A, 0xFF, 0x1D, 0x09, 0x17, 0x0E, 0x5F, 0xF1, 0xAA, 0x54,
0x34, 0x4B, 0x45, 0x8A, 0x87, 0x63, 0xA6, 0xDC, 0xF9, 0x24, 0x30, 0x67, 0xC6, 0xB2, 0xD6, 0x61,
0x33, 0x69, 0xEE, 0x50, 0x61, 0x57, 0x28, 0xE7, 0x7E, 0xEE, 0xEC, 0x3A, 0x5A, 0x73, 0x4E, 0xA8,
0x8D, 0xE4, 0x18, 0xEA, 0xEC, 0x41, 0x64, 0xC8, 0xE2, 0xE8, 0x66, 0xB6, 0x2D, 0xB6, 0xFB, 0x6A,
0x6C, 0x16, 0xB3, 0xDD, 0x46, 0x43, 0xB9, 0x73, 0x00, 0x6A, 0x71, 0xED, 0x4E, 0x9D, 0x25, 0x1A,
0xC3, 0x3C, 0x4A, 0x95, 0x15, 0x99, 0x35, 0x81, 0x14, 0x02, 0xD6, 0x98, 0x9B, 0xEC, 0xD8, 0x23,
0x3B, 0x84, 0x29, 0xAF, 0x0C, 0x99, 0x83, 0xA6, 0x9A, 0x34, 0x4F, 0xFA, 0xE8, 0xD0, 0x3C, 0x4B,
0xD0, 0xFB, 0xB6, 0x68, 0xB8, 0x9E, 0x8F, 0xCD, 0xF7, 0x60, 0x2D, 0x7A, 0x22, 0xE5, 0x7D, 0xAB,
0x65, 0x1B, 0x95, 0xA7, 0xA8, 0x7F, 0xB6, 0x77, 0x47, 0x7B, 0x5F, 0x8B, 0x12, 0x72, 0xD0, 0xD4,
0x91, 0xEF, 0xDE, 0x19, 0x50, 0x3C, 0xA7, 0x8B, 0xC4, 0xA9, 0xB3, 0x23, 0xCB, 0x76, 0xE6, 0x81,
0xF0, 0xC1, 0x04, 0x8F, 0xA3, 0xB8, 0x54, 0x5B, 0x97, 0xAC, 0x19, 0xFF, 0x3F, 0x55, 0x27, 0x2F,
0xE0, 0x1D, 0x42, 0x9B, 0x57, 0xFC, 0x4B, 0x4E, 0x0F, 0xCE, 0x98, 0xA9, 0x43, 0x57, 0x03, 0xBD,
0xE7, 0xC8, 0x94, 0xDF, 0x6E, 0x36, 0x73, 0x32, 0xB4, 0xEF, 0x2E, 0x85, 0x7A, 0x6E, 0xFC, 0x6C,
0x18, 0x82, 0x75, 0x35, 0x90, 0x07, 0xF3, 0xE4, 0x9F, 0x3E, 0xDC, 0x68, 0xF3, 0xB5, 0xF3, 0x19,
0x80, 0x92, 0x06, 0x99, 0xA2, 0xE8, 0x6F, 0xFF, 0x2E, 0x7F, 0xAE, 0x42, 0xA4, 0x5F, 0xFB, 0xD4,
0x0E, 0x81, 0x2B, 0xC3, 0x04, 0xFF, 0x2B, 0xB3, 0x74, 0x4E, 0x36, 0x5B, 0x9C, 0x15, 0x00, 0xC6,
0x47, 0x2B, 0xE8, 0x8B, 0x3D, 0xF1, 0x9C, 0x03, 0x9A, 0x58, 0x7F, 0x9B, 0x9C, 0xBF, 0x85, 0x49,
0x79, 0x35, 0x2E, 0x56, 0x7B, 0x41, 0x14, 0x39, 0x47, 0x83, 0x26, 0xAA, 0x07, 0x89, 0x98, 0x11,
0x1B, 0x86, 0xE7, 0x73, 0x7A, 0xD8, 0x7D, 0x78, 0x61, 0x53, 0xE9, 0x79, 0xF5, 0x36, 0x8D, 0x44,
0x92, 0x84, 0xF9, 0x13, 0x50, 0x58, 0x3B, 0xA4, 0x6A, 0x36, 0x65, 0x49, 0x8E, 0x3C, 0x0E, 0xF1,
0x6F, 0xD2, 0x84, 0xC4, 0x7E, 0x8E, 0x3F, 0x39, 0xAE, 0x7C, 0x84, 0xF1, 0x63, 0x37, 0x8E, 0x3C,
0xCC, 0x3E, 0x44, 0x81, 0x45, 0xF1, 0x4B, 0xB9, 0xED, 0x6B, 0x36, 0x5D, 0xBB, 0x20, 0x60, 0x1A,
0x0F, 0xA3, 0xAA, 0x55, 0x77, 0x3A, 0xA9, 0xAE, 0x37, 0x4D, 0xBA, 0xB8, 0x86, 0x6B, 0xBC, 0x08,
0x50, 0xF6, 0xCC, 0xA4, 0xBD, 0x1D, 0x40, 0x72, 0xA5, 0x86, 0xFA, 0xE2, 0x10, 0xAE, 0x3D, 0x58,
0x4B, 0x97, 0xF3, 0x43, 0x74, 0xA9, 0x9E, 0xEB, 0x21, 0xB7, 0x01, 0xA4, 0x86, 0x93, 0x97, 0xEE,
0x2F, 0x4F, 0x3B, 0x86, 0xA1, 0x41, 0x6F, 0x41, 0x26, 0x90, 0x78, 0x5C, 0x7F, 0x30, 0x38, 0x4B,
0x3F, 0xAA, 0xEC, 0xED, 0x5C, 0x6F, 0x0E, 0xAD, 0x43, 0x87, 0xFD, 0x93, 0x35, 0xE6, 0x01, 0xEF,
0x41, 0x26, 0x90, 0x99, 0x9E, 0xFB, 0x19, 0x5B, 0xAD, 0xD2, 0x91, 0x8A, 0xE0, 0x46, 0xAF, 0x65,
0xFA, 0x4F, 0x84, 0xC1, 0xA1, 0x2D, 0xCF, 0x45, 0x8B, 0xD3, 0x85, 0x50, 0x55, 0x7C, 0xF9, 0x67,
0x88, 0xD4, 0x4E, 0xE9, 0xD7, 0x6B, 0x61, 0x54, 0xA1, 0xA4, 0xA6, 0xA2, 0xC2, 0xBF, 0x30, 0x9C,
0x40, 0x9F, 0x5F, 0xD7, 0x69, 0x2B, 0x24, 0x82, 0x5E, 0xD9, 0xD6, 0xA7, 0x12, 0x54, 0x1A, 0xF7,
0x55, 0x9F, 0x76, 0x50, 0xA9, 0x95, 0x84, 0xE6, 0x6B, 0x6D, 0xB5, 0x96, 0x54, 0xD6, 0xCD, 0xB3,
0xA1, 0x9B, 0x46, 0xA7, 0x94, 0x4D, 0xC4, 0x94, 0xB4, 0x98, 0xE3, 0xE1, 0xE2, 0x34, 0xD5, 0x33,
0x16, 0x07, 0x54, 0xCD, 0xB7, 0x77, 0x53, 0xDB, 0x4F, 0x4D, 0x46, 0x9D, 0xE9, 0xD4, 0x9C, 0x8A,
0x36, 0xB6, 0xB8, 0x38, 0x26, 0x6C, 0x0E, 0xFF, 0x9C, 0x1B, 0x43, 0x8B, 0x80, 0xCC, 0xB9, 0x3D,
0xDA, 0xC7, 0xF1, 0x8A, 0xF2, 0x6D, 0xB8, 0xD7, 0x74, 0x2F, 0x7E, 0x1E, 0xB7, 0xD3, 0x4A, 0xB4,
0xAC, 0xFC, 0x79, 0x48, 0x6C, 0xBC, 0x96, 0xB6, 0x94, 0x46, 0x57, 0x2D, 0xB0, 0xA3, 0xFC, 0x1E,
0xB9, 0x52, 0x60, 0x85, 0x2D, 0x41, 0xD0, 0x43, 0x01, 0x1E, 0x1C, 0xD5, 0x7D, 0xFC, 0xF3, 0x96,
0x0D, 0xC7, 0xCB, 0x2A, 0x29, 0x9A, 0x93, 0xDD, 0x88, 0x2D, 0x37, 0x5D, 0xAA, 0xFB, 0x49, 0x68,
0xA0, 0x9C, 0x50, 0x86, 0x7F, 0x68, 0x56, 0x57, 0xF9, 0x79, 0x18, 0x39, 0xD4, 0xE0, 0x01, 0x84,
0x33, 0x61, 0xCA, 0xA5, 0xD2, 0xD6, 0xE4, 0xC9, 0x8A, 0x4A, 0x23, 0x44, 0x4E, 0xBC, 0xF0, 0xDC,
0x24, 0xA1, 0xA0, 0xC4, 0xE2, 0x07, 0x3C, 0x10, 0xC4, 0xB5, 0x25, 0x4B, 0x65, 0x63, 0xF4, 0x80,
0xE7, 0xCF, 0x61, 0xB1, 0x71, 0x82, 0x21, 0x87, 0x2C, 0xF5, 0x91, 0x00, 0x32, 0x0C, 0xEC, 0xA9,
0xB5, 0x9A, 0x74, 0x85, 0xE3, 0x36, 0x8F, 0x76, 0x4F, 0x9C, 0x6D, 0xCE, 0xBC, 0xAD, 0x0A, 0x4B,
0xED, 0x76, 0x04, 0xCB, 0xC3, 0xB9, 0x33, 0x9E, 0x01, 0x93, 0x96, 0x69, 0x7D, 0xC5, 0xA2, 0x45,
0x79, 0x9B, 0x04, 0x5C, 0x84, 0x09, 0xED, 0x88, 0x43, 0xC7, 0xAB, 0x93, 0x14, 0x26, 0xA1, 0x40,
0xB5, 0xCE, 0x4E, 0xBF, 0x2A, 0x42, 0x85, 0x3E, 0x2C, 0x3B, 0x54, 0xE8, 0x12, 0x1F, 0x0E, 0x97,
0x59, 0xB2, 0x27, 0x89, 0xFA, 0xF2, 0xDF, 0x8E, 0x68, 0x59, 0xDC, 0x06, 0xBC, 0xB6, 0x85, 0x0D,
0x06, 0x22, 0xEC, 0xB1, 0xCB, 0xE5, 0x04, 0xE6, 0x3D, 0xB3, 0xB0, 0x41, 0x73, 0x08, 0x3F, 0x3C,
0x58, 0x86, 0x63, 0xEB, 0x50, 0xEE, 0x1D, 0x2C, 0x37, 0x74, 0xA9, 0xD3, 0x18, 0xA3, 0x47, 0x6E,
0x93, 0x54, 0xAD, 0x0A, 0x5D, 0xB8, 0x2A, 0x55, 0x5D, 0x78, 0xF6, 0xEE, 0xBE, 0x8E, 0x3C, 0x76,
0x69, 0xB9, 0x40, 0xC2, 0x34, 0xEC, 0x2A, 0xB9, 0xED, 0x7E, 0x20, 0xE4, 0x8D, 0x00, 0x38, 0xC7,
0xE6, 0x8F, 0x44, 0xA8, 0x86, 0xCE, 0xEB, 0x2A, 0xE9, 0x90, 0xF1, 0x4C, 0xDF, 0x32, 0xFB, 0x73,
0x1B, 0x6D, 0x92, 0x1E, 0x95, 0xFE, 0xB4, 0xDB, 0x65, 0xDF, 0x4D, 0x23, 0x54, 0x89, 0x48, 0xBF,
0x4A, 0x2E, 0x70, 0xD6, 0xD7, 0x62, 0xB4, 0x33, 0x29, 0xB1, 0x3A, 0x33, 0x4C, 0x23, 0x6D, 0xA6,
0x76, 0xA5, 0x21, 0x63, 0x48, 0xE6, 0x90, 0x5D, 0xED, 0x90, 0x95, 0x0B, 0x7A, 0x84, 0xBE, 0xB8,
0x0D, 0x5E, 0x63, 0x0C, 0x62, 0x26, 0x4C, 0x14, 0x5A, 0xB3, 0xAC, 0x23, 0xA4, 0x74, 0xA7, 0x6F,
0x33, 0x30, 0x05, 0x60, 0x01, 0x42, 0xA0, 0x28, 0xB7, 0xEE, 0x19, 0x38, 0xF1, 0x64, 0x80, 0x82,
0x43, 0xE1, 0x41, 0x27, 0x1F, 0x1F, 0x90, 0x54, 0x7A, 0xD5, 0x23, 0x2E, 0xD1, 0x3D, 0xCB, 0x28,
0xBA, 0x58, 0x7F, 0xDC, 0x7C, 0x91, 0x24, 0xE9, 0x28, 0x51, 0x83, 0x6E, 0xC5, 0x56, 0x21, 0x42,
0xED, 0xA0, 0x56, 0x22, 0xA1, 0x40, 0x80, 0x6B, 0xA8, 0xF7, 0x94, 0xCA, 0x13, 0x6B, 0x0C, 0x39,
0xD9, 0xFD, 0xE9, 0xF3, 0x6F, 0xA6, 0x9E, 0xFC, 0x70, 0x8A, 0xB3, 0xBC, 0x59, 0x3C, 0x1E, 0x1D,
0x6C, 0xF9, 0x7C, 0xAF, 0xF9, 0x88, 0x71, 0x95, 0xEB, 0x57, 0x00, 0xBD, 0x9F, 0x8C, 0x4F, 0xE1,
0x24, 0x83, 0xC5, 0x22, 0xEA, 0xFD, 0xD3, 0x0C, 0xE2, 0x17, 0x18, 0x7C, 0x6A, 0x4C, 0xDE, 0x77,
0xB4, 0x53, 0x9B, 0x4C, 0x81, 0xCD, 0x23, 0x60, 0xAA, 0x0E, 0x25, 0x73, 0x9C, 0x02, 0x79, 0x32,
0x30, 0xDF, 0x74, 0xDF, 0x75, 0x19, 0xF4, 0xA5, 0x14, 0x5C, 0xF7, 0x7A, 0xA8, 0xA5, 0x91, 0x84,
0x7C, 0x60, 0x03, 0x06, 0x3B, 0xCD, 0x50, 0xB6, 0x27, 0x9C, 0xFE, 0xB1, 0xDD, 0xCC, 0xD3, 0xB0,
0x59, 0x24, 0xB2, 0xCA, 0xE2, 0x1C, 0x81, 0x22, 0x9D, 0x07, 0x8F, 0x8E, 0xB9, 0xBE, 0x4E, 0xFA,
0xFC, 0x39, 0x65, 0xBA, 0xBF, 0x9D, 0x12, 0x37, 0x5E, 0x97, 0x7E, 0xF3, 0x89, 0xF5, 0x5D, 0xF5,
0xE3, 0x09, 0x8C, 0x62, 0xB5, 0x20, 0x9D, 0x0C, 0x53, 0x8A, 0x68, 0x1B, 0xD2, 0x8F, 0x75, 0x17,
0x5D, 0xD4, 0xE5, 0xDA, 0x75, 0x62, 0x19, 0x14, 0x6A, 0x26, 0x2D, 0xEB, 0xF8, 0xAF, 0x37, 0xF0,
0x6C, 0xA4, 0x55, 0xB1, 0xBC, 0xE2, 0x33, 0xC0, 0x9A, 0xCA, 0xB0, 0x11, 0x49, 0x4F, 0x68, 0x9B,
0x3B, 0x6B, 0x3C, 0xCC, 0x13, 0xF6, 0xC7, 0x85, 0x61, 0x68, 0x42, 0xAE, 0xBB, 0xDD, 0xCD, 0x45,
0x16, 0x29, 0x1D, 0xEA, 0xDB, 0xC8, 0x03, 0x94, 0x3C, 0xEE, 0x4F, 0x82, 0x11, 0xC3, 0xEC, 0x28,
0xBD, 0x97, 0x05, 0x99, 0xDE, 0xD7, 0xBB, 0x5E, 0x22, 0x1F, 0xD4, 0xEB, 0x64, 0xD9, 0x92, 0xD9,
0x85, 0xB7, 0x6A, 0x05, 0x6A, 0xE4, 0x24, 0x41, 0xF1, 0xCD, 0xF0, 0xD8, 0x3F, 0xF8, 0x9E, 0x0E,
0xCD, 0x0B, 0x7A, 0x70, 0x6B, 0x5A, 0x75, 0x0A, 0x6A, 0x33, 0x88, 0xEC, 0x17, 0x75, 0x08, 0x70,
0x10, 0x2F, 0x24, 0xCF, 0xC4, 0xE9, 0x42, 0x00, 0x61, 0x94, 0xCA, 0x1F, 0x3A, 0x76, 0x06, 0xFA,
0xD2, 0x48, 0x81, 0xF0, 0x77, 0x60, 0x03, 0x45, 0xD9, 0x61, 0xF4, 0xA4, 0x6F, 0x3D, 0xD9, 0x30,
0xC3, 0x04, 0x6B, 0x54, 0x2A, 0xB7, 0xEC, 0x3B, 0xF4, 0x4B, 0xF5, 0x68, 0x52, 0x26, 0xCE, 0xFF,
0x5D, 0x19, 0x91, 0xA0, 0xA3, 0xA5, 0xA9, 0xB1, 0xE0, 0x23, 0xC4, 0x0A, 0x77, 0x4D, 0xF9, 0x51,
0x20, 0xA3, 0xA5, 0xA9, 0xB1, 0xC1, 0x00, 0x82, 0x86, 0x8E, 0x7F, 0x5D, 0x19, 0x91, 0xA0, 0xA3,
0xC4, 0xEB, 0x54, 0x0B, 0x75, 0x68, 0x52, 0x07, 0x8C, 0x9A, 0x97, 0x8D, 0x79, 0x70, 0x62, 0x46,
0xEF, 0x5C, 0x1B, 0x95, 0x89, 0x71, 0x41, 0xE1, 0x21, 0xA1, 0xA1, 0xA1, 0xC0, 0x02, 0x67, 0x4C,
0x1A, 0xB6, 0xCF, 0xFD, 0x78, 0x53, 0x24, 0xAB, 0xB5, 0xC9, 0xF1, 0x60, 0x23, 0xA5, 0xC8, 0x12,
0x87, 0x6D, 0x58, 0x13, 0x85, 0x88, 0x92, 0x87, 0x6D, 0x58, 0x32, 0xC7, 0x0C, 0x9A, 0x97, 0xAC,
0xDA, 0x36, 0xEE, 0x5E, 0x3E, 0xDF, 0x1D, 0xB8, 0xF2, 0x66, 0x2F, 0xBD, 0xF8, 0x72, 0x47, 0xED,
0x58, 0x13, 0x85, 0x88, 0x92, 0x87, 0x8C, 0x7B, 0x55, 0x09, 0x90, 0xA2, 0xC6, 0xEF, 0x3D, 0xF8,
0x53, 0x24, 0xAB, 0xD4, 0x2A, 0xB7, 0xEC, 0x5A, 0x36, 0xEE, 0x5E, 0x3E, 0xDF, 0x3C, 0xFA, 0x76,
0x4F, 0xFD, 0x59, 0x30, 0xE2, 0x46, 0xEF, 0x3D, 0xF8, 0x53, 0x05, 0x69, 0x31, 0xC1, 0x00, 0x82,
0x86, 0x8E, 0x7F, 0x5D, 0x19, 0xB0, 0xE2, 0x27, 0xCC, 0xFB, 0x74, 0x4B, 0x14, 0x8B, 0x94, 0x8B,
0x75, 0x68, 0x33, 0xC5, 0x08, 0x92, 0x87, 0x8C, 0x9A, 0xB6, 0xCF, 0x1C, 0xBA, 0xD7, 0x0D, 0x98,
0xB2, 0xE6, 0x2F, 0xDC, 0x1B, 0x95, 0x89, 0x71, 0x60, 0x23, 0xC4, 0x0A, 0x96, 0x8F, 0x9C, 0xBA,
0xF6, 0x6E, 0x3F, 0xFC, 0x5B, 0x15, 0xA8, 0xD2, 0x26, 0xAF, 0xBD, 0xF8, 0x72, 0x66, 0x2F, 0xDC,
0x1B, 0xB4, 0xCB, 0x14, 0x8B, 0x94, 0xAA, 0xB7, 0xCD, 0xF9, 0x51, 0x01, 0x80, 0x82, 0x86, 0x6F,
0x3D, 0xD9, 0x30, 0xE2, 0x27, 0xCC, 0xFB, 0x74, 0x4B, 0x14, 0xAA, 0xB7, 0xCD, 0xF9, 0x70, 0x43,
0x04, 0x6B, 0x35, 0xC9, 0xF1, 0x60, 0x23, 0xA5, 0xC8, 0xF3, 0x45, 0x08, 0x92, 0x87, 0x6D, 0x58,
0x32, 0xE6, 0x2F, 0xBD, 0xF8, 0x72, 0x66, 0x4E, 0x1E, 0xBE, 0xFE, 0x7E, 0x7E, 0x7E, 0x5F, 0x1D,
0x99, 0x91, 0xA0, 0xA3, 0xC4, 0x0A, 0x77, 0x4D, 0x18, 0x93, 0xA4, 0xAB, 0xD4, 0x0B, 0x75, 0x49,
0x10, 0xA2, 0xC6, 0xEF, 0x3D, 0xF8, 0x53, 0x24, 0xAB, 0xB5, 0xE8, 0x33, 0xE4, 0x4A, 0x16, 0xAE,
0xDE, 0x1F, 0xBC, 0xDB, 0x15, 0xA8, 0xB3, 0xC5, 0x08, 0x73, 0x45, 0xE9, 0x31, 0xC1, 0xE1, 0x21,
0xA1, 0xA1, 0xA1, 0xC0, 0x02, 0x86, 0x6F, 0x5C, 0x3A, 0xD7, 0x0D, 0x98, 0x93, 0xA4, 0xCA, 0x16,
0xAE, 0xDE, 0x1F, 0x9D, 0x99, 0xB0, 0xE2, 0x46, 0xEF, 0x3D, 0xF8, 0x72, 0x47, 0x0C, 0x9A, 0xB6,
0xCF, 0xFD, 0x59, 0x11, 0xA0, 0xA3, 0xA5, 0xC8, 0xF3, 0x45, 0x08, 0x92, 0x87, 0x6D, 0x39, 0xF0,
0x43, 0x04, 0x8A, 0x96, 0xAE, 0xDE, 0x3E, 0xDF, 0x1D, 0x99, 0x91, 0xA0, 0xC2, 0x06, 0x6F, 0x3D,
0xF8, 0x72, 0x47, 0x0C, 0x9A, 0x97, 0x8D, 0x98, 0x93, 0x85, 0x88, 0x73, 0x45, 0xE9, 0x31, 0xE0,
0x23, 0xA5, 0xA9, 0xD0, 0x03, 0x84, 0x8A, 0x96, 0xAE, 0xDE, 0x1F, 0xBC, 0xDB, 0x15, 0xA8, 0xD2,
0x26, 0xCE, 0xFF, 0x5D, 0x19, 0x91, 0x81, 0x80, 0x82, 0x67, 0x2D, 0xD8, 0x13, 0xA4, 0xAB, 0xD4,
0x0B, 0x94, 0xAA, 0xB7, 0xCD, 0xF9, 0x51, 0x20, 0xA3, 0xA5, 0xC8, 0xF3, 0x45, 0xE9, 0x50, 0x22,
0xC6, 0xEF, 0x5C, 0x3A, 0xD7, 0x0D, 0x98, 0x93, 0x85, 0x88, 0x73, 0x64, 0x4A, 0xF7, 0x4D, 0xF9,
0x51, 0x20, 0xA3, 0xC4, 0x0A, 0x96, 0xAE, 0xDE, 0x3E, 0xFE, 0x7E, 0x7E, 0x7E, 0x5F, 0x3C, 0xFA,
0x76, 0x4F, 0xFD, 0x78, 0x72, 0x66, 0x2F, 0xBD, 0xD9, 0x30, 0xC3, 0xE5, 0x48, 0x12, 0x87, 0x8C,
0x7B, 0x55, 0x28, 0xD2, 0x07, 0x8C, 0x9A, 0x97, 0xAC, 0xDA, 0x17, 0x8D, 0x79, 0x51, 0x20, 0xA3,
0xC4, 0xEB, 0x54, 0x0B, 0x94, 0x8B, 0x94, 0xAA, 0xD6, 0x2E, 0xBF, 0xFC, 0x5B, 0x15, 0xA8, 0xD2,
0x26, 0xAF, 0xDC, 0x1B, 0xB4, 0xEA, 0x37, 0xEC, 0x3B, 0xF4, 0x6A, 0x37, 0xCD, 0x18, 0x93, 0x85,
0x69, 0x31, 0xC1, 0xE1, 0x40, 0xE3, 0x25, 0xC8, 0x12, 0x87, 0x8C, 0x9A, 0xB6, 0xCF, 0xFD, 0x59,
0x11, 0xA0, 0xC2, 0x06, 0x8E, 0x7F, 0x5D, 0x38, 0xF2, 0x47, 0x0C, 0x7B, 0x74, 0x6A, 0x37, 0xEC,
0x5A, 0x36, 0xEE, 0x3F, 0xFC, 0x7A, 0x76, 0x4F, 0x1C, 0x9B, 0x95, 0x89, 0x71, 0x41, 0x00, 0x63,
0x44, 0xEB, 0x54, 0x2A, 0xD6, 0x0F, 0x9C, 0xBA, 0xD7, 0x0D, 0x98, 0x93, 0x85, 0x69, 0x31, 0xC1,
0x00, 0x82, 0x86, 0x8E, 0x9E, 0xBE, 0xDF, 0x3C, 0xFA, 0x57, 0x2C, 0xDA, 0x36, 0xEE, 0x3F, 0xFC,
0x5B, 0x15, 0x89, 0x71, 0x41, 0x00, 0x82, 0x86, 0x8E, 0x7F, 0x5D, 0x38, 0xF2, 0x47, 0xED, 0x58,
0x13, 0xA4, 0xCA, 0xF7, 0x4D, 0xF9, 0x51, 0x01, 0x80, 0x63, 0x44, 0xEB, 0x54, 0x2A, 0xD6, 0x2E,
0xBF, 0xDD, 0x19, 0x91, 0xA0, 0xA3, 0xA5, 0xA9, 0xB1, 0xE0, 0x42, 0x06, 0x8E, 0x7F, 0x5D, 0x19,
0x91, 0xA0, 0xA3, 0xC4, 0x0A, 0x96, 0x8F, 0x7D, 0x78, 0x72, 0x47, 0x0C, 0x7B, 0x74, 0x6A, 0x56,
0x2E, 0xDE, 0x1F, 0xBC, 0xFA, 0x57, 0x0D, 0x79, 0x51, 0x01, 0x61, 0x21, 0xA1, 0xC0, 0xE3, 0x25,
0xA9, 0xB1, 0xC1, 0xE1, 0x40, 0x02, 0x67, 0x4C, 0x1A, 0x97, 0x8D, 0x98, 0x93, 0xA4, 0xAB, 0xD4,
0x2A, 0xD6, 0x0F, 0x9C, 0x9B, 0xB4, 0xCB, 0x14, 0xAA, 0xB7, 0xCD, 0xF9, 0x51, 0x20, 0xA3, 0xC4,
0xEB, 0x35, 0xC9, 0xF1, 0x60, 0x42, 0x06, 0x8E, 0x7F, 0x7C, 0x7A, 0x76, 0x6E, 0x3F, 0xFC, 0x7A,
0x76, 0x6E, 0x5E, 0x3E, 0xFE, 0x7E, 0x5F, 0x3C, 0xDB, 0x15, 0x89, 0x71, 0x41, 0xE1, 0x21, 0xC0,
0xE3, 0x44, 0xEB, 0x54, 0x2A, 0xB7, 0xCD, 0xF9, 0x70, 0x62, 0x27, 0xAD, 0xD8, 0x32, 0xC7, 0x0C,
0x7B, 0x74, 0x4B, 0x14, 0xAA, 0xB7, 0xEC, 0x3B, 0xD5, 0x28, 0xD2, 0x07, 0x6D, 0x39, 0xD1, 0x20,
0xC2, 0xE7, 0x4C, 0x1A, 0x97, 0x8D, 0x98, 0xB2, 0xC7, 0x0C, 0x59, 0x28, 0xF3, 0x9B
};

View File

@@ -2,8 +2,6 @@
"keyboard_name": "0-Sixty",
"url": "",
"maintainer": "vinamarora8",
"width": 12,
"height": 5,
"layouts": {
"LAYOUT_1x2uC": {
"layout": [

View File

@@ -17,5 +17,6 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
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
LTO_ENABLE = yes # Link-time opt

View File

@@ -0,0 +1,62 @@
/* Copyright 2021 Vinam Arora <vinam@posteo.de>
*
* 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 */
#undef PRODUCT_ID
#define PRODUCT_ID 0x0061
#undef PRODUCT
#define PRODUCT 0-Sixty-underglow
/* no caps lock with underglow */
#undef LED_CAPS_LOCK_PIN
/* underglow */
#define RGB_DI_PIN B6
#define RGBLED_NUM 24
#define RGBLIGHT_LIMIT_VAL 185 // limit max I to 400mA
#define RGBLIGHT_EFFECT_BREATHING
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
#define RGBLIGHT_EFFECT_SNAKE
#define RGBLIGHT_EFFECT_KNIGHT
#define RGBLIGHT_EFFECT_CHRISTMAS
#define RGBLIGHT_EFFECT_STATIC_GRADIENT
#define RGBLIGHT_EFFECT_RGB_TEST
#define RGBLIGHT_EFFECT_ALTERNATING
#define RGBLIGHT_EFFECT_TWINKLE
#define RGBLIGHT
/*
* Feature disable options
* These options are also useful to firmware size reduction.
*/
/* disable debug print */
#define NO_DEBUG
/* disable print */
#define NO_PRINT
/* disable action features */
//#define NO_ACTION_LAYER
//#define NO_ACTION_TAPPING
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION

View File

@@ -0,0 +1 @@
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow

View File

@@ -0,0 +1,19 @@
/* Copyright 2021 Vinam Arora <vinam@posteo.de>
*
* 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 "0_sixty.h"

View File

@@ -1,4 +1,4 @@
/* Copyright %YEAR% %YOUR_NAME%
/* Copyright 2021 0xC7
*
* 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
@@ -14,4 +14,4 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "%KEYBOARD%.h"
#include "61key.h"

View File

@@ -0,0 +1,43 @@
/* Copyright 2021 0xC7
*
* 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 KC_NOt, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "quantum.h"
#define ___ KC_NO
/* This is 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_60_ansi( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
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, \
K40, K41, K42, K45, K48, K49, K4B, K4D \
) { \
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
{ 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 }, \
{ K40, K41, K42, ___, ___, K45, ___, ___, K48, K49, ___, K4B, ___, K4D } \
}

View File

@@ -0,0 +1,152 @@
/*
Copyright 2021 0xC7
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 0xE117
#define PRODUCT_ID 0x6161
#define DEVICE_VER 0x0001
#define MANUFACTURER 0xC7
#define PRODUCT 61Key
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
/*
* 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 { B0, B1, B2, B3, B7 }
#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, F7, F6, F5, F4, F1, F0 }
#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
/*
* Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
*/
#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
//#define LED_NUM_LOCK_PIN B0
//#define LED_CAPS_LOCK_PIN B1
//#define LED_SCROLL_LOCK_PIN B2
//#define LED_COMPOSE_PIN B3
//#define LED_KANA_PIN B4
//#define BACKLIGHT_PIN B7
//#define BACKLIGHT_LEVELS 3
//#define BACKLIGHT_BREATHING
//#define RGB_DI_PIN E2
//#ifdef RGB_DI_PIN
//# define RGBLED_NUM 16
//# define RGBLIGHT_HUE_STEP 8
//# define RGBLIGHT_SAT_STEP 8
//# define RGBLIGHT_VAL_STEP 8
//# 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 */
/*== all animations enable ==*/
//# define RGBLIGHT_ANIMATIONS
/*== or choose animations ==*/
//# define RGBLIGHT_EFFECT_BREATHING
//# define RGBLIGHT_EFFECT_RAINBOW_MOOD
//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
//# define RGBLIGHT_EFFECT_SNAKE
//# define RGBLIGHT_EFFECT_KNIGHT
//# define RGBLIGHT_EFFECT_CHRISTMAS
//# define RGBLIGHT_EFFECT_STATIC_GRADIENT
//# define RGBLIGHT_EFFECT_RGB_TEST
//# define RGBLIGHT_EFFECT_ALTERNATING
/*== customize breathing effect ==*/
/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
/*==== use exp() and sin() ====*/
//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
//#endif
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
/* define if matrix has ghost (lacks anti-ghosting diodes) */
//#define MATRIX_HAS_GHOST
/* 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
/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
* This is useful for the Windows task manager shortcut (ctrl+shift+esc).
*/
//#define GRAVE_ESC_CTRL_OVERRIDE
/*
* Force NKRO
*
* Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
* state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
* makefile for this to work.)
*
* If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
* until the next keyboard reset.
*
* NKRO may prevent your keystrokes from being detected in the BIOS, but it is
* fully operational during normal computer usage.
*
* For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
* or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
* bootmagic, NKRO mode will always be enabled until it is toggled again during a
* power-up.
*
*/
//#define FORCE_NKRO
/*
* Feature disable options
* These options are also useful to firmware size reduction.
*/
/* disable debug print */
//#define NO_DEBUG
/* disable print */
//#define NO_PRINT
/* disable action features */
//#define NO_ACTION_LAYER
//#define NO_ACTION_TAPPING
//#define NO_ACTION_ONESHOT
/* disable these deprecated features by default */
#define NO_ACTION_MACRO
#define NO_ACTION_FUNCTION
/* Bootmagic Lite key configuration */
//#define BOOTMAGIC_LITE_ROW 0
//#define BOOTMAGIC_LITE_COLUMN 0

Some files were not shown because too many files have changed in this diff Show More