Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4b80ee46f8 | ||
|
|
9b398a8f31 | ||
|
|
c30170b868 | ||
|
|
39b483ad32 | ||
|
|
88ebf92184 | ||
|
|
8d792cfb5f | ||
|
|
bd1b51cbd1 | ||
|
|
3028662fa3 | ||
|
|
aea2d6845a | ||
|
|
a502ce43c3 | ||
|
|
b0e30862d6 | ||
|
|
146873fd8e | ||
|
|
b3b617633c | ||
|
|
9ae8a45197 | ||
|
|
a8bb5840ad | ||
|
|
d353fcb99c | ||
|
|
f0bde7906d | ||
|
|
24b0cda3e8 | ||
|
|
1ab8f969f6 | ||
|
|
58af0305f5 | ||
|
|
c7cc20918b | ||
|
|
924573ece2 | ||
|
|
5f06fce2c5 | ||
|
|
4b13c49578 | ||
|
|
98642ca028 | ||
|
|
82dc8faaf3 | ||
|
|
0b09189087 |
No files matched your search
@@ -19,7 +19,7 @@ These functions allow you to activate layers in various ways. Note that layers a
|
|||||||
|
|
||||||
### Caveats :id=caveats
|
### Caveats :id=caveats
|
||||||
|
|
||||||
Currently, `LT()` and `MT()` are limited to the [Basic Keycode set](keycodes_basic.md), meaning you can't use keycodes like `LCTL()`, `KC_TILD`, or anything greater than `0xFF`. Specifically, dual function keys like `LT` and `MT` use a 16 bit keycode. 4 bits are used for the function identifier, the next 12 are divided into the parameters. Layer Tap uses 4 bits for the layer (and is why it's limited to layers 0-16, actually), while Mod Tap does the same, 4 bits for the identifier, 4 bits for which mods are used, and all of them use 8 bits for the keycode. Because of this, the keycode used is limited to `0xFF` (0-255), which are the basic keycodes only.
|
Currently, `LT()` and `MT()` are limited to the [Basic Keycode set](keycodes_basic.md), meaning you can't use keycodes like `LCTL()`, `KC_TILD`, or anything greater than `0xFF`. Specifically, dual function keys like `LT` and `MT` use a 16 bit keycode. 4 bits are used for the function identifier, the next 12 are divided into the parameters. Layer Tap uses 4 bits for the layer (and is why it's limited to layers 0-15, actually), while Mod Tap does the same, 4 bits for the identifier, 4 bits for which mods are used, and all of them use 8 bits for the keycode. Because of this, the keycode used is limited to `0xFF` (0-255), which are the basic keycodes only.
|
||||||
|
|
||||||
Expanding this would be complicated, at best. Moving to a 32-bit keycode would solve a lot of this, but would double the amount of space that the keymap matrix uses. And it could potentially cause issues, too. If you need to apply modifiers to your tapped keycode, [Tap Dance](feature_tap_dance.md#example-5-using-tap-dance-for-advanced-mod-tap-and-layer-tap-keys) can be used to accomplish this.
|
Expanding this would be complicated, at best. Moving to a 32-bit keycode would solve a lot of this, but would double the amount of space that the keymap matrix uses. And it could potentially cause issues, too. If you need to apply modifiers to your tapped keycode, [Tap Dance](feature_tap_dance.md#example-5-using-tap-dance-for-advanced-mod-tap-and-layer-tap-keys) can be used to accomplish this.
|
||||||
|
|
||||||
|
|||||||
@@ -186,8 +186,16 @@ All RGB keycodes are currently shared with the RGBLIGHT system:
|
|||||||
|`RGB_VAD` | |Decrease value (brightness), increase value when Shift is held |
|
|`RGB_VAD` | |Decrease value (brightness), increase value when Shift is held |
|
||||||
|`RGB_SPI` | |Increase effect speed (does not support eeprom yet), decrease speed when Shift is held|
|
|`RGB_SPI` | |Increase effect speed (does not support eeprom yet), decrease speed when Shift is held|
|
||||||
|`RGB_SPD` | |Decrease effect speed (does not support eeprom yet), increase speed when Shift is held|
|
|`RGB_SPD` | |Decrease effect speed (does not support eeprom yet), increase speed when Shift is held|
|
||||||
|
|`RGB_MODE_PLAIN` |`RGB_M_P `|Static (no animation) mode |
|
||||||
|
|`RGB_MODE_BREATHE` |`RGB_M_B` |Breathing animation mode |
|
||||||
|
|`RGB_MODE_RAINBOW` |`RGB_M_R` |Full gradient scrolling left to right (uses the `RGB_MATRIX_CYCLE_LEFT_RIGHT` mode) |
|
||||||
|
|`RGB_MODE_SWIRL` |`RGB_M_SW`|Full gradient spinning pinwheel around center of keyboard (uses `RGB_MATRIX_CYCLE_PINWHEEL` mode) |
|
||||||
|
|
||||||
* `RGB_MODE_*` keycodes will generally work, but are not currently mapped to the correct effects for the RGB Matrix system
|
* `RGB_MODE_*` keycodes will generally work, but not all of the modes are currently mapped to the correct effects for the RGB Matrix system.
|
||||||
|
|
||||||
|
`RGB_MODE_PLAIN`, `RGB_MODE_BREATHE`, `RGB_MODE_RAINBOW`, and `RGB_MATRIX_SWIRL` are the only ones that are mapped properly. The rest don't have a direct equivalent, and are not mapped.
|
||||||
|
|
||||||
|
!> By default, if you have both the [RGB Light](feature_rgblight.md) and the RGB Matrix feature enabled, these keycodes will work for both features, at the same time. You can disable the keycode functionality by defining the `*_DISABLE_KEYCODES` option for the specific feature.
|
||||||
|
|
||||||
## RGB Matrix Effects :id=rgb-matrix-effects
|
## RGB Matrix Effects :id=rgb-matrix-effects
|
||||||
|
|
||||||
@@ -385,6 +393,7 @@ These are defined in [`rgblight_list.h`](https://github.com/qmk/qmk_firmware/blo
|
|||||||
#define RGB_MATRIX_STARTUP_SAT 255 // Sets the default saturation value, if none has been set
|
#define RGB_MATRIX_STARTUP_SAT 255 // Sets the default saturation value, if none has been set
|
||||||
#define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS // Sets the default brightness value, if none has been set
|
#define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS // Sets the default brightness value, if none has been set
|
||||||
#define RGB_MATRIX_STARTUP_SPD 127 // Sets the default animation speed, if none has been set
|
#define RGB_MATRIX_STARTUP_SPD 127 // Sets the default animation speed, if none has been set
|
||||||
|
#define RGB_MATRIX_DISABLE_KEYCODES // disables control of rgb matrix by keycodes (must use code functions to control the feature)
|
||||||
```
|
```
|
||||||
|
|
||||||
## EEPROM storage :id=eeprom-storage
|
## EEPROM storage :id=eeprom-storage
|
||||||
|
|||||||
@@ -64,6 +64,9 @@ Changing the **Value** sets the overall brightness.<br>
|
|||||||
|`RGB_MODE_GRADIENT`|`RGB_M_G` |Static gradient animation mode |
|
|`RGB_MODE_GRADIENT`|`RGB_M_G` |Static gradient animation mode |
|
||||||
|`RGB_MODE_RGBTEST` |`RGB_M_T` |Red, Green, Blue test animation mode |
|
|`RGB_MODE_RGBTEST` |`RGB_M_T` |Red, Green, Blue test animation mode |
|
||||||
|
|
||||||
|
!> By default, if you have both the RGB Light and the [RGB Matrix](feature_rgb_matrix.md) feature enabled, these keycodes will work for both features, at the same time. You can disable the keycode functionality by defining the `*_DISABLE_KEYCODES` option for the specific feature.
|
||||||
|
|
||||||
|
|
||||||
## Configuration
|
## Configuration
|
||||||
|
|
||||||
Your RGB lighting can be configured by placing these `#define`s in your `config.h`:
|
Your RGB lighting can be configured by placing these `#define`s in your `config.h`:
|
||||||
@@ -76,6 +79,7 @@ Your RGB lighting can be configured by placing these `#define`s in your `config.
|
|||||||
|`RGBLIGHT_LIMIT_VAL` |`255` |The maximum brightness level |
|
|`RGBLIGHT_LIMIT_VAL` |`255` |The maximum brightness level |
|
||||||
|`RGBLIGHT_SLEEP` |*Not defined*|If defined, the RGB lighting will be switched off when the host goes to sleep|
|
|`RGBLIGHT_SLEEP` |*Not defined*|If defined, the RGB lighting will be switched off when the host goes to sleep|
|
||||||
|`RGBLIGHT_SPLIT` |*Not defined*|If defined, synchronization functionality for split keyboards is added|
|
|`RGBLIGHT_SPLIT` |*Not defined*|If defined, synchronization functionality for split keyboards is added|
|
||||||
|
|`RGBLIGHT_DISABLE_KEYCODES`|*not defined*|If defined, disables the ability to control RGB Light from the keycodes. You must use code functions to control the feature|
|
||||||
|
|
||||||
## Effects and Animations
|
## Effects and Animations
|
||||||
|
|
||||||
|
|||||||
+17
-29
@@ -1,8 +1,8 @@
|
|||||||
# よくあるビルドの質問
|
# よくあるビルドの質問
|
||||||
|
|
||||||
<!---
|
<!---
|
||||||
original document: 0f43c2652:docs/faq_build.md
|
original document: 0.9.10:docs/faq_build.md
|
||||||
git diff 0f43c2652 HEAD -- docs/faq_build.md | cat
|
git diff 0.9.10 HEAD -- docs/faq_build.md | cat
|
||||||
-->
|
-->
|
||||||
|
|
||||||
このページは QMK のビルドに関する質問を説明します。まだビルドをしていない場合は、[ビルド環境のセットアップ](ja/getting_started_build_tools.md) および [Make 手順](ja/getting_started_make_guide.md)ガイドを読むべきです。
|
このページは QMK のビルドに関する質問を説明します。まだビルドをしていない場合は、[ビルド環境のセットアップ](ja/getting_started_build_tools.md) および [Make 手順](ja/getting_started_make_guide.md)ガイドを読むべきです。
|
||||||
@@ -32,33 +32,30 @@ sudo udevadm trigger
|
|||||||
**/etc/udev/rules.d/50-atmel-dfu.rules:**
|
**/etc/udev/rules.d/50-atmel-dfu.rules:**
|
||||||
```
|
```
|
||||||
# Atmel ATMega32U4
|
# Atmel ATMega32U4
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff4", MODE:="0666"
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff4", TAG+="uaccess", RUN{builtin}+="uaccess"
|
||||||
# Atmel USBKEY AT90USB1287
|
# Atmel USBKEY AT90USB1287
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ffb", MODE:="0666"
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ffb", TAG+="uaccess", RUN{builtin}+="uaccess"
|
||||||
# Atmel ATMega32U2
|
# Atmel ATMega32U2
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff0", MODE:="0666"
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff0", TAG+="uaccess", RUN{builtin}+="uaccess"
|
||||||
```
|
```
|
||||||
|
|
||||||
**/etc/udev/rules.d/52-tmk-keyboard.rules:**
|
|
||||||
```
|
|
||||||
# tmk keyboard products https://github.com/tmk/tmk_keyboard
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="feed", MODE:="0666"
|
|
||||||
```
|
|
||||||
**/etc/udev/rules.d/54-input-club-keyboard.rules:**
|
**/etc/udev/rules.d/54-input-club-keyboard.rules:**
|
||||||
|
|
||||||
```
|
```
|
||||||
# Input Club keyboard bootloader
|
# Input Club keyboard bootloader
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1c11", MODE:="0666"
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1c11", ATTRS{idProduct}=="b007", TAG+="uaccess", RUN{builtin}+="uaccess"
|
||||||
```
|
```
|
||||||
|
|
||||||
**/etc/udev/rules.d/55-caterina.rules:**
|
**/etc/udev/rules.d/55-caterina.rules:**
|
||||||
```
|
```
|
||||||
# ModemManager should ignore the following devices
|
# ModemManager should ignore the following devices
|
||||||
ATTRS{idVendor}=="2a03", ENV{ID_MM_DEVICE_IGNORE}="1"
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2a03", ATTRS{idProduct}=="0036", TAG+="uaccess", RUN{builtin}+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
||||||
ATTRS{idVendor}=="2341", ENV{ID_MM_DEVICE_IGNORE}="1"
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="0036", TAG+="uaccess", RUN{builtin}+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
||||||
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b4f", ATTRS{idProduct}=="9205", TAG+="uaccess", RUN{builtin}+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
||||||
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b4f", ATTRS{idProduct}=="9203", TAG+="uaccess", RUN{builtin}+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
||||||
```
|
```
|
||||||
|
|
||||||
**注意:** ModemManager フィルタリングは厳格モードでは無い場合のみ動作します。以下のコマンドでその設定を変更することができます:
|
**注意:** 古い(1.12以前の) ModemManager では、フィルタリングは厳密なモードではない場合にのみ動作し、以下のコマンドはその設定を更新することができます。
|
||||||
```console
|
```console
|
||||||
sudo sed -i 's/--filter-policy=strict/--filter-policy=default/' /lib/systemd/system/ModemManager.service
|
sudo sed -i 's/--filter-policy=strict/--filter-policy=default/' /lib/systemd/system/ModemManager.service
|
||||||
sudo systemctl daemon-reload
|
sudo systemctl daemon-reload
|
||||||
@@ -68,15 +65,15 @@ sudo systemctl restart ModemManager
|
|||||||
**/etc/udev/rules.d/56-dfu-util.rules:**
|
**/etc/udev/rules.d/56-dfu-util.rules:**
|
||||||
```
|
```
|
||||||
# stm32duino
|
# stm32duino
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1eaf", ATTRS{idProduct}=="0003", MODE:="0666"
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1eaf", ATTRS{idProduct}=="0003", TAG+="uaccess", RUN{builtin}+="uaccess"
|
||||||
# Generic stm32
|
# Generic stm32
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", MODE:="0666"
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", TAG+="uaccess", RUN{builtin}+="uaccess"
|
||||||
```
|
```
|
||||||
|
|
||||||
**/etc/udev/rules.d/57-bootloadhid.rules:**
|
**/etc/udev/rules.d/57-bootloadhid.rules:**
|
||||||
```
|
```
|
||||||
# bootloadHID
|
# bootloadHID
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05df", MODE:="0666"
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05df", TAG+="uaccess", RUN{builtin}+="uaccess"
|
||||||
```
|
```
|
||||||
|
|
||||||
### Linux のブートローダモードで Serial デバイスが検知されない
|
### Linux のブートローダモードで Serial デバイスが検知されない
|
||||||
@@ -116,23 +113,14 @@ OPT_DEFS += -DBOOTLOADER_SIZE=2048
|
|||||||
```
|
```
|
||||||
|
|
||||||
## MacOS での `avr-gcc: internal compiler error: Abort trap: 6 (program cc1)`
|
## MacOS での `avr-gcc: internal compiler error: Abort trap: 6 (program cc1)`
|
||||||
|
|
||||||
これは brew での更新に関する問題で、avr-gcc が依存するシンボリックリンクを壊します。
|
これは brew での更新に関する問題で、avr-gcc が依存するシンボリックリンクを壊します。
|
||||||
|
|
||||||
解決法は全ての影響を受けたモジュールを削除し再インストールすることです。
|
解決法は全ての影響を受けたモジュールを削除し再インストールすることです。
|
||||||
|
|
||||||
```
|
```
|
||||||
brew rm avr-gcc
|
brew rm avr-gcc avr-gcc@8 dfu-programmer dfu-util gcc-arm-none-eabi arm-gcc-bin@8 avrdude qmk
|
||||||
brew rm avr-gcc@8
|
brew install qmk/qmk/qmk
|
||||||
brew rm dfu-programmer
|
|
||||||
brew rm dfu-util
|
|
||||||
brew rm gcc-arm-none-eabi
|
|
||||||
brew rm arm-gcc-bin@8
|
|
||||||
brew rm avrdude
|
|
||||||
brew install avr-gcc@8
|
|
||||||
brew install dfu-programmer
|
|
||||||
brew install dfu-util
|
|
||||||
brew install arm-gcc-bin@8
|
|
||||||
brew install avrdude
|
|
||||||
brew link --force avr-gcc@8
|
brew link --force avr-gcc@8
|
||||||
brew link --force arm-gcc-bin@8
|
brew link --force arm-gcc-bin@8
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -1,53 +1,10 @@
|
|||||||
# レイヤーの切り替えとトグル :id=switching-and-toggling-layers
|
# 修飾キー :id=modifier-keys
|
||||||
|
|
||||||
<!---
|
<!---
|
||||||
original document: 5d5ff80:docs/feature_advanced_keycodes.md
|
original document: 0.9.0:docs/feature_advanced_keycodes.md
|
||||||
git diff 5d5ff80 HEAD -- docs/feature_advanced_keycodes.md | cat
|
git diff 0.9.0 HEAD -- docs/feature_advanced_keycodes.md | cat
|
||||||
-->
|
-->
|
||||||
|
|
||||||
これらの機能により、様々な方法でレイヤーをアクティブ化することができます。レイヤーは一般的に独立したレイアウトでは無いことに注意してください -- 複数のレイヤーを一度にアクティブ化することができ、レイヤーが `KC_TRNS` を使ってキーの押下を下のレイヤーに渡すことが一般的です。レイヤーの詳細については、[キーマップの概要](ja/keymap.md#keymap-and-layers)を見てください。MO()、LM()、TT() あるいは LT() を使って一時的なレイヤーの切り替えを使う場合、上のレイヤーのキーを透過にするようにしてください。さもないと意図したように動作しないかもしれません。
|
|
||||||
|
|
||||||
* `DF(layer)` - デフォルトレイヤーを切り替えます。デフォルトレイヤーは、他のレイヤーがその上に積み重なっている、常にアクティブな基本レイヤーです。デフォルトレイヤーの詳細については以下を見てください。これは QWERTY から Dvorak レイアウトに切り替えるために使うことができます。(これは一時的な切り替えであり、キーボードの電源が切れるまでしか持続しないことに注意してください。デフォルトレイヤーを永続的に変更するには、[process_record_user](ja/custom_quantum_functions.md#programming-the-behavior-of-any-keycode) 内で `set_single_persistent_default_layer` 関数を呼び出すなど、より深いカスタマイズが必要です。)
|
|
||||||
* `MO(layer)` - 一時的に*レイヤー*をアクティブにします。キーを放すとすぐに、レイヤーは非アクティブになります。
|
|
||||||
* `LM(layer, mod)` - (`MO` のように)一時的に*レイヤー*をアクティブにしますが、モディファイア *mod* がアクティブな状態です。layer 0-15 と、左モディファイアのみをサポートします: `MOD_LCTL`、`MOD_LSFT`、`MOD_LALT`、`MOD_LGUI` (`KC_` の代わりに `MOD_` 定数を使うことに注意してください)。これらのモディファイアは、例えば `LM(_RAISE, MOD_LCTL | MOD_LALT)` のように、ビット単位の OR を使って組み合わせることができます。
|
|
||||||
* `LT(layer, kc)` - ホールドされた時に*レイヤー*を一時的にアクティブにし、タップされた時に *kc* を送信します。layer 0-15 のみをサポートします。
|
|
||||||
* `OSL(layer)` - 次のキーが押されるまで、一時的に*レイヤー*をアクティブにします。詳細と追加機能については、[ワンショットキー](ja/one_shot_keys.md)を見てください。
|
|
||||||
* `TG(layer)` - *レイヤー*を切り替えます。非アクティブな場合はアクティブにし、逆も同様です。
|
|
||||||
* `TO(layer)` - *レイヤー*をアクティブにし、他の全てのレイヤー(デフォルトレイヤーを除く)を非アクティブにします。この関数は特別です。1つのレイヤーをアクティブなレイヤースタックに追加/削除する代わりに、現在のアクティブなレイヤーを完全に置き換え、唯一上位のレイヤーを下位のレイヤーで置き換えることができるからです。これはキーダウンで(キーが押されるとすぐに)アクティブになります。
|
|
||||||
* `TT(layer)` - レイヤーのタップ切り替え。キーを押したままにすると*レイヤー*がアクティブにされ、放すと非アクティブになります (`MO` 風)。繰り返しタップすると、レイヤーはオンあるいはオフを切り替えます (`TG` 風)。デフォルトでは5回のタップが必要ですが、`TAPPING_TOGGLE` を定義することで変更することができます -- 例えば、2回のタップだけで切り替えるには、`#define TAPPING_TOGGLE 2` を定義します。
|
|
||||||
|
|
||||||
## 注意事項
|
|
||||||
|
|
||||||
現在のところ、`LT()` と `MT()` は[基本的なキーコードセット](ja/keycodes_basic.md)に制限されています。つまり、`LCTL()`、`KC_TILD` あるいは `0xFF` より大きなキーコードを使うことができません。レイヤータップあるいはモッドタップのキーコードの一部として指定されたモディファイアは無視されます。タップしたキーコードにモディファイアを適用する必要がある場合は、[タップダンス](ja/feature_tap_dance.md#example-5-using-tap-dance-for-advanced-mod-tap-and-layer-tap-keys)を使うことができます。
|
|
||||||
|
|
||||||
さらに、モッドタップあるいはレイヤータップで少なくとも1つの右手用のモディファイアが指定された場合、指定された全てのモディファイアが右手用になるため、2つをうまく組み合わせて一致させることはできません。
|
|
||||||
|
|
||||||
# レイヤーの使用
|
|
||||||
|
|
||||||
レイヤーを切り替える時は注意してください。(キーボードを取り外さずに)そのレイヤーを非アクティブにすることができずレイヤーから移動できなくなる可能性があります。最も一般的な問題を避けるためのガイドラインを作成しました。
|
|
||||||
|
|
||||||
## 初心者
|
|
||||||
|
|
||||||
QMK を使い始めたばかりの場合は、全てを単純にしたいでしょう。レイヤーをセットアップする時は、これらのガイドラインに従ってください:
|
|
||||||
|
|
||||||
* デフォルトの "base" レイヤーとして、layer 0 をセットアップします。これは通常の入力レイヤーであり、任意のレイアウト (qwerty、dvorak、colemak など)にすることができます。通常はキーボードのキーのほとんどまたは全てが定義されているため、これを最下位のレイヤーとして設定することが重要です。そうすることで、もしそれが他のレイヤーの上 (つまりレイヤー番号が大きい)にある場合の影響を防ぎます。
|
|
||||||
* layer 0 をルートとして、レイヤーを "ツリー" レイアウトに配置します。他の複数のレイヤーから同じレイヤーに行こうとしないでください。
|
|
||||||
* 各レイヤーのキーマップでは、より高い番号のレイヤーのみを参照します。レイヤーは最大の番号(最上位)のアクティブレイヤーから処理されるため、下位レイヤーの状態を変更するのは難しくエラーが発生しやすくなります。
|
|
||||||
|
|
||||||
## 中級ユーザ
|
|
||||||
|
|
||||||
複数の基本レイヤーが必要な場合があります。例えば、QWERTY と Dvorak を切り替える場合、国ごとに異なるレイアウトを切り替える場合、あるいは異なるビデオゲームごとにレイアウトを切り替える場合などです。基本レイヤーは常に最小の番号のレイヤーである必要があります。複数の基本レイヤーがある場合、常にそれらを相互排他的に扱う必要があります。1つの基本レイヤーがオンの場合、他をオフにします。
|
|
||||||
|
|
||||||
## 上級ユーザ
|
|
||||||
|
|
||||||
レイヤーがどのように動作し、何ができるかを理解したら、より創造的になります。初心者のセクションで列挙されている規則は、幾つかの巧妙な詳細を回避するのに役立ちますが、特に超コンパクトなキーボードのユーザにとって制約になる場合があります。レイヤーの仕組みを理解することで、レイヤーをより高度な方法で使うことができます。
|
|
||||||
|
|
||||||
レイヤーは番号順に上に積み重なっています。キーの押下の動作を決定する時に、QMK は上から順にレイヤーを走査し、`KC_TRNS` に設定されていない最初のアクティブなレイヤーに到達すると停止します。結果として、現在のレイヤーよりも数値的に低いレイヤーをアクティブにし、現在のレイヤー(あるいはアクティブでターゲットレイヤーよりも高い別のレイヤー)に `KC_TRNS` 以外のものがある場合、それが送信されるキーであり、アクティブ化したばかりのレイヤー上のキーではありません。これが、ほとんどの人の "なぜレイヤーが切り替わらないのか" 問題の原因です。
|
|
||||||
|
|
||||||
場合によっては、マクロ内あるいはタップダンスルーチンの一部としてレイヤーを切り替えほうが良いかもしれません。`layer_on` はレイヤーをアクティブにし、`layer_off` はそれを非アクティブにします。もっと多くのレイヤーに関する関数は、[action_layer.h](https://github.com/qmk/qmk_firmware/blob/master/tmk_core/common/action_layer.h) で見つけることができます。
|
|
||||||
|
|
||||||
# 修飾キー :id=modifier-keys
|
|
||||||
|
|
||||||
以下のようにキーコードとモディファイアを組み合わせることができます。押すと、モディファイアのキーダウンイベントが送信され、次に `kc` のキーダウンイベントが送信されます。放すと、`kc` のキーアップイベントが送信され、次にモディファイアのキーアップイベントが送信されます。
|
以下のようにキーコードとモディファイアを組み合わせることができます。押すと、モディファイアのキーダウンイベントが送信され、次に `kc` のキーダウンイベントが送信されます。放すと、`kc` のキーアップイベントが送信され、次にモディファイアのキーアップイベントが送信されます。
|
||||||
|
|
||||||
| キー | エイリアス | 説明 |
|
| キー | エイリアス | 説明 |
|
||||||
@@ -66,12 +23,16 @@ QMK を使い始めたばかりの場合は、全てを単純にしたいでし
|
|||||||
| `MEH(kc)` | | 左 Control、左 Shift、左 Alt を押しながら `kc` を押します。 |
|
| `MEH(kc)` | | 左 Control、左 Shift、左 Alt を押しながら `kc` を押します。 |
|
||||||
| `HYPR(kc)` | | 左 Control、左 Shift、左 Alt、左 GUI を押しながら `kc` を押します。 |
|
| `HYPR(kc)` | | 左 Control、左 Shift、左 Alt、左 GUI を押しながら `kc` を押します。 |
|
||||||
|
|
||||||
また、それらを繋げることができます。例えば、`LCTL(LALT(KC_DEL))` は1回のキー押下で Control+Alt+Delete を送信するキーを作成します。
|
また、それらを繋げることができます。例えば、`LCTL(LALT(KC_DEL))` または `C(A(KC_DEL))` は1回のキー押下で Control+Alt+Delete を送信するキーを作成します。
|
||||||
|
|
||||||
# 過去の内容
|
# 過去の内容 :id=legacy-content
|
||||||
|
|
||||||
このページには多くの機能が含まれていました。このページを構成していた多くのセクションをそれぞれのページに移動しました。これより下は全て単なるリダイレクトであるため、web上で古いリンクをたどっている人は探しているものを見つけることができます。
|
このページには多くの機能が含まれていました。このページを構成していた多くのセクションをそれぞれのページに移動しました。これより下は全て単なるリダイレクトであるため、web上で古いリンクをたどっている人は探しているものを見つけることができます。
|
||||||
|
|
||||||
|
## レイヤー :id=switching-and-toggling-layers
|
||||||
|
|
||||||
|
* [レイヤー](ja/feature_layers.md)
|
||||||
|
|
||||||
## モッドタップ :id=mod-tap
|
## モッドタップ :id=mod-tap
|
||||||
|
|
||||||
* [モッドタップ](ja/mod_tap.md)
|
* [モッドタップ](ja/mod_tap.md)
|
||||||
|
|||||||
@@ -0,0 +1,99 @@
|
|||||||
|
# レイヤー :id=layers
|
||||||
|
|
||||||
|
<!---
|
||||||
|
original document: 0.9.0:docs/feature_layers.md
|
||||||
|
git diff 0.9.0 HEAD -- docs/feature_layers.md | cat
|
||||||
|
-->
|
||||||
|
|
||||||
|
QMK ファームウェアの最も強力で良く使われている機能の一つは、レイヤーを使う機能です。ほとんどの人にとって、これはラップトップやタブレットキーボードにあるのと同じように、様々なキーを可能にするファンクションキーに相当します。
|
||||||
|
|
||||||
|
レイヤースタックがどのように動作するかの詳細な説明については、[キーマップの概要](ja/keymap.md#keymap-and-layers)を調べてください。
|
||||||
|
|
||||||
|
## レイヤーの切り替えとトグル :id=switching-and-toggling-layers
|
||||||
|
|
||||||
|
以下の関数により、様々な方法でレイヤーをアクティブにすることができます。レイヤーは通常、独立したレイアウトでは無いことに注意してください -- 複数のレイヤーを一度にアクティブにすることができ、レイヤーが `KC_TRNS` を使ってキーの押下を下のレイヤーへと透過させることが一般的です。MO()、LM()、TT() あるいは LT() を使って一時的なレイヤーの切り替えを使う場合、上のレイヤーのキーを透過にするようにしてください。さもないと意図したように動作しないかもしれません。
|
||||||
|
|
||||||
|
* `DF(layer)` - デフォルトレイヤーを切り替えます。デフォルトレイヤーは、他のレイヤーがその上に積み重なっている、常にアクティブな基本レイヤーです。デフォルトレイヤーの詳細については以下を見てください。これは QWERTY から Dvorak レイアウトに切り替えるために使うことができます。(これは一時的な切り替えであり、キーボードの電源が切れるまでしか持続しないことに注意してください。デフォルトレイヤーを永続的に変更するには、[process_record_user](ja/custom_quantum_functions.md#programming-the-behavior-of-any-keycode) 内で `set_single_persistent_default_layer` 関数を呼び出すなど、より深いカスタマイズが必要です。)
|
||||||
|
* `MO(layer)` - 一時的に*レイヤー*をアクティブにします。キーを放すとすぐに、レイヤーは非アクティブになります。
|
||||||
|
* `LM(layer, mod)` - (`MO` のように)一時的に*レイヤー*をアクティブにしますが、モディファイア *mod* がアクティブな状態です。layer 0-15 と、左モディファイアのみをサポートします: `MOD_LCTL`、`MOD_LSFT`、`MOD_LALT`、`MOD_LGUI` (`KC_` 定数の代わりに `MOD_` 定数を使うことに注意してください)。これらのモディファイアは、例えば `LM(_RAISE, MOD_LCTL | MOD_LALT)` のように、ビット単位の OR を使って組み合わせることができます。
|
||||||
|
* `LT(layer, kc)` - ホールドされた時に*レイヤー*を一時的にアクティブにし、タップされた時に *kc* を送信します。layer 0-15 のみをサポートします。
|
||||||
|
* `OSL(layer)` - 次のキーが押されるまで、一時的に*レイヤー*をアクティブにします。詳細と追加機能については、[ワンショットキー](ja/one_shot_keys.md)を見てください。
|
||||||
|
* `TG(layer)` - *レイヤー*を切り替えます。非アクティブな場合はアクティブにし、逆も同様です。
|
||||||
|
* `TO(layer)` - *レイヤー*をアクティブにし、他の全てのレイヤー(デフォルトレイヤーを除く)を非アクティブにします。この関数は特別です。1つのレイヤーをアクティブなレイヤースタックに追加/削除する代わりに、現在のアクティブなレイヤーを完全に置き換え、唯一上位のレイヤーを下位のレイヤーで置き換えることができるからです。これはキーダウンで(キーが押されるとすぐに)アクティブになります。
|
||||||
|
* `TT(layer)` - レイヤーのタップ切り替え。キーを押したままにすると*レイヤー*がアクティブにされ、放すと非アクティブになります (`MO` 風)。繰り返しタップすると、レイヤーはオンあるいはオフを切り替えます (`TG` 風)。デフォルトでは5回のタップが必要ですが、`TAPPING_TOGGLE` を定義することで変更することができます -- 例えば、2回のタップだけで切り替えるには、`#define TAPPING_TOGGLE 2` を定義します。
|
||||||
|
|
||||||
|
### 注意事項 :id=caveats
|
||||||
|
|
||||||
|
現在のところ、`LT()` と `MT()` は[基本的なキーコードセット](ja/keycodes_basic.md)に制限されています。つまり、`LCTL()`、`KC_TILD` あるいは `0xFF` より大きなキーコードを使うことができません。特に、`LT` と `MT` のような二重の機能キーは16ビットキーコードを使います。4ビットは機能の識別のために使われ、次の12ビットはパラメータに分かれます。レイヤータップはレイヤーに4ビットを使います(実はレイヤータップがレイヤー 0-16 に制限されている理由です)。モッドタップも同じですが、識別子に4ビット、モッドのために4ビットが使われ、全体でキーコードに8ビットを使います。このため、使用されるキーコードは `0xFF` (0-255) に制限され、基本的なキーコードのみです。
|
||||||
|
|
||||||
|
これを拡張してもせいぜい複雑になるだけでしょう。32ビットキーコードに移行すると、これの多くが解決されますが、キーマップマトリックスが使用する領域が2倍になります。また、問題が起きる可能性もあります。タップしたキーコードにモディファイアを適用する必要がある場合は、[タップダンス](ja/feature_tap_dance.md#example-5-using-tap-dance-for-advanced-mod-tap-and-layer-tap-keys)を使うことができます。
|
||||||
|
|
||||||
|
さらに、モッドタップあるいはレイヤータップで少なくとも1つの右手用のモディファイアが指定された場合、指定された全てのモディファイアが右手用になるため、2つをうまく組み合わせて一致させることはできません。
|
||||||
|
|
||||||
|
## レイヤーとの連携 :id=working-with-layers
|
||||||
|
|
||||||
|
レイヤーを切り替える時は注意してください。(キーボードを取り外さずに)そのレイヤーを非アクティブにすることができずレイヤーから移動できなくなる可能性があります。最も一般的な問題を避けるためのガイドラインを作成しました。
|
||||||
|
|
||||||
|
### 初心者 :id=beginners
|
||||||
|
|
||||||
|
QMK を使い始めたばかりの場合は、全てを単純にしたいでしょう。レイヤーをセットアップする時は、これらのガイドラインに従ってください:
|
||||||
|
|
||||||
|
* デフォルトの "base" レイヤーとして、layer 0 をセットアップします。これは通常の入力レイヤーであり、任意のレイアウト (qwerty、dvorak、colemak など)にすることができます。通常はキーボードのキーのほとんどまたは全てが定義されているため、これを最下位のレイヤーとして設定することが重要です。そうすることで、もしそれが他のレイヤーの上 (つまりレイヤー番号が大きい)にある場合の影響を防ぎます。
|
||||||
|
* layer 0 をルートとして、レイヤーを "ツリー" レイアウトに配置します。他の複数のレイヤーから同じレイヤーに行こうとしないでください。
|
||||||
|
* 各レイヤーのキーマップでは、より高い番号のレイヤーのみを参照します。レイヤーは最大の番号(最上位)のアクティブレイヤーから処理されるため、下位レイヤーの状態を変更するのは難しくエラーが発生しやすくなります。
|
||||||
|
|
||||||
|
### 中級ユーザ :id=intermediate-users
|
||||||
|
|
||||||
|
複数の基本レイヤーが必要な場合があります。例えば、QWERTY と Dvorak を切り替える場合、国ごとに異なるレイアウトを切り替える場合、あるいは異なるビデオゲームごとにレイアウトを切り替える場合などです。基本レイヤーは常に最小の番号のレイヤーである必要があります。複数の基本レイヤーがある場合、常にそれらを相互排他的に扱う必要があります。1つの基本レイヤーがオンの場合、他をオフにします。
|
||||||
|
|
||||||
|
### 上級ユーザ :id=advanced-users
|
||||||
|
|
||||||
|
レイヤーがどのように動作し、何ができるかを理解したら、より創造的になります。初心者のセクションで列挙されている規則は、幾つかの巧妙な詳細を回避するのに役立ちますが、特に超コンパクトなキーボードのユーザにとって制約になる場合があります。レイヤーの仕組みを理解することで、レイヤーをより高度な方法で使うことができます。
|
||||||
|
|
||||||
|
レイヤーは番号順に上に積み重なっています。キーの押下の動作を決定する時に、QMK は上から順にレイヤーを走査し、`KC_TRNS` に設定されていない最初のアクティブなレイヤーに到達すると停止します。結果として、現在のレイヤーよりも数値的に低いレイヤーをアクティブにし、現在のレイヤー(あるいはアクティブでターゲットレイヤーよりも高い別のレイヤー)に `KC_TRNS` 以外のものがある場合、それが送信されるキーであり、アクティブ化したばかりのレイヤー上のキーではありません。これが、ほとんどの人の "なぜレイヤーが切り替わらないのか" 問題の原因です。
|
||||||
|
|
||||||
|
場合によっては、マクロ内あるいはタップダンスルーチンの一部としてレイヤーを切り替えほうが良いかもしれません。`layer_on` はレイヤーをアクティブにし、`layer_off` はそれを非アクティブにします。もっと多くのレイヤーに関する関数は、[action_layer.h](https://github.com/qmk/qmk_firmware/blob/master/tmk_core/common/action_layer.h) で見つけることができます。
|
||||||
|
|
||||||
|
## 関数 :id=functions
|
||||||
|
|
||||||
|
レイヤーの使用あるいは操作に関係する多くの関数(と変数)があります。
|
||||||
|
|
||||||
|
| 関数 | 説明 |
|
||||||
|
|----------------------------------------------|---------------------------------------------------------------------------------------------------------|
|
||||||
|
| `layer_state_set(layer_mask)` | 直接レイヤーの状態を設定する (推奨。何をしているのか分かっていない場合は使わないでください)。 |
|
||||||
|
| `layer_clear()` | 全てのレイヤーを消去する (全てをオフにします)。 |
|
||||||
|
| `layer_move(layer)` | 指定されたレイヤーをオンにし、それ以外をオフにする。 |
|
||||||
|
| `layer_on(layer)` | 指定されたレイヤーをオンにし、それ以外を既存の状態のままにする。 |
|
||||||
|
| `layer_off(layer)` | 指定されたレイヤーをオフにし、それ以外を既存の状態のままにする。 |
|
||||||
|
| `layer_invert(layer)` | 指定されたレイヤーの状態を反転/トグルする。 |
|
||||||
|
| `layer_or(layer_mask)` | 指定されたレイヤーと既存のレイヤー状態の間で一致するビットに基づいてレイヤーをオンにする。 |
|
||||||
|
| `layer_and(layer_mask)` | 指定されたレイヤーと既存のレイヤー状態の間で有効なビットに基づいてレイヤーをオンにする。 |
|
||||||
|
| `layer_xor(layer_mask)` | 指定されたレイヤーと既存のレイヤー状態の間で一致しないビットに基づいてレイヤーをオンにする。 |
|
||||||
|
| `layer_debug(layer_mask)` | デバッガのコンソールに現在のビットマスクと最も高いレイヤーを出力する。 |
|
||||||
|
| `default_layer_set(layer_mask)` | 直接デフォルトレイヤーの状態を設定する (推奨。何をしているのか分かっていない場合は使わないでください)。 |
|
||||||
|
| `default_layer_or(layer_mask)` | 指定されたレイヤーと既存のデフォルトレイヤー状態の間で一致するビットに基づいてレイヤーをオンにする。 |
|
||||||
|
| `default_layer_and(layer_mask)` | 指定されたレイヤーと既存のデフォルトレイヤー状態の間で一致する有効なビットに基づいてレイヤーをオンにする。 |
|
||||||
|
| `default_layer_xor(layer_mask)` | 指定されたレイヤーと既存のデフォルトレイヤー状態の間で一致しないビットに基づいてレイヤーをオンにする。 |
|
||||||
|
| `default_layer_debug(layer_mask)` | デバッガのコンソールに現在のビットマスクと最も高いアクティブなレイヤーを出力する。 |
|
||||||
|
| [`set_single_persistent_default_layer(layer)`](ja/ref_functions.md#setting-the-persistent-default-layer) | デフォルトレイヤーを設定し、それを永続化メモリ (EEPROM) に書き込む。 |
|
||||||
|
| [`update_tri_layer(x, y, z)`](ja/ref_functions.md#update_tri_layerx-y-z) | レイヤー `x` と `y` の両方がオンであるかを調べ、それに基づいて `z` を設定する(両方がオンの場合オン、そうでなければオフ)。 |
|
||||||
|
| [`update_tri_layer_state(state, x, y, z)`](ja/ref_functions.md#update_tri_layer_statestate-x-y-z) | `update_tri_layer(x, y, z)` と同じことをするが、`layer_state_set_*` 関数から呼ばれる。 |
|
||||||
|
|
||||||
|
|
||||||
|
呼び出すことができる関数に加えて、レイヤーが変更されるたびに呼び出されるコールバック関数が幾つかあります。これはレイヤー状態を関数に渡し、読み取りや変更することができます。
|
||||||
|
|
||||||
|
| コールバック | 説明 |
|
||||||
|
|-----------------------------------------------------|----------------------------------------------------------------------------------------|
|
||||||
|
| `layer_state_set_kb(layer_state_t state)` | キーボードレベルのレイヤー関数のためのコールバック。 |
|
||||||
|
| `layer_state_set_user(layer_state_t state)` | ユーザレベルのレイヤー関数のためのコールバック。 |
|
||||||
|
| `default_layer_state_set_kb(layer_state_t state)` | キーボードレベルのデフォルトレイヤー関数のためのコールバック。キーボードの初期化時に呼ばれます。 |
|
||||||
|
| `default_layer_state_set_user(layer_state_t state)` | ユーザレベルのデフォルトレイヤー関数のためのコールバック。キーボードの初期化時に呼ばれます。 |
|
||||||
|
|
||||||
|
?> これらのコールバックを使うための追加の情報については、[レイヤー変換コード](ja/custom_quantum_functions.md#layer-change-code)のドキュメントを調べてください。
|
||||||
|
|
||||||
|
| チェック関数 | 説明 |
|
||||||
|
|-------------------------------------------|------------------------------------------------------------------------------|
|
||||||
|
| `layer_state_cmp(cmp_layer_state, layer)` | これは `cmp_layer_state` を調べて、指定された `layer` が有効かどうかを確認します。これは、レイヤーコールバックで使うためのものです。 |
|
||||||
|
| `layer_state_is(layer)` | これはレイヤーの状態を調べて、指定された `layer` が有効かどうかを確認します。(グローバルレイヤー状態については、`layer_state_cmp` を呼びます)。 |
|
||||||
|
|
||||||
|
!> `IS_LAYER_ON(layer)` もありますが、`layer_state_cmp` 関数には、レイヤー0で正しい値を返すようにするために追加の処理があります。さもないと、レイヤー0がオンになっているかどうかを確認する時に誤った値が返されることがあります。
|
||||||
@@ -0,0 +1,399 @@
|
|||||||
|
# マクロ
|
||||||
|
|
||||||
|
<!---
|
||||||
|
original document: 0.8.169:docs/feature_macros.md
|
||||||
|
git diff 0.8.169 HEAD -- docs/feature_macros.md | cat
|
||||||
|
-->
|
||||||
|
|
||||||
|
マクロにより、1つのキーを押すだけで複数のキーストロークを送信することができます。QMK にはマクロを定義し使う方法が幾つかあります。これらはなんでもすることができます: よく使うフレーズの入力、コピーペースト、反復的なゲームの動き、あるいはコードを書くことさえ手助けします。
|
||||||
|
|
||||||
|
!> **セキュリティの注意**: マクロを使って、パスワード、クレジットカード番号、その他の機密情報のいずれも送信することが可能ですが、それは非常に悪い考えです。あなたのキーボードを手に入れた人は誰でもテキストエディタを開いてその情報にアクセスすることができます。
|
||||||
|
|
||||||
|
## 新しい方法: `SEND_STRING()` と `process_record_user`
|
||||||
|
|
||||||
|
単語またはフレーズを入力するキーが欲しい時があります。最も一般的な状況のために `SEND_STRING()` を提供しています。これは文字列(つまり、文字のシーケンス)を入力します。簡単にキーコードに変換することができる全ての ASCII 文字がサポートされています (例えば、`\n\t`)。
|
||||||
|
|
||||||
|
以下は2キーのキーボードのための `keymap.c` の例です:
|
||||||
|
|
||||||
|
```c
|
||||||
|
enum custom_keycodes {
|
||||||
|
QMKBEST = SAFE_RANGE,
|
||||||
|
};
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
switch (keycode) {
|
||||||
|
case QMKBEST:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
// キーコード QMKBEST が押された時
|
||||||
|
SEND_STRING("QMK is the best thing ever!");
|
||||||
|
} else {
|
||||||
|
// キーコード QMKBEST が放された時
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[0] = {
|
||||||
|
{QMKBEST, KC_ESC}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
ここで起きることは以下の通りです:
|
||||||
|
最初に他のキーコードで使用されていない範囲で新しいカスタムキーコードを定義します。
|
||||||
|
次に、`process_record_user` 関数を使います。これはキーが押されるか放されるたびに呼び出され、カスタムキーコードがアクティブかどうかを確認します。
|
||||||
|
アクティブな場合、`SEND_STRING` マクロ (これは C プロセッサのマクロで、QMK のマクロと混同しないでください)を介して文字列 `"QMK is the best thing ever!"` をコンピュータに送信します。
|
||||||
|
呼び出し元に、処理したばかりのキー押下を通常通り(機能を置き換えたり変更したりしなかったので)処理し続けるよう指示するため、`true` を返します。
|
||||||
|
最後に、最初のボタンがマクロをアクティブにし、2番目のボタンが単なるエスケープボタンになるようにキーマップを定義します。
|
||||||
|
|
||||||
|
複数のマクロを追加することもできます。
|
||||||
|
以下のように、別のキーコードを追加し、switch 文に別の case ラベルを追加することで、それを行うことができます:
|
||||||
|
|
||||||
|
```c
|
||||||
|
enum custom_keycodes {
|
||||||
|
QMKBEST = SAFE_RANGE,
|
||||||
|
QMKURL,
|
||||||
|
MY_OTHER_MACRO
|
||||||
|
};
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
switch (keycode) {
|
||||||
|
case QMKBEST:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
// キーコード QMKBEST が押された時
|
||||||
|
SEND_STRING("QMK is the best thing ever!");
|
||||||
|
} else {
|
||||||
|
// キーコード QMKBEST が放された時
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case QMKURL:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
// キーコード QMKURL が押された場合
|
||||||
|
SEND_STRING("https://qmk.fm/\n");
|
||||||
|
} else {
|
||||||
|
// キーコード QMKURL が放された場合
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case MY_OTHER_MACRO:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
SEND_STRING(SS_LCTL("ac")); // 全てを選択しコピーします
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[0] = {
|
||||||
|
{MY_CUSTOM_MACRO, MY_OTHER_MACRO}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
### 高度なマクロ
|
||||||
|
|
||||||
|
`process_record_user()` 関数のほかに、`post_process_record_user()` 関数があります。これは `process_record` の後に実行され、キーストロークが送信された後の処理に使用できます。これは例えば、通常のキーの前に押され、通常のキーの後で放されるキーがほしい場合に便利です。
|
||||||
|
|
||||||
|
この例では、通常のキー入力を変更して、キーストロークが通常送信される前に `F22` が押されるようにし、キーが放された__後にのみ__ `F22` キーを放します。
|
||||||
|
|
||||||
|
```c
|
||||||
|
static uint8_t f22_tracker;
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
switch (keycode) {
|
||||||
|
case KC_A ... KC_F21: // F22 をスキップする方法に注意してください
|
||||||
|
case KC_F23 ... KC_EXSEL: //exsel は修飾キーの直前のキーです
|
||||||
|
if (record->event.pressed) {
|
||||||
|
register_code(KC_F22); //これは F22 を押したことを送信することを意味します
|
||||||
|
f22_tracker++;
|
||||||
|
register_code(keycode);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void post_process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
switch (keycode) {
|
||||||
|
case KC_A ... KC_F21: // F22 をスキップする方法に注意してください
|
||||||
|
case KC_F23 ... KC_EXSEL: //exsel は修飾キーの直前のキーです
|
||||||
|
if (!record->event.pressed) {
|
||||||
|
f22_tracker--;
|
||||||
|
if (!f22_tracker) {
|
||||||
|
unregister_code(KC_F22); //これは F22 を放したことを送信することを意味します
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
### タップ、ダウン、アップ
|
||||||
|
|
||||||
|
`Ctrl` あるいは `Home` など、ソースコードに文字列として表記できないキーをマクロで使うこともできます。
|
||||||
|
以下のようにラップすることで任意のコードを送信することができます:
|
||||||
|
|
||||||
|
* `SS_TAP()` キーを押して放します。
|
||||||
|
* `SS_DOWN()` キーを押します (ただし、放しません)。
|
||||||
|
* `SS_UP()` キーを放します。
|
||||||
|
|
||||||
|
例えば:
|
||||||
|
|
||||||
|
SEND_STRING(SS_TAP(X_HOME));
|
||||||
|
|
||||||
|
`KC_HOME` をタップします - プリフィックスが `X_` で `KC_` ではないことに注意してください。以下のように、他の文字列と組み合わせることもできます:
|
||||||
|
|
||||||
|
SEND_STRING("VE"SS_TAP(X_HOME)"LO");
|
||||||
|
|
||||||
|
これは "VE" に続けて `KC_HOME` をタップ、そして "LO" (新しい行の場合は "LOVE" と綴る)を送信します。
|
||||||
|
|
||||||
|
文字列に遅延を追加することもできます:
|
||||||
|
|
||||||
|
* `SS_DELAY(msecs)` は指定されたミリ秒だけ遅らせます。
|
||||||
|
|
||||||
|
例えば:
|
||||||
|
|
||||||
|
SEND_STRING("VE" SS_DELAY(1000) SS_TAP(X_HOME) "LO");
|
||||||
|
|
||||||
|
これは "VE" 、1秒の遅延、`KC_HOME` をタップ、"LO" (新しい行の場合は "LOVE" と綴るが、中間に遅延がある) を送信します。
|
||||||
|
|
||||||
|
使用できるモッドショートカットもいくつかあります:
|
||||||
|
|
||||||
|
* `SS_LCTL(文字列)`
|
||||||
|
* `SS_LSFT(文字列)`
|
||||||
|
* `SS_LALT(文字列)`、`SS_LOPT(文字列)`
|
||||||
|
* `SS_LGUI(文字列)`、`SS_LCMD(文字列)`、`SS_LWIN(文字列)`
|
||||||
|
* `SS_RCTL(文字列)`
|
||||||
|
* `SS_RSFT(文字列)`
|
||||||
|
* `SS_RALT(文字列)`、`SS_ROPT(文字列)`、`SS_ALGR(文字列)`
|
||||||
|
* `SS_RGUI(文字列)`、`SS_RCMD(文字列)`、`SS_RWIN(文字列)`
|
||||||
|
|
||||||
|
これらはそれぞれの修飾キーを押し、指定された文字列を送信してから、修飾キーを解放します。
|
||||||
|
それらは以下のように使うことができます:
|
||||||
|
|
||||||
|
SEND_STRING(SS_LCTL("a"));
|
||||||
|
|
||||||
|
これは、左 Control +`a` (左 Control をダウンし、`a`、左 Control をアップ)を送信します - それらは文字列(例えば `"k"`)であり、`X_K` キーコードでは無いことに注意してください。
|
||||||
|
|
||||||
|
### 代替キーマップ
|
||||||
|
|
||||||
|
デフォルトでは、QWERTY レイアウトの US キーマップを想定しています; それを変更したい場合(例えば OS がソフトウェア Colemak を使う場合)、キーマップのどこかに以下を含めます:
|
||||||
|
|
||||||
|
#include <sendstring_colemak.h>
|
||||||
|
|
||||||
|
### メモリ内の文字列
|
||||||
|
|
||||||
|
何らかの理由で文字列を操作していて、(リテラル、文字列定数の代わりに)生成したばかりのものを出力する必要がある場合は、以下のように `send_string()` を使うことができます:
|
||||||
|
|
||||||
|
```c
|
||||||
|
char my_str[4] = "ok.";
|
||||||
|
send_string(my_str);
|
||||||
|
```
|
||||||
|
|
||||||
|
上で定義したショートカットは `send_string()` では動作しないですが、必要に応じて別の行に分けることができます:
|
||||||
|
|
||||||
|
```c
|
||||||
|
char my_str[4] = "ok.";
|
||||||
|
SEND_STRING("I said: ");
|
||||||
|
send_string(my_str);
|
||||||
|
SEND_STRING(".."SS_TAP(X_END));
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## 高度なマクロ関数
|
||||||
|
|
||||||
|
マクロの生成に役立つ関数が幾つかあります。マクロの中にかなり高度なコードを書くことができますが、機能が複雑になりすぎる場合は、代わりにカスタムキーコードを定義することをお勧めします。マクロはシンプルにしなければなりません。
|
||||||
|
|
||||||
|
?> 追加の機能として、[便利な関数](ja/ref_functions.md) の中で説明される関数を使うこともできます。例えば `reset_keyboard()` によりマクロの一部としてキーボードをリセットすることができます。
|
||||||
|
|
||||||
|
### `record->event.pressed`
|
||||||
|
|
||||||
|
これでスイッチが押されているか放されているかどうかをテストすることができます。以下が例です。
|
||||||
|
|
||||||
|
```c
|
||||||
|
if (record->event.pressed) {
|
||||||
|
// キーダウン時
|
||||||
|
} else {
|
||||||
|
// キーアップ時
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### `register_code(<kc>);`
|
||||||
|
|
||||||
|
これはコンピュータに `<kc>` キーダウンイベントを送信します。例として `KC_ESC`、`KC_C`、`KC_4` や、`KC_LSFT` と `KC_LGUI` のような修飾キーなどもあります。
|
||||||
|
|
||||||
|
### `unregister_code(<kc>);`
|
||||||
|
|
||||||
|
`register_code` 関数と対応して、これは `<kc>` キーアップイベントをコンピュータに送信します。これを使わない場合、キーは送信されるまで押し続けられます。
|
||||||
|
|
||||||
|
### `tap_code(<kc>);`
|
||||||
|
|
||||||
|
これは `register_code(<kc>)` を送信し、その後 `unregister_code(<kc>)` を送信します。押下とリリースイベントの両方を送信する場合に便利です (押し続けるのではなく、キーを"タップ"する)。
|
||||||
|
|
||||||
|
タップの登録(解除)に問題がある場合、`config.h` ファイルで `#define TAP_CODE_DELAY 100` を設定することで、登録イベントと解除イベントの間に遅延を追加することができます。値はミリ秒です。
|
||||||
|
|
||||||
|
### `register_code16(<kc>);`、`unregister_code16(<kc>);`、`tap_code16(<kc>);`
|
||||||
|
|
||||||
|
これらの関数は対応する通常の関数と同様に機能しますが、修飾キーで修飾されたキーコードを使うことができます (Shift、Alt、Control、GUI を適用)。
|
||||||
|
|
||||||
|
例えば、修飾キーを押して(`register_code()`して)、キーコードを押す(`register_code()`する)代わりに、`register_code16(S(KC_5));` を使うことができます。
|
||||||
|
|
||||||
|
### `clear_keyboard();`
|
||||||
|
|
||||||
|
これは現在押されている全ての修飾キーとキーをクリアします。
|
||||||
|
|
||||||
|
### `clear_mods();`
|
||||||
|
|
||||||
|
これは現在押されている全ての修飾キーをクリアします。
|
||||||
|
|
||||||
|
### `clear_keyboard_but_mods();`
|
||||||
|
|
||||||
|
これは現在押されている修飾キー以外の全てのキーをクリアします。
|
||||||
|
|
||||||
|
## 高度な例:
|
||||||
|
|
||||||
|
### スーパー ALT↯TAB
|
||||||
|
|
||||||
|
このマクロは `KC_LALT` を登録し、`KC_TAB` をタップして、1000ms 待ちます。キーが再度タップされると、別の `KC_TAB` が送信されます; タップが無い場合、`KC_LALT` が登録解除され、ウィンドウを切り替えることができます。
|
||||||
|
|
||||||
|
```c
|
||||||
|
bool is_alt_tab_active = false; # keymap.c の先頭付近にこれを追加します
|
||||||
|
uint16_t alt_tab_timer = 0; # すぐにそれらを使います
|
||||||
|
|
||||||
|
enum custom_keycodes { # 素晴らしいキーコードを用意してください
|
||||||
|
ALT_TAB = SAFE_RANGE,
|
||||||
|
};
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
switch (keycode) { # これはキーコードを利用したつまらない作業のほとんどを行います。
|
||||||
|
case ALT_TAB:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
if (!is_alt_tab_active) {
|
||||||
|
is_alt_tab_active = true;
|
||||||
|
register_code(KC_LALT);
|
||||||
|
}
|
||||||
|
alt_tab_timer = timer_read();
|
||||||
|
register_code(KC_TAB);
|
||||||
|
} else {
|
||||||
|
unregister_code(KC_TAB);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_scan_user(void) { # とても重要なタイマー
|
||||||
|
if (is_alt_tab_active) {
|
||||||
|
if (timer_elapsed(alt_tab_timer) > 1000) {
|
||||||
|
unregister_code(KC_LALT);
|
||||||
|
is_alt_tab_active = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## **(非推奨)** 古い方法: `MACRO()` と `action_get_macro`
|
||||||
|
|
||||||
|
!> これは TMK から継承されており、更新されていません - 代わりに `SEND_STRING` と `process_record_user` を使うことをお勧めします。
|
||||||
|
|
||||||
|
デフォルトでは、QMK はマクロが無いことを前提としています。マクロを定義するには、`action_get_macro()` 関数を作成します。例えば:
|
||||||
|
|
||||||
|
```c
|
||||||
|
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
|
||||||
|
if (record->event.pressed) {
|
||||||
|
switch(id) {
|
||||||
|
case 0:
|
||||||
|
return MACRO(D(LSFT), T(H), U(LSFT), T(I), D(LSFT), T(1), U(LSFT), END);
|
||||||
|
case 1:
|
||||||
|
return MACRO(D(LSFT), T(B), U(LSFT), T(Y), T(E), D(LSFT), T(1), U(LSFT), END);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return MACRO_NONE;
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
これは割り当てられているキーが押された時に実行される2つのマクロを定義します。キーが放された時にそれらを実行したい場合は、if 文を変更することができます。
|
||||||
|
|
||||||
|
if (!record->event.pressed) {
|
||||||
|
|
||||||
|
### マクロコマンド
|
||||||
|
|
||||||
|
マクロは以下のコマンドを含めることができます:
|
||||||
|
|
||||||
|
* I() はストロークの間隔をミリ秒単位で変更します。
|
||||||
|
* D() はキーを押します。
|
||||||
|
* U() はキーを放します。
|
||||||
|
* T() はキーをタイプ(押して放す)します。
|
||||||
|
* W() は待ちます (ミリ秒)。
|
||||||
|
* END 終了マーク。
|
||||||
|
|
||||||
|
### マクロをキーにマッピングする
|
||||||
|
|
||||||
|
マクロを呼び出すにはキーマップ内で `M()` 関数を使います。例えば、2キーのキーボードのキーマップは以下の通りです:
|
||||||
|
|
||||||
|
```c
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[0] = LAYOUT(
|
||||||
|
M(0), M(1)
|
||||||
|
),
|
||||||
|
};
|
||||||
|
|
||||||
|
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
|
||||||
|
if (record->event.pressed) {
|
||||||
|
switch(id) {
|
||||||
|
case 0:
|
||||||
|
return MACRO(D(LSFT), T(H), U(LSFT), T(I), D(LSFT), T(1), U(LSFT), END);
|
||||||
|
case 1:
|
||||||
|
return MACRO(D(LSFT), T(B), U(LSFT), T(Y), T(E), D(LSFT), T(1), U(LSFT), END);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return MACRO_NONE;
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
左側のキーを押すと、"Hi!" を入力し、右側のキーを押すと "Bye!" を入力します。
|
||||||
|
|
||||||
|
### マクロに名前を付ける
|
||||||
|
|
||||||
|
キーマップを読みやすくしながらキーマップから参照したいマクロがたくさんある場合は、ファイルの先頭で `#define` を使って名前を付けることができます。
|
||||||
|
|
||||||
|
```c
|
||||||
|
#define M_HI M(0)
|
||||||
|
#define M_BYE M(1)
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[0] = LAYOUT(
|
||||||
|
M_HI, M_BYE
|
||||||
|
),
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## 高度な例:
|
||||||
|
|
||||||
|
### 単一キーのコピーと貼り付け
|
||||||
|
|
||||||
|
この例は、押された時に `Ctrl-C` を送信し、放される時に `Ctrl-V` を送信するマクロを定義します。
|
||||||
|
|
||||||
|
```c
|
||||||
|
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
|
||||||
|
switch(id) {
|
||||||
|
case 0: {
|
||||||
|
if (record->event.pressed) {
|
||||||
|
return MACRO( D(LCTL), T(C), U(LCTL), END );
|
||||||
|
} else {
|
||||||
|
return MACRO( D(LCTL), T(V), U(LCTL), END );
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return MACRO_NONE;
|
||||||
|
};
|
||||||
|
```
|
||||||
@@ -0,0 +1,260 @@
|
|||||||
|
# ユーザスペース: キーマップ間でのコードの共有
|
||||||
|
|
||||||
|
<!---
|
||||||
|
original document: 0.9.0:docs/feature_userspace.md
|
||||||
|
git diff 0.9.0 HEAD -- docs/feature_userspace.md | cat
|
||||||
|
-->
|
||||||
|
|
||||||
|
似たキーマップを複数のキーボードで使う場合、それらの間でコードを共有できるという利点が得られることがあります。`users/`に以下の構造でキーマップ(理想的には GitHub のユーザ名、`<name>`)と同じ名前の独自のフォルダを作成します:
|
||||||
|
|
||||||
|
* `/users/<name>/` (パスに自動的に追加されます)
|
||||||
|
* `readme.md` (オプション、推奨)
|
||||||
|
* `rules.mk` (自動的に含まれます)
|
||||||
|
* `config.h` (自動的に含まれます)
|
||||||
|
* `<name>.h` (オプション)
|
||||||
|
* `<name>.c` (オプション)
|
||||||
|
* `cool_rgb_stuff.c` (オプション)
|
||||||
|
* `cool_rgb_stuff.h` (オプション)
|
||||||
|
|
||||||
|
|
||||||
|
以下のように、`<name>` という名前のキーマップをビルドする時のみ、これが全て起きます:
|
||||||
|
|
||||||
|
make planck:<name>
|
||||||
|
|
||||||
|
例えば、
|
||||||
|
|
||||||
|
make planck:jack
|
||||||
|
|
||||||
|
は、`/users/jack/rules.mk` に加えて、パスに `/users/jack/` フォルダを含めます。
|
||||||
|
|
||||||
|
!> この `name` は必要に応じて[上書き](#override-default-userspace)することができます。
|
||||||
|
|
||||||
|
## `Rules.mk`
|
||||||
|
|
||||||
|
`rules.mk` は自動的に処理される2つファイルのうちの1つです。これにより、コンパイル時に追加のソースファイル( `<name>.c` など)を追加できます。
|
||||||
|
|
||||||
|
追加されるデフォルトのソースファイルとして `<name>.c` を使うことを強くお勧めします。それを追加するために、以下のように `rules.mk` に SRC を追加する必要があります:
|
||||||
|
|
||||||
|
SRC += <name>.c
|
||||||
|
|
||||||
|
追加のファイルも同じ方法で追加できます - ただし、`<name>`.c/.h という名前のファイルを最初に用意することをお勧めします。
|
||||||
|
|
||||||
|
ビルド時に `/users/<name>/rules.mk` ファイルはキーマップの `rules.mk` の_後_でインクルードされます。これにより、キーボードによっては利用できないことのある個々の QMK 機能を利用する機能をユーザスペース `rules.mk` に持つことができます。
|
||||||
|
|
||||||
|
例えば、RGB ライトをサポートする全てのキーボード間で RGB 制御機能を共有する場合、RGBLIGHT 機能が有効であればサポートを追加することができます:
|
||||||
|
```make
|
||||||
|
ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
|
||||||
|
# ここにファンシーな rgb 関数のソースを含める
|
||||||
|
SRC += cool_rgb_stuff.c
|
||||||
|
endif
|
||||||
|
```
|
||||||
|
|
||||||
|
別のやり方として、キーマップの `rules.mk` で `define RGB_ENABLE` と定義し、以下のようにユーザスペースの `rules.mk` で変数をチェックすることができます:
|
||||||
|
```make
|
||||||
|
ifdef RGB_ENABLE
|
||||||
|
# ここにファンシーな rgb 関数のソースを含める
|
||||||
|
SRC += cool_rgb_stuff.c
|
||||||
|
endif
|
||||||
|
```
|
||||||
|
|
||||||
|
### デフォルトのユーザスペースの上書き :id=override-default-userspace
|
||||||
|
|
||||||
|
デフォルトでは、使用されるユーザスペース名はキーマップ名と同じです。状況によってはこれは望ましくありません。例えば、[レイアウト](ja/feature_layouts.md)機能を使う場合、異なるキーマップに同じ名前 (例えば、ANSI および ISO) を使うことができません。レイアウトに `mylayout-ansi` や `mylayout-iso` という名前を付け、以下の行をレイアウトの `rules.mk` に追加します:
|
||||||
|
|
||||||
|
```
|
||||||
|
USER_NAME := mylayout
|
||||||
|
```
|
||||||
|
|
||||||
|
これは、基板上に物理的に異なる機能を備えた、複数の異なるキーボード(RGBライトを備えたキーボード、オーディオを備えたキーボード、LEDの数が異なる、コントローラ上の異なるPINに接続されているなど)がある場合にも役立ちます。
|
||||||
|
|
||||||
|
## 設定オプション (`config.h`)
|
||||||
|
|
||||||
|
さらに、ここにある `config.h` はキーマップフォルダ内の同名のファイルと同じように処理されます。これは `<name>.h` ファイルとは別個に処理されます。
|
||||||
|
|
||||||
|
この理由は、`<name>.h` は (`#define TAPPING_TERM 100` などのような)設定を追加する時には追加されず、`config.h` ファイル内の `<name.h>` ファイルを含めるとコンパイルの問題を引き起こすからです。
|
||||||
|
|
||||||
|
!>`config.h` は[設定オプション](ja/config_options.md)のために使い、`<name>.h` ファイルはユーザあるいは(レイヤーあるいはキーコードのための enum のような)キーマップ固有の設定のために使うべきです
|
||||||
|
|
||||||
|
|
||||||
|
## Readme (`readme.md`)
|
||||||
|
|
||||||
|
作者情報 (あなたの名前、GitHub ユーザ名、eメール)およびオプションで[GPL 互換のライセンス](https://www.gnu.org/licenses/license-list.html#GPLCompatibleLicenses)を含めてください。
|
||||||
|
|
||||||
|
以下をテンプレートとして使うことができます:
|
||||||
|
```
|
||||||
|
Copyright <year> <name> <email> @<github_username>
|
||||||
|
|
||||||
|
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/>.
|
||||||
|
```
|
||||||
|
|
||||||
|
年、名前、eメールおよび GitHub ユーザ名をあなたの情報に置き換えます。
|
||||||
|
|
||||||
|
さらに、コードを他の人に共有したい場合、ここはコードを文章化するのに適した場所です。
|
||||||
|
|
||||||
|
## 特定のキーマップをサポートする全てのキーボードをビルドする
|
||||||
|
|
||||||
|
1つのコマンドで全てのキーマップのビルドを確認したいですか?以下で実行することができます:
|
||||||
|
|
||||||
|
make all:<name>
|
||||||
|
|
||||||
|
例えば、
|
||||||
|
|
||||||
|
make all:jack
|
||||||
|
|
||||||
|
これは、[_プルリクエスト_](https://github.com/qmk/qmk_firmware/pulls) を準備する時に全てが正常にコンパイルされることを確認したい場合に最適です。
|
||||||
|
|
||||||
|
## 例
|
||||||
|
|
||||||
|
簡単な例については、[`/users/_example/`](https://github.com/qmk/qmk_firmware/tree/master/users/drashna) を調べてください。
|
||||||
|
より複雑な例については、[`/users/drashna/`](https://github.com/qmk/qmk_firmware/tree/master/users/drashna) のユーザスペースを調べてください。
|
||||||
|
|
||||||
|
|
||||||
|
### カスタマイズされた関数 :id=customized-functions
|
||||||
|
|
||||||
|
QMK には、[`_quantum`、`_kb` および `_user` バージョン](ja/custom_quantum_functions.md#a-word-on-core-vs-keyboards-vs-keymap)を持つ使用可能な[関数](custom_quantum_functions.md)が山ほどあります。 ほとんどの場合、これらの関数のユーザバージョンを使う必要があります。しかし問題はそれらをユーザスペースで使う場合、キーマップで使うことができるバージョンが無いことです。
|
||||||
|
|
||||||
|
しかし、実際にはキーマップバージョンのサポートを追加し、ユーザスペースとキーマップの両方で使うことができます。
|
||||||
|
|
||||||
|
|
||||||
|
例えば、`layer_state_set_user()` 関数を見てみましょう。全てのキーボードで [Tri Layer State](ja/ref_functions.md#olkb-tri-layers) 機能を有効にしながら、`keymap.c` ファイルで Tri Layer 機能を保持することができます。
|
||||||
|
|
||||||
|
`<name.c>` ファイル内で、以下を追加する必要があります:
|
||||||
|
```c
|
||||||
|
__attribute__ ((weak))
|
||||||
|
layer_state_t layer_state_set_keymap (layer_state_t state) {
|
||||||
|
return state;
|
||||||
|
}
|
||||||
|
|
||||||
|
layer_state_t layer_state_set_user (layer_state_t state) {
|
||||||
|
state = update_tri_layer_state(state, 2, 3, 5);
|
||||||
|
return layer_state_set_keymap (state);
|
||||||
|
}
|
||||||
|
```
|
||||||
|
`__attribute__ ((weak))` 部分は、コンパイラにこれが `keymap.c` 内のバージョンに置き換えられるプレースホルダ関数であることを伝えます。そうすれば、`keymap.c` に追加する必要はありませんが、追加しても関数が同じ名前を持つため競合することはありません。
|
||||||
|
|
||||||
|
ここでの `_keymap` 部分は重要では無く、`_quantum`、`_kb` あるいは `_user` は既に使われているため、それら以外のものである必要があります。`layer_state_set_mine`、`layer_state_set_fn` などを使うことができます。
|
||||||
|
|
||||||
|
[`users/drashna`](https://github.com/qmk/qmk_firmware/tree/master/users/drashna) 内の [`template.c`](https://github.com/qmk/qmk_firmware/blob/master/users/drashna/template.c) でこのリストと他の一般的な関数を見つけることができます。
|
||||||
|
|
||||||
|
### カスタム機能
|
||||||
|
|
||||||
|
ユーザスペース機能は膨大な数のキーボードをサポートすることができるため、特定の機能は有効にしたいが、他のキーボードでは有効にしたくないかもしれません。そして実際に自分のユーザスペースで有効あるいは無効にすることができる「機能」を作成することができます。
|
||||||
|
|
||||||
|
例えば、(スペースを節約するために)特定のキーボードでのみたくさんのマクロを利用したい場合、それらを `#ifdef MACROS_ENABLED` して「見えないように」してから、キーボードごとに有効にすることができます。これを行うには、以下を rules.mk に追加します。
|
||||||
|
```make
|
||||||
|
ifeq ($(strip $(MACROS_ENABLED)), yes)
|
||||||
|
OPT_DEFS += -DMACROS_ENABLED
|
||||||
|
endif
|
||||||
|
```
|
||||||
|
`OPT_DEFS` 設定は `MACROS_ENABLED` がキーボード用に定義されるようにし(名前の前に `-D` があることに注意してください)、c/h ファイルで状態をチェックするために `#ifdef MACROS_ENABLED` を使うことができ、それに基づいてそのコードを処理します。
|
||||||
|
|
||||||
|
次にキーマップの `rules.mk` に `MACROS_ENABLED = yes` を追加し、ユーザスペースでこの機能とコードを有効にします。
|
||||||
|
|
||||||
|
そして `process_record_user` 関数の中で、以下のようなことを行います:
|
||||||
|
```c
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
switch (keycode) {
|
||||||
|
#ifdef MACROS_ENABLED
|
||||||
|
case MACRO1:
|
||||||
|
if (!record->event.pressed) {
|
||||||
|
SEND_STRING("This is macro 1!");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case MACRO2:
|
||||||
|
if (!record->event.pressed) {
|
||||||
|
SEND_STRING("This is macro 2!");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
### 結合マクロ
|
||||||
|
|
||||||
|
全てのキーマップについてユーザスペースにマクロやそのほかの関数を統合したい場合は、そうすることができます。これは上記の[カスタマイズ関数](#customized-functions)の例に基づいています。これは異なるキーボード間で共有される大量のマクロを維持し、キーボード固有のマクロも可能です。
|
||||||
|
|
||||||
|
最初に、全ての `keymap.c` ファイルを調べ、代わりに `process_record_user` を `process_record_keymap` に置き換えます。この方法では、これらのキーボードでキーボード固有のコードを使用でき、カスタムの "global" キーコードも使うことができます。また、`SAFE_RANGE` を `NEW_SAFE_RANGE` に置き換えて、キーコードが重複しないようにすることもできます。
|
||||||
|
|
||||||
|
次に、全ての keymap.c ファイルに `#include <name.h>` を追加します。これにより、各キーマップでそれらを再定義することなく新しいキーコードを使うことができます。
|
||||||
|
|
||||||
|
それが完了したら、必要なキーコードの定義を `<name>.h` ファイルに設定します。例えば:
|
||||||
|
```c
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "quantum.h"
|
||||||
|
#include "action.h"
|
||||||
|
#include "version.h"
|
||||||
|
|
||||||
|
// 全てを定義
|
||||||
|
enum custom_keycodes {
|
||||||
|
KC_MAKE = SAFE_RANGE,
|
||||||
|
NEW_SAFE_RANGE // キーマップ固有のコードについては "NEW_SAFE_RANGE" を使用
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
ここで、`<name>.c` ファイルを作成し、この内容をそれに追加します:
|
||||||
|
|
||||||
|
```c
|
||||||
|
#include "<name>.h"
|
||||||
|
|
||||||
|
__attribute__ ((weak))
|
||||||
|
bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
switch (keycode) {
|
||||||
|
case KC_MAKE: // ファームウェアをコンパイルし、キーボードのブートローダに基づく書き込みコマンドを追加します
|
||||||
|
if (!record->event.pressed) {
|
||||||
|
uint8_t temp_mod = get_mods();
|
||||||
|
uint8_t temp_osm = get_oneshot_mods();
|
||||||
|
clear_mods(); clear_oneshot_mods();
|
||||||
|
SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP);
|
||||||
|
#ifndef FLASH_BOOTLOADER
|
||||||
|
if ((temp_mod | temp_osm) & MOD_MASK_SHIFT)
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
SEND_STRING(":flash");
|
||||||
|
}
|
||||||
|
if ((temp_mod | temp_osm) & MOD_MASK_CTRL) {
|
||||||
|
SEND_STRING(" -j8 --output-sync");
|
||||||
|
}
|
||||||
|
tap_code(KC_ENT);
|
||||||
|
set_mods(temp_mod);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
return process_record_keymap(keycode, record);
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
(マクロパッドのような) Shift ボタンを持たないキーボードについては、ブートローダオプションを常に含める方法が必要です。これを行うには、以下をユーザスペースフォルダ内の `rules.mk` に追加します:
|
||||||
|
|
||||||
|
```make
|
||||||
|
ifeq ($(strip $(FLASH_BOOTLOADER)), yes)
|
||||||
|
OPT_DEFS += -DFLASH_BOOTLOADER
|
||||||
|
endif
|
||||||
|
```
|
||||||
|
|
||||||
|
これは任意のキーマップで使うことができる新しい `KC_MAKE` キーコードを追加します。そして、このキーコードは、`make <keyboard>:<keymap>` を出力するため、頻繁なコンパイルを簡単にします。そして、これは現在のキーボードの情報を出力するため、全てのキーボードとキーマップで動作します。そのため毎回これを入力する必要はありません。
|
||||||
|
|
||||||
|
また、Shift を押したままにすると書き込みの対象 (`:flash`) をコマンドに追加します。Control を押したままにすると、複数のファイルを一度に処理することでコンパイル時間を短縮する幾つかのコマンドを追加します。
|
||||||
|
|
||||||
|
そして Shift キーが無いキーボード、あるいは常に書き込みを試したいキーボードについては、キーマップの `rules.mk` に `FLASH_BOOTLOADER = yes` を追加することができます。
|
||||||
|
|
||||||
|
?> これはブートローダの設定に基づいて正しいユーティリティを使って新しくコンパイルされたファームウェアを自動的に書き込むはずです (あるいはデフォルトで HEX ファイルを生成するだけ)。ただし、これは全てのシステムで動作するわけではないことに注意してください。はっきり言うと、AVRDUDE は WSL では動作しません。そして、これは BootloadHID あるいは mdloader をサポートしません。
|
||||||
+26
-19
@@ -2,40 +2,47 @@
|
|||||||
|
|
||||||
<!---
|
<!---
|
||||||
grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh
|
grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh
|
||||||
original document: adf4acf59:docs/newbs.md
|
original document: 0.9.0:docs/newbs.md
|
||||||
git diff adf4acf59 HEAD -- docs/newbs.md | cat
|
git diff 0.9.0 HEAD -- docs/newbs.md | cat
|
||||||
-->
|
-->
|
||||||
|
|
||||||
QMK は、メカニカルキーボード用の強力なオープンソースファームウェアです。
|
キーボードには、コンピュータ入っているものと似たようなプロセッサが入っています。
|
||||||
QMK を使用して、シンプルかつ強力な方法でキーボードをカスタマイズできます。
|
このプロセッサでは、キーボードのボタンの押し下げの検出を担当し、キーが押されたときにコンピュータに通知するソフトウェアが動作しています。
|
||||||
完全な初心者からプログラマーに至るまで、あらゆるスキルレベルの人々が QMK を使用してキーボードをカスタマイズしています。
|
QMK Firmware は、そのソフトウェアの役割を果たし、ボタンの押下を検出しその情報をホストコンピュータに渡します。
|
||||||
このガイドは、あなたのスキルにかかわらず、同じことを行う手助けをします。
|
カスタムキーマップを作るということは、キーボード上で動くプログラムを作るということなのです。
|
||||||
|
|
||||||
|
QMK は、簡単なことは簡単に、そして、難しいことを可能なことにすることで、あなたの手にたくさんのパワーをもたらします。
|
||||||
|
パワフルなキーマップを作るためにプログラムを作成する方法を知る必要はありません。いくつかのシンプルな文法に従うだけで OK です。
|
||||||
|
|
||||||
お使いのキーボードで QMK を実行できるかどうか不明ですか?
|
お使いのキーボードで QMK を実行できるかどうか不明ですか?
|
||||||
もし作成したキーボードがメカニカルキーボードの場合、実行できる可能性が高いです。
|
もし作成したキーボードがメカニカルキーボードの場合、実行できる可能性が高いです。
|
||||||
QMK は[多くの趣味のキーボード](http://qmk.fm/keyboards/)をサポートしているため、もし現在のキーボードで QMK を実行できない場合でも、ニーズに合ったキーボードを見つけるのに問題はないはずです。
|
QMK は[多くの趣味のキーボード](http://qmk.fm/keyboards/)をサポートしています。
|
||||||
|
現在使用しているキーボードが QMK を実行できない場合、QMK を実行できるキーボードの選択肢はたくさんあります。
|
||||||
|
|
||||||
|
## このガイドは私のためにあるのでしょうか?
|
||||||
|
|
||||||
|
このガイドは、ソースコードを使ってキーボードのファームウェアを構築したいと考えている人に適しています。
|
||||||
|
もしあなたがすでにプログラマーであれば、このプロセスはとても身近で簡単に理解できるでしょう。
|
||||||
|
もし、プログラミングの考え方に抵抗があるのであれば、代わりに[私たちのオンラインGUI](ja/newbs_building_firmware_configurator.md)を見てみてください。
|
||||||
|
|
||||||
## 概要
|
## 概要
|
||||||
|
|
||||||
このガイドには7つの主要なセクションがあります。
|
このガイドには4つの主要なセクションがあります。
|
||||||
|
|
||||||
* [はじめに](ja/newbs_getting_started.md)
|
1. [環境設定](ja/newbs_getting_started.md)
|
||||||
* [コマンドラインを使用して初めてのファームウェアを構築する](ja/newbs_building_firmware.md)
|
2. [コマンドラインを使用して初めてのファームウェアを構築する](ja/newbs_building_firmware.md)
|
||||||
* [オンライン GUI を使用して初めてのファームウェアを構築する](ja/newbs_building_firmware_configurator.md)
|
3. [ファームウェアを書きこむ](ja/newbs_flashing.md)
|
||||||
* [ファームウェアを書きこむ](ja/newbs_flashing.md)
|
4. [テストとデバッグ](ja/newbs_testing_debugging.md)
|
||||||
* [テストとデバッグ](ja/newbs_testing_debugging.md)
|
|
||||||
* [QMK における Git 運用作法](ja/newbs_git_best_practices.md)
|
|
||||||
* [さらに学ぶための学習リソース](ja/newbs_learn_more_resources.md)
|
|
||||||
|
|
||||||
このガイドは、これまでソフトウェアをコンパイルしたことがない人を支援することに特化しています。
|
このガイドは、これまでソフトウェアをコンパイルしたことがない人を支援することに特化しています。
|
||||||
その観点から選択と推奨を行います。
|
その観点から選択と推奨を行います。
|
||||||
これらの手順の多くには代替方法があり、これらの代替方法のほとんどをサポートしています。
|
これらの手順の多くには代替方法があり、これらの代替方法のほとんどをサポートしています。
|
||||||
タスクを達成する方法について疑問がある場合は、[案内を求めることができます](ja/getting_started_getting_help.md)。
|
タスクを達成する方法について疑問がある場合は、[案内を求めることができます](ja/getting_started_getting_help.md)。
|
||||||
|
|
||||||
## 追加のリソース(英語)
|
## 追加のリソース
|
||||||
|
|
||||||
* [Thomas Baart's QMK Basics Blog](https://thomasbaart.nl/category/mechanical-keyboards/firmware/qmk/qmk-basics/) – 新規ユーザ視点から見た QMK ファームウェアの基本的な使用方法をカバーしたユーザ作成のブログ。
|
このガイドの他にも、QMK の学習に役立つリソースがいくつかあります。[学習リソース](ja/newbs_learn_more_resources.md)のページにまとめました。
|
||||||
|
|
||||||
## 追加のリソース(日本語)
|
## オープンソース
|
||||||
|
|
||||||
_日本語のリソース情報を募集中です。_
|
QMKは GNU General Public License でリリースされているオープンソース・ソフトウェアです。
|
||||||
@@ -31,6 +31,7 @@ To use these, simply `#include` the corresponding [header file](https://github.c
|
|||||||
|German (macOS) |`keymap_german_osx.h` |
|
|German (macOS) |`keymap_german_osx.h` |
|
||||||
|German (Neo2)* |`keymap_neo2.h` |
|
|German (Neo2)* |`keymap_neo2.h` |
|
||||||
|Greek* |`keymap_greek.h` |
|
|Greek* |`keymap_greek.h` |
|
||||||
|
|Hebrew* |`keymap_hebrew.h` |
|
||||||
|Hungarian |`keymap_hungarian.h` |
|
|Hungarian |`keymap_hungarian.h` |
|
||||||
|Icelandic |`keymap_icelandic.h` |
|
|Icelandic |`keymap_icelandic.h` |
|
||||||
|Italian |`keymap_italian.h` |
|
|Italian |`keymap_italian.h` |
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
# AEKISO60
|
||||||
|
|
||||||
|
A 60% PCB enabling use of ISO AEK keycaps and ALPS switches
|
||||||
|
|
||||||
|
More info: https://geekhack.org/index.php?topic=103627.0
|
||||||
|
|
||||||
|
* Keyboard Maintainer: [4pplet](https://github.com/4pplet)
|
||||||
|
* Hardware Supported: AEKISO60 Rev A
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make 4pplet/aekiso60/rev_a:default
|
||||||
|
|
||||||
|
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
|
||||||
|
[0] = LAYOUT_all(
|
||||||
|
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_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_ENT,
|
||||||
|
KC_LCTRL, 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_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, MO(1),
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, _______, KC_SPC, _______, KC_RALT, KC_RGUI, KC_RCTL),
|
||||||
|
|
||||||
|
[1] = LAYOUT_all(
|
||||||
|
KC_EXEC, 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_BSPC, KC_UP, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, KC_PENT,
|
||||||
|
KC_CAPS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_MUTE, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, KC_INS,
|
||||||
|
_______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLD, KC_VOLU, KC_PPLS, KC_PMNS, _______, KC_END, KC_PGDN, KC_DOWN, _______, _______,
|
||||||
|
RESET, _______, _______, _______, _______, _______, KC_BRID, KC_BRIU, _______)
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
|
||||||
|
[0] = LAYOUT_all(
|
||||||
|
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_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_ENT,
|
||||||
|
KC_LCTRL, 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_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, MO(1),
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, _______, KC_SPC, _______, KC_RALT, KC_RGUI, KC_RCTL),
|
||||||
|
|
||||||
|
[1] = LAYOUT_all(
|
||||||
|
KC_EXEC, 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_BSPC, KC_UP, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, KC_PENT,
|
||||||
|
KC_CAPS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_MUTE, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, KC_INS,
|
||||||
|
_______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLD, KC_VOLU, KC_PPLS, KC_PMNS, _______, KC_END, KC_PGDN, KC_DOWN, _______, _______,
|
||||||
|
RESET, _______, _______, _______, _______, _______, KC_BRID, KC_BRIU, _______),
|
||||||
|
|
||||||
|
[2] = LAYOUT_all(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______),
|
||||||
|
|
||||||
|
[3] = LAYOUT_all(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______)
|
||||||
|
};
|
||||||
|
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
VIA_ENABLE = yes
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "config_common.h"
|
||||||
|
|
||||||
|
/* USB Device descriptor parameter */
|
||||||
|
#define VENDOR_ID 0x4444
|
||||||
|
#define PRODUCT_ID 0x0001
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER 4pplet
|
||||||
|
#define PRODUCT AEKISO60 Rev A
|
||||||
|
#define DESCRIPTION A steezy KEEB
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 5
|
||||||
|
#define MATRIX_COLS 14
|
||||||
|
// ROWS: Top to bottom, COLS: Left to right
|
||||||
|
#define MATRIX_ROW_PINS {C2,D0,B0,C7,C5}
|
||||||
|
#define MATRIX_COL_PINS {C4,C6,B7,B6,B5,B4,B3,B2,B1,D6,D5,D4,D2,D1}
|
||||||
|
|
||||||
|
/* COL2ROW or ROW2COL */
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
/* define if matrix has ghost */
|
||||||
|
//#define MATRIX_HAS_GHOST
|
||||||
|
|
||||||
|
/* Set 0 if debouncing isn't needed */
|
||||||
|
#define DEBOUNCE 5
|
||||||
|
|
||||||
|
#define QMK_ESC_OUTPUT C4 // usually COL
|
||||||
|
#define QMK_ESC_INPUT C2 // usually ROW
|
||||||
|
|
||||||
|
#define RGB_DI_PIN D3
|
||||||
|
#define RGBLED_NUM 12
|
||||||
|
#define BACKLIGHT_LEVELS 5
|
||||||
|
|
||||||
|
#define RGBLIGHT_HUE_STEP 8
|
||||||
|
#define RGBLIGHT_SAT_STEP 8
|
||||||
|
#define RGBLIGHT_VAL_STEP 8
|
||||||
|
#define RGBLIGHT_ANIMATIONS
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
#include "rev_a.h"
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
#define LAYOUT_all( \
|
||||||
|
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \
|
||||||
|
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \
|
||||||
|
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, \
|
||||||
|
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \
|
||||||
|
k40, k41, k43, k44, k45, k46, k48, k4a, k4b \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \
|
||||||
|
{k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d}, \
|
||||||
|
{k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, KC_NO},\
|
||||||
|
{k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d}, \
|
||||||
|
{k40, k41, KC_NO, k43, k44, k45, k46, KC_NO, k48, KC_NO, k4a, k4b, KC_NO, KC_NO} \
|
||||||
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
# MCU name
|
||||||
|
MCU = atmega32u2
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
# Teensy halfkay
|
||||||
|
# Pro Micro caterina
|
||||||
|
# Atmel DFU atmel-dfu
|
||||||
|
# LUFA DFU lufa-dfu
|
||||||
|
# QMK DFU qmk-dfu
|
||||||
|
# ATmega32A bootloadHID
|
||||||
|
# ATmega328P USBasp
|
||||||
|
BOOTLOADER = atmel-dfu
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = lite # 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
|
||||||
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
|
NKRO_ENABLE = no # USB Nkey Rollover
|
||||||
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
|
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||||
|
MIDI_ENABLE = no # MIDI support
|
||||||
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
|
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||||
|
UNICODE_ENABLE = no # Unicode
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
# Steezy60
|
||||||
|
|
||||||
|
A 60% PCB with a ton of layout options for SMK and Alps switches
|
||||||
|
|
||||||
|
More info: https://geekhack.org/index.php?topic=103531.0
|
||||||
|
|
||||||
|
* Keyboard Maintainer: [4pplet](https://github.com/4pplet)
|
||||||
|
* Hardware Supported: Steezy60 Rev A
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make 4pplet/steezy60/rev_a:default
|
||||||
|
|
||||||
|
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
[0] = LAYOUT_all(
|
||||||
|
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_GRV,
|
||||||
|
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_LGUI, 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_LSPO, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_RSPC, MO(2),
|
||||||
|
KC_LCTL, KC_LGUI, KC_NO, KC_LALT, KC_RALT, MO(2), KC_SPC, KC_RALT, KC_RGUI, KC_NO, KC_APP, KC_RCTRL),
|
||||||
|
|
||||||
|
[1] = LAYOUT_all(
|
||||||
|
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_GRV,
|
||||||
|
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_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT,
|
||||||
|
KC_LSPO, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_RSPC, MO(2),
|
||||||
|
KC_LCTL, KC_LGUI, KC_NO, KC_LALT, KC_RALT, MO(2), KC_SPC, KC_RALT, KC_RGUI, KC_NO, KC_APP, KC_RCTRL),
|
||||||
|
|
||||||
|
[2] = LAYOUT_all(
|
||||||
|
KC_EXEC, 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_INS, _______,
|
||||||
|
_______, KC_BSPC, KC_UP, KC_ENT, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, KC_DEL,
|
||||||
|
KC_CAPS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_MUTE, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, _______, KC_PENT,
|
||||||
|
_______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLD, KC_VOLU, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, _______, _______, _______,
|
||||||
|
DF(1), DF(0), _______, _______, _______, _______, _______, KC_BRID, KC_BRIU, _______, _______, RESET )
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
[0] = LAYOUT_all(
|
||||||
|
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_NO, 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_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT,
|
||||||
|
KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_RSFT, KC_NO,
|
||||||
|
KC_LCTL, KC_LGUI, KC_NO, KC_LALT, KC_NO, KC_SPC, KC_NO, KC_RALT, KC_RGUI, KC_NO, KC_APP, MO(1)),
|
||||||
|
|
||||||
|
[1] = LAYOUT_all(
|
||||||
|
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,
|
||||||
|
_______, KC_BSPC, KC_UP, KC_ENT, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, _______,
|
||||||
|
KC_CAPS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_MUTE, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, _______, _______,
|
||||||
|
_______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLD, KC_VOLU, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, KC_BRID, KC_BRIU, _______, _______, _______ )
|
||||||
|
};
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
[0] = LAYOUT_all(
|
||||||
|
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_NO, 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_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT,
|
||||||
|
KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_RSFT, KC_NO,
|
||||||
|
KC_LCTL, KC_LGUI, KC_NO, KC_LALT, KC_NO, KC_SPC, KC_NO, KC_RALT, KC_RGUI, KC_NO, KC_APP, MO(1)),
|
||||||
|
|
||||||
|
[1] = LAYOUT_all(
|
||||||
|
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,
|
||||||
|
_______, KC_BSPC, KC_UP, KC_ENT, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, _______,
|
||||||
|
KC_CAPS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_MUTE, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, _______, _______,
|
||||||
|
_______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLD, KC_VOLU, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, KC_BRID, KC_BRIU, _______, _______, _______ ),
|
||||||
|
|
||||||
|
[2] = LAYOUT_all(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
|
||||||
|
|
||||||
|
[3] = LAYOUT_all(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ )
|
||||||
|
};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
VIA_ENABLE = yes
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "config_common.h"
|
||||||
|
|
||||||
|
/* USB Device descriptor parameter */
|
||||||
|
#define VENDOR_ID 0x4444
|
||||||
|
#define PRODUCT_ID 0x0002
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER 4pplet
|
||||||
|
#define PRODUCT Steezy60 Rev A
|
||||||
|
#define DESCRIPTION A steezy keeb
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 5
|
||||||
|
#define MATRIX_COLS 15
|
||||||
|
// ROWS: Top to bottom, COLS: Left to right
|
||||||
|
#define MATRIX_ROW_PINS {C2,D0,B0,C7,C5}
|
||||||
|
#define MATRIX_COL_PINS {C4,C6,B7,B6,B5,B4,B3,B2,B1,D6,D5,D4,D2,D1}
|
||||||
|
|
||||||
|
/* COL2ROW or ROW2COL */
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
/* Set 0 if debouncing isn't needed */
|
||||||
|
#define DEBOUNCE 5
|
||||||
|
|
||||||
|
#define QMK_ESC_OUTPUT C4 // usually COL
|
||||||
|
#define QMK_ESC_INPUT C2 // usually ROW
|
||||||
|
|
||||||
|
#define RGB_DI_PIN D3
|
||||||
|
#define RGBLED_NUM 12
|
||||||
|
#define BACKLIGHT_LEVELS 5
|
||||||
|
|
||||||
|
#define RGBLIGHT_HUE_STEP 8
|
||||||
|
#define RGBLIGHT_SAT_STEP 8
|
||||||
|
#define RGBLIGHT_VAL_STEP 8
|
||||||
|
#define RGBLIGHT_ANIMATIONS
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
#include "rev_a.h"
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
#define LAYOUT_all( \
|
||||||
|
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k4d, \
|
||||||
|
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \
|
||||||
|
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
|
||||||
|
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d,k4c, \
|
||||||
|
k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \
|
||||||
|
{k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d}, \
|
||||||
|
{k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d}, \
|
||||||
|
{k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d}, \
|
||||||
|
{k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d} \
|
||||||
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
# MCU name
|
||||||
|
MCU = atmega32u2
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
# Teensy halfkay
|
||||||
|
# Pro Micro caterina
|
||||||
|
# Atmel DFU atmel-dfu
|
||||||
|
# LUFA DFU lufa-dfu
|
||||||
|
# QMK DFU qmk-dfu
|
||||||
|
# ATmega32A bootloadHID
|
||||||
|
# ATmega328P USBasp
|
||||||
|
BOOTLOADER = atmel-dfu
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = lite # 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
|
||||||
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
|
NKRO_ENABLE = no # USB Nkey Rollover
|
||||||
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
|
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||||
|
MIDI_ENABLE = no # MIDI support
|
||||||
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
|
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||||
|
UNICODE_ENABLE = no # Unicode
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
# waffling60
|
||||||
|
|
||||||
|
A 60% PCB for MX switches, one hot swap and one solder-pcb version with decent layout support.
|
||||||
|
|
||||||
|
More info: https://geekhack.org/index.php?topic=103531.0
|
||||||
|
|
||||||
|
* Keyboard Maintainer: [4pplet](https://github.com/4pplet)
|
||||||
|
* Hardware Supported: waffling60 Rev A
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make 4pplet/steezy60/rev_a:default
|
||||||
|
|
||||||
|
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
// main layer
|
||||||
|
[0] = LAYOUT_all(
|
||||||
|
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_NO, 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_LCTRL, 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_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_NO,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, MO(1)),
|
||||||
|
// basic function layer
|
||||||
|
[1] = LAYOUT_all(
|
||||||
|
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_TRNS, 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, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
|
||||||
|
};
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
// main layer
|
||||||
|
[0] = LAYOUT_all(
|
||||||
|
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_NO, 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_LCTRL, 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_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_NO,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, MO(1)),
|
||||||
|
// basic function layer
|
||||||
|
[1] = LAYOUT_all(
|
||||||
|
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_TRNS, 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, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
||||||
|
// extra layer for VIA
|
||||||
|
[2] = LAYOUT_all(
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
||||||
|
// extra layer for VIA
|
||||||
|
[3] = LAYOUT_all(
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
|
||||||
|
};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
VIA_ENABLE = yes
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "config_common.h"
|
||||||
|
|
||||||
|
/* USB Device descriptor parameter */
|
||||||
|
#define VENDOR_ID 0x4444
|
||||||
|
#define PRODUCT_ID 0x0003
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER 4pplet
|
||||||
|
#define PRODUCT waffling60 Rev A
|
||||||
|
#define DESCRIPTION A steezy keeb
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 6
|
||||||
|
#define MATRIX_COLS 11
|
||||||
|
// ROWS: Top to bottom, COLS: Left to right
|
||||||
|
|
||||||
|
#define MATRIX_ROW_PINS {D4,D1,C2,C4,C7,B2}
|
||||||
|
#define MATRIX_COL_PINS {D3,D0,D2,B6,B5,B4,B3,D6,D5,B0,B1}
|
||||||
|
|
||||||
|
/* COL2ROW or ROW2COL */
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
/* define if matrix has ghost */
|
||||||
|
//#define MATRIX_HAS_GHOST
|
||||||
|
|
||||||
|
/* Set 0 if debouncing isn't needed */
|
||||||
|
#define DEBOUNCE 0
|
||||||
|
|
||||||
|
#define QMK_ESC_OUTPUT D3 // usually COL
|
||||||
|
#define QMK_ESC_INPUT D4 // usually ROW
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
#include "rev_a.h"
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
// k<row><col>
|
||||||
|
#define LAYOUT_all( \
|
||||||
|
k00, k01, k11, k02, k03, k04, k05, k15, k06, k07, k08, k18, k09, k0a, k1a, \
|
||||||
|
k10, k21, k12, k22, k13, k14, k25, k35, k16, k17, k28, k19, k29, k2a, \
|
||||||
|
k20, k31, k32, k23, k33, k24, k45, k26, k36, k27, k38, k39, k3a, \
|
||||||
|
k30, k40, k41, k42, k43, k34, k44, k55, k46, k37, k47, k48, k49, k4a, \
|
||||||
|
k50, k51, k52, k53, k54, k56, k57, k58, k59, k5a \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a}, \
|
||||||
|
{k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a}, \
|
||||||
|
{k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a}, \
|
||||||
|
{k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a}, \
|
||||||
|
{k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a}, \
|
||||||
|
{k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k5a} \
|
||||||
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
# MCU name
|
||||||
|
MCU = atmega32u2
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
# Teensy halfkay
|
||||||
|
# Pro Micro caterina
|
||||||
|
# Atmel DFU atmel-dfu
|
||||||
|
# LUFA DFU lufa-dfu
|
||||||
|
# QMK DFU qmk-dfu
|
||||||
|
# ATmega32A bootloadHID
|
||||||
|
# ATmega328P USBasp
|
||||||
|
BOOTLOADER = atmel-dfu
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = lite # 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
|
||||||
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
|
NKRO_ENABLE = no # USB Nkey Rollover
|
||||||
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
|
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||||
|
MIDI_ENABLE = no # MIDI support
|
||||||
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
|
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||||
|
UNICODE_ENABLE = no # Unicode
|
||||||
@@ -23,6 +23,7 @@
|
|||||||
#define AS_GO_IMPLEMENTATION LCTL(LALT(KC_B))
|
#define AS_GO_IMPLEMENTATION LCTL(LALT(KC_B))
|
||||||
#define AS_CLOSETAB LCTL(KC_F4)
|
#define AS_CLOSETAB LCTL(KC_F4)
|
||||||
#define AS_CLOSETOOLWINDOW LCTL(LSFT(KC_F4))
|
#define AS_CLOSETOOLWINDOW LCTL(LSFT(KC_F4))
|
||||||
|
#define AS_ALTENTER LALT(KC_ENTER)
|
||||||
|
|
||||||
enum custom_keycodes {
|
enum custom_keycodes {
|
||||||
PLACEHOLDER = SAFE_RANGE, // can always be here
|
PLACEHOLDER = SAFE_RANGE, // can always be here
|
||||||
@@ -35,13 +36,16 @@ enum custom_keycodes {
|
|||||||
CLOUD9_GOTO_LINE,
|
CLOUD9_GOTO_LINE,
|
||||||
CLOUD9_NAVIGATE,
|
CLOUD9_NAVIGATE,
|
||||||
|
|
||||||
|
// Windows 10 macros
|
||||||
|
W10_TASKVIEW,
|
||||||
|
W10_WORKSPACE_LEFT,
|
||||||
|
W10_WORKSPACE_RIGHT,
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// building instructions:
|
// building instructions:
|
||||||
// make atreus:dvorak_42_key
|
// make atreus:dvorak_42_key
|
||||||
|
|
||||||
// flashing instructions:
|
|
||||||
// avrdude -p atmega32u4 -c avr109 -U flash:w:atreus_dvorak_42_key.hex -P COM7
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
[BASE] = LAYOUT(
|
[BASE] = LAYOUT(
|
||||||
@@ -55,7 +59,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
KC_ESC, AS_GO_IMPLEMENTATION, RCTL(KC_Z), RCTL(KC_S), MEH(KC_A), MEH(KC_B), KC_HOME, KC_UP, KC_END, KC_PGUP,
|
KC_ESC, AS_GO_IMPLEMENTATION, RCTL(KC_Z), RCTL(KC_S), MEH(KC_A), MEH(KC_B), KC_HOME, KC_UP, KC_END, KC_PGUP,
|
||||||
AS_BACK, AS_SYMBOL, RSFT(KC_TAB), KC_TAB, SHELL_DEL_WORD, LCTL(KC_LEFT), KC_LEFT, KC_DOWN, KC_RIGHT, LCTL(KC_RIGHT),
|
AS_BACK, AS_SYMBOL, RSFT(KC_TAB), KC_TAB, SHELL_DEL_WORD, LCTL(KC_LEFT), KC_LEFT, KC_DOWN, KC_RIGHT, LCTL(KC_RIGHT),
|
||||||
AS_FINDUSAGE, AS_CLASS, AS_TABLEFT, AS_TABRIGHT, AS_CLOSETAB, KC_TRNS, RCTL(KC_C), RCTL(KC_X), RCTL(KC_V), KC_PGDOWN,
|
AS_FINDUSAGE, AS_CLASS, AS_TABLEFT, AS_TABRIGHT, AS_CLOSETAB, KC_TRNS, RCTL(KC_C), RCTL(KC_X), RCTL(KC_V), KC_PGDOWN,
|
||||||
AS_CLOSETOOLWINDOW, AS_GO_DECLARATION, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_ENTER, KC_SPACE, KC_BSPC, RCTL(KC_BSPC), KC_DELETE, LCTL(KC_DELETE)
|
AS_CLOSETOOLWINDOW, AS_GO_DECLARATION, KC_TRNS, KC_TRNS, AS_ALTENTER, KC_TRNS, KC_ENTER, KC_SPACE, KC_BSPC, RCTL(KC_BSPC), KC_DELETE, LCTL(KC_DELETE)
|
||||||
),
|
),
|
||||||
|
|
||||||
[KEYSEL] = LAYOUT(
|
[KEYSEL] = LAYOUT(
|
||||||
@@ -73,10 +77,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
),
|
),
|
||||||
|
|
||||||
[BROWSER_CONTROL] = LAYOUT(
|
[BROWSER_CONTROL] = LAYOUT(
|
||||||
MEH(KC_0), KC_BTN3, KC_MS_U, KC_BTN1, KC_BTN2, KC_UP, KC_PGUP, KC_PGDN, KC_MS_WH_UP, MEH(KC_9),
|
MEH(KC_0), KC_BTN3, KC_MS_U, KC_BTN1, KC_BTN2, KC_UP, KC_PGUP, KC_PGDN, KC_MS_WH_UP, MEH(KC_9),
|
||||||
MEH(KC_1), KC_MS_L, KC_MS_D, KC_MS_R, MEH(KC_6), KC_DOWN, RSFT(RCTL(KC_TAB)), RCTL(KC_TAB), KC_MS_WH_DOWN, LALT(KC_LEFT),
|
MEH(KC_1), KC_MS_L, KC_MS_D, KC_MS_R, MEH(KC_6), KC_DOWN, RSFT(RCTL(KC_TAB)), RCTL(KC_TAB), KC_MS_WH_DOWN, LALT(KC_LEFT),
|
||||||
MEH(KC_2), MEH(KC_3), MEH(KC_4), MEH(KC_5), MEH(KC_7), MEH(KC_8), RCTL(KC_1), RCTL(KC_9), KC_F6, KC_F5,
|
MEH(KC_2), W10_TASKVIEW, W10_WORKSPACE_LEFT, W10_WORKSPACE_RIGHT, MEH(KC_7), MEH(KC_8), RCTL(KC_1), RCTL(KC_9), KC_F6, KC_F5,
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RCTL(KC_W), RCTL(KC_T), RSFT(RCTL(KC_TAB)), KC_TRNS, KC_TRNS, KC_TRNS
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RCTL(KC_W), RCTL(KC_T), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||||
),
|
),
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -108,9 +112,19 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|||||||
SEND_STRING(SS_LCTRL("e"));
|
SEND_STRING(SS_LCTRL("e"));
|
||||||
return true;
|
return true;
|
||||||
break;
|
break;
|
||||||
|
case W10_TASKVIEW:
|
||||||
|
tap_code16(G(KC_TAB));
|
||||||
|
return true;
|
||||||
|
break;
|
||||||
|
case W10_WORKSPACE_LEFT:
|
||||||
|
tap_code16(G(C(KC_LEFT)));
|
||||||
|
return true;
|
||||||
|
break;
|
||||||
|
case W10_WORKSPACE_RIGHT:
|
||||||
|
tap_code16(G(C(KC_RIGHT)));
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1,12 +1,14 @@
|
|||||||
{
|
{
|
||||||
"keyboard_name": "Big Series 1-Key",
|
"keyboard_name": "Big Series 1-Key",
|
||||||
"url": "",
|
"url": "",
|
||||||
"maintainer": "qmk",
|
"maintainer": "qmk",
|
||||||
"width": 4,
|
"width": 4,
|
||||||
"height": 4,
|
"height": 4,
|
||||||
"layouts": {
|
"layouts": {
|
||||||
"LAYOUT": {
|
"LAYOUT": {
|
||||||
"layout": [{"x":0, "y":0, "w":4, "h":4}]
|
"layout": [
|
||||||
|
{"x": 0, "y": 0, "w": 4, "h": 4}
|
||||||
|
]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -1 +1,31 @@
|
|||||||
# Dummy file to make the QMK build system happy
|
# MCU name
|
||||||
|
MCU = atmega32u2
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
# Teensy halfkay
|
||||||
|
# Pro Micro caterina
|
||||||
|
# Atmel DFU atmel-dfu
|
||||||
|
# LUFA DFU lufa-dfu
|
||||||
|
# QMK DFU qmk-dfu
|
||||||
|
# ATmega32A bootloadHID
|
||||||
|
# ATmega328P USBasp
|
||||||
|
BOOTLOADER = atmel-dfu
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
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
|
||||||
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
|
NKRO_ENABLE = no # USB Nkey Rollover
|
||||||
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
|
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
||||||
|
MIDI_ENABLE = no # MIDI support
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
|
AUDIO_ENABLE = no # Audio output
|
||||||
|
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||||
@@ -1,12 +1,15 @@
|
|||||||
{
|
{
|
||||||
"keyboard_name": "Big Series 2-Key",
|
"keyboard_name": "Big Series 2-Key",
|
||||||
"url": "",
|
"url": "",
|
||||||
"maintainer": "qmk",
|
"maintainer": "qmk",
|
||||||
"width": 8,
|
"width": 8,
|
||||||
"height": 4,
|
"height": 4,
|
||||||
"layouts": {
|
"layouts": {
|
||||||
"LAYOUT": {
|
"LAYOUT": {
|
||||||
"layout": [{"x":0, "y":0, "w":4, "h":4}, {"x":4, "y":0, "w":4, "h":4}]
|
"layout": [
|
||||||
|
{"x": 0, "y": 0, "w": 4, "h": 4},
|
||||||
|
{"x": 4, "y": 0, "w": 4, "h": 4}
|
||||||
|
]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -1 +1,31 @@
|
|||||||
# Dummy file to make the QMK build system happy
|
# MCU name
|
||||||
|
MCU = atmega32u2
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
# Teensy halfkay
|
||||||
|
# Pro Micro caterina
|
||||||
|
# Atmel DFU atmel-dfu
|
||||||
|
# LUFA DFU lufa-dfu
|
||||||
|
# QMK DFU qmk-dfu
|
||||||
|
# ATmega32A bootloadHID
|
||||||
|
# ATmega328P USBasp
|
||||||
|
BOOTLOADER = atmel-dfu
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
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
|
||||||
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
|
NKRO_ENABLE = no # USB Nkey Rollover
|
||||||
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
|
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
||||||
|
MIDI_ENABLE = no # MIDI support
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
|
AUDIO_ENABLE = no # Audio output
|
||||||
|
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||||
@@ -1,12 +1,16 @@
|
|||||||
{
|
{
|
||||||
"keyboard_name": "Big Series 3-Key",
|
"keyboard_name": "Big Series 3-Key",
|
||||||
"url": "",
|
"url": "",
|
||||||
"maintainer": "qmk",
|
"maintainer": "qmk",
|
||||||
"width": 12,
|
"width": 12,
|
||||||
"height": 4,
|
"height": 4,
|
||||||
"layouts": {
|
"layouts": {
|
||||||
"LAYOUT": {
|
"LAYOUT": {
|
||||||
"layout": [{"x":0, "y":0, "w":4, "h":4}, {"x":4, "y":0, "w":4, "h":4}, {"x":8, "y":0, "w":4, "h":4}]
|
"layout": [
|
||||||
|
{"x": 0, "y": 0, "w": 4, "h": 4},
|
||||||
|
{"x": 4, "y": 0, "w": 4, "h": 4},
|
||||||
|
{"x": 8, "y": 0, "w": 4, "h": 4}
|
||||||
|
]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -1 +1,31 @@
|
|||||||
# Dummy file to make the QMK build system happy
|
# MCU name
|
||||||
|
MCU = atmega32u2
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
# Teensy halfkay
|
||||||
|
# Pro Micro caterina
|
||||||
|
# Atmel DFU atmel-dfu
|
||||||
|
# LUFA DFU lufa-dfu
|
||||||
|
# QMK DFU qmk-dfu
|
||||||
|
# ATmega32A bootloadHID
|
||||||
|
# ATmega328P USBasp
|
||||||
|
BOOTLOADER = atmel-dfu
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
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
|
||||||
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
|
NKRO_ENABLE = no # USB Nkey Rollover
|
||||||
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
|
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
||||||
|
MIDI_ENABLE = no # MIDI support
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
|
AUDIO_ENABLE = no # Audio output
|
||||||
|
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||||
@@ -1,12 +1,18 @@
|
|||||||
{
|
{
|
||||||
"keyboard_name": "Big Series 4-Key",
|
"keyboard_name": "Big Series 4-Key",
|
||||||
"url": "",
|
"url": "",
|
||||||
"maintainer": "qmk",
|
"maintainer": "qmk",
|
||||||
"width": 8,
|
"width": 8,
|
||||||
"height": 8,
|
"height": 8,
|
||||||
"layouts": {
|
"layouts": {
|
||||||
"LAYOUT": {
|
"LAYOUT": {
|
||||||
"layout": [{"x":0, "y":0, "w":4, "h":4}, {"x":4, "y":0, "w":4, "h":4}, {"x":0, "y":4, "w":4, "h":4}, {"x":4, "y":4, "w":4, "h":4}]
|
"layout": [
|
||||||
|
{"x": 0, "y": 0, "w": 4, "h": 4},
|
||||||
|
{"x": 4, "y": 0, "w": 4, "h": 4},
|
||||||
|
|
||||||
|
{"x": 0, "y": 4, "w": 4, "h": 4},
|
||||||
|
{"x": 4, "y": 4, "w": 4, "h": 4}
|
||||||
|
]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -1 +1,31 @@
|
|||||||
# Dummy file to make the QMK build system happy
|
# MCU name
|
||||||
|
MCU = atmega32u2
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
# Teensy halfkay
|
||||||
|
# Pro Micro caterina
|
||||||
|
# Atmel DFU atmel-dfu
|
||||||
|
# LUFA DFU lufa-dfu
|
||||||
|
# QMK DFU qmk-dfu
|
||||||
|
# ATmega32A bootloadHID
|
||||||
|
# ATmega328P USBasp
|
||||||
|
BOOTLOADER = atmel-dfu
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
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
|
||||||
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
|
NKRO_ENABLE = no # USB Nkey Rollover
|
||||||
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
|
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
||||||
|
MIDI_ENABLE = no # MIDI support
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
|
AUDIO_ENABLE = no # Audio output
|
||||||
|
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
# MCU name
|
|
||||||
MCU = atmega32u2
|
|
||||||
|
|
||||||
# Bootloader selection
|
|
||||||
# Teensy halfkay
|
|
||||||
# Pro Micro caterina
|
|
||||||
# Atmel DFU atmel-dfu
|
|
||||||
# LUFA DFU lufa-dfu
|
|
||||||
# QMK DFU qmk-dfu
|
|
||||||
# ATmega32A bootloadHID
|
|
||||||
# ATmega328P USBasp
|
|
||||||
BOOTLOADER = atmel-dfu
|
|
||||||
|
|
||||||
# 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
|
|
||||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
|
||||||
NKRO_ENABLE = no # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
|
||||||
BACKLIGHT_ENABLE = no # Custom backlighting code is used, so this should not be enabled
|
|
||||||
AUDIO_ENABLE = no # This can be enabled if a speaker is connected to the expansion port. Not compatible with RGBLIGHT below
|
|
||||||
RGBLIGHT_ENABLE = yes # This can be enabled if a ws2812 strip is connected to the expansion port.
|
|
||||||
|
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
/* Copyright 2020 Stefano Maragò
|
||||||
|
*
|
||||||
|
* 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] = { // 12+11+11+9
|
||||||
|
[0] = LAYOUT(
|
||||||
|
MT(MOD_LGUI,KC_ESC), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||||
|
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_UP, KC_DOT,
|
||||||
|
KC_LCTL, TT(1), KC_LALT, KC_SPC, MT(MOD_RSFT,KC_SPC), TT(1), KC_LEFT, KC_DOWN, KC_RGHT ),
|
||||||
|
[1] = LAYOUT(
|
||||||
|
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_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
|
||||||
|
KC_LSFT, KC_GRV, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_SCLN, KC_QUOT, KC_PGUP, KC_SLSH,
|
||||||
|
KC_LCTL, LT(2,KC_APP), KC_LALT, KC_SPC, MT(MOD_RSFT,KC_SPC), LT(2,KC_INS), KC_HOME, KC_PGDN, KC_END ),
|
||||||
|
[2] = LAYOUT(
|
||||||
|
DF(0), KC_PSCR, KC_SLCK, KC_PAUS, KC_PSLS, KC_PAST, KC_7, KC_8, KC_9, KC_PMNS, KC_PEQL, KC_BSPC,
|
||||||
|
KC_CAPS, KC_MPLY, KC_STOP, KC_MPRV, KC_MNXT, XXXXXXX, KC_4, KC_5, KC_6, KC_PPLS, KC_PENT,
|
||||||
|
DF(2), KC_MUTE, KC_VOLD, KC_VOLU, KC_COMM, KC_1, KC_2, KC_3, KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2,
|
||||||
|
DF(3), XXXXXXX, XXXXXXX, KC_SPC, KC_0, KC_DOT, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT ),
|
||||||
|
[3] = LAYOUT(
|
||||||
|
DF(0), KC_SLEP, KC_BRID, KC_BRIU, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET,
|
||||||
|
XXXXXXX, BL_TOGG, BL_DEC, BL_INC, BL_STEP, BL_BRTG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
XXXXXXX, RGB_TOG, RGB_RMOD, RGB_MOD, RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, XXXXXXX,
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX ),
|
||||||
|
};
|
||||||
|
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
This is a full-featured bm43a layout inspired by the smaller "Super Micro gherkin" and "jj28" sisters.
|
||||||
|
|
||||||
|
In addition to the default key layer, there is a function/numbers/symbols layer easily activated with either one of the two "meta" (red) keys and containing almost all keyset missing.
|
||||||
|
|
||||||
|
On top of this, activated with both meta keys, there a system layer where are placed media keys, mouse emulation, and Numpad in addition to the PrintScreen/ScrLock/Pause keys.
|
||||||
|
|
||||||
|
The below picture show all layers on the actual keys (if someone would be able to print these labels let me know! :)).
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Notes:
|
||||||
|
- The Windows/OS key is overlayed with the Esc one
|
||||||
|
- To activate permanently the function/number/symbols layer you can use the "layer tap toggle" functionality (now set to the default 5 presses). For the system layer to be activated permanently is enough to hit shift in this layer (so with the two meta keys pressed)
|
||||||
|
- From the System Layer you can "jump" to an additional Lights layer pressing the control key
|
||||||
|
- Meta-Esc (or simply Esc from the System and Lights layers) and the keyboard is coming back to default key layer in case they are activated permanently
|
||||||
|
|
||||||
|
|
||||||
|
And a view on the actual build:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
In order to compile the module from qmk root directory use the command 'make bm43a:stevexyz'
|
||||||
|
|
||||||
|
And in order to upload the new firmware use the command: 'bin/qmk flash -kb bm43a -km stevexyz' (you can initiate programming with keyboard RESET key, that in this keymap has been moved on the backspace button in the "lights" layer)
|
||||||
|
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
||||||
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
|
CONSOLE_ENABLE = no # Console for debug
|
||||||
|
|
||||||
|
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||||
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
|
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||||
|
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
||||||
@@ -34,7 +34,7 @@
|
|||||||
{ K40, K41, K42, _x_, _x_, _x_, K46, _x_, _x_, K49, K4A, K4B, K4C, K4D, K4E} \
|
{ K40, K41, K42, _x_, _x_, _x_, K46, _x_, _x_, K49, K4A, K4B, K4C, K4D, K4E} \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define LAYOUT_65_ansi_2_right_mods( \
|
#define LAYOUT_65_ansi_blocker( \
|
||||||
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
|
||||||
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
|
||||||
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2E, \
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2E, \
|
||||||
@@ -48,6 +48,8 @@
|
|||||||
{ K40, K41, K42, _x_, _x_, _x_, K46, _x_, _x_, K49, K4A, _x_, K4C, K4D, K4E} \
|
{ K40, K41, K42, _x_, _x_, _x_, K46, _x_, _x_, K49, K4A, _x_, K4C, K4D, K4E} \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_65_ansi_2_right_mods LAYOUT_65_ansi_blocker
|
||||||
|
|
||||||
#define LAYOUT_wkl_ansi_2_right_mods( \
|
#define LAYOUT_wkl_ansi_2_right_mods( \
|
||||||
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
|
||||||
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
|
||||||
@@ -90,7 +92,7 @@
|
|||||||
{ K40, K41, K42, _x_, _x_, _x_, K46, _x_, _x_, K49, K4A, K4B, K4C, K4D, K4E} \
|
{ K40, K41, K42, _x_, _x_, _x_, K46, _x_, _x_, K49, K4A, K4B, K4C, K4D, K4E} \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define LAYOUT_65_iso_2_right_mods( \
|
#define LAYOUT_65_iso_blocker( \
|
||||||
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
|
||||||
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, \
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, \
|
||||||
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K1D, K2E, \
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K1D, K2E, \
|
||||||
@@ -104,6 +106,8 @@
|
|||||||
{ K40, K41, K42, _x_, _x_, _x_, K46, _x_, _x_, K49, K4A, _x_, K4C, K4D, K4E} \
|
{ K40, K41, K42, _x_, _x_, _x_, K46, _x_, _x_, K49, K4A, _x_, K4C, K4D, K4E} \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_65_iso_2_right_mods LAYOUT_65_iso_blocker
|
||||||
|
|
||||||
#define LAYOUT_wkl_iso_2_right_mods( \
|
#define LAYOUT_wkl_iso_2_right_mods( \
|
||||||
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
|
||||||
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, \
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, \
|
||||||
|
|||||||
@@ -35,4 +35,4 @@ AUDIO_ENABLE = no # Audio output on port C6
|
|||||||
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||||
HD44780_ENABLE = no # Enable support for HD44780 based LCDs
|
HD44780_ENABLE = no # Enable support for HD44780 based LCDs
|
||||||
|
|
||||||
LAYOUTS = 65_ansi 65_iso
|
LAYOUTS = 65_ansi 65_ansi_blocker 65_iso 65_iso_blocker
|
||||||
@@ -2,17 +2,15 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#define EE_HANDS
|
#define LAYOUT_miryoku( \
|
||||||
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \
|
||||||
#ifdef RGB_MATRIX_ENABLE
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \
|
||||||
#define RGB_MATRIX_KEYPRESSES // reacts to keypresses
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \
|
||||||
#define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
|
N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \
|
||||||
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
|
) \
|
||||||
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash.
|
LAYOUT( \
|
||||||
#define RGB_MATRIX_HUE_STEP 8
|
KC_NO, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, KC_NO, \
|
||||||
#define RGB_MATRIX_SAT_STEP 8
|
KC_NO, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, KC_NO, \
|
||||||
#define RGB_MATRIX_VAL_STEP 8
|
KC_NO, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, KC_NO, \
|
||||||
#define RGB_MATRIX_SPD_STEP 10
|
K32, K33, K34, K35, K36, K37 \
|
||||||
#endif
|
)
|
||||||
|
|
||||||
#define SSD1306OLED // old oled driver
|
|
||||||
@@ -1,54 +1 @@
|
|||||||
// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*-
|
// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*-
|
||||||
|
|
||||||
#define LAYOUT_miryoku( \
|
|
||||||
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, \
|
|
||||||
N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \
|
|
||||||
) \
|
|
||||||
LAYOUT( \
|
|
||||||
KC_NO, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, KC_NO, \
|
|
||||||
KC_NO, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, KC_NO, \
|
|
||||||
KC_NO, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, KC_NO, \
|
|
||||||
K32, K33, K34, K35, K36, K37 \
|
|
||||||
)
|
|
||||||
|
|
||||||
#include "manna-harbour_miryoku.c"
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef SSD1306OLED
|
|
||||||
|
|
||||||
#include "ssd1306.h"
|
|
||||||
|
|
||||||
void matrix_init_user(void) {
|
|
||||||
iota_gfx_init(!has_usb()); // turns on the display
|
|
||||||
}
|
|
||||||
|
|
||||||
// When add source files to SRC in rules.mk, you can use functions.
|
|
||||||
const char *read_logo(void);
|
|
||||||
|
|
||||||
void matrix_scan_user(void) {
|
|
||||||
iota_gfx_task();
|
|
||||||
}
|
|
||||||
|
|
||||||
void matrix_render_user(struct CharacterMatrix *matrix) {
|
|
||||||
if (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) {
|
|
||||||
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
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
# generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*-
|
|
||||||
|
|
||||||
RGB_MATRIX_ENABLE = WS2812
|
|
||||||
|
|
||||||
# old oled driver
|
|
||||||
SRC += ./lib/glcdfont.c \
|
|
||||||
./lib/logo_reader.c
|
|
||||||
@@ -50,30 +50,23 @@ enum custom_keycodes {
|
|||||||
SHELL_EXPAND_OE_LOGPATTERN,
|
SHELL_EXPAND_OE_LOGPATTERN,
|
||||||
SHELL_EXPAND_OE_TRANPATTERN,
|
SHELL_EXPAND_OE_TRANPATTERN,
|
||||||
|
|
||||||
// Cloud9 macros
|
|
||||||
CLOUD9_TAB_LEFT,
|
|
||||||
CLOUD9_TAB_RIGHT,
|
|
||||||
CLOUD9_TAB_CLOSE,
|
|
||||||
CLOUD9_GOTO_SYMBOL,
|
|
||||||
CLOUD9_GOTO_LINE,
|
|
||||||
CLOUD9_NAVIGATE,
|
|
||||||
|
|
||||||
// Windows 10 macros,
|
// Windows 10 macros,
|
||||||
WINDOWS10_WORKSPACE_LEFT,
|
WINDOWS10_WORKSPACE_LEFT,
|
||||||
WINDOWS10_WORKSPACE_RIGHT,
|
WINDOWS10_WORKSPACE_RIGHT,
|
||||||
|
WINDOWS10_TASK_VIEW
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
#define BASE 0 // base dvorak layer
|
#define BASE 0 // base dvorak layer
|
||||||
#define BASE_ALTERNATE 1 // base dvorak layer, with different layer toggling
|
#define KEYNAV 1 // arrow navigation (right hand)
|
||||||
#define KEYNAV 2 // arrow navigation (right hand)
|
#define KEYSEL 2 // arrow navigation + shift (allow text selection)
|
||||||
#define KEYSEL 3 // arrow navigation + shift (allow text selection)
|
#define SHELL_NAV 3 // bash shortcuts
|
||||||
#define SHELL_NAV 4 // bash shortcuts
|
#define SHELL_SCREEN 4 // linux screen shortcuts
|
||||||
#define SHELL_SCREEN 5 // linux screen shortcuts
|
#define SCREEN_NAV 5 // navigate between linux screen tabs
|
||||||
#define SCREEN_NAV 6 // navigate between linux screen tabs
|
#define BROWSER_CONTROL 6 // control browser and mouse
|
||||||
#define BROWSER_CONTROL 7 // control browser and mouse
|
#define COMBINED 7 // combined numbers and symbols layer
|
||||||
#define COMBINED 8 // combined numbers and symbols layer
|
#define ANDROID_STUDIO 8 // android studio specific layer
|
||||||
#define ANDROID_STUDIO 9
|
#define VSCODE 9 // visual studio code specific layer
|
||||||
|
|
||||||
|
|
||||||
// macros
|
// macros
|
||||||
@@ -117,6 +110,34 @@ enum custom_keycodes {
|
|||||||
#define AS_CLOSETAB LCTL(KC_F4)
|
#define AS_CLOSETAB LCTL(KC_F4)
|
||||||
#define AS_CLOSETOOLWINDOW LCTL(LSFT(KC_F4))
|
#define AS_CLOSETOOLWINDOW LCTL(LSFT(KC_F4))
|
||||||
|
|
||||||
|
// visual studio code shortcuts
|
||||||
|
#define VS_FILE LCTL(KC_P)
|
||||||
|
#define VS_LINE LCTL(KC_G)
|
||||||
|
#define VS_SYMBOLEDITOR LCTL(LSFT(KC_O))
|
||||||
|
#define VS_DEFINITION KC_F12
|
||||||
|
#define VS_IMPLEMENTATION LCTL(KC_F12)
|
||||||
|
#define VS_REFERENCES LSFT(KC_F12)
|
||||||
|
#define VS_BACK LALT(KC_LEFT)
|
||||||
|
#define VS_BRACKET LCTL(LSFT(KC_BSLS))
|
||||||
|
#define VS_TABLEFT LCTL(KC_PGUP)
|
||||||
|
#define VS_TABRIGHT LCTL(KC_PGDN)
|
||||||
|
#define VS_CLOSETAB LCTL(KC_W)
|
||||||
|
#define VS_CLOSEPANEL LCTL(LSFT(KC_W))
|
||||||
|
#define VS_TERMINAL LCTL(KC_GRAVE)
|
||||||
|
#define VS_BUILD LCTL(LSFT(KC_B))
|
||||||
|
#define VS_COMMANDS LCTL(LSFT(KC_P))
|
||||||
|
#define VS_CMT_BLOCK LSFT(LALT(KC_A))
|
||||||
|
#define VS_CMT_LINE LCTL(KC_SLSH)
|
||||||
|
#define VS_DEL_LINE LCTL(LSFT(KC_K))
|
||||||
|
#define VS_COPYLINEDOWN LSFT(LALT(KC_DOWN))
|
||||||
|
// visual studio bookmark commands
|
||||||
|
#define VS_BM_LIST LCTL(LALT(KC_L))
|
||||||
|
#define VS_BM_LISTALL LCTL(LALT(KC_A))
|
||||||
|
#define VS_BM_PREV LCTL(LALT(KC_P))
|
||||||
|
#define VS_BM_NEXT LCTL(LALT(KC_N))
|
||||||
|
#define VS_BM_TOGGLE LCTL(LALT(KC_K))
|
||||||
|
#define VS_BM_LABEL LCTL(LALT(KC_B))
|
||||||
|
|
||||||
|
|
||||||
#define MACRO_SCREEN_NUM(MACRO_NAME,NUM) \
|
#define MACRO_SCREEN_NUM(MACRO_NAME,NUM) \
|
||||||
case MACRO_NAME:\
|
case MACRO_NAME:\
|
||||||
@@ -166,12 +187,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
|
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
|
||||||
OSL(SCREEN_NAV), KC_QUOTE, KC_COMMA, KC_DOT, KC_P, KC_Y, MEH(KC_2),
|
OSL(SCREEN_NAV), KC_QUOTE, KC_COMMA, KC_DOT, KC_P, KC_Y, MEH(KC_2),
|
||||||
OSL(SHELL_NAV), KC_A, KC_O, KC_E, KC_U, KC_I,
|
OSL(SHELL_NAV), KC_A, KC_O, KC_E, KC_U, KC_I,
|
||||||
OSL(SHELL_SCREEN), KC_SCOLON, KC_Q, KC_J, KC_K, KC_X, MEH(KC_3),
|
OSL(SHELL_SCREEN), KC_SCOLON, KC_Q, KC_J, KC_K, KC_X, MO(VSCODE),
|
||||||
MEH(KC_1), OSM(MOD_LSFT), OSM(MOD_LCTL), MO(KEYSEL), MO(BROWSER_CONTROL),
|
MEH(KC_1), OSM(MOD_LSFT), OSM(MOD_LCTL), MO(KEYSEL), MO(BROWSER_CONTROL),
|
||||||
|
|
||||||
// left thumb cluster
|
// left thumb cluster
|
||||||
WINDOWS10_WORKSPACE_LEFT, WINDOWS10_WORKSPACE_RIGHT,
|
WINDOWS10_WORKSPACE_LEFT, WINDOWS10_WORKSPACE_RIGHT,
|
||||||
MEH(KC_6),
|
WINDOWS10_TASK_VIEW,
|
||||||
MO(COMBINED),MO(KEYNAV), OSM(MOD_LALT),
|
MO(COMBINED),MO(KEYNAV), OSM(MOD_LALT),
|
||||||
|
|
||||||
// right hand
|
// right hand
|
||||||
@@ -186,39 +207,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
|
|
||||||
),
|
),
|
||||||
|
|
||||||
// alternate base layout
|
|
||||||
[BASE_ALTERNATE] = LAYOUT_ergodox(
|
|
||||||
// left hand
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
OSL(ANDROID_STUDIO),KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
// bottom row
|
|
||||||
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
|
|
||||||
// thumb cluster
|
|
||||||
KC_TRNS,KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_TRNS,KC_TRNS,KC_TRNS,
|
|
||||||
// right hand
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
// bottom row
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
// thumb cluster
|
|
||||||
KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS
|
|
||||||
),
|
|
||||||
|
|
||||||
[KEYNAV] = LAYOUT_ergodox(
|
[KEYNAV] = LAYOUT_ergodox(
|
||||||
// left hand
|
// left hand
|
||||||
KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
KC_TRNS,KC_ESC, CLOUD9_GOTO_LINE, RCTL(KC_Z), RCTL(KC_S), MEH(KC_F10), KC_TRNS,
|
KC_TRNS,KC_ESC, KC_TRNS, RCTL(KC_Z), RCTL(KC_S), KC_TRNS, KC_TRNS,
|
||||||
KC_TRNS,KC_LSFT, CLOUD9_GOTO_SYMBOL, RSFT(KC_TAB), KC_TAB, MEH(KC_A),
|
KC_TRNS,KC_LSFT, KC_TRNS, RSFT(KC_TAB), KC_TAB, KC_TRNS,
|
||||||
KC_TRNS,MEH(KC_B), CLOUD9_NAVIGATE, CLOUD9_TAB_LEFT, CLOUD9_TAB_RIGHT, CLOUD9_TAB_CLOSE, KC_TRNS,
|
KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
// left thumb cluster
|
// left thumb cluster
|
||||||
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
|
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
|
||||||
|
|
||||||
@@ -242,7 +237,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
KC_TRNS,MEH(KC_L), MEH(KC_M),MEH(KC_N), MEH(KC_O), MEH(KC_P),
|
KC_TRNS,MEH(KC_L), MEH(KC_M),MEH(KC_N), MEH(KC_O), MEH(KC_P),
|
||||||
KC_TRNS,MEH(KC_Q), MEH(KC_R),MEH(KC_S), MEH(KC_T), MEH(KC_U), KC_TRNS,
|
KC_TRNS,MEH(KC_Q), MEH(KC_R),MEH(KC_S), MEH(KC_T), MEH(KC_U), KC_TRNS,
|
||||||
// bottom row
|
// bottom row
|
||||||
RESET,DF(BASE),DF(BASE_ALTERNATE),KC_TRNS,KC_TRNS,
|
RESET,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
|
||||||
// thumb cluster
|
// thumb cluster
|
||||||
KC_TRNS,KC_TRNS,
|
KC_TRNS,KC_TRNS,
|
||||||
KC_TRNS,
|
KC_TRNS,
|
||||||
@@ -355,10 +350,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
KC_TRNS,
|
KC_TRNS,
|
||||||
KC_TRNS,KC_TRNS,KC_TRNS,
|
KC_TRNS,KC_TRNS,KC_TRNS,
|
||||||
// right hand
|
// right hand
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, AS_FINDUSAGE, AS_GO_DECLARATION, AS_GO_IMPLEMENTATION, KC_TRNS,
|
KC_TRNS, KC_TRNS, KC_TRNS, AS_FINDUSAGE, AS_GO_DECLARATION, AS_GO_IMPLEMENTATION, KC_TRNS,
|
||||||
KC_TRNS, AS_TABLEFT, AS_TABRIGHT, AS_SYMBOL, AS_CLASS, AS_BACK,
|
AS_CLOSETAB, AS_TABLEFT, AS_TABRIGHT, AS_SYMBOL, AS_CLASS, AS_BACK,
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, AS_CLOSETAB, AS_CLOSETOOLWINDOW, KC_TRNS,
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, AS_CLOSETOOLWINDOW, KC_TRNS,
|
||||||
// bottom row
|
// bottom row
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
// thumb cluster
|
// thumb cluster
|
||||||
@@ -367,6 +362,32 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
KC_TRNS, KC_TRNS, KC_TRNS
|
KC_TRNS, KC_TRNS, KC_TRNS
|
||||||
),
|
),
|
||||||
|
|
||||||
|
// vscode shortcuts shortcuts
|
||||||
|
[VSCODE] = LAYOUT_ergodox(
|
||||||
|
// left hand
|
||||||
|
KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
// bottom row
|
||||||
|
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
|
||||||
|
// thumb cluster
|
||||||
|
KC_TRNS,KC_TRNS,
|
||||||
|
KC_TRNS,
|
||||||
|
KC_TRNS,KC_TRNS,KC_TRNS,
|
||||||
|
// right hand
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
VS_CMT_LINE, VS_COPYLINEDOWN, VS_REFERENCES, VS_DEFINITION, VS_IMPLEMENTATION, VS_LINE, VS_BRACKET,
|
||||||
|
VS_CLOSETAB, VS_TABLEFT, VS_TABRIGHT, VS_SYMBOLEDITOR, VS_FILE, VS_BACK,
|
||||||
|
VS_CMT_BLOCK, KC_TRNS, VS_BM_PREV, VS_BM_NEXT, VS_BM_LIST, VS_BM_LISTALL, VS_BM_TOGGLE,
|
||||||
|
// bottom row
|
||||||
|
VS_COMMANDS, VS_BUILD, VS_TERMINAL, VS_CLOSEPANEL, VS_BM_LABEL,
|
||||||
|
// thumb cluster
|
||||||
|
KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS,
|
||||||
|
KC_TRNS, VS_DEL_LINE, KC_TRNS
|
||||||
|
),
|
||||||
|
|
||||||
[COMBINED] = LAYOUT_ergodox(
|
[COMBINED] = LAYOUT_ergodox(
|
||||||
|
|
||||||
// left hand
|
// left hand
|
||||||
@@ -407,10 +428,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
// right hand
|
// right hand
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
KC_TRNS, KC_UP, KC_PGUP, KC_PGDN, KC_MS_WH_UP, KC_TRNS, KC_TRNS,
|
KC_TRNS, KC_UP, KC_PGUP, KC_PGDN, KC_MS_WH_UP, KC_TRNS, KC_TRNS,
|
||||||
KC_DOWN, RSFT(RCTL(KC_TAB)), RCTL(KC_TAB), KC_MS_WH_DOWN, LALT(KC_LEFT), KC_TRNS,
|
KC_DOWN, RCTL(KC_PGUP), RCTL(KC_PGDN),KC_MS_WH_DOWN, LALT(KC_LEFT), KC_TRNS,
|
||||||
KC_TRNS, KC_TRNS, RCTL(KC_1), RCTL(KC_9), KC_F6, KC_F5, KC_TRNS,
|
KC_TRNS, KC_TRNS, RCTL(KC_1), RCTL(KC_9), KC_F6, KC_F5, KC_TRNS,
|
||||||
// bottom row
|
// bottom row
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
RCTL(LSFT(KC_TAB)), RCTL(KC_TAB), KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
KC_TRNS, KC_TRNS,
|
KC_TRNS, KC_TRNS,
|
||||||
KC_TRNS,
|
KC_TRNS,
|
||||||
KC_TRNS, RCTL(KC_W), RCTL(KC_T)
|
KC_TRNS, RCTL(KC_W), RCTL(KC_T)
|
||||||
@@ -623,31 +644,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|||||||
SEND_STRING(" | dumptlog - ");
|
SEND_STRING(" | dumptlog - ");
|
||||||
return true;
|
return true;
|
||||||
break;
|
break;
|
||||||
// Cloud9 macros
|
|
||||||
case CLOUD9_TAB_LEFT:
|
|
||||||
SEND_STRING(SS_LCTRL("["));
|
|
||||||
return true;
|
|
||||||
break;
|
|
||||||
case CLOUD9_TAB_RIGHT:
|
|
||||||
SEND_STRING(SS_LCTRL("]"));
|
|
||||||
return true;
|
|
||||||
break;
|
|
||||||
case CLOUD9_TAB_CLOSE:
|
|
||||||
SEND_STRING(SS_LALT("w"));
|
|
||||||
return true;
|
|
||||||
break;
|
|
||||||
case CLOUD9_GOTO_SYMBOL:
|
|
||||||
SEND_STRING(SS_LSFT(SS_LCTRL("e")));
|
|
||||||
return true;
|
|
||||||
break;
|
|
||||||
case CLOUD9_GOTO_LINE:
|
|
||||||
SEND_STRING(SS_LCTRL("g"));
|
|
||||||
return true;
|
|
||||||
break;
|
|
||||||
case CLOUD9_NAVIGATE:
|
|
||||||
SEND_STRING(SS_LCTRL("e"));
|
|
||||||
return true;
|
|
||||||
break;
|
|
||||||
case WINDOWS10_WORKSPACE_LEFT:
|
case WINDOWS10_WORKSPACE_LEFT:
|
||||||
SEND_STRING(SS_LGUI(SS_LCTRL(SS_TAP(X_LEFT))));
|
SEND_STRING(SS_LGUI(SS_LCTRL(SS_TAP(X_LEFT))));
|
||||||
return true;
|
return true;
|
||||||
@@ -655,6 +651,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|||||||
case WINDOWS10_WORKSPACE_RIGHT:
|
case WINDOWS10_WORKSPACE_RIGHT:
|
||||||
SEND_STRING(SS_LGUI(SS_LCTRL(SS_TAP(X_RIGHT))));
|
SEND_STRING(SS_LGUI(SS_LCTRL(SS_TAP(X_RIGHT))));
|
||||||
break;
|
break;
|
||||||
|
case WINDOWS10_TASK_VIEW:
|
||||||
|
SEND_STRING(SS_LGUI(SS_TAP(X_TAB)));
|
||||||
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -686,6 +685,7 @@ void matrix_scan_user(void) {
|
|||||||
case KEYNAV:
|
case KEYNAV:
|
||||||
case KEYSEL:
|
case KEYSEL:
|
||||||
case SCREEN_NAV:
|
case SCREEN_NAV:
|
||||||
|
case VSCODE:
|
||||||
ergodox_right_led_3_on();
|
ergodox_right_led_3_on();
|
||||||
break;
|
break;
|
||||||
case BROWSER_CONTROL:
|
case BROWSER_CONTROL:
|
||||||
|
|||||||
@@ -0,0 +1,89 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 hineybush
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "config_common.h"
|
||||||
|
|
||||||
|
/* USB Device descriptor parameter */
|
||||||
|
#define VENDOR_ID 0x04D8
|
||||||
|
#define PRODUCT_ID 0xEBBE
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER hineybush keyboards
|
||||||
|
#define PRODUCT h60
|
||||||
|
#define DESCRIPTION A 60% PCB.
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 5
|
||||||
|
#define MATRIX_COLS 14
|
||||||
|
|
||||||
|
#define MATRIX_ROW_PINS { B6, B5, B4, D7, E6 }
|
||||||
|
#define MATRIX_COL_PINS { B3, D0, D1, D2, D3, D5, D6, C7, F0, F1, F4, F5, F6, F7 }
|
||||||
|
#define UNUSED_PINS
|
||||||
|
|
||||||
|
/* COL2ROW, ROW2COL*/
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
#define BACKLIGHT_PIN B7
|
||||||
|
#define BACKLIGHT_BREATHING
|
||||||
|
#define BACKLIGHT_LEVELS 3
|
||||||
|
|
||||||
|
// leaving this here if I decide to add RGB down the line
|
||||||
|
|
||||||
|
// #define RGB_DI_PIN E2
|
||||||
|
// #ifdef RGB_DI_PIN
|
||||||
|
// #define RGBLED_NUM 16
|
||||||
|
// #define RGBLIGHT_HUE_STEP 8
|
||||||
|
// #define RGBLIGHT_SAT_STEP 8
|
||||||
|
// #define RGBLIGHT_VAL_STEP 8
|
||||||
|
// #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
|
||||||
|
// #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
|
||||||
|
// /*== all animations enable ==*/
|
||||||
|
// #define RGBLIGHT_ANIMATIONS
|
||||||
|
// /*== or choose animations ==*/
|
||||||
|
// #define RGBLIGHT_EFFECT_BREATHING
|
||||||
|
// #define RGBLIGHT_EFFECT_RAINBOW_MOOD
|
||||||
|
// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
|
||||||
|
// #define RGBLIGHT_EFFECT_SNAKE
|
||||||
|
// #define RGBLIGHT_EFFECT_KNIGHT
|
||||||
|
// #define RGBLIGHT_EFFECT_CHRISTMAS
|
||||||
|
// #define RGBLIGHT_EFFECT_STATIC_GRADIENT
|
||||||
|
// #define RGBLIGHT_EFFECT_RGB_TEST
|
||||||
|
// #define RGBLIGHT_EFFECT_ALTERNATING
|
||||||
|
// /*== customize breathing effect ==*/
|
||||||
|
// /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
|
||||||
|
// #define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
|
||||||
|
// /*==== use exp() and sin() ====*/
|
||||||
|
// #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
|
||||||
|
// #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
|
||||||
|
// #endif
|
||||||
|
|
||||||
|
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||||
|
#define DEBOUNCE 5
|
||||||
|
|
||||||
|
/* 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
|
||||||
|
|
||||||
|
/* disable these deprecated features by default */
|
||||||
|
#define NO_ACTION_MACRO
|
||||||
|
#define NO_ACTION_FUNCTION
|
||||||
|
|
||||||
|
/* Bootmagic Lite key configuration */
|
||||||
|
#define BOOTMAGIC_LITE_ROW 0
|
||||||
|
#define BOOTMAGIC_LITE_COLUMN 0
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
/* Copyright 2020 hineybush
|
||||||
|
*
|
||||||
|
* 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 "h60.h"
|
||||||
|
|
||||||
|
void matrix_init_kb(void) {
|
||||||
|
// put your keyboard start-up code here
|
||||||
|
// runs once when the firmware starts up
|
||||||
|
setPinOutput(C6);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool led_update_kb(led_t led_state) {
|
||||||
|
if(led_update_user(led_state)) {
|
||||||
|
writePin(C6, !led_state.caps_lock);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,111 @@
|
|||||||
|
/* Copyright 2020 hineybush
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
/* This is a shortcut to help you visually see your layout.
|
||||||
|
*
|
||||||
|
* The first section contains all of the arguments representing the physical
|
||||||
|
* layout of the board and position of the keys.
|
||||||
|
*
|
||||||
|
* The second converts the arguments into a two-dimensional array which
|
||||||
|
* represents the switch matrix.
|
||||||
|
*/
|
||||||
|
#define LAYOUT_all(\
|
||||||
|
k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k113, \
|
||||||
|
k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k213, \
|
||||||
|
k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, \
|
||||||
|
k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, \
|
||||||
|
k400, k401, k402, k403, k406, k408, k409, k410, k411, k412 \
|
||||||
|
) { \
|
||||||
|
{ k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013 }, \
|
||||||
|
{ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113 }, \
|
||||||
|
{ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213 }, \
|
||||||
|
{ k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, KC_NO}, \
|
||||||
|
{ k400, k401, k402, k403, KC_NO,KC_NO,k406, KC_NO,k408, k409, k410, k411, k412, KC_NO} \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_60_ansi(\
|
||||||
|
k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k113, \
|
||||||
|
k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k213, \
|
||||||
|
k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, \
|
||||||
|
k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, \
|
||||||
|
k400, k401, k402, k406, k409, k410, k411, k412 \
|
||||||
|
) { \
|
||||||
|
{ k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, KC_NO}, \
|
||||||
|
{ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113 }, \
|
||||||
|
{ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213 }, \
|
||||||
|
{ k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, KC_NO,KC_NO}, \
|
||||||
|
{ k400, k401, k402, KC_NO,KC_NO,KC_NO,k406, KC_NO,KC_NO,k409, k410, k411, k412, KC_NO} \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_60_ansi_split_bs_rshift(\
|
||||||
|
k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k113, \
|
||||||
|
k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k213, \
|
||||||
|
k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, \
|
||||||
|
k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, \
|
||||||
|
k400, k401, k402, k406, k409, k410, k411, k412 \
|
||||||
|
) { \
|
||||||
|
{ k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013 }, \
|
||||||
|
{ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113 }, \
|
||||||
|
{ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213 }, \
|
||||||
|
{ k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, KC_NO}, \
|
||||||
|
{ k400, k401, k402, KC_NO,KC_NO,KC_NO,k406, KC_NO,KC_NO,k409, k410, k411, k412, KC_NO} \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_60_hhkb(\
|
||||||
|
k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k113, \
|
||||||
|
k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k213, \
|
||||||
|
k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, \
|
||||||
|
k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, \
|
||||||
|
k401, k402, k406, k410, k411 \
|
||||||
|
) { \
|
||||||
|
{ k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013 }, \
|
||||||
|
{ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113 }, \
|
||||||
|
{ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213 }, \
|
||||||
|
{ k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, KC_NO}, \
|
||||||
|
{ KC_NO,k401, k402, KC_NO,KC_NO,KC_NO,k406, KC_NO,KC_NO,KC_NO,k410, k411, KC_NO,KC_NO} \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_60_tsangan_hhkb(\
|
||||||
|
k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k113, \
|
||||||
|
k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k213, \
|
||||||
|
k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, \
|
||||||
|
k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, \
|
||||||
|
k400, k401, k402, k406, k410, k411, k412 \
|
||||||
|
) { \
|
||||||
|
{ k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013 }, \
|
||||||
|
{ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113 }, \
|
||||||
|
{ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213 }, \
|
||||||
|
{ k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, KC_NO}, \
|
||||||
|
{ k400, k401, k402, KC_NO,KC_NO,KC_NO,k406, KC_NO,KC_NO,KC_NO,k410, k411, k412, KC_NO} \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_60_tsangan_split_rshift(\
|
||||||
|
k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k113, \
|
||||||
|
k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k213, \
|
||||||
|
k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, \
|
||||||
|
k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, \
|
||||||
|
k400, k401, k402, k406, k410, k411, k412 \
|
||||||
|
) { \
|
||||||
|
{ k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, KC_NO}, \
|
||||||
|
{ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113 }, \
|
||||||
|
{ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213 }, \
|
||||||
|
{ k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, KC_NO}, \
|
||||||
|
{ k400, k401, k402, KC_NO,KC_NO,KC_NO,k406, KC_NO,KC_NO,KC_NO,k410, k411, k412, KC_NO} \
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
/* Copyright 2020 hineybush
|
||||||
|
|
||||||
|
*/
|
||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
// Defines names for use in layer keycodes and the keymap
|
||||||
|
enum layer_names {
|
||||||
|
_BASE,
|
||||||
|
_FN
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
|
||||||
|
[_BASE] = LAYOUT_60_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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||||
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RGUI, KC_RCTL),
|
||||||
|
|
||||||
|
[_FN] = LAYOUT_60_ansi(
|
||||||
|
KC_TRNS, BL_TOGG, BL_DEC, BL_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
||||||
|
};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
# The default keymap for h60
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
/* Copyright 2020 hineybush
|
||||||
|
|
||||||
|
*/
|
||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
// Defines names for use in layer keycodes and the keymap
|
||||||
|
enum layer_names {
|
||||||
|
_BASE,
|
||||||
|
_FN
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
[_BASE] = LAYOUT_60_hhkb(
|
||||||
|
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_GRV,
|
||||||
|
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_DEL,
|
||||||
|
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_ENT,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
|
||||||
|
KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT),
|
||||||
|
[_FN] = LAYOUT_60_hhkb(
|
||||||
|
KC_TRNS, BL_TOGG, BL_DEC, BL_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_MPLY, KC_TRNS, KC_TRNS),
|
||||||
|
};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
# The default keymap for the Kei keyboard
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
/* Copyright 2020 hineybush
|
||||||
|
|
||||||
|
*/
|
||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
// Defines names for use in layer keycodes and the keymap
|
||||||
|
enum layer_names {
|
||||||
|
_BASE,
|
||||||
|
_FN1,
|
||||||
|
_FN2,
|
||||||
|
_FN3
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
[_BASE] = LAYOUT_all(
|
||||||
|
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_TRNS,
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||||
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_TRNS,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_TRNS, KC_SPC, KC_TRNS, KC_RALT, MO(1), KC_RGUI, KC_RCTL),
|
||||||
|
[_FN1] = LAYOUT_all(
|
||||||
|
KC_TRNS, BL_TOGG, BL_DEC, BL_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
||||||
|
[_FN2] = LAYOUT_all(
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_all(
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
||||||
|
};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
# The via keymap for h60
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
VIA_ENABLE = yes
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
# h60
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
A GH60 form factor PCB for 60% keyboards. Uses a USB Type C connector.
|
||||||
|
|
||||||
|
* Keyboard Maintainer: [hineybush](https://github.com/hineybush)
|
||||||
|
* Hardware Supported: h60
|
||||||
|
* Hardware Availability: [hiney.cc](https://hiney.cc)
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make hineybush/h60:default
|
||||||
|
|
||||||
|
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
# MCU name
|
||||||
|
MCU = atmega32u4
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
BOOTLOADER = atmel-dfu
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
|
||||||
|
MOUSEKEY_ENABLE = 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
|
||||||
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
|
SLEEP_LED_ENABLE = yes # 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 = yes # Enable keyboard backlight functionality
|
||||||
|
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||||
|
MIDI_ENABLE = no # MIDI support
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
|
AUDIO_ENABLE = no # Audio output
|
||||||
|
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||||
|
LAYOUTS = 60_ansi 60_ansi_split_bs_rshift 60_hhkb 60_tsangan_hhkb
|
||||||
@@ -0,0 +1,80 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "maja",
|
||||||
|
"url": "",
|
||||||
|
"maintainer": "KBDFANS",
|
||||||
|
"width": 18.75,
|
||||||
|
"height": 5.5,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT": {
|
||||||
|
"layout": [
|
||||||
|
{"x": 2.75, "y": 0},
|
||||||
|
{"x": 12.75, "y": 0},
|
||||||
|
{"x": 0.75, "y": 0.25},
|
||||||
|
{"x": 1.75, "y": 0.25},
|
||||||
|
{"x": 3.75, "y": 0.25},
|
||||||
|
{"x": 4.75, "y": 0.25},
|
||||||
|
{"x": 5.75, "y": 0.25},
|
||||||
|
{"x": 6.75, "y": 0.25},
|
||||||
|
{"x": 8.75, "y": 0.25},
|
||||||
|
{"x": 9.75, "y": 0.25},
|
||||||
|
{"x": 10.75, "y": 0.25},
|
||||||
|
{"x": 11.75, "y": 0.25},
|
||||||
|
{"x": 13.75, "y": 0.25},
|
||||||
|
{"x": 14.75, "y": 0.25, "w": 2},
|
||||||
|
{"x": 17.75, "y": 0.25},
|
||||||
|
{"x": 0.5, "y": 1.25, "w": 1.5},
|
||||||
|
{"x": 2, "y": 1.25},
|
||||||
|
{"x": 3, "y": 1.25},
|
||||||
|
{"x": 4, "y": 1.25},
|
||||||
|
{"x": 5, "y": 1.25},
|
||||||
|
{"x": 6, "y": 1.25},
|
||||||
|
{"x": 8.5, "y": 1.25},
|
||||||
|
{"x": 9.5, "y": 1.25},
|
||||||
|
{"x": 10.5, "y": 1.25},
|
||||||
|
{"x": 11.5, "y": 1.25},
|
||||||
|
{"x": 12.5, "y": 1.25},
|
||||||
|
{"x": 13.5, "y": 1.25},
|
||||||
|
{"x": 14.5, "y": 1.25},
|
||||||
|
{"x": 15.5, "y": 1.25, "w": 1.5},
|
||||||
|
{"x": 17.75, "y": 1.25},
|
||||||
|
{"x": 0.25, "y": 2.25, "w": 1.75},
|
||||||
|
{"x": 2, "y": 2.25},
|
||||||
|
{"x": 3, "y": 2.25},
|
||||||
|
{"x": 4, "y": 2.25},
|
||||||
|
{"x": 5, "y": 2.25},
|
||||||
|
{"x": 6, "y": 2.25},
|
||||||
|
{"x": 9, "y": 2.25},
|
||||||
|
{"x": 10, "y": 2.25},
|
||||||
|
{"x": 11, "y": 2.25},
|
||||||
|
{"x": 12, "y": 2.25},
|
||||||
|
{"x": 13, "y": 2.25},
|
||||||
|
{"x": 14, "y": 2.25},
|
||||||
|
{"x": 15, "y": 2.25, "w": 2.25},
|
||||||
|
{"x": 17.75, "y": 2.25},
|
||||||
|
{"x": 0, "y": 3.25, "w": 2.25},
|
||||||
|
{"x": 2.25, "y": 3.25},
|
||||||
|
{"x": 3.25, "y": 3.25},
|
||||||
|
{"x": 4.25, "y": 3.25},
|
||||||
|
{"x": 5.25, "y": 3.25},
|
||||||
|
{"x": 6.25, "y": 3.25},
|
||||||
|
{"x": 8.25, "y": 3.25},
|
||||||
|
{"x": 9.25, "y": 3.25},
|
||||||
|
{"x": 10.25, "y": 3.25},
|
||||||
|
{"x": 11.25, "y": 3.25},
|
||||||
|
{"x": 12.25, "y": 3.25},
|
||||||
|
{"x": 13.25, "y": 3.25},
|
||||||
|
{"x": 14.25, "y": 3.25, "w": 2.25},
|
||||||
|
{"x": 16.75, "y": 3.5},
|
||||||
|
{"x": 0, "y": 4.25, "w": 1.5},
|
||||||
|
{"x": 3, "y": 4.25, "w": 1.5},
|
||||||
|
{"x": 4.5, "y": 4.25, "w": 2},
|
||||||
|
{"x": 6.5, "y": 4.25, "w": 1.25},
|
||||||
|
{"x": 8.25, "y": 4.25, "w": 2.75},
|
||||||
|
{"x": 11, "y": 4.25, "w": 1.5},
|
||||||
|
{"x": 15.75, "y": 4.5},
|
||||||
|
{"x": 16.75, "y": 4.5},
|
||||||
|
{"x": 17.75, "y": 4.5}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2012 Jun Wako <[email protected]>
|
||||||
|
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
|
||||||
|
|
||||||
|
#include "config_common.h"
|
||||||
@@ -0,0 +1,339 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "KBO-5000",
|
||||||
|
"url": "https://keeb.io",
|
||||||
|
"maintainer": "nooges",
|
||||||
|
"width": 20.5,
|
||||||
|
"height": 6.25,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT_ansi": {
|
||||||
|
"layout": [
|
||||||
|
{"label":"Esc", "x":0, "y":0},
|
||||||
|
{"label":"F1", "x":2, "y":0},
|
||||||
|
{"label":"F2", "x":3, "y":0},
|
||||||
|
{"label":"F3", "x":4, "y":0},
|
||||||
|
{"label":"F4", "x":5, "y":0},
|
||||||
|
{"label":"F5", "x":6.5, "y":0},
|
||||||
|
{"label":"F6", "x":7.5, "y":0},
|
||||||
|
|
||||||
|
{"label":"F7", "x":10, "y":0},
|
||||||
|
{"label":"F8", "x":11, "y":0},
|
||||||
|
{"label":"F9", "x":12.5, "y":0},
|
||||||
|
{"label":"F10", "x":13.5, "y":0},
|
||||||
|
{"label":"F11", "x":14.5, "y":0},
|
||||||
|
{"label":"F12", "x":15.5, "y":0},
|
||||||
|
{"label":"Prt Sc", "x":17.5, "y":0},
|
||||||
|
{"label":"Scr Lk", "x":18.5, "y":0},
|
||||||
|
{"label":"Pause", "x":19.5, "y":0},
|
||||||
|
|
||||||
|
{"label":"F13", "x":0, "y":1.25},
|
||||||
|
{"label":"~", "x":1.5, "y":1.25},
|
||||||
|
{"label":"!", "x":2.5, "y":1.25},
|
||||||
|
{"label":"@", "x":3.5, "y":1.25},
|
||||||
|
{"label":"#", "x":4.5, "y":1.25},
|
||||||
|
{"label":"$", "x":5.5, "y":1.25},
|
||||||
|
{"label":"%", "x":6.5, "y":1.25},
|
||||||
|
{"label":"^", "x":7.5, "y":1.25},
|
||||||
|
|
||||||
|
{"label":"&", "x":10, "y":1.25},
|
||||||
|
{"label":"*", "x":11, "y":1.25},
|
||||||
|
{"label":"(", "x":12, "y":1.25},
|
||||||
|
{"label":")", "x":13, "y":1.25},
|
||||||
|
{"label":"_", "x":14, "y":1.25},
|
||||||
|
{"label":"+", "x":15, "y":1.25},
|
||||||
|
{"label":"Del", "x":16, "y":1.25},
|
||||||
|
{"label":"Bksp", "x":17, "y":1.25},
|
||||||
|
{"label":"Ins", "x":18.5, "y":1.25},
|
||||||
|
{"label":"Pg Up", "x":19.5, "y":1.25},
|
||||||
|
|
||||||
|
{"label":"F14", "x":0, "y":2.25},
|
||||||
|
{"label":"Tab", "x":1.5, "y":2.25, "w":1.5},
|
||||||
|
{"label":"Q", "x":3, "y":2.25},
|
||||||
|
{"label":"W", "x":4, "y":2.25},
|
||||||
|
{"label":"E", "x":5, "y":2.25},
|
||||||
|
{"label":"R", "x":6, "y":2.25},
|
||||||
|
{"label":"T", "x":7, "y":2.25},
|
||||||
|
|
||||||
|
{"label":"Y", "x":9.5, "y":2.25},
|
||||||
|
{"label":"U", "x":10.5, "y":2.25},
|
||||||
|
{"label":"I", "x":11.5, "y":2.25},
|
||||||
|
{"label":"O", "x":12.5, "y":2.25},
|
||||||
|
{"label":"P", "x":13.5, "y":2.25},
|
||||||
|
{"label":"{", "x":14.5, "y":2.25},
|
||||||
|
{"label":"}", "x":15.5, "y":2.25},
|
||||||
|
{"label":"|", "x":16.5, "y":2.25, "w":1.5},
|
||||||
|
{"label":"Del", "x":18.5, "y":2.25},
|
||||||
|
{"label":"Pg Dn", "x":19.5, "y":2.25},
|
||||||
|
|
||||||
|
{"label":"F15", "x":0, "y":3.25},
|
||||||
|
{"label":"Caps Lock", "x":1.5, "y":3.25, "w":1.75},
|
||||||
|
{"label":"A", "x":3.25, "y":3.25},
|
||||||
|
{"label":"S", "x":4.25, "y":3.25},
|
||||||
|
{"label":"D", "x":5.25, "y":3.25},
|
||||||
|
{"label":"F", "x":6.25, "y":3.25},
|
||||||
|
{"label":"G", "x":7.25, "y":3.25},
|
||||||
|
|
||||||
|
{"label":"H", "x":9.75, "y":3.25},
|
||||||
|
{"label":"J", "x":10.75, "y":3.25},
|
||||||
|
{"label":"K", "x":11.75, "y":3.25},
|
||||||
|
{"label":"L", "x":12.75, "y":3.25},
|
||||||
|
{"label":":", "x":13.75, "y":3.25},
|
||||||
|
{"label":"\"", "x":14.75, "y":3.25},
|
||||||
|
{"label":"Enter", "x":15.75, "y":3.25, "w":2.25},
|
||||||
|
{"label":"Home", "x":18.5, "y":3.25},
|
||||||
|
{"label":"End", "x":19.5, "y":3.25},
|
||||||
|
|
||||||
|
{"label":"F16", "x":0, "y":4.25},
|
||||||
|
{"label":"Shift", "x":1.5, "y":4.25, "w":2.25},
|
||||||
|
{"label":"Z", "x":3.75, "y":4.25},
|
||||||
|
{"label":"X", "x":4.75, "y":4.25},
|
||||||
|
{"label":"C", "x":5.75, "y":4.25},
|
||||||
|
{"label":"V", "x":6.75, "y":4.25},
|
||||||
|
{"label":"B", "x":7.75, "y":4.25},
|
||||||
|
{"label":"N", "x":10.25, "y":4.25},
|
||||||
|
{"label":"M", "x":11.25, "y":4.25},
|
||||||
|
{"label":"<", "x":12.25, "y":4.25},
|
||||||
|
{"label":">", "x":13.25, "y":4.25},
|
||||||
|
{"label":"?", "x":14.25, "y":4.25},
|
||||||
|
{"label":"Shift", "x":15.25, "y":4.25, "w":1.75},
|
||||||
|
{"label":"Up", "x":18.5, "y":4.25},
|
||||||
|
|
||||||
|
{"label":"F17", "x":0, "y":5.25},
|
||||||
|
{"label":"Ctrl", "x":1.5, "y":5.25, "w":1.25},
|
||||||
|
{"label":"Win", "x":2.75, "y":5.25},
|
||||||
|
{"label":"Alt", "x":3.75, "y":5.25, "w":1.25},
|
||||||
|
{"label":"Fn", "x":5, "y":5.25, "w":1.25},
|
||||||
|
{"label":"Space", "x":6.25, "y":5.25},
|
||||||
|
{"label":"Fn", "x":7.25, "y":5.25, "w":1.25},
|
||||||
|
{"label":"Fn", "x":10, "y":5.25, "w":1.25},
|
||||||
|
{"label":"Space", "x":11.25, "y":5.25, "w":2.25},
|
||||||
|
{"label":"Alt", "x":13.5, "y":5.25, "w":1.25},
|
||||||
|
{"label":"Win", "x":14.75, "y":5.25},
|
||||||
|
{"label":"Ctrl", "x":15.75, "y":5.25, "w":1.25},
|
||||||
|
{"label":"Left", "x":17.5, "y":5.25},
|
||||||
|
{"label":"Down", "x":18.5, "y":5.25},
|
||||||
|
{"label":"Right", "x":19.5, "y":5.25}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_iso": {
|
||||||
|
"layout": [
|
||||||
|
{"label":"Esc", "x":0, "y":0},
|
||||||
|
{"label":"F1", "x":2, "y":0},
|
||||||
|
{"label":"F2", "x":3, "y":0},
|
||||||
|
{"label":"F3", "x":4, "y":0},
|
||||||
|
{"label":"F4", "x":5, "y":0},
|
||||||
|
{"label":"F5", "x":6.5, "y":0},
|
||||||
|
{"label":"F6", "x":7.5, "y":0},
|
||||||
|
|
||||||
|
{"label":"F7", "x":10, "y":0},
|
||||||
|
{"label":"F8", "x":11, "y":0},
|
||||||
|
{"label":"F9", "x":12.5, "y":0},
|
||||||
|
{"label":"F10", "x":13.5, "y":0},
|
||||||
|
{"label":"F11", "x":14.5, "y":0},
|
||||||
|
{"label":"F12", "x":15.5, "y":0},
|
||||||
|
{"label":"Prt Sc", "x":17.5, "y":0},
|
||||||
|
{"label":"Scr Lk", "x":18.5, "y":0},
|
||||||
|
{"label":"Pause", "x":19.5, "y":0},
|
||||||
|
|
||||||
|
{"label":"F13", "x":0, "y":1.25},
|
||||||
|
{"label":"~", "x":1.5, "y":1.25},
|
||||||
|
{"label":"!", "x":2.5, "y":1.25},
|
||||||
|
{"label":"@", "x":3.5, "y":1.25},
|
||||||
|
{"label":"#", "x":4.5, "y":1.25},
|
||||||
|
{"label":"$", "x":5.5, "y":1.25},
|
||||||
|
{"label":"%", "x":6.5, "y":1.25},
|
||||||
|
{"label":"^", "x":7.5, "y":1.25},
|
||||||
|
|
||||||
|
{"label":"&", "x":10, "y":1.25},
|
||||||
|
{"label":"*", "x":11, "y":1.25},
|
||||||
|
{"label":"(", "x":12, "y":1.25},
|
||||||
|
{"label":")", "x":13, "y":1.25},
|
||||||
|
{"label":"_", "x":14, "y":1.25},
|
||||||
|
{"label":"+", "x":15, "y":1.25},
|
||||||
|
{"label":"Del", "x":16, "y":1.25},
|
||||||
|
{"label":"Bksp", "x":17, "y":1.25},
|
||||||
|
{"label":"Ins", "x":18.5, "y":1.25},
|
||||||
|
{"label":"Pg Up", "x":19.5, "y":1.25},
|
||||||
|
|
||||||
|
{"label":"F14", "x":0, "y":2.25},
|
||||||
|
{"label":"Tab", "x":1.5, "y":2.25, "w":1.5},
|
||||||
|
{"label":"Q", "x":3, "y":2.25},
|
||||||
|
{"label":"W", "x":4, "y":2.25},
|
||||||
|
{"label":"E", "x":5, "y":2.25},
|
||||||
|
{"label":"R", "x":6, "y":2.25},
|
||||||
|
{"label":"T", "x":7, "y":2.25},
|
||||||
|
|
||||||
|
{"label":"Y", "x":9.5, "y":2.25},
|
||||||
|
{"label":"U", "x":10.5, "y":2.25},
|
||||||
|
{"label":"I", "x":11.5, "y":2.25},
|
||||||
|
{"label":"O", "x":12.5, "y":2.25},
|
||||||
|
{"label":"P", "x":13.5, "y":2.25},
|
||||||
|
{"label":"{", "x":14.5, "y":2.25},
|
||||||
|
{"label":"}", "x":15.5, "y":2.25},
|
||||||
|
{"label":"Del", "x":18.5, "y":2.25},
|
||||||
|
{"label":"Pg Dn", "x":19.5, "y":2.25},
|
||||||
|
|
||||||
|
{"label":"F15", "x":0, "y":3.25},
|
||||||
|
{"label":"Caps Lock", "x":1.5, "y":3.25, "w":1.75},
|
||||||
|
{"label":"A", "x":3.25, "y":3.25},
|
||||||
|
{"label":"S", "x":4.25, "y":3.25},
|
||||||
|
{"label":"D", "x":5.25, "y":3.25},
|
||||||
|
{"label":"F", "x":6.25, "y":3.25},
|
||||||
|
{"label":"G", "x":7.25, "y":3.25},
|
||||||
|
|
||||||
|
{"label":"H", "x":9.75, "y":3.25},
|
||||||
|
{"label":"J", "x":10.75, "y":3.25},
|
||||||
|
{"label":"K", "x":11.75, "y":3.25},
|
||||||
|
{"label":"L", "x":12.75, "y":3.25},
|
||||||
|
{"label":":", "x":13.75, "y":3.25},
|
||||||
|
{"label":"\"", "x":14.75, "y":3.25},
|
||||||
|
{"label":"#", "x":15.75, "y":3.25},
|
||||||
|
{"label":"Enter", "x":16.75, "y":2.25, "w":1.25, "h":2},
|
||||||
|
{"label":"Home", "x":18.5, "y":3.25},
|
||||||
|
{"label":"End", "x":19.5, "y":3.25},
|
||||||
|
|
||||||
|
{"label":"F16", "x":0, "y":4.25},
|
||||||
|
{"label":"Shift", "x":1.5, "y":4.25, "w":1.25},
|
||||||
|
{"label":"\\", "x":2.75, "y":4.25},
|
||||||
|
{"label":"Z", "x":3.75, "y":4.25},
|
||||||
|
{"label":"X", "x":4.75, "y":4.25},
|
||||||
|
{"label":"C", "x":5.75, "y":4.25},
|
||||||
|
{"label":"V", "x":6.75, "y":4.25},
|
||||||
|
{"label":"B", "x":7.75, "y":4.25},
|
||||||
|
{"label":"N", "x":10.25, "y":4.25},
|
||||||
|
{"label":"M", "x":11.25, "y":4.25},
|
||||||
|
{"label":"<", "x":12.25, "y":4.25},
|
||||||
|
{"label":">", "x":13.25, "y":4.25},
|
||||||
|
{"label":"?", "x":14.25, "y":4.25},
|
||||||
|
{"label":"Shift", "x":15.25, "y":4.25, "w":1.75},
|
||||||
|
{"label":"Up", "x":18.5, "y":4.25},
|
||||||
|
|
||||||
|
{"label":"F17", "x":0, "y":5.25},
|
||||||
|
{"label":"Ctrl", "x":1.5, "y":5.25, "w":1.25},
|
||||||
|
{"label":"Win", "x":2.75, "y":5.25},
|
||||||
|
{"label":"Alt", "x":3.75, "y":5.25, "w":1.25},
|
||||||
|
{"label":"Fn", "x":5, "y":5.25, "w":1.25},
|
||||||
|
{"label":"Space", "x":6.25, "y":5.25},
|
||||||
|
{"label":"Fn", "x":7.25, "y":5.25, "w":1.25},
|
||||||
|
{"label":"Fn", "x":10, "y":5.25, "w":1.25},
|
||||||
|
{"label":"Space", "x":11.25, "y":5.25, "w":2.25},
|
||||||
|
{"label":"Alt", "x":13.5, "y":5.25, "w":1.25},
|
||||||
|
{"label":"Win", "x":14.75, "y":5.25},
|
||||||
|
{"label":"Ctrl", "x":15.75, "y":5.25, "w":1.25},
|
||||||
|
{"label":"Left", "x":17.5, "y":5.25},
|
||||||
|
{"label":"Down", "x":18.5, "y":5.25},
|
||||||
|
{"label":"Right", "x":19.5, "y":5.25}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_all": {
|
||||||
|
"layout": [
|
||||||
|
{"label":"Esc", "x":0, "y":0},
|
||||||
|
{"label":"F1", "x":2, "y":0},
|
||||||
|
{"label":"F2", "x":3, "y":0},
|
||||||
|
{"label":"F3", "x":4, "y":0},
|
||||||
|
{"label":"F4", "x":5, "y":0},
|
||||||
|
{"label":"F5", "x":6.5, "y":0},
|
||||||
|
{"label":"F6", "x":7.5, "y":0},
|
||||||
|
|
||||||
|
{"label":"F7", "x":10, "y":0},
|
||||||
|
{"label":"F8", "x":11, "y":0},
|
||||||
|
{"label":"F9", "x":12.5, "y":0},
|
||||||
|
{"label":"F10", "x":13.5, "y":0},
|
||||||
|
{"label":"F11", "x":14.5, "y":0},
|
||||||
|
{"label":"F12", "x":15.5, "y":0},
|
||||||
|
{"label":"Prt Sc", "x":17.5, "y":0},
|
||||||
|
{"label":"Scr Lk", "x":18.5, "y":0},
|
||||||
|
{"label":"Pause", "x":19.5, "y":0},
|
||||||
|
|
||||||
|
{"label":"F13", "x":0, "y":1.25},
|
||||||
|
{"label":"~", "x":1.5, "y":1.25},
|
||||||
|
{"label":"!", "x":2.5, "y":1.25},
|
||||||
|
{"label":"@", "x":3.5, "y":1.25},
|
||||||
|
{"label":"#", "x":4.5, "y":1.25},
|
||||||
|
{"label":"$", "x":5.5, "y":1.25},
|
||||||
|
{"label":"%", "x":6.5, "y":1.25},
|
||||||
|
{"label":"^", "x":7.5, "y":1.25},
|
||||||
|
|
||||||
|
{"label":"&", "x":10, "y":1.25},
|
||||||
|
{"label":"*", "x":11, "y":1.25},
|
||||||
|
{"label":"(", "x":12, "y":1.25},
|
||||||
|
{"label":")", "x":13, "y":1.25},
|
||||||
|
{"label":"_", "x":14, "y":1.25},
|
||||||
|
{"label":"+", "x":15, "y":1.25},
|
||||||
|
{"label":"Del", "x":16, "y":1.25},
|
||||||
|
{"label":"Bksp", "x":17, "y":1.25},
|
||||||
|
{"label":"Ins", "x":18.5, "y":1.25},
|
||||||
|
{"label":"Pg Up", "x":19.5, "y":1.25},
|
||||||
|
|
||||||
|
{"label":"F14", "x":0, "y":2.25},
|
||||||
|
{"label":"Tab", "x":1.5, "y":2.25, "w":1.5},
|
||||||
|
{"label":"Q", "x":3, "y":2.25},
|
||||||
|
{"label":"W", "x":4, "y":2.25},
|
||||||
|
{"label":"E", "x":5, "y":2.25},
|
||||||
|
{"label":"R", "x":6, "y":2.25},
|
||||||
|
{"label":"T", "x":7, "y":2.25},
|
||||||
|
|
||||||
|
{"label":"Y", "x":9.5, "y":2.25},
|
||||||
|
{"label":"U", "x":10.5, "y":2.25},
|
||||||
|
{"label":"I", "x":11.5, "y":2.25},
|
||||||
|
{"label":"O", "x":12.5, "y":2.25},
|
||||||
|
{"label":"P", "x":13.5, "y":2.25},
|
||||||
|
{"label":"{", "x":14.5, "y":2.25},
|
||||||
|
{"label":"}", "x":15.5, "y":2.25},
|
||||||
|
{"label":"|", "x":16.5, "y":2.25, "w":1.5},
|
||||||
|
{"label":"Del", "x":18.5, "y":2.25},
|
||||||
|
{"label":"Pg Dn", "x":19.5, "y":2.25},
|
||||||
|
|
||||||
|
{"label":"F15", "x":0, "y":3.25},
|
||||||
|
{"label":"Caps Lock", "x":1.5, "y":3.25, "w":1.75},
|
||||||
|
{"label":"A", "x":3.25, "y":3.25},
|
||||||
|
{"label":"S", "x":4.25, "y":3.25},
|
||||||
|
{"label":"D", "x":5.25, "y":3.25},
|
||||||
|
{"label":"F", "x":6.25, "y":3.25},
|
||||||
|
{"label":"G", "x":7.25, "y":3.25},
|
||||||
|
|
||||||
|
{"label":"H", "x":9.75, "y":3.25},
|
||||||
|
{"label":"J", "x":10.75, "y":3.25},
|
||||||
|
{"label":"K", "x":11.75, "y":3.25},
|
||||||
|
{"label":"L", "x":12.75, "y":3.25},
|
||||||
|
{"label":":", "x":13.75, "y":3.25},
|
||||||
|
{"label":"\"", "x":14.75, "y":3.25},
|
||||||
|
{"label":"#", "x":15.75, "y":3.25},
|
||||||
|
{"label":"Enter", "x":16.75, "y":3.25, "w":1.25},
|
||||||
|
{"label":"Home", "x":18.5, "y":3.25},
|
||||||
|
{"label":"End", "x":19.5, "y":3.25},
|
||||||
|
|
||||||
|
{"label":"F16", "x":0, "y":4.25},
|
||||||
|
{"label":"Shift", "x":1.5, "y":4.25, "w":1.25},
|
||||||
|
{"label":"\\", "x":2.75, "y":4.25},
|
||||||
|
{"label":"Z", "x":3.75, "y":4.25},
|
||||||
|
{"label":"X", "x":4.75, "y":4.25},
|
||||||
|
{"label":"C", "x":5.75, "y":4.25},
|
||||||
|
{"label":"V", "x":6.75, "y":4.25},
|
||||||
|
{"label":"B", "x":7.75, "y":4.25},
|
||||||
|
{"label":"N", "x":10.25, "y":4.25},
|
||||||
|
{"label":"M", "x":11.25, "y":4.25},
|
||||||
|
{"label":"<", "x":12.25, "y":4.25},
|
||||||
|
{"label":">", "x":13.25, "y":4.25},
|
||||||
|
{"label":"?", "x":14.25, "y":4.25},
|
||||||
|
{"label":"Shift", "x":15.25, "y":4.25, "w":1.75},
|
||||||
|
{"label":"Up", "x":18.5, "y":4.25},
|
||||||
|
|
||||||
|
{"label":"F17", "x":0, "y":5.25},
|
||||||
|
{"label":"Ctrl", "x":1.5, "y":5.25, "w":1.25},
|
||||||
|
{"label":"Win", "x":2.75, "y":5.25},
|
||||||
|
{"label":"Alt", "x":3.75, "y":5.25, "w":1.25},
|
||||||
|
{"label":"Fn", "x":5, "y":5.25, "w":1.25},
|
||||||
|
{"label":"Space", "x":6.25, "y":5.25},
|
||||||
|
{"label":"Fn", "x":7.25, "y":5.25, "w":1.25},
|
||||||
|
{"label":"Fn", "x":10, "y":5.25, "w":1.25},
|
||||||
|
{"label":"Space", "x":11.25, "y":5.25, "w":2.25},
|
||||||
|
{"label":"Alt", "x":13.5, "y":5.25, "w":1.25},
|
||||||
|
{"label":"Win", "x":14.75, "y":5.25},
|
||||||
|
{"label":"Ctrl", "x":15.75, "y":5.25, "w":1.25},
|
||||||
|
{"label":"Left", "x":17.5, "y":5.25},
|
||||||
|
{"label":"Down", "x":18.5, "y":5.25},
|
||||||
|
{"label":"Right", "x":19.5, "y":5.25}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
#include "kbo5000.h"
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
#ifdef KEYBOARD_keebio_kbo5000_rev1
|
||||||
|
#include "rev1.h"
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
enum encoder_names {
|
||||||
|
LEFT_HALF_ENC = 0,
|
||||||
|
RIGHT_HALF_ENC1 = 2,
|
||||||
|
RIGHT_HALF_ENC2,
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[0] = LAYOUT_ansi(
|
||||||
|
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_PAUS,
|
||||||
|
KC_F13, 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_DEL, KC_BSPC, KC_INS, KC_PGUP,
|
||||||
|
KC_F14, 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_PGDN,
|
||||||
|
KC_F15, 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_HOME, KC_END,
|
||||||
|
KC_F16, 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_F17, KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
|
),
|
||||||
|
|
||||||
|
[1] = LAYOUT_ansi(
|
||||||
|
BL_STEP, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
|
||||||
|
[2] = LAYOUT_ansi(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
void encoder_update_user(uint8_t index, bool clockwise) {
|
||||||
|
if (index == LEFT_HALF_ENC) {
|
||||||
|
if (clockwise) {
|
||||||
|
tap_code(KC_PGDN);
|
||||||
|
} else {
|
||||||
|
tap_code(KC_PGUP);
|
||||||
|
}
|
||||||
|
} else if (index == RIGHT_HALF_ENC1) {
|
||||||
|
if (clockwise) {
|
||||||
|
tap_code(KC_VOLU);
|
||||||
|
} else {
|
||||||
|
tap_code(KC_VOLD);
|
||||||
|
}
|
||||||
|
} else if (index == RIGHT_HALF_ENC2) {
|
||||||
|
if (clockwise) {
|
||||||
|
tap_code(KC_DOWN);
|
||||||
|
} else {
|
||||||
|
tap_code(KC_UP);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
enum encoder_names {
|
||||||
|
LEFT_HALF_ENC = 0,
|
||||||
|
RIGHT_HALF_ENC1 = 2,
|
||||||
|
RIGHT_HALF_ENC2,
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[0] = LAYOUT_iso(
|
||||||
|
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_PAUS,
|
||||||
|
KC_F13, 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_DEL, KC_BSPC, KC_INS, KC_PGUP,
|
||||||
|
KC_F14, 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_DEL, KC_PGDN,
|
||||||
|
KC_F15, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME, KC_END,
|
||||||
|
KC_F16, 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_F17, KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
|
),
|
||||||
|
|
||||||
|
[1] = LAYOUT_iso(
|
||||||
|
BL_STEP, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
|
||||||
|
[2] = LAYOUT_iso(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
void encoder_update_user(uint8_t index, bool clockwise) {
|
||||||
|
if (index == LEFT_HALF_ENC) {
|
||||||
|
if (clockwise) {
|
||||||
|
tap_code(KC_PGDN);
|
||||||
|
} else {
|
||||||
|
tap_code(KC_PGUP);
|
||||||
|
}
|
||||||
|
} else if (index == RIGHT_HALF_ENC1) {
|
||||||
|
if (clockwise) {
|
||||||
|
tap_code(KC_VOLU);
|
||||||
|
} else {
|
||||||
|
tap_code(KC_VOLD);
|
||||||
|
}
|
||||||
|
} else if (index == RIGHT_HALF_ENC2) {
|
||||||
|
if (clockwise) {
|
||||||
|
tap_code(KC_DOWN);
|
||||||
|
} else {
|
||||||
|
tap_code(KC_UP);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#define DYNAMIC_KEYMAP_LAYER_COUNT 3
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
enum encoder_names {
|
||||||
|
LEFT_HALF_ENC = 0,
|
||||||
|
RIGHT_HALF_ENC1 = 2,
|
||||||
|
RIGHT_HALF_ENC2,
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[0] = LAYOUT_all(
|
||||||
|
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_PAUS,
|
||||||
|
KC_F13, 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_DEL, KC_BSPC, KC_INS, KC_PGUP,
|
||||||
|
KC_F14, 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_PGDN,
|
||||||
|
KC_F15, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME, KC_END,
|
||||||
|
KC_F16, 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_F17, KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
|
),
|
||||||
|
|
||||||
|
[1] = LAYOUT_all(
|
||||||
|
BL_STEP, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
|
||||||
|
[2] = LAYOUT_all(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
void encoder_update_user(uint8_t index, bool clockwise) {
|
||||||
|
if (index == LEFT_HALF_ENC) {
|
||||||
|
if (clockwise) {
|
||||||
|
tap_code(KC_PGDN);
|
||||||
|
} else {
|
||||||
|
tap_code(KC_PGUP);
|
||||||
|
}
|
||||||
|
} else if (index == RIGHT_HALF_ENC1) {
|
||||||
|
if (clockwise) {
|
||||||
|
tap_code(KC_VOLU);
|
||||||
|
} else {
|
||||||
|
tap_code(KC_VOLD);
|
||||||
|
}
|
||||||
|
} else if (index == RIGHT_HALF_ENC2) {
|
||||||
|
if (clockwise) {
|
||||||
|
tap_code(KC_DOWN);
|
||||||
|
} else {
|
||||||
|
tap_code(KC_UP);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
VIA_ENABLE = yes
|
||||||
|
CONSOLE_ENABLE = yes
|
||||||
|
LTO_ENABLE = yes
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# KBO-5000
|
||||||
|
|
||||||
|
A split staggered keyboard designed to be like the G80-5000, made and sold by Keebio. [More info at Keebio](https://keeb.io).
|
||||||
|
|
||||||
|
* Keyboard Maintainer: [Bakingpy/nooges](https://github.com/nooges)
|
||||||
|
* Hardware Availability: [Keebio](https://keeb.io/)
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make keebio/kbo5000/rev1:default
|
||||||
|
|
||||||
|
Example of flashing this keyboard:
|
||||||
|
|
||||||
|
make keebio/kbo5000/rev1:default:flash
|
||||||
|
|
||||||
|
Handedness detection is already hardwired onto the PCB, so no need to deal with `EE_HANDS` or flashing .eep files.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
A build guide for this keyboard can be found here: [Keebio Build Guides](https://docs.keeb.io)
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2012 Jun Wako <[email protected]>
|
||||||
|
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
|
||||||
|
|
||||||
|
/* USB Device descriptor parameter */
|
||||||
|
#define VENDOR_ID 0xCB10
|
||||||
|
#define PRODUCT_ID 0x126A
|
||||||
|
#define DEVICE_VER 0x0100
|
||||||
|
#define MANUFACTURER Keebio
|
||||||
|
#define PRODUCT KBO-5000 Rev. 1
|
||||||
|
#define DESCRIPTION Split staggered keyboard
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
// Rows are doubled-up
|
||||||
|
#define MATRIX_ROWS 12
|
||||||
|
#define MATRIX_COLS 10
|
||||||
|
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
// wiring of each half
|
||||||
|
#define MATRIX_ROW_PINS { B1, B2, C7, B4, D7, B0 }
|
||||||
|
#define MATRIX_COL_PINS { F4, NO_PIN, F0, B7, B3, D2, D3, D5, D4, NO_PIN }
|
||||||
|
#define MATRIX_ROW_PINS_RIGHT { B3, B2, B6, B4, D7, B0 }
|
||||||
|
#define MATRIX_COL_PINS_RIGHT { F1, F0, F4, F5, F6, D5, D2, D3, B7, B1 }
|
||||||
|
#define SPLIT_HAND_PIN F7
|
||||||
|
#define ENCODERS_PAD_A { F5, NO_PIN }
|
||||||
|
#define ENCODERS_PAD_B { F6, NO_PIN }
|
||||||
|
#define ENCODERS_PAD_A_RIGHT { D6, C7 }
|
||||||
|
#define ENCODERS_PAD_B_RIGHT { D4, C6 }
|
||||||
|
|
||||||
|
/* Set 0 if debouncing isn't needed */
|
||||||
|
#define DEBOUNCE 5
|
||||||
|
|
||||||
|
#define BACKLIGHT_PIN B5
|
||||||
|
#define CAPS_LOCK_LED_PIN B6
|
||||||
|
|
||||||
|
/* serial.c configuration for split keyboard */
|
||||||
|
#define SOFT_SERIAL_PIN D0
|
||||||
|
|
||||||
|
/* 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
|
||||||
|
|
||||||
|
/* ws2812 RGB LED */
|
||||||
|
#define RGB_DI_PIN E6
|
||||||
|
#define RGBLIGHT_ANIMATIONS
|
||||||
|
#define RGBLED_NUM 16 // Number of LEDs
|
||||||
|
#define RGBLED_SPLIT { 8, 8 }
|
||||||
|
#define RGBLIGHT_LED_MAP { 1, 2, 3, 12, 13, 14, 15, 0, 7, 6, 5, 4, 11, 10, 9, 8 }
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
#include "kbo5000.h"
|
||||||
|
#include "split_util.h"
|
||||||
|
|
||||||
|
void matrix_init_kb(void) {
|
||||||
|
setPinOutput(CAPS_LOCK_LED_PIN);
|
||||||
|
matrix_init_user();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool led_update_kb(led_t led_state) {
|
||||||
|
// Only update if left half
|
||||||
|
if (isLeftHand && led_update_user(led_state)) {
|
||||||
|
writePin(CAPS_LOCK_LED_PIN, !led_state.caps_lock);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void eeconfig_init_kb(void) {
|
||||||
|
#ifdef BACKLIGHT_ENABLE
|
||||||
|
backlight_enable();
|
||||||
|
backlight_level(3);
|
||||||
|
#endif
|
||||||
|
#ifdef RGBLIGHT_ENABLE
|
||||||
|
rgblight_enable(); // Enable RGB by default
|
||||||
|
rgblight_sethsv(0, 255, 255); // Set default HSV - red hue, full saturation, full brightness
|
||||||
|
#ifdef RGBLIGHT_ANIMATIONS
|
||||||
|
rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL + 2); // set to RGB_RAINBOW_SWIRL by default
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
eeconfig_update_kb(0);
|
||||||
|
eeconfig_init_user();
|
||||||
|
}
|
||||||
@@ -0,0 +1,73 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "kbo5000.h"
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
#define LAYOUT_ansi( \
|
||||||
|
LF1, LF4, LF5, LF6, LF7, LF8, LF9, RF1, RF2, RF4, RF5, RF6, RF7, RF8, RF9, RF10, \
|
||||||
|
LA1, LA3, LA4, LA5, LA6, LA7, LA8, LA9, RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, RA9, RA10, \
|
||||||
|
LB1, LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, RB9, RB10, \
|
||||||
|
LC1, LC3, LC4, LC5, LC6, LC7, LC8, RC1, RC2, RC3, RC4, RC5, RC6, RC8, RC9, RC10, \
|
||||||
|
LD1, LD3, LD5, LD6, LD7, LD8, LD9, RD1, RD2, RD3, RD4, RD5, RD7, RD9, \
|
||||||
|
LE1, LE3, LE4, LE5, LE6, LE7, LE8, RE1, RE2, RE3, RE4, RE7, RE8, RE9, RE10 \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{ LA1, KC_NO, LA3, LA4, LA5, LA6, LA7, LA8, LA9, KC_NO }, \
|
||||||
|
{ LB1, KC_NO, LB3, LB4, LB5, LB6, LB7, LB8, KC_NO, KC_NO }, \
|
||||||
|
{ LC1, KC_NO, LC3, LC4, LC5, LC6, LC7, LC8, KC_NO, KC_NO }, \
|
||||||
|
{ LD1, KC_NO, LD3, KC_NO, LD5, LD6, LD7, LD8, LD9, KC_NO }, \
|
||||||
|
{ LE1, KC_NO, LE3, LE4, LE5, LE6, LE7, LE8, KC_NO, KC_NO }, \
|
||||||
|
{ LF1, KC_NO, KC_NO, LF4, LF5, LF6, LF7, LF8, LF9, KC_NO }, \
|
||||||
|
{ RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, RA9, RA10 }, \
|
||||||
|
{ RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, RB9, RB10 }, \
|
||||||
|
{ RC1, RC2, RC3, RC4, RC5, RC6, KC_NO, RC8, RC9, RC10 }, \
|
||||||
|
{ RD1, RD2, RD3, RD4, RD5, KC_NO, RD7, KC_NO, RD9, KC_NO }, \
|
||||||
|
{ RE1, RE2, RE3, RE4, KC_NO, KC_NO, RE7, RE8, RE9, RE10 }, \
|
||||||
|
{ RF1, RF2, KC_NO, RF4, RF5, RF6, RF7, RF8, RF9, RF10 } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_iso( \
|
||||||
|
LF1, LF4, LF5, LF6, LF7, LF8, LF9, RF1, RF2, RF4, RF5, RF6, RF7, RF8, RF9, RF10, \
|
||||||
|
LA1, LA3, LA4, LA5, LA6, LA7, LA8, LA9, RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, RA9, RA10, \
|
||||||
|
LB1, LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB9, RB10, \
|
||||||
|
LC1, LC3, LC4, LC5, LC6, LC7, LC8, RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, RC9, RC10, \
|
||||||
|
LD1, LD3, LD4, LD5, LD6, LD7, LD8, LD9, RD1, RD2, RD3, RD4, RD5, RD7, RD9, \
|
||||||
|
LE1, LE3, LE4, LE5, LE6, LE7, LE8, RE1, RE2, RE3, RE4, RE7, RE8, RE9, RE10 \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{ LA1, KC_NO, LA3, LA4, LA5, LA6, LA7, LA8, LA9, KC_NO }, \
|
||||||
|
{ LB1, KC_NO, LB3, LB4, LB5, LB6, LB7, LB8, KC_NO, KC_NO }, \
|
||||||
|
{ LC1, KC_NO, LC3, LC4, LC5, LC6, LC7, LC8, KC_NO, KC_NO }, \
|
||||||
|
{ LD1, KC_NO, LD3, LD4, LD5, LD6, LD7, LD8, LD9, KC_NO }, \
|
||||||
|
{ LE1, KC_NO, LE3, LE4, LE5, LE6, LE7, LE8, KC_NO, KC_NO }, \
|
||||||
|
{ LF1, KC_NO, KC_NO, LF4, LF5, LF6, LF7, LF8, LF9, KC_NO }, \
|
||||||
|
{ RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, RA9, RA10 }, \
|
||||||
|
{ RB1, RB2, RB3, RB4, RB5, RB6, RB7, KC_NO, RB9, RB10 }, \
|
||||||
|
{ RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, RC9, RC10 }, \
|
||||||
|
{ RD1, RD2, RD3, RD4, RD5, KC_NO, RD7, KC_NO, RD9, KC_NO }, \
|
||||||
|
{ RE1, RE2, RE3, RE4, KC_NO, KC_NO, RE7, RE8, RE9, RE10 }, \
|
||||||
|
{ RF1, RF2, KC_NO, RF4, RF5, RF6, RF7, RF8, RF9, RF10 } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_all( \
|
||||||
|
LF1, LF4, LF5, LF6, LF7, LF8, LF9, RF1, RF2, RF4, RF5, RF6, RF7, RF8, RF9, RF10, \
|
||||||
|
LA1, LA3, LA4, LA5, LA6, LA7, LA8, LA9, RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, RA9, RA10, \
|
||||||
|
LB1, LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, RB9, RB10, \
|
||||||
|
LC1, LC3, LC4, LC5, LC6, LC7, LC8, RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, RC9, RC10, \
|
||||||
|
LD1, LD3, LD4, LD5, LD6, LD7, LD8, LD9, RD1, RD2, RD3, RD4, RD5, RD7, RD9, \
|
||||||
|
LE1, LE3, LE4, LE5, LE6, LE7, LE8, RE1, RE2, RE3, RE4, RE7, RE8, RE9, RE10 \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{ LA1, KC_NO, LA3, LA4, LA5, LA6, LA7, LA8, LA9, KC_NO }, \
|
||||||
|
{ LB1, KC_NO, LB3, LB4, LB5, LB6, LB7, LB8, KC_NO, KC_NO }, \
|
||||||
|
{ LC1, KC_NO, LC3, LC4, LC5, LC6, LC7, LC8, KC_NO, KC_NO }, \
|
||||||
|
{ LD1, KC_NO, LD3, LD4, LD5, LD6, LD7, LD8, LD9, KC_NO }, \
|
||||||
|
{ LE1, KC_NO, LE3, LE4, LE5, LE6, LE7, LE8, KC_NO, KC_NO }, \
|
||||||
|
{ LF1, KC_NO, KC_NO, LF4, LF5, LF6, LF7, LF8, LF9, KC_NO }, \
|
||||||
|
{ RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, RA9, RA10 }, \
|
||||||
|
{ RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, RB9, RB10 }, \
|
||||||
|
{ RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, RC9, RC10 }, \
|
||||||
|
{ RD1, RD2, RD3, RD4, RD5, KC_NO, RD7, KC_NO, RD9, KC_NO }, \
|
||||||
|
{ RE1, RE2, RE3, RE4, KC_NO, KC_NO, RE7, RE8, RE9, RE10 }, \
|
||||||
|
{ RF1, RF2, KC_NO, RF4, RF5, RF6, RF7, RF8, RF9, RF10 } \
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
BACKLIGHT_ENABLE = yes
|
||||||
|
RGBLIGHT_ENABLE = yes
|
||||||
|
ENCODER_ENABLE = yes
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
# 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 = atmel-dfu
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = lite # 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 = no # 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 = yes # 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 = yes # Enable WS2812 RGB underlight.
|
||||||
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
LTO_ENABLE = yes
|
||||||
|
SPLIT_KEYBOARD = yes
|
||||||
|
|
||||||
|
DEFAULT_FOLDER = keebio/kbo5000/rev1
|
||||||
@@ -1,25 +1,25 @@
|
|||||||
{
|
{
|
||||||
"keyboard_name": "wazowski",
|
"keyboard_name": "wazowski",
|
||||||
"url": "",
|
"url": "https://www.keebz.net/shop/wazoski-pcb",
|
||||||
"maintainer": "keebzdotnet",
|
"maintainer": "keebzdotnet",
|
||||||
"width": 9,
|
"width": 9,
|
||||||
"height": 5,
|
"height": 5,
|
||||||
"layouts": {
|
"layouts": {
|
||||||
"LAYOUT": {
|
"LAYOUT": {
|
||||||
"layout": [
|
"layout": [
|
||||||
{"label":"k00", "x":0, "y":3},
|
{"label":"k01", "x":1, "y":1},
|
||||||
{"label":"k01", "x":1, "y":0},
|
|
||||||
{"label":"k02", "x":1, "y":4},
|
|
||||||
{"label":"k03", "x":2, "y":3},
|
|
||||||
{"label":"k04", "x":3, "y":2},
|
{"label":"k04", "x":3, "y":2},
|
||||||
{"label":"k05", "x":3, "y":4},
|
|
||||||
{"label":"k06", "x":4, "y":2},
|
{"label":"k06", "x":4, "y":2},
|
||||||
{"label":"k07", "x":4, "y":3},
|
|
||||||
{"label":"k08", "x":5, "y":2},
|
{"label":"k08", "x":5, "y":2},
|
||||||
|
{"label":"k12", "x":7, "y":3},
|
||||||
|
{"label":"k00", "x":0, "y":3},
|
||||||
|
{"label":"k03", "x":2, "y":3},
|
||||||
|
{"label":"k07", "x":4, "y":3},
|
||||||
{"label":"k09", "x":5, "y":3},
|
{"label":"k09", "x":5, "y":3},
|
||||||
{"label":"k10", "x":6, "y":2},
|
{"label":"k10", "x":6, "y":2},
|
||||||
|
{"label":"k02", "x":1, "y":4},
|
||||||
|
{"label":"k05", "x":3, "y":4},
|
||||||
{"label":"k11", "x":7, "y":1},
|
{"label":"k11", "x":7, "y":1},
|
||||||
{"label":"k12", "x":7, "y":3},
|
|
||||||
{"label":"k13", "x":8, "y":2}
|
{"label":"k13", "x":8, "y":2}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,30 @@
|
|||||||
|
## Greetings, Traveler!
|
||||||
|
|
||||||
|
This layout is for the [Massdrop ALT Keyboard](https://drop.com/buy/massdrop-alt-mechanical-keyboard) and targets Windows machines.
|
||||||
|
|
||||||
|
This keymap is very similar to the default keymap for the Drop ALT, but it overloads the left alt key to behave like an additional 'Fn' key while keeping the functionality of the alt key intact.
|
||||||
|
|
||||||
|
### For example:
|
||||||
|
```
|
||||||
|
LeftAlt + 1...N -> F1...FN
|
||||||
|
LeftAlt + L/R Arrows -> Home/End
|
||||||
|
LeftAlt + Home -> End
|
||||||
|
LeftAlt + Backspace -> Delete
|
||||||
|
LeftAlt + Esc -> Backtick (`)
|
||||||
|
```
|
||||||
|
|
||||||
|
The novel part of this keymap is that it **preserves the default functionality** of the left alt key, so ```'alt + tab', 'ctrl + alt + del', 'alt + f4'```, etc. all work as expected without using any janky timers.
|
||||||
|
|
||||||
|
Everything also works with other modifier keys, so ```'alt + L/R' and 'alt + shift + L/R'``` work great for text manipulation to select lines.
|
||||||
|
|
||||||
|
This **'super alt'** keymap will feel very familiar for anyone **coming from macOS** since the Windows alt key is in the same position as CMD on macOS keyboards.
|
||||||
|
|
||||||
|
And finally, the original alt key functionality can be toggled at any time by pressing **```'Fn + period'```** so even if you don't like it, you can turn it off.
|
||||||
|
|
||||||
|
This keymap was based on the 'default' Drop ALT keymap (and _not_ 'default_md') which means it supports all the fancy QMK RGB patterns, and isn't limited to the stock options that come with the board.
|
||||||
|
|
||||||
|
It's also worth noting that this keymap fixes an outstanding issue where the caps lock LED flickers when the RGB mode is keylight or underglow. I could not find a general purpose fix, but the one included here works quite well.
|
||||||
|
|
||||||
|
If you have any questions, feel free to reach out to me at: ewersp [at] gmail [dot] com.
|
||||||
|
|
||||||
|
Enjoy! **<3**
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#define FORCE_NKRO
|
||||||
@@ -0,0 +1,196 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
enum alt_keycodes {
|
||||||
|
U_T_AUTO = SAFE_RANGE, //USB Extra Port Toggle Auto Detect / Always Active
|
||||||
|
U_T_AGCR, //USB Toggle Automatic GCR control
|
||||||
|
DBG_TOG, //DEBUG Toggle On / Off
|
||||||
|
DBG_MTRX, //DEBUG Toggle Matrix Prints
|
||||||
|
DBG_KBD, //DEBUG Toggle Keyboard Prints
|
||||||
|
DBG_MOU, //DEBUG Toggle Mouse Prints
|
||||||
|
MD_BOOT, //Restart into bootloader after hold timeout
|
||||||
|
ALT_DEL, //Added to map left alt + backspace to delete
|
||||||
|
};
|
||||||
|
|
||||||
|
// Friendly layer names
|
||||||
|
enum alt_layers {
|
||||||
|
DEF = 0,
|
||||||
|
ALT,
|
||||||
|
FUNC,
|
||||||
|
SUPR
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[DEF] = LAYOUT_65_ansi_blocker(
|
||||||
|
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME,
|
||||||
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
|
||||||
|
KC_LCTL, KC_LGUI, MO(SUPR), KC_SPC, KC_RALT, MO(FUNC),KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
|
),
|
||||||
|
[ALT] = LAYOUT_65_ansi_blocker(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, KC_LALT, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
[FUNC] = LAYOUT_65_ansi_blocker(
|
||||||
|
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_MUTE,
|
||||||
|
_______, RGB_SPD, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, _______, U_T_AUTO,U_T_AGCR,_______, KC_PSCR, KC_SLCK, KC_PAUS, _______, KC_END,
|
||||||
|
_______, RGB_RMOD,RGB_VAD, RGB_MOD, RGB_HUD, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, KC_VOLU,
|
||||||
|
_______, RGB_TOG, _______, _______, _______, MD_BOOT, NK_TOGG, DBG_TOG, _______, TG(ALT), _______, _______, KC_PGUP, KC_VOLD,
|
||||||
|
_______, _______, KC_LALT, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
|
||||||
|
),
|
||||||
|
[SUPR] = LAYOUT_65_ansi_blocker(
|
||||||
|
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ALT_DEL, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, KC_HOME, _______, KC_END
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
// If the super alt layer is the active layer
|
||||||
|
bool super_alt_layer_active = false;
|
||||||
|
|
||||||
|
// If we need to unregister alt when leaving the super alt layer
|
||||||
|
bool need_to_unregister_alt = false;
|
||||||
|
|
||||||
|
#define MODS_SHIFT (get_mods() & MOD_BIT(KC_LSHIFT) || get_mods() & MOD_BIT(KC_RSHIFT))
|
||||||
|
#define MODS_CTRL (get_mods() & MOD_BIT(KC_LCTL) || get_mods() & MOD_BIT(KC_RCTRL))
|
||||||
|
#define MODS_ALT (get_mods() & MOD_BIT(KC_LALT) || get_mods() & MOD_BIT(KC_RALT))
|
||||||
|
|
||||||
|
// Taken from 'g_led_config' in config_led.c
|
||||||
|
#define CAPS_LOCK_LED_ID 30
|
||||||
|
|
||||||
|
// This runs every matrix scan (every 'frame')
|
||||||
|
void rgb_matrix_indicators_user(void) {
|
||||||
|
led_flags_t flags = rgb_matrix_get_flags();
|
||||||
|
|
||||||
|
// If we're in either keylight or underglow modes (but not both simultaneously)
|
||||||
|
if (HAS_FLAGS(flags, LED_FLAG_KEYLIGHT) != HAS_FLAGS(flags, LED_FLAG_UNDERGLOW)) {
|
||||||
|
|
||||||
|
// This fixes a bug where the caps lock LED flickers when toggled in either keylight or underglow modes
|
||||||
|
if (host_keyboard_leds() & (1 << USB_LED_CAPS_LOCK)) {
|
||||||
|
rgb_matrix_set_color(CAPS_LOCK_LED_ID, RGB_WHITE);
|
||||||
|
} else {
|
||||||
|
rgb_matrix_set_color(CAPS_LOCK_LED_ID, 0, 0, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// This runs code every time that the layers get changed
|
||||||
|
layer_state_t layer_state_set_user(layer_state_t state) {
|
||||||
|
switch (get_highest_layer(state)) {
|
||||||
|
case DEF:
|
||||||
|
// When returning to the default layer, check if we need to unregister the left alt key
|
||||||
|
if (super_alt_layer_active && need_to_unregister_alt) {
|
||||||
|
unregister_code(KC_LALT);
|
||||||
|
}
|
||||||
|
|
||||||
|
super_alt_layer_active = false;
|
||||||
|
need_to_unregister_alt = false;
|
||||||
|
break;
|
||||||
|
case SUPR:
|
||||||
|
super_alt_layer_active = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return state;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
static uint32_t key_timer;
|
||||||
|
|
||||||
|
switch (keycode) {
|
||||||
|
// These are the keys we want to 'fall though' and behave as usual when pressed with the alt modifier
|
||||||
|
case KC_A ... KC_Z:
|
||||||
|
case KC_TAB:
|
||||||
|
case KC_DEL:
|
||||||
|
case KC_UP:
|
||||||
|
case KC_DOWN:
|
||||||
|
case MO(FUNC):
|
||||||
|
if (super_alt_layer_active && record->event.pressed) {
|
||||||
|
// Only activate the alt modifier for the first key press
|
||||||
|
if ((get_mods() & MOD_BIT(KC_LALT)) == false) {
|
||||||
|
register_code(KC_LALT);
|
||||||
|
need_to_unregister_alt = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// We still want to process the keycode normally
|
||||||
|
return true;
|
||||||
|
case ALT_DEL:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
register_code(KC_DEL);
|
||||||
|
} else {
|
||||||
|
unregister_code(KC_DEL);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
case U_T_AUTO:
|
||||||
|
if (record->event.pressed && MODS_SHIFT && MODS_CTRL) {
|
||||||
|
TOGGLE_FLAG_AND_PRINT(usb_extra_manual, "USB extra port manual mode");
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
case U_T_AGCR:
|
||||||
|
if (record->event.pressed && MODS_SHIFT && MODS_CTRL) {
|
||||||
|
TOGGLE_FLAG_AND_PRINT(usb_gcr_auto, "USB GCR auto mode");
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
case DBG_TOG:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
TOGGLE_FLAG_AND_PRINT(debug_enable, "Debug mode");
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
case DBG_MTRX:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
TOGGLE_FLAG_AND_PRINT(debug_matrix, "Debug matrix");
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
case DBG_KBD:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
TOGGLE_FLAG_AND_PRINT(debug_keyboard, "Debug keyboard");
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
case DBG_MOU:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
TOGGLE_FLAG_AND_PRINT(debug_mouse, "Debug mouse");
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
case MD_BOOT:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
key_timer = timer_read32();
|
||||||
|
} else {
|
||||||
|
if (timer_elapsed32(key_timer) >= 500) {
|
||||||
|
reset_keyboard();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
case RGB_TOG:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
switch (rgb_matrix_get_flags()) {
|
||||||
|
case LED_FLAG_ALL: {
|
||||||
|
rgb_matrix_set_flags(LED_FLAG_KEYLIGHT);
|
||||||
|
rgb_matrix_set_color_all(0, 0, 0);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case LED_FLAG_KEYLIGHT: {
|
||||||
|
rgb_matrix_set_flags(LED_FLAG_UNDERGLOW);
|
||||||
|
rgb_matrix_set_color_all(0, 0, 0);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case LED_FLAG_UNDERGLOW: {
|
||||||
|
rgb_matrix_set_flags(LED_FLAG_NONE);
|
||||||
|
rgb_matrix_disable_noeeprom();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default: {
|
||||||
|
rgb_matrix_set_flags(LED_FLAG_ALL);
|
||||||
|
rgb_matrix_enable_noeeprom();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
default:
|
||||||
|
return true; // Process all other keycodes normally
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -15,13 +15,16 @@
|
|||||||
*/
|
*/
|
||||||
#include "268_2.h"
|
#include "268_2.h"
|
||||||
|
|
||||||
void led_set_kb(uint8_t usb_led) {
|
void matrix_init_kb(void) {
|
||||||
if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) {
|
// put your keyboard start-up code here
|
||||||
setPinOutput(B0);
|
// runs once when the firmware starts up
|
||||||
writePinHigh(B0);
|
setPinOutput(B0);
|
||||||
} else {
|
matrix_init_user();
|
||||||
setPinInput(B0);
|
}
|
||||||
|
|
||||||
|
bool led_update_kb(led_t led_state) {
|
||||||
|
if(led_update_user(led_state)) {
|
||||||
|
writePin(B0, led_state.caps_lock);
|
||||||
}
|
}
|
||||||
|
return true;
|
||||||
led_set_user(usb_led);
|
|
||||||
}
|
}
|
||||||
@@ -20,12 +20,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#include "config_common.h"
|
#include "config_common.h"
|
||||||
|
|
||||||
/* USB Device descriptor parameter */
|
/* USB Device descriptor parameter */
|
||||||
#define VENDOR_ID 0x4E58
|
#define VENDOR_ID 0x4E58 //"NX"
|
||||||
#define PRODUCT_ID 0x0044
|
#define PRODUCT_ID 0x010C //268
|
||||||
#define DEVICE_VER 0x0002
|
#define DEVICE_VER 0x0002
|
||||||
#define MANUFACTURER Noxary
|
#define MANUFACTURER Noxary
|
||||||
#define PRODUCT 268.2
|
#define PRODUCT 268.2
|
||||||
#define DESCRIPTION QMK keyboard firmware for 268.2
|
#define DESCRIPTION A fully customizable 65% keyboard.
|
||||||
|
|
||||||
/* key matrix size */
|
/* key matrix size */
|
||||||
#define MATRIX_ROWS 5
|
#define MATRIX_ROWS 5
|
||||||
@@ -57,34 +57,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
//define BACKLIGHT_BREATHING
|
//define BACKLIGHT_BREATHING
|
||||||
#define BACKLIGHT_LEVELS 3
|
#define BACKLIGHT_LEVELS 3
|
||||||
|
|
||||||
// #define RGB_DI_PIN E2
|
|
||||||
// #ifdef RGB_DI_PIN
|
|
||||||
// #define RGBLED_NUM 16
|
|
||||||
// #define RGBLIGHT_HUE_STEP 8
|
|
||||||
// #define RGBLIGHT_SAT_STEP 8
|
|
||||||
// #define RGBLIGHT_VAL_STEP 8
|
|
||||||
// #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
|
|
||||||
// #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
|
|
||||||
// /*== all animations enable ==*/
|
|
||||||
// #define RGBLIGHT_ANIMATIONS
|
|
||||||
// /*== or choose animations ==*/
|
|
||||||
// #define RGBLIGHT_EFFECT_BREATHING
|
|
||||||
// #define RGBLIGHT_EFFECT_RAINBOW_MOOD
|
|
||||||
// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
|
|
||||||
// #define RGBLIGHT_EFFECT_SNAKE
|
|
||||||
// #define RGBLIGHT_EFFECT_KNIGHT
|
|
||||||
// #define RGBLIGHT_EFFECT_CHRISTMAS
|
|
||||||
// #define RGBLIGHT_EFFECT_STATIC_GRADIENT
|
|
||||||
// #define RGBLIGHT_EFFECT_RGB_TEST
|
|
||||||
// #define RGBLIGHT_EFFECT_ALTERNATING
|
|
||||||
// /*== customize breathing effect ==*/
|
|
||||||
// /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
|
|
||||||
// #define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
|
|
||||||
// /*==== use exp() and sin() ====*/
|
|
||||||
// #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
|
|
||||||
// #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
|
|
||||||
// #endif
|
|
||||||
|
|
||||||
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||||
#define DEBOUNCE 5
|
#define DEBOUNCE 5
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,18 @@
|
|||||||
|
/* Copyright 2020 Rozakiin
|
||||||
|
*
|
||||||
|
* 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 QMK_KEYBOARD_H
|
||||||
|
|
||||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||||
@@ -6,7 +21,9 @@
|
|||||||
// entirely and just use numbers.
|
// entirely and just use numbers.
|
||||||
enum layer_names {
|
enum layer_names {
|
||||||
_BL,
|
_BL,
|
||||||
_FL
|
_FL1,
|
||||||
|
_FL2,
|
||||||
|
_FL3
|
||||||
};
|
};
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
@@ -28,10 +45,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
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_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_ENT, 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_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
|
||||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FL1), KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
),
|
),
|
||||||
|
/* Function Layer 1
|
||||||
/* Function Layer
|
|
||||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
|
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
|
||||||
* │ ` │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│ PScr │ │
|
* │ ` │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│ PScr │ │
|
||||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
|
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
|
||||||
@@ -44,11 +60,51 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* │ │ │ │ BL Toggle │ │ │ │ │Vl-│ │
|
* │ │ │ │ BL Toggle │ │ │ │ │Vl-│ │
|
||||||
* └────┴────┴────┴────────────────────────┴────┴────┴─┴───┴───┴───┘
|
* └────┴────┴────┴────────────────────────┴────┴────┴─┴───┴───┴───┘
|
||||||
*/
|
*/
|
||||||
[_FL] = LAYOUT_65_ansi_blocker(
|
[_FL1] = LAYOUT_65_ansi_blocker(
|
||||||
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, _______,
|
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_PSCR, _______,
|
||||||
_______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS,
|
_______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS,
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME,
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME,
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, BL_DEC, BL_INC, KC_MUTE, KC_VOLU, KC_END,
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, BL_DEC, BL_INC, KC_MUTE, KC_VOLU, KC_END,
|
||||||
_______, _______, _______, BL_TOGG, _______, _______, _______, KC_VOLD, _______
|
_______, _______, _______, BL_TOGG, _______, _______, _______, KC_VOLD, _______
|
||||||
)
|
),
|
||||||
|
/* Function Layer 2
|
||||||
|
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* └────┴────┴────┴────────────────────────┴────┴────┴─┴───┴───┴───┘
|
||||||
|
*/
|
||||||
|
[_FL2] = LAYOUT_65_ansi_blocker(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
/* Function Layer 3
|
||||||
|
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* └────┴────┴────┴────────────────────────┴────┴────┴─┴───┴───┴───┘
|
||||||
|
*/
|
||||||
|
[_FL3] = LAYOUT_65_ansi_blocker(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
};
|
};
|
||||||
@@ -1 +1,3 @@
|
|||||||
# The default keymap for 268_2
|
# The default keymap for 268.2
|
||||||
|
|
||||||
|

|
||||||
@@ -0,0 +1,110 @@
|
|||||||
|
/* Copyright 2020 Rozakiin
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
// 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_names {
|
||||||
|
_BL,
|
||||||
|
_FL1,
|
||||||
|
_FL2,
|
||||||
|
_FL3
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/* Base Layer
|
||||||
|
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
|
||||||
|
* │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Bspc │ ` │
|
||||||
|
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
|
||||||
|
* │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │Del│
|
||||||
|
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
|
||||||
|
* │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │PgU│
|
||||||
|
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
|
||||||
|
* │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │Shift │ ↑ │PgD│
|
||||||
|
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
|
||||||
|
* │Ctrl│Win │Alt │ Space │Alt │ Fn │ │ ← │ ↓ │ → │
|
||||||
|
* └────┴────┴────┴────────────────────────┴────┴────┴─┴───┴───┴───┘
|
||||||
|
*/
|
||||||
|
[_BL] = LAYOUT_65_ansi_blocker(
|
||||||
|
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV,
|
||||||
|
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_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, MO(_FL1), KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
|
),
|
||||||
|
/* Function Layer 1
|
||||||
|
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
|
||||||
|
* │ ` │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│ PScr │ │
|
||||||
|
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
|
||||||
|
* │ │ │ │ │RST│ │ │ │ │ │ │ │ │ │Ins│
|
||||||
|
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │Hom│
|
||||||
|
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │Bl-│Bl+│ Mute │Vl+│End│
|
||||||
|
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
|
||||||
|
* │ │ │ │ BL Toggle │ │ │ │ │Vl-│ │
|
||||||
|
* └────┴────┴────┴────────────────────────┴────┴────┴─┴───┴───┴───┘
|
||||||
|
*/
|
||||||
|
[_FL1] = LAYOUT_65_ansi_blocker(
|
||||||
|
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, _______,
|
||||||
|
_______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, BL_DEC, BL_INC, KC_MUTE, KC_VOLU, KC_END,
|
||||||
|
_______, _______, _______, BL_TOGG, _______, _______, _______, KC_VOLD, _______
|
||||||
|
),
|
||||||
|
/* Function Layer 2
|
||||||
|
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* └────┴────┴────┴────────────────────────┴────┴────┴─┴───┴───┴───┘
|
||||||
|
*/
|
||||||
|
[_FL2] = LAYOUT_65_ansi_blocker(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
/* Function Layer 3
|
||||||
|
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* └────┴────┴────┴────────────────────────┴────┴────┴─┴───┴───┴───┘
|
||||||
|
*/
|
||||||
|
[_FL3] = LAYOUT_65_ansi_blocker(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
};
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
# The VIA keymap for 268.2
|
||||||
|
|
||||||
|

|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
VIA_ENABLE = yes
|
||||||
|
MOUSEKEY_ENABLE = no
|
||||||
|
CONSOLE_ENABLE = no # Console for debug
|
||||||
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
|
LTO_ENABLE = yes
|
||||||
@@ -1,12 +1,12 @@
|
|||||||
# Noxary 268.2
|
# Noxary 268.2
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
A fully customizable 65% keyboard.
|
A fully customizable 65% keyboard.
|
||||||
|
|
||||||
Keyboard Maintainer: [Rozakiin](https://github.com/rozakiin)
|
* Keyboard Maintainer: [Rozakiin](https://github.com/rozakiin)
|
||||||
Hardware Supported: 268.2 PCB
|
* Hardware Supported: Noxary 268.2 PCB
|
||||||
Hardware Availability: [Noxary](https://shop.noxary.co/collections/268-2/products/noxary-268-2-polycarbonate)
|
* Hardware Availability: [Noxary](https://shop.noxary.co/collections/268-2/products/noxary-268-2-polycarbonate)
|
||||||
|
|
||||||
Make example for this keyboard (after setting up your build environment):
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ BOOTLOADER = atmel-dfu
|
|||||||
# Build Options
|
# Build Options
|
||||||
# change yes to no to disable
|
# change yes to no to disable
|
||||||
#
|
#
|
||||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
|
||||||
MOUSEKEY_ENABLE = no # Mouse keys
|
MOUSEKEY_ENABLE = no # Mouse keys
|
||||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
CONSOLE_ENABLE = no # Console for debug
|
CONSOLE_ENABLE = no # Console for debug
|
||||||
|
|||||||
@@ -20,12 +20,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#include "config_common.h"
|
#include "config_common.h"
|
||||||
|
|
||||||
/* USB Device descriptor parameter */
|
/* USB Device descriptor parameter */
|
||||||
#define VENDOR_ID 0x4E58
|
#define VENDOR_ID 0x4E58 //"NX"
|
||||||
#define PRODUCT_ID 0x0044
|
#define PRODUCT_ID 0x010C //268
|
||||||
#define DEVICE_VER 0x00F2
|
#define DEVICE_VER 0x0078 //"x"
|
||||||
#define MANUFACTURER Noxary
|
#define MANUFACTURER Noxary
|
||||||
#define PRODUCT x268
|
#define PRODUCT x268
|
||||||
#define DESCRIPTION QMK keyboard firmware for x268
|
#define DESCRIPTION A fully customizable RGB 65% keyboard.
|
||||||
|
|
||||||
/* key matrix size */
|
/* key matrix size */
|
||||||
#define MATRIX_ROWS 5
|
#define MATRIX_ROWS 5
|
||||||
|
|||||||
@@ -1,83 +1,111 @@
|
|||||||
|
/* Copyright 2020 Rozakiin
|
||||||
|
*
|
||||||
|
* 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 QMK_KEYBOARD_H
|
||||||
|
|
||||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
// 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.
|
// 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
|
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||||
// entirely and just use numbers.
|
// entirely and just use numbers.
|
||||||
#define _BL 0
|
enum layer_names {
|
||||||
#define _FL1 1
|
_BL,
|
||||||
#define _FL2 2
|
_FL1,
|
||||||
|
_FL2,
|
||||||
|
_FL3
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
/* _BL: Base Layer(Default) - For ISO enter use ANSI enter
|
/* Base Layer - For ISO enter use ANSI enter
|
||||||
* ,----------------------------------------------------------------.
|
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
|
||||||
* |Esc | 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \|BSpc| Grv|
|
* │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ \ │Bsp│ ` │
|
||||||
* |----------------------------------------------------------------|
|
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
|
||||||
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ | Del|
|
* │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │Del│
|
||||||
* |----------------------------------------------------------------|
|
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
|
||||||
* |CAPS | A| S| D| F| G| H| J| K| L| ;| '| #| Ent|PgUp|
|
* │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │Ent │PgU│
|
||||||
* |----------------------------------------------------------------|
|
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
|
||||||
* |Shift| \| Z| X| C| V| B| N| M| ,| .| /|Shift | Up|PgDn|
|
* │Sft │ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │Shift │ ↑ │PgD│
|
||||||
* |----------------------------------------------------------------|
|
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┼───┴┬──┴─┬─┴──┬───┼───┼───┤
|
||||||
* |Ctrl|Win |Alt | Space |Alt|Mo(1)|Ctrl|Lef|Dow|Rght|
|
* │Ctrl│Win │Alt │ Space │Alt │M(1)│Ctrl│ ← │ ↓ │ → │
|
||||||
* `----------------------------------------------------------------'
|
* └────┴────┴────┴─────────────────────┴────┴────┴────┴───┴───┴───┘
|
||||||
*/
|
*/
|
||||||
[_BL] = LAYOUT(
|
[_BL] = LAYOUT(
|
||||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC, KC_GRV,
|
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_BSPC, KC_GRV,
|
||||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_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_NUHS, KC_ENT, 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_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_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_LALT, MO(_FL1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, MO(_FL1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
/* _FL1: Function Layer 1 - For ISO enter use ANSI enter
|
),
|
||||||
* ,----------------------------------------------------------------.
|
/* Function Layer 1 - For ISO enter use ANSI enter
|
||||||
* | `|F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| |PScr| |
|
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
|
||||||
* |----------------------------------------------------------------|
|
* │ ` │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│ │Psc│ │
|
||||||
* | | | | |RST| | | | | | | | | | Ins|
|
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
|
||||||
* |----------------------------------------------------------------|
|
* │ │ │ │ │RST│ │ │ │ │ │ │ │ │ │Ins│
|
||||||
* | | | | | | | | | | | | | | |Home|
|
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
|
||||||
* |----------------------------------------------------------------|
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │Hme│
|
||||||
* | | | | | | | | | |Bl-|Bl+| |Mute|Vol+| End|
|
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
|
||||||
* |----------------------------------------------------------------|
|
* │ │ │ │ │ │ │ │ │ │Bl-│Bl+│ │ Mute │Vl+│End│
|
||||||
* | | | | BL_Toggle | | | | |Vol-| |
|
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┼───┴┬──┴─┬─┴──┬───┼───┼───┤
|
||||||
* `----------------------------------------------------------------'
|
* │ │ │ │ BL_Toggle │ │ │ │ │Vl-│ │
|
||||||
|
* └────┴────┴────┴─────────────────────┴────┴────┴────┴───┴───┴───┘
|
||||||
*/
|
*/
|
||||||
[_FL1] = LAYOUT(
|
[_FL1] = LAYOUT(
|
||||||
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_PSCR, _______,
|
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_PSCR, _______,
|
||||||
RGB_TOG, RGB_VAI, RGB_SAI, RGB_HUI, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS,
|
RGB_TOG, RGB_VAI, RGB_SAI, RGB_HUI, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS,
|
||||||
_______, RGB_VAD, RGB_SAD, RGB_HUD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME,
|
_______, RGB_VAD, RGB_SAD, RGB_HUD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME,
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, BL_DEC, BL_INC, _______, KC_MUTE, KC_VOLU, KC_END,
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, BL_DEC, BL_INC, _______, KC_MUTE, KC_VOLU, KC_END,
|
||||||
_______, _______, _______, BL_TOGG, _______, _______, _______, _______, KC_VOLD, _______),
|
_______, _______, _______, BL_TOGG, _______, _______, _______, _______, KC_VOLD, _______
|
||||||
/* _FL2: Function Layer 2 - For ISO enter use ANSI enter
|
),
|
||||||
* ,----------------------------------------------------------------.
|
/* Function Layer 2 - For ISO enter use ANSI enter
|
||||||
* | | | | | | | | | | | | | | | | |
|
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
|
||||||
* |----------------------------------------------------------------|
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
* | | | | | | | | | | | | | | | |
|
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
|
||||||
* |----------------------------------------------------------------|
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
* | | | | | | | | | | | | | | | |
|
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
|
||||||
* |----------------------------------------------------------------|
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
* | | | | | | | | | | | | | | | |
|
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
|
||||||
* |----------------------------------------------------------------|
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
* | | | | | | | | | | |
|
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┼───┴┬──┴─┬─┴──┬───┼───┼───┤
|
||||||
* `----------------------------------------------------------------'
|
* │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* └────┴────┴────┴─────────────────────┴────┴────┴────┴───┴───┴───┘
|
||||||
*/
|
*/
|
||||||
[_FL2] = LAYOUT(
|
[_FL2] = LAYOUT(
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
/* Function Layer 3 - For ISO enter use ANSI enter
|
||||||
};
|
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
|
||||||
void matrix_init_user(void) {
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
}
|
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
void matrix_scan_user(void) {
|
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
|
||||||
}
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┼───┴┬──┴─┬─┴──┬───┼───┼───┤
|
||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
* │ │ │ │ │ │ │ │ │ │ │
|
||||||
return true;
|
* └────┴────┴────┴─────────────────────┴────┴────┴────┴───┴───┴───┘
|
||||||
}
|
*/
|
||||||
|
[_FL3] = LAYOUT(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
};
|
||||||
@@ -1 +1,3 @@
|
|||||||
# The default keymap for x268
|
# The default keymap for x268
|
||||||
|
|
||||||
|

|
||||||
@@ -0,0 +1,111 @@
|
|||||||
|
/* Copyright 2020 Rozakiin
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
// 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_names {
|
||||||
|
_BL,
|
||||||
|
_FL1,
|
||||||
|
_FL2,
|
||||||
|
_FL3
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/* Base Layer - For ISO enter use ANSI enter
|
||||||
|
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
|
||||||
|
* │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ \ │Bsp│ ` │
|
||||||
|
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
|
||||||
|
* │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │Del│
|
||||||
|
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
|
||||||
|
* │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │Ent │PgU│
|
||||||
|
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
|
||||||
|
* │Sft │ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │Shift │ ↑ │PgD│
|
||||||
|
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┼───┴┬──┴─┬─┴──┬───┼───┼───┤
|
||||||
|
* │Ctrl│Win │Alt │ Space │Alt │M(1)│Ctrl│ ← │ ↓ │ → │
|
||||||
|
* └────┴────┴────┴─────────────────────┴────┴────┴────┴───┴───┴───┘
|
||||||
|
*/
|
||||||
|
[_BL] = LAYOUT(
|
||||||
|
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC, KC_GRV,
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_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_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_LALT, MO(_FL1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
|
),
|
||||||
|
/* Function Layer 1 - For ISO enter use ANSI enter
|
||||||
|
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
|
||||||
|
* │ ` │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│ │Psc│ │
|
||||||
|
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
|
||||||
|
* │ │ │ │ │RST│ │ │ │ │ │ │ │ │ │Ins│
|
||||||
|
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │Hme│
|
||||||
|
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │Bl-│Bl+│ │ Mute │Vl+│End│
|
||||||
|
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┼───┴┬──┴─┬─┴──┬───┼───┼───┤
|
||||||
|
* │ │ │ │ BL_Toggle │ │ │ │ │Vl-│ │
|
||||||
|
* └────┴────┴────┴─────────────────────┴────┴────┴────┴───┴───┴───┘
|
||||||
|
*/
|
||||||
|
[_FL1] = LAYOUT(
|
||||||
|
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_PSCR, _______,
|
||||||
|
RGB_TOG, RGB_VAI, RGB_SAI, RGB_HUI, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS,
|
||||||
|
_______, RGB_VAD, RGB_SAD, RGB_HUD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, BL_DEC, BL_INC, _______, KC_MUTE, KC_VOLU, KC_END,
|
||||||
|
_______, _______, _______, BL_TOGG, _______, _______, _______, _______, KC_VOLD, _______
|
||||||
|
),
|
||||||
|
/* Function Layer 2 - For ISO enter use ANSI enter
|
||||||
|
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┼───┴┬──┴─┬─┴──┬───┼───┼───┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* └────┴────┴────┴─────────────────────┴────┴────┴────┴───┴───┴───┘
|
||||||
|
*/
|
||||||
|
[_FL2] = LAYOUT(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
/* Function Layer 3 - For ISO enter use ANSI enter
|
||||||
|
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┼───┴┬──┴─┬─┴──┬───┼───┼───┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* └────┴────┴────┴─────────────────────┴────┴────┴────┴───┴───┴───┘
|
||||||
|
*/
|
||||||
|
[_FL3] = LAYOUT(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
};
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
# The VIA keymap for x268
|
||||||
|
|
||||||
|

|
||||||
Loaded 100 of 129 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user