Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6e32dd123f | ||
|
|
82a830196f | ||
|
|
6a79d99ea2 | ||
|
|
2e4a75e2bc | ||
|
|
c3f3b34d7c | ||
|
|
98278968b7 | ||
|
|
361003934e | ||
|
|
c10b011828 | ||
|
|
6eefc20c2a | ||
|
|
2282104526 | ||
|
|
9b9587527f | ||
|
|
c1a6b5f430 |
No files matched your search
Vendored
+2
-1
@@ -16,7 +16,8 @@
|
|||||||
"*.hpp": "cpp",
|
"*.hpp": "cpp",
|
||||||
"xstddef": "c",
|
"xstddef": "c",
|
||||||
"type_traits": "c",
|
"type_traits": "c",
|
||||||
"utility": "c"
|
"utility": "c",
|
||||||
|
"ranges": "c"
|
||||||
},
|
},
|
||||||
"[markdown]": {
|
"[markdown]": {
|
||||||
"editor.trimAutoWhitespace": false,
|
"editor.trimAutoWhitespace": false,
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
# 開発環境のセットアップ
|
||||||
|
|
||||||
|
<!---
|
||||||
|
original document: 0.9.50:docs/api_development_environment.md
|
||||||
|
git diff 0.9.50 HEAD -- docs/api_development_environment.md | cat
|
||||||
|
-->
|
||||||
|
|
||||||
|
開発環境をセットアップするには、[qmk_web_stack](https://github.com/qmk/qmk_web_stack) に行ってください。
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
# QMK コンパイラ開発ガイド
|
||||||
|
|
||||||
|
<!---
|
||||||
|
original document: 0.9.50:docs/api_development_overview.md
|
||||||
|
git diff 0.9.50 HEAD -- docs/api_development_overview.md | cat
|
||||||
|
-->
|
||||||
|
|
||||||
|
このページでは、開発者に QMK コンパイラを紹介しようと思います。コードを読まなければならないような核心となる詳細に立ち入って調べることはしません。ここで得られるものは、コードを読んで理解を深めるためのフレームワークです。
|
||||||
|
|
||||||
|
# 概要
|
||||||
|
|
||||||
|
QMK Compile API は、いくつかの可動部分からできています:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
API クライアントは API サービスと排他的にやりとりをします。ここでジョブをサブミットし、状態を調べ、結果をダウンロードします。API サービスはコンパイルジョブを [Redis Queue](https://python-rq.org) に挿入し、それらのジョブの結果について RQ と S3 の両方を調べます。
|
||||||
|
|
||||||
|
ワーカーは RQ から新しいコンパイルジョブを取り出し、ソースとバイナリを S3 互換のストレージエンジンにアップロードします。
|
||||||
|
|
||||||
|
# ワーカー
|
||||||
|
|
||||||
|
QMK コンパイラワーカーは実際のビルド作業に責任を持ちます。ワーカーは RQ からジョブを取り出し、ジョブを完了するためにいくつかの事を行います:
|
||||||
|
|
||||||
|
* 新しい qmk_firmware のチェックアウトを作成する
|
||||||
|
* 指定されたレイヤーとキーボードメタデータを使って `keymap.c` をビルドする
|
||||||
|
* ファームウェアをビルドする
|
||||||
|
* ソースのコピーを zip 形式で圧縮する
|
||||||
|
* ファームウェア、ソースの zip ファイル、メタデータファイルを S3 にアップロードする
|
||||||
|
* ジョブの状態を RQ に送信する
|
||||||
|
|
||||||
|
# API サービス
|
||||||
|
|
||||||
|
API サービスは比較的単純な Flask アプリケーションです。理解しておくべきことが幾つかあります。
|
||||||
|
|
||||||
|
## @app.route('/v1/compile', methods=['POST'])
|
||||||
|
|
||||||
|
これは API の主なエントリーポイントです。クライアントとのやりとりはここから開始されます。クライアントはキーボードを表す JSON ドキュメントを POST し、API はコンパイルジョブをサブミットする前にいくらかの(とても)基本的な検証を行います。
|
||||||
|
|
||||||
|
## @app.route('/v1/compile/<string:job_id>', methods=['GET'])
|
||||||
|
|
||||||
|
これは最もよく呼ばれるエンドポイントです。ジョブの詳細が redis から利用可能であればそれを取り出し、そうでなければ S3 からキャッシュされたジョブの詳細を取り出します。
|
||||||
|
|
||||||
|
## @app.route('/v1/compile/<string:job_id>/download', methods=['GET'])
|
||||||
|
|
||||||
|
このメソッドによりユーザはコンパイルされたファームウェアファイルをダウンロードすることができます。
|
||||||
|
|
||||||
|
## @app.route('/v1/compile/<string:job_id>/source', methods=['GET'])
|
||||||
|
|
||||||
|
このメソッドによりユーザはファームウェアのソースをダウンロードすることができます。
|
||||||
@@ -0,0 +1,73 @@
|
|||||||
|
# QMK API
|
||||||
|
|
||||||
|
<!---
|
||||||
|
original document: 0.9.50:docs/api_docs.md
|
||||||
|
git diff 0.9.50 HEAD -- docs/api_docs.md | cat
|
||||||
|
-->
|
||||||
|
|
||||||
|
このページは QMK API の使い方を説明します。もしあなたがアプリケーション開発者であれば、全ての [QMK](https://qmk.fm) キーボードのファームウェアをコンパイルするために、この API を使うことができます。
|
||||||
|
|
||||||
|
## 概要
|
||||||
|
|
||||||
|
このサービスは、カスタムキーマップをコンパイルするための非同期 API です。API に 何らかの JSON を POST し、定期的に状態をチェックし、ファームウェアのコンパイルが完了していれば、結果のファームウェアと(もし希望すれば)そのファームウェアのソースコードをダウンロードすることができます。
|
||||||
|
|
||||||
|
#### JSON ペイロードの例:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"keyboard": "clueboard/66/rev2",
|
||||||
|
"keymap": "my_awesome_keymap",
|
||||||
|
"layout": "LAYOUT_all",
|
||||||
|
"layers": [
|
||||||
|
["KC_GRV","KC_1","KC_2","KC_3","KC_4","KC_5","KC_6","KC_7","KC_8","KC_9","KC_0","KC_MINS","KC_EQL","KC_GRV","KC_BSPC","KC_PGUP","KC_TAB","KC_Q","KC_W","KC_E","KC_R","KC_T","KC_Y","KC_U","KC_I","KC_O","KC_P","KC_LBRC","KC_RBRC","KC_BSLS","KC_PGDN","KC_CAPS","KC_A","KC_S","KC_D","KC_F","KC_G","KC_H","KC_J","KC_K","KC_L","KC_SCLN","KC_QUOT","KC_NUHS","KC_ENT","KC_LSFT","KC_NUBS","KC_Z","KC_X","KC_C","KC_V","KC_B","KC_N","KC_M","KC_COMM","KC_DOT","KC_SLSH","KC_RO","KC_RSFT","KC_UP","KC_LCTL","KC_LGUI","KC_LALT","KC_MHEN","KC_SPC","KC_SPC","KC_HENK","KC_RALT","KC_RCTL","MO(1)","KC_LEFT","KC_DOWN","KC_RIGHT"],
|
||||||
|
["KC_ESC","KC_F1","KC_F2","KC_F3","KC_F4","KC_F5","KC_F6","KC_F7","KC_F8","KC_F9","KC_F10","KC_F11","KC_F12","KC_TRNS","KC_DEL","BL_STEP","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","_______","KC_TRNS","KC_PSCR","KC_SLCK","KC_PAUS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","MO(2)","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_PGUP","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","MO(1)","KC_LEFT","KC_PGDN","KC_RGHT"],
|
||||||
|
["KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","RESET","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","MO(2)","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","MO(1)","KC_TRNS","KC_TRNS","KC_TRNS"]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
ご覧のとおり、ペイロードにはファームウェアを作成および生成するために必要なキーボードの全ての側面を記述します。各レイヤーは QMK キーコードの1つのリストで、キーボードの `LAYOUT` マクロと同じ長さです。もしキーボードが複数の `LAYOUT` マクロをサポートする場合、どのマクロを使うかを指定することができます。
|
||||||
|
|
||||||
|
## コンパイルジョブのサブミット
|
||||||
|
|
||||||
|
キーマップをファームウェアにコンパイルするには、単純に JSON を `/v1/compile` エンドポイントに POST します。以下の例では、JSON ペイロードを `json_data` という名前のファイルに配置しています。
|
||||||
|
|
||||||
|
```
|
||||||
|
$ curl -H "Content-Type: application/json" -X POST -d "$(< json_data)" http://api.qmk.fm/v1/compile
|
||||||
|
{
|
||||||
|
"enqueued": true,
|
||||||
|
"job_id": "ea1514b3-bdfc-4a7b-9b5c-08752684f7f6"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 状態のチェック
|
||||||
|
|
||||||
|
キーマップをサブミットした後で、簡単な HTTP GET 呼び出しを使って状態をチェックすることができます:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ curl http://api.qmk.fm/v1/compile/ea1514b3-bdfc-4a7b-9b5c-08752684f7f6
|
||||||
|
{
|
||||||
|
"created_at": "Sat, 19 Aug 2017 21:39:12 GMT",
|
||||||
|
"enqueued_at": "Sat, 19 Aug 2017 21:39:12 GMT",
|
||||||
|
"id": "f5f9b992-73b4-479b-8236-df1deb37c163",
|
||||||
|
"status": "running",
|
||||||
|
"result": null
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
これは、ジョブをキューに入れることに成功し、現在実行中であることを示しています。5つの状態がありえます:
|
||||||
|
|
||||||
|
* **failed**: なんらかの理由でコンパイルサービスが失敗しました。
|
||||||
|
* **finished**: コンパイルが完了し、結果を見るには `result` をチェックする必要があります。
|
||||||
|
* **queued**: キーマップはコンパイルサーバが利用可能になるのを待っています。
|
||||||
|
* **running**: コンパイルが進行中で、まもなく完了するはずです。
|
||||||
|
* **unknown**: 深刻なエラーが発生し、[バグを報告](https://github.com/qmk/qmk_compiler/issues)する必要があります。
|
||||||
|
|
||||||
|
## 完了した結果を検証
|
||||||
|
|
||||||
|
コンパイルジョブが完了したら、`result` キーをチェックします。このキーの値は幾つかの情報を含むハッシュです:
|
||||||
|
|
||||||
|
* `firmware_binary_url`: 書き込み可能なファームウェアの URL のリスト
|
||||||
|
* `firmware_keymap_url`: `keymap.c` の URL のリスト
|
||||||
|
* `firmware_source_url`: ファームウェアの完全なソースコードの URL のリスト
|
||||||
|
* `output`: このコンパイルジョブの stdout と stderr。エラーはここで見つけることができます。
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QMK API
|
||||||
|
|
||||||
|
<!---
|
||||||
|
original document: 0.9.50:docs/api_overview.md
|
||||||
|
git diff 0.9.50 HEAD -- docs/api_overview.md | cat
|
||||||
|
-->
|
||||||
|
|
||||||
|
QMK API は、Web と GUI ツールが [QMK](http://qmk.fm/) によってサポートされるキーボード用の任意のキーマップをコンパイルするために使うことができる、非同期 API を提供します。標準のキーマップテンプレートは、C コードのサポートを必要としない全ての QMK キーコードをサポートします。キーボードのメンテナは独自のカスタムテンプレートを提供して、より多くの機能を実現することができます。
|
||||||
|
|
||||||
|
## アプリケーション開発者
|
||||||
|
|
||||||
|
もしあなたがアプリケーションでこの API を使うことに興味があるアプリケーション開発者であれば、[API の使用](ja/api_docs.md) に行くべきです。
|
||||||
|
|
||||||
|
## キーボードのメンテナ
|
||||||
|
|
||||||
|
もし QMK Compiler API でのあなたのキーボードのサポートを強化したい場合は、[キーボードサポート](ja/reference_configurator_support.md) の節に行くべきです。
|
||||||
|
|
||||||
|
## バックエンド開発者
|
||||||
|
|
||||||
|
もし API 自体に取り組むことに興味がある場合は、[開発環境](ja/api_development_environment.md)のセットアップから始め、それから [API のハッキング](ja/api_development_overview.md) を調べるべきです。
|
||||||
@@ -145,4 +145,4 @@ ARM ベースのチップ上での EEPROM の動作によって、保存され
|
|||||||
[Planck rev6 reset EEPROM](https://cdn.discordapp.com/attachments/473506116718952450/539284620861243409/planck_rev6_default.bin) を使って eeprom のリセットを強制することができます。このイメージを書き込んだ後で、通常のファームウェアを書き込むと、キーボードが_通常_ の動作順序に復元されます。
|
[Planck rev6 reset EEPROM](https://cdn.discordapp.com/attachments/473506116718952450/539284620861243409/planck_rev6_default.bin) を使って eeprom のリセットを強制することができます。このイメージを書き込んだ後で、通常のファームウェアを書き込むと、キーボードが_通常_ の動作順序に復元されます。
|
||||||
[Preonic rev3 reset EEPROM](https://cdn.discordapp.com/attachments/473506116718952450/537849497313738762/preonic_rev3_default.bin)
|
[Preonic rev3 reset EEPROM](https://cdn.discordapp.com/attachments/473506116718952450/537849497313738762/preonic_rev3_default.bin)
|
||||||
|
|
||||||
いずれかの形式でブートマジックが有効になっている場合は、これも実行できるはずです (実行方法の詳細については、[ブートマジックドキュメント](feature_bootmagic.md)とキーボード情報を見てください)。
|
いずれかの形式でブートマジックが有効になっている場合は、これも実行できるはずです (実行方法の詳細については、[ブートマジックドキュメント](ja/feature_bootmagic.md)とキーボード情報を見てください)。
|
||||||
@@ -51,7 +51,7 @@ OK、問題ありません。[GitHub で issue を開く](https://github.com/qmk
|
|||||||
|
|
||||||
TMK は [Jun Wako](https://github.com/tmk) によって設計され実装されました。QMK は [Jack Humbert](https://github.com/jackhumbert) の Planck 用 TMK のフォークとして始まりました。しばらくして、Jack のフォークは TMK からかなり分岐し、2015年に Jack はフォークを QMK に名前を変えることにしました。
|
TMK は [Jun Wako](https://github.com/tmk) によって設計され実装されました。QMK は [Jack Humbert](https://github.com/jackhumbert) の Planck 用 TMK のフォークとして始まりました。しばらくして、Jack のフォークは TMK からかなり分岐し、2015年に Jack はフォークを QMK に名前を変えることにしました。
|
||||||
|
|
||||||
技術的な観点から、QMK は幾つかの新しい機能を追加した TMK に基づいています。最も注目すべきことは、QMK は利用可能なキーコードの数を増やし、`S()`、`LCTL()` および `MO()` などの高度な機能を実装するためにこれらを使っています。[キーコード](keycodes.md)でこれらのキーコードの完全なリストを見ることができます。
|
技術的な観点から、QMK は幾つかの新しい機能を追加した TMK に基づいています。最も注目すべきことは、QMK は利用可能なキーコードの数を増やし、`S()`、`LCTL()` および `MO()` などの高度な機能を実装するためにこれらを使っています。[キーコード](ja/keycodes.md)でこれらのキーコードの完全なリストを見ることができます。
|
||||||
|
|
||||||
プロジェクトとコミュニティの管理の観点から、TMK は公式にサポートされている全てのキーボードを自分で管理しており、コミュニティのサポートも少し受けています。他のキーボード用に別個のコミュニティが維持するフォークが存在するか、作成できます。デフォルトでは少数のキーマップのみが提供されるため、ユーザは一般的にお互いにキーマップを共有しません。QMK は集中管理されたリポジトリを介して、キーボードとキーマップの両方を共有することを奨励しており、品質基準に準拠する全てのプルリクエストを受け付けます。これらはほとんどコミュニティで管理されますが、必要な場合は QMK チームも支援します。
|
プロジェクトとコミュニティの管理の観点から、TMK は公式にサポートされている全てのキーボードを自分で管理しており、コミュニティのサポートも少し受けています。他のキーボード用に別個のコミュニティが維持するフォークが存在するか、作成できます。デフォルトでは少数のキーマップのみが提供されるため、ユーザは一般的にお互いにキーマップを共有しません。QMK は集中管理されたリポジトリを介して、キーボードとキーマップの両方を共有することを奨励しており、品質基準に準拠する全てのプルリクエストを受け付けます。これらはほとんどコミュニティで管理されますが、必要な場合は QMK チームも支援します。
|
||||||
|
|
||||||
|
|||||||
@@ -128,7 +128,7 @@ https://github.com/tekezo/Karabiner/issues/403
|
|||||||
|
|
||||||
## 単一のキーでの Esc と<code>`</code>
|
## 単一のキーでの Esc と<code>`</code>
|
||||||
|
|
||||||
[Grave Escape](feature_grave_esc.md) 機能を見てください。
|
[Grave Escape](ja/feature_grave_esc.md) 機能を見てください。
|
||||||
|
|
||||||
## Mac OSX での Eject
|
## Mac OSX での Eject
|
||||||
`KC_EJCT` キーコードは OSX で動作します。https://github.com/tmk/tmk_keyboard/issues/250
|
`KC_EJCT` キーコードは OSX で動作します。https://github.com/tmk/tmk_keyboard/issues/250
|
||||||
|
|||||||
@@ -20,12 +20,12 @@ QMK ファームウェアには、任意のキーボードで使用可能な一
|
|||||||
|
|
||||||
| Transport | AVR | ARM |
|
| Transport | AVR | ARM |
|
||||||
|------------------------------|--------------------|--------------------|
|
|------------------------------|--------------------|--------------------|
|
||||||
| ['serial'](serial_driver.md) | :heavy_check_mark: | :white_check_mark: <sup>1</sup> |
|
| ['serial'](ja/serial_driver.md) | :heavy_check_mark: | :white_check_mark: <sup>1</sup> |
|
||||||
| I2C | :heavy_check_mark: | |
|
| I2C | :heavy_check_mark: | |
|
||||||
|
|
||||||
注意:
|
注意:
|
||||||
|
|
||||||
1. ハードウェアとソフトウェアの両方の制限は、[ドライバーのドキュメント](serial_driver.md)の中で説明されます。
|
1. ハードウェアとソフトウェアの両方の制限は、[ドライバーのドキュメント](ja/serial_driver.md)の中で説明されます。
|
||||||
|
|
||||||
## ハードウェア設定
|
## ハードウェア設定
|
||||||
|
|
||||||
|
|||||||
@@ -101,4 +101,4 @@
|
|||||||
- [Deskthority の記事](https://deskthority.net/wiki/Keyboard_matrix)
|
- [Deskthority の記事](https://deskthority.net/wiki/Keyboard_matrix)
|
||||||
- [Dave Dribin による Keyboard Matrix Help (2000)](https://www.dribin.org/dave/keyboard/one_html/)
|
- [Dave Dribin による Keyboard Matrix Help (2000)](https://www.dribin.org/dave/keyboard/one_html/)
|
||||||
- [PCBheaven による How Key Matrices Works](http://pcbheaven.com/wikipages/How_Key_Matrices_Works/) (アニメーションの例)
|
- [PCBheaven による How Key Matrices Works](http://pcbheaven.com/wikipages/How_Key_Matrices_Works/) (アニメーションの例)
|
||||||
- [キーボードの仕組み - QMK ドキュメント](how_keyboards_work.md)
|
- [キーボードの仕組み - QMK ドキュメント](ja/how_keyboards_work.md)
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# Quantum キーコード
|
||||||
|
|
||||||
|
<!---
|
||||||
|
original document: 0.9.55:docs/quantum_keycodes.md
|
||||||
|
git diff 0.9.55 HEAD -- docs/quantum_keycodes.md | cat
|
||||||
|
-->
|
||||||
|
|
||||||
|
Quantum キーコードにより、カスタムアクションを定義することなく、基本的なものが提供するものより簡単にキーマップをカスタマイズすることができます。
|
||||||
|
|
||||||
|
quantum 内の全てのキーコードは `0x0000` と `0xFFFF` の間の数値です。`keymap.c` の中では、関数やその他の特別な場合があるように見えますが、最終的には C プリプロセッサによってそれらは単一の4バイト整数に変換されます。QMK は標準的なキーコードのために `0x0000` から `0x00FF` を予約しています。これらは、`KC_A`、`KC_1` および `KC_LCTL` のようなキーコードで、USB HID 仕様で定義された基本的なキーです。
|
||||||
|
|
||||||
|
このページでは、高度な quantum 機能を実装するために使われる `0x00FF` と `0xFFFF` の間のキーコードを説明します。独自のカスタムキーコードを定義する場合は、それらもこの範囲に配置されます。
|
||||||
|
|
||||||
|
## QMK キーコード :id=qmk-keycodes
|
||||||
|
|
||||||
|
| キー | エイリアス | 説明 |
|
||||||
|
|----------------|------------|--------------------------------------------------------|
|
||||||
|
| `RESET` | | 書き込みのために、キーボードを bootloader モードにする |
|
||||||
|
| `DEBUG` | | デバッグモードの切り替え |
|
||||||
|
| `EEPROM_RESET` | `EEP_RST` | キーボードの EEPROM (永続化メモリ) を再初期化する |
|
||||||
@@ -0,0 +1,173 @@
|
|||||||
|
# QMK 用語集
|
||||||
|
|
||||||
|
<!---
|
||||||
|
original document: 0.9.46:docs/reference_glossary.md
|
||||||
|
git diff 0.9.46 HEAD -- docs/reference_glossary.md | cat
|
||||||
|
-->
|
||||||
|
|
||||||
|
## ARM
|
||||||
|
Atmel、Cypress、Kinetis、NXP、ST、TI など多くの企業が生産する 32 ビット MCU のライン。
|
||||||
|
|
||||||
|
## AVR
|
||||||
|
[Atmel](http://www.microchip.com/) が生産する 8 ビット MCU のライン。AVR は TMK がサポートしていた元のプラットフォームでした。
|
||||||
|
|
||||||
|
## AZERTY
|
||||||
|
標準的な Français (フランス) キーボードレイアウト。キーボードの最初の6つのキーから命名されました。
|
||||||
|
|
||||||
|
## バックライト
|
||||||
|
キーボードのライトの総称。バックライトが一般的ですが、それだけではなく、キーキャップあるいはスイッチを通して光る LED の配列。
|
||||||
|
|
||||||
|
## Bluetooth
|
||||||
|
短距離のピアツーピア無線プロトコル。キーボード用のもっとも一般的なワイヤレスプロトコル。
|
||||||
|
|
||||||
|
## ブートローダ
|
||||||
|
MCU の保護領域に書き込まれる特別なプログラムで、MCU が独自のファームウェアを通常は USB 経由でアップグレードできるようにします。
|
||||||
|
|
||||||
|
## ブートマジック
|
||||||
|
よくあるキーの交換あるいは無効化など、様々なキーボードの挙動の変更をその場で実行できる機能。
|
||||||
|
|
||||||
|
## C
|
||||||
|
システムコードに適した低レベルプログラミング言語。QMK のほとんどのコードは C で書かれています。
|
||||||
|
|
||||||
|
## Colemak
|
||||||
|
人気が出始めている代替キーボードレイアウト。
|
||||||
|
|
||||||
|
## コンパイル
|
||||||
|
人間が読めるコードを MCU が実行できるマシンコードに変換するプロセス。
|
||||||
|
|
||||||
|
## Dvorak
|
||||||
|
1930年代に Dr. August Dvorak によって開発された代替キーボードレイアウト。Dvorak Simplified Keyboard の短縮形。
|
||||||
|
|
||||||
|
## 動的マクロ
|
||||||
|
キーボードに記録されたマクロで、キーボードのプラグを抜くか、コンピュータを再起動すると失われます。
|
||||||
|
|
||||||
|
* [動的マクロドキュメント](ja/feature_dynamic_macros.md)
|
||||||
|
|
||||||
|
## Eclipse
|
||||||
|
多くの C 開発者に人気のある IDE。
|
||||||
|
|
||||||
|
* [Eclipse セットアップ手順](ja/other_eclipse.md)
|
||||||
|
|
||||||
|
## ファームウェア
|
||||||
|
MCU を制御するソフトウェア
|
||||||
|
|
||||||
|
## git
|
||||||
|
コマンドラインで使用されるバージョン管理ソフトウェア
|
||||||
|
|
||||||
|
## GitHub
|
||||||
|
QMK プロジェクトのほとんどをホストする Web サイト。git、課題管理、および QMK の実行に役立つその他の機能を統合して提供します。
|
||||||
|
|
||||||
|
## ISP
|
||||||
|
インシステムプログラミング。外部ハードウェアと JTAG ピンを使って AVR チップをプログラミングする方法。
|
||||||
|
|
||||||
|
## hid_listen
|
||||||
|
キーボードからデバッグメッセージを受信するためのインタフェース。[QMK Flasher](https://github.com/qmk/qmk_flasher) あるいは [PJRC の hid_listen](https://www.pjrc.com/teensy/hid_listen.html) を使ってこれらのメッセージを見ることができます。
|
||||||
|
|
||||||
|
## キーコード
|
||||||
|
特定のキーを表す2バイトの数値。`0x00`-`0xFF` は[基本キーコード](ja/keycodes_basic.md)に使われ、`0x100`-`0xFFFF` は [Quantum キーコード](ja/quantum_keycodes.md) に使われます。
|
||||||
|
|
||||||
|
## キーダウン
|
||||||
|
キーが押された時に発生し、キーが放される前に完了するイベント。
|
||||||
|
|
||||||
|
## キーアップ
|
||||||
|
キーが放された時に発生するイベント。
|
||||||
|
|
||||||
|
## キーマップ
|
||||||
|
物理的なキーボードレイアウトにマップされたキーコードの配列。キーの押下およびリリース時に処理されます。
|
||||||
|
|
||||||
|
## レイヤー
|
||||||
|
1つのキーが複数の目的を果たすために使われる抽象化。最上位のアクティブなレイヤーが優先されます。
|
||||||
|
|
||||||
|
## リーダーキー
|
||||||
|
リーダーキーに続けて1, 2 あるいは3つのキーをタップすることで、キーの押下あるいは他の quantum 機能をアクティブにする機能。
|
||||||
|
|
||||||
|
* [リーダーキードキュメント](ja/feature_leader_key.md)
|
||||||
|
|
||||||
|
## LED
|
||||||
|
発光ダイオード。キーボードの表示に使われる最も一般的なデバイス。
|
||||||
|
|
||||||
|
## Make
|
||||||
|
全てのソースファイルをコンパイルするために使われるソフトウェアパッケージ。キーボードファームウェアをコンパイルするために、様々なオプションを指定して `make` を実行します。
|
||||||
|
|
||||||
|
## マトリックス
|
||||||
|
MCU がより少ないピン数でキー押下を検出できるようにする列と行の配線パターン。マトリックスには多くの場合、NKRO を可能にするためのダイオードが組み込まれています。
|
||||||
|
|
||||||
|
## マクロ
|
||||||
|
単一のキーのみを押した後で、複数のキー押下イベント (HID レポート) を送信できる機能。
|
||||||
|
|
||||||
|
* [マクロドキュメント](ja/feature_macros.md)
|
||||||
|
|
||||||
|
## MCU
|
||||||
|
マイクロコントロールユニット。キーボードを動かすプロセッサ。
|
||||||
|
|
||||||
|
## モディファイア
|
||||||
|
別のキーを入力する間押したままにして、そのキーのアクションを変更するキー。例として、Ctrl、Alt および Shift があります。
|
||||||
|
(訳注:モディファイヤ、モディファイヤキー、修飾キーなど、訳語が統一されていませんが同じものです)
|
||||||
|
|
||||||
|
## マウスキー
|
||||||
|
キーボードからマウスカーソルを制御し、クリックできる機能。
|
||||||
|
|
||||||
|
* [マウスキードキュメント](ja/feature_mouse_keys.md)
|
||||||
|
|
||||||
|
## N キーロールオーバー (NKRO)
|
||||||
|
一度に任意の数のキーの押下を送信できるキーボードに当てはまる用語。
|
||||||
|
|
||||||
|
## ワンショットモディファイア
|
||||||
|
別のキーが放されるまで押されているかのように機能するモディファイア。キーを押している間に mod を押し続けるのではなく、mod を押してからキーを押すことができます。スティッキーキーまたはデッドキーとも呼びます。
|
||||||
|
|
||||||
|
## ProMicro
|
||||||
|
低コストの AVR 開発ボード。このデバイスのクローンは ebay で非常に安価(5ドル未満)に見つかることがありますが、多くの場合 pro micro の書き込みに苦労します。
|
||||||
|
|
||||||
|
## プルリクエスト
|
||||||
|
QMK にコードを送信するリクエスト。全てのユーザが個人のキーマップのプルリクエストを送信することを推奨します。
|
||||||
|
|
||||||
|
## QWERTY
|
||||||
|
標準の英語キーボードレイアウト。多くの場合、他の言語の標準レイアウトへのショートカット。キーボードの最初の6文字から命名されました。
|
||||||
|
|
||||||
|
## QWERTZ
|
||||||
|
標準的な Deutsche (ドイツ語) キーボードレイアウト。キーボードの最初の6文字から命名されました。
|
||||||
|
|
||||||
|
## ロールオーバー
|
||||||
|
キーが既に押されている間にキーを押すことを指す用語。似たものに 2KRO、6KRO、NKRO が含まれます。
|
||||||
|
|
||||||
|
## スキャンコード
|
||||||
|
単一のキーを表す USB 経由の HID レポートの一部として送信される1バイトの数値。これらの値は、[USB-IF](http://www.usb.org/) が発行する [HID Usage Tables](https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf) に記載されています。
|
||||||
|
|
||||||
|
## スペースカデットシフト
|
||||||
|
左または右 shift を1回以上タップすることで、様々なタイプの括弧を入力できる特別な shift キーのセット。
|
||||||
|
|
||||||
|
* [スペースカデットシフトドキュメント](ja/feature_space_cadet_shift.md)
|
||||||
|
|
||||||
|
## タップ
|
||||||
|
キーを押して放す。状況によってはキーダウンイベントとキーアップイベントを区別する必要がありますが、タップは常に両方を一度に指します。
|
||||||
|
|
||||||
|
## タップダンス
|
||||||
|
押す回数に基づいて、同じキーに複数のキーコードを割り当てることができる機能。
|
||||||
|
|
||||||
|
* [タップダンスドキュメント](ja/feature_tap_dance.md)
|
||||||
|
|
||||||
|
## Teensy
|
||||||
|
手配線での組み立てによく用いられる低コストの AVR 開発ボード。halfkay ブートローダによって書き込みが非常に簡単になるために、数ドル高いにもかかわらず teensy がしばしば選択されます。
|
||||||
|
|
||||||
|
## アンダーライト
|
||||||
|
キーボードの下側を照らす LED の総称。これらの LED は通常 PCB の底面からキーボードが置かれている表面に向けて照らします。
|
||||||
|
|
||||||
|
## ユニコード
|
||||||
|
大規模なコンピュータの世界では、ユニコードは任意の言語で文字を表現するためのエンコード方式のセットです。QMK に関しては、様々な OS スキームを使ってスキャンコードの代わりにユニコードコードポイントを送信することを意味します。
|
||||||
|
|
||||||
|
* [ユニコードドキュメント](ja/feature_unicode.md)
|
||||||
|
|
||||||
|
## 単体テスト
|
||||||
|
QMK に対して自動テストを実行するためのフレームワーク。単体テストは、変更が何も壊さないことを確信するのに役立ちます。
|
||||||
|
|
||||||
|
* [単体テストドキュメント](ja/unit_testing.md)
|
||||||
|
|
||||||
|
## USB
|
||||||
|
ユニバーサルシリアルバス。キーボード用の最も一般的な有線インタフェース。
|
||||||
|
|
||||||
|
## USB ホスト (あるいは単にホスト)
|
||||||
|
USB ホストは、あなたのコンピュータ、またはキーボードが差し込まれているデバイスのことです。
|
||||||
|
|
||||||
|
# 探している用語が見つかりませんでしたか?
|
||||||
|
|
||||||
|
質問についての [issue を開いて](https://github.com/qmk/qmk_firmware/issues) 、質問した用語についてここに追加することができます。さらに良いのは、定義についてのプルリクエストを開くことです。:)
|
||||||
@@ -0,0 +1,78 @@
|
|||||||
|
# `info.json`
|
||||||
|
|
||||||
|
<!---
|
||||||
|
original document: 0.9.46:docs/reference_info_json.md
|
||||||
|
git diff 0.9.46 HEAD -- docs/reference_info_json.md | cat
|
||||||
|
-->
|
||||||
|
|
||||||
|
このファイルは [QMK API](https://github.com/qmk/qmk_api) によって使われます。このファイルは [QMK Configurator](https://config.qmk.fm/) がキーボードの画像を表示するために必要な情報を含んでいます。ここにメタデータを設定することもできます。
|
||||||
|
|
||||||
|
このメタデータを指定するために、`qmk_firmware/keyboards/<name>` の下の全てのレベルで `info.json` を作成することができます。これらのファイルは結合され、より具体的なファイルがそうではないファイルのキーを上書きします。つまり、メタデータ情報を複製する必要はありません。例えば、`qmk_firmware/keyboards/clueboard/info.json` は `manufacturer` および `maintainer` を指定し、`qmk_firmware/keyboards/clueboard/66/info.json` は Clueboard 66% についてのより具体的な情報を指定します。
|
||||||
|
|
||||||
|
## `info.json` の形式
|
||||||
|
|
||||||
|
`info.json` ファイルは設定可能な以下のキーを持つ JSON 形式の辞書です。全てを設定する必要はなく、キーボードに適用するキーだけを設定します。
|
||||||
|
|
||||||
|
* `keyboard_name`
|
||||||
|
* キーボードを説明する自由形式のテキスト文字列。
|
||||||
|
* 例: `Clueboard 66%`
|
||||||
|
* `url`
|
||||||
|
* キーボードの製品ページ、[QMK.fm/keyboards](https://qmk.fm/keyboards) のページ、あるいはキーボードに関する情報を説明する他のページの URL。
|
||||||
|
* `maintainer`
|
||||||
|
* メンテナの GitHub のユーザ名、あるいはコミュニティが管理するキーボードの場合は `qmk`
|
||||||
|
* `width`
|
||||||
|
* キー単位でのキーボードの幅
|
||||||
|
* `height`
|
||||||
|
* キー単位でのキーボードの高さ
|
||||||
|
* `layouts`
|
||||||
|
* 物理的なレイアウト表現。詳細は以下のセクションを見てください。
|
||||||
|
|
||||||
|
### レイアウトの形式
|
||||||
|
|
||||||
|
`info.json` ファイル内の辞書の `layouts` 部分は、幾つかの入れ子になった辞書を含みます。外側のレイヤーは QMK レイアウトマクロで構成されます。例えば、`LAYOUT_ansi` あるいは `LAYOUT_iso`。各レイアウトマクロ内には、`width`、 `height`、`key_count` のキーがあります。これらは自明でなければなりません。
|
||||||
|
|
||||||
|
* `width`
|
||||||
|
* オプション: キー単位でのレイアウトの幅
|
||||||
|
* `height`
|
||||||
|
* オプション: キー単位でのレイアウトの高さ
|
||||||
|
* `key_count`
|
||||||
|
* **必須**: このレイアウトのキーの数
|
||||||
|
* `layout`
|
||||||
|
* 物理レイアウトを説明するキー辞書のリスト。詳細は次のセクションを見てください。
|
||||||
|
|
||||||
|
### キー辞書形式
|
||||||
|
|
||||||
|
レイアウトの各キー辞書は、キーの物理プロパティを記述します。<http://keyboard-layout-editor.com> の Raw Code に精通している場合、多くの概念が同じであることが分かります。可能な限り同じキー名とレイアウトの選択を再利用しますが、keyboard-layout-editor とは異なって各キーはステートレスで、前のキーからプロパティを継承しません。
|
||||||
|
|
||||||
|
全てのキーの位置と回転は、キーボードの左上と、各キーの左上を基準にして指定されます。
|
||||||
|
|
||||||
|
* `x`
|
||||||
|
* **必須**: 水平軸でのキーの絶対位置(キー単位)。
|
||||||
|
* `y`
|
||||||
|
* **必須**: 垂直軸でのキーの絶対位置(キー単位)。
|
||||||
|
* `w`
|
||||||
|
* キー単位でのキーの幅。`ks` が指定された場合は無視されます。デフォルト: `1`
|
||||||
|
* `h`
|
||||||
|
* キー単位でのキーの高さ。`ks` が指定された場合は無視されます。デフォルト: `1`
|
||||||
|
* `r`
|
||||||
|
* キーを回転させる時計回りの角度。
|
||||||
|
* `rx`
|
||||||
|
* キーを回転させる点の水平軸における絶対位置。デフォルト: `x`
|
||||||
|
* `ry`
|
||||||
|
* キーを回転させる点の垂直軸における絶対位置。デフォルト: `y`
|
||||||
|
* `ks`
|
||||||
|
* キー形状: キー単位で頂点を列挙することでポリゴンを定義します。
|
||||||
|
* **重要**: これらはキーの左上からの相対位置で、絶対位置ではありません。
|
||||||
|
* ISO Enter の例: `[ [0,0], [1.5,0], [1.5,2], [0.25,2], [0.25,1], [0,1], [0,0] ]`
|
||||||
|
* `label`
|
||||||
|
* マトリックス内のこの位置につける名前。
|
||||||
|
* これは通常 PCB 上でこの位置にシルクスクリーン印刷されるものと同じ名前でなければなりません。
|
||||||
|
|
||||||
|
## メタデータはどのように公開されますか?
|
||||||
|
|
||||||
|
このメタデータは主に2つの方法で使われます:
|
||||||
|
|
||||||
|
* Web ベースの configurator が動的に UI を生成できるようにする。
|
||||||
|
* 新しい `make keyboard:keymap:qmk` ターゲットをサポートする。これは、このメタデータをファームウェアにバンドルして QMK Toolbox をよりスマートにします。
|
||||||
|
|
||||||
|
Configurator の作成者は、JSON API の使用に関する詳細について、[QMK Compiler](https://docs.api.qmk.fm/using-the-api) ドキュメントを参照することができます。
|
||||||
@@ -0,0 +1,75 @@
|
|||||||
|
# 'シリアル' ドライバ
|
||||||
|
|
||||||
|
<!---
|
||||||
|
original document: 0.9.51:docs/serial_drive.md
|
||||||
|
git diff 0.9.51 HEAD -- docs/serial_drive.md | cat
|
||||||
|
-->
|
||||||
|
|
||||||
|
このドライバは[分割キーボード](ja/feature_split_keyboard.md) 機能に使います。
|
||||||
|
|
||||||
|
?> この文章でのシリアルは、UART/USART/RS485/RS232 規格の実装ではなく、**一度に1ビットの情報を送信するもの**として読まれるべきです。
|
||||||
|
|
||||||
|
このカテゴリの全てのドライバには以下の特徴があります:
|
||||||
|
* 1本の線上でデータと信号を提供
|
||||||
|
* シングルマスタ、シングルスレーブに限定
|
||||||
|
|
||||||
|
## サポートされるドライバの種類
|
||||||
|
|
||||||
|
| | AVR | ARM |
|
||||||
|
|-------------------|--------------------|--------------------|
|
||||||
|
| bit bang | :heavy_check_mark: | :heavy_check_mark: |
|
||||||
|
| USART Half-duplex | | :heavy_check_mark: |
|
||||||
|
|
||||||
|
## ドライバ設定
|
||||||
|
|
||||||
|
### Bitbang
|
||||||
|
デフォルトのドライバ。設定がない場合はこのドライバが想定されます。設定するには、以下を rules.mk に追加します:
|
||||||
|
|
||||||
|
```make
|
||||||
|
SERIAL_DRIVER = bitbang
|
||||||
|
```
|
||||||
|
|
||||||
|
config.h を介してドライバを設定します:
|
||||||
|
```c
|
||||||
|
#define SOFT_SERIAL_PIN D0 // または D1, D2, D3, E6
|
||||||
|
#define SELECT_SOFT_SERIAL_SPEED 1 // または 0, 2, 3, 4, 5
|
||||||
|
// 0: 約 189kbps (実験目的のみ)
|
||||||
|
// 1: 約 137kbps (デフォルト)
|
||||||
|
// 2: 約 75kbps
|
||||||
|
// 3: 約 39kbps
|
||||||
|
// 4: 約 26kbps
|
||||||
|
// 5: 約 20kbps
|
||||||
|
```
|
||||||
|
|
||||||
|
#### ARM
|
||||||
|
|
||||||
|
!> bitbang ドライバは bitbang WS2812 ドライバと接続の問題があります
|
||||||
|
|
||||||
|
上記の一般的なオプションに加えて、halconf.h で `PAL_USE_CALLBACKS` 機能もオンにする必要があります。
|
||||||
|
|
||||||
|
### USART Half-duplex
|
||||||
|
通信が USART ハードウェアデバイスに送信される STM32 ボードが対象です。これにより高速で正確なタイミングを提供できることが利点です。このドライバの `SOFT_SERIAL_PIN` は、設定された USART TX ピンです。**TX ピンに適切なプルアップ抵抗が必要です**。設定するには、以下を rules.mk に追加します:
|
||||||
|
|
||||||
|
```make
|
||||||
|
SERIAL_DRIVER = usart
|
||||||
|
```
|
||||||
|
|
||||||
|
config.h を介してハードウェアを設定します:
|
||||||
|
```c
|
||||||
|
#define SOFT_SERIAL_PIN B6 // USART TX ピン
|
||||||
|
#define SELECT_SOFT_SERIAL_SPEED 1 // または 0, 2, 3, 4, 5
|
||||||
|
// 0: 約 460800 ボー
|
||||||
|
// 1: 約 230400 ボー (デフォルト)
|
||||||
|
// 2: 約 115200 ボー
|
||||||
|
// 3: 約 57600 ボー
|
||||||
|
// 4: 約 38400 ボー
|
||||||
|
// 5: 約 19200 ボー
|
||||||
|
#define SERIAL_USART_DRIVER SD1 // TX ピンの USART ドライバ。デフォルトは SD1
|
||||||
|
#define SERIAL_USART_TX_PAL_MODE 7 // 「代替機能」 ピン。MCU の適切な値については、それぞれのデータシートを見てください。デフォルトは 7
|
||||||
|
```
|
||||||
|
|
||||||
|
また、ChibiOS `SERIAL` 機能を有効にする必要があります:
|
||||||
|
* キーボードの halconf.h: `#define HAL_USE_SERIAL TRUE`
|
||||||
|
* キーボードの mcuconf.h: `#define STM32_SERIAL_USE_USARTn TRUE` (ここで、'n' は MCU で選択した USART のペリフェラル番号と一致)
|
||||||
|
|
||||||
|
必要な構成は、`UART` 周辺機器ではなく、`SERIAL` 周辺機器であることに注意してください。
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
# 助けを得る
|
||||||
|
|
||||||
|
<!---
|
||||||
|
original document: 0.9.51:docs/support.md
|
||||||
|
git diff 0.9.51 HEAD -- docs/support.md | cat
|
||||||
|
-->
|
||||||
|
|
||||||
|
QMK に関して助けを得るための多くのリソースがあります。
|
||||||
|
|
||||||
|
コミュニティスペースに参加する前に[行動規範](https://qmk.fm/coc/)を読んでください。
|
||||||
|
|
||||||
|
## リアルタイムチャット
|
||||||
|
|
||||||
|
何かについて助けが必要な場合は、迅速なサポートを受けるための最良の場所は、[Discord Server](https://discord.gg/Uq7gcHh) です。通常は誰かがオンラインで、非常に助けになる多くの人がいます。
|
||||||
|
|
||||||
|
## OLKB Subreddit
|
||||||
|
|
||||||
|
公式の QMK フォーラムは [reddit.com](https://reddit.com) の [/r/olkb](https://reddit.com/r/olkb) です。
|
||||||
|
|
||||||
|
## GitHub Issues
|
||||||
|
|
||||||
|
[GitHub で issue](https://github.com/qmk/qmk_firmware/issues) を開くことができます。issue は長期的な議論あるいはデバッグを必要とする場合は、特に便利です。
|
||||||
@@ -0,0 +1,75 @@
|
|||||||
|
# QMK シラバス
|
||||||
|
|
||||||
|
<!---
|
||||||
|
original document: 0.9.51:docs/syllabus.md
|
||||||
|
git diff 0.9.51 HEAD -- docs/syllabus.md | cat
|
||||||
|
-->
|
||||||
|
|
||||||
|
このページは最初に基本を紹介し、そして、QMK に習熟するために必要な全ての概念を理解するように導くことで、QMK の知識を構築するのに役立ちます。
|
||||||
|
|
||||||
|
# 初級トピック
|
||||||
|
|
||||||
|
他に何も読んでいない場合は、このセクションのドキュメントを読んでください。[QMK 初心者ガイド](ja/newbs.md)を読み終わると、基本的なキーマップを作成し、それをコンパイルし、キーボードに書き込みできるようになっているはずです。残りのドキュメントはこれらの基本的な知識を具体的に肉付けします。
|
||||||
|
|
||||||
|
* **QMK Tools の使い方を学ぶ**
|
||||||
|
* [QMK 初心者ガイド](ja/newbs.md)
|
||||||
|
* [CLI](ja/cli.md)
|
||||||
|
* [Git](ja/newbs_git_best_practices.md)
|
||||||
|
* **キーマップについて学ぶ**
|
||||||
|
* [レイヤー](ja/feature_layers.md)
|
||||||
|
* [キーコード](ja/keycodes.md)
|
||||||
|
* 使用できるキーコードの完全なリスト。中級または上級トピックにある知識が必要な場合もあることに注意してください。
|
||||||
|
* **IDE の設定** - オプション
|
||||||
|
* [Eclipse](ja/other_eclipse.md)
|
||||||
|
* [VS Code](ja/other_vscode.md)
|
||||||
|
|
||||||
|
# 中級トピック
|
||||||
|
|
||||||
|
これらのトピックでは、QMK がサポートする幾つかの機能について掘り下げます。これらのドキュメントを全て読む必要はありませんが、これらの一部をスキップすると、上級トピックのセクションの一部のドキュメントが意味をなさなくなるかもしれません。
|
||||||
|
|
||||||
|
* **機能の設定方法を学ぶ**
|
||||||
|
<!-- * Configuration Overview FIXME(skullydazed/anyone): write this document -->
|
||||||
|
* [オーディオ](ja/feature_audio.md)
|
||||||
|
* 電飾
|
||||||
|
* [バックライト](ja/feature_backlight.md)
|
||||||
|
* [LED マトリックス](ja/feature_led_matrix.md)
|
||||||
|
* [RGB ライト](ja/feature_rgblight.md)
|
||||||
|
* [RGB マトリックス](ja/feature_rgb_matrix.md)
|
||||||
|
* [タップホールド設定](ja/tap_hold.md)
|
||||||
|
* **キーマップについてさらに学ぶ**
|
||||||
|
* [キーマップ](ja/keymap.md)
|
||||||
|
* [カスタム関数とキーコード](ja/custom_quantum_functions.md)
|
||||||
|
* マクロ
|
||||||
|
* [動的マクロ](ja/feature_dynamic_macros.md)
|
||||||
|
* [コンパイル済みのマクロ](ja/feature_macros.md)
|
||||||
|
* [タップダンス](ja/feature_tap_dance.md)
|
||||||
|
* [コンボ](ja/feature_combo.md)
|
||||||
|
* [ユーザスペース](ja/feature_userspace.md)
|
||||||
|
|
||||||
|
# 上級トピック
|
||||||
|
|
||||||
|
以下の全ては多くの基礎知識を必要とします。高度な機能を使ってキーマップを作成できることに加えて、`config.h` と `rules.mk` の両方を使ってキーボードのオプションを設定することに慣れている必要があります。
|
||||||
|
|
||||||
|
* **QMK 内のキーボードの保守**
|
||||||
|
* [キーボードの手配線](ja/hand_wire.md)
|
||||||
|
* [キーボードガイドライン](ja/hardware_keyboard_guidelines.md)
|
||||||
|
* [info.json リファレンス](ja/reference_info_json.md)
|
||||||
|
* [デバウンス API](ja/feature_debounce_type.md)
|
||||||
|
* **高度な機能**
|
||||||
|
* [ユニコード](ja/feature_unicode.md)
|
||||||
|
* [API](ja/api_overview.md)
|
||||||
|
* [ブートマジック](ja/feature_bootmagic.md)
|
||||||
|
* **ハードウェア**
|
||||||
|
* [キーボードがどのように動作するか](ja/how_keyboards_work.md)
|
||||||
|
* [キーボードマトリックスの仕組み](ja/how_a_matrix_works.md)
|
||||||
|
* [分割キーボード](ja/feature_split_keyboard.md)
|
||||||
|
* [速記](ja/feature_stenography.md)
|
||||||
|
* [ポインティングデバイス](ja/feature_pointing_device.md)
|
||||||
|
* **コア開発**
|
||||||
|
* [コーディング規約](ja/coding_conventions_c.md)
|
||||||
|
* [互換性のあるマイクロコントローラ](ja/compatible_microcontrollers.md)
|
||||||
|
* [カスタムマトリックス](ja/custom_matrix.md)
|
||||||
|
* [QMK を理解する](ja/understanding_qmk.md)
|
||||||
|
* **CLI 開発**
|
||||||
|
* [コーディング規約](ja/coding_conventions_python.md)
|
||||||
|
* [CLI 開発の概要](ja/cli_development.md)
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
# QMK ドキュメントを翻訳する
|
||||||
|
|
||||||
|
<!---
|
||||||
|
original document: 0.9.51:docs/translating.md
|
||||||
|
git diff 0.9.51 HEAD -- docs/translating.md | cat
|
||||||
|
-->
|
||||||
|
|
||||||
|
ルートフォルダ (`docs/`) にある全てのファイルは英語でなければなりません - 他の全ての言語は、ISO 639-1 言語コードと、それに続く`-`と関連する国コードのサブフォルダにある必要があります。[一般的なもののリストはここで見つかります](https://www.andiamo.co.uk/resources/iso-language-codes/)。このフォルダが存在しない場合、作成することができます。翻訳された各ファイルは英語バージョンと同じ名前でなければなりません。そうすることで、正常にフォールバックできます。
|
||||||
|
|
||||||
|
`_summary.md` ファイルはこのフォルダの中に存在し、各ファイルへのリンクのリスト、翻訳された名前、言語フォルダに続くリンクが含まれている必要があります。
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
* [QMK简介](zh-cn/getting_started_introduction.md)
|
||||||
|
```
|
||||||
|
|
||||||
|
他の docs ページへの全てのリンクにも、言語のフォルダが前に付いている必要があります。もしリンクがページの特定の部分(例えば、特定の見出し)への場合、以下のように見出しに英語の ID を使う必要があります:
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
[建立你的环境](zh-cn/newbs-getting-started.md#set-up-your-environment)
|
||||||
|
|
||||||
|
## 建立你的环境 :id=set-up-your-environment
|
||||||
|
```
|
||||||
|
|
||||||
|
新しい言語の翻訳が完了したら、以下のファイルも修正する必要があります:
|
||||||
|
|
||||||
|
* [`docs/_langs.md`](https://github.com/qmk/qmk_firmware/blob/master/docs/_langs.md)
|
||||||
|
各行は、[GitHub emoji shortcode](https://github.com/ikatyang/emoji-cheat-sheet/blob/master/README.md#country-flag) の形式で国フラグと、それに続く言語で表される名前を含む必要があります。
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
- [:cn: 中文](/zh-cn/)
|
||||||
|
```
|
||||||
|
|
||||||
|
* [`docs/index.html`](https://github.com/qmk/qmk_firmware/blob/master/docs/index.html)
|
||||||
|
`placeholder` と `noData` の両方のオブジェクトは、文字列で言語フォルダの辞書エントリが必要です:
|
||||||
|
|
||||||
|
```js
|
||||||
|
'/zh-cn/': '没有结果!',
|
||||||
|
```
|
||||||
|
|
||||||
|
サイドバーの「QMK ファームウェア」の見出しリンクを設定するために、`nameLink` オブジェクトも以下のように追加される必要があります:
|
||||||
|
|
||||||
|
```js
|
||||||
|
'/zh-cn/': '/#/zh-cn/',
|
||||||
|
```
|
||||||
|
|
||||||
|
また、`fallbackLanguages` リストに言語フォルダを追加して、404 ではなく英語に適切にフォールバックするようにしてください:
|
||||||
|
|
||||||
|
```js
|
||||||
|
fallbackLanguages: [
|
||||||
|
// ...
|
||||||
|
'zh-cn',
|
||||||
|
// ...
|
||||||
|
],
|
||||||
|
```
|
||||||
|
|
||||||
|
## 翻訳のプレビュー
|
||||||
|
|
||||||
|
ドキュメントのローカルインスタンスをセットアップする方法については、[ドキュメントのプレビュー](ja/contributing.md#previewing-the-documentation)を見てください - 右上の "Translations" メニューから新しい言語を選択することができるはずです。
|
||||||
|
|
||||||
|
作業に満足したら、遠慮なくプルリクエストを開いてください!
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
/* Copyright 2020 Koichi Katano
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "bakeneko60.h"
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
/* Copyright 2020 Koichi Katano
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
#define LAYOUT_60_ansi_split_bs_rshift( \
|
||||||
|
k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, \
|
||||||
|
k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, \
|
||||||
|
k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k213, \
|
||||||
|
k300, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, \
|
||||||
|
k400, k401, k402, k406, k410, k411, k412, k413 \
|
||||||
|
) { \
|
||||||
|
{ k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014 }, \
|
||||||
|
{ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, KC_NO}, \
|
||||||
|
{ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, KC_NO, k213, KC_NO}, \
|
||||||
|
{ k300, KC_NO, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, KC_NO}, \
|
||||||
|
{ k400, k401, k402, KC_NO, KC_NO, KC_NO, k406, KC_NO, KC_NO, KC_NO, k410, k411, k412, k413, KC_NO} \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_60_ansi( \
|
||||||
|
k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k014, \
|
||||||
|
k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, \
|
||||||
|
k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k213, \
|
||||||
|
k300, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, \
|
||||||
|
k400, k401, k402, k406, k410, k411, k412, k413 \
|
||||||
|
) { \
|
||||||
|
{ k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, KC_NO, k014 }, \
|
||||||
|
{ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, KC_NO}, \
|
||||||
|
{ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, KC_NO, k213, KC_NO}, \
|
||||||
|
{ k300, KC_NO, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, KC_NO, KC_NO}, \
|
||||||
|
{ k400, k401, k402, KC_NO, KC_NO, KC_NO, k406, KC_NO, KC_NO, KC_NO, k410, k411, k412, k413, KC_NO} \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_60_tsangan_hhkb( \
|
||||||
|
k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, \
|
||||||
|
k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, \
|
||||||
|
k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k213, \
|
||||||
|
k300, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, \
|
||||||
|
k400, k401, k402, k406, k411, k412, k413 \
|
||||||
|
) { \
|
||||||
|
{ k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014 }, \
|
||||||
|
{ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, KC_NO}, \
|
||||||
|
{ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, KC_NO, k213, KC_NO}, \
|
||||||
|
{ k300, KC_NO, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, KC_NO}, \
|
||||||
|
{ k400, k401, k402, KC_NO, KC_NO, KC_NO, k406, KC_NO, KC_NO, KC_NO, KC_NO, k411, k412, k413, KC_NO} \
|
||||||
|
}
|
||||||
@@ -0,0 +1,109 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 Koichi Katano
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "config_common.h"
|
||||||
|
|
||||||
|
/* USB Device descriptor parameter */
|
||||||
|
#define VENDOR_ID 0x3A0E
|
||||||
|
#define PRODUCT_ID 0xCBDC
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER kkatano
|
||||||
|
#define PRODUCT Bakeneko 60
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 5
|
||||||
|
#define MATRIX_COLS 15
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Keyboard Matrix Assignments
|
||||||
|
*
|
||||||
|
* Change this to how you wired your keyboard
|
||||||
|
* COLS: AVR pins used for columns, left to right
|
||||||
|
* ROWS: AVR pins used for rows, top to bottom
|
||||||
|
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
|
||||||
|
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#define MATRIX_ROW_PINS { E6, B7, F7, F4, F5 }
|
||||||
|
#define MATRIX_COL_PINS { F6, B0, F1, C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, D1 }
|
||||||
|
#define UNUSED_PINS
|
||||||
|
|
||||||
|
/* COL2ROW, ROW2COL */
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||||
|
#define DEBOUNCE 5
|
||||||
|
|
||||||
|
/* define if matrix has ghost (lacks anti-ghosting diodes) */
|
||||||
|
//#define MATRIX_HAS_GHOST
|
||||||
|
|
||||||
|
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||||
|
#define LOCKING_SUPPORT_ENABLE
|
||||||
|
/* Locking resynchronize hack */
|
||||||
|
#define LOCKING_RESYNC_ENABLE
|
||||||
|
|
||||||
|
/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
|
||||||
|
* This is useful for the Windows task manager shortcut (ctrl+shift+esc).
|
||||||
|
*/
|
||||||
|
//#define GRAVE_ESC_CTRL_OVERRIDE
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Force NKRO
|
||||||
|
*
|
||||||
|
* Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
|
||||||
|
* state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
|
||||||
|
* makefile for this to work.)
|
||||||
|
*
|
||||||
|
* If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
|
||||||
|
* until the next keyboard reset.
|
||||||
|
*
|
||||||
|
* NKRO may prevent your keystrokes from being detected in the BIOS, but it is
|
||||||
|
* fully operational during normal computer usage.
|
||||||
|
*
|
||||||
|
* For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
|
||||||
|
* or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
|
||||||
|
* bootmagic, NKRO mode will always be enabled until it is toggled again during a
|
||||||
|
* power-up.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
//#define FORCE_NKRO
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Feature disable options
|
||||||
|
* These options are also useful to firmware size reduction.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* disable debug print */
|
||||||
|
//#define NO_DEBUG
|
||||||
|
|
||||||
|
/* disable print */
|
||||||
|
//#define NO_PRINT
|
||||||
|
|
||||||
|
/* disable action features */
|
||||||
|
//#define NO_ACTION_LAYER
|
||||||
|
//#define NO_ACTION_TAPPING
|
||||||
|
//#define NO_ACTION_ONESHOT
|
||||||
|
|
||||||
|
/* disable these deprecated features by default */
|
||||||
|
#define NO_ACTION_MACRO
|
||||||
|
#define NO_ACTION_FUNCTION
|
||||||
|
|
||||||
|
/* Bootmagic Lite key configuration */
|
||||||
|
//#define BOOTMAGIC_LITE_ROW 0
|
||||||
|
//#define BOOTMAGIC_LITE_COLUMN 0
|
||||||
@@ -0,0 +1,219 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "Bakeneko 60",
|
||||||
|
"url": "https://github.com/kkatano/bakeneko-60-pcb",
|
||||||
|
"maintainer": "kkatano",
|
||||||
|
"width": 15,
|
||||||
|
"height": 5,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT_60_ansi_split_bs_rshift": {
|
||||||
|
"layout": [
|
||||||
|
{ "x":0, "y":0 },
|
||||||
|
{ "x":1, "y":0 },
|
||||||
|
{ "x":2, "y":0 },
|
||||||
|
{ "x":3, "y":0 },
|
||||||
|
{ "x":4, "y":0 },
|
||||||
|
{ "x":5, "y":0 },
|
||||||
|
{ "x":6, "y":0 },
|
||||||
|
{ "x":7, "y":0 },
|
||||||
|
{ "x":8, "y":0 },
|
||||||
|
{ "x":9, "y":0 },
|
||||||
|
{ "x":10, "y":0 },
|
||||||
|
{ "x":11, "y":0 },
|
||||||
|
{ "x":12, "y":0 },
|
||||||
|
{ "x":13, "y":0 },
|
||||||
|
{ "x":14, "y":0 },
|
||||||
|
|
||||||
|
{ "x":0, "y":1, "w":1.5 },
|
||||||
|
{ "x":1.5, "y":1 },
|
||||||
|
{ "x":2.5, "y":1 },
|
||||||
|
{ "x":3.5, "y":1 },
|
||||||
|
{ "x":4.5, "y":1 },
|
||||||
|
{ "x":5.5, "y":1 },
|
||||||
|
{ "x":6.5, "y":1 },
|
||||||
|
{ "x":7.5, "y":1 },
|
||||||
|
{ "x":8.5, "y":1 },
|
||||||
|
{ "x":9.5, "y":1 },
|
||||||
|
{ "x":10.5, "y":1 },
|
||||||
|
{ "x":11.5, "y":1 },
|
||||||
|
{ "x":12.5, "y":1 },
|
||||||
|
{ "x":13.5, "y":1, "w":1.5 },
|
||||||
|
|
||||||
|
{ "x":0, "y":2, "w":1.75 },
|
||||||
|
{ "x":1.75, "y":2 },
|
||||||
|
{ "x":2.75, "y":2 },
|
||||||
|
{ "x":3.75, "y":2 },
|
||||||
|
{ "x":4.75, "y":2 },
|
||||||
|
{ "x":5.75, "y":2 },
|
||||||
|
{ "x":6.75, "y":2 },
|
||||||
|
{ "x":7.75, "y":2 },
|
||||||
|
{ "x":8.75, "y":2 },
|
||||||
|
{ "x":9.75, "y":2 },
|
||||||
|
{ "x":10.75, "y":2 },
|
||||||
|
{ "x":11.75, "y":2 },
|
||||||
|
{ "x":12.75, "y":2, "w":2.25 },
|
||||||
|
|
||||||
|
{ "x":0, "y":3, "w":2.25 },
|
||||||
|
{ "x":2.25, "y":3 },
|
||||||
|
{ "x":3.25, "y":3 },
|
||||||
|
{ "x":4.25, "y":3 },
|
||||||
|
{ "x":5.25, "y":3 },
|
||||||
|
{ "x":6.25, "y":3 },
|
||||||
|
{ "x":7.25, "y":3 },
|
||||||
|
{ "x":8.25, "y":3 },
|
||||||
|
{ "x":9.25, "y":3 },
|
||||||
|
{ "x":10.25, "y":3 },
|
||||||
|
{ "x":11.25, "y":3 },
|
||||||
|
{ "x":12.25, "y":3, "w":1.75 },
|
||||||
|
{ "x":14, "y":3 },
|
||||||
|
|
||||||
|
{ "x":0, "y":4, "w":1.25 },
|
||||||
|
{ "x":1.25, "y":4, "w":1.25 },
|
||||||
|
{ "x":2.5, "y":4, "w":1.25 },
|
||||||
|
{ "x":3.75, "y":4, "w":6.25 },
|
||||||
|
{ "x":10, "y":4, "w":1.25 },
|
||||||
|
{ "x":11.25, "y":4, "w":1.25 },
|
||||||
|
{ "x":12.5, "y":4, "w":1.25 },
|
||||||
|
{ "x":13.75, "y":4, "w":1.25 }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_60_ansi": {
|
||||||
|
"layout": [
|
||||||
|
{ "x":0, "y":0 },
|
||||||
|
{ "x":1, "y":0 },
|
||||||
|
{ "x":2, "y":0 },
|
||||||
|
{ "x":3, "y":0 },
|
||||||
|
{ "x":4, "y":0 },
|
||||||
|
{ "x":5, "y":0 },
|
||||||
|
{ "x":6, "y":0 },
|
||||||
|
{ "x":7, "y":0 },
|
||||||
|
{ "x":8, "y":0 },
|
||||||
|
{ "x":9, "y":0 },
|
||||||
|
{ "x":10, "y":0 },
|
||||||
|
{ "x":11, "y":0 },
|
||||||
|
{ "x":12, "y":0 },
|
||||||
|
{ "x":13, "y":0, "w":2 },
|
||||||
|
|
||||||
|
{ "x":0, "y":1, "w":1.5 },
|
||||||
|
{ "x":1.5, "y":1 },
|
||||||
|
{ "x":2.5, "y":1 },
|
||||||
|
{ "x":3.5, "y":1 },
|
||||||
|
{ "x":4.5, "y":1 },
|
||||||
|
{ "x":5.5, "y":1 },
|
||||||
|
{ "x":6.5, "y":1 },
|
||||||
|
{ "x":7.5, "y":1 },
|
||||||
|
{ "x":8.5, "y":1 },
|
||||||
|
{ "x":9.5, "y":1 },
|
||||||
|
{ "x":10.5, "y":1 },
|
||||||
|
{ "x":11.5, "y":1 },
|
||||||
|
{ "x":12.5, "y":1 },
|
||||||
|
{ "x":13.5, "y":1, "w":1.5 },
|
||||||
|
|
||||||
|
{ "x":0, "y":2, "w":1.75 },
|
||||||
|
{ "x":1.75, "y":2 },
|
||||||
|
{ "x":2.75, "y":2 },
|
||||||
|
{ "x":3.75, "y":2 },
|
||||||
|
{ "x":4.75, "y":2 },
|
||||||
|
{ "x":5.75, "y":2 },
|
||||||
|
{ "x":6.75, "y":2 },
|
||||||
|
{ "x":7.75, "y":2 },
|
||||||
|
{ "x":8.75, "y":2 },
|
||||||
|
{ "x":9.75, "y":2 },
|
||||||
|
{ "x":10.75, "y":2 },
|
||||||
|
{ "x":11.75, "y":2 },
|
||||||
|
{ "x":12.75, "y":2, "w":2.25 },
|
||||||
|
|
||||||
|
{ "x":0, "y":3, "w":2.25 },
|
||||||
|
{ "x":2.25, "y":3 },
|
||||||
|
{ "x":3.25, "y":3 },
|
||||||
|
{ "x":4.25, "y":3 },
|
||||||
|
{ "x":5.25, "y":3 },
|
||||||
|
{ "x":6.25, "y":3 },
|
||||||
|
{ "x":7.25, "y":3 },
|
||||||
|
{ "x":8.25, "y":3 },
|
||||||
|
{ "x":9.25, "y":3 },
|
||||||
|
{ "x":10.25, "y":3 },
|
||||||
|
{ "x":11.25, "y":3 },
|
||||||
|
{ "x":12.25, "y":3, "w":2.75 },
|
||||||
|
|
||||||
|
{ "x":0, "y":4, "w":1.25 },
|
||||||
|
{ "x":1.25, "y":4, "w":1.25 },
|
||||||
|
{ "x":2.5, "y":4, "w":1.25 },
|
||||||
|
{ "x":3.75, "y":4, "w":6.25 },
|
||||||
|
{ "x":10, "y":4, "w":1.25 },
|
||||||
|
{ "x":11.25, "y":4, "w":1.25 },
|
||||||
|
{ "x":12.5, "y":4, "w":1.25 },
|
||||||
|
{ "x":13.75, "y":4, "w":1.25 }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_60_tsangan_hhkb": {
|
||||||
|
"layout": [
|
||||||
|
{ "x":0, "y":0 },
|
||||||
|
{ "x":1, "y":0 },
|
||||||
|
{ "x":2, "y":0 },
|
||||||
|
{ "x":3, "y":0 },
|
||||||
|
{ "x":4, "y":0 },
|
||||||
|
{ "x":5, "y":0 },
|
||||||
|
{ "x":6, "y":0 },
|
||||||
|
{ "x":7, "y":0 },
|
||||||
|
{ "x":8, "y":0 },
|
||||||
|
{ "x":9, "y":0 },
|
||||||
|
{ "x":10, "y":0 },
|
||||||
|
{ "x":11, "y":0 },
|
||||||
|
{ "x":12, "y":0 },
|
||||||
|
{ "x":13, "y":0 },
|
||||||
|
{ "x":14, "y":0 },
|
||||||
|
|
||||||
|
{ "x":0, "y":1, "w":1.5 },
|
||||||
|
{ "x":1.5, "y":1 },
|
||||||
|
{ "x":2.5, "y":1 },
|
||||||
|
{ "x":3.5, "y":1 },
|
||||||
|
{ "x":4.5, "y":1 },
|
||||||
|
{ "x":5.5, "y":1 },
|
||||||
|
{ "x":6.5, "y":1 },
|
||||||
|
{ "x":7.5, "y":1 },
|
||||||
|
{ "x":8.5, "y":1 },
|
||||||
|
{ "x":9.5, "y":1 },
|
||||||
|
{ "x":10.5, "y":1 },
|
||||||
|
{ "x":11.5, "y":1 },
|
||||||
|
{ "x":12.5, "y":1 },
|
||||||
|
{ "x":13.5, "y":1, "w":1.5 },
|
||||||
|
|
||||||
|
{ "x":0, "y":2, "w":1.75 },
|
||||||
|
{ "x":1.75, "y":2 },
|
||||||
|
{ "x":2.75, "y":2 },
|
||||||
|
{ "x":3.75, "y":2 },
|
||||||
|
{ "x":4.75, "y":2 },
|
||||||
|
{ "x":5.75, "y":2 },
|
||||||
|
{ "x":6.75, "y":2 },
|
||||||
|
{ "x":7.75, "y":2 },
|
||||||
|
{ "x":8.75, "y":2 },
|
||||||
|
{ "x":9.75, "y":2 },
|
||||||
|
{ "x":10.75, "y":2 },
|
||||||
|
{ "x":11.75, "y":2 },
|
||||||
|
{ "x":12.75, "y":2, "w":2.25 },
|
||||||
|
|
||||||
|
{ "x":0, "y":3, "w":2.25 },
|
||||||
|
{ "x":2.25, "y":3 },
|
||||||
|
{ "x":3.25, "y":3 },
|
||||||
|
{ "x":4.25, "y":3 },
|
||||||
|
{ "x":5.25, "y":3 },
|
||||||
|
{ "x":6.25, "y":3 },
|
||||||
|
{ "x":7.25, "y":3 },
|
||||||
|
{ "x":8.25, "y":3 },
|
||||||
|
{ "x":9.25, "y":3 },
|
||||||
|
{ "x":10.25, "y":3 },
|
||||||
|
{ "x":11.25, "y":3 },
|
||||||
|
{ "x":12.25, "y":3, "w":1.75 },
|
||||||
|
{ "x":14, "y":3 },
|
||||||
|
|
||||||
|
{ "x":0, "y":4, "w":1.5 },
|
||||||
|
{ "x":1.5, "y":4 },
|
||||||
|
{ "x":2.5, "y":4, "w":1.5 },
|
||||||
|
{ "x":4, "y":4, "w":7 },
|
||||||
|
{ "x":11, "y":4, "w":1.5 },
|
||||||
|
{ "x":12.5, "y":4 },
|
||||||
|
{ "x":13.5, "y":4, "w":1.5 }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
/* Copyright 2020 Koichi Katano
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
enum layer_names {
|
||||||
|
_BASE,
|
||||||
|
_FN
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[_BASE] = LAYOUT_60_ansi_split_bs_rshift(
|
||||||
|
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC,
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||||
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FN),
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL
|
||||||
|
),
|
||||||
|
[_FN] = LAYOUT_60_ansi_split_bs_rshift(
|
||||||
|
RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
)
|
||||||
|
};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
# The default keymap for Bakeneko 60
|
||||||
@@ -0,0 +1,54 @@
|
|||||||
|
/* Copyright 2020 Koichi Katano
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
enum layer_names {
|
||||||
|
_L0,
|
||||||
|
_L1,
|
||||||
|
_L2,
|
||||||
|
_L3
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[_L0] = LAYOUT_60_ansi_split_bs_rshift(
|
||||||
|
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC,
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||||
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_L1),
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL
|
||||||
|
),
|
||||||
|
[_L1] = LAYOUT_60_ansi_split_bs_rshift(
|
||||||
|
RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
[_L2] = LAYOUT_60_ansi_split_bs_rshift(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
[_L3] = LAYOUT_60_ansi_split_bs_rshift(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
)
|
||||||
|
};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
VIA_ENABLE = yes
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
# Bakeneko 60
|
||||||
|
|
||||||
|
An open source O-ring gasket mount keyboard
|
||||||
|
|
||||||
|
* Keyboard Maintainer: [kkatano](https://github.com/kkatano)
|
||||||
|
* Hardware Supported: Bakeneko 60
|
||||||
|
* Hardware Availability: [Open source on GitHub](https://github.com/kkatano/bakeneko-60-pcb)
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make bakeneko60:default
|
||||||
|
|
||||||
|
Flashing example for this keyboard:
|
||||||
|
|
||||||
|
make bakeneko60:default:flash
|
||||||
|
|
||||||
|
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
# MCU name
|
||||||
|
MCU = atmega32u4
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
BOOTLOADER = atmel-dfu
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
|
||||||
|
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||||
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
|
CONSOLE_ENABLE = no # Console for debug
|
||||||
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
|
NKRO_ENABLE = no # USB Nkey Rollover
|
||||||
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
|
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||||
|
AUDIO_ENABLE = no # Audio output
|
||||||
|
|
||||||
|
LAYOUTS = 60_ansi_split_bs_rshift 60_ansi 60_tsangan_hhkb
|
||||||
@@ -0,0 +1,138 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 marksard
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "config_common.h"
|
||||||
|
|
||||||
|
/* USB Device descriptor parameter */
|
||||||
|
#define VENDOR_ID 0xFEED
|
||||||
|
#define PRODUCT_ID 0xDFA8
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER marksard
|
||||||
|
#define PRODUCT leftover30
|
||||||
|
|
||||||
|
/* Encoder */
|
||||||
|
#define ENCODERS_PAD_A { F4 }
|
||||||
|
#define ENCODERS_PAD_B { F5 }
|
||||||
|
// #define ENCODER_DIRECTION_FLIP
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 8
|
||||||
|
#define MATRIX_COLS 5
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Keyboard Matrix Assignments
|
||||||
|
*
|
||||||
|
* Change this to how you wired your keyboard
|
||||||
|
* COLS: AVR pins used for columns, left to right
|
||||||
|
* ROWS: AVR pins used for rows, top to bottom
|
||||||
|
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
|
||||||
|
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#define MATRIX_ROW_PINS { B6, B2, F7, F6, B3, B1, D4, D0 }
|
||||||
|
#define MATRIX_COL_PINS { B5, B4, E6, D7, C6 }
|
||||||
|
#define UNUSED_PINS
|
||||||
|
|
||||||
|
/* COL2ROW, ROW2COL*/
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
#define RGB_DI_PIN D3
|
||||||
|
#ifdef RGB_DI_PIN
|
||||||
|
#define RGBLED_NUM 6
|
||||||
|
#define RGBLIGHT_HUE_STEP 8
|
||||||
|
#define RGBLIGHT_SAT_STEP 8
|
||||||
|
#define RGBLIGHT_VAL_STEP 8
|
||||||
|
#define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
|
||||||
|
#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
|
||||||
|
/*== all animations enable ==*/
|
||||||
|
#define RGBLIGHT_ANIMATIONS
|
||||||
|
/*== or choose animations ==*/
|
||||||
|
// #define RGBLIGHT_EFFECT_BREATHING
|
||||||
|
// #define RGBLIGHT_EFFECT_RAINBOW_MOOD
|
||||||
|
// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
|
||||||
|
// #define RGBLIGHT_EFFECT_SNAKE
|
||||||
|
// #define RGBLIGHT_EFFECT_KNIGHT
|
||||||
|
// #define RGBLIGHT_EFFECT_CHRISTMAS
|
||||||
|
// #define RGBLIGHT_EFFECT_STATIC_GRADIENT
|
||||||
|
// #define RGBLIGHT_EFFECT_RGB_TEST
|
||||||
|
// #define RGBLIGHT_EFFECT_ALTERNATING
|
||||||
|
/*== customize breathing effect ==*/
|
||||||
|
/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
|
||||||
|
#define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
|
||||||
|
/*==== use exp() and sin() ====*/
|
||||||
|
#define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
|
||||||
|
#define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||||
|
#define DEBOUNCE 5
|
||||||
|
|
||||||
|
/* define if matrix has ghost (lacks anti-ghosting diodes) */
|
||||||
|
//#define MATRIX_HAS_GHOST
|
||||||
|
|
||||||
|
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||||
|
#define LOCKING_SUPPORT_ENABLE
|
||||||
|
/* Locking resynchronize hack */
|
||||||
|
#define LOCKING_RESYNC_ENABLE
|
||||||
|
|
||||||
|
/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
|
||||||
|
* This is userful for the Windows task manager shortcut (ctrl+shift+esc).
|
||||||
|
*/
|
||||||
|
// #define GRAVE_ESC_CTRL_OVERRIDE
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Force NKRO
|
||||||
|
*
|
||||||
|
* Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
|
||||||
|
* state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
|
||||||
|
* makefile for this to work.)
|
||||||
|
*
|
||||||
|
* If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
|
||||||
|
* until the next keyboard reset.
|
||||||
|
*
|
||||||
|
* NKRO may prevent your keystrokes from being detected in the BIOS, but it is
|
||||||
|
* fully operational during normal computer usage.
|
||||||
|
*
|
||||||
|
* For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
|
||||||
|
* or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
|
||||||
|
* bootmagic, NKRO mode will always be enabled until it is toggled again during a
|
||||||
|
* power-up.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
//#define FORCE_NKRO
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Feature disable options
|
||||||
|
* These options are also useful to firmware size reduction.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* disable debug print */
|
||||||
|
//#define NO_DEBUG
|
||||||
|
|
||||||
|
/* disable print */
|
||||||
|
//#define NO_PRINT
|
||||||
|
|
||||||
|
/* disable action features */
|
||||||
|
//#define NO_ACTION_LAYER
|
||||||
|
//#define NO_ACTION_TAPPING
|
||||||
|
//#define NO_ACTION_ONESHOT
|
||||||
|
|
||||||
|
/* disable these deprecated features by default */
|
||||||
|
#define NO_ACTION_MACRO
|
||||||
|
#define NO_ACTION_FUNCTION
|
||||||
@@ -0,0 +1,198 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "Leftover30",
|
||||||
|
"url": "https://github.com/marksard/Keyboards",
|
||||||
|
"maintainer": "marksard",
|
||||||
|
"width": 11.5,
|
||||||
|
"height": 4,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT": {
|
||||||
|
"layout": [
|
||||||
|
{
|
||||||
|
"label": "Q",
|
||||||
|
"x": 0.5,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "W",
|
||||||
|
"x": 1.5,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "E",
|
||||||
|
"x": 2.5,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "R",
|
||||||
|
"x": 3.5,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "T",
|
||||||
|
"x": 4.5,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Y",
|
||||||
|
"x": 5.5,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "U",
|
||||||
|
"x": 6.5,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "I",
|
||||||
|
"x": 7.5,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "O",
|
||||||
|
"x": 8.5,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "P",
|
||||||
|
"x": 9.5,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "BS",
|
||||||
|
"x": 10.5,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "A",
|
||||||
|
"x": 0.75,
|
||||||
|
"y": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "S",
|
||||||
|
"x": 1.75,
|
||||||
|
"y": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "D",
|
||||||
|
"x": 2.75,
|
||||||
|
"y": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "F",
|
||||||
|
"x": 3.75,
|
||||||
|
"y": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "G",
|
||||||
|
"x": 4.75,
|
||||||
|
"y": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "H",
|
||||||
|
"x": 5.75,
|
||||||
|
"y": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "J",
|
||||||
|
"x": 6.75,
|
||||||
|
"y": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "K",
|
||||||
|
"x": 7.75,
|
||||||
|
"y": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "L",
|
||||||
|
"x": 8.75,
|
||||||
|
"y": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Enter",
|
||||||
|
"x": 9.75,
|
||||||
|
"y": 1,
|
||||||
|
"w": 1.75
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Z",
|
||||||
|
"x": 1.25,
|
||||||
|
"y": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "X",
|
||||||
|
"x": 2.25,
|
||||||
|
"y": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "C",
|
||||||
|
"x": 3.25,
|
||||||
|
"y": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "V",
|
||||||
|
"x": 4.25,
|
||||||
|
"y": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "B",
|
||||||
|
"x": 5.25,
|
||||||
|
"y": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "N",
|
||||||
|
"x": 6.25,
|
||||||
|
"y": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "M",
|
||||||
|
"x": 7.25,
|
||||||
|
"y": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "<",
|
||||||
|
"x": 8.25,
|
||||||
|
"y": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": ">",
|
||||||
|
"x": 9.25,
|
||||||
|
"y": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "?",
|
||||||
|
"x": 10.25,
|
||||||
|
"y": 2,
|
||||||
|
"w": 1.25
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "",
|
||||||
|
"x": 0,
|
||||||
|
"y": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Alt",
|
||||||
|
"x": 1.5,
|
||||||
|
"y": 3,
|
||||||
|
"w": 1.25
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "",
|
||||||
|
"x": 2.75,
|
||||||
|
"y": 3,
|
||||||
|
"w": 6.25
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Fn1",
|
||||||
|
"x": 9,
|
||||||
|
"y": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Ctrl",
|
||||||
|
"x": 10,
|
||||||
|
"y": 3,
|
||||||
|
"w": 1.5
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
/* Copyright 2020 marksard
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
// place overrides here
|
||||||
|
#define TAPPING_TERM 200
|
||||||
|
#define IGNORE_MOD_TAP_INTERRUPT
|
||||||
|
|
||||||
|
#define TAPPING_LAYER_TERM 150 // Custom LT Tapping term
|
||||||
|
#define TAPPING_TERM_PER_KEY
|
||||||
@@ -0,0 +1,162 @@
|
|||||||
|
/* Copyright 2020 marksard
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
enum layer_number {
|
||||||
|
_BASE,
|
||||||
|
_LOWER,
|
||||||
|
_RAISE,
|
||||||
|
_ADJUST,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum custom_keycodes {
|
||||||
|
RGBRST = SAFE_RANGE,
|
||||||
|
LOWER,
|
||||||
|
RAISE,
|
||||||
|
KANJI,
|
||||||
|
};
|
||||||
|
|
||||||
|
// #define KC_ESAD LT(_ADJUST, KC_ESC)
|
||||||
|
// #define KC_BSLO LT(_LOWER, KC_BSPC)
|
||||||
|
#define KC_LOWR MO(_LOWER)
|
||||||
|
#define KC_SPRA LT(_RAISE, KC_SPC)
|
||||||
|
#define KC_AJST MO(_ADJUST)
|
||||||
|
|
||||||
|
#define KC_Q_AL LALT_T(KC_Q)
|
||||||
|
#define KC_A_CT LCTL_T(KC_A)
|
||||||
|
#define KC_Z_SF LSFT_T(KC_Z)
|
||||||
|
#define KC_X_AL LALT_T(KC_X)
|
||||||
|
#define KC_ENSF RSFT_T(KC_ENT)
|
||||||
|
#define KC_SLSF RSFT_T(KC_SLSH)
|
||||||
|
|
||||||
|
#define KC_F1AL LALT_T(KC_F1)
|
||||||
|
#define KC_F6CT LCTL_T(KC_F6)
|
||||||
|
#define KC_11SF LSFT_T(KC_F11)
|
||||||
|
#define KC_12AL LALT_T(KC_F12)
|
||||||
|
#define KC_QUSF RCTL_T(KC_QUOT)
|
||||||
|
#define KC_ROSF RSFT_T(KC_RO)
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[_BASE] = LAYOUT_all(
|
||||||
|
//,-----------------------------------------------------------------------------------------------------------.
|
||||||
|
KC_Q_AL, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||||
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
|
||||||
|
KC_A_CT, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENSF,
|
||||||
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
|
||||||
|
KC_Z_SF, KC_X_AL, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSF,
|
||||||
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
|
||||||
|
KC_LCTL, KC_LGUI, KC_SPRA, KC_LOWR, KC_RCTL
|
||||||
|
//`-----------------------------------------------------------------------------------------------------------'
|
||||||
|
),
|
||||||
|
|
||||||
|
[_LOWER] = LAYOUT_all(
|
||||||
|
//,-----------------------------------------------------------------------------------------------------------.
|
||||||
|
KC_F1AL, KC_F2, KC_F3, KC_F4, KC_F5, KC_MINS, KC_EQL, KC_JYEN, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||||
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
|
||||||
|
KC_F6CT, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, XXXXXXX, XXXXXXX, KC_SCLN, KC_QUSF,
|
||||||
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
|
||||||
|
KC_11SF, KC_12AL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_GRV, KC_RO, KC_SLSH, KC_ROSF,
|
||||||
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
|
||||||
|
_______, _______, KC_AJST, _______, _______
|
||||||
|
//`-----------------------------------------------------------------------------------------------------------'
|
||||||
|
),
|
||||||
|
|
||||||
|
[_RAISE] = LAYOUT_all(
|
||||||
|
//,-----------------------------------------------------------------------------------------------------------.
|
||||||
|
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
|
||||||
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
|
||||||
|
KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______,
|
||||||
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
|
||||||
|
KC_LSFT, XXXXXXX, KC_ESC, KC_TAB, KANJI, KC_DEL, KC_COMM, KC_DOT, KC_BSLS, KC_ROSF,
|
||||||
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
|
||||||
|
_______, _______, _______, KC_AJST, _______
|
||||||
|
//`-----------------------------------------------------------------------------------------------------------'
|
||||||
|
),
|
||||||
|
|
||||||
|
[_ADJUST] = LAYOUT_all(
|
||||||
|
//,-----------------------------------------------------------------------------------------------------------.
|
||||||
|
RESET, RGBRST, AG_NORM, AG_SWAP, XXXXXXX, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_INS, KC_PSCR,
|
||||||
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
|
||||||
|
RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_NLCK,
|
||||||
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
|
||||||
|
RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, KC_BTN1, KC_BTN2, XXXXXXX, XXXXXXX, KC_CAPS,
|
||||||
|
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
|
||||||
|
_______, _______, _______, _______, KC_CAPS
|
||||||
|
//`-----------------------------------------------------------------------------------------------------------'
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
uint16_t get_tapping_term(uint16_t keycode) {
|
||||||
|
switch (keycode) {
|
||||||
|
case KC_SPRA:
|
||||||
|
return TAPPING_LAYER_TERM;
|
||||||
|
default:
|
||||||
|
return TAPPING_TERM;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
|
||||||
|
bool result = false;
|
||||||
|
switch (keycode) {
|
||||||
|
case KANJI:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
register_code16(keymap_config.swap_lalt_lgui ? A(KC_GRV) : KC_LANG2);
|
||||||
|
} else {
|
||||||
|
unregister_code16(keymap_config.swap_lalt_lgui ? A(KC_GRV) : KC_LANG2);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
#ifdef RGBLIGHT_ENABLE
|
||||||
|
case RGBRST:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
eeconfig_update_rgblight_default();
|
||||||
|
rgblight_enable();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
default:
|
||||||
|
result = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
void encoder_update_user(uint8_t index, bool clockwise) {
|
||||||
|
if (index == 0) {
|
||||||
|
if (IS_LAYER_ON(_ADJUST)) {
|
||||||
|
if (clockwise) {
|
||||||
|
rgblight_increase_hue_noeeprom();
|
||||||
|
} else {
|
||||||
|
rgblight_decrease_hue_noeeprom();
|
||||||
|
}
|
||||||
|
} else if (IS_LAYER_ON(_LOWER)) {
|
||||||
|
tap_code16((clockwise == true) ? LCTL(KC_Y) : LCTL(KC_Z));
|
||||||
|
} else if (IS_LAYER_ON(_RAISE)) {
|
||||||
|
tap_code16((clockwise == true) ? S(KC_DOWN) : S(KC_UP));
|
||||||
|
} else {
|
||||||
|
tap_code((clockwise == true) ? KC_WH_D : KC_WH_U);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// for exsample customize of LED inducator
|
||||||
|
// bool led_update_user(led_t led_state) {
|
||||||
|
// writePin(D2, IS_LAYER_ON(_LOWER));
|
||||||
|
// writePin(D1, IS_LAYER_ON(_RAISE));
|
||||||
|
// return false;
|
||||||
|
// }
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
# The default keymap for leftover30
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
ENCODER_ENABLE = yes
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
/* Copyright 2020 marksard
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "leftover30.h"
|
||||||
|
|
||||||
|
// Optional override functions below.
|
||||||
|
// You can leave any or all of these undefined.
|
||||||
|
// These are only required if you want to perform custom actions.
|
||||||
|
|
||||||
|
void keyboard_pre_init_user(void) {
|
||||||
|
/* Set CAPSLOCK indicator pin as output */
|
||||||
|
setPinOutput(D1);
|
||||||
|
/* Set NUMLOCK indicator pin as output */
|
||||||
|
setPinOutput(D2);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool led_update_kb(led_t led_state) {
|
||||||
|
bool res = led_update_user(led_state);
|
||||||
|
if(res) {
|
||||||
|
writePin(D2, led_state.num_lock);
|
||||||
|
writePin(D1, led_state.caps_lock);
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
/* Copyright 2020 marksard
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
/* This is a shortcut to help you visually see your layout.
|
||||||
|
*
|
||||||
|
* The first section contains all of the arguments representing the physical
|
||||||
|
* layout of the board and position of the keys.
|
||||||
|
*
|
||||||
|
* The second converts the arguments into a two-dimensional array which
|
||||||
|
* represents the switch matrix.
|
||||||
|
*/
|
||||||
|
#define LAYOUT_all( \
|
||||||
|
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a,\
|
||||||
|
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\
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{ k09, k08, k07, k06, k05 }, \
|
||||||
|
{ k19, k18, k17, k16, k15 }, \
|
||||||
|
{ k29, k28, k27, k26, k25 }, \
|
||||||
|
{ k0a, k34, k33, k32, k31 }, \
|
||||||
|
\
|
||||||
|
{ k04, k03, k02, k01, k00 }, \
|
||||||
|
{ k14, k13, k12, k11, k10 }, \
|
||||||
|
{ k24, k23, k22, k21, k20 }, \
|
||||||
|
{ KC_NO, KC_NO, KC_NO, KC_NO, k30 } \
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
# leftover30
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
A 30% mini keyboard.
|
||||||
|
|
||||||
|
* Keyboard Maintainer: [marksard](https://github.com/marksard)
|
||||||
|
* Hardware Supported: LEFTOVER30 PCB (with Pro Micro)
|
||||||
|
* Hardware Availability: [Mark's Garage](https://marksard.booth.pm/)
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make marksard/leftover30: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).
|
||||||
|
|
||||||
|
[Build guide](https://github.com/marksard/Keyboards/blob/master/leftover30/documents/leftover30_buildguide.md)
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
# MCU name
|
||||||
|
MCU = atmega32u4
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
BOOTLOADER = caterina
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
||||||
|
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||||
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
|
CONSOLE_ENABLE = no # Console for debug
|
||||||
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
|
NKRO_ENABLE = no # USB Nkey Rollover
|
||||||
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
|
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||||
|
AUDIO_ENABLE = no # Audio output
|
||||||
@@ -0,0 +1,233 @@
|
|||||||
|
// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0.
|
||||||
|
// See gfxfont.h for newer custom bitmap font info.
|
||||||
|
|
||||||
|
#include "progmem.h"
|
||||||
|
|
||||||
|
// Standard ASCII 5x7 font
|
||||||
|
|
||||||
|
static const unsigned char font[] PROGMEM = {
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00,
|
||||||
|
0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00,
|
||||||
|
0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00,
|
||||||
|
0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00,
|
||||||
|
0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00,
|
||||||
|
0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00,
|
||||||
|
0x00, 0x18, 0x3C, 0x18, 0x00, 0x00,
|
||||||
|
0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00,
|
||||||
|
0x00, 0x18, 0x24, 0x18, 0x00, 0x00,
|
||||||
|
0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00,
|
||||||
|
0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00,
|
||||||
|
0x26, 0x29, 0x79, 0x29, 0x26, 0x00,
|
||||||
|
0x40, 0x7F, 0x05, 0x05, 0x07, 0x00,
|
||||||
|
0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00,
|
||||||
|
0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00,
|
||||||
|
0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00,
|
||||||
|
0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00,
|
||||||
|
0x14, 0x22, 0x7F, 0x22, 0x14, 0x00,
|
||||||
|
0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00,
|
||||||
|
0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00,
|
||||||
|
0x00, 0x66, 0x89, 0x95, 0x6A, 0x00,
|
||||||
|
0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
|
||||||
|
0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00,
|
||||||
|
0x08, 0x04, 0x7E, 0x04, 0x08, 0x00,
|
||||||
|
0x10, 0x20, 0x7E, 0x20, 0x10, 0x00,
|
||||||
|
0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00,
|
||||||
|
0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00,
|
||||||
|
0x1E, 0x10, 0x10, 0x10, 0x10, 0x00,
|
||||||
|
0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00,
|
||||||
|
0x30, 0x38, 0x3E, 0x38, 0x30, 0x00,
|
||||||
|
0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x5F, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x07, 0x00, 0x07, 0x00, 0x00,
|
||||||
|
0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00,
|
||||||
|
0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00,
|
||||||
|
0x23, 0x13, 0x08, 0x64, 0x62, 0x00,
|
||||||
|
0x36, 0x49, 0x56, 0x20, 0x50, 0x00,
|
||||||
|
0x00, 0x08, 0x07, 0x03, 0x00, 0x00,
|
||||||
|
0x00, 0x1C, 0x22, 0x41, 0x00, 0x00,
|
||||||
|
0x00, 0x41, 0x22, 0x1C, 0x00, 0x00,
|
||||||
|
0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,
|
||||||
|
0x08, 0x08, 0x3E, 0x08, 0x08, 0x00,
|
||||||
|
0x00, 0x80, 0x70, 0x30, 0x00, 0x00,
|
||||||
|
0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
|
||||||
|
0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
|
||||||
|
0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
|
||||||
|
0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00,
|
||||||
|
0x00, 0x42, 0x7F, 0x40, 0x00, 0x00,
|
||||||
|
0x72, 0x49, 0x49, 0x49, 0x46, 0x00,
|
||||||
|
0x21, 0x41, 0x49, 0x4D, 0x33, 0x00,
|
||||||
|
0x18, 0x14, 0x12, 0x7F, 0x10, 0x00,
|
||||||
|
0x27, 0x45, 0x45, 0x45, 0x39, 0x00,
|
||||||
|
0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00,
|
||||||
|
0x41, 0x21, 0x11, 0x09, 0x07, 0x00,
|
||||||
|
0x36, 0x49, 0x49, 0x49, 0x36, 0x00,
|
||||||
|
0x46, 0x49, 0x49, 0x29, 0x1E, 0x00,
|
||||||
|
0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x40, 0x34, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x08, 0x14, 0x22, 0x41, 0x00,
|
||||||
|
0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
|
||||||
|
0x00, 0x41, 0x22, 0x14, 0x08, 0x00,
|
||||||
|
0x02, 0x01, 0x59, 0x09, 0x06, 0x00,
|
||||||
|
0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00,
|
||||||
|
0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00,
|
||||||
|
0x7F, 0x49, 0x49, 0x49, 0x36, 0x00,
|
||||||
|
0x3E, 0x41, 0x41, 0x41, 0x22, 0x00,
|
||||||
|
0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00,
|
||||||
|
0x7F, 0x49, 0x49, 0x49, 0x41, 0x00,
|
||||||
|
0x7F, 0x09, 0x09, 0x09, 0x01, 0x00,
|
||||||
|
0x3E, 0x41, 0x41, 0x51, 0x73, 0x00,
|
||||||
|
0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,
|
||||||
|
0x00, 0x41, 0x7F, 0x41, 0x00, 0x00,
|
||||||
|
0x20, 0x40, 0x41, 0x3F, 0x01, 0x00,
|
||||||
|
0x7F, 0x08, 0x14, 0x22, 0x41, 0x00,
|
||||||
|
0x7F, 0x40, 0x40, 0x40, 0x40, 0x00,
|
||||||
|
0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00,
|
||||||
|
0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00,
|
||||||
|
0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00,
|
||||||
|
0x7F, 0x09, 0x09, 0x09, 0x06, 0x00,
|
||||||
|
0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00,
|
||||||
|
0x7F, 0x09, 0x19, 0x29, 0x46, 0x00,
|
||||||
|
0x26, 0x49, 0x49, 0x49, 0x32, 0x00,
|
||||||
|
0x03, 0x01, 0x7F, 0x01, 0x03, 0x00,
|
||||||
|
0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00,
|
||||||
|
0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00,
|
||||||
|
0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00,
|
||||||
|
0x63, 0x14, 0x08, 0x14, 0x63, 0x00,
|
||||||
|
0x03, 0x04, 0x78, 0x04, 0x03, 0x00,
|
||||||
|
0x61, 0x59, 0x49, 0x4D, 0x43, 0x00,
|
||||||
|
0x00, 0x7F, 0x41, 0x41, 0x41, 0x00,
|
||||||
|
0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
|
||||||
|
0x00, 0x41, 0x41, 0x41, 0x7F, 0x00,
|
||||||
|
0x04, 0x02, 0x01, 0x02, 0x04, 0x00,
|
||||||
|
0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
|
||||||
|
0x00, 0x03, 0x07, 0x08, 0x00, 0x00,
|
||||||
|
0x20, 0x54, 0x54, 0x78, 0x40, 0x00,
|
||||||
|
0x7F, 0x28, 0x44, 0x44, 0x38, 0x00,
|
||||||
|
0x38, 0x44, 0x44, 0x44, 0x28, 0x00,
|
||||||
|
0x38, 0x44, 0x44, 0x28, 0x7F, 0x00,
|
||||||
|
0x38, 0x54, 0x54, 0x54, 0x18, 0x00,
|
||||||
|
0x00, 0x08, 0x7E, 0x09, 0x02, 0x00,
|
||||||
|
0x18, 0x24, 0x24, 0x1C, 0x78, 0x00,
|
||||||
|
0x7F, 0x08, 0x04, 0x04, 0x78, 0x00,
|
||||||
|
0x00, 0x44, 0x7D, 0x40, 0x00, 0x00,
|
||||||
|
0x20, 0x40, 0x40, 0x3D, 0x00, 0x00,
|
||||||
|
0x7F, 0x10, 0x28, 0x44, 0x00, 0x00,
|
||||||
|
0x00, 0x41, 0x7F, 0x40, 0x00, 0x00,
|
||||||
|
0x7C, 0x04, 0x78, 0x04, 0x78, 0x00,
|
||||||
|
0x7C, 0x08, 0x04, 0x04, 0x78, 0x00,
|
||||||
|
0x38, 0x44, 0x44, 0x44, 0x38, 0x00,
|
||||||
|
0xFC, 0x18, 0x24, 0x24, 0x18, 0x00,
|
||||||
|
0x18, 0x24, 0x24, 0x18, 0xFC, 0x00,
|
||||||
|
0x7C, 0x08, 0x04, 0x04, 0x08, 0x00,
|
||||||
|
0x48, 0x54, 0x54, 0x54, 0x24, 0x00,
|
||||||
|
0x04, 0x04, 0x3F, 0x44, 0x24, 0x00,
|
||||||
|
0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00,
|
||||||
|
0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00,
|
||||||
|
0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00,
|
||||||
|
0x44, 0x28, 0x10, 0x28, 0x44, 0x00,
|
||||||
|
0x4C, 0x10, 0x10, 0x10, 0x7C, 0x00,
|
||||||
|
0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,
|
||||||
|
0x00, 0x08, 0x36, 0x41, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x77, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x41, 0x36, 0x08, 0x00, 0x00,
|
||||||
|
0x02, 0x01, 0x02, 0x04, 0x02, 0x00,
|
||||||
|
0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00,
|
||||||
|
0x00, 0x00, 0xD8, 0xDE, 0xDE, 0xDE,
|
||||||
|
0x1E, 0x1E, 0x1E, 0x1E, 0xFE, 0xFE,
|
||||||
|
0xFE, 0xFE, 0x00, 0xF0, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xE3, 0xE0, 0xE0, 0xE0, 0xE0,
|
||||||
|
0xE0, 0xE0, 0x00, 0x80, 0xE0, 0xE0,
|
||||||
|
0xE0, 0x00, 0x00, 0x00, 0x00, 0xE0,
|
||||||
|
0xE0, 0xE0, 0xE0, 0x00, 0xE0, 0xE0,
|
||||||
|
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
|
||||||
|
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
|
||||||
|
0xE0, 0xE0, 0xE0, 0x00, 0xC0, 0xE0,
|
||||||
|
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
|
||||||
|
0xE0, 0xE0, 0xE0, 0x00, 0x80, 0xE0,
|
||||||
|
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
|
||||||
|
0xE0, 0xE0, 0xE0, 0xE0, 0x00, 0xFC,
|
||||||
|
0xFC, 0xFC, 0xFC, 0xE0, 0xE0, 0x80,
|
||||||
|
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
|
||||||
|
0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0x00,
|
||||||
|
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
|
||||||
|
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x80,
|
||||||
|
0x00, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0,
|
||||||
|
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x80, 0xFE, 0xFF, 0xFF, 0x7F, 0x0F,
|
||||||
|
0x0E, 0x0E, 0xCE, 0xFF, 0xFF, 0xFF,
|
||||||
|
0x7F, 0x80, 0xFE, 0xFF, 0xFF, 0x3F,
|
||||||
|
0x01, 0x01, 0x01, 0x81, 0xFF, 0xFF,
|
||||||
|
0xFF, 0x3F, 0xE0, 0xFF, 0xFF, 0xFF,
|
||||||
|
0x8F, 0x80, 0x80, 0x80, 0xF8, 0xFF,
|
||||||
|
0xFF, 0x7F, 0xC1, 0xFE, 0xFF, 0xFF,
|
||||||
|
0x1F, 0x01, 0x01, 0xE1, 0xFF, 0xFF,
|
||||||
|
0xFF, 0x0F, 0x01, 0x01, 0xF1, 0xFF,
|
||||||
|
0xFF, 0xFF, 0x07, 0xFC, 0xFF, 0xFF,
|
||||||
|
0xFF, 0x9D, 0x9D, 0x9D, 0x9D, 0x9F,
|
||||||
|
0x9F, 0x9F, 0x1F, 0x80, 0x9F, 0x9F,
|
||||||
|
0x9F, 0x9F, 0x9D, 0x9D, 0xDD, 0xFD,
|
||||||
|
0xFD, 0xFD, 0x39, 0xC0, 0xFF, 0xFF,
|
||||||
|
0xFF, 0x9F, 0x81, 0x01, 0xF1, 0xFF,
|
||||||
|
0xFF, 0xFF, 0x87, 0x81, 0x81, 0x81,
|
||||||
|
0xF9, 0xFF, 0xFF, 0xFF, 0x03, 0xFC,
|
||||||
|
0xFF, 0xFF, 0x3F, 0x01, 0x01, 0x01,
|
||||||
|
0x01, 0xFF, 0xFF, 0xFF, 0x7F, 0xC0,
|
||||||
|
0xFF, 0xFF, 0xFF, 0x9F, 0x9D, 0x9D,
|
||||||
|
0x9D, 0x9D, 0x9F, 0x9F, 0x1F, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x07, 0x07, 0x07, 0x07, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x07, 0x07, 0x07, 0x07,
|
||||||
|
0x00, 0x07, 0x07, 0x07, 0x07, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x07, 0x07, 0x07,
|
||||||
|
0x07, 0x60, 0x73, 0x77, 0x77, 0x77,
|
||||||
|
0x77, 0x77, 0x77, 0x7F, 0x7F, 0x7F,
|
||||||
|
0x1F, 0x00, 0x07, 0x07, 0x07, 0x07,
|
||||||
|
0x00, 0x00, 0x00, 0x07, 0x07, 0x07,
|
||||||
|
0x03, 0x00, 0x00, 0x00, 0x07, 0x07,
|
||||||
|
0x07, 0x01, 0x00, 0x07, 0x07, 0x07,
|
||||||
|
0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
|
||||||
|
0x07, 0x00, 0x00, 0x07, 0x07, 0x07,
|
||||||
|
0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
|
||||||
|
0x07, 0x03, 0x00, 0x03, 0x07, 0x07,
|
||||||
|
0x07, 0x07, 0x07, 0x00, 0x03, 0x07,
|
||||||
|
0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
|
||||||
|
0x07, 0x07, 0x03, 0x00, 0x07, 0x07,
|
||||||
|
0x07, 0x07, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x07, 0x07, 0x07, 0x07, 0x00, 0x03,
|
||||||
|
0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
|
||||||
|
0x07, 0x07, 0x07, 0x07, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
};
|
||||||
@@ -0,0 +1,87 @@
|
|||||||
|
#ifdef OLED_DRIVER_ENABLE
|
||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
void render_logo(void) {
|
||||||
|
|
||||||
|
static const char PROGMEM logo_buf[]={
|
||||||
|
0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
|
||||||
|
0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
|
||||||
|
0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,
|
||||||
|
0};
|
||||||
|
|
||||||
|
oled_write_P(logo_buf, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
void render_lock_status(void) {
|
||||||
|
|
||||||
|
// Host Keyboard LED Status
|
||||||
|
led_t led_state = host_keyboard_led_state();
|
||||||
|
|
||||||
|
oled_write_P(PSTR("Lock:"), false);
|
||||||
|
if (led_state.num_lock) {
|
||||||
|
oled_write_P(PSTR("Num "), false);
|
||||||
|
}
|
||||||
|
if (led_state.caps_lock) {
|
||||||
|
oled_write_P(PSTR("Caps "), false);
|
||||||
|
}
|
||||||
|
if (led_state.scroll_lock) {
|
||||||
|
oled_write_P(PSTR("Scrl"), false);
|
||||||
|
}
|
||||||
|
|
||||||
|
oled_write_P(PSTR("\n"), false);
|
||||||
|
}
|
||||||
|
|
||||||
|
static char keylog_buf[24] = "Key state ready.\n";
|
||||||
|
const char code_to_name[60] = {
|
||||||
|
' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f',
|
||||||
|
'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p',
|
||||||
|
'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
|
||||||
|
'1', '2', '3', '4', '5', '6', '7', '8', '9', '0',
|
||||||
|
'R', 'E', 'B', 'T', ' ', '-', ' ', '@', ' ', ' ',
|
||||||
|
' ', ';', ':', ' ', ',', '.', '/', ' ', ' ', ' '};
|
||||||
|
|
||||||
|
void update_key_status(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
|
||||||
|
if (!record->event.pressed) return;
|
||||||
|
|
||||||
|
char name = (keycode < 60) ? code_to_name[keycode] : ' ';
|
||||||
|
snprintf(keylog_buf, sizeof(keylog_buf) - 1, "Key:%dx%d %2x %c\n",
|
||||||
|
record->event.key.row, record->event.key.col,
|
||||||
|
(uint16_t)keycode, name);
|
||||||
|
}
|
||||||
|
|
||||||
|
void render_key_status(void) {
|
||||||
|
|
||||||
|
oled_write(keylog_buf, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef RGBLIGHT_ENABLE
|
||||||
|
extern rgblight_config_t rgblight_config;
|
||||||
|
|
||||||
|
static char led_buf[24] = "LED state ready.\n";
|
||||||
|
rgblight_config_t rgblight_config_bak;
|
||||||
|
void update_led_status(void) {
|
||||||
|
|
||||||
|
if (rgblight_config_bak.enable != rgblight_config.enable ||
|
||||||
|
rgblight_config_bak.mode != rgblight_config.mode ||
|
||||||
|
rgblight_config_bak.hue != rgblight_config.hue ||
|
||||||
|
rgblight_config_bak.sat != rgblight_config.sat ||
|
||||||
|
rgblight_config_bak.val != rgblight_config.val
|
||||||
|
) {
|
||||||
|
snprintf(led_buf, sizeof(led_buf) - 1, "LED%c:%2d hsv:%2d %2d %2d\n",
|
||||||
|
rgblight_config.enable ? '*' : '.', (uint8_t)rgblight_config.mode,
|
||||||
|
(uint8_t)(rgblight_config.hue / RGBLIGHT_HUE_STEP),
|
||||||
|
(uint8_t)(rgblight_config.sat / RGBLIGHT_SAT_STEP),
|
||||||
|
(uint8_t)(rgblight_config.val / RGBLIGHT_VAL_STEP));
|
||||||
|
rgblight_config_bak = rgblight_config;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void render_led_status(void) {
|
||||||
|
|
||||||
|
oled_write(led_buf, false);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
#ifdef OLED_DRIVER_ENABLE
|
||||||
|
|
||||||
|
void render_logo(void);
|
||||||
|
void render_lock_status(void);
|
||||||
|
void update_key_status(uint16_t keycode, keyrecord_t *record);
|
||||||
|
void render_key_status(void);
|
||||||
|
|
||||||
|
#define RENDER_LOGO() render_logo()
|
||||||
|
#define RENDER_LOCK_STATUS() render_lock_status()
|
||||||
|
#define UPDATE_KEY_STATUS(a, b) update_key_status(a, b)
|
||||||
|
#define RENDER_KEY_STATUS() render_key_status()
|
||||||
|
|
||||||
|
#ifdef RGBLIGHT_ENABLE
|
||||||
|
void update_led_status(void);
|
||||||
|
void render_led_status(void);
|
||||||
|
#define UPDATE_LED_STATUS() update_led_status()
|
||||||
|
#define RENDER_LED_STATUS() render_led_status()
|
||||||
|
#else
|
||||||
|
#define UPDATE_LED_STATUS()
|
||||||
|
#define RENDER_LED_STATUS()
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#define RENDER_LOGO()
|
||||||
|
#define RENDER_LOCK_STATUS()
|
||||||
|
#define UPDATE_KEY_STATUS(a, b)
|
||||||
|
#define RENDER_KEY_STATUS()
|
||||||
|
#define UPDATE_LED_STATUS()
|
||||||
|
#define RENDER_LED_STATUS()
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,213 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "Rhymestone",
|
||||||
|
"url": "https://github.com/marksard/Keyboards",
|
||||||
|
"maintainer": "marksard",
|
||||||
|
"width": 11,
|
||||||
|
"height": 4,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT_ortho_4x10": {
|
||||||
|
"layout": [
|
||||||
|
{
|
||||||
|
"label": "Q",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "W",
|
||||||
|
"x": 1,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "E",
|
||||||
|
"x": 2,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "R",
|
||||||
|
"x": 3,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "T",
|
||||||
|
"x": 4,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Y",
|
||||||
|
"x": 6,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "U",
|
||||||
|
"x": 7,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "I",
|
||||||
|
"x": 8,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "O",
|
||||||
|
"x": 9,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "P",
|
||||||
|
"x": 10,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "A",
|
||||||
|
"x": 0,
|
||||||
|
"y": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "S",
|
||||||
|
"x": 1,
|
||||||
|
"y": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "D",
|
||||||
|
"x": 2,
|
||||||
|
"y": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "F",
|
||||||
|
"x": 3,
|
||||||
|
"y": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "G",
|
||||||
|
"x": 4,
|
||||||
|
"y": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "H",
|
||||||
|
"x": 6,
|
||||||
|
"y": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "J",
|
||||||
|
"x": 7,
|
||||||
|
"y": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "K",
|
||||||
|
"x": 8,
|
||||||
|
"y": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "L",
|
||||||
|
"x": 9,
|
||||||
|
"y": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Enter",
|
||||||
|
"x": 10,
|
||||||
|
"y": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Z",
|
||||||
|
"x": 0,
|
||||||
|
"y": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "X",
|
||||||
|
"x": 1,
|
||||||
|
"y": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "C",
|
||||||
|
"x": 2,
|
||||||
|
"y": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "V",
|
||||||
|
"x": 3,
|
||||||
|
"y": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "B",
|
||||||
|
"x": 4,
|
||||||
|
"y": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "N",
|
||||||
|
"x": 6,
|
||||||
|
"y": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "M",
|
||||||
|
"x": 7,
|
||||||
|
"y": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": ",",
|
||||||
|
"x": 8,
|
||||||
|
"y": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": ".",
|
||||||
|
"x": 9,
|
||||||
|
"y": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "/",
|
||||||
|
"x": 10,
|
||||||
|
"y": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Ctrl",
|
||||||
|
"x": 0,
|
||||||
|
"y": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Win",
|
||||||
|
"x": 1,
|
||||||
|
"y": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Alt",
|
||||||
|
"x": 2,
|
||||||
|
"y": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Lower",
|
||||||
|
"x": 3,
|
||||||
|
"y": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "backspace",
|
||||||
|
"x": 4,
|
||||||
|
"y": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "space",
|
||||||
|
"x": 6,
|
||||||
|
"y": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Upper",
|
||||||
|
"x": 7,
|
||||||
|
"y": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Alt",
|
||||||
|
"x": 8,
|
||||||
|
"y": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "App",
|
||||||
|
"x": 9,
|
||||||
|
"y": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Ctrl",
|
||||||
|
"x": 10,
|
||||||
|
"y": 3
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
/* Copyright 2020 marksard
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
// place overrides here
|
||||||
|
|
||||||
|
// If you use the HashTwenty(alpha), please enable USE_HASHTWENTY
|
||||||
|
// #define USE_HASHTWENTY
|
||||||
|
|
||||||
|
// If you plug in the USB on the right side, please enable MASTER_RIGHT
|
||||||
|
// #define MASTER_RIGHT
|
||||||
|
|
||||||
|
#define OLED_FONT_H "keyboards/rhymestone/common/glcdfont.c"
|
||||||
@@ -0,0 +1,226 @@
|
|||||||
|
/* Copyright 2020 marksard
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
#include "./common/oled_helper.h"
|
||||||
|
|
||||||
|
enum layer_number {
|
||||||
|
_BASE,
|
||||||
|
_LOWER,
|
||||||
|
_RAISE,
|
||||||
|
_ADJUST,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum custom_keycodes {
|
||||||
|
LOWER = SAFE_RANGE,
|
||||||
|
RAISE,
|
||||||
|
ADJUST,
|
||||||
|
KANJI,
|
||||||
|
RGBRST
|
||||||
|
};
|
||||||
|
|
||||||
|
// Base layer mod tap
|
||||||
|
#define KC_Z_SF LSFT_T(KC_Z)
|
||||||
|
#define KC_SLSF RSFT_T(KC_SLSH)
|
||||||
|
|
||||||
|
// Lower layer mod tap
|
||||||
|
#define KC_11SF LSFT_T(KC_F11)
|
||||||
|
#define KC_GRSF RSFT_T(KC_GRV)
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[_BASE] = LAYOUT_ortho_4x10(
|
||||||
|
//,---------------------------------------------------------------------------------------------------.
|
||||||
|
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
|
||||||
|
//|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
|
||||||
|
KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT,
|
||||||
|
//|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
|
||||||
|
KC_Z_SF, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSF,
|
||||||
|
//`---------+---------+---------+---------+---------+---------+---------+---------+---------+---------'
|
||||||
|
KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_BSPC, KC_SPC, RAISE, KC_RGUI, KC_APP, KC_RCTL
|
||||||
|
//,---------------------------------------------------------------------------------------------------.
|
||||||
|
),
|
||||||
|
|
||||||
|
[_LOWER] = LAYOUT_ortho_4x10(
|
||||||
|
//,---------------------------------------------------------------------------------------------------.
|
||||||
|
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||||
|
//|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
|
||||||
|
KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, XXXXXXX, XXXXXXX, KC_SCLN, KC_QUOT,
|
||||||
|
//|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
|
||||||
|
KC_11SF, KC_F12, KC_ESC, KC_TAB, KANJI, KC_DEL, XXXXXXX, XXXXXXX, KC_RO, KC_GRSF,
|
||||||
|
//`---------+---------+---------+---------+---------+---------+---------+---------+---------+---------'
|
||||||
|
_______, _______, _______, _______, KC_DEL, _______, _______, _______, _______, _______
|
||||||
|
//,---------------------------------------------------------------------------------------------------.
|
||||||
|
),
|
||||||
|
|
||||||
|
[_RAISE] = LAYOUT_ortho_4x10(
|
||||||
|
//,---------------------------------------------------------------------------------------------------.
|
||||||
|
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
|
||||||
|
//|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
|
||||||
|
KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_RSFT,
|
||||||
|
//|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, KC_RO, KC_COMM, KC_DOT, KC_SLSF,
|
||||||
|
//`---------+---------+---------+---------+---------+---------+---------+---------+---------+---------'
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
//,---------------------------------------------------------------------------------------------------.
|
||||||
|
),
|
||||||
|
|
||||||
|
[_ADJUST] = LAYOUT_ortho_4x10(
|
||||||
|
//,---------------------------------------------------------------------------------------------------.
|
||||||
|
RESET, RGBRST, AG_NORM, AG_SWAP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_INS, KC_PSCR,
|
||||||
|
//|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
|
||||||
|
RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_NLCK,
|
||||||
|
//|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
|
||||||
|
RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, KC_BTN1, KC_BTN2, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
//`---------+---------+---------+---------+---------+---------+---------+---------+---------+---------'
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
//,---------------------------------------------------------------------------------------------------.
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
#define L_BASE _BASE
|
||||||
|
#define L_LOWER (1<<_LOWER)
|
||||||
|
#define L_RAISE (1<<_RAISE)
|
||||||
|
#define L_ADJUST (1<<_ADJUST)
|
||||||
|
#define L_ADJUST_TRI (L_ADJUST|L_RAISE|L_LOWER)
|
||||||
|
|
||||||
|
#ifdef OLED_DRIVER_ENABLE
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
uint8_t state;
|
||||||
|
char name[8];
|
||||||
|
}LAYER_DISPLAY_NAME;
|
||||||
|
|
||||||
|
#define LAYER_DISPLAY_MAX 5
|
||||||
|
const LAYER_DISPLAY_NAME layer_display_name[LAYER_DISPLAY_MAX] = {
|
||||||
|
{L_BASE, "Base"},
|
||||||
|
{L_BASE + 1, "Base"},
|
||||||
|
{L_LOWER, "Lower"},
|
||||||
|
{L_RAISE, "Raise"},
|
||||||
|
{L_ADJUST_TRI, "Adjust"}
|
||||||
|
};
|
||||||
|
|
||||||
|
static inline const char* get_leyer_status(void) {
|
||||||
|
|
||||||
|
for (uint8_t i = 0; i < LAYER_DISPLAY_MAX; ++i) {
|
||||||
|
if (layer_state == 0 && layer_display_name[i].state == default_layer_state) {
|
||||||
|
|
||||||
|
return layer_display_name[i].name;
|
||||||
|
} else if (layer_state != 0 && layer_display_name[i].state == layer_state) {
|
||||||
|
|
||||||
|
return layer_display_name[i].name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return "?";
|
||||||
|
}
|
||||||
|
|
||||||
|
static char layer_status_buf[24] = "Layer state ready.\n";
|
||||||
|
static inline void update_keymap_status(void) {
|
||||||
|
|
||||||
|
snprintf(layer_status_buf, sizeof(layer_status_buf) - 1, "OS:%s Layer:%s\n",
|
||||||
|
keymap_config.swap_lalt_lgui? "win" : "mac", get_leyer_status());
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void render_keymap_status(void) {
|
||||||
|
|
||||||
|
oled_write(layer_status_buf, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
#define UPDATE_KEYMAP_STATUS() update_keymap_status()
|
||||||
|
|
||||||
|
static inline void render_status(void) {
|
||||||
|
|
||||||
|
UPDATE_LED_STATUS();
|
||||||
|
RENDER_LED_STATUS();
|
||||||
|
render_keymap_status();
|
||||||
|
RENDER_LOCK_STATUS();
|
||||||
|
RENDER_KEY_STATUS();
|
||||||
|
}
|
||||||
|
|
||||||
|
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
|
||||||
|
|
||||||
|
if (is_keyboard_master())
|
||||||
|
return OLED_ROTATION_180; // flips the display 180 degrees if offhand
|
||||||
|
return rotation;
|
||||||
|
}
|
||||||
|
|
||||||
|
void oled_task_user(void) {
|
||||||
|
|
||||||
|
if (is_keyboard_master()) {
|
||||||
|
render_status();
|
||||||
|
} else {
|
||||||
|
render_logo();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#define UPDATE_KEYMAP_STATUS()
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
|
||||||
|
UPDATE_KEY_STATUS(keycode, record);
|
||||||
|
|
||||||
|
bool result = false;
|
||||||
|
switch (keycode) {
|
||||||
|
case LOWER:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
layer_on(_LOWER);
|
||||||
|
} else {
|
||||||
|
layer_off(_LOWER);
|
||||||
|
}
|
||||||
|
|
||||||
|
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||||
|
break;
|
||||||
|
case RAISE:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
layer_on(_RAISE);
|
||||||
|
} else {
|
||||||
|
layer_off(_RAISE);
|
||||||
|
}
|
||||||
|
|
||||||
|
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||||
|
break;
|
||||||
|
case KANJI:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
if (keymap_config.swap_lalt_lgui == false) {
|
||||||
|
register_code(KC_LANG2);
|
||||||
|
} else {
|
||||||
|
register_code16(A(KC_GRV));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
unregister_code(KC_LANG2);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
#ifdef RGBLIGHT_ENABLE
|
||||||
|
case RGBRST:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
eeconfig_update_rgblight_default();
|
||||||
|
rgblight_enable();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
default:
|
||||||
|
result = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
UPDATE_KEYMAP_STATUS();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||||
|
TAP_DANCE_ENABLE = no
|
||||||
|
|
||||||
|
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
||||||
|
OLED_DRIVER_ENABLE = no
|
||||||
|
LTO_ENABLE = yes
|
||||||
|
|
||||||
|
# If you want to change the display of OLED, you need to change here
|
||||||
|
SRC += ./common/oled_helper.c \
|
||||||
@@ -0,0 +1,76 @@
|
|||||||
|
/* Copyright 2020 marksard
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
enum layer_number {
|
||||||
|
_BASE,
|
||||||
|
_ADJUST,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum custom_keycodes {
|
||||||
|
LOWER = SAFE_RANGE,
|
||||||
|
ADJUST,
|
||||||
|
RGBRST
|
||||||
|
};
|
||||||
|
|
||||||
|
// Layer Mode aliases
|
||||||
|
#define KC_LTAD LT(_ADJUST, KC_NO)
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[_BASE] = LAYOUT_ortho_4x10(
|
||||||
|
//,---------------------------------------------------------------------------------------------------.
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
//|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
//|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
//`---------+---------+---------+---------+---------+---------+---------+---------+---------+---------'
|
||||||
|
KC_LTAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
|
||||||
|
//,---------------------------------------------------------------------------------------------------.
|
||||||
|
),
|
||||||
|
|
||||||
|
[_ADJUST] = LAYOUT_ortho_4x10(
|
||||||
|
//,---------------------------------------------------------------------------------------------------.
|
||||||
|
RESET, RGBRST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
//|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
|
||||||
|
RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
//|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
|
||||||
|
RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
//`---------+---------+---------+---------+---------+---------+---------+---------+---------+---------'
|
||||||
|
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
|
||||||
|
//,---------------------------------------------------------------------------------------------------.
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
|
||||||
|
bool result = false;
|
||||||
|
switch (keycode) {
|
||||||
|
#ifdef RGBLIGHT_ENABLE
|
||||||
|
case RGBRST:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
eeconfig_update_rgblight_default();
|
||||||
|
rgblight_enable();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
default:
|
||||||
|
result = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
# The switch tester keymap for Rhymestone
|
||||||
|
|
||||||
|
This keymap is Switch Tester and RGB_MATRIX Light demo.
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
MOUSEKEY_ENABLE = no # Mouse keys
|
||||||
|
TAP_DANCE_ENABLE = no
|
||||||
|
|
||||||
|
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||||
|
OLED_DRIVER_ENABLE = no
|
||||||
|
LTO_ENABLE = yes
|
||||||
|
RGB_MATRIX_ENABLE = WS2812
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
# Rhymestone
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
This is 40 keys split Ortholinear keyboard.
|
||||||
|
|
||||||
|
* Keyboard Maintainer: [marksard](https://github.com/marksard)
|
||||||
|
* Hardware Supported: Rhymestone PCB (with Pro Micro)
|
||||||
|
* Hardware Availability: [marksard keyboards](https://github.com/marksard/Keyboards/blob/master/rhymestone/)
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make marksard/rhymestone: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).
|
||||||
|
|
||||||
|
[Build guide](https://github.com/marksard/Keyboards/blob/master/rhymestone/documents/rhymestone_buildguide.md)
|
||||||
|
[Firmware](https://github.com/marksard/qmk_firmware/tree/my_customize/keyboards/rhymestone)
|
||||||
@@ -0,0 +1,152 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 marksard
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "config_common.h"
|
||||||
|
|
||||||
|
/* USB Device descriptor parameter */
|
||||||
|
#define VENDOR_ID 0xFEED
|
||||||
|
#define PRODUCT_ID 0xDFA1
|
||||||
|
#define DEVICE_VER 0x0020
|
||||||
|
#define MANUFACTURER marksard
|
||||||
|
#define PRODUCT Rhymestone
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 8
|
||||||
|
#define MATRIX_COLS 5
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Keyboard Matrix Assignments
|
||||||
|
*
|
||||||
|
* Change this to how you wired your keyboard
|
||||||
|
* COLS: AVR pins used for columns, left to right
|
||||||
|
* ROWS: AVR pins used for rows, top to bottom
|
||||||
|
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
|
||||||
|
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#define MATRIX_ROW_PINS { F4, F5, F6, F7 }
|
||||||
|
#define MATRIX_COL_PINS { D4, C6, D7, E6, B4 }
|
||||||
|
#define UNUSED_PINS
|
||||||
|
|
||||||
|
/* COL2ROW, ROW2COL*/
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
|
||||||
|
*/
|
||||||
|
#define SOFT_SERIAL_PIN D2 // or D1, D2, D3, E6
|
||||||
|
|
||||||
|
// #define BACKLIGHT_PIN B7
|
||||||
|
// #define BACKLIGHT_BREATHING
|
||||||
|
// #define BACKLIGHT_LEVELS 3
|
||||||
|
|
||||||
|
#define RGB_DI_PIN D3
|
||||||
|
|
||||||
|
#ifdef RGBLIGHT_ENABLE
|
||||||
|
// #ifdef RGB_DI_PIN
|
||||||
|
#define RGBLED_NUM 40
|
||||||
|
#define RGBLED_SPLIT {20, 20}
|
||||||
|
#define RGBLIGHT_HUE_STEP 8
|
||||||
|
#define RGBLIGHT_SAT_STEP 8
|
||||||
|
#define RGBLIGHT_VAL_STEP 8
|
||||||
|
#define RGBLIGHT_LIMIT_VAL 150 /* The maximum brightness level */
|
||||||
|
#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
|
||||||
|
/*== all animations enable ==*/
|
||||||
|
// #define RGBLIGHT_ANIMATIONS
|
||||||
|
/*== or choose animations ==*/
|
||||||
|
// #define RGBLIGHT_EFFECT_BREATHING
|
||||||
|
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
|
||||||
|
#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
|
||||||
|
// #define RGBLIGHT_EFFECT_SNAKE
|
||||||
|
#define RGBLIGHT_EFFECT_KNIGHT
|
||||||
|
// #define RGBLIGHT_EFFECT_CHRISTMAS
|
||||||
|
#define RGBLIGHT_EFFECT_STATIC_GRADIENT
|
||||||
|
// #define RGBLIGHT_EFFECT_RGB_TEST
|
||||||
|
// #define RGBLIGHT_EFFECT_ALTERNATING
|
||||||
|
/*== customize breathing effect ==*/
|
||||||
|
/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
|
||||||
|
#define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
|
||||||
|
/*==== use exp() and sin() ====*/
|
||||||
|
#define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
|
||||||
|
#define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef RGB_MATRIX_ENABLE
|
||||||
|
#define RGBLED_NUM 40 // Number of LEDs
|
||||||
|
#define DRIVER_LED_TOTAL RGBLED_NUM
|
||||||
|
#define RGB_MATRIX_KEYPRESSES // reacts to keypresses
|
||||||
|
// #define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
|
||||||
|
// #define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
|
||||||
|
#define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
|
||||||
|
// #define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
|
||||||
|
// #define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
|
||||||
|
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
|
||||||
|
#define RGB_MATRIX_HUE_STEP 8
|
||||||
|
#define RGB_MATRIX_SAT_STEP 8
|
||||||
|
#define RGB_MATRIX_VAL_STEP 8
|
||||||
|
#define RGB_MATRIX_SPD_STEP 10
|
||||||
|
|
||||||
|
// #define DISABLE_RGB_MATRIX_ALPHAS_MODS
|
||||||
|
// #define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
|
||||||
|
// #define DISABLE_RGB_MATRIX_BREATHING
|
||||||
|
// #define DISABLE_RGB_MATRIX_BAND_SAT
|
||||||
|
// #define DISABLE_RGB_MATRIX_BAND_VAL
|
||||||
|
// #define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
|
||||||
|
// #define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
|
||||||
|
// #define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
|
||||||
|
// #define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL
|
||||||
|
// #define DISABLE_RGB_MATRIX_CYCLE_ALL
|
||||||
|
// #define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
|
||||||
|
// #define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN
|
||||||
|
// #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN
|
||||||
|
// #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
|
||||||
|
// #define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
|
||||||
|
// #define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL
|
||||||
|
// #define DISABLE_RGB_MATRIX_CYCLE_SPIRAL
|
||||||
|
// #define DISABLE_RGB_MATRIX_DUAL_BEACON
|
||||||
|
// #define DISABLE_RGB_MATRIX_RAINBOW_BEACON
|
||||||
|
// #define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS
|
||||||
|
// #define DISABLE_RGB_MATRIX_RAINDROPS
|
||||||
|
// #define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
|
||||||
|
|
||||||
|
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
|
||||||
|
// #define DISABLE_RGB_MATRIX_TYPING_HEATMAP
|
||||||
|
// #define DISABLE_RGB_MATRIX_DIGITAL_RAIN
|
||||||
|
|
||||||
|
// #define RGB_MATRIX_KEYPRESSES // reacts to keypresses
|
||||||
|
|
||||||
|
// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
|
||||||
|
// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE
|
||||||
|
// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
|
||||||
|
// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
|
||||||
|
// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
|
||||||
|
// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
|
||||||
|
// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
|
||||||
|
// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
|
||||||
|
|
||||||
|
// #define DISABLE_RGB_MATRIX_SPLASH
|
||||||
|
// #define DISABLE_RGB_MATRIX_MULTISPLASH
|
||||||
|
// #define DISABLE_RGB_MATRIX_SOLID_SPLASH
|
||||||
|
// #define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
|
||||||
|
|
||||||
|
#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_TYPING_HEATMAP
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||||
|
#define DEBOUNCE 5
|
||||||
@@ -0,0 +1,108 @@
|
|||||||
|
/* Copyright 2020 marksard
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "rev1.h"
|
||||||
|
|
||||||
|
// Optional override functions below.
|
||||||
|
// You can leave any or all of these undefined.
|
||||||
|
// These are only required if you want to perform custom actions.
|
||||||
|
|
||||||
|
#ifdef RGB_MATRIX_ENABLE
|
||||||
|
led_config_t g_led_config = { {
|
||||||
|
{ 10, 11, 12, 13, 0 },
|
||||||
|
{ 9, 18, 19, 14, 1 },
|
||||||
|
{ 8, 17, 16, 15, 2 },
|
||||||
|
{ 7, 6, 5, 4, 3 },
|
||||||
|
{ 30, 31, 32, 33, 20 },
|
||||||
|
{ 29, 38, 39, 34, 21 },
|
||||||
|
{ 28, 37, 36, 35, 22 },
|
||||||
|
{ 27, 26, 25, 24, 23 }
|
||||||
|
}, {
|
||||||
|
{ 100, 0 }, { 100, 21 }, { 100, 43 }, { 100, 64 },
|
||||||
|
{ 75, 64 }, { 50, 64 }, { 25, 64 }, { 0, 64 },
|
||||||
|
{ 0, 43 }, { 0, 21 }, { 0, 0 },
|
||||||
|
{ 25, 0 }, { 50, 0 }, { 75, 0 },
|
||||||
|
{ 75, 21 }, { 75, 43 },
|
||||||
|
{ 50, 43 }, { 25, 43 },
|
||||||
|
{ 25, 21 }, { 50, 21 },
|
||||||
|
{ 125, 0 }, { 125, 21 }, { 125, 43 }, { 125, 64 },
|
||||||
|
{ 150, 64 }, { 175, 64 }, { 200, 64 }, { 225, 64 },
|
||||||
|
{ 225, 43 }, { 225, 21 }, { 225, 0 },
|
||||||
|
{ 200, 0 }, { 175, 0 }, { 150, 0 },
|
||||||
|
{ 150, 21 }, { 150, 43 },
|
||||||
|
{ 175, 43 }, { 200, 43 },
|
||||||
|
{ 200, 21 }, { 150, 21 }
|
||||||
|
}, {
|
||||||
|
4, 4, 4, 1,
|
||||||
|
1, 1, 1, 1,
|
||||||
|
4, 4, 4, 4,
|
||||||
|
4, 4, 4, 4,
|
||||||
|
4, 4, 4, 4,
|
||||||
|
4, 4, 4, 1,
|
||||||
|
1, 1, 1, 1,
|
||||||
|
4, 4, 4, 4,
|
||||||
|
4, 4, 4, 4,
|
||||||
|
4, 4, 4, 4
|
||||||
|
} };
|
||||||
|
#endif
|
||||||
|
|
||||||
|
__attribute__((weak))
|
||||||
|
void matrix_init_user(void) {}
|
||||||
|
|
||||||
|
void matrix_init_kb(void) {
|
||||||
|
|
||||||
|
#ifdef RGB_MATRIX_ENABLE
|
||||||
|
// if (!is_keyboard_master()) {
|
||||||
|
// g_led_config = (led_config_t){ {
|
||||||
|
// { 30, 31, 32, 33, 20 },
|
||||||
|
// { 29, 38, 39, 34, 21 },
|
||||||
|
// { 28, 37, 36, 35, 22 },
|
||||||
|
// { 27, 26, 25, 24, 23 },
|
||||||
|
// { 10, 11, 12, 13, 0 },
|
||||||
|
// { 9, 18, 19, 14, 1 },
|
||||||
|
// { 8, 17, 16, 15, 2 },
|
||||||
|
// { 7, 6, 5, 4, 3 }
|
||||||
|
// }, {
|
||||||
|
// { 125, 0 }, { 125, 21 }, { 125, 43 }, { 125, 64 },
|
||||||
|
// { 150, 64 }, { 175, 64 }, { 200, 64 }, { 225, 64 },
|
||||||
|
// { 225, 43 }, { 225, 21 }, { 225, 0 },
|
||||||
|
// { 200, 0 }, { 175, 0 }, { 150, 0 },
|
||||||
|
// { 150, 21 }, { 150, 43 },
|
||||||
|
// { 175, 43 }, { 200, 43 },
|
||||||
|
// { 200, 21 }, { 150, 21 },
|
||||||
|
// { 100, 0 }, { 100, 21 }, { 100, 43 }, { 100, 64 },
|
||||||
|
// { 75, 64 }, { 50, 64 }, { 25, 64 }, { 0, 64 },
|
||||||
|
// { 0, 43 }, { 0, 21 }, { 0, 0 },
|
||||||
|
// { 25, 0 }, { 50, 0 }, { 75, 0 },
|
||||||
|
// { 75, 21 }, { 75, 43 },
|
||||||
|
// { 50, 43 }, { 25, 43 },
|
||||||
|
// { 25, 21 }, { 50, 21 }
|
||||||
|
// }, {
|
||||||
|
// 4, 4, 4, 1,
|
||||||
|
// 1, 1, 1, 1,
|
||||||
|
// 4, 4, 4, 4,
|
||||||
|
// 4, 4, 4, 4,
|
||||||
|
// 4, 4, 4, 4,
|
||||||
|
// 4, 4, 4, 1,
|
||||||
|
// 1, 1, 1, 1,
|
||||||
|
// 4, 4, 4, 4,
|
||||||
|
// 4, 4, 4, 4,
|
||||||
|
// 4, 4, 4, 4
|
||||||
|
// } };
|
||||||
|
// }
|
||||||
|
#endif
|
||||||
|
matrix_init_user();
|
||||||
|
}
|
||||||
@@ -0,0 +1,89 @@
|
|||||||
|
/* Copyright 2020 marksard
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
/* This is a shortcut to help you visually see your layout.
|
||||||
|
*
|
||||||
|
* The first section contains all of the arguments representing the physical
|
||||||
|
* layout of the board and position of the keys.
|
||||||
|
*
|
||||||
|
* The second converts the arguments into a two-dimensional array which
|
||||||
|
* represents the switch matrix.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef FLIP_HALF
|
||||||
|
// Standard Keymap
|
||||||
|
// (TRRS jack on the left half is to the right, TRRS jack on the right half is to the left)
|
||||||
|
#define LAYOUT_ortho_4x10( \
|
||||||
|
L00, L01, L02, L03, L04, R00, R01, R02, R03, R04, \
|
||||||
|
L10, L11, L12, L13, L14, R10, R11, R12, R13, R14, \
|
||||||
|
L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, \
|
||||||
|
L30, L31, L32, L33, L34, R30, R31, R32, R33, R34 \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{ L00, L01, L02, L03, L04 }, \
|
||||||
|
{ L10, L11, L12, L13, L14 }, \
|
||||||
|
{ L20, L21, L22, L23, L24 }, \
|
||||||
|
{ L30, L31, L32, L33, L34 }, \
|
||||||
|
{ R04, R03, R02, R01, R00 }, \
|
||||||
|
{ R14, R13, R12, R11, R10 }, \
|
||||||
|
{ R24, R23, R22, R21, R20 }, \
|
||||||
|
{ R34, R33, R32, R31, R30 }, \
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
// Keymap with right side flipped
|
||||||
|
// (TRRS jack on both halves are to the right)
|
||||||
|
#define LAYOUT_ortho_4x10( \
|
||||||
|
L00, L01, L02, L03, L04, R00, R01, R02, R03, R04, \
|
||||||
|
L10, L11, L12, L13, L14, R10, R11, R12, R13, R14, \
|
||||||
|
L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, \
|
||||||
|
L30, L31, L32, L33, L34, R30, R31, R32, R33, R34 \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{ L04, L03, L02, L01, L00 }, \
|
||||||
|
{ L14, L13, L12, L11, L10 }, \
|
||||||
|
{ L24, L23, L22, L21, L20 }, \
|
||||||
|
{ L34, L33, L32, L31, L30 }, \
|
||||||
|
{ R04, R03, R02, R01, R00 }, \
|
||||||
|
{ R14, R13, R12, R11, R10 }, \
|
||||||
|
{ R24, R23, R22, R21, R20 }, \
|
||||||
|
{ R34, R33, R32, R31, R30 }, \
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef USE_HASHTWENTY // The HashTwenty is Alpha version of The Rhymestone
|
||||||
|
#undef LAYOUT_ortho_4x10
|
||||||
|
// HashTwenty layout
|
||||||
|
#define LAYOUT_ortho_4x10( \
|
||||||
|
L00, L01, L02, L03, L04, R00, R01, R02, R03, R04, \
|
||||||
|
L10, L11, L12, L13, L14, R10, R11, R12, R13, R14, \
|
||||||
|
L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, \
|
||||||
|
L30, L31, L32, L33, L34, R30, R31, R32, R33, R34 \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{ L04, L03, L02, L01, L00 }, \
|
||||||
|
{ L14, L13, L12, L11, L10 }, \
|
||||||
|
{ L24, L23, L22, L21, L20 }, \
|
||||||
|
{ L34, L33, L32, L31, L30 }, \
|
||||||
|
{ R00, R01, R02, R03, R04 }, \
|
||||||
|
{ R10, R11, R12, R13, R14 }, \
|
||||||
|
{ R20, R21, R22, R23, R24 }, \
|
||||||
|
{ R30, R31, R32, R33, R34 }, \
|
||||||
|
}
|
||||||
|
#endif
|
||||||
Whitespace-only changes.
@@ -0,0 +1,27 @@
|
|||||||
|
# MCU name
|
||||||
|
MCU = atmega32u4
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
BOOTLOADER = caterina
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
||||||
|
MOUSEKEY_ENABLE = no # Mouse keys
|
||||||
|
EXTRAKEY_ENABLE = no # Audio control and System control
|
||||||
|
CONSOLE_ENABLE = no # Console for debug
|
||||||
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
|
NKRO_ENABLE = yes # USB Nkey Rollover
|
||||||
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
|
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||||
|
AUDIO_ENABLE = no # Audio output
|
||||||
|
SPLIT_KEYBOARD = yes
|
||||||
|
|
||||||
|
DEFAULT_FOLDER = marksard/rhymestone/rev1
|
||||||
|
|
||||||
|
LAYOUTS = ortho_4x10
|
||||||
Reference in new issue
Block a user