Compare commits

..

61 Commits

Author SHA1 Message Date
Xelus22
97122d203b [Core] DYNAMIC_KEYMAP_EEPROM_MAX_ADDR check (#10315)
* add error check

* remove quotes

* update error message

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

Co-authored-by: Ryan <fauxpark@gmail.com>
2020-09-16 16:16:01 +10:00
vattern
06d4c0a396 [Keyboard] add Stoutgat v2; move Stoutgat v1 (#10233)
* initial add

* stoutgat working

* Ready for release

* Ready for release

* Ready for release

* Ready for release

* Ready for release

* fix typos

* update flash instructions in readme

* update copyright

* Update keyboards/tkw/stoutgatv2/keymaps/default/keymap.c

* Apply suggestions from code review

* Fix typo

* Update lib/vusb

* Update keyboards/tkw/stoutgatv2/rules.mk

* Update desc add v2

* Add ANSI

* Move to v1 and v2 folders

* fix typo

* fix v1 readme

* Fix copypasta from v1 keymap

* fix missing trailing slash

* Delete keymap.json

* Apply suggestions from code review

Fixed layout and removed erroneous keymap.json
2020-09-15 00:57:55 -07:00
Lasse Bjerre
0050033aca Add ISO layouts for YMD75 (#10244)
* Update rev2.h

* Update info.json

* Create keymap.c

* Add ISO layout to rev1

* Removed redundant keycount

* Add fix for rev1 board + additional key

* Updated default iso keymap

* Add layout with 1.5u keys to the right of spacebar

* Fixed rev2 rwkl and added default layout
2020-09-14 18:41:30 -07:00
Nick Blyumberg
b58f9ef1e2 [Keymap] Hub16 AutoHotKey Companion (#10159)
* Hub16 AutoHotKey Companion

* Revised after PR comments by Drashna

* Update keyboards/hub16/keymaps/ahk_companion/readme.md

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

* Update keyboards/hub16/keymaps/ahk_companion/readme.md

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

* Update keyboards/hub16/keymaps/ahk_companion/readme.md

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

* Update keyboards/hub16/keymaps/ahk_companion/readme.md

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

* Update keyboards/hub16/keymaps/ahk_companion/readme.md

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

* Update keyboards/hub16/keymaps/ahk_companion/keymap.c

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

Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2020-09-14 18:15:25 -07:00
LSChyi
02551ae499 [Keyboard] add Phoenix keyboard (#10256)
* setup keyboard

* fit v1 board setting

* remove unused def and add ergodox_pretty

* add user hooks

* add ergodox_pretty to info

* apply suggestions

* use default split usb timeout
2020-09-14 03:33:43 -07:00
undermark5
6499eb6a3c Fixed typo in vscode docs (#10303)
.vscode/c_cpp_properies.json -> .vscode/c_cpp_properties.json
2020-09-13 14:28:30 +01:00
Frans de Jonge
2b9f200a2a [fix] dfu-programmer <0.7 doesn't support --force flag (#10292)
Fixes <https://github.com/qmk/qmk_firmware/issues/10286>.
2020-09-13 02:17:47 +01:00
Darren Meehan
9e99a9b98c Remove use of sudo in lily58 make docs (#10301) 2020-09-12 20:40:31 +01:00
binepad
e4d46a1c00 [Keyboard] add binepad/bn003 (#10276)
* ADD BINEPAD/BN003

* Update keyboards/binepad/bn003/config.h

* Update keyboards/binepad/bn003/config.h

* Update keyboards/binepad/bn003/rules.mk

* Update keyboards/binepad/bn003/keymaps/via/keymap.c

* Update readme.md

added macro pad info

* Update keyboards/binepad/bn003/readme.md

* Update keyboards/binepad/bn003/bn003.c

* Update keyboards/binepad/bn003/config.h

* Update keyboards/binepad/bn003/config.h

* Update keyboards/binepad/bn003/info.json

* Update keyboards/binepad/bn003/rules.mk

* Update keyboards/binepad/bn003/rules.mk

* Update keyboards/binepad/bn003/rules.mk

* Update bn003.c

* Update keyboards/binepad/bn003/readme.md

* Update keyboards/binepad/bn003/rules.mk

* Update keyboards/binepad/bn003/config.h

* Update keyboards/binepad/bn003/keymaps/via/rules.mk

* Update keyboards/binepad/bn003/rules.mk
2020-09-12 03:11:30 -07:00
TheLibra23
7141de19d9 added VIA keymap for Keebio Viterbi (#10168)
* added via keymap

* replaced PRODUCT_ID 0x1157 with PRODUCT_ID 0x2157

replaced product id to distinguish rev2 from rev1.
bakingpy gave me permission through discord chat.

* Update keyboards/keebio/viterbi/keymaps/via/keymap.c

* Update keyboards/keebio/viterbi/keymaps/via/rules.mk

* made a simplier keymap.c for via folder

Based from the default keymap, removed unnecessary codes.
2020-09-12 00:55:52 -07:00
Ben
c82865efab Add VIA keymap for Plaid-Pad (#10057)
* Add via keymap for Plaid-Pad

- Add VIA support for the Plaid-Pad
- Changes Vendor ID and Product ID (to follow VIA's guidelines)

* Add extra encoder pads for rev1.1

* Change Product Id from pp to PP (hex value)

* improved readme

- detailed informations about rotary encoder, bootloader and firmware

* Improved encoder informations in via keymap

* Improved encoder infos and code in default keymap

* add revision folder for rev1 and rev1.1

* change encoder assignment for defaul a via keymap

* Update keyboards/keycapsss/plaid_pad/config.h

* change revision number

* Update keyboards/keycapsss/plaid_pad/rules.mk

* Update keyboards/keycapsss/plaid_pad/rules.mk

* Update keyboards/keycapsss/plaid_pad/rules.mk

* Update keyboards/keycapsss/plaid_pad/rules.mk

* Update keyboards/keycapsss/plaid_pad/readme.md

* add license to header of *.h and *.c files

* remove the list of alternate bootloaders

- due to the pr checklist

* Update keyboards/keycapsss/plaid_pad/rules.mk
2020-09-11 18:19:05 -07:00
Takeshi ISHII
d8d65bbf5f [Docs] Update Japanese translation of feature_split_keyboard.md (#10283)
Apply #10242 changes to ja/feature_split_keyboard.md
2020-09-11 13:10:30 -07:00
hidenori
58d7e9fa0e [Keymap] Added ToyoshimaHidenori's keymap for Ergodash mini (#10228)
* Add ToyoshimaHidenori's keymap

* Remove some dead code and characters

* Change the folder name from uppercase to lowercase

* Remove uppercase folder
2020-09-11 13:06:38 -07:00
yulei
6de4a53c7c [Keyboard] added SQUARE.X by iNETT Studio (#10066)
* added SQUARE.X keyboard from the iNETT Studio

* split to two sub directories

* Apply suggestions from code review

* Update keyboards/inett_studio/sqx/universal/universal.h

* Apply suggestions from code review

* update the matrix control keycodes settings

* use the offical macro to the rgb matrix control

* fixed led position issue

* Apply suggestions from code review

* removed the redundant #endif

* update default keymap

* Apply suggestions from code review

* add license header
2020-09-11 02:28:23 -07:00
Alvaro Muente
3d3c2e1d3f Add VIA support for JJ40 (#10263)
* via support

* Removing backspaces from jj40 keymap.c

* Updating jj40/via/rules.mk
2020-09-11 00:03:49 -07:00
Callum Oakley
3d4f0028d6 [Keymap] major keymap overhaul (#10185)
* experiment with userspace

* reorganise

* readme

* missing oneshot shift from ignored keys

* recombine hands in layout macro
2020-09-09 15:37:34 -07:00
Ryan
6e948feb6a Use the force when flashing with dfu-programmer (#10070) 2020-09-10 00:00:27 +10:00
Nick Christus
076b9d482f [Keymap] Added nchristus userspace (#10261)
* userspace: added nchristus

* userspace: updates per PR review
2020-09-08 22:33:38 -07:00
Ramon Imbao
08f6e64137 [Keyboard] Add Squishy65 keyboard (#10266)
* Add Squishy65 keyboard

* Edit info.json

* Fix incorrect ISO layout

* Add missing license in files

* Update keyboards/ramonimbao/squishy65/config.h

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

* Update keyboards/ramonimbao/squishy65/keymaps/via/rules.mk

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

* Update keyboards/ramonimbao/squishy65/rules.mk

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

Co-authored-by: Ryan <fauxpark@gmail.com>
2020-09-08 22:32:47 -07:00
Jan Kolkmeier
4b9c3dc2e5 add keyboard: bemeier/bmek (revisited) (#10144)
* bmek keyboard support

* Update keyboards/bemeier/bmek/bmek.h

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

* Update keyboards/bemeier/bmek/rules.mk

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

* moved shutdown behavior to shutdown hook

* removed dynamic macro option statement

* Apply suggestions from code review

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

* Apply suggestions from code review

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

* change layout name in via

* move/copy root rules to revs

* Apply suggestions from code review

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

* Apply suggestions from code review

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

Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2020-09-08 22:25:13 -07:00
boss566y
ba3ec0f081 [Keymap] Romac Keymap with VIA and OLED Support (#10249)
* Add Personal Keymap with VIA and OLED

* Update keyboards/kingly_keys/romac/keymaps/boss566y/keymap.c

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

* Update keyboards/kingly_keys/romac/keymaps/boss566y/keymap.c

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

* Update keyboards/kingly_keys/romac/keymaps/boss566y/keymap.c

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

* Update keyboards/kingly_keys/romac/keymaps/boss566y/keymap.c

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

* Update keyboards/kingly_keys/romac/keymaps/boss566y/keymap.c

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

Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2020-09-08 21:24:23 -07:00
Nick Blyumberg
d3cea9ed93 [Keyboard] Added the proper RGB settings to allow via control (#10223) 2020-09-08 21:10:30 -07:00
umi
5f00df0c4c [Docs] Japanese translation of docs/reference_keymap_extras.md (#10138)
* add reference_keymap_extras.md translation

* update based on comment

* update based on comment

* update based on comment
2020-09-08 14:44:36 -07:00
MakotoKurauchi
cd73949682 updated readme.md of yushakobo/quick7 keyboard (#10243)
* update "Hardware Availability"

* add a section of "How to build"

* update "Hardware Supported"
2020-09-07 23:20:16 -07:00
marksard
4e3a96ff3e Update treadstone48/rev2 info.json (#10241)
* Keyboard: add treeadstone48

* rename layout defines

* Use of pragma once

* move common include code

* fixed info.json

* change keymap layout from kc to normal

* fix alpha revision keymap

* fixed info.json

* remove USE_Link_Time_Optimization

* Updated treadstone48 info.json file

* remove kc define

* Nested layout macro 1/2

* Nested layout macro 2/2
2020-09-07 23:00:19 -07:00
marksard
ae7a076964 Update marksard/leftover30 info.json (#10240)
* Keyboard: add treeadstone48

* rename layout defines

* Use of pragma once

* move common include code

* fixed info.json

* change keymap layout from kc to normal

* fix alpha revision keymap

* fixed info.json

* remove USE_Link_Time_Optimization

* Updated leftover30 info.json file
2020-09-07 22:37:15 -07:00
James Young
78d5224a1d Remove HD44780 References, Part 3 (#10238)
* remove HD44780_ENABLE rules: G-H

* remove HD44780_ENABLE config: G-H
2020-09-07 22:28:18 -07:00
Takeshi ISHII
088888937a Replace figures in docs/feature_split_keyboard.md (#10242)
* Replace figures in feature_split_keyboard.md

* fig update

* Update docs/feature_split_keyboard.md

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

Co-authored-by: Ryan <fauxpark@gmail.com>
2020-09-06 21:15:55 -07:00
Drashna Jaelre
9fe3fc4c04 Add Bakeneko 65 (#10234)
* Add Bakeneko 65

* Apply suggestions from code review

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

Co-authored-by: Ryan <fauxpark@gmail.com>
2020-09-06 21:03:58 -07:00
Vitja Makarov
6b1c58629f [Keyboard] Fix adb_usb/aek layout keypad equal key (#10248) 2020-09-06 21:03:16 -07:00
QMK Bot
3b1abe0dee format code according to conventions [skip ci] 2020-09-07 03:50:14 +00:00
gitdrik
3b14c032e0 [Keymap] Added Finnish SFS 5966 keymap for planck. (#10200)
* Added Finnish SFS 5966 keymap for planck.

* Modified comments and added copyright header.
2020-09-06 20:49:20 -07:00
jackytrabbit
fb66f0a3fb [Keyboard] Add VIA support for lazydesigners\bolt (#10218)
* Add VIA support for lazydesigners\bolt

Add VIA support for lazydesigners\bolt

* Update keyboards/lazydesigners/bolt/via/rules.mk

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

Co-authored-by: Ryan <fauxpark@gmail.com>
2020-09-06 20:47:52 -07:00
Adam Gwilliam
1d8b0ccc81 [Keyboard] add via support for boardsource/4x12 (#10220)
Co-authored-by: Adam Gwilliam <agwilliam@yaharasoftware.com>
2020-09-06 18:10:18 -07:00
nathanvercaemert
92e5361fc5 [Keymap] Personal Keymap (nathanvercaemert) Update (#10107)
* updates to incorporate combined mouse key acceleration functionality

* tab switching in chrome works, updated readme

* updated keymap image

* updated keymap image

Co-authored-by: Nathan Vercaemert <nathan.vercaemert@gmail.com>
2020-09-06 17:55:39 -07:00
moyi4681
8ea8a80c5b [Keyboard] add Maja soldered keyboard (#10152)
* add maja_soldered keyboard

add maja_soldered keyboard

* Update info.json

* update keymap

* Update keyboards/kbdfans/maja_soldered/config.h

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

* Update keymap.c

* Update keyboards/kbdfans/maja_soldered/rules.mk

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

* Update keyboards/kbdfans/maja_soldered/rules.mk

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

* Update keymap.c

* Update keymap.c

* Update keymap.c

Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2020-09-06 17:55:06 -07:00
Alvaro Muente
788cbcf828 [Keyboard] Update JJ40 VID and PID (#10215)
Co-authored-by: Alvaro <afmuente@outlook.com>
2020-09-06 17:52:57 -07:00
Koichi Katano
28e10eedda Apply suggestions from code review
Co-authored-by: Ryan <fauxpark@gmail.com>
2020-09-07 09:33:12 +09:00
stanrc85
6c3e404839 [Keymap] Add indicator light bootup fanfare (#10158)
* Add indicator light bootup fanfare

* move fanfare code to new file

* fanfare code in new file and remove unused boards

* new startup fanfare code

* add lock/unlock indicator animation

* input key presses before changing lights

* remove old code
2020-09-06 15:04:29 -07:00
Purdea Andrei
f7ccbfcea8 quantum/debounce: rename debouncing algorithms (#9564)
* quantum/debounce: rename debouncing algorithms according to Issue 8763

This is the second attempt at implementation, with no ts_ and cy_ prefixes, since those will be implemented with macros.

* Debouncing documentation: Refactor, add some generic info, and merge into a single document
2020-09-06 13:13:49 -07:00
Daniel Rodríguez Rivero
8ac9940a76 [Keymap] danielo515/redox-1 (#9935)
* chore: pulled the latest from master

Bring my redox layout from my latest redox branch
Bring my latest user stuff from my redox branch

* Update users/danielo515/config.h

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

* chore: small cleanup

Co-authored-by: Drashna Jaelre <drashna@live.com>
2020-09-06 13:13:18 -07:00
Erovia
ac24f203cc Docs/PR_checklist: Reorder, unify and pet-peeves (#10253)
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2020-09-06 13:06:12 +01:00
Maarten Dekkers
d0eabd083e [Keyboard] add Plume Keyboards Plume65 (#10176)
* Add Plume65

* Changes
2020-09-06 00:33:43 -07:00
Maarten Dekkers
e0b7c70743 [Keyboard] add Solheim68 by Maartenwut (#10190)
* Add Solheim68

* Update info.json

* Layout rename and config cleanup
2020-09-05 23:07:34 -07:00
Olivier Li
9bca381b98 Unflip < and > for canadian mutlilingual (#10222)
Co-authored-by: Olivier Li <olivierli@google.com>
2020-09-06 09:51:38 +10:00
Brandon Claveria
d612d617ee [Keyboard] add Pandamic handwired (#10227)
* Add pandemic keyboard

* Fix default keymap

* Add via keymap

* Fix via keymap

* Fix keymaps and pandamic.h

* add info.json

* update info.json

* Apply suggestions from code review

* Update keyboards/handwired/swiftrax/pandamic/info.json

* make suggested changes
2020-09-05 11:37:05 -07:00
Ryan
687d05dfb1 Update file changes action (#10245) 2020-09-05 14:37:25 +01:00
umi
a8a714c46e [Docs] Japanese translation of docs/reference_configurator_support.md (#9879)
* add reference_configurator_support.md translation

* update based on comment

* update based on comment

* update based on comment

* update based on comment
2020-09-05 13:53:19 +09:00
marksard
6e32dd123f [Keyboard] add rhymestone by marksard (#9708)
* Keyboard: add treeadstone48

* rename layout defines

* Use of pragma once

* move common include code

* fixed info.json

* change keymap layout from kc to normal

* fix alpha revision keymap

* fixed info.json

* remove USE_Link_Time_Optimization

* Add keyboard the Rhymestone

* fixed by PR review

* fixed by review

* Update keyboards/rhymestone/readme.md

fixed

* Fixed possible changes to oled_write_P

* Change the name of the layout definition

* Update keyboards/rhymestone/info.json

* Update keyboards/rhymestone/keymaps/default/keymap.c

* Update keyboards/rhymestone/keymaps/default/keymap.c

* Update keyboards/rhymestone/keymaps/default/keymap.c

* Update keyboards/rhymestone/keymaps/default/keymap.c

* Update keyboards/rhymestone/keymaps/switch_tester/keymap.c

* Update keyboards/rhymestone/keymaps/switch_tester/keymap.c

* Update keyboards/rhymestone/rev1/rev1.h

* add empty rules.mk in rev1

* Update from other review

* Update keyboards/rhymestone/rules.mk

* fixed other review

* move rhymestone to marksard directory

* move rhymestone to marksard directory (Commit the necessary modifications)

* remove
2020-09-04 04:14:34 -07:00
Takeshi ISHII
82a830196f fix link in docs/ja/*.md (#10232)
* fix link in docs/ja/feature_split_keyboard.md

* fix link in docs/ja/faq_build.md

* fix link in docs/ja/faq_general.md

* fix link in  docs/ja/faq_keymap.md

* fix link in docs/ja/how_a_matrix_works.md

* fix link in docs/ja/reference_glossary.md
2020-09-04 04:12:43 -07:00
marksard
6a79d99ea2 [Keyboard] add leftover30 by marksard (#10140)
* Keyboard: add treeadstone48

* rename layout defines

* Use of pragma once

* move common include code

* fixed info.json

* change keymap layout from kc to normal

* fix alpha revision keymap

* fixed info.json

* remove USE_Link_Time_Optimization

* Add keyboard leftover30

* update keymap

* Update keyboards/marksard/leftover30/config.h

I guess I was mistaken. Thank you.

* Update keyboards/marksard/leftover30/keymaps/default/keymap.c

* Update keyboards/marksard/leftover30/leftover30.c

* Update keyboards/marksard/leftover30/keymaps/default/keymap.c

* Update keyboards/marksard/leftover30/keymaps/default/keymap.c

* Update keyboards/marksard/leftover30/keymaps/default/keymap.c

* Update keyboards/marksard/leftover30/keymaps/default/keymap.c

* Update keyboards/marksard/leftover30/keymaps/default/keymap.c

* Update keyboards/marksard/leftover30/keymaps/default/keymap.c

* Update keyboards/marksard/leftover30/keymaps/default/keymap.c

* Update keyboards/marksard/leftover30/keymaps/default/keymap.c

* Update keyboards/marksard/leftover30/keymaps/default/keymap.c

* changed user led custom method

* Update keyboards/marksard/leftover30/config.h

* Update keyboards/marksard/leftover30/config.h

* Update keyboards/marksard/leftover30/keymaps/default/rules.mk

* Update keyboards/marksard/leftover30/rules.mk

* Update from other review

* Update keyboards/marksard/leftover30/readme.md

* fixed kanji key procedure

* Update keyboards/marksard/leftover30/config.h

* Update keyboards/marksard/leftover30/config.h

* Update keyboards/marksard/leftover30/config.h

* fixed by review
2020-09-04 03:31:36 -07:00
umi
2e4a75e2bc [Docs] Japanese translation of docs/serial_driver.md (#10014)
* add serial_drive.md translation

* update table style

* update based on comment

* update based on comment
2020-09-03 19:58:03 -07:00
umi
c3f3b34d7c [Docs] Japanese translation of api_*.md (#9992)
* add api related translation

* update based on comment

* update based on comment

* update based on comment
2020-09-03 19:54:23 -07:00
umi
98278968b7 [Docs] Japanese translation of docs/reference_glossary.md (#9880)
* add reference_glossary.md translation

* update based on comment

* update based on comment

* update based on comment
2020-09-03 19:44:39 -07:00
umi
361003934e [Docs] Japanese translation of docs/quantum_keycodes.md (#10137)
* add quantum_keycodes.md translation

* update based on comment
2020-09-03 19:01:37 -07:00
umi
c10b011828 [Docs] Japanese translation of docs/syllabus.md (#10016)
* add syllabus.md translation

* update based on comment

* update based on comment
2020-09-03 18:56:04 -07:00
umi
6eefc20c2a [Docs] Japanese translation of docs/support.md (#10015)
* add support.md translation

* update based on comment
2020-09-03 18:50:53 -07:00
umi
2282104526 [Docs] Japanese translation of docs/translating.md (#10018)
* add translating.md translation

* update based on comment

* update based on comment
2020-09-04 03:28:53 +09:00
umi
9b9587527f [Docs] Japanese translation of docs/reference_info_json.md (#9881)
* add reference_info_json.md translation

* update based on comment

* update based on comment
2020-09-04 03:25:21 +09:00
Koichi Katano
461153150b Add Bakeneko 65 2020-09-04 02:02:40 +09:00
Koichi Katano
c1a6b5f430 [Keyboard] add Bakeneko 60 (#10212)
* Add Bakeneko 60 keyboard

* Apply suggestions from code review
2020-09-03 09:09:36 -07:00
374 changed files with 17185 additions and 1807 deletions

View File

@@ -16,7 +16,7 @@ jobs:
with:
fetch-depth: 0
- uses: trilom/file-changes-action@v1.2.3
- uses: trilom/file-changes-action@v1.2.4
id: file_changes
with:
output: '\n'

View File

@@ -16,7 +16,8 @@
"*.hpp": "cpp",
"xstddef": "c",
"type_traits": "c",
"utility": "c"
"utility": "c",
"ranges": "c"
},
"[markdown]": {
"editor.trimAutoWhitespace": false,

View File

@@ -397,9 +397,20 @@ ifneq ($(strip $(CUSTOM_MATRIX)), yes)
endif
endif
# Support for translating old names to new names:
ifeq ($(strip $(DEBOUNCE_TYPE)),sym_g)
DEBOUNCE_TYPE:=sym_defer_g
else ifeq ($(strip $(DEBOUNCE_TYPE)),eager_pk)
DEBOUNCE_TYPE:=sym_eager_pk
else ifeq ($(strip $(DEBOUNCE_TYPE)),sym_pk)
DEBOUNCE_TYPE:=sym_defer_pk
else ifeq ($(strip $(DEBOUNCE_TYPE)),eager_pr)
DEBOUNCE_TYPE:=sym_eager_pr
endif
DEBOUNCE_DIR:= $(QUANTUM_DIR)/debounce
# Debounce Modules. Set DEBOUNCE_TYPE=custom if including one manually.
DEBOUNCE_TYPE?= sym_g
DEBOUNCE_TYPE?= sym_defer_g
ifneq ($(strip $(DEBOUNCE_TYPE)), custom)
QUANTUM_SRC += $(DEBOUNCE_DIR)/$(strip $(DEBOUNCE_TYPE)).c
endif

View File

@@ -1,43 +1,151 @@
# Debounce algorithm
# Contact bounce / contact chatter
Mechanical switches often don't have a clean single transition between pressed and unpressed states.
In an ideal world, when you press a switch, you would expect the digital pin to see something like this:
(X axis showing time
```
voltage +----------------------
^ |
| |
| ------------------+
----> time
```
However in the real world you will actually see contact bounce, which will look like multiple 1->0 and 0->1 transitions,
until the value finally settles.
```
+-+ +--+ +-------------
| | | | |
| | | | |
+-----------------+ +-+ +-+
```
The time it takes for the switch to settle might vary with switch type, age, and even pressing technique.
If the device chooses not to mitigate contact bounce, then often actions that happen when the switch is pressed are repeated
multiple times.
There are many ways to handle contact bounce ("Debouncing"). Some include employing additional hardware, for example an RC filter,
while there are various ways to do debouncing in software too, often called debounce algorithms. This page discusses software
debouncing methods available in QMK.
While technically not considered contact bounce/contact chatter, some switch technologies are susceptible to noise, meaning,
while the key is not changing state, sometimes short random 0->1 or 1->0 transitions might be read by the digital circuit, for example:
```
+-+
| |
| |
+-----------------+ +--------------------
```
Many debounce methods (but not all) will also make the device resistant to noise. If you are working with a technology that is
susceptible to noise, you must choose a debounce method that will also mitigate noise for you.
## Types of debounce algorithms
1) Unit of time: Timestamp (milliseconds) vs Cycles (scans)
* Debounce algorithms often have a 'debounce time' parameter, that specifies the maximum settling time of the switch contacts.
This time might be measured in various units:
* Cycles-based debouncing waits n cycles (scans), decreasing count by one each matrix_scan
* Timestamp-based debouncing stores the millisecond timestamp a change occurred, and does substraction to figure out time elapsed.
* Timestamp-based debouncing is usually superior, especially in the case of noise-resistant devices because settling times of physical
switches is specified in units of time, and should not depend on the matrix scan-rate of the keyboard.
* Cycles-based debouncing is sometimes considered inferior, because the settling time that it is able to compensate for depends on the
performance of the matrix scanning code. If you use cycles-based debouncing, and you significantly improve the performance of your scanning
code, you might end up with less effective debouncing. A situation in which cycles-based debouncing might be preferable is when
noise is present, and the scanning algorithm is slow, or variable speed. Even if your debounce algorithm is fundamentally noise-resistant,
if the scanning is slow, and you are using a timestamp-based algorithm, you might end up making a debouncing decision based on only two
sampled values, which will limit the noise-resistance of the algorithm.
* Currently all built-in debounce algorithms support timestamp-based debouncing only. In the future we might
implement cycles-based debouncing, and it will be selectable via a ```config.h``` macro.
2) Symmetric vs Asymmetric
* Symmetric - apply the same debouncing algorithm, to both key-up and key-down events.
* Recommended naming convention: ```sym_*```
* Asymmetric - apply different debouncing algorithms to key-down and key-up events. E.g. Eager key-down, Defer key-up.
* Recommended naming convention: ```asym_*``` followed by details of the type of algorithm in use, in order, for key-down and then key-up
3) Eager vs Defer
* Eager - any key change is reported immediately. All further inputs for DEBOUNCE ms are ignored.
* Eager algorithms are not noise-resistant.
* Recommended naming conventions:
* ```sym_eager_*```
* ```asym_eager_*_*```: key-down is using eager algorithm
* ```asym_*_eager_*```: key-up is using eager algorithm
* Defer - wait for no changes for DEBOUNCE ms before reporting change.
* Defer algorithms are noise-resistant
* Recommended naming conventions:
* ```sym_defer_*```
* ```asym_defer_*_*```: key-down is using eager algorithm
* ```asym_*_defer_*```: key-up is using eager algorithm
4) Global vs Per-Key vs Per-Row
* Global - one timer for all keys. Any key change state affects global timer
* Recommended naming convention: ```*_g```
* Per-key - one timer per key
* Recommended naming convention: ```*_pk```
* Per-row - one timer per row
* Recommended naming convention: ```*_pr```
* Per-key and per-row algorithms consume more resources (in terms of performance,
and ram usage), but fast typists might prefer them over global.
## Debounce algorithms supported by QMK
QMK supports multiple debounce algorithms through its debounce API.
The logic for which debounce method called is below. It checks various defines that you have set in rules.mk
The logic for which debounce method called is below. It checks various defines that you have set in ```rules.mk```
```
DEBOUNCE_DIR:= $(QUANTUM_DIR)/debounce
DEBOUNCE_TYPE?= sym_g
DEBOUNCE_TYPE?= sym_defer_g
ifneq ($(strip $(DEBOUNCE_TYPE)), custom)
QUANTUM_SRC += $(DEBOUNCE_DIR)/$(strip $(DEBOUNCE_TYPE)).c
endif
```
# Debounce selection
### Debounce selection
| DEBOUNCE_TYPE | Description | What else is needed |
| ------------- | --------------------------------------------------- | ----------------------------- |
| Not defined | Use the default algorithm, currently sym_g | Nothing |
| Not defined | Use the default algorithm, currently sym_defer_g | Nothing |
| custom | Use your own debounce code | ```SRC += debounce.c``` add your own debounce.c and implement necessary functions |
| anything_else | Use another algorithm from quantum/debounce/* | Nothing |
| Anything Else | Use another algorithm from quantum/debounce/* | Nothing |
**Regarding split keyboards**:
The debounce code is compatible with split keyboards.
# Use your own debouncing code
* Set ```DEBOUNCE_TYPE = custom```.
* Add ```SRC += debounce.c```
### Selecting an included debouncing method
Keyboards may select one of the already implemented debounce methods, by adding to ```rules.mk``` the following line:
```
DEBOUNCE_TYPE = <name of algorithm>
```
Where name of algorithm is one of:
* ```sym_defer_g``` - debouncing per keyboard. On any state change, a global timer is set. When ```DEBOUNCE``` milliseconds of no changes has occurred, all input changes are pushed.
* This is the current default algorithm. This is the highest performance algorithm with lowest memory usage, and it's also noise-resistant.
* ```sym_eager_pr``` - debouncing per row. On any state change, response is immediate, followed by locking the row ```DEBOUNCE``` milliseconds of no further input for that row.
For use in keyboards where refreshing ```NUM_KEYS``` 8-bit counters is computationally expensive / low scan rate, and fingers usually only hit one row at a time. This could be
appropriate for the ErgoDox models; the matrix is rotated 90°, and hence its "rows" are really columns, and each finger only hits a single "row" at a time in normal use.
* ```sym_eager_pk``` - debouncing per key. On any state change, response is immediate, followed by ```DEBOUNCE``` milliseconds of no further input for that key
* ```sym_defer_pk``` - debouncing per key. On any state change, a per-key timer is set. When ```DEBOUNCE``` milliseconds of no changes have occurred on that key, the key status change is pushed.
### A couple algorithms that could be implemented in the future:
* ```sym_defer_pr```
* ```sym_eager_g```
* ```asym_eager_defer_pk```
### Use your own debouncing code
You have the option to implement you own debouncing algorithm. To do this:
* Set ```DEBOUNCE_TYPE = custom``` in ```rules.mk```.
* Add ```SRC += debounce.c``` in ```rules.mk```
* Add your own ```debounce.c```. Look at current implementations in ```quantum/debounce``` for examples.
* Debouncing occurs after every raw matrix scan.
* Use num_rows rather than MATRIX_ROWS, so that split keyboards are supported correctly.
* If the algorithm might be applicable to other keyboards, please consider adding it to ```quantum/debounce```
# Changing between included debouncing methods
You can either use your own code, by including your own debounce.c, or switch to another included one.
Included debounce methods are:
* eager_pr - debouncing per row. On any state change, response is immediate, followed by locking the row ```DEBOUNCE``` milliseconds of no further input for that row.
For use in keyboards where refreshing ```NUM_KEYS``` 8-bit counters is computationally expensive / low scan rate, and fingers usually only hit one row at a time. This could be
appropriate for the ErgoDox models; the matrix is rotated 90°, and hence its "rows" are really columns, and each finger only hits a single "row" at a time in normal use.
* eager_pk - debouncing per key. On any state change, response is immediate, followed by ```DEBOUNCE``` milliseconds of no further input for that key
* sym_g - debouncing per keyboard. On any state change, a global timer is set. When ```DEBOUNCE``` milliseconds of no changes has occured, all input changes are pushed.
* sym_pk - debouncing per key. On any state change, a per-key timer is set. When ```DEBOUNCE``` milliseconds of no changes have occured on that key, the key status change is pushed.
### Old names
The following old names for existing algorithms will continue to be supported, however it is recommended to use the new names instead.
* sym_g - old name for sym_defer_g
* eager_pk - old name for sym_eager_pk
* sym_pk - old name for sym_defer_pk
* eager_pr - old name for sym_eager_pr

View File

@@ -48,11 +48,12 @@ However, USB cables, SATA cables, and even just 4 wires have been known to be us
### Serial Wiring
The 3 wires of the TRS/TRRS cable need to connect GND, VCC, and D0 (aka PDO or pin 3) between the two Pro Micros.
The 3 wires of the TRS/TRRS cable need to connect GND, VCC, and D0/D1/D2/D3 (aka PD0/PD1/PD2/PD3) between the two Pro Micros.
?> Note that the pin used here is actually set by `SOFT_SERIAL_PIN` below.
![serial wiring](https://i.imgur.com/C3D1GAQ.png)
<img alt="sk-pd0-connection-mono" src="https://user-images.githubusercontent.com/2170248/92296488-28e9ad80-ef70-11ea-98be-c40cb48a0319.JPG" width="48%"/>
<img alt="sk-pd2-connection-mono" src="https://user-images.githubusercontent.com/2170248/92296490-2d15cb00-ef70-11ea-801f-5ace313013e6.JPG" width="48%"/>
### I<sup>2</sup>C Wiring
@@ -60,7 +61,7 @@ The 4 wires of the TRRS cable need to connect GND, VCC, and SCL and SDA (aka PD0
The pull-up resistors may be placed on either half. If you wish to use the halves independently, it is also possible to use 4 resistors and have the pull-ups in both halves.
![I2C wiring](https://i.imgur.com/Hbzhc6E.png)
<img alt="sk-i2c-connection-mono" src="https://user-images.githubusercontent.com/2170248/92297182-92b98580-ef77-11ea-9d7d-d6033914af43.JPG" width="50%"/>
## Firmware Configuration

View File

@@ -0,0 +1,8 @@
# 開発環境のセットアップ
<!---
original document: 0.9.50:docs/api_development_environment.md
git diff 0.9.50 HEAD -- docs/api_development_environment.md | cat
-->
開発環境をセットアップするには、[qmk_web_stack](https://github.com/qmk/qmk_web_stack) に行ってください。

View File

@@ -0,0 +1,49 @@
# QMK コンパイラ開発ガイド
<!---
original document: 0.9.50:docs/api_development_overview.md
git diff 0.9.50 HEAD -- docs/api_development_overview.md | cat
-->
このページでは、開発者に QMK コンパイラを紹介しようと思います。コードを読まなければならないような核心となる詳細に立ち入って調べることはしません。ここで得られるものは、コードを読んで理解を深めるためのフレームワークです。
# 概要
QMK Compile API は、いくつかの可動部分からできています:
![構造図](https://raw.githubusercontent.com/qmk/qmk_api/master/docs/architecture.svg)
API クライアントは API サービスと排他的にやりとりをします。ここでジョブをサブミットし、状態を調べ、結果をダウンロードします。API サービスはコンパイルジョブを [Redis Queue](https://python-rq.org) に挿入し、それらのジョブの結果について RQ と S3 の両方を調べます。
ワーカーは RQ から新しいコンパイルジョブを取り出し、ソースとバイナリを S3 互換のストレージエンジンにアップロードします。
# ワーカー
QMK コンパイラワーカーは実際のビルド作業に責任を持ちます。ワーカーは RQ からジョブを取り出し、ジョブを完了するためにいくつかの事を行います:
* 新しい qmk_firmware のチェックアウトを作成する
* 指定されたレイヤーとキーボードメタデータを使って `keymap.c` をビルドする
* ファームウェアをビルドする
* ソースのコピーを zip 形式で圧縮する
* ファームウェア、ソースの zip ファイル、メタデータファイルを S3 にアップロードする
* ジョブの状態を RQ に送信する
# API サービス
API サービスは比較的単純な Flask アプリケーションです。理解しておくべきことが幾つかあります。
## @app.route('/v1/compile', methods=['POST'])
これは API の主なエントリーポイントです。クライアントとのやりとりはここから開始されます。クライアントはキーボードを表す JSON ドキュメントを POST し、API はコンパイルジョブをサブミットする前にいくらかの(とても)基本的な検証を行います。
## @app.route('/v1/compile/&lt;string:job_id&gt;', methods=['GET'])
これは最もよく呼ばれるエンドポイントです。ジョブの詳細が redis から利用可能であればそれを取り出し、そうでなければ S3 からキャッシュされたジョブの詳細を取り出します。
## @app.route('/v1/compile/&lt;string:job_id&gt;/download', methods=['GET'])
このメソッドによりユーザはコンパイルされたファームウェアファイルをダウンロードすることができます。
## @app.route('/v1/compile/&lt;string:job_id&gt;/source', methods=['GET'])
このメソッドによりユーザはファームウェアのソースをダウンロードすることができます。

73
docs/ja/api_docs.md Normal file
View File

@@ -0,0 +1,73 @@
# QMK API
<!---
original document: 0.9.50:docs/api_docs.md
git diff 0.9.50 HEAD -- docs/api_docs.md | cat
-->
このページは QMK API の使い方を説明します。もしあなたがアプリケーション開発者であれば、全ての [QMK](https://qmk.fm) キーボードのファームウェアをコンパイルするために、この API を使うことができます。
## 概要
このサービスは、カスタムキーマップをコンパイルするための非同期 API です。API に 何らかの JSON を POST し、定期的に状態をチェックし、ファームウェアのコンパイルが完了していれば、結果のファームウェアと(もし希望すれば)そのファームウェアのソースコードをダウンロードすることができます。
#### JSON ペイロードの例:
```json
{
"keyboard": "clueboard/66/rev2",
"keymap": "my_awesome_keymap",
"layout": "LAYOUT_all",
"layers": [
["KC_GRV","KC_1","KC_2","KC_3","KC_4","KC_5","KC_6","KC_7","KC_8","KC_9","KC_0","KC_MINS","KC_EQL","KC_GRV","KC_BSPC","KC_PGUP","KC_TAB","KC_Q","KC_W","KC_E","KC_R","KC_T","KC_Y","KC_U","KC_I","KC_O","KC_P","KC_LBRC","KC_RBRC","KC_BSLS","KC_PGDN","KC_CAPS","KC_A","KC_S","KC_D","KC_F","KC_G","KC_H","KC_J","KC_K","KC_L","KC_SCLN","KC_QUOT","KC_NUHS","KC_ENT","KC_LSFT","KC_NUBS","KC_Z","KC_X","KC_C","KC_V","KC_B","KC_N","KC_M","KC_COMM","KC_DOT","KC_SLSH","KC_RO","KC_RSFT","KC_UP","KC_LCTL","KC_LGUI","KC_LALT","KC_MHEN","KC_SPC","KC_SPC","KC_HENK","KC_RALT","KC_RCTL","MO(1)","KC_LEFT","KC_DOWN","KC_RIGHT"],
["KC_ESC","KC_F1","KC_F2","KC_F3","KC_F4","KC_F5","KC_F6","KC_F7","KC_F8","KC_F9","KC_F10","KC_F11","KC_F12","KC_TRNS","KC_DEL","BL_STEP","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","_______","KC_TRNS","KC_PSCR","KC_SLCK","KC_PAUS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","MO(2)","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_PGUP","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","MO(1)","KC_LEFT","KC_PGDN","KC_RGHT"],
["KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","RESET","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","MO(2)","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","MO(1)","KC_TRNS","KC_TRNS","KC_TRNS"]
]
}
```
ご覧のとおり、ペイロードにはファームウェアを作成および生成するために必要なキーボードの全ての側面を記述します。各レイヤーは QMK キーコードの1つのリストで、キーボードの `LAYOUT` マクロと同じ長さです。もしキーボードが複数の `LAYOUT` マクロをサポートする場合、どのマクロを使うかを指定することができます。
## コンパイルジョブのサブミット
キーマップをファームウェアにコンパイルするには、単純に JSON を `/v1/compile` エンドポイントに POST します。以下の例では、JSON ペイロードを `json_data` という名前のファイルに配置しています。
```
$ curl -H "Content-Type: application/json" -X POST -d "$(< json_data)" http://api.qmk.fm/v1/compile
{
"enqueued": true,
"job_id": "ea1514b3-bdfc-4a7b-9b5c-08752684f7f6"
}
```
## 状態のチェック
キーマップをサブミットした後で、簡単な HTTP GET 呼び出しを使って状態をチェックすることができます:
```
$ curl http://api.qmk.fm/v1/compile/ea1514b3-bdfc-4a7b-9b5c-08752684f7f6
{
"created_at": "Sat, 19 Aug 2017 21:39:12 GMT",
"enqueued_at": "Sat, 19 Aug 2017 21:39:12 GMT",
"id": "f5f9b992-73b4-479b-8236-df1deb37c163",
"status": "running",
"result": null
}
```
これは、ジョブをキューに入れることに成功し、現在実行中であることを示しています。5つの状態がありえます:
* **failed**: なんらかの理由でコンパイルサービスが失敗しました。
* **finished**: コンパイルが完了し、結果を見るには `result` をチェックする必要があります。
* **queued**: キーマップはコンパイルサーバが利用可能になるのを待っています。
* **running**: コンパイルが進行中で、まもなく完了するはずです。
* **unknown**: 深刻なエラーが発生し、[バグを報告](https://github.com/qmk/qmk_compiler/issues)する必要があります。
## 完了した結果を検証
コンパイルジョブが完了したら、`result` キーをチェックします。このキーの値は幾つかの情報を含むハッシュです:
* `firmware_binary_url`: 書き込み可能なファームウェアの URL のリスト
* `firmware_keymap_url`: `keymap.c` の URL のリスト
* `firmware_source_url`: ファームウェアの完全なソースコードの URL のリスト
* `output`: このコンパイルジョブの stdout と stderr。エラーはここで見つけることができます。

20
docs/ja/api_overview.md Normal file
View File

@@ -0,0 +1,20 @@
# QMK API
<!---
original document: 0.9.50:docs/api_overview.md
git diff 0.9.50 HEAD -- docs/api_overview.md | cat
-->
QMK API は、Web と GUI ツールが [QMK](http://qmk.fm/) によってサポートされるキーボード用の任意のキーマップをコンパイルするために使うことができる、非同期 API を提供します。標準のキーマップテンプレートは、C コードのサポートを必要としない全ての QMK キーコードをサポートします。キーボードのメンテナは独自のカスタムテンプレートを提供して、より多くの機能を実現することができます。
## アプリケーション開発者
もしあなたがアプリケーションでこの API を使うことに興味があるアプリケーション開発者であれば、[API の使用](ja/api_docs.md) に行くべきです。
## キーボードのメンテナ
もし QMK Compiler API でのあなたのキーボードのサポートを強化したい場合は、[キーボードサポート](ja/reference_configurator_support.md) の節に行くべきです。
## バックエンド開発者
もし API 自体に取り組むことに興味がある場合は、[開発環境](ja/api_development_environment.md)のセットアップから始め、それから [API のハッキング](ja/api_development_overview.md) を調べるべきです。

View File

@@ -145,4 +145,4 @@ ARM ベースのチップ上での EEPROM の動作によって、保存され
[Planck rev6 reset EEPROM](https://cdn.discordapp.com/attachments/473506116718952450/539284620861243409/planck_rev6_default.bin) を使って eeprom のリセットを強制することができます。このイメージを書き込んだ後で、通常のファームウェアを書き込むと、キーボードが_通常_ の動作順序に復元されます。
[Preonic rev3 reset EEPROM](https://cdn.discordapp.com/attachments/473506116718952450/537849497313738762/preonic_rev3_default.bin)
いずれかの形式でブートマジックが有効になっている場合は、これも実行できるはずです (実行方法の詳細については、[ブートマジックドキュメント](feature_bootmagic.md)とキーボード情報を見てください)。
いずれかの形式でブートマジックが有効になっている場合は、これも実行できるはずです (実行方法の詳細については、[ブートマジックドキュメント](ja/feature_bootmagic.md)とキーボード情報を見てください)。

View File

@@ -51,7 +51,7 @@ OK、問題ありません。[GitHub で issue を開く](https://github.com/qmk
TMK は [Jun Wako](https://github.com/tmk) によって設計され実装されました。QMK は [Jack Humbert](https://github.com/jackhumbert) の Planck 用 TMK のフォークとして始まりました。しばらくして、Jack のフォークは TMK からかなり分岐し、2015年に Jack はフォークを QMK に名前を変えることにしました。
技術的な観点から、QMK は幾つかの新しい機能を追加した TMK に基づいています。最も注目すべきことは、QMK は利用可能なキーコードの数を増やし、`S()``LCTL()` および `MO()` などの高度な機能を実装するためにこれらを使っています。[キーコード](keycodes.md)でこれらのキーコードの完全なリストを見ることができます。
技術的な観点から、QMK は幾つかの新しい機能を追加した TMK に基づいています。最も注目すべきことは、QMK は利用可能なキーコードの数を増やし、`S()``LCTL()` および `MO()` などの高度な機能を実装するためにこれらを使っています。[キーコード](ja/keycodes.md)でこれらのキーコードの完全なリストを見ることができます。
プロジェクトとコミュニティの管理の観点から、TMK は公式にサポートされている全てのキーボードを自分で管理しており、コミュニティのサポートも少し受けています。他のキーボード用に別個のコミュニティが維持するフォークが存在するか、作成できます。デフォルトでは少数のキーマップのみが提供されるため、ユーザは一般的にお互いにキーマップを共有しません。QMK は集中管理されたリポジトリを介して、キーボードとキーマップの両方を共有することを奨励しており、品質基準に準拠する全てのプルリクエストを受け付けます。これらはほとんどコミュニティで管理されますが、必要な場合は QMK チームも支援します。

View File

@@ -128,7 +128,7 @@ https://github.com/tekezo/Karabiner/issues/403
## 単一のキーでの Esc と<code>&#96;</code>
[Grave Escape](feature_grave_esc.md) 機能を見てください。
[Grave Escape](ja/feature_grave_esc.md) 機能を見てください。
## Mac OSX での Eject
`KC_EJCT` キーコードは OSX で動作します。https://github.com/tmk/tmk_keyboard/issues/250

View File

@@ -1,8 +1,8 @@
# 分割キーボード
<!---
original document:0.9.43:docs/feature_split_keyboard.md
git diff 0.9.43 HEAD -- docs/feature_split_keyboard.md | cat
original document:0.10.8:docs/feature_split_keyboard.md
git diff 0.10.8 HEAD -- docs/feature_split_keyboard.md | cat
-->
QMK ファームウェアリポジトリの多くのキーボードは、"分割"キーボードです。それらは2つのコントローラを使います — 1つは USB に接続し、もう1つは TRRS または同様のケーブルを介してシリアルまたは I<sup>2</sup>C 接続で接続します。
@@ -20,12 +20,12 @@ QMK ファームウェアには、任意のキーボードで使用可能な一
| Transport | AVR | ARM |
|------------------------------|--------------------|--------------------|
| ['serial'](serial_driver.md) | :heavy_check_mark: | :white_check_mark: <sup>1</sup> |
| ['serial'](ja/serial_driver.md) | :heavy_check_mark: | :white_check_mark: <sup>1</sup> |
| I2C | :heavy_check_mark: | |
注意:
1. ハードウェアとソフトウェアの両方の制限は、[ドライバーのドキュメント](serial_driver.md)の中で説明されます。
1. ハードウェアとソフトウェアの両方の制限は、[ドライバーのドキュメント](ja/serial_driver.md)の中で説明されます。
## ハードウェア設定
@@ -53,11 +53,12 @@ QMK ファームウェアには、任意のキーボードで使用可能な一
### シリアル配線
2つの Pro Micro 間で GND、Vcc、D0 (別名 PDO あるいは pin 3) を TRS/TRRS ケーブルの3本のワイヤで接続します。
2つの Pro Micro 間で GND、Vcc、D0/D1/D2/D3 (別名 PD0/PD1/PD2/PD3) を TRS/TRRS ケーブルの3本のワイヤで接続します。
?> ここで使われるピンは実際には以下の `SOFT_SERIAL_PIN` によって設定されることに注意してください。
![シリアル配線](https://i.imgur.com/C3D1GAQ.png)
<img alt="sk-pd0-connection-mono" src="https://user-images.githubusercontent.com/2170248/92296488-28e9ad80-ef70-11ea-98be-c40cb48a0319.JPG" width="48%"/>
<img alt="sk-pd2-connection-mono" src="https://user-images.githubusercontent.com/2170248/92296490-2d15cb00-ef70-11ea-801f-5ace313013e6.JPG" width="48%"/>
### I<sup>2</sup>C 配線
@@ -65,7 +66,7 @@ QMK ファームウェアには、任意のキーボードで使用可能な一
プルアップ抵抗はキーボードの左右どちら側にも配置することができます。もし各側を単独で使いたい場合は、4つの抵抗を使い、両側にプルアップ抵抗を配置することもできます。
![I2C 配線](https://i.imgur.com/Hbzhc6E.png)
<img alt="sk-i2c-connection-mono" src="https://user-images.githubusercontent.com/2170248/92297182-92b98580-ef77-11ea-9d7d-d6033914af43.JPG" width="50%"/>
## ファームウェア設定

View File

@@ -101,4 +101,4 @@
- [Deskthority の記事](https://deskthority.net/wiki/Keyboard_matrix)
- [Dave Dribin による Keyboard Matrix Help (2000)](https://www.dribin.org/dave/keyboard/one_html/)
- [PCBheaven による How Key Matrices Works](http://pcbheaven.com/wikipages/How_Key_Matrices_Works/) (アニメーションの例)
- [キーボードの仕組み - QMK ドキュメント](how_keyboards_work.md)
- [キーボードの仕組み - QMK ドキュメント](ja/how_keyboards_work.md)

View File

@@ -0,0 +1,20 @@
# Quantum キーコード
<!---
original document: 0.9.55:docs/quantum_keycodes.md
git diff 0.9.55 HEAD -- docs/quantum_keycodes.md | cat
-->
Quantum キーコードにより、カスタムアクションを定義することなく、基本的なものが提供するものより簡単にキーマップをカスタマイズすることができます。
quantum 内の全てのキーコードは `0x0000``0xFFFF` の間の数値です。`keymap.c` の中では、関数やその他の特別な場合があるように見えますが、最終的には C プリプロセッサによってそれらは単一の4バイト整数に変換されます。QMK は標準的なキーコードのために `0x0000` から `0x00FF` を予約しています。これらは、`KC_A``KC_1` および `KC_LCTL` のようなキーコードで、USB HID 仕様で定義された基本的なキーです。
このページでは、高度な quantum 機能を実装するために使われる `0x00FF``0xFFFF` の間のキーコードを説明します。独自のカスタムキーコードを定義する場合は、それらもこの範囲に配置されます。
## QMK キーコード :id=qmk-keycodes
| キー | エイリアス | 説明 |
|----------------|------------|--------------------------------------------------------|
| `RESET` | | 書き込みのために、キーボードを bootloader モードにする |
| `DEBUG` | | デバッグモードの切り替え |
| `EEPROM_RESET` | `EEP_RST` | キーボードの EEPROM (永続化メモリ) を再初期化する |

View File

@@ -0,0 +1,202 @@
# QMK Configurator でのキーボードのサポート
<!---
original document: 0.9.46:docs/reference_configurator_support.md
git diff 0.9.46 HEAD -- docs/reference_configurator_support.md | cat
-->
このページは [QMK Configurator](https://config.qmk.fm/) でキーボードを適切にサポートする方法について説明します。
## Configurator がキーボードを理解する方法
Configurator がキーボードをどのように理解するかを理解するには、最初にレイアウトマクロを理解する必要があります。この演習では、17キーのテンキー PCB を想定します。これを `numpad` と呼びます。
```
|---------------|
|NLk| / | * | - |
|---+---+---+---|
|7 |8 |9 | + |
|---+---+---| |
|4 |5 |6 | |
|---+---+---+---|
|1 |2 |3 |Ent|
|-------+---| |
|0 | . | |
|---------------|
```
?> レイアウトマクロの詳細については、[QMK の理解: マトリックススキャン](ja/understanding_qmk.md?id=matrix-scanning) と [QMK の理解: マトリックスから物理レイアウトへのマップ](ja/understanding_qmk.md?id=matrix-to-physical-layout-map) を見てください。
Configurator の API はキーボードの `.h` ファイルを `qmk_firmware/keyboards/<keyboard>/<keyboard>.h` から読み取ります。numpad の場合、このファイルは `qmk_firmware/keyboards/numpad/numpad.h` です:
```c
#pragma once
#define LAYOUT( \
k00, k01, k02, k03, \
k10, k11, k12, k13, \
k20, k21, k22, \
k30, k31, k32, k33, \
k40, k42 \
) { \
{ k00, k01, k02, k03 }, \
{ k10, k11, k12, k13 }, \
{ k20, k21, k22, KC_NO }, \
{ k30, k31, k32, k33 }, \
{ k40, KC_NO, k42, KC_NO } \
}
```
QMK は `KC_NO` を使って、スイッチマトリックス内のスイッチがない場所を指定します。デバッグが必要な場合に、このセクションを読みやすくするために、`XXX``___``____` を略記として使うこともあります。通常は `.h` ファイルの先頭近くで定義されます:
```c
#pragma once
#define XXX KC_NO
#define LAYOUT( \
k00, k01, k02, k03, \
k10, k11, k12, k13, \
k20, k21, k22, \
k30, k31, k32, k33, \
k40, k42 \
) { \
{ k00, k01, k02, k03 }, \
{ k10, k11, k12, k13 }, \
{ k20, k21, k22, XXX }, \
{ k30, k31, k32, k33 }, \
{ k40, XXX, k42, XXX } \
}
```
!> この使用方法はキーマップマクロと異なります。キーマップマクロはほとんど常に`KC_NO`については`XXXXXXX` (7つの大文字の X) を、`KC_TRNS` については `_______` (7つのアンダースコア)を使います。
!> ユーザの混乱を防ぐために、`KC_NO` を使うことをお勧めします。
レイアウトマクロは、キーボードに17個のキーがあり、4列それぞれが5行に配置されていることを Configurator に伝えます。スイッチの位置は、0から始まる `k<row><column>` という名前が付けられています。キーマップからキーコードを受け取る上部セクションと、マトリックス内の各キーの位置を指定する下部セクションとが一致する限り、名前自体は実際には問題ではありません。
物理的なキーボードに似た形でキーボードを表示するには、それぞれのキーの物理的な位置とサイズをスイッチマトリックスに結びつけることを Configurator に伝える JSON ファイルを作成する必要があります。
## JSON ファイルのビルド
JSON ファイルをビルドする最も簡単な方法は、[Keyboard Layout Editor](http://www.keyboard-layout-editor.com/) ("KLE") でレイアウトを作成することです。この Raw Data を QMK tool に入れて、Configurator が読み出して使用する JSON ファイルに変換します。KLE は numpad レイアウトをデフォルトで開くため、Getting Started の説明を削除し、残りを使います。
レイアウトが望み通りのものになったら、KLE の Raw Data タブに移動し、内容をコピーします:
```
["Num Lock","/","*","-"],
["7\nHome","8\n↑","9\nPgUp",{h:2},"+"],
["4\n←","5","6\n→"],
["1\nEnd","2\n↓","3\nPgDn",{h:2},"Enter"],
[{w:2},"0\nIns",".\nDel"]
```
このデータを JSON に変換するには、[QMK KLE-JSON Converter](https://qmk.fm/converter/) に移動し、Raw Data を Input フィールド に貼り付け、Convert ボタンをクリックします。しばらくすると、JSON データが Output フィールドに表示されます。内容を新しいテキストドキュメントにコピーし、ドキュメントに `info.json` という名前を付け、`numpad.h` を含む同じフォルダに保存します。
`keyboard_name` オブジェクトを使ってキーボードの名前を設定します。説明のために、各キーのオブジェクトを各行に配置します。これはファイルを人間が読みやすいものにするためのもので、Configurator の機能には影響しません。
```json
{
"keyboard_name": "Numpad",
"url": "",
"maintainer": "qmk",
"tags": {
"form_factor": "numpad"
},
"width": 4,
"height": 5,
"layouts": {
"LAYOUT": {
"layout": [
{"label":"Num Lock", "x":0, "y":0},
{"label":"/", "x":1, "y":0},
{"label":"*", "x":2, "y":0},
{"label":"-", "x":3, "y":0},
{"label":"7", "x":0, "y":1},
{"label":"8", "x":1, "y":1},
{"label":"9", "x":2, "y":1},
{"label":"+", "x":3, "y":1, "h":2},
{"label":"4", "x":0, "y":2},
{"label":"5", "x":1, "y":2},
{"label":"6", "x":2, "y":2},
{"label":"1", "x":0, "y":3},
{"label":"2", "x":1, "y":3},
{"label":"3", "x":2, "y":3},
{"label":"Enter", "x":3, "y":3, "h":2},
{"label":"0", "x":0, "y":4, "w":2},
{"label":".", "x":2, "y":4}
]
}
}
}
```
`layouts` オブジェクトにはキーボードの物理レイアウトを表すデータが含まれます。このオブジェクトには `LAYOUT` という名前のオブジェクトがあり、このオブジェクト名は `numpad.h` のレイアウトマクロの名前と一致する必要があります。`LAYOUT` オブジェクト自体には `layout` という名前のオブジェクトがあります。このオブジェクトにはキーボードの物理キーごとに 1つの JSON オブジェクトが以下の形式で含まれています:
```
キーの名前。Configurator では表示されません。
|
| キーボードの左端からのキー単位での
| | キーの X 軸の位置。
| |
| | キーボードの上端(奥側)からのキー単位での
| | | キーの Y 軸位置。
↓ ↓ ↓
{"label":"Num Lock", "x":0, "y":0},
```
一部のオブジェクトには、それぞれキーの幅と高さを表す `"w"` 属性キーと `"h"` 属性キーがあります。
?> `info.json` ファイルの詳細については、[`info.json` 形式](ja/reference_info_json.md) を参照してください。
## Configurator がキーをプログラムする方法
Configurator の API は、指定されたレイアウトマクロと JSON ファイルを使って、特定のキーに関連付けられた各ビジュアルオブジェクトを順番に持つキーボードのビジュアル表現を作成します:
| レイアウトマクロのキー | 使用される JSON オブジェクト |
:---: | :----
| k00 | {"label":"Num Lock", "x":0, "y":0} |
| k01 | {"label":"/", "x":1, "y":0} |
| k02 | {"label":"*", "x":2, "y":0} |
| k03 | {"label":"-", "x":3, "y":0} |
| k10 | {"label":"7", "x":0, "y":1} |
| k11 | {"label":"8", "x":1, "y":1} |
| k12 | {"label":"9", "x":2, "y":1} |
| k13 | {"label":"+", "x":3, "y":1, "h":2} |
| k20 | {"label":"4", "x":0, "y":2} |
| k21 | {"label":"5", "x":1, "y":2} |
| k22 | {"label":"6", "x":2, "y":2} |
| k30 | {"label":"1", "x":0, "y":3} |
| k31 | {"label":"2", "x":1, "y":3} |
| k32 | {"label":"3", "x":2, "y":3} |
| k33 | {"label":"Enter", "x":3, "y":3, "h":2} |
| k40 | {"label":"0", "x":0, "y":4, "w":2} |
| k42 | {"label":".", "x":2, "y":4} |
ユーザが Configurator で左上のキーを選択し、Num Lock を割り当てると、Configurator は最初のキーとして `KC_NLCK` を持つキーマップを作成し、同様にキーマップが作成されます。`label` キーは使われません; それらは `info.json` ファイルをデバッグする時に特定のキーを識別するためのユーザの参照のためだけのものです。
## 問題と危険
現在のところ、Configurator はキーの回転または ISO Enter などの長方形ではないキーをサポートしません。さらに、"行"から垂直方向にずれているキー、&mdash; 顕著な例として [TKC1800](https://github.com/qmk/qmk_firmware/tree/4ac48a61a66206beaf2fdd5f2939d8bbedd0004c/keyboards/tkc1800/) のような1800レイアウト上の矢印キー &mdash; は、 `info.json` ファイルの提供者によって調整されていない場合は、KLE-to-JSON コンバータを混乱させます。
### 回避策
#### 長方形ではないキー
ISO Enter キーについては、QMK custom は幅 1.25u、高さ 2u の長方形のキーとして表示し、右端が英数字キーブロックの右端に揃うように配置されます。
![](https://i.imgur.com/JKngtTw.png)
*QMK Configurator によって描画される標準 ISO レイアウトの60%キーボード。*
#### 垂直方向にずれたキー
垂直方向にずれたキーについては、ずれていないかのように KLE で配置し、変換された JSON ファイルで必要に応じて Y 値を編集します。
![](https://i.imgur.com/fmDvDzR.png)
*矢印キーに適用される垂直方向のずれのない、Keyboard Layout Editor で描画された1800レイアウトのキーボード。*
![](https://i.imgur.com/8beYMBR.png)
*キーボードの JSON ファイルで矢印キーを垂直方向にずらすために必要な変更を示す、Unix の diff ファイル。*

View File

@@ -0,0 +1,173 @@
# QMK 用語集
<!---
original document: 0.9.46:docs/reference_glossary.md
git diff 0.9.46 HEAD -- docs/reference_glossary.md | cat
-->
## ARM
Atmel、Cypress、Kinetis、NXP、ST、TI など多くの企業が生産する 32 ビット MCU のライン。
## AVR
[Atmel](http://www.microchip.com/) が生産する 8 ビット MCU のライン。AVR は TMK がサポートしていた元のプラットフォームでした。
## AZERTY
標準的な Français (フランス) キーボードレイアウト。キーボードの最初の6つのキーから命名されました。
## バックライト
キーボードのライトの総称。バックライトが一般的ですが、それだけではなく、キーキャップあるいはスイッチを通して光る LED の配列。
## Bluetooth
短距離のピアツーピア無線プロトコル。キーボード用のもっとも一般的なワイヤレスプロトコル。
## ブートローダ
MCU の保護領域に書き込まれる特別なプログラムで、MCU が独自のファームウェアを通常は USB 経由でアップグレードできるようにします。
## ブートマジック
よくあるキーの交換あるいは無効化など、様々なキーボードの挙動の変更をその場で実行できる機能。
## C
システムコードに適した低レベルプログラミング言語。QMK のほとんどのコードは C で書かれています。
## Colemak
人気が出始めている代替キーボードレイアウト。
## コンパイル
人間が読めるコードを MCU が実行できるマシンコードに変換するプロセス。
## Dvorak
1930年代に Dr. August Dvorak によって開発された代替キーボードレイアウト。Dvorak Simplified Keyboard の短縮形。
## 動的マクロ
キーボードに記録されたマクロで、キーボードのプラグを抜くか、コンピュータを再起動すると失われます。
* [動的マクロドキュメント](ja/feature_dynamic_macros.md)
## Eclipse
多くの C 開発者に人気のある IDE。
* [Eclipse セットアップ手順](ja/other_eclipse.md)
## ファームウェア
MCU を制御するソフトウェア
## git
コマンドラインで使用されるバージョン管理ソフトウェア
## GitHub
QMK プロジェクトのほとんどをホストする Web サイト。git、課題管理、および QMK の実行に役立つその他の機能を統合して提供します。
## ISP
インシステムプログラミング。外部ハードウェアと JTAG ピンを使って AVR チップをプログラミングする方法。
## hid_listen
キーボードからデバッグメッセージを受信するためのインタフェース。[QMK Flasher](https://github.com/qmk/qmk_flasher) あるいは [PJRC の hid_listen](https://www.pjrc.com/teensy/hid_listen.html) を使ってこれらのメッセージを見ることができます。
## キーコード
特定のキーを表す2バイトの数値。`0x00`-`0xFF` は[基本キーコード](ja/keycodes_basic.md)に使われ、`0x100`-`0xFFFF` は [Quantum キーコード](ja/quantum_keycodes.md) に使われます。
## キーダウン
キーが押された時に発生し、キーが放される前に完了するイベント。
## キーアップ
キーが放された時に発生するイベント。
## キーマップ
物理的なキーボードレイアウトにマップされたキーコードの配列。キーの押下およびリリース時に処理されます。
## レイヤー
1つのキーが複数の目的を果たすために使われる抽象化。最上位のアクティブなレイヤーが優先されます。
## リーダーキー
リーダーキーに続けて1, 2 あるいは3つのキーをタップすることで、キーの押下あるいは他の quantum 機能をアクティブにする機能。
* [リーダーキードキュメント](ja/feature_leader_key.md)
## LED
発光ダイオード。キーボードの表示に使われる最も一般的なデバイス。
## Make
全てのソースファイルをコンパイルするために使われるソフトウェアパッケージ。キーボードファームウェアをコンパイルするために、様々なオプションを指定して `make` を実行します。
## マトリックス
MCU がより少ないピン数でキー押下を検出できるようにする列と行の配線パターン。マトリックスには多くの場合、NKRO を可能にするためのダイオードが組み込まれています。
## マクロ
単一のキーのみを押した後で、複数のキー押下イベント (HID レポート) を送信できる機能。
* [マクロドキュメント](ja/feature_macros.md)
## MCU
マイクロコントロールユニット。キーボードを動かすプロセッサ。
## モディファイア
別のキーを入力する間押したままにして、そのキーのアクションを変更するキー。例として、Ctrl、Alt および Shift があります。
(訳注:モディファイヤ、モディファイヤキー、修飾キーなど、訳語が統一されていませんが同じものです)
## マウスキー
キーボードからマウスカーソルを制御し、クリックできる機能。
* [マウスキードキュメント](ja/feature_mouse_keys.md)
## N キーロールオーバー (NKRO)
一度に任意の数のキーの押下を送信できるキーボードに当てはまる用語。
## ワンショットモディファイア
別のキーが放されるまで押されているかのように機能するモディファイア。キーを押している間に mod を押し続けるのではなく、mod を押してからキーを押すことができます。スティッキーキーまたはデッドキーとも呼びます。
## ProMicro
低コストの AVR 開発ボード。このデバイスのクローンは ebay で非常に安価(5ドル未満)に見つかることがありますが、多くの場合 pro micro の書き込みに苦労します。
## プルリクエスト
QMK にコードを送信するリクエスト。全てのユーザが個人のキーマップのプルリクエストを送信することを推奨します。
## QWERTY
標準の英語キーボードレイアウト。多くの場合、他の言語の標準レイアウトへのショートカット。キーボードの最初の6文字から命名されました。
## QWERTZ
標準的な Deutsche (ドイツ語) キーボードレイアウト。キーボードの最初の6文字から命名されました。
## ロールオーバー
キーが既に押されている間にキーを押すことを指す用語。似たものに 2KRO、6KRO、NKRO が含まれます。
## スキャンコード
単一のキーを表す USB 経由の HID レポートの一部として送信される1バイトの数値。これらの値は、[USB-IF](http://www.usb.org/) が発行する [HID Usage Tables](https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf) に記載されています。
## スペースカデットシフト
左または右 shift を1回以上タップすることで、様々なタイプの括弧を入力できる特別な shift キーのセット。
* [スペースカデットシフトドキュメント](ja/feature_space_cadet_shift.md)
## タップ
キーを押して放す。状況によってはキーダウンイベントとキーアップイベントを区別する必要がありますが、タップは常に両方を一度に指します。
## タップダンス
押す回数に基づいて、同じキーに複数のキーコードを割り当てることができる機能。
* [タップダンスドキュメント](ja/feature_tap_dance.md)
## Teensy
手配線での組み立てによく用いられる低コストの AVR 開発ボード。halfkay ブートローダによって書き込みが非常に簡単になるために、数ドル高いにもかかわらず teensy がしばしば選択されます。
## アンダーライト
キーボードの下側を照らす LED の総称。これらの LED は通常 PCB の底面からキーボードが置かれている表面に向けて照らします。
## ユニコード
大規模なコンピュータの世界では、ユニコードは任意の言語で文字を表現するためのエンコード方式のセットです。QMK に関しては、様々な OS スキームを使ってスキャンコードの代わりにユニコードコードポイントを送信することを意味します。
* [ユニコードドキュメント](ja/feature_unicode.md)
## 単体テスト
QMK に対して自動テストを実行するためのフレームワーク。単体テストは、変更が何も壊さないことを確信するのに役立ちます。
* [単体テストドキュメント](ja/unit_testing.md)
## USB
ユニバーサルシリアルバス。キーボード用の最も一般的な有線インタフェース。
## USB ホスト (あるいは単にホスト)
USB ホストは、あなたのコンピュータ、またはキーボードが差し込まれているデバイスのことです。
# 探している用語が見つかりませんでしたか?
質問についての [issue を開いて](https://github.com/qmk/qmk_firmware/issues) 、質問した用語についてここに追加することができます。さらに良いのは、定義についてのプルリクエストを開くことです。:)

View File

@@ -0,0 +1,78 @@
# `info.json`
<!---
original document: 0.9.46:docs/reference_info_json.md
git diff 0.9.46 HEAD -- docs/reference_info_json.md | cat
-->
このファイルは [QMK API](https://github.com/qmk/qmk_api) によって使われます。このファイルは [QMK Configurator](https://config.qmk.fm/) がキーボードの画像を表示するために必要な情報を含んでいます。ここにメタデータを設定することもできます。
このメタデータを指定するために、`qmk_firmware/keyboards/<name>` の下の全てのレベルで `info.json` を作成することができます。これらのファイルは結合され、より具体的なファイルがそうではないファイルのキーを上書きします。つまり、メタデータ情報を複製する必要はありません。例えば、`qmk_firmware/keyboards/clueboard/info.json``manufacturer` および `maintainer` を指定し、`qmk_firmware/keyboards/clueboard/66/info.json` は Clueboard 66% についてのより具体的な情報を指定します。
## `info.json` の形式
`info.json` ファイルは設定可能な以下のキーを持つ JSON 形式の辞書です。全てを設定する必要はなく、キーボードに適用するキーだけを設定します。
* `keyboard_name`
* キーボードを説明する自由形式のテキスト文字列。
* 例: `Clueboard 66%`
* `url`
* キーボードの製品ページ、[QMK.fm/keyboards](https://qmk.fm/keyboards) のページ、あるいはキーボードに関する情報を説明する他のページの URL。
* `maintainer`
* メンテナの GitHub のユーザ名、あるいはコミュニティが管理するキーボードの場合は `qmk`
* `width`
* キー単位でのキーボードの幅
* `height`
* キー単位でのキーボードの高さ
* `layouts`
* 物理的なレイアウト表現。詳細は以下のセクションを見てください。
### レイアウトの形式
`info.json` ファイル内の辞書の `layouts` 部分は、幾つかの入れ子になった辞書を含みます。外側のレイヤーは QMK レイアウトマクロで構成されます。例えば、`LAYOUT_ansi` あるいは `LAYOUT_iso`。各レイアウトマクロ内には、`width``height``key_count` のキーがあります。これらは自明でなければなりません。
* `width`
* オプション: キー単位でのレイアウトの幅
* `height`
* オプション: キー単位でのレイアウトの高さ
* `key_count`
* **必須**: このレイアウトのキーの数
* `layout`
* 物理レイアウトを説明するキー辞書のリスト。詳細は次のセクションを見てください。
### キー辞書形式
レイアウトの各キー辞書は、キーの物理プロパティを記述します。<http://keyboard-layout-editor.com> の Raw Code に精通している場合、多くの概念が同じであることが分かります。可能な限り同じキー名とレイアウトの選択を再利用しますが、keyboard-layout-editor とは異なって各キーはステートレスで、前のキーからプロパティを継承しません。
全てのキーの位置と回転は、キーボードの左上と、各キーの左上を基準にして指定されます。
* `x`
* **必須**: 水平軸でのキーの絶対位置(キー単位)。
* `y`
* **必須**: 垂直軸でのキーの絶対位置(キー単位)。
* `w`
* キー単位でのキーの幅。`ks` が指定された場合は無視されます。デフォルト: `1`
* `h`
* キー単位でのキーの高さ。`ks` が指定された場合は無視されます。デフォルト: `1`
* `r`
* キーを回転させる時計回りの角度。
* `rx`
* キーを回転させる点の水平軸における絶対位置。デフォルト: `x`
* `ry`
* キーを回転させる点の垂直軸における絶対位置。デフォルト: `y`
* `ks`
* キー形状: キー単位で頂点を列挙することでポリゴンを定義します。
* **重要**: これらはキーの左上からの相対位置で、絶対位置ではありません。
* ISO Enter の例: `[ [0,0], [1.5,0], [1.5,2], [0.25,2], [0.25,1], [0,1], [0,0] ]`
* `label`
* マトリックス内のこの位置につける名前。
* これは通常 PCB 上でこの位置にシルクスクリーン印刷されるものと同じ名前でなければなりません。
## メタデータはどのように公開されますか?
このメタデータは主に2つの方法で使われます:
* Web ベースの configurator が動的に UI を生成できるようにする。
* 新しい `make keyboard:keymap:qmk` ターゲットをサポートする。これは、このメタデータをファームウェアにバンドルして QMK Toolbox をよりスマートにします。
Configurator の作成者は、JSON API の使用に関する詳細について、[QMK Compiler](https://docs.api.qmk.fm/using-the-api) ドキュメントを参照することができます。

View File

@@ -0,0 +1,88 @@
# 言語固有のキーコード
<!---
original document: 0.9.55:docs/reference_keymap_extras.md
git diff 0.9.55 HEAD -- docs/reference_keymap_extras.md | cat
-->
キーボードは多くの言語をサポートすることができます。ただし、それらはキーを押したことで生成される実際の文字を送信しません - 代わりに数字のコードを送信します。USB HID の仕様ではそれらは "usages" と呼ばれますが、キーボードの文脈では「スキャンコード」あるいは「キーコード」と呼ばれることが多いです。
HID Keyboard/Keypad usage ページでは 256 未満の usage が定義されており、それらの一部は現在のオペレーティングシステムでは機能しません。では、この言語のサポートはどのようにして実現されるのでしょうか?
簡単に言うと、オペレーティングシステムはユーザが設定したキーボードレイアウトに基づいて受け取った usage を適切な文字にマップします。例えば、スウェーデン人がキーボードの `å` という文字が刻印されたキーを押すと、キーボードは *実際には* `[` のキーコードを送信します。
明らかにこれは混乱する可能性があるため、QMK は多くのキーボードレイアウトのために言語固有のキーコードのエイリアスを提供します。これらはそれだけでは何もしません - さらに OS の設定で対応するキーボードレイアウトを設定する必要があります。それらをキーマップのキーキャップラベルと考えてください。
これらを使うには、`keymap.c` で対応する [ヘッダファイル](https://github.com/qmk/qmk_firmware/tree/master/quantum/keymap_extras) を `#include` し、それらで定義されているキーコードを `KC_` プリフィクスの代わりに追加します:
| レイアウト | ヘッダファイル |
|-----------------------------|----------------------------------|
| Canadian Multilingual (CSA) | `keymap_canadian_multilingual.h` |
| Croatian | `keymap_croatian.h` |
| Czech | `keymap_czech.h` |
| Danish | `keymap_danish.h` |
| Dutch (Belgium) | `keymap_belgian.h` |
| English (Ireland) | `keymap_irish.h` |
| English (UK) | `keymap_uk.h` |
| English (US International) | `keymap_us_international.h` |
| Estonian | `keymap_estonian.h` |
| Finnish | `keymap_finnish.h` |
| French | `keymap_french.h` |
| French (AFNOR) | `keymap_french_afnor.h` |
| French (BÉPO) | `keymap_bepo.h` |
| French (Belgium) | `keymap_belgian.h` |
| French (Switzerland) | `keymap_fr_ch.h` |
| French (macOS, ISO) | `keymap_french_osx.h` |
| German | `keymap_german.h` |
| German (Switzerland) | `keymap_german_ch.h` |
| German (macOS) | `keymap_german_osx.h` |
| German (Neo2)* | `keymap_neo2.h` |
| Greek* | `keymap_greek.h` |
| Hebrew* | `keymap_hebrew.h` |
| Hungarian | `keymap_hungarian.h` |
| Icelandic | `keymap_icelandic.h` |
| Italian | `keymap_italian.h` |
| Italian (macOS, ANSI) | `keymap_italian_osx_ansi.h` |
| Italian (macOS, ISO) | `keymap_italian_osx_iso.h` |
| Japanese | `keymap_jp.h` |
| Korean | `keymap_korean.h` |
| Latvian | `keymap_latvian.h` |
| Lithuanian (ĄŽERTY) | `keymap_lithuanian_azerty.h` |
| Lithuanian (QWERTY) | `keymap_lithuanian_qwerty.h` |
| Norwegian | `keymap_norwegian.h` |
| Polish | `keymap_polish.h` |
| Portuguese | `keymap_portuguese.h` |
| Portuguese (Brazil) | `keymap_br_abnt2.h` |
| Romanian | `keymap_romanian.h` |
| Russian* | `keymap_russian.h` |
| Serbian* | `keymap_serbian.h` |
| Serbian (Latin) | `keymap_serbian_latin.h` |
| Slovak | `keymap_slovak.h` |
| Slovenian | `keymap_slovenian.h` |
| Spanish | `keymap_spanish.h` |
| Spanish (Dvorak) | `keymap_spanish_dvorak.h` |
| Swedish | `keymap_swedish.h` |
| Turkish (F) | `keymap_turkish_f.h` |
| Turkish (Q) | `keymap_turkish_q.h` |
言語固有でないものもありますが、QWERTY レイアウトを使っていない場合に役立ちます:
| レイアウト | ヘッダファイル |
|---------------------|--------------------------|
| Colemak | `keymap_colemak.h` |
| Dvorak | `keymap_dvorak.h` |
| Dvorak (French) | `keymap_dvorak_fr.h` |
| Dvorak (Programmer) | `keymap_dvp.h` |
| Norman | `keymap_norman.h` |
| Plover* | `keymap_plover.h` |
| Plover (Dvorak)* | `keymap_plover_dvorak.h` |
| Steno* | `keymap_steno.h` |
| Workman | `keymap_workman.h` |
| Workman (ZXCVM) | `keymap_workman_zxcvm.h` |
## Sendstring サポート
デフォルトでは、`SEND_STRING()` は US ANSI キーボードレイアウトが設定されたと見なします。別のレイアウトを使っている場合は、キーマップで(上記のように)`#include "sendstring_*.h"` して、ASCII 文字をキーコードにマッピングするために使われるルックアップテーブルを上書きすることができます。
ここで注意すべき重要な点は、`SEND_STRING()` は [ASCII 文字](https://en.wikipedia.org/wiki/ASCII#Character_set) でのみ機能するということです。これは、ユニコード文字を含む文字列を渡すことができないことを意味します - 残念ながら、これには希望のレイアウトに存在する可能性のあるアクセント付き文字が含まれています。
多くのレイアウトでは、Grave または Tilde などの特定の文字を[デッドキー](https://en.wikipedia.org/wiki/Dead_key)としてのみ使えるようにしています。そのため、デッドキーが次の文字と潜在的に結合されることを防ぐためには、送信したい文字列の中のデッドキーのすぐ後にスペースを追加する必要があります。
ラテン語由来のアルファベットを使わない(例えば、ギリシャ語やロシア語のような)他のレイアウトには、Sendstring ヘッダーがありません。従って ASCII 文字セットのほとんどを入力する方法がありません。これらは上記で `*` でマークされています。

75
docs/ja/serial_driver.md Normal file
View File

@@ -0,0 +1,75 @@
# 'シリアル' ドライバ
<!---
original document: 0.9.51:docs/serial_drive.md
git diff 0.9.51 HEAD -- docs/serial_drive.md | cat
-->
このドライバは[分割キーボード](ja/feature_split_keyboard.md) 機能に使います。
?> この文章でのシリアルは、UART/USART/RS485/RS232 規格の実装ではなく、**一度に1ビットの情報を送信するもの**として読まれるべきです。
このカテゴリの全てのドライバには以下の特徴があります:
* 1本の線上でデータと信号を提供
* シングルマスタ、シングルスレーブに限定
## サポートされるドライバの種類
| | AVR | ARM |
|-------------------|--------------------|--------------------|
| bit bang | :heavy_check_mark: | :heavy_check_mark: |
| USART Half-duplex | | :heavy_check_mark: |
## ドライバ設定
### Bitbang
デフォルトのドライバ。設定がない場合はこのドライバが想定されます。設定するには、以下を rules.mk に追加します:
```make
SERIAL_DRIVER = bitbang
```
config.h を介してドライバを設定します:
```c
#define SOFT_SERIAL_PIN D0 // または D1, D2, D3, E6
#define SELECT_SOFT_SERIAL_SPEED 1 // または 0, 2, 3, 4, 5
// 0: 約 189kbps (実験目的のみ)
// 1: 約 137kbps (デフォルト)
// 2: 約 75kbps
// 3: 約 39kbps
// 4: 約 26kbps
// 5: 約 20kbps
```
#### ARM
!> bitbang ドライバは bitbang WS2812 ドライバと接続の問題があります
上記の一般的なオプションに加えて、halconf.h で `PAL_USE_CALLBACKS` 機能もオンにする必要があります。
### USART Half-duplex
通信が USART ハードウェアデバイスに送信される STM32 ボードが対象です。これにより高速で正確なタイミングを提供できることが利点です。このドライバの `SOFT_SERIAL_PIN` は、設定された USART TX ピンです。**TX ピンに適切なプルアップ抵抗が必要です**。設定するには、以下を rules.mk に追加します:
```make
SERIAL_DRIVER = usart
```
config.h を介してハードウェアを設定します:
```c
#define SOFT_SERIAL_PIN B6 // USART TX ピン
#define SELECT_SOFT_SERIAL_SPEED 1 // または 0, 2, 3, 4, 5
// 0: 約 460800 ボー
// 1: 約 230400 ボー (デフォルト)
// 2: 約 115200 ボー
// 3: 約 57600 ボー
// 4: 約 38400 ボー
// 5: 約 19200 ボー
#define SERIAL_USART_DRIVER SD1 // TX ピンの USART ドライバ。デフォルトは SD1
#define SERIAL_USART_TX_PAL_MODE 7 // 「代替機能」 ピン。MCU の適切な値については、それぞれのデータシートを見てください。デフォルトは 7
```
また、ChibiOS `SERIAL` 機能を有効にする必要があります:
* キーボードの halconf.h: `#define HAL_USE_SERIAL TRUE`
* キーボードの mcuconf.h: `#define STM32_SERIAL_USE_USARTn TRUE` (ここで、'n' は MCU で選択した USART のペリフェラル番号と一致)
必要な構成は、`UART` 周辺機器ではなく、`SERIAL` 周辺機器であることに注意してください。

22
docs/ja/support.md Normal file
View File

@@ -0,0 +1,22 @@
# 助けを得る
<!---
original document: 0.9.51:docs/support.md
git diff 0.9.51 HEAD -- docs/support.md | cat
-->
QMK に関して助けを得るための多くのリソースがあります。
コミュニティスペースに参加する前に[行動規範](https://qmk.fm/coc/)を読んでください。
## リアルタイムチャット
何かについて助けが必要な場合は、迅速なサポートを受けるための最良の場所は、[Discord Server](https://discord.gg/Uq7gcHh) です。通常は誰かがオンラインで、非常に助けになる多くの人がいます。
## OLKB Subreddit
公式の QMK フォーラムは [reddit.com](https://reddit.com) の [/r/olkb](https://reddit.com/r/olkb) です。
## GitHub Issues
[GitHub で issue](https://github.com/qmk/qmk_firmware/issues) を開くことができます。issue は長期的な議論あるいはデバッグを必要とする場合は、特に便利です。

75
docs/ja/syllabus.md Normal file
View File

@@ -0,0 +1,75 @@
# QMK シラバス
<!---
original document: 0.9.51:docs/syllabus.md
git diff 0.9.51 HEAD -- docs/syllabus.md | cat
-->
このページは最初に基本を紹介し、そして、QMK に習熟するために必要な全ての概念を理解するように導くことで、QMK の知識を構築するのに役立ちます。
# 初級トピック
他に何も読んでいない場合は、このセクションのドキュメントを読んでください。[QMK 初心者ガイド](ja/newbs.md)を読み終わると、基本的なキーマップを作成し、それをコンパイルし、キーボードに書き込みできるようになっているはずです。残りのドキュメントはこれらの基本的な知識を具体的に肉付けします。
* **QMK Tools の使い方を学ぶ**
* [QMK 初心者ガイド](ja/newbs.md)
* [CLI](ja/cli.md)
* [Git](ja/newbs_git_best_practices.md)
* **キーマップについて学ぶ**
* [レイヤー](ja/feature_layers.md)
* [キーコード](ja/keycodes.md)
* 使用できるキーコードの完全なリスト。中級または上級トピックにある知識が必要な場合もあることに注意してください。
* **IDE の設定** - オプション
* [Eclipse](ja/other_eclipse.md)
* [VS Code](ja/other_vscode.md)
# 中級トピック
これらのトピックでは、QMK がサポートする幾つかの機能について掘り下げます。これらのドキュメントを全て読む必要はありませんが、これらの一部をスキップすると、上級トピックのセクションの一部のドキュメントが意味をなさなくなるかもしれません。
* **機能の設定方法を学ぶ**
<!-- * Configuration Overview FIXME(skullydazed/anyone): write this document -->
* [オーディオ](ja/feature_audio.md)
* 電飾
* [バックライト](ja/feature_backlight.md)
* [LED マトリックス](ja/feature_led_matrix.md)
* [RGB ライト](ja/feature_rgblight.md)
* [RGB マトリックス](ja/feature_rgb_matrix.md)
* [タップホールド設定](ja/tap_hold.md)
* **キーマップについてさらに学ぶ**
* [キーマップ](ja/keymap.md)
* [カスタム関数とキーコード](ja/custom_quantum_functions.md)
* マクロ
* [動的マクロ](ja/feature_dynamic_macros.md)
* [コンパイル済みのマクロ](ja/feature_macros.md)
* [タップダンス](ja/feature_tap_dance.md)
* [コンボ](ja/feature_combo.md)
* [ユーザスペース](ja/feature_userspace.md)
# 上級トピック
以下の全ては多くの基礎知識を必要とします。高度な機能を使ってキーマップを作成できることに加えて、`config.h``rules.mk` の両方を使ってキーボードのオプションを設定することに慣れている必要があります。
* **QMK 内のキーボードの保守**
* [キーボードの手配線](ja/hand_wire.md)
* [キーボードガイドライン](ja/hardware_keyboard_guidelines.md)
* [info.json リファレンス](ja/reference_info_json.md)
* [デバウンス API](ja/feature_debounce_type.md)
* **高度な機能**
* [ユニコード](ja/feature_unicode.md)
* [API](ja/api_overview.md)
* [ブートマジック](ja/feature_bootmagic.md)
* **ハードウェア**
* [キーボードがどのように動作するか](ja/how_keyboards_work.md)
* [キーボードマトリックスの仕組み](ja/how_a_matrix_works.md)
* [分割キーボード](ja/feature_split_keyboard.md)
* [速記](ja/feature_stenography.md)
* [ポインティングデバイス](ja/feature_pointing_device.md)
* **コア開発**
* [コーディング規約](ja/coding_conventions_c.md)
* [互換性のあるマイクロコントローラ](ja/compatible_microcontrollers.md)
* [カスタムマトリックス](ja/custom_matrix.md)
* [QMK を理解する](ja/understanding_qmk.md)
* **CLI 開発**
* [コーディング規約](ja/coding_conventions_python.md)
* [CLI 開発の概要](ja/cli_development.md)

60
docs/ja/translating.md Normal file
View File

@@ -0,0 +1,60 @@
# QMK ドキュメントを翻訳する
<!---
original document: 0.9.51:docs/translating.md
git diff 0.9.51 HEAD -- docs/translating.md | cat
-->
ルートフォルダ (`docs/`) にある全てのファイルは英語でなければなりません - 他の全ての言語は、ISO 639-1 言語コードと、それに続く`-`と関連する国コードのサブフォルダにある必要があります。[一般的なもののリストはここで見つかります](https://www.andiamo.co.uk/resources/iso-language-codes/)。このフォルダが存在しない場合、作成することができます。翻訳された各ファイルは英語バージョンと同じ名前でなければなりません。そうすることで、正常にフォールバックできます。
`_summary.md` ファイルはこのフォルダの中に存在し、各ファイルへのリンクのリスト、翻訳された名前、言語フォルダに続くリンクが含まれている必要があります。
```markdown
* [QMK简介](zh-cn/getting_started_introduction.md)
```
他の docs ページへの全てのリンクにも、言語のフォルダが前に付いている必要があります。もしリンクがページの特定の部分(例えば、特定の見出し)への場合、以下のように見出しに英語の ID を使う必要があります:
```markdown
[建立你的环境](zh-cn/newbs-getting-started.md#set-up-your-environment)
## 建立你的环境 :id=set-up-your-environment
```
新しい言語の翻訳が完了したら、以下のファイルも修正する必要があります:
* [`docs/_langs.md`](https://github.com/qmk/qmk_firmware/blob/master/docs/_langs.md)
各行は、[GitHub emoji shortcode](https://github.com/ikatyang/emoji-cheat-sheet/blob/master/README.md#country-flag) の形式で国フラグと、それに続く言語で表される名前を含む必要があります。
```markdown
- [:cn: 中文](/zh-cn/)
```
* [`docs/index.html`](https://github.com/qmk/qmk_firmware/blob/master/docs/index.html)
`placeholder` と `noData` の両方のオブジェクトは、文字列で言語フォルダの辞書エントリが必要です:
```js
'/zh-cn/': '没有结果!',
```
サイドバーの「QMK ファームウェア」の見出しリンクを設定するために、`nameLink` オブジェクトも以下のように追加される必要があります:
```js
'/zh-cn/': '/#/zh-cn/',
```
また、`fallbackLanguages` リストに言語フォルダを追加して、404 ではなく英語に適切にフォールバックするようにしてください:
```js
fallbackLanguages: [
// ...
'zh-cn',
// ...
],
```
## 翻訳のプレビュー
ドキュメントのローカルインスタンスをセットアップする方法については、[ドキュメントのプレビュー](ja/contributing.md#previewing-the-documentation)を見てください - 右上の "Translations" メニューから新しい言語を選択することができるはずです。
作業に満足したら、遠慮なくプルリクエストを開いてください!

View File

@@ -48,7 +48,7 @@ This part is super simple. However, there is some configuration that we need to
### Configuring VS Code
First, we need to set up IntelliSense. This isn't strictly required, but it will make your life a LOT easier. To do this, we need to create the `.vscode/c_cpp_properies.json` file in the QMK Firmware folder, You can do this all manually, but I've done most of the work already.
First, we need to set up IntelliSense. This isn't strictly required, but it will make your life a LOT easier. To do this, we need to create the `.vscode/c_cpp_properties.json` file in the QMK Firmware folder, You can do this all manually, but I've done most of the work already.
Grab [this file](https://gist.github.com/drashna/48e2c49ce877be592a1650f91f8473e8) and save it. You may need to edit this file, if you didn't install MSYS2 to the default location, or are using WSL/LxSS.

View File

@@ -1,39 +1,42 @@
# PR checklists
This is a non-exhaustive checklist of what the QMK collaborators will be checking when reviewing submitted PRs.
This is a non-exhaustive checklist of what the QMK Collaborators will be checking when reviewing submitted PRs.
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.
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
- 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 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
- a board designer naming their keyboard with uppercase letters is not enough justification
- Valid license headers on all `*.c` and `*.h` source files
- valid license headers on all `*.c` and `*.h` source files
- GPL2/GPL3 recommended for consistency
- 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.
- QMK codebase "best practices" followed
- This is not an exhaustive list, and will likely get amended as time goes by
- 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.
- 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)
- Timing abstractions should be followed too:
- no "old-school" GPIO/I2C/SPI functions 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
- If you think a new abstraction is useful, you're encouraged to:
- if you think a new abstraction is useful, you're encouraged to:
- prototype it in your own keyboard until it's feature-complete
- 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)
## Core PRs
## Keymap PRs
- Must now target `develop` branch, which will subsequently be merged back to `master` on the breaking changes timeline
- Other notes TBD
- Core is a lot more subjective given the breadth of posted changes
- `#include QMK_KEYBOARD_H` preferred to including specific board files
- prefer layer `enum`s to `#define`s
- require custom keycode `enum`s to `#define`s, first entry must have ` = SAFE_RANGE`
- terminating backslash (`\`) in lines of LAYOUT macro parameters is superfluous
- some care with spacing (e.g., alignment on commas or first char of keycodes) makes for a much nicer-looking keymap
## Keyboard PRs
@@ -48,12 +51,14 @@ https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard
- standard template should be present
- flash command 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
- `rules.mk`
- removed `MIDI_ENABLE`, `FAUXCLICKY_ENABLE` and `HD44780_ENABLE`
- modified `# Enable Bluetooth with the Adafruit EZ-Key HID` -> `# Enable Bluetooth`
- No `(-/+size)` comments related to enabling features
- Remove the list of alternate bootloaders if one has been specified
- No re-definitions of the default MCU parameters if same value, when compared to the equivalent MCU in [mcu_selection.mk](https://github.com/qmk/qmk_firmware/blob/master/quantum/mcu_selection.mk)
- no `(-/+size)` comments related to enabling features
- remove the list of alternate bootloaders if one has been specified
- no re-definitions of the default MCU parameters if same value, when compared to the equivalent MCU in [mcu_selection.mk](https://github.com/qmk/qmk_firmware/blob/master/quantum/mcu_selection.mk)
- keyboard `config.h`
- don't repeat `MANUFACTURER` in the `PRODUCT` value
- no `#define DESCRIPTION`
@@ -71,12 +76,12 @@ https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard
- `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`)
- 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)
- 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...
- 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) {
return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
@@ -90,22 +95,20 @@ https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard
- submitters can also have a "manufacturer-matching" keymap that mirrors existing functionality of the commercial product, if porting an existing board
Also, specific to ChibiOS:
- **Strong** preference to using existing ChibiOS board definitions.
- A lot of the time, an equivalent Nucleo board can be used with a different flash size or slightly different model in the same family
- Example: For an STM32L082KZ, given the similarity to an STM32L073RZ, you can use `BOARD = ST_NUCLEO64_L073RZ` in rules.mk
- **strong** preference to using existing ChibiOS board definitions.
- a lot of the time, an equivalent Nucleo board can be used with a different flash size or slightly different model in the same family
- example: For an STM32L082KZ, given the similarity to an STM32L073RZ, you can use `BOARD = ST_NUCLEO64_L073RZ` in rules.mk
- QMK is migrating to not having custom board definitions if at all possible, due to the ongoing maintenance burden when upgrading ChibiOS
- If a board definition is unavoidable, `board.c` must have a standard `__early_init()` (as per normal ChibiOS board defs) and an empty `boardInit()`:
- if a board definition is unavoidable, `board.c` must have a standard `__early_init()` (as per normal ChibiOS board defs) and an empty `boardInit()`:
- see Arm/ChibiOS [early initialization](https://docs.qmk.fm/#/platformdev_chibios_earlyinit?id=board-init)
- `__early_init()` should be replaced by either `early_hardware_init_pre()` or `early_hardware_init_post()` as appropriate
- `boardInit()` should be migrated to `board_init()`
## Keymap PRs
## Core PRs
- `#include QMK_KEYBOARD_H` preferred to including specific board files
- Prefer layer `enum`s to `#define`s
- Require custom keycode `enum`s to `#define`s, first entry must have ` = SAFE_RANGE`
- Terminating backslash (`\`) in lines of LAYOUT macro parameters is superfluous
- Some care with spacing (e.g., alignment on commas or first char of keycodes) makes for a much nicer-looking keymap
- must now target `develop` branch, which will subsequently be merged back to `master` on the breaking changes timeline
- other notes TBD
- core is a lot more subjective given the breadth of posted changes
---

View File

@@ -1,2 +1,4 @@
VIA_ENABLE = yes
LTO_ENABLE = yes
RGB_MATRIX_ENABLE = no
RGBLIGHT_ENABLE = yes

View File

@@ -0,0 +1,17 @@
/* Copyright 2020 Koichi Katano
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "bakeneko60.h"

View File

@@ -0,0 +1,61 @@
/* Copyright 2020 Koichi Katano
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "quantum.h"
#define LAYOUT_60_ansi_split_bs_rshift( \
k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, \
k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, \
k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k213, \
k300, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, \
k400, k401, k402, k406, k410, k411, k412, k413 \
) { \
{ k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014 }, \
{ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, KC_NO}, \
{ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, KC_NO, k213, KC_NO}, \
{ k300, KC_NO, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, KC_NO}, \
{ k400, k401, k402, KC_NO, KC_NO, KC_NO, k406, KC_NO, KC_NO, KC_NO, k410, k411, k412, k413, KC_NO} \
}
#define LAYOUT_60_ansi( \
k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k014, \
k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, \
k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k213, \
k300, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, \
k400, k401, k402, k406, k410, k411, k412, k413 \
) { \
{ k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, KC_NO, k014 }, \
{ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, KC_NO}, \
{ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, KC_NO, k213, KC_NO}, \
{ k300, KC_NO, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, KC_NO, KC_NO}, \
{ k400, k401, k402, KC_NO, KC_NO, KC_NO, k406, KC_NO, KC_NO, KC_NO, k410, k411, k412, k413, KC_NO} \
}
#define LAYOUT_60_tsangan_hhkb( \
k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, \
k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, \
k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k213, \
k300, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, \
k400, k401, k402, k406, k411, k412, k413 \
) { \
{ k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014 }, \
{ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, KC_NO}, \
{ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, KC_NO, k213, KC_NO}, \
{ k300, KC_NO, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, KC_NO}, \
{ k400, k401, k402, KC_NO, KC_NO, KC_NO, k406, KC_NO, KC_NO, KC_NO, KC_NO, k411, k412, k413, KC_NO} \
}

View File

@@ -0,0 +1,109 @@
/*
Copyright 2020 Koichi Katano
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 0x3A0E
#define PRODUCT_ID 0xCBDC
#define DEVICE_VER 0x0001
#define MANUFACTURER kkatano
#define PRODUCT Bakeneko 60
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
/*
* 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 { E6, B7, F7, F4, F5 }
#define MATRIX_COL_PINS { F6, B0, F1, C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, D1 }
#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
/* 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

View File

@@ -0,0 +1,219 @@
{
"keyboard_name": "Bakeneko 60",
"url": "https://github.com/kkatano/bakeneko-60-pcb",
"maintainer": "kkatano",
"width": 15,
"height": 5,
"layouts": {
"LAYOUT_60_ansi_split_bs_rshift": {
"layout": [
{ "x":0, "y":0 },
{ "x":1, "y":0 },
{ "x":2, "y":0 },
{ "x":3, "y":0 },
{ "x":4, "y":0 },
{ "x":5, "y":0 },
{ "x":6, "y":0 },
{ "x":7, "y":0 },
{ "x":8, "y":0 },
{ "x":9, "y":0 },
{ "x":10, "y":0 },
{ "x":11, "y":0 },
{ "x":12, "y":0 },
{ "x":13, "y":0 },
{ "x":14, "y":0 },
{ "x":0, "y":1, "w":1.5 },
{ "x":1.5, "y":1 },
{ "x":2.5, "y":1 },
{ "x":3.5, "y":1 },
{ "x":4.5, "y":1 },
{ "x":5.5, "y":1 },
{ "x":6.5, "y":1 },
{ "x":7.5, "y":1 },
{ "x":8.5, "y":1 },
{ "x":9.5, "y":1 },
{ "x":10.5, "y":1 },
{ "x":11.5, "y":1 },
{ "x":12.5, "y":1 },
{ "x":13.5, "y":1, "w":1.5 },
{ "x":0, "y":2, "w":1.75 },
{ "x":1.75, "y":2 },
{ "x":2.75, "y":2 },
{ "x":3.75, "y":2 },
{ "x":4.75, "y":2 },
{ "x":5.75, "y":2 },
{ "x":6.75, "y":2 },
{ "x":7.75, "y":2 },
{ "x":8.75, "y":2 },
{ "x":9.75, "y":2 },
{ "x":10.75, "y":2 },
{ "x":11.75, "y":2 },
{ "x":12.75, "y":2, "w":2.25 },
{ "x":0, "y":3, "w":2.25 },
{ "x":2.25, "y":3 },
{ "x":3.25, "y":3 },
{ "x":4.25, "y":3 },
{ "x":5.25, "y":3 },
{ "x":6.25, "y":3 },
{ "x":7.25, "y":3 },
{ "x":8.25, "y":3 },
{ "x":9.25, "y":3 },
{ "x":10.25, "y":3 },
{ "x":11.25, "y":3 },
{ "x":12.25, "y":3, "w":1.75 },
{ "x":14, "y":3 },
{ "x":0, "y":4, "w":1.25 },
{ "x":1.25, "y":4, "w":1.25 },
{ "x":2.5, "y":4, "w":1.25 },
{ "x":3.75, "y":4, "w":6.25 },
{ "x":10, "y":4, "w":1.25 },
{ "x":11.25, "y":4, "w":1.25 },
{ "x":12.5, "y":4, "w":1.25 },
{ "x":13.75, "y":4, "w":1.25 }
]
},
"LAYOUT_60_ansi": {
"layout": [
{ "x":0, "y":0 },
{ "x":1, "y":0 },
{ "x":2, "y":0 },
{ "x":3, "y":0 },
{ "x":4, "y":0 },
{ "x":5, "y":0 },
{ "x":6, "y":0 },
{ "x":7, "y":0 },
{ "x":8, "y":0 },
{ "x":9, "y":0 },
{ "x":10, "y":0 },
{ "x":11, "y":0 },
{ "x":12, "y":0 },
{ "x":13, "y":0, "w":2 },
{ "x":0, "y":1, "w":1.5 },
{ "x":1.5, "y":1 },
{ "x":2.5, "y":1 },
{ "x":3.5, "y":1 },
{ "x":4.5, "y":1 },
{ "x":5.5, "y":1 },
{ "x":6.5, "y":1 },
{ "x":7.5, "y":1 },
{ "x":8.5, "y":1 },
{ "x":9.5, "y":1 },
{ "x":10.5, "y":1 },
{ "x":11.5, "y":1 },
{ "x":12.5, "y":1 },
{ "x":13.5, "y":1, "w":1.5 },
{ "x":0, "y":2, "w":1.75 },
{ "x":1.75, "y":2 },
{ "x":2.75, "y":2 },
{ "x":3.75, "y":2 },
{ "x":4.75, "y":2 },
{ "x":5.75, "y":2 },
{ "x":6.75, "y":2 },
{ "x":7.75, "y":2 },
{ "x":8.75, "y":2 },
{ "x":9.75, "y":2 },
{ "x":10.75, "y":2 },
{ "x":11.75, "y":2 },
{ "x":12.75, "y":2, "w":2.25 },
{ "x":0, "y":3, "w":2.25 },
{ "x":2.25, "y":3 },
{ "x":3.25, "y":3 },
{ "x":4.25, "y":3 },
{ "x":5.25, "y":3 },
{ "x":6.25, "y":3 },
{ "x":7.25, "y":3 },
{ "x":8.25, "y":3 },
{ "x":9.25, "y":3 },
{ "x":10.25, "y":3 },
{ "x":11.25, "y":3 },
{ "x":12.25, "y":3, "w":2.75 },
{ "x":0, "y":4, "w":1.25 },
{ "x":1.25, "y":4, "w":1.25 },
{ "x":2.5, "y":4, "w":1.25 },
{ "x":3.75, "y":4, "w":6.25 },
{ "x":10, "y":4, "w":1.25 },
{ "x":11.25, "y":4, "w":1.25 },
{ "x":12.5, "y":4, "w":1.25 },
{ "x":13.75, "y":4, "w":1.25 }
]
},
"LAYOUT_60_tsangan_hhkb": {
"layout": [
{ "x":0, "y":0 },
{ "x":1, "y":0 },
{ "x":2, "y":0 },
{ "x":3, "y":0 },
{ "x":4, "y":0 },
{ "x":5, "y":0 },
{ "x":6, "y":0 },
{ "x":7, "y":0 },
{ "x":8, "y":0 },
{ "x":9, "y":0 },
{ "x":10, "y":0 },
{ "x":11, "y":0 },
{ "x":12, "y":0 },
{ "x":13, "y":0 },
{ "x":14, "y":0 },
{ "x":0, "y":1, "w":1.5 },
{ "x":1.5, "y":1 },
{ "x":2.5, "y":1 },
{ "x":3.5, "y":1 },
{ "x":4.5, "y":1 },
{ "x":5.5, "y":1 },
{ "x":6.5, "y":1 },
{ "x":7.5, "y":1 },
{ "x":8.5, "y":1 },
{ "x":9.5, "y":1 },
{ "x":10.5, "y":1 },
{ "x":11.5, "y":1 },
{ "x":12.5, "y":1 },
{ "x":13.5, "y":1, "w":1.5 },
{ "x":0, "y":2, "w":1.75 },
{ "x":1.75, "y":2 },
{ "x":2.75, "y":2 },
{ "x":3.75, "y":2 },
{ "x":4.75, "y":2 },
{ "x":5.75, "y":2 },
{ "x":6.75, "y":2 },
{ "x":7.75, "y":2 },
{ "x":8.75, "y":2 },
{ "x":9.75, "y":2 },
{ "x":10.75, "y":2 },
{ "x":11.75, "y":2 },
{ "x":12.75, "y":2, "w":2.25 },
{ "x":0, "y":3, "w":2.25 },
{ "x":2.25, "y":3 },
{ "x":3.25, "y":3 },
{ "x":4.25, "y":3 },
{ "x":5.25, "y":3 },
{ "x":6.25, "y":3 },
{ "x":7.25, "y":3 },
{ "x":8.25, "y":3 },
{ "x":9.25, "y":3 },
{ "x":10.25, "y":3 },
{ "x":11.25, "y":3 },
{ "x":12.25, "y":3, "w":1.75 },
{ "x":14, "y":3 },
{ "x":0, "y":4, "w":1.5 },
{ "x":1.5, "y":4 },
{ "x":2.5, "y":4, "w":1.5 },
{ "x":4, "y":4, "w":7 },
{ "x":11, "y":4, "w":1.5 },
{ "x":12.5, "y":4 },
{ "x":13.5, "y":4, "w":1.5 }
]
}
}
}

View File

@@ -0,0 +1,38 @@
/* Copyright 2020 Koichi Katano
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
enum layer_names {
_BASE,
_FN
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT_60_ansi_split_bs_rshift(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FN),
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL
),
[_FN] = LAYOUT_60_ansi_split_bs_rshift(
RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______
)
};

View File

@@ -0,0 +1 @@
# The default keymap for Bakeneko 60

View File

@@ -0,0 +1,54 @@
/* Copyright 2020 Koichi Katano
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
enum layer_names {
_L0,
_L1,
_L2,
_L3
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_L0] = LAYOUT_60_ansi_split_bs_rshift(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_L1),
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL
),
[_L1] = LAYOUT_60_ansi_split_bs_rshift(
RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______
),
[_L2] = LAYOUT_60_ansi_split_bs_rshift(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______
),
[_L3] = LAYOUT_60_ansi_split_bs_rshift(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______
)
};

View File

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

View File

@@ -0,0 +1,17 @@
# Bakeneko 60
An open source O-ring gasket mount keyboard
* Keyboard Maintainer: [kkatano](https://github.com/kkatano)
* Hardware Supported: Bakeneko 60
* Hardware Availability: [Open source on GitHub](https://github.com/kkatano/bakeneko-60-pcb)
Make example for this keyboard (after setting up your build environment):
make bakeneko60:default
Flashing example for this keyboard:
make bakeneko60: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

@@ -0,0 +1,24 @@
# MCU name
MCU = atmega32u4
# Bootloader selection
BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = 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
LAYOUTS = 60_ansi_split_bs_rshift 60_ansi 60_tsangan_hhkb

View File

@@ -0,0 +1,17 @@
/* Copyright 2020 Koichi Katano
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "bakeneko65.h"

View File

@@ -0,0 +1,75 @@
/* Copyright 2020 Koichi Katano
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "quantum.h"
#define LAYOUT_65_ansi_split_bs( \
k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, \
k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k115, \
k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k213, k215, \
k300, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k315, \
k400, k401, k402, k406, k409, k410, k411, k412, k413, k415 \
) { \
{ k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015 }, \
{ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, KC_NO, k115 }, \
{ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, KC_NO, k213, KC_NO, k215 }, \
{ k300, KC_NO, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, KC_NO, k315 }, \
{ k400, k401, k402, KC_NO, KC_NO, KC_NO, k406, KC_NO, KC_NO, k409, k410, k411, k412, k413, KC_NO, k415 } \
}
#define LAYOUT_65_ansi( \
k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k014, k015, \
k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k115, \
k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k213, k215, \
k300, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k315, \
k400, k401, k402, k406, k409, k410, k411, k412, k413, k415 \
) { \
{ k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, KC_NO, k014, k015 }, \
{ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, KC_NO, k115 }, \
{ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, KC_NO, k213, KC_NO, k215 }, \
{ k300, KC_NO, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, KC_NO, k315 }, \
{ k400, k401, k402, KC_NO, KC_NO, KC_NO, k406, KC_NO, KC_NO, k409, k410, k411, k412, k413, KC_NO, k415 } \
}
#define LAYOUT_65_ansi_split_bs_2_right_mods( \
k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, \
k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k115, \
k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k213, k215, \
k300, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k315, \
k400, k401, k402, k406, k409, k411, k412, k413, k415 \
) { \
{ k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015 }, \
{ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, KC_NO, k115 }, \
{ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, KC_NO, k213, KC_NO, k215 }, \
{ k300, KC_NO, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, KC_NO, k315 }, \
{ k400, k401, k402, KC_NO, KC_NO, KC_NO, k406, KC_NO, KC_NO, k409, KC_NO, k411, k412, k413, KC_NO, k415 } \
}
#define LAYOUT_65_ansi_2_right_mods( \
k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k014, k015, \
k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k115, \
k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k213, k215, \
k300, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k315, \
k400, k401, k402, k406, k409, k411, k412, k413, k415 \
) { \
{ k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, KC_NO, k014, k015 }, \
{ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, KC_NO, k115 }, \
{ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, KC_NO, k213, KC_NO, k215 }, \
{ k300, KC_NO, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, KC_NO, k315 }, \
{ k400, k401, k402, KC_NO, KC_NO, KC_NO, k406, KC_NO, KC_NO, k409, KC_NO, k411, k412, k413, KC_NO, k415 } \
}

View File

@@ -0,0 +1,109 @@
/*
Copyright 2020 Koichi Katano
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 0x3A0E
#define PRODUCT_ID 0x4C82
#define DEVICE_VER 0x0001
#define MANUFACTURER kkatano
#define PRODUCT Bakeneko 65
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
/*
* Keyboard Matrix Assignments
*
* Change this to how you wired your keyboard
* COLS: AVR pins used for columns, left to right
* ROWS: AVR pins used for rows, top to bottom
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
*
*/
#define MATRIX_ROW_PINS { E6, B7, F7, F4, F5 }
#define MATRIX_COL_PINS { F6, B0, F1, C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, D1, D0 }
#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
/* 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

View File

@@ -0,0 +1,313 @@
{
"keyboard_name": "Bakeneko 65",
"url": "https://github.com/kkatano/bakeneko-65-pcb",
"maintainer": "kkatano",
"width": 16,
"height": 5,
"layouts": {
"LAYOUT_65_ansi_split_bs": {
"layout": [
{ "x":0, "y":0 },
{ "x":1, "y":0 },
{ "x":2, "y":0 },
{ "x":3, "y":0 },
{ "x":4, "y":0 },
{ "x":5, "y":0 },
{ "x":6, "y":0 },
{ "x":7, "y":0 },
{ "x":8, "y":0 },
{ "x":9, "y":0 },
{ "x":10, "y":0 },
{ "x":11, "y":0 },
{ "x":12, "y":0 },
{ "x":13, "y":0 },
{ "x":14, "y":0 },
{ "x":15, "y":0 },
{ "x":0, "y":1, "w":1.5 },
{ "x":1.5, "y":1 },
{ "x":2.5, "y":1 },
{ "x":3.5, "y":1 },
{ "x":4.5, "y":1 },
{ "x":5.5, "y":1 },
{ "x":6.5, "y":1 },
{ "x":7.5, "y":1 },
{ "x":8.5, "y":1 },
{ "x":9.5, "y":1 },
{ "x":10.5, "y":1 },
{ "x":11.5, "y":1 },
{ "x":12.5, "y":1 },
{ "x":13.5, "y":1, "w":1.5 },
{ "x":15, "y":1 },
{ "x":0, "y":2, "w":1.75 },
{ "x":1.75, "y":2 },
{ "x":2.75, "y":2 },
{ "x":3.75, "y":2 },
{ "x":4.75, "y":2 },
{ "x":5.75, "y":2 },
{ "x":6.75, "y":2 },
{ "x":7.75, "y":2 },
{ "x":8.75, "y":2 },
{ "x":9.75, "y":2 },
{ "x":10.75, "y":2 },
{ "x":11.75, "y":2 },
{ "x":12.75, "y":2, "w":2.25 },
{ "x":15, "y":2 },
{ "x":0, "y":3, "w":2.25 },
{ "x":2.25, "y":3 },
{ "x":3.25, "y":3 },
{ "x":4.25, "y":3 },
{ "x":5.25, "y":3 },
{ "x":6.25, "y":3 },
{ "x":7.25, "y":3 },
{ "x":8.25, "y":3 },
{ "x":9.25, "y":3 },
{ "x":10.25, "y":3 },
{ "x":11.25, "y":3 },
{ "x":12.25, "y":3, "w":1.75 },
{ "x":14, "y":3 },
{ "x":15, "y":3 },
{ "x":0, "y":4, "w":1.25 },
{ "x":1.25, "y":4, "w":1.25 },
{ "x":2.5, "y":4, "w":1.25 },
{ "x":3.75, "y":4, "w":6.25 },
{ "x":10, "y":4 },
{ "x":11, "y":4 },
{ "x":12, "y":4 },
{ "x":13, "y":4 },
{ "x":14, "y":4 },
{ "x":15, "y":4 }
]
},
"LAYOUT_65_ansi": {
"layout": [
{ "x":0, "y":0 },
{ "x":1, "y":0 },
{ "x":2, "y":0 },
{ "x":3, "y":0 },
{ "x":4, "y":0 },
{ "x":5, "y":0 },
{ "x":6, "y":0 },
{ "x":7, "y":0 },
{ "x":8, "y":0 },
{ "x":9, "y":0 },
{ "x":10, "y":0 },
{ "x":11, "y":0 },
{ "x":12, "y":0 },
{ "x":13, "y":0, "w": 2 },
{ "x":15, "y":0 },
{ "x":0, "y":1, "w":1.5 },
{ "x":1.5, "y":1 },
{ "x":2.5, "y":1 },
{ "x":3.5, "y":1 },
{ "x":4.5, "y":1 },
{ "x":5.5, "y":1 },
{ "x":6.5, "y":1 },
{ "x":7.5, "y":1 },
{ "x":8.5, "y":1 },
{ "x":9.5, "y":1 },
{ "x":10.5, "y":1 },
{ "x":11.5, "y":1 },
{ "x":12.5, "y":1 },
{ "x":13.5, "y":1, "w":1.5 },
{ "x":15, "y":1 },
{ "x":0, "y":2, "w":1.75 },
{ "x":1.75, "y":2 },
{ "x":2.75, "y":2 },
{ "x":3.75, "y":2 },
{ "x":4.75, "y":2 },
{ "x":5.75, "y":2 },
{ "x":6.75, "y":2 },
{ "x":7.75, "y":2 },
{ "x":8.75, "y":2 },
{ "x":9.75, "y":2 },
{ "x":10.75, "y":2 },
{ "x":11.75, "y":2 },
{ "x":12.75, "y":2, "w":2.25 },
{ "x":15, "y":2 },
{ "x":0, "y":3, "w":2.25 },
{ "x":2.25, "y":3 },
{ "x":3.25, "y":3 },
{ "x":4.25, "y":3 },
{ "x":5.25, "y":3 },
{ "x":6.25, "y":3 },
{ "x":7.25, "y":3 },
{ "x":8.25, "y":3 },
{ "x":9.25, "y":3 },
{ "x":10.25, "y":3 },
{ "x":11.25, "y":3 },
{ "x":12.25, "y":3, "w":1.75 },
{ "x":14, "y":3 },
{ "x":15, "y":3 },
{ "x":0, "y":4, "w":1.25 },
{ "x":1.25, "y":4, "w":1.25 },
{ "x":2.5, "y":4, "w":1.25 },
{ "x":3.75, "y":4, "w":6.25 },
{ "x":10, "y":4 },
{ "x":11, "y":4 },
{ "x":12, "y":4 },
{ "x":13, "y":4 },
{ "x":14, "y":4 },
{ "x":15, "y":4 }
]
},
"LAYOUT_65_ansi_split_bs_2_right_mods": {
"layout": [
{ "x":0, "y":0 },
{ "x":1, "y":0 },
{ "x":2, "y":0 },
{ "x":3, "y":0 },
{ "x":4, "y":0 },
{ "x":5, "y":0 },
{ "x":6, "y":0 },
{ "x":7, "y":0 },
{ "x":8, "y":0 },
{ "x":9, "y":0 },
{ "x":10, "y":0 },
{ "x":11, "y":0 },
{ "x":12, "y":0 },
{ "x":13, "y":0 },
{ "x":14, "y":0 },
{ "x":15, "y":0 },
{ "x":0, "y":1, "w":1.5 },
{ "x":1.5, "y":1 },
{ "x":2.5, "y":1 },
{ "x":3.5, "y":1 },
{ "x":4.5, "y":1 },
{ "x":5.5, "y":1 },
{ "x":6.5, "y":1 },
{ "x":7.5, "y":1 },
{ "x":8.5, "y":1 },
{ "x":9.5, "y":1 },
{ "x":10.5, "y":1 },
{ "x":11.5, "y":1 },
{ "x":12.5, "y":1 },
{ "x":13.5, "y":1, "w":1.5 },
{ "x":15, "y":1 },
{ "x":0, "y":2, "w":1.75 },
{ "x":1.75, "y":2 },
{ "x":2.75, "y":2 },
{ "x":3.75, "y":2 },
{ "x":4.75, "y":2 },
{ "x":5.75, "y":2 },
{ "x":6.75, "y":2 },
{ "x":7.75, "y":2 },
{ "x":8.75, "y":2 },
{ "x":9.75, "y":2 },
{ "x":10.75, "y":2 },
{ "x":11.75, "y":2 },
{ "x":12.75, "y":2, "w":2.25 },
{ "x":15, "y":2 },
{ "x":0, "y":3, "w":2.25 },
{ "x":2.25, "y":3 },
{ "x":3.25, "y":3 },
{ "x":4.25, "y":3 },
{ "x":5.25, "y":3 },
{ "x":6.25, "y":3 },
{ "x":7.25, "y":3 },
{ "x":8.25, "y":3 },
{ "x":9.25, "y":3 },
{ "x":10.25, "y":3 },
{ "x":11.25, "y":3 },
{ "x":12.25, "y":3, "w":1.75 },
{ "x":14, "y":3 },
{ "x":15, "y":3 },
{ "x":0, "y":4, "w":1.25 },
{ "x":1.25, "y":4, "w":1.25 },
{ "x":2.5, "y":4, "w":1.25 },
{ "x":3.75, "y":4, "w":6.25 },
{ "x":10, "y":4, "w":1.5 },
{ "x":11.5, "y":4, "w":1.5 },
{ "x":13, "y":4 },
{ "x":14, "y":4 },
{ "x":15, "y":4 }
]
},
"LAYOUT_65_ansi_2_right_mods": {
"layout": [
{ "x":0, "y":0 },
{ "x":1, "y":0 },
{ "x":2, "y":0 },
{ "x":3, "y":0 },
{ "x":4, "y":0 },
{ "x":5, "y":0 },
{ "x":6, "y":0 },
{ "x":7, "y":0 },
{ "x":8, "y":0 },
{ "x":9, "y":0 },
{ "x":10, "y":0 },
{ "x":11, "y":0 },
{ "x":12, "y":0 },
{ "x":13, "y":0, "w": 2 },
{ "x":15, "y":0 },
{ "x":0, "y":1, "w":1.5 },
{ "x":1.5, "y":1 },
{ "x":2.5, "y":1 },
{ "x":3.5, "y":1 },
{ "x":4.5, "y":1 },
{ "x":5.5, "y":1 },
{ "x":6.5, "y":1 },
{ "x":7.5, "y":1 },
{ "x":8.5, "y":1 },
{ "x":9.5, "y":1 },
{ "x":10.5, "y":1 },
{ "x":11.5, "y":1 },
{ "x":12.5, "y":1 },
{ "x":13.5, "y":1, "w":1.5 },
{ "x":15, "y":1 },
{ "x":0, "y":2, "w":1.75 },
{ "x":1.75, "y":2 },
{ "x":2.75, "y":2 },
{ "x":3.75, "y":2 },
{ "x":4.75, "y":2 },
{ "x":5.75, "y":2 },
{ "x":6.75, "y":2 },
{ "x":7.75, "y":2 },
{ "x":8.75, "y":2 },
{ "x":9.75, "y":2 },
{ "x":10.75, "y":2 },
{ "x":11.75, "y":2 },
{ "x":12.75, "y":2, "w":2.25 },
{ "x":15, "y":2 },
{ "x":0, "y":3, "w":2.25 },
{ "x":2.25, "y":3 },
{ "x":3.25, "y":3 },
{ "x":4.25, "y":3 },
{ "x":5.25, "y":3 },
{ "x":6.25, "y":3 },
{ "x":7.25, "y":3 },
{ "x":8.25, "y":3 },
{ "x":9.25, "y":3 },
{ "x":10.25, "y":3 },
{ "x":11.25, "y":3 },
{ "x":12.25, "y":3, "w":1.75 },
{ "x":14, "y":3 },
{ "x":15, "y":3 },
{ "x":0, "y":4, "w":1.25 },
{ "x":1.25, "y":4, "w":1.25 },
{ "x":2.5, "y":4, "w":1.25 },
{ "x":3.75, "y":4, "w":6.25 },
{ "x":10, "y":4, "w":1.5 },
{ "x":11.5, "y":4, "w":1.5 },
{ "x":13, "y":4 },
{ "x":14, "y":4 },
{ "x":15, "y":4 }
]
}
}
}

View File

@@ -0,0 +1,38 @@
/* Copyright 2020 kkatano
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
enum layer_names {
_BASE,
_FN
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT_65_ansi_split_bs(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, KC_HOME,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[_FN] = LAYOUT_65_ansi_split_bs(
RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};

View File

@@ -0,0 +1 @@
# The default keymap for Bakeneko 65

View File

@@ -0,0 +1,54 @@
/* Copyright 2020 kkatano
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
enum layer_names {
_L0,
_L1,
_L2,
_L3
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_L0] = LAYOUT_65_ansi_split_bs(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, KC_HOME,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_L1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[_L1] = LAYOUT_65_ansi_split_bs(
RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[_L2] = LAYOUT_65_ansi_split_bs(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[_L3] = LAYOUT_65_ansi_split_bs(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};

View File

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

View File

@@ -0,0 +1,17 @@
# Bakeneko 65
An open source O-ring gasket mount keyboard
* Keyboard Maintainer: [kkatano](https://github.com/kkatano)
* Hardware Supported: Bakeneko 65
* Hardware Availability: [Open source on GitHub](https://github.com/kkatano/bakeneko-65-pcb)
Make example for this keyboard (after setting up your build environment):
make bakeneko65:default
Flashing example for this keyboard:
make bakeneko65: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

@@ -0,0 +1,24 @@
# MCU name
MCU = atmega32u4
# Bootloader selection
BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = 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
LAYOUTS = 65_ansi

View File

@@ -0,0 +1,30 @@
# BMEK
![BMEK](https://i.imgur.com/p1KFi6ql.jpg)
BMEK combines the best of HHKB & Alice-likes. All PCB and case design files are open source.
* Keyboard Maintainer: [Bemeier](https://github.com/Bemeier)
* Hardware Supported: BMEK PCB rev1, rev2, rev3
* Hardware Availability: Case & PCB files: [github.com/bemeier/bmek](https://github.com/bemeier/bmek)
Make example for this keyboard, for an hhkb-like layout and keymap (after setting up your build environment):
make bemeier/bmek/rev3:default
Make the VIA compatible firmware:
make bemeier/bmek/rev3:via
The ```rev3```, denotes the version of the PCB.
Check on the PCB to find out which version you have, and set it to rev1, rev2 or rev3 accordingly (the BMEK group buy PCBs are all rev3).
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).
# Layouts
Starting with rev3 (the version of the PCB to be shipped in the GB), the following layout options are supported:
![layouts](https://i.imgur.com/XuFxwthl.png)
Note that the keymap shown above may not accurately reflect the default keymap of the firmware (see the keymaps folder).

23
keyboards/bemeier/bmek/bmek.c Executable file
View File

@@ -0,0 +1,23 @@
/* Copyright 2020 bemeier
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "bmek.h"
__attribute__((weak))
void shutdown_user() {
#ifdef RGBLIGHT_ENABLE
rgblight_setrgb(255, 0, 0);
#endif
}

58
keyboards/bemeier/bmek/bmek.h Executable file
View File

@@ -0,0 +1,58 @@
/* Copyright 2020 bemeier
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "quantum.h"
#if defined(KEYBOARD_bemeier_bmek_rev1)
# include "rev1.h"
#elif defined(KEYBOARD_bemeier_bmek_rev2)
# include "rev2.h"
#elif defined(KEYBOARD_bemeier_bmek_rev3)
# include "rev3.h"
#endif
#define XXX KC_NO // makes the switch matrix easier to read
// This layout is supported by all revisions
#define LAYOUT_hhkb(\
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K1E,\
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K2E,\
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D,\
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E,\
K42, K43, K45, K48, K4A, K4B \
) { \
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
{ XXX, XXX, K42, K43, XXX, K45, XXX, XXX, K48, XXX, K4A, K4B, XXX, XXX, XXX } \
}
// Layout exposing all keys (adding the ISO-style split left shift, which is supported starting rev3)
#define LAYOUT_all(\
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K1E,\
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K2E,\
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D,\
K30, K31, K41, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E,\
K42, K43, K45, K48, K4A, K4B \
) { \
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
{ XXX, K41, K42, K43, XXX, K45, XXX, XXX, K48, XXX, K4A, K4B, XXX, XXX, XXX } \
}

47
keyboards/bemeier/bmek/config.h Executable file
View File

@@ -0,0 +1,47 @@
/* Copyright 2020 bemeier
*
* 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 0x626D // BeMeier
#define PRODUCT_ID 0x656B // ErgonomicKeyboard
#define MANUFACTURER Bemeier
#define PRODUCT BMEK
#define DYNAMIC_KEYMAP_LAYER_COUNT 5
#define VIA_EEPROM_CUSTOM_CONFIG_SIZE 20
/* Keyboard Matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
#define DIODE_DIRECTION COL2ROW
#define RGBLIGHT_EFFECT_BREATHING
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
#define RGBLIGHT_MODE_STATIC_GRADIENT
#define RGBLED_NUM 6
#define RGBLIGHT_HUE_STEP 8
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
#define RGBLIGHT_LIMIT_VAL 255
#define DEBOUNCE 5
//#define RETRO_TAPPING
#define TAPPING_TERM 175

View File

@@ -0,0 +1,25 @@
{
"keyboard_name": "bmek",
"url": "https://github.com/Bemeier/bmek",
"maintainer": "Bemeier",
"width": 18,
"height": 5,
"layouts": {
"LAYOUT_all": {
"layout": [
{"label":"Home", "x":0, "y":0}, {"label":"Esc", "x":1.5, "y":0}, {"label":"!", "x":2.5, "y":0}, {"label":"@", "x":3.5, "y":0}, {"label":"#", "x":4.5, "y":0}, {"label":"$", "x":5.5, "y":0}, {"label":"%", "x":6.5, "y":0}, {"label":"^", "x":7.5, "y":0}, {"label":"&", "x":10, "y":0}, {"label":"*", "x":11, "y":0}, {"label":"(", "x":12, "y":0}, {"label":")", "x":13, "y":0}, {"label":"_", "x":14, "y":0}, {"label":"+", "x":15, "y":0}, {"label":"|", "x":16, "y":0}, {"label":"~", "x":17, "y":0},
{"label":"PgUp", "x":0, "y":1}, {"label":"Tab", "x":1.5, "y":1, "w":1.5}, {"label":"Q", "x":3, "y":1}, {"label":"W", "x":4, "y":1}, {"label":"E", "x":5, "y":1}, {"label":"R", "x":6, "y":1}, {"label":"T", "x":7, "y":1}, {"label":"Y", "x":9.5, "y":1}, {"label":"U", "x":10.5, "y":1}, {"label":"I", "x":11.5, "y":1}, {"label":"O", "x":12.5, "y":1}, {"label":"P", "x":13.5, "y":1}, {"label":"{", "x":14.5, "y":1}, {"label":"}", "x":15.5, "y":1}, {"label":"Backspace", "x":16.5, "y":1, "w":1.5},
{"label":"PgDn", "x":0, "y":2}, {"label":"Ctrl", "x":1.5, "y":2, "w":1.75}, {"label":"A", "x":3.25, "y":2}, {"label":"S", "x":4.25, "y":2}, {"label":"D", "x":5.25, "y":2}, {"label":"F", "x":6.25, "y":2}, {"label":"G", "x":7.25, "y":2}, {"label":"H", "x":9.75, "y":2}, {"label":"J", "x":10.75, "y":2}, {"label":"K", "x":11.75, "y":2}, {"label":"L", "x":12.75, "y":2}, {"label":":", "x":13.75, "y":2}, {"label":"\"", "x":14.75, "y":2}, {"label":"Enter", "x":15.75, "y":2, "w":2.25},
{"label":"End", "x":0, "y":3}, {"label":"Shift", "x":1.5, "y":3, "w":1.25}, {"label":"~", "x":2.75, "y":3}, {"label":"Z", "x":3.75, "y":3}, {"label":"X", "x":4.75, "y":3}, {"label":"C", "x":5.75, "y":3}, {"label":"V", "x":6.75, "y":3}, {"label":"B", "x":7.75, "y":3}, {"label":"B", "x":9.25, "y":3}, {"label":"N", "x":10.25, "y":3}, {"label":"M", "x":11.25, "y":3}, {"label":"<", "x":12.25, "y":3}, {"label":">", "x":13.25, "y":3}, {"label":"?", "x":14.25, "y":3}, {"label":"Shift", "x":15.25, "y":3, "w":1.75}, {"label":"Fn", "x":17, "y":3}, {"label":"Win", "x":3.75, "y":4}, {"label":"Alt", "x":4.75, "y":4, "w":1.25}, {"x":6, "y":4, "w":2.75}, {"x":9.25, "y":4, "w":2.75}, {"label":"Alt", "x":12, "y":4, "w":1.25}, {"label":"Win", "x":13.25, "y":4}
]
},
"LAYOUT_hhkb": {
"layout": [
{"label":"Home", "x":0, "y":0}, {"label":"Esc", "x":1.5, "y":0}, {"label":"!", "x":2.5, "y":0}, {"label":"@", "x":3.5, "y":0}, {"label":"#", "x":4.5, "y":0}, {"label":"$", "x":5.5, "y":0}, {"label":"%", "x":6.5, "y":0}, {"label":"^", "x":7.5, "y":0}, {"label":"&", "x":10, "y":0}, {"label":"*", "x":11, "y":0}, {"label":"(", "x":12, "y":0}, {"label":")", "x":13, "y":0}, {"label":"_", "x":14, "y":0}, {"label":"+", "x":15, "y":0}, {"label":"|", "x":16, "y":0}, {"label":"~", "x":17, "y":0},
{"label":"PgUp", "x":0, "y":1}, {"label":"Tab", "x":1.5, "y":1, "w":1.5}, {"label":"Q", "x":3, "y":1}, {"label":"W", "x":4, "y":1}, {"label":"E", "x":5, "y":1}, {"label":"R", "x":6, "y":1}, {"label":"T", "x":7, "y":1}, {"label":"Y", "x":9.5, "y":1}, {"label":"U", "x":10.5, "y":1}, {"label":"I", "x":11.5, "y":1}, {"label":"O", "x":12.5, "y":1}, {"label":"P", "x":13.5, "y":1}, {"label":"{", "x":14.5, "y":1}, {"label":"}", "x":15.5, "y":1}, {"label":"Backspace", "x":16.5, "y":1, "w":1.5},
{"label":"PgDn", "x":0, "y":2}, {"label":"Ctrl", "x":1.5, "y":2, "w":1.75}, {"label":"A", "x":3.25, "y":2}, {"label":"S", "x":4.25, "y":2}, {"label":"D", "x":5.25, "y":2}, {"label":"F", "x":6.25, "y":2}, {"label":"G", "x":7.25, "y":2}, {"label":"H", "x":9.75, "y":2}, {"label":"J", "x":10.75, "y":2}, {"label":"K", "x":11.75, "y":2}, {"label":"L", "x":12.75, "y":2}, {"label":":", "x":13.75, "y":2}, {"label":"\"", "x":14.75, "y":2}, {"label":"Enter", "x":15.75, "y":2, "w":2.25},
{"label":"End", "x":0, "y":3}, {"label":"Shift", "x":1.5, "y":3, "w":2.25}, {"label":"Z", "x":3.75, "y":3}, {"label":"X", "x":4.75, "y":3}, {"label":"C", "x":5.75, "y":3}, {"label":"V", "x":6.75, "y":3}, {"label":"B", "x":7.75, "y":3}, {"label":"B", "x":9.25, "y":3}, {"label":"N", "x":10.25, "y":3}, {"label":"M", "x":11.25, "y":3}, {"label":"<", "x":12.25, "y":3}, {"label":">", "x":13.25, "y":3}, {"label":"?", "x":14.25, "y":3}, {"label":"Shift", "x":15.25, "y":3, "w":1.75}, {"label":"Fn", "x":17, "y":3}, {"label":"Win", "x":3.75, "y":4}, {"label":"Alt", "x":4.75, "y":4, "w":1.25}, {"x":6, "y":4, "w":2.75}, {"x":9.25, "y":4, "w":2.75}, {"label":"Alt", "x":12, "y":4, "w":1.25}, {"label":"Win", "x":13.25, "y":4}
]
}
}
}

View File

@@ -0,0 +1,4 @@
# Default BMEK Keymap
This is the default keymap for the BMEK, besides the left macro columns and the split spacebars.
It's uses the HHKB-like layout options (no split left shift, split backspace and split right shift).
Please checkout the diagrams in ```keymap.c``` for an overview of the keymap.

View File

@@ -0,0 +1,76 @@
/* Copyright 2020 bemeier
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_hhkb(
/* Default layer
┌─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
│ F13 │ │ ESC │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ │ 7 │ 8 │ 9 │ 0 │ - │ = │ \ │ ` │
├─────┤ ├─────┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┘ ┌─┴───┬─┴───┬─┴───┬─┴───┬─┴───┬─┴───┬─┴───┬─┴─────┤
│ F14 │ │ TAB │ Q │ W │ E │ R │ T │ │ Y │ U │ I │ O │ P │ [ │ ] │ BSPC │
├─────┤ ├───────┴┬────┴┬────┴┬────┴┬────┴┬────┴┐ └─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴───────┤
│ F15 │ │ CTRL │ A │ S │ D │ F │ G │ │ H │ J │ K │ L │ ; │ ' │ ENTER │
├─────┤ ├────────┴┬────┴┬────┴┬────┴┬────┴┬────┴┐ ┌┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴──────┬────┤
│ F16 │ │ SHFT │ Z │ X │ C │ V │ B │ │ B │ N │ M │ , │ . │ / │ SHFT │ Fn │
└─────┘ └─────────┼─────┼─────┴┬────┴─────┴─────┤ ├─────┴─────┴────┬┴─────┼─────┼─────┴───────┴────┘
│ GUI │ ALT │ SPACE │ │ SPACE/Fn_1 │ ALT │ CTL │
└─────┴──────┴────────────────┘ └────────────────┴──────┴─────┘
*/
KC_F13, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV,
KC_F14, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
KC_F15, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_F16, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
KC_LGUI, KC_LALT, KC_SPC, LT(1, KC_SPC), KC_RALT, KC_RCTL
), [1] = LAYOUT_hhkb(
/* Function Layer 1: Nav
┌─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
│ RST │ │ PWR │ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │ INS │ DEL │
├─────┤ ├─────┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┘ ┌─┴───┬─┴───┬─┴───┬─┴───┬─┴───┬─┴───┬─┴───┬─┴─────┤
│ │ │ CAPS │ │ │ │ │ │ │ │ │PSCR │SLCK │PAUS │ ^ │ │ │
├─────┤ ├───────┴┬────┴┬────┴┬────┴┬────┴┬────┴┐ └─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴───────┤
│ │ │ │ o) │ o)} │ Ø │EJCT │ │ │ * │ / │HOME │PGUP │ <- │ -> │ │
├─────┤ ├────────┴┬────┴┬────┴┬────┴┬────┴┬────┴┐ ┌┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴──────┬────┤
│ │ │ │ │ │ CFG │ │ │ │ + │ - │ │ END │PGDN │ v │ │ │
└─────┘ └─────────┼─────┼─────┴┬────┴─────┴─────┤ ├─────┴─────┴────┬┴─────┼─────┼─────┴───────┴────┘
│ │ │ │ │ │ │ │
└─────┴──────┴────────────────┘ └────────────────┴──────┴─────┘
*/
RESET, KC_PWR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL,
_______, KC_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, _______,
_______, _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_EJCT, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_PENT,
_______, _______, _______, _______, TG(2), _______, _______, _______, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, _______, _______,
_______, _______, _______, _______, _______, _______
), [2] = LAYOUT_hhkb(
/* Function Layer 4: Firmware Config (TODO)
┌─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
│ RST │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
├─────┤ ├─────┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┘ ┌─┴───┬─┴───┬─┴───┬─┴───┬─┴───┬─┴───┬─┴───┬─┴─────┤
│ │ │ │ RGB │RGB+ │RGB- │HUE+ │HUE- │ │ │ │ │ │ │ │ │ │
├─────┤ ├───────┴┬────┴┬────┴┬────┴┬────┴┬────┴┐ └─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴───────┤
│ │ │ │ │SPD+ │SPD- │SAT+ │SAT- │ │ │ │ │ │ │ │ │
├─────┤ ├────────┴┬────┴┬────┴┬────┴┬────┴┬────┴┐ ┌┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴──────┬────┤
│ │ │ │ │ │ ___ │VAL+ │VAL- │ │ │ │ │ │ │ │ │ │
└─────┘ └─────────┼─────┼─────┴┬────┴─────┴─────┤ ├─────┴─────┴────┬┴─────┼─────┼─────┴───────┴────┘
│ │ │ │ │ │ │ │
└─────┴──────┴────────────────┘ └────────────────┴──────┴─────┘
*/
RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, RGB_TOG, RGB_MOD, RGB_RMOD, RGB_HUI, RGB_HUD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, RGB_SPI, RGB_SPD, RGB_SAI, RGB_SAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, TG(2), RGB_VAI, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX
) };

View File

@@ -0,0 +1,18 @@
# Default VIA Keymap
Compile the firmware with this keymap for use the BMEK with the [VIA configurator](https://caniusevia.com/).
Layout options can be configured in VIA (see first screenshot below).
## 0: Base Layer
![Base Layer](https://i.imgur.com/tBu50SS.png)
## 1: Nav Layer
![Nav Layer](https://i.imgur.com/ZzEow3t.png)
## 2: NUM Block
![NUM Block](https://i.imgur.com/vzjZIa1.png)
## 4: FW Config
![FW Config](https://i.imgur.com/L7QynAb.png)
## Alternative Preconfigured Layouts
TODO: Provide (links to) some alternative via keymaps after VIA support is landed upstream.

View File

@@ -0,0 +1,114 @@
/* Copyright 2020 bemeier
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_all(
/* Default layer
┌─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
│ F13 │ │ ESC │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ │ 7 │ 8 │ 9 │ 0 │ - │ = │ \ │ ` │
├─────┤ ├─────┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┘ ┌─┴───┬─┴───┬─┴───┬─┴───┬─┴───┬─┴───┬─┴───┬─┴─────┤
│ F14 │ │ TAB │ Q │ W │ E │ R │ T │ │ Y │ U │ I │ O │ P │ [ │ ] │ BSPC │
├─────┤ ├───────┴┬────┴┬────┴┬────┴┬────┴┬────┴┐ └─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴───────┤
│ F15 │ │ CTRL │ A │ S │ D │ F │ G │ │ H │ J │ K │ L │ ; │ ' │ ENTER │
├─────┤ ├───────┬┴┬────┴┬────┴┬────┴┬────┴┬────┴┐ ┌┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴──────┬────┤
│ F16 │ │ SHFT │`│ Z │ X │ C │ V │ B │ │ B │ N │ M │ , │ . │ / │ SHFT │ Fn │
└─────┘ └───────┴─┼─────┼─────┴┬────┴─────┴─────┤ ├─────┴─────┴────┬┴─────┼─────┼─────┴───────┴────┘
│ GUI │ ALT │ SPACE │ │ SPACE/Fn_1 │ ALT │ CTL │
└─────┴──────┴────────────────┘ └────────────────┴──────┴─────┘
*/
KC_F13, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV,
KC_F14, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
KC_F15, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_F16, KC_LSFT, KC_GRV, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
KC_LGUI, KC_LALT, KC_SPC, LT(1, KC_SPC), KC_RALT, KC_RCTL
), [1] = LAYOUT_all(
/* Function Layer 1: Nav
┌─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
│ RST │ │ │ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │ INS │ DEL │
├─────┤ ├─────┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┘ ┌─┴───┬─┴───┬─┴───┬─┴───┬─┴───┬─┴───┬─┴───┬─┴─────┤
│ │ │ │ END │ ^ │HOME │PGUP │ │ │ │ │ │ │ |> │ << │ >> │ │
├─────┤ ├───────┴┬────┴┬────┴┬────┴┬────┴┬────┴┐ └─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴───────┤
│ │ │ │ <- │ v │ -> │PGDN │ │ │ <- │ v │ ^ │ -> │ o) │ o)} │ │
├─────┤ ├───────┬┴┬────┴┬────┴┬────┴┬────┴┬────┴┐ ┌┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴──────┬────┤
│ │ │ │ │ │ │ CFG │ │ NUM │ │ │ │ │LDSKT│RDSKT│ Ø │ │ │
└─────┘ └───────┴─┼─────┼─────┴┬────┴─────┴─────┤ ├─────┴─────┴────┬┴─────┼─────┼─────┴───────┴────┘
│ │ │ │ │ │ │ │
└─────┴──────┴────────────────┘ └────────────────┴──────┴─────┘
*/
RESET, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL,
_______, _______, KC_END, KC_UP, KC_HOME, KC_PGUP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MPLY, KC_MPRV, KC_MNXT, _______,
_______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_VOLD, KC_VOLU, _______,
_______, _______, XXXXXXX, XXXXXXX, XXXXXXX, TG(4), XXXXXXX, XXXXXXX, TG(2), XXXXXXX, XXXXXXX, LCTL(LGUI(KC_LEFT)), LCTL(LGUI(KC_RGHT)), KC_MUTE, _______, _______,
_______, _______, _______, _______, _______, _______
), [2] = LAYOUT_all(
/* Function Layer 2: Numpad example
┌─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
│ │ │ │ │ │ │ │ │ │ │ 7 │ 8 │ 9 │ 0 │ - │ + │ │ │
├─────┤ ├─────┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┘ ┌─┴───┬─┴───┬─┴───┬─┴───┬─┴───┬─┴───┬─┴───┬─┴─────┤
│ │ │ │ │ │ │ │ │ │ 4 │ 5 │ 6 │ │ / │ * │ │ │
├─────┤ ├───────┴┬────┴┬────┴┬────┴┬────┴┬────┴┐ └─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴───────┤
│ │ │ │ │ │ │ │ │ │ 1 │ 2 │ 3 │ │ │ │ KP_ENTER │
├─────┤ ├───────┬┴┬────┴┬────┴┬────┴┬────┴┬────┴┐ ┌┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴──────┬────┤
│ │ │ │ │ │ │ │ │ │ │ ___ │ 0 │ . │ │ │ │ │ │
└─────┘ └───────┴─┼─────┼─────┴┬────┴─────┴─────┤ ├─────┴─────┴────┬┴─────┼─────┼─────┴───────┴────┘
│ │ │ │ │ │ │ │
└─────┴──────┴────────────────┘ └────────────────┴──────┴─────┘
*/
_______, _______, _______, _______, _______, _______, _______, _______, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_0, KC_PMNS, KC_PPLS, _______, _______,
_______, _______, _______, _______, _______, _______, _______, KC_KP_4, KC_KP_5, KC_KP_6, XXXXXXX, KC_PSLS, KC_PAST, _______, _______,
_______, _______, _______, _______, _______, _______, _______, KC_KP_1, KC_KP_2, KC_KP_3, XXXXXXX, _______, _______, KC_PENT,
_______, _______, _______, _______, _______, _______, _______, _______, TG(2), KC_KP_0, KC_PDOT, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______
), [3] = LAYOUT_all(
/* Function Layer 3
┌─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
├─────┤ ├─────┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┘ ┌─┴───┬─┴───┬─┴───┬─┴───┬─┴───┬─┴───┬─┴───┬─┴─────┤
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
├─────┤ ├───────┴┬────┴┬────┴┬────┴┬────┴┬────┴┐ └─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴───────┤
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
├─────┤ ├───────┬┴┬────┴┬────┴┬────┴┬────┴┬────┴┐ ┌┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴──────┬────┤
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
└─────┘ └───────┴─┼─────┼─────┴┬────┴─────┴─────┤ ├─────┴─────┴────┬┴─────┼─────┼─────┴───────┴────┘
│ │ │ │ │ │ │ │
└─────┴──────┴────────────────┘ └────────────────┴──────┴─────┘
*/
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______
), [4] = LAYOUT_all(
/* Function Layer 4: Firmware Config
┌─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
│ RST │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
├─────┤ ├─────┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┘ ┌─┴───┬─┴───┬─┴───┬─┴───┬─┴───┬─┴───┬─┴───┬─┴─────┤
│ │ │ │ RGB │RGB+ │RGB- │HUE+ │HUE- │ │ │ │ │ │ │ │ │ │
├─────┤ ├───────┴┬────┴┬────┴┬────┴┬────┴┬────┴┐ └─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴───────┤
│ │ │ │ │SPD+ │SPD- │SAT+ │SAT- │ │ │ │ │ │ │ │ │
├─────┤ ├───────┬┴┬────┴┬────┴┬────┴┬────┴┬────┴┐ ┌┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴──────┬────┤
│ │ │ │ │ │ │ ___ │VAL+ │VAL- │ │ │ │ │ │ │ │ │ │
└─────┘ └───────┴─┼─────┼─────┴┬────┴─────┴─────┤ ├─────┴─────┴────┬┴─────┼─────┼─────┴───────┴────┘
│ │ │ │ │ │ │ │
└─────┴──────┴────────────────┘ └────────────────┴──────┴─────┘
*/
RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, RGB_TOG, RGB_MOD, RGB_RMOD, RGB_HUI, RGB_HUD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, RGB_SPI, RGB_SPD, RGB_SAI, RGB_SAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, TG(4), RGB_VAI, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX
) };

View File

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

View File

@@ -0,0 +1,29 @@
/* Copyright 2020 bemeier
*
* 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"
#define DEVICE_VER 0x0001
#define MATRIX_ROW_PINS \
{ D4, D7, B6, B4, B7 }
#define MATRIX_COL_PINS \
{ F1, B0, B1, B2, B3, D0, D1, D2, C6, C7, F7, F6, F5, F4, B5 }
#define UNUSED_PINS \
{ D4, D5, F0, B7 }
#define RGB_DI_PIN E6

View File

@@ -0,0 +1,16 @@
/* Copyright 2020 bemeier
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "rev1.h"

View File

@@ -0,0 +1,18 @@
/* Copyright 2020 bemeier
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "quantum.h"

View File

@@ -0,0 +1,21 @@
# MCU name
MCU = atmega32u4
# Bootloader selection
BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE = lite
MOUSEKEY_ENABLE = no
EXTRAKEY_ENABLE = yes
CONSOLE_ENABLE = no
COMMAND_ENABLE = no
SLEEP_LED_ENABLE = yes
SPLIT_KEYBOARD = no
BACKLIGHT_ENABLE = no
NKRO_ENABLE = yes
RGBLIGHT_ENABLE = yes
AUDIO_ENABLE = no
LTO_ENABLE = yes

View File

@@ -0,0 +1,29 @@
/* Copyright 2020 bemeier
*
* 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"
#define DEVICE_VER 0x0002
#define MATRIX_ROW_PINS \
{ F4, F5, D7, B5, B4 }
#define MATRIX_COL_PINS \
{ F6, B0, B1, F7, C7, C6, B6, F1, B2, B3, D6, D3, D2, D1, D0 }
#define UNUSED_PINS \
{ D4, D5, F0, B7 }
#define RGB_DI_PIN E6

View File

@@ -0,0 +1,16 @@
/* Copyright 2020 bemeier
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "rev2.h"

View File

@@ -0,0 +1,18 @@
/* Copyright 2020 bemeier
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "quantum.h"

View File

@@ -0,0 +1,21 @@
# MCU name
MCU = atmega32u4
# Bootloader selection
BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE = lite
MOUSEKEY_ENABLE = no
EXTRAKEY_ENABLE = yes
CONSOLE_ENABLE = no
COMMAND_ENABLE = no
SLEEP_LED_ENABLE = yes
SPLIT_KEYBOARD = no
BACKLIGHT_ENABLE = no
NKRO_ENABLE = yes
RGBLIGHT_ENABLE = yes
AUDIO_ENABLE = no
LTO_ENABLE = yes

View File

@@ -0,0 +1,29 @@
/* Copyright 2020 bemeier
*
* 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"
#define DEVICE_VER 0x0003
#define MATRIX_ROW_PINS \
{ F1, B4, B5, D6, D7 }
#define MATRIX_COL_PINS \
{ B6, C6, C7, F7, F6, F5, F4, F0, B7, D0, D1, D2, D3, D5, D4 }
#define UNUSED_PINS \
{ D0, B1, B2, B3 }
#define RGB_DI_PIN E6

View File

@@ -0,0 +1,16 @@
/* Copyright 2020 bemeier
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "rev3.h"

View File

@@ -0,0 +1,24 @@
/* Copyright 2020 bemeier
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "quantum.h"
/*
PCB rev3 has a number of layout options that rev2 and rev1 don't have,
however, to me just using "ALL_67" for all for all keymaps seems easier to
maintain than adding all possible permutations of layout options here.
*/

View File

@@ -0,0 +1,21 @@
# MCU name
MCU = atmega32u4
# Bootloader selection
BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE = lite
MOUSEKEY_ENABLE = no
EXTRAKEY_ENABLE = yes
CONSOLE_ENABLE = no
COMMAND_ENABLE = no
SLEEP_LED_ENABLE = yes
SPLIT_KEYBOARD = no
BACKLIGHT_ENABLE = no
NKRO_ENABLE = yes
RGBLIGHT_ENABLE = yes
AUDIO_ENABLE = no
LTO_ENABLE = yes

View File

@@ -0,0 +1,16 @@
/* Copyright 2020 BINEPAD
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "bn003.h"

View File

@@ -0,0 +1,23 @@
/* Copyright 2020 BINEPAD
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "quantum.h"
#define LAYOUT( \
K00, K01, K02 \
) { \
{ K00, K01, K02 } \
}

View File

@@ -0,0 +1,89 @@
/* Copyright 2020 BINEPAD
*
* 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 0x4249 // Binepad
#define PRODUCT_ID 0x4287
#define DEVICE_VER 0x0001
#define MANUFACTURER Binepad
#define PRODUCT BN003
/* Key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 3
#define MATRIX_ROW_PINS { C6 }
#define MATRIX_COL_PINS { B4, B5, B6 }
#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
/* 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 userful 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
/*
* Magic Key Options
*
* Magic keys are hotkey commands that allow control over firmware functions of
* the keyboard. They are best used in combination with the HID Listen program,
* found here: https://www.pjrc.com/teensy/hid_listen.html
*
* The options below allow the magic key functionality to be changed. This is
* useful if your keyboard/keypad is missing keys and you want magic key support.
*
*/

View File

@@ -0,0 +1,28 @@
{
"keyboard_name": "BN003",
"url": "https://binepad.com",
"maintainer": "binepad",
"width": 3,
"height": 1,
"layouts": {
"LAYOUT": {
"layout": [
{
"label": "K0",
"x": 0,
"y": 0
},
{
"label": "K1",
"x": 1,
"y": 0
},
{
"label": "K2",
"x": 2,
"y": 0
}
]
}
}
}

View File

@@ -0,0 +1,19 @@
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
KC_0,
KC_1,
KC_2
),
[1] = LAYOUT(
KC_NO,
KC_NO,
KC_NO
),
[2] = LAYOUT(
KC_NO,
KC_NO,
KC_NO
)
};

View File

@@ -0,0 +1 @@
# bn003 - Default layout

View File

@@ -0,0 +1,24 @@
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
KC_0,
KC_1,
KC_2
),
[1] = LAYOUT(
KC_NO,
KC_NO,
KC_NO
),
[2] = LAYOUT(
KC_NO,
KC_NO,
KC_NO
),
[3] = LAYOUT(
KC_NO,
KC_NO,
KC_NO
)
};

View File

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

View File

@@ -0,0 +1,15 @@
# BINEPAD BN003
![BINEPAD BN003](https://imgur.com/q8JPcNEl.jpg)
A 3% macropad.
* Keyboard Maintainer: [BINEPAD]
* Hardware Supported: BN003 PCB (ATmega32U4)
* Hardware Availability: [Interest Check](https://www.binepad.com/bn003)
Make example for this keyboard (after setting up your build environment):
make binepad/bn003:default
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).

View File

@@ -0,0 +1,22 @@
# MCU name
MCU = atmega32u4
# Bootloader selection
BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = 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

View File

@@ -0,0 +1,36 @@
#include QMK_KEYBOARD_H
enum layers {
_MAIN,
_RAISE,
_LOWER,
};
// Readability keycodes
#define LOWER MO(_LOWER)
#define RAISE MO(_RAISE)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_MAIN] = LAYOUT_ortho_4x12(
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
KC_PIPE, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
[_RAISE] = LAYOUT_ortho_4x12(
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______,
RESET, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
[_LOWER] = LAYOUT_ortho_4x12(
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______,
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
)
};

View File

@@ -0,0 +1,5 @@
# The via keymap for boardsource 4x12 ortholinear keybaoard
This folder contains the [VIA](https://caniusevia.com/) configuration for the boardsource 4x12 ortholinear keybaoard
Maintained by: [gwillad](https://github.com/gwillad)

View File

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

View File

@@ -56,7 +56,7 @@ Ported to QMK by Peter Roe <pete@13bit.me>
{ K38, K39, K3A, K3B, K3C, K3D, K3E, KC_NO, }, \
{ KC_NO, K41, KC_NO, K43, KC_NO, K45, KC_NO, K47 }, \
{ KC_NO, KC_NO, KC_NO, K4B, K4C, KC_NO, K4E, KC_NO, }, \
{ KC_NO, KC_NO, K52, K53, K54, K55, K56, K57 }, \
{ KC_NO, K51, K52, K53, K54, K55, K56, K57 }, \
{ K58, K59, KC_NO, K5B, K5C, KC_NO, KC_NO, KC_NO, }, \
{ K60, K61, K62, K63, K64, K65, KC_NO, K67 }, \
{ KC_NO, K69, KC_NO, K6B, KC_NO, K6D, KC_NO, K6F }, \

View File

@@ -0,0 +1,33 @@
/*
This is the c configuration file for the keymap
Copyright 2012 Jun Wako <wakojun@gmail.com>
Copyright 2015 Jack Humbert
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
/* Use I2C or Serial, not both */
#define USE_SERIAL
// #define USE_I2C
/* Select hand configuration */
#define MASTER_LEFT
// #define MASTER_RIGHT
// #define EE_HANDS

View File

@@ -0,0 +1,141 @@
/* Copyright 2020 Toyoshima Hidenori <t@toyo.dev>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>
*/
#include QMK_KEYBOARD_H
enum layers {
_QWERTY,
_LOWER,
_RAISE,
_ADJUST,
};
enum custom_keycodes {
QWERTY = SAFE_RANGE,
LOWER,
RAISE,
ADJUST,
};
#define EISU LALT(KC_GRV)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Qwerty
* ,----------------------------------------------------------------------------------------------------------------------.
* | TAB | Q | W | E | R | T | - | | = | Y | U | I | O | P | \ |
* |------+------+------+------+------+------+------+--------------------+------+------+------+------+------+------+------|
* | Ctrl | A | S | D | F | G | [ | | ] | H | J | K | L | ; | ' |
* |------+------+------+------+------+------+---------------------------+------+------+------+------+------+------+------|
* | Shift| Z | X | C | V | B | GUI | | GUI | N | M | , | . | / | Shift|
* |-------------+------+------+------+------+------+------+------+------+------+------+------+------+------+-------------|
* | Ctrl | ESC | ALt | ESC |||||||| Shift| Raise| Space|||||||| enter| Lower| Bcspc|||||||| Left | Down | Up | Right|
* ,----------------------------------------------------------------------------------------------------------------------.
*/
[_QWERTY] = LAYOUT(
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_MINS, KC_EQL , KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LBRC, KC_RBRC, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LGUI, KC_RGUI, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
KC_LCTL, KC_ESC, KC_LALT, KC_ESC, KC_LSFT, RAISE, KC_SPC, KC_ENT, LOWER, KC_BSPC, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Lower
* ,----------------------------------------------------------------------------------------------------------------------.
* | ~ | 1 | 2 | 3 | 4 | 5 | _ | | + | 6 | 7 | 8 | 9 | 0 | | |
* |------+------+------+------+------+------+------+--------------------+------+------+------+------+------+------+------|
* | Ctrl | ^ | & | * | ( | ) | { | | } | Left | Down | Up | Right| : | " |
* |------+------+------+------+------+------+---------------------------+------+------+------+------+------+------+------|
* | Shift| ! | @ | # | $ | % | GUI | | GUI | - | = | < | > | ? | Shift|
* |-------------+------+------+------+------+------+------+------+------+------+------+------+------+------+-------------|
* | Ctrl | ESC | ALt | EISU |||||||| kana | Raise| Space|||||||| Enter| Lower|Delete|||||||| Home |PageDn|PageUp| End |
* ,----------------------------------------------------------------------------------------------------------------------.
*/
[_LOWER] = LAYOUT(
KC_TILD, KC_1, KC_2, KC_3, KC_4, KC_5, KC_UNDS, KC_PLUS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_PIPE,
KC_LCTL, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_LCBR, KC_RCBR, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_COLN, KC_DQT ,
KC_LSFT, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_LGUI, KC_RGUI, KC_MINS, KC_EQL, KC_LT, KC_GT, KC_QUES, KC_RSFT,
KC_LCTL, KC_ESC, KC_LALT, KC_LANG2, KC_LANG1,RAISE, KC_SPC, KC_ENT, LOWER, KC_DEL, KC_HOME,KC_PGDN, KC_PGUP, KC_END
),
/* Raise
* ,----------------------------------------------------------------------------------------------------------------------.
* | ` | 1 | 2 | 3 | 4 | 5 | _ | | + | 6 | 7 | 8 | 9 | 0 | | |
* |------+------+------+------+------+------+------+--------------------+------+------+------+------+------+------+------|
* | Ctrl | ^ | & | * | ( | ) | { | | } | Left | Down | Up | Right| : | " |
* |------+------+------+------+------+------+---------------------------+------+------+------+------+------+------+------|
* | Shift| ! | @ | # | $ | % | GUI | | GUI | _ | + | < | > | ? | Shift|
* |-------------+------+------+------+------+------+------+------+------+------+------+------+------+------+-------------|
* | Ctrl | ESC | ALt | EISU |||||||| kana | Raise| Space|||||||| Enter| Lower|Delete|||||||| Home |PageDn|PageUp| End |
* ,----------------------------------------------------------------------------------------------------------------------.
*/
[_RAISE] = LAYOUT(
KC_GRV , KC_1, KC_2, KC_3, KC_4, KC_5, KC_UNDS, KC_PLUS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_PIPE,
KC_LCTL, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_LCBR, KC_RCBR, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_COLN, KC_DQT ,
KC_LSFT, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_LGUI, KC_RGUI, KC_UNDS, KC_PLUS, KC_LT, KC_GT, KC_QUES, KC_RSFT,
KC_LCTL, KC_ESC, KC_LALT, KC_LANG2, KC_LANG1,RAISE, KC_SPC, KC_ENT, LOWER, KC_DEL, KC_HOME, KC_PGDN, KC_PGUP, KC_END
),
/* Adjust
* ,----------------------------------------------------------------------------------------------------------------------.
* | | Reset|RGB ON| MODE| HUE-| HUE+| | | | SAT-| SAT+| VAL-| VAL+| | |
* |------+------+------+------+------+------+---------------------------+------+------+------+------+------+------+------|
* | | | | | | | | | | | |
* |------+------+------+------+------+------+---------------------------+------+------+------+------+------+------+------|
* | F1 | F2 | F3 | F4 | F5 | F6 | | | | F7 | F8 | F9 | F10 | F11 | F12 |
* |-------------+------+------+------+------+------+------+------+------+------+------+------+------+------+-------------|
* | | | | |||||||| | | |||||||| | | |||||||| | | | |
* ,----------------------------------------------------------------------------------------------------------------------.
*/
[_ADJUST] = LAYOUT(
_______, RESET , RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI,_______, _______, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, _______, _______,
_______, _______, BL_TOGG, BL_BRTG, BL_INC , BL_DEC ,_______, _______, _______, _______, _______, _______, _______, _______,
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6 ,_______, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
_______, _______, _______, _______, _______,_______,_______, _______,_______, _______, _______, _______, _______, _______
)
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case LOWER:
if (record->event.pressed) {
layer_on(_LOWER);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_LOWER);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
}
return false;
break;
case RAISE:
if (record->event.pressed) {
layer_on(_RAISE);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_RAISE);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
}
return false;
break;
case ADJUST:
if (record->event.pressed) {
layer_on(_ADJUST);
} else {
layer_off(_ADJUST);
}
return false;
break;
}
return true;
}

View File

@@ -0,0 +1,62 @@
# ToyoshimaHidenori's keymap for Ergodash mini
This is the ToyoshimaHidenori's keymap configuration for Ergodash mini.
There are four layers, QWERTY(default), LOWER, RAISE and ADJSUT.
## Layers
### Qwerty
```
,----------------------------------------------------------------------------------------------------------------------.
| TAB | Q | W | E | R | T | - | | = | Y | U | I | O | P | \ |
|------+------+------+------+------+------+------+--------------------+------+------+------+------+------+------+------|
| Ctrl | A | S | D | F | G | [ | | ] | H | J | K | L | ; | ' |
|------+------+------+------+------+------+---------------------------+------+------+------+------+------+------+------|
| Shift| Z | X | C | V | B | GUI | | GUI | N | M | , | . | / | Shift|
|-------------+------+------+------+------+------+------+------+------+------+------+------+------+------+-------------|
| Ctrl | ESC | ALt | ESC |||||||| Shift| Raise| Space|||||||| enter| Lower| Bcspc|||||||| Left | Down | Up | Right|
,----------------------------------------------------------------------------------------------------------------------.
```
### Lower
```
,----------------------------------------------------------------------------------------------------------------------.
| ~ | 1 | 2 | 3 | 4 | 5 | _ | | + | 6 | 7 | 8 | 9 | 0 | | |
|------+------+------+------+------+------+------+--------------------+------+------+------+------+------+------+------|
| Ctrl | ^ | & | * | ( | ) | { | | } | Left | Down | Up | Right| : | " |
|------+------+------+------+------+------+---------------------------+------+------+------+------+------+------+------|
| Shift| ! | @ | # | $ | % | GUI | | GUI | - | = | < | > | ? | Shift|
|-------------+------+------+------+------+------+------+------+------+------+------+------+------+------+-------------|
| Ctrl | ESC | ALt | EISU |||||||| kana | Raise| Space|||||||| Enter| Lower|Delete|||||||| Home |PageDn|PageUp| End |
,----------------------------------------------------------------------------------------------------------------------.
```
### Raise
```
,----------------------------------------------------------------------------------------------------------------------.
| ` | 1 | 2 | 3 | 4 | 5 | _ | | + | 6 | 7 | 8 | 9 | 0 | | |
|------+------+------+------+------+------+------+--------------------+------+------+------+------+------+------+------|
| Ctrl | ^ | & | * | ( | ) | { | | } | Left | Down | Up | Right| : | " |
|------+------+------+------+------+------+---------------------------+------+------+------+------+------+------+------|
| Shift| ! | @ | # | $ | % | GUI | | GUI | _ | + | < | > | ? | Shift|
|-------------+------+------+------+------+------+------+------+------+------+------+------+------+------+-------------|
| Ctrl | ESC | ALt | EISU |||||||| kana | Raise| Space|||||||| Enter| Lower|Delete|||||||| Home |PageDn|PageUp| End |
,----------------------------------------------------------------------------------------------------------------------.
```
### Adjust
```
,----------------------------------------------------------------------------------------------------------------------.
| | Reset|RGB ON| MODE| HUE-| HUE+| | | | SAT-| SAT+| VAL-| VAL+| | |
|------+------+------+------+------+------+---------------------------+------+------+------+------+------+------+------|
| | | | | | | | | | | |
|------+------+------+------+------+------+---------------------------+------+------+------+------+------+------+------|
| F1 | F2 | F3 | F4 | F5 | F6 | | | | F7 | F8 | F9 | F10 | F11 | F12 |
|-------------+------+------+------+------+------+------+------+------+------+------+------+------+------+-------------|
| | | | |||||||| | | |||||||| | | |||||||| | | | |
,----------------------------------------------------------------------------------------------------------------------.
```

View File

@@ -0,0 +1,3 @@
BACKLIGHT_ENABLE = yes
RGBLIGHT_ENABLE = yes
AUDIO_ENABLE = no

View File

@@ -18,6 +18,9 @@
#undef MOUSEKEY_WHEEL_INTERVAL
#define MOUSEKEY_WHEEL_INTERVAL 50
#undef MK_COMBINED
#define MK_COMBINED
// /* Temporarily defining a tapping term that is ridiculous to see if i can tell if lt is working. */
// #undef TAPPING_TERM
// #define TAPPING_TERM 499

View File

@@ -28,13 +28,17 @@
enum custom_keycodes {
RGB_SLD = EZ_SAFE_RANGE,
MS_WH_UP,
MS_WH_DOWN,
MS_WH_RIGHT,
MS_WH_LEFT,
};
// tapdance keycodes
enum td_keycodes {
CTRL_TO12,
SHIFT_TO13,
ALT_TO11
ALT_TO11,
};
// define a type containing as many tapdance states as you need
@@ -59,6 +63,7 @@ void altto11_reset (qk_tap_dance_state_t *state, void *user_data);
void shiftto13_finished (qk_tap_dance_state_t *state, void *user_data);
void shiftto13_reset (qk_tap_dance_state_t *state, void *user_data);
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_ergodox_pretty(
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
@@ -162,9 +167,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[10] = LAYOUT_ergodox_pretty(
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
KC_TRANSPARENT, KC_NO, KC_LGUI, KC_MS_BTN2, KC_NO, KC_NO, KC_TRANSPARENT, MT(MOD_RCTL, KC_A), KC_NO, KC_NO, KC_MS_UP, KC_NO, KC_NO, KC_TRANSPARENT,
KC_TRANSPARENT, KC_NO, KC_LGUI, KC_MS_BTN2, KC_ACL2, KC_NO, KC_TRANSPARENT, KC_TRANSPARENT, KC_NO, KC_NO, KC_MS_UP, KC_NO, KC_NO, KC_TRANSPARENT,
KC_TRANSPARENT, TD(SHIFT_TO13), TD(CTRL_TO12), TD(ALT_TO11), KC_MS_BTN1, KC_NO, KC_NO, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_NO, KC_TRANSPARENT,
KC_TRANSPARENT, KC_NO, MT(MOD_LGUI | MOD_LCTL,KC_NO), KC_NO, KC_NO, KC_NO, KC_TRANSPARENT, KC_TRANSPARENT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRANSPARENT,
KC_TRANSPARENT, KC_NO, MT(MOD_LGUI | MOD_LCTL,KC_NO), KC_ACL0, KC_NO, KC_NO, KC_TRANSPARENT, KC_TRANSPARENT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRANSPARENT,
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
KC_TRANSPARENT, KC_TRANSPARENT,
@@ -182,9 +187,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[12] = LAYOUT_ergodox_pretty(
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
KC_TRANSPARENT, KC_NO, KC_LGUI, KC_HYPR, KC_NO, KC_NO, KC_TRANSPARENT, KC_TRANSPARENT, KC_NO, KC_NO, KC_MS_WH_UP, KC_NO, KC_NO, KC_TRANSPARENT,
KC_TRANSPARENT, KC_NO, KC_LGUI, KC_HYPR, KC_ACL2, KC_NO, KC_TRANSPARENT, KC_TRANSPARENT, KC_NO, KC_NO, KC_MS_WH_UP, KC_NO, KC_NO, KC_TRANSPARENT,
KC_TRANSPARENT, KC_LSHIFT, KC_LCTRL, KC_LALT, KC_NO, KC_NO, KC_NO, KC_MS_WH_LEFT, KC_MS_WH_DOWN, KC_MS_WH_RIGHT, KC_NO, KC_TRANSPARENT,
KC_TRANSPARENT, KC_NO, MT(MOD_LGUI | MOD_LCTL,KC_NO), KC_NO, KC_NO, KC_NO, KC_TRANSPARENT, KC_TRANSPARENT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRANSPARENT,
KC_TRANSPARENT, KC_NO, MT(MOD_LGUI | MOD_LCTL,KC_NO), MO(14), KC_NO, KC_NO, KC_TRANSPARENT, KC_TRANSPARENT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRANSPARENT,
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
KC_TRANSPARENT, KC_TRANSPARENT,
@@ -200,16 +205,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRANSPARENT, KC_TRANSPARENT,
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, TO(0)
),
[14] = LAYOUT_ergodox_pretty(
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
KC_TRANSPARENT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRANSPARENT, KC_TRANSPARENT, KC_NO, KC_NO, MS_WH_UP, KC_NO, KC_NO, KC_TRANSPARENT,
KC_TRANSPARENT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, MS_WH_LEFT, MS_WH_DOWN, MS_WH_RIGHT, KC_NO, KC_TRANSPARENT,
KC_TRANSPARENT, KC_NO, KC_NO, KC_TRANSPARENT, KC_NO, KC_NO, KC_TRANSPARENT, KC_TRANSPARENT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRANSPARENT,
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
KC_TRANSPARENT, KC_TRANSPARENT,
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT
),
};
/* Commenting out for debug purposes */
// bool process_record_user(uint16_t keycode, keyrecord_t *record) {
// switch (keycode) {
// }
// return true;
// }
uint32_t layer_state_set_user(uint32_t state) {
uint8_t layer = biton32(state);
ergodox_board_led_off();
@@ -252,11 +259,31 @@ uint32_t layer_state_set_user(uint32_t state) {
// determine the tapdance state to return
int cur_dance (qk_tap_dance_state_t *state) {
if (state->count == 1) {
if (state->interrupted || !state->pressed) { return SINGLE_TAP; }
if (state->interrupted && state->pressed && state->interrupting_keycode == KC_MS_BTN1) {return SINGLE_HOLD;}
if (state->interrupted && state->pressed && state->interrupting_keycode == 22273) {return SINGLE_HOLD;}
if (state->interrupted && state->pressed && state->interrupting_keycode == 22272) {return SINGLE_HOLD;}
if (state->interrupted && state->pressed && state->interrupting_keycode == KC_TAB) {return SINGLE_HOLD;}
else if (state->interrupted || !state->pressed) {
// if (state->interrupted) {
// print("interrupted\n");
// uprintf("Shift: %u\n", KC_LSHIFT);
// uprintf("Control: %u\n", KC_LCTRL);
// uprintf("%u\n",state->interrupting_keycode);
// }
return SINGLE_TAP;
}
else { return SINGLE_HOLD; }
}
else { return 2; } // any number higher than the maximum state value you return above
}
// /* Backup in case previous code is hard to piece together. */
// int cur_dance (qk_tap_dance_state_t *state) {
// if (state->count == 1) {
// if (state->interrupted || !state->pressed) { return SINGLE_TAP; }
// else { return SINGLE_HOLD; }
// }
// else { return 2; } // any number higher than the maximum state value you return above
// }
void ctrlto12_finished (qk_tap_dance_state_t *state, void *user_data) {
td_state = cur_dance(state);
@@ -265,7 +292,14 @@ void ctrlto12_finished (qk_tap_dance_state_t *state, void *user_data) {
layer_on(12);
break;
case SINGLE_HOLD:
if (state->interrupted && (state->interrupting_keycode == 22273 || state->interrupting_keycode == 43)) {
register_mods(MOD_BIT(KC_LCTRL));
break;
}
register_mods(MOD_BIT(KC_LCTRL)); // for a layer-tap key, use `layer_on(_MY_LAYER)` here
if (state->interrupted && state->interrupting_keycode == KC_MS_BTN1) {
register_code16(LCTL(KC_MS_BTN1));
}
break;
}
}
@@ -275,7 +309,14 @@ void ctrlto12_reset (qk_tap_dance_state_t *state, void *user_data) {
case SINGLE_TAP:
break;
case SINGLE_HOLD:
if (state->interrupted && (state->interrupting_keycode == 22273 || state->interrupting_keycode == 43) ) {
unregister_mods(MOD_BIT(KC_LCTRL));
break;
}
unregister_mods(MOD_BIT(KC_LCTRL)); // for a layer-tap key, use `layer_off(_MY_LAYER)` here
if (state->interrupted && state->interrupting_keycode == KC_MS_BTN1) {
unregister_code16(LCTL(KC_MS_BTN1));
}
break;
}
}
@@ -287,7 +328,14 @@ void shiftto13_finished (qk_tap_dance_state_t *state, void *user_data) {
layer_on(13);
break;
case SINGLE_HOLD:
if (state->interrupted && (state->interrupting_keycode == 22272 || state->interrupting_keycode == 43) ) {
register_mods(MOD_BIT(KC_LSHIFT));
break;
}
register_mods(MOD_BIT(KC_LSHIFT)); // for a layer-tap key, use `layer_on(_MY_LAYER)` here
if (state->interrupted && state->interrupting_keycode == KC_MS_BTN1) {
register_code16(LSFT(KC_MS_BTN1));
}
break;
}
}
@@ -297,7 +345,14 @@ void shiftto13_reset (qk_tap_dance_state_t *state, void *user_data) {
case SINGLE_TAP:
break;
case SINGLE_HOLD:
if (state->interrupted && (state->interrupting_keycode == 22272 || state->interrupting_keycode == 43) ) {
unregister_mods(MOD_BIT(KC_LSHIFT));
break;
}
unregister_mods(MOD_BIT(KC_LSHIFT)); // for a layer-tap key, use `layer_off(_MY_LAYER)` here
if (state->interrupted && state->interrupting_keycode == KC_MS_BTN1) {
unregister_code16(LSFT(KC_MS_BTN1));
}
break;
}
}
@@ -310,6 +365,9 @@ void altto11_finished (qk_tap_dance_state_t *state, void *user_data) {
break;
case SINGLE_HOLD:
register_mods(MOD_BIT(KC_LALT)); // for a layer-tap key, use `layer_on(_MY_LAYER)` here
if (state->interrupted && state->interrupting_keycode == KC_MS_BTN1) {
register_code16(LALT(KC_MS_BTN1));
}
break;
}
}
@@ -320,6 +378,9 @@ void altto11_reset (qk_tap_dance_state_t *state, void *user_data) {
break;
case SINGLE_HOLD:
unregister_mods(MOD_BIT(KC_LALT)); // for a layer-tap key, use `layer_off(_MY_LAYER)` here
if (state->interrupted && state->interrupting_keycode == KC_MS_BTN1) {
unregister_code16(LALT(KC_MS_BTN1));
}
break;
}
}
@@ -328,7 +389,7 @@ void altto11_reset (qk_tap_dance_state_t *state, void *user_data) {
qk_tap_dance_action_t tap_dance_actions[] = {
[CTRL_TO12] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ctrlto12_finished, ctrlto12_reset),
[SHIFT_TO13] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, shiftto13_finished, shiftto13_reset),
[ALT_TO11] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, altto11_finished, altto11_reset)
[ALT_TO11] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, altto11_finished, altto11_reset),
};
/* Debugging functions */
@@ -342,10 +403,32 @@ void keyboard_post_init_user(void) {
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
// If console is enabled, it will print the matrix position and status of each key pressed
// #ifdef CONSOLE_ENABLE
// uprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed);
// #endif
return true;
// If console is enabled, it will print the matrix position and status of each key pressed
// #ifdef CONSOLE_ENABLE
// uprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed);
// #endif
switch (keycode) {
case MS_WH_DOWN:
if (record->event.pressed) {
SEND_STRING(SS_TAP(X_MS_WH_DOWN));
}
break;
case MS_WH_UP:
if (record->event.pressed) {
SEND_STRING(SS_TAP(X_MS_WH_UP));
}
break;
case MS_WH_LEFT:
if (record->event.pressed) {
SEND_STRING(SS_TAP(X_MS_WH_LEFT));
}
break;
case MS_WH_RIGHT:
if (record->event.pressed) {
SEND_STRING(SS_TAP(X_MS_WH_RIGHT));
}
break;
}
return true;
}

View File

@@ -1,7 +1,6 @@
# The nathanvercaemert ErgoDox EZ configuration
Centered around the home row and the use of mouse keys, this configuration focuses
on minimal finger movement. No key is more than one unit away from a finger on the home row.
Centered around the home row and the use of mouse keys, this configuration focuses on minimal finger movement. No key is more than one unit away from the home row.
## Layers
@@ -20,7 +19,9 @@ on minimal finger movement. No key is more than one unit away from a finger on t
navigation layers.
* Navigation Layers
* From the Mouse Layer, taps to the left home row navigate to scroll keys, arrow keys, and page keys.
* Notes on Acceleration
* Designated as "Slow" and "Fast" on the mouse layers (movement and scroll,) these keys can be held to allow for slow/precise or fast/efficient control.
Here is the image of my keymap:
![Default](https://i.imgur.com/kXywQIq.png)
![Imgur Image](https://i.imgur.com/x6VgH9Z.png)

View File

@@ -5,6 +5,5 @@ COMMAND_ENABLE = no
RGBLIGHT_ENABLE = no
TAP_DANCE_ENABLE=yes
#Beginning debugging process for LT() and permissive hold
# Debugging
CONSOLE_ENABLE = yes

View File

@@ -207,34 +207,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
//#define MIDI_TONE_KEYCODE_OCTAVES 1
/*
* HD44780 LCD Display Configuration
*/
/*
#define LCD_LINES 2 //< number of visible lines of the display
#define LCD_DISP_LENGTH 16 //< visibles characters per line of the display
#define LCD_IO_MODE 1 //< 0: memory mapped mode, 1: IO port mode
#if LCD_IO_MODE
#define LCD_PORT PORTB //< port for the LCD lines
#define LCD_DATA0_PORT LCD_PORT //< port for 4bit data bit 0
#define LCD_DATA1_PORT LCD_PORT //< port for 4bit data bit 1
#define LCD_DATA2_PORT LCD_PORT //< port for 4bit data bit 2
#define LCD_DATA3_PORT LCD_PORT //< port for 4bit data bit 3
#define LCD_DATA0_PIN 4 //< pin for 4bit data bit 0
#define LCD_DATA1_PIN 5 //< pin for 4bit data bit 1
#define LCD_DATA2_PIN 6 //< pin for 4bit data bit 2
#define LCD_DATA3_PIN 7 //< pin for 4bit data bit 3
#define LCD_RS_PORT LCD_PORT //< port for RS line
#define LCD_RS_PIN 3 //< pin for RS line
#define LCD_RW_PORT LCD_PORT //< port for RW line
#define LCD_RW_PIN 2 //< pin for RW line
#define LCD_E_PORT LCD_PORT //< port for Enable line
#define LCD_E_PIN 1 //< pin for Enable line
#endif
*/
/* Bootmagic Lite key configuration */
// #define BOOTMAGIC_LITE_ROW 0
// #define BOOTMAGIC_LITE_COLUMN 0

View File

@@ -30,4 +30,3 @@ UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)

View File

@@ -29,4 +29,3 @@ MIDI_ENABLE = no # MIDI support
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
HD44780_ENABLE = no # Enable support for HD44780 based LCDs

View File

@@ -213,30 +213,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
//#define MIDI_TONE_KEYCODE_OCTAVES 1
/*
* HD44780 LCD Display Configuration
*/
/*
#define LCD_LINES 2 //< number of visible lines of the display
#define LCD_DISP_LENGTH 16 //< visibles characters per line of the display
#define LCD_IO_MODE 1 //< 0: memory mapped mode, 1: IO port mode
#if LCD_IO_MODE
#define LCD_PORT PORTB //< port for the LCD lines
#define LCD_DATA0_PORT LCD_PORT //< port for 4bit data bit 0
#define LCD_DATA1_PORT LCD_PORT //< port for 4bit data bit 1
#define LCD_DATA2_PORT LCD_PORT //< port for 4bit data bit 2
#define LCD_DATA3_PORT LCD_PORT //< port for 4bit data bit 3
#define LCD_DATA0_PIN 4 //< pin for 4bit data bit 0
#define LCD_DATA1_PIN 5 //< pin for 4bit data bit 1
#define LCD_DATA2_PIN 6 //< pin for 4bit data bit 2
#define LCD_DATA3_PIN 7 //< pin for 4bit data bit 3
#define LCD_RS_PORT LCD_PORT //< port for RS line
#define LCD_RS_PIN 3 //< pin for RS line
#define LCD_RW_PORT LCD_PORT //< port for RW line
#define LCD_RW_PIN 2 //< pin for RW line
#define LCD_E_PORT LCD_PORT //< port for Enable line
#define LCD_E_PIN 1 //< pin for Enable line
#endif
*/

View File

@@ -33,6 +33,5 @@ UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
HD44780_ENABLE = no # Enable support for HD44780 based LCDs
CUSTOM_MATRIX = lite

View File

@@ -17,4 +17,3 @@ UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
HD44780_ENABLE = no # Enable support for HD44780 based LCDs

View File

@@ -33,4 +33,3 @@ UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
HD44780_ENABLE = no # Enable support for HD44780 based LCDs

View File

@@ -18,7 +18,6 @@ UNICODEMAP_ENABLE = no # Enable extended unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
HD44780_ENABLE = no # Enable support for HD44780 based LCDs
#VARIABLE_TRACE = no # Use this to debug changes to variable values
API_SYSEX_ENABLE = no # This enables using the Quantum SYSEX API to send strings
KEY_LOCK_ENABLE = no # This enables key lock

View File

@@ -33,4 +33,3 @@ UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
HD44780_ENABLE = no # Enable support for HD44780 based LCDs

View File

@@ -211,34 +211,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
//#define MIDI_TONE_KEYCODE_OCTAVES 1
/*
* HD44780 LCD Display Configuration
*/
/*
#define LCD_LINES 2 //< number of visible lines of the display
#define LCD_DISP_LENGTH 16 //< visibles characters per line of the display
#define LCD_IO_MODE 1 //< 0: memory mapped mode, 1: IO port mode
#if LCD_IO_MODE
#define LCD_PORT PORTB //< port for the LCD lines
#define LCD_DATA0_PORT LCD_PORT //< port for 4bit data bit 0
#define LCD_DATA1_PORT LCD_PORT //< port for 4bit data bit 1
#define LCD_DATA2_PORT LCD_PORT //< port for 4bit data bit 2
#define LCD_DATA3_PORT LCD_PORT //< port for 4bit data bit 3
#define LCD_DATA0_PIN 4 //< pin for 4bit data bit 0
#define LCD_DATA1_PIN 5 //< pin for 4bit data bit 1
#define LCD_DATA2_PIN 6 //< pin for 4bit data bit 2
#define LCD_DATA3_PIN 7 //< pin for 4bit data bit 3
#define LCD_RS_PORT LCD_PORT //< port for RS line
#define LCD_RS_PIN 3 //< pin for RS line
#define LCD_RW_PORT LCD_PORT //< port for RW line
#define LCD_RW_PIN 2 //< pin for RW line
#define LCD_E_PORT LCD_PORT //< port for Enable line
#define LCD_E_PIN 1 //< pin for Enable line
#endif
*/
/* 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