mirror of
https://github.com/qmk/qmk_firmware.git
synced 2025-08-29 03:47:49 +00:00
Compare commits
1 Commits
0.19.7
...
breakpoint
Author | SHA1 | Date | |
---|---|---|---|
![]() |
f3620b9ad0 |
3
.github/workflows/api.yml
vendored
3
.github/workflows/api.yml
vendored
@@ -1,8 +1,5 @@
|
||||
name: Update API Data
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
|
2
.github/workflows/auto_approve.yml
vendored
2
.github/workflows/auto_approve.yml
vendored
@@ -1,7 +1,5 @@
|
||||
name: Automatic Approve
|
||||
|
||||
permissions: {}
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: "*/5 * * * *"
|
||||
|
12
.github/workflows/auto_tag.yml
vendored
12
.github/workflows/auto_tag.yml
vendored
@@ -1,20 +1,16 @@
|
||||
name: Essential files modified
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
paths:
|
||||
- builddefs/**/*
|
||||
- drivers/**/*
|
||||
- platforms/**/*
|
||||
- quantum/**/*
|
||||
- tests/**/*
|
||||
- tmk_core/**/*
|
||||
- drivers/**/*
|
||||
- tests/**/*
|
||||
- util/**/*
|
||||
- platforms/**/*
|
||||
- Makefile
|
||||
- '*.mk'
|
||||
|
||||
@@ -31,7 +27,7 @@ jobs:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Bump version and push tag
|
||||
uses: anothrNick/github-tag-action@1.61.0
|
||||
uses: anothrNick/github-tag-action@1.52.0
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
DEFAULT_BUMP: 'patch'
|
||||
|
3
.github/workflows/cli.yml
vendored
3
.github/workflows/cli.yml
vendored
@@ -1,8 +1,5 @@
|
||||
name: CLI CI
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
|
3
.github/workflows/develop_update.yml
vendored
3
.github/workflows/develop_update.yml
vendored
@@ -1,8 +1,5 @@
|
||||
name: Update develop after master merge
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
|
3
.github/workflows/docs.yml
vendored
3
.github/workflows/docs.yml
vendored
@@ -1,8 +1,5 @@
|
||||
name: Generate Docs
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
|
3
.github/workflows/feature_branch_update.yml
vendored
3
.github/workflows/feature_branch_update.yml
vendored
@@ -1,8 +1,5 @@
|
||||
name: Update feature branches after develop merge
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
|
3
.github/workflows/format.yml
vendored
3
.github/workflows/format.yml
vendored
@@ -1,8 +1,5 @@
|
||||
name: PR Lint Format
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
|
3
.github/workflows/format_push.yml
vendored
3
.github/workflows/format_push.yml
vendored
@@ -1,8 +1,5 @@
|
||||
name: Lint Format
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
|
4
.github/workflows/labeler.yml
vendored
4
.github/workflows/labeler.yml
vendored
@@ -1,9 +1,5 @@
|
||||
name: "Pull Request Labeler"
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: write
|
||||
|
||||
on:
|
||||
pull_request_target:
|
||||
types: [opened, synchronize, reopened, ready_for_review, locked]
|
||||
|
3
.github/workflows/lint.yml
vendored
3
.github/workflows/lint.yml
vendored
@@ -1,8 +1,5 @@
|
||||
name: PR Lint keyboards
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
|
11
.github/workflows/stale.yml
vendored
11
.github/workflows/stale.yml
vendored
@@ -1,19 +1,18 @@
|
||||
name: 'Close stale issues and PRs'
|
||||
|
||||
permissions:
|
||||
issues: write
|
||||
pull-requests: write
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '30 1 * * *'
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
issues: write
|
||||
pull-requests: write
|
||||
|
||||
jobs:
|
||||
stale:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/stale@v7
|
||||
- uses: actions/stale@v6
|
||||
with:
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
|
3
.github/workflows/unit_test.yml
vendored
3
.github/workflows/unit_test.yml
vendored
@@ -1,8 +1,5 @@
|
||||
name: Unit Tests
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
|
@@ -491,21 +491,16 @@ check-size: build
|
||||
check-md5: build
|
||||
objs-size: build
|
||||
|
||||
ifneq ($(strip $(TOP_SYMBOLS)),)
|
||||
ifeq ($(strip $(TOP_SYMBOLS)),yes)
|
||||
NUM_TOP_SYMBOLS := 10
|
||||
else
|
||||
NUM_TOP_SYMBOLS := $(strip $(TOP_SYMBOLS))
|
||||
endif
|
||||
all: top-symbols
|
||||
check-size: top-symbols
|
||||
top-symbols: build
|
||||
echo "###########################################"
|
||||
echo "# Highest flash usage:"
|
||||
$(NM) -Crtd --size-sort $(BUILD_DIR)/$(TARGET).elf | grep -i ' [t] ' | head -n$(NUM_TOP_SYMBOLS) | sed -e 's#^0000000# #g' -e 's#^000000# #g' -e 's#^00000# #g' -e 's#^0000# #g' -e 's#^000# #g' -e 's#^00# #g' -e 's#^0# #g'
|
||||
$(NM) -Crtd --size-sort $(BUILD_DIR)/$(TARGET).elf | grep -i ' [t] ' | head -n10 | sed -e 's#^0000000# #g' -e 's#^000000# #g' -e 's#^00000# #g' -e 's#^0000# #g' -e 's#^000# #g' -e 's#^00# #g' -e 's#^0# #g'
|
||||
echo "###########################################"
|
||||
echo "# Highest RAM usage:"
|
||||
$(NM) -Crtd --size-sort $(BUILD_DIR)/$(TARGET).elf | grep -i ' [dbv] ' | head -n$(NUM_TOP_SYMBOLS) | sed -e 's#^0000000# #g' -e 's#^000000# #g' -e 's#^00000# #g' -e 's#^0000# #g' -e 's#^000# #g' -e 's#^00# #g' -e 's#^0# #g'
|
||||
$(NM) -Crtd --size-sort $(BUILD_DIR)/$(TARGET).elf | grep -i ' [dbv] ' | head -n10 | sed -e 's#^0000000# #g' -e 's#^000000# #g' -e 's#^00000# #g' -e 's#^0000# #g' -e 's#^000# #g' -e 's#^00# #g' -e 's#^0# #g'
|
||||
echo "###########################################"
|
||||
endif
|
||||
|
||||
|
@@ -230,7 +230,7 @@ else
|
||||
# Wear-leveling EEPROM implementation, backed by MCU flash
|
||||
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_WEAR_LEVELING
|
||||
SRC += eeprom_driver.c eeprom_wear_leveling.c
|
||||
WEAR_LEVELING_DRIVER ?= embedded_flash
|
||||
WEAR_LEVELING_DRIVER = embedded_flash
|
||||
else ifneq ($(filter $(MCU_SERIES),STM32L0xx STM32L1xx),)
|
||||
# True EEPROM on STM32L0xx, L1xx
|
||||
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_STM32_L0_L1
|
||||
@@ -239,7 +239,7 @@ else
|
||||
# Wear-leveling EEPROM implementation, backed by RP2040 flash
|
||||
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_WEAR_LEVELING
|
||||
SRC += eeprom_driver.c eeprom_wear_leveling.c
|
||||
WEAR_LEVELING_DRIVER ?= rp2040_flash
|
||||
WEAR_LEVELING_DRIVER = rp2040_flash
|
||||
else ifneq ($(filter $(MCU_SERIES),KL2x K20x),)
|
||||
# Teensy EEPROM implementations
|
||||
OPT_DEFS += -DEEPROM_KINETIS_FLEXRAM
|
||||
|
@@ -367,10 +367,6 @@ ifneq ($(findstring STM32F401, $(MCU)),)
|
||||
|
||||
# Bootloader address for STM32 DFU
|
||||
STM32_BOOTLOADER_ADDRESS ?= 0x1FFF0000
|
||||
|
||||
# Revert to legacy wear-leveling driver until ChibiOS's EFL driver is fixed with 128kB and 384kB variants.
|
||||
EEPROM_DRIVER ?= wear_leveling
|
||||
WEAR_LEVELING_DRIVER ?= legacy
|
||||
endif
|
||||
|
||||
ifneq ($(findstring STM32F405, $(MCU)),)
|
||||
|
@@ -13,32 +13,38 @@
|
||||
"elite_pi": {
|
||||
"processor": "RP2040",
|
||||
"bootloader": "rp2040",
|
||||
"board": "QMK_PM2040"
|
||||
"board": "QMK_PM2040",
|
||||
"pin_compatible": "promicro"
|
||||
},
|
||||
"proton_c": {
|
||||
"processor": "STM32F303",
|
||||
"bootloader": "stm32-dfu",
|
||||
"board": "QMK_PROTON_C"
|
||||
"board": "QMK_PROTON_C",
|
||||
"pin_compatible": "promicro"
|
||||
},
|
||||
"kb2040": {
|
||||
"processor": "RP2040",
|
||||
"bootloader": "rp2040",
|
||||
"board": "QMK_PM2040"
|
||||
"board": "QMK_PM2040",
|
||||
"pin_compatible": "promicro"
|
||||
},
|
||||
"promicro_rp2040": {
|
||||
"processor": "RP2040",
|
||||
"bootloader": "rp2040",
|
||||
"board": "QMK_PM2040"
|
||||
"board": "QMK_PM2040",
|
||||
"pin_compatible": "promicro"
|
||||
},
|
||||
"blok": {
|
||||
"processor": "RP2040",
|
||||
"bootloader": "rp2040",
|
||||
"board": "QMK_PM2040"
|
||||
"board": "QMK_PM2040",
|
||||
"pin_compatible": "promicro"
|
||||
},
|
||||
"bit_c_pro": {
|
||||
"processor": "RP2040",
|
||||
"bootloader": "rp2040",
|
||||
"board": "QMK_PM2040"
|
||||
"board": "QMK_PM2040",
|
||||
"pin_compatible": "promicro"
|
||||
},
|
||||
"bluepill": {
|
||||
"processor": "STM32F103",
|
||||
@@ -58,12 +64,14 @@
|
||||
"stemcell": {
|
||||
"processor": "STM32F411",
|
||||
"bootloader": "tinyuf2",
|
||||
"board": "STEMCELL"
|
||||
"board": "STEMCELL",
|
||||
"pin_compatible": "promicro"
|
||||
},
|
||||
"bonsai_c4": {
|
||||
"processor": "STM32F411",
|
||||
"bootloader": "stm32-dfu",
|
||||
"board": "BONSAI_C4"
|
||||
"board": "BONSAI_C4",
|
||||
"pin_compatible": "promicro"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -245,7 +245,6 @@
|
||||
"items": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": ["x", "y"],
|
||||
"properties": {
|
||||
"label": {
|
||||
"type": "string",
|
||||
|
@@ -29,12 +29,12 @@ The next Breaking Change is scheduled for February 26, 2023.
|
||||
### Important Dates
|
||||
|
||||
* 2022 Nov 26 - `develop` is tagged with a new release version. Each push to `master` is subsequently merged to `develop` by GitHub actions.
|
||||
* 2023 Jan 29 - `develop` closed to new PR's.
|
||||
* 2023 Jan 29 - Call for testers.
|
||||
* 2023 Feb 12 - Last day for merges -- after this point `develop` is locked for testing and accepts only bugfixes
|
||||
* 2023 Feb 19 - `develop` is locked, only critical bugfix PR's merged.
|
||||
* 2023 Feb 24 - `master` is locked, no PR's merged.
|
||||
* 2023 Feb 26 - Merge `develop` to `master`.
|
||||
* 2022 Jan 29 - `develop` closed to new PR's.
|
||||
* 2022 Jan 29 - Call for testers.
|
||||
* 2022 Feb 12 - Last day for merges -- after this point `develop` is locked for testing and accepts only bugfixes
|
||||
* 2022 Feb 19 - `develop` is locked, only critical bugfix PR's merged.
|
||||
* 2022 Feb 24 - `master` is locked, no PR's merged.
|
||||
* 2022 Feb 26 - Merge `develop` to `master`.
|
||||
* 2023 Feb 26 - `master` is unlocked. PR's can be merged again.
|
||||
|
||||
## What changes will be included?
|
||||
|
@@ -51,7 +51,7 @@ ChibiOS and ChibiOS-Contrib need to be updated in tandem -- the latter has a bra
|
||||
* `./util/chibios_conf_updater.sh`
|
||||
* Build everything
|
||||
* `cd $QMK_FIRMWARE`
|
||||
* `qmk mass-compile -j 4`
|
||||
* `qmk multibuild -j4`
|
||||
* Make sure there are no errors
|
||||
* Push to the repo
|
||||
* `git commit -am 'Update ChibiOS to 99.9.9'`
|
||||
|
@@ -55,7 +55,7 @@ const uint16_t PROGMEM sd_combo[] = {KC_S, KC_D, COMBO_END};
|
||||
combo_t key_combos[COMBO_COUNT] = {
|
||||
[AB_ESC] = COMBO(ab_combo, KC_ESC),
|
||||
[JK_TAB] = COMBO(jk_combo, KC_TAB),
|
||||
[QW_SFT] = COMBO(qw_combo, KC_LSFT),
|
||||
[QW_SFT] = COMBO(qw_combo, KC_LSFT)
|
||||
[SD_LAYER] = COMBO(sd_combo, MO(_LAYER)),
|
||||
};
|
||||
```
|
||||
|
@@ -67,8 +67,6 @@ Additionally, if one side does not have an encoder, you can specify `{}` for the
|
||||
#define ENCODER_RESOLUTIONS_RIGHT { 4 }
|
||||
```
|
||||
|
||||
!> Keep in mind that whenver you change the encoder resolution, you will need to reflash the half that has the encoder affected by the change.
|
||||
|
||||
## Encoder map :id=encoder-map
|
||||
|
||||
Encoder mapping may be added to your `keymap.c`, which replicates the normal keyswitch layer handling functionality, but with encoders. Add this to your keymap's `rules.mk`:
|
||||
|
@@ -192,7 +192,7 @@ Set the state of a button, and flush the report.
|
||||
|
||||
---
|
||||
|
||||
### `void unregister_joystick_button(uint8_t button)` :id=api-unregister-joystick-button
|
||||
### `void register_joystick_button(uint8_t button)` :id=api-unregister-joystick-button
|
||||
|
||||
Reset the state of a button, and flush the report.
|
||||
|
||||
|
@@ -82,7 +82,7 @@ Where `<driver name>` is the applicable LED driver chip as below
|
||||
| Driver Name | Data Sheet | Capability |
|
||||
|-------------|------------|------------|
|
||||
| `IS31FL3742A` | [datasheet](https://www.lumissil.com/assets/pdf/core/IS31FL3742A_DS.pdf) | 180 LED, 30x6 Matrix |
|
||||
| `IS31FL3743A` | [datasheet](https://www.lumissil.com/assets/pdf/core/IS31FL3743A_DS.pdf) | 198 LED, 18x11 Matrix |
|
||||
| `ISSIFL3743A` | [datasheet](https://www.lumissil.com/assets/pdf/core/IS31FL3743A_DS.pdf) | 198 LED, 18x11 Matrix |
|
||||
| `IS31FL3745` | [datasheet](https://www.lumissil.com/assets/pdf/core/IS31FL3745_DS.pdf) | 144 LED, 18x8 Matrix |
|
||||
| `IS31FL3746A` | [datasheet](https://www.lumissil.com/assets/pdf/core/IS31FL3746A_DS.pdf) | 72 LED, 18x4 Matrix |
|
||||
|
||||
|
@@ -80,11 +80,6 @@ static void render_logo(void) {
|
||||
|
||||
oled_write_P(qmk_logo, false);
|
||||
}
|
||||
|
||||
bool oled_task_user(void) {
|
||||
render_logo();
|
||||
return false;
|
||||
}
|
||||
```
|
||||
|
||||
?> The default font file is located at `drivers/oled/glcdfont.c` and its location can be overwritten with the `OLED_FONT_H` configuration option. Font file content can be edited with external tools such as [Helix Font Editor](https://helixfonteditor.netlify.app/) and [Logo Editor](https://joric.github.io/qle/).
|
||||
|
@@ -252,7 +252,7 @@ Where `<driver name>` is the applicable LED driver chip as below
|
||||
| Driver Name | Data Sheet | Capability |
|
||||
|-------------|------------|------------|
|
||||
| `IS31FL3742A` | [datasheet](https://www.lumissil.com/assets/pdf/core/IS31FL3742A_DS.pdf) | 60 RGB, 30x6 Matrix |
|
||||
| `IS31FL3743A` | [datasheet](https://www.lumissil.com/assets/pdf/core/IS31FL3743A_DS.pdf) | 66 RGB, 18x11 Matrix |
|
||||
| `ISSIFL3743A` | [datasheet](https://www.lumissil.com/assets/pdf/core/IS31FL3743A_DS.pdf) | 66 RGB, 18x11 Matrix |
|
||||
| `IS31FL3745` | [datasheet](https://www.lumissil.com/assets/pdf/core/IS31FL3745_DS.pdf) | 48 RGB, 18x8 Matrix |
|
||||
| `IS31FL3746A` | [datasheet](https://www.lumissil.com/assets/pdf/core/IS31FL3746A_DS.pdf) | 24 RGB, 18x4 Matrix |
|
||||
|
||||
|
@@ -165,7 +165,7 @@ The following options are used to tweak the various animations:
|
||||
|`RGBLIGHT_EFFECT_TWINKLE_PROBABILITY`|`1/127` |Adjusts how likely each LED is to twinkle (on each animation step) |
|
||||
|
||||
### Example Usage to Reduce Memory Footprint
|
||||
1. Use `#undef` to selectively disable animations. The following would disable two animations and save about 4KiB:
|
||||
1. Selectively disable the animations you want to enable. The following would enable two animations and save about 4KiB:
|
||||
|
||||
```diff
|
||||
#undef RGBLED_NUM
|
||||
|
@@ -356,6 +356,8 @@ qk_tap_dance_action_t tap_dance_actions[] = {
|
||||
|
||||
And then simply use `TD(X_CTL)` anywhere in your keymap.
|
||||
|
||||
If you want to implement this in your userspace, then you may want to check out how [DanielGGordon](https://github.com/qmk/qmk_firmware/tree/master/users/gordon) has implemented this in their userspace.
|
||||
|
||||
> In this configuration "hold" takes place **after** tap dance timeout. To achieve instant hold, remove `state->interrupted` checks in conditions. As a result you may use comfortable longer tapping periods to have more time for taps and not to wait too long for holds (try starting with doubled `TAPPING_TERM`).
|
||||
|
||||
#### Example 5: Using tap dance for advanced mod-tap and layer-tap keys :id=example-5
|
||||
|
@@ -51,7 +51,7 @@ enum unicode_names {
|
||||
SNEK
|
||||
};
|
||||
|
||||
const uint32_t unicode_map[] PROGMEM = {
|
||||
const uint32_t PROGMEM unicode_map[] = {
|
||||
[BANG] = 0x203D, // ‽
|
||||
[IRONY] = 0x2E2E, // ⸮
|
||||
[SNEK] = 0x1F40D, // 🐍
|
||||
|
@@ -208,8 +208,6 @@ As an example, if you have a 60% PCB that supports ANSI and ISO you might define
|
||||
| LAYOUT_ansi | default_ansi | An ANSI layout |
|
||||
| LAYOUT_iso | default_iso | An ISO layout |
|
||||
|
||||
?> Providing only `LAYOUT_all` is invalid - especially when implementing the additional layouts within 3rd party tooling.
|
||||
|
||||
## Image/Hardware Files
|
||||
|
||||
In an effort to keep the repo size down we're no longer accepting binary files of any format, with few exceptions. Hosting them elsewhere (such as <https://imgur.com>) and linking them in the `readme.md` is preferred.
|
||||
|
@@ -340,6 +340,8 @@ qk_tap_dance_action_t tap_dance_actions[] = {
|
||||
|
||||
これで、キーマップのどこでも簡単に `TD(X_CTL)` マクロが使えます。
|
||||
|
||||
もし、この機能をユーザスペースで実現したい場合、 [DanielGGordon](https://github.com/qmk/qmk_firmware/tree/master/users/gordon) がユーザスペースでどのように実装しているか確認してください。
|
||||
|
||||
> この設定の "hold" は、タップダンスのタイムアウト(`ACTION_TAP_DANCE_FN_ADVANCED_TIME` 参照)の **後** に起こります。即座に "hold" を得るためには、条件から `state->interrupted` の確認を除きます。結果として、複数回のタップのための時間をより多く持つことで快適な長いタップの期限を使うことができ、そして、"hold" のために長く待たないようにすることができます(2倍の `TAPPING TERM` で開始してみてください)。
|
||||
|
||||
#### 例5: タップダンスを高度なモッドタップとレイヤータップキーに使う :id=example-5
|
||||
|
@@ -625,7 +625,7 @@ See also: [Modifier Keys](feature_advanced_keycodes.md#modifier-keys)
|
||||
|`RCTL(kc)`| |Hold Right Control and press `kc` |
|
||||
|`RSFT(kc)`| |Hold Right Shift and press `kc` |
|
||||
|`RALT(kc)`|`ROPT(kc)`, `ALGR(kc)` |Hold Right Alt (AltGr) and press `kc` |
|
||||
|`RGUI(kc)`|`RCMD(kc)`, `RWIN(kc)` |Hold Right GUI and press `kc` |
|
||||
|`RGUI(kc)`|`RCMD(kc)`, `LWIN(kc)` |Hold Right GUI and press `kc` |
|
||||
|`LSG(kc)` |`SGUI(kc)`, `SCMD(kc)`, `SWIN(kc)`|Hold Left Shift and Left GUI and press `kc` |
|
||||
|`LAG(kc)` | |Hold Left Alt and Left GUI and press `kc` |
|
||||
|`RSG(kc)` | |Hold Right Shift and Right GUI and press `kc` |
|
||||
|
@@ -27,7 +27,7 @@ For one shot layers, you need to call `set_oneshot_layer(LAYER, ONESHOT_START)`
|
||||
|
||||
For one shot mods, you need to call `set_oneshot_mods(MOD_BIT(KC_*))` to set it, or `clear_oneshot_mods()` to cancel it.
|
||||
|
||||
!> If you're having issues with OSM translating over Remote Desktop Connection, this can be fixed by opening the settings, going to the "Local Resources" tab, and in the keyboard section, change the drop down to "On this Computer". This will fix the issue and allow OSM to function properly over Remote Desktop.
|
||||
!> If you're having issues with OSM translating over Remote Desktop Connection, this can be fixed by opening the settings, going to the "Local Resources" tap, and in the keyboard section, change the drop down to "On this Computer". This will fix the issue and allow OSM to function properly over Remote Desktop.
|
||||
|
||||
## Callbacks
|
||||
|
||||
|
@@ -55,8 +55,6 @@ https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard
|
||||
- `layout` definitions should include matrix positions, so that `LAYOUT` macros can be generated at build time
|
||||
- should use standard definitions if applicable
|
||||
- use the Community Layout macro names where they apply (preferred above `LAYOUT`/`LAYOUT_all`)
|
||||
- use of `LAYOUT_all` is only valid when providing additional layout macros
|
||||
- providing only `LAYOUT_all` is invalid - especially when implementing the additional layouts within 3rd party tooling
|
||||
- `readme.md`
|
||||
- standard template should be present -- [link to template](https://github.com/qmk/qmk_firmware/blob/master/data/templates/keyboard/readme.md)
|
||||
- flash command is present, and has `:flash` at end
|
||||
|
@@ -1,6 +1,6 @@
|
||||
# `info.json`
|
||||
|
||||
The information contained in `info.json` is combined with the `config.h` and `rules.mk` files, dynamically generating the necessary configuration for your keyboard at compile time. It is also used by the [QMK API](https://github.com/qmk/qmk_api), and contains the information [QMK Configurator](https://config.qmk.fm/) needs to display a representation of your keyboard. Its key/value pairs are ruled by the [`data/schemas/keyboard.jsonschema`](https://github.com/qmk/qmk_firmware/blob/master/data/schemas/keyboard.jsonschema) file. To learn more about the why and how of the schema file see the [Data Driven Configuration](https://docs.qmk.fm/#/data_driven_config) page.
|
||||
The information contained in `info.json` is combined with the `config.h` and `rules.mk` files, dynamically generating the necessary configuration for your keyboard at compile time. It is also used by the [QMK API](https://github.com/qmk/qmk_api), and contains the information [QMK Configurator](https://config.qmk.fm/) needs to display a representation of your keyboard.
|
||||
|
||||
You can create `info.json` files at every level under `qmk_firmware/keyboards/<name>`. These files are combined, with more specific files overriding keys in less specific files. This means you do not need to duplicate your metadata information. For example, `qmk_firmware/keyboards/clueboard/info.json` specifies `manufacturer` and `maintainer`, while `qmk_firmware/keyboards/clueboard/66/info.json` specifies more specific information about Clueboard 66%.
|
||||
|
||||
@@ -22,6 +22,9 @@ The `info.json` file is a JSON formatted dictionary. The first six keys noted he
|
||||
* Example: `skullydazed`
|
||||
* `usb`
|
||||
* Configure USB VID, PID, and device version. See the [USB](#USB) section for more detail.
|
||||
|
||||
There are many more optional keys, some of which are described below. Others may be found by examining `data/schemas`.
|
||||
|
||||
* `debounce`
|
||||
* The amount of time in milliseconds to wait for debounce to happen.
|
||||
* Default: `5`
|
||||
@@ -36,10 +39,7 @@ The `info.json` file is a JSON formatted dictionary. The first six keys noted he
|
||||
* `rgblight`
|
||||
* Configure the [RGB Lighting feature](feature_rgblight.md). See the [RGB Lighting](#rgb-lighting) section for more detail.
|
||||
|
||||
|
||||
?> For all the available keys and their allowed values refer back to the [`data/schemas/keyboard.jsonschema`](https://github.com/qmk/qmk_firmware/blob/master/data/schemas/keyboard.jsonschema) file.
|
||||
|
||||
## Layout Format
|
||||
### Layout Format
|
||||
|
||||
Within our `info.json` file the `layouts` portion of the dictionary contains several nested dictionaries. The outer layer consists of QMK layout macros, for example `LAYOUT_ansi` or `LAYOUT_iso`.
|
||||
|
||||
@@ -68,11 +68,11 @@ All key positions and rotations are specified in relation to the top-left corner
|
||||
* A two item list describing the row and column location for this key.
|
||||
* Example: `[0, 4]`
|
||||
|
||||
## Matrix Pins
|
||||
### Matrix Pins
|
||||
|
||||
Currently QMK supports connecting switches either directly to GPIO pins or via a switch matrix. At this time you can not combine these, they are mutually exclusive.
|
||||
|
||||
### Switch Matrix
|
||||
#### Switch Matrix
|
||||
|
||||
Most keyboards use a switch matrix to connect keyswitches to the MCU. You can define your pin columns and rows to configure your switch matrix. When defining switch matrices you should also define your `diode_direction`.
|
||||
|
||||
@@ -88,7 +88,7 @@ Example:
|
||||
}
|
||||
```
|
||||
|
||||
### Direct Pins
|
||||
#### Direct Pins
|
||||
|
||||
Direct pins are when you connect one side of the switch to GND and the other side to a GPIO pin on your MCU. No diode is required, but there is a 1:1 mapping between switches and pins.
|
||||
|
||||
@@ -250,7 +250,7 @@ The following animations can be enabled:
|
||||
|`static_gradient`|Enable static gradient mode. |
|
||||
|`twinkle` |Enable twinkle animation mode. |
|
||||
|
||||
## USB
|
||||
### USB
|
||||
|
||||
Every USB keyboard needs to have its USB parameters defined. At a minimum you need to set the Vendor ID, Product ID, and device version.
|
||||
|
||||
@@ -268,7 +268,7 @@ Example:
|
||||
|
||||
The device version is a BCD (binary coded decimal) value, in the format `MMmr`, so the below value would look like `0x0100` in the generated code. This also means the maximum valid values for each part are `99.9.9`, despite it being a hexadecimal value under the hood.
|
||||
|
||||
## Encoders
|
||||
### Encoders
|
||||
|
||||
This section controls the basic [rotary encoder](feature_encoders.md) support.
|
||||
|
||||
@@ -312,7 +312,7 @@ Examples:
|
||||
}
|
||||
```
|
||||
|
||||
## Secure
|
||||
### Secure
|
||||
|
||||
The following options can be configured:
|
||||
|
||||
|
@@ -19,5 +19,3 @@ AUDIO_ENABLE = no # Audio output
|
||||
|
||||
# Enable generic behavior for split boards
|
||||
SPLIT_KEYBOARD = yes
|
||||
|
||||
LAYOUTS = ortho_5x5 ortho_5x10
|
||||
|
@@ -16,4 +16,4 @@ NKRO_ENABLE = no # Enable N-Key Rollover
|
||||
BACKLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||
AUDIO_ENABLE = no # Audio output
|
||||
|
||||
LAYOUTS = ortho_5x5 ortho_5x10 ortho_5x15
|
||||
LAYOUTS = ortho_5x15
|
||||
|
@@ -9,12 +9,6 @@ More info: https://geekhack.org/index.php?topic=103627.0
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make 4pplet/aekiso60/rev_b:default
|
||||
make 4pplet/aekiso60/rev_a:default
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
|
||||
How to enter bootloader (DFU):
|
||||
* Tap the physical reset button or short the reset-header (labled RESET) on tha back of the PCB for keyboard to enter DFU. When in DFU, it's ready to flash the firmware.
|
||||
|
||||
Alternative option if the firmware is already pre-flashed:
|
||||
* Unplug your keyboard, hold down the Spacebar and B at the same time, plug in your keyboard and wait a second before releasing the keys. The keyboard will enter DFU and is ready to flash the firmware.
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
@@ -1,20 +0,0 @@
|
||||
# AEKISO60
|
||||
|
||||
A 60% PCB enabling use of ISO AEK keycaps and ALPS switches
|
||||
|
||||
More info: https://geekhack.org/index.php?topic=103627.0
|
||||
|
||||
* Keyboard Maintainer: [4pplet](https://github.com/4pplet)
|
||||
* Hardware Supported: AEKISO60 Rev A
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make 4pplet/aekiso60/rev_a:default
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
|
||||
How to enter bootloader (DFU):
|
||||
* Tap the physical reset button or short the reset-header (labled RESET) on tha back of the PCB for keyboard to enter DFU. When in DFU, it's ready to flash the firmware.
|
||||
|
||||
Alternative option if the firmware is already pre-flashed:
|
||||
* Unplug your keyboard, hold down the Spacebar and B at the same time, plug in your keyboard and wait a second before releasing the keys. The keyboard will enter DFU and is ready to flash the firmware.
|
@@ -1,57 +0,0 @@
|
||||
/*
|
||||
Copyright 2022 Stefan Sundin "4pplet" <mail@4pplet.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
|
||||
|
||||
#include "config_common.h"
|
||||
|
||||
/* key matrix size */
|
||||
#define MATRIX_ROWS 5
|
||||
#define MATRIX_COLS 14
|
||||
// ROWS: Top to bottom, COLS: Left to right
|
||||
|
||||
#define MATRIX_ROW_PINS {B15,A9,B7,A1,A2}
|
||||
#define MATRIX_COL_PINS {A3,A4,F1,F0,C15,C14,C13,B9,B8,B6,B5,B4,B3,A15}
|
||||
|
||||
/* COL2ROW or ROW2COL */
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
/* Set 0 if debouncing isn't needed */
|
||||
#define DEBOUNCE 5
|
||||
|
||||
#define QMK_ESC_OUTPUT A3 // usually COL
|
||||
#define QMK_ESC_INPUT B14 // usually ROW
|
||||
|
||||
#define RGBLED_NUM 12
|
||||
#define WS2812_EXTERNAL_PULLUP
|
||||
#define RGB_DI_PIN A8
|
||||
#define RGBLIGHT_HUE_STEP 8
|
||||
#define RGBLIGHT_SAT_STEP 8
|
||||
#define RGBLIGHT_VAL_STEP 8
|
||||
#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
|
||||
#define RGBLIGHT_EFFECT_TWINKLE
|
||||
|
||||
#define LED_CAPS_LOCK_PIN A10
|
||||
|
||||
#define BACKLIGHT_LEVELS 5
|
@@ -1,85 +0,0 @@
|
||||
{
|
||||
"keyboard_name": "AEKISO60 Rev B",
|
||||
"manufacturer": "4pplet",
|
||||
"url": "",
|
||||
"maintainer": "4pplet",
|
||||
"usb": {
|
||||
"vid": "0x4444",
|
||||
"pid": "0x0011",
|
||||
"device_version": "0.0.2"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT_all": {
|
||||
"layout": [
|
||||
{"x":0, "y":0, "w":1.25},
|
||||
{"x":1.25, "y":0},
|
||||
{"x":2.25, "y":0},
|
||||
{"x":3.25, "y":0},
|
||||
{"x":4.25, "y":0},
|
||||
{"x":5.25, "y":0},
|
||||
{"x":6.25, "y":0},
|
||||
{"x":7.25, "y":0},
|
||||
{"x":8.25, "y":0},
|
||||
{"x":9.25, "y":0},
|
||||
{"x":10.25, "y":0},
|
||||
{"x":11.25, "y":0},
|
||||
{"x":12.25, "y":0},
|
||||
{"x":13.25, "y":0, "w":1.75},
|
||||
|
||||
{"x":0, "y":1, "w":1.75},
|
||||
{"x":1.75, "y":1},
|
||||
{"x":2.75, "y":1},
|
||||
{"x":3.75, "y":1},
|
||||
{"x":4.75, "y":1},
|
||||
{"x":5.75, "y":1},
|
||||
{"x":6.75, "y":1},
|
||||
{"x":7.75, "y":1},
|
||||
{"x":8.75, "y":1},
|
||||
{"x":9.75, "y":1},
|
||||
{"x":10.75, "y":1},
|
||||
{"x":11.75, "y":1},
|
||||
{"x":12.75, "y":1},
|
||||
|
||||
{"x":0, "y":2, "w":2},
|
||||
{"x":2, "y":2},
|
||||
{"x":3, "y":2},
|
||||
{"x":4, "y":2},
|
||||
{"x":5, "y":2},
|
||||
{"x":6, "y":2},
|
||||
{"x":7, "y":2},
|
||||
{"x":8, "y":2},
|
||||
{"x":9, "y":2},
|
||||
{"x":10, "y":2},
|
||||
{"x":11, "y":2},
|
||||
{"x":12, "y":2},
|
||||
{"x":13, "y":2},
|
||||
{"x":14, "y":1, "h":2},
|
||||
|
||||
{"x":0, "y":3, "w":1.5},
|
||||
{"x":1.5, "y":3},
|
||||
{"x":2.5, "y":3},
|
||||
{"x":3.5, "y":3},
|
||||
{"x":4.5, "y":3},
|
||||
{"x":5.5, "y":3},
|
||||
{"x":6.5, "y":3},
|
||||
{"x":7.5, "y":3},
|
||||
{"x":8.5, "y":3},
|
||||
{"x":9.5, "y":3},
|
||||
{"x":10.5, "y":3},
|
||||
{"x":11.5, "y":3},
|
||||
{"x":12.5, "y":3, "w":1.5},
|
||||
{"x":14, "y":3},
|
||||
|
||||
{"x":0, "y":4, "w":1.5},
|
||||
{"x":1.5, "y":4, "w":1.25},
|
||||
{"x":2.75, "y":4, "w":1.5},
|
||||
{"x":4.25, "y":4, "w":2.75},
|
||||
{"x":7, "y":4},
|
||||
{"x":8, "y":4, "w":2.75},
|
||||
{"x":10.75, "y":4, "w":1.5},
|
||||
{"x":12.25, "y":4, "w":1.25},
|
||||
{"x":13.5, "y":4, "w":1.5}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,21 +0,0 @@
|
||||
# AEKISO60
|
||||
|
||||
A 60% PCB enabling use of ISO AEK keycaps and ALPS switches
|
||||
|
||||
More info: https://geekhack.org/index.php?topic=103627.0
|
||||
|
||||
* Keyboard Maintainer: [4pplet](https://github.com/4pplet)
|
||||
* Hardware Supported: AEKISO60
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make 4pplet/aekiso60/rev_a:default
|
||||
make 4pplet/aekiso60/rev_b: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).
|
||||
|
||||
How to enter bootloader (DFU):
|
||||
* Tap the physical reset button or short the reset-header (labled RESET) on tha back of the PCB for keyboard to enter DFU. When in DFU, it's ready to flash the firmware.
|
||||
|
||||
Alternative option if the firmware is already pre-flashed:
|
||||
* Unplug your keyboard, hold down the Spacebar and B at the same time, plug in your keyboard and wait a second before releasing the keys. The keyboard will enter DFU and is ready to flash the firmware.
|
@@ -1,19 +0,0 @@
|
||||
/*
|
||||
Copyright 2022 Stefan Sundin "4pplet" <4pplet@protonmail.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 "rev_b.h"
|
||||
|
||||
|
@@ -1,48 +0,0 @@
|
||||
/*
|
||||
Copyright 2022 Stefan Sundin "4pplet" <4pplet@protonmail.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
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
/* LAYOUT_all
|
||||
* ┌────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬──────┐
|
||||
* │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │
|
||||
* ├────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬────┤
|
||||
* │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │ │
|
||||
* ├──────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐1d │
|
||||
* │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │ │
|
||||
* ├─────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤
|
||||
* │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │
|
||||
* ├─────┼───┴┬──┴──┬┴───┴───┴─┬─┴─┬─┴───┴───┴┬──┴──┬┴───┬─┴───┤
|
||||
* │40 │41 │43 │44 │45 │46 │48 │4a │4b │
|
||||
* └─────┴────┴─────┴──────────┴───┴──────────┴─────┴────┴─────┘
|
||||
*/
|
||||
#define LAYOUT_all( \
|
||||
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \
|
||||
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
|
||||
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k1d, \
|
||||
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \
|
||||
k40, k41, k43, k44, k45, k46, k48, k4a, k4b \
|
||||
) \
|
||||
{ \
|
||||
{k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \
|
||||
{k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d}, \
|
||||
{k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, KC_NO},\
|
||||
{k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d}, \
|
||||
{k40, k41, KC_NO, k43, k44, k45, k46, KC_NO, k48, KC_NO, k4a, k4b, KC_NO, KC_NO} \
|
||||
}
|
@@ -1,24 +0,0 @@
|
||||
# MCU name
|
||||
MCU = STM32F072
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = stm32-dfu
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = no # Console for debug
|
||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||
NKRO_ENABLE = yes # Enable N-Key Rollover
|
||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
||||
AUDIO_ENABLE = no # Audio output
|
||||
|
||||
# Wildcard to allow APM32 MCU
|
||||
DFU_SUFFIX_ARGS = -p FFFF -v FFFF
|
||||
|
||||
# Enter lower-power sleep mode when on the ChibiOS idle thread
|
||||
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
|
@@ -38,10 +38,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#define WS2812_SPI_MOSI_PAL_MODE 0
|
||||
#define WS2812_SPI_SCK_PIN A5
|
||||
#define WS2812_SPI_SCK_PAL_MODE 0
|
||||
#define RGBLED_NUM 16
|
||||
#define RGBLIGHT_HUE_STEP 8
|
||||
#define RGBLIGHT_SAT_STEP 8
|
||||
#define RGBLIGHT_VAL_STEP 8
|
||||
#define RGBLED_NUM 16
|
||||
#define RGBLIGHT_EFFECT_BREATHING
|
||||
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
|
||||
#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
|
||||
|
@@ -1,74 +0,0 @@
|
||||
/*
|
||||
Copyright 2022 Stefan Sundin "4pplet" <4pplet@protonmail.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
|
||||
|
||||
#define MATRIX_ROWS 10
|
||||
#define MATRIX_COLS 7
|
||||
|
||||
#define MATRIX_COL_PINS { A0, A3, A4, A7, B5, B4, B3 }
|
||||
#define MATRIX_ROW_PINS { A2, A1, B8, A10, C15, A15, B7, B6, C14, C13}
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
/* In switch leds */
|
||||
#define BACKLIGHT_PIN A6
|
||||
#define BACKLIGHT_PWM_DRIVER PWMD3
|
||||
#define BACKLIGHT_PWM_CHANNEL 1
|
||||
#define BACKLIGHT_PAL_MODE 1
|
||||
#define BACKLIGHT_LEVELS 6
|
||||
#define BACKLIGHT_BREATHING
|
||||
#define BREATHING_PERIOD 6
|
||||
#define BACKLIGHT_ON_STATE 1
|
||||
|
||||
/* Underglow */
|
||||
#define RGBLED_NUM 16
|
||||
#define WS2812_EXTERNAL_PULLUP
|
||||
#define RGB_DI_PIN A8
|
||||
|
||||
#define RGBLIGHT_HUE_STEP 8
|
||||
#define RGBLIGHT_SAT_STEP 8
|
||||
#define RGBLIGHT_VAL_STEP 8
|
||||
#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
|
||||
#define RGBLIGHT_EFFECT_TWINKLE
|
||||
|
||||
/* 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
|
||||
|
||||
/* Indicator leds */
|
||||
#define LED_CAPS_LOCK_PIN B1
|
||||
#define LED_NUM_LOCK_PIN B12
|
||||
#define LED_SCROLL_LOCK_PIN B13
|
||||
#define LAYER_1 B14
|
||||
#define LAYER_2 B15
|
||||
#define LAYER_3 B0
|
||||
#define LAYER_4 B9
|
||||
#define LAYER_5 A9
|
||||
|
||||
/* Set 0 if debouncing isn't needed */
|
||||
#define DEBOUNCE 5
|
||||
|
||||
/* Added extra layer for use of layer leds */
|
||||
#define DYNAMIC_KEYMAP_LAYER_COUNT 5
|
@@ -1,25 +0,0 @@
|
||||
/*
|
||||
Copyright 2022 Stefan Sundin "4pplet" <4pplet@protonmail.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
|
||||
|
||||
#define HAL_USE_I2C FALSE
|
||||
|
||||
#define HAL_USE_PWM TRUE
|
||||
|
||||
#define HAL_USE_SPI FALSE
|
||||
|
||||
#include_next <halconf.h>
|
@@ -1,16 +0,0 @@
|
||||
{
|
||||
"keyboard_name": "Eagle Viper REP Rev B",
|
||||
"manufacturer": "4pplet",
|
||||
"url": "https://github.com/4pplet/eagle_viper_rep",
|
||||
"maintainer": "4pplet",
|
||||
"usb": {
|
||||
"vid": "0x4444",
|
||||
"pid": "0x0010",
|
||||
"device_version": "0.0.2"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [{"label":"0,0", "x":0, "y":0}, {"label":"1,0", "x":1, "y":0}, {"label":"0,1", "x":2, "y":0}, {"label":"1,1", "x":3, "y":0}, {"label":"0,2", "x":4, "y":0}, {"label":"1,2", "x":5, "y":0}, {"label":"0,3", "x":6, "y":0}, {"label":"1,3", "x":7, "y":0}, {"label":"0,4", "x":8, "y":0}, {"label":"1,4", "x":9, "y":0}, {"label":"0,5", "x":10, "y":0}, {"label":"1,5", "x":11, "y":0}, {"label":"0,6", "x":12, "y":0}, {"label":"1,6", "x":13, "y":0}, {"label":"3,6", "x":14, "y":0}, {"label":"2,0", "x":0, "y":1, "w":1.5}, {"label":"3,0", "x":1.5, "y":1}, {"label":"2,1", "x":2.5, "y":1}, {"label":"3,1", "x":3.5, "y":1}, {"label":"2,2", "x":4.5, "y":1}, {"label":"3,2", "x":5.5, "y":1}, {"label":"2,3", "x":6.5, "y":1}, {"label":"3,3", "x":7.5, "y":1}, {"label":"2,4", "x":8.5, "y":1}, {"label":"3,4", "x":9.5, "y":1}, {"label":"2,5", "x":10.5, "y":1}, {"label":"3,5", "x":11.5, "y":1}, {"label":"2,6", "x":12.5, "y":1}, {"label":"5,6", "x":13.5, "y":1, "w":1.5}, {"label":"4,0", "x":0, "y":2, "w":1.75}, {"label":"5,0", "x":1.75, "y":2}, {"label":"4,1", "x":2.75, "y":2}, {"label":"5,1", "x":3.75, "y":2}, {"label":"4,2", "x":4.75, "y":2}, {"label":"5,2", "x":5.75, "y":2}, {"label":"4,3", "x":6.75, "y":2}, {"label":"5,3", "x":7.75, "y":2}, {"label":"4,4", "x":8.75, "y":2}, {"label":"5,4", "x":9.75, "y":2}, {"label":"4,5", "x":10.75, "y":2}, {"label":"5,5", "x":11.75, "y":2}, {"label":"4,6", "x":12.75, "y":2}, {"label":"7,6", "x":13.75, "y":2, "w":1.25}, {"label":"6,0", "x":0, "y":3, "w":1.25}, {"label":"7,0", "x":1.25, "y":3}, {"label":"6,1", "x":2.25, "y":3}, {"label":"7,1", "x":3.25, "y":3}, {"label":"6,2", "x":4.25, "y":3}, {"label":"7,2", "x":5.25, "y":3}, {"label":"6,3", "x":6.25, "y":3}, {"label":"7,3", "x":7.25, "y":3}, {"label":"6,4", "x":8.25, "y":3}, {"label":"7,4", "x":9.25, "y":3}, {"label":"6,5", "x":10.25, "y":3}, {"label":"7,5", "x":11.25, "y":3}, {"label":"6,6", "x":12.25, "y":3, "w":1.75}, {"label":"9,6", "x":14, "y":3}, {"label":"8,0", "x":0, "y":4, "w":1.25}, {"label":"9,0", "x":1.25, "y":4, "w":1.25}, {"label":"9,1", "x":2.5, "y":4, "w":1.25}, {"label":"9,2", "x":3.75, "y":4, "w":2.25}, {"label":"9,3", "x":6, "y":4, "w":1.25}, {"label":"9,4", "x":10, "y":4, "w":1.25}, {"label":"8,5", "x":11.25, "y":4, "w":1.25}, {"label":"9,5", "x":12.5, "y":4, "w":1.25}, {"label":"8,6", "x":13.75, "y":4, "w":1.25}, {"label":"8,4", "x":7, "y":9, "w":2.75}]
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,34 +0,0 @@
|
||||
/*
|
||||
Copyright 2022 Stefan Sundin "4pplet" <4pplet@protonmail.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
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
// main layer
|
||||
[0] = LAYOUT(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
|
||||
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RALT, KC_RGUI, MO(1)),
|
||||
// basic function layer
|
||||
[1] = LAYOUT(
|
||||
QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
|
||||
};
|
@@ -1,55 +0,0 @@
|
||||
/*
|
||||
Copyright 2022 Stefan Sundin "4pplet" <4pplet@protonmail.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
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
// main layer
|
||||
[0] = LAYOUT(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
|
||||
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RALT, KC_RGUI, MO(1)),
|
||||
// basic function layer
|
||||
[1] = LAYOUT(
|
||||
QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
||||
// extra layer for VIA
|
||||
[2] = LAYOUT(
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
||||
// extra layer for VIA
|
||||
[3] = LAYOUT(
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
||||
// extra layer for VIA
|
||||
[4] = LAYOUT(
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
|
||||
};
|
@@ -1 +0,0 @@
|
||||
VIA_ENABLE = yes
|
@@ -1,25 +0,0 @@
|
||||
/*
|
||||
Copyright 2022 Stefan Sundin "4pplet" <4pplet@protonmail.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
|
||||
|
||||
#include_next <mcuconf.h>
|
||||
|
||||
#undef STM32_PWM_USE_TIM1
|
||||
#define STM32_PWM_USE_TIM1 TRUE
|
||||
|
||||
#undef STM32_PWM_USE_TIM3
|
||||
#define STM32_PWM_USE_TIM3 TRUE
|
@@ -1,20 +0,0 @@
|
||||
# Viper/Eagle REP Rev B
|
||||
|
||||
A alternative PCB for Viper and Eagle V2 and V3
|
||||
|
||||
* Keyboard Maintainer: [4pplet](https://github.com/4pplet)
|
||||
* Hardware Supported: Viper/Eagle REP Rev B
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make 4pplet/eagle_viper_rep/rev_b: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).
|
||||
|
||||
How to enter bootloader (DFU):
|
||||
* Press and hold the button on the keyboard (the small one on the same side as the MCU) for more than 1 second. The keyboard will then enter bootloader (DFU) mode and it's ready to flash the firmware.
|
||||
|
||||
* Note: If holding the button a shorter time, the keyboard will just reset. If you want to exit bootloader mode without flashing a firmware, dissconnect the keyboard from your PC and reconnect it.
|
||||
|
||||
Alternative option if the firmware is already pre-flashed:
|
||||
* Unplug your keyboard, hold down the Esc-key and at the same time, plug in your keyboard and wait a second before releasing the keys. Bootmagic lite is enabled by default.
|
@@ -1,58 +0,0 @@
|
||||
/*
|
||||
Copyright 2022 Stefan Sundin "4pplet" <4pplet@protonmail.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 "rev_b.h"
|
||||
|
||||
void keyboard_pre_init_kb(void) {
|
||||
setPinOutput(LAYER_1);
|
||||
setPinOutput(LAYER_2);
|
||||
setPinOutput(LAYER_3);
|
||||
setPinOutput(LAYER_4);
|
||||
setPinOutput(LAYER_5);
|
||||
keyboard_pre_init_user();
|
||||
}
|
||||
|
||||
layer_state_t layer_state_set_kb(layer_state_t state) {
|
||||
state = layer_state_set_user(state);
|
||||
setLayerLed(state);
|
||||
return state;
|
||||
}
|
||||
/* Set indicator leds to indicate which layer is active */
|
||||
void setLayerLed(layer_state_t state){
|
||||
writePinLow(LAYER_1);
|
||||
writePinLow(LAYER_2);
|
||||
writePinLow(LAYER_3);
|
||||
writePinLow(LAYER_4);
|
||||
writePinLow(LAYER_5);
|
||||
switch (get_highest_layer(state)) {
|
||||
case 0:
|
||||
writePinHigh(LAYER_1);
|
||||
break;
|
||||
case 1:
|
||||
writePinHigh(LAYER_2);
|
||||
break;
|
||||
case 2:
|
||||
writePinHigh(LAYER_3);
|
||||
break;
|
||||
case 3:
|
||||
writePinHigh(LAYER_4);
|
||||
break;
|
||||
case 4:
|
||||
writePinHigh(LAYER_5);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@@ -1,41 +0,0 @@
|
||||
/*
|
||||
Copyright 2022 Stefan Sundin "4pplet" <4pplet@protonmail.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
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
void setLayerLed(layer_state_t state);
|
||||
|
||||
#define LAYOUT( \
|
||||
k00, k10, k01, k11, k02, k12, k03, k13, k04, k14, k05, k15, k06, k16, k36, \
|
||||
k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k56,\
|
||||
k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k46, k76,\
|
||||
k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k65, k75, k66, k96,\
|
||||
k80, k90, k91, k92, k93, k84 ,k94, k85, k95, k86 \
|
||||
) \
|
||||
{ \
|
||||
{k00, k01, k02, k03, k04, k05, k06}, \
|
||||
{k10, k11, k12, k13, k14, k15, k16}, \
|
||||
{k20, k21, k22, k23, k24, k25, k26}, \
|
||||
{k30, k31, k32, k33, k34, k35, k36}, \
|
||||
{k40, k41, k42, k43, k44, k45, k46}, \
|
||||
{k50, k51, k52, k53, k54, k55, k56}, \
|
||||
{k60, k61, k62, k63, k64, k65, k66}, \
|
||||
{k70, k71, k72, k73, k74, k75, k76}, \
|
||||
{k80, KC_NO, KC_NO, KC_NO, k84, k85, k86}, \
|
||||
{k90, k91, k92, k93, k94, k95, k96} \
|
||||
}
|
@@ -1,23 +0,0 @@
|
||||
# MCU name
|
||||
MCU = STM32F072
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = stm32-dfu
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = no # Console for debug
|
||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||
NKRO_ENABLE = yes # Enable N-Key Rollover
|
||||
BACKLIGHT_ENABLE = yes
|
||||
RGBLIGHT_ENABLE = yes
|
||||
|
||||
# Wildcard to allow APM32 MCU
|
||||
DFU_SUFFIX_ARGS = -p FFFF -v FFFF
|
||||
|
||||
# Enter lower-power sleep mode when on the ChibiOS idle thread
|
||||
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
|
@@ -3,59 +3,5 @@
|
||||
"usb": {
|
||||
"pid": "0x5369",
|
||||
"device_version": "0.0.2"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT_ortho_4x12": {
|
||||
"layout": [
|
||||
{ "x": 0, "y": 0 },
|
||||
{ "x": 1, "y": 0 },
|
||||
{ "x": 2, "y": 0 },
|
||||
{ "x": 3, "y": 0 },
|
||||
{ "x": 4, "y": 0 },
|
||||
{ "x": 5, "y": 0 },
|
||||
{ "x": 6, "y": 0 },
|
||||
{ "x": 7, "y": 0 },
|
||||
{ "x": 8, "y": 0 },
|
||||
{ "x": 9, "y": 0 },
|
||||
{ "x": 10, "y": 0 },
|
||||
{ "x": 11, "y": 0 },
|
||||
{ "x": 0, "y": 1 },
|
||||
{ "x": 1, "y": 1 },
|
||||
{ "x": 2, "y": 1 },
|
||||
{ "x": 3, "y": 1 },
|
||||
{ "x": 4, "y": 1 },
|
||||
{ "x": 5, "y": 1 },
|
||||
{ "x": 6, "y": 1 },
|
||||
{ "x": 7, "y": 1 },
|
||||
{ "x": 8, "y": 1 },
|
||||
{ "x": 9, "y": 1 },
|
||||
{ "x": 10, "y": 1 },
|
||||
{ "x": 11, "y": 1 },
|
||||
{ "x": 0, "y": 2 },
|
||||
{ "x": 1, "y": 2 },
|
||||
{ "x": 2, "y": 2 },
|
||||
{ "x": 3, "y": 2 },
|
||||
{ "x": 4, "y": 2 },
|
||||
{ "x": 5, "y": 2 },
|
||||
{ "x": 6, "y": 2 },
|
||||
{ "x": 7, "y": 2 },
|
||||
{ "x": 8, "y": 2 },
|
||||
{ "x": 9, "y": 2 },
|
||||
{ "x": 10, "y": 2 },
|
||||
{ "x": 11, "y": 2 },
|
||||
{ "x": 0, "y": 3 },
|
||||
{ "x": 1, "y": 3 },
|
||||
{ "x": 2, "y": 3 },
|
||||
{ "x": 3, "y": 3 },
|
||||
{ "x": 4, "y": 3 },
|
||||
{ "x": 5, "y": 3 },
|
||||
{ "x": 6, "y": 3 },
|
||||
{ "x": 7, "y": 3 },
|
||||
{ "x": 8, "y": 3 },
|
||||
{ "x": 9, "y": 3 },
|
||||
{ "x": 10, "y": 3 },
|
||||
{ "x": 11, "y": 3 }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -1,27 +0,0 @@
|
||||
// Copyright 2022 Arturo Avila (@ADPenrose)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include "akemipad.h"
|
||||
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
|
||||
/* Setting up the LED matrix */
|
||||
led_config_t g_led_config = { {
|
||||
// Key Matrix to LED Index
|
||||
{ 0, 1, 2, 3, NO_LED },
|
||||
{ 4, 5, 6, 7, NO_LED },
|
||||
{ 8, 9, 10, 11, 12 },
|
||||
{ 13, 14, 15, 16, NO_LED },
|
||||
{ 17, 18, 19, 20, 21 },
|
||||
{ 22, 23, 24, 25, 26 },
|
||||
}, {
|
||||
// LED Index to Physical Position
|
||||
{ 0,0 }, { 37,0 }, { 74,0 }, {111,0 }, { 0,34 }, { 37,34 }, { 74,34 }, {111,34 }, { 0,62 }, { 37,62 },
|
||||
{ 74,62 }, {111,62 }, {120,75 }, { 0,89 }, { 37,89 }, { 74,89 }, {111,89 }, { 0,117}, { 37,117}, { 74,117},
|
||||
{111,117}, {120,130}, { 0,137}, { 18,144}, { 37,137}, { 74,144}, {111,144}
|
||||
}, {
|
||||
// LED Index to Flag
|
||||
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4
|
||||
} };
|
||||
|
||||
#endif
|
@@ -1,31 +0,0 @@
|
||||
// Copyright 2022 Arturo Avila (@ADPenrose)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
/* This is a shortcut to help you visually see your layout.
|
||||
*
|
||||
* The first section contains all of the arguments representing the physical
|
||||
* layout of the board and position of the keys.
|
||||
*
|
||||
* The second converts the arguments into a two-dimensional array which
|
||||
* represents the switch matrix.
|
||||
*/
|
||||
|
||||
#define LAYOUT_all( \
|
||||
K00, K01, K02, K03, \
|
||||
K10, K11, K12, K13, \
|
||||
K20, K21, K22, K23, \
|
||||
K30, K31, K32, K33, \
|
||||
K40, K41, K42, K43, \
|
||||
K54, K50, K51, K52, K53 \
|
||||
) { \
|
||||
{ K00, K01, K02, K03, KC_NO }, \
|
||||
{ K10, K11, K12, K13, KC_NO }, \
|
||||
{ K20, K21, K22, K23, KC_NO }, \
|
||||
{ K30, K31, K32, K33, KC_NO }, \
|
||||
{ K40, K41, K42, K43, KC_NO }, \
|
||||
{ K50, K51, K52, K53, K54 } \
|
||||
}
|
@@ -1,62 +0,0 @@
|
||||
// Copyright 2022 Arturo Avila (@ADPenrose)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "config_common.h"
|
||||
|
||||
/* Key matrix size */
|
||||
#define MATRIX_ROWS 6
|
||||
#define MATRIX_COLS 5
|
||||
|
||||
/*
|
||||
* Keyboard Matrix Assignments
|
||||
*
|
||||
* Change this to how you wired your keyboard
|
||||
* COLS: AVR pins used for columns, left to right
|
||||
* ROWS: AVR pins used for rows, top to bottom
|
||||
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
|
||||
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
||||
*
|
||||
*/
|
||||
#define MATRIX_ROW_PINS { D4, D7, E6, B6, B4, B5 }
|
||||
#define MATRIX_COL_PINS { D3, D2, F5, F6, B2 }
|
||||
|
||||
/* COL2ROW, ROW2COL */
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
/*Rotary encoder - set the resolution fitting your encoder.
|
||||
Most will need a value of 4. If 1 encoder click results in 2 keycodes sent
|
||||
increase the value. If you need 2 clicks for 1 keycode, decrease*/
|
||||
#define ENCODER_RESOLUTION 4
|
||||
#define ENCODERS_PAD_A { B1 }
|
||||
#define ENCODERS_PAD_B { B3 }
|
||||
#define TAP_CODE_DELAY 10
|
||||
|
||||
/* Audio functionality */
|
||||
#define AUDIO_PIN C6
|
||||
#define AUDIO_CLICKY
|
||||
#define AUDIO_ENABLE_TONE_MULTIPLEXING
|
||||
#define AUDIO_TONE_MULTIPLEXING_RATE_DEFAULT 10
|
||||
|
||||
// The pin connected to the data pin of the LEDs
|
||||
#define RGB_DI_PIN F4
|
||||
// The number of LEDs connected
|
||||
#define RGB_MATRIX_LED_COUNT 27
|
||||
#define RGB_MATRIX_CENTER { 60, 77 }
|
||||
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 175
|
||||
#define RGB_DISABLE_WHEN_USB_SUSPENDED
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
// RGB Matrix Animation modes. Explicitly enabled
|
||||
// For full list of effects, see:
|
||||
// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
|
||||
# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
|
||||
# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
|
||||
#endif
|
||||
|
||||
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||
#define DEBOUNCE 5
|
||||
|
||||
/* Bootmagic Lite key configuration */
|
||||
#define BOOTMAGIC_LITE_ROW 0
|
||||
#define BOOTMAGIC_LITE_COLUMN 0
|
@@ -1,41 +0,0 @@
|
||||
{
|
||||
"manufacturer": "ADPenrose",
|
||||
"keyboard_name": "AkemiPad",
|
||||
"maintainer": "Arturo Avila",
|
||||
"usb": {
|
||||
"device_version": "1.0.0",
|
||||
"pid": "0x0004",
|
||||
"vid": "0x4450"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT_all": {
|
||||
"layout": [
|
||||
{ "label": "F1", "x": 1.25, "y": 0 },
|
||||
{ "label": "F2", "x": 2.25, "y": 0 },
|
||||
{ "label": "F3", "x": 3.25, "y": 0 },
|
||||
{ "label": "F4", "x": 4.25, "y": 0 },
|
||||
{ "label": "Num Lock", "x": 1.25, "y": 1.25 },
|
||||
{ "label": "/", "x": 2.25, "y": 1.25 },
|
||||
{ "label": "*", "x": 3.25, "y": 1.25 },
|
||||
{ "label": "-", "x": 4.25, "y": 1.25 },
|
||||
{ "label": "7", "x": 1.25, "y": 2.25 },
|
||||
{ "label": "8", "x": 2.25, "y": 2.25 },
|
||||
{ "label": "9", "x": 3.25, "y": 2.25 },
|
||||
{ "x": 4.25, "y": 2.25 },
|
||||
{ "label": "4", "x": 1.25, "y": 3.25 },
|
||||
{ "label": "5", "x": 2.25, "y": 3.25 },
|
||||
{ "label": "6", "x": 3.25, "y": 3.25 },
|
||||
{ "x": 4.25, "y": 3.25 },
|
||||
{ "label": "1", "x": 1.25, "y": 4.25 },
|
||||
{ "label": "2", "x": 2.25, "y": 4.25 },
|
||||
{ "label": "3", "x": 3.25, "y": 4.25 },
|
||||
{ "x": 4.25, "y": 4.25 },
|
||||
{ "label": "Enc", "x": 0, "y": 5.25 },
|
||||
{ "x": 1.25, "y": 5.25 },
|
||||
{ "x": 2.25, "y": 5.25 },
|
||||
{ "label": ".", "x": 3.25, "y": 5.25 },
|
||||
{ "x": 4.25, "y": 5.25 }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,49 +0,0 @@
|
||||
// Copyright 2022 Arturo Avila (@ADPenrose)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
/* Keymap */
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_all(
|
||||
MO(1), MO(2), MO(3), KC_DEL,
|
||||
KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
|
||||
KC_P7, KC_P8, KC_P9, KC_PPLS,
|
||||
KC_P4, KC_P5, KC_P6, KC_PPLS,
|
||||
KC_P1, KC_P2, KC_P3, KC_PENT,
|
||||
KC_MUTE, KC_P0, KC_P0, KC_PDOT, KC_PENT
|
||||
),
|
||||
[1] = LAYOUT_all(
|
||||
KC_TRNS, CK_DOWN, CK_UP, CK_RST,
|
||||
MU_TOG, MU_MOD, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
CK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
[2] = LAYOUT_all(
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
[3] = LAYOUT_all(
|
||||
QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
)
|
||||
};
|
||||
|
||||
#if defined(ENCODER_MAP_ENABLE)
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
|
||||
[0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||
[1] = { ENCODER_CCW_CW(RGB_HUD, RGB_HUI) },
|
||||
[2] = { ENCODER_CCW_CW(RGB_SAD, RGB_SAI) },
|
||||
[3] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }
|
||||
};
|
||||
#endif
|
@@ -1,12 +0,0 @@
|
||||
# The default keymap for the AkemiPad
|
||||
|
||||
|
||||
## Features
|
||||
- Audio Click and Music Mode capabilities.
|
||||
- RGB Matrix Lighting (cycles left-right and up-down).
|
||||
- Encoder Map feature.
|
||||
|
||||
### Disclaimer
|
||||
The AkemiPad has multiple layout options (each one with its own LED positions), but this keymap does not take that into consideration.
|
||||
If you want to select an specific layout (and see how the LEDs turn on and off accordingly), you
|
||||
should use the [via keymap](../via).
|
@@ -1,392 +0,0 @@
|
||||
// Copyright 2022 Arturo Avila (@ADPenrose)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
#ifdef OLED_ENABLE
|
||||
|
||||
// Enable OLED bitmpa compression selectively.
|
||||
#define USE_OLED_BITMAP_COMPRESSION
|
||||
|
||||
#define NUM_IDLE_FRAMES 5
|
||||
#define NUM_TAP_FRAMES 2
|
||||
#define NUM_OLED_BYTES 512
|
||||
|
||||
#ifdef USE_OLED_BITMAP_COMPRESSION
|
||||
|
||||
static const char PROGMEM idle_1_block_map[] = { //IDLE_1 and IDLE_2 flipped
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x18, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x7f, 0x00, 0xf0, 0xb0, 0xc1, 0x07,
|
||||
0xf0, 0xcf, 0x00, 0x1c, 0x00, 0xb8, 0x8f, 0x3f, 0x00, 0x98, 0xff, 0x00, 0x00, 0xf0, 0x03, 0x00,
|
||||
0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0xc0, 0x01
|
||||
};
|
||||
|
||||
static const char PROGMEM idle_2_block_map[] = { //IDLE_3 flipped
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x18, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x00, 0xf0, 0xd8, 0xe0, 0x03,
|
||||
0xf0, 0x6f, 0x00, 0x3e, 0x00, 0xf8, 0xc7, 0x7f, 0x00, 0x98, 0x7f, 0x00, 0x00, 0xf0, 0x03, 0x00,
|
||||
0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0xc0, 0x01
|
||||
};
|
||||
|
||||
static const char PROGMEM idle_3_block_map[] = { //IDLE_4 flipped
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x18, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x01, 0xf0, 0xb0, 0xc1, 0x07,
|
||||
0xf0, 0xcf, 0x00, 0x7c, 0x00, 0xb8, 0x8f, 0xff, 0x00, 0x98, 0xff, 0x00, 0x00, 0xf0, 0x03, 0x00,
|
||||
0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0xc0, 0x01
|
||||
};
|
||||
|
||||
static const char PROGMEM idle_4_block_map[] = { //IDLE_5 flipped
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x18, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x00, 0xf0, 0xb0, 0xc1, 0x07,
|
||||
0xf0, 0xcf, 0x00, 0x3c, 0x00, 0xb8, 0x8f, 0x7f, 0x00, 0x98, 0xff, 0x00, 0x00, 0xf0, 0x03, 0x00,
|
||||
0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0xc0, 0x01
|
||||
};
|
||||
|
||||
static const char PROGMEM tap_1_block_map[] = { //TAP_1 flipped
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x18, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x01, 0x80, 0xff, 0xc1, 0x07,
|
||||
0x00, 0xce, 0x00, 0x7c, 0x00, 0xb8, 0x8d, 0xff, 0x00, 0x98, 0xff, 0x1f, 0xc0, 0xff, 0xff, 0x1f,
|
||||
0x00, 0x3f, 0xfe, 0x01, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0xc0, 0x01
|
||||
};
|
||||
|
||||
static const char PROGMEM tap_2_block_map[] = { //TAP_2 flipped
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x18, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0xde, 0xff, 0xff, 0x01, 0xfc, 0x80, 0xc1, 0x07,
|
||||
0xf1, 0xcf, 0x00, 0x7c, 0x00, 0xb8, 0x8d, 0xff, 0x00, 0xe0, 0xff, 0x00, 0x00, 0x80, 0x3f, 0x00,
|
||||
0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0xc0, 0x01
|
||||
};
|
||||
|
||||
static const char PROGMEM idle_1_block_list[] = { //IDLE_1 and IDLE_2 flipped
|
||||
0x3e, 0xc0, 0x07, 0xf8, 0x1f, 0xe0, 0x03, 0x7c, 0x80, 0x07, 0xf9, 0x01, 0x01, 0x02, 0x02, 0x02,
|
||||
0x04, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x02, 0x04, 0xf8, 0xe0, 0x18, 0x06, 0x01, 0x78, 0x78,
|
||||
0xc0, 0xc0, 0x01, 0x02, 0x04, 0x18, 0xe0, 0x03, 0x04, 0x04, 0x04, 0x04, 0x02, 0x1c, 0xe0, 0x30,
|
||||
0xc8, 0x01, 0x3e, 0xc0, 0x01, 0x3e, 0xc0, 0x03, 0xc2, 0xc0, 0x18, 0x18, 0x80, 0x40, 0x20, 0x10,
|
||||
0x10, 0x08, 0x07, 0xfc, 0x03, 0x80, 0x83, 0x43, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x01, 0x01,
|
||||
0x01, 0x07, 0x78, 0x80, 0x07, 0x78, 0x80, 0x07, 0xf8, 0x1f, 0xe0, 0x01, 0x1e, 0xe0
|
||||
};
|
||||
|
||||
static const char PROGMEM idle_2_block_list[] = { //IDLE_3 flipped
|
||||
0x3e, 0xc0, 0x07, 0xf8, 0x1f, 0xe0, 0x03, 0x7c, 0x80, 0x07, 0xf9, 0x01, 0x02, 0x02, 0x06, 0x04,
|
||||
0x08, 0x08, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x82, 0x64, 0x18, 0xe0, 0x18, 0x06, 0x01, 0x78,
|
||||
0x78, 0xc0, 0xc0, 0x01, 0x02, 0x04, 0x18, 0xe0, 0x03, 0x04, 0x04, 0x04, 0x04, 0x02, 0x1c, 0xe0,
|
||||
0x30, 0xc8, 0x01, 0x1e, 0x20, 0x40, 0x80, 0x01, 0x3e, 0xc0, 0x03, 0xc2, 0xc0, 0x18, 0x18, 0x80,
|
||||
0x40, 0x20, 0x10, 0x10, 0x08, 0x08, 0x04, 0x03, 0xfc, 0x03, 0x83, 0x43, 0x20, 0x10, 0x08, 0x04,
|
||||
0x02, 0x01, 0x01, 0x01, 0x01, 0x07, 0x78, 0x80, 0x07, 0x78, 0x80, 0x07, 0xf8, 0x1f, 0xe0, 0x01,
|
||||
0x1e, 0xe0
|
||||
};
|
||||
|
||||
static const char PROGMEM idle_3_block_list[] = { //IDLE_4 flipped
|
||||
0x3e, 0xc0, 0x07, 0xf8, 0x1f, 0xe0, 0x03, 0x7c, 0x80, 0x07, 0xf9, 0x01, 0x02, 0x02, 0x02, 0x04,
|
||||
0x04, 0x08, 0x08, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x82, 0x64, 0x18, 0xe0, 0x18, 0x06, 0x01,
|
||||
0x78, 0x78, 0xc0, 0xc0, 0x01, 0x02, 0x04, 0x18, 0xe0, 0x03, 0x04, 0x04, 0x04, 0x04, 0x02, 0x1c,
|
||||
0xe0, 0x30, 0xc8, 0x01, 0x1e, 0x20, 0x40, 0x80, 0x01, 0x3e, 0xc0, 0x03, 0xc2, 0xc0, 0x18, 0x18,
|
||||
0x80, 0x40, 0x20, 0x10, 0x10, 0x08, 0x08, 0x04, 0x03, 0xfc, 0x03, 0x80, 0x83, 0x43, 0x20, 0x10,
|
||||
0x08, 0x04, 0x02, 0x01, 0x01, 0x01, 0x01, 0x07, 0x78, 0x80, 0x07, 0x78, 0x80, 0x07, 0xf8, 0x1f,
|
||||
0xe0, 0x01, 0x1e, 0xe0
|
||||
};
|
||||
|
||||
static const char PROGMEM idle_4_block_list[] = { //IDLE_5 flipped
|
||||
0x3e, 0xc0, 0x07, 0xf8, 0x1f, 0xe0, 0x03, 0x7c, 0x80, 0x07, 0xf9, 0x01, 0x02, 0x02, 0x02, 0x04,
|
||||
0x04, 0x08, 0x08, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0xe4, 0x18, 0xe0, 0x18, 0x06, 0x01, 0x78,
|
||||
0x78, 0xc0, 0xc0, 0x01, 0x02, 0x04, 0x18, 0xe0, 0x03, 0x04, 0x04, 0x04, 0x04, 0x02, 0x1c, 0xe0,
|
||||
0x30, 0xc8, 0x01, 0x1e, 0x60, 0x80, 0x01, 0x3e, 0xc0, 0x03, 0xc2, 0xc0, 0x18, 0x18, 0x80, 0x40,
|
||||
0x20, 0x10, 0x10, 0x10, 0x08, 0x07, 0xfc, 0x03, 0x80, 0x83, 0x43, 0x20, 0x10, 0x08, 0x04, 0x02,
|
||||
0x01, 0x01, 0x01, 0x01, 0x07, 0x78, 0x80, 0x07, 0x78, 0x80, 0x07, 0xf8, 0x1f, 0xe0, 0x01, 0x1e,
|
||||
0xe0
|
||||
};
|
||||
|
||||
static const char PROGMEM tap_1_block_list[] = { //TAP_1 flipped
|
||||
0x3e, 0xc0, 0x07, 0xf8, 0x1f, 0xe0, 0x03, 0x7c, 0x80, 0x07, 0xf9, 0x01, 0x02, 0x02, 0x42, 0x44,
|
||||
0x84, 0x88, 0x08, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x82, 0x64, 0x18, 0x01, 0x0e, 0xf0, 0x20,
|
||||
0x26, 0x26, 0x29, 0x10, 0xd5, 0xce, 0x01, 0x02, 0x04, 0x18, 0xe0, 0x03, 0x1c, 0xe0, 0x30, 0xc8,
|
||||
0x01, 0x1e, 0x20, 0x40, 0x80, 0x01, 0x3e, 0xc0, 0x03, 0x02, 0x18, 0x18, 0x80, 0x40, 0x20, 0x10,
|
||||
0x10, 0x08, 0x08, 0x04, 0x03, 0xfc, 0x03, 0x80, 0x80, 0x40, 0x20, 0x10, 0x08, 0x84, 0xc2, 0xc1,
|
||||
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0xfc, 0xfd, 0xfd, 0x01, 0x07, 0x78,
|
||||
0x80, 0x38, 0xf8, 0xf8, 0xf1, 0xe1, 0xc3, 0x83, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x03, 0x03,
|
||||
0x07, 0x07, 0x07, 0x78, 0x81, 0x07, 0x07, 0x03, 0x03, 0x01, 0x07, 0xf8, 0x1f, 0xe0, 0x01, 0x1e,
|
||||
0xe0
|
||||
};
|
||||
|
||||
static const char PROGMEM tap_2_block_list[] = { //TAP_2 flipped
|
||||
0x3e, 0xc0, 0x07, 0xf8, 0x1f, 0xe0, 0x03, 0x7c, 0x80, 0x7e, 0xfe, 0xfe, 0xfe, 0x07, 0xf9, 0x01,
|
||||
0x02, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x82, 0x64, 0x18,
|
||||
0x01, 0x01, 0xe0, 0x18, 0x06, 0x01, 0xc0, 0xc0, 0x01, 0x02, 0x04, 0x18, 0xe0, 0x0f, 0x03, 0x04,
|
||||
0x04, 0x04, 0x04, 0x02, 0x1c, 0xe0, 0x30, 0xc8, 0x01, 0x1e, 0x20, 0x40, 0x80, 0x01, 0x3e, 0xc0,
|
||||
0x03, 0x02, 0x18, 0x18, 0x80, 0x40, 0x20, 0x10, 0x10, 0x08, 0x08, 0x04, 0x03, 0x0f, 0x70, 0x80,
|
||||
0x81, 0x01, 0x31, 0x32, 0x8a, 0x24, 0x86, 0x79, 0x07, 0x78, 0x81, 0x01, 0x01, 0x01, 0x01, 0x07,
|
||||
0x78, 0x80, 0x07, 0xf8, 0x1f, 0xe0, 0x01, 0x1e, 0xe0
|
||||
};
|
||||
|
||||
// idle_1 and idle_2 are identical, so share them and save some space
|
||||
const char* idle_frames[NUM_IDLE_FRAMES] = {
|
||||
idle_1_block_list,
|
||||
idle_1_block_list,
|
||||
idle_2_block_list,
|
||||
idle_3_block_list,
|
||||
idle_4_block_list
|
||||
};
|
||||
|
||||
const char* tap_frames[NUM_TAP_FRAMES] = {
|
||||
tap_1_block_list,
|
||||
tap_2_block_list
|
||||
};
|
||||
|
||||
// idle_1 and idle_2 are identical, so save some space
|
||||
const char* idle_block_map[NUM_IDLE_FRAMES] = {
|
||||
idle_1_block_map,
|
||||
idle_1_block_map,
|
||||
idle_2_block_map,
|
||||
idle_3_block_map,
|
||||
idle_4_block_map
|
||||
};
|
||||
|
||||
const char* tap_block_map[NUM_TAP_FRAMES] = {
|
||||
tap_1_block_map,
|
||||
tap_2_block_map
|
||||
};
|
||||
|
||||
#else
|
||||
|
||||
static const char PROGMEM idle_frames[NUM_IDLE_FRAMES][NUM_OLED_BYTES] = {
|
||||
{ // IDLE 1 flipped
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x3e, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x07, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x1f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x03, 0x7c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf9, 0x01, 0x01, 0x02, 0x02, 0x02, 0x04, 0x08, 0x08,
|
||||
0x08, 0x04, 0x04, 0x02, 0x02, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x78, 0x78, 0x00, 0xc0,
|
||||
0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x18, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x04, 0x04, 0x04, 0x02, 0x1c, 0xe0, 0x00, 0x00, 0x30, 0xc8,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3e, 0xc0, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3e, 0xc0, 0x00, 0x03,
|
||||
0xc2, 0xc0, 0x18, 0x18, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x10, 0x08, 0x07, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x80,
|
||||
0x83, 0x43, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x07,
|
||||
0x78, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x07, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
},
|
||||
{ //IDLE 2 flipped
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x3e, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x07, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x1f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x03, 0x7c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf9, 0x01, 0x01, 0x02, 0x02, 0x02, 0x04, 0x08, 0x08,
|
||||
0x08, 0x04, 0x04, 0x02, 0x02, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x78, 0x78, 0x00, 0xc0,
|
||||
0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x18, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x04, 0x04, 0x04, 0x02, 0x1c, 0xe0, 0x00, 0x00, 0x30, 0xc8,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3e, 0xc0, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3e, 0xc0, 0x00, 0x03,
|
||||
0xc2, 0xc0, 0x18, 0x18, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x10, 0x08, 0x07, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x80,
|
||||
0x83, 0x43, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x07,
|
||||
0x78, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x07, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
},
|
||||
{ //IDLE 3 flipped
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x3e, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x07, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x1f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x03, 0x7c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf9, 0x01, 0x02, 0x02, 0x06, 0x04, 0x08, 0x08, 0x04,
|
||||
0x04, 0x04, 0x02, 0x02, 0x02, 0x82, 0x64, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x78, 0x78, 0x00, 0xc0, 0xc0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x18, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x04, 0x04, 0x04, 0x02, 0x1c, 0xe0, 0x00, 0x30, 0xc8, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1e, 0x20, 0x40, 0x80, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3e, 0xc0, 0x03, 0xc2,
|
||||
0xc0, 0x18, 0x18, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x10, 0x08, 0x08, 0x04, 0x03, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x83,
|
||||
0x43, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x07,
|
||||
0x78, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x07, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
},
|
||||
{ //IDLE 4 flipped
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x3e, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x07, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x1f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x03, 0x7c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf9, 0x01, 0x02, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08,
|
||||
0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x82, 0x64, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x78, 0x78, 0x00, 0xc0,
|
||||
0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x18, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x04, 0x04, 0x04, 0x02, 0x1c, 0xe0, 0x00, 0x00, 0x30, 0xc8,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1e, 0x20, 0x40, 0x80, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3e, 0xc0, 0x00, 0x03,
|
||||
0xc2, 0xc0, 0x18, 0x18, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x10, 0x08, 0x08, 0x04, 0x03,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x80,
|
||||
0x83, 0x43, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x07,
|
||||
0x78, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x07, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
},
|
||||
{ //IDLE 5 flipped
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x3e, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x07, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x1f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x03, 0x7c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf9, 0x01, 0x02, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08,
|
||||
0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0xe4, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x78, 0x78, 0x00, 0xc0,
|
||||
0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x18, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x04, 0x04, 0x04, 0x02, 0x1c, 0xe0, 0x00, 0x00, 0x30, 0xc8,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1e, 0x60, 0x80, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3e, 0xc0, 0x00, 0x03,
|
||||
0xc2, 0xc0, 0x18, 0x18, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x10, 0x10, 0x08, 0x07, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x80,
|
||||
0x83, 0x43, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x07,
|
||||
0x78, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x07, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
}
|
||||
};
|
||||
static const char PROGMEM tap_frames[NUM_TAP_FRAMES][NUM_OLED_BYTES] = {
|
||||
{ //Tap 1 flipped
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x3e, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x07, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x1f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x03, 0x7c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf9, 0x01, 0x02, 0x02, 0x42, 0x44, 0x84, 0x88, 0x08,
|
||||
0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x82, 0x64, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0e, 0xf0, 0x20, 0x26, 0x26, 0x29, 0x10, 0xd5,
|
||||
0xce, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x18, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1c, 0xe0, 0x00, 0x00, 0x30, 0xc8,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1e, 0x20, 0x40, 0x80, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3e, 0xc0, 0x00, 0x03,
|
||||
0x02, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x10, 0x08, 0x08, 0x04, 0x03,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x80,
|
||||
0x80, 0x40, 0x20, 0x10, 0x08, 0x84, 0xc2, 0xc1, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0xfc, 0xfd, 0xfd, 0x01, 0x07,
|
||||
0x78, 0x80, 0x38, 0xf8, 0xf8, 0xf1, 0xe1, 0xc3, 0x83, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x07, 0x07, 0x00, 0x00,
|
||||
0x00, 0x07, 0x78, 0x81, 0x07, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
},
|
||||
{ //Tap 2 flipped
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x3e, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x07, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x1f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x03, 0x7c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x7e, 0xfe, 0xfe, 0xfe, 0x00, 0x07, 0xf9, 0x01, 0x02, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08,
|
||||
0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x82, 0x64, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x01, 0x01, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
|
||||
0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x18, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x0f, 0x00, 0x00, 0x00, 0x03, 0x04, 0x04, 0x04, 0x04, 0x02, 0x1c, 0xe0, 0x00, 0x00, 0x30, 0xc8,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1e, 0x20, 0x40, 0x80, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3e, 0xc0, 0x00, 0x03,
|
||||
0x02, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x10, 0x08, 0x08, 0x04, 0x03,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x70, 0x80,
|
||||
0x81, 0x01, 0x31, 0x32, 0x8a, 0x24, 0x86, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
|
||||
0x78, 0x81, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x07, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
},
|
||||
};
|
||||
#endif //USE_BITMAP_COMPRESSION
|
||||
#endif //OLED_ENABLE
|
@@ -1,97 +0,0 @@
|
||||
// Copyright 2022 Arturo Avila (@ADPenrose)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "animation_frames.h"
|
||||
|
||||
#ifdef OLED_ENABLE
|
||||
#define IDLE_FRAME_DURATION 200 // Idle animation iteration rate in ms
|
||||
|
||||
oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_270; }
|
||||
|
||||
uint32_t anim_timer = 0;
|
||||
uint32_t anim_sleep = 0;
|
||||
uint8_t current_idle_frame = 0;
|
||||
|
||||
bool tap_anim = false;
|
||||
bool tap_anim_toggle = false;
|
||||
|
||||
|
||||
// Decompress and write a precompressed bitmap frame to the OLED.
|
||||
// Documentation and python compression script available at:
|
||||
// https://github.com/nullbitsco/squeez-o
|
||||
#ifdef USE_OLED_BITMAP_COMPRESSION
|
||||
static void oled_write_compressed_P(const char* input_block_map, const char* input_block_list) {
|
||||
uint16_t block_index = 0;
|
||||
for (uint16_t i=0; i<NUM_OLED_BYTES; i++) {
|
||||
uint8_t bit = i%8;
|
||||
uint8_t map_index = i/8;
|
||||
uint8_t _block_map = (uint8_t)pgm_read_byte_near(input_block_map + map_index);
|
||||
uint8_t nonzero_byte = (_block_map & (1 << bit));
|
||||
if (nonzero_byte) {
|
||||
const char data = (const char)pgm_read_byte_near(input_block_list + block_index++);
|
||||
oled_write_raw_byte(data, i);
|
||||
} else {
|
||||
const char data = (const char)0x00;
|
||||
oled_write_raw_byte(data, i);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
static void render_anim(void) {
|
||||
// Idle animation
|
||||
void animation_phase(void) {
|
||||
if (!tap_anim) {
|
||||
current_idle_frame = (current_idle_frame + 1) % NUM_IDLE_FRAMES;
|
||||
uint8_t idx = abs((NUM_IDLE_FRAMES - 1) - current_idle_frame);
|
||||
#ifdef USE_OLED_BITMAP_COMPRESSION
|
||||
oled_write_compressed_P(idle_block_map[idx], idle_frames[idx]);
|
||||
#else
|
||||
oled_write_raw_P(idle_frames[idx], NUM_OLED_BYTES);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
// Idle behaviour
|
||||
if (get_current_wpm() != 000) { // prevent sleep
|
||||
oled_on();
|
||||
if (timer_elapsed32(anim_timer) > IDLE_FRAME_DURATION) {
|
||||
anim_timer = timer_read32();
|
||||
animation_phase();
|
||||
}
|
||||
anim_sleep = timer_read32();
|
||||
} else { // Turn off screen when timer threshold elapsed or reset time since last input
|
||||
if (timer_elapsed32(anim_sleep) > OLED_TIMEOUT) {
|
||||
oled_off();
|
||||
} else {
|
||||
if (timer_elapsed32(anim_timer) > IDLE_FRAME_DURATION) {
|
||||
anim_timer = timer_read32();
|
||||
animation_phase();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
// Animate tap
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
#ifdef OLED_ENABLE
|
||||
// Check if non-mod
|
||||
if ((keycode >= KC_TAB && keycode <= KC_SLASH) || // Tab - Slash (Symbols, Punctuation, Space)
|
||||
(keycode >= KC_KP_SLASH && keycode <= KC_KP_COMMA) || // Keypad slash - Keypad Dot
|
||||
(keycode >= KC_F1 && keycode <= KC_F12)) { // F1 - F12
|
||||
if (record->event.pressed) {
|
||||
// Display tap frames
|
||||
tap_anim_toggle = !tap_anim_toggle;
|
||||
#ifdef USE_OLED_BITMAP_COMPRESSION
|
||||
oled_write_compressed_P(tap_block_map[tap_anim_toggle], tap_frames[tap_anim_toggle]);
|
||||
#else
|
||||
oled_write_raw_P(tap_frames[tap_anim_toggle], NUM_OLED_BYTES);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
return true;
|
||||
}
|
@@ -1,17 +0,0 @@
|
||||
// Copyright 2022 Arturo Avila (@ADPenrose)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifdef AUDIO_ENABLE
|
||||
# define NO_MUSIC_MODE
|
||||
#endif
|
||||
|
||||
#ifdef OLED_ENABLE
|
||||
# define OLED_TIMEOUT 120000
|
||||
#endif
|
||||
|
||||
#undef LOCKING_SUPPORT_ENABLE
|
||||
#undef LOCKING_RESYNC_ENABLE
|
||||
#define NO_ACTION_ONESHOT
|
||||
#define LAYER_STATE_8BIT
|
@@ -1,177 +0,0 @@
|
||||
// Copyright 2022 Arturo Avila (@ADPenrose), Christopher Courtney/Drashna Jael're (@drashna)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "animation_process.h"
|
||||
|
||||
/* Structure that helps store settings in memory and write to the EEPROM: */
|
||||
typedef union {
|
||||
uint32_t raw;
|
||||
struct {
|
||||
bool split_zero :1;
|
||||
bool split_enter :1;
|
||||
bool split_plus :1;
|
||||
};
|
||||
} via_layout_t;
|
||||
|
||||
via_layout_t via_layouts;
|
||||
|
||||
/* Keymap */
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_all(
|
||||
MO(1), MO(2), MO(3), CK_TOGG,
|
||||
KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
|
||||
KC_P7, KC_P8, KC_P9, KC_PPLS,
|
||||
KC_P4, KC_P5, KC_P6, KC_PPLS,
|
||||
KC_P1, KC_P2, KC_P3, KC_PENT,
|
||||
KC_MUTE, KC_P0, KC_P0, KC_PDOT, KC_PENT
|
||||
),
|
||||
[1] = LAYOUT_all(
|
||||
KC_TRNS, CK_DOWN, CK_UP, CK_RST,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
[2] = LAYOUT_all(
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
[3] = LAYOUT_all(
|
||||
QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
)
|
||||
};
|
||||
|
||||
#if defined(ENCODER_MAP_ENABLE)
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
|
||||
[0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||
[1] = { ENCODER_CCW_CW(RGB_HUD, RGB_HUI) },
|
||||
[2] = { ENCODER_CCW_CW(RGB_SAD, RGB_SAI) },
|
||||
[3] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }
|
||||
};
|
||||
#endif
|
||||
|
||||
/* Setting layout options and debuggin text */
|
||||
void via_set_layout_options_kb(uint32_t value) {
|
||||
via_layouts.raw = value;
|
||||
#ifdef CONSOLE_ENABLE
|
||||
if (via_layouts.split_zero && via_layouts.split_enter && via_layouts.split_plus){
|
||||
xprintf("All three layouts are active with a value of: %d\n", value);
|
||||
} else if (!(via_layouts.split_zero) && via_layouts.split_enter && via_layouts.split_plus){
|
||||
xprintf("SE and SP layouts are active with a value of: %d\n", value);
|
||||
} else if (via_layouts.split_zero && !(via_layouts.split_enter) && via_layouts.split_plus){
|
||||
xprintf("SZ and SP layouts are active with a value of: %d\n", value);
|
||||
} else if (!(via_layouts.split_zero) && !(via_layouts.split_enter) && via_layouts.split_plus){
|
||||
xprintf("SP is the only layout active with a value of: %d\n", value);
|
||||
} else if (via_layouts.split_zero && via_layouts.split_enter && !(via_layouts.split_plus)){
|
||||
xprintf("SE and SZ layouts are active with a value of: %d\n", value);
|
||||
} else if (!(via_layouts.split_zero) && via_layouts.split_enter && !(via_layouts.split_plus)) {
|
||||
xprintf("SE is the only layout active with a value of: %d\n", value);
|
||||
} else if (via_layouts.split_zero && !(via_layouts.split_enter) && !(via_layouts.split_plus)){
|
||||
xprintf("SZ is the only layout active with a value of: %d\n", value);
|
||||
} else {
|
||||
xprintf("The base layout is active with a value of: %d\n", value);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Turing LEDs on/off depending on the layout selected on VIA */
|
||||
bool rgb_matrix_indicators_user(void){
|
||||
if (via_layouts.split_zero && via_layouts.split_enter && via_layouts.split_plus){
|
||||
rgb_matrix_set_color(12, 0, 0, 0);
|
||||
rgb_matrix_set_color(21, 0, 0, 0);
|
||||
rgb_matrix_set_color(23, 0, 0, 0);
|
||||
} else if (!(via_layouts.split_zero) && via_layouts.split_enter && via_layouts.split_plus){
|
||||
rgb_matrix_set_color(12, 0, 0, 0);
|
||||
rgb_matrix_set_color(21, 0, 0, 0);
|
||||
rgb_matrix_set_color(22, 0, 0, 0);
|
||||
rgb_matrix_set_color(24, 0, 0, 0);
|
||||
} else if (via_layouts.split_zero && !(via_layouts.split_enter) && via_layouts.split_plus){
|
||||
rgb_matrix_set_color(12, 0, 0, 0);
|
||||
rgb_matrix_set_color(20, 0, 0, 0);
|
||||
rgb_matrix_set_color(23, 0, 0, 0);
|
||||
rgb_matrix_set_color(26, 0, 0, 0);
|
||||
} else if (!(via_layouts.split_zero) && !(via_layouts.split_enter) && via_layouts.split_plus){
|
||||
rgb_matrix_set_color(12, 0, 0, 0);
|
||||
rgb_matrix_set_color(20, 0, 0, 0);
|
||||
rgb_matrix_set_color(22, 0, 0, 0);
|
||||
rgb_matrix_set_color(24, 0, 0, 0);
|
||||
rgb_matrix_set_color(26, 0, 0, 0);
|
||||
} else if (via_layouts.split_zero && via_layouts.split_enter && !(via_layouts.split_plus)){
|
||||
rgb_matrix_set_color(11, 0, 0, 0);
|
||||
rgb_matrix_set_color(16, 0, 0, 0);
|
||||
rgb_matrix_set_color(21, 0, 0, 0);
|
||||
rgb_matrix_set_color(23, 0, 0, 0);
|
||||
} else if (!(via_layouts.split_zero) && via_layouts.split_enter && !(via_layouts.split_plus)) {
|
||||
rgb_matrix_set_color(11, 0, 0, 0);
|
||||
rgb_matrix_set_color(16, 0, 0, 0);
|
||||
rgb_matrix_set_color(21, 0, 0, 0);
|
||||
rgb_matrix_set_color(22, 0, 0, 0);
|
||||
rgb_matrix_set_color(24, 0, 0, 0);
|
||||
} else if (via_layouts.split_zero && !(via_layouts.split_enter) && !(via_layouts.split_plus)){
|
||||
rgb_matrix_set_color(11, 0, 0, 0);
|
||||
rgb_matrix_set_color(16, 0, 0, 0);
|
||||
rgb_matrix_set_color(20, 0, 0, 0);
|
||||
rgb_matrix_set_color(23, 0, 0, 0);
|
||||
rgb_matrix_set_color(26, 0, 0, 0);
|
||||
} else {
|
||||
rgb_matrix_set_color(11, 0, 0, 0);
|
||||
rgb_matrix_set_color(16, 0, 0, 0);
|
||||
rgb_matrix_set_color(20, 0, 0, 0);
|
||||
rgb_matrix_set_color(22, 0, 0, 0);
|
||||
rgb_matrix_set_color(24, 0, 0, 0);
|
||||
rgb_matrix_set_color(26, 0, 0, 0);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/* OLED stuff */
|
||||
#ifdef OLED_ENABLE
|
||||
bool oled_task_user(void) {
|
||||
render_anim();
|
||||
|
||||
// WPM render
|
||||
oled_set_cursor(1, 0);
|
||||
oled_write_P(PSTR(">"), false);
|
||||
oled_write(get_u8_str(get_current_wpm(), '0'), false);
|
||||
|
||||
// Host Keyboard LED Status
|
||||
led_t led_state = host_keyboard_led_state();
|
||||
oled_set_cursor(0,14);
|
||||
oled_write_P(led_state.caps_lock ? PSTR("CPSLK") :" ", true);
|
||||
oled_set_cursor(0,15);
|
||||
oled_write_P(led_state.num_lock ? PSTR("NUMLK") :" ", true);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/* WPM calculation considerations */
|
||||
bool wpm_keycode_user(uint16_t keycode) {
|
||||
if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) ||
|
||||
(keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX) ||
|
||||
(keycode >= QK_MODS && keycode <= QK_MODS_MAX)) {
|
||||
keycode = keycode & 0xFF;
|
||||
} else if (keycode > 0xFF) {
|
||||
keycode = 0;
|
||||
}
|
||||
|
||||
// Include keys in WPM calculation
|
||||
if ((keycode >= KC_TAB && keycode <= KC_SLASH) || // Tab - Slash (Symbols, Punctuation, Space)
|
||||
(keycode >= KC_KP_SLASH && keycode <= KC_KP_COMMA) || // Keypad numbers - Keypad Dot
|
||||
(keycode >= KC_F1 && keycode <= KC_F12)) { // F1 - F12
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
#endif
|
@@ -1,19 +0,0 @@
|
||||
# The Bongo Cat VIA-compatible keymap for the AkemiPad
|
||||
|
||||
# Features
|
||||
- Audio Click capabilitiy.
|
||||
- RGB Matrix Lighting (cycles left-right and up-down).
|
||||
- LEDs turn on and off depending on the layout selected on the VIA UI.
|
||||
- Encoder Map feature.
|
||||
- Bongo Cat animation with WPM counter and Caps Lock/Num Lock indicators.
|
||||
|
||||
This keymap is optimized for a numpad and can fit the RGB matrix (with
|
||||
very few animations due to AVR constraints), the encoder map, the audio
|
||||
click feature and the display of the OLED animations. This was possible
|
||||
thanks to the [squeez-o](https://github.com/nullbitsco/squeez-o) compression tool.
|
||||
|
||||

|
||||
|
||||
___
|
||||
|
||||
###### *This keymap is an adaptation designed to work with the AkemiPad. The reference keymap used was created for the Nibble keyboard, and you can check it [here](https://github.com/qmk/qmk_firmware/tree/master/keyboards/nullbitsco/nibble/keymaps/oled_bongocat).*
|
@@ -1,9 +0,0 @@
|
||||
VIA_ENABLE = yes
|
||||
LTO_ENABLE = yes
|
||||
SPACE_CADET_ENABLE = no
|
||||
GRAVE_ESC_ENABLE = no
|
||||
MAGIC_ENABLE = no
|
||||
ENCODER_MAP_ENABLE = yes
|
||||
OLED_ENABLE = yes
|
||||
OLED_DRIVER = SSD1306
|
||||
WPM_ENABLE = yes
|
@@ -1,135 +0,0 @@
|
||||
// Copyright 2022 Arturo Avila (@ADPenrose), Christopher Courtney/Drashna Jael're (@drashna)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
/* Structure that helps store settings in memory and write to the EEPROM: */
|
||||
typedef union {
|
||||
uint32_t raw;
|
||||
struct {
|
||||
bool split_zero :1;
|
||||
bool split_enter :1;
|
||||
bool split_plus :1;
|
||||
};
|
||||
} via_layout_t;
|
||||
|
||||
via_layout_t via_layouts;
|
||||
|
||||
/* Keymap */
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_all(
|
||||
MO(1), MO(2), MO(3), KC_DEL,
|
||||
KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
|
||||
KC_P7, KC_P8, KC_P9, KC_PPLS,
|
||||
KC_P4, KC_P5, KC_P6, KC_PPLS,
|
||||
KC_P1, KC_P2, KC_P3, KC_PENT,
|
||||
KC_MUTE, KC_P0, KC_P0, KC_PDOT, KC_PENT
|
||||
),
|
||||
[1] = LAYOUT_all(
|
||||
KC_TRNS, CK_DOWN, CK_UP, CK_RST,
|
||||
MU_TOG, MU_MOD, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
CK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
[2] = LAYOUT_all(
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
[3] = LAYOUT_all(
|
||||
QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
)
|
||||
};
|
||||
|
||||
#if defined(ENCODER_MAP_ENABLE)
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
|
||||
[0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||
[1] = { ENCODER_CCW_CW(RGB_HUD, RGB_HUI) },
|
||||
[2] = { ENCODER_CCW_CW(RGB_SAD, RGB_SAI) },
|
||||
[3] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }
|
||||
};
|
||||
#endif
|
||||
|
||||
/* Setting layout options and debugging text indicators */
|
||||
void via_set_layout_options_kb(uint32_t value) {
|
||||
via_layouts.raw = value;
|
||||
#ifdef CONSOLE_ENABLE
|
||||
if (via_layouts.split_zero && via_layouts.split_enter && via_layouts.split_plus){
|
||||
xprintf("All three layouts are active with a value of: %d\n", value);
|
||||
} else if (!(via_layouts.split_zero) && via_layouts.split_enter && via_layouts.split_plus){
|
||||
xprintf("SE and SP layouts are active with a value of: %d\n", value);
|
||||
} else if (via_layouts.split_zero && !(via_layouts.split_enter) && via_layouts.split_plus){
|
||||
xprintf("SZ and SP layouts are active with a value of: %d\n", value);
|
||||
} else if (!(via_layouts.split_zero) && !(via_layouts.split_enter) && via_layouts.split_plus){
|
||||
xprintf("SP is the only layout active with a value of: %d\n", value);
|
||||
} else if (via_layouts.split_zero && via_layouts.split_enter && !(via_layouts.split_plus)){
|
||||
xprintf("SE and SZ layouts are active with a value of: %d\n", value);
|
||||
} else if (!(via_layouts.split_zero) && via_layouts.split_enter && !(via_layouts.split_plus)) {
|
||||
xprintf("SE is the only layout active with a value of: %d\n", value);
|
||||
} else if (via_layouts.split_zero && !(via_layouts.split_enter) && !(via_layouts.split_plus)){
|
||||
xprintf("SZ is the only layout active with a value of: %d\n", value);
|
||||
} else {
|
||||
xprintf("The base layout is active with a value of: %d\n", value);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Turing LEDs on/off depending on the layout selected on VIA */
|
||||
bool rgb_matrix_indicators_user(void){
|
||||
if (via_layouts.split_zero && via_layouts.split_enter && via_layouts.split_plus){
|
||||
rgb_matrix_set_color(12, 0, 0, 0);
|
||||
rgb_matrix_set_color(21, 0, 0, 0);
|
||||
rgb_matrix_set_color(23, 0, 0, 0);
|
||||
} else if (!(via_layouts.split_zero) && via_layouts.split_enter && via_layouts.split_plus){
|
||||
rgb_matrix_set_color(12, 0, 0, 0);
|
||||
rgb_matrix_set_color(21, 0, 0, 0);
|
||||
rgb_matrix_set_color(22, 0, 0, 0);
|
||||
rgb_matrix_set_color(24, 0, 0, 0);
|
||||
} else if (via_layouts.split_zero && !(via_layouts.split_enter) && via_layouts.split_plus){
|
||||
rgb_matrix_set_color(12, 0, 0, 0);
|
||||
rgb_matrix_set_color(20, 0, 0, 0);
|
||||
rgb_matrix_set_color(23, 0, 0, 0);
|
||||
rgb_matrix_set_color(26, 0, 0, 0);
|
||||
} else if (!(via_layouts.split_zero) && !(via_layouts.split_enter) && via_layouts.split_plus){
|
||||
rgb_matrix_set_color(12, 0, 0, 0);
|
||||
rgb_matrix_set_color(20, 0, 0, 0);
|
||||
rgb_matrix_set_color(22, 0, 0, 0);
|
||||
rgb_matrix_set_color(24, 0, 0, 0);
|
||||
rgb_matrix_set_color(26, 0, 0, 0);
|
||||
} else if (via_layouts.split_zero && via_layouts.split_enter && !(via_layouts.split_plus)){
|
||||
rgb_matrix_set_color(11, 0, 0, 0);
|
||||
rgb_matrix_set_color(16, 0, 0, 0);
|
||||
rgb_matrix_set_color(21, 0, 0, 0);
|
||||
rgb_matrix_set_color(23, 0, 0, 0);
|
||||
} else if (!(via_layouts.split_zero) && via_layouts.split_enter && !(via_layouts.split_plus)) {
|
||||
rgb_matrix_set_color(11, 0, 0, 0);
|
||||
rgb_matrix_set_color(16, 0, 0, 0);
|
||||
rgb_matrix_set_color(21, 0, 0, 0);
|
||||
rgb_matrix_set_color(22, 0, 0, 0);
|
||||
rgb_matrix_set_color(24, 0, 0, 0);
|
||||
} else if (via_layouts.split_zero && !(via_layouts.split_enter) && !(via_layouts.split_plus)){
|
||||
rgb_matrix_set_color(11, 0, 0, 0);
|
||||
rgb_matrix_set_color(16, 0, 0, 0);
|
||||
rgb_matrix_set_color(20, 0, 0, 0);
|
||||
rgb_matrix_set_color(23, 0, 0, 0);
|
||||
rgb_matrix_set_color(26, 0, 0, 0);
|
||||
} else {
|
||||
rgb_matrix_set_color(11, 0, 0, 0);
|
||||
rgb_matrix_set_color(16, 0, 0, 0);
|
||||
rgb_matrix_set_color(20, 0, 0, 0);
|
||||
rgb_matrix_set_color(22, 0, 0, 0);
|
||||
rgb_matrix_set_color(24, 0, 0, 0);
|
||||
rgb_matrix_set_color(26, 0, 0, 0);
|
||||
}
|
||||
return false;
|
||||
}
|
@@ -1,15 +0,0 @@
|
||||
# The VIA-compatible keymap for the AkemiPad
|
||||
|
||||
# Features
|
||||
- Audio Click and Music Mode capabilities.
|
||||
- RGB Matrix Lighting (cycles left-right and up-down).
|
||||
- LEDs turn on and off depending on the layout selected on the VIA UI.
|
||||
- Encoder Map feature.
|
||||
|
||||
## The star of the show: the "RGB matrix layout-dependant" capability
|
||||
Inside of this keymap resides the first implementation (AFAIK) of a LED matrix that turns
|
||||
LEDs on and off, depending on the layout/layouts activated through VIA. The available
|
||||
layouts are as follows:
|
||||
|
||||
[](https://tinyurl.com/KLE-AkemiPad)
|
||||
|
@@ -1,27 +0,0 @@
|
||||
# AkemiPad
|
||||
|
||||

|
||||
|
||||
A numpad powered by a ProMicro (currently ATmega based), with multiple layout options and support for an encoder, a piezo buzzer, an OLED, and per-key RGB lighting.
|
||||
|
||||
* Keyboard Maintainer: [Arturo Avila](https://github.com/ADPenrose)
|
||||
* Hardware Supported: AkemiPad v1 PCB
|
||||
* Hardware Availability: [Arturo Avila](https://github.com/ADPenrose)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make adpenrose/akemipad:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make adpenrose/akemipad:default:flash
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
|
||||
## Bootloader
|
||||
|
||||
Enter the bootloader in 3 ways:
|
||||
|
||||
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
|
||||
* **Physical reset button**: Quickly press two times the button on the back of the PCB
|
||||
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
|
@@ -1,21 +0,0 @@
|
||||
# MCU name
|
||||
MCU = atmega32u4
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = caterina
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
|
||||
MOUSEKEY_ENABLE = no # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = no # Console for debug
|
||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||
NKRO_ENABLE = no # Enable N-Key Rollover
|
||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||
AUDIO_ENABLE = yes # Audio output
|
||||
RGB_MATRIX_ENABLE = yes
|
||||
RGB_MATRIX_DRIVER = WS2812
|
||||
ENCODER_ENABLE = yes
|
@@ -37,4 +37,4 @@
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
#define BOOTMAGIC_LITE_ROW 0
|
||||
#define BOOTMAGIC_LITE_COLUMN 5
|
||||
#define BOOTMAGIC_LITE_COL 5
|
||||
|
@@ -31,4 +31,4 @@
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
#define BOOTMAGIC_LITE_ROW 0
|
||||
#define BOOTMAGIC_LITE_COLUMN 0
|
||||
#define BOOTMAGIC_LITE_COL 0
|
||||
|
@@ -1,25 +0,0 @@
|
||||
// Copyright 2022 Jason Devadoss (@jasonj2232)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "config_common.h"
|
||||
|
||||
#define BOOTMAGIC_LITE_ROW 1
|
||||
#define BOOTMAGIC_LITE_COLUMN 0
|
||||
|
||||
/*
|
||||
* Feature disable options
|
||||
* These options are also useful to firmware size reduction.
|
||||
*/
|
||||
|
||||
/* disable debug print */
|
||||
//#define NO_DEBUG
|
||||
|
||||
/* disable print */
|
||||
//#define NO_PRINT
|
||||
|
||||
/* disable action features */
|
||||
//#define NO_ACTION_LAYER
|
||||
//#define NO_ACTION_TAPPING
|
||||
//#define NO_ACTION_ONESHOT
|
@@ -1,111 +0,0 @@
|
||||
{
|
||||
"manufacturer": "Argo Works",
|
||||
"keyboard_name": "Ishi 80 Mk 0",
|
||||
"maintainer": "jasonj2232",
|
||||
"development_board": "promicro",
|
||||
"diode_direction": "COL2ROW",
|
||||
"url": "https://qmk.fm/keyboards/",
|
||||
"usb": {
|
||||
"device_version": "0.0.1",
|
||||
"pid": "0x4930",
|
||||
"vid": "0x4157"
|
||||
},
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"command": false,
|
||||
"console": false,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true,
|
||||
"encoder": false
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["D3", "F4", "F5", "F6", "F7", "D7", "C6", "D4", "D2"],
|
||||
"rows": ["B3", "B1", "B6", "B2", "D1", "D0", "B5", "B4", "E6"]
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{ "matrix": [1, 0], "x": 0, "y": 0 },
|
||||
{ "matrix": [0, 0], "x": 1, "y": 0 },
|
||||
{ "matrix": [1, 1], "x": 2, "y": 0 },
|
||||
{ "matrix": [0, 1], "x": 3, "y": 0 },
|
||||
{ "matrix": [1, 2], "x": 5.25, "y": 0 },
|
||||
{ "matrix": [0, 2], "x": 6.25, "y": 0 },
|
||||
{ "matrix": [1, 3], "x": 7.25, "y": 0 },
|
||||
{ "matrix": [0, 3], "x": 8.25, "y": 0 },
|
||||
{ "matrix": [1, 4], "x": 9.25, "y": 0 },
|
||||
{ "matrix": [0, 4], "x": 10.25, "y": 0 },
|
||||
{ "matrix": [1, 5], "x": 11.25, "y": 0 },
|
||||
{ "matrix": [0, 5], "x": 12.25, "y": 0 },
|
||||
{ "matrix": [1, 6], "x": 13.25, "y": 0 },
|
||||
{ "matrix": [0, 6], "x": 14.25, "y": 0 },
|
||||
{ "matrix": [1, 7], "x": 15.25, "y": 0 },
|
||||
{ "matrix": [0, 7], "x": 16.25, "y": 0 },
|
||||
{ "matrix": [1, 8], "x": 17.25, "y": 0 },
|
||||
{ "matrix": [0, 8], "x": 18.25, "y": 0, "w": 2 },
|
||||
{ "matrix": [3, 0], "x": 0, "y": 1, "h": 2 },
|
||||
{ "matrix": [2, 0], "x": 1, "y": 1 },
|
||||
{ "matrix": [3, 1], "x": 2, "y": 1 },
|
||||
{ "matrix": [2, 1], "x": 3, "y": 1 },
|
||||
{ "matrix": [3, 2], "x": 5.25, "y": 1, "w": 1.5 },
|
||||
{ "matrix": [2, 2], "x": 6.75, "y": 1 },
|
||||
{ "matrix": [3, 3], "x": 7.75, "y": 1 },
|
||||
{ "matrix": [2, 3], "x": 8.75, "y": 1 },
|
||||
{ "matrix": [3, 4], "x": 9.75, "y": 1 },
|
||||
{ "matrix": [2, 4], "x": 10.75, "y": 1 },
|
||||
{ "matrix": [3, 5], "x": 11.75, "y": 1 },
|
||||
{ "matrix": [2, 5], "x": 12.75, "y": 1 },
|
||||
{ "matrix": [3, 6], "x": 13.75, "y": 1 },
|
||||
{ "matrix": [2, 6], "x": 14.75, "y": 1 },
|
||||
{ "matrix": [3, 7], "x": 15.75, "y": 1 },
|
||||
{ "matrix": [2, 7], "x": 16.75, "y": 1 },
|
||||
{ "matrix": [3, 8], "x": 17.75, "y": 1 },
|
||||
{ "matrix": [2, 8], "x": 18.75, "y": 1, "w": 1.5 },
|
||||
{ "matrix": [4, 0], "x": 1, "y": 2 },
|
||||
{ "matrix": [5, 1], "x": 2, "y": 2 },
|
||||
{ "matrix": [4, 1], "x": 3, "y": 2 },
|
||||
{ "matrix": [5, 2], "x": 5.25, "y": 2, "w": 1.75 },
|
||||
{ "matrix": [4, 2], "x": 7, "y": 2 },
|
||||
{ "matrix": [5, 3], "x": 8, "y": 2 },
|
||||
{ "matrix": [4, 3], "x": 9, "y": 2 },
|
||||
{ "matrix": [5, 4], "x": 10, "y": 2 },
|
||||
{ "matrix": [4, 4], "x": 11, "y": 2 },
|
||||
{ "matrix": [5, 5], "x": 12, "y": 2 },
|
||||
{ "matrix": [4, 5], "x": 13, "y": 2 },
|
||||
{ "matrix": [5, 6], "x": 14, "y": 2 },
|
||||
{ "matrix": [4, 6], "x": 15, "y": 2 },
|
||||
{ "matrix": [5, 7], "x": 16, "y": 2 },
|
||||
{ "matrix": [4, 7], "x": 17, "y": 2 },
|
||||
{ "matrix": [4, 8], "x": 18, "y": 2, "w": 2.25 },
|
||||
{ "matrix": [7, 0], "x": 0, "y": 3, "h": 2 },
|
||||
{ "matrix": [6, 0], "x": 1, "y": 3 },
|
||||
{ "matrix": [7, 1], "x": 2, "y": 3 },
|
||||
{ "matrix": [6, 1], "x": 3, "y": 3 },
|
||||
{ "matrix": [7, 2], "x": 5.25, "y": 3, "w": 2.25 },
|
||||
{ "matrix": [7, 3], "x": 7.5, "y": 3 },
|
||||
{ "matrix": [6, 3], "x": 8.5, "y": 3 },
|
||||
{ "matrix": [7, 4], "x": 9.5, "y": 3 },
|
||||
{ "matrix": [6, 4], "x": 10.5, "y": 3 },
|
||||
{ "matrix": [7, 5], "x": 11.5, "y": 3 },
|
||||
{ "matrix": [6, 5], "x": 12.5, "y": 3 },
|
||||
{ "matrix": [7, 6], "x": 13.5, "y": 3 },
|
||||
{ "matrix": [6, 6], "x": 14.5, "y": 3 },
|
||||
{ "matrix": [7, 7], "x": 15.5, "y": 3 },
|
||||
{ "matrix": [6, 7], "x": 16.5, "y": 3 },
|
||||
{ "matrix": [6, 8], "x": 17.5, "y": 3, "w": 2.75 },
|
||||
{ "matrix": [8, 0], "x": 1, "y": 4 },
|
||||
{ "matrix": [8, 1], "x": 2, "y": 4, "w": 2 },
|
||||
{ "matrix": [8, 2], "x": 5.25, "y": 4, "w": 1.25 },
|
||||
{ "matrix": [6, 2], "x": 6.5, "y": 4, "w": 1.25 },
|
||||
{ "matrix": [8, 3], "x": 7.75, "y": 4, "w": 1.25 },
|
||||
{ "matrix": [8, 4], "x": 9, "y": 4, "w": 6.25 },
|
||||
{ "matrix": [8, 5], "x": 15.25, "y": 4, "w": 1.25 },
|
||||
{ "matrix": [8, 6], "x": 16.5, "y": 4, "w": 1.25 },
|
||||
{ "matrix": [8, 7], "x": 17.75, "y": 4, "w": 1.25 },
|
||||
{ "matrix": [7, 8], "x": 19, "y": 4, "w": 1.25 },
|
||||
{ "matrix": [8, 8], "x": 21.5, "y": 4 }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,42 +0,0 @@
|
||||
/* Copyright 2022 Jason Devadoss (@jasonj2232)
|
||||
*
|
||||
* 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
|
||||
|
||||
enum custom_layers {
|
||||
BL,
|
||||
UL,
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[BL] = LAYOUT(
|
||||
KC_PMNS, KC_PAST, KC_PSLS, KC_NUM, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
|
||||
KC_PPLS, KC_P9, KC_P8, KC_P7, 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_P6, KC_P5, KC_P4, KC_CAPS_LOCK, 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_PENT, KC_P3, KC_P2, KC_P1, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
||||
KC_PDOT, KC_P0, KC_LCTL, KC_LGUI, LT(1, KC_LALT), KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_AUDIO_MUTE
|
||||
|
||||
),
|
||||
|
||||
[UL] = LAYOUT(
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_GRAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,
|
||||
KC_PSCR, KC_SCRL, KC_PAUS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT,KC_DOWN, KC_DOWN, KC_MPLY
|
||||
),
|
||||
};
|
@@ -1,60 +0,0 @@
|
||||
/* Copyright 2022 Jason Devadoss (@jasonj2232)
|
||||
*
|
||||
* 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
|
||||
|
||||
enum custom_layers {
|
||||
BL,
|
||||
UL,
|
||||
TL,
|
||||
FL,
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[BL] = LAYOUT(
|
||||
KC_PMNS, KC_PAST, KC_PSLS, KC_NUM, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
|
||||
KC_PPLS, KC_P9, KC_P8, KC_P7, 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_P6, KC_P5, KC_P4, KC_CAPS_LOCK, 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_PENT, KC_P3, KC_P2, KC_P1, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
||||
KC_PDOT, KC_P0, KC_LCTL, KC_LGUI, LT(1, KC_LALT), KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_AUDIO_MUTE
|
||||
|
||||
),
|
||||
|
||||
[UL] = LAYOUT(
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_GRAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,
|
||||
KC_PSCR, KC_SCRL, KC_PAUS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT,KC_DOWN, KC_DOWN, KC_MPLY
|
||||
),
|
||||
|
||||
[TL] = LAYOUT(
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
|
||||
[FL] = LAYOUT(
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
};
|
@@ -1 +0,0 @@
|
||||
VIA_ENABLE = yes
|
@@ -1,29 +0,0 @@
|
||||
# Ishi 80 Mk 0
|
||||
|
||||

|
||||
|
||||
Ishi 80 is a 60% keyboard with a SouthPaw, Mirrored Numpad.
|
||||
|
||||
Note: This firmware is for ATMega32U4 based daughterboards with the standard Pro-Micro footprint. It does not support the Encoder and OLED display functionality.
|
||||
|
||||
* Keyboard Maintainer: [Jason Devadoss](https://github.com/jasonj2232)
|
||||
* Hardware Supported: Ishi80 Mk 0 with standard Pro Micro footprint daughterboards
|
||||
* Hardware Availability: -
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make argo_works/ishi/80/mk0_avr:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make argo_works/ishi/80/mk0_avr:default:flash
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
|
||||
## Bootloader
|
||||
|
||||
Enter the bootloader in 3 ways:
|
||||
|
||||
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
|
||||
* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
|
||||
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
|
@@ -1 +0,0 @@
|
||||
# This file intentionally left blank
|
@@ -1,29 +0,0 @@
|
||||
// Copyright 2022 Jason Devadoss (@jasonj2232)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "config_common.h"
|
||||
|
||||
#define BOOTMAGIC_LITE_ROW 1
|
||||
#define BOOTMAGIC_LITE_COLUMN 0
|
||||
|
||||
//Uncomment the below if the encoder direction is flipped/opposite to what is expected
|
||||
|
||||
//#define ENCODER_DIRECTION_FLIP
|
||||
|
||||
/*
|
||||
* Feature disable options
|
||||
* These options are also useful to firmware size reduction.
|
||||
*/
|
||||
|
||||
/* disable debug print */
|
||||
//#define NO_DEBUG
|
||||
|
||||
/* disable print */
|
||||
//#define NO_PRINT
|
||||
|
||||
/* disable action features */
|
||||
//#define NO_ACTION_LAYER
|
||||
//#define NO_ACTION_TAPPING
|
||||
//#define NO_ACTION_ONESHOT
|
@@ -1,117 +0,0 @@
|
||||
{
|
||||
"manufacturer": "Argo Works",
|
||||
"keyboard_name": "Ishi 80 Mk 0",
|
||||
"maintainer": "jasonj2232",
|
||||
"development_board": "elite_c",
|
||||
"pin_compatible": "elite_c",
|
||||
"diode_direction": "COL2ROW",
|
||||
"url": "https://qmk.fm/keyboards/",
|
||||
"usb": {
|
||||
"device_version": "0.0.1",
|
||||
"pid": "0x4930",
|
||||
"vid": "0x4157"
|
||||
},
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"command": false,
|
||||
"console": false,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true,
|
||||
"encoder": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["D3", "F4", "F5", "F6", "F7", "D7", "C6", "D4", "D2"],
|
||||
"rows": ["B3", "B1", "B6", "B2", "F0", "F1", "B5", "B4", "E6"]
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{ "matrix": [1, 0], "x": 0, "y": 0 },
|
||||
{ "matrix": [0, 0], "x": 1, "y": 0 },
|
||||
{ "matrix": [1, 1], "x": 2, "y": 0 },
|
||||
{ "matrix": [0, 1], "x": 3, "y": 0 },
|
||||
{ "matrix": [1, 2], "x": 5.25, "y": 0 },
|
||||
{ "matrix": [0, 2], "x": 6.25, "y": 0 },
|
||||
{ "matrix": [1, 3], "x": 7.25, "y": 0 },
|
||||
{ "matrix": [0, 3], "x": 8.25, "y": 0 },
|
||||
{ "matrix": [1, 4], "x": 9.25, "y": 0 },
|
||||
{ "matrix": [0, 4], "x": 10.25, "y": 0 },
|
||||
{ "matrix": [1, 5], "x": 11.25, "y": 0 },
|
||||
{ "matrix": [0, 5], "x": 12.25, "y": 0 },
|
||||
{ "matrix": [1, 6], "x": 13.25, "y": 0 },
|
||||
{ "matrix": [0, 6], "x": 14.25, "y": 0 },
|
||||
{ "matrix": [1, 7], "x": 15.25, "y": 0 },
|
||||
{ "matrix": [0, 7], "x": 16.25, "y": 0 },
|
||||
{ "matrix": [1, 8], "x": 17.25, "y": 0 },
|
||||
{ "matrix": [0, 8], "x": 18.25, "y": 0, "w": 2 },
|
||||
{ "matrix": [3, 0], "x": 0, "y": 1, "h": 2 },
|
||||
{ "matrix": [2, 0], "x": 1, "y": 1 },
|
||||
{ "matrix": [3, 1], "x": 2, "y": 1 },
|
||||
{ "matrix": [2, 1], "x": 3, "y": 1 },
|
||||
{ "matrix": [3, 2], "x": 5.25, "y": 1, "w": 1.5 },
|
||||
{ "matrix": [2, 2], "x": 6.75, "y": 1 },
|
||||
{ "matrix": [3, 3], "x": 7.75, "y": 1 },
|
||||
{ "matrix": [2, 3], "x": 8.75, "y": 1 },
|
||||
{ "matrix": [3, 4], "x": 9.75, "y": 1 },
|
||||
{ "matrix": [2, 4], "x": 10.75, "y": 1 },
|
||||
{ "matrix": [3, 5], "x": 11.75, "y": 1 },
|
||||
{ "matrix": [2, 5], "x": 12.75, "y": 1 },
|
||||
{ "matrix": [3, 6], "x": 13.75, "y": 1 },
|
||||
{ "matrix": [2, 6], "x": 14.75, "y": 1 },
|
||||
{ "matrix": [3, 7], "x": 15.75, "y": 1 },
|
||||
{ "matrix": [2, 7], "x": 16.75, "y": 1 },
|
||||
{ "matrix": [3, 8], "x": 17.75, "y": 1 },
|
||||
{ "matrix": [2, 8], "x": 18.75, "y": 1, "w": 1.5 },
|
||||
{ "matrix": [4, 0], "x": 1, "y": 2 },
|
||||
{ "matrix": [5, 1], "x": 2, "y": 2 },
|
||||
{ "matrix": [4, 1], "x": 3, "y": 2 },
|
||||
{ "matrix": [5, 2], "x": 5.25, "y": 2, "w": 1.75 },
|
||||
{ "matrix": [4, 2], "x": 7, "y": 2 },
|
||||
{ "matrix": [5, 3], "x": 8, "y": 2 },
|
||||
{ "matrix": [4, 3], "x": 9, "y": 2 },
|
||||
{ "matrix": [5, 4], "x": 10, "y": 2 },
|
||||
{ "matrix": [4, 4], "x": 11, "y": 2 },
|
||||
{ "matrix": [5, 5], "x": 12, "y": 2 },
|
||||
{ "matrix": [4, 5], "x": 13, "y": 2 },
|
||||
{ "matrix": [5, 6], "x": 14, "y": 2 },
|
||||
{ "matrix": [4, 6], "x": 15, "y": 2 },
|
||||
{ "matrix": [5, 7], "x": 16, "y": 2 },
|
||||
{ "matrix": [4, 7], "x": 17, "y": 2 },
|
||||
{ "matrix": [4, 8], "x": 18, "y": 2, "w": 2.25 },
|
||||
{ "matrix": [7, 0], "x": 0, "y": 3, "h": 2 },
|
||||
{ "matrix": [6, 0], "x": 1, "y": 3 },
|
||||
{ "matrix": [7, 1], "x": 2, "y": 3 },
|
||||
{ "matrix": [6, 1], "x": 3, "y": 3 },
|
||||
{ "matrix": [7, 2], "x": 5.25, "y": 3, "w": 2.25 },
|
||||
{ "matrix": [7, 3], "x": 7.5, "y": 3 },
|
||||
{ "matrix": [6, 3], "x": 8.5, "y": 3 },
|
||||
{ "matrix": [7, 4], "x": 9.5, "y": 3 },
|
||||
{ "matrix": [6, 4], "x": 10.5, "y": 3 },
|
||||
{ "matrix": [7, 5], "x": 11.5, "y": 3 },
|
||||
{ "matrix": [6, 5], "x": 12.5, "y": 3 },
|
||||
{ "matrix": [7, 6], "x": 13.5, "y": 3 },
|
||||
{ "matrix": [6, 6], "x": 14.5, "y": 3 },
|
||||
{ "matrix": [7, 7], "x": 15.5, "y": 3 },
|
||||
{ "matrix": [6, 7], "x": 16.5, "y": 3 },
|
||||
{ "matrix": [6, 8], "x": 17.5, "y": 3, "w": 2.75 },
|
||||
{ "matrix": [8, 0], "x": 1, "y": 4 },
|
||||
{ "matrix": [8, 1], "x": 2, "y": 4, "w": 2 },
|
||||
{ "matrix": [8, 2], "x": 5.25, "y": 4, "w": 1.25 },
|
||||
{ "matrix": [6, 2], "x": 6.5, "y": 4, "w": 1.25 },
|
||||
{ "matrix": [8, 3], "x": 7.75, "y": 4, "w": 1.25 },
|
||||
{ "matrix": [8, 4], "x": 9, "y": 4, "w": 6.25 },
|
||||
{ "matrix": [8, 5], "x": 15.25, "y": 4, "w": 1.25 },
|
||||
{ "matrix": [8, 6], "x": 16.5, "y": 4, "w": 1.25 },
|
||||
{ "matrix": [8, 7], "x": 17.75, "y": 4, "w": 1.25 },
|
||||
{ "matrix": [7, 8], "x": 19, "y": 4, "w": 1.25 },
|
||||
{ "matrix": [8, 8], "x": 21.5, "y": 4 }
|
||||
]
|
||||
}
|
||||
},
|
||||
"encoder": {
|
||||
"rotary": [
|
||||
{ "pin_a": "B7", "pin_b": "D5" }
|
||||
]
|
||||
}
|
||||
}
|
@@ -1,187 +0,0 @@
|
||||
/* Copyright 2022 Jason Devadoss (@jasonj2232)
|
||||
*
|
||||
* 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
|
||||
|
||||
enum custom_layers {
|
||||
BL,
|
||||
UL,
|
||||
};
|
||||
|
||||
// OLED setup for bongocat
|
||||
#define IDLE_FRAMES 5
|
||||
#define IDLE_SPEED 30
|
||||
#define TAP_FRAMES 2
|
||||
#define TAP_SPEED 40
|
||||
#define ANIM_FRAME_DURATION 200
|
||||
#define ANIM_SIZE 512
|
||||
|
||||
static long int oled_timeout = 600000; // 10 minutes
|
||||
bool gui_on = true;
|
||||
char wpm_str[10];
|
||||
uint32_t anim_timer = 0;
|
||||
uint32_t anim_sleep = 0;
|
||||
uint8_t current_idle_frame = 0;
|
||||
uint8_t current_tap_frame = 0;
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[BL] = LAYOUT(
|
||||
KC_PMNS, KC_PAST, KC_PSLS, KC_NUM, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
|
||||
KC_PPLS, KC_P9, KC_P8, KC_P7, 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_P6, KC_P5, KC_P4, KC_CAPS_LOCK, 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_PENT, KC_P3, KC_P2, KC_P1, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
||||
KC_PDOT, KC_P0, KC_LCTL, KC_LGUI, LT(1, KC_LALT), KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_AUDIO_MUTE
|
||||
|
||||
),
|
||||
|
||||
[UL] = LAYOUT(
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_GRAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_PSCR, KC_SCRL, KC_PAUS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_MPLY
|
||||
),
|
||||
};
|
||||
|
||||
#ifdef ENCODER_MAP_ENABLE
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
|
||||
[BL] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||
[UL] = { ENCODER_CCW_CW(KC_BRID, KC_BRIU) },
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef OLED_ENABLE
|
||||
|
||||
//Uncomment the below if OLED orientation is incorrect
|
||||
/*
|
||||
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
|
||||
return OLED_ROTATION_180; // flips the display 180 degrees
|
||||
}
|
||||
*/
|
||||
|
||||
static void render_anim(void) {
|
||||
|
||||
// Idle animation
|
||||
static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = {
|
||||
|
||||
{
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,16,8,8,4,4,4,8,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,100,130,2,2,2,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64,
|
||||
64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,56,4,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,7,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
},
|
||||
|
||||
{
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,16,8,8,4,4,4,8,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,100,130,2,2,2,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64,
|
||||
64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,56,4,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,
|
||||
7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
},
|
||||
|
||||
{
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,64,64,64,64,32,32,32,32,16,8,4,2,2,4,24,96,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,194,1,1,2,2,4,4,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,96,0,129,130,130,132,8,16,32,64,128,0,0,0,0,128,128,128,128,64,64,64,64,32,
|
||||
32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,25,6,0,0,0,0,0,0,0,24,24,24,27,3,0,64,160,34,36,20,18,18,18,11,8,8,8,8,5,5,9,9,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,7,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
},
|
||||
|
||||
{
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64,
|
||||
64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,
|
||||
7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
},
|
||||
|
||||
{
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,8,4,2,2,2,4,56,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,226,1,1,2,2,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64,64,64,
|
||||
32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,7,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
// Prep animation
|
||||
static const char PROGMEM prep[][ANIM_SIZE] = {
|
||||
|
||||
{
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,129,128,128,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,0,1,225,26,6,9,49,53,1,138,124,0,0,128,128,128,128,64,64,
|
||||
64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,24,6,5,152,153,132,195,124,65,65,64,64,32,33,34,18,17,17,17,9,8,8,8,8,4,4,4,4,4,4,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
// Typing animation
|
||||
static const char PROGMEM tap[TAP_FRAMES][ANIM_SIZE] = {
|
||||
|
||||
{
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,248,248,248,248,0,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,129,128,128,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,0,1,1,2,4,8,16,32,67,135,7,1,0,184,188,190,159,
|
||||
95,95,79,76,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,24,6,5,152,153,132,67,124,65,65,64,64,32,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,61,124,252,252,252,252,252,60,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,
|
||||
1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
},
|
||||
|
||||
{
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,0,1,225,26,6,9,49,53,1,138,124,0,0,128,128,128,128,64,64,64,64,32,
|
||||
32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,0,0,0,0,0,0,0,0,1,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,4,4,4,4,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,122,122,121,121,121,121,57,49,2,2,4,4,8,8,8,136,136,135,128,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
void animation_phase(void) {
|
||||
if (get_current_wpm() <=IDLE_SPEED) {
|
||||
current_idle_frame = (current_idle_frame + 1) % IDLE_FRAMES;
|
||||
oled_write_raw_P(idle[abs((IDLE_FRAMES-1)-current_idle_frame)], ANIM_SIZE);
|
||||
}
|
||||
|
||||
if (get_current_wpm() >IDLE_SPEED && get_current_wpm() <TAP_SPEED) {
|
||||
oled_write_raw_P(prep[0], ANIM_SIZE);
|
||||
}
|
||||
|
||||
if (get_current_wpm() >=TAP_SPEED) {
|
||||
current_tap_frame = (current_tap_frame + 1) % TAP_FRAMES;
|
||||
oled_write_raw_P(tap[abs((TAP_FRAMES-1)-current_tap_frame)], ANIM_SIZE);
|
||||
}
|
||||
}
|
||||
|
||||
if (get_current_wpm() != 000) {
|
||||
oled_on();
|
||||
|
||||
if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
|
||||
anim_timer = timer_read32();
|
||||
animation_phase();
|
||||
}
|
||||
|
||||
anim_sleep = timer_read32();
|
||||
} else {
|
||||
if (timer_elapsed32(anim_sleep) > oled_timeout) {
|
||||
oled_off();
|
||||
} else {
|
||||
if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
|
||||
anim_timer = timer_read32();
|
||||
animation_phase();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool oled_task_user(void) {
|
||||
render_anim();
|
||||
oled_set_cursor(0,4);
|
||||
sprintf(wpm_str, "WPM: %03d", get_current_wpm());
|
||||
oled_write(wpm_str, false);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
#endif
|
@@ -1,49 +0,0 @@
|
||||
/* Copyright 2022 Jason Devadoss (@jasonj2232)
|
||||
*
|
||||
* 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
|
||||
|
||||
enum custom_layers {
|
||||
BL,
|
||||
UL,
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[BL] = LAYOUT(
|
||||
KC_PMNS, KC_PAST, KC_PSLS, KC_NUM, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
|
||||
KC_PPLS, KC_P9, KC_P8, KC_P7, 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_P6, KC_P5, KC_P4, KC_CAPS_LOCK, 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_PENT, KC_P3, KC_P2, KC_P1, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
||||
KC_PDOT, KC_P0, KC_LCTL, KC_LGUI, LT(1, KC_LALT), KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_AUDIO_MUTE
|
||||
|
||||
),
|
||||
|
||||
[UL] = LAYOUT(
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_GRAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,
|
||||
KC_PSCR, KC_SCRL, KC_PAUS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT,KC_DOWN, KC_RIGHT, KC_MPLY
|
||||
),
|
||||
};
|
||||
|
||||
#ifdef ENCODER_MAP_ENABLE
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
|
||||
[BL] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||
[UL] = { ENCODER_CCW_CW(KC_BRID, KC_BRIU) },
|
||||
};
|
||||
#endif
|
@@ -1,69 +0,0 @@
|
||||
/* Copyright 2022 Jason Devadoss (@jasonj2232)
|
||||
*
|
||||
* 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
|
||||
|
||||
enum custom_layers {
|
||||
BL,
|
||||
UL,
|
||||
TL,
|
||||
FL,
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[BL] = LAYOUT(
|
||||
KC_PMNS, KC_PAST, KC_PSLS, KC_NUM, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
|
||||
KC_PPLS, KC_P9, KC_P8, KC_P7, 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_P6, KC_P5, KC_P4, KC_CAPS_LOCK, 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_PENT, KC_P3, KC_P2, KC_P1, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
||||
KC_PDOT, KC_P0, KC_LCTL, KC_LGUI, LT(1, KC_LALT), KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_AUDIO_MUTE
|
||||
|
||||
),
|
||||
|
||||
[UL] = LAYOUT(
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_GRAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,
|
||||
KC_PSCR, KC_SCRL, KC_PAUS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT,KC_DOWN, KC_RIGHT, KC_MPLY
|
||||
),
|
||||
|
||||
[TL] = LAYOUT(
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
|
||||
[FL] = LAYOUT(
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
};
|
||||
|
||||
#ifdef ENCODER_MAP_ENABLE
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
|
||||
[BL] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||
[UL] = { ENCODER_CCW_CW(KC_BRID, KC_BRIU) },
|
||||
[TL] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
|
||||
[FL] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
|
||||
};
|
||||
#endif
|
@@ -1,2 +0,0 @@
|
||||
ENCODER_MAP_ENABLE = yes
|
||||
VIA_ENABLE = yes
|
@@ -1,39 +0,0 @@
|
||||
/* Copyright 2022 Jason Devadoss (@jasonj2232)
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
#ifdef OLED_ENABLE
|
||||
static void render_logo(void) {
|
||||
static const char PROGMEM raw_logo[] = {
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,240,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,240,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120, 20, 18, 18, 20,120, 0, 0,126, 10, 26, 58,106, 78, 0, 0,126, 66, 82, 82, 82,114, 0, 0,126, 66, 66, 66, 66,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255, 0, 0,252,252,140,140,140,140,140,140,140,140,140,140,140,140, 0, 0,252,252,128,128,128,128,128,128,128,128,128,128,128,252,252, 0, 0,255,255,255, 0, 0, 0, 0, 0, 0,255,255,153,153,255,255, 0, 0,255,255,195,195,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 64, 48, 48, 64, 62, 0, 0,126, 66, 66, 66, 66,126, 0, 0,126, 10, 26, 58,106, 78, 0, 0,126, 24, 60,102, 66, 66, 0, 0, 36, 74, 74, 82, 82, 36, 0, 0, 0,255,255,255, 0, 0, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 63, 63, 0, 0, 63, 63, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 63, 63, 0, 0,255,255,255, 0, 0, 0, 0, 0, 0,252, 8, 16, 8,252, 48, 72,132, 0, 0,120,132,132,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
};
|
||||
oled_write_raw_P(raw_logo, sizeof(raw_logo));
|
||||
}
|
||||
|
||||
|
||||
|
||||
bool oled_task_kb(void) {
|
||||
if (!oled_task_user()) {
|
||||
return false;
|
||||
}
|
||||
render_logo();
|
||||
return true;
|
||||
}
|
||||
#endif
|
@@ -1,29 +0,0 @@
|
||||
# Ishi 80 Mk 0
|
||||
|
||||

|
||||
|
||||
Ishi 80 is a 60% keyboard with a SouthPaw, Mirrored Numpad.
|
||||
|
||||
Note: This firmware is for ATMega32U4 based daughterboards that have 5 extra pins on the bottom, such as the Elite-C. It is incompatible with standard Pro-Micro footprint daughterboards.
|
||||
|
||||
* Keyboard Maintainer: [Jason Devadoss](https://github.com/jasonj2232)
|
||||
* Hardware Supported: Ishi80 Mk 0 with Elite-C footprint daughterboards
|
||||
* Hardware Availability: -
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make argo_works/ishi/80/mk0_avr_extra:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make argo_works/ishi/80/mk0_avr_extra:default:flash
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
|
||||
## Bootloader
|
||||
|
||||
Enter the bootloader in 3 ways:
|
||||
|
||||
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
|
||||
* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
|
||||
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
|
@@ -1,4 +0,0 @@
|
||||
OLED_ENABLE = yes
|
||||
OLED_DRIVER = SSD1306
|
||||
WPM_ENABLE = yes
|
||||
PIN_COMPATIBLE = elite_c
|
@@ -51,77 +51,73 @@
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{ "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 },
|
||||
{ "label": "1!", "matrix": [0, 1], "x": 1, "y": 0 },
|
||||
{ "label": "2@", "matrix": [0, 2], "x": 2, "y": 0 },
|
||||
{ "label": "3#", "matrix": [0, 3], "x": 3, "y": 0 },
|
||||
{ "label": "4$", "matrix": [0, 4], "x": 4, "y": 0 },
|
||||
{ "label": "5%", "matrix": [0, 5], "x": 5, "y": 0 },
|
||||
{ "label": "6^", "matrix": [0, 6], "x": 6, "y": 0 },
|
||||
{ "label": "7&", "matrix": [0, 7], "x": 7, "y": 0 },
|
||||
{ "label": "8*", "matrix": [0, 8], "x": 8, "y": 0 },
|
||||
{ "label": "9(", "matrix": [0, 9], "x": 9, "y": 0 },
|
||||
{ "label": "0)", "matrix": [0, 10], "x": 10, "y": 0 },
|
||||
{ "label": "-_", "matrix": [0, 11], "x": 11, "y": 0 },
|
||||
{ "label": "=+", "matrix": [0, 12], "x": 12, "y": 0 },
|
||||
{ "label": "Delete", "matrix": [0, 13], "x": 13, "y": 0, "w": 1.5 },
|
||||
|
||||
{ "label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5 },
|
||||
{ "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 },
|
||||
{ "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 },
|
||||
{ "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1 },
|
||||
{ "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1 },
|
||||
{ "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1 },
|
||||
{ "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1 },
|
||||
{ "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1 },
|
||||
{ "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1 },
|
||||
{ "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1 },
|
||||
{ "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 },
|
||||
{ "label": "[{", "matrix": [1, 11], "x": 11.5, "y": 1 },
|
||||
{ "label": "]}", "matrix": [1, 12], "x": 12.5, "y": 1 },
|
||||
{ "label": "\\|", "matrix": [1, 13], "x": 13.5, "y": 1 },
|
||||
|
||||
{ "label": "Ctrl", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75 },
|
||||
{ "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 },
|
||||
{ "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 },
|
||||
{ "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 },
|
||||
{ "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 },
|
||||
{ "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 },
|
||||
{ "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 },
|
||||
{ "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 },
|
||||
{ "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 },
|
||||
{ "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 },
|
||||
{ "label": ";:", "matrix": [2, 10], "x": 10.75, "y": 2 },
|
||||
{ "label": "'\"", "matrix": [2, 11], "x": 11.75, "y": 2 },
|
||||
{ "label": "#~", "matrix": [2, 12], "x": 12.75, "y": 2, "w": 0.75 },
|
||||
{ "label": "Enter", "matrix": [2, 13], "x": 13.5, "y": 2 },
|
||||
|
||||
{ "label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25 },
|
||||
{ "label": "\\|", "matrix": [3, 1], "x": 1.25, "y": 3 },
|
||||
{ "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 },
|
||||
{ "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 },
|
||||
{ "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 },
|
||||
{ "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 },
|
||||
{ "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 },
|
||||
{ "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 },
|
||||
{ "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 },
|
||||
{ "label": ",<", "matrix": [3, 9], "x": 9.25, "y": 3 },
|
||||
{ "label": ".>", "matrix": [3, 10], "x": 10.25, "y": 3 },
|
||||
{ "label": "/?", "matrix": [3, 11], "x": 11.25, "y": 3 },
|
||||
{ "label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.25 },
|
||||
{ "label": "Fn", "matrix": [3, 13], "x": 13.5, "y": 3 },
|
||||
|
||||
{ "label": "Caps Lock", "matrix": [4, 0], "x": 0, "y": 4 },
|
||||
{ "label": "Alt", "matrix": [4, 1], "x": 1, "y": 4 },
|
||||
{ "label": "GUI", "matrix": [4, 2], "x": 2, "y": 4, "w": 1.75 },
|
||||
{ "label": "`~", "matrix": [4, 3], "x": 3.75, "y": 4 },
|
||||
{ "label": "Space", "matrix": [4, 6], "x": 4.75, "y": 4, "w": 4.75 },
|
||||
{ "label": "\\|", "matrix": [4, 9], "x": 9.5, "y": 4 },
|
||||
{ "label": "\u2190", "matrix": [4, 10], "x": 10.5, "y": 4 },
|
||||
{ "label": "\u2192", "matrix": [4, 11], "x": 11.5, "y": 4 },
|
||||
{ "label": "\u2193", "matrix": [4, 12], "x": 12.5, "y": 4 },
|
||||
{ "label": "\u2191", "matrix": [4, 13], "x": 13.5, "y": 4 }
|
||||
{ "label": "k00", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 },
|
||||
{ "label": "k01", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 },
|
||||
{ "label": "k02", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 },
|
||||
{ "label": "k03", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 },
|
||||
{ "label": "k04", "matrix": [0, 4], "w": 1, "x": 4, "y": 0 },
|
||||
{ "label": "k05", "matrix": [0, 5], "w": 1, "x": 5, "y": 0 },
|
||||
{ "label": "k06", "matrix": [0, 6], "w": 1, "x": 6, "y": 0 },
|
||||
{ "label": "k07", "matrix": [0, 7], "w": 1, "x": 7, "y": 0 },
|
||||
{ "label": "k08", "matrix": [0, 8], "w": 1, "x": 8, "y": 0 },
|
||||
{ "label": "k09", "matrix": [0, 9], "w": 1, "x": 9, "y": 0 },
|
||||
{ "label": "k0a", "matrix": [0, 10], "w": 1, "x": 10, "y": 0 },
|
||||
{ "label": "k0b", "matrix": [0, 11], "w": 1, "x": 11, "y": 0 },
|
||||
{ "label": "k0c", "matrix": [0, 12], "w": 1, "x": 12, "y": 0 },
|
||||
{ "label": "k0d", "matrix": [0, 13], "w": 1, "x": 13, "y": 0 },
|
||||
{ "label": "k10", "matrix": [1, 0], "w": 1, "x": 14, "y": 0 },
|
||||
{ "label": "k11", "matrix": [1, 1], "w": 1, "x": 15, "y": 0 },
|
||||
{ "label": "k12", "matrix": [1, 2], "w": 1, "x": 16, "y": 0 },
|
||||
{ "label": "k13", "matrix": [1, 3], "w": 1, "x": 17, "y": 0 },
|
||||
{ "label": "k14", "matrix": [1, 4], "w": 1, "x": 18, "y": 0 },
|
||||
{ "label": "k15", "matrix": [1, 5], "w": 1, "x": 19, "y": 0 },
|
||||
{ "label": "k16", "matrix": [1, 6], "w": 1, "x": 20, "y": 0 },
|
||||
{ "label": "k17", "matrix": [1, 7], "w": 1, "x": 21, "y": 0 },
|
||||
{ "label": "k18", "matrix": [1, 8], "w": 1, "x": 22, "y": 0 },
|
||||
{ "label": "k19", "matrix": [1, 9], "w": 1, "x": 23, "y": 0 },
|
||||
{ "label": "k1a", "matrix": [1, 10], "w": 1, "x": 24, "y": 0 },
|
||||
{ "label": "k1b", "matrix": [1, 11], "w": 1, "x": 25, "y": 0 },
|
||||
{ "label": "k1c", "matrix": [1, 12], "w": 1, "x": 26, "y": 0 },
|
||||
{ "label": "k1d", "matrix": [1, 13], "w": 1, "x": 27, "y": 0 },
|
||||
{ "label": "k20", "matrix": [2, 0], "w": 1, "x": 28, "y": 0 },
|
||||
{ "label": "k21", "matrix": [2, 1], "w": 1, "x": 29, "y": 0 },
|
||||
{ "label": "k22", "matrix": [2, 2], "w": 1, "x": 30, "y": 0 },
|
||||
{ "label": "k23", "matrix": [2, 3], "w": 1, "x": 31, "y": 0 },
|
||||
{ "label": "k24", "matrix": [2, 4], "w": 1, "x": 32, "y": 0 },
|
||||
{ "label": "k25", "matrix": [2, 5], "w": 1, "x": 33, "y": 0 },
|
||||
{ "label": "k26", "matrix": [2, 6], "w": 1, "x": 34, "y": 0 },
|
||||
{ "label": "k27", "matrix": [2, 7], "w": 1, "x": 35, "y": 0 },
|
||||
{ "label": "k28", "matrix": [2, 8], "w": 1, "x": 36, "y": 0 },
|
||||
{ "label": "k29", "matrix": [2, 9], "w": 1, "x": 37, "y": 0 },
|
||||
{ "label": "k2a", "matrix": [2, 10], "w": 1, "x": 38, "y": 0 },
|
||||
{ "label": "k2b", "matrix": [2, 11], "w": 1, "x": 39, "y": 0 },
|
||||
{ "label": "k2c", "matrix": [2, 12], "w": 1, "x": 40, "y": 0 },
|
||||
{ "label": "k2d", "matrix": [2, 13], "w": 1, "x": 41, "y": 0 },
|
||||
{ "label": "k30", "matrix": [3, 0], "w": 1, "x": 42, "y": 0 },
|
||||
{ "label": "k31", "matrix": [3, 1], "w": 1, "x": 43, "y": 0 },
|
||||
{ "label": "k32", "matrix": [3, 2], "w": 1, "x": 44, "y": 0 },
|
||||
{ "label": "k33", "matrix": [3, 3], "w": 1, "x": 45, "y": 0 },
|
||||
{ "label": "k34", "matrix": [3, 4], "w": 1, "x": 46, "y": 0 },
|
||||
{ "label": "k35", "matrix": [3, 5], "w": 1, "x": 47, "y": 0 },
|
||||
{ "label": "k36", "matrix": [3, 6], "w": 1, "x": 48, "y": 0 },
|
||||
{ "label": "k37", "matrix": [3, 7], "w": 1, "x": 49, "y": 0 },
|
||||
{ "label": "k38", "matrix": [3, 8], "w": 1, "x": 50, "y": 0 },
|
||||
{ "label": "k39", "matrix": [3, 9], "w": 1, "x": 51, "y": 0 },
|
||||
{ "label": "k3a", "matrix": [3, 10], "w": 1, "x": 52, "y": 0 },
|
||||
{ "label": "k3b", "matrix": [3, 11], "w": 1, "x": 53, "y": 0 },
|
||||
{ "label": "k3c", "matrix": [3, 12], "w": 1, "x": 54, "y": 0 },
|
||||
{ "label": "k3d", "matrix": [3, 13], "w": 1, "x": 55, "y": 0 },
|
||||
{ "label": "k40", "matrix": [4, 0], "w": 1, "x": 56, "y": 0 },
|
||||
{ "label": "k41", "matrix": [4, 1], "w": 1, "x": 57, "y": 0 },
|
||||
{ "label": "k42", "matrix": [4, 2], "w": 1, "x": 58, "y": 0 },
|
||||
{ "label": "k43", "matrix": [4, 3], "w": 1, "x": 59, "y": 0 },
|
||||
{ "label": "k46", "matrix": [4, 6], "w": 1, "x": 60, "y": 0 },
|
||||
{ "label": "k49", "matrix": [4, 9], "w": 1, "x": 61, "y": 0 },
|
||||
{ "label": "k4a", "matrix": [4, 10], "w": 1, "x": 62, "y": 0 },
|
||||
{ "label": "k4b", "matrix": [4, 11], "w": 1, "x": 63, "y": 0 },
|
||||
{ "label": "k4c", "matrix": [4, 12], "w": 1, "x": 64, "y": 0 },
|
||||
{ "label": "k4d", "matrix": [4, 13], "w": 1, "x": 65, "y": 0 }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -18,6 +18,4 @@
|
||||
|
||||
#if defined(KEYBOARD_atreyu_rev1)
|
||||
# include "rev1.h"
|
||||
#elif defined(KEYBOARD_atreyu_rev2)
|
||||
# include "rev2.h"
|
||||
#endif
|
||||
|
@@ -4,7 +4,7 @@
|
||||
|
||||
An unsplit, modified version of a Lily58 having a baby with a Sofle keyboard
|
||||
|
||||
* Keyboard Maintainer: [Jesus Climent](https://github.com/climent)
|
||||
* Keyboard Maintainer: [Jesus Climent](https://github.com/Jesus Climent)
|
||||
* Hardware Supported: AtreyuKeyboard PCB, ProMicro
|
||||
* Hardware Availability: [PCB and case data](https://github.com/climent/atreyu)
|
||||
|
||||
|
@@ -1,70 +0,0 @@
|
||||
/* Copyright 2022 Jesus Climent (@climent)
|
||||
*
|
||||
* 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"
|
||||
|
||||
/* key matrix size */
|
||||
#define MATRIX_ROWS 10
|
||||
#define MATRIX_COLS 6
|
||||
|
||||
/*
|
||||
* 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 { D7, E6, B4, B5, F6, F7, B1, B3, B6, B2 }
|
||||
#define MATRIX_COL_PINS { F4, F5, C6, D4, D2, D3 }
|
||||
|
||||
/* encoder support */
|
||||
#define ENCODERS_PAD_A { D5, D5 }
|
||||
#define ENCODERS_PAD_B { B7, C7 }
|
||||
#define ENCODER_RESOLUTION 4
|
||||
|
||||
/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
/* 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
|
||||
|
||||
/*
|
||||
* Feature disable options
|
||||
* These options are also useful to firmware size reduction.
|
||||
*/
|
||||
|
||||
/* disable debug print */
|
||||
//#define NO_DEBUG
|
||||
|
||||
/* disable print */
|
||||
//#define NO_PRINT
|
||||
|
||||
/* disable action features */
|
||||
//#define NO_ACTION_LAYER
|
||||
//#define NO_ACTION_TAPPING
|
||||
//#define NO_ACTION_ONESHOT
|
@@ -1,77 +0,0 @@
|
||||
{
|
||||
"keyboard_name": "Atreyu",
|
||||
"manufacturer": "Heyzeus",
|
||||
"url": "https://github.com/climent/atreyu",
|
||||
"maintainer": "Jesus Climent <climent@gmail.com>",
|
||||
"usb": {
|
||||
"vid": "0xFEED",
|
||||
"pid": "0x0001",
|
||||
"device_version": "0.0.2"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"x":0, "y":0.5},
|
||||
{"x":1, "y":0.375},
|
||||
{"x":2, "y":0.125},
|
||||
{"x":3, "y":0},
|
||||
{"x":4, "y":0.125},
|
||||
{"x":5, "y":0.25},
|
||||
{"x":10.5, "y":0.25},
|
||||
{"x":11.5, "y":0.125},
|
||||
{"x":12.5, "y":0},
|
||||
{"x":13.5, "y":0.125},
|
||||
{"x":14.5, "y":0.375},
|
||||
{"x":15.5, "y":0.5},
|
||||
{"x":0, "y":1.5},
|
||||
{"x":1, "y":1.375},
|
||||
{"x":2, "y":1.125},
|
||||
{"x":3, "y":1},
|
||||
{"x":4, "y":1.125},
|
||||
{"x":5, "y":1.25},
|
||||
{"x":10.5, "y":1.25},
|
||||
{"x":11.5, "y":1.125},
|
||||
{"x":12.5, "y":1},
|
||||
{"x":13.5, "y":1.125},
|
||||
{"x":14.5, "y":1.375},
|
||||
{"x":15.5, "y":1.5},
|
||||
{"x":0, "y":2.5},
|
||||
{"x":1, "y":2.375},
|
||||
{"x":2, "y":2.125},
|
||||
{"x":3, "y":2},
|
||||
{"x":4, "y":2.125},
|
||||
{"x":5, "y":2.25},
|
||||
{"x":10.5, "y":2.25},
|
||||
{"x":11.5, "y":2.125},
|
||||
{"x":12.5, "y":2},
|
||||
{"x":13.5, "y":2.125},
|
||||
{"x":14.5, "y":2.375},
|
||||
{"x":15.5, "y":2.5},
|
||||
{"x":0, "y":3.5},
|
||||
{"x":1, "y":3.375},
|
||||
{"x":2, "y":3.125},
|
||||
{"x":3, "y":3},
|
||||
{"x":4, "y":3.125},
|
||||
{"x":5, "y":3.25},
|
||||
{"x":6, "y":2.75},
|
||||
{"x":9.5, "y":2.75},
|
||||
{"x":10.5, "y":3.25},
|
||||
{"x":11.5, "y":3.125},
|
||||
{"x":12.5, "y":3},
|
||||
{"x":13.5, "y":3.125},
|
||||
{"x":14.5, "y":3.375},
|
||||
{"x":15.5, "y":3.5},
|
||||
{"x":0, "y":4.5},
|
||||
{"x":2.5, "y":4.125},
|
||||
{"x":3.5, "y":4.15},
|
||||
{"x":4.5, "y":4.25},
|
||||
{"x":6, "y":4.25, "h":1.25},
|
||||
{"x":9.5, "y":4.25, "h":1.25},
|
||||
{"x":11, "y":4.25},
|
||||
{"x":12, "y":4.15},
|
||||
{"x":13, "y":4.125},
|
||||
{"x":14.5, "y":4.5}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user