qmk_me

QMK Firmware userspace, keyboards, & keymaps
git clone git://git.pngu.org.org/qmk_me
Log | Files | Refs | Submodules | README | LICENSE

commit 118f17bae7ad40b79548a3a33a90adfcaba12175
parent 907b3ba426d51fdffe6986d4b9214c4bc9128d60
Author: Jack Sangdahl <jack@pngu.org>
Date:   Sat, 28 Jun 2025 15:25:23 -0600

Remove outdated content

Diffstat:
Dkeyboards/endgame/readme.md | 5-----
Dkeyboards/leftover30/chconf.h | 9---------
Dkeyboards/leftover30/config.h | 8--------
Dkeyboards/leftover30/halconf.h | 7-------
Dkeyboards/leftover30/keyboard.json | 75---------------------------------------------------------------------------
Dkeyboards/leftover30/keymaps/jack/keymap.c | 26--------------------------
Dkeyboards/leftover30/mcuconf.h | 8--------
Dkeyboards/leftover30/readme.md | 5-----
Dkeyboards/tornish/flash.sh | 8--------
Dkeyboards/tornish/keyboard.json | 45---------------------------------------------
Dkeyboards/tornish/keymaps/default/keymap.c | 42------------------------------------------
Dkeyboards/tornish/readme.md | 11-----------
Dkeyboards/tornish/usbasploader_atmega328p.hex | 140-------------------------------------------------------------------------------
Dkeymaps/f60/readme.md | 4----
Dkeymaps/ferris/config.h | 24------------------------
Dkeymaps/ferris/keymap.c | 56--------------------------------------------------------
Dkeymaps/ferris/readme.md | 8--------
Dkeymaps/ferris/rules.mk | 3---
Dkeymaps/onekey/f411_ls0x/3270_11.qff.c | 88-------------------------------------------------------------------------------
Dkeymaps/onekey/f411_ls0x/3270_11.qff.h | 15---------------
Dkeymaps/onekey/f411_ls0x/config.h | 22----------------------
Dkeymaps/onekey/f411_ls0x/halconf.h | 9---------
Dkeymaps/onekey/f411_ls0x/keymap.c | 30------------------------------
Dkeymaps/onekey/f411_ls0x/keymap.json | 3---
Dkeymaps/onekey/f411_ls0x/mcuconf.h | 8--------
Dkeymaps/onekey/f411_ls0x/rules.mk | 3---
Dkeymaps/qaz/keymap.c | 26--------------------------
Dkeymaps/qaz/rules.mk | 3---
Dkeymaps/relic/readme.md | 3---
Dkeymaps/vault35/readme.md | 3---
Dmodules/ls0xx/ls0xx.c | 277-------------------------------------------------------------------------------
Dmodules/ls0xx/ls0xx.h | 27---------------------------
Dmodules/ls0xx/ls0xx_opcodes.h | 9---------
Dmodules/ls0xx/qmk_module.json | 4----
Dmodules/ls0xx/rules.mk | 7-------
35 files changed, 0 insertions(+), 1021 deletions(-)

