Compare commits
42 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a0bf235644 | ||
|
|
f420741f9b | ||
|
|
0b7b74f56a | ||
|
|
80b2b710da | ||
|
|
3814dacf27 | ||
|
|
7576f6162e | ||
|
|
e8a02afc8c | ||
|
|
357a888d80 | ||
|
|
7f5656996c | ||
|
|
b008a9afe6 | ||
|
|
d8e3294aea | ||
|
|
a8d073368f | ||
|
|
44d93285d1 | ||
|
|
8e0af2f5ba | ||
|
|
da76734fe0 | ||
|
|
c029c5b187 | ||
|
|
294cfd8d33 | ||
|
|
622e94c6cd | ||
|
|
ba7f52aaeb | ||
|
|
307013a2f8 | ||
|
|
f68abbf6c8 | ||
|
|
897c4cd175 | ||
|
|
1f2807c2de | ||
|
|
b160913309 | ||
|
|
867fded980 | ||
|
|
d1730ec760 | ||
|
|
4057d44989 | ||
|
|
2bfcb6bfc5 | ||
|
|
1f42071238 | ||
|
|
400423d10b | ||
|
|
54ef02dead | ||
|
|
044b4aaf01 | ||
|
|
ccb4b81b3f | ||
|
|
e269977387 | ||
|
|
0cb4da2c74 | ||
|
|
9b0c734733 | ||
|
|
fffee6ade1 | ||
|
|
97ddc7ea18 | ||
|
|
3afd2d81b8 | ||
|
|
2543bad250 | ||
|
|
a056d94561 | ||
|
|
573d1fbb92 |
@@ -145,6 +145,7 @@
|
||||
|
||||
* Hardware Platform Development
|
||||
* Arm/ChibiOS
|
||||
* [Selecting an MCU](platformdev_selecting_arm_mcu.md)
|
||||
* [Early initialization](platformdev_chibios_earlyinit.md)
|
||||
|
||||
* QMK Reference
|
||||
|
||||
@@ -5,7 +5,7 @@ If you've ever used Vim, you know what a Leader key is. If not, you're about to
|
||||
That's what `KC_LEAD` does. Here's an example:
|
||||
|
||||
1. Pick a key on your keyboard you want to use as the Leader key. Assign it the keycode `KC_LEAD`. This key would be dedicated just for this -- it's a single action key, can't be used for anything else.
|
||||
2. Include the line `#define LEADER_TIMEOUT 300` in your `config.h`. This sets the timeout for the `KC_LEAD` key. Specifically, when you press the `KC_LEAD` key, you only have a certain amount of time to complete the Leader Key sequence. The `300` here sets that to 300ms, and you can increase this value to give you more time to hit the sequence. But any keys pressed during this timeout are intercepted and not sent, so you may want to keep this value low. .
|
||||
2. Include the line `#define LEADER_TIMEOUT 300` in your `config.h`. This sets the timeout for the `KC_LEAD` key. Specifically, when you press the `KC_LEAD` key, you only have a certain amount of time to complete the Leader Key sequence. The `300` here sets that to 300ms, and you can increase this value to give you more time to hit the sequence. But any keys pressed during this timeout are intercepted and not sent, so you may want to keep this value low.
|
||||
* By default, this timeout is how long after pressing `KC_LEAD` to complete your entire sequence. This may be very low for some people. So you may want to increase this timeout. Optionally, you may want to enable the `LEADER_PER_KEY_TIMING` option, which resets the timeout after each key is tapped. This allows you to maintain a low value here, but still be able to use the longer sequences. To enable this option, add `#define LEADER_PER_KEY_TIMING` to your `config.h`.
|
||||
3. Within your `matrix_scan_user` function, add something like this:
|
||||
|
||||
|
||||
@@ -21,7 +21,11 @@ Keep in mind that a report_mouse_t (here "mouseReport") has the following proper
|
||||
* `mouseReport.h` - this is a signed int from -127 to 127 (not 128, this is defined in USB HID spec) representing horizontal scrolling (+ right, - left).
|
||||
* `mouseReport.buttons` - this is a uint8_t in which the last 5 bits are used. These bits represent the mouse button state - bit 3 is mouse button 5, and bit 7 is mouse button 1.
|
||||
|
||||
When the mouse report is sent, the x, y, v, and h values are set to 0 (this is done in "pointing_device_send()", which can be overridden to avoid this behavior). This way, button states persist, but movement will only occur once. For further customization, both `pointing_device_init` and `pointing_device_task` can be overridden.
|
||||
Once you have made the necessary changes to the mouse report, you need to send it:
|
||||
|
||||
* `pointing_device_send()` - Sends the mouse report to the host and zeroes out the report.
|
||||
|
||||
When the mouse report is sent, the x, y, v, and h values are set to 0 (this is done in `pointing_device_send()`, which can be overridden to avoid this behavior). This way, button states persist, but movement will only occur once. For further customization, both `pointing_device_init` and `pointing_device_task` can be overridden.
|
||||
|
||||
In the following example, a custom key is used to click the mouse and scroll 127 units vertically and horizontally, then undo all of that when released - because that's a totally useful function. Listen, this is an example:
|
||||
|
||||
@@ -38,6 +42,7 @@ case MS_SPECIAL:
|
||||
currentReport.buttons &= ~MOUSE_BTN1;
|
||||
}
|
||||
pointing_device_set_report(currentReport);
|
||||
pointing_device_send();
|
||||
break;
|
||||
```
|
||||
|
||||
|
||||
@@ -111,7 +111,7 @@ This is ideal for when you want ensure everything compiles successfully when pre
|
||||
|
||||
## Examples
|
||||
|
||||
For a brief example, checkout [`/users/_example/`](https://github.com/qmk/qmk_firmware/tree/master/users/drashna).
|
||||
For a brief example, checkout [`/users/_example/`](https://github.com/qmk/qmk_firmware/tree/master/users/_example).
|
||||
For a more complicated example, checkout [`/users/drashna/`](https://github.com/qmk/qmk_firmware/tree/master/users/drashna)'s userspace.
|
||||
|
||||
|
||||
|
||||
232
docs/ja/feature_split_keyboard.md
Normal file
232
docs/ja/feature_split_keyboard.md
Normal file
@@ -0,0 +1,232 @@
|
||||
# 分割キーボード
|
||||
|
||||
<!---
|
||||
original document:0.9.5:docs/feature_split_keyboard.md
|
||||
git diff 0.9.5 HEAD -- docs/feature_split_keyboard.md | cat
|
||||
-->
|
||||
|
||||
QMK ファームウェアリポジトリの多くのキーボードは、"分割"キーボードです。それらは2つのコントローラを使います — 1つは USB に接続し、もう1つは TRRS または同様のケーブルを介してシリアルまたは I<sup>2</sup>C 接続で接続します。
|
||||
|
||||
分割キーボードには多くの利点がありますが、有効にするには追加の作業が必要です。
|
||||
|
||||
QMK ファームウェアには、任意のキーボードで使用可能な一般的な実装と、多くのキーボード固有の実装があります。
|
||||
|
||||
このため、主に Let's Split とその他のキーボードで使われる一般的な実装について説明します。
|
||||
|
||||
!> ARM はまだ完全には分割キーボードをサポートしておらず、様々な制限があります。進捗はしていますが、機能の100%にはまだ達していません。
|
||||
|
||||
|
||||
## 互換性の概要
|
||||
|
||||
| Transport | AVR | ARM |
|
||||
|------------------------------|--------------------|--------------------|
|
||||
| ['serial'](serial_driver.md) | :heavy_check_mark: | :white_check_mark: <sup>1</sup> |
|
||||
| I2C | :heavy_check_mark: | |
|
||||
|
||||
注意:
|
||||
|
||||
1. ハードウェアとソフトウェアの両方の制限は、[ドライバーのドキュメント](serial_driver.md)の中で説明されます。
|
||||
|
||||
## ハードウェア設定
|
||||
|
||||
2つの Pro Micro 互換のコントローラを使っており、キーボードの左右を接続するために TRRS ジャックを使っていることを前提とします。
|
||||
|
||||
### ハードウェア要件
|
||||
|
||||
左右それぞれのキーボードマトリックスのためのダイオードとスイッチとは別に、2個の TRRS ソケットと 1本の TRRS ケーブルが必要です。
|
||||
|
||||
あるいは、少なくとも3本のワイヤがあるケーブルとソケットを使うことができます。
|
||||
|
||||
キーボードの左右間で通信するために I<sup>2</sup>C を使いたい場合は、少なくとも4本のワイヤを備えたケーブルと 2個の 4.7kΩ プルアップ抵抗が必要です。
|
||||
|
||||
#### 考慮事項
|
||||
|
||||
最も一般的に使われる接続は、TRRS ケーブルとジャックです。これらは4本のワイヤを提供し、分割キーボードに非常に有用で、簡単に見つけることができます。
|
||||
|
||||
ただし、ワイヤのうちの1本が Vcc を供給するため、キーボードはホットプラグ不可能です。TRRS ケーブルを抜き差しする前に、必ずキーボードのUSB接続をはずす必要があります。そうしなければ、コントローラを短絡させたり、もっと悪いことが起こるかもしれません。
|
||||
|
||||
別のオプションは電話ケーブルを使うことです (例えば、旧式の RJ-11/RJ-14 ケーブル)。実際に4本のワイヤ/レーンをサポートするものを使うようにしてください。
|
||||
|
||||
ただし、USB ケーブル、SATA ケーブル、そして単に4本の電線でもコントローラ間の通信に使用できることがわかっています。
|
||||
|
||||
!> コントローラ間の通信に USB ケーブルを使っても問題ありませんが、コネクタは通常の USB 接続と間違えられるかもしれず、配線方法によってはキーボードが短絡する可能性があります。このため、分割キーボードの接続のためにはお勧めできません。
|
||||
|
||||
### シリアル配線
|
||||
|
||||
2つの Pro Micro 間で GND、Vcc、D0 (別名 PDO あるいは pin 3) を TRS/TRRS ケーブルの3本のワイヤで接続します。
|
||||
|
||||
?> ここで使われるピンは実際には以下の `SOFT_SERIAL_PIN` によって設定されることに注意してください。
|
||||
|
||||

|
||||
|
||||
### I<sup>2</sup>C 配線
|
||||
|
||||
2つの Pro Micro 間で GND、Vcc、さらに SCL と SDA (それぞれ 別名 PD0/ピン3 および PD1/ピン2) を TRRS ケーブルの4本のワイヤで接続します。
|
||||
|
||||
プルアップ抵抗はキーボードの左右どちら側にも配置することができます。もし各側を単独で使いたい場合は、4つの抵抗を使い、両側にプルアップ抵抗を配置することもできます。
|
||||
|
||||

|
||||
|
||||
## ファームウェア設定
|
||||
|
||||
分割キーボード機能を有効にするには、以下を `rules.mk` に追加してください:
|
||||
|
||||
```make
|
||||
SPLIT_KEYBOARD = yes
|
||||
```
|
||||
|
||||
カスタムトランスポート (通信メソッド)を使っている場合は、以下を追加する必要もあります:
|
||||
|
||||
```make
|
||||
SPLIT_TRANSPORT = custom
|
||||
```
|
||||
|
||||
### 左右の設定
|
||||
|
||||
デフォルトでは、ファームウェアはどちら側がどちらであるかを認識しません; 決定するには幾つかの助けが必要です。これを行うには幾つかの方法があり、以下に優先順に列挙します。
|
||||
|
||||
#### ピンによる左右の設定
|
||||
|
||||
左右を決定するためにコントローラ上のピンを読むようにファームウェアを設定することができます。これを行うには、以下を `config.h` ファイルに追加します:
|
||||
|
||||
```c
|
||||
#define SPLIT_HAND_PIN B7
|
||||
```
|
||||
|
||||
これは指定されたピンを読み込みます。high の場合、コントローラはそれを左側だと仮定し、low の場合、それは右側であると仮定します。
|
||||
|
||||
#### EEPROM による左右の設定
|
||||
|
||||
このメソッドは永続ストレージ(`EEPROM`)のフラグを設定することで、キーボードの左右を設定します。これはコントローラが最初に起動する時にチェックされ、キーボードのどちら側であるかとキーボードのレイアウトの向きを決定します。
|
||||
|
||||
|
||||
このメソッドを有効にするには、以下を `config.h` ファイルに追加します:
|
||||
|
||||
```c
|
||||
#define EE_HANDS
|
||||
```
|
||||
|
||||
ただし、各コントローラに正しい側の EEPROM ファイルを書き込む必要があります。これを手動で行うこともできますが、ファームウェアを書き込む時にこれを行う avrdude および dfu のターゲットが存在します。
|
||||
|
||||
* `:avrdude-split-left`
|
||||
* `:avrdude-split-right`
|
||||
* `:dfu-split-left`
|
||||
* `:dfu-split-right`
|
||||
* `:dfu-util-split-left`
|
||||
* `:dfu-util-split-right`
|
||||
|
||||
この設定は、`EEP_RST` キーや `eeconfig_init()` 関数を使って EEPROM を再初期化する時には変更されません。ただし、ファームウェアの組み込みオプション以外で EEPROM をリセット([QMK Toolbox]() の "Reset EEPROM" ボタンの動作のように、`EEPROM` を上書きするファイルを書きこむなど)した場合、`EEPROM` ファイルを再書き込みする必要があります。
|
||||
|
||||
`EEPROM` ファイルは、QMK ファームウェアのリポジトリ内の[ここ](https://github.com/qmk/qmk_firmware/tree/master/quantum/split_common)にあります。
|
||||
|
||||
#### `#define` による左右の設定
|
||||
|
||||
コンパイル時に左右を設定することができます。これは以下を `config.h` ファイルに追加することで行うことができます:
|
||||
|
||||
```c
|
||||
#define MASTER_RIGHT
|
||||
```
|
||||
|
||||
あるいは
|
||||
|
||||
```c
|
||||
#define MASTER_LEFT
|
||||
```
|
||||
|
||||
どちらも定義されていない場合、左右のデフォルトは `MASTER_LEFT` になります。
|
||||
|
||||
|
||||
### 通信オプション
|
||||
|
||||
全ての分割キーボードが同一であるとは限らないため、`config.h` ファイル内で設定することができる多くの追加のオプションがあります。
|
||||
|
||||
```c
|
||||
#define USE_I2C
|
||||
```
|
||||
|
||||
これは分割キーボードの I<sup>2</sup>C サポートを有効にします。これは厳密には通信用ではありませんが、OLED あるいは I<sup>2</sup>C ベースのデバイスに使うことができます。
|
||||
|
||||
```c
|
||||
#define SOFT_SERIAL_PIN D0
|
||||
```
|
||||
|
||||
これはシリアル通信用に使われるピンを設定します。シリアルを使っていない場合は、これを定義する必要はありません。
|
||||
|
||||
ただし、キーボード上でシリアルおよび I<sup>2</sup>C を使っている場合は、これを設定し、D0 および D1 以外の値に設定する必要があります (これらは I<sup>2</sup>C 通信のために使われます)。
|
||||
|
||||
```c
|
||||
#define SELECT_SOFT_SERIAL_SPEED {#}`
|
||||
```
|
||||
|
||||
シリアル通信に問題がある場合は、この値を変更して、シリアル用の通信速度を制御することができます。デフォルトは1で、可能な値は以下の通りです:
|
||||
|
||||
* **`0`**: 約189kbps (実験用途専用)
|
||||
* **`1`**: 約137kbps (デフォルト)
|
||||
* **`2`**: 約75kbps
|
||||
* **`3`**: 約39kbps
|
||||
* **`4`**: 約26kbps
|
||||
* **`5`**: 約20kbps
|
||||
|
||||
### ハードウェア設定オプション
|
||||
|
||||
ハードウェアのセットアップ方法に基づいて、設定する必要のある設定が幾つかあります。
|
||||
|
||||
```c
|
||||
#define MATRIX_ROW_PINS_RIGHT { <row pins> }
|
||||
#define MATRIX_COL_PINS_RIGHT { <col pins> }
|
||||
```
|
||||
|
||||
これにより、右側のマトリックスに異なるピンのセットを指定することができます。これは、左右の形が違うキーボード (Keebio の Quefrency など)で、左右で別の構成が必要な場合に便利です。
|
||||
|
||||
```c
|
||||
#define DIRECT_PINS_RIGHT { { F1, F0, B0, C7 }, { F4, F5, F6, F7 } }
|
||||
```
|
||||
|
||||
これにより右側のための異なる直接ピンのセットを指定することができます。
|
||||
|
||||
```c
|
||||
#define ENCODERS_PAD_A_RIGHT { encoder1a, encoder2a }
|
||||
#define ENCODERS_PAD_B_RIGHT { encoder1b, encoder2b }
|
||||
```
|
||||
|
||||
これにより右側のための異なるエンコーダピンのセットを指定することができます。
|
||||
|
||||
```c
|
||||
#define RGBLIGHT_SPLIT
|
||||
```
|
||||
|
||||
このオプションは、分割キーボードのコントローラ間で RGB ライトモードの同期を有効にします。これはコントローラに直接配線されている RGB LED を持つキーボード用です (つまり、それらは TRRS ケーブルで "追加データ"オプションを使っていません)。
|
||||
|
||||
```c
|
||||
#define RGBLED_SPLIT { 6, 6 }
|
||||
```
|
||||
|
||||
これは各コントローラに直接接続されている LED の数を設定します。最初の数は左側、2番目の数は右側です。
|
||||
|
||||
?> この設定は `RGBLIGHT_SPLIT` が有効になっていることを意味し、有効になっていない場合は強制的に有効にします。
|
||||
|
||||
|
||||
```c
|
||||
#define SPLIT_USB_DETECT
|
||||
```
|
||||
このオプションは、スタートアップの挙動を変更して、マスタ/スレーブの決定時にアクティブな USB 接続を検出します。このオプションがタイムアウトになった場合、その片側はスレーブと見なされます。これは ARM のデフォルトの挙動で、AVR Teensy ボードに必要です (ハードウェアの制限のため)。
|
||||
|
||||
?> この設定はバッテリパックを使ったデモの機能を停止します。
|
||||
|
||||
```c
|
||||
#define SPLIT_USB_TIMEOUT 2000
|
||||
```
|
||||
これは、`SPLIT_USB_DETECT` を使う時のマスタ/スレーブを検出する場合の最大タイムアウトを設定します。
|
||||
|
||||
```c
|
||||
#define SPLIT_USB_TIMEOUT_POLL 10
|
||||
```
|
||||
これは `SPLIT_USB_DETECT` を使う時のマスタ/スレーブを検出する場合のポーリング頻度を設定します
|
||||
|
||||
## 追加のリソース(英語)
|
||||
|
||||
Nicinabox には Let's Split キーボードのための[非常に優れた詳細なガイド](https://github.com/nicinabox/lets-split-guide)があり、トラブルシューティング情報を含む知っておくべきほとんど全てをカバーします。
|
||||
|
||||
ただし、RGB ライトセクションは、RGB Split コードが QMK ファームウェアに追加されるずっと前に書かれたため、古くなっています。ガイドに従う代わりに、各 LED テーブ(訳注: LED strip とも呼びます)を直接コントローラに配線します。
|
||||
|
||||
<!-- I may port this information later, but for now ... it's very nice, and covers everything -->
|
||||
@@ -97,7 +97,7 @@ In most situations you will want to answer Yes to all of the prompts.
|
||||
It's possible, that you will get an error saying something like: `bash: qmk: command not found`.
|
||||
This is due to a [bug](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=839155) Debian introduced with their Bash 4.4 release, which removed `$HOME/.local/bin` from the PATH. This bug was later fixed on Debian and Ubuntu.
|
||||
Sadly, Ubuntu reitroduced this bug and is [yet to fix it](https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1588562).
|
||||
Luckily, the fix is easy. Run this as your user: `echo "PATH=$HOME/.local/bin:$PATH" >> $HOME/.bashrc && source $HOME/.bashrc`
|
||||
Luckily, the fix is easy. Run this as your user: `echo 'PATH="$HOME/.local/bin:$PATH"' >> $HOME/.bashrc && source $HOME/.bashrc`
|
||||
|
||||
?>**Note on FreeBSD**:
|
||||
It is suggested to run `qmk setup` as a non-`root` user to start with, but this will likely identify packages that need to be installed to your
|
||||
|
||||
@@ -15,7 +15,7 @@ You can control the behavior of one shot keys by defining these in `config.h`:
|
||||
#define ONESHOT_TIMEOUT 5000 /* Time (in ms) before the one shot key is released */
|
||||
```
|
||||
|
||||
* `OSM(mod)` - Momentarily hold down *mod*. You must use the `MOD_*` keycodes as shown in [Mod Tap](#mod-tap), not the `KC_*` codes.
|
||||
* `OSM(mod)` - Momentarily hold down *mod*. You must use the `MOD_*` keycodes as shown in [Mod Tap](mod_tap.md), not the `KC_*` codes.
|
||||
* `OSL(layer)` - momentary switch to *layer*.
|
||||
|
||||
Sometimes, you want to activate a one-shot key as part of a macro or tap dance routine.
|
||||
|
||||
58
docs/platformdev_selecting_arm_mcu.md
Normal file
58
docs/platformdev_selecting_arm_mcu.md
Normal file
@@ -0,0 +1,58 @@
|
||||
# Choosing an Arm MCU :id=choose-arm-mcu
|
||||
|
||||
This page outlines the selection criteria to ensure compatibility with Arm/ChibiOS.
|
||||
|
||||
QMK uses the Hardware Abstraction Layer of ChibiOS in order to run on Arm devices. ChibiOS in general is best supported on STM32 devices, both in the perspective of base MCU support, as well as on-MCU peripheral support. As an extension to the core ChibiOS MCU support, QMK also utilises ChibiOS-Contrib (which includes the Kinetis MCU support layer, as an example), but it does not provide as great a level of peripheral support or general testing for supported devices.
|
||||
|
||||
Adding support for new MCU families must go through ChibiOS or ChibiOS-Contrib -- QMK does not have the bandwidth, resources, nor the inclination to maintain long-term MCU support for your board of choice.
|
||||
|
||||
To be clear: this also includes commercial boards -- unless agreed upon by all parties, QMK will not take over maintenance of a bespoke MCU support package. Even if MCU support is upstreamed into ChibiOS/ChibiOS-Contrib, QMK reserves the right to deprecate and/or remove keyboards utilising support packages that aren't kept up to date with upstream ChibiOS itself.
|
||||
|
||||
## Selecting an already-supported MCU :id=selecting-already-supported-mcu
|
||||
|
||||
### STM32 families
|
||||
|
||||
As outlined earlier, STM32 is the preferred option to ensure greatest compatibility with the subsystems already implemented in QMK. Not all subsystems are compatible yet, but for the most widely-used support is already present.
|
||||
|
||||
The simplest solution to determine if an STM32 MCU is compatible is to navigate to the list of supported STM32 ports in QMK's [ChibiOS fork](https://github.com/qmk/ChibiOS/tree/master/os/hal/ports/STM32). Inside this directory, each of the supported STM32 families will be listed, and inside each family a file called `stm32_registry.h` will be present. Scanning through these files will show `#define`s such as the following, which can be used to determine if ChibiOS supports a particular MCU:
|
||||
|
||||
```c
|
||||
#if defined(STM32F303xC) || defined(__DOXYGEN__)
|
||||
```
|
||||
|
||||
The example shows that STM32F303xC devices are supported by ChibiOS.
|
||||
|
||||
The next step is to ensure that USB is supported on those devices by ChibiOS -- you can confirm this by checking inside the same section guarded by the `#define` above, specifically for the following to be `TRUE`:
|
||||
|
||||
```c
|
||||
#define STM32_HAS_USB TRUE
|
||||
```
|
||||
|
||||
or one of the following being `TRUE`:
|
||||
|
||||
```c
|
||||
#define STM32_HAS_OTG1 TRUE
|
||||
#define STM32_HAS_OTG2 TRUE
|
||||
```
|
||||
|
||||
For the most part, this is the bare minimum to be able to have a high confidence that QMK will be able to run on your MCU. After that, it's all up to configuration.
|
||||
|
||||
### Non-STM32 families
|
||||
|
||||
ChibiOS does have support for a handful of non-STM32 devices, and the list can be found in QMK's [ChibiOS fork](https://github.com/qmk/ChibiOS/tree/master/os/hal/ports) and [ChibiOS-Contrib fork](https://github.com/qmk/ChibiOS-Contrib/tree/master/os/hal/ports). Non-STM32 support is likely out of date, and only supports ancient MCUs -- whilst it might be possible to use these, it's not recommended.
|
||||
|
||||
Do note that there are sometimes licensing restrictions with respect to redistribution. As an example, binaries built for nRF5 are not able to be redistributed via QMK Configurator, due to the licensing of their board support package.
|
||||
|
||||
## Adding support for a new STM32 MCU (for an existing family) :id=add-new-stm32-mcu
|
||||
|
||||
Usually, one can "masquerade" as an existing MCU of the same family, especially if the only difference is RAM or Flash size. As an example, some MCUs within the same family are virtually identical, with the exception of adding a cryptographic peripheral -- STM32L072 vs. STM32L082 for instance. Given the unlikely use of the cryptographic peripheral, L082 chips can actually run as if they're an L072, and can be targeted accordingly.
|
||||
|
||||
Adding proper support for new MCUs within an existing STM32 family should ideally be upstreamed to ChibiOS. In general, this will require modifications of the `stm32_registry.h` file, providing correct responses for the same `#define`s provided for the other MCUs in that family.
|
||||
|
||||
## Adding support for a new STM32 Family :id=add-new-stm32-family
|
||||
|
||||
If this is a requirement, this needs to go through upstream ChibiOS before QMK would consider accepting boards targeting the new family. More information for porting should be sought by approaching ChibiOS directly, rather than through QMK.
|
||||
|
||||
## Adding support for a new MCU Family :id=add-new-mcu-family
|
||||
|
||||
As stated earlier, in order for a new MCU family to be supported by QMK, it needs to be upstreamed into ChibiOS-Contrib before QMK will consider accepting boards using it. The same principle applies for development -- you're best approaching the ChibiOS-Contrib maintainers to get a bit more of an idea on what's involved with upstreaming your contribution.
|
||||
@@ -5,7 +5,7 @@
|
||||
"width": 15.5,
|
||||
"height": 4.25,
|
||||
"layouts": {
|
||||
"LAYOUT_all": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"label":"Tab", "x":0, "y":0},
|
||||
{"label":"Q", "x":1, "y":0},
|
||||
@@ -33,7 +33,7 @@
|
||||
{"label":"J", "x":7.25, "y":1},
|
||||
{"label":"K", "x":8.25, "y":1},
|
||||
{"label":"L", "x":9.25, "y":1},
|
||||
{"label":"Enter", "x":10.25, "y":1.75},
|
||||
{"label":"Enter", "x":10.25, "y":1, "w":1.75},
|
||||
{"label":"4", "x":12.5, "y":1},
|
||||
{"label":"5", "x":13.5, "y":1},
|
||||
{"label":"6", "x":14.5, "y":1},
|
||||
@@ -47,7 +47,7 @@
|
||||
{"label":"N", "x":6.75, "y":2},
|
||||
{"label":"M", "x":7.75, "y":2},
|
||||
{"label":"<", "x":8.75, "y":2},
|
||||
{"label":"Fn1", "x":9.75, "y":2},
|
||||
{"label":"Fn1", "x":9.75, "y":2, "w":1.25},
|
||||
{"label":"Up", "x":11.25, "y":2.25},
|
||||
{"label":"1", "x":12.5, "y":2},
|
||||
{"label":"2", "x":13.5, "y":2},
|
||||
|
||||
@@ -14,13 +14,13 @@ BOOTLOADER = atmel-dfu
|
||||
# Build Options
|
||||
# comment out to disable the options.
|
||||
#
|
||||
BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration
|
||||
MOUSEKEY_ENABLE ?= no # Mouse keys
|
||||
EXTRAKEY_ENABLE ?= yes # Audio control and System control
|
||||
CONSOLE_ENABLE ?= no # Console for debug
|
||||
COMMAND_ENABLE ?= no # Commands for debug and configuration
|
||||
SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend
|
||||
NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality
|
||||
AUDIO_ENABLE ?= no
|
||||
RGBLIGHT_ENABLE ?= yes
|
||||
BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
|
||||
MOUSEKEY_ENABLE = no # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = no # Console for debug
|
||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||
SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
|
||||
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||
AUDIO_ENABLE = no
|
||||
RGBLIGHT_ENABLE = yes
|
||||
|
||||
@@ -14,15 +14,15 @@ BOOTLOADER = atmel-dfu
|
||||
# Build Options
|
||||
# comment out to disable the options.
|
||||
#
|
||||
BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration
|
||||
MOUSEKEY_ENABLE ?= no # Mouse keys
|
||||
EXTRAKEY_ENABLE ?= yes # Audio control and System control
|
||||
CONSOLE_ENABLE ?= yes # Console for debug
|
||||
COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
||||
NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
RGBLIGHT_ENABLE ?= yes # Enable keyboard underlight functionality
|
||||
BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality
|
||||
MIDI_ENABLE ?= no # MIDI controls
|
||||
AUDIO_ENABLE ?= no
|
||||
UNICODE_ENABLE ?= no # Unicode
|
||||
BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
||||
MOUSEKEY_ENABLE = no # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = yes # Console for debug
|
||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
RGBLIGHT_ENABLE = yes # Enable keyboard underlight functionality
|
||||
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||
MIDI_ENABLE = no # MIDI controls
|
||||
AUDIO_ENABLE = no
|
||||
UNICODE_ENABLE = no # Unicode
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
|
||||
@@ -5,23 +5,24 @@
|
||||
"width": 4,
|
||||
"height": 3,
|
||||
"layouts": {
|
||||
|
||||
"LAYOUT": {
|
||||
|
||||
"layout": [
|
||||
{ "label": "K01", "x": 0, "y": 0 },
|
||||
{ "label": "K02", "x": 1, "y": 0 },
|
||||
{ "label": "K03", "x": 2, "y": 0 },
|
||||
{ "label": "K04", "x": 3, "y": 0 },
|
||||
|
||||
{ "label": "K04", "x": 0, "y": 1 },
|
||||
{ "label": "K05", "x": 1, "y": 1 },
|
||||
{ "label": "K06", "x": 2, "y": 1 },
|
||||
{ "label": "K05", "x": 0, "y": 1 },
|
||||
{ "label": "K06", "x": 1, "y": 1 },
|
||||
{ "label": "K07", "x": 2, "y": 1 },
|
||||
{ "label": "K08", "x": 3, "y": 1 },
|
||||
|
||||
{ "label": "K07", "x": 0, "y": 2 },
|
||||
{ "label": "K08", "x": 1, "y": 2 },
|
||||
{ "label": "K09", "x": 2, "y": 2 },
|
||||
|
||||
{ "label": "K10", "x": 0, "y": 3 },
|
||||
{ "label": "K11", "x": 1, "y": 3 },
|
||||
{ "label": "K12", "x": 2, "y": 3 }
|
||||
{ "label": "K09", "x": 0, "y": 2 },
|
||||
{ "label": "K10", "x": 1, "y": 2 },
|
||||
{ "label": "K11", "x": 2, "y": 2 },
|
||||
{ "label": "K12", "x": 3, "y": 2 }
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
#define _MAIN 0
|
||||
#define _RAISE 1
|
||||
#define _LOWER 2
|
||||
enum layers {
|
||||
_MAIN,
|
||||
_RAISE,
|
||||
_LOWER,
|
||||
};
|
||||
|
||||
// Readability keycodes
|
||||
#define LOWER MO(_LOWER)
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
# 3x4
|
||||

|
||||
|
||||

|
||||
|
||||
this macro pad / small 12 key was inspired by the plaid look
|
||||
|
||||
|
||||
1
keyboards/boardsource/4x12/4x12.c
Normal file
1
keyboards/boardsource/4x12/4x12.c
Normal file
@@ -0,0 +1 @@
|
||||
#include "4x12.h"
|
||||
14
keyboards/boardsource/4x12/4x12.h
Normal file
14
keyboards/boardsource/4x12/4x12.h
Normal file
@@ -0,0 +1,14 @@
|
||||
#pragma once
|
||||
#include "quantum.h"
|
||||
|
||||
#define LAYOUT_ortho_4x12( \
|
||||
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, \
|
||||
K12, K13, K14, K15, K16, K17, K18, K19, K20, K21, K22, K23, \
|
||||
K24, K25, K26, K27, K28, K29, K30, K31, K32, K33, K34, K35, \
|
||||
K36, K37, K38, K39, K40, K41, K42, K43, K44, K45, K46, K47 \
|
||||
) { \
|
||||
{K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11}, \
|
||||
{K12, K13, K14, K15, K16, K17, K18, K19, K20, K21, K22, K23}, \
|
||||
{K24, K25, K26, K27, K28, K29, K30, K31, K32, K33, K34, K35}, \
|
||||
{K36, K37, K38, K39, K40, K41, K42, K43, K44, K45, K46, K47} \
|
||||
}
|
||||
142
keyboards/boardsource/4x12/config.h
Normal file
142
keyboards/boardsource/4x12/config.h
Normal file
@@ -0,0 +1,142 @@
|
||||
#pragma once
|
||||
|
||||
#include "config_common.h"
|
||||
|
||||
/* USB Device descriptor parameter */
|
||||
#define VENDOR_ID 0xF7E0
|
||||
#define PRODUCT_ID 0x0412
|
||||
#define DEVICE_VER 0x0000
|
||||
#define MANUFACTURER Boardsource
|
||||
#define PRODUCT 4x12
|
||||
#define DESCRIPTION 40 percent ortho keyboard
|
||||
|
||||
/* key matrix size */
|
||||
#define MATRIX_ROWS 4
|
||||
#define MATRIX_COLS 12
|
||||
#define MATRIX_ROW_PINS { D2, D3, D1, D0}
|
||||
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, B6, B5, B4, E6, D7 }
|
||||
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||
#define DEBOUNCE 5
|
||||
|
||||
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||
#define LOCKING_SUPPORT_ENABLE
|
||||
/* Locking resynchronize hack */
|
||||
#define LOCKING_RESYNC_ENABLE
|
||||
|
||||
/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
|
||||
* This is userful for the Windows task manager shortcut (ctrl+shift+esc).
|
||||
*/
|
||||
// #define GRAVE_ESC_CTRL_OVERRIDE
|
||||
|
||||
/*
|
||||
* Force NKRO
|
||||
*
|
||||
* Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
|
||||
* state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
|
||||
* makefile for this to work.)
|
||||
*
|
||||
* If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
|
||||
* until the next keyboard reset.
|
||||
*
|
||||
* NKRO may prevent your keystrokes from being detected in the BIOS, but it is
|
||||
* fully operational during normal computer usage.
|
||||
*
|
||||
* For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
|
||||
* or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
|
||||
* bootmagic, NKRO mode will always be enabled until it is toggled again during a
|
||||
* power-up.
|
||||
*
|
||||
*/
|
||||
//#define FORCE_NKRO
|
||||
|
||||
/*
|
||||
* Magic Key Options
|
||||
*
|
||||
* Magic keys are hotkey commands that allow control over firmware functions of
|
||||
* the keyboard. They are best used in combination with the HID Listen program,
|
||||
* found here: https://www.pjrc.com/teensy/hid_listen.html
|
||||
*
|
||||
* The options below allow the magic key functionality to be changed. This is
|
||||
* useful if your keyboard/keypad is missing keys and you want magic key support.
|
||||
*
|
||||
*/
|
||||
|
||||
/* control how magic key switches layers */
|
||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
|
||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
|
||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
|
||||
|
||||
/* override magic key keymap */
|
||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
|
||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
|
||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
|
||||
//#define MAGIC_KEY_HELP1 H
|
||||
//#define MAGIC_KEY_HELP2 SLASH
|
||||
//#define MAGIC_KEY_DEBUG D
|
||||
//#define MAGIC_KEY_DEBUG_MATRIX X
|
||||
//#define MAGIC_KEY_DEBUG_KBD K
|
||||
//#define MAGIC_KEY_DEBUG_MOUSE M
|
||||
//#define MAGIC_KEY_VERSION V
|
||||
//#define MAGIC_KEY_STATUS S
|
||||
//#define MAGIC_KEY_CONSOLE C
|
||||
//#define MAGIC_KEY_LAYER0_ALT1 ESC
|
||||
//#define MAGIC_KEY_LAYER0_ALT2 GRAVE
|
||||
//#define MAGIC_KEY_LAYER0 0
|
||||
//#define MAGIC_KEY_LAYER1 1
|
||||
//#define MAGIC_KEY_LAYER2 2
|
||||
//#define MAGIC_KEY_LAYER3 3
|
||||
//#define MAGIC_KEY_LAYER4 4
|
||||
//#define MAGIC_KEY_LAYER5 5
|
||||
//#define MAGIC_KEY_LAYER6 6
|
||||
//#define MAGIC_KEY_LAYER7 7
|
||||
//#define MAGIC_KEY_LAYER8 8
|
||||
//#define MAGIC_KEY_LAYER9 9
|
||||
//#define MAGIC_KEY_BOOTLOADER PAUSE
|
||||
//#define MAGIC_KEY_LOCK CAPS
|
||||
//#define MAGIC_KEY_EEPROM E
|
||||
//#define MAGIC_KEY_NKRO N
|
||||
//#define MAGIC_KEY_SLEEP_LED Z
|
||||
|
||||
/*
|
||||
* Feature disable options
|
||||
* These options are also useful to firmware size reduction.
|
||||
*/
|
||||
|
||||
/* disable debug print */
|
||||
//#define NO_DEBUG
|
||||
|
||||
/* disable print */
|
||||
//#define NO_PRINT
|
||||
|
||||
/* disable action features */
|
||||
//#define NO_ACTION_LAYER
|
||||
//#define NO_ACTION_TAPPING
|
||||
//#define NO_ACTION_ONESHOT
|
||||
//#define NO_ACTION_MACRO
|
||||
//#define NO_ACTION_FUNCTION
|
||||
|
||||
/*
|
||||
* MIDI options
|
||||
*/
|
||||
|
||||
/* Prevent use of disabled MIDI features in the keymap */
|
||||
//#define MIDI_ENABLE_STRICT 1
|
||||
|
||||
/* enable basic MIDI features:
|
||||
- MIDI notes can be sent when in Music mode is on
|
||||
*/
|
||||
//#define MIDI_BASIC
|
||||
|
||||
/* enable advanced MIDI features:
|
||||
- MIDI notes can be added to the keymap
|
||||
- Octave shift and transpose
|
||||
- Virtual sustain, portamento, and modulation wheel
|
||||
- etc.
|
||||
*/
|
||||
//#define MIDI_ADVANCED
|
||||
|
||||
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
|
||||
//#define MIDI_TONE_KEYCODE_OCTAVES 1
|
||||
64
keyboards/boardsource/4x12/info.json
Normal file
64
keyboards/boardsource/4x12/info.json
Normal file
@@ -0,0 +1,64 @@
|
||||
{
|
||||
"keyboard_name": "Boardsource 4x12",
|
||||
"url": "https://boardsource.xyz",
|
||||
"maintainer": "Boardsource",
|
||||
"width": 12,
|
||||
"height": 4,
|
||||
"layouts": {
|
||||
"LAYOUT_ortho_4x12": {
|
||||
"layout": [
|
||||
{ "label": "K01", "x": 0, "y": 0 },
|
||||
{ "label": "K02", "x": 1, "y": 0 },
|
||||
{ "label": "K03", "x": 2, "y": 0 },
|
||||
{ "label": "K04", "x": 3, "y": 0 },
|
||||
{ "label": "K05", "x": 4, "y": 0 },
|
||||
{ "label": "K06", "x": 5, "y": 0 },
|
||||
{ "label": "K07", "x": 6, "y": 0 },
|
||||
{ "label": "K08", "x": 7, "y": 0 },
|
||||
{ "label": "K09", "x": 8, "y": 0 },
|
||||
{ "label": "K010", "x": 9, "y": 0 },
|
||||
{ "label": "K011", "x": 10, "y": 0 },
|
||||
{ "label": "K012", "x": 11, "y": 0 },
|
||||
|
||||
{ "label": "K11", "x": 0, "y": 1 },
|
||||
{ "label": "K12", "x": 1, "y": 1 },
|
||||
{ "label": "K13", "x": 2, "y": 1 },
|
||||
{ "label": "K14", "x": 3, "y": 1 },
|
||||
{ "label": "K15", "x": 4, "y": 1 },
|
||||
{ "label": "K16", "x": 5, "y": 1 },
|
||||
{ "label": "K17", "x": 6, "y": 1 },
|
||||
{ "label": "K18", "x": 7, "y": 1 },
|
||||
{ "label": "K19", "x": 8, "y": 1 },
|
||||
{ "label": "K110", "x": 9, "y": 1 },
|
||||
{ "label": "K111", "x": 10, "y": 1 },
|
||||
{ "label": "K112", "x": 11, "y": 1 },
|
||||
|
||||
{ "label": "K21", "x": 0, "y": 2 },
|
||||
{ "label": "K22", "x": 1, "y": 2 },
|
||||
{ "label": "K23", "x": 2, "y": 2 },
|
||||
{ "label": "K24", "x": 3, "y": 2 },
|
||||
{ "label": "K25", "x": 4, "y": 2 },
|
||||
{ "label": "K26", "x": 5, "y": 2 },
|
||||
{ "label": "K27", "x": 6, "y": 2 },
|
||||
{ "label": "K28", "x": 7, "y": 2 },
|
||||
{ "label": "K29", "x": 8, "y": 2 },
|
||||
{ "label": "K210", "x": 9, "y": 2 },
|
||||
{ "label": "K211", "x": 10, "y": 2 },
|
||||
{ "label": "K212", "x": 11, "y": 2 },
|
||||
|
||||
{ "label": "K31", "x": 0, "y": 3 },
|
||||
{ "label": "K32", "x": 1, "y": 3 },
|
||||
{ "label": "K33", "x": 2, "y": 3 },
|
||||
{ "label": "K34", "x": 3, "y": 3 },
|
||||
{ "label": "K35", "x": 4, "y": 3 },
|
||||
{ "label": "K36", "x": 5, "y": 3 },
|
||||
{ "label": "K37", "x": 6, "y": 3 },
|
||||
{ "label": "K38", "x": 7, "y": 3 },
|
||||
{ "label": "K39", "x": 8, "y": 3 },
|
||||
{ "label": "K310", "x": 9, "y": 3 },
|
||||
{ "label": "K311", "x": 10, "y": 3 },
|
||||
{ "label": "K312", "x": 11, "y": 3 }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
36
keyboards/boardsource/4x12/keymaps/default/keymap.c
Normal file
36
keyboards/boardsource/4x12/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,36 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
enum layers {
|
||||
_MAIN,
|
||||
_RAISE,
|
||||
_LOWER,
|
||||
};
|
||||
|
||||
// Readability keycodes
|
||||
#define LOWER MO(_LOWER)
|
||||
#define RAISE MO(_RAISE)
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[_MAIN] = LAYOUT_ortho_4x12(
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
|
||||
KC_PIPE, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
|
||||
),
|
||||
|
||||
[_RAISE] = LAYOUT_ortho_4x12(
|
||||
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
|
||||
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
|
||||
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______,
|
||||
RESET, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
|
||||
),
|
||||
|
||||
[_LOWER] = LAYOUT_ortho_4x12(
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
|
||||
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
|
||||
)
|
||||
|
||||
};
|
||||
12
keyboards/boardsource/4x12/readme.md
Normal file
12
keyboards/boardsource/4x12/readme.md
Normal file
@@ -0,0 +1,12 @@
|
||||
# 4x12
|
||||

|
||||
|
||||
* Keyboard Maintainer: [Boardsource](https://github.com/daysgobye)
|
||||
* Hardware Supported: 4x12 v1
|
||||
* Hardware Availability: this keyboard is available from the [Boardsource store](https://boardsource.xyz/store/5ecb7dad86879c9a0c22db32)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make boardsource/4x12: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).
|
||||
32
keyboards/boardsource/4x12/rules.mk
Normal file
32
keyboards/boardsource/4x12/rules.mk
Normal file
@@ -0,0 +1,32 @@
|
||||
# MCU name
|
||||
MCU = atmega32u4
|
||||
|
||||
# Bootloader selection
|
||||
# Teensy halfkay
|
||||
# Pro Micro caterina
|
||||
# Atmel DFU atmel-dfu
|
||||
# LUFA DFU lufa-dfu
|
||||
# QMK DFU qmk-dfu
|
||||
# ATmega32A bootloadHID
|
||||
# ATmega328P USBasp
|
||||
BOOTLOADER = caterina
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = yes # Console for debug
|
||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
NKRO_ENABLE = no # USB Nkey Rollover
|
||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||
MIDI_ENABLE = no # MIDI support
|
||||
UNICODE_ENABLE = no # Unicode
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
AUDIO_ENABLE = no # Audio output on port C6
|
||||
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||
LAYOUTS = ortho_4x12
|
||||
@@ -24,23 +24,41 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
enum layer_names {
|
||||
_BASE,
|
||||
_FN1,
|
||||
_FN2,
|
||||
_FN3
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[_BASE] = LAYOUT_default(
|
||||
KC_GESC, 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_BSLS,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUBS, KC_ENT, KC_PGUP,
|
||||
KC_LSFT, KC_NUHS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_FN1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
[_BASE] = LAYOUT_default(
|
||||
KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_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_DEL,
|
||||
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_NUBS, KC_ENT, KC_PGUP,
|
||||
KC_LSFT, KC_NUHS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_FN1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
|
||||
[_FN1] = LAYOUT_default(
|
||||
KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
BL_INC, BL_DEC, BL_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_GRV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS
|
||||
KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
|
||||
[_FN2] = LAYOUT_default(
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
|
||||
[_FN3] = LAYOUT_default(
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
)
|
||||
};
|
||||
|
||||
@@ -1,5 +1,2 @@
|
||||
# rules.mk overrides to enable VIA
|
||||
|
||||
RAW_ENABLE = yes
|
||||
DYNAMIC_KEYMAP_ENABLE = yes
|
||||
VIA_ENABLE = yes
|
||||
|
||||
|
||||
@@ -14,20 +14,20 @@ BOOTLOADER = halfkay
|
||||
# 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 ?= yes # Console for debug
|
||||
COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = yes # Console for debug
|
||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
|
||||
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 on B7 by default
|
||||
MIDI_ENABLE ?= no # MIDI support
|
||||
UNICODE_ENABLE ?= no # Unicode
|
||||
BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
AUDIO_ENABLE ?= no # Audio output on port C6
|
||||
FAUXCLICKY_ENABLE ?= no # Use buzzer to emulate clicky switches
|
||||
NKRO_ENABLE = no # USB Nkey Rollover
|
||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
|
||||
MIDI_ENABLE = no # MIDI support
|
||||
UNICODE_ENABLE = no # Unicode
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
AUDIO_ENABLE = no # Audio output on port C6
|
||||
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||
|
||||
LAYOUTS = numpad_5x4
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,11 +1,165 @@
|
||||
{
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [{"x": 0, "y": 0, "w": 1, "label": "GRAVE"}, {"x": 1, "y": 0, "w": 1, "label": "1"}, {"x": 2, "y": 0, "w": 1, "label": "2"}, {"x": 3, "y": 0, "w": 1, "label": "3"}, {"x": 4, "y": 0, "w": 1, "label": "4"}, {"x": 5, "y": 0, "w": 1, "label": "5"}, {"x": 6, "y": 0, "w": 1, "label": "6"}, {"x": 7, "y": 0, "w": 1, "label": "7"}, {"x": 8, "y": 0, "w": 1, "label": "8"}, {"x": 9, "y": 0, "w": 1, "label": "9"}, {"x": 10, "y": 0, "w": 1, "label": "0"}, {"x": 11, "y": 0, "w": 1, "label": "DASH"}, {"x": 12, "y": 0, "w": 1, "label": "EQUALSIGN"}, {"x": 13, "y": 0, "w": 1, "label": "YEN"}, {"x": 14, "y": 0, "w": 1, "label": "BACKSPACE"}, {"x": 15.5, "y": 0, "w": 1, "label": "PAGEUP"}, {"x": 0, "y": 1, "w": 1.5, "label": "TAB"}, {"x": 1.5, "y": 1, "w": 1, "label": "Q"}, {"x": 2.5, "y": 1, "w": 1, "label": "W"}, {"x": 3.5, "y": 1, "w": 1, "label": "E"}, {"x": 4.5, "y": 1, "w": 1, "label": "R"}, {"x": 5.5, "y": 1, "w": 1, "label": "T"}, {"x": 6.5, "y": 1, "w": 1, "label": "Y"}, {"x": 7.5, "y": 1, "w": 1, "label": "U"}, {"x": 8.5, "y": 1, "w": 1, "label": "I"}, {"x": 9.5, "y": 1, "w": 1, "label": "O"}, {"x": 10.5, "y": 1, "w": 1, "label": "P"}, {"x": 11.5, "y": 1, "w": 1, "label": "LBRACKET"}, {"x": 12.5, "y": 1, "w": 1, "label": "RBRACKET"}, {"x": 13.5, "y": 1, "w": 1.5, "label": "BACKSLASH"}, {"x": 15.5, "y": 1, "w": 1, "label": "PAGEDOWN"}, {"x": 0, "y": 2, "w": 1.75, "label": "CAPSLOCK"}, {"x": 1.75, "y": 2, "w": 1, "label": "A"}, {"x": 2.75, "y": 2, "w": 1, "label": "S"}, {"x": 3.75, "y": 2, "w": 1, "label": "D"}, {"x": 4.75, "y": 2, "w": 1, "label": "F"}, {"x": 5.75, "y": 2, "w": 1, "label": "G"}, {"x": 6.75, "y": 2, "w": 1, "label": "H"}, {"x": 7.75, "y": 2, "w": 1, "label": "J"}, {"x": 8.75, "y": 2, "w": 1, "label": "K"}, {"x": 9.75, "y": 2, "w": 1, "label": "L"}, {"x": 10.75, "y": 2, "w": 1, "label": "SEMICOLON"}, {"x": 11.75, "y": 2, "w": 1, "label": "QUOTE"}, {"x": 13.75, "y": 2, "w": 1.25, "label": "ENTER"}, {"x": 0, "y": 3, "w": 1.25, "label": "LSHIFT"}, {"x": 2.25, "y": 3, "w": 1, "label": "Z"}, {"x": 3.25, "y": 3, "w": 1, "label": "X"}, {"x": 4.25, "y": 3, "w": 1, "label": "C"}, {"x": 5.25, "y": 3, "w": 1, "label": "V"}, {"x": 6.25, "y": 3, "w": 1, "label": "B"}, {"x": 7.25, "y": 3, "w": 1, "label": "N"}, {"x": 8.25, "y": 3, "w": 1, "label": "M"}, {"x": 9.25, "y": 3, "w": 1, "label": "COMMA"}, {"x": 10.25, "y": 3, "w": 1, "label": "PERIOD"}, {"x": 11.25, "y": 3, "w": 1, "label": "SLASH"}, {"x": 13.25, "y": 3, "w": 1.25, "label": "RSHIFT"}, {"x": 14.5, "y": 3, "w": 1, "label": "UP"}, {"x": 0, "y": 4, "w": 1.25, "label": "LCTRL"}, {"x": 1.25, "y": 4, "w": 1, "label": "LALT"}, {"x": 2.25, "y": 4, "w": 1.25, "label": "LCMD"}, {"x": 3.5, "y": 4, "w": 1.25, "label": "MUHENKAN"}, {"x": 4.75, "y": 4, "w": 2, "label": "SPACE1"}, {"x": 6.75, "y": 4, "w": 2, "label": "SPACE2"}, {"x": 8.75, "y": 4, "w": 1.25, "label": "HENKAN"}, {"x": 10, "y": 4, "w": 1.25, "label": "RCMD"}, {"x": 11.25, "y": 4, "w": 1, "label": "RCTRL"}, {"x": 12.25, "y": 4, "w": 1.25, "label": "FN"}, {"x": 13.5, "y": 4, "w": 1, "label": "LEFT"}, {"x": 14.5, "y": 4, "w": 1, "label": "DOWN"}, {"x": 15.5, "y": 4, "w": 1, "label": "RIGHT"}]
|
||||
},
|
||||
"keyboard_name": "Clueboard 66% HotSwap Gen1",
|
||||
"maintainer": "skullydazed",
|
||||
"width": 16.5,
|
||||
"height": 5,
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"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},
|
||||
|
||||
"LAYOUT_66_ansi": {
|
||||
"layout": [{"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"x":15.5, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"x":15.5, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.25}, {"x":14.5, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Win", "x":11.25, "y":4}, {"label":"Menu", "x":12.25, "y":4, "w":1.25}, {"x":13.5, "y":4}, {"x":14.5, "y":4}, {"x":15.5, "y":4}]
|
||||
{"x": 15.5, "y": 0},
|
||||
|
||||
{"x": 0, "y": 1, "w": 1.5},
|
||||
{"x": 1.5, "y": 1},
|
||||
{"x": 2.5, "y": 1},
|
||||
{"x": 3.5, "y": 1},
|
||||
{"x": 4.5, "y": 1},
|
||||
{"x": 5.5, "y": 1},
|
||||
{"x": 6.5, "y": 1},
|
||||
{"x": 7.5, "y": 1},
|
||||
{"x": 8.5, "y": 1},
|
||||
{"x": 9.5, "y": 1},
|
||||
{"x": 10.5, "y": 1},
|
||||
{"x": 11.5, "y": 1},
|
||||
{"x": 12.5, "y": 1},
|
||||
{"x": 13.5, "y": 1, "w": 1.5},
|
||||
|
||||
{"x": 15.5, "y": 1},
|
||||
|
||||
{"x": 0, "y": 2, "w": 1.75},
|
||||
{"x": 1.75, "y": 2},
|
||||
{"x": 2.75, "y": 2},
|
||||
{"x": 3.75, "y": 2},
|
||||
{"x": 4.75, "y": 2},
|
||||
{"x": 5.75, "y": 2},
|
||||
{"x": 6.75, "y": 2},
|
||||
{"x": 7.75, "y": 2},
|
||||
{"x": 8.75, "y": 2},
|
||||
{"x": 9.75, "y": 2},
|
||||
{"x": 10.75, "y": 2},
|
||||
{"x": 11.75, "y": 2},
|
||||
{"x": 12.75, "y": 2, "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.25},
|
||||
|
||||
{"x": 14.5, "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": 2.75},
|
||||
{"x": 6.5, "y": 4, "w": 2.25},
|
||||
{"x": 8.75, "y": 4, "w": 1.25},
|
||||
{"x": 10, "y": 4, "w": 1.25},
|
||||
{"x": 11.25, "y": 4},
|
||||
{"x": 12.25, "y": 4, "w": 1.25},
|
||||
{"x": 13.5, "y": 4},
|
||||
{"x": 14.5, "y": 4},
|
||||
{"x": 15.5, "y": 4}
|
||||
]
|
||||
},
|
||||
"LAYOUT_66_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": 15.5, "y": 0},
|
||||
|
||||
{"x": 0, "y": 1, "w": 1.5},
|
||||
{"x": 1.5, "y": 1},
|
||||
{"x": 2.5, "y": 1},
|
||||
{"x": 3.5, "y": 1},
|
||||
{"x": 4.5, "y": 1},
|
||||
{"x": 5.5, "y": 1},
|
||||
{"x": 6.5, "y": 1},
|
||||
{"x": 7.5, "y": 1},
|
||||
{"x": 8.5, "y": 1},
|
||||
{"x": 9.5, "y": 1},
|
||||
{"x": 10.5, "y": 1},
|
||||
{"x": 11.5, "y": 1},
|
||||
{"x": 12.5, "y": 1},
|
||||
{"x": 13.5, "y": 1, "w": 1.5},
|
||||
|
||||
{"x": 15.5, "y": 1},
|
||||
|
||||
{"x": 0, "y": 2, "w": 1.75},
|
||||
{"x": 1.75, "y": 2},
|
||||
{"x": 2.75, "y": 2},
|
||||
{"x": 3.75, "y": 2},
|
||||
{"x": 4.75, "y": 2},
|
||||
{"x": 5.75, "y": 2},
|
||||
{"x": 6.75, "y": 2},
|
||||
{"x": 7.75, "y": 2},
|
||||
{"x": 8.75, "y": 2},
|
||||
{"x": 9.75, "y": 2},
|
||||
{"x": 10.75, "y": 2},
|
||||
{"x": 11.75, "y": 2},
|
||||
{"x": 12.75, "y": 2, "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.25},
|
||||
|
||||
{"x": 14.5, "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},
|
||||
{"x": 12.25, "y": 4, "w": 1.25},
|
||||
|
||||
{"x": 13.5, "y": 4},
|
||||
{"x": 14.5, "y": 4},
|
||||
{"x": 15.5, "y": 4}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,4 +21,4 @@ AUDIO_ENABLE = yes
|
||||
|
||||
# project specific files
|
||||
SRC = led.c
|
||||
LAYOUTS += 66_ansi
|
||||
LAYOUTS = 66_ansi
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
{
|
||||
"keyboard_name": "Clueboard 66% HotSwap",
|
||||
"width": 16.5,
|
||||
"height": 5,
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"x": 0, "y": 0, "label": "GRAVE"}, {"x": 1, "y": 0, "label": "1"}, {"x": 2, "y": 0, "label": "2"}, {"x": 3, "y": 0, "label": "3"}, {"x": 4, "y": 0, "label": "4"}, {"x": 5, "y": 0, "label": "5"}, {"x": 6, "y": 0, "label": "6"}, {"x": 7, "y": 0, "label": "7"}, {"x": 8, "y": 0, "label": "8"}, {"x": 9, "y": 0, "label": "9"}, {"x": 10, "y": 0, "label": "0"}, {"x": 11, "y": 0, "label": "DASH"}, {"x": 12, "y": 0, "label": "EQUALSIGN"}, {"x": 13, "y": 0, "w": 2, "label": "BACKSPACE"}, {"x": 15.5, "y": 0, "label": "PAGEUP"},
|
||||
{"x": 0, "y": 1, "w": 1.5, "label": "TAB"}, {"x": 1.5, "y": 1, "label": "Q"}, {"x": 2.5, "y": 1, "label": "W"}, {"x": 3.5, "y": 1, "label": "E"}, {"x": 4.5, "y": 1, "label": "R"}, {"x": 5.5, "y": 1, "label": "T"}, {"x": 6.5, "y": 1, "label": "Y"}, {"x": 7.5, "y": 1, "label": "U"}, {"x": 8.5, "y": 1, "label": "I"}, {"x": 9.5, "y": 1, "label": "O"}, {"x": 10.5, "y": 1, "label": "P"}, {"x": 11.5, "y": 1, "label": "LBRACKET"}, {"x": 12.5, "y": 1, "label": "RBRACKET"}, {"x": 13.5, "y": 1, "w": 1.5, "label": "BACKSLASH"}, {"x": 15.5, "y": 1, "label": "PAGEDOWN"},
|
||||
{"x": 0, "y": 2, "w": 1.75, "label": "CAPS LOCK"}, {"x": 1.75, "y": 2, "label": "A"}, {"x": 2.75, "y": 2, "label": "S"}, {"x": 3.75, "y": 2, "label": "D"}, {"x": 4.75, "y": 2, "label": "F"}, {"x": 5.75, "y": 2, "label": "G"}, {"x": 6.75, "y": 2, "label": "H"}, {"x": 7.75, "y": 2, "label": "J"}, {"x": 8.75, "y": 2, "label": "K"}, {"x": 9.75, "y": 2, "label": "L"}, {"x": 10.75, "y": 2, "label": "SEMICOLON"}, {"x": 11.75, "y": 2, "label": "QUOTE"}, {"x": 12.75, "y": 2, "w": 2.25, "label": "ENTER"},
|
||||
{"x": 0, "y": 3, "w": 2.25, "label": "LSHIFT"}, {"x": 2.25, "y": 3, "label": "Z"}, {"x": 3.25, "y": 3, "label": "X"}, {"x": 4.25, "y": 3, "label": "C"}, {"x": 5.25, "y": 3, "label": "V"}, {"x": 6.25, "y": 3, "label": "B"}, {"x": 7.25, "y": 3, "label": "N"}, {"x": 8.25, "y": 3, "label": "M"}, {"x": 9.25, "y": 3, "label": "COMMA"}, {"x": 10.25, "y": 3, "label": "PERIOD"}, {"x": 11.25, "y": 3, "label": "SLASH"}, {"x": 12.25, "y": 3, "w": 2.25, "label": "RSHIFT"}, {"x": 14.5, "y": 3, "label": "UP"},
|
||||
{"x": 0, "y": 4, "w": 1.25, "label": "LCTRL"}, {"x": 1.25, "y": 4, "w": 1.25, "label": "LGUI"}, {"x": 2.5, "y": 4, "w": 1.25, "label": "LALT"}, {"x": 3.75, "y": 4, "w": 2.75, "label": "SPACE1"}, {"x": 6.5, "y": 4, "w": 2.25, "label": "SPACE2"}, {"x": 8.75, "y": 4, "w": 1.25, "label": "RGUI"}, {"x": 10, "y": 4, "w": 1.25, "label": "RALT"}, {"x": 11.25, "y": 4, "label": "FN"}, {"x": 12.25, "y": 4, "w": 1.25, "label": "RCTRL"}, {"x": 13.5, "y": 4, "label": "LEFT"}, {"x": 14.5, "y": 4, "label": "DOWN"}, {"x": 15.5, "y": 4, "label": "RIGHT"}
|
||||
]
|
||||
},
|
||||
"LAYOUT_66_ansi": {
|
||||
"layout": [
|
||||
{"label": "~", "x": 0, "y": 0}, {"label": "!", "x": 1, "y": 0}, {"label": "@", "x": 2, "y": 0}, {"label": "#", "x": 3, "y": 0}, {"label": "$", "x": 4, "y": 0}, {"label": "%", "x": 5, "y": 0}, {"label": "^", "x": 6, "y": 0}, {"label": "&", "x": 7, "y": 0}, {"label": "*", "x": 8, "y": 0}, {"label": "(", "x": 9, "y": 0}, {"label": ")", "x": 10, "y": 0}, {"label": "_", "x": 11, "y": 0}, {"label": "+", "x": 12, "y": 0}, {"label": "BACKSPACE", "x": 13, "y": 0, "w": 2}, {"label": "PAGEUP", "x": 15.5, "y": 0},
|
||||
{"label": "Tab", "x": 0, "y": 1, "w": 1.5}, {"label": "Q", "x": 1.5, "y": 1}, {"label": "W", "x": 2.5, "y": 1}, {"label": "E", "x": 3.5, "y": 1}, {"label": "R", "x": 4.5, "y": 1}, {"label": "T", "x": 5.5, "y": 1}, {"label": "Y", "x": 6.5, "y": 1}, {"label": "U", "x": 7.5, "y": 1}, {"label": "I", "x": 8.5, "y": 1}, {"label": "O", "x": 9.5, "y": 1}, {"label": "P", "x": 10.5, "y": 1}, {"label": "{", "x": 11.5, "y": 1}, {"label": "}", "x": 12.5, "y": 1}, {"label": "|", "x": 13.5, "y": 1, "w": 1.5}, {"label": "PAGEDOWN", "x": 15.5, "y": 1},
|
||||
{"label": "CAPS LOCK", "x": 0, "y": 2, "w": 1.75}, {"label": "A", "x": 1.75, "y": 2}, {"label": "S", "x": 2.75, "y": 2}, {"label": "D", "x": 3.75, "y": 2}, {"label": "F", "x": 4.75, "y": 2}, {"label": "G", "x": 5.75, "y": 2}, {"label": "H", "x": 6.75, "y": 2}, {"label": "J", "x": 7.75, "y": 2}, {"label": "K", "x": 8.75, "y": 2}, {"label": "L", "x": 9.75, "y": 2}, {"label": "SEMICOLON", "x": 10.75, "y": 2}, {"label": "QUOTE", "x": 11.75, "y": 2}, {"label": "ENTER", "x": 12.75, "y": 2, "w": 2.25},
|
||||
{"label": "LSHIFT", "x": 0, "y": 3, "w": 2.25}, {"label": "Z", "x": 2.25, "y": 3}, {"label": "X", "x": 3.25, "y": 3}, {"label": "C", "x": 4.25, "y": 3}, {"label": "V", "x": 5.25, "y": 3}, {"label": "B", "x": 6.25, "y": 3}, {"label": "N", "x": 7.25, "y": 3}, {"label": "M", "x": 8.25, "y": 3}, {"label": "COMMA", "x": 9.25, "y": 3}, {"label": "PERIOD", "x": 10.25, "y": 3}, {"label": "SLASH", "x": 11.25, "y": 3}, {"label": "RSHIFT", "x": 12.25, "y": 3, "w": 2.25}, {"label": "UP", "x": 14.5, "y": 3},
|
||||
{"label": "LCTRL", "x": 0, "y": 4, "w": 1.25}, {"label": "LGUI", "x": 1.25, "y": 4, "w": 1.25}, {"label": "LALT", "x": 2.5, "y": 4, "w": 1.25}, {"label": "SPACE", "x": 3.75, "y": 4, "w": 6.25}, {"label": "RALT", "x": 10, "y": 4, "w": 1.25}, {"label": "RGUI", "x": 11.25, "y": 4}, {"label": "FN", "x": 12.25, "y": 4, "w": 1.25}, {"label": "LEFT", "x": 13.5, "y": 4}, {"label": "DOWN", "x": 14.5, "y": 4}, {"label": "RIGHT", "x": 15.5, "y": 4}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
245
keyboards/clueboard/66_hotswap/prototype/info.json
Normal file
245
keyboards/clueboard/66_hotswap/prototype/info.json
Normal file
@@ -0,0 +1,245 @@
|
||||
{
|
||||
"keyboard_name": "Clueboard 66% HotSwap Prototype",
|
||||
"maintainer": "skullydazed",
|
||||
"width": 16.5,
|
||||
"height": 5,
|
||||
"layouts": {
|
||||
"LAYOUT_all": {
|
||||
"layout": [
|
||||
{"x": 0, "y": 0},
|
||||
{"x": 1, "y": 0},
|
||||
{"x": 2, "y": 0},
|
||||
{"x": 3, "y": 0},
|
||||
{"x": 4, "y": 0},
|
||||
{"x": 5, "y": 0},
|
||||
{"x": 6, "y": 0},
|
||||
{"x": 7, "y": 0},
|
||||
{"x": 8, "y": 0},
|
||||
{"x": 9, "y": 0},
|
||||
{"x": 10, "y": 0},
|
||||
{"x": 11, "y": 0},
|
||||
{"x": 12, "y": 0},
|
||||
{"x": 13, "y": 0, "w": 2},
|
||||
|
||||
{"x": 15.5, "y": 0},
|
||||
|
||||
{"x": 0, "y": 1, "w": 1.5},
|
||||
{"x": 1.5, "y": 1},
|
||||
{"x": 2.5, "y": 1},
|
||||
{"x": 3.5, "y": 1},
|
||||
{"x": 4.5, "y": 1},
|
||||
{"x": 5.5, "y": 1},
|
||||
{"x": 6.5, "y": 1},
|
||||
{"x": 7.5, "y": 1},
|
||||
{"x": 8.5, "y": 1},
|
||||
{"x": 9.5, "y": 1},
|
||||
{"x": 10.5, "y": 1},
|
||||
{"x": 11.5, "y": 1},
|
||||
{"x": 12.5, "y": 1},
|
||||
{"x": 13.5, "y": 1, "w": 1.5},
|
||||
|
||||
{"x": 15.5, "y": 1},
|
||||
|
||||
{"x": 0, "y": 2, "w": 1.75},
|
||||
{"x": 1.75, "y": 2},
|
||||
{"x": 2.75, "y": 2},
|
||||
{"x": 3.75, "y": 2},
|
||||
{"x": 4.75, "y": 2},
|
||||
{"x": 5.75, "y": 2},
|
||||
{"x": 6.75, "y": 2},
|
||||
{"x": 7.75, "y": 2},
|
||||
{"x": 8.75, "y": 2},
|
||||
{"x": 9.75, "y": 2},
|
||||
{"x": 10.75, "y": 2},
|
||||
{"x": 11.75, "y": 2},
|
||||
{"x": 12.75, "y": 2, "w": 2.25},
|
||||
|
||||
{"x": 0, "y": 3, "w": 1.25},
|
||||
{"x": 1.25, "y": 3},
|
||||
{"x": 2.25, "y": 3},
|
||||
{"x": 3.25, "y": 3},
|
||||
{"x": 4.25, "y": 3},
|
||||
{"x": 5.25, "y": 3},
|
||||
{"x": 6.25, "y": 3},
|
||||
{"x": 7.25, "y": 3},
|
||||
{"x": 8.25, "y": 3},
|
||||
{"x": 9.25, "y": 3},
|
||||
{"x": 10.25, "y": 3},
|
||||
{"x": 11.25, "y": 3},
|
||||
{"x": 12.25, "y": 3},
|
||||
{"x": 13.25, "y": 3, "w": 1.25},
|
||||
{"x": 14.5, "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": 2.75},
|
||||
{"x": 6.5, "y": 4, "w": 2.25},
|
||||
{"x": 8.75, "y": 4, "w": 1.25},
|
||||
{"x": 10, "y": 4, "w": 1.25},
|
||||
{"x": 11.25, "y": 4},
|
||||
{"x": 12.25, "y": 4, "w": 1.25},
|
||||
{"x": 13.5, "y": 4},
|
||||
{"x": 14.5, "y": 4},
|
||||
{"x": 15.5, "y": 4}
|
||||
]
|
||||
},
|
||||
"LAYOUT": {
|
||||
"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": 15.5, "y": 0},
|
||||
|
||||
{"x": 0, "y": 1, "w": 1.5},
|
||||
{"x": 1.5, "y": 1},
|
||||
{"x": 2.5, "y": 1},
|
||||
{"x": 3.5, "y": 1},
|
||||
{"x": 4.5, "y": 1},
|
||||
{"x": 5.5, "y": 1},
|
||||
{"x": 6.5, "y": 1},
|
||||
{"x": 7.5, "y": 1},
|
||||
{"x": 8.5, "y": 1},
|
||||
{"x": 9.5, "y": 1},
|
||||
{"x": 10.5, "y": 1},
|
||||
{"x": 11.5, "y": 1},
|
||||
{"x": 12.5, "y": 1},
|
||||
{"x": 13.5, "y": 1, "w": 1.5},
|
||||
|
||||
{"x": 15.5, "y": 1},
|
||||
|
||||
{"x": 0, "y": 2, "w": 1.75},
|
||||
{"x": 1.75, "y": 2},
|
||||
{"x": 2.75, "y": 2},
|
||||
{"x": 3.75, "y": 2},
|
||||
{"x": 4.75, "y": 2},
|
||||
{"x": 5.75, "y": 2},
|
||||
{"x": 6.75, "y": 2},
|
||||
{"x": 7.75, "y": 2},
|
||||
{"x": 8.75, "y": 2},
|
||||
{"x": 9.75, "y": 2},
|
||||
{"x": 10.75, "y": 2},
|
||||
{"x": 11.75, "y": 2},
|
||||
{"x": 12.75, "y": 2, "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.25},
|
||||
|
||||
{"x": 14.5, "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": 2.75},
|
||||
{"x": 6.5, "y": 4, "w": 2.25},
|
||||
{"x": 8.75, "y": 4, "w": 1.25},
|
||||
{"x": 10, "y": 4, "w": 1.25},
|
||||
{"x": 11.25, "y": 4},
|
||||
{"x": 12.25, "y": 4, "w": 1.25},
|
||||
{"x": 13.5, "y": 4},
|
||||
{"x": 14.5, "y": 4},
|
||||
{"x": 15.5, "y": 4}
|
||||
]
|
||||
},
|
||||
"LAYOUT_66_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": 15.5, "y": 0},
|
||||
|
||||
{"x": 0, "y": 1, "w": 1.5},
|
||||
{"x": 1.5, "y": 1},
|
||||
{"x": 2.5, "y": 1},
|
||||
{"x": 3.5, "y": 1},
|
||||
{"x": 4.5, "y": 1},
|
||||
{"x": 5.5, "y": 1},
|
||||
{"x": 6.5, "y": 1},
|
||||
{"x": 7.5, "y": 1},
|
||||
{"x": 8.5, "y": 1},
|
||||
{"x": 9.5, "y": 1},
|
||||
{"x": 10.5, "y": 1},
|
||||
{"x": 11.5, "y": 1},
|
||||
{"x": 12.5, "y": 1},
|
||||
{"x": 13.5, "y": 1, "w": 1.5},
|
||||
|
||||
{"x": 15.5, "y": 1},
|
||||
|
||||
{"x": 0, "y": 2, "w": 1.75},
|
||||
{"x": 1.75, "y": 2},
|
||||
{"x": 2.75, "y": 2},
|
||||
{"x": 3.75, "y": 2},
|
||||
{"x": 4.75, "y": 2},
|
||||
{"x": 5.75, "y": 2},
|
||||
{"x": 6.75, "y": 2},
|
||||
{"x": 7.75, "y": 2},
|
||||
{"x": 8.75, "y": 2},
|
||||
{"x": 9.75, "y": 2},
|
||||
{"x": 10.75, "y": 2},
|
||||
{"x": 11.75, "y": 2},
|
||||
{"x": 12.75, "y": 2, "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.25},
|
||||
|
||||
{"x": 14.5, "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},
|
||||
{"x": 12.25, "y": 4, "w": 1.25},
|
||||
|
||||
{"x": 13.5, "y": 4},
|
||||
{"x": 14.5, "y": 4},
|
||||
{"x": 15.5, "y": 4}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -121,7 +121,17 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
|
||||
}
|
||||
|
||||
#ifdef OLED_DRIVER_ENABLE
|
||||
oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_270; }
|
||||
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
|
||||
# ifndef SPLIT_KEYBOARD
|
||||
if (is_master) {
|
||||
# endif
|
||||
return OLED_ROTATION_270;
|
||||
# ifndef SPLIT_KEYBOARD
|
||||
} else {
|
||||
return rotation;
|
||||
}
|
||||
# endif
|
||||
}
|
||||
#endif
|
||||
|
||||
uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
|
||||
|
||||
16
keyboards/crkbd/keymaps/gotham/README.md
Normal file
16
keyboards/crkbd/keymaps/gotham/README.md
Normal file
@@ -0,0 +1,16 @@
|
||||
# Gotham's custom CRKBD Layout
|
||||
|
||||
My take on the 40% layout with programming in mind. Do read about the layers, it helps with forming a mental model to remember the keymap better than just memorization.
|
||||
|
||||
## Layers
|
||||
- QWERTY: Base layer. The idea is to reduce thumb movement by placing commonly used keys and layers on resting thumb positions (center thumb keys). You might need to play around with TAPPING_TERM to find your perfect setting. Also, both Lower and Raise buttons appear on both halves for easy access (think of it as: middle thumb key is Lower, outer thumb key is Raise).
|
||||
- LOWER: Numbers, common symbols and navigation. Easiest layer to reach (middle thumb button on both halves). The nav is shaped as a T instead of an inverted T for a few reasons. First, Left and Right needed to be on the home row (since I use them a lot to navigate through code). But the Up key can't be on the top row because numbers occupy that space. So I moved the Up and Down keys one key down. It takes some getting used to, but I find this a great balance without separating the nav and number rows. The nav cluster also contains Home and End keys below Left and Right, making it a breeze to navigate through code.
|
||||
- RAISE: All symbols are here, arranged in a way that can be (kind of) deduced more by logic and less by memory. On the left hand, the first 2 cols contain the symbols for shifted numbers 1-6, with ! and @ in the home row instead of the top row. Think of the 3 rows as symbols for 3 and 4, 1 and 2, 5 and 6). The next 2 cols contain common brackets. On the right hand is everything else. Note that -, _ and = are close to the home row because of how common they are in code. Operators (&, | and !) are on the top row for convinience. Just try and remember where +, *, < and > located. Admitedlly, the locations for these symbols could use improvement.
|
||||
- ADJUST: Contains settings and Function keys. This is placed on the bottom-right corner (triggerred by the pinky), since the thumb keys already have multiple uses.
|
||||
|
||||
## Custom OLED
|
||||
This keymap includes custom OLED font and code. The font contains some logos and status indidcators for some of the features I use (RGB and Audio). Enable OLED in rukes.mk to check it out. Feel free to reuse the font or parts of it.
|
||||
__KNOWN BUG:__ When the computer sleeps, one of the OLEDs is always on (they don't turn off on their own, and the timeout doesn't work). I haven't been able to figure out what's going on there and am open to suggestions/PRs.
|
||||
|
||||
## Flashing
|
||||
Flash using `make crkbd:gotham:avrdude` for Pro Micro and `make crkbd:gotham:dfu` for Elite-C.
|
||||
88
keyboards/crkbd/keymaps/gotham/config.h
Normal file
88
keyboards/crkbd/keymaps/gotham/config.h
Normal file
@@ -0,0 +1,88 @@
|
||||
#pragma once
|
||||
|
||||
#define EE_HANDS
|
||||
#define SPLIT_USB_DETECT
|
||||
|
||||
#undef USE_I2C
|
||||
#undef SSD1306OLED
|
||||
|
||||
#define USE_SERIAL_PD2
|
||||
|
||||
#define IGNORE_MOD_TAP_INTERRUPT
|
||||
#define PERMISSIVE_HOLD
|
||||
#define TAPPING_TERM 250
|
||||
|
||||
#define NO_ACTION_ONESHOT
|
||||
|
||||
#ifdef AUDIO_ENABLE
|
||||
# define B5_AUDIO
|
||||
# define NO_MUSIC_MODE
|
||||
# define AUDIO_CLICKY
|
||||
#endif
|
||||
|
||||
#define OLED_FONT_H "keyboards/crkbd/keymaps/gotham/glcdfont.c"
|
||||
|
||||
#define RGBLIGHT_SLEEP
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
# undef RGBLED_NUM
|
||||
# define RGBLED_NUM 6
|
||||
# define RGBLIGHT_LIMIT_VAL 150
|
||||
# define RGBLIGHT_HUE_STEP 16
|
||||
# define RGBLIGHT_SAT_STEP 32
|
||||
# define RGBLIGHT_VAL_STEP 32
|
||||
|
||||
# define RGBLIGHT_EFFECT_RAINBOW_MOOD
|
||||
# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
|
||||
# define RGBLIGHT_EFFECT_KNIGHT
|
||||
#endif
|
||||
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
|
||||
# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
|
||||
# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash.
|
||||
# define RGB_MATRIX_HUE_STEP 32
|
||||
# define RGB_MATRIX_SAT_STEP 64
|
||||
# define RGB_MATRIX_VAL_STEP 64
|
||||
# define RGB_MATRIX_SPD_STEP 20
|
||||
# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR
|
||||
|
||||
/* Disable the animations you don't want/need. You will need to disable a good number of these *
|
||||
* because they take up a lot of space. Disable until you can successfully compile your firmware. */
|
||||
# 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_DUAL_BEACON
|
||||
# define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL
|
||||
# define DISABLE_RGB_MATRIX_CYCLE_SPIRAL
|
||||
# define DISABLE_RGB_MATRIX_RAINBOW_BEACON
|
||||
# define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS
|
||||
# define DISABLE_RGB_MATRIX_RAINDROPS
|
||||
# define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
|
||||
# define DISABLE_RGB_MATRIX_TYPING_HEATMAP
|
||||
# define DISABLE_RGB_MATRIX_DIGITAL_RAIN
|
||||
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE
|
||||
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
|
||||
# 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
|
||||
#endif
|
||||
18
keyboards/crkbd/keymaps/gotham/glcdfont.c
Normal file
18
keyboards/crkbd/keymaps/gotham/glcdfont.c
Normal file
@@ -0,0 +1,18 @@
|
||||
// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0.
|
||||
// See gfxfont.h for newer custom bitmap font info.
|
||||
// https://helixfonteditor.netlify.com/
|
||||
|
||||
#include "progmem.h"
|
||||
|
||||
// Standard ASCII 5x7 font
|
||||
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, 0x7C, 0x18, 0x24, 0x24, 0x18, 0x00, 0x18, 0x24, 0x24, 0x18, 0x7C, 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, 0x90, 0x90, 0x90, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x60, 0x30, 0x18, 0xF8, 0x18, 0x00, 0xC0, 0x70, 0x1C, 0x06, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0xC3, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x00, 0x00, 0x08, 0x08, 0x08, 0x00, 0x1C, 0x22, 0x41, 0x41, 0x41, 0x22, 0x1C, 0x00, 0x08, 0x08, 0x08, 0x00, 0x00, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0xF8, 0x0C, 0x04, 0xE7, 0xE4, 0xE4, 0x07, 0x04, 0xE4, 0xE7, 0xE4, 0x04, 0x07, 0xE4, 0xE4, 0xE7, 0x04, 0x0C, 0xF8, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F, 0x00, 0x14, 0x08, 0x14, 0x00, 0x00, 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F, 0x00, 0x22, 0x1C, 0x41, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x18, 0x0C, 0x06, 0x0C, 0x18, 0x30, 0x77, 0x77, 0x77, 0x00, 0x77, 0x77,
|
||||
0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x4A, 0x4F, 0x4A, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x60, 0x70, 0x3E, 0x1F, 0x19, 0x18, 0x0C, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x0C, 0x06, 0x07, 0xFC, 0x00, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFF, 0x80, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x1C, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, 0x1C, 0x22, 0x00, 0x00, 0x1C, 0x3E, 0x7F, 0x63, 0x41, 0x22, 0x1C, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x49, 0xFF, 0x00, 0x00, 0x0F, 0x1F, 0x3F, 0x38, 0x30, 0xFF, 0xFF, 0xFF, 0x30, 0x38, 0x3F, 0x1F, 0x0F, 0x00, 0x00, 0xFF, 0x49, 0x49, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x40, 0x60, 0x6A, 0x64, 0x6A, 0x60, 0x40, 0x00, 0x00, 0x00, 0x00, 0x04, 0x42, 0x69, 0x65, 0x65, 0x65, 0x69, 0x42, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x0C, 0x18, 0x30, 0x66, 0x66, 0x66, 0x00, 0x00, 0xFC, 0x24, 0x24, 0xFC, 0x24, 0x24, 0xFC, 0x24, 0x24, 0xFC, 0x24, 0x24, 0xFC, 0x24, 0x24, 0xFC, 0x24, 0x24, 0xFC, 0x24, 0x24, 0xFC, 0x24, 0x24, 0xFC, 0x00, 0x00, 0x00, 0xF0, 0x90, 0x90, 0xF0, 0x90, 0x90, 0xF0, 0x98, 0x9C, 0xF2, 0x22, 0x21, 0xE1, 0x01, 0x01, 0x01, 0xF1, 0x91, 0x91, 0xFA, 0x4C, 0x4C, 0xF8, 0x48, 0x48, 0xF8, 0x48, 0x48, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0E, 0x18, 0x30, 0x21, 0x21, 0x31, 0x18, 0x10, 0x30, 0x20, 0x60, 0x41, 0x60, 0x20, 0x30, 0x18, 0x30, 0x60, 0x40, 0x40, 0x47, 0x4C, 0x48, 0x68, 0x38, 0x1C, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x22, 0x41, 0x63, 0x7F, 0x3E, 0x1C,
|
||||
0x00, 0x00, 0x22, 0x1C, 0x00, 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x0F, 0x18, 0x10, 0x70, 0x10, 0x10, 0x70, 0x10, 0x13, 0x73, 0x13, 0x10, 0x70, 0x10, 0x10, 0x70, 0x10, 0x18, 0x0F, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x22, 0xC9, 0xD1, 0xC9, 0x22, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x10, 0x02, 0x38, 0xFC, 0xED, 0xFC, 0x38, 0x02, 0x10, 0x00, 0x00, 0x08, 0x0C, 0x7E, 0x7F, 0x7E, 0x0C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x09, 0x09, 0x09, 0x0F, 0x09, 0x09, 0x0F, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0F, 0x09, 0x09, 0x0F, 0x09, 0x09, 0x09, 0x0F, 0x00, 0x00, 0x00, 0x07, 0x04, 0x04, 0x07, 0x04, 0x04, 0x07, 0x04, 0x04, 0x0F, 0x09, 0x09, 0x0F, 0x00, 0x00, 0x00, 0x07, 0x04, 0x04, 0x07, 0x02, 0x02, 0x03, 0x02, 0x02, 0x03, 0x02, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
};
|
||||
28
keyboards/crkbd/keymaps/gotham/keycodes.h
Normal file
28
keyboards/crkbd/keymaps/gotham/keycodes.h
Normal file
@@ -0,0 +1,28 @@
|
||||
#pragma once
|
||||
|
||||
enum layers {
|
||||
_QWERTY,
|
||||
_LOWER,
|
||||
_RAISE,
|
||||
_ADJUST,
|
||||
};
|
||||
|
||||
enum custom_keycodes { QWERTY = SAFE_RANGE, LOWER, RAISE, ADJUST, RGBRST };
|
||||
|
||||
#define SFT_EQ MT(MOD_LSFT, KC_EQL)
|
||||
#define SFT_QT MT(MOD_RSFT, KC_QUOT)
|
||||
|
||||
#define SFT_A MT(MOD_LSFT, KC_A)
|
||||
#define CTL_Z MT(MOD_LCTL, KC_Z)
|
||||
|
||||
#define SFT_SCLN MT(MOD_RSFT, KC_SCLN)
|
||||
#define CTL_SLSH MT(MOD_RCTL, KC_SLSH)
|
||||
|
||||
#define LOW_SPC LT(_LOWER, KC_SPC)
|
||||
#define RAI_EQ LT(_RAISE, KC_EQL)
|
||||
#define RAI_ENT LT(_RAISE, KC_ENT)
|
||||
#define LOW_BSP LT(_LOWER, KC_BSPC)
|
||||
#define LOW_DEL LT(_LOWER, KC_DEL)
|
||||
#define ADJ_GRV LT(_ADJUST, KC_GRV)
|
||||
#define KC_ANGL LSFT(KC_COMM)
|
||||
#define KC_ANGR LSFT(KC_DOT)
|
||||
143
keyboards/crkbd/keymaps/gotham/keymap.c
Normal file
143
keyboards/crkbd/keymaps/gotham/keymap.c
Normal file
@@ -0,0 +1,143 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "keycodes.h"
|
||||
|
||||
#ifdef OLED_DRIVER_ENABLE
|
||||
# include "oled.c"
|
||||
#endif
|
||||
|
||||
#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
|
||||
# include "rgb.c"
|
||||
#endif
|
||||
|
||||
// clang-format off
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_QWERTY] = LAYOUT(
|
||||
//|-----------------------------------------------------| |-----------------------------------------------------|
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|
||||
SFT_EQ, SFT_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, SFT_SCLN,SFT_QT,
|
||||
//---------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|
||||
KC_LCTL, CTL_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, CTL_SLSH,ADJ_GRV,
|
||||
//---------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
|
||||
KC_LALT, LOW_SPC, RAI_EQ, RAI_ENT, LOW_BSP, KC_LGUI
|
||||
//|--------------------------| |--------------------------|
|
||||
|
||||
|
||||
),
|
||||
|
||||
[_LOWER] = LAYOUT(
|
||||
//|-----------------------------------------------------| |-----------------------------------------------------|
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|
||||
_______, KC_ANGL, KC_ANGR, KC_LPRN, KC_RPRN, KC_PGUP, KC_MINS, KC_LEFT, KC_UP, KC_RIGHT,KC_PLUS, _______,
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|
||||
_______, XXXXXXX, XXXXXXX, KC_LBRC, KC_RBRC, KC_PGDOWN, KC_UNDS, KC_HOME, KC_DOWN, KC_END, XXXXXXX, _______,
|
||||
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
|
||||
_______, _______, _______, _______, LOW_DEL, _______
|
||||
//|--------------------------| |--------------------------|
|
||||
),
|
||||
|
||||
[_RAISE] = LAYOUT(
|
||||
//|-----------------------------------------------------| |-----------------------------------------------------|
|
||||
KC_ESC, KC_HASH, KC_DLR, KC_LCBR, KC_RCBR, XXXXXXX, XXXXXXX, KC_AMPR, KC_PIPE, KC_EXLM, KC_ASTR, XXXXXXX,
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|
||||
_______, KC_EXLM, KC_AT, KC_LPRN, KC_RPRN, XXXXXXX, XXXXXXX, KC_UNDS, KC_EQL, KC_ANGL, KC_ANGR, XXXXXXX,
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|
||||
_______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, XXXXXXX, XXXXXXX, KC_MINS, KC_PLUS, XXXXXXX, KC_BSLS, _______,
|
||||
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
|
||||
_______, _______, _______, _______, _______, _______
|
||||
//|--------------------------| |--------------------------|
|
||||
),
|
||||
|
||||
[_ADJUST] = LAYOUT(
|
||||
//|-----------------------------------------------------| |-----------------------------------------------------|
|
||||
XXXXXXX, CK_RST, CK_DOWN, CK_UP, CK_TOGG, RGB_TOG, MU_TOG, KC_F12, KC_F7, KC_F8, KC_F9, XXXXXXX,\
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|
||||
XXXXXXX, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, RGB_MOD, MU_MOD, KC_F11, KC_F4, KC_F5, KC_F6, RESET, \
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|
||||
XXXXXXX, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, RGBRST, AU_TOG, KC_F10, KC_F1, KC_F2, KC_F3, _______,\
|
||||
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
|
||||
_______, _______, _______, _______, KC_VOLD, KC_VOLU \
|
||||
//|--------------------------| |--------------------------|
|
||||
)
|
||||
};
|
||||
// clang-format off
|
||||
|
||||
#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
|
||||
layer_state_t layer_state_set_user(layer_state_t state) {
|
||||
/* For any layer other than default, save current RGB state and switch to layer-based RGB */
|
||||
if (layer_state_cmp(state, 0)) {
|
||||
restore_rgb_config();
|
||||
} else {
|
||||
uint8_t layer = get_highest_layer(state);
|
||||
if (layer_state_cmp(layer_state, 0)) save_rgb_config();
|
||||
rgb_by_layer(layer);
|
||||
}
|
||||
return state;
|
||||
}
|
||||
#endif
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
#ifdef OLED_DRIVER_ENABLE
|
||||
if (record->event.pressed) {
|
||||
oled_timer = timer_read();
|
||||
add_keylog(keycode);
|
||||
}
|
||||
#endif
|
||||
|
||||
switch (keycode) {
|
||||
case LOWER:
|
||||
if (record->event.pressed) {
|
||||
layer_on(_LOWER);
|
||||
} else {
|
||||
layer_off(_LOWER);
|
||||
}
|
||||
return false;
|
||||
case RAISE:
|
||||
if (record->event.pressed) {
|
||||
layer_on(_RAISE);
|
||||
} else {
|
||||
layer_off(_RAISE);
|
||||
}
|
||||
return false;
|
||||
case ADJUST:
|
||||
if (record->event.pressed) {
|
||||
layer_on(_ADJUST);
|
||||
} else {
|
||||
layer_off(_ADJUST);
|
||||
}
|
||||
return false;
|
||||
#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
|
||||
case RGB_MOD:
|
||||
case RGB_TOG:
|
||||
case RGB_HUI:
|
||||
case RGB_HUD:
|
||||
case RGB_SAI:
|
||||
case RGB_SAD:
|
||||
case RGB_VAI:
|
||||
case RGB_VAD:
|
||||
case RGB_SPI:
|
||||
case RGB_SPD:
|
||||
/* Override layer-based RGB and resume RGB effect to be able to preview changes */
|
||||
if (record->event.pressed) {
|
||||
restore_rgb_config();
|
||||
process_rgb(keycode, record);
|
||||
save_rgb_config();
|
||||
}
|
||||
return false;
|
||||
case RGBRST:
|
||||
if (record->event.pressed) {
|
||||
# ifdef RGBLIGHT_ENABLE
|
||||
eeconfig_update_rgblight_default();
|
||||
rgblight_enable();
|
||||
# elif RGB_MATRIX_ENABLE
|
||||
eeconfig_update_rgb_matrix_default();
|
||||
rgb_matrix_enable();
|
||||
# endif
|
||||
save_rgb_config();
|
||||
}
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
return true;
|
||||
}
|
||||
265
keyboards/crkbd/keymaps/gotham/oled.c
Normal file
265
keyboards/crkbd/keymaps/gotham/oled.c
Normal file
@@ -0,0 +1,265 @@
|
||||
#pragma once
|
||||
|
||||
extern uint8_t is_master;
|
||||
|
||||
#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
|
||||
# include "rgb.c"
|
||||
#endif
|
||||
|
||||
#ifdef AUDIO_ENABLE
|
||||
extern audio_config_t audio_config;
|
||||
#endif
|
||||
|
||||
// 5x3 Logos
|
||||
|
||||
void render_corne_logo(void) {
|
||||
static const char PROGMEM font_logo[16] = {0x80, 0x81, 0x82, 0x83, 0x84, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0};
|
||||
oled_write_P(font_logo, false);
|
||||
};
|
||||
|
||||
void render_qmk_logo(void) {
|
||||
static const char PROGMEM font_qmk_logo[16] = {0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0};
|
||||
oled_write_P(font_qmk_logo, false);
|
||||
};
|
||||
|
||||
// 5x2 Keyboard, Controller logos
|
||||
|
||||
void render_keyboard(void) {
|
||||
static const char PROGMEM font_keyboard[11] = {0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0};
|
||||
oled_write_P(font_keyboard, false);
|
||||
};
|
||||
|
||||
void render_kb_split(void) {
|
||||
static const char PROGMEM font_kb_split[11] = {0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0};
|
||||
oled_write_P(font_kb_split, false);
|
||||
};
|
||||
|
||||
// 5x1 Layer indicator
|
||||
|
||||
void render_layer(void) {
|
||||
static const char PROGMEM font_layer[4][6] = {
|
||||
{0x85, 0x86, 0x87, 0x88, 0x89, 0},
|
||||
{0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0},
|
||||
{0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0},
|
||||
{0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0},
|
||||
};
|
||||
uint8_t layer = 0;
|
||||
if (layer_state_is(_LOWER)) {
|
||||
layer = 1;
|
||||
} else if (layer_state_is(_RAISE)) {
|
||||
layer = 2;
|
||||
} else if (layer_state_is(_ADJUST)) {
|
||||
layer = 3;
|
||||
}
|
||||
oled_write_P(font_layer[layer], false);
|
||||
};
|
||||
|
||||
// 2x1 Audio, clicky and RGB status indicators
|
||||
|
||||
#ifdef AUDIO_ENABLE
|
||||
void render_audio_status(void) {
|
||||
static const char PROGMEM font_audio_off[3] = {0x8f, 0x90, 0};
|
||||
static const char PROGMEM font_audio_on[3] = {0x91, 0x92, 0};
|
||||
oled_write_P(audio_config.enable ? font_audio_on : font_audio_off, false);
|
||||
};
|
||||
|
||||
void render_clicky_status(void) {
|
||||
static const char PROGMEM font_clicky_off[3] = {0xaf, 0xb0, 0};
|
||||
static const char PROGMEM font_clicky_on[3] = {0xb1, 0xb2, 0};
|
||||
oled_write_P(audio_config.clicky_enable ? font_clicky_on : font_clicky_off, false);
|
||||
};
|
||||
#endif
|
||||
|
||||
#if defined(RGB_MATRIX_ENABLE) || defined(RGBLIGHT_ENABLE)
|
||||
void render_rgb_status(void) {
|
||||
static const char PROGMEM font_rgb_off[3] = {0xcf, 0xd0, 0};
|
||||
static const char PROGMEM font_rgb_on[3] = {0xd1, 0xd2, 0};
|
||||
# ifdef RGBLIGHT_ENABLE
|
||||
bool rgb_enabled = rgblight_config.enable;
|
||||
# elif RGB_MATRIX_ENABLE
|
||||
bool rgb_enabled = rgb_matrix_config.enable;
|
||||
# endif
|
||||
oled_write_P(rgb_enabled ? font_rgb_on : font_rgb_off, false);
|
||||
};
|
||||
#endif
|
||||
|
||||
// 2x1 Ctrl, Alt, Shift, GUI, Mouse
|
||||
|
||||
void render_mod_ctrl(void) {
|
||||
static const char PROGMEM font_ctrl[3] = {0x93, 0x94, 0};
|
||||
oled_write_P(font_ctrl, false);
|
||||
};
|
||||
|
||||
void render_mod_alt(void) {
|
||||
static const char PROGMEM font_alt[3] = {0xb3, 0xb4, 0};
|
||||
oled_write_P(font_alt, false);
|
||||
};
|
||||
|
||||
void render_mod_shift(void) {
|
||||
static const char PROGMEM font_shift[3] = {0xd3, 0xd4, 0};
|
||||
oled_write_P(font_shift, false);
|
||||
};
|
||||
|
||||
void render_mod_gui(void) {
|
||||
static const char PROGMEM font_gui[3] = {0x95, 0x96, 0};
|
||||
oled_write_P(font_gui, false);
|
||||
};
|
||||
|
||||
#ifdef MOUSEKEY_ENABLE
|
||||
void render_mod_mouse(void) {
|
||||
static const char PROGMEM font_mouse[3] = {0x97, 0x98, 0};
|
||||
oled_write_P(font_mouse, false);
|
||||
};
|
||||
#endif
|
||||
|
||||
// 5x2 Mod and feature indicator clusters
|
||||
|
||||
void render_mod_status(void) {
|
||||
#ifdef NO_ACTION_ONESHOT
|
||||
uint8_t modifiers = get_mods();
|
||||
#else
|
||||
uint8_t modifiers = get_mods() | get_oneshot_mods();
|
||||
#endif
|
||||
|
||||
(modifiers & MOD_MASK_CTRL) ? render_mod_ctrl() : oled_write_P(PSTR(" "), false);
|
||||
oled_write_P(PSTR(" "), false);
|
||||
(modifiers & MOD_MASK_SHIFT) ? render_mod_shift() : oled_write_P(PSTR(" "), false);
|
||||
|
||||
(modifiers & MOD_MASK_ALT) ? render_mod_alt() : oled_write_P(PSTR(" "), false);
|
||||
oled_write_P(PSTR(" "), false);
|
||||
(modifiers & MOD_MASK_GUI) ? render_mod_gui() : oled_write_P(PSTR(" "), false);
|
||||
}
|
||||
|
||||
void render_feature_status(void) {
|
||||
#if defined(RGB_MATRIX_ENABLE) || defined(RGBLIGHT_ENABLE)
|
||||
render_rgb_status();
|
||||
#endif
|
||||
|
||||
#ifdef AUDIO_ENABLE
|
||||
oled_write_P(PSTR(" "), false);
|
||||
render_audio_status();
|
||||
#endif
|
||||
};
|
||||
|
||||
// Keylogger
|
||||
#define KEYLOGGER_LENGTH 5
|
||||
static uint16_t oled_timer = 0;
|
||||
static char keylog_str[KEYLOGGER_LENGTH + 1] = {"\n"};
|
||||
// clang-format off
|
||||
static const char PROGMEM code_to_name[0xFF] = {
|
||||
// 0 1 2 3 4 5 6 7 8 9 A B C D E F
|
||||
' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', // 0x
|
||||
'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '1', '2', // 1x
|
||||
'3', '4', '5', '6', '7', '8', '9', '0', 20, 19, 27, 26, 22, '-', '=', '[', // 2x
|
||||
']','\\', '#', ';','\'', '`', ',', '.', '/', 128, ' ', ' ', ' ', ' ', ' ', ' ', // 3x
|
||||
' ', ' ', ' ', ' ', ' ', ' ', 'P', 'S', ' ', ' ', ' ', ' ', 16, ' ', ' ', ' ', // 4x
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 5x
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 6x
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 7x
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 8x
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 9x
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Ax
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Bx
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Cx
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Dx
|
||||
'C', 'S', 'A', 'C', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Ex
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' // Fx
|
||||
};
|
||||
|
||||
void add_keylog(uint16_t keycode) {
|
||||
if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX) || (keycode >= QK_MODS && keycode <= QK_MODS_MAX)) {
|
||||
keycode = keycode & 0xFF;
|
||||
} else if (keycode > 0xFF) {
|
||||
keycode = 0;
|
||||
}
|
||||
|
||||
for (uint8_t i = (KEYLOGGER_LENGTH - 1); i > 0; --i) {
|
||||
keylog_str[i] = keylog_str[i - 1];
|
||||
}
|
||||
|
||||
if (keycode < (sizeof(code_to_name) / sizeof(char))) {
|
||||
keylog_str[0] = pgm_read_byte(&code_to_name[keycode]);
|
||||
}
|
||||
}
|
||||
|
||||
void render_keylogger_status(void) {
|
||||
oled_write(keylog_str, false);
|
||||
}
|
||||
|
||||
void render_prompt(void) {
|
||||
bool blink = (timer_read() % 1000) < 500;
|
||||
|
||||
if (layer_state_is(_LOWER)) {
|
||||
oled_write_ln_P(blink ? PSTR("> lo_") : PSTR("> lo "), false);
|
||||
} else if (layer_state_is(_RAISE)) {
|
||||
oled_write_ln_P(blink ? PSTR("> hi_") : PSTR("> hi "), false);
|
||||
} else if (layer_state_is(_ADJUST)) {
|
||||
oled_write_ln_P(blink ? PSTR("> aj_") : PSTR("> aj "), false);
|
||||
} else {
|
||||
oled_write_ln_P(blink ? PSTR("> _ ") : PSTR("> "), false);
|
||||
}
|
||||
};
|
||||
|
||||
void render_status_secondary(void) {
|
||||
oled_write_ln("", false);
|
||||
oled_write_ln("", false);
|
||||
|
||||
render_kb_split();
|
||||
|
||||
oled_write_ln("", false);
|
||||
oled_write_ln("", false);
|
||||
oled_write_ln("", false);
|
||||
|
||||
render_layer();
|
||||
|
||||
oled_write_ln("", false);
|
||||
oled_write_ln("", false);
|
||||
oled_write_ln("", false);
|
||||
|
||||
#if defined(RGB_MATRIX_ENABLE) || defined(RGBLIGHT_ENABLE) || defined(AUDIO_ENABLE)
|
||||
layer_state_is(_ADJUST) ? render_feature_status() : render_mod_status();
|
||||
#else
|
||||
render_mod_status();
|
||||
#endif
|
||||
};
|
||||
|
||||
void render_status_main(void) {
|
||||
oled_write_ln("", false);
|
||||
oled_write_ln("", false);
|
||||
|
||||
render_corne_logo();
|
||||
|
||||
oled_write_ln("", false);
|
||||
oled_write_ln("", false);
|
||||
oled_write_ln("", false);
|
||||
|
||||
render_qmk_logo();
|
||||
|
||||
oled_write_ln("", false);
|
||||
oled_write_ln("", false);
|
||||
oled_write_ln("", false);
|
||||
|
||||
render_prompt();
|
||||
}
|
||||
|
||||
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
|
||||
return OLED_ROTATION_270;
|
||||
}
|
||||
|
||||
void oled_task_user(void) {
|
||||
if (timer_elapsed(oled_timer) > 10000) {
|
||||
oled_off();
|
||||
return;
|
||||
}
|
||||
#ifndef SPLIT_KEYBOARD
|
||||
else {
|
||||
oled_on();
|
||||
}
|
||||
#endif
|
||||
|
||||
if (is_master) {
|
||||
render_status_main();
|
||||
} else {
|
||||
render_status_secondary();
|
||||
}
|
||||
}
|
||||
79
keyboards/crkbd/keymaps/gotham/rgb.c
Normal file
79
keyboards/crkbd/keymaps/gotham/rgb.c
Normal file
@@ -0,0 +1,79 @@
|
||||
#pragma once
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
extern rgblight_config_t rgblight_config;
|
||||
rgblight_config_t RGB_current_config;
|
||||
#endif
|
||||
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
extern rgb_config_t rgb_matrix_config;
|
||||
rgb_config_t RGB_current_config;
|
||||
#endif
|
||||
|
||||
void save_rgb_config(void) {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
RGB_current_config.enable = rgblight_config.enable;
|
||||
RGB_current_config.mode = rgblight_get_mode();
|
||||
RGB_current_config.speed = rgblight_get_speed();
|
||||
RGB_current_config.hue = rgblight_get_hue();
|
||||
RGB_current_config.sat = rgblight_get_sat();
|
||||
RGB_current_config.val = rgblight_get_val();
|
||||
#elif RGB_MATRIX_ENABLE
|
||||
RGB_current_config.enable = rgb_matrix_config.enable;
|
||||
RGB_current_config.mode = rgb_matrix_get_mode();
|
||||
RGB_current_config.speed = rgb_matrix_config.speed;
|
||||
RGB_current_config.hsv = rgb_matrix_config.hsv;
|
||||
#endif
|
||||
}
|
||||
|
||||
void restore_rgb_config(void) {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
rgblight_set_speed_noeeprom(RGB_current_config.speed);
|
||||
if (rgblight_config.mode != RGB_current_config.mode) {
|
||||
rgblight_mode_noeeprom(RGB_current_config.mode);
|
||||
}
|
||||
if ((RGB_current_config.hue != rgblight_config.hue) || (RGB_current_config.sat != rgblight_config.sat) || (RGB_current_config.val != rgblight_config.val)) {
|
||||
rgblight_sethsv_noeeprom(RGB_current_config.hue, RGB_current_config.sat, RGB_current_config.val);
|
||||
}
|
||||
if (rgblight_config.enable) {
|
||||
rgblight_enable_noeeprom();
|
||||
} else {
|
||||
rgblight_disable_noeeprom();
|
||||
}
|
||||
#elif RGB_MATRIX_ENABLE
|
||||
rgb_matrix_config.speed = RGB_current_config.speed;
|
||||
if (rgb_matrix_config.mode != RGB_current_config.mode) {
|
||||
rgb_matrix_mode_noeeprom(RGB_current_config.mode);
|
||||
}
|
||||
if ((RGB_current_config.hsv.h != rgb_matrix_config.hsv.h) || (RGB_current_config.hsv.s != rgb_matrix_config.hsv.s) || (RGB_current_config.hsv.v != rgb_matrix_config.hsv.v)) {
|
||||
rgb_matrix_sethsv_noeeprom(RGB_current_config.hsv.h, RGB_current_config.hsv.s, RGB_current_config.hsv.v);
|
||||
}
|
||||
if (rgb_matrix_config.enable) {
|
||||
rgb_matrix_enable_noeeprom();
|
||||
} else {
|
||||
rgb_matrix_disable_noeeprom();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void rgb_by_layer(int layer) {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
|
||||
#elif RGB_MATRIX_ENABLE
|
||||
rgb_matrix_mode_noeeprom(RGB_MATRIX_SOLID_COLOR);
|
||||
#endif
|
||||
|
||||
switch (layer) {
|
||||
case _ADJUST:
|
||||
rgblight_sethsv_noeeprom(9, 255, 255);
|
||||
break;
|
||||
case _RAISE:
|
||||
rgblight_sethsv_noeeprom(HSV_CYAN);
|
||||
break;
|
||||
case _LOWER:
|
||||
rgblight_sethsv_noeeprom(HSV_MAGENTA);
|
||||
break;
|
||||
default:
|
||||
rgblight_sethsv_noeeprom(HSV_RED);
|
||||
}
|
||||
}
|
||||
6
keyboards/crkbd/keymaps/gotham/rules.mk
Normal file
6
keyboards/crkbd/keymaps/gotham/rules.mk
Normal file
@@ -0,0 +1,6 @@
|
||||
MOUSEKEY_ENABLE = no
|
||||
EXTRAKEY_ENABLE = yes
|
||||
AUDIO_ENABLE = yes
|
||||
RGBLIGHT_ENABLE = yes
|
||||
OLED_DRIVER_ENABLE = yes
|
||||
LTO_ENABLE = yes
|
||||
18
keyboards/crkbd/keymaps/madhatter/config.h
Normal file
18
keyboards/crkbd/keymaps/madhatter/config.h
Normal file
@@ -0,0 +1,18 @@
|
||||
#pragma once
|
||||
|
||||
#define EE_HANDS
|
||||
|
||||
#define SSD1306OLED
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
# undef RGBLED_NUM
|
||||
# define RGBLIGHT_ANIMATIONS
|
||||
# define RGBLED_NUM 27
|
||||
# define RGBLIGHT_LIMIT_VAL 120
|
||||
# define RGBLIGHT_HUE_STEP 10
|
||||
# define RGBLIGHT_SAT_STEP 17
|
||||
# define RGBLIGHT_VAL_STEP 17
|
||||
#endif
|
||||
|
||||
#undef PRODUCT
|
||||
#define PRODUCT MadHatter Hacked Corne Keyboard
|
||||
215
keyboards/crkbd/keymaps/madhatter/keymap.c
Normal file
215
keyboards/crkbd/keymaps/madhatter/keymap.c
Normal file
@@ -0,0 +1,215 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
|
||||
#ifdef OLED_DRIVER_ENABLE
|
||||
# define KEYLOGGER_LENGTH 5
|
||||
static uint32_t oled_timer = 0;
|
||||
static char keylog_str[KEYLOGGER_LENGTH + 1] = {"\n"};
|
||||
static uint16_t log_timer = 0;
|
||||
// clang-format off
|
||||
static const char PROGMEM code_to_name[0xFF] = {
|
||||
// 0 1 2 3 4 5 6 7 8 9 A B c D E F
|
||||
' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', // 0x
|
||||
'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '1', '2', // 1x
|
||||
'3', '4', '5', '6', '7', '8', '9', '0', 20, 19, 27, 26, 22, '-', '=', '[', // 2x
|
||||
']','\\', '#', ';','\'', '`', ',', '.', '/', 128, ' ', ' ', ' ', ' ', ' ', ' ', // 3x
|
||||
' ', ' ', ' ', ' ', ' ', ' ', 'P', 'S', ' ', ' ', ' ', ' ', 16, ' ', ' ', ' ', // 4x
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 5x
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 6x
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 7x
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 8x
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 9x
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Ax
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Bx
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Cx
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Dx
|
||||
'C', 'S', 'A', 'C', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Ex
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' // Fx
|
||||
};
|
||||
|
||||
void add_keylog(uint16_t keycode);
|
||||
#endif
|
||||
|
||||
extern uint8_t is_master;
|
||||
|
||||
enum corny_layers {
|
||||
_QWERTY,
|
||||
_LOWER,
|
||||
_RAISE,
|
||||
_ADJUST,
|
||||
};
|
||||
|
||||
enum custom_keycodes {
|
||||
QWERTY = SAFE_RANGE,
|
||||
LOWER,
|
||||
RAISE,
|
||||
ADJUST,
|
||||
RGBRST
|
||||
};
|
||||
|
||||
#define LY_LWR MO(_LOWER)
|
||||
#define LY_RSE MO(_RAISE)
|
||||
|
||||
#define KY_CESC LCTL_T(KC_ESC)
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_QWERTY] = LAYOUT(
|
||||
//,-----------------------------------------------------. ,-----------------------------------------------------.
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|
||||
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
|
||||
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
|
||||
KC_LALT, LY_LWR, KC_LCMD, KC_SPC, LY_RSE, KC_ENT
|
||||
//`--------------------------' `--------------------------'
|
||||
|
||||
),
|
||||
|
||||
[_LOWER] = LAYOUT(
|
||||
//,-----------------------------------------------------. ,-----------------------------------------------------.
|
||||
KC_ESC, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|
||||
KC_LCTL, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT, KC_MINS, KC_EQL, KC_LCBR, KC_RCBR, KC_PIPE, KC_GRV,
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|
||||
KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UNDS, KC_PLUS, KC_LBRC, KC_RBRC, KC_BSLS, KC_TILD,
|
||||
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
|
||||
KC_LALT, LY_LWR, KC_LCMD, KC_SPC, LY_RSE, KC_ENT
|
||||
//`--------------------------' `--------------------------'
|
||||
),
|
||||
|
||||
[_RAISE] = LAYOUT(
|
||||
//,-----------------------------------------------------. ,-----------------------------------------------------.
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|
||||
KC_LCTL, XXXXXXX, KC_PGUP, KC_HOME, KC_END,KC_PGDN, KC_MINS, KC_EQL, KC_LCBR, KC_RCBR, KC_PIPE, KC_GRV,
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|
||||
KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UNDS, KC_PLUS, KC_LBRC, KC_RBRC, KC_BSLS, KC_TILD,
|
||||
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
|
||||
KC_LALT, LY_LWR, KC_LCMD, KC_SPC, LY_RSE, KC_ENT
|
||||
//`--------------------------' `--------------------------'
|
||||
),
|
||||
|
||||
[_ADJUST] = LAYOUT(
|
||||
//,-----------------------------------------------------. ,-----------------------------------------------------.
|
||||
RESET, KC_BTN1, KC_MS_U, KC_BTN2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|
||||
XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R, XXXXXXX, XXXXXXX, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX,
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|
||||
XXXXXXX, RGBRST, EEP_RST, AG_TOGG, XXXXXXX, XXXXXXX, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX,
|
||||
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
|
||||
KC_LALT, LY_LWR, KC_LCMD, KC_SPC, LY_RSE, KC_ENT
|
||||
//`--------------------------' `--------------------------'
|
||||
)
|
||||
};
|
||||
|
||||
layer_state_t layer_state_set_user(layer_state_t state) {
|
||||
return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
|
||||
}
|
||||
|
||||
int RGB_current_mode;
|
||||
|
||||
// Setting ADJUST layer RGB back to default
|
||||
void update_tri_layer_RGB(uint8_t layer1, uint8_t layer2, uint8_t layer3) {
|
||||
if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) {
|
||||
layer_on(layer3);
|
||||
} else {
|
||||
layer_off(layer3);
|
||||
}
|
||||
}
|
||||
|
||||
void matrix_init_user(void) {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
RGB_current_mode = rgblight_get_mode();
|
||||
#endif
|
||||
//SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h
|
||||
#ifdef SSD1306OLED
|
||||
iota_gfx_init(!has_usb()); // turns on the display
|
||||
#endif
|
||||
}
|
||||
|
||||
//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
|
||||
#ifdef SSD1306OLED
|
||||
|
||||
// When add source files to SRC in rules.mk, you can use functions.
|
||||
const char *read_layer_state(void);
|
||||
const char *read_logo(void);
|
||||
void set_keylog(uint16_t keycode, keyrecord_t *record);
|
||||
const char *read_keylog(void);
|
||||
const char *read_keylogs(void);
|
||||
|
||||
// const char *read_mode_icon(bool swap);
|
||||
// const char *read_host_led_state(void);
|
||||
// void set_timelog(void);
|
||||
// const char *read_timelog(void);
|
||||
|
||||
void matrix_scan_user(void) {
|
||||
iota_gfx_task();
|
||||
}
|
||||
|
||||
void matrix_render_user(struct CharacterMatrix *matrix) {
|
||||
if (is_master) {
|
||||
// If you want to change the display of OLED, you need to change here
|
||||
matrix_write_ln(matrix, read_layer_state());
|
||||
matrix_write_ln(matrix, read_keylog());
|
||||
//matrix_write_ln(matrix, read_keylogs());
|
||||
//matrix_write_ln(matrix, read_mode_icon(keymap_config.swap_lalt_lgui));
|
||||
//matrix_write_ln(matrix, read_host_led_state());
|
||||
//matrix_write_ln(matrix, read_timelog());
|
||||
} else {
|
||||
matrix_write(matrix, read_logo());
|
||||
}
|
||||
}
|
||||
|
||||
void matrix_update(struct CharacterMatrix *dest, const struct CharacterMatrix *source) {
|
||||
if (memcmp(dest->display, source->display, sizeof(dest->display))) {
|
||||
memcpy(dest->display, source->display, sizeof(dest->display));
|
||||
dest->dirty = true;
|
||||
}
|
||||
}
|
||||
|
||||
void iota_gfx_task_user(void) {
|
||||
struct CharacterMatrix matrix;
|
||||
matrix_clear(&matrix);
|
||||
matrix_render_user(&matrix);
|
||||
matrix_update(&display, &matrix);
|
||||
}
|
||||
#endif//SSD1306OLED
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
if (record->event.pressed) {
|
||||
#ifdef SSD1306OLED
|
||||
set_keylog(keycode, record);
|
||||
#endif
|
||||
// set_timelog();
|
||||
}
|
||||
|
||||
switch (keycode) {
|
||||
case LOWER:
|
||||
if (record->event.pressed) {
|
||||
layer_on(_LOWER);
|
||||
update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
|
||||
} else {
|
||||
layer_off(_LOWER);
|
||||
update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
|
||||
}
|
||||
return false;
|
||||
case RAISE:
|
||||
if (record->event.pressed) {
|
||||
layer_on(_RAISE);
|
||||
update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
|
||||
} else {
|
||||
layer_off(_RAISE);
|
||||
update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
|
||||
}
|
||||
return false;
|
||||
case ADJUST:
|
||||
if (record->event.pressed) {
|
||||
layer_on(_ADJUST);
|
||||
} else {
|
||||
layer_off(_ADJUST);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
11
keyboards/crkbd/keymaps/madhatter/rules.mk
Normal file
11
keyboards/crkbd/keymaps/madhatter/rules.mk
Normal file
@@ -0,0 +1,11 @@
|
||||
BOOTLOADER = atmel-dfu # Elite-C
|
||||
|
||||
MOUSEKEY_ENABLE = yes
|
||||
RGBLIGHT_ENABLE = yes
|
||||
|
||||
# If you want to change the display of OLED, you need to change here
|
||||
SRC += ./lib/glcdfont.c \
|
||||
./lib/rgb_state_reader.c \
|
||||
./lib/layer_state_reader.c \
|
||||
./lib/logo_reader.c \
|
||||
./lib/keylogger.c
|
||||
@@ -1,69 +1,86 @@
|
||||
# iso layout with a split spacebar
|
||||
# ISO layout with a split spacebar
|
||||
|
||||
i needed to have an ISO layout
|
||||
and i wanted to have a split spacebar
|
||||
i couldn't find anything ready so i cobbled this together
|
||||
I needed to have an ISO layout
|
||||
and I wanted to have a split spacebar
|
||||
I couldn't find anything ready
|
||||
so i cobbled this together
|
||||
|
||||
|
||||
|
||||
---- Layer 0 - BL
|
||||
this is basically the standard iso layout with the addition of the split spacebar
|
||||
## Layer 0 - BL
|
||||
|
||||
standard ISO layout with the addition of the split spacebar
|
||||
menu key (KC_APP) is used to move to the next layer
|
||||
the key in between the two spacebars is the function key
|
||||
*,-----------------------------------------------------------.
|
||||
*| ' | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = |Backsp |
|
||||
*|-----------------------------------------------------------|
|
||||
*| Tab | q | w | e | r | t | y | u | i | o | p | [ | ] |enter|
|
||||
*|------------------------------------------------------ |
|
||||
*| Caps | a | s | d | f | g | h | j | k | l | ; | ' | # | |
|
||||
*|-----------------------------------------------------------|
|
||||
*|Shft| < | z | x | c | v | b | n | m | , | . | / | Shift |
|
||||
*|-----------------------------------------------------------|
|
||||
*|Ctrl|Gui |Alt | Space | FN | Space |Alt |Gui | NL |Ctrl |
|
||||
*`-----------------------------------------------------------'
|
||||
|
||||
---- Layer 1 - FL
|
||||
```
|
||||
,-----------------------------------------------------------.
|
||||
| ' | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = |Backsp |
|
||||
|-----------------------------------------------------------|
|
||||
| Tab | q | w | e | r | t | y | u | i | o | p | [ | ] |enter|
|
||||
|------------------------------------------------------ |
|
||||
| Caps | a | s | d | f | g | h | j | k | l | ; | ' | # | |
|
||||
|-----------------------------------------------------------|
|
||||
|Shft| < | z | x | c | v | b | n | m | , | . | / | Shift |
|
||||
|-----------------------------------------------------------|
|
||||
|Ctrl|Gui |Alt | Space | FN | Space |Alt |Gui | NL |Ctrl |
|
||||
`-----------------------------------------------------------'
|
||||
```
|
||||
|
||||
## Layer 1 - FL
|
||||
|
||||
quite standard function layer
|
||||
arrow keys and mouse movement/buttons on the home row
|
||||
*,-----------------------------------------------------------.
|
||||
*|ESC|F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12| DEL |
|
||||
*|-----------------------------------------------------------|
|
||||
*| | | | | | | | | | |prt| | | |
|
||||
*|------------------------------------------------------ |
|
||||
*| |m l|m d|m u|m r| | | l | d | u | r | | | |
|
||||
*|-----------------------------------------------------------|
|
||||
*| | | | | |mb1|mb2| |hm |pgd|pgu|end| |
|
||||
*|-----------------------------------------------------------|
|
||||
*| | | | | | | | | | |
|
||||
*`-----------------------------------------------------------'
|
||||
|
||||
---- Layer 2 - NL
|
||||
```
|
||||
,-----------------------------------------------------------.
|
||||
|ESC|F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12| DEL |
|
||||
|-----------------------------------------------------------|
|
||||
| | | | | | | | | | |prt| | | |
|
||||
|------------------------------------------------------ |
|
||||
| |m l|m d|m u|m r| | | l | d | u | r | | | |
|
||||
|-----------------------------------------------------------|
|
||||
| | | | | |mb1|mb2| |hm |pgd|pgu|end| |
|
||||
|-----------------------------------------------------------|
|
||||
| | | | | | | | | | |
|
||||
`-----------------------------------------------------------'
|
||||
```
|
||||
|
||||
## Layer 2 - NL
|
||||
|
||||
numbers numbers numbers...
|
||||
first key (top left) to return to BL
|
||||
menu key (KC_APP) is used to move to the next layer
|
||||
*,-----------------------------------------------------------.
|
||||
*|BL | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | | | |
|
||||
*|-----------------------------------------------------------|
|
||||
*| | 4 | 5 | 6 | * | / | | 4 | 5 | 6 | * | / | ] | |
|
||||
*|------------------------------------------------------ |
|
||||
*| | 7 | 8 | 9 | + | - | | 1 | 2 | 3 | + | - | | |
|
||||
*|-----------------------------------------------------------|
|
||||
*| | | 0 | , | . | = | | | 0 | , | . | = | |
|
||||
*|-----------------------------------------------------------|
|
||||
*| | | | | | | | | RL | |
|
||||
*`-----------------------------------------------------------'
|
||||
|
||||
```
|
||||
,-----------------------------------------------------------.
|
||||
|BL | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | | | |
|
||||
|-----------------------------------------------------------|
|
||||
| | 4 | 5 | 6 | * | / | | 4 | 5 | 6 | * | / | ] | |
|
||||
|------------------------------------------------------ |
|
||||
| | 7 | 8 | 9 | + | - | | 1 | 2 | 3 | + | - | | |
|
||||
|-----------------------------------------------------------|
|
||||
| | | 0 | , | . | = | | | 0 | , | . | = | |
|
||||
|-----------------------------------------------------------|
|
||||
| | | | | | | | | RL | |
|
||||
`-----------------------------------------------------------'
|
||||
```
|
||||
|
||||
---- Layer 3 - BL
|
||||
## Layer 3 - BL
|
||||
|
||||
all the fancy lights
|
||||
and useful reset button (top right)
|
||||
*,-----------------------------------------------------------.
|
||||
*|BL | | | | | | | | | | | | |Reset |
|
||||
*|-----------------------------------------------------------|
|
||||
*| |tog|mod|hui|hud| | |sai|sad|vai|vad| | | |
|
||||
*|------------------------------------------------------ |
|
||||
*| |sta|bre|rai|swi| | |sna|kni|gra|xms| | | |
|
||||
*|-----------------------------------------------------------|
|
||||
*| | |bd |bt |bi |bs | | | | | | | |
|
||||
*|-----------------------------------------------------------|
|
||||
*| | | | | | | | | BL | |
|
||||
*`-----------------------------------------------------------'
|
||||
|
||||
```
|
||||
,-----------------------------------------------------------.
|
||||
|BL | | | | | | | | | | | | |Reset |
|
||||
|-----------------------------------------------------------|
|
||||
| |tog|mod|hui|hud| | |sai|sad|vai|vad| | | |
|
||||
|------------------------------------------------------ |
|
||||
| |sta|bre|rai|swi| | |sna|kni|gra|xms| | | |
|
||||
|-----------------------------------------------------------|
|
||||
| | |bd |bt |bi |bs | | | | | | | |
|
||||
|-----------------------------------------------------------|
|
||||
| | | | | | | | | BL | |
|
||||
`-----------------------------------------------------------'
|
||||
```
|
||||
|
||||
@@ -112,12 +112,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
* `-----------------------------------------------------------'
|
||||
*/
|
||||
[NL] = LAYOUT_60_iso_split(
|
||||
// 1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
||||
TG(NL), 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_4, KC_5, KC_6, KC_PAST, KC_PSLS, _______, KC_4, KC_5, KC_6, KC_PAST, KC_PSLS, _______,
|
||||
_______, KC_7, KC_8, KC_9, KC_PPLS, KC_PMNS, _______, KC_1, KC_2, KC_3, KC_PPLS, KC_PMNS, _______, _______,
|
||||
_______, KC_0, KC_COMM, KC_DOT, KC_EQL, _______, _______, _______, KC_0, KC_COMM, KC_DOT, KC_EQL, _______,
|
||||
_______, _______, _______, _______, MO(FL), _______, _______, _______, TG(RL), _______),
|
||||
// 1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
||||
TG(NL), KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, KC_P6, KC_P7, KC_P8, KC_P9, KC_P0, KC_PPLS, KC_PMNS, _______,
|
||||
_______, KC_P4, KC_P5, KC_P6, KC_PAST, KC_PSLS, _______, KC_P4, KC_P5, KC_P6, KC_PAST, KC_PSLS, _______,
|
||||
_______, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_PMNS, _______, KC_P1, KC_P2, KC_P3, KC_PPLS, KC_PMNS, _______, _______,
|
||||
_______, KC_P0, KC_COMM, KC_DOT, KC_PEQL, KC_PSLS, KC_PMNS, _______, KC_P0, KC_COMM, KC_DOT, KC_PEQL, _______,
|
||||
_______, _______, _______, _______, MO(FL), _______, _______, _______, TG(RL), _______),
|
||||
|
||||
/* Keymap RL: RGB Layer
|
||||
*
|
||||
@@ -150,6 +150,23 @@ void persistent_default_layer_set(uint16_t default_layer) {
|
||||
default_layer_set(default_layer);
|
||||
}
|
||||
|
||||
// always enable num lock on layer NL and disable on other layers
|
||||
// thanks to spidey3 & Erovia on discord
|
||||
layer_state_t layer_state_set_user(layer_state_t state) {
|
||||
switch (get_highest_layer(state)) {
|
||||
case NL:
|
||||
if (!host_keyboard_led_state().num_lock) {
|
||||
tap_code16(KC_NLCK);
|
||||
}
|
||||
break;
|
||||
default: // for any other layers, or the default layer
|
||||
if (host_keyboard_led_state().num_lock) {
|
||||
tap_code16(KC_NLCK);
|
||||
}
|
||||
break;
|
||||
}
|
||||
return state;
|
||||
}
|
||||
|
||||
// layer-activated RGB underglow
|
||||
|
||||
@@ -172,11 +189,11 @@ void matrix_scan_user(void) {
|
||||
break;
|
||||
case NL:
|
||||
RGB_NL_MODE;
|
||||
// RGB_NL_LIGHT;
|
||||
RGB_NL_LIGHT;
|
||||
break;
|
||||
case RL:
|
||||
RGB_RL_MODE;
|
||||
// RGB_RL_LIGHT;
|
||||
RGB_RL_LIGHT;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -21,19 +21,19 @@ enum layers {
|
||||
}
|
||||
|
||||
const layers_leds_map[] = {
|
||||
[_MAIN] = 17,
|
||||
[_INDEX] = 16,
|
||||
[_FN] = 15,
|
||||
[_MULTIMEDIA] = 14,
|
||||
[_EMOJI] = 13,
|
||||
[_EXT1] = 12,
|
||||
[_EXT2] = 11,
|
||||
[_EXT3] = 10,
|
||||
[_EXT4] = 9,
|
||||
[_EXT5] = 18,
|
||||
[_EXT6] = 19,
|
||||
[_RGB] = 20,
|
||||
[_CONFIG] = 21,
|
||||
[_MAIN] = 0,
|
||||
[_INDEX] = 1,
|
||||
[_FN] = 2,
|
||||
[_MULTIMEDIA] = 3,
|
||||
[_EMOJI] = 4,
|
||||
[_EXT1] = 5,
|
||||
[_EXT2] = 6,
|
||||
[_EXT3] = 7,
|
||||
[_EXT4] = 8,
|
||||
[_EXT5] = 9,
|
||||
[_EXT6] = 10,
|
||||
[_RGB] = 11,
|
||||
[_CONFIG] = 12,
|
||||
};
|
||||
|
||||
enum unicode_names {
|
||||
@@ -234,7 +234,7 @@ void rgb_matrix_indicators_user(void) {
|
||||
|
||||
// CapsLock Light
|
||||
if (IS_HOST_LED_ON(USB_LED_CAPS_LOCK)) {
|
||||
rgb_matrix_set_color(8, MAIN_COLOR[0], MAIN_COLOR[1], MAIN_COLOR[2]);
|
||||
rgb_matrix_set_color(30, MAIN_COLOR[0], MAIN_COLOR[1], MAIN_COLOR[2]);
|
||||
}
|
||||
|
||||
// Show Selected Layer
|
||||
|
||||
@@ -15,11 +15,11 @@ BOOTLOADER = atmel-dfu
|
||||
# comment out to disable the options.
|
||||
#
|
||||
# BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
|
||||
MOUSEKEY_ENABLE ?= yes # Mouse keys
|
||||
EXTRAKEY_ENABLE ?= yes # Audio control and System control
|
||||
CONSOLE_ENABLE ?= yes # Console for debug
|
||||
COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
||||
NKRO_ENABLE ?= yes # USB Nkey Rollover - not yet supported in LUFA
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = yes # Console for debug
|
||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||
NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
|
||||
|
||||
# Optimize size but this may cause error "relocation truncated to fit"
|
||||
#EXTRALDFLAGS = -Wl,--relax
|
||||
|
||||
@@ -14,15 +14,15 @@ BOOTLOADER = atmel-dfu
|
||||
# Build Options
|
||||
# comment out to disable the options.
|
||||
#
|
||||
BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration
|
||||
MOUSEKEY_ENABLE ?= no # Mouse keys
|
||||
EXTRAKEY_ENABLE ?= yes # Audio control and System control
|
||||
CONSOLE_ENABLE ?= no # Console for debug
|
||||
COMMAND_ENABLE ?= no # Commands for debug and configuration
|
||||
SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
|
||||
NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality
|
||||
AUDIO_ENABLE ?= no
|
||||
RGBLIGHT_ENABLE ?= no
|
||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
||||
MOUSEKEY_ENABLE = no # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = no # Console for debug
|
||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||
AUDIO_ENABLE = no
|
||||
RGBLIGHT_ENABLE = no
|
||||
|
||||
LAYOUTS = fullsize_ansi fullsize_iso
|
||||
|
||||
4
keyboards/gray_studio/space65/keymaps/madhatter/config.h
Normal file
4
keyboards/gray_studio/space65/keymaps/madhatter/config.h
Normal file
@@ -0,0 +1,4 @@
|
||||
#pragma once
|
||||
|
||||
#undef PRODUCT
|
||||
#define PRODUCT MadHatter\x27s Custom Spacc
|
||||
43
keyboards/gray_studio/space65/keymaps/madhatter/keymap.c
Normal file
43
keyboards/gray_studio/space65/keymaps/madhatter/keymap.c
Normal file
@@ -0,0 +1,43 @@
|
||||
/* Copyright 2019 Khader Syed
|
||||
*
|
||||
* 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 keyboard_layers {
|
||||
_QWERTY,
|
||||
_FNM
|
||||
};
|
||||
|
||||
#define FNM MO(_FNM)
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[_QWERTY] = LAYOUT(
|
||||
KC_GESC, 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_BSLS, KC_DEL, KC_HOME,
|
||||
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_BSPC, KC_PGUP,
|
||||
KC_GRV, 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_PGDN,
|
||||
KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
|
||||
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_SPC, FNM, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
|
||||
[_FNM] = LAYOUT(
|
||||
KC_GESC, 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_VOLD, KC_VOLU, KC_MFFD,
|
||||
KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, RGB_SPD, RGB_SPI, KC_TRNS, KC_TRNS, RESET, KC_MRWD,
|
||||
KC_TRNS, RGB_M_P, RGB_M_G, RGB_M_K, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_TRNS, KC_TRNS, KC_MPLY, KC_TRNS,
|
||||
AG_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BRID, KC_BRIU, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END
|
||||
),
|
||||
|
||||
};
|
||||
5
keyboards/gray_studio/space65/keymaps/madhatter/rules.mk
Normal file
5
keyboards/gray_studio/space65/keymaps/madhatter/rules.mk
Normal file
@@ -0,0 +1,5 @@
|
||||
EXTRAKEY_ENABLE = yes
|
||||
CONSOLE_ENABLE = no
|
||||
COMMAND_ENABLE = no
|
||||
SLEEP_LED_ENABLE = no
|
||||
NKRO_ENABLE = yes
|
||||
@@ -14,17 +14,17 @@ BOOTLOADER = halfkay
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
|
||||
MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700)
|
||||
EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
|
||||
CONSOLE_ENABLE ?= yes # Console for debug(+400)
|
||||
COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||
CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
|
||||
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 on B7 by default
|
||||
MIDI_ENABLE ?= no # MIDI controls
|
||||
UNICODE_ENABLE ?= no # Unicode
|
||||
BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
AUDIO_ENABLE ?= no # Audio output on port C6
|
||||
NKRO_ENABLE = no # USB Nkey Rollover
|
||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
|
||||
MIDI_ENABLE = no # MIDI controls
|
||||
UNICODE_ENABLE = no # Unicode
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
AUDIO_ENABLE = no # Audio output on port C6
|
||||
|
||||
@@ -15,21 +15,21 @@ BOOTLOADER = caterina
|
||||
# change to "no" to disable the options, or define them in the Makefile in
|
||||
# the appropriate keymap folder that will get included automatically
|
||||
#
|
||||
BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
|
||||
MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700)
|
||||
EXTRAKEY_ENABLE ?= no # Audio control and System control(+450)
|
||||
CONSOLE_ENABLE ?= no # Console for debug(+400)
|
||||
COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
||||
NKRO_ENABLE ?= no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality
|
||||
MIDI_ENABLE ?= no # MIDI controls
|
||||
AUDIO_ENABLE ?= no # Audio output on port C6
|
||||
UNICODE_ENABLE ?= no # Unicode
|
||||
BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
RGBLIGHT_ENABLE ?= no # Enable WS2812 RGB underlight.
|
||||
USE_I2C ?= no
|
||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
|
||||
EXTRAKEY_ENABLE = no # Audio control and System control(+450)
|
||||
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||
MIDI_ENABLE = no # MIDI controls
|
||||
AUDIO_ENABLE = no # Audio output on port C6
|
||||
UNICODE_ENABLE = no # Unicode
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
|
||||
USE_I2C = no
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
|
||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||
|
||||
CUSTOM_MATRIX = yes
|
||||
SRC += matrix.c \
|
||||
|
||||
@@ -20,7 +20,7 @@ MCU = cortex-m4
|
||||
ARMV = 7
|
||||
USE_FPU = yes
|
||||
# Address of the booloader in system memory
|
||||
STM32_BOOTLOADER_ADDRESS ?= 0x1FFF0000
|
||||
STM32_BOOTLOADER_ADDRESS = 0x1FFF0000
|
||||
|
||||
# Options to pass to dfu-util when flashing
|
||||
DFU_ARGS = -d 0483:df11 -a 0 -s 0x08000000:leave
|
||||
|
||||
@@ -20,7 +20,7 @@ MCU = cortex-m4
|
||||
ARMV = 7
|
||||
USE_FPU = yes
|
||||
# Address of the booloader in system memory
|
||||
STM32_BOOTLOADER_ADDRESS ?= 0x1FFF0000
|
||||
STM32_BOOTLOADER_ADDRESS = 0x1FFF0000
|
||||
|
||||
# Options to pass to dfu-util when flashing
|
||||
DFU_ARGS = -d 0483:df11 -a 0 -s 0x08000000:leave
|
||||
|
||||
@@ -75,11 +75,11 @@
|
||||
{"label":">", "x":10.25, "y":3},
|
||||
{"label":"?", "x":11.25, "y":3},
|
||||
{"label":"Shift", "x":12.25, "y":3, "w":1.75},
|
||||
{"label":"Up", "x":14.25, "y":3.25},
|
||||
{"label":"1", "x":15.5, "y":3},
|
||||
{"label":"2", "x":16.5, "y":3},
|
||||
{"label":"3", "x":17.5, "y":3},
|
||||
{"label":"Enter", "x":18.5, "y":3},
|
||||
{"label":"Up", "x":14.25, "y":3.25},
|
||||
{"label":"Ctrl", "x":0, "y":4, "w":1.25},
|
||||
{"label":"Win", "x":1.25, "y":4, "w":1.25},
|
||||
{"label":"Alt", "x":2.5, "y":4, "w":1.25},
|
||||
@@ -87,12 +87,12 @@
|
||||
{"label":"Ctrl", "x":10, "y":4},
|
||||
{"label":"Win", "x":11, "y":4},
|
||||
{"label":"Alt", "x":12, "y":4},
|
||||
{"label":"0", "x":16.5, "y":4},
|
||||
{"label":".", "x":17.5, "y":4},
|
||||
{"label":"Enter", "x":18.5, "y":4},
|
||||
{"label":"Left", "x":13.25, "y":4.25},
|
||||
{"label":"Down", "x":14.25, "y":4.25},
|
||||
{"label":"Right", "x":15.25, "y":4.25}
|
||||
{"label":"Right", "x":15.25, "y":4.25},
|
||||
{"label":"0", "x":16.5, "y":4},
|
||||
{"label":".", "x":17.5, "y":4},
|
||||
{"label":"Enter", "x":18.5, "y":4}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,19 +14,19 @@ BOOTLOADER = caterina
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
|
||||
MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700)
|
||||
EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
|
||||
CONSOLE_ENABLE ?= yes # Console for debug(+400)
|
||||
COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||
CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
|
||||
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 on B7 by default
|
||||
MIDI_ENABLE ?= no # MIDI support (+2400 to 4200, depending on config)
|
||||
UNICODE_ENABLE ?= no # Unicode
|
||||
BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
AUDIO_ENABLE ?= no # Audio output on port C6
|
||||
FAUXCLICKY_ENABLE ?= no # Use buzzer to emulate clicky switches
|
||||
RGBLIGHT_ENABLE ?= no
|
||||
NKRO_ENABLE = no # USB Nkey Rollover
|
||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
|
||||
MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
|
||||
UNICODE_ENABLE = no # Unicode
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
AUDIO_ENABLE = no # Audio output on port C6
|
||||
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||
RGBLIGHT_ENABLE = no
|
||||
|
||||
41
keyboards/helix/rev2/keymaps/froggy_106/config.h
Normal file
41
keyboards/helix/rev2/keymaps/froggy_106/config.h
Normal file
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
This is the c configuration file for the keymap
|
||||
|
||||
Copyright 2012 Jun Wako <wakojun@gmail.com>
|
||||
Copyright 2015 Jack Humbert
|
||||
|
||||
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
|
||||
|
||||
#undef TAPPING_TERM
|
||||
#define TAPPING_TERM 200
|
||||
#define ONESHOT_TAP_TOGGLE 5 /* Tapping this number of times holds the key until tapped this number of times again. */
|
||||
#define ONESHOT_TIMEOUT 5000 /* Time (in ms) before the one shot key is released */
|
||||
|
||||
// If you need more program area, try select and reduce rgblight modes to use.
|
||||
|
||||
// Selection of RGBLIGHT MODE to use.
|
||||
#if defined(LED_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
|
||||
#endif
|
||||
235
keyboards/helix/rev2/keymaps/froggy_106/helixfont.h
Normal file
235
keyboards/helix/rev2/keymaps/froggy_106/helixfont.h
Normal file
@@ -0,0 +1,235 @@
|
||||
// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0.
|
||||
// See gfxfont.h for newer custom bitmap font info.
|
||||
|
||||
#pragma once
|
||||
|
||||
#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,
|
||||
0xFC, 0xFE, 0x02, 0x82, 0x82, 0x82,
|
||||
0x82, 0x82, 0x82, 0xC2, 0x82, 0x02,
|
||||
0x02, 0xFE, 0x00, 0x00, 0xFE, 0xFE,
|
||||
0x02, 0x62, 0x62, 0x62, 0x62, 0xE2,
|
||||
0x62, 0x62, 0xE2, 0x02, 0x02, 0xFC,
|
||||
0x00, 0x00, 0x00, 0xF0, 0xFC, 0xFC,
|
||||
0xFC, 0x00, 0xFC, 0xFC, 0xF0, 0x80,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xF0,
|
||||
0x30, 0x40, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x20, 0x00, 0x00, 0x24, 0xA4,
|
||||
0xA4, 0xBC, 0xA4, 0x24, 0x24, 0x00,
|
||||
0x00, 0x00, 0x24, 0xA4, 0x24, 0x24,
|
||||
0x3C, 0x04, 0x04, 0x00, 0x00, 0x00,
|
||||
0xB8, 0xA4, 0xA4, 0xA4, 0xBC, 0x00,
|
||||
0x00, 0x00, 0x00, 0xFC, 0x00, 0xFC,
|
||||
0x00, 0x44, 0x44, 0x44, 0xDC, 0x44,
|
||||
0x04, 0x3C, 0x00, 0x00, 0x00, 0x00,
|
||||
0xFC, 0xFE, 0xFE, 0x7E, 0x7E, 0x7E,
|
||||
0x7E, 0x7E, 0x7E, 0x3E, 0x7E, 0xFE,
|
||||
0xFE, 0xFE, 0x00, 0x00, 0xFE, 0xFE,
|
||||
0xFE, 0x9E, 0x9E, 0x9E, 0x9E, 0x1E,
|
||||
0x9E, 0x9E, 0x1E, 0xFE, 0xFE, 0xFC,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 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,
|
||||
0x7F, 0x7F, 0x40, 0x41, 0x41, 0x41,
|
||||
0x41, 0x41, 0x41, 0x41, 0x41, 0x40,
|
||||
0x40, 0x7F, 0x00, 0x00, 0x7F, 0x7F,
|
||||
0x40, 0x40, 0x40, 0x40, 0x40, 0x41,
|
||||
0x40, 0x40, 0x43, 0x40, 0x40, 0x7F,
|
||||
0x00, 0x20, 0x3C, 0x3E, 0x3E, 0x3E,
|
||||
0x3E, 0x00, 0x3E, 0x3E, 0x3E, 0x3E,
|
||||
0x38, 0x00, 0x00, 0xF0, 0xFB, 0xFB,
|
||||
0x00, 0x50, 0x60, 0xFF, 0xFC, 0x3C,
|
||||
0x1E, 0x0E, 0x0C, 0xFC, 0xF8, 0xE8,
|
||||
0xE8, 0xE8, 0x30, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||
0x00, 0x04, 0x04, 0x1B, 0x04, 0x04,
|
||||
0x00, 0x00, 0x00, 0x00, 0x57, 0x50,
|
||||
0x57, 0x54, 0x57, 0x10, 0x50, 0x00,
|
||||
0x00, 0x00, 0x97, 0x94, 0x97, 0x94,
|
||||
0xF7, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xE4, 0x14, 0xF4, 0x94, 0xF7, 0x00,
|
||||
0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF,
|
||||
0x00, 0x38, 0xA4, 0xA4, 0xA5, 0x3C,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x7F, 0x7F, 0x7F, 0x7E, 0x7E, 0x7E,
|
||||
0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7F,
|
||||
0x7F, 0x7F, 0x00, 0x00, 0x7F, 0x7F,
|
||||
0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7E,
|
||||
0x7F, 0x7F, 0x7C, 0x7F, 0x7F, 0x7F,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xFE, 0xFE, 0x02, 0x62, 0x62, 0x62,
|
||||
0xE2, 0x62, 0x62, 0x62, 0xC2, 0x02,
|
||||
0x02, 0xFE, 0x00, 0x00, 0xFE, 0xFE,
|
||||
0x02, 0x82, 0xC2, 0xE2, 0xF2, 0x82,
|
||||
0x82, 0x82, 0x82, 0x02, 0x02, 0xFE,
|
||||
0x00, 0x00, 0x00, 0x3C, 0x66, 0x66,
|
||||
0x66, 0x66, 0x66, 0x66, 0x66, 0x66,
|
||||
0x00, 0x00, 0x00, 0x07, 0x7F, 0xDF,
|
||||
0x00, 0x05, 0x03, 0x7F, 0x1F, 0x1E,
|
||||
0x3C, 0x38, 0x18, 0x1F, 0x0F, 0x0D,
|
||||
0x0D, 0x0D, 0x06, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x20, 0x20, 0x50,
|
||||
0x8C, 0x50, 0x20, 0x20, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x09, 0x09,
|
||||
0x06, 0x09, 0x09, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x1C, 0x12, 0x12, 0x12,
|
||||
0x1E, 0x10, 0x10, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xFF, 0x00, 0x73,
|
||||
0x84, 0xE7, 0x94, 0x94, 0x94, 0x67,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xFE, 0xFE, 0xFE, 0x9E, 0x9E, 0x9E,
|
||||
0x1E, 0x9E, 0x9E, 0x9E, 0x3E, 0xFE,
|
||||
0xFE, 0xFE, 0x00, 0x00, 0xFE, 0xFE,
|
||||
0xFE, 0x7E, 0x3E, 0x1E, 0x0E, 0x7E,
|
||||
0x7E, 0x7E, 0x7E, 0xFE, 0xFE, 0xFE,
|
||||
0x00, 0x00, 0x00, 0x3C, 0x66, 0x66,
|
||||
0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
|
||||
0x00, 0x00, 0x00, 0x07, 0x7F, 0xDF,
|
||||
0x00, 0x00, 0xE0, 0xF8, 0xFC, 0xFC,
|
||||
0xFC, 0xFC, 0xFC, 0xFC, 0xF0, 0x80,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xF0,
|
||||
0x3F, 0x7F, 0x40, 0x46, 0x46, 0x46,
|
||||
0x47, 0x46, 0x46, 0x46, 0x43, 0x40,
|
||||
0x40, 0x7F, 0x00, 0x00, 0x7F, 0x7F,
|
||||
0x40, 0x41, 0x43, 0x47, 0x4F, 0x41,
|
||||
0x41, 0x41, 0x41, 0x40, 0x40, 0x3F,
|
||||
0x00, 0x00, 0x00, 0x3E, 0x73, 0x60,
|
||||
0x70, 0x3E, 0x07, 0x03, 0x67, 0x3E,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
|
||||
0x06, 0x01, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x08, 0x08,
|
||||
0x36, 0x08, 0x08, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x1F, 0x00, 0x0E,
|
||||
0x10, 0x1C, 0x12, 0x12, 0x12, 0x12,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x3F, 0x7F, 0x7F, 0x79, 0x79, 0x79,
|
||||
0x78, 0x79, 0x79, 0x79, 0x7C, 0x7F,
|
||||
0x7F, 0x7F, 0x00, 0x00, 0x7F, 0x7F,
|
||||
0x7F, 0x7E, 0x7C, 0x78, 0x70, 0x7E,
|
||||
0x7E, 0x7E, 0x7E, 0x7F, 0x7F, 0x3F,
|
||||
0x00, 0x00, 0x00, 0x03, 0x03, 0x03,
|
||||
0x03, 0x3F, 0x63, 0x63, 0x63, 0x3F,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
|
||||
0x00, 0x00, 0x07, 0x1F, 0x3F, 0x0F,
|
||||
0x07, 0x0F, 0x3F, 0x3F, 0x0F, 0x00,
|
||||
0x03, 0x06, 0x00, 0xF0, 0xFB, 0xFB,
|
||||
};
|
||||
822
keyboards/helix/rev2/keymaps/froggy_106/keymap.c
Normal file
822
keyboards/helix/rev2/keymaps/froggy_106/keymap.c
Normal file
@@ -0,0 +1,822 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "keymap_jp.h"
|
||||
#include <string.h>
|
||||
#ifdef SSD1306OLED
|
||||
#include "ssd1306.h"
|
||||
#endif
|
||||
|
||||
extern uint8_t is_master;
|
||||
|
||||
#define DELAY_TIME 75
|
||||
static uint16_t key_timer;
|
||||
static uint16_t tap_timer;
|
||||
static uint16_t delay_registered_code;
|
||||
static uint8_t delay_registered_layer;
|
||||
static uint8_t delay_mat_row;
|
||||
static uint8_t delay_mat_col;
|
||||
static bool delay_key_stat;
|
||||
static bool delay_key_pressed;
|
||||
static bool tapping_key;
|
||||
|
||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||
// entirely and just use numbers.
|
||||
enum layer_number {
|
||||
_BASE = 0,
|
||||
_BASE_106,
|
||||
_OPT,
|
||||
_OPT_106,
|
||||
_SYM,
|
||||
_SYM_106,
|
||||
_NUM,
|
||||
_NUM_106,
|
||||
_FUNC,
|
||||
_LAYER_NUM,
|
||||
};
|
||||
bool RGBAnimation = false; //Flag for LED Layer color Refresh.
|
||||
|
||||
typedef union {
|
||||
uint32_t raw;
|
||||
struct {
|
||||
bool mac_mode:1;
|
||||
};
|
||||
} user_config_t;
|
||||
user_config_t user_config;
|
||||
|
||||
#define IS_MODE_106() ((default_layer_state & (1UL << _BASE_106)) != 0)
|
||||
#define IS_MODE_MAC() (user_config.mac_mode)
|
||||
#ifndef MAX
|
||||
#define MAX(X, Y) ((X) > (Y) ? (X) : (Y))
|
||||
#endif
|
||||
#ifndef MIN
|
||||
#define MIN(X, Y) ((X) < (Y) ? (X) : (Y))
|
||||
#endif
|
||||
|
||||
enum custom_keycodes {
|
||||
QWERTY = SAFE_RANGE,
|
||||
EISU,
|
||||
KANA,
|
||||
RGBRST,
|
||||
RGBOFF,
|
||||
RGB1,
|
||||
RGB2,
|
||||
RGB3,
|
||||
OPT_TAP_SP,
|
||||
DESKTOP,
|
||||
MAC,
|
||||
WIN,
|
||||
L_SYM,
|
||||
L_NUM,
|
||||
TO_106,
|
||||
TO_101,
|
||||
};
|
||||
|
||||
enum macro_keycodes {
|
||||
KC_SAMPLEMACRO,
|
||||
};
|
||||
|
||||
//Macros
|
||||
#define M_SAMPLE M(KC_SAMPLEMACRO)
|
||||
|
||||
#if MATRIX_ROWS == 10 // HELIX_ROWS == 5
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/* Base
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | C+z | ; | [ | ( | < | { | | | | | | | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | KANA | P | K | R | A | F | | | | | | | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | BS | D | T | H | E | O | | | | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Shift| Y | S | N | I | U |Space | | | | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Ctrl | Alt | Gui | Sym | Num | OPT | Ent | | | | | | | |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_BASE] = LAYOUT( \
|
||||
LCTL(KC_Z), KC_SCLN, KC_LBRC, KC_LPRN, KC_LT, KC_LCBR, _______, _______, _______, _______, _______, _______, \
|
||||
KANA, KC_P, KC_K, KC_R, KC_A, KC_F, _______, _______, _______, _______, _______, _______, \
|
||||
KC_BSPC, KC_D, KC_T, KC_H, KC_E, KC_O, _______, _______, _______, _______, _______, _______, \
|
||||
OSM(MOD_LSFT), KC_Y, KC_S, KC_N, KC_I, KC_U, KC_SPC, _______, _______, _______, _______, _______, _______, _______, \
|
||||
OSM(MOD_LCTL), OSM(MOD_LALT), OSM(MOD_LGUI), L_SYM, L_NUM, OPT_TAP_SP, KC_ENT, _______, _______, _______, _______, _______, _______, _______ \
|
||||
),
|
||||
[_BASE_106] = LAYOUT( \
|
||||
LCTL(KC_Z), JP_SCLN, JP_LBRC, JP_LPRN, JP_LT, JP_LCBR, _______, _______, _______, _______, _______, _______, \
|
||||
KANA, KC_P, KC_K, KC_R, KC_A, KC_F, _______, _______, _______, _______, _______, _______, \
|
||||
KC_BSPC, KC_D, KC_T, KC_H, KC_E, KC_O, _______, _______, _______, _______, _______, _______, \
|
||||
OSM(MOD_LSFT), KC_Y, KC_S, KC_N, KC_I, KC_U, KC_SPC, _______, _______, _______, _______, _______, _______, _______, \
|
||||
OSM(MOD_LCTL), OSM(MOD_LALT), OSM(MOD_LGUI), L_SYM, L_NUM, OPT_TAP_SP, KC_ENT, _______, _______, _______, _______, _______, _______, _______ \
|
||||
),
|
||||
|
||||
/* Opt
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | Esc | : | ] | ) | > | } | | | | | | | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | EISU| J | M | B | ' | Tab | | | | | | | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | . | V | C | L | Z | Q | | | | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | X | G | W | - | Del | Esc | | | | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | , | DTOP | | | | | | | | | |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_OPT] = LAYOUT( \
|
||||
KC_ESC, KC_COLN,KC_RBRC, KC_RPRN,KC_GT, KC_RCBR, _______, _______, _______, _______, _______, _______, \
|
||||
EISU, KC_J, KC_M, KC_B, KC_QUOT, KC_TAB, _______, _______, _______, _______, _______, _______, \
|
||||
KC_DOT, KC_V, KC_C, KC_L, KC_Z, KC_Q, _______, _______, _______, _______, _______, _______, \
|
||||
_______, KC_X, KC_G, KC_W, KC_MINUS, KC_DEL, KC_ESC, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______,_______, KC_COMM,DESKTOP, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||
),
|
||||
[_OPT_106] = LAYOUT( \
|
||||
KC_ESC, JP_COLN,JP_RBRC, JP_RPRN,JP_GT, JP_RCBR, _______, _______, _______, _______, _______, _______, \
|
||||
EISU, KC_J, KC_M, KC_B, JP_QUOT, KC_TAB, _______, _______, _______, _______, _______, _______, \
|
||||
KC_DOT, KC_V, KC_C, KC_L, KC_Z, KC_Q, _______, _______, _______, _______, _______, _______, \
|
||||
_______, KC_X, KC_G, KC_W, JP_MINS, KC_DEL, KC_ESC, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______,_______, KC_COMM,DESKTOP, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||
),
|
||||
|
||||
/* Sym
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | Ins | GRV | | PU | PD | ^ | | | | | | | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | \ | # | = | ? | % | | | | | | | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | $ | upA | @ | ! | | | | | | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | CL | <- | dwA | -> | _ | & | | | | | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | PS | | ~ | | | | | | | | | |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_SYM] = LAYOUT( \
|
||||
KC_INS, KC_GRV, _______, KC_PGUP, KC_PGDN, KC_CIRC, _______, _______, _______, _______, _______, _______, \
|
||||
_______, KC_BSLS, KC_HASH, KC_EQL, KC_QUES, KC_PERC, _______, _______, _______, _______, _______, _______, \
|
||||
_______, KC_DLR, KC_UP, KC_AT, KC_EXLM, KC_PIPE, _______, _______, _______, _______, _______, _______, \
|
||||
KC_CAPS, KC_LEFT, KC_DOWN, KC_RIGHT,KC_UNDS, KC_AMPR, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, KC_PSCR, _______, KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||
),
|
||||
[_SYM_106] = LAYOUT( \
|
||||
KC_INS, JP_GRV, _______, KC_PGUP, KC_PGDN, JP_CIRC, _______, _______, _______, _______, _______, _______, \
|
||||
_______, JP_BSLS, JP_HASH, JP_EQL, JP_QUES, JP_PERC, _______, _______, _______, _______, _______, _______, \
|
||||
_______, JP_DLR, KC_UP, JP_AT, JP_EXLM, JP_PIPE, _______, _______, _______, _______, _______, _______, \
|
||||
KC_CAPS, KC_LEFT, KC_DOWN, KC_RIGHT,JP_UNDS, JP_AMPR, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, KC_PSCR, _______, JP_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||
),
|
||||
|
||||
/* Raise
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | | | Func | home | End | | | | | | | | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | * | 7 | 8 | 9 | - | | | | | | | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | . | / | 4 | 5 | 6 | + | | | | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | LN | 0 | 1 | 2 | 3 |C+S+F1| | | | | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | . | , | | | | | | | | | | |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_NUM] = LAYOUT( \
|
||||
_______, _______, OSL(_FUNC), KC_HOME, KC_END, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, KC_ASTR, KC_P7, KC_P8, KC_P9, KC_MINS, _______, _______, _______, _______, _______, _______, \
|
||||
KC_DOT, KC_SLSH, KC_P4, KC_P5, KC_P6, KC_PLUS, _______, _______, _______, _______, _______, _______, \
|
||||
KC_NLCK, KC_P0, KC_P1, KC_P2, KC_P3, LCTL(S(KC_F1)), _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, KC_PDOT, KC_COMM, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||
),
|
||||
[_NUM_106] = LAYOUT( \
|
||||
_______, _______, OSL(_FUNC), KC_HOME, KC_END, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, JP_ASTR, KC_P7, KC_P8, KC_P9, JP_MINS, _______, _______, _______, _______, _______, _______, \
|
||||
KC_DOT, JP_SLSH, KC_P4, KC_P5, KC_P6, JP_PLUS, _______, _______, _______, _______, _______, _______, \
|
||||
KC_NLCK, KC_P0, KC_P1, KC_P2, KC_P3, LCTL(S(KC_F1)), _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, KC_PDOT, JP_COMM, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||
),
|
||||
|
||||
/* Func
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* |RGBRST| Hue |To101 | RST | Mac | Win | | | | | | | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | RGB1 | VAL+ | F7 | F8 | F9 |To106 | | | | | | | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | RGB2 | VAL- | F4 | F5 | F6 | F12 | | | | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | RGB3 | F10 | F1 | F2 | F3 | F11 | | | | | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* |RGBOFF| | | | | | | | | | | | | |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_FUNC] = LAYOUT( \
|
||||
RGBRST,RGB_HUI, TO_101, RESET, MAC, WIN, _______, _______, _______, _______, _______, _______, \
|
||||
RGB1, RGB_VAI, KC_F7, KC_F8, KC_F9, TO_106, _______, _______, _______, _______, _______, _______, \
|
||||
RGB2, RGB_VAD, KC_F4, KC_F5, KC_F6, KC_F12, _______, _______, _______, _______, _______, _______, \
|
||||
RGB3, KC_F10, KC_F1, KC_F2, KC_F3, KC_F11, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
RGBOFF,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||
)
|
||||
};
|
||||
#else
|
||||
#error "undefined keymaps"
|
||||
#endif
|
||||
|
||||
void set_mac_mode(bool enable) {
|
||||
if(enable){
|
||||
user_config.mac_mode = true;
|
||||
keymap_config.swap_lalt_lgui = false;
|
||||
keymap_config.swap_ralt_rgui = false;
|
||||
}else{
|
||||
user_config.mac_mode = false;
|
||||
keymap_config.swap_lalt_lgui = true;
|
||||
keymap_config.swap_ralt_rgui = true;
|
||||
}
|
||||
eeconfig_update_user(user_config.raw);
|
||||
}
|
||||
|
||||
void eeconfig_init_user(void) {
|
||||
user_config.raw = 0;
|
||||
eeconfig_update_user(user_config.raw);
|
||||
}
|
||||
|
||||
void keyboard_post_init_user(void) {
|
||||
user_config.raw = eeconfig_read_user();
|
||||
set_mac_mode(user_config.mac_mode);
|
||||
}
|
||||
|
||||
bool find_mairix(uint16_t keycode, uint8_t *row, uint8_t *col){
|
||||
int base_keymap = IS_MODE_106() ? _BASE_106 : _BASE;
|
||||
for(uint8_t i=0; i<MATRIX_ROWS; i++){
|
||||
for(uint8_t j=0; j<MATRIX_COLS; j++){
|
||||
if( pgm_read_word(&(keymaps[base_keymap][i][j]))==keycode){
|
||||
*row = i;
|
||||
*col = j;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void unregister_delay_code(void){
|
||||
if(delay_registered_code){
|
||||
unregister_code(delay_registered_code);
|
||||
if (delay_registered_code & QK_LSFT){
|
||||
unregister_code(KC_LSFT);
|
||||
}
|
||||
if (delay_registered_code & QK_LCTL){
|
||||
unregister_code(KC_LCTL);
|
||||
}
|
||||
if (delay_registered_code & QK_LALT){
|
||||
unregister_code(KC_LALT);
|
||||
}
|
||||
if (delay_registered_code & QK_LGUI){
|
||||
unregister_code(KC_LGUI);
|
||||
}
|
||||
delay_registered_code=0;
|
||||
delay_registered_layer=0;
|
||||
}
|
||||
}
|
||||
|
||||
void register_delay_code(uint8_t layer){
|
||||
if(delay_key_stat){
|
||||
unregister_delay_code();
|
||||
|
||||
uint16_t code = pgm_read_word(&(keymaps[layer][delay_mat_row][delay_mat_col]));
|
||||
if (code & QK_LSFT){
|
||||
register_code(KC_LSFT);
|
||||
}
|
||||
if (code & QK_LCTL){
|
||||
register_code(KC_LCTL);
|
||||
}
|
||||
if (code & QK_LALT){
|
||||
register_code(KC_LALT);
|
||||
}
|
||||
if (code & QK_LGUI){
|
||||
register_code(KC_LGUI);
|
||||
}
|
||||
register_code(code);
|
||||
delay_registered_code = code;
|
||||
delay_registered_layer = layer;
|
||||
delay_key_stat = false;
|
||||
tapping_key = true;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
struct keybuf {
|
||||
char col, row;
|
||||
char frame;
|
||||
};
|
||||
struct keybuf keybufs[256];
|
||||
unsigned char keybuf_begin, keybuf_end;
|
||||
|
||||
int col, row;
|
||||
#endif
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
col = record->event.key.col;
|
||||
row = record->event.key.row;
|
||||
if (record->event.pressed && ((row < 5 && is_master) || (row >= 5 && !is_master))) {
|
||||
int end = keybuf_end;
|
||||
keybufs[end].col = col;
|
||||
keybufs[end].row = row % 5;
|
||||
keybufs[end].frame = 0;
|
||||
keybuf_end ++;
|
||||
}
|
||||
#endif
|
||||
|
||||
if(tap_timer&&keycode!=OPT_TAP_SP){
|
||||
tapping_key = true;
|
||||
}
|
||||
|
||||
if(keycode==delay_registered_code){
|
||||
if (!record->event.pressed){
|
||||
unregister_delay_code();
|
||||
}
|
||||
}
|
||||
|
||||
switch (keycode) {
|
||||
case KC_SCLN:
|
||||
case KC_LBRC:
|
||||
case KC_LPRN:
|
||||
case KC_LT:
|
||||
case KC_LCBR:
|
||||
case KC_P:
|
||||
case KC_K:
|
||||
case KC_R:
|
||||
case KC_A:
|
||||
case KC_F:
|
||||
case KC_BSPC:
|
||||
case KC_D:
|
||||
case KC_T:
|
||||
case KC_H:
|
||||
case KC_E:
|
||||
case KC_O:
|
||||
case KC_Y:
|
||||
case KC_S:
|
||||
case KC_N:
|
||||
case KC_I:
|
||||
case KC_U:
|
||||
case LCTL(KC_Z):
|
||||
case KC_SPC:
|
||||
//case JP_SCLN: // == KC_SCLN
|
||||
case JP_LBRC:
|
||||
case JP_LPRN:
|
||||
//case JP_LT: // == KC_LT
|
||||
case JP_LCBR:
|
||||
if (IS_MODE_106()) {
|
||||
if (keycode == KC_LBRC || keycode == KC_LPRN || keycode == KC_LCBR)
|
||||
break;
|
||||
}else{
|
||||
if (keycode == JP_LBRC || keycode == JP_LPRN || keycode == JP_LCBR)
|
||||
break;
|
||||
}
|
||||
if (record->event.pressed) {
|
||||
if (IS_MODE_106())
|
||||
register_delay_code(_BASE_106);
|
||||
else
|
||||
register_delay_code(_BASE);
|
||||
if(find_mairix(keycode, &delay_mat_row, &delay_mat_col)){
|
||||
key_timer = timer_read();
|
||||
delay_key_stat = true;
|
||||
delay_key_pressed = true;
|
||||
}
|
||||
}else{
|
||||
delay_key_pressed = false;
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case L_SYM:
|
||||
if (record->event.pressed) {
|
||||
if (IS_MODE_106()) {
|
||||
register_delay_code(_SYM_106);
|
||||
layer_on(_SYM_106);
|
||||
}else{
|
||||
register_delay_code(_SYM);
|
||||
layer_on(_SYM);
|
||||
}
|
||||
}else{
|
||||
layer_off(_SYM);
|
||||
layer_off(_SYM_106);
|
||||
if(delay_registered_layer == _SYM || delay_registered_layer == _SYM_106) {
|
||||
unregister_delay_code();
|
||||
}
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case L_NUM:
|
||||
if (record->event.pressed) {
|
||||
if (IS_MODE_106()) {
|
||||
register_delay_code(_NUM_106);
|
||||
layer_on(_NUM_106);
|
||||
}else{
|
||||
register_delay_code(_NUM);
|
||||
layer_on(_NUM);
|
||||
}
|
||||
}else{
|
||||
layer_off(_NUM);
|
||||
layer_off(_NUM_106);
|
||||
if(delay_registered_layer == _NUM || delay_registered_layer == _NUM_106) {
|
||||
unregister_delay_code();
|
||||
}
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case OPT_TAP_SP:
|
||||
if (record->event.pressed) {
|
||||
tapping_key = false;
|
||||
if (IS_MODE_106()) {
|
||||
register_delay_code(_OPT_106);
|
||||
layer_on(_OPT_106);
|
||||
}else{
|
||||
register_delay_code(_OPT);
|
||||
layer_on(_OPT);
|
||||
}
|
||||
tap_timer = timer_read();
|
||||
}else{
|
||||
layer_off(_OPT);
|
||||
layer_off(_OPT_106);
|
||||
if(tapping_key==false && timer_elapsed(tap_timer) < TAPPING_TERM){
|
||||
SEND_STRING(" ");
|
||||
}else if(delay_registered_layer == _OPT || delay_registered_layer == _OPT_106) {
|
||||
unregister_delay_code();
|
||||
}
|
||||
tap_timer = 0;
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case EISU:
|
||||
if (record->event.pressed) {
|
||||
if(IS_MODE_MAC()){
|
||||
register_code(KC_LANG2);
|
||||
}else{
|
||||
SEND_STRING(SS_LALT("`"));
|
||||
}
|
||||
} else {
|
||||
unregister_code(KC_LANG2);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case KANA:
|
||||
if (record->event.pressed) {
|
||||
if(IS_MODE_MAC()){
|
||||
register_code(KC_LANG1);
|
||||
}else{
|
||||
SEND_STRING(SS_LALT("`"));
|
||||
}
|
||||
} else {
|
||||
unregister_code(KC_LANG1);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case DESKTOP:
|
||||
if (record->event.pressed) {
|
||||
if(IS_MODE_MAC()){
|
||||
register_code(KC_F11);
|
||||
}else{
|
||||
SEND_STRING(SS_LGUI("d"));
|
||||
}
|
||||
} else {
|
||||
unregister_code(KC_F11);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case RGBRST:
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
if (record->event.pressed) {
|
||||
eeconfig_update_rgblight_default();
|
||||
rgblight_enable();
|
||||
RGBAnimation = false;
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
case RGBOFF:
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
if (record->event.pressed) {
|
||||
rgblight_disable();
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
case RGB1:
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
if (record->event.pressed) {
|
||||
RGBAnimation = true;
|
||||
rgblight_mode(RGBLIGHT_MODE_RAINBOW_MOOD);
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
case RGB2:
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
if (record->event.pressed) {
|
||||
RGBAnimation = true;
|
||||
rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL + 1);
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
case RGB3:
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
if (record->event.pressed) {
|
||||
RGBAnimation = true;
|
||||
rgblight_mode(RGBLIGHT_MODE_KNIGHT);
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
case MAC:
|
||||
if (record->event.pressed) {
|
||||
set_mac_mode(true);
|
||||
}
|
||||
break;
|
||||
case WIN:
|
||||
if (record->event.pressed) {
|
||||
set_mac_mode(false);
|
||||
}
|
||||
break;
|
||||
case TO_101:
|
||||
if (record->event.pressed) {
|
||||
if (IS_MODE_106()) {
|
||||
set_single_persistent_default_layer(_BASE);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case TO_106:
|
||||
if (record->event.pressed) {
|
||||
if (!IS_MODE_106()) {
|
||||
set_single_persistent_default_layer(_BASE_106);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
//keyboard start-up code. Runs once when the firmware starts up.
|
||||
void matrix_init_user(void) {
|
||||
//SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h
|
||||
#ifdef SSD1306OLED
|
||||
iota_gfx_init(!has_usb()); // turns on the display
|
||||
#endif
|
||||
}
|
||||
|
||||
// LED Effect
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
unsigned char rgb[7][5][3];
|
||||
void led_ripple_effect(char r, char g, char b) {
|
||||
static int scan_count = -10;
|
||||
static int keys[] = { 6, 6, 6, 7, 7 };
|
||||
static int keys_sum[] = { 0, 6, 12, 18, 25 };
|
||||
|
||||
if (scan_count == -1) {
|
||||
rgblight_enable_noeeprom();
|
||||
rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT);
|
||||
} else if (scan_count >= 0 && scan_count < 5) {
|
||||
for (unsigned char c=keybuf_begin; c!=keybuf_end; c++) {
|
||||
int i = c;
|
||||
// FIXME:
|
||||
|
||||
int y = scan_count;
|
||||
int dist_y = abs(y - keybufs[i].row);
|
||||
for (int x=0; x<keys[y]; x++) {
|
||||
int dist = abs(x - keybufs[i].col) + dist_y;
|
||||
if (dist <= keybufs[i].frame) {
|
||||
int elevation = MAX(0, (8 + dist - keybufs[i].frame)) << 2;
|
||||
if (elevation) {
|
||||
if ((rgb[x][y][0] != 255) && r) { rgb[x][y][0] = MIN(255, elevation + rgb[x][y][0]); }
|
||||
if ((rgb[x][y][1] != 255) && g) { rgb[x][y][1] = MIN(255, elevation + rgb[x][y][1]); }
|
||||
if ((rgb[x][y][2] != 255) && b) { rgb[x][y][2] = MIN(255, elevation + rgb[x][y][2]); }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (scan_count == 5) {
|
||||
for (unsigned char c=keybuf_begin; c!=keybuf_end; c++) {
|
||||
int i = c;
|
||||
if (keybufs[i].frame < 18) {
|
||||
keybufs[i].frame ++;
|
||||
} else {
|
||||
keybuf_begin ++;
|
||||
}
|
||||
}
|
||||
} else if (scan_count >= 6 && scan_count <= 10) {
|
||||
int y = scan_count - 6;
|
||||
for (int x=0; x<keys[y]; x++) {
|
||||
int at = keys_sum[y] + ((y & 1) ? x : (keys[y] - x - 1));
|
||||
led[at].r = rgb[x][y][0];
|
||||
led[at].g = rgb[x][y][1];
|
||||
led[at].b = rgb[x][y][2];
|
||||
}
|
||||
rgblight_set();
|
||||
} else if (scan_count == 11) {
|
||||
memset(rgb, 0, sizeof(rgb));
|
||||
}
|
||||
scan_count++;
|
||||
if (scan_count >= 12) { scan_count = 0; }
|
||||
}
|
||||
#endif
|
||||
|
||||
layer_state_t layer_state_old;
|
||||
|
||||
//runs every scan cycle (a lot)
|
||||
void matrix_scan_user(void) {
|
||||
#ifdef SSD1306OLED
|
||||
iota_gfx_task(); // this is what updates the display continuously
|
||||
#endif
|
||||
|
||||
if(delay_key_stat && (timer_elapsed(key_timer) > DELAY_TIME)){
|
||||
if (IS_MODE_106())
|
||||
register_delay_code(_BASE_106);
|
||||
else
|
||||
register_delay_code(_BASE);
|
||||
if(!delay_key_pressed){
|
||||
unregister_delay_code();
|
||||
}
|
||||
}
|
||||
|
||||
if(layer_state_old != layer_state){
|
||||
for (int8_t i = _LAYER_NUM-1; i > _BASE_106; i--) {
|
||||
if(IS_LAYER_ON(i)){
|
||||
register_delay_code(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
layer_state_old = layer_state;
|
||||
}
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
if(!RGBAnimation){
|
||||
if(IS_LAYER_ON(_FUNC)){
|
||||
#ifdef RGBLED_BACK
|
||||
led_ripple_effect(127,23,0);
|
||||
#else
|
||||
rgblight_setrgb(127,23,0);
|
||||
#endif
|
||||
}else if(IS_LAYER_ON(_NUM)||IS_LAYER_ON(_NUM_106)){
|
||||
#ifdef RGBLED_BACK
|
||||
led_ripple_effect(127,0,61);
|
||||
#else
|
||||
rgblight_setrgb(127,0,61);
|
||||
#endif
|
||||
}else if(IS_LAYER_ON(_SYM)||IS_LAYER_ON(_SYM_106)){
|
||||
#ifdef RGBLED_BACK
|
||||
led_ripple_effect(0,127,0);
|
||||
#else
|
||||
rgblight_setrgb(0,127,0);
|
||||
#endif
|
||||
}else if(IS_LAYER_ON(_OPT)||IS_LAYER_ON(_OPT_106)){
|
||||
#ifdef RGBLED_BACK
|
||||
led_ripple_effect(127,0,100);
|
||||
#else
|
||||
rgblight_setrgb(127,0,100);
|
||||
#endif
|
||||
} else {
|
||||
#ifdef RGBLED_BACK
|
||||
led_ripple_effect(0,112,127);
|
||||
#else
|
||||
rgblight_setrgb(0,112,127);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
|
||||
#ifdef SSD1306OLED
|
||||
|
||||
void matrix_update(struct CharacterMatrix *dest,
|
||||
const struct CharacterMatrix *source) {
|
||||
if (memcmp(dest->display, source->display, sizeof(dest->display))) {
|
||||
memcpy(dest->display, source->display, sizeof(dest->display));
|
||||
dest->dirty = true;
|
||||
}
|
||||
}
|
||||
|
||||
// Render to OLED
|
||||
void render_status(struct CharacterMatrix *matrix) {
|
||||
|
||||
// froggy logo
|
||||
static char logo[4][17]=
|
||||
{
|
||||
{0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,0x70,0x71,0x72,0x73,0x74,0},
|
||||
{0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,0},
|
||||
{0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,0},
|
||||
{0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0},
|
||||
};
|
||||
|
||||
static char modectl[4][2][4]=
|
||||
{
|
||||
{
|
||||
{0x65,0x66,0x67,0}, //WIN
|
||||
{0x85,0x86,0x87,0}, //WIN
|
||||
},
|
||||
{
|
||||
{0xa5,0xa6,0xa7,0}, //US(101)
|
||||
{0xc5,0xc6,0xc7,0}, //US(101)
|
||||
},
|
||||
{
|
||||
{0xbd,0xbe,0xbf,0}, //MAC
|
||||
{0xdd,0xde,0xdf,0}, //MAC
|
||||
},
|
||||
{
|
||||
{0xba,0xbb,0xbc,0}, //JP(106)
|
||||
{0xda,0xdb,0xdc,0}, //JP(106)
|
||||
},
|
||||
};
|
||||
|
||||
static char indctr[8][2][4]=
|
||||
{
|
||||
// white icon
|
||||
{
|
||||
{0x60,0x61,0x62,0}, //NUM
|
||||
{0x63,0x64,0} //FUNC
|
||||
},
|
||||
{
|
||||
{0x80,0x81,0x82,0}, //NUM
|
||||
{0x83,0x84,0} //FUNC
|
||||
},
|
||||
{
|
||||
{0xa0,0xa1,0xa2,0}, //CAPS
|
||||
{0xa3,0xa4,0} //SCLK
|
||||
},
|
||||
{
|
||||
{0xc0,0xc1,0xc2,0}, //CAPS
|
||||
{0xc3,0xc4,0} //SCLK
|
||||
},
|
||||
// Black icon
|
||||
{
|
||||
{0x75,0x76,0x77,0}, //NUM
|
||||
{0x78,0x79,0} //FUNC
|
||||
},
|
||||
{
|
||||
{0x95,0x96,0x97,0}, //NUM
|
||||
{0x98,0x99,0} //FUNC
|
||||
},
|
||||
{
|
||||
{0xb5,0xb6,0xb7,0}, //CAPS
|
||||
{0xb8,0xb9,0} //SCLK
|
||||
},
|
||||
{
|
||||
{0xd5,0xd6,0xd7,0}, //CAPS
|
||||
{0xd8,0xd9,0} //SCLK
|
||||
},
|
||||
};
|
||||
|
||||
int rown = 0;
|
||||
int rowf = 0;
|
||||
int rowa = 0;
|
||||
int rows = 0;
|
||||
int rowm = 0;
|
||||
int rowj = 1;
|
||||
|
||||
//Set Indicator icon
|
||||
if (host_keyboard_leds() & (1<<USB_LED_NUM_LOCK)) { rown = 4; }
|
||||
if (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) { rowa = 4; }
|
||||
if (host_keyboard_leds() & (1<<USB_LED_SCROLL_LOCK)) { rows = 4; }
|
||||
if (IS_LAYER_ON(_FUNC)) { rowf = 4; }
|
||||
|
||||
//Set Mode icon
|
||||
if (IS_MODE_MAC()) { rowm = 2; }
|
||||
if (IS_MODE_106()) { rowj = 3; }
|
||||
|
||||
matrix_write(matrix, indctr[rown] [0]);
|
||||
matrix_write(matrix, indctr[rowf] [1]);
|
||||
matrix_write(matrix, modectl[rowm] [0]);
|
||||
matrix_write(matrix, logo[0]);
|
||||
matrix_write(matrix, indctr[rown+1][0]);
|
||||
matrix_write(matrix, indctr[rowf+1][1]);
|
||||
matrix_write(matrix, modectl[rowm] [1]);
|
||||
matrix_write(matrix, logo[1]);
|
||||
matrix_write(matrix, indctr[rowa+2][0]);
|
||||
matrix_write(matrix, indctr[rows+2][1]);
|
||||
matrix_write(matrix, modectl[rowj] [0]);
|
||||
matrix_write(matrix, logo[2]);
|
||||
matrix_write(matrix, indctr[rowa+3][0]);
|
||||
matrix_write(matrix, indctr[rows+3][1]);
|
||||
matrix_write(matrix, modectl[rowj] [1]);
|
||||
matrix_write(matrix, logo[3]);
|
||||
|
||||
}
|
||||
|
||||
void iota_gfx_task_user(void) {
|
||||
struct CharacterMatrix matrix;
|
||||
|
||||
#if DEBUG_TO_SCREEN
|
||||
if (debug_enable) {
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
matrix_clear(&matrix);
|
||||
if(is_master){
|
||||
render_status(&matrix);
|
||||
}
|
||||
matrix_update(&display, &matrix);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
// Local Variables:
|
||||
// mode: c++
|
||||
// truncate-lines: t
|
||||
// indent-tabs-mode: nil
|
||||
// End:
|
||||
85
keyboards/helix/rev2/keymaps/froggy_106/readme.md
Normal file
85
keyboards/helix/rev2/keymaps/froggy_106/readme.md
Normal file
@@ -0,0 +1,85 @@
|
||||
Froggy -one hand Helix- with 106-key mode
|
||||
======
|
||||
|
||||

|
||||
|
||||
## Features
|
||||
It is a one-handed keyboard with reference to Frogpad. Layout Designed by タクマ ([@humid](https://twitter.com/humid)).
|
||||
|
||||
This keymap has 106-key mode, This is usable when keyboard setting of OS is OADG 106/109 keyboard.
|
||||
|
||||
## Layout
|
||||
### Base
|
||||
```
|
||||
,-----------------------------------------.
|
||||
| C+z | ; | [ | ( | < | { |
|
||||
|------+------+------+------+------+------|
|
||||
| KANA | P | K | R | A | F |
|
||||
|------+------+------+------+------+------|
|
||||
| BS | D | T | H | E | O |
|
||||
|------+------+------+------+------+------+------.
|
||||
| Shift| Y | S | N | I | U | Space|
|
||||
|------+------+------+------+------+------+------|
|
||||
| Ctrl | Alt | win | Sym | Num | OPT | Ent |
|
||||
`------------------------------------------------'
|
||||
```
|
||||
|
||||
### Opt
|
||||
```
|
||||
,-----------------------------------------.
|
||||
| Esc | : | ] | ) | > | } |
|
||||
|------+------+------+------+------+------|
|
||||
| EISU | J | M | B | ' | Tab |
|
||||
|------+------+------+------+------+------|
|
||||
| . | V | C | L | Z | Q |
|
||||
|------+------+------+------+------+------+------.
|
||||
| | X | G | W | - | Del | Esc |
|
||||
|------+------+------+------+------+------+------|
|
||||
| | | | , | DTOP | | |
|
||||
`------------------------------------------------'
|
||||
```
|
||||
|
||||
### Num
|
||||
```
|
||||
,-----------------------------------------.
|
||||
| | | Func | home | End | |
|
||||
|------+------+------+------+------+------|
|
||||
| | * | 7 | 8 | 9 | - |
|
||||
|------+------+------+------+------+------|
|
||||
| . | / | 4 | 5 | 6 | + |
|
||||
|------+------+------+------+------+------+------.
|
||||
| LN | 0 | 1 | 2 | 3 |C+S+F1| |
|
||||
|------+------+------+------+------+------+------|
|
||||
| | | | , | | | |
|
||||
`------------------------------------------------'
|
||||
```
|
||||
|
||||
### Sym
|
||||
```
|
||||
,-----------------------------------------.
|
||||
| Ins | GRV | | PU | PD | ^ |
|
||||
|------+------+------+------+------+------|
|
||||
| | \ | # | = | ? | % |
|
||||
|------+------+------+------+------+------|
|
||||
| | $ | upA | @ | ! | | |
|
||||
|------+------+------+------+------+------+------.
|
||||
| CL | <- | dwA | -> | _ | & | |
|
||||
|------+------+------+------+------+------+------|
|
||||
| | | PS | | ~ | | |
|
||||
`-----------------------------------------------'
|
||||
```
|
||||
|
||||
### Func
|
||||
```
|
||||
,-----------------------------------------.
|
||||
|RGBRST| Hue | to101| RST | Mac | Win |
|
||||
|------+------+------+------+------+------|
|
||||
| RGB1 | VAL+ | F7 | F8 | F9 | to106|
|
||||
|------+------+------+------+------+------|
|
||||
| RGB2 | VAL- | F4 | F5 | F6 | F12 |
|
||||
|------+------+------+------+------+------+------.
|
||||
| RGB3 | F10 | F1 | F2 | F3 | F11 | |
|
||||
|------+------+------+------+------+------+------|
|
||||
|RGBOFF| | | | | | |
|
||||
`------------------------------------------------'
|
||||
```
|
||||
23
keyboards/helix/rev2/keymaps/froggy_106/rules.mk
Normal file
23
keyboards/helix/rev2/keymaps/froggy_106/rules.mk
Normal file
@@ -0,0 +1,23 @@
|
||||
# QMK Standard Build Options
|
||||
# change to "no" to disable the options, or define them in the Makefile in
|
||||
# the appropriate keymap folder that will get included automatically
|
||||
#
|
||||
# See TOP/keyboards/helix/rules.mk for a list of options that can be set.
|
||||
# See TOP/docs/config_options.md for more information.
|
||||
#
|
||||
LINK_TIME_OPTIMIZATION_ENABLE = no # if firmware size over limit, try this option
|
||||
|
||||
# Helix Spacific Build Options
|
||||
# you can uncomment and edit follows 7 Variables
|
||||
# jp: 以下の7つの変数を必要に応じて編集し、コメントアウトをはずします。
|
||||
HELIX_ROWS = 5 # Helix Rows is 4 or 5
|
||||
OLED_ENABLE = yes # OLED_ENABLE
|
||||
LOCAL_GLCDFONT = yes # use each keymaps "helixfont.h" insted of "common/glcdfont.c"
|
||||
LED_BACK_ENABLE = yes # LED backlight (Enable WS2812 RGB underlight.)
|
||||
LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
|
||||
LED_ANIMATIONS = yes # LED animations
|
||||
# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
|
||||
|
||||
# convert Helix-specific options (that represent combinations of standard options)
|
||||
# into QMK standard options.
|
||||
include $(strip $(KEYBOARD_LOCAL_FEATURES_MK))
|
||||
@@ -24,34 +24,16 @@ void matrix_init_kb(void) {
|
||||
matrix_init_user();
|
||||
}
|
||||
|
||||
void matrix_scan_kb(void) {
|
||||
// put your looping keyboard code here
|
||||
// runs every cycle (a lot)
|
||||
|
||||
matrix_scan_user();
|
||||
}
|
||||
|
||||
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
|
||||
// put your per-action keyboard code here
|
||||
// runs for every action, just before processing by the firmware
|
||||
|
||||
return process_record_user(keycode, record);
|
||||
}
|
||||
|
||||
void led_init_ports(void) {
|
||||
DDRB |= (1<<5) | (1<<6); // OUT
|
||||
setPinOutput(B5);
|
||||
setPinOutput(B6);
|
||||
}
|
||||
|
||||
void led_set_kb(uint8_t usb_led) {
|
||||
if (usb_led & (1<<USB_LED_CAPS_LOCK))
|
||||
PORTB &= ~(1<<5);
|
||||
else
|
||||
PORTB |= (1<<5);
|
||||
|
||||
if (usb_led & (1<<USB_LED_SCROLL_LOCK))
|
||||
PORTB &= ~(1<<6);
|
||||
else
|
||||
PORTB |= (1<<6);
|
||||
|
||||
led_set_user(usb_led);
|
||||
bool led_update_kb(led_t led_state) {
|
||||
bool res = led_update_user(led_state);
|
||||
if(res) {
|
||||
writePin(B5, !led_state.caps_lock);
|
||||
writePin(B6, !led_state.scroll_lock);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
@@ -14,8 +14,7 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#ifndef HID_LIBER_H
|
||||
#define HID_LIBER_H
|
||||
#pragma once
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
@@ -69,7 +68,3 @@
|
||||
/* Q */ { ___ , ___ , KQ2 , ___ , ___ , ___ , ___ , KQ7 }, \
|
||||
/* R */ { ___ , ___ , ___ , ___ , KR4 , ___ , ___ , ___ } \
|
||||
}
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
101
keyboards/hid_liber/info.json
Normal file
101
keyboards/hid_liber/info.json
Normal file
@@ -0,0 +1,101 @@
|
||||
{
|
||||
"keyboard_name": "bpiphany HIDLiberation",
|
||||
"url": "",
|
||||
"maintainer": "qmk",
|
||||
"width": 18.25,
|
||||
"height": 6.5,
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"label":"KG1", "x":0, "y":0},
|
||||
{"label":"KH7", "x":2, "y":0},
|
||||
{"label":"KJ7", "x":3, "y":0},
|
||||
{"label":"KJ6", "x":4, "y":0},
|
||||
{"label":"KJ1", "x":5, "y":0},
|
||||
{"label":"KO5", "x":6.5, "y":0},
|
||||
{"label":"KL1", "x":7.5, "y":0},
|
||||
{"label":"KA6", "x":8.5, "y":0},
|
||||
{"label":"KA7", "x":9.5, "y":0},
|
||||
{"label":"KD7", "x":11, "y":0},
|
||||
{"label":"KD5", "x":12, "y":0},
|
||||
{"label":"KD1", "x":13, "y":0},
|
||||
{"label":"KD2", "x":14, "y":0},
|
||||
{"label":"KB5", "x":15.25, "y":0},
|
||||
{"label":"KB3", "x":16.25, "y":0},
|
||||
{"label":"KO3", "x":17.25, "y":0},
|
||||
{"label":"KG7", "x":0, "y":1.5},
|
||||
{"label":"KG5", "x":1, "y":1.5},
|
||||
{"label":"KH5", "x":2, "y":1.5},
|
||||
{"label":"KJ5", "x":3, "y":1.5},
|
||||
{"label":"KI5", "x":4, "y":1.5},
|
||||
{"label":"KI7", "x":5, "y":1.5},
|
||||
{"label":"KK7", "x":6, "y":1.5},
|
||||
{"label":"KK5", "x":7, "y":1.5},
|
||||
{"label":"KL5", "x":8, "y":1.5},
|
||||
{"label":"KA5", "x":9, "y":1.5},
|
||||
{"label":"KC5", "x":10, "y":1.5},
|
||||
{"label":"KC7", "x":11, "y":1.5},
|
||||
{"label":"KL7", "x":12, "y":1.5},
|
||||
{"label":"KD6", "x":13, "y":1.5, "w":2},
|
||||
{"label":"KQ7", "x":15.25, "y":1.5},
|
||||
{"label":"KN7", "x":16.25, "y":1.5},
|
||||
{"label":"KM7", "x":17.25, "y":1.5},
|
||||
{"label":"KG6", "x":0, "y":2.5, "w":1.5},
|
||||
{"label":"KG3", "x":1.5, "y":2.5},
|
||||
{"label":"KH3", "x":2.5, "y":2.5},
|
||||
{"label":"KJ3", "x":3.5, "y":2.5},
|
||||
{"label":"KI3", "x":4.5, "y":2.5},
|
||||
{"label":"KI6", "x":5.5, "y":2.5},
|
||||
{"label":"KK6", "x":6.5, "y":2.5},
|
||||
{"label":"KK3", "x":7.5, "y":2.5},
|
||||
{"label":"KL3", "x":8.5, "y":2.5},
|
||||
{"label":"KA3", "x":9.5, "y":2.5},
|
||||
{"label":"KC3", "x":10.5, "y":2.5},
|
||||
{"label":"KC6", "x":11.5, "y":2.5},
|
||||
{"label":"KL6", "x":12.5, "y":2.5},
|
||||
{"label":"KD4", "x":13.5, "y":2.5, "w":1.5},
|
||||
{"label":"KP7", "x":15.25, "y":2.5},
|
||||
{"label":"KN5", "x":16.25, "y":2.5},
|
||||
{"label":"KM5", "x":17.25, "y":2.5},
|
||||
{"label":"KH6", "x":0, "y":3.5, "w":1.75},
|
||||
{"label":"KG4", "x":1.75, "y":3.5},
|
||||
{"label":"KH4", "x":2.75, "y":3.5},
|
||||
{"label":"KJ4", "x":3.75, "y":3.5},
|
||||
{"label":"KI4", "x":4.75, "y":3.5},
|
||||
{"label":"KI1", "x":5.75, "y":3.5},
|
||||
{"label":"KK1", "x":6.75, "y":3.5},
|
||||
{"label":"KK4", "x":7.75, "y":3.5},
|
||||
{"label":"KL4", "x":8.75, "y":3.5},
|
||||
{"label":"KA4", "x":9.75, "y":3.5},
|
||||
{"label":"KC4", "x":10.75, "y":3.5},
|
||||
{"label":"KC1", "x":11.75, "y":3.5},
|
||||
{"label":"KD0", "x":12.75, "y":3.5, "w":2.25},
|
||||
{"label":"KF6", "x":0, "y":4.5, "w":1.25},
|
||||
{"label":"KH1", "x":1.25, "y":4.5},
|
||||
{"label":"KG0", "x":2.25, "y":4.5},
|
||||
{"label":"KH0", "x":3.25, "y":4.5},
|
||||
{"label":"KJ0", "x":4.25, "y":4.5},
|
||||
{"label":"KI0", "x":5.25, "y":4.5},
|
||||
{"label":"KI2", "x":6.25, "y":4.5},
|
||||
{"label":"KK2", "x":7.25, "y":4.5},
|
||||
{"label":"KK0", "x":8.25, "y":4.5},
|
||||
{"label":"KL0", "x":9.25, "y":4.5},
|
||||
{"label":"KA0", "x":10.25, "y":4.5},
|
||||
{"label":"KC2", "x":11.25, "y":4.5},
|
||||
{"label":"KF4", "x":12.25, "y":4.5, "w":2.75},
|
||||
{"label":"KN1", "x":16.25, "y":4.5},
|
||||
{"label":"KO7", "x":0, "y":5.5, "w":1.25},
|
||||
{"label":"KE6", "x":1.25, "y":5.5, "w":1.25},
|
||||
{"label":"KB1", "x":2.5, "y":5.5, "w":1.25},
|
||||
{"label":"KP1", "x":3.75, "y":5.5, "w":6.25},
|
||||
{"label":"KB2", "x":10, "y":5.5, "w":1.25},
|
||||
{"label":"KR4", "x":11.25, "y":5.5, "w":1.25},
|
||||
{"label":"KA2", "x":12.5, "y":5.5, "w":1.25},
|
||||
{"label":"KO0", "x":13.75, "y":5.5, "w":1.25},
|
||||
{"label":"KN2", "x":15.25, "y":5.5},
|
||||
{"label":"KP2", "x":16.25, "y":5.5},
|
||||
{"label":"KQ2", "x":17.25, "y":5.5}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
#pragma once
|
||||
@@ -16,45 +16,26 @@
|
||||
*/
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||
// entirely and just use numbers.
|
||||
|
||||
#define _BL 0 // Base Layer
|
||||
#define _FL 1 // Media Layer
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_BL] = LAYOUT( \
|
||||
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_PSCR, KC_SLCK, KC_BRK, \
|
||||
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_BSPC, KC_INS, KC_HOME, 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_DEL, KC_END, 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_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_RSFT, KC_UP, \
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(_FL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
|
||||
),
|
||||
[_FL] = LAYOUT( \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_MSTP, KC_VOLU, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_MPLY, KC_MNXT, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||
),
|
||||
enum layer_names {
|
||||
_BL, // Base Layer
|
||||
_FL, // Media Layer
|
||||
};
|
||||
|
||||
void matrix_init_user(void) {
|
||||
|
||||
}
|
||||
|
||||
void matrix_scan_user(void) {
|
||||
|
||||
}
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
return true;
|
||||
}
|
||||
|
||||
void led_set_user(uint8_t usb_led) {
|
||||
|
||||
}
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_BL] = LAYOUT(
|
||||
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_PSCR, KC_SLCK, KC_BRK,
|
||||
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_BSPC, KC_INS, KC_HOME, 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_DEL, KC_END, 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_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_RSFT, KC_UP,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(_FL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
[_FL] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_MSTP, KC_VOLU,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_MPLY, KC_MNXT,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
};
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# ANSI Keymap for the HID Liberation Device
|
||||
# The default keymap for the HID Liberation Device
|
||||
|
||||
A basic keymap intended for the HID Liberation Device using the standard ANSI layout.
|
||||
|
||||
@@ -19,9 +19,9 @@ This keymap has two layers. To access the functions on the second layer, hold do
|
||||
|-----------------------------------------------------------| '-----------'
|
||||
|Caps | A| S| D| F| G| H| J| K| L| ;| '|Return |
|
||||
|-----------------------------------------------------------| ,---.
|
||||
|Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | |Up |
|
||||
|Sft |ISO| Z| X| C| V| B| N| M| ,| .| /|Shift | |Up |
|
||||
|-----------------------------------------------------------| ,-----------.
|
||||
|Ctl|Gui|Alt| Space |Alt|Gui|Fn |Ctl| |Lef|Dow|Rig|
|
||||
|Ctl |Gui |Alt | Space |Alt |Gui |Fn |Ctl | |Lef|Dow|Rig|
|
||||
`-----------------------------------------------------------' `-----------'
|
||||
|
||||
### Layer 2: Media Layer
|
||||
@@ -35,7 +35,7 @@ This keymap has two layers. To access the functions on the second layer, hold do
|
||||
|-----------------------------------------------------------| '-----------'
|
||||
| | | | | | | | | | | | | |
|
||||
|-----------------------------------------------------------| ,---.
|
||||
| | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | |
|
||||
|-----------------------------------------------------------| ,-----------.
|
||||
| | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | |
|
||||
`-----------------------------------------------------------' `-----------'
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
CONSOLE_ENABLE = yes
|
||||
@@ -1,15 +1,17 @@
|
||||
HID Liberation Device
|
||||
=====================
|
||||
DIY daughterboard for Filco Majestouch TKL developed by Geekhack and Deskthority communities.
|
||||
The PCB was engineered by bpiphany.
|
||||
# HID Liberation Device
|
||||
|
||||
DIY daughterboard for Filco Majestouch TKL developed by Geekhack and Deskthority communities. The PCB was engineered by bpiphany.
|
||||
|
||||
## Wiki on Deskthority.net
|
||||
- [Instructions](http://deskthority.net/wiki/HID_Liberation_Device_-_Instructions)
|
||||
- [Assembly Instructions](http://deskthority.net/wiki/HID_Liberation_Device_-_DIY_Instructions)
|
||||
|
||||
## Build
|
||||
* Keyboard Maintainer: [The QMK Community](https://github.com/qmk)
|
||||
* Hardware Supported: HID Liberation Device (ATmega32U4)
|
||||
* Hardware Availability: Discontinued
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make hid_liber:default
|
||||
|
||||
See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information.
|
||||
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).
|
||||
|
||||
@@ -17,7 +17,7 @@ BOOTLOADER = atmel-dfu
|
||||
BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = no # Console for debug
|
||||
CONSOLE_ENABLE = yes # Console for debug
|
||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||
CUSTOM_MATRIX = yes # Custom matrix file
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
|
||||
@@ -81,8 +81,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#define DEBOUNCE 20
|
||||
|
||||
/* ENCODER THINGS */
|
||||
|
||||
// #define NUMBER_OF_ENCODERS 2
|
||||
// #define ENCODER_DIRECTION_FLIP
|
||||
#define ENCODERS_PAD_A \
|
||||
{ F6, B4 }
|
||||
#define ENCODERS_PAD_B \
|
||||
|
||||
@@ -21,16 +21,18 @@
|
||||
// Keyboard Layers
|
||||
enum keyboard_layers{
|
||||
_BASE = 0,
|
||||
_CONTROL
|
||||
_CTRL
|
||||
};
|
||||
|
||||
// Tap Dance Declarations
|
||||
enum tap_dance { TD_TO_LED = 0, TD_TO_DEFAULT = 1 };
|
||||
void td_ctrl (qk_tap_dance_state_t *state, void *user_data);
|
||||
|
||||
enum tap_dance { CTRL = 0, BASE = 1 };
|
||||
|
||||
qk_tap_dance_action_t tap_dance_actions[] = {
|
||||
// Tap once for standard key, twice to toggle to control layer
|
||||
[TD_TO_LED] = ACTION_TAP_DANCE_DUAL_ROLE(KC_P, _CONTROL),
|
||||
[TD_TO_DEFAULT] = ACTION_TAP_DANCE_DUAL_ROLE(KC_P, _BASE)};
|
||||
// Tap once for standard key on base layer, twice to toggle to control layer
|
||||
[CTRL] = ACTION_TAP_DANCE_FN(td_ctrl),
|
||||
[BASE] = ACTION_TAP_DANCE_LAYER_MOVE(_______, _BASE)};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_BASE] = LAYOUT( /* Base */
|
||||
@@ -38,19 +40,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
KC_A, KC_B, KC_C, KC_D,
|
||||
KC_E, KC_F, KC_G, KC_H,
|
||||
KC_I, KC_J, KC_K, KC_L,
|
||||
KC_M, KC_N, KC_O, TD(TD_TO_LED)
|
||||
KC_M, KC_N, KC_O, TD(CTRL)
|
||||
),
|
||||
|
||||
[_CONTROL] = LAYOUT( /* LED Control */
|
||||
[_CTRL] = LAYOUT( /* Control */
|
||||
KC_NO, KC_NO,
|
||||
_______, RGB_MOD, RGB_RMOD, RGB_TOG,
|
||||
RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI,
|
||||
RGB_SAD, RGB_SAI, _______, _______,
|
||||
_______, _______, RESET, TD(TD_TO_DEFAULT)
|
||||
_______, _______, RESET, TD(BASE)
|
||||
),
|
||||
};
|
||||
|
||||
// Keyboard is setup to 'warp' the pressed key with F24,
|
||||
// Keyboard is setup to 'wrap' the pressed key with an unused Fxx key,
|
||||
// allowing for easy differentiation from a real keyboard.
|
||||
void encoder_update_user(uint8_t index, bool clockwise) {
|
||||
if (index == 0) { /* Left Encoder */
|
||||
@@ -99,3 +101,15 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// Below works around TD() not running key press through process_record_user.
|
||||
// Fixes bug of CTRL layer move key not being wrapped in by modifier on single tap
|
||||
void td_ctrl (qk_tap_dance_state_t *state, void *user_data) {
|
||||
if (state->count == 1) {
|
||||
register_code(KC_WRAP);
|
||||
tap_code(KC_P);
|
||||
unregister_code(KC_WRAP);
|
||||
} else if (state->count == 2) {
|
||||
layer_move(_CTRL);
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
# Hub16
|
||||
|
||||
Hub16 is a 16 Key Macro Pad with inbuilt USB 2.0 hub and dual rotary encoders.
|
||||
Hub16 is a 16 Key Macro Pad with an inbuilt USB 2.0 hub and dual rotary encoders.
|
||||
|
||||
For more information regarding the keyboard, please visit the [Hub16 Webpage](https://www.joshajohnson.com/hub16-keyboard/) or [GitHub Repo](https://github.com/joshajohnson/Hub16).
|
||||
For more information regarding the keyboard, please visit the [Hub16 Website](https://www.joshajohnson.com/hub16-keyboard/) or [GitHub Repo](https://github.com/joshajohnson/Hub16).
|
||||
|
||||
* Keyboard Maintainer: [Josh Johnson](https://github.com/joshajohnson)
|
||||
* Hardware Supported: Hub16 PCB (atmega32u4)
|
||||
|
||||
@@ -14,18 +14,18 @@ BOOTLOADER = atmel-dfu
|
||||
# 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 ?= yes # Console for debug
|
||||
COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = yes # Console for debug
|
||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
|
||||
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 on B7 by default
|
||||
MIDI_ENABLE ?= no # MIDI support
|
||||
UNICODE_ENABLE ?= no # Unicode
|
||||
BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
AUDIO_ENABLE ?= no # Audio output on port C6
|
||||
FAUXCLICKY_ENABLE ?= no # Use buzzer to emulate clicky switches
|
||||
NKRO_ENABLE = no # USB Nkey Rollover
|
||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
|
||||
MIDI_ENABLE = no # MIDI support
|
||||
UNICODE_ENABLE = no # Unicode
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
AUDIO_ENABLE = no # Audio output on port C6
|
||||
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||
|
||||
@@ -7,77 +7,289 @@
|
||||
"layouts": {
|
||||
"LAYOUT_all": {
|
||||
"layout": [{"label":"~", "x":0, "y":0},
|
||||
{"label":"!", "x":1, "y":0},
|
||||
{"label":"@", "x":2, "y":0},
|
||||
{"label":"#", "x":3, "y":0},
|
||||
{"label":"$", "x":4, "y":0},
|
||||
{"label":"%", "x":5, "y":0},
|
||||
{"label":"^", "x":6, "y":0},
|
||||
{"label":"&", "x":7, "y":0},
|
||||
{"label":"*", "x":8, "y":0},
|
||||
{"label":"(", "x":9, "y":0},
|
||||
{"label":")", "x":10, "y":0},
|
||||
{"label":"_", "x":11, "y":0},
|
||||
{"label":"+", "x":12, "y":0},
|
||||
{"label":"Back Space", "x":13, "y":0},
|
||||
{"label":"Delete", "x":14, "y":0},
|
||||
{"label":"Home", "x":15, "y":0},
|
||||
{"label":"Tab", "x":0, "y":1, "w":1.5},
|
||||
{"label":"Q", "x":1.5, "y":1},
|
||||
{"label":"W", "x":2.5, "y":1},
|
||||
{"label":"E", "x":3.5, "y":1},
|
||||
{"label":"R", "x":4.5, "y":1},
|
||||
{"label":"T", "x":5.5, "y":1},
|
||||
{"label":"Y", "x":6.5, "y":1},
|
||||
{"label":"U", "x":7.5, "y":1},
|
||||
{"label":"I", "x":8.5, "y":1},
|
||||
{"label":"O", "x":9.5, "y":1},
|
||||
{"label":"P", "x":10.5, "y":1},
|
||||
{"label":"{", "x":11.5, "y":1},
|
||||
{"label":"}", "x":12.5, "y":1},
|
||||
{"label":"|", "x":13.5, "y":1, "w":1.5},
|
||||
{"label":"End", "x":15, "y":1},
|
||||
{"label":"Caps Lock", "x":0, "y":2, "w":1.75},
|
||||
{"label":"A", "x":1.75, "y":2},
|
||||
{"label":"S", "x":2.75, "y":2},
|
||||
{"label":"D", "x":3.75, "y":2},
|
||||
{"label":"F", "x":4.75, "y":2},
|
||||
{"label":"G", "x":5.75, "y":2},
|
||||
{"label":"H", "x":6.75, "y":2},
|
||||
{"label":"J", "x":7.75, "y":2},
|
||||
{"label":"K", "x":8.75, "y":2},
|
||||
{"label":"L", "x":9.75, "y":2},
|
||||
{"label":":", "x":10.75, "y":2},
|
||||
{"label":"\"", "x":11.75, "y":2},
|
||||
{"label":"Enter", "x":12.75, "y":2, "w":2.25},
|
||||
{"label":"PgUp", "x":15, "y":2},
|
||||
{"label":"Shift", "x":0, "y":3, "w":1.25},
|
||||
{"label":"Hi", "x":1.25, "y":3},
|
||||
{"label":"Z", "x":2.25, "y":3},
|
||||
{"label":"X", "x":3.25, "y":3},
|
||||
{"label":"C", "x":4.25, "y":3},
|
||||
{"label":"V", "x":5.25, "y":3},
|
||||
{"label":"B", "x":6.25, "y":3},
|
||||
{"label":"N", "x":7.25, "y":3},
|
||||
{"label":"M", "x":8.25, "y":3},
|
||||
{"label":"<", "x":9.25, "y":3},
|
||||
{"label":">", "x":10.25, "y":3},
|
||||
{"label":"?", "x":11.25, "y":3},
|
||||
{"label":"Shift", "x":12.25, "y":3, "w":1.75},
|
||||
{"label":"↑", "x":14, "y":3},
|
||||
{"label":"PgDn", "x":15, "y":3},
|
||||
{"label":"Ctrl", "x":0, "y":4, "w":1.25},
|
||||
{"label":"Win", "x":1.25, "y":4, "w":1.25},
|
||||
{"label":"Alt", "x":2.5, "y":4, "w":1.25},
|
||||
{"x":3.75, "y":4, "w":2.25},
|
||||
{"x":6, "y":4, "w":1.25},
|
||||
{"x":7.25, "y":4, "w":2.75},
|
||||
{"label":"Alt", "x":10, "y":4, "w":1.25},
|
||||
{"label":"Win", "x":11.25, "y":4, "w":1.25},
|
||||
{"label":"←", "x":13, "y":4},
|
||||
{"label":"↓", "x":14, "y":4},
|
||||
{"label":"→", "x":15, "y":4}
|
||||
]
|
||||
{"label":"!", "x":1, "y":0},
|
||||
{"label":"@", "x":2, "y":0},
|
||||
{"label":"#", "x":3, "y":0},
|
||||
{"label":"$", "x":4, "y":0},
|
||||
{"label":"%", "x":5, "y":0},
|
||||
{"label":"^", "x":6, "y":0},
|
||||
{"label":"&", "x":7, "y":0},
|
||||
{"label":"*", "x":8, "y":0},
|
||||
{"label":"(", "x":9, "y":0},
|
||||
{"label":")", "x":10, "y":0},
|
||||
{"label":"_", "x":11, "y":0},
|
||||
{"label":"+", "x":12, "y":0},
|
||||
{"label":"Back Space", "x":13, "y":0},
|
||||
{"label":"Delete", "x":14, "y":0},
|
||||
{"label":"Home", "x":15, "y":0},
|
||||
{"label":"Tab", "x":0, "y":1, "w":1.5},
|
||||
{"label":"Q", "x":1.5, "y":1},
|
||||
{"label":"W", "x":2.5, "y":1},
|
||||
{"label":"E", "x":3.5, "y":1},
|
||||
{"label":"R", "x":4.5, "y":1},
|
||||
{"label":"T", "x":5.5, "y":1},
|
||||
{"label":"Y", "x":6.5, "y":1},
|
||||
{"label":"U", "x":7.5, "y":1},
|
||||
{"label":"I", "x":8.5, "y":1},
|
||||
{"label":"O", "x":9.5, "y":1},
|
||||
{"label":"P", "x":10.5, "y":1},
|
||||
{"label":"{", "x":11.5, "y":1},
|
||||
{"label":"}", "x":12.5, "y":1},
|
||||
{"label":"|", "x":13.5, "y":1, "w":1.5},
|
||||
{"label":"End", "x":15, "y":1},
|
||||
{"label":"Caps Lock", "x":0, "y":2, "w":1.75},
|
||||
{"label":"A", "x":1.75, "y":2},
|
||||
{"label":"S", "x":2.75, "y":2},
|
||||
{"label":"D", "x":3.75, "y":2},
|
||||
{"label":"F", "x":4.75, "y":2},
|
||||
{"label":"G", "x":5.75, "y":2},
|
||||
{"label":"H", "x":6.75, "y":2},
|
||||
{"label":"J", "x":7.75, "y":2},
|
||||
{"label":"K", "x":8.75, "y":2},
|
||||
{"label":"L", "x":9.75, "y":2},
|
||||
{"label":":", "x":10.75, "y":2},
|
||||
{"label":"\"", "x":11.75, "y":2},
|
||||
{"label":"Enter", "x":12.75, "y":2, "w":2.25},
|
||||
{"label":"PgUp", "x":15, "y":2},
|
||||
{"label":"Shift", "x":0, "y":3, "w":1.25},
|
||||
{"label":"Hi", "x":1.25, "y":3},
|
||||
{"label":"Z", "x":2.25, "y":3},
|
||||
{"label":"X", "x":3.25, "y":3},
|
||||
{"label":"C", "x":4.25, "y":3},
|
||||
{"label":"V", "x":5.25, "y":3},
|
||||
{"label":"B", "x":6.25, "y":3},
|
||||
{"label":"N", "x":7.25, "y":3},
|
||||
{"label":"M", "x":8.25, "y":3},
|
||||
{"label":"<", "x":9.25, "y":3},
|
||||
{"label":">", "x":10.25, "y":3},
|
||||
{"label":"?", "x":11.25, "y":3},
|
||||
{"label":"Shift", "x":12.25, "y":3, "w":1.75},
|
||||
{"label":"↑", "x":14, "y":3},
|
||||
{"label":"PgDn", "x":15, "y":3},
|
||||
{"label":"Ctrl", "x":0, "y":4, "w":1.25},
|
||||
{"label":"Win", "x":1.25, "y":4, "w":1.25},
|
||||
{"label":"Alt", "x":2.5, "y":4, "w":1.25},
|
||||
{"x":3.75, "y":4, "w":2.25},
|
||||
{"x":6, "y":4, "w":1.25},
|
||||
{"x":7.25, "y":4, "w":2.75},
|
||||
{"label":"Alt", "x":10, "y":4, "w":1.25},
|
||||
{"label":"Win", "x":11.25, "y":4, "w":1.25},
|
||||
{"label":"←", "x":13, "y":4},
|
||||
{"label":"↓", "x":14, "y":4},
|
||||
{"label":"→", "x":15, "y":4}
|
||||
]
|
||||
},
|
||||
"LAYOUT_65_ansi_blocker": {
|
||||
"layout": [{"label":"Esc", "x":0, "y":0},
|
||||
{"label":"!", "x":1, "y":0},
|
||||
{"label":"@", "x":2, "y":0},
|
||||
{"label":"#", "x":3, "y":0},
|
||||
{"label":"$", "x":4, "y":0},
|
||||
{"label":"%", "x":5, "y":0},
|
||||
{"label":"^", "x":6, "y":0},
|
||||
{"label":"&", "x":7, "y":0},
|
||||
{"label":"*", "x":8, "y":0},
|
||||
{"label":"(", "x":9, "y":0},
|
||||
{"label":")", "x":10, "y":0},
|
||||
{"label":"_", "x":11, "y":0},
|
||||
{"label":"+", "x":12, "y":0},
|
||||
{"label":"Backspace", "x":13, "y":0, "w":2},
|
||||
{"label":"Home", "x":15, "y":0},
|
||||
{"label":"Tab", "x":0, "y":1, "w":1.5},
|
||||
{"label":"Q", "x":1.5, "y":1},
|
||||
{"label":"W", "x":2.5, "y":1},
|
||||
{"label":"E", "x":3.5, "y":1},
|
||||
{"label":"R", "x":4.5, "y":1},
|
||||
{"label":"T", "x":5.5, "y":1},
|
||||
{"label":"Y", "x":6.5, "y":1},
|
||||
{"label":"U", "x":7.5, "y":1},
|
||||
{"label":"I", "x":8.5, "y":1},
|
||||
{"label":"O", "x":9.5, "y":1},
|
||||
{"label":"P", "x":10.5, "y":1},
|
||||
{"label":"{", "x":11.5, "y":1},
|
||||
{"label":"}", "x":12.5, "y":1},
|
||||
{"label":"|", "x":13.5, "y":1, "w":1.5},
|
||||
{"label":"End", "x":15, "y":1},
|
||||
{"label":"Caps Lock", "x":0, "y":2, "w":1.75},
|
||||
{"label":"A", "x":1.75, "y":2},
|
||||
{"label":"S", "x":2.75, "y":2},
|
||||
{"label":"D", "x":3.75, "y":2},
|
||||
{"label":"F", "x":4.75, "y":2},
|
||||
{"label":"G", "x":5.75, "y":2},
|
||||
{"label":"H", "x":6.75, "y":2},
|
||||
{"label":"J", "x":7.75, "y":2},
|
||||
{"label":"K", "x":8.75, "y":2},
|
||||
{"label":"L", "x":9.75, "y":2},
|
||||
{"label":":", "x":10.75, "y":2},
|
||||
{"label":"\"", "x":11.75, "y":2},
|
||||
{"label":"Enter", "x":12.75, "y":2, "w":2.25},
|
||||
{"label":"PgUp", "x":15, "y":2},
|
||||
{"label":"Shift", "x":0, "y":3, "w":2.25},
|
||||
{"label":"Z", "x":2.25, "y":3},
|
||||
{"label":"X", "x":3.25, "y":3},
|
||||
{"label":"C", "x":4.25, "y":3},
|
||||
{"label":"V", "x":5.25, "y":3},
|
||||
{"label":"B", "x":6.25, "y":3},
|
||||
{"label":"N", "x":7.25, "y":3},
|
||||
{"label":"M", "x":8.25, "y":3},
|
||||
{"label":"<", "x":9.25, "y":3},
|
||||
{"label":">", "x":10.25, "y":3},
|
||||
{"label":"?", "x":11.25, "y":3},
|
||||
{"label":"Shift", "x":12.25, "y":3, "w":1.75},
|
||||
{"label":"\u2191", "x":14, "y":3},
|
||||
{"label":"PgDn", "x":15, "y":3},
|
||||
{"label":"Ctrl", "x":0, "y":4, "w":1.25},
|
||||
{"label":"Win", "x":1.25, "y":4, "w":1.25},
|
||||
{"label":"Alt", "x":2.5, "y":4, "w":1.25},
|
||||
{"x":3.75, "y":4, "w":6.25},
|
||||
{"label":"Alt", "x":10, "y":4, "w":1.25},
|
||||
{"label":"Ctrl", "x":11.25, "y":4, "w":1.25},
|
||||
{"label":"\u2190", "x":13, "y":4},
|
||||
{"label":"\u2193", "x":14, "y":4},
|
||||
{"label":"\u2192", "x":15, "y":4}
|
||||
]
|
||||
},
|
||||
"LAYOUT_65_iso_blocker": {
|
||||
"layout": [{"label":"Esc", "x":0, "y":0},
|
||||
{"label":"!", "x":1, "y":0},
|
||||
{"label":"@", "x":2, "y":0},
|
||||
{"label":"#", "x":3, "y":0},
|
||||
{"label":"$", "x":4, "y":0},
|
||||
{"label":"%", "x":5, "y":0},
|
||||
{"label":"^", "x":6, "y":0},
|
||||
{"label":"&", "x":7, "y":0},
|
||||
{"label":"*", "x":8, "y":0},
|
||||
{"label":"(", "x":9, "y":0},
|
||||
{"label":")", "x":10, "y":0},
|
||||
{"label":"_", "x":11, "y":0},
|
||||
{"label":"+", "x":12, "y":0},
|
||||
{"label":"Backspace", "x":13, "y":0, "w":2},
|
||||
{"label":"Home", "x":15, "y":0},
|
||||
{"label":"Tab", "x":0, "y":1, "w":1.5},
|
||||
{"label":"Q", "x":1.5, "y":1},
|
||||
{"label":"W", "x":2.5, "y":1},
|
||||
{"label":"E", "x":3.5, "y":1},
|
||||
{"label":"R", "x":4.5, "y":1},
|
||||
{"label":"T", "x":5.5, "y":1},
|
||||
{"label":"Y", "x":6.5, "y":1},
|
||||
{"label":"U", "x":7.5, "y":1},
|
||||
{"label":"I", "x":8.5, "y":1},
|
||||
{"label":"O", "x":9.5, "y":1},
|
||||
{"label":"P", "x":10.5, "y":1},
|
||||
{"label":"{", "x":11.5, "y":1},
|
||||
{"label":"}", "x":12.5, "y":1},
|
||||
{"label":"End", "x":15, "y":1},
|
||||
{"label":"Caps Lock", "x":0, "y":2, "w":1.75},
|
||||
{"label":"A", "x":1.75, "y":2},
|
||||
{"label":"S", "x":2.75, "y":2},
|
||||
{"label":"D", "x":3.75, "y":2},
|
||||
{"label":"F", "x":4.75, "y":2},
|
||||
{"label":"G", "x":5.75, "y":2},
|
||||
{"label":"H", "x":6.75, "y":2},
|
||||
{"label":"J", "x":7.75, "y":2},
|
||||
{"label":"K", "x":8.75, "y":2},
|
||||
{"label":"L", "x":9.75, "y":2},
|
||||
{"label":":", "x":10.75, "y":2},
|
||||
{"label":"\"", "x":11.75, "y":2},
|
||||
{"label":"~", "x":12.75, "y":2},
|
||||
{"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2},
|
||||
{"label":"PgUp", "x":15, "y":2},
|
||||
{"label":"Shift", "x":0, "y":3, "w":1.25},
|
||||
{"label":"|", "x":1.25, "y":3},
|
||||
{"label":"Z", "x":2.25, "y":3},
|
||||
{"label":"X", "x":3.25, "y":3},
|
||||
{"label":"C", "x":4.25, "y":3},
|
||||
{"label":"V", "x":5.25, "y":3},
|
||||
{"label":"B", "x":6.25, "y":3},
|
||||
{"label":"N", "x":7.25, "y":3},
|
||||
{"label":"M", "x":8.25, "y":3},
|
||||
{"label":"<", "x":9.25, "y":3},
|
||||
{"label":">", "x":10.25, "y":3},
|
||||
{"label":"?", "x":11.25, "y":3},
|
||||
{"label":"Shift", "x":12.25, "y":3, "w":1.75},
|
||||
{"label":"\u2191", "x":14, "y":3},
|
||||
{"label":"PgDn", "x":15, "y":3},
|
||||
{"label":"Ctrl", "x":0, "y":4, "w":1.25},
|
||||
{"label":"Win", "x":1.25, "y":4, "w":1.25},
|
||||
{"label":"Alt", "x":2.5, "y":4, "w":1.25},
|
||||
{"x":3.75, "y":4, "w":6.25},
|
||||
{"label":"Alt", "x":10, "y":4, "w":1.25},
|
||||
{"label":"Ctrl", "x":11.25, "y":4, "w":1.25},
|
||||
{"label":"\u2190", "x":13, "y":4},
|
||||
{"label":"\u2193", "x":14, "y":4},
|
||||
{"label":"\u2192", "x":15, "y":4}
|
||||
]
|
||||
},
|
||||
"LAYOUT_65_ansi_blocker_split_bs": {
|
||||
"layout": [{"label":"Esc", "x":0, "y":0},
|
||||
{"label":"!", "x":1, "y":0},
|
||||
{"label":"@", "x":2, "y":0},
|
||||
{"label":"#", "x":3, "y":0},
|
||||
{"label":"$", "x":4, "y":0},
|
||||
{"label":"%", "x":5, "y":0},
|
||||
{"label":"^", "x":6, "y":0},
|
||||
{"label":"&", "x":7, "y":0},
|
||||
{"label":"*", "x":8, "y":0},
|
||||
{"label":"(", "x":9, "y":0},
|
||||
{"label":")", "x":10, "y":0},
|
||||
{"label":"_", "x":11, "y":0},
|
||||
{"label":"+", "x":12, "y":0},
|
||||
{"label":"|", "x":13, "y":0},
|
||||
{"label":"Del", "x":14, "y":0},
|
||||
{"label":"Home", "x":15, "y":0},
|
||||
{"label":"Tab", "x":0, "y":1, "w":1.5},
|
||||
{"label":"Q", "x":1.5, "y":1},
|
||||
{"label":"W", "x":2.5, "y":1},
|
||||
{"label":"E", "x":3.5, "y":1},
|
||||
{"label":"R", "x":4.5, "y":1},
|
||||
{"label":"T", "x":5.5, "y":1},
|
||||
{"label":"Y", "x":6.5, "y":1},
|
||||
{"label":"U", "x":7.5, "y":1},
|
||||
{"label":"I", "x":8.5, "y":1},
|
||||
{"label":"O", "x":9.5, "y":1},
|
||||
{"label":"P", "x":10.5, "y":1},
|
||||
{"label":"{", "x":11.5, "y":1},
|
||||
{"label":"}", "x":12.5, "y":1},
|
||||
{"label":"Backspace", "x":13.5, "y":1, "w":1.5},
|
||||
{"label":"End", "x":15, "y":1},
|
||||
{"label":"Caps Lock", "x":0, "y":2, "w":1.75},
|
||||
{"label":"A", "x":1.75, "y":2},
|
||||
{"label":"S", "x":2.75, "y":2},
|
||||
{"label":"D", "x":3.75, "y":2},
|
||||
{"label":"F", "x":4.75, "y":2},
|
||||
{"label":"G", "x":5.75, "y":2},
|
||||
{"label":"H", "x":6.75, "y":2},
|
||||
{"label":"J", "x":7.75, "y":2},
|
||||
{"label":"K", "x":8.75, "y":2},
|
||||
{"label":"L", "x":9.75, "y":2},
|
||||
{"label":":", "x":10.75, "y":2},
|
||||
{"label":"\"", "x":11.75, "y":2},
|
||||
{"label":"Enter", "x":12.75, "y":2, "w":2.25},
|
||||
{"label":"PgUp", "x":15, "y":2},
|
||||
{"label":"Shift", "x":0, "y":3, "w":2.25},
|
||||
{"label":"Z", "x":2.25, "y":3},
|
||||
{"label":"X", "x":3.25, "y":3},
|
||||
{"label":"C", "x":4.25, "y":3},
|
||||
{"label":"V", "x":5.25, "y":3},
|
||||
{"label":"B", "x":6.25, "y":3},
|
||||
{"label":"N", "x":7.25, "y":3},
|
||||
{"label":"M", "x":8.25, "y":3},
|
||||
{"label":"<", "x":9.25, "y":3},
|
||||
{"label":">", "x":10.25, "y":3},
|
||||
{"label":"?", "x":11.25, "y":3},
|
||||
{"label":"Shift", "x":12.25, "y":3, "w":1.75},
|
||||
{"label":"\u2191", "x":14, "y":3},
|
||||
{"label":"PgDn", "x":15, "y":3},
|
||||
{"label":"Ctrl", "x":0, "y":4, "w":1.25},
|
||||
{"label":"Win", "x":1.25, "y":4, "w":1.25},
|
||||
{"label":"Alt", "x":2.5, "y":4, "w":1.25},
|
||||
{"x":3.75, "y":4, "w":6.25},
|
||||
{"label":"Alt", "x":10, "y":4, "w":1.25},
|
||||
{"label":"Win", "x":11.25, "y":4, "w":1.25},
|
||||
{"label":"\u2190", "x":13, "y":4},
|
||||
{"label":"\u2193", "x":14, "y":4},
|
||||
{"label":"\u2192", "x":15, "y":4}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
33
keyboards/kbdfans/kbd67/mkii_soldered/keymaps/ansi/keymap.c
Normal file
33
keyboards/kbdfans/kbd67/mkii_soldered/keymaps/ansi/keymap.c
Normal file
@@ -0,0 +1,33 @@
|
||||
/* Copyright 2020 elmo-space<mail@elmo.space>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_65_ansi_blocker( /* Base */
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
|
||||
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_END,
|
||||
MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
[1] = LAYOUT_65_ansi_blocker( /* FN */
|
||||
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, KC_DEL, BL_INC,
|
||||
KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_DEC,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______,
|
||||
_______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
|
||||
)
|
||||
};
|
||||
@@ -0,0 +1,3 @@
|
||||
# The default ANSI keymap for KBD67 MKII
|
||||
|
||||
A basic 65% keymap.
|
||||
@@ -0,0 +1,33 @@
|
||||
/* Copyright 2020 elmo-space<mail@elmo.space>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_65_ansi_blocker_split_bs( /* Base */
|
||||
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_BSLS, KC_DEL, KC_HOME,
|
||||
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_BSPC, KC_END,
|
||||
MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
[1] = LAYOUT_65_ansi_blocker_split_bs( /* FN */
|
||||
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, _______, _______, BL_INC,
|
||||
KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_DEC,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______,
|
||||
_______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
|
||||
)
|
||||
};
|
||||
@@ -0,0 +1,3 @@
|
||||
# The default ANSI with Split Backspace keymap for KBD67 MKII
|
||||
|
||||
A basic 65% keymap.
|
||||
@@ -15,13 +15,6 @@
|
||||
*/
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
/* K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K212, K014, \
|
||||
* K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \
|
||||
* K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K213, K214, \
|
||||
* K300, K404, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, \
|
||||
* K400, K401, K402, K403, K405, K407, K409, K410, K411, K413, K414 \
|
||||
*/
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_all( /* Base */
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_HOME,
|
||||
|
||||
32
keyboards/kbdfans/kbd67/mkii_soldered/keymaps/iso/keymap.c
Normal file
32
keyboards/kbdfans/kbd67/mkii_soldered/keymaps/iso/keymap.c
Normal file
@@ -0,0 +1,32 @@
|
||||
/* Copyright 2019 Ryota Goto
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include QMK_KEYBOARD_H
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_65_iso_blocker( /* Base */
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
|
||||
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_END,
|
||||
MO(1), 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_PGUP,
|
||||
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
[1] = LAYOUT_65_iso_blocker( /* FN */
|
||||
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, KC_DEL, BL_INC,
|
||||
KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_DEC,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______,
|
||||
_______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
|
||||
)
|
||||
};
|
||||
@@ -0,0 +1,3 @@
|
||||
# The default ISO keymap for KBD67 MKII
|
||||
|
||||
A basic 65% keymap.
|
||||
@@ -37,7 +37,51 @@
|
||||
{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \
|
||||
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214 }, \
|
||||
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, K314 }, \
|
||||
{ K400, K401, K402, K403, K404, K405, KC_NO, K407, KC_NO, K409, K410, K411, KC_NO, K413, K414 } \
|
||||
{ K400, K401, K402, K403, K404, K405, KC_NO, K407, KC_NO, K409, K410, K411, KC_NO, K413, K414 } \
|
||||
}
|
||||
|
||||
#define LAYOUT_65_ansi_blocker( \
|
||||
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, K114, \
|
||||
K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K213, K214, \
|
||||
K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, \
|
||||
K400, K401, K402, K405, K409, K410, K411, K413, K414 \
|
||||
) \
|
||||
{ \
|
||||
{ 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, K114 }, \
|
||||
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, KC_NO, K213, K214 }, \
|
||||
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, K314 }, \
|
||||
{ K400, K401, K402, KC_NO, KC_NO, K405, KC_NO, KC_NO, KC_NO, K409, K410, K411, KC_NO, K413, K414 } \
|
||||
}
|
||||
|
||||
#define LAYOUT_65_ansi_blocker_split_bs( \
|
||||
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K212, K014, \
|
||||
K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \
|
||||
K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K213, K214, \
|
||||
K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, \
|
||||
K400, K401, K402, K405, K409, K410, K411, K413, K414 \
|
||||
) \
|
||||
{ \
|
||||
{ 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, K114 }, \
|
||||
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214 }, \
|
||||
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, K314 }, \
|
||||
{ K400, K401, K402, KC_NO, KC_NO, K405, KC_NO, KC_NO, KC_NO, K409, K410, K411, KC_NO, K413, K414 } \
|
||||
}
|
||||
|
||||
|
||||
#define LAYOUT_65_iso_blocker( \
|
||||
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, K114, \
|
||||
K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, \
|
||||
K300, K404, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, \
|
||||
K400, K401, K402, K405, K409, K410, K411, K413, K414 \
|
||||
) \
|
||||
{ \
|
||||
{ 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, KC_NO, K114 }, \
|
||||
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214 }, \
|
||||
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, K314 }, \
|
||||
{ K400, K401, K402, KC_NO, K404, K405, KC_NO, KC_NO, KC_NO, K409, K410, K411, KC_NO, K413, K414 } \
|
||||
}
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
/*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
#define ONESHOT_TIMEOUT 5000
|
||||
@@ -0,0 +1,33 @@
|
||||
/*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[0] = LAYOUT_65_ansi(
|
||||
KC_ESC ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_MINS ,KC_EQL ,KC_BSPC,KC_HOME,
|
||||
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_PGUP,
|
||||
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_PGDN,
|
||||
OSM(MOD_LSFT),KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_N ,KC_M ,KC_COMM,KC_DOT ,KC_SLSH,OSM(MOD_RSFT) ,KC_UP ,KC_END ,
|
||||
OSM(MOD_LCTL),OSM(MOD_LGUI),OSM(MOD_LALT),KC_SPC ,OSM(MOD_RALT),OSL(1) ,OSM(MOD_RCTL),KC_LEFT,KC_DOWN,KC_RGHT),
|
||||
|
||||
[1] = LAYOUT_65_ansi(
|
||||
KC_GRV ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_DEL ,KC_INS ,
|
||||
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,KC_PSCR,
|
||||
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,TILDE ,_______ ,_______,
|
||||
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______ ,KC_PGUP,_______,
|
||||
_______,_______,_______,_______ ,_______,_______,_______,KC_HOME,KC_PGDN,KC_END ),
|
||||
|
||||
};
|
||||
@@ -0,0 +1 @@
|
||||
# A keymap for kbd67 with some improvements for accessibility
|
||||
@@ -0,0 +1 @@
|
||||
CONSOLE_ENABLE = no
|
||||
@@ -52,12 +52,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
_______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
[_GW] = LAYOUT(
|
||||
KC_Y, KC_GRV, KC_1, KC_2, KC_3, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
|
||||
KC_B, KC_TAB, KC_T, KC_W, KC_4, KC_R, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
|
||||
KC_M, MC_LSEC, KC_A, KC_S, KC_D, KC_F, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
|
||||
KC_I, KC_LCTL, KC_Z, KC_LALT, KC_V, KC_SPC, KC_SPC, _______, KC_N, KC_M, KC_COMM, KC_DOT, TO(_CS), TO(_QW),
|
||||
KC_X, KC_C, KC_SPC, _______, KC_M, KC_B
|
||||
[_GG] = LAYOUT(
|
||||
KC_5, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
|
||||
KC_T, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
|
||||
KC_G, MC_LSEC, KC_A, KC_S, KC_D, KC_F, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
|
||||
KC_B, KC_LCTL, KC_Z, KC_X, KC_C, KC_SPC, KC_SPC, _______, KC_N, KC_M, KC_COMM, KC_DOT, TO(_CS), TO(_QW),
|
||||
KC_LALT, KC_V, KC_SPC, _______, KC_M, KC_B
|
||||
),
|
||||
|
||||
[_CS] = LAYOUT(
|
||||
|
||||
48
keyboards/keebio/nyquist/keymaps/via/keymap.c
Normal file
48
keyboards/keebio/nyquist/keymaps/via/keymap.c
Normal file
@@ -0,0 +1,48 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/* Qwerty
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Tab | Q | W | E | R | T | Y | U | I | O | P | Del |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* | Esc | A | S | D | F | G | H | J | K | L | ; | " |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
* | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[0] = LAYOUT(
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
|
||||
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
|
||||
KC_NO, KC_LCTL, KC_LALT, KC_LGUI, KC_NO, KC_SPC, KC_SPC, KC_NO, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
|
||||
),
|
||||
[1] = LAYOUT(
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
[2] = LAYOUT(
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
[3] = LAYOUT(
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
|
||||
};
|
||||
|
||||
2
keyboards/keebio/nyquist/keymaps/via/rules.mk
Normal file
2
keyboards/keebio/nyquist/keymaps/via/rules.mk
Normal file
@@ -0,0 +1,2 @@
|
||||
VIA_ENABLE = yes
|
||||
LTO_ENABLE = yes
|
||||
@@ -14,18 +14,18 @@ BOOTLOADER = atmel-dfu
|
||||
# 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 ?= yes # Console for debug
|
||||
COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = yes # Console for debug
|
||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
|
||||
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 on B7 by default
|
||||
MIDI_ENABLE ?= no # MIDI support
|
||||
UNICODE_ENABLE ?= no # Unicode
|
||||
BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
AUDIO_ENABLE ?= no # Audio output on port C6
|
||||
FAUXCLICKY_ENABLE ?= no # Use buzzer to emulate clicky switches
|
||||
NKRO_ENABLE = no # USB Nkey Rollover
|
||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
|
||||
MIDI_ENABLE = no # MIDI support
|
||||
UNICODE_ENABLE = no # Unicode
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
AUDIO_ENABLE = no # Audio output on port C6
|
||||
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||
|
||||
@@ -14,17 +14,17 @@ BOOTLOADER = halfkay
|
||||
# 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 ?= yes # Console for debug
|
||||
COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = yes # Console for debug
|
||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
|
||||
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 on B7 by default
|
||||
MIDI_ENABLE ?= no # MIDI controls
|
||||
UNICODE_ENABLE ?= no # Unicode
|
||||
BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
AUDIO_ENABLE ?= no # Audio output on port C6
|
||||
NKRO_ENABLE = no # USB Nkey Rollover
|
||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
|
||||
MIDI_ENABLE = no # MIDI controls
|
||||
UNICODE_ENABLE = no # Unicode
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
AUDIO_ENABLE = no # Audio output on port C6
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
# define RGBLIGHT_SAT_STEP 8
|
||||
# define RGBLIGHT_VAL_STEP 8
|
||||
# define RGBLIGHT_SPLIT
|
||||
# define RGBLIGHT_LAYERS
|
||||
#endif
|
||||
|
||||
// If you are using an Elite C rev3 on the slave side, uncomment the lines below:
|
||||
|
||||
@@ -23,7 +23,7 @@ uint8_t is_master;
|
||||
LAYOUT_wrapper( \
|
||||
KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_MINS, \
|
||||
LALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(KC_QUOT), \
|
||||
OS_LSFT, CTL_T(K21), K22, K23, K24, K25, KC_NO, MEH(KC_MINS), TG(_DIABLO), KC_NO, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \
|
||||
OS_LSFT, CTL_T(K21), K22, K23, K24, K25, TG(_GAMEPAD), MEH(KC_MINS), TG(_DIABLO), KC_CAPS, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \
|
||||
KC_MUTE, OS_LALT, KC_GRV, KC_SPC, BK_LWER, DL_RAIS, KC_ENT, OS_RGUI, UC(0x03A8), UC(0x2E2E) \
|
||||
)
|
||||
/* Re-pass though to allow templates to be used */
|
||||
@@ -85,6 +85,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
KC_LSFT, ___________________BLANK___________________, _______, _______, _______, _______, ___________________BLANK___________________, KC_RSFT,
|
||||
_______, _______, KC_LALT, _______, _______, _______, _______, KC_RGUI, _______, _______
|
||||
),
|
||||
|
||||
[_GAMEPAD] = LAYOUT_wrapper(
|
||||
KC_ESC, KC_K, KC_Q, KC_W, KC_E, KC_R, _______, _______, _______, _______, _______, _______,
|
||||
KC_TAB, KC_G, KC_A, KC_S, KC_D, KC_F, _______, _______, _______, _______, _______, _______,
|
||||
KC_LCTL, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, _______, _______, _______, LALT(KC_PSCR), _______, _______, _______, _______, _______, _______,
|
||||
_______, MAGIC_TOGGLE_NKRO, KC_V, KC_SPC, KC_H, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
[_DIABLO] = LAYOUT_wrapper(
|
||||
KC_ESC, KC_S, KC_I, KC_F, KC_M, KC_T, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO,
|
||||
KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_G, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
@@ -172,3 +180,41 @@ void encoder_update_user(uint8_t index, bool clockwise) {
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef RGBLIGHT_LAYERS
|
||||
const rgblight_segment_t PROGMEM shift_layers[] = RGBLIGHT_LAYER_SEGMENTS(
|
||||
{ 8, 1, 120, 255, 255},
|
||||
{ 18, 1, 120, 255, 255}
|
||||
);
|
||||
const rgblight_segment_t PROGMEM control_layers[] = RGBLIGHT_LAYER_SEGMENTS(
|
||||
{ 6, 1, 0, 255, 255},
|
||||
{ 16, 1, 0, 255, 255}
|
||||
);
|
||||
const rgblight_segment_t PROGMEM alt_layers[] = RGBLIGHT_LAYER_SEGMENTS(
|
||||
{ 2, 1, 240, 255, 255},
|
||||
{ 17, 1, 250, 255, 255}
|
||||
);
|
||||
const rgblight_segment_t PROGMEM gui_layers[] = RGBLIGHT_LAYER_SEGMENTS(
|
||||
{ 7, 1, 51, 255, 255},
|
||||
{ 12, 1, 51, 255, 255}
|
||||
);
|
||||
|
||||
const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
|
||||
shift_layers,
|
||||
control_layers,
|
||||
alt_layers,
|
||||
gui_layers
|
||||
);
|
||||
|
||||
void keyboard_post_init_keymap(void) {
|
||||
rgblight_layers = my_rgb_layers;
|
||||
}
|
||||
|
||||
void matrix_scan_keymap(void) {
|
||||
uint8_t mods = mod_config(get_mods()|get_oneshot_mods());
|
||||
rgblight_set_layer_state(0, mods & MOD_MASK_SHIFT);
|
||||
rgblight_set_layer_state(1, mods & MOD_MASK_CTRL);
|
||||
rgblight_set_layer_state(2, mods & MOD_MASK_ALT);
|
||||
rgblight_set_layer_state(3, mods & MOD_MASK_GUI);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays
|
||||
ENCODER_ENABLE = yes # ENables the use of one or more encoders
|
||||
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
||||
RGBLIGHT_STARTUP_ANIMATION = no
|
||||
RGBLIGHT_STARTUP_ANIMATION = yes
|
||||
|
||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
||||
MOUSEKEY_ENABLE = no # Mouse keys
|
||||
MOUSEKEY_ENABLE = no # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = no # Console for debug
|
||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||
NKRO_ENABLE = no # USB Nkey Rollover
|
||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
|
||||
MIDI_ENABLE = no # MIDI support
|
||||
UNICODE_ENABLE = yes # Unicode
|
||||
UNICODE_ENABLE = no # Unicode
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
AUDIO_ENABLE = no # Audio output on port C6
|
||||
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||
|
||||
56
keyboards/kyria/keymaps/gotham/README.md
Normal file
56
keyboards/kyria/keymaps/gotham/README.md
Normal file
@@ -0,0 +1,56 @@
|
||||
# Gotham's Keymap for [Kyria](https://github.com/splitkb/kyria)
|
||||
|
||||
## Keymap
|
||||
This is my personal keymap for Kyria with some mods.
|
||||
|
||||
More information about the Kyria keyboard can be found [here](https://blog.splitkb.com/blog/introducing-the-kyria)
|
||||
|
||||
### Rotary Encoders
|
||||
|
||||
Press the encoder on each half to cycle between:
|
||||
- Volume
|
||||
- Word Nav (Ctrl + Left / Right)
|
||||
- Left / Right
|
||||
- Up / Down
|
||||
- Page Up / Page Down
|
||||
|
||||
### OLEDs
|
||||
|
||||
Master-side OLED displays dynamic data:
|
||||
- Current layer
|
||||
- Current mode of each rotary encoder
|
||||
- Current mode of thumbstick
|
||||
|
||||
Slave-side OLED currently only displays a static content.
|
||||
|
||||
### Thumbstick
|
||||
|
||||
A PSP 2000 thumbstick is attached to the right half. It will currently only function when the USB cable is connected to the right half. When I figure out how to transfer data between halves using serial link, I will make this work regardless of which side is the master.
|
||||
|
||||
#### Thumbstick Configuration
|
||||
|
||||
- __THUMBSTICK_ENABLE:__ Enable thumbstick.
|
||||
- __THUMBSTICK_PIN_X/Y (mandatory):__ The QMK pins to use for the respective axis. The values are from the [QMK's ADC driver](https://docs.qmk.fm/#/adc_driver). I used F0 and F1, for example.
|
||||
- __THUMBSTICK_FLIP_X/Y:__ Mirror the direction of the respective axis. Use to compensate for actual orientation of thumbstick.
|
||||
- __THUMBSTICK_DEBUG:__ Print raw and calculated values from analogReadPin to console. Will only work with CONSOLE_ENABLE turned on.
|
||||
|
||||
#### Thumbstick Fine-tuning
|
||||
|
||||
More tunables are described here. Values like deadzone threshold are hardware-specific. The theoretical range for analog readings is [0, 1023], but emperical readings don't extend the entire range. To find the right values, turn on CONSOLE_ENABLE in rules.mk and THUMBSTICK_DEBUG in config.h to look at the raw values from the pins using hid_listen (or QMK Toolbox).
|
||||
|
||||
- __THUMBSTICK_DEAD_ZONE 90:__ Values below this are ignored (deadzone).
|
||||
- __THUMBSTICK_FINE_ZONE 180:__ Values below this enable fine movement.
|
||||
|
||||
- __THUMBSTICK_MODE <mode>:__ One of THUMBSTICK_MODE_MOUSE, THUMBSTICK_MODE_ARROWS and THUMBSTICK_MODE_SCROLL. This is just the default mode, it can be changed by calling ```void thumbstick_mode_cycle(bool reverse)``` within code.
|
||||
|
||||
- __THUMBSTICK_SPEED 127:__ Cursor speed in THUMBSTICK_MODE_MOUSE.
|
||||
- __THUMBSTICK_FINE_SPEED 64:__ Fine cursor speed in THUMBSTICK_MODE_MOUSE (kicks in when slightly nudging the thumbstick).
|
||||
- __THUMBSTICK_SCROLL_SPEED 1:__ Scrolling speed in THUMBSTICK_MODE_SCROLL.
|
||||
|
||||
- __THUMBSTICK_EIGHT_AXIS true:__ 8-axis toggle for ARROW and SCROLL modes. Disable to fall back to 4 axes (think D-pads vs analog stick).
|
||||
- __THUMBSTICK_AXIS_SEPARATION 0.5f:__ Float value between 0 and 1, used to discretize the circular range into distinct zones for 8-axis. Imagine the top-right quadrant on a graph, and picture the diagonal. This value indicates the angular "distance" from the diagonal to either axis. Moving from the diagonal to each of the axes, this value changes from 0 to 1. So, a value of 0.5 will "sweep" from the center to half-way towards each axis, creating a zone across the diagonal. Smaller values make narrower diagonal zones, and vice versa.
|
||||
|
||||
#### Thanks
|
||||
|
||||
- @pyrho and u/\_GEIST\_ for the inspiration and initial reference code.
|
||||
- @zvecr and @drashna for code review and more pointers.
|
||||
48
keyboards/kyria/keymaps/gotham/config.h
Normal file
48
keyboards/kyria/keymaps/gotham/config.h
Normal file
@@ -0,0 +1,48 @@
|
||||
/* Copyright 2019 Thomas Baart <thomas@splitkb.com>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define EE_HANDS
|
||||
#define IGNORE_MOD_TAP_INTERRUPT
|
||||
|
||||
// Fix for Elite C rev3
|
||||
#define SPLIT_USB_DETECT
|
||||
// Speed up slave half startup
|
||||
#define SPLIT_USB_TIMEOUT 1000
|
||||
|
||||
#ifdef OLED_DRIVER_ENABLE
|
||||
# define OLED_DISPLAY_128X64
|
||||
# define OLED_TIMEOUT 10000
|
||||
#endif
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
# define RGBLIGHT_EFFECT_BREATHING
|
||||
# define RGBLIGHT_EFFECT_RAINBOW_MOOD
|
||||
# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
|
||||
# define RGBLIGHT_EFFECT_KNIGHT
|
||||
#endif
|
||||
|
||||
#ifdef ENCODER_ENABLE
|
||||
# define ENCODER_DIRECTION_FLIP
|
||||
# define ENCODER_RESOLUTION 2
|
||||
#endif
|
||||
|
||||
#ifdef THUMBSTICK_ENABLE
|
||||
# define THUMBSTICK_FLIP_X
|
||||
# define THUMBSTICK_PIN_X F0
|
||||
# define THUMBSTICK_PIN_Y F1
|
||||
#endif
|
||||
94
keyboards/kyria/keymaps/gotham/encoder_utils.c
Normal file
94
keyboards/kyria/keymaps/gotham/encoder_utils.c
Normal file
@@ -0,0 +1,94 @@
|
||||
#include "encoder_utils.h"
|
||||
|
||||
void encoder_utils_init(void) {
|
||||
encoder_left_mode = ENC_MODE_VOLUME;
|
||||
encoder_right_mode = ENC_MODE_LEFT_RIGHT;
|
||||
}
|
||||
|
||||
void set_encoder_mode(bool left, encoder_mode_t mode) {
|
||||
if (left) {
|
||||
encoder_left_mode = mode;
|
||||
} else {
|
||||
encoder_right_mode = mode;
|
||||
}
|
||||
}
|
||||
|
||||
encoder_mode_t get_encoder_mode(bool left) {
|
||||
if (left) {
|
||||
return encoder_left_mode;
|
||||
} else {
|
||||
return encoder_right_mode;
|
||||
}
|
||||
}
|
||||
|
||||
void cycle_encoder_mode(bool left, bool reverse) {
|
||||
encoder_mode_t mode = get_encoder_mode(left);
|
||||
if (reverse) {
|
||||
mode = (mode == 0) ? (_ENC_MODE_LAST - 1) : (mode - 1);
|
||||
} else {
|
||||
mode = (mode == (_ENC_MODE_LAST - 1)) ? 0 : (mode + 1);
|
||||
}
|
||||
set_encoder_mode(left, mode);
|
||||
}
|
||||
|
||||
void encoder_action_volume(uint8_t clockwise) {
|
||||
if (clockwise) {
|
||||
tap_code(KC_VOLU);
|
||||
} else {
|
||||
tap_code(KC_VOLD);
|
||||
}
|
||||
}
|
||||
|
||||
void encoder_action_word_nav(uint8_t clockwise) {
|
||||
if (clockwise) {
|
||||
tap_code16(C(KC_RIGHT));
|
||||
} else {
|
||||
tap_code16(C(KC_LEFT));
|
||||
}
|
||||
}
|
||||
|
||||
void encoder_action_left_right(uint8_t clockwise) {
|
||||
if (clockwise) {
|
||||
tap_code(KC_RIGHT);
|
||||
} else {
|
||||
tap_code(KC_LEFT);
|
||||
}
|
||||
}
|
||||
|
||||
void encoder_action_up_down(uint8_t clockwise) {
|
||||
if (clockwise) {
|
||||
tap_code(KC_UP);
|
||||
} else {
|
||||
tap_code(KC_DOWN);
|
||||
}
|
||||
}
|
||||
|
||||
void encoder_action_paging(uint8_t clockwise) {
|
||||
if (clockwise) {
|
||||
tap_code(KC_PGUP);
|
||||
} else {
|
||||
tap_code(KC_PGDN);
|
||||
}
|
||||
}
|
||||
|
||||
void encoder_action(encoder_mode_t mode, uint8_t clockwise) {
|
||||
switch (mode) {
|
||||
case ENC_MODE_VOLUME:
|
||||
encoder_action_volume(clockwise);
|
||||
break;
|
||||
case ENC_MODE_WORD_NAV:
|
||||
encoder_action_word_nav(clockwise);
|
||||
break;
|
||||
case ENC_MODE_LEFT_RIGHT:
|
||||
encoder_action_left_right(clockwise);
|
||||
break;
|
||||
case ENC_MODE_UP_DOWN:
|
||||
encoder_action_up_down(clockwise);
|
||||
break;
|
||||
case ENC_MODE_PAGING:
|
||||
encoder_action_paging(clockwise);
|
||||
break;
|
||||
default:
|
||||
encoder_action_volume(clockwise);
|
||||
}
|
||||
}
|
||||
37
keyboards/kyria/keymaps/gotham/encoder_utils.h
Normal file
37
keyboards/kyria/keymaps/gotham/encoder_utils.h
Normal file
@@ -0,0 +1,37 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdbool.h>
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
typedef enum {
|
||||
ENC_MODE_VOLUME = 0,
|
||||
ENC_MODE_WORD_NAV,
|
||||
ENC_MODE_LEFT_RIGHT,
|
||||
ENC_MODE_UP_DOWN,
|
||||
ENC_MODE_PAGING,
|
||||
_ENC_MODE_LAST // Do not use, except for looping through enum values
|
||||
} encoder_mode_t;
|
||||
|
||||
encoder_mode_t encoder_left_mode;
|
||||
encoder_mode_t encoder_right_mode;
|
||||
|
||||
void encoder_utils_init(void);
|
||||
|
||||
void set_encoder_mode(bool left, encoder_mode_t mode);
|
||||
|
||||
encoder_mode_t get_encoder_mode(bool left);
|
||||
|
||||
void cycle_encoder_mode(bool left, bool reverse);
|
||||
|
||||
void encoder_action_volume(uint8_t clockwise);
|
||||
|
||||
void encoder_action_word_nav(uint8_t clockwise);
|
||||
|
||||
void encoder_action_left_right(uint8_t clockwise);
|
||||
|
||||
void encoder_action_up_down(uint8_t clockwise);
|
||||
|
||||
void encoder_action_paging(uint8_t clockwise);
|
||||
|
||||
void encoder_action(encoder_mode_t mode, uint8_t clockwise);
|
||||
16
keyboards/kyria/keymaps/gotham/keycodes.h
Normal file
16
keyboards/kyria/keymaps/gotham/keycodes.h
Normal file
@@ -0,0 +1,16 @@
|
||||
#pragma once
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
enum layers { _QWERTY = 0, _LOWER, _RAISE, _ADJUST };
|
||||
|
||||
enum custom_keycodes {
|
||||
ENC_MODE_L = SAFE_RANGE,
|
||||
ENC_MODE_R,
|
||||
TMB_MODE,
|
||||
};
|
||||
|
||||
#define ESC_RAISE LT(_RAISE, KC_ESC)
|
||||
#define BSLS_RAISE LT(_RAISE, KC_BSLS)
|
||||
#define SFT_QUOT MT(MOD_RSFT, KC_QUOT)
|
||||
#define CTL_MINS MT(MOD_RCTL, KC_MINS)
|
||||
126
keyboards/kyria/keymaps/gotham/keymap.c
Normal file
126
keyboards/kyria/keymaps/gotham/keymap.c
Normal file
@@ -0,0 +1,126 @@
|
||||
/* Copyright 2019 Thomas Baart <thomas@splitkb.com>
|
||||
*
|
||||
* 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 "keycodes.h"
|
||||
|
||||
#ifdef ENCODER_ENABLE
|
||||
# include "encoder_utils.h"
|
||||
#endif
|
||||
|
||||
#ifdef OLED_DRIVER_ENABLE
|
||||
# include "oled_utils.h"
|
||||
#endif
|
||||
|
||||
#ifdef THUMBSTICK_ENABLE
|
||||
# include "thumbstick.h"
|
||||
#endif
|
||||
|
||||
// clang-format off
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/*
|
||||
* Base Layer: QWERTY
|
||||
*/
|
||||
[_QWERTY] = LAYOUT(
|
||||
ESC_RAISE, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, BSLS_RAISE,
|
||||
KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, SFT_QUOT,
|
||||
KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LGUI, KC_NO, TMB_MODE, KC_NO, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, CTL_MINS,
|
||||
ENC_MODE_L, KC_LALT, LT(_LOWER, KC_SPC), LT(_RAISE, KC_TAB), KC_LSFT, KC_EQL, LT(_RAISE, KC_ENT), LT(_LOWER, KC_BSPC), KC_DEL, ENC_MODE_R
|
||||
),
|
||||
/*
|
||||
* Lower Layer: Symbols, Navigation
|
||||
*/
|
||||
[_LOWER] = LAYOUT(
|
||||
_______, KC_HASH, KC_DLR, KC_LCBR, KC_RCBR, KC_PIPE, _______, _______, _______, _______, _______, KC_PIPE,
|
||||
_______, KC_EXLM, KC_AT, KC_LPRN, KC_RPRN, KC_GRV, KC_PGUP, KC_LEFT, KC_UP, KC_RGHT, _______, KC_QUOT,
|
||||
_______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, _______, _______, _______, _______, KC_PGDN, KC_HOME, KC_DOWN, KC_END, _______, KC_MINS,
|
||||
_______, _______, _______, KC_SCLN, KC_EQL, KC_EQL, KC_SCLN, _______, _______, _______
|
||||
),
|
||||
/*
|
||||
* Raise Layer: Number keys, media, more symbols
|
||||
*/
|
||||
[_RAISE] = LAYOUT(
|
||||
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
|
||||
_______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU, KC_MINS, KC_PLUS, KC_ASTR, KC_SLSH, KC_PERC, _______,
|
||||
_______, _______, _______, _______, KC_MUTE, KC_VOLD, _______, _______, _______, _______, KC_AMPR, KC_PIPE, KC_COMM, KC_DOT, KC_SLSH, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
/*
|
||||
* Adjust Layer: Function keys, RGB
|
||||
*/
|
||||
[_ADJUST] = LAYOUT(
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
|
||||
_______, RGB_TOG, RGB_SAI, RGB_HUI, RGB_VAI, RGB_MOD, _______, _______, _______, KC_F11, KC_F12, _______,
|
||||
_______, _______, RGB_SAD, RGB_HUD, RGB_VAD, RGB_RMOD,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
void matrix_init_user(void) {
|
||||
#ifdef ENCODER_ENABLE
|
||||
encoder_utils_init();
|
||||
#endif
|
||||
}
|
||||
|
||||
layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); }
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
#ifdef ENCODER_ENABLE
|
||||
case ENC_MODE_L:
|
||||
if (record->event.pressed) {
|
||||
cycle_encoder_mode(true, false);
|
||||
}
|
||||
break;
|
||||
case ENC_MODE_R:
|
||||
if (record->event.pressed) {
|
||||
cycle_encoder_mode(false, false);
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
#ifdef THUMBSTICK_ENABLE
|
||||
case TMB_MODE:
|
||||
if (record->event.pressed) {
|
||||
thumbstick_mode_cycle(false);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
#ifdef OLED_DRIVER_ENABLE
|
||||
oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; }
|
||||
|
||||
void oled_task_user(void) { render_status(); }
|
||||
#endif
|
||||
|
||||
#ifdef ENCODER_ENABLE
|
||||
void encoder_update_user(uint8_t index, bool clockwise) {
|
||||
if (index == 0) {
|
||||
encoder_action(get_encoder_mode(true), clockwise);
|
||||
# ifdef OLED_DRIVER_ENABLE
|
||||
oled_on();
|
||||
# endif
|
||||
} else if (index == 1) {
|
||||
encoder_action(get_encoder_mode(false), clockwise);
|
||||
# ifdef OLED_DRIVER_ENABLE
|
||||
oled_on();
|
||||
# endif
|
||||
}
|
||||
}
|
||||
#endif
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user