Skip to content

Button Mappings recorder cannot record swipes after provisional long press #1391

Description

@lamhoangtung

Version

v0.12.0-beta.5

Problem

While configuring an MX Master 3 thumb button (Logitech Control 0x00C3), the advanced Button Mappings recorder repeatedly recognizes Long Press instead of a swipe. Adding the desired short-press and four swipe outcomes directly to the configuration works, so these actions can be configured without the recorder. Independence from Options+ is being checked separately; this report does not claim a confirmed HID movement-delivery cause.

There is a deterministic recorder problem in ButtonMappingRecordingEngine: after 500 ms, advance(to:) sets recognition to .longPress, and pointerMoved rejects further movement because it requires recognition == nil. A user who pauses before dragging cannot record a swipe. Ordered button and wheel inputs already replace this provisional long press while the button remains held.

Reproduction in the recording engine

  1. Send button down for Logitech Control 0xC3 at 0 ms.
  2. Advance to 500 ms: the preview becomes Long Press.
  3. Send two straight upward movement deltas of 30 points each at 700 and 800 ms.
  4. Release at 900 ms.

Actual: Long Press remains recorded.
Expected: Swipe Up replaces the provisional Long Press once the swipe threshold is reached. Long Press should remain selected when released without sufficient movement.

Proposed scope

Allow movement to replace a provisional long press in the recorder, matching its existing ordered-button and wheel recording behavior. Preserve completed outcomes and the runtime action recognizer's commitment rules.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions