Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
82dc8faaf3 | ||
|
|
0b09189087 | ||
|
|
3d6d899666 | ||
|
|
cb13dd0a33 | ||
|
|
af4bc251f9 | ||
|
|
e79fb2c26e | ||
|
|
3e0f8f9c8b | ||
|
|
b0a31f0bf3 | ||
|
|
a91034b802 | ||
|
|
2f85f6fbff | ||
|
|
32340e14fb | ||
|
|
b7da69ec85 | ||
|
|
f36112e957 | ||
|
|
30cdf9331a | ||
|
|
8252f378d9 | ||
|
|
d7f9e6fcf1 | ||
|
|
5c07363054 | ||
|
|
b6e9ef8dd1 |
No files matched your search
@@ -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
|
||||||
@@ -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
@@ -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)
|
||||||
* 履歴
|
* 履歴
|
||||||
|
|||||||
@@ -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 をマージします
|
||||||
@@ -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 プロセスを経て提出する際には、変更ログのエントリを含めることを我々は要請します。
|
||||||
|
エントリーは、あなたのプルリクエストが行う変更の短い要約としてください – [ここの各セクションは 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 ブランチ – 通常は `develop` という名称 – が `master` ブランチにマージされる日付、`####` はプルリクエストの番号です。
|
||||||
|
|
||||||
|
ユーザー側でのアクションを必要とする場合、あなたの変更ログは、どのようなアクションを取らなければならないかをユーザーに指示するか、そのようなアクションを指示する場所にリンクする必要があります。
|
||||||
|
|
||||||
|
### 変更点を文書化する
|
||||||
|
|
||||||
|
提出物の目的を理解し、それが必要とする可能性のある意味合いやアクションを理解することで、レビュープロセスをより簡単にすることができます。この目的のためには変更履歴で十分かもしれませんが、より広範囲の変更を行う場合には、変更履歴には不向きな詳細レベルが必要になるかもしれません。
|
||||||
|
|
||||||
|
あなたのプルリクエストにコメントしたり、質問やコメント、変更要求に対応したりすることは、非常にありがたいことです。
|
||||||
|
|
||||||
|
### 助けを求める
|
||||||
|
|
||||||
|
あなたの提出物にフラグが立ったことで、あなたはびっくりしてしまったかもしれません。もし、あなた自身が脅されたり、圧倒されたりしていると感じたら、私たちに知らせてください。プルリクエストにコメントするか、[Discord で QMK チームに連絡を取ってください](https://discord.gg/Uq7gcHh)。
|
||||||
@@ -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` がどのように動作するかを説明します。
|
||||||
|
|||||||
@@ -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 でのキーボードへの書き込みは、多くの場合、キーボードをリセットした時に現れるブートローダデバイスで*行います*。
|
||||||
|
|||||||
@@ -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ビットの曲を鳴らすことができます。
|
||||||
|
|||||||
@@ -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
|
||||||
-->
|
-->
|
||||||
|
|
||||||
キーをタップすると、その文字を取得します。キーをタップするが、*わずかに*長く押し続けると、シフト状態になります。ほら!シフトキーは必要ありません!
|
キーをタップすると、その文字を取得します。キーをタップするが、*わずかに*長く押し続けると、シフト状態になります。ほら!シフトキーは必要ありません!
|
||||||
|
|||||||
@@ -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 の既知のサポートハードウェア
|
||||||
|
|||||||
@@ -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 キーボードで、追加の処理が必要です。
|
||||||
|
|||||||
@@ -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;
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
-->
|
-->
|
||||||
|
|
||||||
## イントロダクション
|
## イントロダクション
|
||||||
|
|||||||
@@ -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,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,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 液晶などがあります。
|
||||||
|
|||||||
@@ -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 やスピーカー、その他付属ハードウェアのないキーマトリックスのみで構成されている場合は空にできます。
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
#include "5x12.h"
|
||||||
@@ -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} \
|
||||||
|
}
|
||||||
|
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
|
)
|
||||||
|
|
||||||
|
};
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
# 5x12
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
* 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).
|
||||||
@@ -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
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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,4 +1,4 @@
|
|||||||

|

|
||||||
|
|
||||||
# Default Mixi Layout
|
# Default Mixi Layout
|
||||||
|
|
||||||
|
|||||||
@@ -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}
|
||||||
|
|||||||
@@ -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,6 +1,6 @@
|
|||||||
# Mixi
|
# Mixi
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
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 )
|
||||||
};
|
};
|
||||||
@@ -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);
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
Reference in new issue
Block a user