1.7 KiB
1.7 KiB
andTunes — device facts
Measured facts about the Rabbit R1 that the app is built around. (Moved out of the old andtunes/TASKS.md board on 2026-09-24.)
- Panel 480 × 640 px, physical density 320, override density 160 — so the app sees a 480 × 640 dp canvas on a 2.88" screen (~278 real ppi).
- One dp is about half its usual physical size here. Double every stock value: body text 28–32 sp, list rows ≥ 88 dp, menu tiles ~213 dp. A 48 dp row would be 4.4 mm tall. Do not "fix" this by changing the device density — trav likes it where it is.
- Android 13 / API 33,
gsi_r1-userdebug, arm64-v8a, 65 GB free. - The wheel can only ever give us detents.
getevent -pl(2026-09-14):och1970_holl_keyadvertisesKEY (0001): KEY_UP KEY_DOWNand nothing else — noEV_REL/REL_WHEEL, noEV_ABS, no resolution. Theoch1970is a Hall latch, so the driver quantises the magnet into clicks and hands userspace one key press each. There is no sub-detent position to read without a kernel driver change, so every bit of nuance has to be derived from the timing between detents (seeWheelScroll). - Scroll wheel = input device
och1970_holl_key→ KEY_UP / KEY_DOWN, mapped by the stockGeneric.kl(checked 2026-09-11 viadumpsys input) toKEYCODE_DPAD_UP/DPAD_DOWN— not volume. Side/PTT button sits onmtk-kpdwith KEY_VOLUMEDOWN + KEY_POWER. Headset exposes KEY_PLAYPAUSE, so a MediaSession gets media keys for free. - USB: set to come up as
mtp,adbwhenever the screen is unlocked (adb shell svc usb setScreenUnlockedFunctions mtp, 2026-09-11), so the gvfs mount sync uses and the adb install uses are both there at once.