Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
559ef21563 | ||
|
|
64263bbb02 | ||
|
|
8af1501328 | ||
|
|
25aaeb4f40 | ||
|
|
36d913e1b1 | ||
|
|
250a99ff1b | ||
|
|
c329a0ec8e | ||
|
|
26a823082b | ||
|
|
80e73b6210 | ||
|
|
b359830ea2 | ||
|
|
c32d085710 | ||
|
|
a14339e752 | ||
|
|
cfbb848e03 | ||
|
|
12baca1295 | ||
|
|
4edc8fc3c7 | ||
|
|
e5501d4815 | ||
|
|
46e2b6e43d | ||
|
|
9aedb620c5 | ||
|
|
7494490d6d | ||
|
|
7066164591 | ||
|
|
0e2ff9b384 | ||
|
|
376419a4f7 | ||
|
|
05b479d349 | ||
|
|
52c18ef026 | ||
|
|
d478095756 | ||
|
|
adf4acf596 | ||
|
|
3f696664d6 | ||
|
|
e4c257fb01 | ||
|
|
593bfc86a1 | ||
|
|
d23e81b1f0 |
No files matched your search
@@ -82,6 +82,13 @@ ifeq ($(strip $(BOOTLOADER)), USBasp)
|
|||||||
OPT_DEFS += -DBOOTLOADER_USBASP
|
OPT_DEFS += -DBOOTLOADER_USBASP
|
||||||
BOOTLOADER_SIZE = 4096
|
BOOTLOADER_SIZE = 4096
|
||||||
endif
|
endif
|
||||||
|
ifeq ($(strip $(BOOTLOADER)), lufa-ms)
|
||||||
|
# DO NOT USE THIS BOOTLOADER IN NEW PROJECTS!
|
||||||
|
# It is extremely prone to bricking, and is only included to support existing boards.
|
||||||
|
OPT_DEFS += -DBOOTLOADER_MS
|
||||||
|
BOOTLOADER_SIZE = 6144
|
||||||
|
FIRMWARE_FORMAT = bin
|
||||||
|
endif
|
||||||
|
|
||||||
ifdef BOOTLOADER_SIZE
|
ifdef BOOTLOADER_SIZE
|
||||||
OPT_DEFS += -DBOOTLOADER_SIZE=$(strip $(BOOTLOADER_SIZE))
|
OPT_DEFS += -DBOOTLOADER_SIZE=$(strip $(BOOTLOADER_SIZE))
|
||||||
|
|||||||
+11
-11
@@ -1,4 +1,4 @@
|
|||||||
# ARM Debugging usign Eclipse
|
# ARM Debugging using Eclipse
|
||||||
|
|
||||||
This page describes how to setup debugging for ARM MCUs using an SWD adapter and open-source/free tools. In this guide we will install GNU MCU Eclipse IDE for C/C++ Developers and OpenOCD together with all the necessary dependencies.
|
This page describes how to setup debugging for ARM MCUs using an SWD adapter and open-source/free tools. In this guide we will install GNU MCU Eclipse IDE for C/C++ Developers and OpenOCD together with all the necessary dependencies.
|
||||||
|
|
||||||
@@ -18,7 +18,7 @@ XPM installation instructions can be found [here](https://www.npmjs.com/package/
|
|||||||
|
|
||||||
### The ARM Toolchain
|
### The ARM Toolchain
|
||||||
|
|
||||||
Using XPM it is very easy to install the ARM toolchain. Enter the command `xpm install --global @gnu-mcu-eclipse/arm-none-eabi-gcc`.
|
Using XPM it is very easy to install the ARM toolchain. Enter the command `xpm install --global @xpack-dev-tools/arm-none-eabi-gcc`.
|
||||||
|
|
||||||
### Windows build tools
|
### Windows build tools
|
||||||
|
|
||||||
@@ -33,7 +33,7 @@ If you have an ST-Link the drivers can be found [here](https://www.st.com/en/dev
|
|||||||
|
|
||||||
### OpenOCD
|
### OpenOCD
|
||||||
|
|
||||||
This dependency allows SWD access from GDB and it is essential for debugging. Run `xpm install --global @gnu-mcu-eclipse/openocd`.
|
This dependency allows SWD access from GDB and it is essential for debugging. Run `xpm install --global @xpack-dev-tools/openocd`.
|
||||||
|
|
||||||
### Java
|
### Java
|
||||||
|
|
||||||
@@ -45,17 +45,17 @@ Now its finally time to install the IDE. Use the Release page [here](https://git
|
|||||||
|
|
||||||
## Configuring Eclipse
|
## Configuring Eclipse
|
||||||
|
|
||||||
Open up the Eclipse IDE we just downloaded. To import our QMK directory select File -> Import -> C/C++ -> Existing code as Makefile Project. Select next and use Browse to select your QMK folder. In the tool-chain list select ARM Cross GCC and select Finish.
|
Open up the Eclipse IDE we just downloaded. To import our QMK directory select File -> Import -> C/C++ -> Existing Code as Makefile Project. Select Next and use Browse to select your QMK folder. In the tool-chain list select ARM Cross GCC and select Finish.
|
||||||
|
|
||||||
Now you can see the QMK folder on the left hand side. Right click it and select Properties. On the left hand side, expand MCU and select ARM Toolchain Paths. Press xPack and OK. Repeat for OpenOCD Path and if you are on windows for Build Tool Path. Select Apply and Close.
|
Now you can see the QMK folder on the left hand side. Right click it and select Properties. On the left hand side, expand MCU and select ARM Toolchains Paths. Press xPack and OK. Repeat for OpenOCD Path and if you are on Windows for Build Tools Path. Select Apply and Close.
|
||||||
|
|
||||||
Now its time to install the necessary MCU packages. Go to Packs perspective by selecting Window -> Open Perspective -> Others -> Packs. Now select the yellow refresh symbol next to the Packs tab. This will take a long time as it is requesting the MCU definitions from various places. If some of the links fail you can probably select Ignore.
|
Now its time to install the necessary MCU packages. Go to Packs perspective by selecting Window -> Perspective -> Open Perspective -> Other... -> Packs. Now select the yellow refresh symbol next to the Packs tab. This will take a long time as it is requesting the MCU definitions from various places. If some of the links fail you can probably select Ignore.
|
||||||
|
|
||||||
When this finishes you must find the MCU which we will be building/debugging for. In this example I will be using the STM32F3 series MCUs. On the left, select STMicroelectonics -> STM32F3 Series. On the middle window we can see the pack. Right click and select Install. Once that is done we can go back to the default perspective, Window -> Open Perspective -> Others -> C/C++.
|
When this finishes you must find the MCU which we will be building/debugging for. In this example I will be using the STM32F3 series MCUs. On the left, select STMicroelectronics -> STM32F3 Series. On the middle window we can see the pack. Right click and select Install. Once that is done we can go back to the default perspective, Window -> Perspective -> Open Perspective -> Other... -> C/C++.
|
||||||
|
|
||||||
We need to let eclipse know the device we intent to build QMK on. Right click on the QMK folder -> Properties -> C/C++ Build -> Settings. Select the Devices tab and under devices select the appropriate variant of your MCU. For my example it is STM32F303CC
|
We need to let eclipse know the device we intent to build QMK on. Right click on the QMK folder -> Properties -> C/C++ Build -> Settings. Select the Devices tab and under Devices select the appropriate variant of your MCU. For my example it is STM32F303CC
|
||||||
|
|
||||||
While we are here let's setup the build command as well. Select C/C++ Build and then the Behavior tab. On the build command, replace `all` with your necessary make command. For example for a rev6 Planck with the default keymap this would be `planck/rev6:default`. Select Apply and Close.
|
While we are here let's setup the build command as well. Select C/C++ Build and then the Behavior tab. On the Build command, replace `all` with your necessary make command. For example for a rev6 Planck with the default keymap this would be `planck/rev6:default`. Select Apply and Close.
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
|
||||||
@@ -71,7 +71,7 @@ NOTE: Make sure the SWCLK and SWDIO pins are not used in the matrix of your keyb
|
|||||||
|
|
||||||
### Configuring the Debugger
|
### Configuring the Debugger
|
||||||
|
|
||||||
Right click on your QMK folder, select Debug As -> Debug Configuration. Here double click on GDB OpenOCD Debugging. Select the debugger tab and enter the configuration necessary for your MCU. This might take some fiddling and googleing to find out. The default script for the STM32F3 is called stm32f3discovery.cfg. To let OpenOCD know, in the Config options enter `-f board/stm32f3discovery.cfg`.
|
Right click on your QMK folder, select Debug As -> Debug Configurations... . Here double click on GDB OpenOCD Debugging. Select the Debugger tab and enter the configuration necessary for your MCU. This might take some fiddling and Googling to find out. The default script for the STM32F3 is called `stm32f3discovery.cfg`. To let OpenOCD know, in the Config options enter `-f board/stm32f3discovery.cfg`.
|
||||||
|
|
||||||
NOTE: In my case this configuration script requires editing to disable the reset assertion. The locations of the scripts can be found in the actual executable field usually under the path `openocd/version/.content/scripts/board`. Here I edited `reset_config srst_only` to `reset_config none`.
|
NOTE: In my case this configuration script requires editing to disable the reset assertion. The locations of the scripts can be found in the actual executable field usually under the path `openocd/version/.content/scripts/board`. Here I edited `reset_config srst_only` to `reset_config none`.
|
||||||
|
|
||||||
@@ -81,7 +81,7 @@ Select Apply and Close.
|
|||||||
|
|
||||||
Reset your keyboard.
|
Reset your keyboard.
|
||||||
|
|
||||||
Press the bug icon and if all goes well you should soon find yourself in the debug perspective. Here the program counter will pause at the beginning of the main function and way for you to press Play. Most of the features of all debuggers work on ARM MCUs but for exact details google is your friend!
|
Press the bug icon and if all goes well you should soon find yourself in the Debug perspective. Here the program counter will pause at the beginning of the main function and wait for you to press Play. Most of the features of all debuggers work on Arm MCUs but for exact details Google is your friend!
|
||||||
|
|
||||||
|
|
||||||
Happy debugging!
|
Happy debugging!
|
||||||
@@ -16,17 +16,23 @@ Faites attention à sélectionner "HTTPS", et sélectionnez le lien et copiez-le
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
Ensuite, entrez `git clone` dans la ligne de commande, et collez votre lien:
|
Ensuite, entrez `git clone --recurse-submodules ` dans la ligne de commande, et collez votre lien:
|
||||||
|
|
||||||
```
|
```
|
||||||
user@computer:~$ git clone https://github.com/whoeveryouare/qmk_firmware.git
|
user@computer:~$ git clone --recurse-submodules https://github.com/whoeveryouare/qmk_firmware.git
|
||||||
Cloning into 'qmk_firmware'...
|
Cloning into 'qmk_firmware'...
|
||||||
remote: Counting objects: 46625, done.
|
remote: Enumerating objects: 9, done.
|
||||||
remote: Compressing objects: 100% (2/2), done.
|
remote: Counting objects: 100% (9/9), done.
|
||||||
remote: Total 46625 (delta 0), reused 0 (delta 0), pack-reused 46623
|
remote: Compressing objects: 100% (5/5), done.
|
||||||
Receiving objects: 100% (46625/46625), 84.47 MiB | 3.14 MiB/s, done.
|
remote: Total 183883 (delta 5), reused 4 (delta 4), pack-reused 183874
|
||||||
Resolving deltas: 100% (29362/29362), done.
|
Receiving objects: 100% (183883/183883), 132.90 MiB | 9.57 MiB/s, done.
|
||||||
Checking out files: 100% (2799/2799), done.
|
Resolving deltas: 100% (119972/119972), done.
|
||||||
|
...
|
||||||
|
Submodule path 'lib/chibios': checked out '587968d6cbc2b0e1c7147540872f2a67e59ca18b'
|
||||||
|
Submodule path 'lib/chibios-contrib': checked out 'ede48346eee4b8d6847c19bc01420bee76a5e486'
|
||||||
|
Submodule path 'lib/googletest': checked out 'ec44c6c1675c25b9827aacd08c02433cccde7780'
|
||||||
|
Submodule path 'lib/lufa': checked out 'ce10f7642b0459e409839b23cc91498945119b4d'
|
||||||
|
Submodule path 'lib/ugfx': checked out '3e97b74e03c93631cdd3ddb2ce43b963fdce19b2'
|
||||||
```
|
```
|
||||||
|
|
||||||
Vous avez maintenant votre fork QMK sur votre machine locale, vous pouvez ajouter votre keymap, la compiler et la flasher sur votre board. Une fois heureux avec vos changements, vous pouvez les ajouter, commit, et pousser vers votre fork comme suit:
|
Vous avez maintenant votre fork QMK sur votre machine locale, vous pouvez ajouter votre keymap, la compiler et la flasher sur votre board. Une fois heureux avec vos changements, vous pouvez les ajouter, commit, et pousser vers votre fork comme suit:
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ Le but de cette page est d'expliquer les informations de base qui vous serons n
|
|||||||
|
|
||||||
## Structure de base de QMK
|
## Structure de base de QMK
|
||||||
|
|
||||||
QMK est un fork du projet [tmk_keyboard](https://github.com/tmk/tmk_keyboard) créé par [Jun Wako](https://github.com/tmk). Le code originel de TMK, avec quelques modifications, se trouve dans le dossier `tmk`. Les additions que QMK amène au projet se trouvent dans le dossier `quantum`. Les projets de clavier se trouvent dans les dossiers `handwired` et `keyboard`.
|
QMK est un fork du projet [tmk_keyboard](https://github.com/tmk/tmk_keyboard) créé par [Jun Wako](https://github.com/tmk). Le code originel de TMK, avec quelques modifications, se trouve dans le dossier `tmk_core`. Les additions que QMK amène au projet se trouvent dans le dossier `quantum`. Les projets de clavier se trouvent dans les dossiers `handwired` et `keyboard`.
|
||||||
|
|
||||||
### Structure du Userspace
|
### Structure du Userspace
|
||||||
|
|
||||||
|
|||||||
@@ -16,17 +16,23 @@ And be sure to select "HTTPS", and select the link and copy it:
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
From here, enter `git clone ` into the command line, and then paste your link:
|
From here, enter `git clone --recurse-submodules ` into the command line, and then paste your link:
|
||||||
|
|
||||||
```
|
```
|
||||||
user@computer:~$ git clone --recurse-submodules https://github.com/whoeveryouare/qmk_firmware.git
|
user@computer:~$ git clone --recurse-submodules https://github.com/whoeveryouare/qmk_firmware.git
|
||||||
Cloning into 'qmk_firmware'...
|
Cloning into 'qmk_firmware'...
|
||||||
remote: Counting objects: 46625, done.
|
remote: Enumerating objects: 9, done.
|
||||||
remote: Compressing objects: 100% (2/2), done.
|
remote: Counting objects: 100% (9/9), done.
|
||||||
remote: Total 46625 (delta 0), reused 0 (delta 0), pack-reused 46623
|
remote: Compressing objects: 100% (5/5), done.
|
||||||
Receiving objects: 100% (46625/46625), 84.47 MiB | 3.14 MiB/s, done.
|
remote: Total 183883 (delta 5), reused 4 (delta 4), pack-reused 183874
|
||||||
Resolving deltas: 100% (29362/29362), done.
|
Receiving objects: 100% (183883/183883), 132.90 MiB | 9.57 MiB/s, done.
|
||||||
Checking out files: 100% (2799/2799), done.
|
Resolving deltas: 100% (119972/119972), done.
|
||||||
|
...
|
||||||
|
Submodule path 'lib/chibios': checked out '587968d6cbc2b0e1c7147540872f2a67e59ca18b'
|
||||||
|
Submodule path 'lib/chibios-contrib': checked out 'ede48346eee4b8d6847c19bc01420bee76a5e486'
|
||||||
|
Submodule path 'lib/googletest': checked out 'ec44c6c1675c25b9827aacd08c02433cccde7780'
|
||||||
|
Submodule path 'lib/lufa': checked out 'ce10f7642b0459e409839b23cc91498945119b4d'
|
||||||
|
Submodule path 'lib/ugfx': checked out '3e97b74e03c93631cdd3ddb2ce43b963fdce19b2'
|
||||||
```
|
```
|
||||||
|
|
||||||
You now have your QMK fork on your local machine, and you can add your keymap, compile it and flash it to your board. Once you're happy with your changes, you can add, commit, and push them to your fork like this:
|
You now have your QMK fork on your local machine, and you can add your keymap, compile it and flash it to your board. Once you're happy with your changes, you can add, commit, and push them to your fork like this:
|
||||||
|
|||||||
@@ -17,19 +17,25 @@ Github עלול להיות קצת טריקי למי שלא מכיר את העב
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
מכאן והלאה, הקיש `git clone ` בשורת הפקודה והדביקו את הלינק שלכם:
|
מכאן והלאה, הקיש `git clone --recurse-submodules ` בשורת הפקודה והדביקו את הלינק שלכם:
|
||||||
|
|
||||||
<div dir="ltr" markdown="1">
|
<div dir="ltr" markdown="1">
|
||||||
|
|
||||||
```
|
```
|
||||||
user@computer:~$ git clone https://github.com/whoeveryouare/qmk_firmware.git
|
user@computer:~$ git clone --recurse-submodules https://github.com/whoeveryouare/qmk_firmware.git
|
||||||
Cloning into 'qmk_firmware'...
|
Cloning into 'qmk_firmware'...
|
||||||
remote: Counting objects: 46625, done.
|
remote: Enumerating objects: 9, done.
|
||||||
remote: Compressing objects: 100% (2/2), done.
|
remote: Counting objects: 100% (9/9), done.
|
||||||
remote: Total 46625 (delta 0), reused 0 (delta 0), pack-reused 46623
|
remote: Compressing objects: 100% (5/5), done.
|
||||||
Receiving objects: 100% (46625/46625), 84.47 MiB | 3.14 MiB/s, done.
|
remote: Total 183883 (delta 5), reused 4 (delta 4), pack-reused 183874
|
||||||
Resolving deltas: 100% (29362/29362), done.
|
Receiving objects: 100% (183883/183883), 132.90 MiB | 9.57 MiB/s, done.
|
||||||
Checking out files: 100% (2799/2799), done.
|
Resolving deltas: 100% (119972/119972), done.
|
||||||
|
...
|
||||||
|
Submodule path 'lib/chibios': checked out '587968d6cbc2b0e1c7147540872f2a67e59ca18b'
|
||||||
|
Submodule path 'lib/chibios-contrib': checked out 'ede48346eee4b8d6847c19bc01420bee76a5e486'
|
||||||
|
Submodule path 'lib/googletest': checked out 'ec44c6c1675c25b9827aacd08c02433cccde7780'
|
||||||
|
Submodule path 'lib/lufa': checked out 'ce10f7642b0459e409839b23cc91498945119b4d'
|
||||||
|
Submodule path 'lib/ugfx': checked out '3e97b74e03c93631cdd3ddb2ce43b963fdce19b2'
|
||||||
```
|
```
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
@@ -66,4 +72,4 @@ To https://github.com/whoeveryouare/qmk_firmware.git
|
|||||||

|

|
||||||
|
|
||||||
אחרי שהגשתם, אנו עלולים לפנות אליכם לגבי השינויים שהצעתם, נבקש שתבצעו שינויים ובסופו של דבר נקבל את השינויים! תודה שתרמתם לפרוייקט QMK :)
|
אחרי שהגשתם, אנו עלולים לפנות אליכם לגבי השינויים שהצעתם, נבקש שתבצעו שינויים ובסופו של דבר נקבל את השינויים! תודה שתרמתם לפרוייקט QMK :)
|
||||||
</div>
|
</div>
|
||||||
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
## מבנה QMK בסיסי
|
## מבנה QMK בסיסי
|
||||||
|
|
||||||
QMK הוא פורק של הפרוייקט [tmk_keyboard](https://github.com/tmk/tmk_keyboard) של [Jun Wako](https://github.com/tmk). קוד הTMK המקורי, עם התאמות, יכול להמצא בתיקיית `tmk`. התוספות של QMK לפרוייקט יכולות להמצא בתיקיית `quantum`. פרוייקטי מקלדות יכולות להמצא בתיקיות `handwired` ו- `keyboard`.
|
QMK הוא פורק של הפרוייקט [tmk_keyboard](https://github.com/tmk/tmk_keyboard) של [Jun Wako](https://github.com/tmk). קוד הTMK המקורי, עם התאמות, יכול להמצא בתיקיית `tmk_core`. התוספות של QMK לפרוייקט יכולות להמצא בתיקיית `quantum`. פרוייקטי מקלדות יכולות להמצא בתיקיות `handwired` ו- `keyboard`.
|
||||||
|
|
||||||
### מבנה אחסון המשתמש
|
### מבנה אחסון המשתמש
|
||||||
|
|
||||||
@@ -69,4 +69,4 @@ In every keymap folder, the following files may be found. Only `keymap.c` is req
|
|||||||
```
|
```
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
+4
-1
@@ -3,7 +3,10 @@
|
|||||||
* [初めてのファームウェアの構築](ja/newbs_building_firmware.md)
|
* [初めてのファームウェアの構築](ja/newbs_building_firmware.md)
|
||||||
* [ファームウェアのフラッシュ](ja/newbs_flashing.md)
|
* [ファームウェアのフラッシュ](ja/newbs_flashing.md)
|
||||||
* [テストとデバッグ](ja/newbs_testing_debugging.md)
|
* [テストとデバッグ](ja/newbs_testing_debugging.md)
|
||||||
* [Gitのベストプラクティス](ja/newbs_best_practices.md)
|
* [QMK における Git 運用作法](ja/newbs_git_best_practices.md)
|
||||||
|
* [あなたのフォークの master ブランチ](ja/newbs_git_using_your_master_branch.md)
|
||||||
|
* [マージの競合の解決](ja/newbs_git_resolving_merge_conflicts.md)
|
||||||
|
* [同期のとれていない git ブランチの再同期](ja/newbs_git_resynchronize_a_branch.md)
|
||||||
* [学習リソース](ja/newbs_learn_more_resources.md)
|
* [学習リソース](ja/newbs_learn_more_resources.md)
|
||||||
|
|
||||||
* [QMKの基本](ja/README.md)
|
* [QMKの基本](ja/README.md)
|
||||||
|
|||||||
+10
-10
@@ -23,7 +23,7 @@ XPM のインストール手順は[ここ](https://www.npmjs.com/package/xpm)で
|
|||||||
|
|
||||||
### ARM ツールチェーン
|
### ARM ツールチェーン
|
||||||
|
|
||||||
XPM を使うと、ARM ツールチェーンをとても簡単にインストールできます。`xpm install --global @gnu-mcu-eclipse/arm-none-eabi-gcc` とコマンドを入力します。
|
XPM を使うと、ARM ツールチェーンをとても簡単にインストールできます。`xpm install --global @xpack-dev-tools/arm-none-eabi-gcc` とコマンドを入力します。
|
||||||
|
|
||||||
### Windows ビルドツール
|
### Windows ビルドツール
|
||||||
|
|
||||||
@@ -38,7 +38,7 @@ ST-Link を持っている場合は、ドライバは[ここ](https://www.st.com
|
|||||||
|
|
||||||
### OpenOCD
|
### OpenOCD
|
||||||
|
|
||||||
この依存関係により、SWD は GDB からアクセスでき、デバッグに不可欠です。`xpm install --global @gnu-mcu-eclipse/openocd` を実行します。
|
この依存関係により、SWD は GDB からアクセスでき、デバッグに不可欠です。`xpm install --global @xpack-dev-tools/openocd` を実行します。
|
||||||
|
|
||||||
### Java
|
### Java
|
||||||
|
|
||||||
@@ -50,17 +50,17 @@ Java は Eclipse で必要とされるため、[ここ](https://www.oracle.com/t
|
|||||||
|
|
||||||
## Eclipse の設定
|
## Eclipse の設定
|
||||||
|
|
||||||
ダウンロードした Eclipse IDE を開きます。QMK ディレクトリをインポートするために、File -> Import -> C/C++ -> Existing code as Makefile Project を選択します。Next を選択し、Browse を使用して QMK フォルダを選択します。tool-chain リストから ARM Cross GCC を選択し、Finish を選択します。
|
ダウンロードした Eclipse IDE を開きます。QMK ディレクトリをインポートするために、File -> Import -> C/C++ -> Existing Code as Makefile Project を選択します。Next を選択し、Browse を使用して QMK フォルダを選択します。tool-chain リストから ARM Cross GCC を選択し、Finish を選択します。
|
||||||
|
|
||||||
これで、左側に QMK フォルダが表示されます。右クリックして、Properties を選択します。左側で MCU を展開し、ARM Toolchain Paths を選択します。xPack を押して OK を押します。OpenOCD Path で同じことを繰り返し、Windows の場合は、Build Tool Path でも同じことを繰り返します。Apply and Close を選択します。
|
これで、左側に QMK フォルダが表示されます。右クリックして、Properties を選択します。左側で MCU を展開し、ARM Toolchains Paths を選択します。xPack を押して OK を押します。OpenOCD Path で同じことを繰り返し、Windows の場合は、Build Tools Path でも同じことを繰り返します。Apply and Close を選択します。
|
||||||
|
|
||||||
ここで、必要な MCU パッケージをインストールします。Window -> Open Perspective -> Others -> Packs を選択して、Packs perspective に移動します。Packs タブの横にある黄色のリフレッシュ記号を選択します。これは様々な場所から MCU の定義を要求するため、時間が掛かります。一部のリンクが失敗した場合は、おそらく Ignore を選択できます。
|
ここで、必要な MCU パッケージをインストールします。Window -> Perspective -> Open Perspective -> Other... -> Packs を選択して、Packs perspective に移動します。Packs タブの横にある黄色のリフレッシュ記号を選択します。これは様々な場所から MCU の定義を要求するため、時間が掛かります。一部のリンクが失敗した場合は、おそらく Ignore を選択できます。
|
||||||
|
|
||||||
これが終了すると、ビルドやデバッグする MCU を見つけることができるはずです。この例では、STM32F3 シリーズの MCU を使います。左側で、STMicroelectronics -> STM32F3 Series を選択します。中央のウィンドウに、pack が表示されます。右クリックし、Install を選択します。それが終了したら、Window -> Open Perspective -> Others -> C/C++ を選択してデフォルトのパースペクティブに戻ることができます。
|
これが終了すると、ビルドやデバッグする MCU を見つけることができるはずです。この例では、STM32F3 シリーズの MCU を使います。左側で、STMicroelectronics -> STM32F3 Series を選択します。中央のウィンドウに、pack が表示されます。右クリックし、Install を選択します。それが終了したら、Window -> Perspective -> Open Perspective -> Other... -> C/C++ を選択してデフォルトのパースペクティブに戻ることができます。
|
||||||
|
|
||||||
Eclipse に QMK をビルドしようとするデバイスを教える必要があります。QMK フォルダを右クリック -> Properties -> C/C++ Build -> Settings を選択します。Devices タブを選択し、devices の下から MCU の適切な種類を選択します。私の例では、STM32F303CC です。
|
Eclipse に QMK をビルドしようとするデバイスを教える必要があります。QMK フォルダを右クリック -> Properties -> C/C++ Build -> Settings を選択します。Devices タブを選択し、Devices の下から MCU の適切な種類を選択します。私の例では、STM32F303CC です。
|
||||||
|
|
||||||
この間に、build コマンドもセットアップしましょう。C/C++ Build を選択し、Behavior タブを選択します。build コマンドのところで、`all` を必要な make コマンドに置き換えます。例えば、rev6 Planck の default キーマップの場合、これは `planck/rev6:default` になります。Apply and Close を選択します。
|
この間に、Build コマンドもセットアップしましょう。C/C++ Build を選択し、Behavior タブを選択します。build コマンドのところで、`all` を必要な make コマンドに置き換えます。例えば、rev6 Planck の default キーマップの場合、これは `planck/rev6:default` になります。Apply and Close を選択します。
|
||||||
|
|
||||||
## ビルド
|
## ビルド
|
||||||
|
|
||||||
@@ -76,7 +76,7 @@ ARM MCU は、クロック信号(SWCLK) とデータ信号(SWDIO) で構成さ
|
|||||||
|
|
||||||
### デバッガの設定
|
### デバッガの設定
|
||||||
|
|
||||||
QMK フォルダを右クリックし、Debug As -> Debug Configuration を選択します。ここで、GDB OpenOCD Debugging をダブルクリックします。Debugger タブを選択し、MCU に必要な設定を入力します。これを見つけるにはいじったりググったりする必要があるかもしれません。STM32F3 用のデフォルトスクリプトは stm32f3discovery.cfg と呼ばれます。OpenOCD に伝えるには、Config options で `-f board/stm32f3discovery.cfg` と入力します。
|
QMK フォルダを右クリックし、Debug As -> Debug Configurations... を選択します。ここで、GDB OpenOCD Debugging をダブルクリックします。Debugger タブを選択し、MCU に必要な設定を入力します。これを見つけるにはいじったりググったりする必要があるかもしれません。STM32F3 用のデフォルトスクリプトは stm32f3discovery.cfg と呼ばれます。OpenOCD に伝えるには、Config options で `-f board/stm32f3discovery.cfg` と入力します。
|
||||||
|
|
||||||
注意: 私の場合、この設定スクリプトはリセット操作を無効にするために編集が必要です。スクリプトの場所は、通常はパス `openocd/version/.content/scripts/board` の下の実際の実行可能フィールドの中で見つかります。ここで、私は `reset_config srst_only` を `reset_config none` に編集しました。
|
注意: 私の場合、この設定スクリプトはリセット操作を無効にするために編集が必要です。スクリプトの場所は、通常はパス `openocd/version/.content/scripts/board` の下の実際の実行可能フィールドの中で見つかります。ここで、私は `reset_config srst_only` を `reset_config none` に編集しました。
|
||||||
|
|
||||||
@@ -86,7 +86,7 @@ Apply and Close を選択します。
|
|||||||
|
|
||||||
キーボードをリセットしてください。
|
キーボードをリセットしてください。
|
||||||
|
|
||||||
虫アイコンをクリックし、もし全てうまく行けば debug パースペクティブに移動します。ここでは、main 関数の最初でプログラムカウンタが停止するので、Play ボタンを押します。全てのデバッガのほとんどの機能は ARM MCU で動作しますが、正確な詳細については google があなたのお友達です!
|
虫アイコンをクリックし、もし全てうまく行けば Debug パースペクティブに移動します。ここでは、main 関数の最初でプログラムカウンタが停止するので、Play ボタンを押します。全てのデバッガのほとんどの機能は ARM MCU で動作しますが、正確な詳細については google があなたのお友達です!
|
||||||
|
|
||||||
|
|
||||||
ハッピーデバッギング!
|
ハッピーデバッギング!
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
# 貢献方法
|
# 貢献方法
|
||||||
|
|
||||||
<!---
|
<!---
|
||||||
original document: d598f01cb:contributing.md
|
original document: d47809575:docs/contributing.md
|
||||||
git diff d598f01cb HEAD contributing.md | cat
|
git diff d47809575 HEAD docs/contributing.md | cat
|
||||||
-->
|
-->
|
||||||
|
|
||||||
👍🎉 まず、これを読み貢献する時間を作ってくれてありがとうございます!🎉👍
|
👍🎉 まず、これを読み貢献する時間を作ってくれてありがとうございます!🎉👍
|
||||||
@@ -90,7 +90,7 @@ kerpleplork はエラーコード 23 で連続的に失敗していました。
|
|||||||
|
|
||||||
ドキュメントは QMK への貢献を始める最も簡単な方法の1つです。ドキュメントが間違っているか不完全な場所を見つけ、これらを修正するのは簡単です!私たちもドキュメントを編集する人を非常に必要としています。編集するスキルがあるが、どこにどのように飛び乗ればいいのか分からない場合は、[助けをもとめて](#where-can-i-go-for-help)ください!
|
ドキュメントは QMK への貢献を始める最も簡単な方法の1つです。ドキュメントが間違っているか不完全な場所を見つけ、これらを修正するのは簡単です!私たちもドキュメントを編集する人を非常に必要としています。編集するスキルがあるが、どこにどのように飛び乗ればいいのか分からない場合は、[助けをもとめて](#where-can-i-go-for-help)ください!
|
||||||
|
|
||||||
全てのドキュメントは `qmk_firmware/docs` ディレクトリの中にあります。あるいは web ベースのワークフローを使いたい場合は、http://docs.qmk.fm/ の各ページの上部にある "Suggest An Edit" をクリックすることができます。
|
全てのドキュメントは `qmk_firmware/docs` ディレクトリの中にあります。あるいは web ベースのワークフローを使いたい場合は、https://docs.qmk.fm/ の各ページの下部にある "Edit this page" リンクをクリックすることができます。
|
||||||
|
|
||||||
ドキュメントの中にコードの例を提供する場合は、ドキュメント内の他の場所で使用されている命名規則を順守してください。例えば、一貫性を保つために、`my_layers` あるいは `my_keycodes` として列挙型を標準化します:
|
ドキュメントの中にコードの例を提供する場合は、ドキュメント内の他の場所で使用されている命名規則を順守してください。例えば、一貫性を保つために、`my_layers` あるいは `my_keycodes` として列挙型を標準化します:
|
||||||
|
|
||||||
|
|||||||
@@ -21,17 +21,23 @@ Github は慣れていない人には少し注意が必要です - このガイ
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
ここから、`git clone` をコマンドラインに入力し、リンクを貼り付けます:
|
ここから、`git clone --recurse-submodules ` をコマンドラインに入力し、リンクを貼り付けます:
|
||||||
|
|
||||||
```
|
```
|
||||||
user@computer:~$ git clone --recurse-submodules https://github.com/whoeveryouare/qmk_firmware.git
|
user@computer:~$ git clone --recurse-submodules https://github.com/whoeveryouare/qmk_firmware.git
|
||||||
Cloning into 'qmk_firmware'...
|
Cloning into 'qmk_firmware'...
|
||||||
remote: Counting objects: 46625, done.
|
remote: Enumerating objects: 9, done.
|
||||||
remote: Compressing objects: 100% (2/2), done.
|
remote: Counting objects: 100% (9/9), done.
|
||||||
remote: Total 46625 (delta 0), reused 0 (delta 0), pack-reused 46623
|
remote: Compressing objects: 100% (5/5), done.
|
||||||
Receiving objects: 100% (46625/46625), 84.47 MiB | 3.14 MiB/s, done.
|
remote: Total 183883 (delta 5), reused 4 (delta 4), pack-reused 183874
|
||||||
Resolving deltas: 100% (29362/29362), done.
|
Receiving objects: 100% (183883/183883), 132.90 MiB | 9.57 MiB/s, done.
|
||||||
Checking out files: 100% (2799/2799), done.
|
Resolving deltas: 100% (119972/119972), done.
|
||||||
|
...
|
||||||
|
Submodule path 'lib/chibios': checked out '587968d6cbc2b0e1c7147540872f2a67e59ca18b'
|
||||||
|
Submodule path 'lib/chibios-contrib': checked out 'ede48346eee4b8d6847c19bc01420bee76a5e486'
|
||||||
|
Submodule path 'lib/googletest': checked out 'ec44c6c1675c25b9827aacd08c02433cccde7780'
|
||||||
|
Submodule path 'lib/lufa': checked out 'ce10f7642b0459e409839b23cc91498945119b4d'
|
||||||
|
Submodule path 'lib/ugfx': checked out '3e97b74e03c93631cdd3ddb2ce43b963fdce19b2'
|
||||||
```
|
```
|
||||||
|
|
||||||
ローカルマシンに QMK のフォークができるので、キーマップの追加、コンパイル、キーボードへの書き込みができます。変更に満足したら、以下のようにそれらをフォークへ追加、コミットおよびプッシュすることができます:
|
ローカルマシンに QMK のフォークができるので、キーマップの追加、コンパイル、キーボードへの書き込みができます。変更に満足したら、以下のようにそれらをフォークへ追加、コミットおよびプッシュすることができます:
|
||||||
|
|||||||
+3
-3
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
<!---
|
<!---
|
||||||
grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh
|
grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh
|
||||||
original document: ed0575fc8:docs/newbs.md
|
original document: adf4acf59:docs/newbs.md
|
||||||
git diff ed0575fc8 HEAD docs/newbs.md | cat
|
git diff adf4acf59 HEAD docs/newbs.md | cat
|
||||||
-->
|
-->
|
||||||
|
|
||||||
QMK は、メカニカルキーボード用の強力なオープンソースファームウェアです。
|
QMK は、メカニカルキーボード用の強力なオープンソースファームウェアです。
|
||||||
@@ -24,7 +24,7 @@ QMK は[多くの趣味のキーボード](http://qmk.fm/keyboards/)をサポー
|
|||||||
* [オンライン GUI を使用して初めてのファームウェアを構築する](ja/newbs_building_firmware_configurator.md)
|
* [オンライン GUI を使用して初めてのファームウェアを構築する](ja/newbs_building_firmware_configurator.md)
|
||||||
* [ファームウェアを書きこむ](ja/newbs_flashing.md)
|
* [ファームウェアを書きこむ](ja/newbs_flashing.md)
|
||||||
* [テストとデバッグ](ja/newbs_testing_debugging.md)
|
* [テストとデバッグ](ja/newbs_testing_debugging.md)
|
||||||
* [QMK における Git 運用作法](ja/newbs_best_practices.md)
|
* [QMK における Git 運用作法](ja/newbs_git_best_practices.md)
|
||||||
* [さらに学ぶための学習リソース](ja/newbs_learn_more_resources.md)
|
* [さらに学ぶための学習リソース](ja/newbs_learn_more_resources.md)
|
||||||
|
|
||||||
このガイドは、これまでソフトウェアをコンパイルしたことがない人を支援することに特化しています。
|
このガイドは、これまでソフトウェアをコンパイルしたことがない人を支援することに特化しています。
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
# QMK における Git 運用作法 :id=best-git-practices-for-working-with-qmk
|
||||||
|
|
||||||
|
<!---
|
||||||
|
grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh
|
||||||
|
original document: adf4acf59:docs/newbs_git_best_practices.md
|
||||||
|
git diff adf4acf59 HEAD docs/newbs_git_best_practices.md | cat
|
||||||
|
-->
|
||||||
|
|
||||||
|
## または、"如何にして私は心配することをやめて Git を愛することを学んだか。"
|
||||||
|
|
||||||
|
このセクションは、QMK への貢献をスムーズに行なう最もよい方法を初心者に教えることを目的としています。
|
||||||
|
QMK に貢献するプロセスを順を追って説明し、この作業を簡単にするいくつかの方法を詳しく説明します。
|
||||||
|
その後、意図的に一部を壊してみせて、それらを修正する方法を説明します。
|
||||||
|
|
||||||
|
このセクションは以下のことを前提としています:
|
||||||
|
|
||||||
|
1. あなたは GitHub アカウントがあり、アカウントに [qmk_firmware リポジトリをフォーク](ja/getting_started_github.md) している。
|
||||||
|
2. あなたは、[環境構築](ja/newbs_getting_started.md#set-up-your-environment) と [QMK の設定](ja/newbs_getting_started.md#set-up-qmk) を両方とも完了している。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
- パート 1: [あなたのフォークの master ブランチ: 更新は頻繁に、コミットはしないこと](ja/newbs_git_using_your_master_branch.md)
|
||||||
|
- パート 2: [マージの競合の解決](ja/newbs_git_resolving_merge_conflicts.md)
|
||||||
|
- パート 3: [同期のとれていない git ブランチの再同期](ja/newbs_git_resynchronize_a_branch.md)
|
||||||
@@ -0,0 +1,94 @@
|
|||||||
|
# マージの競合の解決
|
||||||
|
|
||||||
|
<!---
|
||||||
|
grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh
|
||||||
|
original document: adf4acf59:docs/newbs_git_resolving_merge_conflicts.md
|
||||||
|
git diff adf4acf59 HEAD docs/newbs_git_resolving_merge_conflicts.md | cat
|
||||||
|
-->
|
||||||
|
|
||||||
|
ブランチでの作業の完了に時間がかかる場合、他の人が行った変更が、プルリクエストを開いたときにブランチに加えた変更と競合することがあります。
|
||||||
|
これは *マージの競合* と呼ばれ、複数の人が同じファイルの同じ部分を編集すると発生します。
|
||||||
|
|
||||||
|
?> このドキュメントは [あなたのフォークの master ブランチ: 更新は頻繁に、コミットはしないこと](ja/newbs_git_using_your_master_branch.md) で詳述されている概念に基づいています。
|
||||||
|
その概念に慣れていない場合は、まずそれを読んでから、ここに戻ってください。
|
||||||
|
|
||||||
|
## 変更のリベース
|
||||||
|
|
||||||
|
*リベース* は、コミット履歴のある時点で適用された変更を取得し、それらを元に戻し、次に同じ変更を別のポイントに適用する Git の方法です。
|
||||||
|
マージの競合が発生した場合、ブランチをリベースして、ブランチを作成してから現在までに行われた変更を取得できます。
|
||||||
|
|
||||||
|
開始するには、次を実行します:
|
||||||
|
|
||||||
|
```
|
||||||
|
git fetch upstream
|
||||||
|
git rev-list --left-right --count HEAD...upstream/master
|
||||||
|
```
|
||||||
|
|
||||||
|
ここに入力された `git rev-list` コマンドは、現在のブランチと QMK の master ブランチで異なるコミットの数を返します。
|
||||||
|
最初に `git fetch` を実行して、upstream リポジトリの現在の状態を表す refs があることを確認します。
|
||||||
|
入力された `git rev-list` コマンドの出力は2つの数値を返します:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ git rev-list --left-right --count HEAD...upstream/master
|
||||||
|
7 35
|
||||||
|
```
|
||||||
|
|
||||||
|
最初の数字は、現在のブランチが作成されてからのコミット数を表し、2番目の数字は、現在のブランチが作成されてから `upstream/master` に対して行われたコミットの数であり、したがって、現在のブランチに記録されていない変更です。
|
||||||
|
|
||||||
|
現在のブランチと upstream リポジトリの両方の現在の状態がわかったので、リベース操作を開始できます:
|
||||||
|
|
||||||
|
```
|
||||||
|
git rebase upstream/master
|
||||||
|
```
|
||||||
|
|
||||||
|
これにより、Git は現在のブランチのコミットを取り消してから、QMK の master ブランチに対してコミットを再適用します。
|
||||||
|
|
||||||
|
```
|
||||||
|
$ git rebase upstream/master
|
||||||
|
First, rewinding head to replay your work on top of it...
|
||||||
|
Applying: Commit #1
|
||||||
|
Using index info to reconstruct a base tree...
|
||||||
|
M conflicting_file_1.txt
|
||||||
|
Falling back to patching base and 3-way merge...
|
||||||
|
Auto-merging conflicting_file_1.txt
|
||||||
|
CONFLICT (content): Merge conflict in conflicting_file_1.txt
|
||||||
|
error: Failed to merge in the changes.
|
||||||
|
hint: Use 'git am --show-current-patch' to see the failed patch
|
||||||
|
Patch failed at 0001 Commit #1
|
||||||
|
|
||||||
|
Resolve all conflicts manually, mark them as resolved with
|
||||||
|
"git add/rm <conflicted_files>", then run "git rebase --continue".
|
||||||
|
You can instead skip this commit: run "git rebase --skip".
|
||||||
|
To abort and get back to the state before "git rebase", run "git rebase --abort".
|
||||||
|
```
|
||||||
|
|
||||||
|
これにより、マージの競合があることがわかり、競合のあるファイルの名前が示されます。
|
||||||
|
テキストエディタで競合するファイルを開くと、ファイルのどこかに次のような行があります:
|
||||||
|
|
||||||
|
```
|
||||||
|
<<<<<<< HEAD
|
||||||
|
<p>For help with any issues, email us at [email protected].</p>
|
||||||
|
=======
|
||||||
|
<p>Need help? Email [email protected].</p>
|
||||||
|
>>>>>>> Commit #1
|
||||||
|
```
|
||||||
|
|
||||||
|
行 `<<<<<<< HEAD` はマージ競合の始まりを示し、行 `>>>>>>> commit #1` は終了を示し、競合するセクションは `=======` で区切られます。
|
||||||
|
`HEAD` 側の部分はファイルの QMK master バージョンからのものであり、コミットメッセージでマークされた部分は現在のブランチとコミットからのものです。
|
||||||
|
|
||||||
|
Git はファイルの内容ではなく *ファイルへの変更* を直接追跡するため、Git がコミットの前にファイル内にあったテキストを見つけられない場合、ファイルの編集方法がわかりません。
|
||||||
|
ファイルを再編集して、競合を解決します。
|
||||||
|
変更を加えてから、ファイルを保存します。
|
||||||
|
|
||||||
|
```
|
||||||
|
<p>Need help? Email [email protected].</p>
|
||||||
|
```
|
||||||
|
|
||||||
|
そしてコマンド実行:
|
||||||
|
|
||||||
|
```
|
||||||
|
git add conflicting_file_1.txt
|
||||||
|
git rebase --continue
|
||||||
|
```
|
||||||
|
|
||||||
|
Git は、競合するファイルへの変更をログに記録し、ブランチのコミットが最後に達するまで適用し続けます。
|
||||||
@@ -0,0 +1,88 @@
|
|||||||
|
# 同期のとれていない git ブランチの再同期
|
||||||
|
|
||||||
|
<!---
|
||||||
|
grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh
|
||||||
|
original document: adf4acf59:docs/newbs_git_resynchronize_a_branch.md
|
||||||
|
git diff adf4acf59 HEAD docs/newbs_git_resynchronize_a_branch.md | cat
|
||||||
|
-->
|
||||||
|
|
||||||
|
仮にあなたの `master` ブランチにあなたのコミットを行い、そしてあなたの QMK リポジトリの更新が必要になったとします。
|
||||||
|
(フォーク元の) QMKの `master` ブランチをあなたの `master` ブランチに `git pull` することもできますが、GitHub は、あなたのブランチが `qmk:master` より何コミットか先行していると通知します、この状態で QMK にプルリクエストを行う場合、問題が発生する可能性があります。
|
||||||
|
(訳注:この通知は、GitHub のあなたのリポジトリの code ペインのブランチ選択メニューの下のあたりで `This branch is 3 commit ahead of qmk:master` という様な文面で表示されています。)
|
||||||
|
|
||||||
|
?> このドキュメントは [あなたのフォークの master ブランチ: 更新は頻繁に、コミットはしないこと](ja/newbs_git_using_your_master_branch.md) で詳述されている概念に基づいています。その概念に慣れていない場合は、まずそれを読んでから、ここに戻ってください。
|
||||||
|
(訳注:この文書で言う、「同期のとれていない git ブランチ」とは、master ブランチに関する、この「コミットしない」方針を逸脱して、QMK の master リポジトリに存在しないコミットがあなたのフォークの master ブランチに入っている状態を指します。)
|
||||||
|
|
||||||
|
## あなた自身の `master` ブランチでの変更のバックアップ(オプション)
|
||||||
|
|
||||||
|
救えるものなら自分の行った変更を失いたくはないでしょう。
|
||||||
|
あなたの `master` ブランチに既に加えた変更を保存したい場合、最も簡単な方法は、単に「ダーティな」`master` ブランチの複製を作成することです:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git branch old_master master
|
||||||
|
```
|
||||||
|
|
||||||
|
これで、 `master` ブランチの複製である `old_master` という名前のブランチができました。
|
||||||
|
|
||||||
|
## あなたのブランチの再同期
|
||||||
|
|
||||||
|
さあ、`master` ブランチを再同期します。
|
||||||
|
この手順では、QMK のリポジトリを git のリモートリポジトリとして設定する必要があります。
|
||||||
|
設定済みのリモートリポジトリを確認するには、`git remote -v` を実行し、次のような結果が返されなければなりません。
|
||||||
|
|
||||||
|
```sh
|
||||||
|
QMKuser ~/qmk_firmware (master)
|
||||||
|
$ git remote -v
|
||||||
|
origin https://github.com/<your_username>/qmk_firmware.git (fetch)
|
||||||
|
origin https://github.com/<your_username>/qmk_firmware.git (push)
|
||||||
|
upstream https://github.com/qmk/qmk_firmware.git (fetch)
|
||||||
|
upstream https://github.com/qmk/qmk_firmware.git (push)
|
||||||
|
```
|
||||||
|
|
||||||
|
もし、上記のようにならずに以下のように参照されるフォークが、1つだけ表示される場合:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
QMKuser ~/qmk_firmware (master)
|
||||||
|
$ git remote -v
|
||||||
|
origin https://github.com/qmk/qmk_firmware.git (fetch)
|
||||||
|
origin https://github.com/qmk/qmk_firmware.git (push)
|
||||||
|
```
|
||||||
|
|
||||||
|
新しいリモートリポジトリを追加します:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git remote add upstream https://github.com/qmk/qmk_firmware.git
|
||||||
|
```
|
||||||
|
|
||||||
|
次に、`origin` リモートリポジトリを、あなた自身のフォークにリダイレクトします:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git remote set-url origin https://github.com/<あなたのユーザ名>/qmk_firmware.git
|
||||||
|
```
|
||||||
|
|
||||||
|
両方のリモートリポジトリが設定されたので、次を実行して、QMK である `upstream` リポジトリの参照を更新する必要があります。
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git fetch upstream
|
||||||
|
```
|
||||||
|
|
||||||
|
この時点で、次を実行してあなたの(訳注:master)ブランチを QMK のブランチに再同期します。
|
||||||
|
(訳注: 今現在 `master` ブランチがチェックアウトされていなければなりません。
|
||||||
|
そうなってなければ、`git checkout master` を先に実行しておく必要があります。)
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git reset --hard upstream/master
|
||||||
|
```
|
||||||
|
|
||||||
|
これらの手順により、あなたのコンピュータ上のリポジトリが更新されますが、あなたの GitHub 上のフォークはまだ同期されていません。
|
||||||
|
GitHub 上のフォークを再同期するには、あなたのフォークにプッシュして、ローカルリポジトリに反映されていないリモート変更をオーバーライドするように Git に指示する必要があります。
|
||||||
|
これを行うには、次を実行します:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git push --force-with-lease
|
||||||
|
```
|
||||||
|
|
||||||
|
!> 他のユーザーがコミットを投稿するフォークで `git push --force-with-lease` を**実行しないでください**。これをすると、かれらのコミットが消去されてしまいます。
|
||||||
|
|
||||||
|
これで、あなたの GitHub フォーク、あなたのローカルファイル、および QMK のリポジトリはすべて同じになりました。
|
||||||
|
ここから、[ブランチを使って](ja/newbs_git_using_your_master_branch.md#making-changes)さらに必要な変更を加え、通常どおりそれらを投稿できます。
|
||||||
@@ -0,0 +1,101 @@
|
|||||||
|
# あなたのフォークの master ブランチ: 更新は頻繁に、コミットはしないこと
|
||||||
|
|
||||||
|
<!---
|
||||||
|
grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh
|
||||||
|
original document: adf4acf59:docs/newbs_git_using_your_master_branch.md
|
||||||
|
git diff adf4acf59 HEAD docs/newbs_git_using_your_master_branch.md | cat
|
||||||
|
-->
|
||||||
|
|
||||||
|
QMK の開発では、何がどこで行われているかにかかわらず、`master` ブランチを最新の状態に保つことを強くお勧めします、しかし `master` ブランチには***絶対に直接コミットしないでください***。
|
||||||
|
代わりに、あなたのすべての変更は開発ブランチで行い、あなたが開発する時にはそのブランチからプルリクエストを発行します。
|
||||||
|
|
||||||
|
マージの競合 — これは 2人以上のユーザーがファイルの同じ部分をそれぞれ異なる編集をして統合できなくなった状態 — の可能性を減らすため `master` ブランチをなるべく最新の状態に保ち、新しいブランチを作成して新しい開発を開始します。
|
||||||
|
|
||||||
|
## あなたの master ブランチを更新する
|
||||||
|
|
||||||
|
`master` ブランチを最新の状態に保つには、git のリモートリポジトリとして QMK ファームウェアのリポジトリ(以降、QMK リポジトリ)を追加することをお勧めします。
|
||||||
|
これを行うには、Git コマンドラインインターフェイスを開き、次のように入力します。
|
||||||
|
|
||||||
|
```
|
||||||
|
git remote add upstream https://github.com/qmk/qmk_firmware.git
|
||||||
|
```
|
||||||
|
|
||||||
|
?> `upstream`(訳注: `upstream` は`上流`という意味です)という名前は任意ですが、一般的な慣習です。
|
||||||
|
QMK のリモートリポジトリには、あなたにとって分かりやすい名前を付けることができます。
|
||||||
|
Git の `remote` コマンドは、構文 `git remote add <name> <url>` を使用します。
|
||||||
|
`<name>` はリモートリポジトリの省略形としてあなたが指定するものです。
|
||||||
|
この名前は、`fetch`、`pull`、`push` やそれ以外の多くの Git コマンドで、対象のリモートリポジトリを指定するために使用されます。
|
||||||
|
|
||||||
|
リポジトリが追加されたことを確認するには、`git remote -v` を実行します。
|
||||||
|
次のように表示されます。
|
||||||
|
|
||||||
|
```
|
||||||
|
$ git remote -v
|
||||||
|
origin https://github.com/<your_username>/qmk_firmware.git (fetch)
|
||||||
|
origin https://github.com/<your_username>/qmk_firmware.git (push)
|
||||||
|
upstream https://github.com/qmk/qmk_firmware.git (fetch)
|
||||||
|
upstream https://github.com/qmk/qmk_firmware.git (push)
|
||||||
|
```
|
||||||
|
|
||||||
|
これが完了すると、`git fetch upstream` を実行してリポジトリの更新を確認できます。
|
||||||
|
このコマンドは `upstream` というニックネームを持つ QMK リポジトリから、ブランチとタグ — "refs" と総称されます — を取得します。
|
||||||
|
これで、あなたのフォーク `origin` のデータを QMK が保持するデータと比較できます。
|
||||||
|
|
||||||
|
あなたのフォークの `master` を更新するには、次を実行します、各行の後にEnterキーを押してください:
|
||||||
|
|
||||||
|
```
|
||||||
|
git checkout master
|
||||||
|
git fetch upstream
|
||||||
|
git pull upstream master
|
||||||
|
git push origin master
|
||||||
|
```
|
||||||
|
|
||||||
|
これにより、あなたの `master` ブランチに切り替わり、QMK リポジトリから 'refs' を取得し、現在の QMK の `master` ブランチをコンピュータにダウンロードしてから、あなたのフォークにアップロードします。
|
||||||
|
|
||||||
|
## 変更を行なう :id=making-changes
|
||||||
|
|
||||||
|
変更するには、以下を入力して新しいブランチを作成します:
|
||||||
|
|
||||||
|
```
|
||||||
|
git checkout -b dev_branch
|
||||||
|
git push --set-upstream origin dev_branch
|
||||||
|
```
|
||||||
|
|
||||||
|
これにより、`dev_branch` という名前の新しいブランチが作成され、チェックアウトされ、新しいブランチがあなたのフォークに保存されます。
|
||||||
|
`--set-upstream` 引数は、このブランチから `git push` または `git pull` を使用するたびに、あなたのフォークと `dev_branch` ブランチを使用するように git に指示します。
|
||||||
|
この引数は最初のプッシュでのみ使用する必要があります。
|
||||||
|
その後、残りの引数なしで `git push` または `git pull` を安全に使用できます。
|
||||||
|
|
||||||
|
?> `git push` では、`-set-upstream` の代わりに `-u` を使用できます、 `-u` は `--set-upstream` のエイリアスです。
|
||||||
|
|
||||||
|
ブランチにはほぼ任意の名前を付けることができますが、あなたが行なう変更を表す名前を付けることをお勧めします。
|
||||||
|
|
||||||
|
デフォルトでは、`git checkout -b`は、今チェックアウトされているブランチに基づいて新しいブランチを作成します。
|
||||||
|
コマンド末尾に既存のブランチの名前を追加指定することにより、チェックアウトされていない既存のブランチを基にして新しいブランチを作成できます:
|
||||||
|
|
||||||
|
```
|
||||||
|
git checkout -b dev_branch master
|
||||||
|
```
|
||||||
|
|
||||||
|
これで開発ブランチができたのでテキストエディタを開き必要な変更を加えます。
|
||||||
|
ブランチに対して多くの小さなコミットを行うことをお勧めします。
|
||||||
|
そうすることで、問題を引き起こす変更をより簡単に特定し必要に応じて元に戻すことができます。
|
||||||
|
変更を加えるには、更新が必要なファイルを編集して保存し、Git の *ステージングエリア* に追加してから、ブランチにコミットします:
|
||||||
|
|
||||||
|
```
|
||||||
|
git add path/to/updated_file
|
||||||
|
git commit -m "My commit message."
|
||||||
|
```
|
||||||
|
|
||||||
|
`git add`は、変更されたファイルを Git の *ステージングエリア* に追加します。
|
||||||
|
これは、Git の「ロードゾーン」です。
|
||||||
|
これには、`git commit` によって *コミット* される変更が含まれており、リポジトリへの変更が保存されます。
|
||||||
|
変更内容が一目でわかるように、説明的なコミットメッセージを使用します。
|
||||||
|
|
||||||
|
?> 複数のファイルを変更した場合、`git add -- path/to/file1 path/to/file2 ...` を実行すれば、あなたの望むファイルを追加できます。
|
||||||
|
|
||||||
|
## 変更を公開する
|
||||||
|
|
||||||
|
最後のステップは、変更をフォークにプッシュすることです。
|
||||||
|
これを行うには、`git push`と入力します。
|
||||||
|
Gitは、 `dev_branch`の現在の状態をフォークに公開します。
|
||||||
@@ -14,13 +14,17 @@
|
|||||||
|
|
||||||
* [Great General Tutorial](https://www.codecademy.com/learn/learn-git)
|
* [Great General Tutorial](https://www.codecademy.com/learn/learn-git)
|
||||||
* [Git Game To Learn From Examples](https://learngitbranching.js.org/)
|
* [Git Game To Learn From Examples](https://learngitbranching.js.org/)
|
||||||
* [Git Resources to Learn More About Github](ja/getting_started_github.md)
|
* [Git Resources to Learn More About Github](getting_started_github.md)
|
||||||
* [Git Resources Aimed Specifically toward QMK](ja/contributing.md)
|
* [Git Resources Aimed Specifically toward QMK](contributing.md)
|
||||||
|
|
||||||
### 日本語
|
### 日本語
|
||||||
|
|
||||||
_日本語のリソース情報を募集中です。_
|
_日本語のリソース情報を募集中です。_
|
||||||
|
|
||||||
|
* [Git Game To Learn From Examples(日本語対応有り)](https://learngitbranching.js.org/)
|
||||||
|
* [QMK で Github を使う方法](ja/getting_started_github.md)
|
||||||
|
* [貢献方法](ja/contributing.md)
|
||||||
|
|
||||||
## コマンドラインに関するリソース:
|
## コマンドラインに関するリソース:
|
||||||
|
|
||||||
### 英語
|
### 英語
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Resynchronizing an Out-of-Sync Git Branch
|
# Resynchronizing an Out-of-Sync Git Branch
|
||||||
|
|
||||||
Suppose you have committed to your `master` branch, and now need to update your QMK repository. You could `git pull` QMK's `master` branch into your own, but GitHub will tell you that your commit is a number of commits ahead of `qmk:master`, which can create issues if you want to make a pull request to QMK.
|
Suppose you have committed to your `master` branch, and now need to update your QMK repository. You could `git pull` QMK's `master` branch into your own, but GitHub will tell you that your branch is a number of commits ahead of `qmk:master`, which can create issues if you want to make a pull request to QMK.
|
||||||
|
|
||||||
?> This document builds upon the concepts detailed in [Your Fork's Master: Update Often, Commit Never](newbs_git_using_your_master_branch.md). If you are not familiar with that document, please read it first, then return here.
|
?> This document builds upon the concepts detailed in [Your Fork's Master: Update Often, Commit Never](newbs_git_using_your_master_branch.md). If you are not familiar with that document, please read it first, then return here.
|
||||||
|
|
||||||
|
|||||||
@@ -15,17 +15,23 @@ GitHub может показаться несколько сложным для
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
Теперь введите `git clone` в командную строку, а затем вставьте ссылку:
|
Теперь введите `git clone --recurse-submodules ` в командную строку, а затем вставьте ссылку:
|
||||||
|
|
||||||
```
|
```
|
||||||
user@computer:~$ git clone https://github.com/whoeveryouare/qmk_firmware.git
|
user@computer:~$ git clone --recurse-submodules https://github.com/whoeveryouare/qmk_firmware.git
|
||||||
Cloning into 'qmk_firmware'...
|
Cloning into 'qmk_firmware'...
|
||||||
remote: Counting objects: 46625, done.
|
remote: Enumerating objects: 9, done.
|
||||||
remote: Compressing objects: 100% (2/2), done.
|
remote: Counting objects: 100% (9/9), done.
|
||||||
remote: Total 46625 (delta 0), reused 0 (delta 0), pack-reused 46623
|
remote: Compressing objects: 100% (5/5), done.
|
||||||
Receiving objects: 100% (46625/46625), 84.47 MiB | 3.14 MiB/s, done.
|
remote: Total 183883 (delta 5), reused 4 (delta 4), pack-reused 183874
|
||||||
Resolving deltas: 100% (29362/29362), done.
|
Receiving objects: 100% (183883/183883), 132.90 MiB | 9.57 MiB/s, done.
|
||||||
Checking out files: 100% (2799/2799), done.
|
Resolving deltas: 100% (119972/119972), done.
|
||||||
|
...
|
||||||
|
Submodule path 'lib/chibios': checked out '587968d6cbc2b0e1c7147540872f2a67e59ca18b'
|
||||||
|
Submodule path 'lib/chibios-contrib': checked out 'ede48346eee4b8d6847c19bc01420bee76a5e486'
|
||||||
|
Submodule path 'lib/googletest': checked out 'ec44c6c1675c25b9827aacd08c02433cccde7780'
|
||||||
|
Submodule path 'lib/lufa': checked out 'ce10f7642b0459e409839b23cc91498945119b4d'
|
||||||
|
Submodule path 'lib/ugfx': checked out '3e97b74e03c93631cdd3ddb2ce43b963fdce19b2'
|
||||||
```
|
```
|
||||||
|
|
||||||
Теперь у вас есть форк QMK на вашем локальном компьютере, и вы можете добавить свою раскладку, скомпилировать ее и прошить ей свою клавиатуру. Как только вы будете довольны своими изменениями, есть возможность добавить, зафиксировать их и сделать коммит в свой форк следующим образом:
|
Теперь у вас есть форк QMK на вашем локальном компьютере, и вы можете добавить свою раскладку, скомпилировать ее и прошить ей свою клавиатуру. Как только вы будете довольны своими изменениями, есть возможность добавить, зафиксировать их и сделать коммит в свой форк следующим образом:
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
## Базовая структура QMK
|
## Базовая структура QMK
|
||||||
|
|
||||||
QMK - это форк [Джуна Вако (Jun Wako)](https://github.com/tmk) проекта [tmk_keyboard](https://github.com/tmk/tmk_keyboard). Оригинальный код TMK с изменениями можно найти в папке `tmk`. Дополнения QMK к проекту можно найти в папке `quantum`. Проекты клавиатур можно найти в папках `handwired` и `keyboard`.
|
QMK - это форк [Джуна Вако (Jun Wako)](https://github.com/tmk) проекта [tmk_keyboard](https://github.com/tmk/tmk_keyboard). Оригинальный код TMK с изменениями можно найти в папке `tmk_core`. Дополнения QMK к проекту можно найти в папке `quantum`. Проекты клавиатур можно найти в папках `handwired` и `keyboard`.
|
||||||
|
|
||||||
### Структура пространства пользователя
|
### Структура пространства пользователя
|
||||||
|
|
||||||
|
|||||||
@@ -1,31 +1,31 @@
|
|||||||
# 如何定制你键盘的功能
|
# 如何定制你键盘的功能
|
||||||
|
|
||||||
对于很多人来说客制化键盘可不只是向你的电脑发送你按了那个件这么简单。你肯定想实现比简单按键和宏更复杂的功能。QMK有能让你注入代码的钩子, 覆盖功能, 另外,还可以自定义键盘在不同情况下的行为。
|
对于很多人来说客制化键盘可不只是向你的电脑发送你按了那个件这么简单。你肯定想实现比简单按键和宏更复杂的功能。QMK有能让你注入代码的钩子, 覆盖功能, 另外,还可以自定义键盘在不同情况下的行为。
|
||||||
|
|
||||||
本页不假定任何特殊的QMK知识,但阅读[理解QMK](understanding_qmk.md)将会在更基础的层面帮你理解发生了什么。
|
本页不假定任何特殊的QMK知识,但阅读[理解QMK](understanding_qmk.md)将会在更基础的层面帮你理解发生了什么。
|
||||||
|
|
||||||
## A Word on Core vs 键盘 vs 布局
|
## A Word on Core vs 键盘 vs 布局
|
||||||
|
|
||||||
我们把qmk组织成一个层次结构:
|
我们把qmk组织成一个层次结构:
|
||||||
|
|
||||||
* Core (`_quantum`)
|
* Core (`_quantum`)
|
||||||
* Keyboard/Revision (`_kb`)
|
* Keyboard/Revision (`_kb`)
|
||||||
* Keymap (`_user`)
|
* Keymap (`_user`)
|
||||||
|
|
||||||
下面描述的每一个函数都可以在定义上加一个`_kb()`或 `_user()` 后缀。 建议在键盘/修订层使用`_kb()`后缀,在布局层使用`_user()`后缀。
|
下面描述的每一个函数都可以在定义上加一个`_kb()`或 `_user()` 后缀。 建议在键盘/修订层使用`_kb()`后缀,在布局层使用`_user()`后缀。
|
||||||
|
|
||||||
在键盘/修订层定义函数时,`_kb()`在执行任何代码前先调用`_user()`是必要的,不然布局层函数就不要被调用。
|
在键盘/修订层定义函数时,`_kb()`在执行任何代码前先调用`_user()`是必要的,不然布局层函数就不要被调用。
|
||||||
<!-- 翻译问题:上面那句翻译的不太好-->
|
<!-- 翻译问题:上面那句翻译的不太好-->
|
||||||
# 自定义键码
|
# 自定义键码
|
||||||
|
|
||||||
到目前为止,最常见的任务是更改现有键码的行为或创建新的键码。从代码角度来看这些操作都很相似。
|
到目前为止,最常见的任务是更改现有键码的行为或创建新的键码。从代码角度来看这些操作都很相似。
|
||||||
|
|
||||||
## 定义一个新键码
|
## 定义一个新键码
|
||||||
|
|
||||||
创建键码第一步,先枚举出它全部,也就是给键码起个名字并分配唯一数值。QMK没有直接限制最大键码值大小,而是提供了一个`SAFE_RANGE`宏。你可以在枚举时用`SAFE_RANGE`来保证你取得了唯一的键码值。
|
创建键码第一步,先枚举出它全部,也就是给键码起个名字并分配唯一数值。QMK没有直接限制最大键码值大小,而是提供了一个`SAFE_RANGE`宏。你可以在枚举时用`SAFE_RANGE`来保证你取得了唯一的键码值。
|
||||||
|
|
||||||
|
|
||||||
这有枚举两个键码的例子。把这块加到`keymap.c`的话你就在布局中能用`FOO`和`BAR`了。
|
这有枚举两个键码的例子。把这块加到`keymap.c`的话你就在布局中能用`FOO`和`BAR`了。
|
||||||
|
|
||||||
```c
|
```c
|
||||||
enum my_keycodes {
|
enum my_keycodes {
|
||||||
@@ -34,46 +34,46 @@ enum my_keycodes {
|
|||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
## 为键码的行为编程
|
## 为键码的行为编程
|
||||||
|
|
||||||
当你覆盖一个已存在按键的行为时,或将这个行为赋给新键时,你要用`process_record_kb()`和`process_record_user()`函数。这俩函数在键处理中真实键事件被处理前被QMK调用。如果这俩函数返回`true`,QMK将会用正常的方式处理键码。这样可以很方便的扩展键码的功能而不是替换它。如果函数返回`false` QMK会跳过正常键处理,然后发送键子抬起还是按下事件就由你决定了。
|
当你覆盖一个已存在按键的行为时,或将这个行为赋给新键时,你要用`process_record_kb()`和`process_record_user()`函数。这俩函数在键处理中真实键事件被处理前被QMK调用。如果这俩函数返回`true`,QMK将会用正常的方式处理键码。这样可以很方便的扩展键码的功能而不是替换它。如果函数返回`false` QMK会跳过正常键处理,然后发送键子抬起还是按下事件就由你决定了。
|
||||||
|
|
||||||
当某个键按下或释放时这俩函数会被调用。
|
当某个键按下或释放时这俩函数会被调用。
|
||||||
|
|
||||||
### process_record_user()`函数示例实现
|
### process_record_user()`函数示例实现
|
||||||
|
|
||||||
这个例子做了两个事。自定义了一个叫做`FOO`的键码的行为,并补充了在按下回车时播放音符。
|
这个例子做了两个事。自定义了一个叫做`FOO`的键码的行为,并补充了在按下回车时播放音符。
|
||||||
|
|
||||||
```c
|
```c
|
||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
switch (keycode) {
|
switch (keycode) {
|
||||||
case FOO:
|
case FOO:
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
// 按下时做些什么
|
// 按下时做些什么
|
||||||
} else {
|
} else {
|
||||||
// 释放时做些什么
|
// 释放时做些什么
|
||||||
}
|
}
|
||||||
return false; // 跳过此键的所有进一步处理
|
return false; // 跳过此键的所有进一步处理
|
||||||
case KC_ENTER:
|
case KC_ENTER:
|
||||||
// 当按下回车时播放音符
|
// 当按下回车时播放音符
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
PLAY_NOTE_ARRAY(tone_qwerty);
|
PLAY_NOTE_ARRAY(tone_qwerty);
|
||||||
}
|
}
|
||||||
return true; // 让QMK触发回车按下/释放事件
|
return true; // 让QMK触发回车按下/释放事件
|
||||||
default:
|
default:
|
||||||
return true; // 正常处理其他键码
|
return true; // 正常处理其他键码
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### `process_record_*` 函数文档
|
### `process_record_*` 函数文档
|
||||||
|
|
||||||
* 键盘/修订: `bool process_record_kb(uint16_t keycode, keyrecord_t *record)`
|
* 键盘/修订: `bool process_record_kb(uint16_t keycode, keyrecord_t *record)`
|
||||||
* 布局: `bool process_record_user(uint16_t keycode, keyrecord_t *record)`
|
* 布局: `bool process_record_user(uint16_t keycode, keyrecord_t *record)`
|
||||||
|
|
||||||
`keycode(键码)`参数是在布局上定义的,比如`MO(1)`, `KC_L`, 等等。 你要用 `switch...case` 块来处理这些事件。
|
`keycode(键码)`参数是在布局上定义的,比如`MO(1)`, `KC_L`, 等等。 你要用 `switch...case` 块来处理这些事件。
|
||||||
|
|
||||||
`record`参数含有实际按键的信息:
|
`record`参数含有实际按键的信息:
|
||||||
|
|
||||||
```c
|
```c
|
||||||
keyrecord_t record {
|
keyrecord_t record {
|
||||||
@@ -88,9 +88,9 @@ keyrecord_t record {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
# LED控制
|
# LED控制
|
||||||
|
|
||||||
qmk提供了读取HID规范包含的5个LED的方法。:
|
qmk提供了读取HID规范包含的5个LED的方法。:
|
||||||
|
|
||||||
* `USB_LED_NUM_LOCK`
|
* `USB_LED_NUM_LOCK`
|
||||||
* `USB_LED_CAPS_LOCK`
|
* `USB_LED_CAPS_LOCK`
|
||||||
@@ -98,20 +98,20 @@ qmk
|
|||||||
* `USB_LED_COMPOSE`
|
* `USB_LED_COMPOSE`
|
||||||
* `USB_LED_KANA`
|
* `USB_LED_KANA`
|
||||||
|
|
||||||
这五个常量对应于主机LED状态的位置位。
|
这五个常量对应于主机LED状态的位置位。
|
||||||
有两种方法可以获得主机LED状态:
|
有两种方法可以获得主机LED状态:
|
||||||
|
|
||||||
* 通过执行 `led_set_user()`
|
* 通过执行 `led_set_user()`
|
||||||
* 通过调用 `host_keyboard_leds()`
|
* 通过调用 `host_keyboard_leds()`
|
||||||
|
|
||||||
## `led_set_user()`
|
## `led_set_user()`
|
||||||
|
|
||||||
当5个LED中任何一个的状态需要改变时,此函数将被调用。此函数通过参数输入LED参数。
|
当5个LED中任何一个的状态需要改变时,此函数将被调用。此函数通过参数输入LED参数。
|
||||||
使用`IS_LED_ON(usb_led, led_name)`和`IS_LED_OFF(usb_led, led_name)`这两个宏来检查LED状态。
|
使用`IS_LED_ON(usb_led, led_name)`和`IS_LED_OFF(usb_led, led_name)`这两个宏来检查LED状态。
|
||||||
|
|
||||||
!> `host_keyboard_leds()`可能会在`led_set_user()`被调用前返回新值。
|
!> `host_keyboard_leds()`可能会在`led_set_user()`被调用前返回新值。
|
||||||
|
|
||||||
### `led_set_user()`函数示例实现
|
### `led_set_user()`函数示例实现
|
||||||
|
|
||||||
```c
|
```c
|
||||||
void led_set_user(uint8_t usb_led) {
|
void led_set_user(uint8_t usb_led) {
|
||||||
@@ -143,59 +143,59 @@ void led_set_user(uint8_t usb_led) {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### `led_set_*`函数文档
|
### `led_set_*`函数文档
|
||||||
|
|
||||||
* 键盘/修订: `void led_set_kb(uint8_t usb_led)`
|
* 键盘/修订: `void led_set_kb(uint8_t usb_led)`
|
||||||
* 布局: `void led_set_user(uint8_t usb_led)`
|
* 布局: `void led_set_user(uint8_t usb_led)`
|
||||||
|
|
||||||
## `host_keyboard_leds()`
|
## `host_keyboard_leds()`
|
||||||
|
|
||||||
调用这个函数会返回最后收到的LED状态。这个函数在`led_set_*`之外读取LED状态时很有用,比如在[`matrix_scan_user()`](#矩阵扫描代码).
|
调用这个函数会返回最后收到的LED状态。这个函数在`led_set_*`之外读取LED状态时很有用,比如在[`matrix_scan_user()`](#矩阵扫描代码).
|
||||||
为了便捷,你可以用`IS_HOST_LED_ON(led_name)`和`IS_HOST_LED_OFF(led_name)` 宏,而不直接调用和检查`host_keyboard_leds()`。
|
为了便捷,你可以用`IS_HOST_LED_ON(led_name)`和`IS_HOST_LED_OFF(led_name)` 宏,而不直接调用和检查`host_keyboard_leds()`。
|
||||||
|
|
||||||
## 设置物理LED状态
|
## 设置物理LED状态
|
||||||
|
|
||||||
一些键盘实现了为设置物理LED的状态提供了方便的方法。
|
一些键盘实现了为设置物理LED的状态提供了方便的方法。
|
||||||
|
|
||||||
### Ergodox Boards
|
### Ergodox Boards
|
||||||
|
|
||||||
Ergodox实现了提供`ergodox_right_led_1`/`2`/`3_on`/`off()`来让每个LED开或关, 也可以用 `ergodox_right_led_on`/`off(uint8_t led)` 按索引打开或关闭他们。
|
Ergodox实现了提供`ergodox_right_led_1`/`2`/`3_on`/`off()`来让每个LED开或关, 也可以用 `ergodox_right_led_on`/`off(uint8_t led)` 按索引打开或关闭他们。
|
||||||
|
|
||||||
此外,还可以使用`ergodox_led_all_set(uint8_t n)`指定所有LED的亮度级别;针对每个LED用`ergodox_right_led_1`/`2`/`3_set(uint8_t n)`;使用索引的话用`ergodox_right_led_set(uint8_t led, uint8_t n)`。
|
此外,还可以使用`ergodox_led_all_set(uint8_t n)`指定所有LED的亮度级别;针对每个LED用`ergodox_right_led_1`/`2`/`3_set(uint8_t n)`;使用索引的话用`ergodox_right_led_set(uint8_t led, uint8_t n)`。
|
||||||
|
|
||||||
Ergodox boards 同时定义了最低亮度级别`LED_BRIGHTNESS_LO`和最高亮度级别`LED_BRIGHTNESS_HI`(默认最高).
|
Ergodox boards 同时定义了最低亮度级别`LED_BRIGHTNESS_LO`和最高亮度级别`LED_BRIGHTNESS_HI`(默认最高).
|
||||||
|
|
||||||
# 键盘初始化代码
|
# 键盘初始化代码
|
||||||
|
|
||||||
键盘初始化过程有几个步骤。你是用那个函数取决于你想要做什么。
|
键盘初始化过程有几个步骤。你是用那个函数取决于你想要做什么。
|
||||||
|
|
||||||
有三个主要初始化函数,按调用顺序列出。
|
有三个主要初始化函数,按调用顺序列出。
|
||||||
|
|
||||||
* `keyboard_pre_init_*` - 会在大多数其他东西运行前运行。适用于哪些需要提前运行的硬件初始化。
|
* `keyboard_pre_init_*` - 会在大多数其他东西运行前运行。适用于哪些需要提前运行的硬件初始化。
|
||||||
* `matrix_init_*` - 在固件启动过程中间被调用。此时硬件已初始化,功能尚未初始化。
|
* `matrix_init_*` - 在固件启动过程中间被调用。此时硬件已初始化,功能尚未初始化。
|
||||||
* `keyboard_post_init_*` - 在固件启动过程最后被调用。大多数情况下,你的“客制化”代码都可以放在这里。
|
* `keyboard_post_init_*` - 在固件启动过程最后被调用。大多数情况下,你的“客制化”代码都可以放在这里。
|
||||||
|
|
||||||
!> 对于大多数人来说`keyboard_post_init_user`是你想要调用的函数。例如, 此时你可以设置RGB灯发光。
|
!> 对于大多数人来说`keyboard_post_init_user`是你想要调用的函数。例如, 此时你可以设置RGB灯发光。
|
||||||
|
|
||||||
## 键盘预初始化代码
|
## 键盘预初始化代码
|
||||||
|
|
||||||
这代码极早运行,甚至都在USB初始化前运行。
|
这代码极早运行,甚至都在USB初始化前运行。
|
||||||
|
|
||||||
在这之后不久矩阵就被初始化了。
|
在这之后不久矩阵就被初始化了。
|
||||||
|
|
||||||
对于大多数用户来说,这用不到,因为它主要是用于面向硬件的初始化。
|
对于大多数用户来说,这用不到,因为它主要是用于面向硬件的初始化。
|
||||||
|
|
||||||
但如果你有硬件初始化的话放在这里再好不过了(比如初始化LED引脚一类的).
|
但如果你有硬件初始化的话放在这里再好不过了(比如初始化LED引脚一类的).
|
||||||
|
|
||||||
### `keyboard_pre_init_user()`函数示例实现
|
### `keyboard_pre_init_user()`函数示例实现
|
||||||
|
|
||||||
本例中在键盘级别,设定 B0, B1, B2, B3, 和 B4 是LED引脚。
|
本例中在键盘级别,设定 B0, B1, B2, B3, 和 B4 是LED引脚。
|
||||||
|
|
||||||
```c
|
```c
|
||||||
void keyboard_pre_init_user(void) {
|
void keyboard_pre_init_user(void) {
|
||||||
// 调用键盘预初始化代码
|
// 调用键盘预初始化代码
|
||||||
|
|
||||||
// 设置LED引脚为输出模式
|
// 设置LED引脚为输出模式
|
||||||
setPinOutput(B0);
|
setPinOutput(B0);
|
||||||
setPinOutput(B1);
|
setPinOutput(B1);
|
||||||
setPinOutput(B2);
|
setPinOutput(B2);
|
||||||
@@ -204,73 +204,73 @@ void keyboard_pre_init_user(void) {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### `keyboard_pre_init_*` 函数文档
|
### `keyboard_pre_init_*` 函数文档
|
||||||
|
|
||||||
* 键盘/修订: `void keyboard_pre_init_kb(void)`
|
* 键盘/修订: `void keyboard_pre_init_kb(void)`
|
||||||
* 布局: `void keyboard_pre_init_user(void)`
|
* 布局: `void keyboard_pre_init_user(void)`
|
||||||
|
|
||||||
## 矩阵初始化代码
|
## 矩阵初始化代码
|
||||||
|
|
||||||
这将会在矩阵初始化时被调用,在某些硬件设置好后,但在一些功能被初始化前。
|
这将会在矩阵初始化时被调用,在某些硬件设置好后,但在一些功能被初始化前。
|
||||||
|
|
||||||
这在你设置其他地方会用到的东西的时候会很有用,但与硬件无关,也不依赖于它的启动位置。
|
这在你设置其他地方会用到的东西的时候会很有用,但与硬件无关,也不依赖于它的启动位置。
|
||||||
|
|
||||||
|
|
||||||
### `matrix_init_*`函数文档
|
### `matrix_init_*`函数文档
|
||||||
|
|
||||||
* 键盘/修订: `void matrix_init_kb(void)`
|
* 键盘/修订: `void matrix_init_kb(void)`
|
||||||
* 布局: `void matrix_init_user(void)`
|
* 布局: `void matrix_init_user(void)`
|
||||||
|
|
||||||
|
|
||||||
## 键盘后初始化代码
|
## 键盘后初始化代码
|
||||||
|
|
||||||
这是键盘初始化过程中的最后一个任务。如果您想更改某些特性,这会很有用,因为此时应该对它们进行初始化。
|
这是键盘初始化过程中的最后一个任务。如果您想更改某些特性,这会很有用,因为此时应该对它们进行初始化。
|
||||||
|
|
||||||
|
|
||||||
### `keyboard_post_init_user()`示例实现
|
### `keyboard_post_init_user()`示例实现
|
||||||
|
|
||||||
本示例在所有初始化完成后运行,配置RGB灯。
|
本示例在所有初始化完成后运行,配置RGB灯。
|
||||||
|
|
||||||
```c
|
```c
|
||||||
void keyboard_post_init_user(void) {
|
void keyboard_post_init_user(void) {
|
||||||
// 调用后初始化代码
|
// 调用后初始化代码
|
||||||
rgblight_enable_noeeprom(); // 使能Rgb,不保存设置
|
rgblight_enable_noeeprom(); // 使能Rgb,不保存设置
|
||||||
rgblight_sethsv_noeeprom(180, 255, 255); // 将颜色设置到蓝绿色(青色)不保存
|
rgblight_sethsv_noeeprom(180, 255, 255); // 将颜色设置到蓝绿色(青色)不保存
|
||||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3); // 设置快速呼吸模式不保存
|
rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3); // 设置快速呼吸模式不保存
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### `keyboard_post_init_*` 函数文档
|
### `keyboard_post_init_*` 函数文档
|
||||||
|
|
||||||
* 键盘/修订: `void keyboard_post_init_kb(void)`
|
* 键盘/修订: `void keyboard_post_init_kb(void)`
|
||||||
* 布局: `void keyboard_post_init_user(void)`
|
* 布局: `void keyboard_post_init_user(void)`
|
||||||
|
|
||||||
# 矩阵扫描代码
|
# 矩阵扫描代码
|
||||||
|
|
||||||
可能的话你要用`process_record_*()`自定义键盘,以这种方式连接到事件中,以确保代码不会对键盘产生负面的性能影响。然而,在极少数情况下,有必要进行矩阵扫描。在这些函数中要特别注意代码的性能,因为它每秒至少被调用10次。
|
可能的话你要用`process_record_*()`自定义键盘,以这种方式连接到事件中,以确保代码不会对键盘产生负面的性能影响。然而,在极少数情况下,有必要进行矩阵扫描。在这些函数中要特别注意代码的性能,因为它每秒至少被调用10次。
|
||||||
|
|
||||||
### `matrix_scan_*`示例实现
|
### `matrix_scan_*`示例实现
|
||||||
|
|
||||||
这个例子被故意省略了。在hook这样一个对性能及其敏感的区域之前,您应该足够了解qmk的内部结构,以便在没有示例的情况下编写。如果你需要帮助,请[建立一个issue](https://github.com/qmk/qmk_firmware/issues/new)或[在Discord上与我们交流](https://discord.gg/Uq7gcHh).
|
这个例子被故意省略了。在hook这样一个对性能及其敏感的区域之前,您应该足够了解qmk的内部结构,以便在没有示例的情况下编写。如果你需要帮助,请[建立一个issue](https://github.com/qmk/qmk_firmware/issues/new)或[在Discord上与我们交流](https://discord.gg/Uq7gcHh).
|
||||||
|
|
||||||
### `matrix_scan_*` 函数文档
|
### `matrix_scan_*` 函数文档
|
||||||
|
|
||||||
* 键盘/修订: `void matrix_scan_kb(void)`
|
* 键盘/修订: `void matrix_scan_kb(void)`
|
||||||
* 布局: `void matrix_scan_user(void)`
|
* 布局: `void matrix_scan_user(void)`
|
||||||
|
|
||||||
该函数在每次矩阵扫描时被调用,这基本与MCU处理能力上限相同。在这里写代码要谨慎,因为它会运行很多次。
|
该函数在每次矩阵扫描时被调用,这基本与MCU处理能力上限相同。在这里写代码要谨慎,因为它会运行很多次。
|
||||||
|
|
||||||
你会在自定义矩阵扫描代码时用到这个函数。这也可以用作自定义状态输出(比如LED灯或者屏幕)或者其他即便用户不输入你也想定期运行的功能。
|
你会在自定义矩阵扫描代码时用到这个函数。这也可以用作自定义状态输出(比如LED灯或者屏幕)或者其他即便用户不输入你也想定期运行的功能。
|
||||||
|
|
||||||
|
|
||||||
# 键盘 空闲/唤醒 代码
|
# 键盘 空闲/唤醒 代码
|
||||||
|
|
||||||
如果键盘支持就可以通过停止一大票功能来达到"空闲"。RGB灯和背光就是很好的例子。这可以节约能耗,也可能让你键盘风味更佳。
|
如果键盘支持就可以通过停止一大票功能来达到"空闲"。RGB灯和背光就是很好的例子。这可以节约能耗,也可能让你键盘风味更佳。
|
||||||
|
|
||||||
用两个函数控制: `suspend_power_down_*`和`suspend_wakeup_init_*`, 分别在系统板空闲和唤醒时调用。
|
用两个函数控制: `suspend_power_down_*`和`suspend_wakeup_init_*`, 分别在系统板空闲和唤醒时调用。
|
||||||
|
|
||||||
|
|
||||||
### suspend_power_down_user()和suspend_wakeup_init_user()示例实现
|
### suspend_power_down_user()和suspend_wakeup_init_user()示例实现
|
||||||
|
|
||||||
|
|
||||||
```c
|
```c
|
||||||
@@ -283,18 +283,18 @@ void suspend_wakeup_init_user(void) {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### 键盘 挂起/唤醒 函数文档
|
### 键盘 挂起/唤醒 函数文档
|
||||||
|
|
||||||
* 键盘/修订: `void suspend_power_down_kb(void)` 和`void suspend_wakeup_init_user(void)`
|
* 键盘/修订: `void suspend_power_down_kb(void)` 和`void suspend_wakeup_init_user(void)`
|
||||||
* 布局: `void suspend_power_down_kb(void)` 和 `void suspend_wakeup_init_user(void)`
|
* 布局: `void suspend_power_down_kb(void)` 和 `void suspend_wakeup_init_user(void)`
|
||||||
|
|
||||||
# 层改变代码
|
# 层改变代码
|
||||||
|
|
||||||
每当层改变这个就运行代码。这对于层指示或自定义层处理很有用。
|
每当层改变这个就运行代码。这对于层指示或自定义层处理很有用。
|
||||||
|
|
||||||
### `layer_state_set_*` 示例实现
|
### `layer_state_set_*` 示例实现
|
||||||
|
|
||||||
本例使用了Planck键盘示范了如何设置 [RGB背光灯](feature_rgblight.md)使之与层对应
|
本例使用了Planck键盘示范了如何设置 [RGB背光灯](feature_rgblight.md)使之与层对应
|
||||||
|
|
||||||
```c
|
```c
|
||||||
uint32_t layer_state_set_user(uint32_t state) {
|
uint32_t layer_state_set_user(uint32_t state) {
|
||||||
@@ -318,31 +318,31 @@ uint32_t layer_state_set_user(uint32_t state) {
|
|||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
### `layer_state_set_*` 函数文档
|
### `layer_state_set_*` 函数文档
|
||||||
|
|
||||||
* 键盘/修订: `uint32_t layer_state_set_kb(uint32_t state)`
|
* 键盘/修订: `uint32_t layer_state_set_kb(uint32_t state)`
|
||||||
* 布局: `uint32_t layer_state_set_user(uint32_t state)`
|
* 布局: `uint32_t layer_state_set_user(uint32_t state)`
|
||||||
|
|
||||||
|
|
||||||
该`状态`是活动层的bitmask, 详见[布局概述](keymap.md#布局的层状态)
|
该`状态`是活动层的bitmask, 详见[布局概述](keymap.md#布局的层状态)
|
||||||
|
|
||||||
|
|
||||||
# 掉电保存配置 (EEPROM)
|
# 掉电保存配置 (EEPROM)
|
||||||
|
|
||||||
这会让你的配置长期的保存在键盘中。这些配置保存在你主控的EEPROM里,掉电不会消失。 设置可以用`eeconfig_read_kb`和`eeconfig_read_user`读取,可以用`eeconfig_update_kb`和`eeconfig_update_user`写入。这对于您希望能够切换的功能很有用(比如切换RGB层指示。此外,你可以用`eeconfig_init_kb`和`eeconfig_init_user`来设置EEPROM默认值。
|
这会让你的配置长期的保存在键盘中。这些配置保存在你主控的EEPROM里,掉电不会消失。 设置可以用`eeconfig_read_kb`和`eeconfig_read_user`读取,可以用`eeconfig_update_kb`和`eeconfig_update_user`写入。这对于您希望能够切换的功能很有用(比如切换RGB层指示。此外,你可以用`eeconfig_init_kb`和`eeconfig_init_user`来设置EEPROM默认值。
|
||||||
|
|
||||||
最复杂的部分可能是,有很多方法可以通过EEPROM存储和访问数据,并且并没有用哪种方法是“政治正确”的。你每个功能只有一个双字(四字节)空间。
|
最复杂的部分可能是,有很多方法可以通过EEPROM存储和访问数据,并且并没有用哪种方法是“政治正确”的。你每个功能只有一个双字(四字节)空间。
|
||||||
|
|
||||||
记住EEPROM是有写入寿命的。尽管写入寿命很高,但是并不是只有设置写道EEPROM中。如果你写入频繁,你的MCU寿命将会变短。
|
记住EEPROM是有写入寿命的。尽管写入寿命很高,但是并不是只有设置写道EEPROM中。如果你写入频繁,你的MCU寿命将会变短。
|
||||||
|
|
||||||
* 如果您不理解这个例子,那么您可能希望避免使用这个特性,因为它相当复杂。
|
* 如果您不理解这个例子,那么您可能希望避免使用这个特性,因为它相当复杂。
|
||||||
|
|
||||||
### 示例实现
|
### 示例实现
|
||||||
|
|
||||||
本例讲解了如何添加设置,并且读写。本里使用了用户布局。这是一个复杂的函数,有很多事情要做。实际上,它使用了很多上述函数来工作!
|
本例讲解了如何添加设置,并且读写。本里使用了用户布局。这是一个复杂的函数,有很多事情要做。实际上,它使用了很多上述函数来工作!
|
||||||
|
|
||||||
|
|
||||||
在你的keymap.c文件中,将以下代码添加至顶部:
|
在你的keymap.c文件中,将以下代码添加至顶部:
|
||||||
```c
|
```c
|
||||||
typedef union {
|
typedef union {
|
||||||
uint32_t raw;
|
uint32_t raw;
|
||||||
@@ -354,19 +354,19 @@ typedef union {
|
|||||||
user_config_t user_config;
|
user_config_t user_config;
|
||||||
```
|
```
|
||||||
|
|
||||||
以上代码建立了一个结构体,该结构体可以存储设置并可用于写入EEPROM。如此这般将无需定义变量,因为在结构体中已然定义。要记住`bool` (布尔)值使用1位, `uint8_t`使用8位, `uint16_t`使用16位。你可以混合搭配使用,但是顺序记错可能会招致麻烦,因为那会改变写入写出的值。
|
以上代码建立了一个结构体,该结构体可以存储设置并可用于写入EEPROM。如此这般将无需定义变量,因为在结构体中已然定义。要记住`bool` (布尔)值使用1位, `uint8_t`使用8位, `uint16_t`使用16位。你可以混合搭配使用,但是顺序记错可能会招致麻烦,因为那会改变写入写出的值。
|
||||||
|
|
||||||
`layer_state_set_*`函数中使用了`rgb_layer_change`,使用了`keyboard_post_init_user`和`process_record_user`来配置一切。
|
`layer_state_set_*`函数中使用了`rgb_layer_change`,使用了`keyboard_post_init_user`和`process_record_user`来配置一切。
|
||||||
|
|
||||||
首先要使用`keyboard_post_init_user,你要加入`eeconfig_read_user()`来填充你刚刚创建的结构体。然后您可以立即使用这个结构来控制您的布局中的功能。就像这样:
|
首先要使用`keyboard_post_init_user,你要加入`eeconfig_read_user()`来填充你刚刚创建的结构体。然后您可以立即使用这个结构来控制您的布局中的功能。就像这样:
|
||||||
```c
|
```c
|
||||||
void keyboard_post_init_user(void) {
|
void keyboard_post_init_user(void) {
|
||||||
// 调用布局级别的矩阵初始化
|
// 调用布局级别的矩阵初始化
|
||||||
|
|
||||||
// 从EEPROM读用户配置
|
// 从EEPROM读用户配置
|
||||||
user_config.raw = eeconfig_read_user();
|
user_config.raw = eeconfig_read_user();
|
||||||
|
|
||||||
// 如使能,设置默认层
|
// 如使能,设置默认层
|
||||||
if (user_config.rgb_layer_change) {
|
if (user_config.rgb_layer_change) {
|
||||||
rgblight_enable_noeeprom();
|
rgblight_enable_noeeprom();
|
||||||
rgblight_sethsv_noeeprom_cyan();
|
rgblight_sethsv_noeeprom_cyan();
|
||||||
@@ -374,7 +374,7 @@ void keyboard_post_init_user(void) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
以上函数会在读EEPROM配置后立即使用该设置来设置默认层RGB颜色。"raw"的值是从你上面基于"union"创建的结构体中转换来的。
|
以上函数会在读EEPROM配置后立即使用该设置来设置默认层RGB颜色。"raw"的值是从你上面基于"union"创建的结构体中转换来的。
|
||||||
|
|
||||||
```c
|
```c
|
||||||
uint32_t layer_state_set_user(uint32_t state) {
|
uint32_t layer_state_set_user(uint32_t state) {
|
||||||
@@ -391,86 +391,86 @@ uint32_t layer_state_set_user(uint32_t state) {
|
|||||||
case _ADJUST:
|
case _ADJUST:
|
||||||
if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom_white(); rgblight_mode_noeeprom(1); }
|
if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom_white(); rgblight_mode_noeeprom(1); }
|
||||||
break;
|
break;
|
||||||
default: // 针对其他层或默认层
|
default: // 针对其他层或默认层
|
||||||
if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom_cyan(); rgblight_mode_noeeprom(1); }
|
if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom_cyan(); rgblight_mode_noeeprom(1); }
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
这样仅在值使能时会改变RGB背光灯。现在配置这个值, 为`process_record_user`创建一个新键码叫做`RGB_LYR`。我们要确保,如果使用正常的RGB代码,使用上面的示例将其关闭,请将其设置为:
|
这样仅在值使能时会改变RGB背光灯。现在配置这个值, 为`process_record_user`创建一个新键码叫做`RGB_LYR`。我们要确保,如果使用正常的RGB代码,使用上面的示例将其关闭,请将其设置为:
|
||||||
```c
|
```c
|
||||||
|
|
||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
switch (keycode) {
|
switch (keycode) {
|
||||||
case FOO:
|
case FOO:
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
// 按下时做点什么
|
// 按下时做点什么
|
||||||
} else {
|
} else {
|
||||||
// 释放时做点什么
|
// 释放时做点什么
|
||||||
}
|
}
|
||||||
return false; // 跳过此键的进一步处理
|
return false; // 跳过此键的进一步处理
|
||||||
case KC_ENTER:
|
case KC_ENTER:
|
||||||
// 在按下回车时播放音符
|
// 在按下回车时播放音符
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
PLAY_NOTE_ARRAY(tone_qwerty);
|
PLAY_NOTE_ARRAY(tone_qwerty);
|
||||||
}
|
}
|
||||||
return true; // 让QMK产生回车按下/释放事件
|
return true; // 让QMK产生回车按下/释放事件
|
||||||
case RGB_LYR: // 本句让underglow作为层指示,或正常使用。
|
case RGB_LYR: // 本句让underglow作为层指示,或正常使用。
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
user_config.rgb_layer_change ^= 1; // 切换状态
|
user_config.rgb_layer_change ^= 1; // 切换状态
|
||||||
eeconfig_update_user(user_config.raw); // 向EEPROM写入新状态
|
eeconfig_update_user(user_config.raw); // 向EEPROM写入新状态
|
||||||
if (user_config.rgb_layer_change) { // 如果层状态被使能
|
if (user_config.rgb_layer_change) { // 如果层状态被使能
|
||||||
layer_state_set(layer_state); // 那么立刻更新层颜色
|
layer_state_set(layer_state); // 那么立刻更新层颜色
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false; break;
|
return false; break;
|
||||||
case RGB_MODE_FORWARD ... RGB_MODE_GRADIENT: // 对于所有的RGB代码 (see quantum_keycodes.h, L400 可以参考)
|
case RGB_MODE_FORWARD ... RGB_MODE_GRADIENT: // 对于所有的RGB代码 (see quantum_keycodes.h, L400 可以参考)
|
||||||
if (record->event.pressed) { //本句失能层指示,假设你改变了这个…你要把它禁用
|
if (record->event.pressed) { //本句失能层指示,假设你改变了这个…你要把它禁用
|
||||||
if (user_config.rgb_layer_change) { // 仅当使能时
|
if (user_config.rgb_layer_change) { // 仅当使能时
|
||||||
user_config.rgb_layer_change = false; // 失能,然后
|
user_config.rgb_layer_change = false; // 失能,然后
|
||||||
eeconfig_update_user(user_config.raw); // 向EEPROM写入设置
|
eeconfig_update_user(user_config.raw); // 向EEPROM写入设置
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true; break;
|
return true; break;
|
||||||
default:
|
default:
|
||||||
return true; // 按其他键正常
|
return true; // 按其他键正常
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
最后你要加入`eeconfig_init_user`函数,所以当EEPROM重置时,可以指定默认值, 甚至自定义操作。想强制重置EEPROM,请用`EEP_RST`键码或[Bootmagic](feature_bootmagic.md)函数。比如,如果要在默认情况下设置RGB层指示,并保存默认值
|
最后你要加入`eeconfig_init_user`函数,所以当EEPROM重置时,可以指定默认值, 甚至自定义操作。想强制重置EEPROM,请用`EEP_RST`键码或[Bootmagic](feature_bootmagic.md)函数。比如,如果要在默认情况下设置RGB层指示,并保存默认值
|
||||||
|
|
||||||
```c
|
```c
|
||||||
void eeconfig_init_user(void) { // EEPROM正被重置
|
void eeconfig_init_user(void) { // EEPROM正被重置
|
||||||
user_config.raw = 0;
|
user_config.raw = 0;
|
||||||
user_config.rgb_layer_change = true; // 我们想要默认使能
|
user_config.rgb_layer_change = true; // 我们想要默认使能
|
||||||
eeconfig_update_user(user_config.raw); // 向EEPROM写入默认值
|
eeconfig_update_user(user_config.raw); // 向EEPROM写入默认值
|
||||||
|
|
||||||
// use the non noeeprom versions, 还要向EEPROM写入这些值
|
// use the non noeeprom versions, 还要向EEPROM写入这些值
|
||||||
rgblight_enable(); // 默认使能RGB
|
rgblight_enable(); // 默认使能RGB
|
||||||
rgblight_sethsv_cyan(); // 默认设置青色
|
rgblight_sethsv_cyan(); // 默认设置青色
|
||||||
rgblight_mode(1); // 默认设置长亮
|
rgblight_mode(1); // 默认设置长亮
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
然后就完事了。RGB层指示会在你想让它工作时工作。这个设置会一直保存,即便你拔下键盘。如果你使用其他RGB代码,层指示将失能,现在它可以做你所想了。
|
然后就完事了。RGB层指示会在你想让它工作时工作。这个设置会一直保存,即便你拔下键盘。如果你使用其他RGB代码,层指示将失能,现在它可以做你所想了。
|
||||||
|
|
||||||
### 'EECONFIG' 函数文档
|
### 'EECONFIG' 函数文档
|
||||||
|
|
||||||
* 键盘/修订: `void eeconfig_init_kb(void)`, `uint32_t eeconfig_read_kb(void)`和`void eeconfig_update_kb(uint32_t val)`
|
* 键盘/修订: `void eeconfig_init_kb(void)`, `uint32_t eeconfig_read_kb(void)`和`void eeconfig_update_kb(uint32_t val)`
|
||||||
* 布局: `void eeconfig_init_user(void)`, `uint32_t eeconfig_read_user(void)`和`void eeconfig_update_user(uint32_t val)`
|
* 布局: `void eeconfig_init_user(void)`, `uint32_t eeconfig_read_user(void)`和`void eeconfig_update_user(uint32_t val)`
|
||||||
|
|
||||||
`val` 是你想写入EEPROM的值,`eeconfig_read_*`函数会从EEPROM返回一个32位(双字)的值。
|
`val` 是你想写入EEPROM的值,`eeconfig_read_*`函数会从EEPROM返回一个32位(双字)的值。
|
||||||
|
|
||||||
# 自定义击键-长按临界值(TAPPING_TERM)
|
# 自定义击键-长按临界值(TAPPING_TERM)
|
||||||
默认情况下,击键-长按临界值是全球统一的,并且不能通过键进行配置。对于大多数用户来说这很好。但是在有些情况下,对于`LT`键来说按键延时对双功能键的提升更大,可能是因为有些键比其他的键更容易按住。为了不给每个都自定义键码,本功能可以为每个键定义`TAPPING_TERM`。
|
默认情况下,击键-长按临界值是全球统一的,并且不能通过键进行配置。对于大多数用户来说这很好。但是在有些情况下,对于`LT`键来说按键延时对双功能键的提升更大,可能是因为有些键比其他的键更容易按住。为了不给每个都自定义键码,本功能可以为每个键定义`TAPPING_TERM`。
|
||||||
|
|
||||||
想使能这个功能的话, 要先在`config.h`加上`#define TAPPING_TERM_PER_KEY`。
|
想使能这个功能的话, 要先在`config.h`加上`#define TAPPING_TERM_PER_KEY`。
|
||||||
|
|
||||||
|
|
||||||
## `get_tapping_term`示例实现
|
## `get_tapping_term`示例实现
|
||||||
|
|
||||||
想要修改基于键码的`TAPPING TERM`,你要向`keymap.c`文件添加如下代码:
|
想要修改基于键码的`TAPPING TERM`,你要向`keymap.c`文件添加如下代码:
|
||||||
|
|
||||||
```c
|
```c
|
||||||
uint16_t get_tapping_term(uint16_t keycode) {
|
uint16_t get_tapping_term(uint16_t keycode) {
|
||||||
@@ -485,6 +485,6 @@ uint16_t get_tapping_term(uint16_t keycode) {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### `get_tapping_term` 函数文档
|
### `get_tapping_term` 函数文档
|
||||||
|
|
||||||
不像这篇的其他功能,这个不需要quantum或者键盘级别的函数,只要用户级函数即可。
|
不像这篇的其他功能,这个不需要quantum或者键盘级别的函数,只要用户级函数即可。
|
||||||
@@ -16,17 +16,23 @@ Github can be a little tricky to those that aren't familiar with it - this guide
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
然后,在命令行输入`git clone `,然后粘贴你的链接:
|
然后,在命令行输入`git clone --recurse-submodules `,然后粘贴你的链接:
|
||||||
|
|
||||||
```
|
```
|
||||||
user@computer:~$ git clone https://github.com/whoeveryouare/qmk_firmware.git
|
user@computer:~$ git clone --recurse-submodules https://github.com/whoeveryouare/qmk_firmware.git
|
||||||
Cloning into 'qmk_firmware'...
|
Cloning into 'qmk_firmware'...
|
||||||
remote: Counting objects: 46625, done.
|
remote: Enumerating objects: 9, done.
|
||||||
remote: Compressing objects: 100% (2/2), done.
|
remote: Counting objects: 100% (9/9), done.
|
||||||
remote: Total 46625 (delta 0), reused 0 (delta 0), pack-reused 46623
|
remote: Compressing objects: 100% (5/5), done.
|
||||||
Receiving objects: 100% (46625/46625), 84.47 MiB | 3.14 MiB/s, done.
|
remote: Total 183883 (delta 5), reused 4 (delta 4), pack-reused 183874
|
||||||
Resolving deltas: 100% (29362/29362), done.
|
Receiving objects: 100% (183883/183883), 132.90 MiB | 9.57 MiB/s, done.
|
||||||
Checking out files: 100% (2799/2799), done.
|
Resolving deltas: 100% (119972/119972), done.
|
||||||
|
...
|
||||||
|
Submodule path 'lib/chibios': checked out '587968d6cbc2b0e1c7147540872f2a67e59ca18b'
|
||||||
|
Submodule path 'lib/chibios-contrib': checked out 'ede48346eee4b8d6847c19bc01420bee76a5e486'
|
||||||
|
Submodule path 'lib/googletest': checked out 'ec44c6c1675c25b9827aacd08c02433cccde7780'
|
||||||
|
Submodule path 'lib/lufa': checked out 'ce10f7642b0459e409839b23cc91498945119b4d'
|
||||||
|
Submodule path 'lib/ugfx': checked out '3e97b74e03c93631cdd3ddb2ce43b963fdce19b2'
|
||||||
```
|
```
|
||||||
|
|
||||||
现在你本地计算机有QMK的分叉了,你可以添加你的布局了, 为你的键盘编译并刷新固件吧。如果你觉得你的修改很不错, 你可以添加,提交,然后想你的分叉推出(pull)你的改变,像这样:
|
现在你本地计算机有QMK的分叉了,你可以添加你的布局了, 为你的键盘编译并刷新固件吧。如果你觉得你的修改很不错, 你可以添加,提交,然后想你的分叉推出(pull)你的改变,像这样:
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
## 基本QMK结构
|
## 基本QMK结构
|
||||||
|
|
||||||
QMK是[Jun Wako](https://github.com/tmk)的[tmk_keyboard](https://github.com/tmk/tmk_keyboard)工程的一个分叉。经过更改的TMK原始代码放在`tmk` 文件夹中。 QMK增加的新东西可以在 `quantum` 文件夹中找到。 键盘项目可以在 `handwired`(手动飞线) 和 `keyboard`(PCB键盘)这两个文件夹找到。
|
QMK是[Jun Wako](https://github.com/tmk)的[tmk_keyboard](https://github.com/tmk/tmk_keyboard)工程的一个分叉。经过更改的TMK原始代码放在`tmk_core` 文件夹中。 QMK增加的新东西可以在 `quantum` 文件夹中找到。 键盘项目可以在 `handwired`(手动飞线) 和 `keyboard`(PCB键盘)这两个文件夹找到。
|
||||||
|
|
||||||
### 用户空间结构
|
### 用户空间结构
|
||||||
|
|
||||||
|
|||||||
@@ -24,9 +24,8 @@
|
|||||||
* STM32_I2C_USE_I2C1 is TRUE in the mcuconf.h file. Pins B6 and B7 are used
|
* STM32_I2C_USE_I2C1 is TRUE in the mcuconf.h file. Pins B6 and B7 are used
|
||||||
* but using any other I2C pins should be trivial.
|
* but using any other I2C pins should be trivial.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "i2c_master.h"
|
|
||||||
#include "quantum.h"
|
#include "quantum.h"
|
||||||
|
#include "i2c_master.h"
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <hal.h>
|
#include <hal.h>
|
||||||
|
|
||||||
|
|||||||
+10
-19
@@ -27,10 +27,6 @@
|
|||||||
#include "ch.h"
|
#include "ch.h"
|
||||||
#include <hal.h>
|
#include <hal.h>
|
||||||
|
|
||||||
#if defined(STM32F1XX) || defined(STM32F1xx) || defined(STM32F2xx) || defined(STM32F4xx) || defined(STM32F4XX) || defined(STM32L0xx) || defined(STM32L1xx)
|
|
||||||
# define USE_I2CV1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef I2C1_BANK
|
#ifdef I2C1_BANK
|
||||||
# define I2C1_SCL_BANK I2C1_BANK
|
# define I2C1_SCL_BANK I2C1_BANK
|
||||||
# define I2C1_SDA_BANK I2C1_BANK
|
# define I2C1_SDA_BANK I2C1_BANK
|
||||||
@@ -51,20 +47,6 @@
|
|||||||
# define I2C1_SDA 7
|
# define I2C1_SDA 7
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(STM32F1XX) || defined(STM32F1xx)
|
|
||||||
# define USE_GPIOV1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef USE_GPIOV1
|
|
||||||
// The default PAL alternate modes are used to signal that the pins are used for I2C
|
|
||||||
# ifndef I2C1_SCL_PAL_MODE
|
|
||||||
# define I2C1_SCL_PAL_MODE 4
|
|
||||||
# endif
|
|
||||||
# ifndef I2C1_SDA_PAL_MODE
|
|
||||||
# define I2C1_SDA_PAL_MODE 4
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef USE_I2CV1
|
#ifdef USE_I2CV1
|
||||||
# ifndef I2C1_OPMODE
|
# ifndef I2C1_OPMODE
|
||||||
# define I2C1_OPMODE OPMODE_I2C
|
# define I2C1_OPMODE OPMODE_I2C
|
||||||
@@ -99,6 +81,16 @@
|
|||||||
# define I2C_DRIVER I2CD1
|
# define I2C_DRIVER I2CD1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef USE_GPIOV1
|
||||||
|
// The default PAL alternate modes are used to signal that the pins are used for I2C
|
||||||
|
# ifndef I2C1_SCL_PAL_MODE
|
||||||
|
# define I2C1_SCL_PAL_MODE 4
|
||||||
|
# endif
|
||||||
|
# ifndef I2C1_SDA_PAL_MODE
|
||||||
|
# define I2C1_SDA_PAL_MODE 4
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
typedef int16_t i2c_status_t;
|
typedef int16_t i2c_status_t;
|
||||||
|
|
||||||
#define I2C_STATUS_SUCCESS (0)
|
#define I2C_STATUS_SUCCESS (0)
|
||||||
@@ -109,7 +101,6 @@ void i2c_init(void);
|
|||||||
i2c_status_t i2c_start(uint8_t address);
|
i2c_status_t i2c_start(uint8_t address);
|
||||||
i2c_status_t i2c_transmit(uint8_t address, const uint8_t* data, uint16_t length, uint16_t timeout);
|
i2c_status_t i2c_transmit(uint8_t address, const uint8_t* data, uint16_t length, uint16_t timeout);
|
||||||
i2c_status_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout);
|
i2c_status_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout);
|
||||||
i2c_status_t i2c_transmit_receive(uint8_t address, uint8_t* tx_body, uint16_t tx_length, uint8_t* rx_body, uint16_t rx_length);
|
|
||||||
i2c_status_t i2c_writeReg(uint8_t devaddr, uint8_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout);
|
i2c_status_t i2c_writeReg(uint8_t devaddr, uint8_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout);
|
||||||
i2c_status_t i2c_readReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout);
|
i2c_status_t i2c_readReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout);
|
||||||
void i2c_stop(void);
|
void i2c_stop(void);
|
||||||
@@ -32,16 +32,9 @@ void DRV_write(uint8_t drv_register, uint8_t settings) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
uint8_t DRV_read(uint8_t regaddress) {
|
uint8_t DRV_read(uint8_t regaddress) {
|
||||||
#ifdef __AVR__
|
|
||||||
i2c_readReg(DRV2605L_BASE_ADDRESS << 1, regaddress, DRV2605L_read_buffer, 1, 100);
|
i2c_readReg(DRV2605L_BASE_ADDRESS << 1, regaddress, DRV2605L_read_buffer, 1, 100);
|
||||||
DRV2605L_read_register = (uint8_t)DRV2605L_read_buffer[0];
|
DRV2605L_read_register = (uint8_t)DRV2605L_read_buffer[0];
|
||||||
#else
|
|
||||||
DRV2605L_tx_register[0] = regaddress;
|
|
||||||
if (MSG_OK != i2c_transmit_receive(DRV2605L_BASE_ADDRESS << 1, DRV2605L_tx_register, 1, DRV2605L_read_buffer, 1)) {
|
|
||||||
printf("err reading reg \n");
|
|
||||||
}
|
|
||||||
DRV2605L_read_register = (uint8_t)DRV2605L_read_buffer[0];
|
|
||||||
#endif
|
|
||||||
return DRV2605L_read_register;
|
return DRV2605L_read_register;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -127,4 +120,4 @@ void DRV_pulse(uint8_t sequence) {
|
|||||||
DRV_write(DRV_GO, 0x00);
|
DRV_write(DRV_GO, 0x00);
|
||||||
DRV_write(DRV_WAVEFORM_SEQ_1, sequence);
|
DRV_write(DRV_WAVEFORM_SEQ_1, sequence);
|
||||||
DRV_write(DRV_GO, 0x01);
|
DRV_write(DRV_GO, 0x01);
|
||||||
}
|
}
|
||||||
@@ -13,6 +13,7 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|||||||
@@ -16,21 +16,9 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef __AVR__
|
|
||||||
# include <avr/interrupt.h>
|
|
||||||
# include <avr/io.h>
|
|
||||||
# include <util/delay.h>
|
|
||||||
#else
|
|
||||||
# include "wait.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <stdint.h>
|
|
||||||
#include <stdbool.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include "is31fl3731-simple.h"
|
#include "is31fl3731-simple.h"
|
||||||
#include "i2c_master.h"
|
#include "i2c_master.h"
|
||||||
#include "progmem.h"
|
#include "wait.h"
|
||||||
#include "print.h"
|
|
||||||
|
|
||||||
// This is a 7-bit address, that gets left-shifted and bit 0
|
// This is a 7-bit address, that gets left-shifted and bit 0
|
||||||
// set to 0 for write, 1 for read (as per I2C protocol)
|
// set to 0 for write, 1 for read (as per I2C protocol)
|
||||||
@@ -156,6 +144,7 @@ void IS31FL3731_init(uint8_t addr) {
|
|||||||
|
|
||||||
// enable software shutdown
|
// enable software shutdown
|
||||||
IS31FL3731_write_register(addr, ISSI_REG_SHUTDOWN, 0x00);
|
IS31FL3731_write_register(addr, ISSI_REG_SHUTDOWN, 0x00);
|
||||||
|
|
||||||
// this delay was copied from other drivers, might not be needed
|
// this delay was copied from other drivers, might not be needed
|
||||||
wait_ms(10);
|
wait_ms(10);
|
||||||
|
|
||||||
|
|||||||
@@ -16,8 +16,10 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef IS31FL3731_DRIVER_H
|
#pragma once
|
||||||
#define IS31FL3731_DRIVER_H
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
|
||||||
typedef struct is31_led {
|
typedef struct is31_led {
|
||||||
uint8_t driver : 2;
|
uint8_t driver : 2;
|
||||||
@@ -203,5 +205,3 @@ void IS31FL3731_update_led_control_registers(uint8_t addr, uint8_t index);
|
|||||||
#define C9_14 0xB1
|
#define C9_14 0xB1
|
||||||
#define C9_15 0xB2
|
#define C9_15 0xB2
|
||||||
#define C9_16 0xB3
|
#define C9_16 0xB3
|
||||||
|
|
||||||
#endif // IS31FL3731_DRIVER_H
|
|
||||||
@@ -15,18 +15,9 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef __AVR__
|
|
||||||
# include <avr/interrupt.h>
|
|
||||||
# include <avr/io.h>
|
|
||||||
# include <util/delay.h>
|
|
||||||
#else
|
|
||||||
# include "wait.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "is31fl3731.h"
|
#include "is31fl3731.h"
|
||||||
#include <string.h>
|
|
||||||
#include "i2c_master.h"
|
#include "i2c_master.h"
|
||||||
#include "progmem.h"
|
#include "wait.h"
|
||||||
|
|
||||||
// This is a 7-bit address, that gets left-shifted and bit 0
|
// This is a 7-bit address, that gets left-shifted and bit 0
|
||||||
// set to 0 for write, 1 for read (as per I2C protocol)
|
// set to 0 for write, 1 for read (as per I2C protocol)
|
||||||
@@ -141,12 +132,9 @@ void IS31FL3731_init(uint8_t addr) {
|
|||||||
|
|
||||||
// enable software shutdown
|
// enable software shutdown
|
||||||
IS31FL3731_write_register(addr, ISSI_REG_SHUTDOWN, 0x00);
|
IS31FL3731_write_register(addr, ISSI_REG_SHUTDOWN, 0x00);
|
||||||
// this delay was copied from other drivers, might not be needed
|
|
||||||
#ifdef __AVR__
|
// this delay was copied from other drivers, might not be needed
|
||||||
_delay_ms(10);
|
|
||||||
#else
|
|
||||||
wait_ms(10);
|
wait_ms(10);
|
||||||
#endif
|
|
||||||
|
|
||||||
// picture mode
|
// picture mode
|
||||||
IS31FL3731_write_register(addr, ISSI_REG_CONFIG, ISSI_REG_CONFIG_PICTUREMODE);
|
IS31FL3731_write_register(addr, ISSI_REG_CONFIG, ISSI_REG_CONFIG_PICTUREMODE);
|
||||||
|
|||||||
@@ -15,8 +15,7 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef IS31FL3731_DRIVER_H
|
#pragma once
|
||||||
#define IS31FL3731_DRIVER_H
|
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
@@ -207,5 +206,3 @@ void IS31FL3731_update_led_control_registers(uint8_t addr, uint8_t index);
|
|||||||
#define C9_14 0xB1
|
#define C9_14 0xB1
|
||||||
#define C9_15 0xB2
|
#define C9_15 0xB2
|
||||||
#define C9_16 0xB3
|
#define C9_16 0xB3
|
||||||
|
|
||||||
#endif // IS31FL3731_DRIVER_H
|
|
||||||
@@ -16,18 +16,9 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef __AVR__
|
|
||||||
# include <avr/interrupt.h>
|
|
||||||
# include <avr/io.h>
|
|
||||||
# include <util/delay.h>
|
|
||||||
#else
|
|
||||||
# include "wait.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <string.h>
|
|
||||||
#include "i2c_master.h"
|
|
||||||
#include "progmem.h"
|
|
||||||
#include "is31fl3733.h"
|
#include "is31fl3733.h"
|
||||||
|
#include "i2c_master.h"
|
||||||
|
#include "wait.h"
|
||||||
|
|
||||||
// This is a 7-bit address, that gets left-shifted and bit 0
|
// This is a 7-bit address, that gets left-shifted and bit 0
|
||||||
// set to 0 for write, 1 for read (as per I2C protocol)
|
// set to 0 for write, 1 for read (as per I2C protocol)
|
||||||
@@ -168,12 +159,8 @@ void IS31FL3733_init(uint8_t addr, uint8_t sync) {
|
|||||||
// Disable software shutdown.
|
// Disable software shutdown.
|
||||||
IS31FL3733_write_register(addr, ISSI_REG_CONFIGURATION, (sync << 6) | 0x01);
|
IS31FL3733_write_register(addr, ISSI_REG_CONFIGURATION, (sync << 6) | 0x01);
|
||||||
|
|
||||||
// Wait 10ms to ensure the device has woken up.
|
// Wait 10ms to ensure the device has woken up.
|
||||||
#ifdef __AVR__
|
|
||||||
_delay_ms(10);
|
|
||||||
#else
|
|
||||||
wait_ms(10);
|
wait_ms(10);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void IS31FL3733_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) {
|
void IS31FL3733_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) {
|
||||||
|
|||||||
@@ -16,8 +16,7 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef IS31FL3733_DRIVER_H
|
#pragma once
|
||||||
#define IS31FL3733_DRIVER_H
|
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
@@ -250,5 +249,3 @@ void IS31FL3733_update_led_control_registers(uint8_t addr, uint8_t index);
|
|||||||
#define L_14 0xBD
|
#define L_14 0xBD
|
||||||
#define L_15 0xBE
|
#define L_15 0xBE
|
||||||
#define L_16 0xBF
|
#define L_16 0xBF
|
||||||
|
|
||||||
#endif // IS31FL3733_DRIVER_H
|
|
||||||
@@ -14,18 +14,9 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef __AVR__
|
|
||||||
# include <avr/interrupt.h>
|
|
||||||
# include <avr/io.h>
|
|
||||||
# include <util/delay.h>
|
|
||||||
#else
|
|
||||||
# include "wait.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "is31fl3736.h"
|
#include "is31fl3736.h"
|
||||||
#include <string.h>
|
|
||||||
#include "i2c_master.h"
|
#include "i2c_master.h"
|
||||||
#include "progmem.h"
|
#include "wait.h"
|
||||||
|
|
||||||
// This is a 7-bit address, that gets left-shifted and bit 0
|
// This is a 7-bit address, that gets left-shifted and bit 0
|
||||||
// set to 0 for write, 1 for read (as per I2C protocol)
|
// set to 0 for write, 1 for read (as per I2C protocol)
|
||||||
@@ -154,12 +145,8 @@ void IS31FL3736_init(uint8_t addr) {
|
|||||||
// Disable software shutdown.
|
// Disable software shutdown.
|
||||||
IS31FL3736_write_register(addr, ISSI_REG_CONFIGURATION, 0x01);
|
IS31FL3736_write_register(addr, ISSI_REG_CONFIGURATION, 0x01);
|
||||||
|
|
||||||
// Wait 10ms to ensure the device has woken up.
|
// Wait 10ms to ensure the device has woken up.
|
||||||
#ifdef __AVR__
|
|
||||||
_delay_ms(10);
|
|
||||||
#else
|
|
||||||
wait_ms(10);
|
wait_ms(10);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void IS31FL3736_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) {
|
void IS31FL3736_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) {
|
||||||
@@ -263,7 +250,7 @@ void IS31FL3736_update_pwm_buffers(uint8_t addr1, uint8_t addr2) {
|
|||||||
IS31FL3736_write_register(addr1, ISSI_COMMANDREGISTER, ISSI_PAGE_PWM);
|
IS31FL3736_write_register(addr1, ISSI_COMMANDREGISTER, ISSI_PAGE_PWM);
|
||||||
|
|
||||||
IS31FL3736_write_pwm_buffer(addr1, g_pwm_buffer[0]);
|
IS31FL3736_write_pwm_buffer(addr1, g_pwm_buffer[0]);
|
||||||
// IS31FL3736_write_pwm_buffer( addr2, g_pwm_buffer[1] );
|
// IS31FL3736_write_pwm_buffer(addr2, g_pwm_buffer[1]);
|
||||||
}
|
}
|
||||||
g_pwm_buffer_update_required = false;
|
g_pwm_buffer_update_required = false;
|
||||||
}
|
}
|
||||||
@@ -275,7 +262,7 @@ void IS31FL3736_update_led_control_registers(uint8_t addr1, uint8_t addr2) {
|
|||||||
IS31FL3736_write_register(addr1, ISSI_COMMANDREGISTER, ISSI_PAGE_LEDCONTROL);
|
IS31FL3736_write_register(addr1, ISSI_COMMANDREGISTER, ISSI_PAGE_LEDCONTROL);
|
||||||
for (int i = 0; i < 24; i++) {
|
for (int i = 0; i < 24; i++) {
|
||||||
IS31FL3736_write_register(addr1, i, g_led_control_registers[0][i]);
|
IS31FL3736_write_register(addr1, i, g_led_control_registers[0][i]);
|
||||||
// IS31FL3736_write_register(addr2, i, g_led_control_registers[1][i] );
|
// IS31FL3736_write_register(addr2, i, g_led_control_registers[1][i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -16,18 +16,9 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef __AVR__
|
#include "is31fl3737.h"
|
||||||
# include <avr/interrupt.h>
|
|
||||||
# include <avr/io.h>
|
|
||||||
# include <util/delay.h>
|
|
||||||
#else
|
|
||||||
# include "wait.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <string.h>
|
|
||||||
#include "i2c_master.h"
|
#include "i2c_master.h"
|
||||||
#include "progmem.h"
|
#include "wait.h"
|
||||||
#include "rgb_matrix.h"
|
|
||||||
|
|
||||||
// This is a 7-bit address, that gets left-shifted and bit 0
|
// This is a 7-bit address, that gets left-shifted and bit 0
|
||||||
// set to 0 for write, 1 for read (as per I2C protocol)
|
// set to 0 for write, 1 for read (as per I2C protocol)
|
||||||
@@ -156,12 +147,8 @@ void IS31FL3737_init(uint8_t addr) {
|
|||||||
// Disable software shutdown.
|
// Disable software shutdown.
|
||||||
IS31FL3737_write_register(addr, ISSI_REG_CONFIGURATION, 0x01);
|
IS31FL3737_write_register(addr, ISSI_REG_CONFIGURATION, 0x01);
|
||||||
|
|
||||||
// Wait 10ms to ensure the device has woken up.
|
// Wait 10ms to ensure the device has woken up.
|
||||||
#ifdef __AVR__
|
|
||||||
_delay_ms(10);
|
|
||||||
#else
|
|
||||||
wait_ms(10);
|
wait_ms(10);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void IS31FL3737_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) {
|
void IS31FL3737_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) {
|
||||||
@@ -217,7 +204,7 @@ void IS31FL3737_update_pwm_buffers(uint8_t addr1, uint8_t addr2) {
|
|||||||
IS31FL3737_write_register(addr1, ISSI_COMMANDREGISTER, ISSI_PAGE_PWM);
|
IS31FL3737_write_register(addr1, ISSI_COMMANDREGISTER, ISSI_PAGE_PWM);
|
||||||
|
|
||||||
IS31FL3737_write_pwm_buffer(addr1, g_pwm_buffer[0]);
|
IS31FL3737_write_pwm_buffer(addr1, g_pwm_buffer[0]);
|
||||||
// IS31FL3737_write_pwm_buffer( addr2, g_pwm_buffer[1] );
|
// IS31FL3737_write_pwm_buffer(addr2, g_pwm_buffer[1]);
|
||||||
}
|
}
|
||||||
g_pwm_buffer_update_required = false;
|
g_pwm_buffer_update_required = false;
|
||||||
}
|
}
|
||||||
@@ -229,7 +216,7 @@ void IS31FL3737_update_led_control_registers(uint8_t addr1, uint8_t addr2) {
|
|||||||
IS31FL3737_write_register(addr1, ISSI_COMMANDREGISTER, ISSI_PAGE_LEDCONTROL);
|
IS31FL3737_write_register(addr1, ISSI_COMMANDREGISTER, ISSI_PAGE_LEDCONTROL);
|
||||||
for (int i = 0; i < 24; i++) {
|
for (int i = 0; i < 24; i++) {
|
||||||
IS31FL3737_write_register(addr1, i, g_led_control_registers[0][i]);
|
IS31FL3737_write_register(addr1, i, g_led_control_registers[0][i]);
|
||||||
// IS31FL3737_write_register(addr2, i, g_led_control_registers[1][i] );
|
// IS31FL3737_write_register(addr2, i, g_led_control_registers[1][i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -16,8 +16,7 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef IS31FL3737_DRIVER_H
|
#pragma once
|
||||||
#define IS31FL3737_DRIVER_H
|
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
@@ -202,5 +201,3 @@ void IS31FL3737_update_led_control_registers(uint8_t addr1, uint8_t addr2);
|
|||||||
#define L_10 0xBB
|
#define L_10 0xBB
|
||||||
#define L_11 0xBC
|
#define L_11 0xBC
|
||||||
#define L_12 0xBD
|
#define L_12 0xBD
|
||||||
|
|
||||||
#endif // IS31FL3737_DRIVER_H
|
|
||||||
@@ -224,6 +224,8 @@ void oled_write_raw_P(const char *data, uint16_t size);
|
|||||||
// Advances the cursor while writing, inverts the pixels if true
|
// Advances the cursor while writing, inverts the pixels if true
|
||||||
// Advances the cursor to the next page, wiring ' ' to the remainder of the current page
|
// Advances the cursor to the next page, wiring ' ' to the remainder of the current page
|
||||||
# define oled_write_ln_P(data, invert) oled_write(data, invert)
|
# define oled_write_ln_P(data, invert) oled_write(data, invert)
|
||||||
|
|
||||||
|
# define oled_write_raw_P(data, size) oled_write_raw(data, size)
|
||||||
#endif // defined(__AVR__)
|
#endif // defined(__AVR__)
|
||||||
|
|
||||||
// Can be used to manually turn on the screen if it is off
|
// Can be used to manually turn on the screen if it is off
|
||||||
|
|||||||
@@ -47,7 +47,7 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
#define MATRIX_ROW_PINS { B0, B1, B2, A15, A10 }
|
#define MATRIX_ROW_PINS { B0, B1, B2, A15, A10 }
|
||||||
#define MATRIX_COL_PINS { A2, A3, A6, B14, B15, A8, A9, A7, B3, B4, C14, C15, C13, B5, B6 }
|
#define MATRIX_COL_PINS { A2, A3, A6, B14, B15, A8, A9, A7, B3, B4, C15, C14, C13, B5, B6 }
|
||||||
#define UNUSED_PINS { A0, A1, A9, B7, B8, B9, B10, B11, B12, B13 }
|
#define UNUSED_PINS { A0, A1, A9, B7, B8, B9, B10, B11, B12, B13 }
|
||||||
#define DIODE_DIRECTION COL2ROW
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#define EE_HANDS
|
||||||
|
|
||||||
|
/* Limit max RGB LED current to avoid tripping controller fuse. */
|
||||||
|
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
enum layer {
|
||||||
|
LAYER_DEFAULT,
|
||||||
|
LAYER_LOWER,
|
||||||
|
LAYER_RAISE,
|
||||||
|
LAYER_ADJUST,
|
||||||
|
};
|
||||||
|
|
||||||
|
#define LY_LWR MO(LAYER_LOWER)
|
||||||
|
#define LY_RSE MO(LAYER_RAISE)
|
||||||
|
|
||||||
|
#define KY_CESC LCTL_T(KC_ESC)
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/* Default layer: http://www.keyboard-layout-editor.com/#/gists/08d9827d916662a9414f48805aa895a5 */
|
||||||
|
[LAYER_DEFAULT] = LAYOUT(
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||||
|
KY_CESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
||||||
|
KC_LALT, LY_LWR, KC_SPC, KC_ENT, LY_RSE, KC_RGUI
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Lower layer: http://www.keyboard-layout-editor.com/#/gists/c3fba5eaa2cd70fdfbdbc0f9e34d3bc0 */
|
||||||
|
[LAYER_LOWER] = LAYOUT(
|
||||||
|
_______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
|
||||||
|
_______, _______, _______, KC_PIPE, KC_TILD, KC_DEL, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, _______,
|
||||||
|
_______, _______, _______, KC_BSLS, KC_GRV, KC_INS, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Raise layer: http://www.keyboard-layout-editor.com/#/gists/08b44355d4ca85d294bad9e2821f91d7 */
|
||||||
|
[LAYER_RAISE] = LAYOUT(
|
||||||
|
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
|
||||||
|
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_HOME, KC_PGUP,
|
||||||
|
_______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_END, KC_PGDN,
|
||||||
|
_______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Adjust layer: http://www.keyboard-layout-editor.com/#/gists/77e7572e077b36a23eb2086017e16fee */
|
||||||
|
[LAYER_ADJUST] = LAYOUT(
|
||||||
|
KC_CAPS, _______, KC_MPLY, KC_VOLU, KC_MSTP, _______, EEP_RST, RESET, KC_PSCR, KC_SLCK, KC_PAUS, _______,
|
||||||
|
_______, _______, KC_MPRV, KC_VOLD, KC_MNXT, _______, RGB_RMOD, RGB_VAD, RGB_VAI, RGB_MOD, RGB_HUI, RGB_SAI,
|
||||||
|
_______, _______, _______, KC_MUTE, _______, _______, RGB_SPD, RGB_SPI, _______, _______, RGB_HUD, RGB_SAD,
|
||||||
|
_______, _______, _______, RGB_TOG, _______, _______
|
||||||
|
),
|
||||||
|
};
|
||||||
|
|
||||||
|
layer_state_t layer_state_set_user(layer_state_t state) {
|
||||||
|
return update_tri_layer_state(state, LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST);
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
# bcat's Corne layout
|
||||||
|
|
||||||
|
This split ergo layout mirrors
|
||||||
|
[my Lily58 layout](https://github.com/qmk/qmk_firmware/tree/master/keyboards/lily58/keymaps/bcat)
|
||||||
|
with the number row removed and RGB controls added. See that layout's docs for
|
||||||
|
more details on the principles that went into the layout.
|
||||||
|
|
||||||
|
## Default layer
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
([KLE](http://www.keyboard-layout-editor.com/#/gists/08d9827d916662a9414f48805aa895a5))
|
||||||
|
|
||||||
|
## Lower layer
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
([KLE](http://www.keyboard-layout-editor.com/#/gists/c3fba5eaa2cd70fdfbdbc0f9e34d3bc0))
|
||||||
|
|
||||||
|
## Raise layer
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
([KLE](http://www.keyboard-layout-editor.com/#/gists/08b44355d4ca85d294bad9e2821f91d7))
|
||||||
|
|
||||||
|
## Adjust layer
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
([KLE](http://www.keyboard-layout-editor.com/#/gists/77e7572e077b36a23eb2086017e16fee))
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
BOOTLOADER = atmel-dfu # Elite-C
|
||||||
|
|
||||||
|
RGB_MATRIX_ENABLE = WS2812 # per-key RGB and underglow
|
||||||
@@ -0,0 +1,229 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2019 Yiancar-Designs
|
||||||
|
|
||||||
|
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 0x8968
|
||||||
|
#define PRODUCT_ID 0x4447
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER Yiancar-Designs
|
||||||
|
#define PRODUCT Doppelganger
|
||||||
|
#define DESCRIPTION A custom split keyboard
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 10
|
||||||
|
#define MATRIX_COLS 9
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Keyboard Matrix Assignments
|
||||||
|
*
|
||||||
|
* Change this to how you wired your keyboard
|
||||||
|
* COLS: AVR pins used for columns, left to right
|
||||||
|
* ROWS: AVR pins used for rows, top to bottom
|
||||||
|
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
|
||||||
|
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#define SPLIT_HAND_PIN D4
|
||||||
|
|
||||||
|
#define MATRIX_ROW_PINS { E6, F1, C7, F7, F6 }
|
||||||
|
#define MATRIX_COL_PINS { F4, F0, B7, B3, B2, B1, D5, D3, D2 }
|
||||||
|
#define UNUSED_PINS
|
||||||
|
|
||||||
|
#define MATRIX_ROW_PINS_RIGHT { D7, D6, D4, E6, B5 }
|
||||||
|
#define MATRIX_COL_PINS_RIGHT { F1, F0, F4, F5, F6, F7, C7, C6, B6 }
|
||||||
|
|
||||||
|
/* COL2ROW, ROW2COL*/
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
|
||||||
|
*/
|
||||||
|
// #define USE_I2C
|
||||||
|
#define SOFT_SERIAL_PIN D1 // or D1, D2, D3, E6
|
||||||
|
|
||||||
|
// #define BACKLIGHT_PIN B7
|
||||||
|
// #define BACKLIGHT_BREATHING
|
||||||
|
// #define BACKLIGHT_LEVELS 3
|
||||||
|
|
||||||
|
#define RGB_DI_PIN B4
|
||||||
|
// #ifdef RGB_DI_PIN
|
||||||
|
#define RGBLED_NUM 2
|
||||||
|
#define RGBLIGHT_SPLIT
|
||||||
|
#define RGBLED_SPLIT { 1, 1 }
|
||||||
|
// #define RGBLIGHT_HUE_STEP 8
|
||||||
|
// #define RGBLIGHT_SAT_STEP 8
|
||||||
|
// #define RGBLIGHT_VAL_STEP 8
|
||||||
|
// #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
|
||||||
|
// #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
|
||||||
|
// /*== all animations enable ==*/
|
||||||
|
// #define RGBLIGHT_ANIMATIONS
|
||||||
|
// /*== or choose animations ==*/
|
||||||
|
// #define RGBLIGHT_EFFECT_BREATHING
|
||||||
|
// #define RGBLIGHT_EFFECT_RAINBOW_MOOD
|
||||||
|
// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
|
||||||
|
// #define RGBLIGHT_EFFECT_SNAKE
|
||||||
|
// #define RGBLIGHT_EFFECT_KNIGHT
|
||||||
|
// #define RGBLIGHT_EFFECT_CHRISTMAS
|
||||||
|
// #define RGBLIGHT_EFFECT_STATIC_GRADIENT
|
||||||
|
// #define RGBLIGHT_EFFECT_RGB_TEST
|
||||||
|
// #define RGBLIGHT_EFFECT_ALTERNATING
|
||||||
|
// /*== customize breathing effect ==*/
|
||||||
|
// /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
|
||||||
|
// #define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
|
||||||
|
// /*==== use exp() and sin() ====*/
|
||||||
|
// #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
|
||||||
|
// #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
|
||||||
|
// #endif
|
||||||
|
|
||||||
|
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||||
|
#define DEBOUNCE 5
|
||||||
|
|
||||||
|
/* define if matrix has ghost (lacks anti-ghosting diodes) */
|
||||||
|
//#define MATRIX_HAS_GHOST
|
||||||
|
|
||||||
|
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||||
|
#define LOCKING_SUPPORT_ENABLE
|
||||||
|
/* Locking resynchronize hack */
|
||||||
|
#define LOCKING_RESYNC_ENABLE
|
||||||
|
|
||||||
|
/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
|
||||||
|
* This is userful for the Windows task manager shortcut (ctrl+shift+esc).
|
||||||
|
*/
|
||||||
|
// #define GRAVE_ESC_CTRL_OVERRIDE
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Force NKRO
|
||||||
|
*
|
||||||
|
* Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
|
||||||
|
* state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
|
||||||
|
* makefile for this to work.)
|
||||||
|
*
|
||||||
|
* If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
|
||||||
|
* until the next keyboard reset.
|
||||||
|
*
|
||||||
|
* NKRO may prevent your keystrokes from being detected in the BIOS, but it is
|
||||||
|
* fully operational during normal computer usage.
|
||||||
|
*
|
||||||
|
* For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
|
||||||
|
* or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
|
||||||
|
* bootmagic, NKRO mode will always be enabled until it is toggled again during a
|
||||||
|
* power-up.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
//#define FORCE_NKRO
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Magic Key Options
|
||||||
|
*
|
||||||
|
* Magic keys are hotkey commands that allow control over firmware functions of
|
||||||
|
* the keyboard. They are best used in combination with the HID Listen program,
|
||||||
|
* found here: https://www.pjrc.com/teensy/hid_listen.html
|
||||||
|
*
|
||||||
|
* The options below allow the magic key functionality to be changed. This is
|
||||||
|
* useful if your keyboard/keypad is missing keys and you want magic key support.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* key combination for magic key command */
|
||||||
|
/* defined by default; to change, uncomment and set to the combination you want */
|
||||||
|
// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT)
|
||||||
|
|
||||||
|
/* control how magic key switches layers */
|
||||||
|
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
|
||||||
|
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
|
||||||
|
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
|
||||||
|
|
||||||
|
/* override magic key keymap */
|
||||||
|
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
|
||||||
|
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
|
||||||
|
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
|
||||||
|
//#define MAGIC_KEY_HELP H
|
||||||
|
//#define MAGIC_KEY_HELP_ALT SLASH
|
||||||
|
//#define MAGIC_KEY_DEBUG D
|
||||||
|
//#define MAGIC_KEY_DEBUG_MATRIX X
|
||||||
|
//#define MAGIC_KEY_DEBUG_KBD K
|
||||||
|
//#define MAGIC_KEY_DEBUG_MOUSE M
|
||||||
|
//#define MAGIC_KEY_VERSION V
|
||||||
|
//#define MAGIC_KEY_STATUS S
|
||||||
|
//#define MAGIC_KEY_CONSOLE C
|
||||||
|
//#define MAGIC_KEY_LAYER0 0
|
||||||
|
//#define MAGIC_KEY_LAYER0_ALT GRAVE
|
||||||
|
//#define MAGIC_KEY_LAYER1 1
|
||||||
|
//#define MAGIC_KEY_LAYER2 2
|
||||||
|
//#define MAGIC_KEY_LAYER3 3
|
||||||
|
//#define MAGIC_KEY_LAYER4 4
|
||||||
|
//#define MAGIC_KEY_LAYER5 5
|
||||||
|
//#define MAGIC_KEY_LAYER6 6
|
||||||
|
//#define MAGIC_KEY_LAYER7 7
|
||||||
|
//#define MAGIC_KEY_LAYER8 8
|
||||||
|
//#define MAGIC_KEY_LAYER9 9
|
||||||
|
//#define MAGIC_KEY_BOOTLOADER B
|
||||||
|
//#define MAGIC_KEY_BOOTLOADER_ALT ESC
|
||||||
|
//#define MAGIC_KEY_LOCK CAPS
|
||||||
|
//#define MAGIC_KEY_EEPROM E
|
||||||
|
//#define MAGIC_KEY_EEPROM_CLEAR BSPACE
|
||||||
|
//#define MAGIC_KEY_NKRO N
|
||||||
|
//#define MAGIC_KEY_SLEEP_LED Z
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Feature disable options
|
||||||
|
* These options are also useful to firmware size reduction.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* disable debug print */
|
||||||
|
//#define NO_DEBUG
|
||||||
|
|
||||||
|
/* disable print */
|
||||||
|
//#define NO_PRINT
|
||||||
|
|
||||||
|
/* disable action features */
|
||||||
|
//#define NO_ACTION_LAYER
|
||||||
|
//#define NO_ACTION_TAPPING
|
||||||
|
//#define NO_ACTION_ONESHOT
|
||||||
|
//#define NO_ACTION_MACRO
|
||||||
|
//#define NO_ACTION_FUNCTION
|
||||||
|
|
||||||
|
/*
|
||||||
|
* MIDI options
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Prevent use of disabled MIDI features in the keymap */
|
||||||
|
//#define MIDI_ENABLE_STRICT 1
|
||||||
|
|
||||||
|
/* enable basic MIDI features:
|
||||||
|
- MIDI notes can be sent when in Music mode is on
|
||||||
|
*/
|
||||||
|
//#define MIDI_BASIC
|
||||||
|
|
||||||
|
/* enable advanced MIDI features:
|
||||||
|
- MIDI notes can be added to the keymap
|
||||||
|
- Octave shift and transpose
|
||||||
|
- Virtual sustain, portamento, and modulation wheel
|
||||||
|
- etc.
|
||||||
|
*/
|
||||||
|
//#define MIDI_ADVANCED
|
||||||
|
|
||||||
|
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
|
||||||
|
//#define MIDI_TONE_KEYCODE_OCTAVES 1
|
||||||
|
|
||||||
|
/* Bootmagic Lite key configuration */
|
||||||
|
#define BOOTMAGIC_LITE_ROW 0
|
||||||
|
#define BOOTMAGIC_LITE_COLUMN 2
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
/* Copyright 2019 Yiancar-Designs
|
||||||
|
*
|
||||||
|
* 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 "doppelganger.h"
|
||||||
|
|
||||||
|
void keyboard_pre_init_kb (void) {
|
||||||
|
setPinOutput(C6);
|
||||||
|
setPinOutput(B0);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool led_update_kb(led_t led_state) {
|
||||||
|
bool res = led_update_user(led_state);
|
||||||
|
if(res) {
|
||||||
|
// writePin sets the pin high for 1 and low for 0.
|
||||||
|
// In this example the pins are inverted, setting
|
||||||
|
// it low/0 turns it on, and high/1 turns the LED off.
|
||||||
|
// This behavior depends on whether the LED is between the pin
|
||||||
|
// and VCC or the pin and GND.
|
||||||
|
writePin(C6, !led_state.caps_lock);
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
__attribute__((weak)) layer_state_t layer_state_set_user(layer_state_t state) {
|
||||||
|
writePin(B0, !(state & (1UL << 1)));
|
||||||
|
return state;
|
||||||
|
}
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
/* Copyright 2019 Yiancar-Designs
|
||||||
|
*
|
||||||
|
* 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 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( \
|
||||||
|
L01, L02, L03, L04, L05, L06, L07, L08, R00, R01, R02, R03, R04, R05, R06, R07, \
|
||||||
|
L10, L11, L12, L13, L14, L15, L16, L17, R10, R11, R12, R13, R14, R15, R16, R17, R18, \
|
||||||
|
L20, L21, L22, L23, L24, L25, L26, L27, R20, R21, R22, R23, R24, R25, R26, R27, R28, \
|
||||||
|
L30, L31, L32, L33, L34, L35, L36, L37, L38, R31, R32, R33, R34, R35, R36, R37, R38, \
|
||||||
|
L40, L41, L42, L43, L44, L45, L46, R42, R43, R44, R45, R46, R47, R48 \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{ KC_NO, L01, L02, L03, L04, L05, L06, L07, L08 }, \
|
||||||
|
{ L10, L11, L12, L13, L14, L15, L16, L17, KC_NO }, \
|
||||||
|
{ L20, L21, L22, L23, L24, L25, L26, L27, KC_NO }, \
|
||||||
|
{ L30, L31, L32, L33, L34, L35, L36, L37, L38 }, \
|
||||||
|
{ L40, L41, L42, L43, L44, L45, L46, KC_NO, KC_NO }, \
|
||||||
|
{ R00, R01, R02, R03, R04, R05, R06, R07, KC_NO }, \
|
||||||
|
{ R10, R11, R12, R13, R14, R15, R16, R17, R18 }, \
|
||||||
|
{ R20, R21, R22, R23, R24, R25, R26, R27, R28 }, \
|
||||||
|
{ KC_NO, R31, R32, R33, R34, R35, R36, R37, R38 }, \
|
||||||
|
{ KC_NO, KC_NO, R42, R43, R44, R45, R46, R47, R48 }, \
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "Doppelganger",
|
||||||
|
"url": "",
|
||||||
|
"maintainer": "yiancar",
|
||||||
|
"width": 20,
|
||||||
|
"height": 5.25,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT": {
|
||||||
|
"layout": [{"label":"F1", "x":1, "y":0}, {"label":"Esc", "x":2.5, "y":0}, {"label":"1", "x":3.5, "y":0}, {"label":"2", "x":4.5, "y":0}, {"label":"3", "x":5.5, "y":0}, {"label":"4", "x":6.5, "y":0}, {"label":"5", "x":7.5, "y":0}, {"label":"6", "x":8.5, "y":0}, {"label":"7", "x":10.5, "y":0}, {"label":"8", "x":11.5, "y":0}, {"label":"9", "x":12.5, "y":0}, {"label":"0", "x":13.5, "y":0}, {"label":"_", "x":14.5, "y":0}, {"label":"+", "x":15.5, "y":0}, {"x":16.5, "y":0}, {"x":17.5, "y":0}, {"label":"F2", "x":0, "y":1}, {"label":"F3", "x":1, "y":1}, {"label":"Tab", "x":2.5, "y":1, "w":1.5}, {"label":"Q", "x":4, "y":1}, {"label":"W", "x":5, "y":1}, {"label":"E", "x":6, "y":1}, {"label":"R", "x":7, "y":1}, {"label":"T", "x":8, "y":1}, {"label":"Y", "x":10, "y":1}, {"label":"U", "x":11, "y":1}, {"label":"I", "x":12, "y":1}, {"label":"O", "x":13, "y":1}, {"label":"P", "x":14, "y":1}, {"label":"{", "x":15, "y":1}, {"label":"}", "x":16, "y":1}, {"label":"|", "x":17, "y":1, "w":1.5}, {"label":"Pg Up", "x":19, "y":1}, {"label":"F4", "x":0, "y":2}, {"label":"F5", "x":1, "y":2}, {"label":"Caps Lock", "x":2.5, "y":2, "w":1.75}, {"label":"A", "x":4.25, "y":2}, {"label":"S", "x":5.25, "y":2}, {"label":"D", "x":6.25, "y":2}, {"label":"F", "x":7.25, "y":2}, {"label":"G", "x":8.25, "y":2}, {"label":"H", "x":10.25, "y":2}, {"label":"J", "x":11.25, "y":2}, {"label":"K", "x":12.25, "y":2}, {"label":"L", "x":13.25, "y":2}, {"label":":", "x":14.25, "y":2}, {"label":"\"", "x":15.25, "y":2}, {"label":"~", "x":16.25, "y":2}, {"label":"Enter", "x":17.25, "y":2, "w":1.25}, {"label":"Pg Dn", "x":19, "y":2}, {"label":"F6", "x":0, "y":3}, {"label":"F7", "x":1, "y":3}, {"label":"Shift", "x":2.5, "y":3, "w":1.25}, {"label":"|", "x":3.75, "y":3}, {"label":"Z", "x":4.75, "y":3}, {"label":"X", "x":5.75, "y":3}, {"label":"C", "x":6.75, "y":3}, {"label":"V", "x":7.75, "y":3}, {"label":"B", "x":8.75, "y":3}, {"label":"N", "x":10.75, "y":3}, {"label":"M", "x":11.75, "y":3}, {"label":"<", "x":12.75, "y":3}, {"label":">", "x":13.75, "y":3}, {"label":"?", "x":14.75, "y":3}, {"label":"Shift", "x":15.75, "y":3, "w":1.75}, {"label":"Up", "x":17.75, "y":3.25}, {"label":"Fn", "x":19, "y":3}, {"label":"F8", "x":0, "y":4}, {"label":"F9", "x":1, "y":4}, {"label":"Ctrl", "x":2.5, "y":4, "w":1.25}, {"label":"Win", "x":3.75, "y":4}, {"label":"Alt", "x":4.75, "y":4, "w":1.25}, {"x":6, "y":4, "w":2.25}, {"x":8.25, "y":4}, {"x":10.25, "y":4, "w":2.75}, {"label":"Alt", "x":13, "y":4, "w":1.25}, {"x":14.25, "y":4}, {"label":"Win", "x":15.25, "y":4, "w":1.25}, {"label":"Left", "x":16.75, "y":4.25}, {"label":"Down", "x":17.75, "y":4.25}, {"label":"Right", "x":18.75, "y":4.25}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
/* Copyright 2019 Yiancar-Designs
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[0] = LAYOUT( /* Base */
|
||||||
|
KC_F1, KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
|
||||||
|
KC_F2, KC_F3, 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_F4, KC_F5, 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_F6, KC_F7, 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_F8, KC_F9, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
|
),
|
||||||
|
[1] = LAYOUT( /* FN1 */
|
||||||
|
RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
RGB_MOD, RGB_RMOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
RGB_HUI, RGB_HUD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
RGB_SAI, RGB_SAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
RGB_VAI, RGB_VAD, 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 default keymap for doppelganger
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
# Doppelganger
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
A Split keyboard co-designed with Cable Car designs
|
||||||
|
|
||||||
|
* Keyboard Maintainer: [Yiancar-Designs](https://github.com/yiancar)
|
||||||
|
* Hardware Supported: The specific set of pcbs which use 2 ATMEGA-32u4
|
||||||
|
* Hardware Availability: Contact Noahf#2971 on discord!
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make doppelganger: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,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 = yes # Mouse keys
|
||||||
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
|
CONSOLE_ENABLE = no # Console for debug
|
||||||
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
|
NKRO_ENABLE = no # USB Nkey Rollover
|
||||||
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
|
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
||||||
|
MIDI_ENABLE = no # MIDI support
|
||||||
|
UNICODE_ENABLE = no # Unicode
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
|
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||||
|
HD44780_ENABLE = no # Enable support for HD44780 based LCDs
|
||||||
|
SPLIT_KEYBOARD = yes
|
||||||
@@ -37,11 +37,17 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#define DEBOUNCE 5
|
#define DEBOUNCE 5
|
||||||
|
|
||||||
/* number of backlight levels */
|
/* number of backlight levels */
|
||||||
#define BACKLIGHT_LEVELS 3
|
// #define BACKLIGHT_LEVELS 3
|
||||||
|
|
||||||
|
#undef BACKLIGHT_PIN
|
||||||
|
#define BACKLIGHT_PINS { B1, B2, B3, E6 }
|
||||||
|
#define BACKLIGHT_LED_COUNT 4
|
||||||
|
#define BACKLIGHT_LEVELS 10
|
||||||
|
#define BACKLIGHT_ON_STATE 1
|
||||||
|
|
||||||
#define RGBLIGHT_ANIMATIONS
|
#define RGBLIGHT_ANIMATIONS
|
||||||
#define RGB_DI_PIN D6
|
#define RGB_DI_PIN D6
|
||||||
#define RGBLED_NUM 17
|
#define RGBLED_NUM 18
|
||||||
|
|
||||||
/* Set to top left most key */
|
/* Set to top left most key */
|
||||||
#define BOOTMAGIC_LITE_ROW 4
|
#define BOOTMAGIC_LITE_ROW 4
|
||||||
|
|||||||
@@ -16,11 +16,19 @@
|
|||||||
#include QMK_KEYBOARD_H
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
[0] = LAYOUT_tkl_ansi(\
|
[0] = LAYOUT_tkl_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_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_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL,KC_BSPC, KC_INS ,KC_HOME,KC_PGUP, \
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL,KC_BSPC, KC_INS ,KC_HOME,KC_PGUP,
|
||||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC,KC_BSLS, KC_DEL ,KC_END ,KC_PGDN, \
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC,KC_BSLS, KC_DEL ,KC_END ,KC_PGDN,
|
||||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT, KC_ENT, \
|
KC_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_UP, \
|
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_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI, KC_APP,KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT) \
|
KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI, MO(1),KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT),
|
||||||
|
|
||||||
|
[1] = LAYOUT_tkl_ansi(
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
BL_TOGG, BL_STEP, BL_INC, BL_DEC, 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,
|
||||||
|
RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
|
||||||
};
|
};
|
||||||
@@ -14,13 +14,7 @@ You should have received a copy of the GNU General Public License
|
|||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <util/delay.h>
|
#include "quantum.h"
|
||||||
#include <avr/io.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include "matrix.h"
|
|
||||||
#include "util.h"
|
|
||||||
#include "print.h"
|
|
||||||
#include "debug.h"
|
|
||||||
|
|
||||||
static uint8_t debouncing = DEBOUNCE;
|
static uint8_t debouncing = DEBOUNCE;
|
||||||
|
|
||||||
@@ -54,18 +48,23 @@ void matrix_scan_user(void) {
|
|||||||
|
|
||||||
void backlight_init_ports(void)
|
void backlight_init_ports(void)
|
||||||
{
|
{
|
||||||
DDRD |= 0b11010000;
|
|
||||||
PORTD &= ~0b01010000;
|
}
|
||||||
PORTD |= 0b10000000;
|
|
||||||
DDRB |= 0b00011111;
|
void indicator_init_ports(void) {
|
||||||
PORTB &= ~0b00001110;
|
|
||||||
PORTB |= 0b00010001;
|
// Num LED
|
||||||
DDRE |= 0b01000000;
|
setPinOutput(B4);
|
||||||
PORTE &= ~0b01000000;
|
|
||||||
|
// Caps Lock
|
||||||
|
setPinOutput(B0);
|
||||||
|
|
||||||
|
// Scroll Lock
|
||||||
|
setPinOutput(D7);
|
||||||
}
|
}
|
||||||
|
|
||||||
void matrix_init(void) {
|
void matrix_init(void) {
|
||||||
backlight_init_ports();
|
indicator_init_ports();
|
||||||
unselect_cols();
|
unselect_cols();
|
||||||
init_rows();
|
init_rows();
|
||||||
|
|
||||||
|
|||||||
@@ -3,9 +3,9 @@
|
|||||||
Non official firmware for custom TKL Korean keyboard made by Duck.
|
Non official firmware for custom TKL Korean keyboard made by Duck.
|
||||||
Group buy was run December 2018 via [geekhack](https://geekhack.org/index.php?topic=98581.0) with 100 keyboards total.
|
Group buy was run December 2018 via [geekhack](https://geekhack.org/index.php?topic=98581.0) with 100 keyboards total.
|
||||||
|
|
||||||
Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin)
|
* Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin)
|
||||||
Hardware Supported: Duck Eagle/Viper PCB Ver 2.0, Atmega32u4
|
* Hardware Supported: Duck Orion V3 PCB Ver 2.1
|
||||||
Hardware Availability: Wait until GB of the next revision
|
* Hardware Availability: Wait until GB of the next revision
|
||||||
|
|
||||||
Make example for this keyboard (after setting up your build environment):
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
@@ -13,7 +13,7 @@ Make example for this keyboard (after setting up your build environment):
|
|||||||
|
|
||||||
**Reset Key:** To put the Orion V3 into reset, hold Backspace key (`K4N`) while plugging in.
|
**Reset Key:** To put the Orion V3 into reset, hold Backspace key (`K4N`) while plugging in.
|
||||||
|
|
||||||
**CAUTION:** At this time 10/03/19 lighting has not been tested fully and may not properly work.
|
**CAUTION:** At this time 12/19/19 layer indicator lighting has not been implemented by 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).
|
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).
|
||||||
|
|
||||||
@@ -22,9 +22,9 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
|
|||||||
The Orion V3 PCB consists of:
|
The Orion V3 PCB consists of:
|
||||||
|
|
||||||
### Microchips
|
### Microchips
|
||||||
2 74HC237D 3-to-8 line decoders
|
2 74HC237D 3-to-8 line decoders U1, U2
|
||||||
1 Atmega32u4 microcontroller
|
1 Atmega32u4 microcontroller
|
||||||
2 WS2811 LED controller
|
2 WS2811 LED controller U5, U6
|
||||||
|
|
||||||
## Notes
|
## Notes
|
||||||
Special thanks to Marcus aka Keebology for doing this remotely and mapping the matrix.
|
Special thanks to Marcus aka Keebology for doing this remotely and mapping the matrix, indicator LEDs, and backlight LEDs.
|
||||||
@@ -16,48 +16,26 @@
|
|||||||
#include "v3.h"
|
#include "v3.h"
|
||||||
#include "indicator_leds.h"
|
#include "indicator_leds.h"
|
||||||
|
|
||||||
enum BACKLIGHT_AREAS {
|
// Alphas PB1
|
||||||
BACKLIGHT_ALPHAS = 0b00000010,
|
// Navigation Cluster: PB2
|
||||||
BACKLIGHT_MODNUM = 0b00001000
|
// Number Row, Mods: PB3
|
||||||
};
|
// Function Row: PE6
|
||||||
|
|
||||||
void backlight_set(uint8_t level) {
|
// Other than using RGB or LED matrix, QMK cannot turn on specific zones
|
||||||
switch(level) {
|
// of backlight LEDs. Unfortunately, Duck PCBs do not follow this design
|
||||||
case 0:
|
// and instead use multiple pins connected to each of these zones. QMK is
|
||||||
PORTB |= BACKLIGHT_ALPHAS;
|
// only able to control them ALL with the current default mechanisms.
|
||||||
PORTB |= BACKLIGHT_MODNUM;
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
PORTB &= ~BACKLIGHT_ALPHAS;
|
|
||||||
PORTB |= BACKLIGHT_MODNUM;
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
PORTB |= BACKLIGHT_ALPHAS;
|
|
||||||
PORTB &= ~BACKLIGHT_MODNUM;
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
PORTB &= ~BACKLIGHT_ALPHAS;
|
|
||||||
PORTB &= ~BACKLIGHT_MODNUM;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Port from backlight_update_state
|
// Locking indicator LEDs
|
||||||
void led_set_kb(uint8_t usb_led) {
|
// The Duck Orion V3 has 3 locking indicator LEDs and are located to the right
|
||||||
bool status[8] = {
|
// of the Escape key.
|
||||||
IS_HOST_LED_ON(USB_LED_SCROLL_LOCK), /* LED 3 */
|
bool led_update_kb(led_t led_state) {
|
||||||
IS_HOST_LED_ON(USB_LED_CAPS_LOCK), /* LED 2 */
|
if(led_update_user(led_state)) {
|
||||||
IS_HOST_LED_ON(USB_LED_NUM_LOCK), /* LED 1 */
|
writePin(B0, !led_state.caps_lock);
|
||||||
|
writePin(B4, !led_state.num_lock);
|
||||||
layer_state & (1<<2), /* LED 6 */
|
writePin(D7, !led_state.scroll_lock);
|
||||||
layer_state & (1<<1), /* LED 5 */
|
}
|
||||||
layer_state & (1<<0) ? 0: 1, /* LED 4 */
|
return true;
|
||||||
|
|
||||||
layer_state & (1<<5), /* LED 8 */
|
|
||||||
layer_state & (1<<4) /* LED 7 */
|
|
||||||
};
|
|
||||||
|
|
||||||
indicator_leds_set(status);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
|
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
|||||||
@@ -13,4 +13,5 @@ Jetfire V1
|
|||||||
Lightsaver V3
|
Lightsaver V3
|
||||||
Octagon V1
|
Octagon V1
|
||||||
Octagon V2
|
Octagon V2
|
||||||
|
Orion V3
|
||||||
Viper V2
|
Viper V2
|
||||||
@@ -1,2 +1,3 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include "config_common.h"
|
|
||||||
|
#include "config_common.h"
|
||||||
@@ -1,36 +1,56 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
/* USB Device descriptor parameter */
|
/* USB Device descriptor parameter */
|
||||||
#define VENDOR_ID 0xFEED
|
#define VENDOR_ID 0xFEED
|
||||||
#define PRODUCT_ID 0x1219
|
#define PRODUCT_ID 0x1219
|
||||||
#define DEVICE_VER 0x0001
|
#define DEVICE_VER 0x0001
|
||||||
#define MANUFACTURER DZTECH
|
#define MANUFACTURER DZTECH
|
||||||
|
|
||||||
#define PRODUCT DZ60RGB
|
#define PRODUCT DZ60RGB
|
||||||
#define DESCRIPTION DZ60 ARM RGB keyboard
|
#define DESCRIPTION DZ60 ARM RGB keyboard
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
#define MATRIX_ROWS 5
|
#define MATRIX_ROWS 5
|
||||||
#define MATRIX_COLS 14
|
#define MATRIX_COLS 14
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Keyboard Matrix Assignments
|
||||||
|
*
|
||||||
|
* Change this to how you wired your keyboard
|
||||||
|
* COLS: AVR pins used for columns, left to right
|
||||||
|
* ROWS: AVR pins used for rows, top to bottom
|
||||||
|
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
|
||||||
|
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
||||||
|
*
|
||||||
|
*/
|
||||||
#define MATRIX_ROW_PINS { B1, B10, B11, B14, B12 }
|
#define MATRIX_ROW_PINS { B1, B10, B11, B14, B12 }
|
||||||
#define MATRIX_COL_PINS {A6, A7, B0, B13, B15, A8, A15, B3, B4, B5, B8, B9, C13, C14 }
|
#define MATRIX_COL_PINS { A6, A7, B0, B13, B15, A8, A15, B3, B4, B5, B8, B9, C13, C14 }
|
||||||
|
#define UNUSED_PINS
|
||||||
/* #define UNUSED_PINS {A0,A1,A2, A3,A4,A9,A10,C15,A13,A14,B2}*/
|
|
||||||
|
|
||||||
|
/* COL2ROW, ROW2COL*/
|
||||||
#define DIODE_DIRECTION COL2ROW
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||||
#define DEBOUNCE 3
|
#define DEBOUNCE 3
|
||||||
|
|
||||||
|
/* disable these deprecated features by default */
|
||||||
|
#ifndef LINK_TIME_OPTIMIZATION_ENABLE
|
||||||
|
# define NO_ACTION_MACRO
|
||||||
|
# define NO_ACTION_FUNCTION
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef RGB_MATRIX_ENABLE
|
#ifdef RGB_MATRIX_ENABLE
|
||||||
#define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
|
# define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
|
||||||
#define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
|
# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
|
||||||
#define RGB_MATRIX_KEYPRESSES
|
# define RGB_MATRIX_KEYPRESSES
|
||||||
#define RGB_MATRIX_LED_PROCESS_LIMIT 4
|
# define RGB_MATRIX_LED_PROCESS_LIMIT 4
|
||||||
#define RGB_MATRIX_LED_FLUSH_LIMIT 26
|
# define RGB_MATRIX_LED_FLUSH_LIMIT 26
|
||||||
#define DISABLE_RGB_MATRIX_SPLASH
|
# define DISABLE_RGB_MATRIX_SPLASH
|
||||||
#define DISABLE_RGB_MATRIX_MULTISPLASH
|
# define DISABLE_RGB_MATRIX_MULTISPLASH
|
||||||
#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
|
# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
|
||||||
#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL
|
# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL
|
||||||
#define DRIVER_ADDR_1 0b1010000
|
# define DRIVER_ADDR_1 0b1010000
|
||||||
#define DRIVER_ADDR_2 0b1010000 // this is here for compliancy reasons.
|
# define DRIVER_ADDR_2 0b1010000 // this is here for compliancy reasons.
|
||||||
#define DRIVER_COUNT 2
|
# define DRIVER_COUNT 2
|
||||||
#define DRIVER_1_LED_TOTAL 63
|
# define DRIVER_1_LED_TOTAL 63
|
||||||
#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
|
# define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
|
||||||
#endif
|
#endif
|
||||||
@@ -1,44 +1,66 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
/* USB Device descriptor parameter */
|
/* USB Device descriptor parameter */
|
||||||
#define VENDOR_ID 0xFEED
|
#define VENDOR_ID 0xFEED
|
||||||
#define PRODUCT_ID 0x1219
|
#define PRODUCT_ID 0x1219
|
||||||
#define DEVICE_VER 0x0002
|
#define DEVICE_VER 0x0002
|
||||||
#define MANUFACTURER DZTECH
|
#define MANUFACTURER DZTECH
|
||||||
|
|
||||||
#define PRODUCT DZ60RGB
|
#define PRODUCT DZ60RGB
|
||||||
#define DESCRIPTION DZ60 AVR RGB keyboard
|
#define DESCRIPTION DZ60 AVR RGB keyboard
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
#define MATRIX_ROWS 5
|
#define MATRIX_ROWS 5
|
||||||
#define MATRIX_COLS 14
|
#define MATRIX_COLS 14
|
||||||
|
|
||||||
#define MATRIX_ROW_PINS {F5, F4, F1, B3, B2 }
|
/*
|
||||||
#define MATRIX_COL_PINS {C7, F7, F6, F0, B0, B1, B4, D7, D6, D4, D5, D3, D2, B7 }
|
* Keyboard Matrix Assignments
|
||||||
|
*
|
||||||
|
* Change this to how you wired your keyboard
|
||||||
|
* COLS: AVR pins used for columns, left to right
|
||||||
|
* ROWS: AVR pins used for rows, top to bottom
|
||||||
|
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
|
||||||
|
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#define MATRIX_ROW_PINS { F5, F4, F1, B3, B2 }
|
||||||
|
#define MATRIX_COL_PINS { C7, F7, F6, F0, B0, B1, B4, D7, D6, D4, D5, D3, D2, B7 }
|
||||||
#define UNUSED_PINS
|
#define UNUSED_PINS
|
||||||
|
|
||||||
|
/* COL2ROW, ROW2COL*/
|
||||||
#define DIODE_DIRECTION COL2ROW
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||||
#define DEBOUNCE 3
|
#define DEBOUNCE 3
|
||||||
|
|
||||||
|
/* disable these deprecated features by default */
|
||||||
|
#ifndef LINK_TIME_OPTIMIZATION_ENABLE
|
||||||
|
# define NO_ACTION_MACRO
|
||||||
|
# define NO_ACTION_FUNCTION
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef RGB_MATRIX_ENABLE
|
#ifdef RGB_MATRIX_ENABLE
|
||||||
#define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
|
# define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
|
||||||
#define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
|
# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
|
||||||
#define RGB_MATRIX_KEYPRESSES
|
# define RGB_MATRIX_KEYPRESSES
|
||||||
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
|
# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
|
||||||
#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
|
# define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
|
||||||
#define DISABLE_RGB_MATRIX_BAND_SAT
|
# define DISABLE_RGB_MATRIX_BAND_SAT
|
||||||
#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
|
# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
|
||||||
#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
|
# define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
|
||||||
#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
|
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
|
||||||
#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
|
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
|
||||||
#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
|
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
|
||||||
#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
|
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
|
||||||
#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
|
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
|
||||||
#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
|
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
|
||||||
#define DISABLE_RGB_MATRIX_SPLASH
|
# define DISABLE_RGB_MATRIX_SPLASH
|
||||||
#define DISABLE_RGB_MATRIX_MULTISPLASH
|
# define DISABLE_RGB_MATRIX_MULTISPLASH
|
||||||
#define DISABLE_RGB_MATRIX_SOLID_SPLASH
|
# define DISABLE_RGB_MATRIX_SOLID_SPLASH
|
||||||
#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
|
# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
|
||||||
#define DISABLE_RGB_MATRIX_DIGITAL_RAIN
|
# define DISABLE_RGB_MATRIX_DIGITAL_RAIN
|
||||||
#define DRIVER_ADDR_1 0b1010000
|
# define DRIVER_ADDR_1 0b1010000
|
||||||
#define DRIVER_ADDR_2 0b1010000 // this is here for compliancy reasons.
|
# define DRIVER_ADDR_2 0b1010000 // this is here for compliancy reasons.
|
||||||
#define DRIVER_COUNT 2
|
# define DRIVER_COUNT 2
|
||||||
#define DRIVER_1_LED_TOTAL 63
|
# define DRIVER_1_LED_TOTAL 63
|
||||||
#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
|
# define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
|
||||||
#endif
|
#endif
|
||||||
@@ -1,2 +1,3 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "config_common.h"
|
#include "config_common.h"
|
||||||
@@ -1,36 +1,56 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
/* USB Device descriptor parameter */
|
/* USB Device descriptor parameter */
|
||||||
#define VENDOR_ID 0xFEED
|
#define VENDOR_ID 0xFEED
|
||||||
#define PRODUCT_ID 0x1220
|
#define PRODUCT_ID 0x1220
|
||||||
#define DEVICE_VER 0x0001
|
#define DEVICE_VER 0x0001
|
||||||
#define MANUFACTURER DZTECH
|
#define MANUFACTURER DZTECH
|
||||||
|
|
||||||
#define PRODUCT DZ60RGB_ANSI
|
#define PRODUCT DZ60RGB_ANSI
|
||||||
#define DESCRIPTION DZ60 ARM RGB keyboard
|
#define DESCRIPTION DZ60 ARM RGB keyboard
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
#define MATRIX_ROWS 5
|
#define MATRIX_ROWS 5
|
||||||
#define MATRIX_COLS 14
|
#define MATRIX_COLS 14
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Keyboard Matrix Assignments
|
||||||
|
*
|
||||||
|
* Change this to how you wired your keyboard
|
||||||
|
* COLS: AVR pins used for columns, left to right
|
||||||
|
* ROWS: AVR pins used for rows, top to bottom
|
||||||
|
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
|
||||||
|
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
||||||
|
*
|
||||||
|
*/
|
||||||
#define MATRIX_ROW_PINS { B1, B10, B11, B14, B12 }
|
#define MATRIX_ROW_PINS { B1, B10, B11, B14, B12 }
|
||||||
#define MATRIX_COL_PINS {A6, A7, B0, B13, B15, A8, A15, B3, B4, B5, B8, B9, C13, C14 }
|
#define MATRIX_COL_PINS { A6, A7, B0, B13, B15, A8, A15, B3, B4, B5, B8, B9, C13, C14 }
|
||||||
|
#define UNUSED_PINS
|
||||||
/* #define UNUSED_PINS {A0,A1,A2, A3,A4,A9,A10,C15,A13,A14,B2}*/
|
|
||||||
|
|
||||||
|
/* COL2ROW, ROW2COL*/
|
||||||
#define DIODE_DIRECTION COL2ROW
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||||
#define DEBOUNCE 3
|
#define DEBOUNCE 3
|
||||||
|
|
||||||
|
/* disable these deprecated features by default */
|
||||||
|
#ifndef LINK_TIME_OPTIMIZATION_ENABLE
|
||||||
|
# define NO_ACTION_MACRO
|
||||||
|
# define NO_ACTION_FUNCTION
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef RGB_MATRIX_ENABLE
|
#ifdef RGB_MATRIX_ENABLE
|
||||||
#define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
|
# define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
|
||||||
#define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
|
# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
|
||||||
#define RGB_MATRIX_KEYPRESSES
|
# define RGB_MATRIX_KEYPRESSES
|
||||||
#define RGB_MATRIX_LED_PROCESS_LIMIT 4
|
# define RGB_MATRIX_LED_PROCESS_LIMIT 4
|
||||||
#define RGB_MATRIX_LED_FLUSH_LIMIT 26
|
# define RGB_MATRIX_LED_FLUSH_LIMIT 26
|
||||||
#define DISABLE_RGB_MATRIX_SPLASH
|
# define DISABLE_RGB_MATRIX_SPLASH
|
||||||
#define DISABLE_RGB_MATRIX_MULTISPLASH
|
# define DISABLE_RGB_MATRIX_MULTISPLASH
|
||||||
#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
|
# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
|
||||||
#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL
|
# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL
|
||||||
#define DRIVER_ADDR_1 0b1010000
|
# define DRIVER_ADDR_1 0b1010000
|
||||||
#define DRIVER_ADDR_2 0b1010000 // this is here for compliancy reasons.
|
# define DRIVER_ADDR_2 0b1010000 // this is here for compliancy reasons.
|
||||||
#define DRIVER_COUNT 2
|
# define DRIVER_COUNT 2
|
||||||
#define DRIVER_1_LED_TOTAL 61
|
# define DRIVER_1_LED_TOTAL 61
|
||||||
#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
|
# define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
|
||||||
#endif
|
#endif
|
||||||
@@ -1,44 +1,66 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
/* USB Device descriptor parameter */
|
/* USB Device descriptor parameter */
|
||||||
#define VENDOR_ID 0xFEED
|
#define VENDOR_ID 0xFEED
|
||||||
#define PRODUCT_ID 0x1220
|
#define PRODUCT_ID 0x1220
|
||||||
#define DEVICE_VER 0x0002
|
#define DEVICE_VER 0x0002
|
||||||
#define MANUFACTURER DZTECH
|
#define MANUFACTURER DZTECH
|
||||||
|
|
||||||
#define PRODUCT DZ60RGB_ANSI
|
#define PRODUCT DZ60RGB_ANSI
|
||||||
#define DESCRIPTION DZ60 AVR RGB keyboard
|
#define DESCRIPTION DZ60 AVR RGB keyboard
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
#define MATRIX_ROWS 5
|
#define MATRIX_ROWS 5
|
||||||
#define MATRIX_COLS 14
|
#define MATRIX_COLS 14
|
||||||
|
|
||||||
#define MATRIX_ROW_PINS {F5, F4, F1, B3, B2 }
|
/*
|
||||||
#define MATRIX_COL_PINS {C7, F7, F6, F0, B0, B1, B4, D7, D6, D4, D5, D3, D2, B7 }
|
* Keyboard Matrix Assignments
|
||||||
|
*
|
||||||
|
* Change this to how you wired your keyboard
|
||||||
|
* COLS: AVR pins used for columns, left to right
|
||||||
|
* ROWS: AVR pins used for rows, top to bottom
|
||||||
|
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
|
||||||
|
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#define MATRIX_ROW_PINS { F5, F4, F1, B3, B2 }
|
||||||
|
#define MATRIX_COL_PINS { C7, F7, F6, F0, B0, B1, B4, D7, D6, D4, D5, D3, D2, B7 }
|
||||||
#define UNUSED_PINS
|
#define UNUSED_PINS
|
||||||
|
|
||||||
|
/* COL2ROW, ROW2COL*/
|
||||||
#define DIODE_DIRECTION COL2ROW
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||||
#define DEBOUNCE 3
|
#define DEBOUNCE 3
|
||||||
|
|
||||||
|
/* disable these deprecated features by default */
|
||||||
|
#ifndef LINK_TIME_OPTIMIZATION_ENABLE
|
||||||
|
# define NO_ACTION_MACRO
|
||||||
|
# define NO_ACTION_FUNCTION
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef RGB_MATRIX_ENABLE
|
#ifdef RGB_MATRIX_ENABLE
|
||||||
#define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
|
# define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
|
||||||
#define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
|
# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
|
||||||
#define RGB_MATRIX_KEYPRESSES
|
# define RGB_MATRIX_KEYPRESSES
|
||||||
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
|
# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
|
||||||
#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
|
# define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
|
||||||
#define DISABLE_RGB_MATRIX_BAND_SAT
|
# define DISABLE_RGB_MATRIX_BAND_SAT
|
||||||
#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
|
# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
|
||||||
#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
|
# define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
|
||||||
#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
|
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
|
||||||
#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
|
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
|
||||||
#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
|
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
|
||||||
#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
|
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
|
||||||
#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
|
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
|
||||||
#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
|
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
|
||||||
#define DISABLE_RGB_MATRIX_SPLASH
|
# define DISABLE_RGB_MATRIX_SPLASH
|
||||||
#define DISABLE_RGB_MATRIX_MULTISPLASH
|
# define DISABLE_RGB_MATRIX_MULTISPLASH
|
||||||
#define DISABLE_RGB_MATRIX_SOLID_SPLASH
|
# define DISABLE_RGB_MATRIX_SOLID_SPLASH
|
||||||
#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
|
# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
|
||||||
#define DISABLE_RGB_MATRIX_DIGITAL_RAIN
|
# define DISABLE_RGB_MATRIX_DIGITAL_RAIN
|
||||||
#define DRIVER_ADDR_1 0b1010000
|
# define DRIVER_ADDR_1 0b1010000
|
||||||
#define DRIVER_ADDR_2 0b1010000 // this is here for compliancy reasons.
|
# define DRIVER_ADDR_2 0b1010000 // this is here for compliancy reasons.
|
||||||
#define DRIVER_COUNT 2
|
# define DRIVER_COUNT 2
|
||||||
#define DRIVER_1_LED_TOTAL 61
|
# define DRIVER_1_LED_TOTAL 61
|
||||||
#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
|
# define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
|
||||||
#endif
|
#endif
|
||||||
@@ -1,2 +1,3 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include "config_common.h"
|
|
||||||
|
#include "config_common.h"
|
||||||
@@ -1,36 +1,56 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
/* USB Device descriptor parameter */
|
/* USB Device descriptor parameter */
|
||||||
#define VENDOR_ID 0xFEED
|
#define VENDOR_ID 0xFEED
|
||||||
#define PRODUCT_ID 0x1221
|
#define PRODUCT_ID 0x1221
|
||||||
#define DEVICE_VER 0x0001
|
#define DEVICE_VER 0x0001
|
||||||
#define MANUFACTURER DZTECH
|
#define MANUFACTURER DZTECH
|
||||||
|
|
||||||
#define PRODUCT DZ60RGB_WKL
|
#define PRODUCT DZ60RGB_WKL
|
||||||
#define DESCRIPTION DZ60 ARM RGB keyboard
|
#define DESCRIPTION DZ60 ARM RGB keyboard
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
#define MATRIX_ROWS 5
|
#define MATRIX_ROWS 5
|
||||||
#define MATRIX_COLS 14
|
#define MATRIX_COLS 14
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Keyboard Matrix Assignments
|
||||||
|
*
|
||||||
|
* Change this to how you wired your keyboard
|
||||||
|
* COLS: AVR pins used for columns, left to right
|
||||||
|
* ROWS: AVR pins used for rows, top to bottom
|
||||||
|
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
|
||||||
|
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
||||||
|
*
|
||||||
|
*/
|
||||||
#define MATRIX_ROW_PINS { B1, B10, B11, B14, B12 }
|
#define MATRIX_ROW_PINS { B1, B10, B11, B14, B12 }
|
||||||
#define MATRIX_COL_PINS {A6, A7, B0, B13, B15, A8, A15, B3, B4, B5, B8, B9, C13, C14 }
|
#define MATRIX_COL_PINS { A6, A7, B0, B13, B15, A8, A15, B3, B4, B5, B8, B9, C13, C14 }
|
||||||
|
#define UNUSED_PINS
|
||||||
/* #define UNUSED_PINS {A0,A1,A2, A3,A4,A9,A10,C15,A13,A14,B2}*/
|
|
||||||
|
|
||||||
|
/* COL2ROW, ROW2COL*/
|
||||||
#define DIODE_DIRECTION COL2ROW
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||||
#define DEBOUNCE 3
|
#define DEBOUNCE 3
|
||||||
|
|
||||||
|
/* disable these deprecated features by default */
|
||||||
|
#ifndef LINK_TIME_OPTIMIZATION_ENABLE
|
||||||
|
# define NO_ACTION_MACRO
|
||||||
|
# define NO_ACTION_FUNCTION
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef RGB_MATRIX_ENABLE
|
#ifdef RGB_MATRIX_ENABLE
|
||||||
#define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
|
# define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
|
||||||
#define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
|
# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
|
||||||
#define RGB_MATRIX_KEYPRESSES
|
# define RGB_MATRIX_KEYPRESSES
|
||||||
#define RGB_MATRIX_LED_PROCESS_LIMIT 4
|
# define RGB_MATRIX_LED_PROCESS_LIMIT 4
|
||||||
#define RGB_MATRIX_LED_FLUSH_LIMIT 26
|
# define RGB_MATRIX_LED_FLUSH_LIMIT 26
|
||||||
#define DISABLE_RGB_MATRIX_SPLASH
|
# define DISABLE_RGB_MATRIX_SPLASH
|
||||||
#define DISABLE_RGB_MATRIX_MULTISPLASH
|
# define DISABLE_RGB_MATRIX_MULTISPLASH
|
||||||
#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
|
# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
|
||||||
#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL
|
# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL
|
||||||
#define DRIVER_ADDR_1 0b1010000
|
# define DRIVER_ADDR_1 0b1010000
|
||||||
#define DRIVER_ADDR_2 0b1010000 // this is here for compliancy reasons.
|
# define DRIVER_ADDR_2 0b1010000 // this is here for compliancy reasons.
|
||||||
#define DRIVER_COUNT 2
|
# define DRIVER_COUNT 2
|
||||||
#define DRIVER_1_LED_TOTAL 62
|
# define DRIVER_1_LED_TOTAL 62
|
||||||
#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
|
# define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
|
||||||
#endif
|
#endif
|
||||||
@@ -1,44 +1,66 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
/* USB Device descriptor parameter */
|
/* USB Device descriptor parameter */
|
||||||
#define VENDOR_ID 0xFEED
|
#define VENDOR_ID 0xFEED
|
||||||
#define PRODUCT_ID 0x1221
|
#define PRODUCT_ID 0x1221
|
||||||
#define DEVICE_VER 0x0002
|
#define DEVICE_VER 0x0002
|
||||||
#define MANUFACTURER DZTECH
|
#define MANUFACTURER DZTECH
|
||||||
|
|
||||||
#define PRODUCT DZ60RGB_WKL
|
#define PRODUCT DZ60RGB_WKL
|
||||||
#define DESCRIPTION DZ60 AVR RGB keyboard
|
#define DESCRIPTION DZ60 AVR RGB keyboard
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
#define MATRIX_ROWS 5
|
#define MATRIX_ROWS 5
|
||||||
#define MATRIX_COLS 14
|
#define MATRIX_COLS 14
|
||||||
|
|
||||||
#define MATRIX_ROW_PINS {F5, F4, F1, B3, B2 }
|
/*
|
||||||
#define MATRIX_COL_PINS {C7, F7, F6, F0, B0, B1, B4, D7, D6, D4, D5, D3, D2, B7 }
|
* Keyboard Matrix Assignments
|
||||||
|
*
|
||||||
|
* Change this to how you wired your keyboard
|
||||||
|
* COLS: AVR pins used for columns, left to right
|
||||||
|
* ROWS: AVR pins used for rows, top to bottom
|
||||||
|
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
|
||||||
|
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#define MATRIX_ROW_PINS { F5, F4, F1, B3, B2 }
|
||||||
|
#define MATRIX_COL_PINS { C7, F7, F6, F0, B0, B1, B4, D7, D6, D4, D5, D3, D2, B7 }
|
||||||
#define UNUSED_PINS
|
#define UNUSED_PINS
|
||||||
|
|
||||||
|
/* COL2ROW, ROW2COL*/
|
||||||
#define DIODE_DIRECTION COL2ROW
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||||
#define DEBOUNCE 3
|
#define DEBOUNCE 3
|
||||||
|
|
||||||
|
/* disable these deprecated features by default */
|
||||||
|
#ifndef LINK_TIME_OPTIMIZATION_ENABLE
|
||||||
|
# define NO_ACTION_MACRO
|
||||||
|
# define NO_ACTION_FUNCTION
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef RGB_MATRIX_ENABLE
|
#ifdef RGB_MATRIX_ENABLE
|
||||||
#define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
|
# define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
|
||||||
#define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
|
# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
|
||||||
#define RGB_MATRIX_KEYPRESSES
|
# define RGB_MATRIX_KEYPRESSES
|
||||||
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
|
# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
|
||||||
#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
|
# define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
|
||||||
#define DISABLE_RGB_MATRIX_BAND_SAT
|
# define DISABLE_RGB_MATRIX_BAND_SAT
|
||||||
#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
|
# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
|
||||||
#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
|
# define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
|
||||||
#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
|
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
|
||||||
#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
|
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
|
||||||
#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
|
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
|
||||||
#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
|
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
|
||||||
#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
|
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
|
||||||
#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
|
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
|
||||||
#define DISABLE_RGB_MATRIX_SPLASH
|
# define DISABLE_RGB_MATRIX_SPLASH
|
||||||
#define DISABLE_RGB_MATRIX_MULTISPLASH
|
# define DISABLE_RGB_MATRIX_MULTISPLASH
|
||||||
#define DISABLE_RGB_MATRIX_SOLID_SPLASH
|
# define DISABLE_RGB_MATRIX_SOLID_SPLASH
|
||||||
#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
|
# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
|
||||||
#define DISABLE_RGB_MATRIX_DIGITAL_RAIN
|
# define DISABLE_RGB_MATRIX_DIGITAL_RAIN
|
||||||
#define DRIVER_ADDR_1 0b1010000
|
# define DRIVER_ADDR_1 0b1010000
|
||||||
#define DRIVER_ADDR_2 0b1010000 // this is here for compliancy reasons.
|
# define DRIVER_ADDR_2 0b1010000 // this is here for compliancy reasons.
|
||||||
#define DRIVER_COUNT 2
|
# define DRIVER_COUNT 2
|
||||||
#define DRIVER_1_LED_TOTAL 62
|
# define DRIVER_1_LED_TOTAL 62
|
||||||
#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
|
# define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
|
||||||
#endif
|
#endif
|
||||||
@@ -1,2 +1,3 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include "config_common.h"
|
|
||||||
|
#include "config_common.h"
|
||||||
@@ -1,4 +1,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
/* USB Device descriptor parameter */
|
||||||
#define VENDOR_ID 0xFEED
|
#define VENDOR_ID 0xFEED
|
||||||
#define PRODUCT_ID 0x1222
|
#define PRODUCT_ID 0x1222
|
||||||
#define DEVICE_VER 0x0001
|
#define DEVICE_VER 0x0001
|
||||||
@@ -6,40 +8,61 @@
|
|||||||
#define PRODUCT DZ65RGB
|
#define PRODUCT DZ65RGB
|
||||||
#define DESCRIPTION DZ65 ARM RGB keyboard
|
#define DESCRIPTION DZ65 ARM RGB keyboard
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
#define MATRIX_ROWS 5
|
#define MATRIX_ROWS 5
|
||||||
#define MATRIX_COLS 15
|
#define MATRIX_COLS 15
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Keyboard Matrix Assignments
|
||||||
|
*
|
||||||
|
* Change this to how you wired your keyboard
|
||||||
|
* COLS: AVR pins used for columns, left to right
|
||||||
|
* ROWS: AVR pins used for rows, top to bottom
|
||||||
|
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
|
||||||
|
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
||||||
|
*
|
||||||
|
*/
|
||||||
#define MATRIX_ROW_PINS { B1, B10, B11, B14, B12 }
|
#define MATRIX_ROW_PINS { B1, B10, B11, B14, B12 }
|
||||||
#define MATRIX_COL_PINS {A6, A7, B0, B13, B15, A8, A15, B3, B4, B5, B8, B9, C13, C14, C15 }
|
#define MATRIX_COL_PINS { A6, A7, B0, B13, B15, A8, A15, B3, B4, B5, B8, B9, C13, C14, C15 }
|
||||||
|
|
||||||
|
/* COL2ROW, ROW2COL*/
|
||||||
#define DIODE_DIRECTION COL2ROW
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
/* disable these deprecated features by default */
|
||||||
|
#ifndef LINK_TIME_OPTIMIZATION_ENABLE
|
||||||
|
# define NO_ACTION_MACRO
|
||||||
|
# define NO_ACTION_FUNCTION
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef RGB_MATRIX_ENABLE
|
#ifdef RGB_MATRIX_ENABLE
|
||||||
#define RGB_MATRIX_LED_PROCESS_LIMIT 4
|
# define RGB_MATRIX_LED_PROCESS_LIMIT 4
|
||||||
#define RGB_MATRIX_LED_FLUSH_LIMIT 26
|
# define RGB_MATRIX_LED_FLUSH_LIMIT 26
|
||||||
#define DEBOUNCE 3
|
# define DEBOUNCE 3
|
||||||
#define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
|
# define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
|
||||||
#define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
|
# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
|
||||||
#define RGB_MATRIX_KEYPRESSES
|
# define RGB_MATRIX_KEYPRESSES
|
||||||
#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
|
# define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
|
||||||
#define DISABLE_RGB_MATRIX_BAND_SAT
|
# define DISABLE_RGB_MATRIX_BAND_SAT
|
||||||
#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
|
# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
|
||||||
#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
|
# define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
|
||||||
#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
|
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
|
||||||
#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
|
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
|
||||||
#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
|
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
|
||||||
#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
|
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
|
||||||
#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
|
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
|
||||||
#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
|
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
|
||||||
#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
|
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
|
||||||
#define DISABLE_RGB_MATRIX_SPLASH
|
# define DISABLE_RGB_MATRIX_SPLASH
|
||||||
#define DISABLE_RGB_MATRIX_MULTISPLASH
|
# define DISABLE_RGB_MATRIX_MULTISPLASH
|
||||||
#define DISABLE_RGB_MATRIX_SOLID_SPLASH
|
# define DISABLE_RGB_MATRIX_SOLID_SPLASH
|
||||||
#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
|
# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
|
||||||
#define DISABLE_RGB_MATRIX_DIGITAL_RAIN
|
# define DISABLE_RGB_MATRIX_DIGITAL_RAIN
|
||||||
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
|
# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
|
||||||
#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL
|
# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL
|
||||||
#define DRIVER_ADDR_1 0b1110100
|
# define DRIVER_ADDR_1 0b1110100
|
||||||
#define DRIVER_ADDR_2 0b1110111
|
# define DRIVER_ADDR_2 0b1110111
|
||||||
#define DRIVER_COUNT 2
|
# define DRIVER_COUNT 2
|
||||||
#define DRIVER_1_LED_TOTAL 35
|
# define DRIVER_1_LED_TOTAL 35
|
||||||
#define DRIVER_2_LED_TOTAL 33
|
# define DRIVER_2_LED_TOTAL 33
|
||||||
#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
|
# define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
|
||||||
#endif
|
#endif
|
||||||
@@ -1,4 +1,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
/* USB Device descriptor parameter */
|
||||||
#define VENDOR_ID 0xFEED
|
#define VENDOR_ID 0xFEED
|
||||||
#define PRODUCT_ID 0x1222
|
#define PRODUCT_ID 0x1222
|
||||||
#define DEVICE_VER 0x0002
|
#define DEVICE_VER 0x0002
|
||||||
@@ -6,40 +8,61 @@
|
|||||||
#define PRODUCT DZ65RGB
|
#define PRODUCT DZ65RGB
|
||||||
#define DESCRIPTION DZ65 AVR RGB keyboard
|
#define DESCRIPTION DZ65 AVR RGB keyboard
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
#define MATRIX_ROWS 5
|
#define MATRIX_ROWS 5
|
||||||
#define MATRIX_COLS 15
|
#define MATRIX_COLS 15
|
||||||
#define MATRIX_ROW_PINS {F0, F1, F4, E6, C6 }
|
|
||||||
#define MATRIX_COL_PINS {F7, F6, F5, C7, B0, B1, B2, B3, B4, D7, D6, D4, D5, D3, D2}
|
/*
|
||||||
|
* Keyboard Matrix Assignments
|
||||||
|
*
|
||||||
|
* Change this to how you wired your keyboard
|
||||||
|
* COLS: AVR pins used for columns, left to right
|
||||||
|
* ROWS: AVR pins used for rows, top to bottom
|
||||||
|
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
|
||||||
|
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#define MATRIX_ROW_PINS { F0, F1, F4, E6, C6 }
|
||||||
|
#define MATRIX_COL_PINS { F7, F6, F5, C7, B0, B1, B2, B3, B4, D7, D6, D4, D5, D3, D2 }
|
||||||
|
|
||||||
|
/* COL2ROW, ROW2COL*/
|
||||||
#define DIODE_DIRECTION COL2ROW
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
/* disable these deprecated features by default */
|
||||||
|
#ifndef LINK_TIME_OPTIMIZATION_ENABLE
|
||||||
|
# define NO_ACTION_MACRO
|
||||||
|
# define NO_ACTION_FUNCTION
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef RGB_MATRIX_ENABLE
|
#ifdef RGB_MATRIX_ENABLE
|
||||||
#define RGB_MATRIX_LED_PROCESS_LIMIT 4
|
# define RGB_MATRIX_LED_PROCESS_LIMIT 4
|
||||||
#define RGB_MATRIX_LED_FLUSH_LIMIT 26
|
# define RGB_MATRIX_LED_FLUSH_LIMIT 26
|
||||||
#define DEBOUNCE 3
|
# define DEBOUNCE 3
|
||||||
#define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
|
# define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
|
||||||
#define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
|
# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
|
||||||
#define RGB_MATRIX_KEYPRESSES
|
# define RGB_MATRIX_KEYPRESSES
|
||||||
#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
|
# define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
|
||||||
#define DISABLE_RGB_MATRIX_BAND_SAT
|
# define DISABLE_RGB_MATRIX_BAND_SAT
|
||||||
#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
|
# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
|
||||||
#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
|
# define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
|
||||||
#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
|
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
|
||||||
#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
|
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
|
||||||
#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
|
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
|
||||||
#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
|
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
|
||||||
#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
|
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
|
||||||
#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
|
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
|
||||||
#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
|
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
|
||||||
#define DISABLE_RGB_MATRIX_SPLASH
|
# define DISABLE_RGB_MATRIX_SPLASH
|
||||||
#define DISABLE_RGB_MATRIX_MULTISPLASH
|
# define DISABLE_RGB_MATRIX_MULTISPLASH
|
||||||
#define DISABLE_RGB_MATRIX_SOLID_SPLASH
|
# define DISABLE_RGB_MATRIX_SOLID_SPLASH
|
||||||
#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
|
# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
|
||||||
#define DISABLE_RGB_MATRIX_DIGITAL_RAIN
|
# define DISABLE_RGB_MATRIX_DIGITAL_RAIN
|
||||||
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
|
# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
|
||||||
#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL
|
# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL
|
||||||
#define DRIVER_ADDR_1 0b1110100
|
# define DRIVER_ADDR_1 0b1110100
|
||||||
#define DRIVER_ADDR_2 0b1110111
|
# define DRIVER_ADDR_2 0b1110111
|
||||||
#define DRIVER_COUNT 2
|
# define DRIVER_COUNT 2
|
||||||
#define DRIVER_1_LED_TOTAL 35
|
# define DRIVER_1_LED_TOTAL 35
|
||||||
#define DRIVER_2_LED_TOTAL 33
|
# define DRIVER_2_LED_TOTAL 33
|
||||||
#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
|
# define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
|
||||||
#endif
|
#endif
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
Fluorite is a chaotic keyboard consisting of staggered rows, staggered columns, and ortholinear.
|
Fluorite is a chaotic keyboard consisting of staggered rows, staggered columns, and ortholinear.
|
||||||
|
|
||||||
* Keyboard Maintainer: [mahuyu ihotsuno](https://github.com/ihotsuno) [@ihotsuno](https://twitter.com/ihotsuno)
|
* Keyboard Maintainer: [mafuyu ihotsuno](https://github.com/ihotsuno) [@ihotsuno](https://twitter.com/ihotsuno)
|
||||||
* Hardware Supported: fluorite CXL PCB, ProMicro
|
* Hardware Supported: fluorite CXL PCB, ProMicro
|
||||||
* Hardware Availability: [ten key](https://tenkey.connpass.com/), [booth.pm](https://ihotsuno.booth.pm/)
|
* Hardware Availability: [ten key](https://tenkey.connpass.com/), [booth.pm](https://ihotsuno.booth.pm/)
|
||||||
|
|
||||||
|
|||||||
@@ -9,10 +9,7 @@ MCU = atmega32u4
|
|||||||
# QMK DFU qmk-dfu
|
# QMK DFU qmk-dfu
|
||||||
# ATmega32A bootloadHID
|
# ATmega32A bootloadHID
|
||||||
# ATmega328P USBasp
|
# ATmega328P USBasp
|
||||||
BOOTLOADER = atmel-dfu # actually lufa-ms
|
BOOTLOADER = lufa-ms
|
||||||
|
|
||||||
# Mass storage bootloader on the COD67 uses bin files
|
|
||||||
FIRMWARE_FORMAT = bin
|
|
||||||
|
|
||||||
# Build Options
|
# Build Options
|
||||||
# change yes to no to disable
|
# change yes to no to disable
|
||||||
|
|||||||
@@ -0,0 +1,53 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2012 Jun Wako <[email protected]>
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "config_common.h"
|
||||||
|
/* USB Device descriptor parameter */
|
||||||
|
#define VENDOR_ID 0xFEED
|
||||||
|
#define PRODUCT_ID 0x6060
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER Handwired
|
||||||
|
#define PRODUCT K-Numpad17
|
||||||
|
#define DESCRIPTION QMK keyboard firmware for handwired numpad with 17 keys
|
||||||
|
|
||||||
|
#define TAPPING_TERM 400
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 5
|
||||||
|
#define MATRIX_COLS 4
|
||||||
|
|
||||||
|
// ROWS: Top to bottom, COLS: Left to right
|
||||||
|
|
||||||
|
#define MATRIX_ROW_PINS { D1, D4, C6, D7, E6 }
|
||||||
|
#define MATRIX_COL_PINS { B2, B1, F6 , F4 }
|
||||||
|
#define UNUSED_PINS
|
||||||
|
|
||||||
|
/* COL2ROW or ROW2COL */
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
|
||||||
|
/* Set 0 if debouncing isn't 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
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
#include "k_numpad17.h"
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
// The first section contains all of the arguments
|
||||||
|
// The second converts the arguments into a two-dimensional array
|
||||||
|
#define LAYOUT_numpad_5x4( \
|
||||||
|
k00, k01, k02, k03, \
|
||||||
|
k10, k11, k12, \
|
||||||
|
k20, k21, k22, k13, \
|
||||||
|
k30, k31, k32, \
|
||||||
|
k40, k41, k33 \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{k00, k01, k02, k03}, \
|
||||||
|
{k10, k11, k12, k13}, \
|
||||||
|
{k20, k21, k22, KC_NO}, \
|
||||||
|
{k30, k31, k32, k33}, \
|
||||||
|
{k40, KC_NO, k41, KC_NO} \
|
||||||
|
}
|
||||||
|
|
||||||
|
/* matrix layout
|
||||||
|
* ,-------------------.
|
||||||
|
* | 00 | 01 | 02 | 03 |
|
||||||
|
* |----|----|----|----|
|
||||||
|
* | 10 | 11 | 12 | |
|
||||||
|
* |----|----|----| 13 |
|
||||||
|
* | 20 | 21 | 22 | |
|
||||||
|
* |----|----|----|----|
|
||||||
|
* | 30 | 31 | 32 | |
|
||||||
|
* |----|----|----| 33 |
|
||||||
|
* | 40 | 41 | |
|
||||||
|
* `-------------------'
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/*
|
||||||
|
* ,-------------------.
|
||||||
|
* | NL | / | * | - |
|
||||||
|
* |----|----|----|----|
|
||||||
|
* | 7 | 8 | 9 | |
|
||||||
|
* |----|----|----| + |
|
||||||
|
* | 4 | 5 | 6 | |
|
||||||
|
* |----|----|----|----|
|
||||||
|
* | 1 | 2 | 3 | |
|
||||||
|
* |----|----|----| En |
|
||||||
|
* | 0 | . | |
|
||||||
|
* `-------------------'
|
||||||
|
*/
|
||||||
|
|
||||||
|
[0] = LAYOUT_numpad_5x4(
|
||||||
|
KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
|
||||||
|
KC_P7, KC_P8, KC_P9,
|
||||||
|
KC_P4, KC_P5, KC_P6, KC_PPLS,
|
||||||
|
KC_P1, KC_P2, KC_P3,
|
||||||
|
KC_P0, KC_PDOT, KC_PENT
|
||||||
|
),
|
||||||
|
};
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
//Tap Dance Declarations
|
||||||
|
enum {
|
||||||
|
TD_DOT_COMMAS = 0
|
||||||
|
};
|
||||||
|
|
||||||
|
//Tap Dance Definitions
|
||||||
|
qk_tap_dance_action_t tap_dance_actions[] = {
|
||||||
|
//Tap once for Esc, twice for Caps Lock
|
||||||
|
[TD_DOT_COMMAS] = ACTION_TAP_DANCE_DOUBLE(KC_DOT, KC_COMMA)
|
||||||
|
// Other declarations would go here, separated by commas, if you have them
|
||||||
|
};
|
||||||
|
|
||||||
|
//In Layer declaration, add tap dance item in place of a key code
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/*
|
||||||
|
* ,-------------------.
|
||||||
|
* |bcsp| / | * | - |
|
||||||
|
* |----|----|----|----|
|
||||||
|
* | 7 | 8 | 9 | |
|
||||||
|
* |----|----|----| + |
|
||||||
|
* | 4 | 5 | 6 | |
|
||||||
|
* |----|----|----|----|
|
||||||
|
* | 1 | 2 | 3 | |
|
||||||
|
* |----|----|----| En |
|
||||||
|
* | FN/0 | . | |
|
||||||
|
* `-------------------'
|
||||||
|
*/
|
||||||
|
|
||||||
|
[0] = LAYOUT_numpad_5x4(
|
||||||
|
KC_BSPC, KC_PSLS, KC_PAST, KC_PMNS,
|
||||||
|
KC_P7, KC_P8, KC_P9,
|
||||||
|
KC_P4, KC_P5, KC_P6, KC_PPLS,
|
||||||
|
KC_P1, KC_P2, KC_P3,
|
||||||
|
LT(1, KC_P0), TD(TD_DOT_COMMAS), KC_PENT
|
||||||
|
),
|
||||||
|
/*
|
||||||
|
* ,-------------------.
|
||||||
|
* | F10| F11| F12| - |
|
||||||
|
* |----|----|----|----|
|
||||||
|
* | F7 | F8 | F9 | |
|
||||||
|
* |----|----|----| vol|
|
||||||
|
* | F4 | F5 | F6 | + |
|
||||||
|
* |----|----|----|----|
|
||||||
|
* | F1 | F2 | F3 | vol|
|
||||||
|
* |----|----|----| - |
|
||||||
|
* | FN | . | |
|
||||||
|
* `-------------------'
|
||||||
|
*/
|
||||||
|
[1] = LAYOUT_numpad_5x4(
|
||||||
|
KC_F10, KC_F11, KC_F12, KC_NO,
|
||||||
|
KC_F7, KC_F8, KC_F9,
|
||||||
|
KC_F4, KC_F5, KC_F6, KC_VOLU,
|
||||||
|
KC_F1, KC_F2, KC_F3,
|
||||||
|
KC_NO, KC_PDOT, KC_VOLD
|
||||||
|
)
|
||||||
|
};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
TAP_DANCE_ENABLE = yes
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
# K-Numpad17
|
||||||
|
<img src="https://i.imgur.com/MasSa71.jpg" alt="k-numpad" width="400"/>
|
||||||
|
|
||||||
|
### Arduino Pro Micro Pinout
|
||||||
|
| rows | 0 | 1 | 2 | 3 | 4 |
|
||||||
|
| ----------- | --- | --- | --- | --- | --- |
|
||||||
|
| arduino pin | 2 | 4 | 5 | 6 | 7 |
|
||||||
|
| qmk pin | D1 | D4 | C6 | D7 | E6 |
|
||||||
|
|
||||||
|
| columns | 0 | 1 | 2 | 3 |
|
||||||
|
| ----------- | --- | --- | --- | --- |
|
||||||
|
| arduino pin | 16 | 15 | A1 | A3 |
|
||||||
|
| qmk pin | B5 | B4 | B3 | C3 |
|
||||||
|
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make handwired/k_numpad17:default
|
||||||
|
|
||||||
|
Bootmagic is enabled. Press the key at (0,0) while plugging the keyboard in to jump to bootloader. This is numlock in the default keymap.
|
||||||
|
|
||||||
|
* Keyboard Maintainer: [Karlssn](https://github.com/Karlssn)
|
||||||
|
* Hardware Availability: [Casefile](https://www.thingiverse.com/thing:4062409)
|
||||||
|
|
||||||
|
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,31 @@
|
|||||||
|
# MCU name
|
||||||
|
MCU = atmega32u4
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
# Teensy halfkay
|
||||||
|
# Pro Micro caterina
|
||||||
|
# Atmel DFU atmel-dfu
|
||||||
|
# LUFA DFU lufa-dfu
|
||||||
|
# QMK DFU qmk-dfu
|
||||||
|
# ATmega32A bootloadHID
|
||||||
|
# ATmega328P USBasp
|
||||||
|
BOOTLOADER = caterina
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# comment out to disable the options.
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = lite # Key at 0,0 makes the keyboard go into bootloader
|
||||||
|
MOUSEKEY_ENABLE = no # Mouse keys
|
||||||
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
|
CONSOLE_ENABLE = yes # Console for debug
|
||||||
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
|
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
|
RGBLIGHT_ENABLE = no # Enable keyboard underlight functionality
|
||||||
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
|
MIDI_ENABLE = no # MIDI controls
|
||||||
|
AUDIO_ENABLE = no
|
||||||
|
UNICODE_ENABLE = no # Unicode
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
|
TAP_DANCE_ENABLE = no
|
||||||
|
|
||||||
|
LAYOUTS = numpad_5x4
|
||||||
@@ -0,0 +1,245 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2019 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 0xEC9A
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER Singa Keyboards
|
||||||
|
#define PRODUCT h75_singa
|
||||||
|
#define DESCRIPTION Singa
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 6
|
||||||
|
#define MATRIX_COLS 16
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Keyboard Matrix Assignments
|
||||||
|
*
|
||||||
|
* Change this to how you wired your keyboard
|
||||||
|
* COLS: AVR pins used for columns, left to right
|
||||||
|
* ROWS: AVR pins used for rows, top to bottom
|
||||||
|
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
|
||||||
|
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#define MATRIX_ROW_PINS { B0, B1, D0, D1, D2, D6 }
|
||||||
|
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, B2, D4, D5, D3 }
|
||||||
|
#define UNUSED_PINS
|
||||||
|
|
||||||
|
/* COL2ROW, ROW2COL*/
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
|
||||||
|
#define BACKLIGHT_PIN B7
|
||||||
|
#define BACKLIGHT_BREATHING
|
||||||
|
#define BACKLIGHT_LEVELS 3
|
||||||
|
|
||||||
|
#define RGB_DI_PIN B3
|
||||||
|
#ifdef RGB_DI_PIN
|
||||||
|
#define RGBLED_NUM 22
|
||||||
|
#define RGBLIGHT_HUE_STEP 8
|
||||||
|
#define RGBLIGHT_SAT_STEP 8
|
||||||
|
#define RGBLIGHT_VAL_STEP 8
|
||||||
|
#define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
|
||||||
|
#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
|
||||||
|
/*== all animations enable ==*/
|
||||||
|
#define RGBLIGHT_ANIMATIONS
|
||||||
|
// /*== or choose animations ==*/
|
||||||
|
// #define RGBLIGHT_EFFECT_BREATHING
|
||||||
|
// #define RGBLIGHT_EFFECT_RAINBOW_MOOD
|
||||||
|
// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
|
||||||
|
// #define RGBLIGHT_EFFECT_SNAKE
|
||||||
|
// #define RGBLIGHT_EFFECT_KNIGHT
|
||||||
|
// #define RGBLIGHT_EFFECT_CHRISTMAS
|
||||||
|
// #define RGBLIGHT_EFFECT_STATIC_GRADIENT
|
||||||
|
// #define RGBLIGHT_EFFECT_RGB_TEST
|
||||||
|
// #define RGBLIGHT_EFFECT_ALTERNATING
|
||||||
|
// /*== customize breathing effect ==*/
|
||||||
|
// /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
|
||||||
|
// #define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
|
||||||
|
// /*==== use exp() and sin() ====*/
|
||||||
|
// #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
|
||||||
|
// #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||||
|
#define DEBOUNCE 5
|
||||||
|
|
||||||
|
/* define if matrix has ghost (lacks anti-ghosting diodes) */
|
||||||
|
//#define MATRIX_HAS_GHOST
|
||||||
|
|
||||||
|
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||||
|
#define LOCKING_SUPPORT_ENABLE
|
||||||
|
/* Locking resynchronize hack */
|
||||||
|
#define LOCKING_RESYNC_ENABLE
|
||||||
|
|
||||||
|
/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
|
||||||
|
* This is userful for the Windows task manager shortcut (ctrl+shift+esc).
|
||||||
|
*/
|
||||||
|
// #define GRAVE_ESC_CTRL_OVERRIDE
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Force NKRO
|
||||||
|
*
|
||||||
|
* Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
|
||||||
|
* state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
|
||||||
|
* makefile for this to work.)
|
||||||
|
*
|
||||||
|
* If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
|
||||||
|
* until the next keyboard reset.
|
||||||
|
*
|
||||||
|
* NKRO may prevent your keystrokes from being detected in the BIOS, but it is
|
||||||
|
* fully operational during normal computer usage.
|
||||||
|
*
|
||||||
|
* For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
|
||||||
|
* or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
|
||||||
|
* bootmagic, NKRO mode will always be enabled until it is toggled again during a
|
||||||
|
* power-up.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
//#define FORCE_NKRO
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Magic Key Options
|
||||||
|
*
|
||||||
|
* Magic keys are hotkey commands that allow control over firmware functions of
|
||||||
|
* the keyboard. They are best used in combination with the HID Listen program,
|
||||||
|
* found here: https://www.pjrc.com/teensy/hid_listen.html
|
||||||
|
*
|
||||||
|
* The options below allow the magic key functionality to be changed. This is
|
||||||
|
* useful if your keyboard/keypad is missing keys and you want magic key support.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* key combination for magic key command */
|
||||||
|
/* defined by default; to change, uncomment and set to the combination you want */
|
||||||
|
// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT)
|
||||||
|
|
||||||
|
/* control how magic key switches layers */
|
||||||
|
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
|
||||||
|
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
|
||||||
|
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
|
||||||
|
|
||||||
|
/* override magic key keymap */
|
||||||
|
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
|
||||||
|
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
|
||||||
|
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
|
||||||
|
//#define MAGIC_KEY_HELP H
|
||||||
|
//#define MAGIC_KEY_HELP_ALT SLASH
|
||||||
|
//#define MAGIC_KEY_DEBUG D
|
||||||
|
//#define MAGIC_KEY_DEBUG_MATRIX X
|
||||||
|
//#define MAGIC_KEY_DEBUG_KBD K
|
||||||
|
//#define MAGIC_KEY_DEBUG_MOUSE M
|
||||||
|
//#define MAGIC_KEY_VERSION V
|
||||||
|
//#define MAGIC_KEY_STATUS S
|
||||||
|
//#define MAGIC_KEY_CONSOLE C
|
||||||
|
//#define MAGIC_KEY_LAYER0 0
|
||||||
|
//#define MAGIC_KEY_LAYER0_ALT GRAVE
|
||||||
|
//#define MAGIC_KEY_LAYER1 1
|
||||||
|
//#define MAGIC_KEY_LAYER2 2
|
||||||
|
//#define MAGIC_KEY_LAYER3 3
|
||||||
|
//#define MAGIC_KEY_LAYER4 4
|
||||||
|
//#define MAGIC_KEY_LAYER5 5
|
||||||
|
//#define MAGIC_KEY_LAYER6 6
|
||||||
|
//#define MAGIC_KEY_LAYER7 7
|
||||||
|
//#define MAGIC_KEY_LAYER8 8
|
||||||
|
//#define MAGIC_KEY_LAYER9 9
|
||||||
|
//#define MAGIC_KEY_BOOTLOADER B
|
||||||
|
//#define MAGIC_KEY_BOOTLOADER_ALT ESC
|
||||||
|
//#define MAGIC_KEY_LOCK CAPS
|
||||||
|
//#define MAGIC_KEY_EEPROM E
|
||||||
|
//#define MAGIC_KEY_EEPROM_CLEAR BSPACE
|
||||||
|
//#define MAGIC_KEY_NKRO N
|
||||||
|
//#define MAGIC_KEY_SLEEP_LED Z
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Feature disable options
|
||||||
|
* These options are also useful to firmware size reduction.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* disable debug print */
|
||||||
|
//#define NO_DEBUG
|
||||||
|
|
||||||
|
/* disable print */
|
||||||
|
//#define NO_PRINT
|
||||||
|
|
||||||
|
/* disable action features */
|
||||||
|
//#define NO_ACTION_LAYER
|
||||||
|
//#define NO_ACTION_TAPPING
|
||||||
|
//#define NO_ACTION_ONESHOT
|
||||||
|
//#define NO_ACTION_MACRO
|
||||||
|
//#define NO_ACTION_FUNCTION
|
||||||
|
|
||||||
|
/*
|
||||||
|
* MIDI options
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Prevent use of disabled MIDI features in the keymap */
|
||||||
|
//#define MIDI_ENABLE_STRICT 1
|
||||||
|
|
||||||
|
/* enable basic MIDI features:
|
||||||
|
- MIDI notes can be sent when in Music mode is on
|
||||||
|
*/
|
||||||
|
//#define MIDI_BASIC
|
||||||
|
|
||||||
|
/* enable advanced MIDI features:
|
||||||
|
- MIDI notes can be added to the keymap
|
||||||
|
- Octave shift and transpose
|
||||||
|
- Virtual sustain, portamento, and modulation wheel
|
||||||
|
- etc.
|
||||||
|
*/
|
||||||
|
//#define MIDI_ADVANCED
|
||||||
|
|
||||||
|
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
|
||||||
|
//#define MIDI_TONE_KEYCODE_OCTAVES 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* HD44780 LCD Display Configuration
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
#define LCD_LINES 2 //< number of visible lines of the display
|
||||||
|
#define LCD_DISP_LENGTH 16 //< visibles characters per line of the display
|
||||||
|
|
||||||
|
#define LCD_IO_MODE 1 //< 0: memory mapped mode, 1: IO port mode
|
||||||
|
|
||||||
|
#if LCD_IO_MODE
|
||||||
|
#define LCD_PORT PORTB //< port for the LCD lines
|
||||||
|
#define LCD_DATA0_PORT LCD_PORT //< port for 4bit data bit 0
|
||||||
|
#define LCD_DATA1_PORT LCD_PORT //< port for 4bit data bit 1
|
||||||
|
#define LCD_DATA2_PORT LCD_PORT //< port for 4bit data bit 2
|
||||||
|
#define LCD_DATA3_PORT LCD_PORT //< port for 4bit data bit 3
|
||||||
|
#define LCD_DATA0_PIN 4 //< pin for 4bit data bit 0
|
||||||
|
#define LCD_DATA1_PIN 5 //< pin for 4bit data bit 1
|
||||||
|
#define LCD_DATA2_PIN 6 //< pin for 4bit data bit 2
|
||||||
|
#define LCD_DATA3_PIN 7 //< pin for 4bit data bit 3
|
||||||
|
#define LCD_RS_PORT LCD_PORT //< port for RS line
|
||||||
|
#define LCD_RS_PIN 3 //< pin for RS line
|
||||||
|
#define LCD_RW_PORT LCD_PORT //< port for RW line
|
||||||
|
#define LCD_RW_PIN 2 //< pin for RW line
|
||||||
|
#define LCD_E_PORT LCD_PORT //< port for Enable line
|
||||||
|
#define LCD_E_PIN 1 //< pin for Enable line
|
||||||
|
#endif
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Bootmagic Lite key configuration */
|
||||||
|
// #define BOOTMAGIC_LITE_ROW 0
|
||||||
|
// #define BOOTMAGIC_LITE_COLUMN 0
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
/* Copyright 2019 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 "h75_singa.h"
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
/* Copyright 2019 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, k014, k015, \
|
||||||
|
k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k115, \
|
||||||
|
k200, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215, \
|
||||||
|
k300, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k314, k315, \
|
||||||
|
k400, k401, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, k414, k415, \
|
||||||
|
k500, k501, k502, k504, k506, k508, k510, k511, k513, k514, k515 \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015}, \
|
||||||
|
{k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k115}, \
|
||||||
|
{k200, KC_NO, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215}, \
|
||||||
|
{k300, KC_NO, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k314, k315}, \
|
||||||
|
{k400, k401, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, KC_NO, k414, k415}, \
|
||||||
|
{k500, k501, k502, KC_NO, k504, KC_NO, k506, KC_NO, k508, KC_NO, k510, k511, KC_NO, k513, k514, k515} \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_wkl_std( \
|
||||||
|
k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, \
|
||||||
|
k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k114, k115, \
|
||||||
|
k200, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215, \
|
||||||
|
k300, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k314, k315, \
|
||||||
|
k400, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, k414, k415, \
|
||||||
|
k500, k501, k506, k510, k511, k513, k514, k515 \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015}, \
|
||||||
|
{k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, KC_NO, k114, k115}, \
|
||||||
|
{k200, KC_NO, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215}, \
|
||||||
|
{k300, KC_NO, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, KC_NO, k314, k315}, \
|
||||||
|
{k400, KC_NO, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, KC_NO, k414, k415}, \
|
||||||
|
{k500, k501, KC_NO, KC_NO, KC_NO, KC_NO, k506, KC_NO, KC_NO, KC_NO, k510, k511, KC_NO, k513, k514, k515} \
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "h75_singa",
|
||||||
|
"url": "",
|
||||||
|
"maintainer": "hineybush",
|
||||||
|
"width": 16,
|
||||||
|
"height": 6,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT_all": {
|
||||||
|
"layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1, "y":0}, {"label":"F2", "x":2, "y":0}, {"label":"F3", "x":3, "y":0}, {"label":"F4", "x":4, "y":0}, {"label":"F5", "x":5, "y":0}, {"label":"F6", "x":6, "y":0}, {"label":"F7", "x":7, "y":0}, {"label":"F8", "x":8, "y":0}, {"label":"F9", "x":9, "y":0}, {"label":"F10", "x":10, "y":0}, {"label":"F11", "x":11, "y":0}, {"label":"F12", "x":12, "y":0}, {"label":"PrtSc", "x":13, "y":0}, {"label":"Pause", "x":14, "y":0}, {"label":"Delete", "x":15, "y":0}, {"label":"~", "x":0, "y":1}, {"label":"!", "x":1, "y":1}, {"label":"@", "x":2, "y":1}, {"label":"#", "x":3, "y":1}, {"label":"$", "x":4, "y":1}, {"label":"%", "x":5, "y":1}, {"label":"^", "x":6, "y":1}, {"label":"&", "x":7, "y":1}, {"label":"*", "x":8, "y":1}, {"label":"(", "x":9, "y":1}, {"label":")", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"label":"Backspace", "x":13, "y":1}, {"x":14, "y":1}, {"label":"Home", "x":15, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"|", "x":13.5, "y":2, "w":1.5}, {"label":"Page Up", "x":15, "y":2}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"\"", "x":11.75, "y":3}, {"x":12.75, "y":3}, {"label":"Enter", "x":13.75, "y":3, "w":1.25}, {"label":"Page Down", "x":15, "y":3}, {"label":"Shift", "x":0, "y":4, "w":1.25}, {"x":1.25, "y":4}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":"<", "x":9.25, "y":4}, {"label":">", "x":10.25, "y":4}, {"label":"?", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":1.75}, {"label":"\u2191", "x":14, "y":4}, {"label":"End", "x":15, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":2.75}, {"x":6.5, "y":5, "w":1.25}, {"x":7.75, "y":5, "w":2.25}, {"label":"Alt", "x":10, "y":5, "w":1.5}, {"label":"Ctrl", "x":11.5, "y":5, "w":1.5}, {"label":"\u2190", "x":13, "y":5}, {"label":"\u2193", "x":14, "y":5}, {"label":"\u2192", "x":15, "y":5}]
|
||||||
|
},
|
||||||
|
"LAYOUT_wkl_std": {
|
||||||
|
"layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1, "y":0}, {"label":"F2", "x":2, "y":0}, {"label":"F3", "x":3, "y":0}, {"label":"F4", "x":4, "y":0}, {"label":"F5", "x":5, "y":0}, {"label":"F6", "x":6, "y":0}, {"label":"F7", "x":7, "y":0}, {"label":"F8", "x":8, "y":0}, {"label":"F9", "x":9, "y":0}, {"label":"F10", "x":10, "y":0}, {"label":"F11", "x":11, "y":0}, {"label":"F12", "x":12, "y":0}, {"label":"PrtSc", "x":13, "y":0}, {"label":"Pause", "x":14, "y":0}, {"label":"Delete", "x":15, "y":0}, {"label":"~", "x":0, "y":1}, {"label":"!", "x":1, "y":1}, {"label":"@", "x":2, "y":1}, {"label":"#", "x":3, "y":1}, {"label":"$", "x":4, "y":1}, {"label":"%", "x":5, "y":1}, {"label":"^", "x":6, "y":1}, {"label":"&", "x":7, "y":1}, {"label":"*", "x":8, "y":1}, {"label":"(", "x":9, "y":1}, {"label":")", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"label":"Backspace", "x":13, "y":1, "w":2}, {"label":"Home", "x":15, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"|", "x":13.5, "y":2, "w":1.5}, {"label":"Page Up", "x":15, "y":2}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"\"", "x":11.75, "y":3}, {"label":"Enter", "x":12.75, "y":3, "w":2.25}, {"label":"Page Down", "x":15, "y":3}, {"label":"Shift", "x":0, "y":4, "w":2.25}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":"<", "x":9.25, "y":4}, {"label":">", "x":10.25, "y":4}, {"label":"?", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":1.75}, {"label":"\u2191", "x":14, "y":4}, {"label":"End", "x":15, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.5}, {"label":"Alt", "x":1.5, "y":5, "w":1.5}, {"x":3, "y":5, "w":6.5}, {"label":"Alt", "x":9.5, "y":5, "w":1.5}, {"label":"Ctrl", "x":11, "y":5, "w":1.5}, {"label":"\u2190", "x":13, "y":5}, {"label":"\u2193", "x":14, "y":5}, {"label":"\u2192", "x":15, "y":5}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
/* Copyright 2019 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 QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/* k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, \
|
||||||
|
k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k115, \
|
||||||
|
k200, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215, \
|
||||||
|
k300, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k314, k315, \
|
||||||
|
k400, k401, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, k414, k415, \
|
||||||
|
k500, k501, k502, k504, k506, k508, k510, k511, k513, k514, k515 \ */
|
||||||
|
[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_PAUS, KC_DEL,
|
||||||
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_HOME,
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
|
||||||
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, 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_END,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
|
|
||||||
|
),
|
||||||
|
|
||||||
|
[1] = 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,RGB_TOG,
|
||||||
|
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,RGB_MOD,
|
||||||
|
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
|
||||||
|
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,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 default keymap for h75_singa
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
/* Copyright 2019 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 QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/* k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, \
|
||||||
|
k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k114, k115, \
|
||||||
|
k200, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215, \
|
||||||
|
k300, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k314, k315, \
|
||||||
|
k400, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, k414, k415, \
|
||||||
|
k500, k501, k506, k510, k511, k513, k514, k515 \*/
|
||||||
|
[0] = LAYOUT_wkl_std(
|
||||||
|
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_PAUS, KC_DEL,
|
||||||
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
|
||||||
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
|
||||||
|
KC_LCTL, KC_LALT, KC_SPC, KC_RGUI, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
|
|
||||||
|
),
|
||||||
|
|
||||||
|
[1] = LAYOUT_wkl_std(
|
||||||
|
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
|
||||||
|
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,RGB_TOG,
|
||||||
|
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,RGB_MOD,
|
||||||
|
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
|
||||||
|
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,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 @@
|
|||||||
|
# A basic winkeyless keymap with full-sized backspace for h75_singa
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
# h75_singa
|
||||||
|
|
||||||
|
 - TBD
|
||||||
|
|
||||||
|
New 75% PCB for Singa Keyboards
|
||||||
|
|
||||||
|
* Keyboard Maintainer: [hineybush](https://github.com/hineybush)
|
||||||
|
* Hardware Supported: Singa w/ USB Type-C support (exact version TBA)
|
||||||
|
* Hardware Availability: TBA
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make h75_singa: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,32 @@
|
|||||||
|
# MCU name
|
||||||
|
MCU = atmega32u4
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
# Teensy halfkay
|
||||||
|
# Pro Micro caterina
|
||||||
|
# Atmel DFU atmel-dfu
|
||||||
|
# LUFA DFU lufa-dfu
|
||||||
|
# QMK DFU qmk-dfu
|
||||||
|
# ATmega32A bootloadHID
|
||||||
|
# ATmega328P USBasp
|
||||||
|
BOOTLOADER = atmel-dfu
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
||||||
|
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||||
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
|
CONSOLE_ENABLE = 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 = yes # 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 on port C6
|
||||||
|
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||||
|
HD44780_ENABLE = no # Enable support for HD44780 based LCDs
|
||||||
@@ -0,0 +1,252 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2019 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 0xEC81
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER LZ
|
||||||
|
#define PRODUCT PhysiX
|
||||||
|
#define DESCRIPTION A custom ergonomic keyboard by Life Zone
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 5
|
||||||
|
#define MATRIX_COLS 15
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Keyboard Matrix Assignments
|
||||||
|
*
|
||||||
|
* Change this to how you wired your keyboard
|
||||||
|
* COLS: AVR pins used for columns, left to right
|
||||||
|
* ROWS: AVR pins used for rows, top to bottom
|
||||||
|
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
|
||||||
|
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#define MATRIX_ROW_PINS { D0, D1, D2, C7, C6 }
|
||||||
|
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, B3, B2, B1, B0, B5, B4, D7, D6, D4 }
|
||||||
|
#define UNUSED_PINS { B6 }
|
||||||
|
|
||||||
|
/* COL2ROW, ROW2COL*/
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
|
||||||
|
*/
|
||||||
|
#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
|
||||||
|
|
||||||
|
#define BACKLIGHT_PIN B7
|
||||||
|
#define BACKLIGHT_BREATHING
|
||||||
|
#define BACKLIGHT_LEVELS 3
|
||||||
|
|
||||||
|
#define RGB_DI_PIN E6
|
||||||
|
#ifdef RGB_DI_PIN
|
||||||
|
#define RGBLED_NUM 26
|
||||||
|
#define RGBLIGHT_HUE_STEP 8
|
||||||
|
#define RGBLIGHT_SAT_STEP 8
|
||||||
|
#define RGBLIGHT_VAL_STEP 8
|
||||||
|
#define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
|
||||||
|
#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
|
||||||
|
/*== all animations enable ==*/
|
||||||
|
#define RGBLIGHT_ANIMATIONS
|
||||||
|
// /*== or choose animations ==*/
|
||||||
|
// #define RGBLIGHT_EFFECT_BREATHING
|
||||||
|
// #define RGBLIGHT_EFFECT_RAINBOW_MOOD
|
||||||
|
// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
|
||||||
|
// #define RGBLIGHT_EFFECT_SNAKE
|
||||||
|
// #define RGBLIGHT_EFFECT_KNIGHT
|
||||||
|
// #define RGBLIGHT_EFFECT_CHRISTMAS
|
||||||
|
// #define RGBLIGHT_EFFECT_STATIC_GRADIENT
|
||||||
|
// #define RGBLIGHT_EFFECT_RGB_TEST
|
||||||
|
// #define RGBLIGHT_EFFECT_ALTERNATING
|
||||||
|
// /*== customize breathing effect ==*/
|
||||||
|
// /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
|
||||||
|
// #define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
|
||||||
|
// /*==== use exp() and sin() ====*/
|
||||||
|
// #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
|
||||||
|
// #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||||
|
#define DEBOUNCE 5
|
||||||
|
|
||||||
|
/* define if matrix has ghost (lacks anti-ghosting diodes) */
|
||||||
|
//#define MATRIX_HAS_GHOST
|
||||||
|
|
||||||
|
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||||
|
#define LOCKING_SUPPORT_ENABLE
|
||||||
|
/* Locking resynchronize hack */
|
||||||
|
#define LOCKING_RESYNC_ENABLE
|
||||||
|
|
||||||
|
/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
|
||||||
|
* This is userful for the Windows task manager shortcut (ctrl+shift+esc).
|
||||||
|
*/
|
||||||
|
// #define GRAVE_ESC_CTRL_OVERRIDE
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Force NKRO
|
||||||
|
*
|
||||||
|
* Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
|
||||||
|
* state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
|
||||||
|
* makefile for this to work.)
|
||||||
|
*
|
||||||
|
* If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
|
||||||
|
* until the next keyboard reset.
|
||||||
|
*
|
||||||
|
* NKRO may prevent your keystrokes from being detected in the BIOS, but it is
|
||||||
|
* fully operational during normal computer usage.
|
||||||
|
*
|
||||||
|
* For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
|
||||||
|
* or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
|
||||||
|
* bootmagic, NKRO mode will always be enabled until it is toggled again during a
|
||||||
|
* power-up.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
//#define FORCE_NKRO
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Magic Key Options
|
||||||
|
*
|
||||||
|
* Magic keys are hotkey commands that allow control over firmware functions of
|
||||||
|
* the keyboard. They are best used in combination with the HID Listen program,
|
||||||
|
* found here: https://www.pjrc.com/teensy/hid_listen.html
|
||||||
|
*
|
||||||
|
* The options below allow the magic key functionality to be changed. This is
|
||||||
|
* useful if your keyboard/keypad is missing keys and you want magic key support.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* key combination for magic key command */
|
||||||
|
/* defined by default; to change, uncomment and set to the combination you want */
|
||||||
|
// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT)
|
||||||
|
|
||||||
|
/* control how magic key switches layers */
|
||||||
|
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
|
||||||
|
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
|
||||||
|
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
|
||||||
|
|
||||||
|
/* override magic key keymap */
|
||||||
|
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
|
||||||
|
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
|
||||||
|
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
|
||||||
|
//#define MAGIC_KEY_HELP H
|
||||||
|
//#define MAGIC_KEY_HELP_ALT SLASH
|
||||||
|
//#define MAGIC_KEY_DEBUG D
|
||||||
|
//#define MAGIC_KEY_DEBUG_MATRIX X
|
||||||
|
//#define MAGIC_KEY_DEBUG_KBD K
|
||||||
|
//#define MAGIC_KEY_DEBUG_MOUSE M
|
||||||
|
//#define MAGIC_KEY_VERSION V
|
||||||
|
//#define MAGIC_KEY_STATUS S
|
||||||
|
//#define MAGIC_KEY_CONSOLE C
|
||||||
|
//#define MAGIC_KEY_LAYER0 0
|
||||||
|
//#define MAGIC_KEY_LAYER0_ALT GRAVE
|
||||||
|
//#define MAGIC_KEY_LAYER1 1
|
||||||
|
//#define MAGIC_KEY_LAYER2 2
|
||||||
|
//#define MAGIC_KEY_LAYER3 3
|
||||||
|
//#define MAGIC_KEY_LAYER4 4
|
||||||
|
//#define MAGIC_KEY_LAYER5 5
|
||||||
|
//#define MAGIC_KEY_LAYER6 6
|
||||||
|
//#define MAGIC_KEY_LAYER7 7
|
||||||
|
//#define MAGIC_KEY_LAYER8 8
|
||||||
|
//#define MAGIC_KEY_LAYER9 9
|
||||||
|
//#define MAGIC_KEY_BOOTLOADER B
|
||||||
|
//#define MAGIC_KEY_BOOTLOADER_ALT ESC
|
||||||
|
//#define MAGIC_KEY_LOCK CAPS
|
||||||
|
//#define MAGIC_KEY_EEPROM E
|
||||||
|
//#define MAGIC_KEY_EEPROM_CLEAR BSPACE
|
||||||
|
//#define MAGIC_KEY_NKRO N
|
||||||
|
//#define MAGIC_KEY_SLEEP_LED Z
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Feature disable options
|
||||||
|
* These options are also useful to firmware size reduction.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* disable debug print */
|
||||||
|
//#define NO_DEBUG
|
||||||
|
|
||||||
|
/* disable print */
|
||||||
|
//#define NO_PRINT
|
||||||
|
|
||||||
|
/* disable action features */
|
||||||
|
//#define NO_ACTION_LAYER
|
||||||
|
//#define NO_ACTION_TAPPING
|
||||||
|
//#define NO_ACTION_ONESHOT
|
||||||
|
|
||||||
|
/* disable these deprecated features by default */
|
||||||
|
#ifndef LINK_TIME_OPTIMIZATION_ENABLE
|
||||||
|
#define NO_ACTION_MACRO
|
||||||
|
#define NO_ACTION_FUNCTION
|
||||||
|
#endif
|
||||||
|
/*
|
||||||
|
* MIDI options
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Prevent use of disabled MIDI features in the keymap */
|
||||||
|
//#define MIDI_ENABLE_STRICT 1
|
||||||
|
|
||||||
|
/* enable basic MIDI features:
|
||||||
|
- MIDI notes can be sent when in Music mode is on
|
||||||
|
*/
|
||||||
|
//#define MIDI_BASIC
|
||||||
|
|
||||||
|
/* enable advanced MIDI features:
|
||||||
|
- MIDI notes can be added to the keymap
|
||||||
|
- Octave shift and transpose
|
||||||
|
- Virtual sustain, portamento, and modulation wheel
|
||||||
|
- etc.
|
||||||
|
*/
|
||||||
|
//#define MIDI_ADVANCED
|
||||||
|
|
||||||
|
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
|
||||||
|
//#define MIDI_TONE_KEYCODE_OCTAVES 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* HD44780 LCD Display Configuration
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
#define LCD_LINES 2 //< number of visible lines of the display
|
||||||
|
#define LCD_DISP_LENGTH 16 //< visibles characters per line of the display
|
||||||
|
|
||||||
|
#define LCD_IO_MODE 1 //< 0: memory mapped mode, 1: IO port mode
|
||||||
|
|
||||||
|
#if LCD_IO_MODE
|
||||||
|
#define LCD_PORT PORTB //< port for the LCD lines
|
||||||
|
#define LCD_DATA0_PORT LCD_PORT //< port for 4bit data bit 0
|
||||||
|
#define LCD_DATA1_PORT LCD_PORT //< port for 4bit data bit 1
|
||||||
|
#define LCD_DATA2_PORT LCD_PORT //< port for 4bit data bit 2
|
||||||
|
#define LCD_DATA3_PORT LCD_PORT //< port for 4bit data bit 3
|
||||||
|
#define LCD_DATA0_PIN 4 //< pin for 4bit data bit 0
|
||||||
|
#define LCD_DATA1_PIN 5 //< pin for 4bit data bit 1
|
||||||
|
#define LCD_DATA2_PIN 6 //< pin for 4bit data bit 2
|
||||||
|
#define LCD_DATA3_PIN 7 //< pin for 4bit data bit 3
|
||||||
|
#define LCD_RS_PORT LCD_PORT //< port for RS line
|
||||||
|
#define LCD_RS_PIN 3 //< pin for RS line
|
||||||
|
#define LCD_RW_PORT LCD_PORT //< port for RW line
|
||||||
|
#define LCD_RW_PIN 2 //< pin for RW line
|
||||||
|
#define LCD_E_PORT LCD_PORT //< port for Enable line
|
||||||
|
#define LCD_E_PIN 1 //< pin for Enable line
|
||||||
|
#endif
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Bootmagic Lite key configuration */
|
||||||
|
// #define BOOTMAGIC_LITE_ROW 0
|
||||||
|
// #define BOOTMAGIC_LITE_COLUMN 0
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "physix",
|
||||||
|
"url": "",
|
||||||
|
"maintainer": "hineybush",
|
||||||
|
"width": 20.25,
|
||||||
|
"height": 5.25,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT_all": {
|
||||||
|
"layout": [{"label":"Delete", "x":18.75, "y":0}, {"label":"Esc", "x":0.75, "y":0.25}, {"label":"!", "x":1.75, "y":0.25}, {"label":"@", "x":2.75, "y":0.25}, {"label":"#", "x":4, "y":0.25}, {"label":"$", "x":5, "y":0.25}, {"label":"%", "x":6, "y":0.25}, {"label":"^", "x":7, "y":0.25}, {"label":"&", "x":10, "y":0.25}, {"label":"*", "x":11, "y":0.25}, {"label":"(", "x":12, "y":0.25}, {"label":")", "x":13, "y":0.25}, {"label":"_", "x":14.25, "y":0.25}, {"label":"+", "x":15.25, "y":0.25}, {"label":"~", "x":16.25, "y":0.25}, {"label":"Back", "x":17.25, "y":0.25}, {"label":"PgUp", "x":19, "y":1}, {"label":"Tab", "x":0.5, "y":1.25, "w":1.5}, {"label":"Q", "x":2, "y":1.25}, {"label":"W", "x":3.5, "y":1.25}, {"label":"E", "x":4.5, "y":1.25}, {"label":"R", "x":5.5, "y":1.25}, {"label":"T", "x":6.5, "y":1.25}, {"label":"Y", "x":9.5, "y":1.25}, {"label":"U", "x":10.5, "y":1.25}, {"label":"I", "x":11.5, "y":1.25}, {"label":"O", "x":12.5, "y":1.25}, {"label":"P", "x":14, "y":1.25}, {"label":"{", "x":15, "y":1.25}, {"label":"}", "x":16, "y":1.25}, {"label":"|", "x":17, "y":1.25, "w":1.5}, {"label":"PgDn", "x":19.25, "y":2}, {"label":"Caps Lock", "x":0.25, "y":2.25, "w":1.75}, {"label":"A", "x":2, "y":2.25}, {"label":"S", "x":3.75, "y":2.25}, {"label":"D", "x":4.75, "y":2.25}, {"label":"F", "x":5.75, "y":2.25}, {"label":"G", "x":6.75, "y":2.25}, {"label":"H", "x":9.75, "y":2.25}, {"label":"J", "x":10.75, "y":2.25}, {"label":"K", "x":11.75, "y":2.25}, {"label":"L", "x":12.75, "y":2.25}, {"label":":", "x":14.5, "y":2.25}, {"label":"\"", "x":15.5, "y":2.25}, {"label":"Enter", "x":16.5, "y":2.25, "w":2.25}, {"label":"Shift", "x":0, "y":3.25, "w":2.25}, {"label":"Z", "x":2.25, "y":3.25}, {"label":"X", "x":4.25, "y":3.25}, {"label":"C", "x":5.25, "y":3.25}, {"label":"V", "x":6.25, "y":3.25}, {"label":"B", "x":7.25, "y":3.25}, {"label":"B", "x":9.25, "y":3.25}, {"label":"N", "x":10.25, "y":3.25}, {"label":"M", "x":11.25, "y":3.25}, {"label":"<", "x":12.25, "y":3.25}, {"label":">", "x":14, "y":3.25}, {"label":"?", "x":15, "y":3.25}, {"label":"Shift", "x":16, "y":3.25, "w":1.75}, {"label":"\u2191", "x":17.75, "y":3.25}, {"label":"Ctrl", "x":0.25, "y":4.25, "w":1.5}, {"label":"Alt", "x":4, "y":4.25, "w":1.25}, {"label":"Space", "x":5.25, "y":4.25, "w":2.25}, {"label":"Layer 2", "x":7.5, "y":4.25}, {"label":"Space", "x":9, "y":4.25, "w":2}, {"x":11, "y":4.25}, {"label":"Right Alt", "x":12, "y":4.25}, {"label":"Win", "x":15.25, "y":4.25, "w":1.5}, {"label":"\u2190", "x":16.75, "y":4.25}, {"label":"\u2193", "x":17.75, "y":4.25}, {"label":"\u2192", "x":18.75, "y":4.25}]
|
||||||
|
},
|
||||||
|
"LAYOUT_split_bksp_275_rspace": {
|
||||||
|
"layout": [{"label":"Delete", "x":18.75, "y":0}, {"label":"Esc", "x":0.75, "y":0.25}, {"label":"!", "x":1.75, "y":0.25}, {"label":"@", "x":2.75, "y":0.25}, {"label":"#", "x":4, "y":0.25}, {"label":"$", "x":5, "y":0.25}, {"label":"%", "x":6, "y":0.25}, {"label":"^", "x":7, "y":0.25}, {"label":"&", "x":10, "y":0.25}, {"label":"*", "x":11, "y":0.25}, {"label":"(", "x":12, "y":0.25}, {"label":")", "x":13, "y":0.25}, {"label":"_", "x":14.25, "y":0.25}, {"label":"+", "x":15.25, "y":0.25}, {"label":"~", "x":16.25, "y":0.25}, {"label":"Back", "x":17.25, "y":0.25}, {"label":"PgUp", "x":19, "y":1}, {"label":"Tab", "x":0.5, "y":1.25, "w":1.5}, {"label":"Q", "x":2, "y":1.25}, {"label":"W", "x":3.5, "y":1.25}, {"label":"E", "x":4.5, "y":1.25}, {"label":"R", "x":5.5, "y":1.25}, {"label":"T", "x":6.5, "y":1.25}, {"label":"Y", "x":9.5, "y":1.25}, {"label":"U", "x":10.5, "y":1.25}, {"label":"I", "x":11.5, "y":1.25}, {"label":"O", "x":12.5, "y":1.25}, {"label":"P", "x":14, "y":1.25}, {"label":"{", "x":15, "y":1.25}, {"label":"}", "x":16, "y":1.25}, {"label":"|", "x":17, "y":1.25, "w":1.5}, {"label":"PgDn", "x":19.25, "y":2}, {"label":"Caps Lock", "x":0.25, "y":2.25, "w":1.75}, {"label":"A", "x":2, "y":2.25}, {"label":"S", "x":3.75, "y":2.25}, {"label":"D", "x":4.75, "y":2.25}, {"label":"F", "x":5.75, "y":2.25}, {"label":"G", "x":6.75, "y":2.25}, {"label":"H", "x":9.75, "y":2.25}, {"label":"J", "x":10.75, "y":2.25}, {"label":"K", "x":11.75, "y":2.25}, {"label":"L", "x":12.75, "y":2.25}, {"label":":", "x":14.5, "y":2.25}, {"label":"\"", "x":15.5, "y":2.25}, {"label":"Enter", "x":16.5, "y":2.25, "w":2.25}, {"label":"Shift", "x":0, "y":3.25, "w":2.25}, {"label":"Z", "x":2.25, "y":3.25}, {"label":"X", "x":4.25, "y":3.25}, {"label":"C", "x":5.25, "y":3.25}, {"label":"V", "x":6.25, "y":3.25}, {"label":"B", "x":7.25, "y":3.25}, {"label":"B", "x":9.25, "y":3.25}, {"label":"N", "x":10.25, "y":3.25}, {"label":"M", "x":11.25, "y":3.25}, {"label":"<", "x":12.25, "y":3.25}, {"label":">", "x":14, "y":3.25}, {"label":"?", "x":15, "y":3.25}, {"label":"Shift", "x":16, "y":3.25, "w":1.75}, {"label":"\u2191", "x":17.75, "y":3.25}, {"label":"Ctrl", "x":0.25, "y":4.25, "w":1.5}, {"label":"Alt", "x":4, "y":4.25, "w":1.25}, {"label":"Space", "x":5.25, "y":4.25, "w":2.25}, {"label":"Layer 2", "x":7.5, "y":4.25}, {"label":"Space", "x":9, "y":4.25, "w":2.75}, {"label":"Right Alt", "x":11.75, "y":4.25, "w":1.25}, {"label":"Win", "x":15.25, "y":4.25, "w":1.5}, {"label":"\u2190", "x":16.75, "y":4.25}, {"label":"\u2193", "x":17.75, "y":4.25}, {"label":"\u2192", "x":18.75, "y":4.25}]
|
||||||
|
},
|
||||||
|
"LAYOUT_full_bksp_275_rspace": {
|
||||||
|
"layout": [{"label":"Delete", "x":18.75, "y":0}, {"label":"Esc", "x":0.75, "y":0.25}, {"label":"!", "x":1.75, "y":0.25}, {"label":"@", "x":2.75, "y":0.25}, {"label":"#", "x":4, "y":0.25}, {"label":"$", "x":5, "y":0.25}, {"label":"%", "x":6, "y":0.25}, {"label":"^", "x":7, "y":0.25}, {"label":"&", "x":10, "y":0.25}, {"label":"*", "x":11, "y":0.25}, {"label":"(", "x":12, "y":0.25}, {"label":")", "x":13, "y":0.25}, {"label":"_", "x":14.25, "y":0.25}, {"label":"+", "x":15.25, "y":0.25}, {"label":"Back", "x":16.25, "y":0.25, "w":2}, {"label":"PgUp", "x":19, "y":1}, {"label":"Tab", "x":0.5, "y":1.25, "w":1.5}, {"label":"Q", "x":2, "y":1.25}, {"label":"W", "x":3.5, "y":1.25}, {"label":"E", "x":4.5, "y":1.25}, {"label":"R", "x":5.5, "y":1.25}, {"label":"T", "x":6.5, "y":1.25}, {"label":"Y", "x":9.5, "y":1.25}, {"label":"U", "x":10.5, "y":1.25}, {"label":"I", "x":11.5, "y":1.25}, {"label":"O", "x":12.5, "y":1.25}, {"label":"P", "x":14, "y":1.25}, {"label":"{", "x":15, "y":1.25}, {"label":"}", "x":16, "y":1.25}, {"label":"|", "x":17, "y":1.25, "w":1.5}, {"label":"PgDn", "x":19.25, "y":2}, {"label":"Caps Lock", "x":0.25, "y":2.25, "w":1.75}, {"label":"A", "x":2, "y":2.25}, {"label":"S", "x":3.75, "y":2.25}, {"label":"D", "x":4.75, "y":2.25}, {"label":"F", "x":5.75, "y":2.25}, {"label":"G", "x":6.75, "y":2.25}, {"label":"H", "x":9.75, "y":2.25}, {"label":"J", "x":10.75, "y":2.25}, {"label":"K", "x":11.75, "y":2.25}, {"label":"L", "x":12.75, "y":2.25}, {"label":":", "x":14.5, "y":2.25}, {"label":"\"", "x":15.5, "y":2.25}, {"label":"Enter", "x":16.5, "y":2.25, "w":2.25}, {"label":"Shift", "x":0, "y":3.25, "w":2.25}, {"label":"Z", "x":2.25, "y":3.25}, {"label":"X", "x":4.25, "y":3.25}, {"label":"C", "x":5.25, "y":3.25}, {"label":"V", "x":6.25, "y":3.25}, {"label":"B", "x":7.25, "y":3.25}, {"label":"B", "x":9.25, "y":3.25}, {"label":"N", "x":10.25, "y":3.25}, {"label":"M", "x":11.25, "y":3.25}, {"label":"<", "x":12.25, "y":3.25}, {"label":">", "x":14, "y":3.25}, {"label":"?", "x":15, "y":3.25}, {"label":"Shift", "x":16, "y":3.25, "w":1.75}, {"label":"\u2191", "x":17.75, "y":3.25}, {"label":"Ctrl", "x":0.25, "y":4.25, "w":1.5}, {"label":"Alt", "x":4, "y":4.25, "w":1.25}, {"label":"Space", "x":5.25, "y":4.25, "w":2.25}, {"label":"Layer 2", "x":7.5, "y":4.25}, {"label":"Space", "x":9, "y":4.25, "w":2.75}, {"label":"Right Alt", "x":11.75, "y":4.25, "w":1.25}, {"label":"Win", "x":15.25, "y":4.25, "w":1.5}, {"label":"\u2190", "x":16.75, "y":4.25}, {"label":"\u2193", "x":17.75, "y":4.25}, {"label":"\u2192", "x":18.75, "y":4.25}]
|
||||||
|
},
|
||||||
|
"LAYOUT_full_bksp_200_rspace": {
|
||||||
|
"layout": [{"label":"Delete", "x":18.75, "y":0}, {"label":"Esc", "x":0.75, "y":0.25}, {"label":"!", "x":1.75, "y":0.25}, {"label":"@", "x":2.75, "y":0.25}, {"label":"#", "x":4, "y":0.25}, {"label":"$", "x":5, "y":0.25}, {"label":"%", "x":6, "y":0.25}, {"label":"^", "x":7, "y":0.25}, {"label":"&", "x":10, "y":0.25}, {"label":"*", "x":11, "y":0.25}, {"label":"(", "x":12, "y":0.25}, {"label":")", "x":13, "y":0.25}, {"label":"_", "x":14.25, "y":0.25}, {"label":"+", "x":15.25, "y":0.25}, {"label":"Back", "x":16.25, "y":0.25, "w":2}, {"label":"PgUp", "x":19, "y":1}, {"label":"Tab", "x":0.5, "y":1.25, "w":1.5}, {"label":"Q", "x":2, "y":1.25}, {"label":"W", "x":3.5, "y":1.25}, {"label":"E", "x":4.5, "y":1.25}, {"label":"R", "x":5.5, "y":1.25}, {"label":"T", "x":6.5, "y":1.25}, {"label":"Y", "x":9.5, "y":1.25}, {"label":"U", "x":10.5, "y":1.25}, {"label":"I", "x":11.5, "y":1.25}, {"label":"O", "x":12.5, "y":1.25}, {"label":"P", "x":14, "y":1.25}, {"label":"{", "x":15, "y":1.25}, {"label":"}", "x":16, "y":1.25}, {"label":"|", "x":17, "y":1.25, "w":1.5}, {"label":"PgDn", "x":19.25, "y":2}, {"label":"Caps Lock", "x":0.25, "y":2.25, "w":1.75}, {"label":"A", "x":2, "y":2.25}, {"label":"S", "x":3.75, "y":2.25}, {"label":"D", "x":4.75, "y":2.25}, {"label":"F", "x":5.75, "y":2.25}, {"label":"G", "x":6.75, "y":2.25}, {"label":"H", "x":9.75, "y":2.25}, {"label":"J", "x":10.75, "y":2.25}, {"label":"K", "x":11.75, "y":2.25}, {"label":"L", "x":12.75, "y":2.25}, {"label":":", "x":14.5, "y":2.25}, {"label":"\"", "x":15.5, "y":2.25}, {"label":"Enter", "x":16.5, "y":2.25, "w":2.25}, {"label":"Shift", "x":0, "y":3.25, "w":2.25}, {"label":"Z", "x":2.25, "y":3.25}, {"label":"X", "x":4.25, "y":3.25}, {"label":"C", "x":5.25, "y":3.25}, {"label":"V", "x":6.25, "y":3.25}, {"label":"B", "x":7.25, "y":3.25}, {"label":"B", "x":9.25, "y":3.25}, {"label":"N", "x":10.25, "y":3.25}, {"label":"M", "x":11.25, "y":3.25}, {"label":"<", "x":12.25, "y":3.25}, {"label":">", "x":14, "y":3.25}, {"label":"?", "x":15, "y":3.25}, {"label":"Shift", "x":16, "y":3.25, "w":1.75}, {"label":"\u2191", "x":17.75, "y":3.25}, {"label":"Ctrl", "x":0.25, "y":4.25, "w":1.5}, {"label":"Alt", "x":4, "y":4.25, "w":1.25}, {"label":"Space", "x":5.25, "y":4.25, "w":2.25}, {"label":"Layer 2", "x":7.5, "y":4.25}, {"label":"Space", "x":9, "y":4.25, "w":2}, {"x":11, "y":4.25}, {"label":"Right Alt", "x":12, "y":4.25}, {"label":"Win", "x":15.25, "y":4.25, "w":1.5}, {"label":"\u2190", "x":16.75, "y":4.25}, {"label":"\u2193", "x":17.75, "y":4.25}, {"label":"\u2192", "x":18.75, "y":4.25}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
/* Copyright 2019 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 QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
// Defines names for use in layer keycodes and the keymap
|
||||||
|
enum layer_names {
|
||||||
|
_BASE,
|
||||||
|
_FN
|
||||||
|
};
|
||||||
|
|
||||||
|
// Defines the keycodes used by our macros in process_record_user
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/* #define LAYOUT_split_bksp_275_rspace( \
|
||||||
|
k000, k001, k002, k003, k004, k005, k403, k006, k007, k008, k009, k010, k011, k012, k013, k014, \
|
||||||
|
k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, \
|
||||||
|
k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k214, \
|
||||||
|
k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, \
|
||||||
|
k400, k402, k404, k405, k406, K409, k410, k411, k412, k413 \
|
||||||
|
) \ */
|
||||||
|
[_BASE] = LAYOUT_split_bksp_275_rspace(
|
||||||
|
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_GRAVE, 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_PGUP,
|
||||||
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
|
||||||
|
KC_LCTL, KC_LALT, KC_SPC, MO(_FN), KC_SPC, KC_RALT, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
|
),
|
||||||
|
[_FN] = LAYOUT_split_bksp_275_rspace(
|
||||||
|
KC_TRNS, RGB_TOG, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_BRTG, BL_TOGG, BL_INC, BL_DEC, KC_TRNS, KC_TRNS, KC_INS,
|
||||||
|
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_HOME,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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 default keymap for physix
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
/* Copyright 2019 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 "physix.h"
|
||||||
|
|
||||||
|
// Optional override functions below.
|
||||||
|
// You can leave any or all of these undefined.
|
||||||
|
// These are only required if you want to perform custom actions.
|
||||||
|
|
||||||
|
|
||||||
|
void matrix_init_kb(void) {
|
||||||
|
// put your keyboard start-up code here
|
||||||
|
// runs once when the firmware starts up
|
||||||
|
setPinOutput(D3);
|
||||||
|
setPinOutput(D5);
|
||||||
|
matrix_init_user();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool led_update_kb(led_t led_state) {
|
||||||
|
// put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
|
||||||
|
bool res = led_update_user(led_state);
|
||||||
|
if(res) {
|
||||||
|
// writePin sets the pin high for 1 and low for 0.
|
||||||
|
// In this example the pins are inverted, setting
|
||||||
|
// it low/0 turns it on, and high/1 turns the LED off.
|
||||||
|
// This behavior depends on whether the LED is between the pin
|
||||||
|
// and VCC or the pin and GND.
|
||||||
|
writePin(D3, led_state.caps_lock);
|
||||||
|
writePin(D5, led_state.scroll_lock);
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
return led_update_user(led_state);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,87 @@
|
|||||||
|
/* Copyright 2019 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, k403, k006, k007, k008, k009, k010, k011, k012, k013, k014, \
|
||||||
|
k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, \
|
||||||
|
k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k214, \
|
||||||
|
k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, \
|
||||||
|
k400, k402, k404, k405, k406, k408, k409, k410, k411, k412, k413 \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014}, \
|
||||||
|
{k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114}, \
|
||||||
|
{k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, KC_NO, k214}, \
|
||||||
|
{k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, KC_NO}, \
|
||||||
|
{k400, KC_NO,k402, k403, k404, k405, k406, KC_NO,k408, k409 ,k410, k411, k412, k413, KC_NO} \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_split_bksp_275_rspace( \
|
||||||
|
k000, k001, k002, k003, k004, k005, k403, k006, k007, k008, k009, k010, k011, k012, k013, k014, \
|
||||||
|
k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, \
|
||||||
|
k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k214, \
|
||||||
|
k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, \
|
||||||
|
k400, k402, k404, k405, k406, k409, k410, k411, k412, k413 \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014}, \
|
||||||
|
{k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114}, \
|
||||||
|
{k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, KC_NO, k214}, \
|
||||||
|
{k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, KC_NO}, \
|
||||||
|
{k400, KC_NO,k402, k403, k404, k405, k406, KC_NO,KC_NO,k409 ,k410, k411, k412, k413, KC_NO} \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_full_bksp_275_rspace( \
|
||||||
|
k000, k001, k002, k003, k004, k005, k403, k006, k007, k008, k009, k010, k011, k013, k014, \
|
||||||
|
k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, \
|
||||||
|
k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k214, \
|
||||||
|
k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, \
|
||||||
|
k400, k402, k404, k405, k406, k409, k410, k411, k412, k413 \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, KC_NO,k013, k014}, \
|
||||||
|
{k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114}, \
|
||||||
|
{k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, KC_NO, k214}, \
|
||||||
|
{k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, KC_NO}, \
|
||||||
|
{k400, KC_NO,k402, k403, k404, k405, k406, KC_NO,KC_NO,k409 ,k410, k411, k412, k413, KC_NO} \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_full_bksp_200_rspace( \
|
||||||
|
k000, k001, k002, k003, k004, k005, k403, k006, k007, k008, k009, k010, k011, k013, k014, \
|
||||||
|
k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, \
|
||||||
|
k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k214, \
|
||||||
|
k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, \
|
||||||
|
k400, k402, k404, k405, k406, k408, k409, k410, k411, k412, k413 \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, KC_NO,k013, k014}, \
|
||||||
|
{k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114}, \
|
||||||
|
{k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, KC_NO, k214}, \
|
||||||
|
{k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, KC_NO}, \
|
||||||
|
{k400, KC_NO,k402, k403, k404, k405, k406, KC_NO,k408, k409 ,k410, k411, k412, k413, KC_NO} \
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
# physix
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
The PhysiX Ergonomic Keyboard by Life Zone
|
||||||
|
|
||||||
|
* Keyboard Maintainer: [hineybush](https://github.com/hineybush)
|
||||||
|
* Hardware Supported: LZ PhysiX
|
||||||
|
* Hardware Availability: Group Buy
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make hineybush/physix: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,32 @@
|
|||||||
|
# MCU name
|
||||||
|
MCU = atmega32u4
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
# Teensy halfkay
|
||||||
|
# Pro Micro caterina
|
||||||
|
# Atmel DFU atmel-dfu
|
||||||
|
# LUFA DFU lufa-dfu
|
||||||
|
# QMK DFU qmk-dfu
|
||||||
|
# ATmega32A bootloadHID
|
||||||
|
# ATmega328P USBasp
|
||||||
|
BOOTLOADER = atmel-dfu
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
||||||
|
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||||
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
|
CONSOLE_ENABLE = 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 = yes # 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 on port C6
|
||||||
|
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||||
|
HD44780_ENABLE = no # Enable support for HD44780 based LCDs
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
/* Base layer
|
||||||
|
* ,--------------------------------------------------------------------------------------------------.
|
||||||
|
* |Esc ~| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Backspace | Home |
|
||||||
|
* |-------------------------------------------------------------------------------------------+------+
|
||||||
|
* | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | End |
|
||||||
|
* |-------------------------------------------------------------------------------------------+------+
|
||||||
|
* | CtrlCaps | A | S | D | F | G | H | J | K | L | ; | ' | Enter | PgUp |
|
||||||
|
* |-------------------------------------------------------------------------------------------+------+
|
||||||
|
* | Shift | Z | X | C | V | B | N | M | , | . | / | MO(2) | Up | PgDn |
|
||||||
|
* +-------------------------------------------------------------------------┬---┬-------------+------+
|
||||||
|
* | LCtrl | LGUI | LAlt | Space | Btn2 | MO(1)| | Left |Down | Right|
|
||||||
|
* `-------------------------------------------------------------------------┘ └-------------+------´
|
||||||
|
*/
|
||||||
|
[0] = LAYOUT_65_ansi_blocker( /* Base */
|
||||||
|
KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLASH, KC_END,
|
||||||
|
CTL_T(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, MO(2), KC_UP, KC_PGDN,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_BTN2, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT
|
||||||
|
),
|
||||||
|
|
||||||
|
[1] = LAYOUT_65_ansi_blocker( /* MO(1) - Fn */
|
||||||
|
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_HOME,
|
||||||
|
_______, RGB_TOG, RGB_MOD, RGB_HUI,RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, KC_PSCR, KC_SLCK, KC_PAUS, RESET, KC_PGUP,
|
||||||
|
CTL_T(KC_CAPS),RGB_SPI, RGB_SPD, _______,_______, _______, _______, _______, _______, _______, _______, _______, EEP_RST, KC_PGDN,
|
||||||
|
KC_LSFT, _______, _______, _______,_______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, KC_MUTE,
|
||||||
|
_______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT
|
||||||
|
),
|
||||||
|
|
||||||
|
[2] = LAYOUT_65_ansi_blocker( /* MO(2) - RShift */
|
||||||
|
KC_GESC, _______, _______, _______,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
LCTL(KC_L), _______, _______, _______,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
)
|
||||||
|
};
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
MOUSEKEY_ENABLE = yes
|
||||||
|
NKRO_ENABLE = yes
|
||||||
+61
-21
@@ -1,23 +1,63 @@
|
|||||||
{
|
{
|
||||||
"keyboard_name": "Kyria",
|
"keyboard_name": "Kyria",
|
||||||
"url": "https://splitkb.com",
|
"url": "https://splitkb.com",
|
||||||
"maintainer": "splitkb.com",
|
"maintainer": "splitkb.com",
|
||||||
"width": 16.5,
|
"width": 16.5,
|
||||||
"height": 5.5,
|
"height": 5.25,
|
||||||
"layouts": {
|
"layouts": {
|
||||||
"LAYOUT": {
|
"LAYOUT": {
|
||||||
"layout": [
|
"layout": [
|
||||||
{"x":3, "y":0.25}, {"x":12.5, "y":0.25}, {"x":2, "y":0.5}, {"x":4, "y":0.5}, {"x":11.5, "y":0.5},
|
{"x":0, "y":0.75},
|
||||||
{"x":13.5, "y":0.5}, {"x":5, "y":0.75}, {"x":10.5, "y":0.75}, {"x":0, "y":1}, {"x":1, "y":1},
|
{"x":1, "y":0.75},
|
||||||
{"x":14.5, "y":1}, {"x":15.5, "y":1}, {"x":3, "y":1.25}, {"x":12.5, "y":1.25}, {"x":2, "y":1.5},
|
{"x":2, "y":0.25},
|
||||||
{"x":4, "y":1.5}, {"x":11.5, "y":1.5}, {"x":13.5, "y":1.5}, {"x":5, "y":1.75}, {"x":10.5, "y":1.75},
|
{"x":3, "y":0},
|
||||||
{"x":0, "y":2}, {"x":1, "y":2}, {"x":14.5, "y":2}, {"x":15.5, "y":2}, {"x":3, "y":2.25},
|
{"x":4, "y":0.25},
|
||||||
{"x":12.5, "y":2.25}, {"x":2, "y":2.5}, {"x":4, "y":2.5}, {"x":11.5, "y":2.5}, {"x":13.5, "y":2.5},
|
{"x":5, "y":0.5},
|
||||||
{"x":5, "y":2.75}, {"x":10.5, "y":2.75}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":14.5, "y":3},
|
{"x":10.5, "y":0.5},
|
||||||
{"x":15.5, "y":3}, {"x":6, "y":3.25}, {"x":9.5, "y":3.25}, {"x":2.5, "y":3.5}, {"x":3.5, "y":3.5},
|
{"x":11.5, "y":0.25},
|
||||||
{"x":7, "y":3.5}, {"x":8.5, "y":3.5}, {"x":12, "y":3.5}, {"x":13, "y":3.5}, {"x":4.5, "y":3.75},
|
{"x":12.5, "y":0},
|
||||||
{"x":11, "y":3.75}, {"x":5.5, "y":4.25}, {"x":10, "y":4.25}, {"x":6.5, "y":4.5}, {"x":9, "y":4.5}
|
{"x":13.5, "y":0.25},
|
||||||
]
|
{"x":14.5, "y":0.75},
|
||||||
}
|
{"x":15.5, "y":0.75},
|
||||||
|
{"x":0, "y":1.75},
|
||||||
|
{"x":1, "y":1.75},
|
||||||
|
{"x":2, "y":1.25},
|
||||||
|
{"x":3, "y":1},
|
||||||
|
{"x":4, "y":1.25},
|
||||||
|
{"x":5, "y":1.5},
|
||||||
|
{"x":10.5, "y":1.5},
|
||||||
|
{"x":11.5, "y":1.25},
|
||||||
|
{"x":12.5, "y":1},
|
||||||
|
{"x":13.5, "y":1.25},
|
||||||
|
{"x":14.5, "y":1.75},
|
||||||
|
{"x":15.5, "y":1.75},
|
||||||
|
{"x":0, "y":2.75},
|
||||||
|
{"x":1, "y":2.75},
|
||||||
|
{"x":2, "y":2.25},
|
||||||
|
{"x":3, "y":2},
|
||||||
|
{"x":4, "y":2.25},
|
||||||
|
{"x":5, "y":2.5},
|
||||||
|
{"x":6, "y":3},
|
||||||
|
{"x":7, "y":3.25},
|
||||||
|
{"x":8.5, "y":3.25},
|
||||||
|
{"x":9.5, "y":3},
|
||||||
|
{"x":10.5, "y":2.5},
|
||||||
|
{"x":11.5, "y":2.25},
|
||||||
|
{"x":12.5, "y":2},
|
||||||
|
{"x":13.5, "y":2.25},
|
||||||
|
{"x":14.5, "y":2.75},
|
||||||
|
{"x":15.5, "y":2.75},
|
||||||
|
{"x":2.5, "y":3.25},
|
||||||
|
{"x":3.5, "y":3.25},
|
||||||
|
{"x":4.5, "y":3.5},
|
||||||
|
{"x":5.5, "y":4},
|
||||||
|
{"x":6.5, "y":4.25},
|
||||||
|
{"x":9, "y":4.25},
|
||||||
|
{"x":10, "y":4},
|
||||||
|
{"x":11, "y":3.5},
|
||||||
|
{"x":12, "y":3.25},
|
||||||
|
{"x":13, "y":3.25}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
@@ -29,29 +29,29 @@ enum layer_names {
|
|||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
[_BASE] = LAYOUT_reviung39(
|
[_BASE] = LAYOUT_reviung39(
|
||||||
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPACE,
|
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPACE,
|
||||||
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_RGUI, KC_RSFT,
|
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, SFT_T(KC_SCLN), KC_RGUI,
|
||||||
KC_SPC, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_RCTL, KC_RGUI, KC_RALT, RGUI(KC_RSFT),
|
KC_SPC, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_RCTL, KC_DOT, KC_RALT, RGUI(KC_RSFT),
|
||||||
LOWER, KC_ENT, RAISE
|
LOWER, KC_ENT, RAISE
|
||||||
),
|
),
|
||||||
|
|
||||||
[_LOWER] = LAYOUT_reviung39(
|
[_LOWER] = LAYOUT_reviung39(
|
||||||
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, _______, _______, _______,
|
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, _______, _______, _______,
|
||||||
_______, KC_LT, KC_GT, KC_LPRN, KC_RPRN, KC_GRV, KC_MINS, KC_LCBR, KC_RCBR, KC_LBRC, KC_RBRC, KC_PIPE,
|
_______, KC_LT, KC_GT, KC_LPRN, KC_RPRN, KC_GRV, KC_MINS, KC_LCBR, KC_RCBR, KC_LBRC, KC_RBRC, KC_PIPE,
|
||||||
_______, _______, _______, _______, KC_EQL, KC_QUES, KC_UNDS, KC_PLUS, KC_COMM, KC_DOT, KC_SLSH, _______,
|
KC_LALT, _______, _______, _______, KC_EQL, KC_QUES, KC_UNDS, KC_PLUS, KC_COMM, _______, KC_SLSH, _______,
|
||||||
_______, KC_ENT, KC_RGUI
|
_______, _______, KC_RGUI
|
||||||
),
|
),
|
||||||
|
|
||||||
[_RAISE] = LAYOUT_reviung39(
|
[_RAISE] = LAYOUT_reviung39(
|
||||||
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
|
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
|
||||||
_______, KC_COLN, KC_SCLN, KC_DQT, KC_QUOT, KC_BSLS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______,
|
_______, KC_COLN, KC_SCLN, KC_DQT, KC_QUOT, KC_BSLS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______,
|
||||||
_______, _______, _______, _______, _______, _______, ADJUST, _______, _______, _______, _______, _______,
|
_______, _______, _______, _______, _______, _______, ADJUST, _______, _______, _______, _______, _______,
|
||||||
KC_LGUI, KC_ENT, _______
|
KC_LGUI, _______, _______
|
||||||
),
|
),
|
||||||
|
|
||||||
[_ADJUST] = LAYOUT_reviung39(
|
[_ADJUST] = LAYOUT_reviung39(
|
||||||
RGB_VAI, RGB_SAI, RGB_HUI, RGB_MOD, XXXXXXX, RGB_TOG, KC_Y, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
RGB_VAI, RGB_SAI, RGB_HUI, RGB_MOD, XXXXXXX, RGB_TOG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
RGB_VAD, RGB_SAD, RGB_HUD, RGB_RMOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
RGB_VAD, RGB_SAD, RGB_HUD, RGB_RMOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
_______, XXXXXXX, _______
|
_______, XXXXXXX, _______
|
||||||
),
|
),
|
||||||
};
|
};
|
||||||
Loaded 100 of 116 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user