Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cd5399942b | ||
|
|
fd4bbd8d11 | ||
|
|
f43cb31476 | ||
|
|
89eb3a9e42 | ||
|
|
66d94dc22a | ||
|
|
5a8f59503e | ||
|
|
7918f7d61d | ||
|
|
55b43f02f0 | ||
|
|
46a84ec84a | ||
|
|
3b5998085c | ||
|
|
bc13dcd349 | ||
|
|
55002338b1 | ||
|
|
4a92dd327c | ||
|
|
7873b49d40 | ||
|
|
fcf2b45263 | ||
|
|
5607af8524 | ||
|
|
5a45627e17 | ||
|
|
17d0f6338e | ||
|
|
484c059d86 | ||
|
|
3cc68543ca | ||
|
|
daf6dedb02 | ||
|
|
e990863296 | ||
|
|
2ae39ccf38 | ||
|
|
5185c52b4a | ||
|
|
c0b99badcb | ||
|
|
f9bb9ef0b8 | ||
|
|
3d9ffd3efb | ||
|
|
3cea9fedff | ||
|
|
575d99816e | ||
|
|
4bccde37d4 | ||
|
|
f6b40da7f8 | ||
|
|
6fb048fdaf | ||
|
|
06b571aa53 | ||
|
|
355b693e4e | ||
|
|
f514ad5503 | ||
|
|
09a1917103 | ||
|
|
46e4493761 | ||
|
|
157d121c71 | ||
|
|
7e6b550ebf | ||
|
|
7f4ce4a8b7 | ||
|
|
6452973761 | ||
|
|
a2309b306a | ||
|
|
0499f30f59 | ||
|
|
bf38f39c3f | ||
|
|
62d1d69ba9 |
No files matched your search
@@ -1,24 +0,0 @@
|
|||||||
|
|
||||||
-I.
|
|
||||||
-I./drivers
|
|
||||||
-I./drivers/avr
|
|
||||||
-I./keyboards/ergodox_ez
|
|
||||||
-I./keyboards/ergodox_ez/keymaps/vim
|
|
||||||
-I./lib
|
|
||||||
-I./lib/lufa
|
|
||||||
-I./quantum
|
|
||||||
-I./quantum/api
|
|
||||||
-I./quantum/audio
|
|
||||||
-I./quantum/keymap_extras
|
|
||||||
-I./quantum/process_keycode
|
|
||||||
-I./quantum/serial_link
|
|
||||||
-I./quantum/template
|
|
||||||
-I./quantum/tools
|
|
||||||
-I./quantum/visualizer
|
|
||||||
-I./tmk_core
|
|
||||||
-I./tmk_core/common
|
|
||||||
-I./tmk_core/common/debug.h
|
|
||||||
-I./tmk_core/protocol
|
|
||||||
-I./tmk_core/protocol/lufa
|
|
||||||
-I./util
|
|
||||||
-DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYMAP=\"$(KEYMAP)\"
|
|
||||||
+1
-1
@@ -24,6 +24,7 @@ quantum/version.h
|
|||||||
.idea/
|
.idea/
|
||||||
CMakeLists.txt
|
CMakeLists.txt
|
||||||
cmake-build-debug
|
cmake-build-debug
|
||||||
|
.clang_complete
|
||||||
doxygen/
|
doxygen/
|
||||||
.DS_Store
|
.DS_Store
|
||||||
/util/wsl_downloaded
|
/util/wsl_downloaded
|
||||||
@@ -47,7 +48,6 @@ doxygen/
|
|||||||
*.iml
|
*.iml
|
||||||
.browse.VC.db*
|
.browse.VC.db*
|
||||||
*.stackdump
|
*.stackdump
|
||||||
util/Win_Check_Output.txt
|
|
||||||
# Let these ones be user specific, since we have so many different configurations
|
# Let these ones be user specific, since we have so many different configurations
|
||||||
.vscode/c_cpp_properties.json
|
.vscode/c_cpp_properties.json
|
||||||
.vscode/launch.json
|
.vscode/launch.json
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
complete -W " 9key-default alps64-default amj40-default amj40-fabian amj60-default_60_ansi amj60-iso_split_rshift amj60-maximized amjpad-default amjpad-max amjpad-ortho_left amjpad-ortho_right atomic-default atomic-default_ortho_5x15 atomic-pvc atreus-alphadox atreus-classic atreus-default atreus-erlandsona atreus-gerb atreus-jeremy atreus-replicaJunction atreus-xyverz atreus62-atreus52 atreus62-default atreus62-mneme atreus62-xyverz bananasplit-0010 bananasplit-coloneljesus bananasplit-default bananasplit-hhkbanana bananasplit-nic bananasplit-rask bantam44-default chibios_test-default clueboard-bloodlvst clueboard-caps_fn clueboard-colemak clueboard-default clueboard-jokrik clueboard-mac_optimized clueboard-magicmonty clueboard-maximised clueboard-mouse_keys clueboard-serubin clueboard-shift_fn clueboard-skully clueboard-smt clueboard-tetris clueboard-unix_optimized clueboard-win_optimized clueboard-xyverz cluecard-default cluecard-rgb_effects cluepad-default deltasplit75-default deltasplit75-itsaferbie deltasplit75-protosplit dk60-default eco-default eco-that_canadian ergodone-333fred ergodone-ab ergodone-absenth ergodone-adam ergodone-adnw_k_o_y ergodone-albert ergodone-alexjj ergodone-algernon ergodone-alphadox ergodone-andrew_osx ergodone-belak ergodone-bepo ergodone-bepo_csa ergodone-bryan ergodone-coderkun_neo2 ergodone-colemak ergodone-colemak_osx_pc_no ergodone-colemak_programmer ergodone-common_nighthawk ergodone-csharp_dev ergodone-dave ergodone-deadcyclo ergodone-default ergodone-default_ergodox ergodone-dragon788 ergodone-dvorak ergodone-dvorak_emacs ergodone-dvorak_emacs_software ergodone-dvorak_intl_squisher ergodone-dvorak_plover ergodone-dvorak_programmer ergodone-dvorak_programmer_swe ergodone-dvorak_spanish ergodone-emacs_osx_dk ergodone-erez_experimental ergodone-familiar ergodone-french_hacker ergodone-galson ergodone-german ergodone-german-kinergo ergodone-german-lukas ergodone-german-manuneo ergodone-guni ergodone-ishigoya-jp ergodone-italian ergodone-j3rn ergodone-jack ergodone-jacobono ergodone-jafo ergodone-jgarr ergodone-josh ergodone-kastyle ergodone-kines-ish ergodone-kristian ergodone-maz ergodone-mclennon_osx ergodone-mpiechotka ergodone-msc ergodone-naps62 ergodone-neo2_on_qwertz_hardware ergodone-norwegian_programmer_osx_pc ergodone-norwegian_programmer_osx_pc_colemak ergodone-ordinary ergodone-osx_de ergodone-osx_de_adnw_koy ergodone-osx_de_experimental ergodone-osx_fr ergodone-osx_kinesis_pnut ergodone-osx_whiskey_tango_foxtrot_capslock ergodone-phoenix ergodone-plover ergodone-plums ergodone-pvinis ergodone-replicaJunction ergodone-reset_eeprom ergodone-robot_test_layout ergodone-romanzolotarev-norman-osx ergodone-romanzolotarev-norman-plover-osx ergodone-romanzolotarev-norman-plover-osx-hjkl ergodone-romanzolotarev-norman-qwerty-osx ergodone-sethbc ergodone-siroken3 ergodone-sneako ergodone-software_neo2 ergodone-supercoder ergodone-swedish ergodone-swedish-lindhe ergodone-swissgerman ergodone-techtomas ergodone-teckinesis ergodone-tkuichooseyou ergodone-tm2030 ergodone-tonyabra_osx ergodone-townk_osx ergodone-twentylives_dvorak_with_hebrew ergodone-twey ergodone-videck ergodone-win10_writers-block ergodone-workman_osx_mdw ergodone-xyverz ergodone-yoruian ergodone-zweihander-osx ergodox_ez-333fred ergodox_ez-ab ergodox_ez-absenth ergodox_ez-adam ergodox_ez-adnw_k_o_y ergodox_ez-albert ergodox_ez-alexjj ergodox_ez-algernon ergodox_ez-alphadox ergodox_ez-andrew_osx ergodox_ez-belak ergodox_ez-bepo ergodox_ez-bepo_csa ergodox_ez-blakedietz ergodox_ez-bryan ergodox_ez-coderkun_neo2 ergodox_ez-colemak ergodox_ez-colemak_osx_pc_no ergodox_ez-colemak_programmer ergodox_ez-common_nighthawk ergodox_ez-csharp_dev ergodox_ez-dave ergodox_ez-deadcyclo ergodox_ez-default ergodox_ez-default_ergodox ergodox_ez-default_osx ergodox_ez-dragon788 ergodox_ez-drashna ergodox_ez-drashna-custom ergodox_ez-dvorak ergodox_ez-dvorak_emacs ergodox_ez-dvorak_emacs_software ergodox_ez-dvorak_intl_squisher ergodox_ez-dvorak_plover ergodox_ez-dvorak_programmer ergodox_ez-dvorak_programmer_swe ergodox_ez-dvorak_spanish ergodox_ez-emacs_osx_dk ergodox_ez-erez_experimental ergodox_ez-familiar ergodox_ez-french_hacker ergodox_ez-galson ergodox_ez-german ergodox_ez-german-kinergo ergodox_ez-german-lukas ergodox_ez-german-manuneo ergodox_ez-guni ergodox_ez-ishigoya-jp ergodox_ez-italian ergodox_ez-j3rn ergodox_ez-jack ergodox_ez-jacobono ergodox_ez-jafo ergodox_ez-jgarr ergodox_ez-josh ergodox_ez-kastyle ergodox_ez-kines-ish ergodox_ez-kristian ergodox_ez-maz ergodox_ez-mclennon_osx ergodox_ez-mpiechotka ergodox_ez-msc ergodox_ez-naps62 ergodox_ez-neo2_on_qwertz_hardware ergodox_ez-norwegian_programmer_osx_pc ergodox_ez-norwegian_programmer_osx_pc_colemak ergodox_ez-ordinary ergodox_ez-osx_de ergodox_ez-osx_de_adnw_koy ergodox_ez-osx_de_experimental ergodox_ez-osx_fr ergodox_ez-osx_kinesis_pnut ergodox_ez-osx_whiskey_tango_foxtrot_capslock ergodox_ez-phoenix ergodox_ez-plover ergodox_ez-plums ergodox_ez-prLine truncated
|
|
||||||
@@ -35,7 +35,7 @@ def _check_modules(requirements):
|
|||||||
|
|
||||||
if not find_spec(module['import']):
|
if not find_spec(module['import']):
|
||||||
print('Could not find module %s!' % module['name'])
|
print('Could not find module %s!' % module['name'])
|
||||||
print('Please run `python3 -m pip install -r %s` to install required python dependencies.' % str(qmk_dir / requirements))
|
print('Please run `python3 -m pip install -r %s` to install required python dependencies.' % (qmk_dir / requirements,))
|
||||||
if developer:
|
if developer:
|
||||||
print('You can also turn off developer mode: qmk config user.developer=None')
|
print('You can also turn off developer mode: qmk config user.developer=None')
|
||||||
print()
|
print()
|
||||||
|
|||||||
@@ -21,6 +21,11 @@ else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_1)/keymap.json)","")
|
|||||||
KEYMAP_PATH := $(MAIN_KEYMAP_PATH_1)
|
KEYMAP_PATH := $(MAIN_KEYMAP_PATH_1)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# Load the keymap-level rules.mk if exists
|
||||||
|
ifneq ("$(wildcard $(KEYMAP_PATH))", "")
|
||||||
|
-include $(KEYMAP_PATH)/rules.mk
|
||||||
|
endif
|
||||||
|
|
||||||
# Generate the keymap.c
|
# Generate the keymap.c
|
||||||
$(KEYBOARD_OUTPUT)/src/keymap.c: $(KEYMAP_JSON)
|
$(KEYBOARD_OUTPUT)/src/keymap.c: $(KEYMAP_JSON)
|
||||||
bin/qmk json2c --quiet --output $(KEYMAP_C) $(KEYMAP_JSON)
|
bin/qmk json2c --quiet --output $(KEYMAP_C) $(KEYMAP_JSON)
|
||||||
+2
-2
@@ -6,7 +6,7 @@ The QMK CLI makes building and working with QMK keyboards easier. We have provid
|
|||||||
|
|
||||||
### Requirements :id=requirements
|
### Requirements :id=requirements
|
||||||
|
|
||||||
The CLI requires Python 3.5 or greater. We try to keep the number of requirements small but you will also need to install the packages listed in [`requirements.txt`](https://github.com/qmk/qmk_firmware/blob/master/requirements.txt). These are installed automatically when you install the QMK CLI.
|
QMK requires Python 3.6 or greater. We try to keep the number of requirements small but you will also need to install the packages listed in [`requirements.txt`](https://github.com/qmk/qmk_firmware/blob/master/requirements.txt). These are installed automatically when you install the QMK CLI.
|
||||||
|
|
||||||
### Install Using Homebrew (macOS, some Linux) :id=install-using-homebrew
|
### Install Using Homebrew (macOS, some Linux) :id=install-using-homebrew
|
||||||
|
|
||||||
@@ -21,7 +21,7 @@ qmk setup # This will clone `qmk/qmk_firmware` and optionally set up your build
|
|||||||
|
|
||||||
### Install Using easy_install or pip :id=install-using-easy_install-or-pip
|
### Install Using easy_install or pip :id=install-using-easy_install-or-pip
|
||||||
|
|
||||||
If your system is not listed above you can install QMK manually. First ensure that you have python 3.5 (or later) installed and have installed pip. Then install QMK with this command:
|
If your system is not listed above you can install QMK manually. First ensure that you have python 3.6 (or later) installed and have installed pip. Then install QMK with this command:
|
||||||
|
|
||||||
```
|
```
|
||||||
pip3 install qmk
|
pip3 install qmk
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ def hello(cli):
|
|||||||
|
|
||||||
First we import the `cli` object from `milc`. This is how we interact with the user and control the script's behavior. We use `@cli.argument()` to define a command line flag, `--name`. This also creates a configuration variable named `hello.name` (and the corresponding `user.name`) which the user can set so they don't have to specify the argument. The `cli.subcommand()` decorator designates this function as a subcommand. The name of the subcommand will be taken from the name of the function.
|
First we import the `cli` object from `milc`. This is how we interact with the user and control the script's behavior. We use `@cli.argument()` to define a command line flag, `--name`. This also creates a configuration variable named `hello.name` (and the corresponding `user.name`) which the user can set so they don't have to specify the argument. The `cli.subcommand()` decorator designates this function as a subcommand. The name of the subcommand will be taken from the name of the function.
|
||||||
|
|
||||||
Once inside our function we find a typical "Hello, World!" program. We use `cli.log` to access the underlying [Logger Object](https://docs.python.org/3.5/library/logging.html#logger-objects), whose behavior is user controllable. We also access the value for name supplied by the user as `cli.config.hello.name`. The value for `cli.config.hello.name` will be determined by looking at the `--name` argument supplied by the user, if not provided it will use the value in the `qmk.ini` config file, and if neither of those is provided it will fall back to the default supplied in the `cli.argument()` decorator.
|
Once inside our function we find a typical "Hello, World!" program. We use `cli.log` to access the underlying [Logger Object](https://docs.python.org/3.6/library/logging.html#logger-objects), whose behavior is user controllable. We also access the value for name supplied by the user as `cli.config.hello.name`. The value for `cli.config.hello.name` will be determined by looking at the `--name` argument supplied by the user, if not provided it will use the value in the `qmk.ini` config file, and if neither of those is provided it will fall back to the default supplied in the `cli.argument()` decorator.
|
||||||
|
|
||||||
# User Interaction
|
# User Interaction
|
||||||
|
|
||||||
@@ -56,13 +56,13 @@ There are two main methods for outputting text in a subcommand- `cli.log` and `c
|
|||||||
|
|
||||||
You can use special tokens to colorize your text, to make it easier to understand the output of your program. See [Colorizing Text](#colorizing-text) below.
|
You can use special tokens to colorize your text, to make it easier to understand the output of your program. See [Colorizing Text](#colorizing-text) below.
|
||||||
|
|
||||||
Both of these methods support built-in string formatting using python's [printf style string format operations](https://docs.python.org/3.5/library/stdtypes.html#old-string-formatting). You can use tokens such as `%s` and `%d` within your text strings then pass the values as arguments. See our Hello, World program above for an example.
|
Both of these methods support built-in string formatting using python's [printf style string format operations](https://docs.python.org/3.6/library/stdtypes.html#old-string-formatting). You can use tokens such as `%s` and `%d` within your text strings then pass the values as arguments. See our Hello, World program above for an example.
|
||||||
|
|
||||||
You should never use the format operator (`%`) directly, always pass values as arguments.
|
You should never use the format operator (`%`) directly, always pass values as arguments.
|
||||||
|
|
||||||
### Logging (`cli.log`)
|
### Logging (`cli.log`)
|
||||||
|
|
||||||
The `cli.log` object gives you access to a [Logger Object](https://docs.python.org/3.5/library/logging.html#logger-objects). We have configured our log output to show the user a nice emoji for each log level (or the log level name if their terminal does not support unicode.) This way the user can tell at a glance which messages are most important when something goes wrong.
|
The `cli.log` object gives you access to a [Logger Object](https://docs.python.org/3.6/library/logging.html#logger-objects). We have configured our log output to show the user a nice emoji for each log level (or the log level name if their terminal does not support unicode.) This way the user can tell at a glance which messages are most important when something goes wrong.
|
||||||
|
|
||||||
The default log level is `INFO`. If the user runs `qmk -v <subcommand>` the default log level will be set to `DEBUG`.
|
The default log level is `INFO`. If the user runs `qmk -v <subcommand>` the default log level will be set to `DEBUG`.
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
Most of our style follows PEP8 with some local modifications to make things less nit-picky.
|
Most of our style follows PEP8 with some local modifications to make things less nit-picky.
|
||||||
|
|
||||||
* We target Python 3.5 for compatability with all supported platforms.
|
* We target Python 3.6 for compatability with all supported platforms.
|
||||||
* We indent using four (4) spaces (soft tabs)
|
* We indent using four (4) spaces (soft tabs)
|
||||||
* We encourage liberal use of comments
|
* We encourage liberal use of comments
|
||||||
* Think of them as a story describing the feature
|
* Think of them as a story describing the feature
|
||||||
@@ -317,7 +317,7 @@ At the time of this writing our tests are not very comprehensive. Looking at the
|
|||||||
|
|
||||||
## Integration Tests
|
## Integration Tests
|
||||||
|
|
||||||
Integration tests can be found in `lib/python/qmk/tests/test_cli_commands.py`. This is where CLI commands are actually run and their overall behavior is verified. We use [`subprocess`](https://docs.python.org/3.5/library/subprocess.html#module-subprocess) to launch each CLI command and a combination of checking output and returncode to determine if the right thing happened.
|
Integration tests can be found in `lib/python/qmk/tests/test_cli_commands.py`. This is where CLI commands are actually run and their overall behavior is verified. We use [`subprocess`](https://docs.python.org/3.6/library/subprocess.html#module-subprocess) to launch each CLI command and a combination of checking output and returncode to determine if the right thing happened.
|
||||||
|
|
||||||
## Unit Tests
|
## Unit Tests
|
||||||
|
|
||||||
|
|||||||
@@ -160,10 +160,3 @@ As of now root of its cause is not clear but some build options seem to be relat
|
|||||||
|
|
||||||
https://github.com/tmk/tmk_keyboard/issues/266
|
https://github.com/tmk/tmk_keyboard/issues/266
|
||||||
https://geekhack.org/index.php?topic=41989.msg1967778#msg1967778
|
https://geekhack.org/index.php?topic=41989.msg1967778#msg1967778
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## FLIP Doesn't Work
|
|
||||||
### `AtLibUsbDfu.dll` Not Found
|
|
||||||
Remove current driver and reinstall one FLIP provides from DeviceManager.
|
|
||||||
http://imgur.com/a/bnwzy
|
|
||||||
@@ -26,7 +26,6 @@ Compatible flashers:
|
|||||||
|
|
||||||
* [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (recommended GUI)
|
* [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (recommended GUI)
|
||||||
* [dfu-programmer](https://github.com/dfu-programmer/dfu-programmer) / `:dfu` in QMK (recommended command line)
|
* [dfu-programmer](https://github.com/dfu-programmer/dfu-programmer) / `:dfu` in QMK (recommended command line)
|
||||||
* [Atmel's Flip](http://www.microchip.com/developmenttools/productdetails.aspx?partno=flip) (not recommended)
|
|
||||||
|
|
||||||
Flashing sequence:
|
Flashing sequence:
|
||||||
|
|
||||||
|
|||||||
@@ -155,11 +155,3 @@ Pour le moment, l'origine du problème n'est pas comprise, mais certaines option
|
|||||||
|
|
||||||
https://github.com/tmk/tmk_keyboard/issues/266
|
https://github.com/tmk/tmk_keyboard/issues/266
|
||||||
https://geekhack.org/index.php?topic=41989.msg1967778#msg1967778
|
https://geekhack.org/index.php?topic=41989.msg1967778#msg1967778
|
||||||
|
|
||||||
## FLIP ne marche pas
|
|
||||||
|
|
||||||
### `AtLibUsbDfu.dll` Not Found
|
|
||||||
|
|
||||||
Supprimez le pilote actuel et réinstallez celui donné par FLIP dans le gestionnaire de périphériques.
|
|
||||||
|
|
||||||
http://imgur.com/a/bnwzy
|
|
||||||
@@ -26,7 +26,6 @@ Méthodes de flash compatibles :
|
|||||||
|
|
||||||
* [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (interface graphique recommandé)
|
* [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (interface graphique recommandé)
|
||||||
* [dfu-programmer](https://github.com/dfu-programmer/dfu-programmer) / `:dfu` avec QMK (outil en ligne de commande recommandé)
|
* [dfu-programmer](https://github.com/dfu-programmer/dfu-programmer) / `:dfu` avec QMK (outil en ligne de commande recommandé)
|
||||||
* [Atmel's Flip](http://www.microchip.com/developmenttools/productdetails.aspx?partno=flip) (non recommandé)
|
|
||||||
|
|
||||||
Ordre des actions :
|
Ordre des actions :
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,6 @@ The "easy" way to flash the firmware is using a tool from your host OS:
|
|||||||
|
|
||||||
* [QMK Toolbox](https://github.com/qmk/qmk_toolbox) (recommended)
|
* [QMK Toolbox](https://github.com/qmk/qmk_toolbox) (recommended)
|
||||||
* [Teensy Loader](https://www.pjrc.com/teensy/loader.html)
|
* [Teensy Loader](https://www.pjrc.com/teensy/loader.html)
|
||||||
* [Atmel FLIP](http://www.atmel.com/tools/flip.aspx)
|
|
||||||
|
|
||||||
If you want to program via the command line you can uncomment the ['modifyvm'] lines in the Vagrantfile to enable the USB passthrough into Linux and then program using the command line tools like dfu-util/dfu-programmer or you can install the Teensy CLI version.
|
If you want to program via the command line you can uncomment the ['modifyvm'] lines in the Vagrantfile to enable the USB passthrough into Linux and then program using the command line tools like dfu-util/dfu-programmer or you can install the Teensy CLI version.
|
||||||
|
|
||||||
|
|||||||
@@ -152,10 +152,3 @@ https://geekhack.org/index.php?topic=14290.msg1884034#msg1884034
|
|||||||
|
|
||||||
https://github.com/tmk/tmk_keyboard/issues/266
|
https://github.com/tmk/tmk_keyboard/issues/266
|
||||||
https://geekhack.org/index.php?topic=41989.msg1967778#msg1967778
|
https://geekhack.org/index.php?topic=41989.msg1967778#msg1967778
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## FLIP が動作しない
|
|
||||||
### `AtLibUsbDfu.dll` が見つかりません
|
|
||||||
デバイスマネージャから現在のドライバを削除し、FLIP が提供するものを再インストールします。
|
|
||||||
http://imgur.com/a/bnwzy
|
|
||||||
@@ -0,0 +1,108 @@
|
|||||||
|
# コンボ
|
||||||
|
|
||||||
|
<!---
|
||||||
|
original document: 0.8.94:docs/feature_combo.md
|
||||||
|
git diff 0.8.94 HEAD -- docs/feature_combo.md | cat
|
||||||
|
-->
|
||||||
|
|
||||||
|
コンボ機能は、同時押し方式でのカスタムアクション追加機能です。同時に複数のキーを押して、異なる効果を生み出すことができます。例えば、タッピング時間内で `A` と `S` を押すと、代わりに `ESC` が押されます。もっと複雑なタスクを実行させることもできます。
|
||||||
|
|
||||||
|
この機能を有効にするには、`rules.mk` に `COMBO_ENABLE = yes` を追加する必要があります。
|
||||||
|
|
||||||
|
さらに、使用するコンボの数を `config.h` の中で、`#define COMBO_COUNT 1` (1を使用するコンボの数で置き換えます)と書いて、指定する必要があります。
|
||||||
|
<!-- At this time, this is necessary -->
|
||||||
|
|
||||||
|
また、デフォルトでは、コンボのタッピング時間は `TAPPING_TERM` と同じ値に設定されます (ほとんどのキーボードではデフォルトで 200)。ただし、`config.h` で定義することにより異なる値を指定することができます。例えば: `#define COMBO_TERM 300` はコンボのためのタイムアウト時間を 300ms に設定します。
|
||||||
|
|
||||||
|
次に、`keymap.c` ファイルに、`COMBO_END` で終了するキーのシーケンス、およびキーの組み合わせを列挙する構造体、その結果のアクションを定義する必要があります。
|
||||||
|
|
||||||
|
```c
|
||||||
|
const uint16_t PROGMEM test_combo[] = {KC_A, KC_B, COMBO_END};
|
||||||
|
combo_t key_combos[COMBO_COUNT] = {COMBO(test_combo, KC_ESC)};
|
||||||
|
```
|
||||||
|
|
||||||
|
これは、A と B のキーを押した場合に、"Escape" を送信します。
|
||||||
|
|
||||||
|
!> このメソッドは[基本的なキーコード](ja/keycodes_basic.md)のみをサポートします。詳細な制御については例を見てください。
|
||||||
|
|
||||||
|
## 例
|
||||||
|
|
||||||
|
リストを追加したい場合は、以下のようなものを使います:
|
||||||
|
|
||||||
|
```c
|
||||||
|
enum combos {
|
||||||
|
AB_ESC,
|
||||||
|
JK_TAB
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM ab_combo[] = {KC_A, KC_B, COMBO_END};
|
||||||
|
const uint16_t PROGMEM jk_combo[] = {KC_J, KC_K, COMBO_END};
|
||||||
|
|
||||||
|
combo_t key_combos[COMBO_COUNT] = {
|
||||||
|
[AB_ESC] = COMBO(ab_combo, KC_ESC),
|
||||||
|
[JK_TAB] = COMBO(jk_combo, KC_TAB)
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
より複雑な実装として、カスタム処理を追加するために `process_combo_event` 関数を使うことができます。
|
||||||
|
|
||||||
|
```c
|
||||||
|
enum combo_events {
|
||||||
|
ZC_COPY,
|
||||||
|
XV_PASTE
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM copy_combo[] = {KC_Z, KC_C, COMBO_END};
|
||||||
|
const uint16_t PROGMEM paste_combo[] = {KC_X, KC_V, COMBO_END};
|
||||||
|
|
||||||
|
combo_t key_combos[COMBO_COUNT] = {
|
||||||
|
[ZC_COPY] = COMBO_ACTION(copy_combo),
|
||||||
|
[XV_PASTE] = COMBO_ACTION(paste_combo),
|
||||||
|
};
|
||||||
|
|
||||||
|
void process_combo_event(uint8_t combo_index, bool pressed) {
|
||||||
|
switch(combo_index) {
|
||||||
|
case ZC_COPY:
|
||||||
|
if (pressed) {
|
||||||
|
tap_code16(LCTL(KC_C));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case XV_PASTE:
|
||||||
|
if (pressed) {
|
||||||
|
tap_code16(LCTL(KC_V));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
これは、Z と C を押すと Ctrl+C を送信し、X と V を押すと Ctrl+V を送信します。これを変更して、レイヤーの変更、サウンドの再生、設定の変更などを行うこともできます。
|
||||||
|
|
||||||
|
## 追加の設定
|
||||||
|
|
||||||
|
長いコンボあるいはさらに長いコンボを使っている場合、構造体があなたのしていることに対応するのに十分な大きさで無いかもしれないため、問題が発生するかもしれません。
|
||||||
|
|
||||||
|
この場合、`config.h` ファイルに `#define EXTRA_LONG_COMBOS` または `#define EXTRA_EXTRA_LONG_COMBOS` のどちらかを追加することができます。
|
||||||
|
|
||||||
|
`COMBO_ALLOW_ACTION_KEYS` を定義することでアクションキーを有効にすることもできます。
|
||||||
|
|
||||||
|
## キーコード
|
||||||
|
|
||||||
|
その場でコンボ機能を有効、無効および切り替えすることができます。ゲームなどで、一時的にそれらを無効にする必要がある場合に便利です。
|
||||||
|
|
||||||
|
| キーコード | 説明 |
|
||||||
|
|----------|---------------------------------|
|
||||||
|
| `CMB_ON` | コンボ機能をオンにします |
|
||||||
|
| `CMB_OFF` | コンボ機能をオフにします |
|
||||||
|
| `CMB_TOG` | コンボ機能のオンとオフを切り替えます |
|
||||||
|
|
||||||
|
## ユーザコールバック
|
||||||
|
|
||||||
|
キーコードに加えて、状態を設定または状態をチェックするために使うことができる幾つかの関数があります:
|
||||||
|
|
||||||
|
| 関数 | 説明 |
|
||||||
|
|-----------|--------------------------------------------------------------------|
|
||||||
|
| `combo_enable()` | コンボ機能を有効にします |
|
||||||
|
| `combo_disable()` | コンボ機能を無効にし、コンボバッファをクリアします |
|
||||||
|
| `combo_toggle()` | コンボ機能の状態を切り替えます |
|
||||||
|
| `is_combo_enabled()` | コンボ機能の状態(true か false)を返します |
|
||||||
@@ -0,0 +1,95 @@
|
|||||||
|
# DIP スイッチ
|
||||||
|
|
||||||
|
<!---
|
||||||
|
original document: 0.8.94:docs/feature_dip_switch.md
|
||||||
|
git diff 0.8.94 HEAD -- docs/feature_dip_switch.md | cat
|
||||||
|
-->
|
||||||
|
|
||||||
|
DIP スイッチは、以下を `rules.mk` に追加することでサポートされます:
|
||||||
|
|
||||||
|
DIP_SWITCH_ENABLE = yes
|
||||||
|
|
||||||
|
さらに、以下を `config.h` に追加します:
|
||||||
|
|
||||||
|
```c
|
||||||
|
#define DIP_SWITCH_PINS { B14, A15, A10, B9 }
|
||||||
|
```
|
||||||
|
|
||||||
|
## コールバック
|
||||||
|
|
||||||
|
コールバック関数を `<keyboard>.c` に記述することができます:
|
||||||
|
|
||||||
|
```c
|
||||||
|
void dip_switch_update_kb(uint8_t index, bool active) {
|
||||||
|
dip_switch_update_user(index, active);
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
あるいは `keymap.c` に記述することもできます:
|
||||||
|
|
||||||
|
```c
|
||||||
|
void dip_switch_update_user(uint8_t index, bool active) {
|
||||||
|
switch (index) {
|
||||||
|
case 0:
|
||||||
|
if(active) { audio_on(); } else { audio_off(); }
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
if(active) { clicky_on(); } else { clicky_off(); }
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
if(active) { music_on(); } else { music_off(); }
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
if (active) {
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
PLAY_SONG(plover_song);
|
||||||
|
#endif
|
||||||
|
layer_on(_PLOVER);
|
||||||
|
} else {
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
PLAY_SONG(plover_gb_song);
|
||||||
|
#endif
|
||||||
|
layer_off(_PLOVER);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
更に、より複雑な処理ができるビットマスク関数をサポートします。
|
||||||
|
|
||||||
|
|
||||||
|
```c
|
||||||
|
void dip_switch_update_mask_kb(uint32_t state) {
|
||||||
|
dip_switch_update_mask_user(state);
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
あるいは `keymap.c` に記述することもできます:
|
||||||
|
|
||||||
|
```c
|
||||||
|
void dip_switch_update_mask_user(uint32_t state) {
|
||||||
|
if (state & (1UL<<0) && state & (1UL<<1)) {
|
||||||
|
layer_on(_ADJUST); // C on esc
|
||||||
|
} else {
|
||||||
|
layer_off(_ADJUST);
|
||||||
|
}
|
||||||
|
if (state & (1UL<<0)) {
|
||||||
|
layer_on(_TEST_A); // A on ESC
|
||||||
|
} else {
|
||||||
|
layer_off(_TEST_A);
|
||||||
|
}
|
||||||
|
if (state & (1UL<<1)) {
|
||||||
|
layer_on(_TEST_B); // B on esc
|
||||||
|
} else {
|
||||||
|
layer_off(_TEST_B);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## ハードウェア
|
||||||
|
|
||||||
|
DIP スイッチの片側は MCU のピンへ直接配線し、もう一方の側はグラウンドに配線する必要があります。機能的に同じであるため、どちら側がどちらに接続されているかは問題にはならないはずです。
|
||||||
@@ -31,7 +31,6 @@ BOOTLOADER = atmel-dfu
|
|||||||
|
|
||||||
* [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (推奨の GUI)
|
* [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (推奨の GUI)
|
||||||
* QMK の [dfu-programmer](https://github.com/dfu-programmer/dfu-programmer) / `:dfu` (推奨のコマンドライン)
|
* QMK の [dfu-programmer](https://github.com/dfu-programmer/dfu-programmer) / `:dfu` (推奨のコマンドライン)
|
||||||
* [Atmel の Flip](http://www.microchip.com/developmenttools/productdetails.aspx?partno=flip) (非推奨)
|
|
||||||
|
|
||||||
書き込み手順:
|
書き込み手順:
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ Vagrant 以外に、適切なプロバイダがインストールされ、その
|
|||||||
|
|
||||||
* [QMK Toolbox](https://github.com/qmk/qmk_toolbox) (推奨)
|
* [QMK Toolbox](https://github.com/qmk/qmk_toolbox) (推奨)
|
||||||
* [Teensy ローダー](https://www.pjrc.com/teensy/loader.html)
|
* [Teensy ローダー](https://www.pjrc.com/teensy/loader.html)
|
||||||
* [Atmel FLIP](http://www.atmel.com/tools/flip.aspx)
|
|
||||||
|
|
||||||
コマンドラインでプログラムしたい場合は、Vagranfile の ['modifyvm'] 行のコメントを解除して Linux への USB パススルーを有効にし、dfu-util/dfu-programmer のようなコマンドラインツールを使ってプログラムすることができます。あるいは Teensy CLI バージョンをインストールすることができます。
|
コマンドラインでプログラムしたい場合は、Vagranfile の ['modifyvm'] 行のコメントを解除して Linux への USB パススルーを有効にし、dfu-util/dfu-programmer のようなコマンドラインツールを使ってプログラムすることができます。あるいは Teensy CLI バージョンをインストールすることができます。
|
||||||
|
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ After installing QMK you can set it up with this command:
|
|||||||
|
|
||||||
In most situations you will want to answer Yes to all of the prompts.
|
In most situations you will want to answer Yes to all of the prompts.
|
||||||
|
|
||||||
?> If you already know [how to use GitHub](getting_started_github.md), we recommend that you create your own fork and use `qmk setup <github_username>` to clone your personal fork. If you don't know what that means you can safely ignore this message.
|
?> If you already know [how to use GitHub](getting_started_github.md), we recommend that you create your own fork and use `qmk setup <github_username>/qmk_firmware` to clone your personal fork. If you don't know what that means you can safely ignore this message.
|
||||||
|
|
||||||
## 4. Test Your Build Environment
|
## 4. Test Your Build Environment
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,9 @@
|
|||||||
# Converting a board to use the Proton C
|
# Converting a board to use the Proton C
|
||||||
|
|
||||||
|
Since the Proton C is a drop-in replacement for a Pro Micro we've made it easy to use. This page documents a handy automated process for converting keyboards, as well as documenting the manual process if you'd like to make use of Proton C features that aren't available on Pro Micros.
|
||||||
|
|
||||||
|
## Automatic Conversion
|
||||||
|
|
||||||
If a board currently supported in QMK uses a Pro Micro (or compatible board) and you want to use the Proton C, you can generate the firmware by appending `CONVERT_TO_PROTON_C=yes` (or `CTPC=yes`) to your make argument, like this:
|
If a board currently supported in QMK uses a Pro Micro (or compatible board) and you want to use the Proton C, you can generate the firmware by appending `CONVERT_TO_PROTON_C=yes` (or `CTPC=yes`) to your make argument, like this:
|
||||||
|
|
||||||
make 40percentclub/mf68:default CTPC=yes
|
make 40percentclub/mf68:default CTPC=yes
|
||||||
@@ -8,13 +12,15 @@ You can add the same argument to your keymap's `rules.mk`, which will accomplish
|
|||||||
|
|
||||||
This exposes the `CONVERT_TO_PROTON_C` flag that you can use in your code with `#ifdef`s, like this:
|
This exposes the `CONVERT_TO_PROTON_C` flag that you can use in your code with `#ifdef`s, like this:
|
||||||
|
|
||||||
#ifdef CONVERT_TO_PROTON_C
|
```c
|
||||||
// Proton C code
|
#ifdef CONVERT_TO_PROTON_C
|
||||||
#else
|
// Proton C code
|
||||||
// Pro Micro code
|
#else
|
||||||
#endif
|
// Pro Micro code
|
||||||
|
#endif
|
||||||
|
```
|
||||||
|
|
||||||
Before being able to compile, you may get some errors about `PORTB/DDRB`, etc not being defined, so you'll need to convert the keyboard's code to use the [GPIO Controls](internals_gpio_control.md) that will work for both ARM and AVR. This shouldn't affect the AVR builds at all.
|
If you get errors about `PORTB/DDRB`, etc not being defined, so you'll need to convert the keyboard's code to use the [GPIO Controls](internals_gpio_control.md) that will work for both ARM and AVR. This shouldn't affect the AVR builds at all.
|
||||||
|
|
||||||
The Proton C only has one on-board LED (C13), and by default, the TXLED (D5) is mapped to it. If you want the RXLED (B0) mapped to it instead, add this like to your `config.h`:
|
The Proton C only has one on-board LED (C13), and by default, the TXLED (D5) is mapped to it. If you want the RXLED (B0) mapped to it instead, add this like to your `config.h`:
|
||||||
|
|
||||||
@@ -31,3 +37,54 @@ These are defaults based on what has been implemented for ARM boards.
|
|||||||
| [Backlight](feature_backlight.md) | Forces [task driven PWM](feature_backlight.md#software-pwm-driver) until ARM can provide automatic configuration |
|
| [Backlight](feature_backlight.md) | Forces [task driven PWM](feature_backlight.md#software-pwm-driver) until ARM can provide automatic configuration |
|
||||||
| USB Host (e.g. USB-USB converter) | Not supported (USB host code is AVR specific and is not currently supported on ARM) |
|
| USB Host (e.g. USB-USB converter) | Not supported (USB host code is AVR specific and is not currently supported on ARM) |
|
||||||
| [Split keyboards](feature_split_keyboard.md) | Not supported yet |
|
| [Split keyboards](feature_split_keyboard.md) | Not supported yet |
|
||||||
|
|
||||||
|
## Manual Conversion
|
||||||
|
|
||||||
|
To use the Proton C natively, without having to specify `CTPC=yes`, you need to change the `MCU` line in `rules.mk`:
|
||||||
|
|
||||||
|
```
|
||||||
|
MCU = STM32F303
|
||||||
|
```
|
||||||
|
|
||||||
|
Remove these variables if they exist:
|
||||||
|
|
||||||
|
* `BOOTLOADER`
|
||||||
|
* `EXTRA_FLAGS`
|
||||||
|
|
||||||
|
Finally convert all pin assignments in `config.h` to the stm32 equivalents.
|
||||||
|
|
||||||
|
| Pro Micro Left | Proton C Left | | Proton C Right | Pro Micro Right |
|
||||||
|
|-----------|----------|-|----------|-----------|
|
||||||
|
| `D3` | `A9` | | 5v | RAW (5v) |
|
||||||
|
| `D2` | `A10` | | GND | GND |
|
||||||
|
| GND | GND | | FLASH | RESET |
|
||||||
|
| GND | GND | | 3.3v | VCC <sup>1</sup> |
|
||||||
|
| `D1` | `B7` | | `A2` | `F4` |
|
||||||
|
| `D0` | `B6` | | `A1` | `F5` |
|
||||||
|
| `D4` | `B5` | | `A0` | `F6` |
|
||||||
|
| `C6` | `B4` | | `B8` | `F7` |
|
||||||
|
| `D7` | `B3` | | `B13` | `B1` |
|
||||||
|
| `E6` | `B2` | | `B14` | `B3` |
|
||||||
|
| `B4` | `B1` | | `B15` | `B2` |
|
||||||
|
| `B5` | `B0` | | `B9` | `B6` |
|
||||||
|
| `B0` (RX LED) | `C13` <sup>2</sup> | | `C13` <sup>2</sup> | `D5` (TX LED) |
|
||||||
|
|
||||||
|
You can also make use of several new pins on the extended portion of the Proton C:
|
||||||
|
|
||||||
|
| Left | | Right |
|
||||||
|
|------|-|-------|
|
||||||
|
| `A4`<sup>3</sup> | | `B10` |
|
||||||
|
| `A5`<sup>4</sup> | | `B11` |
|
||||||
|
| `A6` | | `B12` |
|
||||||
|
| `A7` | | `A14`<sup>5</sup> (SWCLK) |
|
||||||
|
| `A8` | | `A13`<sup>5</sup> (SWDIO) |
|
||||||
|
| `A15` | | RESET<sup>6</sup> |
|
||||||
|
|
||||||
|
Notes:
|
||||||
|
|
||||||
|
1. On a Pro Micro VCC can be 3.3v or 5v.
|
||||||
|
2. A Proton C only has one onboard LED, not two like a Pro Micro. The Pro Micro has an RX LED on `D5` and a TX LED on `B0`.
|
||||||
|
3. `A4` is shared with the speaker.
|
||||||
|
4. `A5` is shared with the speaker.
|
||||||
|
5. `A13` and `A14` are used for hardware debugging (SWD). You can also use them for GPIO, but should use them last.
|
||||||
|
6. Short RESET to 3.3v (pull high) to reboot the MCU. This does not enter bootloader mode like a Pro Micro, it only resets the MCU.
|
||||||
@@ -46,9 +46,6 @@ An IDE that is popular with many C developers.
|
|||||||
## Firmware
|
## Firmware
|
||||||
The software that controls your MCU.
|
The software that controls your MCU.
|
||||||
|
|
||||||
## FLIP
|
|
||||||
Software provided by Atmel for flashing AVR devices. We generally recommend [QMK Flasher](https://github.com/qmk/qmk_flasher) instead, but for some advanced use cases FLIP is required.
|
|
||||||
|
|
||||||
## git
|
## git
|
||||||
Versioning software used at the command line
|
Versioning software used at the command line
|
||||||
|
|
||||||
|
|||||||
+12
-19
@@ -16,7 +16,7 @@ No special setup is required - just connect the `SS`, `SCK`, `MOSI` and `MISO` p
|
|||||||
You may use more than one slave select pin, not just the `SS` pin. This is useful when you have multiple devices connected and need to communicate with them individually.
|
You may use more than one slave select pin, not just the `SS` pin. This is useful when you have multiple devices connected and need to communicate with them individually.
|
||||||
`SPI_SS_PIN` can be passed to `spi_start()` to refer to `SS`.
|
`SPI_SS_PIN` can be passed to `spi_start()` to refer to `SS`.
|
||||||
|
|
||||||
## ARM Configuration
|
## ChibiOS/ARM Configuration
|
||||||
|
|
||||||
ARM support for this driver is not ready yet. Check back later!
|
ARM support for this driver is not ready yet. Check back later!
|
||||||
|
|
||||||
@@ -28,7 +28,7 @@ Initialize the SPI driver. This function must be called only once, before any of
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### `void spi_start(pin_t slavePin, bool lsbFirst, uint8_t mode, uint8_t divisor)`
|
### `bool spi_start(pin_t slavePin, bool lsbFirst, uint8_t mode, uint16_t divisor)`
|
||||||
|
|
||||||
Start an SPI transaction.
|
Start an SPI transaction.
|
||||||
|
|
||||||
@@ -48,12 +48,16 @@ Start an SPI transaction.
|
|||||||
|`2` |Leading edge falling|Sample on leading edge |
|
|`2` |Leading edge falling|Sample on leading edge |
|
||||||
|`3` |Leading edge falling|Sample on trailing edge|
|
|`3` |Leading edge falling|Sample on trailing edge|
|
||||||
|
|
||||||
- `uint8_t divisor`
|
- `uint16_t divisor`
|
||||||
The SPI clock divisor, will be rounded up to the nearest power of two. This number can be calculated by dividing the MCU's clock speed by the desired SPI clock speed. For example, an MCU running at 8 MHz wanting to talk to an SPI device at 4 MHz would set the divisor to `2`.
|
The SPI clock divisor, will be rounded up to the nearest power of two. This number can be calculated by dividing the MCU's clock speed by the desired SPI clock speed. For example, an MCU running at 8 MHz wanting to talk to an SPI device at 4 MHz would set the divisor to `2`.
|
||||||
|
|
||||||
|
#### Return Value
|
||||||
|
|
||||||
|
`false` if the supplied parameters are invalid or the SPI peripheral is already in use, or `true`.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### `spi_status_t spi_write(uint8_t data, uint16_t timeout)`
|
### `spi_status_t spi_write(uint8_t data)`
|
||||||
|
|
||||||
Write a byte to the selected SPI device.
|
Write a byte to the selected SPI device.
|
||||||
|
|
||||||
@@ -61,8 +65,6 @@ Write a byte to the selected SPI device.
|
|||||||
|
|
||||||
- `uint8_t data`
|
- `uint8_t data`
|
||||||
The byte to write.
|
The byte to write.
|
||||||
- `uint16_t timeout`
|
|
||||||
The amount of time to wait, in milliseconds, before timing out.
|
|
||||||
|
|
||||||
#### Return Value
|
#### Return Value
|
||||||
|
|
||||||
@@ -70,22 +72,17 @@ Write a byte to the selected SPI device.
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### `spi_status_t spi_read(uint16_t timeout)`
|
### `spi_status_t spi_read(void)`
|
||||||
|
|
||||||
Read a byte from the selected SPI device.
|
Read a byte from the selected SPI device.
|
||||||
|
|
||||||
#### Arguments
|
|
||||||
|
|
||||||
- `uint16_t timeout`
|
|
||||||
The amount of time to wait, in milliseconds, before timing out.
|
|
||||||
|
|
||||||
#### Return Value
|
#### Return Value
|
||||||
|
|
||||||
`SPI_STATUS_TIMEOUT` if the timeout period elapses, or the byte read from the device.
|
`SPI_STATUS_TIMEOUT` if the timeout period elapses, or the byte read from the device.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### `spi_status_t spi_transmit(const uint8_t *data, uint16_t length, uint16_t timeout)`
|
### `spi_status_t spi_transmit(const uint8_t *data, uint16_t length)`
|
||||||
|
|
||||||
Send multiple bytes to the selected SPI device.
|
Send multiple bytes to the selected SPI device.
|
||||||
|
|
||||||
@@ -95,8 +92,6 @@ Send multiple bytes to the selected SPI device.
|
|||||||
A pointer to the data to write from.
|
A pointer to the data to write from.
|
||||||
- `uint16_t length`
|
- `uint16_t length`
|
||||||
The number of bytes to write. Take care not to overrun the length of `data`.
|
The number of bytes to write. Take care not to overrun the length of `data`.
|
||||||
- `uint16_t timeout`
|
|
||||||
The amount of time to wait, in milliseconds, before timing out.
|
|
||||||
|
|
||||||
#### Return Value
|
#### Return Value
|
||||||
|
|
||||||
@@ -104,7 +99,7 @@ Send multiple bytes to the selected SPI device.
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### `spi_status_t spi_receive(uint8_t *data, uint16_t length, uint16_t timeout)`
|
### `spi_status_t spi_receive(uint8_t *data, uint16_t length)`
|
||||||
|
|
||||||
Receive multiple bytes from the selected SPI device.
|
Receive multiple bytes from the selected SPI device.
|
||||||
|
|
||||||
@@ -114,12 +109,10 @@ Receive multiple bytes from the selected SPI device.
|
|||||||
A pointer to the buffer to read into.
|
A pointer to the buffer to read into.
|
||||||
- `uint16_t length`
|
- `uint16_t length`
|
||||||
The number of bytes to read. Take care not to overrun the length of `data`.
|
The number of bytes to read. Take care not to overrun the length of `data`.
|
||||||
- `uint16_t timeout`
|
|
||||||
The amount of time to wait, in milliseconds, before timing out.
|
|
||||||
|
|
||||||
#### Return Value
|
#### Return Value
|
||||||
|
|
||||||
`SPI_STATUS_TIMEOUT` if the timeout period elapses, `SPI_STATUS_SUCCESS` on success, or `SPI_STATUS_ERROR` otherwise.
|
`SPI_STATUS_TIMEOUT` if the internal transmission timeout period elapses, `SPI_STATUS_SUCCESS` on success, or `SPI_STATUS_ERROR` otherwise.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -139,10 +139,3 @@ https://geekhack.org/index.php?topic=14290.msg1884034#msg1884034
|
|||||||
|
|
||||||
https://github.com/tmk/tmk_keyboard/issues/266
|
https://github.com/tmk/tmk_keyboard/issues/266
|
||||||
https://geekhack.org/index.php?topic=41989.msg1967778#msg1967778
|
https://geekhack.org/index.php?topic=41989.msg1967778#msg1967778
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## FLIP 不工作
|
|
||||||
### `AtLibUsbDfu.dll` 未找到
|
|
||||||
从设备管理器中删除当前驱动程序并在设备管理器重新安装一个FLIP提供的程序。
|
|
||||||
http://imgur.com/a/bnwzy
|
|
||||||
@@ -46,9 +46,6 @@ Français (法国)标准键盘布局。用键盘的前六个字母命名。
|
|||||||
## Firmware(固件)
|
## Firmware(固件)
|
||||||
用来控制单片机的软件。
|
用来控制单片机的软件。
|
||||||
|
|
||||||
## FLIP
|
|
||||||
爱特梅尔(Atmel)提供的AVR器件刷写软件。我们一般推荐 [QMK刷写工具](https://github.com/qmk/qmk_flasher),但是对于一些高级用例,需要FLIP。
|
|
||||||
|
|
||||||
## git
|
## git
|
||||||
命令行版本控制软件
|
命令行版本控制软件
|
||||||
|
|
||||||
|
|||||||
+72
-59
@@ -34,6 +34,10 @@
|
|||||||
# define SPI_MISO_PIN B4
|
# define SPI_MISO_PIN B4
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef SPI_TIMEOUT
|
||||||
|
# define SPI_TIMEOUT 100
|
||||||
|
#endif
|
||||||
|
|
||||||
static pin_t currentSlavePin = NO_PIN;
|
static pin_t currentSlavePin = NO_PIN;
|
||||||
static uint8_t currentSlaveConfig = 0;
|
static uint8_t currentSlaveConfig = 0;
|
||||||
static bool currentSlave2X = false;
|
static bool currentSlave2X = false;
|
||||||
@@ -47,65 +51,74 @@ void spi_init(void) {
|
|||||||
SPCR = (_BV(SPE) | _BV(MSTR));
|
SPCR = (_BV(SPE) | _BV(MSTR));
|
||||||
}
|
}
|
||||||
|
|
||||||
void spi_start(pin_t slavePin, bool lsbFirst, uint8_t mode, uint8_t divisor) {
|
bool spi_start(pin_t slavePin, bool lsbFirst, uint8_t mode, uint16_t divisor) {
|
||||||
if (currentSlavePin == NO_PIN && slavePin != NO_PIN) {
|
if (currentSlavePin != NO_PIN || slavePin == NO_PIN) {
|
||||||
if (lsbFirst) {
|
return false;
|
||||||
currentSlaveConfig |= _BV(DORD);
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (mode) {
|
|
||||||
case 1:
|
|
||||||
currentSlaveConfig |= _BV(CPHA);
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
currentSlaveConfig |= _BV(CPOL);
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
currentSlaveConfig |= (_BV(CPOL) | _BV(CPHA));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint8_t roundedDivisor = 1;
|
|
||||||
while (roundedDivisor < divisor) {
|
|
||||||
roundedDivisor <<= 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (roundedDivisor) {
|
|
||||||
case 16:
|
|
||||||
currentSlaveConfig |= _BV(SPR0);
|
|
||||||
break;
|
|
||||||
case 64:
|
|
||||||
currentSlaveConfig |= _BV(SPR1);
|
|
||||||
break;
|
|
||||||
case 128:
|
|
||||||
currentSlaveConfig |= (_BV(SPR1) | _BV(SPR0));
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
currentSlave2X = true;
|
|
||||||
break;
|
|
||||||
case 8:
|
|
||||||
currentSlave2X = true;
|
|
||||||
currentSlaveConfig |= _BV(SPR0);
|
|
||||||
break;
|
|
||||||
case 32:
|
|
||||||
currentSlave2X = true;
|
|
||||||
currentSlaveConfig |= _BV(SPR1);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
SPSR |= currentSlaveConfig;
|
|
||||||
currentSlavePin = slavePin;
|
|
||||||
setPinOutput(currentSlavePin);
|
|
||||||
writePinLow(currentSlavePin);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
currentSlaveConfig = 0;
|
||||||
|
|
||||||
|
if (lsbFirst) {
|
||||||
|
currentSlaveConfig |= _BV(DORD);
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (mode) {
|
||||||
|
case 1:
|
||||||
|
currentSlaveConfig |= _BV(CPHA);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
currentSlaveConfig |= _BV(CPOL);
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
currentSlaveConfig |= (_BV(CPOL) | _BV(CPHA));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t roundedDivisor = 1;
|
||||||
|
while (roundedDivisor < divisor) {
|
||||||
|
roundedDivisor <<= 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (roundedDivisor) {
|
||||||
|
case 16:
|
||||||
|
currentSlaveConfig |= _BV(SPR0);
|
||||||
|
break;
|
||||||
|
case 64:
|
||||||
|
currentSlaveConfig |= _BV(SPR1);
|
||||||
|
break;
|
||||||
|
case 128:
|
||||||
|
currentSlaveConfig |= (_BV(SPR1) | _BV(SPR0));
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
currentSlave2X = true;
|
||||||
|
break;
|
||||||
|
case 8:
|
||||||
|
currentSlave2X = true;
|
||||||
|
currentSlaveConfig |= _BV(SPR0);
|
||||||
|
break;
|
||||||
|
case 32:
|
||||||
|
currentSlave2X = true;
|
||||||
|
currentSlaveConfig |= _BV(SPR1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
SPCR |= currentSlaveConfig;
|
||||||
|
if (currentSlave2X) {
|
||||||
|
SPSR |= _BV(SPI2X);
|
||||||
|
}
|
||||||
|
currentSlavePin = slavePin;
|
||||||
|
setPinOutput(currentSlavePin);
|
||||||
|
writePinLow(currentSlavePin);
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
spi_status_t spi_write(uint8_t data, uint16_t timeout) {
|
spi_status_t spi_write(uint8_t data) {
|
||||||
SPDR = data;
|
SPDR = data;
|
||||||
|
|
||||||
uint16_t timeout_timer = timer_read();
|
uint16_t timeout_timer = timer_read();
|
||||||
while (!(SPSR & _BV(SPIF))) {
|
while (!(SPSR & _BV(SPIF))) {
|
||||||
if ((timeout != SPI_TIMEOUT_INFINITE) && ((timer_read() - timeout_timer) >= timeout)) {
|
if ((timer_read() - timeout_timer) >= SPI_TIMEOUT) {
|
||||||
return SPI_STATUS_TIMEOUT;
|
return SPI_STATUS_TIMEOUT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -113,12 +126,12 @@ spi_status_t spi_write(uint8_t data, uint16_t timeout) {
|
|||||||
return SPDR;
|
return SPDR;
|
||||||
}
|
}
|
||||||
|
|
||||||
spi_status_t spi_read(uint16_t timeout) {
|
spi_status_t spi_read() {
|
||||||
SPDR = 0x00; // Dummy
|
SPDR = 0x00; // Dummy
|
||||||
|
|
||||||
uint16_t timeout_timer = timer_read();
|
uint16_t timeout_timer = timer_read();
|
||||||
while (!(SPSR & _BV(SPIF))) {
|
while (!(SPSR & _BV(SPIF))) {
|
||||||
if ((timeout != SPI_TIMEOUT_INFINITE) && ((timer_read() - timeout_timer) >= timeout)) {
|
if ((timer_read() - timeout_timer) >= SPI_TIMEOUT) {
|
||||||
return SPI_STATUS_TIMEOUT;
|
return SPI_STATUS_TIMEOUT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -126,21 +139,21 @@ spi_status_t spi_read(uint16_t timeout) {
|
|||||||
return SPDR;
|
return SPDR;
|
||||||
}
|
}
|
||||||
|
|
||||||
spi_status_t spi_transmit(const uint8_t *data, uint16_t length, uint16_t timeout) {
|
spi_status_t spi_transmit(const uint8_t *data, uint16_t length) {
|
||||||
spi_status_t status = SPI_STATUS_ERROR;
|
spi_status_t status = SPI_STATUS_ERROR;
|
||||||
|
|
||||||
for (uint16_t i = 0; i < length; i++) {
|
for (uint16_t i = 0; i < length; i++) {
|
||||||
status = spi_write(data[i], timeout);
|
status = spi_write(data[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
spi_status_t spi_receive(uint8_t *data, uint16_t length, uint16_t timeout) {
|
spi_status_t spi_receive(uint8_t *data, uint16_t length) {
|
||||||
spi_status_t status = SPI_STATUS_ERROR;
|
spi_status_t status = SPI_STATUS_ERROR;
|
||||||
|
|
||||||
for (uint16_t i = 0; i < length; i++) {
|
for (uint16_t i = 0; i < length; i++) {
|
||||||
status = spi_read(timeout);
|
status = spi_read();
|
||||||
|
|
||||||
if (status > 0) {
|
if (status > 0) {
|
||||||
data[i] = status;
|
data[i] = status;
|
||||||
@@ -155,9 +168,9 @@ void spi_stop(void) {
|
|||||||
setPinOutput(currentSlavePin);
|
setPinOutput(currentSlavePin);
|
||||||
writePinHigh(currentSlavePin);
|
writePinHigh(currentSlavePin);
|
||||||
currentSlavePin = NO_PIN;
|
currentSlavePin = NO_PIN;
|
||||||
|
SPSR &= ~(_BV(SPI2X));
|
||||||
SPCR &= ~(currentSlaveConfig);
|
SPCR &= ~(currentSlaveConfig);
|
||||||
currentSlaveConfig = 0;
|
currentSlaveConfig = 0;
|
||||||
SPSR = 0;
|
|
||||||
currentSlave2X = false;
|
currentSlave2X = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -41,15 +41,15 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
void spi_init(void);
|
void spi_init(void);
|
||||||
|
|
||||||
void spi_start(pin_t slavePin, bool lsbFirst, uint8_t mode, uint8_t divisor);
|
bool spi_start(pin_t slavePin, bool lsbFirst, uint8_t mode, uint16_t divisor);
|
||||||
|
|
||||||
spi_status_t spi_write(uint8_t data, uint16_t timeout);
|
spi_status_t spi_write(uint8_t data);
|
||||||
|
|
||||||
spi_status_t spi_read(uint16_t timeout);
|
spi_status_t spi_read(void);
|
||||||
|
|
||||||
spi_status_t spi_transmit(const uint8_t *data, uint16_t length, uint16_t timeout);
|
spi_status_t spi_transmit(const uint8_t *data, uint16_t length);
|
||||||
|
|
||||||
spi_status_t spi_receive(uint8_t *data, uint16_t length, uint16_t timeout);
|
spi_status_t spi_receive(uint8_t *data, uint16_t length);
|
||||||
|
|
||||||
void spi_stop(void);
|
void spi_stop(void);
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|||||||
@@ -0,0 +1,41 @@
|
|||||||
|
# Aplx6
|
||||||
|
|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
|
A stylish (2x3) 6-key MediaPad for your music and browser shortcuts. Designed to be assembled as a sandwich with a blank PCB, using M2.5 screws and spacers, your choice of MX- or Alps-compatible switches, and 1N4148 diodes.
|
||||||
|
|
||||||
|
|
||||||
|
## RGB Underglow (WS2812)
|
||||||
|
|
||||||
|
Just wire them to any of the unused ProMicro pins. Don't forget to edit-uncomment the `config.h` and the `rules.mk` for RGB underglow support, or even add your own functions and modes. Used pins can be found in `config.h` or in the [KiCad Schematic](https://github.com/Aplyard/Aplx6/blob/master/kiCad/xd6.sch). All ProMicro pins can be found [here](https://golem.hu/article/pro-micro-pinout/) along with the +2 pins mod.
|
||||||
|
|
||||||
|
* Keyboard Maintainer: [Aplyard](https://github.com/Aplyard)
|
||||||
|
* Hardware Supported: Aplx6 PCB, Pro Micro (ATmega32U4)
|
||||||
|
* Hardware Availability: [GitHub](https://github.com/Aplyard/Aplx6)
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make aplx6: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).
|
||||||
|
|
||||||
|
---
|
||||||
|
****Designed in**:**
|
||||||
|
[KiCad](https://github.com/KiCad)
|
||||||
|
|
||||||
|
**Components Footprints & Libraries :**
|
||||||
|
[keebs.pretty](https://github.com/egladman/keebs.pretty)
|
||||||
|
[keyboard_parts.pretty
|
||||||
|
](https://github.com/tmk/keyboard_parts.pretty)
|
||||||
|
[ProMicro KiCad](https://github.com/Biacco42/ProMicroKiCad)
|
||||||
|
|
||||||
|
**Usefull Links:**
|
||||||
|
[Qmk Online Configurator](https://config.qmk.fm/#)
|
||||||
|
|
||||||
|
**Alternatives of qmk that worked for me:**
|
||||||
|
[Keyboard Layout Editor](http://www.keyboard-layout-editor.com/#/)
|
||||||
|
[Keyboard Plate & Case Builder](http://builder.swillkb.com/)
|
||||||
|
[Firmware Builder](https://kbfirmware.com/)
|
||||||
|
|
||||||
|
---
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 April Aplyard <[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/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "aplx6.h"
|
||||||
|
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
#define LAYOUT( \
|
||||||
|
k000, k001, k002, \
|
||||||
|
k100, k101, k102 \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{ k000, k001, k002 }, \
|
||||||
|
{ k100, k101, k102 } \
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 April Aplyard <[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 0xE0E0
|
||||||
|
#define PRODUCT_ID 0x0030
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER Aplyard
|
||||||
|
#define PRODUCT Aplx6
|
||||||
|
#define DESCRIPTION Aplx6 MediaPad
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 2
|
||||||
|
#define MATRIX_COLS 3
|
||||||
|
|
||||||
|
/* pin-out */
|
||||||
|
#define MATRIX_ROW_PINS { E6, B3 }
|
||||||
|
#define MATRIX_COL_PINS { F7, B6, F4 }
|
||||||
|
#define UNUSED_PINS
|
||||||
|
|
||||||
|
|
||||||
|
/* ws2812 RGB LED */
|
||||||
|
//#define RGB_DI_PIN X
|
||||||
|
|
||||||
|
//#define RGBLIGHT_ANIMATIONS
|
||||||
|
//#define RGBLED_NUM X // Number of LEDs
|
||||||
|
|
||||||
|
|
||||||
|
/* COL2ROW or ROW2COL */
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
#define _MAIN 0
|
||||||
|
#define _FN 1
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/* Keymap __MAIN: Default Layer
|
||||||
|
* ,--------------------------------.
|
||||||
|
* | .------. |-----|-----|-----| |
|
||||||
|
* | | | |Play |VolUp| Fn | |
|
||||||
|
* | | Pro | |-----|-----|-----| |
|
||||||
|
* | | Micro| --------------------|
|
||||||
|
* | | | |-----|-----|-----| |
|
||||||
|
* | '------' |Prev |VolD |Next | |
|
||||||
|
* | |||||| |-----|-----|-----| |
|
||||||
|
* '--------------------------------'
|
||||||
|
*/
|
||||||
|
[_MAIN] = LAYOUT(
|
||||||
|
KC_MPLY, KC_VOLU, MO(1),
|
||||||
|
KC_MPRV, KC_VOLD, KC_MNXT
|
||||||
|
),
|
||||||
|
/* Keymap __FN: Second Layer
|
||||||
|
* ,--------------------------------.
|
||||||
|
* | .------. |-----|-----|-----| |
|
||||||
|
* | | | |Calc |PgUp |TRANS| |
|
||||||
|
* | | Pro | |-----|-----|-----| |
|
||||||
|
* | | Micro| --------------------|
|
||||||
|
* | | | |-----|-----|-----| |
|
||||||
|
* | '------' |MyPC | PgD |RESET| |
|
||||||
|
* | |||||| |-----|-----|-----| |
|
||||||
|
* '--------------------------------'
|
||||||
|
*/
|
||||||
|
|
||||||
|
[_FN] = LAYOUT(
|
||||||
|
KC_CALC, KC_PGUP, _______,
|
||||||
|
KC_MYCM, KC_PGDN, RESET
|
||||||
|
)
|
||||||
|
};
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
# MCU name
|
||||||
|
MCU = atmega32u4
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
# Teensy halfkay
|
||||||
|
# Pro Micro caterina
|
||||||
|
# Atmel DFU atmel-dfu
|
||||||
|
# LUFA DFU lufa-dfu
|
||||||
|
# QMK DFU qmk-dfu
|
||||||
|
# ATmega32A bootloadHID
|
||||||
|
# ATmega328P USBasp
|
||||||
|
BOOTLOADER = caterina
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = 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 = yes # USB Nkey Rollover
|
||||||
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
|
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||||
|
MIDI_ENABLE = no # MIDI support
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
|
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||||
|
HD44780_ENABLE = no # Enable support for HD44780 based LCDs
|
||||||
|
UNICODE_ENABLE = yes # Unicode
|
||||||
@@ -0,0 +1,71 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "bat43",
|
||||||
|
"url": "",
|
||||||
|
"maintainer": "yfuku",
|
||||||
|
"width": 15,
|
||||||
|
"height": 5.1,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT": {
|
||||||
|
"layout": [
|
||||||
|
{"label":"k00", "x":0, "y":1.43},
|
||||||
|
{"label":"k01", "x":1, "y":1.11},
|
||||||
|
{"label":"k02", "x":2, "y":0.38},
|
||||||
|
{"label":"k03", "x":3, "y":0},
|
||||||
|
{"label":"k04", "x":4, "y":0.05},
|
||||||
|
{"label":"k05", "x":5, "y":0.16},
|
||||||
|
|
||||||
|
{"label":"k40", "x":9, "y":0.16},
|
||||||
|
{"label":"k41", "x":10, "y":0.05},
|
||||||
|
{"label":"k42", "x":11, "y":0},
|
||||||
|
{"label":"k43", "x":12, "y":0.38},
|
||||||
|
{"label":"k44", "x":13, "y":1.11},
|
||||||
|
{"label":"k45", "x":14, "y":1.43},
|
||||||
|
|
||||||
|
{"label":"k10", "x":0, "y":2.43},
|
||||||
|
{"label":"k11", "x":1, "y":2.11},
|
||||||
|
{"label":"k12", "x":2, "y":1.38},
|
||||||
|
{"label":"k13", "x":3, "y":1},
|
||||||
|
{"label":"k14", "x":4, "y":1.05},
|
||||||
|
{"label":"k15", "x":5, "y":1.16},
|
||||||
|
|
||||||
|
{"label":"k30", "x":7, "y":1.16},
|
||||||
|
|
||||||
|
{"label":"k50", "x":9, "y":1.16},
|
||||||
|
{"label":"k51", "x":10, "y":1.05},
|
||||||
|
{"label":"k52", "x":11, "y":1},
|
||||||
|
{"label":"k53", "x":12, "y":1.38},
|
||||||
|
{"label":"k54", "x":13, "y":2.11},
|
||||||
|
{"label":"k55", "x":14, "y":2.43},
|
||||||
|
|
||||||
|
{"label":"k20", "x":0, "y":3.43},
|
||||||
|
{"label":"k21", "x":1, "y":3.11},
|
||||||
|
{"label":"k22", "x":2, "y":2.38},
|
||||||
|
{"label":"k23", "x":3, "y":2},
|
||||||
|
{"label":"k24", "x":4, "y":2.05},
|
||||||
|
{"label":"k25", "x":5, "y":2.16},
|
||||||
|
|
||||||
|
{"label":"k60", "x":9, "y":2.16},
|
||||||
|
{"label":"k61", "x":10, "y":2.05},
|
||||||
|
{"label":"k62", "x":11, "y":2},
|
||||||
|
{"label":"k63", "x":12, "y":2.38},
|
||||||
|
{"label":"k64", "x":13, "y":3.11},
|
||||||
|
{"label":"k65", "x":14, "y":3.43},
|
||||||
|
|
||||||
|
{"label":"k33", "x":4, "y":3.3},
|
||||||
|
{"label":"k34", "x":5, "y":3.3},
|
||||||
|
{"label":"k35", "x":6, "y":3.3},
|
||||||
|
|
||||||
|
{"label":"k70", "x":8, "y":3.3},
|
||||||
|
{"label":"k71", "x":9, "y":3.3},
|
||||||
|
{"label":"k72", "x":10, "y":3.3},
|
||||||
|
|
||||||
|
{"label":"k74", "x":5.1, "y":4.3, "w":0.8, "h":0.8},
|
||||||
|
{"label":"k75", "x":6.1, "y":4.3, "w":0.8, "h":0.8},
|
||||||
|
|
||||||
|
{"label":"k73", "x":8.1, "y":4.3, "w":0.8, "h":0.8},
|
||||||
|
{"label":"k31", "x":9.1, "y":4.3, "w":0.8, "h":0.8},
|
||||||
|
{"label":"k32", "x":10.1, "y":4.3, "w":0.8, "h":0.8}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 mechmerlin
|
||||||
|
|
||||||
|
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 0x6969
|
||||||
|
#define PRODUCT_ID 0x0001
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER botanicalkeyboards
|
||||||
|
#define PRODUCT fm2u
|
||||||
|
#define DESCRIPTION A 1 key macropad
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 1
|
||||||
|
#define MATRIX_COLS 1
|
||||||
|
|
||||||
|
/* Keyboard Matrix Assignments */
|
||||||
|
#define DIRECT_PINS { \
|
||||||
|
{ C4 } \
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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 UNUSED_PINS
|
||||||
|
|
||||||
|
/* COL2ROW, ROW2COL*/
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
/* Copyright 2020 mechmerlin
|
||||||
|
*
|
||||||
|
* 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 "fm2u.h"
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
/* Copyright 2020 mechmerlin
|
||||||
|
*
|
||||||
|
* 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_100u( \
|
||||||
|
k00 \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{ k00 } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_125u LAYOUT_100u
|
||||||
|
#define LAYOUT_150u LAYOUT_100u
|
||||||
|
#define LAYOUT_175u LAYOUT_100u
|
||||||
|
#define LAYOUT_200u LAYOUT_100u
|
||||||
|
#define LAYOUT_225u LAYOUT_100u
|
||||||
|
#define LAYOUT_275u LAYOUT_100u
|
||||||
|
#define LAYOUT_300u LAYOUT_100u
|
||||||
|
#define LAYOUT_600u LAYOUT_100u
|
||||||
|
#define LAYOUT_625u LAYOUT_100u
|
||||||
|
#define LAYOUT_700u LAYOUT_100u
|
||||||
|
#define LAYOUT_iso LAYOUT_100u
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "fm2u",
|
||||||
|
"url": "",
|
||||||
|
"maintainer": "qmk",
|
||||||
|
"width": 1,
|
||||||
|
"height": 1,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT_100u": {
|
||||||
|
"layout": [{"x":0, "y":0}]
|
||||||
|
},
|
||||||
|
|
||||||
|
"LAYOUT_125u": {
|
||||||
|
"layout": [{"x":0, "y":0, "w":1.25}]
|
||||||
|
},
|
||||||
|
|
||||||
|
"LAYOUT_150u": {
|
||||||
|
"layout": [{"x":0, "y":0, "w":1.50}]
|
||||||
|
},
|
||||||
|
|
||||||
|
"LAYOUT_175u": {
|
||||||
|
"layout": [{"x":0, "y":0, "w":1.75}]
|
||||||
|
},
|
||||||
|
|
||||||
|
"LAYOUT_200u": {
|
||||||
|
"layout": [{"x":0, "y":0, "w":2.00}]
|
||||||
|
},
|
||||||
|
|
||||||
|
"LAYOUT_225u": {
|
||||||
|
"layout": [{"x":0, "y":0, "w":2.25}]
|
||||||
|
},
|
||||||
|
|
||||||
|
"LAYOUT_275u": {
|
||||||
|
"layout": [{"x":0, "y":0, "w":2.75}]
|
||||||
|
},
|
||||||
|
|
||||||
|
"LAYOUT_300u": {
|
||||||
|
"layout": [{"x":0, "y":0, "w":3.00}]
|
||||||
|
},
|
||||||
|
|
||||||
|
"LAYOUT_600u": {
|
||||||
|
"layout": [{"x":0, "y":0, "w":6.00}]
|
||||||
|
},
|
||||||
|
|
||||||
|
"LAYOUT_625u": {
|
||||||
|
"layout": [{"x":0, "y":0, "w":6.25}]
|
||||||
|
},
|
||||||
|
|
||||||
|
"LAYOUT_700u": {
|
||||||
|
"layout": [{"x":0, "y":0, "w":7.00}]
|
||||||
|
},
|
||||||
|
|
||||||
|
"LAYOUT_iso": {
|
||||||
|
"layout": [{"x":0.25, "y":0, "w":1.25, "h":2}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
/* Copyright 2020 mechmerlin
|
||||||
|
*
|
||||||
|
* 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] = {
|
||||||
|
/* Base */
|
||||||
|
[0] = LAYOUT_100u(
|
||||||
|
KC_B
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
/* Copyright 2020 mechmerlin
|
||||||
|
*
|
||||||
|
* 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] = {
|
||||||
|
/* Base */
|
||||||
|
[0] = LAYOUT_100u(
|
||||||
|
KC_B
|
||||||
|
),
|
||||||
|
|
||||||
|
[1] = LAYOUT_100u(
|
||||||
|
KC_TRNS
|
||||||
|
),
|
||||||
|
|
||||||
|
[2] = LAYOUT_100u(
|
||||||
|
KC_TRNS
|
||||||
|
),
|
||||||
|
|
||||||
|
[3] = LAYOUT_100u(
|
||||||
|
KC_TRNS
|
||||||
|
),
|
||||||
|
};
|
||||||
|
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
VIA_ENABLE = yes
|
||||||
|
LTO_ENABLE = yes
|
||||||
|
|
||||||
|
EXTRAKEY_ENABLE = no
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
# fm2u
|
||||||
|
|
||||||
|
A 1 key macropad with USB C and atmega32u2 microcontroller.
|
||||||
|
|
||||||
|
* Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin)
|
||||||
|
* Hardware Supported: fm2u PCB
|
||||||
|
* Hardware Availability: TBD
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make botanicalkeyboards/fm2u: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 = atmega32u2
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
# Teensy halfkay
|
||||||
|
# Pro Micro caterina
|
||||||
|
# Atmel DFU atmel-dfu
|
||||||
|
# LUFA DFU lufa-dfu
|
||||||
|
# QMK DFU qmk-dfu
|
||||||
|
# ATmega32A bootloadHID
|
||||||
|
# ATmega328P USBasp
|
||||||
|
BOOTLOADER = atmel-dfu
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
|
||||||
|
MOUSEKEY_ENABLE = no # Mouse keys
|
||||||
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
|
CONSOLE_ENABLE = yes # Console for debug
|
||||||
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
|
NKRO_ENABLE = no # USB Nkey Rollover
|
||||||
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
|
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||||
|
MIDI_ENABLE = no # MIDI support
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
|
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||||
|
HD44780_ENABLE = no # Enable support for HD44780 based LCDs
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
# MCU Name
|
# MCU name
|
||||||
MCU = STM32F072
|
MCU = STM32F072
|
||||||
|
|
||||||
# Build Options
|
# Build Options
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# MCU Name
|
# MCU name
|
||||||
MCU = STM32F072
|
MCU = STM32F072
|
||||||
|
|
||||||
# Build Options
|
# Build Options
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
/* key matrix size */
|
/* key matrix size */
|
||||||
#define MATRIX_ROWS 5
|
#define MATRIX_ROWS 5
|
||||||
#define MATRIX_COLS 14
|
#define MATRIX_COLS 15
|
||||||
#define UNUSED_PINS
|
#define UNUSED_PINS
|
||||||
#define DIODE_DIRECTION COL2ROW
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
@@ -49,7 +49,3 @@
|
|||||||
#define DRIVER_1_LED_TOTAL 36
|
#define DRIVER_1_LED_TOTAL 36
|
||||||
#define DRIVER_2_LED_TOTAL 36
|
#define DRIVER_2_LED_TOTAL 36
|
||||||
#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
|
#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
|
||||||
|
|
||||||
#if defined(VIA_ENABLE)
|
|
||||||
# define DYNAMIC_KEYMAP_LAYER_COUNT 2
|
|
||||||
#endif
|
|
||||||
@@ -14,4 +14,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
_______, _______,_______,_______,_______,_______,KC_LEFT,KC_DOWN, KC_UP,KC_RIGHT,KC_HOME,KC_END,_______,
|
_______, _______,_______,_______,_______,_______,KC_LEFT,KC_DOWN, KC_UP,KC_RIGHT,KC_HOME,KC_END,_______,
|
||||||
_______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
|
_______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
|
||||||
_______,_______,_______, _______, _______,_______,TG(0),_______),
|
_______,_______,_______, _______, _______,_______,TG(0),_______),
|
||||||
|
|
||||||
|
[2] = LAYOUT_60_ansi_split_bs_rshift(
|
||||||
|
_______, _______,_______, _______,_______, _______,_______, _______,_______, _______,_______, _______,_______,_______,_______,
|
||||||
|
_______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
|
||||||
|
_______, _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,
|
||||||
|
_______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
|
||||||
|
_______,_______,_______, _______, _______,_______,_______,_______),
|
||||||
|
|
||||||
|
[3] = LAYOUT_60_ansi_split_bs_rshift(
|
||||||
|
_______, _______,_______, _______,_______, _______,_______, _______,_______, _______,_______, _______,_______,_______,_______,
|
||||||
|
_______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
|
||||||
|
_______, _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,
|
||||||
|
_______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
|
||||||
|
_______,_______,_______, _______, _______,_______,_______,_______)
|
||||||
};
|
};
|
||||||
@@ -1 +1,2 @@
|
|||||||
VIA_ENABLE = yes
|
VIA_ENABLE = yes
|
||||||
|
LTO_ENABLE = yes
|
||||||
@@ -1,38 +1,36 @@
|
|||||||
// pvinis ergodox ez
|
// pvinis ergodox ez
|
||||||
// ,------------------------------------. ,------------------------------------.
|
// ,------------------------------------. ┌────┬────┬────┬────┬────┬────┬──────┐
|
||||||
// | | | | | | | | | | | | | | | |
|
// | | | | | | | | │ │ │ │ │ │ │ │
|
||||||
// |------+----+----+----+----+---------| |----+----+----+----+----+----+------|
|
// |------+----+----+----+----+---------| ├────┼────┼────┼────┼────┼────┼──────┤
|
||||||
// | | | | | | | | | | | | | | | |
|
// | | | | | | | | │ │ │ │ │ │ │ │
|
||||||
// |------+----+----+----x----x----| | | |----x----x----+----+----+------|
|
// |------+----+----+----x----x----| | │ ├────╆━━━━╅────┼────┼────┼──────┤
|
||||||
// | | | | | | |----| |----| | | | | | |
|
// | | | | | | |----| ├────┤ ┃ ┃ │ │ │ │
|
||||||
// |------+----+----+----x----x----| | | |----x----x----+----+----+------|
|
// |------+----+----+----x----x----| | │ ├────╄━━━━╃────┼────┼────┼──────┤
|
||||||
// | | | | | | | | | | | | | | | |
|
// | | | | | | | | │ │ │ │ │ │ │ │
|
||||||
// `------+----+----+----+----+---------' `---------+----+----+----+----+------'
|
// `------+----+----+----+----+---------' └────┴────┼────┼────┼────┼────┼────┬─┘
|
||||||
// | | | | | | | | | | | |
|
// | | | | | | │ │ │ │ │ │
|
||||||
// `------------------------' `------------------------'
|
// `------------------------' └────┴────┴────┴────┴────┘
|
||||||
// ,---------. ,---------.
|
// ,---------. ┌────┬────┐
|
||||||
// | | | | | |
|
// | | | │ │ │
|
||||||
// ,----+----+----| |----+----+----.
|
// ,----+----+----| ├────┼────┼────┐
|
||||||
// | | | | | | | |
|
// | | | | │ │ │ │
|
||||||
// | | |----| |----| | |
|
// | | |----| ├────┤ │ │
|
||||||
// | | | | | | | |
|
// | | | | │ │ │ │
|
||||||
// `--------------' `--------------'
|
// `--------------' └────┴────┴────┘
|
||||||
|
|
||||||
|
|
||||||
#include QMK_KEYBOARD_H
|
#include QMK_KEYBOARD_H
|
||||||
#include "pvinis.h"
|
#include "pvinis.h"
|
||||||
#include "mousekey.h"
|
#include "mousekey.h"
|
||||||
|
|
||||||
|
|
||||||
// layers
|
// layers
|
||||||
enum {
|
enum {
|
||||||
MOUSE = 8,
|
MOUSE = 8,
|
||||||
};
|
};
|
||||||
|
|
||||||
// extra keys
|
// extra keys
|
||||||
enum {
|
enum {
|
||||||
NONE = 30,
|
NONE = 30,
|
||||||
TD_LAYR, // SYSCTL and MOUSE layer switch
|
TD_LAYR, // SYSCTL and MOUSE layer switch
|
||||||
};
|
};
|
||||||
|
|
||||||
// application selection
|
// application selection
|
||||||
@@ -41,158 +39,170 @@ enum {
|
|||||||
#define AP_XCOD ALLM(KC_X)
|
#define AP_XCOD ALLM(KC_X)
|
||||||
#define AP_MSGR ALLM(KC_M)
|
#define AP_MSGR ALLM(KC_M)
|
||||||
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
// ,------------------------------------. ,------------------------------------.
|
// ,------------------------------------. ,------------------------------------.
|
||||||
// |4xFLSH| | | | | |Opt | | | | | | | | |
|
// |4xFLSH| | | | | |Opt | | | | | | | | |
|
||||||
// |------+----+----+----+----+---------| |----+----+----+----+----+----+------|
|
// |------+----+----+----+----+---------| |----+----+----+----+----+----+------|
|
||||||
// | Tab | | | | | | | | | | | | | | |
|
// | Tab | | | | | | | | | | | | | | |
|
||||||
// |------+----+----+----x----x----| | | |----x----x----+----+----+------|
|
// |------+----+----+----x----x----| | | |----x----x----+----+----+------|
|
||||||
// |EscCtl| | | | | |----| |----| | | | | | Ent |
|
// |EscCtl| | | | | |----| |----| | | | | | Ent |
|
||||||
// |------+----+----+----x----x----| | | |----x----x----+----+----+------|
|
// |------+----+----+----x----x----| | | |----x----x----+----+----+------|
|
||||||
// |LShift| | | | | | | | | | | | | |RShift|
|
// |LShift| | | | | | | | | | | | | |RShift|
|
||||||
// `------+----+----+----+----+---------' `---------+----+----+----+----+------'
|
// `------+----+----+----+----+---------' `---------+----+----+----+----+------'
|
||||||
// | | | | |Cmd | | | | | | |
|
// | | | |Cmd |LOWR| |RASE|RAlt| | | |
|
||||||
// `------------------------' `------------------------'
|
// `------------------------' `------------------------'
|
||||||
// ,---------. ,---------.
|
// ,---------. ,---------.
|
||||||
// |QWER| | | | |
|
// |QWER| | | | |
|
||||||
// ,----+----+----| |----+----+----.
|
// ,----+----+----| |----+----+----.
|
||||||
// | Ba | L | | | | | |
|
// | Ba | L | | | | | |
|
||||||
// | ck |Shi |----| |----| |Spc |
|
// | ck |Shi |----| |----| |Spc |
|
||||||
// | spc| ft | | | | | |
|
// | spc| ft | | | | | |
|
||||||
// `--------------' `--------------'
|
// `--------------' `--------------'
|
||||||
[LR_BASE] = LAYOUT_ergodox_pretty_wrapper(
|
[LR_BASE] = LAYOUT_ergodox_pretty_wrapper(
|
||||||
TD_3FLS, _______, _______, _______, _______, _______, KC_LALT, _______, _______, _______, _______, _______, _______, _______,
|
// clang-format off
|
||||||
KC_TAB , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
TD_3FLS, _______, _______, _______, _______, _______, KC_LALT, _______, _______, _______, _______, _______, _______, _______,
|
||||||
PV_ESCC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_ENT ,
|
KC_TAB , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
KC_LSFT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_RSFT,
|
PV_ESCC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_ENT ,
|
||||||
_______, _______, _______, KC_LGUI, SYMBOL , SYSCTL , KC_RALT, _______, _______, _______,
|
KC_LSFT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_RSFT,
|
||||||
QWERTY , CARPALX, _______, _______,
|
_______, _______, _______, KC_LGUI, SYMBOL , SYSCTL , KC_RALT, _______, _______, _______,
|
||||||
_______, _______,
|
QWERTY , CARPALX, _______, _______,
|
||||||
KC_BSPC, _______, _______, _______, _______, KC_SPC
|
_______, _______,
|
||||||
|
KC_BSPC, _______, _______, _______, _______, KC_SPC
|
||||||
|
// clang-format on
|
||||||
|
),
|
||||||
|
|
||||||
|
// ,------------------------------------. ,------------------------------------.
|
||||||
|
// | | NUMBERS_L | | | - | NUMBERS_R | = |
|
||||||
|
// |------+----+----+----+----+---------| |----+----+----+----+----+----+------|
|
||||||
|
// | | | [ | | ] | | |
|
||||||
|
// |------+ | | | | +------|
|
||||||
|
// | | QWERTY_L |----| |----| QWERTY_R | |
|
||||||
|
// |------+ | ( | | ) | +------|
|
||||||
|
// | | | | | | | |
|
||||||
|
// `------+----+----+----+----+---------' `---------+----+----+----+----+------'
|
||||||
|
// | | ` | | | | | | | | ' | |
|
||||||
|
// `------------------------' `------------------------'
|
||||||
|
// ,---------. ,---------.
|
||||||
|
// | | | | | |
|
||||||
|
// ,----+----+----| |----+----+----.
|
||||||
|
// | | | | | | | |
|
||||||
|
// | | |----| |----| | |
|
||||||
|
// | | | | | | | |
|
||||||
|
// `--------------' `--------------'
|
||||||
|
// See `users/pvinis/pvinis.h`
|
||||||
|
[LR_QWERTY] = LAYOUT_ergodox_pretty_wrapper(
|
||||||
|
// clang-format off
|
||||||
|
_______, ________________NUMBERS_L__________________, _______, KC_MINS, ________________NUMBERS_R__________________, KC_EQL ,
|
||||||
|
_______, _________________QWERTY_L1_________________, KC_LBRC, KC_RBRC, _________________QWERTY_R1_________________, _______,
|
||||||
|
_______, _____________MOD_QWERTY_L2_________________, _____________MOD_QWERTY_R2_________________, _______,
|
||||||
|
_______, _________________QWERTY_L3_________________, KC_LPRN, KC_RPRN, _________________QWERTY_R3_________________, _______,
|
||||||
|
_______, KC_GRV, _______, _______, _______, _______, _______, _______, KC_QUOT , _______,
|
||||||
|
_______, _______, _______, _______,
|
||||||
|
_______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______
|
||||||
|
// clang-format off
|
||||||
),
|
),
|
||||||
|
|
||||||
// ,------------------------------------. ,------------------------------------.
|
// ,------------------------------------. ,------------------------------------.
|
||||||
// | | NUMBERS_L | | | - | NUMBERS_R | = |
|
// | | NUMBERS_L | | | | NUMBERS_R | |
|
||||||
// |------+----+----+----+----+---------| |----+----+----+----+----+----+------|
|
// |------+----+----+----+----+---------| |----+----+----+----+----+----+------|
|
||||||
// | | | [ | | ] | | |
|
// | | | | | | | |
|
||||||
// |------+ | | | | +------|
|
// |------+ | | | | +------|
|
||||||
// | | QWERTY_L |----| |----| QWERTY_R | |
|
// | | CARPALX_L |----| |----| CARPALX_R | |
|
||||||
// |------+ | ( | | ) | +------|
|
// |------+ | | | | +------|
|
||||||
// | | | | | | | |
|
// | | | | | | | |
|
||||||
// `------+----+----+----+----+---------' `---------+----+----+----+----+------'
|
// `------+----+----+----+----+---------' `---------+----+----+----+----+------'
|
||||||
// | | ` | | | | | | | | ' | |
|
// | | | | | | | | | | | |
|
||||||
// `------------------------' `------------------------'
|
// `------------------------' `------------------------'
|
||||||
// ,---------. ,---------.
|
// ,---------. ,---------.
|
||||||
// | | | | | |
|
// | | | | | |
|
||||||
// ,----+----+----| |----+----+----.
|
// ,----+----+----| |----+----+----.
|
||||||
// | | | | | | | |
|
// | | | | | | | |
|
||||||
// | | |----| |----| | |
|
// | | |----| |----| | |
|
||||||
// | | | | | | | |
|
// | | | | | | | |
|
||||||
// `--------------' `--------------'
|
// `--------------' `--------------'
|
||||||
// See `users/pvinis/pvinis.h`
|
// See `users/pvinis/pvinis.h`
|
||||||
[LR_QWERTY] = LAYOUT_ergodox_pretty_wrapper(
|
|
||||||
_______, ________________NUMBERS_L__________________, _______, KC_MINS, ________________NUMBERS_R__________________, KC_EQL ,
|
|
||||||
_______, _________________QWERTY_L1_________________, KC_LBRC, KC_RBRC, _________________QWERTY_R1_________________, _______,
|
|
||||||
_______, _____________MOD_QWERTY_L2_________________, _____________MOD_QWERTY_R2_________________, _______,
|
|
||||||
_______, _________________QWERTY_L3_________________, KC_LPRN, KC_RPRN, _________________QWERTY_R3_________________, _______,
|
|
||||||
_______, KC_GRV, _______, _______, _______, _______, _______, _______, KC_QUOT , _______,
|
|
||||||
_______, _______, _______, _______,
|
|
||||||
_______, _______,
|
|
||||||
_______, _______, _______, _______, _______, _______
|
|
||||||
),
|
|
||||||
|
|
||||||
// ,------------------------------------. ,------------------------------------.
|
|
||||||
// | | NUMBERS_L | | | | NUMBERS_R | |
|
|
||||||
// |------+----+----+----+----+---------| |----+----+----+----+----+----+------|
|
|
||||||
// | | | | | | | |
|
|
||||||
// |------+ | | | | +------|
|
|
||||||
// | | CARPALX_L |----| |----| CARPALX_R | |
|
|
||||||
// |------+ | | | | +------|
|
|
||||||
// | | | | | | | |
|
|
||||||
// `------+----+----+----+----+---------' `---------+----+----+----+----+------'
|
|
||||||
// | | | | | | | | | | | |
|
|
||||||
// `------------------------' `------------------------'
|
|
||||||
// ,---------. ,---------.
|
|
||||||
// | | | | | |
|
|
||||||
// ,----+----+----| |----+----+----.
|
|
||||||
// | | | | | | | |
|
|
||||||
// | | |----| |----| | |
|
|
||||||
// | | | | | | | |
|
|
||||||
// `--------------' `--------------'
|
|
||||||
// See `users/pvinis/pvinis.h`
|
|
||||||
[LR_CARPALX] = LAYOUT_ergodox_pretty_wrapper(
|
[LR_CARPALX] = LAYOUT_ergodox_pretty_wrapper(
|
||||||
_______, ________________NUMBERS_L__________________, _______, _______, ________________NUMBERS_R__________________, _______,
|
// clang-format off
|
||||||
_______, ________________CARPALX_L1_________________, _______, _______, ________________CARPALX_R1_________________, _______,
|
_______, ________________NUMBERS_L__________________, _______, _______, ________________NUMBERS_R__________________, _______,
|
||||||
_______, ________________CARPALX_L2_________________, ________________CARPALX_R2_________________, _______,
|
_______, ________________CARPALX_L1_________________, _______, _______, ________________CARPALX_R1_________________, _______,
|
||||||
_______, ________________CARPALX_L3_________________, _______, _______, ________________CARPALX_R3_________________, _______,
|
_______, ________________CARPALX_L2_________________, ________________CARPALX_R2_________________, _______,
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
_______, ________________CARPALX_L3_________________, _______, _______, ________________CARPALX_R3_________________, _______,
|
||||||
_______, _______, _______, _______,
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
_______, _______,
|
_______, _______, _______, _______,
|
||||||
_______, _______, _______, _______, _______, _______
|
_______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______
|
||||||
|
// clang-format on
|
||||||
|
),
|
||||||
|
|
||||||
|
// See `users/pvinis/pvinis.h`
|
||||||
|
[LR_SYMBOL] = LAYOUT_ergodox_pretty_wrapper(
|
||||||
|
// clang-format off
|
||||||
|
_______, ______________________F_L__________________, KC_F11 , KC_F12 , ______________________F_R__________________, _______,
|
||||||
|
_______, _________________SYMBOL_L1_________________, _______, _______, _________________SYMBOL_R1_________________, _______,
|
||||||
|
_______, _________________SYMBOL_L2_________________, _________________SYMBOL_R2_________________, _______,
|
||||||
|
_______, _________________SYMBOL_L3_________________, _______, _______, _________________SYMBOL_R3_________________, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______,
|
||||||
|
_______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______
|
||||||
|
// clang-format off
|
||||||
),
|
),
|
||||||
|
|
||||||
// See `users/pvinis/pvinis.h`
|
// See `users/pvinis/pvinis.h`
|
||||||
[LR_SYMBOL] = LAYOUT_ergodox_pretty_wrapper(
|
|
||||||
_______, ______________________F_L__________________, KC_F11 , KC_F12 , ______________________F_R__________________, _______,
|
|
||||||
_______, _________________SYMBOL_L1_________________, _______, _______, _________________SYMBOL_R1_________________, _______,
|
|
||||||
_______, _________________SYMBOL_L2_________________, _________________SYMBOL_R2_________________, _______,
|
|
||||||
_______, _________________SYMBOL_L3_________________, _______, _______, _________________SYMBOL_R3_________________, _______,
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
|
||||||
_______, _______, _______, _______,
|
|
||||||
_______, _______,
|
|
||||||
_______, _______, _______, _______, _______, _______
|
|
||||||
),
|
|
||||||
|
|
||||||
// See `users/pvinis/pvinis.h`
|
|
||||||
[LR_SYSCTL] = LAYOUT_ergodox_pretty_wrapper(
|
[LR_SYSCTL] = LAYOUT_ergodox_pretty_wrapper(
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
// clang-format off
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _________________SYSCTL_R1_________________, _______,
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
_______, _______, _______, _______, _______, _______, _________________SYSCTL_R2_________________, _______,
|
_______, _______, _______, _______, _______, _______, _______, _______, _________________SYSCTL_R1_________________, _______,
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _________________SYSCTL_R3_________________, _______,
|
_______, _______, _______, _______, _______, _______, _________________SYSCTL_R2_________________, _______,
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
_______, _______, _______, _______, _______, _______, _______, _______, _________________SYSCTL_R3_________________, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
|
||||||
_______, _______, _______, _______,
|
_______, _______, _______, _______,
|
||||||
_______, _______,
|
_______, _______,
|
||||||
_______, _______, _______, _______, _______, _______
|
_______, _______, _______, _______, _______, _______
|
||||||
),
|
// clang-format on
|
||||||
|
),
|
||||||
|
|
||||||
// See `users/pvinis/pvinis.h`
|
// See `users/pvinis/pvinis.h`
|
||||||
[LR_KBCTL] = LAYOUT_ergodox_pretty_wrapper(
|
[LR_KBCTL] = LAYOUT_ergodox_pretty_wrapper(
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
// clang-format off
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, __________________KBCTL_R1_________________, XXXXXXX,
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, __________________KBCTL_R2_________________, XXXXXXX,
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, __________________KBCTL_R1_________________, XXXXXXX,
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, __________________KBCTL_R3_________________, XXXXXXX,
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, __________________KBCTL_R2_________________, XXXXXXX,
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, __________________KBCTL_R3_________________, XXXXXXX,
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
XXXXXXX, XXXXXXX,
|
XXXXXXX, XXXXXXX,
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
|
||||||
),
|
// clang-format on
|
||||||
|
),
|
||||||
|
|
||||||
/* MOUSE
|
/* MOUSE
|
||||||
* a keymap to control my system.
|
* a keymap to control my system.
|
||||||
*
|
*
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||||
* | ^ | | | | | | | | | | | | | | |
|
* | ^ | | | | | | | | | | | | | | |
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||||
* | | | | | | | | | | | | MsUp | | | |
|
* | | | | | | | | | | | | MsUp | | | |
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
* | | | | | | |------| |------| |MsLeft| MsDn |MsRght| | |
|
* | | | | | | |------| |------| |MsLeft| MsDn |MsRght| | |
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
* | | | | | | | | | | | | | | | |
|
* | | | | | | | | | | | | | | | |
|
||||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
* | | | | | | | | | | | |
|
* | | | | | | | | | | | |
|
||||||
* `----------------------------------' `----------------------------------'
|
* `----------------------------------' `----------------------------------'
|
||||||
* ,-------------. ,-------------.
|
* ,-------------. ,-------------.
|
||||||
* | | | | |MidClk|
|
* | | | | |MidClk|
|
||||||
* ,------|------|------| |------+------+------.
|
* ,------|------|------| |------+------+------.
|
||||||
* | | | | | |Left |Right |
|
* | | | | | |Left |Right |
|
||||||
* | | |------| |------| Click| Click|
|
* | | |------| |------| Click| Click|
|
||||||
* | | | ^ | | | | |
|
* | | | ^ | | | | |
|
||||||
* `--------------------' `--------------------'
|
* `--------------------' `--------------------'
|
||||||
*/
|
*/
|
||||||
[MOUSE] = LAYOUT_ergodox_pretty(
|
[MOUSE] = LAYOUT_ergodox_pretty(
|
||||||
|
// clang-format off
|
||||||
KC_TRNS ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
|
KC_TRNS ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
|
||||||
,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
|
,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
|
||||||
,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
|
,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
|
||||||
@@ -212,53 +222,54 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
,KC_NO ,KC_NO
|
,KC_NO ,KC_NO
|
||||||
,KC_NO
|
,KC_NO
|
||||||
,KC_NO ,KC_NO ,KC_NO
|
,KC_NO ,KC_NO ,KC_NO
|
||||||
),
|
// clang-format on
|
||||||
|
),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// keyboard initialization
|
// keyboard initialization
|
||||||
void keyboard_post_init_user_local(void) {
|
void keyboard_post_init_user_keymap(void) {
|
||||||
ergodox_led_all_on();
|
ergodox_led_all_on();
|
||||||
for (int i = LED_BRIGHTNESS_HI; i > LED_BRIGHTNESS_LO; i--) {
|
for (int i = LED_BRIGHTNESS_HI; i > LED_BRIGHTNESS_LO; i--) {
|
||||||
ergodox_led_all_set(i);
|
ergodox_led_all_set(i);
|
||||||
wait_ms(5);
|
wait_ms(5);
|
||||||
}
|
}
|
||||||
wait_ms(1000);
|
wait_ms(1000);
|
||||||
for (int i = LED_BRIGHTNESS_LO; i > 0; i--) {
|
for (int i = LED_BRIGHTNESS_LO; i > 0; i--) {
|
||||||
ergodox_led_all_set(i);
|
ergodox_led_all_set(i);
|
||||||
wait_ms(10);
|
wait_ms(10);
|
||||||
}
|
}
|
||||||
ergodox_led_all_off();
|
ergodox_led_all_off();
|
||||||
|
|
||||||
// restore default brightness for future use
|
// restore default brightness for future use
|
||||||
ergodox_led_all_set(LED_BRIGHTNESS_HI);
|
ergodox_led_all_set(LED_BRIGHTNESS_HI);
|
||||||
}
|
}
|
||||||
|
|
||||||
// light up leds based on the layer
|
// light up leds based on the layer
|
||||||
uint32_t layer_state_set_user_local(uint32_t state) {
|
uint32_t layer_state_set_user_keymap(uint32_t state) {
|
||||||
ergodox_right_led_1_off();
|
ergodox_right_led_1_off();
|
||||||
ergodox_right_led_2_off();
|
ergodox_right_led_2_off();
|
||||||
ergodox_right_led_3_off();
|
ergodox_right_led_3_off();
|
||||||
switch (biton32(state)) {
|
switch (biton32(state)) {
|
||||||
case LR_SYSCTL:
|
case LR_SYSCTL:
|
||||||
ergodox_right_led_3_on(); // blue
|
ergodox_right_led_3_on(); // blue
|
||||||
break;
|
break;
|
||||||
case LR_KBCTL:
|
case LR_KBCTL:
|
||||||
ergodox_right_led_1_on(); // red
|
ergodox_right_led_1_on(); // red
|
||||||
break;
|
break;
|
||||||
case LR_SYMBOL:
|
case LR_SYMBOL:
|
||||||
ergodox_right_led_2_on(); // green
|
ergodox_right_led_2_on(); // green
|
||||||
break;
|
break;
|
||||||
default: break;
|
default:
|
||||||
}
|
break;
|
||||||
return state;
|
}
|
||||||
|
return state;
|
||||||
}
|
}
|
||||||
|
|
||||||
// extra keys
|
// extra keys
|
||||||
// const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
|
// const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
|
||||||
// switch (id) {
|
// switch (id) {
|
||||||
// }
|
// }
|
||||||
// return MACRO_NONE;
|
// return MACRO_NONE;
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// tap dances
|
// tap dances
|
||||||
@@ -325,6 +336,6 @@ uint32_t layer_state_set_user_local(uint32_t state) {
|
|||||||
// }
|
// }
|
||||||
|
|
||||||
// qk_tap_dance_action_t tap_dance_actions[] = {
|
// qk_tap_dance_action_t tap_dance_actions[] = {
|
||||||
// [TD_FLSH] = ACTION_TAP_DANCE_FN_ADVANCED( flash_each_tap, flash_dance_finished, flash_dance_reset ),
|
// [TD_FLSH] = ACTION_TAP_DANCE_FN_ADVANCED( flash_each_tap, flash_dance_finished, flash_dance_reset ),
|
||||||
// [TD_LAYR] = ACTION_TAP_DANCE_FN_ADVANCED( NULL, layers_dance_finished, NULL ),
|
// [TD_LAYR] = ACTION_TAP_DANCE_FN_ADVANCED( NULL, layers_dance_finished, NULL ),
|
||||||
// };
|
// };
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#define IGNORE_MOD_TAP_INTERRUPT
|
||||||
@@ -0,0 +1,155 @@
|
|||||||
|
/* Good on you for modifying your layout! if you don't have
|
||||||
|
* time to read the QMK docs, a list of keycodes can be found at
|
||||||
|
*
|
||||||
|
* https://github.com/qmk/qmk_firmware/blob/master/docs/keycodes.md
|
||||||
|
*
|
||||||
|
* There's also a template for adding new layers at the bottom of this file!
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
enum layers {
|
||||||
|
BASE, // default layer
|
||||||
|
SYMB, // symbols
|
||||||
|
NUMB, // number/navigation
|
||||||
|
MOUS, // mouse navigation
|
||||||
|
};
|
||||||
|
|
||||||
|
#define KC_ANGL LSFT(KC_COMM)
|
||||||
|
#define KC_ANGR LSFT(KC_DOT)
|
||||||
|
|
||||||
|
// Blank template at the bottom
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/* Keymap 0: Basic layer
|
||||||
|
*
|
||||||
|
* ,-------------------------------------------. ,-------------------------------------------.
|
||||||
|
* | ESC | Q | W | E | R | T | | Y | U | I | O | P | \ | |
|
||||||
|
* |--------+------+------+------+------+------|------. .------|------+------+------+------+------+--------|
|
||||||
|
* | LShift | A | S | D | F | G | | | VolUp| H | J | K | L | ; : |RSft/' "|
|
||||||
|
* |--------+------+------+------+------+------|------| |------|------+------+------+------+------+--------|
|
||||||
|
* | LCtrl | Z | X | C | V | B | | | VolDn| N | M | , < | . > | / ? |RCtl/- _|
|
||||||
|
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
|
* .----------. .----------. .-----------. .------.
|
||||||
|
* | LAlt | |SYMB/Space| | NUMB/Bksp | | MOUS |
|
||||||
|
* '----------' '----------' `-----------' '------'
|
||||||
|
* ,-------. ,-------.
|
||||||
|
* | | |VolMute|
|
||||||
|
* ,------|-------| |-------|------.
|
||||||
|
* | NUMB | | | | SYMB |
|
||||||
|
* | Tab | LGui | | = | Enter|
|
||||||
|
* | | | | | |
|
||||||
|
* `--------------' `--------------'
|
||||||
|
*/
|
||||||
|
[BASE] = LAYOUT_gergo(
|
||||||
|
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
|
||||||
|
KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, XXXXXXX, KC_VOLU, KC_H, KC_J, KC_K, KC_L, KC_SCLN, MT(MOD_RSFT, KC_QUOT),
|
||||||
|
KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, XXXXXXX, XXXXXXX, KC_MUTE, KC_VOLD, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MT(MOD_RCTL, KC_MINS),
|
||||||
|
KC_LALT, LT(SYMB, KC_SPC), LT(NUMB, KC_TAB), KC_LGUI, KC_EQL, LT(SYMB, KC_ENT), LT(NUMB, KC_BSPC), MO(MOUS)
|
||||||
|
),
|
||||||
|
/* Keymap 1: Symbols layer
|
||||||
|
*
|
||||||
|
* ,-------------------------------------------. ,-------------------------------------------.
|
||||||
|
* | | # | $ | { | } | | | | < | > | | | | |
|
||||||
|
* |--------+------+------+------+------+------|------. .------|------+------+------+------+------+--------|
|
||||||
|
* | | ! | @ | ( | ) | ` | | | | - | & | + | * | ; | ' " |
|
||||||
|
* |--------+------+------+------+------+------|------| |------|------+------+------+------+------+--------|
|
||||||
|
* | | % | ^ | [ | ] | ~ | | | | _ | | | , | . | / ? | - _ |
|
||||||
|
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
|
* .----------. .----------. .-----. .------.
|
||||||
|
* | LAlt | |SYMB/Space| | Del | | MOUS |
|
||||||
|
* '----------' '----------' `-----' '------'
|
||||||
|
* ,-------. ,-------.
|
||||||
|
* | | | |
|
||||||
|
* ,------|-------| |-------|------.
|
||||||
|
* | NUMB | | | | SYMB |
|
||||||
|
* | Tab | LGui | | = | Enter|
|
||||||
|
* | | | | | |
|
||||||
|
* `--------------' `--------------'
|
||||||
|
*/
|
||||||
|
[SYMB] = LAYOUT_gergo(
|
||||||
|
_______, KC_HASH, KC_DLR, KC_LCBR, KC_RCBR, XXXXXXX, XXXXXXX, KC_ANGL, KC_ANGR, XXXXXXX, XXXXXXX, KC_PIPE,
|
||||||
|
_______, KC_EXLM, KC_AT, KC_LPRN, KC_RPRN, KC_GRV, XXXXXXX, XXXXXXX, KC_MINS, KC_AMPR, KC_PLUS, KC_ASTR, KC_SCLN, KC_QUOT,
|
||||||
|
_______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UNDS, KC_PIPE, KC_COMM, KC_DOT, KC_SLSH, KC_MINS,
|
||||||
|
_______, _______, _______, _______, _______, _______, KC_DEL, _______
|
||||||
|
),
|
||||||
|
/* Keymap 2: Pad/Function layer
|
||||||
|
*
|
||||||
|
* ,-------------------------------------------. ,-------------------------------------------.
|
||||||
|
* | | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | |
|
||||||
|
* |--------+------+------+------+------+------|------. .------|------+------+------+------+------+--------|
|
||||||
|
* | | F1 | F2 | F3 | F4 | F5 | F6 | | | PgUp | LEFT | UP | RIGHT| | |
|
||||||
|
* |--------+------+------+------+------+------|------| |------|------+------+------+------+------+--------|
|
||||||
|
* | | F7 | F8 | F9 | F10 | F11 | F12 | | |PgDown| HOME | DOWN | END | | |
|
||||||
|
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
|
* .----------. .----------. .-----------. .------.
|
||||||
|
* | LAlt | |SYMB/Space| | NUMB/Bksp | | MOUS |
|
||||||
|
* '----------' '----------' `-----------' '------'
|
||||||
|
* ,-------. ,-------.
|
||||||
|
* | | | |
|
||||||
|
* ,------|-------| |-------|------.
|
||||||
|
* | NUMB | | | | SYMB |
|
||||||
|
* | Tab | LGui | | = | Enter|
|
||||||
|
* | | | | | |
|
||||||
|
* `--------------' `--------------'
|
||||||
|
*/
|
||||||
|
[NUMB] = LAYOUT_gergo(
|
||||||
|
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, XXXXXXX,
|
||||||
|
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, XXXXXXX, KC_PGUP, KC_LEFT, KC_UP, KC_RIGHT, XXXXXXX, XXXXXXX,
|
||||||
|
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, KC_PGDN, KC_HOME, KC_DOWN, KC_END, XXXXXXX, XXXXXXX,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
/* Keymap 3: Mouse layer
|
||||||
|
*
|
||||||
|
* ,-------------------------------------------. ,-------------------------------------------.
|
||||||
|
* | | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | |
|
||||||
|
* |--------+------+------+------+------+------|------. .------|------+------+------+------+------+--------|
|
||||||
|
* | | F1 | F2 | F3 | F4 | F5 | F6 | | | | M_L | M_U | M_R | M_Clk| |
|
||||||
|
* |--------+------+------+------+------+------|------| |------|------+------+------+------+------+--------|
|
||||||
|
* | | F7 | F8 | F9 | F10 | F11 | F12 | | | | L_Clk| M_D | R_Clk| | |
|
||||||
|
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
|
* .----------. .----------. .-----------. .------.
|
||||||
|
* | LAlt | |SYMB/Space| | NUMB/Bksp | | MOUS |
|
||||||
|
* '----------' '----------' `-----------' '------'
|
||||||
|
* ,-------. ,-------.
|
||||||
|
* | | | |
|
||||||
|
* ,------|-------| |-------|------.
|
||||||
|
* | NUMB | | | | SYMB |
|
||||||
|
* | Tab | LGui | | = | Enter|
|
||||||
|
* | | | | | |
|
||||||
|
* `--------------' `--------------'
|
||||||
|
*/
|
||||||
|
[MOUS] = LAYOUT_gergo(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, KC_MS_L, KC_MS_U, KC_MS_R, KC_BTN3, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, KC_BTN1, KC_MS_D, KC_BTN2, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Keymap template
|
||||||
|
*
|
||||||
|
* ,-------------------------------------------. ,-------------------------------------------.
|
||||||
|
* | | | | | | | | | | | | | |
|
||||||
|
* |--------+------+------+------+------+------|------. .------|------+------+------+------+------+--------|
|
||||||
|
* | | | | | | | | | | | | | | | |
|
||||||
|
* |--------+------+------+------+------+------|------| |------|------+------+------+------+------+--------|
|
||||||
|
* | | | | | | | | | | | | | | | |
|
||||||
|
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
|
* .------. .------. .------. .-----.
|
||||||
|
* | | | | | | | |
|
||||||
|
* '------' '------' `------. '-----'
|
||||||
|
* ,-------. ,-------.
|
||||||
|
* | | | |
|
||||||
|
* ,------|-------| |-------|------.
|
||||||
|
* | | | | | |
|
||||||
|
* | | | | | |
|
||||||
|
* | | | | | |
|
||||||
|
* `--------------' `--------------'
|
||||||
|
[SYMB] = LAYOUT_gergo(
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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,8 @@
|
|||||||
|
This is a modified version of the default keymap for Gergo with some changes.
|
||||||
|
|
||||||
|
## Changes:
|
||||||
|
- Rehaul thumb keys. For my hand size, the L and R thumbs rest on space and backspace, and one finger outward, are tab and enter.
|
||||||
|
- = has its own dedicated key to facilitate typing "<space>=<space>", which is a very common trigram in programming.
|
||||||
|
- Change navigation into a T-shaped cluster and add Home and End keys. T-shaped, because it's similar to arrow key cluster and most keys are on the home row, while sharing the number layer.
|
||||||
|
- Separated mouse navigation into a separate layer (in favor of T-shaped arrows, which require 2 rows).
|
||||||
|
- Difficult-to-reach key positions are mostly unused.
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# make gergo:germ:dfu
|
||||||
|
# Make sure you have dfu-programmer installed!
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# Firmware options
|
||||||
|
BALLER = no # Enable to ball out
|
||||||
|
BALLSTEP = 20 # Multiple in px to move, multiplied by layer number
|
||||||
|
SCROLLSTEP = 1 # Lines to scroll with ball
|
||||||
|
MOUSEKEY_ENABLE = yes # Mouse keys, needed for baller
|
||||||
|
|
||||||
|
#Debug options
|
||||||
|
VERBOSE = yes
|
||||||
|
DEBUG_MATRIX_SCAN_RATE = no
|
||||||
|
DEBUG_BALLER = no
|
||||||
|
DEBUG_MATRIX = yes
|
||||||
|
|
||||||
|
# A bunch of stuff that you shouldn't touch unless you
|
||||||
|
# know what you're doing.
|
||||||
|
#
|
||||||
|
# No touchy, capiche?
|
||||||
|
SRC += matrix.c i2c_master.c
|
||||||
|
ifneq ($(strip $(BALLSTEP)),)
|
||||||
|
OPT_DEFS += -DTRKSTEP=$(strip $(BALLSTEP))
|
||||||
|
endif
|
||||||
|
ifneq ($(strip $(SCROLLSTEP)),)
|
||||||
|
OPT_DEFS += -DSCROLLSTEP=$(strip $(SCROLLSTEP))
|
||||||
|
endif
|
||||||
|
ifeq ($(strip $(BALLER)), yes)
|
||||||
|
POINTING_DEVICE_ENABLE = yes
|
||||||
|
OPT_DEFS += -DBALLER
|
||||||
|
endif
|
||||||
|
ifeq ($(strip $(DEBUG_BALLER)), yes)
|
||||||
|
OPT_DEFS += -DDEBUG_BALLER
|
||||||
|
endif
|
||||||
|
ifeq ($(strip $(DEBUG_MATRIX)), yes)
|
||||||
|
OPT_DEFS += -DDEBUG_MATRIX
|
||||||
|
endif
|
||||||
@@ -5,6 +5,13 @@ MCU = atmega32u4
|
|||||||
F_CPU = 8000000
|
F_CPU = 8000000
|
||||||
|
|
||||||
# Bootloader selection
|
# 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
|
BOOTLOADER = caterina
|
||||||
|
|
||||||
# Build Options
|
# Build Options
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
#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_STARTUP_MODE RGB_MATRIX_CYCLE_ALL
|
||||||
#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
|
||||||
@@ -35,10 +36,9 @@
|
|||||||
#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 DISABLE_RGB_MATRIX_CYCLE_ALL
|
|
||||||
#define DISABLE_RGB_MATRIX_RAINDROPS
|
#define DISABLE_RGB_MATRIX_RAINDROPS
|
||||||
#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
|
#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
|
||||||
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 160
|
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 255
|
||||||
#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
|
||||||
|
|||||||
@@ -20,9 +20,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#include "config_common.h"
|
#include "config_common.h"
|
||||||
|
|
||||||
/* USB Device descriptor parameter */
|
/* USB Device descriptor parameter */
|
||||||
#define VENDOR_ID 0xFEED
|
#define VENDOR_ID 0x4B42
|
||||||
#define PRODUCT_ID 0x6060
|
#define PRODUCT_ID 0x6067
|
||||||
#define DEVICE_VER 0x0001
|
#define DEVICE_VER 0x0002
|
||||||
#define MANUFACTURER KBDFans
|
#define MANUFACTURER KBDFans
|
||||||
#define PRODUCT KBD67v2
|
#define PRODUCT KBD67v2
|
||||||
#define DESCRIPTION 65% Keyboard
|
#define DESCRIPTION 65% Keyboard
|
||||||
|
|||||||
@@ -0,0 +1,58 @@
|
|||||||
|
/* Copyright 2018 jscatena88
|
||||||
|
*
|
||||||
|
* 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] = {
|
||||||
|
/* Keymap (Base Layer) Default Layer
|
||||||
|
* ,----------------------------------------------------------------.
|
||||||
|
* |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp | `~ |
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ |Del |
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Ctrl | A| S| D| F| G| H| J| K| L| ;| '|Return |PgUp|
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | Up|PgDn|
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Ctrl|Win |Alt | Space |Alt| FN|Ctrl|Lef|Dow|Rig |
|
||||||
|
* `----------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[0] = LAYOUT_65_ansi(
|
||||||
|
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV,
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
|
||||||
|
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
|
||||||
|
|
||||||
|
/* Keymap Fn Layer
|
||||||
|
* ,----------------------------------------------------------------.
|
||||||
|
* |~ `|F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12|Del |Ins |
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Caps | |Up | | | | | |PSc|SLk|Pau|Up | | | |
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* | |Lef|Dow|Rig| | | | |Hom|PUp|Lef|Rig| | |
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* | | | | | | | | |End|PDn|Dow| |PUp| |
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* | | | | | | | |Hom|PDn|End |
|
||||||
|
* `----------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
|
||||||
|
[1] = LAYOUT_65_ansi(
|
||||||
|
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_VOLU,
|
||||||
|
KC_CAPS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS, KC_VOLD,
|
||||||
|
KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS, KC_MUTE,
|
||||||
|
KC_TRNS, RGB_TOG, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_PGUP, KC_MPLY,
|
||||||
|
LCTL(KC_LALT), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END),
|
||||||
|
};
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
# Jscatena88's KBD67 Layout
|
||||||
|

|
||||||
|
|
||||||
|
This modifies the far right column on layer 1, adds RGB control to the second layer, and creates a CTRL+ALT button on the second layer for switching between Linux TTYs (this is the key labelled LCTL(LC_L), it is actually LCTL(KC_LALT) but the visualization software didn't support that)
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
#define DYNAMIC_KEYMAP_LAYER_COUNT 2
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/* Keymap (Base Layer) Default Layer
|
||||||
|
* ,----------------------------------------------------------------.
|
||||||
|
* |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp |Home|
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ |PgUp|
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Caps | A| S| D| F| G| H| J| K| L| ;| '|Return |PgDn|
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | Up|End |
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Ctrl|Win |Alt | Space |Alt| FN|Ctrl|Lef|Dow|Rig |
|
||||||
|
* `----------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[0] = LAYOUT_65_ansi(
|
||||||
|
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
|
||||||
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
|
||||||
|
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_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Keymap Fn Layer
|
||||||
|
* ,----------------------------------------------------------------.
|
||||||
|
* |~ `|F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12|Del |Ins |
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* | | |Up | | | | | |PSc|SLk|Pau|Up | | | |
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* | |Lef|Dow|Rig| | | | |Hom|PUp|Lef|Rig| | |
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* | | | | | | | | |End|PDn|Dow| |PUp| |
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* | | | | | | | |Hom|PDn|End |
|
||||||
|
* `----------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[1] = LAYOUT_65_ansi(
|
||||||
|
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS,
|
||||||
|
_______, _______, KC_UP, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, _______, _______,
|
||||||
|
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, KC_DOWN, _______, KC_PGUP, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
|
||||||
|
)
|
||||||
|
};
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
VIA_ENABLE = yes
|
||||||
|
LTO_ENABLE = yes
|
||||||
@@ -6,7 +6,7 @@ A fairly typical TKL
|
|||||||
|
|
||||||
Keyboard Maintainer: [ai03](https://github.com/ai03-2725) / [KBDfans](https://kbdfans.cn/)
|
Keyboard Maintainer: [ai03](https://github.com/ai03-2725) / [KBDfans](https://kbdfans.cn/)
|
||||||
Hardware Supported: KBD8X MKII PCB/case
|
Hardware Supported: KBD8X MKII PCB/case
|
||||||
Hardware Availability: [KBDfans](https://kbdfans.cn/collections/new-arrival/products/coming-soon-kbd8x-mkii-custom-mechanical-keyboard-kit)
|
Hardware Availability: [KBDfans](https://kbdfans.com/collections/90-kbd19x/products/gb-kbd8x-mkii-pcb)
|
||||||
|
|
||||||
Make example for this keyboard (after setting up your build environment):
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
|||||||
+40
-100
@@ -15,18 +15,17 @@ 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/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef CONFIG_H
|
#pragma once
|
||||||
#define CONFIG_H
|
|
||||||
|
|
||||||
#include "config_common.h"
|
#include "config_common.h"
|
||||||
|
|
||||||
/* USB Device descriptor parameter */
|
/* USB Device descriptor parameter */
|
||||||
#define VENDOR_ID 0xFEED
|
#define VENDOR_ID 0x530A
|
||||||
#define PRODUCT_ID 0x6060
|
#define PRODUCT_ID 0x6FFC
|
||||||
#define DEVICE_VER 0x0001
|
#define DEVICE_VER 0x0001
|
||||||
#define MANUFACTURER You
|
#define MANUFACTURER NPKC
|
||||||
#define PRODUCT kc60v2
|
#define PRODUCT KC60
|
||||||
#define DESCRIPTION A custom keyboard
|
#define DESCRIPTION QMK Firmware: KC60
|
||||||
|
|
||||||
/* key matrix size */
|
/* key matrix size */
|
||||||
#define MATRIX_ROWS 5
|
#define MATRIX_ROWS 5
|
||||||
@@ -41,119 +40,60 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
|
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
|
||||||
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Possible pins for columns include: F1 F0 E6 D7 D6 D4 C7 C6 B7 B5 B4 B3 B1 B0
|
|
||||||
// Pins for rows include: D0 D1 F6 F7 D5
|
|
||||||
// KC60 Version 2
|
|
||||||
#define MATRIX_ROW_PINS { D0, D1, F6, F7, D5 }
|
#define MATRIX_ROW_PINS { D0, D1, F6, F7, D5 }
|
||||||
#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B7, D4, B1, B0, B5, B4, D7, D6, B3 }
|
#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B7, D4, B1, B0, B5, B4, D7, D6, B3 }
|
||||||
#define UNUSED_PINS
|
#define UNUSED_PINS
|
||||||
|
|
||||||
#define BACKLIGHT_PIN B6
|
/* COL2ROW, ROW2COL*/
|
||||||
|
|
||||||
/* COL2ROW or ROW2COL */
|
|
||||||
#define DIODE_DIRECTION COL2ROW
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
#define BACKLIGHT_PIN B6
|
||||||
|
#define BACKLIGHT_BREATHING
|
||||||
|
#define BACKLIGHT_LEVELS 5
|
||||||
|
|
||||||
|
#ifdef RGBLIGHT_ENABLE
|
||||||
|
# define RGB_DI_PIN F5
|
||||||
|
# define RGBLED_NUM 16 // Number of LEDs. Change this to match your use case.
|
||||||
|
# define RGBLIGHT_HUE_STEP 8
|
||||||
|
# define RGBLIGHT_SAT_STEP 8
|
||||||
|
# define RGBLIGHT_VAL_STEP 8
|
||||||
|
# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
|
||||||
|
# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
|
||||||
|
/*== all animations enable ==*/
|
||||||
|
# define RGBLIGHT_ANIMATIONS
|
||||||
|
/*== or choose animations ==*/
|
||||||
|
// # define RGBLIGHT_EFFECT_BREATHING
|
||||||
|
// # define RGBLIGHT_EFFECT_RAINBOW_MOOD
|
||||||
|
// # define RGBLIGHT_EFFECT_RAINBOW_SWIRL
|
||||||
|
// # define RGBLIGHT_EFFECT_SNAKE
|
||||||
|
// # define RGBLIGHT_EFFECT_KNIGHT
|
||||||
|
// # define RGBLIGHT_EFFECT_CHRISTMAS
|
||||||
|
// # define RGBLIGHT_EFFECT_STATIC_GRADIENT
|
||||||
|
// # define RGBLIGHT_EFFECT_RGB_TEST
|
||||||
|
// # define RGBLIGHT_EFFECT_ALTERNATING
|
||||||
|
/*== customize breathing effect ==*/
|
||||||
|
/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
|
||||||
|
# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
|
||||||
|
/*==== use exp() and sin() ====*/
|
||||||
|
// # define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
|
||||||
|
// # define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||||
#define DEBOUNCE 5
|
#define DEBOUNCE 5
|
||||||
|
|
||||||
/* define if matrix has ghost (lacks anti-ghosting diodes) */
|
/* define if matrix has ghost (lacks anti-ghosting diodes) */
|
||||||
//#define MATRIX_HAS_GHOST
|
//#define MATRIX_HAS_GHOST
|
||||||
|
|
||||||
/* number of backlight levels */
|
|
||||||
#define BACKLIGHT_LEVELS 5
|
|
||||||
|
|
||||||
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||||
#define LOCKING_SUPPORT_ENABLE
|
#define LOCKING_SUPPORT_ENABLE
|
||||||
/* Locking resynchronize hack */
|
/* Locking resynchronize hack */
|
||||||
#define LOCKING_RESYNC_ENABLE
|
#define LOCKING_RESYNC_ENABLE
|
||||||
|
|
||||||
/*
|
|
||||||
* Force NKRO
|
|
||||||
*
|
|
||||||
* Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
|
|
||||||
* state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
|
|
||||||
* makefile for this to work.)
|
|
||||||
*
|
|
||||||
* If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
|
|
||||||
* until the next keyboard reset.
|
|
||||||
*
|
|
||||||
* NKRO may prevent your keystrokes from being detected in the BIOS, but it is
|
|
||||||
* fully operational during normal computer usage.
|
|
||||||
*
|
|
||||||
* For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
|
|
||||||
* or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
|
|
||||||
* bootmagic, NKRO mode will always be enabled until it is toggled again during a
|
|
||||||
* power-up.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
//#define FORCE_NKRO
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Magic Key Options
|
|
||||||
*
|
|
||||||
* Magic keys are hotkey commands that allow control over firmware functions of
|
|
||||||
* the keyboard. They are best used in combination with the HID Listen program,
|
|
||||||
* found here: https://www.pjrc.com/teensy/hid_listen.html
|
|
||||||
*
|
|
||||||
* The options below allow the magic key functionality to be changed. This is
|
|
||||||
* useful if your keyboard/keypad is missing keys and you want magic key support.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* control how magic key switches layers */
|
|
||||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
|
|
||||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
|
|
||||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
|
|
||||||
|
|
||||||
/* override magic key keymap */
|
|
||||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
|
|
||||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
|
|
||||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
|
|
||||||
//#define MAGIC_KEY_HELP1 H
|
|
||||||
//#define MAGIC_KEY_HELP2 SLASH
|
|
||||||
//#define MAGIC_KEY_DEBUG D
|
|
||||||
//#define MAGIC_KEY_DEBUG_MATRIX X
|
|
||||||
//#define MAGIC_KEY_DEBUG_KBD K
|
|
||||||
//#define MAGIC_KEY_DEBUG_MOUSE M
|
|
||||||
//#define MAGIC_KEY_VERSION V
|
|
||||||
//#define MAGIC_KEY_STATUS S
|
|
||||||
//#define MAGIC_KEY_CONSOLE C
|
|
||||||
//#define MAGIC_KEY_LAYER0_ALT1 ESC
|
|
||||||
//#define MAGIC_KEY_LAYER0_ALT2 GRAVE
|
|
||||||
//#define MAGIC_KEY_LAYER0 0
|
|
||||||
//#define MAGIC_KEY_LAYER1 1
|
|
||||||
//#define MAGIC_KEY_LAYER2 2
|
|
||||||
//#define MAGIC_KEY_LAYER3 3
|
|
||||||
//#define MAGIC_KEY_LAYER4 4
|
|
||||||
//#define MAGIC_KEY_LAYER5 5
|
|
||||||
//#define MAGIC_KEY_LAYER6 6
|
|
||||||
//#define MAGIC_KEY_LAYER7 7
|
|
||||||
//#define MAGIC_KEY_LAYER8 8
|
|
||||||
//#define MAGIC_KEY_LAYER9 9
|
|
||||||
//#define MAGIC_KEY_BOOTLOADER PAUSE
|
|
||||||
//#define MAGIC_KEY_LOCK CAPS
|
|
||||||
//#define MAGIC_KEY_EEPROM E
|
|
||||||
//#define MAGIC_KEY_NKRO N
|
|
||||||
//#define MAGIC_KEY_SLEEP_LED Z
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Feature disable options
|
|
||||||
* These options are also useful to firmware size reduction.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* disable debug print */
|
|
||||||
//#define NO_DEBUG
|
|
||||||
|
|
||||||
/* disable print */
|
|
||||||
//#define NO_PRINT
|
|
||||||
|
|
||||||
/* disable action features */
|
/* disable action features */
|
||||||
//#define NO_ACTION_LAYER
|
//#define NO_ACTION_LAYER
|
||||||
//#define NO_ACTION_TAPPING
|
//#define NO_ACTION_TAPPING
|
||||||
//#define NO_ACTION_ONESHOT
|
//#define NO_ACTION_ONESHOT
|
||||||
//#define NO_ACTION_MACRO
|
//#define NO_ACTION_MACRO
|
||||||
//#define NO_ACTION_FUNCTION
|
//#define NO_ACTION_FUNCTION
|
||||||
|
|
||||||
#endif
|
|
||||||
+210
-14
@@ -1,16 +1,212 @@
|
|||||||
{
|
{
|
||||||
"keyboard_name": "KC60",
|
"keyboard_name": "KC60",
|
||||||
"url": "",
|
"url": "",
|
||||||
"maintainer": "qmk",
|
"maintainer": "qmk",
|
||||||
"width": 15,
|
"width": 15,
|
||||||
"height": 5,
|
"height": 5,
|
||||||
"layouts": {
|
"layouts": {
|
||||||
"LAYOUT": {
|
"LAYOUT_all": {
|
||||||
"layout": [{"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":2, "w":1.25}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":5}, {"x":8.75, "y":4, "w":1.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Win", "x":11.25, "y":4, "w":1.25}, {"label":"Menu", "x":12.5, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}]
|
"layout": [
|
||||||
},
|
{"label":"Esc", "x":0, "y":0},
|
||||||
|
{"label":"1", "x":1, "y":0},
|
||||||
"LAYOUT_60_ansi": {
|
{"label":"2", "x":2, "y":0},
|
||||||
"layout": [{"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Win", "x":11.25, "y":4, "w":1.25}, {"label":"Menu", "x":12.5, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}]
|
{"label":"3", "x":3, "y":0},
|
||||||
}
|
{"label":"4", "x":4, "y":0},
|
||||||
}
|
{"label":"5", "x":5, "y":0},
|
||||||
|
{"label":"6", "x":6, "y":0},
|
||||||
|
{"label":"7", "x":7, "y":0},
|
||||||
|
{"label":"8", "x":8, "y":0},
|
||||||
|
{"label":"9", "x":9, "y":0},
|
||||||
|
{"label":"0", "x":10, "y":0},
|
||||||
|
{"label":"-", "x":11, "y":0},
|
||||||
|
{"label":"=", "x":12, "y":0},
|
||||||
|
{"label":"Backspace", "x":13, "y":0},
|
||||||
|
{"label":"`", "x":14, "y":0},
|
||||||
|
{"label":"Tab", "x":0, "y":1, "w":1.5},
|
||||||
|
{"label":"Q", "x":1.5, "y":1},
|
||||||
|
{"label":"W", "x":2.5, "y":1},
|
||||||
|
{"label":"E", "x":3.5, "y":1},
|
||||||
|
{"label":"R", "x":4.5, "y":1},
|
||||||
|
{"label":"T", "x":5.5, "y":1},
|
||||||
|
{"label":"Y", "x":6.5, "y":1},
|
||||||
|
{"label":"U", "x":7.5, "y":1},
|
||||||
|
{"label":"I", "x":8.5, "y":1},
|
||||||
|
{"label":"O", "x":9.5, "y":1},
|
||||||
|
{"label":"P", "x":10.5, "y":1},
|
||||||
|
{"label":"[", "x":11.5, "y":1},
|
||||||
|
{"label":"]", "x":12.5, "y":1},
|
||||||
|
{"label":"\\", "x":13.5, "y":1, "w":1.5},
|
||||||
|
{"label":"CapsLock", "x":0, "y":2, "w":1.75},
|
||||||
|
{"label":"A", "x":1.75, "y":2},
|
||||||
|
{"label":"S", "x":2.75, "y":2},
|
||||||
|
{"label":"D", "x":3.75, "y":2},
|
||||||
|
{"label":"F", "x":4.75, "y":2},
|
||||||
|
{"label":"G", "x":5.75, "y":2},
|
||||||
|
{"label":"H", "x":6.75, "y":2},
|
||||||
|
{"label":"J", "x":7.75, "y":2},
|
||||||
|
{"label":"K", "x":8.75, "y":2},
|
||||||
|
{"label":"L", "x":9.75, "y":2},
|
||||||
|
{"label":";", "x":10.75, "y":2},
|
||||||
|
{"label":"'", "x":11.75, "y":2},
|
||||||
|
{"label":"ISO#", "x":12.75, "y":2},
|
||||||
|
{"label":"Enter", "x":13.75, "y":2, "w":1.25},
|
||||||
|
{"label":"Shift", "x":0, "y":3, "w":1.25},
|
||||||
|
{"label":"ISO\\", "x":1.25, "y":3},
|
||||||
|
{"label":"Z", "x":2.25, "y":3},
|
||||||
|
{"label":"X", "x":3.25, "y":3},
|
||||||
|
{"label":"C", "x":4.25, "y":3},
|
||||||
|
{"label":"V", "x":5.25, "y":3},
|
||||||
|
{"label":"B", "x":6.25, "y":3},
|
||||||
|
{"label":"N", "x":7.25, "y":3},
|
||||||
|
{"label":"M", "x":8.25, "y":3},
|
||||||
|
{"label":",", "x":9.25, "y":3},
|
||||||
|
{"label":".", "x":10.25, "y":3},
|
||||||
|
{"label":"/", "x":11.25, "y":3},
|
||||||
|
{"label":"Shift", "x":12.25, "y":3, "w":1.75},
|
||||||
|
{"label":"HHKBFn", "x":14, "y":3},
|
||||||
|
{"label":"Ctrl", "x":0, "y":4, "w":1.25},
|
||||||
|
{"label":"GUI", "x":1.25, "y":4, "w":1.25},
|
||||||
|
{"label":"Alt", "x":2.5, "y":4, "w":1.25},
|
||||||
|
{"label":"Space", "x":3.75, "y":4, "w":6.25},
|
||||||
|
{"label":"Alt", "x":10, "y":4, "w":1.25},
|
||||||
|
{"label":"GUI", "x":11.25, "y":4, "w":1.25},
|
||||||
|
{"label":"Menu", "x":12.5, "y":4, "w":1.25},
|
||||||
|
{"label":"Ctrl", "x":13.75, "y":4, "w":1.25}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT": {
|
||||||
|
"layout": [
|
||||||
|
{"label":"K00", "x":0, "y":0},
|
||||||
|
{"label":"K01", "x":1, "y":0},
|
||||||
|
{"label":"K02", "x":2, "y":0},
|
||||||
|
{"label":"K03", "x":3, "y":0},
|
||||||
|
{"label":"K04", "x":4, "y":0},
|
||||||
|
{"label":"K05", "x":5, "y":0},
|
||||||
|
{"label":"K06", "x":6, "y":0},
|
||||||
|
{"label":"K07", "x":7, "y":0},
|
||||||
|
{"label":"K08", "x":8, "y":0},
|
||||||
|
{"label":"K09", "x":9, "y":0},
|
||||||
|
{"label":"K0A", "x":10, "y":0},
|
||||||
|
{"label":"K0B", "x":11, "y":0},
|
||||||
|
{"label":"K0C", "x":12, "y":0},
|
||||||
|
{"label":"K0D", "x":13, "y":0},
|
||||||
|
{"label":"K10", "x":0, "y":1, "w":1.5},
|
||||||
|
{"label":"K11", "x":1.5, "y":1},
|
||||||
|
{"label":"K12", "x":2.5, "y":1},
|
||||||
|
{"label":"K13", "x":3.5, "y":1},
|
||||||
|
{"label":"K14", "x":4.5, "y":1},
|
||||||
|
{"label":"K15", "x":5.5, "y":1},
|
||||||
|
{"label":"K16", "x":6.5, "y":1},
|
||||||
|
{"label":"K17", "x":7.5, "y":1},
|
||||||
|
{"label":"K18", "x":8.5, "y":1},
|
||||||
|
{"label":"K19", "x":9.5, "y":1},
|
||||||
|
{"label":"K1A", "x":10.5, "y":1},
|
||||||
|
{"label":"K1B", "x":11.5, "y":1},
|
||||||
|
{"label":"K1C", "x":12.5, "y":1},
|
||||||
|
{"label":"K1D", "x":13.5, "y":1, "w":1.5},
|
||||||
|
{"label":"K20", "x":0, "y":2, "w":1.75},
|
||||||
|
{"label":"K21", "x":1.75, "y":2},
|
||||||
|
{"label":"K22", "x":2.75, "y":2},
|
||||||
|
{"label":"K23", "x":3.75, "y":2},
|
||||||
|
{"label":"K24", "x":4.75, "y":2},
|
||||||
|
{"label":"K25", "x":5.75, "y":2},
|
||||||
|
{"label":"K26", "x":6.75, "y":2},
|
||||||
|
{"label":"K27", "x":7.75, "y":2},
|
||||||
|
{"label":"K28", "x":8.75, "y":2},
|
||||||
|
{"label":"K29", "x":9.75, "y":2},
|
||||||
|
{"label":"K2A", "x":10.75, "y":2},
|
||||||
|
{"label":"K2B", "x":11.75, "y":2},
|
||||||
|
{"label":"K2C", "x":12.75, "y":2},
|
||||||
|
{"label":"K2D", "x":13.75, "y":2, "w":1.25},
|
||||||
|
{"label":"K30", "x":0, "y":3, "w":1.25},
|
||||||
|
{"label":"K31", "x":1.25, "y":3},
|
||||||
|
{"label":"K32", "x":2.25, "y":3},
|
||||||
|
{"label":"K33", "x":3.25, "y":3},
|
||||||
|
{"label":"K34", "x":4.25, "y":3},
|
||||||
|
{"label":"K35", "x":5.25, "y":3},
|
||||||
|
{"label":"K36", "x":6.25, "y":3},
|
||||||
|
{"label":"K37", "x":7.25, "y":3},
|
||||||
|
{"label":"K38", "x":8.25, "y":3},
|
||||||
|
{"label":"K39", "x":9.25, "y":3},
|
||||||
|
{"label":"K3A", "x":10.25, "y":3},
|
||||||
|
{"label":"K3B", "x":11.25, "y":3},
|
||||||
|
{"label":"K3C", "x":12.25, "y":3, "w":1.75},
|
||||||
|
{"label":"K3D", "x":14, "y":3},
|
||||||
|
{"label":"K40", "x":0, "y":4, "w":1.25},
|
||||||
|
{"label":"K41", "x":1.25, "y":4, "w":1.25},
|
||||||
|
{"label":"K42", "x":2.5, "y":4, "w":1.25},
|
||||||
|
{"label":"K45", "x":3.75, "y":4, "w":6.25},
|
||||||
|
{"label":"K49", "x":14, "y":0},
|
||||||
|
{"label":"K4A", "x":10, "y":4, "w":1.25},
|
||||||
|
{"label":"K4B", "x":11.25, "y":4, "w":1.25},
|
||||||
|
{"label":"K4C", "x":12.5, "y":4, "w":1.25},
|
||||||
|
{"label":"K4D", "x":13.75, "y":4, "w":1.25}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_60_ansi": {
|
||||||
|
"layout": [
|
||||||
|
{"label":"~", "x":0, "y":0},
|
||||||
|
{"label":"1", "x":1, "y":0},
|
||||||
|
{"label":"2", "x":2, "y":0},
|
||||||
|
{"label":"3", "x":3, "y":0},
|
||||||
|
{"label":"4", "x":4, "y":0},
|
||||||
|
{"label":"5", "x":5, "y":0},
|
||||||
|
{"label":"6", "x":6, "y":0},
|
||||||
|
{"label":"7", "x":7, "y":0},
|
||||||
|
{"label":"8", "x":8, "y":0},
|
||||||
|
{"label":"9", "x":9, "y":0},
|
||||||
|
{"label":"0", "x":10, "y":0},
|
||||||
|
{"label":"-", "x":11, "y":0},
|
||||||
|
{"label":"=", "x":12, "y":0},
|
||||||
|
{"label":"Backspace", "x":13, "y":0, "w":2},
|
||||||
|
{"label":"Tab", "x":0, "y":1, "w":1.5},
|
||||||
|
{"label":"Q", "x":1.5, "y":1},
|
||||||
|
{"label":"W", "x":2.5, "y":1},
|
||||||
|
{"label":"E", "x":3.5, "y":1},
|
||||||
|
{"label":"R", "x":4.5, "y":1},
|
||||||
|
{"label":"T", "x":5.5, "y":1},
|
||||||
|
{"label":"Y", "x":6.5, "y":1},
|
||||||
|
{"label":"U", "x":7.5, "y":1},
|
||||||
|
{"label":"I", "x":8.5, "y":1},
|
||||||
|
{"label":"O", "x":9.5, "y":1},
|
||||||
|
{"label":"P", "x":10.5, "y":1},
|
||||||
|
{"label":"[", "x":11.5, "y":1},
|
||||||
|
{"label":"]", "x":12.5, "y":1},
|
||||||
|
{"label":"\\", "x":13.5, "y":1, "w":1.5},
|
||||||
|
{"label":"CapsLock", "x":0, "y":2, "w":1.75},
|
||||||
|
{"label":"A", "x":1.75, "y":2},
|
||||||
|
{"label":"S", "x":2.75, "y":2},
|
||||||
|
{"label":"D", "x":3.75, "y":2},
|
||||||
|
{"label":"F", "x":4.75, "y":2},
|
||||||
|
{"label":"G", "x":5.75, "y":2},
|
||||||
|
{"label":"H", "x":6.75, "y":2},
|
||||||
|
{"label":"J", "x":7.75, "y":2},
|
||||||
|
{"label":"K", "x":8.75, "y":2},
|
||||||
|
{"label":"L", "x":9.75, "y":2},
|
||||||
|
{"label":";", "x":10.75, "y":2},
|
||||||
|
{"label":"'", "x":11.75, "y":2},
|
||||||
|
{"label":"Enter", "x":12.75, "y":2, "w":2.25},
|
||||||
|
{"label":"Shift", "x":0, "y":3, "w":2.25},
|
||||||
|
{"label":"Z", "x":2.25, "y":3},
|
||||||
|
{"label":"X", "x":3.25, "y":3},
|
||||||
|
{"label":"C", "x":4.25, "y":3},
|
||||||
|
{"label":"V", "x":5.25, "y":3},
|
||||||
|
{"label":"B", "x":6.25, "y":3},
|
||||||
|
{"label":"N", "x":7.25, "y":3},
|
||||||
|
{"label":"M", "x":8.25, "y":3},
|
||||||
|
{"label":",", "x":9.25, "y":3},
|
||||||
|
{"label":".", "x":10.25, "y":3},
|
||||||
|
{"label":"/", "x":11.25, "y":3},
|
||||||
|
{"label":"Shift", "x":12.25, "y":3, "w":2.75},
|
||||||
|
{"label":"Ctrl", "x":0, "y":4, "w":1.25},
|
||||||
|
{"label":"Win", "x":1.25, "y":4, "w":1.25},
|
||||||
|
{"label":"Alt", "x":2.5, "y":4, "w":1.25},
|
||||||
|
{"label":"Space", "x":3.75, "y":4, "w":6.25},
|
||||||
|
{"label":"Alt", "x":10, "y":4, "w":1.25},
|
||||||
|
{"label":"Win", "x":11.25, "y":4, "w":1.25},
|
||||||
|
{"label":"Menu", "x":12.5, "y":4, "w":1.25},
|
||||||
|
{"label":"Ctrl", "x":13.75, "y":4, "w":1.25}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+75
-92
@@ -1,25 +1,53 @@
|
|||||||
#ifndef KC60_H
|
#pragma once
|
||||||
#define KC60_H
|
|
||||||
|
|
||||||
#include "quantum.h"
|
#include "quantum.h"
|
||||||
|
|
||||||
// K49 key is for the key at row 1 and column 15 when you split the backspace in 2 1U key.
|
/* LAYOUT_all
|
||||||
|
* ,-----------------------------------------------------------.
|
||||||
|
* |00 |01 |02 |03 |04 |05 |06 |07 |08 |09 |0A |0B |0C |0D |49 |
|
||||||
|
* |-----------------------------------------------------------| ,-----.
|
||||||
|
* |10 |11 |12 |13 |14 |15 |16 |17 |18 |19 |1A |1B |1C |1D | | |
|
||||||
|
* |-----------------------------------------------------------| ,---. |
|
||||||
|
* |20 |21 |22 |23 |24 |25 |26 |17 |28 |29 |2A |2B |2D | |2C |2D |
|
||||||
|
* |-----------------------------------------------------------| `--------'
|
||||||
|
* |30 |31 |32 |33 |34 |35 |36 |37 |38 |39 |3A |3B |3D |3C |
|
||||||
|
* |-----------------------------------------------------------|
|
||||||
|
* |40 |41 |42 | 45 |4A |4B |4C |4D |
|
||||||
|
* `-----------------------------------------------------------'
|
||||||
|
* 2u Backspace = K0D
|
||||||
|
* 2.25u left Shift = K30
|
||||||
|
* 2.75u right Shift = K3D
|
||||||
|
*/
|
||||||
|
#define LAYOUT_all( \
|
||||||
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K49, \
|
||||||
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
|
||||||
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \
|
||||||
|
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3C, \
|
||||||
|
K40, K41, K42, K45, K4A, K4B, K4C, K4D \
|
||||||
|
) { \
|
||||||
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
|
||||||
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
|
||||||
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
|
||||||
|
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
|
||||||
|
{ K40, K41, K42, KC_NO, KC_NO, K45, KC_NO, KC_NO, KC_NO, K49, K4A, K4B, K4C, K4D } \
|
||||||
|
}
|
||||||
|
|
||||||
// This a shortcut to help you visually see your layout.
|
/* LAYOUT
|
||||||
// The first section contains all of the arguements
|
* Present for backwards compatibility with older keymaps. The commit that added
|
||||||
// The second converts the arguments into a multi-dimensional array
|
* split Backspace support put the right 1u key of the split on the bottom row,
|
||||||
/*
|
* next to right Alt. The arguments for 1.75/1u right Shift are also in reverse
|
||||||
* ,-----------------------------------------------------------------------------------------.
|
* order.
|
||||||
* | K00 | K01 | K02 | K03 | K04 | K05 | K06 | K07 | K08 | K09 | K0A | K0B | K0C | K0D | K49 |
|
* ,-----------------------------------------------------------.
|
||||||
* |-----------------------------------------------------------------------------------------+
|
* |00 |01 |02 |03 |04 |05 |06 |07 |08 |09 |0A |0B |0C |0D |49 |
|
||||||
* | K10 | K11 | K12 | K13 | K14 | K15 | K16 | K17 | K18 | K19 | K1A | K1B | K1C | K1D |
|
* |-----------------------------------------------------------| ,-----.
|
||||||
* |-----------------------------------------------------------------------------------------+
|
* |10 |11 |12 |13 |14 |15 |16 |17 |18 |19 |1A |1B |1C |1D | | |
|
||||||
* | K20 | K21 | K22 | K23 | K24 | K25 | K26 | K17 | K28 | K29 | K2A | K2B | K2C |
|
* |-----------------------------------------------------------| ,---. |
|
||||||
* |-----------------------------------------------------------------------------------------+
|
* |20 |21 |22 |23 |24 |25 |26 |17 |28 |29 |2A |2B |2D | |2C |2D |
|
||||||
* | K30 | K32 | K33 | K34 | K35 | K36 | K37 | K38 | K39 | K3A | K3B | K3D | K3C |
|
* |-----------------------------------------------------------| `--------'
|
||||||
* |-----------------------------------------------------------------------------------------+
|
* |30 |31 |32 |33 |34 |35 |36 |37 |38 |39 |3A |3B |3D |3C |
|
||||||
* | K40 | K41 | K42 | K45 | K4A | K4B | K4C | K4D |
|
* |-----------------------------------------------------------|
|
||||||
* `-----------------------------------------------------------------------------------------'
|
* |40 |41 |42 | 45 |4A |4B |4C |4D |
|
||||||
|
* `-----------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
#define LAYOUT( \
|
#define LAYOUT( \
|
||||||
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
|
||||||
@@ -27,82 +55,37 @@
|
|||||||
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \
|
||||||
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
|
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
|
||||||
K40, K41, K42, K45, K49, K4A, K4B, K4C, K4D \
|
K40, K41, K42, K45, K49, K4A, K4B, K4C, K4D \
|
||||||
) { \
|
) LAYOUT_all( \
|
||||||
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, }, \
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K49, \
|
||||||
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
|
||||||
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \
|
||||||
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
|
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3C, \
|
||||||
{ K40, K41, K42, KC_NO, KC_NO, K45, KC_NO, KC_NO, KC_NO, K49, K4A, K4B, K4C, K4D } \
|
K40, K41, K42, K45, K4A, K4B, K4C, K4D \
|
||||||
}
|
)
|
||||||
|
|
||||||
/* Default layout
|
/* LAYOUT_60_ansi
|
||||||
* ,-----------------------------------------------------------------------------------------.
|
* ,-----------------------------------------------------------.
|
||||||
* | K00 | K01 | K02 | K03 | K04 | K05 | K06 | K07 | K08 | K09 | K0A | K0B | K0C | K0D |
|
* |00 |01 |02 |03 |04 |05 |06 |07 |08 |09 |0A |0B |0C |0D |
|
||||||
* |-----------------------------------------------------------------------------------------+
|
* |-----------------------------------------------------------|
|
||||||
* | K10 | K11 | K12 | K13 | K14 | K15 | K16 | K17 | K18 | K19 | K1A | K1B | K1C | K1D |
|
* |10 |11 |12 |13 |14 |15 |16 |17 |18 |19 |1A |1B |1C |1D |
|
||||||
* |-----------------------------------------------------------------------------------------+
|
* |-----------------------------------------------------------|
|
||||||
* | K20 | K21 | K22 | K23 | K24 | K25 | K26 | K17 | K28 | K29 | K2A | K2B | K2D |
|
* |20 |21 |22 |23 |24 |25 |26 |17 |28 |29 |2A |2B |2D |
|
||||||
* |-----------------------------------------------------------------------------------------+
|
* |-----------------------------------------------------------|
|
||||||
* | K30 | K32 | K33 | K34 | K35 | K36 | K37 | K38 | K39 | K3A | K3B | K3D |
|
* |30 |32 |33 |34 |35 |36 |37 |38 |39 |3A |3B |3D |
|
||||||
* |-----------------------------------------------------------------------------------------+
|
* |-----------------------------------------------------------|
|
||||||
* | K40 | K41 | K42 | K45 | K4A | K4B | K4C | K4D |
|
* |40 |41 |42 | 45 |4A |4B |4C |4D |
|
||||||
* `-----------------------------------------------------------------------------------------'
|
* `-----------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define LAYOUT_60_ansi( \
|
#define LAYOUT_60_ansi( \
|
||||||
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
|
||||||
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
|
||||||
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
|
||||||
K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \
|
K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \
|
||||||
K40, K41, K42, K45, K4A, K4B, K4C, K4D \
|
K40, K41, K42, K45, K4A, K4B, K4C, K4D \
|
||||||
) { \
|
) { \
|
||||||
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
|
||||||
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
|
||||||
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D }, \
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D }, \
|
||||||
{ K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D }, \
|
{ K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D }, \
|
||||||
{ K40, K41, K42, KC_NO, KC_NO, K45, KC_NO, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D } \
|
{ K40, K41, K42, KC_NO, KC_NO, K45, KC_NO, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D } \
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Mini Lshift
|
|
||||||
* ,-----------------------------------------------------------------------------------------.
|
|
||||||
* | K00 | K01 | K02 | K03 | K04 | K05 | K06 | K07 | K08 | K09 | K0A | K0B | K0C | K0D |
|
|
||||||
* |-----------------------------------------------------------------------------------------+
|
|
||||||
* | K10 | K11 | K12 | K13 | K14 | K15 | K16 | K17 | K18 | K19 | K1A | K1B | K1C | K1D |
|
|
||||||
* |-----------------------------------------------------------------------------------------+
|
|
||||||
* | K20 | K21 | K22 | K23 | K24 | K25 | K26 | K17 | K28 | K29 | K2A | K2B | K2C |
|
|
||||||
* |-----------------------------------------------------------------------------------------+
|
|
||||||
* | K30 |K31| K32 | K33 | K34 | K35 | K36 | K37 | K38 | K39 | K3A | K3B | K3C |
|
|
||||||
* |-----------------------------------------------------------------------------------------+
|
|
||||||
* | K40 | K41 | K42 | K45 | K4A | K4B | K4C | K4D |
|
|
||||||
* `-----------------------------------------------------------------------------------------'
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Mini Rshift
|
|
||||||
* ,-----------------------------------------------------------------------------------------.
|
|
||||||
* | K00 | K01 | K02 | K03 | K04 | K05 | K06 | K07 | K08 | K09 | K0A | K0B | K0C | K0D |
|
|
||||||
* |-----------------------------------------------------------------------------------------+
|
|
||||||
* | K10 | K11 | K12 | K13 | K14 | K15 | K16 | K17 | K18 | K19 | K1A | K1B | K1C | K1D |
|
|
||||||
* |-----------------------------------------------------------------------------------------+
|
|
||||||
* | K20 | K21 | K22 | K23 | K24 | K25 | K26 | K17 | K28 | K29 | K2A | K2B | K2C |
|
|
||||||
* |-----------------------------------------------------------------------------------------+
|
|
||||||
* | K30 | K32 | K33 | K34 | K35 | K36 | K37 | K38 | K39 | K3A | K3B | K3C | K3D |
|
|
||||||
* |-----------------------------------------------------------------------------------------+
|
|
||||||
* | K40 | K41 | K42 | K45 | K4A | K4B | K4C | K4D |
|
|
||||||
* `-----------------------------------------------------------------------------------------'
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Mini Enter
|
|
||||||
* ,-----------------------------------------------------------------------------------------.
|
|
||||||
* | K00 | K01 | K02 | K03 | K04 | K05 | K06 | K07 | K08 | K09 | K0A | K0B | K0C | K0D |
|
|
||||||
* |-----------------------------------------------------------------------------------------+
|
|
||||||
* | K10 | K11 | K12 | K13 | K14 | K15 | K16 | K17 | K18 | K19 | K1A | K1B | K1C | K1D |
|
|
||||||
* |-----------------------------------------------------------------------------------------+
|
|
||||||
* | K20 | K21 | K22 | K23 | K24 | K25 | K26 | K17 | K28 | K29 | K2A | K2B | K2C | K2D |
|
|
||||||
* |-----------------------------------------------------------------------------------------+
|
|
||||||
* | K30 | K32 | K33 | K34 | K35 | K36 | K37 | K38 | K39 | K3A | K3B | K3C |
|
|
||||||
* |-----------------------------------------------------------------------------------------+
|
|
||||||
* | K40 | K41 | K42 | K45 | K4A | K4B | K4C | K4D |
|
|
||||||
* `-----------------------------------------------------------------------------------------'
|
|
||||||
*/
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -1,12 +1,18 @@
|
|||||||
|
|
||||||
#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( /* Basic QWERTY */
|
[0] = LAYOUT_all(
|
||||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
|
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV,
|
||||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
|
||||||
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_NO, 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_NUHS, KC_ENT,
|
||||||
KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_RSFT, \
|
KC_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, LT(1,KC_APP),
|
||||||
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_NO, KC_RGUI, KC_RALT, KC_RCTL, RESET \
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, LT(1,KC_APP), KC_RCTL
|
||||||
),
|
),
|
||||||
|
[1] = LAYOUT_all(
|
||||||
|
RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX,
|
||||||
|
XXXXXXX, XXXXXXX, KC_UP, XXXXXXX, XXXXXXX, XXXXXXX, KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_PSCR, KC_SLCK, KC_PAUS,
|
||||||
|
XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
_______, XXXXXXX, XXXXXXX, BL_DEC, BL_TOGG, BL_INC, BL_BRTG, XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, _______, _______,
|
||||||
|
_______, _______, _______, XXXXXXX, _______, _______, _______, _______
|
||||||
|
),
|
||||||
};
|
};
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
# The default keymap for KC60
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Both `Fn` keys trigger `KC_APP` when tapped, and activate Layer 1 when held.
|
||||||
@@ -1,9 +1,4 @@
|
|||||||
#include "../../config.h"
|
#pragma once
|
||||||
|
|
||||||
/* WS2812B RGB Underglow LED */
|
#undef RGBLED_NUM
|
||||||
#define RGB_DI_PIN F5 // Based on wiring depicted in ws2812_wiring.jpg
|
#define RGBLED_NUM 16 // Number of LEDs. Change this to match your use case.
|
||||||
#define RGBLIGHT_ANIMATIONS
|
|
||||||
#define RGBLED_NUM 16 // Number of LEDs. Change this to match your use case.
|
|
||||||
#define RGBLIGHT_HUE_STEP 8
|
|
||||||
#define RGBLIGHT_SAT_STEP 8
|
|
||||||
#define RGBLIGHT_VAL_STEP 8
|
|
||||||
@@ -1,96 +1,18 @@
|
|||||||
|
|
||||||
#include QMK_KEYBOARD_H
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
// Used for SHIFT_ESC
|
|
||||||
#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
|
|
||||||
|
|
||||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
|
||||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
|
||||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
|
||||||
// entirely and just use numbers.
|
|
||||||
#define _BL 0
|
|
||||||
#define _FL 1
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
/* Keymap _BL: (Base Layer) Default Layer
|
[0] = LAYOUT_all(
|
||||||
* ,-----------------------------------------------------------.
|
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV,
|
||||||
* |Esc~| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp |
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
|
||||||
* |-----------------------------------------------------------|
|
KC_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,
|
||||||
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ |
|
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, LT(1,KC_APP),
|
||||||
* |-----------------------------------------------------------|
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, LT(1,KC_APP), KC_RCTL
|
||||||
* |CAPS | A| S| D| F| G| H| J| K| L| ;| '|Return |
|
),
|
||||||
* |-----------------------------------------------------------|
|
[1] = LAYOUT_all(
|
||||||
* |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |
|
RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX,
|
||||||
* |-----------------------------------------------------------|
|
XXXXXXX, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_PSCR, KC_SLCK, KC_PAUS,
|
||||||
* |Ctrl|Gui |Alt | Space |Alt |Gui |FN |Ctrl |
|
XXXXXXX, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
* `-----------------------------------------------------------'
|
_______, XXXXXXX, XXXXXXX, BL_DEC, BL_TOGG, BL_INC, BL_BRTG, XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, _______, _______,
|
||||||
*/
|
_______, _______, _______, XXXXXXX, _______, _______, _______, _______
|
||||||
[_BL] = LAYOUT(
|
),
|
||||||
F(0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
|
|
||||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
|
|
||||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_NO, KC_ENT, \
|
|
||||||
KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_NO, KC_RSFT, \
|
|
||||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_NO, KC_RALT,KC_RGUI, MO(_FL), KC_RCTL),
|
|
||||||
|
|
||||||
/* Keymap _FL: Function Layer
|
|
||||||
* ,-----------------------------------------------------------.
|
|
||||||
* |~ |F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12| DEL |
|
|
||||||
* |-----------------------------------------------------------|
|
|
||||||
* | | |UP | | | | | | | | |BL-|BL+|BL |
|
|
||||||
* |-----------------------------------------------------------|
|
|
||||||
* | |LFT|DWN|RGT| | | | | | | | |
|
|
||||||
* |-----------------------------------------------------------|
|
|
||||||
* | |FN1|FN2|FN3|FN4|FN5|FN6|FN7|FN8| | | |
|
|
||||||
* |-----------------------------------------------------------|
|
|
||||||
* | | | | | | | |RSET|
|
|
||||||
* `-----------------------------------------------------------'
|
|
||||||
*/
|
|
||||||
[_FL] = LAYOUT(
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
|
||||||
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_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_INC, BL_TOGG, \
|
|
||||||
KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
|
|
||||||
KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, RESET),
|
|
||||||
#else
|
|
||||||
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_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_INC, BL_TOGG, \
|
|
||||||
KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, RESET),
|
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
enum function_id {
|
|
||||||
SHIFT_ESC,
|
|
||||||
};
|
|
||||||
|
|
||||||
const uint16_t PROGMEM fn_actions[] = {
|
|
||||||
[0] = ACTION_FUNCTION(SHIFT_ESC),
|
|
||||||
};
|
|
||||||
|
|
||||||
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
|
|
||||||
static uint8_t shift_esc_shift_mask;
|
|
||||||
switch (id) {
|
|
||||||
case SHIFT_ESC:
|
|
||||||
shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
|
|
||||||
if (record->event.pressed) {
|
|
||||||
if (shift_esc_shift_mask) {
|
|
||||||
add_key(KC_GRV);
|
|
||||||
send_keyboard_report();
|
|
||||||
} else {
|
|
||||||
add_key(KC_ESC);
|
|
||||||
send_keyboard_report();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (shift_esc_shift_mask) {
|
|
||||||
del_key(KC_GRV);
|
|
||||||
send_keyboard_report();
|
|
||||||
} else {
|
|
||||||
del_key(KC_ESC);
|
|
||||||
send_keyboard_report();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
KC60 with WS2812 RGB Underglow
|
|
||||||
======================
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## Quantum MK Firmware
|
|
||||||
For the full Quantum feature list, see [the parent readme.md](/readme.md).
|
|
||||||
|
|
||||||
## WS2812 Support
|
|
||||||
By default, it is now setup for 16 LEDs on the PF5 breakout pin. See [included image](https://i.imgur.com/TcKL2Sn.jpg) for wiring reference.
|
|
||||||
|
|
||||||
### Build
|
|
||||||
To build this keymap with WS2812 enabled, simply run `make KEYMAP=ws2812`.
|
|
||||||
|
|
||||||
### Reference Images
|
|
||||||

|
|
||||||

|
|
||||||

|
|
||||||
|
|
||||||
### Additional Credits
|
|
||||||
Keymap based on work by [TerryMatthews](https://github.com/TerryMathews) for GH60 Satan.
|
|
||||||
@@ -1,22 +1,2 @@
|
|||||||
|
COMMAND_ENABLE = no
|
||||||
|
RGBLIGHT_ENABLE = yes
|
||||||
# Build Options
|
|
||||||
# change yes to no to disable
|
|
||||||
#
|
|
||||||
BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
|
|
||||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
|
||||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
|
||||||
CONSOLE_ENABLE = yes # Console for debug
|
|
||||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
|
||||||
KEYBOARD_LOCK_ENABLE = yes # Allow locking of keyboard via magic key
|
|
||||||
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
|
||||||
RGBLIGHT_ENABLE = yes # Enable WS2812 underglow RGB strip
|
|
||||||
MIDI_ENABLE = no # MIDI controls
|
|
||||||
UNICODE_ENABLE = no # Unicode
|
|
||||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
|
||||||
AUDIO_ENABLE = no # Audio output on port C6
|
|
||||||
# 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
|
|
||||||
|
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
# Adding RGB Underglow to the KC60
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
The KC60 has breakout pins to which one may wire a strip of WS2812-compatible LEDs.
|
||||||
|
|
||||||
|
By default, the source is set up for 16 LEDs on the F5 breakout pin. See [included image](https://i.imgur.com/TcKL2Sn.jpg) for wiring reference. If you attach a different number of LEDs, configure your source for the correct number of LEDs by adding a `config.h` file alongside your `keymap.c` file, with the following contents:
|
||||||
|
|
||||||
|
```c
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#undef RGBLED_NUM
|
||||||
|
#define RGBLED_NUM <number of leds>
|
||||||
|
```
|
||||||
|
|
||||||
|
To enable RGB Underglow, simply add a `rules.mk` file containing `RGBLIGHT_ENABLE = yes` alongside your `keymap.c` file, and compile as normal:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
make kc60:<keymap>
|
||||||
|
```
|
||||||
|
|
||||||
|
The [ws2812 keymap](keymaps/ws2812/) may be copied and used as a starting point.
|
||||||
|
|
||||||
|
RGB Underglow is a fairly large feature, and your firmware may be too large to be flashed with it enabled. Adding `CONSOLE_ENABLE = no` or `COMMAND_ENABLE = no` to your `rules.mk` file will reduce the size of the firmware greatly, and if you don't use either feature, is a very low impact change.
|
||||||
|
|
||||||
|
|
||||||
|
## Reference Images
|
||||||
|
|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
+11
-27
@@ -1,35 +1,19 @@
|
|||||||
KC60 (version 2.0) keyboard firmware
|
# KC60
|
||||||
======================
|
|
||||||
|
|
||||||
## Quantum MK Firmware
|

|
||||||
For the full Quantum feature list, see [the parent readme.md](/readme.md).
|
|
||||||
|
|
||||||
## Building
|
A 60% PCB supporting in-switch LEDs, formerly available on AliExpress and (Mass)Drop. Supports ANSI, ISO, split Backspace, and both standard and Tsangan bottom row layouts.
|
||||||
Download or clone the whole firmware and navigate to the keyboards/kc60 folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file.
|
|
||||||
|
|
||||||
Depending on which keymap you would like to use, you will have to compile slightly differently.
|
* Keyboard Maintainer: [The QMK Community](https://github.com/qmk)
|
||||||
|
* Hardware Supported: KC60 v1.6, v2.0; ATmega32U4
|
||||||
|
* Hardware Availability: [Drop.com](https://drop.com/buy/kc60-mechanical-keyboard?mode=guest_open) (no longer available)
|
||||||
|
|
||||||
### Default
|
Make example for this keyboard (after setting up your build environment):
|
||||||
To build with the default keymap, simply run `make default`.
|
|
||||||
|
|
||||||
### Other Keymaps
|
make kc60:default
|
||||||
Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `<name>.c` in the keymaps folder, and see keymap document (you can find in top readme.md) and existent keymap files.
|
|
||||||
|
|
||||||
To build the firmware binary hex file with a keymap just do `make` with a keymap like this:
|
## RGB Underglow Support
|
||||||
|
|
||||||
```
|
To add RGB Underglow to the KC60, see [Adding RGB Underglow to the KC60](mod_rgb_underglow.md).
|
||||||
$ make [default|jack|<name>]
|
|
||||||
```
|
|
||||||
|
|
||||||
Keymaps follow the format **__\<name\>.c__** and are stored in the `keymaps` folder.
|
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).
|
||||||
|
|
||||||
## WS2812 Support
|
|
||||||
|
|
||||||
Build with WS2812 Support by running `make ws2812`.
|
|
||||||
|
|
||||||
## Warning
|
|
||||||
For those who want to use 2x1U instead of classic backspace you need to use K0D and K49 like this:
|
|
||||||
* K0D represents the key at the right of =.
|
|
||||||
* K49 represents the last key of the row (is wired at the right of the space key on the PCB)
|
|
||||||
|
|
||||||
In kc60.h I've put several definitions' examples of possible layouts proposed by online editor (http://123.57.250.164:9128/).
|
|
||||||
@@ -19,15 +19,17 @@ MOUSEKEY_ENABLE = yes # Mouse keys
|
|||||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
CONSOLE_ENABLE = yes # Console for debug
|
CONSOLE_ENABLE = yes # Console for debug
|
||||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
KEYBOARD_LOCK_ENABLE = yes # Allow locking of keyboard via magic key
|
|
||||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
NKRO_ENABLE = no # USB Nkey Rollover
|
NKRO_ENABLE = no # USB Nkey Rollover
|
||||||
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||||
MIDI_ENABLE = no # MIDI controls
|
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||||
UNICODE_ENABLE = no # Unicode
|
MIDI_ENABLE = no # MIDI support
|
||||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
AUDIO_ENABLE = no # Audio output on port C6
|
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
|
||||||
|
KEYBOARD_LOCK_ENABLE = yes # Allow locking of keyboard via magic key
|
||||||
|
|
||||||
LAYOUTS = 60_ansi
|
LAYOUTS = 60_ansi
|
||||||
@@ -0,0 +1,52 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
enum layer_names {
|
||||||
|
_ZERO,
|
||||||
|
_ONE,
|
||||||
|
_TWO,
|
||||||
|
_THREE
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
[_ZERO] = LAYOUT(
|
||||||
|
KC_MPLY, KC_HOME, KC_MUTE,
|
||||||
|
MO(1), KC_UP, RGB_MOD,
|
||||||
|
KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
|
),
|
||||||
|
|
||||||
|
[_ONE] = LAYOUT(
|
||||||
|
RESET, BL_STEP, KC_STOP,
|
||||||
|
_______, KC_HOME, RGB_MOD,
|
||||||
|
KC_MPRV, KC_END , KC_MNXT
|
||||||
|
),
|
||||||
|
|
||||||
|
[_TWO] = LAYOUT(
|
||||||
|
_______, _______, _______,
|
||||||
|
_______, _______, _______,
|
||||||
|
_______, _______, _______
|
||||||
|
),
|
||||||
|
|
||||||
|
[_THREE] = LAYOUT(
|
||||||
|
_______, _______, _______,
|
||||||
|
_______, _______, _______,
|
||||||
|
_______, _______, _______
|
||||||
|
)
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
void encoder_update_user(uint8_t index, bool clockwise) {
|
||||||
|
if (index == 0) {
|
||||||
|
if (clockwise) {
|
||||||
|
tap_code(KC_VOLU);
|
||||||
|
} else {
|
||||||
|
tap_code(KC_VOLD);
|
||||||
|
}
|
||||||
|
} else if (index == 1) {
|
||||||
|
if (clockwise) {
|
||||||
|
tap_code(KC_WH_U);
|
||||||
|
} else {
|
||||||
|
tap_code(KC_WH_D);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
VIA_ENABLE = yes
|
||||||
|
LINK_TIME_OPTIMIZATION_ENABLE = yes
|
||||||
|
MOUSEKEY_ENABLE = yes
|
||||||
|
CONSOLE_ENABLE = no
|
||||||
|
COMMAND_ENABLE = no
|
||||||
@@ -1,24 +1,36 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
|
||||||
#ifdef PRODUCT
|
#ifdef PRODUCT
|
||||||
#undef PRODUCT
|
# undef PRODUCT
|
||||||
#define PRODUCT Iris Keyboard - pvinis
|
# define PRODUCT Iris Keyboard - pvinis
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Use I2C or Serial, not both.
|
||||||
// Use I2C or Serial, not both
|
|
||||||
#define USE_SERIAL
|
#define USE_SERIAL
|
||||||
// #define USE_I2C
|
// #define USE_I2C
|
||||||
|
|
||||||
|
// Select hand configuration.
|
||||||
// Select hand configuration
|
// #define MASTER_LEFT
|
||||||
#define MASTER_LEFT
|
#define MASTER_RIGHT
|
||||||
// #define MASTER_RIGHT
|
|
||||||
// #define EE_HANDS
|
// #define EE_HANDS
|
||||||
|
|
||||||
|
// Choose pin to use for audio. C6 is the one iris uses.
|
||||||
// choose pin to use for audio. c6 is the one iris uses.
|
|
||||||
#ifdef AUDIO_ENABLE
|
#ifdef AUDIO_ENABLE
|
||||||
#define C6_AUDIO
|
# define C6_AUDIO
|
||||||
|
# define STARTUP_SONG SONG(NO_SOUND) // No startup song.
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef RGBLIGHT_ENABLE
|
||||||
|
# undef RGBLED_NUM
|
||||||
|
# define RGBLED_NUM 16
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef ENCODER_ENABLE
|
||||||
|
# define ENCODERS_PAD_A \
|
||||||
|
{ F5 } // I connected the encoder to F4 and F5.
|
||||||
|
# define ENCODERS_PAD_B \
|
||||||
|
{ F4 }
|
||||||
|
// #define ENCODERS_PAD_A_RIGHT { B5 }
|
||||||
|
// #define ENCODERS_PAD_B_RIGHT { C6 }
|
||||||
|
# define ENCODER_RESOLUTION 2
|
||||||
#endif
|
#endif
|
||||||
@@ -1,16 +1,16 @@
|
|||||||
// pvinis iris
|
// pvinis iris
|
||||||
// ,-----------------------------. ,-----------------------------.
|
// make keebio/iris/rev2:pvinis:avrdude
|
||||||
// | | | | | | | | | | | | | |
|
// ,-----------------------------. ┌────┬────┬────┬────┬────┬────┐
|
||||||
// |----+----+----+----+----+----| |----+----+----+----+----+----|
|
// | | | | | | | │ │ │ │ │ │ │
|
||||||
// | | | | | | | | | | | | | |
|
// |----+----+----+----+----+----| ├────┼────┼────┼────┼────┼────┤
|
||||||
// |----+----+----+----x----x----| |----x----x----+----+----+----|
|
// | | | | | | | │ │ │ │ │ │ │
|
||||||
// | | | | | | | | | | | | | |
|
// |----+----+----+----x----x----| ├────╆━━━━╅────┼────┼────┼────┤
|
||||||
// |----+----+----+----x----x----+----. ,----|----x----x----+----+----+----|
|
// | | | | | | | │ ┃ ┃ │ │ │ │
|
||||||
// | | | | | | | | | | | | | | | |
|
// |----+----+----+----x----x----+----. ┌────┼────╄━━━━╃────┼────┼────┼────┤
|
||||||
// `-------------------+----+----+----/ \----+----+----+-------------------'
|
// | | | | | | | | │ │ │ │ │ │ │ │
|
||||||
// | | | | | | | |
|
// `-------------------+----+----+----/ └┬───┴┬───┴┬───┴┬───┴────┴────┴────┘
|
||||||
// `----+---------' `--------------'
|
// | | | | │ │ │ │
|
||||||
|
// `----+---------' └────┴────┴────┘
|
||||||
|
|
||||||
#include QMK_KEYBOARD_H
|
#include QMK_KEYBOARD_H
|
||||||
#include "pvinis.h"
|
#include "pvinis.h"
|
||||||
@@ -19,102 +19,179 @@
|
|||||||
//#include "eeconfig.h"
|
//#include "eeconfig.h"
|
||||||
|
|
||||||
#ifdef AUDIO_ENABLE
|
#ifdef AUDIO_ENABLE
|
||||||
#include "audio.h"
|
# include "audio.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef AUDIO_ENABLE
|
#ifdef AUDIO_ENABLE
|
||||||
// #define STARTUP_SONG SONG(SONIC_RING)
|
// #define STARTUP_SONG SONG(SONIC_RING)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef AUDIO_ENABLE
|
#ifdef AUDIO_ENABLE
|
||||||
float tone_sonic[][2] = SONG(IN_LIKE_FLINT);
|
// float n04[][2] = SONG(CLOSE_ENCOUNTERS_5_NOTE);
|
||||||
float tone_1[][2] = SONG(QWERTY_SOUND);
|
// float n10[][2] = SONG(STARTUP_SOUND);
|
||||||
float tone_2[][2] = SONG(OLD_SPICE);
|
// float n11[][2] = SONG(GOODBYE_SOUND);
|
||||||
float tone_3[][2] = SONG(OVERWATCH_THEME);
|
// float n12[][2] = SONG(PLANCK_SOUND);
|
||||||
float tone_4[][2] = SONG(QWERTY_SOUND);
|
// float n19[][2] = SONG(MUSIC_ON_SOUND);
|
||||||
|
// float n20[][2] = SONG(AUDIO_ON_SOUND);
|
||||||
|
// float n29[][2] = SONG(CAPS_LOCK_ON_SOUND);
|
||||||
|
// float n30[][2] = SONG(CAPS_LOCK_OFF_SOUND);
|
||||||
|
// float n31[][2] = SONG(SCROLL_LOCK_ON_SOUND);
|
||||||
|
// float n32[][2] = SONG(SCROLL_LOCK_OFF_SOUND);
|
||||||
|
// float n33[][2] = SONG(NUM_LOCK_ON_SOUND);
|
||||||
|
// float n34[][2] = SONG(NUM_LOCK_OFF_SOUND);
|
||||||
|
// float n40[][2] = SONG(ONE_UP_SOUND);
|
||||||
|
// float n49[][2] = SONG(E1M1_DOOM);
|
||||||
|
// float n53[][2] = SONG(OLD_SPICE);
|
||||||
|
// float n56[][2] = SONG(RICK_ROLL);
|
||||||
|
// float n57[][2] = SONG(FF_PRELUDE);
|
||||||
|
// RGB_MODE_KNIGHT
|
||||||
|
// float n78[][2] = SONG(KATAMARI_ROLLING_STAR);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
// ,-----------------------------. ,-----------------------------.
|
// ,-----------------------------. ,-----------------------------.
|
||||||
// | | | | | |QWER| | | | | | | |
|
// | | | | |GAME|QWER| | | | | | | |
|
||||||
// |----+----+----+----+----+----| |----+----+----+----+----+----|
|
// |----+----+----+----+----+----| |----+----+----+----+----+----|
|
||||||
// |Tab | | | | |CARP| | | | | | |Del |
|
// |Tab | | | | |CRPL| | | | | | |Del |
|
||||||
// |----+----+----+----x----x----| |----x----x----+----+----+----|
|
// |----+----+----+----x----x----| |----x----x----+----+----+----|
|
||||||
// |EscC| | | | | | | | | | | |Ent |
|
// |EscC| | | | | | | | | | | |Ent |
|
||||||
// |----+----+----+----x----x----+----. ,----|----x----x----+----+----+----|
|
// |----+----+----+----x----x----+----. ,----|----x----x----+----+----+----|
|
||||||
// |LSft| | | | | |Home| |End | | | | | |Rsft|
|
// |LSft| | | | | |Home| |End | | | | | |Rsft|
|
||||||
// `-------------------+----+----+----/ \----+----+----+-------------------'
|
// `-------------------+----+----+----/ \----+----+----+-------------------'
|
||||||
// |Cmd |LOWR|Bspc| |Spc |RASE|RAlt|
|
// |Cmd |LOWR|Bspc| |Spc |RASE|RAlt|
|
||||||
// `----+---------' `--------------'
|
// `----+---------' `--------------'
|
||||||
[LR_BASE] = LAYOUT_wrapper(
|
[LR_BASE] = LAYOUT_wrapper(
|
||||||
_______, _______, _______, _______, _______, QWERTY , _______, _______, _______, _______, _______, _______,
|
// clang-format off
|
||||||
KC_TAB , _______, _______, _______, _______, CARPALX, _______, _______, _______, _______, _______, KC_DEL ,
|
KC_MUTE, _______, _______, _______, GAME1 , QWERTY , KC_1 , _______, _______, _______, _______, _______,
|
||||||
PV_ESCC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_ENT ,
|
KC_TAB , ___________________________________________, ___________________________________________, KC_DEL ,
|
||||||
KC_LSFT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_RSFT,
|
PV_ESCC, ___________________________________________, ___________________________________________, KC_ENT ,
|
||||||
KC_LGUI, SYMBOL , KC_BSPC, KC_SPC , SYSCTL , KC_RALT
|
KC_LSFT, ___________________________________________, _______, _______, _______, _______, _______, _______, _______, KC_RSFT,
|
||||||
),
|
KC_LGUI, SYMBOL , KC_BSPC, KC_SPC , SYSCTL , KC_RALT
|
||||||
|
// clang-format on
|
||||||
|
),
|
||||||
|
|
||||||
// ,-----------------------------. ,-----------------------------.
|
// ,-----------------------------. ,-----------------------------.
|
||||||
// | | NUMBERS_L | | NUMBERS_R | |
|
// | | NUMBERS_L | | NUMBERS_R | |
|
||||||
// |----+----+----+----+----+----| |----+----+----+----+----+----|
|
// |----+----+----+----+----+----| |----+----+----+----+----+----|
|
||||||
// | | | | | |
|
// | | | | | |
|
||||||
// |----+ | | +----|
|
// |----+ | | +----|
|
||||||
// | | QWERTY_L | | QWERTY_R | |
|
// | | QWERTY_L | | QWERTY_R | |
|
||||||
// |----+ +----. ,----| +----|
|
// |----+ +----. ,----| +----|
|
||||||
// | | | | | | | |
|
// | | | | | | | |
|
||||||
// `-------------------+----+----+----/ \----+----+----+-------------------'
|
// `-------------------+----+----+----/ \----+----+----+-------------------'
|
||||||
// | | | | | | | |
|
// | | | | | | | |
|
||||||
// `----+---------' `--------------'
|
// `----+---------' `--------------'
|
||||||
[LR_QWERTY] = LAYOUT_wrapper(
|
[LR_QWERTY] = LAYOUT_wrapper(
|
||||||
_______, ________________NUMBERS_L__________________, ________________NUMBERS_R__________________, _______,
|
// clang-format off
|
||||||
_______, _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, _______,
|
_______, ________________NUMBERS_L__________________, ________________NUMBERS_R__________________, _______,
|
||||||
_______, _____________MOD_QWERTY_L2_________________, _____________MOD_QWERTY_R2_________________, _______,
|
_______, _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, _______,
|
||||||
_______, _________________QWERTY_L3_________________, _______, _______, _________________QWERTY_R3_________________, _______,
|
_______, _____________MOD_QWERTY_L2_________________, _________________QWERTY_R2_________________, _______,
|
||||||
_______, _______, _______, _______, _______, _______
|
_______, _________________QWERTY_L3_________________, _______, _______, _________________QWERTY_R3_________________, _______,
|
||||||
),
|
_______, _______, _______, _______, _______, _______
|
||||||
|
// clang-format on
|
||||||
|
),
|
||||||
|
|
||||||
// ,-----------------------------. ,-----------------------------.
|
// ,-----------------------------. ,-----------------------------.
|
||||||
// | | NUMBERS_L | | NUMBERS_R | |
|
// | | NUMBERS_L | | NUMBERS_R | |
|
||||||
// |----+----+----+----+----+----| |----+----+----+----+----+----|
|
// |----+----+----+----+----+----| |----+----+----+----+----+----|
|
||||||
// | | | | | |
|
// | | | | | |
|
||||||
// |----+ | | +----|
|
// |----+ | | +----|
|
||||||
// | | CARPALX_L | | CARPALX_R | |
|
// | | CARPALX_L | | CARPALX_R | |
|
||||||
// |----+ +----. ,----| +----|
|
// |----+ +----. ,----| +----|
|
||||||
// | | | | | | | |
|
// | | | | | | | |
|
||||||
// `-------------------+----+----+----/ \----+----+----+-------------------'
|
// `-------------------+----+----+----/ \----+----+----+-------------------'
|
||||||
// | | | | | | | |
|
// | | | | | | | |
|
||||||
// `----+---------' `--------------'
|
// `----+---------' `--------------'
|
||||||
[LR_CARPALX] = LAYOUT_wrapper(
|
[LR_CARPALX] = LAYOUT_wrapper(
|
||||||
_______, ________________NUMBERS_L__________________, ________________NUMBERS_R__________________, _______,
|
// clang-format off
|
||||||
_______, ________________CARPALX_L1_________________, ________________CARPALX_R1_________________, _______,
|
_______, ________________NUMBERS_L__________________, ________________NUMBERS_R__________________, _______,
|
||||||
_______, ________________CARPALX_L2_________________, ________________CARPALX_R2_________________, _______,
|
_______, ________________CARPALX_L1_________________, ________________CARPALX_R1_________________, _______,
|
||||||
_______, ________________CARPALX_L3_________________, _______, _______, ________________CARPALX_R3_________________, _______,
|
_______, ________________CARPALX_L2_________________, ________________CARPALX_R2_________________, _______,
|
||||||
_______, _______, _______, _______, _______, _______
|
_______, ________________CARPALX_L3_________________, _______, _______, ________________CARPALX_R3_________________, _______,
|
||||||
),
|
_______, _______, _______, _______, _______, _______
|
||||||
|
// clang-format on
|
||||||
|
),
|
||||||
|
|
||||||
[LR_SYMBOL] = LAYOUT_wrapper(
|
[LR_SYMBOL] = LAYOUT_wrapper(
|
||||||
KC_F12 , ______________________F_L__________________, ______________________F_R__________________, KC_F11 ,
|
// clang-format off
|
||||||
_______, _________________SYMBOL_L1_________________, _________________SYMBOL_R1_________________, _______,
|
KC_F12 , ______________________F_L__________________, ______________________F_R__________________, KC_F11 ,
|
||||||
_______, _________________SYMBOL_L2_________________, _________________SYMBOL_R2_________________, _______,
|
_______, _________________SYMBOL_L1_________________, _________________SYMBOL_R1_________________, _______,
|
||||||
_______, _________________SYMBOL_L3_________________, _______, _______, _________________SYMBOL_R3_________________, _______,
|
_______, _________________SYMBOL_L2_________________, _________________SYMBOL_R2_________________, _______,
|
||||||
_______, _______, _______, _______, _______, _______
|
_______, _________________SYMBOL_L3_________________, _______, _______, _________________SYMBOL_R3_________________, _______,
|
||||||
),
|
_______, _______, _______, _______, _______, _______
|
||||||
|
// clang-format on
|
||||||
|
),
|
||||||
|
|
||||||
[LR_SYSCTL] = LAYOUT_wrapper(
|
[LR_SYSCTL] = LAYOUT_wrapper(
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
// clang-format off
|
||||||
_______, _______, _______, _______, _______, _______, _________________SYSCTL_R1_________________, _______,
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
_______, _______, _______, _______, _______, _______, _________________SYSCTL_R2_________________, _______,
|
_______, _________________SYSCTL_L1_________________, _________________SYSCTL_R1_________________, _______,
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _________________SYSCTL_R3_________________, _______,
|
_______, _________________SYSCTL_L2_________________, _________________SYSCTL_R2_________________, _______,
|
||||||
_______, _______, _______, _______, _______, _______
|
_______, _________________SYSCTL_L3_________________, _______, _______, _________________SYSCTL_R3_________________, _______,
|
||||||
),
|
_______, _______, _______, _______, _______, _______
|
||||||
|
// clang-format on
|
||||||
|
),
|
||||||
|
|
||||||
[LR_KBCTL] = LAYOUT_wrapper(
|
[LR_KBCTL] = LAYOUT_wrapper(
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
// clang-format off
|
||||||
XXXXXXX, __________________KBCTL_L1_________________, __________________KBCTL_R1_________________, XXXXXXX,
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
XXXXXXX, __________________KBCTL_L2_________________, __________________KBCTL_R2_________________, XXXXXXX,
|
XXXXXXX, __________________KBCTL_L1_________________, __________________KBCTL_R1_________________, XXXXXXX,
|
||||||
BASE , __________________KBCTL_L3_________________, XXXXXXX, XXXXXXX, __________________KBCTL_R3_________________, XXXXXXX,
|
XXXXXXX, __________________KBCTL_L2_________________, __________________KBCTL_R2_________________, XXXXXXX,
|
||||||
XXXXXXX, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX
|
BASE , __________________KBCTL_L3_________________, XXXXXXX, XXXXXXX, __________________KBCTL_R3_________________, XXXXXXX,
|
||||||
)
|
XXXXXXX, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX
|
||||||
|
// clang-format on
|
||||||
|
),
|
||||||
|
|
||||||
|
// ,-----------------------------. ,-----------------------------.
|
||||||
|
// | | NUMBERS_L | | NUMBERS_R | |
|
||||||
|
// |----+----+----+----+----+----| |----+----+----+----+----+----|
|
||||||
|
// | | | | | |
|
||||||
|
// |----+ | | +----|
|
||||||
|
// |ESC | QWERTY_L | | QWERTY_R | |
|
||||||
|
// |----+ +----. ,----| +----|
|
||||||
|
// | | | | | | | |
|
||||||
|
// `-------------------+----+----+----/ \----+----+----+-------------------'
|
||||||
|
// | |SPC | | | | | |
|
||||||
|
// `----+---------' `--------------'
|
||||||
|
[LR_GAME1] = LAYOUT_wrapper(
|
||||||
|
// clang-format off
|
||||||
|
_______, ________________NUMBERS_L__________________, ________________NUMBERS_R__________________, KC_BSPC,
|
||||||
|
_______, _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, QWERTY ,
|
||||||
|
KC_ESC , _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, _______,
|
||||||
|
_______, _________________QWERTY_L3_________________, _______, _______, _________________QWERTY_R3_________________, _______,
|
||||||
|
_______, _______, KC_SPC , _______, _______, _______
|
||||||
|
// clang-format on
|
||||||
|
),
|
||||||
|
|
||||||
|
[LR_GAME2] = LAYOUT_wrapper(
|
||||||
|
// clang-format off
|
||||||
|
_______, ________________NUMBERS_L__________________, ________________NUMBERS_R__________________, KC_BSPC,
|
||||||
|
_______, _________________QWERTY_L1_________________, KC_Y , KC_U , KC_UP , KC_O , KC_P , QWERTY ,
|
||||||
|
KC_ESC , _________________QWERTY_L2_________________, KC_H , KC_LEFT, KC_DOWN, KC_RGHT, KC_SCLN, _______,
|
||||||
|
_______, _________________QWERTY_L3_________________, _______, _______, _________________QWERTY_R3_________________, _______,
|
||||||
|
_______, _______, KC_SPC , _______, _______, _______
|
||||||
|
// clang-format on
|
||||||
|
),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifdef ENCODER_ENABLE
|
||||||
|
void encoder_update_user(uint8_t index, bool clockwise) {
|
||||||
|
// if (index == 0) { /* First encoder */
|
||||||
|
if (clockwise) {
|
||||||
|
tap_code(KC_VOLU);
|
||||||
|
} else {
|
||||||
|
tap_code(KC_VOLD);
|
||||||
|
}
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
switch (keycode) {
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
// case PV_S04: if (record->event.pressed) PLAY_SONG(n04); return false; break;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
return true; // Process everything else normally
|
||||||
|
}
|
||||||
@@ -1,2 +1,9 @@
|
|||||||
AUDIO_ENABLE = no # off for now
|
TAP_DANCE_ENABLE = yes
|
||||||
RGBLIGHT_ENABLE = no # off for now
|
AUDIO_ENABLE = no # piezo speaker sounds
|
||||||
|
RGBLIGHT_ENABLE = yes # rgb leds underlight
|
||||||
|
ENCODER_ENABLE = yes # rotary knob
|
||||||
|
|
||||||
|
# Some extra stuff to make firmware smaller.
|
||||||
|
LINK_TIME_OPTIMIZATION_ENABLE = yes
|
||||||
|
CONSOLE_ENABLE = no
|
||||||
|
COMMAND_ENABLE = no
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
enum layer_names {
|
enum layer_names {
|
||||||
_BASE,
|
_BASE,
|
||||||
_FN,
|
_FN,
|
||||||
_DEMO
|
_MEDIA
|
||||||
};
|
};
|
||||||
|
|
||||||
// Defines the keycodes used by our macros in process_record_user
|
// Defines the keycodes used by our macros in process_record_user
|
||||||
@@ -30,6 +30,7 @@ enum custom_keycodes {
|
|||||||
QMKURL
|
QMKURL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
/* Base */
|
/* Base */
|
||||||
[_BASE] = LAYOUT(
|
[_BASE] = LAYOUT(
|
||||||
@@ -38,14 +39,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
KC_4, KC_5, KC_6, KC_0
|
KC_4, KC_5, KC_6, KC_0
|
||||||
),
|
),
|
||||||
[_FN] = LAYOUT(
|
[_FN] = LAYOUT(
|
||||||
TO(_DEMO),
|
TO(_MEDIA),
|
||||||
RGB_TOG, RGB_MOD, RGB_VAI,
|
RGB_TOG, RGB_MOD, RGB_VAI,
|
||||||
_______, _______, _______, _______
|
QMKURL, RGB_RMOD, RGB_VAD, QMKBEST
|
||||||
),
|
),
|
||||||
[_DEMO] = LAYOUT(
|
[_MEDIA] = LAYOUT(
|
||||||
TO(_BASE),
|
TO(_BASE),
|
||||||
QMKBEST, _______, _______,
|
KC_VOLD, KC_VOLU, KC_F24,
|
||||||
_______, _______, _______, QMKURL
|
KC_MRWD, KC_MFFD, KC_F23, KC_MPLY
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -22,6 +22,9 @@
|
|||||||
#ifdef KEYBOARD_kudox_rev2
|
#ifdef KEYBOARD_kudox_rev2
|
||||||
#include "rev2.h"
|
#include "rev2.h"
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef KEYBOARD_kudox_rev3
|
||||||
|
#include "rev3.h"
|
||||||
|
#endif
|
||||||
#ifdef KEYBOARD_kudox_columner
|
#ifdef KEYBOARD_kudox_columner
|
||||||
#include "columner.h"
|
#include "columner.h"
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -5,25 +5,23 @@
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<img src="https://raw.githubusercontent.com/kumaokobo/kudox-keyboard/master/img/kudox-pcb.jpg" alt="Kudox PCB rev2.0" width="600"/>
|
<img src="https://raw.githubusercontent.com/kumaokobo/kudox-keyboard/master/img/kudox-rev3-image1.jpg" alt="Kudox rev3.0" width="600"/>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
- Keyboard Maintainer: [Kumao Kobo](https://github.com/kumaokobo)
|
- Keyboard Maintainer: [Kumao Kobo](https://github.com/kumaokobo)
|
||||||
- Hardware Supported: Kudox PCB rev1.0 rev2.0 w/ Pro Micro
|
- Hardware Supported: Kudox PCB rev1.0 rev2.0 rev3.0 w/ Pro Micro
|
||||||
|
|
||||||
Make example for this keyboard (after setting up your build environment):
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
make kudox/rev2:default
|
make kudox/rev3:default
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
Example of flashing this keyboard:
|
Example of flashing this keyboard:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
make kudox/rev2:default:flash
|
make kudox/rev3:default:flash
|
||||||
```
|
```
|
||||||
|
|
||||||
*keymaps/default is for rev2.0. If you want to use rev1.0, you should remove Left-06 key and Right-06 key.*
|
|
||||||
|
|
||||||
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).
|
||||||
@@ -0,0 +1,91 @@
|
|||||||
|
/* Copyright 2019 Kumao Kobo <[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 0x9690
|
||||||
|
#define DEVICE_VER 0x0300
|
||||||
|
#define MANUFACTURER Kumao Kobo
|
||||||
|
#define PRODUCT The Kudox Keyboard
|
||||||
|
#define DESCRIPTION Split row staggered 5x7 custom keyboard
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
// Rows are doubled-up
|
||||||
|
#define MATRIX_ROWS 10
|
||||||
|
#define MATRIX_COLS 7
|
||||||
|
|
||||||
|
// wiring of each half
|
||||||
|
#define MATRIX_ROW_PINS { D4, D7, E6, B4, B5 }
|
||||||
|
#define MATRIX_COL_PINS { F5, F6, F7, B1, B3, B2, B6 }
|
||||||
|
// #define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6, F5} //uncomment this line and comment line above if you need to reverse left-to-right key order
|
||||||
|
|
||||||
|
/* COL2ROW or ROW2COL */
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
/* define if matrix has ghost */
|
||||||
|
//#define MATRIX_HAS_GHOST
|
||||||
|
|
||||||
|
/* number of backlight levels */
|
||||||
|
// #define BACKLIGHT_LEVELS 3
|
||||||
|
|
||||||
|
/* Set 0 if debouncing isn't needed */
|
||||||
|
#define DEBOUNCE 5
|
||||||
|
|
||||||
|
/* serial.c configuration for split keyboard */
|
||||||
|
#define SOFT_SERIAL_PIN D0
|
||||||
|
|
||||||
|
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||||
|
#define LOCKING_SUPPORT_ENABLE
|
||||||
|
/* Locking resynchronize hack */
|
||||||
|
#define LOCKING_RESYNC_ENABLE
|
||||||
|
|
||||||
|
/* ws2812 RGB LED */
|
||||||
|
#define RGB_DI_PIN D3
|
||||||
|
|
||||||
|
#undef RGBLED_NUM
|
||||||
|
#define RGBLED_NUM 14 // Number of LEDs
|
||||||
|
#define RGBLIGHT_ANIMATIONS
|
||||||
|
#define RGBLIGHT_HUE_STEP 8
|
||||||
|
#define RGBLIGHT_SAT_STEP 8
|
||||||
|
#define RGBLIGHT_VAL_STEP 8
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
#define MOUSEKEY_INTERVAL 20
|
||||||
|
#define MOUSEKEY_DELAY 0
|
||||||
|
#define MOUSEKEY_TIME_TO_MAX 60
|
||||||
|
#define MOUSEKEY_MAX_SPEED 7
|
||||||
|
#define MOUSEKEY_WHEEL_DELAY 0
|
||||||
@@ -0,0 +1,77 @@
|
|||||||
|
{
|
||||||
|
"url": "http://kumaokobo.com/",
|
||||||
|
"maintainer": "Kumao Kobo",
|
||||||
|
"keyboard_name": "Kudox Keyboard Rev3",
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT": {
|
||||||
|
"layout": [
|
||||||
|
{"label":"`", "x":0, "y":0},
|
||||||
|
{"label":"1", "x":1, "y":0},
|
||||||
|
{"label":"2", "x":2, "y":0},
|
||||||
|
{"label":"3", "x":3, "y":0},
|
||||||
|
{"label":"4", "x":4, "y":0},
|
||||||
|
{"label":"5", "x":5, "y":0},
|
||||||
|
{"label":"6", "x":6, "y":0},
|
||||||
|
{"label":"7", "x":10, "y":0},
|
||||||
|
{"label":"8", "x":11, "y":0},
|
||||||
|
{"label":"9", "x":12, "y":0},
|
||||||
|
{"label":"0", "x":13, "y":0},
|
||||||
|
{"label":"-", "x":14, "y":0},
|
||||||
|
{"label":"=", "x":15, "y":0},
|
||||||
|
{"label":"\u2190", "x":16, "y":0},
|
||||||
|
{"label":"Tab", "x":0, "y":1, "w":1.25},
|
||||||
|
{"label":"Q", "x":1.25, "y":1},
|
||||||
|
{"label":"W", "x":2.25, "y":1},
|
||||||
|
{"label":"E", "x":3.25, "y":1},
|
||||||
|
{"label":"R", "x":4.25, "y":1},
|
||||||
|
{"label":"T", "x":5.25, "y":1},
|
||||||
|
{"label":"Esc", "x":6.25, "y":1},
|
||||||
|
{"label":"Y", "x":9.75, "y":1},
|
||||||
|
{"label":"U", "x":10.75, "y":1},
|
||||||
|
{"label":"I", "x":11.75, "y":1},
|
||||||
|
{"label":"O", "x":12.75, "y":1},
|
||||||
|
{"label":"P", "x":13.75, "y":1},
|
||||||
|
{"label":"'", "x":14.75, "y":1},
|
||||||
|
{"label":"\\", "x":15.75, "y":1, "w":1.25},
|
||||||
|
{"label":"Ctrl", "x":0, "y":2, "w":1.75},
|
||||||
|
{"label":"A", "x":1.75, "y":2},
|
||||||
|
{"label":"S", "x":2.75, "y":2},
|
||||||
|
{"label":"D", "x":3.75, "y":2},
|
||||||
|
{"label":"F", "x":4.75, "y":2},
|
||||||
|
{"label":"G", "x":5.75, "y":2},
|
||||||
|
{"label":"H", "x":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":"Enter", "x":15.25, "y":2, "w":1.75},
|
||||||
|
{"label":"Shift", "x":0, "y":3, "w":2.25},
|
||||||
|
{"label":"Z", "x":2.25, "y":3},
|
||||||
|
{"label":"X", "x":3.25, "y":3},
|
||||||
|
{"label":"C", "x":4.25, "y":3},
|
||||||
|
{"label":"V", "x":5.25, "y":3},
|
||||||
|
{"label":"B", "x":6.25, "y":3},
|
||||||
|
{"label":"N", "x":9.75, "y":3},
|
||||||
|
{"label":"M", "x":10.75, "y":3},
|
||||||
|
{"label":",", "x":11.75, "y":3},
|
||||||
|
{"label":".", "x":12.75, "y":3},
|
||||||
|
{"label":"/", "x":13.75, "y":3},
|
||||||
|
{"label":"Shift", "x":14.75, "y":3, "w":2.25},
|
||||||
|
{"label":"Alt", "x":0, "y":4, "w":1.25},
|
||||||
|
{"label":"[", "x":1.25, "y":4},
|
||||||
|
{"label":"]", "x":2.25, "y":4},
|
||||||
|
{"label":"LANG2", "x":3.25, "y":4},
|
||||||
|
{"label":"Enter", "x":4.25, "y":4.33, "w":1.25},
|
||||||
|
{"label":"GUI", "x":5.5, "y":4.67},
|
||||||
|
{"label":"Space", "x":6.5, "y":5},
|
||||||
|
{"label":"Space", "x":9.5, "y":5},
|
||||||
|
{"label":"GUI", "x":10.5, "y":4.67},
|
||||||
|
{"label":"LANG1", "x":11.5, "y":4.33, "w":1.25},
|
||||||
|
{"label":"\u2190", "x":12.75, "y":4},
|
||||||
|
{"label":"\u2193", "x":13.75, "y":4},
|
||||||
|
{"label":"\u2191", "x":14.75, "y":4},
|
||||||
|
{"label":"\u2192", "x":15.75, "y":4, "w":1.25}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,70 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||||
|
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||||
|
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||||
|
// entirely and just use numbers.
|
||||||
|
#define _QWERTY 0
|
||||||
|
#define _SYMB 1
|
||||||
|
#define _LIGHT 2
|
||||||
|
|
||||||
|
// Shortcut to make keymap more readable
|
||||||
|
#define SYM_L2 LT(_SYMB, KC_LANG2)
|
||||||
|
#define TO_LIGH TO(_LIGHT)
|
||||||
|
#define TO_QWER TO(_QWERTY)
|
||||||
|
|
||||||
|
#define KC_ALES LALT_T(KC_ESC)
|
||||||
|
#define KC_ALEN LALT_T(KC_ENT)
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
[_QWERTY] = LAYOUT(
|
||||||
|
//┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐
|
||||||
|
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_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_ESC , KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_SLSH ,KC_BSLS ,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
|
||||||
|
KC_LCTL ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G , KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,KC_ENT ,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
|
||||||
|
KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_UP ,KC_RSFT ,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
|
||||||
|
KC_ALES ,KC_LBRC ,KC_RBRC ,SYM_L2 ,KC_ALEN ,KC_LGUI ,KC_SPC , KC_SPC ,KC_RGUI ,TO_LIGH ,KC_LANG1,KC_LEFT, KC_DOWN ,KC_RIGHT
|
||||||
|
//└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
|
||||||
|
),
|
||||||
|
|
||||||
|
[_SYMB] = LAYOUT(
|
||||||
|
//┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐
|
||||||
|
KC_ESC ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 , KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_DEL ,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
|
||||||
|
_______ ,KC_DQUO ,KC_QUOT ,KC_GRV ,KC_ASTR ,KC_PLUS ,KC_EQL , KC_LPRN ,KC_RPRN ,KC_PIPE ,KC_ASTR ,KC_TILD ,KC_CIRC ,KC_PIPE ,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
|
||||||
|
_______ ,KC_AT ,KC_COLN ,KC_GRV ,KC_SLSH ,KC_MINS , KC_LBRC ,KC_RBRC ,KC_DOT ,KC_SLSH ,KC_MINS ,_______ ,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
|
||||||
|
_______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , KC_LCBR ,KC_RCBR ,_______ ,_______ ,KC_CIRC ,_______ ,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
|
||||||
|
_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,KC_LABK ,KC_UNDS ,KC_RABK
|
||||||
|
//└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
|
||||||
|
),
|
||||||
|
|
||||||
|
[_LIGHT] = LAYOUT(
|
||||||
|
//┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐
|
||||||
|
_______ ,RGB_HUI ,RGB_HUD ,RGB_SAI ,RGB_SAD ,RGB_VAI ,RGB_VAD , RGB_HUI ,RGB_HUD ,RGB_SAI ,RGB_SAD ,RGB_VAI ,RGB_VAD ,XXXXXXX ,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
|
||||||
|
_______ ,RGB_M_P ,RGB_M_SW ,RGB_M_X,XXXXXXX ,XXXXXXX ,XXXXXXX , RGB_M_P ,RGB_M_SW ,RGB_M_X ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
|
||||||
|
_______ ,RGB_M_B ,RGB_M_SN ,RGB_M_G,XXXXXXX ,XXXXXXX , RGB_M_B ,RGB_M_SN ,RGB_M_G ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
|
||||||
|
_______ ,RGB_M_R ,RGB_M_K ,RGB_M_T ,XXXXXXX ,XXXXXXX , RGB_M_R ,RGB_M_K ,RGB_M_T ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
|
||||||
|
_______ ,_______ ,_______ ,_______ ,_______ ,RGB_MOD ,RGB_TOG , RGB_TOG ,RGB_MOD ,TO_QWER ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX
|
||||||
|
//└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
|
||||||
|
)
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef RGBLIGHT_ENABLE
|
||||||
|
void keyboard_post_init_user(void) {
|
||||||
|
rgblight_mode_noeeprom(RGBLIGHT_MODE_RAINBOW_SWIRL);
|
||||||
|
};
|
||||||
|
#endif
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
# The default keymap for Kudox Keyboard Rev3.0
|
||||||
@@ -0,0 +1,70 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
#include"keymap_jp.h"
|
||||||
|
|
||||||
|
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||||
|
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||||
|
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||||
|
// entirely and just use numbers.
|
||||||
|
#define _QWERTY 0
|
||||||
|
#define _SYMB 1
|
||||||
|
#define _LIGHT 2
|
||||||
|
|
||||||
|
// Shortcut to make keymap more readable
|
||||||
|
#define SYM_L2 LT(_SYMB, KC_LANG2)
|
||||||
|
#define TO_LIGH TO(_LIGHT)
|
||||||
|
#define TO_QWER TO(_QWERTY)
|
||||||
|
|
||||||
|
#define KC_ALES LALT_T(KC_ESC)
|
||||||
|
#define KC_ALEN LALT_T(KC_ENT)
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
[_QWERTY] = LAYOUT(
|
||||||
|
//┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐
|
||||||
|
JP_ZKHK ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_6 , KC_7 ,KC_8 ,KC_9 ,KC_0 ,JP_MINS ,JP_CIRC ,KC_BSPC ,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
|
||||||
|
KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_ESC , KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,JP_AT ,JP_SLSH ,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
|
||||||
|
KC_LCTL ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G , KC_H ,KC_J ,KC_K ,KC_L ,JP_SCLN ,KC_ENT ,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
|
||||||
|
KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , KC_N ,KC_M ,JP_COMM ,JP_DOT ,KC_UP ,KC_RSFT ,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
|
||||||
|
KC_ALES ,JP_YEN ,JP_COLN ,SYM_L2 ,KC_ALEN ,KC_LGUI ,KC_SPC , KC_SPC ,KC_RGUI ,TO_LIGH ,KC_LANG1,KC_LEFT, KC_DOWN ,KC_RIGHT
|
||||||
|
//└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
|
||||||
|
),
|
||||||
|
|
||||||
|
[_SYMB] = LAYOUT(
|
||||||
|
//┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐
|
||||||
|
KC_ESC ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 , KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_DEL ,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
|
||||||
|
_______ ,JP_DQUO ,JP_QUOT ,KC_GRV ,JP_ASTR ,JP_PLUS ,JP_EQL , JP_LPRN ,JP_RPRN ,JP_PIPE ,JP_ASTR ,JP_TILD ,JP_CIRC ,JP_PIPE ,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
|
||||||
|
_______ ,JP_AT ,JP_COLN ,KC_GRV ,JP_SLSH ,JP_MINS , JP_LBRC ,JP_RBRC ,JP_DOT ,JP_SLSH ,JP_MINS ,_______ ,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
|
||||||
|
_______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , JP_LCBR ,JP_RCBR ,_______ ,_______ ,JP_CIRC ,_______ ,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
|
||||||
|
_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,JP_LABK ,JP_UNDS ,JP_RABK
|
||||||
|
//└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
|
||||||
|
),
|
||||||
|
|
||||||
|
[_LIGHT] = LAYOUT(
|
||||||
|
//┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐
|
||||||
|
_______ ,RGB_HUI ,RGB_HUD ,RGB_SAI ,RGB_SAD ,RGB_VAI ,RGB_VAD , RGB_HUI ,RGB_HUD ,RGB_SAI ,RGB_SAD ,RGB_VAI ,RGB_VAD ,XXXXXXX ,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
|
||||||
|
_______ ,RGB_M_P ,RGB_M_SW ,RGB_M_X,XXXXXXX ,XXXXXXX ,XXXXXXX , RGB_M_P ,RGB_M_SW ,RGB_M_X ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
|
||||||
|
_______ ,RGB_M_B ,RGB_M_SN ,RGB_M_G,XXXXXXX ,XXXXXXX , RGB_M_B ,RGB_M_SN ,RGB_M_G ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
|
||||||
|
_______ ,RGB_M_R ,RGB_M_K ,RGB_M_T ,XXXXXXX ,XXXXXXX , RGB_M_R ,RGB_M_K ,RGB_M_T ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
|
||||||
|
_______ ,_______ ,_______ ,_______ ,_______ ,RGB_MOD ,RGB_TOG , RGB_TOG ,RGB_MOD ,TO_QWER ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX
|
||||||
|
//└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
|
||||||
|
)
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#ifdef RGBLIGHT_ENABLE
|
||||||
|
void keyboard_post_init_user(void) {
|
||||||
|
rgblight_mode_noeeprom(RGBLIGHT_MODE_RAINBOW_SWIRL);
|
||||||
|
};
|
||||||
|
#endif
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
# The JIS keymap for Kudox Keyboard Rev3.0
|
||||||
Whitespace-only changes.
@@ -0,0 +1,23 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
#define LAYOUT( \
|
||||||
|
L00, L01, L02, L03, L04, L05, L06, R06, R05, R04, R03, R02, R01, R00, \
|
||||||
|
L10, L11, L12, L13, L14, L15, L16, R16, R15, R14, R13, R12, R11, R10, \
|
||||||
|
L20, L21, L22, L23, L24, L25, R25, R24, R23, R22, R21, R20, \
|
||||||
|
L30, L31, L32, L33, L34, L35, R35, R34, R33, R32, R31, R30, \
|
||||||
|
L40, L41, L42, L43, L44, L45, L46, R46, R45, R44, R43, R42, R41, R40 \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{ L00, L01, L02, L03, L04, L05, L06 }, \
|
||||||
|
{ L10, L11, L12, L13, L14, L15, L16 }, \
|
||||||
|
{ L20, L21, L22, L23, L24, L25 }, \
|
||||||
|
{ L30, L31, L32, L33, L34, L35 }, \
|
||||||
|
{ L40, L41, L42, L43, L44, L45, L46 }, \
|
||||||
|
{ R00, R01, R02, R03, R04, R05, R06 }, \
|
||||||
|
{ R10, R11, R12, R13, R14, R15, R16 }, \
|
||||||
|
{ R20, R21, R22, R23, R24, R25 }, \
|
||||||
|
{ R30, R31, R32, R33, R34, R35 }, \
|
||||||
|
{ R40, R41, R42, R43, R44, R45, R46 } \
|
||||||
|
}
|
||||||
Whitespace-only changes.
@@ -33,4 +33,4 @@ RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
|
|||||||
|
|
||||||
SPLIT_KEYBOARD = yes
|
SPLIT_KEYBOARD = yes
|
||||||
|
|
||||||
DEFAULT_FOLDER = kudox/rev2
|
DEFAULT_FOLDER = kudox/rev3
|
||||||
@@ -148,6 +148,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#define RGB_DI_PIN D3
|
#define RGB_DI_PIN D3
|
||||||
|
|
||||||
#define RGBLED_NUM 8
|
#define RGBLED_NUM 8
|
||||||
|
#define RGBLIGHT_SPLIT
|
||||||
|
|
||||||
#define RGBLIGHT_HUE_STEP 10
|
#define RGBLIGHT_HUE_STEP 10
|
||||||
#define RGBLIGHT_SAT_STEP 17
|
#define RGBLIGHT_SAT_STEP 17
|
||||||
|
|||||||
@@ -21,8 +21,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
|
|
||||||
|
|
||||||
/* USB Device descriptor parameter */
|
/* USB Device descriptor parameter */
|
||||||
#define VENDOR_ID 0xFEED
|
#define VENDOR_ID 0x6E6D
|
||||||
#define PRODUCT_ID 0x6060
|
#define PRODUCT_ID 0x0001
|
||||||
#define DEVICE_VER 0x0001
|
#define DEVICE_VER 0x0001
|
||||||
#define MANUFACTURER KBDFans
|
#define MANUFACTURER KBDFans
|
||||||
#define PRODUCT NIU Mini
|
#define PRODUCT NIU Mini
|
||||||
|
|||||||
@@ -0,0 +1,79 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
#define LOWER FN_MO13
|
||||||
|
#define RAISE FN_MO23
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
/* Layer 0
|
||||||
|
* ,-----------------------------------------------------------------------------------.
|
||||||
|
* | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
|
||||||
|
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||||
|
* | Esc | A | S | D | F | G | H | J | K | L | ; | " |
|
||||||
|
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||||
|
* | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | Ctrl | GUI | Caps | Alt |Layer1| Space| Space|Layer2| Left | Down | Up |Right |
|
||||||
|
* `-----------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[0] = LAYOUT_ortho_4x12(
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||||
|
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
|
||||||
|
KC_LCTL, KC_LGUI, KC_CAPS, KC_LALT, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Layer 1
|
||||||
|
* ,-----------------------------------------------------------------------------------.
|
||||||
|
* | ` | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | Del |
|
||||||
|
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||||
|
* | | Vol- | Vol+ | Mute | | | | F11 | F12 | | | |
|
||||||
|
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||||
|
* | | | | | | | | | | | | |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | Reset| | | | | | | | | | | |
|
||||||
|
* `-----------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[1] = LAYOUT_ortho_4x12(
|
||||||
|
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL,
|
||||||
|
_______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, KC_F11, KC_F12, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Layer 2 (r_ Indicates RGB Controls)
|
||||||
|
* ,-----------------------------------------------------------------------------------.
|
||||||
|
* | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | |
|
||||||
|
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||||
|
* | |r_TOG |r_Mode|r_Hue+|r_Hue-| | | - | = | [ | ] | \ |
|
||||||
|
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||||
|
* | |BL_TOG|BL_STEP| | | | | | | | | |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | | | | | | | | | | | | |
|
||||||
|
* `-----------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[2] = LAYOUT_ortho_4x12(
|
||||||
|
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
|
||||||
|
_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, _______, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||||
|
_______, BL_TOGG, BL_STEP, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Layer 3 (r_ Indicates RGB Controls)
|
||||||
|
* ,-----------------------------------------------------------------------------------.
|
||||||
|
* | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | |
|
||||||
|
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||||
|
* | |r_TOG |r_Mode|r_Hue+|r_Hue-| | | - | = | [ | ] | \ |
|
||||||
|
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||||
|
* | |BL_TOG|BL_STEP| | | | | | | | | |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | RESET| | | | | | | | | | | |
|
||||||
|
* `-----------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[3] = LAYOUT_ortho_4x12(
|
||||||
|
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
|
||||||
|
_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, _______, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||||
|
_______, BL_TOGG, BL_STEP, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
};
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
VIA_ENABLE = yes
|
||||||
|
LTO_ENABLE = yes
|
||||||
@@ -1 +0,0 @@
|
|||||||
secrets.h
|
|
||||||
@@ -1,37 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
|
|
||||||
#ifdef AUDIO_ENABLE
|
|
||||||
#define STARTUP_SONG SONG(PLANCK_SOUND)
|
|
||||||
// #define STARTUP_SONG SONG(NO_SOUND)
|
|
||||||
#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 2
|
|
||||||
|
|
||||||
// Leader Key
|
|
||||||
#define LEADER_TIMEOUT 250
|
|
||||||
#define LEADER_PER_KEY_TIMING
|
|
||||||
|
|
||||||
// Tap dance
|
|
||||||
#define TAPPING_TERM 200
|
|
||||||
@@ -1,392 +0,0 @@
|
|||||||
#include QMK_KEYBOARD_H
|
|
||||||
#include "no_keycodes.h"
|
|
||||||
|
|
||||||
#if __has_include("secrets.h")
|
|
||||||
# include "secrets.h"
|
|
||||||
#else
|
|
||||||
# define mail_str ""
|
|
||||||
# define pwd_str ""
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// layer definitions
|
|
||||||
enum planck_layers {
|
|
||||||
_DEFAULT,
|
|
||||||
_LOWER,
|
|
||||||
_RAISE,
|
|
||||||
_GAME,
|
|
||||||
_GLOW
|
|
||||||
};
|
|
||||||
|
|
||||||
// sounds
|
|
||||||
#ifdef AUDIO_ENABLE
|
|
||||||
float gamesong[][2] = SONG(MARIO_MUSHROOM);
|
|
||||||
float defsong[][2] = SONG(PLOVER_GOODBYE_SOUND);
|
|
||||||
float failed[][2] = SONG(TERMINAL_SOUND);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// leader key
|
|
||||||
bool leader_succeed;
|
|
||||||
bool leader_layer_game;
|
|
||||||
bool leader_layer_def;
|
|
||||||
LEADER_EXTERNS();
|
|
||||||
|
|
||||||
void matrix_scan_user(void) {
|
|
||||||
LEADER_DICTIONARY() {
|
|
||||||
leader_succeed = leading = false;
|
|
||||||
leader_layer_game = false;
|
|
||||||
leader_layer_def = false;
|
|
||||||
|
|
||||||
SEQ_TWO_KEYS(KC_P, KC_P) {
|
|
||||||
SEND_STRING(pwd_str);
|
|
||||||
leader_succeed = true;
|
|
||||||
}
|
|
||||||
SEQ_TWO_KEYS(KC_P, KC_M) {
|
|
||||||
SEND_STRING(mail_str);
|
|
||||||
leader_succeed = true;
|
|
||||||
}
|
|
||||||
SEQ_TWO_KEYS(KC_B, KC_B) {
|
|
||||||
SEND_STRING("build"SS_TAP(X_ENTER));
|
|
||||||
leader_succeed = true;
|
|
||||||
}
|
|
||||||
SEQ_TWO_KEYS(KC_B, KC_F) {
|
|
||||||
SEND_STRING("flash"SS_TAP(X_ENTER));
|
|
||||||
reset_keyboard();
|
|
||||||
leader_succeed = true;
|
|
||||||
}
|
|
||||||
SEQ_TWO_KEYS(KC_L, KC_G) {
|
|
||||||
layer_on(_GAME);
|
|
||||||
leader_layer_game = true;
|
|
||||||
}
|
|
||||||
SEQ_TWO_KEYS(KC_L, KC_D) {
|
|
||||||
layer_off(_GAME);
|
|
||||||
leader_layer_def = true;
|
|
||||||
}
|
|
||||||
leader_end();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void leader_end(void) {
|
|
||||||
if (leader_succeed) {
|
|
||||||
// do nothing
|
|
||||||
} else if (leader_layer_game) {
|
|
||||||
#ifdef AUDIO_ENABLE
|
|
||||||
PLAY_SONG(gamesong);
|
|
||||||
#endif
|
|
||||||
} else if (leader_layer_def) {
|
|
||||||
#ifdef AUDIO_ENABLE
|
|
||||||
PLAY_SONG(defsong);
|
|
||||||
#endif
|
|
||||||
} else {
|
|
||||||
#ifdef AUDIO_ENABLE
|
|
||||||
PLAY_SONG(failed);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// tap dance definitions
|
|
||||||
typedef struct {
|
|
||||||
bool is_press_action;
|
|
||||||
int state;
|
|
||||||
} tap;
|
|
||||||
|
|
||||||
enum {
|
|
||||||
SINGLE_TAP = 1,
|
|
||||||
SINGLE_HOLD = 2,
|
|
||||||
DOUBLE_TAP = 3,
|
|
||||||
DOUBLE_HOLD = 4,
|
|
||||||
DOUBLE_SINGLE_TAP = 5,
|
|
||||||
TRIPLE_TAP = 6,
|
|
||||||
TRIPLE_HOLD = 7
|
|
||||||
};
|
|
||||||
|
|
||||||
enum {
|
|
||||||
TD_LSFT = 0,
|
|
||||||
TD_LCTL,
|
|
||||||
TD_RSFT,
|
|
||||||
TD_RCTL
|
|
||||||
};
|
|
||||||
|
|
||||||
int cur_dance (qk_tap_dance_state_t *state);
|
|
||||||
void lsft_finished (qk_tap_dance_state_t *state, void *user_data);
|
|
||||||
void lsft_reset (qk_tap_dance_state_t *state, void *user_data);
|
|
||||||
void rsft_finished (qk_tap_dance_state_t *state, void *user_data);
|
|
||||||
void rsft_reset (qk_tap_dance_state_t *state, void *user_data);
|
|
||||||
void lctl_finished (qk_tap_dance_state_t *state, void *user_data);
|
|
||||||
void lctl_reset (qk_tap_dance_state_t *state, void *user_data);
|
|
||||||
void rctl_finished (qk_tap_dance_state_t *state, void *user_data);
|
|
||||||
void rctl_reset (qk_tap_dance_state_t *state, void *user_data);
|
|
||||||
|
|
||||||
// layer declarations
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
/* Default
|
|
||||||
* ,-----------------------------------------------------------------------------------.
|
|
||||||
* | Tab | Q | W | E | R | T | Y | U | I | O | Å | BkSp |
|
|
||||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
|
||||||
* | Esc | A | S | D | F | G | H | J | K | L | Ø | Æ |
|
|
||||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
|
||||||
* | Shift| Z | X | C | V | B | N | M | P | , | . | Shift|
|
|
||||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
|
||||||
* | Ctrl | Lead | Win | Alt | Lower| Space| Enter| Raise| AltGr| App | Lead | Ctrl |
|
|
||||||
* `-----------------------------------------------------------------------------------'
|
|
||||||
*/
|
|
||||||
[_DEFAULT] = LAYOUT_planck_grid(
|
|
||||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, NO_AA, KC_BSPC,
|
|
||||||
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, NO_OE, NO_AE,
|
|
||||||
TD(TD_LSFT), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_P, KC_COMM, KC_DOT, TD(TD_RSFT),
|
|
||||||
TD(TD_LCTL), KC_LEAD, KC_LGUI, KC_LALT, MO(_LOWER), KC_SPC, KC_ENT, MO(_RAISE), KC_ALGR, KC_APP, KC_LEAD, TD(TD_RCTL)
|
|
||||||
),
|
|
||||||
/* Lower
|
|
||||||
* ,-----------------------------------------------------------------------------------.
|
|
||||||
* | Tab | <Word| Up | Word>| PgUp | | | | F7 | F8 | F9 | Del |
|
|
||||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
|
||||||
* | BkSp | Left | Down | Right| PgDn | | | | F4 | F5 | F6 | |
|
|
||||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
|
||||||
* | Shift| Home | | End | | | | | F1 | F2 | F3 | Shift|
|
|
||||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
|
||||||
* | Ctrl | | Win | Alt | Lower| M_PP |M_Next| | | Mute | VolD | VolUp|
|
|
||||||
* `-----------------------------------------------------------------------------------'
|
|
||||||
*/
|
|
||||||
[_LOWER] = LAYOUT_planck_grid(
|
|
||||||
KC_TRNS, LCTL(KC_LEFT), KC_UP, LCTL(KC_RIGHT), KC_PGUP, KC_NO, KC_NO, KC_NO, KC_F7, KC_F8, KC_F9, KC_DEL,
|
|
||||||
KC_BSPC, KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDN, KC_NO, KC_NO, KC_NO, KC_F4, KC_F5, KC_F6, KC_NO,
|
|
||||||
KC_TRNS, KC_HOME, KC_NO, KC_END, KC_NO, KC_NO, KC_NO, KC_NO, KC_F1, KC_F2, KC_F3, KC_TRNS,
|
|
||||||
KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT, KC_NO, KC_NO, KC_MUTE, KC_VOLD, KC_VOLU
|
|
||||||
),
|
|
||||||
/* Raise
|
|
||||||
* ,-----------------------------------------------------------------------------------.
|
|
||||||
* | Tab | ! | ? | # | * | | | = | / | 7 | 8 | 9 | Ins |
|
|
||||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
|
||||||
* | BkSp | @ | & | $ | % | ~ | + | \ | 4 | 5 | 6 | |
|
|
||||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
|
||||||
* | Shift| ' | " | ¨ | | | - | 0 | 1 | 2 | 3 | Shift|
|
|
||||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
|
||||||
* | Ctrl | | Win | Alt | | Space| Enter| Raise| AltGr| | | |
|
|
||||||
* `-----------------------------------------------------------------------------------'
|
|
||||||
*/
|
|
||||||
[_RAISE] = LAYOUT_planck_grid(
|
|
||||||
KC_TRNS, NO_EXCL, NO_QEST, NO_HASH, NO_ASTE, NO_PIPE, NO_EQUA, NO_FSLS, KC_7, KC_8, KC_9, KC_INS,
|
|
||||||
KC_BSPC, NO_ALFA, NO_AMPE, NO_USDO, NO_PERC, NO_TILD, NO_PLUS, NO_BSLS, KC_4, KC_5, KC_6, KC_NO,
|
|
||||||
KC_TRNS, NO_APOS, NO_QUOT, NO_UMLA, KC_NO, KC_NO, NO_DASH, KC_0, KC_1, KC_2, KC_3, KC_TRNS,
|
|
||||||
KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO
|
|
||||||
),
|
|
||||||
/* Game
|
|
||||||
* ,-----------------------------------------------------------------------------------.
|
|
||||||
* | Tab | Q | W | E | R | T | Y | U | I | O | | BkSp |
|
|
||||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
|
||||||
* | Esc | A | S | D | F | G | H | J | K | L | | |
|
|
||||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
|
||||||
* | Shift| Z | X | C | V | B | N | M | P | , | . | |
|
|
||||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
|
||||||
* | Ctrl | Lead | | Alt | Lower| Space| Enter| Lower| | | Lead | |
|
|
||||||
* `-----------------------------------------------------------------------------------'
|
|
||||||
*/
|
|
||||||
[_GAME] = LAYOUT_planck_grid(
|
|
||||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_NO, KC_BSPC,
|
|
||||||
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_NO, KC_NO,
|
|
||||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_P, KC_COMM, KC_DOT, KC_NO,
|
|
||||||
KC_LCTL, KC_LEAD, KC_NO, KC_LALT, MO(_GLOW), KC_SPC, KC_ENT, MO(_GLOW), KC_NO, KC_NO, KC_LEAD, KC_NO
|
|
||||||
),
|
|
||||||
/* Game lower
|
|
||||||
* ,-----------------------------------------------------------------------------------.
|
|
||||||
* | Tab | 1 | 2 | 3 | | | | | | | | Steam|
|
|
||||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
|
||||||
* | Esc | 4 | 5 | 6 | | | | | | | | F12 |
|
|
||||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
|
||||||
* | Shift| 7 | 8 | 9 | 0 | | | | | | | |
|
|
||||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
|
||||||
* | Ctrl | | | Alt | | PlyPa| Next | | | Mute | VolD | VolUp|
|
|
||||||
* `-----------------------------------------------------------------------------------'
|
|
||||||
*/
|
|
||||||
[_GLOW] = LAYOUT_planck_grid(
|
|
||||||
KC_TRNS, KC_1, KC_2, KC_3, KC_PPLS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, LSFT(KC_F7),
|
|
||||||
KC_TRNS, KC_4, KC_5, KC_6, KC_PMNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12,
|
|
||||||
KC_TRNS, KC_7, KC_8, KC_9, KC_0, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MUTE,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT, KC_NO, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU
|
|
||||||
)
|
|
||||||
};
|
|
||||||
|
|
||||||
// tap dance declarations
|
|
||||||
int cur_dance (qk_tap_dance_state_t *state) {
|
|
||||||
if (state->count == 1) {
|
|
||||||
if (state->interrupted || !state->pressed) return SINGLE_TAP;
|
|
||||||
else return SINGLE_HOLD;
|
|
||||||
}
|
|
||||||
else if (state->count == 2) {
|
|
||||||
if (state->interrupted) return DOUBLE_SINGLE_TAP;
|
|
||||||
else if (state->pressed) return DOUBLE_HOLD;
|
|
||||||
else return DOUBLE_TAP;
|
|
||||||
}
|
|
||||||
if (state->count == 3) {
|
|
||||||
if (state->interrupted || !state->pressed) return TRIPLE_TAP;
|
|
||||||
else return TRIPLE_HOLD;
|
|
||||||
}
|
|
||||||
else return 8;
|
|
||||||
}
|
|
||||||
|
|
||||||
static tap xtap_state = {
|
|
||||||
.is_press_action = true,
|
|
||||||
.state = 0
|
|
||||||
};
|
|
||||||
|
|
||||||
void lsft_finished (qk_tap_dance_state_t *state, void *user_data) {
|
|
||||||
xtap_state.state = cur_dance(state);
|
|
||||||
switch (xtap_state.state) {
|
|
||||||
case SINGLE_TAP:
|
|
||||||
register_code16(LSFT(KC_8));
|
|
||||||
break;
|
|
||||||
case SINGLE_HOLD:
|
|
||||||
register_code(KC_LSFT);
|
|
||||||
break;
|
|
||||||
case DOUBLE_TAP:
|
|
||||||
register_code(KC_NUBS);
|
|
||||||
break;
|
|
||||||
case DOUBLE_SINGLE_TAP:
|
|
||||||
register_code(KC_NUBS);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void lsft_reset (qk_tap_dance_state_t *state, void *user_data) {
|
|
||||||
switch (xtap_state.state) {
|
|
||||||
case SINGLE_TAP:
|
|
||||||
unregister_code16(LSFT(KC_8));
|
|
||||||
break;
|
|
||||||
case SINGLE_HOLD:
|
|
||||||
unregister_code(KC_LSFT);
|
|
||||||
break;
|
|
||||||
case DOUBLE_TAP:
|
|
||||||
unregister_code(KC_NUBS);
|
|
||||||
break;
|
|
||||||
case DOUBLE_SINGLE_TAP:
|
|
||||||
unregister_code(KC_NUBS);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
xtap_state.state = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void rsft_finished (qk_tap_dance_state_t *state, void *user_data) {
|
|
||||||
xtap_state.state = cur_dance(state);
|
|
||||||
switch (xtap_state.state) {
|
|
||||||
case SINGLE_TAP:
|
|
||||||
register_code16(LSFT(KC_9));
|
|
||||||
break;
|
|
||||||
case SINGLE_HOLD:
|
|
||||||
register_code(KC_RSFT);
|
|
||||||
break;
|
|
||||||
case DOUBLE_TAP:
|
|
||||||
register_code16(LSFT(KC_NUBS));
|
|
||||||
break;
|
|
||||||
case DOUBLE_SINGLE_TAP:
|
|
||||||
register_code16(LSFT(KC_NUBS));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void rsft_reset (qk_tap_dance_state_t *state, void *user_data) {
|
|
||||||
switch (xtap_state.state) {
|
|
||||||
case SINGLE_TAP:
|
|
||||||
unregister_code16(LSFT(KC_9));
|
|
||||||
break;
|
|
||||||
case SINGLE_HOLD:
|
|
||||||
unregister_code(KC_RSFT);
|
|
||||||
break;
|
|
||||||
case DOUBLE_TAP:
|
|
||||||
unregister_code16(LSFT(KC_NUBS));
|
|
||||||
break;
|
|
||||||
case DOUBLE_SINGLE_TAP:
|
|
||||||
unregister_code16(LSFT(KC_NUBS));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
xtap_state.state = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void lctl_finished (qk_tap_dance_state_t *state, void *user_data) {
|
|
||||||
xtap_state.state = cur_dance(state);
|
|
||||||
switch (xtap_state.state) {
|
|
||||||
case SINGLE_TAP:
|
|
||||||
register_mods(MOD_BIT(KC_ALGR));
|
|
||||||
register_code(KC_7);
|
|
||||||
break;
|
|
||||||
case SINGLE_HOLD:
|
|
||||||
register_code(KC_LCTL);
|
|
||||||
break;
|
|
||||||
case DOUBLE_TAP:
|
|
||||||
register_mods(MOD_BIT(KC_ALGR));
|
|
||||||
register_code(KC_8);
|
|
||||||
break;
|
|
||||||
case DOUBLE_SINGLE_TAP:
|
|
||||||
register_mods(MOD_BIT(KC_ALGR));
|
|
||||||
register_code(KC_8);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void lctl_reset (qk_tap_dance_state_t *state, void *user_data) {
|
|
||||||
switch (xtap_state.state) {
|
|
||||||
case SINGLE_TAP:
|
|
||||||
unregister_code(KC_7);
|
|
||||||
unregister_mods(MOD_BIT(KC_ALGR));
|
|
||||||
break;
|
|
||||||
case SINGLE_HOLD:
|
|
||||||
unregister_code(KC_LCTL);
|
|
||||||
break;
|
|
||||||
case DOUBLE_TAP:
|
|
||||||
unregister_code(KC_8);
|
|
||||||
unregister_mods(MOD_BIT(KC_ALGR));
|
|
||||||
break;
|
|
||||||
case DOUBLE_SINGLE_TAP:
|
|
||||||
unregister_code(KC_8);
|
|
||||||
unregister_mods(MOD_BIT(KC_ALGR));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
xtap_state.state = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void rctl_finished (qk_tap_dance_state_t *state, void *user_data) {
|
|
||||||
xtap_state.state = cur_dance(state);
|
|
||||||
switch (xtap_state.state) {
|
|
||||||
case SINGLE_TAP:
|
|
||||||
register_mods(MOD_BIT(KC_ALGR));
|
|
||||||
register_code(KC_0);
|
|
||||||
break;
|
|
||||||
case SINGLE_HOLD:
|
|
||||||
register_code(KC_RCTL);
|
|
||||||
break;
|
|
||||||
case DOUBLE_TAP:
|
|
||||||
register_mods(MOD_BIT(KC_ALGR));
|
|
||||||
register_code(KC_9);
|
|
||||||
break;
|
|
||||||
case DOUBLE_SINGLE_TAP:
|
|
||||||
register_mods(MOD_BIT(KC_ALGR));
|
|
||||||
register_code(KC_9);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void rctl_reset (qk_tap_dance_state_t *state, void *user_data) {
|
|
||||||
switch (xtap_state.state) {
|
|
||||||
case SINGLE_TAP:
|
|
||||||
unregister_code(KC_0);
|
|
||||||
unregister_mods(MOD_BIT(KC_ALGR));
|
|
||||||
break;
|
|
||||||
case SINGLE_HOLD:
|
|
||||||
unregister_code(KC_RCTL);
|
|
||||||
break;
|
|
||||||
case DOUBLE_TAP:
|
|
||||||
unregister_code(KC_9);
|
|
||||||
unregister_mods(MOD_BIT(KC_ALGR));
|
|
||||||
break;
|
|
||||||
case DOUBLE_SINGLE_TAP:
|
|
||||||
unregister_code(KC_9);
|
|
||||||
unregister_mods(MOD_BIT(KC_ALGR));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
xtap_state.state = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
qk_tap_dance_action_t tap_dance_actions[] = {
|
|
||||||
[TD_LSFT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, lsft_finished, lsft_reset),
|
|
||||||
[TD_RSFT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, rsft_finished, rsft_reset),
|
|
||||||
[TD_LCTL] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, lctl_finished, lctl_reset),
|
|
||||||
[TD_RCTL] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, rctl_finished, rctl_reset),
|
|
||||||
};
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
// øæå
|
|
||||||
#define NO_OE KC_SCLN
|
|
||||||
#define NO_AE KC_QUOT
|
|
||||||
#define NO_AA KC_LBRC
|
|
||||||
// rename
|
|
||||||
#define NO_ANBR KC_NUBS
|
|
||||||
#define NO_APOS KC_BSLS
|
|
||||||
#define NO_BSLS KC_EQL
|
|
||||||
#define NO_DASH KC_SLSH
|
|
||||||
#define NO_PLUS KC_MINS
|
|
||||||
#define NO_UMLA KC_RBRC
|
|
||||||
#define NO_PIPE KC_GRV
|
|
||||||
// shifted
|
|
||||||
#define NO_EXCL LSFT(KC_1)
|
|
||||||
#define NO_QUOT LSFT(KC_2)
|
|
||||||
#define NO_HASH LSFT(KC_3)
|
|
||||||
#define NO_PERC LSFT(KC_5)
|
|
||||||
#define NO_AMPE LSFT(KC_6)
|
|
||||||
#define NO_FSLS LSFT(KC_7)
|
|
||||||
#define NO_LPAR LSFT(KC_8)
|
|
||||||
#define NO_RPAR LSFT(KC_9)
|
|
||||||
#define NO_EQUA LSFT(KC_0)
|
|
||||||
#define NO_QEST LSFT(KC_MINS)
|
|
||||||
#define NO_ASTE LSFT(KC_BSLS)
|
|
||||||
// altgr
|
|
||||||
#define NO_ALFA ALGR(KC_2)
|
|
||||||
#define NO_USDO ALGR(KC_4)
|
|
||||||
#define NO_TILD ALGR(KC_RBRC)
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
About
|
|
||||||
------
|
|
||||||
|
|
||||||
A simple Norwegian grid layout using Leader Key, Tap Dance and audio.
|
|
||||||
Loaded 100 of 184 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user