diff --git a/keyboards/endgame/readme.md b/keyboards/endgame/readme.md @@ -1,5 +0,0 @@ -### endgame -by [oldman6955](https://github.com/OldMan6955/TheEndgame2024) -![img1]() -![img2]() -![img3]() diff --git a/keyboards/leftover30/chconf.h b/keyboards/leftover30/chconf.h @@ -1,9 +0,0 @@ -// Copyright 2025 jack@pngu.org -// SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#define CH_CFG_ST_FREQUENCY 10000 -#define CH_CFG_OPTIMIZE_SPEED FALSE -#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE - -#include_next <chconf.h> diff --git a/keyboards/leftover30/config.h b/keyboards/leftover30/config.h @@ -1,8 +0,0 @@ -// Copyright 2025 jack@pngu.org -// SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#define WS2812_SPI_DRIVER SPID2 -#define WS2812_SPI_MOSI_PAL_MODE 0 -#define WS2812_SPI_SCK_PIN B13 -#define WS2812_EXTERNAL_PULLUP diff --git a/keyboards/leftover30/halconf.h b/keyboards/leftover30/halconf.h @@ -1,7 +0,0 @@ -// Copyright 2025 jack@pngu.org -// SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#define HAL_USE_SPI TRUE - -#include_next <halconf.h> diff --git a/keyboards/leftover30/keyboard.json b/keyboards/leftover30/keyboard.json @@ -1,75 +0,0 @@ -{ - "keyboard_name": "leftover30", - "manufacturer": "jacks", - "maintainer": "pngu.org", - "processor": "STM32F072", - "bootloader": "stm32-dfu", - "diode_direction": "COL2ROW", - "encoder": { - "rotary": [ - {"pin_a": "B12", "pin_b": "B14"} - ] - }, - "features": { - "rgblight": true, - "encoder": true - }, - "matrix_pins": { - "cols": ["A15", "B9", "B8", "B7", "B6", "B5", "C14", "C15", "F1", "F0", "A1"], - "rows": ["B3", "B4", "C13", "A5"] - }, - "rgblight": { - "led_count": 7 - }, - "ws2812": { - "pin": "B15", - "driver": "spi" - }, - "usb": { - "pid": "0x6C6F", - "vid": "0x6A73", - "device_version": "1.0.0" - }, - "layouts": { - "LAYOUT": { - "layout": [ - {"matrix": [0, 0], "x": 0.5, "y": 0}, - {"matrix": [0, 1], "x": 1.5, "y": 0}, - {"matrix": [0, 2], "x": 2.5, "y": 0}, - {"matrix": [0, 3], "x": 3.5, "y": 0}, - {"matrix": [0, 4], "x": 4.5, "y": 0}, - {"matrix": [0, 5], "x": 5.5, "y": 0}, - {"matrix": [0, 6], "x": 6.5, "y": 0}, - {"matrix": [0, 7], "x": 7.5, "y": 0}, - {"matrix": [0, 8], "x": 8.5, "y": 0}, - {"matrix": [0, 9], "x": 9.5, "y": 0}, - {"matrix": [0, 10], "x": 10.5, "y": 0}, - {"matrix": [1, 0], "x": 0.75, "y": 1}, - {"matrix": [1, 1], "x": 1.75, "y": 1}, - {"matrix": [1, 2], "x": 2.75, "y": 1}, - {"matrix": [1, 3], "x": 3.75, "y": 1}, - {"matrix": [1, 4], "x": 4.75, "y": 1}, - {"matrix": [1, 5], "x": 5.75, "y": 1}, - {"matrix": [1, 6], "x": 6.75, "y": 1}, - {"matrix": [1, 7], "x": 7.75, "y": 1}, - {"matrix": [1, 8], "x": 8.75, "y": 1}, - {"matrix": [1, 10], "x": 9.75, "y": 1, "w": 1.75}, - {"matrix": [2, 0], "x": 1, "y": 2}, - {"matrix": [2, 1], "x": 2, "y": 2}, - {"matrix": [2, 2], "x": 3, "y": 2}, - {"matrix": [2, 3], "x": 4, "y": 2}, - {"matrix": [2, 4], "x": 5, "y": 2}, - {"matrix": [2, 5], "x": 6, "y": 2}, - {"matrix": [2, 6], "x": 7, "y": 2}, - {"matrix": [2, 7], "x": 8, "y": 2}, - {"matrix": [2, 8], "x": 9, "y": 2}, - {"matrix": [2, 9], "x": 10, "y": 2, "w": 1.25}, - {"matrix": [3, 0], "x": 0, "y": 3}, - {"matrix": [3, 1], "x": 1.25, "y": 3, "w": 1.25}, - {"matrix": [3, 5], "x": 2.5, "y": 3, "w": 6.25}, - {"matrix": [3, 8], "x": 8.75, "y": 3}, - {"matrix": [3, 9], "x": 9.75, "y": 3, "w": 1.5} - ] - } - } -} diff --git a/keyboards/leftover30/keymaps/jack/keymap.c b/keyboards/leftover30/keymaps/jack/keymap.c @@ -1,26 +0,0 @@ -// Copyright 2025 jack@pngu.org -// SPDX-License-Identifier: GPL-3.0-or-later -#include "jack.h" - -// clang-format off -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_BASE] = LAYOUT_jack( - ___BASE1___, KC_BSPC, - ___BASE2___, - ___BASE3___, - KC_MPLY, XXXXXXX, LWRSPC, PSTRSE, XXXXXXX - ), - [_LOWER] = LAYOUT_jack( - ___LOWER1___, _______, - ___LOWER2___, - ___LOWER3___, - _______, _______, _______, _______, _______, - ), - [_RAISE] = LAYOUT_jack( - ___RAISE1___, _______, - ___RAISE2___, - ___RAISE3___, - _______, _______, _______, _______, _______, - ) -}; -// clang-format on diff --git a/keyboards/leftover30/mcuconf.h b/keyboards/leftover30/mcuconf.h @@ -1,8 +0,0 @@ -// Copyright 2025 jack@pngu.org -// SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include_next <mcuconf.h> - -#undef STM32_SPI_USE_SPI2 -#define STM32_SPI_USE_SPI2 TRUE diff --git a/keyboards/leftover30/readme.md b/keyboards/leftover30/readme.md @@ -1,5 +0,0 @@ -### leftover30 -originally designed by [marksard](https://github.com/marksard/Keyboards/tree/master/leftover30), but the pcb seems to be mia...\ -(arm) pcb redesigned by [tominabox1](https://github.com/tominabox1) with a somewhat jank case from p3d. -![front](https://i.imgur.com/O6vY5om.jpeg) -![back](https://i.imgur.com/on9pBoA.jpeg) diff --git a/keyboards/tornish/flash.sh b/keyboards/tornish/flash.sh @@ -1,8 +0,0 @@ -#!/bin/sh -FIRMWARE=~/git/qmk_firmware/tornish_default.hex -BOOTLOADER=~/git/qmk_me/keyboards/tornish/usbasploader_atmega328p.hex - -qmk compile -kb tornish -km default > /dev/null -sed -i '$ d' $FIRMWARE -cat $BOOTLOADER >> $FIRMWARE -doas avrdude -c usbtiny -p atmega328p -U flash:w:$FIRMWARE:i diff --git a/keyboards/tornish/keyboard.json b/keyboards/tornish/keyboard.json @@ -1,45 +0,0 @@ -{ - "keyboard_name": "tornish", - "manufacturer": "jacks", - "maintainer": "pngu.org", - "bootloader": "usbasploader", - "diode_direction": "COL2ROW", - "matrix_pins": { - "cols": ["B3", "B4", "B5", "B0", "D7", "D6"], - "rows": ["D4", "D1", "D0", "D5"] - }, - "processor": "atmega328p", - "usb": { - "device_version": "1.0.0", - "pid": "0x6A73", - "vid": "0x6D64" - }, - "layouts": { - "LAYOUT": { - "layout": [ - {"matrix": [0, 0], "x": 0, "y": 0}, - {"matrix": [0, 1], "x": 1, "y": 0}, - {"matrix": [0, 2], "x": 2, "y": 0}, - {"matrix": [0, 3], "x": 3, "y": 0}, - {"matrix": [0, 4], "x": 4, "y": 0}, - {"matrix": [0, 5], "x": 5, "y": 0}, - {"matrix": [1, 0], "x": 0, "y": 1}, - {"matrix": [1, 1], "x": 1, "y": 1}, - {"matrix": [1, 2], "x": 2, "y": 1}, - {"matrix": [1, 3], "x": 3, "y": 1}, - {"matrix": [1, 4], "x": 4, "y": 1}, - {"matrix": [1, 5], "x": 5, "y": 1}, - {"matrix": [2, 0], "x": 0, "y": 2}, - {"matrix": [2, 1], "x": 1, "y": 2}, - {"matrix": [2, 2], "x": 2, "y": 2}, - {"matrix": [2, 3], "x": 3, "y": 2}, - {"matrix": [2, 4], "x": 4, "y": 2}, - {"matrix": [2, 5], "x": 5, "y": 2}, - {"matrix": [3, 2], "x": 2, "y": 3}, - {"matrix": [3, 3], "x": 3, "y": 3}, - {"matrix": [3, 4], "x": 4, "y": 3}, - {"matrix": [3, 5], "x": 5, "y": 3} - ] - } - } -} diff --git a/keyboards/tornish/keymaps/default/keymap.c b/keyboards/tornish/keymaps/default/keymap.c @@ -1,42 +0,0 @@ -// Copyright 2025 jack@pngu.org -// SPDX-License-Identifier: GPL-2.0-or-later -#include QMK_KEYBOARD_H - -enum macros { DAY = QK_USER, CLEAR }; - -// clang-format off -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( - DAY, KC_Q, KC_W, KC_E, KC_R, KC_T, - CLEAR, KC_A, KC_S, KC_D, KC_F, KC_G, - XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, - KC_ESC, MO(1), KC_SPC, XXXXXXX - ), - [1] = LAYOUT( - XXXXXXX, KC_1, KC_2, KC_3, KC_4, KC_5, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, _______, XXXXXXX, XXXXXXX - ) -}; -// clang-format on - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case DAY: - if (record->event.pressed) { - tap_code(KC_SLSH); - wait_ms(500); - SEND_STRING("time set day" SS_TAP(X_ENT)); - } - break; - case CLEAR: - if (record->event.pressed) { - tap_code(KC_SLSH); - wait_ms(500); - SEND_STRING("weather clear" SS_TAP(X_ENT)); - } - break; - } - return true; -} diff --git a/keyboards/tornish/readme.md b/keyboards/tornish/readme.md @@ -1,11 +0,0 @@ -### half a [torn](https://github.com/rtitmuss/torn) keyboard used for minecraft :) -![img](https://i.imgur.com/e7zKTK7.jpeg) - -for whatever reason, this board does not like to flash over usb. -so [flash.sh](flash.sh) does the work instead: -```shell -qmk compile -kb tornish -km default > /dev/null -sed -i '$ d' $FIRMWARE #remove last line from firmware hex file (eof indicator) -cat $BOOTLOADER >> $FIRMWARE #append bootloader hex file to firmware -avrdude -c usbtiny -p atmega328p -U flash:w:$FIRMWARE:i #flash firmware + bootloader over serial -``` diff --git a/keyboards/tornish/usbasploader_atmega328p.hex b/keyboards/tornish/usbasploader_atmega328p.hex @@ -1,140 +0,0 @@ -:107000006BC00000AAC000008EC000008CC0000051 -:107010008AC0000088C0000086C0000084C0000054 -:1070200082C0000080C000007EC000007CC0000064 -:107030007AC0000078C0000076C0000074C0000074 -:1070400072C0000070C000006EC000006CC0000084 -:107050006AC0000068C0000066C0000064C0000094 -:1070600062C0000060C00000EC2DFD2DB7B6B0FC82 -:10707000FDCF27BFE895B7B6B0FCFDCF21E1B7B68D -:10708000B6FCF4CF08950902120001010080320914 -:10709000040000000000000012011001FF000008C1 -:1070A000C016DC050201010200010E035500530069 -:1070B00042006100730070001C03770077007700C6 -:1070C0002E00660069007300630068006C002E00EB -:1070D000640065000403090411241FBECFEFD8E04B -:1070E000DEBFCDBF24B7D8E0CEEF39913833399128 -:1070F00009F03FEF30933C0120933B0111E0A0E009 -:10710000B1E0E4E8F8E702C005900D92A630B107BF -:10711000D9F721E0A6E0B1E001C01D92AB33B20780 -:10712000E1F785D1ADC36CCFA82FB92F80E090E0F7 -:1071300041E050EA609530E009C02D918227979593 -:10714000879510F084279527305EC8F36F5FA8F30A -:107150000895EADF8D939D930895CF93CFB7CF9392 -:10716000DF93C3954B9BE9F74B9B0BC04B9B09C02F -:107170004B9B07C04B9B05C04B9B03C04B9B01C067 -:1071800089C06F93C0911E01DD27CB5DDE4F2F9329 -:1071900065E54B9B03C02F916F91E6CF0F931F9333 -:1071A0004F9320E040E15F9309B10C7003FB27F996 -:1071B0003F9350E03BE039C01C7040642F77012FB3 -:1071C0005F5F1EC0406819B11C702F7752501FC0FE -:1071D000406409B12F770C70D1F15F5F00C023C00C -:1071E000406219B12F771C7091F15F5F00C025C01C -:1071F0000C701027515012F45D5F0000115027955C -:107200002C3F19B1C8F61C700127015027952C3F5F -:10721000C8F64227499309B10C7010274F731150DB -:1072200027952C3FA8F64695469519B11C7079F024 -:107230000127015027952C3F98F66B5A60F3315087 -:1072400009B1B0F600C011E01CBB002717C03B50CD -:107250003195C31BD04011E01CBB0881033CF9F001 -:107260000B34E9F020911C011981110F1213EDCF9D -:10727000093651F10D3211F0013E39F70093230127 -:107280003F915F914F911F910F912F916F91CCB3CF -:10729000C0FD67CFDF91CF91CFBFCF9118952091DF -:1072A0002301222369F310912101112339F5343090 -:1072B0003AF13093210120931D0110911E013BE012 -:1072C000311B30931E011CC0009121010130B4F428 -:1072D0000AE53091010134FD14C000930101C1E1C0 -:1072E000D1E013C0052710E000C000000BB91AC0A0 -:1072F000052710E0221F1DC010E021C04AE502C092 -:1073000032ED432FC4E1D0E032E01AB11C605B9A49 -:107310000BB11AB95CE020E865E320FF05270BB943 -:10732000279517951C3FF0F66695B8F7B1F720FF43 -:1073300005270BB9279517951C3FD0F6279517956C -:1073400017FF052700001C3F0BB9B0F629913A95AD -:1073500019F7037F10912201110FC651D0400BB9CC -:1073600011F010931C0111E01CBB08601AB1137FCF -:10737000402F437F54E05A95F1F70BB91AB94BB936 -:107380007FCFDC0113964C91139714963C91149780 -:1073900013968D919C911497982789279827129678 -:1073A0002C911297203339F43370E32FF0E0EE5F25 -:1073B000FE4F80810895283561F489E0E1E0F0E036 -:1073C000442371F089E0E3E0F0E0483049F080E0E8 -:1073D0000895203579F4411107C089E0F0E0E0E03C -:1073E000809357008491089589E0E2E0F0E048300E -:1073F00071F7F6CF203229F4880F991FFC01849190 -:107400000895283229F4FC01EE0FFF1F3196F7CFC3 -:10741000203A09F41FC2203C21F415966C9122D227 -:10742000D6CF2F3FA1F681EF80930F01D0CF1AB8AE -:1074300080E28BB981E085BF82E085BFE0E0F1E7C3 -:10744000A89531978040E1F780913B01877F21F437 -:1074500080913C01882371F04D9B0CC0F894539AA5 -:107460001BB81DBA1092690081E085BF15BEF0E01F -:10747000E0E009958EEF80930F0114BE0FB6F894EB -:10748000A8958091600088618093600010926000F0 -:107490000FBE80916900826080936900E89A539AD8 -:1074A0008CE0E0E0F5E3A89531978040E1F7539850 -:1074B000789410912101135017FD5AC080911E013C -:1074C000CCE0D0E0C81BD109CB5DDE4F80911D011F -:1074D0008D3209F00BC1183009F048C083EC80935D -:1074E00011018AE580930101109210013881832FE8 -:1074F00080769981882309F49BC046E051E050933F -:10750000200140931F01933069F4CE013ADF80934C -:10751000090184E09F81911127C09E81981720F571 -:10752000892F22C0953009F4DFC09A3009F4DCC0FD -:107530008CEF890F863008F070C04A815B815093D0 -:107540000E0140930D01993009F46EC08E81809335 -:107550000C012D81227020930B0190930A0137FFBB -:107560008FEF90E890931001809300011092210119 -:107570008091010184FF36C0C0910001CF3F91F19D -:107580008C2FC93008F088E09C2F981B9093000145 -:107590009091110128E8922790931101CC23B1F02A -:1075A0004091100147FF2FC190910C01C82F9817EF -:1075B00008F4C92F9C1B90930C01D0900A01D0E0D5 -:1075C00082E1E82E81E0F82EDC1304C16C2F82E109 -:1075D00091E0BFDDCC5FCC3019F08FEF80930001DC -:1075E000C093010184E199B19C7031F48150D9F7C5 -:1075F0001092220110921C0180910F01803108F439 -:107600001EC14D9B05C080910F01805180930F01D9 -:1076100080910F0181114DCF21CF80910F019230C8 -:1076200029F48E7F80930F0180E074CF8160FACFC0 -:107630002A8110921A0191110AC010921B012AE1AD -:1076400031E082E03093200120931F0163CF953019 -:1076500029F4209322012AE131E0F4CF963099F504 -:107660009B81913059F488E990E7909320018093B1 -:107670001F0182E190E4909310014CCF923019F4F5 -:1076800086E890E7F2CF9330A9F7211108C084ED86 -:1076900090E79093200180931F0184E0EBCF21308D -:1076A00041F488EB90E79093200180931F018CE1D7 -:1076B000E1CF2230F9F68AEA90E790932001809397 -:1076C0001F018EE0D7CF983059F0993019F42093EC -:1076D0002401C1CF81E09A3009F4BDCF80E0BBCF57 -:1076E00024E231E081E0AECF81E014CF809110013F -:1076F00087FF3CCF00910C01011708F4102F011BEC -:1077000000930C01F12CF11628F001112FCF1092EB -:1077100000012CCF80910D0190910E0120910A0162 -:10772000273058F069919C012F5F3F4F30930E0135 -:1077300020930D0197D0F394E6CF8115904738F749 -:10774000F394F394F894E0910D01F0910E012991D6 -:10775000399181E0090180935700E89511247894CC -:1077600080910D0190910E01029690930E018093ED -:107770000D018F779927892B51F00111C4CFF11694 -:1077800008F4C1CF80910B01882309F4BCCFF89491 -:10779000E0910D01F0910E01329783E08093570044 -:1077A000E895789407B600FCFDCFF894E0910D01C0 -:1077B000F0910E01329785E080935700E895789418 -:1077C00007B600FCFDCFF89481E180935700E8955F -:1077D000789499CF00910D0110910E0126E02D159E -:1077E00078F4C80137D0F7018083FFEFEF1AFF0A62 -:1077F0000F5F1F4F10930E0100930D01DF5FE4CE6A -:10780000F8018491F0CF90911F0130912001282F31 -:10781000290FE92FF32FA2E1B1E046FF0BC09491AD -:107820009D9331962E13FBCFF0932001E0931F011F -:10783000C82FCCCE91919D932E13FCCFF5CF4D99AF -:10784000E7CE80910F01823008F4E2CE80910F01E3 -:107850008250DCCEF999FECF92BD81BDF89A99276E -:1078600080B50895262FF999FECF1FBA92BD81BD2C -:1078700020BD0FB6F894FA9AF99A0FBE01960895B2 -:04788000F894FFCFAA -:06788400FF5A1E950F00E3 -:040000030000700089 -:00000001FF diff --git a/keymaps/f60/readme.md b/keymaps/f60/readme.md @@ -1,4 +0,0 @@ -### trio60 -![front](https://i.imgur.com/MsKEbeB.jpeg) -![back](https://i.imgur.com/1D9xUYT.jpeg) -![rear](https://i.imgur.com/x6MBDMd.jpeg) diff --git a/keymaps/ferris/config.h b/keymaps/ferris/config.h @@ -1,24 +0,0 @@ -// Copyright 2025 jack@pngu.org -// SPDX-License-Identifier: GPL-2.0-or-later -#pragma once - -#define WS2812_DI_PIN B0 -#define RGB_MATRIX_LED_COUNT 34 -#define RGB_MATRIX_SPLIT {17, 17} -#define __ NO_PIN -#undef DIRECT_PINS -#undef DIRECT_PINS_RIGHT -// clang-format off -#define DIRECT_PINS { \ - {D7,F7,F6,F5,F4}, \ - {B1,B3,B2,B6,D3}, \ - {D1,D0,D4,C6,E6}, \ - {B4,B5,__,__,__} \ -} -#define DIRECT_PINS_RIGHT { \ - {F4,F5,F6,F7,D7}, \ - {D3,B6,B2,B3,B1}, \ - {E6,C6,D4,D0,D1}, \ - {B5,B4,__,__,__} \ -} -// clang-format on diff --git a/keymaps/ferris/keymap.c b/keymaps/ferris/keymap.c @@ -1,56 +0,0 @@ -// Copyright 2025 jack@pngu.org -// SPDX-License-Identifier: GPL-2.0-or-later -#include "jack.h" -#define XX NO_LED - -// clang-format off -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_BASE] = LAYOUT_jack( - ___BASE1___, - ___BASE2___, - ___BASE3___, - ESCLWR, KC_SPC, KC_BSPC, PSTRSE - ), - [_LOWER] = LAYOUT_jack( - ___LOWER1___, - ___LOWER2___, - ___LOWER3___, - _______, _______, _______, PNP - ), - [_RAISE] = LAYOUT_jack( - ___RAISE1___, - ___RAISE2___, - ___RAISE3___, - UPDIR, _______, _______, _______ - ) -}; - -led_config_t g_led_config = {{ - {4, 3, 2, 1, 0 }, - {5, 6, 7, 8, 9 }, - {14, 13, 12, 11, 10}, - {XX, XX, XX, 15, 16}, - {17, 18, 19, 20, 21}, - {26, 25, 24, 23, 22}, - {27, 28, 29, 30, 31}, - {33, 32, XX, XX, XX} -}, { - {72,7}, {54,4}, {36,0}, {18,4}, {0,13}, - {0,27}, {18,18},{36,14},{54,18},{72,21}, - {72,35},{54,32},{36,28},{18,32},{0,41}, - {67,45},{90,62}, - {126,13},{144,4}, {162,0}, {180,4}, {198,7}, - {198,21},{180,18},{162,14},{144,18},{126,27}, - {126,41},{144,32},{162,28},{180,32},{198,35}, - {117,62},{135,45} -}, { - 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,4,4, - 4,4 -}}; -// clang-format on diff --git a/keymaps/ferris/readme.md b/keymaps/ferris/readme.md @@ -1,8 +0,0 @@ -### rgb ferris sweep -![parts](https://i.imgur.com/zKJoYMa.jpeg) -![switches](https://i.imgur.com/ZSEpMGf.jpeg) -![complete](https://i.imgur.com/Op0bU0N.jpeg) - -#### notes -an elite-c was required for this pcb, as it exposes an io pin where most pro-micro's have a raw power pin.\ -this means no diodes are required :^) diff --git a/keymaps/ferris/rules.mk b/keymaps/ferris/rules.mk @@ -1,3 +0,0 @@ -BOOTLOADER = atmel-dfu -RGB_MATRIX_ENABLE = yes -RGB_MATRIX_DRIVER = ws2812 diff --git a/keymaps/onekey/f411_ls0x/3270_11.qff.c b/keymaps/onekey/f411_ls0x/3270_11.qff.c @@ -1,88 +0,0 @@ -// Copyright 2025 QMK -- generated source code only, font retains original -// copyright SPDX-License-Identifier: GPL-2.0-or-later - -// This file was auto-generated by `painter-convert-font-image` with arguments: -// format | mono2 -// unicode_glyphs | -// output | qmk_firmware -// input | 3270_11.png - -// Font's metadata -// --------------- -// Glyphs: , !, ", #, $, %, &, ', (, ), *, +, ,, -, ., /, 0, 1, 2, 3, 4, 5, 6, -// 7, 8, 9, :, ;, <, =, >, ?, @, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, -// Q, R, S, T, U, V, W, X, Y, Z, [, \, ], ^, _, `, a, b, c, d, e, f, g, h, i, j, -// k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, {, |, }, ~ - -#include <qp.h> - -const uint32_t font_3270_11_length = 1017; - -// clang-format off -const uint8_t font_3270_11[1017] = { - 0x00, 0xFF, 0x14, 0x00, 0x00, 0x51, 0x46, 0x46, 0x01, 0xF9, 0x03, 0x00, 0x00, 0x06, 0xFC, 0xFF, - 0xFF, 0x0A, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x01, 0xFE, 0x1D, 0x01, 0x00, 0x06, 0x00, - 0x00, 0x86, 0x00, 0x00, 0x06, 0x01, 0x00, 0x46, 0x02, 0x00, 0x06, 0x04, 0x00, 0x46, 0x06, 0x00, - 0x86, 0x08, 0x00, 0xC6, 0x0A, 0x00, 0x46, 0x0B, 0x00, 0x46, 0x0D, 0x00, 0x46, 0x0F, 0x00, 0x06, - 0x11, 0x00, 0x86, 0x12, 0x00, 0x46, 0x14, 0x00, 0xC6, 0x15, 0x00, 0x46, 0x17, 0x00, 0xC6, 0x17, - 0x00, 0x06, 0x1A, 0x00, 0x46, 0x1B, 0x00, 0x46, 0x1D, 0x00, 0x86, 0x1F, 0x00, 0xC6, 0x21, 0x00, - 0x06, 0x24, 0x00, 0x86, 0x26, 0x00, 0x86, 0x28, 0x00, 0xC6, 0x2A, 0x00, 0x06, 0x2D, 0x00, 0x06, - 0x2F, 0x00, 0x06, 0x31, 0x00, 0x06, 0x33, 0x00, 0x86, 0x33, 0x00, 0x86, 0x35, 0x00, 0x06, 0x37, - 0x00, 0x06, 0x39, 0x00, 0x06, 0x3B, 0x00, 0x46, 0x3D, 0x00, 0x46, 0x3F, 0x00, 0x86, 0x41, 0x00, - 0x46, 0x43, 0x00, 0x06, 0x45, 0x00, 0x86, 0x47, 0x00, 0x06, 0x49, 0x00, 0x46, 0x4B, 0x00, 0x46, - 0x4D, 0x00, 0x86, 0x4F, 0x00, 0x06, 0x50, 0x00, 0x86, 0x51, 0x00, 0x86, 0x53, 0x00, 0xC6, 0x55, - 0x00, 0x86, 0x57, 0x00, 0xC6, 0x59, 0x00, 0x06, 0x5C, 0x00, 0x46, 0x5E, 0x00, 0x86, 0x5F, 0x00, - 0x46, 0x61, 0x00, 0x46, 0x63, 0x00, 0x06, 0x65, 0x00, 0x46, 0x67, 0x00, 0xC6, 0x68, 0x00, 0xC6, - 0x6A, 0x00, 0x06, 0x6D, 0x00, 0x06, 0x6F, 0x00, 0x46, 0x71, 0x00, 0x86, 0x72, 0x00, 0x06, 0x74, - 0x00, 0x46, 0x75, 0x00, 0x86, 0x77, 0x00, 0x86, 0x79, 0x00, 0x86, 0x7B, 0x00, 0xC6, 0x7D, 0x00, - 0xC6, 0x7F, 0x00, 0xC6, 0x81, 0x00, 0x06, 0x84, 0x00, 0x46, 0x86, 0x00, 0xC6, 0x86, 0x00, 0x06, - 0x89, 0x00, 0x06, 0x8B, 0x00, 0x86, 0x8B, 0x00, 0x06, 0x8D, 0x00, 0x46, 0x8F, 0x00, 0x86, 0x91, - 0x00, 0xC6, 0x93, 0x00, 0x06, 0x96, 0x00, 0x06, 0x98, 0x00, 0x06, 0x9A, 0x00, 0x86, 0x9B, 0x00, - 0xC6, 0x9D, 0x00, 0x86, 0x9F, 0x00, 0x46, 0xA1, 0x00, 0x86, 0xA3, 0x00, 0xC6, 0xA5, 0x00, 0xC6, - 0xA7, 0x00, 0x06, 0xAA, 0x00, 0x86, 0xAA, 0x00, 0xC6, 0xAC, 0x00, 0x04, 0xFB, 0xB9, 0x02, 0x00, - 0x08, 0x00, 0x08, 0x00, 0x81, 0x80, 0xA2, 0x06, 0x00, 0x83, 0x00, 0xE0, 0x28, 0x0E, 0x04, 0x00, - 0x85, 0x00, 0xE0, 0x01, 0x1E, 0xE0, 0x01, 0x02, 0x00, 0x81, 0x80, 0x21, 0x03, 0x00, 0x80, 0x61, - 0x02, 0x00, 0x85, 0x00, 0x40, 0x00, 0x06, 0xA5, 0x40, 0x02, 0x00, 0x08, 0x00, 0x84, 0x00, 0x40, - 0x10, 0x04, 0x81, 0x03, 0x00, 0x84, 0x00, 0x80, 0x20, 0x08, 0x02, 0x03, 0x00, 0x02, 0x00, 0x81, - 0x38, 0x12, 0x04, 0x00, 0x03, 0x00, 0x80, 0x1E, 0x04, 0x00, 0x04, 0x00, 0x83, 0x80, 0x30, 0x04, - 0x00, 0x03, 0x00, 0x80, 0x0C, 0x04, 0x00, 0x04, 0x00, 0x80, 0x40, 0x03, 0x00, 0x08, 0x00, 0x85, - 0x80, 0x03, 0x01, 0x00, 0x20, 0x01, 0x02, 0x00, 0x81, 0x00, 0x61, 0x06, 0x00, 0x84, 0x80, 0x05, - 0x40, 0x08, 0x21, 0x03, 0x00, 0x85, 0x00, 0x04, 0x21, 0x10, 0x00, 0x01, 0x02, 0x00, 0x85, 0x00, - 0x46, 0x49, 0x10, 0x04, 0x01, 0x02, 0x00, 0x85, 0x80, 0x00, 0x20, 0x10, 0x00, 0x01, 0x02, 0x00, - 0x80, 0x80, 0x02, 0x00, 0x82, 0x12, 0x20, 0x31, 0x02, 0x00, 0x84, 0x00, 0x04, 0x21, 0x04, 0x41, - 0x03, 0x00, 0x85, 0x00, 0x22, 0x31, 0x12, 0x20, 0x01, 0x02, 0x00, 0x85, 0x80, 0x05, 0x61, 0x06, - 0x00, 0x01, 0x02, 0x00, 0x02, 0x00, 0x82, 0x10, 0x04, 0x40, 0x03, 0x00, 0x03, 0x00, 0x84, 0x08, - 0x80, 0x30, 0x04, 0x00, 0x84, 0x00, 0x80, 0x10, 0x02, 0x81, 0x03, 0x00, 0x08, 0x00, 0x84, 0x00, - 0x40, 0x20, 0x10, 0x42, 0x03, 0x00, 0x82, 0x00, 0x05, 0x21, 0x05, 0x00, 0x84, 0x80, 0x04, 0x30, - 0x1C, 0x20, 0x03, 0x00, 0x84, 0x00, 0xC0, 0x48, 0x92, 0x04, 0x03, 0x00, 0x85, 0x80, 0x23, 0x49, - 0x8E, 0x24, 0x01, 0x02, 0x00, 0x84, 0x00, 0x42, 0x08, 0x80, 0x40, 0x03, 0x00, 0x85, 0x80, 0x23, - 0x09, 0x82, 0x20, 0x01, 0x02, 0x00, 0x83, 0x80, 0x07, 0x00, 0x0E, 0x04, 0x00, 0x83, 0x80, 0x07, - 0x00, 0x0E, 0x04, 0x00, 0x81, 0x00, 0x23, 0x02, 0x00, 0x81, 0x24, 0x01, 0x02, 0x00, 0x03, 0x00, - 0x80, 0x1E, 0x04, 0x00, 0x81, 0x00, 0x03, 0x02, 0x00, 0x80, 0x40, 0x03, 0x00, 0x84, 0x00, 0x82, - 0x20, 0x08, 0xA2, 0x03, 0x00, 0x02, 0x00, 0x83, 0x21, 0x86, 0x02, 0x01, 0x02, 0x00, 0x08, 0x00, - 0x82, 0x00, 0x20, 0x31, 0x05, 0x00, 0x84, 0x00, 0x20, 0x10, 0x18, 0x04, 0x03, 0x00, 0x85, 0x00, - 0x23, 0x01, 0x00, 0x20, 0x01, 0x02, 0x00, 0x83, 0x80, 0x03, 0x01, 0x90, 0x04, 0x00, 0x85, 0x00, - 0x23, 0x01, 0x00, 0xE0, 0x21, 0x02, 0x00, 0x85, 0x80, 0x03, 0x01, 0x1E, 0x02, 0x01, 0x02, 0x00, - 0x85, 0x00, 0x23, 0x08, 0x0C, 0x24, 0x01, 0x02, 0x00, 0x81, 0x80, 0x07, 0x06, 0x00, 0x04, 0x00, - 0x81, 0x20, 0x01, 0x02, 0x00, 0x02, 0x00, 0x82, 0x49, 0x02, 0xC3, 0x03, 0x00, 0x04, 0x00, 0x81, - 0xE0, 0x01, 0x02, 0x00, 0x85, 0x00, 0x20, 0x21, 0x8C, 0x02, 0x01, 0x02, 0x00, 0x82, 0x00, 0x20, - 0x31, 0x05, 0x00, 0x84, 0x80, 0x07, 0x21, 0x84, 0x20, 0x03, 0x00, 0x85, 0x00, 0x41, 0x10, 0x04, - 0x41, 0x10, 0x02, 0x00, 0x02, 0x00, 0x82, 0x10, 0x08, 0x04, 0x03, 0x00, 0x85, 0x00, 0x82, 0x20, - 0x08, 0x82, 0x30, 0x02, 0x00, 0x81, 0x00, 0x03, 0x06, 0x00, 0x05, 0x00, 0x80, 0x78, 0x02, 0x00, - 0x81, 0x00, 0x81, 0x06, 0x00, 0x02, 0x00, 0x83, 0x20, 0x90, 0x24, 0x01, 0x02, 0x00, 0x02, 0x00, - 0x82, 0x28, 0x10, 0x84, 0x03, 0x00, 0x02, 0x00, 0x82, 0x18, 0x00, 0x20, 0x03, 0x00, 0x85, 0x00, - 0x04, 0x59, 0x10, 0x24, 0x01, 0x02, 0x00, 0x02, 0x00, 0x82, 0x28, 0x90, 0x20, 0x03, 0x00, 0x84, - 0x00, 0x41, 0x10, 0x04, 0x41, 0x03, 0x00, 0x02, 0x00, 0x85, 0x48, 0x90, 0xC4, 0x41, 0x0C, 0x00, - 0x02, 0x00, 0x83, 0x38, 0x10, 0x04, 0x01, 0x02, 0x00, 0x08, 0x00, 0x02, 0x00, 0x85, 0x40, 0x10, - 0x04, 0x41, 0x0C, 0x00, 0x02, 0x00, 0x82, 0x20, 0x84, 0x81, 0x03, 0x00, 0x08, 0x00, 0x02, 0x00, - 0x80, 0x78, 0x05, 0x00, 0x02, 0x00, 0x83, 0x38, 0x92, 0x24, 0x01, 0x02, 0x00, 0x02, 0x00, 0x83, - 0x28, 0x10, 0x24, 0x01, 0x02, 0x00, 0x02, 0x00, 0x83, 0x28, 0x10, 0x84, 0x08, 0x02, 0x00, 0x02, - 0x00, 0x85, 0x58, 0x10, 0x24, 0x41, 0x10, 0x00, 0x02, 0x00, 0x82, 0x38, 0x82, 0x20, 0x03, 0x00, - 0x02, 0x00, 0x82, 0x28, 0x02, 0xA2, 0x03, 0x00, 0x82, 0x00, 0x40, 0x30, 0x05, 0x00, 0x02, 0x00, - 0x83, 0x40, 0x10, 0x24, 0x01, 0x02, 0x00, 0x03, 0x00, 0x81, 0x12, 0xC0, 0x03, 0x00, 0x04, 0x00, - 0x81, 0xE0, 0x01, 0x02, 0x00, 0x02, 0x00, 0x83, 0x48, 0x0C, 0x23, 0x01, 0x02, 0x00, 0x02, 0x00, - 0x85, 0x40, 0x90, 0xC4, 0x10, 0x02, 0x00, 0x02, 0x00, 0x82, 0x60, 0x08, 0x21, 0x03, 0x00, 0x85, - 0x00, 0x41, 0x10, 0x02, 0x41, 0x30, 0x02, 0x00, 0x08, 0x00, 0x85, 0x00, 0x01, 0x00, 0x08, 0x00, - 0x10, 0x02, 0x00, 0x82, 0x80, 0x81, 0x01, 0x05, 0x00, -}; -// clang-format on diff --git a/keymaps/onekey/f411_ls0x/3270_11.qff.h b/keymaps/onekey/f411_ls0x/3270_11.qff.h @@ -1,15 +0,0 @@ -// Copyright 2025 QMK -- generated source code only, font retains original copyright -// SPDX-License-Identifier: GPL-2.0-or-later - -// This file was auto-generated by `painter-convert-font-image` with arguments: -// format | mono2 -// unicode_glyphs | -// output | qmk_firmware -// input | 3270_11.png - -#pragma once - -#include <qp.h> - -extern const uint32_t font_3270_11_length; -extern const uint8_t font_3270_11[1017]; diff --git a/keymaps/onekey/f411_ls0x/config.h b/keymaps/onekey/f411_ls0x/config.h @@ -1,22 +0,0 @@ -// Copyright 2025 jack@pngu.org -// SPDX-License-Identifier: GPL-2.0-or-later -#pragma once - -#undef ADC_PIN -#undef BACKLIGHT_PIN -#undef MATRIX_ROW_PINS -#undef MATRIX_COL_PINS - -// clang-format off -#define DIRECT_PINS {{A0}} -// clang-format on - -#define SPI_DRIVER SPID1 -#define SPI_SCK_PIN A5 -#define SPI_MOSI_PIN A7 -#define SPI_MISO_PIN NO_PIN - -#define LS0XX_CS_PIN A6 -#define LS0XX_HEIGHT 160 -#define LS0XX_WIDTH 68 -#define LS0XX_SPI_DIVISOR 16 diff --git a/keymaps/onekey/f411_ls0x/halconf.h b/keymaps/onekey/f411_ls0x/halconf.h @@ -1,9 +0,0 @@ -// Copyright 2025 jack@pngu.org -// SPDX-License-Identifier: GPL-2.0-or-later -#pragma once - -#define HAL_USE_SPI TRUE -#define SPI_USE_WAIT TRUE -#define SPI_SELECT_MODE SPI_SELECT_MODE_NONE - -#include_next <halconf.h> diff --git a/keymaps/onekey/f411_ls0x/keymap.c b/keymaps/onekey/f411_ls0x/keymap.c @@ -1,30 +0,0 @@ -// Copyright 2025 jack@pngu.org -// SPDX-License-Identifier: GPL-2.0-or-later -#include QMK_KEYBOARD_H -#include "qp.h" -#include "qp_surface.h" -#include "ls0xx.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - LAYOUT_ortho_1x1(KC_A)}; - -static painter_device_t display; -static uint8_t framebuffer[SURFACE_REQUIRED_BUFFER_BYTE_SIZE( - LS0XX_WIDTH, LS0XX_HEIGHT, 1)] = {0}; - -void keyboard_post_init_user(void) { - display = - qp_ls0xx_device_t_make_spi_device(LS0XX_WIDTH, LS0XX_HEIGHT, LS0XX_CS_PIN, - LS0XX_SPI_DIVISOR, 0, framebuffer); - qp_init(display, QP_ROTATION_0); -} - -void housekeeping_task_user(void) { - static uint32_t last_draw = 0; - if (timer_elapsed32(last_draw) > 33) { - last_draw = timer_read32(); - for (int i = 0; i < LS0XX_HEIGHT - 1; i += 8) - qp_rect(display, 0, i, 7, i + 7, 255, 255, 255, true); - qp_flush(display); - } -} diff --git a/keymaps/onekey/f411_ls0x/keymap.json b/keymaps/onekey/f411_ls0x/keymap.json @@ -1,3 +0,0 @@ -{ - "modules": ["ls0xx"] -} diff --git a/keymaps/onekey/f411_ls0x/mcuconf.h b/keymaps/onekey/f411_ls0x/mcuconf.h @@ -1,8 +0,0 @@ -// Copyright 2025 jack@pngu.org -// SPDX-License-Identifier: GPL-2.0-or-later -#pragma once - -#include_next <mcuconf.h> - -#undef STM32_SPI_USE_SPI1 -#define STM32_SPI_USE_SPI1 TRUE diff --git a/keymaps/onekey/f411_ls0x/rules.mk b/keymaps/onekey/f411_ls0x/rules.mk @@ -1,3 +0,0 @@ -BOOTMAGIC_ENABLE = yes -QUANTUM_PAINTER_ENABLE = yes -SRC += 3270_11.qff.c diff --git a/keymaps/qaz/keymap.c b/keymaps/qaz/keymap.c @@ -1,26 +0,0 @@ -// Copyright 2025 jack@pngu.org -// SPDX-License-Identifier: GPL-3.0-or-later -#include "jack.h" - -// clang-format off -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_BASE] = LAYOUT_jack_sp( - KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, - HRML(KC_A, KC_S, KC_D, KC_F), KC_G, KC_H, HRMR(KC_J, KC_K, KC_L, KC_SCLN), - KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, - UPDIR, XXXXXXX, KC_ESC, LWRSPC, RSEBSP, C(S(KC_V)), XXXXXXX, PNP - ), - [_LOWER] = LAYOUT_jack_sp( - KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, - HRML(KC_EXLM, KC_AT, KC_HASH, KC_DLR), KC_PERC, KC_CIRC, HRMR(KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN), - KC_TAB, KC_CAPS, REMOVE, KC_GRV, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_SLSH, - _______, _______, _______, _______, _______, _______, _______, _______ - ), - [_RAISE] = LAYOUT_jack_sp( - XRGB_TOG, XRGB_NXT, XRGB_HUI, XRGB_SAI, XRGB_VAI, UC_NOMODE, UC_SCRIPT, UC_BLOCKS, UC_REGIONAL, QK_MAKE, - M_JIGGLE, XRGB_PRV, XRGB_HUD, XRGB_SAD, XRGB_VAD, UC_WIDE, UC_AUSSIE, UC_ZALGO, UC_SUPER, QK_BOOT, - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, - _______, _______, _______, _______, _______, _______, _______, _______ - ) -}; -// clang-format on diff --git a/keymaps/qaz/rules.mk b/keymaps/qaz/rules.mk @@ -1,3 +0,0 @@ -RGBLIGHT_ENABLE = no -MOUSEKEY_ENABLE = no -BOOTLOADER = atmel-dfu diff --git a/keymaps/relic/readme.md b/keymaps/relic/readme.md @@ -1,3 +0,0 @@ -### relic -![front](https://i.imgur.com/FMkKVs0.jpeg) -![back](https://i.imgur.com/s1HrBum.jpeg) diff --git a/keymaps/vault35/readme.md b/keymaps/vault35/readme.md @@ -1,3 +0,0 @@ -### vault35 -![w/o keycaps](https://i.imgur.com/AHwhQdD.jpeg) -![w/ keycaps](https://i.imgur.com/lXP50IT.jpeg) diff --git a/modules/ls0xx/ls0xx.c b/modules/ls0xx/ls0xx.c @@ -1,277 +0,0 @@ -// Copyright Pablo Martinez (@elpekenin) <elpekenin@elpekenin.dev> -// SPDX-License-Identifier: GPL-2.0-or-later - -#include "ls0xx.h" - -#include "ls0xx_opcodes.h" -#include "qp_comms_spi.h" -#include "qp_surface_internal.h" -#include "spi_master.h" - -typedef struct { - painter_driver_t base; // must be first, so it can be cast to/from the - // painter_device_t* type - qp_comms_spi_config_t spi_config; - surface_painter_device_t surface; -} ls0xx_painter_device_t; - -// need custom comms vtable for inverted CS logic -bool inverted_cs_init(painter_device_t device) { - painter_driver_t *driver = (painter_driver_t *)device; - qp_comms_spi_config_t *comms_config = - (qp_comms_spi_config_t *)driver->comms_config; - - // Initialize the SPI peripheral - spi_init(); - - // Set up CS as output high - gpio_set_pin_output(comms_config->chip_select_pin); - gpio_write_pin_low(comms_config->chip_select_pin); - - return true; -} - -bool inverted_cs_start(painter_device_t device) { - painter_driver_t *driver = (painter_driver_t *)device; - qp_comms_spi_config_t *comms_config = - (qp_comms_spi_config_t *)driver->comms_config; - - spi_start_config_t config = (spi_start_config_t){ - .slave_pin = comms_config->chip_select_pin, - .lsb_first = comms_config->lsb_first, - .mode = comms_config->mode, - .divisor = comms_config->divisor, - .cs_active_low = false, - }; - - return spi_start_extended(&config); -} - -const painter_comms_vtable_t spi_comms_inverted_cs_vtable = { - .comms_init = inverted_cs_init, - .comms_start = inverted_cs_start, - .comms_send = qp_comms_spi_send_data, - .comms_stop = qp_comms_spi_stop, -}; - -ls0xx_painter_device_t ls0xx_device_t_drivers[LS0XX_NUM_DEVICES] = {0}; - -__attribute__((weak)) bool qp_ls0xx_init(painter_device_t device, - painter_rotation_t rotation) { - ls0xx_painter_device_t *ls0xx = (ls0xx_painter_device_t *)device; - painter_driver_t *surface = (painter_driver_t *)&ls0xx->surface; - - // Change the surface geometry based on the panel rotation - if (rotation == QP_ROTATION_90 || rotation == QP_ROTATION_270) { - surface->panel_width = ls0xx->base.panel_height; - surface->panel_height = ls0xx->base.panel_width; - } else { - surface->panel_width = ls0xx->base.panel_width; - surface->panel_height = ls0xx->base.panel_height; - } - - // Init the internal surface - if (!surface->driver_vtable->init(surface, QP_ROTATION_0)) { - qp_dprintf("Failed to init internal surface in qp_ls0xx_init\n"); - return false; - } - - ls0xx->base.rotation = rotation; - - writePinHigh(ls0xx->spi_config.chip_select_pin); - const uint8_t ls0xx_init_sequence[] = {LS0XX_CLEAR, 0}; - spi_transmit(ls0xx_init_sequence, ARRAY_SIZE(ls0xx_init_sequence)); - writePinLow(ls0xx->spi_config.chip_select_pin); - - return true; -} - -bool qp_ls0xx_passthru_power(painter_device_t device, bool power_on) { - // No-op - return true; -} - -bool qp_ls0xx_passthru_clear(painter_device_t device) { - // Just re-init the display - painter_driver_t *driver = (painter_driver_t *)device; - return qp_ls0xx_init(device, driver->rotation); -} - -bool qp_ls0xx_flush(painter_device_t device) { - ls0xx_painter_device_t *ls0xx = (ls0xx_painter_device_t *)device; - surface_painter_device_t *surface = &(ls0xx->surface); - surface_dirty_data_t dirty = surface->dirty; - - if (!dirty.is_dirty) { - // nothing to be sent - return true; - } - - // find out dirty area. update is done on **complete** horizontal lines, - // which means that if device is sideways, we need to check l/r instead - uint16_t top = 0; - uint16_t bottom = 0; - switch (ls0xx->base.rotation) { - case QP_ROTATION_0: - top = dirty.t; - bottom = dirty.b; - break; - - // TODO: Check whether this are backwards - case QP_ROTATION_90: - top = dirty.l; - bottom = dirty.r; - break; - - case QP_ROTATION_180: - top = dirty.b; - bottom = dirty.t; - break; - - case QP_ROTATION_270: - top = dirty.r; - bottom = dirty.l; - break; - } - - // bytes sent for each row's data - uint8_t bytes_per_line = - (ls0xx->base.panel_width + 7) / 8 * ls0xx->base.native_bits_per_pixel; - // offset used to access such data - uint16_t buffer_offset = top * bytes_per_line; - - // start sending - writePinHigh(ls0xx->spi_config.chip_select_pin); - uint8_t cmd = LS0XX_WRITE | LS0XX_VCOM; - spi_transmit(&cmd, 1); - - // dummy data for alignment, value doesn't matter - uint8_t dummy = 0; - - // iterate over the lines - for (uint8_t i = 0; i < bottom + 1 - top; ++i) { - // set y-pos (counts from 1, needs the `+1`) - uint8_t n_line = bitrev(i + top + 1); - spi_transmit(&n_line, 1); - - // send data - spi_transmit(&surface->u8buffer[buffer_offset], bytes_per_line); - buffer_offset += bytes_per_line; - - spi_transmit(&dummy, 1); - } - - spi_transmit(&dummy, 1); - writePinLow(ls0xx->spi_config.chip_select_pin); - - // clear surface's dirty area, no API to prevent extra prints - surface->base.driver_vtable->flush(surface); - - return true; -} - -bool qp_ls0xx_passthru_viewport(painter_device_t device, uint16_t left, - uint16_t top, uint16_t right, uint16_t bottom) { - ls0xx_painter_device_t *ls0xx = (ls0xx_painter_device_t *)device; - painter_driver_t *surface = (painter_driver_t *)&ls0xx->surface; - - return surface->driver_vtable->viewport(surface, left, top, right, bottom); -} - -bool qp_ls0xx_passthru_pixdata(painter_device_t device, const void *pixel_data, - uint32_t native_pixel_count) { - ls0xx_painter_device_t *ls0xx = (ls0xx_painter_device_t *)device; - painter_driver_t *surface = (painter_driver_t *)&ls0xx->surface; - - return surface->driver_vtable->pixdata(surface, pixel_data, - native_pixel_count); -} - -bool qp_ls0xx_passthru_palette_convert(painter_device_t device, - int16_t palette_size, - qp_pixel_t *palette) { - ls0xx_painter_device_t *ls0xx = (ls0xx_painter_device_t *)device; - painter_driver_t *surface = (painter_driver_t *)&ls0xx->surface; - - return surface->driver_vtable->palette_convert(surface, palette_size, - palette); -} - -bool qp_ls0xx_passthru_append_pixels(painter_device_t device, - uint8_t *target_buffer, - qp_pixel_t *palette, uint32_t pixel_offset, - uint32_t pixel_count, - uint8_t *palette_indices) { - ls0xx_painter_device_t *ls0xx = (ls0xx_painter_device_t *)device; - painter_driver_t *surface = (painter_driver_t *)&ls0xx->surface; - - return surface->driver_vtable->append_pixels(surface, target_buffer, palette, - pixel_offset, pixel_count, - palette_indices); -} - -bool qp_ls0xx_passthru_append_pixdata(painter_device_t device, - uint8_t *target_buffer, - uint32_t pixdata_offset, - uint8_t pixdata_byte) { - ls0xx_painter_device_t *ls0xx = (ls0xx_painter_device_t *)device; - painter_driver_t *surface = (painter_driver_t *)&ls0xx->surface; - - return surface->driver_vtable->append_pixdata(surface, target_buffer, - pixdata_offset, pixdata_byte); -} - -const painter_driver_vtable_t ls0xx_driver_vtable = { - .init = qp_ls0xx_init, - .power = qp_ls0xx_passthru_power, - .clear = qp_ls0xx_passthru_clear, - .flush = qp_ls0xx_flush, - .pixdata = qp_ls0xx_passthru_pixdata, - .viewport = qp_ls0xx_passthru_viewport, - .palette_convert = qp_ls0xx_passthru_palette_convert, - .append_pixels = qp_ls0xx_passthru_append_pixels, - .append_pixdata = qp_ls0xx_passthru_append_pixdata, -}; - -painter_device_t qp_ls0xx_device_t_make_spi_device(uint16_t panel_width, - uint16_t panel_height, - pin_t chip_select_pin, - uint16_t spi_divisor, - int spi_mode, void *buf) { - for (uint32_t i = 0; i < LS0XX_NUM_DEVICES; ++i) { - ls0xx_painter_device_t *driver = &ls0xx_device_t_drivers[i]; - if (!driver->base.driver_vtable) { - painter_device_t surface = qp_make_mono1bpp_surface_advanced( - &driver->surface, 1, panel_width, panel_height, buf); - if (!surface) { - return NULL; - } - driver->base.driver_vtable = - (const painter_driver_vtable_t *)&ls0xx_driver_vtable; - driver->base.comms_vtable = - (const painter_comms_vtable_t *)&spi_comms_inverted_cs_vtable; - driver->base.native_bits_per_pixel = 1; - driver->base.panel_width = panel_width; - driver->base.panel_height = panel_height; - driver->base.rotation = QP_ROTATION_0; - driver->base.offset_x = 0; - driver->base.offset_y = 0; - - // SPI and other pin configuration - driver->base.comms_config = &driver->spi_config; - driver->spi_config.chip_select_pin = chip_select_pin; - driver->spi_config.lsb_first = false; - driver->spi_config.divisor = spi_divisor; - driver->spi_config.mode = spi_mode; - - if (!qp_internal_register_device((painter_device_t)driver)) { - memset(driver, 0, sizeof(ls0xx_painter_device_t)); - return NULL; - } - - return (painter_device_t)driver; - } - } - - return NULL; -} diff --git a/modules/ls0xx/ls0xx.h b/modules/ls0xx/ls0xx.h @@ -1,27 +0,0 @@ -// Copyright Pablo Martinez (@elpekenin) <elpekenin@elpekenin.dev> -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once - -#include "qp.h" - -#ifndef LS0XX_NUM_DEVICES -#define LS0XX_NUM_DEVICES 1 -#endif - -/** - * Factory method for an LS0XX SPI device. - * - * Args: - * panel_width: Width of the display - * panel_height: Height of the display - * chip_select_pin: GPIO pin used for SPI chip select (CS) - * spi_divisor: SPI divisor to use when communicating with the display - * spi_mode: SPI mode to use when communicating with the display - * buf: Address of the buffer where data will be stored - */ -painter_device_t qp_ls0xx_device_t_make_spi_device(uint16_t panel_width, - uint16_t panel_height, - pin_t chip_select_pin, - uint16_t spi_divisor, - int spi_mode, void *buf); diff --git a/modules/ls0xx/ls0xx_opcodes.h b/modules/ls0xx/ls0xx_opcodes.h @@ -1,9 +0,0 @@ -// Copyright Pablo Martinez (@elpekenin) <elpekenin@elpekenin.dev> -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once - -// NOTE: written LSB first as the display expects them -#define LS0XX_WRITE 0x80 // Start sending framebuffer -#define LS0XX_VCOM 0x40 // Set VCOM high -#define LS0XX_CLEAR 0x20 // Clear diff --git a/modules/ls0xx/qmk_module.json b/modules/ls0xx/qmk_module.json @@ -1,4 +0,0 @@ -{ - "maintainer": "elpekenin", - "module_name": "ls0xx" -} diff --git a/modules/ls0xx/rules.mk b/modules/ls0xx/rules.mk @@ -1,7 +0,0 @@ -QUANTUM_PAINTER_NEEDS_SURFACE := yes - -# FIXME: not sure if this here is good enough, may be processed *after* -# qp's internal makefile and not impact it -QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes - -SRC += $(MODULE_PATH_LS0XX)/ls0xx.c