forked from Github/qmk_firmware
Compare commits
45 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
ea5ef746e2 | ||
![]() |
8c8f4b3c06 | ||
![]() |
55e1acec07 | ||
![]() |
584e390703 | ||
![]() |
2c152c3425 | ||
![]() |
8a06238054 | ||
![]() |
25d7ac9ecc | ||
![]() |
681d6a29e6 | ||
![]() |
d044a6bcc2 | ||
![]() |
091eac1fce | ||
![]() |
02bed7e5a5 | ||
![]() |
7919848324 | ||
![]() |
a4436b32df | ||
![]() |
0f9c1c57b4 | ||
![]() |
e725cdbc4b | ||
![]() |
9ef5dcd113 | ||
![]() |
ef6e9a5312 | ||
![]() |
5bdeb7dad1 | ||
![]() |
8347a6688f | ||
![]() |
3ce196ff52 | ||
![]() |
0326355edc | ||
![]() |
94f1aade5c | ||
![]() |
fe54121cfa | ||
![]() |
77b2742863 | ||
![]() |
021c3cc125 | ||
![]() |
0b3a54f9f2 | ||
![]() |
7808f8f56b | ||
![]() |
e3c8c23d91 | ||
![]() |
b4cabc3cf7 | ||
![]() |
e8e3c7addb | ||
![]() |
608ce78778 | ||
![]() |
977433443a | ||
![]() |
5bf8248dd3 | ||
![]() |
7b36727ed1 | ||
![]() |
f096e5a3f3 | ||
![]() |
53c6fa5de7 | ||
![]() |
97168180cf | ||
![]() |
57374489da | ||
![]() |
1d145c7511 | ||
![]() |
820202cd53 | ||
![]() |
4c773971a7 | ||
![]() |
9e8e9af485 | ||
![]() |
4f60946513 | ||
![]() |
ac9318c78f | ||
![]() |
76cf8dff93 |
8
Makefile
8
Makefile
@@ -115,7 +115,7 @@ endef
|
||||
TRY_TO_MATCH_RULE_FROM_LIST = $(eval $(call TRY_TO_MATCH_RULE_FROM_LIST_HELPER,$1))$(RULE_FOUND)
|
||||
|
||||
# As TRY_TO_MATCH_RULE_FROM_LIST_HELPER, but with additional
|
||||
# resolution of DEFAULT_FOLDER and keyboard_aliases.hjson for provided rule
|
||||
# resolution of keyboard_aliases.hjson for provided rule
|
||||
define TRY_TO_MATCH_RULE_FROM_LIST_HELPER_KB
|
||||
# Split on ":", padding with empty strings to avoid indexing issues
|
||||
TOKEN1:=$$(shell python3 -c "import sys; print((sys.argv[1].split(':',1)+[''])[0])" $$(RULE))
|
||||
@@ -255,7 +255,7 @@ endef
|
||||
# if we are going to compile all keyboards, match the rest of the rule
|
||||
# for each of them
|
||||
define PARSE_ALL_KEYBOARDS
|
||||
$$(eval $$(call PARSE_ALL_IN_LIST,PARSE_KEYBOARD,$(shell $(QMK_BIN) list-keyboards --no-resolve-defaults)))
|
||||
$$(eval $$(call PARSE_ALL_IN_LIST,PARSE_KEYBOARD,$(shell $(QMK_BIN) list-keyboards)))
|
||||
endef
|
||||
|
||||
# Prints a list of all known keymaps for the given keyboard
|
||||
@@ -447,7 +447,7 @@ git-submodules: git-submodule
|
||||
|
||||
.PHONY: list-keyboards
|
||||
list-keyboards:
|
||||
$(QMK_BIN) list-keyboards --no-resolve-defaults | tr '\n' ' '
|
||||
$(QMK_BIN) list-keyboards | tr '\n' ' '
|
||||
|
||||
.PHONY: list-tests
|
||||
list-tests:
|
||||
@@ -455,7 +455,7 @@ list-tests:
|
||||
|
||||
.PHONY: generate-keyboards-file
|
||||
generate-keyboards-file:
|
||||
$(QMK_BIN) list-keyboards --no-resolve-defaults
|
||||
$(QMK_BIN) list-keyboards
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
|
@@ -29,6 +29,8 @@ QUANTUM_SRC += \
|
||||
$(QUANTUM_DIR)/logging/debug.c \
|
||||
$(QUANTUM_DIR)/logging/sendchar.c \
|
||||
$(QUANTUM_DIR)/process_keycode/process_default_layer.c \
|
||||
$(QUANTUM_DIR)/process_keycode/process_oneshot.c \
|
||||
$(QUANTUM_DIR)/process_keycode/process_quantum.c \
|
||||
|
||||
include $(QUANTUM_DIR)/nvm/rules.mk
|
||||
|
||||
|
@@ -53,8 +53,8 @@
|
||||
"WS2812_DRIVER": {"info_key": "ws2812.driver"},
|
||||
|
||||
// Items we want flagged in lint
|
||||
"DEFAULT_FOLDER": {"info_key": "_deprecated.default_folder", "deprecated": true},
|
||||
"CTPC": {"info_key": "_invalid.ctpc", "invalid": true, "replace_with": "CONVERT_TO=proton_c"},
|
||||
"CONVERT_TO_PROTON_C": {"info_key": "_invalid.ctpc", "invalid": true, "replace_with": "CONVERT_TO=proton_c"},
|
||||
"DEFAULT_FOLDER": {"info_key": "_invalid.default_folder", "invalid": true},
|
||||
"VIAL_ENABLE": {"info_key": "_invalid.vial", "invalid": true}
|
||||
}
|
||||
|
@@ -2258,5 +2258,54 @@
|
||||
},
|
||||
"zsa/planck_ez": {
|
||||
"target": "zsa/planck_ez/base"
|
||||
},
|
||||
// DEFAULT_FOLDER removed during 2025 Q3 cycle
|
||||
"cannonkeys/satisfaction75": {
|
||||
"target": "cannonkeys/satisfaction75/rev1"
|
||||
},
|
||||
"converter/adb_usb": {
|
||||
"target": "converter/adb_usb/rev1"
|
||||
},
|
||||
"converter/sun_usb": {
|
||||
"target": "converter/sun_usb/type5"
|
||||
},
|
||||
"converter/usb_usb": {
|
||||
"target": "converter/usb_usb/hasu"
|
||||
},
|
||||
"durgod/dgk6x": {
|
||||
"target": "durgod/dgk6x/hades_ansi"
|
||||
},
|
||||
"ergodox_ez": {
|
||||
"target": "ergodox_ez/base"
|
||||
},
|
||||
"ferris/0_2": {
|
||||
"target": "ferris/0_2/base"
|
||||
},
|
||||
"handwired/dygma/raise": {
|
||||
"target": "handwired/dygma/raise/ansi"
|
||||
},
|
||||
"helix/pico": {
|
||||
"target": "helix/pico/base"
|
||||
},
|
||||
"helix": {
|
||||
"target": "helix/rev2/base"
|
||||
},
|
||||
"helix/rev2": {
|
||||
"target": "helix/rev2/base"
|
||||
},
|
||||
"ibm/model_m/mschwingen": {
|
||||
"target": "ibm/model_m/mschwingen/led_wired"
|
||||
},
|
||||
"mechwild/sugarglider": {
|
||||
"target": "mechwild/sugarglider/wide_oled/f401"
|
||||
},
|
||||
"mechwild/sugarglider/wide_oled": {
|
||||
"target": "mechwild/sugarglider/wide_oled/f401"
|
||||
},
|
||||
"novelkeys/nk65": {
|
||||
"target": "novelkeys/nk65/base"
|
||||
},
|
||||
"sirius/uni660/rev2": {
|
||||
"target": "sirius/uni660/rev2/ansi"
|
||||
}
|
||||
}
|
||||
|
@@ -364,8 +364,6 @@ This is a [make](https://www.gnu.org/software/make/manual/make.html) file that i
|
||||
|
||||
## Build Options
|
||||
|
||||
* `DEFAULT_FOLDER`
|
||||
* Used to specify a default folder when a keyboard has more than one sub-folder.
|
||||
* `FIRMWARE_FORMAT`
|
||||
* Defines which format (bin, hex) is copied to the root `qmk_firmware` folder after building.
|
||||
* `SRC`
|
||||
|
@@ -214,9 +214,30 @@ led_matrix_mode(LED_MATRIX_CUSTOM_my_cool_effect);
|
||||
For inspiration and examples, check out the built-in effects under `quantum/led_matrix/animations/`.
|
||||
|
||||
|
||||
## Naming
|
||||
|
||||
If you wish to be able to use the name of an effect in your code -- say for a display indicator -- then you can enable the function `led_matrix_get_mode_name` in the following manner:
|
||||
|
||||
In your keymap's `config.h`:
|
||||
```c
|
||||
#define LED_MATRIX_MODE_NAME_ENABLE
|
||||
```
|
||||
|
||||
In your `keymap.c`
|
||||
```c
|
||||
const char* effect_name = led_matrix_get_mode_name(led_matrix_get_mode());
|
||||
// do something with `effect_name`, like `oled_write_ln(effect_name, false);`
|
||||
```
|
||||
|
||||
::: info
|
||||
`led_matrix_get_mode_name()` is not enabled by default as it increases the amount of flash memory used by the firmware based on the number of effects enabled.
|
||||
:::
|
||||
|
||||
|
||||
## Additional `config.h` Options {#additional-configh-options}
|
||||
|
||||
```c
|
||||
#define LED_MATRIX_MODE_NAME_ENABLE // enables led_matrix_get_mode_name()
|
||||
#define LED_MATRIX_KEYRELEASES // reactive effects respond to keyreleases (instead of keypresses)
|
||||
#define LED_MATRIX_TIMEOUT 0 // number of milliseconds to wait until led automatically turns off
|
||||
#define LED_MATRIX_SLEEP // turn off effects when suspended
|
||||
|
@@ -379,7 +379,7 @@ POINTING_DEVICE_DRIVER = custom
|
||||
Using the custom driver will require implementing the following functions:
|
||||
|
||||
```c
|
||||
void pointing_device_driver_init(void) {}
|
||||
bool pointing_device_driver_init(void) { return true; }
|
||||
report_mouse_t pointing_device_driver_get_report(report_mouse_t mouse_report) { return mouse_report; }
|
||||
uint16_t pointing_device_driver_get_cpi(void) { return 0; }
|
||||
void pointing_device_driver_set_cpi(uint16_t cpi) {}
|
||||
@@ -467,20 +467,22 @@ If there is a `_RIGHT` configuration option or callback, the [common configurati
|
||||
|
||||
## Callbacks and Functions
|
||||
|
||||
| Function | Description |
|
||||
| ---------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- |
|
||||
| `pointing_device_init_kb(void)` | Callback to allow for keyboard level initialization. Useful for additional hardware sensors. |
|
||||
| `pointing_device_init_user(void)` | Callback to allow for user level initialization. Useful for additional hardware sensors. |
|
||||
| `pointing_device_task_kb(mouse_report)` | Callback that sends sensor data, so keyboard code can intercept and modify the data. Returns a mouse report. |
|
||||
| `pointing_device_task_user(mouse_report)` | Callback that sends sensor data, so user code can intercept and modify the data. Returns a mouse report. |
|
||||
| `pointing_device_handle_buttons(buttons, pressed, button)` | Callback to handle hardware button presses. Returns a `uint8_t`. |
|
||||
| `pointing_device_get_cpi(void)` | Gets the current CPI/DPI setting from the sensor, if supported. |
|
||||
| `pointing_device_set_cpi(uint16_t)` | Sets the CPI/DPI, if supported. |
|
||||
| `pointing_device_get_report(void)` | Returns the current mouse report (as a `report_mouse_t` data structure). |
|
||||
| `pointing_device_set_report(mouse_report)` | Sets the mouse report to the assigned `report_mouse_t` data structured passed to the function. |
|
||||
| `pointing_device_send(void)` | Sends the current mouse report to the host system. Function can be replaced. |
|
||||
| `has_mouse_report_changed(new_report, old_report)` | Compares the old and new `report_mouse_t` data and returns true only if it has changed. |
|
||||
| `pointing_device_adjust_by_defines(mouse_report)` | Applies rotations and invert configurations to a raw mouse report. |
|
||||
| Function | Description |
|
||||
| ------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- |
|
||||
| `pointing_device_init_kb(void)` | Callback to allow for keyboard level initialization. Useful for additional hardware sensors. |
|
||||
| `pointing_device_init_user(void)` | Callback to allow for user level initialization. Useful for additional hardware sensors. |
|
||||
| `pointing_device_task_kb(mouse_report)` | Callback that sends sensor data, so keyboard code can intercept and modify the data. Returns a mouse report. |
|
||||
| `pointing_device_task_user(mouse_report)` | Callback that sends sensor data, so user code can intercept and modify the data. Returns a mouse report. |
|
||||
| `pointing_device_handle_buttons(buttons, pressed, button)` | Callback to handle hardware button presses. Returns a `uint8_t`. |
|
||||
| `pointing_device_get_cpi(void)` | Gets the current CPI/DPI setting from the sensor, if supported. |
|
||||
| `pointing_device_set_cpi(uint16_t)` | Sets the CPI/DPI, if supported. |
|
||||
| `pointing_device_get_report(void)` | Returns the current mouse report (as a `report_mouse_t` data structure). |
|
||||
| `pointing_device_set_report(mouse_report)` | Sets the mouse report to the assigned `report_mouse_t` data structured passed to the function. |
|
||||
| `pointing_device_send(void)` | Sends the current mouse report to the host system. Function can be replaced. |
|
||||
| `has_mouse_report_changed(new_report, old_report)` | Compares the old and new `report_mouse_t` data and returns true only if it has changed. |
|
||||
| `pointing_device_adjust_by_defines(mouse_report)` | Applies rotations and invert configurations to a raw mouse report. |
|
||||
| `pointing_device_get_status(void)` | Returns device status as `pointing_device_status_t` a good return is `POINTING_DEVICE_STATUS_SUCCESS`. |
|
||||
| `pointing_device_set_status(pointing_device_status_t status)` | Sets device status, anything other than `POINTING_DEVICE_STATUS_SUCCESS` will disable reports from the device.|
|
||||
|
||||
|
||||
## Split Keyboard Callbacks and Functions
|
||||
|
@@ -365,9 +365,30 @@ These are shorthands to popular colors. The `RGB` ones can be passed to the `set
|
||||
These are defined in [`color.h`](https://github.com/qmk/qmk_firmware/blob/master/quantum/color.h). Feel free to add to this list!
|
||||
|
||||
|
||||
## Naming
|
||||
|
||||
If you wish to be able to use the name of an effect in your code -- say for a display indicator -- then you can enable the function `rgb_matrix_get_mode_name` in the following manner:
|
||||
|
||||
In your keymap's `config.h`:
|
||||
```c
|
||||
#define RGB_MATRIX_MODE_NAME_ENABLE
|
||||
```
|
||||
|
||||
In your `keymap.c`
|
||||
```c
|
||||
const char* effect_name = rgb_matrix_get_mode_name(rgb_matrix_get_mode());
|
||||
// do something with `effect_name`, like `oled_write_ln(effect_name, false);`
|
||||
```
|
||||
|
||||
::: info
|
||||
`rgb_matrix_get_mode_name()` is not enabled by default as it increases the amount of flash memory used by the firmware based on the number of effects enabled.
|
||||
:::
|
||||
|
||||
|
||||
## Additional `config.h` Options {#additional-configh-options}
|
||||
|
||||
```c
|
||||
#define RGB_MATRIX_MODE_NAME_ENABLE // enables rgb_matrix_get_mode_name()
|
||||
#define RGB_MATRIX_KEYRELEASES // reactive effects respond to keyreleases (instead of keypresses)
|
||||
#define RGB_MATRIX_TIMEOUT 0 // number of milliseconds to wait until rgb automatically turns off
|
||||
#define RGB_MATRIX_SLEEP // turn off effects when suspended
|
||||
|
@@ -55,7 +55,7 @@ const pointing_device_driver_t adns5050_pointing_device_driver = {
|
||||
|
||||
static bool powered_down = false;
|
||||
|
||||
void adns5050_init(void) {
|
||||
bool adns5050_init(void) {
|
||||
// Initialize the ADNS serial pins.
|
||||
gpio_set_pin_output(ADNS5050_SCLK_PIN);
|
||||
gpio_set_pin_output(ADNS5050_SDIO_PIN);
|
||||
@@ -75,6 +75,8 @@ void adns5050_init(void) {
|
||||
// gets the adns ready for write commands
|
||||
// (for example, setting the dpi).
|
||||
adns5050_read_burst();
|
||||
|
||||
return adns5050_check_signature();
|
||||
}
|
||||
|
||||
// Perform a synchronization with the ADNS.
|
||||
@@ -220,7 +222,7 @@ uint16_t adns5050_get_cpi(void) {
|
||||
return (uint16_t)((cpival & 0b10000) * 125);
|
||||
}
|
||||
|
||||
bool adns5050_check_signature(void) {
|
||||
bool __attribute__((weak)) adns5050_check_signature(void) {
|
||||
uint8_t pid = adns5050_read_reg(REG_PRODUCT_ID);
|
||||
uint8_t rid = adns5050_read_reg(REG_REVISION_ID);
|
||||
uint8_t pid2 = adns5050_read_reg(REG_PRODUCT_ID2);
|
||||
|
@@ -75,7 +75,7 @@ const pointing_device_driver_t adns5050_pointing_device_driver;
|
||||
// A bunch of functions to implement the ADNS5050-specific serial protocol.
|
||||
// Note that the "serial.h" driver is insufficient, because it does not
|
||||
// manually manipulate a serial clock signal.
|
||||
void adns5050_init(void);
|
||||
bool adns5050_init(void);
|
||||
void adns5050_sync(void);
|
||||
uint8_t adns5050_serial_read(void);
|
||||
void adns5050_serial_write(uint8_t data);
|
||||
|
@@ -115,7 +115,14 @@ uint8_t adns9800_read(uint8_t reg_addr) {
|
||||
return data;
|
||||
}
|
||||
|
||||
void adns9800_init(void) {
|
||||
bool __attribute__((weak)) adns9800_check_signature(void) {
|
||||
if (adns9800_read(REG_Product_ID) != 0x33) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool adns9800_init(void) {
|
||||
gpio_set_pin_output(ADNS9800_CS_PIN);
|
||||
|
||||
spi_init();
|
||||
@@ -178,6 +185,8 @@ void adns9800_init(void) {
|
||||
adns9800_write(REG_LASER_CTRL0, laser_ctrl0 & 0xf0);
|
||||
|
||||
adns9800_set_cpi(ADNS9800_CPI);
|
||||
|
||||
return adns9800_check_signature();
|
||||
}
|
||||
|
||||
config_adns9800_t adns9800_get_config(void) {
|
||||
|
@@ -63,7 +63,7 @@ typedef struct {
|
||||
|
||||
const pointing_device_driver_t adns9800_pointing_device_driver;
|
||||
|
||||
void adns9800_init(void);
|
||||
bool adns9800_init(void);
|
||||
config_adns9800_t adns9800_get_config(void);
|
||||
void adns9800_set_config(config_adns9800_t);
|
||||
uint16_t adns9800_get_cpi(void);
|
||||
|
@@ -135,7 +135,7 @@ report_analog_joystick_t analog_joystick_read(void) {
|
||||
return report;
|
||||
}
|
||||
|
||||
void analog_joystick_init(void) {
|
||||
bool analog_joystick_init(void) {
|
||||
gpio_set_pin_input_high(ANALOG_JOYSTICK_X_AXIS_PIN);
|
||||
gpio_set_pin_input_high(ANALOG_JOYSTICK_Y_AXIS_PIN);
|
||||
|
||||
@@ -152,6 +152,8 @@ void analog_joystick_init(void) {
|
||||
maxAxisValues[0] = xOrigin + 100;
|
||||
maxAxisValues[1] = yOrigin + 100;
|
||||
#endif
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
report_mouse_t analog_joystick_get_report(report_mouse_t mouse_report) {
|
||||
|
@@ -51,5 +51,5 @@ typedef struct {
|
||||
bool button;
|
||||
} report_analog_joystick_t;
|
||||
report_analog_joystick_t analog_joystick_read(void);
|
||||
void analog_joystick_init(void);
|
||||
bool analog_joystick_init(void);
|
||||
report_mouse_t analog_joystick_get_report(report_mouse_t mouse_report);
|
||||
|
@@ -321,7 +321,7 @@ void azoteq_iqs5xx_setup_resolution(void) {
|
||||
|
||||
static i2c_status_t azoteq_iqs5xx_init_status = 1;
|
||||
|
||||
void azoteq_iqs5xx_init(void) {
|
||||
bool azoteq_iqs5xx_init(void) {
|
||||
i2c_init();
|
||||
i2c_ping_address(AZOTEQ_IQS5XX_ADDRESS, 1); // wake
|
||||
azoteq_iqs5xx_reset_suspend(true, false, true);
|
||||
@@ -349,67 +349,65 @@ void azoteq_iqs5xx_init(void) {
|
||||
azoteq_iqs5xx_init_status |= azoteq_iqs5xx_set_gesture_config(true);
|
||||
wait_ms(AZOTEQ_IQS5XX_REPORT_RATE + 1);
|
||||
}
|
||||
|
||||
return azoteq_iqs5xx_init_status == I2C_STATUS_SUCCESS;
|
||||
};
|
||||
|
||||
report_mouse_t azoteq_iqs5xx_get_report(report_mouse_t mouse_report) {
|
||||
report_mouse_t temp_report = {0};
|
||||
|
||||
if (azoteq_iqs5xx_init_status == I2C_STATUS_SUCCESS) {
|
||||
azoteq_iqs5xx_base_data_t base_data = {0};
|
||||
i2c_status_t status = azoteq_iqs5xx_get_base_data(&base_data);
|
||||
bool ignore_movement = false;
|
||||
azoteq_iqs5xx_base_data_t base_data = {0};
|
||||
i2c_status_t status = azoteq_iqs5xx_get_base_data(&base_data);
|
||||
bool ignore_movement = false;
|
||||
|
||||
if (status == I2C_STATUS_SUCCESS) {
|
||||
if (status == I2C_STATUS_SUCCESS) {
|
||||
#ifdef POINTING_DEVICE_DEBUG
|
||||
if (base_data.previous_cycle_time > AZOTEQ_IQS5XX_REPORT_RATE) {
|
||||
pd_dprintf("IQS5XX - previous cycle time missed, took: %dms\n", base_data.previous_cycle_time);
|
||||
}
|
||||
#endif
|
||||
if (base_data.gesture_events_0.single_tap || base_data.gesture_events_0.press_and_hold) {
|
||||
pd_dprintf("IQS5XX - Single tap/hold.\n");
|
||||
temp_report.buttons = pointing_device_handle_buttons(temp_report.buttons, true, POINTING_DEVICE_BUTTON1);
|
||||
} else if (base_data.gesture_events_1.two_finger_tap) {
|
||||
pd_dprintf("IQS5XX - Two finger tap.\n");
|
||||
temp_report.buttons = pointing_device_handle_buttons(temp_report.buttons, true, POINTING_DEVICE_BUTTON2);
|
||||
} else if (base_data.gesture_events_0.swipe_x_neg) {
|
||||
pd_dprintf("IQS5XX - X-.\n");
|
||||
temp_report.buttons = pointing_device_handle_buttons(temp_report.buttons, true, POINTING_DEVICE_BUTTON4);
|
||||
ignore_movement = true;
|
||||
} else if (base_data.gesture_events_0.swipe_x_pos) {
|
||||
pd_dprintf("IQS5XX - X+.\n");
|
||||
temp_report.buttons = pointing_device_handle_buttons(temp_report.buttons, true, POINTING_DEVICE_BUTTON5);
|
||||
ignore_movement = true;
|
||||
} else if (base_data.gesture_events_0.swipe_y_neg) {
|
||||
pd_dprintf("IQS5XX - Y-.\n");
|
||||
temp_report.buttons = pointing_device_handle_buttons(temp_report.buttons, true, POINTING_DEVICE_BUTTON6);
|
||||
ignore_movement = true;
|
||||
} else if (base_data.gesture_events_0.swipe_y_pos) {
|
||||
pd_dprintf("IQS5XX - Y+.\n");
|
||||
temp_report.buttons = pointing_device_handle_buttons(temp_report.buttons, true, POINTING_DEVICE_BUTTON3);
|
||||
ignore_movement = true;
|
||||
} else if (base_data.gesture_events_1.zoom) {
|
||||
if (AZOTEQ_IQS5XX_COMBINE_H_L_BYTES(base_data.x.h, base_data.x.l) < 0) {
|
||||
pd_dprintf("IQS5XX - Zoom out.\n");
|
||||
temp_report.buttons = pointing_device_handle_buttons(temp_report.buttons, true, POINTING_DEVICE_BUTTON7);
|
||||
} else if (AZOTEQ_IQS5XX_COMBINE_H_L_BYTES(base_data.x.h, base_data.x.l) > 0) {
|
||||
pd_dprintf("IQS5XX - Zoom in.\n");
|
||||
temp_report.buttons = pointing_device_handle_buttons(temp_report.buttons, true, POINTING_DEVICE_BUTTON8);
|
||||
}
|
||||
} else if (base_data.gesture_events_1.scroll) {
|
||||
pd_dprintf("IQS5XX - Scroll.\n");
|
||||
temp_report.h = CONSTRAIN_HID(AZOTEQ_IQS5XX_COMBINE_H_L_BYTES(base_data.x.h, base_data.x.l));
|
||||
temp_report.v = CONSTRAIN_HID(AZOTEQ_IQS5XX_COMBINE_H_L_BYTES(base_data.y.h, base_data.y.l));
|
||||
}
|
||||
if (base_data.number_of_fingers == 1 && !ignore_movement) {
|
||||
temp_report.x = CONSTRAIN_HID_XY(AZOTEQ_IQS5XX_COMBINE_H_L_BYTES(base_data.x.h, base_data.x.l));
|
||||
temp_report.y = CONSTRAIN_HID_XY(AZOTEQ_IQS5XX_COMBINE_H_L_BYTES(base_data.y.h, base_data.y.l));
|
||||
}
|
||||
|
||||
} else {
|
||||
pd_dprintf("IQS5XX - get report failed, i2c status: %d \n", status);
|
||||
if (base_data.previous_cycle_time > AZOTEQ_IQS5XX_REPORT_RATE) {
|
||||
pd_dprintf("IQS5XX - previous cycle time missed, took: %dms\n", base_data.previous_cycle_time);
|
||||
}
|
||||
#endif
|
||||
if (base_data.gesture_events_0.single_tap || base_data.gesture_events_0.press_and_hold) {
|
||||
pd_dprintf("IQS5XX - Single tap/hold.\n");
|
||||
temp_report.buttons = pointing_device_handle_buttons(temp_report.buttons, true, POINTING_DEVICE_BUTTON1);
|
||||
} else if (base_data.gesture_events_1.two_finger_tap) {
|
||||
pd_dprintf("IQS5XX - Two finger tap.\n");
|
||||
temp_report.buttons = pointing_device_handle_buttons(temp_report.buttons, true, POINTING_DEVICE_BUTTON2);
|
||||
} else if (base_data.gesture_events_0.swipe_x_neg) {
|
||||
pd_dprintf("IQS5XX - X-.\n");
|
||||
temp_report.buttons = pointing_device_handle_buttons(temp_report.buttons, true, POINTING_DEVICE_BUTTON4);
|
||||
ignore_movement = true;
|
||||
} else if (base_data.gesture_events_0.swipe_x_pos) {
|
||||
pd_dprintf("IQS5XX - X+.\n");
|
||||
temp_report.buttons = pointing_device_handle_buttons(temp_report.buttons, true, POINTING_DEVICE_BUTTON5);
|
||||
ignore_movement = true;
|
||||
} else if (base_data.gesture_events_0.swipe_y_neg) {
|
||||
pd_dprintf("IQS5XX - Y-.\n");
|
||||
temp_report.buttons = pointing_device_handle_buttons(temp_report.buttons, true, POINTING_DEVICE_BUTTON6);
|
||||
ignore_movement = true;
|
||||
} else if (base_data.gesture_events_0.swipe_y_pos) {
|
||||
pd_dprintf("IQS5XX - Y+.\n");
|
||||
temp_report.buttons = pointing_device_handle_buttons(temp_report.buttons, true, POINTING_DEVICE_BUTTON3);
|
||||
ignore_movement = true;
|
||||
} else if (base_data.gesture_events_1.zoom) {
|
||||
if (AZOTEQ_IQS5XX_COMBINE_H_L_BYTES(base_data.x.h, base_data.x.l) < 0) {
|
||||
pd_dprintf("IQS5XX - Zoom out.\n");
|
||||
temp_report.buttons = pointing_device_handle_buttons(temp_report.buttons, true, POINTING_DEVICE_BUTTON7);
|
||||
} else if (AZOTEQ_IQS5XX_COMBINE_H_L_BYTES(base_data.x.h, base_data.x.l) > 0) {
|
||||
pd_dprintf("IQS5XX - Zoom in.\n");
|
||||
temp_report.buttons = pointing_device_handle_buttons(temp_report.buttons, true, POINTING_DEVICE_BUTTON8);
|
||||
}
|
||||
} else if (base_data.gesture_events_1.scroll) {
|
||||
pd_dprintf("IQS5XX - Scroll.\n");
|
||||
temp_report.h = CONSTRAIN_HID(AZOTEQ_IQS5XX_COMBINE_H_L_BYTES(base_data.x.h, base_data.x.l));
|
||||
temp_report.v = CONSTRAIN_HID(AZOTEQ_IQS5XX_COMBINE_H_L_BYTES(base_data.y.h, base_data.y.l));
|
||||
}
|
||||
if (base_data.number_of_fingers == 1 && !ignore_movement) {
|
||||
temp_report.x = CONSTRAIN_HID_XY(AZOTEQ_IQS5XX_COMBINE_H_L_BYTES(base_data.x.h, base_data.x.l));
|
||||
temp_report.y = CONSTRAIN_HID_XY(AZOTEQ_IQS5XX_COMBINE_H_L_BYTES(base_data.y.h, base_data.y.l));
|
||||
}
|
||||
|
||||
} else {
|
||||
pd_dprintf("IQS5XX - Init failed, i2c status: %d \n", azoteq_iqs5xx_init_status);
|
||||
pd_dprintf("IQS5XX - get report failed, i2c status: %d \n", status);
|
||||
}
|
||||
|
||||
return temp_report;
|
||||
|
@@ -180,7 +180,7 @@ typedef struct {
|
||||
|
||||
const pointing_device_driver_t azoteq_iqs5xx_pointing_device_driver;
|
||||
|
||||
void azoteq_iqs5xx_init(void);
|
||||
bool azoteq_iqs5xx_init(void);
|
||||
i2c_status_t azoteq_iqs5xx_wake(void);
|
||||
report_mouse_t azoteq_iqs5xx_get_report(report_mouse_t mouse_report);
|
||||
i2c_status_t azoteq_iqs5xx_get_report_rate(azoteq_iqs5xx_report_rate_t *report_rate, azoteq_iqs5xx_charging_modes_t mode, bool end_session);
|
||||
|
@@ -18,7 +18,6 @@
|
||||
# endif
|
||||
#endif
|
||||
|
||||
bool touchpad_init;
|
||||
uint16_t scale_data = CIRQUE_PINNACLE_DEFAULT_SCALE;
|
||||
|
||||
void cirque_pinnacle_clear_flags(void);
|
||||
@@ -232,14 +231,14 @@ bool cirque_pinnacle_connected(void) {
|
||||
}
|
||||
|
||||
/* Pinnacle-based TM040040/TM035035/TM023023 Functions */
|
||||
void cirque_pinnacle_init(void) {
|
||||
bool cirque_pinnacle_init(void) {
|
||||
#if defined(POINTING_DEVICE_DRIVER_cirque_pinnacle_spi)
|
||||
spi_init();
|
||||
#elif defined(POINTING_DEVICE_DRIVER_cirque_pinnacle_i2c)
|
||||
i2c_init();
|
||||
#endif
|
||||
|
||||
touchpad_init = true;
|
||||
bool touchpad_init = true;
|
||||
|
||||
// send a RESET command now, in case QMK had a soft-reset without a power cycle
|
||||
RAP_Write(HOSTREG__SYSCONFIG1, HOSTREG__SYSCONFIG1__RESET);
|
||||
@@ -293,6 +292,8 @@ void cirque_pinnacle_init(void) {
|
||||
#ifndef CIRQUE_PINNACLE_SKIP_SENSOR_CHECK
|
||||
touchpad_init = cirque_pinnacle_connected();
|
||||
#endif
|
||||
|
||||
return touchpad_init;
|
||||
}
|
||||
|
||||
pinnacle_data_t cirque_pinnacle_read_data(void) {
|
||||
|
@@ -114,7 +114,7 @@ typedef struct {
|
||||
#define cirque_pinnacle_spi_pointing_device_driver cirque_pinnacle_pointing_device_driver
|
||||
const pointing_device_driver_t cirque_pinnacle_pointing_device_driver;
|
||||
|
||||
void cirque_pinnacle_init(void);
|
||||
bool cirque_pinnacle_init(void);
|
||||
void cirque_pinnacle_calibrate(void);
|
||||
void cirque_pinnacle_cursor_smoothing(bool enable);
|
||||
pinnacle_data_t cirque_pinnacle_read_data(void);
|
||||
|
@@ -7,29 +7,22 @@
|
||||
#define WRITE_MASK 0x80
|
||||
#define READ_MASK 0xA0
|
||||
|
||||
extern bool touchpad_init;
|
||||
|
||||
/* RAP Functions */
|
||||
// Reads <count> Pinnacle registers starting at <address>
|
||||
void RAP_ReadBytes(uint8_t address, uint8_t* data, uint8_t count) {
|
||||
uint8_t cmdByte = READ_MASK | address; // Form the READ command byte
|
||||
if (touchpad_init) {
|
||||
i2c_write_register(CIRQUE_PINNACLE_ADDR << 1, cmdByte, NULL, 0, CIRQUE_PINNACLE_TIMEOUT);
|
||||
if (i2c_read_register(CIRQUE_PINNACLE_ADDR << 1, cmdByte, data, count, CIRQUE_PINNACLE_TIMEOUT) != I2C_STATUS_SUCCESS) {
|
||||
pd_dprintf("error cirque_pinnacle i2c_read_register\n");
|
||||
touchpad_init = false;
|
||||
}
|
||||
i2c_write_register(CIRQUE_PINNACLE_ADDR << 1, cmdByte, NULL, 0, CIRQUE_PINNACLE_TIMEOUT);
|
||||
if (i2c_read_register(CIRQUE_PINNACLE_ADDR << 1, cmdByte, data, count, CIRQUE_PINNACLE_TIMEOUT) != I2C_STATUS_SUCCESS) {
|
||||
pd_dprintf("error cirque_pinnacle i2c_read_register\n");
|
||||
pointing_device_set_status(POINTING_DEVICE_STATUS_FAILED);
|
||||
}
|
||||
}
|
||||
|
||||
// Writes single-byte <data> to <address>
|
||||
void RAP_Write(uint8_t address, uint8_t data) {
|
||||
uint8_t cmdByte = WRITE_MASK | address; // Form the WRITE command byte
|
||||
|
||||
if (touchpad_init) {
|
||||
if (i2c_write_register(CIRQUE_PINNACLE_ADDR << 1, cmdByte, &data, sizeof(data), CIRQUE_PINNACLE_TIMEOUT) != I2C_STATUS_SUCCESS) {
|
||||
pd_dprintf("error cirque_pinnacle i2c_write_register\n");
|
||||
touchpad_init = false;
|
||||
}
|
||||
if (i2c_write_register(CIRQUE_PINNACLE_ADDR << 1, cmdByte, &data, sizeof(data), CIRQUE_PINNACLE_TIMEOUT) != I2C_STATUS_SUCCESS) {
|
||||
pd_dprintf("error cirque_pinnacle i2c_write_register\n");
|
||||
pointing_device_set_status(POINTING_DEVICE_STATUS_FAILED);
|
||||
}
|
||||
}
|
||||
|
@@ -7,40 +7,35 @@
|
||||
#define READ_MASK 0xA0
|
||||
#define FILLER_BYTE 0xFC
|
||||
|
||||
extern bool touchpad_init;
|
||||
|
||||
/* RAP Functions */
|
||||
// Reads <count> Pinnacle registers starting at <address>
|
||||
void RAP_ReadBytes(uint8_t address, uint8_t* data, uint8_t count) {
|
||||
uint8_t cmdByte = READ_MASK | address; // Form the READ command byte
|
||||
if (touchpad_init) {
|
||||
if (spi_start(CIRQUE_PINNACLE_SPI_CS_PIN, CIRQUE_PINNACLE_SPI_LSBFIRST, CIRQUE_PINNACLE_SPI_MODE, CIRQUE_PINNACLE_SPI_DIVISOR)) {
|
||||
spi_write(cmdByte); // write command byte, receive filler
|
||||
spi_write(FILLER_BYTE); // write & receive filler
|
||||
spi_write(FILLER_BYTE); // write & receive filler
|
||||
for (uint8_t i = 0; i < count; i++) {
|
||||
data[i] = spi_write(FILLER_BYTE); // write filler, receive data on the third filler send
|
||||
}
|
||||
} else {
|
||||
pd_dprintf("error cirque_pinnacle spi_start read\n");
|
||||
touchpad_init = false;
|
||||
|
||||
if (spi_start(CIRQUE_PINNACLE_SPI_CS_PIN, CIRQUE_PINNACLE_SPI_LSBFIRST, CIRQUE_PINNACLE_SPI_MODE, CIRQUE_PINNACLE_SPI_DIVISOR)) {
|
||||
spi_write(cmdByte); // write command byte, receive filler
|
||||
spi_write(FILLER_BYTE); // write & receive filler
|
||||
spi_write(FILLER_BYTE); // write & receive filler
|
||||
for (uint8_t i = 0; i < count; i++) {
|
||||
data[i] = spi_write(FILLER_BYTE); // write filler, receive data on the third filler send
|
||||
}
|
||||
spi_stop();
|
||||
} else {
|
||||
pd_dprintf("error cirque_pinnacle spi_start read\n");
|
||||
pointing_device_set_status(POINTING_DEVICE_STATUS_FAILED);
|
||||
}
|
||||
spi_stop();
|
||||
}
|
||||
|
||||
// Writes single-byte <data> to <address>
|
||||
void RAP_Write(uint8_t address, uint8_t data) {
|
||||
uint8_t cmdByte = WRITE_MASK | address; // Form the WRITE command byte
|
||||
|
||||
if (touchpad_init) {
|
||||
if (spi_start(CIRQUE_PINNACLE_SPI_CS_PIN, CIRQUE_PINNACLE_SPI_LSBFIRST, CIRQUE_PINNACLE_SPI_MODE, CIRQUE_PINNACLE_SPI_DIVISOR)) {
|
||||
spi_write(cmdByte);
|
||||
spi_write(data);
|
||||
} else {
|
||||
pd_dprintf("error cirque_pinnacle spi_start write\n");
|
||||
touchpad_init = false;
|
||||
}
|
||||
spi_stop();
|
||||
if (spi_start(CIRQUE_PINNACLE_SPI_CS_PIN, CIRQUE_PINNACLE_SPI_LSBFIRST, CIRQUE_PINNACLE_SPI_MODE, CIRQUE_PINNACLE_SPI_DIVISOR)) {
|
||||
spi_write(cmdByte);
|
||||
spi_write(data);
|
||||
} else {
|
||||
pd_dprintf("error cirque_pinnacle spi_start write\n");
|
||||
pointing_device_set_status(POINTING_DEVICE_STATUS_FAILED);
|
||||
}
|
||||
spi_stop();
|
||||
}
|
||||
|
@@ -58,7 +58,15 @@ const pointing_device_driver_t paw3204_pointing_device_driver = {
|
||||
.get_cpi = paw3204_get_cpi,
|
||||
};
|
||||
|
||||
void paw3204_init(void) {
|
||||
uint8_t read_pid_paw3204(void) {
|
||||
return paw3204_read_reg(REG_PID1);
|
||||
}
|
||||
|
||||
bool __attribute__((weak)) paw3204_check_signature(void) {
|
||||
return (read_pid_paw3204() == 0x30);
|
||||
}
|
||||
|
||||
bool paw3204_init(void) {
|
||||
gpio_set_pin_output(PAW3204_SCLK_PIN); // setclockpin to output
|
||||
gpio_set_pin_input_high(PAW3204_SDIO_PIN); // set datapin input high
|
||||
|
||||
@@ -69,6 +77,8 @@ void paw3204_init(void) {
|
||||
paw3204_read_reg(0x01); // read id2
|
||||
// PAW3204_write_reg(REG_SETUP,0x06); // dont reset sensor and set cpi 1600
|
||||
paw3204_write_reg(REG_IMGTRASH, 0x32); // write image trashhold
|
||||
|
||||
return paw3204_check_signature();
|
||||
}
|
||||
|
||||
uint8_t paw3204_serial_read(void) {
|
||||
@@ -175,10 +185,6 @@ uint16_t paw3204_get_cpi(void) {
|
||||
return cpival;
|
||||
}
|
||||
|
||||
uint8_t read_pid_paw3204(void) {
|
||||
return paw3204_read_reg(REG_PID1);
|
||||
}
|
||||
|
||||
report_mouse_t paw3204_get_report(report_mouse_t mouse_report) {
|
||||
report_paw3204_t data = paw3204_read();
|
||||
if (data.isMotion) {
|
||||
|
@@ -50,7 +50,7 @@ const pointing_device_driver_t paw3204_pointing_device_driver;
|
||||
* @return true Initialization was a success
|
||||
* @return false Initialization failed, do not proceed operation
|
||||
*/
|
||||
void paw3204_init(void);
|
||||
bool paw3204_init(void);
|
||||
|
||||
/**
|
||||
* @brief Reads and clears the current delta, and motion register values on the
|
||||
|
@@ -82,9 +82,12 @@ i2c_status_t read_pimoroni_trackball(pimoroni_data_t *data) {
|
||||
return status;
|
||||
}
|
||||
|
||||
__attribute__((weak)) void pimoroni_trackball_device_init(void) {
|
||||
__attribute__((weak)) bool pimoroni_trackball_device_init(void) {
|
||||
i2c_init();
|
||||
pimoroni_trackball_set_rgbw(0x00, 0x00, 0x00, 0x00);
|
||||
uint8_t rgbw_data[4] = {0};
|
||||
i2c_status_t status = i2c_write_register(PIMORONI_TRACKBALL_ADDRESS << 1, PIMORONI_TRACKBALL_REG_LED_RED, rgbw_data, sizeof(rgbw_data), PIMORONI_TRACKBALL_TIMEOUT);
|
||||
|
||||
return (status == I2C_STATUS_SUCCESS);
|
||||
}
|
||||
|
||||
int16_t pimoroni_trackball_get_offsets(uint8_t negative_dir, uint8_t positive_dir, uint8_t scale) {
|
||||
|
@@ -52,7 +52,7 @@ typedef struct {
|
||||
|
||||
const pointing_device_driver_t pimoroni_trackball_pointing_device_driver;
|
||||
|
||||
void pimoroni_trackball_device_init(void);
|
||||
bool pimoroni_trackball_device_init(void);
|
||||
void pimoroni_trackball_set_rgbw(uint8_t red, uint8_t green, uint8_t blue, uint8_t white);
|
||||
int16_t pimoroni_trackball_get_offsets(uint8_t negative_dir, uint8_t positive_dir, uint8_t scale);
|
||||
uint16_t pimoroni_trackball_get_cpi(void);
|
||||
|
@@ -30,7 +30,7 @@ const pointing_device_driver_t pmw3320_pointing_device_drivera = {
|
||||
.get_cpi = pmw3320_get_cpi,
|
||||
};
|
||||
|
||||
void pmw3320_init(void) {
|
||||
bool pmw3320_init(void) {
|
||||
// Initialize sensor serial pins.
|
||||
gpio_set_pin_output(PMW3320_SCLK_PIN);
|
||||
gpio_set_pin_output(PMW3320_SDIO_PIN);
|
||||
@@ -56,6 +56,8 @@ void pmw3320_init(void) {
|
||||
pmw3320_write_reg(REG_Led_Control, 0x4);
|
||||
// Disable rest mode
|
||||
pmw3320_write_reg(REG_Performance, 0x80);
|
||||
|
||||
return pmw3320_check_signature();
|
||||
}
|
||||
|
||||
// Perform a synchronization with sensor.
|
||||
@@ -192,7 +194,7 @@ void pmw3320_set_cpi(uint16_t cpi) {
|
||||
pmw3320_write_reg(REG_Resolution, 0x20 | cpival);
|
||||
}
|
||||
|
||||
bool pmw3320_check_signature(void) {
|
||||
bool __attribute__((weak)) pmw3320_check_signature(void) {
|
||||
uint8_t pid = pmw3320_read_reg(REG_Product_ID);
|
||||
uint8_t pid2 = pmw3320_read_reg(REG_Inverse_Product_ID);
|
||||
|
||||
|
@@ -61,7 +61,7 @@ const pointing_device_driver_t pmw3320_pointing_device_driver;
|
||||
// Mostly taken from ADNS5050 driver.
|
||||
// Note that the "serial.h" driver is insufficient, because it does not
|
||||
// manually manipulate a serial clock signal.
|
||||
void pmw3320_init(void);
|
||||
bool pmw3320_init(void);
|
||||
void pmw3320_sync(void);
|
||||
uint8_t pmw3320_serial_read(void);
|
||||
void pmw3320_serial_write(uint8_t data);
|
||||
|
@@ -29,4 +29,4 @@ void pmw33xx_set_cpi(uint8_t sensor, uint16_t cpi) {
|
||||
}
|
||||
|
||||
// PID, Inverse PID
|
||||
const uint8_t pmw33xx_firmware_signature[2] PROGMEM = {0x42, 0xBD};
|
||||
const uint8_t pmw33xx_firmware_signature[2] PROGMEM = {0x47, 0xB8};
|
||||
|
@@ -102,7 +102,7 @@ uint8_t pmw33xx_read(uint8_t sensor, uint8_t reg_addr) {
|
||||
return data;
|
||||
}
|
||||
|
||||
bool pmw33xx_check_signature(uint8_t sensor) {
|
||||
__attribute__((weak)) bool pmw33xx_check_signature(uint8_t sensor) {
|
||||
uint8_t signature_dump[2] = {
|
||||
pmw33xx_read(sensor, REG_Product_ID),
|
||||
pmw33xx_read(sensor, REG_Inverse_Product_ID),
|
||||
@@ -236,8 +236,8 @@ pmw33xx_report_t pmw33xx_read_burst(uint8_t sensor) {
|
||||
return report;
|
||||
}
|
||||
|
||||
void pmw33xx_init_wrapper(void) {
|
||||
pmw33xx_init(0);
|
||||
bool pmw33xx_init_wrapper(void) {
|
||||
return pmw33xx_init(0);
|
||||
}
|
||||
|
||||
void pmw33xx_set_cpi_wrapper(uint16_t cpi) {
|
||||
|
@@ -177,7 +177,7 @@ uint8_t pmw33xx_read(uint8_t sensor, uint8_t reg_addr);
|
||||
*/
|
||||
bool pmw33xx_write(uint8_t sensor, uint8_t reg_addr, uint8_t data);
|
||||
|
||||
void pmw33xx_init_wrapper(void);
|
||||
bool pmw33xx_init_wrapper(void);
|
||||
void pmw33xx_set_cpi_wrapper(uint16_t cpi);
|
||||
uint16_t pmw33xx_get_cpi_wrapper(void);
|
||||
report_mouse_t pmw33xx_get_report(report_mouse_t mouse_report);
|
||||
|
@@ -8,3 +8,4 @@
|
||||
#define I2C_DRIVER I2CD1
|
||||
#define OLED_BRIGHTNESS 128
|
||||
#define OLED_FONT_H "keyboards/1upkeyboards/pi50/lib/glcdfont.c"
|
||||
#define RGB_MATRIX_MODE_NAME_ENABLE
|
||||
|
@@ -18,49 +18,6 @@
|
||||
#include <ctype.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#if defined(RGB_MATRIX_EFFECT)
|
||||
# undef RGB_MATRIX_EFFECT
|
||||
#endif // defined(RGB_MATRIX_EFFECT)
|
||||
|
||||
#define RGB_MATRIX_EFFECT(x) RGB_MATRIX_EFFECT_##x,
|
||||
enum {
|
||||
RGB_MATRIX_EFFECT_NONE,
|
||||
#include "rgb_matrix_effects.inc"
|
||||
#undef RGB_MATRIX_EFFECT
|
||||
#ifdef RGB_MATRIX_CUSTOM_KB
|
||||
# include "rgb_matrix_kb.inc"
|
||||
#endif
|
||||
#ifdef RGB_MATRIX_CUSTOM_USER
|
||||
# include "rgb_matrix_user.inc"
|
||||
#endif
|
||||
#if defined(COMMUNITY_MODULES_ENABLE) && __has_include("rgb_matrix_community_modules.inc")
|
||||
# include "rgb_matrix_community_modules.inc"
|
||||
#endif
|
||||
};
|
||||
|
||||
#define RGB_MATRIX_EFFECT(x) \
|
||||
case RGB_MATRIX_EFFECT_##x: \
|
||||
return #x;
|
||||
const char* rgb_matrix_name(uint8_t effect) {
|
||||
switch (effect) {
|
||||
case RGB_MATRIX_EFFECT_NONE:
|
||||
return "NONE";
|
||||
#include "rgb_matrix_effects.inc"
|
||||
#undef RGB_MATRIX_EFFECT
|
||||
#ifdef RGB_MATRIX_CUSTOM_KB
|
||||
# include "rgb_matrix_kb.inc"
|
||||
#endif
|
||||
#ifdef RGB_MATRIX_CUSTOM_USER
|
||||
# include "rgb_matrix_user.inc"
|
||||
#endif
|
||||
#if defined(COMMUNITY_MODULES_ENABLE) && __has_include("rgb_matrix_community_modules.inc")
|
||||
# include "rgb_matrix_community_modules.inc"
|
||||
#endif
|
||||
default:
|
||||
return "UNKNOWN";
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef OLED_ENABLE
|
||||
|
||||
static uint32_t oled_logo_timer = 0;
|
||||
@@ -154,7 +111,7 @@ void user_oled_magic(void) {
|
||||
oled_write_P(led_state.num_lock ? PSTR("Num(x) ") : PSTR("Num( ) "), false);
|
||||
oled_write_P(led_state.scroll_lock ? PSTR("Scrl(x)") : PSTR("Scrl( )"), false);
|
||||
|
||||
char *mode_name = strdup(rgb_matrix_name(rgb_matrix_get_mode()));
|
||||
char *mode_name = strdup(rgb_matrix_get_mode_name(rgb_matrix_get_mode()));
|
||||
if (mode_name != NULL) {
|
||||
int len = strlen(mode_name);
|
||||
bool capitalize_next = true;
|
||||
|
@@ -5,5 +5,3 @@ VPATH += keyboards/cannonkeys/lib/satisfaction75
|
||||
SRC += satisfaction_encoder.c \
|
||||
satisfaction_oled.c \
|
||||
satisfaction_core.c
|
||||
|
||||
DEFAULT_FOLDER = cannonkeys/satisfaction75/rev1
|
@@ -3,5 +3,3 @@ CUSTOM_MATRIX = yes
|
||||
SRC += matrix.c adb.c led.c
|
||||
|
||||
# OPT_DEFS += -DADB_MOUSE_ENABLE -DMOUSE_ENABLE
|
||||
|
||||
DEFAULT_FOLDER = converter/adb_usb/rev1
|
||||
|
@@ -3,5 +3,3 @@ CUSTOM_MATRIX = yes
|
||||
|
||||
SRC += matrix.c led.c
|
||||
UART_DRIVER_REQUIRED = yes
|
||||
|
||||
DEFAULT_FOLDER = converter/sun_usb/type5
|
||||
|
@@ -1,5 +1,3 @@
|
||||
CUSTOM_MATRIX = yes
|
||||
|
||||
SRC += custom_matrix.cpp
|
||||
|
||||
DEFAULT_FOLDER = converter/usb_usb/hasu
|
||||
|
@@ -18,6 +18,5 @@
|
||||
"rows": ["E6", "D7", "C6", "D4", "F7", "F6", "F5", "F4"]
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina"
|
||||
"development_board": "promicro"
|
||||
}
|
||||
|
@@ -18,8 +18,7 @@
|
||||
"pin": "D2"
|
||||
}
|
||||
},
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"features": {
|
||||
"bootmagic": false,
|
||||
"mousekey": false,
|
||||
|
@@ -12,8 +12,7 @@
|
||||
"rows": ["B5", "B4"]
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"mousekey": true,
|
||||
|
@@ -18,8 +18,7 @@
|
||||
"pin": "D2"
|
||||
}
|
||||
},
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"mousekey": true,
|
||||
|
@@ -18,8 +18,7 @@
|
||||
"pin": "D2"
|
||||
}
|
||||
},
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"mousekey": true,
|
||||
|
@@ -18,8 +18,7 @@
|
||||
"pin": "D2"
|
||||
}
|
||||
},
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"mousekey": true,
|
||||
|
@@ -24,8 +24,7 @@
|
||||
{ "pin_a": "B6", "pin_b": "B2" }
|
||||
]
|
||||
},
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"encoder": true,
|
||||
|
@@ -46,8 +46,7 @@
|
||||
"rows": ["F6", "B1", "B3", "B2", "B6"]
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"layouts": {
|
||||
"LAYOUT_ortho_5x12": {
|
||||
"layout": [
|
||||
|
@@ -25,8 +25,7 @@
|
||||
"rows": ["F6", "F7", "B3", "B2", "B6"]
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"layouts": {
|
||||
"LAYOUT_ortho_5x12": {
|
||||
"layout": [
|
||||
|
@@ -25,8 +25,7 @@
|
||||
"rows": ["D3", "D2", "D1", "D0", "B2", "B6"]
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"layouts": {
|
||||
"LAYOUT_ss_6x12": {
|
||||
"layout": [
|
||||
|
@@ -24,8 +24,7 @@
|
||||
"ws2812": {
|
||||
"pin": "D3"
|
||||
},
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"features": {
|
||||
"bootmagic": false,
|
||||
"mousekey": true,
|
||||
|
@@ -25,8 +25,7 @@
|
||||
"ws2812": {
|
||||
"pin": "B6"
|
||||
},
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"mousekey": true,
|
||||
|
@@ -37,8 +37,7 @@
|
||||
"ws2812": {
|
||||
"pin": "D3"
|
||||
},
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
|
@@ -40,8 +40,7 @@
|
||||
"bootmagic": {
|
||||
"matrix": [0, 1]
|
||||
},
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
|
@@ -48,8 +48,7 @@
|
||||
"pin": "D2"
|
||||
}
|
||||
},
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"features": {
|
||||
"bootmagic": false,
|
||||
"mousekey": true,
|
||||
|
@@ -31,8 +31,7 @@
|
||||
{"pin_a": "F4", "pin_b": "F5"}
|
||||
]
|
||||
},
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"layouts": {
|
||||
"LAYOUT_625uC": {
|
||||
"layout": [
|
||||
|
@@ -25,8 +25,7 @@
|
||||
"rows": ["B1", "B3", "B2", "B5"]
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
|
@@ -25,6 +25,5 @@
|
||||
"rows": ["F6", "B6", "B2"]
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina"
|
||||
"development_board": "promicro"
|
||||
}
|
||||
|
@@ -31,8 +31,7 @@
|
||||
{"pin_a": "F5", "pin_b": "F4"}
|
||||
]
|
||||
},
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"layouts": {
|
||||
"LAYOUT_3uc": {
|
||||
"layout": [
|
||||
|
@@ -32,8 +32,7 @@
|
||||
"pin": "D2"
|
||||
}
|
||||
},
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"features": {
|
||||
"bootmagic": false,
|
||||
"mousekey": true,
|
||||
|
@@ -15,8 +15,7 @@
|
||||
"bootmagic": {
|
||||
"matrix": [3, 0]
|
||||
},
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"mousekey": true,
|
||||
|
@@ -16,8 +16,7 @@
|
||||
"bootmagic": {
|
||||
"matrix": [3, 0]
|
||||
},
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"mousekey": true,
|
||||
|
@@ -15,8 +15,7 @@
|
||||
"bootmagic": {
|
||||
"matrix": [3, 4]
|
||||
},
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"mousekey": true,
|
||||
|
@@ -15,8 +15,7 @@
|
||||
"bootmagic": {
|
||||
"matrix": [3, 0]
|
||||
},
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"mousekey": true,
|
||||
|
@@ -16,8 +16,7 @@
|
||||
"bootmagic": {
|
||||
"matrix": [3, 0]
|
||||
},
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"mousekey": true,
|
||||
|
@@ -13,8 +13,7 @@
|
||||
{"pin_a": "E6", "pin_b": "D7"}
|
||||
]
|
||||
},
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"features": {
|
||||
"bootmagic": false,
|
||||
"mousekey": false,
|
||||
|
@@ -15,8 +15,7 @@
|
||||
"bootmagic": {
|
||||
"matrix": [3, 4]
|
||||
},
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"mousekey": true,
|
||||
|
@@ -55,8 +55,7 @@
|
||||
"ws2812": {
|
||||
"pin": "D1"
|
||||
},
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"mousekey": false,
|
||||
|
@@ -1,4 +1,2 @@
|
||||
# Do not put the microcontroller into power saving mode
|
||||
NO_SUSPEND_POWER_DOWN = yes
|
||||
|
||||
DEFAULT_FOLDER=durgod/dgk6x/hades_ansi
|
||||
|
@@ -25,8 +25,7 @@
|
||||
"rows": ["D4", "C6", "D7", "E6"]
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
|
@@ -6,8 +6,7 @@
|
||||
"vid": "0x1337",
|
||||
"pid": "0x6006"
|
||||
},
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"qmk": {
|
||||
"locking": {
|
||||
"enabled": true,
|
||||
|
@@ -54,8 +54,7 @@
|
||||
"ws2812": {
|
||||
"pin": "D3"
|
||||
},
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"mousekey": false,
|
||||
|
@@ -19,8 +19,7 @@
|
||||
"rows": ["B4", "B5", "B2", "B6"]
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
|
@@ -18,8 +18,7 @@
|
||||
"rows": ["B6", "B2", "B3", "B1"]
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
|
@@ -14,5 +14,3 @@ AUDIO_SUPPORTED = no
|
||||
BACKLIGHT_SUPPORTED = no
|
||||
|
||||
MOUSE_SHARED_EP = no
|
||||
|
||||
DEFAULT_FOLDER = ergodox_ez/base
|
||||
|
@@ -25,8 +25,7 @@
|
||||
"ws2812": {
|
||||
"pin": "D3"
|
||||
},
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"features": {
|
||||
"bootmagic": false,
|
||||
"mousekey": true,
|
||||
|
@@ -25,8 +25,7 @@
|
||||
"ws2812": {
|
||||
"pin": "D3"
|
||||
},
|
||||
"bootloader": "caterina",
|
||||
"processor": "atmega32u4",
|
||||
"development_board": "promicro",
|
||||
"features": {
|
||||
"bootmagic": false,
|
||||
"mousekey": true,
|
||||
|
@@ -21,8 +21,7 @@
|
||||
"rows": ["D1", "D0", "D4", "C6", "D7"]
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
|
@@ -21,8 +21,7 @@
|
||||
"rows": ["D0", "D1"]
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"layouts": {
|
||||
"LAYOUT_ortho_2x5": {
|
||||
"layout": [
|
||||
|
@@ -2,5 +2,3 @@ CUSTOM_MATRIX = lite
|
||||
|
||||
SRC += matrix.c
|
||||
I2C_DRIVER_REQUIRED = yes
|
||||
|
||||
DEFAULT_FOLDER = ferris/0_2/base
|
||||
|
@@ -54,8 +54,7 @@
|
||||
"ws2812": {
|
||||
"pin": "D4"
|
||||
},
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"layout_aliases": {
|
||||
"LAYOUT": "LAYOUT_all"
|
||||
},
|
||||
|
@@ -24,8 +24,7 @@
|
||||
"rows": ["F6", "B5", "B4", "E6", "F7"]
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"layout_aliases": {
|
||||
"LAYOUT_numbrero_numpad": "LAYOUT_numpad",
|
||||
"LAYOUT_numbrero_ortho": "LAYOUT_ortho"
|
||||
|
@@ -24,8 +24,7 @@
|
||||
"rows": ["D1", "D0", "D4", "C6", "D7"]
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"community_layouts": ["ortho_5x4", "numpad_5x4"],
|
||||
"layouts": {
|
||||
"LAYOUT_ortho_5x4": {
|
||||
|
@@ -24,8 +24,7 @@
|
||||
"rows": ["D1", "C6", "D4", "D0"]
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"community_layouts": ["ortho_4x4"],
|
||||
"layout_aliases": {
|
||||
"LAYOUT_tradestation": "LAYOUT_4x2u"
|
||||
|
@@ -26,8 +26,7 @@
|
||||
"rows": ["D4", "D7", "E6", "B4", "B5"]
|
||||
},
|
||||
"diode_direction": "ROW2COL",
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"layouts": {
|
||||
"LAYOUT_split_4x5_3": {
|
||||
"layout": [
|
||||
|
@@ -25,8 +25,7 @@
|
||||
"rows": ["D3", "D2", "D1", "D0", "D4", "C6", "D7", "E6", "B4"]
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
|
@@ -19,8 +19,7 @@
|
||||
"rows": ["D3", "D2", "D1", "D0", "D4", "C6", "D7"]
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"community_layouts": [
|
||||
"60_hhkb"
|
||||
],
|
||||
|
@@ -13,8 +13,7 @@
|
||||
"rows": ["B1", "F7", "F6", "F5", "F4"]
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"mousekey": true,
|
||||
|
@@ -19,8 +19,7 @@
|
||||
"rows": ["F4", "F5", "F6", "F7"]
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
|
@@ -40,8 +40,7 @@
|
||||
"resync": true
|
||||
}
|
||||
},
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"debounce": 3,
|
||||
"tapping": {
|
||||
"toggle": 3
|
||||
|
@@ -24,8 +24,7 @@
|
||||
"rows": ["D4", "C6", "B4", "B5"]
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
|
@@ -8,8 +8,7 @@
|
||||
"pid": "0xE8D1",
|
||||
"device_version": "0.0.1"
|
||||
},
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"mousekey": true,
|
||||
|
@@ -26,8 +26,7 @@
|
||||
"ws2812": {
|
||||
"pin": "D3"
|
||||
},
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"mousekey": true,
|
||||
|
@@ -31,8 +31,7 @@
|
||||
{"pin_a": "D7", "pin_b": "E6", "resolution": 3}
|
||||
]
|
||||
},
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"mousekey": true,
|
||||
|
@@ -19,8 +19,7 @@
|
||||
"rows": ["D1", "D0", "D4"]
|
||||
},
|
||||
"diode_direction": "ROW2COL",
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"layouts": {
|
||||
"LAYOUT_ortho_3x3": {
|
||||
"layout": [
|
||||
|
@@ -29,8 +29,7 @@
|
||||
"ws2812": {
|
||||
"pin": "D3"
|
||||
},
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"features": {
|
||||
"bootmagic": false,
|
||||
"mousekey": false,
|
||||
|
@@ -7,5 +7,3 @@ CUSTOM_MATRIX = lite
|
||||
|
||||
I2C_DRIVER_REQUIRED = yes
|
||||
SRC += matrix.c
|
||||
|
||||
DEFAULT_FOLDER = handwired/dygma/raise/ansi
|
||||
|
@@ -8,7 +8,8 @@
|
||||
"bootmagic": true,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true
|
||||
"nkro": true,
|
||||
"encoder" : true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["GP0", "GP1", "GP2", "GP3", "GP4", "GP5", "GP6"],
|
||||
@@ -20,6 +21,13 @@
|
||||
"pid": "0x0004",
|
||||
"vid": "0x5757"
|
||||
},
|
||||
"encoder": {
|
||||
"rotary": [
|
||||
{"pin_a": "GP16", "pin_b": "GP17"},
|
||||
{"pin_a": "GP18", "pin_b": "GP19"},
|
||||
{"pin_a": "GP20", "pin_b": "GP21"}
|
||||
]
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
|
@@ -3,11 +3,17 @@
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT(
|
||||
KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
|
||||
KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17,
|
||||
KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24
|
||||
)
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
#if defined(ENCODER_MAP_ENABLE)
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
||||
[0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||
};
|
||||
#endif
|
||||
|
1
keyboards/handwired/wwa/soyuz/keymaps/default/rules.mk
Normal file
1
keyboards/handwired/wwa/soyuz/keymaps/default/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
ENCODER_MAP_ENABLE = yes
|
@@ -2,7 +2,7 @@
|
||||
|
||||

|
||||
|
||||
21 Key and 3 MIDI Potentiometers Macro Keyboard
|
||||
21 Key, 3 Encoder
|
||||
|
||||
* Keyboard Maintainer: [spacehangover](https://github.com/spacehangover)
|
||||
* Hardware Supported: RP2040 Handwired
|
||||
|
@@ -3,5 +3,3 @@ LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.)
|
||||
LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
|
||||
LED_ANIMATIONS = yes # LED animations
|
||||
IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
|
||||
|
||||
DEFAULT_FOLDER = helix/pico/base
|
||||
|
@@ -7,5 +7,3 @@ LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.)
|
||||
LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
|
||||
LED_ANIMATIONS = yes # LED animations
|
||||
IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
|
||||
|
||||
DEFAULT_FOLDER = helix/rev2/base
|
||||
|
@@ -1,3 +1 @@
|
||||
DEFAULT_FOLDER = helix/rev2
|
||||
|
||||
HELIX_TOP_DIR := $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LIST))))
|
||||
|
@@ -39,8 +39,7 @@
|
||||
"ws2812": {
|
||||
"pin": "D3"
|
||||
},
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "caterina",
|
||||
"development_board": "promicro",
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user