Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
101990139f | ||
|
|
8af7e5ea81 | ||
|
|
4f598ee9fb | ||
|
|
a716517705 | ||
|
|
c2b0bd2a0a | ||
|
|
6e74abc643 | ||
|
|
bf1c40d682 | ||
|
|
548b874a16 | ||
|
|
519032c61b | ||
|
|
bedb72b0bc | ||
|
|
22368ee49e | ||
|
|
3f71bc8e79 | ||
|
|
550359a4b4 | ||
|
|
bc74027f39 | ||
|
|
068e11f7e2 | ||
|
|
6a5f29208e | ||
|
|
5a73558a21 | ||
|
|
4b2ab84c71 | ||
|
|
7ef4aba52c | ||
|
|
0aed8746be | ||
|
|
872f656c3b | ||
|
|
fb9f619d89 | ||
|
|
955eb58af5 | ||
|
|
7d5902752e | ||
|
|
4107856b70 | ||
|
|
627ceebef3 | ||
|
|
d2f204c1e3 | ||
|
|
99bffc2a21 | ||
|
|
7e82879553 | ||
|
|
4d8161cff5 | ||
|
|
ccc9c43161 | ||
|
|
fc29c7a589 | ||
|
|
5d5cbb877d | ||
|
|
0355cd0f72 | ||
|
|
9d1d875a95 | ||
|
|
13c562e154 | ||
|
|
c1aeec9635 | ||
|
|
a4368da849 | ||
|
|
65db45c475 | ||
|
|
74145dc7ae | ||
|
|
60d76d6733 | ||
|
|
72b0f494e7 | ||
|
|
2e6bd97585 | ||
|
|
784a9cdca4 | ||
|
|
3d01794b12 | ||
|
|
53f17113c1 | ||
|
|
66775a3391 | ||
|
|
9b874d5071 | ||
|
|
0e8cef28d2 | ||
|
|
31675c614e | ||
|
|
5ea92a9c1c | ||
|
|
464eb7137d |
No files matched your search
@@ -28,10 +28,16 @@ jobs:
|
|||||||
bin/qmk pyformat
|
bin/qmk pyformat
|
||||||
bin/qmk fileformat
|
bin/qmk fileformat
|
||||||
|
|
||||||
- name: Commit files
|
- name: Become QMK Bot
|
||||||
uses: stefanzweifel/git-auto-commit-action@v4
|
run: |
|
||||||
|
git config user.name 'QMK Bot'
|
||||||
|
git config user.email '[email protected]'
|
||||||
|
|
||||||
|
- name: Create Pull Request
|
||||||
|
uses: peter-evans/create-pull-request@v3
|
||||||
with:
|
with:
|
||||||
commit_message: Format code according to conventions for $GITHUB_SHA
|
delete-branch: true
|
||||||
commit_user_name: QMK Bot
|
author: QMK Bot <[email protected]>
|
||||||
commit_user_email: [email protected]
|
committer: QMK Bot <[email protected]>
|
||||||
commit_author: QMK Bot <[email protected]>
|
commit-message: Format code according to conventions
|
||||||
|
title: '[CI] Format code according to conventions'
|
||||||
@@ -17,6 +17,7 @@ SERIAL_PATH := $(QUANTUM_PATH)/serial_link
|
|||||||
|
|
||||||
QUANTUM_SRC += \
|
QUANTUM_SRC += \
|
||||||
$(QUANTUM_DIR)/quantum.c \
|
$(QUANTUM_DIR)/quantum.c \
|
||||||
|
$(QUANTUM_DIR)/bitwise.c \
|
||||||
$(QUANTUM_DIR)/led.c \
|
$(QUANTUM_DIR)/led.c \
|
||||||
$(QUANTUM_DIR)/keymap_common.c \
|
$(QUANTUM_DIR)/keymap_common.c \
|
||||||
$(QUANTUM_DIR)/keycode_config.c
|
$(QUANTUM_DIR)/keycode_config.c
|
||||||
@@ -36,6 +37,11 @@ ifeq ($(strip $(API_SYSEX_ENABLE)), yes)
|
|||||||
SRC += $(QUANTUM_DIR)/api.c
|
SRC += $(QUANTUM_DIR)/api.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(strip $(COMMAND_ENABLE)), yes)
|
||||||
|
SRC += $(QUANTUM_DIR)/command.c
|
||||||
|
OPT_DEFS += -DCOMMAND_ENABLE
|
||||||
|
endif
|
||||||
|
|
||||||
ifeq ($(strip $(AUDIO_ENABLE)), yes)
|
ifeq ($(strip $(AUDIO_ENABLE)), yes)
|
||||||
OPT_DEFS += -DAUDIO_ENABLE
|
OPT_DEFS += -DAUDIO_ENABLE
|
||||||
MUSIC_ENABLE = yes
|
MUSIC_ENABLE = yes
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ Not all keycodes below will work depending on which haptic mechanism you have ch
|
|||||||
|
|
||||||
First you will need a build a circuit to drive the solenoid through a mosfet as most MCU will not be able to provide the current needed to drive the coil in the solenoid.
|
First you will need a build a circuit to drive the solenoid through a mosfet as most MCU will not be able to provide the current needed to drive the coil in the solenoid.
|
||||||
|
|
||||||
[Wiring diagram provided by Adafruit](https://playground.arduino.cc/uploads/Learning/solenoid_driver.pdf)
|
[Wiring diagram provided by Adafruit](https://cdn-shop.adafruit.com/product-files/412/solenoid_driver.pdf)
|
||||||
|
|
||||||
|
|
||||||
| Settings | Default | Description |
|
| Settings | Default | Description |
|
||||||
|
|||||||
+213
-109
@@ -2,132 +2,236 @@
|
|||||||
|
|
||||||
The I2C Master drivers used in QMK have a set of common functions to allow portability between MCUs.
|
The I2C Master drivers used in QMK have a set of common functions to allow portability between MCUs.
|
||||||
|
|
||||||
## An important note on I2C Addresses :id=note-on-i2c-addresses
|
## I2C Addressing :id=note-on-i2c-addresses
|
||||||
|
|
||||||
All of the addresses expected by this driver should be pushed to the upper 7 bits of the address byte. Setting
|
All of the addresses expected by this driver should be pushed to the upper 7 bits of the address byte. Setting
|
||||||
the lower bit (indicating read/write) will be done by the respective functions. Almost all I2C addresses listed
|
the lower bit (indicating read/write) will be done by the respective functions. Almost all I2C addresses listed
|
||||||
on datasheets and the internet will be represented as 7 bits occupying the lower 7 bits and will need to be
|
on datasheets and the internet will be represented as 7 bits occupying the lower 7 bits and will need to be
|
||||||
shifted to the left (more significant) by one bit. This is easy to do via the bitwise shift operator `<< 1`.
|
shifted to the left (more significant) by one bit. This is easy to do via the bitwise shift operator `<< 1`.
|
||||||
|
|
||||||
You can either do this on each call to the functions below, or once in your definition of the address. For example if your device has an address of `0x18`:
|
You can either do this on each call to the functions below, or once in your definition of the address. For example, if your device has an address of `0x18`:
|
||||||
|
|
||||||
`#define MY_I2C_ADDRESS (0x18 << 1)`
|
```c
|
||||||
|
#define MY_I2C_ADDRESS (0x18 << 1)
|
||||||
|
```
|
||||||
|
|
||||||
See https://www.robot-electronics.co.uk/i2c-tutorial for more information about I2C addressing and other technical details.
|
See https://www.robot-electronics.co.uk/i2c-tutorial for more information about I2C addressing and other technical details.
|
||||||
|
|
||||||
## Available functions :id=available-functions
|
## AVR Configuration :id=avr-configuration
|
||||||
|
|
||||||
|Function |Description |
|
The following defines can be used to configure the I2C master driver:
|
||||||
|------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
||||||
|`void i2c_init(void);` |Initializes the I2C driver. This function should be called once before any transaction is initiated. |
|
|
||||||
|`i2c_status_t i2c_start(uint8_t address, uint16_t timeout);` |Starts an I2C transaction. Address is the 7-bit slave address without the direction bit. |
|
|
||||||
|`i2c_status_t i2c_transmit(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout);` |Transmit data over I2C. Address is the 7-bit slave address without the direction. Returns status of transaction. |
|
|
||||||
|`i2c_status_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout);` |Receive data over I2C. Address is the 7-bit slave address without the direction. Saves number of bytes specified by `length` in `data` array. Returns status of transaction. |
|
|
||||||
|`i2c_status_t i2c_writeReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout);` |Same as the `i2c_transmit` function but `regaddr` sets where in the slave the data will be written. |
|
|
||||||
|`i2c_status_t i2c_readReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout);` |Same as the `i2c_receive` function but `regaddr` sets from where in the slave the data will be read. |
|
|
||||||
|`i2c_status_t i2c_stop(void);` |Ends an I2C transaction. |
|
|
||||||
|
|
||||||
### Function Return :id=function-return
|
|`config.h` Override|Description |Default |
|
||||||
|
|-------------------|---------------------|--------|
|
||||||
|
|`F_SCL` |Clock frequency in Hz|`400000`|
|
||||||
|
|
||||||
All the above functions, except `void i2c_init(void);` return the following truth table:
|
No further setup is required - just connect the `SDA` and `SCL` pins of your I2C devices to the matching pins on the MCU:
|
||||||
|
|
||||||
|Return Constant |Value|Description |
|
|MCU |`SCL`|`SDA`|
|
||||||
|--------------------|-----|--------------------------------|
|
|------------------|-----|-----|
|
||||||
|`I2C_STATUS_SUCCESS`|0 |Operation executed successfully.|
|
|ATmega16/32U4 |`D0` |`D1` |
|
||||||
|`I2C_STATUS_ERROR` |-1 |Operation failed. |
|
|AT90USB64/128 |`D0` |`D1` |
|
||||||
|`I2C_STATUS_TIMEOUT`|-2 |Operation timed out. |
|
|ATmega32A |`C0` |`C1` |
|
||||||
|
|ATmega328/P |`C5` |`C4` |
|
||||||
|
|
||||||
|
?> The ATmega16/32U2 does not possess I2C functionality, and so cannot use this driver.
|
||||||
|
|
||||||
## AVR :id=avr
|
## ChibiOS/ARM Configuration :id=arm-configuration
|
||||||
|
|
||||||
### Configuration :id=avr-configuration
|
You'll need to determine which pins can be used for I2C -- a an example, STM32 parts generally have multiple I2C peripherals, labeled I2C1, I2C2, I2C3 etc.
|
||||||
|
|
||||||
The following defines can be used to configure the I2C master driver.
|
To enable I2C, modify your board's `halconf.h` to enable I2C:
|
||||||
|
|
||||||
|Variable |Description |Default|
|
|
||||||
|------------------|---------------------------------------------------|-------|
|
|
||||||
|`F_SCL` |Clock frequency in Hz |400KHz |
|
|
||||||
|
|
||||||
AVRs usually have set GPIO which turn into I2C pins, therefore no further configuration is required.
|
|
||||||
|
|
||||||
## ARM :id=arm
|
|
||||||
|
|
||||||
For ARM the Chibios I2C HAL driver is under the hood.
|
|
||||||
This section assumes an STM32 MCU.
|
|
||||||
|
|
||||||
### Configuration :id=arm-configuration
|
|
||||||
|
|
||||||
The configuration for ARM MCUs can be quite complex as often there are multiple I2C drivers which can be assigned to a variety of ports.
|
|
||||||
|
|
||||||
Firstly the `mcuconf.h` file must be setup to enable the necessary hardware drivers.
|
|
||||||
|
|
||||||
|Variable |Description |Default|
|
|
||||||
|------------------------------|------------------------------------------------------------------------------------|-------|
|
|
||||||
|`#STM32_I2C_USE_XXX` |Enable/Disable the hardware driver XXX (each driver should be explicitly listed) |FALSE |
|
|
||||||
|`#STM32_I2C_BUSY_TIMEOUT` |Time in ms until the I2C command is aborted if no response is received |50 |
|
|
||||||
|`#STM32_I2C_XXX_IRQ_PRIORITY` |Interrupt priority for hardware driver XXX (THIS IS AN EXPERT SETTING) |10 |
|
|
||||||
|`#STM32_I2C_USE_DMA` |Enable/Disable the ability of the MCU to offload the data transfer to the DMA unit |TRUE |
|
|
||||||
|`#STM32_I2C_XXX_DMA_PRIORITY` |Priority of DMA unit for hardware driver XXX (THIS IS AN EXPERT SETTING) |1 |
|
|
||||||
|
|
||||||
Secondly, in the `halconf.h` file, `#define HAL_USE_I2C` must be set to `TRUE`. This allows ChibiOS to load its I2C driver.
|
|
||||||
|
|
||||||
Lastly, we need to assign the correct GPIO pins depending on the I2C hardware driver we want to use.
|
|
||||||
|
|
||||||
By default the I2C1 hardware driver is assumed to be used. If another hardware driver is used, `#define I2C_DRIVER I2CDX` should be added to the `config.h` file with X being the number of hardware driver used. For example is I2C3 is enabled, the `config.h` file should contain `#define I2C_DRIVER I2CD3`. This aligns the QMK I2C driver with the Chibios I2C driver.
|
|
||||||
|
|
||||||
STM32 MCUs allows a variety of pins to be configured as I2C pins depending on the hardware driver used. By default B6 and B7 are set to I2C. You can use these defines to set your i2c pins:
|
|
||||||
|
|
||||||
| Variable | Description | Default |
|
|
||||||
|--------------------------|----------------------------------------------------------------------------------------------|---------|
|
|
||||||
| `I2C1_SCL_BANK` | The bank of pins (`GPIOA`, `GPIOB`, `GPIOC`) to use for SCL | `GPIOB` |
|
|
||||||
| `I2C1_SDA_BANK` | The bank of pins (`GPIOA`, `GPIOB`, `GPIOC`) to use for SDA | `GPIOB` |
|
|
||||||
| `I2C1_SCL` | The pin number for the SCL pin (0-15) | `6` |
|
|
||||||
| `I2C1_SDA` | The pin number for the SDA pin (0-15) | `7` |
|
|
||||||
| `I2C1_BANK` (deprecated) | The bank of pins (`GPIOA`, `GPIOB`, `GPIOC`), superceded by `I2C1_SCL_BANK`, `I2C1_SDA_BANK` | `GPIOB` |
|
|
||||||
|
|
||||||
The ChibiOS I2C driver configuration depends on STM32 MCU:
|
|
||||||
|
|
||||||
STM32F1xx, STM32F2xx, STM32F4xx, STM32L0xx and STM32L1xx use I2Cv1;
|
|
||||||
STM32F0xx, STM32F3xx, STM32F7xx and STM32L4xx use I2Cv2;
|
|
||||||
|
|
||||||
#### I2Cv1 :id=i2cv1
|
|
||||||
STM32 MCUs allow for different clock and duty parameters when configuring I2Cv1. These can be modified using the following parameters, using <https://www.playembedded.org/blog/stm32-i2c-chibios/#I2Cv1_configuration_structure> as a reference:
|
|
||||||
|
|
||||||
| Variable | Default |
|
|
||||||
|--------------------|------------------|
|
|
||||||
| `I2C1_OPMODE` | `OPMODE_I2C` |
|
|
||||||
| `I2C1_CLOCK_SPEED` | `100000` |
|
|
||||||
| `I2C1_DUTY_CYCLE` | `STD_DUTY_CYCLE` |
|
|
||||||
|
|
||||||
#### I2Cv2 :id=i2cv2
|
|
||||||
STM32 MCUs allow for different timing parameters when configuring I2Cv2. These can be modified using the following parameters, using <https://www.st.com/en/embedded-software/stsw-stm32126.html> as a reference:
|
|
||||||
|
|
||||||
| Variable | Default |
|
|
||||||
|-----------------------|---------|
|
|
||||||
| `I2C1_TIMINGR_PRESC` | `15U` |
|
|
||||||
| `I2C1_TIMINGR_SCLDEL` | `4U` |
|
|
||||||
| `I2C1_TIMINGR_SDADEL` | `2U` |
|
|
||||||
| `I2C1_TIMINGR_SCLH` | `15U` |
|
|
||||||
| `I2C1_TIMINGR_SCLL` | `21U` |
|
|
||||||
|
|
||||||
STM32 MCUs allow for different "alternate function" modes when configuring GPIO pins. These are required to switch the pins used to I2Cv2 mode. See the respective datasheet for the appropriate values for your MCU.
|
|
||||||
|
|
||||||
| Variable | Default |
|
|
||||||
|---------------------|---------|
|
|
||||||
| `I2C1_SCL_PAL_MODE` | `4` |
|
|
||||||
| `I2C1_SDA_PAL_MODE` | `4` |
|
|
||||||
|
|
||||||
#### Other :id=other
|
|
||||||
You can also overload the `void i2c_init(void)` function, which has a weak attribute. If you do this the configuration variables above will not be used. Please consult the datasheet of your MCU for the available GPIO configurations. The following is an example initialization function:
|
|
||||||
|
|
||||||
```c
|
```c
|
||||||
void i2c_init(void)
|
#define HAL_USE_I2C TRUE
|
||||||
{
|
```
|
||||||
setPinInput(B6); // Try releasing special pins for a short time
|
|
||||||
setPinInput(B7);
|
|
||||||
wait_ms(10); // Wait for the release to happen
|
|
||||||
|
|
||||||
palSetPadMode(GPIOB, 6, PAL_MODE_ALTERNATE(4) | PAL_STM32_OTYPE_OPENDRAIN | PAL_STM32_PUPDR_PULLUP); // Set B6 to I2C function
|
Then, modify your board's `mcuconf.h` to enable the peripheral you've chosen, for example:
|
||||||
palSetPadMode(GPIOB, 7, PAL_MODE_ALTERNATE(4) | PAL_STM32_OTYPE_OPENDRAIN | PAL_STM32_PUPDR_PULLUP); // Set B7 to I2C function
|
|
||||||
|
```c
|
||||||
|
#undef STM32_I2C_USE_I2C2
|
||||||
|
#define STM32_I2C_USE_I2C2 TRUE
|
||||||
|
```
|
||||||
|
|
||||||
|
|`mcuconf.h` Setting |Description |Default|
|
||||||
|
|----------------------------|----------------------------------------------------------------------------------|-------|
|
||||||
|
|`STM32_I2C_BUSY_TIMEOUT` |Time in milliseconds until the I2C command is aborted if no response is received |`50` |
|
||||||
|
|`STM32_I2C_XXX_IRQ_PRIORITY`|Interrupt priority for hardware driver XXX (THIS IS AN EXPERT SETTING) |`10` |
|
||||||
|
|`STM32_I2C_USE_DMA` |Enable/Disable the ability of the MCU to offload the data transfer to the DMA unit|`TRUE` |
|
||||||
|
|`STM32_I2C_XXX_DMA_PRIORITY`|Priority of DMA unit for hardware driver XXX (THIS IS AN EXPERT SETTING) |`1` |
|
||||||
|
|
||||||
|
Configuration-wise, you'll need to set up the peripheral as per your MCU's datasheet -- the defaults match the pins for a Proton-C, i.e. STM32F303.
|
||||||
|
|
||||||
|
|`config.h` Overrride |Description |Default|
|
||||||
|
|------------------------|-------------------------------------------------------------------------------------------|-------|
|
||||||
|
|`I2C_DRIVER` |I2C peripheral to use - I2C1 -> `I2CD1`, I2C2 -> `I2CD2` etc. |`I2CD1`|
|
||||||
|
|`I2C1_BANK` (deprecated)|The bank of pins (`GPIOA`, `GPIOB`, `GPIOC`), superseded by `I2C1_SCL_BANK`/`I2C1_SDA_BANK`|`GPIOB`|
|
||||||
|
|`I2C1_SCL_BANK` |The bank of pins (`GPIOA`, `GPIOB`, `GPIOC`) to use for SCL |`GPIOB`|
|
||||||
|
|`I2C1_SCL` |The pin number for SCL (0-15) |`6` |
|
||||||
|
|`I2C1_SCL_PAL_MODE` |The alternate function mode for SCL |`4` |
|
||||||
|
|`I2C1_SDA_BANK` |The bank of pins (`GPIOA`, `GPIOB`, `GPIOC`) to use for SDA |`GPIOB`|
|
||||||
|
|`I2C1_SDA` |The pin number for SDA (0-15) |`7` |
|
||||||
|
|`I2C1_SDA_PAL_MODE` |The alternate function mode for SDA |`4` |
|
||||||
|
|
||||||
|
The following configuration values depend on the specific MCU in use.
|
||||||
|
|
||||||
|
### I2Cv1 :id=i2cv1
|
||||||
|
|
||||||
|
* STM32F1xx
|
||||||
|
* STM32F2xx
|
||||||
|
* STM32F4xx
|
||||||
|
* STM32L0xx
|
||||||
|
* STM32L1xx
|
||||||
|
|
||||||
|
See [this page](https://www.playembedded.org/blog/stm32-i2c-chibios/#7_I2Cv1_configuration_structure) for the I2Cv1 configuration structure.
|
||||||
|
|
||||||
|
|`config.h` Override|Default |
|
||||||
|
|-------------------|----------------|
|
||||||
|
|`I2C1_OPMODE` |`OPMODE_I2C` |
|
||||||
|
|`I2C1_CLOCK_SPEED` |`100000` |
|
||||||
|
|`I2C1_DUTY_CYCLE` |`STD_DUTY_CYCLE`|
|
||||||
|
|
||||||
|
### I2Cv2 :id=i2cv2
|
||||||
|
|
||||||
|
* STM32F0xx
|
||||||
|
* STM32F3xx
|
||||||
|
* STM32F7xx
|
||||||
|
* STM32L4xx
|
||||||
|
|
||||||
|
See [this page](https://www.playembedded.org/blog/stm32-i2c-chibios/#8_I2Cv2_I2Cv3_configuration_structure) for the I2Cv2 configuration structure.
|
||||||
|
|
||||||
|
|`config.h` Override |Default|
|
||||||
|
|---------------------|-------|
|
||||||
|
|`I2C1_TIMINGR_PRESC` |`0U` |
|
||||||
|
|`I2C1_TIMINGR_SCLDEL`|`7U` |
|
||||||
|
|`I2C1_TIMINGR_SDADEL`|`0U` |
|
||||||
|
|`I2C1_TIMINGR_SCLH` |`38U` |
|
||||||
|
|`I2C1_TIMINGR_SCLL` |`129U` |
|
||||||
|
|
||||||
|
## Functions :id=functions
|
||||||
|
|
||||||
|
### `void i2c_init(void)`
|
||||||
|
|
||||||
|
Initialize the I2C driver. This function must be called only once, before any of the below functions can be called.
|
||||||
|
|
||||||
|
This function is weakly defined, meaning it can be overridden if necessary for your particular use case:
|
||||||
|
|
||||||
|
```c
|
||||||
|
void i2c_init(void) {
|
||||||
|
setPinInput(B6); // Try releasing special pins for a short time
|
||||||
|
setPinInput(B7);
|
||||||
|
wait_ms(10); // Wait for the release to happen
|
||||||
|
|
||||||
|
palSetPadMode(GPIOB, 6, PAL_MODE_ALTERNATE(4) | PAL_STM32_OTYPE_OPENDRAIN | PAL_STM32_PUPDR_PULLUP); // Set B6 to I2C function
|
||||||
|
palSetPadMode(GPIOB, 7, PAL_MODE_ALTERNATE(4) | PAL_STM32_OTYPE_OPENDRAIN | PAL_STM32_PUPDR_PULLUP); // Set B7 to I2C function
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### `i2c_status_t i2c_start(uint8_t address, uint16_t timeout)`
|
||||||
|
|
||||||
|
Start an I2C transaction.
|
||||||
|
|
||||||
|
#### Arguments
|
||||||
|
|
||||||
|
- `uint8_t address`
|
||||||
|
The 7-bit I2C address of the device (ie. without the read/write bit - this will be set automatically).
|
||||||
|
- `uint16_t timeout`
|
||||||
|
The time in milliseconds to wait for a response from the target device.
|
||||||
|
|
||||||
|
#### Return Value
|
||||||
|
|
||||||
|
`I2C_STATUS_TIMEOUT` if the timeout period elapses, `I2C_STATUS_ERROR` if some other error occurs, otherwise `I2C_STATUS_SUCCESS`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### `i2c_status_t i2c_transmit(uint8_t address, uint8_t *data, uint16_t length, uint16_t timeout)`
|
||||||
|
|
||||||
|
Send multiple bytes to the selected I2C device.
|
||||||
|
|
||||||
|
#### Arguments
|
||||||
|
|
||||||
|
- `uint8_t address`
|
||||||
|
The 7-bit I2C address of the device.
|
||||||
|
- `uint8_t *data`
|
||||||
|
A pointer to the data to transmit.
|
||||||
|
- `uint16_t length`
|
||||||
|
The number of bytes to write. Take care not to overrun the length of `data`.
|
||||||
|
- `uint16_t timeout`
|
||||||
|
The time in milliseconds to wait for a response from the target device.
|
||||||
|
|
||||||
|
#### Return Value
|
||||||
|
|
||||||
|
`I2C_STATUS_TIMEOUT` if the timeout period elapses, `I2C_STATUS_ERROR` if some other error occurs, otherwise `I2C_STATUS_SUCCESS`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### `i2c_status_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout)`
|
||||||
|
|
||||||
|
Receive multiple bytes from the selected SPI device.
|
||||||
|
|
||||||
|
#### Arguments
|
||||||
|
|
||||||
|
- `uint8_t address`
|
||||||
|
The 7-bit I2C address of the device.
|
||||||
|
- `uint8_t *data`
|
||||||
|
A pointer to the buffer to read into.
|
||||||
|
- `uint16_t length`
|
||||||
|
The number of bytes to read. Take care not to overrun the length of `data`.
|
||||||
|
- `uint16_t timeout`
|
||||||
|
The time in milliseconds to wait for a response from the target device.
|
||||||
|
|
||||||
|
#### Return Value
|
||||||
|
|
||||||
|
`I2C_STATUS_TIMEOUT` if the timeout period elapses, `I2C_STATUS_ERROR` if some other error occurs, otherwise `I2C_STATUS_SUCCESS`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### `i2c_status_t i2c_writeReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)`
|
||||||
|
|
||||||
|
Writes to a register on the I2C device.
|
||||||
|
|
||||||
|
#### Arguments
|
||||||
|
|
||||||
|
- `uint8_t devaddr`
|
||||||
|
The 7-bit I2C address of the device.
|
||||||
|
- `uint8_t regaddr`
|
||||||
|
The register address to write to.
|
||||||
|
- `uint8_t *data`
|
||||||
|
A pointer to the data to transmit.
|
||||||
|
- `uint16_t length`
|
||||||
|
The number of bytes to write. Take care not to overrun the length of `data`.
|
||||||
|
- `uint16_t timeout`
|
||||||
|
The time in milliseconds to wait for a response from the target device.
|
||||||
|
|
||||||
|
#### Return Value
|
||||||
|
|
||||||
|
`I2C_STATUS_TIMEOUT` if the timeout period elapses, `I2C_STATUS_ERROR` if some other error occurs, otherwise `I2C_STATUS_SUCCESS`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### `i2c_status_t i2c_readReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)`
|
||||||
|
|
||||||
|
Reads from a register on the I2C device.
|
||||||
|
|
||||||
|
#### Arguments
|
||||||
|
|
||||||
|
- `uint8_t devaddr`
|
||||||
|
The 7-bit I2C address of the device.
|
||||||
|
- `uint8_t regaddr`
|
||||||
|
The register address to read from.
|
||||||
|
- `uint16_t length`
|
||||||
|
The number of bytes to read. Take care not to overrun the length of `data`.
|
||||||
|
- `uint16_t timeout`
|
||||||
|
The time in milliseconds to wait for a response from the target device.
|
||||||
|
|
||||||
|
#### Return Value
|
||||||
|
|
||||||
|
`I2C_STATUS_TIMEOUT` if the timeout period elapses, `I2C_STATUS_ERROR` if some other error occurs, otherwise `I2C_STATUS_SUCCESS`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### `i2c_status_t i2c_stop(void)`
|
||||||
|
|
||||||
|
Stop the current I2C transaction.
|
||||||
@@ -45,6 +45,7 @@ You'll need one of the following to actually perform the ISP flashing (followed
|
|||||||
|
|
||||||
* [SparkFun PocketAVR](https://www.sparkfun.com/products/9825) - (USB Tiny)
|
* [SparkFun PocketAVR](https://www.sparkfun.com/products/9825) - (USB Tiny)
|
||||||
* [USBtinyISP AVR Programmer Kit](https://www.adafruit.com/product/46) - (USB Tiny)
|
* [USBtinyISP AVR Programmer Kit](https://www.adafruit.com/product/46) - (USB Tiny)
|
||||||
|
* [USBasp](https://www.fischl.de/usbasp/) - (usbasp)
|
||||||
* [Teensy 2.0](https://www.pjrc.com/store/teensy.html) - (avrisp)
|
* [Teensy 2.0](https://www.pjrc.com/store/teensy.html) - (avrisp)
|
||||||
* [Pro Micro](https://www.sparkfun.com/products/12640) - (avrisp)
|
* [Pro Micro](https://www.sparkfun.com/products/12640) - (avrisp)
|
||||||
* [Bus Pirate](https://www.adafruit.com/product/237) - (buspirate)
|
* [Bus Pirate](https://www.adafruit.com/product/237) - (buspirate)
|
||||||
@@ -82,6 +83,15 @@ This is pretty straight-forward - we'll be connecting like-things to like-things
|
|||||||
PocketAVR VCC <-> Keyboard VCC
|
PocketAVR VCC <-> Keyboard VCC
|
||||||
PocketAVR GND <-> Keyboard GND
|
PocketAVR GND <-> Keyboard GND
|
||||||
|
|
||||||
|
### USBasp
|
||||||
|
|
||||||
|
USBasp RST <-> Keyboard RESET
|
||||||
|
USBasp SCLK <-> Keyboard B1 (SCLK)
|
||||||
|
USBasp MOSI <-> Keyboard B2 (MOSI)
|
||||||
|
USBasp MISO <-> Keyboard B3 (MISO)
|
||||||
|
USBasp VCC <-> Keyboard VCC
|
||||||
|
USBasp GND <-> Keyboard GND
|
||||||
|
|
||||||
### Teensy 2.0
|
### Teensy 2.0
|
||||||
|
|
||||||
Teensy B0 <-> Keyboard RESET
|
Teensy B0 <-> Keyboard RESET
|
||||||
|
|||||||
@@ -93,7 +93,7 @@ And to do so, add `reset_keyboard()` to your function or macro, and this will re
|
|||||||
|
|
||||||
## Wiping the EEPROM (Persistent Storage)
|
## Wiping the EEPROM (Persistent Storage)
|
||||||
|
|
||||||
If you're having issues with Audio, RGB Underglow, backlighting or keys acting weird, then you can reset the EEPROM (persistent setting storage). Bootmagic is one way to do this, but if that isn't enabled, then you can use a custom macro to do so.
|
If you're having issues with Audio, RGB Underglow, backlighting or keys acting weird, then you can reset the EEPROM (persistent setting storage). To force an EEPROM reset, use the [`EEP_RST` keycode](quantum_keycodes.md) or [Bootmagic](feature_bootmagic.md) functionality. If neither of those are an option, then you can use a custom macro to do so.
|
||||||
|
|
||||||
To wipe the EEPROM, run `eeconfig_init()` from your function or macro to reset most of the settings to default.
|
To wipe the EEPROM, run `eeconfig_init()` from your function or macro to reset most of the settings to default.
|
||||||
|
|
||||||
|
|||||||
+27
-15
@@ -8,7 +8,7 @@ No special setup is required - just connect the `SS`, `SCK`, `MOSI` and `MISO` p
|
|||||||
|
|
||||||
|MCU |`SS`|`SCK`|`MOSI`|`MISO`|
|
|MCU |`SS`|`SCK`|`MOSI`|`MISO`|
|
||||||
|---------------|----|-----|------|------|
|
|---------------|----|-----|------|------|
|
||||||
|ATMega16/32U2/4|`B0`|`B1` |`B2` |`B3` |
|
|ATmega16/32U2/4|`B0`|`B1` |`B2` |`B3` |
|
||||||
|AT90USB64/128 |`B0`|`B1` |`B2` |`B3` |
|
|AT90USB64/128 |`B0`|`B1` |`B2` |`B3` |
|
||||||
|ATmega32A |`B4`|`B7` |`B5` |`B6` |
|
|ATmega32A |`B4`|`B7` |`B5` |`B6` |
|
||||||
|ATmega328/P |`B2`|`B5` |`B3` |`B4` |
|
|ATmega328/P |`B2`|`B5` |`B3` |`B4` |
|
||||||
@@ -20,22 +20,34 @@ You may use more than one slave select pin, not just the `SS` pin. This is usefu
|
|||||||
|
|
||||||
You'll need to determine which pins can be used for SPI -- as an example, STM32 parts generally have multiple SPI peripherals, labeled SPI1, SPI2, SPI3 etc.
|
You'll need to determine which pins can be used for SPI -- as an example, STM32 parts generally have multiple SPI peripherals, labeled SPI1, SPI2, SPI3 etc.
|
||||||
|
|
||||||
To enable SPI, modify your board's `halconf.h` to enable SPI - both `HAL_USE_SPI` and `SPI_USE_WAIT` should be `TRUE`, and `SPI_SELECT_MODE` should be `SPI_SELECT_MODE_PAD`.
|
To enable SPI, modify your board's `halconf.h` to enable SPI:
|
||||||
Then, modify your board's `mcuconf.h` to enable the SPI peripheral you've chosen -- in the case of using SPI2, modify `STM32_SPI_USE_SPI2` to be `TRUE`.
|
|
||||||
|
|
||||||
As per the AVR configuration, you may select any other standard GPIO as a slave select pin, and can be supplied to `spi_start()`.
|
```c
|
||||||
|
#define HAL_USE_SPI TRUE
|
||||||
|
#define SPI_USE_WAIT TRUE
|
||||||
|
#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
|
||||||
|
```
|
||||||
|
|
||||||
|
Then, modify your board's `mcuconf.h` to enable the peripheral you've chosen, for example:
|
||||||
|
|
||||||
|
```c
|
||||||
|
#undef STM32_SPI_USE_SPI2
|
||||||
|
#define STM32_SPI_USE_SPI2 TRUE
|
||||||
|
```
|
||||||
|
|
||||||
Configuration-wise, you'll need to set up the peripheral as per your MCU's datasheet -- the defaults match the pins for a Proton-C, i.e. STM32F303.
|
Configuration-wise, you'll need to set up the peripheral as per your MCU's datasheet -- the defaults match the pins for a Proton-C, i.e. STM32F303.
|
||||||
|
|
||||||
`config.h` override | Description | Default Value
|
|`config.h` Override|Description |Default|
|
||||||
----------------------------|---------------------------------------------------------------|--------------
|
|-------------------|-------------------------------------------------------------|-------|
|
||||||
`#define SPI_DRIVER` | SPI peripheral to use - SPI1 => `SPID1`, SPI2 => `SPID2` etc. | `SPID2`
|
|`SPI_DRIVER` |SPI peripheral to use - SPI1 -> `SPID1`, SPI2 -> `SPID2` etc.|`SPID2`|
|
||||||
`#define SPI_SCK_PIN` | The pin to use for the SCK | `B13`
|
|`SPI_SCK_PIN` |The pin to use for SCK |`B13` |
|
||||||
`#define SPI_SCK_PAL_MODE` | The alternate function mode for the SCK pin | `5`
|
|`SPI_SCK_PAL_MODE` |The alternate function mode for SCK |`5` |
|
||||||
`#define SPI_MOSI_PIN` | The pin to use for the MOSI | `B15`
|
|`SPI_MOSI_PIN` |The pin to use for MOSI |`B15` |
|
||||||
`#define SPI_MOSI_PAL_MODE` | The alternate function mode for the MOSI pin | `5`
|
|`SPI_MOSI_PAL_MODE`|The alternate function mode for MOSI |`5` |
|
||||||
`#define SPI_MISO_PIN` | The pin to use for the MISO | `B14`
|
|`SPI_MISO_PIN` |The pin to use for MISO |`B14` |
|
||||||
`#define SPI_MISO_PAL_MODE` | The alternate function mode for the MISO pin | `5`
|
|`SPI_MISO_PAL_MODE`|The alternate function mode for MISO |`5` |
|
||||||
|
|
||||||
|
As per the AVR configuration, you may choose any other standard GPIO as a slave select pin, which should be supplied to `spi_start()`.
|
||||||
|
|
||||||
## Functions
|
## Functions
|
||||||
|
|
||||||
@@ -112,7 +124,7 @@ Send multiple bytes to the selected SPI device.
|
|||||||
|
|
||||||
#### Return Value
|
#### Return Value
|
||||||
|
|
||||||
`SPI_STATUS_TIMEOUT` if the timeout period elapses, `SPI_STATUS_SUCCESS` on success, or `SPI_STATUS_ERROR` otherwise.
|
`SPI_STATUS_TIMEOUT` if the timeout period elapses, `SPI_STATUS_ERROR` if some other error occurs, otherwise `SPI_STATUS_SUCCESS`.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -129,7 +141,7 @@ Receive multiple bytes from the selected SPI device.
|
|||||||
|
|
||||||
#### Return Value
|
#### Return Value
|
||||||
|
|
||||||
`SPI_STATUS_TIMEOUT` if the internal transmission timeout period elapses, `SPI_STATUS_SUCCESS` on success, or `SPI_STATUS_ERROR` otherwise.
|
`SPI_STATUS_TIMEOUT` if the timeout period elapses, `SPI_STATUS_ERROR` if some other error occurs, otherwise `SPI_STATUS_SUCCESS`.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
+17
-21
@@ -67,19 +67,27 @@ void ws2812_setleds(LED_TYPE *ledarray, uint16_t number_of_leds) {
|
|||||||
#define w_onecycles (((F_CPU / 1000) * w_onepulse + 500000) / 1000000)
|
#define w_onecycles (((F_CPU / 1000) * w_onepulse + 500000) / 1000000)
|
||||||
#define w_totalcycles (((F_CPU / 1000) * w_totalperiod + 500000) / 1000000)
|
#define w_totalcycles (((F_CPU / 1000) * w_totalperiod + 500000) / 1000000)
|
||||||
|
|
||||||
// w1 - nops between rising edge and falling edge - low
|
// w1_nops - nops between rising edge and falling edge - low
|
||||||
#define w1 (w_zerocycles - w_fixedlow)
|
#if w_zerocycles >= w_fixedlow
|
||||||
// w2 nops between fe low and fe high
|
# define w1_nops (w_zerocycles - w_fixedlow)
|
||||||
#define w2 (w_onecycles - w_fixedhigh - w1)
|
|
||||||
// w3 nops to complete loop
|
|
||||||
#define w3 (w_totalcycles - w_fixedtotal - w1 - w2)
|
|
||||||
|
|
||||||
#if w1 > 0
|
|
||||||
# define w1_nops w1
|
|
||||||
#else
|
#else
|
||||||
# define w1_nops 0
|
# define w1_nops 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// w2_nops - nops between fe low and fe high
|
||||||
|
#if w_onecycles >= (w_fixedhigh + w1_nops)
|
||||||
|
# define w2_nops (w_onecycles - w_fixedhigh - w1_nops)
|
||||||
|
#else
|
||||||
|
# define w2_nops 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// w3_nops - nops to complete loop
|
||||||
|
#if w_totalcycles >= (w_fixedtotal + w1_nops + w2_nops)
|
||||||
|
# define w3_nops (w_totalcycles - w_fixedtotal - w1_nops - w2_nops)
|
||||||
|
#else
|
||||||
|
# define w3_nops 0
|
||||||
|
#endif
|
||||||
|
|
||||||
// The only critical timing parameter is the minimum pulse length of the "0"
|
// The only critical timing parameter is the minimum pulse length of the "0"
|
||||||
// Warn or throw error if this timing can not be met with current F_CPU settings.
|
// Warn or throw error if this timing can not be met with current F_CPU settings.
|
||||||
#define w_lowtime ((w1_nops + w_fixedlow) * 1000000) / (F_CPU / 1000)
|
#define w_lowtime ((w1_nops + w_fixedlow) * 1000000) / (F_CPU / 1000)
|
||||||
@@ -90,18 +98,6 @@ void ws2812_setleds(LED_TYPE *ledarray, uint16_t number_of_leds) {
|
|||||||
# warning "Please consider a higher clockspeed, if possible"
|
# warning "Please consider a higher clockspeed, if possible"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if w2 > 0
|
|
||||||
# define w2_nops w2
|
|
||||||
#else
|
|
||||||
# define w2_nops 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if w3 > 0
|
|
||||||
# define w3_nops w3
|
|
||||||
#else
|
|
||||||
# define w3_nops 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define w_nop1 "nop \n\t"
|
#define w_nop1 "nop \n\t"
|
||||||
#define w_nop2 "rjmp .+0 \n\t"
|
#define w_nop2 "rjmp .+0 \n\t"
|
||||||
#define w_nop4 w_nop2 w_nop2
|
#define w_nop4 w_nop2 w_nop2
|
||||||
|
|||||||
@@ -54,25 +54,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
|
|
||||||
/* Enable GNAP matrix serial output */
|
/* Enable GNAP matrix serial output */
|
||||||
#define GNAP_ENABLE
|
#define GNAP_ENABLE
|
||||||
|
|
||||||
/* USART configuration */
|
|
||||||
#ifdef __AVR_ATmega32U4__
|
|
||||||
# define SERIAL_UART_BAUD 9600
|
|
||||||
# define SERIAL_UART_DATA UDR1
|
|
||||||
# define SERIAL_UART_UBRR (F_CPU / (16UL * SERIAL_UART_BAUD) - 1)
|
|
||||||
# define SERIAL_UART_RXD_VECT USART1_RX_vect
|
|
||||||
# define SERIAL_UART_TXD_READY (UCSR1A & _BV(UDRE1))
|
|
||||||
# define SERIAL_UART_INIT() do { \
|
|
||||||
/* baud rate */ \
|
|
||||||
UBRR1L = SERIAL_UART_UBRR; \
|
|
||||||
/* baud rate */ \
|
|
||||||
UBRR1H = SERIAL_UART_UBRR >> 8; \
|
|
||||||
/* enable TX */ \
|
|
||||||
UCSR1B = _BV(TXEN1); \
|
|
||||||
/* 8-bit data */ \
|
|
||||||
UCSR1C = _BV(UCSZ11) | _BV(UCSZ10); \
|
|
||||||
sei(); \
|
|
||||||
} while(0)
|
|
||||||
# else
|
|
||||||
# error "USART configuration is needed."
|
|
||||||
#endif
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
|
|
||||||
#include "common/matrix.h"
|
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "common/matrix.h"
|
#include "matrix.h"
|
||||||
|
|
||||||
#define ROWS_PER_HAND (MATRIX_ROWS/2)
|
#define ROWS_PER_HAND (MATRIX_ROWS/2)
|
||||||
|
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
|
|
||||||
#define RGB_DI_PIN B15
|
#define RGB_DI_PIN B15
|
||||||
#define RGBLED_NUM 68
|
#define RGBLED_NUM 68
|
||||||
#define RGBLIGT_LIMIT_VAL 200
|
#define RGBLIGHT_LIMIT_VAL 200
|
||||||
#define RGBLIGHT_SLEEP
|
#define RGBLIGHT_SLEEP
|
||||||
#define RGBLIGHT_ANIMATIONS
|
#define RGBLIGHT_ANIMATIONS
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "bastylmini.h"
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
#define LAYOUT_split_3x6_3( \
|
||||||
|
k00, k01, k02, k03, k04, k05, k45, k44, k43, k42, k41, k40, \
|
||||||
|
k10, k11, k12, k13, k14, k15, k55, k54, k53, k52, k51, k50, \
|
||||||
|
k20, k21, k22, k23, k24, k25, k65, k64, k63, k62, k61, k60, \
|
||||||
|
k33, k34, k31, k71, k74, k73 \
|
||||||
|
)\
|
||||||
|
{\
|
||||||
|
{ k00, k01, k02, k03, k04, k05 }, \
|
||||||
|
{ k10, k11, k12, k13, k14, k15 }, \
|
||||||
|
{ k20, k21, k22, k23, k24, k25 }, \
|
||||||
|
{ KC_NO, k31, KC_NO, k33, k34, KC_NO }, \
|
||||||
|
{ k40, k41, k42, k43, k44, k45 }, \
|
||||||
|
{ k50, k51, k52, k53, k54, k55 }, \
|
||||||
|
{ k60, k61, k62, k63, k64, k65 }, \
|
||||||
|
{ KC_NO, k71, KC_NO, k73, k74, KC_NO }, \
|
||||||
|
}
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
#include "config_common.h"
|
||||||
|
#define VENDOR_ID 0xA8F8
|
||||||
|
#define PRODUCT_ID 0x1828
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER Bastard Keyboards
|
||||||
|
#define PRODUCT Bastyl Mini
|
||||||
|
|
||||||
|
#define MATRIX_ROWS 8
|
||||||
|
#define MATRIX_COLS 6
|
||||||
|
#define RGBLIGHT_LIMIT_VAL 180
|
||||||
|
#define MATRIX_ROW_PINS { B5, F7, F6, B6 }
|
||||||
|
#define MATRIX_COL_PINS { B4, E6, C6, B1, B3, B2 }
|
||||||
|
|
||||||
|
#define DIODE_DIRECTION ROW2COL
|
||||||
|
|
||||||
|
#define RGB_DI_PIN D2
|
||||||
|
#define RGBLED_NUM 42
|
||||||
|
#define RGBLED_SPLIT { 21, 21 }
|
||||||
|
#define RGBLIGHT_ANIMATIONS
|
||||||
|
|
||||||
|
#define DEBOUNCE 5
|
||||||
|
|
||||||
|
#define SOFT_SERIAL_PIN D0
|
||||||
|
|
||||||
|
#define LOCKING_SUPPORT_ENABLE
|
||||||
|
#define LOCKING_RESYNC_ENABLE
|
||||||
|
#define F_SCL 400000L
|
||||||
|
#define USB_POLLING_INTERVAL_MS 1
|
||||||
|
#define MASTER_RIGHT
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "Bastyl Mini",
|
||||||
|
"url": "https://www.bastardkb.com",
|
||||||
|
"maintainer": "Quentin Lebastard",
|
||||||
|
"width": 17,
|
||||||
|
"height": 4,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT_split_3x6_3": {
|
||||||
|
"layout": [
|
||||||
|
{"label":"L00", "x":0, "y":0},
|
||||||
|
{"label":"L01", "x":1, "y":0},
|
||||||
|
{"label":"L02", "x":2, "y":0},
|
||||||
|
{"label":"L03", "x":3, "y":0},
|
||||||
|
{"label":"L04", "x":4, "y":0},
|
||||||
|
{"label":"L05", "x":5, "y":0},
|
||||||
|
{"label":"R00", "x":11, "y":0},
|
||||||
|
{"label":"R01", "x":12, "y":0},
|
||||||
|
{"label":"R02", "x":13, "y":0},
|
||||||
|
{"label":"R03", "x":14, "y":0},
|
||||||
|
{"label":"R04", "x":15, "y":0},
|
||||||
|
{"label":"R05", "x":16, "y":0},
|
||||||
|
{"label":"L10", "x":0, "y":1},
|
||||||
|
{"label":"L11", "x":1, "y":1},
|
||||||
|
{"label":"L12", "x":2, "y":1},
|
||||||
|
{"label":"L13", "x":3, "y":1},
|
||||||
|
{"label":"L14", "x":4, "y":1},
|
||||||
|
{"label":"L15", "x":5, "y":1},
|
||||||
|
{"label":"R10", "x":11, "y":1},
|
||||||
|
{"label":"R11", "x":12, "y":1},
|
||||||
|
{"label":"R12", "x":13, "y":1},
|
||||||
|
{"label":"R13", "x":14, "y":1},
|
||||||
|
{"label":"R14", "x":15, "y":1},
|
||||||
|
{"label":"R15", "x":16, "y":1},
|
||||||
|
{"label":"L20", "x":0, "y":2},
|
||||||
|
{"label":"L21", "x":1, "y":2},
|
||||||
|
{"label":"L22", "x":2, "y":2},
|
||||||
|
{"label":"L23", "x":3, "y":2},
|
||||||
|
{"label":"L24", "x":4, "y":2},
|
||||||
|
{"label":"L25", "x":5, "y":2},
|
||||||
|
{"label":"R20", "x":11, "y":2},
|
||||||
|
{"label":"R21", "x":12, "y":2},
|
||||||
|
{"label":"R22", "x":13, "y":2},
|
||||||
|
{"label":"R23", "x":14, "y":2},
|
||||||
|
{"label":"R24", "x":15, "y":2},
|
||||||
|
{"label":"R25", "x":16, "y":2},
|
||||||
|
{"label":"L33", "x":5, "y":3},
|
||||||
|
{"label":"L34", "x":6, "y":3},
|
||||||
|
{"label":"L31", "x":7, "y":3},
|
||||||
|
{"label":"R33", "x":9, "y":3},
|
||||||
|
{"label":"R34", "x":10, "y":3},
|
||||||
|
{"label":"R31", "x":11, "y":3}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,70 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
[0] = LAYOUT_split_3x6_3(
|
||||||
|
//,-----------------------------------------------------. ,-----------------------------------------------------.
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|
||||||
|
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ESC,
|
||||||
|
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
KC_LGUI, KC_SPC , MO(1), MO(2), KC_ENT , KC_RALT
|
||||||
|
//`--------------------------' `--------------------------'
|
||||||
|
|
||||||
|
),
|
||||||
|
|
||||||
|
[1] = LAYOUT_split_3x6_3(
|
||||||
|
//,-----------------------------------------------------. ,-----------------------------------------------------.
|
||||||
|
KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|
||||||
|
KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT, XXXXXXX, XXXXXXX,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|
||||||
|
KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
KC_LGUI, KC_SPC, _______, MO(3), KC_ENT, KC_RALT
|
||||||
|
//`--------------------------' `--------------------------'
|
||||||
|
),
|
||||||
|
|
||||||
|
[2] = LAYOUT_split_3x6_3(
|
||||||
|
//,-----------------------------------------------------. ,-----------------------------------------------------.
|
||||||
|
KC_TAB, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|
||||||
|
KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_GRV,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|
||||||
|
KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, KC_TILD,
|
||||||
|
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
KC_LGUI, KC_SPC, MO(3), _______, KC_ENT, KC_RALT
|
||||||
|
//`--------------------------' `--------------------------'
|
||||||
|
),
|
||||||
|
|
||||||
|
[3] = LAYOUT_split_3x6_3(
|
||||||
|
//,-----------------------------------------------------. ,-----------------------------------------------------.
|
||||||
|
RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|
||||||
|
RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|
||||||
|
RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
KC_LGUI, KC_SPC, _______, _______, KC_ENT, KC_RALT
|
||||||
|
//`--------------------------' `--------------------------'
|
||||||
|
)
|
||||||
|
};
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
# Bastyl Mini
|
||||||
|
|
||||||
|
A split, compact ergonomic keyboard.
|
||||||
|
|
||||||
|
* Keyboard Maintainer: [BastardKb](https://github.com/Bastardkb/)
|
||||||
|
* Hardware Supported: elite-C V4
|
||||||
|
* Hardware Availability: [Bastardkb.com](https://bastardkb.com/)
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make bastardkb/bastylmini:default
|
||||||
|
|
||||||
|
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||||
|
|
||||||
|
See the [keyboard build instructions](http://docs.bastardkb.com/)
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
# MCU name
|
||||||
|
MCU = atmega32u4
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
BOOTLOADER = atmel-dfu
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
|
||||||
|
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||||
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
|
CONSOLE_ENABLE = no # Console for debug
|
||||||
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
|
NKRO_ENABLE = yes # USB Nkey Rollover
|
||||||
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
|
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||||
|
AUDIO_ENABLE = no # Audio output
|
||||||
|
SPLIT_KEYBOARD = yes
|
||||||
|
TAP_DANCE_ENABLE = no
|
||||||
|
LTO_ENABLE = yes
|
||||||
|
|
||||||
|
AUDIO_SUPPORTED = no
|
||||||
|
RGB_MATRIX_SUPPORTED = no
|
||||||
|
RGBLIGHT_SUPPORTED = yes
|
||||||
|
|
||||||
|
LAYOUTS = split_3x6_3
|
||||||
@@ -20,8 +20,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#include "config_common.h"
|
#include "config_common.h"
|
||||||
|
|
||||||
/* USB Device descriptor parameter */
|
/* USB Device descriptor parameter */
|
||||||
#define VENDOR_ID 0xFEED
|
#define VENDOR_ID 0x5946 // YF
|
||||||
#define PRODUCT_ID 0x1070
|
#define PRODUCT_ID 0x0002
|
||||||
#define DEVICE_VER 0x0001
|
#define DEVICE_VER 0x0001
|
||||||
#define MANUFACTURER yfuku
|
#define MANUFACTURER yfuku
|
||||||
#define PRODUCT bat43
|
#define PRODUCT bat43
|
||||||
|
|||||||
@@ -0,0 +1,58 @@
|
|||||||
|
/* Copyright 2020 yfuku
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
// Defines names for use in layer keycodes and the keymap
|
||||||
|
enum layer_names {
|
||||||
|
_BASE,
|
||||||
|
_LOWER,
|
||||||
|
_RAISE,
|
||||||
|
_ADJUST
|
||||||
|
};
|
||||||
|
|
||||||
|
#define L_SPC LT(_LOWER, KC_SPC)
|
||||||
|
#define R_ENT LT(_RAISE, KC_ENT)
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[_BASE] = LAYOUT(
|
||||||
|
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS,
|
||||||
|
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_BSPC, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_RSFT,
|
||||||
|
KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RCTL,
|
||||||
|
KC_LGUI, KC_LANG2,L_SPC, R_ENT, KC_LANG1,KC_RALT,
|
||||||
|
KC_A, KC_B, KC_C, KC_D, KC_E
|
||||||
|
),
|
||||||
|
[_LOWER] = LAYOUT(
|
||||||
|
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_EQL, KC_PLUS, KC_ASTR, KC_PERC, _______,
|
||||||
|
_______, KC_1, KC_2, KC_3, KC_4, KC_5, _______, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
|
||||||
|
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, KC_DEL, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
[_RAISE] = LAYOUT(
|
||||||
|
_______, KC_BSLS, KC_EXLM, KC_AMPR, KC_PIPE, XXXXXXX, XXXXXXX, KC_EQL, KC_PLUS, KC_ASTR, KC_PERC, _______,
|
||||||
|
_______, KC_HASH, KC_GRV, KC_DQT, KC_QUOT, KC_TILD, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_DLR, _______,
|
||||||
|
_______, XXXXXXX, XXXXXXX, KC_LCBR, KC_LBRC, KC_LPRN, KC_RPRN, KC_RBRC, KC_RCBR, KC_AT, KC_CIRC, _______,
|
||||||
|
_______, _______, KC_BSPC, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
[_ADJUST] = LAYOUT(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
# The default keymap for bat43
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
VIA_ENABLE = yes
|
||||||
@@ -0,0 +1,97 @@
|
|||||||
|
/* Copyright 2020 Stanrc85
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
#include "stanrc85.h"
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/* Base */
|
||||||
|
[_QWERTY] = LAYOUT_all(
|
||||||
|
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_MPLY,
|
||||||
|
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, CA_SCLN,
|
||||||
|
KC_CTLE, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, CA_QUOT,
|
||||||
|
KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, LT_SPCF, LT_SPCF, LT_SPCF, TD_TWIN, MO(_FN2_60), KC_GRV, KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
|
),
|
||||||
|
[_DEFAULT] = LAYOUT_all(
|
||||||
|
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_MPLY,
|
||||||
|
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, CA_SCLN,
|
||||||
|
KC_CTLE, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, CA_QUOT,
|
||||||
|
KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, LT_SPCF, LT_SPCF, LT_SPCF, TD_TWIN, MO(_FN2_60), KC_GRV, KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
|
),
|
||||||
|
[_FN1_60] = LAYOUT_all(
|
||||||
|
KC_TILD, 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_DEL, _______,
|
||||||
|
_______, _______, CA_QUOT, KC_VOLU, CA_SCLN, _______, _______, KC_HOME, KC_UP, KC_END, KC_PSCR, _______, _______, KC_INS, _______,
|
||||||
|
KC_CAPS, _______, KC_MUTE, KC_VOLD, KC_MPLY, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______,
|
||||||
|
_______, _______, KC_RDP, _______, _______, _______, _______, _______, KC_WBAK, KC_WFWD, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
[_FN2_60] = LAYOUT_all(
|
||||||
|
RGB_TOG, RGB_MOD, RGB_VAD, RGB_VAI, RGB_SAI, RGB_HUD, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MAKE, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, TG(_DEFAULT)
|
||||||
|
)
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
void rgb_matrix_indicators_user(void) {
|
||||||
|
uint8_t layer = get_highest_layer(layer_state);
|
||||||
|
switch (layer) {
|
||||||
|
case _FN1_60:
|
||||||
|
rgb_matrix_set_color(10, 0, 0, 255);
|
||||||
|
break;
|
||||||
|
case _FN2_60:
|
||||||
|
rgb_matrix_set_color(10, 255, 255, 255);
|
||||||
|
break;
|
||||||
|
case _DEFAULT:
|
||||||
|
rgb_matrix_set_color(10, 0, 255, 0);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (host_keyboard_led_state().caps_lock) {
|
||||||
|
rgb_matrix_set_color(10, 255, 0, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_init_kb(void){
|
||||||
|
|
||||||
|
#ifdef RGB_MATRIX_ENABLE
|
||||||
|
|
||||||
|
g_led_config = (led_config_t){ {
|
||||||
|
// Key Matrix to LED Index
|
||||||
|
{ 10 , 10 , 9 , 9 , 8 , 7 , 7 , 6 , 5 , 5 , 4 , 3 , 3 , 2 , 1 , 1 },
|
||||||
|
{ NO_LED, 11 , NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 0 , 1 },
|
||||||
|
{ NO_LED, 12 , NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 23 , 1 },
|
||||||
|
{ NO_LED, 13 , 14 , NO_LED, 15 , 16 , NO_LED, 17 , 18 , NO_LED, 19 , 20 , NO_LED, 21 , 22 , NO_LED },
|
||||||
|
{ NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
|
||||||
|
}, {
|
||||||
|
// LED Index to Physical Position
|
||||||
|
{224, 42}, {224, 21}, {209, 21}, {179, 21}, {164, 21}, {134, 21}, {119, 21}, {89, 21}, {74, 21}, {45, 21}, {30, 21}, {30, 42},
|
||||||
|
{30, 64}, {30, 85}, {45, 85}, {74, 85}, {89, 85}, {119, 85}, {134, 85}, {164, 85}, {179, 85}, {209, 85}, {224, 85}, {224, 64}
|
||||||
|
}, {
|
||||||
|
// LED Index to Flag
|
||||||
|
LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL,
|
||||||
|
LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL,
|
||||||
|
LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL
|
||||||
|
} };
|
||||||
|
|
||||||
|
#endif
|
||||||
|
matrix_init_user();
|
||||||
|
}
|
||||||
@@ -1,9 +1,5 @@
|
|||||||
#include "centromere.h"
|
#include "centromere.h"
|
||||||
|
|
||||||
void uart_init(void) {
|
|
||||||
SERIAL_UART_INIT();
|
|
||||||
}
|
|
||||||
|
|
||||||
void led_init(void) {
|
void led_init(void) {
|
||||||
#if MCU == atmega32u2
|
#if MCU == atmega32u2
|
||||||
setPinOutput(C4); // Set red LED pin as output
|
setPinOutput(C4); // Set red LED pin as output
|
||||||
@@ -32,7 +28,6 @@ void matrix_init_kb(void) {
|
|||||||
// put your keyboard start-up code here
|
// put your keyboard start-up code here
|
||||||
// runs once when the firmware starts up
|
// runs once when the firmware starts up
|
||||||
matrix_init_user();
|
matrix_init_user();
|
||||||
uart_init();
|
|
||||||
led_init();
|
led_init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -59,17 +59,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
|
|
||||||
//UART settings for communication with the RF microcontroller
|
//UART settings for communication with the RF microcontroller
|
||||||
#define SERIAL_UART_BAUD 500000
|
#define SERIAL_UART_BAUD 500000
|
||||||
#define SERIAL_UART_DATA UDR1
|
|
||||||
#define SERIAL_UART_UBRR (F_CPU / (16UL * SERIAL_UART_BAUD) - 1)
|
|
||||||
#define SERIAL_UART_TXD_READY (UCSR1A & _BV(UDRE1))
|
|
||||||
#define SERIAL_UART_RXD_PRESENT (UCSR1A & _BV(RXC1))
|
#define SERIAL_UART_RXD_PRESENT (UCSR1A & _BV(RXC1))
|
||||||
#define SERIAL_UART_INIT() do { \
|
#define SERIAL_UART_INIT_CUSTOM \
|
||||||
/* baud rate */ \
|
/* enable TX and RX */ \
|
||||||
UBRR1L = SERIAL_UART_UBRR; \
|
UCSR1B = _BV(TXEN1) | _BV(RXEN1); \
|
||||||
/* baud rate */ \
|
/* 8-bit data */ \
|
||||||
UBRR1H = SERIAL_UART_UBRR >> 8; \
|
UCSR1C = _BV(UCSZ11) | _BV(UCSZ10);
|
||||||
/* enable TX and RX */ \
|
|
||||||
UCSR1B = _BV(TXEN1) | _BV(RXEN1); \
|
|
||||||
/* 8-bit data */ \
|
|
||||||
UCSR1C = _BV(UCSZ11) | _BV(UCSZ10); \
|
|
||||||
} while(0)
|
|
||||||
@@ -26,6 +26,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "matrix.h"
|
#include "matrix.h"
|
||||||
#include "timer.h"
|
#include "timer.h"
|
||||||
|
#include "protocol/serial.h"
|
||||||
|
|
||||||
#if (MATRIX_COLS <= 8)
|
#if (MATRIX_COLS <= 8)
|
||||||
# define print_matrix_header() print("\nr/c 01234567\n")
|
# define print_matrix_header() print("\nr/c 01234567\n")
|
||||||
@@ -79,12 +80,11 @@ uint8_t matrix_cols(void) {
|
|||||||
void matrix_init(void) {
|
void matrix_init(void) {
|
||||||
|
|
||||||
matrix_init_quantum();
|
matrix_init_quantum();
|
||||||
|
serial_init();
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t matrix_scan(void)
|
uint8_t matrix_scan(void)
|
||||||
{
|
{
|
||||||
SERIAL_UART_INIT();
|
|
||||||
|
|
||||||
uint32_t timeout = 0;
|
uint32_t timeout = 0;
|
||||||
|
|
||||||
//the s character requests the RF remote slave to send the matrix information
|
//the s character requests the RF remote slave to send the matrix information
|
||||||
|
|||||||
@@ -31,14 +31,7 @@ MIDI_ENABLE = no # MIDI controls
|
|||||||
UNICODE_ENABLE = yes # Unicode
|
UNICODE_ENABLE = yes # Unicode
|
||||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
|
|
||||||
USB = /dev/ttyACM0
|
|
||||||
|
|
||||||
# upload: build
|
|
||||||
# $(CENTROMERE_UPLOAD_COMMAND)
|
|
||||||
|
|
||||||
OPT_DEFS += -DCENTROMERE_PROMICRO
|
|
||||||
|
|
||||||
# # project specific files
|
# # project specific files
|
||||||
SRC = matrix.c
|
SRC += matrix.c serial_uart.c
|
||||||
|
|
||||||
LAYOUTS = split_3x5_3 split_3x6_3
|
LAYOUTS = split_3x5_3 split_3x6_3
|
||||||
@@ -1,9 +1,5 @@
|
|||||||
#include "chimera_ergo.h"
|
#include "chimera_ergo.h"
|
||||||
|
|
||||||
void uart_init(void) {
|
|
||||||
SERIAL_UART_INIT();
|
|
||||||
}
|
|
||||||
|
|
||||||
void led_init(void) {
|
void led_init(void) {
|
||||||
DDRD |= (1<<1);
|
DDRD |= (1<<1);
|
||||||
PORTD |= (1<<1);
|
PORTD |= (1<<1);
|
||||||
@@ -16,16 +12,5 @@ void matrix_init_kb(void) {
|
|||||||
// put your keyboard start-up code here
|
// put your keyboard start-up code here
|
||||||
// runs once when the firmware starts up
|
// runs once when the firmware starts up
|
||||||
matrix_init_user();
|
matrix_init_user();
|
||||||
uart_init();
|
|
||||||
led_init();
|
led_init();
|
||||||
}
|
}
|
||||||
|
|
||||||
void matrix_scan_kb(void) {
|
|
||||||
// put your looping keyboard code here
|
|
||||||
// runs every cycle (a lot)
|
|
||||||
matrix_scan_user();
|
|
||||||
}
|
|
||||||
|
|
||||||
void led_set_kb(uint8_t usb_led) {
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -60,19 +60,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
|
|
||||||
//UART settings for communication with the RF microcontroller
|
//UART settings for communication with the RF microcontroller
|
||||||
#define SERIAL_UART_BAUD 1000000
|
#define SERIAL_UART_BAUD 1000000
|
||||||
#define SERIAL_UART_DATA UDR1
|
|
||||||
#define SERIAL_UART_UBRR (F_CPU / (16UL * SERIAL_UART_BAUD) - 1)
|
|
||||||
#define SERIAL_UART_TXD_READY (UCSR1A & _BV(UDRE1))
|
|
||||||
#define SERIAL_UART_RXD_PRESENT (UCSR1A & _BV(RXC1))
|
#define SERIAL_UART_RXD_PRESENT (UCSR1A & _BV(RXC1))
|
||||||
#define SERIAL_UART_INIT() do { \
|
#define SERIAL_UART_INIT_CUSTOM \
|
||||||
/* baud rate */ \
|
/* enable TX and RX */ \
|
||||||
UBRR1L = SERIAL_UART_UBRR; \
|
UCSR1B = _BV(TXEN1) | _BV(RXEN1); \
|
||||||
/* baud rate */ \
|
/* 8-bit data */ \
|
||||||
UBRR1H = SERIAL_UART_UBRR >> 8; \
|
UCSR1C = _BV(UCSZ11) | _BV(UCSZ10);
|
||||||
/* enable TX and RX */ \
|
|
||||||
UCSR1B = _BV(TXEN1) | _BV(RXEN1); \
|
|
||||||
/* 8-bit data */ \
|
|
||||||
UCSR1C = _BV(UCSZ11) | _BV(UCSZ10); \
|
|
||||||
} while(0)
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -26,6 +26,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "matrix.h"
|
#include "matrix.h"
|
||||||
#include "timer.h"
|
#include "timer.h"
|
||||||
|
#include "protocol/serial.h"
|
||||||
|
|
||||||
#if (MATRIX_COLS <= 8)
|
#if (MATRIX_COLS <= 8)
|
||||||
# define print_matrix_header() print("\nr/c 01234567\n")
|
# define print_matrix_header() print("\nr/c 01234567\n")
|
||||||
@@ -88,12 +89,11 @@ uint8_t matrix_cols(void) {
|
|||||||
void matrix_init(void) {
|
void matrix_init(void) {
|
||||||
|
|
||||||
matrix_init_quantum();
|
matrix_init_quantum();
|
||||||
|
serial_init();
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t matrix_scan(void)
|
uint8_t matrix_scan(void)
|
||||||
{
|
{
|
||||||
SERIAL_UART_INIT();
|
|
||||||
|
|
||||||
uint32_t timeout = 0;
|
uint32_t timeout = 0;
|
||||||
|
|
||||||
//the s character requests the RF slave to send the matrix
|
//the s character requests the RF slave to send the matrix
|
||||||
|
|||||||
@@ -28,12 +28,5 @@ NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
|
|||||||
UNICODE_ENABLE = YES # Unicode
|
UNICODE_ENABLE = YES # Unicode
|
||||||
# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
|
# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
|
|
||||||
|
|
||||||
OPT_DEFS += -DCHIMERA_ERGO_PROMICRO
|
|
||||||
CHIMERA_ERGO_UPLOAD_COMMAND = while [ ! -r $(USB) ]; do sleep 1; done; \
|
|
||||||
avrdude -p $(MCU) -c avr109 -U flash:w:$(TARGET).hex -P $(USB)
|
|
||||||
|
|
||||||
# # project specific files
|
# # project specific files
|
||||||
SRC = matrix.c
|
SRC += matrix.c serial_uart.c
|
||||||
|
|
||||||
USB = /dev/ttyACM0
|
|
||||||
@@ -1,9 +1,5 @@
|
|||||||
#include "chimera_ls.h"
|
#include "chimera_ls.h"
|
||||||
|
|
||||||
void uart_init(void) {
|
|
||||||
SERIAL_UART_INIT();
|
|
||||||
}
|
|
||||||
|
|
||||||
void led_init(void) {
|
void led_init(void) {
|
||||||
DDRD |= (1<<1);
|
DDRD |= (1<<1);
|
||||||
PORTD |= (1<<1);
|
PORTD |= (1<<1);
|
||||||
@@ -16,16 +12,5 @@ void matrix_init_kb(void) {
|
|||||||
// put your keyboard start-up code here
|
// put your keyboard start-up code here
|
||||||
// runs once when the firmware starts up
|
// runs once when the firmware starts up
|
||||||
matrix_init_user();
|
matrix_init_user();
|
||||||
uart_init();
|
|
||||||
led_init();
|
led_init();
|
||||||
}
|
}
|
||||||
|
|
||||||
void matrix_scan_kb(void) {
|
|
||||||
// put your looping keyboard code here
|
|
||||||
// runs every cycle (a lot)
|
|
||||||
matrix_scan_user();
|
|
||||||
}
|
|
||||||
|
|
||||||
void led_set_kb(uint8_t usb_led) {
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -60,19 +60,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
|
|
||||||
//UART settings for communication with the RF microcontroller
|
//UART settings for communication with the RF microcontroller
|
||||||
#define SERIAL_UART_BAUD 1000000
|
#define SERIAL_UART_BAUD 1000000
|
||||||
#define SERIAL_UART_DATA UDR1
|
|
||||||
#define SERIAL_UART_UBRR (F_CPU / (16UL * SERIAL_UART_BAUD) - 1)
|
|
||||||
#define SERIAL_UART_TXD_READY (UCSR1A & _BV(UDRE1))
|
|
||||||
#define SERIAL_UART_RXD_PRESENT (UCSR1A & _BV(RXC1))
|
#define SERIAL_UART_RXD_PRESENT (UCSR1A & _BV(RXC1))
|
||||||
#define SERIAL_UART_INIT() do { \
|
#define SERIAL_UART_INIT_CUSTOM \
|
||||||
/* baud rate */ \
|
/* enable TX and RX */ \
|
||||||
UBRR1L = SERIAL_UART_UBRR; \
|
UCSR1B = _BV(TXEN1) | _BV(RXEN1); \
|
||||||
/* baud rate */ \
|
/* 8-bit data */ \
|
||||||
UBRR1H = SERIAL_UART_UBRR >> 8; \
|
UCSR1C = _BV(UCSZ11) | _BV(UCSZ10);
|
||||||
/* enable TX and RX */ \
|
|
||||||
UCSR1B = _BV(TXEN1) | _BV(RXEN1); \
|
|
||||||
/* 8-bit data */ \
|
|
||||||
UCSR1C = _BV(UCSZ11) | _BV(UCSZ10); \
|
|
||||||
} while(0)
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -26,6 +26,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "matrix.h"
|
#include "matrix.h"
|
||||||
#include "timer.h"
|
#include "timer.h"
|
||||||
|
#include "protocol/serial.h"
|
||||||
|
|
||||||
#if (MATRIX_COLS <= 8)
|
#if (MATRIX_COLS <= 8)
|
||||||
# define print_matrix_header() print("\nr/c 01234567\n")
|
# define print_matrix_header() print("\nr/c 01234567\n")
|
||||||
@@ -92,12 +93,11 @@ uint8_t matrix_cols(void) {
|
|||||||
|
|
||||||
void matrix_init(void) {
|
void matrix_init(void) {
|
||||||
matrix_init_quantum();
|
matrix_init_quantum();
|
||||||
|
serial_init();
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t matrix_scan(void)
|
uint8_t matrix_scan(void)
|
||||||
{
|
{
|
||||||
SERIAL_UART_INIT();
|
|
||||||
|
|
||||||
uint32_t timeout = 0;
|
uint32_t timeout = 0;
|
||||||
|
|
||||||
//the s character requests the RF slave to send the matrix
|
//the s character requests the RF slave to send the matrix
|
||||||
|
|||||||
@@ -28,14 +28,8 @@ NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
|
|||||||
UNICODE_ENABLE = YES # Unicode
|
UNICODE_ENABLE = YES # Unicode
|
||||||
# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
|
# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
|
|
||||||
USB = /dev/ttyACM0
|
|
||||||
|
|
||||||
OPT_DEFS += -DCHIMERA_LS_PROMICRO
|
|
||||||
CHIMERA_LS_UPLOAD_COMMAND = while [ ! -r $(USB) ]; do sleep 1; done; \
|
|
||||||
avrdude -p $(MCU) -c avr109 -U flash:w:$(TARGET).hex -P $(USB)
|
|
||||||
|
|
||||||
# project specific files
|
# project specific files
|
||||||
SRC = matrix.c
|
SRC += matrix.c serial_uart.c
|
||||||
|
|
||||||
LAYOUTS = ortho_4x12
|
LAYOUTS = ortho_4x12
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,5 @@
|
|||||||
#include "chimera_ortho.h"
|
#include "chimera_ortho.h"
|
||||||
|
|
||||||
void uart_init(void) {
|
|
||||||
SERIAL_UART_INIT();
|
|
||||||
}
|
|
||||||
|
|
||||||
void led_init(void) {
|
void led_init(void) {
|
||||||
DDRD |= (1<<1);
|
DDRD |= (1<<1);
|
||||||
PORTD |= (1<<1);
|
PORTD |= (1<<1);
|
||||||
@@ -16,16 +12,5 @@ void matrix_init_kb(void) {
|
|||||||
// put your keyboard start-up code here
|
// put your keyboard start-up code here
|
||||||
// runs once when the firmware starts up
|
// runs once when the firmware starts up
|
||||||
matrix_init_user();
|
matrix_init_user();
|
||||||
uart_init();
|
|
||||||
led_init();
|
led_init();
|
||||||
}
|
}
|
||||||
|
|
||||||
void matrix_scan_kb(void) {
|
|
||||||
// put your looping keyboard code here
|
|
||||||
// runs every cycle (a lot)
|
|
||||||
matrix_scan_user();
|
|
||||||
}
|
|
||||||
|
|
||||||
void led_set_kb(uint8_t usb_led) {
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -60,19 +60,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
|
|
||||||
//UART settings for communication with the RF microcontroller
|
//UART settings for communication with the RF microcontroller
|
||||||
#define SERIAL_UART_BAUD 1000000
|
#define SERIAL_UART_BAUD 1000000
|
||||||
#define SERIAL_UART_DATA UDR1
|
|
||||||
#define SERIAL_UART_UBRR (F_CPU / (16UL * SERIAL_UART_BAUD) - 1)
|
|
||||||
#define SERIAL_UART_TXD_READY (UCSR1A & _BV(UDRE1))
|
|
||||||
#define SERIAL_UART_RXD_PRESENT (UCSR1A & _BV(RXC1))
|
#define SERIAL_UART_RXD_PRESENT (UCSR1A & _BV(RXC1))
|
||||||
#define SERIAL_UART_INIT() do { \
|
#define SERIAL_UART_INIT_CUSTOM \
|
||||||
/* baud rate */ \
|
/* enable TX and RX */ \
|
||||||
UBRR1L = SERIAL_UART_UBRR; \
|
UCSR1B = _BV(TXEN1) | _BV(RXEN1); \
|
||||||
/* baud rate */ \
|
/* 8-bit data */ \
|
||||||
UBRR1H = SERIAL_UART_UBRR >> 8; \
|
UCSR1C = _BV(UCSZ11) | _BV(UCSZ10);
|
||||||
/* enable TX and RX */ \
|
|
||||||
UCSR1B = _BV(TXEN1) | _BV(RXEN1); \
|
|
||||||
/* 8-bit data */ \
|
|
||||||
UCSR1C = _BV(UCSZ11) | _BV(UCSZ10); \
|
|
||||||
} while(0)
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -26,6 +26,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "matrix.h"
|
#include "matrix.h"
|
||||||
#include "timer.h"
|
#include "timer.h"
|
||||||
|
#include "protocol/serial.h"
|
||||||
|
|
||||||
#if (MATRIX_COLS <= 8)
|
#if (MATRIX_COLS <= 8)
|
||||||
# define print_matrix_header() print("\nr/c 01234567\n")
|
# define print_matrix_header() print("\nr/c 01234567\n")
|
||||||
@@ -78,12 +79,11 @@ uint8_t matrix_cols(void) {
|
|||||||
void matrix_init(void) {
|
void matrix_init(void) {
|
||||||
|
|
||||||
matrix_init_quantum();
|
matrix_init_quantum();
|
||||||
|
serial_init();
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t matrix_scan(void)
|
uint8_t matrix_scan(void)
|
||||||
{
|
{
|
||||||
SERIAL_UART_INIT();
|
|
||||||
|
|
||||||
uint32_t timeout = 0;
|
uint32_t timeout = 0;
|
||||||
|
|
||||||
//the s character requests the RF slave to send the matrix
|
//the s character requests the RF slave to send the matrix
|
||||||
|
|||||||
@@ -28,11 +28,5 @@ NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
|
|||||||
UNICODE_ENABLE = YES # Unicode
|
UNICODE_ENABLE = YES # Unicode
|
||||||
# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
|
# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
|
|
||||||
USB = /dev/ttyACM0
|
|
||||||
|
|
||||||
OPT_DEFS += -DCHIMERA_ORTHO_PROMICRO
|
|
||||||
CHIMERA_ORTHO_UPLOAD_COMMAND = while [ ! -r $(USB) ]; do sleep 1; done; \
|
|
||||||
avrdude -p $(MCU) -c avr109 -U flash:w:$(TARGET).hex -P $(USB)
|
|
||||||
|
|
||||||
# project specific files
|
# project specific files
|
||||||
SRC = matrix.c
|
SRC += matrix.c serial_uart.c
|
||||||
@@ -1,9 +1,5 @@
|
|||||||
#include "chimera_ortho_plus.h"
|
#include "chimera_ortho_plus.h"
|
||||||
|
|
||||||
void uart_init(void) {
|
|
||||||
SERIAL_UART_INIT();
|
|
||||||
}
|
|
||||||
|
|
||||||
void led_init(void) {
|
void led_init(void) {
|
||||||
setPinOutput(D1);
|
setPinOutput(D1);
|
||||||
setPinOutput(F4);
|
setPinOutput(F4);
|
||||||
@@ -18,6 +14,5 @@ void matrix_init_kb(void) {
|
|||||||
// put your keyboard start-up code here
|
// put your keyboard start-up code here
|
||||||
// runs once when the firmware starts up
|
// runs once when the firmware starts up
|
||||||
matrix_init_user();
|
matrix_init_user();
|
||||||
uart_init();
|
|
||||||
led_init();
|
led_init();
|
||||||
}
|
}
|
||||||
@@ -59,17 +59,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
|
|
||||||
//UART settings for communication with the RF microcontroller
|
//UART settings for communication with the RF microcontroller
|
||||||
#define SERIAL_UART_BAUD 1000000
|
#define SERIAL_UART_BAUD 1000000
|
||||||
#define SERIAL_UART_DATA UDR1
|
|
||||||
#define SERIAL_UART_UBRR (F_CPU / (16UL * SERIAL_UART_BAUD) - 1)
|
|
||||||
#define SERIAL_UART_TXD_READY (UCSR1A & _BV(UDRE1))
|
|
||||||
#define SERIAL_UART_RXD_PRESENT (UCSR1A & _BV(RXC1))
|
#define SERIAL_UART_RXD_PRESENT (UCSR1A & _BV(RXC1))
|
||||||
#define SERIAL_UART_INIT() do { \
|
#define SERIAL_UART_INIT_CUSTOM \
|
||||||
/* baud rate */ \
|
/* enable TX and RX */ \
|
||||||
UBRR1L = SERIAL_UART_UBRR; \
|
UCSR1B = _BV(TXEN1) | _BV(RXEN1); \
|
||||||
/* baud rate */ \
|
/* 8-bit data */ \
|
||||||
UBRR1H = SERIAL_UART_UBRR >> 8; \
|
UCSR1C = _BV(UCSZ11) | _BV(UCSZ10);
|
||||||
/* enable TX and RX */ \
|
|
||||||
UCSR1B = _BV(TXEN1) | _BV(RXEN1); \
|
|
||||||
/* 8-bit data */ \
|
|
||||||
UCSR1C = _BV(UCSZ11) | _BV(UCSZ10); \
|
|
||||||
} while(0)
|
|
||||||
@@ -26,6 +26,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "matrix.h"
|
#include "matrix.h"
|
||||||
#include "timer.h"
|
#include "timer.h"
|
||||||
|
#include "protocol/serial.h"
|
||||||
|
|
||||||
#if (MATRIX_COLS <= 8)
|
#if (MATRIX_COLS <= 8)
|
||||||
# define print_matrix_header() print("\nr/c 01234567\n")
|
# define print_matrix_header() print("\nr/c 01234567\n")
|
||||||
@@ -78,12 +79,11 @@ uint8_t matrix_cols(void) {
|
|||||||
void matrix_init(void) {
|
void matrix_init(void) {
|
||||||
|
|
||||||
matrix_init_quantum();
|
matrix_init_quantum();
|
||||||
|
serial_init();
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t matrix_scan(void)
|
uint8_t matrix_scan(void)
|
||||||
{
|
{
|
||||||
SERIAL_UART_INIT();
|
|
||||||
|
|
||||||
uint32_t timeout = 0;
|
uint32_t timeout = 0;
|
||||||
|
|
||||||
//the s character requests the RF slave to send the matrix
|
//the s character requests the RF slave to send the matrix
|
||||||
|
|||||||
@@ -33,4 +33,4 @@ UNICODE_ENABLE = yes
|
|||||||
CUSTOM_MATRIX = yes
|
CUSTOM_MATRIX = yes
|
||||||
|
|
||||||
# project specific files
|
# project specific files
|
||||||
SRC = matrix.c
|
SRC += matrix.c serial_uart.c
|
||||||
@@ -53,7 +53,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
|
|
||||||
#define RGB_DI_PIN B15
|
#define RGB_DI_PIN B15
|
||||||
#define RGBLED_NUM 16
|
#define RGBLED_NUM 16
|
||||||
#define RGBLIGT_LIMIT_VAL 200
|
#define RGBLIGHT_LIMIT_VAL 200
|
||||||
#define RGBLIGHT_SLEEP
|
#define RGBLIGHT_SLEEP
|
||||||
#define RGBLIGHT_ANIMATIONS
|
#define RGBLIGHT_ANIMATIONS
|
||||||
|
|
||||||
|
|||||||
@@ -1,22 +1 @@
|
|||||||
#include "comet46.h"
|
#include "comet46.h"
|
||||||
|
|
||||||
void uart_init(void) {
|
|
||||||
SERIAL_UART_INIT();
|
|
||||||
}
|
|
||||||
|
|
||||||
void matrix_init_kb(void) {
|
|
||||||
// put your keyboard start-up code here
|
|
||||||
// runs once when the firmware starts up
|
|
||||||
matrix_init_user();
|
|
||||||
uart_init();
|
|
||||||
}
|
|
||||||
|
|
||||||
void matrix_scan_kb(void) {
|
|
||||||
// put your looping keyboard code here
|
|
||||||
// runs every cycle (a lot)
|
|
||||||
matrix_scan_user();
|
|
||||||
}
|
|
||||||
|
|
||||||
void led_set_kb(uint8_t usb_led) {
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -66,19 +66,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
|
|
||||||
//UART settings for communication with the RF microcontroller
|
//UART settings for communication with the RF microcontroller
|
||||||
#define SERIAL_UART_BAUD 1000000
|
#define SERIAL_UART_BAUD 1000000
|
||||||
#define SERIAL_UART_DATA UDR1
|
|
||||||
#define SERIAL_UART_UBRR (F_CPU / (16UL * SERIAL_UART_BAUD) - 1)
|
|
||||||
#define SERIAL_UART_TXD_READY (UCSR1A & _BV(UDRE1))
|
|
||||||
#define SERIAL_UART_RXD_PRESENT (UCSR1A & _BV(RXC1))
|
#define SERIAL_UART_RXD_PRESENT (UCSR1A & _BV(RXC1))
|
||||||
#define SERIAL_UART_INIT() do { \
|
#define SERIAL_UART_INIT_CUSTOM \
|
||||||
/* baud rate */ \
|
/* enable TX and RX */ \
|
||||||
UBRR1L = SERIAL_UART_UBRR; \
|
UCSR1B = _BV(TXEN1) | _BV(RXEN1); \
|
||||||
/* baud rate */ \
|
/* 8-bit data */ \
|
||||||
UBRR1H = SERIAL_UART_UBRR >> 8; \
|
UCSR1C = _BV(UCSZ11) | _BV(UCSZ10);
|
||||||
/* enable TX and RX */ \
|
|
||||||
UCSR1B = _BV(TXEN1) | _BV(RXEN1); \
|
|
||||||
/* 8-bit data */ \
|
|
||||||
UCSR1C = _BV(UCSZ11) | _BV(UCSZ10); \
|
|
||||||
} while(0)
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -26,6 +26,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "matrix.h"
|
#include "matrix.h"
|
||||||
#include "timer.h"
|
#include "timer.h"
|
||||||
|
#include "protocol/serial.h"
|
||||||
|
|
||||||
#if (MATRIX_COLS <= 8)
|
#if (MATRIX_COLS <= 8)
|
||||||
# define print_matrix_header() print("\nr/c 01234567\n")
|
# define print_matrix_header() print("\nr/c 01234567\n")
|
||||||
@@ -78,12 +79,11 @@ uint8_t matrix_cols(void) {
|
|||||||
void matrix_init(void) {
|
void matrix_init(void) {
|
||||||
|
|
||||||
matrix_init_quantum();
|
matrix_init_quantum();
|
||||||
|
serial_init();
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t matrix_scan(void)
|
uint8_t matrix_scan(void)
|
||||||
{
|
{
|
||||||
SERIAL_UART_INIT();
|
|
||||||
|
|
||||||
uint32_t timeout = 0;
|
uint32_t timeout = 0;
|
||||||
|
|
||||||
//the s character requests the RF slave to send the matrix
|
//the s character requests the RF slave to send the matrix
|
||||||
|
|||||||
@@ -28,8 +28,8 @@ NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
|
|||||||
UNICODE_ENABLE = YES # Unicode
|
UNICODE_ENABLE = YES # Unicode
|
||||||
# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
|
# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
|
|
||||||
USB = /dev/ttyACM0
|
|
||||||
# project specific files
|
# project specific files
|
||||||
SRC += matrix.c \
|
SRC += matrix.c \
|
||||||
i2c.c \
|
i2c.c \
|
||||||
ssd1306.c
|
ssd1306.c \
|
||||||
|
serial_uart.c
|
||||||
@@ -60,19 +60,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
|
|
||||||
//UART settings for communication with the RF microcontroller
|
//UART settings for communication with the RF microcontroller
|
||||||
#define SERIAL_UART_BAUD 1000000
|
#define SERIAL_UART_BAUD 1000000
|
||||||
#define SERIAL_UART_DATA UDR1
|
|
||||||
#define SERIAL_UART_UBRR (F_CPU / (16UL * SERIAL_UART_BAUD) - 1)
|
|
||||||
#define SERIAL_UART_TXD_READY (UCSR1A & _BV(UDRE1))
|
|
||||||
#define SERIAL_UART_RXD_PRESENT (UCSR1A & _BV(RXC1))
|
#define SERIAL_UART_RXD_PRESENT (UCSR1A & _BV(RXC1))
|
||||||
#define SERIAL_UART_INIT() do { \
|
#define SERIAL_UART_INIT_CUSTOM \
|
||||||
/* baud rate */ \
|
/* enable TX and RX */ \
|
||||||
UBRR1L = SERIAL_UART_UBRR; \
|
UCSR1B = _BV(TXEN1) | _BV(RXEN1); \
|
||||||
/* baud rate */ \
|
/* 8-bit data */ \
|
||||||
UBRR1H = SERIAL_UART_UBRR >> 8; \
|
UCSR1C = _BV(UCSZ11) | _BV(UCSZ10);
|
||||||
/* enable TX and RX */ \
|
|
||||||
UCSR1B = _BV(TXEN1) | _BV(RXEN1); \
|
|
||||||
/* 8-bit data */ \
|
|
||||||
UCSR1C = _BV(UCSZ11) | _BV(UCSZ10); \
|
|
||||||
} while(0)
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -1,12 +1,7 @@
|
|||||||
#include "dichotomy.h"
|
#include "dichotomy.h"
|
||||||
|
|
||||||
void uart_init(void) {
|
|
||||||
SERIAL_UART_INIT();
|
|
||||||
}
|
|
||||||
|
|
||||||
void pointing_device_task(void){
|
void pointing_device_task(void){
|
||||||
/*report_mouse_t currentReport = {};
|
/*report_mouse_t currentReport = {};
|
||||||
SERIAL_UART_INIT();
|
|
||||||
uint32_t timeout = 0;
|
uint32_t timeout = 0;
|
||||||
|
|
||||||
//the m character requests the RF slave to send the mouse report
|
//the m character requests the RF slave to send the mouse report
|
||||||
@@ -77,16 +72,5 @@ void matrix_init_kb(void) {
|
|||||||
// put your keyboard start-up code here
|
// put your keyboard start-up code here
|
||||||
// runs once when the firmware starts up
|
// runs once when the firmware starts up
|
||||||
matrix_init_user();
|
matrix_init_user();
|
||||||
uart_init();
|
|
||||||
led_init();
|
led_init();
|
||||||
}
|
}
|
||||||
|
|
||||||
void matrix_scan_kb(void) {
|
|
||||||
// put your looping keyboard code here
|
|
||||||
// runs every cycle (a lot)
|
|
||||||
matrix_scan_user();
|
|
||||||
}
|
|
||||||
|
|
||||||
void led_set_kb(uint8_t usb_led) {
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -29,6 +29,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#include "dichotomy.h"
|
#include "dichotomy.h"
|
||||||
#include "pointing_device.h"
|
#include "pointing_device.h"
|
||||||
#include "report.h"
|
#include "report.h"
|
||||||
|
#include "protocol/serial.h"
|
||||||
|
|
||||||
#if (MATRIX_COLS <= 8)
|
#if (MATRIX_COLS <= 8)
|
||||||
# define print_matrix_header() print("\nr/c 01234567\n")
|
# define print_matrix_header() print("\nr/c 01234567\n")
|
||||||
@@ -93,11 +94,11 @@ uint8_t matrix_cols(void) {
|
|||||||
|
|
||||||
void matrix_init(void) {
|
void matrix_init(void) {
|
||||||
matrix_init_quantum();
|
matrix_init_quantum();
|
||||||
|
serial_init();
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t matrix_scan(void)
|
uint8_t matrix_scan(void)
|
||||||
{
|
{
|
||||||
SERIAL_UART_INIT();
|
|
||||||
//xprintf("\r\nTRYING TO SCAN");
|
//xprintf("\r\nTRYING TO SCAN");
|
||||||
|
|
||||||
uint32_t timeout = 0;
|
uint32_t timeout = 0;
|
||||||
|
|||||||
@@ -29,14 +29,5 @@ NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
|
|||||||
UNICODE_ENABLE = YES # Unicode
|
UNICODE_ENABLE = YES # Unicode
|
||||||
# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
|
# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
|
|
||||||
USB = /dev/ttyACM0
|
|
||||||
|
|
||||||
OPT_DEFS += -DDICHOTOMY_PROMICRO
|
|
||||||
DICHOTOMY_UPLOAD_COMMAND = while [ ! -r $(USB) ]; do sleep 1; done; \
|
|
||||||
avrdude -p $(MCU) -c avr109 -U flash:w:$(TARGET).hex -P $(USB)
|
|
||||||
|
|
||||||
# # project specific files
|
# # project specific files
|
||||||
SRC = matrix.c
|
SRC += matrix.c serial_uart.c
|
||||||
|
|
||||||
#upload: build
|
|
||||||
# $(DICHOTOMY_UPLOAD_COMMAND)
|
|
||||||
@@ -457,6 +457,464 @@
|
|||||||
"y": 5.5
|
"y": 5.5
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_tkl_iso": {
|
||||||
|
"layout": [
|
||||||
|
{
|
||||||
|
"label": "Esc",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "F1",
|
||||||
|
"x": 2,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "F2",
|
||||||
|
"x": 3,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "F3",
|
||||||
|
"x": 4,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "F4",
|
||||||
|
"x": 5,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "F5",
|
||||||
|
"x": 6.5,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "F6",
|
||||||
|
"x": 7.5,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "F7",
|
||||||
|
"x": 8.5,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "F8",
|
||||||
|
"x": 9.5,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "F9",
|
||||||
|
"x": 11,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "F10",
|
||||||
|
"x": 12,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "F11",
|
||||||
|
"x": 13,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "F12",
|
||||||
|
"x": 14,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "PrtSc",
|
||||||
|
"x": 15.25,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Scroll Lock",
|
||||||
|
"x": 16.25,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Pause",
|
||||||
|
"x": 17.25,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "~",
|
||||||
|
"x": 0,
|
||||||
|
"y": 1.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "!",
|
||||||
|
"x": 1,
|
||||||
|
"y": 1.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "@",
|
||||||
|
"x": 2,
|
||||||
|
"y": 1.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "#",
|
||||||
|
"x": 3,
|
||||||
|
"y": 1.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "$",
|
||||||
|
"x": 4,
|
||||||
|
"y": 1.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "%",
|
||||||
|
"x": 5,
|
||||||
|
"y": 1.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "^",
|
||||||
|
"x": 6,
|
||||||
|
"y": 1.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "&",
|
||||||
|
"x": 7,
|
||||||
|
"y": 1.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "*",
|
||||||
|
"x": 8,
|
||||||
|
"y": 1.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "(",
|
||||||
|
"x": 9,
|
||||||
|
"y": 1.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": ")",
|
||||||
|
"x": 10,
|
||||||
|
"y": 1.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "_",
|
||||||
|
"x": 11,
|
||||||
|
"y": 1.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "+",
|
||||||
|
"x": 12,
|
||||||
|
"y": 1.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Backspace",
|
||||||
|
"x": 13,
|
||||||
|
"y": 1.5,
|
||||||
|
"w": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Insert",
|
||||||
|
"x": 15.25,
|
||||||
|
"y": 1.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Home",
|
||||||
|
"x": 16.25,
|
||||||
|
"y": 1.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "PgUp",
|
||||||
|
"x": 17.25,
|
||||||
|
"y": 1.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Tab",
|
||||||
|
"x": 0,
|
||||||
|
"y": 2.5,
|
||||||
|
"w": 1.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Q",
|
||||||
|
"x": 1.5,
|
||||||
|
"y": 2.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "W",
|
||||||
|
"x": 2.5,
|
||||||
|
"y": 2.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "E",
|
||||||
|
"x": 3.5,
|
||||||
|
"y": 2.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "R",
|
||||||
|
"x": 4.5,
|
||||||
|
"y": 2.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "T",
|
||||||
|
"x": 5.5,
|
||||||
|
"y": 2.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Y",
|
||||||
|
"x": 6.5,
|
||||||
|
"y": 2.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "U",
|
||||||
|
"x": 7.5,
|
||||||
|
"y": 2.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "I",
|
||||||
|
"x": 8.5,
|
||||||
|
"y": 2.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "O",
|
||||||
|
"x": 9.5,
|
||||||
|
"y": 2.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "P",
|
||||||
|
"x": 10.5,
|
||||||
|
"y": 2.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "{",
|
||||||
|
"x": 11.5,
|
||||||
|
"y": 2.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "}",
|
||||||
|
"x": 12.5,
|
||||||
|
"y": 2.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Enter",
|
||||||
|
"x": 13.75,
|
||||||
|
"y": 2.5,
|
||||||
|
"w": 1.25,
|
||||||
|
"h": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Delete",
|
||||||
|
"x": 15.25,
|
||||||
|
"y": 2.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "End",
|
||||||
|
"x": 16.25,
|
||||||
|
"y": 2.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "PgDn",
|
||||||
|
"x": 17.25,
|
||||||
|
"y": 2.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Caps Lock",
|
||||||
|
"x": 0,
|
||||||
|
"y": 3.5,
|
||||||
|
"w": 1.75
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "A",
|
||||||
|
"x": 1.75,
|
||||||
|
"y": 3.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "S",
|
||||||
|
"x": 2.75,
|
||||||
|
"y": 3.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "D",
|
||||||
|
"x": 3.75,
|
||||||
|
"y": 3.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "F",
|
||||||
|
"x": 4.75,
|
||||||
|
"y": 3.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "G",
|
||||||
|
"x": 5.75,
|
||||||
|
"y": 3.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "H",
|
||||||
|
"x": 6.75,
|
||||||
|
"y": 3.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "J",
|
||||||
|
"x": 7.75,
|
||||||
|
"y": 3.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "K",
|
||||||
|
"x": 8.75,
|
||||||
|
"y": 3.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "L",
|
||||||
|
"x": 9.75,
|
||||||
|
"y": 3.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": ":",
|
||||||
|
"x": 10.75,
|
||||||
|
"y": 3.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "\"",
|
||||||
|
"x": 11.75,
|
||||||
|
"y": 3.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "#",
|
||||||
|
"x": 12.75,
|
||||||
|
"y": 3.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Shift",
|
||||||
|
"x": 0,
|
||||||
|
"y": 4.5,
|
||||||
|
"w": 1.25
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "\\",
|
||||||
|
"x": 1.25,
|
||||||
|
"y": 4.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Z",
|
||||||
|
"x": 2.25,
|
||||||
|
"y": 4.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "X",
|
||||||
|
"x": 3.25,
|
||||||
|
"y": 4.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "C",
|
||||||
|
"x": 4.25,
|
||||||
|
"y": 4.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "V",
|
||||||
|
"x": 5.25,
|
||||||
|
"y": 4.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "B",
|
||||||
|
"x": 6.25,
|
||||||
|
"y": 4.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "N",
|
||||||
|
"x": 7.25,
|
||||||
|
"y": 4.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "M",
|
||||||
|
"x": 8.25,
|
||||||
|
"y": 4.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "<",
|
||||||
|
"x": 9.25,
|
||||||
|
"y": 4.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": ">",
|
||||||
|
"x": 10.25,
|
||||||
|
"y": 4.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "?",
|
||||||
|
"x": 11.25,
|
||||||
|
"y": 4.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Shift",
|
||||||
|
"x": 12.25,
|
||||||
|
"y": 4.5,
|
||||||
|
"w": 2.75
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "\u2191",
|
||||||
|
"x": 16.25,
|
||||||
|
"y": 4.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Ctrl",
|
||||||
|
"x": 0,
|
||||||
|
"y": 5.5,
|
||||||
|
"w": 1.25
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Win",
|
||||||
|
"x": 1.25,
|
||||||
|
"y": 5.5,
|
||||||
|
"w": 1.25
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Alt",
|
||||||
|
"x": 2.5,
|
||||||
|
"y": 5.5,
|
||||||
|
"w": 1.25
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 3.75,
|
||||||
|
"y": 5.5,
|
||||||
|
"w": 6.25
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Alt",
|
||||||
|
"x": 10,
|
||||||
|
"y": 5.5,
|
||||||
|
"w": 1.25
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Fn",
|
||||||
|
"x": 11.25,
|
||||||
|
"y": 5.5,
|
||||||
|
"w": 1.25
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Menu",
|
||||||
|
"x": 12.5,
|
||||||
|
"y": 5.5,
|
||||||
|
"w": 1.25
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Ctrl",
|
||||||
|
"x": 13.75,
|
||||||
|
"y": 5.5,
|
||||||
|
"w": 1.25
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "\u2190",
|
||||||
|
"x": 15.25,
|
||||||
|
"y": 5.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "\u2193",
|
||||||
|
"x": 16.25,
|
||||||
|
"y": 5.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "\u2192",
|
||||||
|
"x": 17.25,
|
||||||
|
"y": 5.5
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -42,3 +42,21 @@ void on_all_leds(void);
|
|||||||
{ K50, K51, K52, XXX, XXX, XXX, K56, XXX, XXX, XXX, K5A, K5B, K5C, K5D, K5E, K5F }, \
|
{ K50, K51, K52, XXX, XXX, XXX, K56, XXX, XXX, XXX, K5A, K5B, K5C, K5D, K5E, K5F }, \
|
||||||
{ XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, K6F } \
|
{ XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, K6F } \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// This a shortcut to help you visually see your layout.
|
||||||
|
#define LAYOUT_tkl_iso( \
|
||||||
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, \
|
||||||
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, K2E, K2F, K1F, \
|
||||||
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K4E, K3D, K3E, K3F, \
|
||||||
|
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \
|
||||||
|
K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4D, K4F, \
|
||||||
|
K50, K51, K52, K56, K5A, K5B, K5C, K5D, K5E, K5F, K6F \
|
||||||
|
) { \
|
||||||
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \
|
||||||
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, XXX, K1E, K1F }, \
|
||||||
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, XXX, K2E, K2F }, \
|
||||||
|
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F }, \
|
||||||
|
{ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, XXX, K4D, K4E, K4F }, \
|
||||||
|
{ K50, K51, K52, XXX, XXX, XXX, K56, XXX, XXX, XXX, K5A, K5B, K5C, K5D, K5E, K5F }, \
|
||||||
|
{ XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, K6F } \
|
||||||
|
}
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
/* Copyright 2021 kuenhlee and Don Kjer
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
// Layer shorthand
|
||||||
|
enum _layer {
|
||||||
|
_BASE,
|
||||||
|
_FUNC
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/* Keymap _BASE: Base Layer (Default Layer)
|
||||||
|
* ,-----------------------------------------------------------. ,--------------.
|
||||||
|
* |Esc |f1| f2| f3| f4| | f5| f6| f7| f8| | f9|f10|f11|f12| |Prnt|ScLk|Paus|
|
||||||
|
* |-----------------------------------------------------------| |--------------|
|
||||||
|
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0| - | = |Backsp | | Ins|Home|PgUp|
|
||||||
|
* |-----------------------------------------------------------| |--------------|
|
||||||
|
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| | | Del| End|PgDn|
|
||||||
|
* |------------------------------------------------------ Ret | `--------------'
|
||||||
|
* |CAPS | A| S| D| F| G| H| J| K| L| ;| '| #| |
|
||||||
|
* |-----------------------------------------------------------| ,----.
|
||||||
|
* |Shift| \| Z| X| C| V| B| N| M| ,| .| /|Shift | | Up |
|
||||||
|
* |-----------------------------------------------------------| ,-------------.
|
||||||
|
* |Ctrl|Gui |Alt | Space |Alt | Fn |App |Ctrl| |Lft| Dn |Rig |
|
||||||
|
* `-----------------------------------------------------------' `-------------'
|
||||||
|
*/
|
||||||
|
[_BASE] = LAYOUT_tkl_iso( /* Base Layer */
|
||||||
|
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
|
||||||
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
|
||||||
|
KC_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_ENT, KC_DEL, KC_END, KC_PGDN,
|
||||||
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS,
|
||||||
|
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FUNC),KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
|
),
|
||||||
|
/* Keymap _FUNC: Function Layer
|
||||||
|
* ,-----------------------------------------------------------. ,--------------.
|
||||||
|
* | |Play|Stop|Prev|Next| |Mute|Vol+|Vol-| | | | | | | | | | |
|
||||||
|
* |-----------------------------------------------------------| |--------------|
|
||||||
|
* | | | | | | | | | | | | | | | | | | |
|
||||||
|
* |-----------------------------------------------------------| |--------------|
|
||||||
|
* | | | | | | | | | | | | | | | | | | |
|
||||||
|
* |------------------------------------------------------- | `--------------'
|
||||||
|
* | | | | | | | | | | | | | | |
|
||||||
|
* |-----------------------------------------------------------| ,----.
|
||||||
|
* | | | | | | | | | | | | | | | |
|
||||||
|
* |-----------------------------------------------------------| ,-------------.
|
||||||
|
* | | | | | |Func | | | | | | |
|
||||||
|
* `-----------------------------------------------------------' `-------------'
|
||||||
|
*/
|
||||||
|
[_FUNC] = LAYOUT_tkl_iso( /* Function Layer */
|
||||||
|
_______, KC_MPLY, KC_MSTP, KC_MRWD, KC_MFFD, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
# The ISO keymap for Durgod Taurus K320.
|
||||||
|
|
||||||
|
Layer 0 : Standard ISO 88 Keys TKL layout (Windows)
|
||||||
|
|
||||||
|
Layer 1 : Media control and Windows lock key
|
||||||
|
- Reusing Durgod's Original Media Control for Fn + F1 ~ Fn + F7
|
||||||
|
|
||||||
@@ -0,0 +1,71 @@
|
|||||||
|
/* Copyright 2021 kuenhlee and Don Kjer
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
// Layer shorthand
|
||||||
|
enum _layer {
|
||||||
|
_BASE,
|
||||||
|
_FUNC
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/* Keymap _BASE: Base Layer (Default Layer)
|
||||||
|
* ,-----------------------------------------------------------. ,--------------.
|
||||||
|
* |Esc |f1| f2| f3| f4| | f5| f6| f7| f8| | f9|f10|f11|f12| |Prnt|ScLk|Paus|
|
||||||
|
* |-----------------------------------------------------------| |--------------|
|
||||||
|
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0| - | = |Backsp | | Ins|Home|PgUp|
|
||||||
|
* |-----------------------------------------------------------| |--------------|
|
||||||
|
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| | | Del| End|PgDn|
|
||||||
|
* |------------------------------------------------------ Ret | `--------------'
|
||||||
|
* |CAPS | A| S| D| F| G| H| J| K| L| ;| '| #| |
|
||||||
|
* |-----------------------------------------------------------| ,----.
|
||||||
|
* |Shift| \| Z| X| C| V| B| N| M| ,| .| /|Shift | | Up |
|
||||||
|
* |-----------------------------------------------------------| ,-------------.
|
||||||
|
* |Ctrl|Alt |Gui | Space |Alt | Fn |App |Ctrl| |Lft| Dn |Rig |
|
||||||
|
* `-----------------------------------------------------------' `-------------'
|
||||||
|
*/
|
||||||
|
[_BASE] = LAYOUT_tkl_iso( /* Base Layer */
|
||||||
|
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
|
||||||
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
|
||||||
|
KC_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_ENT, KC_DEL, KC_END, KC_PGDN,
|
||||||
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS,
|
||||||
|
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
|
||||||
|
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RALT, MO(_FUNC),KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
|
),
|
||||||
|
/* Keymap _FUNC: Function Layer
|
||||||
|
* ,-----------------------------------------------------------. ,--------------.
|
||||||
|
* | |Play|Stop|Prev|Next| |Mute|Vol+|Vol-| | | | | | | | | | |
|
||||||
|
* |-----------------------------------------------------------| |--------------|
|
||||||
|
* | | | | | | | | | | | | | | | | | | |
|
||||||
|
* |-----------------------------------------------------------| |--------------|
|
||||||
|
* | | | | | | | | | | | | | | | | | | |
|
||||||
|
* |------------------------------------------------------- | `--------------'
|
||||||
|
* | | | | | | | | | | | | | | |
|
||||||
|
* |-----------------------------------------------------------| ,----.
|
||||||
|
* | | | | | | | | | | | | | | | |
|
||||||
|
* |-----------------------------------------------------------| ,-------------.
|
||||||
|
* | | | | | |Func | | | | | | |
|
||||||
|
* `-----------------------------------------------------------' `-------------'
|
||||||
|
*/
|
||||||
|
[_FUNC] = LAYOUT_tkl_iso( /* Function Layer */
|
||||||
|
_______, KC_MPLY, KC_MSTP, KC_MRWD, KC_MFFD, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
)
|
||||||
|
};
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
# The ISO (Mac) keymap for Durgod Taurus K320.
|
||||||
|
|
||||||
|
Layer 0 : Standard ISO 88 Keys TKL layout (Mac)
|
||||||
|
|
||||||
|
Layer 1 : Media control
|
||||||
|
- Reusing Durgod's Original Media Control for Fn + F1 ~ Fn + F7
|
||||||
@@ -24,4 +24,4 @@ RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
|||||||
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||||
AUDIO_ENABLE = no # Audio output
|
AUDIO_ENABLE = no # Audio output
|
||||||
|
|
||||||
LAYOUTS = tkl_ansi
|
LAYOUTS = tkl_ansi tkl_iso
|
||||||
@@ -0,0 +1,114 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 k.bigwheel
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "config_common.h"
|
||||||
|
|
||||||
|
/* USB Device descriptor parameter */
|
||||||
|
#define VENDOR_ID 0xFEED
|
||||||
|
#define PRODUCT_ID 0xEE11
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER k.bigwheel
|
||||||
|
#define PRODUCT earth_rover
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 4
|
||||||
|
#define MATRIX_COLS 4
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Keyboard Matrix Assignments
|
||||||
|
*
|
||||||
|
* Change this to how you wired your keyboard
|
||||||
|
* COLS: AVR pins used for columns, left to right
|
||||||
|
* ROWS: AVR pins used for rows, top to bottom
|
||||||
|
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
|
||||||
|
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#define MATRIX_ROW_PINS { D4, C6, D7, E6 }
|
||||||
|
#define MATRIX_COL_PINS { F4, F5, F6, F7 }
|
||||||
|
#define UNUSED_PINS
|
||||||
|
|
||||||
|
/* COL2ROW, ROW2COL */
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
|
||||||
|
*/
|
||||||
|
#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
|
||||||
|
|
||||||
|
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||||
|
#define DEBOUNCE 5
|
||||||
|
|
||||||
|
/* define if matrix has ghost (lacks anti-ghosting diodes) */
|
||||||
|
//#define MATRIX_HAS_GHOST
|
||||||
|
|
||||||
|
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||||
|
#define LOCKING_SUPPORT_ENABLE
|
||||||
|
/* Locking resynchronize hack */
|
||||||
|
#define LOCKING_RESYNC_ENABLE
|
||||||
|
|
||||||
|
/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
|
||||||
|
* This is useful for the Windows task manager shortcut (ctrl+shift+esc).
|
||||||
|
*/
|
||||||
|
//#define GRAVE_ESC_CTRL_OVERRIDE
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Force NKRO
|
||||||
|
*
|
||||||
|
* Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
|
||||||
|
* state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
|
||||||
|
* makefile for this to work.)
|
||||||
|
*
|
||||||
|
* If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
|
||||||
|
* until the next keyboard reset.
|
||||||
|
*
|
||||||
|
* NKRO may prevent your keystrokes from being detected in the BIOS, but it is
|
||||||
|
* fully operational during normal computer usage.
|
||||||
|
*
|
||||||
|
* For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
|
||||||
|
* or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
|
||||||
|
* bootmagic, NKRO mode will always be enabled until it is toggled again during a
|
||||||
|
* power-up.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
//#define FORCE_NKRO
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Feature disable options
|
||||||
|
* These options are also useful to firmware size reduction.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* disable debug print */
|
||||||
|
//#define NO_DEBUG
|
||||||
|
|
||||||
|
/* disable print */
|
||||||
|
//#define NO_PRINT
|
||||||
|
|
||||||
|
/* disable action features */
|
||||||
|
//#define NO_ACTION_LAYER
|
||||||
|
//#define NO_ACTION_TAPPING
|
||||||
|
//#define NO_ACTION_ONESHOT
|
||||||
|
|
||||||
|
/* disable these deprecated features by default */
|
||||||
|
#define NO_ACTION_MACRO
|
||||||
|
#define NO_ACTION_FUNCTION
|
||||||
|
|
||||||
|
/* Bootmagic Lite key configuration */
|
||||||
|
//#define BOOTMAGIC_LITE_ROW 0
|
||||||
|
//#define BOOTMAGIC_LITE_COLUMN 0
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
/* Copyright 2020 k.bigwheel
|
||||||
|
*
|
||||||
|
* 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 "earth_rover.h"
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
/* Copyright 2020 k.bigwheel
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
/* This is a shortcut to help you visually see your layout.
|
||||||
|
*
|
||||||
|
* The first section contains all of the arguments representing the physical
|
||||||
|
* layout of the board and position of the keys.
|
||||||
|
*
|
||||||
|
* The second converts the arguments into a two-dimensional array which
|
||||||
|
* represents the switch matrix.
|
||||||
|
*/
|
||||||
|
// clang-format off
|
||||||
|
#define LAYOUT( \
|
||||||
|
k00, k01, \
|
||||||
|
k10, k12, k13, k14, \
|
||||||
|
k20, k22, k23, k24, \
|
||||||
|
k30, k32, k33, k34 \
|
||||||
|
) { \
|
||||||
|
{ KC_NO, k00, k01, KC_NO }, \
|
||||||
|
{ k10, k12, k13, k14 }, \
|
||||||
|
{ k20, k22, k23, k24 }, \
|
||||||
|
{ k30, k32, k33, k34 }, \
|
||||||
|
}
|
||||||
|
// clang-format on
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "earth_rover",
|
||||||
|
"url": "https://github.com/bigwheel/earth_rover",
|
||||||
|
"maintainer": "k.bigwheel",
|
||||||
|
"width": 4,
|
||||||
|
"height": 4,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT": {
|
||||||
|
"layout": [
|
||||||
|
{"label": "k10", "x": 1.25, "y": 0},
|
||||||
|
{"label": "k20", "x": 2.25, "y": 0},
|
||||||
|
|
||||||
|
{"label": "k01", "x": 0, "y": 1.25},
|
||||||
|
{"label": "k11", "x": 1.25, "y": 1.25},
|
||||||
|
{"label": "k21", "x": 2.25, "y": 1.25},
|
||||||
|
{"label": "k31", "x": 3.5, "y": 1.25},
|
||||||
|
|
||||||
|
{"label": "k02", "x": 0, "y": 2.25},
|
||||||
|
{"label": "k12", "x": 1.25, "y": 2.25},
|
||||||
|
{"label": "k22", "x": 2.25, "y": 2.25},
|
||||||
|
{"label": "k32", "x": 3.5, "y": 2.25},
|
||||||
|
|
||||||
|
{"label": "k03", "x": 0, "y": 3.25},
|
||||||
|
{"label": "k13", "x": 1.25, "y": 3.25},
|
||||||
|
{"label": "k23", "x": 2.25, "y": 3.25},
|
||||||
|
{"label": "k33", "x": 3.5, "y": 3.25}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
/* Copyright 2020 k.bigwheel
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
// Defines names for use in layer keycodes and the keymap
|
||||||
|
enum layer_names { _BASE };
|
||||||
|
|
||||||
|
// clang-format off
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/* Base */
|
||||||
|
[_BASE] = LAYOUT(
|
||||||
|
KC_A, KC_B,
|
||||||
|
KC_C, KC_D, KC_E, KC_F,
|
||||||
|
KC_G, KC_H, KC_I, KC_J,
|
||||||
|
KC_K, KC_L, KC_M, KC_N
|
||||||
|
)
|
||||||
|
};
|
||||||
|
// clang-format on
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
# The default keymap for earth_rover
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
# earth_rover
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Mechanical warm, or just cubic macro pad.
|
||||||
|
|
||||||
|
* Keyboard Maintainer: [k.bigwheel](https://github.com/bigwheel)
|
||||||
|
* Build Guide: [bigwheel/earth\_rover](https://github.com/bigwheel/earth_rover)
|
||||||
|
* Hardware Supported: [無限の可能性 \| MxLEDBitPCB](https://swanmatch.github.io/MxLEDBitPCB/), Pro Micro
|
||||||
|
* Hardware Availability: [魔界鍵盤製作所 \- BOOTH](https://swanmatch.booth.pm/), [Pro Micro (コンスルー付き) \| 遊舎工房](https://yushakobo.jp/shop/promicro-spring-pinheader/)
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make earth_rover:default
|
||||||
|
|
||||||
|
Reset Pro Micro by reset button on ProMicroSocket (Red LED must light).
|
||||||
|
|
||||||
|
Flashing example for this keyboard:
|
||||||
|
|
||||||
|
make earth_rover: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).
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
# MCU name
|
||||||
|
MCU = atmega32u4
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
BOOTLOADER = caterina
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
|
||||||
|
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||||
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
|
CONSOLE_ENABLE = no # Console for debug
|
||||||
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
|
NKRO_ENABLE = no # USB Nkey Rollover
|
||||||
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
|
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||||
|
AUDIO_ENABLE = no # Audio output
|
||||||
@@ -0,0 +1,84 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2021 Salicylic_Acid
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "config_common.h"
|
||||||
|
|
||||||
|
/* USB Device descriptor parameter */
|
||||||
|
#define VENDOR_ID 0x04D8
|
||||||
|
#define PRODUCT_ID 0xEA54
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER Salicylic_Acid
|
||||||
|
#define PRODUCT ergoarrows
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 12
|
||||||
|
#define MATRIX_COLS 7
|
||||||
|
|
||||||
|
// wiring of each half
|
||||||
|
#define MATRIX_ROW_PINS { D4, C6, D7, E6, B4, B5 }
|
||||||
|
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2 }
|
||||||
|
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
/* Set 0 if debouncing isn't needed */
|
||||||
|
#define DEBOUNCE 5
|
||||||
|
|
||||||
|
/* serial.c configuration for split keyboard */
|
||||||
|
#define SOFT_SERIAL_PIN D0
|
||||||
|
#define SPLIT_HAND_PIN B6
|
||||||
|
|
||||||
|
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||||
|
#define LOCKING_SUPPORT_ENABLE
|
||||||
|
/* Locking resynchronize hack */
|
||||||
|
#define LOCKING_RESYNC_ENABLE
|
||||||
|
|
||||||
|
/* ws2812 RGB LED */
|
||||||
|
#define RGB_DI_PIN D3
|
||||||
|
|
||||||
|
#ifndef RGBLED_NUM
|
||||||
|
#define RGBLED_NUM 86
|
||||||
|
#define RGBLIGHT_SPLIT
|
||||||
|
#define RGBLED_SPLIT { 43, 43 }
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define RGBLIGHT_ANIMATIONS
|
||||||
|
|
||||||
|
#ifndef IOS_DEVICE_ENABLE
|
||||||
|
#define RGBLIGHT_LIMIT_VAL 90
|
||||||
|
#define RGBLIGHT_VAL_STEP 17
|
||||||
|
#else
|
||||||
|
#define RGBLIGHT_LIMIT_VAL 30
|
||||||
|
#define RGBLIGHT_VAL_STEP 4
|
||||||
|
#endif
|
||||||
|
#define RGBLIGHT_HUE_STEP 10
|
||||||
|
#define RGBLIGHT_SAT_STEP 17
|
||||||
|
|
||||||
|
#if defined(RGBLIGHT_ENABLE) && !defined(IOS_DEVICE_ENABLE)
|
||||||
|
// USB_MAX_POWER_CONSUMPTION value for naked48 keyboard
|
||||||
|
// 120 RGBoff, OLEDoff
|
||||||
|
// 120 OLED
|
||||||
|
// 330 RGB 6
|
||||||
|
// 300 RGB 32
|
||||||
|
// 310 OLED & RGB 32
|
||||||
|
#define USB_MAX_POWER_CONSUMPTION 400
|
||||||
|
#else
|
||||||
|
// fix iPhone and iPad power adapter issue
|
||||||
|
// iOS device need lessthan 100
|
||||||
|
#define USB_MAX_POWER_CONSUMPTION 100
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2021 Salicylic_Acid
|
||||||
|
|
||||||
|
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 "ergoarrows.h"
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2021 Salicylic_Acid
|
||||||
|
|
||||||
|
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"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ,------------------------------------------ ------------------------------------------.
|
||||||
|
* | L00 | L01 | L02 | L03 | L04 | L05 | L06 | | R06 | R05 | R04 | R03 | R02 | R01 | R00 |
|
||||||
|
* |------------------------------------------ ------------------------------------------+
|
||||||
|
* | L10 | L11 | L12 | L13 | L14 | L15 | L16 | | R16 | R15 | R14 | R13 | R12 | R11 | R10 |
|
||||||
|
* |------------------------------------------ ------------------------------------------+
|
||||||
|
* | L20 | L21 | L22 | L23 | L24 | L25 | L26 | | R26 | R25 | R24 | R23 | R22 | R21 | R20 |
|
||||||
|
* |------------------------------------------ ------------------------------------------+
|
||||||
|
* | L30 | L31 | L32 | L33 | L34 | L35 | L36 | | R36 | R35 | R34 | R33 | R32 | R31 | R30 |
|
||||||
|
* |------------------------------------------ ------------------------------------------+
|
||||||
|
* | L40 | L41 | L42 | L43 | L44 | L45 | L46 | | R46 | R45 | R44 | R43 | R42 | R41 | R40 |
|
||||||
|
* |------------------------------------------ ------------------------------------------+
|
||||||
|
* | L51 | L52 | L53 | | R53 | R52 | R51 |
|
||||||
|
* ------------------- ------------------'
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define LAYOUT( \
|
||||||
|
L00, L01, L02, L03, L04, L05, L06, R06, R05, R04, R03, R02, R01, R00, \
|
||||||
|
L10, L11, L12, L13, L14, L15, L16, R16, R15, R14, R13, R12, R11, R10, \
|
||||||
|
L20, L21, L22, L23, L24, L25, L26, R26, R25, R24, R23, R22, R21, R20, \
|
||||||
|
L30, L31, L32, L33, L34, L35, L36, R36, R35, R34, R33, R32, R31, R30, \
|
||||||
|
L40, L41, L42, L43, L44, L45, L46, R46, R45, R44, R43, R42, R41, R40, \
|
||||||
|
L51, L52, L53, R53, R52, R51 \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{ L00, L01, L02, L03, L04, L05, L06 }, \
|
||||||
|
{ L10, L11, L12, L13, L14, L15, L16 }, \
|
||||||
|
{ L20, L21, L22, L23, L24, L25, L26 }, \
|
||||||
|
{ L30, L31, L32, L33, L34, L35, L36 }, \
|
||||||
|
{ L40, L41, L42, L43, L44, L45, L46 }, \
|
||||||
|
{KC_NO, L51, L52, L53, KC_NO, KC_NO, KC_NO }, \
|
||||||
|
{ R00, R01, R02, R03, R04, R05, R06 }, \
|
||||||
|
{ R10, R11, R12, R13, R14, R15, R16 }, \
|
||||||
|
{ R20, R21, R22, R23, R24, R25, R26 }, \
|
||||||
|
{ R30, R31, R32, R33, R34, R35, R36 }, \
|
||||||
|
{ R40, R41, R42, R43, R44, R45, R46 }, \
|
||||||
|
{KC_NO, R51, R52, R53, KC_NO, KC_NO, KC_NO } \
|
||||||
|
}
|
||||||
@@ -0,0 +1,87 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "ergoarrows",
|
||||||
|
"url": "https://salicylic-acid3.hatenablog.com/",
|
||||||
|
"maintainer": "Salicylic_acid3",
|
||||||
|
"width": 16.25,
|
||||||
|
"height": 6.51,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT": {
|
||||||
|
"layout": [
|
||||||
|
{"label":"#", "x":3.5, "y":0},
|
||||||
|
{"label":"*", "x":12.25, "y":0},
|
||||||
|
{"label":"@", "x":2.5, "y":0.125},
|
||||||
|
{"label":"$", "x":4.5, "y":0.125},
|
||||||
|
{"label":"&", "x":11.25, "y":0.13},
|
||||||
|
{"label":"(", "x":13.25, "y":0.13},
|
||||||
|
{"label":"%", "x":5.5, "y":0.25},
|
||||||
|
{"label":"^", "x":10.25, "y":0.25},
|
||||||
|
{"label":"!", "x":1.5, "y":0.375},
|
||||||
|
{"label":"Esc", "x":0.5, "y":0.38},
|
||||||
|
{"label":")", "x":14.25, "y":0.38},
|
||||||
|
{"label":"PrtScr", "x":15.25, "y":0.38},
|
||||||
|
{"x":6.5, "y":0.5}, {"x":9.25, "y":0.5},
|
||||||
|
{"label":"E", "x":3.5, "y":1},
|
||||||
|
{"label":"I", "x":12.25, "y":1},
|
||||||
|
{"label":"W", "x":2.5, "y":1.125},
|
||||||
|
{"label":"R", "x":4.5, "y":1.125},
|
||||||
|
{"label":"U", "x":11.25, "y":1.13},
|
||||||
|
{"label":"O", "x":13.25, "y":1.13},
|
||||||
|
{"label":"T", "x":5.5, "y":1.25},
|
||||||
|
{"label":"Y", "x":10.25, "y":1.25},
|
||||||
|
{"label":"Q", "x":1.5, "y":1.375},
|
||||||
|
{"label":"Tab", "x":0.5, "y":1.38},
|
||||||
|
{"label":"P", "x":14.25, "y":1.38},
|
||||||
|
{"label":"\u2019", "x":15.25, "y":1.38},
|
||||||
|
{"label":"[", "x":6.5, "y":1.5},
|
||||||
|
{"label":"]", "x":9.25, "y":1.5},
|
||||||
|
{"label":"D", "x":3.5, "y":2},
|
||||||
|
{"label":"K", "x":12.25, "y":2},
|
||||||
|
{"label":"S", "x":2.5, "y":2.125},
|
||||||
|
{"label":"F", "x":4.5, "y":2.125},
|
||||||
|
{"label":"J", "x":11.25, "y":2.13},
|
||||||
|
{"label":"L", "x":13.25, "y":2.13},
|
||||||
|
{"label":"G", "x":5.5, "y":2.25},
|
||||||
|
{"label":"H", "x":10.25, "y":2.25},
|
||||||
|
{"label":"A", "x":1.5, "y":2.375},
|
||||||
|
{"label":"Caps", "x":0.5, "y":2.38},
|
||||||
|
{"label":":", "x":14.25, "y":2.38},
|
||||||
|
{"label":"Ent", "x":15.25, "y":2.38},
|
||||||
|
{"label":"(", "x":6.5, "y":2.5},
|
||||||
|
{"label":")", "x":9.25, "y":2.5},
|
||||||
|
{"label":"C", "x":3.5, "y":3},
|
||||||
|
{"label":"<", "x":12.25, "y":3},
|
||||||
|
{"label":"X", "x":2.5, "y":3.125},
|
||||||
|
{"label":"V", "x":4.5, "y":3.125},
|
||||||
|
{"label":"M", "x":11.25, "y":3.13},
|
||||||
|
{"label":">", "x":13.25, "y":3.13},
|
||||||
|
{"label":"B", "x":5.5, "y":3.25},
|
||||||
|
{"label":"N", "x":10.25, "y":3.25},
|
||||||
|
{"label":"Z", "x":1.5, "y":3.375},
|
||||||
|
{"label":"Shift", "x":0.5, "y":3.38},
|
||||||
|
{"label":"?", "x":14.25, "y":3.38},
|
||||||
|
{"label":"_", "x":15.25, "y":3.38},
|
||||||
|
{"x":6.5, "y":3.5},
|
||||||
|
{"x":9.25, "y":3.5},
|
||||||
|
{"label":"Ctrl", "x":0.5, "y":4.375},
|
||||||
|
{"label":"Win", "x":1.5, "y":4.38},
|
||||||
|
{"label":"\u7121\u5909", "x":3.75, "y":4.38},
|
||||||
|
{"label":"Ent", "x":4.75, "y":4.38},
|
||||||
|
{"label":"Spc", "x":11, "y":4.38},
|
||||||
|
{"label":"\u5909\u63db", "x":12, "y":4.38},
|
||||||
|
{"label":"Alt", "x":14.25, "y":4.38},
|
||||||
|
{"label":"App", "x":15.25, "y":4.38},
|
||||||
|
{"label":"\u2191", "x":2.625, "y":4.505},
|
||||||
|
{"label":"\u2191", "x":13.13, "y":4.51},
|
||||||
|
{"label":"BS", "x":5.85, "y":4.6},
|
||||||
|
{"label":"Del", "x":9.9, "y":4.6},
|
||||||
|
{"label":"Del", "x":6.9, "y":5.15},
|
||||||
|
{"label":"BS", "x":8.85, "y":5.15},
|
||||||
|
{"label":"\u2190", "x":1.625, "y":5.505},
|
||||||
|
{"label":"\u2193", "x":2.625, "y":5.505},
|
||||||
|
{"label":"\u2192", "x":3.625, "y":5.505},
|
||||||
|
{"label":"\u2190", "x":12.13, "y":5.51},
|
||||||
|
{"label":"\u2193", "x":13.13, "y":5.51},
|
||||||
|
{"label":"\u2192", "x":14.13, "y":5.51}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+8
-7
@@ -1,4 +1,4 @@
|
|||||||
/* Copyright 2020 Jay Greco
|
/* Copyright 2021 Salicylic_acid3
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
@@ -13,9 +13,10 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
// Custom config starts after VIA's EEPROM usage,
|
|
||||||
// dynamic keymaps start after this.
|
#pragma once
|
||||||
// Custom config Usage:
|
|
||||||
// 1 for enabled encoder modes (1 byte)
|
/* Select hand configuration */
|
||||||
// 6 for 3x custom encoder settings, left, right, and press (18 bytes)
|
|
||||||
#define VIA_EEPROM_CUSTOM_CONFIG_SIZE 19
|
#define TAPPING_FORCE_HOLD
|
||||||
|
#define TAPPING_TERM 180
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2021 Salicylic_Acid
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||||
|
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||||
|
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||||
|
// entirely and just use numbers.
|
||||||
|
enum layer_number {
|
||||||
|
_QWERTY = 0,
|
||||||
|
_FN,
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[_QWERTY] = LAYOUT(
|
||||||
|
//,--------------------------------------------------------------| |--------------------------------------------------------------.
|
||||||
|
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
|
||||||
|
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
|
||||||
|
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
|
||||||
|
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
||||||
|
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
KC_LCTRL, KC_LGUI, KC_UP, KC_LALT, KC_SPC, KC_BSPC, KC_DEL, KC_BSPC, KC_DEL, KC_SPC, KC_RALT, KC_UP, KC_APP, MO(_FN),
|
||||||
|
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
KC_LEFT, KC_DOWN, KC_RGHT, KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
|
//|--------------------------------------------------------------| |--------------------------------------------------------------'
|
||||||
|
),
|
||||||
|
|
||||||
|
[_FN] = LAYOUT(
|
||||||
|
//,--------------------------------------------------------------| |--------------------------------------------------------------.
|
||||||
|
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,
|
||||||
|
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_LBRC, KC_RBRC,
|
||||||
|
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_QUOT, _______,
|
||||||
|
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
_______, RGB_TOG, RGB_MOD, _______, RGB_SAD, RGB_SAI, _______, _______, _______, _______, KC_END, KC_PGDN, _______, _______,
|
||||||
|
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
_______, RGB_VAD, KC_VOLU, RGB_VAI, RGB_HUD, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, MO(_FN),
|
||||||
|
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
KC_MPRV, KC_VOLD, KC_MNXT, _______, _______, _______
|
||||||
|
//|--------------------------------------------------------------| |--------------------------------------------------------------'
|
||||||
|
)
|
||||||
|
};
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
/* Copyright 2021 Salicylic_acid3
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
/* Select hand configuration */
|
||||||
|
|
||||||
|
#define TAPPING_FORCE_HOLD
|
||||||
|
#define TAPPING_TERM 180
|
||||||
@@ -0,0 +1,101 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2021 Salicylic_Acid
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
#include "keymap_jp.h"
|
||||||
|
|
||||||
|
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||||
|
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||||
|
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||||
|
// entirely and just use numbers.
|
||||||
|
enum layer_number {
|
||||||
|
_QWERTY = 0,
|
||||||
|
_LOWER,
|
||||||
|
_RAISE,
|
||||||
|
_ADJUST,
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[_QWERTY] = LAYOUT(
|
||||||
|
//,--------------------------------------------------------------| |--------------------------------------------------------------.
|
||||||
|
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
|
||||||
|
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
|
||||||
|
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
KC_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_G, KC_H, KC_J, KC_K, KC_L, JP_MINS, KC_ENT,
|
||||||
|
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, JP_SLSH, JP_BSLS,
|
||||||
|
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
LALT_T(KC_ZKHK),KC_LGUI, KC_UP, KC_MHEN,LT(_LOWER,KC_ENT),KC_BSPC,KC_DEL,KC_BSPC,KC_DEL,LT(_RAISE,KC_SPC),KC_HENK,KC_UP,KC_RSFT, KC_APP,
|
||||||
|
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
KC_LEFT, KC_DOWN, KC_RGHT, KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
|
//|--------------------------------------------------------------| |--------------------------------------------------------------'
|
||||||
|
),
|
||||||
|
|
||||||
|
[_LOWER] = LAYOUT(
|
||||||
|
//,--------------------------------------------------------------| |--------------------------------------------------------------.
|
||||||
|
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,
|
||||||
|
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
JP_DQUO, JP_EXLM, JP_QUES, JP_LBRC, JP_RBRC, JP_TILD, _______, _______, KC_P6, KC_P7, KC_P8, KC_P9, JP_ASTR, JP_SLSH,
|
||||||
|
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
JP_QUOT, JP_HASH, JP_DQT, JP_LPRN, JP_RPRN, JP_AT, _______, _______, XXXXXXX, KC_P4, KC_P5, KC_P6, JP_MINS, JP_EQL,
|
||||||
|
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
JP_CIRC, JP_PERC, JP_AMPR, JP_SCLN, JP_COLN, JP_PIPE, _______, _______, KC_P0, KC_P1, KC_P2, KC_P3, JP_PLUS, _______,
|
||||||
|
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
_______, _______, _______, _______,MO(_LOWER),_______,_______, _______, _______,MO(_RAISE),JP_DOT, _______, _______, _______,
|
||||||
|
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
_______, _______, _______, _______, _______, _______
|
||||||
|
//|--------------------------------------------------------------| |--------------------------------------------------------------'
|
||||||
|
),
|
||||||
|
|
||||||
|
[_RAISE] = LAYOUT(
|
||||||
|
//,--------------------------------------------------------------| |--------------------------------------------------------------.
|
||||||
|
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,
|
||||||
|
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, XXXXXXX, XXXXXXX, XXXXXXX, KC_UP, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
LCTL_T(KC_F11),XXXXXXX, KC_F2, KC_F3, KC_F4, KC_F5, _______, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN,KC_RIGHT, XXXXXXX, XXXXXXX,
|
||||||
|
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
SFT_T(KC_F12), KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
_______, _______, KC_VOLU, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
KC_MPRV, KC_VOLD, KC_MNXT, _______, _______, _______
|
||||||
|
//|--------------------------------------------------------------| |--------------------------------------------------------------'
|
||||||
|
),
|
||||||
|
|
||||||
|
[_ADJUST] = LAYOUT(
|
||||||
|
//,--------------------------------------------------------------| |--------------------------------------------------------------.
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, RGB_MOD, XXXXXXX,LCA(KC_DEL),LALT(KC_PSCR),KC_PSCR,
|
||||||
|
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI,
|
||||||
|
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, RESET, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
|
||||||
|
//|--------------------------------------------------------------| |--------------------------------------------------------------'
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
layer_state_t layer_state_set_user(layer_state_t state) {
|
||||||
|
state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
|
||||||
|
return state;
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
/* Copyright 2021 Salicylic_acid3
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
/* Select hand configuration */
|
||||||
|
|
||||||
|
#define TAPPING_FORCE_HOLD
|
||||||
|
#define TAPPING_TERM 180
|
||||||
@@ -0,0 +1,88 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2021 Salicylic_Acid
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||||
|
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||||
|
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||||
|
// entirely and just use numbers.
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[0] = LAYOUT(
|
||||||
|
//,--------------------------------------------------------------| |--------------------------------------------------------------.
|
||||||
|
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
|
||||||
|
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
|
||||||
|
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
|
||||||
|
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
||||||
|
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
KC_LCTRL, KC_LGUI, KC_UP, KC_LALT, KC_SPC, KC_BSPC, KC_DEL, KC_BSPC, KC_DEL, KC_SPC, KC_RALT, KC_UP, KC_APP, MO(1),
|
||||||
|
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
KC_LEFT, KC_DOWN, KC_RGHT, KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
|
//|--------------------------------------------------------------| |--------------------------------------------------------------'
|
||||||
|
),
|
||||||
|
|
||||||
|
[1] = LAYOUT(
|
||||||
|
//,--------------------------------------------------------------| |--------------------------------------------------------------.
|
||||||
|
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,
|
||||||
|
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_LBRC, KC_RBRC,
|
||||||
|
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_QUOT, _______,
|
||||||
|
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
_______, RGB_TOG, RGB_MOD, _______, RGB_SAD, RGB_SAI, _______, _______, _______, _______, KC_END, KC_PGDN, _______, _______,
|
||||||
|
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
_______, RGB_VAD, KC_VOLU, RGB_VAI, RGB_HUD, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
KC_MPRV, KC_VOLD, KC_MNXT, _______, _______, _______
|
||||||
|
//|--------------------------------------------------------------| |--------------------------------------------------------------'
|
||||||
|
),
|
||||||
|
|
||||||
|
[2] = LAYOUT(
|
||||||
|
//,--------------------------------------------------------------| |--------------------------------------------------------------.
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
|
||||||
|
//|--------------------------------------------------------------| |--------------------------------------------------------------'
|
||||||
|
),
|
||||||
|
|
||||||
|
[2] = LAYOUT(
|
||||||
|
//,--------------------------------------------------------------| |--------------------------------------------------------------.
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
|
||||||
|
//|--------------------------------------------------------------| |--------------------------------------------------------------'
|
||||||
|
)
|
||||||
|
};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
VIA_ENABLE = yes
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
# ergoarrows
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
This is 76 keys Custom keyboard.
|
||||||
|
|
||||||
|
* Keyboard Maintainer: [Salicylic_acid3](https://github.com/Salicylic-acid3)
|
||||||
|
* Hardware Supported: nknl7 PCB, Pro Micro
|
||||||
|
* Hardware Availability: [PCB & Case Data](https://github.com/Salicylic-acid3/PCB_Data), [Booth Shop](https://salicylic-acid3.booth.pm/items/2681816)
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make ergoarrows: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).
|
||||||
|
|
||||||
|
[Build guide](https://salicylic-acid3.hatenablog.com/entry/ergo-arrows-build-guide)
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
# MCU name
|
||||||
|
MCU = atmega32u4
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
BOOTLOADER = caterina
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
|
||||||
|
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||||
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
|
CONSOLE_ENABLE = no # Console for debug
|
||||||
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
|
NKRO_ENABLE = no # USB Nkey Rollover
|
||||||
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
|
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||||
|
AUDIO_ENABLE = no # Audio output
|
||||||
|
|
||||||
|
SPLIT_KEYBOARD = yes
|
||||||
@@ -53,7 +53,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
|
|
||||||
#define RGB_DI_PIN B15
|
#define RGB_DI_PIN B15
|
||||||
#define RGBLED_NUM 16
|
#define RGBLED_NUM 16
|
||||||
#define RGBLIGT_LIMIT_VAL 200
|
#define RGBLIGHT_LIMIT_VAL 200
|
||||||
#define RGBLIGHT_SLEEP
|
#define RGBLIGHT_SLEEP
|
||||||
#define RGBLIGHT_ANIMATIONS
|
#define RGBLIGHT_ANIMATIONS
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
/* Copyright 2020 Weirdo
|
||||||
|
*
|
||||||
|
* 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 3 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/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Need to override the SysTick timer to use TIM3 -- this is a 16-bit timer on F303
|
||||||
|
// so we need to change resolution and frequency to match.
|
||||||
|
#define CH_CFG_ST_RESOLUTION 16
|
||||||
|
#define CH_CFG_ST_FREQUENCY 10000
|
||||||
|
#include_next "chconf.h"
|
||||||
@@ -0,0 +1,52 @@
|
|||||||
|
/* Copyright 2020 Weirdo
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
#pragma once
|
||||||
|
#include "config_common.h"
|
||||||
|
|
||||||
|
/* USB Device descriptor parameter */
|
||||||
|
#define VENDOR_ID 0x7764
|
||||||
|
#define PRODUCT_ID 0x676D
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER Weirdo
|
||||||
|
#define PRODUCT Geminate60
|
||||||
|
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 5
|
||||||
|
#define MATRIX_COLS 15
|
||||||
|
|
||||||
|
#define MATRIX_ROW_PINS { A9, A10, B10, B11, B15}
|
||||||
|
#define MATRIX_COL_PINS { A8, B14, B13, B12, B1, B0, A7 , A1 , A15, B3, B4, B5, B6, B7, B8}
|
||||||
|
#define DIODE_DIRECTION ROW2COL
|
||||||
|
#define DEBOUNCE 5
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define RGB_DI_PIN A6
|
||||||
|
#define RGBLED_NUM 1
|
||||||
|
//#define RGBLIGHT_DISABLE_KEYCODES
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||||
|
#define LOCKING_SUPPORT_ENABLE
|
||||||
|
|
||||||
|
/* Locking resynchronize hack */
|
||||||
|
#define LOCKING_RESYNC_ENABLE
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
/* Copyright 2020 Weirdo
|
||||||
|
*
|
||||||
|
* 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 "geminate60.h"
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 Weirdo
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
#define LAYOUT( \
|
||||||
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K010, K011, K012, K013, K014, \
|
||||||
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112, K113, \
|
||||||
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K210, K211, K212, K213, \
|
||||||
|
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K310, K311, K312, K313, \
|
||||||
|
K40, K41, K42, K46, K410, K411, K412, K413 ) \
|
||||||
|
{ \
|
||||||
|
{K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K010, K011, K012, K013, K014}, \
|
||||||
|
{K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112, K113 }, \
|
||||||
|
{K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K210, K211, K212, K213 }, \
|
||||||
|
{K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K310, K311, K312, K313 }, \
|
||||||
|
{K40, K41, K42, K46, K410, K411, K412, K413 } \
|
||||||
|
}
|
||||||
@@ -0,0 +1,524 @@
|
|||||||
|
/*
|
||||||
|
ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file templates/halconf.h
|
||||||
|
* @brief HAL configuration header.
|
||||||
|
* @details HAL configuration file, this file allows to enable or disable the
|
||||||
|
* various device drivers from your application. You may also use
|
||||||
|
* this file in order to override the device drivers default settings.
|
||||||
|
*
|
||||||
|
* @addtogroup HAL_CONF
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef HALCONF_H
|
||||||
|
# define HALCONF_H
|
||||||
|
|
||||||
|
# define _CHIBIOS_HAL_CONF_
|
||||||
|
# define _CHIBIOS_HAL_CONF_VER_7_0_
|
||||||
|
|
||||||
|
# include "mcuconf.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the PAL subsystem.
|
||||||
|
*/
|
||||||
|
# if !defined(HAL_USE_PAL) || defined(__DOXYGEN__)
|
||||||
|
# define HAL_USE_PAL TRUE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the ADC subsystem.
|
||||||
|
*/
|
||||||
|
# if !defined(HAL_USE_ADC) || defined(__DOXYGEN__)
|
||||||
|
# define HAL_USE_ADC FALSE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the CAN subsystem.
|
||||||
|
*/
|
||||||
|
# if !defined(HAL_USE_CAN) || defined(__DOXYGEN__)
|
||||||
|
# define HAL_USE_CAN FALSE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the cryptographic subsystem.
|
||||||
|
*/
|
||||||
|
# if !defined(HAL_USE_CRY) || defined(__DOXYGEN__)
|
||||||
|
# define HAL_USE_CRY FALSE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the DAC subsystem.
|
||||||
|
*/
|
||||||
|
# if !defined(HAL_USE_DAC) || defined(__DOXYGEN__)
|
||||||
|
# define HAL_USE_DAC TRUE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the GPT subsystem.
|
||||||
|
*/
|
||||||
|
# if !defined(HAL_USE_GPT) || defined(__DOXYGEN__)
|
||||||
|
# define HAL_USE_GPT TRUE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the I2C subsystem.
|
||||||
|
*/
|
||||||
|
# if !defined(HAL_USE_I2C) || defined(__DOXYGEN__)
|
||||||
|
# define HAL_USE_I2C TRUE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the I2S subsystem.
|
||||||
|
*/
|
||||||
|
# if !defined(HAL_USE_I2S) || defined(__DOXYGEN__)
|
||||||
|
# define HAL_USE_I2S FALSE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the ICU subsystem.
|
||||||
|
*/
|
||||||
|
# if !defined(HAL_USE_ICU) || defined(__DOXYGEN__)
|
||||||
|
# define HAL_USE_ICU FALSE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the MAC subsystem.
|
||||||
|
*/
|
||||||
|
# if !defined(HAL_USE_MAC) || defined(__DOXYGEN__)
|
||||||
|
# define HAL_USE_MAC FALSE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the MMC_SPI subsystem.
|
||||||
|
*/
|
||||||
|
# if !defined(HAL_USE_MMC_SPI) || defined(__DOXYGEN__)
|
||||||
|
# define HAL_USE_MMC_SPI FALSE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the PWM subsystem.
|
||||||
|
*/
|
||||||
|
# if !defined(HAL_USE_PWM) || defined(__DOXYGEN__)
|
||||||
|
# define HAL_USE_PWM TRUE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the RTC subsystem.
|
||||||
|
*/
|
||||||
|
# if !defined(HAL_USE_RTC) || defined(__DOXYGEN__)
|
||||||
|
# define HAL_USE_RTC FALSE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the SDC subsystem.
|
||||||
|
*/
|
||||||
|
# if !defined(HAL_USE_SDC) || defined(__DOXYGEN__)
|
||||||
|
# define HAL_USE_SDC FALSE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the SERIAL subsystem.
|
||||||
|
*/
|
||||||
|
# if !defined(HAL_USE_SERIAL) || defined(__DOXYGEN__)
|
||||||
|
# define HAL_USE_SERIAL FALSE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the SERIAL over USB subsystem.
|
||||||
|
*/
|
||||||
|
# if !defined(HAL_USE_SERIAL_USB) || defined(__DOXYGEN__)
|
||||||
|
# define HAL_USE_SERIAL_USB TRUE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the SIO subsystem.
|
||||||
|
*/
|
||||||
|
# if !defined(HAL_USE_SIO) || defined(__DOXYGEN__)
|
||||||
|
# define HAL_USE_SIO FALSE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the SPI subsystem.
|
||||||
|
*/
|
||||||
|
# if !defined(HAL_USE_SPI) || defined(__DOXYGEN__)
|
||||||
|
# define HAL_USE_SPI TRUE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the TRNG subsystem.
|
||||||
|
*/
|
||||||
|
# if !defined(HAL_USE_TRNG) || defined(__DOXYGEN__)
|
||||||
|
# define HAL_USE_TRNG FALSE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the UART subsystem.
|
||||||
|
*/
|
||||||
|
# if !defined(HAL_USE_UART) || defined(__DOXYGEN__)
|
||||||
|
# define HAL_USE_UART FALSE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the USB subsystem.
|
||||||
|
*/
|
||||||
|
# if !defined(HAL_USE_USB) || defined(__DOXYGEN__)
|
||||||
|
# define HAL_USE_USB TRUE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the WDG subsystem.
|
||||||
|
*/
|
||||||
|
# if !defined(HAL_USE_WDG) || defined(__DOXYGEN__)
|
||||||
|
# define HAL_USE_WDG FALSE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the WSPI subsystem.
|
||||||
|
*/
|
||||||
|
# if !defined(HAL_USE_WSPI) || defined(__DOXYGEN__)
|
||||||
|
# define HAL_USE_WSPI FALSE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* PAL driver related settings. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables synchronous APIs.
|
||||||
|
* @note Disabling this option saves both code and data space.
|
||||||
|
*/
|
||||||
|
# if !defined(PAL_USE_CALLBACKS) || defined(__DOXYGEN__)
|
||||||
|
# define PAL_USE_CALLBACKS TRUE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables synchronous APIs.
|
||||||
|
* @note Disabling this option saves both code and data space.
|
||||||
|
*/
|
||||||
|
# if !defined(PAL_USE_WAIT) || defined(__DOXYGEN__)
|
||||||
|
# define PAL_USE_WAIT TRUE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* ADC driver related settings. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables synchronous APIs.
|
||||||
|
* @note Disabling this option saves both code and data space.
|
||||||
|
*/
|
||||||
|
# if !defined(ADC_USE_WAIT) || defined(__DOXYGEN__)
|
||||||
|
# define ADC_USE_WAIT TRUE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the @p adcAcquireBus() and @p adcReleaseBus() APIs.
|
||||||
|
* @note Disabling this option saves both code and data space.
|
||||||
|
*/
|
||||||
|
# if !defined(ADC_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
|
||||||
|
# define ADC_USE_MUTUAL_EXCLUSION TRUE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* CAN driver related settings. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Sleep mode related APIs inclusion switch.
|
||||||
|
*/
|
||||||
|
# if !defined(CAN_USE_SLEEP_MODE) || defined(__DOXYGEN__)
|
||||||
|
# define CAN_USE_SLEEP_MODE TRUE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enforces the driver to use direct callbacks rather than OSAL events.
|
||||||
|
*/
|
||||||
|
# if !defined(CAN_ENFORCE_USE_CALLBACKS) || defined(__DOXYGEN__)
|
||||||
|
# define CAN_ENFORCE_USE_CALLBACKS FALSE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* CRY driver related settings. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the SW fall-back of the cryptographic driver.
|
||||||
|
* @details When enabled, this option, activates a fall-back software
|
||||||
|
* implementation for algorithms not supported by the underlying
|
||||||
|
* hardware.
|
||||||
|
* @note Fall-back implementations may not be present for all algorithms.
|
||||||
|
*/
|
||||||
|
# if !defined(HAL_CRY_USE_FALLBACK) || defined(__DOXYGEN__)
|
||||||
|
# define HAL_CRY_USE_FALLBACK FALSE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Makes the driver forcibly use the fall-back implementations.
|
||||||
|
*/
|
||||||
|
# if !defined(HAL_CRY_ENFORCE_FALLBACK) || defined(__DOXYGEN__)
|
||||||
|
# define HAL_CRY_ENFORCE_FALLBACK FALSE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* DAC driver related settings. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables synchronous APIs.
|
||||||
|
* @note Disabling this option saves both code and data space.
|
||||||
|
*/
|
||||||
|
# if !defined(DAC_USE_WAIT) || defined(__DOXYGEN__)
|
||||||
|
# define DAC_USE_WAIT TRUE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the @p dacAcquireBus() and @p dacReleaseBus() APIs.
|
||||||
|
* @note Disabling this option saves both code and data space.
|
||||||
|
*/
|
||||||
|
# if !defined(DAC_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
|
||||||
|
# define DAC_USE_MUTUAL_EXCLUSION TRUE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* I2C driver related settings. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the mutual exclusion APIs on the I2C bus.
|
||||||
|
*/
|
||||||
|
# if !defined(I2C_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
|
||||||
|
# define I2C_USE_MUTUAL_EXCLUSION TRUE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* MAC driver related settings. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the zero-copy API.
|
||||||
|
*/
|
||||||
|
# if !defined(MAC_USE_ZERO_COPY) || defined(__DOXYGEN__)
|
||||||
|
# define MAC_USE_ZERO_COPY FALSE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables an event sources for incoming packets.
|
||||||
|
*/
|
||||||
|
# if !defined(MAC_USE_EVENTS) || defined(__DOXYGEN__)
|
||||||
|
# define MAC_USE_EVENTS TRUE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* MMC_SPI driver related settings. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Delays insertions.
|
||||||
|
* @details If enabled this options inserts delays into the MMC waiting
|
||||||
|
* routines releasing some extra CPU time for the threads with
|
||||||
|
* lower priority, this may slow down the driver a bit however.
|
||||||
|
* This option is recommended also if the SPI driver does not
|
||||||
|
* use a DMA channel and heavily loads the CPU.
|
||||||
|
*/
|
||||||
|
# if !defined(MMC_NICE_WAITING) || defined(__DOXYGEN__)
|
||||||
|
# define MMC_NICE_WAITING TRUE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* SDC driver related settings. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Number of initialization attempts before rejecting the card.
|
||||||
|
* @note Attempts are performed at 10mS intervals.
|
||||||
|
*/
|
||||||
|
# if !defined(SDC_INIT_RETRY) || defined(__DOXYGEN__)
|
||||||
|
# define SDC_INIT_RETRY 100
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Include support for MMC cards.
|
||||||
|
* @note MMC support is not yet implemented so this option must be kept
|
||||||
|
* at @p FALSE.
|
||||||
|
*/
|
||||||
|
# if !defined(SDC_MMC_SUPPORT) || defined(__DOXYGEN__)
|
||||||
|
# define SDC_MMC_SUPPORT FALSE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Delays insertions.
|
||||||
|
* @details If enabled this options inserts delays into the MMC waiting
|
||||||
|
* routines releasing some extra CPU time for the threads with
|
||||||
|
* lower priority, this may slow down the driver a bit however.
|
||||||
|
*/
|
||||||
|
# if !defined(SDC_NICE_WAITING) || defined(__DOXYGEN__)
|
||||||
|
# define SDC_NICE_WAITING TRUE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief OCR initialization constant for V20 cards.
|
||||||
|
*/
|
||||||
|
# if !defined(SDC_INIT_OCR_V20) || defined(__DOXYGEN__)
|
||||||
|
# define SDC_INIT_OCR_V20 0x50FF8000U
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief OCR initialization constant for non-V20 cards.
|
||||||
|
*/
|
||||||
|
# if !defined(SDC_INIT_OCR) || defined(__DOXYGEN__)
|
||||||
|
# define SDC_INIT_OCR 0x80100000U
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* SERIAL driver related settings. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Default bit rate.
|
||||||
|
* @details Configuration parameter, this is the baud rate selected for the
|
||||||
|
* default configuration.
|
||||||
|
*/
|
||||||
|
# if !defined(SERIAL_DEFAULT_BITRATE) || defined(__DOXYGEN__)
|
||||||
|
# define SERIAL_DEFAULT_BITRATE 38400
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Serial buffers size.
|
||||||
|
* @details Configuration parameter, you can change the depth of the queue
|
||||||
|
* buffers depending on the requirements of your application.
|
||||||
|
* @note The default is 16 bytes for both the transmission and receive
|
||||||
|
* buffers.
|
||||||
|
*/
|
||||||
|
# if !defined(SERIAL_BUFFERS_SIZE) || defined(__DOXYGEN__)
|
||||||
|
# define SERIAL_BUFFERS_SIZE 16
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* SERIAL_USB driver related setting. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Serial over USB buffers size.
|
||||||
|
* @details Configuration parameter, the buffer size must be a multiple of
|
||||||
|
* the USB data endpoint maximum packet size.
|
||||||
|
* @note The default is 256 bytes for both the transmission and receive
|
||||||
|
* buffers.
|
||||||
|
*/
|
||||||
|
# if !defined(SERIAL_USB_BUFFERS_SIZE) || defined(__DOXYGEN__)
|
||||||
|
# define SERIAL_USB_BUFFERS_SIZE 1
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Serial over USB number of buffers.
|
||||||
|
* @note The default is 2 buffers.
|
||||||
|
*/
|
||||||
|
# if !defined(SERIAL_USB_BUFFERS_NUMBER) || defined(__DOXYGEN__)
|
||||||
|
# define SERIAL_USB_BUFFERS_NUMBER 2
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* SPI driver related settings. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables synchronous APIs.
|
||||||
|
* @note Disabling this option saves both code and data space.
|
||||||
|
*/
|
||||||
|
# if !defined(SPI_USE_WAIT) || defined(__DOXYGEN__)
|
||||||
|
# define SPI_USE_WAIT TRUE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables circular transfers APIs.
|
||||||
|
* @note Disabling this option saves both code and data space.
|
||||||
|
*/
|
||||||
|
# if !defined(SPI_USE_CIRCULAR) || defined(__DOXYGEN__)
|
||||||
|
# define SPI_USE_CIRCULAR FALSE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the @p spiAcquireBus() and @p spiReleaseBus() APIs.
|
||||||
|
* @note Disabling this option saves both code and data space.
|
||||||
|
*/
|
||||||
|
# if !defined(SPI_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
|
||||||
|
# define SPI_USE_MUTUAL_EXCLUSION TRUE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Handling method for SPI CS line.
|
||||||
|
* @note Disabling this option saves both code and data space.
|
||||||
|
*/
|
||||||
|
# if !defined(SPI_SELECT_MODE) || defined(__DOXYGEN__)
|
||||||
|
# define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* UART driver related settings. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables synchronous APIs.
|
||||||
|
* @note Disabling this option saves both code and data space.
|
||||||
|
*/
|
||||||
|
# if !defined(UART_USE_WAIT) || defined(__DOXYGEN__)
|
||||||
|
# define UART_USE_WAIT FALSE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the @p uartAcquireBus() and @p uartReleaseBus() APIs.
|
||||||
|
* @note Disabling this option saves both code and data space.
|
||||||
|
*/
|
||||||
|
# if !defined(UART_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
|
||||||
|
# define UART_USE_MUTUAL_EXCLUSION FALSE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* USB driver related settings. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables synchronous APIs.
|
||||||
|
* @note Disabling this option saves both code and data space.
|
||||||
|
*/
|
||||||
|
# if !defined(USB_USE_WAIT) || defined(__DOXYGEN__)
|
||||||
|
# define USB_USE_WAIT TRUE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* WSPI driver related settings. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables synchronous APIs.
|
||||||
|
* @note Disabling this option saves both code and data space.
|
||||||
|
*/
|
||||||
|
# if !defined(WSPI_USE_WAIT) || defined(__DOXYGEN__)
|
||||||
|
# define WSPI_USE_WAIT TRUE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the @p wspiAcquireBus() and @p wspiReleaseBus() APIs.
|
||||||
|
* @note Disabling this option saves both code and data space.
|
||||||
|
*/
|
||||||
|
# if !defined(WSPI_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
|
||||||
|
# define WSPI_USE_MUTUAL_EXCLUSION TRUE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#endif /* HALCONF_H */
|
||||||
|
|
||||||
|
/** @} */
|
||||||
@@ -0,0 +1,79 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "geminate60",
|
||||||
|
"url": "",
|
||||||
|
"maintainer": "qmk",
|
||||||
|
"width": 15,
|
||||||
|
"height": 5,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT": {
|
||||||
|
"layout": [
|
||||||
|
{"label":"K00", "x":0, "y":0},
|
||||||
|
{"label":"K01", "x":1, "y":0},
|
||||||
|
{"label":"K02", "x":2, "y":0},
|
||||||
|
{"label":"K0", "x":3, "y":0},
|
||||||
|
{"label":"K04", "x":4, "y":0},
|
||||||
|
{"label":"K05", "x":5, "y":0},
|
||||||
|
{"label":"K06", "x":6, "y":0},
|
||||||
|
{"label":"K07", "x":7, "y":0},
|
||||||
|
{"label":"K08", "x":8, "y":0},
|
||||||
|
{"label":"K09", "x":9, "y":0},
|
||||||
|
{"label":"K010", "x":10, "y":0},
|
||||||
|
{"label":"K011", "x":11, "y":0},
|
||||||
|
{"label":"K012", "x":12, "y":0},
|
||||||
|
{"label":"K013", "x":13, "y":0},
|
||||||
|
{"label":"K014", "x":14, "y":0},
|
||||||
|
{"label":"K10", "x":0, "y":1, "w":1.5},
|
||||||
|
{"label":"K11", "x":1.5, "y":1},
|
||||||
|
{"label":"K12", "x":2.5, "y":1},
|
||||||
|
{"label":"K13", "x":3.5, "y":1},
|
||||||
|
{"label":"K14", "x":4.5, "y":1},
|
||||||
|
{"label":"K15", "x":5.5, "y":1},
|
||||||
|
{"label":"K16", "x":6.5, "y":1},
|
||||||
|
{"label":"K17", "x":7.5, "y":1},
|
||||||
|
{"label":"K18", "x":8.5, "y":1},
|
||||||
|
{"label":"K19", "x":9.5, "y":1},
|
||||||
|
{"label":"K110", "x":10.5, "y":1},
|
||||||
|
{"label":"K111", "x":11.5, "y":1},
|
||||||
|
{"label":"K112", "x":12.5, "y":1},
|
||||||
|
{"label":"K113", "x":13.5, "y":1, "w":1.5},
|
||||||
|
{"label":"K20", "x":0, "y":2, "w":1.75},
|
||||||
|
{"label":"K21", "x":1.75, "y":2},
|
||||||
|
{"label":"K22", "x":2.75, "y":2},
|
||||||
|
{"label":"K23", "x":3.75, "y":2},
|
||||||
|
{"label":"K24", "x":4.75, "y":2},
|
||||||
|
{"label":"K25", "x":5.75, "y":2},
|
||||||
|
{"label":"K26", "x":6.75, "y":2},
|
||||||
|
{"label":"K27", "x":7.75, "y":2},
|
||||||
|
{"label":"K28", "x":8.75, "y":2},
|
||||||
|
{"label":"K29", "x":9.75, "y":2},
|
||||||
|
{"label":"K210", "x":10.75, "y":2},
|
||||||
|
{"label":"K211", "x":11.75, "y":2},
|
||||||
|
{"label":"K212", "x":12.75, "y":2},
|
||||||
|
{"label":"K213", "x":13.75, "y":2, "w":1.25},
|
||||||
|
{"label":"K30", "x":0, "y":3, "w":1.25},
|
||||||
|
{"label":"K31", "x":1.25, "y":3},
|
||||||
|
{"label":"K32", "x":2.25, "y":3},
|
||||||
|
{"label":"K33", "x":3.25, "y":3},
|
||||||
|
{"label":"K34", "x":4.25, "y":3},
|
||||||
|
{"label":"K35", "x":5.25, "y":3},
|
||||||
|
{"label":"K36", "x":6.25, "y":3},
|
||||||
|
{"label":"K37", "x":7.25, "y":3},
|
||||||
|
{"label":"K38", "x":8.25, "y":3},
|
||||||
|
{"label":"K39", "x":9.25, "y":3},
|
||||||
|
{"label":"K310", "x":10.25, "y":3},
|
||||||
|
{"label":"K311", "x":11.25, "y":3},
|
||||||
|
{"label":"K312", "x":12.25, "y":3, "w":1.75},
|
||||||
|
{"label":"K313", "x":14, "y":3},
|
||||||
|
{"label":"K40", "x":0, "y":4, "w":1.25},
|
||||||
|
{"label":"K41", "x":1.25, "y":4, "w":1.25},
|
||||||
|
{"label":"K42", "x":2.5, "y":4, "w":1.25},
|
||||||
|
{"label":"K46", "x":3.75, "y":4, "w":6.25},
|
||||||
|
{"label":"K410", "x":10, "y":4, "w":1.25},
|
||||||
|
{"label":"K411", "x":11.25, "y":4, "w":1.25},
|
||||||
|
{"label":"K412", "x":12.5, "y":4, "w":1.25},
|
||||||
|
{"label":"K413", "x":13.75, "y":4, "w":1.25}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/"
|
||||||
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
/* Copyright 2020 Weirdo
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
|
||||||
|
// [Keymaps] -----------------------------------------------------------------//
|
||||||
|
enum layer_names {
|
||||||
|
_BASE,
|
||||||
|
_FN
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[_BASE] = LAYOUT(KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC,
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||||
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT,
|
||||||
|
KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
|
||||||
|
KC_LCTL, KC_LWIN, KC_LALT,KC_SPACE, KC_RALT, KC_RALT, KC_RWIN, KC_RCTL),
|
||||||
|
|
||||||
|
|
||||||
|
[_FN] = LAYOUT(KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_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_LEFT, KC_DOWN, KC_RIGHT), //
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
bool led_update_user(led_t led_state) {
|
||||||
|
|
||||||
|
if(led_state.caps_lock){
|
||||||
|
rgblight_setrgb_at(192, 192, 192, 0);
|
||||||
|
}else{
|
||||||
|
rgblight_setrgb_at(0, 0, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
/* Copyright 2020 Weirdo
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
|
||||||
|
// [Keymaps] -----------------------------------------------------------------//
|
||||||
|
enum layer_names { _BASE, _FN ,_FN1 ,_FN2 };
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[_BASE] = LAYOUT(KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC,
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||||
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT,
|
||||||
|
KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
|
||||||
|
KC_LCTL, KC_LWIN, KC_LALT, KC_SPACE, KC_RALT, KC_RALT, KC_RWIN, KC_RCTL),
|
||||||
|
|
||||||
|
|
||||||
|
[_FN] = LAYOUT(KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_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_LEFT, KC_DOWN, KC_RIGHT), //
|
||||||
|
|
||||||
|
[_FN1] = 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,),
|
||||||
|
|
||||||
|
[_FN2] = 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),
|
||||||
|
};
|
||||||
|
|
||||||
|
bool led_update_user(led_t led_state) {
|
||||||
|
|
||||||
|
if(led_state.caps_lock){
|
||||||
|
rgblight_setrgb_at(192, 192, 192, 0);
|
||||||
|
}else{
|
||||||
|
rgblight_setrgb_at(0, 0, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
VIA_ENABLE = yes
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
# Geminate60
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
A 60% keyboard based on STM32f303
|
||||||
|
|
||||||
|
* Keyboard Maintainer: [Weirdo](https://weirdo-f.github.io)(https://github.com/1248314361)
|
||||||
|
* Hardware Supported: Geminate60
|
||||||
|
* Hardware Availability: Not yet
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make geminate60:default
|
||||||
|
|
||||||
|
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# MCU name
|
||||||
|
MCU = STM32F303
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
|
||||||
|
MOUSEKEY_ENABLE = no # Mouse keys
|
||||||
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
|
CONSOLE_ENABLE = no # Console for debug
|
||||||
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
|
NKRO_ENABLE = yes # USB Nkey Rollover
|
||||||
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
|
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||||
|
AUDIO_ENABLE = no # Audio output
|
||||||
|
|
||||||
|
#LAYOUTS = ortho_5x15
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
/* Copyright 2021 Matteo Bonora
|
||||||
|
*
|
||||||
|
* 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 "aim65.h"
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
/* Copyright 2021 Matteo Bonora
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
#define LAYOUT( \
|
||||||
|
K62, K71, K61, K74, K64, K75, K65, K76, K66, K77, K67, K72, K53, \
|
||||||
|
K52, K42, K51, K41, K54, K44, K55, K45, K56, K46, K57, K47, K22, K40, \
|
||||||
|
K60, K31, K21, K34, K24, K35, K25, K36, K26, K37, K27, K33, K12, K23,\
|
||||||
|
K70, K01, K11, K04, K14, K05, K15, K06, K16, K07, K17, K20, \
|
||||||
|
K00 \
|
||||||
|
) { \
|
||||||
|
{ K00, K01, KC_NO, KC_NO, K04, K05, K06, K07 }, \
|
||||||
|
{ KC_NO, K11, K12, KC_NO, K14, K15, K16, K17 }, \
|
||||||
|
{ K20, K21, K22, K23, K24, K25, K26, K27 }, \
|
||||||
|
{ KC_NO, K31, KC_NO, K33, K34, K35, K36, K37 }, \
|
||||||
|
{ K40, K41, K42, KC_NO, K44, K45, K46, K47 }, \
|
||||||
|
{ KC_NO, K51, K52, K53, K54, K55, K56, K57 }, \
|
||||||
|
{ K60, K61, K62, KC_NO, K64, K65, K66, K67 }, \
|
||||||
|
{ K70, K71, K72, KC_NO, K74, K75, K76, K77 }, \
|
||||||
|
}
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
/* Copyright 2021 Matteo Bonora
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "config_common.h"
|
||||||
|
|
||||||
|
/* USB Device descriptor parameter */
|
||||||
|
#define VENDOR_ID 0xFEED
|
||||||
|
#define PRODUCT_ID 0x0F34
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER Hi-Tek
|
||||||
|
#define PRODUCT AIM-65
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 8
|
||||||
|
#define MATRIX_COLS 8
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Keyboard Matrix Assignments
|
||||||
|
*
|
||||||
|
* Change this to how you wired your keyboard
|
||||||
|
* COLS: AVR pins used for columns, left to right
|
||||||
|
* ROWS: AVR pins used for rows, top to bottom
|
||||||
|
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
|
||||||
|
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#define MATRIX_ROW_PINS { D0, D4, D7, E6, B4, B5, B3, B1 }
|
||||||
|
#define MATRIX_COL_PINS { D1, C6, B6, B2, F7, F6, F5, F4 }
|
||||||
|
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
#define LED_CAPS_LOCK_PIN B0
|
||||||
|
#define LED_PIN_ON_STATE 0
|
||||||
@@ -0,0 +1,68 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "Hi-Tek AIM-65",
|
||||||
|
"url": "https://github.com/Bonnee/aim-65_keyboard",
|
||||||
|
"maintainer": "bonnee",
|
||||||
|
"width": 15.25,
|
||||||
|
"height": 5,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT": {
|
||||||
|
"layout": [
|
||||||
|
{"label":"K62 (B3,B6)", "x":1, "y":0},
|
||||||
|
{"label":"K71 (B1,C6)", "x":2, "y":0},
|
||||||
|
{"label":"K61 (B3,C6)", "x":3, "y":0},
|
||||||
|
{"label":"K74 (B1,F7)", "x":4, "y":0},
|
||||||
|
{"label":"K64 (B3,F7)", "x":5, "y":0},
|
||||||
|
{"label":"K75 (B1,F6)", "x":6, "y":0},
|
||||||
|
{"label":"K65 (B3,F6)", "x":7, "y":0},
|
||||||
|
{"label":"K76 (B1,F5)", "x":8, "y":0},
|
||||||
|
{"label":"K66 (B3,F5)", "x":9, "y":0},
|
||||||
|
{"label":"K77 (B1,F4)", "x":10, "y":0},
|
||||||
|
{"label":"K67 (B3,F4)", "x":11, "y":0},
|
||||||
|
{"label":"K72 (B1,B6)", "x":12, "y":0},
|
||||||
|
{"label":"K53 (B5,B2)", "x":13, "y":0},
|
||||||
|
{"label":"K52 (B5,B6)", "x":0, "y":1, "w":1.5},
|
||||||
|
{"label":"K42 (B4,B6)", "x":1.5, "y":1},
|
||||||
|
{"label":"K51 (B5,C6)", "x":2.5, "y":1},
|
||||||
|
{"label":"K41 (B4,C6)", "x":3.5, "y":1},
|
||||||
|
{"label":"K54 (B5,F7)", "x":4.5, "y":1},
|
||||||
|
{"label":"K44 (B4,F7)", "x":5.5, "y":1},
|
||||||
|
{"label":"K55 (B5,F6)", "x":6.5, "y":1},
|
||||||
|
{"label":"K45 (B4,F6)", "x":7.5, "y":1},
|
||||||
|
{"label":"K56 (B5,F5)", "x":8.5, "y":1},
|
||||||
|
{"label":"K46 (B4,F5)", "x":9.5, "y":1},
|
||||||
|
{"label":"K57 (B5,F4)", "x":10.5, "y":1},
|
||||||
|
{"label":"K47 (B4,F4)", "x":11.5, "y":1},
|
||||||
|
{"label":"K22 (D7,B6)", "x":12.5, "y":1},
|
||||||
|
{"label":"K40 (B4,D1)", "x":13.5, "y":1},
|
||||||
|
{"label":"K60 (B3,D1)", "x":0.75, "y":2},
|
||||||
|
{"label":"K31 (E6,C6)", "x":1.75, "y":2},
|
||||||
|
{"label":"K21 (D7,C6)", "x":2.75, "y":2},
|
||||||
|
{"label":"K34 (E6,F7)", "x":3.75, "y":2},
|
||||||
|
{"label":"K24 (D7,F7)", "x":4.75, "y":2},
|
||||||
|
{"label":"K35 (E6,F6)", "x":5.75, "y":2},
|
||||||
|
{"label":"K25 (D7,F6)", "x":6.75, "y":2},
|
||||||
|
{"label":"K36 (E6,F5)", "x":7.75, "y":2},
|
||||||
|
{"label":"K26 (D7,F5)", "x":8.75, "y":2},
|
||||||
|
{"label":"K37 (E6,F4)", "x":9.75, "y":2},
|
||||||
|
{"label":"K27 (D7,F4)", "x":10.75, "y":2},
|
||||||
|
{"label":"K33 (E6,B2)", "x":11.75, "y":2},
|
||||||
|
{"label":"K12 (D4,B6)", "x":12.75, "y":2},
|
||||||
|
{"label":"K23 (D7,B2)", "x":13.75, "y":2, "w":1.5},
|
||||||
|
{"label":"K70 (B1,D1)", "x":0.75, "y":3, "w":1.5},
|
||||||
|
{"label":"K01 (D0,C6)", "x":2.25, "y":3},
|
||||||
|
{"label":"K11 (D4,C6)", "x":3.25, "y":3},
|
||||||
|
{"label":"K04 (D0,F7)", "x":4.25, "y":3},
|
||||||
|
{"label":"K14 (D4,F7)", "x":5.25, "y":3},
|
||||||
|
{"label":"K05 (D0,F6)", "x":6.25, "y":3},
|
||||||
|
{"label":"K15 (D4,F6)", "x":7.25, "y":3},
|
||||||
|
{"label":"K06 (D0,F5)", "x":8.25, "y":3},
|
||||||
|
{"label":"K16 (D4,F5)", "x":9.25, "y":3},
|
||||||
|
{"label":"K07 (D0,F4)", "x":10.25, "y":3},
|
||||||
|
{"label":"K17 (D4,F4)", "x":11.25, "y":3},
|
||||||
|
{"label":"K20 (D7,D1)", "x":12.25, "y":3, "w":1.5},
|
||||||
|
{"label":"K00 (D0,D1)", "x":3.25, "y":4, "w":8}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
/* Copyright 2021 Matteo Bonora
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
#define CTESC LCTL_T(KC_ESC)
|
||||||
|
|
||||||
|
enum layer_names {
|
||||||
|
BL,
|
||||||
|
FL
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[BL] = LAYOUT(
|
||||||
|
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
|
||||||
|
KC_GRV, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_RGUI,
|
||||||
|
CTESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
||||||
|
LT(FL, KC_SPC)
|
||||||
|
),
|
||||||
|
|
||||||
|
[FL] = LAYOUT(
|
||||||
|
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
|
||||||
|
KC_TAB, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______
|
||||||
|
)
|
||||||
|
};
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
/* Copyright 2021 Matteo Bonora
|
||||||
|
*
|
||||||
|
* 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] = {
|
||||||
|
LAYOUT(
|
||||||
|
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_SCLN, KC_F3, KC_PSCR,
|
||||||
|
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, KC_F2,KC_RETURN,
|
||||||
|
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_AT, KC_F1, KC_DEL,
|
||||||
|
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_SPC
|
||||||
|
)
|
||||||
|
};
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
# Hi-Tek AIM-65
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
The keboard assembly that came with the Rockwell AIM-65, a microcomputer from the '70s [Wikipedia article](https://en.wikipedia.org/wiki/AIM-65)
|
||||||
|
|
||||||
|
The controller is a Pro Micro handwired to the original connector. [This](https://github.com/Bonnee/aim-65_keyboard) repo collects 3D models for the case, schematics for the matrix and pics.
|
||||||
|
|
||||||
|
* Keyboard Maintainer: [Matteo Bonora](https://github.com/bonnee)
|
||||||
|
* Hardware Supported: Pro Micro
|
||||||
|
|
||||||
|
The default layout is useless on a modern computer, you can use it as a base for your own though.
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make handwired/aim65:default
|
||||||
|
|
||||||
|
Flashing example for this keyboard:
|
||||||
|
|
||||||
|
make handwired/aim65:default:flash
|
||||||
|
|
||||||
|
To reset the board into bootloader mode, do one of the following:
|
||||||
|
|
||||||
|
* Double-tap the Reset switch mounted on the Pro Micro
|
||||||
|
* Hold the spacebar while connecting the USB cable (also erases persistent settings)
|
||||||
|
|
||||||
|
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).
|
||||||
Loaded 100 of 342 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user