mirror of
https://github.com/qmk/qmk_firmware.git
synced 2024-11-21 19:09:25 +00:00
Compare commits
11 Commits
848da72b13
...
8b0534e3d1
Author | SHA1 | Date | |
---|---|---|---|
|
8b0534e3d1 | ||
|
36b5559b99 | ||
|
39161b9ee7 | ||
|
074bbbfb21 | ||
|
638b22d057 | ||
|
9bea332a21 | ||
|
8cbcdcac62 | ||
|
88afd53b1f | ||
|
d081fe665d | ||
|
df40226adc | ||
|
90854a684c |
@ -215,7 +215,7 @@ else
|
||||
COMMON_VPATH += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/flash
|
||||
COMMON_VPATH += $(DRIVER_PATH)/flash
|
||||
SRC += eeprom_driver.c eeprom_legacy_emulated_flash.c legacy_flash_ops.c
|
||||
else ifneq ($(filter $(MCU_SERIES),STM32F1xx STM32F3xx STM32F4xx STM32L4xx STM32G4xx WB32F3G71xx WB32FQ95xx GD32VF103),)
|
||||
else ifneq ($(filter $(MCU_SERIES),STM32F1xx STM32F3xx STM32F4xx STM32L4xx STM32G4xx WB32F3G71xx WB32FQ95xx AT32F415 GD32VF103),)
|
||||
# Wear-leveling EEPROM implementation, backed by MCU flash
|
||||
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_WEAR_LEVELING
|
||||
SRC += eeprom_driver.c eeprom_wear_leveling.c
|
||||
|
@ -36,6 +36,7 @@ GENERIC_FEATURES = \
|
||||
HAPTIC \
|
||||
KEY_LOCK \
|
||||
KEY_OVERRIDE \
|
||||
LAYER_LOCK \
|
||||
LEADER \
|
||||
MAGIC \
|
||||
MOUSEKEY \
|
||||
|
@ -3,5 +3,12 @@
|
||||
"0x7C20": "!delete!", // old QK_OUTPUT_AUTO
|
||||
"0x7C21": "!delete!", // old QK_OUTPUT_USB
|
||||
"0x7C22": "!delete!", // old QK_OUTPUT_BLUETOOTH
|
||||
"0x7C7B": {
|
||||
"group": "quantum",
|
||||
"key": "QK_LAYER_LOCK",
|
||||
"aliases": [
|
||||
"QK_LLCK"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -64,6 +64,9 @@
|
||||
"WEAR_LEVELING_BACKING_SIZE": {"info_key": "eeprom.wear_leveling.backing_size", "value_type": "int", "to_json": false},
|
||||
"WEAR_LEVELING_LOGICAL_SIZE": {"info_key": "eeprom.wear_leveling.logical_size", "value_type": "int", "to_json": false},
|
||||
|
||||
// Layer locking
|
||||
"LAYER_LOCK_IDLE_TIMEOUT": {"info_key": "layer_lock.timeout", "value_type": "int"},
|
||||
|
||||
// Indicators
|
||||
"LED_CAPS_LOCK_PIN": {"info_key": "indicators.caps_lock"},
|
||||
"LED_NUM_LOCK_PIN": {"info_key": "indicators.num_lock"},
|
||||
|
@ -248,45 +248,6 @@
|
||||
"handwired/jscotto/scottostarter": {
|
||||
"target": "handwired/scottokeebs/scottostarter"
|
||||
},
|
||||
"helix/pico/sc/back": {
|
||||
"target": "helix/pico/sc"
|
||||
},
|
||||
"helix/pico/sc/under": {
|
||||
"target": "helix/pico/sc"
|
||||
},
|
||||
"helix/rev2/back/oled": {
|
||||
"target": "helix/rev2/back"
|
||||
},
|
||||
"helix/rev2/oled": {
|
||||
"target": "helix/rev2"
|
||||
},
|
||||
"helix/rev2/oled/back": {
|
||||
"target": "helix/rev2/back"
|
||||
},
|
||||
"helix/rev2/oled/under": {
|
||||
"target": "helix/rev2/under"
|
||||
},
|
||||
"helix/rev2/sc/back": {
|
||||
"target": "helix/rev2/sc"
|
||||
},
|
||||
"helix/rev2/sc/oled": {
|
||||
"target": "helix/rev2/sc"
|
||||
},
|
||||
"helix/rev2/sc/oledback": {
|
||||
"target": "helix/rev2/sc"
|
||||
},
|
||||
"helix/rev2/sc/oledunder": {
|
||||
"target": "helix/rev2/sc"
|
||||
},
|
||||
"helix/rev2/sc/under": {
|
||||
"target": "helix/rev2/sc"
|
||||
},
|
||||
"helix/rev2/under": {
|
||||
"target": "helix/rev2/sc"
|
||||
},
|
||||
"helix/rev2/under/oled": {
|
||||
"target": "helix/rev2/under"
|
||||
},
|
||||
"honeycomb": {
|
||||
"target": "keyhive/honeycomb"
|
||||
},
|
||||
|
@ -92,6 +92,7 @@
|
||||
"GD32VF103",
|
||||
"WB32F3G71",
|
||||
"WB32FQ95",
|
||||
"AT32F415",
|
||||
"atmega16u2",
|
||||
"atmega32u2",
|
||||
"atmega16u4",
|
||||
@ -216,6 +217,7 @@
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"apm32-dfu",
|
||||
"at32-dfu",
|
||||
"atmel-dfu",
|
||||
"bootloadhid",
|
||||
"caterina",
|
||||
@ -373,6 +375,12 @@
|
||||
}
|
||||
},
|
||||
"keycodes": {"$ref": "qmk.definitions.v1#/keycode_decl_array"},
|
||||
"layer_lock": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"timeout": {"$ref": "qmk.definitions.v1#/unsigned_int"}
|
||||
}
|
||||
},
|
||||
"layout_aliases": {
|
||||
"type": "object",
|
||||
"additionalProperties": {"$ref": "qmk.definitions.v1#/layout_macro"}
|
||||
|
@ -123,6 +123,7 @@
|
||||
{ "text": "Key Lock", "link": "/features/key_lock" },
|
||||
{ "text": "Key Overrides", "link": "/features/key_overrides" },
|
||||
{ "text": "Layers", "link": "/feature_layers" },
|
||||
{ "text": "Layer Lock", "link": "/features/layer_lock" },
|
||||
{ "text": "One Shot Keys", "link": "/one_shot_keys" },
|
||||
{ "text": "OS Detection", "link": "/features/os_detection" },
|
||||
{ "text": "Raw HID", "link": "/features/rawhid" },
|
||||
|
@ -57,6 +57,10 @@ You can also use any ARM chip with USB that [ChibiOS](https://www.chibios.org) s
|
||||
* [WB32F3G71xx](http://www.westberrytech.com)
|
||||
* [WB32FQ95xx](http://www.westberrytech.com)
|
||||
|
||||
### Artery (AT32)
|
||||
|
||||
* [AT32F415](https://www.arterychip.com/en/product/AT32F415.jsp)
|
||||
|
||||
### NXP (Kinetis)
|
||||
|
||||
* [MKL26Z64](https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/kl-series-cortex-m0-plus/kinetis-kl2x-72-96-mhz-usb-ultra-low-power-microcontrollers-mcus-based-on-arm-cortex-m0-plus-core:KL2x)
|
||||
|
@ -98,6 +98,7 @@ The device name here is the name that appears in Zadig, and may not be what the
|
||||
|`bootloadhid` |HIDBoot |`16C0:05DF` |HidUsb |
|
||||
|`usbasploader`|USBasp |`16C0:05DC` |libusbK|
|
||||
|`apm32-dfu` |APM32 DFU ISP Mode |`314B:0106` |WinUSB |
|
||||
|`at32-dfu` |AT32 Bootloader DFU |`2E3C:DF11` |WinUSB |
|
||||
|`stm32-dfu` |STM32 BOOTLOADER |`0483:DF11` |WinUSB |
|
||||
|`gd32v-dfu` |GD32V BOOTLOADER |`28E9:0189` |WinUSB |
|
||||
|`kiibohd` |Kiibohd DFU Bootloader |`1C11:B007` |WinUSB |
|
||||
|
@ -17,6 +17,9 @@ These functions allow you to activate layers in various ways. Note that layers a
|
||||
* `TO(layer)` - activates *layer* and de-activates all other layers (except your default layer). This function is special, because instead of just adding/removing one layer to your active layer stack, it will completely replace your current active layers, uniquely allowing you to replace higher layers with a lower one. This is activated on keydown (as soon as the key is pressed).
|
||||
* `TT(layer)` - Layer Tap-Toggle. If you hold the key down, *layer* is activated, and then is de-activated when you let go (like `MO`). If you repeatedly tap it, the layer will be toggled on or off (like `TG`). It needs 5 taps by default, but you can change this by defining `TAPPING_TOGGLE` -- for example, `#define TAPPING_TOGGLE 2` to toggle on just two taps.
|
||||
|
||||
See also the [Layer Lock key](features/layer_lock), which locks the highest
|
||||
active layer until pressed again.
|
||||
|
||||
### Caveats {#caveats}
|
||||
|
||||
Currently, the `layer` argument of `LT()` is limited to layers 0-15, and the `kc` argument to the [Basic Keycode set](keycodes_basic), meaning you can't use keycodes like `LCTL()`, `KC_TILD`, or anything greater than `0xFF`. This is because QMK uses 16-bit keycodes, of which 4 bits are used for the function identifier and 4 bits for the layer, leaving only 8 bits for the keycode.
|
||||
|
139
docs/features/layer_lock.md
Normal file
139
docs/features/layer_lock.md
Normal file
@ -0,0 +1,139 @@
|
||||
# Layer Lock
|
||||
|
||||
Some [layer switches](../feature_layers#switching-and-toggling-layers) access
|
||||
the layer by holding the key, including momentary layer `MO(layer)` and layer
|
||||
tap `LT(layer, key)` keys. You may sometimes need to stay on the layer for a
|
||||
long period of time. Layer Lock "locks" the current layer to stay on, supposing
|
||||
it was accessed by one of:
|
||||
|
||||
* `MO(layer)` momentary layer switch
|
||||
* `LT(layer, key)` layer tap
|
||||
* `OSL(layer)` one-shot layer
|
||||
* `TT(layer)` layer tap toggle
|
||||
* `LM(layer, mod)` layer-mod key (the layer is locked, but not the mods)
|
||||
|
||||
Press the Layer Lock key again to unlock the layer. Additionally, when a layer
|
||||
is locked, layer switch keys that turn off the layer such as `TO(other_layer)`
|
||||
will unlock it.
|
||||
|
||||
|
||||
## How do I enable Layer Lock
|
||||
|
||||
In your rules.mk, add:
|
||||
|
||||
```make
|
||||
LAYER_LOCK_ENABLE = yes
|
||||
```
|
||||
|
||||
Pick a key in your keymap on a layer you intend to lock, and assign it the
|
||||
keycode `QK_LAYER_LOCK` (short alias `QK_LLCK`). Note that locking the base
|
||||
layer has no effect, so typically, this key is used on layers above the base
|
||||
layer.
|
||||
|
||||
|
||||
## Example use
|
||||
|
||||
Consider a keymap with the following base layer.
|
||||
|
||||
![Base layer with a MO(NAV) key.](https://i.imgur.com/DkEhj9x.png)
|
||||
|
||||
The highlighted key is a momentary layer switch `MO(NAV)`. Holding it accesses a
|
||||
navigation layer.
|
||||
|
||||
![Nav layer with a Layer Lock key.](https://i.imgur.com/2wUZNWk.png)
|
||||
|
||||
|
||||
Holding the NAV key is fine for brief use, but awkward to continue holding when
|
||||
using navigation functions continuously. The Layer Lock key comes to the rescue:
|
||||
|
||||
1. Hold the NAV key, activating the navigation layer.
|
||||
2. Tap Layer Lock.
|
||||
3. Release NAV. The navigation layer stays on.
|
||||
4. Make use of the arrow keys, etc.
|
||||
5. Tap Layer Lock or NAV again to turn the navigation layer back off.
|
||||
|
||||
A variation that would also work is to put the Layer Lock key on the base layer
|
||||
and make other layers transparent (`KC_TRNS`) in that position. Pressing the
|
||||
Layer Lock key locks (or unlocks) the highest active layer, regardless of which
|
||||
layer the Layer Lock key is on.
|
||||
|
||||
|
||||
## Idle timeout
|
||||
|
||||
Optionally, Layer Lock may be configured to unlock if the keyboard is idle
|
||||
for some time. In config.h, define `LAYER_LOCK_IDLE_TIMEOUT` in units of
|
||||
milliseconds:
|
||||
|
||||
```c
|
||||
#define LAYER_LOCK_IDLE_TIMEOUT 60000 // Turn off after 60 seconds.
|
||||
```
|
||||
|
||||
|
||||
## Functions
|
||||
|
||||
Use the following functions to query and manipulate the layer lock state.
|
||||
|
||||
| Function | Description |
|
||||
|----------------------------|------------------------------------|
|
||||
| `is_layer_locked(layer)` | Checks whether `layer` is locked. |
|
||||
| `layer_lock_on(layer)` | Locks and turns on `layer`. |
|
||||
| `layer_lock_off(layer)` | Unlocks and turns off `layer`. |
|
||||
| `layer_lock_invert(layer)` | Toggles whether `layer` is locked. |
|
||||
|
||||
|
||||
## Representing the current Layer Lock state
|
||||
|
||||
There is an optional callback `layer_lock_set_user()` that gets called when a
|
||||
layer is locked or unlocked. This is useful to represent the current lock state
|
||||
for instance by setting an LED. In keymap.c, define
|
||||
|
||||
```c
|
||||
bool layer_lock_set_user(layer_state_t locked_layers) {
|
||||
// Do something like `set_led(is_layer_locked(NAV));`
|
||||
return true;
|
||||
}
|
||||
```
|
||||
|
||||
The argument `locked_layers` is a bitfield in which the kth bit is on if the kth
|
||||
layer is locked. Alternatively, you can use `is_layer_locked(layer)` to check if
|
||||
a given layer is locked.
|
||||
|
||||
|
||||
## Combine Layer Lock with a mod-tap
|
||||
|
||||
It is possible to create a [mod-tap MT key](../mod_tap) that acts as a modifier
|
||||
on hold and Layer Lock on tap. Since Layer Lock is not a [basic
|
||||
keycode](../keycodes_basic), attempting `MT(mod, QK_LLCK)` is invalid does not
|
||||
work directly, yet this effect can be achieved through [changing the tap
|
||||
function](../mod_tap#changing-tap-function). For example, the following
|
||||
implements a `SFTLLCK` key that acts as Shift on hold and Layer Lock on tap:
|
||||
|
||||
```c
|
||||
#define SFTLLCK LSFT_T(KC_0)
|
||||
|
||||
// Use SFTLLCK in your keymap...
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case SFTLLCK:
|
||||
if (record->tap.count) {
|
||||
if (record->event.pressed) {
|
||||
// Toggle the lock on the highest layer.
|
||||
layer_lock_invert(get_highest_layer(layer_state));
|
||||
}
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
|
||||
// Other macros...
|
||||
}
|
||||
return true;
|
||||
}
|
||||
```
|
||||
|
||||
In the above, `KC_0` is an arbitrary placeholder for the tapping keycode. This
|
||||
keycode will never be sent, so any basic keycode will do. In
|
||||
`process_record_user()`, the tap press event is changed to toggle the lock on
|
||||
the highest layer. Layer Lock can be combined with a [layer-tap LT
|
||||
key](../feature_layers#switching-and-toggling-layers) similarly.
|
||||
|
@ -345,6 +345,39 @@ Flashing sequence:
|
||||
3. Flash a .bin file
|
||||
4. Reset the device into application mode (may be done automatically)
|
||||
|
||||
## AT32 DFU
|
||||
|
||||
All AT32 MCUs come preloaded with a factory bootloader that cannot be modified nor deleted.
|
||||
|
||||
To ensure compatibility with the AT32-DFU bootloader, make sure this block is present in your `rules.mk`:
|
||||
|
||||
```make
|
||||
# Bootloader selection
|
||||
BOOTLOADER = at32-dfu
|
||||
```
|
||||
|
||||
Compatible flashers:
|
||||
|
||||
* [dfu-util](https://dfu-util.sourceforge.net/) / `:dfu-util` target in QMK (recommended command line)
|
||||
```
|
||||
dfu-util -a 0 -d 2E3C:DF11 -s 0x8000000:leave -D <filename>
|
||||
```
|
||||
|
||||
Flashing sequence:
|
||||
|
||||
1. Enter the bootloader using any of the following methods:
|
||||
* Tap the `QK_BOOT` keycode
|
||||
* If a reset circuit is present, tap the `RESET` button on the PCB; some boards may also have a toggle switch that must be flipped
|
||||
* Otherwise, you need to bridge `BOOT0` to VCC (via `BOOT0` button or jumper), short `RESET` to GND (via `RESET` button or jumper), and then let go of the `BOOT0` bridge
|
||||
2. Wait for the OS to detect the device
|
||||
3. Flash a .bin file
|
||||
4. Reset the device into application mode (may be done automatically)
|
||||
|
||||
### `make` Targets
|
||||
|
||||
* `:dfu-util`: Waits until an AT32 bootloader device is available, and then flashes the firmware.
|
||||
* `:dfu-util-split-left` and `:dfu-util-split-right`: Flashes the firmware as with `:dfu-util`, but also sets the handedness setting in EEPROM.
|
||||
|
||||
## tinyuf2
|
||||
|
||||
Keyboards may opt into supporting the tinyuf2 bootloader. This is currently only supported on F303/F401/F411.
|
||||
|
@ -387,6 +387,14 @@ See also: [Key Lock](features/key_lock)
|
||||
|---------|--------------------------------------------------------------|
|
||||
|`QK_LOCK`|Hold down the next key pressed, until the key is pressed again|
|
||||
|
||||
## Layer Lock {#layer-lock}
|
||||
|
||||
See also: [Layer Lock](features/layer_lock)
|
||||
|
||||
|Key |Aliases |Description |
|
||||
|---------------|---------|----------------------------------|
|
||||
|`QK_LAYER_LOCK`|`QK_LLCK`|Locks or unlocks the highest layer|
|
||||
|
||||
## Layer Switching {#layer-switching}
|
||||
|
||||
See also: [Layer Switching](feature_layers#switching-and-toggling-layers)
|
||||
|
@ -4,52 +4,51 @@ This page describes the support for [Compatible Microcontrollers](compatible_mic
|
||||
|
||||
If you have not yet you should read the [Keyboard Guidelines](hardware_keyboard_guidelines) to get a sense of how keyboards fit into QMK.
|
||||
|
||||
|
||||
QMK has a number of features to simplify working with keyboards. For most, you don't have to write a single line of code. To get started, run `qmk new-keyboard`:
|
||||
|
||||
```
|
||||
$ qmk new-keyboard
|
||||
Ψ Generating a new QMK keyboard directory
|
||||
|
||||
Name Your Keyboard Project
|
||||
For more infomation, see:
|
||||
https://docs.qmk.fm/hardware_keyboard_guidelines#naming-your-keyboardproject
|
||||
Ψ Name Your Keyboard Project
|
||||
Ψ For more information, see:
|
||||
https://docs.qmk.fm/hardware_keyboard_guidelines#naming-your-keyboard-project
|
||||
Keyboard Name? mycoolkeeb
|
||||
Ψ Attribution
|
||||
Ψ Used for maintainer, copyright, etc.
|
||||
Your GitHub Username? [jsmith]
|
||||
Ψ More Attribution
|
||||
Ψ Used for maintainer, copyright, etc.
|
||||
Your Real Name? [John Smith]
|
||||
Ψ Pick Base Layout
|
||||
Ψ As a starting point, one of the common layouts can be used to
|
||||
bootstrap the process
|
||||
Default Layout?
|
||||
1. 60_abnt2
|
||||
...
|
||||
65. none of the above
|
||||
Please enter your choice: [65]
|
||||
Ψ What Powers Your Project
|
||||
Ψ Is your board using a separate development board, such as a Pro Micro,
|
||||
or is the microcontroller integrated onto the PCB?
|
||||
|
||||
keyboard Name? mycoolkeeb
|
||||
|
||||
Attribution
|
||||
Used for maintainer, copyright, etc
|
||||
|
||||
Your GitHub Username? [jsmith]
|
||||
|
||||
More Attribution
|
||||
Used for maintainer, copyright, etc
|
||||
|
||||
Your Real Name? [John Smith]
|
||||
|
||||
Pick Base Layout
|
||||
As a starting point, one of the common layouts can be used to bootstrap the process
|
||||
|
||||
Default Layout?
|
||||
1. 60_ansi
|
||||
...
|
||||
50. tkl_iso
|
||||
51. none of the above
|
||||
Please enter your choice: [51]
|
||||
|
||||
What Powers Your Project
|
||||
For more infomation, see:
|
||||
https://docs.qmk.fm/#/compatible_microcontrollers
|
||||
|
||||
MCU?
|
||||
1. atmega32u4
|
||||
...
|
||||
22. STM32F303
|
||||
Please enter your choice: [12]
|
||||
For more information, see:
|
||||
https://docs.qmk.fm/compatible_microcontrollers
|
||||
Using a Development Board? [y/n] y
|
||||
Ψ Select Development Board
|
||||
Ψ For more information, see:
|
||||
https://docs.qmk.fm/compatible_microcontrollers
|
||||
Development Board?
|
||||
1. bit_c_pro
|
||||
...
|
||||
14. promicro
|
||||
...
|
||||
18. svlinky
|
||||
Please enter your choice: [14]
|
||||
Ψ Created a new keyboard called mycoolkeeb.
|
||||
Ψ To start working on things, `cd` into keyboards/mycoolkeeb,
|
||||
Ψ or open the directory in your preferred text editor.
|
||||
Ψ And build with qmk compile -kb mycoolkeeb -km default.
|
||||
Ψ Build Command: qmk compile -kb mycoolkeeb -km default.
|
||||
Ψ Project Location: /Users/jsmith/qmk_firmware/keyboards/mycoolkeeb.
|
||||
Ψ Now update the config files to match the hardware!
|
||||
```
|
||||
|
||||
This will create all the files needed to support your new keyboard, and populate the settings with default values. Now you just need to customize it for your keyboard.
|
||||
@ -58,13 +57,13 @@ This will create all the files needed to support your new keyboard, and populate
|
||||
|
||||
This is where you'll describe your keyboard. Please follow the [Keyboard Readme Template](documentation_templates#keyboard-readmemd-template) when writing your `readme.md`. You're encouraged to place an image at the top of your `readme.md`, please use an external service such as [Imgur](https://imgur.com) to host the images.
|
||||
|
||||
## `info.json`
|
||||
## `keyboard.json`
|
||||
|
||||
The `info.json` file is where you configure the hardware and feature set for your keyboard. There are a lot of options that can be placed in that file, too many to list here. For a complete overview of available options see the [Data Driven Configuration Options](reference_info_json) page.
|
||||
The `keyboard.json` file is where you configure the hardware and feature set for your keyboard. There are a lot of options that can be placed in that file, too many to list here. For a complete overview of available options see the [Data Driven Configuration Options](reference_info_json) page.
|
||||
|
||||
### Hardware Configuration
|
||||
|
||||
At the top of the `info.json` you'll find USB related settings. These control how your keyboard appears to the Operating System. If you don't have a good reason to change you should leave the `usb.vid` as `0xFEED`. For the `usb.pid` you should pick a number that is not yet in use.
|
||||
At the top of the `keyboard.json` you'll find USB related settings. These control how your keyboard appears to the Operating System. If you don't have a good reason to change you should leave the `usb.vid` as `0xFEED`. For the `usb.pid` you should pick a number that is not yet in use.
|
||||
|
||||
Do change the `manufacturer` and `keyboard_name` lines to accurately reflect your keyboard.
|
||||
|
||||
@ -82,10 +81,11 @@ Do change the `manufacturer` and `keyboard_name` lines to accurately reflect you
|
||||
Windows and macOS will display the `manufacturer` and `keyboard_name` in the list of USB devices. `lsusb` on Linux instead prefers the values in the list maintained by the [USB ID Repository](http://www.linux-usb.org/usb-ids.html). By default, it will only use `manufacturer` and `keyboard_name` if the list does not contain that `usb.vid` / `usb.pid`. `sudo lsusb -v` will show the values reported by the device, and they are also present in kernel logs after plugging it in.
|
||||
:::
|
||||
|
||||
|
||||
### Matrix Configuration
|
||||
|
||||
The next section of the `info` file deals with your keyboard's matrix. The first thing you should define is which pins on your MCU are connected to rows and columns. To do so simply specify the names of those pins:
|
||||
The next section of the `keyboard.json` deals with your keyboard's matrix. The first thing you should define is which pins on your MCU are connected to rows and columns. To do so simply specify the names of those pins:
|
||||
|
||||
#### Diode Matrix
|
||||
|
||||
```json
|
||||
"matrix_pins": {
|
||||
@ -94,7 +94,7 @@ The next section of the `info` file deals with your keyboard's matrix. The first
|
||||
},
|
||||
```
|
||||
|
||||
The size of the `matrix_pins.cols` and `matrix_pins.rows` arrays infer the size of the matrix (previously `MATRIX_ROWS` and `MATRIX_COLS`).
|
||||
The matrix dimensions are inferred from the length of the `matrix_pins.cols` and `matrix_pins.rows` arrays (previously specified explicitly in `config.h` with `MATRIX_ROWS` and `MATRIX_COLS`).
|
||||
|
||||
Finally, you can specify the direction your diodes point. This can be `COL2ROW` or `ROW2COL`.
|
||||
|
||||
@ -103,54 +103,56 @@ Finally, you can specify the direction your diodes point. This can be `COL2ROW`
|
||||
```
|
||||
|
||||
#### Direct Pin Matrix
|
||||
To configure a keyboard where each switch is connected to a separate pin and ground instead of sharing row and column pins, use `matrix_pins.direct`. The mapping defines the pins of each switch in rows and columns, from left to right. The size of the `matrix_pins.direct` array infers the size of the matrix. Use `NO_PIN` to fill in blank spaces. Overrides the behaviour of `diode_direction`, `matrix_pins.cols` and `matrix_pins.rows`.
|
||||
|
||||
To configure a keyboard where each switch is connected to a separate pin and ground instead of sharing row and column pins, use `matrix_pins.direct`. This overrides the behaviour of `diode_direction`, `matrix_pins.cols` and `matrix_pins.rows`, and they should not be specified together.
|
||||
|
||||
```json
|
||||
"matrix_pins": {
|
||||
"direct": [
|
||||
["F1", "E6", "B0", "B2", "B3" ],
|
||||
["F5", "F0", "B1", "B7", "D2" ],
|
||||
["F6", "F7", "C7", "D5", "D3" ],
|
||||
["B5", "C6", "B6", "NO_PIN", "NO_PIN"]
|
||||
["F1", "E6", "B0", "B2", "B3"],
|
||||
["F5", "F0", "B1", "B7", "D2"],
|
||||
["F6", "F7", "C7", "D5", "D3"],
|
||||
["B5", "C6", "B6", null, null]
|
||||
]
|
||||
},
|
||||
```
|
||||
|
||||
### Layout macros
|
||||
Here, the matrix dimensions are inferred directly from the dimensions of the `matrix_pins.direct` array. Since there are no row or column pins to prescribe the matrix dimensions, you can arrange it however you like. Each "row" must contain the same number of "column"s; use `null` to fill in blank spaces, but try to minimize them.
|
||||
|
||||
Next is configuring Layout Macro(s). These define the physical arrangement of keys, and its position within the matrix that a switch are connected to. This allows you to have a physical arrangement of keys that differs from the wiring matrix.
|
||||
### Layout Macros
|
||||
|
||||
Next is configuring layout macro(s). These define the physical arrangement of keys, and their position within the matrix that switches are connected to. This allows you to have a physical arrangement of keys that differs from the wiring matrix.
|
||||
|
||||
```json
|
||||
"layouts": {
|
||||
"LAYOUT_ortho_4x4": {
|
||||
"layout": [
|
||||
{ "matrix": [0, 0], "x": 0, "y": 0 },
|
||||
{ "matrix": [0, 1], "x": 1, "y": 0 },
|
||||
{ "matrix": [0, 2], "x": 2, "y": 0 },
|
||||
{ "matrix": [0, 3], "x": 3, "y": 0 },
|
||||
{ "matrix": [1, 0], "x": 0, "y": 1 },
|
||||
{ "matrix": [1, 1], "x": 1, "y": 1 },
|
||||
{ "matrix": [1, 2], "x": 2, "y": 1 },
|
||||
{ "matrix": [1, 3], "x": 3, "y": 1 },
|
||||
{ "matrix": [2, 0], "x": 0, "y": 2 },
|
||||
{ "matrix": [2, 1], "x": 1, "y": 2 },
|
||||
{ "matrix": [2, 2], "x": 2, "y": 2 },
|
||||
{ "matrix": [2, 3], "x": 3, "y": 2 },
|
||||
{ "matrix": [3, 0], "x": 0, "y": 3 },
|
||||
{ "matrix": [3, 1], "x": 1, "y": 3 },
|
||||
{ "matrix": [3, 2], "x": 2, "y": 3 },
|
||||
{ "matrix": [3, 3], "x": 3, "y": 3 }
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"matrix": [1, 0], "x": 0, "y": 1},
|
||||
{"matrix": [1, 1], "x": 1, "y": 1},
|
||||
{"matrix": [1, 2], "x": 2, "y": 1},
|
||||
{"matrix": [1, 3], "x": 3, "y": 1},
|
||||
{"matrix": [2, 0], "x": 0, "y": 2},
|
||||
{"matrix": [2, 1], "x": 1, "y": 2},
|
||||
{"matrix": [2, 2], "x": 2, "y": 2},
|
||||
{"matrix": [2, 3], "x": 3, "y": 2},
|
||||
{"matrix": [3, 0], "x": 0, "y": 3},
|
||||
{"matrix": [3, 1], "x": 1, "y": 3},
|
||||
{"matrix": [3, 2], "x": 2, "y": 3},
|
||||
{"matrix": [3, 3], "x": 3, "y": 3}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
In the above example,
|
||||
In the above example,
|
||||
|
||||
* `LAYOUT_ortho_4x4` defines the name of the layout macro
|
||||
* It must conform to the [layout guidelines](hardware_keyboard_guidelines#keyboard-name-h)
|
||||
* `"matrix": [0, 0]` defines the electrical position
|
||||
* `"matrix": [0, 0]` defines the matrix row and column that the key is associated with
|
||||
|
||||
::: tip
|
||||
See also: [Split Keyboard Layout Macro](features/split_keyboard#layout-macro) and [Matrix to Physical Layout](understanding_qmk#matrix-to-physical-layout-map).
|
||||
@ -158,9 +160,10 @@ See also: [Split Keyboard Layout Macro](features/split_keyboard#layout-macro) an
|
||||
|
||||
## Additional Configuration
|
||||
|
||||
There are a lot of features that can be turned on or off, configured or tuned. Some of these have yet to be migrated over to [Data Driven Configuration](data_driven_config). The following sections cover the process for when an `info.json` option is unavailable.
|
||||
There are a lot of features that can be turned on or off, configured or tuned. Some of these have yet to be migrated over to [Data Driven Configuration](data_driven_config). The following sections cover the process for when a data-driven option is unavailable.
|
||||
|
||||
### Configuration Options
|
||||
|
||||
For available options for `config.h`, you should see the [Config Options](config_options#the-configh-file) page for more details.
|
||||
|
||||
### Build Options
|
||||
|
10
keyboards/handwired/onekey/at_start_f415/board.h
Normal file
10
keyboards/handwired/onekey/at_start_f415/board.h
Normal file
@ -0,0 +1,10 @@
|
||||
// Copyright 2023-2024 HorrorTroll <https://github.com/HorrorTroll>
|
||||
// Copyright 2023-2024 Zhaqian <https://github.com/zhaqian12>
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#include_next <board.h>
|
||||
|
||||
#undef AT32F415KB
|
||||
#define AT32F415RC
|
10
keyboards/handwired/onekey/at_start_f415/config.h
Normal file
10
keyboards/handwired/onekey/at_start_f415/config.h
Normal file
@ -0,0 +1,10 @@
|
||||
// Copyright 2023-2024 HorrorTroll <https://github.com/HorrorTroll>
|
||||
// Copyright 2023-2024 Zhaqian <https://github.com/zhaqian12>
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#define ADC_PIN A0
|
||||
|
||||
#define BACKLIGHT_PWM_DRIVER PWMD5
|
||||
#define BACKLIGHT_PWM_CHANNEL 1
|
13
keyboards/handwired/onekey/at_start_f415/halconf.h
Normal file
13
keyboards/handwired/onekey/at_start_f415/halconf.h
Normal file
@ -0,0 +1,13 @@
|
||||
// Copyright 2023-2024 HorrorTroll <https://github.com/HorrorTroll>
|
||||
// Copyright 2023-2024 Zhaqian <https://github.com/zhaqian12>
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#define HAL_USE_ADC TRUE
|
||||
|
||||
#define HAL_USE_I2C TRUE
|
||||
|
||||
#define HAL_USE_PWM TRUE
|
||||
|
||||
#include_next <halconf.h>
|
20
keyboards/handwired/onekey/at_start_f415/keyboard.json
Normal file
20
keyboards/handwired/onekey/at_start_f415/keyboard.json
Normal file
@ -0,0 +1,20 @@
|
||||
{
|
||||
"keyboard_name": "Onekey AT-START-F415",
|
||||
"processor": "AT32F415",
|
||||
"bootloader": "at32-dfu",
|
||||
"usb": {
|
||||
"shared_endpoint": {
|
||||
"keyboard": true
|
||||
}
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["B3"],
|
||||
"rows": ["B4"]
|
||||
},
|
||||
"backlight": {
|
||||
"pin": "A0"
|
||||
},
|
||||
"ws2812": {
|
||||
"pin": "B0"
|
||||
}
|
||||
}
|
16
keyboards/handwired/onekey/at_start_f415/mcuconf.h
Normal file
16
keyboards/handwired/onekey/at_start_f415/mcuconf.h
Normal file
@ -0,0 +1,16 @@
|
||||
// Copyright 2023-2024 HorrorTroll <https://github.com/HorrorTroll>
|
||||
// Copyright 2023-2024 Zhaqian <https://github.com/zhaqian12>
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#include_next <mcuconf.h>
|
||||
|
||||
#undef AT32_ADC_USE_ADC1
|
||||
#define AT32_ADC_USE_ADC1 TRUE
|
||||
|
||||
#undef AT32_I2C_USE_I2C1
|
||||
#define AT32_I2C_USE_I2C1 TRUE
|
||||
|
||||
#undef AT32_PWM_USE_TMR5
|
||||
#define AT32_PWM_USE_TMR5 TRUE
|
3
keyboards/handwired/onekey/at_start_f415/readme.md
Normal file
3
keyboards/handwired/onekey/at_start_f415/readme.md
Normal file
@ -0,0 +1,3 @@
|
||||
# Artery AT-START-F415 Board Onekey
|
||||
|
||||
To trigger keypress, short together pins *B3* and *B4*.
|
@ -1,8 +1,5 @@
|
||||
/*
|
||||
This is the c configuration file for the keymap
|
||||
|
||||
Copyright 2012 Jun Wako <wakojun@gmail.com>
|
||||
Copyright 2015 Jack Humbert
|
||||
Copyright 2020 yushakobo
|
||||
|
||||
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
|
||||
@ -20,9 +17,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#pragma once
|
||||
|
||||
// place overrides here
|
||||
|
||||
#ifdef AUDIO_ENABLE
|
||||
#define STARTUP_SONG SONG(STARTUP_SOUND)
|
||||
#define AUDIO_CLICKY
|
||||
#endif
|
||||
#define OLED_FONT_H "keyboards/helix/glcdfont.c"
|
@ -1,11 +1,9 @@
|
||||
// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0.
|
||||
// See gfxfont.h for newer custom bitmap font info.
|
||||
|
||||
// Copyright 2023 QMK
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#include "progmem.h"
|
||||
|
||||
// Standard ASCII 5x7 font
|
||||
|
||||
static const unsigned char font[] PROGMEM = {
|
||||
// clang-format off
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00,
|
||||
0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00,
|
||||
@ -230,4 +228,5 @@ static const unsigned char font[] PROGMEM = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
// clang-format on
|
||||
};
|
149
keyboards/helix/helix.c
Normal file
149
keyboards/helix/helix.c
Normal file
@ -0,0 +1,149 @@
|
||||
/* Copyright 2020 yushakobo
|
||||
*
|
||||
* 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 "helix.h"
|
||||
|
||||
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
|
||||
if (!process_record_user(keycode, record)) {
|
||||
return false;
|
||||
}
|
||||
switch (keycode) {
|
||||
case EISU:
|
||||
if (record->event.pressed) {
|
||||
if (is_mac_mode()) {
|
||||
register_code(KC_LNG2);
|
||||
} else {
|
||||
tap_code16(LALT(KC_GRAVE));
|
||||
}
|
||||
} else {
|
||||
unregister_code(KC_LNG2);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case KANA:
|
||||
if (record->event.pressed) {
|
||||
if (is_mac_mode()) {
|
||||
register_code(KC_LNG1);
|
||||
} else {
|
||||
tap_code16(LALT(KC_GRAVE));
|
||||
}
|
||||
} else {
|
||||
unregister_code(KC_LNG1);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case RGBRST:
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
if (record->event.pressed) {
|
||||
eeconfig_update_rgblight_default();
|
||||
rgblight_enable();
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool is_mac_mode(void) {
|
||||
return keymap_config.swap_lalt_lgui == false;
|
||||
}
|
||||
|
||||
void set_mac_mode(bool macmode) {
|
||||
keymap_config.swap_lalt_lgui = keymap_config.swap_ralt_rgui = !macmode;
|
||||
eeconfig_update_keymap(keymap_config.raw);
|
||||
}
|
||||
|
||||
#ifdef DIP_SWITCH_ENABLE
|
||||
bool dip_switch_update_kb(uint8_t index, bool active) {
|
||||
if (!dip_switch_update_user(index, active)) {
|
||||
return false;
|
||||
}
|
||||
set_mac_mode(!active);
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef OLED_ENABLE
|
||||
void render_status(void) {
|
||||
static const char os_logo[][6] PROGMEM = {{0x95, 0x96, '\n', 0x97, 0x98, 0}, {0xb5, 0xb6, '\n', 0xb7, 0xb8, 0}};
|
||||
oled_write_P(os_logo[is_mac_mode()], false);
|
||||
|
||||
oled_write_P(PSTR(" "), false);
|
||||
|
||||
oled_write_P(PSTR("Layer: "), false);
|
||||
|
||||
switch (get_highest_layer(layer_state)) {
|
||||
case 0:
|
||||
oled_write_P(PSTR("Default\n"), false);
|
||||
break;
|
||||
case 1:
|
||||
oled_write_P(PSTR("Lower\n"), false);
|
||||
break;
|
||||
case 2:
|
||||
oled_write_P(PSTR("Raise\n"), false);
|
||||
break;
|
||||
case 3:
|
||||
oled_write_P(PSTR("Adjust\n"), false);
|
||||
break;
|
||||
default:
|
||||
oled_write_ln_P(PSTR("N/A"), false);
|
||||
}
|
||||
|
||||
oled_write_P(PSTR("\n"), false);
|
||||
|
||||
// Host Keyboard LED Status
|
||||
led_t led_state = host_keyboard_led_state();
|
||||
oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
|
||||
oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
|
||||
}
|
||||
|
||||
static void render_logo(void) {
|
||||
static const char PROGMEM helix_logo[] = {
|
||||
// clang-format off
|
||||
0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94,
|
||||
0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4,
|
||||
0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4,
|
||||
0x0
|
||||
// clang-format on
|
||||
};
|
||||
oled_write_P(helix_logo, false);
|
||||
}
|
||||
|
||||
static void render_rgbled_status(void) {
|
||||
// " LED %d:%d,%d,%d"
|
||||
oled_write_P(PSTR(" LED"), false);
|
||||
oled_write(get_u8_str(rgblight_get_mode(), ' '), false);
|
||||
oled_write_char(':', false);
|
||||
oled_write(get_u8_str(rgblight_get_hue() / RGBLIGHT_HUE_STEP, ' '), false);
|
||||
oled_write_char(',', false);
|
||||
oled_write(get_u8_str(rgblight_get_sat() / RGBLIGHT_SAT_STEP, ' '), false);
|
||||
oled_write_char(',', false);
|
||||
oled_write(get_u8_str(rgblight_get_val() / RGBLIGHT_VAL_STEP, ' '), false);
|
||||
}
|
||||
|
||||
bool oled_task_kb(void) {
|
||||
if (!oled_task_user()) {
|
||||
return false;
|
||||
}
|
||||
if (is_keyboard_master()) {
|
||||
render_status();
|
||||
} else {
|
||||
render_logo();
|
||||
render_rgbled_status();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
#endif
|
@ -18,5 +18,12 @@
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
enum custom_keycodes {
|
||||
EISU = QK_KB_0,
|
||||
KANA,
|
||||
ADJUST,
|
||||
RGBRST
|
||||
};
|
||||
|
||||
bool is_mac_mode(void);
|
||||
void set_mac_mode(bool macmode);
|
37
keyboards/helix/info.json
Normal file
37
keyboards/helix/info.json
Normal file
@ -0,0 +1,37 @@
|
||||
{
|
||||
"manufacturer": "Yushakobo",
|
||||
"maintainer": "MakotoKurauchi",
|
||||
"development_board": "promicro",
|
||||
"diode_direction": "COL2ROW",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"mousekey": true,
|
||||
"extrakey": true,
|
||||
"rgblight": true
|
||||
},
|
||||
"build": {
|
||||
"lto": true
|
||||
},
|
||||
"split": {
|
||||
"enabled": true,
|
||||
"soft_serial_pin": "D2"
|
||||
},
|
||||
"rgblight": {
|
||||
"animations": {
|
||||
"alternating": true,
|
||||
"breathing": true,
|
||||
"rainbow_mood": true,
|
||||
"rainbow_swirl": true,
|
||||
"snake": true,
|
||||
"static_gradient": true
|
||||
},
|
||||
"sleep": true
|
||||
},
|
||||
"url": "https://github.com/MakotoKurauchi/helix",
|
||||
"usb": {
|
||||
"vid": "0x3265"
|
||||
},
|
||||
"ws2812": {
|
||||
"pin": "D3"
|
||||
}
|
||||
}
|
@ -1 +0,0 @@
|
||||
{}
|
@ -1 +0,0 @@
|
||||
LED_BACK_ENABLE = yes
|
@ -1 +0,0 @@
|
||||
{}
|
@ -1,96 +0,0 @@
|
||||
/*
|
||||
Copyright 2012 Jun Wako <wakojun@gmail.com>
|
||||
Copyright 2015 Jack Humbert
|
||||
Copyright 2018 MakotoKurauchi
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define QUICK_TAP_TERM 0
|
||||
|
||||
#define SERIAL_SLAVE_BUFFER_LENGTH ((MATRIX_ROWS)/2)
|
||||
#define SERIAL_MASTER_BUFFER_LENGTH ((MATRIX_ROWS)/2)
|
||||
|
||||
/* key matrix size */
|
||||
// Rows are doubled-up
|
||||
#define MATRIX_ROWS 8
|
||||
#define MATRIX_ROW_PINS { D4, C6, D7, E6 }
|
||||
|
||||
// wiring of each half
|
||||
#define MATRIX_COLS 7
|
||||
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2 }
|
||||
// #define MATRIX_COL_PINS { B2, B3, B1, F7, F6, F5, F4 } //uncomment this line and comment line above if you need to reverse left-to-right key order
|
||||
|
||||
/* COL2ROW, ROW2COL*/
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
/* Audio */
|
||||
#ifdef AUDIO_ENABLE
|
||||
#define AUDIO_PIN B5
|
||||
#endif
|
||||
|
||||
// Helix keyboard RGB LED support
|
||||
// see ./rules.mk: LED_BACK_ENABLE or LED_UNDERGLOW_ENABLE set yes
|
||||
#ifdef RGBLED_BACK
|
||||
#define RGBLIGHT_LED_COUNT 25
|
||||
#else
|
||||
#define RGBLIGHT_LED_COUNT 6
|
||||
#endif
|
||||
|
||||
#ifndef IOS_DEVICE_ENABLE
|
||||
#if RGBLIGHT_LED_COUNT <= 6
|
||||
#define RGBLIGHT_LIMIT_VAL 255
|
||||
#else
|
||||
#define RGBLIGHT_LIMIT_VAL 130
|
||||
#endif
|
||||
#define RGBLIGHT_VAL_STEP 17
|
||||
#else
|
||||
#if RGBLIGHT_LED_COUNT <= 6
|
||||
#define RGBLIGHT_LIMIT_VAL 90
|
||||
#else
|
||||
#define RGBLIGHT_LIMIT_VAL 45
|
||||
#endif
|
||||
#define RGBLIGHT_VAL_STEP 4
|
||||
#endif
|
||||
|
||||
#if defined(RGBLIGHT_ENABLE) && !defined(IOS_DEVICE_ENABLE)
|
||||
// USB_MAX_POWER_CONSUMPTION value for Helix keyboard
|
||||
// 120 RGBoff
|
||||
// 330 RGB 6
|
||||
// 300 RGB 32
|
||||
// 310 OLED & RGB 32
|
||||
#define USB_MAX_POWER_CONSUMPTION 400
|
||||
#else
|
||||
// fix iPhone and iPad power adapter issue
|
||||
// iOS device need lessthan 100
|
||||
#define USB_MAX_POWER_CONSUMPTION 100
|
||||
#endif
|
||||
|
||||
/*
|
||||
* 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
|
@ -1,37 +1,17 @@
|
||||
{
|
||||
"keyboard_name": "HelixPico",
|
||||
"manufacturer": "Yushakobo",
|
||||
"url": "https://github.com/MakotoKurauchi/helix",
|
||||
"maintainer": "MakotoKurauchi",
|
||||
"usb": {
|
||||
"vid": "0x3265",
|
||||
"pid": "0x0001",
|
||||
"device_version": "0.0.2"
|
||||
},
|
||||
"split": {
|
||||
"enabled": true,
|
||||
"soft_serial_pin": "D2"
|
||||
},
|
||||
"tapping": {
|
||||
"term": 100
|
||||
"keyboard_name": "Helix Pico",
|
||||
"matrix_pins": {
|
||||
"cols": ["F4", "F5", "F6", "F7", "B1", "B3", "B2"],
|
||||
"rows": ["D4", "C6", "D7", "E6"]
|
||||
},
|
||||
"rgblight": {
|
||||
"hue_steps": 10,
|
||||
"animations": {
|
||||
"breathing": true,
|
||||
"rainbow_mood": true,
|
||||
"rainbow_swirl": true,
|
||||
"snake": true,
|
||||
"knight": true,
|
||||
"christmas": true,
|
||||
"static_gradient": true
|
||||
}
|
||||
"led_count": 25,
|
||||
"max_brightness": 45
|
||||
},
|
||||
"ws2812": {
|
||||
"pin": "D3"
|
||||
"usb": {
|
||||
"device_version": "0.0.2",
|
||||
"pid": "0x0001"
|
||||
},
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
@ -41,42 +21,36 @@
|
||||
{"matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"matrix": [0, 5], "x": 5, "y": 0},
|
||||
|
||||
{"matrix": [4, 5], "x": 9, "y": 0},
|
||||
{"matrix": [4, 4], "x": 10, "y": 0},
|
||||
{"matrix": [4, 3], "x": 11, "y": 0},
|
||||
{"matrix": [4, 2], "x": 12, "y": 0},
|
||||
{"matrix": [4, 1], "x": 13, "y": 0},
|
||||
{"matrix": [4, 0], "x": 14, "y": 0},
|
||||
|
||||
{"matrix": [1, 0], "x": 0, "y": 1},
|
||||
{"matrix": [1, 1], "x": 1, "y": 1},
|
||||
{"matrix": [1, 2], "x": 2, "y": 1},
|
||||
{"matrix": [1, 3], "x": 3, "y": 1},
|
||||
{"matrix": [1, 4], "x": 4, "y": 1},
|
||||
{"matrix": [1, 5], "x": 5, "y": 1},
|
||||
|
||||
{"matrix": [5, 5], "x": 9, "y": 1},
|
||||
{"matrix": [5, 4], "x": 10, "y": 1},
|
||||
{"matrix": [5, 3], "x": 11, "y": 1},
|
||||
{"matrix": [5, 2], "x": 12, "y": 1},
|
||||
{"matrix": [5, 1], "x": 13, "y": 1},
|
||||
{"matrix": [5, 0], "x": 14, "y": 1},
|
||||
|
||||
{"matrix": [2, 0], "x": 0, "y": 2},
|
||||
{"matrix": [2, 1], "x": 1, "y": 2},
|
||||
{"matrix": [2, 2], "x": 2, "y": 2},
|
||||
{"matrix": [2, 3], "x": 3, "y": 2},
|
||||
{"matrix": [2, 4], "x": 4, "y": 2},
|
||||
{"matrix": [2, 5], "x": 5, "y": 2},
|
||||
|
||||
{"matrix": [6, 5], "x": 9, "y": 2},
|
||||
{"matrix": [6, 4], "x": 10, "y": 2},
|
||||
{"matrix": [6, 3], "x": 11, "y": 2},
|
||||
{"matrix": [6, 2], "x": 12, "y": 2},
|
||||
{"matrix": [6, 1], "x": 13, "y": 2},
|
||||
{"matrix": [6, 0], "x": 14, "y": 2},
|
||||
|
||||
{"matrix": [3, 0], "x": 0, "y": 3},
|
||||
{"matrix": [3, 1], "x": 1, "y": 3},
|
||||
{"matrix": [3, 2], "x": 2, "y": 3},
|
||||
@ -84,7 +58,6 @@
|
||||
{"matrix": [3, 4], "x": 4, "y": 3},
|
||||
{"matrix": [3, 5], "x": 5, "y": 3},
|
||||
{"matrix": [3, 6], "x": 6, "y": 3},
|
||||
|
||||
{"matrix": [7, 6], "x": 8, "y": 3},
|
||||
{"matrix": [7, 5], "x": 9, "y": 3},
|
||||
{"matrix": [7, 4], "x": 10, "y": 3},
|
@ -1,42 +0,0 @@
|
||||
/*
|
||||
This is the c configuration file for the keymap
|
||||
|
||||
Copyright 2012 Jun Wako <wakojun@gmail.com>
|
||||
Copyright 2015 Jack Humbert
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
// place overrides here
|
||||
|
||||
#ifdef AUDIO_ENABLE
|
||||
#define STARTUP_SONG SONG(STARTUP_SOUND)
|
||||
#define AUDIO_CLICKY
|
||||
#endif
|
||||
|
||||
// If you need more program area, try select and reduce rgblight modes to use.
|
||||
|
||||
// Selection of RGBLIGHT MODE to use.
|
||||
#if defined(LED_ANIMATIONS)
|
||||
#define RGBLIGHT_EFFECT_BREATHING
|
||||
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
|
||||
#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
|
||||
#define RGBLIGHT_EFFECT_SNAKE
|
||||
#define RGBLIGHT_EFFECT_KNIGHT
|
||||
#define RGBLIGHT_EFFECT_STATIC_GRADIENT
|
||||
//#define RGBLIGHT_EFFECT_RGB_TEST
|
||||
//#define RGBLIGHT_EFFECT_ALTERNATING
|
||||
#endif
|
@ -1,329 +0,0 @@
|
||||
/* Copyright 2018 MakotoKurauchi
|
||||
*
|
||||
* 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
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
//Following line allows macro to read current RGB settings
|
||||
extern rgblight_config_t rgblight_config;
|
||||
#endif
|
||||
|
||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||
// entirely and just use numbers.
|
||||
enum layer_number {
|
||||
_QWERTY = 0,
|
||||
_COLEMAK,
|
||||
_DVORAK,
|
||||
_LOWER,
|
||||
_RAISE,
|
||||
_ADJUST
|
||||
};
|
||||
|
||||
enum custom_keycodes {
|
||||
QWERTY = SAFE_RANGE,
|
||||
COLEMAK,
|
||||
DVORAK,
|
||||
LOWER,
|
||||
RAISE,
|
||||
ADJUST,
|
||||
BACKLIT,
|
||||
EISU,
|
||||
KANA,
|
||||
RGBRST
|
||||
};
|
||||
|
||||
enum macro_keycodes {
|
||||
KC_SAMPLEMACRO,
|
||||
};
|
||||
|
||||
//Macros
|
||||
#define M_SAMPLE M(KC_SAMPLEMACRO)
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/* Qwerty
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Ctrl | A | S | D | F | G | | H | J | K | L | ; | ' |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Shift| Z | X | C | V | B | | N | M | , | . | / |Enter |
|
||||
* |------+------+------+------+------+------+-------------+------+------+------+------+------+------|
|
||||
* |Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
|
||||
[_QWERTY] = LAYOUT(
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
|
||||
ADJUST, KC_ESC, KC_LALT, KC_LGUI, EISU, LOWER, KC_SPC, KC_SPC, RAISE, KANA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
|
||||
),
|
||||
/* Colemak
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | Tab | Q | W | F | P | G | | J | L | U | Y | ; | Bksp |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Ctrl | A | R | S | T | D | | H | N | E | I | O | ' |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Shift| Z | X | C | V | B | | K | M | , | . | / |Enter |
|
||||
* |------+------+------+------+------+------+-------------+------+------+------+------+------+------|
|
||||
* |Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_COLEMAK] = LAYOUT(
|
||||
KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
|
||||
KC_LCTL, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
|
||||
ADJUST, KC_ESC, KC_LALT, KC_LGUI, EISU, LOWER, KC_SPC, KC_SPC, RAISE, KANA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
|
||||
),
|
||||
|
||||
/* Dvorak
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | Tab | ' | , | . | P | Y | | F | G | C | R | L | Bksp |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Ctrl | A | O | E | U | I | | D | H | T | N | S | / |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Shift| ; | Q | J | K | X | | B | M | W | V | Z |Enter |
|
||||
* |------+------+------+------+------+------+-------------+------+------+------+------+------+------|
|
||||
* |Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_DVORAK] = LAYOUT(
|
||||
KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC,
|
||||
KC_LCTL, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH,
|
||||
KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT ,
|
||||
ADJUST, KC_ESC, KC_LALT, KC_LGUI, EISU, LOWER, KC_SPC, KC_SPC, RAISE, KANA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
|
||||
),
|
||||
|
||||
/* Lower
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | Del |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | F1 | F2 | F3 | F4 | F5 | | F6 | _ | + | { | } | | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | F7 | F8 | F9 | F10 | F11 | | F12 | | PrSc | Home | End | |
|
||||
* |------+------+------+------+------+------+-------------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | Next | Vol- | Vol+ | Play |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_LOWER] = LAYOUT(
|
||||
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
|
||||
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_PSCR, KC_HOME, KC_END, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
|
||||
),
|
||||
|
||||
/* Raise
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | F1 | F2 | F3 | F4 | F5 | | F6 | - | = | [ | ] | \ |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | F7 | F8 | F9 | F10 | F11 | | F12 | | PrSc |PageDn|PageUp| |
|
||||
* |------+------+------+------+------+------+-------------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | Next | Vol- | Vol+ | Play |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_RAISE] = LAYOUT(
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_PSCR, KC_PGDN, KC_PGUP, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
|
||||
),
|
||||
|
||||
/* Adjust (Lower + Raise)
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | | Reset|RGBRST| | | | | | | | | | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | |Aud on|Audoff|MU TOG|MU MOD| Mac | | Win |Qwerty|Colemk|Dvorak| | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | |CK TOG|CK RST| CK UP|CK DWN| | | | |RGB ON| HUE+ | SAT+ | VAL+ |
|
||||
* |------+------+------+------+------+------+-------------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | MODE | HUE- | SAT- | VAL- |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_ADJUST] = LAYOUT(
|
||||
_______, QK_BOOT, RGBRST, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, AU_ON, AU_OFF, MU_TOGG, MU_NEXT, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______,
|
||||
_______, CK_TOGG, CK_RST, CK_UP, CK_DOWN, _______, _______, _______, UG_TOGG, UG_HUEU, UG_SATU, UG_VALU,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, UG_NEXT, UG_HUED, UG_SATD, UG_VALD
|
||||
)
|
||||
};
|
||||
|
||||
|
||||
|
||||
#ifdef AUDIO_ENABLE
|
||||
|
||||
float tone_qwerty[][2] = SONG(QWERTY_SOUND);
|
||||
float tone_dvorak[][2] = SONG(DVORAK_SOUND);
|
||||
float tone_colemak[][2] = SONG(COLEMAK_SOUND);
|
||||
float tone_plover[][2] = SONG(PLOVER_SOUND);
|
||||
float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND);
|
||||
#endif
|
||||
|
||||
// define variables for reactive RGB
|
||||
bool TOG_STATUS = false;
|
||||
int RGB_current_mode;
|
||||
|
||||
// Setting ADJUST layer RGB back to default
|
||||
void update_tri_layer_RGB(uint8_t layer1, uint8_t layer2, uint8_t layer3) {
|
||||
if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
//rgblight_mode(RGB_current_mode);
|
||||
#endif
|
||||
layer_on(layer3);
|
||||
} else {
|
||||
layer_off(layer3);
|
||||
}
|
||||
}
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case QWERTY:
|
||||
if (record->event.pressed) {
|
||||
#ifdef AUDIO_ENABLE
|
||||
PLAY_SONG(tone_qwerty);
|
||||
#endif
|
||||
set_single_persistent_default_layer(_QWERTY);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case COLEMAK:
|
||||
if (record->event.pressed) {
|
||||
#ifdef AUDIO_ENABLE
|
||||
PLAY_SONG(tone_colemak);
|
||||
#endif
|
||||
set_single_persistent_default_layer(_COLEMAK);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case DVORAK:
|
||||
if (record->event.pressed) {
|
||||
#ifdef AUDIO_ENABLE
|
||||
PLAY_SONG(tone_dvorak);
|
||||
#endif
|
||||
set_single_persistent_default_layer(_DVORAK);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case LOWER:
|
||||
if (record->event.pressed) {
|
||||
//not sure how to have keyboard check mode and set it to a variable, so my work around
|
||||
//uses another variable that would be set to true after the first time a reactive key is pressed.
|
||||
if (TOG_STATUS) { //TOG_STATUS checks is another reactive key currently pressed, only changes RGB mode if returns false
|
||||
} else {
|
||||
TOG_STATUS = !TOG_STATUS;
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
//rgblight_mode(RGBLIGHT_MODE_SNAKE + 1);
|
||||
#endif
|
||||
}
|
||||
layer_on(_LOWER);
|
||||
update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
|
||||
} else {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
//rgblight_mode(RGB_current_mode); // revert RGB to initial mode prior to RGB mode change
|
||||
#endif
|
||||
TOG_STATUS = false;
|
||||
layer_off(_LOWER);
|
||||
update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case RAISE:
|
||||
if (record->event.pressed) {
|
||||
//not sure how to have keyboard check mode and set it to a variable, so my work around
|
||||
//uses another variable that would be set to true after the first time a reactive key is pressed.
|
||||
if (TOG_STATUS) { //TOG_STATUS checks is another reactive key currently pressed, only changes RGB mode if returns false
|
||||
} else {
|
||||
TOG_STATUS = !TOG_STATUS;
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
//rgblight_mode(RGBLIGHT_MODE_SNAKE);
|
||||
#endif
|
||||
}
|
||||
layer_on(_RAISE);
|
||||
update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
|
||||
} else {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
//rgblight_mode(RGB_current_mode); // revert RGB to initial mode prior to RGB mode change
|
||||
#endif
|
||||
layer_off(_RAISE);
|
||||
TOG_STATUS = false;
|
||||
update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case ADJUST:
|
||||
if (record->event.pressed) {
|
||||
layer_on(_ADJUST);
|
||||
} else {
|
||||
layer_off(_ADJUST);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
//led operations - RGB mode change now updates the RGB_current_mode to allow the right RGB mode to be set after reactive keys are released
|
||||
case QK_UNDERGLOW_MODE_NEXT:
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
if (record->event.pressed) {
|
||||
rgblight_mode(RGB_current_mode);
|
||||
rgblight_step();
|
||||
RGB_current_mode = rgblight_config.mode;
|
||||
}
|
||||
#endif
|
||||
return false;
|
||||
break;
|
||||
case EISU:
|
||||
if (record->event.pressed) {
|
||||
if(keymap_config.swap_lalt_lgui==false){
|
||||
register_code(KC_LNG2);
|
||||
}else{
|
||||
SEND_STRING(SS_LALT("`"));
|
||||
}
|
||||
} else {
|
||||
unregister_code(KC_LNG2);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case KANA:
|
||||
if (record->event.pressed) {
|
||||
if(keymap_config.swap_lalt_lgui==false){
|
||||
register_code(KC_LNG1);
|
||||
}else{
|
||||
SEND_STRING(SS_LALT("`"));
|
||||
}
|
||||
} else {
|
||||
unregister_code(KC_LNG1);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case RGBRST:
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
if (record->event.pressed) {
|
||||
eeconfig_update_rgblight_default();
|
||||
rgblight_enable();
|
||||
RGB_current_mode = rgblight_config.mode;
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void matrix_init_user(void) {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
RGB_current_mode = rgblight_config.mode;
|
||||
#endif
|
||||
}
|
48
keyboards/helix/pico/keymaps/default/keymap.json
Normal file
48
keyboards/helix/pico/keymaps/default/keymap.json
Normal file
@ -0,0 +1,48 @@
|
||||
{
|
||||
"keyboard": "helix/pico",
|
||||
"keymap": "default",
|
||||
"layout": "LAYOUT",
|
||||
"config": {
|
||||
"features": {
|
||||
"tri_layer": true
|
||||
}
|
||||
},
|
||||
"layers": [
|
||||
[
|
||||
"KC_TAB", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_BSPC",
|
||||
"KC_LCTL", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_QUOT",
|
||||
"KC_LSFT", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_ENT",
|
||||
"MO(5)", "KC_ESC", "KC_LALT", "KC_LGUI", "EISU", "TL_LOWR", "KC_SPC", "KC_SPC", "TL_UPPR", "KANA", "KC_LEFT", "KC_DOWN", "KC_UP", "KC_RGHT"
|
||||
],
|
||||
[
|
||||
"KC_TAB", "KC_Q", "KC_W", "KC_F", "KC_P", "KC_G", "KC_J", "KC_L", "KC_U", "KC_Y", "KC_SCLN", "KC_BSPC",
|
||||
"KC_LCTL", "KC_A", "KC_R", "KC_S", "KC_T", "KC_D", "KC_H", "KC_N", "KC_E", "KC_I", "KC_O", "KC_QUOT",
|
||||
"KC_LSFT", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_K", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_ENT",
|
||||
"MO(5)", "KC_ESC", "KC_LALT", "KC_LGUI", "EISU", "TL_LOWR", "KC_SPC", "KC_SPC", "TL_UPPR", "KANA", "KC_LEFT", "KC_DOWN", "KC_UP", "KC_RGHT"
|
||||
],
|
||||
[
|
||||
"KC_TAB", "KC_QUOT", "KC_COMM", "KC_DOT", "KC_P", "KC_Y", "KC_F", "KC_G", "KC_C", "KC_R", "KC_L", "KC_BSPC",
|
||||
"KC_LCTL", "KC_A", "KC_O", "KC_E", "KC_U", "KC_I", "KC_D", "KC_H", "KC_T", "KC_N", "KC_S", "KC_SLSH",
|
||||
"KC_LSFT", "KC_SCLN", "KC_Q", "KC_J", "KC_K", "KC_X", "KC_B", "KC_M", "KC_W", "KC_V", "KC_Z", "KC_ENT",
|
||||
"MO(5)", "KC_ESC", "KC_LALT", "KC_LGUI", "EISU", "TL_LOWR", "KC_SPC", "KC_SPC", "TL_UPPR", "KANA", "KC_LEFT", "KC_DOWN", "KC_UP", "KC_RGHT"
|
||||
],
|
||||
[
|
||||
"KC_TILD", "KC_EXLM", "KC_AT", "KC_HASH", "KC_DLR", "KC_PERC", "KC_CIRC", "KC_AMPR", "KC_ASTR", "KC_LPRN", "KC_RPRN", "KC_DEL",
|
||||
"_______", "KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_F5", "KC_F6", "KC_UNDS", "KC_PLUS", "KC_LCBR", "KC_RCBR", "KC_PIPE",
|
||||
"_______", "KC_F7", "KC_F8", "KC_F9", "KC_F10", "KC_F11", "KC_F12", "_______", "KC_PSCR", "KC_HOME", "KC_END", "_______",
|
||||
"_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "KC_MNXT", "KC_VOLD", "KC_VOLU", "KC_MPLY"
|
||||
],
|
||||
[
|
||||
"KC_GRV", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_DEL",
|
||||
"_______", "KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_F5", "KC_F6", "KC_MINS", "KC_EQL", "KC_LBRC", "KC_RBRC", "KC_BSLS",
|
||||
"_______", "KC_F7", "KC_F8", "KC_F9", "KC_F10", "KC_F11", "KC_F12", "_______", "KC_PSCR", "KC_PGDN", "KC_PGUP", "_______",
|
||||
"_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "KC_MNXT", "KC_VOLD", "KC_VOLU", "KC_MPLY"
|
||||
],
|
||||
[
|
||||
"_______", "QK_BOOT", "RGBRST", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______",
|
||||
"_______", "AU_ON", "AU_OFF", "MU_TOGG", "MU_NEXT", "AG_NORM", "AG_SWAP", "DF(0)", "DF(1)", "DF(2)", "_______", "_______",
|
||||
"_______", "CK_TOGG", "CK_RST", "CK_UP", "CK_DOWN", "_______", "_______", "_______", "RGB_TOG", "RGB_HUI", "RGB_SAI", "RGB_VAI",
|
||||
"_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "RGB_MOD", "RGB_HUD", "RGB_SAD", "RGB_VAD"
|
||||
]
|
||||
]
|
||||
}
|
@ -1,137 +0,0 @@
|
||||
# The Default HelixPico Layout
|
||||
## Layout
|
||||
|
||||
### Qwerty
|
||||
```
|
||||
,-----------------------------------------. ,-----------------------------------------.
|
||||
| Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| Ctrl | A | S | D | F | G | | H | J | K | L | ; | ' |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| Shift| Z | X | C | V | B | | N | M | , | . | / |Enter |
|
||||
|------+------+------+------+------+------+-------------+------+------+------+------+------+------|
|
||||
|Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right |
|
||||
`-------------------------------------------------------------------------------------------------'
|
||||
```
|
||||
|
||||
### Colemak
|
||||
```
|
||||
,-----------------------------------------. ,-----------------------------------------.
|
||||
| Tab | Q | W | F | P | G | | J | L | U | Y | ; | Bksp |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| Ctrl | A | R | S | T | D | | H | N | E | I | O | ' |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| Shift| Z | X | C | V | B | | K | M | , | . | / |Enter |
|
||||
|------+------+------+------+------+------+-------------+------+------+------+------+------+------|
|
||||
|Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right |
|
||||
`-------------------------------------------------------------------------------------------------'
|
||||
```
|
||||
|
||||
### Dvorak
|
||||
```
|
||||
,-----------------------------------------. ,-----------------------------------------.
|
||||
| Tab | ' | , | . | P | Y | | F | G | C | R | L | Bksp |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| Ctrl | A | O | E | U | I | | D | H | T | N | S | / |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| Shift| ; | Q | J | K | X | | B | M | W | V | Z |Enter |
|
||||
|------+------+------+------+------+------+-------------+------+------+------+------+------+------|
|
||||
|Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right |
|
||||
`-------------------------------------------------------------------------------------------------'
|
||||
```
|
||||
|
||||
## Layers
|
||||
|
||||
|Priority|number|name|description|
|
||||
| ---- | ---- | --- | --- |
|
||||
|high|16|Adjust|Functions|
|
||||
||4|Raise|Numeric charactors|
|
||||
||3|Lower|Other charactors|
|
||||
||2|Dvorak|Dvorak leyout|
|
||||
||1|Colemak|Colemak leyout|
|
||||
|low|0|Qwerty|QWERTY leyout(base)|
|
||||
|
||||
### Lower
|
||||
```
|
||||
,-----------------------------------------. ,-----------------------------------------.
|
||||
| ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | Del |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| | F1 | F2 | F3 | F4 | F5 | | F6 | _ | + | { | } | | |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| | F7 | F8 | F9 | F10 | F11 | | F12 | | PrSc | Home | End | |
|
||||
|------+------+------+------+------+------+-------------+------+------+------+------+------+------|
|
||||
| | | | | | | | | | | Next | Vol- | Vol+ | Play |
|
||||
`-------------------------------------------------------------------------------------------------'
|
||||
```
|
||||
|
||||
### Raise
|
||||
```
|
||||
,-----------------------------------------. ,-----------------------------------------.
|
||||
| ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| | F1 | F2 | F3 | F4 | F5 | | F6 | - | = | [ | ] | \ |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| | F7 | F8 | F9 | F10 | F11 | | F12 | | PrSc |PageDn|PageUp| |
|
||||
|------+------+------+------+------+------+-------------+------+------+------+------+------+------|
|
||||
| | | | | | | | | | | Next | Vol- | Vol+ | Play |
|
||||
`-------------------------------------------------------------------------------------------------'
|
||||
```
|
||||
|
||||
### Adjust (Lower + Raise)
|
||||
```
|
||||
,-----------------------------------------. ,-----------------------------------------.
|
||||
| | Reset| | | | | | | | | | | |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| |Aud on|Audoff|MU TOG|MU MOD| Mac | | Win |Qwerty|Colemk|Dvorak| | |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| |CK TOG|CK RST| CK UP|CK DWN| | | | |RGB ON| HUE+ | SAT+ | VAL+ |
|
||||
|------+------+------+------+------+------+-------------+------+------+------+------+------+------|
|
||||
| | | | | | | | | | | MODE | HUE- | SAT- | VAL- |
|
||||
`-------------------------------------------------------------------------------------------------'
|
||||
```
|
||||
|
||||
## Customize
|
||||
|
||||
see `qmk_firmware/keyboards/helix/pico/keymaps/default/rules.mk`
|
||||
|
||||
```
|
||||
# Helix Spacific Build Options
|
||||
# you can uncomment and edit follows 4 Variables
|
||||
# jp: 以下の4つの変数を必要に応じて編集し、コメントアウトをはずします。
|
||||
# LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.)
|
||||
# LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
|
||||
# LED_ANIMATIONS = yes # LED animations
|
||||
# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
|
||||
```
|
||||
## Compile
|
||||
|
||||
go to qmk top directory.
|
||||
```
|
||||
$ cd qmk_firmware
|
||||
```
|
||||
|
||||
build
|
||||
```
|
||||
$ make helix/pico:default
|
||||
$ make helix/pico/back:default # with backlight
|
||||
$ make HELIX=no-ani helix/pico/back:default # with backlight without animation
|
||||
$ make helix/pico/under:default # with underglow
|
||||
```
|
||||
|
||||
build (experimental use of split_common with backlight)
|
||||
```
|
||||
$ make helix/pico/sc:default
|
||||
```
|
||||
|
||||
flash to keyboard
|
||||
```
|
||||
$ make helix/pico:default:flash
|
||||
$ make helix/pico/back:default:flash # with backlight
|
||||
$ make HELIX=no_ani helix/pico/back:default:flash # with backlight without animation
|
||||
$ make helix/pico/under:default:flash # with underglow
|
||||
|
||||
```
|
||||
|
||||
## Link
|
||||
* more detail wrote in Japanese [helix/Doc/firmware_jp.md](https://github.com/MakotoKurauchi/helix/blob/master/Doc/firmware_jp.md)
|
||||
* [Helix top](https://github.com/MakotoKurauchi/helix)
|
@ -1,138 +0,0 @@
|
||||
# The Default HelixPico Layout
|
||||
## 配列
|
||||
|
||||
### Qwerty配列
|
||||
|
||||
```
|
||||
,-----------------------------------------. ,-----------------------------------------.
|
||||
| Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| Ctrl | A | S | D | F | G | | H | J | K | L | ; | ' |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| Shift| Z | X | C | V | B | | N | M | , | . | / |Enter |
|
||||
|------+------+------+------+------+------+-------------+------+------+------+------+------+------|
|
||||
|Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right |
|
||||
`-------------------------------------------------------------------------------------------------'
|
||||
```
|
||||
|
||||
### Lower
|
||||
```
|
||||
,-----------------------------------------. ,-----------------------------------------.
|
||||
| ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | Del |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| | F1 | F2 | F3 | F4 | F5 | | F6 | _ | + | { | } | | |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| | F7 | F8 | F9 | F10 | F11 | | F12 | | PrSc | Home | End | |
|
||||
|------+------+------+------+------+------+-------------+------+------+------+------+------+------|
|
||||
| | | | | | | | | | | Next | Vol- | Vol+ | Play |
|
||||
`-------------------------------------------------------------------------------------------------'
|
||||
```
|
||||
|
||||
### Raise
|
||||
```
|
||||
,-----------------------------------------. ,-----------------------------------------.
|
||||
| ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| | F1 | F2 | F3 | F4 | F5 | | F6 | - | = | [ | ] | \ |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| | F7 | F8 | F9 | F10 | F11 | | F12 | | PrSc |PageDn|PageUp| |
|
||||
|------+------+------+------+------+------+-------------+------+------+------+------+------+------|
|
||||
| | | | | | | | | | | Next | Vol- | Vol+ | Play |
|
||||
`-------------------------------------------------------------------------------------------------'
|
||||
```
|
||||
|
||||
### Adjust (Lower + Raise)
|
||||
```
|
||||
,-----------------------------------------. ,-----------------------------------------.
|
||||
| | Reset| | | | | | | | | | | |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| |Aud on|Audoff|MU TOG|MU MOD| Mac | | Win |Qwerty|Colemk|Dvorak| | |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| |CK TOG|CK RST| CK UP|CK DWN| | | | |RGB ON| HUE+ | SAT+ | VAL+ |
|
||||
|------+------+------+------+------+------+-------------+------+------+------+------+------+------|
|
||||
| | | | | | | | | | | MODE | HUE- | SAT- | VAL- |
|
||||
`-------------------------------------------------------------------------------------------------'
|
||||
```
|
||||
|
||||
他の配列(Colemak,Dvorak)は、[readme.md](readme.md) を参照
|
||||
|
||||
## カスタマイズ
|
||||
|
||||
RGB バックライトまたは、RGB Underglow をつけた場合は、
|
||||
`qmk_firmware/keyboards/helix/pico/keymaps/default/rules.mk` の以下の部分を編集して機能を有効化してください。
|
||||
|
||||
```
|
||||
# Helix Spacific Build Options
|
||||
# you can uncomment and edit follows 4 Variables
|
||||
# jp: 以下の4つの変数を必要に応じて編集し、コメントアウトをはずします。
|
||||
# LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.)
|
||||
# LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
|
||||
# LED_ANIMATIONS = yes # LED animations
|
||||
# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
|
||||
```
|
||||
|
||||
## RGB バックライトを有効にする
|
||||
|
||||
rules.mk の下記の部分を編集して no を yes に変更してください。
|
||||
|
||||
```
|
||||
LED_BACK_ENABLE = yes # LED backlight (Enable WS2812 RGB underlight.)
|
||||
```
|
||||
|
||||
## RGB Underglow を有効にする
|
||||
|
||||
rules.mk の下記の部分を編集して no を yes に変更してください。
|
||||
```
|
||||
LED_UNDERGLOW_ENABLE = yes # LED underglow (Enable WS2812 RGB underlight.)
|
||||
```
|
||||
|
||||
## iPad/iPhoneサポートを有効にする。
|
||||
|
||||
rules.mk の下記の部分を編集して no を yes に変更してください。
|
||||
RBG Underglow や RGBバックライトの輝度を抑えて、iPad, iPhone にも接続できるようになります。
|
||||
|
||||
```
|
||||
IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
|
||||
```
|
||||
|
||||
## コンパイルの仕方
|
||||
|
||||
コンパイルは、qmk_firmware のトップディレクトリで行います。
|
||||
|
||||
```
|
||||
$ cd qmk_firmware
|
||||
```
|
||||
qmk_firmwareでは各キーボードのコンパイルは、`<キーボード名>:<キーマップ名>`という指定で行います。
|
||||
|
||||
```
|
||||
$ make helix/pico:default
|
||||
```
|
||||
|
||||
キーボードへの書き込みまで同時に行うには下記のように`:flash`を付けます。
|
||||
|
||||
```
|
||||
$ make helix/pico:default:flash
|
||||
```
|
||||
|
||||
コンパイル結果と中間生成物を消去したい場合は以下のようにします。
|
||||
|
||||
```
|
||||
$ make helix/pico:default:clean
|
||||
```
|
||||
|
||||
上記の、rules.mk によるカスタマイズ項目の一部は下記のようにコマンド上で直接指定することも可能です。
|
||||
|
||||
RGB バックライトを有効にしてコンパイルしてキーボードへ書き込む。
|
||||
```
|
||||
$ make helix/pico/back:default:flash
|
||||
```
|
||||
|
||||
RGB Underglow を有効にしてコンパイルしてキーボードへ書き込む。
|
||||
```
|
||||
$ make helix/pico/under:default:flash
|
||||
```
|
||||
|
||||
## リンク
|
||||
|
||||
* さらに詳細は、[こちら helix/Doc/firmware_jp.md](https://github.com/MakotoKurauchi/helix/blob/master/Doc/firmware_jp.md)をご覧ください。
|
||||
* [Helix top](https://github.com/MakotoKurauchi/helix)
|
@ -1,11 +0,0 @@
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
AUDIO_ENABLE = yes # Audio output
|
||||
LTO_ENABLE = no # if firmware size over limit, try this option
|
||||
|
||||
# Helix Spacific Build Options
|
||||
# you can uncomment and edit follows 4 Variables
|
||||
# jp: 以下の4つの変数を必要に応じて編集し、コメントアウトをはずします。
|
||||
# LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.)
|
||||
# LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
|
||||
# LED_ANIMATIONS = yes # LED animations
|
||||
# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
|
@ -1,42 +0,0 @@
|
||||
#
|
||||
# This file is not normally used. It is used for maintenance testing purposes.
|
||||
# To use it, do the following:
|
||||
#
|
||||
# $ cp override_helix_options.mk-maintenance override_helix_options.mk
|
||||
#
|
||||
$(info -------------------------)
|
||||
$(info override_helix_options.mk)
|
||||
$(info -------------------------)
|
||||
|
||||
define HELIX_OVERRIDE_PARSE
|
||||
ifeq ($(strip $1),back)
|
||||
LED_BACK_ENABLE = yes
|
||||
LED_UNDERGLOW_ENABLE = no
|
||||
endif
|
||||
ifeq ($(strip $1),under)
|
||||
LED_BACK_ENABLE = no
|
||||
LED_UNDERGLOW_ENABLE = yes
|
||||
endif
|
||||
ifneq ($(filter noled led-off led_off,$(strip $1)),)
|
||||
LED_BACK_ENABLE = no
|
||||
LED_UNDERGLOW_ENABLE = no
|
||||
endif
|
||||
ifneq ($(filter noaudio audio-off audio_off,$(strip $1)),)
|
||||
AUDIO_ENABLE = no
|
||||
endif
|
||||
ifneq ($(filter audio audio-on audio_on,$(strip $1)),)
|
||||
AUDIO_ENABLE = yes
|
||||
endif
|
||||
ifneq ($(filter sc split-common split_common,$(strip $1)),)
|
||||
SPLIT_KEYBOARD = yes
|
||||
endif
|
||||
ifneq ($(filter nosc no-sc no-split-common no-split_common,$(strip $1)),)
|
||||
SPLIT_KEYBOARD = no
|
||||
endif
|
||||
ifeq ($(strip $1),scan)
|
||||
DEBUG_MATRIX_SCAN_RATE_ENABLE = yes
|
||||
endif
|
||||
ifeq ($(strip $1),scan-api)
|
||||
DEBUG_MATRIX_SCAN_RATE_ENABLE = api
|
||||
endif
|
||||
endef # end of HELIX_OVERRIDE_PARSE
|
@ -1,37 +0,0 @@
|
||||
/* Copyright 2018 MakotoKurauchi
|
||||
*
|
||||
* 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 "pico.h"
|
||||
|
||||
// Each keymap.c should use is_keyboard_master() instead of 'is_master'.
|
||||
// But keep 'is_master' for a while for backwards compatibility
|
||||
// for the old keymap.c.
|
||||
uint8_t is_master = false;
|
||||
|
||||
void matrix_init_kb(void) {
|
||||
// Each keymap.c should use is_keyboard_master() instead of is_master.
|
||||
// But keep is_master for a while for backwards compatibility
|
||||
// for the old keymap.c.
|
||||
is_master = is_keyboard_master();
|
||||
|
||||
matrix_init_user();
|
||||
};
|
||||
|
||||
void keyboard_post_init_kb(void) {
|
||||
#if defined(DEBUG_MATRIX_SCAN_RATE)
|
||||
debug_enable = true;
|
||||
#endif
|
||||
keyboard_post_init_user();
|
||||
}
|
@ -1,24 +0,0 @@
|
||||
/* Copyright 2018 MakotoKurauchi
|
||||
*
|
||||
* 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"
|
||||
|
||||
// Each keymap.c should use is_keyboard_master() instead of 'is_master', 'has_usb()'.
|
||||
// But keep 'is_master' for a while for backwards compatibility
|
||||
// for the old keymap.c.
|
||||
extern uint8_t is_master; // 'is_master' will be obsolete, it is recommended to use 'is_keyboard_master ()' instead.
|
||||
#define has_usb() is_keyboard_master()
|
@ -1,7 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#if defined(SPLIT_KEYBOARD) /* if use split_common */
|
||||
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_SPLIT)
|
||||
# define RGBLIGHT_SPLIT /* helix hardware need this */
|
||||
# endif
|
||||
#endif
|
@ -1,77 +0,0 @@
|
||||
#
|
||||
# post_rules.mk contains post-processing rules for the Helix keyboard.
|
||||
#
|
||||
# Post-processing rules convert keyboard-specific shortcuts (that represent
|
||||
# combinations of standard options) into QMK standard options.
|
||||
#
|
||||
-include $(strip $(HELIX_TOP_DIR)/pico/override_helix_options.mk) ## File dedicated to maintenance
|
||||
|
||||
# Parse 'HELIX=xx,yy,zz' option
|
||||
ifneq ($(strip $(HELIX)),)
|
||||
# make HELIX=ios helix/pico:AKEYMAP
|
||||
# make HELIX=no-ani helix/pico:AKEYMAP
|
||||
# make HELIX=ios,no-ani helix/pico:AKEYMAP
|
||||
define HELIX_OPTION_PARSE
|
||||
# parce 'no-ani' 'ios'
|
||||
$(if $(SHOW_PARCE),$(info parse .$1.)) #debug
|
||||
$(if $(HELIX_OVERRIDE_PARSE),$(call HELIX_OVERRIDE_PARSE,$1))
|
||||
|
||||
ifeq ($(strip $1),ios)
|
||||
IOS_DEVICE_ENABLE = yes
|
||||
endif
|
||||
ifneq ($(filter na no_ani no-ani,$(strip $1)),)
|
||||
LED_ANIMATIONS = no
|
||||
endif
|
||||
endef # end of HELIX_OPTION_PARSE
|
||||
|
||||
COMMA=,
|
||||
$(eval $(foreach A_OPTION_NAME,$(subst $(COMMA), ,$(HELIX)), \
|
||||
$(call HELIX_OPTION_PARSE,$(A_OPTION_NAME))))
|
||||
SHOW_HELIX_OPTIONS = yes
|
||||
endif
|
||||
|
||||
########
|
||||
# convert Helix-specific options (that represent combinations of standard options)
|
||||
# into QMK standard options.
|
||||
|
||||
ifeq ($(strip $(LED_BACK_ENABLE)), yes)
|
||||
RGBLIGHT_ENABLE = yes
|
||||
OPT_DEFS += -DRGBLED_BACK
|
||||
ifeq ($(strip $(LED_UNDERGLOW_ENABLE)), yes)
|
||||
$(error LED_BACK_ENABLE and LED_UNDERGLOW_ENABLE both 'yes')
|
||||
endif
|
||||
else ifeq ($(strip $(LED_UNDERGLOW_ENABLE)), yes)
|
||||
RGBLIGHT_ENABLE = yes
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes)
|
||||
OPT_DEFS += -DIOS_DEVICE_ENABLE
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(LED_ANIMATIONS)), yes)
|
||||
OPT_DEFS += -DLED_ANIMATIONS
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(AUDIO_ENABLE)),yes)
|
||||
ifeq ($(strip $(RGBLIGHT_ENABLE)),yes)
|
||||
LTO_ENABLE = yes
|
||||
endif
|
||||
endif
|
||||
|
||||
ifneq ($(strip $(SHOW_HELIX_OPTIONS)),)
|
||||
$(info Helix Spacific Build Options)
|
||||
$(info - LED_BACK_ENABLE = $(LED_BACK_ENABLE))
|
||||
$(info - LED_UNDERGLOW_ENABLE = $(LED_UNDERGLOW_ENABLE))
|
||||
$(info - LED_ANIMATIONS = $(LED_ANIMATIONS))
|
||||
$(info - IOS_DEVICE_ENABLE = $(IOS_DEVICE_ENABLE))
|
||||
$(info )
|
||||
$(info QMK Build Options)
|
||||
$(info -- SPLIT_KEYBOARD = $(SPLIT_KEYBOARD))
|
||||
$(info -- AUDIO_ENABLE = $(AUDIO_ENABLE))
|
||||
$(info -- RGBLIGHT_ENABLE = $(RGBLIGHT_ENABLE))
|
||||
$(info -- CONSOLE_ENABLE = $(CONSOLE_ENABLE))
|
||||
$(info -- OPT_DEFS = $(OPT_DEFS))
|
||||
$(info -- LTO_ENABLE = $(LTO_ENABLE))
|
||||
$(info -- DEBUG_MATRIX_SCAN_RATE_ENABLE = $(DEBUG_MATRIX_SCAN_RATE_ENABLE))
|
||||
$(info )
|
||||
endif
|
@ -1,6 +0,0 @@
|
||||
{
|
||||
"features": {
|
||||
"audio": true,
|
||||
"extrakey": true
|
||||
}
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
# Helix Spacific Build Options default values
|
||||
LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.)
|
||||
LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
|
||||
LED_ANIMATIONS = yes # LED animations
|
||||
IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
|
||||
|
||||
DEFAULT_FOLDER = helix/pico/base
|
@ -1 +0,0 @@
|
||||
{}
|
@ -1 +0,0 @@
|
||||
LED_BACK_ENABLE = yes
|
@ -1 +0,0 @@
|
||||
{}
|
@ -1 +0,0 @@
|
||||
LED_UNDERGLOW_ENABLE = yes
|
@ -1,16 +1,32 @@
|
||||
Helix
|
||||
===
|
||||
# Helix
|
||||
|
||||
![Helix](https://i.imgur.com/XBAmynN.jpg)
|
||||
![image](https://i.imgur.com/fpHr3Bqh.jpg)
|
||||
|
||||
A compact split ortholinear keyboard.
|
||||
* Keyboard Maintainer: [MakotoKurachi](https://github.com/MakotoKurauchi)
|
||||
* Hardware Supported: Pro Micro or compatible alternative with Helix PCBS
|
||||
* Hardware Availability: [Github](https://github.com/MakotoKurauchi/helix), [Yushakobo Shop](https://shop.yushakobo.jp)
|
||||
|
||||
Keyboard Maintainer: [Makoto Kurauchi](https://github.com/MakotoKurauchi/) [@pluis9](https://twitter.com/pluis9) [yushakobo](https://github.com/yushakobo)
|
||||
Hardware Supported: Helix PCB Alpha, Beta, Rev3, Pro Micro
|
||||
Hardware Availability: [PCB & Case Data](https://github.com/MakotoKurauchi/helix), [Yushakobo Shop](https://yushakobo.jp/shop/), [Little Keyboards](https://littlekeyboards.com/collections/helix)
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
## How to build
|
||||
* [Helix how to Customize and Compile](rev2/keymaps/default/readme.md#customize)
|
||||
* [HelixPico how to Customize and Compile](pico/keymaps/default/readme.md#customize)
|
||||
make helix/pico:default
|
||||
make helix/rev2:default
|
||||
make helix/rev3_4rows:default
|
||||
make helix/rev3_5rows:default
|
||||
|
||||
See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information.
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make helix/pico:default:flash
|
||||
make helix/rev2:default:flash
|
||||
make helix/rev3_4rows:default:flash
|
||||
make helix/rev3_5rows:default:flash
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
|
||||
## Bootloader
|
||||
|
||||
Enter the bootloader in 3 ways:
|
||||
|
||||
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix
|
||||
* **Physical reset button**: If using a promicro, double tap reset button (or short GND & RST pins). If using Elite-C/similar, press reset button once. If using RP2040 replacement, hold BOOT button while plugging keyboard in.
|
||||
* **Keycode in layout**: Press the key mapped to `QK_BOOT`
|
||||
|
@ -1 +0,0 @@
|
||||
{}
|
@ -1 +0,0 @@
|
||||
LED_BACK_ENABLE = yes
|
@ -1 +0,0 @@
|
||||
{}
|
@ -1,78 +0,0 @@
|
||||
/*
|
||||
Copyright 2012 Jun Wako <wakojun@gmail.com>
|
||||
Copyright 2015 Jack Humbert
|
||||
Copyright 2018 MakotoKurauchi
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define QUICK_TAP_TERM 0
|
||||
|
||||
#define OLED_UPDATE_INTERVAL 50
|
||||
|
||||
// Helix keyboard RGB LED support
|
||||
// see ./rules.mk: LED_BACK_ENABLE or LED_UNDERGLOW_ENABLE set yes
|
||||
#ifdef RGBLED_BACK
|
||||
#define RGBLIGHT_LED_COUNT 32
|
||||
#else
|
||||
#define RGBLIGHT_LED_COUNT 6
|
||||
#endif
|
||||
|
||||
#ifndef IOS_DEVICE_ENABLE
|
||||
#if RGBLIGHT_LED_COUNT <= 6
|
||||
#define RGBLIGHT_LIMIT_VAL 255
|
||||
#else
|
||||
#define RGBLIGHT_LIMIT_VAL 120
|
||||
#endif
|
||||
#define RGBLIGHT_VAL_STEP 17
|
||||
#else
|
||||
#if RGBLIGHT_LED_COUNT <= 6
|
||||
#define RGBLIGHT_LIMIT_VAL 90
|
||||
#else
|
||||
#define RGBLIGHT_LIMIT_VAL 35
|
||||
#endif
|
||||
#define RGBLIGHT_VAL_STEP 4
|
||||
#endif
|
||||
|
||||
#if defined(RGBLIGHT_ENABLE) && !defined(IOS_DEVICE_ENABLE)
|
||||
// USB_MAX_POWER_CONSUMPTION value for Helix keyboard
|
||||
// 120 RGBoff, OLEDoff
|
||||
// 120 OLED
|
||||
// 330 RGB 6
|
||||
// 300 RGB 32
|
||||
// 310 OLED & RGB 32
|
||||
#define USB_MAX_POWER_CONSUMPTION 400
|
||||
#else
|
||||
// fix iPhone and iPad power adapter issue
|
||||
// iOS device need lessthan 100
|
||||
#define USB_MAX_POWER_CONSUMPTION 100
|
||||
#endif
|
||||
|
||||
/*
|
||||
* 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
|
@ -1,48 +1,20 @@
|
||||
{
|
||||
"keyboard_name": "Helix Beta",
|
||||
"manufacturer": "Yushakobo",
|
||||
"url": "https://github.com/MakotoKurauchi/helix",
|
||||
"maintainer": "MakotoKurauchi",
|
||||
"usb": {
|
||||
"vid": "0x3265",
|
||||
"pid": "0x0000",
|
||||
"device_version": "0.0.1"
|
||||
"keyboard_name": "Helix rev2",
|
||||
"features": {
|
||||
"oled": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["F4", "F5", "F6", "F7", "B1", "B3", "B2"],
|
||||
"rows": ["D4", "C6", "D7", "E6", "B4"]
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"split": {
|
||||
"enabled": true,
|
||||
"soft_serial_pin": "D2",
|
||||
"transport": {
|
||||
"sync": {
|
||||
"indicators": true,
|
||||
"layer_state": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"tapping": {
|
||||
"term": 100
|
||||
},
|
||||
"rgblight": {
|
||||
"hue_steps": 10,
|
||||
"animations": {
|
||||
"breathing": true,
|
||||
"rainbow_mood": true,
|
||||
"rainbow_swirl": true,
|
||||
"snake": true,
|
||||
"knight": true,
|
||||
"christmas": true,
|
||||
"static_gradient": true
|
||||
}
|
||||
"led_count": 32,
|
||||
"max_brightness": 35
|
||||
},
|
||||
"ws2812": {
|
||||
"pin": "D3"
|
||||
"usb": {
|
||||
"device_version": "0.0.1",
|
||||
"pid": "0x0000"
|
||||
},
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
@ -52,42 +24,36 @@
|
||||
{"matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"matrix": [0, 5], "x": 5, "y": 0},
|
||||
|
||||
{"matrix": [5, 5], "x": 9, "y": 0},
|
||||
{"matrix": [5, 4], "x": 10, "y": 0},
|
||||
{"matrix": [5, 3], "x": 11, "y": 0},
|
||||
{"matrix": [5, 2], "x": 12, "y": 0},
|
||||
{"matrix": [5, 1], "x": 13, "y": 0},
|
||||
{"matrix": [5, 0], "x": 14, "y": 0},
|
||||
|
||||
{"matrix": [1, 0], "x": 0, "y": 1},
|
||||
{"matrix": [1, 1], "x": 1, "y": 1},
|
||||
{"matrix": [1, 2], "x": 2, "y": 1},
|
||||
{"matrix": [1, 3], "x": 3, "y": 1},
|
||||
{"matrix": [1, 4], "x": 4, "y": 1},
|
||||
{"matrix": [1, 5], "x": 5, "y": 1},
|
||||
|
||||
{"matrix": [6, 5], "x": 9, "y": 1},
|
||||
{"matrix": [6, 4], "x": 10, "y": 1},
|
||||
{"matrix": [6, 3], "x": 11, "y": 1},
|
||||
{"matrix": [6, 2], "x": 12, "y": 1},
|
||||
{"matrix": [6, 1], "x": 13, "y": 1},
|
||||
{"matrix": [6, 0], "x": 14, "y": 1},
|
||||
|
||||
{"matrix": [2, 0], "x": 0, "y": 2},
|
||||
{"matrix": [2, 1], "x": 1, "y": 2},
|
||||
{"matrix": [2, 2], "x": 2, "y": 2},
|
||||
{"matrix": [2, 3], "x": 3, "y": 2},
|
||||
{"matrix": [2, 4], "x": 4, "y": 2},
|
||||
{"matrix": [2, 5], "x": 5, "y": 2},
|
||||
|
||||
{"matrix": [7, 5], "x": 9, "y": 2},
|
||||
{"matrix": [7, 4], "x": 10, "y": 2},
|
||||
{"matrix": [7, 3], "x": 11, "y": 2},
|
||||
{"matrix": [7, 2], "x": 12, "y": 2},
|
||||
{"matrix": [7, 1], "x": 13, "y": 2},
|
||||
{"matrix": [7, 0], "x": 14, "y": 2},
|
||||
|
||||
{"matrix": [3, 0], "x": 0, "y": 3},
|
||||
{"matrix": [3, 1], "x": 1, "y": 3},
|
||||
{"matrix": [3, 2], "x": 2, "y": 3},
|
||||
@ -95,7 +61,6 @@
|
||||
{"matrix": [3, 4], "x": 4, "y": 3},
|
||||
{"matrix": [3, 5], "x": 5, "y": 3},
|
||||
{"matrix": [3, 6], "x": 6, "y": 3},
|
||||
|
||||
{"matrix": [8, 6], "x": 8, "y": 3},
|
||||
{"matrix": [8, 5], "x": 9, "y": 3},
|
||||
{"matrix": [8, 4], "x": 10, "y": 3},
|
||||
@ -103,7 +68,6 @@
|
||||
{"matrix": [8, 2], "x": 12, "y": 3},
|
||||
{"matrix": [8, 1], "x": 13, "y": 3},
|
||||
{"matrix": [8, 0], "x": 14, "y": 3},
|
||||
|
||||
{"matrix": [4, 0], "x": 0, "y": 4},
|
||||
{"matrix": [4, 1], "x": 1, "y": 4},
|
||||
{"matrix": [4, 2], "x": 2, "y": 4},
|
||||
@ -111,7 +75,6 @@
|
||||
{"matrix": [4, 4], "x": 4, "y": 4},
|
||||
{"matrix": [4, 5], "x": 5, "y": 4},
|
||||
{"matrix": [4, 6], "x": 6, "y": 4},
|
||||
|
||||
{"matrix": [9, 6], "x": 8, "y": 4},
|
||||
{"matrix": [9, 5], "x": 9, "y": 4},
|
||||
{"matrix": [9, 4], "x": 10, "y": 4},
|
@ -1,38 +0,0 @@
|
||||
/*
|
||||
This is the c configuration file for the keymap
|
||||
|
||||
Copyright 2012 Jun Wako <wakojun@gmail.com>
|
||||
Copyright 2015 Jack Humbert
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
// place overrides here
|
||||
|
||||
// If you need more program area, try select and reduce rgblight modes to use.
|
||||
|
||||
// Selection of RGBLIGHT MODE to use.
|
||||
#if defined(LED_ANIMATIONS)
|
||||
#define RGBLIGHT_EFFECT_BREATHING
|
||||
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
|
||||
#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
|
||||
#define RGBLIGHT_EFFECT_SNAKE
|
||||
#define RGBLIGHT_EFFECT_KNIGHT
|
||||
#define RGBLIGHT_EFFECT_CHRISTMAS
|
||||
#define RGBLIGHT_EFFECT_STATIC_GRADIENT
|
||||
//#define RGBLIGHT_EFFECT_RGB_TEST
|
||||
//#define RGBLIGHT_EFFECT_ALTERNATING
|
||||
#endif
|
@ -1,341 +0,0 @@
|
||||
/* Copyright 2020 yushakobo
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||
// entirely and just use numbers.
|
||||
enum layer_number {
|
||||
_QWERTY = 0,
|
||||
_COLEMAK,
|
||||
_DVORAK,
|
||||
_LOWER,
|
||||
_RAISE,
|
||||
_ADJUST
|
||||
};
|
||||
|
||||
enum custom_keycodes {
|
||||
QWERTY = SAFE_RANGE,
|
||||
COLEMAK,
|
||||
DVORAK,
|
||||
LOWER,
|
||||
RAISE,
|
||||
ADJUST,
|
||||
BACKLIT,
|
||||
EISU,
|
||||
KANA,
|
||||
RGBRST
|
||||
};
|
||||
|
||||
enum macro_keycodes {
|
||||
KC_SAMPLEMACRO,
|
||||
};
|
||||
|
||||
//Macros
|
||||
#define M_SAMPLE M(KC_SAMPLEMACRO)
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/* Qwerty
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Ctrl | A | S | D | F | G | | H | J | K | L | ; | ' |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Shift| Z | X | C | V | B | [ | ] | N | M | , | . | / |Enter |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* |Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_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_DEL,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, KC_RBRC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
|
||||
ADJUST, KC_ESC, KC_LALT, KC_LGUI, EISU, LOWER, KC_SPC, KC_SPC, RAISE, KANA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
|
||||
),
|
||||
|
||||
/* Colemak
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Tab | Q | W | F | P | G | | J | L | U | Y | ; | Bksp |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Ctrl | A | R | S | T | D | | H | N | E | I | O | ' |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Shift| Z | X | C | V | B | [ | ] | K | M | , | . | / |Enter |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* |Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_COLEMAK] = LAYOUT(
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
|
||||
KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
|
||||
KC_LCTL, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, KC_RBRC, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
|
||||
ADJUST, KC_ESC, KC_LALT, KC_LGUI, EISU, LOWER, KC_SPC, KC_SPC, RAISE, KANA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
|
||||
),
|
||||
|
||||
/* Dvorak
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Bksp |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Tab | ' | , | . | P | Y | | F | G | C | R | L | Del |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Ctrl | A | O | E | U | I | | D | H | T | N | S | / |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Shift| ; | Q | J | K | X | [ | ] | B | M | W | V | Z |Enter |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* |Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_DVORAK] = LAYOUT(
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
|
||||
KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL,
|
||||
KC_LCTL, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH,
|
||||
KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_LBRC, KC_RBRC, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT ,
|
||||
ADJUST, KC_ESC, KC_LALT, KC_LGUI, EISU, LOWER, KC_SPC, KC_SPC, RAISE, KANA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
|
||||
),
|
||||
|
||||
/* Lower
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | F1 | F2 | F3 | F4 | F5 | | F6 | _ | + | { | } | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | CAPS | F7 | F8 | F9 | F10 | F11 | ( | ) | F12 | | | Home | End | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | Next | Vol- | Vol+ | Play |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_LOWER] = LAYOUT(
|
||||
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
|
||||
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
|
||||
KC_CAPS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_LPRN, KC_RPRN, KC_F12, _______, _______, KC_HOME, KC_END, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
|
||||
),
|
||||
|
||||
/* Raise
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Bksp |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | F1 | F2 | F3 | F4 | F5 | | F6 | - | = | [ | ] | \ |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | CAPS | F7 | F8 | F9 | F10 | F11 | | | F12 | | |PageDn|PageUp| |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | Next | Vol- | Vol+ | Play |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_RAISE] = LAYOUT(
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||
KC_CAPS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______, KC_F12, _______, _______, KC_PGDN, KC_PGUP, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
|
||||
),
|
||||
|
||||
/* Adjust (Lower + Raise)
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | Reset|RGBRST| | | | | | | | | | Del |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | | |Aud on|Audoff| Mac | | Win |Qwerty|Colemk|Dvorak| | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | |RGB ON| HUE+ | SAT+ | VAL+ |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | MODE | HUE- | SAT- | VAL- |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_ADJUST] = LAYOUT(
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
|
||||
_______, QK_BOOT, RGBRST, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
|
||||
_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, UG_TOGG, UG_HUEU, UG_SATU, UG_VALU,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, UG_NEXT, UG_HUED, UG_SATD, UG_VALD
|
||||
)
|
||||
};
|
||||
|
||||
#ifdef AUDIO_ENABLE
|
||||
|
||||
float tone_qwerty[][2] = SONG(QWERTY_SOUND);
|
||||
float tone_dvorak[][2] = SONG(DVORAK_SOUND);
|
||||
float tone_colemak[][2] = SONG(COLEMAK_SOUND);
|
||||
float tone_plover[][2] = SONG(PLOVER_SOUND);
|
||||
float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND);
|
||||
#endif
|
||||
|
||||
// define variables for reactive RGB
|
||||
bool TOG_STATUS = false;
|
||||
int RGB_current_mode;
|
||||
|
||||
// Setting ADJUST layer RGB back to default
|
||||
void update_tri_layer_RGB(uint8_t layer1, uint8_t layer2, uint8_t layer3) {
|
||||
if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
//rgblight_mode(RGB_current_mode);
|
||||
#endif
|
||||
layer_on(layer3);
|
||||
} else {
|
||||
layer_off(layer3);
|
||||
}
|
||||
}
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case QWERTY:
|
||||
if (record->event.pressed) {
|
||||
#ifdef AUDIO_ENABLE
|
||||
PLAY_SONG(tone_qwerty);
|
||||
#endif
|
||||
set_single_persistent_default_layer(_QWERTY);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case COLEMAK:
|
||||
if (record->event.pressed) {
|
||||
#ifdef AUDIO_ENABLE
|
||||
PLAY_SONG(tone_colemak);
|
||||
#endif
|
||||
set_single_persistent_default_layer(_COLEMAK);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case DVORAK:
|
||||
if (record->event.pressed) {
|
||||
#ifdef AUDIO_ENABLE
|
||||
PLAY_SONG(tone_dvorak);
|
||||
#endif
|
||||
set_single_persistent_default_layer(_DVORAK);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case LOWER:
|
||||
if (record->event.pressed) {
|
||||
//not sure how to have keyboard check mode and set it to a variable, so my work around
|
||||
//uses another variable that would be set to true after the first time a reactive key is pressed.
|
||||
if (TOG_STATUS) { //TOG_STATUS checks is another reactive key currently pressed, only changes RGB mode if returns false
|
||||
} else {
|
||||
TOG_STATUS = !TOG_STATUS;
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
//rgblight_mode(RGBLIGHT_MODE_SNAKE + 1);
|
||||
#endif
|
||||
}
|
||||
layer_on(_LOWER);
|
||||
update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
|
||||
} else {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
//rgblight_mode(RGB_current_mode); // revert RGB to initial mode prior to RGB mode change
|
||||
#endif
|
||||
TOG_STATUS = false;
|
||||
layer_off(_LOWER);
|
||||
update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case RAISE:
|
||||
if (record->event.pressed) {
|
||||
//not sure how to have keyboard check mode and set it to a variable, so my work around
|
||||
//uses another variable that would be set to true after the first time a reactive key is pressed.
|
||||
if (TOG_STATUS) { //TOG_STATUS checks is another reactive key currently pressed, only changes RGB mode if returns false
|
||||
} else {
|
||||
TOG_STATUS = !TOG_STATUS;
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
//rgblight_mode(RGBLIGHT_MODE_SNAKE);
|
||||
#endif
|
||||
}
|
||||
layer_on(_RAISE);
|
||||
update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
|
||||
} else {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
//rgblight_mode(RGB_current_mode); // revert RGB to initial mode prior to RGB mode change
|
||||
#endif
|
||||
layer_off(_RAISE);
|
||||
TOG_STATUS = false;
|
||||
update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case ADJUST:
|
||||
if (record->event.pressed) {
|
||||
layer_on(_ADJUST);
|
||||
} else {
|
||||
layer_off(_ADJUST);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
//led operations - RGB mode change now updates the RGB_current_mode to allow the right RGB mode to be set after reactive keys are released
|
||||
case QK_UNDERGLOW_MODE_NEXT:
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
if (record->event.pressed) {
|
||||
rgblight_mode(RGB_current_mode);
|
||||
rgblight_step();
|
||||
RGB_current_mode = rgblight_get_mode();
|
||||
}
|
||||
#endif
|
||||
return false;
|
||||
break;
|
||||
case EISU:
|
||||
if (record->event.pressed) {
|
||||
if (is_mac_mode()) {
|
||||
register_code(KC_LNG2);
|
||||
} else {
|
||||
SEND_STRING(SS_LALT("`"));
|
||||
}
|
||||
} else {
|
||||
unregister_code(KC_LNG2);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case KANA:
|
||||
if (record->event.pressed) {
|
||||
if (is_mac_mode()) {
|
||||
register_code(KC_LNG1);
|
||||
} else {
|
||||
SEND_STRING(SS_LALT("`"));
|
||||
}
|
||||
} else {
|
||||
unregister_code(KC_LNG1);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case RGBRST:
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
if (record->event.pressed) {
|
||||
eeconfig_update_rgblight_default();
|
||||
rgblight_enable();
|
||||
RGB_current_mode = rgblight_get_mode();
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void matrix_init_user(void) {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
RGB_current_mode = rgblight_get_mode();
|
||||
#endif
|
||||
}
|
54
keyboards/helix/rev2/keymaps/default/keymap.json
Normal file
54
keyboards/helix/rev2/keymaps/default/keymap.json
Normal file
@ -0,0 +1,54 @@
|
||||
{
|
||||
"keyboard": "helix/rev2",
|
||||
"keymap": "default",
|
||||
"layout": "LAYOUT",
|
||||
"config": {
|
||||
"features": {
|
||||
"tri_layer": true
|
||||
}
|
||||
},
|
||||
"layers": [
|
||||
[
|
||||
"KC_GRV", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_DEL",
|
||||
"KC_TAB", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_BSPC",
|
||||
"KC_LCTL", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_QUOT",
|
||||
"KC_LSFT", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "_______", "_______", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_ENT",
|
||||
"MO(5)", "KC_ESC", "KC_LALT", "KC_LGUI", "EISU", "TL_LOWR", "KC_SPC", "KC_SPC", "TL_UPPR", "KANA", "KC_LEFT", "KC_DOWN", "KC_UP", "KC_RGHT"
|
||||
],
|
||||
[
|
||||
"KC_GRV", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_DEL",
|
||||
"KC_TAB", "KC_Q", "KC_W", "KC_F", "KC_P", "KC_G", "KC_J", "KC_L", "KC_U", "KC_Y", "KC_SCLN", "KC_BSPC",
|
||||
"KC_LCTL", "KC_A", "KC_R", "KC_S", "KC_T", "KC_D", "KC_H", "KC_N", "KC_E", "KC_I", "KC_O", "KC_QUOT",
|
||||
"KC_LSFT", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "_______", "_______", "KC_K", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_ENT",
|
||||
"MO(5)", "KC_ESC", "KC_LALT", "KC_LGUI", "EISU", "TL_LOWR", "KC_SPC", "KC_SPC", "TL_UPPR", "KANA", "KC_LEFT", "KC_DOWN", "KC_UP", "KC_RGHT"
|
||||
],
|
||||
[
|
||||
"KC_GRV", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_BSPC",
|
||||
"KC_TAB", "KC_QUOT", "KC_COMM", "KC_DOT", "KC_P", "KC_Y", "KC_F", "KC_G", "KC_C", "KC_R", "KC_L", "KC_BSPC",
|
||||
"KC_LCTL", "KC_A", "KC_O", "KC_E", "KC_U", "KC_I", "KC_D", "KC_H", "KC_T", "KC_N", "KC_S", "KC_SLSH",
|
||||
"KC_LSFT", "KC_SCLN", "KC_Q", "KC_J", "KC_K", "KC_X", "_______", "_______", "KC_B", "KC_M", "KC_W", "KC_V", "KC_Z", "KC_ENT",
|
||||
"MO(5)", "KC_ESC", "KC_LALT", "KC_LGUI", "EISU", "TL_LOWR", "KC_SPC", "KC_SPC", "TL_UPPR", "KANA", "KC_LEFT", "KC_DOWN", "KC_UP", "KC_RGHT"
|
||||
],
|
||||
[
|
||||
"KC_TILD", "KC_EXLM", "KC_AT", "KC_HASH", "KC_DLR", "KC_PERC", "KC_CIRC", "KC_AMPR", "KC_ASTR", "KC_LPRN", "KC_RPRN", "_______",
|
||||
"KC_TILD", "KC_EXLM", "KC_AT", "KC_HASH", "KC_DLR", "KC_PERC", "KC_CIRC", "KC_AMPR", "KC_ASTR", "KC_LPRN", "KC_RPRN", "KC_DEL",
|
||||
"_______", "KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_F5", "KC_F6", "KC_UNDS", "KC_PLUS", "KC_LCBR", "KC_RCBR", "KC_PIPE",
|
||||
"_______", "KC_F7", "KC_F8", "KC_F9", "KC_F10", "KC_F11", "_______", "_______", "KC_F12", "_______", "KC_PSCR", "KC_HOME", "KC_END", "_______",
|
||||
"_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "KC_MNXT", "KC_VOLD", "KC_VOLU", "KC_MPLY"
|
||||
],
|
||||
[
|
||||
"KC_GRV", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_BSPC",
|
||||
"KC_GRV", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_DEL",
|
||||
"_______", "KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_F5", "KC_F6", "KC_MINS", "KC_EQL", "KC_LBRC", "KC_RBRC", "KC_BSLS",
|
||||
"_______", "KC_F7", "KC_F8", "KC_F9", "KC_F10", "KC_F11", "_______", "_______", "KC_F12", "_______", "KC_PSCR", "KC_PGDN", "KC_PGUP", "_______",
|
||||
"_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "KC_MNXT", "KC_VOLD", "KC_VOLU", "KC_MPLY"
|
||||
],
|
||||
[
|
||||
"KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_F5", "KC_F6", "KC_F7", "KC_F8", "KC_F9", "KC_F10", "KC_F11", "KC_F12",
|
||||
"_______", "QK_BOOT", "RGBRST", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______",
|
||||
"_______", "AU_ON", "AU_OFF", "MU_TOGG", "MU_NEXT", "AG_NORM", "AG_SWAP", "DF(0)", "DF(1)", "DF(2)", "_______", "_______",
|
||||
"_______", "CK_TOGG", "CK_RST", "CK_UP", "CK_DOWN", "_______", "_______", "_______", "_______", "_______", "RGB_TOG", "RGB_HUI", "RGB_SAI", "RGB_VAI",
|
||||
"_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "RGB_MOD", "RGB_HUD", "RGB_SAD", "RGB_VAD"
|
||||
]
|
||||
]
|
||||
}
|
@ -1,138 +0,0 @@
|
||||
/* Copyright 2020 yushakobo
|
||||
*
|
||||
* 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 <stdio.h>
|
||||
#include <string.h>
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||
// entirely and just use numbers.
|
||||
enum layer_number {
|
||||
_QWERTY = 0,
|
||||
_COLEMAK,
|
||||
_DVORAK,
|
||||
_LOWER,
|
||||
_RAISE,
|
||||
_ADJUST
|
||||
};
|
||||
|
||||
//assign the right code to your layers for OLED display
|
||||
#define L_BASE 0
|
||||
#define L_LOWER (1<<_LOWER)
|
||||
#define L_RAISE (1<<_RAISE)
|
||||
#define L_ADJUST (1<<_ADJUST)
|
||||
#define L_ADJUST_TRI (L_ADJUST|L_RAISE|L_LOWER)
|
||||
|
||||
//OLED update loop
|
||||
#ifdef OLED_ENABLE
|
||||
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
|
||||
if (is_keyboard_master()) {
|
||||
return OLED_ROTATION_0;
|
||||
} else {
|
||||
return OLED_ROTATION_180;
|
||||
}
|
||||
}
|
||||
|
||||
static void render_rgbled_status(bool full) {
|
||||
# ifdef RGBLIGHT_ENABLE
|
||||
char buf[30];
|
||||
if (RGBLIGHT_MODES > 1 && rgblight_is_enabled()) {
|
||||
if (full) {
|
||||
snprintf(buf, sizeof(buf), " LED %2d: %d,%d,%d ",
|
||||
rgblight_get_mode(),
|
||||
rgblight_get_hue()/RGBLIGHT_HUE_STEP,
|
||||
rgblight_get_sat()/RGBLIGHT_SAT_STEP,
|
||||
rgblight_get_val()/RGBLIGHT_VAL_STEP);
|
||||
} else {
|
||||
snprintf(buf, sizeof(buf), "[%2d] ", rgblight_get_mode());
|
||||
}
|
||||
oled_write(buf, false);
|
||||
}
|
||||
# endif
|
||||
}
|
||||
|
||||
static void render_layer_status(void) {
|
||||
// Define layers here, Have not worked out how to have text displayed for each layer. Copy down the number you see and add a case for it below
|
||||
char buf[10];
|
||||
oled_write_P(PSTR("Layer: "), false);
|
||||
switch (layer_state) {
|
||||
case L_BASE:
|
||||
oled_write_P(PSTR("Default"), false);
|
||||
break;
|
||||
case L_RAISE:
|
||||
oled_write_P(PSTR("Raise"), false);
|
||||
break;
|
||||
case L_LOWER:
|
||||
oled_write_P(PSTR("Lower"), false);
|
||||
break;
|
||||
case L_ADJUST:
|
||||
case L_ADJUST_TRI:
|
||||
oled_write_P(PSTR("Adjust"), false);
|
||||
break;
|
||||
default:
|
||||
oled_write_P(PSTR("Undef-"), false);
|
||||
snprintf(buf,sizeof(buf), "%u", layer_state);
|
||||
oled_write(buf, false);
|
||||
}
|
||||
oled_write_P(PSTR("\n"), false);
|
||||
}
|
||||
|
||||
void render_status(void) {
|
||||
// Render to mode icon
|
||||
static const char os_logo[][2][3] PROGMEM = {{{0x95,0x96,0},{0xb5,0xb6,0}},{{0x97,0x98,0},{0xb7,0xb8,0}}};
|
||||
if (is_mac_mode()) {
|
||||
oled_write_P(os_logo[0][0], false);
|
||||
oled_write_P(PSTR("\n"), false);
|
||||
oled_write_P(os_logo[0][1], false);
|
||||
} else {
|
||||
oled_write_P(os_logo[1][0], false);
|
||||
oled_write_P(PSTR("\n"), false);
|
||||
oled_write_P(os_logo[1][1], false);
|
||||
}
|
||||
|
||||
oled_write_P(PSTR(" "), false);
|
||||
render_layer_status();
|
||||
|
||||
// Host Keyboard LED Status
|
||||
led_t led_state = host_keyboard_led_state();
|
||||
oled_write_P(led_state.num_lock ? PSTR("NUMLOCK") : PSTR(" "), false);
|
||||
oled_write_P(led_state.caps_lock ? PSTR("CAPS") : PSTR(" "), false);
|
||||
oled_write_P(led_state.scroll_lock ? PSTR("SCLK") : PSTR(" "), false);
|
||||
oled_advance_page(true);
|
||||
render_rgbled_status(true);
|
||||
oled_write_P(PSTR("\n"), false);
|
||||
}
|
||||
|
||||
bool oled_task_user(void) {
|
||||
|
||||
# if DEBUG_TO_SCREEN
|
||||
if (debug_enable) {
|
||||
return;
|
||||
}
|
||||
# endif
|
||||
|
||||
if (is_keyboard_master()) {
|
||||
render_status();
|
||||
} else {
|
||||
render_helix_logo();
|
||||
render_rgbled_status(false);
|
||||
render_layer_status();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
#endif // end of OLED_ENABLE
|
@ -1,154 +0,0 @@
|
||||
# The Default Helix Layout
|
||||
## Layout
|
||||
|
||||
### Qwerty
|
||||
|
||||
```
|
||||
,-----------------------------------------. ,-----------------------------------------.
|
||||
| ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| Ctrl | A | S | D | F | G | | H | J | K | L | ; | ' |
|
||||
|------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
| Shift| Z | X | C | V | B | [ | ] | N | M | , | . | / |Enter |
|
||||
|------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
|Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right |
|
||||
`-------------------------------------------------------------------------------------------------'
|
||||
```
|
||||
|
||||
### Colemak
|
||||
```
|
||||
,-----------------------------------------. ,-----------------------------------------.
|
||||
| ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| Tab | Q | W | F | P | G | | J | L | U | Y | ; | Bksp |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| Ctrl | A | R | S | T | D | | H | N | E | I | O | ' |
|
||||
|------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
| Shift| Z | X | C | V | B | [ | ] | K | M | , | . | / |Enter |
|
||||
|------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
|Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right |
|
||||
`-------------------------------------------------------------------------------------------------'
|
||||
```
|
||||
|
||||
### Dvorak
|
||||
```
|
||||
,-----------------------------------------. ,-----------------------------------------.
|
||||
| ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Bksp |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| Tab | ' | , | . | P | Y | | F | G | C | R | L | Del |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| Ctrl | A | O | E | U | I | | D | H | T | N | S | / |
|
||||
|------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
| Shift| ; | Q | J | K | X | [ | ] | B | M | W | V | Z |Enter |
|
||||
|------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
|Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right |
|
||||
`-------------------------------------------------------------------------------------------------'
|
||||
```
|
||||
|
||||
## Layers
|
||||
|
||||
|Priority|number|name|description|
|
||||
| ---- | ---- | --- | --- |
|
||||
|high|16|Adjust|Functions|
|
||||
||4|Raise|Numeric charactors|
|
||||
||3|Lower|Other charactors|
|
||||
||2|Dvorak|Dvorak leyout|
|
||||
||1|Colemak|Colemak leyout|
|
||||
|low|0|Qwerty|QWERTY leyout(base)|
|
||||
|
||||
### Lower
|
||||
```
|
||||
,-----------------------------------------. ,-----------------------------------------.
|
||||
| ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| | F1 | F2 | F3 | F4 | F5 | | F6 | _ | + | { | } | | |
|
||||
|------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
| | F7 | F8 | F9 | F10 | F11 | ( | ) | F12 | | | Home | End | |
|
||||
|------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
| | | | | | | | | | | Next | Vol- | Vol+ | Play |
|
||||
`-------------------------------------------------------------------------------------------------'
|
||||
```
|
||||
|
||||
### Raise
|
||||
```
|
||||
,-----------------------------------------. ,-----------------------------------------.
|
||||
| ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Bksp |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| | F1 | F2 | F3 | F4 | F5 | | F6 | - | = | [ | ] | \ |
|
||||
|------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
| | F7 | F8 | F9 | F10 | F11 | | | F12 | | |PageDn|PageUp| |
|
||||
|------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
| | | | | | | | | | | Next | Vol- | Vol+ | Play |
|
||||
`-------------------------------------------------------------------------------------------------'
|
||||
```
|
||||
|
||||
### Adjust (Lower + Raise)
|
||||
```
|
||||
,-----------------------------------------. ,-----------------------------------------.
|
||||
| F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| | Reset|RGBRST| | | | | | | | | | Del |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| | | |Aud on|Audoff| Mac | | Win |Qwerty|Colemk|Dvorak| | |
|
||||
|------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
| | | | | | | | | | |RGB ON| HUE+ | SAT+ | VAL+ |
|
||||
|------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
| | | | | | | | | | | MODE | HUE- | SAT- | VAL- |
|
||||
`-------------------------------------------------------------------------------------------------'
|
||||
```
|
||||
|
||||
## Customize
|
||||
|
||||
see `qmk_firmware/keyboards/helix/rev2/keymaps/default/rules.mk`
|
||||
|
||||
```
|
||||
# Helix Spacific Build Options
|
||||
# you can uncomment and edit follows 7 Variables
|
||||
# jp: 以下の7つの変数を必要に応じて編集し、コメントアウトをはずします。
|
||||
# OLED_ENABLE = yes # OLED_ENABLE
|
||||
# LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" insted of "common/glcdfont.c"
|
||||
# LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.)
|
||||
# LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
|
||||
# LED_ANIMATIONS = yes # LED animations
|
||||
# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
|
||||
```
|
||||
## Compile
|
||||
|
||||
go to qmk top directory.
|
||||
```
|
||||
$ cd qmk_firmware
|
||||
```
|
||||
|
||||
build
|
||||
```
|
||||
$ make helix:default # with oled
|
||||
$ make helix/rev2/back:default # with oled and backlight
|
||||
$ make HELIX=no-ani helix/rev2/back:default # with oled and backlight without animation
|
||||
$ make helix/rev2/under:default # with oled and underglow
|
||||
$ make HELIX=no-oled helix:default # without oled
|
||||
```
|
||||
|
||||
build (experimental use of split_common with backlight and oled)
|
||||
```
|
||||
$ make helix/rev2/sc:default
|
||||
```
|
||||
|
||||
flash to keyboard
|
||||
```
|
||||
$ make helix:default:flash # with oled
|
||||
$ make helix/rev2/back:default:flash # with oled and backlight
|
||||
$ make HELIX=no-ani helix/rev2/back:default:flash # with oled and backlight without animation
|
||||
$ make helix/rev2/under:default:flash # with oled and underglow
|
||||
$ make HELIX=no-oled helix:default:flash # without oled
|
||||
```
|
||||
|
||||
## Link
|
||||
* more detail wrote in Japanese [helix/Doc/firmware_jp.md](https://github.com/MakotoKurauchi/helix/blob/master/Doc/firmware_jp.md)
|
||||
* [Helix top](https://github.com/MakotoKurauchi/helix)
|
||||
|
@ -1,127 +0,0 @@
|
||||
# The Default Helix Layout
|
||||
## 配列
|
||||
|
||||
### Qwerty配列
|
||||
|
||||
```
|
||||
,-----------------------------------------. ,-----------------------------------------.
|
||||
| ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| Ctrl | A | S | D | F | G | | H | J | K | L | ; | ' |
|
||||
|------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
| Shift| Z | X | C | V | B | [ | ] | N | M | , | . | / |Enter |
|
||||
|------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
|Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right |
|
||||
`-------------------------------------------------------------------------------------------------'
|
||||
```
|
||||
|
||||
他の配列(Colemak,Dvorak)は、[readme.md](readme.md) を参照
|
||||
|
||||
## カスタマイズ
|
||||
|
||||
Helix キーボードを4行版として製作したり、オプションの OLED をつけたり、
|
||||
RGB バックライトまたは、RGB Underglow をつけた場合は、
|
||||
`qmk_firmware/keyboards/helix/rev2/keymaps/default/rules.mk` の以下の部分を編集して機能を有効化してください。
|
||||
|
||||
```
|
||||
# Helix Spacific Build Options
|
||||
# you can uncomment and edit follows 7 Variables
|
||||
# jp: 以下の7つの変数を必要に応じて編集し、コメントアウトをはずします。
|
||||
# OLED_ENABLE = yes # OLED_ENABLE
|
||||
# LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" insted of "common/glcdfont.c"
|
||||
# LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.)
|
||||
# LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
|
||||
# LED_ANIMATIONS = yes # LED animations
|
||||
# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
|
||||
```
|
||||
|
||||
## RGB バックライトを有効にする
|
||||
|
||||
rules.mk の下記の部分を編集して no を yes に変更してください。
|
||||
|
||||
```
|
||||
LED_BACK_ENABLE = yes # LED backlight (Enable WS2812 RGB underlight.)
|
||||
```
|
||||
|
||||
## RGB Underglow を有効にする
|
||||
|
||||
rules.mk の下記の部分を編集して no を yes に変更してください。
|
||||
```
|
||||
LED_UNDERGLOW_ENABLE = yes # LED underglow (Enable WS2812 RGB underlight.)
|
||||
```
|
||||
|
||||
## OLEDを無効にする
|
||||
|
||||
OLED はデフォルトで有効になっています。
|
||||
無効にしたいときは rules.mk の下記の部分を編集して yes を no に変更してください。
|
||||
```
|
||||
OLED_ENABLE = no # OLED_ENABLE
|
||||
```
|
||||
|
||||
## iPad/iPhoneサポートを有効にする。
|
||||
|
||||
rules.mk の下記の部分を編集して no を yes に変更してください。
|
||||
RBG Underglow や RGBバックライトの輝度を抑えて、iPad, iPhone にも接続できるようになります。
|
||||
|
||||
```
|
||||
IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
|
||||
```
|
||||
|
||||
## コンパイルの仕方
|
||||
|
||||
コンパイルは、qmk_firmware のトップディレクトリで行います。
|
||||
|
||||
```
|
||||
$ cd qmk_firmware
|
||||
```
|
||||
qmk_firmwareでは各キーボードのコンパイルは、`<キーボード名>:<キーマップ名>`という指定で行います。
|
||||
|
||||
```
|
||||
$ make helix:default
|
||||
```
|
||||
|
||||
キーボードへの書き込みまで同時に行うには下記のように`:flash`を付けます。
|
||||
|
||||
```
|
||||
$ make helix:default:flash
|
||||
```
|
||||
|
||||
コンパイル結果と中間生成物を消去したい場合は以下のようにします。
|
||||
|
||||
```
|
||||
$ make helix:default:clean
|
||||
```
|
||||
|
||||
上記の、rules.mk によるカスタマイズ項目の一部は下記のようにコマンド上で直接指定することも可能です。
|
||||
|
||||
OLED を無効にしてコンパイルしてキーボードへの書き込む。
|
||||
```
|
||||
$ make HELIX=no-oled helix/rev2:default:flash
|
||||
```
|
||||
|
||||
RGB バックライトを有効にしてコンパイルしてキーボードへ書き込む。
|
||||
```
|
||||
$ make helix/rev2/back:default:flash
|
||||
```
|
||||
|
||||
RGB Underglow を有効にしてコンパイルしてキーボードへ書き込む。
|
||||
```
|
||||
$ make helix/rev2/under:default:flash
|
||||
```
|
||||
|
||||
OLED を無効にして、RGB バックライトを有効にしてコンパイルしてキーボードへ書き込む。
|
||||
```
|
||||
$ make HELIX=no-oled helix/rev2/back:default:flash
|
||||
```
|
||||
|
||||
OLED を無効にして、RGB Underglowを有効にしてコンパイルしてキーボードへ書き込む。
|
||||
```
|
||||
$ make HELIX=no-oled helix/rev2/under:default:flash
|
||||
```
|
||||
|
||||
## リンク
|
||||
|
||||
* さらに詳細は、[こちら helix/Doc/firmware_jp.md](https://github.com/MakotoKurauchi/helix/blob/master/Doc/firmware_jp.md)をご覧ください。
|
||||
* [Helix top](https://github.com/MakotoKurauchi/helix)
|
@ -1,23 +0,0 @@
|
||||
LTO_ENABLE = yes # if firmware size over limit, try this option
|
||||
|
||||
# Helix Spacific Build Options
|
||||
# you can uncomment and edit follows 7 Variables
|
||||
# jp: 以下の7つの変数を必要に応じて編集し、コメントアウトをはずします。
|
||||
# OLED_ENABLE = no # OLED_ENABLE
|
||||
# LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" insted of "common/glcdfont.c"
|
||||
# LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.)
|
||||
# LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
|
||||
# LED_ANIMATIONS = yes # LED animations
|
||||
# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
|
||||
|
||||
# OLED_ENABLE が yes のとき
|
||||
# OLED_SELECT が core ならば QMK 標準の oled_dirver.c を使用します。
|
||||
# OLED_SELECT が core 以外ならば従来どおり helix/local_drivers/ssd1306.c を使用します。
|
||||
# If OLED_ENABLE is 'yes'
|
||||
# If OLED_SELECT is 'core', use QMK standard oled_dirver.c.
|
||||
# If OLED_SELECT is other than 'core', use helix/local_drivers/ssd1306.c.
|
||||
OLED_SELECT = core
|
||||
|
||||
ifeq ($(strip $(OLED_ENABLE)), yes)
|
||||
SRC += oled_display.c
|
||||
endif
|
@ -1,58 +0,0 @@
|
||||
/*
|
||||
This is the c configuration file for the keymap
|
||||
|
||||
Copyright 2012 Jun Wako <wakojun@gmail.com>
|
||||
Copyright 2015 Jack Humbert
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef CONFIG_USER_H
|
||||
#define CONFIG_USER_H
|
||||
|
||||
// place overrides here
|
||||
|
||||
#ifdef MOUSEKEY_ENABLE
|
||||
#undef MOUSEKEY_INTERVAL
|
||||
#define MOUSEKEY_INTERVAL 0
|
||||
|
||||
#undef MOUSEKEY_TIME_TO_MAX
|
||||
#define MOUSEKEY_TIME_TO_MAX 150
|
||||
|
||||
#undef MOUSEKEY_MAX_SPEED
|
||||
#define MOUSEKEY_MAX_SPEED 3
|
||||
|
||||
#undef MOUSEKEY_MOVE_DELTA
|
||||
#define MOUSEKEY_MOVE_DELTA 5
|
||||
|
||||
#undef MOUSEKEY_DELAY
|
||||
#define MOUSEKEY_DELAY 0
|
||||
#endif
|
||||
|
||||
// If you need more program area, try select and reduce rgblight modes to use.
|
||||
|
||||
// Selection of RGBLIGHT MODE to use.
|
||||
#if defined(LED_ANIMATIONS)
|
||||
#define RGBLIGHT_EFFECT_BREATHING
|
||||
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
|
||||
#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
|
||||
#define RGBLIGHT_EFFECT_SNAKE
|
||||
#define RGBLIGHT_EFFECT_KNIGHT
|
||||
#define RGBLIGHT_EFFECT_CHRISTMAS
|
||||
#define RGBLIGHT_EFFECT_STATIC_GRADIENT
|
||||
//#define RGBLIGHT_EFFECT_RGB_TEST
|
||||
//#define RGBLIGHT_EFFECT_ALTERNATING
|
||||
#endif
|
||||
|
||||
#endif /* CONFIG_USER_H */
|
@ -1,410 +0,0 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "keymap_japanese.h"
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
// * If you want to recognize that you pressed the Adjust key with the Lower / Raise key you can enable this comment out. However, the binary size may be over. *
|
||||
// #define ADJUST_MACRO_ENABLE
|
||||
|
||||
// * If you want to use the Kana key you can enable this comment out. However, the binary size may be over. *
|
||||
// #define KANA_ENABLE
|
||||
|
||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||
// entirely and just use numbers.
|
||||
enum layer_number {
|
||||
_BASE = 0,
|
||||
_BAS_E,
|
||||
_LOWER,
|
||||
_LOW_E,
|
||||
_RAISE,
|
||||
_RAI_E,
|
||||
_ADJUST,
|
||||
};
|
||||
|
||||
enum custom_keycodes {
|
||||
RGBRST = SAFE_RANGE,
|
||||
#ifdef KANA_ENABLE
|
||||
EISU,
|
||||
KANA,
|
||||
#endif
|
||||
};
|
||||
|
||||
// Layer Mode aliases
|
||||
#define DL_BAS DF(_BASE)
|
||||
#define DL_BASE DF(_BAS_E)
|
||||
#define ML_LOW MO(_LOWER)
|
||||
#define ML_LOWE MO(_LOW_E)
|
||||
#define ML_RAI MO(_RAISE)
|
||||
#define ML_RAIE MO(_RAI_E)
|
||||
#define ML_ADJ MO(_ADJUST)
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Qwerty JIS Normal
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | Esc | 1! | 2" | 3# | 4$ | 5% | | 6& | 7' | 8( | 9) | 0 | -= |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | KANJI| Q | W | E | R | T | | Y | U | I | O | P | @` |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Tab | A | S | D | F | G | | H | J | K | L | ;+ | :* |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Shift| Z | X | C | V | B | N | B | N | M | ,< | .> | Up |Enter |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Ctrl | GUI | Alt |Adjust|Lower |Space |Bksp |Space |Space |Raise | APP | Left | Down |Right |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_BASE] = LAYOUT(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
|
||||
JP_ZKHK, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JP_AT,
|
||||
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, JP_COLN,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_ENT,
|
||||
KC_LCTL, KC_LALT, KC_LGUI, ML_ADJ, ML_LOW, KC_SPC, KC_BSPC, KC_SPC, KC_SPC, ML_RAI, KC_APP, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
|
||||
/* Qwerty JIS Exchange L and R
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | 6& | 7' | 8( | 9) | 0 | -= | | Esc | 1! | 2" | 3# | 4$ | 5% |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Y | U | I | O | P | @` | | Tab | Q | W | E | R | T |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | H | J | K | L | ;+ | :* | | | A | S | D | F | G |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | N | M | ,< | .> | /? | Up |Enter |KANJI | Shift| Z | X | C | V | B |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* |Space |Raise | }] | APP | Left | Down |Right |Adjust| Ctrl | GUI | Alt | [{ |Lower | Bksp |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_BAS_E] = LAYOUT(
|
||||
KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5,
|
||||
KC_Y, KC_U, KC_I, KC_O, KC_P, JP_AT, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T,
|
||||
KC_H, KC_J, KC_K, KC_L, KC_SCLN, JP_COLN, XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G,
|
||||
KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_ENT, JP_ZKHK, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B,
|
||||
KC_SPC, ML_RAIE, JP_RBRC, KC_APP, KC_LEFT, KC_DOWN, KC_RGHT, ML_ADJ, KC_LCTL, KC_LALT, KC_LGUI, JP_LBRC, ML_LOWE, KC_BSPC
|
||||
),
|
||||
|
||||
/* Lower JIS Normal
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | | | | | | | | | | | -= | ^~ | \| |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | | @` | [{ |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | ;+ | :* | ]} |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | ,< | .> | /? | \_ |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | Del | | | | | | | |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_LOWER] = LAYOUT(
|
||||
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, JP_CIRC, JP_YEN,
|
||||
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, JP_AT, JP_LBRC,
|
||||
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_SCLN, JP_COLN, JP_RBRC,
|
||||
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_COMM, KC_DOT, KC_SLSH, JP_BSLS,
|
||||
_______, _______, _______, _______, XXXXXXX, XXXXXXX, KC_DEL, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
|
||||
),
|
||||
|
||||
/* Lower JIS Exchange L and R
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | | | | -= | ^~ | \| | | | | | | | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | | | | @` | [{ | | | | | | | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | | | ;+ | :* | ]} | | | | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | ,< | .> | /? | \_ |PageUp| | | | | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | Home |PageDn| End | | | | | | | Del |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_LOW_E] = LAYOUT(
|
||||
_______, XXXXXXX, XXXXXXX, KC_MINS, JP_CIRC, JP_YEN, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
_______, XXXXXXX, XXXXXXX, XXXXXXX, JP_AT, JP_LBRC, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
_______, XXXXXXX, XXXXXXX, KC_SCLN, JP_COLN, JP_RBRC, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
_______, KC_COMM, KC_DOT, KC_SLSH, JP_BSLS, KC_PGUP, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
_______, _______, XXXXXXX, _______, KC_HOME, KC_PGDN, KC_END, _______, _______, _______, _______, XXXXXXX, _______, KC_DEL
|
||||
),
|
||||
|
||||
/* Raise JIS Normal
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | | | | | | | |MsWhL |MsWhU | Home |PageUp| F12 |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | | | | | | | |MsWhR |MsWhD | End |PageDn| |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | |MsBtn1|MsBtn2| MsUp | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | |MsLeft|MsDown|MsRght|
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_RAISE] = LAYOUT(
|
||||
_______, KC_F1 , KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
|
||||
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_WH_L, KC_WH_U, KC_HOME, KC_PGUP, KC_F12,
|
||||
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_WH_R, KC_WH_D, KC_END, KC_PGDN, XXXXXXX,
|
||||
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_BTN1, KC_BTN2, KC_MS_U, XXXXXXX,
|
||||
_______, _______, _______, _______, XXXXXXX, XXXXXXX, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R
|
||||
),
|
||||
|
||||
/* Raise JIS Exchange L and R
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | F6 | F7 | F8 | F9 | F10 | F11 | | | F1 | F2 | F3 | F4 | F5 |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | | |MsWhL |MsWhU | F12 | | | | | | | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | | |MsWhR |MsWhD | | | | | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | |MsBtn1|MsBtn2| MsUp | | | | | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | |MsLeft|MsDown|MsRght| | | | | | | |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_RAI_E] = LAYOUT(
|
||||
KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, KC_F1 , KC_F2, KC_F3, KC_F4, KC_F5,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, KC_WH_L, KC_WH_U, KC_F12, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, KC_WH_R, KC_WH_D, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, KC_BTN1, KC_BTN2, KC_MS_U, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
_______, _______, XXXXXXX, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, _______, _______, XXXXXXX, _______, XXXXXXX
|
||||
),
|
||||
|
||||
/* Adjust (Lower + Raise) Common map for Normal and Exchange
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | | Reset|RGBRST| | | | | | Reset|RGBRST| | | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | |ModNrm|ModExc| Mac | Win | | | |ModNrm|ModExc| Mac | Win | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------|------+
|
||||
* | |RGB ON| HUE+ | SAT+ | VAL+ | | | |RGB ON| HUE+ | SAT+ | VAL+ | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------|------+
|
||||
* | | MODE | HUE- | SAT- | VAL- | | | | | MODE | HUE- | SAT- | VAL- | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | | | | |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_ADJUST] = LAYOUT(
|
||||
XXXXXXX, QK_BOOT, RGBRST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, RGBRST, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, DL_BAS, DL_BASE, AG_NORM, AG_SWAP, XXXXXXX, XXXXXXX, DL_BAS, DL_BASE, AG_NORM, AG_SWAP, XXXXXXX,
|
||||
XXXXXXX, UG_TOGG, UG_HUEU, UG_SATU, UG_VALU, XXXXXXX, XXXXXXX, UG_TOGG, UG_HUEU, UG_SATU, UG_VALU, XXXXXXX,
|
||||
XXXXXXX, UG_NEXT, UG_HUED, UG_SATD, UG_VALD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, UG_NEXT, UG_HUED, UG_SATD, UG_VALD, XXXXXXX,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
};
|
||||
|
||||
#if defined(OLED_ENABLE)
|
||||
char keylog[24] = {};
|
||||
const char code_to_name[60] = {
|
||||
' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f',
|
||||
'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p',
|
||||
'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
|
||||
'1', '2', '3', '4', '5', '6', '7', '8', '9', '0',
|
||||
'R', 'E', 'B', 'T', ' ', '-', ' ', '@', ' ', ' ',
|
||||
' ', ';', ':', ' ', ',', '.', '/', ' ', ' ', ' '};
|
||||
|
||||
static inline void set_keylog(uint16_t keycode, keyrecord_t *record)
|
||||
{
|
||||
char name = ' ';
|
||||
led_t led_state = host_keyboard_led_state();
|
||||
|
||||
if (keycode < 60)
|
||||
{
|
||||
name = code_to_name[keycode];
|
||||
}
|
||||
|
||||
// update keylog
|
||||
snprintf(keylog, sizeof(keylog), "\n%dx%d %2x %c %c %c %c",
|
||||
record->event.key.row,
|
||||
record->event.key.col,
|
||||
keycode,
|
||||
name,
|
||||
led_state.num_lock ? 'N' : ' ',
|
||||
led_state.caps_lock ? 'C' : ' ',
|
||||
led_state.scroll_lock ? 'S' : ' '
|
||||
);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
#define RGBLIGHT(mode) rgblight_mode(mode)
|
||||
#else
|
||||
#define RGBLIGHT(mode)
|
||||
#endif
|
||||
|
||||
// define variables for reactive RGB
|
||||
int RGB_current_mode;
|
||||
#ifdef ADJUST_MACRO_ENABLE
|
||||
// Setting ADJUST layer RGB back to default
|
||||
void update_tri_layer_RGB(uint8_t layer1, uint8_t layer2, uint8_t layer3) {
|
||||
if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) {
|
||||
RGBLIGHT(RGB_current_mode);
|
||||
layer_on(layer3);
|
||||
} else {
|
||||
layer_off(layer3);
|
||||
}
|
||||
}
|
||||
#define ADJUST_MACRO(layer1, layer2, layer3) update_tri_layer_RGB(layer1, layer2, layer3)
|
||||
#else
|
||||
#define ADJUST_MACRO(layer1, layer2, layer3)
|
||||
#endif
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
#if defined(OLED_ENABLE)
|
||||
if (record->event.pressed) {
|
||||
set_keylog(keycode, record);
|
||||
}
|
||||
#endif
|
||||
|
||||
switch (keycode) {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
//led operations - RGB mode change now updates the RGB_current_mode to allow the right RGB mode to be set after reactive keys are released
|
||||
case QK_UNDERGLOW_MODE_NEXT:
|
||||
if (record->event.pressed) {
|
||||
rgblight_mode(RGB_current_mode);
|
||||
rgblight_step();
|
||||
RGB_current_mode = rgblight_get_mode();
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
#ifdef KANA_ENABLE
|
||||
case EISU:
|
||||
if (record->event.pressed) {
|
||||
if (keymap_config.swap_lalt_lgui==false) {
|
||||
register_code(KC_LNG2);
|
||||
} else {
|
||||
SEND_STRING(SS_LALT("`"));
|
||||
}
|
||||
} else {
|
||||
unregister_code(KC_LNG2);
|
||||
}
|
||||
break;
|
||||
case KANA:
|
||||
if (record->event.pressed) {
|
||||
if(keymap_config.swap_lalt_lgui==false){
|
||||
register_code(KC_LNG1);
|
||||
}else{
|
||||
SEND_STRING(SS_LALT("`"));
|
||||
}
|
||||
} else {
|
||||
unregister_code(KC_LNG1);
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
case RGBRST:
|
||||
if (record->event.pressed) {
|
||||
eeconfig_update_rgblight_default();
|
||||
rgblight_enable();
|
||||
RGB_current_mode = rgblight_get_mode();
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void matrix_init_user(void) {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
RGB_current_mode = rgblight_get_mode();
|
||||
#endif
|
||||
}
|
||||
|
||||
//OLED update loop
|
||||
#ifdef OLED_ENABLE
|
||||
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
|
||||
if (is_keyboard_master()) {
|
||||
return OLED_ROTATION_0;
|
||||
} else {
|
||||
return OLED_ROTATION_180;
|
||||
}
|
||||
}
|
||||
|
||||
//assign the right code to your layers for OLED display
|
||||
#define L_BASE _BASE
|
||||
#define L_LOWER (1<<_LOWER)
|
||||
#define L_RAISE (1<<_RAISE)
|
||||
#define L_ADJUST (1<<_ADJUST)
|
||||
#define L_ADJUST_TRI (L_ADJUST|L_RAISE|L_LOWER)
|
||||
#define L_LOW_E (1<<_LOW_E)
|
||||
#define L_RAI_E (1<<_RAI_E)
|
||||
#define L_ADJUST_TRIE (L_ADJUST|L_RAI_E|L_LOW_E)
|
||||
|
||||
const char helix_logo[]={
|
||||
0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
|
||||
0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
|
||||
0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,
|
||||
0};
|
||||
|
||||
static inline void render_logo(void) {
|
||||
oled_write(helix_logo, false);
|
||||
}
|
||||
|
||||
const char mac_win_logo[][2][3]={{{0x95,0x96,0},{0xb5,0xb6,0}},{{0x97,0x98,0},{0xb7,0xb8,0}}};
|
||||
|
||||
static inline void render_status(void) {
|
||||
char buf[20];
|
||||
// Render to mode icon
|
||||
if(keymap_config.swap_lalt_lgui==false){
|
||||
oled_write(mac_win_logo[0][0], false);
|
||||
oled_write_P(PSTR("\n"), false);
|
||||
oled_write(mac_win_logo[0][1], false);
|
||||
} else {
|
||||
oled_write(mac_win_logo[1][0], false);
|
||||
oled_write_P(PSTR("\n"), false);
|
||||
oled_write(mac_win_logo[1][1], false);
|
||||
}
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
snprintf(buf, sizeof(buf), " LED mode:%d", (short)RGB_current_mode);
|
||||
oled_write(buf, false);
|
||||
#endif
|
||||
|
||||
// Define layers here, Have not worked out how to have text displayed for each layer. Copy down the number you see and add a case for it below
|
||||
oled_write_P(PSTR("\nLayer: "), false);
|
||||
switch (layer_state) {
|
||||
case L_BASE:
|
||||
oled_write_P(default_layer_state == (1UL<<_BAS_E) ? PSTR("BaseEx") : PSTR("Base"), false);
|
||||
break;
|
||||
case L_RAISE:
|
||||
oled_write_P(PSTR("Raise"), false);
|
||||
break;
|
||||
case L_RAI_E:
|
||||
oled_write_P(PSTR("RaiseEx"), false);
|
||||
break;
|
||||
case L_LOWER:
|
||||
oled_write_P(PSTR("Lower"), false);
|
||||
break;
|
||||
case L_LOW_E:
|
||||
oled_write_P(PSTR("LowerEx"), false);
|
||||
break;
|
||||
case L_ADJUST:
|
||||
case L_ADJUST_TRI:
|
||||
case L_ADJUST_TRIE:
|
||||
oled_write_P(PSTR("Adjust"), false);
|
||||
break;
|
||||
default:
|
||||
snprintf(buf, sizeof(buf), "%d", (short)layer_state);
|
||||
oled_write(buf, false);
|
||||
}
|
||||
|
||||
oled_write(keylog, false);
|
||||
}
|
||||
|
||||
bool oled_task_user(void) {
|
||||
|
||||
# if DEBUG_TO_SCREEN
|
||||
if (debug_enable) {
|
||||
return;
|
||||
}
|
||||
# endif
|
||||
|
||||
if (is_keyboard_master()) {
|
||||
render_status();
|
||||
} else {
|
||||
render_logo();
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
#endif // end of OLED_ENABLE
|
@ -1,150 +0,0 @@
|
||||
# Helix 5 rows JIS layout
|
||||
|
||||
This keymap was created with the concept that users using Japanese JIS keyboard layout can operate without difficulty. It has the following features.
|
||||
|
||||
* We are considering to be able to input long Japanese notes without moving the layer
|
||||
* We are arranging the relation of symbols that can not fit in the Lower layer keeping the positional relationship
|
||||
* The four-way key is in a convex arrangement
|
||||
* Ctrl, Shift, Tab, Kanji, Esc, GUI (Win), App keys are arranged keeping positional relationship
|
||||
* Lower / Raise keymap is considering easy placement so that it can be used without memorizing
|
||||
|
||||
This keymap also includes a "NORMAL" keymap that uses Helix's split keyboard as usual, and an "EXCHANGE" key that exchanges left and right sides of Helix's split keyboard for key position optimization I am trying to switch maps. These have the following additional features.
|
||||
|
||||
## NORMAL Keymap
|
||||
|
||||
* It is possible to press the N key with the left index finger and the B key with the right index finger
|
||||
|
||||
## EXCHANGE Keymap
|
||||
|
||||
* By using the 2 key under Pro micro effectively add `` `[{` `` `` `]]` ``, `` `/?` `` Keys to NORMAL's base keymap And make inputs other than the `` `\ _` `` key possible with the base map
|
||||
* To avoid mistakes in pressing the Kanji key and the Enter key, we are moving to the 2 key.
|
||||
|
||||
## 配列
|
||||
|
||||
### NORMAL Keymap
|
||||
|
||||
Adjust + ModExc key switches to the NORMAL keymap.
|
||||
|
||||
Base Layer
|
||||
|
||||
```
|
||||
,-----------------------------------------. ,-----------------------------------------.
|
||||
| Esc | 1! | 2" | 3# | 4$ | 5% | | 6& | 7' | 8( | 9) | 0 | -= |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| KANJI| Q | W | E | R | T | | Y | U | I | O | P | @` |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| Tab | A | S | D | F | G | | H | J | K | L | ;+ | :* |
|
||||
|------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
| Shift| Z | X | C | V | B | N | B | N | M | ,< | .> | Up |Enter |
|
||||
|------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
| Ctrl | GUI | Alt |Adjust|Lower |Space |Bksp |Space |Space |Raise | APP | Left | Down |Right |
|
||||
`-------------------------------------------------------------------------------------------------'
|
||||
```
|
||||
|
||||
Lower Layer
|
||||
|
||||
```
|
||||
,-----------------------------------------. ,-----------------------------------------.
|
||||
| | | | | | | | | | | -= | ^~ | \| |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| | | | | | | | | | | | @` | [{ |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| | | | | | | | | | | ;+ | :* | ]} |
|
||||
|------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
| | | | | | | | | | | ,< | .> | /? | \_ |
|
||||
|------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
| | | | | | | Del | | | | | | | |
|
||||
`-------------------------------------------------------------------------------------------------'
|
||||
```
|
||||
|
||||
Raise Layer
|
||||
|
||||
```
|
||||
,-----------------------------------------. ,-----------------------------------------.
|
||||
| | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| | | | | | | | F12 | | | | Home |PageUp|
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| | | | | | | | | | | | End |PageDn|
|
||||
|------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
| |MsBtn1|MsBtn2| | | | | | | | | | MsUp | |
|
||||
|------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
| | | | | | | | | | | |MsLeft|MsDown|MsRght|
|
||||
`-------------------------------------------------------------------------------------------------'
|
||||
```
|
||||
|
||||
### EXCHANGE Keymap
|
||||
|
||||
Adjust + ModExc key switches to the EXCHANGE keymap.
|
||||
|
||||
Base Layer
|
||||
|
||||
```
|
||||
,-----------------------------------------.,-----------------------------------------.
|
||||
| Esc | 1! | 2" | 3# | 4$ | 5% || 6& | 7' | 8( | 9) | 0 | -= |
|
||||
|------+------+------+------+------+------||------+------+------+------+------+------|
|
||||
| Tab | Q | W | E | R | T || Y | U | I | O | P | @` |
|
||||
|------+------+------+------+------+------||------+------+------+------+------+------|
|
||||
| | A | S | D | F | G || H | J | K | L | ;+ | :* |
|
||||
,------+------+------+------+------+------+------||------+------+------+------+------+------+------.
|
||||
|KANJI | Shift| Z | X | C | V | B || N | M | ,< | .> | /? | Up |Enter |
|
||||
|------+------+------+------+------+------+------||------+------+------+------+------+------+------|
|
||||
|Adjust| Ctrl | GUI | Alt | [{ |Lower | Bksp ||Space |Raise | }] | APP | Left | Down |Right |
|
||||
`------------------------------------------------'`------------------------------------------------'
|
||||
```
|
||||
|
||||
Lower Layer
|
||||
|
||||
```
|
||||
,-----------------------------------------.,-----------------------------------------.
|
||||
| | | | | | || | | | -= | ^~ | \| |
|
||||
|------+------+------+------+------+------||------+------+------+------+------+------|
|
||||
| | | | | | || | | | | @` | [{ |
|
||||
|------+------+------+------+------+------||------+------+------+------+------+------|
|
||||
| | | | | | || | | | ;+ | :* | ]} |
|
||||
,------+------+------+------+------+------+------||------+------+------+------+------+------+------.
|
||||
| | | | | | | || | ,< | .> | /? | \_ |PageUp| |
|
||||
|------+------+------+------+------+------+------||------+------+------+------+------+------+------|
|
||||
| | | | | | | Del || | | | | Home |PageDn| End |
|
||||
`------------------------------------------------'`------------------------------------------------'
|
||||
```
|
||||
|
||||
Raise Layer
|
||||
|
||||
```
|
||||
,-----------------------------------------.,-----------------------------------------.
|
||||
| | F1 | F2 | F3 | F4 | F5 || F6 | F7 | F8 | F9 | F10 | F11 |
|
||||
|------+------+------+------+------+------||------+------+------+------+------+------|
|
||||
| | | | | | || F12 | | | | | |
|
||||
|------+------+------+------+------+------||------+------+------+------+------+------|
|
||||
| | | | | | || | | | | | |
|
||||
,------+------+------+------+------+------+------||------+------+------+------+------+------+------.
|
||||
| | |MsBtn1|MsBtn2| | | || | | | | | MsUp | |
|
||||
|------+------+------+------+------+------+------||------+------+------+------+------+------+------|
|
||||
| | | | | | | || | | | |MsLeft|MsDown|MsRght|
|
||||
`------------------------------------------------'`------------------------------------------------'
|
||||
```
|
||||
|
||||
### NORMAL/EXCHANGE common Layer
|
||||
|
||||
Adjust Layer
|
||||
|
||||
NORMAL / EXCHANGE This layer is used in common. The same items are arranged in the same row on both sides so that they can be used in common.
|
||||
|
||||
```
|
||||
,-----------------------------------------. ,-----------------------------------------.
|
||||
| | Reset|RGBRST|Aud on|Audoff| | | | Reset|RGBRST|Aud on|Audoff| |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| |ModNrm|ModExc| Mac | Win | | | |ModNrm|ModExc| Mac | Win | |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------|------+
|
||||
| |RGB ON| HUE+ | SAT+ | VAL+ | | | |RGB ON| HUE+ | SAT+ | VAL+ | |
|
||||
|------+------+------+------+------+------+------+------+------+------+------+------+------|------+
|
||||
| | MODE | HUE- | SAT- | VAL- | | | | | MODE | HUE- | SAT- | VAL- | |
|
||||
|------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
| | | | | | | | | | | | | | |
|
||||
`-------------------------------------------------------------------------------------------------'
|
||||
```
|
||||
|
||||
## How to compile these program
|
||||
|
||||
See the readme of the Default keymap.
|
@ -1,173 +0,0 @@
|
||||
# Helix 5 rows JIS layout
|
||||
|
||||
## コンセプト
|
||||
|
||||
このキーマップは日本語JISキーボード配列を利用しているユーザーが無理なく操作出来るというコンセプトで作成しました。以下の特徴があります。
|
||||
|
||||
* 日本語の長音記号をレイヤーを移動せずに入力可能なように考慮しています
|
||||
* 入りきらない記号関連をLowerレイヤーに位置関係を維持して配置しています
|
||||
* 十字キーを凸配置にしています
|
||||
* Ctrl,Shift,Tab,漢字,Esc,GUI(Win),Appの各キーは位置関係を維持して配置しています
|
||||
* Lower/Raiseキーマップは暗記しないでも使えるようにわかりやすい配置を考慮しています
|
||||
|
||||
またこのキーマップにはHelixの分割されたキーボードを通常通りに使用する「NORMAL」キーマップと、キー位置の最適化のためにHelixの分割されたキーボードの左右を交換して使う「EXCHANGE」キーマップをバイナリの書き換えなしに切り替えられるようにしています。これらにはさらに以下の特徴があります。
|
||||
|
||||
### NORMALキーマップ
|
||||
|
||||
* Nキーを左人差し指で、Bキーを右人差し指で押下することが可能
|
||||
|
||||
### EXCHANGEキーマップ
|
||||
|
||||
* Pro micro下の2キーを有効に使うことにより、NORMALのベースキーマップに```[{```,```}]```,```/?```の各キーを追加し、```\_```キー以外の入力をベースマップで可能にしています
|
||||
* 漢字キー,Enterキーの押し間違いを避けるためPro micro下の2キーに移動しています
|
||||
|
||||
## カスタマイズ
|
||||
|
||||
Normal/Exchangeにそれぞれ、Base,Lower,Raiseの各レイヤーを備え、2マップ3レイヤー、共通1レイヤー(Adjust)の全7種のレイヤーを備えています。
|
||||
ファームの書き換えなしにキーマップを別のものに切り替えられるので、片方は通常のキーマップ、もう片方は画像や動画編集用のキーマップや別の変態配置のキーマップにすれば、状況に応じて簡単に切り替えられます。
|
||||
|
||||
## 配列
|
||||
|
||||
### NORMAL
|
||||
|
||||
Adjust + ModNrmキーでNORMALキーマップに切り替わります。
|
||||
|
||||
#### Baseレイヤー
|
||||
|
||||
```
|
||||
,-----------------------------------------. ,-----------------------------------------.
|
||||
| Esc | 1! | 2" | 3# | 4$ | 5% | | 6& | 7' | 8( | 9) | 0 | -= |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| KANJI| Q | W | E | R | T | | Y | U | I | O | P | @` |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| Tab | A | S | D | F | G | | H | J | K | L | ;+ | :* |
|
||||
|------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
| Shift| Z | X | C | V | B | N | B | N | M | ,< | .> | Up |Enter |
|
||||
|------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
| Ctrl | GUI | Alt |Adjust|Lower |Space |Bksp |Space |Space |Raise | APP | Left | Down |Right |
|
||||
`-------------------------------------------------------------------------------------------------'
|
||||
```
|
||||
|
||||
#### Lowerレイヤー
|
||||
|
||||
記号キーと、BackSpace位置にDeleteキーを配置しています。
|
||||
例えば```|```キーを入力する場合、Lower + Shift + \キーで入力することが出来ます。
|
||||
|
||||
```
|
||||
,-----------------------------------------. ,-----------------------------------------.
|
||||
| | | | | | | | | | | -= | ^~ | \| |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| | | | | | | | | | | | @` | [{ |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| | | | | | | | | | | ;+ | :* | ]} |
|
||||
|------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
| | | | | | | | | | | ,< | .> | /? | \_ |
|
||||
|------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
| | | | | | | Del | | | | | | | |
|
||||
`-------------------------------------------------------------------------------------------------'
|
||||
```
|
||||
|
||||
#### Raiseレイヤー
|
||||
|
||||
rules.mkのMOUSEKEY_ENABLEをyesにした場合マウスキーを利用できます。ただしバイナリ容量を食いますのでmakeした時に確認できるバイナリサイズがオーバーしていないことに十分注意してください。
|
||||
また、F1-F12キーをHHKBライクに使えるように横並びにしました。
|
||||
|
||||
```
|
||||
,-----------------------------------------. ,-----------------------------------------.
|
||||
| | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| | | | | | | | F12 | | | | Home |PageUp|
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| | | | | | | | | | | | End |PageDn|
|
||||
|------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
| |MsBtn1|MsBtn2| | | | | | | | | | MsUp | |
|
||||
|------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
| | | | | | | | | | | |MsLeft|MsDown|MsRght|
|
||||
`-------------------------------------------------------------------------------------------------'
|
||||
```
|
||||
|
||||
### EXCHANGEキーマップ
|
||||
|
||||
Adjust + ModExcキーでEXCHANGEキーマップに切り替わります。
|
||||
HelixのUSBやフォンケーブルの接続は変更せず、分割された左右のキーボードを入れ替えて使います。
|
||||
|
||||
#### Baseレイヤー
|
||||
|
||||
ちょっと無理やりですが```[{```,```}]```キーを突っ込んでいます。
|
||||
|
||||
```
|
||||
,-----------------------------------------.,-----------------------------------------.
|
||||
| Esc | 1! | 2" | 3# | 4$ | 5% || 6& | 7' | 8( | 9) | 0 | -= |
|
||||
|------+------+------+------+------+------||------+------+------+------+------+------|
|
||||
| Tab | Q | W | E | R | T || Y | U | I | O | P | @` |
|
||||
|------+------+------+------+------+------||------+------+------+------+------+------|
|
||||
| | A | S | D | F | G || H | J | K | L | ;+ | :* |
|
||||
,------+------+------+------+------+------+------||------+------+------+------+------+------+------.
|
||||
|KANJI | Shift| Z | X | C | V | B || N | M | ,< | .> | /? | Up |Enter |
|
||||
|------+------+------+------+------+------+------||------+------+------+------+------+------+------|
|
||||
|Adjust| Ctrl | GUI | Alt | [{ |Lower | Bksp ||Space |Raise | }] | APP | Left | Down |Right |
|
||||
`------------------------------------------------'`------------------------------------------------'
|
||||
```
|
||||
|
||||
#### Lowerレイヤー
|
||||
|
||||
記号キーと、BackSpace位置にDeleteキーを配置しています。
|
||||
PageDown/Up, Home/EndをCtrl+十字キーの延長線上で使用できるように配置しています。
|
||||
|
||||
```
|
||||
,-----------------------------------------.,-----------------------------------------.
|
||||
| | | | | | || | | | -= | ^~ | \| |
|
||||
|------+------+------+------+------+------||------+------+------+------+------+------|
|
||||
| | | | | | || | | | | @` | [{ |
|
||||
|------+------+------+------+------+------||------+------+------+------+------+------|
|
||||
| | | | | | || | | | ;+ | :* | ]} |
|
||||
,------+------+------+------+------+------+------||------+------+------+------+------+------+------.
|
||||
| | | | | | | || | ,< | .> | /? | \_ |PageUp| |
|
||||
|------+------+------+------+------+------+------||------+------+------+------+------+------+------|
|
||||
| | | | | | | Del || | | | | Home |PageDn| End |
|
||||
`------------------------------------------------'`------------------------------------------------'
|
||||
```
|
||||
|
||||
#### Raiseレイヤー
|
||||
|
||||
rules.mkのMOUSEKEY_ENABLEをyesにした場合マウスキーを利用できます。ただしバイナリ容量を食いますのでmakeした時に確認できるバイナリサイズがオーバーしていないことに十分注意してください。
|
||||
また、F1-F12キーをHHKBライクに使えるように横並びにしました。
|
||||
マウスキーは十字キーの延長線上で使用できるように配置しています。
|
||||
|
||||
```
|
||||
,-----------------------------------------.,-----------------------------------------.
|
||||
| | F1 | F2 | F3 | F4 | F5 || F6 | F7 | F8 | F9 | F10 | F11 |
|
||||
|------+------+------+------+------+------||------+------+------+------+------+------|
|
||||
| | | | | | || F12 | | | | | |
|
||||
|------+------+------+------+------+------||------+------+------+------+------+------|
|
||||
| | | | | | || | | | | | |
|
||||
,------+------+------+------+------+------+------||------+------+------+------+------+------+------.
|
||||
| | |MsBtn1|MsBtn2| | | || | | | | | MsUp | |
|
||||
|------+------+------+------+------+------+------||------+------+------+------+------+------+------|
|
||||
| | | | | | | || | | | |MsLeft|MsDown|MsRght|
|
||||
`------------------------------------------------'`------------------------------------------------'
|
||||
```
|
||||
|
||||
### NORMAL/EXCHANGE共通レイヤー
|
||||
|
||||
Adjustレイヤー
|
||||
|
||||
NORMAL/EXCHANGE共通で利用するレイヤーです。共通で使えるように両側同じ並びで同じものを配置しています。
|
||||
|
||||
```
|
||||
,-----------------------------------------. ,-----------------------------------------.
|
||||
| | Reset|RGBRST|Aud on|Audoff| | | | Reset|RGBRST|Aud on|Audoff| |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| |ModNrm|ModExc| Mac | Win | | | |ModNrm|ModExc| Mac | Win | |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------|------+
|
||||
| |RGB ON| HUE+ | SAT+ | VAL+ | | | |RGB ON| HUE+ | SAT+ | VAL+ | |
|
||||
|------+------+------+------+------+------+------+------+------+------+------+------+------|------+
|
||||
| | MODE | HUE- | SAT- | VAL- | | | | | MODE | HUE- | SAT- | VAL- | |
|
||||
|------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
| | | | | | | | | | | | | | |
|
||||
`-------------------------------------------------------------------------------------------------'
|
||||
```
|
||||
|
||||
## コンパイルの仕方
|
||||
|
||||
Defaultキーマップのreadmeを参照してください。
|
@ -1,19 +0,0 @@
|
||||
LTO_ENABLE = no # if firmware size over limit, try this option
|
||||
|
||||
# Helix Spacific Build Options
|
||||
# you can uncomment and edit follows 7 Variables
|
||||
# jp: 以下の7つの変数を必要に応じて編集し、コメントアウトをはずします。
|
||||
# OLED_ENABLE = no # OLED_ENABLE
|
||||
# LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" insted of "common/glcdfont.c"
|
||||
# LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.)
|
||||
# LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
|
||||
# LED_ANIMATIONS = yes # LED animations
|
||||
# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
|
||||
|
||||
# OLED_ENABLE が yes のとき
|
||||
# OLED_SELECT が core ならば QMK 標準の oled_dirver.c を使用します。
|
||||
# OLED_SELECT が core 以外ならば従来どおり helix/local_drivers/ssd1306.c を使用します。
|
||||
# If OLED_ENABLE is 'yes'
|
||||
# If OLED_SELECT is 'core', use QMK standard oled_dirver.c.
|
||||
# If OLED_SELECT is other than 'core', use helix/local_drivers/ssd1306.c.
|
||||
OLED_SELECT = core
|
@ -1,27 +0,0 @@
|
||||
# LED test Keymap
|
||||
|
||||
## Layout
|
||||
|
||||
The layout is the same as default.
|
||||
|
||||
## Feature
|
||||
|
||||
* OLED is enabled.
|
||||
* LED backlight is enabled and always lit.
|
||||
* The lighting color of LED changes periodically. Red, Green and Blue.
|
||||
|
||||
The user can check whether the LED is lit or not.
|
||||
|
||||
## Compile
|
||||
|
||||
```
|
||||
$ cd qmk_firmware
|
||||
$ make helix:led_test
|
||||
```
|
||||
|
||||
## Flash QMK Firmware
|
||||
|
||||
Execute the 'make' command and press the reset switch on the keyboard.
|
||||
```
|
||||
$ make helix:led_test:flash
|
||||
```
|
@ -1,41 +0,0 @@
|
||||
/*
|
||||
This is the c configuration file for the keymap
|
||||
|
||||
Copyright 2012 Jun Wako <wakojun@gmail.com>
|
||||
Copyright 2015 Jack Humbert
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef CONFIG_USER_H
|
||||
#define CONFIG_USER_H
|
||||
|
||||
// place overrides here
|
||||
|
||||
// If you need more program area, try select and reduce rgblight modes to use.
|
||||
|
||||
// Selection of RGBLIGHT MODE to use.
|
||||
#if defined(LED_ANIMATIONS)
|
||||
//#define RGBLIGHT_EFFECT_BREATHING
|
||||
//#define RGBLIGHT_EFFECT_RAINBOW_MOOD
|
||||
//#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
|
||||
//#define RGBLIGHT_EFFECT_SNAKE
|
||||
//#define RGBLIGHT_EFFECT_KNIGHT
|
||||
//#define RGBLIGHT_EFFECT_CHRISTMAS
|
||||
//#define RGBLIGHT_EFFECT_STATIC_GRADIENT
|
||||
#define RGBLIGHT_EFFECT_RGB_TEST // led_test keymap need only this.
|
||||
//#define RGBLIGHT_EFFECT_ALTERNATING
|
||||
#endif
|
||||
|
||||
#endif /* CONFIG_USER_H */
|
@ -1,341 +0,0 @@
|
||||
/* Copyright 2020 yushakobo
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||
// entirely and just use numbers.
|
||||
enum layer_number {
|
||||
_QWERTY = 0,
|
||||
_COLEMAK,
|
||||
_DVORAK,
|
||||
_LOWER,
|
||||
_RAISE,
|
||||
_ADJUST
|
||||
};
|
||||
|
||||
enum custom_keycodes {
|
||||
QWERTY = SAFE_RANGE,
|
||||
COLEMAK,
|
||||
DVORAK,
|
||||
LOWER,
|
||||
RAISE,
|
||||
ADJUST,
|
||||
BACKLIT,
|
||||
EISU,
|
||||
KANA,
|
||||
RGBRST
|
||||
};
|
||||
|
||||
enum macro_keycodes {
|
||||
KC_SAMPLEMACRO,
|
||||
};
|
||||
|
||||
//Macros
|
||||
#define M_SAMPLE M(KC_SAMPLEMACRO)
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/* Qwerty
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Ctrl | A | S | D | F | G | | H | J | K | L | ; | ' |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Shift| Z | X | C | V | B | [ | ] | N | M | , | . | / |Enter |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* |Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_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_DEL,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, KC_RBRC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
|
||||
ADJUST, KC_ESC, KC_LALT, KC_LGUI, EISU, LOWER, KC_SPC, KC_SPC, RAISE, KANA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
|
||||
),
|
||||
|
||||
/* Colemak
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Tab | Q | W | F | P | G | | J | L | U | Y | ; | Bksp |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Ctrl | A | R | S | T | D | | H | N | E | I | O | ' |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Shift| Z | X | C | V | B | [ | ] | K | M | , | . | / |Enter |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* |Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_COLEMAK] = LAYOUT(
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
|
||||
KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
|
||||
KC_LCTL, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, KC_RBRC, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
|
||||
ADJUST, KC_ESC, KC_LALT, KC_LGUI, EISU, LOWER, KC_SPC, KC_SPC, RAISE, KANA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
|
||||
),
|
||||
|
||||
/* Dvorak
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Bksp |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Tab | ' | , | . | P | Y | | F | G | C | R | L | Del |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Ctrl | A | O | E | U | I | | D | H | T | N | S | / |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Shift| ; | Q | J | K | X | [ | ] | B | M | W | V | Z |Enter |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* |Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_DVORAK] = LAYOUT(
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
|
||||
KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL,
|
||||
KC_LCTL, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH,
|
||||
KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_LBRC, KC_RBRC, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT ,
|
||||
ADJUST, KC_ESC, KC_LALT, KC_LGUI, EISU, LOWER, KC_SPC, KC_SPC, RAISE, KANA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
|
||||
),
|
||||
|
||||
/* Lower
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | F1 | F2 | F3 | F4 | F5 | | F6 | _ | + | { | } | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | CAPS | F7 | F8 | F9 | F10 | F11 | ( | ) | F12 | | | Home | End | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | Next | Vol- | Vol+ | Play |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_LOWER] = LAYOUT(
|
||||
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
|
||||
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
|
||||
KC_CAPS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_LPRN, KC_RPRN, KC_F12, _______, _______, KC_HOME, KC_END, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
|
||||
),
|
||||
|
||||
/* Raise
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Bksp |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | F1 | F2 | F3 | F4 | F5 | | F6 | - | = | [ | ] | \ |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | CAPS | F7 | F8 | F9 | F10 | F11 | | | F12 | | |PageDn|PageUp| |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | Next | Vol- | Vol+ | Play |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_RAISE] = LAYOUT(
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||
KC_CAPS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______, KC_F12, _______, _______, KC_PGDN, KC_PGUP, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
|
||||
),
|
||||
|
||||
/* Adjust (Lower + Raise)
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | Reset|RGBRST| | | | | | | | | | Del |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | | |Aud on|Audoff| Mac | | Win |Qwerty|Colemk|Dvorak| | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | |RGB ON| HUE+ | SAT+ | VAL+ |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | MODE | HUE- | SAT- | VAL- |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_ADJUST] = LAYOUT(
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
|
||||
_______, QK_BOOT, RGBRST, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
|
||||
_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD
|
||||
)
|
||||
};
|
||||
|
||||
#ifdef AUDIO_ENABLE
|
||||
|
||||
float tone_qwerty[][2] = SONG(QWERTY_SOUND);
|
||||
float tone_dvorak[][2] = SONG(DVORAK_SOUND);
|
||||
float tone_colemak[][2] = SONG(COLEMAK_SOUND);
|
||||
float tone_plover[][2] = SONG(PLOVER_SOUND);
|
||||
float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND);
|
||||
#endif
|
||||
|
||||
// define variables for reactive RGB
|
||||
bool TOG_STATUS = false;
|
||||
int RGB_current_mode;
|
||||
|
||||
// Setting ADJUST layer RGB back to default
|
||||
void update_tri_layer_RGB(uint8_t layer1, uint8_t layer2, uint8_t layer3) {
|
||||
if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
//rgblight_mode(RGB_current_mode);
|
||||
#endif
|
||||
layer_on(layer3);
|
||||
} else {
|
||||
layer_off(layer3);
|
||||
}
|
||||
}
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case QWERTY:
|
||||
if (record->event.pressed) {
|
||||
#ifdef AUDIO_ENABLE
|
||||
PLAY_SONG(tone_qwerty);
|
||||
#endif
|
||||
set_single_persistent_default_layer(_QWERTY);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case COLEMAK:
|
||||
if (record->event.pressed) {
|
||||
#ifdef AUDIO_ENABLE
|
||||
PLAY_SONG(tone_colemak);
|
||||
#endif
|
||||
set_single_persistent_default_layer(_COLEMAK);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case DVORAK:
|
||||
if (record->event.pressed) {
|
||||
#ifdef AUDIO_ENABLE
|
||||
PLAY_SONG(tone_dvorak);
|
||||
#endif
|
||||
set_single_persistent_default_layer(_DVORAK);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case LOWER:
|
||||
if (record->event.pressed) {
|
||||
//not sure how to have keyboard check mode and set it to a variable, so my work around
|
||||
//uses another variable that would be set to true after the first time a reactive key is pressed.
|
||||
if (TOG_STATUS) { //TOG_STATUS checks is another reactive key currently pressed, only changes RGB mode if returns false
|
||||
} else {
|
||||
TOG_STATUS = !TOG_STATUS;
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
//rgblight_mode(RGBLIGHT_MODE_SNAKE + 1);
|
||||
#endif
|
||||
}
|
||||
layer_on(_LOWER);
|
||||
update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
|
||||
} else {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
//rgblight_mode(RGB_current_mode); // revert RGB to initial mode prior to RGB mode change
|
||||
#endif
|
||||
TOG_STATUS = false;
|
||||
layer_off(_LOWER);
|
||||
update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case RAISE:
|
||||
if (record->event.pressed) {
|
||||
//not sure how to have keyboard check mode and set it to a variable, so my work around
|
||||
//uses another variable that would be set to true after the first time a reactive key is pressed.
|
||||
if (TOG_STATUS) { //TOG_STATUS checks is another reactive key currently pressed, only changes RGB mode if returns false
|
||||
} else {
|
||||
TOG_STATUS = !TOG_STATUS;
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
//rgblight_mode(RGBLIGHT_MODE_SNAKE);
|
||||
#endif
|
||||
}
|
||||
layer_on(_RAISE);
|
||||
update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
|
||||
} else {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
//rgblight_mode(RGB_current_mode); // revert RGB to initial mode prior to RGB mode change
|
||||
#endif
|
||||
layer_off(_RAISE);
|
||||
TOG_STATUS = false;
|
||||
update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case ADJUST:
|
||||
if (record->event.pressed) {
|
||||
layer_on(_ADJUST);
|
||||
} else {
|
||||
layer_off(_ADJUST);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
//led operations - RGB mode change now updates the RGB_current_mode to allow the right RGB mode to be set after reactive keys are released
|
||||
case RGB_MOD:
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
if (record->event.pressed) {
|
||||
rgblight_mode(RGB_current_mode);
|
||||
rgblight_step();
|
||||
RGB_current_mode = rgblight_get_mode();
|
||||
}
|
||||
#endif
|
||||
return false;
|
||||
break;
|
||||
case EISU:
|
||||
if (record->event.pressed) {
|
||||
if (is_mac_mode()) {
|
||||
register_code(KC_LNG2);
|
||||
} else {
|
||||
SEND_STRING(SS_LALT("`"));
|
||||
}
|
||||
} else {
|
||||
unregister_code(KC_LNG2);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case KANA:
|
||||
if (record->event.pressed) {
|
||||
if (is_mac_mode()) {
|
||||
register_code(KC_LNG1);
|
||||
} else {
|
||||
SEND_STRING(SS_LALT("`"));
|
||||
}
|
||||
} else {
|
||||
unregister_code(KC_LNG1);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case RGBRST:
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
if (record->event.pressed) {
|
||||
eeconfig_update_rgblight_default();
|
||||
rgblight_enable();
|
||||
RGB_current_mode = rgblight_get_mode();
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void matrix_init_user(void) {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
RGB_current_mode = rgblight_get_mode();
|
||||
#endif
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
void keyboard_post_init_user(void) {
|
||||
rgblight_enable_noeeprom();
|
||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_RGB_TEST);
|
||||
}
|
@ -1 +0,0 @@
|
||||
#include "../default/oled_display.c"
|
@ -1,25 +0,0 @@
|
||||
# QMK Standard Build Options
|
||||
# change to "no" to disable the options, or define them in the Makefile in
|
||||
# the appropriate keymap folder that will get included automatically
|
||||
#
|
||||
# See TOP/keyboards/helix/rules.mk for a list of options that can be set.
|
||||
# See TOP/docs/config_options.md for more information.
|
||||
#
|
||||
|
||||
LTO_ENABLE = no # if firmware size over limit, try this option
|
||||
|
||||
# Helix Spacific Build Options
|
||||
# you can uncomment and edit follows 7 Variables
|
||||
# jp: 以下の7つの変数を必要に応じて編集し、コメントアウトをはずします。
|
||||
OLED_ENABLE = yes # OLED_ENABLE
|
||||
# LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" insted of "common/glcdfont.c"
|
||||
LED_BACK_ENABLE = yes # LED backlight (Enable WS2812 RGB underlight.)
|
||||
LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
|
||||
LED_ANIMATIONS = yes # LED animations
|
||||
# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
|
||||
|
||||
OLED_SELECT = core
|
||||
ifeq ($(strip $(OLED_ENABLE)), yes)
|
||||
SRC += oled_display.c
|
||||
endif
|
||||
SRC += led_test_init.c
|
@ -1,90 +0,0 @@
|
||||
#
|
||||
# local_features.mk contains post-processing rules for the Helix keyboard.
|
||||
#
|
||||
# Post-processing rules convert keyboard-specific shortcuts (that represent
|
||||
# combinations of standard options) into QMK standard options.
|
||||
#
|
||||
|
||||
KEYBOARD_LOCAL_FEATURES_MK :=
|
||||
-include $(strip $(HELIX_TOP_DIR)/rev2/override_helix_options.mk) ## File dedicated to maintenance
|
||||
|
||||
# Parse 'HELIX=xx,yy,zz' option
|
||||
ifneq ($(strip $(HELIX)),)
|
||||
# make HELIX=ios helix/pico:AKEYMAP
|
||||
# make HELIX=no-ani helix/pico:AKEYMAP
|
||||
# make HELIX=no-oled helix/pico:AKEYMAP
|
||||
# make HELIX=ios,no-ani,no-oled helix/pico:AKEYMAP
|
||||
define HELIX_OPTION_PARSE
|
||||
# parce 'no-ani' 'ios' 'no-oled'
|
||||
$(if $(SHOW_PARCE),$(info parse .$1.)) #debug
|
||||
$(if $(HELIX_OVERRIDE_PARSE),$(call HELIX_OVERRIDE_PARSE,$1))
|
||||
|
||||
ifeq ($(strip $1),ios)
|
||||
IOS_DEVICE_ENABLE = yes
|
||||
endif
|
||||
ifneq ($(filter na no_ani no-ani,$(strip $1)),)
|
||||
LED_ANIMATIONS = no
|
||||
endif
|
||||
ifneq ($(filter nooled no-oled,$(strip $1)),)
|
||||
OLED_ENABLE = no
|
||||
endif
|
||||
ifeq ($(strip $1),oled)
|
||||
OLED_ENABLE = yes
|
||||
endif
|
||||
endef # end of HELIX_OPTION_PARSE
|
||||
|
||||
COMMA=,
|
||||
$(eval $(foreach A_OPTION_NAME,$(subst $(COMMA), ,$(HELIX)), \
|
||||
$(call HELIX_OPTION_PARSE,$(A_OPTION_NAME))))
|
||||
|
||||
SHOW_HELIX_OPTIONS = yes
|
||||
endif
|
||||
|
||||
########
|
||||
# convert Helix-specific options (that represent combinations of standard options)
|
||||
# into QMK standard options.
|
||||
|
||||
ifeq ($(strip $(LED_BACK_ENABLE)), yes)
|
||||
RGBLIGHT_ENABLE = yes
|
||||
OPT_DEFS += -DRGBLED_BACK
|
||||
ifeq ($(strip $(LED_UNDERGLOW_ENABLE)), yes)
|
||||
$(error LED_BACK_ENABLE and LED_UNDERGLOW_ENABLE both 'yes')
|
||||
endif
|
||||
else ifeq ($(strip $(LED_UNDERGLOW_ENABLE)), yes)
|
||||
RGBLIGHT_ENABLE = yes
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes)
|
||||
OPT_DEFS += -DIOS_DEVICE_ENABLE
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(LED_ANIMATIONS)), yes)
|
||||
OPT_DEFS += -DLED_ANIMATIONS
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(OLED_ENABLE)), yes)
|
||||
ifeq ($(strip $(LOCAL_GLCDFONT)), yes)
|
||||
OPT_DEFS += -DOLED_FONT_H=\<helixfont.h\>
|
||||
else
|
||||
OPT_DEFS += -DOLED_FONT_H=\"common/glcdfont.c\"
|
||||
endif
|
||||
endif
|
||||
|
||||
ifneq ($(strip $(SHOW_HELIX_OPTIONS)),)
|
||||
$(info Helix Spacific Build Options)
|
||||
$(info - OLED_ENABLE = $(OLED_ENABLE))
|
||||
$(info - LED_BACK_ENABLE = $(LED_BACK_ENABLE))
|
||||
$(info - LED_UNDERGLOW_ENABLE = $(LED_UNDERGLOW_ENABLE))
|
||||
$(info - LED_ANIMATIONS = $(LED_ANIMATIONS))
|
||||
$(info - IOS_DEVICE_ENABLE = $(IOS_DEVICE_ENABLE))
|
||||
$(info )
|
||||
$(info QMK Build Options)
|
||||
$(info -- SPLIT_KEYBOARD = $(SPLIT_KEYBOARD))
|
||||
$(info -- RGBLIGHT_ENABLE = $(RGBLIGHT_ENABLE))
|
||||
$(info -- OLED_DRIVER = $(OLED_DRIVER))
|
||||
$(info -- OLED_LOCAL_ENABLE = $(OLED_LOCAL_ENABLE))
|
||||
$(info -- CONSOLE_ENABLE = $(CONSOLE_ENABLE))
|
||||
$(info -- OPT_DEFS = $(OPT_DEFS))
|
||||
$(info -- LTO_ENABLE = $(LTO_ENABLE))
|
||||
$(info )
|
||||
endif
|
@ -1,46 +0,0 @@
|
||||
ifneq ($(strip $(HELIX)),)
|
||||
$(info -------------------------)
|
||||
$(info override_helix_options.mk)
|
||||
$(info -------------------------)
|
||||
endif
|
||||
|
||||
define HELIX_OVERRIDE_PARSE
|
||||
ifeq ($(strip $1),back)
|
||||
LED_BACK_ENABLE = yes
|
||||
LED_UNDERGLOW_ENABLE = no
|
||||
endif
|
||||
ifeq ($(strip $1),under)
|
||||
LED_BACK_ENABLE = no
|
||||
LED_UNDERGLOW_ENABLE = yes
|
||||
endif
|
||||
ifneq ($(filter led-off led_off noback no-back nounder no-under,$(strip $1)),)
|
||||
LED_BACK_ENABLE = no
|
||||
LED_UNDERGLOW_ENABLE = no
|
||||
endif
|
||||
ifneq ($(filter core-oled core_oled newoled new-oled olednew oled-new,$(strip $1)),)
|
||||
OLED_ENABLE = yes
|
||||
OLED_SELECT = core
|
||||
endif
|
||||
ifneq ($(filter local-oled local_oled oldoled old-oled oledold oled-old,$(strip $1)),)
|
||||
OLED_ENABLE = yes
|
||||
OLED_SELECT = local
|
||||
endif
|
||||
ifneq ($(filter sc split-common split_common,$(strip $1)),)
|
||||
SPLIT_KEYBOARD = yes
|
||||
endif
|
||||
ifneq ($(filter nosc no-sc no-split-common no-split_common,$(strip $1)),)
|
||||
SPLIT_KEYBOARD = no
|
||||
endif
|
||||
ifeq ($(strip $1),scan)
|
||||
DEBUG_MATRIX_SCAN_RATE_ENABLE = yes
|
||||
endif
|
||||
ifeq ($(strip $1),scan-api)
|
||||
DEBUG_MATRIX_SCAN_RATE_ENABLE = api
|
||||
endif
|
||||
ifeq ($(strip $1),lto)
|
||||
LTO_ENABLE = yes
|
||||
endif
|
||||
ifneq ($(filter nolto no-lto no_lto,$(strip $1)),)
|
||||
LTO_ENABLE = no
|
||||
endif
|
||||
endef # end of HELIX_OVERRIDE_PARSE
|
@ -1,7 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#if defined(SPLIT_KEYBOARD) /* if use split_common */
|
||||
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_SPLIT)
|
||||
# define RGBLIGHT_SPLIT /* helix hardware need this */
|
||||
# endif
|
||||
#endif
|
@ -1,3 +0,0 @@
|
||||
ifneq ($(strip $(KEYBOARD_LOCAL_FEATURES_MK)),)
|
||||
include $(strip $(KEYBOARD_LOCAL_FEATURES_MK))
|
||||
endif
|
@ -1 +0,0 @@
|
||||
{}
|
@ -1,4 +0,0 @@
|
||||
LED_BACK_ENABLE = yes # LED backlight (Enable WS2812 RGB underlight.)
|
||||
LED_ANIMATIONS = yes # LED animations
|
||||
|
||||
include $(strip $(KEYBOARD_LOCAL_FEATURES_MK))
|
@ -1,13 +0,0 @@
|
||||
# Helix rev2
|
||||
|
||||
A compact split ortholinear keyboard.
|
||||
|
||||
* Keyboard Maintainer: [yushakobo](https://github.com/yushakobo)
|
||||
* Hardware Supported: Helix rev2 PCBs, Pro Micro
|
||||
* Hardware Availability: [PCB & Case Data](https://github.com/MakotoKurauchi/helix)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make helix/rev2:default:flash
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
@ -1,76 +0,0 @@
|
||||
/* Copyright 2018 MakotoKurauchi
|
||||
*
|
||||
* 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 "rev2.h"
|
||||
|
||||
// Each keymap.c should use is_keyboard_master() instead of 'is_master'.
|
||||
// But keep 'is_master' for a while for backwards compatibility
|
||||
// for the old keymap.c.
|
||||
uint8_t is_master = false;
|
||||
|
||||
bool is_mac_mode(void) {
|
||||
// This is the opposite of the QMK standard, but we'll leave it for backwards compatibility.
|
||||
return keymap_config.swap_lalt_lgui == false;
|
||||
}
|
||||
|
||||
void set_mac_mode_kb(bool macmode) {
|
||||
/* The result is the same as pressing the AG_NORM(=MAGIC_UNSWAP_ALT_GUI)/AG_SWAP(=MAGIC_SWAP_ALT_GUI) keys.
|
||||
* see
|
||||
* https://github.com/qmk/qmk_firmware/blob/fb4a6ad30ea7a648acd59793ed4a30c3a8d8dc32/quantum/process_keycode/process_magic.c#L123-L124
|
||||
* https://github.com/qmk/qmk_firmware/blob/fb4a6ad30ea7a648acd59793ed4a30c3a8d8dc32/quantum/process_keycode/process_magic.c#L80-L81
|
||||
*/
|
||||
keymap_config.swap_lalt_lgui = keymap_config.swap_ralt_rgui = !macmode;
|
||||
eeconfig_update_keymap(keymap_config.raw);
|
||||
}
|
||||
|
||||
void matrix_init_kb(void) {
|
||||
// Each keymap.c should use is_keyboard_master() instead of is_master.
|
||||
// But keep is_master for a while for backwards compatibility
|
||||
// for the old keymap.c.
|
||||
is_master = is_keyboard_master();
|
||||
|
||||
matrix_init_user();
|
||||
};
|
||||
|
||||
void keyboard_post_init_kb(void) {
|
||||
#if defined(DEBUG_MATRIX_SCAN_RATE)
|
||||
debug_enable = true;
|
||||
#endif
|
||||
keyboard_post_init_user();
|
||||
}
|
||||
|
||||
#ifdef OLED_ENABLE
|
||||
void render_helix_logo(void) {
|
||||
static const char helix_logo[] PROGMEM ={
|
||||
0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
|
||||
0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
|
||||
0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,
|
||||
0};
|
||||
oled_write_P(helix_logo, false);
|
||||
}
|
||||
|
||||
bool oled_task_kb(void) {
|
||||
if (oled_task_user()) {
|
||||
/* keymap/user level oled_task_user() dose not exist */
|
||||
led_t led_state = host_keyboard_led_state();
|
||||
oled_write_P(led_state.num_lock ? PSTR("NUMLOCK") : PSTR(" "), false);
|
||||
oled_write_P(led_state.caps_lock ? PSTR("CAPS") : PSTR(" "), false);
|
||||
oled_write_P(led_state.scroll_lock ? PSTR("SCLK") : PSTR(" "), false);
|
||||
oled_advance_page(true);
|
||||
render_helix_logo();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
#endif /* end of OLED_ENABLE */
|
@ -1,36 +0,0 @@
|
||||
/* Copyright 2018 MakotoKurauchi
|
||||
*
|
||||
* 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"
|
||||
|
||||
bool is_mac_mode(void);
|
||||
void set_mac_mode_kb(bool macmode);
|
||||
|
||||
#ifdef OLED_ENABLE
|
||||
void render_helix_logo(void);
|
||||
#endif
|
||||
|
||||
#ifndef SPLIT_KEYBOARD
|
||||
extern bool is_helix_master(void);
|
||||
#define is_keyboard_master() is_helix_master()
|
||||
#endif
|
||||
|
||||
// Each keymap.c should use is_keyboard_master() instead of 'is_master', 'has_usb()'.
|
||||
// But keep 'is_master' for a while for backwards compatibility
|
||||
// for the old keymap.c.
|
||||
extern uint8_t is_master; // 'is_master' will be obsolete, it is recommended to use 'is_keyboard_master ()' instead.
|
||||
#define has_usb() is_keyboard_master()
|
@ -1,11 +0,0 @@
|
||||
KEYBOARD_LOCAL_FEATURES_MK := $(dir $(lastword $(MAKEFILE_LIST)))local_features.mk
|
||||
|
||||
# Helix Spacific Build Options default values
|
||||
OLED_ENABLE = yes # OLED_ENABLE
|
||||
LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" insted of "common/glcdfont.c"
|
||||
LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.)
|
||||
LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
|
||||
LED_ANIMATIONS = yes # LED animations
|
||||
IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
|
||||
|
||||
DEFAULT_FOLDER = helix/rev2/base
|
@ -1 +0,0 @@
|
||||
{}
|
@ -1 +0,0 @@
|
||||
LED_BACK_ENABLE = yes
|
@ -1,4 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#define SERIAL_SLAVE_BUFFER_LENGTH MATRIX_ROWS/2
|
||||
#define SERIAL_MASTER_BUFFER_LENGTH MATRIX_ROWS/2
|
@ -1 +0,0 @@
|
||||
{}
|
@ -1 +0,0 @@
|
||||
LED_UNDERGLOW_ENABLE = yes
|
@ -1,60 +0,0 @@
|
||||
/*
|
||||
Copyright 2020 yushakobo
|
||||
|
||||
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
|
||||
|
||||
/* key matrix size */
|
||||
#define MATRIX_ROWS 8
|
||||
#define MATRIX_COLS 7
|
||||
|
||||
/*
|
||||
* Keyboard Matrix Assignments
|
||||
*
|
||||
* Change this to how you wired your keyboard
|
||||
* COLS: AVR pins used for columns, left to right
|
||||
* ROWS: AVR pins used for rows, top to bottom
|
||||
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
|
||||
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
||||
*
|
||||
*/
|
||||
#define MATRIX_ROW_PINS { D4, C6, D7, E6 }
|
||||
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2 }
|
||||
|
||||
/* COL2ROW, ROW2COL*/
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
/* Split hand configration */
|
||||
#define SPLIT_HAND_MATRIX_GRID D7,B2
|
||||
|
||||
/* Custom font */
|
||||
#define OLED_FONT_H "keyboards/helix/common/glcdfont.c"
|
||||
|
||||
/*
|
||||
* 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
|
@ -1,117 +1,101 @@
|
||||
{
|
||||
"keyboard_name": "Helix rev3 4rows",
|
||||
"manufacturer": "yushakobo",
|
||||
"url": "",
|
||||
"maintainer": "yushakobo",
|
||||
"usb": {
|
||||
"vid": "0x3265",
|
||||
"pid": "0x0004",
|
||||
"device_version": "0.0.1"
|
||||
},
|
||||
"qmk": {
|
||||
"locking": {
|
||||
"enabled": true,
|
||||
"resync": true
|
||||
"keyboard_name": "Helix rev3 4rows",
|
||||
"dip_switch": {
|
||||
"matrix_grid": [
|
||||
[0, 6],
|
||||
[1, 6],
|
||||
[5, 6],
|
||||
[6, 6]
|
||||
]
|
||||
},
|
||||
"encoder": {
|
||||
"rotary": [
|
||||
{"pin_a": "B6", "pin_b": "B5"}
|
||||
]
|
||||
},
|
||||
"features": {
|
||||
"dip_switch": false,
|
||||
"encoder": true,
|
||||
"oled": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["F4", "F5", "F6", "F7", "B1", "B3", "B2"],
|
||||
"rows": ["D4", "C6", "D7", "E6"]
|
||||
},
|
||||
"qmk": {
|
||||
"locking": {
|
||||
"enabled": true,
|
||||
"resync": true
|
||||
}
|
||||
},
|
||||
"rgblight": {
|
||||
"led_count": 50,
|
||||
"max_brightness": 120,
|
||||
"split_count": [25, 25]
|
||||
},
|
||||
"split": {
|
||||
"handedness": {
|
||||
"matrix_grid": ["D7", "B2"]
|
||||
}
|
||||
},
|
||||
"usb": {
|
||||
"device_version": "0.0.1",
|
||||
"pid": "0x0004"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"matrix": [0, 5], "x": 5, "y": 0},
|
||||
{"matrix": [4, 5], "x": 9, "y": 0},
|
||||
{"matrix": [4, 4], "x": 10, "y": 0},
|
||||
{"matrix": [4, 3], "x": 11, "y": 0},
|
||||
{"matrix": [4, 2], "x": 12, "y": 0},
|
||||
{"matrix": [4, 1], "x": 13, "y": 0},
|
||||
{"matrix": [4, 0], "x": 14, "y": 0},
|
||||
{"matrix": [1, 0], "x": 0, "y": 1},
|
||||
{"matrix": [1, 1], "x": 1, "y": 1},
|
||||
{"matrix": [1, 2], "x": 2, "y": 1},
|
||||
{"matrix": [1, 3], "x": 3, "y": 1},
|
||||
{"matrix": [1, 4], "x": 4, "y": 1},
|
||||
{"matrix": [1, 5], "x": 5, "y": 1},
|
||||
{"matrix": [5, 5], "x": 9, "y": 1},
|
||||
{"matrix": [5, 4], "x": 10, "y": 1},
|
||||
{"matrix": [5, 3], "x": 11, "y": 1},
|
||||
{"matrix": [5, 2], "x": 12, "y": 1},
|
||||
{"matrix": [5, 1], "x": 13, "y": 1},
|
||||
{"matrix": [5, 0], "x": 14, "y": 1},
|
||||
{"matrix": [2, 0], "x": 0, "y": 2},
|
||||
{"matrix": [2, 1], "x": 1, "y": 2},
|
||||
{"matrix": [2, 2], "x": 2, "y": 2},
|
||||
{"matrix": [2, 3], "x": 3, "y": 2},
|
||||
{"matrix": [2, 4], "x": 4, "y": 2},
|
||||
{"matrix": [2, 5], "x": 5, "y": 2},
|
||||
{"matrix": [6, 5], "x": 9, "y": 2},
|
||||
{"matrix": [6, 4], "x": 10, "y": 2},
|
||||
{"matrix": [6, 3], "x": 11, "y": 2},
|
||||
{"matrix": [6, 2], "x": 12, "y": 2},
|
||||
{"matrix": [6, 1], "x": 13, "y": 2},
|
||||
{"matrix": [6, 0], "x": 14, "y": 2},
|
||||
{"matrix": [3, 0], "x": 0, "y": 3},
|
||||
{"matrix": [3, 1], "x": 1, "y": 3},
|
||||
{"matrix": [3, 2], "x": 2, "y": 3},
|
||||
{"matrix": [3, 3], "x": 3, "y": 3},
|
||||
{"matrix": [3, 4], "x": 4, "y": 3},
|
||||
{"matrix": [3, 5], "x": 5, "y": 3},
|
||||
{"matrix": [3, 6], "x": 6, "y": 3},
|
||||
{"matrix": [7, 6], "x": 8, "y": 3},
|
||||
{"matrix": [7, 5], "x": 9, "y": 3},
|
||||
{"matrix": [7, 4], "x": 10, "y": 3},
|
||||
{"matrix": [7, 3], "x": 11, "y": 3},
|
||||
{"matrix": [7, 2], "x": 12, "y": 3},
|
||||
{"matrix": [7, 1], "x": 13, "y": 3},
|
||||
{"matrix": [7, 0], "x": 14, "y": 3}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"rgb_matrix": {
|
||||
"driver": "ws2812",
|
||||
"sat_steps": 8,
|
||||
"val_steps": 8,
|
||||
"speed_steps": 10,
|
||||
"max_brightness": 150,
|
||||
"split_count": [25, 25],
|
||||
"sleep": true
|
||||
},
|
||||
"dip_switch": {
|
||||
"matrix_grid": [ [0,6], [1,6], [5,6], [6,6] ]
|
||||
},
|
||||
"encoder": {
|
||||
"rotary": [
|
||||
{"pin_a": "B6", "pin_b": "B5"}
|
||||
]
|
||||
},
|
||||
"split": {
|
||||
"enabled": true,
|
||||
"soft_serial_pin": "D2"
|
||||
},
|
||||
"ws2812": {
|
||||
"pin": "D3"
|
||||
},
|
||||
"rgblight": {
|
||||
"led_count": 50,
|
||||
"max_brightness": 120,
|
||||
"split_count": [25, 25],
|
||||
"animations": {
|
||||
"rainbow_mood": true,
|
||||
"rainbow_swirl": true,
|
||||
"static_gradient": true,
|
||||
"rgb_test": true
|
||||
}
|
||||
},
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"matrix": [0, 5], "x": 5, "y": 0},
|
||||
|
||||
{"matrix": [4, 5], "x": 9, "y": 0},
|
||||
{"matrix": [4, 4], "x": 10, "y": 0},
|
||||
{"matrix": [4, 3], "x": 11, "y": 0},
|
||||
{"matrix": [4, 2], "x": 12, "y": 0},
|
||||
{"matrix": [4, 1], "x": 13, "y": 0},
|
||||
{"matrix": [4, 0], "x": 14, "y": 0},
|
||||
|
||||
{"matrix": [1, 0], "x": 0, "y": 1},
|
||||
{"matrix": [1, 1], "x": 1, "y": 1},
|
||||
{"matrix": [1, 2], "x": 2, "y": 1},
|
||||
{"matrix": [1, 3], "x": 3, "y": 1},
|
||||
{"matrix": [1, 4], "x": 4, "y": 1},
|
||||
{"matrix": [1, 5], "x": 5, "y": 1},
|
||||
|
||||
{"matrix": [5, 5], "x": 9, "y": 1},
|
||||
{"matrix": [5, 4], "x": 10, "y": 1},
|
||||
{"matrix": [5, 3], "x": 11, "y": 1},
|
||||
{"matrix": [5, 2], "x": 12, "y": 1},
|
||||
{"matrix": [5, 1], "x": 13, "y": 1},
|
||||
{"matrix": [5, 0], "x": 14, "y": 1},
|
||||
|
||||
{"matrix": [2, 0], "x": 0, "y": 2},
|
||||
{"matrix": [2, 1], "x": 1, "y": 2},
|
||||
{"matrix": [2, 2], "x": 2, "y": 2},
|
||||
{"matrix": [2, 3], "x": 3, "y": 2},
|
||||
{"matrix": [2, 4], "x": 4, "y": 2},
|
||||
{"matrix": [2, 5], "x": 5, "y": 2},
|
||||
|
||||
{"matrix": [6, 5], "x": 9, "y": 2},
|
||||
{"matrix": [6, 4], "x": 10, "y": 2},
|
||||
{"matrix": [6, 3], "x": 11, "y": 2},
|
||||
{"matrix": [6, 2], "x": 12, "y": 2},
|
||||
{"matrix": [6, 1], "x": 13, "y": 2},
|
||||
{"matrix": [6, 0], "x": 14, "y": 2},
|
||||
|
||||
{"matrix": [3, 0], "x": 0, "y": 3},
|
||||
{"matrix": [3, 1], "x": 1, "y": 3},
|
||||
{"matrix": [3, 2], "x": 2, "y": 3},
|
||||
{"matrix": [3, 3], "x": 3, "y": 3},
|
||||
{"matrix": [3, 4], "x": 4, "y": 3},
|
||||
{"matrix": [3, 5], "x": 5, "y": 3},
|
||||
{"matrix": [3, 6], "x": 6, "y": 3},
|
||||
|
||||
{"matrix": [7, 6], "x": 8, "y": 3},
|
||||
{"matrix": [7, 5], "x": 9, "y": 3},
|
||||
{"matrix": [7, 4], "x": 10, "y": 3},
|
||||
{"matrix": [7, 3], "x": 11, "y": 3},
|
||||
{"matrix": [7, 2], "x": 12, "y": 3},
|
||||
{"matrix": [7, 1], "x": 13, "y": 3},
|
||||
{"matrix": [7, 0], "x": 14, "y": 3}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,180 +0,0 @@
|
||||
/* Copyright 2020 yushakobo
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
|
||||
// Defines names for use in layer keycodes and the keymap
|
||||
enum layer_names {
|
||||
_QWERTY = 0,
|
||||
_LOWER,
|
||||
_RAISE,
|
||||
_ADJUST
|
||||
};
|
||||
|
||||
// Defines the keycodes used by our macros in process_record_user
|
||||
enum custom_keycodes {
|
||||
EISU = SAFE_RANGE,
|
||||
KANA,
|
||||
ADJUST,
|
||||
RGBRST
|
||||
};
|
||||
|
||||
#define LOWER MO(_LOWER)
|
||||
#define RAISE MO(_RAISE)
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/* Qwerty
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Ctrl | A | S | D | F | G | | H | J | K | L | ; | ' |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Shift| Z | X | C | V | B | | N | M | , | . | / |Enter |
|
||||
* |------+------+------+------+------+------+-------------+------+------+------+------+------+------|
|
||||
* |Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_QWERTY] = LAYOUT(
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
|
||||
ADJUST, KC_ESC, KC_LALT, KC_LGUI, EISU, LOWER, KC_SPC, KC_SPC, RAISE, KANA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
|
||||
),
|
||||
|
||||
/* Lower
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | F1 | F2 | F3 | F4 | F5 | | F6 | _ | + | { | } | | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | CAPS | F7 | F8 | F9 | F10 | F11 | | F12 | | | Home | End | |
|
||||
* |------+------+------+------+------+------+-------------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | Next | Vol- | Vol+ | Play |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_LOWER] = LAYOUT(
|
||||
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
|
||||
KC_CAPS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_HOME, KC_END, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
|
||||
),
|
||||
|
||||
/* Raise
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | F1 | F2 | F3 | F4 | F5 | | F6 | - | = | [ | ] | \ |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | CAPS | F7 | F8 | F9 | F10 | F11 | | F12 | | |PageDn|PageUp| |
|
||||
* |------+------+------+------+------+------+-------------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | Next | Vol- | Vol+ | Play |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_RAISE] = LAYOUT(
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||
KC_CAPS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_PGDN, KC_PGUP, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
|
||||
),
|
||||
|
||||
/* Adjust (Lower + Raise)
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | Reset|RGBRST|EEPRST| | | | | | | | | Del |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | | | | | Mac | | Win | |RGB ON| HUE+ | SAT+ | VAL+ |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | MODE | HUE- | SAT- | VAL- |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_ADJUST] = LAYOUT(
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
|
||||
_______, QK_BOOT, RGBRST, EE_CLR, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
|
||||
_______, _______, _______, _______, _______, AG_NORM, AG_SWAP, _______, UG_TOGG, UG_HUEU, UG_SATU, UG_VALU,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, UG_NEXT, UG_HUED, UG_SATD, UG_VALD
|
||||
)
|
||||
|
||||
};
|
||||
|
||||
bool encoder_update_user(uint8_t index, bool clockwise) {
|
||||
if (index == 0) { /* Left side encoder */
|
||||
if (clockwise) {
|
||||
tap_code(KC_PGDN);
|
||||
} else {
|
||||
tap_code(KC_PGUP);
|
||||
}
|
||||
} else if (index == 1) { /* Right side encoder */
|
||||
if (clockwise) {
|
||||
tap_code(KC_DOWN);
|
||||
} else {
|
||||
tap_code(KC_UP);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
layer_state_t layer_state_set_user(layer_state_t state) {
|
||||
return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
|
||||
}
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case EISU:
|
||||
if (record->event.pressed) {
|
||||
if (is_mac_mode()) {
|
||||
register_code(KC_LNG2);
|
||||
}else{
|
||||
tap_code16(LALT(KC_GRAVE));
|
||||
}
|
||||
} else {
|
||||
unregister_code(KC_LNG2);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case KANA:
|
||||
if (record->event.pressed) {
|
||||
if (is_mac_mode()) {
|
||||
register_code(KC_LNG1);
|
||||
}else{
|
||||
tap_code16(LALT(KC_GRAVE));
|
||||
}
|
||||
} else {
|
||||
unregister_code(KC_LNG1);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case ADJUST:
|
||||
if (record->event.pressed) {
|
||||
layer_on(_LOWER);
|
||||
layer_on(_RAISE);
|
||||
} else {
|
||||
layer_off(_LOWER);
|
||||
layer_off(_RAISE);
|
||||
}
|
||||
break;
|
||||
case RGBRST:
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
if (record->event.pressed) {
|
||||
eeconfig_update_rgblight_default();
|
||||
rgblight_enable();
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
57
keyboards/helix/rev3_4rows/keymaps/default/keymap.json
Normal file
57
keyboards/helix/rev3_4rows/keymaps/default/keymap.json
Normal file
@ -0,0 +1,57 @@
|
||||
{
|
||||
"keyboard": "helix/rev3_4rows",
|
||||
"keymap": "default",
|
||||
"layout": "LAYOUT",
|
||||
"config": {
|
||||
"features": {
|
||||
"tri_layer": true,
|
||||
"encoder_map": true
|
||||
}
|
||||
},
|
||||
"encoders": [
|
||||
[{"ccw": "KC_MS_WH_UP", "cw": "KC_MS_WH_DOWN"} ,{"ccw": "KC_VOLD", "cw": "KC_VOLU"}],
|
||||
[{"ccw": "KC_TRNS", "cw": "KC_TRNS"} ,{"ccw": "KC_TRNS", "cw": "KC_TRNS"}],
|
||||
[{"ccw": "KC_TRNS", "cw": "KC_TRNS"} ,{"ccw": "KC_TRNS", "cw": "KC_TRNS"}],
|
||||
[{"ccw": "KC_TRNS", "cw": "KC_TRNS"} ,{"ccw": "KC_TRNS", "cw": "KC_TRNS"}],
|
||||
[{"ccw": "KC_TRNS", "cw": "KC_TRNS"} ,{"ccw": "KC_TRNS", "cw": "KC_TRNS"}],
|
||||
[{"ccw": "KC_TRNS", "cw": "KC_TRNS"} ,{"ccw": "KC_TRNS", "cw": "KC_TRNS"}]
|
||||
],
|
||||
"layers": [
|
||||
[
|
||||
"KC_TAB", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_BSPC",
|
||||
"KC_LCTL", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_QUOT",
|
||||
"KC_LSFT", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_ENT",
|
||||
"MO(5)", "KC_ESC", "KC_LALT", "KC_LGUI", "EISU", "TL_LOWR", "KC_SPC", "KC_SPC", "TL_UPPR", "KANA", "KC_LEFT", "KC_DOWN", "KC_UP", "KC_RGHT"
|
||||
],
|
||||
[
|
||||
"KC_TAB", "KC_Q", "KC_W", "KC_F", "KC_P", "KC_G", "KC_J", "KC_L", "KC_U", "KC_Y", "KC_SCLN", "KC_BSPC",
|
||||
"KC_LCTL", "KC_A", "KC_R", "KC_S", "KC_T", "KC_D", "KC_H", "KC_N", "KC_E", "KC_I", "KC_O", "KC_QUOT",
|
||||
"KC_LSFT", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_K", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_ENT",
|
||||
"MO(5)", "KC_ESC", "KC_LALT", "KC_LGUI", "EISU", "TL_LOWR", "KC_SPC", "KC_SPC", "TL_UPPR", "KANA", "KC_LEFT", "KC_DOWN", "KC_UP", "KC_RGHT"
|
||||
],
|
||||
[
|
||||
"KC_TAB", "KC_QUOT", "KC_COMM", "KC_DOT", "KC_P", "KC_Y", "KC_F", "KC_G", "KC_C", "KC_R", "KC_L", "KC_BSPC",
|
||||
"KC_LCTL", "KC_A", "KC_O", "KC_E", "KC_U", "KC_I", "KC_D", "KC_H", "KC_T", "KC_N", "KC_S", "KC_SLSH",
|
||||
"KC_LSFT", "KC_SCLN", "KC_Q", "KC_J", "KC_K", "KC_X", "KC_B", "KC_M", "KC_W", "KC_V", "KC_Z", "KC_ENT",
|
||||
"MO(5)", "KC_ESC", "KC_LALT", "KC_LGUI", "EISU", "TL_LOWR", "KC_SPC", "KC_SPC", "TL_UPPR", "KANA", "KC_LEFT", "KC_DOWN", "KC_UP", "KC_RGHT"
|
||||
],
|
||||
[
|
||||
"KC_TILD", "KC_EXLM", "KC_AT", "KC_HASH", "KC_DLR", "KC_PERC", "KC_CIRC", "KC_AMPR", "KC_ASTR", "KC_LPRN", "KC_RPRN", "KC_DEL",
|
||||
"_______", "KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_F5", "KC_F6", "KC_UNDS", "KC_PLUS", "KC_LCBR", "KC_RCBR", "KC_PIPE",
|
||||
"_______", "KC_F7", "KC_F8", "KC_F9", "KC_F10", "KC_F11", "KC_F12", "_______", "KC_PSCR", "KC_HOME", "KC_END", "_______",
|
||||
"_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "KC_MNXT", "KC_VOLD", "KC_VOLU", "KC_MPLY"
|
||||
],
|
||||
[
|
||||
"KC_GRV", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_DEL",
|
||||
"_______", "KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_F5", "KC_F6", "KC_MINS", "KC_EQL", "KC_LBRC", "KC_RBRC", "KC_BSLS",
|
||||
"_______", "KC_F7", "KC_F8", "KC_F9", "KC_F10", "KC_F11", "KC_F12", "_______", "KC_PSCR", "KC_PGDN", "KC_PGUP", "_______",
|
||||
"_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "KC_MNXT", "KC_VOLD", "KC_VOLU", "KC_MPLY"
|
||||
],
|
||||
[
|
||||
"_______", "QK_BOOT", "RGBRST", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______",
|
||||
"_______", "AU_ON", "AU_OFF", "MU_TOGG", "MU_NEXT", "AG_NORM", "AG_SWAP", "DF(0)", "DF(1)", "DF(2)", "_______", "_______",
|
||||
"_______", "CK_TOGG", "CK_RST", "CK_UP", "CK_DOWN", "_______", "_______", "_______", "RGB_TOG", "RGB_HUI", "RGB_SAI", "RGB_VAI",
|
||||
"_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "RGB_MOD", "RGB_HUD", "RGB_SAD", "RGB_VAD"
|
||||
]
|
||||
]
|
||||
}
|
@ -1,120 +0,0 @@
|
||||
/* Copyright 2020 yushakobo
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
// Defines names for use in layer keycodes and the keymap
|
||||
enum layer_names {
|
||||
_QWERTY = 0,
|
||||
_LOWER,
|
||||
_RAISE,
|
||||
_ADJUST
|
||||
};
|
||||
|
||||
#ifdef OLED_ENABLE
|
||||
|
||||
void render_status(void) {
|
||||
|
||||
// Render to mode icon
|
||||
static const char os_logo[][2][3] PROGMEM ={{{0x95,0x96,0},{0xb5,0xb6,0}},{{0x97,0x98,0},{0xb7,0xb8,0}}};
|
||||
if (is_mac_mode()) {
|
||||
oled_write_P(os_logo[0][0], false);
|
||||
oled_write_P(PSTR("\n"), false);
|
||||
oled_write_P(os_logo[0][1], false);
|
||||
}else{
|
||||
oled_write_P(os_logo[1][0], false);
|
||||
oled_write_P(PSTR("\n"), false);
|
||||
oled_write_P(os_logo[1][1], false);
|
||||
}
|
||||
|
||||
oled_write_P(PSTR(" "), false);
|
||||
|
||||
// Host Keyboard Layer Status
|
||||
oled_write_P(PSTR("Layer: "), false);
|
||||
|
||||
switch (get_highest_layer(layer_state)) {
|
||||
case _QWERTY:
|
||||
oled_write_P(PSTR("Default\n"), false);
|
||||
break;
|
||||
case _RAISE:
|
||||
oled_write_P(PSTR("Raise\n"), false);
|
||||
break;
|
||||
case _LOWER:
|
||||
oled_write_P(PSTR("Lower\n"), false);
|
||||
break;
|
||||
case _ADJUST:
|
||||
oled_write_P(PSTR("Adjust\n"), false);
|
||||
break;
|
||||
default:
|
||||
// Or use the write_ln shortcut over adding '\n' to the end of your string
|
||||
oled_write_ln_P(PSTR("Undefined"), false);
|
||||
}
|
||||
|
||||
oled_write_P(PSTR("\n"), false);
|
||||
|
||||
// Host Keyboard LED Status
|
||||
led_t led_state = host_keyboard_led_state();
|
||||
oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
|
||||
oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
|
||||
oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
|
||||
}
|
||||
|
||||
|
||||
static void render_logo(void) {
|
||||
static const char PROGMEM qmk_logo[] = {
|
||||
0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94,
|
||||
0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4,
|
||||
0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00
|
||||
};
|
||||
|
||||
oled_write_P(qmk_logo, false);
|
||||
}
|
||||
|
||||
static void render_rgbled_status(bool full) {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
if (RGBLIGHT_MODES > 1 && rgblight_is_enabled()) {
|
||||
if (full) {
|
||||
// " LED %d:%d,%d,%d"
|
||||
oled_write_P(PSTR(" LED"), false);
|
||||
oled_write(get_u8_str(rgblight_get_mode(), ' '), false);
|
||||
oled_write_char(':', false);
|
||||
oled_write(get_u8_str(rgblight_get_hue() / RGBLIGHT_HUE_STEP, ' '), false);
|
||||
oled_write_char(',', false);
|
||||
oled_write(get_u8_str(rgblight_get_sat() / RGBLIGHT_SAT_STEP, ' '), false);
|
||||
oled_write_char(',', false);
|
||||
oled_write(get_u8_str(rgblight_get_val() / RGBLIGHT_VAL_STEP, ' '), false);
|
||||
} else {
|
||||
// "[%2d]"
|
||||
oled_write_char('[', false);
|
||||
oled_write(get_u8_str(rgblight_get_mode(), ' '), false);
|
||||
oled_write_char(']', false);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
bool oled_task_user(void) {
|
||||
if(is_keyboard_master()){
|
||||
render_status();
|
||||
}else{
|
||||
render_logo();
|
||||
render_rgbled_status(true);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
#endif
|
@ -1,66 +0,0 @@
|
||||
# The default keymap for Helix rev3 4rows
|
||||
|
||||
### Qwerty Layer (Base)
|
||||
```
|
||||
,-----------------------------------------. ,-----------------------------------------.
|
||||
| Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| Ctrl | A | S | D | F | G | | H | J | K | L | ; | ' |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| Shift| Z | X | C | V | B | | N | M | , | . | / |Enter |
|
||||
|------+------+------+------+------+------+-------------+------+------+------+------+------+------|
|
||||
|Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right |
|
||||
`-------------------------------------------------------------------------------------------------'
|
||||
```
|
||||
### Lower Layer
|
||||
```
|
||||
,-----------------------------------------. ,-----------------------------------------.
|
||||
| ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| | F1 | F2 | F3 | F4 | F5 | | F6 | _ | + | { | } | | |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| CAPS | F7 | F8 | F9 | F10 | F11 | | F12 | | | Home | End | |
|
||||
|------+------+------+------+------+------+-------------+------+------+------+------+------+------|
|
||||
| | | | | | | | | | | Next | Vol- | Vol+ | Play |
|
||||
`-------------------------------------------------------------------------------------------------'
|
||||
```
|
||||
### Raise Layer
|
||||
```
|
||||
,-----------------------------------------. ,-----------------------------------------.
|
||||
| ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| | F1 | F2 | F3 | F4 | F5 | | F6 | - | = | [ | ] | \ |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| CAPS | F7 | F8 | F9 | F10 | F11 | | F12 | | |PageDn|PageUp| |
|
||||
|------+------+------+------+------+------+-------------+------+------+------+------+------+------|
|
||||
| | | | | | | | | | | Next | Vol- | Vol+ | Play |
|
||||
`-------------------------------------------------------------------------------------------------'
|
||||
```
|
||||
### Adjust Layer (Lower + Raise)
|
||||
```
|
||||
,-----------------------------------------. ,-----------------------------------------.
|
||||
| F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| | Reset|RGBRST|EEPRST| | | | | | | | | Del |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| | | | | | Mac | | Win | |RGB ON| HUE+ | SAT+ | VAL+ |
|
||||
|------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
| | | | | | | | | | | MODE | HUE- | SAT- | VAL- |
|
||||
`-------------------------------------------------------------------------------------------------'
|
||||
```
|
||||
|
||||
### Rotary Encoder Settings
|
||||
|
||||
|L/R|Clockwise|Counter Clockwise|
|
||||
|---|---|---|
|
||||
|Left|Page Down|Page Up|
|
||||
|Right|Down|Up|
|
||||
|
||||
### DipSW Settings
|
||||
|
||||
|Switch No.||
|
||||
|---|---|
|
||||
|Left 1|Toggle Win/mac|
|
||||
|Left 2|Not assigned|
|
||||
|Right 1|Not assigned|
|
||||
|Right 2|Not assigned|
|
@ -1,9 +0,0 @@
|
||||
/*
|
||||
|
||||
There are several ways to create your own keymap oled code:
|
||||
|
||||
* Add the oled code to your keymaps/<keymap_name>/keymap.c.
|
||||
* Create a new file in your keymaps/<keymap_name>/ directory, add the oled code, and add `SRC + = <filename>` to keymaps/<keymap_name>/rules.mk.
|
||||
* Copy keymaps/default/oled_display.c to your keymaps/<keymap_name>/ directory and modify it.
|
||||
|
||||
*/
|
@ -1,13 +0,0 @@
|
||||
# Helix rev3 4rows
|
||||
|
||||
A compact split ortholinear keyboard.
|
||||
|
||||
* Keyboard Maintainer: [yushakobo](https://github.com/yushakobo)
|
||||
* Hardware Supported: Helix rev3 PCBs, Pro Micro
|
||||
* Hardware Availability: (Under preparation)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make helix/rev3_4rows:default:flash
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
@ -1,114 +0,0 @@
|
||||
/* Copyright 2020 yushakobo
|
||||
*
|
||||
* 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 "rev3_4rows.h"
|
||||
|
||||
bool is_mac_mode(void) {
|
||||
return keymap_config.swap_lalt_lgui == false;
|
||||
}
|
||||
|
||||
void set_mac_mode(bool macmode) {
|
||||
/* The result is the same as pressing the AG_NORM(=MAGIC_UNSWAP_ALT_GUI)/AG_SWAP(=MAGIC_SWAP_ALT_GUI) keys.
|
||||
* see
|
||||
* https://github.com/qmk/qmk_firmware/blob/fb4a6ad30ea7a648acd59793ed4a30c3a8d8dc32/quantum/process_keycode/process_magic.c#L123-L124
|
||||
* https://github.com/qmk/qmk_firmware/blob/fb4a6ad30ea7a648acd59793ed4a30c3a8d8dc32/quantum/process_keycode/process_magic.c#L80-L81
|
||||
*/
|
||||
keymap_config.swap_lalt_lgui = keymap_config.swap_ralt_rgui = !macmode;
|
||||
eeconfig_update_keymap(keymap_config.raw);
|
||||
}
|
||||
|
||||
#ifdef DIP_SWITCH_ENABLE
|
||||
bool dip_switch_update_kb(uint8_t index, bool active) {
|
||||
switch (index) {
|
||||
case 0:
|
||||
if(active) { // Left no.1 Helix rev3 common
|
||||
set_mac_mode(false);
|
||||
} else {
|
||||
set_mac_mode(true);
|
||||
}
|
||||
break;
|
||||
default: // Left no.2 or Right no.1 or Right no.2 for user/keymap
|
||||
dip_switch_update_user(index, active);
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef OLED_ENABLE
|
||||
static char *sprint_decimal(char *buf, int data) {
|
||||
if (data > 9) {
|
||||
buf = sprint_decimal(buf, data/10);
|
||||
}
|
||||
*buf++ = "0123456789"[data%10];
|
||||
*buf = '\0';
|
||||
return buf;
|
||||
}
|
||||
|
||||
char *sprints(char *buf, char *src) {
|
||||
while (*src) {
|
||||
*buf++ = *src++;
|
||||
}
|
||||
*buf = '\0';
|
||||
return buf;
|
||||
}
|
||||
|
||||
char *sprintd(char *buf, char *leadstr, int data) {
|
||||
buf = sprints(buf, leadstr);
|
||||
buf = sprint_decimal(buf, data);
|
||||
return buf;
|
||||
}
|
||||
|
||||
char *sprint2d(char *buf, char *leadstr, int data) {
|
||||
buf = sprints(buf, leadstr);
|
||||
if (data > 99) {
|
||||
return sprint_decimal(buf, data);
|
||||
}
|
||||
if (data < 10) {
|
||||
*buf++ = ' ';
|
||||
}
|
||||
return sprint_decimal(buf, data);
|
||||
}
|
||||
|
||||
bool oled_task_kb(void) {
|
||||
if (!oled_task_user()) { return false; }
|
||||
static const char PROGMEM helix_logo[] = {
|
||||
0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94,
|
||||
0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4,
|
||||
0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4,
|
||||
0x0
|
||||
};
|
||||
static const char os_logo[][2][3] PROGMEM ={{{0x95,0x96,0},{0xb5,0xb6,0}},{{0x97,0x98,0},{0xb7,0xb8,0}}};
|
||||
|
||||
if (is_keyboard_master()) {
|
||||
if (is_mac_mode()) {
|
||||
oled_write_P(os_logo[0][0], false);
|
||||
oled_write_P(PSTR("\n"), false);
|
||||
oled_write_P(os_logo[0][1], false);
|
||||
}else{
|
||||
oled_write_P(os_logo[1][0], false);
|
||||
oled_write_P(PSTR("\n"), false);
|
||||
oled_write_P(os_logo[1][1], false);
|
||||
}
|
||||
char buf[20];
|
||||
sprint2d(buf, " Layer: ", get_highest_layer(layer_state));
|
||||
oled_write(buf, false);
|
||||
} else {
|
||||
oled_write_P(helix_logo, false);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
#endif
|
@ -1,9 +0,0 @@
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
||||
RGB_MATRIX_ENABLE = no
|
||||
OLED_ENABLE = yes
|
||||
ENCODER_ENABLE = yes
|
||||
DIP_SWITCH_ENABLE = no
|
||||
LTO_ENABLE = yes
|
||||
|
||||
SRC += oled_display.c
|
@ -1,60 +0,0 @@
|
||||
/*
|
||||
Copyright 2020 yushakobo
|
||||
|
||||
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
|
||||
|
||||
/* key matrix size */
|
||||
#define MATRIX_ROWS 10
|
||||
#define MATRIX_COLS 7
|
||||
|
||||
/*
|
||||
* Keyboard Matrix Assignments
|
||||
*
|
||||
* Change this to how you wired your keyboard
|
||||
* COLS: AVR pins used for columns, left to right
|
||||
* ROWS: AVR pins used for rows, top to bottom
|
||||
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
|
||||
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
||||
*
|
||||
*/
|
||||
#define MATRIX_ROW_PINS { D4, C6, D7, E6, B4 }
|
||||
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2 }
|
||||
|
||||
/* COL2ROW, ROW2COL*/
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
/* Split hand configration */
|
||||
#define SPLIT_HAND_MATRIX_GRID D7,B2
|
||||
|
||||
/* Custom font */
|
||||
#define OLED_FONT_H "keyboards/helix/common/glcdfont.c"
|
||||
|
||||
/*
|
||||
* 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
|
@ -1,197 +1,195 @@
|
||||
{
|
||||
"keyboard_name": "Helix rev3 5rows",
|
||||
"manufacturer": "yushakobo",
|
||||
"url": "",
|
||||
"maintainer": "yushakobo",
|
||||
"usb": {
|
||||
"vid": "0x3265",
|
||||
"pid": "0x0003",
|
||||
"device_version": "0.0.1"
|
||||
},
|
||||
"qmk": {
|
||||
"locking": {
|
||||
"enabled": true,
|
||||
"resync": true
|
||||
"keyboard_name": "Helix rev3 5rows",
|
||||
"dip_switch": {
|
||||
"matrix_grid": [
|
||||
[0, 6],
|
||||
[1, 6],
|
||||
[5, 6],
|
||||
[6, 6]
|
||||
]
|
||||
},
|
||||
"encoder": {
|
||||
"rotary": [
|
||||
{"pin_a": "B6", "pin_b": "B5"}
|
||||
]
|
||||
},
|
||||
"features": {
|
||||
"dip_switch": false,
|
||||
"encoder": true,
|
||||
"oled": true,
|
||||
"rgb_matrix": false
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["F4", "F5", "F6", "F7", "B1", "B3", "B2"],
|
||||
"rows": ["D4", "C6", "D7", "E6", "B4"]
|
||||
},
|
||||
"qmk": {
|
||||
"locking": {
|
||||
"enabled": true,
|
||||
"resync": true
|
||||
}
|
||||
},
|
||||
"rgb_matrix": {
|
||||
"driver": "ws2812",
|
||||
"layout": [
|
||||
{"matrix": [0, 5], "x": 80, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 4], "x": 64, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 3], "x": 48, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 2], "x": 32, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 1], "x": 16, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 0], "x": 0, "y": 0, "flags": 4},
|
||||
{"matrix": [1, 0], "x": 0, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 1], "x": 16, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 2], "x": 32, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 3], "x": 48, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 4], "x": 64, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 5], "x": 80, "y": 16, "flags": 4},
|
||||
{"matrix": [2, 5], "x": 80, "y": 32, "flags": 4},
|
||||
{"matrix": [2, 4], "x": 64, "y": 32, "flags": 4},
|
||||
{"matrix": [2, 3], "x": 48, "y": 32, "flags": 4},
|
||||
{"matrix": [2, 2], "x": 32, "y": 32, "flags": 4},
|
||||
{"matrix": [2, 1], "x": 16, "y": 32, "flags": 4},
|
||||
{"matrix": [2, 0], "x": 0, "y": 32, "flags": 4},
|
||||
{"matrix": [3, 0], "x": 0, "y": 48, "flags": 4},
|
||||
{"matrix": [3, 1], "x": 16, "y": 48, "flags": 4},
|
||||
{"matrix": [3, 2], "x": 32, "y": 48, "flags": 4},
|
||||
{"matrix": [3, 3], "x": 48, "y": 48, "flags": 4},
|
||||
{"matrix": [3, 4], "x": 64, "y": 48, "flags": 4},
|
||||
{"matrix": [3, 5], "x": 80, "y": 48, "flags": 4},
|
||||
{"matrix": [3, 6], "x": 96, "y": 48, "flags": 4},
|
||||
{"matrix": [4, 6], "x": 96, "y": 64, "flags": 4},
|
||||
{"matrix": [4, 5], "x": 80, "y": 64, "flags": 4},
|
||||
{"matrix": [4, 4], "x": 64, "y": 64, "flags": 4},
|
||||
{"matrix": [4, 3], "x": 48, "y": 64, "flags": 4},
|
||||
{"matrix": [4, 2], "x": 32, "y": 64, "flags": 4},
|
||||
{"matrix": [4, 1], "x": 16, "y": 64, "flags": 4},
|
||||
{"matrix": [4, 0], "x": 0, "y": 64, "flags": 4},
|
||||
{"matrix": [5, 5], "x": 144, "y": 0, "flags": 4},
|
||||
{"matrix": [5, 4], "x": 160, "y": 0, "flags": 4},
|
||||
{"matrix": [5, 3], "x": 176, "y": 0, "flags": 4},
|
||||
{"matrix": [5, 2], "x": 192, "y": 0, "flags": 4},
|
||||
{"matrix": [5, 1], "x": 208, "y": 0, "flags": 4},
|
||||
{"matrix": [5, 0], "x": 224, "y": 0, "flags": 4},
|
||||
{"matrix": [6, 0], "x": 224, "y": 16, "flags": 4},
|
||||
{"matrix": [6, 1], "x": 208, "y": 16, "flags": 4},
|
||||
{"matrix": [6, 2], "x": 192, "y": 16, "flags": 4},
|
||||
{"matrix": [6, 3], "x": 176, "y": 16, "flags": 4},
|
||||
{"matrix": [6, 4], "x": 160, "y": 16, "flags": 4},
|
||||
{"matrix": [6, 5], "x": 144, "y": 16, "flags": 4},
|
||||
{"matrix": [7, 5], "x": 144, "y": 32, "flags": 4},
|
||||
{"matrix": [7, 4], "x": 160, "y": 32, "flags": 4},
|
||||
{"matrix": [7, 3], "x": 176, "y": 32, "flags": 4},
|
||||
{"matrix": [7, 2], "x": 192, "y": 32, "flags": 4},
|
||||
{"matrix": [7, 1], "x": 208, "y": 32, "flags": 4},
|
||||
{"matrix": [7, 0], "x": 224, "y": 32, "flags": 4},
|
||||
{"matrix": [8, 0], "x": 224, "y": 48, "flags": 4},
|
||||
{"matrix": [8, 1], "x": 208, "y": 48, "flags": 4},
|
||||
{"matrix": [8, 2], "x": 192, "y": 48, "flags": 4},
|
||||
{"matrix": [8, 3], "x": 176, "y": 48, "flags": 4},
|
||||
{"matrix": [8, 4], "x": 160, "y": 48, "flags": 4},
|
||||
{"matrix": [8, 5], "x": 144, "y": 48, "flags": 4},
|
||||
{"matrix": [8, 6], "x": 128, "y": 48, "flags": 4},
|
||||
{"matrix": [9, 6], "x": 128, "y": 64, "flags": 4},
|
||||
{"matrix": [9, 5], "x": 144, "y": 64, "flags": 4},
|
||||
{"matrix": [9, 4], "x": 160, "y": 64, "flags": 4},
|
||||
{"matrix": [9, 3], "x": 176, "y": 64, "flags": 4},
|
||||
{"matrix": [9, 2], "x": 192, "y": 64, "flags": 4},
|
||||
{"matrix": [9, 1], "x": 208, "y": 64, "flags": 4},
|
||||
{"matrix": [9, 0], "x": 224, "y": 64, "flags": 4}
|
||||
],
|
||||
"max_brightness": 128,
|
||||
"sat_steps": 8,
|
||||
"speed_steps": 10,
|
||||
"split_count": [32, 32],
|
||||
"val_steps": 8,
|
||||
"sleep": true
|
||||
},
|
||||
"rgblight": {
|
||||
"animations": {
|
||||
"rainbow_mood": true,
|
||||
"rainbow_swirl": true
|
||||
},
|
||||
"led_count": 64,
|
||||
"max_brightness": 120,
|
||||
"split_count": [32, 32]
|
||||
},
|
||||
"split": {
|
||||
"handedness": {
|
||||
"matrix_grid": ["D7", "B2"]
|
||||
}
|
||||
},
|
||||
"usb": {
|
||||
"device_version": "0.0.1",
|
||||
"pid": "0x0003"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"matrix": [0, 5], "x": 5, "y": 0},
|
||||
{"matrix": [5, 5], "x": 9, "y": 0},
|
||||
{"matrix": [5, 4], "x": 10, "y": 0},
|
||||
{"matrix": [5, 3], "x": 11, "y": 0},
|
||||
{"matrix": [5, 2], "x": 12, "y": 0},
|
||||
{"matrix": [5, 1], "x": 13, "y": 0},
|
||||
{"matrix": [5, 0], "x": 14, "y": 0},
|
||||
{"matrix": [1, 0], "x": 0, "y": 1},
|
||||
{"matrix": [1, 1], "x": 1, "y": 1},
|
||||
{"matrix": [1, 2], "x": 2, "y": 1},
|
||||
{"matrix": [1, 3], "x": 3, "y": 1},
|
||||
{"matrix": [1, 4], "x": 4, "y": 1},
|
||||
{"matrix": [1, 5], "x": 5, "y": 1},
|
||||
{"matrix": [6, 5], "x": 9, "y": 1},
|
||||
{"matrix": [6, 4], "x": 10, "y": 1},
|
||||
{"matrix": [6, 3], "x": 11, "y": 1},
|
||||
{"matrix": [6, 2], "x": 12, "y": 1},
|
||||
{"matrix": [6, 1], "x": 13, "y": 1},
|
||||
{"matrix": [6, 0], "x": 14, "y": 1},
|
||||
{"matrix": [2, 0], "x": 0, "y": 2},
|
||||
{"matrix": [2, 1], "x": 1, "y": 2},
|
||||
{"matrix": [2, 2], "x": 2, "y": 2},
|
||||
{"matrix": [2, 3], "x": 3, "y": 2},
|
||||
{"matrix": [2, 4], "x": 4, "y": 2},
|
||||
{"matrix": [2, 5], "x": 5, "y": 2},
|
||||
{"matrix": [7, 5], "x": 9, "y": 2},
|
||||
{"matrix": [7, 4], "x": 10, "y": 2},
|
||||
{"matrix": [7, 3], "x": 11, "y": 2},
|
||||
{"matrix": [7, 2], "x": 12, "y": 2},
|
||||
{"matrix": [7, 1], "x": 13, "y": 2},
|
||||
{"matrix": [7, 0], "x": 14, "y": 2},
|
||||
{"matrix": [3, 0], "x": 0, "y": 3},
|
||||
{"matrix": [3, 1], "x": 1, "y": 3},
|
||||
{"matrix": [3, 2], "x": 2, "y": 3},
|
||||
{"matrix": [3, 3], "x": 3, "y": 3},
|
||||
{"matrix": [3, 4], "x": 4, "y": 3},
|
||||
{"matrix": [3, 5], "x": 5, "y": 3},
|
||||
{"matrix": [3, 6], "x": 6, "y": 3},
|
||||
{"matrix": [8, 6], "x": 8, "y": 3},
|
||||
{"matrix": [8, 5], "x": 9, "y": 3},
|
||||
{"matrix": [8, 4], "x": 10, "y": 3},
|
||||
{"matrix": [8, 3], "x": 11, "y": 3},
|
||||
{"matrix": [8, 2], "x": 12, "y": 3},
|
||||
{"matrix": [8, 1], "x": 13, "y": 3},
|
||||
{"matrix": [8, 0], "x": 14, "y": 3},
|
||||
{"matrix": [4, 0], "x": 0, "y": 4},
|
||||
{"matrix": [4, 1], "x": 1, "y": 4},
|
||||
{"matrix": [4, 2], "x": 2, "y": 4},
|
||||
{"matrix": [4, 3], "x": 3, "y": 4},
|
||||
{"matrix": [4, 4], "x": 4, "y": 4},
|
||||
{"matrix": [4, 5], "x": 5, "y": 4},
|
||||
{"matrix": [4, 6], "x": 6, "y": 4},
|
||||
{"matrix": [9, 6], "x": 8, "y": 4},
|
||||
{"matrix": [9, 5], "x": 9, "y": 4},
|
||||
{"matrix": [9, 4], "x": 10, "y": 4},
|
||||
{"matrix": [9, 3], "x": 11, "y": 4},
|
||||
{"matrix": [9, 2], "x": 12, "y": 4},
|
||||
{"matrix": [9, 1], "x": 13, "y": 4},
|
||||
{"matrix": [9, 0], "x": 14, "y": 4}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"rgb_matrix": {
|
||||
"driver": "ws2812",
|
||||
"sat_steps": 8,
|
||||
"val_steps": 8,
|
||||
"speed_steps": 10,
|
||||
"layout": [
|
||||
{"matrix": [0, 5], "x": 80, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 4], "x": 64, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 3], "x": 48, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 2], "x": 32, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 1], "x": 16, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 0], "x": 0, "y": 0, "flags": 4},
|
||||
{"matrix": [1, 0], "x": 0, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 1], "x": 16, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 2], "x": 32, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 3], "x": 48, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 4], "x": 64, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 5], "x": 80, "y": 16, "flags": 4},
|
||||
{"matrix": [2, 5], "x": 80, "y": 32, "flags": 4},
|
||||
{"matrix": [2, 4], "x": 64, "y": 32, "flags": 4},
|
||||
{"matrix": [2, 3], "x": 48, "y": 32, "flags": 4},
|
||||
{"matrix": [2, 2], "x": 32, "y": 32, "flags": 4},
|
||||
{"matrix": [2, 1], "x": 16, "y": 32, "flags": 4},
|
||||
{"matrix": [2, 0], "x": 0, "y": 32, "flags": 4},
|
||||
{"matrix": [3, 0], "x": 0, "y": 48, "flags": 4},
|
||||
{"matrix": [3, 1], "x": 16, "y": 48, "flags": 4},
|
||||
{"matrix": [3, 2], "x": 32, "y": 48, "flags": 4},
|
||||
{"matrix": [3, 3], "x": 48, "y": 48, "flags": 4},
|
||||
{"matrix": [3, 4], "x": 64, "y": 48, "flags": 4},
|
||||
{"matrix": [3, 5], "x": 80, "y": 48, "flags": 4},
|
||||
{"matrix": [3, 6], "x": 96, "y": 48, "flags": 4},
|
||||
{"matrix": [4, 6], "x": 96, "y": 64, "flags": 4},
|
||||
{"matrix": [4, 5], "x": 80, "y": 64, "flags": 4},
|
||||
{"matrix": [4, 4], "x": 64, "y": 64, "flags": 4},
|
||||
{"matrix": [4, 3], "x": 48, "y": 64, "flags": 4},
|
||||
{"matrix": [4, 2], "x": 32, "y": 64, "flags": 4},
|
||||
{"matrix": [4, 1], "x": 16, "y": 64, "flags": 4},
|
||||
{"matrix": [4, 0], "x": 0, "y": 64, "flags": 4},
|
||||
{"matrix": [5, 5], "x": 144, "y": 0, "flags": 4},
|
||||
{"matrix": [5, 4], "x": 160, "y": 0, "flags": 4},
|
||||
{"matrix": [5, 3], "x": 176, "y": 0, "flags": 4},
|
||||
{"matrix": [5, 2], "x": 192, "y": 0, "flags": 4},
|
||||
{"matrix": [5, 1], "x": 208, "y": 0, "flags": 4},
|
||||
{"matrix": [5, 0], "x": 224, "y": 0, "flags": 4},
|
||||
{"matrix": [6, 0], "x": 224, "y": 16, "flags": 4},
|
||||
{"matrix": [6, 1], "x": 208, "y": 16, "flags": 4},
|
||||
{"matrix": [6, 2], "x": 192, "y": 16, "flags": 4},
|
||||
{"matrix": [6, 3], "x": 176, "y": 16, "flags": 4},
|
||||
{"matrix": [6, 4], "x": 160, "y": 16, "flags": 4},
|
||||
{"matrix": [6, 5], "x": 144, "y": 16, "flags": 4},
|
||||
{"matrix": [7, 5], "x": 144, "y": 32, "flags": 4},
|
||||
{"matrix": [7, 4], "x": 160, "y": 32, "flags": 4},
|
||||
{"matrix": [7, 3], "x": 176, "y": 32, "flags": 4},
|
||||
{"matrix": [7, 2], "x": 192, "y": 32, "flags": 4},
|
||||
{"matrix": [7, 1], "x": 208, "y": 32, "flags": 4},
|
||||
{"matrix": [7, 0], "x": 224, "y": 32, "flags": 4},
|
||||
{"matrix": [8, 0], "x": 224, "y": 48, "flags": 4},
|
||||
{"matrix": [8, 1], "x": 208, "y": 48, "flags": 4},
|
||||
{"matrix": [8, 2], "x": 192, "y": 48, "flags": 4},
|
||||
{"matrix": [8, 3], "x": 176, "y": 48, "flags": 4},
|
||||
{"matrix": [8, 4], "x": 160, "y": 48, "flags": 4},
|
||||
{"matrix": [8, 5], "x": 144, "y": 48, "flags": 4},
|
||||
{"matrix": [8, 6], "x": 128, "y": 48, "flags": 4},
|
||||
{"matrix": [9, 6], "x": 128, "y": 64, "flags": 4},
|
||||
{"matrix": [9, 5], "x": 144, "y": 64, "flags": 4},
|
||||
{"matrix": [9, 4], "x": 160, "y": 64, "flags": 4},
|
||||
{"matrix": [9, 3], "x": 176, "y": 64, "flags": 4},
|
||||
{"matrix": [9, 2], "x": 192, "y": 64, "flags": 4},
|
||||
{"matrix": [9, 1], "x": 208, "y": 64, "flags": 4},
|
||||
{"matrix": [9, 0], "x": 224, "y": 64, "flags": 4}
|
||||
],
|
||||
"max_brightness": 128,
|
||||
"split_count": [32, 32],
|
||||
"sleep": true
|
||||
},
|
||||
"dip_switch": {
|
||||
"matrix_grid": [ [0,6], [1,6], [5,6], [6,6] ]
|
||||
},
|
||||
"encoder": {
|
||||
"rotary": [
|
||||
{"pin_a": "B6", "pin_b": "B5"}
|
||||
]
|
||||
},
|
||||
"split": {
|
||||
"enabled": true,
|
||||
"soft_serial_pin": "D2"
|
||||
},
|
||||
"ws2812": {
|
||||
"pin": "D3"
|
||||
},
|
||||
"rgblight": {
|
||||
"led_count": 64,
|
||||
"max_brightness": 120,
|
||||
"split_count": [32, 32],
|
||||
"animations": {
|
||||
"rainbow_mood": true,
|
||||
"rainbow_swirl": true
|
||||
}
|
||||
},
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"matrix": [0, 5], "x": 5, "y": 0},
|
||||
|
||||
{"matrix": [5, 5], "x": 9, "y": 0},
|
||||
{"matrix": [5, 4], "x": 10, "y": 0},
|
||||
{"matrix": [5, 3], "x": 11, "y": 0},
|
||||
{"matrix": [5, 2], "x": 12, "y": 0},
|
||||
{"matrix": [5, 1], "x": 13, "y": 0},
|
||||
{"matrix": [5, 0], "x": 14, "y": 0},
|
||||
|
||||
{"matrix": [1, 0], "x": 0, "y": 1},
|
||||
{"matrix": [1, 1], "x": 1, "y": 1},
|
||||
{"matrix": [1, 2], "x": 2, "y": 1},
|
||||
{"matrix": [1, 3], "x": 3, "y": 1},
|
||||
{"matrix": [1, 4], "x": 4, "y": 1},
|
||||
{"matrix": [1, 5], "x": 5, "y": 1},
|
||||
|
||||
{"matrix": [6, 5], "x": 9, "y": 1},
|
||||
{"matrix": [6, 4], "x": 10, "y": 1},
|
||||
{"matrix": [6, 3], "x": 11, "y": 1},
|
||||
{"matrix": [6, 2], "x": 12, "y": 1},
|
||||
{"matrix": [6, 1], "x": 13, "y": 1},
|
||||
{"matrix": [6, 0], "x": 14, "y": 1},
|
||||
|
||||
{"matrix": [2, 0], "x": 0, "y": 2},
|
||||
{"matrix": [2, 1], "x": 1, "y": 2},
|
||||
{"matrix": [2, 2], "x": 2, "y": 2},
|
||||
{"matrix": [2, 3], "x": 3, "y": 2},
|
||||
{"matrix": [2, 4], "x": 4, "y": 2},
|
||||
{"matrix": [2, 5], "x": 5, "y": 2},
|
||||
|
||||
{"matrix": [7, 5], "x": 9, "y": 2},
|
||||
{"matrix": [7, 4], "x": 10, "y": 2},
|
||||
{"matrix": [7, 3], "x": 11, "y": 2},
|
||||
{"matrix": [7, 2], "x": 12, "y": 2},
|
||||
{"matrix": [7, 1], "x": 13, "y": 2},
|
||||
{"matrix": [7, 0], "x": 14, "y": 2},
|
||||
|
||||
{"matrix": [3, 0], "x": 0, "y": 3},
|
||||
{"matrix": [3, 1], "x": 1, "y": 3},
|
||||
{"matrix": [3, 2], "x": 2, "y": 3},
|
||||
{"matrix": [3, 3], "x": 3, "y": 3},
|
||||
{"matrix": [3, 4], "x": 4, "y": 3},
|
||||
{"matrix": [3, 5], "x": 5, "y": 3},
|
||||
{"matrix": [3, 6], "x": 6, "y": 3},
|
||||
|
||||
{"matrix": [8, 6], "x": 8, "y": 3},
|
||||
{"matrix": [8, 5], "x": 9, "y": 3},
|
||||
{"matrix": [8, 4], "x": 10, "y": 3},
|
||||
{"matrix": [8, 3], "x": 11, "y": 3},
|
||||
{"matrix": [8, 2], "x": 12, "y": 3},
|
||||
{"matrix": [8, 1], "x": 13, "y": 3},
|
||||
{"matrix": [8, 0], "x": 14, "y": 3},
|
||||
|
||||
{"matrix": [4, 0], "x": 0, "y": 4},
|
||||
{"matrix": [4, 1], "x": 1, "y": 4},
|
||||
{"matrix": [4, 2], "x": 2, "y": 4},
|
||||
{"matrix": [4, 3], "x": 3, "y": 4},
|
||||
{"matrix": [4, 4], "x": 4, "y": 4},
|
||||
{"matrix": [4, 5], "x": 5, "y": 4},
|
||||
{"matrix": [4, 6], "x": 6, "y": 4},
|
||||
|
||||
{"matrix": [9, 6], "x": 8, "y": 4},
|
||||
{"matrix": [9, 5], "x": 9, "y": 4},
|
||||
{"matrix": [9, 4], "x": 10, "y": 4},
|
||||
{"matrix": [9, 3], "x": 11, "y": 4},
|
||||
{"matrix": [9, 2], "x": 12, "y": 4},
|
||||
{"matrix": [9, 1], "x": 13, "y": 4},
|
||||
{"matrix": [9, 0], "x": 14, "y": 4}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,182 +0,0 @@
|
||||
/* Copyright 2020 yushakobo
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
|
||||
// Defines names for use in layer keycodes and the keymap
|
||||
enum layer_names {
|
||||
_QWERTY = 0,
|
||||
_LOWER,
|
||||
_RAISE,
|
||||
_ADJUST
|
||||
};
|
||||
|
||||
// Defines the keycodes used by our macros in process_record_user
|
||||
enum custom_keycodes {
|
||||
EISU = SAFE_RANGE,
|
||||
KANA,
|
||||
ADJUST,
|
||||
RGBRST
|
||||
};
|
||||
|
||||
#define LOWER MO(_LOWER)
|
||||
#define RAISE MO(_RAISE)
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Qwerty
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Ctrl | A | S | D | F | G | | H | J | K | L | ; | ' |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Shift| Z | X | C | V | B | [ | ] | N | M | , | . | / |Enter |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* |Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_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_DEL,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, KC_RBRC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
|
||||
ADJUST, KC_ESC, KC_LALT, KC_LGUI, EISU, LOWER, KC_SPC, KC_SPC, RAISE, KANA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
|
||||
),
|
||||
/* Lower
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | | | | | | | | | | | | | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | F1 | F2 | F3 | F4 | F5 | | F6 | _ | + | { | } | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | CAPS | F7 | F8 | F9 | F10 | F11 | ( | ) | F12 | | | Home | End | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | Next | Vol- | Vol+ | Play |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_LOWER] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
|
||||
KC_CAPS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_LPRN, KC_RPRN, KC_F12, _______, _______, KC_HOME, KC_END, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
|
||||
),
|
||||
|
||||
/* Raise
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | | | | | | | | | | | | | Bksp |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | F1 | F2 | F3 | F4 | F5 | | F6 | - | = | [ | ] | \ |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | CAPS | F7 | F8 | F9 | F10 | F11 | | | F12 | | |PageDn|PageUp| |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | Next | Vol- | Vol+ | Play |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_RAISE] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BSPC,
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||
KC_CAPS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______, KC_F12, _______, _______, KC_PGDN, KC_PGUP, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
|
||||
),
|
||||
|
||||
/* Adjust (Lower + Raise)
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | Reset|RGBRST|EEPRST| | | | | | | | | Del |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | | | | | Mac | | Win | | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | |RGB ON| HUE+ | SAT+ | VAL+ |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | MODE | HUE- | SAT- | VAL- |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_ADJUST] = LAYOUT(
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
|
||||
_______, QK_BOOT, RGBRST, EE_CLR, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
|
||||
_______, _______, _______, _______, _______, AG_NORM, AG_SWAP, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, UG_TOGG, UG_HUEU, UG_SATU, UG_VALU,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, UG_NEXT, UG_HUED, UG_SATD, UG_VALD
|
||||
)
|
||||
|
||||
};
|
||||
|
||||
#if defined(ENCODER_MAP_ENABLE)
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
||||
[_QWERTY] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||
[_LOWER] = { ENCODER_CCW_CW(KC_PGUP, KC_PGDN), ENCODER_CCW_CW(KC_HOME, KC_END) },
|
||||
[_RAISE] = { ENCODER_CCW_CW(UG_VALD, UG_VALU), ENCODER_CCW_CW(UG_SPDD, UG_SPDU) },
|
||||
[_ADJUST] = { ENCODER_CCW_CW(UG_PREV, UG_NEXT), ENCODER_CCW_CW(KC_RIGHT, KC_LEFT) },
|
||||
};
|
||||
#endif
|
||||
|
||||
layer_state_t layer_state_set_user(layer_state_t state) {
|
||||
return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
|
||||
}
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case EISU:
|
||||
if (record->event.pressed) {
|
||||
if (is_mac_mode()) {
|
||||
register_code(KC_LNG2);
|
||||
}else{
|
||||
tap_code16(LALT(KC_GRAVE));
|
||||
}
|
||||
} else {
|
||||
unregister_code(KC_LNG2);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case KANA:
|
||||
if (record->event.pressed) {
|
||||
if (is_mac_mode()) {
|
||||
register_code(KC_LNG1);
|
||||
}else{
|
||||
tap_code16(LALT(KC_GRAVE));
|
||||
}
|
||||
} else {
|
||||
unregister_code(KC_LNG1);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case ADJUST:
|
||||
if (record->event.pressed) {
|
||||
layer_on(_LOWER);
|
||||
layer_on(_RAISE);
|
||||
} else {
|
||||
layer_off(_LOWER);
|
||||
layer_off(_RAISE);
|
||||
}
|
||||
break;
|
||||
case RGBRST:
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
if (record->event.pressed) {
|
||||
eeconfig_update_rgblight_default();
|
||||
rgblight_enable();
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
63
keyboards/helix/rev3_5rows/keymaps/default/keymap.json
Normal file
63
keyboards/helix/rev3_5rows/keymaps/default/keymap.json
Normal file
@ -0,0 +1,63 @@
|
||||
{
|
||||
"keyboard": "helix/rev3_5rows",
|
||||
"keymap": "default",
|
||||
"layout": "LAYOUT",
|
||||
"config": {
|
||||
"features": {
|
||||
"tri_layer": true,
|
||||
"encoder_map": true
|
||||
}
|
||||
},
|
||||
"encoders": [
|
||||
[{"ccw": "KC_MS_WH_UP", "cw": "KC_MS_WH_DOWN"} ,{"ccw": "KC_VOLD", "cw": "KC_VOLU"}],
|
||||
[{"ccw": "KC_TRNS", "cw": "KC_TRNS"} ,{"ccw": "KC_TRNS", "cw": "KC_TRNS"}],
|
||||
[{"ccw": "KC_TRNS", "cw": "KC_TRNS"} ,{"ccw": "KC_TRNS", "cw": "KC_TRNS"}],
|
||||
[{"ccw": "KC_TRNS", "cw": "KC_TRNS"} ,{"ccw": "KC_TRNS", "cw": "KC_TRNS"}],
|
||||
[{"ccw": "KC_TRNS", "cw": "KC_TRNS"} ,{"ccw": "KC_TRNS", "cw": "KC_TRNS"}],
|
||||
[{"ccw": "KC_TRNS", "cw": "KC_TRNS"} ,{"ccw": "KC_TRNS", "cw": "KC_TRNS"}]
|
||||
],
|
||||
"layers": [
|
||||
[
|
||||
"KC_GRV", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_DEL",
|
||||
"KC_TAB", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_BSPC",
|
||||
"KC_LCTL", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_QUOT",
|
||||
"KC_LSFT", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "_______", "_______", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_ENT",
|
||||
"MO(5)", "KC_ESC", "KC_LALT", "KC_LGUI", "EISU", "TL_LOWR", "KC_SPC", "KC_SPC", "TL_UPPR", "KANA", "KC_LEFT", "KC_DOWN", "KC_UP", "KC_RGHT"
|
||||
],
|
||||
[
|
||||
"KC_GRV", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_DEL",
|
||||
"KC_TAB", "KC_Q", "KC_W", "KC_F", "KC_P", "KC_G", "KC_J", "KC_L", "KC_U", "KC_Y", "KC_SCLN", "KC_BSPC",
|
||||
"KC_LCTL", "KC_A", "KC_R", "KC_S", "KC_T", "KC_D", "KC_H", "KC_N", "KC_E", "KC_I", "KC_O", "KC_QUOT",
|
||||
"KC_LSFT", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "_______", "_______", "KC_K", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_ENT",
|
||||
"MO(5)", "KC_ESC", "KC_LALT", "KC_LGUI", "EISU", "TL_LOWR", "KC_SPC", "KC_SPC", "TL_UPPR", "KANA", "KC_LEFT", "KC_DOWN", "KC_UP", "KC_RGHT"
|
||||
],
|
||||
[
|
||||
"KC_GRV", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_BSPC",
|
||||
"KC_TAB", "KC_QUOT", "KC_COMM", "KC_DOT", "KC_P", "KC_Y", "KC_F", "KC_G", "KC_C", "KC_R", "KC_L", "KC_BSPC",
|
||||
"KC_LCTL", "KC_A", "KC_O", "KC_E", "KC_U", "KC_I", "KC_D", "KC_H", "KC_T", "KC_N", "KC_S", "KC_SLSH",
|
||||
"KC_LSFT", "KC_SCLN", "KC_Q", "KC_J", "KC_K", "KC_X", "_______", "_______", "KC_B", "KC_M", "KC_W", "KC_V", "KC_Z", "KC_ENT",
|
||||
"MO(5)", "KC_ESC", "KC_LALT", "KC_LGUI", "EISU", "TL_LOWR", "KC_SPC", "KC_SPC", "TL_UPPR", "KANA", "KC_LEFT", "KC_DOWN", "KC_UP", "KC_RGHT"
|
||||
],
|
||||
[
|
||||
"KC_TILD", "KC_EXLM", "KC_AT", "KC_HASH", "KC_DLR", "KC_PERC", "KC_CIRC", "KC_AMPR", "KC_ASTR", "KC_LPRN", "KC_RPRN", "_______",
|
||||
"KC_TILD", "KC_EXLM", "KC_AT", "KC_HASH", "KC_DLR", "KC_PERC", "KC_CIRC", "KC_AMPR", "KC_ASTR", "KC_LPRN", "KC_RPRN", "KC_DEL",
|
||||
"_______", "KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_F5", "KC_F6", "KC_UNDS", "KC_PLUS", "KC_LCBR", "KC_RCBR", "KC_PIPE",
|
||||
"_______", "KC_F7", "KC_F8", "KC_F9", "KC_F10", "KC_F11", "_______", "_______", "KC_F12", "_______", "KC_PSCR", "KC_HOME", "KC_END", "_______",
|
||||
"_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "KC_MNXT", "KC_VOLD", "KC_VOLU", "KC_MPLY"
|
||||
],
|
||||
[
|
||||
"KC_GRV", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_BSPC",
|
||||
"KC_GRV", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_DEL",
|
||||
"_______", "KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_F5", "KC_F6", "KC_MINS", "KC_EQL", "KC_LBRC", "KC_RBRC", "KC_BSLS",
|
||||
"_______", "KC_F7", "KC_F8", "KC_F9", "KC_F10", "KC_F11", "_______", "_______", "KC_F12", "_______", "KC_PSCR", "KC_PGDN", "KC_PGUP", "_______",
|
||||
"_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "KC_MNXT", "KC_VOLD", "KC_VOLU", "KC_MPLY"
|
||||
],
|
||||
[
|
||||
"KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_F5", "KC_F6", "KC_F7", "KC_F8", "KC_F9", "KC_F10", "KC_F11", "KC_F12",
|
||||
"_______", "QK_BOOT", "RGBRST", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______",
|
||||
"_______", "AU_ON", "AU_OFF", "MU_TOGG", "MU_NEXT", "AG_NORM", "AG_SWAP", "DF(0)", "DF(1)", "DF(2)", "_______", "_______",
|
||||
"_______", "CK_TOGG", "CK_RST", "CK_UP", "CK_DOWN", "_______", "_______", "_______", "_______", "_______", "RGB_TOG", "RGB_HUI", "RGB_SAI", "RGB_VAI",
|
||||
"_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "RGB_MOD", "RGB_HUD", "RGB_SAD", "RGB_VAD"
|
||||
]
|
||||
]
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user