Skip to content

fix: only pan screen for keyboard when Minecraft chat is open - #379

Open
Vivo-Y12 wants to merge 10 commits into
AngelAuraMC:v3_openjdkfrom
Vivo-Y12:meow
Open

Vivo-Y12 wants to merge 10 commits into
AngelAuraMC:v3_openjdkfrom
Vivo-Y12:meow

Conversation

@Vivo-Y12

Copy link
Copy Markdown

What

Previously, the screen moved up every time the on-screen keyboard opened, even when it was not needed (like on the Add Server screen). Now the screen only moves up when the Minecraft chat is open, so the player can always see what they are typing.

@alexytomi

Copy link
Copy Markdown
Member

This is horribly jank, am pretty sure the slash part conflicts with some mods too. Perhaps allow the user to modify the list of chat open and chat close keys?

@Vivo-Y12

Copy link
Copy Markdown
Author

This is horribly jank, am pretty sure the slash part conflicts with some mods too. Perhaps allow the user to modify the list of chat open and chat close keys?

Done

@alexytomi

alexytomi commented Sep 22, 2026 •

Copy link
Copy Markdown
Member

I don't think anyone is gonna be able to use this. I was thinking something more like the mapping UI.

<Spinner
android:id="@+id/editMapping_spinner_1"
android:layout_width="0dp"
android:layout_height="30dp"
android:dropDownWidth="match_parent"
android:dropDownVerticalOffset="30dp"
android:gravity="center"
android:visibility="invisible"
android:background="@android:color/transparent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editMapping_textView" />
<Spinner
android:id="@+id/editMapping_spinner_2"
android:layout_width="0dp"
android:layout_height="30dp"
android:dropDownWidth="match_parent"
android:dropDownHorizontalOffset="30dp"
android:dropDownVerticalOffset="30dp"
android:gravity="center"
android:visibility="invisible"
android:background="@android:color/transparent"
app:layout_constraintTop_toBottomOf="@+id/editMapping_textView"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<Spinner
android:id="@+id/editMapping_spinner_3"
android:layout_width="0dp"
android:layout_height="30dp"
android:dropDownWidth="match_parent"
android:dropDownVerticalOffset="30dp"
android:gravity="center"
android:visibility="invisible"
android:background="@android:color/transparent"
app:layout_constraintTop_toTopOf="@+id/mapping_3_textview"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<Spinner
android:id="@+id/editMapping_spinner_4"
android:layout_width="0dp"
android:layout_height="30dp"
android:dropDownWidth="match_parent"
android:dropDownVerticalOffset="30dp"
android:visibility="invisible"
android:background="@android:color/transparent"
app:layout_constraintTop_toTopOf="@+id/mapping_3_textview"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<!-- Clickable textview linked to the spinners
Spinners are hidden at the same place because the dropdown offset doesn't work
Do those textview acts as the spinner idle state
-->
<TextView
android:id="@+id/mapping_1_textview"
style="?android:attr/spinnerItemStyle"
android:layout_width="0dp"
android:layout_height="@dimen/_30sdp"
android:ellipsize="marquee"
android:gravity="center"
android:singleLine="true"
android:textAlignment="inherit"
app:layout_constraintEnd_toStartOf="@id/mapping_2_textview"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/editMapping_textView"
tools:text="HELLO" />
<TextView
android:id="@+id/editMapping_plus_1"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:gravity="center"
android:text="+"
app:layout_constraintBottom_toBottomOf="@+id/mapping_1_textview"
app:layout_constraintEnd_toEndOf="@+id/mapping_1_textview"
app:layout_constraintStart_toEndOf="@id/mapping_1_textview"
app:layout_constraintTop_toTopOf="@+id/mapping_1_textview" />
<TextView
android:id="@+id/mapping_2_textview"
style="?android:attr/spinnerItemStyle"
android:layout_width="0dp"
android:layout_height="@dimen/_30sdp"
android:ellipsize="marquee"
android:gravity="center"
android:singleLine="true"
android:textAlignment="inherit"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/mapping_1_textview"
app:layout_constraintTop_toTopOf="@+id/mapping_1_textview"
tools:text="HELLO" />
<TextView
android:id="@+id/mapping_3_textview"
style="?android:attr/spinnerItemStyle"
android:layout_width="0dp"
android:layout_height="@dimen/_30sdp"
android:ellipsize="marquee"
android:gravity="center"
android:singleLine="true"
android:textAlignment="inherit"
app:layout_constraintEnd_toStartOf="@id/mapping_4_textview"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/mapping_1_textview"
tools:text="HELLO" />
<TextView
android:id="@+id/editMapping_plus_3"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:gravity="center"
android:text="+"
app:layout_constraintBottom_toBottomOf="@+id/mapping_3_textview"
app:layout_constraintEnd_toEndOf="@+id/mapping_3_textview"
app:layout_constraintStart_toEndOf="@id/mapping_3_textview"
app:layout_constraintTop_toBottomOf="@+id/mapping_1_textview" />
<TextView
android:id="@+id/mapping_4_textview"
style="?android:attr/spinnerItemStyle"
android:layout_width="0dp"
android:layout_height="@dimen/_30sdp"
android:ellipsize="marquee"
android:gravity="center"
android:singleLine="true"
android:textAlignment="inherit"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/mapping_3_textview"
app:layout_constraintTop_toTopOf="@id/mapping_3_textview"
tools:text="HELLO" />

@Vivo-Y12

Copy link
Copy Markdown
Author

@alexytomi Done — reworked it into a key picker dialog with the same name-based spinner as the control button mapping UI, so users never see raw key codes.

Comment thread app_pojavlauncher/src/main/java/org/lwjgl/glfw/CallbackBridge.java Outdated
@Vivo-Y12
Vivo-Y12 requested a review from alexytomi September 22, 2026 14:25

@alexytomi alexytomi left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this tested?

@Vivo-Y12
Vivo-Y12 requested a review from alexytomi September 23, 2026 05:49
@Vivo-Y12

Copy link
Copy Markdown
Author

@alexytomi Tested on device: this no longer works. Chat is opened by the touch control keybind buttons, then the on-screen keyboard opens, but nothing pans since the sendKeycode hook is gone and the flag is never set.

Those keybind button presses only pass through sendKeycode, they never reach the IME paths. And the typed IME chars get blocked by the grab gate, since the mouse is already ungrabbed in chat.

What should I do now?

@alexytomi

Copy link
Copy Markdown
Member

Add a detection inside ControlButton for tracking chat open then TouchCharInput manages the close with the grab gate fixing possible desync

@Vivo-Y12

Copy link
Copy Markdown
Author

Add a detection inside ControlButton for tracking chat open then TouchCharInput manages the close with the grab gate fixing possible desync

Tested on device works now following your suggestion, chat opens from the control button, close handled by TouchCharInput with the grab gate keeping things in sync.

Comment thread app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/MainActivity.java Outdated

This branch has not been deployed

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants