Compare commits

...

467 Commits

Author SHA1 Message Date
James Young
26eef35f07 2020 February 29 Breaking Changes Update (#8064) 2020-02-29 11:59:30 -08:00
James Young
85041ff05b Update Breaking Changes checklist 2020-02-27 12:03:30 -08:00
James Young
7eab5ad60f Update Breaking Changes timeline
I've been working from one timeline while the docs said something different.
2020-02-27 11:17:23 -08:00
James Young
ae46e6ace9 Fix MCU rule for Wete (#8254)
Including the `xB` suffix prevents qmk_compiler (and thus QMK Configurator) from compiling firmware for the Wete.

Rolling this change back until we work out a long-term solution for the suffixes.
2020-02-27 20:40:31 +11:00
Nick Brassel
444fd3b1cc Add support for delays in send_string. (#8244) 2020-02-27 20:38:19 +11:00
Brandon Schlack
e18be69104 Add community layout support to KBD67 MKIIRGB v2 (#8249) 2020-02-27 13:19:34 +11:00
Mikkel Jeppesen
4667bc554e Fixed OS detection such that OSX doesn't take over the world (#8248) 2020-02-26 10:12:13 +01:00
holtenc
d52cd8886c [Keyboard] Add Prime_EXL Plus to handwired (#8238)
* Add VIA support for Prime_L

* Update keyboards/primekb/prime_l/v1/config.h

* Add prime_exl_plus keyboard

* Temporary removal of prime_exl_plus

* Add Prime_EXL Plus, including VIA support

* Update keyboards/handwired/prime_exl_plus/readme.md

* Update keyboards/handwired/prime_exl_plus/readme.md

* Update keyboards/handwired/prime_exl_plus/readme.md

* Update keyboards/handwired/prime_exl_plus/rules.mk

* Update keyboards/handwired/prime_exl_plus/info.json

* Update keyboards/handwired/prime_exl_plus/info.json

* Update keyboards/handwired/prime_exl_plus/info.json

* Update keymap.c

* correct spacing of keymaps and layout macro. move indicator logic from user space to keyboard space

* further corrections to keymaps and layout macro.

* Update keyboards/handwired/prime_exl_plus/prime_exl_plus.c

* Update keyboards/handwired/prime_exl_plus/prime_exl_plus.c

* Update keyboards/handwired/prime_exl_plus/prime_exl_plus.c

* Update keyboards/handwired/prime_exl_plus/prime_exl_plus.c

* Update prime_exl_plus.c

* small edit to prime_exl_plus.c
2020-02-25 13:21:59 -08:00
QMK Bot
61b71320f7 format code according to conventions [skip ci] 2020-02-25 18:57:18 +00:00
ridingqwerty
b949343b78 New feature: PERMISSIVE_HOLD_PER_KEY (#7994)
* Implement 'PERMISSIVE_HOLD_PER_KEY'

* Document 'PERMISSIVE_HOLD_PER_KEY'

Co-authored-by: GeorgeKoenig <35542036+GeorgeKoenig@users.noreply.github.com>
2020-02-25 13:25:52 -05:00
Joel Challis
f6111d49bb Split - Avoid race condition during matrix_init_quantum (#8235)
* Avoid race condition during matrix_init_quantum

* spelling is hard
2020-02-25 14:10:04 +00:00
Joel Challis
891d28a379 Acheron VIA support (#8204)
* Update acheron USB IDs

* Add shark via keymap

* Update austin via keymap

* Fix eeprom build error

* 3 layers fit
2020-02-25 11:28:07 +00:00
Ryan
bb8d4b4d23 send_unicode_string(): Add support for code points > 0xFFFF (#8236) 2020-02-25 12:54:51 +11:00
Ramon Imbao
93c5307fd6 [Keyboard] Add Wete (#8229)
* [Keyboard] Add Wete

* Fix width and height in Wete info.json

* Use default board files, core backlight, and disable RTC

* Disable I2C, SPI. Minor corrections

* Keymap typo update

* Add LAYOUT_all to info.json

* Remove extra spaces in README, delete matrix_*_kb functions

* Fix layout errors in wete.h, and some minor corrections

* Actually fix LAYOUT_all in info.json
2020-02-24 17:36:30 -08:00
Ryan
088b64ab3d Improvements to extrakey HID descriptors (#8156) 2020-02-25 12:18:11 +11:00
MechMerlin
ef8878fba5 Hineybush h87a lock indicators (#8237)
* move lighting code from VIA into the keyboard's .c file so that every keymap can access it

* after some serious conversations with default and wkl, they agreed to let me modify their keymaps. They weren't too happy
2020-02-24 12:04:40 -08:00
holtenc
f673c965ba Add VIA support for Prime_L (#8233)
* Add VIA support for Prime_L

* Update keyboards/primekb/prime_l/v1/config.h

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

* Add prime_exl_plus keyboard

* Temporary removal of prime_exl_plus

Co-authored-by: Drashna Jaelre <drashna@live.com>
2020-02-24 14:19:27 +00:00
Josh Johnson
a2c0c1479c Hub16 - Bug removal + clean up code (#8227)
* bugfixes + cleaned up code

* typo

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

Co-Authored-By: Ryan <fauxpark@gmail.com>

Co-authored-by: Ryan <fauxpark@gmail.com>
2020-02-24 14:14:09 +00:00
ai03
20e1c8c571 [Keyboard] ai03 Equinox (#8224)
Re-attempt to add Equinox with newer Via changes

* Add nox

* Tweak based on previous pullrequests

* Add necessary descriptions

* Modernize Via config

* Modernize old files with massive blocks of unneeded options

* Fix missing bootmagic

* Update keyboards/ai03/equinox/equinox.h

* Update keyboards/ai03/equinox/keymaps/default/keymap.c

* Update keyboards/ai03/equinox/keymaps/via/keymap.c

* Update keyboards/ai03/equinox/keymaps/via/readme.md

* Update keyboards/ai03/equinox/readme.md

* Update keyboards/ai03/equinox/readme.md

* Update keyboards/ai03/equinox/readme.md

* Update keyboards/ai03/equinox/info.json

* Update keyboards/ai03/equinox/keymaps/default/keymap.c

* Update keyboards/ai03/equinox/keymaps/default/keymap.c

* Update keyboards/ai03/equinox/keymaps/proto_via/keymap.c

* Update keyboards/ai03/equinox/keymaps/proto_via/keymap.c

* Update keyboards/ai03/equinox/keymaps/proto_via/keymap.c

* Update keyboards/ai03/equinox/keymaps/proto_via/keymap.c

* Update keyboards/ai03/equinox/keymaps/via/keymap.c

* Update keyboards/ai03/equinox/keymaps/via/keymap.c

* Update keyboards/ai03/equinox/keymaps/via/keymap.c

* Fix indents

* Update keyboards/ai03/equinox/keymaps/proto_via/rules.mk

* Update keyboards/ai03/equinox/rules.mk
2020-02-23 21:18:14 -08:00
carlxia
40f7981395 [Keyboard] Add zfrontier/big_switch (#8205)
* add zfrontier/big_switch

* Update keyboards/zfrontier/big_switch/config.h

Co-Authored-By: Ryan <fauxpark@gmail.com>

* Update keyboards/zfrontier/big_switch/config.h

Co-Authored-By: Ryan <fauxpark@gmail.com>

* Update keyboards/zfrontier/big_switch/keymaps/longtap/keymap.c

Co-Authored-By: Ryan <fauxpark@gmail.com>

* add overriding keymap makefile

* Update keyboards/zfrontier/big_switch/keymaps/longtap/keymap.c

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

* Update keyboards/zfrontier/big_switch/keymaps/default/keymap.c

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

* remove redundant defines

* taplong no longer needed

Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2020-02-24 14:04:26 +11:00
yiancar
156c9c4ec0 Gingham Update (#8225) 2020-02-24 11:25:18 +11:00
Ryan
371ff9dd6f A proper send_string() for the Unicode feature (#8155) 2020-02-24 10:27:25 +11:00
Nick Brassel
716c29881c Rollback PR #7967 in preference of fixing I2C start/stop properly, in a followup PR. (#8173) 2020-02-24 10:08:00 +11:00
Joel Challis
f76f9c7d2a Add mouse support to SEND_STRING (#8223)
* Add mouse support to SEND_STRING

* add short forms
2020-02-23 14:03:01 -08:00
Jez Cope
530c997638 Add link to "Useful functions" in macro docs (#7446)
* Add link to "Useful functions" in macro docs

Help people find additional features they can activate within a macro

* Update docs/feature_macros.md

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

Co-authored-by: skullydazed <skullydazed@users.noreply.github.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2020-02-23 12:50:11 -08:00
Akaash Suresh
b353028ea5 New functionality for cformat (#7893)
Fixing complexity

remove lambda

PR review fixes #1

Removing unneccesary string substitution

Handle -a and specified files

Complexity rewrite, use pathlib
2020-02-22 20:57:19 -08:00
yiancar
eb9c2429c6 Update main.c (#8198) 2020-02-22 10:10:41 -05:00
QMK Bot
1327208449 format code according to conventions [skip ci] 2020-02-22 03:41:27 +00:00
Nick Winans
d99404388f Fix QWIIC OLED for AVR (#7769)
* Fix QWIIC OLED for AVR

* Change missed width * width to width * height

* Fix typo in comment

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Fix last incorrect uses of LCDWIDTH

Co-authored-by: Ryan <fauxpark@gmail.com>
2020-02-22 14:11:25 +11:00
MechMerlin
3157f5f436 VIA Support: KBD75 rev1/rev2 (#8214)
* add a VIA keymap for kbd75

* rev2 is a completely different pcb allowing a NEW layout, setting this to have a different product id so users don't get confused when they're able to enable numpad layout on rev1 VIA

* Update keyboards/kbdfans/kbd75/rev1/config.h

Co-Authored-By: Joel Challis <git@zvecr.com>

* Update keyboards/kbdfans/kbd75/rev2/config.h

Co-Authored-By: Joel Challis <git@zvecr.com>

Co-authored-by: Joel Challis <git@zvecr.com>
2020-02-21 18:21:02 +00:00
Andrew Kannan
8d11359886 Update TMOv2 for new key (#7759)
* Update TMOv2 for new keymap

* Update based on PR changes
2020-02-21 17:22:58 +00:00
Elisiano Petrini
a4af41cb13 Added custom keymap for preonic (#7548)
* Added custom keymap

* Update keyboards/preonic/keymaps/elisiano/keymap.c

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Address PR comments and added CTL_T(KC_ESC) on other layouts as well

Co-authored-by: Ryan <fauxpark@gmail.com>
2020-02-21 11:16:39 -05:00
Ryan
032fbf3f24 Add Danish keymap and sendstring LUT (#8218) 2020-02-21 14:40:28 +01:00
QMK Bot
a7d859dab8 format code according to conventions [skip ci] 2020-02-21 11:04:05 +00:00
Drashna Jaelre
1751c3cc25 uart.c fix from TMK (#7628)
* uart.c fix from TMK

Backport from tmk/tmk_keyboard@c41e48a0ab

* Avoid deadlock when uart.c is usind in ISR

Backport from tmk/tmk_keyboard@55443fabb7
2020-02-21 21:32:30 +11:00
Andrew Kannan
67ee050a0e S75 Encoder Fixes (#7758)
* S75 Encoder Fixes

* Flip encoder pins vs using setting
2020-02-21 21:25:17 +11:00
Ryan
562482c234 Add Turkish keymap aliases and sendstring LUT (#7676)
* Add Turkish keymap aliases and sendstring LUT

* Split into F and Q layouts
2020-02-21 18:21:38 +11:00
Ryan
66d7fc34b2 Add Arm Teensys to mcu_selection.mk (#8026)
* Add Arm Teensys to mcu_selection.mk

* Roll back halfkeyboard keymap changes

* Remove extra newline
2020-02-21 17:12:15 +11:00
swanmatch
81423cc817 [New keyboard]silverbullet44 (#7950)
* make silverbullet44

* comment edit

* venderID

* Fix parentheses in macros, and in general clean up quantum.h (#5021)

* Fix up GPIO macros

* Fix up send string macros

`string` arguments must not be parenthesized

* Fix up miscellaneous macros

* Make indentation uniform (4 spaces)

* Make #ifdef vs #if defined usage consistent

* Reorder standard includes

* Revert indentation changes as per review comments

* Revert #if defined(__AVR__) → #ifdef __AVR__ change

* Change 2 space indent to 4 spaces on a couple of lines

* Replace include guard with #pragma once

* alt+tab

* copy from master:silverbullet44

* adjust for pull request

* clang-format

* create info.json

* Delete new_project.sh

* Update keyboards/silverbullet44/keymaps/default/config.h

Co-Authored-By: Max Rumpf <max.rumpf1998@gmail.com>

* Update keyboards/silverbullet44/silverbullet44.c

Co-Authored-By: Max Rumpf <max.rumpf1998@gmail.com>

* Update keyboards/silverbullet44/silverbullet44.h

Co-Authored-By: Max Rumpf <max.rumpf1998@gmail.com>

* Apply suggestions from Maxr1998

* format default keymap

* Apply suggestions from Maxr1998 (#2)

* Apply suggestions from fauxpark

* fix readme.md

* Apply suggestion from Maxr1998. (custom_keycode to MO(_ADJUST))

* I became a tricky! Hahaha!!

* Add original keymap made by FKML

* deleated at config.h

* Changed Copyright

* Delete
// Defines the keycodes used by our macros in process_record_user
//enum custom_keycodes {
//  QMKBEST = SAFE_RANGE,
//  QMKURL
//};

* Delete bool alt_pressed = false;

* Delete ADJUST

* Delete /

* Delete void matrix_scan_user(void) {

}

void led_set_user(uint8_t usb_led) {

}

* Change Copyright's year.

* Delete adjust

* Delete adjust

* Delete adjust

* 列挙型に変更

* Enclose  keymap with ```.

* Delete
#define _______ KC_TRNS
#define XXXXXXX KC_NO

* Fix indentation.

* Delete some rows.

* Aligned columns of ''readme.md''.

* I got god's keymap...hahaha:)

* Update keyboards/silverbullet44/readme.md

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/silverbullet44/rules.mk

Co-Authored-By: fauxpark <fauxpark@gmail.com>

Co-authored-by: Konstantin Đorđević <vomindoraan@gmail.com>
Co-authored-by: Max Rumpf <max.rumpf1998@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2020-02-21 16:59:36 +11:00
Joel Challis
7707724dc4 Allow 30us matrix delay to be keyboard/user overridable (#8216)
* Allow 30us matrix delay to be configurable via define

* Move wait logic to matrix_common

* Move wait logic to matrix_common - fix wait includes
2020-02-21 14:49:33 +11:00
holtenc
42d6270f28 Merge /prime_l and /prime_l_v2 (#8194)
* correct indicator light states.

function of indicator lights was inverted. these changes correct that.

* flesh out keymaps pre production

* Enable extrakey in rules

* Prime_BLE initial commit

* Initial commit for Prime_L V2

* Update info.json

correct key spacing.

* update copyright

* Update readme.md

* Inital commit

* updates before PR into QMK master

* Drop Prime_EXL Plus from PR. Make requested changes to Prime_L V2

* Rename keyboards/primekb/Prime_l_v2/config.h to keyboards/primekb/prime_l_v2/config.h

* Rename keyboards/primekb/prime_l_v2/config.h to keyboards/primekb/Prime_l_v2/config.h

* remove directory Prime_l_v2

* re-submit with proper folder name.

* Restructure /primekb directory to merge /prime_l and /prime_l_v2

* made changes requested by QMK reviewers

* Update keyboards/primekb/prime_l/v1/readme.md

* Update keyboards/primekb/prime_l/v1/readme.md

* Update keyboards/primekb/prime_l/v1/readme.md
2020-02-19 11:12:11 -08:00
buzzlighter1
19c9141473 [Keymap] Keymap for XD75 with 7U spacebar EN-RU gamers (#8184)
* Create readme.md

* Create keymap.c

* Create config.h

* Create rules.mk

* Create layers.json

* Update keyboards/xd75/keymaps/buzzlighter1/keymap.c

* Update keyboards/xd75/keymaps/buzzlighter1/keymap.c

* Delete layers.json
2020-02-19 11:08:21 -08:00
asymy
c4dce3b5a7 Add VIA support for kbd8x mk2 (#8168)
* added via keymap for kbd8x mkii

* adding via to kbd8x mk2

* modified via kbd8x mk2 keymap

* enable LTO kbd8x mk2 via keymap

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

* removed backticks kbd8x mk2 via keymap

Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2020-02-20 00:50:25 +11:00
Jonathan Rascher
443bd98041 Move Grave/Tilde and some lesser used keys on my ergo boards (#8200)
* Move Grave/Tilde keys to more convenient places

* Move Ins/Del and some other keys around

* Update KLE images
2020-02-20 00:45:13 +11:00
Blake C. Lewis
419002a63b [Keyboard] KC60SE cleanup (#8171)
* coding style cleanup, enable/disable misconfigured/broken features

* add SCLN missing, compile with backlight PWM  warning

* edit json

* new info.json from KLE

* new info.json from KLE using QMK converter

* changes notes

* notes in pull request

* missing line in comments

* line wrap

* Update keyboards/kc60se/config.h

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

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

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

* Update keyboards/kc60se/readme.md

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

* Update keyboards/kc60se/readme.md

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

* Update keyboards/kc60se/readme.md

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

* Update keyboards/kc60se/kc60se.h

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

* Update keyboards/kc60se/rules.mk

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

* Update keyboards/kc60se/info.json

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

* Update keyboards/kc60se/readme.md

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

* Update keyboards/kc60se/readme.md

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

* Update keyboards/kc60se/readme.md

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

* comment back in rules.mk

* add  2 iso layouts and keymaps, 1 ansi kemap, compiled and tested

* keymaps and info

* Delete keymap.c

not ready, I need to get a few iso characters corrected

* Delete keymap.c

not ready, need to get a few iso character define correctly

* Update info.json

Bspc to Backspace

* no unicode

* gui_on and gui_off in readme

* Update keyboards/kc60se/rules.mk

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* remove is_command

* Update keyboards/kc60se/config.h

remove comment

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/kc60se/config.h

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/kc60se/readme.md

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* remove \\ in keymaps

* Update keyboards/kc60se/info.json

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

* Update keyboards/kc60se/info.json

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

* Update keyboards/kc60se/info.json

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

* Update keyboards/kc60se/info.json

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

* Update keyboards/kc60se/kc60se.h

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

* Update keyboards/kc60se/kc60se.h

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

* Update keyboards/kc60se/kc60se.h

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

* Update keyboards/kc60se/kc60se.h

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

* Update keyboards/kc60se/info.json

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

* set led pin b2 to output mode in matrix_init_kb(), toggle it in led_update_kb()

* Update config.h

I had commented  FORCE_NKRO out.. WHy did it com back?

Co-authored-by: Check your git settings! <chris@chris-laptop>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2020-02-19 01:12:52 -08:00
Mikkel Jeppesen
1566f0a997 Made windows driver installation accept y as All to allow CI (#8189)
* Made windows driver installation accept y as all to allow CI

* Fix some formatting

* Made None default
2020-02-18 12:05:20 -08:00
gtips
8225b172b9 Change the image photo of /keyboards/reviung41/readme.md (#8195)
* Update readme.md

Change the image photo of readme.md.
2020-02-17 20:34:23 -08:00
Jumail Mundekkat
0f500eb336 MxSS RGB Handler Touchup (#8105)
* Minor fix to improve front LED brightness config

* Updated rgblight.c
2020-02-18 14:05:22 +11:00
James Young
675ac4ac4a Centromere Configurator layout support and readme update (#8190)
* Add Configurator layout data

* update readme
2020-02-18 13:04:43 +11:00
Wilba
79d5903b6c dynamic keymap sanity check (#8181) 2020-02-17 17:54:13 -08:00
Joel Challis
a2081171de [keyboard] Austin (#8176)
* Add austin keyboard

* Update to use spi ws2812 driver

* remove rgb
2020-02-18 00:54:15 +00:00
skullydazed
c66930445f Use pathlib everywhere we can (#7872)
* Use pathlib everywhere we can

* Update lib/python/qmk/path.py

Co-Authored-By: Erovia <Erovia@users.noreply.github.com>

* Update lib/python/qmk/path.py

Co-Authored-By: Erovia <Erovia@users.noreply.github.com>

* Improvements based on @erovia's feedback

* rework qmk compile and qmk flash to use pathlib

* style

* Remove the subcommand_name argument from find_keyboard_keymap()

Co-authored-by: Erovia <Erovia@users.noreply.github.com>
2020-02-17 11:42:11 -08:00
shela
58724f8dcb [Docs] Update Japanese translation of cli.md (#8188) 2020-02-17 11:10:16 -08:00
Mike Tsao
e7e38fe80e Conform Gherkin defaults to original TMK keymap (#8186)
* Conform defaults to original TMK keymap

* fix swapped PGUP/PGDN (thanks noroadsleft)

* Another typo
2020-02-17 11:08:13 -08:00
Mikkel Jeppesen
0d3f0889c5 Fix os detection in OSX python 3.8 (#8187)
* Fix os detection in osx python 3.8

* oops
2020-02-17 12:18:49 +01:00
Jonas Avellana
79e6b78669 [Keymap] ninjonas keymap updates (#8170)
* [keymap] ninjonas keymap updates

* [refactor(kyria)] updating keymap for numpad layer to be transparent rather than ignores

* [keymap(lily58)] added numpad layer

* [keymap(crkbd)] added numpad layer activated through tapdance

* [fix(8170)] fixing code review changes requested by noroadsleft

* [fix(8170)] updating comments and .md files to use 'Cmd' instead of  and &#8984;
2020-02-17 01:30:03 -08:00
shela
5e79da9f32 [Docs] Update Japanese translation (#8129)
* Update Japanese translation

* Update Japanese translation

Co-Authored-By: Takeshi ISHII <2170248+mtei@users.noreply.github.com>
2020-02-17 01:03:49 -08:00
umi
bbe8180ad9 [Docs] add japanese translation (detail guide part) (#7722)
* add detail-guide part

* some updates for easy reading

* some updates for easy reading

* some updates for easy reading

* some updates for easy reading

* some updates for easy reading

* some updates for easy reading

* some updates for easy reading

* some updates for easy reading

* update file based on comment

* update file based on comment

* update file based on comment

* update git command in header

* update files based on comments, and update git command in header

* update file based on comment

* update file based on comment

* update file based on comment

* update file based on comment

* update file based on comment

* update file based on comment

* update file based on comment

* update file based on comment

Co-Authored-By: shela <shelaf@users.noreply.github.com>
Co-Authored-By: Takeshi ISHII <2170248+mtei@users.noreply.github.com>
2020-02-17 00:50:26 -08:00
James Young
eabdef3b4d [Keyboard] Add Panc40 by Panc Interactive (#8175)
* Add Panc40 by Panc Interactive

* Fix LAYOUT_sebright macro
2020-02-16 12:14:19 -08:00
fauxpark
e279b0a1a2 Clean up some remaining rules.mk bootloader stuff (#8165) 2020-02-16 11:45:42 -08:00
MechMerlin
de462761c9 [Keyboard] VIA Support: DZ60RGB ANSI V1/V2 (#8159)
* add dz60 via support

* use the correct DZ vendor id dervied from dz60

* differentiate product ID of v2 board
2020-02-16 11:42:03 -08:00
Joel Challis
17ff551275 Convert f072 backlight build error to message (#8177) 2020-02-16 11:37:21 -08:00
James Young
e208cb46ae [Keyboard] Correct Chidori Configurator layout data (#8180) 2020-02-16 11:29:36 -08:00
spe2
89c3355fd8 [Keyboard] Add configs for Centromere keyboard (#7467)
* Create readme.md

* Add files for Centromere

* Add keymap files for Centromere

* Add default keymap for Centromere

* Create keymap directory

* Add keymap files

* keymap directory cleanup

* Keyboard keymap directory cleanup

* Update keyboards/centromere/config.h

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

* Update keyboards/centromere/config.h

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

* Update keyboards/centromere/config.h

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

* Update keymap.c

* Update keymap.c

* Update centromere.c

Changed LED control to GPIO functions

* Update centromere.h

* Update rules.mk

* Update keyboards/centromere/rules.mk

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/centromere/rules.mk

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/centromere/rules.mk

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/centromere/rules.mk

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/centromere/keymaps/default_u2/keymap.c

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/centromere/rules.mk

Co-Authored-By: fauxpark <fauxpark@gmail.com>

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

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/centromere/centromere.h

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/centromere/centromere.h

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/centromere/centromere.h

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/centromere/rules.mk

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/centromere/centromere.c

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/centromere/centromere.h

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/centromere/centromere.h

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/centromere/rules.mk

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Apply suggestions from code review

Co-Authored-By: fauxpark <fauxpark@gmail.com>

Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: fauxpark <fauxpark@gmail.com>
2020-02-15 21:05:20 -08:00
skullY
58101cbb73 fix list_keymaps for python 3.5 2020-02-15 15:19:03 -08:00
Erovia
512261b343 Pathlib-ify qmk.keymap.list_keymaps() 2020-02-15 15:19:03 -08:00
Erovia
3db41817e0 Code cleanup, use pathlib, use pytest keyboard
Clean up checks and logics that are unnecessary due to MILC updates.
Use pathlib instead of os.path for readability.
Use the 'pytest' keyboard for the tests.
Add community layout for 'handwired/onekey/pytest' so we can test
community layouts.
2020-02-15 15:19:03 -08:00
Erovia
8eeab1112a Fix commandline parsing and flake8 findings, rebase
Fixed commandline and config parsing. Thx @xplusplus.
Rebased on master and fixed merge conflicts.
2020-02-15 15:19:03 -08:00
Erovia
988bfffca2 Major rework, no regex/globbing, more walking
Instead of using regexes and globbing to find the rules.mk and keymap.c
files, walk the directory tree to find them.
Also, do away with the concept of revision.
2020-02-15 15:19:03 -08:00
Erovia
8ff72d9517 Fix merging community and base keymaps 2020-02-15 15:19:03 -08:00
Erovia
4445e0a459 Return only the unique keymaps 2020-02-15 15:19:03 -08:00
Erovia
3ed1223678 Drop bs4 dependency, update docs, minor improvements 2020-02-15 15:19:03 -08:00
Erovia
d257a98cb8 Fix regex for parsing rules.mk files
I don't know why it couldn't put it together before... ¯\_(ツ)_/¯
2020-02-15 15:19:03 -08:00
Erovia
f8002828ca Add test for list_keymaps 2020-02-15 15:19:03 -08:00
Erovia
26f53d38d9 Another major refactoring, add documentation
Move all useful functions to the qmk module and use the cli subcommand
as a wrapper around it.
Add both inline comments and documentation.
2020-02-15 15:19:03 -08:00
Erovia
f96085af38 Fix output format 2020-02-15 15:19:03 -08:00
Erovia
e46cc2db8c Try to figure out revision, drop -rv/--revision argument 2020-02-15 15:19:03 -08:00
Erovia
c3b168e6fd Fix help message. 2020-02-15 15:19:03 -08:00
Erovia
62c1bcba71 Get all buildable keymaps for each revision
The command now return all keymaps that's buildable for a
keyboard/revision. If the base directory of a keyboard does not contain
a 'rules.mk' file, nothing is returned. If the base directory contains a
'keymaps' directory, those keycaps will be returned for every revision.
2020-02-15 15:19:03 -08:00
Erovia
057c7d0ffe Major update to work better with revisions
Find the community keymaps supported by each revision.
2020-02-15 15:19:03 -08:00
Erovia
1d3271999a Add bs4 to requirements.txt
UnicodeDammit is needed from bs4 for reading files.
2020-02-15 15:19:03 -08:00
Erovia
409c610543 CLI: add support for list_keymaps
List all the available keymaps for a given keyboard
2020-02-15 15:19:03 -08:00
morbetter
348266bd5b Adding VIA support for 40percentclub/luddite (#8158)
* Adding VIA support for 40percentclub/luddite

* Update config.h

* Update rules.mk

* Delete config.h

config.h was created to override the "default" of RGBLED_NUM 8
deleting the file to keep with defaults

* Removing block and comment as suggested

* Update PRODUCT_ID

Changing from:

 #define PRODUCT_ID      0x0A0C 

To:

 #define PRODUCT_ID      0x4C55 // "LU"

* Changing Vendor ID

Changing Vendor ID from:
#define VENDOR_ID       0xFEED
To:
#define VENDOR_ID       0x3430 // "40"
2020-02-14 11:31:48 -08:00
Yan-Fa Li
eb1f99c5f9 [keymap] Update audio controls on community (#8163)
* Update audio controls on community

* Add rules for various boards

* TKL support
2020-02-14 11:03:35 -08:00
James Young
4eed0331bf Just60 Configurator layout support and thinxer keymap (#7761)
* Just60 Configurator layout support

* adds thinxer keymap, which is the default keymap with QMK DFU bootloader
2020-02-14 00:42:57 -08:00
Brandon Schlack
66177aa5e0 Add community layout support to Mysterium (#8164) 2020-02-13 22:22:30 -08:00
fauxpark
ac0947c9e8 Convert two handwired default keymaps to Dynamic Macro feature (#8166) 2020-02-13 22:20:18 -08:00
Morton Jonuschat
806cd392e7 [osx_neo2] Bugfixes and improvements to Ergodox macOS Neo2 keymap (#8154)
* Use TAPPING_TERM constant (and redefine value to 200ms)
* change TAPPING_TOGGLE to 2 to require two taps to lock in layer 4
* add support for Shift-Command 3/4/5 key combinations that are used in
  macOS Catalina
* avoid false positive tap detecion for RMOD3 when the whole sequence of
  pressing RMOD3, tapping another key and releasing RMOD3 took less than
  TAPPING_TERM milliseconds.
* replace SEND_STRING with tap_code()/tap_code16(), saving ~860 bytes in
  compiled firmware size.
2020-02-14 03:30:32 +00:00
Keelhauler
9241d11dc5 [Keymap] Add personal keymap (#7338)
* Copy default config
* Copy and edit Preonic keymap layers
* Update README
2020-02-13 15:35:53 -05:00
QMK Bot
31aadc8725 format code according to conventions [skip ci] 2020-02-13 20:09:39 +00:00
Joel Challis
014ad1d747 Fix RESET keycode on some STM32F072 keyboards (#8134)
* Add f072 board files with 'enter_bootloader_mode_if_requested' support

* rename default f072 board file to GENERIC_STM32_F072XB

* Remove board files

* Add bootloader def

* Update generic f072 board paths

* Revert wrong deletion
2020-02-13 19:39:22 +00:00
fauxpark
1a77abfe64 Define backlight pin for Quefrency Rev2 (#8141) 2020-02-13 19:36:21 +00:00
Joel Challis
667b29b77c Align split_common/matrix.c with matrix.c (#8153) 2020-02-12 11:54:05 +01:00
QMK Bot
7740470a94 format code according to conventions [skip ci] 2020-02-12 06:50:23 +00:00
fauxpark
eaf32621aa Align VUSB HID descriptors with LUFA/ChibiOS (#7675)
* Align VUSB HID descriptors with LUFA/ChibiOS

* Wrap send_system and send_consumer in ifdefs too

* Offset system usages to match LUFA/ChibiOS
2020-02-12 17:19:39 +11:00
Rys Sommefeldt
f318d6fffc VIA support for the Think6.5 (#8118)
* VIA support for Think6.5

* VIA support for Think6.5 Hotswap

* VIA works better with separate layout options

* Remove the colours used to help develop it in KLE

* Pay better attention to the JSON linter

* Update Think6.5 PRODUCT and remove VIA JSON defs
2020-02-12 15:33:29 +11:00
Rys Sommefeldt
177666cbc8 VIA support for Graystudio Space65 (#8126)
* VIA support for Graystudio Space65

* Update Space65 PRODUCT and remove VIA JSON def
2020-02-12 15:33:05 +11:00
Ted M Lin
9456832a3b Fix out of bound OLED font access (#8145)
* Fix out of bound OLED font access

The default font is 1344 bytes, or a total of 224 glyphs (each 6-bytes wide).
OLED_FONT_END defaults to 224, which if used will then index off the end of
the font array. So either the documentation or code is wrong.

Instead of figuring out the rewording of the documentation, just change
the OLED_FONT_END default value to 223, to match the documentation and code.

* Add static assert to check array size

Build bomb if the font array size doesn't match to the defines.
2020-02-11 21:38:20 +00:00
IFo Hancroft
78e060f55a VIA Support for the Idobo (ID75) (#8146)
* VIA Support for the Idobo (ID75)

* Implemented the requested PR changes

* Readme was pointing to the wrong board

* Fixed Product ID

* Fixed Manufacturer name

* Better Vendor ID

Using the two 8-bit ASCII values from the keyboard name.

* Removed Bootmagic Lite as enabled anyway by VIA
2020-02-11 12:44:09 -08:00
MechMerlin
c53d4ecf32 VIA Support: Duck Eagle V2 (#8133)
* add via keymap

* Update keyboards/duck/eagle_viper/v2/keymaps/via/keymap.c
2020-02-11 10:07:06 -08:00
ymzcdg
6a165c41cb [Docs] doc update zh-cn (#8147)
* update zh-cn translate

Timestamp was added at the end of the document, it can help me manage version easier.

* fix _summary.md to utf-8

* fix _summary.md with vscode
2020-02-11 10:05:23 -08:00
Jonathan Rascher
387c486e57 Rename Polaris Tsangan layout to 60_tsangan_hhkb and enable community layout support (#8144)
* Rename Polaris Tsangan layout to 60_tsangan_hhkb
2020-02-11 09:47:16 -08:00
a_p_u_r_o
a624c439a4 [Keyboard] Fixed inconsistent MATRIX_ROWS and MATRIX_COLS: wsk/gothic50 (#8150) 2020-02-11 15:02:18 +00:00
Joel Challis
fba9971555 Align max backlight level in docs (#8142) 2020-02-11 14:59:58 +00:00
Mikkel Jeppesen
310b2f1be4 use replace() over rename() to have cross-platform overwriting (#8148) 2020-02-11 10:37:15 +01:00
Jonathan Rascher
1fed214490 Tweak my TAPPING_TERM and be more futureproof (#8143)
* Explicitly undef things I override in keymaps

* Reduce TAPPING_TERM back to default
2020-02-11 03:11:09 +00:00
dnsnrk
f4c1e066ba [Keymap] User keymap for KBDfans KBD67 MKII RGB (hot-swap) (#7697)
* initial custom keymap

* initial code for caps lock LED

* added debounce overrides

* override caps lock handler

* finished up on CAPS LOCK LED customization

* lowered debounce

* layer lightning fx

* Added layer tap-toggle

* reformatting

* refined keymap

* copyright and more clean-up

* increased DEBOUNCE

* initial custom keymap

* initial code for caps lock LED

* added debounce overrides

* override caps lock handler

* finished up on CAPS LOCK LED customization

* lowered debounce

* layer lightning fx

* Added layer tap-toggle

* reformatting

* refined keymap

* copyright and more clean-up

* increased DEBOUNCE

* added readme and some more clean-up

* incorporated pull request feedback
2020-02-10 18:05:25 -08:00
a_p_u_r_o
4b7d46ced0 [Keyboard] Use DIRECT_PINS instead of empty MATRIX_ROW_PINS: sixshooter (#8130)
* [Keyboard] Use DIRECT_PINS instead of empty MATRIX_ROW_PINS: sixshooter

* [Keyboard] Reform the matrix into 2x3: sixshooter
2020-02-10 17:22:37 -08:00
James Young
cabe4dfa72 [Keyboard] VIA Support for Boardwalk (#8124)
* initial commit of VIA Support

* update PRODUCT (and MANUFACTURER) per VIA docs

Reference: https://caniusevia.com/docs/configuring_qmk#change-product

Updated MANUFACTURER so it matches what the PRODUCT says.

* enable Link Time Optimization per mechmerlin

* revert change to USB Product Name

* add two empty layers to via keymap

VIA keymaps need four layers in flash.

* correct the layer indexes

Start from 0, not 1.
2020-02-10 17:14:19 -08:00
Joel Challis
5279571e41 Remove zvecr dz60 keymap (#8140) 2020-02-10 12:58:55 -08:00
Nick Brassel
9398c11b51 Remove tzarc's Luddite keymap. (#8139) 2020-02-10 12:52:40 -08:00
Josh Johnson
89c528e443 [Keyboard] Add support for Hub16 (#7794)
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-Authored-By: fauxpark <fauxpark@gmail.com>
2020-02-10 14:16:27 +01:00
ai03
8f333138f5 [Keyboard] Add support for Polaris (#8123)
* Drop in old files

* Make a blank template keyboard to refresh ancient files to latest config

* Update keymaps files to new format

* Remove chunks of config asked for removal in previous pullreqs

* Remove split pin option from config

* Update rules.mk to latest version

* Remove unused functions from polaris.c

* Add via keymap

* Build basic tsangan keymap; add QMK configurator info

* Remove temporary template

* Update keyboards/ai03/polaris/config.h

* Update keyboards/ai03/polaris/readme.md

* Update keyboards/ai03/polaris/readme.md

* Update keyboards/ai03/polaris/readme.md

* Update rules.mk

* Fixes as per pullreq

* Update keyboards/ai03/polaris/keymaps/default_ansi_tsangan/keymap.c

* Update keyboards/ai03/polaris/polaris.h

* Update keyboards/ai03/polaris/keymaps/default_ansi_tsangan/keymap.c

* Update keyboards/ai03/polaris/info.json

* Update keyboards/ai03/polaris/keymaps/testing/readme.md
2020-02-10 00:53:16 -08:00
madhogs
35c4dbe688 New iso layout and keymap for dz60 with 4th row all 1u (#7830)
* Added new iso layout and keymap for dz60 with all 4th row keys 1u in size
2020-02-09 23:53:12 -08:00
Ted Lin
c3200aa8fc Compile error if ONESHOT_TIMEOUT defined but oneshot disabled (#8100)
* Compile error if ONESHOT_TIMEOUT defined but oneshot disabled

When ONESHOT_TIMEOUT and NO_ACTION_ONESHOT are both defined, this code
fails to compile.

Wrap the one usage of ONESHOT_TIMEOUT that is inconsistent with the
rest so all usages are properly wrapped by a check of NO_ACTION_ONESHOT.

* Run file through clang-format

Co-authored-by: Ted M Lin <tedmlin@gmail.com>
2020-02-10 04:50:45 +00:00
fauxpark
6052aa499e Use FIRMWARE_FORMAT for "Checking file size" message (#8121) 2020-02-10 04:19:08 +11:00
nopunin10did
2fe288d01d [Keymap] Adding ergodash/rev1:nopunin10did (#8098)
* Adding ergodash/rev1:nopunin10did

* Update keyboards/ergodash/rev1/keymaps/nopunin10did/keymap.c

* Update keyboards/ergodash/rev1/keymaps/nopunin10did/keymap.c

* Update keyboards/ergodash/rev1/keymaps/nopunin10did/readme.md
2020-02-08 19:54:10 -08:00
Erovia
b6e23f974b Update the flash cli command to use the user config (#8125) 2020-02-08 23:58:28 +01:00
fauxpark
174a15d07d Remove PJRC USB stack 2020-02-08 11:07:43 -08:00
James Young
5ab0eeb513 [Keyboard] Boardwalk Refactor (#8122)
* refactor keymaps

Create one keymap for each layout macro.

* remove config.h for default keymap

There's nothing in it.

* update readme

- use the new list format
- use a smaller version of the keyboard photo (does the readme really need a 14MP image on it?)
2020-02-08 10:25:50 -08:00
Joel Challis
75e7018f72 CI: Add workflow for CLI testing (#7357)
Create GitHub Actions cli test workflow and remove travis runs of 'qmk pytest'
2020-02-08 13:43:55 +01:00
holtenc
8fe29f2784 Add Prime_L V2 and Prime_EXL Plus (#8111)
* correct indicator light states.

function of indicator lights was inverted. these changes correct that.

* flesh out keymaps pre production

* Enable extrakey in rules

* Prime_BLE initial commit

* Initial commit for Prime_L V2

* Update info.json

correct key spacing.

* update copyright

* Update readme.md

* Inital commit

* updates before PR into QMK master

* Drop Prime_EXL Plus from PR. Make requested changes to Prime_L V2

* Rename keyboards/primekb/Prime_l_v2/config.h to keyboards/primekb/prime_l_v2/config.h

* Rename keyboards/primekb/prime_l_v2/config.h to keyboards/primekb/Prime_l_v2/config.h

* remove directory Prime_l_v2

* re-submit with proper folder name.
2020-02-08 15:03:44 +11:00
worldspawn00
dd6f92541d [Keyboard] adding keyboard: neuron (#7980)
* neuron

* Update keyboards/walletburner/neuron/neuron.h

Co-Authored-By: ridingqwerty <george.g.koenig@gmail.com>

* Update keyboards/walletburner/neuron/neuron.h

Co-Authored-By: ridingqwerty <george.g.koenig@gmail.com>

* Update keyboards/walletburner/neuron/config.h

Co-Authored-By: ridingqwerty <george.g.koenig@gmail.com>

* Update keyboards/walletburner/neuron/config.h

Co-Authored-By: ridingqwerty <george.g.koenig@gmail.com>

* Update keyboards/walletburner/neuron/config.h

Co-Authored-By: ridingqwerty <george.g.koenig@gmail.com>

* Update keyboards/walletburner/neuron/rules.mk

Co-Authored-By: ridingqwerty <george.g.koenig@gmail.com>

* Update keyboards/walletburner/neuron/rules.mk

Co-Authored-By: ridingqwerty <george.g.koenig@gmail.com>

* Update keyboards/walletburner/neuron/rules.mk

Co-Authored-By: ridingqwerty <george.g.koenig@gmail.com>

* Update keyboards/walletburner/neuron/rules.mk

Co-Authored-By: ridingqwerty <george.g.koenig@gmail.com>

* Update keyboards/walletburner/neuron/rules.mk

Co-Authored-By: ridingqwerty <george.g.koenig@gmail.com>

* Update keyboards/walletburner/neuron/readme.md

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

* Update keyboards/walletburner/neuron/readme.md

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

* Update keyboards/walletburner/neuron/readme.md

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

* Committed review suggestions

* Corrected bootloader to use atmel-dfu

* One last tweak to correct MANUFACTURER

Co-authored-by: ridingqwerty <george.g.koenig@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2020-02-07 19:42:29 -08:00
worldspawn00
610cf729af [Keyboard] adding keyboard: pain27 (#7977)
* pain27

* Applied review suggestions

* Correct DEBOUNCE verbiage, remove .ini files

* Readme tweaks

Co-authored-by: ridingqwerty <george.g.koenig@gmail.com>
2020-02-07 19:42:03 -08:00
worldspawn00
96a4388c43 [Keyboard] adding keyboard: sl40 (#7978)
* sl40

* Amended with collaborator suggestions

Co-authored-by: ridingqwerty <george.g.koenig@gmail.com>
2020-02-07 19:39:44 -08:00
worldspawn00
a86a8a236a [Keyboard] adding keyboard: houndstooth (#7981)
* houndstooth

* Amended with collaborator suggestions

* LAYOUT fixup, left crud in keymap

* Fix missing comma in keymap.c

* Correct RGBLIGHT_ENABLE to no

Co-authored-by: ridingqwerty <george.g.koenig@gmail.com>
2020-02-07 19:38:20 -08:00
worldspawn00
f44a89ca77 [Keyboard] adding keyboard: kodachi50 (#7976)
* kodachi50

* Amendeded with collaborator suggestions

* Add a missing key to layer 2 top row

Co-authored-by: ridingqwerty <george.g.koenig@gmail.com>
2020-02-07 19:37:46 -08:00
worldspawn00
a1a88b8ac7 [Keyboard] adding keyboard: gothic70 (#7982)
* gothic70

* Update keyboards/wsk/gothic70/readme.md

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

* Update keyboards/wsk/gothic70/readme.md

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

* Update keyboards/wsk/gothic70/readme.md

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

* Update keyboards/wsk/gothic70/keymaps/default/keymap.c

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

* Update keyboards/wsk/gothic70/rules.mk

Co-Authored-By: ridingqwerty <george.g.koenig@gmail.com>

* Update keyboards/wsk/gothic70/rules.mk

Co-Authored-By: ridingqwerty <george.g.koenig@gmail.com>

* Update keyboards/wsk/gothic70/rules.mk

Co-Authored-By: ridingqwerty <george.g.koenig@gmail.com>

* Update keyboards/wsk/gothic70/rules.mk

Co-Authored-By: ridingqwerty <george.g.koenig@gmail.com>

* Update keyboards/wsk/gothic70/rules.mk

Co-Authored-By: ridingqwerty <george.g.koenig@gmail.com>

* Update keyboards/wsk/gothic70/rules.mk

Co-Authored-By: ridingqwerty <george.g.koenig@gmail.com>

* Update keyboards/wsk/gothic70/config.h

Co-Authored-By: ridingqwerty <george.g.koenig@gmail.com>

* Update keyboards/wsk/gothic70/keymaps/default/keymap.c

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

* Update keyboards/wsk/gothic70/keymaps/default/keymap.c

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

* Update keyboards/wsk/gothic70/keymaps/default/keymap.c

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

* Update keyboards/wsk/gothic70/keymaps/default/keymap.c

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

* Update keyboards/wsk/gothic70/keymaps/default/keymap.c

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

* Update keyboards/wsk/gothic70/keymaps/default/keymap.c

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

* Update keyboards/wsk/gothic70/config.h

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

* Update keyboards/wsk/gothic70/keymaps/default/keymap.c

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

* Update keyboards/wsk/gothic70/keymaps/default/keymap.c

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

* Update keyboards/wsk/gothic70/keymaps/default/keymap.c

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

* Committed review suggestions

* Small indicator LED layer function tweak

* Fixing layout for configurator

Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: ridingqwerty <george.g.koenig@gmail.com>
Co-authored-by: Mikkel Jeppesen <2756925+Duckle29@users.noreply.github.com>
2020-02-07 19:34:37 -08:00
worldspawn00
df029f9660 [Keyboard] adding keyboard: gothic50 (#7983)
* gothic50

* Update keyboards/wsk/gothic50/config.h

Co-Authored-By: ridingqwerty <george.g.koenig@gmail.com>

* Update keyboards/wsk/gothic50/config.h

Co-Authored-By: ridingqwerty <george.g.koenig@gmail.com>

* Update keyboards/wsk/gothic50/config.h

Co-Authored-By: ridingqwerty <george.g.koenig@gmail.com>

* Update keyboards/wsk/gothic50/config.h

Co-Authored-By: ridingqwerty <george.g.koenig@gmail.com>

* Update keyboards/wsk/gothic50/rules.mk

Co-Authored-By: ridingqwerty <george.g.koenig@gmail.com>

* Update keyboards/wsk/gothic50/rules.mk

Co-Authored-By: ridingqwerty <george.g.koenig@gmail.com>

* Update keyboards/wsk/gothic50/rules.mk

Co-Authored-By: ridingqwerty <george.g.koenig@gmail.com>

* Update keyboards/wsk/gothic50/rules.mk

Co-Authored-By: ridingqwerty <george.g.koenig@gmail.com>

* Update keyboards/wsk/gothic50/rules.mk

Co-Authored-By: ridingqwerty <george.g.koenig@gmail.com>

* Update keyboards/wsk/gothic50/keymaps/default/keymap.c

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

* Update keyboards/wsk/gothic50/readme.md

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

* Update keyboards/wsk/gothic50/readme.md

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

* Update keyboards/wsk/gothic50/readme.md

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

* Update keyboards/wsk/gothic50/rules.mk

Co-Authored-By: ridingqwerty <george.g.koenig@gmail.com>

* Updated with collaborator suggestions

* Fixing layout for configurator

Co-authored-by: ridingqwerty <george.g.koenig@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2020-02-07 19:32:14 -08:00
James Young
b62829031d [Keyboard] YMDK NP21: matrix and keymap refactor (#8112)
* YMDK NP21: matrix and keymap refactor

- refactored layout macros
  - LAYOUT_ortho_6x4 orients the keyboard with the USB port to the back instead of to the right
  - LAYOUT uses the previous sideways orientation (included for backwards compatibility)
- removed redundant includes from ymdk_np21.h
- added a readme for the default keymap

* add Configurator layout support
2020-02-07 19:15:35 -08:00
Mehmet Denizhan Erdem
43c0a9293e [Keymap] Added keymap for keebio/nyquist (#8108)
* my custom keymap for nyquist rev3

* Formatted keymap and added readme
2020-02-07 19:07:04 -08:00
Joel Challis
4962b743d2 [Keyboard] Port SPLIT_USB_DETECT to lily58 (#8107)
* remove unused files

* Port SPLIT_USB_DETECT to lily58
2020-02-07 19:03:51 -08:00
Max Rumpf
ea2fcb5b08 [Keymap] Phoebe/Maxr1998 keymap: enable space cadet with curly braces (#8096)
* Phoebe/Maxr1998 keymap: enable space cadet with curly braces

* Revert space cadet for left shift, open curly brace on right shift
2020-02-07 18:54:41 -08:00
Yasuhiro SHIMIZU
fd2ac4b4d5 [Keymap] add lily58 yshrsmz keymap (#8095)
* add lily58 yshrsmz keymap

* apply requested changes

* remove more backslashes

* remove more backslashes

* update rules.mk
2020-02-07 18:53:53 -08:00
esinlayo
7182e9a8ad [Keyboard] Remove i2c write command when reading columns on Ergodox EZ (#8092)
* Remove i2c write command when reading cols on Ergodox EZ

* Comment on mcp23018 address state during read_cols
2020-02-07 18:52:02 -08:00
fauxpark
3b1f29a5d6 [Keyboard] Misc tidyups for Chidori (#8091) 2020-02-07 18:50:42 -08:00
Alfred Maler
707c04b4ab [Keymap] Add users/alfrdmalr and switch to layouts (#8030)
* WIP do not merge

* first pass at custom preonic layout

* add auto shift and reset via leader key

* Update readme

* update copyright notice

* formatting changes

* fix: use MO instead of process_record_user

* added backslash and moved grave position

* remove extraneous 'j' characer in NUMPAD template

* update template formatting

* remove process_record_user

* swap "!" with "@"

* fix readme formatting

* update readme layout image

* restore settings layer

* add windows minimize sequence

* fix: switch to correct seq function for three-key sequence

* fix: missing semicolon

* refactor: move keymap to userspace and generic 5x12 layout

* add numlock to numpad layer

* add readme

* update readme formatting

* remove unused wrappers from layout keymap

* update readme title to reflect new location

* remove alfrdmalr directory from preonic/keymaps

* clean up user config
2020-02-07 18:42:04 -08:00
James Young
be05de6a3d XD84: Configurator bugfix for ISO layout (#8117)
* switch to debug linting

* move ISO Enter to its proper location
2020-02-07 18:16:44 -08:00
James Young
889eb51fb5 ZJ68: complete Configurator layout support (#8116)
Only LAYOUT_all had its layout data present; the data for LAYOUT_65_ansi and LAYOUT_65_ansi_split_bs was missing.
2020-02-07 18:09:55 -08:00
Cody Bender
e77188458f Add QMK Compile Context Sensitivity (#6884)
* Add context sensitive compile, without config check

* Initial full working state. Plan to refactor

* Refactor loop for simplicity, add comments

* Update docs/cli.md with qmk compile examples

* Simplify path for keyboard derivation

* Update path to use path.join instead of concat

* Refactor keyboard path, the skully way

* Add in keymap folder support

* Add /layouts compile support

* Update docs/cli.md with empty compile in layouts

* Add comments to compile.py

* Update docs for clarity, and fix compile error typo

* Fix config option compile

* Fix layout compile and failure mode

* Add rules.mk check

* Fix variable names for global config

* Add in_layout priority

* Remove default fallback in favor of throw, update docs

* Add keymap folder context

* Fix formatting

* Add os import

* Convert to create_make_command

* Fix Travis lint errors

* Remove blank line with whitespace

* Add blank lines for readability

* Remove unnecessary config logic

* Update Docs to add flash

Co-Authored-By: skullydazed <skullydazed@users.noreply.github.com>

* Shift config precedence to MILC

Co-authored-by: skullydazed <skullydazed@users.noreply.github.com>
2020-02-07 21:48:37 +01:00
Joel Challis
774cbbf879 Refactor ergo42 to use split_common (#7925)
* Initial refactor of ergo42 to split common

* Prevent fallthrough for DIODE_DIRECTION
2020-02-07 13:59:18 +00:00
Joel Challis
c93093569e Refactor mint60 to use split_common (#8084) 2020-02-07 13:58:55 +00:00
Marius Rugan
fb6f581157 jj4x4: README update (#7854)
* Updates README jj4x4

* Update keyboards/jj4x4/README.md

* Update keyboards/jj4x4/README.md

* Update keyboards/jj4x4/README.md

* Update keyboards/jj4x4/README.md

* Update keyboards/jj4x4/README.md
2020-02-07 02:13:53 -08:00
worldspawn00
e43d143ab0 [Keyboard] adding keyboard: tkl30 (#7979)
* tkl30

* Amended with collaborator suggestions

* s/DEBOUNCING_DELAY/DEBOUNCE/

* Used noroadsleft's PID suggestion

* Committed noroadsleft's keymap formatting and rules.mk suggestions

* LAYOUT formatting and readme suggestions
2020-02-06 21:28:08 -08:00
fauxpark
a73c38112d Move Grave Escape, Lock and Leader keycodes into their own sect… (#8093) 2020-02-07 15:54:14 +11:00
ridingqwerty
e3444084fb Committing fix to info.json for wsk/jerkin (#8110) 2020-02-06 21:58:16 -05:00
Ted M Lin
d84eb14b3a Use function for KEYCODE2 routines instead of macro. (#8101)
* Option to use function for KEYCODE2 routines.

Convert the KEYCODE2SYSTEM and KEYCODE2CONSUMER macros to functions,
defaulting to using the macros.  The function form allows the compiler
to optimize the switch statement itself, over the macro nested
ternaries.

To enable this feature, #define USE_KEYCODE2_FUNCTION.

Testing against a random selection of avr-based keyboards, this
increased available flash by ~500 bytes. For arm-based keyboards,
the available flash increased by ~400 bytes.

* Replace macro with function entirely.

As zvecr states, go bold and just commit to using the function instead
of the macro.

* Reformat whitespace now that functional review is done

Verified against clang-format output.
2020-02-07 12:53:43 +11:00
worldspawn00
fe814be287 [keyboard] adding keyboard: jerkin (#7975)
* jerkin

* Update config.h

* Apply suggestions from code review

Co-Authored-By: Drashna Jaelre <drashna@live.com>
Co-Authored-By: Akaash Suresh <casa.akaash@gmail.com>

* Update rules.mk

* Apply suggestions from code review

* Missing closing parenthesis in one of the suggestions.

* Finalize collaborator suggestions

* One final tweak to standardize MANUFACTURER

Co-authored-by: ridingqwerty <george.g.koenig@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Akaash Suresh <casa.akaash@gmail.com>
2020-02-06 10:55:55 -05:00
James Young
6a0e155afe Ergosaurus Configurator support bugfix (#8104)
Corrected the layout macro name in `info.json`.
2020-02-06 13:38:41 +00:00
James Young
917eebcfac Xelus Dawn60: layout macro update and Configurator layout support (#8102)
* fix layout macro and update keymaps

K2D switch position is actually physically on the top row, as the right half of a split Backspace.

* add QMK Configurator layout support
2020-02-06 13:33:43 +00:00
MechMerlin
de288adb97 VIA Support: 1upkeyboards 1up60rgb (#8097)
* add VIA keymap to 1up60rgb

* change VID to align with other 1up boards
2020-02-05 14:51:58 -08:00
plikki
78ae77f307 [Keymap] User keymap for AKB/Raine (#8081)
* Adding my keymap

Adding a personalized keymap to the Raine keyboard. This diffirentiates itself by being useble with nordic characters even when the bottom row has blockers. Also added ASCII art to help visualize what you are doing when programming the board.

* Update Readme.md

Ned image of the board

* Update Readme.md

Forgot a space in Readme

* Update Readme.md

And another missed space

* Update keymap.c

Renoved Definetion that is not used

* Update Readme.md

* Remove files for renaming

* Adding files after renaming

Was unable to get Girthub to push renamed files/folders. Therefore removeing and adding them again.
2020-02-05 12:42:22 -08:00
MechMerlin
b015c37922 VIA Support: KBD67 mkii v1/v2 (#8085)
* add the via keymap

* get an appropriate unused VID

* fix formatting up a bit

* Update keyboards/kbdfans/kbd67/mkiirgb/v1/config.h

* Update keyboards/kbdfans/kbd67/mkiirgb/v2/config.h
2020-02-05 12:34:08 -08:00
MechMerlin
ae7b208d32 fixup keymap for 65_ansi_blocker (#8099) 2020-02-05 18:29:52 +00:00
KamoNanban
9fe0c87e9a [Keyboard] manta60 (#8068)
* manta60_update

* Update config.h

* Update config.h

* Update config.h

* Fixed info and readme

* Fixed config.h

* Fixed rules.mk

* Fixed keymap.c

* Update keyboards/manta60/rules.mk

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

* Fixed keymap.c

* Fixed rules.mk

* Update rules.mk

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

Co-Authored-By: fauxpark <fauxpark@gmail.com>

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

Co-Authored-By: fauxpark <fauxpark@gmail.com>

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

Co-Authored-By: fauxpark <fauxpark@gmail.com>

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

Co-Authored-By: fauxpark <fauxpark@gmail.com>

Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: fauxpark <fauxpark@gmail.com>
2020-02-05 09:14:00 -08:00
mechlovin
b32a9a201d [Keyboard] add Infinity CE (#8067)
* add new pcb Inffinity CE

* update

* Update config.h

PID change, rgb version will be release

* Update config.h

* Update infinityce.c
2020-02-05 09:12:53 -08:00
Ibnu Daru Aji
fb980cf032 [Keyboard] Added Atreus Pro Micro variant (#8059)
* new alternative controller.

* following suggestions at qmk's 8059.

* forgot to replace some underscores and keycodes.

* following drashna's suggestions at qmk's 8059.

* following zvecr's suggestion in qmk's 8059.

* following noroadsleft's suggestion at qmk's 8059.
2020-02-05 08:53:28 -08:00
Daniel H Klein
d3286af398 Add Uni660 Keyboard (#8018)
* UniGo66 keyboard added

* UniGo66 keyboard added

* case correction of unigo66 files

* create sirius folder

* Update keyboards/sirius/unigo66/rules.mk

Co-Authored-By: danielhklein <danielklein@utexas.edu>

* Update keyboards/sirius/unigo66/keymaps/danielhklein/keymap.c

Co-Authored-By: danielhklein <danielklein@utexas.edu>

* Update keyboards/sirius/unigo66/keymaps/default/config.h

Co-Authored-By: danielhklein <danielklein@utexas.edu>

* Update keyboards/sirius/unigo66/keymaps/danielhklein/config.h

Co-Authored-By: danielhklein <danielklein@utexas.edu>

* debugging

* correct keymap to layout

* readme

* remove common config

* suggested changes to config.h

* default keymap cleanup

* bug fixes

* add uni660 keyboard

* remove zip

* remove redundant rules.mk

* remove redundant via keymap

* Update keyboards/sirius/uni660/config.h

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

* Update keyboards/sirius/uni660/config.h

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

* remove unnecessary functions

* fix if

* add back via keymap, remove old eeprom code

* Update keyboards/sirius/uni660/uni660.h

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/sirius/uni660/uni660.h

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/sirius/uni660/uni660.h

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/sirius/uni660/rules.mk

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/sirius/uni660/rules.mk

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* changes requested for qmk

* Update keyboards/sirius/uni660/rules.mk

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/sirius/uni660/rules.mk

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/sirius/uni660/rules.mk

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* debouncing and other minor changes

* Update keyboards/sirius/uni660/uni660.c

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/sirius/uni660/uni660.c

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/sirius/uni660/uni660.c

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/sirius/uni660/uni660.c

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/sirius/uni660/uni660.h

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/sirius/uni660/uni660.h

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/sirius/uni660/uni660.h

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/sirius/uni660/uni660.h

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/sirius/uni660/uni660.h

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/sirius/uni660/uni660.h

Co-Authored-By: fauxpark <fauxpark@gmail.com>

Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: fauxpark <fauxpark@gmail.com>
2020-02-05 16:30:31 +11:00
ENDO Katsuhiro
aed18a5ff3 [Keyboard] Add a new keyboard Chidori. (#7496)
* [Keyboard] Add a new keyboard Chidori.

* Update keyboards/chidori/info.json

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

* Update keyboards/chidori/chidori.h

* Update keyboards/chidori/keymaps/extended/keymap.c

* Update keyboards/chidori/keymaps/extended/keymap.c

* Update keyboards/chidori/keymaps/extended/keymap.c

* Update keyboards/chidori/keymaps/extended/keymap.c

* Update keyboards/chidori/keymaps/extended/keymap.c

* Update keyboards/chidori/keymaps/extended/keymap.c

* Update keyboards/chidori/keymaps/extended/keymap.c

* Update keyboards/chidori/readme.md

* Update keyboards/chidori/readme.md

* Update keyboards/chidori/readme.md

* Update keyboards/chidori/readme.md

* Update keyboards/chidori/rules.mk

* Update keyboards/chidori/rules.mk

* Update keyboards/chidori/rules.mk

* Update keyboards/chidori/rules.mk

* Update keyboards/chidori/rules.mk

* Update keyboards/chidori/rules.mk

* Update keyboards/chidori/rules.mk

* Update keyboards/chidori/rules.mk

* Update keyboards/chidori/rules.mk

* Update rules.mk

* Delete unnecesarry lines.

* Changes layer keys handing.
2020-02-04 20:47:59 -08:00
Joel Challis
307be48de9 Reduce SPLIT_USB_TIMEOUT by 500ms (#7637)
* Update SPLIT_USB_TIMEOUT -500ms

* Align keyboard level SPLIT_USB_TIMEOUT defaults

* Align keyboard level SPLIT_USB_TIMEOUT_POLL

* Review fixes
2020-02-04 19:37:04 -08:00
Joel Challis
a557a5b2c5 [Keyboard] Refactor deltasplit75 to use split_common (#8083)
* Refactor deltasplit75 to use split_common

* Refactor deltasplit75 to use split_common - small tidy up
2020-02-04 18:59:20 -08:00
MechMerlin
a6b0a74d95 Add RESET key for default keymap in Satisfaction 75 (#8088) 2020-02-05 13:51:09 +11:00
Joel Challis
393937b43f Relocate grave keycode processing (#8082)
* Relocate grave keycode processing

* Tidy up code

* Refactor grave -> grave_esc
2020-02-04 18:49:10 -08:00
fauxpark
efe8bd8e92 [Keyboard] LFKPad refactor (#8079) 2020-02-04 18:41:19 -08:00
fauxpark
74e3cad728 Remove entries for Minidox eep files from gitignore (#8077) 2020-02-04 18:30:57 -08:00
Drashna Jaelre
0010d0c45e Add Midi Endpoint task to ChibiOS main (#8071) 2020-02-04 18:28:47 -08:00
Jesse Leventhal
8a749a7a8e Encoder brush size (#8087)
* Added brush size to encoder knob as new keymap

* Encoder keymap added
2020-02-05 12:56:50 +11:00
ridingqwerty
964ed17716 ridingqwerty: userspace update (#8076)
* Userspace overhaul

* Remove testing directory

* Minorca keymap tweaks
2020-02-04 20:17:10 +01:00
Jonas Avellana
50554ca270 Ninjonas userspace (#8070)
* [keymap(kyria)] moved OLED & encoder implementation to separate classes

* [feat] created logic to cycle through hue wheel when starting keyboard

* [feat] created logic to cycle through hue wheel and return to user's default color

* [refactor] updating OLED layout for crkbd & lily58

* [refactor] updating OLED layout for crkbd & lily58

* [fix(8070)] updating encoder.c logic based off drashna's code review

* [refactor(8070)] added key to send  + Shift + M
2020-02-04 12:50:50 +11:00
MechMerlin
c6f389b527 Merlin's userspace updates (#8074) 2020-02-03 22:37:01 +01:00
skullydazed
5780c94423 Improve the functionality of qmk.questions (#8020)
* wip

* tested and working

* remove unused import

* Update lib/python/qmk/questions.py

Co-Authored-By: Erovia <Erovia@users.noreply.github.com>

* fix flake8 errors

Co-authored-by: Erovia <Erovia@users.noreply.github.com>
2020-02-03 09:04:58 -08:00
Mike Rix Wolfe
acef512730 [Keymap] Add User Keymap for FC660C (#8062)
* add my keymaps

* tri layer keymap

* update tri layer

* update tri layer

* cleaning up

* formatting

* move to correct location

* lily58: move caps off mod key in sublayer

* Update keyboards/lily58/keymaps/mikefightsbears/rules.mk

* Update keyboards/lily58/keymaps/mikefightsbears/rules.mk

* Update keyboards/lily58/keymaps/mikefightsbears/rules.mk

* Update keyboards/lily58/keymaps/mikefightsbears/rules.mk

* remove unnecessary trailing whacks

* remove unneeded file

* swap spacebar

* update code for comments in PR

* add fc660c keymap

* rm readme

* move layer key

* remove inconvenient alternate keys

* swap format

* add them media keys

* add rules mk

* swap caps and ctrl

* remove unneeded config

* use gesc instead of esc
2020-02-02 13:11:17 -08:00
QMK Bot
fa9c74c6a2 format code according to conventions [skip ci] 2020-02-02 20:47:40 +00:00
fauxpark
b2ce2f8a34 Dedupe extrakey report struct, and send functions in V-USB & LUFA (#7993)
* Dedupe extrakey report struct, and send functions in V-USB & LUFA

* Doc comment for consistency

* Wrap it in ifdef to prevent unused function error

* Do the same for ATSAM
2020-02-02 12:17:05 -08:00
Joel Challis
5b91c3e0a0 Fix cformat processing files within ignore folders (#8063) 2020-02-02 16:33:17 +00:00
fauxpark
1877736fa4 Update dirty submodule make message (#8065) 2020-02-02 13:24:29 +00:00
James Young
c096be3831 [Docs] future branch housekeeping 2020-02-01 21:36:59 -08:00
QMK Bot
4888a118c3 format code according to conventions [skip ci] 2020-02-02 02:40:30 +00:00
fauxpark
e036b94a21 Align ATSAM HID descriptors with LUFA/ChibiOS (#7651)
* Align ATSAM HID descriptors with LUFA/ChibiOS

* Don't hardcode raw endpoint size
2020-02-02 13:10:57 +11:00
QMK Bot
1a79f14e43 format code according to conventions [skip ci] 2020-02-01 09:46:34 +00:00
Pavel Župa
4e6d1ae0ea Fix timer_elapsed() overflow issue for STM32F103 and other ChibiOS boards (#7595)
* fixed strange space cadet timer owerflow on STM32F103

* Moved elapsed time fix to timer.c
2020-02-01 20:17:28 +11:00
James Young
1858c3ed11 Skog Lite: disable Console; update info.json (#8058)
* disable Console to save firmware space

* rules.mk templating

Add comments regarding the rules, to more closely match the ps2avrgb template.

* update info.json

This board has a quite interesting take on the standard TKL; why not show it off?
2020-02-01 00:42:42 -08:00
Nick Brassel
8e550fc11a Add thread safety around i2c_master for ChibiOS/ARM. 2020-02-01 17:44:39 +11:00
Jonas Avellana
1aee492c0f [keymap(kyria), refactor] created kyria keymap. refactored ninjonas userspace (#8053)
* [keymap(kyria), refactor] created kyria keymap. refactored ninjonas userspace and keyboards

* [fix(#8053)] removed redundant code based off Duckle29's code review

* [fix(#8053)] fixing typos

* [refactor(#8053)] updating oled timeout

* [fix(8053) resolved code review issues identified by noroadsleft
2020-01-31 22:38:05 -08:00
mechlovin
fdabf524f2 [Keyboard] add Hannah910 V2 PCB and VIA support (#8024)
* add Hannah910 V2 and VIA support

add rev.2 pcb and via support

* Update config.h

* update

* Create config.h

* Update

* update

* update

* Move keymap folder

* add more layer and edit readme.md

* readme.md update

* update

* update

* Update hannah910.h
2020-01-31 19:02:29 -08:00
MechMerlin
e565948ffd Noxary 280 Backwards LED Fix (#8057)
* fix logic and update to newest led_update_kb routine
2020-01-31 12:33:08 -08:00
MechMerlin
5c5a05212e [Keyboard] VIA Support: 1upkeyboards 1up60hte (#8052)
* update the vendor id for 1upkeyboards 1up60hte

* add the via keymap and rules file

* fix typo

* move the LTO to the keyboard's rules.mk

* Update keyboards/1upkeyboards/1up60hte/config.h
2020-01-31 11:55:11 -08:00
Nick Brassel
b28ee6b039 Fix misunderstanding of CPPFLAGS and CXXFLAGS. 2020-01-31 15:29:23 +11:00
Jorge Noguera
6544bd2e65 [Keymap] Customized layouts for the Keebio/Quefrency65 (#7947)
* Created the yoryer layout for the Quefrency 65%

* added rgb control layer

* Required changes to resolve PR #7947 issues

* - Updated the layer list as an enum
- Removed .gitignore file from keymap folder

* Removed the .gitignore from keymap folder
2020-01-30 20:22:25 -08:00
takashiski
f31411af17 [Keymap] add new keymap (xd75 atomic style japanese layout) (#7944)i
* init jp

* update

* update

* update

* update

* Update keyboards/xd75/keymaps/atomic_style_jp/keymap.c

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

* remove config.h

* remove ____T___

Co-authored-by: Drashna Jaelre <drashna@live.com>
2020-01-30 20:21:33 -08:00
ai03
479c6a68cf [Keyboard] Add support for Southpaw Full Size (#8029)
* Begin work on spfs, migrating ancient config

* QMK breaks if there's a dash in the board name

* Update info.json

* Make indicator LEDs work

* Build a readme

* Change title to match official GB thread name

* Add an ANSI WKL layout for simplicity

* Adjustments as per pullreq recommendations

* Remove unused functions from other keymap
2020-01-30 21:14:19 -05:00
xyzz
eb309be6f0 Improve VIRTSER performance (#7528) 2020-01-31 11:30:41 +11:00
Joel Challis
4139de3cc9 Fix AVR boards which were overriding backlight without setting… (#8044)
* Add backlight custom driver to all boards not declaring it but overriding backlight

* Apply suggestions from code review

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Apply suggestions from code review

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Remove old tmk references from show_options.mk

Co-authored-by: fauxpark <fauxpark@gmail.com>
2020-01-31 10:44:40 +11:00
Jason Dunsmore
7514f5124a [Keymap] Update keymap for user jasondunsmore (#8047) 2020-01-30 15:25:16 -08:00
Yatara
31e4583f4a [Keyboard] Add support for Drink Me (#8039)
* Add initial configuration and keymaps for Yatara Drink Me.

* Apply suggestions from code review

* Apply suggestions from code review

* Add transparent layers in VIA layout so there are four layers in total. Amend closing bracket indentation in keymap.c files.
2020-01-30 14:37:23 -08:00
ridingqwerty
17a089d21b Trim firmware size changes from default rules.mk, part 4 (#8046)
* Trim firmware size changes from default-ish rules.mk files

* Trim sizes from westfoxtrot boards
2020-01-31 09:10:23 +11:00
MechMerlin
db2f187493 Documentation: KBD75 (#8038)
* update kbd75 readme

* update bmini readme

* update wkl.kr readme

* Update keyboards/kbdfans/kbd75/readme.md

* Update keyboards/kbdfans/kbd75/readme.md
2020-01-30 11:37:00 -08:00
ridingqwerty
d2e1cc4d48 Trim firmware sizes from default rules.mk, part 3 (#8045) 2020-01-30 11:13:49 -08:00
ridingqwerty
0f7d294ac3 Remove filesize changes from default-ish rules.mk files, sans handwired (#8040) 2020-01-30 13:47:48 -05:00
Alberto Grespan
c66a4a9831 [Keyboard] WhiteFox vanilla layout (#8043)
* Add the Whitefox vanilla layout

Initial commit for whitefox vanilla keymap

Fix the mapped layout to match vanilla

Cleanup vanilla default

Rework the info file

Remove vanilla keymap as we don't really need this
2020-01-30 02:52:35 -08:00
Joel Challis
e57af8db0d Fix 'Makefile:560: keyboards/<keyboard>/rev1/rules.mk: No such file or directory' (#8042) 2020-01-30 02:48:30 -08:00
Addison Cole
0968cf8b00 Updates cKeys/theDora README with explicit flashing instructions (#8016)
* adds to theDora readme for more explicit directions on flashing,
with links and how to enter bootloader mode.

* fmt

* Corrects language of steps for loading firmware

* Update keyboards/ckeys/thedora/readme.md
2020-01-30 01:45:27 -08:00
Bryan Arendt
0f9982c53e [Keyboard] Adds ogre ergo single (#8012)
* Adds ogre ergo single (non-split) version

* use generic pids
2020-01-30 01:18:44 -08:00
Cody Bender
6d5812a86c [Keyboard] Add Ergosaurus Support (#8013)
Initialize config

* Update matrix size

* Update Keymap

* Rename files to remove hyphen

* Rename board and folders

* Fix ergosaurus.h typo

* Fix ergosaurus.h layout matrix

* Update column pins

* Fixed ergosaurus

* Add Reggie layout

* Update Ergo keymap

* Update with fixes from PR #8013

* Fix KeyHive link

* Remove config.h and extra whitespace from README

* Update PID, README and rules spacing

* Update rules.mk
2020-01-30 01:16:11 -08:00
Joel Challis
1249594cf0 Refactor minidox to use split_common (#7924)
* Initial refactor of minidox to split_common

* post rebase fixes
2020-01-29 17:33:15 -05:00
stanrc85
e04c5edaae Userspace and keymap updates (#8037)
* Add PGUP,PGDN to keymaps

* Enable VIA support on userspace for 1up60hse

* Enable DZ60 VIA in rules

* Enable Romac VIA in rules
2020-01-29 17:23:55 -05:00
ridingqwerty
66fe3001e4 Trim firmware sizes from default rules.mk, part 1 (#8027)
* Removed reference to firmware size in 0-9,a-f board-level and default keymap 'rules.mk' files

* Correct some 'rules.mk' in boards buried under vendor folders

* PR8027 patch

Co-authored-by: GeorgeKoenig <35542036+GeorgeKoenig@users.noreply.github.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2020-01-29 12:51:25 -05:00
moseschmiedel
7149557bb4 Add German programming layout for Lets Split (#8014)
* Add German programming layout for Lets Split

* Update copyright in config.h

* Add Hash-Symbol to keymap

* Change to fit suggestions in PR

* Changes as requested, but broken.

* Fix layer switching issue
2020-01-29 10:17:45 -05:00
Danny
2abc0e17e7 [Keyboard] Add Quefrency Rev 2 (#8001)
* Add Quefrency Rev. 2

* Add encoder support

* Add RGB LED mapping info

* Add diode direction

* Revert removal of default folder for CI purposes

* Remove unneeded lines

* Rename ISO layout macros
2020-01-28 14:13:57 -08:00
Mikkel Jeppesen
197a401be6 Qmk doctor os check to support newer msys2/w10 installations (#8031)
* Fixed OS detection on newer MSYS installations

* made OS sting lower case
2020-01-28 22:21:00 +01:00
MechMerlin
4a208b8951 [Keyboard] 1up60hse VIA Support (#7992)
* add VIA support for 1up60hse

* choose a vendor and product id that is not taken

* add mousekey_enable set to no as per Wilba's recommendation

* Update keyboards/1upkeyboards/1up60hse/keymaps/via/readme.md

* Update keyboards/1upkeyboards/1up60hse/keymaps/via/readme.md

* add a fourth layer

* might as well remove the config file as we are not including the one thing that was in it
2020-01-28 13:04:50 -08:00
coseyfannitutti
1e90f5c71c Mysterium firmware fix (#8032)
* Update config.h

* Update rules.mk

* Update usbconfig.h

* Update config.h

* Update rules.mk

* Update usbconfig.h
2020-01-29 07:38:27 +11:00
Max Rumpf
0d80c7bd59 [Keyboard] Fix Pulse4k info.json LAYOUT name (#7965)
* Fix Pulse4k info.json LAYOUT name

* Add missing functions to fix configurator

Add empty encoder functions to the keyboard code, as the configurator doesn't see the keymap defined functions at first.
To be able to override these functions, they are marked as 'weak'.

* Rework encoder functions another time

Default implementation is now provided as part of the keyboard, but they can still be overriden within the keymap (template is commented out by default)
2020-01-28 09:08:39 -08:00
Nick Brassel
4d06d2835c Move CORTEX_ENABLE_WFI_IDLE=TRUE to rules.mk files. 2020-01-28 23:45:42 +11:00
Samuel Jahnke
92c62352cf [Keymap] Finalize Keymap Planck/Samuel (#8005)
* indent and layout changes

* finalizations

* use layout macros here instead of the raw matrix arrays
2020-01-27 17:47:36 -08:00
Rafael Azevedo
1f0404e3c5 [Keymap] Added gaming layout and read me (#7996)
* Added gaming layout and read me

* Code format changes and spelling fixes for PR

* Moved keymap to different folder
2020-01-27 17:42:46 -08:00
shela
ee88feb759 [Docs] Update Japanese translation (#8015) 2020-01-27 17:18:12 -08:00
Flexerm
eb5e513d26 [Keyboard] FLX Virgo, cleaned up layouts and added VIA keymap (#7997)
* Reworked for VIA support

Reworked for VIA support and tidying up of older code.

* Fixed naming issues, and prepared for VIA compat

Via compat added

* Improve layouts, tidy code, via keymap

Added support for VIA and cleaned up some code and layouts.

* Implimented suggestions by MechMerlin

* Fix capitalisation 

Mistake raised by Drashna now fixed.

* Tidy comments as requested by noroadsleft

* Tidy comments as requested by fauxpark
2020-01-27 17:05:29 -08:00
dohq
a539bd63fe Fix/remove missing package (#7897)
* [fix] yay instead pacman install bootloadhid

* [fix] add needed option

* [mod] output red color

* [fix] overwrite avr-gcc package

* [mod] disable install bootloadhid from aur and check already installed

* Apply suggestions from code review

Co-Authored-By: Joel Challis <git@zvecr.com>

* Update util/linux_install.sh

Co-Authored-By: Joel Challis <git@zvecr.com>

Co-authored-by: Joel Challis <git@zvecr.com>
2020-01-28 00:23:24 +00:00
Daniel Rodríguez Rivero
1b7a003d84 [Keymap] update to Danielo515 keymaps (#8004)
* feat(build): added script for compiling with docker easily

* chore: bring my own build with docker to master

* feat: merge ergodox ez into latest maste

* chore: remove my build with docker file

* chore: remove my changes to process_leader

* feat: more modular user danielo515

* Apply suggestions from @ridingqwerty

Co-Authored-By: ridingqwerty <george.g.koenig@gmail.com>

* chore: more suggestions implemented

* chore: add my basic details

* Apply suggestions from @drashna

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

* fix: more @drashna fixes

* feat: @fauxpark optimization

* fix: some more @drashna improvements

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

* chore: small improvement on layout

* fix: some more @drashna improvements

* chore: remove some F dance

Co-authored-by: ridingqwerty <george.g.koenig@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2020-01-27 14:42:38 -08:00
Joel Challis
0804f0a5dd Merge pull request #7995 from zvecr/feature/split_arm_i2c_remove
Remove compilation of i2c for arm split
2020-01-27 22:40:32 +00:00
Joel Challis
7342c335d2 Refactor stm32duino f103 keyboards to use new central board config files (#7706)
* Create central board for bluepill

* Remove duplicate board files

* Refactor to use new central board config files

* Fix cannonkeys f103 boards
2020-01-27 22:39:30 +00:00
Joel Challis
50855593ff Migrate common ld scripts to common location (#7887)
* Migrate common ld scripts to common location

* Remove duplicate ld scripts

* Update build to look at common ld location
2020-01-27 22:38:55 +00:00
Joel Challis
9a0245b778 Fix boards which were overriding backlight without setting custom (#7970) 2020-01-27 22:31:54 +00:00
Bryan Arendt
43d2a0e167 [Keyboard] Adds ogre ergo split (#8011)
* Adds ogre ergo split

* remove uneeded line breaks
2020-01-27 10:14:50 -08:00
skullydazed
212aeee202 Revert "Clueboard Rev4 Updates aka Volcano 660 (#7942)"
This reverts commit e0a0430c31.
2020-01-27 17:38:47 +11:00
Michael F. Lamb
5fb95c5f94 create users/datagrok (#7653)
* users/datagrok: add shared functions

* users/datagrok: improve base-layer selection feature

* users/datagrok: add README.md
2020-01-26 23:26:40 -05:00
Mikkel Jeppesen
05d6e6ca78 Ensure setPinInput actually sets input high-Z (#6237)
* Ensure setPinInput actually sets input high-z

* Fixed _PIN_ADDRESS Macro arguments
as recommended by vomindoraan

* Fixed instances of setInput to use new behavour

* Changed kmac matrix to use input with pullups

* Update keyboards/gh60/revc/revc.h

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Fixed input state for unselect_rows

* fixed merge conflict

* Updated all instances of older uses of setPinInput()

* Fixed naming mistake

Co-authored-by: fauxpark <fauxpark@gmail.com>
2020-01-26 23:04:38 -05:00
zvecr
992656e753 Fix cannonkeys f103 boards 2020-01-26 23:35:57 +00:00
zvecr
ee86be9dca Refactor to use new central board config files 2020-01-26 23:35:57 +00:00
zvecr
98e5555705 Remove duplicate board files 2020-01-26 23:33:03 +00:00
zvecr
d3abebb601 Create central board for bluepill 2020-01-26 23:33:03 +00:00
Jumail Mundekkat
645c5fabf2 Add VIA support to MxSS, plus minor tweaks (#7809)
* Add VIA support to mxss and general cleanup

* Add support for RGB test for FLEDs

* Add LAYOUT_all to allow for more configuration

* Remove blank layers

* Updated readme

* Improve use of EEPROM

* Credit where its due

* Use the latest iteration of rgblight code

* Keep the RGB timer running if the front LED is in RGB mode

* Fix RGB breathing animation

* Better supported RGB animation
Only thing not working is alternating, but that's not too important

* Abstract front LED handlers from main kb code

* Add support for indicator LED color changing

* Remove debug statement

* Persist indicator LED colors

* Mark custom sections in rgblight.c

* Light commenting

* Fix up keymaps

* Add/update comments

* Remove bloat from default hex

* Tidy a stray tab

* Out with the old, in with the new

* Out with the old, in with the new

* Add LAYER_STATE_8BIT for VIA keymap
2020-01-26 17:06:56 -05:00
yiancar
7f7b6b08e8 [Keyboard] Initial commit for mc76k (#8000)
* Initial commit for mc76k

* Update config.h
2020-01-25 23:05:22 -08:00
James Young
72d7661b30 suggestions by skullydazed 2020-01-25 18:15:07 -08:00
James Young
d0d106cef7 change Instructions listing in Docs summary 2020-01-25 18:15:07 -08:00
James Young
d603e94f68 add Breaking Change PR Instructions doc 2020-01-25 18:15:07 -08:00
Lucas Moreira
9ff61601e3 [Keymap] crkbd/kidbrazil adding layer dependent RGB & better idle timeout. (#7901)
* Added KidBrazil custom keymap for CRKBD
-Custom Font
-Custom OLED output

* Added missing readme

* Oled Timeout Update for KidBrazil Keymap (#1)

* Setup Oled timeout based on simple timer

* Cleaned up comments and added timeout for LEDs

* Fixed some small errors

* Updated oled timout with matrix scan

* Updated oled timout with matrix scan

* Update withou eeprom

* Update timer code

* Use process user instead of keymap

* Added ifdef to protect oledtimer

* Updated with half timeout state for logo

* Removed middle tier timer

* Final cleanup of unused files

* Updated code as per suggestions & requests

* Second round of revisions

* Updated keymap to better handle LED timeout
- Added boolean to hold LED state
- Added init function to set rgb to known state
- Modified RGB_TOG to work with noeeprom commands

* Finished adding the timeout for OLED and testing on CRKBD

* Updated documentation

* fixed the timeout logic so it works as intended

* Added initial limits to color settings

* Added layer reset as part of the iddle timeout process

* Split Keymap into more manageable files

* Finalizing RGB Layer status on CRKBD
- Refactored OLED timeout to deal only with oled
- If user remains iddle on game layer for too long it will switch to
default
- LED / OLED iddle working
- Minor changes to _SYM layer
- Removed some rgb controls from keyboard due to layer dependent RGB
colors

* Update keyboards/crkbd/keymaps/kidbrazil/keymap.c

Used suggestion from Drashna to replace EEPROM_RESET with shorter version.

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

* Update keyboards/crkbd/keymaps/kidbrazil/keymap.c

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

* Implemented drashna's comment

Co-authored-by: Drashna Jaelre <drashna@live.com>
2020-01-25 14:43:57 -08:00
QMK Bot
09370a95db format code according to conventions [skip ci] 2020-01-25 22:04:42 +00:00
George Harris
e9ffc53476 Fix unaligned access with LTO (#7801)
Forces 4 byte alignment for USB input & output buffers to prevent unaligned accesses by chibios with LTO enabled
2020-01-25 13:35:39 -08:00
fauxpark
480a391929 [Keyboard] Daisy refactor (#7985) 2020-01-25 12:43:43 -08:00
yohewi
154336ee27 [Keyboard] numatreus (#7929)
* Add files via upload

* Delete NumAtreus

* 20190405

* 20190405

* Delete keymap.c

* Delete config.h

* Delete keymap.c

* Delete rules.mk

* Delete rules_default.mk

* Delete readme.md

* Delete NumAtreus.c

* Delete NumAtreus.h

* Delete config.h

* Delete info.json

* 20190404

* Add files via upload

* Add files via upload

* 20190405

* Delete NumAtreus

* 20190406

* 20190407

* 20190408

* 20190408

* 20190410

* Update readme.md

* Update readme.md

* Add files via upload

大文字小文字の修正をしました。

* Update readme.md

* Update readme.md

* Update readme.md

* Delete NumAtreus.c

* Delete NumAtreus.h

* Add files via upload

* 20200118

* 20200118_default

* update

* readme

* Delete rules.mk

* Delete readme.md

* Delete numatreus.h

* Delete config.h

* Delete info.json

* Delete info.json_txt

* Delete numatreus.c

* Delete config.h

* Delete keymap.c

* Delete rules.mk

* Delete keymap.c

* Delete keymap.c

* del

* update

* update

* Update keyboards/numatreus/config.h

* Update keyboards/numatreus/config.h

* Update keyboards/numatreus/config.h

* Update keyboards/numatreus/keymaps/hdbx/keymap.c

* Update keyboards/numatreus/rules.mk

* Update keyboards/numatreus/rules.mk

* Update keyboards/numatreus/rules.mk

* Update keyboards/numatreus/rules.mk

* Update keyboards/numatreus/keymaps/hdbx/keymap.c

* Update keyboards/numatreus/keymaps/like_jis/config.h

* Update keyboards/numatreus/keymaps/like_jis/keymap.c

* Update keyboards/numatreus/readme.md

* Update keyboards/numatreus/readme.md

* Update keyboards/numatreus/readme.md

* Update keyboards/numatreus/readme.md

* Update keyboards/numatreus/readme.md

* Update keyboards/numatreus/readme.md

* 20190119_Modified

* 20200119_Modified

* 20200119_uranuma

* Update keyboards/numatreus/keymaps/hdbx/keymap.c

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

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

* Update keyboards/numatreus/rules.mk

* Update keyboards/numatreus/rules.mk

* Update keyboards/numatreus/rules.mk

* Delete info.json_txt

* 20200121_Modified

* 20200121_Modified

* 20200121_Modified

* 20200121_Modified

* 20200122

* Update keyboards/numatreus/config.h

* 20200122_Modified

* Update keyboards/uranuma/rules.mk

* Update keyboards/numatreus/keymaps/like_jis/keymap.c

* Update keyboards/uranuma/rules.mk

* Update keyboards/uranuma/rules.mk

* Update keyboards/uranuma/rules.mk

* Update keyboards/uranuma/rules.mk

* Update keyboards/numatreus/keymaps/like_jis/keymap.c

* Update keyboards/numatreus/keymaps/like_jis/keymap.c

* Update keyboards/numatreus/keymaps/like_jis/keymap.c

* Update keyboards/numatreus/keymaps/like_jis/keymap.c

* Update keyboards/numatreus/keymaps/like_jis/keymap.c

* Update keyboards/numatreus/keymaps/like_jis/keymap.c

* Update keyboards/uranuma/config.h

* Update keyboards/uranuma/readme.md

* Update keyboards/uranuma/readme.md

* Update keyboards/uranuma/readme.md

* 20200122

* Delete config.h

* Delete uranuma.h

* Delete uranuma.c

* Delete rules.mk

* Delete readme.md

* Delete keymap.c

* Delete info.json

* Update keyboards/numatreus/rules.mk
2020-01-24 19:33:04 -08:00
Joel Challis
d4ccb2e0e6 Fix printf buffer overflow when cols>16 (#7998) 2020-01-24 21:57:30 -05:00
skullydazed
5e65af3a76 Beef up how qmk doctor works. (#7375)
* Beef up how `qmk doctor` works.

* improve the `git submodule status` parsing. h/t @erovia

* Fix whitespace and imports

* yapf

* Add documentation for the new doctor functionality

* Replace type_unchanged() with str()

* remove unused modules

* Update lib/python/qmk/cli/doctor.py

Co-Authored-By: Erovia <Erovia@users.noreply.github.com>

Co-authored-by: Erovia <Erovia@users.noreply.github.com>
2020-01-24 20:31:16 +01:00
zvecr
6efcfaa264 Remove compilation of i2c for arm split 2020-01-24 14:11:01 +00:00
Joel Challis
e4a0f841e1 Update split serial code to use driver pattern (#7990)
* Move avr serial code to drivers

* Update src+= serial.c to driver pattern
2020-01-24 13:50:51 +00:00
James Young
4867a9b1e6 [Keyboard] HS60 v2 ISO: fix Configurator key ordering (#7958)
* white-space formatting

* reorder the objects
2020-01-24 01:09:55 -08:00
Wilba
9a9eaa8100 Added VIA support to Noxary 280 (#7960)
* Added VIA support to Noxary 280

* Added VIA support to Noxary 280

* Review changes
2020-01-23 21:03:04 -08:00
Xelus22
339e29d5af Add VIA support to TMO50 (#7986)
* via compatible

* disable mousekey

* remove unnecessary space
2020-01-23 19:28:25 -08:00
fauxpark
b568999769 Fix LED configuration for PS2AVRGB boards (#7989)
* Fix LED configuration for PS2AVRGB boards

* Undo backlight on state changes
2020-01-23 19:24:10 -08:00
QMK Bot
fe50883c15 format code according to conventions [skip ci] 2020-01-24 02:15:29 +00:00
Nick Brassel
d13ada1162 Add customisable EEPROM driver selection (#7274)
- uprintf -> dprintf
- Fix atsam "vendor" eeprom.
- Bump Kinetis K20x to 64 bytes, too.
- Rollback Kinetis to 32 bytes as partitioning can only be done once. Add warning about changing the value.
- Change RAM-backed "fake" EEPROM implementations to match eeconfig's current usage.
- Add 24LC128 by request.
2020-01-24 12:45:58 +11:00
Akaash Suresh
6ff093efbe Local Changes 2020-01-23 22:41:15 +11:00
Max Rumpf
c3835262d8 [Keymap] Phoebe keymap improvements (#7963)
* [Phoebe] Allow to input pipe characters with only one modifier

* [Phoebe] Update RGB animations
2020-01-22 14:46:00 -08:00
yiancar
1a40af74da HS60 EEPROM size fix (#7968) 2020-01-23 08:28:42 +11:00
yiancar
9e6e01cabb eeprom size fix (#7969) 2020-01-22 12:44:12 -08:00
Cable Car Designs
a561443fca [Keyboard] added support for new rev of cypher PCB (#7636)
* cleanup of existing branches to resync with upstream. removed old cyp…

…her files, added new cypher files.
2020-01-22 09:45:32 -08:00
MechMerlin
e0a0430c31 Clueboard Rev4 Updates aka Volcano 660 (#7942)
* fix audio enable repetition

* remove RGB LED support as this board has no RGB LB LEDs

* use pragma once

* this board has no backlight support

* enable COMMAND_ENABLE

* comment cleanups

* setting bootmagic to lite as the first board thathat has this PCB has a solid bottom. If someone forgets to put in a RESET key on their keymap, they are not going to have fun resetting the board

* Update keyboards/clueboard/66/rev4/rules.mk

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/clueboard/66/rev4/rules.mk

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/clueboard/66/rev4/rules.mk

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/clueboard/66/rev4/rules.mk

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* convert the palset and palclear routines to setpinoutput and writepinlow

* remove scankb

* restore original guards instead of pragma once

Co-authored-by: fauxpark <fauxpark@gmail.com>
2020-01-22 04:14:14 +00:00
Brett Inman
49c3a1cda5 Swap two columns to fix Skog Lite (#7940)
* Swap two cols to fix skog lite

* Fix readme

* Suggested formatting

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

Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2020-01-21 19:58:17 -08:00
fauxpark
ba264c69c2 [Keyboard] Cospad refactor (#7957)
* Cospad refactor

* Add num lock indicator code

* Add led_init_ports()

* Revert change to matrix position blanks

* Define BACKLIGHT_ON_STATE explicitly, in anticipation of PR6749
2020-01-21 18:21:47 -08:00
Joel Challis
8e500c3670 Align cformat rules with current CI implementation (#7936)
* Align cformat rules with current CI implementation

* Optimise file walking
2020-01-21 18:21:14 -08:00
Rossman360
bf4611c7b7 [Keymap] adding personal rebound keymap (#7956) 2020-01-21 18:18:18 -08:00
yiancar
f773056750 [Keyboard] HS60 Refactor (Keymap restructure to be more standardized) (#7847)
* Keymap restructure to be more standardized

* made bootmagic lite default

* Dividing keymaps

* Update keyboards/hs60/v2/v2.c
2020-01-21 15:09:50 -08:00
Wilba
b70500806a [Keyboard] Added WT60-B, WT60-BX (wilba.tech THERMAL) (#7948)
* Added WT60-B, WT60-BX

* Review changes
2020-01-21 13:28:12 -08:00
MechMerlin
9b6b54cdaa [Keyboard] Think 6.5 Soldered Matrix Fix (#7952)
* both backspace and left shift matrix positions off by one

* update the led_update routine

* update readme

* Update keyboards/gray_studio/think65/solder/solder.c
2020-01-21 13:26:00 -08:00
dsanchezseco
37db6012a7 keymap, fixed rgb effect name and deactivate oled (#7953)
* added rgblight controls to planck keymap

* fixed knight ridder offset to face me

* no oled for crkbd 'till fixed

* fixed RGB effect name
2020-01-21 09:12:07 -08:00
Dmitrijs Minajevs
6f176dfc7c Add VIA support to DZ60 (#7814)
* Add DZ60 to VIA

* Changed vendor id from 'KF' to 'DZ'

* Capitalize hex

* Fix Via_layout_options size setting

* Update keyboards/dz60/keymaps/via/rules.mk

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

Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2020-01-21 07:48:13 -08:00
QMK Bot
dee1d68dde format code according to conventions [skip ci] 2020-01-21 14:48:06 +00:00
fauxpark
123ae73efc Fix lock LEDs for ChibiOS when using shared endpoints (#7877)
* Fix lock LEDs for ChibiOS when using shared endpoints

* Tweak comments

* Doesn't need to be uint16 anymore
2020-01-21 14:17:33 +00:00
fauxpark
2566992c9a Add DIODE_DIRECTION to Getta25 (#7951) 2020-01-21 14:07:53 +00:00
Alfred Maler
5f35203d1b [Keymap] Feature/preonic/rev3/alfrdmalr (#7870)
* WIP do not merge

* first pass at custom preonic layout

* add auto shift and reset via leader key

* Update readme

* update copyright notice

* formatting changes

* fix: use MO instead of process_record_user

* added backslash and moved grave position

* remove extraneous 'j' characer in NUMPAD template

* update template formatting

* remove process_record_user

* swap "!" with "@"

* fix readme formatting

* update readme layout image
2020-01-20 23:01:09 -08:00
Salicylic-acid3
c23b73530f [Keyboard] Add keyboard Getta25 (#7497)
* [Keyboard] Add keyboard Getta25

Add Getta25 keyboard.

A 25 keys Tenkey.
Salicylic-acid3

* Update keyboards/getta25/info.json

* Update keyboards/getta25/readme.md

* Update keyboards/getta25/readme.md

* Update keyboards/getta25/readme.md

* Update keyboards/getta25/info.json

* Update keyboards/getta25/info.json

* Update keyboards/getta25/info.json

* Update keyboards/getta25/info.json

* Update keyboards/getta25/keymaps/oled/glcdfont.c

* Update keyboards/getta25/keymaps/oled/glcdfont.c

* Keymap Update

Remove unnecessary code blocks

* Update keyboards/getta25/keymaps/oled/keymap.c

* Update keyboards/getta25/keymaps/oled/keymap.c

* Update keyboards/getta25/keymaps/oled/keymap.c
2020-01-20 14:40:33 -08:00
clovervidia
61dbb92679 Invert Num Lock LED state (#7945) 2020-01-20 10:49:15 -08:00
QMK Bot
e3d59a72f9 format code according to conventions [skip ci] 2020-01-20 18:48:28 +00:00
Wilba
484a9b12bc Add VIA support for QMK backlight, QMK RGBLight (#7911)
* Add VIA support for QMK backlight, QMK RGBLight

* clang-format changes
2020-01-20 10:18:25 -08:00
Akaash Suresh
ce81c4f89b curry layout (#7943) 2020-01-20 11:59:55 -05:00
fauxpark
ef8a4e5aaf Remove all references to "CUSTOM_MATRIX" as a diode direction (#7937) 2020-01-19 23:05:51 -08:00
Erovia
1f86e8ae9a Fix attribute heritance for long commands.
This is needed for inheritance to work with commands that have dashes in
their names.
2020-01-19 21:29:36 -08:00
Erovia
e7f6e90a22 Fix commandline arg merging, small improvements
Commandline args should be merged with the submodule's config.
Compare config values to None instead of False, so empty lines and False
can be used as values.
2020-01-19 21:29:36 -08:00
Erovia
20290a1cff MILC: Fix/complete attribute heritance
If an undefined attribute of a submodule is accessed, fall back to
same attribute of the submodule's parent.
2020-01-19 21:29:36 -08:00
Spaceman
80d329bb55 [Keyboard] Addition Eagle II keyboard (#7927)
* add EagleII Keyboard

* Update eagleii.c

* Update eagleii.h

* Update keymap.c

* Update eagleii.h

* Update keymap.c

* Update keyboards/handwired/eagleii/config.h

* Update keyboards/handwired/eagleii/config.h

* Update keyboards/handwired/eagleii/rules.mk

* Update config.h

* Update rules.mk

* Update eagleii.h

* Update eagleii.h

* Update keymap.c

* Update info.json

* Update keyboards/handwired/eagleii/rules.mk

* Update keyboards/handwired/eagleii/rules.mk

* Create readme.md

* Update keyboards/handwired/eagleii/readme.md

* Update keyboards/handwired/eagleii/config.h

* Update keyboards/handwired/eagleii/readme.md

* Update keyboards/handwired/eagleii/readme.md
2020-01-19 18:07:30 -08:00
Maarten Dekkers
251a69ea3d [Keyboard] Add mx5160 keyboard (#7142)
* Add mx5160 keyboard

* Make necessary changes for merging

rules.mk cleanup, QMK's built in alias for KC_TRNS and change readme blurb

* Add info.json as well

* Update readme, info.json

* Change layout name, update led function

* Fix info.json

* Update rules.mk
2020-01-19 16:23:03 -08:00
fauxpark
31c0fe69f6 [Docs] Misc cleanups for OLED documentation (#7864) 2020-01-19 14:05:54 -08:00
Joel Challis
65f7bfcc8d Fix unknown key 'IndentPPDirectives' on CI (#7933) 2020-01-19 13:59:57 -08:00
Rossman360
4da241968c [Keyboard] Rebound keyboard add (#7886)
* create Rebound keyboard

* proofread

* update decade

* layer enums

* revert enum layer changes

* line spacing and such

* product ID and punctuation

* terminating terminating slashes

* layer enums

* remove slashes

* rules change, rgb and spacing

* plural layouts rgb rulez
2020-01-19 13:08:09 -08:00
Rossman360
dd2b793c0c [Keyboard] Rebound keyboard add (#7886)
* create Rebound keyboard

* proofread

* update decade

* layer enums

* revert enum layer changes

* line spacing and such

* product ID and punctuation

* terminating terminating slashes

* layer enums

* remove slashes

* rules change, rgb and spacing

* plural layouts rgb rulez
2020-01-19 13:07:34 -08:00
Takuya Urakawa
ef33befa06 [Keyboard] Add Tartan keyboard (#7917)
* first commit

* update keymap and key layout

* Update for release

* Update keyboards/tartan/config.h

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

* Update keyboards/tartan/info.json

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

* Update keyboards/tartan/info.json

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

* Update keyboards/tartan/info.json

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

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

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

* Update keyboards/tartan/keymaps/default/readme.md

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

* Update keyboards/tartan/keymaps/default/readme.md

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

* Update keyboards/tartan/keymaps/test/keymap.c

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

* Update keyboards/tartan/keymaps/test/keymap.c

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

* Delete tartan/keymaps/test

* Update keyboards/tartan/readme.md

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

* Update keyboards/tartan/readme.md

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

* Delete tartan/keymaps/default/config.h

* Update keyboards/tartan/readme.md

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

* Update keyboards/tartan/rules.mk

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

* Update keyboards/tartan/rules.mk

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

* Delete unneccesary settings

* Fix tartan/rules.mk

* Delete unnecessary code from tartan.c

* Rearrange layout order in tartan.h

* Update keyboards/tartan/usbconfig.h

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/tartan/usbconfig.h

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update usb config

* Update keyboards/tartan/usbconfig.h

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Delete unused defines

* Update keyboards/tartan/usbconfig.h

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/tartan/usbconfig.h

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/tartan/usbconfig.h

Co-Authored-By: fauxpark <fauxpark@gmail.com>

Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: fauxpark <fauxpark@gmail.com>
2020-01-19 10:54:04 -08:00
fauxpark
2bddfb986d Remove tmk_core gitignore and gitmodules 2020-01-19 10:52:29 -08:00
Joel Challis
667045b492 Run clang-format manually to fix recently changed files (#7934)
* Run clang-format manually to fix recently changed files

* Run clang-format manually to fix recently changed files - revert template files

* Run clang-format manually to fix recently changed files - format off for ascii_to_keycode_lut
2020-01-19 16:30:34 +00:00
fauxpark
f5209aa4e9 Remove custom backlight code for PS2AVRGB boards (#7775)
* Remove custom backlight code for PS2AVRGB boards

* Remove custom driver setting

* BACKLIGHT_BREATHING goes in config.h, not here

* Don't need to include backlight.c again here either

* Turn on backlight for Canoe

* Disable console on a few boards due to oversize
2020-01-18 23:00:32 -08:00
fauxpark
eb5d267e63 Enforce definition of DIODE_DIRECTION for non-custom matrix boards (#7915)
* Enforce definition of `DIODE_DIRECTION` for non-custom matrix boards

* Define diode direction for failing boards

* Matching parentheses

* Put onekey diode directions in top level config
2020-01-19 14:11:57 +11:00
James Young
eaed517c0b Added keymap for Space65 (#7562)
* Initial commit

* Modified keymap and updated readme.

* fixed numbering in readme

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Made requested changes in PR.

* Rename README.md to readme.md

* swapped media control keys

* updated right alt key to apply shift key for emacs

* updated R_Alt to remove shift

* Updated readme

* add layout 2 and rename existing folder to layout 4

- renamed existing folder with directional layout to layout 4
- udpated existing readme
- Added layout_60_2

* update flash script per pull request review

* Added keymap profile to space65

- This keymap profile is for MacOS with VIM key bindings
- See readme for more information

* Update keyboards/gray_studio/space65/keymaps/billiams/readme.md

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

* Update keyboards/gray_studio/space65/keymaps/billiams/readme.md

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

* Update keyboards/gray_studio/space65/keymaps/billiams/readme.md

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

* Update keyboards/gray_studio/space65/keymaps/billiams/readme.md

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

* Update keyboards/gray_studio/space65/keymaps/billiams/keymap.c

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

* remove unnecessary code from keymap

* updated keys and cleaned up readme

Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2020-01-18 17:00:09 -08:00
Joel Challis
ba628a28bc Move rgblight and backlight task to common location (#7733) 2020-01-19 00:59:09 +00:00
Rob Haswell
a1452db98a Configuration values for starting HSV and speed (#7740)
* Define default HSV and speed for RGB matrix.

* Documentation for configuration values RGB_MATRIX_STARTUP_HUE, RGB_MATRIX_STARTUP_SAT and RGB_MATRIX_STARTUP_VAL.

* Document RGB_MATRIX_STARTUP_SPD.

* Preserve the ordering.
2020-01-18 20:11:33 +00:00
M. de Verteuil
9b9a0f0bcb [Keymap] Added mverteuil keymaps and userspace common code (#7876)
* Added mverteuil content

- Userspace
- Knops keymap
- Preonic keymaps

* Simplified and replaced some magic numbers

* Convert tabs to spaces

* Clean up LED handling, better animation, better layer init

* Use get_highest_layer per @drashna suggestion

* Reorder prototypes/reformat

* Simplified/more expessive and fixed initial layer LED

* Remove changes to git ignored files
2020-01-18 11:24:56 -08:00
Nathan Gray
6b17067b15 [Keyboard] Fix the order of underglow LEDs on ergodash/rev1 (#7791)
On the v1.2 PCB the slave half leds go in reverse order compared to the master half.
With this change, the leds are all in order from left to right, so animations like
Knight Rider look like you'd expect.
2020-01-17 20:26:30 -08:00
fauxpark
055e940f06 [Keyboard] Wasdat matrix cleanup (#7909)
* Wasdat matrix cleanup

* Use _custom functions

* More deduping, and signature fix
2020-01-17 20:01:17 -08:00
Hybrid65
3dd43d9cab [Keyboard] Support for a Southpaw Keyboard KVT (#7892)
* Support for KVT

This branch adds support for the southpaw keyboard KVT

* Updated readme.md and keymap.c

* Update readme.md

* Update keyboards/kv/revT/readme.md

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/kv/revT/readme.md

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/kv/revT/readme.md

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/kv/revT/readme.md

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/kv/revT/rules.mk

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/kv/revT/rules.mk

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/kv/revT/readme.md

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/kv/revT/readme.md

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Updated from suggestions from pull request

* Update readme.md

* Update rules.mk

* Update rules.mk

* Update rules.mk

* Update rules.mk

* Update rules.mk

* Update revT.c

* Update readme.md

* changing T to lowercase

* Change revT to revt

* edit

* Update keyboards/kv/revt/rules.mk

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

* Update readme.md

Co-authored-by: fauxpark <fauxpark@gmail.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2020-01-17 19:56:13 -08:00
Joel Challis
6e710426a4 Add docs for 'CUSTOM_MATRIX = lite' (#7906)
* Add some docs to cover 'CUSTOM_MATRIX = lite'

* Apply suggestions from code review

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Add 'SRC += matrix.c' docs

* Update docs/custom_matrix.md

Co-Authored-By: fauxpark <fauxpark@gmail.com>

Co-authored-by: fauxpark <fauxpark@gmail.com>
2020-01-18 12:56:33 +11:00
Jeremy Bernhardt
d11238f748 switching to you know whats up mode (#7921) 2020-01-17 16:15:58 -05:00
ridingqwerty
95c24bbaf8 Implement and document TAPPING_FORCE_HOLD_PER_KEY (#7859)
* Implement and document TAPPING_FORCE_HOLD_PER_KEY

* Added "record" parameter to "get_tapping_force_hold"

* Correct typo -- remove 'IGNORE_' from 'IGNORE_TAPPING_FORCE_HOLD_PER_KEY'

Co-authored-by: GeorgeKoenig <35542036+GeorgeKoenig@users.noreply.github.com>
2020-01-17 15:49:23 -05:00
Drashna Jaelre
1b0854fdca Cleanup check for PERMISSIVE_HOLD (#7861)
* Fix bug in PERMISSIVE_HOLD check

caused by #5009 (aka, me)

* Remove check for per key
2020-01-17 15:33:08 -05:00
zvecr
75d4ff7d51 Prevent fallthrough for DIODE_DIRECTION 2020-01-17 18:55:24 +00:00
zvecr
952e805edb Initial refactor of ergo42 to split common 2020-01-17 18:50:58 +00:00
Callum Oakley
1fcd0b2578 move caps because it can be triggered accidentally by sequences such as '("' (#7923)
Thanks!
2020-01-17 10:59:07 -05:00
Ben
619ee543b8 [Keyboard] Add Plaid-Pad 4x4 numpad (#7900)
* Add Plaid-Pad code

* Move ENCODER_ENABLE under Build Options

* Update keyboards/keycapsss/plaid_pad/info.json

* Update keyboards/keycapsss/plaid_pad/keymaps/default/keymap.c

* Update keyboards/keycapsss/plaid_pad/plaid_pad.h

* 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/rules.mk

* Update keyboards/keycapsss/plaid_pad/rules.mk

* Update keyboards/keycapsss/plaid_pad/rules.mk

* Update keyboards/keycapsss/plaid_pad/readme.md

* Update keyboards/keycapsss/plaid_pad/readme.md

* Update keyboards/keycapsss/plaid_pad/readme.md

* Update keyboards/keycapsss/plaid_pad/usbconfig.h

* Update keyboards/keycapsss/plaid_pad/usbconfig.h

* Update keyboards/keycapsss/plaid_pad/usbconfig.h

* Update keyboards/keycapsss/plaid_pad/usbconfig.h

* Update keyboards/keycapsss/plaid_pad/config.h

* Update keyboards/keycapsss/plaid_pad/usbconfig.h

* Update keyboards/keycapsss/plaid_pad/usbconfig.h

* Update keyboards/keycapsss/plaid_pad/usbconfig.h

* Update keyboards/keycapsss/plaid_pad/rules.mk

* Update keyboards/keycapsss/plaid_pad/config.h

* Update keyboards/keycapsss/plaid_pad/config.h

* Update keyboards/keycapsss/plaid_pad/usbconfig.h

* Update keyboards/keycapsss/plaid_pad/usbconfig.h

* Update keyboards/keycapsss/plaid_pad/config.h
2020-01-17 00:30:32 -08:00
Josh Hinnebusch
b6d8840915 [Keyboard] add VIA support for hiney PCBs (#7910)
* add VIA support for hiney PCBs

* update LED per request

* update LED text per request

* remove extra stuff
2020-01-16 23:15:08 -08:00
Xyverz
d6e6feb377 Further changes to HHKB keymap (#7918)
* Changes to HHKB Keymap for useability

* Changes to HHKB Keymap for useability

* Added KC_GRV to _FL.
2020-01-17 09:34:25 +11:00
Rys Sommefeldt
919d69266e [Keyboard] Graystudio Space65 ISO UK layout and keymap (#7912)
* ISO UK layout for Graystudio Space65

* Quick line on how to build it in the readme

* Update ASCII art layout guide to match reality

* Whoops, space is actually K47, not K46

* Rename to 65_iso_blocker and remove uk designation
2020-01-16 10:06:42 -08:00
fauxpark
1e670f5e67 Remove KEYMAP_SECTION_ENABLE (#7882) 2020-01-17 00:32:09 +11:00
Maarten Dekkers
bf397fdd9f [Keyboard] Add Eon40 keyboard (#7885)
* Add Eon40 files

* Make required changes

* Add missing comma

* Update rules.mk
2020-01-15 15:53:09 -08:00
James Young
5153580698 [Keyboard] Xbows Knight: Configurator layout polishing (#7903) 2020-01-15 09:38:17 -08:00
Ahmed Elshafey
3a69232213 [Keymap] Massdrop ctrl keymap (#7639)
* RGB config overhaul

Changing RGB config from setrgb to sethsv, trying out different color values.

* Merged changes

* Various changes and a couple additions

Added Git Layer with git macros for most operations and LED config to show the macro keys on layer. Activated with FN+3.
Added VIM Layer, this is a normal keycode layer with no macros for now but it has LED config that highlights the navigation and edit keys in VIM.
Added a sticky CTRL and sticky SHIFT layers. I have no idea why I did this actually, it's mildly useful but oneshot and tapdance would be better, will be removed in later commit.
Changed the LED config from setrgb to sethsv and the key by key LED config to array.
Some code improvements in process_record_user.
Better way to manage string macros using char array. Inspired by drashna's secret macros.

* Various keymap changes and added documentation

Updated massdrop/ctrl endgame keymap:
    Added layers for git and vim.
    Better LED config method, using ledmap, similar to what's used in many other keymaps.
    Improved process_record_user() mainly with reduced conditionals.
    Cleaned things up in the header and config.
    Added pretty much all qmk feature headers to rules and config, commented out to be enabled if desired. Firmware size should be considered.
    Not many features added in this commit. Shifting for a while to work on implementing raw hid for the keyboard and expanding qmk terminal.

Added documentation.md for massdrop/ctrl at keyboard level to house all related information for future use.
Added documentation for raw hid in docs, added the doc to feature index. Need some review for this documentation and suggested additions/changes.

* Some fixes

Fixed keymap documentation to include changes.
Removed useless double tap keys and simplified layer maps.

* Fixed error in keymap

* Removed documentation changes. Will present in another PR

* Update keyboards/massdrop/ctrl/DOCUMENTATION.md

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update DOCUMENTATION.md

* Update keymap.c

fixed mouse layout incomplete arrow cluster

* Update keyboards/massdrop/ctrl/keymaps/endgame/keymap.c

Fixed Git layer led config

Co-Authored-By: totolouis <totolouis@users.noreply.github.com>

* Update DOCUMENTATION.md

Remove raw hid details

* Update rules.mk

Remove useless stuff

* fixed malformed led map causing compile fail, indentation fixes

* Update keyboards/massdrop/ctrl/keymaps/endgame/config.h

switch from TG_NKRO to NK_TOGG

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keymap.c

Switching from TG_NKRO to NK_TOGG

* Added yakuake layout

* Update keyboards/massdrop/ctrl/keymaps/endgame/keymap.c

Change biton32(layer_state) to get_highest_layer()

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keymap.c

Change from biton32 to get_highest_layer

* Fixed custom LED not toggling off

Co-authored-by: fauxpark <fauxpark@gmail.com>
Co-authored-by: totolouis <totolouis@users.noreply.github.com>
2020-01-14 21:34:41 -08:00
Xyverz
2a6cb426ef Hhkb keymap (#7907)
* Initial commit of HHKB layout.

* Moved keymap to the correct location.

This keymap is for a hasu alt controller-equipped HHKB, so the keymap was in the wrong place.
Added comments to the keymap.
2020-01-15 16:01:58 +11:00
Joel Challis
2081c5e40e Fix CUSTOM_MATRIX lite matrix_scan return code (#7908) 2020-01-15 15:51:43 +11:00
Joel Challis
48cac9e3c8 Migrate more custom matrix 'lite' code to core (#7863)
* Migrate more custom matrix lite code to core

* Align function names

* fix up MATRIX_MASKED
2020-01-15 01:58:32 +00:00
James Young
537b8713e5 XD68 Configurator Layout Support and Minor Refactor (#7904)
* XD68: QMK Configurator layout support

* elevate backlight breathing settings to keyboard level

* remove empty keymap config.h files

* rules.mk templating

* keymap polishing

- four-space indent
- keycode alignment
2020-01-15 01:31:17 +00:00
Joel Challis
61cd180163 Add ws2812 driver type define (#7888) 2020-01-15 09:03:48 +11:00
yiancar
b69b1ad4fc Fix NK65 indicator code after refactoring (#7902) 2020-01-15 09:03:01 +11:00
Sascha Grunert
bb652314be Update personal keymap (#7898)
Signed-off-by: Sascha Grunert <sgrunert@suse.com>
2020-01-15 08:45:55 +11:00
Adi M
9b4052e5a3 Adi's KBD67 layout (#7896)
* Add files via upload

* Rename keyboards/kbdfans/kbd67/rev2/keymaps/keymap.c to keyboards/kbdfans/kbd67/rev2/keymaps/adi/keymap.c

* Rename keyboards/kbdfans/kbd67/rev2/keymaps/readme.md to keyboards/kbdfans/kbd67/rev2/keymaps/adi/readme.md

* Update readme.md

* Update readme.md

* Update keyboards/kbdfans/kbd67/rev2/keymaps/adi/keymap.c

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

* Update keyboards/kbdfans/kbd67/rev2/keymaps/adi/keymap.c

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

* Update keyboards/kbdfans/kbd67/rev2/keymaps/adi/readme.md

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

Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2020-01-15 08:44:59 +11:00
skullY
58d27cf404 Add a note explaining how to run tests 2020-01-14 07:52:14 -08:00
skullY
44168baaa7 Add a section on python tests 2020-01-14 07:52:14 -08:00
fauxpark
c7b2d60a23 Move Space Cadet keycodes to their own section in keycode reference (#7889) 2020-01-14 14:02:13 +00:00
Koichi Katano
c58f7857bd [Keyboard] Add Yurei PCB (#7880)
* Add yurei

* Implement keyboard

* Update readme.md

* Update config.h

* Update info.json

* Update info.json

* Update keyboards/yurei/config.h

* Delete config.h

* Update rules.mk

* Update yurei.c

* Update keymap.c

* Update keyboards/yurei/yurei.h

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

* Update keyboards/yurei/info.json

* Update keyboards/yurei/rules.mk
2020-01-14 02:31:21 -08:00
yiancar
e80fdbf3dc NK65 Bootmagic lite for default (#7895) 2020-01-14 19:31:21 +11:00
xyzz
83be1aed76 chibios/usb_main: re-check USB status in send_keyboard after sleeping the thread (#7784)
* chibios/usb_main: re-check USB status in send_keyboard after sleeping the thread

* change send_keyboard to only have 1 exit point
2020-01-13 15:08:14 -08:00
fauxpark
c293d9049a Tidy up dztech keyboard.c/h and readmes (#7664)
* Tidy up dztech keyboard.c/h and readmes

* Use new lock LED function

* Undo changes to led flags

* Fix make examples

* Update readmes some more

* Clarify filetypes

* Format as list
2020-01-14 08:49:31 +11:00
MechMerlin
f609e125e4 Merlin's LAYOUT_65_ansi keymap (#7879)
* add my own user keymap for LAYOUT_65_ansi for my new NK65

* remove unneeded config
2020-01-14 08:28:35 +11:00
Maarten Dekkers
94ea13e73d [Keyboard] Add minitomic keyboard (#7140)
* Add minitomic keyboard

* Small change to readme

* Make changes necessary for merging

Remove extra comma in info.json, move caps lock led status from keymap to keyboard, removes unused keys on full space bar layout, cleans up rules.mk and update readme blurb.

* Update readme.md

* Update led function, fix spacing and remove custom keycodes

Removes the custom keycodes in default keymap, fixes spacing in keymap and minitomic.c and puts the new led function in as well
2020-01-13 12:16:27 -08:00
marksard
240e1ef6fd [Keyboard] Rebuild treadstone48 rev1 firmware (#7856)
* 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

* I re-created treastone48 keyboard firmware from ./util/new_keyboard.sh
After that I use common OLED_DRIVER, RGB_LIGHT and SPLIT_KEYBOARD options.
And then check all keymap.

* Modified by PR review
2020-01-13 10:06:40 -08:00
csc027
1b8cb95f2e [Keymap] csc027/macro-sync-keymap (#7873)
* Basic functionality to synchronize the strings and enums using C preprocessor macros.

* Updated all the custom convenience macros to work.

* Removed some duplicate update_tri_layer calls.

* Simplified the convenience accelerator macros for synchronizing enums and strings by removing the short enum names.

* Updated the CUSTOM_MACROS macro to use SS_LCTL instead of SS_LCTRL.

* Fixed a bug where the right side of the convenience layer in the Iris keymap was incorrectly listed twice.

* Removed the tenkey from the convenience layer.  Added Windows 10 virtual desktop shortcuts to the convenience layer.

* Fixed a bug where the macro range was not set correctly.

* Added sigil values for the keycode enum so that additions to the sync macros will not require changes to the process_record_user ranges.

* Hacked send_string_P to work with ChibiOS boards.

* Switched to using I2C for the Iris keyboard.

* Finished a comment.

* Updated comments to explain that for non-AVR MCUs, the PROGMEM macro doesn't do anything.

* Updated the synchronization macros to use the more descriptive "NAME" instead of "CALL".  Moved the Control-Alt-Delete chord macro to the  synchronization macro.

* Simplified the custom macros by consolidating the macros into a context change macro instead of using alt-tab and minimize macros.

* Fixed a formatting issue where several tabs were used instead of 4 spaces.

* Added more comments to explain the synchronization macros.

* Simplified the PARAMS macro, since any parameters could be passed with a space by the declarer instead.

* Consolidated the synchronization macros into a single list.  Simplified the synchronization mechanism.

* Removed the overloading macro, since it is no longer needed.

* Updated the convenience layer comments to reflect the changes made.

* Renamed the git_macros pointer table to custom_macros, since it no longer solely consists of git macros.

* Clarified that the send_string_P function's use of pgm_read_byte is different for AVR and non-AVR compilation targets.
2020-01-13 09:41:13 -08:00
Rossman360
390a4fdc9d [Keymap] fixed conflicts and made sure keymaps compiled, and some newer (older) keymaps snuck in (#7828)
* hope this works

* Some new things crept in

* remove nonsense config file

* spacing fix

* more spacing

* quick revert of mysterious file

* file revert take two

* take three

* take four

* deleted unneeded lines

* brought back not-unneeded line

* whitespace delete
2020-01-13 09:40:00 -08:00
Xelus22
1034df577d [Keyboard] Dawn60 bug fix [URGENT] (#7881) 2020-01-13 09:36:12 -08:00
Michael Firmin
869ce2f500 Update Levinson Readme to reflect changes to directory structure (#7883)
Updates the example make commands in the Levinson readme to
keebio/levinson/...  instead of levinson/...

Also updated the example to rev3 (the current version of the board)
2020-01-13 11:34:12 -05:00
Joel Challis
af03ff145d Remove backlight_init_ports from duck/orion/v3 (#7878) 2020-01-13 03:49:01 +00:00
John M Daly
be7d70b15c Enable RGB underglow on the CO60 and SteamVan, switch backlight code to QMK built-in code (#7874)
* Add: RGB underglow support using SPI to SteamVan and CO60

* Update: Switch to QMK's baclight implementation for CO60 and SteamVan

* Fix: Remove now unnecessary backlighting code from keyboard files
2020-01-13 03:48:24 +00:00
Joel Challis
b89e35bdd3 Relocate common backlight functionally (#7273) 2020-01-13 01:30:56 +00:00
Xelus22
2ce3025be2 [Keyboard] Dawn60 Keyboard (#7832)
* dawn60_proper

* change default

* changes

* master merge and via keymap

* rgb underglow better

* rename of folder

* rename folder complete

* rename

* dawn60/underglow specifics

* dawn60 specific

* simplify

* requested changes

* small errors

* layouts remove

* remove parentheses and update rules.mk

* fix error message
2020-01-12 16:11:02 -08:00
Joel Challis
ff5742da9f Fix KEYBOARD_SHARED_EP on ChibiOS (#7860) 2020-01-13 09:21:42 +11:00
Jonathan Rascher
5cb83dd5d7 Personal keymap updates for the new year (#7871)
* Update keymaps for split ergo boards

* Update keymaps for 60% boards
2020-01-13 09:10:21 +11:00
James Young
b187139f64 [Keyboard] Reviung41: Configurator layout support (#7852) 2020-01-12 10:51:22 -08:00
James Young
9bbce7a231 [Keyboard] IDB 60: Configurator bugfix (#7851)
* info.json: use debug linting

Changes the white space, mostly.

* info.json: correct file structure

* readme.md: templating
2020-01-12 10:50:52 -08:00
xyzz
21d6cb18ed [Keyboard] Add Xiaomi MK02 (#7825)
* [Keyboard] Added xiaomi/mk02

* keyboards/xiaomi/mk02: cleanup

* keyboards/xiaomi/mk02: add linker script

* update readme

* update

* remove via (crashes during startup)

* LAYOUT => LAYOUT_tkl_ansi

* Change vid/pid

* Add a warning to the readme
2020-01-12 10:42:32 -08:00
Mike Rix Wolfe
09b4457bf2 Add user keymaps for KBD67MKII/Lily58 (#7671)
* add my keymaps

* tri layer keymap

* update tri layer

* update tri layer

* cleaning up

* formatting

* move to correct location

* lily58: move caps off mod key in sublayer

* Update keyboards/lily58/keymaps/mikefightsbears/rules.mk

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/lily58/keymaps/mikefightsbears/rules.mk

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/lily58/keymaps/mikefightsbears/rules.mk

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/lily58/keymaps/mikefightsbears/rules.mk

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* remove unnecessary trailing whacks

* remove unneeded file

* swap spacebar

* update code for comments in PR

Co-authored-by: fauxpark <fauxpark@gmail.com>
2020-01-12 22:42:55 +11:00
MechMerlin
b6917c782f [Keyboard] KPRepublic BM60 RGB (#7842)
* initial commit from script

* edit all generated files with my name and some basic notes

* implement RGB Matrix support

* cleanups, file removals, and readme edits

* Update keyboards/bm60hsrgb/config.h

* rename to bm60rgb

* update included library and info.json keyboard name

* Update keyboards/bm60rgb/keymaps/default/readme.md
2020-01-11 23:11:06 -08:00
Jonathan Rascher
08cd996839 Add Lily58 serial to LIB_SRC to avoid LTO issue (#7868)
This code is timing sensitive and seems to break with LTO enabled (at
least on avr-gcc 8.3.0... it worked on older gcc versions).

This is the same workaround as #7558 applied for the Helix.
2020-01-12 01:09:04 +00:00
Adi M
8b9d4fd341 Adi's DZ65RGB layout (#7845)
* Adi's DZ65RGB layout

* Update keyboards/dztech/dz65rgb/keymaps/adi_dz65rgb_ansi/readme.md

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Rename layers.JSON to layers.json

* Update readme.md

* Update keyboards/dztech/dz65rgb/keymaps/adi_dz65rgb_ansi/keymap.c

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

* Update keyboards/dztech/dz65rgb/keymaps/adi_dz65rgb_ansi/keymap.c

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

* Update keyboards/dztech/dz65rgb/keymaps/adi_dz65rgb_ansi/readme.md

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

* Update keyboards/dztech/dz65rgb/keymaps/adi_dz65rgb_ansi/readme.md

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

* Delete layers.json

* Update keyboards/dztech/dz65rgb/keymaps/adi_dz65rgb_ansi/readme.md

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

* Update keyboards/dztech/dz65rgb/keymaps/adi_dz65rgb_ansi/readme.md

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

* Update keyboards/dztech/dz65rgb/keymaps/adi_dz65rgb_ansi/readme.md

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

* Rename keyboards/dztech/dz65rgb/keymaps/adi_dz65rgb_ansi/readme.md to keyboards/dztech/dz65rgb/keymaps/adi/readme.md

* Rename keyboards/dztech/dz65rgb/keymaps/adi_dz65rgb_ansi/keymap.c to keyboards/dztech/dz65rgb/keymaps/adi/keymap.c

Co-authored-by: fauxpark <fauxpark@gmail.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2020-01-12 12:01:48 +11:00
skullY
81ec3b5f81 yapf and style 2020-01-11 12:18:30 -08:00
Erovia
8f47e62b36 Make the udev rules easier to read and manage 2020-01-11 12:18:30 -08:00
Erovia
e905d86fc5 Fix Pro Micro's and its bootloader's name 2020-01-11 12:18:30 -08:00
Erovia
c6f47b5bd7 CLI: Rework ModemManager check and add udev check 2020-01-11 12:18:30 -08:00
yiancar
70309bef3d [Keyboard] NK65 Refactor (#7862)
* Nk65  Refractor

- Changed Via keymap to via instead of default_via
- Moved Caps/Layer indicator code outside of wilba_tech rgb. This is so they can more easily be modified

* Update keyboards/nk65/nk65.c
2020-01-11 09:25:27 -08:00
AbstractKB
2d051d8de3 [Keymap] Updated keymaps (#7834) 2020-01-10 12:25:10 -08:00
Daniel Shields
578f54ee94 [Keymap] Add additional dynamic macro key to dshields keymaps. (#7853) 2020-01-10 09:51:19 -08:00
Patrick Fruh
7d7bb5bf82 added ymdk ymd09 keyboard (#7831)
* added ymdk ymd09 keyboard

* lowercase github username

* change rgb keymap to make more sense

* fixed number of LEDs

* remove configuration for non-existant backlight

* use official template and change file permissions

* disable unnecessary nkro

* Apply suggestions from code review

Co-Authored-By: Joel Challis <git@zvecr.com>

* with easy reset via bootmagic lite, remove RESET from layout

Co-authored-by: Joel Challis <git@zvecr.com>
2020-01-10 14:17:45 +00:00
Seth Barberee
b1b52c37c7 [Keymap] Update my iris keymap for LTO and rgbled split (#7849) 2020-01-10 01:52:36 -08:00
pngu
af77912d2d [Keyboard] Changes to support latest release of VIA, moved files to "idb" folder in "keymaps" in preparation of adding more boards, made changes to LAYOUT_ macros (#7798)
* make vendor folder for idb keyboards

* set default debounce to eager_pk, clean up vendor/product ID

* refactoring for VIA

* made changes to support latest release of VIA, added default keymap that's in line with the most popular configuration

* Made suggested formatting changes

* rebase to get rid of lufa files

* removed idb_60.json that's only meant for via itself

* Update keyboards/idb/idb_60/keymaps/via/rules.mk

* Update keyboards/idb/idb_60/readme.md

* Update keyboards/idb/idb_60/readme.md

* Update keyboards/idb/idb_60/readme.md

* Update keyboards/idb/idb_60/rules.mk

* Update keyboards/idb/idb_60/config.h

* Update keyboards/idb/idb_60/readme.md

* made suggested formatting changes

* fixing lufa

* Update keyboards/idb/idb_60/rules.mk

* Update keyboards/idb/idb_60/config.h

* made suggested changes
2020-01-10 00:57:49 -08:00
fauxpark
9397bffd01 Fix a couple of USB VIDs for the API (#7848) 2020-01-09 23:50:55 -08:00
zk-phi
7f388b6553 Add per-key IGNORE_MOD_TAP_INTERRUPT feature (#7838)
* Implement IGNORE_MOD_TAP_INTERRUPT_PER_KEY

- Add configurable option IGNORE_MOD_TAP_INTERRUPT_PER_KEY
- Add function get_ignore_mod_tap_interrupt iff the option is enabled

Unless IGNORE_MOD_TAP_INTERRUPT_PER_KEY is defined, this patch does not affect the resulting binary.

* Add documentation for IGNORE_MOD_TAP_INTERRUPT_PER_KEY
2020-01-10 02:48:06 -05:00
Joel Challis
e34af631c2 Refactor f103,f072,f042 based keyboards to use new MCU selection defaults (#7705)
* refactor keyboards using ST_STM32F072B_DISCOVERY to use 'MCU = STM32F072'

* refactor keyboards using GENERIC_STM32_F042X6 to use 'MCU = STM32F042'

* refactor keyboards using GENERIC_STM32_F103 to use 'MCU = STM32F103'
2020-01-10 01:31:01 +00:00
shela
5a02cc00a4 Fix docker script and document (#7786)
Fixed error when keyboard parameter is omitted in interactive mode.
2020-01-10 00:44:16 +00:00
MechMerlin
886eb98e2a KBD67 MKII Notes Update (#7824)
* add readme to each of the mkii versions

* update the most parent of kbd67 readmes to have history of the new versions

* fix up the parent readme for the two types of boards

* Update keyboards/kbdfans/kbd67/mkiirgb/readme.md

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/kbdfans/kbd67/mkiirgb/readme.md

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/kbdfans/kbd67/mkiirgb/readme.md

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/kbdfans/kbd67/mkiirgb/readme.md

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* fixup readmes

Co-authored-by: fauxpark <fauxpark@gmail.com>
2020-01-10 09:28:56 +11:00
bottilabo
2cd338cf7e Fix matrix_scan_user is not called at stm32 env(projectkb/alice etc..) which using cannonkeys/stm32f072 (#7821) 2020-01-09 21:21:58 +00:00
Akaash Suresh
caa70df816 [Keymap] Userspace refactor, adding leader key functionality (#7790)
* Userspace refactor

* Fixed missed ifdef

* tapcode16, adjust layout

* glcdfont changes from #7745

* Modify Keymaps, add workman

* RGB & OLED update
2020-01-09 11:57:54 -08:00
James Young
71de09d751 Update Breaking Changes doc timeline 2020-01-09 11:19:47 -08:00
fauxpark
d3bd1d893b Ensure PROGMEM is present on default keymaps (#7836) 2020-01-09 10:19:24 +00:00
James Young
d2e6a4bf5e Handwired Minorca Refactor (#7833)
* update config.h

- use #pragma once include guard
- update USB Device Descriptor strings

* update minorca.c

- remove matrix_init_kb function (same as QMK default)

* update minorca.h

- use #pragma once include guard
- update matrix identifiers

* update info.json

- update matrix identifiers
- change to four-space indent

* update rules.mk

- remote firmware size impact notes
- disable RGBLIGHT_ENABLE (no RGB config present)
- templating

* update readme.md

- templating

* update keymaps/default/rules.mk

- remove firmware size impact numbers
- templating

* update keymaps/rgb/rules.mk

- remote firmware size impact notes
- templating

* update keymaps/rgb/readme.md

- fix header

* remove keymaps/default/rules.mk

- identical to keyboard's rules.mk

* elevate Bootmagic configurations to keyboard level

* update keymaps/rgb/config.h

- use #pragma once include guard
- remove redundant config.h include

* update keymaps/rgb/rules.mk

- remove redundant rules

* update keymaps/rgb/readme.md

- change RGB function list to a table
- make wiring call-out a header

* remove keymaps/default/config.h

- it's blank now

* update minorca.h

- use four-space indent

* add Teensy 2.0 to readme
2020-01-09 10:47:33 +11:00
yulei
fe860131dd [Keyboard] fixed hhkb keymap issue on e6_rgb (#7684)
* fixed hhkb keymap issue and added allleds configuration

* fixed layout mismatch

* add more matrix control

* remove redundent define in rules.mk

* turn NKRO on

* remove allled macro, adding readme in allleds mode, add via support

* add two more layers for via

* update readme file

* Update keyboards/exclusive/e6_rgb/keymaps/allleds/readme

* Update keyboards/exclusive/e6_rgb/keymaps/allleds/readme.md
2020-01-08 00:11:45 -08:00
yiancar
4a09679d74 [Keyboard] add Allison Numpad (#7823)
* add Allison Numpad

* alternative layout
2020-01-07 21:36:43 -08:00
Kenny Greulich
331bbd602d [Keymap] added custom keymap and config for dz60rgb v1 (#7808) 2020-01-07 21:23:03 -08:00
Perry Huynh
9086d720e0 [Keyboard] add VIA support to Kyuu (#7804)
* add VIA support to Kyuu

* update keymap file to follow indenting guidelines

* add missing newline to rules.mk

* remove unnecessary backslashes and reindent default keymap
2020-01-07 21:21:52 -08:00
fauxpark
8fa64568f0 [Keyboard] Update Wasdat config (#7826) 2020-01-07 17:47:43 -08:00
Lucas Moreira
fdc144d215 [Keymap] Improvements to KidBrazil keymap to better handle OLED/LED Matrix timeout. (#7688)
* Added KidBrazil custom keymap for CRKBD
-Custom Font
-Custom OLED output

* Added missing readme

* Oled Timeout Update for KidBrazil Keymap (#1)

* Setup Oled timeout based on simple timer

* Cleaned up comments and added timeout for LEDs

* Fixed some small errors

* Updated oled timout with matrix scan

* Updated oled timout with matrix scan

* Update withou eeprom

* Update timer code

* Use process user instead of keymap

* Added ifdef to protect oledtimer

* Updated with half timeout state for logo

* Removed middle tier timer

* Final cleanup of unused files

* Updated code as per suggestions & requests

* Second round of revisions

* Updated keymap to better handle LED timeout
- Added boolean to hold LED state
- Added init function to set rgb to known state
- Modified RGB_TOG to work with noeeprom commands

* Finished adding the timeout for OLED and testing on CRKBD

* Updated documentation

* fixed the timeout logic so it works as intended

* Update keyboards/crkbd/keymaps/kidbrazil/README.md
2020-01-07 17:28:06 -08:00
yiancar
ee70d496f4 [Keyboard] add Allison keyboard (#7818)
* Initial commit

* Cosmetic Fixes

* Delete config.h
2020-01-07 17:26:04 -08:00
James Young
0027a0a948 Tada68 Fixes and Minor Refactoring (#7820)
* fix ANSI layout macro reference

* update ISO layout macro and enable 65_iso community layout support

- rename to LAYOUT_65_iso (with LAYOUT_iso alias for backwards compatibility)
- rename position k2c to k1d (electrical position)

* rules.mk templating

* tada68.h: use #pragma once include guard

* config.h: use #pragma once include guard

* make product id unique

* update info.json

* update readme

* cleanup default keymap

- keycode alignment
- layout macro reference
- four-space indent

* remove matrix_*_user functions from tada68.h
2020-01-08 00:17:01 +00:00
Jesse Leventhal
0c86cfeaed [Keyboard] Added NCC-1701-KB 3x3 Keypad with Encoder and Keymap (#7819)
* Added NCC-1701-KB Keypad and Keymap

* Update keyboards/ncc1701kb/config.h

* Update keyboards/ncc1701kb/config.h

* Update keyboards/ncc1701kb/config.h

* Update keyboards/ncc1701kb/config.h

* Update keyboards/ncc1701kb/ncc1701kb.h

* Update keyboards/ncc1701kb/readme.md

* Update keyboards/ncc1701kb/readme.md

* Update keyboards/ncc1701kb/readme.md

* Fixed changes rules.mk bootloader

* Fixed rules.mk Build Options

* Recomended fauxpark changes/fixes

* Update keyboards/ncc1701kb/ncc1701kb.h

* Update keyboards/ncc1701kb/ncc1701kb.h

* Update keyboards/ncc1701kb/readme.md

* Update keyboards/ncc1701kb/readme.md
2020-01-07 14:29:45 -08:00
Xyverz
b69457a192 More minor tweaks. (#7813)
Made the MACLOCK key easier tu use by putting it on right thumb
cluster as well.
2020-01-08 08:54:08 +11:00
Rob Haswell
cf30c5d17f RGB matrix effect - left-right gradient (#7742)
* Left-right gradient.

* Update the comment to match the new functionality.

* CPP does integer division so this round is not necessary.

* The x-range is actually 224, update comment and use bit-shifting again.

* Update docs with gradient left-right effect and associated "DISABLE" option.
2020-01-07 21:25:17 +00:00
Robert Snyder
957b8f553c [Keyboard] add info.json for dactyl_promicro (#6993)
* add info.json for dactyl_promicro

* tabs to spaces
reformat dactyl_promicro to match the LAYOUT_6x6
changed the default map to match dactyl
2020-01-07 13:23:47 -08:00
Karol Samborski
004ef3fad7 [Keymap] New levinson keymap (#7613)
* Vim oriented scheme

* Meta on both sides

* Removed unused staff

* Changed dynamic macro codes to the built ones

* Fixed formatting
2020-01-06 23:57:58 -08:00
gtips
10d18820d2 [Keyboard] Add keyboard Reviung41 (#7807)
* [Keyboard] Add keyboard Reviung41

* Modified files

* deleted keyboards/reviung41/keymaps/default/config.h

* modified keyboards/rebiung41/keymaps/default/keymap.c

* modified keyboards/reviung41/readme.md

* modified keyboards/reviung41/readme.md

* modified keyboards/reviung41/readme.md
2020-01-06 22:23:32 -08:00
Rossman360
6486c7809c Making keymaps based on userspace (#7812)
* hope this works

* TF working with userspace

* rules for tf

* Fixed changed default files

* delete old keymap

* revert tf68 default to default

Co-authored-by: Akaash Suresh <casa.akaash@gmail.com>
2020-01-07 15:36:00 +11:00
Juno Nguyen
37d7fd12e2 Juno (#7652)
* Added community layout juno and junonum; removed poorly maintained variants of juno; added junonum-a47.

* Added community layout juno and junonum; removed poorly maintained variants of juno; added junonum-a47.

* updated layout type for juno

* Performing requested changes; renaming a47; fine-tuning of codes in community layout keymaps.

* Fine tuning to requested changes.

* Further tuning to suggestion.

* Update layouts/community/ortho_4x12/juno/keymap.c

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update layouts/community/ortho_4x12/juno/keymap.c

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/maartenwut/atom47/keymaps/junonum_a47/keymap.c

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/maartenwut/atom47/keymaps/junonum_a47/keymap.c

Co-Authored-By: fauxpark <fauxpark@gmail.com>

Co-authored-by: fauxpark <fauxpark@gmail.com>
2020-01-07 15:35:08 +11:00
Yan-Fa Li
5f795d8382 Add an 65_ansi community layout (#7793)
* Add an 65_ansi community layout

 - fix quoting because of comma in config.h

* Enable LAYOUT_65_ansi for tada68

* cleanups

* Update keyboards/tada68/tada68.h

Co-Authored-By: fauxpark <fauxpark@gmail.com>

Co-authored-by: fauxpark <fauxpark@gmail.com>
2020-01-06 15:29:27 -08:00
Drashna Jaelre
00d3061e02 [Keymap] Cleanup of Drashna code (#7800)
* ifdef rgb stuff like a madman for RGB Coexistance

* Re-enable RGB Light on Planck

* fix RGB Coexistance issue

* Tweak feature settings for Ergodox EZ Glow

* Their powers combine, and I am Captain RGB

This one is for noroadsleft and yan.

* Limit brightness when both RGB features are enabled

* Change shutdown method

* Add RGB Coexistience stuff to keymap

* disable RGBLIGHT_SLEEP until a solution can be found

* Disable Unicode on the kyria

* Fix up Iris rev defines

* Fix up community layouts to compile properly

* Cleanup rgb stuff

* Merge ergodox keymaps

* Update CCCV macro to use tap_code16

* Enable Solenoid on C39

Because josh couldn't

* Enable RGB Light, not Matrix on rev6 keymap

* Only enable LTO on non-ARM boards

* Clean up Bootmagic OLED display

* Enable RGBLIGHT_SPLIT on kyria

Not that it does anything

* Add hotkey for discord
2020-01-06 01:49:48 -08:00
Takeshi ISHII
b3b115bcc4 [Docs] Update check commands in Japanese documents (#7787)
The Japanese documents included a sample command to check the original document changes. But there was something wrong, so I fixed it.
2020-01-05 23:43:11 -08:00
Josh Hinnebusch
f2c61f8840 h75_singa changes (#7799) 2020-01-05 22:28:53 +00:00
Wilba
12c6f9a412 [Keyboard] Added VIA support to Efreet (#7788)
* Added Efreet

* Review changes
2020-01-05 00:18:36 -08:00
James Young
a68f514a8a [Keyboard] Add QMK support for Red Scarf I numberpads (#7767)
* Add support for Red Scarf I numberpads

* update info.json for configurator

* Update keyboards/redscarf_i/redscarf_i.c

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/redscarf_i/redscarf_i.h

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/redscarf_i/redscarf_i.h

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/redscarf_i/rules.mk

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/redscarf_i/info.json

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

* Update keyboards/redscarf_i/info.json

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

* Update keyboards/redscarf_i/info.json

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

* Update keyboards/redscarf_i/keymaps/4x5_ortho/keymap.c

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

* Update keyboards/redscarf_i/keymaps/4x5_ortho/keymap.c

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

* Update keyboards/redscarf_i/keymaps/4x6_ortho/keymap.c

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

* Update keyboards/redscarf_i/keymaps/4x6_ortho/keymap.c

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

* Update keyboards/redscarf_i/readme.md

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

* Update keyboards/redscarf_i/readme.md

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/redscarf_i/rules.mk

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* rename keymaps, add default

* final touches! i think we're there

* remove .gitignore from keymaps directory

* remove unused custom keycodes from ortho_custom_4x5 keymap

* remove ortho_custom_5x4 keymap (identical to ortho_5x4 keymap)

* remove firmware size impacts from rules.mk

* change "MCU selection" to "MCU name" in rules.mk

* complete matrix array for LAYOUT_ortho_5x4 macro

Probably not needed, but I like when it's complete.

* add numpad layout macros

* correct info.json data

* update readme

Co-Authored-By: Ben Weakley <2173281+Defying@users.noreply.github.com>

* rename ortho keymaps to rows by columns per QMK convention

* rules.mk templating

* change uint32_t to layer_state_t per drashna

* use led_update_kb() per drashna

Co-authored-by: Ben Weakley <2173281+Defying@users.noreply.github.com>
Co-authored-by: fauxpark <fauxpark@gmail.com>
2020-01-04 17:06:24 -08:00
Hung DO
59c783df48 [Keyboard] Add support for db63 hotswap rbg (#7771)
* correct the matrix pin for db63

* first correct layout

* adding RGB support for db63

* adding backlighting keycode

* enable back extension

* update readme for the bootloader

* correct the capslock pin

* update correct info.json and layout following suggestion

* editing contact

* Update keyboards/db/db63/README.md

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

* Update keyboards/db/db63/README.md

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

Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2020-01-04 17:04:49 -08:00
James Young
d4b15cd93a [Keyboard] GH60 rev. C: fix LAYOUT_60_iso key sequence in QMK Configurator (#7792)
ISO Enter's key object was out of sequence.
2020-01-04 16:44:45 -08:00
Rossman360
2908f1f963 [Keymap] Rossman360 Userspace add (#7779)
* create userspace

* add early macro support, but gtg

* attempt to create userspace.

* all changes suggested
2020-01-04 12:51:33 -08:00
Joel Challis
dcb7ca3f79 Move some common matrix code to a common location (#7699)
* Move some common matrix code to a common location

* Refactor some 'custom_matrix_helper' logic to use custom matrix lite

* Fix build for kinesis/stapelberg - abuse of vpath was picking up matrix.c from core when custom matrix was enabled

* Add validation for CUSTOM_MATRIX
2020-01-04 20:29:44 +00:00
James Young
c1feeaa57f Update Breaking Changes doc for 2020-02-29 merge 2020-01-04 12:24:51 -08:00
shela
6e520a721d [Docs] fix installation commands for macos (#7785)
* [Docs] fix installation commands for macos

* Update docs/getting_started_build_tools.md
2020-01-03 22:57:59 -08:00
shela
8b80cf853b [Docs] Update Japanese translation (#7783)
* [Docs] Update translation

* Apply suggestions from code review

* Update docs/ja/config_options.md

* Update docs/ja/newbs_building_firmware.md

Co-Authored-By: Takeshi ISHII <2170248+mtei@users.noreply.github.com>
2020-01-03 22:57:03 -08:00
Jason Thigpen
0f43c26525 [Keymap] crd's personal keymap for hotswap leaf60 (#7777) 2020-01-03 16:38:59 -08:00
csc027
2c14172467 [Keymap] Added csc027 keymaps for keebio/iris and planck (#7472)
* Added csc027 user folder and keymaps for both keebio/iris and planck

* Moved the git_macros variable out of the process_record_user function.

* Updated the usb_led code to use the new led_update_user instead of the led_set_user function.

* Update users/csc027/defines.h

Removed the "_______" macro definition in defines.h, since it has already been defined in QMK.

* Update users/csc027/defines.h

Removed the "XXXXXXX" macro definition in defines.h, since it has already been defined in QMK.

* Update users/csc027/csc027.c

Simplified several keyboard macro definitions in the csc027.c file by switching from SS_LCTRL to SS_LCTL in their definitions.

* Condensed both the planck and iris rules files to the minimal set of declarations.
2020-01-03 14:12:53 -08:00
Wilba
320822d75b VIA Configurator Refactor (#7268)
* VIA Refactor

* Remove old code

* review changes

* review changes

* Fix cannonkeys/satisfaction75/prototype:via build

* Add via.h to quantum.h

* Move backlight init to after backlight config load

* Merge branch 'master' into via_refactor_pr

* Update user's rules.mk to new way of enabling VIA

* Added id_switch_matrix_state

* Review changes
2020-01-03 12:52:00 -08:00
ridingqwerty
b362595665 Merge pull request #7776 from hineybush/hbcp
small hbcp changes
2020-01-03 15:08:59 -05:00
hineybush
2dc0fd2b50 small hbcp changes 2020-01-03 14:32:54 -05:00
ridingqwerty
48eda75c83 Merge pull request #7762 from CurryFurious/userspace_curry
Adding custom userspace & 2 keymaps
2020-01-03 13:37:09 -05:00
ridingqwerty
3951f331c0 Merge pull request #7772 from Rossman360/dev_branch
add Levinson keymap
2020-01-03 11:12:55 -05:00
Akaash Suresh
2a7c715bc6 Fixed formatting and added font file 2020-01-03 08:55:47 -06:00
Rossman360
abca0ccf4a remove head 2020-01-03 03:19:53 -05:00
Rossman360
a1788a8398 remove unneccesary line 2020-01-03 03:15:43 -05:00
Rossman360
2f338c0608 more cleanup 2020-01-03 03:05:02 -05:00
Rossman360
c87d88be4d cleanup 2020-01-03 03:05:02 -05:00
Rossman360
ee5bf03767 Add Levinson keymap 2020-01-03 03:05:02 -05:00
Rossman360
983026ad8b [Keymap] adding tf68 keymap, my first pull request. expecting there's lots of bad practice, sorry (#7763)
* adding tf68 keymap

* had tf keymap in wrong folder

* added tragicforce readme

* cleaned up code

* more cleanup

* indent love and layer name change
2020-01-02 23:22:21 -08:00
Takeshi ISHII
3fd8f160c3 [Docs] Added description of LIB_SRC to docs/config_options.md (#7765)
And LINK_TIME_OPTIMIZATION_ENABLE move to 'Build Options' section.
2020-01-02 14:47:27 -08:00
Tom Saleeba
474f7f399c [Keyboard] add initial ergoslab directory (#7730)
* feat: add initial ergoslab directory

* fix: address all comments from noroadsleft

* fix: address comment from drashna

* feat: add swap hands config to ergoslab

* chore: change ergoslab image to real photo

* re
2020-01-02 14:40:13 -08:00
Josh Hinnebusch
61173dce5d [Keyboard] adjust h87a RGB settings (#7751)
* update VID and PID for h87a

* update default RGB underglow pattern

* update comments

* Update keyboards/hineybush/h87a/h87a.c

* Update keyboards/hineybush/h87a/h87a.c

* Update keyboards/hineybush/h87a/h87a.c
2020-01-02 14:35:05 -08:00
CurryFurious
5b8f1327d8 Removing unnecessary struct definitions
Removed userspace_config unused variables, and removed _NUMLOCK as it isn't used anywhere.
2020-01-02 16:26:09 -06:00
Casper Weiss Bang
dd04079098 Fixed a small typo (#7743) 2020-01-03 08:06:46 +11:00
Legonut
f08ffc2715 [Keyboard] Updates for Sol 2 (#7746)
Add Numpad to keymap
Fix OLED rotation
Add LED locations for Starfighter case
2020-01-02 13:03:19 -08:00
Gergely Peidl
2406c04d89 [Keymap] Personal keymap for Let's Split keyboard. (#7702)
* Add Initial layout configuration.

* Set arduino pro micro's built in RX LED as Numlock

* Enable Autoshift feautre.

* Remove DVORAK layout.

* Add Numpad, update default layer.

* Update AutoShift timeout.

* Beautify ASCII Art.

* Update keymap.

* Add Initial verison of RGB lighting.

* Add Tap dance, hungarian letters.

.Xmodmap example: 09f058753d

* Update RGB to use only noeeprom functions.

* Change default rgb led color.

* Add `pragma once`.

* Emojis added.

* Add tap dance for hungarian letters, multimedia control, slash/backslash.

* Remove audio related code.

* Add Gaming layer.

* Remove unnecessary code, update copyright.

* Add readme.md

* Implement code review suggestions.

* Implement code review suggestions #2
2020-01-02 12:03:47 -08:00
fauxpark
156d319604 Remove remnants of custom matrix from Skog rules.mk (#7764) 2020-01-02 19:50:25 +00:00
hvp
5404d6baef [Keymap] Hvp baseline19 (#7690)
* Added my UT47.2 Swedish layout with tap dance function.

* Move tap dance over to user space

* Removed config_common from config file

* Changes to workspace with new support for code16. Tested ok

* Swedish support

* Added code16 version of tapdance to userprofile.

* Created 4th layer and updated readme file. Removed ascii rep of layout.

* Tabdance updates

* Removed duplicated RGB keys.

* Added hvp minivan config

* Fixed tapdance key maps

* Added Planck 1 space base hvp layout

* Start of hvp xd75 layout. Way to many keys

* Added working config ink test for atreus62

* fixed smaller layout changes

* Updated tap dance with option 5

* Added better thump keys

* Created lets split layout

* Removed not used modes

* Updated to correct url

* Readme file

* Atreus62 readme

* Cleanup of keymap file

* Added tap dance

* Fixed missed adjustment

* Added hvp planck setup

* Update ascii

* will this work better?

* removed ascii

* Planck 1 space setup

* Fixed ascii local

* Added Corne setup

* Changes for lets split

* Atreus62 config

* Added Lily58

* Setup corne

* Setup planck

* Updated lets split

* UT47 setup

* Setup a The Vanboard.

* Alt Ctrl

* #define D_NAVI MT(MOD_LCTL | MOD_LSFT, KC_D)

* Fix D_NAVI & plank midi

* Fixed PR comments

* Added pragma

* Moved def to user space

* Removed not used endif

* Added def to users space

* Added rules to van

* Removed not used part of config

* Removed not used layout

* Removed not needed comments

* Remove not needed keymap_config_t

* Removed broken ascii from readme files and removed not needed rules

* Added spaces to readme file

* Removed xd75 from branch
2020-01-02 11:31:54 -08:00
Akaash Suresh
291ef064a7 Formatting 2020-01-02 12:22:22 -06:00
Akaash Suresh
a0a6e24788 Added license and readme 2020-01-02 12:13:39 -06:00
Akaash Suresh
3650d59afe Merge upstream/master with userspace 2020-01-02 11:52:23 -06:00
marhalloweenvt
53757f9705 [Keyboard] Add p65rgb PCB (#7753)
* [Keyboard] Add new keyboard Symmetry60

* Add new keyboard Symmetry60

* Fix Typo

* Update keyboards/handwired/symmetry60/config.h

* Update keyboards/handwired/symmetry60/readme.md

* Update keyboards/handwired/symmetry60/readme.md

* Update keyboards/handwired/symmetry60/readme.md

* Update keyboards/handwired/symmetry60/rules.mk

* Update keyboards/handwired/symmetry60/symmetry60.h

* Update keyboards/handwired/symmetry60/symmetry60.h

* Update keyboards/handwired/symmetry60/symmetry60.h

* Update readme.md

* Update keymap.c

* Update keymap.c

* Update keymap.c

* Update rules.mk

* Update symmetry60.c

* Update keyboards/handwired/symmetry60/rules.mk

* Add ColorLice

* Update ColorLice

- Adjust info.json to support Configurator
- Adjust layout name to fit with info.json
- Seperate 2 feature: RGB Switch and RGB Underglow

* Update new way of control lock leds

* Remove #ifndef COLORLICE_H

* Update make example

* Revert Helix

* Revert Helix

* Revert Helix

* Revert Helix

* Update keyboards/handwired/colorlice/colorlice.h

* Update keyboards/handwired/colorlice/colorlice.h

* Update default keymap

* Revert Helix

* Update keyboards/handwired/colorlice/readme.md

* Update keyboards/handwired/colorlice/rules.mk

* Update keyboards/handwired/colorlice/colorlice.c

* Update keyboards/handwired/colorlice/colorlice.c

* Remove unnecessary function

* Update keyboards/handwired/colorlice/colorlice.c

* Adjust rules option for working with Configurator

- Move RGB_MATRIX_ENABLE and RGBLIGHT_ENABLE to keyboard rule.
- Add RGB_DI_PIN in keyboard config

* Update keyboards/helix/rev2/keymaps/default/keymap.c

* Update keyboards/handwired/colorlice/readme.md

* Update keymap for Colorlice

* Adjust rules.mk to use space indent

* Update ColorLice to work with QMK online configurator

- Delete rgb_underglow keymap
- Move config from keymap layer to keyboard layer
- Tweak a little layout so it can appear default layout on QMK config

* Update keyboards/handwired/colorlice/rules.mk

* Update keyboards/handwired/colorlice/rules.mk

* Add p65rgb

* Update keyboards/handwired/p65rgb/config.h

* Update p65rgb.c

* Update keymap.c

* Update rules.mk
2020-01-02 08:57:47 -08:00
xyzz
8ec0b378bc Fix typo in action.c (#7757) 2020-01-02 12:49:53 +00:00
fauxpark
2557bc8e6f Remove custom matrix from PS2AVRGB boards (#7396)
* Remove custom matrix from PS2AVRGB boards

* Add custom backlight.c to SRC for bminiex, for now

* Add missing DIODE_DIRECTIONs
2020-01-02 17:45:41 +11:00
Drashna Jaelre
b83e3ae556 [Keyboard] Ergodox EZ - Re-init ISSI driver on reconnect (#7731) 2020-01-01 22:42:04 -08:00
William Chang
dff4f13c19 updated keys and cleaned up readme 2020-01-01 22:31:00 -08:00
Jianfei Wang
77f66cc5e1 [Keyboard] add Just60 keyboard (#7752)
* [Keyboard] add Just60 keyboard

* [Keyboard] just60: fixes per suggestions

* Update keyboards/just60/rules.mk

* Update keyboards/just60/readme.md

* Update keyboards/just60/rules.mk

* [Keyboard] just60: add keymap specific bootloader

* Revert "[Keyboard] just60: add keymap specific bootloader"

This reverts commit 0357e0a6f4.
2020-01-01 22:28:05 -08:00
Benjamin Smith
86815edc31 [Keyboard] Change cKeys Washington keyboard to use atmel-dfu bootloader (#7756) 2020-01-01 20:19:41 -08:00
Xyverz
45482d612c Update Kinesis keymap (#7741)
* Update Kinesis keymap

Added a MACLOCK macro to lock my mac easier

* Updated readme.md
2020-01-02 15:01:37 +11:00
umi
91013d452f [Docs] add japanese translation (faq part) (#7464)
* add faq part

* add faq part

* add faq part

* add faq part

* add faq part

* update for link

* update for a punctuation

* update files based on comments

* restore removed git diff header

* correct pathname on git diff header

* update files based on comments

* update files based on comments

* update files based on comments

* update files based on comments

* update file based on comment

* update file based on comment

* update file based on comment

Co-Authored-By: Takeshi ISHII <2170248+mtei@users.noreply.github.com>
Co-Authored-By: shela <shelaf@users.noreply.github.com>
Co-Authored-By: satt99 <39004890+satt99@users.noreply.github.com>
2020-01-01 18:06:55 -08:00
Arda Kılıçdağı
c4061f003c [Keyboard] Aranck handwired keyboard to support community MIT layouts, also minor optimisations done (#7737)
* Aranck now supports community MIT layouts, also minor optimisations done

* Update keyboards/handwired/aranck/keymaps/turkishish/readme.md

* Update keyboards/handwired/aranck/readme.md
2020-01-01 09:44:22 -08:00
William Chang
051faf4b64 Merge branch 'feature/billiams_space65' of github.com:billiams/qmk_firmware into feature/billiams_space65 2019-12-08 10:41:53 -08:00
William Chang
2d94e02ea1 remove unnecessary code from keymap 2019-12-08 10:39:26 -08:00
William Chang
013ac11c95 Update keyboards/gray_studio/space65/keymaps/billiams/keymap.c
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
2019-12-08 10:34:24 -08:00
William Chang
dc2ed13a1c Update keyboards/gray_studio/space65/keymaps/billiams/readme.md
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
2019-12-08 10:33:06 -08:00
William Chang
6e463c8084 Update keyboards/gray_studio/space65/keymaps/billiams/readme.md
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
2019-12-08 10:32:55 -08:00
William Chang
3cd7cb81d4 Update keyboards/gray_studio/space65/keymaps/billiams/readme.md
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
2019-12-08 10:32:38 -08:00
William Chang
d5e0f21798 Update keyboards/gray_studio/space65/keymaps/billiams/readme.md
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
2019-12-08 10:31:33 -08:00
William Chang
1290039d7e Added keymap profile to space65
- This keymap profile is for MacOS with VIM key bindings
- See readme for more information
2019-12-07 12:50:41 -08:00
William Chang
e7541faadc update flash script per pull request review 2019-12-06 17:05:36 -08:00
William Chang
6bcaf01c3f add layout 2 and rename existing folder to layout 4
- renamed existing folder with directional layout to layout 4
- udpated existing readme
- Added layout_60_2
2019-11-20 23:03:47 -08:00
William Chang
e7f4d56592 Merge remote-tracking branch 'upstream/master' 2019-11-20 22:17:07 -08:00
William Chang
71493b2f9b Merge branch 'master' of https://github.com/qmk/qmk_firmware 2019-07-13 10:18:33 -07:00
William Chang
86ad4988fe Merge branch 'master' of https://github.com/billiams/qmk_firmware 2019-05-10 16:45:29 -07:00
William Chang
10975bd4c0 fixed conflict in readme 2019-05-10 16:44:13 -07:00
William Chang
8d8f2d09cc Merge pull request #2 from billiams/feature/billiams
Updated readme
2019-05-09 21:18:39 -07:00
William Chang
9ce186860e Merge branch 'qmk-master' 2019-05-09 21:16:15 -07:00
William Chang
4b2d3288d0 resolved conflicts 2019-05-09 21:16:06 -07:00
William Chang
7b0200660e Updated readme 2019-05-09 20:59:11 -07:00
William Chang
57a6ea11df updated R_Alt to remove shift 2019-04-25 10:38:18 -07:00
William Chang
89e8e0d277 updated right alt key to apply shift key for emacs 2019-04-25 10:27:04 -07:00
William Chang
d7c5cf6e5b Merge branch 'master' of https://github.com/billiams/qmk_firmware 2019-04-22 14:56:41 -07:00
William Chang
a41e6804fc swapped media control keys 2019-04-22 14:56:30 -07:00
William Chang
da1dc28d31 Rename README.md to readme.md 2019-04-20 17:06:32 -07:00
William Chang
b42ca9bc5f Merge branch 'master' of https://github.com/billiams/qmk_firmware 2019-04-20 17:03:57 -07:00
William Chang
42cb78f98e Made requested changes in PR. 2019-04-20 17:01:18 -07:00
William Chang
dc3a8ddb6b Update README.md 2019-04-20 13:59:07 -07:00
William Chang
472060d333 Update README.md 2019-04-20 13:11:16 -07:00
William Chang
5b80e10b82 Update README.md 2019-04-20 13:07:59 -07:00
William Chang
7f8b0906c6 Update README.md 2019-04-20 13:06:40 -07:00
William Chang
fa73d43818 Update README.md 2019-04-20 13:05:34 -07:00
William Chang
5a86db2259 Update README.md 2019-04-20 13:04:48 -07:00
William Chang
a5337b3495 fixed numbering in readme 2019-04-20 12:43:05 -07:00
William Chang
cd379c69a0 Modified keymap and updated readme. 2019-04-20 12:41:28 -07:00
William Chang
156fd4e969 Initial commit 2019-04-20 12:09:47 -07:00
2941 changed files with 97982 additions and 44109 deletions

28
.github/workflows/cli.yml vendored Normal file
View File

@@ -0,0 +1,28 @@
name: CLI CI
on:
push:
branches:
- master
- future
pull_request:
paths:
- 'lib/python/**'
- 'bin/qmk'
- 'requirements.txt'
- '.github/workflows/cli.yml'
jobs:
test:
runs-on: ubuntu-latest
container: qmkfm/base_container
steps:
- uses: actions/checkout@v1
with:
submodules: recursive
- name: Install dependencies
run: pip3 install -r requirements.txt
- name: Run tests
run: bin/qmk pytest

6
.gitignore vendored
View File

@@ -63,9 +63,6 @@ util/Win_Check_Output.txt
*.gif
*.jpg
# Do not ignore MiniDox left/right hand eeprom files
!keyboards/minidox/*.eep
# things travis sees
secrets.tar
id_rsa_*
@@ -73,3 +70,6 @@ id_rsa_*
# python things
__pycache__
# prerequisites for updating ChibiOS
/util/fmpp*

1
.gitmodules vendored
View File

@@ -4,7 +4,6 @@
[submodule "lib/chibios-contrib"]
path = lib/chibios-contrib
url = https://github.com/qmk/ChibiOS-Contrib
branch = k-type-fix
[submodule "lib/ugfx"]
path = lib/ugfx
url = https://github.com/qmk/uGFX

View File

@@ -12,6 +12,18 @@ env:
- MAKEFLAGS="-j3 --output-sync"
services:
- docker
addons:
apt:
sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-trusty-7
packages:
- pandoc
- diffutils
- dos2unix
- doxygen
- clang-format-7
- libstdc++-7-dev
install:
- npm install -g moxygen
script:
@@ -20,13 +32,6 @@ script:
- bash util/travis_test.sh
- bash util/travis_build.sh
- bash util/travis_docs.sh
addons:
apt:
packages:
- pandoc
- diffutils
- dos2unix
- doxygen
after_script:
bash util/travis_compiled_push.sh
notifications:

View File

@@ -5,7 +5,8 @@
// Configure glob patterns for excluding files and folders.
"files.exclude": {
"**/.build": true,
"**/*.hex": true
"**/*.hex": true,
"**/*.bin": true
},
"files.associations": {
"*.h": "c",

View File

@@ -623,13 +623,19 @@ endif
# Generate the version.h file
ifndef SKIP_GIT
GIT_VERSION := $(shell git describe --abbrev=6 --dirty --always --tags 2>/dev/null || date +"%Y-%m-%d-%H:%M:%S")
CHIBIOS_VERSION := $(shell cd lib/chibios && git describe --abbrev=6 --dirty --always --tags 2>/dev/null || date +"%Y-%m-%d-%H:%M:%S")
CHIBIOS_CONTRIB_VERSION := $(shell cd lib/chibios-contrib && git describe --abbrev=6 --dirty --always --tags 2>/dev/null || date +"%Y-%m-%d-%H:%M:%S")
else
GIT_VERSION := NA
CHIBIOS_VERSION := NA
CHIBIOS_CONTRIB_VERSION := NA
endif
ifndef SKIP_VERSION
BUILD_DATE := $(shell date +"%Y-%m-%d-%H:%M:%S")
$(shell echo '#define QMK_VERSION "$(GIT_VERSION)"' > $(ROOT_DIR)/quantum/version.h)
$(shell echo '#define QMK_BUILDDATE "$(BUILD_DATE)"' >> $(ROOT_DIR)/quantum/version.h)
$(shell echo '#define CHIBIOS_VERSION "$(CHIBIOS_VERSION)"' >> $(ROOT_DIR)/quantum/version.h)
$(shell echo '#define CHIBIOS_CONTRIB_VERSION "$(CHIBIOS_CONTRIB_VERSION)"' >> $(ROOT_DIR)/quantum/version.h)
else
BUILD_DATE := NA
endif

View File

@@ -61,7 +61,7 @@ endif
ifeq ($(strip $(STENO_ENABLE)), yes)
OPT_DEFS += -DSTENO_ENABLE
VIRTSER_ENABLE := yes
VIRTSER_ENABLE ?= yes
SRC += $(QUANTUM_DIR)/process_keycode/process_steno.c
endif
@@ -82,19 +82,19 @@ endif
ifeq ($(strip $(UCIS_ENABLE)), yes)
OPT_DEFS += -DUCIS_ENABLE
UNICODE_COMMON = yes
UNICODE_COMMON := yes
SRC += $(QUANTUM_DIR)/process_keycode/process_ucis.c
endif
ifeq ($(strip $(UNICODEMAP_ENABLE)), yes)
OPT_DEFS += -DUNICODEMAP_ENABLE
UNICODE_COMMON = yes
UNICODE_COMMON := yes
SRC += $(QUANTUM_DIR)/process_keycode/process_unicodemap.c
endif
ifeq ($(strip $(UNICODE_ENABLE)), yes)
OPT_DEFS += -DUNICODE_ENABLE
UNICODE_COMMON = yes
UNICODE_COMMON := yes
SRC += $(QUANTUM_DIR)/process_keycode/process_unicode.c
endif
@@ -102,18 +102,69 @@ ifeq ($(strip $(UNICODE_COMMON)), yes)
SRC += $(QUANTUM_DIR)/process_keycode/process_unicode_common.c
endif
VALID_EEPROM_DRIVER_TYPES := vendor custom transient i2c
EEPROM_DRIVER ?= vendor
ifeq ($(filter $(EEPROM_DRIVER),$(VALID_EEPROM_DRIVER_TYPES)),)
$(error EEPROM_DRIVER="$(EEPROM_DRIVER)" is not a valid EEPROM driver)
else
OPT_DEFS += -DEEPROM_ENABLE
ifeq ($(strip $(EEPROM_DRIVER)), custom)
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_CUSTOM
COMMON_VPATH += $(DRIVER_PATH)/eeprom
SRC += eeprom_driver.c
else ifeq ($(strip $(EEPROM_DRIVER)), i2c)
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_I2C
COMMON_VPATH += $(DRIVER_PATH)/eeprom
QUANTUM_LIB_SRC += i2c_master.c
SRC += eeprom_driver.c eeprom_i2c.c
else ifeq ($(strip $(EEPROM_DRIVER)), transient)
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_TRANSIENT
COMMON_VPATH += $(DRIVER_PATH)/eeprom
SRC += eeprom_driver.c eeprom_transient.c
else ifeq ($(strip $(EEPROM_DRIVER)), vendor)
OPT_DEFS += -DEEPROM_VENDOR
ifeq ($(PLATFORM),AVR)
# Automatically provided by avr-libc, nothing required
else ifeq ($(PLATFORM),CHIBIOS)
ifeq ($(MCU_SERIES), STM32F3xx)
SRC += $(PLATFORM_COMMON_DIR)/eeprom_stm32.c
SRC += $(PLATFORM_COMMON_DIR)/flash_stm32.c
OPT_DEFS += -DEEPROM_EMU_STM32F303xC
OPT_DEFS += -DSTM32_EEPROM_ENABLE
else ifeq ($(MCU_SERIES), STM32F1xx)
SRC += $(PLATFORM_COMMON_DIR)/eeprom_stm32.c
SRC += $(PLATFORM_COMMON_DIR)/flash_stm32.c
OPT_DEFS += -DEEPROM_EMU_STM32F103xB
OPT_DEFS += -DSTM32_EEPROM_ENABLE
else ifeq ($(MCU_SERIES)_$(MCU_LDSCRIPT), STM32F0xx_STM32F072xB)
SRC += $(PLATFORM_COMMON_DIR)/eeprom_stm32.c
SRC += $(PLATFORM_COMMON_DIR)/flash_stm32.c
OPT_DEFS += -DEEPROM_EMU_STM32F072xB
OPT_DEFS += -DSTM32_EEPROM_ENABLE
else
# This will effectively work the same as "transient" if not supported by the chip
SRC += $(PLATFORM_COMMON_DIR)/eeprom_teensy.c
endif
else ifeq ($(PLATFORM),ARM_ATSAM)
SRC += $(PLATFORM_COMMON_DIR)/eeprom.c
else ifeq ($(PLATFORM),TEST)
SRC += $(PLATFORM_COMMON_DIR)/eeprom.c
endif
endif
endif
ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
POST_CONFIG_H += $(QUANTUM_DIR)/rgblight_post_config.h
OPT_DEFS += -DRGBLIGHT_ENABLE
SRC += $(QUANTUM_DIR)/color.c
SRC += $(QUANTUM_DIR)/rgblight.c
CIE1931_CURVE = yes
LED_BREATHING_TABLE = yes
RGB_KEYCODES_ENABLE = yes
CIE1931_CURVE := yes
LED_BREATHING_TABLE := yes
RGB_KEYCODES_ENABLE := yes
ifeq ($(strip $(RGBLIGHT_CUSTOM_DRIVER)), yes)
OPT_DEFS += -DRGBLIGHT_CUSTOM_DRIVER
else
WS2812_DRIVER_REQUIRED = yes
WS2812_DRIVER_REQUIRED := yes
endif
endif
@@ -124,7 +175,9 @@ ifneq ($(strip $(LED_MATRIX_ENABLE)), no)
ifeq ($(filter $(LED_MATRIX_ENABLE),$(VALID_MATRIX_TYPES)),)
$(error LED_MATRIX_ENABLE="$(LED_MATRIX_ENABLE)" is not a valid matrix type)
else
OPT_DEFS += -DLED_MATRIX_ENABLE -DBACKLIGHT_ENABLE -DBACKLIGHT_CUSTOM_DRIVER
BACKLIGHT_ENABLE = yes
BACKLIGHT_DRIVER = custom
OPT_DEFS += -DLED_MATRIX_ENABLE
SRC += $(QUANTUM_DIR)/led_matrix.c
SRC += $(QUANTUM_DIR)/led_matrix_drivers.c
endif
@@ -147,12 +200,12 @@ endif
SRC += $(QUANTUM_DIR)/color.c
SRC += $(QUANTUM_DIR)/rgb_matrix.c
SRC += $(QUANTUM_DIR)/rgb_matrix_drivers.c
CIE1931_CURVE = yes
RGB_KEYCODES_ENABLE = yes
CIE1931_CURVE := yes
RGB_KEYCODES_ENABLE := yes
endif
ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes)
RGB_MATRIX_ENABLE = IS31FL3731
RGB_MATRIX_ENABLE := IS31FL3731
endif
ifeq ($(strip $(RGB_MATRIX_ENABLE)), IS31FL3731)
@@ -178,7 +231,7 @@ endif
ifeq ($(strip $(RGB_MATRIX_ENABLE)), WS2812)
OPT_DEFS += -DWS2812
WS2812_DRIVER_REQUIRED = yes
WS2812_DRIVER_REQUIRED := yes
endif
ifeq ($(strip $(RGB_MATRIX_CUSTOM_KB)), yes)
@@ -232,12 +285,12 @@ endif
endif
ifeq ($(strip $(LCD_ENABLE)), yes)
CIE1931_CURVE = yes
CIE1931_CURVE := yes
endif
# backward compat
ifeq ($(strip $(BACKLIGHT_CUSTOM_DRIVER)), yes)
BACKLIGHT_DRIVER = custom
BACKLIGHT_DRIVER := custom
endif
VALID_BACKLIGHT_TYPES := pwm software custom
@@ -245,25 +298,20 @@ VALID_BACKLIGHT_TYPES := pwm software custom
BACKLIGHT_ENABLE ?= no
BACKLIGHT_DRIVER ?= pwm
ifeq ($(strip $(BACKLIGHT_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/process_keycode/process_backlight.c
ifeq ($(filter $(BACKLIGHT_DRIVER),$(VALID_BACKLIGHT_TYPES)),)
$(error BACKLIGHT_DRIVER="$(BACKLIGHT_DRIVER)" is not a valid backlight type)
endif
ifeq ($(strip $(VISUALIZER_ENABLE)), yes)
CIE1931_CURVE = yes
endif
COMMON_VPATH += $(QUANTUM_DIR)/backlight
SRC += $(QUANTUM_DIR)/backlight/backlight.c
OPT_DEFS += -DBACKLIGHT_ENABLE
ifeq ($(strip $(BACKLIGHT_DRIVER)), software)
ifeq ($(strip $(BACKLIGHT_DRIVER)), custom)
OPT_DEFS += -DBACKLIGHT_CUSTOM_DRIVER
else ifeq ($(strip $(BACKLIGHT_DRIVER)), software)
SRC += $(QUANTUM_DIR)/backlight/backlight_soft.c
else
ifeq ($(strip $(BACKLIGHT_DRIVER)), custom)
OPT_DEFS += -DBACKLIGHT_CUSTOM_DRIVER
endif
ifeq ($(PLATFORM),AVR)
SRC += $(QUANTUM_DIR)/backlight/backlight_avr.c
else
@@ -280,6 +328,8 @@ ifeq ($(strip $(WS2812_DRIVER_REQUIRED)), yes)
$(error WS2812_DRIVER="$(WS2812_DRIVER)" is not a valid WS2812 driver)
endif
OPT_DEFS += -DWS2812_DRIVER_$(strip $(shell echo $(WS2812_DRIVER) | tr '[:lower:]' '[:upper:]'))
ifeq ($(strip $(WS2812_DRIVER)), bitbang)
SRC += ws2812.c
else
@@ -292,14 +342,18 @@ ifeq ($(strip $(WS2812_DRIVER_REQUIRED)), yes)
endif
endif
ifeq ($(strip $(VISUALIZER_ENABLE)), yes)
CIE1931_CURVE := yes
endif
ifeq ($(strip $(CIE1931_CURVE)), yes)
OPT_DEFS += -DUSE_CIE1931_CURVE
LED_TABLES = yes
LED_TABLES := yes
endif
ifeq ($(strip $(LED_BREATHING_TABLE)), yes)
OPT_DEFS += -DUSE_LED_BREATHING_TABLE
LED_TABLES = yes
LED_TABLES := yes
endif
ifeq ($(strip $(LED_TABLES)), yes)
@@ -349,6 +403,14 @@ ifeq ($(strip $(VELOCIKEY_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/velocikey.c
endif
ifeq ($(strip $(VIA_ENABLE)), yes)
DYNAMIC_KEYMAP_ENABLE := yes
RAW_ENABLE := yes
BOOTMAGIC_ENABLE := lite
SRC += $(QUANTUM_DIR)/via.c
OPT_DEFS += -DVIA_ENABLE
endif
ifeq ($(strip $(DYNAMIC_KEYMAP_ENABLE)), yes)
OPT_DEFS += -DDYNAMIC_KEYMAP_ENABLE
SRC += $(QUANTUM_DIR)/dynamic_keymap.c
@@ -359,6 +421,12 @@ ifeq ($(strip $(LEADER_ENABLE)), yes)
OPT_DEFS += -DLEADER_ENABLE
endif
ifeq ($(strip $(DIP_SWITCH_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/dip_switch.c
OPT_DEFS += -DDIP_SWITCH_ENABLE
endif
include $(DRIVER_PATH)/qwiic/qwiic.mk
QUANTUM_SRC:= \
@@ -366,12 +434,28 @@ QUANTUM_SRC:= \
$(QUANTUM_DIR)/keymap_common.c \
$(QUANTUM_DIR)/keycode_config.c
# Include the standard or split matrix code if needed
VALID_CUSTOM_MATRIX_TYPES:= yes lite no
CUSTOM_MATRIX ?= no
ifneq ($(strip $(CUSTOM_MATRIX)), yes)
ifeq ($(strip $(SPLIT_KEYBOARD)), yes)
QUANTUM_SRC += $(QUANTUM_DIR)/split_common/matrix.c
else
QUANTUM_SRC += $(QUANTUM_DIR)/matrix.c
ifeq ($(filter $(CUSTOM_MATRIX),$(VALID_CUSTOM_MATRIX_TYPES)),)
$(error CUSTOM_MATRIX="$(CUSTOM_MATRIX)" is not a valid custom matrix type)
endif
# Include common stuff for all non custom matrix users
QUANTUM_SRC += $(QUANTUM_DIR)/matrix_common.c
# if 'lite' then skip the actual matrix implementation
ifneq ($(strip $(CUSTOM_MATRIX)), lite)
# Include the standard or split matrix code if needed
ifeq ($(strip $(SPLIT_KEYBOARD)), yes)
QUANTUM_SRC += $(QUANTUM_DIR)/split_common/matrix.c
else
QUANTUM_SRC += $(QUANTUM_DIR)/matrix.c
endif
endif
endif
@@ -394,9 +478,17 @@ ifeq ($(strip $(SPLIT_KEYBOARD)), yes)
QUANTUM_SRC += $(QUANTUM_DIR)/split_common/transport.c
# Functions added via QUANTUM_LIB_SRC are only included in the final binary if they're called.
# Unused functions are pruned away, which is why we can add multiple drivers here without bloat.
QUANTUM_LIB_SRC += $(QUANTUM_DIR)/split_common/serial.c \
i2c_master.c \
i2c_slave.c
ifeq ($(PLATFORM),AVR)
QUANTUM_LIB_SRC += i2c_master.c \
i2c_slave.c
endif
SERIAL_DRIVER ?= bitbang
ifeq ($(strip $(SERIAL_DRIVER)), bitbang)
QUANTUM_LIB_SRC += serial.c
else
QUANTUM_LIB_SRC += serial_$(strip $(SERIAL_DRIVER)).c
endif
endif
COMMON_VPATH += $(QUANTUM_PATH)/split_common
endif
@@ -420,12 +512,13 @@ ifeq ($(strip $(MAGIC_ENABLE)), yes)
OPT_DEFS += -DMAGIC_KEYCODE_ENABLE
endif
GRAVE_ESC_ENABLE ?= yes
ifeq ($(strip $(GRAVE_ESC_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/process_keycode/process_grave_esc.c
OPT_DEFS += -DGRAVE_ESC_ENABLE
endif
ifeq ($(strip $(DYNAMIC_MACRO_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/process_keycode/process_dynamic_macro.c
OPT_DEFS += -DDYNAMIC_MACRO_ENABLE
endif
ifeq ($(strip $(DIP_SWITCH_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/dip_switch.c
OPT_DEFS += -DDIP_SWITCH_ENABLE
endif

View File

@@ -0,0 +1,75 @@
# QMK Breaking Change - 2020 Feb 29 Changelog
Four times a year QMK runs a process for merging Breaking Changes. A Breaking Change is any change which modifies how QMK behaves in a way that is incompatible or potentially dangerous. We limit these changes to 4 times per year so that users can have confidence that updating their QMK tree will not break their keymaps.
## Update ChibiOS/ChibiOS-Contrib/uGFX submodules
* General Notes
* A `make git-submodule` may be required after pulling the latest QMK firmware code to update affected submodules to the upgraded revisions
* Enabling link-time-optimization (`LINK_TIME_OPTIMIZATION_ENABLE = yes`) should work on a lot more boards
* Upgrade to ChibiOS ver19.1.3
* This will allow QMK to update to upstream ChibiOS a lot easier -- the old version was ~2 years out of date. Automated update scripts have been made available to simplify future upgrades.
* Includes improved MCU support and bugfixes
* ChibiOS revision is now included in Command output
* Timers should now be more accurate
* Upgrade to newer ChibiOS-Contrib
* Also includes improved MCU support and bugfixes
* ChibiOS-Contrib revision is now included in Command output
* Upgrade to newer uGFX
* Required in order to support updated ChibiOS
## Fix ChibiOS timer overflow for 16-bit SysTick devices
* On 16-bit SysTick devices, the timer subsystem in QMK was incorrectly dealing with overflow.
* When running at a 100000 SysTick frequency (possible on 16-bit devices, but uncommon), this overflow would occur after 0.65 seconds.
* Timers are now correctly handling this overflow case and timing should now be correct on ChibiOS/ARM.
## Update LUFA submodule
* Updates the LUFA submodule to include updates from upstream (abcminiuser/lufa)
* Includes some cleanup for QMK DFU generation
## Encoder flip
* Flips the encoder direction so that `clockwise == true` is for actually turning the knob clockwise
* Adds `ENCODER_DIRECTION_FLIP` define, so that reversing the expected dirction is simple for users.
* Cleans up documentation page for encoders
## Adding support for `BACKLIGHT_ON_STATE` for hardware PWM backlight
* Previously, the define only affected software PWM, and hardware PWM always assumed an N-channel MOSFET.
* The hardware PWM backlight setup has been updated to respect this option.
* The default "on" state has been changed to `1` - **this impacts all keyboards using software PWM backlight that do not define it explicitly**. If your keyboard's backlight is acting strange, it may have a P-channel MOSFET, and will need to have `#define BACKLIGHT_ON_STATE 0` added to the keyboard-level `config.h`. Please see the PR for more detailed information.
## Migrating `ACTION_LAYER_TAP_KEY()` entries in `fn_actions` to `LT()` keycodes
* `fn_actions` is deprecated, and its functionality has been superseded by direct keycodes and `process_record_user()`
* The end result of removing this obsolete feature should result in a decent reduction in firmware size and code complexity
* All keymaps affected are recommended to switch away from `fn_actions` in favour of the [custom keycode](https://docs.qmk.fm/#/custom_quantum_functions) and [macro](https://docs.qmk.fm/#/feature_macros) features
## Moving backlight keycode handling to `process_keycode/`
* This refactors the backlight keycode logic to be clearer and more modular.
* All backlight-related keycodes are now actioned in a single file.
* The `ACTION_BACKLIGHT_*` macros have also been deleted. If you are still using these in a `fn_actions[]` block, please switch to using the backlight keycodes or functions directly.
## Refactor Planck keymaps to use Layout Macros
* Refactor Planck keymaps to use layout macros instead of raw matrix assignments
* Makes keymaps revision-agnostic
* Should reduce noise and errors in Travis CI logs
## GON NerD codebase refactor
* Splits the codebase for GON NerD 60 and NerdD TKL PCBs into two separate directories.
* If your keymap is for a NerD 60 PCB, your `make` command is now `make gon/nerd60:<keymap>`.
* If your keymap is for a NerD TKL PCB, your `make` command is now `make gon/nerdtkl:<keymap>`.

View File

@@ -18,6 +18,7 @@
* [Getting Help](getting_started_getting_help.md)
* [Breaking Changes](breaking_changes.md)
* [My Pull Request Was Flagged](breaking_changes_instructions.md)
* [2019 Aug 30](ChangeLog/20190830.md)
* [FAQ](faq.md)
@@ -104,7 +105,9 @@
* [ADC Driver](adc_driver.md)
* [I2C Driver](i2c_driver.md)
* [WS2812 Driver](ws2812_driver.md)
* [EEPROM Driver](eeprom_driver.md)
* [GPIO Controls](internals_gpio_control.md)
* [Custom Matrix](custom_matrix.md)
* [Proton C Conversion](proton_c_conversion.md)
* For a Deeper Understanding

View File

@@ -10,16 +10,16 @@ The breaking change period is when we will merge PR's that change QMK in dangero
## When is the next Breaking Change?
The next Breaking Change is scheduled for Nov 29.
The next Breaking Change is scheduled for February 29, 2020.
### Important Dates
* [x] 2019 Sep 21 - `future` is created. It will be rebased weekly.
* [ ] 2019 Nov 01 - `future` closed to new PR's.
* [ ] 2019 Nov 01 - Call for testers.
* [ ] 2019 Nov 27 - `master` is locked, no PR's merged.
* [ ] 2019 Nov 29 - Merge `future` to `master`.
* [ ] 2019 Nov 30 - `master` is unlocked. PR's can be merged again.
* [x] 2020 Feb 1 - `future` closed to new PR's.
* [x] 2020 Feb 1 - Call for testers.
* [x] 2020 Feb 27 - `master` is locked, no PR's merged.
* [ ] 2020 Feb 29 - Merge `future` to `master`.
* [ ] 2020 Feb 29 - `master` is unlocked. PR's can be merged again.
## What changes will be included?

View File

@@ -0,0 +1,42 @@
# Breaking Changes: My Pull Request Was Flagged
A QMK member may have replied to your pull request stating that your submission is a breaking change. In their judgment, the changes you have proposed have greater implications for either QMK, or its users.
Some things that may cause a pull request to be flagged are:
- **Edits to User Keymaps**
A user may submit their keymap to QMK, then some time later open a pull request with further updates, only to find it can't be merged because it was edited in the `qmk/qmk_firmware` repository. As not all users are proficient at using Git or GitHub, the user may find themself unable to fix the issue on their own.
- **Changes to Expected Behavior**
Changes to QMK behavior may cause users to believe their hardware or QMK is broken if they flash new firmware that incorporates changes to existing QMK features, and find themselves without a means to restore the desired behavior.
- **Changes Requiring User Action**
Changes may also require action to be taken by users, such as updating a toolchain or taking some action in Git.
- **Changes Necessitating Increased Scrutiny**
On occasion, a submission may have implications for QMK as a project. This could be copyright/licensing issues, coding conventions, large feature overhauls, "high-risk" changes that need wider testing by our community, or something else entirely.
- **Changes Requiring Communication to End Users**
This includes warnings about future deprecations, outdated practices, and anything else that needs to be communicated but doesn't fit into one of the above categories.
## What Do I Do?
If it is determined that your submission is a breaking change, there are a few things you can do to smooth the process:
### Consider Splitting Up Your PR
If you are contributing core code, and the only reason it needs to go through breaking changes is that you are updating keymaps to match your change, consider whether you can submit your feature in a way that the old keymaps continue to work. Then submit a separate PR that goes through the breaking changes process to remove the old code.
### Contribute a ChangeLog Entry
We require submissions that go through the Breaking Change process to include a changelog entry. The entry should be a short summary of the changes your pull request makes &ndash; [each section here started as a changelog](ChangeLog/20190830.md "n.b. This should link to the 2019 Aug 30 Breaking Changes doc - @noroadsleft").
Your changelog should be located at `docs/ChangeLog/YYYYMMDD/PR####.md`, where `YYYYMMDD` is the date on which QMK's breaking change branch &ndash; usually named `future` &ndash; will be merged into the `master` branch, and `####` is the number of your pull request.
If your submission requires action on the part of users, your changelog should instruct users what action(s) must be taken, or link to a location that does so.
### Document Your Changes
Understanding the purpose for your submission, and possible implications or actions it will require can make the review process more straightforward. A changelog may suffice for this purpose, but more extensive changes may require a level of detail that is ill-suited for a changelog.
Commenting on your pull request and being responsive to questions, comments, and change requests is much appreciated.
### Ask for Help
Having your submission flagged may have caught you off guard. If you find yourself intimidated or overwhelmed, let us know. Comment on your pull request, or [reach out to the QMK team on Discord](https://discord.gg/Uq7gcHh).

View File

@@ -71,17 +71,39 @@ There are some limitations to the local CLI compared to the global CLI:
## `qmk cformat`
This command formats C code using clang-format. Run it with no arguments to format all core code, or pass filenames on the command line to run it on specific files.
This command formats C code using clang-format.
**Usage**:
Run it with no arguments to format all core code that has been changed. Default checks `origin/master` with `git diff`, branch can be changed using `-b <branch_name>`
Run it with `-a` to format all core code, or pass filenames on the command line to run it on specific files.
**Usage for specified files**:
```
qmk cformat [file1] [file2] [...] [fileN]
```
**Usage for all core files**:
```
qmk cformat -a
```
**Usage for only changed files against origin/master**:
```
qmk cformat
```
**Usage for only changed files against branch_name**:
```
qmk cformat -b branch_name
```
## `qmk compile`
This command allows you to compile firmware from any directory. You can compile JSON exports from <https://config.qmk.fm> or compile keymaps in the repo.
This command allows you to compile firmware from any directory. You can compile JSON exports from <https://config.qmk.fm>, compile keymaps in the repo, or compile the keyboard in the current working directory.
**Usage for Configurator Exports**:
@@ -95,6 +117,53 @@ qmk compile <configuratorExport.json>
qmk compile -kb <keyboard_name> -km <keymap_name>
```
**Usage in Keyboard Directory**:
Must be in keyboard directory with a default keymap, or in keymap directory for keyboard, or supply one with `--keymap <keymap_name>`
```
qmk compile
```
**Example**:
```
$ qmk config compile.keymap=default
$ cd ~/qmk_firmware/keyboards/planck/rev6
$ qmk compile
Ψ Compiling keymap with make planck/rev6:default
...
```
or with optional keymap argument
```
$ cd ~/qmk_firmware/keyboards/clueboard/66/rev4
$ qmk compile -km 66_iso
Ψ Compiling keymap with make clueboard/66/rev4:66_iso
...
```
or in keymap directory
```
$ cd ~/qmk_firmware/keyboards/gh60/satan/keymaps/colemak
$ qmk compile
Ψ Compiling keymap with make make gh60/satan:colemak
...
```
**Usage in Layout Directory**:
Must be under `qmk_firmware/layouts/`, and in a keymap folder.
```
qmk compile -kb <keyboard_name>
```
**Example**:
```
$ cd ~/qmk_firmware/layouts/community/60_ansi/mechmerlin-ansi
$ qmk compile -kb dz60
Ψ Compiling keymap with make dz60:mechmerlin-ansi
...
```
## `qmk flash`
This command is similar to `qmk compile`, but can also target a bootloader. The bootloader is optional, and is set to `:flash` by default.
@@ -141,14 +210,28 @@ qmk docs [-p PORT]
## `qmk doctor`
This command examines your environment and alerts you to potential build or flash problems.
This command examines your environment and alerts you to potential build or flash problems. It can fix many of them if you want it to.
**Usage**:
```
qmk doctor
qmk doctor [-y] [-n]
```
**Examples**:
Check your environment for problems and prompt to fix them:
qmk doctor
Check your environment and automatically fix any problems found:
qmk doctor -y
Check your environment and report problems only:
qmk doctor -n
## `qmk json-keymap`
Creates a keymap.c from a QMK Configurator export.
@@ -191,6 +274,16 @@ This command lists all the keyboards currently defined in `qmk_firmware`
qmk list-keyboards
```
## `qmk list-keymaps`
This command lists all the keymaps for a specified keyboard (and revision).
**Usage**:
```
qmk list-keymaps -kb planck/ez
```
## `qmk new-keymap`
This command creates a new keymap based on a keyboard's existing default keymap.

View File

@@ -309,6 +309,18 @@ FIXME(username): Revisit this code when the frob feature is done.
...where username is your GitHub username.
# Unit Tests
# Testing
These are good. We should have some one day.
We use a combination of Integration and Unit testing to ensure that the our code is as bug-free as possible. All the tests can be found in `lib/python/qmk/tests/`. You can run all the tests with `qmk pytest`.
At the time of this writing our tests are not very comprehensive. Looking at the current tests and writing new test cases for untested situations is a great way to both familiarize yourself with the codebase and contribute to QMK.
## Integration Tests
Integration tests can be found in `lib/python/qmk/tests/test_cli_commands.py`. This is where CLI commands are actually run and their overall behavior is verified. We use [`subprocess`](https://docs.python.org/3.5/library/subprocess.html#module-subprocess) to launch each CLI command and a combination of checking output and returncode to determine if the right thing happened.
## Unit Tests
The other `test_*.py` files in `lib/python/qmk/tests/` contain unit tests. You can write tests for individual functions inside `lib/python/qmk/` here. Generally these files are named after the module, with dots replaced by underscores.
At the time of this writing we do not do any mocking for our tests. If you would like to help us change this please [open an issue](https://github.com/qmk/qmk_firmware/issues/new?assignees=&labels=cli%2C+python&template=other_issues.md&title=) or [join #cli on Discord](https://discord.gg/heQPAgy) and start a conversation there.

View File

@@ -53,6 +53,8 @@ This is a C header file that is one of the first things included, and will persi
* pins of the rows, from top to bottom
* `#define MATRIX_COL_PINS { F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 }`
* pins of the columns, from left to right
* `#define MATRIX_IO_DELAY 30`
* the delay in microseconds when between changing matrix pin state and reading values
* `#define UNUSED_PINS { D1, D2, D3, B1, B2, B3 }`
* pins unused by the keyboard for reference
* `#define MATRIX_HAS_GHOST`
@@ -78,7 +80,7 @@ This is a C header file that is one of the first things included, and will persi
* `#define BACKLIGHT_PIN B7`
* pin of the backlight
* `#define BACKLIGHT_LEVELS 3`
* number of levels your backlight will have (maximum 15 excluding off)
* number of levels your backlight will have (maximum 31 excluding off)
* `#define BACKLIGHT_BREATHING`
* enables backlight breathing
* `#define BREATHING_PERIOD 6`
@@ -140,13 +142,19 @@ If you define these options you will enable the associated feature, which may in
* `#define PERMISSIVE_HOLD`
* makes tap and hold keys trigger the hold if another key is pressed before releasing, even if it hasn't hit the `TAPPING_TERM`
* See [Permissive Hold](feature_advanced_keycodes.md#permissive-hold) for details
* `#define PERMISSIVE_HOLD_PER_KEY`
* enabled handling for per key `PERMISSIVE_HOLD` settings
* `#define IGNORE_MOD_TAP_INTERRUPT`
* makes it possible to do rolling combos (zx) with keys that convert to other keys on hold, by enforcing the `TAPPING_TERM` for both keys.
* See [Mod tap interrupt](feature_advanced_keycodes.md#ignore-mod-tap-interrupt) for details
* `#define IGNORE_MOD_TAP_INTERRUPT_PER_KEY`
* enables handling for per key `IGNORE_MOD_TAP_INTERRUPT` settings
* `#define TAPPING_FORCE_HOLD`
* makes it possible to use a dual role key as modifier shortly after having been tapped
* See [Hold after tap](feature_advanced_keycodes.md#tapping-force-hold)
* Breaks any Tap Toggle functionality (`TT` or the One Shot Tap Toggle)
* `#define TAPPING_FORCE_HOLD_PER_KEY`
* enables handling for per key `TAPPING_FORCE_HOLD` settings
* `#define LEADER_TIMEOUT 300`
* how long before the leader key times out
* If you're having issues finishing the sequence before it times out, you may need to increase the timeout setting. Or you may want to enable the `LEADER_PER_KEY_TIMING` option, which resets the timeout after each key is tapped.
@@ -272,9 +280,12 @@ There are a few different ways to set handedness for split keyboards (listed in
* Default behavior for ARM
* Required for AVR Teensy
* `#define SPLIT_USB_TIMEOUT 2500`
* `#define SPLIT_USB_TIMEOUT 2000`
* Maximum timeout when detecting master/slave when using `SPLIT_USB_DETECT`
* `#define SPLIT_USB_TIMEOUT_POLL 10`
* Poll frequency when detecting master/slave when using `SPLIT_USB_DETECT`
# The `rules.mk` File
This is a [make](https://www.gnu.org/software/make/manual/make.html) file that is included by the top-level `Makefile`. It is used to set some information about the MCU that we will be compiling for as well as enabling and disabling certain features.
@@ -287,8 +298,27 @@ This is a [make](https://www.gnu.org/software/make/manual/make.html) file that i
* Defines which format (bin, hex) is copied to the root `qmk_firmware` folder after building.
* `SRC`
* Used to add files to the compilation/linking list.
* `LIB_SRC`
* Used to add files as a library to the compilation/linking list.
The files specified by `LIB_SRC` is linked after the files specified by `SRC`.
For example, if you specify:
```
SRC += a.c
LIB_SRC += lib_b.c
SRC += c.c
LIB_SRC += lib_d.c
```
The link order is as follows.
```
... a.o c.o ... lib_b.a lib_d.a ...
```
* `LAYOUTS`
* A list of [layouts](feature_layouts.md) this keyboard supports.
* `LINK_TIME_OPTIMIZATION_ENABLE`
* Enables Link Time Optimization (`LTO`) when compiling the keyboard. This makes the process take longer, but can significantly reduce the compiled size (and since the firmware is small, the added time is not noticeable). However, this will automatically disable the old Macros and Functions features automatically, as these break when `LTO` is enabled.
It does this by automatically defining `NO_ACTION_MACRO` and `NO_ACTION_FUNCTION`
* `LTO_ENABLE`
* It has the same meaning as LINK_TIME_OPTIMIZATION_ENABLE. You can use `LTO_ENABLE` instead of `LINK_TIME_OPTIMIZATION_ENABLE`.
## AVR MCU Options
* `MCU = atmega32u4`
@@ -347,9 +377,6 @@ Use these to enable or disable building certain features. The more you have enab
* Forces the keyboard to wait for a USB connection to be established before it starts up
* `NO_USB_STARTUP_CHECK`
* Disables usb suspend check after keyboard startup. Usually the keyboard waits for the host to wake it up before any tasks are performed. This is useful for split keyboards as one half will not get a wakeup call but must send commands to the master.
* `LINK_TIME_OPTIMIZATION_ENABLE`
* Enables Link Time Optimization (`LTO`) when compiling the keyboard. This makes the process take longer, but can significantly reduce the compiled size (and since the firmware is small, the added time is not noticeable). However, this will automatically disable the old Macros and Functions features automatically, as these break when `LTO` is enabled. It does this by automatically defining `NO_ACTION_MACRO` and `NO_ACTION_FUNCTION`
* Alternatively, you can use `LTO_ENABLE` instead of `LINK_TIME_OPTIMIZATION_ENABLE`.
## USB Endpoint Limitations

108
docs/custom_matrix.md Normal file
View File

@@ -0,0 +1,108 @@
# Custom Matrix
QMK provides a mechanism to supplement or replace the default matrix scanning routine with your own code.
The reasons to use this feature include:
* Extra hardware between the keyboard's switches and MCU pins
* I/O multiplexer
* Line decoder
* Irregular switch matrix
* Simultaneous use of `COL2ROW` and `ROW2COL`
## Prerequisites
Implementing custom matrix usually involves compilation of an additional source file. It is recommended that for consistency, this file is called `matrix.c`.
Add a new file to your keyboard directory:
```text
keyboards/<keyboard>/matrix.c
```
And to configure compilation for the new file, add this to your `rules.mk`:
```make
SRC += matrix.c
```
## 'lite'
Provides a default implementation for various scanning functions, reducing the boilerplate code when implementing custom matrix.
To configure it, add this to your `rules.mk`:
```make
CUSTOM_MATRIX = lite
```
And implement the following functions in a `matrix.c` file in your keyboard folder:
```c
void matrix_init_custom(void) {
// TODO: initialize hardware here
}
bool matrix_scan_custom(matrix_row_t current_matrix[]) {
bool matrix_has_changed = false;
// TODO: add matrix scanning routine here
return matrix_has_changed;
}
```
## Full Replacement
When more control over the scanning routine is required, you can choose to implement the full scanning routine.
To configure it, add this to your rules.mk:
```make
CUSTOM_MATRIX = yes
```
And implement the following functions in a `matrix.c` file in your keyboard folder:
```c
matrix_row_t matrix_get_row(uint8_t row) {
// TODO: return the requested row data
}
void matrix_print(void) {
// TODO: use print() to dump the current matrix state to console
}
void matrix_init(void) {
// TODO: initialize hardware and global matrix state here
// Unless hardware debouncing - Init the configured debounce routine
debounce_init(MATRIX_ROWS);
// This *must* be called for correct keyboard behavior
matrix_init_quantum();
}
uint8_t matrix_scan(void) {
bool matrix_has_changed = false;
// TODO: add matrix scanning routine here
// Unless hardware debouncing - use the configured debounce routine
debounce(raw_matrix, matrix, MATRIX_ROWS, changed);
// This *must* be called for correct keyboard behavior
matrix_scan_quantum();
return matrix_has_changed;
}
```
And also provide defaults for the following callbacks:
```c
__attribute__((weak)) void matrix_init_kb(void) { matrix_init_user(); }
__attribute__((weak)) void matrix_scan_kb(void) { matrix_scan_user(); }
__attribute__((weak)) void matrix_init_user(void) {}
__attribute__((weak)) void matrix_scan_user(void) {}
```

View File

@@ -489,14 +489,24 @@ The `val` is the value of the data that you want to write to EEPROM. And the `e
# Custom Tapping Term
By default, the tapping term is defined globally, and is not configurable by key. For most users, this is perfectly fine. But in come cases, dual function keys would be greatly improved by different timeouts than `LT` keys, or because some keys may be easier to hold than others. Instead of using custom key codes for each, this allows for per key configurable `TAPPING_TERM`.
By default, the tapping term and related options (such as `IGNORE_MOD_TAP_INTERRUPT`) are defined globally, and are not configurable by key. For most users, this is perfectly fine. But in some cases, dual function keys would be greatly improved by different timeout behaviors than `LT` keys, or because some keys may be easier to hold than others. Instead of using custom key codes for each, this allows for per key configurable timeout behaviors.
To enable this functionality, you need to add `#define TAPPING_TERM_PER_KEY` to your `config.h`, first.
There are two configurable options to control per-key timeout behaviors:
- `TAPPING_TERM_PER_KEY`
- `IGNORE_MOD_TAP_INTERRUPT_PER_KEY`
You need to add `#define` lines to your `config.h` for each feature you want.
```
#define TAPPING_TERM_PER_KEY
#define IGNORE_MOD_TAP_INTERRUPT_PER_KEY
```
## Example `get_tapping_term` Implementation
To change the `TAPPING TERM` based on the keycode, you'd want to add something like the following to your `keymap.c` file:
To change the `TAPPING_TERM` based on the keycode, you'd want to add something like the following to your `keymap.c` file:
```c
uint16_t get_tapping_term(uint16_t keycode) {
@@ -511,6 +521,21 @@ uint16_t get_tapping_term(uint16_t keycode) {
}
```
### `get_tapping_term` Function Documentation
## Example `get_ignore_mod_tap_interrupt` Implementation
Unlike many of the other functions here, there isn't a need (or even reason) to have a quantum or keyboard level function. Only a user level function is useful here, so no need to mark it as such.
To change the `IGNORE_MOD_TAP_INTERRUPT` value based on the keycode, you'd want to add something like the following to your `keymap.c` file:
```c
bool get_ignore_mod_tap_interrupt(uint16_t keycode) {
switch (keycode) {
case SFT_T(KC_SPC):
return true;
default:
return false;
}
}
```
## `get_tapping_term` / `get_ignore_mod_tap_interrupt` Function Documentation
Unlike many of the other functions here, there isn't a need (or even reason) to have a quantum or keyboard level function. Only user level functions are useful here, so no need to mark them as such.

50
docs/eeprom_driver.md Normal file
View File

@@ -0,0 +1,50 @@
# EEPROM Driver Configuration
The EEPROM driver can be swapped out depending on the needs of the keyboard, or whether extra hardware is present.
Driver | Description
--------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
`EEPROM_DRIVER = vendor` | Uses the on-chip driver provided by the chip manufacturer. For AVR, this is provided by avr-libc. This is supported on ARM for a subset of chips -- STM32F3xx, STM32F1xx, and STM32F072xB will be emulated by writing to flash. Other chips will generally act as "transient" below.
`EEPROM_DRIVER = i2c` | Supports writing to I2C-based 24xx EEPROM chips. See the driver section below.
`EEPROM_DRIVER = transient` | Fake EEPROM driver -- supports reading/writing to RAM, and will be discarded when power is lost.
## Vendor Driver Configuration
No configurable options are available.
## I2C Driver Configuration
Currently QMK supports 24xx-series chips over I2C. As such, requires a working i2c_master driver configuration. You can override the driver configuration via your config.h:
`config.h` override | Description | Default Value
------------------------------------------- | ----------------------------------------------------------------------------------- | ------------------------------------
`#define EXTERNAL_EEPROM_I2C_BASE_ADDRESS` | Base I2C address for the EEPROM -- shifted left by 1 as per i2c_master requirements | 0b10100000
`#define EXTERNAL_EEPROM_I2C_ADDRESS(addr)` | Calculated I2C address for the EEPROM | `(EXTERNAL_EEPROM_I2C_BASE_ADDRESS)`
`#define EXTERNAL_EEPROM_BYTE_COUNT` | Total size of the EEPROM in bytes | 8192
`#define EXTERNAL_EEPROM_PAGE_SIZE` | Page size of the EEPROM in bytes, as specified in the datasheet | 32
`#define EXTERNAL_EEPROM_ADDRESS_SIZE` | The number of bytes to transmit for the memory location within the EEPROM | 2
`#define EXTERNAL_EEPROM_WRITE_TIME` | Write cycle time of the EEPROM, as specified in the datasheet | 5
Default values and extended descriptions can be found in `drivers/eeprom/eeprom_i2c.h`.
Alternatively, there are pre-defined hardware configurations for available chips/modules:
Module | Equivalent `#define` | Source
-----------------|---------------------------------|------------------------------------------
CAT24C512 EEPROM | `#define EEPROM_I2C_CAT24C512` | <https://www.sparkfun.com/products/14764>
RM24C512C EEPROM | `#define EEPROM_I2C_RM24C512C` | <https://www.sparkfun.com/products/14764>
24LC128 EEPROM | `#define EEPROM_I2C_24LC128` | <https://www.microchip.com/wwwproducts/en/24LC128>
24LC256 EEPROM | `#define EEPROM_I2C_24LC256` | <https://www.sparkfun.com/products/525>
MB85RC256V FRAM | `#define EEPROM_I2C_MB85RC256V` | <https://www.adafruit.com/product/1895>
?> If you find that the EEPROM is not cooperating, ensure you've correctly shifted up your EEPROM address by 1. For example, the datasheet might state the address as `0b01010000` -- the correct value of `EXTERNAL_EEPROM_I2C_BASE_ADDRESS` needs to be `0b10100000`.
## Transient Driver configuration
The only configurable item for the transient EEPROM driver is its size:
`config.h` override | Description | Default Value
------------------------------- | ----------------------------------------- | -------------
`#define TRANSIENT_EEPROM_SIZE` | Total size of the EEPROM storage in bytes | 64
Default values and extended descriptions can be found in `drivers/eeprom/eeprom_transient.h`.

View File

@@ -265,6 +265,25 @@ Normally, if you do all this within the `TAPPING_TERM` (default: 200ms) this wil
?> If you have `Ignore Mod Tap Interrupt` enabled, as well, this will modify how both work. The regular key has the modifier added if the first key is released first or if both keys are held longer than the `TAPPING_TERM`.
For more granular control of this feature, you can add the following to your `config.h`:
```c
#define PERMISSIVE_HOLD_PER_KEY
```
You can then add the following function to your keymap:
```c
bool get_permissive_hold(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case SFT_T(KC_A):
return true;
default:
return false;
}
}
```
## Ignore Mod Tap Interrupt
To enable this setting, add this to your `config.h`:
@@ -291,6 +310,25 @@ Normally, this would send `X` (`SHIFT`+`x`). With `Ignore Mod Tap Interrupt` ena
?> If you have `Permissive Hold` enabled, as well, this will modify how both work. The regular key has the modifier added if the first key is released first or if both keys are held longer than the `TAPPING_TERM`.
For more granular control of this feature, you can add the following to your `config.h`:
```c
#define IGNORE_MOD_TAP_INTERRUPT_PER_KEY
```
You can then add the following function to your keymap:
```c
bool get_ignore_mod_tap_interrupt(uint16_t keycode) {
switch (keycode) {
case SFT_T(KC_SPC):
return true;
default:
return false;
}
}
```
## Tapping Force Hold
To enable `tapping force hold`, add the following to your `config.h`:
@@ -315,6 +353,25 @@ With `TAPPING_FORCE_HOLD`, the second press will be interpreted as a Shift, allo
!> `TAPPING_FORCE_HOLD` will break anything that uses tapping toggles (Such as the `TT` layer keycode, and the One Shot Tapping Toggle).
For more granular control of this feature, you can add the following to your `config.h`:
```c
#define TAPPING_FORCE_HOLD_PER_KEY
```
You can then add the following function to your keymap:
```c
bool get_tapping_force_hold(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case LT(1, KC_BSPC):
return true;
default:
return false;
}
}
```
## Retro Tapping
To enable `retro tapping`, add the following to your `config.h`:

View File

@@ -119,10 +119,22 @@ When both timers are in use for Audio, the backlight PWM will not use a hardware
To change the behavior of the backlighting, `#define` these in your `config.h`:
|Define |Default |Description |
|---------------------|-------------|--------------------------------------------------------------------------------------------------------------|
|`BACKLIGHT_PIN` |`B7` |The pin that controls the LEDs. Unless you are designing your own keyboard, you shouldn't need to change this |
|`BACKLIGHT_PINS` |*Not defined*|experimental: see below for more information |
|Define |Default |Description |
|---------------------|-------------|-------------------------------------------------------------------------------------------------------------|
|`BACKLIGHT_PIN` |`B7` |The pin that controls the LEDs. Unless you are designing your own keyboard, you shouldn't need to change this|
|`BACKLIGHT_PINS` |*Not defined*|experimental: see below for more information |
|`BACKLIGHT_LEVELS` |`3` |The number of brightness levels (maximum 31 excluding off) |
|`BACKLIGHT_CAPS_LOCK`|*Not defined*|Enable Caps Lock indicator using backlight (for keyboards without dedicated LED) |
|`BACKLIGHT_BREATHING`|*Not defined*|Enable backlight breathing, if supported |
|`BREATHING_PERIOD` |`6` |The length of one backlight "breath" in seconds |
|`BACKLIGHT_ON_STATE` |`1` |The state of the backlight pin when the backlight is "on" - `1` for high, `0` for low |
### Backlight On State
Most backlight circuits are driven by an N-channel MOSFET or NPN transistor. This means that to turn the transistor *on* and light the LEDs, you must drive the backlight pin, connected to the gate or base, *high*.
Sometimes, however, a P-channel MOSFET, or a PNP transistor is used. In this case, when the transistor is on, the pin is driven *low* instead.
This functionality is configured at the keyboard level with the `BACKLIGHT_ON_STATE` define.
### Multiple backlight pins
@@ -167,7 +179,7 @@ BACKLIGHT_DRIVER = pwm
Currently only hardware PWM is supported, not timer assisted, and does not provide automatic configuration.
?> STMF072 support is being investigated.
?> Backlight support for STMF072 has had limited testing, YMMV. If unsure, set `BACKLIGHT_ENABLE = no` in your rules.mk.
### ARM Configuration

View File

@@ -2,23 +2,35 @@
Basic encoders are supported by adding this to your `rules.mk`:
ENCODER_ENABLE = yes
```make
ENCODER_ENABLE = yes
```
and this to your `config.h`:
#define ENCODERS_PAD_A { B12 }
#define ENCODERS_PAD_B { B13 }
```c
#define ENCODERS_PAD_A { B12 }
#define ENCODERS_PAD_B { B13 }
```
Each PAD_A/B variable defines an array so multiple encoders can be defined, e.g.:
#define ENCODERS_PAD_A { encoder1a, encoder2a }
#define ENCODERS_PAD_B { encoder1b, encoder2b }
```c
#define ENCODERS_PAD_A { encoder1a, encoder2a }
#define ENCODERS_PAD_B { encoder1b, encoder2b }
```
If your encoder's clockwise directions are incorrect, you can swap the A & B pad definitions.
If your encoder's clockwise directions are incorrect, you can swap the A & B pad definitions. They can also be flipped with a define:
```c
#define ENCODER_DIRECTION_FLIP
```
Additionally, the resolution can be specified in the same file (the default & suggested is 4):
#define ENCODER_RESOLUTION 4
```c
#define ENCODER_RESOLUTION 4
```
## Split Keyboards
@@ -33,27 +45,31 @@ If you are using different pinouts for the encoders on each half of a split keyb
The callback functions can be inserted into your `<keyboard>.c`:
void encoder_update_kb(uint8_t index, bool clockwise) {
encoder_update_user(index, clockwise);
}
```c
void encoder_update_kb(uint8_t index, bool clockwise) {
encoder_update_user(index, clockwise);
}
```
or `keymap.c`:
void encoder_update_user(uint8_t index, bool clockwise) {
if (index == 0) { /* First encoder */
```c
void encoder_update_user(uint8_t index, bool clockwise) {
if (index == 0) { /* First encoder */
if (clockwise) {
tap_code(KC_PGDN);
tap_code(KC_PGDN);
} else {
tap_code(KC_PGUP);
tap_code(KC_PGUP);
}
} else if (index == 1) { /* Second encoder */
} else if (index == 1) { /* Second encoder */
if (clockwise) {
tap_code(KC_UP);
tap_code(KC_DOWN);
} else {
tap_code(KC_DOWN);
tap_code(KC_UP);
}
}
}
}
```
## Hardware

View File

@@ -107,6 +107,16 @@ Would tap `KC_HOME` - note how the prefix is now `X_`, and not `KC_`. You can al
Which would send "VE" followed by a `KC_HOME` tap, and "LO" (spelling "LOVE" if on a newline).
Delays can be also added to the string:
* `SS_DELAY(msecs)` will delay for the specified number of milliseconds.
For example:
SEND_STRING("VE" SS_DELAY(1000) SS_TAP(X_HOME) "LO");
Which would send "VE" followed by a 1-second delay, then a `KC_HOME` tap, and "LO" (spelling "LOVE" if on a newline, but delayed in the middle).
There's also a couple of mod shortcuts you can use:
* `SS_LCTL(string)`
@@ -154,6 +164,8 @@ SEND_STRING(".."SS_TAP(X_END));
There are some functions you may find useful in macro-writing. Keep in mind that while you can write some fairly advanced code within a macro, if your functionality gets too complex you may want to define a custom keycode instead. Macros are meant to be simple.
?> You can also use the functions described in [Useful function](ref_functions.md) for additional functionality. For example `reset_keyboard()` allows you to reset the keyboard as part of a macro.
### `record->event.pressed`
This is a boolean value that can be tested to see if the switch is being pressed or released. An example of this is
@@ -198,11 +210,11 @@ This will clear all mods currently pressed.
This will clear all keys besides the mods currently pressed.
## Advanced Example:
## Advanced Example:
### Super ALT↯TAB
This macro will register `KC_LALT` and tap `KC_TAB`, then wait for 1000ms. If the key is tapped again, it will send another `KC_TAB`; if there is no tap, `KC_LALT` will be unregistered, thus allowing you to cycle through windows.
This macro will register `KC_LALT` and tap `KC_TAB`, then wait for 1000ms. If the key is tapped again, it will send another `KC_TAB`; if there is no tap, `KC_LALT` will be unregistered, thus allowing you to cycle through windows.
```c
bool is_alt_tab_active = false; # ADD this near the begining of keymap.c
@@ -219,7 +231,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!is_alt_tab_active) {
is_alt_tab_active = true;
register_code(KC_LALT);
}
}
alt_tab_timer = timer_read();
register_code(KC_TAB);
} else {
@@ -230,7 +242,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return true;
}
void matrix_scan_user(void) { # The very important timer.
void matrix_scan_user(void) { # The very important timer.
if (is_alt_tab_active) {
if (timer_elapsed(alt_tab_timer) > 1000) {
unregister_code(KC_LALT);
@@ -319,7 +331,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
```
## Advanced Example:
## Advanced Example:
### Single-Key Copy/Paste

View File

@@ -1,139 +1,142 @@
# OLED Driver
## OLED Supported Hardware
## Supported Hardware
OLED modules using SSD1306 or SH1106 driver ICs, communicating over I2C.
Tested combinations:
| IC driver | Size | Keyboard Platform | Notes |
|-----------|--------|-------------------|--------------------------|
| SSD1306 | 128x32 | AVR | Primary support |
| SSD1306 | 128x64 | AVR | Verified working |
| SSD1306 | 128x32 | ARM | |
| SH1106 | 128x64 | AVR | No rotation or scrolling |
|IC |Size |Platform|Notes |
|---------|------|--------|------------------------|
|SSD1306 |128x32|AVR |Primary support |
|SSD1306 |128x64|AVR |Verified working |
|SSD1306 |128x32|Arm | |
|SH1106 |128x64|AVR |No rotation or scrolling|
Hardware configurations using ARM-based microcontrollers or different sizes of OLED modules may be compatible, but are untested.
Hardware configurations using Arm-based microcontrollers or different sizes of OLED modules may be compatible, but are untested.
!> Warning: This OLED Driver currently uses the new i2c_master driver from split common code. If your split keyboard uses I2C to communicate between sides, this driver could cause an address conflict (serial is fine). Please contact your keyboard vendor and ask them to migrate to the latest split common code to fix this. In addition, the display timeout system to reduce OLED burn-in also uses split common to detect keypresses, so you will need to implement custom timeout logic for non-split common keyboards.
!> Warning: This OLED driver currently uses the new i2c_master driver from Split Common code. If your split keyboard uses I2C to communicate between sides, this driver could cause an address conflict (serial is fine). Please contact your keyboard vendor and ask them to migrate to the latest Split Common code to fix this. In addition, the display timeout system to reduce OLED burn-in also uses Split Common to detect keypresses, so you will need to implement custom timeout logic for non-Split Common keyboards.
## Usage
To enable the OLED feature, there are three steps. First, when compiling your keyboard, you'll need to set `OLED_DRIVER_ENABLE=yes` in `rules.mk`, e.g.:
To enable the OLED feature, there are three steps. First, when compiling your keyboard, you'll need to add the following to your `rules.mk`:
```
```make
OLED_DRIVER_ENABLE = yes
```
This enables the feature and the `OLED_DRIVER_ENABLE` define. Then in your `keymap.c` file, you will need to implement the user task call, e.g:
Then in your `keymap.c` file, implement the OLED task call. This example assumes your keymap has three layers named `_QWERTY`, `_FN` and `_ADJ`:
```C++
```c
#ifdef OLED_DRIVER_ENABLE
void oled_task_user(void) {
// Host Keyboard Layer Status
oled_write_P(PSTR("Layer: "), false);
switch (get_highest_layer(layer_state)) {
case _QWERTY:
oled_write_P(PSTR("Default\n"), false);
break;
case _FN:
oled_write_P(PSTR("FN\n"), false);
break;
case _ADJ:
oled_write_P(PSTR("ADJ\n"), false);
break;
default:
// Or use the write_ln shortcut over adding '\n' to the end of your string
oled_write_ln_P(PSTR("Undefined"), false);
}
// Host Keyboard Layer Status
oled_write_P(PSTR("Layer: "), false);
// Host Keyboard LED Status
uint8_t led_usb_state = host_keyboard_leds();
oled_write_P(led_usb_state & (1<<USB_LED_NUM_LOCK) ? PSTR("NUMLCK ") : PSTR(" "), false);
oled_write_P(led_usb_state & (1<<USB_LED_CAPS_LOCK) ? PSTR("CAPLCK ") : PSTR(" "), false);
oled_write_P(led_usb_state & (1<<USB_LED_SCROLL_LOCK) ? PSTR("SCRLCK ") : PSTR(" "), false);
switch (get_highest_layer(layer_state)) {
case _QWERTY:
oled_write_P(PSTR("Default\n"), false);
break;
case _FN:
oled_write_P(PSTR("FN\n"), false);
break;
case _ADJ:
oled_write_P(PSTR("ADJ\n"), false);
break;
default:
// Or use the write_ln shortcut over adding '\n' to the end of your string
oled_write_ln_P(PSTR("Undefined"), false);
}
// Host Keyboard LED Status
led_t led_state = host_keyboard_led_state();
oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
}
#endif
```
## Logo Example
In the default font, ranges in the font file are reserved for a QMK Logo. To Render this logo to the oled screen, use the following code example:
In the default font, certain ranges of characters are reserved for a QMK logo. To render this logo to the OLED screen, use the following code example:
```C++
```c
static void render_logo(void) {
static const char PROGMEM qmk_logo[] = {
0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0};
static const char PROGMEM qmk_logo[] = {
0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94,
0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4,
0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00
};
oled_write_P(qmk_logo, false);
oled_write_P(qmk_logo, false);
}
```
## Other Examples
In split keyboards, it is very common to have two OLED displays that each render different content and oriented flipped differently. You can do this by switching which content to render by using the return from `is_keyboard_master()` or `is_keyboard_left()` found in `split_util.h`, e.g:
In split keyboards, it is very common to have two OLED displays that each render different content and are oriented or flipped differently. You can do this by switching which content to render by using the return value from `is_keyboard_master()` or `is_keyboard_left()` found in `split_util.h`, e.g:
```C++
```c
#ifdef OLED_DRIVER_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
if (!is_keyboard_master())
return OLED_ROTATION_180; // flips the display 180 degrees if offhand
return rotation;
if (!is_keyboard_master()) {
return OLED_ROTATION_180; // flips the display 180 degrees if offhand
}
return rotation;
}
void oled_task_user(void) {
if (is_keyboard_master()) {
render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
} else {
render_logo(); // Renders a statuc logo
oled_scroll_left(); // Turns on scrolling
}
if (is_keyboard_master()) {
render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
} else {
render_logo(); // Renders a static logo
oled_scroll_left(); // Turns on scrolling
}
}
#endif
```
## Basic Configuration
## Basic Configuration
| Define | Default | Description |
|----------------------------|-------------------|----------------------------------------------------------------------------------------------------------------------------|
| `OLED_DISPLAY_ADDRESS` | `0x3C` | The i2c address of the OLED Display |
| `OLED_FONT_H` | `"glcdfont.c"` | The font code file to use for custom fonts |
| `OLED_FONT_START` | `0` | The starting characer index for custom fonts |
| `OLED_FONT_END` | `224` | The ending characer index for custom fonts |
| `OLED_FONT_WIDTH` | `6` | The font width |
| `OLED_FONT_HEIGHT` | `8` | The font height (untested) |
| `OLED_TIMEOUT` | `60000` | Turns off the OLED screen after 60000ms of keyboard inactivity. Helps reduce OLED Burn-in. Set to 0 to disable. |
| `OLED_SCROLL_TIMEOUT` | `0` | Scrolls the OLED screen after 0ms of OLED inactivity. Helps reduce OLED Burn-in. Set to 0 to disable. |
| `OLED_SCROLL_TIMEOUT_RIGHT`| *Not defined* | Scroll timeout direction is right when defined, left when undefined. |
| `OLED_IC` | `OLED_IC_SSD1306` | Set to `OLED_IC_SH1106` if you're using the SH1106 OLED controller. |
| `OLED_COLUMN_OFFSET` | `0` | (SH1106 only.) Shift output to the right this many pixels.<br />Useful for 128x64 displays centered on a 132x64 SH1106 IC. |
|Define |Default |Description |
|---------------------------|-----------------|--------------------------------------------------------------------------------------------------------------------------|
|`OLED_DISPLAY_ADDRESS` |`0x3C` |The i2c address of the OLED Display |
|`OLED_FONT_H` |`"glcdfont.c"` |The font code file to use for custom fonts |
|`OLED_FONT_START` |`0` |The starting characer index for custom fonts |
|`OLED_FONT_END` |`223` |The ending characer index for custom fonts |
|`OLED_FONT_WIDTH` |`6` |The font width |
|`OLED_FONT_HEIGHT` |`8` |The font height (untested) |
|`OLED_TIMEOUT` |`60000` |Turns off the OLED screen after 60000ms of keyboard inactivity. Helps reduce OLED Burn-in. Set to 0 to disable. |
|`OLED_SCROLL_TIMEOUT` |`0` |Scrolls the OLED screen after 0ms of OLED inactivity. Helps reduce OLED Burn-in. Set to 0 to disable. |
|`OLED_SCROLL_TIMEOUT_RIGHT`|*Not defined* |Scroll timeout direction is right when defined, left when undefined. |
|`OLED_IC` |`OLED_IC_SSD1306`|Set to `OLED_IC_SH1106` if you're using the SH1106 OLED controller. |
|`OLED_COLUMN_OFFSET` |`0` |(SH1106 only.) Shift output to the right this many pixels.<br />Useful for 128x64 displays centered on a 132x64 SH1106 IC.|
## 128x64 & Custom sized OLED Displays
The default display size for this feature is 128x32 and all necessary defines are precalculated with that in mind. We have added a define, `OLED_DISPLAY_128X64`, to switch all the values to be used in a 128x64 display, as well as added a custom define, `OLED_DISPLAY_CUSTOM`, that allows you to provide the necessary values to the driver.
|Define |Default |Description |
|-----------------------|---------------|-----------------------------------------------------------------|
|`OLED_DISPLAY_128X64` |*Not defined* |Changes the display defines for use with 128x64 displays. |
|`OLED_DISPLAY_CUSTOM` |*Not defined* |Changes the display defines for use with custom displays.<br />Requires user to implement the below defines. |
|`OLED_DISPLAY_WIDTH` |`128` |The width of the OLED display. |
|`OLED_DISPLAY_HEIGHT` |`32` |The height of the OLED display. |
|`OLED_MATRIX_SIZE` |`512` |The local buffer size to allocate.<br />`(OLED_DISPLAY_HEIGHT / 8 * OLED_DISPLAY_WIDTH)`. |
|`OLED_BLOCK_TYPE` |`uint16_t` |The unsigned integer type to use for dirty rendering. |
|`OLED_BLOCK_COUNT` |`16` |The number of blocks the display is divided into for dirty rendering.<br />`(sizeof(OLED_BLOCK_TYPE) * 8)`. |
|`OLED_BLOCK_SIZE` |`32` |The size of each block for dirty rendering<br />`(OLED_MATRIX_SIZE / OLED_BLOCK_COUNT)`. |
|`OLED_COM_PINS` |`COM_PINS_SEQ` |How the SSD1306 chip maps it's memory to display.<br />Options are `COM_PINS_SEQ`, `COM_PINS_ALT`, `COM_PINS_SEQ_LR`, & `COM_PINS_ALT_LR`. |
|`OLED_SOURCE_MAP` |`{ 0, ... N }` |Precalculated source array to use for mapping source buffer to target OLED memory in 90 degree rendering. |
|`OLED_TARGET_MAP` |`{ 24, ... N }`|Precalculated target array to use for mapping source buffer to target OLED memory in 90 degree rendering. |
|Define |Default |Description |
|---------------------|---------------|----------------------------------------------------------------------------------------------------------------------------------------|
|`OLED_DISPLAY_128X64`|*Not defined* |Changes the display defines for use with 128x64 displays. |
|`OLED_DISPLAY_CUSTOM`|*Not defined* |Changes the display defines for use with custom displays.<br>Requires user to implement the below defines. |
|`OLED_DISPLAY_WIDTH` |`128` |The width of the OLED display. |
|`OLED_DISPLAY_HEIGHT`|`32` |The height of the OLED display. |
|`OLED_MATRIX_SIZE` |`512` |The local buffer size to allocate.<br>`(OLED_DISPLAY_HEIGHT / 8 * OLED_DISPLAY_WIDTH)`. |
|`OLED_BLOCK_TYPE` |`uint16_t` |The unsigned integer type to use for dirty rendering. |
|`OLED_BLOCK_COUNT` |`16` |The number of blocks the display is divided into for dirty rendering.<br>`(sizeof(OLED_BLOCK_TYPE) * 8)`. |
|`OLED_BLOCK_SIZE` |`32` |The size of each block for dirty rendering<br>`(OLED_MATRIX_SIZE / OLED_BLOCK_COUNT)`. |
|`OLED_COM_PINS` |`COM_PINS_SEQ` |How the SSD1306 chip maps it's memory to display.<br>Options are `COM_PINS_SEQ`, `COM_PINS_ALT`, `COM_PINS_SEQ_LR`, & `COM_PINS_ALT_LR`.|
|`OLED_SOURCE_MAP` |`{ 0, ... N }` |Precalculated source array to use for mapping source buffer to target OLED memory in 90 degree rendering. |
|`OLED_TARGET_MAP` |`{ 24, ... N }`|Precalculated target array to use for mapping source buffer to target OLED memory in 90 degree rendering. |
### 90 Degree Rotation - Technical Mumbo Jumbo
### 90 Degree Rotation - Technical Mumbo Jumbo
!> Rotation is unsupported on the SH1106.
```C
```c
// OLED Rotation enum values are flags
typedef enum {
OLED_ROTATION_0 = 0,
@@ -143,9 +146,9 @@ typedef enum {
} oled_rotation_t;
```
OLED displays driven by SSD1306 drivers only natively support in hard ware 0 degree and 180 degree rendering. This feature is done in software and not free. Using this feature will increase the time to calculate what data to send over i2c to the OLED. If you are strapped for cycles, this can cause keycodes to not register. In testing however, the rendering time on an `atmega32u4` board only went from 2ms to 5ms and keycodes not registering was only noticed once we hit 15ms.
90 Degree Rotated Rendering is achieved by using bitwise operations to rotate each 8 block of memory and uses two precalculated arrays to remap buffer memory to OLED memory. The memory map defines are precalculated for remap performance and are calculated based on the OLED Height, Width, and Block Size. For example, in the 128x32 implementation with a `uint8_t` block type, we have a 64 byte block size. This gives us eight 8 byte blocks that need to be rotated and rendered. The OLED renders horizontally two 8 byte blocks before moving down a page, e.g:
OLED displays driven by SSD1306 drivers only natively support in hardware 0 degree and 180 degree rendering. This feature is done in software and not free. Using this feature will increase the time to calculate what data to send over i2c to the OLED. If you are strapped for cycles, this can cause keycodes to not register. In testing however, the rendering time on an ATmega32U4 board only went from 2ms to 5ms and keycodes not registering was only noticed once we hit 15ms.
90 degree rotation is achieved by using bitwise operations to rotate each 8 block of memory and uses two precalculated arrays to remap buffer memory to OLED memory. The memory map defines are precalculated for remap performance and are calculated based on the display height, width, and block size. For example, in the 128x32 implementation with a `uint8_t` block type, we have a 64 byte block size. This gives us eight 8 byte blocks that need to be rotated and rendered. The OLED renders horizontally two 8 byte blocks before moving down a page, e.g:
| | | | | | |
|---|---|---|---|---|---|
@@ -167,8 +170,8 @@ So those precalculated arrays just index the memory offsets in the order in whic
## OLED API
```C++
// OLED Rotation enum values are flags
```c
// OLED rotation enum values are flags
typedef enum {
OLED_ROTATION_0 = 0,
OLED_ROTATION_90 = 1,
@@ -272,26 +275,26 @@ uint8_t oled_max_lines(void);
!> Scrolling and rotation are unsupported on the SH1106.
## SSD1306.h driver conversion guide
## SSD1306.h Driver Conversion Guide
|Old API |Recommended New API |
|---------------------------|-----------------------------------|
|`struct CharacterMatrix` |*removed - delete all references* |
|`iota_gfx_init` |`oled_init` |
|`iota_gfx_on` |`oled_on` |
|`iota_gfx_off` |`oled_off` |
|`iota_gfx_flush` |`oled_render` |
|`iota_gfx_write_char` |`oled_write_char` |
|`iota_gfx_write` |`oled_write` |
|`iota_gfx_write_P` |`oled_write_P` |
|`iota_gfx_clear_screen` |`oled_clear` |
|`matrix_clear` |*removed - delete all references* |
|`matrix_write_char_inner` |`oled_write_char` |
|`matrix_write_char` |`oled_write_char` |
|`matrix_write` |`oled_write` |
|`matrix_write_ln` |`oled_write_ln` |
|`matrix_write_P` |`oled_write_P` |
|`matrix_write_ln_P` |`oled_write_ln_P` |
|`matrix_render` |`oled_render` |
|`iota_gfx_task` |`oled_task` |
|`iota_gfx_task_user` |`oled_task_user` |
|Old API |Recommended New API |
|-------------------------|---------------------------------|
|`struct CharacterMatrix` |*removed - delete all references*|
|`iota_gfx_init` |`oled_init` |
|`iota_gfx_on` |`oled_on` |
|`iota_gfx_off` |`oled_off` |
|`iota_gfx_flush` |`oled_render` |
|`iota_gfx_write_char` |`oled_write_char` |
|`iota_gfx_write` |`oled_write` |
|`iota_gfx_write_P` |`oled_write_P` |
|`iota_gfx_clear_screen` |`oled_clear` |
|`matrix_clear` |*removed - delete all references*|
|`matrix_write_char_inner`|`oled_write_char` |
|`matrix_write_char` |`oled_write_char` |
|`matrix_write` |`oled_write` |
|`matrix_write_ln` |`oled_write_ln` |
|`matrix_write_P` |`oled_write_P` |
|`matrix_write_ln_P` |`oled_write_ln_P` |
|`matrix_render` |`oled_render` |
|`iota_gfx_task` |`oled_task` |
|`iota_gfx_task_user` |`oled_task_user` |

View File

@@ -199,6 +199,7 @@ enum rgb_matrix_effects {
RGB_MATRIX_SOLID_COLOR = 1, // Static single hue, no speed support
RGB_MATRIX_ALPHAS_MODS, // Static dual hue, speed is hue for secondary hue
RGB_MATRIX_GRADIENT_UP_DOWN, // Static gradient top to bottom, speed controls how much gradient changes
RGB_MATRIX_GRADIENT_LEFT_RIGHT, // Static gradient left to right, speed controls how much gradient changes
RGB_MATRIX_BREATHING, // Single hue brightness cycling animation
RGB_MATRIX_BAND_SAT, // Single hue band fading saturation scrolling left to right
RGB_MATRIX_BAND_VAL, // Single hue band fading brightness scrolling left to right
@@ -379,6 +380,10 @@ These are defined in [`rgblight_list.h`](https://github.com/qmk/qmk_firmware/blo
#define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT // Sets the default mode, if none has been set
#define RGB_MATRIX_STARTUP_HUE 0 // Sets the default hue value, if none has been set
#define RGB_MATRIX_STARTUP_SAT 255 // Sets the default saturation value, if none has been set
#define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS // Sets the default brightness value, if none has been set
#define RGB_MATRIX_STARTUP_SPD 127 // Sets the default animation speed, if none has been set
```
## EEPROM storage

View File

@@ -198,10 +198,15 @@ This option changes the startup behavior to detect an active USB connection when
?> This setting will stop the ability to demo using battery packs.
```c
#define SPLIT_USB_TIMEOUT 2500
#define SPLIT_USB_TIMEOUT 2000
```
This sets the maximum timeout when detecting master/slave when using `SPLIT_USB_DETECT`.
```c
#define SPLIT_USB_TIMEOUT_POLL 10
```
This sets the poll frequency when detecting master/slave when using `SPLIT_USB_DETECT`
## Additional Resources
Nicinabox has a [very nice and detailed guide](https://github.com/nicinabox/lets-split-guide) for the Let's Split keyboard, that covers most everything you need to know, including troubleshooting information.

View File

@@ -193,12 +193,23 @@ By default, when the keyboard boots, it will initialize the input mode to the la
!> Using `UNICODE_SELECTED_MODES` means you don't have to initially set the input mode in `matrix_init_user()` (or a similar function); the Unicode system will do that for you on startup. This has the added benefit of avoiding unnecessary writes to EEPROM.
## `send_unicode_hex_string`
## `send_unicode_string()`
To type multiple characters for things like (ノಠ痊ಠ)ノ彡┻━┻, you can use `send_unicode_hex_string()` much like `SEND_STRING()` except you would use hex values separate by spaces.
For example, the table flip seen above would be `send_unicode_hex_string("0028 30CE 0CA0 75CA 0CA0 0029 30CE 5F61 253B 2501 253B")`
This function is much like `send_string()` but allows you to input UTF-8 characters directly, and supports all code points (provided the selected input method also supports it). Make sure your `keymap.c` is formatted in UTF-8 encoding.
There are many ways to get a hex code, but an easy one is [this site](https://r12a.github.io/app-conversion/). Just make sure to convert to hexadecimal, and that is your string.
```c
send_unicode_string("(ノಠ痊ಠ)ノ彡┻━┻");
```
## `send_unicode_hex_string()`
Similar to `send_unicode_string()`, but the characters are represented by their code point values in ASCII, separated by spaces. For example, the table flip above would be achieved with:
```c
send_unicode_hex_string("0028 30CE 0CA0 75CA 0CA0 0029 30CE 5F61 253B 2501 253B");
```
An easy way to convert your Unicode string to this format is by using [this site](https://r12a.github.io/app-conversion/), and taking the result in the "Hex/UTF-32" section.
## Additional Language Support
@@ -228,6 +239,6 @@ AutoHotkey inserts the Text right of `Send, ` when this combination is pressed.
If you enable the US International layout on the system, it will use punctuation to accent the characters.
For instance, typing "`a" will result in à.
For instance, typing "\`a" will result in à.
You can find details on how to enable this [here](https://support.microsoft.com/en-us/help/17424/windows-change-keyboard-layout).

View File

@@ -43,7 +43,7 @@ Debian / Ubuntu example:
Fedora / Red Hat example:
sudo dnf install gcc unzip wget zip dfu-util dfu-programmer avr-gcc avr-libc binutils-avr32-linux-gnu arm-none-eabi-gcc-cs arm-none-eabi-binutils-cs arm-none-eabi-newlib
Arch / Manjaro example:
pacman -S base-devel gcc unzip wget zip avr-gcc avr-binutils avr-libc dfu-util arm-none-eabi-gcc arm-none-eabi-binutils arm-none-eabi-newlib git dfu-programmer dfu-util
@@ -57,16 +57,17 @@ By default, this will download compilers for both AVR and ARM. If you don't need
nix-shell --arg arm false
## macOS
If you're using [homebrew,](http://brew.sh/) you can use the following commands:
If you're using [Homebrew](http://brew.sh/), you can use the following commands:
brew tap osx-cross/avr
brew tap PX4/homebrew-px4
brew tap osx-cross/arm
brew update
brew install avr-gcc@8
brew link --force avr-gcc@8
brew install dfu-programmer
brew install dfu-util
brew install gcc-arm-none-eabi
brew install arm-gcc-bin@8
brew link --force arm-gcc-bin@8
brew install avrdude
This is the recommended method. If you don't have homebrew, [install it!](http://brew.sh/) It's very much worth it for anyone who works in the command line. Note that the `make` and `make install` portion during the homebrew installation of `avr-gcc@8` can take over 20 minutes and exhibit high CPU usage.
@@ -119,12 +120,12 @@ If this is a bit complex for you, Docker might be the turnkey solution you need.
util/docker_build.sh keyboard:keymap
# For example: util/docker_build.sh ergodox_ez:steno
```
This will compile the desired keyboard/keymap and leave the resulting `.hex` or `.bin` file in the QMK directory for you to flash. If `:keymap` is omitted, the `default` keymap is used. Note that the parameter format is the same as when building with `make`.
This will compile the desired keyboard/keymap and leave the resulting `.hex` or `.bin` file in the QMK directory for you to flash. If `:keymap` is omitted, all keymaps are used. Note that the parameter format is the same as when building with `make`.
You can also start the script without any parameters, in which case it will ask you to input the build parameters one by one, which you may find easier to use:
```bash
util/docker_build.sh
# Reads parameters as input (leave blank for defaults)
# Reads parameters as input (leave blank for all keyboards/keymaps)
```
There is also support for building _and_ flashing the keyboard straight from Docker by specifying the `target` as well:

View File

@@ -135,7 +135,7 @@ As there is no standard split communication driver for ARM-based split keyboards
`CUSTOM_MATRIX`
Lets you replace the default matrix scanning routine with your own code. You will need to provide your own implementations of matrix_init() and matrix_scan().
Lets you replace the default matrix scanning routine with your own code. For further details, see the [Custom Matrix page](custom_matrix.md).
`DEBOUNCE_TYPE`

View File

@@ -33,3 +33,7 @@ Support for up to 2 drivers. Each driver impliments 2 charlieplex matrices to in
## IS31FL3733
Support for up to a single driver with room for expansion. Each driver can control 192 individual LEDs or 64 RGB LEDs. For more information on how to setup the driver see the [RGB Matrix](feature_rgb_matrix.md) page.
## 24xx series external I2C EEPROM
Support for an external I2C-based EEPROM instead of using the on-chip EEPROM. For more information on how to setup the driver see the [EEPROM Driver](eeprom_driver.md) page.

View File

@@ -17,18 +17,8 @@
|`DEBUG` | |Toggle debug mode |
|`EEPROM_RESET` |`EEP_RST` |Resets EEPROM state by reinitializing it |
|`KC_GESC` |`GRAVE_ESC`|Escape when tapped, <code>&#96;</code> when pressed with Shift or GUI|
|`KC_LSPO` | |Left Shift when held, `(` when tapped |
|`KC_RSPC` | |Right Shift when held, `)` when tapped |
|`KC_LCPO` | |Left Control when held, `(` when tapped |
|`KC_RCPC` | |Right Control when held, `)` when tapped |
|`KC_LAPO` | |Left Alt when held, `(` when tapped |
|`KC_RAPC` | |Right Alt when held, `)` when tapped |
|`KC_SFTENT` | |Right Shift when held, Enter when tapped |
|`KC_LEAD` | |The [Leader key](feature_leader_key.md) |
|`KC_LOCK` | |The [Lock key](feature_key_lock.md) |
|`FUNC(n)` |`F(n)` |Call `fn_action(n)` (deprecated) |
|`M(n)` | |Call macro `n` |
|`MACROTAP(n)` | |Macro-tap `n` idk FIXME |
```
</div>

View File

@@ -2,7 +2,7 @@
<!---
original document: eae21eed7:docs/README.md
git diff eae21eed7 HEAD docs/README.md | cat
git diff eae21eed7 HEAD -- docs/README.md | cat
-->
[![現在のバージョン](https://img.shields.io/github/tag/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/tags)

View File

@@ -10,32 +10,34 @@
* [学習リソース](ja/newbs_learn_more_resources.md)
* [QMKの基本](ja/README.md)
* [QMKの導入](ja/getting_started_introduction.md)
* [QMK の導入](ja/getting_started_introduction.md)
* [QMK CLI](ja/cli.md)
* [QMK CLI 設定](ja/cli_configuration.md)
* [QMKへの貢献](ja/contributing.md)
* [Githubの使い方](ja/getting_started_github.md)
* [QMK への貢献](ja/contributing.md)
* [Github の使い方](ja/getting_started_github.md)
* [ヘルプ](ja/getting_started_getting_help.md)
* [破壊的な変更](ja/breaking_changes.md)
* [プルリクエストにフラグが付けられた](ja/breaking_changes_instructions.md)
* [2019年8月30日](ja/ChangeLog/20190830.md)
* [FAQ](ja/faq.md)
* [一般的なFAQ](ja/faq_general.md)
* [QMKのビルド/コンパイル](ja/faq_build.md)
* [QMKのデバッグ/トラブルシューティング](ja/faq_debug.md)
* [一般的な FAQ](ja/faq_general.md)
* [QMK のビルド/コンパイル](ja/faq_build.md)
* [QMK のデバッグ/トラブルシューティング](ja/faq_debug.md)
* [キーマップ](ja/faq_keymap.md)
* [Zadigを使ったドライバのインストール](ja/driver_installation_zadig.md)
* [Zadig を使ったドライバのインストール](ja/driver_installation_zadig.md)
* 詳細なガイド
* [ビルドツールのインストール](ja/getting_started_build_tools.md)
* [Vagrantのガイド](ja/getting_started_vagrant.md)
* [Vagrant のガイド](ja/getting_started_vagrant.md)
* [ビルド/コンパイルの説明](ja/getting_started_make_guide.md)
* [ファームウェアのフラッシュ](ja/flashing.md)
* [機能のカスタマイズ](ja/custom_quantum_functions.md)
* [キーマップの概要](ja/keymap.md)
* [ハードウェア](ja/hardware.md)
* [互換性のあるマイクロコントローラ](ja/compatible_microcontrollers.md)
* [AVR プロセッサ](ja/hardware_avr.md)
* [ドライバ](ja/hardware_drivers.md)
@@ -66,7 +68,7 @@
* [ブートマジック](ja/feature_bootmagic.md)
* [コンボ](ja/feature_combo.md)
* [コマンド](ja/feature_command.md)
* [Debounce API](ja/feature_debounce_type.md)
* [デバウンス API](ja/feature_debounce_type.md)
* [DIP スイッチ](ja/feature_dip_switch.md)
* [動的マクロ](ja/feature_dynamic_macros.md)
* [エンコーダ](ja/feature_encoders.md)
@@ -90,27 +92,31 @@
* [Stenography](ja/feature_stenography.md)
* [Swap Hands](ja/feature_swap_hands.md)
* [タップ ダンス](ja/feature_tap_dance.md)
* [Terminal](ja/feature_terminal.md)
* [ターミナル](ja/feature_terminal.md)
* [感熱式プリンタ](ja/feature_thermal_printer.md)
* [ユニコード](ja/feature_unicode.md)
* [Userspace](ja/feature_userspace.md)
* [ユーザスペース](ja/feature_userspace.md)
* [Velocikey](ja/feature_velocikey.md)
* メーカーおよびモッダーのために
* [Hand Wiring Guide](ja/hand_wire.md)
* [ISP Flashing Guide](ja/isp_flashing_guide.md)
* [Hand Wiring ガイド](ja/hand_wire.md)
* [ISP 書き込みガイド](ja/isp_flashing_guide.md)
* [ARM デバッグ ガイド](ja/arm_debugging.md)
* [ADC ドライバ](ja/adc_driver.md)
* [I2C ドライバ](ja/i2c_driver.md)
* [WS2812 ドライバ](ja/ws2812_driver.md)
* [EEPROM ドライバ](ja/eeprom_driver.md)
* [GPIO コントロール](ja/internals_gpio_control.md)
* [カスタムマトリックス](ja/custom_matrix.md)
* [Proton C 規約](ja/proton_c_conversion.md)
* より深く知るために
* [キーボードがどのように動作するか](ja/how_keyboards_work.md)
* [QMKの理解](ja/understanding_qmk.md)
* [QMK の理解](ja/understanding_qmk.md)
* 他の話題
* [EclipseQMKを使用](ja/other_eclipse.md)
* [VSCodeQMKを使用](ja/other_vscode.md)
* [EclipseQMK を使用](ja/other_eclipse.md)
* [VSCodeQMK を使用](ja/other_vscode.md)
* [サポート](ja/support.md)
* [翻訳を追加する方法](ja/translating.md)

View File

@@ -2,7 +2,7 @@
<!---
original document: eae21eed7:docs/arm_debugging.md
git diff eae21eed7 HEAD docs/arm_debugging.md | cat
git diff eae21eed7 HEAD -- docs/arm_debugging.md | cat
-->
このページでは、SWD アダプタとオープンソース/フリーツールを使って ARM MCU をデバッグするためのセットアップ方法について説明します。このガイドでは、GNU MCU Eclipse IDE for C/C++ Developers および OpenOCD を必要な依存関係と一緒にインストールします。
@@ -64,13 +64,13 @@ Eclipse に QMK をビルドしようとするデバイスを教える必要が
## ビルド
全て正しくセットアップできていれば、ハンマーボタンを押すとファームウェアがビルドされ、.binファイルが出力されるはずです。
全て正しくセットアップできていれば、ハンマーボタンを押すとファームウェアがビルドされ、.bin ファイルが出力されるはずです。
## デバッグ
### デバッガの接続
ARM MCU は、クロック信号(SWCLK) とデータ信号(SWDIO) で構成される Single Wire Debug (SWD) プロトコルを使います。MCUを 完全に操作するには、この2本のワイヤとグラウンドを接続するだけで十分です。ここでは、キーボードは USB を介して電力が供給されると想定しています。手動でリセットボタンを使えるため、RESET 信号は必要ありません。より高度なセットアップのために printf と scanf をホストに非同期にパイプする SWO 信号を使用できますが、私たちのセットアップでは無視します。
ARM MCU は、クロック信号(SWCLK) とデータ信号(SWDIO) で構成される Single Wire Debug (SWD) プロトコルを使います。MCU を 完全に操作するには、この2本のワイヤとグラウンドを接続するだけで十分です。ここでは、キーボードは USB を介して電力が供給されると想定しています。手動でリセットボタンを使えるため、RESET 信号は必要ありません。より高度なセットアップのために printf と scanf をホストに非同期にパイプする SWO 信号を使用できますが、私たちのセットアップでは無視します。
注意: SWCLK と SWDIO ピンがキーボードのマトリックスで使われていないことを確認してください。もし使われている場合は、一時的に他のピンに切り替えることができます。

View File

@@ -1,8 +1,8 @@
# QMK CLI
<!---
original document: d598f01cb:cli.md
git diff d598f01cb HEAD cli.md | cat
original document: 79e6b7866:docs/cli.md
git diff 79e6b7866 HEAD -- docs/cli.md | cat
-->
このページは QMK CLI のセットアップと使用方法について説明します。
@@ -86,7 +86,7 @@ qmk cformat [file1] [file2] [...] [fileN]
## `qmk compile`
このコマンドにより、任意のディレクトリからファームウェアをコンパイルすることができます。<https://config.qmk.fm> からエクスポートした JSON をコンパイルするか、リポジトリ内でキーマップをコンパイルすることができます。
このコマンドにより、任意のディレクトリからファームウェアをコンパイルすることができます。<https://config.qmk.fm> からエクスポートした JSON をコンパイルするか、リポジトリ内でキーマップをコンパイルするか、現在の作業ディレクトリでキーボードをコンパイルすることができます。
**Configurator Exports での使い方**:
@@ -100,6 +100,53 @@ qmk compile <configuratorExport.json>
qmk compile -kb <keyboard_name> -km <keymap_name>
```
**キーボードディレクトリでの使い方**:
default キーマップのあるキーボードディレクトリ、キーボードのキーマップディレクトリ、`--keymap <keymap_name>` で与えられるキーマップディレクトリにいなければなりません。
```
qmk compile
```
**例**:
```
$ qmk config compile.keymap=default
$ cd ~/qmk_firmware/keyboards/planck/rev6
$ qmk compile
Ψ Compiling keymap with make planck/rev6:default
...
```
あるいはオプションのキーマップ引数を指定して
```
$ cd ~/qmk_firmware/keyboards/clueboard/66/rev4
$ qmk compile -km 66_iso
Ψ Compiling keymap with make clueboard/66/rev4:66_iso
...
```
あるいはキーマップディレクトリで
```
$ cd ~/qmk_firmware/keyboards/gh60/satan/keymaps/colemak
$ qmk compile
Ψ Compiling keymap with make make gh60/satan:colemak
...
```
**レイアウトディレクトリでの使い方**:
`qmk_firmware/layouts/` 以下のキーマップディレクトリにいなければなりません。
```
qmk compile -kb <keyboard_name>
```
**例**:
```
$ cd ~/qmk_firmware/layouts/community/60_ansi/mechmerlin-ansi
$ qmk compile -kb dz60
Ψ Compiling keymap with make dz60:mechmerlin-ansi
...
```
## `qmk flash`
このコマンドは `qmk compile` に似ていますが、ブートローダを対象にすることもできます。ブートローダはオプションで、デフォルトでは `:flash` に設定されています。
@@ -146,14 +193,28 @@ qmk docs [-p PORT]
## `qmk doctor`
このコマンドは環境を調査し、潜在的なビルドあるいは書き込みの問題について警告します。
このコマンドは環境を調査し、潜在的なビルドあるいは書き込みの問題について警告します。必要に応じてそれらの多くを修正できます。
**使用法**:
```
qmk doctor
qmk doctor [-y] [-n]
```
**例**:
環境に問題がないか確認し、それらを修正するよう促します:
qmk doctor
環境を確認し、見つかった問題を自動的に修正します:
qmk doctor -y
環境を確認し、問題のみをレポートします:
qmk doctor -n
## `qmk json-keymap`
QMK Configurator からエクスポートしたものから keymap.c を生成します。
@@ -196,6 +257,16 @@ $ qmk kle2json -f kle.txt -f
qmk list-keyboards
```
## `qmk list-keymaps`
このコマンドは指定されたキーボード(とリビジョン)の全てのキーマップをリスト化します。
**使用法**:
```
qmk list-keymaps -kb planck/ez
```
## `qmk new-keymap`
このコマンドは、キーボードの既存のデフォルトのキーマップに基づいて新しいキーマップを作成します。

View File

@@ -1,8 +1,8 @@
# QMK CLI 設定
<!---
original document: d598f01cb:cli_configuration.md
git diff d598f01cb HEAD cli_configuration.md | cat
original document: d598f01cb:docs/cli_configuration.md
git diff d598f01cb HEAD -- docs/cli_configuration.md | cat
-->
このドキュメントは `qmk config` がどのように動作するかを説明します。

View File

@@ -1,8 +1,8 @@
# QMK の設定
<!---
original document: eae21eed7:docs/config_options.md
git diff eae21eed7 HEAD docs/config_options.md | cat
original document: 2fe288d01:docs/config_options.md
git diff 2fe288d01 HEAD -- docs/config_options.md | cat
-->
QMK はほぼ無制限に設定可能です。可能なところはいかなるところでも、やりすぎな程、ユーザーがコードサイズを犠牲にしてでも彼らのキーボードをカスタマイズをすることを許しています。ただし、このレベルの柔軟性により設定が困難になります。
@@ -83,7 +83,7 @@ QMK での全ての利用可能な設定にはデフォルトがあります。
* `#define BACKLIGHT_PIN B7`
* バックライトのピン
* `#define BACKLIGHT_LEVELS 3`
* バックライトのレベル数 (off を除いて最大15)
* バックライトのレベル数 (off を除いて最大31)
* `#define BACKLIGHT_BREATHING`
* バックライトのブレスを有効にします
* `#define BREATHING_PERIOD 6`
@@ -148,10 +148,14 @@ QMK での全ての利用可能な設定にはデフォルトがあります。
* `#define IGNORE_MOD_TAP_INTERRUPT`
* 両方のキーに `TAPPING_TERM` を適用することで、ホールド時に他のキーに変換するキーを使ってローリングコンボ (zx) をすることができるようにします
* 詳細は [Mod tap interrupt](ja/feature_advanced_keycodes.md#ignore-mod-tap-interrupt) を見てください
* `#define IGNORE_MOD_TAP_INTERRUPT_PER_KEY`
* キーごとの `IGNORE_MOD_TAP_INTERRUPT` 設定の処理を有効にします
* `#define TAPPING_FORCE_HOLD`
* タップされた直後に、デュアルロールキーを修飾子として使用できるようにします
* [Hold after tap](ja/feature_advanced_keycodes.md#tapping-force-hold)を見てください
* タップトグル機能を無効にします (`TT` あるいは One Shot Tap Toggle)
* `#define TAPPING_FORCE_HOLD_PER_KEY`
* キーごとの `TAPPING_FORCE_HOLD` 設定処理を有効にします。
* `#define LEADER_TIMEOUT 300`
* リーダーキーがタイムアウトするまでの時間
* タイムアウトする前にシーケンスを終了できない場合は、タイムアウトの設定を増やす必要があるかもしれません。あるいは、`LEADER_PER_KEY_TIMING` オプションを有効にすると良いでしょう。これは各キーがタップされた後でタイムアウトを再設定します。
@@ -185,7 +189,7 @@ QMK での全ての利用可能な設定にはデフォルトがあります。
* `#define RGBLIGHT_SPLIT`
* 分割キーボードの左半分の RGB LED の出力を右半分の RGB LED の入力につなげるかわりに、それぞれの側で個別にコントローラの出力ピンが直接 RGB LED の入力に繋がっているときは、この定義が必要です。
* `#define RGBLED_SPLIT { 6, 6 }`
* 分割キーボードの各半分の `RGB_DI_PIN` に直接配線されている接続されているLEDの数
* 分割キーボードの各半分の `RGB_DI_PIN` に直接配線されている接続されている LED の数
* 最初の値は左半分の LED の数を示し、2番目の値は右半分です。
* RGBLED_SPLIT が定義されている場合、RGBLIGHT_SPLIT は暗黙的に定義されます。
* `#define RGBLIGHT_HUE_STEP 12`
@@ -214,7 +218,7 @@ QMK での全ての利用可能な設定にはデフォルトがあります。
### 左右の設定
つ覚えておかなければならないことは、USB ポートが接続されている側が常にマスター側であるということです。USB に接続されていない側はスレーブです。
1つ覚えておかなければならないことは、USB ポートが接続されている側が常にマスター側であるということです。USB に接続されていない側はスレーブです。
分割キーボードの左右を設定するには、幾つかの異なる方法があります (優先度の順にリストされています):
@@ -258,7 +262,7 @@ QMK での全ての利用可能な設定にはデフォルトがあります。
* `#define SELECT_SOFT_SERIAL_SPEED <speed>` (デフォルトの速度は1です)
* serial 通信を使う時のプロトコルの速度を設定します。
* 速度:
* 0: 約189kbps (実験目的のみ)
* 0: 約 189kbps (実験目的のみ)
* 1: 約 137kbps (デフォルト)
* 2: 約 75kbps
* 3: 約 39kbps
@@ -270,9 +274,12 @@ QMK での全ての利用可能な設定にはデフォルトがあります。
* ARM についてはデフォルトの挙動
* AVR Teensy については必須
* `#define SPLIT_USB_TIMEOUT 2500`
* `#define SPLIT_USB_TIMEOUT 2000`
* `SPLIT_USB_DETECT` を使う時のマスタ/スレーブを検出する場合の最大タイムアウト
* `#define SPLIT_USB_TIMEOUT_POLL 10`
* `SPLIT_USB_DETECT` を使う時のマスタ/スレーブを検出する場合のポーリング頻度
# `rules.mk` ファイル
これは、トップレベルの `Makefile` から include される [make](https://www.gnu.org/software/make/manual/make.html) ファイルです。これは特定の機能を有効または無効にするだけでなく、コンパイルする MCU に関する情報を設定するために使われます。
@@ -285,8 +292,26 @@ QMK での全ての利用可能な設定にはデフォルトがあります。
* ビルドの後でルート `qmk_firmware` フォルダにコピーされる形式 (bin, hex) を定義します。
* `SRC`
* コンパイル・リンクリストにファイルを追加するために使われます。
* `LIB_SRC`
* コンパイル・リンクリストにライブラリとしてファイルを追加するために使われます。
`LIB_SRC` で指定されたファイルは、`SRC` で指定されたファイルの後にリンクされます。
例えば、次のように指定した場合:
```
SRC += a.c
LIB_SRC += lib_b.c
SRC += c.c
LIB_SRC += lib_d.c
```
リンク順は以下の通りです。
```
... a.o c.o ... lib_b.a lib_d.a ...
```
* `LAYOUTS`
* このキーボードがサポートする[レイアウト](ja/feature_layouts.md)のリスト
* `LINK_TIME_OPTIMIZATION_ENABLE`
* キーボードをコンパイルする時に、Link Time Optimization (`LTO`) を有効にします。これは処理に時間が掛かりますが、コンパイルされたサイズを大幅に減らします (そして、ファームウェアが小さいため、追加の時間は分からないくらいです)。ただし、`LTO` が有効な場合、古いマクロと関数の機能が壊れるため、自動的にこれらの機能を無効にします。これは `NO_ACTION_MACRO` と `NO_ACTION_FUNCTION` を自動的に定義することで行われます。
* `LTO_ENABLE`
* LINK_TIME_OPTIMIZATION_ENABLE と同じ意味です。`LINK_TIME_OPTIMIZATION_ENABLE` の代わりに `LTO_ENABLE` を使うことができます。
## AVR MCU オプション
* `MCU = atmega32u4`
@@ -345,9 +370,6 @@ QMK での全ての利用可能な設定にはデフォルトがあります。
* キーボードが起動する前に、USB 接続が確立されるのをキーボードに待機させます
* `NO_USB_STARTUP_CHECK`
* キーボードの起動後の usb サスペンドチェックを無効にします。通常、キーボードはタスクが実行される前にホストがウェイク アップするのを待ちます。分割キーボードは半分はウェイクアップコールを取得できませんが、マスタにコマンドを送信する必要があるため、役に立ちます。
* `LINK_TIME_OPTIMIZATION_ENABLE`
* キーボードをコンパイルする時に、Link Time Optimization (`LTO`) を有効にします。これは処理に時間が掛かりますが、コンパイルされたサイズを大幅に減らします (そして、ファームウェアが小さいため、追加の時間は分からないくらいです)。ただし、`LTO` が有効な場合、古いマクロと関数の機能が壊れるため、自動的にこれらの機能を無効にします。これは `NO_ACTION_MACRO``NO_ACTION_FUNCTION` を自動的に定義することで行われます。
* `LINK_TIME_OPTIMIZATION_ENABLE` の代わりに `LTO_ENABLE` を使うことができます。
## USB エンドポイントの制限

View File

@@ -2,7 +2,7 @@
<!---
original document: d47809575:docs/contributing.md
git diff d47809575 HEAD docs/contributing.md | cat
git diff d47809575 HEAD -- docs/contributing.md | cat
-->
👍🎉 まず、これを読み貢献する時間を作ってくれてありがとうございます!🎉👍

View File

@@ -0,0 +1,518 @@
# キーボードの挙動をカスタマイズする方法
<!---
original document: 7494490d6:docs/custom_quantum_functions.md
git diff 7494490d6 HEAD -- docs/custom_quantum_functions.md | cat
-->
多くの人にとって、カスタムキーボードはボタンの押下をコンピュータに送信するだけではありません。単純なボタンの押下やマクロよりも複雑なことを実行できるようにしたいでしょう。QMK にはコードを挿入したり、機能を上書きしたり、様々な状況でキーボードの挙動をカスタマイズできるフックがあります。
このページでは、QMK に関する特別な知識は想定していませんが、[QMK の理解](ja/understanding_qmk.md)を読むとより根本的なレベルで何が起きているかを理解するのに役立ちます。
## コア、キーボード、キーマップ階層 :id=a-word-on-core-vs-keyboards-vs-keymap
私たちは QMK を階層として構造化しました:
* コア (`_quantum`)
* キーボード/リビジョン (`_kb`)
* キーマップ (`_user`)
以下で説明される各関数は `_kb()` サフィックスあるいは `_user()` サフィックスを使って定義することができます。`_kb()` サフィックスはキーボード/リビジョンレベルで使うことを意図しており、一方で `_user()` サフィックスはキーマップレベルで使われるべきです。
キーボード/リビジョンレベルで関数を定義する場合、`_kb()` は他の何かを実行する前に `_user()` を呼び出すよう実装することが重要です。そうでなければ、キーマップレベル関数は呼ばれないでしょう。
# カスタムキーコード
最も一般的なタスクは、既存のキーコードの挙動を変更するか、新しいキーコードを作成することです。コードの観点からは、それぞれの仕組みは非常に似ています。
## 新しいキーコードの定義
独自のカスタムキーコードを作成する最初のステップは、それらを列挙することです。これは、カスタムキーコードに名前を付け、そのキーコードにユニークな番号を割り当てることの両方を意味します。QMK は、カスタムキーコードを固定範囲の番号に制限するのではなく、`SAFE_RANGE` マクロを提供します。カスタムキーコードを列挙する時に `SAFE_RANGE` を使うと、ユニークな番号を取得することが保証されます。
これは2つのキーコードを列挙する例です。このブロックを `keymap.c` に追加した後で、キーマップの中で `FOO``BAR` を使うことができます。
```c
enum my_keycodes {
FOO = SAFE_RANGE,
BAR
};
```
## 任意のキーコードの挙動のプログラミング
既存のキーの挙動を上書きしたい場合、あるいは新しいキーについて挙動を定義する場合、`process_record_kb()` および `process_record_user()` 関数を使うべきです。これらは実際のキーイベントが処理される前のキー処理中に QMK によって呼び出されます。これらの関数が `true` を返す場合、QMK はキーコードを通常通りに処理します。これは、キーを置き換えるのではなく、キーの機能を拡張するのに便利です。これらの関数が `false` を返す場合、QMK は通常のキー処理をスキップし、必要なキーのアップまたはダウンイベントを送信するのかはユーザ次第です。
これらの関数はキーが押されるか放されるたびに呼び出されます。
### `process_record_user()` の実装例
この例は2つの事を行います。`FOO` と呼ばれるカスタムキーコードの挙動を定義し、Enter キーが押されるたびに音を再生します。
```c
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case FOO:
if (record->event.pressed) {
// 押された時に何かをします
} else {
// 放された時に何かをします
}
return false; // このキーの以降の処理をスキップします
case KC_ENTER:
// enter が押された時に音を再生します
if (record->event.pressed) {
PLAY_NOTE_ARRAY(tone_qwerty);
}
return true; // QMK に enter のプレスまたはリリースイベントを送信させます
default:
return true; // 他の全てのキーコードを通常通りに処理します
}
}
```
### `process_record_*` 関数のドキュメント
* キーボード/リビジョン: `bool process_record_kb(uint16_t keycode, keyrecord_t *record)`
* キーマップ: `bool process_record_user(uint16_t keycode, keyrecord_t *record)`
`keycode` 引数はキーマップで定義されているものです。例えば `MO(1)``KC_L` など。これらのイベントを処理するには `switch...case` ブロックを使うべきです。
`record` 引数は実際のプレスに関する情報を含みます:
```c
keyrecord_t record {
keyevent_t event {
keypos_t key {
uint8_t col
uint8_t row
}
bool pressed
uint16_t time
}
}
```
# LED 制御
QMK は HID 仕様で定義された5つの LED の読み取りメソッドを提供します:
* Num Lock
* Caps Lock
* Scroll Lock
* Compose
* Kana
ロック LED の状態を取得するには2つの方法があります:
* `bool led_update_kb(led_t led_state)` あるいは `_user(led_t led_state)` を実装する、または
* `led_t host_keyboard_led_state()` を呼び出す
!> `host_keyboard_led_state()``led_update_user()` が呼ばれる前に新しい値を既に反映している場合があります。
LED の状態を `uint8_t` として提供する2つの非推奨の関数があります:
* `uint8_t led_set_kb(uint8_t usb_led)``_user(uint8_t usb_led)`
* `uint8_t host_keyboard_leds()`
## `led_update_user()`
この関数はこれら5つの LED のいずれかの状態が変化すると呼ばれます。LED の状態を構造体のパラメータとして受け取ります。
慣例により、`led_update_kb()` にそのコードを実行するようフックさせるために `led_update_user()` から `true` を返し、`led_update_kb()` でコードを実行したくない場合は `false` を返します。
以下はいくつかの例です:
- レイヤー表示のような何かのために LED を使うために LED を上書きする
- `_kb()` 関数を実行したくないので、`false` を返します。これはレイヤーの挙動を上書きするためです。
- LED がオンあるいはオフになった時に音楽を再生する。
- `_kb` 関数を実行したいので、`true` を返します。これはデフォルトの LED の挙動に追加されます。
?> `led_set_*` 関数は `bool` の代わりに `void` を返すため、キーボードの LED 制御を上書きすることができません。従って、代わりに `led_update_*` を使うことをお勧めします。
### `led_update_kb()` の実装例
```c
bool led_update_kb(led_t led_state) {
bool res = led_update_user(led_state);
if(res) {
// writePin は 1 でピンを high に、0 で low に設定します。
// この例では、ピンは反転していて、
// low/0 は LED がオンになり、high/1 は LED がオフになります。
// この挙動は、LED がピンと VCC の間にあるか、ピンと GND の間にあるかどうかに依存します。
writePin(B0, !led_state.num_lock);
writePin(B1, !led_state.caps_lock);
writePin(B2, !led_state.scroll_lock);
writePin(B3, !led_state.compose);
writePin(B4, !led_state.kana);
}
return res;
}
```
### `led_update_user()` の実装例
この不完全な例は Caps Lock がオンまたはオフになった場合に音を再生します。また LED の状態を保持する必要があるため、`true` を返します。
```c
#ifdef AUDIO_ENABLE
float caps_on[][2] = SONG(CAPS_LOCK_ON_SOUND);
float caps_off[][2] = SONG(CAPS_LOCK_OFF_SOUND);
#endif
bool led_update_user(led_t led_state) {
#ifdef AUDIO_ENABLE
static uint8_t caps_state = 0;
if (caps_state != led_state.caps_lock) {
led_state.caps_lock ? PLAY_SONG(caps_on) : PLAY_SONG(caps_off);
caps_state = led_state.caps_lock;
}
#endif
return true;
}
```
### `led_update_*` 関数のドキュメント
* キーボード/リビジョン: `bool led_update_kb(led_t led_state)`
* キーマップ: `bool led_update_user(led_t led_state)`
## `host_keyboard_led_state()`
最後に受信した LED の状態を `led_t` として取得するためにこの関数を呼びます。これは、`led_update_*` の外部から、例えば [`matrix_scan_user()`](#matrix-scanning-code) の中で LED の状態を読み取るのに便利です。
## 物理的な LED の状態の設定
一部のキーボードの実装は、物理的な LED の状態を設定するための便利なメソッドを提供しています。
### Ergodox キーボード
Ergodox の実装は、個々の LED をオンあるいはオフにするために `ergodox_right_led_1`/`2`/`3_on`/`off()` と、インデックスによってそれらをオンあるいはオフにするために `ergodox_right_led_on`/`off(uint8_t led)` を提供します。
さらに、LED の明度を指定することができます。全ての LED に同じ明度を指定するなら `ergodox_led_all_set(uint8_t n)` を使い、個別の LED の明度を指定するなら `ergodox_right_led_1`/`2`/`3_set(uint8_t n)` を使い、LED のインデックスを指定して明度を指定するには `ergodox_right_led_set(uint8_t led, uint8_t n)` を使います。
Ergodox キーボードは、最低の明度として `LED_BRIGHTNESS_LO` を、最高の輝度(これはデフォルトです)として `LED_BRIGHTNESS_HI` も定義しています。
# キーボードの初期化コード
キーボードの初期化プロセスには幾つかのステップがあります。何をしたいかによって、どの関数を使うべきかに影響します。
3つの主な初期化関数があり、呼び出される順番にリストされています。
* `keyboard_pre_init_*` - ほとんどのものが開始される前に起こります。非常に早くに実行したいハードウェアのセットアップに適しています。
* `matrix_init_*` - ファームウェアのスタートアッププロセスの途中で起こります。ハードウェアは初期化されますが、機能はまだ初期化されていない場合があります。
* `keyboard_post_init_*` - ファームウェアのスタートアッププロセスの最後に起こります。これはほとんどの場合、 "カスタマイズ"コードを配置する場所です。
!> ほとんどの人にとって、`keyboard_post_init_user` が呼び出したいものです。例えば、ここで RGB アンダーグローのセットアップを行います。
## キーボードの事前初期化コード
これは USB さえ起動する前の、起動中の非常に早い段階で実行されます。
この直後にマトリックスが初期化されます。
これは主にハードウェア向きの初期化のためであるため、ほとんどのユーザは使うべきではありません。
ただし、初期化が必要なハードウェアがある場合には、これが最適な場所です (LED ピンの初期化など)。
### `keyboard_pre_init_user()` の実装例
この例は、キーボードレベルで、LED ピンとして B0、B1、B2、B3 および B4 をセットアップします。
```c
void keyboard_pre_init_user(void) {
// キーボードの事前初期コードを呼び出します。
// LED ピンを出力として設定します
setPinOutput(B0);
setPinOutput(B1);
setPinOutput(B2);
setPinOutput(B3);
setPinOutput(B4);
}
```
### `keyboard_pre_init_*` 関数のドキュメント
* キーボード/リビジョン: `void keyboard_pre_init_kb(void)`
* キーマップ: `void keyboard_pre_init_user(void)`
## マトリックスの初期化コード
これは、マトリックスが初期化され、ハードウェアの一部がセットアップされた後で、ただし機能の多くが初期化される前に、呼び出されます。
他の場所で必要になるかもしれないものをセットアップするのに役立ちますが、ハードウェアに関連するものではなく、開始場所に依存するものでもありません。
### `matrix_init_*` 関数のドキュメント
* キーボード/リビジョン: `void matrix_init_kb(void)`
* キーマップ: `void matrix_init_user(void)`
## キーボードの事後初期化コード
キーボードの初期化プロセスの極めて最後のタスクとして実行されます。この時点で初期化される必要があるような、特定の機能を変更したい場合に便利です。
### `keyboard_post_init_user()` の実装例
この例は、他の全てのものが初期化された後で実行され、rgb アンダーグローの設定をセットアップします。
```c
void keyboard_post_init_user(void) {
// post init コードを呼びます
rgblight_enable_noeeprom(); // 設定を保存せずに Rgb を有効にします
rgblight_sethsv_noeeprom(180, 255, 255); // 保存せずに色を青緑/シアンに設定します
rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3); // 保存せずにモードを高速なブリージングに設定します
}
```
### `keyboard_post_init_*` 関数のドキュメント
* キーボード/リビジョン: `void keyboard_post_init_kb(void)`
* キーマップ: `void keyboard_post_init_user(void)`
# マトリックススキャンコード :id=matrix-scanning-code
可能であれば常に `process_record_*()` を使ってキーボードをカスタマイズし、その方法でイベントをフックし、コードがキーボードのパフォーマンスに悪影響を与えないようにします。ただし、まれにマトリックススキャンにフックする必要があります。これらの関数は1秒あたり少なくとも10回は呼び出されるため、これらの関数のコードのパフォーマンスに非常に注意してください。
### `matrix_scan_*` の実装例
この例は意図的に省略されています。このようなパフォーマンスに敏感な領域にフックする前に、例を使わずにこれを書くために、QMK 内部について十分理解する必要があります。助けが必要であれば、[issue を開く](https://github.com/qmk/qmk_firmware/issues/new) か [Discord で会話](https://discord.gg/Uq7gcHh)してください。
### `matrix_scan_*` 関数のドキュメント
* キーボード/リビジョン: `void matrix_scan_kb(void)`
* キーマップ: `void matrix_scan_user(void)`
この関数はマトリックススキャンのたびに呼び出されます。これは基本的に MCU が処理できる頻度です。大量に実行されるため、ここに何を置くかについては注意してください。
カスタムマトリックススキャンコードが必要な場合は、この関数を使う必要があります。また、カスタムステータス出力 (LED あるいはディスプレイなど)や、ユーザが入力していない場合でも定期的にトリガーするその他の機能のために使うことができます。
# キーボードアイドリング/ウェイクコード
キーボードがサポートしている場合、多くの機能を停止することで"アイドル"にすることができます。これの良い例は、RGB ライトあるいはバックライトです。これにより、電力消費を節約できるか、キーボードの動作が改善されるかもしれません。
これは2つの関数によって制御されます: `suspend_power_down_*` および `suspend_wakeup_init_*`。これらはシステムキーボードがアイドルになった時と、起動した時のそれぞれで呼ばれます。
### suspend_power_down_user() と suspend_wakeup_init_user() の実装例
```c
void suspend_power_down_user(void) {
rgb_matrix_set_suspend_state(true);
}
void suspend_wakeup_init_user(void) {
rgb_matrix_set_suspend_state(false);
}
```
### キーボードサスペンド/ウェイク関数のドキュメント
* キーボード/リビジョン : `void suspend_power_down_kb(void)` および `void suspend_wakeup_init_user(void)`
* キーマップ: `void suspend_power_down_kb(void)` および `void suspend_wakeup_init_user(void)`
# レイヤー切り替えコード
これはレイヤーが切り替えられるたびにコードを実行します。レイヤー表示あるいはカスタムレイヤー処理に役立ちます。
### `layer_state_set_*` の実装例
この例は、レイヤーに基づいて [RGB アンダーグロー](ja/feature_rgblight.md)を設定する方法を示していて、Planck を例として使っています。
```c
layer_state_t layer_state_set_user(layer_state_t state) {
switch (get_highest_layer(state)) {
case _RAISE:
rgblight_setrgb (0x00, 0x00, 0xFF);
break;
case _LOWER:
rgblight_setrgb (0xFF, 0x00, 0x00);
break;
case _PLOVER:
rgblight_setrgb (0x00, 0xFF, 0x00);
break;
case _ADJUST:
rgblight_setrgb (0x7A, 0x00, 0xFF);
break;
default: // 他の全てのレイヤーあるいはデフォルトのレイヤー
rgblight_setrgb (0x00, 0xFF, 0xFF);
break;
}
return state;
}
```
### `layer_state_set_*` 関数のドキュメント
* キーボード/リビジョン: `layer_state_t layer_state_set_kb(layer_state_t state)`
* キーマップ: `layer_state_t layer_state_set_user(layer_state_t state)`
[キーマップの概要](ja/keymap.md#keymap-layer-status)で説明されるように、`state` はアクティブなレイヤーのビットマスクです。
# 永続的な設定 (EEPROM)
これによりキーボードのための永続的な設定を設定することができます。これらの設定はコントローラの EEPROM に保存され、電源が落ちた後であっても保持されます。設定は `eeconfig_read_kb` および `eeconfig_read_user` を使って読み取ることができ、`eeconfig_update_kb` および `eeconfig_update_user` を使って書きこむことができます。これは切り替え可能な機能 (rgb レイヤーの表示の切り替えなど)に役立ちます。さらに、`eeconfig_init_kb` および `eeconfig_init_user` を使って EEPROM のデフォルト値を設定できます。
ここでの複雑な部分は、EEPROM を介してデータを保存およびアクセスできる方法がたくさんあり、これを行うための"正しい"方法が無いということです。ただし、各関数には DWORD (4 バイト)しかありません。
EEPROM の書き込み回数には制限があることに注意してください。これは非常に高い値ですが、EEPROM に書き込むのはこれだけではなく、もし頻繁に書き込むと、MCU の寿命を大幅に短くする可能性があります。
* この例を理解していない場合は、この機能はかなり複雑なため、この機能を使うことを避けても構いません。
### 実装例
これは、設定を追加し、読み書きする例です。この例では、ユーザキーマップを使っています。これは複雑な機能で、多くのことが行われています。実際、動作のために上記の多くの関数を使います!
keymap.c ファイルの中で、先頭にこれを追加します:
```c
typedef union {
uint32_t raw;
struct {
bool rgb_layer_change :1;
};
} user_config_t;
user_config_t user_config;
```
これは、設定をメモリ内に保存し、EEPROM に書き込むことができる32ビット構造体をセットアップします。これを使うと、この構造体に変数が定義されるため、変数を定義する必要が無くなります。`bool` (boolean) の値は1ビットを使い、`uint8_t` は8ビットを使い、`uint16_t` は16ビットを使うことに注意してください。組み合わせて使うことができますが、順番の変更は読み書きされる値が変更されるため、問題が発生するかもしれません。
`layer_state_set_*` 関数のために `rgb_layer_change` を使い、全てを設定するために `keyboard_post_init_user` および `process_record_user` を使います。
ここで、上の `keyboard_post_init_user` コードを使って、作成したばかりの構造体を設定するために `eeconfig_read_user()` を追加します。そして、この構造体をすぐに使ってキーマップの機能を制御することができます。それは以下のようになります:
```c
void keyboard_post_init_user(void) {
// キーマップレベルのマトリックスの初期化処理を呼びます
// EEPROM からユーザ設定を読み込みます
user_config.raw = eeconfig_read_user();
// 有効な場合はデフォルトレイヤーを設定します
if (user_config.rgb_layer_change) {
rgblight_enable_noeeprom();
rgblight_sethsv_noeeprom_cyan();
rgblight_mode_noeeprom(1);
}
}
```
上記の関数は読み取ったばかりの EEPROM 設定を使い、デフォルトのレイヤーの RGB 色を設定します。その「生の」値は、上で作成した「共用体」に基づいて使用可能な構造に変換されます。
```c
layer_state_t layer_state_set_user(layer_state_t state) {
switch (get_highest_layer(state)) {
case _RAISE:
if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom_magenta(); rgblight_mode_noeeprom(1); }
break;
case _LOWER:
if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom_red(); rgblight_mode_noeeprom(1); }
break;
case _PLOVER:
if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom_green(); rgblight_mode_noeeprom(1); }
break;
case _ADJUST:
if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom_white(); rgblight_mode_noeeprom(1); }
break;
default: // 他の全てのレイヤーあるいはデフォルトのレイヤー
if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom_cyan(); rgblight_mode_noeeprom(1); }
break;
}
return state;
}
```
これにより、値が有効になっていた場合のみ、RGB アンダーグローが変更されます。この値を設定するために、`RGB_LYR` と呼ばれる `process_record_user` 用の新しいキーコードを作成します。さらに、通常の RGB コードを使う場合、上記の例を使ってオフになることを確認します。以下のようになります:
```c
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case FOO:
if (record->event.pressed) {
// 押された時に何かをします
} else {
// 放された時に何かをします
}
return false; // このキーの以降の処理をスキップします
case KC_ENTER:
// enter が押された時に音を再生します
if (record->event.pressed) {
PLAY_NOTE_ARRAY(tone_qwerty);
}
return true; // QMK に enter のプレスまたはリリースイベントを送信させます
case RGB_LYR: // これにより、アンダーグローをレイヤー表示として、あるいは通常通りに使うことができます。
if (record->event.pressed) {
user_config.rgb_layer_change ^= 1; // 状態を切り替えます
eeconfig_update_user(user_config.raw); // 新しい状態を EEPROM に書き込みます
if (user_config.rgb_layer_change) { // レイヤーの状態表示が有効な場合
layer_state_set(layer_state); // すぐにレイヤーの色を更新します
}
}
return false; break;
case RGB_MODE_FORWARD ... RGB_MODE_GRADIENT: // 任意の RGB コード に対して(quantum_keycodes.h を見てください。400行目参照)
if (record->event.pressed) { // これはレイヤー表示を無効にします。これを変更する場合は、無効にしたいだろうため。
if (user_config.rgb_layer_change) { // 有効な場合のみ
user_config.rgb_layer_change = false; // 無効にします
eeconfig_update_user(user_config.raw); // 設定を EEPROM に書き込みます
}
}
return true; break;
default:
return true; // 他の全てのキーコードを通常通りに処理します
}
}
```
最後に、`eeconfig_init_user` 関数を追加して、EEPROM がリセットされた時にデフォルト値、さらにはカスタムアクションを指定できるようにします。EEPROM を強制的にリセットするには、`EEP_RST` キーコードあるいは[ブートマジック](ja/feature_bootmagic.md)機能を使います。例えば、デフォルトで rgb レイヤー表示を設定し、デフォルト値を保存したい場合。
```c
void eeconfig_init_user(void) { // EEPROM がリセットされます!
user_config.raw = 0;
user_config.rgb_layer_change = true; // デフォルトでこれを有効にします
eeconfig_update_user(user_config.raw); // デフォルト値を EEPROM に書き込みます
// これらの値も EEPROM に書き込むためには、noeeprom 以外のバージョンを使います
rgblight_enable(); // デフォルトで RGB を有効にします
rgblight_sethsv_cyan(); // デフォルトでシアンに設定します
rgblight_mode(1); // デフォルトでソリッドに設定します
}
```
これで完了です。RGB レイヤー表示は必要な場合にのみ機能します。キーボードを取り外した後でも保存されます。RGB コードのいずれかを使うと、レイヤー表示が無効になり、設定したモードと色がそのままになります。
### 'EECONFIG' 関数のドキュメント
* キーボード/リビジョン: `void eeconfig_init_kb(void)``uint32_t eeconfig_read_kb(void)` および `void eeconfig_update_kb(uint32_t val)`
* キーマップ: `void eeconfig_init_user(void)``uint32_t eeconfig_read_user(void)` および `void eeconfig_update_user(uint32_t val)`
`val` は EEPROM に書き込みたいデータの値です。`eeconfig_read_*` 関数は EEPROM から32ビット(DWORD) 値を返します。
# カスタムタッピング期間
デフォルトでは、タッピング期間はグローバルに設定されていて、キーでは設定することができません。ほとんどのユーザにとって、これは全然問題ありません。しかし、場合によっては、`LT` キーとは異なるタイムアウトによって、デュアルファンクションキーが大幅に改善されます。なぜなら、一部のキーは他のキーよりも押し続けやすいためです。それぞれにカスタムキーコードを使う代わりに、キーごとに設定可能な `TAPPING_TERM` を使用できます。
この機能を有効にするには、最初に `config.h``#define TAPPING_TERM_PER_KEY` を追加する必要があります。
## `get_tapping_term` の実装例
キーコードに基づいて `TAPPING TERM` を変更するには、次のようなものを `keymap.c` ファイルに追加します:
```c
uint16_t get_tapping_term(uint16_t keycode) {
switch (keycode) {
case SFT_T(KC_SPC):
return TAPPING_TERM + 1250;
case LT(1, KC_GRV):
return 130;
default:
return TAPPING_TERM;
}
}
```
### `get_tapping_term` 関数のドキュメント
ここにある他の多くの関数とは異なり、quantum あるいはキーボードレベルの関数を持つ必要はありません (または理由さえありません)。ここではユーザレベルの関数だけが有用なため、そのようにマークする必要はありません。

View File

@@ -0,0 +1,53 @@
# Zadig を使ったブートローダドライバのインストール
<!---
original document: d598f01cb:docs/driver_installation_zadig.md
git diff d598f01cb HEAD -- docs/driver_installation_zadig.md | cat
-->
QMK はホストにたいして通常の HID キーボードデバイスとして振る舞うため特別なドライバは必要ありません。しかし、Windows でのキーボードへの書き込みは、多くの場合、キーボードをリセットした時に現れるブートローダデバイスで*行います*。
2つの注目すべき例外があります: 通常 Pro Micro で見られる Caterina ブートローダや、PJRC Teensy に書き込まれている HalfKay ブートローダは、それぞれシリアルポートと汎用 HID デバイスとして振る舞うため、ドライバは必要ありません。
[Zadig](https://zadig.akeo.ie/) ユーティリティを使うことをお勧めします。MSYS2 あるいは WSL を使って開発環境をセットアップした場合、`qmk_install.sh` スクリプトはドライバをインストールするかどうかをたずねます。
## インストール
`RESET` キーコード (別のレイヤにあるかもしれません)を押すか、通常はキーボードの下面にあるリセットスイッチを押して、キーボードをブートローダモードにします。どちらもキーボードに無い場合は、Escape または Space+`B` を押しながら接続してみてください (詳細は、[ブートマジック](ja/feature_bootmagic.md) ドキュメントを見てください)。一部のキーボードはブートマジックの代わりに[コマンド](ja/feature_command.md)を使います。この場合、キーボードが接続されている状態で「左Shift + 右Shift + `B`」あるいは「左Shift + 右Shift + Escape」を押すと、ブートローダモードに入ることができます。
一部のキーボードはブートローダに入るために特定の操作をする必要があります。例えば、[ブートマジック Lite](ja/feature_bootmagic.md#bootmagic-lite) キー (デフォルト: Escape) は別のキー(例えば、左Control)かもしれません。また、コマンドを有効にするキーの組み合わせ (デフォルト: 左Shift + 右Shift) は何か他のキー(例えば 左Control + 右Control)を押し続ける必要がある場合があります。不明な場合は、キーボードの README ファイルを参照してください。
USBaspLoader を使ってデバイスをブートローダモードにするには、`BOOT` ボタンを押しながら `RESET` ボタンをタップしてください。
あるいは `BOOT` を押し続けながら USB ケーブルを挿入します。
Zadig は自動的にブートローダデバイスを検知します。**Options → List All Devices** を確認する必要がある場合があります。
- Atmel AVR MCU を搭載したキーボードの場合、ブートローダは `ATm32U4DFU` に似た名前が付けられ、ベンダー ID は `03EB` です。
- USBasp ブートローダは `USBasp` として表示され、VID/PID は`16C0:05DC` です。
- QMK-DFU ブートローダを使って書き込まれた AVR キーボードは `<keyboard name> Bootloader` という名前が付けられ、VID は `03EB` です。
- ほとんどの ARM キーボードでは、`STM32 BOOTLOADER` と呼ばれ、VID/PID は `0483:DF11` です。
!> Zadig が `HidUsb` ドライバを使用する1つ以上のデバイスを表示する場合、キーボードはおそらくブートローダモードではありません。矢印はオレンジ色になり、システムドライバの変更を確認するように求められます。この場合、続行**しないでください**
矢印が緑色で表示されたら、ドライバを選択し、**Install Driver** をクリックします。`libusb-win32` ドライバは通常 AVR で動作し、`WinUSB`は ARM で動作しますが、それでもキーボードに書き込みできない場合は、リストから異なるドライバをインストールしてみてください。msys2 を使ってコマンドライン経由で USBaspLoader デバイスに書き込むには、`libusbk` ドライバがお勧めです。そうではなく書き込みに QMK Toolbox を使っている場合は `libusb-win32` がうまく動作します。
![ブートローダドライバが正常にインストールされた Zadig](https://i.imgur.com/b8VgXzx.png)
最後に、新しいドライバがロードされたことを確認するためにキーボードのプラグを抜いて再接続します。書き込みに QMK Toolbox を使う場合は、ドライバの変更を認識しない場合があるため、QMK Toolkit を終了して再起動します。
## 間違ったデバイスのインストールからの回復
キーボードが入力できなくなった場合は、ブートローダではなくキーボード自体のドライバを間違って入れ替えた可能性があります。これはキーボードがブートローダモードでない場合に起こりえます。これは Zadig で簡単に確認することができます - 健全なキーボードには、全てのインタフェースに `HidUsb` ドライバがインストールされています:
![Zadig から見た健全なキーボード](https://i.imgur.com/Hx0E5kC.png)
デバイスマネージャーを開き、キーボードと思われるデバイスを探します。
![デバイスマネージャーにおける、間違ったドライバがインストールされたキーボード](https://i.imgur.com/L3wvX8f.png)
右クリックし、**デバイスのアンインストール** をクリックします。最初に **このデバイスのドライバーソフトウェアを削除します** にチェックが付いていることを確認してください。
!["ドライバの削除"にチェックボックスにチェックが付いた、デバイスのアンインストールダイアログ](https://i.imgur.com/aEs2RuA.png)
**Action → Scan for hardware changes** をクリックします。この時点で、再び入力できるようになっているはずです。Zadig でキーボードデバイスが `HidUsb` ドライバを使っていることを再確認します。そうであれば完了です。キーボードは再び機能するはずです!
?> Windows が新しいドライバを使えるようにするために、この時点でコンピュータを完全に再起動する必要があるかもしれません。

11
docs/ja/faq.md Normal file
View File

@@ -0,0 +1,11 @@
# よくある質問
<!---
original document: d598f01cb:docs/faq.md
git diff d598f01cb HEAD -- docs/faq.md | cat
-->
* [一般](ja/faq_general.md)
* [QMK のビルドあるいはコンパイル](ja/faq_build.md)
* [QMK のデバッグとトラブルシューティング](ja/faq_debug.md)
* [キーマップ](ja/faq_keymap.md)

160
docs/ja/faq_build.md Normal file
View File

@@ -0,0 +1,160 @@
# よくあるビルドの質問
<!---
original document: 0f43c2652:docs/faq_build.md
git diff 0f43c2652 HEAD -- docs/faq_build.md | cat
-->
このページは QMK のビルドに関する質問を説明します。まだビルドをしていない場合は、[ビルド環境のセットアップ](ja/getting_started_build_tools.md) および [Make 手順](ja/getting_started_make_guide.md)ガイドを読むべきです。
## Linux でプログラムできません
デバイスを操作するには適切な権限が必要です。Linux ユーザの場合は、以下の `udev` ルールに関する指示を見てください。`udev` に問題がある場合は、回避策は `sudo` コマンドを使うことです。このコマンドに慣れていない場合は、`man sudo` コマンドでマニュアルを確認するか、[この web ページを見てください](https://linux.die.net/man/8/sudo)。
コントローラが ATMega32u4 の場合の `sudo` の使い方の例:
$ sudo dfu-programmer atmega32u4 erase --force
$ sudo dfu-programmer atmega32u4 flash your.hex
$ sudo dfu-programmer atmega32u4 reset
あるいは、単純に:
$ sudo make <keyboard>:<keymap>:dfu
`make``sudo` で実行することは一般的には良い考えでは***なく***、可能であれば前者の方法のいずれかを使うべきです。
### Linux の `udev` ルール
Linux では、MCU にアクセスするには適切な権限が必要です。ファームウェアを書き込む時に `sudo` を使うか、`/etc/udev/rules.d/` にこれらのファイルを配置することで、アクセスすることができます。権限の追加が完了したら、以下を実行します:
```console
sudo udevadm control --reload-rules
sudo udevadm trigger
```
**/etc/udev/rules.d/50-atmel-dfu.rules:**
```
# Atmel ATMega32U4
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff4", MODE:="0666"
# Atmel USBKEY AT90USB1287
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ffb", MODE:="0666"
# Atmel ATMega32U2
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff0", MODE:="0666"
```
**/etc/udev/rules.d/52-tmk-keyboard.rules:**
```
# tmk keyboard products https://github.com/tmk/tmk_keyboard
SUBSYSTEMS=="usb", ATTRS{idVendor}=="feed", MODE:="0666"
```
**/etc/udev/rules.d/54-input-club-keyboard.rules:**
```
# Input Club keyboard bootloader
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1c11", MODE:="0666"
```
**/etc/udev/rules.d/55-caterina.rules:**
```
# ModemManager should ignore the following devices
ATTRS{idVendor}=="2a03", ENV{ID_MM_DEVICE_IGNORE}="1"
ATTRS{idVendor}=="2341", ENV{ID_MM_DEVICE_IGNORE}="1"
```
**注意:** ModemManager フィルタリングは厳格モードでは無い場合のみ動作します。以下のコマンドでその設定を変更することができます:
```console
sudo sed -i 's/--filter-policy=strict/--filter-policy=default/' /lib/systemd/system/ModemManager.service
sudo systemctl daemon-reload
sudo systemctl restart ModemManager
```
**/etc/udev/rules.d/56-dfu-util.rules:**
```
# stm32duino
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1eaf", ATTRS{idProduct}=="0003", MODE:="0666"
# Generic stm32
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", MODE:="0666"
```
**/etc/udev/rules.d/57-bootloadhid.rules:**
```
# bootloadHID
SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05df", MODE:="0666"
```
### Linux のブートローダモードで Serial デバイスが検知されない
カーネルがデバイスを適切にサポートしていることを確認してください。デバイスが、Pro Micro (Atmega32u4) のように USB ACM を使う場合、`CONFIG_USB_ACM=y` を含めるようにしてください。他のデバイスは `USB_SERIAL` およびそのサブオプションを必要とするかもしれません。
## DFU ブートローダの不明なデバイス
Windows 上でキーボードを書き込む時に発生する問題は、ブートローダ用に間違ったドライバがインストールされているか、全くインストールされていないかによるものがほとんどです。
QMK インストールスクリプト (MSYS2 あるいは WSL 内の `qmk_firmware` ディレクトリから `./util/qmk_install.sh`) を再実行するか、QMK Toolbox の再インストールでこの問題が解決するかもしれません。別のやり方として、手動で [`qmk_driver_installer`](https://github.com/qmk/qmk_driver_installer) パッケージをダウンロードして実行することができます。
それでもうまく行かない場合は、Zadig をダウンロードして実行する必要があります。詳細な情報は [Zadig を使ったブートローダドライバのインストール](ja/driver_installation_zadig.md)を見てください。
## USB VID と PID
`config.h` を編集することで任意の ID を使うことができます。おそらく未使用の ID を使っても、他の製品と衝突するとても低い可能性があることを除いて、実際には問題はありません。
QMK のほとんどのキーボードは、vendor ID として、`0xFEED` を使います。他のキーボードを調べて、ユニークな ID を選択してください。
またこれも見てください。
https://github.com/tmk/tmk_keyboard/issues/150
ここで本当にユニークな VID:PID を買うことができます。個人的な使用にはこれは必要ないと思います。
- http://www.obdev.at/products/vusb/license.html
- http://www.mcselec.com/index.php?page=shop.product_details&flypage=shop.flypage&product_id=92&option=com_phpshop&Itemid=1
## AVR のための BOOTLOADER_SIZE
Teensy2.0++ ブートローダのサイズは 2048 バイトであることに注意してください。一部の Makefile には間違ったコメントがあります。
```
# Boot Section Size in *bytes*
# Teensy halfKay 512
# Teensy++ halfKay 2048
# Atmel DFU loader 4096 (TMK Alt Controller)
# LUFA bootloader 4096
# USBaspLoader 2048
OPT_DEFS += -DBOOTLOADER_SIZE=2048
```
## MacOS での `avr-gcc: internal compiler error: Abort trap: 6 (program cc1)`
これは brew での更新に関する問題で、avr-gcc が依存するシンボリックリンクを壊します。
解決法は全ての影響を受けたモジュールを削除し再インストールすることです。
```
brew rm avr-gcc
brew rm avr-gcc@8
brew rm dfu-programmer
brew rm dfu-util
brew rm gcc-arm-none-eabi
brew rm arm-gcc-bin@8
brew rm avrdude
brew install avr-gcc@8
brew install dfu-programmer
brew install dfu-util
brew install arm-gcc-bin@8
brew install avrdude
brew link --force avr-gcc@8
brew link --force arm-gcc-bin@8
```
### `avr-gcc` と LUFA
`avr-gcc` を更新し、LUFA に関連するエラーが表示された場合、例えば:
`lib/lufa/LUFA/Drivers/USB/Class/Device/AudioClassDevice.h:380:5: error: 'const' attribute on function returning 'void'`
今のところ、Homebrew で `avr-gcc` を 8 にロールバックする必要があります。
```
brew uninstall --force avr-gcc
brew install avr-gcc@8
brew link --force avr-gcc@8
```
### キーボードに書き込んだが何も起こらない、あるいはキーの押下が登録されない - ARM (rev6 planck、clueboard 60、hs60v2 など) でも同じ (Feb 2019)
ARM ベースのチップ上での EEPROM の動作によって、保存された設定が無効になる場合があります。これはデフォルトレイヤに影響し、まだ調査中の特定の環境下でキーボードが使えなくなる*しれません*。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)とキーボード情報を見てください)。

161
docs/ja/faq_debug.md Normal file
View File

@@ -0,0 +1,161 @@
# デバッグの FAQ
<!---
original document: 376419a4f:docs/faq_debug.md
git diff 376419a4f HEAD -- docs/faq_debug.md | cat
-->
このページは、キーボードのトラブルシューティングについての様々な一般的な質問を説明します。
# デバッグコンソール
## `hid_listen` がデバイスを認識できない
デバイスのデバッグコンソールの準備ができていない場合、以下のように表示されます:
```
Waiting for device:.........
```
デバイスが接続されると、*hid_listen* がデバイスを見つけ、以下のメッセージが表示されます:
```
Waiting for new device:.........................
Listening:
```
この 'Listening:' のメッセージが表示されない場合は、[Makefile] を `CONSOLE_ENABLE=yes` に設定してビルドしてみてください
Linux のような OS でデバイスにアクセスするには、権限が必要かもしれません。
- `sudo hid_listen` を試してください
## コンソールにメッセージが表示されない
以下を調べてください:
- *hid_listen* がデバイスを検出する。上記を見てください。
- **Magic**+d を使ってデバッグを有効にする。[マジックコマンド](https://github.com/tmk/tmk_keyboard#magic-commands)を見てください。
- `debug_enable=true` を設定します。[テストとデバッグ](ja/newbs_testing_debugging.md#debugging)を見てください
- デバッグ print の代わりに 'print' 関数を使ってみてください。**common/print.h** を見てください。
- コンソール機能を持つ他のデバイスを切断します。[Issue #97](https://github.com/tmk/tmk_keyboard/issues/97) を見てください。
## Linux あるいは UNIX のようなシステムはスーパーユーザ権限を必要とします
権限付きで *hid_listen* を実行するために 'sudo' を使ってください。
```
$ sudo hid_listen
```
または rules ディレクトリにファイルを置いて、TMK デバイスのための *udev rule* を追加します。ディレクトリは各システムで異なるかもしれません。
File: /etc/udev/rules.d/52-tmk-keyboard.rules (Ubuntu の場合)
```
# tmk keyboard products https://github.com/tmk/tmk_keyboard
SUBSYSTEMS=="usb", ATTRS{idVendor}=="feed", MODE:="0666"
```
***
# 雑多なこと
## 安全性の考慮
あなたはおそらくキーボードを「文鎮化」したくないでしょう。文鎮化するとファームウェアを書き換えられないようになります。リスクがあまりに高い(そしてそうでないかもしれない)ものの一部のリストを示します。
- キーボードマップに RESET が含まれない場合、DFU モードに入るには、PCB のリセットボタンを押す必要があります。底部のネジを外す必要があります。
- tmk_core / common にあるファイルを触るとキーボードが操作不能になるかもしれません。
- .hex ファイルが大きすぎると問題を引き起こします; `make dfu` コマンドはブロックを削除し、
サイズを検査し(おっと、間違った順序です!)、エラーを出力し、
キーボードへの書き込みに失敗し、DFU モードのままになります。
- この目的のためには、Planck の最大の .hex ファイルサイズは 7000h (10進数で28672)であることに注意してください。
```
Linking: .build/planck_rev4_cbbrowne.elf [OK]
Creating load file for Flash: .build/planck_rev4_cbbrowne.hex [OK]
Size after:
text data bss dec hex filename
0 22396 0 22396 577c planck_rev4_cbbrowne.hex
```
- 上のファイルのサイズは 22396/577ch で、28672/7000h より小さいです
- 適切な替わりの .hex ファイルがある限り、それをロードして再試行することができます
- あなたがキーボードの Makefile で指定したかもしれない一部のオプションは、余分なメモリを消費します; BOOTMAGIC_ENABLE、MOUSEKEY_ENABLE、EXTRAKEY_ENABLE、CONSOLE_ENABLE、API_SYSEX_ENABLE に注意してください
- DFU ツールは(オプションの余計なフルーツサラダを投げ込まない限り)ブートローダに書き込むことを許可しないので、
ここにはリスクはほとんどありません。
- EEPROM の書き込みサイクルは、約100000です。ファームウェアを繰り返し継続的に書き換えるべきではありません。それは最終的に EEPROM を焼き焦がします。
## NKRO が動作しません
最初に、**Makefile** 内でビルドオプション `NKRO_ENABLE` を使ってファームウェアをコンパイルする必要があります。
**NKRO** がまだ動作しない場合は、`Magic` **N** コマンド(デフォルトでは `LShift+RShift+N`)を試してみてください。**NKRO** モードと **6KRO** モード間を一時的に切り替えるためにこのコマンドを使うことができます。**NKRO** が機能しない状況、特に BIOS の場合は **6KRO** モードに切り替える必要があります。
ファームウェアを `BOOTMAGIC_ENABLE` でビルドした場合、`ブートマジック` **N** コマンドで切り替える必要があります (デフォルトでは `Space+N`)。この設定は EEPROM に格納され、電源を入れ直しても保持されます。
https://github.com/tmk/tmk_keyboard#boot-magic-configuration---virtual-dip-switch
## TrackPoint はリセット回路が必要です (PS/2 マウスサポート)
リセット回路が無いとハードウェアの不適切な初期化のために一貫性の無い結果になります。TPM754 の回路図を見てください。
- http://geekhack.org/index.php?topic=50176.msg1127447#msg1127447
- http://www.mikrocontroller.net/attachment/52583/tpm754.pdf
## 16 を超えるマトリックの列を読み込めない
列が 16 を超える場合、[matrix.h] の `read_cols()` 内の `1<<16` の代わりに `1UL<<16` を使ってください。
C では、AVR の場合 `1` は [16 bit] である [int] 型の1を意味し、15 を超えて左にシフトすることはできません。`1<<16` すると予期しないゼロが発生します。`1UL` として [unsigned long] 型を使う必要があります。
http://deskthority.net/workshop-f7/rebuilding-and-redesigning-a-classic-thinkpad-keyboard-t6181-60.html#p146279
## 特別なエクストラキーが動作しない (システム、オーディオコントロールキー)
QMK でそれらを使うには、`rules.mk` 内で `EXTRAKEY_ENABLE` を定義する必要があります。
```
EXTRAKEY_ENABLE = yes # オーディオ制御とシステム制御
```
## スリープから復帰しない
Windows では、**デバイスマネージャ**の**電源の管理**タブ内の `このデバイスで、コンピュータのスタンバイ状態を解除できるようにする` 設定を調べてください。また BIOS 設定も調べてください。
スリープ中に任意のキーを押すとホストが起動するはずです。
## Arduino を使っていますか?
**Arduino のピンの命名は実際のチップと異なることに注意してください。** 例えば、Arduino のピン `D0``PD0` ではありません。回路図を自身で確認してください。
- http://arduino.cc/en/uploads/Main/arduino-leonardo-schematic_3b.pdf
- http://arduino.cc/en/uploads/Main/arduino-micro-schematic.pdf
Arduino の Leonardo と micro には **ATMega32U4** が載っていて、TMK 用に使うことができますが、Arduino のブートローダが問題になることがあります。
## JTAG を有効にする
デフォルトでは、キーボードが起動するとすぐに JTAG デバッグインタフェースが無効になります。JTAG 対応 MCU は `JTAGEN` ヒューズが設定された状態で出荷されており、キーボードがスイッチマトリックス、LED などに使用している可能性のある MCU の特定のピンを乗っ取ります。
JTAG を有効にしたままにしたい場合は、単に以下のものを `config.h` に追加します:
```c
#define NO_JTAG_DISABLE
```
## USB 3 の互換性
USB 3 ポートで問題がある人がいると聞きました。USB 2 ポートを試してください。
## Mac の互換性
### OS X 10.11 と Hub
https://geekhack.org/index.php?topic=14290.msg1884034#msg1884034
## リジューム (スリープとウェークアップ)/電源サイクルの問題
一部の人がキーボードが BIOS で動作しなくなった、またはリジューム(電源サイクル)の後で動作しなくなったと報告しました。
今のところ、この問題の根本は明確ではないですが、幾つかのビルドオプションが関係しているようです。Makefileで、`CONSOLE_ENABLE``NKRO_ENABLE``SLEEP_LED_ENABLE` あるいは他のオプションを無効にしてみてください。
https://github.com/tmk/tmk_keyboard/issues/266
https://geekhack.org/index.php?topic=41989.msg1967778#msg1967778
## FLIP が動作しない
### `AtLibUsbDfu.dll` が見つかりません
デバイスマネージャから現在のドライバを削除し、FLIP が提供するものを再インストールします。
http://imgur.com/a/bnwzy

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

@@ -0,0 +1,20 @@
# よくある質問
<!---
original document: d598f01cb:docs/faq_general.md
git diff d598f01cb HEAD -- docs/faq_general.md | cat
-->
## QMK とは何か?
Quantum Mechanical Keyboard の略である [QMK](https://github.com/qmk) は、カスタムキーボードのためのツールをビルドしている人々のグループです。[TMK](https://github.com/tmk/tmk_keyboard) の大幅に修正されたフォークである [QMK ファームウェア](https://github.com/qmk/qmk_firmware)から始まりました。
## QMK と TMK の違いは何か?
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)でこれらのキーコードの完全なリストを見ることができます。
プロジェクトとコミュニティの管理の観点から、TMK は公式にサポートされている全てのキーボードを自分で管理しており、コミュニティのサポートも少し受けています。他のキーボード用に別個のコミュニティが維持するフォークが存在するか、作成できます。デフォルトでは少数のキーマップのみが提供されるため、ユーザは一般的にお互いにキーマップを共有しません。QMK は集中管理されたリポジトリを介して、キーボードとキーマップの両方を共有することを奨励しており、品質基準に準拠する全てのプルリクエストを受け付けます。これらはほとんどコミュニティで管理されますが、必要な場合は QMK チームも支援します。
どちらのアプローチもメリットとデメリットがあり、理に適う場合は TMK と QMK の間でコードは自由にやり取りされます。

149
docs/ja/faq_keymap.md Normal file
View File

@@ -0,0 +1,149 @@
# キーマップの FAQ
<!---
original document: 376419a4f:docs/faq_keymap.md
git diff 376419a4f HEAD -- docs/faq_keymap.md | cat
-->
このページは人々がキーマップについてしばしば持つ疑問について説明します。まだ読んだことが無い場合には、[キーマップの概要](ja/keymap.md)を最初に読むべきです。
## どのキーコードを使えますか?
あなたが利用可能なキーコードのインデックスについては、[キーコード](ja/keycodes.md)を見てください。より広範なドキュメントがある場合は、そこからリンクしてあります。
キーコードは実際には [common/keycode.h](https://github.com/qmk/qmk_firmware/blob/master/tmk_core/common/keycode.h) で定義されています。
## デフォルトのキーコードとは何か?
世界中で使用されている ANSI、ISO および JIS の3つの標準キーボードがあります。北米では主に ANSI が使われ、ヨーロッパおよびアフリカでは主に ISO が使われ、日本では JIS が使われます。言及されていない地域では、ANSI あるいは ISO が使われています。これらのレイアウトに対応するキーコードは以下の通りです:
<!-- Source for this image: http://www.keyboard-layout-editor.com/#/gists/bf431647d1001cff5eff20ae55621e9a -->
![キーボードのレイアウトイメージ](https://i.imgur.com/5wsh5wM.png)
## 一部のキーが入れ替わっているか、または動作しない
QMK には2つの機能、ブートマジックとコマンドがあり、これによりその場でキーボードの動作を変更することができます。これには Ctrl/Caps の交換、Gui の無効化、Alt/GUI の交換、Backspace/Backslash の交換、全てのキーの無効化およびその他の動作の変更が含まれますが、これらに限定されません。
迅速な解決策として、キーボードを接続している時に `Space`+`Backspace` を押してみてください。これはキーボードに保存されている設定をリセットし、これらのキーを通常の操作に戻します。うまく行かない場合は、以下を見てください:
* [ブートマジック](ja/feature_bootmagic.md)
* [コマンド](ja/feature_command.md)
## メニューキーが動作しない
ほとんどの最近のキーボードにある、`KC_RGUI``KC_RCTL` の間にあるキーは、実際には `KC_APP` と呼ばれます。これは、そのキーが発明された時に、関連する標準にすでに `MENU` という名前のキーが存在していたため、MS はそれを `APP` キーと呼ぶことを選択したためです。
## `KC_SYSREQ` が動作しません
`KC_SYSREQ` の代わりに、Print Screen(`KC_PSCREEN` あるいは `KC_PSCR`) のキーコードを使ってください。'Alt + Print Screen' のキーの組み合わせは、'システムリクエスト' と認識されます。
[issue #168](https://github.com/tmk/tmk_keyboard/issues/168) と以下を見てください
* http://en.wikipedia.org/wiki/Magic_SysRq_key
* http://en.wikipedia.org/wiki/System_request
## 電源キーが動作しません
やや紛らわしいことに、QMK には2つの "Power" キーコードがあります: キーボード/キーパッド HID usage page では `KC_POWER`、Consumer page では `KC_SYSTEM_POWER` (あるいは `KC_PWR`)。
前者は macOS でのみ認識されますが、後者 `KC_SLEP` および `KC_WAKE` は3つの主要なオペレーティングシステム全てでサポートされるため、これらを使うことをお勧めします。Windows ではこれらのキーはすぐに機能しますが、macOS ではそれらはダイアログが表示されるまで押し続ける必要があります。
## ワンショットモディファイア
私の個人的な 'the' の問題を解決します。'The' ではなく 'the' あるいは 'THe' を間違って入力することがありました。ワンショットシフトはこれを軽減します。
https://github.com/tmk/tmk_keyboard/issues/67
## モディファイヤ/レイヤスタック
修飾キーあるいはレイヤは、レイヤの切り替えが適切に設定されていない場合、スタックするかもしれません。
修飾キーおよびレイヤ切り替えの場合、リリースイベント時に修飾キーの登録を解除する、もしくは前のレイヤに戻るために、目的のレイヤの同じ位置に `KC_TRANS` を配置する必要があります。
* https://github.com/tmk/tmk_core/blob/master/doc/keymap.md#31-momentary-switching
* http://geekhack.org/index.php?topic=57008.msg1492604#msg1492604
* https://github.com/tmk/tmk_keyboard/issues/248
## メカニカルロックスイッチのサポート
この機能は [Alps](http://deskthority.net/wiki/Alps_SKCL_Lock) のような*メカニカルロックスイッチ*用です。以下を `config.h` に追加することで有効にすることができます:
```
#define LOCKING_SUPPORT_ENABLE
#define LOCKING_RESYNC_ENABLE
```
この機能を有効にした後で、キーマップでキーコード `KC_LCAP``KC_LNUM` および `KC_LSCR` を使います。
古いビンテージメカニカルキーボードにはロックスイッチが付いている場合がありますが、最新のものにはありません。***ほとんどの場合この機能は必要なく、単にキーコード `KC_CAPS``KC_NLCK` および `KC_SLCK`*** を使います。
## セディーユ 'Ç' のような ASCII 以外の特別文字の入力
[ユニコード](ja/feature_unicode.md) 機能を見てください。
## macOS での `Fn` キー
ほとんどの Fn キーと異なり、Apple のキーボードの Fn キーには実際には独自のキーコードのようなものがあります。基本的な 6KRO HID レポートの6番目のキーコードの代わりになります -- つまり、Apple キーボードは実際には 5KRO のみです。
QMK にこのキーを送信させることは技術的に可能です。ただし、そうするには Fn キーの状態を追加するためにレポート形式の修正を必要とします。
さらに悪いことに、キーボードの VID と PID が実際の Apple のキーボードのものと一致しない限り、認識されません。公式の QMK がこの機能をサポートすることで法的な問題が起きるため、サポートされることはないでしょう。
詳細については、[この issue](https://github.com/qmk/qmk_firmware/issues/2179) を見てください。
## Mac OSX でサポートされるキーは?
このソースコードから、どのキーコードが OSX でサポートされるかを知ることができます。
`usb_2_adb_keymap` 配列は、キーボード/キーパッドページの Page usages を ADB スキャンコード(OSX 内部キーコード)にマップします。
https://opensource.apple.com/source/IOHIDFamily/IOHIDFamily-606.1.7/IOHIDFamily/Cosmo_USB2ADB.c
`IOHIDConsumer::dispatchConsumerEvent` は Consumer page usages を処理します。
https://opensource.apple.com/source/IOHIDFamily/IOHIDFamily-606.1.7/IOHIDFamily/IOHIDConsumer.cpp
## Mac OSX での JIS キー
`無変換(Muhenkan)`, `変換(Henkan)`, `ひらがな(hiragana)` のような日本語 JIS キーボード固有のキーは OSX では認識されません。**Seil** を使ってこれらのキーを使うことができます。以下のオプションを試してください。
* PC キーボードで NFER キーを有効にする
* PC キーボードで XFER キーを有効にする
* PC キーボードで KATAKANA キーを有効にする
https://pqrs.org/osx/karabiner/seil.html
## RN-42 Bluetooth が Karabiner で動作しない
Karabiner - Mac OSX 上のキーマッピングツール - は、デフォルトでは RN-42 モジュールからの入力を無視します。Karabiner をキーボードで動作させるにはこのオプションを有効にする必要があります。
https://github.com/tekezo/Karabiner/issues/403#issuecomment-102559237
この問題の詳細についてはこれらを見てください。
https://github.com/tmk/tmk_keyboard/issues/213
https://github.com/tekezo/Karabiner/issues/403
## 単一のキーでの Esc と<code>&#96;</code>
[Grave Escape](feature_grave_esc.md) 機能を見てください。
## Mac OSX での Eject
`KC_EJCT` キーコードは OSX で動作します。https://github.com/tmk/tmk_keyboard/issues/250
Windows 10 はコードを無視し、Linux/Xorg は認識しますが、デフォルトではマッピングがありません。
実際の Apple キーボードにある Eject キーコードは実際には分かりません。HHKB は Mac モードでは Eject キー (`Fn+f`) に `F20` を使いますが、これはおそらく Apple の Eject キーコードと同じではありません。
## `action_util.c` の `weak_mods` と `real_mods` は何か
___改善されるべきです___
real_mods は実際の物理的な修飾キーの状態を保持することを目的にしていますが、weak_mods は実際の修飾キーの状態に影響しない仮想あるいは一時的なモディファイアの状態を保持します。
物理的な左シフトキーを押しながら ACTION_MODS_KEY(LSHIFT, KC_A) を入力するとします
weak_mods では、
* (1) 左シフトキーを押し続ける: real_mods |= MOD_BIT(LSHIFT)
* (2) ACTION_MODS_KEY(LSHIFT, KC_A) を押す: weak_mods |= MOD_BIT(LSHIFT)
* (3) ACTION_MODS_KEY(LSHIFT, KC_A) を放す: weak_mods &= ~MOD_BIT(LSHIFT)
real_mods はモディファイアの状態を維持します。
weak mods 無しでは、
* (1) 左シフトキーを押し続ける: real_mods |= MOD_BIT(LSHIFT)
* (2) ACTION_MODS_KEY(LSHIFT, KC_A) を押す: real_mods |= MOD_BIT(LSHIFT)
* (3) ACTION_MODS_KEY(LSHIFT, KC_A) を放す: real_mods &= ~MOD_BIT(LSHIFT)
ここで、real_mods は 'physical left shift' '物理的な左シフト' の状態を見失います。
キーボードレポートが送信される時、weak_mods は real_mods と論理和がとられます。
https://github.com/tmk/tmk_core/blob/master/common/action_util.c#L57

247
docs/ja/flashing.md Normal file
View File

@@ -0,0 +1,247 @@
# 書き込みの手順とブートローダ情報
<!---
original document: 7494490d6:docs/flashing.md
git diff 7494490d6 HEAD -- docs/flashing.md | cat
-->
キーボードが使用するブートローダにはかなり多くの種類があり、ほぼ全てが異なる書き込みの方法を使います。幸いなことに、[QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) のようなプロジェクトは、あまり深く考える必要無しに様々なタイプと互換性を持つことを目指していますが、この文章では様々なタイプのブートローダとそれらを書き込むために利用可能な方法について説明します。
`rules.mk``BOOTLOADER` 変数で選択されたブートローダがある場合、QMK は .hex ファイルがデバイスに書き込むのに適切なサイズかどうかを自動的に計算し、合計サイズをバイト単位で(最大値とともに)出力します。この処理を手動で実行するには、`check-size` を付けてコンパイルします。例えば、`make planck/rev4:default:check-size`
## DFU
Atmel の DFU ブートローダはデフォルトで全ての atmega32u4 チップに搭載されており、PCB (旧 OLKB キーボード、Clueboard) に独自の IC を持つ多くのキーボードで使われています。一部のキーボードは、LUFA の DFU ブートローダ(または QMK のフォーク) (新しい OLKB キーボード)を使う場合もあり、そのハードウェアに固有の追加機能が追加されます。
DFU ブートローダとの互換性を確保するために、以下のブロックが `rules.mk` にあることを確認してください(オプションとして代わりに `lufa-dfu``qmk-dfu` が使えます):
```make
# Bootloader selection
# Teensy halfkay
# Pro Micro caterina
# Atmel DFU atmel-dfu
# LUFA DFU lufa-dfu
# QMK DFU qmk-dfu
# ATmega32A bootloadHID
# ATmega328P USBasp
BOOTLOADER = atmel-dfu
```
互換性のあるフラッシャ:
* [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (推奨の GUI)
* QMK の [dfu-programmer](https://github.com/dfu-programmer/dfu-programmer) / `:dfu` (推奨のコマンドライン)
* [Atmel の Flip](http://www.microchip.com/developmenttools/productdetails.aspx?partno=flip) (非推奨)
書き込み手順:
1. `RESET` キーコードを押すか、RESET ボタンをタップします(または RST を GND にショートします)。
2. OS がデバイスを検知するのを待ちます。
3. メモリを消去します(自動的に実行されるかもしれません)
4. .hex ファイルを書き込みます
5. デバイスをアプリケーションモードにリセットします(自動的に実行されるかもしれません)
あるいは:
make <keyboard>:<keymap>:dfu
### QMK DFU
QMK には LUFA DFU ブートローダのフォークがあり、ブートローダを終了してアプリケーションに戻る時に単純なマトリックススキャンを行うことができます。また、何かが起きた時に、LED を点滅したり、スピーカーでカチカチ音をたてたりします。これらの機能を有効にするには、`config.h` で以下のブロックを有効にします (ブートローダを終了するキーは、ここで定義された INPUT と OUTPUT に接続する必要があります):
#define QMK_ESC_OUTPUT F1 // 通常 COL
#define QMK_ESC_INPUT D5 // 通常 ROW
#define QMK_LED E6
#define QMK_SPEAKER C6
製造元と製品名は `config.h` から自動的に取得され、製品に「Bootloader」が追加されます。
このブートローダを生成するには、`bootloader` ターゲット、例えば `make planck/rev4:default:bootloader` を使います。
実稼働対応の .hex ファイル(アプリケーションおよびブートローダを含む)を生成するには、`production` ターゲット、例えば `make planck/rev4:default:production` を使います。
### DFU コマンド
ファームウェアを DFU デバイスに書き込むために使用できる DFU コマンドがいくつかあります。
* `:dfu` - これが通常のオプションで、DFU デバイスが使用可能になるまで待機したのちファームウェアを書き込みます。5秒ごとに、DFU デバイスが存在するかチェックしています。
* `:dfu-ee` - 通常の hex ファイルの代わりに `eep` ファイルを書き込みます。これを使用するのはまれです。
* `:dfu-split-left` - デフォルトオプション (`:dfu`) と同様に、通常のファームウェアが書き込まれます。ただし、分割キーボードの「左側の」 EEPROM ファイルも書き込まれます。_これは、Elite C ベースの分割キーボードに最適です。_
* `:dfu-split-right` - デフォルトオプション (`:dfu`) と同様に、通常のファームウェアが書き込まれます。ただし、分割キーボードの「右側の」 EEPROM ファイルも書き込まれます。_これは、Elite C ベースの分割キーボードに最適です。_
## Caterina
Arduino ボードとそのクローンは [Caterina ブートローダ](https://github.com/arduino/ArduinoCore-avr/tree/master/bootloaders/caterina) (Pro Micro またはそのクローンで構築されたキーボード)を使用し、avr109 プロトコルを使って仮想シリアルを介して通信します。[A-Star](https://www.pololu.com/docs/0J61/9) のようなブートローダは Caterina に基づいています。
Caterina ブートローダとの互換性を確保するために、以下のブロックが `rules.mk` にあることを確認してください:
```make
# Bootloader selection
# Teensy halfkay
# Pro Micro caterina
# Atmel DFU atmel-dfu
# LUFA DFU lufa-dfu
# QMK DFU qmk-dfu
# ATmega32A bootloadHID
# ATmega328P USBasp
BOOTLOADER = caterina
```
互換性のあるフラッシャ:
* [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (推奨の GUI)
* avr109 を使った [avrdude](http://www.nongnu.org/avrdude/) / `:avrdude` (推奨のコマンドライン)
* [AVRDUDESS](https://github.com/zkemble/AVRDUDESS)
書き込み手順:
1. `RESET` キーコードを押すか、RST をすばやく GND にショートします (入力後7秒で書き込みます)
2. OS がデバイスを検知するのを待ちます。
3. .hex ファイルを書き込みます
4. デバイスが自動的にリセットされるのを待ちます
あるいは
make <keyboard>:<keymap>:avrdude
#### Caterina コマンド
ファームウェアを DFU デバイスに書き込むために使用できる DFU コマンドがいくつかあります。
* `:avrdude` - これが通常のオプションで、Caterina デバイスが(新しい COM ポートを検出して)使用可能になるまで待機し、ファームウェアを書き込みます。
* `:avrdude-loop` - これは `:avrdude` と同じコマンドを実行します。ただし書き込みが終了すると再び Caterina デバイスの書き込み待ちに戻ります。これは何台ものデバイスへ書き込むのに便利です。_Ctrl+C を押して、手動でこの繰り返しを終了させる必要があります。_
* `:avrdude-split-left` - デフォルトオプション (`:avrdude`) と同様に通常のファームウェアが書き込まれます。ただし、分割キーボードの「左側の」 EEPROM ファイルも書き込まれます。_これは、Pro Micro ベースの分割キーボードに最適です。_
* `:avrdude-split-right` - デフォルトオプション (`:avrdude`) と同様に通常のファームウェアが書き込まれます。ただし、分割キーボードの「右側の」 EEPROM ファイルも書き込まれます。_これは、Pro Micro ベースの分割キーボードに最適です。_
## Halfkay
Halfkay は PJRC によって開発された超スリムなプロトコルであり、HID を使用し、全ての Teensys (つまり 2.0)に搭載されています。
Halfkay ブートローダとの互換性を確保するために、以下のブロックが `rules.mk` にあることを確認してください:
```make
# Bootloader selection
# Teensy halfkay
# Pro Micro caterina
# Atmel DFU atmel-dfu
# LUFA DFU lufa-dfu
# QMK DFU qmk-dfu
# ATmega32A bootloadHID
# ATmega328P USBasp
BOOTLOADER = halfkay
```
互換性のあるフラッシャ:
* [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (推奨の GUI)
* [Teensy ローダー](https://www.pjrc.com/teensy/loader.html)
* [Teensy ローダーコマンドライン](https://www.pjrc.com/teensy/loader_cli.html) (推奨のコマンドライン)
書き込み手順:
1. `RESET` キーコードを押すか、RST をすばやく GND にショートします (入力後7秒で書き込みます)
2. OS がデバイスを検知するのを待ちます。
3. .hex ファイルを書き込みます
4. デバイスをアプリケーションモードにリセットします(自動的に実行されるかもしれません)
## USBasploader
USBasploader は matrixstorm によって開発されたブートローダです。V-USB を実行する ATmega328P のような非 USB AVR チップで使われます。
USBasploader ブートローダとの互換性を確保するために、以下のブロックが `rules.mk` にあることを確認してください:
```make
# Bootloader selection
# Teensy halfkay
# Pro Micro caterina
# Atmel DFU atmel-dfu
# LUFA DFU lufa-dfu
# QMK DFU qmk-dfu
# ATmega32A bootloadHID
# ATmega328P USBasp
BOOTLOADER = USBasp
```
互換性のあるフラッシャ:
* [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (推奨の GUI)
* `usbasp` プログラマを使った [avrdude](http://www.nongnu.org/avrdude/)
* [AVRDUDESS](https://github.com/zkemble/AVRDUDESS)
書き込み手順:
1. `RESET` キーコードを押すか、RST を GND にすばやくショートしながら、ブートピンを GND にショートしたままにします。
2. OS がデバイスを検知するのを待ちます。
3. .hex ファイルを書き込みます
4. デバイスをアプリケーションモードにリセットします(自動的に実行されるかもしれません)
## BootloadHID
BootloadHID は AVR マイクロコントローラ用の USB ブートローダです。アップローダーツールは Windows でカーネルレベルのドライバを必要としないため、DLL をインストールせずに実行することができます。
bootloadHID ブートローダとの互換性を確保するために、以下のブロックが `rules.mk` にあることを確認してください:
```make
# Bootloader selection
# Teensy halfkay
# Pro Micro caterina
# Atmel DFU atmel-dfu
# LUFA DFU lufa-dfu
# QMK DFU qmk-dfu
# ATmega32A bootloadHID
# ATmega328P USBasp
BOOTLOADER = bootloadHID
```
互換性のあるフラッシャ:
* [HIDBootFlash](http://vusb.wikidot.com/project:hidbootflash) (推奨の Windows GUI)
* [bootloadhid コマンドライン](https://www.obdev.at/products/vusb/bootloadhid.html) / QMK の `:BootloadHID` (推奨のコマンドライン)
書き込み手順:
1. 以下のいずれかの方法を使ってブートローダに入ります:
* `RESET` キーコードをタップします (全てのデバイスでは動作しないかもしれません)
* キーボードを接続しながらソルトキーを押し続けます (通常はキーボードの readme に書かれています)
2. OS がデバイスを検知するのを待ちます。
3. .hex ファイルを書き込みます
4. デバイスをアプリケーションモードにリセットします(自動的に実行されるかもしれません)
あるいは:
make <keyboard>:<keymap>:bootloadHID
## STM32
全ての STM32 チップには、変更も削除もできない工場出荷時のブートローダがプリロードされています。一部の STM32 チップには USB プログラミングが付属していないブートローダがありますが(例えば STM32F103)、プロセスは同じです。
現時点では、STM32 の `rules.mk` には、`BOOTLOADER` 変数は不要です。
互換性のあるフラッシャ:
* [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (推奨の GUI)
* [dfu-util](https://github.com/Stefan-Schmidt/dfu-util) / `:dfu-util` (推奨のコマンドライン)
書き込み手順:
1. 以下のいずれかの方法を使ってブートローダに入ります:
* `RESET` キーコードをタップします (STM32F042 デバイスでは動作しないかもしれません)
* リセット回路が存在する場合、RESET ボタンをタップします
* それ以外の場合は、(BOOT0 ボタンあるいはブリッジ経由で)BOOT0 を VCC にブリッジし、(REEST ボタンあるいはブリッジ経由で)RESET を GND にショートし、BOOT0 ブリッジを放す必要があります。
2. OS がデバイスを検知するのを待ちます。
3. .bin ファイルを書き込みます
* DFU 署名に関する警告が表示されます; 無視してください
4. デバイスをアプリケーションモードにリセットします(自動的に実行されるかもしれません)
* コマンドラインからビルドする場合(例えば、`make planck/rev6:default:dfu-util`)、`rules.mk` の中で `:leave``DFU_ARGS` 変数に渡されるようにしてください (例えば、`DFU_ARGS = -d 0483:df11 -a 0 -s 0x08000000:leave`)。そうすれば、書き込みの後でデバイスがリセットされます
### STM32 コマンド
ファームウェアを STM32 デバイスに書き込むために使用できる DFU コマンドがいくつかあります。
* `:dfu-util` - STM32 デバイスに書き込むためのデフォルトコマンドで、STM32 ブートローダデバイスが見つかるまで待機します。
* `:dfu-util-split-left` - デフォルトのオプション (`:dfu-util`) と同様に、通常のファームウェアが書き込まれます。ただし、分割キーボードの「左側の」 EEPROM の設定も行われます。
* `:dfu-util-split-right` - デフォルトのオプション (`:dfu-util`) と同様に、通常のファームウェアが書き込まれます。ただし、分割キーボードの「右側の」 EEPROM の設定も行われます。
* `:st-link-cli` - dfu-util ではなく、ST-LINK の CLI ユーティリティを介してファームウェアを書き込めます。

View File

@@ -0,0 +1,146 @@
# ビルドツールのインストール
<!---
original document: 5a02cc00a:docs/getting_started_build_tools.md
git diff 5a02cc00a HEAD -- docs/getting_started_build_tools.md | cat
-->
このページは QMK のためのビルド環境のセットアップを説明します。これらの手順は (atmega32u4 のような) AVR プロセッサを対象としてします。
<!-- FIXME: We should have ARM instructions somewhere. -->
**注意:** ここが初めての場合は、[QMK 初心者ガイド](ja/newbs.md)ページを調べてください。
続ける前に、`make git-submodule` を実行して、サブモジュール(サードパーティライブラリ)が最新であることを再確認してください。
## Linux
常に最新の状態を保つためには、単に `sudo util/qmk_install.sh` を実行してください。全ての必要な依存関係が常にインストールされるはずです。**これは `apt-get upgrade` を実行します。**
手動でインストールすることもできますが、このドキュメントは常に全ての要件を満たしているとは限りません。
現在の要件は以下の通りですが、何をしようとしているかによっては全てが必要とは限りません。また、一部のシステムではパッケージとして全ての依存関係が利用できるとは限らず、あるいは名前が異なる場合があるかもしれません。
```
build-essential
gcc
unzip
wget
zip
gcc-avr
binutils-avr
avr-libc
dfu-programmer
dfu-util
gcc-arm-none-eabi
binutils-arm-none-eabi
libnewlib-arm-none-eabi
git
```
好みのパッケージマネージャを使って依存関係をインストールします。
Debian / Ubuntu の例:
sudo apt-get update
sudo apt-get install gcc unzip wget zip gcc-avr binutils-avr avr-libc dfu-programmer dfu-util gcc-arm-none-eabi binutils-arm-none-eabi libnewlib-arm-none-eabi
Fedora / Red Hat の例:
sudo dnf install gcc unzip wget zip dfu-util dfu-programmer avr-gcc avr-libc binutils-avr32-linux-gnu arm-none-eabi-gcc-cs arm-none-eabi-binutils-cs arm-none-eabi-newlib
Arch / Manjaro の例:
pacman -S base-devel gcc unzip wget zip avr-gcc avr-binutils avr-libc dfu-util arm-none-eabi-gcc arm-none-eabi-binutils arm-none-eabi-newlib git dfu-programmer dfu-util
## Nix
[NixOS](https://nixos.org/) の場合、あるいは Linux または MacOS に Nix をインストールした場合は、ビルド環境を取得するためにリポジトリのルートで `nix-shell` を実行します。
デフォルトでは、これは AVR と ARM の両方のためのコンパイラをダウンロードします。両方が必要ではない場合は、`avr` あるいは `arm` 引数を無効にします。例えば:
nix-shell --arg arm false
## macOS
[Homebrew](http://brew.sh/) を使っている場合は、以下のコマンドを使うことができます:
brew tap osx-cross/avr
brew tap osx-cross/arm
brew update
brew install avr-gcc@8
brew link --force avr-gcc@8
brew install dfu-programmer
brew install dfu-util
brew install arm-gcc-bin@8
brew link --force arm-gcc-bin@8
brew install avrdude
これはお勧めの方法です。homebrew が無い場合は、[インストールしてください!](http://brew.sh/) コマンドラインで作業する人にとってとても価値があります。`avr-gcc@8` の homebrew でのインストール中、`make``make install` 部分は20分以上かかり、CPU使用率が高くなることに注意してください。
## msys2 を使った Windows (推奨) :id=windows-with-msys2-recommended
Windows Vista 以降のバージョン(7および10でテスト済み)について、使用するのに最適な環境は [msys2](http://www.msys2.org) です。
* msys2 をダウンロードし、こちらの指示に従ってインストールしてください: http://www.msys2.org
* ``MSYS2 MingGW 64-bit`` のショートカットを開きます
* QMK リポジトリに移動します。例えば、c ドライブのルートにある場合:
* `$ cd /c/qmk_firmware`
* `util/qmk_install.sh` を実行し、指示に従います
## Windows 10 (非推奨)
Windows 10 の古い手順です。[上記の概要のように MSYS2](#windows-with-msys2-recommended) を使うことをお勧めします。
### Creators Update
Creators Update 以降の Windows 10 の場合、ファームウェアを直接ビルドして書き込むことができます。Creators Update の前は、ビルドだけが可能でした。まだそうではないか、不明な場合は、[これらの指示](https://support.microsoft.com/en-us/instantanswers/d4efb316-79f0-1aa1-9ef3-dcada78f3fa0/get-the-windows-10-creators-update)に従ってください。
### Linux 用の Windows Subsystem
Creators Update に加えて、Linux 用の Windows 10 Subystem が必要ですので、[これらの指示](http://www.howtogeek.com/249966/how-to-install-and-use-the-linux-bash-shell-on-windows-10/)に従ってインストールしてください。Anniversary update からの Linux 用の Windows 10 Subsystem が既にある場合、一部のキーボードは 14.04LTS に含まれるツールチェーンを使ってコンパイルしないため、16.04LTS に[アップグレード](https://betanews.com/2017/04/14/upgrade-windows-subsystem-for-linux/)することをお勧めします。`sudo do-release-upgrade` メソッドを選択した場合は、自分が何をしているかを知る必要があることに注意してください。
### Git
すでに Windows ファイルシステムにリポジトリをクローンしている場合は、この章を無視することができます。
WSL Git では**なく**、Windows 用の通常の Git を使って Windows ファイルシステムにリポジトリをクローンする必要があります。以前に Git をインストールしたことが無ければ、[ダウンロード](https://git-scm.com/download/win)し、インストールしてください。次に[セットアップします](https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup)。特に貢献する予定がある場合は、eメールとユーザ名をセットアップすることが重要です。
Git がインストールされたら、Git Bash コマンドを開き、QMK をクローンしたい場所へディレクトリを変更します: スラッシュを使う必要があり、c ドライブは `/c/path/to/where/you/want/to/go` のようにアクセスされることに注意してください。次に、`git clone --recurse-submodules https://github.com/qmk/qmk_firmware` を実行します。これは現在のフォルダのサブディレクトリとして新しいフォルダ `qmk_firmware` を作成します。
### ツールチェーンのセットアップ
ツールチェーンのセットアップは Linux 用の Windows サブシステムを介して行われ、手順は完全に自動化されています。全てを手動で行いたい場合は、スクリプト以外の手順はありませんが、常に issue を開いて詳細情報を求めることができます。
1. スタートメニューから "Bash On Ubuntu On Windows" を開いてください。
2. クローンした `qmk_firmware` ディレクトリに移動します。パスは WSL 内で `/mnt/` から始まることに注意してください。つまり、例えば `cd /mnt/c/path/to/qmk_firmware` と書く必要があります。
3. `util/wsl_install.sh` を実行し、画面上の手順に従います。
4. Bash コマンドウィンドウを閉じ、再び開きます。
5. ファームウェアをコンパイルし書き込む準備ができました!
### 心に留めておくべき幾つかの重要なこと
* 全ての最新の更新を取得するために `util/wsl_install.sh` を再実行することができます。
* WSL は外部で実行可能ファイルを実行できないため、QMK リポジトリは Windows ファイルシステム上にある必要があります。
* WSL Git は Windows の Git と互換性が**無い**ため、全ての Git 操作には、Windows Git Bash あるいは windows Git GUI を使ってください。
* WSL 内あるいは普通に Windows を使ってファイルを編集できますが、makefile あるいはシェルスクリプトを編集する場合は、行末をUnix形式にしてファイルを保存するエディタを使うようにしてください。そうでなければコンパイルは機能しないかもしれません。
## Docker
これが少し複雑な場合は、Docker があなたが必要とするすぐに使える解決法かもしれません。[Docker CE](https://docs.docker.com/install/#supported-platforms) をインストールした後で、キーボード/キーマップをビルドするために `qmk_firmware` ディレクトリから以下のコマンドを実行します:
```bash
util/docker_build.sh keyboard:keymap
# 例えば: util/docker_build.sh ergodox_ez:steno
```
これは目的のキーボード/キーマップをコンパイルし、結果として書き込み用に `.hex` あるいは `.bin` ファイルを QMK ディレクトリの中に残します。`:keymap` が省略された場合は全てのキーマップが使われます。パラメータの形式は、`make` を使ってビルドする時と同じであることに注意してください。
スクリプトをパラメータ無しで開始することもできます。この場合、1つずつビルドパラメータを入力するように求められます。これが使いやすいと思うかもしれません:
```bash
util/docker_build.sh
# パラメータを入力として読み込みます (空白にすると全てのキーボード/キーマップ)
```
`target` を指定することで Docker から直接キーボードをビルドし_かつ_書き込むためのサポートもあります。
```bash
util/docker_build.sh keyboard:keymap:target
# 例えば: util/docker_build.sh planck/rev6:default:flash
```
Linux を使っている場合は、これはそのままで動作するはずです。Windows と macOS では、実行するのに [Docker Machine](http://gw.tnode.com/docker/docker-machine-with-usb-support-on-windows-macos/) が必要です。これはセットアップが面倒なので、お勧めではありません: 代わりに [QMK Toolbox](https://github.com/qmk/qmk_toolbox) を使ってください。
!> Docker for Windows は[Hyper-V](https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v) を有効にする必要があります。これは、Windows 7、Windows 8 および **Windows 10 Home** のような Hyper-V を搭載していない Windows のバージョンでは機能しないことを意味します。
## Vagrant
ファームウェアをビルドするのに問題がある場合は、Vagrant と呼ばれるツールを試してみることができます。それは、ファームウェアをビルドする準備ができた既知の構成を搭載した仮想コンピュータをセットアップします。OLKB はこの仮想コンピュータのためのファイルをホストしません。Vagrant をセットアップする方法の詳細は、[vagrant ガイド](ja/getting_started_vagrant.md)にあります。

View File

@@ -1,8 +1,8 @@
# 助けを得る
<!---
original document: d598f01cb:getting_started_getting_help.md
git diff d598f01cb HEAD getting_started_getting_help.md | cat
original document: d598f01cb:docs/getting_started_getting_help.md
git diff d598f01cb HEAD -- docs/getting_started_getting_help.md | cat
-->
QMK に関して助けを得るための多くのリソースがあります。

View File

@@ -1,8 +1,8 @@
# QMK で Github を使う方法
<!---
original document: d598f01cb:getting_started_github.md
git diff d598f01cb HEAD getting_started_github.md | cat
original document: d598f01cb:docs/getting_started_github.md
git diff d598f01cb HEAD -- docs/getting_started_github.md | cat
-->
Github は慣れていない人には少し注意が必要です - このガイドは、QMK におけるフォーク、クローン、プルリクエストのサブミットの各ステップについて説明します。

View File

@@ -1,8 +1,8 @@
# はじめに
<!---
original document: d598f01cb:getting_started_introduction.md
git diff d598f01cb HEAD getting_started_introduction.md | cat
original document: d598f01cb:docs/getting_started_introduction.md
git diff d598f01cb HEAD -- docs/getting_started_introduction.md | cat
-->
このページでは、QMK プロジェクトで作業するために知っておくべき基本的な情報について説明しようと思います。Unix シェルの操作に精通していることを前提としていますが、C について、または make を使ったコンパイルについて精通しているとは想定していません。

View File

@@ -0,0 +1,153 @@
# より詳細な `make` 手順
<!---
original document: 5f35203d1:docs/getting_started_make_guide.md
git diff 5f35203d1 HEAD -- docs/getting_started_make_guide.md | cat
-->
`make` コマンドの完全な構文は `<keyboard_folder>:<keymap>:<target>` です:
* `<keyboard_folder>` はキーボードのパスです。例えば、`planck`
* 全てのキーボードをコンパイルするには `all` を使います。
* リビジョンを選択してコンパイルするためのパスを指定します。例えば `planck/rev4` あるいは `planck/rev3`
* キーボードにフォルダが無い場合は、省略することができます
* デフォルトのフォルダをコンパイルする場合は、省略することができます
* `<keymap>` はキーマップの名前です。例えば、`algernon`
* 全てのキーマップをコンパイルするには `all` を使います。
* `<target>` の詳細は以下で説明します。
`<target>` は以下を意味します
* target が指定されない場合は、以下の `all` と同じです
* `all` は指定されたキーボード/リビジョン/キーマップの可能な全ての組み合わせのコンパイルを行います。例えば、`make planck/rev4:default` は1つの .hex を生成しますが、`make planck/rev4:all` は planck で利用可能な全てのキーマップについて hex を生成します。
* `flash``dfu``teensy``avrdude``dfu-util` または `bootloadHID` はファームウェアをコンパイルし、キーボードにアップロードします。コンパイルが失敗すると、何もアップロードされません。使用するプログラマはキーボードに依存します。ほとんどのキーボードでは `dfu` ですが、ChibiOS キーボードについては `dfu-util` 、標準的な Teensy については `teensy` を使います。キーボードに使うコマンドを見つけるには、キーボード固有の readme をチェックしてください。
* **注意**: 一部のオペレーティングシステムではこれらのコマンドが機能するためには root アクセスが必要です。その場合、例えば `sudo make planck/rev4:default:flash` を実行する必要があります。
* `clean` は、全てをゼロからビルドするためにビルド出力フォルダを掃除します。説明できない問題がある場合は、通常のコンパイルの前にこれを実行してください。
make コマンドの最後、つまり target の後に追加のオプションを追加することもできます
* `make COLOR=false` - カラー出力をオフ
* `make SILENT=true` - エラー/警告以外の出力をオフ
* `make VERBOSE=true` - 全ての gcc のものを出力 (デバッグする必要が無い限り面白くありません)
* `make EXTRAFLAGS=-E` - コンパイルせずにコードを前処理 (#define コマンドをデバッグしようとする場合に便利)
make コマンド自体にもいくつかの追加オプションがあります。詳細は `make --help` を入力してください。最も有用なのはおそらく `-jx` です。これは複数の CPU を使ってコンパイルしたいことを指定し、`x` は使用したい CPU の数を表します。設定すると、特に多くのキーボード/キーマップをコンパイルしている場合は、コンパイル時間を大幅に短縮することができます。通常は、コンパイル中に他の作業を行うための余裕をもたせるために、持っている CPU の数より1つ少ない値に設定します。全てのオペレーティングシステムと make バージョンがオプションをサポートしているわけではないことに注意してください。
コマンドの例を幾つか示します
* `make all:all` は、全てをビルドします (全てのキーボードフォルダ、全てのキーマップ)。`root` から単に `make` を実行すると、これを実行します。
* `make ergodox_infinity:algernon:clean` は、Ergodox Infinity キーボードのビルド出力を掃除します。
* `make planck/rev4:default:flash COLOR=false` カラー出力なしでキーマップをビルドしアップロードします。
## `rules.mk` オプション
無効にするにはこれらの変数を `no` に設定します。有効にするには `yes` に設定します。
`BOOTMAGIC_ENABLE`
これにより、1つのキーとソルトキー(デフォルトではスペース)を押し続けることで、電力が失われても持続する様々な EEPROM 設定へアクセスできます。誤って設定が変更されることが多く、デバッグするのが難しい混乱した結果を生成するため、これを無効にしておくことをお勧めします。ヘルプセッションで発生する、より一般的な問題の1つです。
`MOUSEKEY_ENABLE`
これにより、キーコード/カスタム関数を介して、カーソルの動きとクリックを制御することができます。
`EXTRAKEY_ENABLE`
これにより、システムとオーディオ制御キーコードを使うことができます。
`CONSOLE_ENABLE`
これにより、[`hid_listen`](https://www.pjrc.com/teensy/hid_listen.html) を使って読むことができるメッセージを出力することができます。
デフォルトで、全てのデバッグ( *dprint* ) 出力 ( *print*、*xprintf* )、およびユーザ出力 ( *uprint* ) メッセージが有効になります。これにより、フラッシュメモリの大部分が消費され、キーボードの .hex ファイルが大きすぎてプログラムできなくなるかもしれません。
デバッグメッセージ( *dprint* ) を無効にし、.hex ファイルのサイズを小さくするには、`config.h``#define NO_DEBUG` を含めます。
出力メッセージ( *print*、*xprintf* )とユーザ出力( *uprint* ) を無効にし、.hex のファイルサイズを小さくするには、`config.h``#define NO_PRINT` を含めます。
出力メッセージ ( *print*、*xprintf* ) を無効にし、ユーザメッセージ ( *uprint* )を**そのままにする**には、`config.h``#define USER_PRINT` を含めます(この場合は、`#define NO_PRINT` も含めないでください)。
テキストを見るには、`hid_listen` を開き、出力メッセージを見るのを楽しんでください。
**注意:** キーマップコード以外の *uprint* メッセージを含めないでください。QMK システムフレームワーク内で使うべきではありません。さもないと、他の人の .hex ファイルが肥大化します。
`COMMAND_ENABLE`
これはマジックコマンドを有効にし、通常はデフォルトのマジックキーの組み合わせ `LSHIFT+RSHIFT+KEY` で起動されます。マジックコマンドは、デバッグメッセージ (`MAGIC+D`) の有効化や NKRO の一時的な切り替え (`MAGIC+N`) を含みます。
`SLEEP_LED_ENABLE`
コンピュータがスリープの間に LED がブレスできるようにします。ここでは Timer1 が使われます。この機能は大部分が未使用でテストされておらず、更新もしくは抽象化が必要です。
`NKRO_ENABLE`
これにより、キーボードはホスト OS に最大 248 個のキーが同時に押されていることを伝えることができます (NKRO 無しのデフォルトは 6 です)。NKRO は、`NKRO_ENABLE` が設定されていたとしても、デフォルトではオフです。config.h に `#define FORCE_NKRO` を追加するか、`MAGIC_TOGGLE_NKRO` をキーにバインドしてキーを押すことで、NKRO を強制することができます。
`BACKLIGHT_ENABLE`
これはスイッチ内の LED のバックライトを有効にします。`config.h` 内に以下を入れることでバックライトピンを指定することができます:
#define BACKLIGHT_PIN B7
`MIDI_ENABLE`
キーボードで MIDI の送受信を有効にします。MIDI 送信モードに入るためにキーコード `MI_ON` を使うことができ、オフにするために `MI_OFF` を使うことができます。これはほとんどテストされていない機能ですが、詳細については `quantum/quantum.c` ファイルで見つけることができます。
`UNICODE_ENABLE`
これによりキーマップで `UC(<code point>)` を使って Unicode 文字を送信することができます。`0x7FFF` までのコードポイントがサポートされます。これはほとんどの現代言語の文字と記号を対象にしますが、絵文字は対象外です。
`UNICODEMAP_ENABLE`
これによりキーマップで `X(<map index>)` を使って Unicode 文字を送信することができます。キーマップファイル内にマッピングテーブルを保持する必要があります。可能な全てのコードポイント( `0x10FFFF` まで)がサポートされます。
`UCIS_ENABLE`
これにより、送信したい文字に対応するニーモニックを入力することで Unicode 文字を送信することができます。キーマップファイル内にマッピングテーブルを保持する必要があります。可能な全てのコードポイント( `0x10FFFF` まで)がサポートされます。
詳細と制限については、[Unicode ページ](ja/feature_unicode.md) を見てください。
`BLUETOOTH_ENABLE`
これによりキーコードをワイヤレスで送信するために Bluefruit EZ-key と連動することができます。D2 と D3 ピンを使います。
`AUDIO_ENABLE`
C6 ピン(抽象化が必要)でオーディオ出力できます。詳細は[オーディオページ](ja/feature_audio.md)を見てください。
`FAUXCLICKY_ENABLE`
クリック音のあるスイッチをエミュレートするためにブザーを使います。Cherry社製の青軸スイッチの安っぽい模倣です。デフォルトでは、`AUDIO_ENABLE` と同じように C6 ピンを使います。
`VARIABLE_TRACE`
これを使って変数の値の変更をデバッグします。詳細についてはユニットテストのページの[変数のトレース](ja/unit_testing.md#tracing-variables)のセクションを見てください。
`API_SYSEX_ENABLE`
これにより Quantum SYSEX API を使って文字列を送信することができます (どこに?)
`KEY_LOCK_ENABLE`
これは [キーロック](ja/feature_key_lock.md) を有効にします。
`SPLIT_KEYBOARD`
分割キーボード (let's split や bakingpy's boards のようなデュアル MCU) のサポートを有効にし、quantum/split_common にある全ての必要なファイルをインクルードします
`SPLIT_TRANSPORT`
ARM ベースの分割キーボード用の標準分割通信ドライバはまだ無いため、これらのために `SPLIT_TRANSPORT = custom` を使わなければなりません。カスタムの実装が使われるようにすることで、標準の分割キーボード通信コード(AVR 固有)が含まれないようにします。
`CUSTOM_MATRIX`
デフォルトのマトリックス走査ルーチンを独自のコードで置き換えます。詳細については、[カスタムマトリックスページ](ja/custom_matrix.md) を見てください。
`DEBOUNCE_TYPE`
デフォルトのキーデバウンスルーチンを別のものに置き換えます。`custom` の場合、独自の実装を提供する必要があります。
## キーマップごとに Makefile オプションをカスタマイズ
あなたのキーマップディレクトリに `rules.mk` というファイルがある場合、そのファイルで設定した全てのオプションは、あなたのキーボードの他の `rules.mk` オプションよりも優先されます。
あなたのキーボードの `rules.mk``BACKLIGHT_ENABLE = yes` があるとします。あなたの特定のキーボードでバックライトが無いようにするには、`rules.mk` というファイルを作成し、`BACKLIGHT_ENABLE = no` を指定します。

View File

@@ -0,0 +1,62 @@
# Vagrant クイックスタート
<!---
original document: 7494490d6:docs/getting_started_vagrant.md
git diff 7494490d6 HEAD -- docs/getting_started_vagrant.md | cat
-->
このプロジェクトは、プライマリオペレーティングシステムに大きな変更を加えることなくキーボードの新しいファームウェアを非常に簡単に構築することができる `Vagrantfile` を含みます。これは、あなたがプロジェクトをクローンしビルドを実行した時に、ビルドのために Vagrantfile を使っている他のユーザと全く同じ環境を持つことも保証します。これにより、人々はあなたが遭遇した問題の解決をより簡単に行えるようになります。
## 必要事項
このリポジトリ内の `Vagrantfile` を使うには、[Vagrant](http://www.vagrantup.com/) およびサポートされるプロバイダがインストールされている必要があります:
* [VirtualBox](https://www.virtualbox.org/) (バージョン 5.0.12 以降)
* 'Vagrant を使うために最もアクセスしやすいプラットフォーム' として販売
* [VMware Workstation](https://www.vmware.com/products/workstation) および [Vagrant VMware プラグイン](http://www.vagrantup.com/vmware)
* (有料) VMware プラグインには、ライセンスされた VMware Workstation/Fusion のコピーが必要です。
* [Docker](https://www.docker.com/)
Vagrant 以外に、適切なプロバイダがインストールされ、その後におそらくコンピュータを再起動すると、このプロジェクトをチェックアウトしたフォルダ内の任意の場所で 'vagrant up' を単純に実行することができ、このプロジェクトをビルドするのに必要な全てのツールが含まれる環境(仮想マシンあるいはコンテナ)が開始されます。Vagrant をうまく始めるためのヒントの投稿がありますが、それ以外に、以下のビルドドキュメントを参照することもできます。
## ファームウェアの書き込み
ファームウェアを書き込む"簡単"な方法は、ホスト OS からツールを使うことです:
* [QMK Toolbox](https://github.com/qmk/qmk_toolbox) (推奨)
* [Teensy ローダー](https://www.pjrc.com/teensy/loader.html)
* [Atmel FLIP](http://www.atmel.com/tools/flip.aspx)
コマンドラインでプログラムしたい場合は、Vagranfile の ['modifyvm'] 行のコメントを解除して Linux への USB パススルーを有効にし、dfu-util/dfu-programmer のようなコマンドラインツールを使ってプログラムすることができます。あるいは Teensy CLI バージョンをインストールすることができます。
## Vagrantfile の概要
開発環境は QMK Docker イメージ、`qmkfm/base_container` を実行するように設定されています。これはシステム間の予測可能性が保証されるだけでなく、CI 環境もミラーされます。
## FAQ
### Virtualbox で問題が発生するのはなぜですか?
Virtualbox 5 の特定のバージョンはこの Vagrantfile のボックスにインストールされている Virtualbox の拡張機能と互換性が無いようです。/vagrant のマウントで問題が発生した場合は、Virtualbox のバージョンを少なくとも 5.0.12 にアップグレードしてください。**または、以下のコマンドを実行してみることができます:**
```console
vagrant plugin install vagrant-vbguest
```
### 既存の環境を削除するにはどうすればいいですか?
あなたの環境での作業が完了しましたか?このプロジェクトをチェックアウトしたフォルダの中のどこからでも、以下を実行してください:
```console
vagrant destroy
```
### Docker を直接使いたい場合はどうしますか?
仮想マシン無しで Vagrant のワークフローを活用したいですかVagrantfile は仮想マシンの実行をバイパスし、コンテナを直接実行するように設定されています。Docker を強制的に使うように環境を立ち上げる場合は、以下を実行してください:
```console
vagrant up --provider=docker
```
### Docker コンテナではなく仮想マシンにアクセスするにはどうすればいいですか?
以下を実行して、公式の QMK ビルダーイメージから直接起動する `vagrant` ユーザをバイパスするようにします:
```console
vagrant ssh -c 'sudo -i'
```

174
docs/ja/keymap.md Normal file
View File

@@ -0,0 +1,174 @@
# キーマップの概要
<!---
original document: 7494490d6:docs/keymap.md
git diff 7494490d6 HEAD -- docs/keymap.md | cat
-->
QMK のキーマップは C のソースファイルの中で定義されます。そのデータ構造は配列の配列です。外側はレイヤーを要素とする配列で、レイヤーはキーを要素とする配列。ほとんどのキーボードは `LAYOUT()` マクロを定義して、この配列の配列を作成しやすくしています。
## キーマップとレイヤー
QMKでは、**`const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS]`**は、**アクションコード**を保持している **16 bit** データの中でキーマップ情報の複数の**レイヤー**を保持します。最大で**32個のレイヤー**を定義することができます。
普通のキー定義の場合、**アクションコード**の上位8ビットは全て0で、下位8ビットは**キーコード**としてキーによって生成された USB HID usage コードを保持します。
各レイヤーは同時に有効にできます。レイヤーには 0 から 31 までのインデックスが付けられ、上位のレイヤーが優先されます。
Keymap: 32 Layers Layer: action code matrix
----------------- ---------------------
stack of layers array_of_action_code[row][column]
____________ precedence _______________________
/ / | high / ESC / F1 / F2 / F3 ....
31 /___________// | /-----/-----/-----/-----
30 /___________// | / TAB / Q / W / E ....
29 /___________/ | /-----/-----/-----/-----
: _:_:_:_:_:__ | : /LCtrl/ A / S / D ....
: / : : : : : / | : / : : : :
2 /___________// | 2 `--------------------------
1 /___________// | 1 `--------------------------
0 /___________/ V low 0 `--------------------------
TMK の歴史的経緯から、キーマップに保存されたアクションコードは、一部のドキュメントではキーコードと呼ばれる場合があります。
### キーマップレイヤーステータス
キーマップレイヤーの状態は、2つの32ビットパラメータによって決定されます。
* **`default_layer_state`** は、常に有効で参照される基本キーマップレイヤー (0-31) を示します (デフォルトレイヤー)。
* **`layer_state`** は現在の各レイヤーのオン/オフの状態をビットで持ちます。
キーマップレイヤー '0' は通常 `default_layer` で、他のレイヤーはファームウェアの起動後に最初はオフになっていますが、これは `config.h` で異なる設定にすることが可能です。例えば Qwerty ではなく Colemak に切り替えるなど、キーレイアウトを完全に切り替える場合、`default_layer` を変更すると便利です。
Initial state of Keymap Change base layout
----------------------- ------------------
31 31
30 30
29 29
: :
: : ____________
2 ____________ 2 / /
1 / / ,->1 /___________/
,->0 /___________/ | 0
| |
`--- default_layer = 0 `--- default_layer = 1
layer_state = 0x00000001 layer_state = 0x00000002
一方、`layer_state` を変更して、基本レイヤーをナビゲーションキー、ファンクションキー (F1-F12)、メディアキー、特別なアクションなどの機能を持つ他のレイヤーでオーバーレイすることができます。
Overlay feature layer
--------------------- bit|status
____________ ---+------
31 / / 31 | 0
30 /___________// -----> 30 | 1
29 /___________/ -----> 29 | 1
: : | :
: ____________ : | :
2 / / 2 | 0
,->1 /___________/ -----> 1 | 1
| 0 0 | 0
| +
`--- default_layer = 1 |
layer_state = 0x60000002 <-'
### レイヤーの優先順位と透過性
***上位のレイヤーはレイヤーのスタックでより高い優先順位を持つ***ことに注意してくださいつまりファームウェアはキーコードを最上位から最下位まで検索しますレイヤーで **`KC_TRNS`**(透過)以外のキーコードを見つけると検索を中止し下位レイヤーは参照されません
オーバーレイレイヤーに `KC_TRANS` を配置してレイアウトの一部だけを変更して下位レイヤーまたは基本レイヤーにフォールバックすることができます
`KC_TRANS` (`KC_TRNS` `_______` はエイリアス) のキーには独自のキーコードがなくキーコードの有効な下位レイヤーを参照します
## `keymap.c` の分析
この例では[デフォルトの Clueboard 66% キーマップの古いバージョン](https://github.com/qmk/qmk_firmware/blob/ca01d94005f67ec4fa9528353481faa622d949ae/keyboards/clueboard/keymaps/default/keymap.c)を見ていきますそのファイルを別のブラウザウィンドウで開くとコンテキスト内のすべてを見ることができるので便利です
`keymap.c` ファイルにはあなたが関心があるであろう以下の2つの主要なセクションがあります:
* [定義](#definitions)
* [レイヤー/キーマップデータ構造](#layers-and-keymaps)
### 定義 :id=definitions
ファイルの上部に以下のものがあります:
#include QMK_KEYBOARD_H
// 便利な定義
#define GRAVE_MODS (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)|MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)|MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT))
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* KC_TRNS (透過) の代わりに _______ を使うことができます *
* あるいはKC_NO (NOOP) として XXXXXXX を使うことができます *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
// 各レイヤーは読みやすいように名前を持ちます
// アンダースコアは何も意味を持ちません
// STUFF あるいは他の名前のレイヤーを持つことができます
// レイヤー名は全て同じ長さである必要はなく
// また名前を完全に省略して単に数字を使うことができます
#define _BL 0
#define _FL 1
#define _CL 2
これらはキーマップとカスタム関数を作成するときに使うことができる便利な定義です`GRAVE_MODS` 定義は後でカスタム関数で使われその下の `_BL``_FL``_CL` 定義は各レイヤーを参照しやすくします
注意: 古いキーマップファイルに `_______` および `XXXXXXX` の定義が含まれているかもしれませんこれらはそれぞれ `KC_TRNS` および `KC_NO` の代わりに使うことができレイヤーがどのキーを上書きしているかを簡単に確認することができますこれらの定義はデフォルトで含まれるため今では不要になりました
### レイヤーとキーマップ :id=layers-and-keymaps
このファイルの主要部分は `keymaps[]` 定義ですここでレイヤーとそれらの内容を列挙しますファイルのこの部分は以下の定義から始まります:
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
この後でLAYOUT() マクロのリストがありますLAYOUT() は単一のレイヤーを定義するためのキーのリストです通常1つ以上の"基本レイヤー" (QWERTYDvorakColemak など)がありその上に1つ以上の"機能"レイヤーを重ねますレイヤーの処理方法により、"より上位"のレイヤーの上に"より下位"のレイヤーを重ねることはできません
QMK `keymaps[][MATRIX_ROWS][MATRIX_COLS]` 16ビットのアクションコード( quantum キーコードとも呼ばれる)を保持します一般的なキーを表すキーコードの場合その上位バイトは0でその下位バイトはキーボードの USB HID usage ID です
> QMK のフォーク元の TMK は、代わりに `const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS]` を使い、8ビットキーコードを保持します。一部のキーコード値は、`fn_actions[]` 配列を介して特定のアクションコードの実行を引き起こすために予約されています。
#### 基本レイヤー
Clueboard の基本レイヤーの例です:
/* Keymap _BL: Base Layer (Default Layer)
*/
[_BL] = LAYOUT(
F(0), 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(_FL), KC_LEFT, KC_DOWN, KC_RGHT),
これについて注意すべきいくつかの興味深いこと:
* C ソースの観点からはこれは単一の配列に過ぎませんが物理デバイス上の各キーがどこにあるかをより簡単に可視化するために空白が埋め込まれています
* 単純なキーボードスキャンコードの先頭には KC_ が付いていますが、"特別な"キーには付いていません
* 左上のキーはカスタム機能 0 (`F(0)`) をアクティブにします
* "Fn" キーは `MO(_FL)` で定義されそのキーが押されている間は `_FL` レイヤーに移動します
#### 機能オーバーレイレイヤー
機能レイヤーはコードの観点から基本レイヤーと違いはありませんただし概念的には置き換えの代わりにオーバーレイとしてそのレイヤーを構築します多くの人にとってはこの区別は重要ではありませんがより複雑なレイヤー設定を構築するにつれてますます重要になります
[_FL] = LAYOUT(
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, BL_STEP, \
_______, _______, _______,_______,_______,_______,_______,_______,KC_PSCR,KC_SLCK, KC_PAUS, _______, _______, _______, _______, \
_______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \
_______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, KC_PGUP, \
_______, _______, _______, _______, _______,_______, _______, _______, _______, MO(_FL), KC_HOME, KC_PGDN, KC_END),
注意すべきいくつかの興味深いこと:
* `_______` 定義を使って`KC_TRNS` `_______` に変換しましたこれによりこのレイヤーで変更されたキーを簡単に見つけることができます
* このレイヤーで `_______` キーのいずれかを押すと次の下位のアクティブなレイヤーのキーがアクティブになります
# 核心となる詳細
これで独自のキーマップを作成するための基本的な概要が得られました詳細は以下のリソースを見てください:
* [キーコード](ja/keycodes.md)
* [キーマップ FAQ](ja/faq_keymap.md)
これらのドキュメントの改善に積極的に取り組んでいますそれらを改善する方法について提案がある場合は[issue を報告](https://github.com/qmk/qmk_firmware/issues/new)してください

View File

@@ -3,7 +3,7 @@
<!---
grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh
original document: adf4acf59:docs/newbs.md
git diff adf4acf59 HEAD docs/newbs.md | cat
git diff adf4acf59 HEAD -- docs/newbs.md | cat
-->
QMK は、メカニカルキーボード用の強力なオープンソースファームウェアです。

View File

@@ -2,8 +2,8 @@
<!---
grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh
original document: ed0575fc8:docs/newbs_building_firmware.md
git diff ed0575fc8 HEAD docs/newbs_building_firmware.md | cat
original document: 0f43c2652:docs/newbs_building_firmware.md
git diff 0f43c2652 HEAD -- docs/newbs_building_firmware.md | cat
-->
ビルド環境をセットアップしたので、カスタムファームウェアのビルドを開始する準備ができました。
@@ -56,7 +56,7 @@ macOS または Windows を使用している場合は、キーマップフォ
この行はレイヤーのリストの開始を表わしています。
その下には、`LAYOUT` または `KEYMAP` のいずれかを含む行があり、これらの行はレイヤーの開始を表わしています。
その行の下には、その特定のレイヤーを構成するキーのリストがあります。
その行の下には、そのレイヤーを構成するキーのリストがあります。
!> キーマップファイルを編集するときは、カンマを追加したり削除したりしないように注意してください。そうするとファームウェアのコンパイルができなくなり、余分であったり欠落していたりするカンマがどこにあるのかを容易に把握できない場合があります。

View File

@@ -3,7 +3,7 @@
<!---
grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh
original document: ed0575fc8:docs/newbs_building_firmware_configurator.md
git diff ed0575fc8 HEAD docs/newbs_building_firmware_configurator.md | cat
git diff ed0575fc8 HEAD -- docs/newbs_building_firmware_configurator.md | cat
-->
[QMK Configurator](https://config.qmk.fm) は、QMKファームウェアの hex ファイルを生成するオンライングラフィカルユーザーインターフェイスです。
@@ -63,7 +63,7 @@ QMK Configurator は Chrome/Firefox で最適に動作します。
2分割の右シフト: 両方とも右シフトで埋めます。
左シフトとISOサポート用に1つずつ: 両方とも左シフトで埋めます。
左シフトと ISO サポート用に1つずつ: 両方とも左シフトで埋めます。
5分割だが4キーのみ: 以前やったことがある人を推測して確認するか尋ねてください。
@@ -73,7 +73,7 @@ QMK Configurator は Chrome/Firefox で最適に動作します。
後日、`Import Keymap` ボタンを押すことで、この .json ファイルをロードできます。
!> **注意:** このファイルは、kbfirmware.com またはその他のツールに使用される .jsonファイルと同じ形式ではありません。これらのツールにこれを使用したり、QMK Configurator でこれらのツールの .json を使用しようとすると、キーボードが **爆発** する可能性があります。
!> **注意:** このファイルは、kbfirmware.com またはその他のツールに使用される .json ファイルと同じ形式ではありません。これらのツールにこれを使用したり、QMK Configurator でこれらのツールの .json を使用しようとすると、キーボードが **爆発** する可能性があります。
## ファームウェアファイルを生成する

View File

@@ -3,7 +3,7 @@
<!---
grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh
original document: ed0575fc8:docs/newbs_flashing.md
git diff ed0575fc8 HEAD docs/newbs_flashing.md | cat
git diff ed0575fc8 HEAD -- docs/newbs_flashing.md | cat
-->
カスタムファームウェアは出来たので、キーボードに書き込みたくなるでしょう/フラッシュしたくなるでしょう。
@@ -13,7 +13,7 @@
キーボードに書き込む最も簡単な方法は [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) を使うことです。
ただし、QMK Toolbox は、現在は Windows と macOS でしか使えません。
Linuxを使用している場合(および、コマンドラインでファームウェアを書き込みたい場合)は、下の方で概説する[方法](ja/newbs_flashing.md#flash-your-keyboard-from-the-command-line)で行なう必要があります。
Linux を使用している場合(および、コマンドラインでファームウェアを書き込みたい場合)は、下の方で概説する[方法](ja/newbs_flashing.md#flash-your-keyboard-from-the-command-line)で行なう必要があります。
### QMK Toolbox にファイルをロードする
@@ -65,7 +65,7 @@ planck_rev5_default.hex
* 基板(PCB)に付けられている物理的な `RESET` ボタンを押す
* PCB 上の `BOOT0``RESET` のラベルの付いたヘッダピンを探し、PCB 接続中にそれらを互いにショートする
うまくいけば、QMK Toolboxに次のようなメッセージが表示されます。
うまくいけば、QMK Toolbox に次のようなメッセージが表示されます。
```
*** Clueboard - Clueboard 66% HotSwap disconnected -- 0xC1ED:0x2390
@@ -121,7 +121,7 @@ QMK Toolbox の `Flash` ボタンをクリックします。
この場合、あなたは明示的にブートローダを指定する方法を使わなければなりません。
ブートローダは主に 5 種類のものが使われています。
Pro Micro とそのクローンは Caterina を、Teensy は HalfKay を、OLKBの AVR ボードは QMK-DFU を、その他の ATmega32U4 ボードは DFU を、そして多くの ARM ボードは ARM DFU を使います。
Pro Micro とそのクローンは Caterina を、Teensy は HalfKay を、OLKB の AVR ボードは QMK-DFU を、その他の ATmega32U4 ボードは DFU を、そして多くの ARM ボードは ARM DFU を使います。
より詳しいブートローダの情報は、[Flashing Instructions and Bootloader Information](ja/flashing.md) にあります。
@@ -178,10 +178,10 @@ Checking file size of planck_rev5_xyverz.hex
ファームウェアを DFU デバイスに書き込むために使用できる DFU コマンドがいくつかあります。
* `:dfu` - これが通常のオプションで、DFUデバイスが使用可能になるまで待機したのちファームウェアを書き込みます。5秒ごとに、DFUデバイスが存在するかチェックしています。
* `:dfu` - これが通常のオプションで、DFU デバイスが使用可能になるまで待機したのちファームウェアを書き込みます。5秒ごとに、DFU デバイスが存在するかチェックしています。
* `:dfu-ee` - 通常の hex ファイルの代わりに `eep` ファイルを書き込みます。これを使用するのはまれです。
* `:dfu-split-left` - デフォルトオプション (`:dfu`) と同様に、通常のファームウェアが書き込まれます。ただし、分割キーボードの「左側の」 EEPROMファイルも書き込まれます。_これは、Elite C ベースの分割キーボードに最適です。_
* `:dfu-split-right` - デフォルトオプション (`:dfu`) と同様に、通常のファームウェアが書き込まれます。ただし、分割キーボードの「右側の」EEPROMファイルも書き込まれます。_これは、Elite C ベースの分割キーボードに最適です。_
* `:dfu-split-left` - デフォルトオプション (`:dfu`) と同様に、通常のファームウェアが書き込まれます。ただし、分割キーボードの「左側の」 EEPROM ファイルも書き込まれます。_これは、Elite C ベースの分割キーボードに最適です。_
* `:dfu-split-right` - デフォルトオプション (`:dfu`) と同様に、通常のファームウェアが書き込まれます。ただし、分割キーボードの「右側の」EEPROM ファイルも書き込まれます。_これは、Elite C ベースの分割キーボードに最適です。_
### Caterina
@@ -259,8 +259,8 @@ avrdude.exe done. Thank you.
* `:avrdude` - これが通常のオプションで、Caterina デバイスが(新しい COM ポートを検出して)使用可能になるまで待機し、ファームウェアを書き込みます。
* `:avrdude-loop` - これは `:avrdude` と同じです。ただし書き込みが終了すると再び Caterina デバイスの書き込み待ちに戻ります。これは何台ものデバイスへの書き込みに便利です。_Control+C を押して、手動でこの繰り返しを終了させる必要があります。_
* `:avrdude-split-left` - デフォルトオプション(`:avrdude`)と同様に通常のファームウェアが書き込まれます。ただし、分割キーボードの「左側の」EEPROMファイルもフラッシュされます。 _これは、Pro Micro ベースの分割キーボードに最適です。_
* `:avrdude-split-right` - デフォルトオプション(`:avrdude`)と同様に通常のファームウェアが書き込まれます。ただし、分割キーボードの「右側の」EEPROMファイルもフラッシュされます。 _これは、Pro Micro ベースの分割キーボードに最適です。_
* `:avrdude-split-left` - デフォルトオプション(`:avrdude`)と同様に通常のファームウェアが書き込まれます。ただし、分割キーボードの「左側の」EEPROM ファイルもフラッシュされます。 _これは、Pro Micro ベースの分割キーボードに最適です。_
* `:avrdude-split-right` - デフォルトオプション(`:avrdude`)と同様に通常のファームウェアが書き込まれます。ただし、分割キーボードの「右側の」EEPROM ファイルもフラッシュされます。 _これは、Pro Micro ベースの分割キーボードに最適です。_
### HalfKay

View File

@@ -2,8 +2,8 @@
<!---
grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh
original document: docs/newbs_getting_started.md
git diff 161d469 HEAD docs/newbs_getting_started.md | cat
original document: 161d469:docs/newbs_getting_started.md
git diff 161d469 HEAD -- docs/newbs_getting_started.md | cat
-->
キーボードにはプロセッサが入っており、それはコンピュータに入っているものと大して違わないものです。
@@ -12,7 +12,7 @@ QMK は、そのソフトウェアの役割を果たし、ボタンの押下を
カスタムキーマップを作るということは、キーボード上で動くプログラムを作るということなのです。
QMK は、簡単なことは簡単に、そして、難しいことを可能なことにすることで、あなたの手にたくさんのパワーをもたらします。
パワフルなキーマップを作るためにプログラムを作成する方法を知る必要はありません。いくつかのシンプルな文法に従うだけでOKです。
パワフルなキーマップを作るためにプログラムを作成する方法を知る必要はありません。いくつかのシンプルな文法に従うだけで OK です。
# はじめに

View File

@@ -3,7 +3,7 @@
<!---
grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh
original document: adf4acf59:docs/newbs_git_best_practices.md
git diff adf4acf59 HEAD docs/newbs_git_best_practices.md | cat
git diff adf4acf59 HEAD -- docs/newbs_git_best_practices.md | cat
-->
## または、"如何にして私は心配することをやめて Git を愛することを学んだか。"

View File

@@ -3,7 +3,7 @@
<!---
grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh
original document: adf4acf59:docs/newbs_git_resolving_merge_conflicts.md
git diff adf4acf59 HEAD docs/newbs_git_resolving_merge_conflicts.md | cat
git diff adf4acf59 HEAD -- docs/newbs_git_resolving_merge_conflicts.md | cat
-->
ブランチでの作業の完了に時間がかかる場合、他の人が行った変更が、プルリクエストを開いたときにブランチに加えた変更と競合することがあります。

View File

@@ -3,11 +3,11 @@
<!---
grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh
original document: adf4acf59:docs/newbs_git_resynchronize_a_branch.md
git diff adf4acf59 HEAD docs/newbs_git_resynchronize_a_branch.md | cat
git diff adf4acf59 HEAD -- docs/newbs_git_resynchronize_a_branch.md | cat
-->
仮にあなたの `master` ブランチにあなたのコミットを行い、そしてあなたの QMK リポジトリの更新が必要になったとします。
(フォーク元の) QMKの `master` ブランチをあなたの `master` ブランチに `git pull` することもできますが、GitHub は、あなたのブランチが `qmk:master` より何コミットか先行していると通知します、この状態で QMK にプルリクエストを行う場合、問題が発生する可能性があります。
(フォーク元の) QMK `master` ブランチをあなたの `master` ブランチに `git pull` することもできますが、GitHub は、あなたのブランチが `qmk:master` より何コミットか先行していると通知します、この状態で QMK にプルリクエストを行う場合、問題が発生する可能性があります。
(訳注この通知は、GitHub のあなたのリポジトリの code ペインのブランチ選択メニューの下のあたりで `This branch is 3 commit ahead of qmk:master` という様な文面で表示されています。)
?> このドキュメントは [あなたのフォークの master ブランチ: 更新は頻繁に、コミットはしないこと](ja/newbs_git_using_your_master_branch.md) で詳述されている概念に基づいています。その概念に慣れていない場合は、まずそれを読んでから、ここに戻ってください。

View File

@@ -3,7 +3,7 @@
<!---
grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh
original document: adf4acf59:docs/newbs_git_using_your_master_branch.md
git diff adf4acf59 HEAD docs/newbs_git_using_your_master_branch.md | cat
git diff adf4acf59 HEAD -- docs/newbs_git_using_your_master_branch.md | cat
-->
QMK の開発では、何がどこで行われているかにかかわらず、`master` ブランチを最新の状態に保つことを強くお勧めします、しかし `master` ブランチには***絶対に直接コミットしないでください***。
@@ -41,7 +41,7 @@ upstream https://github.com/qmk/qmk_firmware.git (push)
このコマンドは `upstream` というニックネームを持つ QMK リポジトリから、ブランチとタグ &mdash; "refs" と総称されます &mdash; を取得します。
これで、あなたのフォーク `origin` のデータを QMK が保持するデータと比較できます。
あなたのフォークの `master` を更新するには、次を実行します、各行の後にEnterキーを押してください:
あなたのフォークの `master` を更新するには、次を実行します、各行の後に Enter キーを押してください:
```
git checkout master
@@ -98,4 +98,4 @@ git commit -m "My commit message."
最後のステップは、変更をフォークにプッシュすることです。
これを行うには、`git push`と入力します。
Gitは、 `dev_branch`の現在の状態をフォークに公開します。
Git は、 `dev_branch`の現在の状態をフォークに公開します。

View File

@@ -3,10 +3,10 @@
<!---
grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh
original document: ed0575fc8:docs/newbs_learn_more_resources.md
git diff ed0575fc8 HEAD docs/newbs_learn_more_resources.md | cat
git diff ed0575fc8 HEAD -- docs/newbs_learn_more_resources.md | cat
-->
これらのリソースは、QMKコミュニティの新しいメンバーに、初心者向けドキュメントで提供されている情報に対する理解を深めることを目的としています。
これらのリソースは、QMK コミュニティの新しいメンバーに、初心者向けドキュメントで提供されている情報に対する理解を深めることを目的としています。
## Git に関するリース:

View File

@@ -3,7 +3,7 @@
<!---
grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh
original document: ed0575fc8:docs/newbs_testing_debugging.md
git diff ed0575fc8 HEAD docs/newbs_testing_debugging.md | cat
git diff ed0575fc8 HEAD -- docs/newbs_testing_debugging.md | cat
-->
カスタムファームウェアをキーボードへ書き込んだら、テストする準備が整います。運が良ければ全て問題なく動作しているはずですが、もしそうでなければこのドキュメントがどこが悪いのか調べるのに役立ちます。
@@ -12,7 +12,7 @@
通常、キーボードをテストするのは非常に簡単です。全てのキーをひとつずつ押して、期待されるキーが送信されていることを確認します。キーを押したことを見逃さないためのプログラムもあります。
メモ これらのプログラムはQMKによって提供・承認されたものではありません。
メモ: これらのプログラムは QMK によって提供・承認されたものではありません。
* [QMK Configurator](https://config.qmk.fm/#/test/) (Web Based)
* [Switch Hitter](https://web.archive.org/web/20190413233743/https://elitekeyboards.com/switchhitter.php) (Windows Only)
@@ -40,7 +40,7 @@ void keyboard_post_init_user(void) {
### hid_listenを使ったデバッグ
ターミナルベースの方法がお好みですかPJRCが提供する[hid_listen](https://www.pjrc.com/teensy/hid_listen.html)もデバッグメッセージの表示に使用できます。ビルド済みの実行ファイルはWindows, Linux, MacOS用が用意されています。
ターミナルベースの方法がお好みですかPJRC が提供する[hid_listen](https://www.pjrc.com/teensy/hid_listen.html)もデバッグメッセージの表示に使用できます。ビルド済みの実行ファイルは Windows, Linux, MacOS 用が用意されています。
<!-- FIXME: Describe the debugging messages here. -->
@@ -50,7 +50,7 @@ void keyboard_post_init_user(void) {
#include <print.h>
そのあとは、いくつかの異なったprint関数を使用することが出来ます。
そのあとは、いくつかの異なった print 関数を使用することが出来ます。
* `print("string")`: シンプルな文字列を出力します
* `uprintf("%s string", var)`: フォーマットされた文字列を出力します

View File

@@ -208,24 +208,11 @@ This is a reference only. Each group of keys links to the page documenting their
## [Quantum Keycodes](quantum_keycodes.md#qmk-keycodes)
|Key |Aliases |Description |
|---------------|-----------|---------------------------------------------------------------------|
|`RESET` | |Put the keyboard into DFU mode for flashing |
|`DEBUG` | |Toggle debug mode |
|`EEPROM_RESET` |`EEP_RST` |Resets EEPROM state by reinitializing it |
|`KC_GESC` |`GRAVE_ESC`|Escape when tapped, <code>&#96;</code> when pressed with Shift or GUI|
|`KC_LSPO` | |Left Shift when held, `(` when tapped |
|`KC_RSPC` | |Right Shift when held, `)` when tapped |
|`KC_LCPO` | |Left Control when held, `(` when tapped |
|`KC_RCPC` | |Right Control when held, `)` when tapped |
|`KC_LAPO` | |Left Alt when held, `(` when tapped |
|`KC_RAPC` | |Right Alt when held, `)` when tapped |
|`KC_SFTENT` | |Right Shift when held, Enter when tapped |
|`KC_LEAD` | |The [Leader key](feature_leader_key.md) |
|`KC_LOCK` | |The [Lock key](feature_key_lock.md) |
|`FUNC(n)` |`F(n)` |Call `fn_action(n)` (deprecated) |
|`M(n)` | |Call macro `n` |
|`MACROTAP(n)` | |Macro-tap `n` idk FIXME |
|Key |Aliases |Description |
|--------------|---------|-------------------------------------------------------|
|`RESET` | |Put the keyboard into bootloader mode for flashing |
|`DEBUG` | |Toggle debug mode |
|`EEPROM_RESET`|`EEP_RST`|Reinitializes the keyboard's EEPROM (persistent memory)|
## [Audio Keys](feature_audio.md)
@@ -299,7 +286,7 @@ This is a reference only. Each group of keys links to the page documenting their
## [Dynamic Macros](feature_dynamic_macros.md)
|Key |Alias |Description |
|Key |Aliases |Description |
|-----------------|---------|--------------------------------------------------|
|`DYN_REC_START1` |`DM_REC1`|Start recording Macro 1 |
|`DYN_REC_START2` |`DM_REC2`|Start recording Macro 2 |
@@ -307,6 +294,18 @@ This is a reference only. Each group of keys links to the page documenting their
|`DYN_MACRO_PLAY2`|`DM_PLY2`|Replay Macro 2 |
|`DYN_REC_STOP` |`DM_RSTP`|Finish the macro that is currently being recorded.|
## [Grave Escape](feature_grave_esc.md)
|Key |Aliases |Description |
|-----------|---------|------------------------------------------------------------------|
|`GRAVE_ESC`|`KC_GESC`|Escape when pressed, <code>&#96;</code> when Shift or GUI are held|
## [Key Lock](feature_key_lock.md)
|Key |Description |
|---------|--------------------------------------------------------------|
|`KC_LOCK`|Hold down the next key pressed, until the key is pressed again|
## [Layer Switching](feature_advanced_keycodes.md#switching-and-toggling-layers)
|Key |Description |
@@ -320,6 +319,12 @@ This is a reference only. Each group of keys links to the page documenting their
|`TO(layer)` |Turns on `layer` and turns off all other layers, except the default layer |
|`TT(layer)` |Normally acts like MO unless it's tapped multiple times, which toggles `layer` on |
## [Leader Key](feature_leader_key.md)
|Key |Description |
|---------|------------------------|
|`KC_LEAD`|Begins a leader sequence|
## [Mouse Keys](feature_mouse_keys.md)
|Key |Aliases |Description |
@@ -461,6 +466,18 @@ This is a reference only. Each group of keys links to the page documenting their
|`OSM(mod)` |Hold `mod` for one keypress |
|`OSL(layer)`|Switch to `layer` for one keypress|
## [Space Cadet](feature_space_cadet.md)
|Key |Description |
|-----------|----------------------------------------|
|`KC_LCPO` |Left Control when held, `(` when tapped |
|`KC_RCPC` |Right Control when held, `)` when tapped|
|`KC_LSPO` |Left Shift when held, `(` when tapped |
|`KC_RSPC` |Right Shift when held, `)` when tapped |
|`KC_LAPO` |Left Alt when held, `(` when tapped |
|`KC_RAPC` |Right Alt when held, `)` when tapped |
|`KC_SFTENT`|Right Shift when held, Enter when tapped|
## [Swap Hands](feature_swap_hands.md)
|Key |Description |

View File

@@ -42,7 +42,7 @@ Open up your `keymap.c`. Inside this file you'll find the structure that control
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
This line indicates the start of the list of Layers. Below that you'll find lines containing either `LAYOUT` or `KEYMAP`, and these lines indicate the start of a layer. Below that line is the list of keys that comprise a that particular layer.
This line indicates the start of the list of Layers. Below that you'll find lines containing either `LAYOUT` or `KEYMAP`, and these lines indicate the start of a layer. Below that line is the list of keys that comprise a particular layer.
!> When editing your keymap file be careful not to add or remove any commas. If you do you will prevent your firmware from compiling and it may not be easy to figure out where the extra, or missing, comma is.

View File

@@ -38,7 +38,7 @@ To configure a keyboard where each switch is connected to a separate pin and gro
`BACKLIGHT_BREATHING` is a fancier backlight feature that adds breathing/pulsing/fading effects to the backlight. It uses the same timer as the normal backlight. These breathing effects must be called by code in your keymap.
`BACKLIGHT_LEVELS` is how many levels exist for your backlight - max is 15, and they are computed automatically from this number.
`BACKLIGHT_LEVELS` is how many levels exist for your backlight - max is 31, and they are computed automatically from this number.
## `/keyboards/<keyboard>/Makefile`

View File

@@ -8,21 +8,8 @@ On this page we have documented keycodes between `0x00FF` and `0xFFFF` which are
## QMK Keycodes
|Key |Aliases |Description |
|---------------|-----------|---------------------------------------------------------------------|
|`RESET` | |Put the keyboard into DFU mode for flashing |
|`DEBUG` | |Toggle debug mode |
|`EEPROM_RESET` |`EEP_RST` |Resets EEPROM state by reinitializing it |
|`KC_GESC` |`GRAVE_ESC`|Escape when tapped, <code>&#96;</code> when pressed with Shift or GUI|
|`KC_LSPO` | |Left Shift when held, `(` when tapped |
|`KC_RSPC` | |Right Shift when held, `)` when tapped |
|`KC_LCPO` | |Left Control when held, `(` when tapped |
|`KC_RCPC` | |Right Control when held, `)` when tapped |
|`KC_LAPO` | |Left Alt when held, `(` when tapped |
|`KC_RAPC` | |Right Alt when held, `)` when tapped |
|`KC_SFTENT` | |Right Shift when held, Enter when tapped |
|`KC_LEAD` | |The [Leader key](feature_leader_key.md) |
|`KC_LOCK` | |The [Lock key](feature_key_lock.md) |
|`FUNC(n)` |`F(n)` |Call `fn_action(n)` (deprecated) |
|`M(n)` | |Call macro `n` |
|`MACROTAP(n)` | |Macro-tap `n` idk FIXME |
|Key |Aliases |Description |
|--------------|---------|-------------------------------------------------------|
|`RESET` | |Put the keyboard into bootloader mode for flashing |
|`DEBUG` | |Toggle debug mode |
|`EEPROM_RESET`|`EEP_RST`|Reinitializes the keyboard's EEPROM (persistent memory)|

View File

@@ -3,30 +3,41 @@
* [构建你的第一个固件](zh-cn/newbs_building_firmware.md)
* [刷新固件](zh-cn/newbs_flashing.md)
* [测试和调试](zh-cn/newbs_testing_debugging.md)
* [Git最佳实践](zh-cn/newbs_best_practices.md)
* [Git最佳实践](zh-cn/newbs_git_best_practices.md)
* [使用你分叉(fork)的主分支(master)](zh-cn/newbs_git_using_your_master_branch.md)
* [解决合并冲突](zh-cn/newbs_git_resolving_merge_conflicts.md)
* [重新同步一个分支](zh-cn/newbs_git_resynchronize_a_branch.md)
* [学习资源](zh-cn/newbs_learn_more_resources.md)
* [QMK基础](zh-cn/README.md)
* [QMK简介](zh-cn/getting_started_introduction.md)
* [QMK贡献](zh-cn/contributing.md)
* [QMK命令行工具](zh-cn/cli.md)
* [QMK命令行工具配置](zh-cn/cli_configuration.md)
* [向QMK贡献代码](zh-cn/contributing.md)
* [如何使用Github](zh-cn/getting_started_github.md)
* [获得帮助](zh-cn/getting_started_getting_help.md)
* [问题解答](zh-cn/faq.md)
* [非兼容性修改](zh-cn/breaking_changes.md)
* [我的PR已经被标记为非兼容性修改](zh-cn/breaking_changes_instructions.md)
* [2019年8月30日](zh-cn/ChangeLog/20190830.md)
* [问题与解答](zh-cn/faq.md)
* [一般问题](zh-cn/faq_general.md)
* [构建/编译](zh-cn/faq_build.md)
* [调试/故障排除](zh-cn/faq_debug.md)
* [键盘映射](zh-cn/faq_keymap.md)
* [布局](zh-cn/faq_keymap.md)
* [Zadig驱动安装](zh-cn/driver_installation_zadig.md)
* 详细指南
* [安装构建工具](zh-cn/getting_started_build_tools.md)
* [vagrant指南](zh-cn/getting_started_vagrant.md)
* [构建/编译指](zh-cn/getting_started_make_guide.md)
* [构建/编译指](zh-cn/getting_started_make_guide.md)
* [刷新固件](zh-cn/flashing.md)
* [定制功能](zh-cn/custom_quantum_functions.md)
* [映射概述](zh-cn/keymap.md)
* [布局概述](zh-cn/keymap.md)
* [硬件](zh-cn/hardware.md)
* [兼容的单片机](zh-cn/compatible_microcontrollers.md)
* [AVR处理器](zh-cn/hardware_avr.md)
* [驱动](zh-cn/hardware_drivers.md)
@@ -34,13 +45,16 @@
* [键盘指南](zh-cn/hardware_keyboard_guidelines.md)
* [配置选项](zh-cn/config_options.md)
* [键码](zh-cn/keycodes.md)
* [记录最佳实践](zh-cn/documentation_best_practices.md)
* [代码书写规范 - C](zh-cn/coding_conventions_c.md)
* [代码书写规范 - Python](zh-cn/coding_conventions_python.md)
* [文档书写规范](zh-cn/documentation_best_practices.md)
* [文档模板](zh-cn/documentation_templates.md)
* [术语表](zh-cn/reference_glossary.md)
* [单元测试](zh-cn/unit_testing.md)
* [有用的功能](zh-cn/ref_functions.md)
* [实用函数](zh-cn/ref_functions.md)
* [配置器支持](zh-cn/reference_configurator_support.md)
* [info.json 格式](zh-cn/reference_info_json.md)
* [Python 命令行开发](zh-cn/cli_development.md)
* [特性](zh-cn/features.md)
* [基本键码](zh-cn/keycodes_basic.md)
@@ -54,22 +68,27 @@
* [热改键](zh-cn/feature_bootmagic.md)
* [组合](zh-cn/feature_combo)
* [命令](zh-cn/feature_command.md)
* [消抖 API](zh-cn/feature_debounce_type.md)
* [拨动开关](zh-cn/feature_dip_switch.md)
* [动态宏指令](zh-cn/feature_dynamic_macros.md)
* [编码器](zh-cn/feature_encoders.md)
* [重音号Esc复合键](zh-cn/feature_grave_esc.md)
* [触摸反馈](zh-cn/feature_haptic_feedback.md)
* [HD44780 LCD控制器](zh-cn/feature_hd44780.md)
* [自锁键](zh-cn/feature_key_lock.md)
* [布局](zh-cn/feature_layouts.md)
* [前导键](zh-cn/feature_leader_key.md)
* [LED阵列](zh-cn/feature_led_matrix.md)
* [宏指令](zh-cn/feature_macros.md)
* [鼠标键](zh-cn/feature_mouse_keys.md)
* [OLED驱动](zh-cn/feature_oled_driver.md)
* [一键功能](zh-cn/feature_advanced_keycodes.md#one-shot-keys)
* [指针设备](zh-cn/feature_pointing_device.md)
* [PS/2鼠标](zh-cn/feature_ps2_mouse.md)
* [RGB灯光](zh-cn/feature_rgblight.md)
* [RGB矩阵](zh-cn/feature_rgb_matrix.md)
* [空格候补换挡](zh-cn/feature_space_cadet.md)
* [分体键盘](zh-cn/feature_split_keyboard.md)
* [速录机](zh-cn/feature_stenography.md)
* [换手](zh-cn/feature_swap_hands.md)
* [多击键](zh-cn/feature_tap_dance.md)
@@ -79,28 +98,35 @@
* [用户空间](zh-cn/feature_userspace.md)
* [速度键](zh-cn/feature_velocikey.md)
* 针对制造和定制者
* 制造和定制者指南
* [手工连线指南](zh-cn/hand_wire.md)
* [ISP刷新指南](zh-cn/isp_flashing_guide.md)
* [ARM调试指南](zh-cn/arm_debugging.md)
* [I2C驱动](zh-cn/i2c_driver.md)
* [GPIO控制器](zh-cn/internals_gpio_control.md)
* [ADC设备](zh-cn/adc_driver.md)
* [I2C设备](zh-cn/i2c_driver.md)
* [WS2812设备](zh-cn/ws2812_driver.md)
* [EEPROM设备](zh-cn/eeprom_driver.md)
* [GPIO控制](zh-cn/internals_gpio_control.md)
* [自定义键盘矩阵](zh-cn/custom_matrix.md)
* [Proton C转换](zh-cn/proton_c_conversion.md)
* 深入了解
* [键盘如何工作](zh-cn/how_keyboards_work.md)
* [解QMK](zh-cn/understanding_qmk.md)
* [键盘工作原理](zh-cn/how_keyboards_work.md)
* [深入了解QMK](zh-cn/understanding_qmk.md)
* 其他话题
* [使用Eclipse开发QMK](zh-cn/other_eclipse.md)
* [使用VSCode开发QMK](zh-cn/other_vscode.md)
* [支持](zh-cn/support.md)
* [翻译QMK文档](zh-cn/translating.md)
* QMK 内构 (正在编写)
* [定义](zh-cn/internals_defines.md)
* [输入回调寄存器](zh-cn/internals_input_callback_reg.md)
* [Midi设备](zh-cn/internals_midi_device.md)
* [Midi设备置过程](zh-cn/internals_midi_device_setup_process.md)
* [Midi设备置过程](zh-cn/internals_midi_device_setup_process.md)
* [Midi工具库](zh-cn/internals_midi_util.md)
* [发送函数](zh-cn/internals_send_functions.md)
* [Sysex工具](zh-cn/internals_sysex_tools.md)
<!--fromen:20200126-6:03AM(GMT+8)-->
<!--cn:20200211-11:04AM(GMT+8)-->

View File

@@ -6,7 +6,6 @@ tmk_core/protocol/lufa
tmk_core/protocol/midi
tmk_core/protocol/midi/bytequeue
tmk_core/protocol/midi/Config
tmk_core/protocol/pjrc
tmk_core/protocol/usb_hid
tmk_core/protocol/vusb
tmk_core/tool

View File

@@ -79,14 +79,14 @@ i2c_status_t i2c_start(uint8_t address) {
i2c_status_t i2c_transmit(uint8_t address, const uint8_t* data, uint16_t length, uint16_t timeout) {
i2c_address = address;
i2cStart(&I2C_DRIVER, &i2cconfig);
msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (i2c_address >> 1), data, length, 0, 0, MS2ST(timeout));
msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (i2c_address >> 1), data, length, 0, 0, TIME_MS2I(timeout));
return chibios_to_qmk(&status);
}
i2c_status_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout) {
i2c_address = address;
i2cStart(&I2C_DRIVER, &i2cconfig);
msg_t status = i2cMasterReceiveTimeout(&I2C_DRIVER, (i2c_address >> 1), data, length, MS2ST(timeout));
msg_t status = i2cMasterReceiveTimeout(&I2C_DRIVER, (i2c_address >> 1), data, length, TIME_MS2I(timeout));
return chibios_to_qmk(&status);
}
@@ -100,14 +100,14 @@ i2c_status_t i2c_writeReg(uint8_t devaddr, uint8_t regaddr, const uint8_t* data,
}
complete_packet[0] = regaddr;
msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (i2c_address >> 1), complete_packet, length + 1, 0, 0, MS2ST(timeout));
msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (i2c_address >> 1), complete_packet, length + 1, 0, 0, TIME_MS2I(timeout));
return chibios_to_qmk(&status);
}
i2c_status_t i2c_readReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout) {
i2c_address = devaddr;
i2cStart(&I2C_DRIVER, &i2cconfig);
msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (i2c_address >> 1), &regaddr, 1, data, length, MS2ST(timeout));
msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (i2c_address >> 1), &regaddr, 1, data, length, TIME_MS2I(timeout));
return chibios_to_qmk(&status);
}

View File

@@ -60,7 +60,7 @@ void ws2812_init(void) {
// TODO: more dynamic baudrate
static const SPIConfig spicfg = {
NULL, PAL_PORT(RGB_DI_PIN), PAL_PAD(RGB_DI_PIN),
0, NULL, PAL_PORT(RGB_DI_PIN), PAL_PAD(RGB_DI_PIN),
SPI_CR1_BR_1 | SPI_CR1_BR_0 // baudrate : fpclk / 8 => 1tick is 0.32us (2.25 MHz)
};

View File

@@ -0,0 +1,250 @@
/*
ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
/*
* This file has been automatically generated using ChibiStudio board
* generator plugin. Do not edit manually.
*/
#include "hal.h"
#include "stm32_gpio.h"
/*===========================================================================*/
/* Driver local definitions. */
/*===========================================================================*/
/*===========================================================================*/
/* Driver exported variables. */
/*===========================================================================*/
/*===========================================================================*/
/* Driver local variables and types. */
/*===========================================================================*/
/**
* @brief Type of STM32 GPIO port setup.
*/
typedef struct {
uint32_t moder;
uint32_t otyper;
uint32_t ospeedr;
uint32_t pupdr;
uint32_t odr;
uint32_t afrl;
uint32_t afrh;
} gpio_setup_t;
/**
* @brief Type of STM32 GPIO initialization data.
*/
typedef struct {
#if STM32_HAS_GPIOA || defined(__DOXYGEN__)
gpio_setup_t PAData;
#endif
#if STM32_HAS_GPIOB || defined(__DOXYGEN__)
gpio_setup_t PBData;
#endif
#if STM32_HAS_GPIOC || defined(__DOXYGEN__)
gpio_setup_t PCData;
#endif
#if STM32_HAS_GPIOD || defined(__DOXYGEN__)
gpio_setup_t PDData;
#endif
#if STM32_HAS_GPIOE || defined(__DOXYGEN__)
gpio_setup_t PEData;
#endif
#if STM32_HAS_GPIOF || defined(__DOXYGEN__)
gpio_setup_t PFData;
#endif
#if STM32_HAS_GPIOG || defined(__DOXYGEN__)
gpio_setup_t PGData;
#endif
#if STM32_HAS_GPIOH || defined(__DOXYGEN__)
gpio_setup_t PHData;
#endif
#if STM32_HAS_GPIOI || defined(__DOXYGEN__)
gpio_setup_t PIData;
#endif
#if STM32_HAS_GPIOJ || defined(__DOXYGEN__)
gpio_setup_t PJData;
#endif
#if STM32_HAS_GPIOK || defined(__DOXYGEN__)
gpio_setup_t PKData;
#endif
} gpio_config_t;
/**
* @brief STM32 GPIO static initialization data.
*/
static const gpio_config_t gpio_default_config = {
#if STM32_HAS_GPIOA
{VAL_GPIOA_MODER, VAL_GPIOA_OTYPER, VAL_GPIOA_OSPEEDR, VAL_GPIOA_PUPDR, VAL_GPIOA_ODR, VAL_GPIOA_AFRL, VAL_GPIOA_AFRH},
#endif
#if STM32_HAS_GPIOB
{VAL_GPIOB_MODER, VAL_GPIOB_OTYPER, VAL_GPIOB_OSPEEDR, VAL_GPIOB_PUPDR, VAL_GPIOB_ODR, VAL_GPIOB_AFRL, VAL_GPIOB_AFRH},
#endif
#if STM32_HAS_GPIOC
{VAL_GPIOC_MODER, VAL_GPIOC_OTYPER, VAL_GPIOC_OSPEEDR, VAL_GPIOC_PUPDR, VAL_GPIOC_ODR, VAL_GPIOC_AFRL, VAL_GPIOC_AFRH},
#endif
#if STM32_HAS_GPIOD
{VAL_GPIOD_MODER, VAL_GPIOD_OTYPER, VAL_GPIOD_OSPEEDR, VAL_GPIOD_PUPDR, VAL_GPIOD_ODR, VAL_GPIOD_AFRL, VAL_GPIOD_AFRH},
#endif
#if STM32_HAS_GPIOE
{VAL_GPIOE_MODER, VAL_GPIOE_OTYPER, VAL_GPIOE_OSPEEDR, VAL_GPIOE_PUPDR, VAL_GPIOE_ODR, VAL_GPIOE_AFRL, VAL_GPIOE_AFRH},
#endif
#if STM32_HAS_GPIOF
{VAL_GPIOF_MODER, VAL_GPIOF_OTYPER, VAL_GPIOF_OSPEEDR, VAL_GPIOF_PUPDR, VAL_GPIOF_ODR, VAL_GPIOF_AFRL, VAL_GPIOF_AFRH},
#endif
#if STM32_HAS_GPIOG
{VAL_GPIOG_MODER, VAL_GPIOG_OTYPER, VAL_GPIOG_OSPEEDR, VAL_GPIOG_PUPDR, VAL_GPIOG_ODR, VAL_GPIOG_AFRL, VAL_GPIOG_AFRH},
#endif
#if STM32_HAS_GPIOH
{VAL_GPIOH_MODER, VAL_GPIOH_OTYPER, VAL_GPIOH_OSPEEDR, VAL_GPIOH_PUPDR, VAL_GPIOH_ODR, VAL_GPIOH_AFRL, VAL_GPIOH_AFRH},
#endif
#if STM32_HAS_GPIOI
{VAL_GPIOI_MODER, VAL_GPIOI_OTYPER, VAL_GPIOI_OSPEEDR, VAL_GPIOI_PUPDR, VAL_GPIOI_ODR, VAL_GPIOI_AFRL, VAL_GPIOI_AFRH},
#endif
#if STM32_HAS_GPIOJ
{VAL_GPIOJ_MODER, VAL_GPIOJ_OTYPER, VAL_GPIOJ_OSPEEDR, VAL_GPIOJ_PUPDR, VAL_GPIOJ_ODR, VAL_GPIOJ_AFRL, VAL_GPIOJ_AFRH},
#endif
#if STM32_HAS_GPIOK
{VAL_GPIOK_MODER, VAL_GPIOK_OTYPER, VAL_GPIOK_OSPEEDR, VAL_GPIOK_PUPDR, VAL_GPIOK_ODR, VAL_GPIOK_AFRL, VAL_GPIOK_AFRH}
#endif
};
/*===========================================================================*/
/* Driver local functions. */
/*===========================================================================*/
static void gpio_init(stm32_gpio_t *gpiop, const gpio_setup_t *config) {
gpiop->OTYPER = config->otyper;
gpiop->OSPEEDR = config->ospeedr;
gpiop->PUPDR = config->pupdr;
gpiop->ODR = config->odr;
gpiop->AFRL = config->afrl;
gpiop->AFRH = config->afrh;
gpiop->MODER = config->moder;
}
static void stm32_gpio_init(void) {
/* Enabling GPIO-related clocks, the mask comes from the
registry header file.*/
rccResetAHB(STM32_GPIO_EN_MASK);
rccEnableAHB(STM32_GPIO_EN_MASK, true);
/* Initializing all the defined GPIO ports.*/
#if STM32_HAS_GPIOA
gpio_init(GPIOA, &gpio_default_config.PAData);
#endif
#if STM32_HAS_GPIOB
gpio_init(GPIOB, &gpio_default_config.PBData);
#endif
#if STM32_HAS_GPIOC
gpio_init(GPIOC, &gpio_default_config.PCData);
#endif
#if STM32_HAS_GPIOD
gpio_init(GPIOD, &gpio_default_config.PDData);
#endif
#if STM32_HAS_GPIOE
gpio_init(GPIOE, &gpio_default_config.PEData);
#endif
#if STM32_HAS_GPIOF
gpio_init(GPIOF, &gpio_default_config.PFData);
#endif
#if STM32_HAS_GPIOG
gpio_init(GPIOG, &gpio_default_config.PGData);
#endif
#if STM32_HAS_GPIOH
gpio_init(GPIOH, &gpio_default_config.PHData);
#endif
#if STM32_HAS_GPIOI
gpio_init(GPIOI, &gpio_default_config.PIData);
#endif
#if STM32_HAS_GPIOJ
gpio_init(GPIOJ, &gpio_default_config.PJData);
#endif
#if STM32_HAS_GPIOK
gpio_init(GPIOK, &gpio_default_config.PKData);
#endif
}
/*===========================================================================*/
/* Driver interrupt handlers. */
/*===========================================================================*/
/*===========================================================================*/
/* Driver exported functions. */
/*===========================================================================*/
__attribute__((weak)) void enter_bootloader_mode_if_requested(void) {}
/**
* @brief Early initialization code.
* @details GPIO ports and system clocks are initialized before everything
* else.
*/
void __early_init(void) {
enter_bootloader_mode_if_requested();
stm32_gpio_init();
stm32_clock_init();
}
#if HAL_USE_SDC || defined(__DOXYGEN__)
/**
* @brief SDC card detection.
*/
bool sdc_lld_is_card_inserted(SDCDriver *sdcp) {
(void)sdcp;
/* TODO: Fill the implementation.*/
return true;
}
/**
* @brief SDC card write protection detection.
*/
bool sdc_lld_is_write_protected(SDCDriver *sdcp) {
(void)sdcp;
/* TODO: Fill the implementation.*/
return false;
}
#endif /* HAL_USE_SDC */
#if HAL_USE_MMC_SPI || defined(__DOXYGEN__)
/**
* @brief MMC_SPI card detection.
*/
bool mmc_lld_is_card_inserted(MMCDriver *mmcp) {
(void)mmcp;
/* TODO: Fill the implementation.*/
return true;
}
/**
* @brief MMC_SPI card write protection detection.
*/
bool mmc_lld_is_write_protected(MMCDriver *mmcp) {
(void)mmcp;
/* TODO: Fill the implementation.*/
return false;
}
#endif
/**
* @brief Board-specific initialization code.
* @todo Add your board-specific code, if any.
*/
void boardInit(void) {}

View File

@@ -0,0 +1,407 @@
/*
ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
/*
* This file has been automatically generated using ChibiStudio board
* generator plugin. Do not edit manually.
*/
#ifndef BOARD_H
#define BOARD_H
/*===========================================================================*/
/* Driver constants. */
/*===========================================================================*/
/*
* Setup for Generic STM32_F072 Board
*/
/*
* Board identifier.
*/
#define BOARD_GENERIC_STM32_F072XB
#define BOARD_NAME "STM32_F072"
/*
* Board oscillators-related settings.
* NOTE: LSE not fitted.
* NOTE: HSE not fitted.
*/
#if !defined(STM32_LSECLK)
# define STM32_LSECLK 0U
#endif
#define STM32_LSEDRV (3U << 3U)
#if !defined(STM32_HSECLK)
# define STM32_HSECLK 0U
#endif
#define STM32_HSE_BYPASS
/*
* MCU type as defined in the ST header.
*/
#define STM32F072xB
/*
* IO pins assignments.
*/
#define GPIOA_BUTTON 0U
#define GPIOA_PIN1 1U
#define GPIOA_PIN2 2U
#define GPIOA_PIN3 3U
#define GPIOA_PIN4 4U
#define GPIOA_PIN5 5U
#define GPIOA_PIN6 6U
#define GPIOA_PIN7 7U
#define GPIOA_PIN8 8U
#define GPIOA_PIN9 9U
#define GPIOA_PIN10 10U
#define GPIOA_USB_DM 11U
#define GPIOA_USB_DP 12U
#define GPIOA_SWDIO 13U
#define GPIOA_SWCLK 14U
#define GPIOA_PIN15 15U
#define GPIOB_PIN0 0U
#define GPIOB_PIN1 1U
#define GPIOB_PIN2 2U
#define GPIOB_PIN3 3U
#define GPIOB_PIN4 4U
#define GPIOB_PIN5 5U
#define GPIOB_PIN6 6U
#define GPIOB_PIN7 7U
#define GPIOB_PIN8 8U
#define GPIOB_PIN9 9U
#define GPIOB_PIN10 10U
#define GPIOB_PIN11 11U
#define GPIOB_PIN12 12U
#define GPIOB_SPI2_SCK 13U
#define GPIOB_SPI2_MISO 14U
#define GPIOB_SPI2_MOSI 15U
#define GPIOC_MEMS_CS 0U
#define GPIOC_PIN1 1U
#define GPIOC_PIN2 2U
#define GPIOC_PIN3 3U
#define GPIOC_PIN4 4U
#define GPIOC_PIN5 5U
#define GPIOC_LED_RED 6U
#define GPIOC_LED_BLUE 7U
#define GPIOC_LED_ORANGE 8U
#define GPIOC_LED_GREEN 9U
#define GPIOC_PIN10 10U
#define GPIOC_PIN11 11U
#define GPIOC_PIN12 12U
#define GPIOC_PIN13 13U
#define GPIOC_OSC32_IN 14U
#define GPIOC_OSC32_OUT 15U
#define GPIOD_PIN0 0U
#define GPIOD_PIN1 1U
#define GPIOD_PIN2 2U
#define GPIOD_PIN3 3U
#define GPIOD_PIN4 4U
#define GPIOD_PIN5 5U
#define GPIOD_PIN6 6U
#define GPIOD_PIN7 7U
#define GPIOD_PIN8 8U
#define GPIOD_PIN9 9U
#define GPIOD_PIN10 10U
#define GPIOD_PIN11 11U
#define GPIOD_PIN12 12U
#define GPIOD_PIN13 13U
#define GPIOD_PIN14 14U
#define GPIOD_PIN15 15U
#define GPIOE_PIN0 0U
#define GPIOE_PIN1 1U
#define GPIOE_PIN2 2U
#define GPIOE_PIN3 3U
#define GPIOE_PIN4 4U
#define GPIOE_PIN5 5U
#define GPIOE_PIN6 6U
#define GPIOE_PIN7 7U
#define GPIOE_PIN8 8U
#define GPIOE_PIN9 9U
#define GPIOE_PIN10 10U
#define GPIOE_PIN11 11U
#define GPIOE_PIN12 12U
#define GPIOE_PIN13 13U
#define GPIOE_PIN14 14U
#define GPIOE_PIN15 15U
#define GPIOF_OSC_IN 0U
#define GPIOF_OSC_OUT 1U
#define GPIOF_PIN2 2U
#define GPIOF_PIN3 3U
#define GPIOF_PIN4 4U
#define GPIOF_PIN5 5U
#define GPIOF_PIN6 6U
#define GPIOF_PIN7 7U
#define GPIOF_PIN8 8U
#define GPIOF_PIN9 9U
#define GPIOF_PIN10 10U
#define GPIOF_PIN11 11U
#define GPIOF_PIN12 12U
#define GPIOF_PIN13 13U
#define GPIOF_PIN14 14U
#define GPIOF_PIN15 15U
/*
* IO lines assignments.
*/
#define LINE_BUTTON PAL_LINE(GPIOA, 0U)
#define LINE_USB_DM PAL_LINE(GPIOA, 11U)
#define LINE_USB_DP PAL_LINE(GPIOA, 12U)
#define LINE_SWDIO PAL_LINE(GPIOA, 13U)
#define LINE_SWCLK PAL_LINE(GPIOA, 14U)
#define LINE_SPI2_SCK PAL_LINE(GPIOB, 13U)
#define LINE_SPI2_MISO PAL_LINE(GPIOB, 14U)
#define LINE_SPI2_MOSI PAL_LINE(GPIOB, 15U)
#define LINE_MEMS_CS PAL_LINE(GPIOC, 0U)
#define LINE_LED_RED PAL_LINE(GPIOC, 6U)
#define LINE_LED_BLUE PAL_LINE(GPIOC, 7U)
#define LINE_LED_ORANGE PAL_LINE(GPIOC, 8U)
#define LINE_LED_GREEN PAL_LINE(GPIOC, 9U)
#define LINE_OSC32_IN PAL_LINE(GPIOC, 14U)
#define LINE_OSC32_OUT PAL_LINE(GPIOC, 15U)
#define LINE_OSC_IN PAL_LINE(GPIOF, 0U)
#define LINE_OSC_OUT PAL_LINE(GPIOF, 1U)
/*===========================================================================*/
/* Driver pre-compile time settings. */
/*===========================================================================*/
/*===========================================================================*/
/* Derived constants and error checks. */
/*===========================================================================*/
/*===========================================================================*/
/* Driver data structures and types. */
/*===========================================================================*/
/*===========================================================================*/
/* Driver macros. */
/*===========================================================================*/
/*
* I/O ports initial setup, this configuration is established soon after reset
* in the initialization code.
* Please refer to the STM32 Reference Manual for details.
*/
#define PIN_MODE_INPUT(n) (0U << ((n)*2U))
#define PIN_MODE_OUTPUT(n) (1U << ((n)*2U))
#define PIN_MODE_ALTERNATE(n) (2U << ((n)*2U))
#define PIN_MODE_ANALOG(n) (3U << ((n)*2U))
#define PIN_ODR_LOW(n) (0U << (n))
#define PIN_ODR_HIGH(n) (1U << (n))
#define PIN_OTYPE_PUSHPULL(n) (0U << (n))
#define PIN_OTYPE_OPENDRAIN(n) (1U << (n))
#define PIN_OSPEED_VERYLOW(n) (0U << ((n)*2U))
#define PIN_OSPEED_LOW(n) (1U << ((n)*2U))
#define PIN_OSPEED_MEDIUM(n) (2U << ((n)*2U))
#define PIN_OSPEED_HIGH(n) (3U << ((n)*2U))
#define PIN_PUPDR_FLOATING(n) (0U << ((n)*2U))
#define PIN_PUPDR_PULLUP(n) (1U << ((n)*2U))
#define PIN_PUPDR_PULLDOWN(n) (2U << ((n)*2U))
#define PIN_AFIO_AF(n, v) ((v) << (((n) % 8U) * 4U))
/*
* GPIOA setup:
*
* PA0 - BUTTON (input floating).
* PA1 - PIN1 (input pullup).
* PA2 - PIN2 (input pullup).
* PA3 - PIN3 (input pullup).
* PA4 - PIN4 (input pullup).
* PA5 - PIN5 (input pullup).
* PA6 - PIN6 (input pullup).
* PA7 - PIN7 (input pullup).
* PA8 - PIN8 (input pullup).
* PA9 - PIN9 (input pullup).
* PA10 - PIN10 (input pullup).
* PA11 - USB_DM (input floating).
* PA12 - USB_DP (input floating).
* PA13 - SWDIO (alternate 0).
* PA14 - SWCLK (alternate 0).
* PA15 - PIN15 (input pullup).
*/
#define VAL_GPIOA_MODER (PIN_MODE_INPUT(GPIOA_BUTTON) | PIN_MODE_INPUT(GPIOA_PIN1) | PIN_MODE_INPUT(GPIOA_PIN2) | PIN_MODE_INPUT(GPIOA_PIN3) | PIN_MODE_INPUT(GPIOA_PIN4) | PIN_MODE_INPUT(GPIOA_PIN5) | PIN_MODE_INPUT(GPIOA_PIN6) | PIN_MODE_INPUT(GPIOA_PIN7) | PIN_MODE_INPUT(GPIOA_PIN8) | PIN_MODE_INPUT(GPIOA_PIN9) | PIN_MODE_INPUT(GPIOA_PIN10) | PIN_MODE_INPUT(GPIOA_USB_DM) | PIN_MODE_INPUT(GPIOA_USB_DP) | PIN_MODE_ALTERNATE(GPIOA_SWDIO) | PIN_MODE_ALTERNATE(GPIOA_SWCLK) | PIN_MODE_INPUT(GPIOA_PIN15))
#define VAL_GPIOA_OTYPER (PIN_OTYPE_PUSHPULL(GPIOA_BUTTON) | PIN_OTYPE_PUSHPULL(GPIOA_PIN1) | PIN_OTYPE_PUSHPULL(GPIOA_PIN2) | PIN_OTYPE_PUSHPULL(GPIOA_PIN3) | PIN_OTYPE_PUSHPULL(GPIOA_PIN4) | PIN_OTYPE_PUSHPULL(GPIOA_PIN5) | PIN_OTYPE_PUSHPULL(GPIOA_PIN6) | PIN_OTYPE_PUSHPULL(GPIOA_PIN7) | PIN_OTYPE_PUSHPULL(GPIOA_PIN8) | PIN_OTYPE_PUSHPULL(GPIOA_PIN9) | PIN_OTYPE_PUSHPULL(GPIOA_PIN10) | PIN_OTYPE_PUSHPULL(GPIOA_USB_DM) | PIN_OTYPE_PUSHPULL(GPIOA_USB_DP) | PIN_OTYPE_PUSHPULL(GPIOA_SWDIO) | PIN_OTYPE_PUSHPULL(GPIOA_SWCLK) | PIN_OTYPE_PUSHPULL(GPIOA_PIN15))
#define VAL_GPIOA_OSPEEDR (PIN_OSPEED_VERYLOW(GPIOA_BUTTON) | PIN_OSPEED_VERYLOW(GPIOA_PIN1) | PIN_OSPEED_VERYLOW(GPIOA_PIN2) | PIN_OSPEED_VERYLOW(GPIOA_PIN3) | PIN_OSPEED_VERYLOW(GPIOA_PIN4) | PIN_OSPEED_VERYLOW(GPIOA_PIN5) | PIN_OSPEED_VERYLOW(GPIOA_PIN6) | PIN_OSPEED_VERYLOW(GPIOA_PIN7) | PIN_OSPEED_VERYLOW(GPIOA_PIN8) | PIN_OSPEED_VERYLOW(GPIOA_PIN9) | PIN_OSPEED_VERYLOW(GPIOA_PIN10) | PIN_OSPEED_VERYLOW(GPIOA_USB_DM) | PIN_OSPEED_VERYLOW(GPIOA_USB_DP) | PIN_OSPEED_HIGH(GPIOA_SWDIO) | PIN_OSPEED_HIGH(GPIOA_SWCLK) | PIN_OSPEED_HIGH(GPIOA_PIN15))
#define VAL_GPIOA_PUPDR (PIN_PUPDR_FLOATING(GPIOA_BUTTON) | PIN_PUPDR_PULLUP(GPIOA_PIN1) | PIN_PUPDR_PULLUP(GPIOA_PIN2) | PIN_PUPDR_PULLUP(GPIOA_PIN3) | PIN_PUPDR_PULLUP(GPIOA_PIN4) | PIN_PUPDR_PULLUP(GPIOA_PIN5) | PIN_PUPDR_PULLUP(GPIOA_PIN6) | PIN_PUPDR_PULLUP(GPIOA_PIN7) | PIN_PUPDR_PULLUP(GPIOA_PIN8) | PIN_PUPDR_PULLUP(GPIOA_PIN9) | PIN_PUPDR_PULLUP(GPIOA_PIN10) | PIN_PUPDR_FLOATING(GPIOA_USB_DM) | PIN_PUPDR_FLOATING(GPIOA_USB_DP) | PIN_PUPDR_PULLUP(GPIOA_SWDIO) | PIN_PUPDR_PULLDOWN(GPIOA_SWCLK) | PIN_PUPDR_PULLUP(GPIOA_PIN15))
#define VAL_GPIOA_ODR (PIN_ODR_HIGH(GPIOA_BUTTON) | PIN_ODR_HIGH(GPIOA_PIN1) | PIN_ODR_HIGH(GPIOA_PIN2) | PIN_ODR_HIGH(GPIOA_PIN3) | PIN_ODR_HIGH(GPIOA_PIN4) | PIN_ODR_HIGH(GPIOA_PIN5) | PIN_ODR_HIGH(GPIOA_PIN6) | PIN_ODR_HIGH(GPIOA_PIN7) | PIN_ODR_HIGH(GPIOA_PIN8) | PIN_ODR_HIGH(GPIOA_PIN9) | PIN_ODR_HIGH(GPIOA_PIN10) | PIN_ODR_HIGH(GPIOA_USB_DM) | PIN_ODR_HIGH(GPIOA_USB_DP) | PIN_ODR_HIGH(GPIOA_SWDIO) | PIN_ODR_HIGH(GPIOA_SWCLK) | PIN_ODR_HIGH(GPIOA_PIN15))
#define VAL_GPIOA_AFRL (PIN_AFIO_AF(GPIOA_BUTTON, 0U) | PIN_AFIO_AF(GPIOA_PIN1, 0U) | PIN_AFIO_AF(GPIOA_PIN2, 0U) | PIN_AFIO_AF(GPIOA_PIN3, 0U) | PIN_AFIO_AF(GPIOA_PIN4, 0U) | PIN_AFIO_AF(GPIOA_PIN5, 0U) | PIN_AFIO_AF(GPIOA_PIN6, 0U) | PIN_AFIO_AF(GPIOA_PIN7, 0U))
#define VAL_GPIOA_AFRH (PIN_AFIO_AF(GPIOA_PIN8, 0U) | PIN_AFIO_AF(GPIOA_PIN9, 0U) | PIN_AFIO_AF(GPIOA_PIN10, 0U) | PIN_AFIO_AF(GPIOA_USB_DM, 0U) | PIN_AFIO_AF(GPIOA_USB_DP, 0U) | PIN_AFIO_AF(GPIOA_SWDIO, 0U) | PIN_AFIO_AF(GPIOA_SWCLK, 0U) | PIN_AFIO_AF(GPIOA_PIN15, 0U))
/*
* GPIOB setup:
*
* PB0 - PIN0 (input pullup).
* PB1 - PIN1 (input pullup).
* PB2 - PIN2 (input pullup).
* PB3 - PIN3 (input pullup).
* PB4 - PIN4 (input pullup).
* PB5 - PIN5 (input pullup).
* PB6 - PIN6 (input pullup).
* PB7 - PIN7 (input pullup).
* PB8 - PIN8 (input pullup).
* PB9 - PIN9 (input pullup).
* PB10 - PIN10 (input pullup).
* PB11 - PIN11 (input pullup).
* PB12 - PIN12 (input pullup).
* PB13 - SPI2_SCK (alternate 0).
* PB14 - SPI2_MISO (alternate 0).
* PB15 - SPI2_MOSI (alternate 0).
*/
#define VAL_GPIOB_MODER (PIN_MODE_INPUT(GPIOB_PIN0) | PIN_MODE_INPUT(GPIOB_PIN1) | PIN_MODE_INPUT(GPIOB_PIN2) | PIN_MODE_INPUT(GPIOB_PIN3) | PIN_MODE_INPUT(GPIOB_PIN4) | PIN_MODE_INPUT(GPIOB_PIN5) | PIN_MODE_INPUT(GPIOB_PIN6) | PIN_MODE_INPUT(GPIOB_PIN7) | PIN_MODE_INPUT(GPIOB_PIN8) | PIN_MODE_INPUT(GPIOB_PIN9) | PIN_MODE_INPUT(GPIOB_PIN10) | PIN_MODE_INPUT(GPIOB_PIN11) | PIN_MODE_INPUT(GPIOB_PIN12) | PIN_MODE_ALTERNATE(GPIOB_SPI2_SCK) | PIN_MODE_ALTERNATE(GPIOB_SPI2_MISO) | PIN_MODE_ALTERNATE(GPIOB_SPI2_MOSI))
#define VAL_GPIOB_OTYPER (PIN_OTYPE_PUSHPULL(GPIOB_PIN0) | PIN_OTYPE_PUSHPULL(GPIOB_PIN1) | PIN_OTYPE_PUSHPULL(GPIOB_PIN2) | PIN_OTYPE_PUSHPULL(GPIOB_PIN3) | PIN_OTYPE_PUSHPULL(GPIOB_PIN4) | PIN_OTYPE_PUSHPULL(GPIOB_PIN5) | PIN_OTYPE_PUSHPULL(GPIOB_PIN6) | PIN_OTYPE_PUSHPULL(GPIOB_PIN7) | PIN_OTYPE_PUSHPULL(GPIOB_PIN8) | PIN_OTYPE_PUSHPULL(GPIOB_PIN9) | PIN_OTYPE_PUSHPULL(GPIOB_PIN10) | PIN_OTYPE_PUSHPULL(GPIOB_PIN11) | PIN_OTYPE_PUSHPULL(GPIOB_PIN12) | PIN_OTYPE_PUSHPULL(GPIOB_SPI2_SCK) | PIN_OTYPE_PUSHPULL(GPIOB_SPI2_MISO) | PIN_OTYPE_PUSHPULL(GPIOB_SPI2_MOSI))
#define VAL_GPIOB_OSPEEDR (PIN_OSPEED_VERYLOW(GPIOB_PIN0) | PIN_OSPEED_VERYLOW(GPIOB_PIN1) | PIN_OSPEED_HIGH(GPIOB_PIN2) | PIN_OSPEED_HIGH(GPIOB_PIN3) | PIN_OSPEED_HIGH(GPIOB_PIN4) | PIN_OSPEED_VERYLOW(GPIOB_PIN5) | PIN_OSPEED_VERYLOW(GPIOB_PIN6) | PIN_OSPEED_VERYLOW(GPIOB_PIN7) | PIN_OSPEED_VERYLOW(GPIOB_PIN8) | PIN_OSPEED_VERYLOW(GPIOB_PIN9) | PIN_OSPEED_VERYLOW(GPIOB_PIN10) | PIN_OSPEED_VERYLOW(GPIOB_PIN11) | PIN_OSPEED_VERYLOW(GPIOB_PIN12) | PIN_OSPEED_VERYLOW(GPIOB_SPI2_SCK) | PIN_OSPEED_VERYLOW(GPIOB_SPI2_MISO) | PIN_OSPEED_VERYLOW(GPIOB_SPI2_MOSI))
#define VAL_GPIOB_PUPDR (PIN_PUPDR_PULLUP(GPIOB_PIN0) | PIN_PUPDR_PULLUP(GPIOB_PIN1) | PIN_PUPDR_PULLUP(GPIOB_PIN2) | PIN_PUPDR_PULLUP(GPIOB_PIN3) | PIN_PUPDR_PULLUP(GPIOB_PIN4) | PIN_PUPDR_PULLUP(GPIOB_PIN5) | PIN_PUPDR_PULLUP(GPIOB_PIN6) | PIN_PUPDR_PULLUP(GPIOB_PIN7) | PIN_PUPDR_PULLUP(GPIOB_PIN8) | PIN_PUPDR_PULLUP(GPIOB_PIN9) | PIN_PUPDR_PULLUP(GPIOB_PIN10) | PIN_PUPDR_PULLUP(GPIOB_PIN11) | PIN_PUPDR_PULLUP(GPIOB_PIN12) | PIN_PUPDR_FLOATING(GPIOB_SPI2_SCK) | PIN_PUPDR_FLOATING(GPIOB_SPI2_MISO) | PIN_PUPDR_FLOATING(GPIOB_SPI2_MOSI))
#define VAL_GPIOB_ODR (PIN_ODR_HIGH(GPIOB_PIN0) | PIN_ODR_HIGH(GPIOB_PIN1) | PIN_ODR_HIGH(GPIOB_PIN2) | PIN_ODR_HIGH(GPIOB_PIN3) | PIN_ODR_HIGH(GPIOB_PIN4) | PIN_ODR_HIGH(GPIOB_PIN5) | PIN_ODR_HIGH(GPIOB_PIN6) | PIN_ODR_HIGH(GPIOB_PIN7) | PIN_ODR_HIGH(GPIOB_PIN8) | PIN_ODR_HIGH(GPIOB_PIN9) | PIN_ODR_HIGH(GPIOB_PIN10) | PIN_ODR_HIGH(GPIOB_PIN11) | PIN_ODR_HIGH(GPIOB_PIN12) | PIN_ODR_HIGH(GPIOB_SPI2_SCK) | PIN_ODR_HIGH(GPIOB_SPI2_MISO) | PIN_ODR_HIGH(GPIOB_SPI2_MOSI))
#define VAL_GPIOB_AFRL (PIN_AFIO_AF(GPIOB_PIN0, 0U) | PIN_AFIO_AF(GPIOB_PIN1, 0U) | PIN_AFIO_AF(GPIOB_PIN2, 0U) | PIN_AFIO_AF(GPIOB_PIN3, 0U) | PIN_AFIO_AF(GPIOB_PIN4, 0U) | PIN_AFIO_AF(GPIOB_PIN5, 0U) | PIN_AFIO_AF(GPIOB_PIN6, 0U) | PIN_AFIO_AF(GPIOB_PIN7, 0U))
#define VAL_GPIOB_AFRH (PIN_AFIO_AF(GPIOB_PIN8, 0U) | PIN_AFIO_AF(GPIOB_PIN9, 0U) | PIN_AFIO_AF(GPIOB_PIN10, 0U) | PIN_AFIO_AF(GPIOB_PIN11, 0U) | PIN_AFIO_AF(GPIOB_PIN12, 0U) | PIN_AFIO_AF(GPIOB_SPI2_SCK, 0U) | PIN_AFIO_AF(GPIOB_SPI2_MISO, 0U) | PIN_AFIO_AF(GPIOB_SPI2_MOSI, 0U))
/*
* GPIOC setup:
*
* PC0 - MEMS_CS (output pushpull maximum).
* PC1 - PIN1 (input pullup).
* PC2 - PIN2 (input pullup).
* PC3 - PIN3 (input pullup).
* PC4 - PIN4 (input pullup).
* PC5 - PIN5 (input pullup).
* PC6 - LED_RED (output pushpull maximum).
* PC7 - LED_BLUE (output pushpull maximum).
* PC8 - LED_ORANGE (output pushpull maximum).
* PC9 - LED_GREEN (output pushpull maximum).
* PC10 - PIN10 (input pullup).
* PC11 - PIN11 (input pullup).
* PC12 - PIN12 (input pullup).
* PC13 - PIN13 (input pullup).
* PC14 - OSC32_IN (input floating).
* PC15 - OSC32_OUT (input floating).
*/
#define VAL_GPIOC_MODER (PIN_MODE_OUTPUT(GPIOC_MEMS_CS) | PIN_MODE_INPUT(GPIOC_PIN1) | PIN_MODE_INPUT(GPIOC_PIN2) | PIN_MODE_INPUT(GPIOC_PIN3) | PIN_MODE_INPUT(GPIOC_PIN4) | PIN_MODE_INPUT(GPIOC_PIN5) | PIN_MODE_OUTPUT(GPIOC_LED_RED) | PIN_MODE_OUTPUT(GPIOC_LED_BLUE) | PIN_MODE_OUTPUT(GPIOC_LED_ORANGE) | PIN_MODE_OUTPUT(GPIOC_LED_GREEN) | PIN_MODE_INPUT(GPIOC_PIN10) | PIN_MODE_INPUT(GPIOC_PIN11) | PIN_MODE_INPUT(GPIOC_PIN12) | PIN_MODE_INPUT(GPIOC_PIN13) | PIN_MODE_INPUT(GPIOC_OSC32_IN) | PIN_MODE_INPUT(GPIOC_OSC32_OUT))
#define VAL_GPIOC_OTYPER (PIN_OTYPE_PUSHPULL(GPIOC_MEMS_CS) | PIN_OTYPE_PUSHPULL(GPIOC_PIN1) | PIN_OTYPE_PUSHPULL(GPIOC_PIN2) | PIN_OTYPE_PUSHPULL(GPIOC_PIN3) | PIN_OTYPE_PUSHPULL(GPIOC_PIN4) | PIN_OTYPE_PUSHPULL(GPIOC_PIN5) | PIN_OTYPE_PUSHPULL(GPIOC_LED_RED) | PIN_OTYPE_PUSHPULL(GPIOC_LED_BLUE) | PIN_OTYPE_PUSHPULL(GPIOC_LED_ORANGE) | PIN_OTYPE_PUSHPULL(GPIOC_LED_GREEN) | PIN_OTYPE_PUSHPULL(GPIOC_PIN10) | PIN_OTYPE_PUSHPULL(GPIOC_PIN11) | PIN_OTYPE_PUSHPULL(GPIOC_PIN12) | PIN_OTYPE_PUSHPULL(GPIOC_PIN13) | PIN_OTYPE_PUSHPULL(GPIOC_OSC32_IN) | PIN_OTYPE_PUSHPULL(GPIOC_OSC32_OUT))
#define VAL_GPIOC_OSPEEDR (PIN_OSPEED_HIGH(GPIOC_MEMS_CS) | PIN_OSPEED_VERYLOW(GPIOC_PIN1) | PIN_OSPEED_VERYLOW(GPIOC_PIN2) | PIN_OSPEED_VERYLOW(GPIOC_PIN3) | PIN_OSPEED_VERYLOW(GPIOC_PIN4) | PIN_OSPEED_VERYLOW(GPIOC_PIN5) | PIN_OSPEED_HIGH(GPIOC_LED_RED) | PIN_OSPEED_HIGH(GPIOC_LED_BLUE) | PIN_OSPEED_HIGH(GPIOC_LED_ORANGE) | PIN_OSPEED_HIGH(GPIOC_LED_GREEN) | PIN_OSPEED_VERYLOW(GPIOC_PIN10) | PIN_OSPEED_VERYLOW(GPIOC_PIN11) | PIN_OSPEED_VERYLOW(GPIOC_PIN12) | PIN_OSPEED_VERYLOW(GPIOC_PIN13) | PIN_OSPEED_HIGH(GPIOC_OSC32_IN) | PIN_OSPEED_HIGH(GPIOC_OSC32_OUT))
#define VAL_GPIOC_PUPDR (PIN_PUPDR_FLOATING(GPIOC_MEMS_CS) | PIN_PUPDR_PULLUP(GPIOC_PIN1) | PIN_PUPDR_PULLUP(GPIOC_PIN2) | PIN_PUPDR_PULLUP(GPIOC_PIN3) | PIN_PUPDR_PULLUP(GPIOC_PIN4) | PIN_PUPDR_PULLUP(GPIOC_PIN5) | PIN_PUPDR_FLOATING(GPIOC_LED_RED) | PIN_PUPDR_FLOATING(GPIOC_LED_BLUE) | PIN_PUPDR_FLOATING(GPIOC_LED_ORANGE) | PIN_PUPDR_FLOATING(GPIOC_LED_GREEN) | PIN_PUPDR_PULLUP(GPIOC_PIN10) | PIN_PUPDR_PULLUP(GPIOC_PIN11) | PIN_PUPDR_PULLUP(GPIOC_PIN12) | PIN_PUPDR_PULLUP(GPIOC_PIN13) | PIN_PUPDR_FLOATING(GPIOC_OSC32_IN) | PIN_PUPDR_FLOATING(GPIOC_OSC32_OUT))
#define VAL_GPIOC_ODR (PIN_ODR_HIGH(GPIOC_MEMS_CS) | PIN_ODR_HIGH(GPIOC_PIN1) | PIN_ODR_HIGH(GPIOC_PIN2) | PIN_ODR_HIGH(GPIOC_PIN3) | PIN_ODR_HIGH(GPIOC_PIN4) | PIN_ODR_HIGH(GPIOC_PIN5) | PIN_ODR_LOW(GPIOC_LED_RED) | PIN_ODR_LOW(GPIOC_LED_BLUE) | PIN_ODR_LOW(GPIOC_LED_ORANGE) | PIN_ODR_LOW(GPIOC_LED_GREEN) | PIN_ODR_HIGH(GPIOC_PIN10) | PIN_ODR_HIGH(GPIOC_PIN11) | PIN_ODR_HIGH(GPIOC_PIN12) | PIN_ODR_HIGH(GPIOC_PIN13) | PIN_ODR_HIGH(GPIOC_OSC32_IN) | PIN_ODR_HIGH(GPIOC_OSC32_OUT))
#define VAL_GPIOC_AFRL (PIN_AFIO_AF(GPIOC_MEMS_CS, 0U) | PIN_AFIO_AF(GPIOC_PIN1, 0U) | PIN_AFIO_AF(GPIOC_PIN2, 0U) | PIN_AFIO_AF(GPIOC_PIN3, 0U) | PIN_AFIO_AF(GPIOC_PIN4, 0U) | PIN_AFIO_AF(GPIOC_PIN5, 0U) | PIN_AFIO_AF(GPIOC_LED_RED, 0U) | PIN_AFIO_AF(GPIOC_LED_BLUE, 0U))
#define VAL_GPIOC_AFRH (PIN_AFIO_AF(GPIOC_LED_ORANGE, 0U) | PIN_AFIO_AF(GPIOC_LED_GREEN, 0U) | PIN_AFIO_AF(GPIOC_PIN10, 0U) | PIN_AFIO_AF(GPIOC_PIN11, 0U) | PIN_AFIO_AF(GPIOC_PIN12, 0U) | PIN_AFIO_AF(GPIOC_PIN13, 0U) | PIN_AFIO_AF(GPIOC_OSC32_IN, 0U) | PIN_AFIO_AF(GPIOC_OSC32_OUT, 0U))
/*
* GPIOD setup:
*
* PD0 - PIN0 (input pullup).
* PD1 - PIN1 (input pullup).
* PD2 - PIN2 (input pullup).
* PD3 - PIN3 (input pullup).
* PD4 - PIN4 (input pullup).
* PD5 - PIN5 (input pullup).
* PD6 - PIN6 (input pullup).
* PD7 - PIN7 (input pullup).
* PD8 - PIN8 (input pullup).
* PD9 - PIN9 (input pullup).
* PD10 - PIN10 (input pullup).
* PD11 - PIN11 (input pullup).
* PD12 - PIN12 (input pullup).
* PD13 - PIN13 (input pullup).
* PD14 - PIN14 (input pullup).
* PD15 - PIN15 (input pullup).
*/
#define VAL_GPIOD_MODER (PIN_MODE_INPUT(GPIOD_PIN0) | PIN_MODE_INPUT(GPIOD_PIN1) | PIN_MODE_INPUT(GPIOD_PIN2) | PIN_MODE_INPUT(GPIOD_PIN3) | PIN_MODE_INPUT(GPIOD_PIN4) | PIN_MODE_INPUT(GPIOD_PIN5) | PIN_MODE_INPUT(GPIOD_PIN6) | PIN_MODE_INPUT(GPIOD_PIN7) | PIN_MODE_INPUT(GPIOD_PIN8) | PIN_MODE_INPUT(GPIOD_PIN9) | PIN_MODE_INPUT(GPIOD_PIN10) | PIN_MODE_INPUT(GPIOD_PIN11) | PIN_MODE_INPUT(GPIOD_PIN12) | PIN_MODE_INPUT(GPIOD_PIN13) | PIN_MODE_INPUT(GPIOD_PIN14) | PIN_MODE_INPUT(GPIOD_PIN15))
#define VAL_GPIOD_OTYPER (PIN_OTYPE_PUSHPULL(GPIOD_PIN0) | PIN_OTYPE_PUSHPULL(GPIOD_PIN1) | PIN_OTYPE_PUSHPULL(GPIOD_PIN2) | PIN_OTYPE_PUSHPULL(GPIOD_PIN3) | PIN_OTYPE_PUSHPULL(GPIOD_PIN4) | PIN_OTYPE_PUSHPULL(GPIOD_PIN5) | PIN_OTYPE_PUSHPULL(GPIOD_PIN6) | PIN_OTYPE_PUSHPULL(GPIOD_PIN7) | PIN_OTYPE_PUSHPULL(GPIOD_PIN8) | PIN_OTYPE_PUSHPULL(GPIOD_PIN9) | PIN_OTYPE_PUSHPULL(GPIOD_PIN10) | PIN_OTYPE_PUSHPULL(GPIOD_PIN11) | PIN_OTYPE_PUSHPULL(GPIOD_PIN12) | PIN_OTYPE_PUSHPULL(GPIOD_PIN13) | PIN_OTYPE_PUSHPULL(GPIOD_PIN14) | PIN_OTYPE_PUSHPULL(GPIOD_PIN15))
#define VAL_GPIOD_OSPEEDR (PIN_OSPEED_VERYLOW(GPIOD_PIN0) | PIN_OSPEED_VERYLOW(GPIOD_PIN1) | PIN_OSPEED_VERYLOW(GPIOD_PIN2) | PIN_OSPEED_VERYLOW(GPIOD_PIN3) | PIN_OSPEED_VERYLOW(GPIOD_PIN4) | PIN_OSPEED_VERYLOW(GPIOD_PIN5) | PIN_OSPEED_VERYLOW(GPIOD_PIN6) | PIN_OSPEED_VERYLOW(GPIOD_PIN7) | PIN_OSPEED_VERYLOW(GPIOD_PIN8) | PIN_OSPEED_VERYLOW(GPIOD_PIN9) | PIN_OSPEED_VERYLOW(GPIOD_PIN10) | PIN_OSPEED_VERYLOW(GPIOD_PIN11) | PIN_OSPEED_VERYLOW(GPIOD_PIN12) | PIN_OSPEED_VERYLOW(GPIOD_PIN13) | PIN_OSPEED_VERYLOW(GPIOD_PIN14) | PIN_OSPEED_VERYLOW(GPIOD_PIN15))
#define VAL_GPIOD_PUPDR (PIN_PUPDR_PULLUP(GPIOD_PIN0) | PIN_PUPDR_PULLUP(GPIOD_PIN1) | PIN_PUPDR_PULLUP(GPIOD_PIN2) | PIN_PUPDR_PULLUP(GPIOD_PIN3) | PIN_PUPDR_PULLUP(GPIOD_PIN4) | PIN_PUPDR_PULLUP(GPIOD_PIN5) | PIN_PUPDR_PULLUP(GPIOD_PIN6) | PIN_PUPDR_PULLUP(GPIOD_PIN7) | PIN_PUPDR_PULLUP(GPIOD_PIN8) | PIN_PUPDR_PULLUP(GPIOD_PIN9) | PIN_PUPDR_PULLUP(GPIOD_PIN10) | PIN_PUPDR_PULLUP(GPIOD_PIN11) | PIN_PUPDR_PULLUP(GPIOD_PIN12) | PIN_PUPDR_PULLUP(GPIOD_PIN13) | PIN_PUPDR_PULLUP(GPIOD_PIN14) | PIN_PUPDR_PULLUP(GPIOD_PIN15))
#define VAL_GPIOD_ODR (PIN_ODR_HIGH(GPIOD_PIN0) | PIN_ODR_HIGH(GPIOD_PIN1) | PIN_ODR_HIGH(GPIOD_PIN2) | PIN_ODR_HIGH(GPIOD_PIN3) | PIN_ODR_HIGH(GPIOD_PIN4) | PIN_ODR_HIGH(GPIOD_PIN5) | PIN_ODR_HIGH(GPIOD_PIN6) | PIN_ODR_HIGH(GPIOD_PIN7) | PIN_ODR_HIGH(GPIOD_PIN8) | PIN_ODR_HIGH(GPIOD_PIN9) | PIN_ODR_HIGH(GPIOD_PIN10) | PIN_ODR_HIGH(GPIOD_PIN11) | PIN_ODR_HIGH(GPIOD_PIN12) | PIN_ODR_HIGH(GPIOD_PIN13) | PIN_ODR_HIGH(GPIOD_PIN14) | PIN_ODR_HIGH(GPIOD_PIN15))
#define VAL_GPIOD_AFRL (PIN_AFIO_AF(GPIOD_PIN0, 0U) | PIN_AFIO_AF(GPIOD_PIN1, 0U) | PIN_AFIO_AF(GPIOD_PIN2, 0U) | PIN_AFIO_AF(GPIOD_PIN3, 0U) | PIN_AFIO_AF(GPIOD_PIN4, 0U) | PIN_AFIO_AF(GPIOD_PIN5, 0U) | PIN_AFIO_AF(GPIOD_PIN6, 0U) | PIN_AFIO_AF(GPIOD_PIN7, 0U))
#define VAL_GPIOD_AFRH (PIN_AFIO_AF(GPIOD_PIN8, 0U) | PIN_AFIO_AF(GPIOD_PIN9, 0U) | PIN_AFIO_AF(GPIOD_PIN10, 0U) | PIN_AFIO_AF(GPIOD_PIN11, 0U) | PIN_AFIO_AF(GPIOD_PIN12, 0U) | PIN_AFIO_AF(GPIOD_PIN13, 0U) | PIN_AFIO_AF(GPIOD_PIN14, 0U) | PIN_AFIO_AF(GPIOD_PIN15, 0U))
/*
* GPIOE setup:
*
* PE0 - PIN0 (input pullup).
* PE1 - PIN1 (input pullup).
* PE2 - PIN2 (input pullup).
* PE3 - PIN3 (input pullup).
* PE4 - PIN4 (input pullup).
* PE5 - PIN5 (input pullup).
* PE6 - PIN6 (input pullup).
* PE7 - PIN7 (input pullup).
* PE8 - PIN8 (input pullup).
* PE9 - PIN9 (input pullup).
* PE10 - PIN10 (input pullup).
* PE11 - PIN11 (input pullup).
* PE12 - PIN12 (input pullup).
* PE13 - PIN13 (input pullup).
* PE14 - PIN14 (input pullup).
* PE15 - PIN15 (input pullup).
*/
#define VAL_GPIOE_MODER (PIN_MODE_INPUT(GPIOE_PIN0) | PIN_MODE_INPUT(GPIOE_PIN1) | PIN_MODE_INPUT(GPIOE_PIN2) | PIN_MODE_INPUT(GPIOE_PIN3) | PIN_MODE_INPUT(GPIOE_PIN4) | PIN_MODE_INPUT(GPIOE_PIN5) | PIN_MODE_INPUT(GPIOE_PIN6) | PIN_MODE_INPUT(GPIOE_PIN7) | PIN_MODE_INPUT(GPIOE_PIN8) | PIN_MODE_INPUT(GPIOE_PIN9) | PIN_MODE_INPUT(GPIOE_PIN10) | PIN_MODE_INPUT(GPIOE_PIN11) | PIN_MODE_INPUT(GPIOE_PIN12) | PIN_MODE_INPUT(GPIOE_PIN13) | PIN_MODE_INPUT(GPIOE_PIN14) | PIN_MODE_INPUT(GPIOE_PIN15))
#define VAL_GPIOE_OTYPER (PIN_OTYPE_PUSHPULL(GPIOE_PIN0) | PIN_OTYPE_PUSHPULL(GPIOE_PIN1) | PIN_OTYPE_PUSHPULL(GPIOE_PIN2) | PIN_OTYPE_PUSHPULL(GPIOE_PIN3) | PIN_OTYPE_PUSHPULL(GPIOE_PIN4) | PIN_OTYPE_PUSHPULL(GPIOE_PIN5) | PIN_OTYPE_PUSHPULL(GPIOE_PIN6) | PIN_OTYPE_PUSHPULL(GPIOE_PIN7) | PIN_OTYPE_PUSHPULL(GPIOE_PIN8) | PIN_OTYPE_PUSHPULL(GPIOE_PIN9) | PIN_OTYPE_PUSHPULL(GPIOE_PIN10) | PIN_OTYPE_PUSHPULL(GPIOE_PIN11) | PIN_OTYPE_PUSHPULL(GPIOE_PIN12) | PIN_OTYPE_PUSHPULL(GPIOE_PIN13) | PIN_OTYPE_PUSHPULL(GPIOE_PIN14) | PIN_OTYPE_PUSHPULL(GPIOE_PIN15))
#define VAL_GPIOE_OSPEEDR (PIN_OSPEED_VERYLOW(GPIOE_PIN0) | PIN_OSPEED_VERYLOW(GPIOE_PIN1) | PIN_OSPEED_VERYLOW(GPIOE_PIN2) | PIN_OSPEED_VERYLOW(GPIOE_PIN3) | PIN_OSPEED_VERYLOW(GPIOE_PIN4) | PIN_OSPEED_VERYLOW(GPIOE_PIN5) | PIN_OSPEED_VERYLOW(GPIOE_PIN6) | PIN_OSPEED_VERYLOW(GPIOE_PIN7) | PIN_OSPEED_VERYLOW(GPIOE_PIN8) | PIN_OSPEED_VERYLOW(GPIOE_PIN9) | PIN_OSPEED_VERYLOW(GPIOE_PIN10) | PIN_OSPEED_VERYLOW(GPIOE_PIN11) | PIN_OSPEED_VERYLOW(GPIOE_PIN12) | PIN_OSPEED_VERYLOW(GPIOE_PIN13) | PIN_OSPEED_VERYLOW(GPIOE_PIN14) | PIN_OSPEED_VERYLOW(GPIOE_PIN15))
#define VAL_GPIOE_PUPDR (PIN_PUPDR_PULLUP(GPIOE_PIN0) | PIN_PUPDR_PULLUP(GPIOE_PIN1) | PIN_PUPDR_PULLUP(GPIOE_PIN2) | PIN_PUPDR_PULLUP(GPIOE_PIN3) | PIN_PUPDR_PULLUP(GPIOE_PIN4) | PIN_PUPDR_PULLUP(GPIOE_PIN5) | PIN_PUPDR_PULLUP(GPIOE_PIN6) | PIN_PUPDR_PULLUP(GPIOE_PIN7) | PIN_PUPDR_PULLUP(GPIOE_PIN8) | PIN_PUPDR_PULLUP(GPIOE_PIN9) | PIN_PUPDR_PULLUP(GPIOE_PIN10) | PIN_PUPDR_PULLUP(GPIOE_PIN11) | PIN_PUPDR_PULLUP(GPIOE_PIN12) | PIN_PUPDR_PULLUP(GPIOE_PIN13) | PIN_PUPDR_PULLUP(GPIOE_PIN14) | PIN_PUPDR_PULLUP(GPIOE_PIN15))
#define VAL_GPIOE_ODR (PIN_ODR_HIGH(GPIOE_PIN0) | PIN_ODR_HIGH(GPIOE_PIN1) | PIN_ODR_HIGH(GPIOE_PIN2) | PIN_ODR_HIGH(GPIOE_PIN3) | PIN_ODR_HIGH(GPIOE_PIN4) | PIN_ODR_HIGH(GPIOE_PIN5) | PIN_ODR_HIGH(GPIOE_PIN6) | PIN_ODR_HIGH(GPIOE_PIN7) | PIN_ODR_HIGH(GPIOE_PIN8) | PIN_ODR_HIGH(GPIOE_PIN9) | PIN_ODR_HIGH(GPIOE_PIN10) | PIN_ODR_HIGH(GPIOE_PIN11) | PIN_ODR_HIGH(GPIOE_PIN12) | PIN_ODR_HIGH(GPIOE_PIN13) | PIN_ODR_HIGH(GPIOE_PIN14) | PIN_ODR_HIGH(GPIOE_PIN15))
#define VAL_GPIOE_AFRL (PIN_AFIO_AF(GPIOE_PIN0, 0U) | PIN_AFIO_AF(GPIOE_PIN1, 0U) | PIN_AFIO_AF(GPIOE_PIN2, 0U) | PIN_AFIO_AF(GPIOE_PIN3, 0U) | PIN_AFIO_AF(GPIOE_PIN4, 0U) | PIN_AFIO_AF(GPIOE_PIN5, 0U) | PIN_AFIO_AF(GPIOE_PIN6, 0U) | PIN_AFIO_AF(GPIOE_PIN7, 0U))
#define VAL_GPIOE_AFRH (PIN_AFIO_AF(GPIOE_PIN8, 0U) | PIN_AFIO_AF(GPIOE_PIN9, 0U) | PIN_AFIO_AF(GPIOE_PIN10, 0U) | PIN_AFIO_AF(GPIOE_PIN11, 0U) | PIN_AFIO_AF(GPIOE_PIN12, 0U) | PIN_AFIO_AF(GPIOE_PIN13, 0U) | PIN_AFIO_AF(GPIOE_PIN14, 0U) | PIN_AFIO_AF(GPIOE_PIN15, 0U))
/*
* GPIOF setup:
*
* PF0 - OSC_IN (input floating).
* PF1 - OSC_OUT (input floating).
* PF2 - PIN2 (input pullup).
* PF3 - PIN3 (input pullup).
* PF4 - PIN4 (input pullup).
* PF5 - PIN5 (input pullup).
* PF6 - PIN6 (input pullup).
* PF7 - PIN7 (input pullup).
* PF8 - PIN8 (input pullup).
* PF9 - PIN9 (input pullup).
* PF10 - PIN10 (input pullup).
* PF11 - PIN11 (input pullup).
* PF12 - PIN12 (input pullup).
* PF13 - PIN13 (input pullup).
* PF14 - PIN14 (input pullup).
* PF15 - PIN15 (input pullup).
*/
#define VAL_GPIOF_MODER (PIN_MODE_INPUT(GPIOF_OSC_IN) | PIN_MODE_INPUT(GPIOF_OSC_OUT) | PIN_MODE_INPUT(GPIOF_PIN2) | PIN_MODE_INPUT(GPIOF_PIN3) | PIN_MODE_INPUT(GPIOF_PIN4) | PIN_MODE_INPUT(GPIOF_PIN5) | PIN_MODE_INPUT(GPIOF_PIN6) | PIN_MODE_INPUT(GPIOF_PIN7) | PIN_MODE_INPUT(GPIOF_PIN8) | PIN_MODE_INPUT(GPIOF_PIN9) | PIN_MODE_INPUT(GPIOF_PIN10) | PIN_MODE_INPUT(GPIOF_PIN11) | PIN_MODE_INPUT(GPIOF_PIN12) | PIN_MODE_INPUT(GPIOF_PIN13) | PIN_MODE_INPUT(GPIOF_PIN14) | PIN_MODE_INPUT(GPIOF_PIN15))
#define VAL_GPIOF_OTYPER (PIN_OTYPE_PUSHPULL(GPIOF_OSC_IN) | PIN_OTYPE_PUSHPULL(GPIOF_OSC_OUT) | PIN_OTYPE_PUSHPULL(GPIOF_PIN2) | PIN_OTYPE_PUSHPULL(GPIOF_PIN3) | PIN_OTYPE_PUSHPULL(GPIOF_PIN4) | PIN_OTYPE_PUSHPULL(GPIOF_PIN5) | PIN_OTYPE_PUSHPULL(GPIOF_PIN6) | PIN_OTYPE_PUSHPULL(GPIOF_PIN7) | PIN_OTYPE_PUSHPULL(GPIOF_PIN8) | PIN_OTYPE_PUSHPULL(GPIOF_PIN9) | PIN_OTYPE_PUSHPULL(GPIOF_PIN10) | PIN_OTYPE_PUSHPULL(GPIOF_PIN11) | PIN_OTYPE_PUSHPULL(GPIOF_PIN12) | PIN_OTYPE_PUSHPULL(GPIOF_PIN13) | PIN_OTYPE_PUSHPULL(GPIOF_PIN14) | PIN_OTYPE_PUSHPULL(GPIOF_PIN15))
#define VAL_GPIOF_OSPEEDR (PIN_OSPEED_VERYLOW(GPIOF_OSC_IN) | PIN_OSPEED_VERYLOW(GPIOF_OSC_OUT) | PIN_OSPEED_VERYLOW(GPIOF_PIN2) | PIN_OSPEED_VERYLOW(GPIOF_PIN3) | PIN_OSPEED_VERYLOW(GPIOF_PIN4) | PIN_OSPEED_VERYLOW(GPIOF_PIN5) | PIN_OSPEED_VERYLOW(GPIOF_PIN6) | PIN_OSPEED_VERYLOW(GPIOF_PIN7) | PIN_OSPEED_VERYLOW(GPIOF_PIN8) | PIN_OSPEED_VERYLOW(GPIOF_PIN9) | PIN_OSPEED_VERYLOW(GPIOF_PIN10) | PIN_OSPEED_VERYLOW(GPIOF_PIN11) | PIN_OSPEED_VERYLOW(GPIOF_PIN12) | PIN_OSPEED_VERYLOW(GPIOF_PIN13) | PIN_OSPEED_VERYLOW(GPIOF_PIN14) | PIN_OSPEED_VERYLOW(GPIOF_PIN15))
#define VAL_GPIOF_PUPDR (PIN_PUPDR_FLOATING(GPIOF_OSC_IN) | PIN_PUPDR_FLOATING(GPIOF_OSC_OUT) | PIN_PUPDR_PULLUP(GPIOF_PIN2) | PIN_PUPDR_PULLUP(GPIOF_PIN3) | PIN_PUPDR_PULLUP(GPIOF_PIN4) | PIN_PUPDR_PULLUP(GPIOF_PIN5) | PIN_PUPDR_PULLUP(GPIOF_PIN6) | PIN_PUPDR_PULLUP(GPIOF_PIN7) | PIN_PUPDR_PULLUP(GPIOF_PIN8) | PIN_PUPDR_PULLUP(GPIOF_PIN9) | PIN_PUPDR_PULLUP(GPIOF_PIN10) | PIN_PUPDR_PULLUP(GPIOF_PIN11) | PIN_PUPDR_PULLUP(GPIOF_PIN12) | PIN_PUPDR_PULLUP(GPIOF_PIN13) | PIN_PUPDR_PULLUP(GPIOF_PIN14) | PIN_PUPDR_PULLUP(GPIOF_PIN15))
#define VAL_GPIOF_ODR (PIN_ODR_HIGH(GPIOF_OSC_IN) | PIN_ODR_HIGH(GPIOF_OSC_OUT) | PIN_ODR_HIGH(GPIOF_PIN2) | PIN_ODR_HIGH(GPIOF_PIN3) | PIN_ODR_HIGH(GPIOF_PIN4) | PIN_ODR_HIGH(GPIOF_PIN5) | PIN_ODR_HIGH(GPIOF_PIN6) | PIN_ODR_HIGH(GPIOF_PIN7) | PIN_ODR_HIGH(GPIOF_PIN8) | PIN_ODR_HIGH(GPIOF_PIN9) | PIN_ODR_HIGH(GPIOF_PIN10) | PIN_ODR_HIGH(GPIOF_PIN11) | PIN_ODR_HIGH(GPIOF_PIN12) | PIN_ODR_HIGH(GPIOF_PIN13) | PIN_ODR_HIGH(GPIOF_PIN14) | PIN_ODR_HIGH(GPIOF_PIN15))
#define VAL_GPIOF_AFRL (PIN_AFIO_AF(GPIOF_OSC_IN, 0U) | PIN_AFIO_AF(GPIOF_OSC_OUT, 0U) | PIN_AFIO_AF(GPIOF_PIN2, 0U) | PIN_AFIO_AF(GPIOF_PIN3, 0U) | PIN_AFIO_AF(GPIOF_PIN4, 0U) | PIN_AFIO_AF(GPIOF_PIN5, 0U) | PIN_AFIO_AF(GPIOF_PIN6, 0U) | PIN_AFIO_AF(GPIOF_PIN7, 0U))
#define VAL_GPIOF_AFRH (PIN_AFIO_AF(GPIOF_PIN8, 0U) | PIN_AFIO_AF(GPIOF_PIN9, 0U) | PIN_AFIO_AF(GPIOF_PIN10, 0U) | PIN_AFIO_AF(GPIOF_PIN11, 0U) | PIN_AFIO_AF(GPIOF_PIN12, 0U) | PIN_AFIO_AF(GPIOF_PIN13, 0U) | PIN_AFIO_AF(GPIOF_PIN14, 0U) | PIN_AFIO_AF(GPIOF_PIN15, 0U))
/*===========================================================================*/
/* External declarations. */
/*===========================================================================*/
#if !defined(_FROM_ASM_)
# ifdef __cplusplus
extern "C" {
# endif
void boardInit(void);
# ifdef __cplusplus
}
# endif
#endif /* _FROM_ASM_ */
#endif /* BOARD_H */

View File

@@ -0,0 +1,9 @@
# List of all the board related files.
BOARDSRC = $(BOARD_PATH)/boards/GENERIC_STM32_F072XB/board.c
# Required include directories
BOARDINC = $(BOARD_PATH)/boards/GENERIC_STM32_F072XB
# Shared variables
ALLCSRC += $(BOARDSRC)
ALLINC += $(BOARDINC)

View File

@@ -0,0 +1,703 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- STM32F0xx board Template -->
<board
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://www.chibios.org/xml/schema/boards/stm32f0xx_board.xsd">
<configuration_settings>
<templates_path>resources/gencfg/processors/boards/stm32f0xx/templates</templates_path>
<output_path>..</output_path>
<hal_version>5.0.x</hal_version>
</configuration_settings>
<board_name>ST STM32F072B-Discovery</board_name>
<board_id>ST_STM32F072B_DISCOVERY</board_id>
<board_functions></board_functions>
<subtype>STM32F072xB</subtype>
<clocks HSEFrequency="0" HSEBypass="true" LSEFrequency="0"
LSEBypass="false" LSEDrive="3 High Drive (default)" />
<ports>
<GPIOA>
<pin0
ID="BUTTON"
Type="PushPull"
Speed="Minimum"
Resistor="Floating"
Level="High"
Mode="Input"
Alternate="0" />
<pin1
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin2
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin3
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin4
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin5
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin6
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin7
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin8
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin9
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin10
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin11
ID="USB_DM"
Type="PushPull"
Speed="Minimum"
Resistor="Floating"
Level="High"
Mode="Input"
Alternate="0" />
<pin12
ID="USB_DP"
Type="PushPull"
Speed="Minimum"
Resistor="Floating"
Level="High"
Mode="Input"
Alternate="0" />
<pin13
ID="SWDIO"
Type="PushPull"
Speed="Maximum"
Resistor="PullUp"
Level="High"
Mode="Alternate"
Alternate="0" />
<pin14
ID="SWCLK"
Type="PushPull"
Speed="Maximum"
Resistor="PullDown"
Level="High"
Mode="Alternate"
Alternate="0" />
<pin15
ID=""
Type="PushPull"
Speed="Maximum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
</GPIOA>
<GPIOB>
<pin0
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin1
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin2
ID=""
Type="PushPull"
Speed="Maximum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin3
ID=""
Type="PushPull"
Speed="Maximum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin4
ID=""
Type="PushPull"
Speed="Maximum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin5
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin6
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin7
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin8
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin9
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin10
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin11
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin12
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin13
ID="SPI2_SCK"
Type="PushPull"
Speed="Minimum"
Resistor="Floating"
Level="High"
Mode="Alternate"
Alternate="0" />
<pin14
ID="SPI2_MISO"
Type="PushPull"
Speed="Minimum"
Resistor="Floating"
Level="High"
Mode="Alternate"
Alternate="0" />
<pin15
ID="SPI2_MOSI"
Type="PushPull"
Speed="Minimum"
Resistor="Floating"
Level="High"
Mode="Alternate"
Alternate="0" />
</GPIOB>
<GPIOC>
<pin0
ID="MEMS_CS"
Type="PushPull"
Speed="Maximum"
Resistor="Floating"
Level="High"
Mode="Output"
Alternate="0" />
<pin1
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin2
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin3
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin4
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin5
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin6
ID="LED_RED"
Type="PushPull"
Speed="Maximum"
Resistor="Floating"
Level="Low"
Mode="Output"
Alternate="0" />
<pin7
ID="LED_BLUE"
Type="PushPull"
Speed="Maximum"
Resistor="Floating"
Level="Low"
Mode="Output"
Alternate="0" />
<pin8
ID="LED_ORANGE"
Type="PushPull"
Speed="Maximum"
Resistor="Floating"
Level="Low"
Mode="Output"
Alternate="0" ></pin8>
<pin9
ID="LED_GREEN"
Type="PushPull"
Speed="Maximum"
Resistor="Floating"
Level="Low"
Mode="Output"
Alternate="0" />
<pin10
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin11
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin12
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin13
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin14
ID="OSC32_IN"
Type="PushPull"
Speed="Maximum"
Resistor="Floating"
Level="High"
Mode="Input"
Alternate="0" />
<pin15
ID="OSC32_OUT"
Type="PushPull"
Speed="Maximum"
Resistor="Floating"
Level="High"
Mode="Input"
Alternate="0" />
</GPIOC>
<GPIOD>
<pin0
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin1
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin2
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin3
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin4
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin5
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin6
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin7
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin8
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin9
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin10
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin11
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin12
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin13
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin14
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin15
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
</GPIOD>
<GPIOE>
<pin0 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
Level="High" Mode="Input" Alternate="0" />
<pin1 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
Level="High" Mode="Input" Alternate="0" />
<pin2 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
Level="High" Mode="Input" Alternate="0" />
<pin3 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
Level="High" Mode="Input" Alternate="0" />
<pin4 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
Level="High" Mode="Input" Alternate="0" />
<pin5 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
Level="High" Mode="Input" Alternate="0" />
<pin6 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
Level="High" Mode="Input" Alternate="0" />
<pin7 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
Level="High" Mode="Input" Alternate="0" />
<pin8 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
Level="High" Mode="Input" Alternate="0" />
<pin9 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
Level="High" Mode="Input" Alternate="0" />
<pin10 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
Level="High" Mode="Input" Alternate="0" />
<pin11 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
Level="High" Mode="Input" Alternate="0" />
<pin12 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
Level="High" Mode="Input" Alternate="0" />
<pin13 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
Level="High" Mode="Input" Alternate="0" />
<pin14 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
Level="High" Mode="Input" Alternate="0" />
<pin15 ID="" Type="PushPull" Speed="Minimum" Resistor="PullUp"
Level="High" Mode="Input" Alternate="0" />
</GPIOE>
<GPIOF>
<pin0
ID="OSC_IN"
Type="PushPull"
Speed="Minimum"
Resistor="Floating"
Level="High"
Mode="Input"
Alternate="0" />
<pin1
ID="OSC_OUT"
Type="PushPull"
Speed="Minimum"
Resistor="Floating"
Level="High"
Mode="Input"
Alternate="0" />
<pin2
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin3
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin4
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin5
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin6
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin7
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin8
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin9
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin10
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin11
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin12
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin13
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin14
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
<pin15
ID=""
Type="PushPull"
Speed="Minimum"
Resistor="PullUp"
Level="High"
Mode="Input"
Alternate="0" />
</GPIOF>
</ports>
</board>

View File

@@ -0,0 +1,15 @@
sourceRoot: ../../../../../tools/ftl/processors/boards/stm32f0xx/templates
outputRoot: ..
dataRoot: .
freemarkerLinks: {
lib: ../../../../../tools/ftl/libs
}
data : {
doc1:xml (
board.chcfg
{
}
)
}

View File

@@ -14,44 +14,172 @@
limitations under the License.
*/
#include "hal.h"
#if HAL_USE_PAL || defined(__DOXYGEN__)
/**
* @brief PAL setup.
* @details Digital I/O ports static configuration as defined in @p board.h.
* This variable is used by the HAL when initializing the PAL driver.
/*
* This file has been automatically generated using ChibiStudio board
* generator plugin. Do not edit manually.
*/
const PALConfig pal_default_config = {
# if STM32_HAS_GPIOA
{VAL_GPIOA_MODER, VAL_GPIOA_OTYPER, VAL_GPIOA_OSPEEDR, VAL_GPIOA_PUPDR, VAL_GPIOA_ODR, VAL_GPIOA_AFRL, VAL_GPIOA_AFRH},
# endif
# if STM32_HAS_GPIOB
{VAL_GPIOB_MODER, VAL_GPIOB_OTYPER, VAL_GPIOB_OSPEEDR, VAL_GPIOB_PUPDR, VAL_GPIOB_ODR, VAL_GPIOB_AFRL, VAL_GPIOB_AFRH},
# endif
# if STM32_HAS_GPIOC
{VAL_GPIOC_MODER, VAL_GPIOC_OTYPER, VAL_GPIOC_OSPEEDR, VAL_GPIOC_PUPDR, VAL_GPIOC_ODR, VAL_GPIOC_AFRL, VAL_GPIOC_AFRH},
# endif
# if STM32_HAS_GPIOD
{VAL_GPIOD_MODER, VAL_GPIOD_OTYPER, VAL_GPIOD_OSPEEDR, VAL_GPIOD_PUPDR, VAL_GPIOD_ODR, VAL_GPIOD_AFRL, VAL_GPIOD_AFRH},
# endif
# if STM32_HAS_GPIOE
{VAL_GPIOE_MODER, VAL_GPIOE_OTYPER, VAL_GPIOE_OSPEEDR, VAL_GPIOE_PUPDR, VAL_GPIOE_ODR, VAL_GPIOE_AFRL, VAL_GPIOE_AFRH},
# endif
# if STM32_HAS_GPIOF
{VAL_GPIOF_MODER, VAL_GPIOF_OTYPER, VAL_GPIOF_OSPEEDR, VAL_GPIOF_PUPDR, VAL_GPIOF_ODR, VAL_GPIOF_AFRL, VAL_GPIOF_AFRH},
# endif
# if STM32_HAS_GPIOG
{VAL_GPIOG_MODER, VAL_GPIOG_OTYPER, VAL_GPIOG_OSPEEDR, VAL_GPIOG_PUPDR, VAL_GPIOG_ODR, VAL_GPIOG_AFRL, VAL_GPIOG_AFRH},
# endif
# if STM32_HAS_GPIOH
{VAL_GPIOH_MODER, VAL_GPIOH_OTYPER, VAL_GPIOH_OSPEEDR, VAL_GPIOH_PUPDR, VAL_GPIOH_ODR, VAL_GPIOH_AFRL, VAL_GPIOH_AFRH},
# endif
# if STM32_HAS_GPIOI
{VAL_GPIOI_MODER, VAL_GPIOI_OTYPER, VAL_GPIOI_OSPEEDR, VAL_GPIOI_PUPDR, VAL_GPIOI_ODR, VAL_GPIOI_AFRL, VAL_GPIOI_AFRH}
# endif
};
#include "hal.h"
#include "stm32_gpio.h"
/*===========================================================================*/
/* Driver local definitions. */
/*===========================================================================*/
/*===========================================================================*/
/* Driver exported variables. */
/*===========================================================================*/
/*===========================================================================*/
/* Driver local variables and types. */
/*===========================================================================*/
/**
* @brief Type of STM32 GPIO port setup.
*/
typedef struct {
uint32_t moder;
uint32_t otyper;
uint32_t ospeedr;
uint32_t pupdr;
uint32_t odr;
uint32_t afrl;
uint32_t afrh;
} gpio_setup_t;
/**
* @brief Type of STM32 GPIO initialization data.
*/
typedef struct {
#if STM32_HAS_GPIOA || defined(__DOXYGEN__)
gpio_setup_t PAData;
#endif
#if STM32_HAS_GPIOB || defined(__DOXYGEN__)
gpio_setup_t PBData;
#endif
#if STM32_HAS_GPIOC || defined(__DOXYGEN__)
gpio_setup_t PCData;
#endif
#if STM32_HAS_GPIOD || defined(__DOXYGEN__)
gpio_setup_t PDData;
#endif
#if STM32_HAS_GPIOE || defined(__DOXYGEN__)
gpio_setup_t PEData;
#endif
#if STM32_HAS_GPIOF || defined(__DOXYGEN__)
gpio_setup_t PFData;
#endif
#if STM32_HAS_GPIOG || defined(__DOXYGEN__)
gpio_setup_t PGData;
#endif
#if STM32_HAS_GPIOH || defined(__DOXYGEN__)
gpio_setup_t PHData;
#endif
#if STM32_HAS_GPIOI || defined(__DOXYGEN__)
gpio_setup_t PIData;
#endif
#if STM32_HAS_GPIOJ || defined(__DOXYGEN__)
gpio_setup_t PJData;
#endif
#if STM32_HAS_GPIOK || defined(__DOXYGEN__)
gpio_setup_t PKData;
#endif
} gpio_config_t;
/**
* @brief STM32 GPIO static initialization data.
*/
static const gpio_config_t gpio_default_config = {
#if STM32_HAS_GPIOA
{VAL_GPIOA_MODER, VAL_GPIOA_OTYPER, VAL_GPIOA_OSPEEDR, VAL_GPIOA_PUPDR, VAL_GPIOA_ODR, VAL_GPIOA_AFRL, VAL_GPIOA_AFRH},
#endif
#if STM32_HAS_GPIOB
{VAL_GPIOB_MODER, VAL_GPIOB_OTYPER, VAL_GPIOB_OSPEEDR, VAL_GPIOB_PUPDR, VAL_GPIOB_ODR, VAL_GPIOB_AFRL, VAL_GPIOB_AFRH},
#endif
#if STM32_HAS_GPIOC
{VAL_GPIOC_MODER, VAL_GPIOC_OTYPER, VAL_GPIOC_OSPEEDR, VAL_GPIOC_PUPDR, VAL_GPIOC_ODR, VAL_GPIOC_AFRL, VAL_GPIOC_AFRH},
#endif
#if STM32_HAS_GPIOD
{VAL_GPIOD_MODER, VAL_GPIOD_OTYPER, VAL_GPIOD_OSPEEDR, VAL_GPIOD_PUPDR, VAL_GPIOD_ODR, VAL_GPIOD_AFRL, VAL_GPIOD_AFRH},
#endif
#if STM32_HAS_GPIOE
{VAL_GPIOE_MODER, VAL_GPIOE_OTYPER, VAL_GPIOE_OSPEEDR, VAL_GPIOE_PUPDR, VAL_GPIOE_ODR, VAL_GPIOE_AFRL, VAL_GPIOE_AFRH},
#endif
#if STM32_HAS_GPIOF
{VAL_GPIOF_MODER, VAL_GPIOF_OTYPER, VAL_GPIOF_OSPEEDR, VAL_GPIOF_PUPDR, VAL_GPIOF_ODR, VAL_GPIOF_AFRL, VAL_GPIOF_AFRH},
#endif
#if STM32_HAS_GPIOG
{VAL_GPIOG_MODER, VAL_GPIOG_OTYPER, VAL_GPIOG_OSPEEDR, VAL_GPIOG_PUPDR, VAL_GPIOG_ODR, VAL_GPIOG_AFRL, VAL_GPIOG_AFRH},
#endif
#if STM32_HAS_GPIOH
{VAL_GPIOH_MODER, VAL_GPIOH_OTYPER, VAL_GPIOH_OSPEEDR, VAL_GPIOH_PUPDR, VAL_GPIOH_ODR, VAL_GPIOH_AFRL, VAL_GPIOH_AFRH},
#endif
#if STM32_HAS_GPIOI
{VAL_GPIOI_MODER, VAL_GPIOI_OTYPER, VAL_GPIOI_OSPEEDR, VAL_GPIOI_PUPDR, VAL_GPIOI_ODR, VAL_GPIOI_AFRL, VAL_GPIOI_AFRH},
#endif
#if STM32_HAS_GPIOJ
{VAL_GPIOJ_MODER, VAL_GPIOJ_OTYPER, VAL_GPIOJ_OSPEEDR, VAL_GPIOJ_PUPDR, VAL_GPIOJ_ODR, VAL_GPIOJ_AFRL, VAL_GPIOJ_AFRH},
#endif
#if STM32_HAS_GPIOK
{VAL_GPIOK_MODER, VAL_GPIOK_OTYPER, VAL_GPIOK_OSPEEDR, VAL_GPIOK_PUPDR, VAL_GPIOK_ODR, VAL_GPIOK_AFRL, VAL_GPIOK_AFRH}
#endif
};
/*===========================================================================*/
/* Driver local functions. */
/*===========================================================================*/
static void gpio_init(stm32_gpio_t *gpiop, const gpio_setup_t *config) {
gpiop->OTYPER = config->otyper;
gpiop->OSPEEDR = config->ospeedr;
gpiop->PUPDR = config->pupdr;
gpiop->ODR = config->odr;
gpiop->AFRL = config->afrl;
gpiop->AFRH = config->afrh;
gpiop->MODER = config->moder;
}
static void stm32_gpio_init(void) {
/* Enabling GPIO-related clocks, the mask comes from the
registry header file.*/
rccResetAHB(STM32_GPIO_EN_MASK);
rccEnableAHB(STM32_GPIO_EN_MASK, true);
/* Initializing all the defined GPIO ports.*/
#if STM32_HAS_GPIOA
gpio_init(GPIOA, &gpio_default_config.PAData);
#endif
#if STM32_HAS_GPIOB
gpio_init(GPIOB, &gpio_default_config.PBData);
#endif
#if STM32_HAS_GPIOC
gpio_init(GPIOC, &gpio_default_config.PCData);
#endif
#if STM32_HAS_GPIOD
gpio_init(GPIOD, &gpio_default_config.PDData);
#endif
#if STM32_HAS_GPIOE
gpio_init(GPIOE, &gpio_default_config.PEData);
#endif
#if STM32_HAS_GPIOF
gpio_init(GPIOF, &gpio_default_config.PFData);
#endif
#if STM32_HAS_GPIOG
gpio_init(GPIOG, &gpio_default_config.PGData);
#endif
#if STM32_HAS_GPIOH
gpio_init(GPIOH, &gpio_default_config.PHData);
#endif
#if STM32_HAS_GPIOI
gpio_init(GPIOI, &gpio_default_config.PIData);
#endif
#if STM32_HAS_GPIOJ
gpio_init(GPIOJ, &gpio_default_config.PJData);
#endif
#if STM32_HAS_GPIOK
gpio_init(GPIOK, &gpio_default_config.PKData);
#endif
}
void enter_bootloader_mode_if_requested(void);
@@ -62,6 +190,8 @@ void enter_bootloader_mode_if_requested(void);
*/
void __early_init(void) {
enter_bootloader_mode_if_requested();
stm32_gpio_init();
stm32_clock_init();
}

View File

@@ -24,8 +24,8 @@
/*
* Board identifier.
*/
#define BOARD_GENERIC_STM32_F103
#define BOARD_NAME "Generic STM32F103x board"
#define BOARD_STM32_F103_STM32DUINO
#define BOARD_NAME "GENERIC STM32F103C8T6 board - stm32duino bootloader"
/*
* Board frequencies.

View File

@@ -0,0 +1,5 @@
# List of all the board related files.
BOARDSRC = $(BOARD_PATH)/boards/STM32_F103_STM32DUINO/board.c
# Required include directories
BOARDINC = $(BOARD_PATH)/boards/STM32_F103_STM32DUINO

View File

@@ -0,0 +1,46 @@
/* Copyright 2019 Nick Brassel (tzarc)
*
* 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 <stdint.h>
#include <string.h>
#include "eeprom_driver.h"
void eeprom_driver_init(void) {
/* Any initialisation code */
}
void eeprom_driver_erase(void) {
/* Wipe out the EEPROM, setting values to zero */
}
void eeprom_read_block(void *buf, const void *addr, size_t len) {
/*
Read a block of data:
buf: target buffer
addr: 0-based offset within the EEPROM
len: length to read
*/
}
void eeprom_write_block(const void *buf, void *addr, size_t len) {
/*
Write a block of data:
buf: target buffer
addr: 0-based offset within the EEPROM
len: length to write
*/
}

View File

@@ -0,0 +1,73 @@
/* Copyright 2019 Nick Brassel (tzarc)
*
* 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 <stdint.h>
#include <string.h>
#include "eeprom_driver.h"
uint8_t eeprom_read_byte(const uint8_t *addr) {
uint8_t ret;
eeprom_read_block(&ret, addr, 1);
return ret;
}
uint16_t eeprom_read_word(const uint16_t *addr) {
uint16_t ret;
eeprom_read_block(&ret, addr, 2);
return ret;
}
uint32_t eeprom_read_dword(const uint32_t *addr) {
uint32_t ret;
eeprom_read_block(&ret, addr, 4);
return ret;
}
void eeprom_write_byte(uint8_t *addr, uint8_t value) { eeprom_write_block(&value, addr, 1); }
void eeprom_write_word(uint16_t *addr, uint16_t value) { eeprom_write_block(&value, addr, 2); }
void eeprom_write_dword(uint32_t *addr, uint32_t value) { eeprom_write_block(&value, addr, 4); }
void eeprom_update_block(const void *buf, void *addr, size_t len) {
uint8_t read_buf[len];
eeprom_read_block(read_buf, addr, len);
if (memcmp(buf, read_buf, len) != 0) {
eeprom_write_block(buf, addr, len);
}
}
void eeprom_update_byte(uint8_t *addr, uint8_t value) {
uint8_t orig = eeprom_read_byte(addr);
if (orig != value) {
eeprom_write_byte(addr, value);
}
}
void eeprom_update_word(uint16_t *addr, uint16_t value) {
uint16_t orig = eeprom_read_word(addr);
if (orig != value) {
eeprom_write_word(addr, value);
}
}
void eeprom_update_dword(uint32_t *addr, uint32_t value) {
uint32_t orig = eeprom_read_dword(addr);
if (orig != value) {
eeprom_write_dword(addr, value);
}
}

View File

@@ -0,0 +1,22 @@
/* Copyright 2019 Nick Brassel (tzarc)
*
* 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 "eeprom.h"
void eeprom_driver_init(void);
void eeprom_driver_erase(void);

120
drivers/eeprom/eeprom_i2c.c Normal file
View File

@@ -0,0 +1,120 @@
/* Copyright 2019 Nick Brassel (tzarc)
*
* 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 <stdint.h>
#include <string.h>
/*
Note that the implementations of eeprom_XXXX_YYYY on AVR are normally
provided by avr-libc. The same functions are reimplemented below and are
rerouted to the external i2c equivalent.
Seemingly, as this is compiled from within QMK, the object file generated
during the build overrides the avr-libc implementation during the linking
stage.
On other platforms such as ARM, there are no provided implementations, so
there is nothing to override during linkage.
*/
#include "wait.h"
#include "i2c_master.h"
#include "eeprom.h"
#include "eeprom_i2c.h"
// #define DEBUG_EEPROM_OUTPUT
#ifdef DEBUG_EEPROM_OUTPUT
# include "print.h"
#endif // DEBUG_EEPROM_OUTPUT
static inline void init_i2c_if_required(void) {
static int done = 0;
if (!done) {
i2c_init();
done = 1;
}
}
static inline void fill_target_address(uint8_t *buffer, const void *addr) {
intptr_t p = (intptr_t)addr;
for (int i = 0; i < EXTERNAL_EEPROM_ADDRESS_SIZE; ++i) {
buffer[EXTERNAL_EEPROM_ADDRESS_SIZE - 1 - i] = p & 0xFF;
p >>= 8;
}
}
void eeprom_driver_init(void) {}
void eeprom_driver_erase(void) {
uint8_t buf[EXTERNAL_EEPROM_PAGE_SIZE];
memset(buf, 0x00, EXTERNAL_EEPROM_PAGE_SIZE);
for (intptr_t addr = 0; addr < EXTERNAL_EEPROM_BYTE_COUNT; addr += EXTERNAL_EEPROM_PAGE_SIZE) {
eeprom_write_block(buf, (void *)addr, EXTERNAL_EEPROM_PAGE_SIZE);
}
}
void eeprom_read_block(void *buf, const void *addr, size_t len) {
uint8_t complete_packet[EXTERNAL_EEPROM_ADDRESS_SIZE];
fill_target_address(complete_packet, addr);
init_i2c_if_required();
i2c_transmit(EXTERNAL_EEPROM_I2C_ADDRESS((intptr_t)addr), complete_packet, EXTERNAL_EEPROM_ADDRESS_SIZE, 100);
i2c_receive(EXTERNAL_EEPROM_I2C_ADDRESS((intptr_t)addr), buf, len, 100);
#ifdef DEBUG_EEPROM_OUTPUT
dprintf("[EEPROM R] 0x%04X: ", ((int)addr));
for (size_t i = 0; i < len; ++i) {
dprintf(" %02X", (int)(((uint8_t *)buf)[i]));
}
dprintf("\n");
#endif // DEBUG_EEPROM_OUTPUT
}
void eeprom_write_block(const void *buf, void *addr, size_t len) {
uint8_t complete_packet[EXTERNAL_EEPROM_ADDRESS_SIZE + EXTERNAL_EEPROM_PAGE_SIZE];
uint8_t *read_buf = (uint8_t *)buf;
intptr_t target_addr = (intptr_t)addr;
init_i2c_if_required();
while (len > 0) {
intptr_t page_offset = target_addr % EXTERNAL_EEPROM_PAGE_SIZE;
int write_length = EXTERNAL_EEPROM_PAGE_SIZE - page_offset;
if (write_length > len) {
write_length = len;
}
fill_target_address(complete_packet, (const void *)target_addr);
for (uint8_t i = 0; i < write_length; i++) {
complete_packet[EXTERNAL_EEPROM_ADDRESS_SIZE + i] = read_buf[i];
}
#ifdef DEBUG_EEPROM_OUTPUT
dprintf("[EEPROM W] 0x%04X: ", ((int)target_addr));
for (uint8_t i = 0; i < write_length; i++) {
dprintf(" %02X", (int)(read_buf[i]));
}
dprintf("\n");
#endif // DEBUG_EEPROM_OUTPUT
i2c_transmit(EXTERNAL_EEPROM_I2C_ADDRESS((intptr_t)addr), complete_packet, EXTERNAL_EEPROM_ADDRESS_SIZE + write_length, 100);
wait_ms(EXTERNAL_EEPROM_WRITE_TIME);
read_buf += write_length;
target_addr += write_length;
len -= write_length;
}
}

115
drivers/eeprom/eeprom_i2c.h Normal file
View File

@@ -0,0 +1,115 @@
/* Copyright 2019 Nick Brassel (tzarc)
*
* 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
/*
Default device configurations:
For the Sparkfun Qwiic I2C EEPROM module: https://www.sparkfun.com/products/14764
#define EEPROM_I2C_CAT24C512 // (part number 24512A)
#define EEPROM_I2C_RM24C512C // (part number 24512C)
For the Sparkfun I2C EEPROM chip: https://www.sparkfun.com/products/525
#define EEPROM_I2C_24LC256
For the Adafruit I2C FRAM chip: https://www.adafruit.com/product/1895
#define EEPROM_I2C_MB85RC256V
*/
#if defined(EEPROM_I2C_CAT24C512)
# define EXTERNAL_EEPROM_BYTE_COUNT 65536
# define EXTERNAL_EEPROM_PAGE_SIZE 128
# define EXTERNAL_EEPROM_ADDRESS_SIZE 2
# define EXTERNAL_EEPROM_WRITE_TIME 5
#elif defined(EEPROM_I2C_RM24C512C)
# define EXTERNAL_EEPROM_BYTE_COUNT 65536
# define EXTERNAL_EEPROM_PAGE_SIZE 128
# define EXTERNAL_EEPROM_ADDRESS_SIZE 2
# define EXTERNAL_EEPROM_WRITE_TIME 3
#elif defined(EEPROM_I2C_24LC256)
# define EXTERNAL_EEPROM_BYTE_COUNT 32768
# define EXTERNAL_EEPROM_PAGE_SIZE 64
# define EXTERNAL_EEPROM_ADDRESS_SIZE 2
# define EXTERNAL_EEPROM_WRITE_TIME 5
#elif defined(EEPROM_I2C_24LC128)
# define EXTERNAL_EEPROM_BYTE_COUNT 16384
# define EXTERNAL_EEPROM_PAGE_SIZE 64
# define EXTERNAL_EEPROM_ADDRESS_SIZE 2
# define EXTERNAL_EEPROM_WRITE_TIME 5
#elif defined(EEPROM_I2C_MB85RC256V)
# define EXTERNAL_EEPROM_BYTE_COUNT 32768
# define EXTERNAL_EEPROM_PAGE_SIZE 128
# define EXTERNAL_EEPROM_ADDRESS_SIZE 2
# define EXTERNAL_EEPROM_WRITE_TIME 0
#endif
/*
The base I2C address of the EEPROM.
This needs to be shifted up by 1, to match i2c_master requirements.
*/
#ifndef EXTERNAL_EEPROM_I2C_BASE_ADDRESS
# define EXTERNAL_EEPROM_I2C_BASE_ADDRESS 0b10100000
#endif
/*
The calculated I2C address based on the input memory location.
For EEPROM chips that embed part of the memory location in the I2C address
such as AT24M02 you can use something similar to the following (ensuring the
result is shifted by left by 1):
#define EXTERNAL_EEPROM_I2C_ADDRESS(loc) \
(EXTERNAL_EEPROM_I2C_BASE_ADDRESS | ((((loc) >> 16) & 0x07) << 1))
*/
#ifndef EXTERNAL_EEPROM_I2C_ADDRESS
# define EXTERNAL_EEPROM_I2C_ADDRESS(loc) (EXTERNAL_EEPROM_I2C_BASE_ADDRESS)
#endif
/*
The total size of the EEPROM, in bytes. The EEPROM datasheet will usually
specify this value in kbits, and will require conversion to bytes.
*/
#ifndef EXTERNAL_EEPROM_BYTE_COUNT
# define EXTERNAL_EEPROM_BYTE_COUNT 8192
#endif
/*
The page size in bytes of the EEPROM, as specified in the datasheet.
*/
#ifndef EXTERNAL_EEPROM_PAGE_SIZE
# define EXTERNAL_EEPROM_PAGE_SIZE 32
#endif
/*
The address size in bytes of the EEPROM. For EEPROMs with <=256 bytes, this
will likely be 1. For EEPROMs >256 and <=65536, this will be 2. For EEPROMs
>65536, this will likely need to be 2 with the modified variant of
EXTERNAL_EEPROM_I2C_ADDRESS above.
As expected, consult the datasheet for specifics of your EEPROM.
*/
#ifndef EXTERNAL_EEPROM_ADDRESS_SIZE
# define EXTERNAL_EEPROM_ADDRESS_SIZE 2
#endif
/*
The write cycle time of the EEPROM in milliseconds, as specified in the
datasheet.
*/
#ifndef EXTERNAL_EEPROM_WRITE_TIME
# define EXTERNAL_EEPROM_WRITE_TIME 5
#endif

View File

@@ -0,0 +1,52 @@
/* Copyright 2019 Nick Brassel (tzarc)
*
* 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 <stdint.h>
#include <string.h>
#include "eeprom_driver.h"
#include "eeprom_transient.h"
__attribute__((aligned(4))) static uint8_t transientBuffer[TRANSIENT_EEPROM_SIZE] = {0};
size_t clamp_length(intptr_t offset, size_t len) {
if (offset + len > TRANSIENT_EEPROM_SIZE) {
len = TRANSIENT_EEPROM_SIZE - offset;
}
return len;
}
void eeprom_driver_init(void) { eeprom_driver_erase(); }
void eeprom_driver_erase(void) { memset(transientBuffer, 0x00, TRANSIENT_EEPROM_SIZE); }
void eeprom_read_block(void *buf, const void *addr, size_t len) {
intptr_t offset = (intptr_t)addr;
memset(buf, 0x00, len);
len = clamp_length(offset, len);
if (len > 0) {
memcpy(buf, &transientBuffer[offset], len);
}
}
void eeprom_write_block(const void *buf, void *addr, size_t len) {
intptr_t offset = (intptr_t)addr;
len = clamp_length(offset, len);
if (len > 0) {
memcpy(&transientBuffer[offset], buf, len);
}
}

View File

@@ -0,0 +1,25 @@
/* Copyright 2019 Nick Brassel (tzarc)
*
* 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
/*
The size of the transient EEPROM buffer size.
*/
#ifndef TRANSIENT_EEPROM_SIZE
# include "eeconfig.h"
# define TRANSIENT_EEPROM_SIZE (((EECONFIG_SIZE + 3) / 4) * 4) // based off eeconfig's current usage, aligned to 4-byte sizes, to deal with LTO
#endif

View File

@@ -217,7 +217,7 @@ void IS31FL3733_update_pwm_buffers(uint8_t addr, uint8_t index) {
// If any of the transactions fail we risk writing dirty PG0,
// refresh page 0 just in case.
if (!IS31FL3733_write_pwm_buffer(addr, g_pwm_buffer[index])){
if (!IS31FL3733_write_pwm_buffer(addr, g_pwm_buffer[index])) {
g_led_control_registers_update_required[index] = true;
}
}

View File

@@ -392,6 +392,8 @@ void oled_write_char(const char data, bool invert) {
static uint8_t oled_temp_buffer[OLED_FONT_WIDTH];
memcpy(&oled_temp_buffer, oled_cursor, OLED_FONT_WIDTH);
_Static_assert(sizeof(font) >= ((OLED_FONT_END + 1 - OLED_FONT_START) * OLED_FONT_WIDTH), "OLED_FONT_END references outside array");
// set the reder buffer data
uint8_t cast_data = (uint8_t)data; // font based on unsigned type for index
if (cast_data < OLED_FONT_START || cast_data > OLED_FONT_END) {
@@ -585,4 +587,4 @@ void oled_task(void) {
#endif
}
__attribute__((weak)) void oled_task_user(void) {}
__attribute__((weak)) void oled_task_user(void) {}

View File

@@ -131,7 +131,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#endif
// unsigned char value of the last character in the font file
#if !defined(OLED_FONT_END)
# define OLED_FONT_END 224
# define OLED_FONT_END 223
#endif
// Font render width
#if !defined(OLED_FONT_WIDTH)
@@ -260,4 +260,4 @@ bool oled_scroll_off(void);
uint8_t oled_max_chars(void);
// Returns the maximum number of lines that will fit on the oled
uint8_t oled_max_lines(void);
uint8_t oled_max_lines(void);

View File

@@ -40,7 +40,10 @@ const unsigned char* fonts_pointer[] = {font5x7, font8x16};
uint8_t foreColor, drawMode, fontWidth, fontHeight, fontType, fontStartChar, fontTotalChar, cursorX, cursorY;
uint16_t fontMapWidth;
#define _BV(x) (1 << (x))
#ifndef _BV
# define _BV(x) (1 << (x))
#endif
#define swap(a, b) \
{ \
uint8_t t = a; \
@@ -49,7 +52,7 @@ uint16_t fontMapWidth;
}
uint8_t micro_oled_transfer_buffer[20];
static uint8_t micro_oled_screen_current[LCDWIDTH * LCDWIDTH / 8] = {0};
static uint8_t micro_oled_screen_current[LCDWIDTH * LCDHEIGHT / 8] = {0};
/* LCD Memory organised in 64 horizontal pixel and 6 rows of byte
B B .............B -----
@@ -69,7 +72,7 @@ static uint8_t micro_oled_screen_current[LCDWIDTH * LCDWIDTH / 8] = {0};
*/
#if LCDWIDTH == 64
# if LCDWIDTH == 48
# if LCDHEIGHT == 48
static uint8_t micro_oled_screen_buffer[] = {
// QMK Logo - generated at http://www.majer.ch/lcd/adf_bitmap.php
// 64x48 image
@@ -79,32 +82,37 @@ static uint8_t micro_oled_screen_buffer[] = {
# endif
#elif LCDWIDTH == 128
# if LCDHEIGHT == 32
static uint8_t micro_oled_screen_buffer[LCDWIDTH * LCDWIDTH / 8] = {
static uint8_t micro_oled_screen_buffer[LCDWIDTH * LCDHEIGHT / 8] = {
// 128x32 qmk image
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xFC, 0xFC, 0xE0, 0xFC, 0xFC, 0xE0, 0xF0, 0xFC, 0xE0, 0xE0, 0xFC, 0xE0, 0xE0, 0xFC, 0xFC, 0xE0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x10, 0x10, 0x30, 0xE0, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0xB2, 0xB2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x03, 0xFF, 0xFF, 0xFF, 0x03, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xB7, 0xB2, 0xB2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x02, 0x02, 0x03, 0x01, 0x00, 0x06, 0x1F, 0x10, 0x10, 0x10, 0x1F, 0x06, 0x00, 0x03, 0x1E, 0x18, 0x0F, 0x01, 0x0F, 0x18, 0x1E, 0x01, 0x00, 0x0F, 0x1F, 0x12, 0x02, 0x12, 0x13, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x0E, 0x1F, 0x12, 0x02, 0x12, 0x13, 0x00, 0x00, 0x1F, 0x10, 0x10, 0x10, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x4D, 0x4D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xF8, 0xF9, 0xF3, 0xF3, 0xC0, 0x80, 0xF3, 0xF3, 0xF3, 0xF9, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0x4D, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x20, 0x10, 0x10, 0xE0, 0xC0, 0x00, 0x70, 0xC0, 0x00, 0x80, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x0C, 0x04, 0x04, 0x04, 0x04, 0x1C, 0xF0, 0x00, 0x00, 0xFC, 0x0C, 0x38, 0xE0, 0x00, 0x00, 0xC0, 0x38, 0x0C, 0xFC, 0x00, 0x00, 0xFC, 0xFC, 0x60, 0x90, 0x0C, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x3F, 0x3F, 0x07, 0x3F, 0x3F, 0x07, 0x0F, 0x3F, 0x07, 0x07, 0x3F, 0x07, 0x07, 0x3F, 0x3F, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x06, 0x04, 0x04, 0x07, 0x01, 0x00, 0x00, 0x13, 0x1E, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x04, 0x04, 0x04, 0x04, 0x07, 0x0D, 0x08, 0x00, 0x07, 0x00, 0x00, 0x01, 0x07, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x07, 0x07, 0x00, 0x01, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
# elif LCDHEIGHT == 64
static uint8_t micro_oled_screen_buffer[LCDWIDTH * LCDWIDTH / 8] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xF8, 0xFC, 0xFC, 0xFE, 0xFE, 0xFF, 0x7F, 0x7E, 0xFE, 0xFF, 0xFF, 0xFE, 0xFE, 0x7F, 0x7F, 0xFE, 0xFE, 0xFF, 0xFF, 0xFE, 0x7E, 0x7F, 0xFF, 0xFE, 0xFE, 0xFC, 0xFC, 0xF8, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0xDD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x99, 0x99, 0x99, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xF8, 0xF0, 0xF3, 0xF3, 0xE7, 0xE7, 0x00, 0x00, 0xE7, 0xE7, 0xF3, 0xF3, 0xF0, 0xF8, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x99, 0x99, 0x99, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x0F, 0x1F, 0x3F, 0x3F, 0x3F, 0xFF, 0xFF, 0x3F, 0x3F, 0xFF, 0xFF, 0x3F, 0x3F, 0xFF, 0xFF, 0x3F, 0x3F, 0xFF, 0xFF, 0x3F, 0x3F, 0xFF, 0xFF, 0x3F, 0x3F, 0x3F, 0x1F, 0x0F, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x03, 0x01, 0x00, 0x80, 0x03, 0x03, 0x00, 0x00, 0x01, 0x03, 0x00, 0x80, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x11, 0x11, 0x11, 0x0E, 0x00, 0x70, 0x88, 0x04, 0x04, 0x04, 0xF8, 0x00, 0x00, 0x3C, 0xE0, 0xC0, 0x38, 0x1C, 0xE0, 0x80, 0x70, 0x0C, 0x00, 0xF8, 0xAC, 0x24, 0x24, 0x3C, 0x30, 0x00, 0x00, 0xFC, 0x0C, 0x04, 0x00, 0xF8, 0xAC, 0x24, 0x24, 0x2C, 0x30, 0x00, 0x70, 0xDC, 0x04, 0x04, 0x88, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x8C, 0x04, 0x04, 0xF8, 0x00, 0x04, 0x3C, 0xE0, 0x80, 0xF0, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x83, 0x01, 0x01, 0x01, 0x81, 0xFE, 0x3C, 0x00, 0x00, 0xFF, 0x03, 0x0E, 0x70, 0xC0, 0xE0, 0x38, 0x06, 0x03, 0xFF, 0x00, 0x00, 0xFF, 0x18, 0x38, 0x66, 0xC3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
static uint8_t micro_oled_screen_buffer[LCDWIDTH * LCDHEIGHT / 8] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xF8, 0xFC, 0xFC, 0xFE, 0xFE, 0xFF, 0x7F, 0x7E, 0xFE, 0xFF, 0xFF, 0xFE, 0xFE, 0x7F, 0x7F, 0xFE, 0xFE, 0xFF, 0xFF, 0xFE, 0x7E, 0x7F, 0xFF, 0xFE, 0xFE, 0xFC, 0xFC, 0xF8, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0xDD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x99, 0x99, 0x99, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xF8, 0xF0, 0xF3, 0xF3, 0xE7, 0xE7, 0x00, 0x00, 0xE7, 0xE7, 0xF3, 0xF3, 0xF0, 0xF8, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x99, 0x99, 0x99, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x0F, 0x1F, 0x3F, 0x3F, 0x3F, 0xFF, 0xFF, 0x3F, 0x3F, 0xFF, 0xFF, 0x3F, 0x3F, 0xFF, 0xFF, 0x3F, 0x3F, 0xFF, 0xFF, 0x3F, 0x3F, 0xFF, 0xFF, 0x3F, 0x3F, 0x3F, 0x1F, 0x0F, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x03, 0x01, 0x00, 0x80, 0x03, 0x03, 0x00, 0x00, 0x01, 0x03, 0x00, 0x80, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x11, 0x11, 0x11, 0x0E, 0x00, 0x70, 0x88, 0x04, 0x04, 0x04, 0xF8, 0x00, 0x00, 0x3C, 0xE0, 0xC0, 0x38, 0x1C, 0xE0, 0x80, 0x70, 0x0C, 0x00, 0xF8, 0xAC, 0x24, 0x24, 0x3C, 0x30, 0x00, 0x00, 0xFC, 0x0C, 0x04, 0x00, 0xF8, 0xAC, 0x24, 0x24, 0x2C, 0x30, 0x00, 0x70, 0xDC, 0x04, 0x04, 0x88, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x8C, 0x04, 0x04, 0xF8, 0x00, 0x04, 0x3C, 0xE0, 0x80, 0xF0, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x83, 0x01, 0x01, 0x01, 0x81, 0xFE, 0x3C, 0x00, 0x00, 0xFF, 0x03, 0x0E, 0x70, 0xC0, 0xE0, 0x38, 0x06, 0x03, 0xFF, 0x00, 0x00, 0xFF, 0x18, 0x38, 0x66, 0xC3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
// TODO: generate bitmap of QMK logo here
# endif
#else
// catchall for custom screen szies
static uint8_t micro_oled_screen_buffer[LCDWIDTH * LCDWIDTH / 8] = {0};
// catchall for custom screen sizes
static uint8_t micro_oled_screen_buffer[LCDWIDTH * LCDHEIGHT / 8] = {0};
#endif
void micro_oled_init(void) {
i2c_init();
#ifdef __AVR__
i2c_start(I2C_ADDRESS_SA0_1, 100);
#else
i2c_start(I2C_ADDRESS_SA0_1);
#endif
// Display Init sequence for 64x48 OLED module
send_command(DISPLAYOFF); // 0xAE
@@ -205,7 +213,7 @@ void clear_screen(void) {
*/
void clear_buffer(void) {
// 384
memset(micro_oled_screen_buffer, 0, LCDWIDTH * LCDWIDTH / 8);
memset(micro_oled_screen_buffer, 0, LCDWIDTH * LCDHEIGHT / 8);
}
/** \brief Invert display.

View File

@@ -63,7 +63,7 @@ void draw_string(uint8_t x, uint8_t y, char* string, uint8_t color, uint8_t mode
#ifndef LCDWIDTH
# define LCDWIDTH 64
#endif
#ifndef LCDWIDTH
#ifndef LCDHEIGHT
# define LCDHEIGHT 48
#endif
#define FONTHEADERSIZE 6
@@ -131,4 +131,4 @@ typedef enum CMD {
CMD_GETLCDHEIGHT, // 16
CMD_SETCOLOR, // 17
CMD_SETDRAWMODE // 18
} commCommand_t;
} commCommand_t;

View File

@@ -24,10 +24,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Driver hardware support. */
/*===========================================================================*/
# define GDISP_HARDWARE_FLUSH TRUE // This controller requires flushing
# define GDISP_HARDWARE_DRAWPIXEL TRUE
# define GDISP_HARDWARE_PIXELREAD TRUE
# define GDISP_HARDWARE_CONTROL TRUE
# define GDISP_HARDWARE_FLUSH GFXON // This controller requires flushing
# define GDISP_HARDWARE_DRAWPIXEL GFXON
# define GDISP_HARDWARE_PIXELREAD GFXON
# define GDISP_HARDWARE_CONTROL GFXON
# define GDISP_LLD_PIXELFORMAT GDISP_PIXELFORMAT_GRAY256

View File

@@ -14,11 +14,11 @@
/* Driver hardware support. */
/*===========================================================================*/
# define GDISP_HARDWARE_FLUSH TRUE // This controller requires flushing
# define GDISP_HARDWARE_DRAWPIXEL TRUE
# define GDISP_HARDWARE_PIXELREAD TRUE
# define GDISP_HARDWARE_CONTROL TRUE
# define GDISP_HARDWARE_BITFILLS TRUE
# define GDISP_HARDWARE_FLUSH GFXON // This controller requires flushing
# define GDISP_HARDWARE_DRAWPIXEL GFXON
# define GDISP_HARDWARE_PIXELREAD GFXON
# define GDISP_HARDWARE_CONTROL GFXON
# define GDISP_HARDWARE_BITFILLS GFXON
# define GDISP_LLD_PIXELFORMAT GDISP_PIXELFORMAT_MONO

View File

@@ -20,8 +20,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
/* USB Device descriptor parameter */
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x0000
#define VENDOR_ID 0x6F75 // OU
#define PRODUCT_ID 0x6873
#define DEVICE_VER 0x0001
#define MANUFACTURER 1upkeyboards
#define PRODUCT 1up60hse

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