Repository navigation
Conversation
…pers filter On a Xiaomi MOEU0 (Google TV 14) the window policy changes volume once per press while any helper filters keys, so a held volume key never repeats. The helpers never see the volume keys, so consume_volume_keys cannot repeat them. key_filter false is no way out either: the remote's Netflix (289), Prime Video (290) and YouTube (296), Apps and the gear are global keys that never reach a window, so only the helpers can answer them. volume_pauses_filter (off by default, config.xml or a theme) adds VolumePause, built like GamepadPassthrough. Each helper registers a VOLUME_CHANGED_ACTION receiver. A volume change drops FLAG_REQUEST_FILTER_KEY_EVENTS for 4 s and then puts it back. The first press steps once, a press or hold within those 4 s repeats as usual, and the buttons work again once the pause ends. It starts only with key_filter on, and with the key off no receiver is registered. +472 B APK. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
maintainer-bot review · this one needs a maintainer decision · Leans: merge (62%) Thanks for the careful digging into why held volume stops repeating on the MOEU0, including checking which remote keys only the key helpers can catch. Because the switch is off by default and config-only, and you tested it on the TV itself, it looks ready to go into the core as it is. Why it goes to a maintainer: changes the Home/launch path (HomeKeyService.java), which usually needs a run on a real TV (confidence 0.62 < 0.85). Checks
This is a suggestion; a maintainer makes the final call. A maintainer can comment Reviewed by maintainer-bot · runs on 0G Private Computer |
yrslykvl
force-pushed
the
volume-pauses-filter
branch
from
November 8, 2026 21:46
91d5e2d to
b0448ac
Compare
…e_pauses_filter Another MiTV-MOEU0 remote sends YouTube as 296 (KEYCODE_VIDEO_APP_8) instead of 190, and Netflix and Prime Video as 289/290. config.json maps the gear (176) and both YouTube codes, points Live TV at com.mitv.livetv and turns on volume_pauses_filter, so held volume ramps with the key helpers bound. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
yrslykvl
force-pushed
the
volume-pauses-filter
branch
from
November 8, 2026 21:47
b0448ac to
8ca5646
Compare
The end of a pause turns key filtering back on, which undid gamepad_passthrough for a connected gamepad when a theme set both. The services now start VolumePause only with gamepad_passthrough off; config.xml said so already, the code now does it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds
volume_pauses_filter, an off-by-default switch for firmware where any key-filtering accessibility service stops a held volume key from repeating. On those sets the remote buttons only work through the key helpers, sokey_filter: falseis not an option, and the helpers never see the volume keys, soconsume_volume_keyscannot repeat them.Tested on: Xiaomi TV S Mini LED 55 2025 (MiTV-MOEU0, ladybird), Google TV 14
On this set the window policy changes volume once per press while the helpers filter keys. The helpers never see the volume keys (checked with a debug build), so they cannot repeat volume themselves.
key_filter: falsebrings the repeat back, but this remote's Netflix (289), Prime Video (290) and YouTube (296) buttons, Apps and the gear are global keys (dumpsys window policy) that never reach an app. Only the helpers can catch them.mitv.servicestarts Netflix and Prime by package, and its Google TV gear handler is empty.With the switch on,
VolumePause(built likeGamepadPassthrough) registers, in each helper, aVOLUME_CHANGED_ACTIONreceiver. A volume change dropsFLAG_REQUEST_FILTER_KEY_EVENTSfor 4 s, then puts it back:With the switch off, nothing new runs: no receiver is registered.
Verified on the TV:
dumpsys accessibilityshows theA11yInputFiltergone right after a volume key and back after 5 s;app_keys289/290/296, Apps and the gear still work.Screenshot:
docs/switches/volume_pauses_filter.jpg, the volume bar mid-ramp on Home. No unit test: the logic is allAccessibilityServiceand broadcast calls, with nothing to test off the TV.If this touches the launcher
config.xmlor a theme, not in codeChecks:
./gradlew testReleaseUnitTest lintRelease assembleRelease: 0 lint errors;main), under the 589,824 B gate;python3 -m unittest discover -s tests: all pass, withdocs/switches/volume_pauses_filter.jpgadded.Second commit:
examples/xiaomi-mitv-moeu0/gets aconfig.json(gear 176, YouTube on both 190 and 296, Live TVcom.mitv.livetv,volume_pauses_filteron) and a header note. The remote of the 55" 2025 unit tested here sends YouTube as 296 (KEYCODE_VIDEO_APP_8), not the 190 the list noted, and Netflix/Prime Video as 289/290. Firmware V816.0.25.12.1 and V816.0.26.10.12.1.🤖 Generated with Claude Code