Diag| Considering item [tag:pappp.net,2025-08-26:/2410252] "Doge uploaded live copy of Social Security database to 'vulnerable' cloud server"
Diag| Considering item [tag:pappp.net,2025-08-26:/2410211] "We regret but have to temporary suspend the shipments to USA"
Diag| Considering item [tag:pappp.net,2025-08-26:/2410193] "Troubled USB Device? This Tool Can Help"
Diag| Considering item [tag:pappp.net,2025-08-26:/2410135] "The size of Adobe Reader installers through the years"
Diag| Considering item [tag:pappp.net,2025-08-25:/2409944] "Google will allow only apps from verified developers to be installed on Android"
Diag| Considering item [tag:pappp.net,2025-08-24:/2409578] "Picking an Old Operating System"
Diag| Considering item [tag:pappp.net,2025-08-22:/2409290] "US government takes 10 percent stake in Intel in exchange for money it was already on the hook for"
Diag| Considering item [tag:pappp.net,2025-08-22:/2409328] "Nitro: A tiny but flexible init system and process supervisor"
Diag| Considering item [tag:pappp.net,2025-08-21:/2408908] "James Dobson, Influential Leader of the Religious Right, Dies at 89"
Diag| Considering item [tag:pappp.net,2025-08-20:/2408610] "FDA warns public to throw out potentially radioactive shrimp"
Diag| Considering item [tag:pappp.net,2025-08-15:/2407469] "HTTP/1.1 must die: the desync endgame"
Diag| Considering item [tag:pappp.net,2025-08-15:/2407392] "Open hardware desktop 3D printing is dead – you just don’t know it yet"
Diag| Considering item [tag:pappp.net,2025-08-15:/2407386] "What kids told us about how to get them off their phones"
Diag| Considering item [tag:pappp.net,2025-08-14:/2407170] ""Privacy preserving age verification" is bullshit"
Diag| Considering item [tag:pappp.net,2025-08-12:/2406472] "Firefox’ new “AI” features cause  CPU spikes and battery drain"
Diag| Considering item [tag:pappp.net,2025-08-11:/2406239] "Reddit will block the Internet Archive"
Diag| Considering item [tag:pappp.net,2025-08-11:/2406191] "GitHub is no longer independent at Microsoft after CEO resignation"
Diag| Considering item [tag:pappp.net,2025-08-11:/2406033] "Vanishing from Hyundai’s data network"
Diag| Considering item [tag:pappp.net,2025-08-13:/2406677] "QNX: The Incredible 1.44M Demo"
Diag| Considering item [tag:pappp.net,2025-08-08:/2405403] "New executive order puts all grants under political control"
Diag| Considering item [tag:pappp.net,2025-08-07:/2405388] "Cursed Knowledge"
Diag| Considering item [tag:pappp.net,2025-08-05:/2404654] "Patch now: Millions of Dell PCs with Broadcom chips vulnerable to attack"
Diag| Considering item [tag:pappp.net,2025-08-05:/2404534] "Proxmox Virtual Environment 9.0 with Debian 13 released"
Diag| Considering item [tag:pappp.net,2025-08-06:/2404914] "The Real Origin of Cisco Systems (1999)"
Diag| Considering item [tag:pappp.net,2025-08-01:/2403752] "Tesla loses Autopilot wrongful death case in $329 million verdict"
Diag| Considering item [tag:pappp.net,2025-08-01:/2403745] "Tested: Microsoft Recall can still capture credit cards and passwords, a treasure trove for crooks"
Diag| Considering item [tag:pappp.net,2025-07-31:/2403404] "Epic just won its Google lawsuit again, and Android may never be the same"
Diag| Considering item [tag:pappp.net,2025-07-29:/2402644] "RP2350 A4, RP2354, and a New Hacking Challenge"
Diag| Considering item [tag:pappp.net,2025-07-28:/2402376] "Windows 11 is a minefield of micro-aggressions in the shipping lane of progressl"
Diag| Considering item [tag:pappp.net,2025-07-24:/2401424] "Efficient Computer's Electron E1 CPU"
Diag| Considering item [tag:pappp.net,2025-07-22:/2400766] "A Professor’s Search for the MingKwai, a Lost Chinese Typewriter"
Diag| Considering item [tag:pappp.net,2025-07-21:/2400386] "Vibe coding service Replit deleted user’s production database, faked data, told fibs galore"
Diag| Considering item [tag:pappp.net,2025-07-21:/2400437] "NIH limits scientists to six applications per year"
Diag| Considering item [tag:pappp.net,2025-07-21:/2400421] "An artificially complex XML schema as a lock-in tool"
Diag| Considering item [tag:pappp.net,2025-07-22:/2400779] "MakeShift: Security Analysis of Shimano Di2 Wireless Gear Shifting in Bicycles"
Diag| Considering item [tag:pappp.net,2025-07-18:/2399996] "Replication of Quantum Factorisation Records with a VIC-20, an Abacus, and a Dog"
Diag| Considering item [tag:pappp.net,2025-07-15:/2399026] "Marc Andreessen Is a Traitor"
Diag| Considering item [tag:pappp.net,2025-07-08:/2397262] "GlobalFoundries to Acquire MIPS"
Diag| Considering item [tag:pappp.net,2025-07-04:/2396489] "Nvidia won, we all lost"
Diag| Considering item [tag:pappp.net,2025-07-04:/2396473] "Ubuntu 25.10 to drop support for effectively all existing RISC-V hardware, focuses on future RISC-V hardware instead"
Diag| Considering item [tag:pappp.net,2025-07-03:/2396128] "AI note takers are flooding Zoom calls as workers opt to skip meetings"
Diag| Considering item [tag:pappp.net,2025-07-03:/2396110] "Surveillance Used by a Drug Cartel"
Diag| Considering item [tag:pappp.net,2025-07-02:/2395852] "Why The Latest Linux Kernel Won’t Run On Your 486 And 586 Anymore"
Diag| Considering item [tag:pappp.net,2025-07-01:/2395685] "Donkey Kong Country 2 and open bus"
Diag| Considering item [tag:pappp.net,2025-06-29:/2395064] "Wayback: experimental layer to run X desktop environments on Wayland"
Diag| Considering item [tag:pappp.net,2025-06-29:/2395059] "“I want a good parallel computer”"
Diag| Considering item [tag:pappp.net,2025-06-27:/2394461] "Apple Just Patented an Image Sensor with 20 Stops of Dynamic Range"
Diag| Considering item [tag:pappp.net,2025-06-26:/2394371] "Microsoft is moving antivirus providers out of the Windows kernel"
Diag| Considering item [tag:pappp.net,2025-06-26:/2394230] "Snow - Classic Macintosh emulator"
Diag| Considering item [tag:pappp.net,2025-06-25:/2394054] "Games run faster on SteamOS than Windows 11, Ars testing finds"
Diag| Considering item [tag:pappp.net,2025-06-24:/2393676] "Microsoft extends free Windows 10 security updates into 2026"
Diag| Considering item [tag:pappp.net,2025-06-24:/2393476] "Magic Lantern Software for Canon Cameras Is Back"
Diag| Considering item [tag:pappp.net,2025-06-21:/2393003] "linux-firmware >= 20250613.12fe085f-5 upgrade requires manual intervention"
Diag| Considering item [tag:pappp.net,2025-06-20:/2392846] "Cosmoe, BeOS/Haiku on Linux, returns from 18 year hiatus"
Diag| Considering item [tag:pappp.net,2025-06-20:/2392723] "Rise in 'alert fatigue' risks phone users disabling news notifications"
Diag| Considering item [tag:pappp.net,2025-06-18:/2392274] "Senate passes GENIUS Act—criticized as gifting Trump ample opportunity to grift"
Diag| Considering item [tag:pappp.net,2025-06-18:/2392074] "Scientists once hoarded pre-nuclear steel; now we’re hoarding pre-AI content"
Diag| Considering item [tag:pappp.net,2025-06-18:/2392100] "Keeping Snap and Crackle under Control with Prunt Printer Firmware"
Diag| Considering item [tag:pappp.net,2025-06-17:/2391828] "KiCad and Wayland Support"
Diag| Considering item [tag:pappp.net,2025-06-16:/2391591] "Reddit user surprised when 1960s computer panel emerged from collapsed family garage"
{"id":1646,"date":"2017-05-27T22:18:48","date_gmt":"2017-05-28T02:18:48","guid":{"rendered":"https:\/\/pappp.net\/?p=1646"},"modified":"2017-05-28T11:06:47","modified_gmt":"2017-05-28T15:06:47","slug":"microchorder","status":"publish","type":"post","link":"https:\/\/pappp.net\/?p=1646","title":{"rendered":"MicroChorder"},"content":{"rendered":"

I hacked together an Arduino Micro firmware that is a drop-in replacement for a Spiffchorder, long version and code below the fold.
\n<\/p>\n

My old Spiffchorder<\/a> board is no longer enumerating on USB, so I decided I needed to replace it. I figured the right thing to do was replace with a more modern microcontroller that has an integrated hardware USB stack instead of VUSB and some zenier diodes, most likely an Atmega 32U4 because they’re about the right size, familiar, and available on nice cheap breakout boards (usually as “Arduino Micro” or similar).<\/p>\n

While I was reading up, I saw that in the interim the original Spiffchorder folks had designed themselves FeatherChorder<\/a>, which uses an Adafruit Feather Bluatooth LE<\/a> to construct a Bluetooth 7-key chorder. The Feather BLE is, helpfully, a 32U4 Arduino with a Bluetooth module hardwired to the SPI pins. <\/p>\n

So, the obvious solution is to grab the keyer-handling code from FeatherChorder, replace the Bluetooth HID functionality with USB HID functionality, and call it a day. In principle this is straightforward because USB and Bluetooth use the same scan codes<\/a> (PDF Warning) and data format for HID devices, and there is a first-party USB Keyboard library for 32U4 based Arduinos. In actual fact, it’s a little annoying because the Arduino Keyboard library is easy instead of simple; the functions all take ASCII characters or #define’d magic numbers instead of scan codes, then beats them up to generate scan codes. <\/p>\n

At this point I compared alternatives:
\n1. Try to hack it to work with the Keyboard library
\n2. Try to do it directly with the HID library
\n3. Make a modified version of the Keyboard library to match FeatherChorder’s expectations
\n4. Make a modified version of the Keyboard library that matches the USB HID spec
\n5. Just start from scratch<\/p>\n

I gave (1) a quick pass and determined it would never work right for the whole keyboard, (2) would be ugly and involve a bunch of things that would be easier to do under (3), and (4) and (5) would be too more work than I wanted right now. <\/p>\n

So (3) was the most pleasant\/useful, and Keyboard_RAW which does modifier keys and such in a convenient-but-nonstandard way to match the FeatherChorder functions was born. It was still a small pain in the dick because C++ is a terrible language, but nothing out of the ordinary. <\/p>\n

The library code is attached in case someone else wants to use it, but I’m not posting these things somewhere source-control-y because it’s an ugly hack to minimize the work between FeatherChorder and a working USB device rather than a quality general-purpose library, and I still like to imagine I can avoid contributing to the world being built on top of crap. The “right” solution is probably to add some raw functions to the keyboard library upstream.<\/p>\n

A couple bucks to get whatever random 32U4 based Arduino Micro compatible knockoff was available<\/a> cheapest with Prime shipping and two days later, MicroChorder. <\/p>\n

Right now I just have my old keyer plugged in to [PRMINCF]=[8765432] with an 8th pin the Gnd adjacent to 2, which is nicely hardware minimal. I do still want to make a more presentable keyer sometime, likely with lighter switches, MX Browns feel good but are a little too fatiguing.<\/p>\n

If anyone wants to build their own, here are the Keyboard_RAW<\/a> library and MicroChorder<\/a> Arduino sketch. They aren’t works of art (or mostly my code), and have some missing bits (no media key support), but are tested in that I typed most of this post on one.<\/p>\n","protected":false},"excerpt":{"rendered":"

I hacked together an Arduino Micro firmware that is a drop-in replacement for a Spiffchorder, long version and code below the fold.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,8,37,1,10],"tags":[],"class_list":["post-1646","post","type-post","status-publish","format-standard","hentry","category-computers","category-diy","category-electronics","category-general","category-objects"],"_links":{"self":[{"href":"https:\/\/pappp.net\/index.php?rest_route=\/wp\/v2\/posts\/1646","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pappp.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pappp.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pappp.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pappp.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1646"}],"version-history":[{"count":0,"href":"https:\/\/pappp.net\/index.php?rest_route=\/wp\/v2\/posts\/1646\/revisions"}],"wp:attachment":[{"href":"https:\/\/pappp.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1646"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pappp.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1646"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pappp.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1646"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}