Compare commits

..

68 Commits

Author SHA1 Message Date
Joshua Diamond
bad9592a18 Add rgblight_reload_from_eeprom() (#11411)
* Add rgblight_reset_from_eeprom()

* reset->reload
2021-01-28 04:42:03 +11:00
glanchow
162842f16e [Docs] add qmk setup home parameter (#11451) 2021-01-28 04:39:58 +11:00
Takeshi ISHII
c27f16158d add get_matrix_scan_rate() to tmk_core/common/keyboard.c (#11489) 2021-01-28 04:34:50 +11:00
Ryan
6937f1d70e Remove MIDI_ENABLE_STRICT from keyboards' config.h (#11679) 2021-01-27 17:26:26 +11:00
Brandon Claveria
a0d9221dcc pull retropad out of handwired and update readme.md (#11545)
Co-authored-by: Swiftrax <swiftrax@gmail.com>
2021-01-27 00:52:17 +00:00
Matt Gilbert
7e8d97f8f0 [Keymap] Add 'mattir' keymap for the Kyria keyboard (#11428)
* First version of keymap

* cleaned up code, made some tweaks, added readme

* extended oled timeout

* resolved final issues, all features functional

* added some leader-key combos

* added missing RGB keys to layout diagram

* removed lines for older elite-c v3

* make filename lowercase

* add old update interval

* fix spacing
2021-01-25 20:59:21 -08:00
Tushar Khan
0e7e52c820 [Keymap] tk planck keymap (#11400)
* tushark54 base layers

* init summer keymap

* drafted new keymap layers

* added new keymap

* v2.0 mvp

* added bracket modes

* added oneshot left modifiers

* added HYPER layer

* added audio

* added audio and more

* changed layer order

* swapped SUPER and LCTL keys

* added more tunes

* added more audio

* added tunes

* major layer modifications

* major changes to keymaps

* minor changes

* added venv macro

* merge conflict

* v3 mvp

* moved DEL to hyper layer and PANIC+ALT

* fn keys on hyper, macros on lower ii

* dynamic macros and audio options

* minor audio improvements

* osl timeouts

* manually added .vscode directory

* fixed upstream file

* fixed upstream file

* base and hyper layer changes

* modified tapping term

* added more macros

* added GPL2+ compatible license headers

* removed songs

* updated licenses

* added chmod macro
2021-01-25 20:23:23 -08:00
Donald Kjer
88ca4ec2cb Add support for the DURGOD Taurus K320 keyboard (#11399)
* Initial support for Durgod K320 with BootMagic Lite

- Adding missing files
- Add Unicode Map Support & new user keymap
- Remove personalized features from Default keymap
- Added Unicode Map to both Default and kuenhlee keymap.c
- Updated readme.md
- Added additional Fn Shortcut keys

* Additional support for Durgod K320

- Simplifying default keymap
- Renaming durgod_k320 => durgod/k320
- Removing copy of ST_NUCLEO64_F070RB from K320. Replacing with local board.h
- Adding Mac keyboard layout for K320 as alternative via Fn+F12
- Implementing Windows Key lock on K320
- Cleaning up duplicated core functionality
- Adding default_toggle_mac_windows keymap with:
  - Ability to toggle between Windows and MacOS layout
  - Mac Media Lock functionality.

* Updating K320 keymap readme

Co-authored-by: kuenhlee <eos.camera.lee@gmail.com>
2021-01-26 04:30:17 +11:00
Danny
2a34e07ff9 [Keyboard] Add Quefrency Rev. 3 (#11578)
* Update default VIA layout option

* Add Quefrency Rev. 3

* Update readme

* Add GPL2 headers

* Update keyboards/keebio/quefrency/rev3/config.h

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

Co-authored-by: Ryan <fauxpark@gmail.com>
2021-01-24 22:39:00 -08:00
mrT1ddl3s
bd5d3c879e [Keyboard] Knobgoblin keyboard initial commit (#11664)
* Knobgoblin keyboard initial commit

New macropad initial commit. Keyboard and keymap

* corrected bracket and layout name

* attempting info file fix again

* info file line 33 hanging comma fix

* Update keyboards/knobgoblin/config.h

per fauxpark review

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

* Update keyboards/knobgoblin/readme.md

per fauxpark review

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

* Update keyboards/knobgoblin/readme.md

per fauxpark review

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

Co-authored-by: Ryan <fauxpark@gmail.com>
2021-01-24 22:25:50 -08:00
Niek Blankers
c1e1166991 [Keyboard] Fix for LEDs on PocketType (#11671)
The LED anodes of the pockettype are connected to the bus voltage when a
pro micro is used, but other controllers like the Elite-C (v4) connect this
pin to GPIO B0. This means that LEDs do not work by default for those
controllers.

This commit implements a fix for that by setting the B0 pin high.
2021-01-24 22:16:42 -08:00
melonbred
50690b2d5c [Keymap] Update Program Yoink Ortho Split Layout (#11675) 2021-01-24 22:06:17 -08:00
Albert Y
ffb85b1f5d [Keyboard] Add RGB Matrix support for The Mark:65 (#11676)
* Add RGB Matrix support for Mark 65 keyboard

* Update drive LED count

* Removed unnecessary define line

* Corrected typo

Co-authored-by: filterpaper <filterpaper@localhost>
2021-01-24 22:05:16 -08:00
Ryan
c65aecc53a Remove redundant I2C config defines from keyboards (#11661) 2021-01-25 16:37:53 +11:00
Brian Romanko
66836effda [Keyboard] Add layout to torn keyboard (#11684) 2021-01-24 19:42:37 -08:00
Monksoffunk
711f861d83 Change VID/PID for Zinc (#11681) 2021-01-25 14:13:10 +11:00
Loïc Wisniewski
bf7e19e997 Fix midi for CRKBD (#11644)
Co-authored-by: BuildTools <unconfigured@null.spigotmc.org>
2021-01-25 14:12:28 +11:00
Takeshi Nishio
deea6a9826 Add jones v.0.3 and v.0.3.1 keyboard (#11130)
* Update LEDの物理的接続とQMKのソフト的接続を調整し、左→アンダーグロー→右と繋がるようにした。

* Update レイヤーインジケータ関連変数を、#ifdefブロック内へ移動。

* Update コード整形

* Revert "Update コード整形"

This reverts commit c98483d9a0.

* Update 未使用のキーコード、S_SLSHに関連するコードを削除。

* Update コード整形

* Update キーごとのTappingTerm設定を使用しなくなったため、削除。

* Update 未使用コード削除。

* Update コメント追加

* Update レイヤーとIMEのON/OFFを同じキーに割り当てるのをやめたため、関連コードを削除。

* Update コメント追加

* Update コメント

* Update 誤読を避けるため、ifブロックの表記を括弧を使用したものへ変更。動作に変化なし。

* Update 未使用のため削除。

* Update LED関連でデフォルトレイヤーを格納して使用しないため、削除。

* Update コメント

* Update レイヤーによってロータリーエンコーダの動作を変える機能を追加。

* Update comment

* Update 実態に合わせて修正。

* Update JP用キーコードへの書き換え忘れを修正。

* New v.0.3.1 JP style

* Update v.0.3のJPスタイルではオーディオサポートなし。

* Update to latest information

* New

* New keyboard "stmeishi"

* Update layout name

* Update move common settings from keymap's "rules.mk" to keyboard's "rules.mk".

* Update: Move common settings from keymap's "rules.mk" to keyboard's "rules.mk".

* Update: Add "LAYOUT_all" for multiple layout.

* Update target to latest "v.0.3.1".

* Remove unused item.

* Update comments.

* Update Rotary Encoder pins to actual used count.

* Update increase value to maximum.

* Update comments.

* Change default Effects.

* Remove unused items.

* Update comment.

* Change: Use define and function insted of real value for wait.

* Update copyrght.

* Update Update: Add "LAYOUT_all" for multiple layout.

* New: Place info.json copied from v.0.3.1.

* Remove unused items.

* Update: Add comma at last element.

* Update comments.

* Update: change if block style.

* Update: Change Japanese comments to English.

* Update: Change layout name.

* Update: Change layout name.

* Update: Fix miss numbering for ANSI layout.

* Update: Move "Tap Dance" rule to keymap's rule.

* New: Add default keymap.

* Delete: Moving files to branch.

* Initial: Add files from local.

* Remove local only unused keymaps.

* Update: Remove unused, comment outed codes.

* Add default keymap for v.0.3.

* Update: Add custom keycodes.

* Update: Change layer handling from process_record_user to layer_state_set_user.

* Update comment.

* Update: Remove unused function.

* Add my ErgoDash settings.

* Add my NumAtreus_Plus8 settings.

* Add my test_k15r2 settings.

* New Colice片手分動作確認済み

* Update スプリットキーボード対応

* Update 反応が悪くずっと二度押ししているので、ESCキーをレイヤーキーとの共用から、単独機能に変更。

* Update 右手スイッチ配置変更。インジケータLED対応。

* Change インジケータLEDが眩しいので、明るさを下げた。

* Change 右手親指のキーマップ変更。

* Change NumLockの誤爆防止のため、二度押しでレイヤートグルするようにした。

* Change 左手側、Bの右側のキーを誤爆することが多く日本語入力が途切れるため、レイヤーキーの機能左右で入れ替え。

* Update 右手側、画像ソフトなどで使うため、矢印キーの左をレイヤーキーからCTRLへ変更。

* New add new keyboard

* Update Duplex-Matrixが動作した初版

* New Duplex-Matrixのサンプルコード by e3w2q を最新のQMKファームウェアで動作するよう一部修正したもの。

* update Comment-out debug print code.

* Update Colice V0.2 キープレートで矢印キー付近の物理配列が変わったことへ対応

* Update キーレイアウト

* New Initial commit

* Update Fix migrate errors from test_duplex_dp to test_col2col

* Remove unnecessary files

* Testing

* Update IKeJIさんの方法(とりあえずCOL2COLと呼ぶ)の動作テストOK

* New 2乗マトリクス配線のキーボードを追加

* Update キーレイアウト調整

* New colice_rr 初回コミット。基本動作確認OK。LED不調。

* Update Eable LED, Reduce firmwre size

* Update colice_rr キーマップ調整。

* Update colice_rr ロータリーエンコーダ機能追加。

* Move colice_rr を colice_rr_split へ移動。

* Update colice_rr_splitフォルダへ移動したことに対応。

* New colice_rr_splitの初回コミット。

* Update キーマップ調整

* Update キーマップ調整

* New initial comit

* Update 意図せずカッコを入力することがるため、LSPO、RSPCの使用を中止。

* Change Fnキー押下時の日本語入力ONを、長押し時にキャンセルするように変更。

* Change LED点灯方法変更。

* Change 基板バージョンごとにサブフォルダを作成するようにした。

* Update Windows用レイヤーを追加

* Update LED設定を調整

* New Jones v.0.2を新規追加

* Update Numレイヤー追加。キーマップ調整。レイヤーインジケータLED調整。

* Update 左手Yをやめる

* Update ESCによるNumレイヤートグルを、ESC連打でトグルするのを防止するため、ダブルタップからトリプルタップへ変更。

* Update readme

* Update QMKの標準に従うよう各ファイルの内容を変更。

* Update 長音(ー)を入力しやすくするため、レイヤー上でホームポジションに近い位置に配置。

* Update タップダンスの状態判別を、Single,Double,Triple,Holdの4つのステータスにまとめた。

* Update キーボードの電源が切れてもデフォルトレイヤーの状態を保存しておくため、MACとWINレイヤーへの変更はEEPROMへ書き込むようにした。

* Update 不要箇所削除

* Update キーマップをNarrowとWideで書き換えるのが不便なので、分割した。

* Update 最新のPCBに合わせ、デフォルトをv.0.2に変更。

* New v.0.3を新規追加

* Update キーマトリクスに後からJPを追加するため、ANSI用に表記変更。

* Update ANSI用のキーマップであることを明記。

* New JP用キーマップを新規追加。

* Update スイッチの物理的存在、Enter右側はキー1個、に合わせて、ANSIレイアウトを修正。

* New FA (Full Armor)用レイアウトを新規追加

* Update 物理的ロック付きのCAPSは使用しないため、無効化。

* Update ハードウェアのサポート対象にキープレートを追加。

* Update FAで使用するAudio、RotaryEncoderの機能追加。機能削減でファームウェアサイズ縮小。

* Update オーディオ機能にキークリックを追加。

* update FA用設定

* Update 右シフトにキー追加

* Update 変換キー調整

* New オーディを有効化。マウスキーはサイズ削減のため無効化。

* Update スイッチ配置ミス修正。

* Update ピン定義を、ロータリーエンコーダの回転方向に合わせた

* Update 2音同時発音用にピン定義を追加。

* Update ファームサイズに空きがあるので、クリッキー音をデフォルトで利用できるようにした。

* Update LED設定変更

* New 物理配列がJPで、中身はUS配列のキーマップを追加。

* Update 行と列が入り乱れたレイアウトのため、音階が正しくなるように、Music-Mode用のキーマップを定義。

* Change マイナーバージョンの表記に対応できるよう、DEVICE_VERの桁を1つ上げた。

* Update オルソ+ロースタガであることがわかるように、キーボードの簡単な説明を変更。

* New v.0.3.1の初期コミット

* Update 左右で回転方向の判定が逆になるので、右手側を左手に合わせた。

* Update キーマップ調整

* Update LEDインジケータを、v.0.3系と同じ点灯方法(2個をベースレイヤ、1個をRAISEなど)に変更。

* Update RGBLIGHT明るさ調整、エフェクト追加。

* Update 未使用キー設定を削除。

* Update Shiftと組み合わせた/?キーの反応を良くするため、キーごとにTAPPING_TERMを指定できるようにした。

* Update LEDエフェクト追加

* Update keymap

* Update 未使用のものを削除

* Update LEDの物理的接続とQMKのソフト的接続を調整し、左→アンダーグロー→右と繋がるようにした。

* Update レイヤーインジケータ関連変数を、#ifdefブロック内へ移動。

* Update コード整形

* Revert "Update コード整形"

This reverts commit c98483d9a0.

* Update 未使用のキーコード、S_SLSHに関連するコードを削除。

* Update コード整形

* Update キーごとのTappingTerm設定を使用しなくなったため、削除。

* Update 未使用コード削除。

* Update コメント追加

* Update レイヤーとIMEのON/OFFを同じキーに割り当てるのをやめたため、関連コードを削除。

* Update コメント追加

* Update コメント

* Update 誤読を避けるため、ifブロックの表記を括弧を使用したものへ変更。動作に変化なし。

* Update 未使用のため削除。

* Update LED関連でデフォルトレイヤーを格納して使用しないため、削除。

* Update コメント

* Update レイヤーによってロータリーエンコーダの動作を変える機能を追加。

* Update comment

* Update 実態に合わせて修正。

* Update JP用キーコードへの書き換え忘れを修正。

* New v.0.3.1 JP style

* Update v.0.3のJPスタイルではオーディオサポートなし。

* Update to latest information

* New

* New keyboard "stmeishi"

* Update layout name

* Update move common settings from keymap's "rules.mk" to keyboard's "rules.mk".

* Update: Move common settings from keymap's "rules.mk" to keyboard's "rules.mk".

* Update: Add "LAYOUT_all" for multiple layout.

* Update target to latest "v.0.3.1".

* Remove unused item.

* Update comments.

* Update Rotary Encoder pins to actual used count.

* Update increase value to maximum.

* Update comments.

* Change default Effects.

* Remove unused items.

* Update comment.

* Change: Use define and function insted of real value for wait.

* Update copyrght.

* Update Update: Add "LAYOUT_all" for multiple layout.

* New: Place info.json copied from v.0.3.1.

* Remove unused items.

* Update: Add comma at last element.

* Update comments.

* Update: change if block style.

* Update: Change Japanese comments to English.

* Update: Change layout name.

* Update: Change layout name.

* Update: Fix miss numbering for ANSI layout.

* Update: Move "Tap Dance" rule to keymap's rule.

* New: Add default keymap.

* Delete: Moving files to branch.

* Initial: Add files from local.

* Remove local only unused keymaps.

* Update: Remove unused, comment outed codes.

* Add default keymap for v.0.3.

* Update: Add custom keycodes.

* Update: Change layer handling from process_record_user to layer_state_set_user.

* Update comment.

* Update: Remove unused function.

* Revert "Remove: Non related files."

This reverts commit 82306568fad408427c757de832025dee91ca5a7f.

* Update: To resolve "submodule path not found" message.

* RemoRemove: Non related files.

* Revert file before miss comit.

* Update: Remove unused keycode.

* Update: レイアウト設定内のNUMレイヤへのトグルを、カスタムキーコード表記に変更。

* Update: Comment

* Update: Remove unused items.

* Update layout settings.

* Update: For simplicity, change toggle ADJUST layer method from process_record_user() to layer_state_set_user().

* Update: comment and styling.

* Update: Remove unused custom keycodes.

* Update: For simplicity, change toggle layer method from process_record_user() to layer_state_set_user().

* Update: Remove unused items.

* Update: comment and styling.

* Update: Correct comment.

* Update description and flashing example.

* Update: Remove comment-outed bootloaders.

* Update comments.

* Update: Correct LED count, without under-glow.

* Update: Chenged to common values with v.0.3.1.

* Update: Changed to common values with v.0.3.

* Updarte: Remove unused layout.

* Update: Change default layout to "ALL".

* Update comment.

* Update comment.

* Add missing file.

* Update: Change build option definition style.

* Update: Change build option definition style.

* Update: Change CUSTOM_MATRIX to "lite" and convert "matrix.c" to "lite" version.

* Update: Move "music_map" to keyboard's c file.

To provide common definition for other keymap creator.

* Update: Change keyboard name "v.0.3.1" ---> "v03_1".

For human readability, version name "v.0.3.1" remains at title on "readme.md".

* Update: Change keyboard name "v.0.3" ---> "v03".

For human readability, version name "v.0.3" remains at title on "readme.md".

* Update: Correct matrix definition at "k92".

* Apply suggestions from code review

Remove unnecessary comment block.

* Apply suggestions from code review

Remove "Optional" deprecated items.

* Apply suggestions from code review

Change "make" target keymap to standard default.

* Apply suggestions from code review

Remove rules for MIDI_ENABLE, FAUXCLICKY_ENABLE and HD44780_ENABLE.
These features are not enabled.

* Apply suggestions from code review

Convert tabs to spaces.

* Update: Change #define ROW_SHIFTER to keyboard specific.
2021-01-24 13:54:29 -08:00
Mohammad Juma
eda8c94c60 [Keymap] addition for mjuma in keyboards/planck/keymaps (#10885)
* Add planck layout

* switch gaming toggle to TG

* rename readme
2021-01-24 07:46:37 -08:00
Vinam Arora
829075ffef Increased dynamic keymap layers in via keymap (#11575) 2021-01-24 15:03:34 +00:00
Damien
8ab6efdc80 Fix preonic layout documentation (#11655)
* [Apple M5120] First iteration

* Cleaned apple_m5120 files

* Changes requested by PR

* Update keyboards/apple_m5120/iso/rules.mk

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

* Update keyboards/apple_m5120/iso/keymaps/default/keymap.c

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

* Updated Preonic default layout doc

* Removed non related files

Co-authored-by: dbroqua <dbroqua@mousur.org>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-01-24 14:57:22 +00:00
Anand
5d0cc13fcf Add VIA support for dm9records/tartan (#11666) 2021-01-24 14:52:11 +00:00
David H. Bronke
92543a7cb5 fix(feature_ps2_mouse): fix Scroll Button example (#11669)
Corrected macro in Scroll Button example so it compiles.
2021-01-24 14:51:25 +00:00
Takeshi ISHII
944cf6476e Update docs/getting_started_make_guide.md (#11373)
* update docs/getting_started_make_guide.md

Added description of some targets, including those added with #11338.

* Added description of options added by #11324.

* update docs/getting_started_make_guide.md

* Added description of  target.

* Update docs/getting_started_make_guide.md

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

* Update docs/getting_started_make_guide.md

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

* Update docs/getting_started_make_guide.md

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

* add ':id=linux-udev-rules' to docs/faq_build.md

Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-01-24 15:15:11 +09:00
Alabahuy
29c9c6bf56 Fix number RGB RART4x4 dan matrix pin RART45 (#11582)
* Update config.h

* Update config.h
2021-01-23 16:16:24 -08:00
David Dejaeghere
78693dfa31 [Keyboard] adding support for new keyboard Dawn (#11564)
* initial commit Dawn keyboard

* fixing some matrix

* final tweaks to keymaps and info.json layout

* fix info.json missing delimiter

* missing elements in info.json layout, resolved through lint

* fixed missing link image in readme

* Update keyboards/mechstudio/dawn/readme.md

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

Co-authored-by: David <david@tarpit.be>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-01-23 15:59:15 -08:00
smiley
d6701b3ac7 Fix typos and reword some sentences in FAQs (#11546)
* Fix minor typo in "General FAQ"

"want to do brand it with QMK" -> "want to brand it with QMK"

* Reword some of "Debugging FAQ" & "Miscellaneous FAQ".

Mostly grammatical wording of some parts and missing capitalization
2021-01-23 13:41:29 -08:00
Kyle McCreery
05a4583ce8 [Keymap] Adding Fancy and Bongocat Keymap to Mercutio Keyboard (#11520)
* Initial commit on new clean branch. Testing out functionality of oled and encoder for default features.

* Cleaned up the initial push and removed the fancy keymap until the extra features and functionality can be tested and made more user friendly.

* Cleaned up the readme some more, compiled and tested both default and via keymaps, and did another round of checks to prepare for starting the PR.

* Cleaning up the keymap to meet expected formatting in a couple places and also adding in the TAP_CODE_DELAY after newly encoutnered encoder issues and inconsistencies.

* Initial commit of branch specifically for implementing the more complicated fancy keymap as I expect the main PR to be approved first.

* testing bongo cat out

* Progress with intended OLED behavior. Needs to be cleaned up still.

* Cleaned up bongocat and added WPM display on it.

* Almost there. Need to rethink the layer checking in encoder.

* Fixing all the merge issues I didn't check before doing the last commit. Learn from my mistakes, check your commits.

* Fixed and updated fancy firmware and bongocat firmware.

* Updating license year since I will be doing a PR anyway.

* Update keyboards/mechwild/mercutio/keymaps/fancy/keymap.c

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

Co-authored-by: Ryan <fauxpark@gmail.com>
2021-01-23 09:32:10 -08:00
Ryan
7d774fa1dc Infinity60 refactor (#11650) 2021-01-23 14:23:38 +11:00
James Young
3a7573436a Program Yoink! refactor (#11636)
* split config.h for each variant

* split rules.mk for each variant

* split source and header files for each variant

* move keymaps to the appropriate variant

* update keyboard readme

* update keymap readmes

* differentiate Staggered and Ortho USB Device Strings

* clean up formatting in info.json

* split info.json files for each variant

* break up the info.json for readability

* correct key positioning and board dimensions

* correct key object sequences

* add weak encoder function to keyboard level

Allows Configurator-compiled firmware to have encoder functionality.

* add variant-specific readme files and bootloader instructions
2021-01-22 18:02:40 -08:00
James Young
7e77c2361f Move Backslash/ISO Hash key to home row for Uni660 rev2 ISO (#11657)
* Move Backslash/ISO Hash key to home row for Uni660 rev2 ISO

* update readme formatting
2021-01-22 09:10:52 -08:00
Ryan
188c0bacb0 Woodpad refactor (#11651) 2021-01-23 03:48:27 +11:00
James Young
a7d79f4c00 [Keyboard] Pinky refactor (#11643)
* QMK Configurator layout support for Pinky

3-row and 4-row versions

* refactor default keymaps

- use an enum for layer names
- remove redundant definitions
- qmk cformat pass
- modify pinky/4 via keymap to mirror pinky/4 default functionality

* remove LAYOUT_kc macros

This usage is not endorsed by QMK as it has been found to be confusing to novice users.

* add VIA support to pinky/3

* update config.h files

Removes unnecessary definitions for Backlight, RGB Underglow, Magic config and MIDI.

* update main rules.mk file

Updates the rules.mk file to match the formatting of the current QMK-provided template. Removes sample bootloader comments, feature rules that are no longer included in the template, and updates the in-line comments.

* update and split keyboard readme

Updates the main readme file's formatting, adds instructions to access bootloader mode, and adds more specific readmes for each version.

* add line breaks between rows in the info.json files

* rename layout macros for Community Layout forward compatibility

The layouts of the Pinky3 and Pinky4 aren't currently Community Layouts, but support for them could be added with a rules.mk edit should the layouts be added to QMK.
2021-01-22 08:37:36 -08:00
Eithan Shavit
3b663ee495 [Keymap] Breeze keymap eithanshavit (#11640)
Co-authored-by: Eithan Shavit <eithan@fb.com>
2021-01-22 08:31:53 -08:00
Drashna Jaelre
7a08b9d374 [Keymap] Cleanup and updating of drashna keymap code (#11516)
* Update other keyboards for rgb matrix changes

* Remove customized bootmagic code

* Fix corne layout compilation error

* Fix compiler errors with all keymaps

* Add Simple Visualizer for ergodox infinity

* Fix compile issue with Corne

* Fix keymap stuff

* Add alias for mouse layer

* Add Halmak Keyboard layout

* Updates for Kyria

* Add support for oled interval

* Change RGB stuff

[CHANGE] Fix coexistence issues

* Fix rgb_stuff

* Add custom ploopyco mouse keymap

* Decrease default dwell time

* Updates based on last breaking changes update

* Disable command on dactyl

* Update ergodox to use proper commands for rgb matrix indicators

* Update all rgb matrix indicator functions

* Update rules for dactyl-manuform

* Reduce wait time for mouse layer off event

* Add more info to logger

* Add wrappers for get_tapping term

* Move version.h include into only file that actually needs it

* Update rgb sleep stuff

* Update key print function

* Change DM keymap settings

* Change pin for DM Manuform

* Add Proton C stuff for Corne keymap

* more arm corne tinkering

* Even more arm stuff for corne

* Cleanup corne stuff

* redirect default keymap to drashna

because I am a very bad man

* change corne rgb priority

* Update tractyl manuform to not conflict

* Add more secret stuff

* more dactyl tweaks

* Add more options to split transport

* Changes of oled support

* Change split settings

* Improve keylogger formatting more

* tweak oled stuff

* Oled and such tweaks

* Reduce brightness due to leds

* Decrease brightness more

* Only run layer code if master
2021-01-22 08:23:03 -08:00
James Young
c16a3dcb54 Isometria 75: Configurator/CLI fixes (#11612)
* info.json: human-friendly formatting

* info.json: update key object labels

Some of the characters in the original file don't play nicely with `qmk info -l` on Windows.

* info.json: correct key object order
2021-01-21 18:27:05 -08:00
Danny
71d8e72b80 Add 3rd encoder to VIA keymap (#11580) 2021-01-21 17:23:27 -05:00
jakobkg
c03ad0f802 Remove rules.mk in leafcutterlabs/bigknob:default (#11652) 2021-01-21 21:05:19 +00:00
mtei
b79ee92a12 update CI list about helix keyboards
* exclude 'helix/rev3_4rows' from CI
  Since helix/rev3_4rows is almost the same as helix/rev3_5rows, there is no point in checking with travis-ci.

* include 'helix/pico/back' to CI
  helix pico and helix rev2 are still available. I would like to check both by travis-ci, but here I will add a check only for helix pico.
2021-01-21 07:34:00 -08:00
Zach White
111eb8990d Fix QMK_BUILDDATE (#11641) 2021-01-20 20:38:18 +00:00
Joel Challis
4e8166750b Small tweaks to docs to make them more user friendly (#11518)
* first pass

* firmware firmware?

* Split out debug + testing docs

* tidy up duplicate css

* Add extra info to debug example

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

Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-01-20 18:46:01 +00:00
datafx
1328ab7c7d Correct LED physical mapping on monstargear xo87 rgb pcb (#11629)
* corrected LED physical mapping

* Corrected issue that made VIA display layer 1 incorrectly

Co-authored-by: datafx <digitalfx@phreak.tech>
2021-01-19 23:32:39 -08:00
James Young
9a070475ef Handwired ASkeyboard Sono1: Configurator fixes (#11625)
* info.json: human-friendly formatting

* info.json: correct key order
2021-01-19 23:27:04 -08:00
LSChyi
eacb596d8b [Keyboard] Add indicator LED support to playkbtw/helen80 (#11560)
* add indicator led support

* use LED config instead
2021-01-19 21:06:35 -08:00
X-Bows Tech
1bb9f155a6 [Keyboard] Update X-Bows Nature Keyboard (#11538)
* Update config.h

* Update nature.c

* Update rules.mk

* Update keymap.c
2021-01-19 19:14:39 -08:00
Raphael Megzari
6db22011a5 [Keymap] add happysalada (#11535)
* add keymap: happysalada

* use enum instead of define

* remove uneeded config file
2021-01-19 19:14:16 -08:00
Aaron Ireland
45bec2d281 [Keymap] Mac-friendly KBD 75% layouts (#11507)
* Add Aaron's KBD75 v2 for Macbook

* Add Colemak & Dvorak layers

* Update keymap to adhere to style guide and add license

* Rename README.md to readme.md
2021-01-19 19:05:23 -08:00
Ryan
eba512596a Add stm32-dfu and apm32-dfu to bootloader.mk (#11019)
* Add stm32-dfu and apm32-dfu to bootloader.mk

* Update flashing docs

* Update comment

* Further wordsmithing
2021-01-20 14:04:21 +11:00
Craig Gardner
d28d474dc0 [Keyboard] Leafcutterlabs (#11464)
* add support for bigknob

Add support for bigknob macropad

* corrected files

* Apply suggestions from code review

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

* corrected tap dance

* Update config.h

* correct image link

* Apply suggestions from code review

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

* added GPL headers

* Update readme.md

* update rules to disable tap dance

* remove tap dance

* Update rules.mk

trying to get to pass travis test

* Update rules.mk

remove tap dance

Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-01-19 18:51:33 -08:00
Joshua Diamond
c0728bd189 Improve the Lighting Layers example in RGB Lighting docs (#11454)
* Improve the keymap layer state -> lighting layers example

* A few more improvements
2021-01-19 18:49:02 -08:00
Takeshi Nishio
71f067a60e Fix wrong key when "Music Map" is used with MAJOR_MODE. (#11234)
With MAJOR_MODE (= major scale), keys in one octave is not 12 but 7.
To solve this problem, change divisor number from 12 to 7 at %(Modulo) and /(Division).

NOTE:
The last 12 represents half step keys in one octave for pitch calculation.
2021-01-19 18:08:06 -08:00
MesaKeyboards
974d3f1ffd [Keyboard] Add Mesa TKL (#11294)
* Add keyboard: Mesa TKL

* Fix image link in readme

* Update keyboards/mesa/mesa_tkl/mesa_tkl.c

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

* Update keyboards/mesa/mesa_tkl/rules.mk

White space changes

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

* Replace tabs with spaces per C coding conventions.

* Update keyboards/mesa/mesa_tkl/readme.md

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

Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-01-19 18:05:08 -08:00
melonbred
e6a90c8b04 Update info.json - Program Yoink (#11558)
* Update info.json

Fix ortho_split
2021-01-19 17:47:02 -08:00
Ryan
2cdc3699e1 Remove DESCRIPTION, W-Z (#11633) 2021-01-20 12:41:34 +11:00
Ryan
e0ed2c950d Remove DESCRIPTION, R-V (#11632) 2021-01-20 12:40:35 +11:00
Ryan
4ed67d666e Remove DESCRIPTION, N-Q (#11631) 2021-01-20 11:57:45 +11:00
Ryan
1e1b469fa2 Remove DESCRIPTION, K-M (#11619) 2021-01-20 09:56:41 +11:00
Nick Brassel
49dcc824db Fixup declaration for _kill, add other missing syscalls, populate errno. (#11608) 2021-01-19 14:23:03 +00:00
Ryan
62f304a225 Remove DESCRIPTION, H-J (#11616) 2021-01-20 00:38:12 +11:00
Glen D'souza
d24fe4f1ca GCC 10 compatibility for Ploopy optical encoder (#11586) 2021-01-19 13:23:54 +11:00
CMMS-Freather
677789df77 change to cmm.studio saka68 folder. split to solder and hotswap, add hotswap fimware (#11443)
* new repo: create cmm.studio folder, add saka qmk firmware

new folder for cmm.studio line up keyboard
added saka68 keyboard qmk and via firmware support

* Update keyboards/cmm.studio/saka68/config.h

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

* Update keyboards/cmm.studio/saka68/rules.mk

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

* Update keyboards/cmm.studio/saka68/keymaps/via/rules.mk

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

* Update keyboards/cmm.studio/saka68/config.h

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

* fix on keymap, readme

fix on keymap, readme

* Update keyboards/cmm.studio/saka68/readme.md

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

* Update keyboards/cmm.studio/saka68/keymaps/default/keymap.c

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

* update vendor name with _ instead of .

update vendor name with _ instead of .

* Update readme.md

change the make format

* Update keyboards/cmm_studio/saka68/keymaps/default/keymap.c

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

* deleted some files from cmm.studio, changes to cmm_studio

deleted some files from cmm.studio, changes to cmm_studio

* Update readme.md

make command changed

* Update keyboards/cmm_studio/saka68/readme.md

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

* Update readme.md

added pic for pcb

* Update readme.md

* Update readme.md

* Update readme.md

* Update readme.md

* Update readme.md

* Update keyboards/cmm_studio/saka68/config.h

tested and does work now. deleting these lines

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

* Update readme.md

* Update readme.md

* Update readme.md

* Update readme.md

* Update readme.md

* Update readme.md

* Update readme.md

* Update keyboards/cmm_studio/saka68/readme.md

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

* Update readme.md

added use physical reset button instruction

* change to the cmm saka folder

making the changes to cmm saka firmware

seperated solder version firmware and hotswap version firmware

* Update readme.md

* Update readme.md

* Update readme.md

* Update readme.md

* Update readme.md

* Update readme.md

* Update readme.md

* Update readme.md

* Update readme.md

* Update readme.md

* change to the cmm saka hotswap folder

Co-authored-by: Ryan <fauxpark@gmail.com>
2021-01-19 13:23:13 +11:00
Benjamin Garcia
1dc466d22b New keymaps with KC_LGUI on another key and scroll with encoder (#11479)
* feat(kyria): new keymaps with KC_LGUI on another key

add also possibility to scroll with encoder and finally play with olded
screen to replace default kyria logo by Magic the Gathering mana color
icon.

* Update keyboards/kyria/keymaps/benji/keymap.c

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

* add magic logo

* add mouse button

Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-01-19 13:11:45 +11:00
Paul James
993982a985 [Keymap] Add peej userspace and keymaps (#11332) 2021-01-19 13:10:28 +11:00
James Young
01bc8e3b52 Cannonkeys Onyx: Configurator/QMK CLI improvements (#11603)
* info.json: human-friendly formatting

* info.json: correct key object order

* info.json: replace Unicode characters

They don't play nice with `qmk info -l`.

* info.json: correct keyboard dimensions
2021-01-19 13:08:57 +11:00
James Young
dfb8a29718 Caps Unlocked CU65 layout macro fixes (#11606) 2021-01-19 12:22:26 +11:00
datafx
3bb1897bdc [Keyboard] Monstargear XO87 RGB Hot-Swap PCB (#11555)
* Support for Monstargear XO87 Hot-Swap PCB

* Remove manufacturer from product line

* Removed alternate bootloaders

* Updated info.json

* Missed RGB_DISABLE_WHEN_USB_SUSPENDED in config.h

* Delete kb.h

* Update rgb.h

* Update rules.mk

* Add files via upload

* Delete kb.h

* Update keymap.c

* Update config.h

* Update rgb.c

* Add via RGB support

* Update info.json

* Update readme.md

* Update readme.md

* Update config.h

* Update rgb.h

* Update config.h

* Mirror factory layout

* Mirror factory layout

* Update rgb.h

* Update keyboards/xo87/rgb/rgb.c

* Update rgb.c

* Update keyboards/xo87/rgb/config.h

* Update keyboards/xo87/rgb/rules.mk

* Update keyboards/xo87/rgb/rules.mk

* Update keyboards/xo87/rgb/keymaps/via/keymap.c

* Update keyboards/xo87/rgb/rules.mk

* Update keyboards/xo87/rgb/rules.mk

* Update keyboards/xo87/rgb/keymaps/via/keymap.c

* Update config.h

* Update keyboards/xo87/rgb/readme.md

* Update keyboards/xo87/rgb/readme.md

* Update keyboards/xo87/rgb/readme.md

* Update keyboards/xo87/rgb/rules.mk

* Update keyboards/xo87/rgb/rules.mk

* Update keyboards/xo87/rgb/rules.mk

* Update keyboards/xo87/rgb/rules.mk

* Update keyboards/xo87/rgb/rules.mk

* remove deprecated action_get_macro()

* rearrange layout per request

* rearrange layout per request

* Update keyboards/xo87/rgb/rgb.h

* Update keyboards/xo87/rgb/keymaps/default/readme.md

* Update keyboards/xo87/rgb/readme.md

* Bugfix for RGB Matrix

* Bugfix for RGB Matrix

* Moved to new subdirectory and updated build commands to reflect changes

* Remove old files
2021-01-18 10:58:09 -08:00
James Young
03bacec87d Naked64 Configurator update and rework (#11568) 2021-01-18 23:45:56 +11:00
Ryan
cc3f2e2865 Remove DESCRIPTION, E-G (#11574) 2021-01-18 12:49:25 +11:00
1110 changed files with 14465 additions and 4561 deletions

View File

@@ -20,15 +20,19 @@
# Sets the bootloader defined in the keyboard's/keymap's rules.mk
# Current options:
#
# halfkay PJRC Teensy
# caterina Pro Micro (Sparkfun/generic)
# atmel-dfu Atmel factory DFU
# lufa-dfu LUFA DFU
# qmk-dfu QMK DFU (LUFA + blinkenlight)
# bootloadHID HIDBootFlash compatible (ATmega32A)
# USBasp USBaspLoader (ATmega328P)
# kiibohd Input:Club Kiibohd bootloader (only used on their boards)
# stm32duino STM32Duino (STM32F103x8)
# AVR:
# halfkay PJRC Teensy
# caterina Pro Micro (Sparkfun/generic)
# atmel-dfu Atmel factory DFU
# lufa-dfu LUFA DFU
# qmk-dfu QMK DFU (LUFA + blinkenlight)
# bootloadHID HIDBootFlash compatible (ATmega32A)
# USBasp USBaspLoader (ATmega328P)
# ARM:
# kiibohd Input:Club Kiibohd bootloader (only used on their boards)
# stm32duino STM32Duino (STM32F103x8)
# stm32-dfu STM32 USB DFU in ROM
# apm32-dfu APM32 USB DFU in ROM
#
# BOOTLOADER_SIZE can still be defined manually, but it's recommended
# you add any possible configuration to this list
@@ -95,6 +99,20 @@ ifdef BOOTLOADER_SIZE
OPT_DEFS += -DBOOTLOADER_SIZE=$(strip $(BOOTLOADER_SIZE))
endif
ifeq ($(strip $(BOOTLOADER)), stm32-dfu)
OPT_DEFS += -DBOOTLOADER_STM32_DFU
# Options to pass to dfu-util when flashing
DFU_ARGS ?= -d 0483:DF11 -a 0 -s 0x08000000:leave
DFU_SUFFIX_ARGS ?= -v 0483 -p DF11
endif
ifeq ($(strip $(BOOTLOADER)), apm32-dfu)
OPT_DEFS += -DBOOTLOADER_APM32_DFU
# Options to pass to dfu-util when flashing
DFU_ARGS ?= -d 314B:0106 -a 0 -s 0x08000000:leave
DFU_SUFFIX_ARGS ?= -v 314B -p 0106
endif
ifeq ($(strip $(BOOTLOADER)), kiibohd)
OPT_DEFS += -DBOOTLOADER_KIIBOHD
ifeq ($(strip $(MCU_ORIG)), MK20DX128)
@@ -104,10 +122,10 @@ ifeq ($(strip $(BOOTLOADER)), kiibohd)
MCU_LDSCRIPT = MK20DX256BLDR8
endif
# Options to pass to dfu-util when flashing
DFU_ARGS = -d 1C11:B007
DFU_SUFFIX_ARGS = -v 1C11 -p B007
endif
ifeq ($(strip $(BOOTLOADER)), stm32duino)
OPT_DEFS += -DBOOTLOADER_STM32DUINO
MCU_LDSCRIPT = STM32F103x8_stm32duino_bootloader
@@ -115,6 +133,7 @@ ifeq ($(strip $(BOOTLOADER)), stm32duino)
# STM32F103 does NOT have an USB bootloader in ROM (only serial), so setting anything here does not make much sense
STM32_BOOTLOADER_ADDRESS = 0x80000000
DFU_ARGS = -d 1EAF:0003 -a2 -R
# Options to pass to dfu-util when flashing
DFU_ARGS = -d 1EAF:0003 -a 2 -R
DFU_SUFFIX_ARGS = -v 1EAF -p 0003
endif

View File

@@ -24,6 +24,8 @@ QUANTUM_SRC += \
ifeq ($(strip $(DEBUG_MATRIX_SCAN_RATE_ENABLE)), yes)
OPT_DEFS += -DDEBUG_MATRIX_SCAN_RATE
CONSOLE_ENABLE = yes
else ifeq ($(strip $(DEBUG_MATRIX_SCAN_RATE_ENABLE)), api)
OPT_DEFS += -DDEBUG_MATRIX_SCAN_RATE
endif
ifeq ($(strip $(API_SYSEX_ENABLE)), yes)

View File

@@ -1,26 +1,20 @@
# Quantum Mechanical Keyboard Firmware
[![Current Version](https://img.shields.io/github/tag/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/tags)
[![Build Status](https://travis-ci.org/qmk/qmk_firmware.svg?branch=master)](https://travis-ci.org/qmk/qmk_firmware)
[![Discord](https://img.shields.io/discord/440868230475677696.svg)](https://discord.gg/Uq7gcHh)
[![Docs Status](https://img.shields.io/badge/docs-ready-orange.svg)](https://docs.qmk.fm)
[![GitHub contributors](https://img.shields.io/github/contributors/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/pulse/monthly)
[![GitHub forks](https://img.shields.io/github/forks/qmk/qmk_firmware.svg?style=social&label=Fork)](https://github.com/qmk/qmk_firmware/)
## What is QMK Firmware?
QMK (*Quantum Mechanical Keyboard*) is an open source community centered around developing computer input devices. The community encompasses all sorts of input devices, such as keyboards, mice, and MIDI devices. A core group of collaborators maintains [QMK Firmware](https://github.com/qmk/qmk_firmware), [QMK Configurator](https://config.qmk.fm), [QMK Toolbox](https://github.com/qmk/qmk_toolbox), [qmk.fm](https://qmk.fm), and this documentation with the help of community members like you.
## Get Started
Totally new to QMK? There are two ways to get started:
<div class="flex-container">
* Basic: [QMK Configurator](https://config.qmk.fm)
* Just select your keyboard from the dropdown and program your keyboard.
* We have an [introductory video](https://www.youtube.com/watch?v=-imgglzDMdY) you can watch.
* There is also an overview [document you can read](newbs_building_firmware_configurator.md).
* Advanced: [Use The Source](newbs.md)
* More powerful, but harder to use
?> **Basic** [QMK Configurator](newbs_building_firmware_configurator.md) <br>
User friendly graphical interfaces, no programming knowledge required.
?> **Advanced** [Use The Source](newbs.md) <br>
More powerful, but harder to use.
</div>
## Make It Yours

View File

@@ -3,7 +3,6 @@
* [Setup](newbs_getting_started.md)
* [Building Your First Firmware](newbs_building_firmware.md)
* [Flashing Firmware](newbs_flashing.md)
* [Testing and Debugging](newbs_testing_debugging.md)
* [Getting Help/Support](support.md)
* [Other Resources](newbs_learn_more_resources.md)
* [Syllabus](syllabus.md)
@@ -11,7 +10,8 @@
* FAQs
* [General FAQ](faq_general.md)
* [Build/Compile QMK](faq_build.md)
* [Debugging/Troubleshooting QMK](faq_debug.md)
* [Troubleshooting QMK](faq_misc.md)
* [Debugging QMK](faq_debug.md)
* [Keymap FAQ](faq_keymap.md)
* [Glossary](reference_glossary.md)

View File

@@ -17,7 +17,7 @@ or just:
Note that running `make` with `sudo` is generally ***not*** a good idea, and you should use one of the former methods, if possible.
### Linux `udev` Rules
### Linux `udev` Rules :id=linux-udev-rules
On Linux, you'll need proper privileges to communicate with the bootloader device. You can either use `sudo` when flashing firmware (not recommended), or place [this file](https://github.com/qmk/qmk_firmware/tree/master/util/udev/50-qmk.rules) into `/etc/udev/rules.d/`.

View File

@@ -2,7 +2,94 @@
This page details various common questions people have about troubleshooting their keyboards.
# Debug Console
## Debugging :id=debugging
Your keyboard will output debug information if you have `CONSOLE_ENABLE = yes` in your `rules.mk`. By default the output is very limited, but you can turn on debug mode to increase the amount of debug output. Use the `DEBUG` keycode in your keymap, use the [Command](feature_command.md) feature to enable debug mode, or add the following code to your keymap.
```c
void keyboard_post_init_user(void) {
// Customise these values to desired behaviour
debug_enable=true;
debug_matrix=true;
//debug_keyboard=true;
//debug_mouse=true;
}
```
## Debugging Tools
There are two different tools you can use to debug your keyboard.
### Debugging With QMK Toolbox
For compatible platforms, [QMK Toolbox](https://github.com/qmk/qmk_toolbox) can be used to display debug messages from your keyboard.
### Debugging With hid_listen
Prefer a terminal based solution? [hid_listen](https://www.pjrc.com/teensy/hid_listen.html), provided by PJRC, can also be used to display debug messages. Prebuilt binaries for Windows,Linux,and MacOS are available.
## Sending Your Own Debug Messages
Sometimes it's useful to print debug messages from within your [custom code](custom_quantum_functions.md). Doing so is pretty simple. Start by including `print.h` at the top of your file:
```c
#include "print.h"
```
After that you can use a few different print functions:
* `print("string")`: Print a simple string.
* `uprintf("%s string", var)`: Print a formatted string
* `dprint("string")` Print a simple string, but only when debug mode is enabled
* `dprintf("%s string", var)`: Print a formatted string, but only when debug mode is enabled
## Debug Examples
Below is a collection of real world debugging examples. For additional information, refer to [Debugging/Troubleshooting QMK](faq_debug.md).
### Which matrix position is this keypress?
When porting, or when attempting to diagnose pcb issues, it can be useful to know if a keypress is scanned correctly. To enable logging for this scenario, add the following code to your keymaps `keymap.c`
```c
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
// If console is enabled, it will print the matrix position and status of each key pressed
#ifdef CONSOLE_ENABLE
uprintf("KL: kc: 0x%04X, col: %u, row: %u, pressed: %b, time: %u, interrupt: %b, count: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed, record->event.time, record->tap.interrupted, record->tap.count);
#endif
return true;
}
```
Example output
```text
Waiting for device:.......
Listening:
KL: kc: 169, col: 0, row: 0, pressed: 1
KL: kc: 169, col: 0, row: 0, pressed: 0
KL: kc: 174, col: 1, row: 0, pressed: 1
KL: kc: 174, col: 1, row: 0, pressed: 0
KL: kc: 172, col: 2, row: 0, pressed: 1
KL: kc: 172, col: 2, row: 0, pressed: 0
```
### How long did it take to scan for a keypress?
When testing performance issues, it can be useful to know the frequency at which the switch matrix is being scanned. To enable logging for this scenario, add the following code to your keymaps `config.h`
```c
#define DEBUG_MATRIX_SCAN_RATE
```
Example output
```text
> matrix scan frequency: 315
> matrix scan frequency: 313
> matrix scan frequency: 316
> matrix scan frequency: 316
> matrix scan frequency: 316
> matrix scan frequency: 316
```
## `hid_listen` Can't Recognize Device
When debug console of your device is not ready you will see like this:
@@ -11,7 +98,7 @@ When debug console of your device is not ready you will see like this:
Waiting for device:.........
```
once the device is plugged in then *hid_listen* finds it you will get this message:
Once the device is plugged in then *hid_listen* finds it you will get this message:
```
Waiting for new device:.........................
@@ -20,129 +107,12 @@ Listening:
If you can't get this 'Listening:' message try building with `CONSOLE_ENABLE=yes` in [Makefile]
You may need privilege to access the device on OS like Linux.
- try `sudo hid_listen`
You may need privileges to access the device an OS like Linux. Try `sudo hid_listen`.
## Can't Get Message on Console
Check:
- *hid_listen* finds your device. See above.
- Enable debug with pressing **Magic**+d. See [Magic Commands](https://github.com/tmk/tmk_keyboard#magic-commands).
- set `debug_enable=true`. See [Testing and Debugging](newbs_testing_debugging.md#debugging)
- try using 'print' function instead of debug print. See **common/print.h**.
- disconnect other devices with console function. See [Issue #97](https://github.com/tmk/tmk_keyboard/issues/97).
***
# Miscellaneous
## Safety Considerations
You probably don't want to "brick" your keyboard, making it impossible
to rewrite firmware onto it. Here are some of the parameters to show
what things are (and likely aren't) too risky.
- If your keyboard map does not include RESET, then, to get into DFU
mode, you will need to press the reset button on the PCB, which
requires unscrewing the bottom.
- Messing with tmk_core / common files might make the keyboard
inoperable
- Too large a .hex file is trouble; `make dfu` will erase the block,
test the size (oops, wrong order!), which errors out, failing to
flash the keyboard, leaving it in DFU mode.
- To this end, note that the maximum .hex file size on Planck is
7000h (28672 decimal)
```
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
```
- The above file is of size 22396/577ch, which is less than
28672/7000h
- As long as you have a suitable alternative .hex file around, you
can retry, loading that one
- Some of the options you might specify in your keyboard's Makefile
consume extra memory; watch out for BOOTMAGIC_ENABLE,
MOUSEKEY_ENABLE, EXTRAKEY_ENABLE, CONSOLE_ENABLE, API_SYSEX_ENABLE
- DFU tools do /not/ allow you to write into the bootloader (unless
you throw in extra fruit salad of options), so there is little risk
there.
- EEPROM has around a 100000 write cycle. You shouldn't rewrite the
firmware repeatedly and continually; that'll burn the EEPROM
eventually.
## NKRO Doesn't work
First you have to compile firmware with this build option `NKRO_ENABLE` in **Makefile**.
Try `Magic` **N** command(`LShift+RShift+N` by default) when **NKRO** still doesn't work. You can use this command to toggle between **NKRO** and **6KRO** mode temporarily. In some situations **NKRO** doesn't work you need to switch to **6KRO** mode, in particular when you are in BIOS.
If your firmware built with `BOOTMAGIC_ENABLE` you need to turn its switch on by `BootMagic` **N** command(`Space+N` by default). This setting is stored in EEPROM and kept over power cycles.
https://github.com/tmk/tmk_keyboard#boot-magic-configuration---virtual-dip-switch
## TrackPoint Needs Reset Circuit (PS/2 Mouse Support)
Without reset circuit you will have inconsistent result due to improper initialize of the hardware. See circuit schematic of TPM754.
- http://geekhack.org/index.php?topic=50176.msg1127447#msg1127447
- http://www.mikrocontroller.net/attachment/52583/tpm754.pdf
## Can't Read Column of Matrix Beyond 16
Use `1UL<<16` instead of `1<<16` in `read_cols()` in [matrix.h] when your columns goes beyond 16.
In C `1` means one of [int] type which is [16 bit] in case of AVR so you can't shift left more than 15. You will get unexpected zero when you say `1<<16`. You have to use [unsigned long] type with `1UL`.
http://deskthority.net/workshop-f7/rebuilding-and-redesigning-a-classic-thinkpad-keyboard-t6181-60.html#p146279
## Special Extra Key Doesn't Work (System, Audio Control Keys)
You need to define `EXTRAKEY_ENABLE` in `rules.mk` to use them in QMK.
```
EXTRAKEY_ENABLE = yes # Audio control and System control
```
## Wakeup from Sleep Doesn't Work
In Windows check `Allow this device to wake the computer` setting in Power **Management property** tab of **Device Manager**. Also check BIOS setting.
Pressing any key during sleep should wake host.
## Using Arduino?
**Note that Arduino pin naming is different from actual chip.** For example, Arduino pin `D0` is not `PD0`. Check circuit with its schematics yourself.
- http://arduino.cc/en/uploads/Main/arduino-leonardo-schematic_3b.pdf
- http://arduino.cc/en/uploads/Main/arduino-micro-schematic.pdf
Arduino Leonardo and micro have **ATMega32U4** and can be used for TMK, though Arduino bootloader may be a problem.
## Enabling JTAG
By default, the JTAG debugging interface is disabled as soon as the keyboard starts up. JTAG-capable MCUs come from the factory with the `JTAGEN` fuse set, and it takes over certain pins of the MCU that the board may be using for the switch matrix, LEDs, etc.
If you would like to keep JTAG enabled, just add the following to your `config.h`:
```c
#define NO_JTAG_DISABLE
```
## USB 3 Compatibility
I heard some people have a problem with USB 3 port, try USB 2 port.
## Mac Compatibility
### OS X 10.11 and Hub
https://geekhack.org/index.php?topic=14290.msg1884034#msg1884034
## Problem on BIOS (UEFI)/Resume (Sleep & Wake)/Power Cycles
Some people reported their keyboard stops working on BIOS and/or after resume(power cycles).
As of now root of its cause is not clear but some build options seem to be related. In Makefile try to disable those options like `CONSOLE_ENABLE`, `NKRO_ENABLE`, `SLEEP_LED_ENABLE` and/or others.
https://github.com/tmk/tmk_keyboard/issues/266
https://geekhack.org/index.php?topic=41989.msg1967778#msg1967778
- Enable debug by pressing **Magic**+d. See [Magic Commands](https://github.com/tmk/tmk_keyboard#magic-commands).
- Set `debug_enable=true`. See [Debugging](#debugging)
- Try using `print` function instead of debug print. See **common/print.h**.
- Disconnect other devices with console function. See [Issue #97](https://github.com/tmk/tmk_keyboard/issues/97).

View File

@@ -34,7 +34,7 @@ Additionally, you can find additional `git` and GitHub related links [here](newb
Awesome! Open up a Pull Request for it. We'll review the code, and merge it!
### What if I want to do brand it with `QMK`?
### What if I want to brand it with `QMK`?
That's amazing! We would love to assist you with that!

117
docs/faq_misc.md Normal file
View File

@@ -0,0 +1,117 @@
# Miscellaneous FAQ
## How do I test my keyboard? :id=testing
Testing your keyboard is usually pretty straightforward. Press every single key and make sure it sends the keys you expect. You can use [QMK Configurator](https://config.qmk.fm/#/test/)'s test mode to check your keyboard, even if it doesn't run QMK.
## Safety Considerations
You probably don't want to "brick" your keyboard, making it impossible
to rewrite firmware onto it. Here are some of the parameters to show
what things are (and likely aren't) too risky.
- If your keyboard map does not include RESET, then, to get into DFU
mode, you will need to press the reset button on the PCB, which
requires unscrewing the bottom.
- Messing with tmk_core / common files might make the keyboard
inoperable
- Too large a .hex file is trouble; `make dfu` will erase the block,
test the size (oops, wrong order!), which errors out, failing to
flash the keyboard, leaving it in DFU mode.
- To this end, note that the maximum .hex file size on e.g. Planck
is 7000h (28672 decimal)
```
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
```
- The above file is of size 22396/577ch, which is less than
28672/7000h
- As long as you have a suitable alternative .hex file around, you
can retry, loading that one
- Some of the options you might specify in your keyboard's Makefile
consume extra memory; watch out for BOOTMAGIC_ENABLE,
MOUSEKEY_ENABLE, EXTRAKEY_ENABLE, CONSOLE_ENABLE, API_SYSEX_ENABLE
- DFU tools do /not/ allow you to write into the bootloader (unless
you throw in an extra fruit salad of options), so there is little risk
there.
- EEPROM has around a 100000 (100k) write cycle. You shouldn't rewrite
the firmware repeatedly and continually; that'll burn the EEPROM
eventually.
## NKRO Doesn't work
First you have to compile firmware with the build option `NKRO_ENABLE` in **Makefile**.
Try `Magic` **N** command(`LShift+RShift+N` by default) when **NKRO** still doesn't work. You can use this command to toggle between **NKRO** and **6KRO** mode temporarily. In some situations **NKRO** doesn't work and you will need to switch to **6KRO** mode, in particular when you are in BIOS.
If your firmware was built with `BOOTMAGIC_ENABLE` you need to turn its switch on by `BootMagic` **N** command(`Space+N` by default). This setting is stored in EEPROM and kept over power cycles.
https://github.com/tmk/tmk_keyboard#boot-magic-configuration---virtual-dip-switch
## TrackPoint Needs Reset Circuit (PS/2 Mouse Support)
Without reset circuit you will have inconsistent result due to improper initialization of the hardware. See circuit schematic of TPM754:
- http://geekhack.org/index.php?topic=50176.msg1127447#msg1127447
- http://www.mikrocontroller.net/attachment/52583/tpm754.pdf
## Can't Read Column of Matrix Beyond 16
Use `1UL<<16` instead of `1<<16` in `read_cols()` in [matrix.h] when your columns goes beyond 16.
In C `1` means one of [int] type which is [16 bit] in case of AVR, so you can't shift left more than 15. Thus, calculating `1<<16` will unexpectedly equal zero. To work around this, you have to use [unsigned long] type with `1UL`.
http://deskthority.net/workshop-f7/rebuilding-and-redesigning-a-classic-thinkpad-keyboard-t6181-60.html#p146279
## Special Extra Key Doesn't Work (System, Audio Control Keys)
You need to define `EXTRAKEY_ENABLE` in `rules.mk` to use them in QMK.
```
EXTRAKEY_ENABLE = yes # Audio control and System control
```
## Wake from Sleep Doesn't Work
In Windows check `Allow this device to wake the computer` setting in **Power Management** property tab of **Device Manager**. Also check your BIOS settings. Pressing any key during sleep should wake host.
## Using Arduino?
**Note that Arduino pin naming is different from actual chip.** For example, Arduino pin `D0` is not `PD0`. Check circuit with its schematics yourself.
- http://arduino.cc/en/uploads/Main/arduino-leonardo-schematic_3b.pdf
- http://arduino.cc/en/uploads/Main/arduino-micro-schematic.pdf
Arduino Leonardo and micro have **ATMega32U4** and can be used for TMK, though Arduino bootloader may be a problem.
## Enabling JTAG
By default, the JTAG debugging interface is disabled as soon as the keyboard starts up. JTAG-capable MCUs come from the factory with the `JTAGEN` fuse set, and it takes over certain pins of the MCU that the board may be using for the switch matrix, LEDs, etc.
If you would like to keep JTAG enabled, just add the following to your `config.h`:
```c
#define NO_JTAG_DISABLE
```
## USB 3 Compatibility
Some problems can be fixed by switching from a USB 3.x port to a USB 2.0 port.
## Mac Compatibility
### OS X 10.11 and Hub
See here: https://geekhack.org/index.php?topic=14290.msg1884034#msg1884034
## Problem in BIOS (UEFI) Setup/Resume (Sleep & Wake)/Power Cycles
Some people reported their keyboard stops working in BIOS and/or after resume(power cycles).
As of now the root cause is not clear, but some build options seem to be related. In Makefile, try to disable options like `CONSOLE_ENABLE`, `NKRO_ENABLE`, `SLEEP_LED_ENABLE` and/or others.
More info:
- https://github.com/tmk/tmk_keyboard/issues/266
- https://geekhack.org/index.php?topic=41989.msg1967778#msg1967778

View File

@@ -206,7 +206,7 @@ It's possible to enable a "scroll button/s" that when pressed will cause the mou
To enable the feature, you must set a scroll button mask as follows:
```c
#define PS2_MOUSE_SCROLL_BTN_MASK (1<<PS2_MOUSE_BUTTON_MIDDLE) /* Default */
#define PS2_MOUSE_SCROLL_BTN_MASK (1<<PS2_MOUSE_BTN_MIDDLE) /* Default */
```
To disable the scroll button feature:

View File

@@ -196,7 +196,7 @@ it easy to use your underglow LEDs as status indicators to show which keyboard l
By default, 8 layers are possible. This can be expanded to as many as 32 by overriding the definition of `RGBLIGHT_MAX_LAYERS` in `config.h` (e.g. `#define RGBLIGHT_MAX_LAYERS 32`). Please note, if you use a split keyboard, you will need to flash both sides of the split after changing this. Also, increasing the maximum will increase the firmware size, and will slow sync on split keyboards.
To define a layer, we modify `keymap.c` to list out LED ranges and the colors we want to overlay on them using an array of `rgblight_segment_t` using the `RGBLIGHT_LAYER_SEGMENTS` macro. We can define multiple layers and enable/disable them independently:
To define a layer, we modify `keymap.c` to list the LED ranges and the colors we want to overlay on them using an array of `rgblight_segment_t` using the `RGBLIGHT_LAYER_SEGMENTS` macro. We can define multiple layers and enable/disable them independently:
```c
// Light LEDs 6 to 9 and 12 to 15 red when caps lock is active. Hard to ignore!
@@ -212,6 +212,10 @@ const rgblight_segment_t PROGMEM my_layer1_layer[] = RGBLIGHT_LAYER_SEGMENTS(
const rgblight_segment_t PROGMEM my_layer2_layer[] = RGBLIGHT_LAYER_SEGMENTS(
{11, 2, HSV_PURPLE}
);
// Light LEDs 13 & 14 in green when keyboard layer 3 is active
const rgblight_segment_t PROGMEM my_layer3_layer[] = RGBLIGHT_LAYER_SEGMENTS(
{13, 2, HSV_GREEN}
);
// etc..
```
@@ -222,7 +226,8 @@ We combine these layers into an array using the `RGBLIGHT_LAYERS_LIST` macro, an
const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
my_capslock_layer,
my_layer1_layer, // Overrides caps lock layer
my_layer2_layer // Overrides other layers
my_layer2_layer, // Overrides other layers
my_layer3_layer // Overrides other layers
);
void keyboard_post_init_user(void) {
@@ -238,17 +243,21 @@ Everything above just configured the definition of each lighting layer.
We can now enable and disable the lighting layers whenever the state of the keyboard changes:
```c
layer_state_t layer_state_set_user(layer_state_t state) {
// Both layers will light up if both kb layers are active
rgblight_set_layer_state(1, layer_state_cmp(state, 1));
rgblight_set_layer_state(2, layer_state_cmp(state, 2));
return state;
}
bool led_update_user(led_t led_state) {
rgblight_set_layer_state(0, led_state.caps_lock);
return true;
}
layer_state_t default_layer_state_set_user(layer_state_t state) {
rgblight_set_layer_state(1, layer_state_cmp(state, _DVORAK));
return state;
}
layer_state_t layer_state_set_user(layer_state_t state) {
rgblight_set_layer_state(2, layer_state_cmp(state, _FN));
rgblight_set_layer_state(3, layer_state_cmp(state, _ADJUST));
return state;
}
```
### Lighting layer blink :id=lighting-layer-blink
@@ -352,6 +361,7 @@ rgblight_sethsv(HSV_GREEN, 2); // led 2
|`rgblight_step_noeeprom()` |Change the mode to the next RGB animation in the list of enabled RGB animations (not written to EEPROM) |
|`rgblight_step_reverse()` |Change the mode to the previous RGB animation in the list of enabled RGB animations |
|`rgblight_step_reverse_noeeprom()` |Change the mode to the previous RGB animation in the list of enabled RGB animations (not written to EEPROM) |
|`rgblight_reload_from_eeprom()` |Reload the effect configuration (enabled, mode and color) from EEPROM |
#### effects mode disable/enable
|Function |Description |

View File

@@ -1,242 +1,251 @@
# Flashing Instructions and Bootloader Information
There are quite a few different types of bootloaders that keyboards use, and just about all of them use a different flashing method. Luckily, projects like the [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) aim to be compatible with all the different types without having to think about it much, but this article will describe the different types of bootloaders, and available methods for flashing them.
There are quite a few different types of bootloaders that keyboards use, and almost all of them use their own flashing method and tools. Luckily, projects like the [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) aim to support as many of them as possible, but this article will describe the different types of bootloaders, and available methods for flashing them.
If you have a bootloader selected with the `BOOTLOADER` variable in your `rules.mk`, QMK will automatically calculate if your .hex file is the right size to be flashed to the device, and output the total size in bytes (along with the max).
For AVR-based keyboards, QMK will automatically calculate if your `.hex` file is the right size to be flashed to the device based on the `BOOTLOADER` value set in `rules.mk`, and output the total size in bytes (along with the max).
## DFU
You will also be able to use the CLI to flash your keyboard, by running:
```
$ qmk flash -kb <keyboard> -km <keymap>
```
See the [`qmk flash`](cli_commands.md#qmk-flash) documentation for more information.
Atmel's DFU bootloader comes on all atmega32u4 chips by default, and is used by many keyboards that have their own ICs on their PCBs (Older OLKB boards, Clueboards). Some keyboards may also use LUFA's DFU bootloader (or QMK's fork) (Newer OLKB boards) that adds in additional features specific to that hardware.
## Atmel DFU
To ensure compatibility with the DFU bootloader, make sure this block is present your `rules.mk` (optionally with `lufa-dfu` or `qmk-dfu` instead):
Atmel's DFU bootloader comes on all USB AVRs by default (except for 16/32U4RC), and is used by many keyboards that have their own ICs on their PCBs (older OLKB boards, Clueboards). Some keyboards may also use LUFA's DFU bootloader, or QMK's fork of it (newer OLKB boards), that adds in additional features specific to that hardware.
To ensure compatibility with the DFU bootloader, make sure this block is present in your `rules.mk` (optionally with `lufa-dfu` or `qmk-dfu` instead):
```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
```
Compatible flashers:
* [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (recommended GUI)
* [dfu-programmer](https://github.com/dfu-programmer/dfu-programmer) / `:dfu` in QMK (recommended command line)
* [dfu-programmer](https://github.com/dfu-programmer/dfu-programmer) / `:dfu` target in QMK (recommended command line)
Flashing sequence:
1. Press the `RESET` keycode, or tap the RESET button (or short RST to GND).
1. Enter the bootloader using any of the following methods:
* Press the `RESET` keycode
* Press the `RESET` button on the PCB if available
* Short RST to GND quickly
2. Wait for the OS to detect the device
3. Erase the memory (may be done automatically)
3. Erase the flash memory (will be done automatically if using the Toolbox or CLI/`make` command)
4. Flash a .hex file
5. Reset the device into application mode (may be done automatically)
or:
make <keyboard>:<keymap>:dfu
5. Reset the device into application mode (will be done automatically as above)
### QMK DFU
QMK has a fork of the LUFA DFU bootloader that allows for a simple matrix scan for exiting the bootloader and returning to the application, as well as flashing an LED/making a ticking noise with a speaker when things are happening. To enable these features, use this block in your `config.h` (The key that exits the bootloader needs to be hooked-up to the INPUT and OUTPUT defined here):
QMK maintains [a fork of the LUFA DFU bootloader](https://github.com/qmk/lufa/tree/master/Bootloaders/DFU) that additionally performs a simple matrix scan for exiting the bootloader and returning to the application, as well as flashing an LED/making a ticking noise with a speaker when things are happening. To enable these features, add the following defines to your `config.h`:
#define QMK_ESC_OUTPUT F1 // usually COL
#define QMK_ESC_INPUT D5 // usually ROW
#define QMK_LED E6
#define QMK_SPEAKER C6
```c
#define QMK_ESC_OUTPUT F1 // COL pin if COL2ROW
#define QMK_ESC_INPUT D5 // ROW pin if COL2ROW
// Optional:
//#define QMK_LED E6
//#define QMK_SPEAKER C6
```
Currently we do not recommend making `QMK_ESC` the same key as the one designated for [Bootmagic Lite](feature_bootmagic.md#bootmagic-lite), as holding it down will cause the MCU to loop back and forth between entering and exiting the bootloader.
The Manufacturer and Product names are automatically pulled from your `config.h`, and "Bootloader" is added to the product.
The manufacturer and product strings are automatically pulled from `config.h`, with " Bootloader" appended to the product string.
To generate this bootloader, use the `bootloader` target, eg `make planck/rev4:default:bootloader`.
To generate this bootloader, use the `bootloader` target, eg. `make planck/rev4:default:bootloader`. To generate a production-ready .hex file (combining QMK and the bootloader), use the `production` target, eg. `make planck/rev4:default:production`.
To generate a production-ready .hex file (containing the application and the bootloader), use the `production` target, eg `make planck/rev4:default:production`.
### `make` Targets
### DFU commands
There are a number of DFU commands that you can use to flash firmware to a DFU device:
* `:dfu` - This is the normal option and waits until a DFU device is available, and then flashes the firmware. This will check every 5 seconds, to see if a DFU device has appeared.
* `:dfu-ee` - This flashes an `eep` file instead of the normal hex. This is uncommon.
* `:dfu-split-left` - This flashes the normal firmware, just like the default option (`:dfu`). However, this also flashes the "Left Side" EEPROM file for split keyboards. _This is ideal for Elite C based split keyboards._
* `:dfu-split-right` - This flashes the normal firmware, just like the default option (`:dfu`). However, this also flashes the "Right Side" EEPROM file for split keyboards. _This is ideal for Elite C based split keyboards._
* `:dfu`: Checks every 5 seconds until a DFU device is available, and then flashes the firmware.
* `:dfu-split-left` and `:dfu-split-right`: Flashes the firmware as with `:dfu`, but also sets the handedness setting in EEPROM. This is ideal for Elite-C-based split keyboards.
## Caterina
Arduino boards and their clones use the [Caterina bootloader](https://github.com/arduino/ArduinoCore-avr/tree/master/bootloaders/caterina) (any keyboard built with a Pro Micro, or clone), and uses the avr109 protocol to communicate through virtual serial. Bootloaders like [A-Star](https://www.pololu.com/docs/0J61/9) are based on Caterina.
Arduino boards and their clones use the [Caterina bootloader](https://github.com/arduino/ArduinoCore-avr/tree/master/bootloaders/caterina) or a variant of it (any keyboard built with a Pro Micro or clone, and the Pololu A-Star), and uses the AVR109 protocol to communicate through virtual serial.
To ensure compatibility with the Caterina bootloader, make sure this block is present your `rules.mk`:
To ensure compatibility with the Caterina bootloader, make sure this block is present in your `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
```
Compatible flashers:
* [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (recommended GUI)
* [avrdude](http://www.nongnu.org/avrdude/) with avr109 / `:avrdude` (recommended command line)
* [avrdude](http://www.nongnu.org/avrdude/) with the `avr109` programmer / `:avrdude` target in QMK (recommended command line)
* [AVRDUDESS](https://github.com/zkemble/AVRDUDESS)
Flashing sequence:
1. Press the `RESET` keycode, or short RST to GND quickly (you only have 7 seconds to flash once it enters)
1. Enter the bootloader using any of the following methods (you only have 7 seconds to flash once it enters; some variants may require you to reset twice within 750 milliseconds):
* Press the `RESET` keycode
* Press the `RESET` button on the PCB if available
* Short RST to GND quickly
2. Wait for the OS to detect the device
3. Flash a .hex file
4. Wait for the device to reset automatically
or
### `make` Targets
make <keyboard>:<keymap>:avrdude
* `:avrdude`: Checks every 5 seconds until a Caterina device is available (by detecting a new COM port), and then flashes the firmware.
* `:avrdude-loop`: Flashes the firmware as with `:avrdude`, but after each device is flashed, will attempt to flash again. This is useful for bulk flashing. Hit Ctrl+C to escape the loop.
* `:avrdude-split-left` and `:avrdude-split-right`: Flashes the firmware as with `:avrdude`, but also sets the handedness setting in EEPROM. This is ideal for Pro Micro-based split keyboards.
## HalfKay
### Caterina commands
HalfKay is a super-slim bootloader developed by PJRC that presents itself as an HID device (which requires no additional driver), and comes preflashed on all Teensys, namely the 2.0. It is currently closed-source, and thus once overwritten (eg. via ISP flashing another bootloader), cannot be restored.
There are a number of DFU commands that you can use to flash firmware to a DFU device:
* `:avrdude` - This is the normal option which waits until a Caterina device is available (by detecting a new COM port), and then flashes the firmware.
* `:avrdude-loop` - This runs the same command as `:avrdude`, but after each device is flashed, it will attempt to flash again. This is useful for bulk flashing. _This requires you to manually escape the loop by hitting Ctrl+C._
* `:avrdude-split-left` - This flashes the normal firmware, just like the default option (`:avrdude`). However, this also flashes the "Left Side" EEPROM file for split keyboards. _This is ideal for Pro Micro based split keyboards._
* `:avrdude-split-right` - This flashes the normal firmware, just like the default option (`:avrdude`). However, this also flashes the "Right Side" EEPROM file for split keyboards. _This is ideal for Pro Micro based split keyboards._
## Halfkay
Halfkay is a super-slim protocol developed by PJRC that uses HID, and comes on all Teensys (namely the 2.0).
To ensure compatibility with the Halfkay bootloader, make sure this block is present your `rules.mk`:
To ensure compatibility with the Halfkay bootloader, make sure this block is present in your `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
```
Compatible flashers:
* [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (recommended GUI)
* [Teensy Loader Command Line](https://www.pjrc.com/teensy/loader_cli.html) / `:teensy` target in QMK (recommended command line)
* [Teensy Loader](https://www.pjrc.com/teensy/loader.html)
* [Teensy Loader Command Line](https://www.pjrc.com/teensy/loader_cli.html) (recommended command line)
Flashing sequence:
1. Press the `RESET` keycode, or short RST to GND quickly (you only have 7 seconds to flash once it enters)
1. Enter the bootloader using any of the following methods (you only have 7 seconds to flash once it enters):
* Press the `RESET` keycode
* Press the `RESET` button on the Teensy or PCB if available
* short RST to GND quickly
2. Wait for the OS to detect the device
3. Flash a .hex file
4. Reset the device into application mode (may be done automatically)
## USBasploader
USBasploader is a bootloader developed by matrixstorm. It is used in some non-USB AVR chips such as the ATmega328P, which run V-USB.
USBasploader is a bootloader originally by [Objective Development](https://www.obdev.at/products/vusb/usbasploader.html). It emulates a USBasp ISP programmer and is used in some non-USB AVR chips such as the ATmega328P, which run V-USB.
To ensure compatibility with the USBasploader bootloader, make sure this block is present in your `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
```
Compatible flashers:
* [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (recommended GUI)
* [avrdude](http://www.nongnu.org/avrdude/) with the `usbasp` programmer
* [avrdude](http://www.nongnu.org/avrdude/) with the `usbasp` programmer / `:usbasp` target in QMK (recommended command line)
* [AVRDUDESS](https://github.com/zkemble/AVRDUDESS)
Flashing sequence:
1. Press the `RESET` keycode, or keep the boot pin shorted to GND while quickly shorting RST to GND
1. Enter the bootloader using any of the following methods:
* Press the `RESET` keycode
* Keep the `BOOT` button held while quickly tapping the `RESET` button on the PCB
2. Wait for the OS to detect the device
3. Flash a .hex file
4. Reset the device into application mode (may be done automatically)
4. Press the `RESET` button on the PCB or short RST to GND
## BootloadHID
BootloadHID is a USB bootloader for AVR microcontrollers. The uploader tool requires no kernel level driver on Windows and can therefore be run without installing any DLLs.
BootloadHID is a USB bootloader for AVR microcontrollers. It presents itself as an HID input device, much like HalfKay, and can therefore be run without installing any driver on Windows.
To ensure compatibility with the bootloadHID bootloader, make sure this block is present your `rules.mk`:
To ensure compatibility with the bootloadHID bootloader, make sure this block is present in your `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
```
Compatible flashers:
* [HIDBootFlash](http://vusb.wikidot.com/project:hidbootflash) (recommended Windows GUI)
* [bootloadhid Command Line](https://www.obdev.at/products/vusb/bootloadhid.html) / `:BootloadHID` in QMK (recommended command line)
* [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (recommended GUI)
* [bootloadHID CLI](https://www.obdev.at/products/vusb/bootloadhid.html) / `:bootloadHID` target in QMK (recommended command line)
* [HIDBootFlash](http://vusb.wikidot.com/project:hidbootflash)
Flashing sequence:
1. Enter the bootloader using any of the following methods:
* Tap the `RESET` keycode (may not work on all devices)
* Hold the salt key while plugging the keyboard in (usually documented within keyboard readme)
* Tap the `RESET` keycode
* Hold the salt key while plugging the keyboard in - for PS2AVRGB boards, this is usually the key connected to MCU pins A0 and B0, otherwise it will be documented in your keyboard's readme
2. Wait for the OS to detect the device
3. Flash a .hex file
4. Reset the device into application mode (may be done automatically)
or:
## STM32/APM32 DFU
make <keyboard>:<keymap>:bootloadHID
All STM32 and APM32 MCUs, except for F103 (see the [STM32duino section](#stm32duino)) come preloaded with a factory bootloader that cannot be modified nor deleted.
## STM32
To ensure compatibility with the STM32-DFU bootloader, make sure this block is present in your `rules.mk` (optionally with `apm32-dfu` instead):
All STM32 chips come preloaded with a factory bootloader that cannot be modified nor deleted. Some STM32 chips have bootloaders that do not come with USB programming (e.g. STM32F103) but the process is still the same.
At the moment, no `BOOTLOADER` variable is needed on `rules.mk` for STM32.
```make
# Bootloader selection
BOOTLOADER = stm32-dfu
```
Compatible flashers:
* [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (recommended GUI)
* [dfu-util](https://github.com/Stefan-Schmidt/dfu-util) / `:dfu-util` (recommended command line)
* [dfu-util](http://dfu-util.sourceforge.net/) / `:dfu-util` target in QMK (recommended command line)
Flashing sequence:
1. Enter the bootloader using any of the following methods:
* Tap the `RESET` keycode (may not work on STM32F042 devices)
* If a reset circuit is present, tap the RESET button
* Otherwise, you need to bridge BOOT0 to VCC (via BOOT0 button or bridge), short RESET to GND (via RESET button or bridge), and then let go of the BOOT0 bridge
* If a reset circuit is present, tap the `RESET` button on the PCB; some boards may also have a toggle switch that must be flipped
* Otherwise, you need to bridge `BOOT0` to VCC (via `BOOT0` button or jumper), short `RESET` to GND (via `RESET` button or jumper), and then let go of the `BOOT0` bridge
2. Wait for the OS to detect the device
3. Flash a .bin file
* You will receive a warning about the DFU signature; Just ignore it
4. Reset the device into application mode (may be done automatically)
* If you are building from command line (e.g. `make planck/rev6:default:dfu-util`), make sure that `:leave` is passed to the `DFU_ARGS` variable inside your `rules.mk` (e.g. `DFU_ARGS = -d 0483:df11 -a 0 -s 0x08000000:leave`) so that your device resets after flashing
### STM32 Commands
### `make` Targets
There are a number of DFU commands that you can use to flash firmware to a STM32 device:
* `:dfu-util`: Waits until an STM32 bootloader device is available, and then flashes the firmware.
* `:dfu-util-split-left` and `:dfu-util-split-right`: Flashes the firmware as with `:avrdude`, but also sets the handedness setting in EEPROM. This is ideal for Proton-C-based split keyboards.
* `:st-link-cli`: Allows you to flash the firmware via the ST-Link CLI utility, rather than dfu-util. Requires an ST-Link dongle.
* `:st-flash`: Allows you to flash the firmware via the `st-flash` utility from [STLink Tools](https://github.com/stlink-org/stlink), rather than dfu-util. Requires an ST-Link dongle.
* `:dfu-util` - The default command for flashing to STM32 devices, and will wait until an STM32 bootloader device is present.
* `:dfu-util-split-left` - This flashes the normal firmware, just like the default option (`:dfu-util`). However, this also configures the "Left Side" EEPROM setting for split keyboards.
* `:dfu-util-split-right` - This flashes the normal firmware, just like the default option (`:dfu-util`). However, this also configures the "Right Side" EEPROM setting for split keyboards.
* `:st-link-cli` - This allows you to flash the firmware via ST-LINK's CLI utility, rather than dfu-util.
* `:st-flash` - This allows you to flash the firmware via the `st-flash` utility from [STLink Tools](https://github.com/stlink-org/stlink), rather than dfu-util.
## STM32duino
This bootloader is used almost exclusively for STM32F103 boards, as they do not come with a USB DFU bootloader. The source code and prebuilt binaries can be found [here](https://github.com/rogerclarkmelbourne/STM32duino-bootloader).
To ensure compatibility with the STM32duino bootloader, make sure this block is present in your `rules.mk`:
```make
# Bootloader selection
BOOTLOADER = stm32duino
```
Compatible flashers:
* [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (recommended GUI)
* [dfu-util](http://dfu-util.sourceforge.net/) / `:dfu-util` target in QMK (recommended command line)
Flashing sequence:
1. Enter the bootloader using any of the following methods:
* Tap the `RESET` keycode
* If a reset circuit is present, tap the `RESET` button on the PCB
* Otherwise, you need to bridge `BOOT0` to VCC (via `BOOT0` button or jumper), short `RESET` to GND (via `RESET` button or jumper), and then let go of the `BOOT0` bridge
2. Wait for the OS to detect the device
3. Flash a .bin file
4. Reset the device into application mode (may be done automatically)
## Kiibohd DFU
Keyboards produced by Input Club use NXP Kinetis microcontrollers rather than STM32, and come with their own [custom bootloader](https://github.com/kiibohd/controller/tree/master/Bootloader), however the process and protocol is largely the same.
The `rules.mk` setting for this bootloader is `kiibohd`, but since this bootloader is limited to Input Club boards, it should not be necessary to set at keymap or user level.
Compatible flashers:
* [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (recommended GUI)
* [dfu-util](http://dfu-util.sourceforge.net/) / `:dfu-util` target in QMK (recommended command line)
Flashing sequence:
1. Enter the bootloader using any of the following methods:
* Tap the `RESET` keycode (this may only enter the MCU into a "secure" bootloader mode; see https://github.com/qmk/qmk_firmware/issues/6112)
* Press the `RESET` button on the PCB
2. Wait for the OS to detect the device
3. Flash a .bin file
4. Reset the device into application mode (may be done automatically)

View File

@@ -14,16 +14,32 @@ The full syntax of the `make` command is `<keyboard_folder>:<keymap>:<target>`,
The `<target>` means the following
* If no target is given, then it's the same as `all` below
* `all` compiles as many keyboard/revision/keymap combinations as specified. For example, `make planck/rev4:default` will generate a single .hex, while `make planck/rev4:all` will generate a hex for every keymap available to the planck.
* `flash`, `dfu`, `teensy`, `avrdude`, `dfu-util`, or `bootloadHID` compile and upload the firmware to the keyboard. If the compilation fails, then nothing will be uploaded. The programmer to use depends on the keyboard. For most keyboards it's `dfu`, but for ChibiOS keyboards you should use `dfu-util`, and `teensy` for standard Teensys. To find out which command you should use for your keyboard, check the keyboard specific readme.
* **Note**: some operating systems need root access for these commands to work, so in that case you need to run for example `sudo make planck/rev4:default:flash`.
* `flash`, `dfu`, `teensy`, `avrdude`, `dfu-util`, or `bootloadHID` compile and upload the firmware to the keyboard. If the compilation fails, then nothing will be uploaded. The programmer to use depends on the keyboard. For most keyboards it's `dfu`, but for ChibiOS keyboards you should use `dfu-util`, and `teensy` for standard Teensys. To find out which command you should use for your keyboard, check the keyboard specific readme.
Visit the [Flashing Firmware](flashing.md) guide for more details of the available bootloaders.
* **Note**: some operating systems need privileged access for these commands to work. This means that you may need to setup [`udev rules`](faq_build.md#linux-udev-rules) to access these without root access, or to run the command with root access (`sudo make planck/rev4:default:flash`).
* `clean`, cleans the build output folders to make sure that everything is built from scratch. Run this before normal compilation if you have some unexplainable problems.
* `distclean` removes .hex files and .bin files.
The following targets are for developers:
* `show-path` shows the path of the source and object files.
* `dump-vars` dumps the makefile variable.
* `objs-size` displays the size of individual object files.
* `show_build_options` shows the options set in 'rules.mk'.
* `check-md5` displays the md5 checksum of the generated binary file.
You can also add extra options at the end of the make command line, after the target
* `make COLOR=false` - turns off color output
* `make SILENT=true` - turns off output besides errors/warnings
* `make VERBOSE=true` - outputs all of the gcc stuff (not interesting, unless you need to debug)
* `make EXTRAFLAGS=-E` - Preprocess the code without doing any compiling (useful if you are trying to debug #define commands)
* `make VERBOSE_LD_CMD=yes` - execute the ld command with the -v option.
* `make VERBOSE_AS_CMD=yes` - execute the as command with the -v option.
* `make VERBOSE_C_CMD=<c_source_file>` - add the -v option when compiling the specified C source file.
* `make DUMP_C_MACROS=<c_source_file>` - dump preprocessor macros when compiling the specified C source file.
* `make DUMP_C_MACROS=<c_source_file> > <logfile>` - dump preprocessor macros to `<logfile>` when compiling the specified C source file.
* `make VERBOSE_C_INCLUDE=<c_source_file>` - dumps the file names to be included when compiling the specified C source file.
* `make VERBOSE_C_INCLUDE=<c_source_file> 2> <logfile>` - dumps the file names to be included to `<logfile>` when compiling the specified C source file.
The make command itself also has some additional options, type `make --help` for more information. The most useful is probably `-jx`, which specifies that you want to compile using more than one CPU, the `x` represents the number of CPUs that you want to use. Setting that can greatly reduce the compile times, especially if you are compiling many keyboards/keymaps. I usually set it to one less than the number of CPUs that I have, so that I have some left for doing other things while it's compiling. Note that not all operating systems and make versions supports that option.

View File

@@ -6,25 +6,19 @@ QMK tries to put a lot of power into your hands by making easy things easy, and
Not sure if your keyboard can run QMK? If it's a mechanical keyboard you built yourself chances are good it can. We support a [large number of hobbyist boards](http://qmk.fm/keyboards/). If your current keyboard can't run QMK there are a lot of choices out there for boards that do.
## Is This Guide For Me?
This guide is suitable for everyone who wants to build a keyboard firmware using the source code. If you are already a programmer you will find the process very familiar and easier to follow. If the thought of programming intimidates you please [take a look at our online GUI](newbs_building_firmware_configurator.md) instead.
?> **Is This Guide For Me?**<br>
If the thought of programming intimidates you, please [take a look at our online GUI](newbs_building_firmware_configurator.md) instead.</div>
## Overview
There are 4 main sections to this guide:
This guide is suitable for everyone who wants to build a keyboard firmware using the source code. If you are already a programmer you will find the process very familiar and easier to follow. There are 3 main sections to this guide:
1. [Setup Your Environment](newbs_getting_started.md)
2. [Building Your First Firmware](newbs_building_firmware.md)
3. [Flashing Firmware](newbs_flashing.md)
4. [Testing and Debugging](newbs_testing_debugging.md)
This guide is focused on helping someone who has never compiled software before. It makes choices and recommendations based on that viewpoint. There are alternative methods for many of these procedures, and we support most of those alternatives. If you have any doubt about how to accomplish a task you can [ask us for guidance](getting_started_getting_help.md).
## Additional Resources
Beyond this guide there are several resources you may find helpful while you learn QMK. We've collected them on the [Learning Resources](newbs_learn_more_resources.md) page.
## Open Source
QMK is Open Source Software released under the GNU General Public License.
Beyond this guide there are several resources you may find helpful while you learn QMK. We've collected them on the [Syllabus](syllabus.md) and [Learning Resources](newbs_learn_more_resources.md) pages.

View File

@@ -2,7 +2,7 @@
[![QMK Configurator Screenshot](https://i.imgur.com/anw9cOL.png)](https://config.qmk.fm/)
The [QMK Configurator](https://config.qmk.fm) is an online graphical user interface that generates QMK Firmware hex files.
The [QMK Configurator](https://config.qmk.fm) is an online graphical user interface that generates QMK Firmware `.hex` or `.bin` files.
Watch the [Video Tutorial](https://www.youtube.com/watch?v=-imgglzDMdY). Many people find that is enough information to start programming their own keyboard.

View File

@@ -37,18 +37,22 @@ Begin by opening the QMK Toolbox application. You'll want to locate the firmware
If you are on Windows or macOS, there are commands you can use to easily open the current folder in Explorer or Finder.
#### Windows
<!-- tabs:start -->
#### ** Windows **
```
start .
```
#### macOS
#### ** macOS **
```
open .
```
<!-- tabs:end -->
The firmware file always follows this naming format:
```
@@ -106,6 +110,9 @@ In this case, you'll have to fall back on specifying the bootloader. See the [Fl
## Test It Out!
Congrats! Your custom firmware has been programmed to your keyboard!
Congrats! Your custom firmware has been programmed to your keyboard and you're ready to test it out!
Give it a try and make sure everything works the way you want it to. We've written [Testing and Debugging](newbs_testing_debugging.md) to round out this guide, so head over there to learn about validating your firmware and how to troubleshoot your custom functionality.
With a little bit of luck everything will work perfectly, but if not there are steps that will help you figure out what's wrong.
Testing your keyboard is usually pretty straightforward. Press every single key and make sure it sends the keys you expect. You can use [QMK Configurator](https://config.qmk.fm/#/test/)'s test mode to check your keyboard, even if it doesn't run QMK.
Still not working? Browse the FAQ topics for more information, or [chat with us on Discord](https://discord.gg/Uq7gcHh).

View File

@@ -2,41 +2,21 @@
Before you can build keymaps, you need to install some software and set up your build environment. This only has to be done once no matter how many keyboards you plan to compile firmware for.
## 1. Download Software
## 1. Prerequisites
There are a few pieces of software you'll need to get started.
### Text Editor
* [Text editor](newbs_learn_more_resources.md#text-editor-resources)
* Youll need a program that can edit and save plain text files. The default editor that comes with many OS's does not save plain text files, so you'll need to make sure that whatever editor you chose does.
* [Toolbox (optional)](https://github.com/qmk/qmk_toolbox)
* A graphical program for Windows and macOS that allows you to both program and debug your custom keyboard
You'll need a program that can edit and save **plain text** files. If you're on Windows you can make do with Notepad, and on Linux you can use gedit. Both of these are simple but functional text editors. On macOS, be careful with the default TextEdit app: it will not save plain text files unless you explicitly select _Make Plain Text_ from the _Format_ menu.
You can also download and install a dedicated text editor like [Sublime Text](https://www.sublimetext.com/) or [VS Code](https://code.visualstudio.com/). This is probably the best way to go regardless of platform, as these programs are specifically made for editing code.
?> Not sure which text editor to use? Laurence Bradford wrote [a great introduction](https://learntocodewith.me/programming/basics/text-editors/) to the subject.
### QMK Toolbox
QMK Toolbox is an optional graphical program for Windows and macOS that allows you to both program and debug your custom keyboard. You will likely find it invaluable for easily flashing your keyboard and viewing debug messages that it prints.
[Download the latest release here.](https://github.com/qmk/qmk_toolbox/releases/latest)
* For Windows: `qmk_toolbox.exe` (portable) or `qmk_toolbox_install.exe` (installer)
* For macOS: `QMK.Toolbox.app.zip` (portable) or `QMK.Toolbox.pkg` (installer)
### A Unix-like Environment
Linux and macOS come with unix shells you can execute already. You will only need to setup your build environment.
On Windows you will need to install MSYS2 or WSL and use those environments. Instructions for setting up MSYS2 are provided below.
?> If you haven't worked with the Linux/Unix command line before, there are a few basic concepts and commands you should learn. [These resources](newbs_learn_more_resources.md#command-line-resources) will teach you enough to be able to work with QMK.
## 2. Prepare Your Build Environment :id=set-up-your-environment
We've tried to make QMK as easy to set up as possible. You only have to prepare your Linux or Unix environment, then let QMK install the rest.
?> If you haven't worked with the Linux/Unix command line before, there are a few basic concepts and commands you should learn. These resources will teach you enough to be able to work with QMK:<br>
[Must Know Linux Commands](https://www.guru99.com/must-know-linux-commands.html)<br>
[Some Basic Unix Commands](https://www.tjhsst.edu/~dhyatt/superap/unixcmd.html)
<!-- tabs:start -->
### ** Windows **
@@ -45,9 +25,9 @@ QMK maintains a Bundle of MSYS2, the CLI and all necessary dependencies. It also
#### Prerequisites
You will need to install `QMK MSYS`. The latest release is available at https://msys.qmk.fm/.
You will need to install [QMK MSYS](https://msys.qmk.fm/). The latest release is available [here](https://github.com/qmk/qmk_distro_msys/releases/latest).
Alternatively, if you'd like to manually install msys2, the following section will walk you through the process.
Alternatively, if you'd like to manually install MSYS2, the following section will walk you through the process.
<details>
<summary>Manual Install</summary>
@@ -188,6 +168,8 @@ Once that completes, re-run `qmk setup` to complete the setup and checks.
<!-- tabs:end -->
?> The qmk home folder can be specified at setup with `qmk setup -H <path>`, and modified afterwards using the [cli configuration](cli_configuration.md?id=single-key-example) and the variable `user.qmk_home`. For all available options run `qmk setup --help`.
?> If you already know [how to use GitHub](getting_started_github.md), we recommend that you create your own fork and use `qmk setup <github_username>/qmk_firmware` to clone your personal fork. If you don't know what that means you can safely ignore this message.
## 4. Test Your Build Environment

View File

@@ -2,15 +2,26 @@
These resources are aimed at giving new members in the QMK community more understanding to the information provided in the Newbs docs.
**QMK resources**:
### QMK resources
* [Thomas Baart's QMK Basics Blog](https://thomasbaart.nl/category/mechanical-keyboards/firmware/qmk/qmk-basics/) A user-created blog covering the basics of how to use QMK Firmware, as seen from a new user's perspective.
**Command Line resources**:
### Command Line resources
* [Good General Tutorial on Command Line](https://www.codecademy.com/learn/learn-the-command-line)
* [Must Know Linux Commands](https://www.guru99.com/must-know-linux-commands.html)<br>
* [Some Basic Unix Commands](https://www.tjhsst.edu/~dhyatt/superap/unixcmd.html)
**Git resources**:
### Text Editor resources
Not sure which text editor to use?
* [a great introduction to the subject](https://learntocodewith.me/programming/basics/text-editors/)
Editors specifically made for code:
* [Sublime Text](https://www.sublimetext.com/)
* [VS Code](https://code.visualstudio.com/)
### Git resources
* [Great General Tutorial](https://www.codecademy.com/learn/learn-git)
* [Flight Rules For Git](https://github.com/k88hudson/git-flight-rules)

View File

@@ -1,96 +1,9 @@
# Testing and Debugging
Once you've flashed your keyboard with a custom firmware you're ready to test it out. With a little bit of luck everything will work perfectly, but if not this document will help you figure out what's wrong.
## Testing
Testing your keyboard is usually pretty straightforward. Press every single key and make sure it sends the keys you expect. You can use [QMK Configurator](https://config.qmk.fm/#/test/)'s test mode to check your keyboard, even if it doesn't run QMK.
[Moved here](faq_misc.md#testing)
## Debugging :id=debugging
Your keyboard will output debug information if you have `CONSOLE_ENABLE = yes` in your `rules.mk`. By default the output is very limited, but you can turn on debug mode to increase the amount of debug output. Use the `DEBUG` keycode in your keymap, use the [Command](feature_command.md) feature to enable debug mode, or add the following code to your keymap.
```c
void keyboard_post_init_user(void) {
// Customise these values to desired behaviour
debug_enable=true;
debug_matrix=true;
//debug_keyboard=true;
//debug_mouse=true;
}
```
## Debugging Tools
There are two different tools you can use to debug your keyboard.
### Debugging With QMK Toolbox
For compatible platforms, [QMK Toolbox](https://github.com/qmk/qmk_toolbox) can be used to display debug messages from your keyboard.
### Debugging With hid_listen
Prefer a terminal based solution? [hid_listen](https://www.pjrc.com/teensy/hid_listen.html), provided by PJRC, can also be used to display debug messages. Prebuilt binaries for Windows,Linux,and MacOS are available.
## Sending Your Own Debug Messages
Sometimes it's useful to print debug messages from within your [custom code](custom_quantum_functions.md). Doing so is pretty simple. Start by including `print.h` at the top of your file:
```c
#include "print.h"
```
After that you can use a few different print functions:
* `print("string")`: Print a simple string.
* `uprintf("%s string", var)`: Print a formatted string
* `dprint("string")` Print a simple string, but only when debug mode is enabled
* `dprintf("%s string", var)`: Print a formatted string, but only when debug mode is enabled
## Debug Examples
Below is a collection of real world debugging examples. For additional information, refer to [Debugging/Troubleshooting QMK](faq_debug.md).
### Which matrix position is this keypress?
When porting, or when attempting to diagnose pcb issues, it can be useful to know if a keypress is scanned correctly. To enable logging for this scenario, add the following code to your keymaps `keymap.c`
```c
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
// If console is enabled, it will print the matrix position and status of each key pressed
#ifdef CONSOLE_ENABLE
uprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed);
#endif
return true;
}
```
Example output
```text
Waiting for device:.......
Listening:
KL: kc: 169, col: 0, row: 0, pressed: 1
KL: kc: 169, col: 0, row: 0, pressed: 0
KL: kc: 174, col: 1, row: 0, pressed: 1
KL: kc: 174, col: 1, row: 0, pressed: 0
KL: kc: 172, col: 2, row: 0, pressed: 1
KL: kc: 172, col: 2, row: 0, pressed: 0
```
### How long did it take to scan for a keypress?
When testing performance issues, it can be useful to know the frequency at which the switch matrix is being scanned. To enable logging for this scenario, add the following code to your keymaps `config.h`
```c
#define DEBUG_MATRIX_SCAN_RATE
```
Example output
```text
> matrix scan frequency: 315
> matrix scan frequency: 313
> matrix scan frequency: 316
> matrix scan frequency: 316
> matrix scan frequency: 316
> matrix scan frequency: 316
```
[Moved here](faq_debug.md#debugging)

View File

@@ -28,6 +28,9 @@
border-bottom: 1px solid #777 !important;
}
.markdown-section p.warn > strong {
color: #c8c8c8;
}
:root {
--docsifytabs-border-color: #555;
@@ -36,11 +39,3 @@
--docsifytabs-tab-background: #444;
--docsifytabs-tab-background-active: #3f3f3f;
}
.docsify-tabs__tab:focus {
outline: none !important;
}
.docsify-tabs__content .anchor {
transition: none;
}

View File

@@ -29,13 +29,16 @@
padding: 0;
}
:root {
--docsifytabs-border-color: #ddd;
--docsifytabs-tab-highlight-color: var(--theme-color, #0074d9);
--docsifytabs-tab-background: #f8f8f8;
--docsifytabs-tab-background-active: transparent;
@media only screen and (min-width: 768px) {
.flex-container {
display:flex;
flex-flow:row;
}
.flex-container > p {
flex-basis: 100%;
flex: 1;
margin: 1em 2em 1em 2em;
}
}
.docsify-tabs__tab:focus {
@@ -45,3 +48,11 @@
.docsify-tabs__content .anchor {
transition: none;
}
:root {
--docsifytabs-border-color: #ddd;
--docsifytabs-tab-highlight-color: var(--theme-color, #0074d9);
--docsifytabs-tab-background: #f8f8f8;
--docsifytabs-tab-background-active: transparent;
}

View File

@@ -0,0 +1,22 @@
/* Copyright 2021 Vinam Arora <vinam@posteo.de>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#define DYNAMIC_KEYMAP_LAYER_COUNT 7
/* This is 4 by default. ProMicro's memory doesn't seem to be able to
* support more than 7 dynamic keymap layers
*/

View File

@@ -22,6 +22,9 @@ enum zero_sixty_layers {
_LOWER,
_RAISE,
_ADJUST,
_EMPTY1, // Just to initialize dynamic layers in VIA
_EMPTY2,
_EMPTY3,
};
#define LOWER MO(_LOWER)
@@ -113,4 +116,31 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/* Transparent layers, only to initialize VIA's dynamic layers */
[_EMPTY1] = LAYOUT_ortho_5x12(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[_EMPTY2] = LAYOUT_ortho_5x12(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[_EMPTY3] = LAYOUT_ortho_5x12(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};

View File

@@ -170,9 +170,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -199,9 +199,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -178,9 +178,6 @@
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -204,9 +204,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -145,9 +145,6 @@
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -154,9 +154,6 @@
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -179,9 +179,6 @@
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -179,9 +179,6 @@
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -192,9 +192,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -134,9 +134,6 @@
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -188,9 +188,6 @@
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -167,9 +167,6 @@
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -111,9 +111,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -182,9 +182,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -197,9 +197,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -208,9 +208,6 @@ B0, which is unconnected on the PCB
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -187,9 +187,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -60,7 +60,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define I2C1_SCL_PAL_MODE 1
#define I2C1_SDA_PAL_MODE 1
#define I2C1_TIMINGR_PRESC 0U
#define I2C1_TIMINGR_SCLDEL 3U
#define I2C1_TIMINGR_SDADEL 1U
#define I2C1_TIMINGR_SCLH 3U

View File

@@ -0,0 +1,73 @@
/* Copyright 2021 eithanshavit
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
enum layer_names {
_MAIN,
_FUNCTION,
_NUMPAD,
};
#define FUNCTION MO(_FUNCTION)
#define NUMPAD MO(_NUMPAD)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_NUMPAD] = LAYOUT(
//┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐┌────────┬────────┬────────┐
_______, _______, _______, _______, _______, _______, _______, KC_PEQL, KC_PSLS, KC_PAST, KC_PMNS, _______, LCA(KC_D),LCA(KC_F),LCA(KC_G),
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PPLS, _______, LCA(KC_E),LCA(KC_ENT),LCA(KC_T),
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, _______, _______,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, _______, KC__MUTE,KC__VOLDOWN,KC__VOLUP,
//└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘
_______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
),
[_FUNCTION] = LAYOUT(
//┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐┌────────┬────────┬────────┐
RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, LCA(KC_D),LCA(KC_F),LCA(KC_G),
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______, _______, LCA(KC_E),LCA(KC_ENT),LCA(KC_T),
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______,_______, _______,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC__MUTE,KC__VOLDOWN,KC__VOLUP,
//└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘
_______, _______, _______, _______, _______, _______, _______, _______
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
),
[_MAIN] = LAYOUT(
//┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐┌────────┬────────┬────────┐
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_MINS, KC_EQL, KC_GRV,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_LBRC, KC_RBRC, KC_BSLS,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_UP,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_LEFT, KC_DOWN, KC_RIGHT,
//└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘
NUMPAD, KC_LALT, KC_LCMD, KC_SPC, KC_ENT, FUNCTION,LCMD(KC_GRV),LALT(KC_SPC)
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
)
};

View File

@@ -191,9 +191,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -196,9 +196,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -198,9 +198,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -163,9 +163,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -172,9 +172,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -192,9 +192,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -198,9 +198,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -198,9 +198,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -155,9 +155,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -196,9 +196,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -191,9 +191,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -189,9 +189,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -189,9 +189,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -187,9 +187,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -200,9 +200,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -169,9 +169,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -197,9 +197,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -198,9 +198,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -166,9 +166,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -193,9 +193,6 @@
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -123,9 +123,6 @@
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -121,9 +121,6 @@
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -122,9 +122,6 @@
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -53,6 +53,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLED_NUM 24 // Number of LEDs
#endif
/* RGB matrix support */
#ifdef RGB_MATRIX_ENABLE
#define DRIVER_LED_TOTAL 24 // Number of LEDs
#endif
/*
* Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
*/

View File

@@ -20,3 +20,5 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no # Enable Bluetooth
AUDIO_ENABLE = no # Audio output
RGB_MATRIX_ENABLE = no # Enable keyboard RGB matrix (do not use together with RGBLIGHT_ENABLE)
RGB_MATRIX_DRIVER = WS2812 # RGB matrix driver support

View File

@@ -15,3 +15,24 @@
*/
#include "the_mark.h"
/* Map physical under glow LEDs for RGB matrix support */
#ifdef RGB_MATRIX_ENABLE
led_config_t g_led_config = { {
// Key Matrix to LED Index
{ NO_LED, 10 , 9 , NO_LED, 8 , 7 , NO_LED, 6 , 5 , NO_LED, 4 , 3 , NO_LED, 2 , 1 , NO_LED },
{ NO_LED, 11 , NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 0 , NO_LED },
{ NO_LED, 12 , NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 23 , NO_LED },
{ NO_LED, 13 , 14 , NO_LED, 15 , 16 , NO_LED, 17 , 18 , NO_LED, 19 , 20 , NO_LED, 21 , 22 , NO_LED },
{ NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
}, {
// LED Index to Physical Position
{224, 42}, {224, 21}, {209, 21}, {179, 21}, {164, 21}, {134, 21}, {119, 21}, {89, 21}, {74, 21}, {45, 21}, {30, 21}, {30, 42},
{30, 64}, {30, 85}, {45, 85}, {74, 85}, {89, 85}, {119, 85}, {134, 85}, {164, 85}, {179, 85}, {209, 85}, {224, 85}, {224, 64}
}, {
// LED Index to Flag
LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL,
LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL,
LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL
} };
#endif

View File

@@ -114,9 +114,6 @@
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -145,9 +145,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -169,9 +169,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -190,9 +190,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -190,9 +190,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -3,10 +3,94 @@
"url": "https://cannonkeys.com",
"maintainer": "awkannan",
"width": 19.5,
"height": 9,
"height": 5,
"layouts": {
"LAYOUT_all": {
"layout": [{"x":0, "y":0}, {"label":"Esc", "x":1.25, "y":0}, {"label":"!", "x":2.25, "y":0}, {"label":"@", "x":3.25, "y":0}, {"label":"#", "x":4.25, "y":0}, {"label":"$", "x":5.25, "y":0}, {"label":"%", "x":6.25, "y":0}, {"label":"^", "x":7.25, "y":0}, {"label":"&", "x":8.25, "y":0}, {"label":"*", "x":9.25, "y":0}, {"label":"(", "x":10.25, "y":0}, {"label":")", "x":11.25, "y":0}, {"label":"_", "x":12.25, "y":0}, {"label":"+", "x":13.25, "y":0}, {"label":"~", "x":14.25, "y":0}, {"label":"Bcksp", "x":15.25, "y":0}, {"label":"Insert", "x":16.5, "y":0}, {"label":"Home", "x":17.5, "y":0}, {"label":"PgUp", "x":18.5, "y":0}, {"x":0, "y":1}, {"label":"Tab", "x":1.25, "y":1, "w":1.5}, {"label":"Q", "x":2.75, "y":1}, {"label":"W", "x":3.75, "y":1}, {"label":"E", "x":4.75, "y":1}, {"label":"R", "x":5.75, "y":1}, {"label":"T", "x":6.75, "y":1}, {"label":"Y", "x":7.75, "y":1}, {"label":"U", "x":8.75, "y":1}, {"label":"I", "x":9.75, "y":1}, {"label":"O", "x":10.75, "y":1}, {"label":"P", "x":11.75, "y":1}, {"label":"{", "x":12.75, "y":1}, {"label":"}", "x":13.75, "y":1}, {"label":"|", "x":14.75, "y":1, "w":1.5}, {"label":"Delete", "x":16.5, "y":1}, {"label":"End", "x":17.5, "y":1}, {"label":"PgDn", "x":18.5, "y":1}, {"x":0, "y":2}, {"label":"Caps Lock", "x":1.25, "y":2, "w":1.25}, {"label":"A", "x":3, "y":2}, {"label":"S", "x":4, "y":2}, {"label":"D", "x":5, "y":2}, {"label":"F", "x":6, "y":2}, {"label":"G", "x":7, "y":2}, {"label":"H", "x":8, "y":2}, {"label":"J", "x":9, "y":2}, {"label":"K", "x":10, "y":2}, {"label":"L", "x":11, "y":2}, {"label":":", "x":12, "y":2}, {"label":"\"", "x":13, "y":2}, {"x":14, "y":2}, {"label":"Enter", "x":15, "y":2, "w":1.25}, {"x":0, "y":3}, {"label":"Shift", "x":1.25, "y":3, "w":1.25}, {"label":"Shift", "x":2.5, "y":3}, {"label":"Z", "x":3.5, "y":3}, {"label":"X", "x":4.5, "y":3}, {"label":"C", "x":5.5, "y":3}, {"label":"V", "x":6.5, "y":3}, {"label":"B", "x":7.5, "y":3}, {"label":"N", "x":8.5, "y":3}, {"label":"M", "x":9.5, "y":3}, {"label":"<", "x":10.5, "y":3}, {"label":">", "x":11.5, "y":3}, {"label":"?", "x":12.5, "y":3}, {"label":"\u2191", "x":17.5, "y":3}, {"label":"Ctrl", "x":1.25, "y":4, "w":1.25}, {"label":"Win", "x":2.5, "y":4, "w":1.25}, {"label":"Alt", "x":3.75, "y":4, "w":1.25}, {"x":5, "y":4, "w":6.25}, {"label":"Alt", "x":11.25, "y":4, "w":1.25}, {"label":"Alt", "x":12.5, "y":4, "w":1.25}, {"label":"Win", "x":13.75, "y":4, "w":1.25}, {"label":"Ctrl", "x":15, "y":4, "w":1.25}, {"label":"\u2190", "x":16.5, "y":4}, {"label":"\u2193", "x":17.5, "y":4}, {"label":"\u2192", "x":18.5, "y":4}, {"label":"Shift", "x":13.25, "y":8, "w":1.75}, {"label":"Fn", "x":15, "y":8}]
"layout": [
{"x":0, "y":0},
{"label":"Esc", "x":1.25, "y":0},
{"label":"!", "x":2.25, "y":0},
{"label":"@", "x":3.25, "y":0},
{"label":"#", "x":4.25, "y":0},
{"label":"$", "x":5.25, "y":0},
{"label":"%", "x":6.25, "y":0},
{"label":"^", "x":7.25, "y":0},
{"label":"&", "x":8.25, "y":0},
{"label":"*", "x":9.25, "y":0},
{"label":"(", "x":10.25, "y":0},
{"label":")", "x":11.25, "y":0},
{"label":"_", "x":12.25, "y":0},
{"label":"+", "x":13.25, "y":0},
{"label":"~", "x":14.25, "y":0},
{"label":"Bcksp", "x":15.25, "y":0},
{"label":"Insert", "x":16.5, "y":0},
{"label":"Home", "x":17.5, "y":0},
{"label":"PgUp", "x":18.5, "y":0},
{"x":0, "y":1},
{"label":"Tab", "x":1.25, "y":1, "w":1.5},
{"label":"Q", "x":2.75, "y":1},
{"label":"W", "x":3.75, "y":1},
{"label":"E", "x":4.75, "y":1},
{"label":"R", "x":5.75, "y":1},
{"label":"T", "x":6.75, "y":1},
{"label":"Y", "x":7.75, "y":1},
{"label":"U", "x":8.75, "y":1},
{"label":"I", "x":9.75, "y":1},
{"label":"O", "x":10.75, "y":1},
{"label":"P", "x":11.75, "y":1},
{"label":"{", "x":12.75, "y":1},
{"label":"}", "x":13.75, "y":1},
{"label":"|", "x":14.75, "y":1, "w":1.5},
{"label":"Delete", "x":16.5, "y":1},
{"label":"End", "x":17.5, "y":1},
{"label":"PgDn", "x":18.5, "y":1},
{"x":0, "y":2},
{"label":"Caps Lock", "x":1.25, "y":2, "w":1.25},
{"label":"A", "x":3, "y":2},
{"label":"S", "x":4, "y":2},
{"label":"D", "x":5, "y":2},
{"label":"F", "x":6, "y":2},
{"label":"G", "x":7, "y":2},
{"label":"H", "x":8, "y":2},
{"label":"J", "x":9, "y":2},
{"label":"K", "x":10, "y":2},
{"label":"L", "x":11, "y":2},
{"label":":", "x":12, "y":2},
{"label":"\"", "x":13, "y":2},
{"x":14, "y":2},
{"label":"Enter", "x":15, "y":2, "w":1.25},
{"x":0, "y":3},
{"label":"Shift", "x":1.25, "y":3, "w":1.25},
{"label":"Shift", "x":2.5, "y":3},
{"label":"Z", "x":3.5, "y":3},
{"label":"X", "x":4.5, "y":3},
{"label":"C", "x":5.5, "y":3},
{"label":"V", "x":6.5, "y":3},
{"label":"B", "x":7.5, "y":3},
{"label":"N", "x":8.5, "y":3},
{"label":"M", "x":9.5, "y":3},
{"label":"<", "x":10.5, "y":3},
{"label":">", "x":11.5, "y":3},
{"label":"?", "x":12.5, "y":3},
{"label":"Shift", "x":13.5, "y":3, "w":1.75},
{"label":"Fn", "x":15.25, "y":3},
{"label":"Up", "x":17.5, "y":3},
{"label":"Ctrl", "x":1.25, "y":4, "w":1.25},
{"label":"Win", "x":2.5, "y":4, "w":1.25},
{"label":"Alt", "x":3.75, "y":4, "w":1.25},
{"x":5, "y":4, "w":6.25},
{"label":"Alt", "x":11.25, "y":4, "w":1.25},
{"label":"Alt", "x":12.5, "y":4, "w":1.25},
{"label":"Win", "x":13.75, "y":4, "w":1.25},
{"label":"Ctrl", "x":15, "y":4, "w":1.25},
{"label":"Left", "x":16.5, "y":4},
{"label":"Down", "x":17.5, "y":4},
{"label":"Right", "x":18.5, "y":4}
]
}
}
}

View File

@@ -38,7 +38,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ K400, K401, K402, KC_NO,KC_NO,KC_NO,KC_NO,K407, KC_NO,KC_NO,K410, KC_NO,K412, K413, K414, K415 } \
}
#define LAYOUT_65_ansi( \
#define LAYOUT_65_ansi_blocker( \
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K015, \
K100, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \
K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, K215, \
@@ -52,7 +52,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ K400, K401, K402, KC_NO,KC_NO,KC_NO,KC_NO,K407, KC_NO,KC_NO,K410, KC_NO,K412, K413, K414, K415 } \
}
#define LAYOUT_65_iso( \
#define LAYOUT_65_iso_blocker( \
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K015, \
K100, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K115, \
K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, \

View File

@@ -5,11 +5,234 @@
"width": 16,
"height": 5,
"layouts": {
"LAYOUT_65_ansi": {
"layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Insert", "x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Delete", "x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"PgUp", "x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"\u2191", "x":14, "y":3}, {"label":"PgDn", "x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Ctrl", "x":11.25, "y":4, "w":1.25}, {"label":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4}]
},
"LAYOUT_65_iso": {
"layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Insert", "x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, {"label":"Delete", "x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"~", "x":12.75, "y":2}, {"label":"PgUp", "x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"label":"|", "x":1.25, "y":3}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"\u2191", "x":14, "y":3}, {"label":"PgDn", "x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Ctrl", "x":11.25, "y":4, "w":1.25}, {"label":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4}]
}
"LAYOUT_all": {
"layout": [
{"x":0, "y":0},
{"x":1, "y":0},
{"x":2, "y":0},
{"x":3, "y":0},
{"x":4, "y":0},
{"x":5, "y":0},
{"x":6, "y":0},
{"x":7, "y":0},
{"x":8, "y":0},
{"x":9, "y":0},
{"x":10, "y":0},
{"x":11, "y":0},
{"x":12, "y":0},
{"x":13, "y":0},
{"x":14, "y":0},
{"x":15, "y":0},
{"x":0, "y":1, "w":1.5},
{"x":1.5, "y":1},
{"x":2.5, "y":1},
{"x":3.5, "y":1},
{"x":4.5, "y":1},
{"x":5.5, "y":1},
{"x":6.5, "y":1},
{"x":7.5, "y":1},
{"x":8.5, "y":1},
{"x":9.5, "y":1},
{"x":10.5, "y":1},
{"x":11.5, "y":1},
{"x":12.5, "y":1},
{"x":13.5, "y":1, "w":1.5},
{"x":15, "y":1},
{"x":0, "y":2, "w":1.75},
{"x":1.75, "y":2},
{"x":2.75, "y":2},
{"x":3.75, "y":2},
{"x":4.75, "y":2},
{"x":5.75, "y":2},
{"x":6.75, "y":2},
{"x":7.75, "y":2},
{"x":8.75, "y":2},
{"x":9.75, "y":2},
{"x":10.75, "y":2},
{"x":11.75, "y":2},
{"x":12.75, "y":2},
{"x":13.75, "y":2, "w":1.25},
{"x":15, "y":2},
{"x":0, "y":3, "w":1.25},
{"x":1.25, "y":3},
{"x":2.25, "y":3},
{"x":3.25, "y":3},
{"x":4.25, "y":3},
{"x":5.25, "y":3},
{"x":6.25, "y":3},
{"x":7.25, "y":3},
{"x":8.25, "y":3},
{"x":9.25, "y":3},
{"x":10.25, "y":3},
{"x":11.25, "y":3},
{"x":12.25, "y":3, "w":1.75},
{"x":14, "y":3},
{"x":15, "y":3},
{"x":0, "y":4, "w":1.25},
{"x":1.25, "y":4, "w":1.25},
{"x":2.5, "y":4, "w":1.25},
{"x":3.75, "y":4, "w":6.25},
{"x":10, "y":4, "w":1.25},
{"x":11.25, "y":4, "w":1.25},
{"x":13, "y":4},
{"x":14, "y":4},
{"x":15, "y":4}
]
},
"LAYOUT_65_ansi_blocker": {
"layout": [
{"label":"Esc", "x":0, "y":0},
{"label":"!", "x":1, "y":0},
{"label":"@", "x":2, "y":0},
{"label":"#", "x":3, "y":0},
{"label":"$", "x":4, "y":0},
{"label":"%", "x":5, "y":0},
{"label":"^", "x":6, "y":0},
{"label":"&", "x":7, "y":0},
{"label":"*", "x":8, "y":0},
{"label":"(", "x":9, "y":0},
{"label":")", "x":10, "y":0},
{"label":"_", "x":11, "y":0},
{"label":"+", "x":12, "y":0},
{"label":"Backspace", "x":13, "y":0, "w":2},
{"label":"Insert", "x":15, "y":0},
{"label":"Tab", "x":0, "y":1, "w":1.5},
{"label":"Q", "x":1.5, "y":1},
{"label":"W", "x":2.5, "y":1},
{"label":"E", "x":3.5, "y":1},
{"label":"R", "x":4.5, "y":1},
{"label":"T", "x":5.5, "y":1},
{"label":"Y", "x":6.5, "y":1},
{"label":"U", "x":7.5, "y":1},
{"label":"I", "x":8.5, "y":1},
{"label":"O", "x":9.5, "y":1},
{"label":"P", "x":10.5, "y":1},
{"label":"{", "x":11.5, "y":1},
{"label":"}", "x":12.5, "y":1},
{"label":"|", "x":13.5, "y":1, "w":1.5},
{"label":"Delete", "x":15, "y":1},
{"label":"Caps Lock", "x":0, "y":2, "w":1.75},
{"label":"A", "x":1.75, "y":2},
{"label":"S", "x":2.75, "y":2},
{"label":"D", "x":3.75, "y":2},
{"label":"F", "x":4.75, "y":2},
{"label":"G", "x":5.75, "y":2},
{"label":"H", "x":6.75, "y":2},
{"label":"J", "x":7.75, "y":2},
{"label":"K", "x":8.75, "y":2},
{"label":"L", "x":9.75, "y":2},
{"label":":", "x":10.75, "y":2},
{"label":"\"", "x":11.75, "y":2},
{"label":"Enter", "x":12.75, "y":2, "w":2.25},
{"label":"PgUp", "x":15, "y":2},
{"label":"Shift", "x":0, "y":3, "w":2.25},
{"label":"Z", "x":2.25, "y":3},
{"label":"X", "x":3.25, "y":3},
{"label":"C", "x":4.25, "y":3},
{"label":"V", "x":5.25, "y":3},
{"label":"B", "x":6.25, "y":3},
{"label":"N", "x":7.25, "y":3},
{"label":"M", "x":8.25, "y":3},
{"label":"<", "x":9.25, "y":3},
{"label":">", "x":10.25, "y":3},
{"label":"?", "x":11.25, "y":3},
{"label":"Shift", "x":12.25, "y":3, "w":1.75},
{"label":"\u2191", "x":14, "y":3},
{"label":"PgDn", "x":15, "y":3},
{"label":"Ctrl", "x":0, "y":4, "w":1.25},
{"label":"Win", "x":1.25, "y":4, "w":1.25},
{"label":"Alt", "x":2.5, "y":4, "w":1.25},
{"x":3.75, "y":4, "w":6.25},
{"label":"Alt", "x":10, "y":4, "w":1.25},
{"label":"Ctrl", "x":11.25, "y":4, "w":1.25},
{"label":"\u2190", "x":13, "y":4},
{"label":"\u2193", "x":14, "y":4},
{"label":"\u2192", "x":15, "y":4}
]
},
"LAYOUT_65_iso_blocker": {
"layout": [
{"label":"Esc", "x":0, "y":0},
{"label":"!", "x":1, "y":0},
{"label":"@", "x":2, "y":0},
{"label":"#", "x":3, "y":0},
{"label":"$", "x":4, "y":0},
{"label":"%", "x":5, "y":0},
{"label":"^", "x":6, "y":0},
{"label":"&", "x":7, "y":0},
{"label":"*", "x":8, "y":0},
{"label":"(", "x":9, "y":0},
{"label":")", "x":10, "y":0},
{"label":"_", "x":11, "y":0},
{"label":"+", "x":12, "y":0},
{"label":"Backspace", "x":13, "y":0, "w":2},
{"label":"Insert", "x":15, "y":0},
{"label":"Tab", "x":0, "y":1, "w":1.5},
{"label":"Q", "x":1.5, "y":1},
{"label":"W", "x":2.5, "y":1},
{"label":"E", "x":3.5, "y":1},
{"label":"R", "x":4.5, "y":1},
{"label":"T", "x":5.5, "y":1},
{"label":"Y", "x":6.5, "y":1},
{"label":"U", "x":7.5, "y":1},
{"label":"I", "x":8.5, "y":1},
{"label":"O", "x":9.5, "y":1},
{"label":"P", "x":10.5, "y":1},
{"label":"{", "x":11.5, "y":1},
{"label":"}", "x":12.5, "y":1},
{"label":"Delete", "x":15, "y":1},
{"label":"Caps Lock", "x":0, "y":2, "w":1.75},
{"label":"A", "x":1.75, "y":2},
{"label":"S", "x":2.75, "y":2},
{"label":"D", "x":3.75, "y":2},
{"label":"F", "x":4.75, "y":2},
{"label":"G", "x":5.75, "y":2},
{"label":"H", "x":6.75, "y":2},
{"label":"J", "x":7.75, "y":2},
{"label":"K", "x":8.75, "y":2},
{"label":"L", "x":9.75, "y":2},
{"label":":", "x":10.75, "y":2},
{"label":"\"", "x":11.75, "y":2},
{"label":"~", "x":12.75, "y":2},
{"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2},
{"label":"PgUp", "x":15, "y":2},
{"label":"Shift", "x":0, "y":3, "w":1.25},
{"label":"|", "x":1.25, "y":3},
{"label":"Z", "x":2.25, "y":3},
{"label":"X", "x":3.25, "y":3},
{"label":"C", "x":4.25, "y":3},
{"label":"V", "x":5.25, "y":3},
{"label":"B", "x":6.25, "y":3},
{"label":"N", "x":7.25, "y":3},
{"label":"M", "x":8.25, "y":3},
{"label":"<", "x":9.25, "y":3},
{"label":">", "x":10.25, "y":3},
{"label":"?", "x":11.25, "y":3},
{"label":"Shift", "x":12.25, "y":3, "w":1.75},
{"label":"\u2191", "x":14, "y":3},
{"label":"PgDn", "x":15, "y":3},
{"label":"Ctrl", "x":0, "y":4, "w":1.25},
{"label":"Win", "x":1.25, "y":4, "w":1.25},
{"label":"Alt", "x":2.5, "y":4, "w":1.25},
{"x":3.75, "y":4, "w":6.25},
{"label":"Alt", "x":10, "y":4, "w":1.25},
{"label":"Ctrl", "x":11.25, "y":4, "w":1.25},
{"label":"\u2190", "x":13, "y":4},
{"label":"\u2193", "x":14, "y":4},
{"label":"\u2192", "x":15, "y":4}
]
}
}
}
}

View File

@@ -18,7 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_65_ansi(
[0] = LAYOUT_65_ansi_blocker(
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
* │Esc│ 1  2  3  4  5  6  7  8  9  0  - │ =  Backsp│Ins│
@@ -38,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT_65_ansi(
[1] = LAYOUT_65_ansi_blocker(
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
* │RST│ F1│ F2│ F3│ F4│ F5│ F6│ F7│ F8│ F9│F10│F11│F12│        

View File

@@ -18,7 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_65_iso(
[0] = LAYOUT_65_iso_blocker(
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
* │Esc│ 1  2  3  4  5  6  7  8  9  0  - │ =  Backsp│Ins│
@@ -38,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT_65_iso(
[1] = LAYOUT_65_iso_blocker(
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
* │RST│ F1│ F2│ F3│ F4│ F5│ F6│ F7│ F8│ F9│F10│F11│F12│        

View File

@@ -21,4 +21,4 @@ RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no # Enable Bluetooth
AUDIO_ENABLE = no # Audio output
LAYOUTS = 65_ansi 65_iso
LAYOUTS = 65_ansi_blocker 65_iso_blocker

View File

@@ -200,9 +200,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -158,9 +158,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -195,9 +195,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -68,9 +68,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -161,9 +161,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -66,9 +66,6 @@
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -199,9 +199,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -176,9 +176,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -175,9 +175,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -101,9 +101,6 @@
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/

View File

@@ -100,9 +100,6 @@
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/
@@ -131,7 +128,6 @@
// 0b1110101 AD <-> SCL
// 0b1110110 AD <-> SDA
#define LED_DRIVER_ADDR_1 0b1110100
#define I2C1_BANK GPIOB
#define I2C1_SCL 8
#define I2C1_SDA 9

View File

@@ -0,0 +1,50 @@
/*
Copyright 2021 CMM.Studio Freather
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "config_common.h"
/* USB Device descriptor parameter */
#define VENDOR_ID 0x434D
#define PRODUCT_ID 0x5348
#define DEVICE_VER 0x0001
#define MANUFACTURER CMM.Studio
#define PRODUCT Saka68
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
/*
* Keyboard Matrix Assignments
*
* Change this to how you wired your keyboard
* COLS: AVR pins used for columns, left to right
* ROWS: AVR pins used for rows, top to bottom
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
*
*/
#define MATRIX_ROW_PINS { D2, D1, B0, F6, F7 }
#define MATRIX_COL_PINS { D4, D6, D7, B4, B5, B6, C6, F5, F4, F1, F0, B1, B2, B3, D3, D5 }
#define DIODE_DIRECTION COL2ROW
// generated by KBFirmware JSON to QMK Parser
// https://noroadsleft.github.io/kbf_qmk_converter/

View File

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

View File

@@ -0,0 +1,36 @@
/* Copyright 2021 CMM.Studio Freather
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "quantum.h"
#define LAYOUT( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E, \
K40, K41, K42, K46, K49, K4A, K4B, K4D, K4E, K4F \
) { \
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, KC_NO, KC_NO }, \
{ K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KC_NO, K3E, KC_NO }, \
{ K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, K49, K4A, K4B, KC_NO, K4D, K4E, K4F }, \
}
// generated by KBFirmware JSON to QMK Parser
// https://noroadsleft.github.io/kbf_qmk_converter/

View File

@@ -0,0 +1,82 @@
{
"keyboard_name": "CMM.Studio Saka68",
"url": "",
"maintainer": "qmk",
"width": 17.25,
"height": 5,
"layouts": {
"LAYOUT": {
"layout": [
{"label":"K00 (D2,D4)", "x":0, "y":0},
{"label":"K01 (D2,D6)", "x":1, "y":0},
{"label":"K02 (D2,D7)", "x":2, "y":0},
{"label":"K03 (D2,B4)", "x":3, "y":0},
{"label":"K04 (D2,B5)", "x":4, "y":0},
{"label":"K05 (D2,B6)", "x":5, "y":0},
{"label":"K06 (D2,C6)", "x":6, "y":0},
{"label":"K07 (D2,F5)", "x":7, "y":0},
{"label":"K08 (D2,F4)", "x":8, "y":0},
{"label":"K09 (D2,F1)", "x":9, "y":0},
{"label":"K0A (D2,F0)", "x":10, "y":0},
{"label":"K0B (D2,B1)", "x":11, "y":0},
{"label":"K0C (D2,B2)", "x":12, "y":0},
{"label":"K0D (D2,B3)", "x":13, "y":0, "w":2},
{"label":"K0E (D2,D3)", "x":15.25, "y":0},
{"label":"K0F (D2,D5)", "x":16.25, "y":0},
{"label":"K10 (D1,D4)", "x":0, "y":1, "w":1.5},
{"label":"K11 (D1,D6)", "x":1.5, "y":1},
{"label":"K12 (D1,D7)", "x":2.5, "y":1},
{"label":"K13 (D1,B4)", "x":3.5, "y":1},
{"label":"K14 (D1,B5)", "x":4.5, "y":1},
{"label":"K15 (D1,B6)", "x":5.5, "y":1},
{"label":"K16 (D1,C6)", "x":6.5, "y":1},
{"label":"K17 (D1,F5)", "x":7.5, "y":1},
{"label":"K18 (D1,F4)", "x":8.5, "y":1},
{"label":"K19 (D1,F1)", "x":9.5, "y":1},
{"label":"K1A (D1,F0)", "x":10.5, "y":1},
{"label":"K1B (D1,B1)", "x":11.5, "y":1},
{"label":"K1C (D1,B2)", "x":12.5, "y":1},
{"label":"K1D (D1,B3)", "x":13.5, "y":1, "w":1.5},
{"label":"K1E (D1,D3)", "x":15.25, "y":1},
{"label":"K1F (D1,D5)", "x":16.25, "y":1},
{"label":"K20 (B0,D4)", "x":0, "y":2, "w":1.75},
{"label":"K21 (B0,D6)", "x":1.75, "y":2},
{"label":"K22 (B0,D7)", "x":2.75, "y":2},
{"label":"K23 (B0,B4)", "x":3.75, "y":2},
{"label":"K24 (B0,B5)", "x":4.75, "y":2},
{"label":"K25 (B0,B6)", "x":5.75, "y":2},
{"label":"K26 (B0,C6)", "x":6.75, "y":2},
{"label":"K27 (B0,F5)", "x":7.75, "y":2},
{"label":"K28 (B0,F4)", "x":8.75, "y":2},
{"label":"K29 (B0,F1)", "x":9.75, "y":2},
{"label":"K2A (B0,F0)", "x":10.75, "y":2},
{"label":"K2B (B0,B1)", "x":11.75, "y":2},
{"label":"K2D (B0,B3)", "x":12.75, "y":2, "w":2.25},
{"label":"K30 (F6,D4)", "x":0, "y":3, "w":2.25},
{"label":"K32 (F6,D7)", "x":2.25, "y":3},
{"label":"K33 (F6,B4)", "x":3.25, "y":3},
{"label":"K34 (F6,B5)", "x":4.25, "y":3},
{"label":"K35 (F6,B6)", "x":5.25, "y":3},
{"label":"K36 (F6,C6)", "x":6.25, "y":3},
{"label":"K37 (F6,F5)", "x":7.25, "y":3},
{"label":"K38 (F6,F4)", "x":8.25, "y":3},
{"label":"K39 (F6,F1)", "x":9.25, "y":3},
{"label":"K3A (F6,F0)", "x":10.25, "y":3},
{"label":"K3B (F6,B1)", "x":11.25, "y":3},
{"label":"K3C (F6,B2)", "x":12.25, "y":3, "w":2.75},
{"label":"K3E (F6,D3)", "x":15.25, "y":3},
{"label":"K40 (F7,D4)", "x":0, "y":4, "w":1.25},
{"label":"K41 (F7,D6)", "x":1.25, "y":4, "w":1.25},
{"label":"K42 (F7,D7)", "x":2.5, "y":4, "w":1.25},
{"label":"K46 (F7,C6)", "x":3.75, "y":4, "w":6.25},
{"label":"K49 (F7,F1)", "x":10, "y":4, "w":1.25},
{"label":"K4A (F7,F0)", "x":11.25, "y":4, "w":1.25},
{"label":"K4B (F7,B1)", "x":12.5, "y":4, "w":1.25},
{"label":"K4D (F7,B3)", "x":14.25, "y":4},
{"label":"K4E (F7,D3)", "x":15.25, "y":4},
{"label":"K4F (F7,D5)", "x":16.25, "y":4}
]
}
}
,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/"
}

View File

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

View File

@@ -0,0 +1 @@
# The default keymap for Saka68

View File

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

View File

@@ -0,0 +1,21 @@
# CMM.Studio Saka68
CMM.Studio Saka68 Keyboard
![CMM.Studio Saka68](https://i.imgur.com/E1S43cs.png)
* Keyboard Maintainer: [CMM.Studio Freather](https://github.com/CMMS-Freather)
* Hardware Supported: PCB, Atmega32u4
this firmware supports iso and ansi hotswap directly, once you flash the via firmware, you only need to select the layout and change to iso layout, then you can use iso hotswap version
Make example for this keyboard (after setting up your build environment):
make cmm_studio/saka68/hotswap:default
For reset instruction, use the physical reset button on the back of the keyboard to enter bootloader mode
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).

View File

@@ -0,0 +1,25 @@
# MCU name
MCU = atmega32u4
# Bootloader selection
BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no # Enable Bluetooth
AUDIO_ENABLE = no # Audio output
# generated by KBFirmware JSON to QMK Parser
# https://noroadsleft.github.io/kbf_qmk_converter/

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