Cubitpad
first hardware proj: macropad plus a knob + screen goal started as a small project, ended up being a project that attempts to maximize the amount of features for the available resources (limited io's)
Created by
cubit010
Hackpad
44 views
2 followers
cubit010
added to the journal ago
added more custom functions to the rotary encoder
now is tri-mode with custom written class

now with brightness control, audio control, custom app volume control, and mode switching with long hold, and icons to indicate mode
cubit010
submitted Cubitpad for review ago
cubit010
added to the journal ago
Pain but finally done
Resistors I bought arrived today!
time to finally finish the project off I thought with confidence
(oh how wrong I was)
turns out the circuit I had previously designed with the two different resistors, wasn't enough to differenciate between directions (shown below)

and had to write separate code as a tester because I couldn't figure out analogin with kmk's very limited docs
after a bunch of testing using a scissor as a jumper I determined that for some reason even though the two resistors vary in resistance (47k and 100k), wasn't enough to be any different within the ADC's range
I had to ad-hoc together a voltage divider, which was able to get me the voltage differnce needed; with 1.1k being both a/b pins pulled to gnd, 1.3k begin one pin, 19000 being the other, and 60000+ for none active
this is able to get me the distinctions, however I still need a way to integrate them into KMK, and this is where I spent most of my time today, trying to figure out the analogio / analogin interface, writing a custom module to process the analog input, and testing this code that failed many many many times...

anyways above is what the divider looks like, kinda sketch but i was lucky the 3v3 pin was directly next to where i placed my original resistors, so i don't have to worry about structural integrity of a resistor leg spanning long distances
Alas, i'm finally free from done with the Cubitpad
cubit010
added to the journal ago
customizing the kmk even more
replaced the mute/play words with 8x8 sized icons i drew myself
took a while to figure out how the image system worked, and then found out i had to write a setter function for image because initialization takes strings but setting it directly can't be done


cubit010
added to the journal ago
More advanced KMK coding
did more advanced KMK, such as adding dual function to a key as a custom key, and also updating the display to indicate the mode it's currently on
took forever to debug and write as the docs are very sparse in info although it is nice that the community is decently fast at responding to questions, and updating the docs when clarification is clearly needed
trying to update the display live and finding a way to do so was kind of a pain
trying to make custom keys with custom functionality while knowing very little python is also a pain
adding multiple scanners to one macropad is also a pain
spent the whole afternoon instead of doing hw working on the software on ts
kinda pmo how long it took

Rotary encoder push button programmed to have 2 functions, mute, and play/pause, that is toggled with a long push of the push button, this is also independent of layers, and also updates the display on the current mode, shown below, in different colored layers, led functionalities, and rotary encoder modes






cubit010
added to the journal ago
screen + software integration
made the keypad multilayer, integration with holdtap, screen to display current layer, and also LED backlight color to indicate layer
when mode switching leds indicate / warn that layer is being changed,
when holding the mode change key, it will turn off all other leds and light up that key with red, and when a layer is confirmed, it will flash red on the whole for 0.15s to indicate layer change as mentioned above
has a sleep mode for the oled after 10 mins, and lowered brightness in 20s


software took a long time last night reading over docs and stuff to figure out correct syntax + debugging layers
BUT IT LOOKS SO COOL HELL YEAH
cubit010
added to the journal ago
Soldering LEDs and new components
Kit v2 arrived and was able to finish off most of the features
FINALY got the backlight to work after spending like 1 hour reflowing some solder in weak spots that was hard to identify in order to make all 9 light up consistently



Def worth it tho it looks so cool
(This also gives me a good estimate of brightness for how I should approach power budgeting in a full size keyboard, as previously I calculated if at full brightness the LEDs would use more electricity than the usb provides)
Also ofc spent a bunch of time debugging the code and identifying issues, for the most part it’s working again, and now I just have to finish off on the OLED and get the resistors for the rotary encoder
cubit010
added to the journal ago
V3.5 pcb + some parts arrived

New PCB arrived today + soldered the hot swap sockets
Added all the diodes I have from the previous kit
Waiting on the kit to arrive before soldering the rest + going to buy the resistors for the ADC soon
1Mon ⚡
requested changes for Cubitpad ago
really clean hackpad! please upload an image of it to your readme and check the submissions guidelines (https://blueprint.hackclub.com/about/submission-guidelines) to make sure everything is good to go!
Tier: 4
cubit010
added to the journal ago
tuning plate and adding screen support
Last version of the plate fit very well but it had some inconsistencies with the case, and with this version i was able to fix that





First I added a block to support the oled screen i have since previously i used a standalone block and had to be taped down, integrating it into the plate is a perfect solution
Second the plate's well was too wide, so i shrunk it to match the dimensions of the top case, and both now fit perfectly (with exception of z axis gap because the bottom case had some bumps that made it so it can't ever close fully)
cubit010
added to the journal ago
oopsies

just realized that i made an oopsies while updating the pcb
it was originally lined up with the fill but i must've misclicked at some point and dragged the line out a bit and i already sent it off to manufacturing so uh
not much of an update but now my pcb is gonna be so much less satisfying to look at knowing there's this flaw in it
cubit010
added to the journal ago
Designing the plate for the keys
now that i'm switching to hotswap i needed to design a plate for the keys to sit on so i did that

this took 3 hours which is longer than i thought but i think it's worth it
features: (should be) perfect spacings between keys and case wall, and case top
voids to account for diodes' wire soldering that won't be flat to the pcb
calibrated height
also slots for the keys to slot into and lock properly
designed clearance for 3d printing as well as slopes for easier removal
cubit010
submitted Cubitpad for review ago
cubit010
added to the journal ago
modified into like a v3.5 with hotswap
so yeah
made a copy of the project so i can make a separate version with hot swap keys instead of soldered keys
will have to order the hot swap sockets but it'll be a nice touch to have and it should be worth it
will have to redesign the case to use a plate tho but shouldn't be too bad

the rewiring was a bit annoying as both contacts must be on the back sides now, so I can't dedicate only rows to one layer and columns to the other, but I was able to work everything out in a nice way
cubit010
added to the journal ago
Erm what the sigma (im never saying that again)

So ummm for some reason the XIAO decided it was a good time to unalive itself today
So now instead of only the keys working on my macro, now nothing works!!! (YIPPEEE)
there shoudln't have been anything that could've fried the chip, there was no josling, it was sitting in a case and the case had an air pocket for all electronic contacts so nothing should've conducted and shorted..
I tried nuking the bootloader and tried many times to reupload the u2f for circuitpython to no avail I have no clue what happened
Then thought it might’ve been some broken connections with the pins but after reflowing everything still nothing works so RIP
One good news tho is a new kit + some funds for pcb v3 is being sent out (:sob: ty hack club ik this is more money than it should’ve cost for me to make the project but the neopixel pcb was kinda unavoidable same with the XIAO randomly dying)
cubit010
added to the journal ago
refining the PCB design

thickened some routes that are more critical such as the +5v to 0.4mm traces (probs overkill but it doesn't add manufacturing cost so why not)
as well as adding some fill areas to prevent right angles
cubit010
added to the journal ago
Figured out a way that works + new pcb route + CORRECT LED
over the course of the last 2 weeks i've been on-and-off researching different ways I can potentially save pins without the use of another microcontroller, it took many many hours in the research itself (probs around 6-7 [very funny ik] hours over the past week or so, 1.5 hours ish today scrolling thru forums etc etc, none of them seemed to give any promise as they are either inconsistent, logic fails (i've looked at like 4 diff possibilities and all of them turned out to fail, such as one I originally thought could work, where I would reuse 2 column pins, spent way too long on that just for me to realize that if both columns are powered by one row during a scan, it would defeat the transistor's entire purpose)
one final resort i realized today(more like the 10th as this log is posted on the 11th at 1AM) that there's one actually possible setup to save a pin without the attiny, which is to run the A/B pins thru different resistors and measure the voltage with the analog pin (genius ik)
i spent a bunch of time researching the resolution of the rp2040 adc, as well as the workings of the EC11 encoder, and figured if i bought some resistor like from a resistor kit that are varied enough, the rp2040 should have more than enough resolution to tell the signals apart (and if my initial settings were wrong i can just adjust in firmware the values)
Along with that I did bugfix the led pins to match with the actual manufactured pinout

now it matches the footprint so hopefully this time everything will work out
Had to redo majority of the wiring, but some connections were made way easier than last time because of some optimizations with layout

now i just need some new funding so I can actually get a fully functioning macropad working
would be so sick
(yikes another long yap with 1.8k chars)
cubit010
added to the journal ago
more firmware stuff + discovery
so uh spent forever looking at the docs to figure out the kmk needed for the hackpad.. and it worked!!! (still no rotary encoder tho bc the attiny is still dead, will likely just replace it with a transistor next time if possible)
New discovery!! my pcb routing for the LEDs are Fudged...
here's the thing
After I started working on the initial pad there was an announcement in blueprint saying that the LEDs are actually smd mounted up-side-down on the back of the board, and a new footprint was needed
Neat! As unlike some others I fortunately never did added any LEDs until after the footprint package came out, and after wiring everything up, nothing seems to budge
no matter what kind of software I tried I could not get a single LED to light up
There was a small chance it was just that the 3v3 was too low to register as a signal, but I decided to look at the hardware and my schematic, and then I found it...
(Footprint included in the care package)

(datasheet with pin numbers)

(Schematic)

Now the issue took me a while to figure out, had to draw a few diagrams and such to determine alignment and such because it's backmounted and kicad doesn't have a mirror feature when viewing back
anyways, the issue was that the footprint pins didn't match up with the schematic pins, so that for pin 3 in the footprint, it was supposted to be GND, but in the schematic symbol that I used for default because that's what the tutorial used, pin 3 is DIN, and everything else is also mismatched
that mean that literally every pin is wrong because I wired based on what the schematic gave me, and there's a high chance that I killed all of the leds because my 5v pin wasn't where it was supposed to go in the datasheet, as a result of the schematic pins not aligning properly with what the datasheet is
I'm hoping I can get a new kit and more funding to replace the bad PCB, but on the bright side, if I do get to remake the PCB, I can redesign it so that there's no need for an attiny, and just use a transistor instead so I don't have to worry about flashing firmware
(wow 2000 chars for a log, holy yap)
cubit010
added to the journal ago
uhhhhhhhhhhhhhhhhhhhhhhhh might need to buy a new chip

so i've been thinking i likely either burnt the chip, or it somehow isn't working
i'll probably work on getting a different chip and also desolder the old one and everything, maybe
will try to get the rest of the macropad working for now
cubit010
added to the journal ago
might've screwed myself over
(late 25th)
trying to get the firmware working; since i added the attiny212 to the board to in effect get more gpios, i'm struggling to flash the firmware for it to detect the rotary encoder as well as its push button, gpt, gemini, and claude sonnet were not of much help as I think I screwed myself over with the electrical design, and it could just be unavoidable
I might..? have to buy a dedicated flasher, desolder the chip from the pcb, and put it back and resolder
might be a pain

cubit010
added to the journal ago
Soldering, 3d printing bottom case, and support removal
(this was yesterday the 24th but forgot to log)
2 hours soldering, (and accidentally burning myself twice in the process, both of which was when i was doing something else and i accidentally swiped the soldering iron tip (not fun) but they mostly recovered

(don't mind the gpt, first time soldering had to make sure)

(earlier 25th)
3d printed bottom case overnight with supports, and a lot of it unfortunately, kinda new to printing with supports and i think the way i aligned the print made the supports extra hard to remove

spent forever (which is around 1 hour and a half) scraping away at the bottom of the case to remove as much support material as possible
cubit010
added to the journal ago
redone the design
finished redoing the design with no compromises while adding leds (ig if you want to count adding a small MCU to the board a small compromise but whatever it was basically the only option
schematic with the added MCU

New PCB layout (using the underside footprint for the leds)
also using knowledge from other projects (specifically the devboard) with the ground fill

new mcu is also on the back, as SMD, and under the oled on the front Cu
cubit010
added to the journal ago
uhhhhhh modifying the design to add leds
the kit arrived with leds even though my design didn't have them
but now that I have them i might as well use them soooooo REDESIGN TIME
but the fact that i already used all the pins on the board is NOT helping
spent forever researching different ways to wire the keyboard or the rotary encoder but so far to no avail

CAN ⚡🚀
approved Cubitpad ago
Nice hackpad!
cubit010
submitted Cubitpad for review ago
cubit010
added to the journal ago
Added screen
Added display finally
took a long time to figure out how to add symbols because I could not find a single source for the symbol that I want and took a while to make the symbol, and assigning it to a footprint etc

overlaps with the rp2040 but it's on the other side of the board so it should be fine
All gpios are filled now tho, gonna start on making the case and writing the firmware whatnot later
cubit010
added to the journal ago
V2
started a v2 with a 3x3 matrix keypad layout, spent so long routing and improving on the design
basically made the 3x3, then realized for a matrix to properly function I do need some diodes, added those, kept the wiring relatively clean, then I realized I wanted a screen on the pad besides the scroll wheel/rotary encoder but there's not enough space and I didn't want to expand it beyond a 3x3, (plus there's not enough pins on the seeed to do that
So I had to reroute the rp2040 on the back of the pcb instead of the front, so I can save the front space for the screen I will put in later
that meant I had to change the wirings of each connections to the opposite side which made it slightly messier but it's still pretty clean imo
There's no more LEDs btw cause I want to save gpios for the screen later
cubit010
added to the journal ago
Cleaned up routing -- gonna add more next

after spending like another an hour since I now have experience from the first routing, I optimized the placement of the routes a bit more like putting the gnds on the back in a grid by themselves, so as to clean up the look as well as removing the unnecessary vias and jams that was all over the place previously
cubit010
added to the journal ago
PCB design
made the pcb design (took rly long to figure out how to pcb :sob:)
still getting the hang of wiring and figuring out what goes where

wiring is a bit weird and rly tight, prob not optimal but hey it's my first hardware project, gonna make it better or whatnot later, didn't matricize the keys but will prob have to later because I plan on adding a few more keys and a bunch more leds
cubit010
started Cubitpad ago
11/18/2025 - PCB design
made the pcb design (took rly long to figure out how to pcb :sob:)
still getting the hang of wiring and figuring out what goes where

wiring is a bit weird and rly tight, prob not optimal but hey it's my first hardware project, gonna make it better or whatnot later, didn't matricize the keys but will prob have to later because I plan on adding a few more keys and a bunch more leds
11/19/2025 12 AM - Cleaned up routing -- gonna add more next

after spending like another an hour since I now have experience from the first routing, I optimized the placement of the routes a bit more like putting the gnds on the back in a grid by themselves, so as to clean up the look as well as removing the unnecessary vias and jams that was all over the place previously
11/19/2025 10 PM - V2
started a v2 with a 3x3 matrix keypad layout, spent so long routing and improving on the design
basically made the 3x3, then realized for a matrix to properly function I do need some diodes, added those, kept the wiring relatively clean, then I realized I wanted a screen on the pad besides the scroll wheel/rotary encoder but there's not enough space and I didn't want to expand it beyond a 3x3, (plus there's not enough pins on the seeed to do that
So I had to reroute the rp2040 on the back of the pcb instead of the front, so I can save the front space for the screen I will put in later
that meant I had to change the wirings of each connections to the opposite side which made it slightly messier but it's still pretty clean imo
There's no more LEDs btw cause I want to save gpios for the screen later
11/20/2025 - Added screen
Added display finally
took a long time to figure out how to add symbols because I could not find a single source for the symbol that I want and took a while to make the symbol, and assigning it to a footprint etc

overlaps with the rp2040 but it's on the other side of the board so it should be fine
All gpios are filled now tho, gonna start on making the case and writing the firmware whatnot later
12/11/2025 - uhhhhhh modifying the design to add leds
the kit arrived with leds even though my design didn't have them
but now that I have them i might as well use them soooooo REDESIGN TIME
but the fact that i already used all the pins on the board is NOT helping
spent forever researching different ways to wire the keyboard or the rotary encoder but so far to no avail

12/12/2025 - redone the design
finished redoing the design with no compromises while adding leds (ig if you want to count adding a small MCU to the board a small compromise but whatever it was basically the only option
schematic with the added MCU

New PCB layout (using the underside footprint for the leds)
also using knowledge from other projects (specifically the devboard) with the ground fill

new mcu is also on the back, as SMD, and under the oled on the front Cu
12/25/2025 11:54 PM - Soldering, 3d printing bottom case, and support removal
(this was yesterday the 24th but forgot to log)
2 hours soldering, (and accidentally burning myself twice in the process, both of which was when i was doing something else and i accidentally swiped the soldering iron tip (not fun) but they mostly recovered

(don't mind the gpt, first time soldering had to make sure)

(earlier 25th)
3d printed bottom case overnight with supports, and a lot of it unfortunately, kinda new to printing with supports and i think the way i aligned the print made the supports extra hard to remove

spent forever (which is around 1 hour and a half) scraping away at the bottom of the case to remove as much support material as possible
12/25/2025 11:58 PM - might've screwed myself over
(late 25th)
trying to get the firmware working; since i added the attiny212 to the board to in effect get more gpios, i'm struggling to flash the firmware for it to detect the rotary encoder as well as its push button, gpt, gemini, and claude sonnet were not of much help as I think I screwed myself over with the electrical design, and it could just be unavoidable
I might..? have to buy a dedicated flasher, desolder the chip from the pcb, and put it back and resolder
might be a pain

12/26/2025 - uhhhhhhhhhhhhhhhhhhhhhhhh might need to buy a new chip

so i've been thinking i likely either burnt the chip, or it somehow isn't working
i'll probably work on getting a different chip and also desolder the old one and everything, maybe
will try to get the rest of the macropad working for now
12/27/2025 - more firmware stuff + discovery
so uh spent forever looking at the docs to figure out the kmk needed for the hackpad.. and it worked!!! (still no rotary encoder tho bc the attiny is still dead, will likely just replace it with a transistor next time if possible)
New discovery!! my pcb routing for the LEDs are Fudged...
here's the thing
After I started working on the initial pad there was an announcement in blueprint saying that the LEDs are actually smd mounted up-side-down on the back of the board, and a new footprint was needed
Neat! As unlike some others I fortunately never did added any LEDs until after the footprint package came out, and after wiring everything up, nothing seems to budge
no matter what kind of software I tried I could not get a single LED to light up
There was a small chance it was just that the 3v3 was too low to register as a signal, but I decided to look at the hardware and my schematic, and then I found it...
(Footprint included in the care package)

(datasheet with pin numbers)

(Schematic)

Now the issue took me a while to figure out, had to draw a few diagrams and such to determine alignment and such because it's backmounted and kicad doesn't have a mirror feature when viewing back
anyways, the issue was that the footprint pins didn't match up with the schematic pins, so that for pin 3 in the footprint, it was supposted to be GND, but in the schematic symbol that I used for default because that's what the tutorial used, pin 3 is DIN, and everything else is also mismatched
that mean that literally every pin is wrong because I wired based on what the schematic gave me, and there's a high chance that I killed all of the leds because my 5v pin wasn't where it was supposed to go in the datasheet, as a result of the schematic pins not aligning properly with what the datasheet is
I'm hoping I can get a new kit and more funding to replace the bad PCB, but on the bright side, if I do get to remake the PCB, I can redesign it so that there's no need for an attiny, and just use a transistor instead so I don't have to worry about flashing firmware
(wow 2000 chars for a log, holy yap)
1/11/2026 1 AM - Figured out a way that works + new pcb route + CORRECT LED
over the course of the last 2 weeks i've been on-and-off researching different ways I can potentially save pins without the use of another microcontroller, it took many many hours in the research itself (probs around 6-7 [very funny ik] hours over the past week or so, 1.5 hours ish today scrolling thru forums etc etc, none of them seemed to give any promise as they are either inconsistent, logic fails (i've looked at like 4 diff possibilities and all of them turned out to fail, such as one I originally thought could work, where I would reuse 2 column pins, spent way too long on that just for me to realize that if both columns are powered by one row during a scan, it would defeat the transistor's entire purpose)
one final resort i realized today(more like the 10th as this log is posted on the 11th at 1AM) that there's one actually possible setup to save a pin without the attiny, which is to run the A/B pins thru different resistors and measure the voltage with the analog pin (genius ik)
i spent a bunch of time researching the resolution of the rp2040 adc, as well as the workings of the EC11 encoder, and figured if i bought some resistor like from a resistor kit that are varied enough, the rp2040 should have more than enough resolution to tell the signals apart (and if my initial settings were wrong i can just adjust in firmware the values)
Along with that I did bugfix the led pins to match with the actual manufactured pinout

now it matches the footprint so hopefully this time everything will work out
Had to redo majority of the wiring, but some connections were made way easier than last time because of some optimizations with layout

now i just need some new funding so I can actually get a fully functioning macropad working
would be so sick
(yikes another long yap with 1.8k chars)
1/11/2026 7 PM - refining the PCB design

thickened some routes that are more critical such as the +5v to 0.4mm traces (probs overkill but it doesn't add manufacturing cost so why not)
as well as adding some fill areas to prevent right angles
1/12/2026 - Erm what the sigma (im never saying that again)

So ummm for some reason the XIAO decided it was a good time to unalive itself today
So now instead of only the keys working on my macro, now nothing works!!! (YIPPEEE)
there shoudln't have been anything that could've fried the chip, there was no josling, it was sitting in a case and the case had an air pocket for all electronic contacts so nothing should've conducted and shorted..
I tried nuking the bootloader and tried many times to reupload the u2f for circuitpython to no avail I have no clue what happened
Then thought it might’ve been some broken connections with the pins but after reflowing everything still nothing works so RIP
One good news tho is a new kit + some funds for pcb v3 is being sent out (:sob: ty hack club ik this is more money than it should’ve cost for me to make the project but the neopixel pcb was kinda unavoidable same with the XIAO randomly dying)
1/14/2026 - modified into like a v3.5 with hotswap
so yeah
made a copy of the project so i can make a separate version with hot swap keys instead of soldered keys
will have to order the hot swap sockets but it'll be a nice touch to have and it should be worth it
will have to redesign the case to use a plate tho but shouldn't be too bad

the rewiring was a bit annoying as both contacts must be on the back sides now, so I can't dedicate only rows to one layer and columns to the other, but I was able to work everything out in a nice way
1/17/2026 - Designing the plate for the keys
now that i'm switching to hotswap i needed to design a plate for the keys to sit on so i did that

this took 3 hours which is longer than i thought but i think it's worth it
features: (should be) perfect spacings between keys and case wall, and case top
voids to account for diodes' wire soldering that won't be flat to the pcb
calibrated height
also slots for the keys to slot into and lock properly
designed clearance for 3d printing as well as slopes for easier removal
1/19/2026 7 PM - oopsies

just realized that i made an oopsies while updating the pcb
it was originally lined up with the fill but i must've misclicked at some point and dragged the line out a bit and i already sent it off to manufacturing so uh
not much of an update but now my pcb is gonna be so much less satisfying to look at knowing there's this flaw in it
1/19/2026 10 PM - tuning plate and adding screen support
Last version of the plate fit very well but it had some inconsistencies with the case, and with this version i was able to fix that





First I added a block to support the oled screen i have since previously i used a standalone block and had to be taped down, integrating it into the plate is a perfect solution
Second the plate's well was too wide, so i shrunk it to match the dimensions of the top case, and both now fit perfectly (with exception of z axis gap because the bottom case had some bumps that made it so it can't ever close fully)
1/30/2026 - V3.5 pcb + some parts arrived

New PCB arrived today + soldered the hot swap sockets
Added all the diodes I have from the previous kit
Waiting on the kit to arrive before soldering the rest + going to buy the resistors for the ADC soon
2/2/2026 - Soldering LEDs and new components
Kit v2 arrived and was able to finish off most of the features
FINALY got the backlight to work after spending like 1 hour reflowing some solder in weak spots that was hard to identify in order to make all 9 light up consistently



Def worth it tho it looks so cool
(This also gives me a good estimate of brightness for how I should approach power budgeting in a full size keyboard, as previously I calculated if at full brightness the LEDs would use more electricity than the usb provides)
Also ofc spent a bunch of time debugging the code and identifying issues, for the most part it’s working again, and now I just have to finish off on the OLED and get the resistors for the rotary encoder
2/4/2026 10 AM - screen + software integration
made the keypad multilayer, integration with holdtap, screen to display current layer, and also LED backlight color to indicate layer
when mode switching leds indicate / warn that layer is being changed,
when holding the mode change key, it will turn off all other leds and light up that key with red, and when a layer is confirmed, it will flash red on the whole for 0.15s to indicate layer change as mentioned above
has a sleep mode for the oled after 10 mins, and lowered brightness in 20s


software took a long time last night reading over docs and stuff to figure out correct syntax + debugging layers
BUT IT LOOKS SO COOL HELL YEAH
2/4/2026 10 PM - More advanced KMK coding
did more advanced KMK, such as adding dual function to a key as a custom key, and also updating the display to indicate the mode it's currently on
took forever to debug and write as the docs are very sparse in info although it is nice that the community is decently fast at responding to questions, and updating the docs when clarification is clearly needed
trying to update the display live and finding a way to do so was kind of a pain
trying to make custom keys with custom functionality while knowing very little python is also a pain
adding multiple scanners to one macropad is also a pain
spent the whole afternoon instead of doing hw working on the software on ts
kinda pmo how long it took

Rotary encoder push button programmed to have 2 functions, mute, and play/pause, that is toggled with a long push of the push button, this is also independent of layers, and also updates the display on the current mode, shown below, in different colored layers, led functionalities, and rotary encoder modes






2/4/2026 11 PM - customizing the kmk even more
replaced the mute/play words with 8x8 sized icons i drew myself
took a while to figure out how the image system worked, and then found out i had to write a setter function for image because initialization takes strings but setting it directly can't be done


2/10/2026 1 AM - Pain but finally done
Resistors I bought arrived today!
time to finally finish the project off I thought with confidence
(oh how wrong I was)
turns out the circuit I had previously designed with the two different resistors, wasn't enough to differenciate between directions (shown below)

and had to write separate code as a tester because I couldn't figure out analogin with kmk's very limited docs
after a bunch of testing using a scissor as a jumper I determined that for some reason even though the two resistors vary in resistance (47k and 100k), wasn't enough to be any different within the ADC's range
I had to ad-hoc together a voltage divider, which was able to get me the voltage differnce needed; with 1.1k being both a/b pins pulled to gnd, 1.3k begin one pin, 19000 being the other, and 60000+ for none active
this is able to get me the distinctions, however I still need a way to integrate them into KMK, and this is where I spent most of my time today, trying to figure out the analogio / analogin interface, writing a custom module to process the analog input, and testing this code that failed many many many times...

anyways above is what the divider looks like, kinda sketch but i was lucky the 3v3 pin was directly next to where i placed my original resistors, so i don't have to worry about structural integrity of a resistor leg spanning long distances
Alas, i'm finally free from done with the Cubitpad
2/10/2026 6 PM - added more custom functions to the rotary encoder
now is tri-mode with custom written class

now with brightness control, audio control, custom app volume control, and mode switching with long hold, and icons to indicate mode