From 78af06319a77fa903a79128167d344e7da89d380 Mon Sep 17 00:00:00 2001 From: "Donald H." Date: Wed, 11 Feb 2026 11:26:02 -0500 Subject: [PATCH 1/2] Add haptic feedback during spacebar cursor swipe (#747) Vibrate briefly (5ms) on each cursor step when swiping the spacebar to move the cursor, giving tactile confirmation of character-by-character movement. The vibration respects the user's haptic feedback setting and does not fire during language-swipe mode. Co-Authored-By: Claude Opus 4.6 --- .../src/org/futo/inputmethod/keyboard/PointerTracker.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/java/src/org/futo/inputmethod/keyboard/PointerTracker.java b/java/src/org/futo/inputmethod/keyboard/PointerTracker.java index e09c182dc5..8bc744cf01 100644 --- a/java/src/org/futo/inputmethod/keyboard/PointerTracker.java +++ b/java/src/org/futo/inputmethod/keyboard/PointerTracker.java @@ -34,6 +34,7 @@ import org.futo.inputmethod.keyboard.internal.PointerTrackerQueue; import org.futo.inputmethod.keyboard.internal.TimerProxy; import org.futo.inputmethod.keyboard.internal.TypingTimeRecorder; +import org.futo.inputmethod.latin.AudioAndHapticFeedbackManager; import org.futo.inputmethod.latin.R; import org.futo.inputmethod.latin.common.Constants; import org.futo.inputmethod.latin.common.CoordinateUtils; @@ -161,6 +162,8 @@ public PointerTrackerParams(final TypedArray mainKeyboardViewAttr) { private MoreKeysPanel mMoreKeysPanel; private static final int MULTIPLIER_FOR_LONG_PRESS_TIMEOUT_IN_SLIDING_INPUT = 3; + // Short vibration duration (ms) for each cursor step during spacebar swipe. + private static final int CURSOR_MOVE_VIBRATION_DURATION = 5; // true if this pointer is in the dragging finger mode. boolean mIsInDraggingFinger; // true if this pointer is sliding from a modifier key and in the sliding key input mode, @@ -970,6 +973,11 @@ private void onMoveEventInternal(final int x, final int y, final long eventTime) sListener.onSwipeLanguage(steps); } else { sListener.onMovePointer(steps); + final AudioAndHapticFeedbackManager feedbackManager = + AudioAndHapticFeedbackManager.getInstance(); + if (settingsValues.mVibrateOn) { + feedbackManager.vibrate(CURSOR_MOVE_VIBRATION_DURATION); + } } } From 0942600891aa1cf1bf07353fe077907b3d2be231 Mon Sep 17 00:00:00 2001 From: "Donald H." Date: Wed, 11 Feb 2026 11:42:25 -0500 Subject: [PATCH 2/2] Add haptic feedback to backspace swipe gesture delete Extends the spacebar cursor haptic feedback to also cover the backspace swipe gesture, using the same vibration duration and settings check. Co-Authored-By: Claude Opus 4.6 --- java/src/org/futo/inputmethod/keyboard/PointerTracker.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/java/src/org/futo/inputmethod/keyboard/PointerTracker.java b/java/src/org/futo/inputmethod/keyboard/PointerTracker.java index 8bc744cf01..1e1a15a0a6 100644 --- a/java/src/org/futo/inputmethod/keyboard/PointerTracker.java +++ b/java/src/org/futo/inputmethod/keyboard/PointerTracker.java @@ -1001,6 +1001,11 @@ private void onMoveEventInternal(final int x, final int y, final long eventTime) if(settingsValues.mIsRTL) steps = -steps; sListener.onMoveDeletePointer(steps); + final AudioAndHapticFeedbackManager feedbackManager = + AudioAndHapticFeedbackManager.getInstance(); + if (settingsValues.mVibrateOn) { + feedbackManager.vibrate(CURSOR_MOVE_VIBRATION_DURATION); + } } mLastX = x;