Compare commits

...
18 Commits
Author SHA1 Message Date
AlexOConnorHub 82dc8faaf3 Fixing MIDI for ARM without NKRO enabled (#9466) 2020-06-22 08:43:08 +01:00
Paul Ewers 0b09189087 [Keymap] New custom 'super alt' keymap for the Drop ALT (#9385)
* New custom 'super alt' keymap for the Drop ALT

* Improvements to 'super alt' keymap based on PR feedback

* Fix flickering LED caps lock bug

* Code cleanup from PR feedback

* Minor keymap layout cleanup
2020-06-22 16:11:10 +10:00
Nick Brassel 3d6d899666 qmk cformat (#9500) 2020-06-22 11:21:48 +10:00
MechMerlinandRyan cb13dd0a33 Enable NKRO on 1up's boards (#9434)
* enable NKRO and keep consistent with bootmagic set to lite

* Update keyboards/1upkeyboards/1up60hse/rules.mk

Co-authored-by: Ryan <[email protected]>

Co-authored-by: Ryan <[email protected]>
2020-06-21 23:47:41 +01:00
Gregorio af4bc251f9 Updates on Mixi default keymaps and fixes on configuration (#9467) 2020-06-21 22:59:43 +01:00
shela e79fb2c26e [Docs] fix indentation (#9491) 2020-06-21 20:03:35 +01:00
Takeshi ISHII 3e0f8f9c8b update docs/ja/feature_bootmagic.md (#9459) 2020-06-21 21:56:06 +09:00
Takeshi ISHII b0a31f0bf3 update ja/hardware_keyboard_guidelines.md (#9457) 2020-06-21 21:49:43 +09:00
Takeshi ISHII a91034b802 [Update] Change Original TAGs of Japanese translations (#9453)
* The TAGs of the original document has been updated to facilitate future verification.

 * docs/ja/driver_installation_zadig.md
 * docs/ja/feature_audio.md
 * docs/ja/feature_auto_shift.md
 * docs/ja/feature_bluetooth.md
 * docs/ja/hardware_avr.md
 * docs/ja/hardware_drivers.md
 * docs/ja/getting_started_make_guide.md

* The TAG of the original document has been updated to facilitate future verification.

* The TAG of the original document has been updated to facilitate future verification.

* update docs/ja/feature_tap_dance.md
2020-06-21 21:45:27 +09:00
2f85f6fbff [Docs] Japanese translation of breaking_changes*.md (#8576)
* add japanese translation 'docs/ja/breaking_changes.md'

Note: this is cherry-pick from umi-umi's translation in PR #7248

* update ja/breaking_changes.md

* update ja/breaking_changes.md, add ja/breaking_changes_instructions.md

* translating ja/breaking_changes_instructions.md

* translating ja/breaking_changes_instructions.md

* translated ja/breaking_changes_instructions.md

* update ja/breaking_changes.md, ja/breaking_changes_instructions.md

Breaking change の訳語を「破壊的な変更」から「互換性を破る変更」に変更。
ただし、文中の用語としては、Breaking change をそのまま使用するむねドキュメントの導入部で
訳注でしめし、文中では、原語のまま使用する。

* update docs/ja/_summary.md

* Update docs/ja/breaking_changes.md

Co-Authored-By: shela <[email protected]>

* Update docs/ja/breaking_changes.md

Co-Authored-By: shela <[email protected]>

* Update docs/ja/breaking_changes.md

Co-Authored-By: shela <[email protected]>

* Update docs/ja/breaking_changes.md

Co-Authored-By: shela <[email protected]>

* Update docs/ja/breaking_changes.md

Co-Authored-By: shela <[email protected]>

* Update docs/ja/breaking_changes.md

Co-Authored-By: shela <[email protected]>

* Update docs/ja/breaking_changes.md

* update docs/ja/breaking_changes.md

* update docs/ja/breaking_changes.md

* update docs/ja/breaking_changes.md

* update docs/ja/breaking_changes.md

* update docs/ja/breaking_changes.md

* Update docs/ja/breaking_changes_instructions.md

Co-Authored-By: shela <[email protected]>

* Update docs/ja/breaking_changes_instructions.md

Co-Authored-By: shela <[email protected]>

* update docs/ja/breaking_changes.md

* Update docs/ja/breaking_changes_instructions.md

Co-Authored-By: shela <[email protected]>

* Update docs/ja/breaking_changes_instructions.md

* Update docs/ja/breaking_changes_instructions.md

Co-Authored-By: shela <[email protected]>

* update docs/ja/breaking_changes_instructions.md

* update docs/ja/breaking_changes_instructions.md

* The base of the translation of docs/ja/breaking_changes_instructions.md was changed to 0.9.0.

* The base of the translation of docs/ja/breaking_changes.md was changed to 0.9.0.

* Update docs/ja/breaking_changes.md

Co-authored-by: s-show <[email protected]>

* update docs/ja/breaking_changes.md

* Update docs/ja/breaking_changes_instructions.md

Co-authored-by: shela <[email protected]>

* update docs/ja/breaking_changes.md

* update docs/ja/breaking_changes.md

Co-authored-by: umi-umi <[email protected]>
Co-authored-by: shela <[email protected]>
Co-authored-by: s-show <[email protected]>
2020-06-21 20:17:16 +09:00
Ryan 32340e14fb Update newbs MSYS2 pacman instructions (#9445) 2020-06-21 10:54:53 +01:00
AlexOConnorHubandRyan b7da69ec85 Adding information to feature_encoders.md (#9486)
Co-authored-by: Ryan <[email protected]>
2020-06-21 17:10:01 +10:00
cole smithandRyan f36112e957 added keyboard 5x12 to boardsource folder (#9438)
* added keyboard 5x12 to boardsource folder

* Apply suggestions from code review

Co-authored-by: Ryan <[email protected]>

Co-authored-by: Ryan <[email protected]>
2020-06-20 23:13:43 +01:00
Drashna Jaelre 30cdf9331a Change led variable in rgb_matrix_drivers to avoid conflicts (#9412)
* Change `led` to `led_matrix` in rgb_matrix_drivers

Is a minor change that only affects the driver file. 

However, this will allow somebody to run rgblight along side rgb matrix
using the ws2812 driver, as well.  Specifically, so you can use the
custom driver for rgblight to set a different pin (barring a change to
the `ws2812_setleds` function).  

Courtesy of discord conversion:
https://discordapp.com/channels/440868230475677696/568161140534935572/721555623191248906

* Change name to be super specific

* Update rgb_matrix_drivers.c
2020-06-20 23:07:26 +01:00
stanrc85 8252f378d9 Add velocikey to alice keymap (#9476) 2020-06-20 22:57:33 +01:00
siano d7f9e6fcf1 Added missing RGB controls on layer 1. (#9481) 2020-06-20 22:47:09 +01:00
Joshua Diamond 5c07363054 spidey3 userspace: GUI F-Key lock was affecting some non-F-keys (#9469) 2020-06-20 22:39:45 +01:00
Joel Challis b6e9ef8dd1 CI: Run 'qmk info' on keyboard changes (#9212) 2020-06-20 22:19:56 +01:00
47 changed files with 1013 additions and 150 deletions

No files matched your search

+49
View File
@@ -0,0 +1,49 @@
name: PR Lint keyboards
on:
pull_request:
paths:
- 'keyboards/**'
jobs:
info:
runs-on: ubuntu-latest
container: qmkfm/base_container
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Print info
run: |
git rev-parse --short HEAD
echo ${{ github.event.pull_request.base.sha }}
git diff --name-only ${{ github.event.pull_request.base.sha }}...
- name: Run qmk info
shell: 'bash {0}'
run: |
QMK_CHANGES=$(git diff --name-only ${{ github.event.pull_request.base.sha }}...)
QMK_KEYBOARDS=$(qmk list-keyboards)
exit_code=0
for KB in $QMK_KEYBOARDS; do
KEYBOARD_CHANGES=$(echo "$QMK_CHANGES" | grep -E '^(keyboards/'${KB}'/)')
if [[ -z "$KEYBOARD_CHANGES" ]]; then
# skip as no changes for this keyboard
continue
fi
KEYMAP_ONLY=$(echo "$KEYBOARD_CHANGES" | grep -cv /keymaps/)
if [[ $KEYMAP_ONLY -gt 0 ]]; then
echo "linting ${KB}"
# TODO: info info always returns 0 - right now the only way to know failure is to inspect log lines
qmk info -kb ${KB} 2>&1 | tee /tmp/$$
!(grep -cq ☒ /tmp/$$)
: $((exit_code = $exit_code + $?))
fi
done
exit $exit_code
+1 -1
View File
@@ -26,7 +26,7 @@ If your encoder's clockwise directions are incorrect, you can swap the A & B pad
#define ENCODER_DIRECTION_FLIP #define ENCODER_DIRECTION_FLIP
``` ```
Additionally, the resolution can be specified in the same file (the default & suggested is 4): Additionally, the resolution, which defines how many pulses the encoder registers between each detent, can be defined with:
```c ```c
#define ENCODER_RESOLUTION 4 #define ENCODER_RESOLUTION 4
+1 -1
View File
@@ -106,7 +106,7 @@
* [Velocikey](ja/feature_velocikey.md) * [Velocikey](ja/feature_velocikey.md)
* QMK の開発 * QMK の開発
* 破壊的な変更 * 互換性を破る変更/Breaking changes
* [概要](ja/breaking_changes.md) * [概要](ja/breaking_changes.md)
* [プルリクエストにフラグが付けられた](ja/breaking_changes_instructions.md) * [プルリクエストにフラグが付けられた](ja/breaking_changes_instructions.md)
* 履歴 * 履歴
+120
View File
@@ -0,0 +1,120 @@
# Breaking changes/互換性を破る変更
<!---
grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh
original document: 0.9.0:docs/breaking_changes.md
git diff 0.9.0 HEAD -- docs/breaking_changes.md | cat
-->
このドキュメントは QMK の互換性を破る変更(Breaking change) のプロセスについて説明します。
互換性を破る変更とは、互換性がなかったり潜在的な危険が生じるように QMK の動作を変える変更を指します。
ユーザが QMK ツリーを更新しても自分のキーマップが壊れない事を確信できるように、これらの変更を制限します。(訳注:以後、原文のまま Breaking change を用語として使用します。)
Breaking change ピリオドとは、危険な変更、または予想外の変更を QMK へ行なう PR をマージする時のことです。
付随するテスト期間があるため、問題が起きることはまれか、有りえないと確信しています。
## 過去の Breaking change には何が含まれますか?
* [2020年5月30日](ja/ChangeLog/20200530.md)
* [2020年2月29日](ja/ChangeLog/20200229.md)
* [2019年8月30日](ja/ChangeLog/20190830.md)
## 次の Breaking change はいつですか?
次の Breaking change は2020年8月29日に予定されています。
### 重要な日付
* [x] 2020年 5月30日 - `develop` が作成されました。毎週リベースされます。
* [ ] 2020年 8月 1日 - `develop` は新しいPRを取り込みません。
* [ ] 2020年 8月 1日 - テスターの募集。
* [ ] 2020年 8月27日 - `master`がロックされ、PR はマージされません。
* [ ] 2020年 8月29日 - `develop` を `master` にマージします。
* [ ] 2020年 8月29日 - `master` のロックが解除されます。PR を再びマージすることができます。
## どのような変更が含まれますか?
最新の Breaking change 候補を見るには、[`breaking_change` ラベル](https://github.com/qmk/qmk_firmware/pulls?q=is%3Aopen+label%3Abreaking_change+is%3Apr)を参照してください。
現在から `develop` が閉じられるまでの間に新しい変更が追加される可能性があり、そのラベルが適用された PR はマージされることは保証されていません。
このラウンドに、あなたの Breaking change を含めたい場合は、`breaking_change` ラベルを持つ PR を作成し、`develop` が閉じる前に承認してもらう必要があります。
`develop` が閉じた後は、新しい Breaking change は受け付けられません。
受け入れの基準:
* PR が完了し、マージの準備ができている
* PR が ChangeLog を持つ
# チェックリスト
ここでは、Breaking change プロセスを実行する時に使用する様々なプロセスについて説明します。
## `master` から `develop` をリベースします
これは `develop` が開いている間、毎週金曜日に実行されます。
プロセス:
```
cd qmk_firmware
git checkout master
git pull --ff-only
git checkout develop
git rebase master
git push --force
```
## `develop` ブランチの作成
以前の `develop` ブランチがマージされた直後に、これが発生します。
* `qmk_firmware` git commands
* [ ] `git checkout master`
* [ ] `git pull --ff-only`
* [ ] `git checkout -b develop`
* [ ] Edit `readme.md`
* [ ] これがテストブランチであることを上部に大きな通知で追加します。
* [ ] このドキュメントへのリンクを含めます
* [ ] `git commit -m 'Branch point for <DATE> Breaking Change'`
* [ ] `git tag breakpoint_<YYYY>_<MM>_<DD>`
* [ ] `git tag <next_version>` # ブレーキング ポイント タグがバージョンの増分を混乱させないようにします
* [ ] `git push origin develop`
* [ ] `git push --tags`
## マージの 4 週間前
* `develop` は新しい PR に対して閉じられ、現在の PR の修正のみがマージされる可能性があります。
* テスターの呼び出しを投稿します
* [ ] Discord
* [ ] GitHub PR
* [ ] https://reddit.com/r/olkb
## マージの 1 週間前
* master が < 2 日前> から <マージの日> まで閉じられることを発表します
* [ ] Discord
* [ ] GitHub PR
* [ ] https://reddit.com/r/olkb
## マージの 2 日前
* master が 2 日間閉じられることを発表します
* [ ] Discord
* [ ] GitHub PR
* [ ] https://reddit.com/r/olkb
## マージの日
* `qmk_firmware` git commands
* [ ] `git checkout develop`
* [ ] `git pull --ff-only`
* [ ] `git rebase origin/master`
* [ ] Edit `readme.md`
* [ ] `develop` についてのメモを削除
* [ ] ChangeLog を 1 つのファイルにまとめます。
* [ ] `git commit -m 'Merge point for <DATE> Breaking Change'`
* [ ] `git push origin develop`
* GitHub Actions
* [ ] `develop`の PR を作成します
* [ ] travis がクリーンに戻ったことを確認します
* [ ] `develop` PR をマージします
+51
View File
@@ -0,0 +1,51 @@
# breaking changes/互換性を破る変更: プルリクエストにフラグが付けられた
<!---
grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh
original document: 0.9.0:docs/breaking_changes_instructions.md
git diff 0.9.0 HEAD -- docs/breaking_changes_instructions.md | cat
-->
QMK のメンバーがあなたのプルリクエストに返信し、あなたの提出したものは Breaking change (互換性を破る変更) であると述べている場合があります。メンバーの判断では、あなたが提案した変更は QMK やその利用者にとってより大きな影響を持つと考えられます。
プルリクエストにフラグが立てられる原因となるものには、以下のようなものがあります:
- **ユーザーのキーマップに対する編集**
ユーザーが自分のキーマップを QMK に提出した後、しばらくしてさらに更新してプルリクエストを開いたところ、それが `qmk/qmk_firmware` リポジトリで編集されていたためにマージできなかったことに気づくことがあるかもしれません。すべてのユーザーが Git や GitHub を使いこなせるわけではないので、ユーザー自身で問題を修正できないことに気づくかもしれません。
- **期待される動作の変更**
QMK の動作を変更すると、既存の QMK 機能への変更を組み込んだ新しいファームウェアをフラッシュした場合、ユーザはハードウェアまたは QMK が壊れていると考え、希望する動作を復元する手段がないことに気付くことがあります。
- **ユーザーのアクションを必要とする変更**
変更には、ツールチェインを更新したり、Git で何らかのアクションを取るなど、ユーザーがアクションを行う必要がある場合もあります。
- **精査が必要な変更**
時には、投稿がプロジェクトとしての QMK に影響を与えることもあります。これは、著作権やライセンスの問題、コーディング規約、大規模な機能のオーバーホール、コミュニティによるより広範なテストを必要とする「リスクの高い」変更、あるいは全く別のものである可能性があります。
- **エンドユーザーとのコミュニケーションを必要とする変更**
これには、将来の非推奨化への警告、時代遅れの慣習、その他伝えなければならないが上記のカテゴリのどれかに当てはまらないものが含まれます。
## 何をすればいいのか?
提出したものが Breaking change だと判断された場合、手続きをスムーズに進めるためにできることがいくつかあります。
### PR を分割することを検討する
あなたがコアコードを投稿していて、それが Breaking change プロセスを経る必要がある唯一の理由が、あなたの変更に合わせてキーマップを更新していることである場合、古いキーマップが機能し続けるような方法であなたの機能を投稿できるかどうかを検討してください。
そののち、Breaking change プロセスを経て古いコードを削除する別の PR を提出してください。
### ChangeLog エントリの提供
Breaking change プロセスを経て提出する際には、変更ログのエントリを含めることを我々は要請します。
エントリーは、あなたのプルリクエストが行う変更の短い要約としてください &ndash; [ここの各セクションは changelog として開始されました](ja/ChangeLog/20190830.md "n.b. This should link to the 2019 Aug 30 Breaking Changes doc - @noroadsleft")。
変更ログは `docs/ChangeLog/YYYYMMDD/PR####.md` に置いてください。
ここで、`YYYYMMDD` は QMK の breaking change ブランチ &ndash; 通常は `develop` という名称 &ndash; が `master` ブランチにマージされる日付、`####` はプルリクエストの番号です。
ユーザー側でのアクションを必要とする場合、あなたの変更ログは、どのようなアクションを取らなければならないかをユーザーに指示するか、そのようなアクションを指示する場所にリンクする必要があります。
### 変更点を文書化する
提出物の目的を理解し、それが必要とする可能性のある意味合いやアクションを理解することで、レビュープロセスをより簡単にすることができます。この目的のためには変更履歴で十分かもしれませんが、より広範囲の変更を行う場合には、変更履歴には不向きな詳細レベルが必要になるかもしれません。
あなたのプルリクエストにコメントしたり、質問やコメント、変更要求に対応したりすることは、非常にありがたいことです。
### 助けを求める
あなたの提出物にフラグが立ったことで、あなたはびっくりしてしまったかもしれません。もし、あなた自身が脅されたり、圧倒されたりしていると感じたら、私たちに知らせてください。プルリクエストにコメントするか、[Discord で QMK チームに連絡を取ってください](https://discord.gg/Uq7gcHh)。
+2 -2
View File
@@ -1,8 +1,8 @@
# QMK CLI 設定 # QMK CLI 設定
<!--- <!---
original document: d598f01cb:docs/cli_configuration.md original document: 0.9.0:docs/cli_configuration.md
git diff d598f01cb HEAD -- docs/cli_configuration.md | cat git diff 0.9.0 HEAD -- docs/cli_configuration.md | cat
--> -->
このドキュメントは `qmk config` がどのように動作するかを説明します。 このドキュメントは `qmk config` がどのように動作するかを説明します。
+2 -2
View File
@@ -1,8 +1,8 @@
# Zadig を使ったブートローダドライバのインストール # Zadig を使ったブートローダドライバのインストール
<!--- <!---
original document: d598f01cb:docs/driver_installation_zadig.md original document: 0.9.0:docs/driver_installation_zadig.md
git diff d598f01cb HEAD -- docs/driver_installation_zadig.md | cat git diff 0.9.0 HEAD -- docs/driver_installation_zadig.md | cat
--> -->
QMK はホストにたいして通常の HID キーボードデバイスとして振る舞うため特別なドライバは必要ありません。しかし、Windows でのキーボードへの書き込みは、多くの場合、キーボードをリセットした時に現れるブートローダデバイスで*行います*。 QMK はホストにたいして通常の HID キーボードデバイスとして振る舞うため特別なドライバは必要ありません。しかし、Windows でのキーボードへの書き込みは、多くの場合、キーボードをリセットした時に現れるブートローダデバイスで*行います*。
+2 -2
View File
@@ -1,8 +1,8 @@
# オーディオ # オーディオ
<!--- <!---
original document: 5d5ff80:docs/feature_audio.md original document: 0.9.0:docs/feature_audio.md
git diff 5d5ff80 HEAD -- docs/feature_audio.md | cat git diff 0.9.0 HEAD -- docs/feature_audio.md | cat
--> -->
キーボードは音を出すことができます!Planck、Preonic あるいは特定の PWM 対応ピンにアクセスできる AVR キーボードがある場合は、単純なスピーカーを接続してビープ音を鳴らすことができます。これらのビープ音を使ってレイヤーの変化、モディファイア、特殊キーを示したり、あるいは単にイカした8ビットの曲を鳴らすことができます。 キーボードは音を出すことができます!Planck、Preonic あるいは特定の PWM 対応ピンにアクセスできる AVR キーボードがある場合は、単純なスピーカーを接続してビープ音を鳴らすことができます。これらのビープ音を使ってレイヤーの変化、モディファイア、特殊キーを示したり、あるいは単にイカした8ビットの曲を鳴らすことができます。
+2 -2
View File
@@ -1,8 +1,8 @@
# 自動シフト: なぜシフトキーが必要ですか? # 自動シフト: なぜシフトキーが必要ですか?
<!--- <!---
original document: 5d5ff80:docs/feature_auto_shift.md original document: 0.9.0:docs/feature_auto_shift.md
git diff 5d5ff80 HEAD -- docs/feature_auto_shift.md | cat git diff 0.9.0 HEAD -- docs/feature_auto_shift.md | cat
--> -->
キーをタップすると、その文字を取得します。キーをタップするが、*わずかに*長く押し続けると、シフト状態になります。ほら!シフトキーは必要ありません! キーをタップすると、その文字を取得します。キーをタップするが、*わずかに*長く押し続けると、シフト状態になります。ほら!シフトキーは必要ありません!
+2 -2
View File
@@ -1,8 +1,8 @@
# Bluetooth # Bluetooth
<!--- <!---
original document: 5d5ff80:docs/feature_bluetooth.md original document: 0.9.0:docs/feature_bluetooth.md
git diff 5d5ff80 HEAD -- docs/feature_bluetooth.md | cat git diff 0.9.0 HEAD -- docs/feature_bluetooth.md | cat
--> -->
## Bluetooth の既知のサポートハードウェア ## Bluetooth の既知のサポートハードウェア
+13 -2
View File
@@ -1,8 +1,8 @@
# ブートマジック # ブートマジック
<!--- <!---
original document: 5d5ff80:docs/feature_bootmagic.md original document: 0.9.0:docs/feature_bootmagic.md
git diff 5d5ff80 HEAD -- docs/feature_bootmagic.md | cat git diff 0.9.0 HEAD -- docs/feature_bootmagic.md | cat
--> -->
再書き込みせずにキーボードの挙動を変更することができる、3つの独立した関連する機能があります。それぞれは似たような機能を持ちますが、キーボードがどのように設定されているかによって異なる方法でアクセスされます。 再書き込みせずにキーボードの挙動を変更することができる、3つの独立した関連する機能があります。それぞれは似たような機能を持ちますが、キーボードがどのように設定されているかによって異なる方法でアクセスされます。
@@ -149,6 +149,17 @@ BOOTMAGIC_ENABLE = lite
!> ブートマジックライトを使用すると、EEPROM を**常にリセットします**。つまり保存された全ての設定は失われます。 !> ブートマジックライトを使用すると、EEPROM を**常にリセットします**。つまり保存された全ての設定は失われます。
## 分割キーボード
`SPLIT_HAND_PIN` のようなオプションで、左右の設定があらかじめ決められている場合は、キーボードの左右で別のキーを設定する必要があるかもしれません。これを行うには、`config.h` ファイルに以下のエントリを追加します。
```c
#define BOOTMAGIC_LITE_ROW_RIGHT 4
#define BOOTMAGIC_LITE_COLUMN_RIGHT 1
```
デフォルトでは、これらの値は設定されていません。
## 高度なブートマジックライト ## 高度なブートマジックライト
`bootmagic_lite` 関数は必要に応じてコード内で置き換えることができるように、弱く定義されています。これの良い例は Zeal60 キーボードで、追加の処理が必要です。 `bootmagic_lite` 関数は必要に応じてコード内で置き換えることができるように、弱く定義されています。これの良い例は Zeal60 キーボードで、追加の処理が必要です。
+2 -2
View File
@@ -32,7 +32,7 @@ report_mouse_t (ここでは "mouseReport") が以下のプロパティを持つ
```c ```c
case MS_SPECIAL: case MS_SPECIAL:
report_mouse_t currentReport = pointing_device_get_report(); report_mouse_t currentReport = pointing_device_get_report();
if (record->event.pressed) { if (record->event.pressed) {
currentReport.v = 127; currentReport.v = 127;
currentReport.h = 127; currentReport.h = 127;
@@ -42,7 +42,7 @@ case MS_SPECIAL:
currentReport.h = -127; currentReport.h = -127;
currentReport.buttons &= ~MOUSE_BTN1; currentReport.buttons &= ~MOUSE_BTN1;
} }
pointing_device_set_report(currentReport); pointing_device_set_report(currentReport);
break; break;
``` ```
+2 -2
View File
@@ -1,8 +1,8 @@
# タップダンス: 1つのキーが3つ、5つまたは100の異なる動作をします # タップダンス: 1つのキーが3つ、5つまたは100の異なる動作をします
<!--- <!---
original document: 634b277b0:docs/feature_tap_dance.md original document: 0.9.0:docs/feature_tap_dance.md
git diff 634b277b0 HEAD -- docs//feature_tap_dance.md | cat git diff 0.9.0 HEAD -- docs/feature_tap_dance.md | cat
--> -->
## イントロダクション ## イントロダクション
+2 -2
View File
@@ -1,8 +1,8 @@
# より詳細な `make` 手順 # より詳細な `make` 手順
<!--- <!---
original document: 5f35203d1:docs/getting_started_make_guide.md original document: 0.9.0:docs/getting_started_make_guide.md
git diff 5f35203d1 HEAD -- docs/getting_started_make_guide.md | cat git diff 0.9.0 HEAD -- docs/getting_started_make_guide.md | cat
--> -->
`make` コマンドの完全な構文は `<keyboard_folder>:<keymap>:<target>` です: `make` コマンドの完全な構文は `<keyboard_folder>:<keymap>:<target>` です:
+2 -2
View File
@@ -2,8 +2,8 @@
<!--- <!---
grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh
original document: c9e3fa6f7:docs/hardware_avr.md original document: 0.9.0:docs/hardware_avr.md
git diff c9e3fa6f7 HEAD -- docs/hardware_avr.md | cat git diff 0.9.0 HEAD -- docs/hardware_avr.md | cat
--> -->
このページでは QMK における AVR マイコンのサポートについて説明します。AVR マイコンには、Atmel 社製の atmega32u4、atmega32u2、at90usb1286 やその他のマイコンを含みます。AVR マイコンは、簡単に動かせるよう設計された8ビットの MCU です。キーボードでよく使用される AVR マイコンには USB 機能や大きなキーボードマトリックスのためのたくさんの GPIO を搭載しています。これらは、現在、キーボードで使われる最も一般的な MCU です。 このページでは QMK における AVR マイコンのサポートについて説明します。AVR マイコンには、Atmel 社製の atmega32u4、atmega32u2、at90usb1286 やその他のマイコンを含みます。AVR マイコンは、簡単に動かせるよう設計された8ビットの MCU です。キーボードでよく使用される AVR マイコンには USB 機能や大きなキーボードマトリックスのためのたくさんの GPIO を搭載しています。これらは、現在、キーボードで使われる最も一般的な MCU です。
+2 -2
View File
@@ -2,8 +2,8 @@
<!--- <!---
grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh
original document: c9e3fa6f7:docs/hardware_drivers.md original document: 0.9.0:docs/hardware_drivers.md
git diff c9e3fa6f7 HEAD -- docs/hardware_drivers.md | cat git diff 0.9.0 HEAD -- docs/hardware_drivers.md | cat
--> -->
QMK はたくさんの異なるハードウェアで使われています。最も一般的な MCU とマトリックス構成をサポートしていますが、キーボードへ他のハードウェアを追加し制御するためのドライバーもいくつか用意されています。例えば、マウスやポインティングデバイス、分割キーボード用の IO エキスパンダ、Bluetooth モジュール、LCD、OLED、TFT 液晶などがあります。 QMK はたくさんの異なるハードウェアで使われています。最も一般的な MCU とマトリックス構成をサポートしていますが、キーボードへ他のハードウェアを追加し制御するためのドライバーもいくつか用意されています。例えば、マウスやポインティングデバイス、分割キーボード用の IO エキスパンダ、Bluetooth モジュール、LCD、OLED、TFT 液晶などがあります。
+69 -2
View File
@@ -2,8 +2,8 @@
<!--- <!---
grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh
original document: c9e3fa6f7:docs/hardware_keyboard_guidelines.md original document: 0.9.0:docs/hardware_keyboard_guidelines.md
git diff c9e3fa6f7 HEAD -- docs/hardware_keyboard_guidelines.md | cat git diff 0.9.0 HEAD -- docs/hardware_keyboard_guidelines.md | cat
--> -->
QMK は開始以来、コミュニティにおけるキーボードの作成や保守に貢献しているあなたのような人たちのおかげで飛躍的に成長しました。私たちが成長するにつれて、うまくやるためのいくつかのパターンを発見しました。他の人たちがあなたの苦労の恩恵を受けやすくするため、それにあわせてもらえるようお願いします。 QMK は開始以来、コミュニティにおけるキーボードの作成や保守に貢献しているあなたのような人たちのおかげで飛躍的に成長しました。私たちが成長するにつれて、うまくやるためのいくつかのパターンを発見しました。他の人たちがあなたの苦労の恩恵を受けやすくするため、それにあわせてもらえるようお願いします。
@@ -66,10 +66,77 @@ Clueboard は、サブフォルダをまとめるためとキーボードのリ
全てのプロジェクトには、マトリックスサイズ、製品名、USB VID/PID、説明、その他の設定などが含まれた `config.h` ファイルが必要です。一般に、このファイルを使用して常に機能するキーボードの重要な情報やデフォルトを設定します。 全てのプロジェクトには、マトリックスサイズ、製品名、USB VID/PID、説明、その他の設定などが含まれた `config.h` ファイルが必要です。一般に、このファイルを使用して常に機能するキーボードの重要な情報やデフォルトを設定します。
また、`config.h` ファイルはサブフォルダにも置くことができ、その読み込み順は以下の通りです。
* `keyboards/top_folder/config.h`
* `keyboards/top_folder/sub_1/config.h`
* `keyboards/top_folder/sub_1/sub_2/config.h`
* `keyboards/top_folder/sub_1/sub_2/sub_3/config.h`
* `keyboards/top_folder/sub_1/sub_2/sub_3/sub_4/config.h`
* `users/a_user_folder/config.h`
* `keyboards/top_folder/keymaps/a_keymap/config.h`
* `keyboards/top_folder/sub_1/sub_2/sub_3/sub_4/post_config.h`
* `keyboards/top_folder/sub_1/sub_2/sub_3/post_config.h`
* `keyboards/top_folder/sub_1/sub_2/post_config.h`
* `keyboards/top_folder/sub_1/post_config.h`
* `keyboards/top_folder/post_config.h`
`post_config.h` ファイルは、`config.h` ファイルで指定された内容に応じて、追加の後処理を行うために使用することができます。
例えば、キーマップレベルの `config.h` ファイルで `IOS_DEVICE_ENABLE` マクロを以下のように定義すると、`post_config.h` ファイルでより詳細な設定を行うことができます。
* `keyboards/top_folder/keymaps/a_keymap/config.h`
```c
#define IOS_DEVICE_ENABLE
```
* `keyboards/top_folder/post_config.h`
```c
#ifndef IOS_DEVICE_ENABLE
// USB_MAX_POWER_CONSUMPTION value for this keyboard
#define USB_MAX_POWER_CONSUMPTION 400
#else
// fix iPhone and iPad power adapter issue
// iOS device need lessthan 100
#define USB_MAX_POWER_CONSUMPTION 100
#endif
#ifdef RGBLIGHT_ENABLE
#ifndef IOS_DEVICE_ENABLE
#define RGBLIGHT_LIMIT_VAL 200
#define RGBLIGHT_VAL_STEP 17
#else
#define RGBLIGHT_LIMIT_VAL 35
#define RGBLIGHT_VAL_STEP 4
#endif
#ifndef RGBLIGHT_HUE_STEP
#define RGBLIGHT_HUE_STEP 10
#endif
#ifndef RGBLIGHT_SAT_STEP
#define RGBLIGHT_SAT_STEP 17
#endif
#endif
```
?> 上記の例のように `post_config.h` でオプションを定義する場合、キーボードやユーザレベルの `config.h` で同じオプションを定義してはいけません。
### `rules.mk` ### `rules.mk`
このファイルが存在するということは、フォルダがキーボードであり、`make` コマンドで使用できることを意味します。ここでキーボードのビルド環境を構築し、デフォルトの機能を設定します。 このファイルが存在するということは、フォルダがキーボードであり、`make` コマンドで使用できることを意味します。ここでキーボードのビルド環境を構築し、デフォルトの機能を設定します。
`rules.mk` ファイルはサブフォルダにも置くことができ、その読み込み順は以下の通りです。
* `keyboards/top_folder/rules.mk`
* `keyboards/top_folder/sub_1/rules.mk`
* `keyboards/top_folder/sub_1/sub_2/rules.mk`
* `keyboards/top_folder/sub_1/sub_2/sub_3/rules.mk`
* `keyboards/top_folder/sub_1/sub_2/sub_3/sub_4/rules.mk`
* `keyboards/top_folder/keymaps/a_keymap/rules.mk`
* `users/a_user_folder/rules.mk`
* `common_features.mk`
`rules.mk` ファイルに書かれた多くの設定は `common_features.mk` によって解釈され、必要なソースファイルやコンパイラのオプションが設定されます。
?> 詳しくは `build_keyboard.mk` と `common_features.mk` を見てください。
### `<keyboard_name.c>` ### `<keyboard_name.c>`
ここではキーボードのカスタマイズされたコードを記述します。通常、初期化してキーボードのハードウェアを制御するコードを記述します。キーボードが LED やスピーカー、その他付属ハードウェアのないキーマトリックスのみで構成されている場合は空にできます。 ここではキーボードのカスタマイズされたコードを記述します。通常、初期化してキーボードのハードウェアを制御するコードを記述します。キーボードが LED やスピーカー、その他付属ハードウェアのないキーマトリックスのみで構成されている場合は空にできます。
+3 -8
View File
@@ -41,16 +41,11 @@ We've tried to make QMK as easy to set up as possible. You only have to prepare
You will need to install MSYS2, Git, and the QMK CLI. You will need to install MSYS2, Git, and the QMK CLI.
* Follow the installation instructions on the [MSYS2 homepage](http://www.msys2.org). Follow the installation instructions on the [MSYS2 homepage](http://www.msys2.org). Close any open MSYS terminals and open a new MinGW 64-bit terminal. **NOTE: This is *not* the same as the MSYS terminal that opens when installation is completed.**
* Close any open MSYS2 terminals and open a new MSYS2 MinGW 64-bit terminal. NOTE: This is **not** the same as the MSYS terminal that opens when installation is completed.
After opening a new MSYS2 MinGW 64-bit terminal, make sure `pacman` is up to date with: Then, run the following:
pacman -Syu pacman --needed --noconfirm --disable-download-timeout -S git mingw-w64-x86_64-toolchain mingw-w64-x86_64-python3-pip
You may be asked to close and reopen the window. Do this and keep running the above command until it says `there is nothing to do`. Then run the following:
pacman -S git mingw-w64-x86_64-toolchain mingw-w64-x86_64-python3-pip
python3 -m pip install qmk python3 -m pip install qmk
### macOS ### macOS
+2 -3
View File
@@ -24,7 +24,6 @@
#include "i2c_master.h" #include "i2c_master.h"
#include "progmem.h" #include "progmem.h"
// This is a 7-bit address, that gets left-shifted and bit 0 // This is a 7-bit address, that gets left-shifted and bit 0
// set to 0 for write, 1 for read (as per I2C protocol) // set to 0 for write, 1 for read (as per I2C protocol)
// The address will vary depending on your wiring: // The address will vary depending on your wiring:
@@ -178,9 +177,9 @@ void IS31FL3741_init(uint8_t addr) {
// Set Pull up & Down for SWx CSy // Set Pull up & Down for SWx CSy
IS31FL3741_write_register(addr, ISSI_REG_PULLDOWNUP, 0x77); IS31FL3741_write_register(addr, ISSI_REG_PULLDOWNUP, 0x77);
// IS31FL3741_update_led_scaling_registers(addr, 0xFF, 0xFF, 0xFF); // IS31FL3741_update_led_scaling_registers(addr, 0xFF, 0xFF, 0xFF);
// Wait 10ms to ensure the device has woken up. // Wait 10ms to ensure the device has woken up.
wait_ms(10); wait_ms(10);
} }
+2 -2
View File
@@ -18,12 +18,12 @@
#include "quantum/color.h" #include "quantum/color.h"
/* /*
* Older WS2812s can handle a reset time (TRST) of 50us, but recent * Older WS2812s can handle a reset time (TRST) of 50us, but recent
* component revisions require a minimum of 280us. * component revisions require a minimum of 280us.
*/ */
#if !defined(WS2812_TRST_US) #if !defined(WS2812_TRST_US)
#define WS2812_TRST_US 280 # define WS2812_TRST_US 280
#endif #endif
/* User Interface /* User Interface
+3 -3
View File
@@ -14,7 +14,7 @@ BOOTLOADER = atmel-dfu
# Build Options # Build Options
# change yes to no to disable # change yes to no to disable
# #
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
MOUSEKEY_ENABLE = no # Mouse keys MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug CONSOLE_ENABLE = yes # Console for debug
@@ -22,8 +22,8 @@ COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no # USB Nkey Rollover NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
MIDI_ENABLE = no # MIDI support MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode UNICODE_ENABLE = no # Unicode
+1 -1
View File
@@ -14,7 +14,7 @@ BOOTLOADER = atmel-dfu
# Build Options # Build Options
# comment out to disable the options. # comment out to disable the options.
# #
BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
MOUSEKEY_ENABLE = yes # Mouse keys MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug CONSOLE_ENABLE = no # Console for debug
+1
View File
@@ -0,0 +1 @@
#include "5x12.h"
+17
View File
@@ -0,0 +1,17 @@
#pragma once
#include "quantum.h"
#define LAYOUT_ortho_5x12( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, \
K12, K13, K14, K15, K16, K17, K18, K19, K20, K21, K22, K23, \
K24, K25, K26, K27, K28, K29, K30, K31, K32, K33, K34, K35, \
K36, K37, K38, K39, K40, K41, K42, K43, K44, K45, K46, K47, \
K48, K49, K50, K51, K52, K53, K54, K55, K56, K57, K58, K59 \
) { \
{K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11}, \
{K12, K13, K14, K15, K16, K17, K18, K19, K20, K21, K22, K23}, \
{K24, K25, K26, K27, K28, K29, K30, K31, K32, K33, K34, K35}, \
{K36, K37, K38, K39, K40, K41, K42, K43, K44, K45, K46, K47}, \
{K48, K49, K50, K51, K52, K53, K54, K55, K56, K57, K58, K59} \
}
+143
View File
@@ -0,0 +1,143 @@
#pragma once
#include "config_common.h"
/* USB Device descriptor parameter */
#define VENDOR_ID 0xF7E0
#define PRODUCT_ID 0x0412
#define DEVICE_VER 0x0000
#define MANUFACTURER Boardsource
#define PRODUCT 5x12
#define DESCRIPTION 50 percent ortho keyboard
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 12
#define MATRIX_ROW_PINS { D2, D3, D1, D0, D4 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, B6, B5, B4, E6, D7 }
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
* This is userful for the Windows task manager shortcut (ctrl+shift+esc).
*/
// #define GRAVE_ESC_CTRL_OVERRIDE
/*
* Force NKRO
*
* Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
* state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
* makefile for this to work.)
*
* If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
* until the next keyboard reset.
*
* NKRO may prevent your keystrokes from being detected in the BIOS, but it is
* fully operational during normal computer usage.
*
* For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
* or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
* bootmagic, NKRO mode will always be enabled until it is toggled again during a
* power-up.
*
*/
//#define FORCE_NKRO
/*
* Magic Key Options
*
* Magic keys are hotkey commands that allow control over firmware functions of
* the keyboard. They are best used in combination with the HID Listen program,
* found here: https://www.pjrc.com/teensy/hid_listen.html
*
* The options below allow the magic key functionality to be changed. This is
* useful if your keyboard/keypad is missing keys and you want magic key support.
*
*/
/* control how magic key switches layers */
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
/* override magic key keymap */
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
//#define MAGIC_KEY_HELP1 H
//#define MAGIC_KEY_HELP2 SLASH
//#define MAGIC_KEY_DEBUG D
//#define MAGIC_KEY_DEBUG_MATRIX X
//#define MAGIC_KEY_DEBUG_KBD K
//#define MAGIC_KEY_DEBUG_MOUSE M
//#define MAGIC_KEY_VERSION V
//#define MAGIC_KEY_STATUS S
//#define MAGIC_KEY_CONSOLE C
//#define MAGIC_KEY_LAYER0_ALT1 ESC
//#define MAGIC_KEY_LAYER0_ALT2 GRAVE
//#define MAGIC_KEY_LAYER0 0
//#define MAGIC_KEY_LAYER1 1
//#define MAGIC_KEY_LAYER2 2
//#define MAGIC_KEY_LAYER3 3
//#define MAGIC_KEY_LAYER4 4
//#define MAGIC_KEY_LAYER5 5
//#define MAGIC_KEY_LAYER6 6
//#define MAGIC_KEY_LAYER7 7
//#define MAGIC_KEY_LAYER8 8
//#define MAGIC_KEY_LAYER9 9
//#define MAGIC_KEY_BOOTLOADER PAUSE
//#define MAGIC_KEY_LOCK CAPS
//#define MAGIC_KEY_EEPROM E
//#define MAGIC_KEY_NKRO N
//#define MAGIC_KEY_SLEEP_LED Z
/*
* Feature disable options
* These options are also useful to firmware size reduction.
*/
/* disable debug print */
//#define NO_DEBUG
/* disable print */
//#define NO_PRINT
/* disable action features */
//#define NO_ACTION_LAYER
//#define NO_ACTION_TAPPING
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
/*
* 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
*/
//#define MIDI_BASIC
/* enable advanced MIDI features:
- MIDI notes can be added to the keymap
- Octave shift and transpose
- Virtual sustain, portamento, and modulation wheel
- etc.
*/
//#define MIDI_ADVANCED
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
//#define MIDI_TONE_KEYCODE_OCTAVES 1
+77
View File
@@ -0,0 +1,77 @@
{
"keyboard_name": "boardsource 5x12",
"url": "https://boardsource.xyz",
"maintainer": "boardsource",
"width": 12,
"height": 5,
"layouts": {
"LAYOUT": {
"layout": [
{ "label": "K01", "x": 0, "y": 0 },
{ "label": "K02", "x": 1, "y": 0 },
{ "label": "K03", "x": 2, "y": 0 },
{ "label": "K04", "x": 3, "y": 0 },
{ "label": "K05", "x": 4, "y": 0 },
{ "label": "K06", "x": 5, "y": 0 },
{ "label": "K07", "x": 6, "y": 0 },
{ "label": "K08", "x": 7, "y": 0 },
{ "label": "K09", "x": 8, "y": 0 },
{ "label": "K010", "x": 9, "y": 0 },
{ "label": "K011", "x": 10, "y": 0 },
{ "label": "K012", "x": 11, "y": 0 },
{ "label": "K11", "x": 0, "y": 1 },
{ "label": "K12", "x": 1, "y": 1 },
{ "label": "K13", "x": 2, "y": 1 },
{ "label": "K14", "x": 3, "y": 1 },
{ "label": "K15", "x": 4, "y": 1 },
{ "label": "K16", "x": 5, "y": 1 },
{ "label": "K17", "x": 6, "y": 1 },
{ "label": "K18", "x": 7, "y": 1 },
{ "label": "K19", "x": 8, "y": 1 },
{ "label": "K110", "x": 9, "y": 1 },
{ "label": "K111", "x": 10, "y": 1 },
{ "label": "K112", "x": 11, "y": 1 },
{ "label": "K21", "x": 0, "y": 2 },
{ "label": "K22", "x": 1, "y": 2 },
{ "label": "K23", "x": 2, "y": 2 },
{ "label": "K24", "x": 3, "y": 2 },
{ "label": "K25", "x": 4, "y": 2 },
{ "label": "K26", "x": 5, "y": 2 },
{ "label": "K27", "x": 6, "y": 2 },
{ "label": "K28", "x": 7, "y": 2 },
{ "label": "K29", "x": 8, "y": 2 },
{ "label": "K210", "x": 9, "y": 2 },
{ "label": "K211", "x": 10, "y": 2 },
{ "label": "K212", "x": 11, "y": 2 },
{ "label": "K31", "x": 0, "y": 3 },
{ "label": "K32", "x": 1, "y": 3 },
{ "label": "K33", "x": 2, "y": 3 },
{ "label": "K34", "x": 3, "y": 3 },
{ "label": "K35", "x": 4, "y": 3 },
{ "label": "K36", "x": 5, "y": 3 },
{ "label": "K37", "x": 6, "y": 3 },
{ "label": "K38", "x": 7, "y": 3 },
{ "label": "K39", "x": 8, "y": 3 },
{ "label": "K310", "x": 9, "y": 3 },
{ "label": "K311", "x": 10, "y": 3 },
{ "label": "K312", "x": 11, "y": 3 },
{ "label": "K41", "x": 0, "y": 4 },
{ "label": "K42", "x": 1, "y": 4 },
{ "label": "K43", "x": 2, "y": 4 },
{ "label": "K44", "x": 3, "y": 4 },
{ "label": "K45", "x": 4, "y": 4 },
{ "label": "K46", "x": 5, "y": 4 },
{ "label": "K47", "x": 6, "y": 4 },
{ "label": "K48", "x": 7, "y": 4 },
{ "label": "K49", "x": 8, "y": 4 },
{ "label": "K410", "x": 9, "y": 4 },
{ "label": "K411", "x": 10, "y": 4 },
{ "label": "K412", "x": 11, "y": 4 }
]
}
}
}
@@ -0,0 +1,39 @@
#include QMK_KEYBOARD_H
enum layers {
_MAIN,
_RAISE,
_LOWER,
};
// Readability keycodes
#define LOWER MO(_LOWER)
#define RAISE MO(_RAISE)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_MAIN] = LAYOUT_ortho_5x12(
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
KC_PIPE, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
[_RAISE] = LAYOUT_ortho_5x12(
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
_______, KC_4, KC_5, KC_6, KC_PLUS, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, _______,
KC_ENT, KC_7, KC_8, KC_9, KC_MINS, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_MUTE, _______, KC_BSLS,
RESET, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
[_LOWER] = LAYOUT_ortho_5x12(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
_______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______,
KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RESET, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
)
};
+13
View File
@@ -0,0 +1,13 @@
# 5x12
![boardsource 5x12](https://i.imgur.com/xuNxpgh.jpg)
* Keyboard Maintainer: [Boardsource](https://github.com/daysgobye)
* Hardware Supported: 5x12 v1
* Hardware Availability: this keyboard is available from the [Boardsource store](https://boardsource.xyz/store/5ecb822386879c9a0c22db84)
Make example for this keyboard (after setting up your build environment):
make boardsource/5x12:default
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+33
View File
@@ -0,0 +1,33 @@
# MCU name
MCU = atmega32u4
# 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
# 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
MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
LAYOUTS = ortho_5x12
@@ -0,0 +1,30 @@
## Greetings, Traveler!
This layout is for the [Massdrop ALT Keyboard](https://drop.com/buy/massdrop-alt-mechanical-keyboard) and targets Windows machines.
This keymap is very similar to the default keymap for the Drop ALT, but it overloads the left alt key to behave like an additional 'Fn' key while keeping the functionality of the alt key intact.
### For example:
```
LeftAlt + 1...N -> F1...FN
LeftAlt + L/R Arrows -> Home/End
LeftAlt + Home -> End
LeftAlt + Backspace -> Delete
LeftAlt + Esc -> Backtick (`)
```
The novel part of this keymap is that it **preserves the default functionality** of the left alt key, so ```'alt + tab', 'ctrl + alt + del', 'alt + f4'```, etc. all work as expected without using any janky timers.
Everything also works with other modifier keys, so ```'alt + L/R' and 'alt + shift + L/R'``` work great for text manipulation to select lines.
This **'super alt'** keymap will feel very familiar for anyone **coming from macOS** since the Windows alt key is in the same position as CMD on macOS keyboards.
And finally, the original alt key functionality can be toggled at any time by pressing **```'Fn + period'```** so even if you don't like it, you can turn it off.
This keymap was based on the 'default' Drop ALT keymap (and _not_ 'default_md') which means it supports all the fancy QMK RGB patterns, and isn't limited to the stock options that come with the board.
It's also worth noting that this keymap fixes an outstanding issue where the caps lock LED flickers when the RGB mode is keylight or underglow. I could not find a general purpose fix, but the one included here works quite well.
If you have any questions, feel free to reach out to me at: ewersp [at] gmail [dot] com.
Enjoy! **<3**
@@ -0,0 +1,3 @@
#pragma once
#define FORCE_NKRO
@@ -0,0 +1,196 @@
#include QMK_KEYBOARD_H
enum alt_keycodes {
U_T_AUTO = SAFE_RANGE, //USB Extra Port Toggle Auto Detect / Always Active
U_T_AGCR, //USB Toggle Automatic GCR control
DBG_TOG, //DEBUG Toggle On / Off
DBG_MTRX, //DEBUG Toggle Matrix Prints
DBG_KBD, //DEBUG Toggle Keyboard Prints
DBG_MOU, //DEBUG Toggle Mouse Prints
MD_BOOT, //Restart into bootloader after hold timeout
ALT_DEL, //Added to map left alt + backspace to delete
};
// Friendly layer names
enum alt_layers {
DEF = 0,
ALT,
FUNC,
SUPR
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[DEF] = LAYOUT_65_ansi_blocker(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
KC_LCTL, KC_LGUI, MO(SUPR), KC_SPC, KC_RALT, MO(FUNC),KC_LEFT, KC_DOWN, KC_RGHT
),
[ALT] = LAYOUT_65_ansi_blocker(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, KC_LALT, _______, _______, _______, _______, _______, _______
),
[FUNC] = LAYOUT_65_ansi_blocker(
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_MUTE,
_______, RGB_SPD, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, _______, U_T_AUTO,U_T_AGCR,_______, KC_PSCR, KC_SLCK, KC_PAUS, _______, KC_END,
_______, RGB_RMOD,RGB_VAD, RGB_MOD, RGB_HUD, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, KC_VOLU,
_______, RGB_TOG, _______, _______, _______, MD_BOOT, NK_TOGG, DBG_TOG, _______, TG(ALT), _______, _______, KC_PGUP, KC_VOLD,
_______, _______, KC_LALT, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
),
[SUPR] = LAYOUT_65_ansi_blocker(
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ALT_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, KC_HOME, _______, KC_END
)
};
// If the super alt layer is the active layer
bool super_alt_layer_active = false;
// If we need to unregister alt when leaving the super alt layer
bool need_to_unregister_alt = false;
#define MODS_SHIFT (get_mods() & MOD_BIT(KC_LSHIFT) || get_mods() & MOD_BIT(KC_RSHIFT))
#define MODS_CTRL (get_mods() & MOD_BIT(KC_LCTL) || get_mods() & MOD_BIT(KC_RCTRL))
#define MODS_ALT (get_mods() & MOD_BIT(KC_LALT) || get_mods() & MOD_BIT(KC_RALT))
// Taken from 'g_led_config' in config_led.c
#define CAPS_LOCK_LED_ID 30
// This runs every matrix scan (every 'frame')
void rgb_matrix_indicators_user(void) {
led_flags_t flags = rgb_matrix_get_flags();
// If we're in either keylight or underglow modes (but not both simultaneously)
if (HAS_FLAGS(flags, LED_FLAG_KEYLIGHT) != HAS_FLAGS(flags, LED_FLAG_UNDERGLOW)) {
// This fixes a bug where the caps lock LED flickers when toggled in either keylight or underglow modes
if (host_keyboard_leds() & (1 << USB_LED_CAPS_LOCK)) {
rgb_matrix_set_color(CAPS_LOCK_LED_ID, RGB_WHITE);
} else {
rgb_matrix_set_color(CAPS_LOCK_LED_ID, 0, 0, 0);
}
}
}
// This runs code every time that the layers get changed
layer_state_t layer_state_set_user(layer_state_t state) {
switch (get_highest_layer(state)) {
case DEF:
// When returning to the default layer, check if we need to unregister the left alt key
if (super_alt_layer_active && need_to_unregister_alt) {
unregister_code(KC_LALT);
}
super_alt_layer_active = false;
need_to_unregister_alt = false;
break;
case SUPR:
super_alt_layer_active = true;
break;
}
return state;
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
static uint32_t key_timer;
switch (keycode) {
// These are the keys we want to 'fall though' and behave as usual when pressed with the alt modifier
case KC_A ... KC_Z:
case KC_TAB:
case KC_DEL:
case KC_UP:
case KC_DOWN:
case MO(FUNC):
if (super_alt_layer_active && record->event.pressed) {
// Only activate the alt modifier for the first key press
if ((get_mods() & MOD_BIT(KC_LALT)) == false) {
register_code(KC_LALT);
need_to_unregister_alt = true;
}
}
// We still want to process the keycode normally
return true;
case ALT_DEL:
if (record->event.pressed) {
register_code(KC_DEL);
} else {
unregister_code(KC_DEL);
}
return false;
case U_T_AUTO:
if (record->event.pressed && MODS_SHIFT && MODS_CTRL) {
TOGGLE_FLAG_AND_PRINT(usb_extra_manual, "USB extra port manual mode");
}
return false;
case U_T_AGCR:
if (record->event.pressed && MODS_SHIFT && MODS_CTRL) {
TOGGLE_FLAG_AND_PRINT(usb_gcr_auto, "USB GCR auto mode");
}
return false;
case DBG_TOG:
if (record->event.pressed) {
TOGGLE_FLAG_AND_PRINT(debug_enable, "Debug mode");
}
return false;
case DBG_MTRX:
if (record->event.pressed) {
TOGGLE_FLAG_AND_PRINT(debug_matrix, "Debug matrix");
}
return false;
case DBG_KBD:
if (record->event.pressed) {
TOGGLE_FLAG_AND_PRINT(debug_keyboard, "Debug keyboard");
}
return false;
case DBG_MOU:
if (record->event.pressed) {
TOGGLE_FLAG_AND_PRINT(debug_mouse, "Debug mouse");
}
return false;
case MD_BOOT:
if (record->event.pressed) {
key_timer = timer_read32();
} else {
if (timer_elapsed32(key_timer) >= 500) {
reset_keyboard();
}
}
return false;
case RGB_TOG:
if (record->event.pressed) {
switch (rgb_matrix_get_flags()) {
case LED_FLAG_ALL: {
rgb_matrix_set_flags(LED_FLAG_KEYLIGHT);
rgb_matrix_set_color_all(0, 0, 0);
}
break;
case LED_FLAG_KEYLIGHT: {
rgb_matrix_set_flags(LED_FLAG_UNDERGLOW);
rgb_matrix_set_color_all(0, 0, 0);
}
break;
case LED_FLAG_UNDERGLOW: {
rgb_matrix_set_flags(LED_FLAG_NONE);
rgb_matrix_disable_noeeprom();
}
break;
default: {
rgb_matrix_set_flags(LED_FLAG_ALL);
rgb_matrix_enable_noeeprom();
}
break;
}
}
return false;
default:
return true; // Process all other keycodes normally
}
}
+2 -2
View File
@@ -21,8 +21,8 @@
{ C6, F7, B6 } \ { C6, F7, B6 } \
} }
#define ENCODERS_PAD_A { F5 } #define ENCODERS_PAD_A { D7, B1 }
#define ENCODERS_PAD_B { F4 } #define ENCODERS_PAD_B { E6, B3 }
/* Set 0 if debouncing isn't needed */ /* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5 #define DEBOUNCE 5
+22 -21
View File
@@ -6,36 +6,37 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* /*
* | Knob: Layer +/- | * | Knob: Layer +/- |
* .---------------------------------------. * .------------------------------------------------.
* | Mute | Play/Pause | Hold: Layer 2 | * | Volume Mute | Media Play/Pause | Hold: Layer 2 |
* |----------|------------|---------------| * |-------------|------------------|---------------|
* | Previous | Up | Next | * | Media Prev | Up | Media Next |
* |----------|------------|---------------| * |-------------|------------------|---------------|
* | Left | Down | Right | * | Left | Down | Right |
* '---------------------------------------' * '------------------------------------------------'
*/ */
[0] = [0] =
LAYOUT( LAYOUT(
KC_MUTE, KC_MPLY, MO(2), KC_MUTE, KC_MPLY, MO(2) ,
KC_MNXT, KC_UP , KC_MPRV , KC_MPRV, KC_UP , KC_MNXT,
KC_LEFT, KC_DOWN , KC_RGHT KC_LEFT, KC_DOWN , KC_RGHT
), ),
/* /*
* .-----------------------. * | Knob: Layer +/- |
* | NUM 7 | NUM 8 | NUM 9 | * .---------------------------------------------------.
* |-------|-------|-------| * | RGB Toggle | Media Play/Pause | Hold: Layer 2 |
* | NUM 4 | NUM 5 | NUM 6 | * |----------------|------------------|---------------|
* |-------|-------|-------| * | Media Previous | RGB Bright+ | Media Next |
* | NUM 1 | NUM 2 | NUM 3 | * |----------------|------------------|---------------|
* '-----------------------' * | RGB Anim- | RGB Bright- | RGB Anim+ |
* '---------------------------------------------------'
*/ */
[1] = [1] =
LAYOUT( LAYOUT(
KC_P7, KC_P8, KC_P8, RGB_TOG , KC_TRNS, KC_TRNS,
KC_P4, KC_P5, KC_P6, KC_TRNS , RGB_VAI, KC_TRNS,
KC_P1, KC_P2, KC_P3 RGB_RMOD, RGB_VAD, RGB_MOD
), ),
/* /*
@@ -58,7 +59,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
}; };
const rgblight_segment_t PROGMEM _base_layer[] = RGBLIGHT_LAYER_SEGMENTS( const rgblight_segment_t PROGMEM _base_layer[] = RGBLIGHT_LAYER_SEGMENTS(
{0, RGBLED_NUM, HSV_WHITE} {0, RGBLED_NUM, HSV_BLUE}
); );
const rgblight_segment_t PROGMEM _middle_layer[] = RGBLIGHT_LAYER_SEGMENTS( const rgblight_segment_t PROGMEM _middle_layer[] = RGBLIGHT_LAYER_SEGMENTS(
{0, RGBLED_NUM, HSV_GREEN} {0, RGBLED_NUM, HSV_GREEN}
+1 -1
View File
@@ -1,4 +1,4 @@
![Mixi Layout Image](https://i.imgur.com/UIXj9O6.png) ![Mixi Layout Image](https://i.imgur.com/WCtQ6GG.jpg)
# Default Mixi Layout # Default Mixi Layout
+39 -21
View File
@@ -6,36 +6,37 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* /*
* | Knob: Layer +/- | * | Knob: Layer +/- |
* .---------------------------------------. * .------------------------------------------------.
* | Mute | Play/Pause | Hold: Layer 2 | * | Volume Mute | Media Play/Pause | Hold: Layer 2 |
* |----------|------------|---------------| * |-------------|------------------|---------------|
* | Previous | Up | Next | * | Media Prev | Up | Media Next |
* |----------|------------|---------------| * |-------------|------------------|---------------|
* | Left | Down | Right | * | Left | Down | Right |
* '---------------------------------------' * '------------------------------------------------'
*/ */
[0] = [0] =
LAYOUT( LAYOUT(
KC_MUTE, KC_MPLY, MO(2), KC_MUTE, KC_MPLY, MO(2) ,
KC_MNXT, KC_UP , KC_MPRV , KC_MPRV, KC_UP , KC_MNXT,
KC_LEFT, KC_DOWN , KC_RGHT KC_LEFT, KC_DOWN , KC_RGHT
), ),
/* /*
* .-----------------------. * | Knob: Layer +/- |
* | NUM 7 | NUM 8 | NUM 9 | * .---------------------------------------------------.
* |-------|-------|-------| * | RGB Toggle | Media Play/Pause | Hold: Layer 2 |
* | NUM 4 | NUM 5 | NUM 6 | * |----------------|------------------|---------------|
* |-------|-------|-------| * | Media Previous | RGB Bright+ | Media Next |
* | NUM 1 | NUM 2 | NUM 3 | * |----------------|------------------|---------------|
* '-----------------------' * | RGB Anim- | RGB Bright- | RGB Anim+ |
* '---------------------------------------------------'
*/ */
[1] = [1] =
LAYOUT( LAYOUT(
KC_P7, KC_P8, KC_P8, RGB_TOG , KC_TRNS, KC_TRNS,
KC_P4, KC_P5, KC_P6, KC_TRNS , RGB_VAI, KC_TRNS,
KC_P1, KC_P2, KC_P3 RGB_RMOD, RGB_VAD, RGB_MOD
), ),
/* /*
@@ -53,12 +54,29 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_NO , KC_NO, KC_TRNS, KC_NO , KC_NO, KC_TRNS,
EEP_RST, RESET, DEBUG , EEP_RST, RESET, DEBUG ,
KC_NO , KC_NO, KC_NO KC_NO , KC_NO, KC_NO
),
/*
* | Knob: N/A |
* .-----------------.
* | N/A | N/A | N/A |
* |-----------------|
* | N/A | N/A | N/A |
* |-----------------|
* | N/A | N/A | N/A |
* '-----------------'
*/
[3] =
LAYOUT(
KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO
) )
}; };
const rgblight_segment_t PROGMEM _base_layer[] = RGBLIGHT_LAYER_SEGMENTS( const rgblight_segment_t PROGMEM _base_layer[] = RGBLIGHT_LAYER_SEGMENTS(
{0, RGBLED_NUM, HSV_WHITE} {0, RGBLED_NUM, HSV_BLUE}
); );
const rgblight_segment_t PROGMEM _middle_layer[] = RGBLIGHT_LAYER_SEGMENTS( const rgblight_segment_t PROGMEM _middle_layer[] = RGBLIGHT_LAYER_SEGMENTS(
{0, RGBLED_NUM, HSV_GREEN} {0, RGBLED_NUM, HSV_GREEN}
+2 -1
View File
@@ -3,8 +3,9 @@
void eeconfig_init_kb(void) { void eeconfig_init_kb(void) {
#ifdef RGBLIGHT_ENABLE #ifdef RGBLIGHT_ENABLE
rgblight_enable(); // Enable RGB underglow by default rgblight_enable(); // Enable RGB underglow by default
rgblight_sethsv(0, 255, 255);
#ifdef RGBLIGHT_ANIMATIONS #ifdef RGBLIGHT_ANIMATIONS
rgblight_mode(RGBLIGHT_MODE_TWINKLE + 5); // Set to RGB_TWINKLE animation by default rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL + 5); // Set to RGB_RAINBOW_SWIRL animation by default
#endif #endif
#endif #endif
+1 -1
View File
@@ -1,6 +1,6 @@
# Mixi # Mixi
![Mixi](https://i.imgur.com/GPO6Khu.jpg) ![Mixi](https://i.imgur.com/f6hHXKZ.jpg)
A mini 3x3 macropad with rotary encoders support and RGB underglow and also tray mount support. Currently the PCB and kits can only be purchased in Indonesia. A mini 3x3 macropad with rotary encoders support and RGB underglow and also tray mount support. Currently the PCB and kits can only be purchased in Indonesia.
@@ -50,7 +50,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_FN2_60] = LAYOUT_default( [_FN2_60] = LAYOUT_default(
BL_TOGG, RGB_TOG, RGB_MOD, RGB_VAD, RGB_VAI, RGB_SAI, RGB_HUD, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______, BL_TOGG, RGB_TOG, RGB_MOD, RGB_VAD, RGB_VAI, RGB_SAI, RGB_HUD, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______,
BL_INC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, BL_INC, VLK_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
BL_DEC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MAKE, BL_DEC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MAKE,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, TG(_DEFAULT) _______, _______, _______, _______, _______, _______, TG(_DEFAULT)
@@ -26,8 +26,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[1] = LAYOUT_tkl_ansi( [1] = LAYOUT_tkl_ansi(
RESET, EEP_RST, DEBUG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, EEP_RST, DEBUG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_TOGG, BL_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_TOGG, BL_INC,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_BRTG, BL_DEC, KC_TRNS, RGB_TOG, RGB_VAI, RGB_MOD, RGB_HUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_BRTG, BL_DEC,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAD, RGB_RMOD,RGB_HUD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ) KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS )
}; };
+42 -43
View File
@@ -72,8 +72,7 @@ bool process_ucis(uint16_t keycode, keyrecord_t *record) {
return true; return true;
} }
bool special = keycode == KC_SPC || keycode == KC_ENT || bool special = keycode == KC_SPC || keycode == KC_ENT || keycode == KC_ESC || keycode == KC_BSPC;
keycode == KC_ESC || keycode == KC_BSPC;
if (qk_ucis_state.count >= UCIS_MAX_SYMBOL_LENGTH && !special) { if (qk_ucis_state.count >= UCIS_MAX_SYMBOL_LENGTH && !special) {
return false; return false;
} }
@@ -82,49 +81,49 @@ bool process_ucis(uint16_t keycode, keyrecord_t *record) {
qk_ucis_state.count++; qk_ucis_state.count++;
switch (keycode) { switch (keycode) {
case KC_BSPC: case KC_BSPC:
if (qk_ucis_state.count >= 2) { if (qk_ucis_state.count >= 2) {
qk_ucis_state.count -= 2; qk_ucis_state.count -= 2;
return true; return true;
} else { } else {
qk_ucis_state.count--; qk_ucis_state.count--;
return false; return false;
}
case KC_SPC:
case KC_ENT:
case KC_ESC:
for (uint8_t i = 0; i < qk_ucis_state.count; i++) {
register_code(KC_BSPC);
unregister_code(KC_BSPC);
wait_ms(UNICODE_TYPE_DELAY);
}
if (keycode == KC_ESC) {
qk_ucis_state.in_progress = false;
qk_ucis_cancel();
return false;
}
uint8_t i;
bool symbol_found = false;
for (i = 0; ucis_symbol_table[i].symbol; i++) {
if (is_uni_seq(ucis_symbol_table[i].symbol)) {
symbol_found = true;
register_ucis(ucis_symbol_table[i].code_points);
break;
} }
}
if (symbol_found) {
qk_ucis_success(i);
} else {
qk_ucis_symbol_fallback();
}
qk_ucis_state.in_progress = false; case KC_SPC:
return false; case KC_ENT:
case KC_ESC:
for (uint8_t i = 0; i < qk_ucis_state.count; i++) {
register_code(KC_BSPC);
unregister_code(KC_BSPC);
wait_ms(UNICODE_TYPE_DELAY);
}
default: if (keycode == KC_ESC) {
return true; qk_ucis_state.in_progress = false;
qk_ucis_cancel();
return false;
}
uint8_t i;
bool symbol_found = false;
for (i = 0; ucis_symbol_table[i].symbol; i++) {
if (is_uni_seq(ucis_symbol_table[i].symbol)) {
symbol_found = true;
register_ucis(ucis_symbol_table[i].code_points);
break;
}
}
if (symbol_found) {
qk_ucis_success(i);
} else {
qk_ucis_symbol_fallback();
}
qk_ucis_state.in_progress = false;
return false;
default:
return true;
} }
} }
@@ -257,7 +257,7 @@ void send_unicode_string(const char *str) {
while (*str) { while (*str) {
int32_t code_point = 0; int32_t code_point = 0;
str = decode_utf8(str, &code_point); str = decode_utf8(str, &code_point);
if (code_point >= 0) { if (code_point >= 0) {
register_unicode(code_point); register_unicode(code_point);
+1 -1
View File
@@ -22,7 +22,7 @@ __attribute__((weak)) uint16_t unicodemap_index(uint16_t keycode) {
uint16_t index = keycode - QK_UNICODEMAP_PAIR; uint16_t index = keycode - QK_UNICODEMAP_PAIR;
bool shift = unicode_saved_mods & MOD_MASK_SHIFT; bool shift = unicode_saved_mods & MOD_MASK_SHIFT;
bool caps = IS_HOST_LED_ON(USB_LED_CAPS_LOCK); bool caps = IS_HOST_LED_ON(USB_LED_CAPS_LOCK);
if (shift ^ caps) { if (shift ^ caps) {
index >>= 7; index >>= 7;
} }
+9 -11
View File
@@ -23,7 +23,7 @@
* be here if shared between boards. * be here if shared between boards.
*/ */
#if defined(IS31FL3731) || defined(IS31FL3733) || defined(IS31FL3737) || defined(IS31FL3741) #if defined(IS31FL3731) || defined(IS31FL3733) || defined(IS31FL3737) || defined(IS31FL3741)
# include "i2c_master.h" # include "i2c_master.h"
@@ -100,9 +100,7 @@ const rgb_matrix_driver_t rgb_matrix_driver = {
.set_color_all = IS31FL3737_set_color_all, .set_color_all = IS31FL3737_set_color_all,
}; };
# else # else
static void flush(void) { static void flush(void) { IS31FL3741_update_pwm_buffers(DRIVER_ADDR_1, DRIVER_ADDR_2); }
IS31FL3741_update_pwm_buffers(DRIVER_ADDR_1, DRIVER_ADDR_2);
}
const rgb_matrix_driver_t rgb_matrix_driver = { const rgb_matrix_driver_t rgb_matrix_driver = {
.init = init, .init = init,
@@ -115,27 +113,27 @@ const rgb_matrix_driver_t rgb_matrix_driver = {
#elif defined(WS2812) #elif defined(WS2812)
// LED color buffer // LED color buffer
LED_TYPE led[DRIVER_LED_TOTAL]; LED_TYPE rgb_matrix_ws2812_array[DRIVER_LED_TOTAL];
static void init(void) {} static void init(void) {}
static void flush(void) { static void flush(void) {
// Assumes use of RGB_DI_PIN // Assumes use of RGB_DI_PIN
ws2812_setleds(led, DRIVER_LED_TOTAL); ws2812_setleds(rgb_matrix_ws2812_array, DRIVER_LED_TOTAL);
} }
// Set an led in the buffer to a color // Set an led in the buffer to a color
static inline void setled(int i, uint8_t r, uint8_t g, uint8_t b) { static inline void setled(int i, uint8_t r, uint8_t g, uint8_t b) {
led[i].r = r; rgb_matrix_ws2812_array[i].r = r;
led[i].g = g; rgb_matrix_ws2812_array[i].g = g;
led[i].b = b; rgb_matrix_ws2812_array[i].b = b;
# ifdef RGBW # ifdef RGBW
convert_rgb_to_rgbw(led[i]); convert_rgb_to_rgbw(rgb_matrix_ws2812_array[i]);
# endif # endif
} }
static void setled_all(uint8_t r, uint8_t g, uint8_t b) { static void setled_all(uint8_t r, uint8_t g, uint8_t b) {
for (int i = 0; i < sizeof(led) / sizeof(led[0]); i++) { for (int i = 0; i < sizeof(rgb_matrix_ws2812_array) / sizeof(rgb_matrix_ws2812_array[0]); i++) {
setled(i, r, g, b); setled(i, r, g, b);
} }
} }
+1
View File
@@ -2,6 +2,7 @@
#ifdef MIDI_ENABLE #ifdef MIDI_ENABLE
# include "midi.h" # include "midi.h"
# include <LUFA/Drivers/USB/USB.h>
extern MidiDevice midi_device; extern MidiDevice midi_device;
void setup_midi(void); void setup_midi(void);
void send_midi_packet(MIDI_EventPacket_t* event); void send_midi_packet(MIDI_EventPacket_t* event);
+1 -1
View File
@@ -223,7 +223,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
} }
break; break;
case KC_F1 ... KC_F24: case KC_F1 ... KC_F12:
return process_gflock(keycode, record); return process_gflock(keycode, record);
} }
+1
View File
@@ -24,4 +24,5 @@ ifeq ($(strip $(KEYBOARD)), projectkb/alice/rev1)
SRC += rgblight_layers.c SRC += rgblight_layers.c
VIA_ENABLE = yes VIA_ENABLE = yes
LTO_ENABLE = no LTO_ENABLE = no
VELOCIKEY_ENABLE=yes
endif endif