Compare commits
30 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
afd5cda4a0 | ||
|
|
30c3f3b2bd | ||
|
|
6395853148 | ||
|
|
1586548b4f | ||
|
|
29830f306f | ||
|
|
af55ef8418 | ||
|
|
374ed67e87 | ||
|
|
f3cbb7bd6e | ||
|
|
5eb8f3f6b5 | ||
|
|
b13162f7fd | ||
|
|
df33618b26 | ||
|
|
fdeec29636 | ||
|
|
40bf3a2ce9 | ||
|
|
3054c7bda0 | ||
|
|
584a7a0395 | ||
|
|
8181c8dc97 | ||
|
|
06f1901783 | ||
|
|
e59f331268 | ||
|
|
9eedaa8802 | ||
|
|
eeda99bf2e | ||
|
|
20e134e681 | ||
|
|
398204b2a0 | ||
|
|
5ec327ad99 | ||
|
|
6172e55489 | ||
|
|
3ec4a00bfc | ||
|
|
72bd17f290 | ||
|
|
11439c4326 | ||
|
|
ff5fcedb10 | ||
|
|
2527fe879f | ||
|
|
45591ee443 |
@@ -143,6 +143,11 @@ If you define these options you will enable the associated feature, which may in
|
||||
* Breaks any Tap Toggle functionality (`TT` or the One Shot Tap Toggle)
|
||||
* `#define LEADER_TIMEOUT 300`
|
||||
* how long before the leader key times out
|
||||
* If you're having issues finishing the sequence before it times out, you may need to increase the timeout setting. Or you may want to enable the `LEADER_PER_KEY_TIMING` option, which resets the timeout after each key is tapped.
|
||||
* `#define LEADER_PER_KEY_TIMING`
|
||||
* sets the timer for leader key chords to run on each key press rather than overall
|
||||
* `#define LEADER_KEY_STRICT_KEY_PROCESSING`
|
||||
* Disables keycode filtering for Mod-Tap and Layer-Tap keycodes. Eg, if you enable this, you would need to specify `MT(MOD_CTL, KC_A)` if you want to use `KC_A`.
|
||||
* `#define ONESHOT_TIMEOUT 300`
|
||||
* how long before oneshot times out
|
||||
* `#define ONESHOT_TAP_TOGGLE 2`
|
||||
@@ -194,7 +199,7 @@ Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in yo
|
||||
|
||||
* `#define SPLIT_HAND_PIN B7`
|
||||
* For using high/low pin to determine handedness, low = right hand, high = left hand. Replace 'B7' with the pin you are using. This is optional and you can still use the EEHANDS method or MASTER_LEFT / MASTER_RIGHT defines like the stock Let's Split uses.
|
||||
|
||||
|
||||
* `#define USE_I2C`
|
||||
* For using I2C instead of Serial (defaults to serial)
|
||||
|
||||
@@ -252,6 +257,8 @@ Use these to enable or disable building certain features. The more you have enab
|
||||
* Enable the audio subsystem.
|
||||
* `RGBLIGHT_ENABLE`
|
||||
* Enable keyboard underlight functionality
|
||||
* `LEADER_ENABLE`
|
||||
* Enable leader key chording
|
||||
* `MIDI_ENABLE`
|
||||
* MIDI controls
|
||||
* `UNICODE_ENABLE`
|
||||
|
||||
@@ -5,10 +5,11 @@ If you've ever used Vim, you know what a Leader key is. If not, you're about to
|
||||
That's what `KC_LEAD` does. Here's an example:
|
||||
|
||||
1. Pick a key on your keyboard you want to use as the Leader key. Assign it the keycode `KC_LEAD`. This key would be dedicated just for this -- it's a single action key, can't be used for anything else.
|
||||
2. Include the line `#define LEADER_TIMEOUT 300` in your config.h. The 300 there is 300ms -- that's how long you have for the sequence of keys following the leader. You can tweak this value for comfort, of course.
|
||||
3. Within your `matrix_scan_user` function, do something like this:
|
||||
2. Include the line `#define LEADER_TIMEOUT 300` in your `config.h`. This sets the timeout for the `KC_LEAD` key. Specifically, when you press the `KC_LEAD` key, you only have a certain amount of time to complete the Leader Key sequence. The `300` here sets that to 300ms, and you can increase this value to give you more time to hit the sequence. But any keys pressed during this timeout are intercepted and not sent, so you may want to keep this value low. .
|
||||
* By default, this timeout is how long after pressing `KC_LEAD` to complete your entire sequence. This may be very low for some people. So you may want to increase this timeout. Optionally, you may want to enable the `LEADER_PER_KEY_TIMING` option, which resets the timeout after each key is tapped. This allows you to maintain a low value here, but still be able to use the longer sequences. To enable this option, add `#define LEADER_PER_KEY_TIMING` to your `config.h`.
|
||||
3. Within your `matrix_scan_user` function, add something like this:
|
||||
|
||||
```
|
||||
```c
|
||||
LEADER_EXTERNS();
|
||||
|
||||
void matrix_scan_user(void) {
|
||||
@@ -44,6 +45,102 @@ Each of these accepts one or more keycodes as arguments. This is an important po
|
||||
|
||||
To add support for Leader Key you simply need to add a single line to your keymap's `rules.mk`:
|
||||
|
||||
```
|
||||
```make
|
||||
LEADER_ENABLE = yes
|
||||
```
|
||||
|
||||
## Per Key Timing on Leader keys
|
||||
|
||||
Rather than relying on an incredibly high timeout for long leader key strings or those of us without 200wpm typing skills, we can enable per key timing to ensure that each key pressed provides us with more time to finish our stroke. This is incredibly helpful with leader key emulation of tap dance (read: multiple taps of the same key like C, C, C).
|
||||
|
||||
In order to enable this, place this in your `config.h`:
|
||||
```c
|
||||
#define LEADER_PER_KEY_TIMING
|
||||
```
|
||||
|
||||
After this, it's recommended that you lower your `LEADER_TIMEOUT` to something less that 300ms.
|
||||
|
||||
```c
|
||||
#define LEADER_TIMEOUT 250
|
||||
```
|
||||
|
||||
Now, something like this won't seem impossible to do without a 1000MS leader key timeout:
|
||||
|
||||
```c
|
||||
SEQ_THREE_KEYS(KC_C, KC_C, KC_C) {
|
||||
SEND_STRING("Per key timing is great!!!");
|
||||
}
|
||||
```
|
||||
|
||||
## Strict Key Processing
|
||||
|
||||
By default, the Leader Key feature will filter the keycode out of [`Mod-Tap`](feature_advanced_keycodes.md#mod-tap) and [`Layer Tap`](feature_advanced_keycodes.md#switching-and-toggling-layers) functions when checking for the Leader sequences. That means if you're using `LT(3, KC_A)`, it will pick this up as `KC_A` for the sequence, rather than `LT(3, KC_A)`, giving a more expected behavior for newer users.
|
||||
|
||||
While, this may be fine for most, if you want to specify the whole keycode (eg, `LT(3, KC_A)` from the example above) in the sequence, you can enable this by added `#define LEADER_KEY_STRICT_KEY_PROCESSING` to your `config.h` file. This well then disable the filtering, and you'll need to specify the whole keycode.
|
||||
|
||||
## Customization
|
||||
|
||||
The Leader Key feature has some additional customization to how the Leader Key feature works. It has two functions that can be called at certain parts of the process. Namely `leader_start()` and `leader_end()`.
|
||||
|
||||
The `leader_start()` function is called when you tap the `KC_LEAD` key, and the `leader_end()` function is called when either the leader sequence is completed, or the leader timeout is hit.
|
||||
|
||||
You can add these functions to your code (`keymap.c` usually) to add feedback to the Leader sequences (such as beeping or playing music).
|
||||
|
||||
```c
|
||||
void leader_start(void) {
|
||||
// sequence started
|
||||
}
|
||||
|
||||
void leader_end(void) {
|
||||
// sequence ended (no success/failuer detection)
|
||||
}
|
||||
```
|
||||
|
||||
### Example
|
||||
|
||||
This example will play the Mario "One Up" sound when you hit `KC_LEAD` to start the Leader Sequence, and will play "All Star" if it completes successfully or "Rick Roll" you if it fails.
|
||||
|
||||
```c
|
||||
bool did_leader_succeed;
|
||||
#ifdef AUDIO_ENABLE
|
||||
float leader_start[][2] = SONG(ONE_UP_SOUND );
|
||||
float leader_succeed[][2] = SONG(ALL_STAR);
|
||||
float leader_fail[][2] = SONG(RICK_ROLL);
|
||||
#endif
|
||||
LEADER_EXTERNS();
|
||||
|
||||
void matrix_scan_user(void) {
|
||||
LEADER_DICTIONARY() {
|
||||
did_leader_succeed = leading = false;
|
||||
|
||||
SEQ_ONE_KEY(KC_E) {
|
||||
// Anything you can do in a macro.
|
||||
SEND_STRING(SS_LCTRL(SS_LSFT("t")));
|
||||
did_leader_succeed = true;
|
||||
} else
|
||||
SEQ_TWO_KEYS(KC_E, KC_D) {
|
||||
SEND_STRING(SS_LGUI("r")"cmd"SS_TAP(KC_ENTER)SS_LCTRL("c"));
|
||||
did_leader_succeed = true;
|
||||
}
|
||||
leader_end();
|
||||
}
|
||||
}
|
||||
|
||||
void leader_start(void) {
|
||||
#ifdef AUDIO_ENABLE
|
||||
PLAY_SONG(leader_start);
|
||||
#endif
|
||||
}
|
||||
|
||||
void leader_end(void) {
|
||||
if (did_leader_succeed) {
|
||||
#ifdef AUDIO_ENABLE
|
||||
PLAY_SONG(leader_succeed);
|
||||
#endif
|
||||
} else {
|
||||
#ifdef AUDIO_ENABLE
|
||||
PLAY_SONG(leader_fail);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
@@ -1,28 +1,28 @@
|
||||
# Unicode Support
|
||||
|
||||
There are three Unicode keymap definition method available in QMK:
|
||||
There are three Unicode keymap definition methods available in QMK:
|
||||
|
||||
## UNICODE_ENABLE
|
||||
|
||||
Supports Unicode input up to 0xFFFF. The keycode function is `UC(n)` in keymap file, where *n* is a 4 digit hexadecimal.
|
||||
Supports Unicode up to `0xFFFF`. The keycode function is `UC(n)` in the keymap file, where _n_ is a 4 digit hexadecimal number.
|
||||
|
||||
## UNICODEMAP_ENABLE
|
||||
|
||||
Supports Unicode up to 0xFFFFFFFF. You need to maintain a separate mapping table `const uint32_t PROGMEM unicode_map[] = {...}` in your keymap file. The keycode function is `X(n)` where *n* is the array index of the mapping table.
|
||||
Supports Unicode up to `0x10FFFF` (all possible code points). You need to maintain a separate mapping table `const uint32_t PROGMEM unicode_map[] = {...}` in your keymap file. The keycode function is `X(n)`, where _n_ is an array index into the mapping table.
|
||||
|
||||
And you may want to have an enum to make reference easier. So you'd want to add something like this to your keymap:
|
||||
|
||||
```c
|
||||
enum unicode_name {
|
||||
BANG, // ‽
|
||||
IRONY, // ⸮
|
||||
SNEK // snke 🐍
|
||||
enum unicode_names {
|
||||
BANG,
|
||||
IRONY,
|
||||
SNEK,
|
||||
};
|
||||
|
||||
const uint32_t PROGMEM unicode_map[] = {
|
||||
[BANG] = 0x0203D, // ‽
|
||||
[IRONY] = 0x02E2E, // ⸮
|
||||
[SNEK] = 0x1F40D // snke 🐍
|
||||
[BANG] = 0x203D, // ‽
|
||||
[IRONY] = 0x2E2E, // ⸮
|
||||
[SNEK] = 0x1F40D, // 🐍
|
||||
}:
|
||||
```
|
||||
|
||||
@@ -30,7 +30,7 @@ Make sure that the order for both matches.
|
||||
|
||||
## UCIS_ENABLE
|
||||
|
||||
Supports Unicode up to 0xFFFFFFFF. As with `UNICODE_MAP`, you may want to maintain a mapping table in your keymap file. However, there is no keycodes for this feature, you will have to add a keycode or function to call `qk_ucis_start()`. Once you've run that, you can just type the text for your unicode, and then hit space or enter to complete it, or ESC to cancel it. And if it matches an entry in your table, it will automatically "backspace" the trigger word (from your table) and then will input the unicode sequence.
|
||||
Supports Unicode up to `0x10FFFF` (all possible code points). As with `UNICODEMAP`, you may want to maintain a mapping table in your keymap file. However, there are no built-in keycodes for this feature — you will have to add a keycode or function that calls `qk_ucis_start()`. Once it's been called, you can type the mnemonic for your character, then hit Space or Enter to complete it or Esc to cancel. If the mnemonic matches an entry in your table, the typed text will automatically be erased and the corresponding Unicode sequence inserted.
|
||||
|
||||
For instance, you would need to have a table like this in your keymap:
|
||||
|
||||
@@ -53,42 +53,103 @@ There are several functions that you can add to your keymap to customize the fun
|
||||
* `void qk_ucis_success(uint8_t symbol_index)` - This runs when the unicode input has matched something, and has completed. Default doesn't do anything.
|
||||
* `void qk_ucis_symbol_fallback (void)` - This runs if the input text doesn't match anything. The default function falls back to trying that input as a unicode code.
|
||||
|
||||
The default code for these are:
|
||||
You can find the default implementations of these functions in [`process_ucis.c`](https://github.com/qmk/qmk_firmware/blob/master/quantum/process_keycode/process_ucis.c).
|
||||
|
||||
## Input Modes
|
||||
|
||||
Unicode input in QMK works by inputting a sequence of characters to the OS, sort of like a macro. Unfortunately, the way this is done differs for each platform. Specifically, each platform requires a different combination of keys to trigger Unicode input. Therefore, a corresponding input mode has to be set in QMK.
|
||||
|
||||
The following input modes are available:
|
||||
|
||||
* **`UC_OSX`**: Mac OS X built-in Unicode hex input. Supports code points up to `0xFFFF` (`0x10FFFF` with `UNICODEMAP`).
|
||||
|
||||
To enable, go to _System Preferences > Keyboard > Input Sources_, add _Unicode Hex Input_ to the list (it's under _Other_), then activate it from the input dropdown in the Menu Bar.
|
||||
By default, this mode uses the left Option key (`KC_LALT`), but this can be changed by defining [`UNICODE_OSX_KEY`](#input-key-configuration) with another keycode.
|
||||
|
||||
* **`UC_LNX`**: Linux built-in IBus Unicode input. Supports all possible code points (`0x10FFFF`).
|
||||
|
||||
Enabled by default and works almost anywhere on IBus-enabled distros. Without IBus, this mode works under GTK apps, but rarely anywhere else.
|
||||
|
||||
* **`UC_WIN`**: _(not recommended)_ Windows built-in hex numpad Unicode input. Supports code points up to `0xFFFF`.
|
||||
|
||||
To enable, create a registry key under `HKEY_CURRENT_USER\Control Panel\Input Method\EnableHexNumpad` of type `REG_SZ` called `EnableHexNumpad` and set its value to `1`. This can be done from the Command Prompt by running `reg add "HKCU\Control Panel\Input Method" -v EnableHexNumpad -t REG_SZ -d 1` with administrator privileges. Afterwards, reboot.
|
||||
This mode is not recommended because of reliability and compatibility issues; use the `UC_WINC` mode instead.
|
||||
|
||||
* **`UC_BSD`**: _(non implemented)_ Unicode input under BSD. Not implemented at this time. If you're a BSD user and want to help add support for it, please [open an issue on GitHub](https://github.com/qmk/qmk_firmware/issues).
|
||||
|
||||
* **`UC_WINC`**: Windows Unicode input using [WinCompose](https://github.com/samhocevar/wincompose). As of v0.8.2, supports code points up to `0xFFFFF`.
|
||||
|
||||
To enable, install the [latest release](https://github.com/samhocevar/wincompose/releases/latest). Once installed, WinCompose will automatically run on startup. Works reliably under all version of Windows supported by the app.
|
||||
By default, this mode uses the right Alt key (`KC_RALT`), but this can be changed in the WinCompose settings and by defining [`UNICODE_WINC_KEY`](#input-key-configuration) with another keycode.
|
||||
|
||||
### Switching Input Modes
|
||||
|
||||
There are two ways to set the input mode for Unicode: by keycode or by function. Keep in mind that both methods write to persistent storage (EEPROM), and are loaded each time the keyboard starts. So once you've set it the first time, you don't need to set it again unless you want to change it, or you've reset the EEPROM settings.
|
||||
|
||||
You can switch the input mode at any time by using one of the following keycodes. The easiest way is to add the ones you use to your keymap.
|
||||
|
||||
|Keycode |Alias |Input mode |Description |
|
||||
|-----------------------|---------|-------------|-----------------------------------------|
|
||||
|`UNICODE_MODE_FORWARD` |`UC_MOD` | |Cycles forwards through the available modes. [(Disabled by default)](#input-method-cycling)|
|
||||
|`UNICODE_MODE_REVERSE` |`UC_RMOD`| |Cycles forwards through the available modes. [(Disabled by default)](#input-method-cycling)|
|
||||
|`UNICODE_MODE_OSX` |`UC_M_OS`|`UC_OSX` |Switch to Mac OS X input. |
|
||||
|`UNICODE_MODE_LNX` |`UC_M_LN`|`UC_LNX` |Switch to Linux input. |
|
||||
|`UNICODE_MODE_WIN` |`UC_M_WI`|`UC_WIN` |Switch to Windows input. |
|
||||
|`UNICODE_MODE_BSD` |`UC_M_BS`|`UC_BSD` |Switch to BSD input (not implemented). |
|
||||
|`UNICODE_MODE_WINC` |`UC_M_WC`|`UC_WINC` |Switch to Windows input using WinCompose.|
|
||||
|
||||
You can also switch the input mode by calling `set_unicode_input_mode(x)` in your code, where _x_ is one of the above input mode constants (e.g. `UC_LNX`). Since the function only needs to be called once, it's recommended that you do it in `eeconfig_init_user` (or a similar function). For example:
|
||||
|
||||
```c
|
||||
void qk_ucis_start_user(void) { // outputs keyboard emoji
|
||||
unicode_input_start();
|
||||
register_hex(0x2328);
|
||||
unicode_input_finish();
|
||||
}
|
||||
|
||||
void qk_ucis_success(uint8_t symbol_index) {
|
||||
}
|
||||
|
||||
void qk_ucis_symbol_fallback (void) { // falls back to manual unicode entry
|
||||
for (uint8_t i = 0; i < qk_ucis_state.count - 1; i++) {
|
||||
uint8_t code = qk_ucis_state.codes[i];
|
||||
register_code(code);
|
||||
unregister_code(code);
|
||||
wait_ms(UNICODE_TYPE_DELAY);
|
||||
}
|
||||
void eeconfig_init_user(void) {
|
||||
set_unicode_input_mode(UC_LNX);
|
||||
}
|
||||
```
|
||||
|
||||
## Unicode Input methods
|
||||
### Audio Feedback
|
||||
|
||||
Unicode input in QMK works by inputting a sequence of characters to the OS,
|
||||
sort of like macro. Unfortunately, each OS has different ideas on how Unicode is input.
|
||||
If you have the [Audio feature](feature_audio.md) enabled on the board, you can set melodies to be played when you press the above keys. That way you can have some audio feedback when switching input modes.
|
||||
|
||||
This is the current list of Unicode input method in QMK:
|
||||
For instance, you can add these definitions to your `config.h` file:
|
||||
|
||||
* __UC_OSX__: MacOS Unicode Hex Input support. Works only up to 0xFFFF. Disabled by default. To enable: go to System Preferences -> Keyboard -> Input Sources, and enable Unicode Hex.
|
||||
* __UC_OSX_RALT__: Same as UC_OSX, but sends the Right Alt key for unicode input
|
||||
* __UC_LNX__: Unicode input method under Linux. Works up to 0xFFFFF. Should work almost anywhere on ibus enabled distros. Without ibus, this works under GTK apps, but rarely anywhere else.
|
||||
* __UC_WIN__: (not recommended) Windows built-in Unicode input. To enable: create registry key under `HKEY_CURRENT_USER\Control Panel\Input Method\EnableHexNumpad` of type `REG_SZ` called `EnableHexNumpad`, set its value to 1, and reboot. This method is not recommended because of reliability and compatibility issue, use WinCompose method below instead.
|
||||
* __UC_WINC__: Windows Unicode input using WinCompose. Requires [WinCompose](https://github.com/samhocevar/wincompose). Works reliably under many (all?) variations of Windows.
|
||||
```c
|
||||
#define UNICODE_SONG_OSX COIN_SOUND
|
||||
#define UNICODE_SONG_LNX UNICODE_LINUX
|
||||
#define UNICODE_SONG_BSD MARIO_GAMEOVER
|
||||
#define UNICODE_SONG_WIN UNICODE_WINDOWS
|
||||
#define UNICODE_SONG_WINC UNICODE_WINDOWS
|
||||
```
|
||||
|
||||
At some point, you need to call `set_unicode_input_mode(x)` to set the correct unicode method. This sets the method that is used to send the unicode, and stores it in EEPROM, so you only need to call this once.
|
||||
### Additional Customization
|
||||
|
||||
Because Unicode is such a large and variable feature, there are a number of options that you can customize to work better on your system.
|
||||
|
||||
#### Start and Finish input functions
|
||||
|
||||
The functions for starting and finishing Unicode input on your platform can be overridden locally. Possible uses include customizing input mode behavior if you don't use the default keys, or adding extra visual/audio feedback to Unicode input.
|
||||
|
||||
* `void unicode_input_start(void)` – This sends the initial sequence that tells your platform to enter Unicode input mode. For example, it presses Ctrl+Shift+U on Linux and holds the Option key on Mac.
|
||||
* `void unicode_input_finish(void)` – This is called to exit Unicode input mode, for example by pressing Space or releasing the Option key.
|
||||
|
||||
You can find the default implementations of these functions in [`process_unicode_common.c`](https://github.com/qmk/qmk_firmware/blob/master/quantum/process_keycode/process_unicode_common.c).
|
||||
|
||||
|
||||
#### Input Key Configuration
|
||||
|
||||
Additionally, you can customize the keys used to trigger the unicode input for macOS and WinCompose by adding defines to your `config.h`
|
||||
|
||||
```c
|
||||
#define UNICODE_OSX_KEY KC_LALT
|
||||
#define UNICODE_WINC_KEY KC_RALT
|
||||
```
|
||||
|
||||
#### Input Method Cycling
|
||||
|
||||
Also, you can choose which input methods are availble for cycling through. By default, this is disabled. But if you want to enabled it, then limiting it to just those modes makes sense. Note that `UNICODE_SELECTED_MODES` define is comma delimited.
|
||||
|
||||
```c
|
||||
#define UNICODE_SELECTED_MODES UC_OSX, UC_LNX, UC_WIN, UC_BSD, UC_WINC
|
||||
```
|
||||
|
||||
## `send_unicode_hex_string`
|
||||
|
||||
|
||||
@@ -45,16 +45,14 @@ static const I2CConfig i2cconfig = {
|
||||
__attribute__ ((weak))
|
||||
void i2c_init(void)
|
||||
{
|
||||
//palSetGroupMode(GPIOB, GPIOB_PIN6 | GPIOB_PIN7, 0, PAL_MODE_INPUT);
|
||||
|
||||
// Try releasing special pins for a short time
|
||||
palSetPadMode(GPIOB, 6, PAL_MODE_INPUT);
|
||||
palSetPadMode(GPIOB, 7, PAL_MODE_INPUT);
|
||||
|
||||
chThdSleepMilliseconds(10);
|
||||
|
||||
palSetPadMode(GPIOB, 6, PAL_MODE_ALTERNATE(4) | PAL_STM32_OTYPE_OPENDRAIN | PAL_STM32_PUPDR_PULLUP);
|
||||
palSetPadMode(GPIOB, 7, PAL_MODE_ALTERNATE(4) | PAL_STM32_OTYPE_OPENDRAIN | PAL_STM32_PUPDR_PULLUP);
|
||||
palSetPadMode(GPIOB, 6, PAL_MODE_ALTERNATE(4) | PAL_STM32_OTYPE_OPENDRAIN);
|
||||
palSetPadMode(GPIOB, 7, PAL_MODE_ALTERNATE(4) | PAL_STM32_OTYPE_OPENDRAIN);
|
||||
|
||||
//i2cInit(); //This is invoked by halInit() so no need to redo it.
|
||||
}
|
||||
|
||||
@@ -61,7 +61,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#define RGB_DI_PIN F5 // The pin the LED strip is connected to
|
||||
#define RGBLED_NUM 6 // Number of LEDs in your strip
|
||||
|
||||
#define RGBLIGHT_ANIMATIONS
|
||||
#define QMK_ESC_OUTPUT B7 // usually COL
|
||||
#define QMK_ESC_INPUT B3 // usually ROW
|
||||
#define QMK_LED E6
|
||||
|
||||
@@ -49,31 +49,32 @@
|
||||
// This a shortcut to help you visually see your layout.
|
||||
// The first section contains all of the arguements
|
||||
// The second converts the arguments into a two-dimensional array
|
||||
#define KC_KEYMAP( \
|
||||
#define LAYOUT( \
|
||||
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, k12, k13, \
|
||||
k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, \
|
||||
k28, k29, k31, k32, k33, k34, k35, k36, k37, k38, k41, k42, k43, k44,\
|
||||
k45, k46, k47, k48 \
|
||||
k28, k29, k31, k32, k33, k34, k35, k36, k37, k38, k41, k42, k43, k44, \
|
||||
k45, k46, k47, k48 \
|
||||
) \
|
||||
{ \
|
||||
{ KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05, KC_##k08, KC_##k09, KC_##k10, KC_##k11, KC_##k12 }, \
|
||||
{ KC_##k15, KC_##k16, KC_##k17, KC_##k18, KC_##k19, KC_##k22, KC_##k23, KC_##k24, KC_##k25, KC_##k26 }, \
|
||||
{ KC_##k29, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k37, KC_##k38, KC_##k41, KC_##k42, KC_##k43 }, \
|
||||
{ KC_NO, KC_##k06, KC_##k20, KC_##k35, KC_##k46, KC_##k47, KC_##k36, KC_##k21, KC_##k07, KC_NO }, \
|
||||
{ KC_NO, KC_##k28, KC_##k14, KC_##k00, KC_##k45, KC_##k48, KC_##k13, KC_##k27, KC_##k44, KC_NO }, \
|
||||
{ k01, k02, k03, k04, k05, k08, k09, k10, k11, k12 }, \
|
||||
{ k15, k16, k17, k18, k19, k22, k23, k24, k25, k26 }, \
|
||||
{ k29, k31, k32, k33, k34, k37, k38, k41, k42, k43 }, \
|
||||
{ KC_NO, k06, k20, k35, k46, k47, k36, k21, k07, KC_NO }, \
|
||||
{ KC_NO, k28, k14, k00, k45, k48, k13, k27, k44, KC_NO } \
|
||||
}
|
||||
|
||||
#define KEYMAP( \
|
||||
#define LAYOUT_kc( \
|
||||
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, k12, k13, \
|
||||
k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, \
|
||||
k28, k29, k31, k32, k33, k34, k35, k36, k37, k38, k41, k42, k43, k44,\
|
||||
k45, k46, k47, k48 \
|
||||
k28, k29, k31, k32, k33, k34, k35, k36, k37, k38, k41, k42, k43, k44, \
|
||||
k45, k46, k47, k48 \
|
||||
) \
|
||||
{ \
|
||||
{ k01, k02, k03, k04, k05, k08, k09, k10, k11, k12 }, \
|
||||
{ k15, k16, k17, k18, k19, k22, k23, k24, k25, k26 }, \
|
||||
{ k29, k31, k32, k33, k34, k37, k38, k41, k42, k43 }, \
|
||||
{ KC_NO, k06, k20, k35, k46, k47, k36, k21, k07, KC_NO }, \
|
||||
{ KC_NO, k28, k14, k00, k45, k48, k13, k27, k44, KC_NO }, \
|
||||
{ KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05, KC_##k08, KC_##k09, KC_##k10, KC_##k11, KC_##k12 }, \
|
||||
{ KC_##k15, KC_##k16, KC_##k17, KC_##k18, KC_##k19, KC_##k22, KC_##k23, KC_##k24, KC_##k25, KC_##k26 }, \
|
||||
{ KC_##k29, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k37, KC_##k38, KC_##k41, KC_##k42, KC_##k43 }, \
|
||||
{ KC_NO, KC_##k06, KC_##k20, KC_##k35, KC_##k46, KC_##k47, KC_##k36, KC_##k21, KC_##k07, KC_NO }, \
|
||||
{ KC_NO, KC_##k28, KC_##k14, KC_##k00, KC_##k45, KC_##k48, KC_##k13, KC_##k27, KC_##k44, KC_NO } \
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,240 +1,58 @@
|
||||
{
|
||||
"keyboard_name": "Chimera Ortho",
|
||||
"keyboard_folder": "chimera_ortho",
|
||||
"maintainer": "qmk",
|
||||
"width": 15.5,
|
||||
"height": 4.25,
|
||||
"layouts": {
|
||||
"KEYMAP": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{
|
||||
"label": "Esc",
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"label": "Q",
|
||||
"x": 1,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"label": "W",
|
||||
"x": 2,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"label": "E",
|
||||
"x": 3,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"label": "R",
|
||||
"x": 4,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"label": "T",
|
||||
"x": 5,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"label": "{",
|
||||
"x": 6,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"label": "}",
|
||||
"x": 8.5,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"label": "Y",
|
||||
"x": 9.5,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"label": "U",
|
||||
"x": 10.5,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"label": "I",
|
||||
"x": 11.5,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"label": "O",
|
||||
"x": 12.5,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"label": "P",
|
||||
"x": 13.5,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"label": "\"",
|
||||
"x": 14.5,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"label": "Tab",
|
||||
"x": 0,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"label": "A",
|
||||
"x": 1,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"label": "S",
|
||||
"x": 2,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"label": "D",
|
||||
"x": 3,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"label": "F",
|
||||
"x": 4,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"label": "G",
|
||||
"x": 5,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"label": "-",
|
||||
"x": 6,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"label": "1",
|
||||
"x": 8.5,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"label": "H",
|
||||
"x": 9.5,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"label": "J",
|
||||
"x": 10.5,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"label": "K",
|
||||
"x": 11.5,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"label": "L",
|
||||
"x": 12.5,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"label": ";",
|
||||
"x": 13.5,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"label": "Enter",
|
||||
"x": 14.5,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"label": "(",
|
||||
"x": 0,
|
||||
"y": 2
|
||||
},
|
||||
{
|
||||
"label": "Z",
|
||||
"x": 1,
|
||||
"y": 2
|
||||
},
|
||||
{
|
||||
"label": "X",
|
||||
"x": 2,
|
||||
"y": 2
|
||||
},
|
||||
{
|
||||
"label": "C",
|
||||
"x": 3,
|
||||
"y": 2
|
||||
},
|
||||
{
|
||||
"label": "V",
|
||||
"x": 4,
|
||||
"y": 2
|
||||
},
|
||||
{
|
||||
"label": "B",
|
||||
"x": 5,
|
||||
"y": 2
|
||||
},
|
||||
{
|
||||
"label": "=",
|
||||
"x": 6,
|
||||
"y": 2
|
||||
},
|
||||
{
|
||||
"label": "8",
|
||||
"x": 8.5,
|
||||
"y": 2
|
||||
},
|
||||
{
|
||||
"label": "N",
|
||||
"x": 9.5,
|
||||
"y": 2
|
||||
},
|
||||
{
|
||||
"label": "M",
|
||||
"x": 10.5,
|
||||
"y": 2
|
||||
},
|
||||
{
|
||||
"label": ",",
|
||||
"x": 11.5,
|
||||
"y": 2
|
||||
},
|
||||
{
|
||||
"label": ".",
|
||||
"x": 12.5,
|
||||
"y": 2
|
||||
},
|
||||
{
|
||||
"label": "/",
|
||||
"x": 13.5,
|
||||
"y": 2
|
||||
},
|
||||
{
|
||||
"label": ")",
|
||||
"x": 14.5,
|
||||
"y": 2
|
||||
},
|
||||
{
|
||||
"label": "Num Layer",
|
||||
"x": 4,
|
||||
"y": 3.25
|
||||
},
|
||||
{
|
||||
"label": "Back Space",
|
||||
"x": 5,
|
||||
"y": 3.25
|
||||
},
|
||||
{
|
||||
"label": "Space",
|
||||
"x": 9.5,
|
||||
"y": 3.25
|
||||
},
|
||||
{
|
||||
"label": "Symbol Layer",
|
||||
"x": 10.5,
|
||||
"y": 3.25
|
||||
}
|
||||
{"label": "Esc", "x": 0, "y": 0},
|
||||
{"label": "Q", "x": 1, "y": 0},
|
||||
{"label": "W", "x": 2, "y": 0},
|
||||
{"label": "E", "x": 3, "y": 0},
|
||||
{"label": "R", "x": 4, "y": 0},
|
||||
{"label": "T", "x": 5, "y": 0},
|
||||
{"label": "{", "x": 6, "y": 0},
|
||||
{"label": "}", "x": 8.5, "y": 0},
|
||||
{"label": "Y", "x": 9.5, "y": 0},
|
||||
{"label": "U", "x": 10.5, "y": 0},
|
||||
{"label": "I", "x": 11.5, "y": 0},
|
||||
{"label": "O", "x": 12.5, "y": 0},
|
||||
{"label": "P", "x": 13.5, "y": 0},
|
||||
{"label": "\"", "x": 14.5, "y": 0},
|
||||
{"label": "Tab", "x": 0, "y": 1},
|
||||
{"label": "A", "x": 1, "y": 1},
|
||||
{"label": "S", "x": 2, "y": 1},
|
||||
{"label": "D", "x": 3, "y": 1},
|
||||
{"label": "F", "x": 4, "y": 1},
|
||||
{"label": "G", "x": 5, "y": 1},
|
||||
{"label": "-", "x": 6, "y": 1},
|
||||
{"label": "1", "x": 8.5, "y": 1},
|
||||
{"label": "H", "x": 9.5, "y": 1},
|
||||
{"label": "J", "x": 10.5, "y": 1},
|
||||
{"label": "K", "x": 11.5, "y": 1},
|
||||
{"label": "L", "x": 12.5, "y": 1},
|
||||
{"label": ";", "x": 13.5, "y": 1},
|
||||
{"label": "Enter", "x": 14.5, "y": 1},
|
||||
{"label": "(", "x": 0, "y": 2},
|
||||
{"label": "Z", "x": 1, "y": 2},
|
||||
{"label": "X", "x": 2, "y": 2},
|
||||
{"label": "C", "x": 3, "y": 2},
|
||||
{"label": "V", "x": 4, "y": 2},
|
||||
{"label": "B", "x": 5, "y": 2},
|
||||
{"label": "=", "x": 6, "y": 2},
|
||||
{"label": "8", "x": 8.5, "y": 2},
|
||||
{"label": "N", "x": 9.5, "y": 2},
|
||||
{"label": "M", "x": 10.5, "y": 2},
|
||||
{"label": ", ", "x": 11.5, "y": 2},
|
||||
{"label": ".", "x": 12.5, "y": 2},
|
||||
{"label": "/", "x": 13.5, "y": 2},
|
||||
{"label": ")", "x": 14.5, "y": 2},
|
||||
{"label": "Num Layer", "x": 4, "y": 3.25},
|
||||
{"label": "Back Space", "x": 5, "y": 3.25},
|
||||
{"label": "Space", "x": 9.5, "y": 3.25},
|
||||
{"label": "Symbol Layer", "x": 10.5, "y": 3.25}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#include "chimera_ortho.h"
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
enum chimera_ortho_layers
|
||||
{
|
||||
@@ -34,7 +34,7 @@ enum chimera_ortho_layers
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[_BASE] = KC_KEYMAP(
|
||||
[_BASE] = LAYOUT_kc(
|
||||
//,-------+-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------+-------.
|
||||
LALT ,TAB ,QUOT ,COMM ,DOT ,P ,Y ,F ,G ,C ,R ,L ,SLSH ,FUNC
|
||||
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
|
||||
@@ -46,7 +46,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
//\-------------------------------+-------+-------+-------/ \-------+-------+---------------------------------------/
|
||||
),
|
||||
|
||||
[_NAV] = KC_KEYMAP(
|
||||
[_NAV] = LAYOUT_kc(
|
||||
//,-------+-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------+-------.
|
||||
, , , , , , , ,HOME ,PGDOWN ,PGUP ,END , ,
|
||||
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
|
||||
@@ -58,7 +58,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
//\-------------------------------+-------+-------+-------/ \-------+-------+---------------------------------------/
|
||||
),
|
||||
|
||||
[_SYM] = KC_KEYMAP(
|
||||
[_SYM] = LAYOUT_kc(
|
||||
//,-------+-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------+-------.
|
||||
,QUAKE ,GRAVE ,TILDE ,BSLASH ,PIPE ,LPRN ,RPRN ,7 ,8 ,9 ,SLSH ,EQUAL ,
|
||||
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
|
||||
@@ -70,7 +70,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
//\-------------------------------+-------+-------+-------/ \-------+-------+---------------------------------------/
|
||||
),
|
||||
|
||||
[_FUNC] = KC_KEYMAP(
|
||||
[_FUNC] = LAYOUT_kc(
|
||||
//,-------+-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------+-------.
|
||||
,RESET ,SLEP ,MRWD ,MPLY ,MFFD , , ,F9 ,F10 ,F11 ,F12 , ,
|
||||
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
|
||||
@@ -82,7 +82,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
//\-------------------------------+-------+-------+-------/ \-------+-------+---------------------------------------/
|
||||
),
|
||||
|
||||
[_MOUSE] = KC_KEYMAP(
|
||||
[_MOUSE] = LAYOUT_kc(
|
||||
//,-------+-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------+-------.
|
||||
, , , , , , , , , , , , ,
|
||||
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
|
||||
|
||||
5
keyboards/chimera_ortho/keymaps/default/config.h
Normal file
5
keyboards/chimera_ortho/keymaps/default/config.h
Normal file
@@ -0,0 +1,5 @@
|
||||
#pragma once
|
||||
|
||||
// place overrides here
|
||||
#define LONGPRESS_DELAY 150
|
||||
//#define LAYER_TOGGLE_DELAY 300
|
||||
@@ -1,20 +1,19 @@
|
||||
// this is the style you want to emulate.
|
||||
// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
|
||||
|
||||
#include "chimera_ortho.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 chimera_ortho_layers
|
||||
{
|
||||
_QWERTY,
|
||||
_CAPS,
|
||||
_NUMPAD,
|
||||
_SYMBOLS,
|
||||
_MACROS,
|
||||
_NAV
|
||||
enum chimera_ortho_layers {
|
||||
_QWERTY,
|
||||
_CAPS,
|
||||
_NUMPAD,
|
||||
_SYMBOLS,
|
||||
_MACROS,
|
||||
_NAV
|
||||
};
|
||||
|
||||
#define KC_NMPD TG(_NUMPAD)
|
||||
@@ -27,153 +26,140 @@ enum chimera_ortho_layers
|
||||
#define KC_GBRC MT(MOD_RGUI, KC_8)
|
||||
#define KC_GQOT MT(MOD_LGUI, KC_QUOT)
|
||||
#define KC_MESC LT(_MACROS, KC_ESC)
|
||||
#define KC_INCL M(0)
|
||||
#define KC_PULL M(1)
|
||||
#define KC_PUSH M(2)
|
||||
#define KC_SCAP M(3)
|
||||
#define KC_SCOF M(4)
|
||||
#define KC_CAD LALT(LCTL(KC_DEL))
|
||||
|
||||
#define LONGPRESS_DELAY 150
|
||||
//#define LAYER_TOGGLE_DELAY 300
|
||||
|
||||
// Fillers to make layering more clear
|
||||
#define _______ KC_TRNS
|
||||
#define XXXXXXX KC_NO
|
||||
#define KC_ KC_TRNS
|
||||
enum custom_keycodes {
|
||||
KC_INCL = SAFE_RANGE,
|
||||
KC_PULL,
|
||||
KC_PUSH,
|
||||
KC_SCAP,
|
||||
KC_SCOF
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[_QWERTY] = KC_KEYMAP(
|
||||
//,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
|
||||
MESC, Q , W , E , R , T ,SCTL, SCTR, Y , U , I , O , P ,QUOT,
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
TAB , A , S , D , F , G ,SPLT, SPRT, H , J , K , L ,SCLN,ENT ,
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
LSPO, Z , X , C , V , B ,SPFN, GBRC, N , M ,COMM,DOT ,SLSH,RSPC,
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
NMPD,BSPC, SPC ,SYMB
|
||||
// \------------------+----+----+---/ \---+----+----+-------------------/
|
||||
[_QWERTY] = LAYOUT(
|
||||
//,-------+-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------+-------.
|
||||
KC_MESC, KC_Q , KC_W , KC_E , KC_R , KC_T ,KC_SCTL, KC_SCTR, KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_QUOT,
|
||||
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
|
||||
KC_TAB , KC_A , KC_S , KC_D , KC_F , KC_G ,KC_SPLT, KC_SPRT, KC_H , KC_J , KC_K , KC_L ,KC_SCLN,KC_ENT ,
|
||||
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
|
||||
KC_LSPO, KC_Z , KC_X , KC_C , KC_V , KC_B ,KC_SPFN, KC_GBRC, KC_N , KC_M ,KC_COMM,KC_DOT ,KC_SLSH,KC_RSPC,
|
||||
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
|
||||
KC_NMPD,KC_BSPC, KC_SPC ,KC_SYMB
|
||||
// \------------------------------+-------+-------+------/ \------+-------+-------+------------------------------/
|
||||
),
|
||||
|
||||
[_CAPS] = KC_KEYMAP(
|
||||
//,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
|
||||
, , , , , , , , , , , , , ,
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
, , , , , ,UNDS, , , , , ,COLN, ,
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
SCOF, , , , , , , , , , , , ,SCOF,
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
, , ,
|
||||
// \------------------+----+----+---/ \---+----+----+-------------------/
|
||||
[_CAPS] = LAYOUT(
|
||||
//,-------+-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------+-------.
|
||||
_______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
|
||||
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
|
||||
_______,_______,_______,_______,_______,_______,KC_UNDS, _______,_______,_______,_______,_______,KC_COLN,_______,
|
||||
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
|
||||
KC_SCOF,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,KC_SCOF,
|
||||
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
|
||||
_______,_______, _______,_______
|
||||
// \------------------------------+-------+-------+------/ \------+-------+-------+------------------------------/
|
||||
),
|
||||
|
||||
[_NUMPAD] = KC_KEYMAP(
|
||||
//,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
|
||||
, ,COLN , , , , , , , 7 , 8 , 9 ,ASTR,MINS,
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
, ,DOT , , , , , , , 4 , 5 , 6 ,PLUS, ,
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
, , , , , , , , , 1 , 2 , 3 ,SLSH, ,
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
, , , 0
|
||||
// \------------------+----+----+---/ \---+----+----+-------------------/
|
||||
[_NUMPAD] = LAYOUT(
|
||||
//,-------+-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------+-------.
|
||||
_______,_______,KC_COLN,_______,_______,_______,_______, _______,_______, KC_7 , KC_8 , KC_9 ,KC_ASTR,KC_MINS,
|
||||
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
|
||||
_______,_______,KC_DOT ,_______,_______,_______,_______, _______,_______, KC_4 , KC_5 , KC_6 ,KC_PLUS,_______,
|
||||
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
|
||||
_______,_______,_______,_______,_______,_______,_______, _______,_______, KC_1 , KC_2 , KC_3 ,KC_SLSH,_______,
|
||||
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
|
||||
_______,_______, _______, KC_0
|
||||
// \------------------------------+-------+-------+------/ \------+-------+-------+------------------------------/
|
||||
),
|
||||
|
||||
[_SYMBOLS] = KC_KEYMAP(
|
||||
//,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
|
||||
,EXLM, AT ,HASH,DLR ,PERC, , ,CIRC,AMPR,ASTR,LPRN,RPRN,BSLS,
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
, F1 , F2 , F3 , F4 , F5 , , ,TILD,COLN,UNDS,LCBR,RCBR, ,
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
, F6 , F7 , F8 , F9 ,F10 , , ,GRV ,SCLN,MINS,LBRC,RBRC, ,
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
PIPE, , ,
|
||||
// \------------------+----+----+---/ \---+----+----+-------------------/
|
||||
[_SYMBOLS] = LAYOUT(
|
||||
//,-------+-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------+-------.
|
||||
_______,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC,_______, _______,KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_BSLS,
|
||||
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
|
||||
_______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 ,_______, _______,KC_TILD,KC_COLN,KC_UNDS,KC_LCBR,KC_RCBR,_______,
|
||||
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
|
||||
_______, KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,_______, _______,KC_GRV ,KC_SCLN,KC_MINS,KC_LBRC,KC_RBRC,_______,
|
||||
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
|
||||
KC_PIPE,_______, _______,_______
|
||||
// \------------------------------+-------+-------+------/ \------+-------+-------+------------------------------/
|
||||
),
|
||||
|
||||
[_NAV] = KC_KEYMAP(
|
||||
//,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
|
||||
, , , , , , , , , , UP , ,PSCR, ,
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
, , , , , , , , ,LEFT,DOWN,RGHT, , ,
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
, , , , , , , , ,PGUP,PGDN, , , ,
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
,DEL , ,
|
||||
// \------------------+----+----+---/ \---+----+----+-------------------/
|
||||
[_NAV] = LAYOUT(
|
||||
//,-------+-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------+-------.
|
||||
_______,_______,_______,_______,_______,_______,_______, _______,_______,_______, KC_UP ,_______,KC_PSCR,_______,
|
||||
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
|
||||
_______,_______,_______,_______,_______,_______,_______, _______,_______,KC_LEFT,KC_DOWN,KC_RGHT,_______,_______,
|
||||
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
|
||||
_______,_______,_______,_______,_______,_______,_______, _______,_______,KC_PGUP,KC_PGDN,_______,_______,_______,
|
||||
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
|
||||
_______,KC_DEL , _______,_______
|
||||
// \------------------------------+-------+-------+------/ \------+-------+-------+------------------------------/
|
||||
),
|
||||
|
||||
[_MACROS] = KC_KEYMAP(
|
||||
//,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
|
||||
, , , , , , , , , ,INCL, , , ,
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
, , ,CAD , , , , , , , , , , ,
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
SCAP, , , , , , , , , ,PULL,PUSH, ,SCAP,
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
, , ,
|
||||
// \------------------+----+----+---/ \---+----+----+-------------------/
|
||||
[_MACROS] = LAYOUT(
|
||||
//,-------+-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------+-------.
|
||||
_______,_______,_______,_______,_______,_______,_______, _______,_______,_______,KC_INCL,_______,_______,_______,
|
||||
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
|
||||
_______,_______,_______,KC_CAD ,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
|
||||
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
|
||||
KC_SCAP,_______,_______,_______,_______,_______,_______, _______,_______,_______,KC_PULL,KC_PUSH,_______,KC_SCAP,
|
||||
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
|
||||
_______,_______, _______,_______
|
||||
// \------------------------------+-------+-------+------/ \------+-------+-------+------------------------------/
|
||||
)
|
||||
|
||||
};
|
||||
|
||||
|
||||
const uint16_t PROGMEM fn_actions[] = {
|
||||
|
||||
};
|
||||
|
||||
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
||||
{
|
||||
switch(id) {
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch(keycode) {
|
||||
/* include some kind of library or header */
|
||||
case 0:
|
||||
case KC_INCL:
|
||||
if (record->event.pressed) {
|
||||
SEND_STRING("#include <>");
|
||||
return MACRO( T(LEFT), END);
|
||||
SEND_STRING("#include <>" SS_TAP(X_LEFT));
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
return false;
|
||||
case KC_PULL:
|
||||
if (record->event.pressed) {
|
||||
SEND_STRING("git pull");
|
||||
return MACRO( T(ENT), END );
|
||||
SEND_STRING("git pull" SS_TAP(X_ENTER));
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
return false;
|
||||
case KC_PUSH:
|
||||
if (record->event.pressed){
|
||||
SEND_STRING("git push");
|
||||
return MACRO( T(ENT), END );
|
||||
SEND_STRING("git push" SS_TAP(X_ENTER));
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
return false;
|
||||
case KC_SCAP:
|
||||
if (record->event.pressed){
|
||||
layer_on(_CAPS);
|
||||
register_code(KC_CAPSLOCK);
|
||||
unregister_code(KC_CAPSLOCK);
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
return false;
|
||||
case KC_SCOF:
|
||||
if (record->event.pressed){
|
||||
layer_off(_CAPS);
|
||||
register_code(KC_CAPSLOCK);
|
||||
unregister_code(KC_CAPSLOCK);
|
||||
}
|
||||
break;
|
||||
return false;
|
||||
}
|
||||
return MACRO_NONE;
|
||||
return true;
|
||||
};
|
||||
|
||||
|
||||
|
||||
void matrix_scan_user(void) {
|
||||
uint8_t layer = biton32(layer_state);
|
||||
|
||||
|
||||
switch (layer) {
|
||||
case _QWERTY:
|
||||
set_led_green;
|
||||
break;
|
||||
case _QWERTY:
|
||||
set_led_green;
|
||||
break;
|
||||
case _CAPS:
|
||||
set_led_white;
|
||||
break;
|
||||
set_led_white;
|
||||
break;
|
||||
case _NUMPAD:
|
||||
set_led_blue;
|
||||
break;
|
||||
@@ -181,11 +167,11 @@ void matrix_scan_user(void) {
|
||||
set_led_red;
|
||||
break;
|
||||
case _NAV:
|
||||
set_led_magenta;
|
||||
break;
|
||||
set_led_magenta;
|
||||
break;
|
||||
case _MACROS:
|
||||
set_led_cyan;
|
||||
break;
|
||||
set_led_cyan;
|
||||
break;
|
||||
default:
|
||||
set_led_green;
|
||||
break;
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
// this is the style you want to emulate.
|
||||
// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
|
||||
|
||||
#include "chimera_ortho.h"
|
||||
#include "action_layer.h"
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "version.h"
|
||||
#include "process_keycode/process_tap_dance.h"
|
||||
#include "gordon.h"
|
||||
|
||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||
@@ -83,11 +81,9 @@
|
||||
//#define LAYER_TOGGLE_DELAY 300
|
||||
|
||||
// Fillers to make layering more clear
|
||||
#define _______ KC_TRNS
|
||||
#define XXXXXXX KC_NO
|
||||
#define KC_ KC_TRNS
|
||||
#define KC_ KC_TRNS
|
||||
|
||||
/* TODO:
|
||||
/* TODO:
|
||||
*
|
||||
* DONE: RESET and CAD into macro layer.
|
||||
* DONE: WINUP AND WINDOWN in NAV layer
|
||||
@@ -113,7 +109,7 @@
|
||||
* Russain layer
|
||||
* Hebrew layer
|
||||
* Get rid of stupid git pull and push macros.
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
//Tap dance enums
|
||||
@@ -127,14 +123,14 @@ enum {
|
||||
CALC_PRINTSCREEN
|
||||
};
|
||||
|
||||
static xtap ttt_state = {
|
||||
static xtap ttt_state = {
|
||||
.is_press_action = true,
|
||||
.state = 0
|
||||
};
|
||||
|
||||
|
||||
//Already exists in gordon.c, shouldn't need this anymore
|
||||
/*// To activate SINGLE_HOLD, you will need to hold for 200ms first.
|
||||
/*// To activate SINGLE_HOLD, you will need to hold for 200ms first.
|
||||
// This tap dance favors keys that are used frequently in typing like 'f'
|
||||
int cur_dance (qk_tap_dance_state_t *state) {
|
||||
if (state->count == 1) {
|
||||
@@ -151,8 +147,8 @@ int cur_dance (qk_tap_dance_state_t *state) {
|
||||
else if (state->count == 2) {
|
||||
if (state->interrupted) return DOUBLE_SINGLE_TAP;
|
||||
else if (state->pressed) return DOUBLE_HOLD;
|
||||
else return DOUBLE_TAP;
|
||||
}
|
||||
else return DOUBLE_TAP;
|
||||
}
|
||||
else if ((state->count == 3) && ((state->interrupted) || (!state->pressed))) return TRIPLE_TAP;
|
||||
else if (state->count == 3) return TRIPLE_HOLD;
|
||||
else return 8; //magic number. At some point this method will expand to work for more presses
|
||||
@@ -194,7 +190,7 @@ void TTT_reset (qk_tap_dance_state_t *state, void *user_data) {
|
||||
|
||||
qk_tap_dance_action_t tap_dance_actions[] = {
|
||||
// simple tap dance
|
||||
[F12ETAPS] = ACTION_TAP_DANCE_DOUBLE(KC_F12,LSFT(LCTL(KC_F10))),
|
||||
[F12ETAPS] = ACTION_TAP_DANCE_DOUBLE(KC_F12,LSFT(LCTL(KC_F10))),
|
||||
[CALCCOMP] = ACTION_TAP_DANCE_DOUBLE(KC_CALCULATOR, KC_MY_COMPUTER),
|
||||
[CALC_PRINTSCREEN] = ACTION_TAP_DANCE_DOUBLE(KC_CALCULATOR, KC_PSCR),
|
||||
[ALTF4] = ACTION_TAP_DANCE_DOUBLE(KC_F4,LALT(KC_F4)),
|
||||
@@ -206,7 +202,7 @@ qk_tap_dance_action_t tap_dance_actions[] = {
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[_QWERTY] = KC_KEYMAP(
|
||||
[_QWERTY] = LAYOUT_kc(
|
||||
//,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
|
||||
MESC, Q ,CSHW,ENAV, R , T ,SPC , CLPS, Y , U ,INAV, O , P ,TTT,
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
@@ -218,7 +214,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
// \------------------+----+----+---/ \---+----+----+-------------------/
|
||||
),
|
||||
|
||||
[_NUMPAD] = KC_KEYMAP(
|
||||
[_NUMPAD] = LAYOUT_kc(
|
||||
//,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
|
||||
, , , ,ASTR, , , , , 7 , 8 , 9 ,ASTR,/**/,
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
@@ -226,11 +222,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
, , , ,SLSH, , , , , 1 , 2 , 3 ,SLSH, ,
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
, , , 0
|
||||
, , , 0
|
||||
// \------------------+----+----+---/ \---+----+----+-------------------/
|
||||
),
|
||||
|
||||
[_SYMBOLS] = KC_KEYMAP(
|
||||
[_SYMBOLS] = LAYOUT_kc(
|
||||
//,----+----+-----+----+----+----+----. ,----+----+----+----+----+----+----.
|
||||
,EXLM, AT ,LCBR,RCBR,HASH, , ,CIRC,AMPR,ASTR,LPRN,RPRN,/**/,
|
||||
//|----+----+-----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
@@ -242,7 +238,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
// \-------------------+----+----+---/ \---+----+----+-------------------/
|
||||
),
|
||||
|
||||
[_FUNCTION] = KC_KEYMAP(
|
||||
[_FUNCTION] = LAYOUT_kc(
|
||||
//,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
|
||||
F6F7 ,F1 ,F2 ,F3 ,ALF4,F5 ,F6 , F7 ,F8 ,F9 ,F10 ,F11 ,F12 ,/**/,
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
@@ -250,11 +246,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
, , , , , , , , , , , , , ,
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
, , ,
|
||||
, , ,
|
||||
// \------------------+----+----+---/ \---+----+----+-------------------/
|
||||
),
|
||||
|
||||
[_NAV] = KC_KEYMAP(
|
||||
[_NAV] = LAYOUT_kc(
|
||||
//,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
|
||||
, ,SNAPLEFT,/**/,SNAPRIGHT,, , , , , UP , , , ,
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
@@ -262,11 +258,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
, ,WORKLEFT, ,WORKRIGHT,, , , ,PGUP,PGDN, , , ,
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
CDEL ,DEL, ,
|
||||
CDEL ,DEL, ,
|
||||
// \------------------+----+----+---/ \---+----+----+-------------------/
|
||||
),
|
||||
|
||||
[_TEXTNAV] = KC_KEYMAP(
|
||||
[_TEXTNAV] = LAYOUT_kc(
|
||||
//,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
|
||||
, , , , , , , , , ,/**/, , , ,
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
@@ -274,11 +270,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
, , , , , , , , , , , , , ,
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
, , ,
|
||||
, , ,
|
||||
// \------------------+----+----+---/ \---+----+----+-------------------/
|
||||
),
|
||||
|
||||
[_MOUSE] = KC_KEYMAP(
|
||||
[_MOUSE] = LAYOUT_kc(
|
||||
//,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
|
||||
, , ,MS_UP, , , , , , , UP , , , ,/**/
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
@@ -286,12 +282,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
, , , , , , , , , , , , , ,
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
,MS_BTN1 ,MS_BTN2 ,
|
||||
,MS_BTN1 ,MS_BTN2 ,
|
||||
// \------------------+----+----+---/ \---+----+----+-------------------/
|
||||
),
|
||||
),
|
||||
|
||||
|
||||
[_MACROS] = KC_KEYMAP(
|
||||
[_MACROS] = LAYOUT_kc(
|
||||
//,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
|
||||
/**/,RESET,SECRET_2,SECRET_3, , , ,SYSTEM_SLEEP, , ,INCL, , , ,
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
@@ -299,7 +295,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
SCAP, , , , , , , , , , , , ,SCAP,
|
||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||
, , ,
|
||||
, , ,
|
||||
// \------------------+----+----+---/ \---+----+----+-------------------/
|
||||
)
|
||||
|
||||
@@ -349,11 +345,11 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
||||
}
|
||||
return MACRO_NONE;
|
||||
};
|
||||
|
||||
|
||||
|
||||
void matrix_scan_user(void) {
|
||||
uint8_t layer = biton32(layer_state);
|
||||
|
||||
|
||||
switch (layer) {
|
||||
case _QWERTY:
|
||||
set_led_green;
|
||||
@@ -381,7 +377,7 @@ void matrix_scan_user(void) {
|
||||
_delay_ms(45);
|
||||
set_led_blue;
|
||||
_delay_ms(45);
|
||||
break;
|
||||
break;
|
||||
default:
|
||||
set_led_green;
|
||||
break;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#include "60.h"
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
#define _______ KC_TRNS
|
||||
|
||||
@@ -32,7 +32,7 @@ enum custom_keycodes {
|
||||
float song_zelda_puzzle[][2] = SONG(ZELDA_PUZZLE);
|
||||
#endif
|
||||
|
||||
const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Layer 0: Default Layer
|
||||
* ,-----------------------------------------------------------.
|
||||
* |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| `|BSp|
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#include "60.h"
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
#define _______ KC_TRNS
|
||||
|
||||
@@ -8,7 +8,7 @@ enum keyboard_layers {
|
||||
_CL
|
||||
};
|
||||
|
||||
const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Layer 0: Default Layer
|
||||
* ,-----------------------------------------------------------.
|
||||
* |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| BkSp|
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#include "60.h"
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
#define _______ KC_TRNS
|
||||
|
||||
@@ -33,7 +33,7 @@ enum custom_keycodes {
|
||||
float song_zelda_puzzle[][2] = SONG(ZELDA_PUZZLE);
|
||||
#endif
|
||||
|
||||
const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Layer 0: Default Layer
|
||||
* ,-----------------------------------------------------------------.
|
||||
* |Esc | 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| `|BSp|
|
||||
|
||||
@@ -1,6 +1,97 @@
|
||||
{
|
||||
"keyboard_name": "IBM 5291",
|
||||
"keyboard_folder": "converter/5291",
|
||||
"keyboard_folder": "converter/ibm_5291",
|
||||
"url": "https://deskthority.net/wiki/IBM_Model_F#IBM_5291_Keyboard",
|
||||
"maintainer": "listofoptions"
|
||||
"maintainer": "listofoptions",
|
||||
"width": 21,
|
||||
"height": 5,
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"label":"Sys Req", "x":0, "y":0},
|
||||
{"label":"Cmd", "x":1, "y":0},
|
||||
{"label":"`", "x":2.25, "y":0},
|
||||
{"label":"1", "x":3.25, "y":0},
|
||||
{"label":"2", "x":4.25, "y":0},
|
||||
{"label":"3", "x":5.25, "y":0},
|
||||
{"label":"4", "x":6.25, "y":0},
|
||||
{"label":"5", "x":7.25, "y":0},
|
||||
{"label":"6", "x":8.25, "y":0},
|
||||
{"label":"7", "x":9.25, "y":0},
|
||||
{"label":"8", "x":10.25, "y":0},
|
||||
{"label":"9", "x":11.25, "y":0},
|
||||
{"label":"0", "x":12.25, "y":0},
|
||||
{"label":"-", "x":13.25, "y":0},
|
||||
{"label":"=", "x":14.25, "y":0},
|
||||
{"label":"Backspace", "x":15.25, "y":0, "w":1.75},
|
||||
{"label":"Reverse Tab", "x":17, "y":0, "w":2},
|
||||
{"label":"Dup", "x":19, "y":0, "w":2},
|
||||
{"label":"Del", "x":0, "y":1},
|
||||
{"label":"Erase Input", "x":1, "y":1},
|
||||
{"label":"Tab", "x":2.25, "y":1, "w":1.5},
|
||||
{"label":"Q", "x":3.75, "y":1},
|
||||
{"label":"W", "x":4.75, "y":1},
|
||||
{"label":"E", "x":5.75, "y":1},
|
||||
{"label":"R", "x":6.75, "y":1},
|
||||
{"label":"T", "x":7.75, "y":1},
|
||||
{"label":"Y", "x":8.75, "y":1},
|
||||
{"label":"U", "x":9.75, "y":1},
|
||||
{"label":"I", "x":10.75, "y":1},
|
||||
{"label":"O", "x":11.75, "y":1},
|
||||
{"label":"P", "x":12.75, "y":1},
|
||||
{"label":"¢", "x":13.75, "y":1},
|
||||
{"label":"\\", "x":14.75, "y":1, "w":1.25},
|
||||
{"label":"7", "x":17, "y":1},
|
||||
{"label":"8", "x":18, "y":1},
|
||||
{"label":"9", "x":19, "y":1},
|
||||
{"label":"Field -", "x":20, "y":1},
|
||||
{"label":"Print", "x":0, "y":2},
|
||||
{"label":"Help", "x":1, "y":2},
|
||||
{"label":"Caps Lock", "x":2.25, "y":2, "w":1.75},
|
||||
{"label":"A", "x":4, "y":2},
|
||||
{"label":"S", "x":5, "y":2},
|
||||
{"label":"D", "x":6, "y":2},
|
||||
{"label":"F", "x":7, "y":2},
|
||||
{"label":"G", "x":8, "y":2},
|
||||
{"label":"H", "x":9, "y":2},
|
||||
{"label":"J", "x":10, "y":2},
|
||||
{"label":"K", "x":11, "y":2},
|
||||
{"label":"L", "x":12, "y":2},
|
||||
{"label":";", "x":13, "y":2},
|
||||
{"label":"'", "x":14, "y":2},
|
||||
{"label":"{", "x":15, "y":2},
|
||||
{"label":"Field Exit", "x":16, "y":1, "h":2},
|
||||
{"label":"4", "x":17, "y":2},
|
||||
{"label":"5", "x":18, "y":2},
|
||||
{"label":"6", "x":19, "y":2},
|
||||
{"label":"Roll Up", "x":0, "y":3},
|
||||
{"label":"Roll Down", "x":1, "y":3},
|
||||
{"label":"Shift", "x":2.25, "y":3, "w":1.25},
|
||||
{"label":"<", "x":3.5, "y":3},
|
||||
{"label":"Z", "x":4.5, "y":3},
|
||||
{"label":"X", "x":5.5, "y":3},
|
||||
{"label":"C", "x":6.5, "y":3},
|
||||
{"label":"V", "x":7.5, "y":3},
|
||||
{"label":"B", "x":8.5, "y":3},
|
||||
{"label":"N", "x":9.5, "y":3},
|
||||
{"label":"M", "x":10.5, "y":3},
|
||||
{"label":",", "x":11.5, "y":3},
|
||||
{"label":".", "x":12.5, "y":3},
|
||||
{"label":"/", "x":13.5, "y":3},
|
||||
{"label":"Shift", "x":14.5, "y":3, "w":1.5},
|
||||
{"label":"Return", "x":16, "y":3},
|
||||
{"label":"1", "x":17, "y":3},
|
||||
{"label":"2", "x":18, "y":3},
|
||||
{"label":"3", "x":19, "y":3},
|
||||
{"label":"Field +", "x":20, "y":2, "h":3},
|
||||
{"label":"Left", "x":0, "y":4},
|
||||
{"label":"Right", "x":1, "y":4},
|
||||
{"label":"Error Reset", "x":2.25, "y":4, "w":2},
|
||||
{"label":"Space", "x":4.25, "y":4, "w":9.75},
|
||||
{"label":"Enter Rec Adv", "x":14, "y":4, "w":2},
|
||||
{"label":"0", "x":16, "y":4, "w":2},
|
||||
{"label":".", "x":18, "y":4, "w":2}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# IBM 5291 keyboard converter
|
||||
|
||||

|
||||
[IBM 5291](https://deskthority.net/wiki/IBM_Model_F#IBM_5291_Keyboard)
|
||||
|
||||
A converter for the eponymous keyboard.
|
||||
|
||||
@@ -14,7 +14,7 @@ Make example for this keyboard (after setting up your build environment):
|
||||
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).
|
||||
|
||||
|
||||
the pinout is as follows:
|
||||
The pinout is as follows:
|
||||
|
||||
IBM−5291−Cable to Pinhead−14
|
||||
|
||||
@@ -35,7 +35,8 @@ IBM−5291−Cable to Pinhead−14
|
||||
13| Strobe
|
||||
14| Out
|
||||
|
||||
the pins on this connector are organized 
|
||||
The pins on this connector are organized
|
||||

|
||||
|
||||
IBM−5291−2 Cable with DB15M connector
|
||||
|
||||
@@ -55,10 +56,11 @@ IBM−5291−2 Cable with DB15M connector
|
||||
|14 | PE
|
||||
|15 | NC
|
||||
|
||||
the above connector is actually numbered so it should be easier to determine
|
||||
The above connector is actually numbered so it should be easier to determine
|
||||
where the needed connections are.
|
||||
|
||||
to connect to the teensy, the following are pins are needed (if you should choose not set your own):
|
||||
To connect to the teensy, the following are pins are needed (if you should choose not set your own):
|
||||
|
||||
* PB0 -> PB6 are connected to D0 -> D6
|
||||
* +5V is connected to the corresponding teensy pin
|
||||
* gnd is as well, only one of the gnd pins needs to be connected though.
|
||||
|
||||
83
keyboards/converter/palm_usb/stowaway/info.json
Normal file
83
keyboards/converter/palm_usb/stowaway/info.json
Normal file
@@ -0,0 +1,83 @@
|
||||
{
|
||||
"keyboard_name": "Palm Stowaway Serial",
|
||||
"keyboard_folder": "converter/palm_usb/stowaway",
|
||||
"url": "",
|
||||
"maintainer": "qmk",
|
||||
"width": 15.25,
|
||||
"height": 5,
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"label":"1", "x":0.5, "y":0},
|
||||
{"label":"2", "x":1.5, "y":0},
|
||||
{"label":"3", "x":2.5, "y":0},
|
||||
{"label":"4", "x":3.5, "y":0},
|
||||
{"label":"5", "x":4.5, "y":0},
|
||||
{"label":"6", "x":5.5, "y":0},
|
||||
{"label":"7", "x":6.5, "y":0},
|
||||
{"label":"8", "x":7.5, "y":0},
|
||||
{"label":"9", "x":8.5, "y":0},
|
||||
{"label":"0", "x":9.5, "y":0},
|
||||
{"label":"MINS", "x":10.5, "y":0},
|
||||
{"label":"EQL", "x":11.5, "y":0},
|
||||
{"label":"BACK", "x":12.5, "y":0, "w":1.5},
|
||||
{"label":"APP0", "x":14.25, "y":1, "h":0.6875},
|
||||
{"label":"TAB", "x":0, "y":1},
|
||||
{"label":"Q", "x":1, "y":1},
|
||||
{"label":"W", "x":2, "y":1},
|
||||
{"label":"E", "x":3, "y":1},
|
||||
{"label":"R", "x":4, "y":1},
|
||||
{"label":"T", "x":5, "y":1},
|
||||
{"label":"Y", "x":6, "y":1},
|
||||
{"label":"U", "x":7, "y":1},
|
||||
{"label":"I", "x":8, "y":1},
|
||||
{"label":"O", "x":9, "y":1},
|
||||
{"label":"P", "x":10, "y":1},
|
||||
{"label":"LBRC", "x":11, "y":1},
|
||||
{"label":"RBRC", "x":12, "y":1},
|
||||
{"label":"BSLS", "x":13, "y":1},
|
||||
{"label":"APP1", "x":14.25, "y":1.6875, "h":0.6875},
|
||||
{"label":"CAPS", "x":0, "y":2, "w":1.25},
|
||||
{"label":"A", "x":1.25, "y":2},
|
||||
{"label":"S", "x":2.25, "y":2},
|
||||
{"label":"D", "x":3.25, "y":2},
|
||||
{"label":"F", "x":4.25, "y":2},
|
||||
{"label":"G", "x":5.25, "y":2},
|
||||
{"label":"H", "x":6.25, "y":2},
|
||||
{"label":"J", "x":7.25, "y":2},
|
||||
{"label":"K", "x":8.25, "y":2},
|
||||
{"label":"L", "x":9.25, "y":2},
|
||||
{"label":"SCLN", "x":10.25, "y":2},
|
||||
{"label":"QUOT", "x":11.25, "y":2},
|
||||
{"label":"ENT", "x":12.25, "y":2, "w":1.75},
|
||||
{"label":"APP2", "x":14.25, "y":2.375, "h":0.6875},
|
||||
{"label":"LSFT", "x":0, "y":3, "w":1.75},
|
||||
{"label":"Z", "x":1.75, "y":3},
|
||||
{"label":"X", "x":2.75, "y":3},
|
||||
{"label":"C", "x":3.75, "y":3},
|
||||
{"label":"V", "x":4.75, "y":3},
|
||||
{"label":"B", "x":5.75, "y":3},
|
||||
{"label":"N", "x":6.75, "y":3},
|
||||
{"label":"M", "x":7.75, "y":3},
|
||||
{"label":"COMM", "x":8.75, "y":3},
|
||||
{"label":"DOT", "x":9.75, "y":3},
|
||||
{"label":"SLSH", "x":10.75, "y":3},
|
||||
{"label":"RSFT", "x":11.75, "y":3, "w":1.25},
|
||||
{"label":"UP", "x":13, "y":3},
|
||||
{"label":"APP3", "x":14.25, "y":3.0625, "h":0.6875},
|
||||
{"label":"LCTL", "x":0, "y":4, "w":1.25},
|
||||
{"label":"FN", "x":1.25, "y":4},
|
||||
{"label":"LALT", "x":2.25, "y":4},
|
||||
{"label":"CMD", "x":3.25, "y":4},
|
||||
{"label":"SPACE", "x":4.25, "y":4, "w":3.5},
|
||||
{"label":"SPACE/New", "x":7.75, "y":4},
|
||||
{"label":"GRAVE", "x":8.75, "y":4},
|
||||
{"label":"DONE", "x":9.75, "y":4},
|
||||
{"label":"DEL", "x":10.75, "y":4, "w":1.25},
|
||||
{"label":"LEFT", "x":12, "y":4},
|
||||
{"label":"DOWN", "x":13, "y":4},
|
||||
{"label":"RIGHT", "x":14, "y":4}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
109
keyboards/converter/sun_usb/type3/info.json
Normal file
109
keyboards/converter/sun_usb/type3/info.json
Normal file
@@ -0,0 +1,109 @@
|
||||
{
|
||||
"keyboard_name": "Sun Type 3",
|
||||
"keyboard_folder": "converter/sun_usb/type3",
|
||||
"url": "",
|
||||
"maintainer": "qmk",
|
||||
"width": 21,
|
||||
"height": 6,
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"label":"STOP", "x":0, "y":0},
|
||||
{"label":"AGAIN", "x":1, "y":0},
|
||||
{"label":"CAPS LOCK", "x":2.5, "y":0},
|
||||
{"label":"F2", "x":3.5, "y":0},
|
||||
{"label":"F3", "x":4.5, "y":0, "w":2},
|
||||
{"label":"F4", "x":6.5, "y":0, "w":2},
|
||||
{"label":"F5", "x":8.5, "y":0, "w":2},
|
||||
{"label":"F6", "x":10.5, "y":0, "w":2},
|
||||
{"label":"F7", "x":12.5, "y":0, "w":2},
|
||||
{"label":"F8", "x":14.5, "y":0},
|
||||
{"label":"F9", "x":15.5, "y":0},
|
||||
{"label":"BACKSPACE", "x":16.5, "y":0},
|
||||
{"label":"R1", "x":18, "y":0},
|
||||
{"label":"R2", "x":19, "y":0},
|
||||
{"label":"R3", "x":20, "y":0},
|
||||
{"label":"PROPS", "x":0, "y":1},
|
||||
{"label":"UNDO", "x":1, "y":1},
|
||||
{"label":"ESC", "x":2.5, "y":1},
|
||||
{"label":"1", "x":3.5, "y":1},
|
||||
{"label":"2", "x":4.5, "y":1},
|
||||
{"label":"3", "x":5.5, "y":1},
|
||||
{"label":"4", "x":6.5, "y":1},
|
||||
{"label":"5", "x":7.5, "y":1},
|
||||
{"label":"6", "x":8.5, "y":1},
|
||||
{"label":"7", "x":9.5, "y":1},
|
||||
{"label":"8", "x":10.5, "y":1},
|
||||
{"label":"9", "x":11.5, "y":1},
|
||||
{"label":"0", "x":12.5, "y":1},
|
||||
{"label":"MINUS", "x":13.5, "y":1},
|
||||
{"label":"EQUAL", "x":14.5, "y":1},
|
||||
{"label":"BACKSLASH", "x":15.5, "y":1},
|
||||
{"label":"GRAVE", "x":16.5, "y":1},
|
||||
{"label":"R4", "x":18, "y":1},
|
||||
{"label":"R5", "x":19, "y":1},
|
||||
{"label":"R6", "x":20, "y":1},
|
||||
{"label":"FRONT", "x":0, "y":2},
|
||||
{"label":"COPY", "x":1, "y":2},
|
||||
{"label":"TAB", "x":2.5, "y":2, "w":1.5},
|
||||
{"label":"Q", "x":4, "y":2},
|
||||
{"label":"W", "x":5, "y":2},
|
||||
{"label":"E", "x":6, "y":2},
|
||||
{"label":"R", "x":7, "y":2},
|
||||
{"label":"T", "x":8, "y":2},
|
||||
{"label":"Y", "x":9, "y":2},
|
||||
{"label":"U", "x":10, "y":2},
|
||||
{"label":"I", "x":11, "y":2},
|
||||
{"label":"O", "x":12, "y":2},
|
||||
{"label":"P", "x":13, "y":2},
|
||||
{"label":"LBRACKET", "x":14, "y":2},
|
||||
{"label":"RBRACKET", "x":15, "y":2},
|
||||
{"label":"DELETE", "x":16, "y":2, "w":1.5},
|
||||
{"label":"R7", "x":18, "y":2},
|
||||
{"label":"R8", "x":19, "y":2},
|
||||
{"label":"R9", "x":20, "y":2},
|
||||
{"label":"OPEN", "x":0, "y":3},
|
||||
{"label":"PASTE", "x":1, "y":3},
|
||||
{"label":"CONTROL", "x":2.5, "y":3, "w":1.75},
|
||||
{"label":"A", "x":4.25, "y":3},
|
||||
{"label":"S", "x":5.25, "y":3},
|
||||
{"label":"D", "x":6.25, "y":3},
|
||||
{"label":"F", "x":7.25, "y":3},
|
||||
{"label":"G", "x":8.25, "y":3},
|
||||
{"label":"H", "x":9.25, "y":3},
|
||||
{"label":"J", "x":10.25, "y":3},
|
||||
{"label":"K", "x":11.25, "y":3},
|
||||
{"label":"L", "x":12.25, "y":3},
|
||||
{"label":"SEMICOLON", "x":13.25, "y":3},
|
||||
{"label":"QUOTE", "x":14.25, "y":3},
|
||||
{"label":"RETURN", "x":15.25, "y":3, "w":2.25},
|
||||
{"label":"R10", "x":18, "y":3},
|
||||
{"label":"R11", "x":19, "y":3},
|
||||
{"label":"R12", "x":20, "y":3},
|
||||
{"label":"FIND", "x":0, "y":4},
|
||||
{"label":"CUT", "x":1, "y":4},
|
||||
{"label":"LSHIFT", "x":2.5, "y":4, "w":2.25},
|
||||
{"label":"Z", "x":4.75, "y":4},
|
||||
{"label":"X", "x":5.75, "y":4},
|
||||
{"label":"C", "x":6.75, "y":4},
|
||||
{"label":"V", "x":7.75, "y":4},
|
||||
{"label":"B", "x":8.75, "y":4},
|
||||
{"label":"N", "x":9.75, "y":4},
|
||||
{"label":"M", "x":10.75, "y":4},
|
||||
{"label":"COMMA", "x":11.75, "y":4},
|
||||
{"label":"PERIOD", "x":12.75, "y":4},
|
||||
{"label":"SLASH", "x":13.75, "y":4},
|
||||
{"label":"RSHIFT", "x":14.75, "y":4, "w":1.75},
|
||||
{"label":"LINE FEED", "x":16.5, "y":4},
|
||||
{"label":"R13", "x":18, "y":4},
|
||||
{"label":"R14", "x":19, "y":4},
|
||||
{"label":"R15", "x":20, "y":4},
|
||||
{"label":"CAPS", "x":2.5, "y":5, "w":1.25},
|
||||
{"label":"LEFT", "x":3.75, "y":5, "w":1.5},
|
||||
{"label":"SPACE", "x":5.25, "y":5, "w":9},
|
||||
{"label":"RIGHT", "x":14.25, "y":5, "w":1.5},
|
||||
{"label":"ALTERNATE", "x":15.75, "y":5, "w":1.75}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
381
keyboards/converter/sun_usb/type5/info.json
Normal file
381
keyboards/converter/sun_usb/type5/info.json
Normal file
@@ -0,0 +1,381 @@
|
||||
{
|
||||
"keyboard_name": "Sun Type 5",
|
||||
"keyboard_folder": "converter/sun_usb/type5",
|
||||
"url": "",
|
||||
"maintainer": "qmk",
|
||||
"width": 24.75,
|
||||
"height": 7,
|
||||
"layouts": {
|
||||
"LAYOUT_jp_unix": {
|
||||
"layout": [
|
||||
{"label":"HELP", "x":0, "y":0, "w":2},
|
||||
{"label":"NO", "x":2.25, "y":0},
|
||||
{"label":"F1", "x":4.25, "y":0},
|
||||
{"label":"F2", "x":5.25, "y":0},
|
||||
{"label":"F3", "x":6.25, "y":0},
|
||||
{"label":"F4", "x":7.25, "y":0},
|
||||
{"label":"F5", "x":8.75, "y":0},
|
||||
{"label":"F6", "x":9.75, "y":0},
|
||||
{"label":"F7", "x":10.75, "y":0},
|
||||
{"label":"F8", "x":11.75, "y":0},
|
||||
{"label":"F9", "x":13.25, "y":0},
|
||||
{"label":"F10", "x":14.25, "y":0},
|
||||
{"label":"F11", "x":15.25, "y":0},
|
||||
{"label":"F12", "x":16.25, "y":0},
|
||||
{"label":"PRINT SCREEN", "x":17.5, "y":0},
|
||||
{"label":"SCROLL LOCK", "x":18.5, "y":0},
|
||||
{"label":"PAUSE", "x":19.5, "y":0},
|
||||
{"label":"MUTE", "x":20.75, "y":0},
|
||||
{"label":"VOLD", "x":21.75, "y":0},
|
||||
{"label":"VOLU", "x":22.75, "y":0},
|
||||
{"label":"PWR", "x":23.75, "y":0},
|
||||
{"label":"STOP", "x":0, "y":2},
|
||||
{"label":"AGAIN", "x":1, "y":2},
|
||||
{"label":"ESC", "x":2.25, "y":2},
|
||||
{"label":"1", "x":3.25, "y":2},
|
||||
{"label":"2", "x":4.25, "y":2},
|
||||
{"label":"3", "x":5.25, "y":2},
|
||||
{"label":"4", "x":6.25, "y":2},
|
||||
{"label":"5", "x":7.25, "y":2},
|
||||
{"label":"6", "x":8.25, "y":2},
|
||||
{"label":"7", "x":9.25, "y":2},
|
||||
{"label":"8", "x":10.25, "y":2},
|
||||
{"label":"9", "x":11.25, "y":2},
|
||||
{"label":"0", "x":12.25, "y":2},
|
||||
{"label":"MINUS", "x":13.25, "y":2},
|
||||
{"label":"EQUAL", "x":14.25, "y":2},
|
||||
{"label":"BACKSLASH", "x":15.25, "y":2},
|
||||
{"label":"GRAVE", "x":16.25, "y":2},
|
||||
{"label":"INSERT", "x":17.5, "y":2},
|
||||
{"label":"HOME", "x":18.5, "y":2},
|
||||
{"label":"PAGE UP", "x":19.5, "y":2},
|
||||
{"label":"NUM LOCK", "x":20.75, "y":2},
|
||||
{"label":"PSLASH", "x":21.75, "y":2},
|
||||
{"label":"PASTERISK", "x":22.75, "y":2},
|
||||
{"label":"PMINUS", "x":23.75, "y":2},
|
||||
{"label":"MENU", "x":0, "y":3},
|
||||
{"label":"UNDO", "x":1, "y":3},
|
||||
{"label":"TAB", "x":2.25, "y":3, "w":1.5},
|
||||
{"label":"Q", "x":3.75, "y":3},
|
||||
{"label":"W", "x":4.75, "y":3},
|
||||
{"label":"E", "x":5.75, "y":3},
|
||||
{"label":"R", "x":6.75, "y":3},
|
||||
{"label":"T", "x":7.75, "y":3},
|
||||
{"label":"Y", "x":8.75, "y":3},
|
||||
{"label":"U", "x":9.75, "y":3},
|
||||
{"label":"I", "x":10.75, "y":3},
|
||||
{"label":"O", "x":11.75, "y":3},
|
||||
{"label":"P", "x":12.75, "y":3},
|
||||
{"label":"LBRACKET", "x":13.75, "y":3},
|
||||
{"label":"RBRACKET", "x":14.75, "y":3},
|
||||
{"label":"BACKSPACE", "x":15.75, "y":3, "w":1.5},
|
||||
{"label":"DELETE", "x":17.5, "y":3},
|
||||
{"label":"END", "x":18.5, "y":3},
|
||||
{"label":"PAGE DOWN", "x":19.5, "y":3},
|
||||
{"label":"P7", "x":20.75, "y":3},
|
||||
{"label":"P8", "x":21.75, "y":3},
|
||||
{"label":"P9", "x":22.75, "y":3},
|
||||
{"label":"PPLUS", "x":23.75, "y":3, "h":2},
|
||||
{"label":"SELECT", "x":0, "y":4},
|
||||
{"label":"COPY", "x":1, "y":4},
|
||||
{"label":"LCTRL", "x":2.25, "y":4, "w":1.75},
|
||||
{"label":"A", "x":4, "y":4},
|
||||
{"label":"S", "x":5, "y":4},
|
||||
{"label":"D", "x":6, "y":4},
|
||||
{"label":"F", "x":7, "y":4},
|
||||
{"label":"G", "x":8, "y":4},
|
||||
{"label":"H", "x":9, "y":4},
|
||||
{"label":"J", "x":10, "y":4},
|
||||
{"label":"K", "x":11, "y":4},
|
||||
{"label":"L", "x":12, "y":4},
|
||||
{"label":"SEMICOLON", "x":13, "y":4},
|
||||
{"label":"QUOTE", "x":14, "y":4},
|
||||
{"label":"ENTER", "x":15, "y":4, "w":2.25},
|
||||
{"label":"P4", "x":20.75, "y":4},
|
||||
{"label":"P5", "x":21.75, "y":4},
|
||||
{"label":"P6", "x":22.75, "y":4},
|
||||
{"label":"EXECUTE", "x":0, "y":5},
|
||||
{"label":"PASTE", "x":1, "y":5},
|
||||
{"label":"LSHIFT", "x":2.25, "y":5, "w":2.25},
|
||||
{"label":"Z", "x":4.5, "y":5},
|
||||
{"label":"X", "x":5.5, "y":5},
|
||||
{"label":"C", "x":6.5, "y":5},
|
||||
{"label":"V", "x":7.5, "y":5},
|
||||
{"label":"B", "x":8.5, "y":5},
|
||||
{"label":"N", "x":9.5, "y":5},
|
||||
{"label":"M", "x":10.5, "y":5},
|
||||
{"label":"COMMA", "x":11.5, "y":5},
|
||||
{"label":"PERIOD", "x":12.5, "y":5},
|
||||
{"label":"SLASH", "x":13.5, "y":5},
|
||||
{"label":"RSHIFT", "x":14.5, "y":5, "w":2.75},
|
||||
{"label":"UP", "x":18.5, "y":5},
|
||||
{"label":"P1", "x":20.75, "y":5},
|
||||
{"label":"P2", "x":21.75, "y":5},
|
||||
{"label":"P3", "x":22.75, "y":5},
|
||||
{"label":"PENTER", "x":23.75, "y":5, "h":2},
|
||||
{"label":"FIND", "x":0, "y":6},
|
||||
{"label":"CUT", "x":1, "y":6},
|
||||
{"label":"CAPS LOCK", "x":2.25, "y":6},
|
||||
{"label":"LALT", "x":3.25, "y":6},
|
||||
{"label":"LGUI", "x":4.25, "y":6},
|
||||
{"label":"HENKAN", "x":5.25, "y":6, "w":1.5},
|
||||
{"label":"SPACE", "x":6.75, "y":6, "w":5},
|
||||
{"label":"MUHENKAN", "x":11.75, "y":6, "w":1.5},
|
||||
{"label":"KANA", "x":13.25, "y":6},
|
||||
{"label":"RGUI", "x":14.25, "y":6},
|
||||
{"label":"APP", "x":15.25, "y":6},
|
||||
{"label":"RALT", "x":16.25, "y":6},
|
||||
{"label":"LEFT", "x":17.5, "y":6},
|
||||
{"label":"DOWN", "x":18.5, "y":6},
|
||||
{"label":"RIGHT", "x":19.5, "y":6},
|
||||
{"label":"P0", "x":20.75, "y":6, "w":2},
|
||||
{"label":"PDOT", "x":22.75, "y":6}
|
||||
]
|
||||
},
|
||||
"LAYOUT_us_unix": {
|
||||
"layout": [
|
||||
{"label":"HELP", "x":0, "y":0, "w":2},
|
||||
{"label":"NO", "x":2.25, "y":0},
|
||||
{"label":"F1", "x":4.25, "y":0},
|
||||
{"label":"F2", "x":5.25, "y":0},
|
||||
{"label":"F3", "x":6.25, "y":0},
|
||||
{"label":"F4", "x":7.25, "y":0},
|
||||
{"label":"F5", "x":8.75, "y":0},
|
||||
{"label":"F6", "x":9.75, "y":0},
|
||||
{"label":"F7", "x":10.75, "y":0},
|
||||
{"label":"F8", "x":11.75, "y":0},
|
||||
{"label":"F9", "x":13.25, "y":0},
|
||||
{"label":"F10", "x":14.25, "y":0},
|
||||
{"label":"F11", "x":15.25, "y":0},
|
||||
{"label":"F12", "x":16.25, "y":0},
|
||||
{"label":"PRINT SCREEN", "x":17.5, "y":0},
|
||||
{"label":"SCROLL LOCK", "x":18.5, "y":0},
|
||||
{"label":"PAUSE", "x":19.5, "y":0},
|
||||
{"label":"MUTE", "x":20.75, "y":0},
|
||||
{"label":"VOLD", "x":21.75, "y":0},
|
||||
{"label":"VOLU", "x":22.75, "y":0},
|
||||
{"label":"PWR", "x":23.75, "y":0},
|
||||
{"label":"STOP", "x":0, "y":2},
|
||||
{"label":"AGAIN", "x":1, "y":2},
|
||||
{"label":"ESC", "x":2.25, "y":2},
|
||||
{"label":"1", "x":3.25, "y":2},
|
||||
{"label":"2", "x":4.25, "y":2},
|
||||
{"label":"3", "x":5.25, "y":2},
|
||||
{"label":"4", "x":6.25, "y":2},
|
||||
{"label":"5", "x":7.25, "y":2},
|
||||
{"label":"6", "x":8.25, "y":2},
|
||||
{"label":"7", "x":9.25, "y":2},
|
||||
{"label":"8", "x":10.25, "y":2},
|
||||
{"label":"9", "x":11.25, "y":2},
|
||||
{"label":"0", "x":12.25, "y":2},
|
||||
{"label":"MINUS", "x":13.25, "y":2},
|
||||
{"label":"EQUAL", "x":14.25, "y":2},
|
||||
{"label":"BACKSLASH", "x":15.25, "y":2},
|
||||
{"label":"GRAVE", "x":16.25, "y":2},
|
||||
{"label":"INSERT", "x":17.5, "y":2},
|
||||
{"label":"HOME", "x":18.5, "y":2},
|
||||
{"label":"PAGE UP", "x":19.5, "y":2},
|
||||
{"label":"NUM LOCK", "x":20.75, "y":2},
|
||||
{"label":"PSLASH", "x":21.75, "y":2},
|
||||
{"label":"PASTERISK", "x":22.75, "y":2},
|
||||
{"label":"PMINUS", "x":23.75, "y":2},
|
||||
{"label":"MENU", "x":0, "y":3},
|
||||
{"label":"UNDO", "x":1, "y":3},
|
||||
{"label":"TAB", "x":2.25, "y":3, "w":1.5},
|
||||
{"label":"Q", "x":3.75, "y":3},
|
||||
{"label":"W", "x":4.75, "y":3},
|
||||
{"label":"E", "x":5.75, "y":3},
|
||||
{"label":"R", "x":6.75, "y":3},
|
||||
{"label":"T", "x":7.75, "y":3},
|
||||
{"label":"Y", "x":8.75, "y":3},
|
||||
{"label":"U", "x":9.75, "y":3},
|
||||
{"label":"I", "x":10.75, "y":3},
|
||||
{"label":"O", "x":11.75, "y":3},
|
||||
{"label":"P", "x":12.75, "y":3},
|
||||
{"label":"LBRACKET", "x":13.75, "y":3},
|
||||
{"label":"RBRACKET", "x":14.75, "y":3},
|
||||
{"label":"BACKSPACE", "x":15.75, "y":3, "w":1.5},
|
||||
{"label":"DELETE", "x":17.5, "y":3},
|
||||
{"label":"END", "x":18.5, "y":3},
|
||||
{"label":"PAGE DOWN", "x":19.5, "y":3},
|
||||
{"label":"P7", "x":20.75, "y":3},
|
||||
{"label":"P8", "x":21.75, "y":3},
|
||||
{"label":"P9", "x":22.75, "y":3},
|
||||
{"label":"PPLUS", "x":23.75, "y":3, "h":2},
|
||||
{"label":"SELECT", "x":0, "y":4},
|
||||
{"label":"COPY", "x":1, "y":4},
|
||||
{"label":"LCTRL", "x":2.25, "y":4, "w":1.75},
|
||||
{"label":"A", "x":4, "y":4},
|
||||
{"label":"S", "x":5, "y":4},
|
||||
{"label":"D", "x":6, "y":4},
|
||||
{"label":"F", "x":7, "y":4},
|
||||
{"label":"G", "x":8, "y":4},
|
||||
{"label":"H", "x":9, "y":4},
|
||||
{"label":"J", "x":10, "y":4},
|
||||
{"label":"K", "x":11, "y":4},
|
||||
{"label":"L", "x":12, "y":4},
|
||||
{"label":"SEMICOLON", "x":13, "y":4},
|
||||
{"label":"QUOTE", "x":14, "y":4},
|
||||
{"label":"ENTER", "x":15, "y":4, "w":2.25},
|
||||
{"label":"P4", "x":20.75, "y":4},
|
||||
{"label":"P5", "x":21.75, "y":4},
|
||||
{"label":"P6", "x":22.75, "y":4},
|
||||
{"label":"EXECUTE", "x":0, "y":5},
|
||||
{"label":"PASTE", "x":1, "y":5},
|
||||
{"label":"LSHIFT", "x":2.25, "y":5, "w":2.25},
|
||||
{"label":"Z", "x":4.5, "y":5},
|
||||
{"label":"X", "x":5.5, "y":5},
|
||||
{"label":"C", "x":6.5, "y":5},
|
||||
{"label":"V", "x":7.5, "y":5},
|
||||
{"label":"B", "x":8.5, "y":5},
|
||||
{"label":"N", "x":9.5, "y":5},
|
||||
{"label":"M", "x":10.5, "y":5},
|
||||
{"label":"COMMA", "x":11.5, "y":5},
|
||||
{"label":"PERIOD", "x":12.5, "y":5},
|
||||
{"label":"SLASH", "x":13.5, "y":5},
|
||||
{"label":"RSHIFT", "x":14.5, "y":5, "w":2.75},
|
||||
{"label":"UP", "x":18.5, "y":5},
|
||||
{"label":"P1", "x":20.75, "y":5},
|
||||
{"label":"P2", "x":21.75, "y":5},
|
||||
{"label":"P3", "x":22.75, "y":5},
|
||||
{"label":"PENTER", "x":23.75, "y":5, "h":2},
|
||||
{"label":"FIND", "x":0, "y":6},
|
||||
{"label":"CUT", "x":1, "y":6},
|
||||
{"label":"CAPS LOCK", "x":2.25, "y":6, "w":1.75},
|
||||
{"label":"LALT", "x":4, "y":6},
|
||||
{"label":"LGUI", "x":5, "y":6},
|
||||
{"label":"SPACE", "x":6, "y":6, "w":8.25},
|
||||
{"label":"RGUI", "x":14.25, "y":6},
|
||||
{"label":"APP", "x":15.25, "y":6},
|
||||
{"label":"RALT", "x":16.25, "y":6},
|
||||
{"label":"LEFT", "x":17.5, "y":6},
|
||||
{"label":"DOWN", "x":18.5, "y":6},
|
||||
{"label":"RIGHT", "x":19.5, "y":6},
|
||||
{"label":"P0", "x":20.75, "y":6, "w":2},
|
||||
{"label":"PDOT", "x":22.75, "y":6}
|
||||
]
|
||||
},
|
||||
"LAYOUT_ansi": {
|
||||
"layout": [
|
||||
{"label":"HELP", "x":0, "y":0, "w":2},
|
||||
{"label":"ESC", "x":2.25, "y":0},
|
||||
{"label":"F1", "x":4.25, "y":0},
|
||||
{"label":"F2", "x":5.25, "y":0},
|
||||
{"label":"F3", "x":6.25, "y":0},
|
||||
{"label":"F4", "x":7.25, "y":0},
|
||||
{"label":"F5", "x":8.75, "y":0},
|
||||
{"label":"F6", "x":9.75, "y":0},
|
||||
{"label":"F7", "x":10.75, "y":0},
|
||||
{"label":"F8", "x":11.75, "y":0},
|
||||
{"label":"F9", "x":13.25, "y":0},
|
||||
{"label":"F10", "x":14.25, "y":0},
|
||||
{"label":"F11", "x":15.25, "y":0},
|
||||
{"label":"F12", "x":16.25, "y":0},
|
||||
{"label":"PRINT SCREEN", "x":17.5, "y":0},
|
||||
{"label":"SCROLL LOCK", "x":18.5, "y":0},
|
||||
{"label":"PAUSE", "x":19.5, "y":0},
|
||||
{"label":"MUTE", "x":20.75, "y":0},
|
||||
{"label":"VOLD", "x":21.75, "y":0},
|
||||
{"label":"VOLU", "x":22.75, "y":0},
|
||||
{"label":"PWR", "x":23.75, "y":0},
|
||||
{"label":"STOP", "x":0, "y":2},
|
||||
{"label":"AGAIN", "x":1, "y":2},
|
||||
{"label":"GRAVE", "x":2.25, "y":2},
|
||||
{"label":"1", "x":3.25, "y":2},
|
||||
{"label":"2", "x":4.25, "y":2},
|
||||
{"label":"3", "x":5.25, "y":2},
|
||||
{"label":"4", "x":6.25, "y":2},
|
||||
{"label":"5", "x":7.25, "y":2},
|
||||
{"label":"6", "x":8.25, "y":2},
|
||||
{"label":"7", "x":9.25, "y":2},
|
||||
{"label":"8", "x":10.25, "y":2},
|
||||
{"label":"9", "x":11.25, "y":2},
|
||||
{"label":"0", "x":12.25, "y":2},
|
||||
{"label":"MINUS", "x":13.25, "y":2},
|
||||
{"label":"EQUAL", "x":14.25, "y":2},
|
||||
{"label":"BACKSPACE", "x":15.25, "y":2, "w":2},
|
||||
{"label":"INSERT", "x":17.5, "y":2},
|
||||
{"label":"HOME", "x":18.5, "y":2},
|
||||
{"label":"PAGE UP", "x":19.5, "y":2},
|
||||
{"label":"NUM LOCK", "x":20.75, "y":2},
|
||||
{"label":"PSLASH", "x":21.75, "y":2},
|
||||
{"label":"PASTERISK", "x":22.75, "y":2},
|
||||
{"label":"PMINUS", "x":23.75, "y":2},
|
||||
{"label":"MENU", "x":0, "y":3},
|
||||
{"label":"UNDO", "x":1, "y":3},
|
||||
{"label":"TAB", "x":2.25, "y":3, "w":1.5},
|
||||
{"label":"Q", "x":3.75, "y":3},
|
||||
{"label":"W", "x":4.75, "y":3},
|
||||
{"label":"E", "x":5.75, "y":3},
|
||||
{"label":"R", "x":6.75, "y":3},
|
||||
{"label":"T", "x":7.75, "y":3},
|
||||
{"label":"Y", "x":8.75, "y":3},
|
||||
{"label":"U", "x":9.75, "y":3},
|
||||
{"label":"I", "x":10.75, "y":3},
|
||||
{"label":"O", "x":11.75, "y":3},
|
||||
{"label":"P", "x":12.75, "y":3},
|
||||
{"label":"LBRACKET", "x":13.75, "y":3},
|
||||
{"label":"RBRACKET", "x":14.75, "y":3},
|
||||
{"label":"BACKSLASH", "x":15.75, "y":3, "w":1.5},
|
||||
{"label":"DELETE", "x":17.5, "y":3},
|
||||
{"label":"END", "x":18.5, "y":3},
|
||||
{"label":"PAGE DOWN", "x":19.5, "y":3},
|
||||
{"label":"P7", "x":20.75, "y":3},
|
||||
{"label":"P8", "x":21.75, "y":3},
|
||||
{"label":"P9", "x":22.75, "y":3},
|
||||
{"label":"PPLUS", "x":23.75, "y":3, "h":2},
|
||||
{"label":"SELECT", "x":0, "y":4},
|
||||
{"label":"COPY", "x":1, "y":4},
|
||||
{"label":"CAPS LOCK", "x":2.25, "y":4, "w":1.75},
|
||||
{"label":"A", "x":4, "y":4},
|
||||
{"label":"S", "x":5, "y":4},
|
||||
{"label":"D", "x":6, "y":4},
|
||||
{"label":"F", "x":7, "y":4},
|
||||
{"label":"G", "x":8, "y":4},
|
||||
{"label":"H", "x":9, "y":4},
|
||||
{"label":"J", "x":10, "y":4},
|
||||
{"label":"K", "x":11, "y":4},
|
||||
{"label":"L", "x":12, "y":4},
|
||||
{"label":"SEMICOLON", "x":13, "y":4},
|
||||
{"label":"QUOTE", "x":14, "y":4},
|
||||
{"label":"ENTER", "x":15, "y":4, "w":2.25},
|
||||
{"label":"P4", "x":20.75, "y":4},
|
||||
{"label":"P5", "x":21.75, "y":4},
|
||||
{"label":"P6", "x":22.75, "y":4},
|
||||
{"label":"EXECUTE", "x":0, "y":5},
|
||||
{"label":"PASTE", "x":1, "y":5},
|
||||
{"label":"LSHIFT", "x":2.25, "y":5, "w":2.25},
|
||||
{"label":"Z", "x":4.5, "y":5},
|
||||
{"label":"X", "x":5.5, "y":5},
|
||||
{"label":"C", "x":6.5, "y":5},
|
||||
{"label":"V", "x":7.5, "y":5},
|
||||
{"label":"B", "x":8.5, "y":5},
|
||||
{"label":"N", "x":9.5, "y":5},
|
||||
{"label":"M", "x":10.5, "y":5},
|
||||
{"label":"COMMA", "x":11.5, "y":5},
|
||||
{"label":"PERIOD", "x":12.5, "y":5},
|
||||
{"label":"SLASH", "x":13.5, "y":5},
|
||||
{"label":"RSHIFT", "x":14.5, "y":5, "w":2.75},
|
||||
{"label":"UP", "x":18.5, "y":5},
|
||||
{"label":"P1", "x":20.75, "y":5},
|
||||
{"label":"P2", "x":21.75, "y":5},
|
||||
{"label":"P3", "x":22.75, "y":5},
|
||||
{"label":"PENTER", "x":23.75, "y":5, "h":2},
|
||||
{"label":"FIND", "x":0, "y":6},
|
||||
{"label":"CUT", "x":1, "y":6},
|
||||
{"label":"LCTRL", "x":2.25, "y":6, "w":1.75},
|
||||
{"label":"LALT", "x":4, "y":6},
|
||||
{"label":"LGUI", "x":5, "y":6},
|
||||
{"label":"SPACE", "x":6, "y":6, "w":8.25},
|
||||
{"label":"RGUI", "x":14.25, "y":6},
|
||||
{"label":"APP", "x":15.25, "y":6},
|
||||
{"label":"RALT", "x":16.25, "y":6},
|
||||
{"label":"LEFT", "x":17.5, "y":6},
|
||||
{"label":"DOWN", "x":18.5, "y":6},
|
||||
{"label":"RIGHT", "x":19.5, "y":6},
|
||||
{"label":"P0", "x":20.75, "y":6, "w":2},
|
||||
{"label":"PDOT", "x":22.75, "y":6}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
229
keyboards/converter/xt_usb/info.json
Normal file
229
keyboards/converter/xt_usb/info.json
Normal file
@@ -0,0 +1,229 @@
|
||||
{
|
||||
"keyboard_name": "IBM PC XT",
|
||||
"keyboard_folder": "converter/xt_usb",
|
||||
"url": "",
|
||||
"maintainer": "qmk",
|
||||
"width": 21,
|
||||
"height": 5,
|
||||
"layouts": {
|
||||
"LAYOUT_xt": {
|
||||
"layout": [
|
||||
{"label":"F1", "x":0, "y":0},
|
||||
{"label":"F2", "x":1, "y":0},
|
||||
{"label":"Esc", "x":2.25, "y":0},
|
||||
{"label":"1", "x":3.25, "y":0},
|
||||
{"label":"2", "x":4.25, "y":0},
|
||||
{"label":"3", "x":5.25, "y":0},
|
||||
{"label":"4", "x":6.25, "y":0},
|
||||
{"label":"5", "x":7.25, "y":0},
|
||||
{"label":"6", "x":8.25, "y":0},
|
||||
{"label":"7", "x":9.25, "y":0},
|
||||
{"label":"8", "x":10.25, "y":0},
|
||||
{"label":"9", "x":11.25, "y":0},
|
||||
{"label":"0", "x":12.25, "y":0},
|
||||
{"label":"-", "x":13.25, "y":0},
|
||||
{"label":"=", "x":14.25, "y":0},
|
||||
{"label":"Backspace", "x":15.25, "y":0, "w":1.75},
|
||||
{"label":"Num Lock", "x":17, "y":0, "w":2},
|
||||
{"label":"Scroll Lock", "x":19, "y":0, "w":2},
|
||||
{"label":"F3", "x":0, "y":1},
|
||||
{"label":"F4", "x":1, "y":1},
|
||||
{"label":"Tab", "x":2.25, "y":1, "w":1.5},
|
||||
{"label":"Q", "x":3.75, "y":1},
|
||||
{"label":"W", "x":4.75, "y":1},
|
||||
{"label":"E", "x":5.75, "y":1},
|
||||
{"label":"R", "x":6.75, "y":1},
|
||||
{"label":"T", "x":7.75, "y":1},
|
||||
{"label":"Y", "x":8.75, "y":1},
|
||||
{"label":"U", "x":9.75, "y":1},
|
||||
{"label":"I", "x":10.75, "y":1},
|
||||
{"label":"O", "x":11.75, "y":1},
|
||||
{"label":"P", "x":12.75, "y":1},
|
||||
{"label":"[", "x":13.75, "y":1},
|
||||
{"label":"]", "x":14.75, "y":1},
|
||||
{"label":"7", "x":17, "y":1},
|
||||
{"label":"8", "x":18, "y":1},
|
||||
{"label":"9", "x":19, "y":1},
|
||||
{"label":"-", "x":20, "y":1},
|
||||
{"label":"F5", "x":0, "y":2},
|
||||
{"label":"F6", "x":1, "y":2},
|
||||
{"label":"Ctrl", "x":2.25, "y":2, "w":1.75},
|
||||
{"label":"A", "x":4, "y":2},
|
||||
{"label":"S", "x":5, "y":2},
|
||||
{"label":"D", "x":6, "y":2},
|
||||
{"label":"F", "x":7, "y":2},
|
||||
{"label":"G", "x":8, "y":2},
|
||||
{"label":"H", "x":9, "y":2},
|
||||
{"label":"J", "x":10, "y":2},
|
||||
{"label":"K", "x":11, "y":2},
|
||||
{"label":"L", "x":12, "y":2},
|
||||
{"label":";", "x":13, "y":2},
|
||||
{"label":"'", "x":14, "y":2},
|
||||
{"label":"`", "x":15, "y":2},
|
||||
{"label":"Enter", "x":16, "y":1, "h":2},
|
||||
{"label":"4", "x":17, "y":2},
|
||||
{"label":"5", "x":18, "y":2},
|
||||
{"label":"6", "x":19, "y":2},
|
||||
{"label":"F7", "x":0, "y":3},
|
||||
{"label":"F8", "x":1, "y":3},
|
||||
{"label":"Shift", "x":2.25, "y":3, "w":1.25},
|
||||
{"label":"\\", "x":3.5, "y":3},
|
||||
{"label":"Z", "x":4.5, "y":3},
|
||||
{"label":"X", "x":5.5, "y":3},
|
||||
{"label":"C", "x":6.5, "y":3},
|
||||
{"label":"V", "x":7.5, "y":3},
|
||||
{"label":"B", "x":8.5, "y":3},
|
||||
{"label":"N", "x":9.5, "y":3},
|
||||
{"label":"M", "x":10.5, "y":3},
|
||||
{"label":",", "x":11.5, "y":3},
|
||||
{"label":".", "x":12.5, "y":3},
|
||||
{"label":"/", "x":13.5, "y":3},
|
||||
{"label":"Shift", "x":14.5, "y":3, "w":1.5},
|
||||
{"label":"Print Screen", "x":16, "y":3},
|
||||
{"label":"1", "x":17, "y":3},
|
||||
{"label":"2", "x":18, "y":3},
|
||||
{"label":"3", "x":19, "y":3},
|
||||
{"label":"+", "x":20, "y":2, "h":3},
|
||||
{"label":"F9", "x":0, "y":4},
|
||||
{"label":"F10", "x":1, "y":4},
|
||||
{"label":"Alt", "x":2.25, "y":4, "w":2},
|
||||
{"label":"Space", "x":4.25, "y":4, "w":9.75},
|
||||
{"label":"Caps Lock", "x":14, "y":4, "w":2},
|
||||
{"label":"0", "x":16, "y":4, "w":2},
|
||||
{"label":".", "x":18, "y":4, "w":2}
|
||||
]
|
||||
},
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"label":"F13", "x":2, "y":0},
|
||||
{"label":"F14", "x":3, "y":0},
|
||||
{"label":"F15", "x":4, "y":0},
|
||||
{"label":"F16", "x":5, "y":0},
|
||||
{"label":"F17", "x":6, "y":0},
|
||||
{"label":"F18", "x":7, "y":0},
|
||||
{"label":"F19", "x":8, "y":0},
|
||||
{"label":"F20", "x":9, "y":0},
|
||||
{"label":"F21", "x":10, "y":0},
|
||||
{"label":"F22", "x":11, "y":0},
|
||||
{"label":"F23", "x":12, "y":0},
|
||||
{"label":"F24", "x":13, "y":0},
|
||||
{"label":"Esc", "x":0, "y":1},
|
||||
{"label":"F1", "x":2, "y":1},
|
||||
{"label":"F2", "x":3, "y":1},
|
||||
{"label":"F3", "x":4, "y":1},
|
||||
{"label":"F4", "x":5, "y":1},
|
||||
{"label":"F5", "x":6, "y":1},
|
||||
{"label":"F6", "x":7, "y":1},
|
||||
{"label":"F7", "x":8, "y":1},
|
||||
{"label":"F8", "x":9, "y":1},
|
||||
{"label":"F9", "x":10, "y":1},
|
||||
{"label":"F10", "x":11, "y":1},
|
||||
{"label":"F11", "x":12, "y":1},
|
||||
{"label":"F12", "x":13, "y":1},
|
||||
{"label":"Print Screen", "x":15.25, "y":1},
|
||||
{"label":"Scroll Lock", "x":16.25, "y":1},
|
||||
{"label":"Pause", "x":17.25, "y":1},
|
||||
{"label":"Volume Down", "x":19.5, "y":1},
|
||||
{"label":"Volume Up", "x":20.5, "y":1},
|
||||
{"label":"Mute", "x":21.5, "y":1},
|
||||
{"label":"`", "x":0, "y":2.5},
|
||||
{"label":"1", "x":1, "y":2.5},
|
||||
{"label":"2", "x":2, "y":2.5},
|
||||
{"label":"3", "x":3, "y":2.5},
|
||||
{"label":"4", "x":4, "y":2.5},
|
||||
{"label":"5", "x":5, "y":2.5},
|
||||
{"label":"6", "x":6, "y":2.5},
|
||||
{"label":"7", "x":7, "y":2.5},
|
||||
{"label":"8", "x":8, "y":2.5},
|
||||
{"label":"9", "x":9, "y":2.5},
|
||||
{"label":"0", "x":10, "y":2.5},
|
||||
{"label":"-", "x":11, "y":2.5},
|
||||
{"label":"=", "x":12, "y":2.5},
|
||||
{"label":"JP Yen", "x":13, "y":2.5},
|
||||
{"label":"Back Space", "x":14, "y":2.5},
|
||||
{"label":"Insert", "x":15.25, "y":2.5},
|
||||
{"label":"Home", "x":16.25, "y":2.5},
|
||||
{"label":"Page Up", "x":17.25, "y":2.5},
|
||||
{"label":"Num Lock", "x":18.5, "y":2.5},
|
||||
{"label":"KP/", "x":19.5, "y":2.5},
|
||||
{"label":"KP*", "x":20.5, "y":2.5},
|
||||
{"label":"KP-", "x":21.5, "y":2.5},
|
||||
{"label":"Tab", "x":0, "y":3.5, "w":1.5},
|
||||
{"label":"Q", "x":1.5, "y":3.5},
|
||||
{"label":"W", "x":2.5, "y":3.5},
|
||||
{"label":"E", "x":3.5, "y":3.5},
|
||||
{"label":"R", "x":4.5, "y":3.5},
|
||||
{"label":"T", "x":5.5, "y":3.5},
|
||||
{"label":"Y", "x":6.5, "y":3.5},
|
||||
{"label":"U", "x":7.5, "y":3.5},
|
||||
{"label":"I", "x":8.5, "y":3.5},
|
||||
{"label":"O", "x":9.5, "y":3.5},
|
||||
{"label":"P", "x":10.5, "y":3.5},
|
||||
{"label":"[", "x":11.5, "y":3.5},
|
||||
{"label":"]", "x":12.5, "y":3.5},
|
||||
{"label":"\\", "x":13.5, "y":3.5, "w":1.5},
|
||||
{"label":"Delete", "x":15.25, "y":3.5},
|
||||
{"label":"End", "x":16.25, "y":3.5},
|
||||
{"label":"Page Down", "x":17.25, "y":3.5},
|
||||
{"label":"KP 7", "x":18.5, "y":3.5},
|
||||
{"label":"KP 8", "x":19.5, "y":3.5},
|
||||
{"label":"KP 9", "x":20.5, "y":3.5},
|
||||
{"label":"KP+", "x":21.5, "y":3.5},
|
||||
{"label":"Caps Lock", "x":0, "y":4.5, "w":1.75},
|
||||
{"label":"A", "x":1.75, "y":4.5},
|
||||
{"label":"S", "x":2.75, "y":4.5},
|
||||
{"label":"D", "x":3.75, "y":4.5},
|
||||
{"label":"F", "x":4.75, "y":4.5},
|
||||
{"label":"G", "x":5.75, "y":4.5},
|
||||
{"label":"H", "x":6.75, "y":4.5},
|
||||
{"label":"J", "x":7.75, "y":4.5},
|
||||
{"label":"K", "x":8.75, "y":4.5},
|
||||
{"label":"L", "x":9.75, "y":4.5},
|
||||
{"label":";", "x":10.75, "y":4.5},
|
||||
{"label":"'", "x":11.75, "y":4.5},
|
||||
{"label":"ISO #", "x":12.75, "y":4.5},
|
||||
{"label":"Enter", "x":13.75, "y":4.5, "w":1.25},
|
||||
{"label":"KP 4", "x":18.5, "y":4.5},
|
||||
{"label":"KP 5", "x":19.5, "y":4.5},
|
||||
{"label":"KP 6", "x":20.5, "y":4.5},
|
||||
{"label":"KP ,", "x":21.5, "y":4.5},
|
||||
{"label":"Shift", "x":0, "y":5.5, "w":1.25},
|
||||
{"label":"ISO \\", "x":1.25, "y":5.5},
|
||||
{"label":"Z", "x":2.25, "y":5.5},
|
||||
{"label":"X", "x":3.25, "y":5.5},
|
||||
{"label":"C", "x":4.25, "y":5.5},
|
||||
{"label":"V", "x":5.25, "y":5.5},
|
||||
{"label":"B", "x":6.25, "y":5.5},
|
||||
{"label":"N", "x":7.25, "y":5.5},
|
||||
{"label":"M", "x":8.25, "y":5.5},
|
||||
{"label":",", "x":9.25, "y":5.5},
|
||||
{"label":".", "x":10.25, "y":5.5},
|
||||
{"label":"/", "x":11.25, "y":5.5},
|
||||
{"label":"JP RO", "x":12.25, "y":5.5},
|
||||
{"label":"Shift", "x":13.25, "y":5.5, "w":1.75},
|
||||
{"label":"Up", "x":16.25, "y":5.5},
|
||||
{"label":"KP 1", "x":18.5, "y":5.5},
|
||||
{"label":"KP 2", "x":19.5, "y":5.5},
|
||||
{"label":"KP 3", "x":20.5, "y":5.5},
|
||||
{"label":"KP Enter", "x":21.5, "y":5.5},
|
||||
{"label":"Ctrl", "x":0, "y":6.5, "w":1.25},
|
||||
{"label":"GUI", "x":1.25, "y":6.5, "w":1.25},
|
||||
{"label":"Alt", "x":2.5, "y":6.5, "w":1.25},
|
||||
{"label":"Muhenkan", "x":3.75, "y":6.5, "w":1.25},
|
||||
{"label":"Space", "x":5, "y":6.5, "w":3.25},
|
||||
{"label":"Henkan", "x":8.25, "y":6.5, "w":1.25},
|
||||
{"label":"Kana", "x":9.5, "y":6.5, "w":1.25},
|
||||
{"label":"Alt", "x":10.75, "y":6.5},
|
||||
{"label":"GUI", "x":11.75, "y":6.5},
|
||||
{"label":"Menu", "x":12.75, "y":6.5},
|
||||
{"label":"Ctrl", "x":13.75, "y":6.5, "w":1.25},
|
||||
{"label":"Left", "x":15.25, "y":6.5},
|
||||
{"label":"Down", "x":16.25, "y":6.5},
|
||||
{"label":"Right", "x":17.25, "y":6.5},
|
||||
{"label":"KP 0", "x":18.5, "y":6.5, "w":2},
|
||||
{"label":"KP .", "x":20.5, "y":6.5},
|
||||
{"label":"KP =", "x":21.5, "y":6.5}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,16 +1,67 @@
|
||||
{
|
||||
"keyboard_name": "",
|
||||
"url": "",
|
||||
"maintainer": "qmk",
|
||||
"width": 4,
|
||||
"height": 6,
|
||||
"layouts": {
|
||||
"LAYOUT_numpad_6x4": {
|
||||
"layout": [{"label":"Esc", "x":0, "y":0}, {"label":"Tab", "x":1, "y":0}, {"label":"Fn", "x":2, "y":0}, {"label":"Back", "x":3, "y":0}, {"label":"Num Lock", "x":0, "y":1}, {"label":"/", "x":1, "y":1}, {"label":"*", "x":2, "y":1}, {"label":"-", "x":3, "y":1}, {"label":"7", "x":0, "y":2}, {"label":"8", "x":1, "y":2}, {"label":"9", "x":2, "y":2}, {"label":"+", "x":3, "y":2, "h":2}, {"label":"4", "x":0, "y":3}, {"label":"5", "x":1, "y":3}, {"label":"6", "x":2, "y":3}, {"label":"1", "x":0, "y":4}, {"label":"2", "x":1, "y":4}, {"label":"3", "x":2, "y":4}, {"label":"Enter", "x":3, "y":4, "h":2}, {"label":"0", "x":0, "y":5, "w":2}, {"label":".", "x":2, "y":5}]
|
||||
},
|
||||
"keyboard_name": "Cospad",
|
||||
"keyboard_folder": "cospad",
|
||||
"url": "",
|
||||
"maintainer": "qmk",
|
||||
"width": 4,
|
||||
"height": 6,
|
||||
"layouts": {
|
||||
"LAYOUT_numpad_6x4": {
|
||||
"layout": [
|
||||
{"label":"Esc", "x":0, "y":0},
|
||||
{"label":"Tab", "x":1, "y":0},
|
||||
{"label":"Fn", "x":2, "y":0},
|
||||
{"label":"Back", "x":3, "y":0},
|
||||
{"label":"Num Lock", "x":0, "y":1},
|
||||
{"label":"/", "x":1, "y":1},
|
||||
{"label":"*", "x":2, "y":1},
|
||||
{"label":"-", "x":3, "y":1},
|
||||
{"label":"7", "x":0, "y":2},
|
||||
{"label":"8", "x":1, "y":2},
|
||||
{"label":"9", "x":2, "y":2},
|
||||
{"label":"4", "x":0, "y":3},
|
||||
{"label":"5", "x":1, "y":3},
|
||||
{"label":"6", "x":2, "y":3},
|
||||
{"label":"+", "x":3, "y":2, "h":2},
|
||||
{"label":"1", "x":0, "y":4},
|
||||
{"label":"2", "x":1, "y":4},
|
||||
{"label":"3", "x":2, "y":4},
|
||||
{"label":"0", "x":0, "y":5, "w":2},
|
||||
{"label":".", "x":2, "y":5},
|
||||
{"label":"Enter", "x":3, "y":4, "h":2}
|
||||
]
|
||||
},
|
||||
|
||||
"LAYOUT_ortho_6x4": {
|
||||
"layout": [{"label":"Esc", "x":0, "y":0}, {"label":"Tab", "x":1, "y":0}, {"label":"Fn", "x":2, "y":0}, {"label":"Back", "x":3, "y":0}, {"label":"Num Lock", "x":0, "y":1}, {"label":"/", "x":1, "y":1}, {"label":"*", "x":2, "y":1}, {"label":"-", "x":3, "y":1}, {"label":"7", "x":0, "y":2}, {"label":"8", "x":1, "y":2}, {"label":"9", "x":2, "y":2}, {"label":"+", "x":3, "y":2}, {"label":"4", "x":0, "y":3}, {"label":"5", "x":1, "y":3}, {"label":"6", "x":2, "y":3}, {"x":3, "y":3}, {"label":"1", "x":0, "y":4}, {"label":"2", "x":1, "y":4}, {"label":"3", "x":2, "y":4}, {"label":"Enter", "x":3, "y":4}, {"label":"0", "x":0, "y":5}, {"x":1, "y":5}, {"label":".", "x":2, "y":5}, {"x":3, "y":5}]
|
||||
}
|
||||
"LAYOUT_gamepad_6x4": {
|
||||
"layout": [
|
||||
{"label":"k00", "x":5, "y":0},
|
||||
{"label":"k01", "x":5, "y":1},
|
||||
{"label":"k02", "x":5, "y":2},
|
||||
{"label":"k03", "x":5, "y":3},
|
||||
{"label":"k10", "x":4, "y":0},
|
||||
{"label":"k11", "x":4, "y":1},
|
||||
{"label":"k12", "x":4, "y":2},
|
||||
{"label":"k13", "x":4, "y":3},
|
||||
{"label":"k20", "x":3, "y":0},
|
||||
{"label":"k21", "x":3, "y":1},
|
||||
{"label":"k22", "x":3, "y":2},
|
||||
{"label":"k30", "x":2, "y":0},
|
||||
{"label":"k31", "x":2, "y":1},
|
||||
{"label":"k32", "x":2, "y":2},
|
||||
{"label":"k23", "x":2, "y":3, "w":2},
|
||||
{"label":"k40", "x":1, "y":0},
|
||||
{"label":"k41", "x":1, "y":1},
|
||||
{"label":"k42", "x":1, "y":2},
|
||||
{"label":"k43", "x":1, "y":3},
|
||||
{"label":"k50", "x":0, "y":0},
|
||||
{"label":"k51", "x":0, "y":1},
|
||||
{"label":"k52", "x":0, "y":2},
|
||||
{"label":"k53", "x":0, "y":3}
|
||||
]
|
||||
},
|
||||
|
||||
"LAYOUT_ortho_6x4": {
|
||||
"layout": [{"label":"Esc", "x":0, "y":0}, {"label":"Tab", "x":1, "y":0}, {"label":"Fn", "x":2, "y":0}, {"label":"Back", "x":3, "y":0}, {"label":"Num Lock", "x":0, "y":1}, {"label":"/", "x":1, "y":1}, {"label":"*", "x":2, "y":1}, {"label":"-", "x":3, "y":1}, {"label":"7", "x":0, "y":2}, {"label":"8", "x":1, "y":2}, {"label":"9", "x":2, "y":2}, {"label":"+", "x":3, "y":2}, {"label":"4", "x":0, "y":3}, {"label":"5", "x":1, "y":3}, {"label":"6", "x":2, "y":3}, {"x":3, "y":3}, {"label":"1", "x":0, "y":4}, {"label":"2", "x":1, "y":4}, {"label":"3", "x":2, "y":4}, {"label":"Enter", "x":3, "y":4}, {"label":"0", "x":0, "y":5}, {"x":1, "y":5}, {"label":".", "x":2, "y":5}, {"x":3, "y":5}]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,8 +4,8 @@ COSPAD
|
||||
A DIY Keypad Kit sold by KPRepublic, runs TKG natively.
|
||||
|
||||
Keyboard Maintainer: QMK Community
|
||||
Hardware Supported: COSPAD
|
||||
Hardware Availability: https://aliexpress.com/item/cospad-Custom-Mechanical-Keyboard-Kit-up-tp-24-keys-Supports-TKG-TOOLS-Underglow-RGB-PCB-20/32818383873.html
|
||||
Hardware Supported: COSPAD
|
||||
Hardware Availability: [KPrepublic on Aliexpress](https://aliexpress.com/item/cospad-Custom-Mechanical-Keyboard-Kit-up-tp-24-keys-Supports-TKG-TOOLS-Underglow-RGB-PCB-20/32818383873.html)
|
||||
|
||||
Only supports on and off for the backlight leds, as they are not connected to a PWM pin.
|
||||
|
||||
@@ -18,4 +18,4 @@ Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make cospad:default
|
||||
|
||||
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
|
||||
@@ -43,34 +43,34 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[_RAISE] = LAYOUT( /* Shifted layout, small changes (because angle brackets have been moved to thumb cluster buttons) */
|
||||
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
|
||||
_______, _______, KC_VOLD, KC_VOLU, KC_MPLY, KC_MFFD, KC_MUTE, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, _______,
|
||||
_______, _______, _______, _______, _______, KC_MRWD, _______, _______, _______, KC_BSLS, KC_QUOT, _______,
|
||||
_______, _______, KC_VOLD, KC_VOLU, KC_MPLY, KC_MFFD, KC_MUTE, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, _______,
|
||||
_______, _______, KC_GRV, _______, _______, KC_MRWD, _______, _______, _______, KC_BSLS, KC_QUOT, _______,
|
||||
_______, _______, _______, _______, _______, _______,
|
||||
_______, _______, KC_LABK, _______, _______, KC_RABK, _______, _______
|
||||
),
|
||||
|
||||
[_LOWER] = LAYOUT( /* Number layout, basically the main function layer */
|
||||
_______, 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_TILD, KC_GRV, KC_F13, KC_F14, KC_F15, KC_F16, KC_F7, KC_F8, KC_F9, KC_F10, _______,
|
||||
_______, _______, _______, _______, _______, _______,
|
||||
_______, RAISE, _______, _______, _______, _______, _______, _______
|
||||
_______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
|
||||
_______, _______, KC_VOLD, KC_VOLU, KC_MPLY, KC_MFFD, KC_MUTE, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, _______,
|
||||
_______, _______, KC_TILD, _______, _______, KC_MRWD, _______, _______, _______, KC_PIPE, KC_DQT, _______,
|
||||
_______, _______, _______, _______, _______, _______,
|
||||
_______, RAISE, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
[_ADJUST] = LAYOUT( /* Shifted number/function layout, for per-key control. Only active when shift is held, and number is toggled or held */
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, _______, KC_UP, _______, _______, _______,
|
||||
KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______,
|
||||
KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
[_MOUSE] = LAYOUT( /* Mouse layer, including buttons for clicking. */
|
||||
_______, _______, _______, _______, _______, _______, KC_VOLU, KC_HOME, KC_PGUP, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, MS_BTN1, MS_BTN2, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, KC_VOLD, KC_END, KC_PGDN, _______, _______, _______,
|
||||
_______, _______, _______, _______, KC_UP, _______,
|
||||
_______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______
|
||||
_______, _______, _______, _______, KC_UP, _______,
|
||||
_______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______
|
||||
)
|
||||
|
||||
}; // end keymaps block
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
"width": 15,
|
||||
"height": 4,
|
||||
"layouts": {
|
||||
"LAYOUT_ortho_4x14": {
|
||||
"LAYOUT": {
|
||||
"key_count": 56,
|
||||
"layout": [{"label":"L00", "x":0, "y":0}, {"label":"L01", "x":1, "y":0}, {"label":"L02", "x":2, "y":0}, {"label":"L03", "x":3, "y":0}, {"label":"L04", "x":4, "y":0}, {"label":"L05", "x":5, "y":0}, {"label":"L06", "x":6, "y":0}, {"label":"R00", "x":8, "y":0}, {"label":"R01", "x":9, "y":0}, {"label":"R02", "x":10, "y":0}, {"label":"R03", "x":11, "y":0}, {"label":"R04", "x":12, "y":0}, {"label":"R05", "x":13, "y":0}, {"label":"R06", "x":14, "y":0}, {"label":"L10", "x":0, "y":1}, {"label":"L11", "x":1, "y":1}, {"label":"L12", "x":2, "y":1}, {"label":"L13", "x":3, "y":1}, {"label":"L14", "x":4, "y":1}, {"label":"L15", "x":5, "y":1}, {"label":"L16", "x":6, "y":1}, {"label":"R10", "x":8, "y":1}, {"label":"R11", "x":9, "y":1}, {"label":"R12", "x":10, "y":1}, {"label":"R13", "x":11, "y":1}, {"label":"R14", "x":12, "y":1}, {"label":"R15", "x":13, "y":1}, {"label":"R16", "x":14, "y":1}, {"label":"L20", "x":0, "y":2}, {"label":"L21", "x":1, "y":2}, {"label":"L22", "x":2, "y":2}, {"label":"L23", "x":3, "y":2}, {"label":"L24", "x":4, "y":2}, {"label":"L25", "x":5, "y":2}, {"label":"L26", "x":6, "y":2}, {"label":"R20", "x":8, "y":2}, {"label":"R21", "x":9, "y":2}, {"label":"R22", "x":10, "y":2}, {"label":"R23", "x":11, "y":2}, {"label":"R24", "x":12, "y":2}, {"label":"R25", "x":13, "y":2}, {"label":"R26", "x":14, "y":2}, {"label":"L30", "x":0, "y":3}, {"label":"L31", "x":1, "y":3}, {"label":"L32", "x":2, "y":3}, {"label":"L33", "x":3, "y":3}, {"label":"L34", "x":4, "y":3}, {"label":"L35", "x":5, "y":3}, {"label":"L36", "x":6, "y":3}, {"label":"R30", "x":8, "y":3}, {"label":"R31", "x":9, "y":3}, {"label":"R32", "x":10, "y":3}, {"label":"R33", "x":11, "y":3}, {"label":"R34", "x":12, "y":3}, {"label":"R35", "x":13, "y":3}, {"label":"R36", "x":14, "y":3}]
|
||||
}
|
||||
|
||||
@@ -5,26 +5,33 @@
|
||||
#pragma once
|
||||
|
||||
|
||||
/* Keyboard Settings */
|
||||
#undef TAPPING_TERM
|
||||
#define TAPPING_TERM 150
|
||||
#define TAPPING_TERM 200
|
||||
|
||||
#undef DEBOUNCE
|
||||
#define DEBOUNCE 10
|
||||
|
||||
#undef IGNORE_MOD_TAP_INTERRUPT
|
||||
#define IGNORE_MOD_TAP_INTERRUPT
|
||||
|
||||
#undef FORCE_NKRO
|
||||
#define FORCE_NKRO
|
||||
|
||||
/* This isn't defined by default, so there is no need to undefine it first. */
|
||||
#define LEADER_TIMEOUT 500
|
||||
#undef TAPPING_TOGGLE
|
||||
#define TAPPING_TOGGLE 5
|
||||
|
||||
#define LEADER_TIMEOUT 1000
|
||||
#define IGNORE_MOD_TAP_INTERRUPT
|
||||
#define PERMISSIVE_HOLD
|
||||
#define QMK_KEYS_PER_SCAN 4
|
||||
#define DANCING_TERM 175
|
||||
|
||||
#define ONESHOT_TAP_TOGGLE 5
|
||||
#define ONESHOT_TIMEOUT 5000
|
||||
|
||||
#define COMBO_COUNT 4
|
||||
#define COMBO_TERM 200
|
||||
|
||||
|
||||
// RGB Lights
|
||||
#undef RGBLIGHT_HUE_STEP
|
||||
#define RGBLIGHT_HUE_STEP 24
|
||||
|
||||
@@ -40,11 +47,7 @@
|
||||
#undef RGBLIGHT_LIMIT_VAL
|
||||
#define RGBLIGHT_LIMIT_VAL 255
|
||||
|
||||
/* This isn't defined by default, so there is no need to undefine it first. */
|
||||
#define RGBLIGHT_SLEEP
|
||||
|
||||
|
||||
// Mouse
|
||||
#undef MOUSEKEY_INTERVAL
|
||||
#define MOUSEKEY_INTERVAL 10
|
||||
|
||||
@@ -52,31 +55,34 @@
|
||||
#define MOUSEKEY_DELAY 15
|
||||
|
||||
#undef MOUSEKEY_MAX_SPEED
|
||||
#define MOUSEKEY_MAX_SPEED 15
|
||||
#define MOUSEKEY_MAX_SPEED 20
|
||||
|
||||
#undef MOUSEKEY_TIME_TO_MAX
|
||||
#define MOUSEKEY_TIME_TO_MAX 150
|
||||
#define MOUSEKEY_TIME_TO_MAX 200
|
||||
|
||||
#undef MOUSEKEY_WHEEL_MAX_SPEED
|
||||
#define MOUSEKEY_WHEEL_MAX_SPEED 15
|
||||
#define MOUSEKEY_WHEEL_MAX_SPEED 20
|
||||
|
||||
#undef MOUSEKEY_WHEEL_TIME_TO_MAX
|
||||
#define MOUSEKEY_WHEEL_TIME_TO_MAX 150
|
||||
#define MOUSEKEY_WHEEL_TIME_TO_MAX 200
|
||||
|
||||
|
||||
/* This is defined only if CONSOLE_ENABLE is set to "yes" */
|
||||
// #undef NO_DEBUG
|
||||
// #define NO_DEBUG
|
||||
|
||||
// #undef NO_PRINT
|
||||
// #define NO_PRINT
|
||||
|
||||
/* For COMBO only*/
|
||||
// #define COMBO_COUNT 1
|
||||
// #define COMBO_TERM 200
|
||||
// #define RETRO_TAPPING
|
||||
// #define TAPPING_FORCE_HOLD
|
||||
|
||||
/* For tap toggle */
|
||||
// #define TAPPING_TOGGLE 2
|
||||
// #define ONESHOT_TAP_TOGGLE 2
|
||||
// #define ONESHOT_TIMEOUT 300
|
||||
// #define AUTO_SHIFT_TIMEOUT 150
|
||||
// #define NO_AUTO_SHIFT_SPECIAL
|
||||
// #define NO_AUTO_SHIFT_NUMERIC
|
||||
// #define NO_AUTO_SHIFT_ALPHA
|
||||
|
||||
// #define EXTRA_LONG_COMBOS
|
||||
// #define EXTRA_EXTRA_LONG_COMBOS
|
||||
// #define COMBO_ALLOW_ACTION_KEYS
|
||||
|
||||
// #define RGBLIGHT_SLEEP
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
https://i.imgur.com/fKX0Zbs.png
|
||||
@@ -1 +0,0 @@
|
||||
https://i.imgur.com/giAc3M9.jpg
|
||||
@@ -1,7 +1,7 @@
|
||||
let gulp = require('gulp');
|
||||
let run = require('gulp-run-command').default;
|
||||
|
||||
|
||||
|
||||
gulp.task('clean', run('rm -rf ../../../../.build'));
|
||||
|
||||
gulp.task('build', ['clean'], run('make -C ../../../../ ergodox_ez:hacker_dvorak', {
|
||||
@@ -9,5 +9,11 @@ gulp.task('build', ['clean'], run('make -C ../../../../ ergodox_ez:hacker_dvorak
|
||||
}));
|
||||
|
||||
gulp.task('watch', ['build'], () => {
|
||||
gulp.watch(['keymap.c', 'config.h', 'rules.mk'], ['build']);
|
||||
gulp.watch([
|
||||
'keymap.c',
|
||||
'config.h',
|
||||
'rules.mk',
|
||||
], ['build']);
|
||||
});
|
||||
|
||||
gulp.task('default', ['watch']);
|
||||
|
||||
353
keyboards/ergodox_ez/keymaps/hacker_dvorak/hacker_dvorak.c
Normal file
353
keyboards/ergodox_ez/keymaps/hacker_dvorak/hacker_dvorak.c
Normal file
@@ -0,0 +1,353 @@
|
||||
// Keyboard keymap:
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[DVORAK] = LAYOUT_ergodox(
|
||||
|
||||
// HACKER DVORAK left hand
|
||||
|
||||
//------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------//
|
||||
// ESCAPE | | | | | | START RECORDING //
|
||||
// | | | | | | //
|
||||
KC_ESC, TD(GRV_TILD), TD(AT_DLR), TD(LCBR_LABK), TD(LPRN_LBRC), TD(EXLM_QUES), DYN_REC_START1, //
|
||||
// | ~ | $ | < | [ | ? | //
|
||||
// | TAP DANCE: ` | TAP DANCE: @ TAP DANCE: { | TAP DANCE: ( | TAP DANCE: ! | DYNAMIC MARCO 1 //
|
||||
//------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------//
|
||||
// TAB | MOD TAP: ALT+SHIFT | MOD TAP: CTRL+ALT | MOD TAP: CTRL+SHIFT | P | Y | //
|
||||
// | | | | | | //
|
||||
KC_TAB, TD(NONE_LEAD), TD(QUOT_DQUO), TD(DOT_COMM), ALL_T(KC_P), MEH_T(KC_Y), DYN_MACRO_PLAY1, //
|
||||
// | LEAD | " | , | | | //
|
||||
// | TAP DANCE: NONE | TAP DANCE: ' | TAP DANCE: . | MOD TAP: HYPER | MOD TAP: MEH | //
|
||||
//------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------| PLAY DYNAMIC MACRO 1 //
|
||||
// | MOD TAP: ALT | MOD TAP: CTRL | LAYER TAP: SHIFT | LAYER TAP: ARROW KEYS | MOD TAP: GUI | //
|
||||
// | | | | Ü | | //
|
||||
TD(EQL_PLUS), ALT_T(KC_A), CTL_T(KC_O), SFT_T(KC_E), LT(ARROWS, KC_U), LGUI_T(KC_I), //-----------------------//
|
||||
// + | Á | Ó | É | Ú | Í | //
|
||||
// TAP DANCE: = | TAP DANCE: A | TAP DANCE: O | TAP DANCE: E | TAP DANCE: U | TAP DANCE: I | //
|
||||
//------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------| META //
|
||||
// STOP RECORDING | MOD TAP: GUI+SHIFT+ALT | Q | J | K | X | //
|
||||
// | | | | | | //
|
||||
DYN_REC_STOP, TD(SCLN_COLN), SGUI_T(KC_Q), LT(MEDIA_FN, KC_J), LT(NUMPAD, KC_K), LCAG_T(KC_X), KC_LGUI, //
|
||||
// | : | | | | | //
|
||||
// DYNAMIC MACRO | TAP DANCE: ; | MOD TAP: SHIFT+GUI | LAYER TAP: MEDIA/F-KEYS | LAYER TAP: ATM NUMPAD | MOD TAP: CTL+ALT+GUI | //
|
||||
//------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------//
|
||||
// LAYERS SWITCHER | APPLICATION MENU | | | //
|
||||
// | | | | SCROLL //
|
||||
TG(LAYERS), KC_APP, KC_NLCK, KC_SLCK, KC_CAPS, //
|
||||
// | | | | NUM //
|
||||
// LAYER TOGGLE | | | | TAP DANCE: CAPS //
|
||||
//------------------------+-------------------------+-------------------------+-------------------------+------------------------//
|
||||
|
||||
// HACKER DVORAK left thumb
|
||||
|
||||
//------------------------+------------------------//
|
||||
// MOUSE WHEEL LEFT | MOUSE WHEEL RIGHT //
|
||||
// | //
|
||||
KC_WH_L, KC_WH_R, //
|
||||
// | //
|
||||
// | //
|
||||
//-------------------------+-------------------------+------------------------//
|
||||
// | | HOME //
|
||||
// | | //
|
||||
/* SPACE | BACKSPACE */ KC_HOME, //
|
||||
// | | //
|
||||
// | | //
|
||||
KC_SPC, KC_BSPC, //-----------------------//
|
||||
// | | END //
|
||||
// | | //
|
||||
/* | */ KC_END, //
|
||||
// | | //
|
||||
// | | //
|
||||
//-------------------------+-------------------------+------------------------//
|
||||
|
||||
// HACKER DVORAK right hand
|
||||
|
||||
//------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------//
|
||||
// | | | | | | //
|
||||
// | | | | | | //
|
||||
DYN_REC_START2, TD(APMR_PIPE), TD(RPRN_RBRC), TD(RCBR_RABK), TD(HASH_PERC), TD(ASTR_CIRC), XXXXXXX, //
|
||||
// | | | | | | //
|
||||
// | | | | | | //
|
||||
//------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------//
|
||||
// | | | | | | //
|
||||
// | | | | | | //
|
||||
DYN_MACRO_PLAY2, MEH_T(KC_F), ALL_T(KC_G), C_S_T(KC_C), LCA_T(KC_R), LAS_T(KC_L), TD(SLSH_BSLS), //
|
||||
// | | | | | | //
|
||||
// | | | | | | //
|
||||
// |-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------//
|
||||
// | | | | | | //
|
||||
// | | | | | | //
|
||||
/*-----------------------*/ LGUI_T(KC_D), LT(MOUSE, KC_H), SFT_T(KC_T), CTL_T(KC_N), ALT_T(KC_S), TD(MINS_UNDS), //
|
||||
// | | | | | | //
|
||||
// | | | | | | //
|
||||
// |-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------//
|
||||
// | | | | | | //
|
||||
// | | | | | | //
|
||||
KC_LGUI, LCAG_T(KC_B), LT(HYPER, KC_M), LT(MEDIA_FN, KC_W), SGUI_T(KC_V), LGAS_T(KC_Z), COMPOSE, //
|
||||
// | | | | | | //
|
||||
// | | | | | | ⎄ //
|
||||
//------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------//
|
||||
// | | | | //
|
||||
// | | | | //
|
||||
KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, KC_SYSREQ, //
|
||||
// | | | | //
|
||||
// | | | | //
|
||||
//------------------------+-------------------------+-------------------------+-------------------------+------------------------//
|
||||
|
||||
// HACKER DVORAK right thumb
|
||||
|
||||
//------------------------+------------------------//
|
||||
// | //
|
||||
// | //
|
||||
KC_WH_U, KC_WH_D, //
|
||||
// | //
|
||||
// | //
|
||||
//------------------------+-------------------------+------------------------//
|
||||
// | | //
|
||||
// | | //
|
||||
KC_PGUP, // | //
|
||||
// | | //
|
||||
// | | //
|
||||
//------------------------| | //
|
||||
// | | //
|
||||
// | | //
|
||||
KC_PGDN, KC_DEL, KC_ENT //
|
||||
// | | //
|
||||
// | | //
|
||||
//------------------------+-------------------------+------------------------//
|
||||
|
||||
),
|
||||
|
||||
[PLOVER] = LAYOUT_ergodox(
|
||||
// left hand
|
||||
XXXXXXX, XXXXXXX, KC_MS_BTN2, KC_MS_UP, KC_MS_BTN1, KC_MS_BTN3, GUI_T(KC_NO),
|
||||
KC_ESC, KC_MS_BTN4, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_BTN5, PV_NUM,
|
||||
KC_TAB, PV_LS, PV_LT, PV_LP, PV_LH, PV_STAR,
|
||||
KC_CLCK, PV_LS, PV_LK, PV_LW, PV_LR, PV_STAR, PV_STAR,
|
||||
XXXXXXX, TG(LAYERS), PV_NUM, PV_NUM, PV_NUM,
|
||||
|
||||
// left thumb
|
||||
KC_SPACE, KC_BSPACE,
|
||||
KC_HOME,
|
||||
PV_A, PV_O, KC_END,
|
||||
|
||||
// right hand
|
||||
KC_MS_ACCEL2, KC_MS_ACCEL1, KC_MS_ACCEL0, KC_UP, KC_APPLICATION, XXXXXXX, KC_MS_WH_UP,
|
||||
PV_NUM, KC_MS_WH_LEFT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_MS_WH_RIGHT, KC_MS_WH_DOWN,
|
||||
PV_STAR, PV_RF, PV_RP, PV_RL, PV_RT, PV_RD,
|
||||
PV_STAR, PV_STAR, PV_RR, PV_RB, PV_RG, PV_RS, PV_RZ,
|
||||
PV_NUM, PV_NUM, PV_NUM, PV_NUM, XXXXXXX,
|
||||
|
||||
// right thumb
|
||||
KC_DELETE, KC_ENTER,
|
||||
KC_PGUP,
|
||||
KC_PGDOWN, PV_E, PV_U
|
||||
),
|
||||
|
||||
[GAMING] = LAYOUT_ergodox(
|
||||
// left hand
|
||||
KC_ESCAPE, GUI_T(KC_MINS), KC_I, KC_O, KC_P, ALGR_T(KC_EQL), KC_T,
|
||||
KC_TAB, KC_LALT, KC_Q, KC_W, KC_E, ALL_T(KC_R), KC_G,
|
||||
LT(MOUSE, KC_GRV), KC_LCTRL, KC_A, KC_S, KC_D, MEH_T(KC_F),
|
||||
KC_BSLS, KC_LSHIFT, KC_Z, KC_X, KC_C, SCMD_T(KC_V), KC_M,
|
||||
XXXXXXX, TG(LAYERS), KC_COMM, KC_DOT, KC_LBRC,
|
||||
|
||||
// left thumb
|
||||
MO(MEDIA_FN), KC_NLCK,
|
||||
KC_SCLN,
|
||||
KC_SPACE, KC_ENTER, KC_BSPACE,
|
||||
|
||||
// right hand
|
||||
KC_QUOT, KC_Y, KC_K, KC_U, KC_KP_7, KC_KP_8, KC_KP_9,
|
||||
KC_MS_WH_UP, KC_H, KC_J, KC_L, KC_KP_4, KC_KP_2, KC_KP_6,
|
||||
KC_B, KC_MS_UP, KC_N, KC_KP_1, KC_KP_5, KC_KP_3,
|
||||
KC_MS_WH_DOWN, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_UP, KC_KP_0, KC_SLASH,
|
||||
KC_RBRC, KC_LEFT, KC_DOWN, KC_RIGHT, XXXXXXX,
|
||||
|
||||
// right thumb
|
||||
KC_MS_BTN5, MO(HYPER),
|
||||
KC_MS_BTN4,
|
||||
KC_MS_BTN3, KC_MS_BTN2, KC_MS_BTN1
|
||||
),
|
||||
|
||||
[ARROWS] = LAYOUT_ergodox(
|
||||
// left hand
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, SCMD_T(KC_NO), MEH_T(KC_NO), ALL_T(KC_NO), XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, KC_LCTRL, KC_LSHIFT, XXXXXXX, _______, XXXXXXX,
|
||||
XXXXXXX, KC_RALT, KC_LALT, GUI_T(KC_NO), XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
|
||||
// left thumb
|
||||
XXXXXXX, XXXXXXX,
|
||||
KC_HOME,
|
||||
KC_SPACE, KC_BSPACE, KC_END,
|
||||
|
||||
// right hand
|
||||
LGUI(KC_X), XXXXXXX, LCTL(KC_X), KC_MS_WH_UP, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
LGUI(KC_C), XXXXXXX, LCTL(KC_C), KC_UP, SCTL(KC_C), LCTL(KC_Z), LGUI(KC_Z),
|
||||
KC_MS_WH_LEFT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_MS_WH_RIGHT, KC_APPLICATION,
|
||||
LGUI(KC_V), XXXXXXX, LCTL(KC_V), KC_MS_WH_DOWN, SCTL(KC_V), LCTL(KC_Y), SGUI(KC_Z),
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_SLCK,
|
||||
|
||||
// right thumb
|
||||
XXXXXXX, XXXXXXX,
|
||||
KC_PGUP,
|
||||
KC_PGDOWN, KC_DELETE, KC_ENTER
|
||||
),
|
||||
|
||||
[MOUSE] = LAYOUT_ergodox(
|
||||
// left hand
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_WH_UP, LCTL(KC_X), XXXXXXX, LGUI(KC_X),
|
||||
LGUI(KC_Z), LCTL(KC_Z), SCTL(KC_C), KC_MS_UP, LCTL(KC_C), KC_MS_BTN4, LGUI(KC_C),
|
||||
KC_MS_BTN3, KC_MS_WH_LEFT, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_WH_RIGHT,
|
||||
LGUI(KC_Z), LCTL(KC_Y), SCTL(KC_V), KC_MS_WH_DOWN, LCTL(KC_V), KC_MS_BTN5, LGUI(KC_V),
|
||||
KC_SLCK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
|
||||
// left thumb
|
||||
XXXXXXX, XXXXXXX,
|
||||
XXXXXXX,
|
||||
KC_MS_BTN1, KC_MS_BTN2, XXXXXXX,
|
||||
|
||||
// right hand
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, ALL_T(KC_NO), MEH_T(KC_NO), SCMD_T(KC_NO), XXXXXXX,
|
||||
XXXXXXX, _______, KC_MS_ACCEL1, KC_LSHIFT, KC_LCTRL, KC_MS_ACCEL2,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, GUI_T(KC_NO), KC_LALT, KC_RALT, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
|
||||
// right thumb
|
||||
XXXXXXX, XXXXXXX,
|
||||
XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, KC_MS_ACCEL0
|
||||
),
|
||||
|
||||
[NUMPAD] = LAYOUT_ergodox(
|
||||
// left hand
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, GUI_T(KC_NO), XXXXXXX, ALL_T(KC_NO), XXXXXXX, XXXXXXX,
|
||||
_______, KC_LCTRL, KC_LSHIFT, _______, MEH_T(KC_NO), XXXXXXX,
|
||||
XXXXXXX, KC_RALT, KC_LALT, XXXXXXX, SCMD_T(KC_NO), XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
|
||||
// left thumb
|
||||
XXXXXXX, XXXXXXX,
|
||||
KC_HOME,
|
||||
KC_SPACE, KC_BSPACE, KC_END,
|
||||
|
||||
// right hand
|
||||
KC_X, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F,
|
||||
KC_O, KC_I, KC_1, KC_2, KC_3, KC_SLSH, KC_PERC,
|
||||
KC_M, KC_4, KC_5, KC_6, KC_PLUS, KC_MINS,
|
||||
KC_L, KC_J, KC_7, KC_8, KC_9, KC_ASTR, KC_CIRC,
|
||||
KC_DOT, KC_0, KC_COMM, KC_UNDS, KC_BSLS,
|
||||
|
||||
// right thumb
|
||||
XXXXXXX, XXXXXXX,
|
||||
KC_PGUP,
|
||||
KC_PGDOWN, KC_DELETE, KC_ENTER
|
||||
),
|
||||
|
||||
[LAYERS] = LAYOUT_ergodox(
|
||||
// left hand
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
|
||||
// left thumb
|
||||
XXXXXXX, XXXXXXX,
|
||||
XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
|
||||
// right hand
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, TO(DVORAK), TO(PLOVER), TO(GAMING), XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
|
||||
// right thumb
|
||||
XXXXXXX, XXXXXXX,
|
||||
XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX
|
||||
),
|
||||
|
||||
[MEDIA_FN] = LAYOUT_ergodox(
|
||||
// left hand
|
||||
KC_VOLD, KC_MUTE, RGB_TOG, XXXXXXX, KC_MAIL, KC_FIND, KC_WWW_REFRESH,
|
||||
KC_MPRV, KC_F9, KC_F7, KC_F5, KC_F3, KC_F1, KC_WWW_HOME,
|
||||
KC_PAUS, KC_F19, KC_F17, KC_F15, KC_F13, KC_F11,
|
||||
RGB_HUD, XXXXXXX, XXXXXXX, _______, KC_F23, KC_F21, KC_WWW_BACK,
|
||||
RGB_VAD, KC_CLCK, KC_PSCREEN, XXXXXXX, MO(FIRMWARE),
|
||||
|
||||
// left thumb
|
||||
_______, XXXXXXX,
|
||||
XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, KC_MEDIA_EJECT,
|
||||
|
||||
// right hand
|
||||
KC_WWW_FAVORITES, KC_MYCM, KC_CALC, XXXXXXX, RGB_MOD, RGB_M_P, KC_VOLU,
|
||||
KC_WWW_SEARCH, KC_F2, KC_F4, KC_F6, KC_F8, KC_F10, KC_MNXT,
|
||||
KC_F12, KC_F14, KC_F16, KC_F18, KC_F20, KC_MPLY,
|
||||
KC_WWW_FORWARD, KC_F22, KC_F24, _______, XXXXXXX, XXXXXXX, RGB_HUI,
|
||||
KC_PWR, XXXXXXX, KC_SLEP, KC_WAKE, RGB_VAI,
|
||||
|
||||
// right thumb
|
||||
XXXXXXX, XXXXXXX,
|
||||
XXXXXXX,
|
||||
RGB_GREEN, XXXXXXX, XXXXXXX
|
||||
),
|
||||
|
||||
[HYPER] = LAYOUT_ergodox(
|
||||
// left hand
|
||||
XXXXXXX, HYPR(KC_F1), HYPR(KC_F2), HYPR(KC_F3), HYPR(KC_F4), HYPR(KC_F5), XXXXXXX,
|
||||
XXXXXXX, HYPR(KC_F6), HYPR(KC_F7), HYPR(KC_F8), HYPR(KC_F9), HYPR(KC_F10), XXXXXXX,
|
||||
XXXXXXX, HYPR(KC_F11), HYPR(KC_F12), HYPR(KC_F13), HYPR(KC_F14), HYPR(KC_F15),
|
||||
XXXXXXX, HYPR(KC_F16), HYPR(KC_F17), HYPR(KC_F18), HYPR(KC_F19), HYPR(KC_F20), XXXXXXX,
|
||||
XXXXXXX, HYPR(KC_F21), HYPR(KC_F22), HYPR(KC_F23), HYPR(KC_F24),
|
||||
|
||||
// left thumb
|
||||
XXXXXXX, XXXXXXX,
|
||||
XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
|
||||
// right hand
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
|
||||
// right thumb
|
||||
XXXXXXX, _______,
|
||||
XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX
|
||||
),
|
||||
|
||||
[FIRMWARE] = LAYOUT_ergodox(
|
||||
|
||||
// left hand
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
|
||||
|
||||
// left thumb
|
||||
XXXXXXX, XXXXXXX,
|
||||
XXXXXXX,
|
||||
RESET, XXXXXXX, XXXXXXX,
|
||||
|
||||
// right hand
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
|
||||
// right thumb
|
||||
XXXXXXX, XXXXXXX,
|
||||
XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, EEP_RST
|
||||
)
|
||||
};
|
||||
@@ -0,0 +1,5 @@
|
||||
// Keycode aliases
|
||||
#define SCTL(kc) LSFT(LCTL(kc)) // Modifier keys: SHIFT+CTRL+kc combination.
|
||||
#define LGAS_T(kc) MT(MOD_LGUI | MOD_LALT | MOD_LSFT, kc) // Mod tap: kc when tapped, GUI+ALT+SHIFT when held.
|
||||
#define LAS_T(kc) MT(MOD_LALT | MOD_LSFT, kc) // Mod tap: kc when tapped, ALT+SHIFT whin held.
|
||||
#define COMPOSE KC_RALT // Compose key (used to input characters like á, ñ, ü).
|
||||
@@ -0,0 +1,8 @@
|
||||
// Define custom user keycodes:
|
||||
enum custom_keycodes {
|
||||
PLACEHOLDER = SAFE_RANGE, // Can always be here.
|
||||
RGB_GREEN, // To set default RGB layer as green once.
|
||||
MY_CUSTOM_MACRO, // Custom macro example.
|
||||
MY_OTHER_MACRO, // Custom macro example.
|
||||
DYNAMIC_MACRO_RANGE // Should always be the last.
|
||||
};
|
||||
@@ -1,781 +1,19 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "keymap_dvorak.h"
|
||||
#include "sendstring_dvorak.h"
|
||||
#include "keymap_plover.h"
|
||||
#include "keymap_plover_dvorak.h"
|
||||
|
||||
|
||||
#define SCTL(kc) LSFT(LCTL(kc))
|
||||
|
||||
// Layers
|
||||
enum layers {
|
||||
DVORAK_US = 0,
|
||||
PLOVER_US,
|
||||
GAMING_US,
|
||||
ARROWS_US,
|
||||
MOUSE_US,
|
||||
NUMPAD_US,
|
||||
LAYERS_US,
|
||||
DVORAK_DV,
|
||||
PLOVER_DV,
|
||||
GAMING_DV,
|
||||
ARROWS_DV,
|
||||
MOUSE_DV,
|
||||
NUMPAD_DV,
|
||||
LAYERS_DV,
|
||||
MEDIA_FN,
|
||||
HYPER_FN,
|
||||
MEH_FN,
|
||||
MEH_FN_PLUS,
|
||||
FIRMWARE
|
||||
};
|
||||
|
||||
int CAPS_LOCK = 0;
|
||||
int NUM_LOCK = 0;
|
||||
int SCROLL_LOCK = 0;
|
||||
|
||||
enum tap_dances {
|
||||
TD_ESC_CAPS = 0
|
||||
};
|
||||
|
||||
qk_tap_dance_action_t tap_dance_actions[] = {
|
||||
[TD_ESC_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CLCK)
|
||||
};
|
||||
|
||||
|
||||
enum custom_keycodes {
|
||||
PLACEHOLDER = SAFE_RANGE, // can always be here
|
||||
RGB_GREEN // to set default RGB layer as green once
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/*
|
||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||
* | 0 | 1 | 2 | 3 | 4 | 5 | 6 | | 38 | 39 | 40 | 41 | 42 | 43 | 44 |
|
||||
* |--------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
|
||||
* | 7 | 8 | 9 | 10 | 11 | 12 | 13 | | 45 | 46 | 47 | 48 | 49 | 50 | 51 |
|
||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
* | 14 | 15 | 16 | 17 | 18 | 19 |------| |------| 52 | 53 | 54 | 55 | 56 | 57 |
|
||||
* |--------+------+------+------+------+------| 26 | | 58 |------+------+------+------+------+--------|
|
||||
* | 20 | 21 | 22 | 23 | 24 | 25 | | | | 59 | 60 | 61 | 62 | 63 | 64 |
|
||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||
* | 27 | 28 | 29 | 30 | 31 | | 65 | 66 | 67 | 68 | 69 |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
* ,-------------. ,-------------.
|
||||
* | 32 | 33 | | 70 | 71 |
|
||||
* ,------+------+------| |------+------+------.
|
||||
* | | | 34 | | 72 | | |
|
||||
* | 35 | 36 |------| |------| 74 | 75 |
|
||||
* | | | 37 | | 73 | | |
|
||||
* `--------------------' `--------------------'
|
||||
*/
|
||||
[DVORAK_US] = LAYOUT_ergodox(
|
||||
// left hand
|
||||
KC_ESC, KC_LABK, KC_LCBR, KC_LBRC, KC_LPRN, KC_EXLM, KC_AMPR,
|
||||
KC_TAB, KC_QUOT, SCMD_T(KC_COMM), MEH_T(KC_DOT), ALL_T(KC_P), KC_Y, KC_AT,
|
||||
KC_EQL, CTL_T(KC_A), SFT_T(KC_O), LT(NUMPAD_US, KC_E), LT(ARROWS_US, KC_U), KC_I,
|
||||
KC_BSLS, ALGR_T(KC_SCLN), ALT_T(KC_Q), LT(MEDIA_FN, KC_J), GUI_T(KC_K), KC_X, KC_PERC,
|
||||
MO(MEH_FN), TG(LAYERS_US), KC_CIRC, KC_PLUS, KC_COLN,
|
||||
|
||||
// left thumb
|
||||
KC_LEFT, KC_RGHT,
|
||||
KC_HOME,
|
||||
KC_SPC, KC_BSPC, KC_END,
|
||||
|
||||
// right hand
|
||||
KC_PIPE, KC_QUES, KC_RPRN, KC_RBRC, KC_RCBR, KC_RABK, KC_ASTR,
|
||||
KC_HASH, KC_F, ALL_T(KC_G), MEH_T(KC_C), SCMD_T(KC_R), KC_L, KC_SLSH,
|
||||
KC_D, LT(MOUSE_US, KC_H), LT(HYPER_FN, KC_T), SFT_T(KC_N), CTL_T(KC_S), KC_MINS,
|
||||
KC_DLR, KC_B, GUI_T(KC_M), LT(MEDIA_FN, KC_W), ALT_T(KC_V), ALGR_T(KC_Z), KC_GRV,
|
||||
KC_DQUO, KC_UNDS, KC_TILD, TG(DVORAK_DV), MO(MEH_FN_PLUS),
|
||||
|
||||
// right thumb
|
||||
KC_UP, KC_DOWN,
|
||||
KC_PGUP,
|
||||
KC_PGDN, KC_DEL, KC_ENT
|
||||
),
|
||||
|
||||
[PLOVER_US] = LAYOUT_ergodox(
|
||||
// left hand
|
||||
XXXXXXX, XXXXXXX, KC_MS_BTN2, KC_MS_UP, KC_MS_BTN1, KC_MS_BTN3, GUI_T(KC_NO),
|
||||
KC_ESC, KC_MS_BTN4, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_BTN5, PV_NUM,
|
||||
KC_TAB, PV_LS, PV_LT, PV_LP, PV_LH, PV_STAR,
|
||||
KC_CLCK, PV_LS, PV_LK, PV_LW, PV_LR, PV_STAR, PV_STAR,
|
||||
MO(MEH_FN), TG(LAYERS_US), PV_NUM, PV_NUM, PV_NUM,
|
||||
|
||||
// left thumb
|
||||
KC_SPACE, KC_BSPACE,
|
||||
KC_HOME,
|
||||
PV_A, PV_O, KC_END,
|
||||
|
||||
// right hand
|
||||
KC_MS_ACCEL2, KC_MS_ACCEL1, KC_MS_ACCEL0, KC_UP, KC_APPLICATION, XXXXXXX, KC_MS_WH_UP,
|
||||
PV_NUM, KC_MS_WH_LEFT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_MS_WH_RIGHT, KC_MS_WH_DOWN,
|
||||
PV_STAR, PV_RF, PV_RP, PV_RL, PV_RT, PV_RD,
|
||||
PV_STAR, PV_STAR, PV_RR, PV_RB, PV_RG, PV_RS, PV_RZ,
|
||||
PV_NUM, PV_NUM, PV_NUM, PV_NUM, MO(MEH_FN_PLUS),
|
||||
|
||||
// right thumb
|
||||
KC_DELETE, KC_ENTER,
|
||||
KC_PGUP,
|
||||
KC_PGDOWN, PV_E, PV_U
|
||||
),
|
||||
|
||||
[GAMING_US] = LAYOUT_ergodox(
|
||||
// left hand
|
||||
KC_ESCAPE, GUI_T(KC_MINS), KC_I, KC_O, KC_P, ALGR_T(KC_EQL), KC_T,
|
||||
KC_TAB, KC_LALT, KC_Q, KC_W, KC_E, ALL_T(KC_R), KC_G,
|
||||
LT(MOUSE_US, KC_GRV), KC_LCTRL, KC_A, KC_S, KC_D, MEH_T(KC_F),
|
||||
KC_BSLS, KC_LSHIFT, KC_Z, KC_X, KC_C, SCMD_T(KC_V), KC_M,
|
||||
MO(MEH_FN), TG(LAYERS_US), KC_COMM, KC_DOT, KC_LBRC,
|
||||
|
||||
// left thumb
|
||||
MO(MEDIA_FN), KC_NLCK,
|
||||
KC_SCLN,
|
||||
KC_SPACE, KC_ENTER, KC_BSPACE,
|
||||
|
||||
// right hand
|
||||
KC_QUOT, KC_Y, KC_K, KC_U, KC_KP_7, KC_KP_8, KC_KP_9,
|
||||
KC_MS_WH_UP, KC_H, KC_J, KC_L, KC_KP_4, KC_KP_2, KC_KP_6,
|
||||
KC_B, KC_MS_UP, KC_N, KC_KP_1, KC_KP_5, KC_KP_3,
|
||||
KC_MS_WH_DOWN, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_UP, KC_KP_0, KC_SLASH,
|
||||
KC_RBRC, KC_LEFT, KC_DOWN, KC_RIGHT, MO(MEH_FN_PLUS),
|
||||
|
||||
// right thumb
|
||||
KC_MS_BTN5, MO(HYPER_FN),
|
||||
KC_MS_BTN4,
|
||||
KC_MS_BTN3, KC_MS_BTN2, KC_MS_BTN1
|
||||
),
|
||||
|
||||
[ARROWS_US] = LAYOUT_ergodox(
|
||||
// left hand
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, SCMD_T(KC_NO), MEH_T(KC_NO), ALL_T(KC_NO), XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, KC_LCTRL, KC_LSHIFT, XXXXXXX, _______, XXXXXXX,
|
||||
XXXXXXX, KC_RALT, KC_LALT, GUI_T(KC_NO), XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
|
||||
// left thumb
|
||||
XXXXXXX, XXXXXXX,
|
||||
KC_HOME,
|
||||
KC_SPACE, KC_BSPACE, KC_END,
|
||||
|
||||
// right hand
|
||||
LGUI(KC_X), XXXXXXX, LCTL(KC_X), KC_MS_WH_UP, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
LGUI(KC_C), XXXXXXX, LCTL(KC_C), KC_UP, SCTL(KC_C), LCTL(KC_Z), LGUI(KC_Z),
|
||||
KC_MS_WH_LEFT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_MS_WH_RIGHT, KC_APPLICATION,
|
||||
LGUI(KC_V), XXXXXXX, LCTL(KC_V), KC_MS_WH_DOWN, SCTL(KC_V), LCTL(KC_Y), SGUI(KC_Z),
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_SLCK,
|
||||
|
||||
// right thumb
|
||||
XXXXXXX, XXXXXXX,
|
||||
KC_PGUP,
|
||||
KC_PGDOWN, KC_DELETE, KC_ENTER
|
||||
),
|
||||
|
||||
[MOUSE_US] = LAYOUT_ergodox(
|
||||
// left hand
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_WH_UP, LCTL(KC_X), XXXXXXX, LGUI(KC_X),
|
||||
LGUI(KC_Z), LCTL(KC_Z), SCTL(KC_C), KC_MS_UP, LCTL(KC_C), KC_MS_BTN4, LGUI(KC_C),
|
||||
KC_MS_BTN3, KC_MS_WH_LEFT, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_WH_RIGHT,
|
||||
LGUI(KC_Z), LCTL(KC_Y), SCTL(KC_V), KC_MS_WH_DOWN, LCTL(KC_V), KC_MS_BTN5, LGUI(KC_V),
|
||||
KC_SLCK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
|
||||
// left thumb
|
||||
XXXXXXX, XXXXXXX,
|
||||
XXXXXXX,
|
||||
KC_MS_BTN1, KC_MS_BTN2, XXXXXXX,
|
||||
|
||||
// right hand
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, ALL_T(KC_NO), MEH_T(KC_NO), SCMD_T(KC_NO), XXXXXXX,
|
||||
XXXXXXX, _______, KC_MS_ACCEL1, KC_LSHIFT, KC_LCTRL, KC_MS_ACCEL2,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, GUI_T(KC_NO), KC_LALT, KC_RALT, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
|
||||
// right thumb
|
||||
XXXXXXX, XXXXXXX,
|
||||
XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, KC_MS_ACCEL0
|
||||
),
|
||||
|
||||
[NUMPAD_US] = LAYOUT_ergodox(
|
||||
// left hand
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, GUI_T(KC_NO), XXXXXXX, ALL_T(KC_NO), XXXXXXX, XXXXXXX,
|
||||
_______, KC_LCTRL, KC_LSHIFT, _______, MEH_T(KC_NO), XXXXXXX,
|
||||
XXXXXXX, KC_RALT, KC_LALT, XXXXXXX, SCMD_T(KC_NO), XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
|
||||
// left thumb
|
||||
XXXXXXX, XXXXXXX,
|
||||
KC_HOME,
|
||||
KC_SPACE, KC_BSPACE, KC_END,
|
||||
|
||||
// right hand
|
||||
KC_X, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F,
|
||||
KC_O, KC_I, KC_1, KC_2, KC_3, KC_SLSH, KC_PERC,
|
||||
KC_M, KC_4, KC_5, KC_6, KC_PLUS, KC_MINS,
|
||||
KC_L, KC_J, KC_7, KC_8, KC_9, KC_ASTR, KC_CIRC,
|
||||
KC_DOT, KC_0, KC_COMM, KC_UNDS, KC_BSLS,
|
||||
|
||||
// right thumb
|
||||
XXXXXXX, XXXXXXX,
|
||||
KC_PGUP,
|
||||
KC_PGDOWN, KC_DELETE, KC_ENTER
|
||||
),
|
||||
|
||||
[LAYERS_US] = LAYOUT_ergodox(
|
||||
// left hand
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
|
||||
// left thumb
|
||||
XXXXXXX, XXXXXXX,
|
||||
XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
|
||||
// right hand
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, TO(DVORAK_US), TO(PLOVER_US), TO(GAMING_US), XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
|
||||
// right thumb
|
||||
XXXXXXX, XXXXXXX,
|
||||
XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX
|
||||
),
|
||||
|
||||
[DVORAK_DV] = LAYOUT_ergodox(
|
||||
// left hand
|
||||
KC_ESC, DV_LABK, DV_LCBR, DV_LBRC, DV_LPRN, DV_EXLM, DV_AMPR,
|
||||
KC_TAB, DV_QUOT, SCMD_T(DV_COMM), MEH_T(DV_DOT), ALL_T(DV_P), DV_Y, DV_AT,
|
||||
DV_EQL, CTL_T(DV_A), SFT_T(DV_O), LT(NUMPAD_DV, DV_E), LT(ARROWS_DV, DV_U), DV_I,
|
||||
DV_BSLS, ALGR_T(DV_SCLN), ALT_T(DV_Q), LT(MEDIA_FN, DV_J), GUI_T(DV_K), DV_X, DV_PERC,
|
||||
MO(MEH_FN), TG(LAYERS_DV), DV_CIRC, DV_PLUS, DV_COLN,
|
||||
|
||||
// left thumb
|
||||
KC_LEFT, KC_RGHT,
|
||||
KC_HOME,
|
||||
KC_SPC, KC_BSPC, KC_END,
|
||||
|
||||
// right hand
|
||||
DV_PIPE, DV_QUES, DV_RPRN, DV_RBRC, DV_RCBR, DV_RABK, DV_ASTR,
|
||||
DV_HASH, DV_F, ALL_T(DV_G), MEH_T(DV_C), SCMD_T(DV_R), DV_L, DV_SLSH,
|
||||
DV_D, LT(MOUSE_DV, DV_H), LT(HYPER_FN, DV_T), SFT_T(DV_N), CTL_T(DV_S), DV_MINS,
|
||||
DV_DLR, DV_B, GUI_T(DV_M), LT(MEDIA_FN, DV_W), ALT_T(DV_V), ALGR_T(DV_Z), DV_GRV,
|
||||
DV_DQUO, DV_UNDS, DV_TILD, _______, MO(MEH_FN_PLUS),
|
||||
|
||||
// right thumb
|
||||
KC_UP, KC_DOWN,
|
||||
KC_PGUP,
|
||||
KC_PGDN, KC_DEL, KC_ENT
|
||||
),
|
||||
|
||||
[PLOVER_DV] = LAYOUT_ergodox(
|
||||
// left hand
|
||||
XXXXXXX, XXXXXXX, KC_MS_BTN2, KC_MS_UP, KC_MS_BTN1, KC_MS_BTN3, GUI_T(KC_NO),
|
||||
KC_ESC, KC_MS_BTN4, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_BTN5, PD_NUM,
|
||||
KC_TAB, PD_LS, PD_LT, PD_LP, PD_LH, PD_STAR,
|
||||
KC_CLCK, PD_LS, PD_LK, PD_LW, PD_LR, PD_STAR, PD_STAR,
|
||||
MO(MEH_FN), TG(LAYERS_DV), PD_NUM, PD_NUM, PD_NUM,
|
||||
|
||||
// left thumb
|
||||
KC_SPACE, KC_BSPACE,
|
||||
KC_HOME,
|
||||
PD_A, PD_O, KC_END,
|
||||
|
||||
// right hand
|
||||
KC_MS_ACCEL2, KC_MS_ACCEL1, KC_MS_ACCEL0, KC_UP, KC_APPLICATION, XXXXXXX, KC_MS_WH_UP,
|
||||
PD_NUM, KC_MS_WH_LEFT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_MS_WH_RIGHT, KC_MS_WH_DOWN,
|
||||
PD_STAR, PD_RF, PD_RP, PD_RL, PD_RT, PD_RD,
|
||||
PD_STAR, PD_STAR, PD_RR, PD_RB, PD_RG, PD_RS, PD_RZ,
|
||||
PD_NUM, PD_NUM, PD_NUM, PD_NUM, MO(MEH_FN_PLUS),
|
||||
|
||||
// right thumb
|
||||
KC_DELETE, KC_ENTER,
|
||||
KC_PGUP,
|
||||
KC_PGDOWN, PD_E, PD_U
|
||||
),
|
||||
|
||||
[GAMING_DV] = LAYOUT_ergodox(
|
||||
// left hand
|
||||
KC_ESCAPE, GUI_T(DV_MINS), DV_I, DV_O, DV_P, ALGR_T(DV_EQL), DV_T,
|
||||
KC_TAB, KC_LALT, DV_Q, DV_W, DV_E, ALL_T(DV_R), DV_G,
|
||||
LT(MOUSE_DV, DV_GRV), KC_LCTRL, DV_A, DV_S, DV_D, MEH_T(DV_F),
|
||||
DV_BSLS, KC_LSHIFT, DV_Z, DV_X, DV_C, SCMD_T(DV_V), DV_M,
|
||||
MO(MEH_FN), TG(LAYERS_DV), DV_COMM, DV_DOT, DV_LBRC,
|
||||
|
||||
// left thumb
|
||||
MO(MEDIA_FN), KC_NLCK,
|
||||
DV_SCLN,
|
||||
KC_SPACE, KC_ENTER, KC_BSPACE,
|
||||
|
||||
// right hand
|
||||
DV_QUOT, DV_Y, DV_K, DV_U, KC_KP_7, KC_KP_8, KC_KP_9,
|
||||
KC_MS_WH_UP, DV_H, DV_J, DV_L, KC_KP_4, KC_KP_2, KC_KP_6,
|
||||
DV_B, KC_MS_UP, DV_N, KC_KP_1, KC_KP_5, KC_KP_3,
|
||||
KC_MS_WH_DOWN, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_UP, KC_KP_0, DV_SLSH,
|
||||
DV_RBRC, KC_LEFT, KC_DOWN, KC_RIGHT, MO(MEH_FN_PLUS),
|
||||
|
||||
// right thumb
|
||||
KC_MS_BTN5, MO(HYPER_FN),
|
||||
KC_MS_BTN4,
|
||||
KC_MS_BTN3, KC_MS_BTN2, KC_MS_BTN1
|
||||
),
|
||||
|
||||
[ARROWS_DV] = LAYOUT_ergodox(
|
||||
// left hand
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, SCMD_T(KC_NO), MEH_T(KC_NO), ALL_T(KC_NO), XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, KC_LCTRL, KC_LSHIFT, XXXXXXX, _______, XXXXXXX,
|
||||
XXXXXXX, KC_RALT, KC_LALT, GUI_T(KC_NO), XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
|
||||
// left thumb
|
||||
XXXXXXX, XXXXXXX,
|
||||
KC_HOME,
|
||||
KC_SPACE, KC_BSPACE, KC_END,
|
||||
|
||||
// right hand
|
||||
LGUI(DV_X), XXXXXXX, LCTL(DV_X), KC_MS_WH_UP, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
LGUI(DV_C), XXXXXXX, LCTL(DV_C), KC_UP, SCTL(DV_C), LCTL(DV_Z), LGUI(DV_Z),
|
||||
KC_MS_WH_LEFT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_MS_WH_RIGHT, KC_APPLICATION,
|
||||
LGUI(DV_V), XXXXXXX, LCTL(DV_V), KC_MS_WH_DOWN, SCTL(DV_V), LCTL(DV_Y), SGUI(DV_Z),
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_SLCK,
|
||||
|
||||
// right thumb
|
||||
XXXXXXX, XXXXXXX,
|
||||
KC_PGUP,
|
||||
KC_PGDOWN, KC_DELETE, KC_ENTER
|
||||
),
|
||||
|
||||
[MOUSE_DV] = LAYOUT_ergodox(
|
||||
// left hand
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_WH_UP, LCTL(DV_X), XXXXXXX, LGUI(DV_X),
|
||||
LGUI(DV_Z), LCTL(DV_Z), SCTL(DV_C), KC_MS_UP, LCTL(DV_C), KC_MS_BTN4, LGUI(DV_C),
|
||||
KC_MS_BTN3, KC_MS_WH_LEFT, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_WH_RIGHT,
|
||||
LGUI(DV_Z), LCTL(DV_Y), SCTL(DV_V), KC_MS_WH_DOWN, LCTL(DV_V), KC_MS_BTN5, LGUI(DV_V),
|
||||
KC_SLCK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
|
||||
// left thumb
|
||||
XXXXXXX, XXXXXXX,
|
||||
XXXXXXX,
|
||||
KC_MS_BTN1, KC_MS_BTN2, XXXXXXX,
|
||||
|
||||
// right hand
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, ALL_T(KC_NO), MEH_T(KC_NO), SCMD_T(KC_NO), XXXXXXX,
|
||||
XXXXXXX, _______, KC_MS_ACCEL1, KC_LSHIFT, KC_LCTRL, KC_MS_ACCEL2,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, GUI_T(KC_NO), KC_LALT, KC_RALT, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
|
||||
// right thumb
|
||||
XXXXXXX, XXXXXXX,
|
||||
XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, KC_MS_ACCEL0
|
||||
),
|
||||
|
||||
[NUMPAD_DV] = LAYOUT_ergodox(
|
||||
// left hand
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, GUI_T(KC_NO), XXXXXXX, ALL_T(KC_NO), XXXXXXX, XXXXXXX,
|
||||
_______, KC_LCTRL, KC_LSHIFT, _______, MEH_T(KC_NO), XXXXXXX,
|
||||
XXXXXXX, KC_RALT, KC_LALT, XXXXXXX, SCMD_T(KC_NO), XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
|
||||
// left thumb
|
||||
XXXXXXX, XXXXXXX,
|
||||
KC_HOME,
|
||||
KC_SPACE, KC_BSPACE, KC_END,
|
||||
|
||||
// right hand
|
||||
DV_X, DV_A, DV_B, DV_C, DV_D, DV_E, DV_F,
|
||||
DV_O, DV_I, DV_1, DV_2, DV_3, DV_SLSH, DV_PERC,
|
||||
DV_M, DV_4, DV_5, DV_6, DV_PLUS, DV_MINS,
|
||||
DV_L, DV_J, DV_7, DV_8, DV_9, DV_ASTR, DV_CIRC,
|
||||
DV_DOT, DV_0, DV_COMM, DV_UNDS, DV_BSLS,
|
||||
|
||||
// right thumb
|
||||
XXXXXXX, XXXXXXX,
|
||||
KC_PGUP,
|
||||
KC_PGDOWN, KC_DELETE, KC_ENTER
|
||||
),
|
||||
|
||||
[LAYERS_DV] = LAYOUT_ergodox(
|
||||
// left hand
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
|
||||
// left thumb
|
||||
XXXXXXX, XXXXXXX,
|
||||
XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
|
||||
// right hand
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, TO(DVORAK_DV), TO(PLOVER_DV), TO(GAMING_DV), XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
|
||||
// right thumb
|
||||
XXXXXXX, XXXXXXX,
|
||||
XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX
|
||||
),
|
||||
|
||||
[MEDIA_FN] = LAYOUT_ergodox(
|
||||
// left hand
|
||||
KC_AUDIO_VOL_DOWN, KC_AUDIO_MUTE, RGB_TOG, XXXXXXX, KC_MAIL, KC_FIND, KC_WWW_REFRESH,
|
||||
KC_MEDIA_PREV_TRACK, KC_F9, KC_F7, KC_F5, KC_F3, KC_F1, KC_WWW_HOME,
|
||||
KC_PAUSE, KC_F19, KC_F17, KC_F15, KC_F13, KC_F11,
|
||||
RGB_HUD, XXXXXXX, XXXXXXX, _______, KC_F23, KC_F21, KC_WWW_BACK,
|
||||
RGB_VAD, KC_CLCK, KC_PSCREEN, XXXXXXX, MO(FIRMWARE),
|
||||
|
||||
// left thumb
|
||||
_______, XXXXXXX,
|
||||
XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, KC_MEDIA_EJECT,
|
||||
|
||||
// right hand
|
||||
KC_WWW_FAVORITES, KC_MY_COMPUTER, KC_CALCULATOR, XXXXXXX, RGB_MOD, RGB_M_P, KC_AUDIO_VOL_UP,
|
||||
KC_WWW_SEARCH, KC_F2, KC_F4, KC_F6, KC_F8, KC_F10, KC_MEDIA_NEXT_TRACK,
|
||||
KC_F12, KC_F14, KC_F16, KC_F18, KC_F20, KC_MEDIA_PLAY_PAUSE,
|
||||
KC_WWW_FORWARD, KC_F22, KC_F24, _______, XXXXXXX, XXXXXXX, RGB_HUI,
|
||||
KC_SYSTEM_POWER, XXXXXXX, KC_SYSTEM_SLEEP, KC_SYSTEM_WAKE, RGB_VAI,
|
||||
|
||||
// right thumb
|
||||
XXXXXXX, XXXXXXX,
|
||||
XXXXXXX,
|
||||
RGB_GREEN, XXXXXXX, XXXXXXX
|
||||
),
|
||||
|
||||
[HYPER_FN] = LAYOUT_ergodox(
|
||||
// left hand
|
||||
XXXXXXX, HYPR(KC_F1), HYPR(KC_F2), HYPR(KC_F3), HYPR(KC_F4), HYPR(KC_F5), XXXXXXX,
|
||||
XXXXXXX, HYPR(KC_F6), HYPR(KC_F7), HYPR(KC_F8), HYPR(KC_F9), HYPR(KC_F10), XXXXXXX,
|
||||
XXXXXXX, HYPR(KC_F11), HYPR(KC_F12), HYPR(KC_F13), HYPR(KC_F14), HYPR(KC_F15),
|
||||
XXXXXXX, HYPR(KC_F16), HYPR(KC_F17), HYPR(KC_F18), HYPR(KC_F19), HYPR(KC_F20), XXXXXXX,
|
||||
XXXXXXX, HYPR(KC_F21), HYPR(KC_F22), HYPR(KC_F23), HYPR(KC_F24),
|
||||
|
||||
// left thumb
|
||||
XXXXXXX, XXXXXXX,
|
||||
XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
|
||||
// right hand
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
|
||||
// right thumb
|
||||
XXXXXXX, _______,
|
||||
XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX
|
||||
),
|
||||
|
||||
[MEH_FN] = LAYOUT_ergodox(
|
||||
// left hand
|
||||
LCA(KC_F11), LCA(KC_F9), LCA(KC_F7), LCA(KC_F5), LCA(KC_F3), LCA(KC_F1), XXXXXXX,
|
||||
LCAG(KC_F11), LCAG(KC_F9), LCAG(KC_F7), LCAG(KC_F5), LCAG(KC_F3), LCAG(KC_F1), XXXXXXX,
|
||||
MEH(KC_F11), MEH(KC_F9), MEH(KC_F7), MEH(KC_F5), MEH(KC_F3), MEH(KC_F1),
|
||||
SGUI(KC_F11), SGUI(KC_F9), SGUI(KC_F7), SGUI(KC_F5), SGUI(KC_F3), SGUI(KC_F1), XXXXXXX,
|
||||
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
|
||||
// left thumb
|
||||
XXXXXXX, XXXXXXX,
|
||||
XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
|
||||
// right hand
|
||||
XXXXXXX, LCA(KC_F2), LCA(KC_F4), LCA(KC_F6), LCA(KC_F8), LCA(KC_F10), LCA(KC_F12),
|
||||
XXXXXXX, LCAG(KC_F2), LCAG(KC_F4), LCAG(KC_F6), LCAG(KC_F8), LCAG(KC_F10), LCAG(KC_F12),
|
||||
MEH(KC_F2), MEH(KC_F4), MEH(KC_F6), MEH(KC_F8), MEH(KC_F10), MEH(KC_F12),
|
||||
XXXXXXX, SGUI(KC_F2), SGUI(KC_F4), SGUI(KC_F6), SGUI(KC_F8), SGUI(KC_F10), SGUI(KC_F12),
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
|
||||
// right thumb
|
||||
XXXXXXX, XXXXXXX,
|
||||
XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX
|
||||
),
|
||||
|
||||
[MEH_FN_PLUS] = LAYOUT_ergodox(
|
||||
// left hand
|
||||
LCA(KC_F23), LCA(KC_F21), LCA(KC_F19), LCA(KC_F17), LCA(KC_F15), LCA(KC_F13), XXXXXXX,
|
||||
LCAG(KC_F23), LCAG(KC_F21), LCAG(KC_F19), LCAG(KC_F17), LCAG(KC_F15), LCAG(KC_F13), XXXXXXX,
|
||||
MEH(KC_F23), MEH(KC_F21), MEH(KC_F19), MEH(KC_F17), MEH(KC_F15), MEH(KC_F13),
|
||||
SGUI(KC_F23), SGUI(KC_F21), SGUI(KC_F19), SGUI(KC_F17), SGUI(KC_F15), SGUI(KC_F13), XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
|
||||
// left thumb
|
||||
XXXXXXX, XXXXXXX,
|
||||
XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
|
||||
// right hand
|
||||
XXXXXXX, LCA(KC_F14), LCA(KC_F16), LCA(KC_F18), LCA(KC_F20), LCA(KC_F22), LCA(KC_F24),
|
||||
XXXXXXX, LCAG(KC_F14), LCAG(KC_F16), LCAG(KC_F18), LCAG(KC_F20), LCAG(KC_F22), LCAG(KC_F24),
|
||||
MEH(KC_F14), MEH(KC_F16), MEH(KC_F18), MEH(KC_F20), MEH(KC_F22), MEH(KC_F24),
|
||||
XXXXXXX, SGUI(KC_F14), SGUI(KC_F16), SGUI(KC_F18), SGUI(KC_F20), SGUI(KC_F22), SGUI(KC_F24),
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
|
||||
|
||||
// right thumb
|
||||
XXXXXXX, XXXXXXX,
|
||||
XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX
|
||||
),
|
||||
|
||||
[FIRMWARE] = LAYOUT_ergodox(
|
||||
// left hand
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
|
||||
|
||||
// left thumb
|
||||
XXXXXXX, XXXXXXX,
|
||||
XXXXXXX,
|
||||
RESET, XXXXXXX, XXXXXXX,
|
||||
|
||||
// right hand
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
|
||||
// right thumb
|
||||
XXXXXXX, XXXXXXX,
|
||||
XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, EEP_RST
|
||||
)
|
||||
};
|
||||
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case RGB_GREEN:
|
||||
if (record->event.pressed) {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
rgblight_enable();
|
||||
rgblight_mode(1);
|
||||
rgblight_sethsv_red();
|
||||
#endif
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
case KC_CLCK:
|
||||
if (record->event.pressed) {
|
||||
if (!(CAPS_LOCK)) {
|
||||
ergodox_right_led_1_on();
|
||||
CAPS_LOCK = 1;
|
||||
} else {
|
||||
ergodox_right_led_1_off();
|
||||
CAPS_LOCK = 0;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
case KC_NLCK:
|
||||
if (record->event.pressed) {
|
||||
if (!(NUM_LOCK)) {
|
||||
ergodox_right_led_2_on();
|
||||
NUM_LOCK = 1;
|
||||
} else {
|
||||
ergodox_right_led_2_off();
|
||||
NUM_LOCK = 0;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
case KC_SLCK:
|
||||
if (record->event.pressed) {
|
||||
if (!(SCROLL_LOCK)) {
|
||||
ergodox_right_led_3_on();
|
||||
SCROLL_LOCK = 1;
|
||||
} else {
|
||||
ergodox_right_led_3_off();
|
||||
SCROLL_LOCK = 0;
|
||||
}
|
||||
}
|
||||
|
||||
case KC_MS_WH_LEFT:
|
||||
if (record->event.pressed) {
|
||||
if (SCROLL_LOCK) {
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
case KC_MS_WH_UP:
|
||||
if (record->event.pressed) {
|
||||
if (SCROLL_LOCK) {
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
case KC_MS_WH_DOWN:
|
||||
if (record->event.pressed) {
|
||||
if (SCROLL_LOCK) {
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
case KC_MS_WH_RIGHT:
|
||||
if (record->event.pressed) {
|
||||
if (SCROLL_LOCK) {
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
uint32_t layer_state_set_user(uint32_t state) {
|
||||
uint8_t layer = biton32(state);
|
||||
|
||||
switch (layer) {
|
||||
case DVORAK_US:
|
||||
rgblight_sethsv_noeeprom_red();
|
||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
|
||||
|
||||
break;
|
||||
|
||||
case PLOVER_US:
|
||||
rgblight_sethsv_noeeprom_red();
|
||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3);
|
||||
|
||||
break;
|
||||
|
||||
case GAMING_US:
|
||||
rgblight_sethsv_noeeprom_red();
|
||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3);
|
||||
|
||||
break;
|
||||
|
||||
case ARROWS_US:
|
||||
rgblight_sethsv_noeeprom_blue();
|
||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
|
||||
|
||||
break;
|
||||
|
||||
case MOUSE_US:
|
||||
rgblight_sethsv_noeeprom_blue();
|
||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
|
||||
|
||||
break;
|
||||
|
||||
case NUMPAD_US:
|
||||
rgblight_sethsv_noeeprom_blue();
|
||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
|
||||
|
||||
break;
|
||||
|
||||
case LAYERS_US:
|
||||
rgblight_sethsv_noeeprom_cyan();
|
||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
|
||||
|
||||
break;
|
||||
|
||||
case DVORAK_DV:
|
||||
rgblight_sethsv_noeeprom_green();
|
||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
|
||||
break;
|
||||
|
||||
case PLOVER_DV:
|
||||
rgblight_sethsv_noeeprom_green();
|
||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3);
|
||||
|
||||
break;
|
||||
|
||||
case GAMING_DV:
|
||||
rgblight_sethsv_noeeprom_green();
|
||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3);
|
||||
|
||||
break;
|
||||
|
||||
case ARROWS_DV:
|
||||
rgblight_sethsv_noeeprom_blue();
|
||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
|
||||
|
||||
break;
|
||||
|
||||
case MOUSE_DV:
|
||||
rgblight_sethsv_noeeprom_blue();
|
||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
|
||||
|
||||
break;
|
||||
|
||||
case NUMPAD_DV:
|
||||
rgblight_sethsv_noeeprom_blue();
|
||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
|
||||
|
||||
break;
|
||||
|
||||
case LAYERS_DV:
|
||||
rgblight_sethsv_noeeprom_cyan();
|
||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
|
||||
|
||||
break;
|
||||
|
||||
case MEDIA_FN:
|
||||
rgblight_sethsv_noeeprom_yellow();
|
||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
|
||||
|
||||
break;
|
||||
|
||||
case HYPER_FN:
|
||||
rgblight_sethsv_noeeprom_magenta();
|
||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
|
||||
|
||||
break;
|
||||
|
||||
case MEH_FN:
|
||||
rgblight_sethsv_noeeprom_magenta();
|
||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_SNAKE + 4);
|
||||
|
||||
break;
|
||||
|
||||
case MEH_FN_PLUS:
|
||||
rgblight_sethsv_noeeprom_magenta();
|
||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_SNAKE + 5);
|
||||
|
||||
break;
|
||||
|
||||
case FIRMWARE:
|
||||
rgblight_sethsv_noeeprom_pink();
|
||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return state;
|
||||
};
|
||||
#include QMK_KEYBOARD_H // Includes the QMK-verse.
|
||||
#include "keymap_plover.h" // Includes the Plover keymap for easier readability.
|
||||
|
||||
|
||||
// TODO: No eeprom changes unless needed, custom rgb settings for animations.
|
||||
#include "keycodes/aliases_definitions.c"
|
||||
#include "layers/layers_definitions.c"
|
||||
#include "tap_dance/tap_dance_setup.c"
|
||||
#include "tap_dance/tap_dances.c"
|
||||
#include "user/matrix_scan_user.c"
|
||||
#include "tap_dance/mod_tap_layer_dances/none_lead.c"
|
||||
#include "tap_dance/tap_dance_actions.c"
|
||||
#include "keycodes/custom_keycodes.c"
|
||||
#include "dynamic_macro.h" // Includes dynamic macro definitions, needed *after* the custom keycodes.
|
||||
#include "hacker_dvorak.c"
|
||||
#include "user/eeconfig_init_user.c"
|
||||
#include "user/process_record_user.c"
|
||||
#include "plover/plover_mode.c"
|
||||
#include "user/layer_set_state_user.c"
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
enum layers { // Hacker Dvorak keyboard layers:
|
||||
DVORAK = 0, // * Dvorak base layer.
|
||||
PLOVER = 1, // * Steno layer for use with Plover.
|
||||
GAMING = 2, // * Gaming layer intended for general purpose playing.
|
||||
ARROWS = 3, // * Arrows movement keys and edition shortcuts.
|
||||
MOUSE = 4, // * Mouse movement keys and edition shortcuts.
|
||||
NUMPAD = 5, // * ATM style numpad with symbols and letters that should suffice to input any numeric literal.
|
||||
LAYERS = 6, // * Layer switcher used to change between DVORAK, PLOVER and GAMING layers.
|
||||
MEDIA_FN = 7, // * Media, RGB and function keys from F1 to F24 in symmetric fashion.
|
||||
HYPER = 8, // * Hot keys layer (uses hyper + F1 .. F24) suitable for global shortcut tasks.
|
||||
FIRMWARE = 9 // * Layer with firmware related functionality, like the reset and EEPROM keys.
|
||||
};
|
||||
@@ -0,0 +1,14 @@
|
||||
LEADER_DICTIONARY() {
|
||||
leading = false;
|
||||
leader_end();
|
||||
|
||||
SEQ_ONE_KEY(TD(APMR_PIPE)) {
|
||||
register_code(KC_LCTL);
|
||||
register_code(KC_LSFT);
|
||||
register_code(KC_U);
|
||||
|
||||
unregister_code(KC_U);
|
||||
unregister_code(KC_LSFT);
|
||||
unregister_code(KC_LCTL);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
LEADER_EXTERNS();
|
||||
|
||||
void qk_leader_start(void) {
|
||||
if (!leading) {
|
||||
leading = true;
|
||||
leader_time = timer_read();
|
||||
leader_sequence_size = 0;
|
||||
leader_sequence[0] = 0;
|
||||
leader_sequence[1] = 0;
|
||||
leader_sequence[2] = 0;
|
||||
leader_sequence[3] = 0;
|
||||
leader_sequence[4] = 0;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
// TODO: improve feedback
|
||||
void plover_toggle(void) {
|
||||
// Press "PHROLG"
|
||||
register_code(PV_LP);
|
||||
register_code(PV_LH);
|
||||
register_code(PV_LR);
|
||||
register_code(PV_O);
|
||||
register_code(PV_RL);
|
||||
register_code(PV_RG);
|
||||
|
||||
// Release "PHROLG"
|
||||
unregister_code(PV_LP);
|
||||
unregister_code(PV_LH);
|
||||
unregister_code(PV_LR);
|
||||
unregister_code(PV_O);
|
||||
unregister_code(PV_RL);
|
||||
unregister_code(PV_RG);
|
||||
}
|
||||
|
||||
bool PLOVER_MODE = false;
|
||||
@@ -17,8 +17,8 @@ I plan to use [QMK](https://docs.qmk.fm) in the future, in order to overcome som
|
||||
* All symbols (including shifted symbols).
|
||||
* All modifier are dual keys positioned near the home row.
|
||||
2. Querty
|
||||
* Used to overcome the limitation pointed above, when your OS layout is set to Dvorak instead of US, this way you can use
|
||||
Standard Dvorak (available by default on all the main operating systems) on other normal keybdoards and Hacker Dvorak on
|
||||
* Used to overcome the limitation pointed above, when your OS layout is set to Dvorak instead of US, this way you can use
|
||||
Standard Dvorak (available by default on all the main operating systems) on other normal keybdoards and Hacker Dvorak on
|
||||
the Ergodox EZ Shine at the same time, without changing back and forth tho OS layout.
|
||||
3. Gaming
|
||||
* Still in development.
|
||||
@@ -35,7 +35,7 @@ I plan to use [QMK](https://docs.qmk.fm) in the future, in order to overcome som
|
||||
6. Numpad
|
||||
* ATM style numpad.
|
||||
* All modifier keys.
|
||||
* Letters from `A` to `F` for hexadecimal numbers (`B` is also used for binary numeric literals in most programming
|
||||
* Letters from `A` to `F` for hexadecimal numbers (`B` is also used for binary numeric literals in most programming
|
||||
languages, ie. `0b11001`).
|
||||
* `X` for hexadecimal numeric literals in most programming languages, ie. `0xbeef`.
|
||||
* `O` for octal numeric literals in most programming languages, ie `0o123`.
|
||||
@@ -52,11 +52,11 @@ I plan to use [QMK](https://docs.qmk.fm) in the future, in order to overcome som
|
||||
* Useful for custom application shortcuts.
|
||||
10. Meh Fn +
|
||||
* Useful for custom standard shortcuts.
|
||||
|
||||
|
||||
## To Do
|
||||
|
||||
Add images.
|
||||
|
||||
***
|
||||
|
||||
Please comment below if you have any ideas or suggestions. If you have used this layout or used it as a base, I'd love to hear about your experience!
|
||||
Please comment below if you have any ideas or suggestions. If you have used this layout or used it as a base, I'd love to hear about your experience!
|
||||
|
||||
@@ -1,35 +1,40 @@
|
||||
# Set any rules.mk overrides for your specific keymap here.
|
||||
# See rules at https://docs.qmk.fm/#/config_options?id=the-rulesmk-file
|
||||
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
TAP_DANCE_ENABLE = yes
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys(+4700b).
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control(+450b).
|
||||
SLEEP_LED_ENABLE = yes # Turn off leds when computer is sleeping.
|
||||
KEY_LOCK_ENABLE = yes # (+1730b)
|
||||
RGBLIGHT_ENABLE = yes
|
||||
LEADER_ENABLE = yes
|
||||
|
||||
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
TAP_DANCE_ENABLE = yes
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys(+4700b).
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control(+450b).
|
||||
RGBLIGHT_ENABLE = yes
|
||||
LEADER_ENABLE = yes
|
||||
|
||||
UNICODE_ENABLE = no # For Unicode.
|
||||
UNICODE_ENABLE = no
|
||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||
SWAP_HANDS_ENABLE = no # Allow swapping hands of keyboard.
|
||||
|
||||
|
||||
# This are by default off:
|
||||
# CONSOLE_ENABLE = no # Console for debug(+400)
|
||||
# BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||
# COMBO_ENABLE = no
|
||||
# UCIS_ENABLE = no # For Unicode.
|
||||
# UNICODEMAP_ENABLE = no
|
||||
# SLEEP_LED_ENABLE = no # Turn off leds when computer is sleeping.
|
||||
# KEY_LOCK_ENABLE = no # (+1730b)
|
||||
# CONSOLE_ENABLE = no # Console for debug(+400b)
|
||||
# BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000b)
|
||||
# API_SYSEX_ENABLE = no
|
||||
# MIDI_ENABLE = no
|
||||
# UNICODEMAP_ENABLE = no
|
||||
# BLUETOOTH_ENABLE = no
|
||||
# AUDIO_ENABLE = no
|
||||
# FAUXCLICKY_ENABLE = no
|
||||
# VARIABLE_TRACE = no
|
||||
# BACKLIGHT_ENABLE = no
|
||||
# RGB_MATRIX_ENABLE = no
|
||||
# COMBO_ENABLE = no
|
||||
|
||||
# POINTING_DEVICE_ENABLE = no
|
||||
|
||||
# This don't need argument:
|
||||
# AUTO_SHIFT_ENABLE = no
|
||||
# AUTO_SHIFT_MODIFIERS = no
|
||||
|
||||
# This don't need argument?
|
||||
# CUSTOM_MATRIX # Custom matrix file for the ErgoDox EZ
|
||||
# SPLIT_KEYBOARD
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
//instanalize an instance of 'tap' for the None - Lead tap dance.
|
||||
static tap none_lead_state = {
|
||||
.is_press_action = true,
|
||||
.state = 0
|
||||
};
|
||||
|
||||
void none_lead_finished(qk_tap_dance_state_t *state, void *user_data) {
|
||||
none_lead_state.state = current_dance(state);
|
||||
switch (none_lead_state.state) {
|
||||
case SINGLE_TAP:
|
||||
register_code(KC_NO);
|
||||
break;
|
||||
|
||||
case SINGLE_HOLD:
|
||||
register_code(KC_LALT);
|
||||
register_code(KC_LSFT);
|
||||
break;
|
||||
|
||||
case DOUBLE_TAP:
|
||||
qk_leader_start();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void none_lead_reset(qk_tap_dance_state_t *state, void *user_data) {
|
||||
switch (none_lead_state.state) {
|
||||
case SINGLE_TAP:
|
||||
unregister_code(KC_NO);
|
||||
break;
|
||||
|
||||
case SINGLE_HOLD:
|
||||
unregister_code(KC_LALT);
|
||||
unregister_code(KC_LSFT);
|
||||
break;
|
||||
|
||||
case DOUBLE_TAP:
|
||||
break;
|
||||
}
|
||||
none_lead_state.state = 0;
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
// Register the double tap dances:
|
||||
qk_tap_dance_action_t tap_dance_actions[] = {
|
||||
[EQL_PLUS] = ACTION_TAP_DANCE_DOUBLE(KC_EQL, KC_PLUS),
|
||||
[MINS_UNDS] = ACTION_TAP_DANCE_DOUBLE(KC_MINS, KC_UNDS),
|
||||
[SLSH_BSLS] = ACTION_TAP_DANCE_DOUBLE(KC_SLSH, KC_BSLS),
|
||||
[GRV_TILD] = ACTION_TAP_DANCE_DOUBLE(KC_GRV, KC_TILD),
|
||||
[QUOT_DQUO] = ACTION_TAP_DANCE_DOUBLE(KC_QUOT, KC_DQUO),
|
||||
[SCLN_COLN] = ACTION_TAP_DANCE_DOUBLE(KC_SCLN, KC_COLN),
|
||||
[ASTR_CIRC] = ACTION_TAP_DANCE_DOUBLE(KC_ASTR, KC_CIRC),
|
||||
[APMR_PIPE] = ACTION_TAP_DANCE_DOUBLE(KC_AMPR, KC_PIPE),
|
||||
[EXLM_QUES] = ACTION_TAP_DANCE_DOUBLE(KC_EXLM, KC_QUES),
|
||||
[HASH_PERC] = ACTION_TAP_DANCE_DOUBLE(KC_HASH, KC_PERC),
|
||||
[AT_DLR] = ACTION_TAP_DANCE_DOUBLE(KC_AT, KC_DLR),
|
||||
[LPRN_LBRC] = ACTION_TAP_DANCE_DOUBLE(KC_LPRN, KC_LBRC),
|
||||
[RPRN_RBRC] = ACTION_TAP_DANCE_DOUBLE(KC_RPRN, KC_RBRC),
|
||||
[LCBR_LABK] = ACTION_TAP_DANCE_DOUBLE(KC_LCBR, KC_LABK),
|
||||
[RCBR_RABK] = ACTION_TAP_DANCE_DOUBLE(KC_RCBR, KC_RABK),
|
||||
[DOT_COMM] = ACTION_TAP_DANCE_DOUBLE(KC_DOT, KC_COMM),
|
||||
[NONE_LEAD] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, none_lead_finished, none_lead_reset, DANCING_TERM)
|
||||
};
|
||||
@@ -0,0 +1,75 @@
|
||||
typedef struct {
|
||||
bool is_press_action;
|
||||
int state;
|
||||
} tap;
|
||||
|
||||
enum {
|
||||
SINGLE_TAP = 1,
|
||||
SINGLE_HOLD = 2,
|
||||
DOUBLE_TAP = 3,
|
||||
DOUBLE_HOLD = 4,
|
||||
DOUBLE_SINGLE_TAP = 5, // Send two single taps.
|
||||
TRIPLE_TAP = 6,
|
||||
TRIPLE_HOLD = 7,
|
||||
TRIPLE_SINGLE_TAP = 8 // Send three single taps.
|
||||
};
|
||||
|
||||
/* Return an integer that corresponds to what kind of tap dance should be executed.
|
||||
*
|
||||
* How to figure out tap dance state: interrupted and pressed.
|
||||
*
|
||||
* Interrupted: If the state of a dance dance is "interrupted", that means that another key has been hit
|
||||
* under the tapping term. This is typically indicitive that you are trying to "tap" the key.
|
||||
*
|
||||
* Pressed: Whether or not the key is still being pressed. If this value is true, that means the tapping term
|
||||
* has ended, but the key is still being pressed down. This generally means the key is being "held".
|
||||
*
|
||||
* One thing that is currenlty not possible with qmk software in regards to tap dance is to mimic the "permissive hold"
|
||||
* feature. In general, advanced tap dances do not work well if they are used with commonly typed letters.
|
||||
* For example "A". Tap dances are best used on non-letter keys that are not hit while typing letters.
|
||||
*
|
||||
* Good places to put an advanced tap dance:
|
||||
* z,q,x,j,k,v,b, any function key, home/end, comma, semi-colon
|
||||
*
|
||||
* Criteria for "good placement" of a tap dance key:
|
||||
* Not a key that is hit frequently in a sentence
|
||||
* Not a key that is used frequently to double tap, for example 'tab' is often double tapped in a terminal, or
|
||||
* in a web form. So 'tab' would be a poor choice for a tap dance.
|
||||
* Letters used in common words as a double. For example 'p' in 'pepper'. If a tap dance function existed on the
|
||||
* letter 'p', the word 'pepper' would be quite frustating to type.
|
||||
*
|
||||
* For the third point, there does exist the 'DOUBLE_SINGLE_TAP', however this is not fully tested
|
||||
*
|
||||
*/
|
||||
int current_dance(qk_tap_dance_state_t *state) {
|
||||
int current_state = 0;
|
||||
if (state->count == 1) {
|
||||
if (state->interrupted || !state->pressed) {
|
||||
current_state = SINGLE_TAP;
|
||||
} else {
|
||||
current_state = SINGLE_HOLD; //key has not been interrupted, but they key is still held. Means you want to send a 'HOLD'.
|
||||
}
|
||||
} else if (state->count == 2) {
|
||||
/*
|
||||
* DOUBLE_SINGLE_TAP is to distinguish between typing "pepper", and actually wanting a double tap
|
||||
* action when hitting 'pp'. Suggested use case for this return value is when you want to send two
|
||||
* keystrokes of the key, and not the 'double tap' action/macro.
|
||||
*/
|
||||
if (state->interrupted) {
|
||||
current_state = DOUBLE_SINGLE_TAP;
|
||||
} else if (state->pressed) {
|
||||
current_state = DOUBLE_HOLD;
|
||||
} else {
|
||||
current_state = DOUBLE_TAP;
|
||||
}
|
||||
} else if (state->count == 3) {
|
||||
if (state->interrupted) {
|
||||
current_state = TRIPLE_SINGLE_TAP;
|
||||
} else if (state->pressed) {
|
||||
current_state = TRIPLE_HOLD;
|
||||
} else {
|
||||
current_state = TRIPLE_TAP;
|
||||
}
|
||||
}
|
||||
return current_state;
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
//--------------------------------------------------------------------------------------------//
|
||||
// | | | | | //
|
||||
// Single tap | Single hold | Double tap | Double hold | Triple tap | Triple hold //
|
||||
// Mod tap dances: // | | | | | //
|
||||
enum tap_dances { //--------------------------------------------------------------------------------------------//
|
||||
// | | | | | //
|
||||
EQL_PLUS = 0, // = | + | | | | //
|
||||
// | | | | | //
|
||||
//--------------------------------------------------------------------------------------------//
|
||||
// | | | | | //
|
||||
MINS_UNDS = 1, // - | _ | | | | //
|
||||
// | | | | | //
|
||||
//--------------------------------------------------------------------------------------------//
|
||||
// | | | | | //
|
||||
SLSH_BSLS = 2, // / | \ | | | | //
|
||||
// | | | | | //
|
||||
//--------------------------------------------------------------------------------------------//
|
||||
// | | | | | //
|
||||
GRV_TILD = 3, // ` | ~ | | | | //
|
||||
// | | | | | //
|
||||
//--------------------------------------------------------------------------------------------//
|
||||
// | | | | | //
|
||||
QUOT_DQUO = 4, // ' | " | | | | //
|
||||
// | | | | | //
|
||||
//--------------------------------------------------------------------------------------------//
|
||||
// | | | | | //
|
||||
SCLN_COLN = 5, // ; | : | | | | //
|
||||
// | | | | | //
|
||||
//--------------------------------------------------------------------------------------------//
|
||||
// | | | | | //
|
||||
ASTR_CIRC = 6, // * | ^ | | | | //
|
||||
// | | | | | //
|
||||
//--------------------------------------------------------------------------------------------//
|
||||
// | | | | | //
|
||||
APMR_PIPE = 7, // & | | | | | | //
|
||||
// | | | | | //
|
||||
//--------------------------------------------------------------------------------------------//
|
||||
// | | | | | //
|
||||
EXLM_QUES = 8, // ! | ? | | | | //
|
||||
// | | | | | //
|
||||
//--------------------------------------------------------------------------------------------//
|
||||
// | | | | | //
|
||||
HASH_PERC = 9, // # | % | | | | //
|
||||
// | | | | | //
|
||||
//--------------------------------------------------------------------------------------------//
|
||||
// | | | | | //
|
||||
AT_DLR = 10, // @ | $ | | | | //
|
||||
// | | | | | //
|
||||
//--------------------------------------------------------------------------------------------//
|
||||
// | | | | | //
|
||||
LPRN_LBRC = 11, // ( | [ | | | | //
|
||||
// | | | | | //
|
||||
//--------------------------------------------------------------------------------------------//
|
||||
// | | | | | //
|
||||
RPRN_RBRC = 12, // ) | ] | | | | //
|
||||
// | | | | | //
|
||||
//--------------------------------------------------------------------------------------------//
|
||||
// | | | | | //
|
||||
LCBR_LABK = 13, // { | < | | | | //
|
||||
// | | | | | //
|
||||
//--------------------------------------------------------------------------------------------//
|
||||
// | | | | | //
|
||||
RCBR_RABK = 14, // } | > | | | | //
|
||||
// | | | | | //
|
||||
//--------------------------------------------------------------------------------------------//
|
||||
// | | | | | //
|
||||
DOT_COMM = 15, // . | , | | | | //
|
||||
// | | | | | //
|
||||
//--------------------------------------------------------------------------------------------//
|
||||
// | | | | | //
|
||||
NONE_LEAD = 16, // NONE | ALT+SHIFT | LEAD | | | //
|
||||
// | | | | | //
|
||||
//--------------------------------------------------------------------------------------------//
|
||||
};
|
||||
@@ -0,0 +1,3 @@
|
||||
// void eeconfig_init_user(void) {
|
||||
//
|
||||
// };
|
||||
@@ -0,0 +1,121 @@
|
||||
|
||||
uint32_t layer_state_set_user(uint32_t state) {
|
||||
uint8_t layer = biton32(state);
|
||||
|
||||
switch (layer) {
|
||||
case DVORAK:
|
||||
rgblight_sethsv_noeeprom_green();
|
||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
|
||||
|
||||
if (PLOVER_MODE) {
|
||||
plover_toggle();
|
||||
PLOVER_MODE = false;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case PLOVER:
|
||||
rgblight_sethsv_noeeprom_red();
|
||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3);
|
||||
|
||||
if (!(PLOVER_MODE)) {
|
||||
plover_toggle();
|
||||
PLOVER_MODE = true;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case GAMING:
|
||||
rgblight_sethsv_noeeprom_red();
|
||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
|
||||
|
||||
if (PLOVER_MODE) {
|
||||
plover_toggle();
|
||||
PLOVER_MODE = false;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case ARROWS:
|
||||
rgblight_sethsv_noeeprom_blue();
|
||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
|
||||
|
||||
if (PLOVER_MODE) {
|
||||
plover_toggle();
|
||||
PLOVER_MODE = false;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case MOUSE:
|
||||
rgblight_sethsv_noeeprom_blue();
|
||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
|
||||
|
||||
if (PLOVER_MODE) {
|
||||
plover_toggle();
|
||||
PLOVER_MODE = false;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case NUMPAD:
|
||||
rgblight_sethsv_noeeprom_blue();
|
||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
|
||||
|
||||
if (PLOVER_MODE) {
|
||||
plover_toggle();
|
||||
PLOVER_MODE = false;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case LAYERS:
|
||||
rgblight_sethsv_noeeprom_cyan();
|
||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
|
||||
|
||||
if (PLOVER_MODE) {
|
||||
plover_toggle();
|
||||
PLOVER_MODE = false;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case MEDIA_FN:
|
||||
rgblight_sethsv_noeeprom_yellow();
|
||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
|
||||
|
||||
if (PLOVER_MODE) {
|
||||
plover_toggle();
|
||||
PLOVER_MODE = false;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case HYPER:
|
||||
rgblight_sethsv_noeeprom_magenta();
|
||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
|
||||
|
||||
if (PLOVER_MODE) {
|
||||
plover_toggle();
|
||||
PLOVER_MODE = false;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case FIRMWARE:
|
||||
rgblight_sethsv_noeeprom_magenta();
|
||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
|
||||
|
||||
if (PLOVER_MODE) {
|
||||
plover_toggle();
|
||||
PLOVER_MODE = false;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return state;
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
#include "../leader/leader_setup.c"
|
||||
|
||||
bool MATRIX_SCANNED = false;
|
||||
|
||||
void matrix_scan_user(void) {
|
||||
if (!(MATRIX_SCANNED)) {
|
||||
rgblight_sethsv_noeeprom_green();
|
||||
MATRIX_SCANNED = true;
|
||||
}
|
||||
|
||||
#include "../leader/leader_dictionary.c"
|
||||
};
|
||||
@@ -0,0 +1,75 @@
|
||||
// TODO: Improve this currently there is no feedback if activated by other means.
|
||||
bool CAPS_LOCK = false;
|
||||
bool NUM_LOCK = false;
|
||||
bool SCROLL_LOCK = false;
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
if (!process_record_dynamic_macro(keycode, record)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
switch (keycode) {
|
||||
case KC_CLCK:
|
||||
if (record->event.pressed) {
|
||||
if (!(CAPS_LOCK)) {
|
||||
ergodox_right_led_1_on();
|
||||
CAPS_LOCK = true;
|
||||
} else {
|
||||
ergodox_right_led_1_off();
|
||||
CAPS_LOCK = false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
case KC_NLCK:
|
||||
if (record->event.pressed) {
|
||||
if (!(NUM_LOCK)) {
|
||||
ergodox_right_led_2_on();
|
||||
NUM_LOCK = true;
|
||||
} else {
|
||||
ergodox_right_led_2_off();
|
||||
NUM_LOCK = false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
case KC_SLCK:
|
||||
if (record->event.pressed) {
|
||||
if (!(SCROLL_LOCK)) {
|
||||
ergodox_right_led_3_on();
|
||||
SCROLL_LOCK = true;
|
||||
} else {
|
||||
ergodox_right_led_3_off();
|
||||
SCROLL_LOCK = false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
case KC_MS_WH_UP ... KC_MS_WH_RIGHT:
|
||||
if (record->event.pressed) {
|
||||
if (SCROLL_LOCK) {
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
case MY_CUSTOM_MACRO:
|
||||
if (record->event.pressed) {
|
||||
SEND_STRING("QMK is the best thing ever!"); // this is our macro!
|
||||
return false;
|
||||
}
|
||||
|
||||
case MY_OTHER_MACRO:
|
||||
if (record->event.pressed) {
|
||||
SEND_STRING(SS_LCTRL("ac")); // selects all and copies
|
||||
return false;
|
||||
}
|
||||
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -2,18 +2,85 @@
|
||||
"keyboard_name": "Ergoinu",
|
||||
"url": "",
|
||||
"maintainer": "hsgw",
|
||||
"width": 17,
|
||||
"height": 6.75,
|
||||
"width": 18,
|
||||
"height": 5.4,
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"key_count": 64,
|
||||
"layout": [
|
||||
{"x": 0, "y": 0.6}, {"x": 1, "y": 0.4}, {"x": 2, "y": 0.4}, {"x": 3, "y": 0.25}, {"x": 4, "y": 0}, {"x": 5, "y": 0.25}, {"x": 6, "y": 0.4}, {"x": 10, "y": 0.4}, {"x": 11, "y": 0.25}, {"x": 12, "y": 0}, {"x": 13, "y": 0.25}, {"x": 14, "y": 0.4}, {"x": 15, "y": 0.4}, {"x": 16, "y": 0.6},
|
||||
{"x": 0, "y": 1.6}, {"x": 1, "y": 1.4}, {"x": 2, "y": 1.4}, {"x": 3, "y": 1.25}, {"x": 4, "y": 1}, {"x": 5, "y": 1.25}, {"x": 6, "y": 1.4}, {"x": 10, "y": 1.4}, {"x": 11, "y": 1.25}, {"x": 12, "y": 1}, {"x": 13, "y": 1.25}, {"x": 14, "y": 1.4}, {"x": 15, "y": 1.4}, {"x": 16, "y": 1.6},
|
||||
{"x": 0.25, "y": 2.6, "W":1.75}, {"x": 2, "y": 2.4}, {"x": 3, "y": 2.25}, {"x": 4, "y": 2}, {"x": 5, "y": 2.25}, {"x": 6, "y": 2.4}, {"x": 10, "y": 2.4}, {"x": 11, "y": 2.25}, {"x": 12, "y": 2}, {"x": 13, "y": 2.25}, {"x": 14, "y": 2.4}, {"x": 15, "y": 2.4}, {"x": 16, "y": 2.6},
|
||||
{"x": 0.25, "y": 3.6, "W":1.75}, {"x": 2, "y": 3.4}, {"x": 3, "y": 3.25}, {"x": 4, "y": 3}, {"x": 5, "y": 3.25}, {"x": 6, "y": 3.4}, {"x": 10, "y": 3.4}, {"x": 11, "y": 3.25}, {"x": 12, "y": 3}, {"x": 13, "y": 3.25}, {"x": 14, "y": 3.4}, {"x": 15, "y": 3.4}, {"x": 16, "y": 3.6},
|
||||
{"x": 3, "y": 4.25}, {"x": 4, "y": 4}, {"x": 5, "y": 4.25}, {"x": 6, "y": 4.4}, {"X":7.5, "Y":4.4, "H":1.25,"R":30, "RX":6, "RY":4.4},
|
||||
{"X":8.25, "Y":4.4, "H":1.25,"R":-30, "RX":11, "RY":4.4}, {"x": 10, "y": 4.4}, {"x": 11, "y": 4.25}, {"x": 12, "y": 4}, {"x": 13, "y": 4.4}
|
||||
{ "x": 0, "y": 0.6, "label": "ESC" },
|
||||
{ "x": 1, "y": 0.4, "label": "1" },
|
||||
{ "x": 2, "y": 0.4, "label": "2" },
|
||||
{ "x": 3, "y": 0.25, "label": "3" },
|
||||
{ "x": 4, "y": 0, "label": "4" },
|
||||
{ "x": 5, "y": 0.25, "label": "5" },
|
||||
{ "x": 6, "y": 0.4, "label": "6" },
|
||||
|
||||
{ "x": 11, "y": 0.4, "label": "7" },
|
||||
{ "x": 12, "y": 0.25, "label": "8" },
|
||||
{ "x": 13, "y": 0, "label": "9" },
|
||||
{ "x": 14, "y": 0.25, "label": "0" },
|
||||
{ "x": 15, "y": 0.4, "label": "MINUS" },
|
||||
{ "x": 16, "y": 0.4, "label": "EQUAL" },
|
||||
{ "x": 17, "y": 0.6, "label": "BACKSLASH" },
|
||||
|
||||
{ "x": 0, "y": 1.6, "label": "DELETE" },
|
||||
{ "x": 1, "y": 1.4, "label": "TAB" },
|
||||
{ "x": 2, "y": 1.4, "label": "Q" },
|
||||
{ "x": 3, "y": 1.25, "label": "W" },
|
||||
{ "x": 4, "y": 1, "label": "E" },
|
||||
{ "x": 5, "y": 1.25, "label": "R" },
|
||||
{ "x": 6, "y": 1.4, "label": "T" },
|
||||
|
||||
{ "x": 11, "y": 1.4, "label": "Y" },
|
||||
{ "x": 12, "y": 1.25, "label": "U" },
|
||||
{ "x": 13, "y": 1, "label": "I" },
|
||||
{ "x": 14, "y": 1.25, "label": "O" },
|
||||
{ "x": 15, "y": 1.4, "label": "P" },
|
||||
{ "x": 16, "y": 1.4, "label": "LBRACKET" },
|
||||
{ "x": 17, "y": 1.6, "label": "RBRACKET" },
|
||||
|
||||
{ "x": 0.25, "y": 2.6, "w": 1.75, "label": "LCTRL" },
|
||||
{ "x": 2, "y": 2.4, "label": "A" },
|
||||
{ "x": 3, "y": 2.25, "label": "S" },
|
||||
{ "x": 4, "y": 2, "label": "D" },
|
||||
{ "x": 5, "y": 2.25, "label": "F" },
|
||||
{ "x": 6, "y": 2.4, "label": "G" },
|
||||
|
||||
{ "x": 11, "y": 2.4, "label": "H" },
|
||||
{ "x": 12, "y": 2.25, "label": "J" },
|
||||
{ "x": 13, "y": 2, "label": "K" },
|
||||
{ "x": 14, "y": 2.25, "label": "L" },
|
||||
{ "x": 15, "y": 2.4, "label": "SEMICOLON" },
|
||||
{ "x": 16, "y": 2.4, "label": "QUOTE" },
|
||||
{ "x": 17, "y": 2.6, "label": "GRAVE" },
|
||||
|
||||
{ "x": 0.25, "y": 3.6, "w": 1.75, "label": "LSHIFT" },
|
||||
{ "x": 2, "y": 3.4, "label": "Z" },
|
||||
{ "x": 3, "y": 3.25, "label": "X" },
|
||||
{ "x": 4, "y": 3, "label": "C" },
|
||||
{ "x": 5, "y": 3.25, "label": "V" },
|
||||
{ "x": 6, "y": 3.4, "label": "B" },
|
||||
|
||||
{ "x": 11, "y": 3.4, "label": "N" },
|
||||
{ "x": 12, "y": 3.25, "label": "M" },
|
||||
{ "x": 13, "y": 3, "label": "COMMA" },
|
||||
{ "x": 14, "y": 3.25, "label": "DOT" },
|
||||
{ "x": 15, "y": 3.4, "label": "SLASH" },
|
||||
{ "x": 16, "y": 3.4, "label": "RSHIFT" },
|
||||
{ "x": 17, "y": 3.6, "label": "RSHIFT" },
|
||||
|
||||
{ "x": 3, "y": 4.25, "label": "MO(META)" },
|
||||
{ "x": 4, "y": 4, "label": "LALT" },
|
||||
{ "x": 5, "y": 4.25, "label": "LGUI" },
|
||||
{ "x": 6, "y": 4.4, "label": "ENT" },
|
||||
{ "x": 7, "y": 4.4, "w": 1.5, "label": "SPACE" },
|
||||
|
||||
{ "x": 9.5, "y": 4.4, "w": 1.5, "label": "ENTER" },
|
||||
{ "x": 11, "y": 4.4, "label": "BACKSPACE" },
|
||||
{ "x": 12, "y": 4.25, "label": "RGUI" },
|
||||
{ "x": 13, "y": 4, "label": "RALT" },
|
||||
{ "x": 14, "y": 4.25, "label": "MO(META)" }
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
38
keyboards/ergotravel/keymaps/yanfali/config.h
Normal file
38
keyboards/ergotravel/keymaps/yanfali/config.h
Normal file
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
Copyright 2017 Pierre Constantineau <jpconstantineau@gmail.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
/* Use I2C or Serial, not both */
|
||||
|
||||
#define USE_SERIAL
|
||||
// #define USE_I2C
|
||||
|
||||
/* Select hand configuration */
|
||||
|
||||
#define MASTER_LEFT
|
||||
// #define MASTER_RIGHT
|
||||
// #define EE_HANDS
|
||||
|
||||
#undef RGBLED_NUM
|
||||
#define RGBLIGHT_ANIMATIONS
|
||||
#define RGBLED_NUM 12
|
||||
#define RGBLIGHT_HUE_STEP 8
|
||||
#define RGBLIGHT_SAT_STEP 8
|
||||
#define RGBLIGHT_VAL_STEP 8
|
||||
|
||||
|
||||
108
keyboards/ergotravel/keymaps/yanfali/keymap.c
Normal file
108
keyboards/ergotravel/keymaps/yanfali/keymap.c
Normal file
@@ -0,0 +1,108 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
extern keymap_config_t keymap_config;
|
||||
|
||||
#define _QWERTY 0
|
||||
#define _LOWER 1
|
||||
#define _RAISE 2
|
||||
#define _ADJUST 16
|
||||
|
||||
enum custom_keycodes {
|
||||
QWERTY = SAFE_RANGE,
|
||||
LOWER,
|
||||
RAISE,
|
||||
ADJUST,
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[_QWERTY] = LAYOUT(
|
||||
//,---------------------+--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------+--------.
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINUS,
|
||||
//|---------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
|
||||
MT(MOD_LCTL, KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_LCBR, KC_RCBR, 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_NO, KC_NO, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
|
||||
//|---------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
|
||||
ADJUST, ADJUST, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_BSPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
|
||||
//`---------------------+--------+--------+--------+--------+--------+--------/ \--------+--------+--------+--------+--------+--------+--------'
|
||||
),
|
||||
|
||||
[_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_BSPC,
|
||||
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, KC_Y, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
|
||||
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
|
||||
KC_CAPS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
|
||||
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
|
||||
_______, _______, _______, _______, _______, _______, _______, RAISE, _______, _______, _______, _______
|
||||
//`--------+--------+--------+--------+--------+--------+--------/ \--------+--------+--------+--------+--------+--------+--------'
|
||||
),
|
||||
|
||||
|
||||
[_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_Q, KC_W, KC_E, KC_R, KC_T, _______, _______, KC_Y, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
|
||||
_______, KC_Z, KC_X, KC_C, KC_V, KC_B, _______, _______, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
|
||||
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
|
||||
_______, _______, _______, _______, _______, _______, _______, RAISE, _______, _______, _______, _______
|
||||
//`--------+--------+--------+--------+--------+--------+--------/ \--------+--------+--------+--------+--------+--------+--------'
|
||||
),
|
||||
|
||||
[_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, RESET,
|
||||
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
|
||||
_______, _______, _______, _______, _______, _______, _______, RAISE, _______, _______, _______, _______
|
||||
//`--------+--------+--------+--------+--------+--------+--------/ \--------+--------+--------+--------+--------+--------+--------'
|
||||
)
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case LOWER:
|
||||
if (record->event.pressed) {
|
||||
layer_on(_LOWER);
|
||||
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||
} else {
|
||||
layer_off(_LOWER);
|
||||
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case RAISE:
|
||||
if (record->event.pressed) {
|
||||
layer_on(_RAISE);
|
||||
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||
} else {
|
||||
layer_off(_RAISE);
|
||||
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case ADJUST:
|
||||
if (record->event.pressed) {
|
||||
layer_on(_ADJUST);
|
||||
} else {
|
||||
layer_off(_ADJUST);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
1
keyboards/ergotravel/keymaps/yanfali/rules.mk
Normal file
1
keyboards/ergotravel/keymaps/yanfali/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
BOOTLOADER = qmk-dfu
|
||||
@@ -15,77 +15,130 @@
|
||||
*/
|
||||
|
||||
|
||||
#ifndef ESPECTRO_H
|
||||
#define ESPECTRO_H
|
||||
#pragma once
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
|
||||
//Arrow keys and 1.75u shift
|
||||
/*
|
||||
* Placement of every possible switch defined below.
|
||||
* x2 means the diode allows two possible positions for the switch
|
||||
*
|
||||
* Layout:
|
||||
* ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
|
||||
* │K00 │K01 │K02 │K03 │K04 │K60 │K61 │K62 │K63 │K05 │K06 │K07 │K08 │K72 │K09 │K0A │K0B │K0C │K7C │
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||
* │K10 │K11 │K12 │K13 │K14 │K64 │K65 │K66 │K67 │K15 │K16 │K17 │K18 │K70 │K71 │K19 │K1A │K1B │K1C │
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │x2 │ │ │ │ │
|
||||
* ├─────┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴─────┼─────┼─────┼─────┼─────┤ ┌────────┐
|
||||
* │K20 │K21 │K22 │K23 │K24 │K68 │K69 │K6A │K6B │K25 │K26 │K27 │K28 │K73 │K29 │K2A │K2B │K2C │ │K38 │
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||
* ├────────┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴────────┼─────┼─────┼─────┼─────┤ ┌───┴─┐ │
|
||||
* │K30 │K31 │K32 │K33 │K34 │K6C │K75 │K76 │K77 │K35 │K36 │K37 │K38 │K39 │K3A │K3B │K3C │ │K73 │ │
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||
* ├───────┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──────┬─────┼─────┼─────┼─────┼─────┤ └─────┴──────┘
|
||||
* │K40x2 │K41 │K42 │K43 │K44 │K78 │K79 │K7A │K7B │K45 │K46 │K47 │K48 │K74 │K49 │K4A │K4B │K4C │
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||
* ├───────┼─────┴─┬───┴───┬─┴─────┴─────┴─────┴─────┴─────┴───┬─┴───┬─┴───┬─┴───┬─────┼─────┼─────┼─────┼─────┼─────┤
|
||||
* │K50 │K51 │K52 │K59 │K55 │K56 │K57 │K58 │K53 │K54 │K5A │K5B │K5C │
|
||||
* │x2 │x2 │ │x3 │x3 │x2 │x2 │x2 │x2 │ │x2 │ │ │
|
||||
* └───────┴───────┴───────┴───────────────────────────────────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
|
||||
*
|
||||
* Variants:
|
||||
* - 2u Backspace: Delete K70 Use K71
|
||||
* - 2u Num +: Delete K3C Use K2C
|
||||
* - 2u Num Enter: Delete K5C Use K4C
|
||||
* - ANSI Left Shift: Delete K41 Use K40
|
||||
*
|
||||
* ANSI Backslash and ISO Hash are the same position
|
||||
* ANSI Enter and ISO Enter are the same position
|
||||
* For two 1.5u modifiers on the right of the Spacebar, delete K56 and use K55 and K57
|
||||
*
|
||||
* Matrix:
|
||||
* { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C }, \
|
||||
* { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C }, \
|
||||
* { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C }, \
|
||||
* { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C }, \
|
||||
* { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C }, \
|
||||
* { K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A, K5B, K5C }, \
|
||||
* { K60, K61, K62, K63, K64, K65, K66, K67, K68, K69, K6A, K6B, K6C }, \
|
||||
* { K70, K71, K72, K73, K74, K75, K76, K77, K78, K79, K7A, K7B, K7C } \
|
||||
*/
|
||||
|
||||
|
||||
/* LAYOUT_all (Identical to LAYOUT_split_shift_and_bs)
|
||||
* Every matrix position
|
||||
* ,---------------------------------------------------------------------------.
|
||||
* | 00| 01| 02| 03| 04| 60| 61| 62| 63| 05| 06| 07| 08| 72| 09| 0A| 0B| 0C| 7C|
|
||||
* |---------------------------------------------------------------------------|
|
||||
* | 10| 11| 12| 13| 14| 64| 65| 66| 67| 15| 16| 17| 18| 70| 71| 19| 1A| 1B| 1C|
|
||||
* |---------------------------------------------------------------------------|
|
||||
* | 20 | 21| 22| 23| 24| 68| 69| 6A| 6B| 25| 26| 27| 28| 73| 29| 2A| 2B| 2C|
|
||||
* |---------------------------------------------------------------------------|
|
||||
* | 30 | 31| 32| 33| 34| 6C| 75| 76| 77| 35| 36| 37| 38| 39| 3A| 3B| 3C|
|
||||
* |---------------------------------------------------------------------------|
|
||||
* | 40 | 41| 42| 43| 44| 78| 79| 7A| 7B| 45| 46| 47| 48| 74| 49| 4A| 4B| 4C|
|
||||
* |---------------------------------------------------------------------------|
|
||||
* | 50 | 51 | 52 | 59 | 55| 56| 57| 58| 53| 54| 5A| 5B| 5C|
|
||||
* `---------------------------------------------------------------------------'
|
||||
*/
|
||||
|
||||
|
||||
//Arrow keys and 1.75u right shift
|
||||
#define LAYOUT_default( \
|
||||
K000, K001, K002, K003, K004, K600, K601, K602, K603, K005, K006, K007, K008, K702, K009, K010, K011, K012, K712, \
|
||||
K100, K101, K102, K103, K104, K604, K605, K606, K607, K105, K106, K107, K108, K701, K109, K110, K111, K112, \
|
||||
K200, K201, K202, K203, K204, K608, K609, K610, K611, K205, K206, K207, K208, K703, K209, K210, K211, K212, \
|
||||
K300, K301, K302, K303, K304, K612, K705, K706, K707, K305, K306, K307, K308, K309, K310, K311, \
|
||||
K400, K402, K403, K404, K708, K709, K710, K711, K405, K406, K407, K408, K704, K409, K410, K411, K412, \
|
||||
K500, K501, K502, K509, K505, K506, K507, K508, K503, K504, K510, K511 \
|
||||
K00, K01, K02, K03, K04, K60, K61, K62, K63, K05, K06, K07, K08, K72, K09, K0A, K0B, K0C, K7C, \
|
||||
K10, K11, K12, K13, K14, K64, K65, K66, K67, K15, K16, K17, K18, K71, K19, K1A, K1B, K1C, \
|
||||
K20, K21, K22, K23, K24, K68, K69, K6A, K6B, K25, K26, K27, K28, K73, K29, K2A, K2B, K2C, \
|
||||
K30, K31, K32, K33, K34, K6C, K75, K76, K77, K35, K36, K37, K38, K39, K3A, K3B, \
|
||||
K40, K42, K43, K44, K78, K79, K7A, K7B, K45, K46, K47, K48, K74, K49, K4A, K4B, K4C, \
|
||||
K50, K51, K52, K59, K55, K56, K57, K58, K53, K54, K5A, K5B \
|
||||
) { \
|
||||
{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012 }, \
|
||||
{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112 }, \
|
||||
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212 }, \
|
||||
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO }, \
|
||||
{ K400, KC_NO, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412 }, \
|
||||
{ K500, K501, K502, K503, K504, K505, K506, K507, K508, K509, K510, K511, KC_NO }, \
|
||||
{ K600, K601, K602, K603, K604, K605, K606, K607, K608, K609, K610, K611, K612 }, \
|
||||
{ KC_NO, K701, K702, K703, K704, K705, K706, K707, K708, K709, K710, K711, K712 }, \
|
||||
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C }, \
|
||||
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C }, \
|
||||
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C }, \
|
||||
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO }, \
|
||||
{ K40, KC_NO, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C }, \
|
||||
{ K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A, K5B, KC_NO }, \
|
||||
{ K60, K61, K62, K63, K64, K65, K66, K67, K68, K69, K6A, K6B, K6C }, \
|
||||
{ KC_NO, K71, K72, K73, K74, K75, K76, K77, K78, K79, K7A, K7B, K7C } \
|
||||
}
|
||||
|
||||
// Split numpad (enter, 0), split shifts (right, left), split backspace
|
||||
// This is more of an example of every possible keycode placement
|
||||
// This layout contains every possible keycode placement
|
||||
#define LAYOUT_split_shift_and_bs( \
|
||||
K000, K001, K002, K003, K004, K600, K601, K602, K603, K005, K006, K007, K008, K702, K009, K010, K011, K012, K712, \
|
||||
K100, K101, K102, K103, K104, K604, K605, K606, K607, K105, K106, K107, K108, K700, K701, K109, K110, K111, K112, \
|
||||
K200, K201, K202, K203, K204, K608, K609, K610, K611, K205, K206, K207, K208, K703, K209, K210, K211, K212, \
|
||||
K300, K301, K302, K303, K304, K612, K705, K706, K707, K305, K306, K307, K308, K309, K310, K311, K312, \
|
||||
K400, K401, K402, K403, K404, K708, K709, K710, K711, K405, K406, K407, K408, K704, K409, K410, K411, K412, \
|
||||
K500, K501, K502, K509, K505, K506, K507, K508, K503, K504, K510, K511, K512 \
|
||||
K00, K01, K02, K03, K04, K60, K61, K62, K63, K05, K06, K07, K08, K72, K09, K0A, K0B, K0C, K7C, \
|
||||
K10, K11, K12, K13, K14, K64, K65, K66, K67, K15, K16, K17, K18, K70, K71, K19, K1A, K1B, K1C, \
|
||||
K20, K21, K22, K23, K24, K68, K69, K6A, K6B, K25, K26, K27, K28, K73, K29, K2A, K2B, K2C, \
|
||||
K30, K31, K32, K33, K34, K6C, K75, K76, K77, K35, K36, K37, K38, K39, K3A, K3B, K3C, \
|
||||
K40, K41, K42, K43, K44, K78, K79, K7A, K7B, K45, K46, K47, K48, K74, K49, K4A, K4B, K4C, \
|
||||
K50, K51, K52, K59, K55, K56, K57, K58, K53, K54, K5A, K5B, K5C \
|
||||
) { \
|
||||
{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012 }, \
|
||||
{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112 }, \
|
||||
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212 }, \
|
||||
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312 }, \
|
||||
{ K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412 }, \
|
||||
{ K500, K501, K502, K503, K504, K505, K506, K507, K508, K509, K510, K511, K512 }, \
|
||||
{ K600, K601, K602, K603, K604, K605, K606, K607, K608, K609, K610, K611, K612 }, \
|
||||
{ K701, K701, K702, K703, K704, K705, K706, K707, K708, K709, K710, K711, K712 }, \
|
||||
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C }, \
|
||||
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C }, \
|
||||
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C }, \
|
||||
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C }, \
|
||||
{ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C }, \
|
||||
{ K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A, K5B, K5C }, \
|
||||
{ K60, K61, K62, K63, K64, K65, K66, K67, K68, K69, K6A, K6B, K6C }, \
|
||||
{ K71, K71, K72, K73, K74, K75, K76, K77, K78, K79, K7A, K7B, K7C }, \
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
Placement of every possible switch defined below.
|
||||
x2 means the diode allows two possible positions for the switch
|
||||
|
||||
#define LAYOUT_all( \
|
||||
K000, K001, K002, K003, K004, K600, K601, K602, K603, K005, K006, K007, K008, K702, K009, K010, K011, K012, K712, \
|
||||
K100, K101, K102, K103, K104, K604, K605, K606, K607, K105, K106, K107, K108, K700, K701x2, K109, K110, K111, K112, \
|
||||
K200, K201, K202, K203, K204, K608, K609, K610, K611, K205, K206, K207, K208, K703, K209, K210, K211, K212, \
|
||||
K308, K212, \
|
||||
K300, K300, K301, K302, K304, K612, K705, K706, K707, K305, K306, K307, K703, K308, K309, K310, K311, K312, \
|
||||
K400x2, K401, K402, K403, K404, K708, K709, K710, K711, K405, K406, K407, K408, K408, K704, K409, K410, K411, K412, \
|
||||
K412, \
|
||||
K500x2, K501x2, K502, K509x3, K505x3, K506x2, K507x2, K508x2, K503x2, K504, K510x2, K511, K512 \
|
||||
) { \
|
||||
{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012 }, \
|
||||
{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112 }, \
|
||||
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212 }, \
|
||||
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312 }, \
|
||||
{ K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412 }, \
|
||||
{ K500, K501, K502, K503, K504, K505, K506, K507, K508, K509, K510, K511, K512 }, \
|
||||
{ K600, K601, K602, K603, K604, K605, K606, K607, K608, K609, K610, K611, K612 }, \
|
||||
{ K700, K701, K702, K703, K704, K705, K706, K707, K708, K709, K710, K711, K712 }, \
|
||||
// ISO Layout
|
||||
#define LAYOUT_iso( \
|
||||
K00, K01, K02, K03, K04, K60, K61, K62, K63, K05, K06, K07, K08, K72, K09, K0A, K0B, K0C, K7C, \
|
||||
K10, K11, K12, K13, K14, K64, K65, K66, K67, K15, K16, K17, K18, K71, K19, K1A, K1B, K1C, \
|
||||
K20, K21, K22, K23, K24, K68, K69, K6A, K6B, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
|
||||
K30, K31, K32, K33, K34, K6C, K75, K76, K77, K35, K36, K37, K73, K38, K39, K3A, K3B, \
|
||||
K40, K41, K42, K43, K44, K78, K79, K7A, K7B, K45, K46, K47, K48, K74, K49, K4A, K4B, K4C, \
|
||||
K50, K51, K52, K59, K55, K56, K57, K58, K53, K54, K5A, K5B \
|
||||
) { \
|
||||
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C }, \
|
||||
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C }, \
|
||||
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C }, \
|
||||
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO }, \
|
||||
{ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C }, \
|
||||
{ K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A, K5B, KC_NO }, \
|
||||
{ K60, K61, K62, K63, K64, K65, K66, K67, K68, K69, K6A, K6B, K6C }, \
|
||||
{ KC_NO, K71, K72, K73, K74, K75, K76, K77, K78, K79, K7A, K7B, K7C } \
|
||||
}
|
||||
*/
|
||||
|
||||
#endif
|
||||
|
||||
347
keyboards/espectro/info.json
Normal file
347
keyboards/espectro/info.json
Normal file
@@ -0,0 +1,347 @@
|
||||
{
|
||||
"keyboard_name": "Espectro",
|
||||
"keyboard_folder": "espectro",
|
||||
"url": "",
|
||||
"maintainer": "qmk",
|
||||
"width": 19,
|
||||
"height": 6,
|
||||
"layouts": {
|
||||
"LAYOUT_default": {
|
||||
"key_count": 100,
|
||||
"layout": [
|
||||
{"label":"ESC", "x":0, "y":0},
|
||||
{"label":"F1", "x":1, "y":0},
|
||||
{"label":"F2", "x":2, "y":0},
|
||||
{"label":"F3", "x":3, "y":0},
|
||||
{"label":"F4", "x":4, "y":0},
|
||||
{"label":"F5", "x":5, "y":0},
|
||||
{"label":"F6", "x":6, "y":0},
|
||||
{"label":"F7", "x":7, "y":0},
|
||||
{"label":"F8", "x":8, "y":0},
|
||||
{"label":"F9", "x":9, "y":0},
|
||||
{"label":"F10", "x":10, "y":0},
|
||||
{"label":"F11", "x":11, "y":0},
|
||||
{"label":"F12", "x":12, "y":0},
|
||||
{"label":"PRINT SCREEN", "x":13, "y":0},
|
||||
{"label":"HOME", "x":14, "y":0},
|
||||
{"label":"END", "x":15, "y":0},
|
||||
{"label":"PAGE UP", "x":16, "y":0},
|
||||
{"label":"PAGE DOWN", "x":17, "y":0},
|
||||
{"label":"DELETE", "x":18, "y":0},
|
||||
|
||||
{"label":"GRAVE", "x":0, "y":1},
|
||||
{"label":"1", "x":1, "y":1},
|
||||
{"label":"2", "x":2, "y":1},
|
||||
{"label":"3", "x":3, "y":1},
|
||||
{"label":"4", "x":4, "y":1},
|
||||
{"label":"5", "x":5, "y":1},
|
||||
{"label":"6", "x":6, "y":1},
|
||||
{"label":"7", "x":7, "y":1},
|
||||
{"label":"8", "x":8, "y":1},
|
||||
{"label":"9", "x":9, "y":1},
|
||||
{"label":"0", "x":10, "y":1},
|
||||
{"label":"MINUS", "x":11, "y":1},
|
||||
{"label":"EQUAL", "x":12, "y":1},
|
||||
{"label":"BACKSPACE", "x":13, "y":1, "w":2},
|
||||
{"label":"NUM LOCK", "x":15, "y":1},
|
||||
{"label":"KEYPAD /", "x":16, "y":1},
|
||||
{"label":"KEYPAD *", "x":17, "y":1},
|
||||
{"label":"KEYPAD -", "x":18, "y":1},
|
||||
|
||||
{"label":"TAB", "x":0, "y":2, "w":1.5},
|
||||
{"label":"Q", "x":1.5, "y":2},
|
||||
{"label":"W", "x":2.5, "y":2},
|
||||
{"label":"E", "x":3.5, "y":2},
|
||||
{"label":"R", "x":4.5, "y":2},
|
||||
{"label":"T", "x":5.5, "y":2},
|
||||
{"label":"Y", "x":6.5, "y":2},
|
||||
{"label":"U", "x":7.5, "y":2},
|
||||
{"label":"I", "x":8.5, "y":2},
|
||||
{"label":"O", "x":9.5, "y":2},
|
||||
{"label":"P", "x":10.5, "y":2},
|
||||
{"label":"LBRACKET", "x":11.5, "y":2},
|
||||
{"label":"RBRACKET", "x":12.5, "y":2},
|
||||
{"label":"BACKSLASH", "x":13.5, "y":2, "w":1.5},
|
||||
{"label":"KEYPAD 7", "x":15, "y":2},
|
||||
{"label":"KEYPAD 8", "x":16, "y":2},
|
||||
{"label":"KEYPAD 9", "x":17, "y":2},
|
||||
{"label":"KEYPAD +", "x":18, "y":2, "h":2},
|
||||
|
||||
{"label":"CAPS LOCK", "x":0, "y":3, "w":1.75},
|
||||
{"label":"A", "x":1.75, "y":3},
|
||||
{"label":"S", "x":2.75, "y":3},
|
||||
{"label":"D", "x":3.75, "y":3},
|
||||
{"label":"F", "x":4.75, "y":3},
|
||||
{"label":"G", "x":5.75, "y":3},
|
||||
{"label":"H", "x":6.75, "y":3},
|
||||
{"label":"J", "x":7.75, "y":3},
|
||||
{"label":"K", "x":8.75, "y":3},
|
||||
{"label":"L", "x":9.75, "y":3},
|
||||
{"label":"SEMICOLON", "x":10.75, "y":3},
|
||||
{"label":"QUOTE", "x":11.75, "y":3},
|
||||
{"label":"ENTER", "x":12.75, "y":3, "w":2.25},
|
||||
{"label":"KEYPAD 4", "x":15, "y":3},
|
||||
{"label":"KEYPAD 5", "x":16, "y":3},
|
||||
{"label":"KEYPAD 6", "x":17, "y":3},
|
||||
|
||||
{"label":"LSHIFT", "x":0, "y":4, "w":2.25},
|
||||
{"label":"Z", "x":2.25, "y":4},
|
||||
{"label":"X", "x":3.25, "y":4},
|
||||
{"label":"C", "x":4.25, "y":4},
|
||||
{"label":"V", "x":5.25, "y":4},
|
||||
{"label":"B", "x":6.25, "y":4},
|
||||
{"label":"N", "x":7.25, "y":4},
|
||||
{"label":"M", "x":8.25, "y":4},
|
||||
{"label":"COMMA", "x":9.25, "y":4},
|
||||
{"label":"PERIOD", "x":10.25, "y":4},
|
||||
{"label":"SLASH", "x":11.25, "y":4},
|
||||
{"label":"RSHIFT", "x":12.25, "y":4, "w":1.75},
|
||||
{"label":"UP", "x":14, "y":4},
|
||||
{"label":"KEYPAD 1", "x":15, "y":4},
|
||||
{"label":"KEYPAD 2", "x":16, "y":4},
|
||||
{"label":"KEYPAD 3", "x":17, "y":4},
|
||||
{"label":"KEYPAD ENTER", "x":18, "y":4, "h":2},
|
||||
|
||||
{"label":"LCTRL", "x":0, "y":5, "w":1.25},
|
||||
{"label":"LGUI", "x":1.25, "y":5, "w":1.25},
|
||||
{"label":"LALT", "x":2.5, "y":5, "w":1.25},
|
||||
{"label":"SPACE", "x":3.75, "y":5, "w":6.25},
|
||||
{"label":"RALT", "x":10, "y":5},
|
||||
{"label":"RCTRL", "x":11, "y":5},
|
||||
{"label":"FN", "x":12, "y":5},
|
||||
{"label":"LEFT", "x":13, "y":5},
|
||||
{"label":"DOWN", "x":14, "y":5},
|
||||
{"label":"RIGHT", "x":15, "y":5},
|
||||
{"label":"KEYPAD 0", "x":16, "y":5},
|
||||
{"label":"KEYPAD .", "x":17, "y":5}
|
||||
]
|
||||
},
|
||||
|
||||
"LAYOUT_split_shift_and_bs": {
|
||||
"key_count": 104,
|
||||
"layout": [
|
||||
{"label":"ESC", "x":0, "y":0},
|
||||
{"label":"F1", "x":1, "y":0},
|
||||
{"label":"F2", "x":2, "y":0},
|
||||
{"label":"F3", "x":3, "y":0},
|
||||
{"label":"F4", "x":4, "y":0},
|
||||
{"label":"F5", "x":5, "y":0},
|
||||
{"label":"F6", "x":6, "y":0},
|
||||
{"label":"F7", "x":7, "y":0},
|
||||
{"label":"F8", "x":8, "y":0},
|
||||
{"label":"F9", "x":9, "y":0},
|
||||
{"label":"F10", "x":10, "y":0},
|
||||
{"label":"F11", "x":11, "y":0},
|
||||
{"label":"F12", "x":12, "y":0},
|
||||
{"label":"PRINT SCREEN", "x":13, "y":0},
|
||||
{"label":"HOME", "x":14, "y":0},
|
||||
{"label":"END", "x":15, "y":0},
|
||||
{"label":"PAGE UP", "x":16, "y":0},
|
||||
{"label":"PAGE DOWN", "x":17, "y":0},
|
||||
{"label":"DELETE", "x":18, "y":0},
|
||||
|
||||
{"label":"GRAVE", "x":0, "y":1},
|
||||
{"label":"1", "x":1, "y":1},
|
||||
{"label":"2", "x":2, "y":1},
|
||||
{"label":"3", "x":3, "y":1},
|
||||
{"label":"4", "x":4, "y":1},
|
||||
{"label":"5", "x":5, "y":1},
|
||||
{"label":"6", "x":6, "y":1},
|
||||
{"label":"7", "x":7, "y":1},
|
||||
{"label":"8", "x":8, "y":1},
|
||||
{"label":"9", "x":9, "y":1},
|
||||
{"label":"0", "x":10, "y":1},
|
||||
{"label":"MINUS", "x":11, "y":1},
|
||||
{"label":"EQUAL", "x":12, "y":1},
|
||||
{"label":"BACKSPACE", "x":13, "y":1},
|
||||
{"label":"BACKSPACE", "x":14, "y":1},
|
||||
{"label":"NUM LOCK", "x":15, "y":1},
|
||||
{"label":"KEYPAD /", "x":16, "y":1},
|
||||
{"label":"KEYPAD *", "x":17, "y":1},
|
||||
{"label":"KEYPAD -", "x":18, "y":1},
|
||||
|
||||
{"label":"TAB", "x":0, "y":2, "w":1.5},
|
||||
{"label":"Q", "x":1.5, "y":2},
|
||||
{"label":"W", "x":2.5, "y":2},
|
||||
{"label":"E", "x":3.5, "y":2},
|
||||
{"label":"R", "x":4.5, "y":2},
|
||||
{"label":"T", "x":5.5, "y":2},
|
||||
{"label":"Y", "x":6.5, "y":2},
|
||||
{"label":"U", "x":7.5, "y":2},
|
||||
{"label":"I", "x":8.5, "y":2},
|
||||
{"label":"O", "x":9.5, "y":2},
|
||||
{"label":"P", "x":10.5, "y":2},
|
||||
{"label":"LBRACKET", "x":11.5, "y":2},
|
||||
{"label":"RBRACKET", "x":12.5, "y":2},
|
||||
{"label":"BACKSLASH", "x":13.5, "y":2, "w":1.5},
|
||||
{"label":"KEYPAD 7", "x":15, "y":2},
|
||||
{"label":"KEYPAD 8", "x":16, "y":2},
|
||||
{"label":"KEYPAD 9", "x":17, "y":2},
|
||||
{"label":"KEYPAD +", "x":18, "y":2},
|
||||
|
||||
{"label":"CAPS LOCK", "x":0, "y":3, "w":1.75},
|
||||
{"label":"A", "x":1.75, "y":3},
|
||||
{"label":"S", "x":2.75, "y":3},
|
||||
{"label":"D", "x":3.75, "y":3},
|
||||
{"label":"F", "x":4.75, "y":3},
|
||||
{"label":"G", "x":5.75, "y":3},
|
||||
{"label":"H", "x":6.75, "y":3},
|
||||
{"label":"J", "x":7.75, "y":3},
|
||||
{"label":"K", "x":8.75, "y":3},
|
||||
{"label":"L", "x":9.75, "y":3},
|
||||
{"label":"SEMICOLON", "x":10.75, "y":3},
|
||||
{"label":"QUOTE", "x":11.75, "y":3},
|
||||
{"label":"ENTER", "x":12.75, "y":3, "w":2.25},
|
||||
{"label":"KEYPAD 4", "x":15, "y":3},
|
||||
{"label":"KEYPAD 5", "x":16, "y":3},
|
||||
{"label":"KEYPAD 6", "x":17, "y":3},
|
||||
{"label":"KEYPAD +", "x":18, "y":3},
|
||||
|
||||
{"label":"LSHIFT", "x":0, "y":4, "w":1.25},
|
||||
{"label":"ISO BACKSLASH", "x":1.25, "y":4},
|
||||
{"label":"Z", "x":2.25, "y":4},
|
||||
{"label":"X", "x":3.25, "y":4},
|
||||
{"label":"C", "x":4.25, "y":4},
|
||||
{"label":"V", "x":5.25, "y":4},
|
||||
{"label":"B", "x":6.25, "y":4},
|
||||
{"label":"N", "x":7.25, "y":4},
|
||||
{"label":"M", "x":8.25, "y":4},
|
||||
{"label":"COMMA", "x":9.25, "y":4},
|
||||
{"label":"PERIOD", "x":10.25, "y":4},
|
||||
{"label":"SLASH", "x":11.25, "y":4},
|
||||
{"label":"RSHIFT", "x":12.25, "y":4, "w":1.75},
|
||||
{"label":"UP", "x":14, "y":4},
|
||||
{"label":"KEYPAD 1", "x":15, "y":4},
|
||||
{"label":"KEYPAD 2", "x":16, "y":4},
|
||||
{"label":"KEYPAD 3", "x":17, "y":4},
|
||||
{"label":"KEYPAD ENTER", "x":18, "y":4},
|
||||
|
||||
{"label":"LCTRL", "x":0, "y":5, "w":1.25},
|
||||
{"label":"LGUI", "x":1.25, "y":5, "w":1.25},
|
||||
{"label":"LALT", "x":2.5, "y":5, "w":1.25},
|
||||
{"label":"SPACE", "x":3.75, "y":5, "w":6.25},
|
||||
{"label":"RALT", "x":10, "y":5},
|
||||
{"label":"MENU", "x":11, "y":5},
|
||||
{"label":"RCTRL", "x":12, "y":5},
|
||||
{"label":"LEFT", "x":13, "y":5},
|
||||
{"label":"DOWN", "x":14, "y":5},
|
||||
{"label":"RIGHT", "x":15, "y":5},
|
||||
{"label":"KEYPAD 0", "x":16, "y":5},
|
||||
{"label":"KEYPAD .", "x":17, "y":5},
|
||||
{"label":"KEYPAD ENTER", "x":18, "y":5}
|
||||
]
|
||||
},
|
||||
|
||||
"LAYOUT_iso": {
|
||||
"key_count": 101,
|
||||
"layout": [
|
||||
{"label":"ESC", "x":0, "y":0},
|
||||
{"label":"F1", "x":1, "y":0},
|
||||
{"label":"F2", "x":2, "y":0},
|
||||
{"label":"F3", "x":3, "y":0},
|
||||
{"label":"F4", "x":4, "y":0},
|
||||
{"label":"F5", "x":5, "y":0},
|
||||
{"label":"F6", "x":6, "y":0},
|
||||
{"label":"F7", "x":7, "y":0},
|
||||
{"label":"F8", "x":8, "y":0},
|
||||
{"label":"F9", "x":9, "y":0},
|
||||
{"label":"F10", "x":10, "y":0},
|
||||
{"label":"F11", "x":11, "y":0},
|
||||
{"label":"F12", "x":12, "y":0},
|
||||
{"label":"PRINT SCREEN", "x":13, "y":0},
|
||||
{"label":"HOME", "x":14, "y":0},
|
||||
{"label":"END", "x":15, "y":0},
|
||||
{"label":"PAGE UP", "x":16, "y":0},
|
||||
{"label":"PAGE DOWN", "x":17, "y":0},
|
||||
{"label":"DELETE", "x":18, "y":0},
|
||||
|
||||
{"label":"GRAVE", "x":0, "y":1},
|
||||
{"label":"1", "x":1, "y":1},
|
||||
{"label":"2", "x":2, "y":1},
|
||||
{"label":"3", "x":3, "y":1},
|
||||
{"label":"4", "x":4, "y":1},
|
||||
{"label":"5", "x":5, "y":1},
|
||||
{"label":"6", "x":6, "y":1},
|
||||
{"label":"7", "x":7, "y":1},
|
||||
{"label":"8", "x":8, "y":1},
|
||||
{"label":"9", "x":9, "y":1},
|
||||
{"label":"0", "x":10, "y":1},
|
||||
{"label":"MINUS", "x":11, "y":1},
|
||||
{"label":"EQUAL", "x":12, "y":1},
|
||||
{"label":"BACKSPACE", "x":13, "y":1, "w":2},
|
||||
{"label":"NUM LOCK", "x":15, "y":1},
|
||||
{"label":"KEYPAD /", "x":16, "y":1},
|
||||
{"label":"KEYPAD *", "x":17, "y":1},
|
||||
{"label":"KEYPAD -", "x":18, "y":1},
|
||||
|
||||
{"label":"TAB", "x":0, "y":2, "w":1.5},
|
||||
{"label":"Q", "x":1.5, "y":2},
|
||||
{"label":"W", "x":2.5, "y":2},
|
||||
{"label":"E", "x":3.5, "y":2},
|
||||
{"label":"R", "x":4.5, "y":2},
|
||||
{"label":"T", "x":5.5, "y":2},
|
||||
{"label":"Y", "x":6.5, "y":2},
|
||||
{"label":"U", "x":7.5, "y":2},
|
||||
{"label":"I", "x":8.5, "y":2},
|
||||
{"label":"O", "x":9.5, "y":2},
|
||||
{"label":"P", "x":10.5, "y":2},
|
||||
{"label":"LBRACKET", "x":11.5, "y":2},
|
||||
{"label":"RBRACKET", "x":12.5, "y":2},
|
||||
{"label":"KEYPAD 7", "x":15, "y":2},
|
||||
{"label":"KEYPAD 8", "x":16, "y":2},
|
||||
{"label":"KEYPAD 9", "x":17, "y":2},
|
||||
{"label":"KEYPAD +", "x":18, "y":2, "h":2},
|
||||
|
||||
{"label":"CAPS LOCK", "x":0, "y":3, "w":1.75},
|
||||
{"label":"A", "x":1.75, "y":3},
|
||||
{"label":"S", "x":2.75, "y":3},
|
||||
{"label":"D", "x":3.75, "y":3},
|
||||
{"label":"F", "x":4.75, "y":3},
|
||||
{"label":"G", "x":5.75, "y":3},
|
||||
{"label":"H", "x":6.75, "y":3},
|
||||
{"label":"J", "x":7.75, "y":3},
|
||||
{"label":"K", "x":8.75, "y":3},
|
||||
{"label":"L", "x":9.75, "y":3},
|
||||
{"label":"SEMICOLON", "x":10.75, "y":3},
|
||||
{"label":"QUOTE", "x":11.75, "y":3},
|
||||
{"label":"ISO HASH", "x":12.75, "y":3},
|
||||
{"label":"ENTER", "x":13.75, "y":2, "w":1.25, "h":2},
|
||||
{"label":"KEYPAD 4", "x":15, "y":3},
|
||||
{"label":"KEYPAD 5", "x":16, "y":3},
|
||||
{"label":"KEYPAD 6", "x":17, "y":3},
|
||||
|
||||
{"label":"LSHIFT", "x":0, "y":4, "w":1.25},
|
||||
{"label":"ISO BACKSLASH", "x":1.25, "y":4},
|
||||
{"label":"Z", "x":2.25, "y":4},
|
||||
{"label":"X", "x":3.25, "y":4},
|
||||
{"label":"C", "x":4.25, "y":4},
|
||||
{"label":"V", "x":5.25, "y":4},
|
||||
{"label":"B", "x":6.25, "y":4},
|
||||
{"label":"N", "x":7.25, "y":4},
|
||||
{"label":"M", "x":8.25, "y":4},
|
||||
{"label":"COMMA", "x":9.25, "y":4},
|
||||
{"label":"PERIOD", "x":10.25, "y":4},
|
||||
{"label":"SLASH", "x":11.25, "y":4},
|
||||
{"label":"RSHIFT", "x":12.25, "y":4, "w":1.75},
|
||||
{"label":"UP", "x":14, "y":4},
|
||||
{"label":"KEYPAD 1", "x":15, "y":4},
|
||||
{"label":"KEYPAD 2", "x":16, "y":4},
|
||||
{"label":"KEYPAD 3", "x":17, "y":4},
|
||||
{"label":"KEYPAD ENTER", "x":18, "y":4, "h":2},
|
||||
|
||||
{"label":"LCTRL", "x":0, "y":5, "w":1.25},
|
||||
{"label":"LGUI", "x":1.25, "y":5, "w":1.25},
|
||||
{"label":"LALT", "x":2.5, "y":5, "w":1.25},
|
||||
{"label":"SPACE", "x":3.75, "y":5, "w":6.25},
|
||||
{"label":"RALT", "x":10, "y":5},
|
||||
{"label":"MENU", "x":11, "y":5},
|
||||
{"label":"RCTRL", "x":12, "y":5},
|
||||
{"label":"LEFT", "x":13, "y":5},
|
||||
{"label":"DOWN", "x":14, "y":5},
|
||||
{"label":"RIGHT", "x":15, "y":5},
|
||||
{"label":"KEYPAD 0", "x":16, "y":5},
|
||||
{"label":"KEYPAD .", "x":17, "y":5}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -16,7 +16,6 @@
|
||||
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
|
||||
|
||||
#define _BL 0 //Base layer
|
||||
#define _FN1 1 //Function layer
|
||||
@@ -26,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* BL
|
||||
____________________________________________________________________________________________________________________________________________________________________________
|
||||
| | | | | | | | | | | | | | | | | | | |
|
||||
| ESC | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | P SCN | HOME | END | P UP | P DOWN | DEL |
|
||||
| ESC | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | DEL | PRT SC | SCR LK | PAUSE | P UP | P DOWN |
|
||||
|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|
|
||||
| | | | | | | | | | | | | | BACK | NUM | | | |
|
||||
| ~` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | _ - | = + | SPACE | LOCK | / | * | - |
|
||||
@@ -46,12 +45,12 @@ ________________________________________________________________________________
|
||||
*/
|
||||
|
||||
[_BL] = LAYOUT_default(
|
||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_PSCR, KC_SLCK, KC_PAUS, KC_PGUP, KC_PGDN,
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6,
|
||||
KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT, KC_P0, KC_PDOT
|
||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_PSCR, KC_SLCK, KC_PAUS, KC_PGUP, KC_PGDN, \
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS, \
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, \
|
||||
KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, \
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(1), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT \
|
||||
),
|
||||
|
||||
/* FN_1
|
||||
@@ -60,7 +59,7 @@ ________________________________________________________________________________
|
||||
| RESET | | | | | | | | | | | | | MUTE | DOWN | UP | TRACK | HOME | END |
|
||||
|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|
|
||||
| | RGB | RGB | RGB | RGB | RGB | RGB | RGB | RGB | | | | | | | | | |
|
||||
| | TOGGLE | MODE |INCREASE|DECREASE| HUE | HUE | SAT | | | | | | DELETE | | | | |
|
||||
| | TOGGLE | MODE |INCREASE|DECREASE| HUE | HUE | SAT | SAT | | | | | DELETE | | | | |
|
||||
|________|________|________|________|________|INCREASE|DECREASE|INCREASE|DECREASE|________|________|________|________|_________________|________|________|________|________|
|
||||
| | BACK | BACK | | | | | | | | | | | | | | | |
|
||||
| | LIGHT | LIGHT | | | | | | | | | | | | | | | |
|
||||
@@ -77,12 +76,12 @@ ________________________________________________________________________________
|
||||
*/
|
||||
|
||||
[_FN1] = LAYOUT_default(
|
||||
RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT, KC_HOME, KC_END,
|
||||
_______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, _______, _______, _______, _______, KC_DEL, _______, _______, _______, _______,
|
||||
_______, BL_TOGG, BL_INC, BL_DEC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT, KC_HOME, KC_END, \
|
||||
_______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, _______, _______, _______, _______, KC_DEL, _______, _______, _______, _______, \
|
||||
_______, BL_TOGG, BL_INC, BL_DEC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||
),
|
||||
|
||||
};
|
||||
|
||||
@@ -44,13 +44,13 @@ ________________________________________________________________________________
|
||||
|__________|__________|__________|________________________________________________________|________|________|________|________|________|________|________|________|________|
|
||||
*/
|
||||
|
||||
[_BL] = LAYOUT_split_shift_and_bs(
|
||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_PSCR, KC_HOME, KC_END, KC_PGUP, KC_PGDN,
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_NO, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_NUHS, KC_P7, KC_P8, KC_P9, KC_PPLS,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_NO, KC_P4, KC_P5, KC_P6,
|
||||
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT, KC_P0, KC_PDOT, KC_NO
|
||||
[_BL] = LAYOUT_iso(
|
||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_PSCR, KC_HOME, KC_END, KC_PGUP, KC_PGDN, \
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_P7, KC_P8, KC_P9, KC_PPLS, \
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, \
|
||||
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, \
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(1), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT \
|
||||
),
|
||||
|
||||
/* FN_1
|
||||
@@ -59,7 +59,7 @@ ________________________________________________________________________________
|
||||
| RESET | | | | | | | | | | | | | MUTE | DOWN | UP | TRACK | HOME | END |
|
||||
|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|
|
||||
| | RGB | RGB | RGB | RGB | RGB | RGB | RGB | RGB | | | | | | | | | |
|
||||
| | TOGGLE | MODE |INCREASE|DECREASE| HUE | HUE | SAT | | | | | | DELETE | | | | |
|
||||
| | TOGGLE | MODE |INCREASE|DECREASE| HUE | HUE | SAT | SAT | | | | | DELETE | | | | |
|
||||
|________|________|________|________|________|INCREASE|DECREASE|INCREASE|DECREASE|________|________|________|________|_________________|________|________|________|________|
|
||||
| | BACK | BACK | | | | | | | | | | | | | | | |
|
||||
| | LIGHT | LIGHT | | | | | | | | | | | | | | | |
|
||||
@@ -75,13 +75,13 @@ ________________________________________________________________________________
|
||||
|__________|__________|__________|________________________________________________________|________|________|________|________|________|________|________|________|________|
|
||||
*/
|
||||
|
||||
[_FN1] = LAYOUT_split_shift_and_bs(
|
||||
RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT, KC_HOME, KC_END,
|
||||
_______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, KC_DEL, _______, _______, _______, _______,
|
||||
_______, BL_TOGG, BL_INC, BL_DEC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
[_FN1] = LAYOUT_iso(
|
||||
RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT, KC_HOME, KC_END, \
|
||||
_______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, _______, _______, _______, _______, KC_DEL, _______, _______, _______, _______, \
|
||||
_______, BL_TOGG, BL_INC, BL_DEC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||
),
|
||||
|
||||
};
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
|
||||
|
||||
#define _QWERTY 0 //BASE layer
|
||||
#define _FUNCTION 1 //Function layer
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
|
||||
|
||||
#define _BL 0 //Base layer
|
||||
#define _FN1 1 //Function layer
|
||||
|
||||
@@ -14,11 +14,9 @@ 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 FC980C_H
|
||||
#define FC980C_H
|
||||
#pragma once
|
||||
|
||||
#include "quantum.h"
|
||||
// #include "quantum_keycodes.h"
|
||||
|
||||
/*
|
||||
----------------------------------------------------------------------------------------------------------------------
|
||||
@@ -37,42 +35,31 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
----------------------------------------------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
#define LAYOUT( \
|
||||
K0D, K2D, K5D, K3D, K6D, K7D, K7F, K7E, K7C, K72, K71, K70, K73, K74, K76, K77, K75, \
|
||||
K0A, K69, K59, K58, K5B, K6F, K5F, K5E, K6C, K5C, K52, K51, K50, K55, K54, K56, K57, K65, \
|
||||
K6A, K39, K68, K6B, K3B, K3F, K6E, K3E, K3C, K62, K61, K60, K33, K53, K64, K66, K67, K25, \
|
||||
K3A, K29, K38, K28, K2B, K2F, K2E, K2C, K1C, K32, K31, K20, K63, K24, K26, K27, \
|
||||
K2A, K18, K08, K1B, K0B, K1F, K1E, K0E, K22, K11, K21, K30, K34, K14, K16, K17, K15, \
|
||||
K1A, K09, K19, K0F, K02, K01, K10, K00, K04, K06, K07, K05) \
|
||||
{ \
|
||||
{K00, K01, K02, KC_NO, K04, K05, K06, K07, \
|
||||
K08, K09, K0A, K0B, KC_NO, K0D, K0E, K0F}, \
|
||||
{K10, K11, KC_NO, KC_NO, K14, K15, K16, K17, \
|
||||
K18, K19, K1A, K1B, K1C, KC_NO, K1E, K1F}, \
|
||||
{K20, K21, K22, KC_NO, K24, K25, K26, K27, \
|
||||
K28, K29, K2A, K2B, K2C, K2D, K2E, K2F}, \
|
||||
{K30, K31, K32, K33, K34, KC_NO, KC_NO, KC_NO, \
|
||||
K38, K39, K3A, K3B, K3C, K3D, K3E, K3F}, \
|
||||
{KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO}, \
|
||||
{K50, K51, K52, K53, K54, K55, K56, K57, \
|
||||
K58, K59, KC_NO, K5B, K5C, K5D, K5E, K5F}, \
|
||||
{K60, K61, K62, K63, K64, K65, K66, K67, \
|
||||
K68, K69, K6A, K6B, K6C, K6D, K6E, K6F}, \
|
||||
{ \
|
||||
K70, K71, K72, K73, K74, K75, K76, K77, \
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, K7C, K7D, K7E, K7F \
|
||||
} \
|
||||
}
|
||||
#define LAYOUT( \
|
||||
K0D, K2D, K5D, K3D, K6D, K7D, K7F, K7E, K7C, K72, K71, K70, K73, K74, K76, K77, K75, \
|
||||
K0A, K69, K59, K58, K5B, K6F, K5F, K5E, K6C, K5C, K52, K51, K50, K55, K54, K56, K57, K65, \
|
||||
K6A, K39, K68, K6B, K3B, K3F, K6E, K3E, K3C, K62, K61, K60, K33, K53, K64, K66, K67, K25, \
|
||||
K3A, K29, K38, K28, K2B, K2F, K2E, K2C, K1C, K32, K31, K20, K63, K24, K26, K27, \
|
||||
K2A, K18, K08, K1B, K0B, K1F, K1E, K0E, K22, K11, K21, K30, K34, K14, K16, K17, K15, \
|
||||
K1A, K09, K19, K0F, K02, K01, K10, K00, K04, K06, K07, K05 \
|
||||
) { \
|
||||
{ K00, K01, K02, KC_NO, K04, K05, K06, K07, K08, K09, K0A, K0B, KC_NO, K0D, K0E, K0F }, \
|
||||
{ K10, K11, KC_NO, KC_NO, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, KC_NO, K1E, K1F }, \
|
||||
{ K20, K21, K22, KC_NO, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F }, \
|
||||
{ K30, K31, K32, K33, K34, KC_NO, KC_NO, KC_NO, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F }, \
|
||||
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
|
||||
{ K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, KC_NO, K5B, K5C, K5D, K5E, K5F }, \
|
||||
{ K60, K61, K62, K63, K64, K65, K66, K67, K68, K69, K6A, K6B, K6C, K6D, K6E, K6F }, \
|
||||
{ K70, K71, K72, K73, K74, K75, K76, K77, KC_NO, KC_NO, KC_NO, KC_NO, K7C, K7D, K7E, K7F } \
|
||||
}
|
||||
/*
|
||||
LAYOUT(
|
||||
_______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,
|
||||
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,
|
||||
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,
|
||||
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, _______,_______,_______,
|
||||
_______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______,_______,_______,_______,
|
||||
_______,_______,_______, _______, _______,_______,_______, _______,_______,_______, _______,_______
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||
)
|
||||
*/
|
||||
|
||||
#endif
|
||||
|
||||
@@ -6,105 +6,106 @@
|
||||
"height": 6.75,
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"key_count": 98,
|
||||
"layout": [
|
||||
{ "label": "Esc", "x": 0, "y": 0 },
|
||||
{ "label": "F1", "x": 2, "y": 0 },
|
||||
{ "label": "F2", "x": 3, "y": 0 },
|
||||
{ "label": "F3", "x": 4, "y": 0 },
|
||||
{ "label": "F4", "x": 5, "y": 0 },
|
||||
{ "label": "F5", "x": 6.5, "y": 0 },
|
||||
{ "label": "F6", "x": 7.5, "y": 0 },
|
||||
{ "label": "F7", "x": 8.5, "y": 0 },
|
||||
{ "label": "F8", "x": 9.5, "y": 0 },
|
||||
{ "label": "F9", "x": 11, "y": 0 },
|
||||
{ "label": "F10", "x": 12, "y": 0 },
|
||||
{ "label": "F11", "x": 13, "y": 0 },
|
||||
{ "label": "F12", "x": 14, "y": 0 },
|
||||
{ "label": "Delete", "x": 15.5, "y": 0 },
|
||||
{ "label": "Insert", "x": 16.5, "y": 0 },
|
||||
{ "label": "Pg Up", "x": 17.5, "y": 0 },
|
||||
{ "label": "Pg Dn", "x": 18.5, "y": 0 },
|
||||
{ "label": "~", "x": 0, "y": 1.5 },
|
||||
{ "label": "!", "x": 1, "y": 1.5 },
|
||||
{ "label": "@", "x": 2, "y": 1.5 },
|
||||
{ "label": "#", "x": 3, "y": 1.5 },
|
||||
{ "label": "$", "x": 4, "y": 1.5 },
|
||||
{ "label": "%", "x": 5, "y": 1.5 },
|
||||
{ "label": "^", "x": 6, "y": 1.5 },
|
||||
{ "label": "&", "x": 7, "y": 1.5 },
|
||||
{ "label": "*", "x": 8, "y": 1.5 },
|
||||
{ "label": "(", "x": 9, "y": 1.5 },
|
||||
{ "label": ")", "x": 10, "y": 1.5 },
|
||||
{ "label": "_", "x": 11, "y": 1.5 },
|
||||
{ "label": "+", "x": 12, "y": 1.5 },
|
||||
{ "label": "Backspace", "x": 13, "y": 1.5, "w": 2 },
|
||||
{ "label": "Num Lock", "x": 15.5, "y": 1.5 },
|
||||
{ "label": "/", "x": 16.5, "y": 1.5 },
|
||||
{ "label": "*", "x": 17.5, "y": 1.5 },
|
||||
{ "label": "-", "x": 18.5, "y": 1.5 },
|
||||
{ "label": "Tab", "x": 0, "y": 2.5, "w": 1.5 },
|
||||
{ "label": "Q", "x": 1.5, "y": 2.5 },
|
||||
{ "label": "W", "x": 2.5, "y": 2.5 },
|
||||
{ "label": "E", "x": 3.5, "y": 2.5 },
|
||||
{ "label": "R", "x": 4.5, "y": 2.5 },
|
||||
{ "label": "T", "x": 5.5, "y": 2.5 },
|
||||
{ "label": "Y", "x": 6.5, "y": 2.5 },
|
||||
{ "label": "U", "x": 7.5, "y": 2.5 },
|
||||
{ "label": "I", "x": 8.5, "y": 2.5 },
|
||||
{ "label": "O", "x": 9.5, "y": 2.5 },
|
||||
{ "label": "P", "x": 10.5, "y": 2.5 },
|
||||
{ "label": "{", "x": 11.5, "y": 2.5 },
|
||||
{ "label": "}", "x": 12.5, "y": 2.5 },
|
||||
{ "label": "|", "x": 13.5, "y": 2.5, "w": 1.5 },
|
||||
{ "label": "7", "x": 15.5, "y": 2.5 },
|
||||
{ "label": "8", "x": 16.5, "y": 2.5 },
|
||||
{ "label": "9", "x": 17.5, "y": 2.5 },
|
||||
{ "label": "+", "x": 18.5, "y": 2.5, "h": 2 },
|
||||
{ "label": "Caps Lock", "x": 0, "y": 3.5, "w": 1.75 },
|
||||
{ "label": "A", "x": 1.75, "y": 3.5 },
|
||||
{ "label": "S", "x": 2.75, "y": 3.5 },
|
||||
{ "label": "D", "x": 3.75, "y": 3.5 },
|
||||
{ "label": "F", "x": 4.75, "y": 3.5 },
|
||||
{ "label": "G", "x": 5.75, "y": 3.5 },
|
||||
{ "label": "H", "x": 6.75, "y": 3.5 },
|
||||
{ "label": "J", "x": 7.75, "y": 3.5 },
|
||||
{ "label": "K", "x": 8.75, "y": 3.5 },
|
||||
{ "label": "L", "x": 9.75, "y": 3.5 },
|
||||
{ "label": ":", "x": 10.75, "y": 3.5 },
|
||||
{ "label": "\"", "x": 11.75, "y": 3.5 },
|
||||
{ "label": "Enter", "x": 12.75, "y": 3.5, "w": 2.25 },
|
||||
{ "label": "4", "x": 15.5, "y": 3.5 },
|
||||
{ "label": "5", "x": 16.5, "y": 3.5 },
|
||||
{ "label": "6", "x": 17.5, "y": 3.5 },
|
||||
{ "label": "Shift", "x": 0, "y": 4.5, "w": 2.25 },
|
||||
{ "label": "Z", "x": 2.25, "y": 4.5 },
|
||||
{ "label": "X", "x": 3.25, "y": 4.5 },
|
||||
{ "label": "C", "x": 4.25, "y": 4.5 },
|
||||
{ "label": "V", "x": 5.25, "y": 4.5 },
|
||||
{ "label": "B", "x": 6.25, "y": 4.5 },
|
||||
{ "label": "N", "x": 7.25, "y": 4.5 },
|
||||
{ "label": "M", "x": 8.25, "y": 4.5 },
|
||||
{ "label": "<", "x": 9.25, "y": 4.5 },
|
||||
{ "label": ">", "x": 10.25, "y": 4.5 },
|
||||
{ "label": "?", "x": 11.25, "y": 4.5 },
|
||||
{ "label": "Shift", "x": 12.25, "y": 4.5, "w": 1.75 },
|
||||
{ "label": "1", "x": 15.5, "y": 4.5 },
|
||||
{ "label": "2", "x": 16.5, "y": 4.5 },
|
||||
{ "label": "3", "x": 17.5, "y": 4.5 },
|
||||
{ "label": "Enter", "x": 18.5, "y": 4.5, "h": 2 },
|
||||
{ "label": "\u2191", "x": 14.25, "y": 4.75 },
|
||||
{ "label": "Ctrl", "x": 0, "y": 5.5, "w": 1.25 },
|
||||
{ "label": "Win", "x": 1.25, "y": 5.5 },
|
||||
{ "label": "Alt", "x": 2.25, "y": 5.5, "w": 1.25 },
|
||||
{ "x": 3.5, "y": 5.5, "w": 6 },
|
||||
{ "label": "Alt", "x": 9.5, "y": 5.5, "w": 1.25 },
|
||||
{ "label": "Ctrl", "x": 10.75, "y": 5.5 },
|
||||
{ "label": "Fn", "x": 11.75, "y": 5.5, "w": 1.25 },
|
||||
{ "label": "0", "x": 16.5, "y": 5.5 },
|
||||
{ "label": ".", "x": 17.5, "y": 5.5 },
|
||||
{ "label": "\u2190", "x": 13.25, "y": 5.75 },
|
||||
{ "label": "\u2193", "x": 14.25, "y": 5.75 },
|
||||
{ "label": "\u2192", "x": 15.25, "y": 5.75 }
|
||||
{"label":"Esc", "x":0, "y":0},
|
||||
{"label":"F1", "x":2, "y":0},
|
||||
{"label":"F2", "x":3, "y":0},
|
||||
{"label":"F3", "x":4, "y":0},
|
||||
{"label":"F4", "x":5, "y":0},
|
||||
{"label":"F5", "x":6.5, "y":0},
|
||||
{"label":"F6", "x":7.5, "y":0},
|
||||
{"label":"F7", "x":8.5, "y":0},
|
||||
{"label":"F8", "x":9.5, "y":0},
|
||||
{"label":"F9", "x":11, "y":0},
|
||||
{"label":"F10", "x":12, "y":0},
|
||||
{"label":"F11", "x":13, "y":0},
|
||||
{"label":"F12", "x":14, "y":0},
|
||||
{"label":"Delete", "x":15.5, "y":0},
|
||||
{"label":"Insert", "x":16.5, "y":0},
|
||||
{"label":"Page Up", "x":17.5, "y":0},
|
||||
{"label":"Page Down", "x":18.5, "y":0},
|
||||
{"label":"`", "x":0, "y":1.5},
|
||||
{"label":"1", "x":1, "y":1.5},
|
||||
{"label":"2", "x":2, "y":1.5},
|
||||
{"label":"3", "x":3, "y":1.5},
|
||||
{"label":"4", "x":4, "y":1.5},
|
||||
{"label":"5", "x":5, "y":1.5},
|
||||
{"label":"6", "x":6, "y":1.5},
|
||||
{"label":"7", "x":7, "y":1.5},
|
||||
{"label":"8", "x":8, "y":1.5},
|
||||
{"label":"9", "x":9, "y":1.5},
|
||||
{"label":"0", "x":10, "y":1.5},
|
||||
{"label":"-", "x":11, "y":1.5},
|
||||
{"label":"=", "x":12, "y":1.5},
|
||||
{"label":"Backspace", "x":13, "y":1.5, "w":2},
|
||||
{"label":"Num Lock", "x":15.5, "y":1.5},
|
||||
{"label":"/", "x":16.5, "y":1.5},
|
||||
{"label":"*", "x":17.5, "y":1.5},
|
||||
{"label":"-", "x":18.5, "y":1.5},
|
||||
{"label":"Tab", "x":0, "y":2.5, "w":1.5},
|
||||
{"label":"Q", "x":1.5, "y":2.5},
|
||||
{"label":"W", "x":2.5, "y":2.5},
|
||||
{"label":"E", "x":3.5, "y":2.5},
|
||||
{"label":"R", "x":4.5, "y":2.5},
|
||||
{"label":"T", "x":5.5, "y":2.5},
|
||||
{"label":"Y", "x":6.5, "y":2.5},
|
||||
{"label":"U", "x":7.5, "y":2.5},
|
||||
{"label":"I", "x":8.5, "y":2.5},
|
||||
{"label":"O", "x":9.5, "y":2.5},
|
||||
{"label":"P", "x":10.5, "y":2.5},
|
||||
{"label":"[", "x":11.5, "y":2.5},
|
||||
{"label":"]", "x":12.5, "y":2.5},
|
||||
{"label":"\\", "x":13.5, "y":2.5, "w":1.5},
|
||||
{"label":"7", "x":15.5, "y":2.5},
|
||||
{"label":"8", "x":16.5, "y":2.5},
|
||||
{"label":"9", "x":17.5, "y":2.5},
|
||||
{"label":"+", "x":18.5, "y":2.5, "h":2},
|
||||
{"label":"Caps Lock", "x":0, "y":3.5, "w":1.75},
|
||||
{"label":"A", "x":1.75, "y":3.5},
|
||||
{"label":"S", "x":2.75, "y":3.5},
|
||||
{"label":"D", "x":3.75, "y":3.5},
|
||||
{"label":"F", "x":4.75, "y":3.5},
|
||||
{"label":"G", "x":5.75, "y":3.5},
|
||||
{"label":"H", "x":6.75, "y":3.5},
|
||||
{"label":"J", "x":7.75, "y":3.5},
|
||||
{"label":"K", "x":8.75, "y":3.5},
|
||||
{"label":"L", "x":9.75, "y":3.5},
|
||||
{"label":";", "x":10.75, "y":3.5},
|
||||
{"label":"'", "x":11.75, "y":3.5},
|
||||
{"label":"Enter", "x":12.75, "y":3.5, "w":2.25},
|
||||
{"label":"4", "x":15.5, "y":3.5},
|
||||
{"label":"5", "x":16.5, "y":3.5},
|
||||
{"label":"6", "x":17.5, "y":3.5},
|
||||
{"label":"Shift", "x":0, "y":4.5, "w":2.25},
|
||||
{"label":"Z", "x":2.25, "y":4.5},
|
||||
{"label":"X", "x":3.25, "y":4.5},
|
||||
{"label":"C", "x":4.25, "y":4.5},
|
||||
{"label":"V", "x":5.25, "y":4.5},
|
||||
{"label":"B", "x":6.25, "y":4.5},
|
||||
{"label":"N", "x":7.25, "y":4.5},
|
||||
{"label":"M", "x":8.25, "y":4.5},
|
||||
{"label":",", "x":9.25, "y":4.5},
|
||||
{"label":".", "x":10.25, "y":4.5},
|
||||
{"label":"/", "x":11.25, "y":4.5},
|
||||
{"label":"Shift", "x":12.25, "y":4.5, "w":1.75},
|
||||
{"label":"Up", "x":14.25, "y":4.75},
|
||||
{"label":"1", "x":15.5, "y":4.5},
|
||||
{"label":"2", "x":16.5, "y":4.5},
|
||||
{"label":"3", "x":17.5, "y":4.5},
|
||||
{"label":"Enter", "x":18.5, "y":4.5, "h":2},
|
||||
{"label":"Ctrl", "x":0, "y":5.5, "w":1.25},
|
||||
{"label":"Win", "x":1.25, "y":5.5},
|
||||
{"label":"Alt", "x":2.25, "y":5.5, "w":1.25},
|
||||
{"label":"Space", "x":3.5, "y":5.5, "w":6},
|
||||
{"label":"Alt", "x":9.5, "y":5.5, "w":1.25},
|
||||
{"label":"Ctrl", "x":10.75, "y":5.5},
|
||||
{"label":"Fn", "x":11.75, "y":5.5, "w":1.25},
|
||||
{"label":"Left", "x":13.25, "y":5.75},
|
||||
{"label":"Down", "x":14.25, "y":5.75},
|
||||
{"label":"Right", "x":15.25, "y":5.75},
|
||||
{"label":"0", "x":16.5, "y":5.5},
|
||||
{"label":".", "x":17.5, "y":5.5}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,16 +1,84 @@
|
||||
{
|
||||
"keyboard_name": "gskt00",
|
||||
"url": "",
|
||||
"maintainer": "nachie",
|
||||
"width": 15,
|
||||
"height": 5,
|
||||
"layouts": {
|
||||
"LAYOUT_60_ansi_tsangan": {
|
||||
"layout": [{"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Win", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"Alt", "x":11, "y":4, "w":1.5}, {"label":"Win", "x":12.5, "y":4}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}]
|
||||
},
|
||||
|
||||
"LAYOUT_60_iso_tsangan": {
|
||||
"layout": [{"label":"\u00ac", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"\"", "x":2, "y":0}, {"label":"\u00a3", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"@", "x":11.75, "y":2}, {"label":"~", "x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":2, "w":1.25}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"label":"|", "x":1.25, "y":3}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Win", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"AltGr", "x":11, "y":4, "w":1.5}, {"label":"Menu", "x":12.5, "y":4}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}]
|
||||
}
|
||||
"keyboard_name": "gskt00",
|
||||
"url": "",
|
||||
"maintainer": "nachie",
|
||||
"width": 15,
|
||||
"height": 5,
|
||||
"layouts": {
|
||||
"LAYOUT_60_ansi_tsangan": {
|
||||
"layout": [{"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Win", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"Alt", "x":11, "y":4, "w":1.5}, {"label":"Win", "x":12.5, "y":4}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}]
|
||||
},
|
||||
|
||||
"LAYOUT_60_iso_tsangan": {
|
||||
"layout": [{"label":"\u00ac", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"\"", "x":2, "y":0}, {"label":"\u00a3", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"@", "x":11.75, "y":2}, {"label":"~", "x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"label":"|", "x":1.25, "y":3}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Win", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"AltGr", "x":11, "y":4, "w":1.5}, {"label":"Menu", "x":12.5, "y":4}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}]
|
||||
},
|
||||
|
||||
"LAYOUT_all": {
|
||||
"layout": [
|
||||
{"label":"Esc", "x":0, "y":0},
|
||||
{"label":"1", "x":1, "y":0},
|
||||
{"label":"2", "x":2, "y":0},
|
||||
{"label":"3", "x":3, "y":0},
|
||||
{"label":"4", "x":4, "y":0},
|
||||
{"label":"5", "x":5, "y":0},
|
||||
{"label":"6", "x":6, "y":0},
|
||||
{"label":"7", "x":7, "y":0},
|
||||
{"label":"8", "x":8, "y":0},
|
||||
{"label":"9", "x":9, "y":0},
|
||||
{"label":"0", "x":10, "y":0},
|
||||
{"label":"-", "x":11, "y":0},
|
||||
{"label":"=", "x":12, "y":0},
|
||||
{"label":"\\", "x":13, "y":0},
|
||||
{"label":"`", "x":14, "y":0},
|
||||
{"label":"Tab", "x":0, "y":1, "w":1.5},
|
||||
{"label":"Q", "x":1.5, "y":1},
|
||||
{"label":"W", "x":2.5, "y":1},
|
||||
{"label":"E", "x":3.5, "y":1},
|
||||
{"label":"R", "x":4.5, "y":1},
|
||||
{"label":"T", "x":5.5, "y":1},
|
||||
{"label":"Y", "x":6.5, "y":1},
|
||||
{"label":"U", "x":7.5, "y":1},
|
||||
{"label":"I", "x":8.5, "y":1},
|
||||
{"label":"O", "x":9.5, "y":1},
|
||||
{"label":"P", "x":10.5, "y":1},
|
||||
{"label":"[", "x":11.5, "y":1},
|
||||
{"label":"]", "x":12.5, "y":1},
|
||||
{"label":"Backspace", "x":13.5, "y":1, "w":1.5},
|
||||
{"label":"Caps Lock", "x":0, "y":2, "w":1.75},
|
||||
{"label":"A", "x":1.75, "y":2},
|
||||
{"label":"S", "x":2.75, "y":2},
|
||||
{"label":"D", "x":3.75, "y":2},
|
||||
{"label":"F", "x":4.75, "y":2},
|
||||
{"label":"G", "x":5.75, "y":2},
|
||||
{"label":"H", "x":6.75, "y":2},
|
||||
{"label":"J", "x":7.75, "y":2},
|
||||
{"label":"K", "x":8.75, "y":2},
|
||||
{"label":"L", "x":9.75, "y":2},
|
||||
{"label":";", "x":10.75, "y":2},
|
||||
{"label":"'", "x":11.75, "y":2},
|
||||
{"label":"Enter", "x":12.75, "y":2, "w":2.25},
|
||||
{"label":"Shift", "x":0, "y":3, "w":1.25},
|
||||
{"label":"ISO \\", "x":1.25, "y":3},
|
||||
{"label":"Z", "x":2.25, "y":3},
|
||||
{"label":"X", "x":3.25, "y":3},
|
||||
{"label":"C", "x":4.25, "y":3},
|
||||
{"label":"V", "x":5.25, "y":3},
|
||||
{"label":"B", "x":6.25, "y":3},
|
||||
{"label":"N", "x":7.25, "y":3},
|
||||
{"label":"M", "x":8.25, "y":3},
|
||||
{"label":",", "x":9.25, "y":3},
|
||||
{"label":".", "x":10.25, "y":3},
|
||||
{"label":"/", "x":11.25, "y":3},
|
||||
{"label":"Shift", "x":12.25, "y":3, "w":1.75},
|
||||
{"label":"Fn", "x":14, "y":3},
|
||||
{"label":"Ctrl", "x":0, "y":4, "w":1.5},
|
||||
{"label":"GUI", "x":1.5, "y":4},
|
||||
{"label":"Alt", "x":2.5, "y":4, "w":1.5},
|
||||
{"label":"Space", "x":4, "y":4, "w":7},
|
||||
{"label":"Alt", "x":11, "y":4, "w":1.5},
|
||||
{"label":"GUI", "x":12.5, "y":4},
|
||||
{"label":"Ctrl", "x":13.5, "y":4, "w":1.5}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
/*
|
||||
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
#include "hal.h"
|
||||
|
||||
// Value to place in RTC backup register 10 for persistent bootloader mode
|
||||
#define RTC_BOOTLOADER_FLAG 0x424C
|
||||
|
||||
/**
|
||||
* @brief PAL setup.
|
||||
* @details Digital I/O ports static configuration as defined in @p board.h.
|
||||
* This variable is used by the HAL when initializing the PAL driver.
|
||||
*/
|
||||
#if HAL_USE_PAL || defined(__DOXYGEN__)
|
||||
const PALConfig pal_default_config =
|
||||
{
|
||||
{VAL_GPIOAODR, VAL_GPIOACRL, VAL_GPIOACRH},
|
||||
{VAL_GPIOBODR, VAL_GPIOBCRL, VAL_GPIOBCRH},
|
||||
{VAL_GPIOCODR, VAL_GPIOCCRL, VAL_GPIOCCRH},
|
||||
{VAL_GPIODODR, VAL_GPIODCRL, VAL_GPIODCRH},
|
||||
{VAL_GPIOEODR, VAL_GPIOECRL, VAL_GPIOECRH},
|
||||
};
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Early initialization code.
|
||||
* This initialization must be performed just after stack setup and before
|
||||
* any other initialization.
|
||||
*/
|
||||
void __early_init(void) {
|
||||
|
||||
stm32_clock_init();
|
||||
}
|
||||
|
||||
/*
|
||||
* Board-specific initialization code.
|
||||
*/
|
||||
void boardInit(void) {
|
||||
//JTAG-DP Disabled and SW-DP Enabled
|
||||
AFIO->MAPR |= AFIO_MAPR_SWJ_CFG_JTAGDISABLE;
|
||||
//Set backup register DR10 to enter bootloader on reset
|
||||
BKP->DR10 = RTC_BOOTLOADER_FLAG;
|
||||
}
|
||||
166
keyboards/handwired/ortho60/boards/GENERIC_STM32_F103/board.h
Normal file
166
keyboards/handwired/ortho60/boards/GENERIC_STM32_F103/board.h
Normal file
@@ -0,0 +1,166 @@
|
||||
/*
|
||||
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef _BOARD_H_
|
||||
#define _BOARD_H_
|
||||
|
||||
/*
|
||||
* Setup for a Generic STM32F103 board.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Board identifier.
|
||||
*/
|
||||
#define BOARD_GENERIC_STM32_F103
|
||||
#define BOARD_NAME "Generic STM32F103x board"
|
||||
|
||||
/*
|
||||
* Board frequencies.
|
||||
*/
|
||||
#define STM32_LSECLK 32768
|
||||
#define STM32_HSECLK 8000000
|
||||
|
||||
/*
|
||||
* MCU type, supported types are defined in ./os/hal/platforms/hal_lld.h.
|
||||
*/
|
||||
#define STM32F103xB
|
||||
|
||||
/*
|
||||
* IO pins assignments
|
||||
*/
|
||||
|
||||
/* on-board */
|
||||
|
||||
#define GPIOA_LED 8
|
||||
#define GPIOD_OSC_IN 0
|
||||
#define GPIOD_OSC_OUT 1
|
||||
|
||||
/* In case your board has a "USB enable" hardware
|
||||
controlled by a pin, define it here. (It could be just
|
||||
a 1.5k resistor connected to D+ line.)
|
||||
*/
|
||||
/*
|
||||
#define GPIOB_USB_DISC 10
|
||||
*/
|
||||
|
||||
/*
|
||||
* I/O ports initial setup, this configuration is established soon after reset
|
||||
* in the initialization code.
|
||||
*
|
||||
* The digits have the following meaning:
|
||||
* 0 - Analog input.
|
||||
* 1 - Push Pull output 10MHz.
|
||||
* 2 - Push Pull output 2MHz.
|
||||
* 3 - Push Pull output 50MHz.
|
||||
* 4 - Digital input.
|
||||
* 5 - Open Drain output 10MHz.
|
||||
* 6 - Open Drain output 2MHz.
|
||||
* 7 - Open Drain output 50MHz.
|
||||
* 8 - Digital input with PullUp or PullDown resistor depending on ODR.
|
||||
* 9 - Alternate Push Pull output 10MHz.
|
||||
* A - Alternate Push Pull output 2MHz.
|
||||
* B - Alternate Push Pull output 50MHz.
|
||||
* C - Reserved.
|
||||
* D - Alternate Open Drain output 10MHz.
|
||||
* E - Alternate Open Drain output 2MHz.
|
||||
* F - Alternate Open Drain output 50MHz.
|
||||
* Please refer to the STM32 Reference Manual for details.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Port A setup.
|
||||
* Everything input with pull-up except:
|
||||
* PA2 - Alternate output (USART2 TX).
|
||||
* PA3 - Normal input (USART2 RX).
|
||||
* PA9 - Alternate output (USART1 TX).
|
||||
* PA10 - Normal input (USART1 RX).
|
||||
*/
|
||||
#define VAL_GPIOACRL 0x88884B88 /* PA7...PA0 */
|
||||
#define VAL_GPIOACRH 0x888884B8 /* PA15...PA8 */
|
||||
#define VAL_GPIOAODR 0xFFFFFFFF
|
||||
|
||||
/*
|
||||
* Port B setup.
|
||||
* Everything input with pull-up except:
|
||||
* PB10 - Push Pull output (USB switch).
|
||||
*/
|
||||
#define VAL_GPIOBCRL 0x88888888 /* PB7...PB0 */
|
||||
#define VAL_GPIOBCRH 0x88888388 /* PB15...PB8 */
|
||||
#define VAL_GPIOBODR 0xFFFFFFFF
|
||||
|
||||
/*
|
||||
* Port C setup.
|
||||
* Everything input with pull-up except:
|
||||
* PC13 - Push Pull output (LED).
|
||||
*/
|
||||
#define VAL_GPIOCCRL 0x88888888 /* PC7...PC0 */
|
||||
#define VAL_GPIOCCRH 0x88388888 /* PC15...PC8 */
|
||||
#define VAL_GPIOCODR 0xFFFFFFFF
|
||||
|
||||
/*
|
||||
* Port D setup.
|
||||
* Everything input with pull-up except:
|
||||
* PD0 - Normal input (XTAL).
|
||||
* PD1 - Normal input (XTAL).
|
||||
*/
|
||||
#define VAL_GPIODCRL 0x88888844 /* PD7...PD0 */
|
||||
#define VAL_GPIODCRH 0x88888888 /* PD15...PD8 */
|
||||
#define VAL_GPIODODR 0xFFFFFFFF
|
||||
|
||||
/*
|
||||
* Port E setup.
|
||||
* Everything input with pull-up except:
|
||||
*/
|
||||
#define VAL_GPIOECRL 0x88888888 /* PE7...PE0 */
|
||||
#define VAL_GPIOECRH 0x88888888 /* PE15...PE8 */
|
||||
#define VAL_GPIOEODR 0xFFFFFFFF
|
||||
|
||||
/*
|
||||
* USB bus activation macro, required by the USB driver.
|
||||
*/
|
||||
/* The point is that most of the generic STM32F103* boards
|
||||
have a 1.5k resistor connected on one end to the D+ line
|
||||
and on the other end to some pin. Or even a slightly more
|
||||
complicated "USB enable" circuit, controlled by a pin.
|
||||
That should go here.
|
||||
|
||||
However on some boards (e.g. one that I have), there's no
|
||||
such hardware. In which case it's better to not do anything.
|
||||
*/
|
||||
/*
|
||||
#define usb_lld_connect_bus(usbp) palClearPad(GPIOB, GPIOB_USB_DISC)
|
||||
*/
|
||||
#define usb_lld_connect_bus(usbp) palSetPadMode(GPIOA, 12, PAL_MODE_INPUT);
|
||||
|
||||
/*
|
||||
* USB bus de-activation macro, required by the USB driver.
|
||||
*/
|
||||
/*
|
||||
#define usb_lld_disconnect_bus(usbp) palSetPad(GPIOB, GPIOB_USB_DISC)
|
||||
*/
|
||||
#define usb_lld_disconnect_bus(usbp) palSetPadMode(GPIOA, 12, PAL_MODE_OUTPUT_PUSHPULL); palClearPad(GPIOA, 12);
|
||||
|
||||
#if !defined(_FROM_ASM_)
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
void boardInit(void);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* _FROM_ASM_ */
|
||||
|
||||
#endif /* _BOARD_H_ */
|
||||
@@ -0,0 +1,5 @@
|
||||
# List of all the board related files.
|
||||
BOARDSRC = $(BOARD_PATH)/boards/GENERIC_STM32_F103/board.c
|
||||
|
||||
# Required include directories
|
||||
BOARDINC = $(BOARD_PATH)/boards/GENERIC_STM32_F103
|
||||
10
keyboards/handwired/ortho60/bootloader_defs.h
Normal file
10
keyboards/handwired/ortho60/bootloader_defs.h
Normal file
@@ -0,0 +1,10 @@
|
||||
/* Address for jumping to bootloader on STM32 chips. */
|
||||
/* It is chip dependent, the correct number can be looked up here (page 175):
|
||||
* http://www.st.com/web/en/resource/technical/document/application_note/CD00167594.pdf
|
||||
* This also requires a patch to chibios:
|
||||
* <tmk_dir>/tmk_core/tool/chibios/ch-bootloader-jump.patch
|
||||
*/
|
||||
|
||||
// STM32F103* does NOT have an USB bootloader in ROM (only serial),
|
||||
// so setting anything here does not make much sense
|
||||
// #define STM32_BOOTLOADER_ADDRESS 0x1FFFC800
|
||||
524
keyboards/handwired/ortho60/chconf.h
Normal file
524
keyboards/handwired/ortho60/chconf.h
Normal file
@@ -0,0 +1,524 @@
|
||||
/*
|
||||
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file templates/chconf.h
|
||||
* @brief Configuration file template.
|
||||
* @details A copy of this file must be placed in each project directory, it
|
||||
* contains the application specific kernel settings.
|
||||
*
|
||||
* @addtogroup config
|
||||
* @details Kernel related settings and hooks.
|
||||
* @{
|
||||
*/
|
||||
|
||||
#ifndef CHCONF_H
|
||||
#define CHCONF_H
|
||||
|
||||
#define _CHIBIOS_RT_CONF_
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
* @name System timers settings
|
||||
* @{
|
||||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief System time counter resolution.
|
||||
* @note Allowed values are 16 or 32 bits.
|
||||
*/
|
||||
#define CH_CFG_ST_RESOLUTION 32
|
||||
|
||||
/**
|
||||
* @brief System tick frequency.
|
||||
* @details Frequency of the system timer that drives the system ticks. This
|
||||
* setting also defines the system tick time unit.
|
||||
*/
|
||||
#define CH_CFG_ST_FREQUENCY 100000
|
||||
|
||||
/**
|
||||
* @brief Time delta constant for the tick-less mode.
|
||||
* @note If this value is zero then the system uses the classic
|
||||
* periodic tick. This value represents the minimum number
|
||||
* of ticks that is safe to specify in a timeout directive.
|
||||
* The value one is not valid, timeouts are rounded up to
|
||||
* this value.
|
||||
*/
|
||||
#define CH_CFG_ST_TIMEDELTA 0
|
||||
|
||||
/** @} */
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
* @name Kernel parameters and options
|
||||
* @{
|
||||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Round robin interval.
|
||||
* @details This constant is the number of system ticks allowed for the
|
||||
* threads before preemption occurs. Setting this value to zero
|
||||
* disables the preemption for threads with equal priority and the
|
||||
* round robin becomes cooperative. Note that higher priority
|
||||
* threads can still preempt, the kernel is always preemptive.
|
||||
* @note Disabling the round robin preemption makes the kernel more compact
|
||||
* and generally faster.
|
||||
* @note The round robin preemption is not supported in tickless mode and
|
||||
* must be set to zero in that case.
|
||||
*/
|
||||
#define CH_CFG_TIME_QUANTUM 0
|
||||
|
||||
/**
|
||||
* @brief Managed RAM size.
|
||||
* @details Size of the RAM area to be managed by the OS. If set to zero
|
||||
* then the whole available RAM is used. The core memory is made
|
||||
* available to the heap allocator and/or can be used directly through
|
||||
* the simplified core memory allocator.
|
||||
*
|
||||
* @note In order to let the OS manage the whole RAM the linker script must
|
||||
* provide the @p __heap_base__ and @p __heap_end__ symbols.
|
||||
* @note Requires @p CH_CFG_USE_MEMCORE.
|
||||
*/
|
||||
#define CH_CFG_MEMCORE_SIZE 0
|
||||
|
||||
/**
|
||||
* @brief Idle thread automatic spawn suppression.
|
||||
* @details When this option is activated the function @p chSysInit()
|
||||
* does not spawn the idle thread. The application @p main()
|
||||
* function becomes the idle thread and must implement an
|
||||
* infinite loop.
|
||||
*/
|
||||
#define CH_CFG_NO_IDLE_THREAD FALSE
|
||||
|
||||
/* Use __WFI in the idle thread for waiting. Does lower the power
|
||||
* consumption. */
|
||||
#define CORTEX_ENABLE_WFI_IDLE TRUE
|
||||
|
||||
/** @} */
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
* @name Performance options
|
||||
* @{
|
||||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief OS optimization.
|
||||
* @details If enabled then time efficient rather than space efficient code
|
||||
* is used when two possible implementations exist.
|
||||
*
|
||||
* @note This is not related to the compiler optimization options.
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#define CH_CFG_OPTIMIZE_SPEED TRUE
|
||||
|
||||
/** @} */
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
* @name Subsystem options
|
||||
* @{
|
||||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Time Measurement APIs.
|
||||
* @details If enabled then the time measurement APIs are included in
|
||||
* the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#define CH_CFG_USE_TM FALSE
|
||||
|
||||
/**
|
||||
* @brief Threads registry APIs.
|
||||
* @details If enabled then the registry APIs are included in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#define CH_CFG_USE_REGISTRY TRUE
|
||||
|
||||
/**
|
||||
* @brief Threads synchronization APIs.
|
||||
* @details If enabled then the @p chThdWait() function is included in
|
||||
* the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#define CH_CFG_USE_WAITEXIT TRUE
|
||||
|
||||
/**
|
||||
* @brief Semaphores APIs.
|
||||
* @details If enabled then the Semaphores APIs are included in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#define CH_CFG_USE_SEMAPHORES TRUE
|
||||
|
||||
/**
|
||||
* @brief Semaphores queuing mode.
|
||||
* @details If enabled then the threads are enqueued on semaphores by
|
||||
* priority rather than in FIFO order.
|
||||
*
|
||||
* @note The default is @p FALSE. Enable this if you have special
|
||||
* requirements.
|
||||
* @note Requires @p CH_CFG_USE_SEMAPHORES.
|
||||
*/
|
||||
#define CH_CFG_USE_SEMAPHORES_PRIORITY FALSE
|
||||
|
||||
/**
|
||||
* @brief Mutexes APIs.
|
||||
* @details If enabled then the mutexes APIs are included in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#define CH_CFG_USE_MUTEXES TRUE
|
||||
|
||||
/**
|
||||
* @brief Enables recursive behavior on mutexes.
|
||||
* @note Recursive mutexes are heavier and have an increased
|
||||
* memory footprint.
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
* @note Requires @p CH_CFG_USE_MUTEXES.
|
||||
*/
|
||||
#define CH_CFG_USE_MUTEXES_RECURSIVE FALSE
|
||||
|
||||
/**
|
||||
* @brief Conditional Variables APIs.
|
||||
* @details If enabled then the conditional variables APIs are included
|
||||
* in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
* @note Requires @p CH_CFG_USE_MUTEXES.
|
||||
*/
|
||||
#define CH_CFG_USE_CONDVARS TRUE
|
||||
|
||||
/**
|
||||
* @brief Conditional Variables APIs with timeout.
|
||||
* @details If enabled then the conditional variables APIs with timeout
|
||||
* specification are included in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
* @note Requires @p CH_CFG_USE_CONDVARS.
|
||||
*/
|
||||
#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE
|
||||
|
||||
/**
|
||||
* @brief Events Flags APIs.
|
||||
* @details If enabled then the event flags APIs are included in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#define CH_CFG_USE_EVENTS TRUE
|
||||
|
||||
/**
|
||||
* @brief Events Flags APIs with timeout.
|
||||
* @details If enabled then the events APIs with timeout specification
|
||||
* are included in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
* @note Requires @p CH_CFG_USE_EVENTS.
|
||||
*/
|
||||
#define CH_CFG_USE_EVENTS_TIMEOUT TRUE
|
||||
|
||||
/**
|
||||
* @brief Synchronous Messages APIs.
|
||||
* @details If enabled then the synchronous messages APIs are included
|
||||
* in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#define CH_CFG_USE_MESSAGES TRUE
|
||||
|
||||
/**
|
||||
* @brief Synchronous Messages queuing mode.
|
||||
* @details If enabled then messages are served by priority rather than in
|
||||
* FIFO order.
|
||||
*
|
||||
* @note The default is @p FALSE. Enable this if you have special
|
||||
* requirements.
|
||||
* @note Requires @p CH_CFG_USE_MESSAGES.
|
||||
*/
|
||||
#define CH_CFG_USE_MESSAGES_PRIORITY FALSE
|
||||
|
||||
/**
|
||||
* @brief Mailboxes APIs.
|
||||
* @details If enabled then the asynchronous messages (mailboxes) APIs are
|
||||
* included in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
* @note Requires @p CH_CFG_USE_SEMAPHORES.
|
||||
*/
|
||||
#define CH_CFG_USE_MAILBOXES TRUE
|
||||
|
||||
/**
|
||||
* @brief Core Memory Manager APIs.
|
||||
* @details If enabled then the core memory manager APIs are included
|
||||
* in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#define CH_CFG_USE_MEMCORE TRUE
|
||||
|
||||
/**
|
||||
* @brief Heap Allocator APIs.
|
||||
* @details If enabled then the memory heap allocator APIs are included
|
||||
* in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
* @note Requires @p CH_CFG_USE_MEMCORE and either @p CH_CFG_USE_MUTEXES or
|
||||
* @p CH_CFG_USE_SEMAPHORES.
|
||||
* @note Mutexes are recommended.
|
||||
*/
|
||||
#define CH_CFG_USE_HEAP TRUE
|
||||
|
||||
/**
|
||||
* @brief Memory Pools Allocator APIs.
|
||||
* @details If enabled then the memory pools allocator APIs are included
|
||||
* in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#define CH_CFG_USE_MEMPOOLS FALSE
|
||||
|
||||
/**
|
||||
* @brief Dynamic Threads APIs.
|
||||
* @details If enabled then the dynamic threads creation APIs are included
|
||||
* in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
* @note Requires @p CH_CFG_USE_WAITEXIT.
|
||||
* @note Requires @p CH_CFG_USE_HEAP and/or @p CH_CFG_USE_MEMPOOLS.
|
||||
*/
|
||||
#define CH_CFG_USE_DYNAMIC FALSE
|
||||
|
||||
/** @} */
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
* @name Debug options
|
||||
* @{
|
||||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Debug option, kernel statistics.
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
*/
|
||||
#define CH_DBG_STATISTICS FALSE
|
||||
|
||||
/**
|
||||
* @brief Debug option, system state check.
|
||||
* @details If enabled the correct call protocol for system APIs is checked
|
||||
* at runtime.
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
*/
|
||||
#define CH_DBG_SYSTEM_STATE_CHECK FALSE
|
||||
|
||||
/**
|
||||
* @brief Debug option, parameters checks.
|
||||
* @details If enabled then the checks on the API functions input
|
||||
* parameters are activated.
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
*/
|
||||
#define CH_DBG_ENABLE_CHECKS FALSE
|
||||
|
||||
/**
|
||||
* @brief Debug option, consistency checks.
|
||||
* @details If enabled then all the assertions in the kernel code are
|
||||
* activated. This includes consistency checks inside the kernel,
|
||||
* runtime anomalies and port-defined checks.
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
*/
|
||||
#define CH_DBG_ENABLE_ASSERTS FALSE
|
||||
|
||||
/**
|
||||
* @brief Debug option, trace buffer.
|
||||
* @details If enabled then the trace buffer is activated.
|
||||
*
|
||||
* @note The default is @p CH_DBG_TRACE_MASK_DISABLED.
|
||||
*/
|
||||
#define CH_DBG_TRACE_MASK CH_DBG_TRACE_MASK_DISABLED
|
||||
|
||||
/**
|
||||
* @brief Trace buffer entries.
|
||||
* @note The trace buffer is only allocated if @p CH_DBG_TRACE_MASK is
|
||||
* different from @p CH_DBG_TRACE_MASK_DISABLED.
|
||||
*/
|
||||
#define CH_DBG_TRACE_BUFFER_SIZE 128
|
||||
|
||||
/**
|
||||
* @brief Debug option, stack checks.
|
||||
* @details If enabled then a runtime stack check is performed.
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
* @note The stack check is performed in a architecture/port dependent way.
|
||||
* It may not be implemented or some ports.
|
||||
* @note The default failure mode is to halt the system with the global
|
||||
* @p panic_msg variable set to @p NULL.
|
||||
*/
|
||||
#define CH_DBG_ENABLE_STACK_CHECK FALSE
|
||||
|
||||
/**
|
||||
* @brief Debug option, stacks initialization.
|
||||
* @details If enabled then the threads working area is filled with a byte
|
||||
* value when a thread is created. This can be useful for the
|
||||
* runtime measurement of the used stack.
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
*/
|
||||
#define CH_DBG_FILL_THREADS FALSE
|
||||
|
||||
/**
|
||||
* @brief Debug option, threads profiling.
|
||||
* @details If enabled then a field is added to the @p thread_t structure that
|
||||
* counts the system ticks occurred while executing the thread.
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
* @note This debug option is not currently compatible with the
|
||||
* tickless mode.
|
||||
*/
|
||||
#define CH_DBG_THREADS_PROFILING FALSE
|
||||
|
||||
/** @} */
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
* @name Kernel hooks
|
||||
* @{
|
||||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Threads descriptor structure extension.
|
||||
* @details User fields added to the end of the @p thread_t structure.
|
||||
*/
|
||||
#define CH_CFG_THREAD_EXTRA_FIELDS \
|
||||
/* Add threads custom fields here.*/
|
||||
|
||||
/**
|
||||
* @brief Threads initialization hook.
|
||||
* @details User initialization code added to the @p chThdInit() API.
|
||||
*
|
||||
* @note It is invoked from within @p chThdInit() and implicitly from all
|
||||
* the threads creation APIs.
|
||||
*/
|
||||
#define CH_CFG_THREAD_INIT_HOOK(tp) { \
|
||||
/* Add threads initialization code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Threads finalization hook.
|
||||
* @details User finalization code added to the @p chThdExit() API.
|
||||
*/
|
||||
#define CH_CFG_THREAD_EXIT_HOOK(tp) { \
|
||||
/* Add threads finalization code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Context switch hook.
|
||||
* @details This hook is invoked just before switching between threads.
|
||||
*/
|
||||
#define CH_CFG_CONTEXT_SWITCH_HOOK(ntp, otp) { \
|
||||
/* Context switch code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief ISR enter hook.
|
||||
*/
|
||||
#define CH_CFG_IRQ_PROLOGUE_HOOK() { \
|
||||
/* IRQ prologue code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief ISR exit hook.
|
||||
*/
|
||||
#define CH_CFG_IRQ_EPILOGUE_HOOK() { \
|
||||
/* IRQ epilogue code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Idle thread enter hook.
|
||||
* @note This hook is invoked within a critical zone, no OS functions
|
||||
* should be invoked from here.
|
||||
* @note This macro can be used to activate a power saving mode.
|
||||
*/
|
||||
#define CH_CFG_IDLE_ENTER_HOOK() { \
|
||||
/* Idle-enter code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Idle thread leave hook.
|
||||
* @note This hook is invoked within a critical zone, no OS functions
|
||||
* should be invoked from here.
|
||||
* @note This macro can be used to deactivate a power saving mode.
|
||||
*/
|
||||
#define CH_CFG_IDLE_LEAVE_HOOK() { \
|
||||
/* Idle-leave code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Idle Loop hook.
|
||||
* @details This hook is continuously invoked by the idle thread loop.
|
||||
*/
|
||||
#define CH_CFG_IDLE_LOOP_HOOK() { \
|
||||
/* Idle loop code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief System tick event hook.
|
||||
* @details This hook is invoked in the system tick handler immediately
|
||||
* after processing the virtual timers queue.
|
||||
*/
|
||||
#define CH_CFG_SYSTEM_TICK_HOOK() { \
|
||||
/* System tick event code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief System halt hook.
|
||||
* @details This hook is invoked in case to a system halting error before
|
||||
* the system is halted.
|
||||
*/
|
||||
#define CH_CFG_SYSTEM_HALT_HOOK(reason) { \
|
||||
/* System halt code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Trace hook.
|
||||
* @details This hook is invoked each time a new record is written in the
|
||||
* trace buffer.
|
||||
*/
|
||||
#define CH_CFG_TRACE_HOOK(tep) { \
|
||||
/* Trace code here.*/ \
|
||||
}
|
||||
|
||||
/** @} */
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Port-specific settings (override port settings defaulted in chcore.h). */
|
||||
/*===========================================================================*/
|
||||
|
||||
#endif /* CHCONF_H */
|
||||
|
||||
/** @} */
|
||||
74
keyboards/handwired/ortho60/config.h
Normal file
74
keyboards/handwired/ortho60/config.h
Normal file
@@ -0,0 +1,74 @@
|
||||
/*
|
||||
Copyright 2015 Jun Wako <wakojun@gmail.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
/* USB Device descriptor parameter */
|
||||
#define VENDOR_ID 0xFEED
|
||||
#define PRODUCT_ID 0x6464
|
||||
#define DEVICE_VER 0x0001
|
||||
/* in python2: list(u"whatever".encode('utf-16-le')) */
|
||||
/* at most 32 characters or the ugly hack in usb_main.c borks */
|
||||
#define MANUFACTURER QMK
|
||||
#define PRODUCT Ortho60
|
||||
#define DESCRIPTION Ortho60
|
||||
|
||||
/* key matrix size */
|
||||
#define MATRIX_ROWS 5
|
||||
#define MATRIX_COLS 12
|
||||
|
||||
#define MATRIX_COL_PINS { B11, B10, B1, B0, A7, A6, A5, A4, A3, A2, A1, A0 }
|
||||
#define MATRIX_ROW_PINS { B3, B4, B5, B6, B7 }
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
#define BACKLIGHT_LEVELS 1
|
||||
|
||||
/* define if matrix has ghost */
|
||||
//#define MATRIX_HAS_GHOST
|
||||
|
||||
/* Set 0 if debouncing isn't needed */
|
||||
#define DEBOUNCE 5
|
||||
|
||||
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||
#define LOCKING_SUPPORT_ENABLE
|
||||
/* Locking resynchronize hack */
|
||||
#define LOCKING_RESYNC_ENABLE
|
||||
|
||||
/* key combination for command */
|
||||
#define IS_COMMAND() ( \
|
||||
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
|
||||
)
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Feature disable options
|
||||
* These options are also useful to firmware size reduction.
|
||||
*/
|
||||
|
||||
/* disable debug print */
|
||||
//#define NO_DEBUG
|
||||
|
||||
/* disable print */
|
||||
//#define NO_PRINT
|
||||
|
||||
/* disable action features */
|
||||
//#define NO_ACTION_LAYER
|
||||
//#define NO_ACTION_TAPPING
|
||||
//#define NO_ACTION_ONESHOT
|
||||
//#define NO_ACTION_MACRO
|
||||
//#define NO_ACTION_FUNCTION
|
||||
353
keyboards/handwired/ortho60/halconf.h
Normal file
353
keyboards/handwired/ortho60/halconf.h
Normal file
@@ -0,0 +1,353 @@
|
||||
/*
|
||||
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file templates/halconf.h
|
||||
* @brief HAL configuration header.
|
||||
* @details HAL configuration file, this file allows to enable or disable the
|
||||
* various device drivers from your application. You may also use
|
||||
* this file in order to override the device drivers default settings.
|
||||
*
|
||||
* @addtogroup HAL_CONF
|
||||
* @{
|
||||
*/
|
||||
|
||||
#ifndef _HALCONF_H_
|
||||
#define _HALCONF_H_
|
||||
|
||||
#include "mcuconf.h"
|
||||
|
||||
/**
|
||||
* @brief Enables the PAL subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_PAL) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_PAL TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the ADC subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_ADC) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_ADC FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the CAN subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_CAN) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_CAN FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the DAC subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_DAC) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_DAC FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the EXT subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_EXT) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_EXT FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the GPT subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_GPT) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_GPT FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the I2C subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_I2C FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the I2S subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_I2S) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_I2S FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the ICU subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_ICU) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_ICU FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the MAC subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_MAC) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_MAC FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the MMC_SPI subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_MMC_SPI) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_MMC_SPI FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the PWM subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_PWM) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_PWM FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the RTC subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_RTC) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_RTC FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the SDC subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_SDC) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_SDC FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the SERIAL subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_SERIAL) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_SERIAL FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the SERIAL over USB subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_SERIAL_USB) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_SERIAL_USB FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the SPI subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_SPI) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_SPI TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the UART subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_UART) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_UART FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the USB subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_USB) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_USB TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the WDG subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_WDG) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_WDG FALSE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* ADC driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Enables synchronous APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(ADC_USE_WAIT) || defined(__DOXYGEN__)
|
||||
#define ADC_USE_WAIT TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the @p adcAcquireBus() and @p adcReleaseBus() APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(ADC_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
|
||||
#define ADC_USE_MUTUAL_EXCLUSION TRUE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* CAN driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Sleep mode related APIs inclusion switch.
|
||||
*/
|
||||
#if !defined(CAN_USE_SLEEP_MODE) || defined(__DOXYGEN__)
|
||||
#define CAN_USE_SLEEP_MODE TRUE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* I2C driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Enables the mutual exclusion APIs on the I2C bus.
|
||||
*/
|
||||
#if !defined(I2C_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
|
||||
#define I2C_USE_MUTUAL_EXCLUSION TRUE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* MAC driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Enables an event sources for incoming packets.
|
||||
*/
|
||||
#if !defined(MAC_USE_ZERO_COPY) || defined(__DOXYGEN__)
|
||||
#define MAC_USE_ZERO_COPY FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables an event sources for incoming packets.
|
||||
*/
|
||||
#if !defined(MAC_USE_EVENTS) || defined(__DOXYGEN__)
|
||||
#define MAC_USE_EVENTS TRUE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* MMC_SPI driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Delays insertions.
|
||||
* @details If enabled this options inserts delays into the MMC waiting
|
||||
* routines releasing some extra CPU time for the threads with
|
||||
* lower priority, this may slow down the driver a bit however.
|
||||
* This option is recommended also if the SPI driver does not
|
||||
* use a DMA channel and heavily loads the CPU.
|
||||
*/
|
||||
#if !defined(MMC_NICE_WAITING) || defined(__DOXYGEN__)
|
||||
#define MMC_NICE_WAITING TRUE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* SDC driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Number of initialization attempts before rejecting the card.
|
||||
* @note Attempts are performed at 10mS intervals.
|
||||
*/
|
||||
#if !defined(SDC_INIT_RETRY) || defined(__DOXYGEN__)
|
||||
#define SDC_INIT_RETRY 100
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Include support for MMC cards.
|
||||
* @note MMC support is not yet implemented so this option must be kept
|
||||
* at @p FALSE.
|
||||
*/
|
||||
#if !defined(SDC_MMC_SUPPORT) || defined(__DOXYGEN__)
|
||||
#define SDC_MMC_SUPPORT FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Delays insertions.
|
||||
* @details If enabled this options inserts delays into the MMC waiting
|
||||
* routines releasing some extra CPU time for the threads with
|
||||
* lower priority, this may slow down the driver a bit however.
|
||||
*/
|
||||
#if !defined(SDC_NICE_WAITING) || defined(__DOXYGEN__)
|
||||
#define SDC_NICE_WAITING TRUE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* SERIAL driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Default bit rate.
|
||||
* @details Configuration parameter, this is the baud rate selected for the
|
||||
* default configuration.
|
||||
*/
|
||||
#if !defined(SERIAL_DEFAULT_BITRATE) || defined(__DOXYGEN__)
|
||||
#define SERIAL_DEFAULT_BITRATE 38400
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Serial buffers size.
|
||||
* @details Configuration parameter, you can change the depth of the queue
|
||||
* buffers depending on the requirements of your application.
|
||||
* @note The default is 64 bytes for both the transmission and receive
|
||||
* buffers.
|
||||
*/
|
||||
#if !defined(SERIAL_BUFFERS_SIZE) || defined(__DOXYGEN__)
|
||||
#define SERIAL_BUFFERS_SIZE 16
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* SERIAL_USB driver related setting. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Serial over USB buffers size.
|
||||
* @details Configuration parameter, the buffer size must be a multiple of
|
||||
* the USB data endpoint maximum packet size.
|
||||
* @note The default is 64 bytes for both the transmission and receive
|
||||
* buffers.
|
||||
*/
|
||||
#if !defined(SERIAL_USB_BUFFERS_SIZE) || defined(__DOXYGEN__)
|
||||
#define SERIAL_USB_BUFFERS_SIZE 1
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* SPI driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Enables synchronous APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(SPI_USE_WAIT) || defined(__DOXYGEN__)
|
||||
#define SPI_USE_WAIT TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the @p spiAcquireBus() and @p spiReleaseBus() APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(SPI_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
|
||||
#define SPI_USE_MUTUAL_EXCLUSION TRUE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* USB driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Enables synchronous APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(USB_USE_WAIT) || defined(__DOXYGEN__)
|
||||
#define USB_USE_WAIT TRUE
|
||||
#endif
|
||||
|
||||
#endif /* _HALCONF_H_ */
|
||||
|
||||
/** @} */
|
||||
80
keyboards/handwired/ortho60/hsv2rgb.c
Normal file
80
keyboards/handwired/ortho60/hsv2rgb.c
Normal file
@@ -0,0 +1,80 @@
|
||||
/* hsv2rgb.c
|
||||
* Integer only conversion functions between HSV and RGB
|
||||
*/
|
||||
|
||||
#include "hsv2rgb.h"
|
||||
|
||||
// TODO fix these buggy macros
|
||||
#define max(x,y) ((x>y) ? x:y)
|
||||
#define min(x,y) ((x>y) ? y:x)
|
||||
#define min3(x,y,z) (min(min(x,y),z))
|
||||
#define max3(x,y,z) (max(max(x,y),z))
|
||||
|
||||
|
||||
rgb_color hsv2rgb(hsv_color hsv)
|
||||
{
|
||||
// From : http://qscribble.blogspot.fr/2008/06/integer-conversion-from-hsl-to-rgb.html
|
||||
int h = hsv.h;
|
||||
int s = hsv.s;
|
||||
int v = hsv.v;
|
||||
rgb_color rgb = {0, 0, 0};
|
||||
|
||||
if (v == 0)
|
||||
return rgb;
|
||||
|
||||
// sextant = 0 .. 5
|
||||
int sextant = (h*6)/256;
|
||||
// f = 0 .. 42
|
||||
int f = h - (sextant*256)/6;
|
||||
|
||||
int p = (v * (256 - s))/256;
|
||||
int q = (v * (256*43 - s*f))/(256*43);
|
||||
int t = (v * (256*43 - s*(43-f)))/(256*43);
|
||||
|
||||
// Corrige les erreurs dues aux arrondis
|
||||
p = max(min(p, 255), 0);
|
||||
q = max(min(q, 255), 0);
|
||||
t = max(min(t, 255), 0);
|
||||
|
||||
switch(sextant){
|
||||
case 0: rgb.r = v; rgb.g = t; rgb.b = p; break;
|
||||
case 1: rgb.r = q; rgb.g = v; rgb.b = p; break;
|
||||
case 2: rgb.r = p; rgb.g = v; rgb.b = t; break;
|
||||
case 3: rgb.r = p; rgb.g = q; rgb.b = v; break;
|
||||
case 4: rgb.r = t; rgb.g = p; rgb.b = v; break;
|
||||
default:rgb.r = v; rgb.g = p; rgb.b = q; break;
|
||||
}
|
||||
return rgb;
|
||||
}
|
||||
|
||||
|
||||
hsv_color rgb2hsv(rgb_color rgb)
|
||||
{
|
||||
// From : http://www.ruinelli.ch/rgb-to-hsv
|
||||
hsv_color hsv = {0, 0, 0};
|
||||
int min, max, delta;
|
||||
|
||||
min = min3(rgb.r, rgb.g, rgb.b);
|
||||
max = max3(rgb.r, rgb.g, rgb.b);
|
||||
|
||||
if(max==0) {
|
||||
hsv.h = 0;
|
||||
hsv.s = 0;
|
||||
hsv.v = 0;
|
||||
return hsv;
|
||||
}
|
||||
|
||||
hsv.v = max;
|
||||
delta = max - min;
|
||||
|
||||
hsv.s = (delta)*255 / max;
|
||||
|
||||
if(rgb.r == max)
|
||||
hsv.h = (rgb.g - rgb.b)*42/delta; // between yellow & magenta
|
||||
else if(rgb.g == max)
|
||||
hsv.h = 120 + (rgb.b - rgb.r)*42/delta; // between cyan & yellow
|
||||
else
|
||||
hsv.h = 240 + (rgb.r - rgb.g)*42/delta; // between magenta & cyan
|
||||
|
||||
return hsv;
|
||||
}
|
||||
23
keyboards/handwired/ortho60/hsv2rgb.h
Normal file
23
keyboards/handwired/ortho60/hsv2rgb.h
Normal file
@@ -0,0 +1,23 @@
|
||||
/* hsv2rgb.h
|
||||
* Convert Hue Saturation Value to Red Green Blue
|
||||
*
|
||||
* Programme de convertion d'une information HSV en RGB
|
||||
*/
|
||||
#ifndef HSV2RGB_H
|
||||
#define HSV2RGB_H
|
||||
|
||||
typedef struct {
|
||||
unsigned char h;
|
||||
unsigned char s;
|
||||
unsigned char v;
|
||||
} hsv_color;
|
||||
|
||||
typedef struct {
|
||||
unsigned char r;
|
||||
unsigned char g;
|
||||
unsigned char b;
|
||||
} rgb_color;
|
||||
|
||||
rgb_color hsv2rgb(hsv_color hsv);
|
||||
|
||||
#endif
|
||||
73
keyboards/handwired/ortho60/info.json
Normal file
73
keyboards/handwired/ortho60/info.json
Normal file
@@ -0,0 +1,73 @@
|
||||
{
|
||||
"keyboard_name": "Ortho60",
|
||||
"url": "",
|
||||
"maintainer": "qmk",
|
||||
"width": 12,
|
||||
"height": 5,
|
||||
"layouts": {
|
||||
"LAYOUT_ortho_5x12": {
|
||||
"layout": [
|
||||
{"label":"`", "x":0, "y":0},
|
||||
{"label":"1", "x":1, "y":0},
|
||||
{"label":"2", "x":2, "y":0},
|
||||
{"label":"3", "x":3, "y":0},
|
||||
{"label":"4", "x":4, "y":0},
|
||||
{"label":"5", "x":5, "y":0},
|
||||
{"label":"6", "x":6, "y":0},
|
||||
{"label":"7", "x":7, "y":0},
|
||||
{"label":"8", "x":8, "y":0},
|
||||
{"label":"9", "x":9, "y":0},
|
||||
{"label":"0", "x":10, "y":0},
|
||||
{"label":"Backspace", "x":11, "y":0},
|
||||
{"label":"Tab", "x":0, "y":1},
|
||||
{"label":"Q", "x":1, "y":1},
|
||||
{"label":"W", "x":2, "y":1},
|
||||
{"label":"E", "x":3, "y":1},
|
||||
{"label":"R", "x":4, "y":1},
|
||||
{"label":"T", "x":5, "y":1},
|
||||
{"label":"Y", "x":6, "y":1},
|
||||
{"label":"U", "x":7, "y":1},
|
||||
{"label":"I", "x":8, "y":1},
|
||||
{"label":"O", "x":9, "y":1},
|
||||
{"label":"P", "x":10, "y":1},
|
||||
{"label":"Delete", "x":11, "y":1},
|
||||
{"label":"Esc", "x":0, "y":2},
|
||||
{"label":"A", "x":1, "y":2},
|
||||
{"label":"S", "x":2, "y":2},
|
||||
{"label":"D", "x":3, "y":2},
|
||||
{"label":"F", "x":4, "y":2},
|
||||
{"label":"G", "x":5, "y":2},
|
||||
{"label":"H", "x":6, "y":2},
|
||||
{"label":"J", "x":7, "y":2},
|
||||
{"label":"K", "x":8, "y":2},
|
||||
{"label":"L", "x":9, "y":2},
|
||||
{"label":";", "x":10, "y":2},
|
||||
{"label":"'", "x":11, "y":2},
|
||||
{"label":"Shift", "x":0, "y":3},
|
||||
{"label":"Z", "x":1, "y":3},
|
||||
{"label":"X", "x":2, "y":3},
|
||||
{"label":"C", "x":3, "y":3},
|
||||
{"label":"V", "x":4, "y":3},
|
||||
{"label":"B", "x":5, "y":3},
|
||||
{"label":"N", "x":6, "y":3},
|
||||
{"label":"M", "x":7, "y":3},
|
||||
{"label":",", "x":8, "y":3},
|
||||
{"label":".", "x":9, "y":3},
|
||||
{"label":"/", "x":10, "y":3},
|
||||
{"label":"Enter", "x":11, "y":3},
|
||||
{"label":"Fn", "x":0, "y":4},
|
||||
{"label":"Ctrl", "x":1, "y":4},
|
||||
{"label":"Alt", "x":2, "y":4},
|
||||
{"label":"Meta", "x":3, "y":4},
|
||||
{"label":"Lower", "x":4, "y":4},
|
||||
{"label":"Space", "x":5, "y":4},
|
||||
{"label":"Space", "x":6, "y":4},
|
||||
{"label":"Raise", "x":7, "y":4},
|
||||
{"label":"Left", "x":8, "y":4},
|
||||
{"label":"Down", "x":9, "y":4},
|
||||
{"label":"Right", "x":10, "y":4},
|
||||
{"label":"up", "x":11, "y":4}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
98
keyboards/handwired/ortho60/keymaps/default/keymap.c
Normal file
98
keyboards/handwired/ortho60/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,98 @@
|
||||
/*
|
||||
Copyright 2012,2013 Jun Wako <wakojun@gmail.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
extern keymap_config_t keymap_config;
|
||||
|
||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||
// entirely and just use numbers.
|
||||
#define _BASE 0
|
||||
#define _RAISE 1
|
||||
#define _LOWER 2
|
||||
|
||||
enum custom_keycodes {
|
||||
QWERTY = SAFE_RANGE,
|
||||
LOWER,
|
||||
RAISE
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/* Qwerty
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Tab | Q | W | E | R | T | Y | U | I | O | P | Del |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* | Esc | A | S | D | F | G | H | J | K | L | ; | " |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
* | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_BASE] = LAYOUT_ortho_5x12( \
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, \
|
||||
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, \
|
||||
BL_TOGG, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
|
||||
),
|
||||
/* Lower
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
* | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | Next | Vol- | Vol+ | Play |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_LOWER] = LAYOUT_ortho_5x12( \
|
||||
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \
|
||||
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \
|
||||
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
|
||||
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),KC_HOME, KC_END, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, 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 |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
* | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | Next | Vol- | Vol+ | Play |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_RAISE] = LAYOUT_ortho_5x12( \
|
||||
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_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \
|
||||
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
|
||||
)
|
||||
};
|
||||
105
keyboards/handwired/ortho60/ld/MKL26Z64.ld
Normal file
105
keyboards/handwired/ortho60/ld/MKL26Z64.ld
Normal file
@@ -0,0 +1,105 @@
|
||||
/*
|
||||
* Copyright (C) 2013-2016 Fabio Utzig, http://fabioutzig.com
|
||||
* (C) 2016 flabbergast <s3+flabbergast@sdfeu.org>
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining
|
||||
* a copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
/*
|
||||
* KL26Z64 memory setup.
|
||||
*/
|
||||
MEMORY
|
||||
{
|
||||
flash0 : org = 0x00000000, len = 0x100
|
||||
flash1 : org = 0x00000400, len = 0x10
|
||||
flash2 : org = 0x00000410, len = 62k - 0x410
|
||||
flash3 : org = 0x0000F800, len = 2k
|
||||
flash4 : org = 0x00000000, len = 0
|
||||
flash5 : org = 0x00000000, len = 0
|
||||
flash6 : org = 0x00000000, len = 0
|
||||
flash7 : org = 0x00000000, len = 0
|
||||
ram0 : org = 0x1FFFF800, len = 8k
|
||||
ram1 : org = 0x00000000, len = 0
|
||||
ram2 : org = 0x00000000, len = 0
|
||||
ram3 : org = 0x00000000, len = 0
|
||||
ram4 : org = 0x00000000, len = 0
|
||||
ram5 : org = 0x00000000, len = 0
|
||||
ram6 : org = 0x00000000, len = 0
|
||||
ram7 : org = 0x00000000, len = 0
|
||||
}
|
||||
|
||||
/* Flash region for the configuration bytes.*/
|
||||
SECTIONS
|
||||
{
|
||||
.cfmprotect : ALIGN(4) SUBALIGN(4)
|
||||
{
|
||||
KEEP(*(.cfmconfig))
|
||||
} > flash1
|
||||
}
|
||||
|
||||
/* For each data/text section two region are defined, a virtual region
|
||||
and a load region (_LMA suffix).*/
|
||||
|
||||
/* Flash region to be used for exception vectors.*/
|
||||
REGION_ALIAS("VECTORS_FLASH", flash0);
|
||||
REGION_ALIAS("VECTORS_FLASH_LMA", flash0);
|
||||
|
||||
/* Flash region to be used for constructors and destructors.*/
|
||||
REGION_ALIAS("XTORS_FLASH", flash2);
|
||||
REGION_ALIAS("XTORS_FLASH_LMA", flash2);
|
||||
|
||||
/* Flash region to be used for code text.*/
|
||||
REGION_ALIAS("TEXT_FLASH", flash2);
|
||||
REGION_ALIAS("TEXT_FLASH_LMA", flash2);
|
||||
|
||||
/* Flash region to be used for read only data.*/
|
||||
REGION_ALIAS("RODATA_FLASH", flash2);
|
||||
REGION_ALIAS("RODATA_FLASH_LMA", flash2);
|
||||
|
||||
/* Flash region to be used for various.*/
|
||||
REGION_ALIAS("VARIOUS_FLASH", flash2);
|
||||
REGION_ALIAS("VARIOUS_FLASH_LMA", flash2);
|
||||
|
||||
/* Flash region to be used for RAM(n) initialization data.*/
|
||||
REGION_ALIAS("RAM_INIT_FLASH_LMA", flash2);
|
||||
|
||||
/* RAM region to be used for Main stack. This stack accommodates the processing
|
||||
of all exceptions and interrupts.*/
|
||||
REGION_ALIAS("MAIN_STACK_RAM", ram0);
|
||||
|
||||
/* RAM region to be used for the process stack. This is the stack used by
|
||||
the main() function.*/
|
||||
REGION_ALIAS("PROCESS_STACK_RAM", ram0);
|
||||
|
||||
/* RAM region to be used for data segment.*/
|
||||
REGION_ALIAS("DATA_RAM", ram0);
|
||||
REGION_ALIAS("DATA_RAM_LMA", flash2);
|
||||
|
||||
/* RAM region to be used for BSS segment.*/
|
||||
REGION_ALIAS("BSS_RAM", ram0);
|
||||
|
||||
/* RAM region to be used for the default heap.*/
|
||||
REGION_ALIAS("HEAP_RAM", ram0);
|
||||
|
||||
__eeprom_workarea_start__ = ORIGIN(flash3);
|
||||
__eeprom_workarea_size__ = LENGTH(flash3);
|
||||
__eeprom_workarea_end__ = __eeprom_workarea_start__ + __eeprom_workarea_size__;
|
||||
|
||||
/* Generic rules inclusion.*/
|
||||
INCLUDE rules.ld
|
||||
@@ -0,0 +1,88 @@
|
||||
/*
|
||||
ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
/*
|
||||
* ST32F103xB memory setup for use with the maplemini bootloader.
|
||||
* You will have to
|
||||
* #define CORTEX_VTOR_INIT 0x5000
|
||||
* in your projects chconf.h
|
||||
*/
|
||||
MEMORY
|
||||
{
|
||||
flash0 : org = 0x08002000, len = 64k - 0x2000
|
||||
flash1 : org = 0x00000000, len = 0
|
||||
flash2 : org = 0x00000000, len = 0
|
||||
flash3 : org = 0x00000000, len = 0
|
||||
flash4 : org = 0x00000000, len = 0
|
||||
flash5 : org = 0x00000000, len = 0
|
||||
flash6 : org = 0x00000000, len = 0
|
||||
flash7 : org = 0x00000000, len = 0
|
||||
ram0 : org = 0x20000000, len = 20k
|
||||
ram1 : org = 0x00000000, len = 0
|
||||
ram2 : org = 0x00000000, len = 0
|
||||
ram3 : org = 0x00000000, len = 0
|
||||
ram4 : org = 0x00000000, len = 0
|
||||
ram5 : org = 0x00000000, len = 0
|
||||
ram6 : org = 0x00000000, len = 0
|
||||
ram7 : org = 0x00000000, len = 0
|
||||
}
|
||||
|
||||
/* For each data/text section two region are defined, a virtual region
|
||||
and a load region (_LMA suffix).*/
|
||||
|
||||
/* Flash region to be used for exception vectors.*/
|
||||
REGION_ALIAS("VECTORS_FLASH", flash0);
|
||||
REGION_ALIAS("VECTORS_FLASH_LMA", flash0);
|
||||
|
||||
/* Flash region to be used for constructors and destructors.*/
|
||||
REGION_ALIAS("XTORS_FLASH", flash0);
|
||||
REGION_ALIAS("XTORS_FLASH_LMA", flash0);
|
||||
|
||||
/* Flash region to be used for code text.*/
|
||||
REGION_ALIAS("TEXT_FLASH", flash0);
|
||||
REGION_ALIAS("TEXT_FLASH_LMA", flash0);
|
||||
|
||||
/* Flash region to be used for read only data.*/
|
||||
REGION_ALIAS("RODATA_FLASH", flash0);
|
||||
REGION_ALIAS("RODATA_FLASH_LMA", flash0);
|
||||
|
||||
/* Flash region to be used for various.*/
|
||||
REGION_ALIAS("VARIOUS_FLASH", flash0);
|
||||
REGION_ALIAS("VARIOUS_FLASH_LMA", flash0);
|
||||
|
||||
/* Flash region to be used for RAM(n) initialization data.*/
|
||||
REGION_ALIAS("RAM_INIT_FLASH_LMA", flash0);
|
||||
|
||||
/* RAM region to be used for Main stack. This stack accommodates the processing
|
||||
of all exceptions and interrupts.*/
|
||||
REGION_ALIAS("MAIN_STACK_RAM", ram0);
|
||||
|
||||
/* RAM region to be used for the process stack. This is the stack used by
|
||||
the main() function.*/
|
||||
REGION_ALIAS("PROCESS_STACK_RAM", ram0);
|
||||
|
||||
/* RAM region to be used for data segment.*/
|
||||
REGION_ALIAS("DATA_RAM", ram0);
|
||||
REGION_ALIAS("DATA_RAM_LMA", flash0);
|
||||
|
||||
/* RAM region to be used for BSS segment.*/
|
||||
REGION_ALIAS("BSS_RAM", ram0);
|
||||
|
||||
/* RAM region to be used for the default heap.*/
|
||||
REGION_ALIAS("HEAP_RAM", ram0);
|
||||
|
||||
/* Generic rules inclusion.*/
|
||||
INCLUDE rules.ld
|
||||
51
keyboards/handwired/ortho60/led.c
Normal file
51
keyboards/handwired/ortho60/led.c
Normal file
@@ -0,0 +1,51 @@
|
||||
/*
|
||||
Copyright 2012 Jun Wako <wakojun@gmail.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "hal.h"
|
||||
#include "backlight.h"
|
||||
#include "led.h"
|
||||
#include "printf.h"
|
||||
|
||||
void backlight_init_ports(void) {
|
||||
printf("backlight_init_ports()\n");
|
||||
#ifdef BACKLIGHT_ENABLE
|
||||
palSetPadMode(GPIOA, 8, PAL_MODE_OUTPUT_PUSHPULL);
|
||||
palSetPad(GPIOA, 8);
|
||||
#endif
|
||||
}
|
||||
|
||||
void backlight_set(uint8_t level) {
|
||||
printf("backlight_set(%d)\n", level);
|
||||
#ifdef BACKLIGHT_ENABLE
|
||||
if (level == 0) {
|
||||
// Turn backlight off
|
||||
palSetPad(GPIOA, 8);
|
||||
} else {
|
||||
// Turn backlight on
|
||||
palClearPad(GPIOA, 8);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void led_set(uint8_t usb_led)
|
||||
{
|
||||
if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
|
||||
palClearPad(GPIOC, 13);
|
||||
} else {
|
||||
palSetPad(GPIOC, 13);
|
||||
}
|
||||
}
|
||||
209
keyboards/handwired/ortho60/mcuconf.h
Normal file
209
keyboards/handwired/ortho60/mcuconf.h
Normal file
@@ -0,0 +1,209 @@
|
||||
/*
|
||||
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef _MCUCONF_H_
|
||||
#define _MCUCONF_H_
|
||||
|
||||
#define STM32F103_MCUCONF
|
||||
|
||||
/*
|
||||
* STM32F103 drivers configuration.
|
||||
* The following settings override the default settings present in
|
||||
* the various device driver implementation headers.
|
||||
* Note that the settings for each driver only have effect if the whole
|
||||
* driver is enabled in halconf.h.
|
||||
*
|
||||
* IRQ priorities:
|
||||
* 15...0 Lowest...Highest.
|
||||
*
|
||||
* DMA priorities:
|
||||
* 0...3 Lowest...Highest.
|
||||
*/
|
||||
|
||||
/*
|
||||
* HAL driver system settings.
|
||||
*/
|
||||
#define STM32_NO_INIT FALSE
|
||||
#define STM32_HSI_ENABLED TRUE
|
||||
#define STM32_LSI_ENABLED FALSE
|
||||
#define STM32_HSE_ENABLED TRUE
|
||||
#define STM32_LSE_ENABLED FALSE
|
||||
#define STM32_SW STM32_SW_PLL
|
||||
#define STM32_PLLSRC STM32_PLLSRC_HSE
|
||||
#define STM32_PLLXTPRE STM32_PLLXTPRE_DIV1
|
||||
#define STM32_PLLMUL_VALUE 9
|
||||
#define STM32_HPRE STM32_HPRE_DIV1
|
||||
#define STM32_PPRE1 STM32_PPRE1_DIV2
|
||||
#define STM32_PPRE2 STM32_PPRE2_DIV2
|
||||
#define STM32_ADCPRE STM32_ADCPRE_DIV4
|
||||
#define STM32_USB_CLOCK_REQUIRED TRUE
|
||||
#define STM32_USBPRE STM32_USBPRE_DIV1P5
|
||||
#define STM32_MCOSEL STM32_MCOSEL_NOCLOCK
|
||||
#define STM32_RTCSEL STM32_RTCSEL_HSEDIV
|
||||
#define STM32_PVD_ENABLE FALSE
|
||||
#define STM32_PLS STM32_PLS_LEV0
|
||||
|
||||
/*
|
||||
* ADC driver system settings.
|
||||
*/
|
||||
#define STM32_ADC_USE_ADC1 FALSE
|
||||
#define STM32_ADC_ADC1_DMA_PRIORITY 2
|
||||
#define STM32_ADC_ADC1_IRQ_PRIORITY 6
|
||||
|
||||
/*
|
||||
* CAN driver system settings.
|
||||
*/
|
||||
#define STM32_CAN_USE_CAN1 FALSE
|
||||
#define STM32_CAN_CAN1_IRQ_PRIORITY 11
|
||||
|
||||
/*
|
||||
* EXT driver system settings.
|
||||
*/
|
||||
#define STM32_EXT_EXTI0_IRQ_PRIORITY 6
|
||||
#define STM32_EXT_EXTI1_IRQ_PRIORITY 6
|
||||
#define STM32_EXT_EXTI2_IRQ_PRIORITY 6
|
||||
#define STM32_EXT_EXTI3_IRQ_PRIORITY 6
|
||||
#define STM32_EXT_EXTI4_IRQ_PRIORITY 6
|
||||
#define STM32_EXT_EXTI5_9_IRQ_PRIORITY 6
|
||||
#define STM32_EXT_EXTI10_15_IRQ_PRIORITY 6
|
||||
#define STM32_EXT_EXTI16_IRQ_PRIORITY 6
|
||||
#define STM32_EXT_EXTI17_IRQ_PRIORITY 6
|
||||
#define STM32_EXT_EXTI18_IRQ_PRIORITY 6
|
||||
#define STM32_EXT_EXTI19_IRQ_PRIORITY 6
|
||||
|
||||
/*
|
||||
* GPT driver system settings.
|
||||
*/
|
||||
#define STM32_GPT_USE_TIM1 FALSE
|
||||
#define STM32_GPT_USE_TIM2 FALSE
|
||||
#define STM32_GPT_USE_TIM3 FALSE
|
||||
#define STM32_GPT_USE_TIM4 FALSE
|
||||
#define STM32_GPT_USE_TIM5 FALSE
|
||||
#define STM32_GPT_USE_TIM8 FALSE
|
||||
#define STM32_GPT_TIM1_IRQ_PRIORITY 7
|
||||
#define STM32_GPT_TIM2_IRQ_PRIORITY 7
|
||||
#define STM32_GPT_TIM3_IRQ_PRIORITY 7
|
||||
#define STM32_GPT_TIM4_IRQ_PRIORITY 7
|
||||
#define STM32_GPT_TIM5_IRQ_PRIORITY 7
|
||||
#define STM32_GPT_TIM8_IRQ_PRIORITY 7
|
||||
|
||||
/*
|
||||
* I2C driver system settings.
|
||||
*/
|
||||
#define STM32_I2C_USE_I2C1 FALSE
|
||||
#define STM32_I2C_USE_I2C2 FALSE
|
||||
#define STM32_I2C_BUSY_TIMEOUT 50
|
||||
#define STM32_I2C_I2C1_IRQ_PRIORITY 5
|
||||
#define STM32_I2C_I2C2_IRQ_PRIORITY 5
|
||||
#define STM32_I2C_I2C1_DMA_PRIORITY 3
|
||||
#define STM32_I2C_I2C2_DMA_PRIORITY 3
|
||||
#define STM32_I2C_DMA_ERROR_HOOK(i2cp) osalSysHalt("DMA failure")
|
||||
|
||||
/*
|
||||
* ICU driver system settings.
|
||||
*/
|
||||
#define STM32_ICU_USE_TIM1 FALSE
|
||||
#define STM32_ICU_USE_TIM2 FALSE
|
||||
#define STM32_ICU_USE_TIM3 FALSE
|
||||
#define STM32_ICU_USE_TIM4 FALSE
|
||||
#define STM32_ICU_USE_TIM5 FALSE
|
||||
#define STM32_ICU_USE_TIM8 FALSE
|
||||
#define STM32_ICU_TIM1_IRQ_PRIORITY 7
|
||||
#define STM32_ICU_TIM2_IRQ_PRIORITY 7
|
||||
#define STM32_ICU_TIM3_IRQ_PRIORITY 7
|
||||
#define STM32_ICU_TIM4_IRQ_PRIORITY 7
|
||||
#define STM32_ICU_TIM5_IRQ_PRIORITY 7
|
||||
#define STM32_ICU_TIM8_IRQ_PRIORITY 7
|
||||
|
||||
/*
|
||||
* PWM driver system settings.
|
||||
*/
|
||||
#define STM32_PWM_USE_ADVANCED FALSE
|
||||
#define STM32_PWM_USE_TIM1 FALSE
|
||||
#define STM32_PWM_USE_TIM2 FALSE
|
||||
#define STM32_PWM_USE_TIM3 FALSE
|
||||
#define STM32_PWM_USE_TIM4 FALSE
|
||||
#define STM32_PWM_USE_TIM5 FALSE
|
||||
#define STM32_PWM_USE_TIM8 FALSE
|
||||
#define STM32_PWM_TIM1_IRQ_PRIORITY 7
|
||||
#define STM32_PWM_TIM2_IRQ_PRIORITY 7
|
||||
#define STM32_PWM_TIM3_IRQ_PRIORITY 7
|
||||
#define STM32_PWM_TIM4_IRQ_PRIORITY 7
|
||||
#define STM32_PWM_TIM5_IRQ_PRIORITY 7
|
||||
#define STM32_PWM_TIM8_IRQ_PRIORITY 7
|
||||
|
||||
/*
|
||||
* RTC driver system settings.
|
||||
*/
|
||||
#define STM32_RTC_IRQ_PRIORITY 15
|
||||
|
||||
/*
|
||||
* SERIAL driver system settings.
|
||||
*/
|
||||
#define STM32_SERIAL_USE_USART1 FALSE
|
||||
#define STM32_SERIAL_USE_USART2 FALSE
|
||||
#define STM32_SERIAL_USE_USART3 FALSE
|
||||
#define STM32_SERIAL_USE_UART4 FALSE
|
||||
#define STM32_SERIAL_USE_UART5 FALSE
|
||||
#define STM32_SERIAL_USART1_PRIORITY 12
|
||||
#define STM32_SERIAL_USART2_PRIORITY 12
|
||||
#define STM32_SERIAL_USART3_PRIORITY 12
|
||||
#define STM32_SERIAL_UART4_PRIORITY 12
|
||||
#define STM32_SERIAL_UART5_PRIORITY 12
|
||||
|
||||
/*
|
||||
* SPI driver system settings.
|
||||
*/
|
||||
#define STM32_SPI_USE_SPI1 FALSE
|
||||
#define STM32_SPI_USE_SPI2 TRUE
|
||||
#define STM32_SPI_USE_SPI3 FALSE
|
||||
#define STM32_SPI_SPI1_DMA_PRIORITY 1
|
||||
#define STM32_SPI_SPI2_DMA_PRIORITY 1
|
||||
#define STM32_SPI_SPI3_DMA_PRIORITY 1
|
||||
#define STM32_SPI_SPI1_IRQ_PRIORITY 10
|
||||
#define STM32_SPI_SPI2_IRQ_PRIORITY 10
|
||||
#define STM32_SPI_SPI3_IRQ_PRIORITY 10
|
||||
#define STM32_SPI_DMA_ERROR_HOOK(spip) osalSysHalt("DMA failure")
|
||||
|
||||
/*
|
||||
* ST driver system settings.
|
||||
*/
|
||||
#define STM32_ST_IRQ_PRIORITY 8
|
||||
#define STM32_ST_USE_TIMER 2
|
||||
|
||||
/*
|
||||
* UART driver system settings.
|
||||
*/
|
||||
#define STM32_UART_USE_USART1 FALSE
|
||||
#define STM32_UART_USE_USART2 FALSE
|
||||
#define STM32_UART_USE_USART3 FALSE
|
||||
#define STM32_UART_USART1_IRQ_PRIORITY 12
|
||||
#define STM32_UART_USART2_IRQ_PRIORITY 12
|
||||
#define STM32_UART_USART3_IRQ_PRIORITY 12
|
||||
#define STM32_UART_USART1_DMA_PRIORITY 0
|
||||
#define STM32_UART_USART2_DMA_PRIORITY 0
|
||||
#define STM32_UART_USART3_DMA_PRIORITY 0
|
||||
#define STM32_UART_DMA_ERROR_HOOK(uartp) osalSysHalt("DMA failure")
|
||||
|
||||
/*
|
||||
* USB driver system settings.
|
||||
*/
|
||||
#define STM32_USB_USE_USB1 TRUE
|
||||
#define STM32_USB_LOW_POWER_ON_SUSPEND FALSE
|
||||
#define STM32_USB_USB1_HP_IRQ_PRIORITY 13
|
||||
#define STM32_USB_USB1_LP_IRQ_PRIORITY 14
|
||||
|
||||
#endif /* _MCUCONF_H_ */
|
||||
32
keyboards/handwired/ortho60/ortho60.c
Normal file
32
keyboards/handwired/ortho60/ortho60.c
Normal file
@@ -0,0 +1,32 @@
|
||||
|
||||
#include "ortho60.h"
|
||||
|
||||
#include "ch.h"
|
||||
#include "hal.h"
|
||||
|
||||
#include "underglow.h"
|
||||
#include "print.h"
|
||||
#include "debug.h"
|
||||
#include "util.h"
|
||||
|
||||
/* generic STM32F103C8T6 board */
|
||||
#ifdef BOARD_GENERIC_STM32_F103
|
||||
#define LED_ON() do { palClearPad(GPIOC, 13) ;} while (0)
|
||||
#define LED_OFF() do { palSetPad(GPIOC, 13); } while (0)
|
||||
#define LED_TGL() do { palTogglePad(GPIOC, 13); } while (0)
|
||||
#endif
|
||||
|
||||
void matrix_init_kb(void){
|
||||
/* MOSI pin*/
|
||||
palSetPadMode(GPIOB, 15, PAL_MODE_STM32_ALTERNATE_PUSHPULL);
|
||||
|
||||
LED_ON();
|
||||
palSetPad(GPIOA, 8);
|
||||
wait_ms(500);
|
||||
palClearPad(GPIOA, 8);
|
||||
LED_OFF();
|
||||
|
||||
leds_init();
|
||||
|
||||
|
||||
}
|
||||
33
keyboards/handwired/ortho60/ortho60.h
Normal file
33
keyboards/handwired/ortho60/ortho60.h
Normal file
@@ -0,0 +1,33 @@
|
||||
#pragma once
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
#define LAYOUT_1x2uC( \
|
||||
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
|
||||
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
|
||||
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
|
||||
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, \
|
||||
k40, k41, k42, k43, k44, k45 , k47, k48, k49, k4a, k4b \
|
||||
) \
|
||||
{ \
|
||||
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
|
||||
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
|
||||
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
|
||||
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b }, \
|
||||
{ k40, k41, k42, k43, k44, k45, KC_NO, k47, k48, k49, k4a, k4b }, \
|
||||
}
|
||||
|
||||
#define LAYOUT_ortho_5x12( \
|
||||
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
|
||||
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
|
||||
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
|
||||
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, \
|
||||
k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b \
|
||||
) \
|
||||
{ \
|
||||
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
|
||||
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
|
||||
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
|
||||
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b }, \
|
||||
{ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b }, \
|
||||
}
|
||||
3
keyboards/handwired/ortho60/readme.md
Normal file
3
keyboards/handwired/ortho60/readme.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# Ortho 60
|
||||
|
||||
Blue Pill STM32F103C8T6 based 12x5 Ortholinear Board
|
||||
56
keyboards/handwired/ortho60/rules.mk
Normal file
56
keyboards/handwired/ortho60/rules.mk
Normal file
@@ -0,0 +1,56 @@
|
||||
# project specific files
|
||||
SRC = led.c \
|
||||
underglow.c \
|
||||
hsv2rgb.c
|
||||
|
||||
# GENERIC STM32F103C8T6 board - stm32duino bootloader
|
||||
OPT_DEFS = -DCORTEX_VTOR_INIT=0x2000
|
||||
MCU_LDSCRIPT = STM32F103x8_stm32duino_bootloader
|
||||
BOARD = GENERIC_STM32_F103
|
||||
|
||||
# OPT_DEFS =
|
||||
# MCU_LDSCRIPT = STM32F103x8
|
||||
# BOARD = GENERIC_STM32_F103
|
||||
|
||||
## chip/board settings
|
||||
# the next two should match the directories in
|
||||
# <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
|
||||
MCU_FAMILY = STM32
|
||||
MCU_SERIES = STM32F1xx
|
||||
# linker script to use
|
||||
# it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/
|
||||
# or <this_dir>/ld/
|
||||
# startup code to use
|
||||
# is should exist in <chibios>/os/common/ports/ARMCMx/compilers/GCC/mk/
|
||||
MCU_STARTUP = stm32f1xx
|
||||
# it should exist either in <chibios>/os/hal/boards/
|
||||
# or <this_dir>/boards
|
||||
# Cortex version
|
||||
# Teensy LC is cortex-m0; Teensy 3.x are cortex-m4
|
||||
MCU = cortex-m3
|
||||
# ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
|
||||
ARMV = 7
|
||||
# If you want to be able to jump to bootloader from firmware on STM32 MCUs,
|
||||
# set the correct BOOTLOADER_ADDRESS. Either set it here, or define it in
|
||||
# ./bootloader_defs.h or in ./boards/<FOO>/bootloader_defs.h (if you have
|
||||
# a custom board definition that you plan to reuse).
|
||||
# If you're not setting it here, leave it commented out.
|
||||
# It is chip dependent, the correct number can be looked up here (page 175):
|
||||
# http://www.st.com/web/en/resource/technical/document/application_note/CD00167594.pdf
|
||||
# This also requires a patch to chibios:
|
||||
# <tmk_dir>/tmk_core/tool/chibios/ch-bootloader-jump.patch
|
||||
#STM32_BOOTLOADER_ADDRESS = 0x1FFFC800
|
||||
|
||||
|
||||
#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = yes # Console for debug
|
||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||
SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
|
||||
NKRO_ENABLE = yes # USB Nkey Rollover
|
||||
BACKLIGHT_ENABLE = yes
|
||||
|
||||
LAYOUTS = ortho_5x12
|
||||
|
||||
DEFAULT_FOLDER = handwired/ortho60
|
||||
157
keyboards/handwired/ortho60/underglow.c
Normal file
157
keyboards/handwired/ortho60/underglow.c
Normal file
@@ -0,0 +1,157 @@
|
||||
#include "ch.h"
|
||||
#include "hal.h"
|
||||
|
||||
#include "hsv2rgb.h"
|
||||
#include "underglow.h"
|
||||
|
||||
#define BYTES_FOR_LED_BYTE 4
|
||||
#define NB_COLORS 3
|
||||
#define BYTES_FOR_LED BYTES_FOR_LED_BYTE*NB_COLORS
|
||||
#define DATA_SIZE BYTES_FOR_LED*NB_LEDS
|
||||
#define RESET_SIZE 200
|
||||
#define PREAMBLE_SIZE 4
|
||||
|
||||
// Define the spi your LEDs are plugged to here
|
||||
#define LEDS_SPI SPID2
|
||||
// Define the number of LEDs you wish to control in your LED strip
|
||||
#define NB_LEDS 8
|
||||
|
||||
#define LED_SPIRAL 1
|
||||
|
||||
static uint8_t txbuf[PREAMBLE_SIZE + DATA_SIZE + RESET_SIZE];
|
||||
static uint8_t get_protocol_eq(uint8_t data, int pos);
|
||||
|
||||
/*
|
||||
* This lib is meant to be used asynchronously, thus the colors contained in
|
||||
* the txbuf will be sent in loop, so that the colors are always the ones you
|
||||
* put in the table (the user thus have less to worry about)
|
||||
*
|
||||
* Since the data are sent via DMA, and the call to spiSend is a blocking one,
|
||||
* the processor ressources are not used to much, if you see your program being
|
||||
* too slow, simply add a:
|
||||
* chThdSleepMilliseconds(x);
|
||||
* after the spiSend, where you increment x untill you are satisfied with your
|
||||
* program speed, another trick may be to lower this thread priority : your call
|
||||
*/
|
||||
static THD_WORKING_AREA(LEDS_THREAD_WA, 128);
|
||||
static THD_FUNCTION(ledsThread, arg) {
|
||||
(void) arg;
|
||||
while(1){
|
||||
spiSend(&LEDS_SPI, PREAMBLE_SIZE + DATA_SIZE + RESET_SIZE, txbuf);
|
||||
}
|
||||
}
|
||||
|
||||
#if LED_SPIRAL
|
||||
/*
|
||||
* 'Led spiral' is a simple demo in which we put all the leds to the same
|
||||
* color, where this color does all the hsv circle in loop.
|
||||
* If you want to launch the thread that will chage the led colors to the
|
||||
* appropriate value, simply set LED_SPIRAL to 1.
|
||||
*/
|
||||
static THD_WORKING_AREA(HSVTRANS_WA, 128);
|
||||
static THD_FUNCTION(hsv_transThread, arg){
|
||||
(void) arg;
|
||||
hsv_color color = {0, 255, 127};
|
||||
while(1){
|
||||
color.h += 1;
|
||||
color.h %= 256;
|
||||
set_leds_color_hsv(color);
|
||||
chThdSleepMilliseconds(50);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
static const SPIConfig spicfg = {
|
||||
NULL,
|
||||
GPIOB,
|
||||
15,
|
||||
SPI_CR1_BR_1|SPI_CR1_BR_0 // baudrate : fpclk / 8 => 1tick is 0.32us
|
||||
};
|
||||
|
||||
/*
|
||||
* Function used to initialize the driver.
|
||||
*
|
||||
* Starts by shutting off all the LEDs.
|
||||
* Then gets access on the LED_SPI driver.
|
||||
* May eventually launch an animation on the LEDs (e.g. a thread setting the
|
||||
* txbuff values)
|
||||
*/
|
||||
void leds_init(void){
|
||||
for(int i = 0; i < RESET_SIZE; i++)
|
||||
txbuf[DATA_SIZE+i] = 0x00;
|
||||
for (int i=0; i<PREAMBLE_SIZE; i++)
|
||||
txbuf[i] = 0x00;
|
||||
spiAcquireBus(&LEDS_SPI); /* Acquire ownership of the bus. */
|
||||
spiStart(&LEDS_SPI, &spicfg); /* Setup transfer parameters. */
|
||||
spiSelect(&LEDS_SPI); /* Slave Select assertion. */
|
||||
chThdCreateStatic(LEDS_THREAD_WA, sizeof(LEDS_THREAD_WA),NORMALPRIO, ledsThread, NULL);
|
||||
#if LED_SPIRAL
|
||||
chThdCreateStatic(HSVTRANS_WA, sizeof(HSVTRANS_WA),
|
||||
NORMALPRIO, hsv_transThread, NULL);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
* As the trick here is to use the SPI to send a huge pattern of 0 and 1 to
|
||||
* the ws2812b protocol, we use this helper function to translate bytes into
|
||||
* 0s and 1s for the LED (with the appropriate timing).
|
||||
*/
|
||||
static uint8_t get_protocol_eq(uint8_t data, int pos){
|
||||
uint8_t eq = 0;
|
||||
if (data & (1 << (2*(3-pos))))
|
||||
eq = 0b1110;
|
||||
else
|
||||
eq = 0b1000;
|
||||
if (data & (2 << (2*(3-pos))))
|
||||
eq += 0b11100000;
|
||||
else
|
||||
eq += 0b10000000;
|
||||
return eq;
|
||||
}
|
||||
|
||||
/*
|
||||
* If you want to set a LED's color in the HSV color space, simply call this
|
||||
* function with a hsv_color containing the desired color and the index of the
|
||||
* led on the LED strip (starting from 0, the first one being the closest the
|
||||
* first plugged to the board)
|
||||
*
|
||||
* Only set the color of the LEDs through the functions given by this API
|
||||
* (unless you really know what you are doing)
|
||||
*/
|
||||
void set_led_color_hsv(hsv_color color, int pos){
|
||||
set_led_color_rgb(hsv2rgb(color), pos);
|
||||
}
|
||||
|
||||
/*
|
||||
* If you want to set a LED's color in the RGB color space, simply call this
|
||||
* function with a hsv_color containing the desired color and the index of the
|
||||
* led on the LED strip (starting from 0, the first one being the closest the
|
||||
* first plugged to the board)
|
||||
*
|
||||
* Only set the color of the LEDs through the functions given by this API
|
||||
* (unless you really know what you are doing)
|
||||
*/
|
||||
void set_led_color_rgb(rgb_color color, int pos){
|
||||
for(int j = 0; j < 4; j++)
|
||||
txbuf[PREAMBLE_SIZE + BYTES_FOR_LED*pos + j] = get_protocol_eq(color.g, j);
|
||||
for(int j = 0; j < 4; j++)
|
||||
txbuf[PREAMBLE_SIZE + BYTES_FOR_LED*pos + BYTES_FOR_LED_BYTE+j] = get_protocol_eq(color.r, j);
|
||||
for(int j = 0; j < 4; j++)
|
||||
txbuf[PREAMBLE_SIZE + BYTES_FOR_LED*pos + BYTES_FOR_LED_BYTE*2+j] = get_protocol_eq(color.b, j);
|
||||
}
|
||||
|
||||
/*
|
||||
* Same as the two above, but sets all the LEDs in the LED strip (HSV)
|
||||
*/
|
||||
void set_leds_color_hsv(hsv_color color){
|
||||
for(int i = 0; i < NB_LEDS; i++)
|
||||
set_led_color_hsv(color, i);
|
||||
}
|
||||
|
||||
/*
|
||||
* Same as the two above, but sets all the LEDs in the LED strip (RGB)
|
||||
*/
|
||||
void set_leds_color_rgb(rgb_color color){
|
||||
for(int i = 0; i < NB_LEDS; i++)
|
||||
set_led_color_rgb(color, i);
|
||||
}
|
||||
10
keyboards/handwired/ortho60/underglow.h
Normal file
10
keyboards/handwired/ortho60/underglow.h
Normal file
@@ -0,0 +1,10 @@
|
||||
#pragma once
|
||||
|
||||
#include "hsv2rgb.h"
|
||||
|
||||
void set_leds_color_hsv(hsv_color color);
|
||||
void set_leds_color_rgb(rgb_color color);
|
||||
void set_led_color_hsv(hsv_color color, int pos);
|
||||
void set_led_color_rgb(rgb_color color, int pos);
|
||||
|
||||
void leds_init(void);
|
||||
52
keyboards/helix/pico/keymaps/mtei/config.h
Normal file
52
keyboards/helix/pico/keymaps/mtei/config.h
Normal file
@@ -0,0 +1,52 @@
|
||||
/*
|
||||
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 AUDIO_ENABLE
|
||||
#define STARTUP_SONG SONG(STARTUP_SOUND)
|
||||
#define AUDIO_CLICKY
|
||||
#endif
|
||||
|
||||
#undef TAPPING_TERM
|
||||
#define TAPPING_TERM 300
|
||||
#define PERMISSIVE_HOLD
|
||||
/* when TAPPING_TERM >= 500 same effect PERMISSIVE_HOLD.
|
||||
see tmk_core/common/action_tapping.c */
|
||||
|
||||
// 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 */
|
||||
496
keyboards/helix/pico/keymaps/mtei/keymap.c
Normal file
496
keyboards/helix/pico/keymaps/mtei/keymap.c
Normal file
@@ -0,0 +1,496 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "bootloader.h"
|
||||
#ifdef PROTOCOL_LUFA
|
||||
#include "lufa.h"
|
||||
#include "split_util.h"
|
||||
#endif
|
||||
#ifdef AUDIO_ENABLE
|
||||
#include "audio.h"
|
||||
#endif
|
||||
#ifdef SSD1306OLED
|
||||
#include "ssd1306.h"
|
||||
#endif
|
||||
#ifdef CONSOLE_ENABLE
|
||||
#include <print.h>
|
||||
#endif
|
||||
|
||||
extern keymap_config_t keymap_config;
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
//Following line allows macro to read current RGB settings
|
||||
extern rgblight_config_t rgblight_config;
|
||||
#endif
|
||||
|
||||
extern uint8_t is_master;
|
||||
|
||||
// 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,
|
||||
_EUCALYN,
|
||||
_NUML,
|
||||
_NUMR,
|
||||
_LOWER,
|
||||
_RAISE,
|
||||
_ADJUST,
|
||||
};
|
||||
|
||||
enum custom_keycodes {
|
||||
QWERTY = SAFE_RANGE,
|
||||
COLEMAK,
|
||||
DVORAK,
|
||||
EUCALYN,
|
||||
NUML,
|
||||
NUMR,
|
||||
KC_xEISU,
|
||||
KC_xKANA,
|
||||
KC_ZERO2,
|
||||
RGBRST
|
||||
};
|
||||
|
||||
//Macros
|
||||
#define KC_LOWER MO(_LOWER)
|
||||
#define KC_NUML LT(_NUML,KC_SPC)
|
||||
#define KC_NUMR LT(_NUMR,KC_SPC)
|
||||
#define KC_RABS LT(_RAISE,KC_BSPC)
|
||||
#define KC_RAEN LT(_RAISE,KC_ENT)
|
||||
#define KC_____ _______
|
||||
#define KC_XXXX XXXXXXX
|
||||
#define KC_ADJ MO(_ADJUST)
|
||||
#define KC_LSMI LSFT(KC_MINS)
|
||||
#define KC_LSEQ LSFT(KC_EQL)
|
||||
#define KC_LSRB LSFT(KC_RBRC)
|
||||
#define KC_LSLB LSFT(KC_LBRC)
|
||||
#define KC_LSGR LSFT(KC_GRV)
|
||||
#define KC_LSQT LSFT(KC_QUOT)
|
||||
#define ___ _______
|
||||
#define KC_S0 LSFT(KC_0)
|
||||
#define KC_S1 LSFT(KC_1)
|
||||
#define KC_S2 LSFT(KC_2)
|
||||
#define KC_S3 LSFT(KC_3)
|
||||
#define KC_S4 LSFT(KC_4)
|
||||
#define KC_S5 LSFT(KC_5)
|
||||
#define KC_S6 LSFT(KC_6)
|
||||
#define KC_S7 LSFT(KC_7)
|
||||
#define KC_S8 LSFT(KC_8)
|
||||
#define KC_S9 LSFT(KC_9)
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/* Qwerty
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | ESC | Q | W | E | R | T | | Y | U | I | O | P | \ |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Ctrl | A | S | D | F | G | | H | J | K | L | ; | Ctrl |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Shift| Z | X | C | V | B | | N | M | , | . | / | Shift|
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* |Lower | Lower| Caps | Alt | GUI | Space| BS | Enter| Space| GUI | Alt | Menu |Lower |Lower |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_QWERTY] = LAYOUT_kc( \
|
||||
ESC, Q, W, E, R, T, Y, U, I, O, P, BSLS, \
|
||||
LCTL, A, S, D, F, G, H, J, K, L, SCLN, RCTL, \
|
||||
LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, RSFT, \
|
||||
LOWER,LOWER, CAPS, LALT, LGUI,NUML, RABS, RAEN,NUMR, RGUI, RALT, APP,LOWER, LOWER \
|
||||
),
|
||||
|
||||
/* Colemak
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | ESC | Q | W | F | P | G | | J | L | U | Y | ; | \ |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Ctrl | A | R | S | T | D | | H | N | E | I | O | Ctrl |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Shift| Z | X | C | V | B | | K | M | , | . | / | Shift|
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* |Lower | Lower| Caps | Alt | GUI | Space| BS | Enter| Space| GUI | Alt | Menu |Lower |Lower |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_COLEMAK] = LAYOUT_kc( \
|
||||
ESC, Q, W, F, P, G, J, L, U, Y, SCLN, BSLS, \
|
||||
LCTL, A, R, S, T, D, H, N, E, I, O, RCTL, \
|
||||
LSFT, Z, X, C, V, B, K, M, COMM, DOT, SLSH, RSFT, \
|
||||
LOWER,LOWER, CAPS, LALT, LGUI,NUML, RABS, RAEN,NUMR, RGUI, RALT, APP,LOWER, LOWER \
|
||||
),
|
||||
|
||||
/* Dvorak
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | ESC | ' | , | . | P | Y | | F | G | C | R | L | \ |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Ctrl | A | O | E | U | I | | D | H | T | N | S | Ctrl |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Shift| ; | Q | J | K | X | | B | M | W | V | Z | Shift|
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* |Lower | Lower| Caps | Alt | GUI | Space| BS | Enter| Space| GUI | Alt | Menu |Lower |Lower |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_DVORAK] = LAYOUT_kc( \
|
||||
ESC, QUOT, COMM, DOT, P, Y, F, G, C, R, L, BSLS, \
|
||||
LCTL, A, O, E, U, I, D, H, T, N, S, RCTL, \
|
||||
LSFT, SCLN, Q, J, K, X, B, M, W, V, Z, RSFT, \
|
||||
LOWER,LOWER, CAPS, LALT, LGUI,NUML, RABS, RAEN,NUMR, RGUI, RALT, APP,LOWER, LOWER \
|
||||
),
|
||||
|
||||
/* Eucalyn (http://eucalyn.hatenadiary.jp/entry/about-eucalyn-layout)
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | ESC | Q | W | , | . | ; | | M | R | D | Y | P | \ |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Ctrl | A | O | E | I | U | | G | T | K | S | N | Ctrl |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Shift| Z | X | C | V | F | | B | H | J | L | / | Shift|
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* |Lower | Lower| Caps | Alt | GUI | Space| BS | Enter| Space| GUI | Alt | Menu |Lower |Lower |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_EUCALYN] = LAYOUT_kc( \
|
||||
ESC, Q, W, COMM, DOT, SCLN, M, R, D, Y, P, BSLS, \
|
||||
LCTL, A, O, E, I, U, G, T, K, S, N, RCTL, \
|
||||
LSFT, Z, X, C, V, F, B, H, J, L, SLSH, RSFT, \
|
||||
LOWER,LOWER, CAPS, LALT, LGUI,NUML, RABS, RAEN,NUMR, RGUI, RALT, APP,LOWER, LOWER \
|
||||
),
|
||||
|
||||
/* Num
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | | ! | @ | # | $ | % | | ^ | & | * | ( | ) | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | F12 |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | | | | |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_NUML] = LAYOUT_kc( \
|
||||
____, S1, S2, S3, S4, S5, S6, S7, S8, S9, S0, ____, \
|
||||
____, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, F12, \
|
||||
____, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, \
|
||||
____, ____, ____, ____, ____, ____, ____, ____, SPC, ____, ____, ____, ____, ____ \
|
||||
),
|
||||
|
||||
[_NUMR] = LAYOUT_kc( \
|
||||
____, S1, S2, S3, S4, S5, S6, S7, S8, S9, S0, ____, \
|
||||
____, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, F12, \
|
||||
____, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, \
|
||||
____, ____, ____, ____, ____, SPC, ____, ____, ____, ____, ____, ____, ____, ____ \
|
||||
),
|
||||
|
||||
/* Lower
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | | |Pause | ScrLk| Ins | | | | Ins | ScrLk|Pause | | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | PgUp | | Up |Delete| Home | | Home |Delete| Up | | PgUp | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | PgDn | Left | Down | Right| End | | End | Left | Down | Right| PgDn | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | PrtSc| | | |Adjust|Adjust| | | | PrtSc| | |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_LOWER] = LAYOUT_kc( \
|
||||
XXXX, XXXX, PAUS, SLCK, INS, XXXX, XXXX, INS, SLCK, PAUS, XXXX, ____, \
|
||||
____, HOME, XXXX, UP, DEL, PGUP, PGUP, DEL, UP, XXXX, HOME, ____, \
|
||||
____, END, LEFT, DOWN, RGHT, PGDN, PGDN, LEFT, DOWN, RGHT, END, ____, \
|
||||
____, ____, PSCR, ____, ____, ____, ADJ, ADJ, ____, ____, ____, PSCR, ____, ____ \
|
||||
),
|
||||
|
||||
/* Raise
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | TAB | | | | _ | - | | = | + | | | | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | EISU | | | | { | [ | | ] | } | | | | KANA |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | | | | ~ | ` | | ' | " | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | | | | |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_RAISE] = LAYOUT_kc( \
|
||||
TAB, XXXX, XXXX, XXXX, LSMI, MINS, EQL, LSEQ, XXXX, XXXX, XXXX, XXXX, \
|
||||
xEISU, XXXX, XXXX, XXXX, LSLB, LBRC, RBRC, LSRB, XXXX, XXXX, XXXX, xKANA, \
|
||||
XXXX, XXXX, XXXX, XXXX, LSGR, GRV, QUOT, LSQT, XXXX, XXXX, XXXX, XXXX, \
|
||||
ADJ, ADJ, XXXX, ____, ____, XXXX, ____, ____, XXXX, ____, ____, XXXX, ADJ, ADJ \
|
||||
),
|
||||
|
||||
/* Adjust (Lower + Raise)
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | | Reset|RGBRST|RGB ON|Aud on| Win | | Win | |Qwerty|Euclyn|Colemk|Dvorak|
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | HUE+ | SAT+ | VAL+ |RGB md|Audoff| Mac | | Mac | | | | | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | HUE- | SAT- | VAL- | | | | | | | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | | | | |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_ADJUST] = LAYOUT( \
|
||||
XXXXXXX, RESET, RGBRST, RGB_TOG, AU_ON, AG_SWAP, AG_SWAP, XXXXXXX, QWERTY, EUCALYN, COLEMAK, DVORAK, \
|
||||
RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, AU_OFF, AG_NORM, AG_NORM, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
|
||||
RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
|
||||
_______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, ___,___, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______ \
|
||||
)
|
||||
};
|
||||
|
||||
#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);
|
||||
float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
|
||||
#endif
|
||||
|
||||
static int current_default_layer;
|
||||
|
||||
uint32_t default_layer_state_set_kb(uint32_t state) {
|
||||
// 1<<_QWERTY - 1 == 1 - 1 == _QWERTY (=0)
|
||||
// 1<<_COLEMAK - 1 == 2 - 1 == _COLEMAK (=1)
|
||||
current_default_layer = state - 1;
|
||||
// 1<<_DVORAK - 2 == 4 - 2 == _DVORAK (=2)
|
||||
if ( current_default_layer == 3 ) current_default_layer -= 1;
|
||||
// 1<<_EUCALYN - 5 == 8 - 5 == _EUCALYN (=3)
|
||||
if ( current_default_layer == 7 ) current_default_layer -= 4;
|
||||
return state;
|
||||
}
|
||||
|
||||
void update_base_layer(int base)
|
||||
{
|
||||
if( current_default_layer != base ) {
|
||||
eeconfig_update_default_layer(1UL<<base);
|
||||
default_layer_set(1UL<<base);
|
||||
}
|
||||
}
|
||||
|
||||
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
|
||||
update_base_layer(_QWERTY);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case COLEMAK:
|
||||
if (record->event.pressed) {
|
||||
#ifdef AUDIO_ENABLE
|
||||
PLAY_SONG(tone_colemak);
|
||||
#endif
|
||||
update_base_layer(_COLEMAK);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case DVORAK:
|
||||
if (record->event.pressed) {
|
||||
#ifdef AUDIO_ENABLE
|
||||
PLAY_SONG(tone_dvorak);
|
||||
#endif
|
||||
update_base_layer(_DVORAK);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case EUCALYN:
|
||||
if (record->event.pressed) {
|
||||
#ifdef AUDIO_ENABLE
|
||||
PLAY_SONG(tone_dvorak);
|
||||
#endif
|
||||
update_base_layer(_EUCALYN);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case KC_xEISU:
|
||||
if (record->event.pressed) {
|
||||
if(keymap_config.swap_lalt_lgui==false){
|
||||
register_code(KC_LANG2);
|
||||
}else{
|
||||
SEND_STRING(SS_LALT("`"));
|
||||
}
|
||||
} else {
|
||||
unregister_code(KC_LANG2);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case KC_xKANA:
|
||||
if (record->event.pressed) {
|
||||
if(keymap_config.swap_lalt_lgui==false){
|
||||
register_code(KC_LANG1);
|
||||
}else{
|
||||
SEND_STRING(SS_LALT("`"));
|
||||
}
|
||||
} else {
|
||||
unregister_code(KC_LANG1);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case RGBRST:
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
if (record->event.pressed) {
|
||||
eeconfig_update_rgblight_default();
|
||||
rgblight_enable();
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void matrix_init_user(void) {
|
||||
#ifdef AUDIO_ENABLE
|
||||
startup_user();
|
||||
#endif
|
||||
//SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h
|
||||
#ifdef SSD1306OLED
|
||||
iota_gfx_init(!has_usb()); // turns on the display
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
#ifdef AUDIO_ENABLE
|
||||
|
||||
void startup_user()
|
||||
{
|
||||
_delay_ms(50); // gets rid of tick
|
||||
}
|
||||
|
||||
void shutdown_user()
|
||||
{
|
||||
_delay_ms(150);
|
||||
stop_all_notes();
|
||||
}
|
||||
|
||||
void music_on_user(void)
|
||||
{
|
||||
music_scale_user();
|
||||
}
|
||||
|
||||
void music_scale_user(void)
|
||||
{
|
||||
PLAY_SONG(music_scale);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
|
||||
#ifdef SSD1306OLED
|
||||
|
||||
void matrix_scan_user(void) {
|
||||
iota_gfx_task(); // this is what updates the display continuously
|
||||
}
|
||||
|
||||
void matrix_update(struct CharacterMatrix *dest,
|
||||
const struct CharacterMatrix *source) {
|
||||
if (memcmp(dest->display, source->display, sizeof(dest->display))) {
|
||||
memcpy(dest->display, source->display, sizeof(dest->display));
|
||||
dest->dirty = true;
|
||||
}
|
||||
}
|
||||
|
||||
static void render_logo(struct CharacterMatrix *matrix) {
|
||||
|
||||
static char 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};
|
||||
matrix_write(matrix, logo);
|
||||
#if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_ANIMATIONS)
|
||||
char buf[30];
|
||||
if(rgblight_config.enable) {
|
||||
snprintf(buf, sizeof(buf), " LED %2d: %d,%d,%d ",
|
||||
rgblight_config.mode,
|
||||
rgblight_config.hue/RGBLIGHT_HUE_STEP,
|
||||
rgblight_config.sat/RGBLIGHT_SAT_STEP,
|
||||
rgblight_config.val/RGBLIGHT_VAL_STEP);
|
||||
matrix_write(matrix, buf);
|
||||
}
|
||||
#endif
|
||||
//matrix_write_P(&matrix, PSTR(" Split keyboard kit"));
|
||||
}
|
||||
|
||||
static const char Qwerty_name[] PROGMEM = " Qwerty";
|
||||
static const char Colemak_name[] PROGMEM = " Colemak";
|
||||
static const char Dvorak_name[] PROGMEM = " Dvorak";
|
||||
static const char Eucalyn_name[] PROGMEM = " Eucalyn";
|
||||
|
||||
static const char NumL_name[] PROGMEM = ":NumL";
|
||||
static const char NumR_name[] PROGMEM = ":NumR";
|
||||
static const char Lower_name[] PROGMEM = ":Func";
|
||||
static const char Raise_name[] PROGMEM = ":Extra";
|
||||
static const char Adjust_name[] PROGMEM = ":Adjust";
|
||||
|
||||
static const char *layer_names[] = {
|
||||
[_QWERTY] = Qwerty_name,
|
||||
[_COLEMAK] = Colemak_name,
|
||||
[_DVORAK] = Dvorak_name,
|
||||
[_EUCALYN] = Eucalyn_name,
|
||||
|
||||
[_NUML] = NumL_name,
|
||||
[_NUMR] = NumR_name,
|
||||
[_LOWER] = Lower_name,
|
||||
[_RAISE] = Raise_name,
|
||||
[_ADJUST] = Adjust_name
|
||||
};
|
||||
|
||||
void render_status(struct CharacterMatrix *matrix) {
|
||||
|
||||
// Render to mode icon
|
||||
static char logo[][2][3]={{{0x95,0x96,0},{0xb5,0xb6,0}},{{0x97,0x98,0},{0xb7,0xb8,0}}};
|
||||
if(keymap_config.swap_lalt_lgui==false){
|
||||
matrix_write(matrix, logo[0][0]);
|
||||
matrix_write_P(matrix, PSTR("\n"));
|
||||
matrix_write(matrix, logo[0][1]);
|
||||
}else{
|
||||
matrix_write(matrix, logo[1][0]);
|
||||
matrix_write_P(matrix, PSTR("\n"));
|
||||
matrix_write(matrix, logo[1][1]);
|
||||
}
|
||||
|
||||
// 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
|
||||
int name_num;
|
||||
uint32_t lstate;
|
||||
matrix_write_P(matrix, layer_names[current_default_layer]);
|
||||
matrix_write_P(matrix, PSTR("\n"));
|
||||
for( lstate = layer_state, name_num = 0;
|
||||
lstate && name_num < sizeof(layer_names)/sizeof(char *);
|
||||
lstate >>=1, name_num++ ) {
|
||||
if( (lstate & 1) != 0 ) {
|
||||
if( layer_names[name_num] ) {
|
||||
matrix_write_P(matrix, layer_names[name_num]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Host Keyboard LED Status
|
||||
char led[40];
|
||||
snprintf(led, sizeof(led), "\n%s %s %s",
|
||||
(host_keyboard_leds() & (1<<USB_LED_NUM_LOCK)) ? "NUMLOCK" : " ",
|
||||
(host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) ? "CAPS" : " ",
|
||||
(host_keyboard_leds() & (1<<USB_LED_SCROLL_LOCK)) ? "SCLK" : " ");
|
||||
matrix_write(matrix, led);
|
||||
}
|
||||
|
||||
|
||||
void iota_gfx_task_user(void) {
|
||||
struct CharacterMatrix matrix;
|
||||
|
||||
#if DEBUG_TO_SCREEN
|
||||
if (debug_enable) {
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
matrix_clear(&matrix);
|
||||
if(is_master){
|
||||
render_status(&matrix);
|
||||
}else{
|
||||
render_logo(&matrix);
|
||||
}
|
||||
matrix_update(&display, &matrix);
|
||||
}
|
||||
|
||||
#endif
|
||||
129
keyboards/helix/pico/keymaps/mtei/rules.mk
Normal file
129
keyboards/helix/pico/keymaps/mtei/rules.mk
Normal file
@@ -0,0 +1,129 @@
|
||||
|
||||
# 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
|
||||
#
|
||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||
MIDI_ENABLE = no # MIDI controls
|
||||
AUDIO_ENABLE = yes # Audio output on port B5
|
||||
UNICODE_ENABLE = no # Unicode
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
|
||||
SWAP_HANDS_ENABLE = no # Enable one-hand typing
|
||||
|
||||
define HELIX_CUSTOMISE_MSG
|
||||
$(info Helix customize)
|
||||
$(info - OLED_ENABLE=$(OLED_ENABLE))
|
||||
$(info - LED_BACK_ENABLE=$(LED_BACK_ENABLE))
|
||||
$(info - LED_UNDERGLOW_ENABLE=$(LED_UNDERGLOW_ENABLE))
|
||||
$(info - LED_ANIMATION=$(LED_ANIMATIONS))
|
||||
$(info - IOS_DEVICE_ENABLE=$(IOS_DEVICE_ENABLE))
|
||||
endef
|
||||
|
||||
# Helix keyboard customize
|
||||
# you can edit follows 6 Variables
|
||||
# jp: 以下の6つの変数を必要に応じて編集します。
|
||||
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)
|
||||
Link_Time_Optimization = no # if firmware size over limit, try this option
|
||||
|
||||
#### LED_BACK_ENABLE and LED_UNDERGLOW_ENABLE.
|
||||
#### Do not enable these with audio at the same time.
|
||||
|
||||
### Helix keyboard 'default' keymap: convenient command line option
|
||||
## make HELIX=<options> helix:defualt
|
||||
## option= oled | back | under | na | ios
|
||||
## ex.
|
||||
## make HELIX=oled helix:defualt
|
||||
## make HELIX=oled,back helix:defualt
|
||||
## make HELIX=oled,under helix:defualt
|
||||
## make HELIX=oled,back,na helix:defualt
|
||||
## make HELIX=oled,back,ios helix:defualt
|
||||
##
|
||||
ifneq ($(strip $(HELIX)),)
|
||||
ifeq ($(findstring oled,$(HELIX)), oled)
|
||||
OLED_ENABLE = yes
|
||||
endif
|
||||
ifeq ($(findstring back,$(HELIX)), back)
|
||||
LED_BACK_ENABLE = yes
|
||||
else ifeq ($(findstring under,$(HELIX)), under)
|
||||
LED_UNDERGLOW_ENABLE = yes
|
||||
endif
|
||||
ifeq ($(findstring na,$(HELIX)), na)
|
||||
LED_ANIMATIONS = no
|
||||
endif
|
||||
ifeq ($(findstring ios,$(HELIX)), ios)
|
||||
IOS_DEVICE_ENABLE = yes
|
||||
endif
|
||||
$(eval $(call HELIX_CUSTOMISE_MSG))
|
||||
$(info )
|
||||
endif
|
||||
|
||||
# Uncomment these for checking
|
||||
# jp: コンパイル時にカスタマイズの状態を表示したい時はコメントをはずします。
|
||||
# $(eval $(call HELIX_CUSTOMISE_MSG))
|
||||
# $(info )
|
||||
|
||||
ifeq ($(strip $(LED_BACK_ENABLE)), yes)
|
||||
RGBLIGHT_ENABLE = yes
|
||||
OPT_DEFS += -DRGBLED_BACK
|
||||
ifeq ($(strip $(LED_UNDERGLOW_ENABLE)), yes)
|
||||
$(eval $(call HELIX_CUSTOMISE_MSG))
|
||||
$(error LED_BACK_ENABLE and LED_UNDERGLOW_ENABLE both 'yes')
|
||||
endif
|
||||
else ifeq ($(strip $(LED_UNDERGLOW_ENABLE)), yes)
|
||||
RGBLIGHT_ENABLE = yes
|
||||
else
|
||||
RGBLIGHT_ENABLE = no
|
||||
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)
|
||||
OPT_DEFS += -DOLED_ENABLE
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(LOCAL_GLCDFONT)), yes)
|
||||
OPT_DEFS += -DLOCAL_GLCDFONT
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(AUDIO_ENABLE)),yes)
|
||||
ifeq ($(strip $(RGBLIGHT_ENABLE)),yes)
|
||||
Link_Time_Optimization = yes
|
||||
endif
|
||||
ifeq ($(strip $(OLED_ENABLE)),yes)
|
||||
Link_Time_Optimization = yes
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(Link_Time_Optimization)),yes)
|
||||
EXTRAFLAGS += -flto -DUSE_Link_Time_Optimization
|
||||
endif
|
||||
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||
|
||||
ifndef QUANTUM_DIR
|
||||
include ../../../../Makefile
|
||||
endif
|
||||
|
||||
# Uncomment these for debugging
|
||||
# $(info -- RGBLIGHT_ENABLE=$(RGBLIGHT_ENABLE))
|
||||
# $(info -- OPT_DEFS=$(OPT_DEFS))
|
||||
# $(info )
|
||||
@@ -62,4 +62,18 @@
|
||||
}
|
||||
#endif
|
||||
|
||||
#define LAYOUT_kc( \
|
||||
L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
|
||||
L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
|
||||
L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
|
||||
L30, L31, L32, L33, L34, L35, L36, R36, R30, R31, R32, R33, R34, R35 \
|
||||
) \
|
||||
LAYOUT( \
|
||||
KC_##L00, KC_##L01, KC_##L02, KC_##L03, KC_##L04, KC_##L05, KC_##R00, KC_##R01, KC_##R02, KC_##R03, KC_##R04, KC_##R05, \
|
||||
KC_##L10, KC_##L11, KC_##L12, KC_##L13, KC_##L14, KC_##L15, KC_##R10, KC_##R11, KC_##R12, KC_##R13, KC_##R14, KC_##R15, \
|
||||
KC_##L20, KC_##L21, KC_##L22, KC_##L23, KC_##L24, KC_##L25, KC_##R20, KC_##R21, KC_##R22, KC_##R23, KC_##R24, KC_##R25, \
|
||||
KC_##L30, KC_##L31, KC_##L32, KC_##L33, KC_##L34, KC_##L35, KC_##L36, KC_##R36, KC_##R30, KC_##R31, KC_##R32, KC_##R33, KC_##R34, KC_##R35 \
|
||||
)
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -47,22 +47,25 @@ enum custom_keycodes {
|
||||
DVORAK,
|
||||
EUCALYN,
|
||||
KEYPAD,
|
||||
EISU,
|
||||
KANA,
|
||||
ZERO2,
|
||||
KC_xEISU,
|
||||
KC_xKANA,
|
||||
KC_ZERO2,
|
||||
RGBRST
|
||||
};
|
||||
|
||||
enum macro_keycodes {
|
||||
KC_SAMPLEMACRO,
|
||||
};
|
||||
|
||||
|
||||
// Fillers to make layering more clear
|
||||
#define _______ KC_TRNS
|
||||
#define XXXXXXX KC_NO
|
||||
//Macros
|
||||
#define M_SAMPLE M(KC_SAMPLEMACRO)
|
||||
#define KC_LOWER MO(_LOWER)
|
||||
#define KC_RABS LT(_RAISE,KC_BSPC)
|
||||
#define KC_RAEN LT(_RAISE,KC_ENT)
|
||||
#define KC_FF12 LT(_PADFUNC,KC_F12)
|
||||
#define KC_____ _______
|
||||
#define KC_XXXX XXXXXXX
|
||||
#define KC_ADJ MO(_ADJUST)
|
||||
#define KC_LSMI LSFT(KC_MINS)
|
||||
#define KC_LSEQ LSFT(KC_EQL)
|
||||
#define KC_LSRB LSFT(KC_RBRC)
|
||||
#define KC_LSLB LSFT(KC_LBRC)
|
||||
#define ___ _______
|
||||
|
||||
#if HELIX_ROWS == 5
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
@@ -80,13 +83,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
* |Lower | Lower| Caps | Alt | GUI | Space| BS | Enter| Space| GUI | Alt | Menu |Lower |Lower |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_QWERTY] = LAYOUT( \
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, \
|
||||
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_RCTL, \
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_GRV, KC_QUOT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
|
||||
MO(_LOWER),MO(_LOWER), KC_CAPS, KC_LALT, KC_LGUI, KC_SPC, LT(_RAISE,KC_BSPC), \
|
||||
LT(_RAISE,KC_ENT), KC_SPC, KC_RGUI, KC_RALT, KC_APP,MO(_LOWER),MO(_LOWER) \
|
||||
[_QWERTY] = LAYOUT_kc( \
|
||||
ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, BSPC, \
|
||||
TAB, Q, W, E, R, T, Y, U, I, O, P, BSLS, \
|
||||
LCTL, A, S, D, F, G, H, J, K, L, SCLN, RCTL, \
|
||||
LSFT, Z, X, C, V, B, GRV, QUOT, N, M, COMM, DOT, SLSH, RSFT, \
|
||||
LOWER, LOWER, CAPS, LALT, LGUI, SPC, RABS, RAEN, SPC, RGUI, RALT, APP,LOWER, LOWER \
|
||||
),
|
||||
|
||||
/* Colemak
|
||||
@@ -102,13 +104,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
* |Lower | Lower| Caps | Alt | GUI | Space| BS | Enter| Space| GUI | Alt | Menu |Lower |Lower |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_COLEMAK] = LAYOUT( \
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
|
||||
KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS, \
|
||||
KC_LCTL, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_RCTL, \
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_GRV, KC_QUOT, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
|
||||
MO(_LOWER),MO(_LOWER), KC_CAPS, KC_LALT, KC_LGUI, KC_SPC, LT(_RAISE,KC_BSPC), \
|
||||
LT(_RAISE,KC_ENT), KC_SPC, KC_RGUI, KC_RALT, KC_APP,MO(_LOWER),MO(_LOWER) \
|
||||
[_COLEMAK] = LAYOUT_kc( \
|
||||
ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, BSPC, \
|
||||
TAB, Q, W, F, P, G, J, L, U, Y, SCLN, BSLS, \
|
||||
LCTL, A, R, S, T, D, H, N, E, I, O, RCTL, \
|
||||
LSFT, Z, X, C, V, B, GRV, QUOT, K, M, COMM, DOT, SLSH, RSFT, \
|
||||
LOWER, LOWER, CAPS, LALT, LGUI, SPC, RABS, RAEN, SPC, RGUI, RALT, APP,LOWER, LOWER \
|
||||
),
|
||||
|
||||
/* Dvorak
|
||||
@@ -124,13 +125,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
* |Lower | Lower| Caps | Alt | GUI | Space| BS | Enter| Space| GUI | Alt | Menu |Lower |Lower |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_DVORAK] = LAYOUT( \
|
||||
KC_ESC, 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_BSLS, \
|
||||
KC_LCTL, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_RCTL, \
|
||||
KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_GRV, KC_SLSH, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, \
|
||||
MO(_LOWER),MO(_LOWER), KC_CAPS, KC_LALT, KC_LGUI, KC_SPC, LT(_RAISE,KC_BSPC), \
|
||||
LT(_RAISE,KC_ENT), KC_SPC, KC_RGUI, KC_RALT, KC_APP,MO(_LOWER),MO(_LOWER) \
|
||||
[_DVORAK] = LAYOUT_kc( \
|
||||
ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, BSPC, \
|
||||
TAB, QUOT, COMM, DOT, P, Y, F, G, C, R, L, BSLS, \
|
||||
LCTL, A, O, E, U, I, D, H, T, N, S, RCTL, \
|
||||
LSFT, SCLN, Q, J, K, X, GRV, SLSH, B, M, W, V, Z, RSFT, \
|
||||
LOWER, LOWER, CAPS, LALT, LGUI, SPC, RABS, RAEN, SPC, RGUI, RALT, APP,LOWER, LOWER \
|
||||
),
|
||||
|
||||
/* Eucalyn (http://eucalyn.hatenadiary.jp/entry/about-eucalyn-layout)
|
||||
@@ -146,13 +146,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
* |Lower | Lower| Caps | Alt | GUI | Space| BS | Enter| Space| GUI | Alt | Menu |Lower |Lower |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_EUCALYN] = LAYOUT( \
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
|
||||
KC_TAB, KC_Q, KC_W, KC_COMM, KC_DOT, KC_SCLN, KC_M, KC_R, KC_D, KC_Y, KC_P, KC_BSLS, \
|
||||
KC_LCTL, KC_A, KC_O, KC_E, KC_I, KC_U, KC_G, KC_T, KC_K, KC_S, KC_N, KC_RCTL, \
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_F, KC_GRV, KC_QUOT, KC_B, KC_H, KC_J, KC_L, KC_SLSH, KC_RSFT, \
|
||||
MO(_LOWER),MO(_LOWER), KC_CAPS, KC_LALT, KC_LGUI, KC_SPC, LT(_RAISE,KC_BSPC), \
|
||||
LT(_RAISE,KC_ENT), KC_SPC, KC_RGUI, KC_RALT, KC_APP,MO(_LOWER),MO(_LOWER) \
|
||||
[_EUCALYN] = LAYOUT_kc( \
|
||||
ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, BSPC, \
|
||||
TAB, Q, W, COMM, DOT, SCLN, M, R, D, Y, P, BSLS, \
|
||||
LCTL, A, O, E, I, U, G, T, K, S, N, RCTL, \
|
||||
LSFT, Z, X, C, V, F, GRV, QUOT, B, H, J, L, SLSH, RSFT, \
|
||||
LOWER, LOWER, CAPS, LALT, LGUI, SPC, RABS, RAEN, SPC, RGUI, RALT, APP,LOWER, LOWER \
|
||||
),
|
||||
|
||||
/* Keypad
|
||||
@@ -168,13 +167,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
* | 0 | , | . | Enter| F5 | F10 | F12 | F12 | F5 | F10 | Enter| 0 | , | . |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_KEYPAD] = LAYOUT( \
|
||||
KC_TAB, KC_PSLS, KC_PAST, KC_DEL, KC_F1, KC_F6, KC_F1, KC_F6, KC_DEL, KC_TAB, KC_PSLS, KC_PAST, \
|
||||
KC_KP_7, KC_KP_8, KC_KP_9, KC_BSPC, KC_F2, KC_F7, KC_F2, KC_F7, KC_BSPC, KC_KP_7, KC_KP_8, KC_KP_9, \
|
||||
KC_KP_4, KC_KP_5, KC_KP_6, KC_PMNS, KC_F3, KC_F8, KC_F3, KC_F8, KC_PMNS, KC_KP_4, KC_KP_5, KC_KP_6, \
|
||||
KC_KP_1, KC_KP_2, KC_KP_3, KC_PPLS, KC_F4, KC_F9, KC_F11, KC_F11, KC_F4, KC_F9, KC_PPLS, KC_KP_1, KC_KP_2, KC_KP_3, \
|
||||
KC_KP_0, KC_COMM, KC_PDOT, KC_PENT, KC_F5, KC_F10, LT(_PADFUNC,KC_F12),
|
||||
LT(_PADFUNC,KC_F12),KC_F5, KC_F10, KC_PENT, KC_KP_0, KC_COMM, KC_PDOT \
|
||||
[_KEYPAD] = LAYOUT_kc( \
|
||||
TAB, PSLS, PAST, DEL, F1, F6, F1, F6, DEL, TAB, PSLS, PAST, \
|
||||
KP_7, KP_8, KP_9, BSPC, F2, F7, F2, F7, BSPC, KP_7, KP_8, KP_9, \
|
||||
KP_4, KP_5, KP_6, PMNS, F3, F8, F3, F8, PMNS, KP_4, KP_5, KP_6, \
|
||||
KP_1, KP_2, KP_3, PPLS, F4, F9, F11, F11, F4, F9, PPLS, KP_1, KP_2, KP_3, \
|
||||
KP_0, COMM, PDOT, PENT, F5, F10, FF12, FF12, F5, F10, PENT, KP_0, COMM, PDOT \
|
||||
),
|
||||
|
||||
/* AUX modifier key layer
|
||||
@@ -190,12 +188,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
* | | 00 | | | | | | | | | | | 00 | |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_KAUX] = LAYOUT( \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, ZERO2, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ZERO2, _______ \
|
||||
[_KAUX] = LAYOUT_kc( \
|
||||
____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \
|
||||
____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \
|
||||
____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \
|
||||
____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \
|
||||
____,ZERO2, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ZERO2,____ \
|
||||
),
|
||||
|
||||
/* Keypad function layer
|
||||
@@ -211,13 +209,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
* | | | | | | | | | | | | | | |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_PADFUNC] = LAYOUT( \
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, KC_PAUS, KC_SLCK, KC_PSCR, KC_PSCR, KC_SLCK, KC_PAUS, XXXXXXX, XXXXXXX, XXXXXXX, \
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_UP, KC_PGUP, KC_PGUP, KC_UP, KC_HOME, XXXXXXX, XXXXXXX, XXXXXXX, \
|
||||
XXXXXXX, KC_DEL, KC_INS, KC_LEFT, KC_DOWN, KC_RGHT, KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, KC_DEL, XXXXXXX, \
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, KC_END, XXXXXXX, KC_PGDN,MO(_ADJUST),
|
||||
MO(_ADJUST), KC_PGDN, XXXXXXX, KC_END, XXXXXXX, XXXXXXX, XXXXXXX, \
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \
|
||||
[_PADFUNC] = LAYOUT_kc( \
|
||||
XXXX, XXXX, XXXX, PAUS, SLCK, PSCR, PSCR, SLCK, PAUS, XXXX, XXXX, XXXX, \
|
||||
XXXX, XXXX, XXXX, HOME, UP, PGUP, PGUP, UP, HOME, XXXX, XXXX, XXXX, \
|
||||
XXXX, DEL, INS, LEFT, DOWN, RGHT, LEFT, DOWN, RGHT, INS, DEL, XXXX, \
|
||||
XXXX, XXXX, XXXX, END, XXXX, PGDN, ADJ, ADJ, PGDN, XXXX, END, XXXX, XXXX, XXXX, \
|
||||
XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, ____, ____, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX \
|
||||
),
|
||||
|
||||
/* Lower
|
||||
@@ -233,13 +230,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
* | | | PrtSc| | | | | | | | | PrtSc| | |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_LOWER] = LAYOUT( \
|
||||
XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, \
|
||||
XXXXXXX, XXXXXXX, KC_PAUS, KC_SLCK, KC_INS, XXXXXXX, XXXXXXX, KC_INS, KC_SLCK, KC_PAUS, XXXXXXX, KC_F12, \
|
||||
_______, KC_HOME, XXXXXXX, KC_UP, KC_DEL, KC_PGUP, KC_PGUP, KC_DEL, KC_UP, XXXXXXX, KC_HOME, _______, \
|
||||
_______, KC_END, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, XXXXXXX, XXXXXXX,KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, _______, \
|
||||
_______, _______, KC_PSCR, _______, _______, _______, MO(_ADJUST),
|
||||
MO(_ADJUST), _______, _______, _______, KC_PSCR, _______, _______ \
|
||||
[_LOWER] = LAYOUT_kc( \
|
||||
XXXX, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, \
|
||||
XXXX, XXXX, PAUS, SLCK, INS, XXXX, XXXX, INS, SLCK, PAUS, XXXX, F12, \
|
||||
____, HOME, XXXX, UP, DEL, PGUP, PGUP, DEL, UP, XXXX, HOME, ____, \
|
||||
____, END, LEFT, DOWN, RGHT, PGDN, XXXX, XXXX, PGDN, LEFT, DOWN, RGHT, END, ____, \
|
||||
____, ____, PSCR, ____, ____, ____, ADJ, ADJ, ____, ____, ____, PSCR, ____, ____ \
|
||||
),
|
||||
|
||||
/* Raise
|
||||
@@ -255,13 +251,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
* | | | | | | | | | | | | | | |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_RAISE] = LAYOUT( \
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, LSFT(KC_MINS), KC_MINS, KC_EQL, LSFT(KC_EQL), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
|
||||
_______, XXXXXXX, XXXXXXX, XXXXXXX, LSFT(KC_LBRC), KC_LBRC, KC_RBRC, LSFT(KC_RBRC), XXXXXXX, XXXXXXX, XXXXXXX, _______, \
|
||||
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, EISU, EISU, KANA, KANA, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______, \
|
||||
MO(_ADJUST),MO(_ADJUST),XXXXXXX, _______, _______, XXXXXXX, _______,
|
||||
_______, XXXXXXX, _______, _______, XXXXXXX,MO(_ADJUST),MO(_ADJUST) \
|
||||
[_RAISE] = LAYOUT_kc( \
|
||||
XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, \
|
||||
XXXX, XXXX, XXXX, XXXX, LSMI, MINS, EQL, LSEQ, XXXX, XXXX, XXXX, XXXX, \
|
||||
____, XXXX, XXXX, XXXX, LSLB, LBRC, RBRC, LSRB, XXXX, XXXX, XXXX, ____, \
|
||||
____, XXXX, XXXX, XXXX, XXXX,xEISU,xEISU, xKANA,xKANA,MNXT, VOLD, VOLU, MPLY, ____, \
|
||||
ADJ, ADJ, XXXX, ____, ____, XXXX, ____, ____, XXXX, ____, ____, XXXX, ADJ, ADJ \
|
||||
),
|
||||
|
||||
/* Adjust (Lower + Raise)
|
||||
@@ -278,11 +273,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_ADJUST] = LAYOUT( \
|
||||
XXXXXXX, KEYPAD, DVORAK, COLEMAK, EUCALYN, QWERTY, QWERTY, EUCALYN, COLEMAK, DVORAK, KEYPAD, XXXXXXX, \
|
||||
XXXXXXX, RESET, RGBRST, RGB_TOG, AU_ON, AG_SWAP, AG_SWAP, AU_ON, RGB_TOG, RGBRST, XXXXXXX, XXXXXXX, \
|
||||
RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, AU_OFF, AG_NORM, AG_NORM, AU_OFF, RGB_MOD, RGB_VAI, RGB_SAI, RGB_HUI, \
|
||||
RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_SAD, RGB_HUD, \
|
||||
_______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______ \
|
||||
XXXXXXX, KEYPAD, DVORAK, COLEMAK, EUCALYN, QWERTY, QWERTY, EUCALYN, COLEMAK, DVORAK, KEYPAD, XXXXXXX, \
|
||||
XXXXXXX, RESET, RGBRST, RGB_TOG, AU_ON, AG_SWAP, AG_SWAP, AU_ON, RGB_TOG, RGBRST, XXXXXXX, XXXXXXX, \
|
||||
RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, AU_OFF, AG_NORM, AG_NORM, AU_OFF, RGB_MOD, RGB_VAI, RGB_SAI, RGB_HUI, \
|
||||
RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, ___,___, XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_SAD, RGB_HUD, \
|
||||
_______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, ___,___, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______ \
|
||||
),
|
||||
|
||||
/* AUX modifier key layer
|
||||
@@ -298,13 +293,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
* | | | | | | BS | Enter| | | | | | | |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_AUX] = LAYOUT( \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, KC_BSPC, LT(_RAISE,KC_ENT), \
|
||||
_______, _______, _______, _______, _______, _______, _______ \
|
||||
[_AUX] = LAYOUT_kc( \
|
||||
____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \
|
||||
____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \
|
||||
____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \
|
||||
____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \
|
||||
____, ____, ____, ____, ____, BSPC, RAEN, ____, ____, ____, ____, ____, ____, ____ \
|
||||
)
|
||||
};
|
||||
|
||||
@@ -400,13 +394,13 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case ZERO2:
|
||||
case KC_ZERO2:
|
||||
if (record->event.pressed) {
|
||||
SEND_STRING("00");
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case EISU:
|
||||
case KC_xEISU:
|
||||
if (record->event.pressed) {
|
||||
if(keymap_config.swap_lalt_lgui==false){
|
||||
register_code(KC_LANG2);
|
||||
@@ -418,7 +412,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case KANA:
|
||||
case KC_xKANA:
|
||||
if (record->event.pressed) {
|
||||
if(keymap_config.swap_lalt_lgui==false){
|
||||
register_code(KC_LANG1);
|
||||
|
||||
43
keyboards/planck/keymaps/mattly/config.h
Normal file
43
keyboards/planck/keymaps/mattly/config.h
Normal file
@@ -0,0 +1,43 @@
|
||||
#pragma once
|
||||
|
||||
#ifdef AUDIO_ENABLE
|
||||
#define STARTUP_SONG SONG(PLANCK_SOUND)
|
||||
// #define STARTUP_SONG SONG(NO_SOUND)
|
||||
|
||||
#define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
|
||||
SONG(COLEMAK_SOUND), \
|
||||
SONG(DVORAK_SOUND) \
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* MIDI options
|
||||
*/
|
||||
|
||||
/* Prevent use of disabled MIDI features in the keymap */
|
||||
//#define MIDI_ENABLE_STRICT 1
|
||||
|
||||
/* enable basic MIDI features:
|
||||
- MIDI notes can be sent when in Music mode is on
|
||||
*/
|
||||
|
||||
#define MIDI_BASIC
|
||||
|
||||
/* enable advanced MIDI features:
|
||||
- MIDI notes can be added to the keymap
|
||||
- Octave shift and transpose
|
||||
- Virtual sustain, portamento, and modulation wheel
|
||||
- etc.
|
||||
*/
|
||||
//#define MIDI_ADVANCED
|
||||
|
||||
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
|
||||
//#define MIDI_TONE_KEYCODE_OCTAVES 2
|
||||
|
||||
// Most tactile encoders have detents every 4 stages
|
||||
#define ENCODER_RESOLUTION 4
|
||||
|
||||
#define IGNORE_MOD_TAP_INTERRUPT
|
||||
#define PERMISSIVE_HOLD
|
||||
#define TAPPING_TOGGLE 2
|
||||
#define TAPPING_TERM 200
|
||||
176
keyboards/planck/keymaps/mattly/keymap.c
Normal file
176
keyboards/planck/keymaps/mattly/keymap.c
Normal file
@@ -0,0 +1,176 @@
|
||||
/* Copyright 2015-2017 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/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "muse.h"
|
||||
|
||||
extern keymap_config_t keymap_config;
|
||||
|
||||
enum planck_layers {
|
||||
_QWERTY,
|
||||
_NUMBER,
|
||||
_SYMBOL,
|
||||
_FUNC,
|
||||
_ADJUST
|
||||
};
|
||||
|
||||
enum planck_keycodes {
|
||||
QWERTY = SAFE_RANGE
|
||||
};
|
||||
|
||||
#define SPC_SHF MT(MOD_LSFT, KC_SPC)
|
||||
|
||||
#define ENT_FUN LT(_FUNC, KC_ENT)
|
||||
#define ESC_FUN LT(_FUNC, KC_ESC)
|
||||
#define TAB_NUM LT(_NUMBER, KC_TAB)
|
||||
#define BSP_SYM LT(_SYMBOL, KC_BSPC)
|
||||
#define DEL_ADJ LT(_ADJUST, KC_DEL)
|
||||
|
||||
#define SYMLOCK TG(_SYMBOL)
|
||||
#define NUMLOCK TG(_NUMBER)
|
||||
|
||||
#define ONE_CTL OSM(MOD_LCTL)
|
||||
#define ONE_ALT OSM(MOD_LALT)
|
||||
#define ONE_GUI OSM(MOD_LGUI)
|
||||
#define ONE_HYP OSM(MOD_HYPR)
|
||||
#define ONE_MEH OSM(MOD_MEH)
|
||||
#define ONE_WRP OSM(MOD_LCTL | MOD_LALT | MOD_LGUI)
|
||||
|
||||
#define A_CTRL MT(MOD_LCTL, KC_A)
|
||||
#define S_ALT MT(MOD_LALT, KC_S)
|
||||
#define D_GUI MT(MOD_LGUI, KC_D)
|
||||
#define F_SHFT MT(MOD_LSFT, KC_F)
|
||||
#define G_NUM LT(_NUMBER, KC_G)
|
||||
#define H_NAV LT(_SYMBOL, KC_H)
|
||||
#define J_SHFT MT(MOD_RSFT, KC_J)
|
||||
#define K_GUI MT(MOD_RGUI, KC_K)
|
||||
#define L_ALT MT(MOD_RALT, KC_L)
|
||||
#define MINSCTL MT(MOD_RCTL, KC_MINS)
|
||||
#define SCL_CTL MT(MOD_RCTL, KC_SCLN)
|
||||
|
||||
#define BWORD LALT(KC_LEFT)
|
||||
#define FWORD LALT(KC_RIGHT)
|
||||
|
||||
#define NWIN LGUI(KC_GRV)
|
||||
#define PWIN LGUI(LSFT(KC_GRV))
|
||||
#define NTAB LGUI(LSFT(KC_RBRC))
|
||||
#define PTAB LGUI(LSFT(KC_LBRC))
|
||||
|
||||
#define XMSNCTL HYPR(KC_F14)
|
||||
#define XDSKTOP HYPR(KC_F15)
|
||||
#define XNXTSPC HYPR(KC_F16)
|
||||
#define XPRVSPC HYPR(KC_F17)
|
||||
#define XNOTIFY HYPR(KC_F18)
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/* Querty
|
||||
| # | q | w | e | r | t | y | u | i | o | p | - |
|
||||
| | | | | | | | | | | | |
|
||||
|------|------|------|------|------|------|------|------|------|------|------|------|
|
||||
| ( | a | s | d | f | g | h | j | k | l | ; | ' |
|
||||
| | CTRL | ALT | GUI | SHIFT| NUMBR| SYMBL| SHIFT| GUI | ALT | CTRL | |
|
||||
|------|------|------|------|------|------|------|------|------|------|------|------|
|
||||
| [ | z | x | c | v | b | n | m | , | . | / | > |
|
||||
| | | | | | | | | | | | |
|
||||
|------|------|------|------|------|------|------|------|------|------|------|------|
|
||||
| ctrl | alt | gui | Esc | Tab | space | Bksp | Del | hyper| meh | warp |
|
||||
| | | | FUNC |NUMBER| SHIFT |SYMBOL| | | | |
|
||||
*/
|
||||
[_QWERTY] = LAYOUT_planck_grid(
|
||||
KC_HASH, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_SCLN,
|
||||
KC_LPRN, A_CTRL, S_ALT, D_GUI, F_SHFT, G_NUM, H_NAV, J_SHFT, K_GUI, L_ALT, MINSCTL, KC_QUOT,
|
||||
KC_LBRC, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RABK,
|
||||
KC_CAPS, ONE_ALT, ONE_GUI, ESC_FUN, TAB_NUM, SPC_SHF, SPC_SHF, BSP_SYM, DEL_ADJ, ONE_HYP, ONE_MEH, ONE_WRP
|
||||
),
|
||||
|
||||
/* Symbol
|
||||
| | & | ` | ~ | [ | ] | < | > | + | | | | - |
|
||||
| | $ | % | = | ( | ) | | : | ! | @ | * | ' |
|
||||
| | | ^ | # | { | } | | " | | | \ | | |
|
||||
| | | | | LOCK | | .... | | | | |
|
||||
*/
|
||||
[_SYMBOL] = LAYOUT_planck_grid(
|
||||
_______, KC_AMPR, KC_GRV, KC_TILD, KC_LBRC, KC_RBRC, KC_LABK, KC_RABK, KC_PLUS, KC_ASTR, XXXXXXX, _______,
|
||||
_______, KC_DLR, KC_PERC, KC_EQL, KC_LPRN, KC_RPRN, KC_SCLN, KC_COLN, KC_EXLM, KC_AT, KC_ASTR, _______,
|
||||
_______, XXXXXXX, KC_CIRC, KC_HASH, KC_LCBR, KC_RCBR, KC_QUOT, KC_DQUO, KC_PIPE, KC_BSLS, XXXXXXX, _______,
|
||||
_______, _______, _______, _______, SYMLOCK, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
/* Number
|
||||
| | |<-word| up |word->| PgUp | . | 7 | 8 | 9 | + | * |
|
||||
| | Enter| left | down | right| PgDn | 0 | 4 | 5 | 6 | - | / |
|
||||
| | Bksp | Home | tab | End | Del | , | 1 | 2 | 3 | = | % |
|
||||
| | | | | .... | | LOCK | | : | $ | |
|
||||
*/
|
||||
[_NUMBER] = LAYOUT_planck_grid(
|
||||
XXXXXXX, _______, BWORD, KC_UP, FWORD, KC_PGUP, KC_DOT, KC_7, KC_8, KC_9, KC_PLUS, KC_ASTR,
|
||||
XXXXXXX, KC_ENT , KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_0, KC_4, KC_5, KC_6, KC_MINS, KC_SLSH,
|
||||
XXXXXXX, KC_BSPC, KC_HOME, KC_TAB, KC_END, KC_DEL, KC_COMM, KC_1, KC_2, KC_3, KC_EQL, KC_PERC,
|
||||
_______, _______, _______, _______, _______, _______, _______, NUMLOCK, _______, KC_COLN, KC_DLR, _______
|
||||
),
|
||||
/* Function
|
||||
* | | Mctl | Pspc | Nwin | Nspc | Desk | | F7 | F8 | F9 | F10 | F13 |
|
||||
* | | Nctr | Ptab | Pwin | Ntab | | | F4 | F5 | F6 | F11 | F14 |
|
||||
* | Mute | Vol- | Vol+ | Trk- | Trk+ | Play | | F1 | F2 | F3 | F12 | F15 |
|
||||
* | | | | | | | | | | | | |
|
||||
*/
|
||||
[_FUNC] = LAYOUT_planck_grid(
|
||||
XXXXXXX, XMSNCTL, XPRVSPC, NWIN, XNXTSPC, XDSKTOP, XXXXXXX, KC_F7, KC_F8, KC_F9, KC_F10, KC_F13,
|
||||
XXXXXXX, XNOTIFY, PTAB, PWIN, NTAB, XXXXXXX, XXXXXXX, KC_F4, KC_F5, KC_F6, KC_F11, KC_F14,
|
||||
KC_MUTE, KC_VOLD, KC_VOLU, KC_MRWD, KC_MFFD, KC_MPLY, XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F12, KC_F15,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
/* Adjust (Lower + Raise)
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | Reset| Debug| | | | | | | | | | |
|
||||
* | | | | | | | | | | | | |
|
||||
* | | | | | | | | | | | | |
|
||||
* | | | | | | | | | | | | |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_ADJUST] = LAYOUT_planck_grid(
|
||||
RESET, DEBUG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
)
|
||||
|
||||
|
||||
};
|
||||
|
||||
#ifdef AUDIO_ENABLE
|
||||
#endif
|
||||
|
||||
uint32_t layer_state_set_user(uint32_t state) {
|
||||
/* state = update_tri_layer_state(state, _SYMBOL, _NUMBER, _ADJUST); */
|
||||
return state;
|
||||
}
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case QWERTY:
|
||||
if (record->event.pressed) {
|
||||
print("mode just switched to qwerty and this is a huge string\n");
|
||||
set_single_persistent_default_layer(_QWERTY);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
28
keyboards/planck/keymaps/mattly/readme.md
Normal file
28
keyboards/planck/keymaps/mattly/readme.md
Normal file
@@ -0,0 +1,28 @@
|
||||
# Mattly's Planck layout
|
||||
|
||||
This planck layout is optimized for, in order:
|
||||
|
||||
- moving work from my pinkies to my thumbs
|
||||
- writing lisp/clojure code in my evil-mode based emacs setup
|
||||
- tapping out messages in chat applications such as slack
|
||||
- writing english in markdown files in said emacs
|
||||
- navigating mac applications
|
||||
- writing english in a web browser on a macintosh
|
||||
- writing other programming languages' code in said emacs
|
||||
- writing english in other contexts
|
||||
- literally anything else
|
||||
|
||||
## oddities:
|
||||
|
||||
You may notice that `enter` is on a layer. This is an experiment and I kind of
|
||||
like it so far, since many programs interpret that keystroke as a "commit"
|
||||
of some kind.
|
||||
|
||||
## works in progress
|
||||
|
||||
I'm trying to figure out how to make some things easier to do with the mouse or
|
||||
one-handed. Right now the combo of entering numbers and using a mouse with my
|
||||
right hand is kind of annoying. I want to be able to toggle layers on, but only
|
||||
from within that layer.
|
||||
|
||||

|
||||
2
keyboards/planck/keymaps/mattly/rules.mk
Normal file
2
keyboards/planck/keymaps/mattly/rules.mk
Normal file
@@ -0,0 +1,2 @@
|
||||
AUDIO_ENABLE = yes
|
||||
SRC += muse.c
|
||||
@@ -21,3 +21,7 @@
|
||||
#define PERMISSIVE_HOLD
|
||||
#define TAPPING_TERM 200
|
||||
#define TAPPING_TOGGLE 2
|
||||
|
||||
#define UNICODE_CYCLE_PERSIST false
|
||||
#define UNICODE_SELECTED_MODES UC_WINC, UC_LNX
|
||||
#define UNICODE_WINC_KEY KC_RGUI
|
||||
|
||||
@@ -23,10 +23,6 @@
|
||||
#define DIVIDE UC(0x00F7)
|
||||
#define MINUS UC(0x2212)
|
||||
|
||||
void eeconfig_init_user(void) {
|
||||
set_unicode_input_mode(UC_WINC);
|
||||
}
|
||||
|
||||
enum layers {
|
||||
L_BASE,
|
||||
L_FN,
|
||||
@@ -162,7 +158,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
|
||||
* │ │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│Num│Scr│Pau│
|
||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤
|
||||
* │ M4 │M2 │M↑ │M1 │M3 │M5 │ │ │ │Stp│Ply│Prv│Nxt│Clear│Ins│
|
||||
* │ M4 │M2 │M↑ │M1 │M3 │M5 │ │UCM│ │Stp│Ply│Prv│Nxt│Clear│Ins│
|
||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
|
||||
* │ │M← │M↓ │M→ │MW↑│ │ │ │ │ │ │ │ │Top│
|
||||
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
|
||||
@@ -173,7 +169,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
*/
|
||||
[L_FN] = LAYOUT_truefox( \
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, NUMPAD, KC_SLCK, KC_PAUS, \
|
||||
KC_BTN4, KC_BTN2, KC_MS_U, KC_BTN1, KC_BTN3, KC_BTN5, _______, _______, _______, KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, CLEAR, KC_INS, \
|
||||
KC_BTN4, KC_BTN2, KC_MS_U, KC_BTN1, KC_BTN3, KC_BTN5, _______, UC_MOD, _______, KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, CLEAR, KC_INS, \
|
||||
_______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_U, _______, _______, _______, _______, _______, _______, _______, _______, TOP, \
|
||||
_______, KC_ACL0, KC_ACL2, KC_WH_L, KC_WH_R, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_APP, KC_PGUP, BOTTOM, \
|
||||
_______, DESKTOP, DSKTP_L, KC_WH_D, DSKTP_R, _______, KC_HOME, KC_PGDN, KC_END \
|
||||
|
||||
115
keyboards/wilba_tech/wt8_a/config.h
Normal file
115
keyboards/wilba_tech/wt8_a/config.h
Normal file
@@ -0,0 +1,115 @@
|
||||
/* Copyright 2018 Jason Williams (Wilba)
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "config_common.h"
|
||||
|
||||
/* USB Device descriptor parameter */
|
||||
#define VENDOR_ID 0x6582 // wilba.tech
|
||||
#define PRODUCT_ID 0x008A // 8-A
|
||||
#define DEVICE_VER 0x0001
|
||||
#define MANUFACTURER wilba.tech
|
||||
#define PRODUCT wilba.tech WT8-A
|
||||
#define DESCRIPTION wilba.tech WT8-A
|
||||
|
||||
/* key matrix size */
|
||||
#define MATRIX_ROWS 1
|
||||
#define MATRIX_COLS 8
|
||||
|
||||
/*
|
||||
* 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 { E6 }
|
||||
#define MATRIX_COL_PINS { F4, F1, B2, B6, F6, F7, D5, B4 }
|
||||
#define UNUSED_PINS
|
||||
|
||||
/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
// #define BACKLIGHT_PIN B7
|
||||
// #define BACKLIGHT_BREATHING
|
||||
// #define BACKLIGHT_LEVELS 3
|
||||
|
||||
|
||||
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||
#define DEBOUNCING_DELAY 5
|
||||
|
||||
/* define if matrix has ghost (lacks anti-ghosting diodes) */
|
||||
//#define MATRIX_HAS_GHOST
|
||||
|
||||
/* number of backlight levels */
|
||||
|
||||
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||
#define LOCKING_SUPPORT_ENABLE
|
||||
/* Locking resynchronize hack */
|
||||
#define LOCKING_RESYNC_ENABLE
|
||||
|
||||
/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
|
||||
* This is userful for the Windows task manager shortcut (ctrl+shift+esc).
|
||||
*/
|
||||
// #define GRAVE_ESC_CTRL_OVERRIDE
|
||||
|
||||
/*
|
||||
* Force NKRO
|
||||
*
|
||||
* Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
|
||||
* state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
|
||||
* makefile for this to work.)
|
||||
*
|
||||
* If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
|
||||
* until the next keyboard reset.
|
||||
*
|
||||
* NKRO may prevent your keystrokes from being detected in the BIOS, but it is
|
||||
* fully operational during normal computer usage.
|
||||
*
|
||||
* For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
|
||||
* or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
|
||||
* bootmagic, NKRO mode will always be enabled until it is toggled again during a
|
||||
* power-up.
|
||||
*
|
||||
*/
|
||||
//#define FORCE_NKRO
|
||||
|
||||
// Does not use WT_MONO_BACKLIGHT
|
||||
// #define WT_MONO_BACKLIGHT
|
||||
|
||||
#define DYNAMIC_KEYMAP_LAYER_COUNT 4
|
||||
|
||||
// EEPROM usage
|
||||
|
||||
// TODO: refactor with new user EEPROM code (coming soon)
|
||||
#define EEPROM_MAGIC 0x451F
|
||||
#define EEPROM_MAGIC_ADDR 32
|
||||
// Bump this every time we change what we store
|
||||
// This will automatically reset the EEPROM with defaults
|
||||
// and avoid loading invalid data from the EEPROM
|
||||
#define EEPROM_VERSION 0x08
|
||||
#define EEPROM_VERSION_ADDR 34
|
||||
|
||||
// Dynamic keymap starts after EEPROM version
|
||||
#define DYNAMIC_KEYMAP_EEPROM_ADDR 35
|
||||
// Dynamic macro starts after dynamic keymaps (35+(4*1*8*2)) = (35+64)
|
||||
#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 99
|
||||
#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 925
|
||||
#define DYNAMIC_KEYMAP_MACRO_COUNT 16
|
||||
13
keyboards/wilba_tech/wt8_a/info.json
Normal file
13
keyboards/wilba_tech/wt8_a/info.json
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"keyboard_name": "wilba.tech WT8-A",
|
||||
"url": "https://wilba.tech",
|
||||
"maintainer": "Wilba",
|
||||
"bootloader": "atmel-dfu",
|
||||
"width": 4,
|
||||
"height": 2,
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [{"label":"x", "x":0, "y":0}, {"label":"x", "x":1, "y":0}, {"label":"x", "x":2, "y":0}, {"label":"x", "x":3, "y":0}, {"label":"x", "x":0, "y":1}, {"label":"x", "x":1, "y":1}, {"label":"x", "x":2, "y":1}, {"label":"x", "x":3, "y":1}]
|
||||
}
|
||||
}
|
||||
}
|
||||
16
keyboards/wilba_tech/wt8_a/keymaps/default/keymap.c
Normal file
16
keyboards/wilba_tech/wt8_a/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,16 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
LAYOUT(
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8 ),
|
||||
|
||||
LAYOUT(
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO),
|
||||
|
||||
LAYOUT(
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO),
|
||||
|
||||
LAYOUT(
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO) };
|
||||
|
||||
15
keyboards/wilba_tech/wt8_a/readme.md
Normal file
15
keyboards/wilba_tech/wt8_a/readme.md
Normal file
@@ -0,0 +1,15 @@
|
||||
# WILBA.TECH WT8-A
|
||||
|
||||

|
||||
|
||||
WT8-A is an 8-key macropad PCB, designed for the Singa Ocelot. [More info at wilba.tech](https://wilba.tech/)
|
||||
|
||||
Keyboard Maintainer: [Wilba6582](https://github.com/Wilba6582)
|
||||
Hardware Supported: WILBA.TECH WT8-A
|
||||
Hardware Availability: Singa Keyboards
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make wilba_tech/wt8_a:default
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
68
keyboards/wilba_tech/wt8_a/rules.mk
Normal file
68
keyboards/wilba_tech/wt8_a/rules.mk
Normal file
@@ -0,0 +1,68 @@
|
||||
# project specific files
|
||||
SRC = keyboards/wilba_tech/wt_main.c
|
||||
|
||||
# MCU name
|
||||
MCU = atmega32u4
|
||||
|
||||
# Processor frequency.
|
||||
# This will define a symbol, F_CPU, in all source code files equal to the
|
||||
# processor frequency in Hz. You can then use this symbol in your source code to
|
||||
# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
|
||||
# automatically to create a 32-bit value in your source code.
|
||||
#
|
||||
# This will be an integer division of F_USB below, as it is sourced by
|
||||
# F_USB after it has run through any CPU prescalers. Note that this value
|
||||
# does not *change* the processor frequency - it should merely be updated to
|
||||
# reflect the processor speed set externally so that the code can use accurate
|
||||
# software delays.
|
||||
F_CPU = 16000000
|
||||
|
||||
|
||||
#
|
||||
# LUFA specific
|
||||
#
|
||||
# Target architecture (see library "Board Types" documentation).
|
||||
ARCH = AVR8
|
||||
|
||||
# Input clock frequency.
|
||||
# This will define a symbol, F_USB, in all source code files equal to the
|
||||
# input clock frequency (before any prescaling is performed) in Hz. This value may
|
||||
# differ from F_CPU if prescaling is used on the latter, and is required as the
|
||||
# raw input clock is fed directly to the PLL sections of the AVR for high speed
|
||||
# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
|
||||
# at the end, this will be done automatically to create a 32-bit value in your
|
||||
# source code.
|
||||
#
|
||||
# If no clock division is performed on the input clock inside the AVR (via the
|
||||
# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
|
||||
F_USB = $(F_CPU)
|
||||
|
||||
# Interrupt driven control endpoint task(+60)
|
||||
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
|
||||
|
||||
|
||||
# Boot Section
|
||||
BOOTLOADER = atmel-dfu
|
||||
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
NKRO_ENABLE = yes # USB Nkey Rollover
|
||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
|
||||
MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
|
||||
UNICODE_ENABLE = no # Unicode
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
AUDIO_ENABLE = no # Audio output on port C6
|
||||
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||
|
||||
RAW_ENABLE = yes
|
||||
DYNAMIC_KEYMAP_ENABLE = yes
|
||||
17
keyboards/wilba_tech/wt8_a/wt8_a.c
Normal file
17
keyboards/wilba_tech/wt8_a/wt8_a.c
Normal file
@@ -0,0 +1,17 @@
|
||||
/* Copyright 2018 Jason Williams (Wilba)
|
||||
*
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
// Nothing to see here, move along... ;-)
|
||||
27
keyboards/wilba_tech/wt8_a/wt8_a.h
Normal file
27
keyboards/wilba_tech/wt8_a/wt8_a.h
Normal file
@@ -0,0 +1,27 @@
|
||||
/* Copyright 2018 Jason Williams (Wilba)
|
||||
*
|
||||
* 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"
|
||||
|
||||
#define ____ KC_NO
|
||||
|
||||
#define LAYOUT( \
|
||||
K00, K01, K02, K03, K04, K05, K06, K07 ) \
|
||||
{ \
|
||||
{K00, K01, K02, K03, K04, K05, K06, K07 }, \
|
||||
}
|
||||
@@ -35,25 +35,42 @@ uint16_t leader_time = 0;
|
||||
uint16_t leader_sequence[5] = {0, 0, 0, 0, 0};
|
||||
uint8_t leader_sequence_size = 0;
|
||||
|
||||
void qk_leader_start(void) {
|
||||
if (leading) { return; }
|
||||
leader_start();
|
||||
leading = true;
|
||||
leader_time = timer_read();
|
||||
leader_sequence_size = 0;
|
||||
leader_sequence[0] = 0;
|
||||
leader_sequence[1] = 0;
|
||||
leader_sequence[2] = 0;
|
||||
leader_sequence[3] = 0;
|
||||
leader_sequence[4] = 0;
|
||||
}
|
||||
|
||||
bool process_leader(uint16_t keycode, keyrecord_t *record) {
|
||||
// Leader key set-up
|
||||
if (record->event.pressed) {
|
||||
if (!leading && keycode == KC_LEAD) {
|
||||
leader_start();
|
||||
leading = true;
|
||||
leader_time = timer_read();
|
||||
leader_sequence_size = 0;
|
||||
leader_sequence[0] = 0;
|
||||
leader_sequence[1] = 0;
|
||||
leader_sequence[2] = 0;
|
||||
leader_sequence[3] = 0;
|
||||
leader_sequence[4] = 0;
|
||||
return false;
|
||||
}
|
||||
if (leading && timer_elapsed(leader_time) < LEADER_TIMEOUT) {
|
||||
leader_sequence[leader_sequence_size] = keycode;
|
||||
leader_sequence_size++;
|
||||
return false;
|
||||
if (leading) {
|
||||
if (timer_elapsed(leader_time) < LEADER_TIMEOUT) {
|
||||
#ifndef LEADER_KEY_STRICT_KEY_PROCESSING
|
||||
if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) {
|
||||
keycode = keycode & 0xFF;
|
||||
}
|
||||
#endif // LEADER_KEY_STRICT_KEY_PROCESSING
|
||||
leader_sequence[leader_sequence_size] = keycode;
|
||||
leader_sequence_size++;
|
||||
#ifdef LEADER_PER_KEY_TIMING
|
||||
leader_time = timer_read();
|
||||
#endif
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
if (keycode == KC_LEAD) {
|
||||
qk_leader_start();
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
||||
@@ -24,7 +24,7 @@ bool process_leader(uint16_t keycode, keyrecord_t *record);
|
||||
|
||||
void leader_start(void);
|
||||
void leader_end(void);
|
||||
|
||||
void qk_leader_start(void);
|
||||
|
||||
#define SEQ_ONE_KEY(key) if (leader_sequence[0] == (key) && leader_sequence[1] == 0 && leader_sequence[2] == 0 && leader_sequence[3] == 0 && leader_sequence[4] == 0)
|
||||
#define SEQ_TWO_KEYS(key1, key2) if (leader_sequence[0] == (key1) && leader_sequence[1] == (key2) && leader_sequence[2] == 0 && leader_sequence[3] == 0 && leader_sequence[4] == 0)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user