Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 16 additions & 6 deletions app/src/main/java/com/keyjawn/QwertyKeyboard.kt
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,9 @@ class QwertyKeyboard(
// Touch drag-off long-press handler
private val longPressHandler = Handler(Looper.getMainLooper())

// Delayed key preview hide — cancelled when next key is pressed
private var previewHideRunnable: Runnable? = null

fun updatePackage(packageName: String) {
currentPackage = packageName
render()
Expand Down Expand Up @@ -110,15 +113,15 @@ class QwertyKeyboard(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT
)
val hPad = dpToPx(2)
val vPad = dpToPx(2)
val hPad = dpToPx(1)
val vPad = dpToPx(1)
setPadding(hPad, vPad, hPad, vPad)
}

for (key in row) {
val keyView = createKeyView(key)
val params = LinearLayout.LayoutParams(0, dpToPx(48), key.weight)
val margin = dpToPx(2)
val margin = dpToPx(1)
params.setMargins(margin, margin, margin, margin)
keyView.layoutParams = params
rowLayout.addView(keyView)
Expand Down Expand Up @@ -303,6 +306,8 @@ class QwertyKeyboard(
MotionEvent.ACTION_DOWN -> {
touchStarted = true
v.isPressed = true
previewHideRunnable?.let { longPressHandler.removeCallbacks(it) }
previewHideRunnable = null
keyPreview?.show(v, previewLabel)

// Schedule long-press for alt keys
Expand All @@ -323,7 +328,8 @@ class QwertyKeyboard(
true
}
MotionEvent.ACTION_MOVE -> {
val inBounds = event.x >= 0 && event.x <= v.width &&
val slop = dpToPx(4)
val inBounds = event.x >= -slop && event.x <= v.width + slop &&
event.y >= -v.height && event.y <= v.height * 2
if (!inBounds && touchStarted) {
touchStarted = false
Expand All @@ -335,7 +341,9 @@ class QwertyKeyboard(
true
}
MotionEvent.ACTION_UP -> {
keyPreview?.hide()
val hideRunnable = Runnable { keyPreview?.hide() }
previewHideRunnable = hideRunnable
longPressHandler.postDelayed(hideRunnable, 300L)
longPressRunnable?.let { longPressHandler.removeCallbacks(it) }
longPressRunnable = null
if (touchStarted && v.isPressed) {
Expand All @@ -346,7 +354,9 @@ class QwertyKeyboard(
true
}
MotionEvent.ACTION_CANCEL -> {
keyPreview?.hide()
val hideRunnable = Runnable { keyPreview?.hide() }
previewHideRunnable = hideRunnable
longPressHandler.postDelayed(hideRunnable, 300L)
longPressRunnable?.let { longPressHandler.removeCallbacks(it) }
longPressRunnable = null
touchStarted = false
Expand Down
24 changes: 12 additions & 12 deletions app/src/main/res/layout/extra_row.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@
android:orientation="horizontal"
android:background="@color/extra_row_bg"
android:gravity="center_vertical"
android:paddingStart="2dp"
android:paddingEnd="2dp">
android:paddingStart="1dp"
android:paddingEnd="1dp">

<Button
android:id="@+id/key_esc"
android:layout_width="0dp"
android:layout_height="36dp"
android:layout_height="40dp"
android:layout_weight="1"
android:layout_marginStart="1dp"
android:layout_marginEnd="1dp"
Expand All @@ -29,7 +29,7 @@
<Button
android:id="@+id/key_tab"
android:layout_width="0dp"
android:layout_height="36dp"
android:layout_height="40dp"
android:layout_weight="1"
android:layout_marginStart="1dp"
android:layout_marginEnd="1dp"
Expand All @@ -45,7 +45,7 @@
<ImageButton
android:id="@+id/key_clipboard"
android:layout_width="0dp"
android:layout_height="36dp"
android:layout_height="40dp"
android:layout_weight="1"
android:layout_marginStart="1dp"
android:layout_marginEnd="1dp"
Expand All @@ -60,7 +60,7 @@
<Button
android:id="@+id/key_ctrl"
android:layout_width="0dp"
android:layout_height="36dp"
android:layout_height="40dp"
android:layout_weight="1"
android:layout_marginStart="1dp"
android:layout_marginEnd="1dp"
Expand All @@ -76,7 +76,7 @@
<Button
android:id="@+id/key_left"
android:layout_width="0dp"
android:layout_height="36dp"
android:layout_height="40dp"
android:layout_weight="1"
android:layout_marginStart="1dp"
android:layout_marginEnd="1dp"
Expand All @@ -92,7 +92,7 @@
<Button
android:id="@+id/key_down"
android:layout_width="0dp"
android:layout_height="36dp"
android:layout_height="40dp"
android:layout_weight="1"
android:layout_marginStart="1dp"
android:layout_marginEnd="1dp"
Expand All @@ -108,7 +108,7 @@
<Button
android:id="@+id/key_up"
android:layout_width="0dp"
android:layout_height="36dp"
android:layout_height="40dp"
android:layout_weight="1"
android:layout_marginStart="1dp"
android:layout_marginEnd="1dp"
Expand All @@ -124,7 +124,7 @@
<Button
android:id="@+id/key_right"
android:layout_width="0dp"
android:layout_height="36dp"
android:layout_height="40dp"
android:layout_weight="1"
android:layout_marginStart="1dp"
android:layout_marginEnd="1dp"
Expand All @@ -140,7 +140,7 @@
<ImageButton
android:id="@+id/key_upload"
android:layout_width="0dp"
android:layout_height="36dp"
android:layout_height="40dp"
android:layout_weight="1"
android:layout_marginStart="1dp"
android:layout_marginEnd="1dp"
Expand All @@ -155,7 +155,7 @@
<ImageButton
android:id="@+id/key_mic"
android:layout_width="0dp"
android:layout_height="36dp"
android:layout_height="40dp"
android:layout_weight="1"
android:layout_marginStart="1dp"
android:layout_marginEnd="1dp"
Expand Down
4 changes: 2 additions & 2 deletions app/src/main/res/layout/number_row.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
android:orientation="horizontal"
android:background="@color/extra_row_bg"
android:gravity="center_vertical"
android:paddingStart="2dp"
android:paddingEnd="2dp">
android:paddingStart="1dp"
android:paddingEnd="1dp">

<FrameLayout style="@style/NumberKeyFrame">
<TextView style="@style/NumberKeyLabel" android:text="1" />
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/res/values/themes.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@

<style name="NumberKeyFrame">
<item name="android:layout_width">0dp</item>
<item name="android:layout_height">match_parent</item>
<item name="android:layout_height">40dp</item>
<item name="android:layout_weight">1</item>
<item name="android:layout_marginStart">1dp</item>
<item name="android:layout_marginEnd">1dp</item>
Expand Down