From f091a545f51d3f0265b62fce48b907c4f9bac320 Mon Sep 17 00:00:00 2001 From: trav Date: Mon, 14 Sep 2026 13:51:42 -0700 Subject: [PATCH] v0.20.5: the wheel learns to coast getevent settled what the wheel can and can't tell us: och1970_holl_key advertises KEY_UP and KEY_DOWN and nothing else -- no REL_WHEEL, no resolution, because the och1970 is a Hall latch the driver quantises into clicks. There is no sub-detent position to read without a kernel driver change, so all the nuance has to come from *when* the detents arrive. So a detent is now an impulse into a velocity rather than a jump. The list coasts and eases out, and an impulse is worth up to 8x more when detents come 30 ms apart than when they come 220 ms apart -- squared, so the gain stays out of the way while you're hunting for one row. Measured on the device: one unhurried detent moves about half a row, twelve fast ones move forty-odd. Turning back the other way kills the coast first, so a correction bites instead of fighting the glide. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01SKXUgsBBwe3qaHEjeV8ubP --- andtunes/TASKS.md | 7 ++ .../java/me/teafry/andtunes/ListActivity.java | 2 +- .../java/me/teafry/andtunes/WheelScroll.java | 109 +++++++++++++----- andtunes/build.py | 4 +- lintunes/__init__.py | 2 +- lintunes/android/andTunes.apk | Bin 66967 -> 66967 bytes lintunes/android/andTunes.json | 2 +- tasks-done.md | 15 ++- 8 files changed, 100 insertions(+), 41 deletions(-) diff --git a/andtunes/TASKS.md b/andtunes/TASKS.md index 5271602..8a275f4 100644 --- a/andtunes/TASKS.md +++ b/andtunes/TASKS.md @@ -29,6 +29,13 @@ each lands in is decided when it starts. 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_key` advertises `KEY (0001): KEY_UP KEY_DOWN` and *nothing + else* — no `EV_REL`/`REL_WHEEL`, no `EV_ABS`, no resolution. The `och1970` + is 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 (see `WheelScroll`). - Scroll wheel = input device `och1970_holl_key` → **KEY_UP / KEY_DOWN**, mapped by the stock `Generic.kl` (checked 2026-09-11 via `dumpsys input`) to **`KEYCODE_DPAD_UP` / `DPAD_DOWN`** — not volume. Side/PTT button sits diff --git a/andtunes/app/src/main/java/me/teafry/andtunes/ListActivity.java b/andtunes/app/src/main/java/me/teafry/andtunes/ListActivity.java index d09ebd4..ed9a552 100644 --- a/andtunes/app/src/main/java/me/teafry/andtunes/ListActivity.java +++ b/andtunes/app/src/main/java/me/teafry/andtunes/ListActivity.java @@ -108,7 +108,7 @@ public class ListActivity extends BaseActivity { /** Wheel up moves the list down, the way pushing the page up does. */ @Override protected void onWheel(int dir) { - wheel.push(dir * Ui.dp(this, WheelScroll.STEP_DP)); + wheel.push(dir); } private String defaultTitle() { diff --git a/andtunes/app/src/main/java/me/teafry/andtunes/WheelScroll.java b/andtunes/app/src/main/java/me/teafry/andtunes/WheelScroll.java index fcff0ab..273ee81 100644 --- a/andtunes/app/src/main/java/me/teafry/andtunes/WheelScroll.java +++ b/andtunes/app/src/main/java/me/teafry/andtunes/WheelScroll.java @@ -1,67 +1,112 @@ package me.teafry.andtunes; +import android.os.SystemClock; import android.view.Choreographer; import android.widget.ListView; /** - * Smooth scrolling for the R1's wheel. + * Kinetic scrolling for the R1's wheel. * - *

The wheel arrives as discrete detents, and moving a whole row per detent - * reads as a teleport — the list jumps a track at a time instead of gliding - * the way a finger drag does. So a detent doesn't scroll: it adds to a pixel - * debt, and a Choreographer callback pays a fraction of that debt off - * every frame. One detent eases to a stop; a fast spin piles debt up faster - * than it drains and becomes one continuous movement. + *

The wheel is a Hall latch (och1970_holl_key) and the driver + * exposes nothing but KEY_UP / KEY_DOWN — one key + * press per detent, no REL_WHEEL, no resolution. So there is no + * finer signal to read: all the nuance has to come from when the + * detents arrive, not how far the wheel turned. * - *

Frame-driven rather than animated per detent, because a new detent has to - * blend into the motion already underway — restarting an animation each time - * is what makes wheel scrolling stutter. + *

Which is what this does. A detent is an impulse into a velocity, not a + * jump: the list then moves at that velocity and coasts to a stop, so one + * click nudges and a spin glides. And an impulse is worth more the faster the + * detents come — {@link #MAX_GAIN}× at a hard spin — so a long list crosses in + * a flick while a single click still lands a row or so. Turning back the other + * way kills the glide first, so a correction bites immediately instead of + * fighting the coast. */ final class WheelScroll implements Choreographer.FrameCallback { - /** Fraction of the outstanding debt paid per frame: the easing curve. */ - private static final float FRICTION = 0.28f; - /** Below this the remainder is paid in one go rather than halved forever. */ - private static final float SETTLE_PX = 1.5f; - /** How far one detent travels. Deliberately not a row height. */ - static final int STEP_DP = 52; + /** How far one unhurried detent travels, all told, in dp. */ + private static final float STEP_DP = 44f; + /** What the fastest detent is worth, as a multiple of {@link #STEP_DP}. */ + private static final float MAX_GAIN = 8f; + /** Detents this close together (ms) earn the whole gain. */ + private static final float FAST_MS = 30f; + /** Detents this far apart (ms) earn none of it. */ + private static final float SLOW_MS = 220f; + /** Fraction of the speed still there one second into a coast. */ + private static final float KEEP_PER_S = 0.05f; + /** Below this (dp/s) the glide has finished. */ + private static final float STOP_DP_S = 18f; + /** Ceiling, so a frantic spin stays readable rather than teleporting. */ + private static final float MAX_DP_S = 9000f; private final ListView list; - private float debt; + private final float density; + + private float velocity; // px/s, positive = toward the end of the list + private float residue; // sub-pixel remainder, so slow moves aren't lost + private long lastDetentMs; + private long lastFrameNs; private boolean running; WheelScroll(ListView list) { this.list = list; + this.density = list.getResources().getDisplayMetrics().density; } - /** One detent, {@code px} signed pixels in the direction to travel. */ - void push(float px) { - debt += px; + /** One detent. {@code dir} is +1 or -1 in the direction to travel. */ + void push(int dir) { + long now = SystemClock.uptimeMillis(); + float gap = lastDetentMs == 0 ? SLOW_MS : now - lastDetentMs; + lastDetentMs = now; + + float impulse = dir * STEP_DP * gainFor(gap) * density * -(float) Math.log(KEEP_PER_S); + if (velocity != 0 && Math.signum(impulse) != Math.signum(velocity)) { + velocity = 0; // a change of mind stops the coast, then steers + residue = 0; + } + float cap = MAX_DP_S * density; + velocity = Math.max(-cap, Math.min(cap, velocity + impulse)); if (!running) { running = true; + lastFrameNs = 0; Choreographer.getInstance().postFrameCallback(this); } } + /** + * 1 at {@link #SLOW_MS} apart, {@link #MAX_GAIN} at {@link #FAST_MS}. + * + *

Squared, so the gain stays out of the way until the wheel is really + * moving — a slow hunt for one row shouldn't feel twitchy. + */ + private static float gainFor(float gapMs) { + float t = (SLOW_MS - Math.min(Math.max(gapMs, FAST_MS), SLOW_MS)) + / (SLOW_MS - FAST_MS); + return 1f + (MAX_GAIN - 1f) * t * t; + } + @Override public void doFrame(long frameTimeNanos) { - float step = Math.abs(debt) <= SETTLE_PX ? debt : debt * FRICTION; - int px = Math.round(step); - if (px != 0) { - list.scrollListBy(px); - debt -= px; // what actually moved, so hitting either end ends it - } else { - debt = 0; - } - if (Math.abs(debt) >= 0.5f) { + float dt = lastFrameNs == 0 ? 1f / 60f + : (frameTimeNanos - lastFrameNs) / 1_000_000_000f; + lastFrameNs = frameTimeNanos; + dt = Math.min(dt, 0.05f); // a dropped frame shouldn't lurch + + float move = velocity * dt + residue; + int px = (int) move; + residue = move - px; + if (px != 0) list.scrollListBy(px); + + velocity *= (float) Math.pow(KEEP_PER_S, dt); + if (Math.abs(velocity) >= STOP_DP_S * density) { Choreographer.getInstance().postFrameCallback(this); } else { - debt = 0; - running = false; + stop(); } } /** Drop any motion still owed (the screen is going away). */ void stop() { - debt = 0; + velocity = 0; + residue = 0; + lastFrameNs = 0; running = false; Choreographer.getInstance().removeFrameCallback(this); } diff --git a/andtunes/build.py b/andtunes/build.py index 808e8fb..95c380d 100644 --- a/andtunes/build.py +++ b/andtunes/build.py @@ -26,8 +26,8 @@ import sys import zipfile from pathlib import Path -VERSION_NAME = "0.2.2" -VERSION_CODE = 4 +VERSION_NAME = "0.2.3" +VERSION_CODE = 5 PACKAGE = "me.teafry.andtunes" MIN_SDK = 26 diff --git a/lintunes/__init__.py b/lintunes/__init__.py index 911530f..34a78be 100644 --- a/lintunes/__init__.py +++ b/lintunes/__init__.py @@ -1,3 +1,3 @@ """LinTunes — iTunes-style music library manager and player for Linux.""" -__version__ = "0.20.4" +__version__ = "0.20.5" diff --git a/lintunes/android/andTunes.apk b/lintunes/android/andTunes.apk index 5f2e8fabc211684785118b6a86558aba94c00a9e..56aae0ca637d85b5f5571b99897bf399dfe23658 100644 GIT binary patch delta 31374 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 Lw~=ZE0Ydvf?Dlo0 diff --git a/lintunes/android/andTunes.json b/lintunes/android/andTunes.json index 6cbac99..488f188 100644 --- a/lintunes/android/andTunes.json +++ b/lintunes/android/andTunes.json @@ -1 +1 @@ -{"version_name": "0.2.2", "version_code": 4} +{"version_name": "0.2.3", "version_code": 5} diff --git a/tasks-done.md b/tasks-done.md index 930cb52..4e4dc37 100644 --- a/tasks-done.md +++ b/tasks-done.md @@ -31,10 +31,17 @@ that *is* there plays exactly that song, shuffle or not. stats over MTP, ~840 KB of writes and a full tree walk with the progress line frozen. They report now, and `_write_index` reads `Art/` in one listing instead of a stat per album. -- [x] **The wheel scrolls smoothly, and the other way** (`WheelScroll`). A - detent adds to a pixel debt that a Choreographer callback pays off a - fraction per frame, so one detent eases to a stop and a fast spin blends - into one movement instead of teleporting a row at a time. Direction +- [x] **The wheel scrolls kinetically, and the other way** (`WheelScroll`; + v0.20.5 / andTunes 0.2.3 refined the first pass). `getevent -pl` settled + what's possible: `och1970_holl_key` advertises `KEY_UP KEY_DOWN` and + nothing else — no `REL_WHEEL`, no resolution, because the `och1970` is a + Hall latch the driver quantises into clicks. There is no sub-detent + position to read, so every bit of nuance comes from the *timing*. A + detent is an impulse into a velocity rather than a jump: the list coasts + and eases out, and an impulse is worth up to 8× more when detents arrive + 30 ms apart instead of 220 ms. Measured on the device: one unhurried + detent moves about half a row, twelve fast ones move forty-odd. Turning + back the other way kills the coast first so a correction bites. Direction flipped in lists only; volume on the other screens is unchanged. ### Round 54 (2026-09-14) — one artist spelled two ways (v0.20.3, andTunes 0.2.1)