Compare commits

...

73 Commits

Author SHA1 Message Date
QMK Bot
ea5ef746e2 Merge remote-tracking branch 'origin/master' into develop 2025-06-23 22:02:32 +00:00
Andrew Litt
de5fd5d4e2 Orient side LEDs on GMMK2 65% ANSI to match the rest of the matrix (#25402)
Orient side LEDs on GMMK2 65% to match the rest of the matrix

On GMMK2 P65 ANSI, the side LEDs were mapped to the wrong sides
of the keyboard resulting in effects not being consistent with
the key surface. This was most jarring in effects like pinwheel
where the pattern involves the side LEDs and there is a distinctly
different flow on the left and right halves of the board.

This PR swaps the side LEDs in the map so that they are correctly
oriented. Applied to both ANSI and ISO variants.
2025-06-23 16:01:56 -06:00
QMK Bot
8c8f4b3c06 Merge remote-tracking branch 'origin/master' into develop 2025-06-23 09:19:23 +00:00
Andrew Litt
f5b02fbc11 Fix inverted encoder on Inland KB83 (#25400) 2025-06-23 10:18:48 +01:00
QMK Bot
55e1acec07 Merge remote-tracking branch 'origin/master' into develop 2025-06-22 07:12:29 +00:00
Ryan
611460c9db ymdk/id75: fix keymap (#25396) 2025-06-22 17:11:53 +10:00
QMK Bot
584e390703 Merge remote-tracking branch 'origin/master' into develop 2025-06-22 02:34:26 +00:00
Ryan
1ac255fd1c [docs] Change GUI key references to "Meta" -> "Super" (#25394) 2025-06-22 12:33:53 +10:00
QMK Bot
2c152c3425 Merge remote-tracking branch 'origin/master' into develop 2025-06-21 11:32:22 +00:00
YodaDistro
664c0bc4c3 Add YodaDistro Macropad (#25174)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com>
2025-06-21 12:31:49 +01:00
QMK Bot
8a06238054 Merge remote-tracking branch 'origin/master' into develop 2025-06-19 21:25:05 +00:00
ClownFish
6626084cb8 fix incorrect damapad layout macros (#25364) 2025-06-19 22:24:37 +01:00
Marius
bb27c69675 Applied usb detection fixes from Squalius-cephalus (#25380)
Co-authored-by: Dr. Marius Feilhauer <software@feilhauer.de>
2025-06-19 22:23:53 +01:00
QMK Bot
25d7ac9ecc Merge remote-tracking branch 'origin/master' into develop 2025-06-19 21:16:27 +00:00
Christoffer Larsen
03a53e29af Fix Enter key matrix coordinates for smk65/revf ISO layout (#25373) 2025-06-19 22:15:54 +01:00
QMK Bot
681d6a29e6 Merge remote-tracking branch 'origin/master' into develop 2025-06-18 09:45:23 +00:00
Xelus22
096696d86d [Bug] Fix usb_endpoint_interface_lut multiple def compile err (#25378) 2025-06-18 10:44:49 +01:00
Joel Challis
d044a6bcc2 Configure boards to use development_board - DE (#25369) 2025-06-17 04:23:33 +01:00
Joel Challis
091eac1fce Configure boards to use development_board - FGHIJ (#25370) 2025-06-17 04:23:22 +01:00
QMK Bot
02bed7e5a5 Merge remote-tracking branch 'origin/master' into develop 2025-06-15 01:56:45 +00:00
Nick Brassel
7f9ceef3dd More compiledb fixes. (#25355) 2025-06-15 11:56:10 +10:00
Dasky
7919848324 Add core handling for pointing device failures. (#25315) 2025-06-14 13:55:35 +01:00
QMK Bot
a4436b32df Merge remote-tracking branch 'origin/master' into develop 2025-06-14 03:12:31 +00:00
luroc
7ecdb57414 [Docs] Fix example code on key_overrides.md (#25367)
The description of the code snippet says right alt, but the snippet itself contained the right control keycode
2025-06-13 21:11:58 -06:00
QMK Bot
0f9c1c57b4 Merge remote-tracking branch 'origin/master' into develop 2025-06-12 23:40:58 +00:00
Álvaro A. Volpato
dcdd037276 Add support for Protagonist PCBs (#22918) 2025-06-13 00:40:25 +01:00
QMK Bot
e725cdbc4b Merge remote-tracking branch 'origin/master' into develop 2025-06-12 12:43:50 +00:00
ClownFish
8ae01715d6 fix winry25tc lightsout keymap (#25353) 2025-06-12 13:43:15 +01:00
QMK Bot
9ef5dcd113 Merge remote-tracking branch 'origin/master' into develop 2025-06-12 12:31:42 +00:00
oxnh
f4aa8ae845 Add keyboard Lily58 Koca (#24847)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Dasky <32983009+daskygit@users.noreply.github.com>
2025-06-12 13:31:05 +01:00
QMK Bot
ef6e9a5312 Merge remote-tracking branch 'origin/master' into develop 2025-06-11 04:30:11 +00:00
Nick Brassel
0516cf5ed8 Specify language standard when generating compilation database. (#25354) 2025-06-11 14:29:37 +10:00
Joel Challis
5bdeb7dad1 Migrate remaining DEFAULT_FOLDER to keyboard aliases (#25291) 2025-06-10 22:20:34 +01:00
ClownFish
8347a6688f update winry25 VID and PID (#25351) 2025-06-10 21:21:00 +01:00
QMK Bot
3ce196ff52 Merge remote-tracking branch 'origin/master' into develop 2025-06-09 18:36:25 +00:00
Pablo Martínez
802a199bbd [Bugfix] User eeconfig utility macros (#25350) 2025-06-09 19:35:48 +01:00
Joel Challis
0326355edc Remove DEFAULT_FOLDER handling (#23281) 2025-06-09 05:08:56 +01:00
QMK Bot
94f1aade5c Merge remote-tracking branch 'origin/master' into develop 2025-06-09 01:44:08 +00:00
VeyPatch
1a54ecf246 [Keyboard] Add splitkb.com's Halcyon Corne rev2 (#25143)
Co-authored-by: Dasky <32983009+daskygit@users.noreply.github.com>
2025-06-09 02:43:31 +01:00
QMK Bot
fe54121cfa Merge remote-tracking branch 'origin/master' into develop 2025-06-08 17:25:36 +00:00
VeyPatch
319844407c [Keyboard] Add splitkb.com's Halcyon Ferris rev1 (#25145)
Co-authored-by: Thomas Baart <support@splitkb.com>
2025-06-08 18:24:54 +01:00
QMK Bot
77b2742863 Merge remote-tracking branch 'origin/master' into develop 2025-06-08 17:05:32 +00:00
VeyPatch
e57226d9a2 [Keyboard] Add splitkb.com's Halcyon Lily58 rev2 (#25144) 2025-06-08 18:04:56 +01:00
Joel Challis
021c3cc125 Configure boards to use development_board - LM (#25341) 2025-06-07 22:17:38 +01:00
Joel Challis
0b3a54f9f2 maple_computing/launchpad - Remove broken default_rgb keymap (#25342) 2025-06-07 16:50:54 +01:00
Nick Brassel
7808f8f56b Add {rgb|led}_matrix_get_mode_name(). (#25344) 2025-06-07 22:56:58 +10:00
QMK Bot
e3c8c23d91 Merge remote-tracking branch 'origin/master' into develop 2025-06-07 04:09:31 +00:00
Nick Brassel
1646000c9b [tzarc/djinn] Include community modules in RGB naming. (#25343) 2025-06-07 14:08:56 +10:00
Joel Challis
b4cabc3cf7 Configure boards to use development_board - NO (#25338) 2025-06-07 01:31:42 +01:00
spacehangover
e8e3c7addb Added Encoder support for Soyuz (#25279) 2025-06-07 01:31:08 +01:00
QMK Bot
608ce78778 Merge remote-tracking branch 'origin/master' into develop 2025-06-05 23:03:27 +00:00
bytetinkerer
824ad46e5d add kinesis/kint32 (#25013)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2025-06-06 00:02:38 +01:00
QMK Bot
977433443a Merge remote-tracking branch 'origin/master' into develop 2025-06-05 15:30:32 +00:00
Nick Brassel
0d477bf570 More Yunzii notes regarding refusal to provide sources. (#25335) 2025-06-05 16:29:53 +01:00
QMK Bot
5bf8248dd3 Merge remote-tracking branch 'origin/master' into develop 2025-06-04 12:44:39 +00:00
obosob
2e3664d2c0 Add CrossDIY to license_violations.md (#25324)
Co-authored-by: jack <jack@pngu.org>
2025-06-04 22:42:57 +10:00
Joel Challis
fad44ae10c [Docs] Fix PS/2 Driver headers (#25332) 2025-06-04 22:41:37 +10:00
Joel Challis
7b36727ed1 Remove process_action_kb callback (#25331) 2025-06-04 22:37:40 +10:00
Joel Challis
f096e5a3f3 Relocate remaining process_record_quantum keycodes (#25328) 2025-06-03 23:44:46 +01:00
QMK Bot
53c6fa5de7 Merge remote-tracking branch 'origin/master' into develop 2025-06-03 12:04:35 +00:00
Dasky
8525ab03de Fix dynamic keymap static assert (#25327) 2025-06-03 13:03:59 +01:00
Joel Challis
97168180cf Configure boards to use development_board - R (#25316) 2025-06-02 19:24:29 +01:00
Joel Challis
57374489da Configure boards to use development_board - P (#25317) 2025-06-02 19:24:23 +01:00
Stephen Ostermiller
1d145c7511 Fix quantum.c keycode handling (#25322) 2025-06-02 19:24:02 +01:00
QMK Bot
820202cd53 Merge remote-tracking branch 'origin/master' into develop 2025-05-28 06:06:21 +00:00
Joel Challis
faf77f1651 Fix typo in Battery Driver docs (#25312)
* Fix typo in Battery Driver docs

* Update battery.md
2025-05-28 16:05:44 +10:00
QMK Bot
4c773971a7 Merge remote-tracking branch 'origin/master' into develop 2025-05-28 00:47:37 +00:00
Idkau
2b8aeed02b Fix Sofle OLED layer indication code (#25311)
Fixed oled raise/lower layer order and added adjust layer text to oled display
2025-05-27 18:47:00 -06:00
QMK Bot
9e8e9af485 Merge remote-tracking branch 'origin/master' into develop 2025-05-27 22:24:59 +00:00
Sergey Radionov
9e2d8999bf Fix reference to wrong layer when LM used with right modifiers (#25303) 2025-05-27 23:24:20 +01:00
QMK Bot
4f60946513 Merge remote-tracking branch 'origin/master' into develop 2025-05-27 17:08:00 +00:00
QMK Bot
ac9318c78f Merge remote-tracking branch 'origin/master' into develop 2025-05-27 13:23:36 +00:00
Nick Brassel
76cf8dff93 Branch point for 2025-05-25 Breaking Change 2025-05-26 21:43:45 +10:00
317 changed files with 4325 additions and 1015 deletions

35
.clangd
View File

@@ -1,4 +1,33 @@
CompileFlags:
Add: [-Wno-unknown-attributes, -Wno-maybe-uninitialized, -Wno-unknown-warning-option]
Remove: [-W*, -mmcu=*, -mcpu=*, -mfpu=*, -mfloat-abi=*, -mno-unaligned-access, -mno-thumb-interwork, -mcall-prologues, -D__has_include*]
Compiler: clang
Add:
[
-Wno-unknown-attributes,
-Wno-maybe-uninitialized,
-Wno-unknown-warning-option,
-Wno-pointer-to-int-cast,
-Wno-int-to-void-pointer-cast,
-DPROGMEM=,
]
Remove:
[
-W*,
-mmcu=*,
-mcpu=*,
-mfpu=*,
-mfloat-abi=*,
-mno-unaligned-access,
-mno-thumb-interwork,
-mcall-prologues,
-D__has_include*,
-mlra,
]
Compiler: clang
Diagnostics:
UnusedIncludes: None
Suppress:
[
asm_invalid_output_constraint,
asm_invalid_input_constraint,
invalid_asm_value_for_constraint,
anyx86_interrupt_attribute,
]

View File

@@ -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:

View File

@@ -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

View File

@@ -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}
}

View File

@@ -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"
}
}

View File

@@ -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`

View File

@@ -36,8 +36,8 @@ The following `#define`s apply only to the `adc` driver:
|-----------------------------|--------------|--------------------------------------------------------------|
|`BATTERY_PIN` |*Not defined* |The GPIO pin connected to the voltage divider. |
|`BATTERY_REF_VOLTAGE_MV` |`3300` |The ADC reverence voltage, in millivolts. |
|`BATTERY_VOLTAGE_DIVIDER_R1` |`100000` |The voltage divider resistance, in kOhm. Set to 0 to disable. |
|`BATTERY_VOLTAGE_DIVIDER_R1` |`100000` |The voltage divider resistance, in kOhm. Set to 0 to disable. |
|`BATTERY_VOLTAGE_DIVIDER_R1` |`100` |The voltage divider resistance, in kOhm. Set to 0 to disable. |
|`BATTERY_VOLTAGE_DIVIDER_R2` |`100` |The voltage divider resistance, in kOhm. Set to 0 to disable. |
|`BATTERY_ADC_RESOLUTION` |`10` |The ADC resolution configured for the ADC Driver. |
## Functions

View File

@@ -135,11 +135,11 @@ bool momentary_layer(bool key_down, void *layer) {
return false;
}
const key_override_t fn_override = {.trigger_mods = MOD_BIT(KC_RGUI) | MOD_BIT(KC_RCTL), //
const key_override_t fn_override = {.trigger_mods = MOD_BIT(KC_RGUI) | MOD_BIT(KC_RALT), //
.layers = ~(1 << LAYER_FN), //
.suppressed_mods = MOD_BIT(KC_RGUI) | MOD_BIT(KC_RCTL), //
.suppressed_mods = MOD_BIT(KC_RGUI) | MOD_BIT(KC_RALT), //
.options = ko_option_no_unregister_on_other_key_down, //
.negative_mod_mask = (uint8_t) ~(MOD_BIT(KC_RGUI) | MOD_BIT(KC_RCTL)), //
.negative_mod_mask = (uint8_t) ~(MOD_BIT(KC_RGUI) | MOD_BIT(KC_RALT)), //
.custom_action = momentary_layer, //
.context = (void *)LAYER_FN, //
.trigger = KC_NO, //

View File

@@ -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

View File

@@ -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

View File

@@ -23,8 +23,11 @@ MODULE 5+ --------+--+--------- PWR CONTROLLER
CLK ------+------------ PIN
```
## Driver Configuration {#driver-configuration}
## Busywait Version {#busywait-version}
Driver selection can be configured in `rules.mk` as `PS2_DRIVER`, or in `info.json` as `ps2.driver`. Valid values are `busywait` (default), `interrupt`, `usart`, or `vendor`. See below for information on individual drivers.
### Busywait Driver {#busywait-driver}
Note: This is not recommended, you may encounter jerky movement or unsent inputs. Please use interrupt or USART version if possible.
@@ -45,7 +48,7 @@ In your keyboard config.h:
#endif
```
### Interrupt Version (AVR/ATMega32u4) {#interrupt-version-avr}
### Interrupt Driver (AVR/ATMega32u4) {#interrupt-driver-avr}
The following example uses D2 for clock and D5 for data. You can use any INT or PCINT pin for clock, and any pin for data.
@@ -78,7 +81,7 @@ In your keyboard config.h:
#endif
```
### Interrupt Version (ARM chibios) {#interrupt-version-chibios}
### Interrupt Driver (ARM chibios) {#interrupt-driver-chibios}
Pretty much any two pins can be used for the (software) interrupt variant on ARM cores. The example below uses A8 for clock, and A9 for data.
@@ -107,7 +110,7 @@ And in the ChibiOS specific `halconf.h`:
#include_next <halconf.h>
```
### USART Version {#usart-version}
### USART Driver {#usart-driver}
To use USART on the ATMega32u4, you have to use PD5 for clock and PD2 for data. If one of those are unavailable, you need to use interrupt version.
@@ -159,7 +162,7 @@ In your keyboard config.h:
#endif
```
### RP2040 PIO Version {#rp2040-pio-version}
### RP2040 PIO Driver {#rp2040-pio-driver}
The `PIO` subsystem is a Raspberry Pi RP2040 specific implementation, using the integrated PIO peripheral and is therefore only available on this MCU.

View File

@@ -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

View File

@@ -176,11 +176,11 @@ See also: [Basic Keycodes](keycodes_basic)
|`KC_LEFT_CTRL` |`KC_LCTL` |Left Control |✔ |✔ |✔ |
|`KC_LEFT_SHIFT` |`KC_LSFT` |Left Shift |✔ |✔ |✔ |
|`KC_LEFT_ALT` |`KC_LALT`, `KC_LOPT` |Left Alt (Option) |✔ |✔ |✔ |
|`KC_LEFT_GUI` |`KC_LGUI`, `KC_LCMD`, `KC_LWIN`|Left GUI (Windows/Command/Meta key) |✔ |✔ |✔ |
|`KC_LEFT_GUI` |`KC_LGUI`, `KC_LCMD`, `KC_LWIN`|Left GUI (Windows/Command/Super key) |✔ |✔ |✔ |
|`KC_RIGHT_CTRL` |`KC_RCTL` |Right Control |✔ |✔ |✔ |
|`KC_RIGHT_SHIFT` |`KC_RSFT` |Right Shift |✔ |✔ |✔ |
|`KC_RIGHT_ALT` |`KC_RALT`, `KC_ROPT`, `KC_ALGR`|Right Alt (Option/AltGr) |✔ |✔ |✔ |
|`KC_RIGHT_GUI` |`KC_RGUI`, `KC_RCMD`, `KC_RWIN`|Right GUI (Windows/Command/Meta key) |✔ |✔ |✔ |
|`KC_RIGHT_GUI` |`KC_RGUI`, `KC_RCMD`, `KC_RWIN`|Right GUI (Windows/Command/Super key) |✔ |✔ |✔ |
|`KC_SYSTEM_POWER` |`KC_PWR` |System Power Down |✔ |✔<sup>3</sup>|✔ |
|`KC_SYSTEM_SLEEP` |`KC_SLEP` |System Sleep |✔ |✔<sup>3</sup>|✔ |
|`KC_SYSTEM_WAKE` |`KC_WAKE` |System Wake | |✔<sup>3</sup>|✔ |

View File

@@ -108,16 +108,16 @@ The basic set of keycodes are based on the [HID Keyboard/Keypad Usage Page (0x07
## Modifiers
|Key |Aliases |Description |
|----------------|-------------------------------|------------------------------------|
|`KC_LEFT_CTRL` |`KC_LCTL` |Left Control |
|`KC_LEFT_SHIFT` |`KC_LSFT` |Left Shift |
|`KC_LEFT_ALT` |`KC_LALT`, `KC_LOPT` |Left Alt (Option) |
|`KC_LEFT_GUI` |`KC_LGUI`, `KC_LCMD`, `KC_LWIN`|Left GUI (Windows/Command/Meta key) |
|`KC_RIGHT_CTRL` |`KC_RCTL` |Right Control |
|`KC_RIGHT_SHIFT`|`KC_RSFT` |Right Shift |
|`KC_RIGHT_ALT` |`KC_RALT`, `KC_ROPT`, `KC_ALGR`|Right Alt (Option/AltGr) |
|`KC_RIGHT_GUI` |`KC_RGUI`, `KC_RCMD`, `KC_RWIN`|Right GUI (Windows/Command/Meta key)|
|Key |Aliases |Description |
|----------------|-------------------------------|-------------------------------------|
|`KC_LEFT_CTRL` |`KC_LCTL` |Left Control |
|`KC_LEFT_SHIFT` |`KC_LSFT` |Left Shift |
|`KC_LEFT_ALT` |`KC_LALT`, `KC_LOPT` |Left Alt (Option) |
|`KC_LEFT_GUI` |`KC_LGUI`, `KC_LCMD`, `KC_LWIN`|Left GUI (Windows/Command/Super key) |
|`KC_RIGHT_CTRL` |`KC_RCTL` |Right Control |
|`KC_RIGHT_SHIFT`|`KC_RSFT` |Right Shift |
|`KC_RIGHT_ALT` |`KC_RALT`, `KC_ROPT`, `KC_ALGR`|Right Alt (Option/AltGr) |
|`KC_RIGHT_GUI` |`KC_RGUI`, `KC_RCMD`, `KC_RWIN`|Right GUI (Windows/Command/Super key)|
## International

View File

@@ -26,6 +26,7 @@ If you own a board from one of the following vendors already, consider asking th
| Chosfox | Selling L75 wired/wireless boards based on QMK without sources, just `via.json` provided. Raised on discord over multiple weeks without response. |
| CIDOO | Selling wired boards based on QMK without sources, just `via.json` provided. |
| ColorReco | Selling tri-mode boards based on QMK without sources. |
| CrossDIY | Selling wired boards based on QMK without sources. |
| Darmoshark | Selling wired boards based on QMK without sources, just `via.json` provided. |
| Epomaker | Lots of historical keyboards with `via.json` but no corresponding sources. Wireless code for a small handful provided, pending core cleanup for QMK upstreaming. Most other boards have source nowhere to be seen. |
| Ergokbd (IFKB) | At least their crkbd clone ships with QMK+Vial, seemingly refuses to disclose sources despite multiple customers requesting them. |
@@ -50,7 +51,7 @@ If you own a board from one of the following vendors already, consider asking th
| Womier | Selling tri-mode boards based on QMK without sources, attempted upstreaming crippled firmware without wireless. |
| Wuque Studio | Selling wired and tri-mode boards based on QMK without sources, just `via.json` provided. |
| XVX | Ambiguity on PRs -- marketing says wireless, PR author said wired-only. Seemingly intentionally deceptive. |
| Yunzii | Selling tri-mode boards based on QMK without sources, just `via.json` provided. |
| Yunzii | Selling tri-mode boards based on QMK without sources, just `via.json` provided. Refuses to release sources due to proprietary wireless driver, in direct violation of the GPL. |
| Zuoya | Selling tri-mode boards based on QMK without sources, just `via.json` provided. |
::: danger Violations

View File

@@ -9,11 +9,11 @@ The modifiers (`mod`) argument to the `MT()` macro are prefixed with `MOD_`, not
|`MOD_LCTL`|Left Control |
|`MOD_LSFT`|Left Shift |
|`MOD_LALT`|Left Alt |
|`MOD_LGUI`|Left GUI (Windows/Command/Meta key) |
|`MOD_LGUI`|Left GUI (Windows/Command/Super key) |
|`MOD_RCTL`|Right Control |
|`MOD_RSFT`|Right Shift |
|`MOD_RALT`|Right Alt (AltGr) |
|`MOD_RGUI`|Right GUI (Windows/Command/Meta key) |
|`MOD_RGUI`|Right GUI (Windows/Command/Super key) |
|`MOD_HYPR`|Hyper (Left Control, Shift, Alt and GUI)|
|`MOD_MEH` |Meh (Left Control, Shift, and Alt) |

View File

@@ -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);

View File

@@ -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);

View File

@@ -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) {

View File

@@ -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);

View File

@@ -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) {

View File

@@ -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);

View File

@@ -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;

View File

@@ -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);

View File

@@ -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) {

View File

@@ -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);

View File

@@ -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);
}
}

View File

@@ -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();
}

View File

@@ -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) {

View File

@@ -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

View File

@@ -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) {

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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};

View File

@@ -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) {

View File

@@ -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);

View File

@@ -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

View File

@@ -18,43 +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
};
#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
default:
return "UNKNOWN";
}
}
#ifdef OLED_ENABLE
static uint32_t oled_logo_timer = 0;
@@ -148,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;

View File

@@ -30,13 +30,13 @@
"layouts": {
"LAYOUT_wkl": {
"layout": [
{"matrix": [0, 0], "x": 5.25, "y": 0},
{"matrix": [0, 0], "x": 0, "y": 0.25},
{"matrix": [0, 1], "x": 1, "y": 0.25},
{"matrix": [0, 2], "x": 2, "y": 0.25},
{"matrix": [0, 3], "x": 3, "y": 0.25},
{"matrix": [0, 4], "x": 4, "y": 0.25},
{"matrix": [0, 1], "x": 0, "y": 0.25},
{"matrix": [0, 2], "x": 1, "y": 0.25},
{"matrix": [0, 3], "x": 2, "y": 0.25},
{"matrix": [0, 4], "x": 3, "y": 0.25},
{"matrix": [0, 5], "x": 4, "y": 0.25},
{"matrix": [0, 5], "x": 5.25, "y": 0},
{"matrix": [1, 0], "x": 0, "y": 1.25},
{"matrix": [1, 1], "x": 1, "y": 1.25},
@@ -55,13 +55,13 @@
},
"LAYOUT_bar": {
"layout": [
{"matrix": [0, 0], "x": 5.25, "y": 0},
{"matrix": [0, 0], "x": 0, "y": 0.25},
{"matrix": [0, 1], "x": 1, "y": 0.25},
{"matrix": [0, 2], "x": 2, "y": 0.25},
{"matrix": [0, 3], "x": 3, "y": 0.25},
{"matrix": [0, 4], "x": 4, "y": 0.25},
{"matrix": [0, 1], "x": 0, "y": 0.25},
{"matrix": [0, 2], "x": 1, "y": 0.25},
{"matrix": [0, 3], "x": 2, "y": 0.25},
{"matrix": [0, 4], "x": 3, "y": 0.25},
{"matrix": [0, 5], "x": 4, "y": 0.25},
{"matrix": [0, 5], "x": 5.25, "y": 0},
{"matrix": [1, 0], "x": 0, "y": 1.25},
{"matrix": [1, 1], "x": 1, "y": 1.25},
@@ -71,7 +71,7 @@
{"matrix": [1, 5], "x": 5.25, "y": 1.25},
{"matrix": [2, 0], "x": 0, "y": 2.25, "w": 2.75},
{"matrix": [2, 1], "x": 0, "y": 2.25, "w": 2.75},
{"matrix": [2, 3], "x": 2.75, "y": 2.25, "w": 2.25},
{"matrix": [2, 5], "x": 5.25, "y": 2.25}

View File

@@ -5,5 +5,3 @@ VPATH += keyboards/cannonkeys/lib/satisfaction75
SRC += satisfaction_encoder.c \
satisfaction_oled.c \
satisfaction_core.c
DEFAULT_FOLDER = cannonkeys/satisfaction75/rev1

View File

@@ -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

View File

@@ -3,5 +3,3 @@ CUSTOM_MATRIX = yes
SRC += matrix.c led.c
UART_DRIVER_REQUIRED = yes
DEFAULT_FOLDER = converter/sun_usb/type5

View File

@@ -1,5 +1,3 @@
CUSTOM_MATRIX = yes
SRC += custom_matrix.cpp
DEFAULT_FOLDER = converter/usb_usb/hasu

View File

@@ -18,6 +18,5 @@
"rows": ["E6", "D7", "C6", "D4", "F7", "F6", "F5", "F4"]
},
"diode_direction": "COL2ROW",
"processor": "atmega32u4",
"bootloader": "caterina"
"development_board": "promicro"
}

View File

@@ -18,8 +18,7 @@
"pin": "D2"
}
},
"processor": "atmega32u4",
"bootloader": "caterina",
"development_board": "promicro",
"features": {
"bootmagic": false,
"mousekey": false,

View File

@@ -12,8 +12,7 @@
"rows": ["B5", "B4"]
},
"diode_direction": "COL2ROW",
"processor": "atmega32u4",
"bootloader": "caterina",
"development_board": "promicro",
"features": {
"bootmagic": true,
"mousekey": true,

View File

@@ -18,8 +18,7 @@
"pin": "D2"
}
},
"processor": "atmega32u4",
"bootloader": "caterina",
"development_board": "promicro",
"features": {
"bootmagic": true,
"mousekey": true,

View File

@@ -18,8 +18,7 @@
"pin": "D2"
}
},
"processor": "atmega32u4",
"bootloader": "caterina",
"development_board": "promicro",
"features": {
"bootmagic": true,
"mousekey": true,

View File

@@ -18,8 +18,7 @@
"pin": "D2"
}
},
"processor": "atmega32u4",
"bootloader": "caterina",
"development_board": "promicro",
"features": {
"bootmagic": true,
"mousekey": true,

View File

@@ -24,8 +24,7 @@
{ "pin_a": "B6", "pin_b": "B2" }
]
},
"processor": "atmega32u4",
"bootloader": "caterina",
"development_board": "promicro",
"features": {
"bootmagic": true,
"encoder": true,

View File

@@ -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": [

View File

@@ -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": [

View File

@@ -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": [

View File

@@ -24,8 +24,7 @@
"ws2812": {
"pin": "D3"
},
"processor": "atmega32u4",
"bootloader": "caterina",
"development_board": "promicro",
"features": {
"bootmagic": false,
"mousekey": true,

View File

@@ -25,8 +25,7 @@
"ws2812": {
"pin": "B6"
},
"processor": "atmega32u4",
"bootloader": "caterina",
"development_board": "promicro",
"features": {
"bootmagic": true,
"mousekey": true,

View File

@@ -37,8 +37,7 @@
"ws2812": {
"pin": "D3"
},
"processor": "atmega32u4",
"bootloader": "caterina",
"development_board": "promicro",
"layouts": {
"LAYOUT": {
"layout": [

View File

@@ -40,8 +40,7 @@
"bootmagic": {
"matrix": [0, 1]
},
"processor": "atmega32u4",
"bootloader": "caterina",
"development_board": "promicro",
"layouts": {
"LAYOUT": {
"layout": [

View File

@@ -48,8 +48,7 @@
"pin": "D2"
}
},
"processor": "atmega32u4",
"bootloader": "caterina",
"development_board": "promicro",
"features": {
"bootmagic": false,
"mousekey": true,

View File

@@ -31,8 +31,7 @@
{"pin_a": "F4", "pin_b": "F5"}
]
},
"processor": "atmega32u4",
"bootloader": "caterina",
"development_board": "promicro",
"layouts": {
"LAYOUT_625uC": {
"layout": [

View File

@@ -25,8 +25,7 @@
"rows": ["B1", "B3", "B2", "B5"]
},
"diode_direction": "COL2ROW",
"processor": "atmega32u4",
"bootloader": "caterina",
"development_board": "promicro",
"layouts": {
"LAYOUT": {
"layout": [

View File

@@ -25,6 +25,5 @@
"rows": ["F6", "B6", "B2"]
},
"diode_direction": "COL2ROW",
"processor": "atmega32u4",
"bootloader": "caterina"
"development_board": "promicro"
}

View File

@@ -31,8 +31,7 @@
{"pin_a": "F5", "pin_b": "F4"}
]
},
"processor": "atmega32u4",
"bootloader": "caterina",
"development_board": "promicro",
"layouts": {
"LAYOUT_3uc": {
"layout": [

View File

@@ -32,8 +32,7 @@
"pin": "D2"
}
},
"processor": "atmega32u4",
"bootloader": "caterina",
"development_board": "promicro",
"features": {
"bootmagic": false,
"mousekey": true,

View File

@@ -15,8 +15,7 @@
"bootmagic": {
"matrix": [3, 0]
},
"processor": "atmega32u4",
"bootloader": "caterina",
"development_board": "promicro",
"features": {
"bootmagic": true,
"mousekey": true,

View File

@@ -16,8 +16,7 @@
"bootmagic": {
"matrix": [3, 0]
},
"processor": "atmega32u4",
"bootloader": "caterina",
"development_board": "promicro",
"features": {
"bootmagic": true,
"mousekey": true,

View File

@@ -15,8 +15,7 @@
"bootmagic": {
"matrix": [3, 4]
},
"processor": "atmega32u4",
"bootloader": "caterina",
"development_board": "promicro",
"features": {
"bootmagic": true,
"mousekey": true,

View File

@@ -15,8 +15,7 @@
"bootmagic": {
"matrix": [3, 0]
},
"processor": "atmega32u4",
"bootloader": "caterina",
"development_board": "promicro",
"features": {
"bootmagic": true,
"mousekey": true,

View File

@@ -16,8 +16,7 @@
"bootmagic": {
"matrix": [3, 0]
},
"processor": "atmega32u4",
"bootloader": "caterina",
"development_board": "promicro",
"features": {
"bootmagic": true,
"mousekey": true,

View File

@@ -13,8 +13,7 @@
{"pin_a": "E6", "pin_b": "D7"}
]
},
"processor": "atmega32u4",
"bootloader": "caterina",
"development_board": "promicro",
"features": {
"bootmagic": false,
"mousekey": false,

View File

@@ -15,8 +15,7 @@
"bootmagic": {
"matrix": [3, 4]
},
"processor": "atmega32u4",
"bootloader": "caterina",
"development_board": "promicro",
"features": {
"bootmagic": true,
"mousekey": true,

View File

@@ -55,8 +55,7 @@
"ws2812": {
"pin": "D1"
},
"processor": "atmega32u4",
"bootloader": "caterina",
"development_board": "promicro",
"features": {
"bootmagic": true,
"mousekey": false,

View File

@@ -1,4 +1,2 @@
# Do not put the microcontroller into power saving mode
NO_SUSPEND_POWER_DOWN = yes
DEFAULT_FOLDER=durgod/dgk6x/hades_ansi

View File

@@ -25,8 +25,7 @@
"rows": ["D4", "C6", "D7", "E6"]
},
"diode_direction": "COL2ROW",
"processor": "atmega32u4",
"bootloader": "caterina",
"development_board": "promicro",
"layouts": {
"LAYOUT": {
"layout": [

View File

@@ -6,8 +6,7 @@
"vid": "0x1337",
"pid": "0x6006"
},
"processor": "atmega32u4",
"bootloader": "caterina",
"development_board": "promicro",
"qmk": {
"locking": {
"enabled": true,

View File

@@ -54,8 +54,7 @@
"ws2812": {
"pin": "D3"
},
"processor": "atmega32u4",
"bootloader": "caterina",
"development_board": "promicro",
"features": {
"bootmagic": true,
"mousekey": false,

View File

@@ -19,8 +19,7 @@
"rows": ["B4", "B5", "B2", "B6"]
},
"diode_direction": "COL2ROW",
"processor": "atmega32u4",
"bootloader": "caterina",
"development_board": "promicro",
"layouts": {
"LAYOUT": {
"layout": [

View File

@@ -18,8 +18,7 @@
"rows": ["B6", "B2", "B3", "B1"]
},
"diode_direction": "COL2ROW",
"processor": "atmega32u4",
"bootloader": "caterina",
"development_board": "promicro",
"layouts": {
"LAYOUT": {
"layout": [

View File

@@ -14,5 +14,3 @@ AUDIO_SUPPORTED = no
BACKLIGHT_SUPPORTED = no
MOUSE_SHARED_EP = no
DEFAULT_FOLDER = ergodox_ez/base

View File

@@ -25,8 +25,7 @@
"ws2812": {
"pin": "D3"
},
"processor": "atmega32u4",
"bootloader": "caterina",
"development_board": "promicro",
"features": {
"bootmagic": false,
"mousekey": true,

View File

@@ -25,8 +25,7 @@
"ws2812": {
"pin": "D3"
},
"bootloader": "caterina",
"processor": "atmega32u4",
"development_board": "promicro",
"features": {
"bootmagic": false,
"mousekey": true,

View File

@@ -21,8 +21,7 @@
"rows": ["D1", "D0", "D4", "C6", "D7"]
},
"diode_direction": "COL2ROW",
"processor": "atmega32u4",
"bootloader": "caterina",
"development_board": "promicro",
"layouts": {
"LAYOUT": {
"layout": [

View File

@@ -21,8 +21,7 @@
"rows": ["D0", "D1"]
},
"diode_direction": "COL2ROW",
"processor": "atmega32u4",
"bootloader": "caterina",
"development_board": "promicro",
"layouts": {
"LAYOUT_ortho_2x5": {
"layout": [

View File

@@ -2,5 +2,3 @@ CUSTOM_MATRIX = lite
SRC += matrix.c
I2C_DRIVER_REQUIRED = yes
DEFAULT_FOLDER = ferris/0_2/base

View File

@@ -54,8 +54,7 @@
"ws2812": {
"pin": "D4"
},
"processor": "atmega32u4",
"bootloader": "caterina",
"development_board": "promicro",
"layout_aliases": {
"LAYOUT": "LAYOUT_all"
},

View File

@@ -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"

View File

@@ -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": {

View File

@@ -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"

View File

@@ -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": [

View File

@@ -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": [

View File

@@ -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"
],

View File

@@ -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,

View File

@@ -19,8 +19,7 @@
"rows": ["F4", "F5", "F6", "F7"]
},
"diode_direction": "COL2ROW",
"processor": "atmega32u4",
"bootloader": "caterina",
"development_board": "promicro",
"layouts": {
"LAYOUT": {
"layout": [

View File

@@ -40,8 +40,7 @@
"resync": true
}
},
"processor": "atmega32u4",
"bootloader": "caterina",
"development_board": "promicro",
"debounce": 3,
"tapping": {
"toggle": 3

View File

@@ -24,8 +24,7 @@
"rows": ["D4", "C6", "B4", "B5"]
},
"diode_direction": "COL2ROW",
"processor": "atmega32u4",
"bootloader": "caterina",
"development_board": "promicro",
"layouts": {
"LAYOUT": {
"layout": [

View File

@@ -8,8 +8,7 @@
"pid": "0xE8D1",
"device_version": "0.0.1"
},
"processor": "atmega32u4",
"bootloader": "caterina",
"development_board": "promicro",
"features": {
"bootmagic": true,
"mousekey": true,

View File

@@ -26,8 +26,7 @@
"ws2812": {
"pin": "D3"
},
"processor": "atmega32u4",
"bootloader": "caterina",
"development_board": "promicro",
"features": {
"bootmagic": true,
"mousekey": true,

View File

@@ -31,8 +31,7 @@
{"pin_a": "D7", "pin_b": "E6", "resolution": 3}
]
},
"processor": "atmega32u4",
"bootloader": "caterina",
"development_board": "promicro",
"features": {
"bootmagic": true,
"mousekey": true,

View File

@@ -204,26 +204,26 @@ led_config_t g_led_config = {{
{196, 64}, // 65 Down
{210, 64}, // 66 Right
{0, 0}, // 69 LED 1
{0, 7}, // 70 LED 2
{0, 14}, // 71 LED 3
{0, 21}, // 72 LED 4
{0, 28}, // 73 LED 5
{0, 35}, // 74 LED 6
{0, 42}, // 75 LED 7
{0, 49}, // 76 LED 8
{0, 56}, // 77 LED 9
{0, 64}, // 78 LED 10
{224, 0 }, // 79 LED 11
{224, 7 }, // 80 LED 12
{224, 14}, // 81 LED 13
{224, 21}, // 82 LED 14
{224, 28}, // 83 LED 15
{224, 35}, // 84 LED 16
{224, 42}, // 85 LED 17
{224, 49}, // 86 LED 18
{224, 56}, // 87 LED 19
{224, 64}, // 88 LED 20
{224, 0 }, // 69 LED 1
{224, 7 }, // 70 LED 2
{224, 14}, // 71 LED 3
{224, 21}, // 72 LED 4
{224, 28}, // 73 LED 5
{224, 35}, // 74 LED 6
{224, 42}, // 75 LED 7
{224, 49}, // 76 LED 8
{224, 56}, // 77 LED 9
{224, 64}, // 78 LED 10
{0, 0 }, // 79 LED 11
{0, 7 }, // 80 LED 12
{0, 14}, // 81 LED 13
{0, 21}, // 82 LED 14
{0, 28}, // 83 LED 15
{0, 35}, // 84 LED 16
{0, 42}, // 85 LED 17
{0, 49}, // 86 LED 18
{0, 56}, // 87 LED 19
{0, 64}, // 88 LED 20
}, {
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,

View File

@@ -206,26 +206,26 @@ led_config_t g_led_config = {{
{196, 64}, // 66 Down
{210, 64}, // 67 Right
{0, 0}, // 68 LED 1
{0, 7}, // 69 LED 2
{0, 14}, // 70 LED 3
{0, 21}, // 71 LED 4
{0, 28}, // 72 LED 5
{0, 35}, // 73 LED 6
{0, 42}, // 74 LED 7
{0, 49}, // 75 LED 8
{0, 56}, // 76 LED 9
{0, 64}, // 77 LED 10
{224, 0 }, // 78 LED 11
{224, 7 }, // 79 LED 12
{224, 14}, // 80 LED 13
{224, 21}, // 81 LED 14
{224, 28}, // 82 LED 15
{224, 35}, // 83 LED 16
{224, 42}, // 84 LED 17
{224, 49}, // 85 LED 18
{224, 56}, // 86 LED 19
{224, 64}, // 87 LED 20
{224, 0 }, // 68 LED 1
{224, 7 }, // 69 LED 2
{224, 14}, // 70 LED 3
{224, 21}, // 71 LED 4
{224, 28}, // 72 LED 5
{224, 35}, // 73 LED 6
{224, 42}, // 74 LED 7
{224, 49}, // 75 LED 8
{224, 56}, // 76 LED 9
{224, 64}, // 77 LED 10
{0, 0 }, // 78 LED 11
{0, 7 }, // 79 LED 12
{0, 14}, // 80 LED 13
{0, 21}, // 81 LED 14
{0, 28}, // 82 LED 15
{0, 35}, // 83 LED 16
{0, 42}, // 84 LED 17
{0, 49}, // 85 LED 18
{0, 56}, // 86 LED 19
{0, 64}, // 87 LED 20
}, {
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,

Some files were not shown because too many files have changed in this diff Show More