diff --git a/app/src/main/java/helium314/keyboard/keyboard/KeyboardActionListenerImpl.kt b/app/src/main/java/helium314/keyboard/keyboard/KeyboardActionListenerImpl.kt index 89fdcecb..6922ff03 100644 --- a/app/src/main/java/helium314/keyboard/keyboard/KeyboardActionListenerImpl.kt +++ b/app/src/main/java/helium314/keyboard/keyboard/KeyboardActionListenerImpl.kt @@ -211,6 +211,9 @@ class KeyboardActionListenerImpl(private val latinIME: LatinIME, private val inp return true } } + + latinIME.hapticCursorFeedback() + if (inputLogic.moveCursorByAndReturnIfInsideComposingWord(moveSteps)) { // no need to finish input and restart suggestions if we're still in the word // this is a noticeable performance improvement diff --git a/app/src/main/java/helium314/keyboard/latin/AudioAndHapticFeedbackManager.java b/app/src/main/java/helium314/keyboard/latin/AudioAndHapticFeedbackManager.java index 53527a2c..7e2d3c4f 100644 --- a/app/src/main/java/helium314/keyboard/latin/AudioAndHapticFeedbackManager.java +++ b/app/src/main/java/helium314/keyboard/latin/AudioAndHapticFeedbackManager.java @@ -8,6 +8,7 @@ package helium314.keyboard.latin; import android.content.Context; import android.media.AudioManager; +import android.os.Build; import android.os.Vibrator; import android.view.HapticFeedbackConstants; import android.view.View; @@ -106,6 +107,23 @@ public final class AudioAndHapticFeedbackManager { HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING); } } + + public void performHapticCursorFeedback(final View viewToPerformHapticFeedbackOn) { + if (!mSettingsValues.mVibrateOn) { + return; + } + if (viewToPerformHapticFeedbackOn != null) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) { + viewToPerformHapticFeedbackOn.performHapticFeedback( + HapticFeedbackConstants.TEXT_HANDLE_MOVE, + HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING); + }else { + viewToPerformHapticFeedbackOn.performHapticFeedback( + HapticFeedbackConstants.CLOCK_TICK, + HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING); + } + } + } public void onSettingsChanged(final SettingsValues settingsValues) { mSettingsValues = settingsValues; diff --git a/app/src/main/java/helium314/keyboard/latin/LatinIME.java b/app/src/main/java/helium314/keyboard/latin/LatinIME.java index 5913bf70..9b425265 100644 --- a/app/src/main/java/helium314/keyboard/latin/LatinIME.java +++ b/app/src/main/java/helium314/keyboard/latin/LatinIME.java @@ -1799,6 +1799,12 @@ public class LatinIME extends InputMethodService implements } } + public void hapticCursorFeedback() { + final MainKeyboardView keyboardView = mKeyboardSwitcher.getMainKeyboardView(); + final AudioAndHapticFeedbackManager feedbackManager = AudioAndHapticFeedbackManager.getInstance(); + feedbackManager.performHapticCursorFeedback(keyboardView); + } + public void hapticAndAudioFeedback(final int code, final int repeatCount) { final MainKeyboardView keyboardView = mKeyboardSwitcher.getMainKeyboardView(); if (keyboardView != null && keyboardView.isInDraggingFinger()) {