From 623ddbf6c06b9f5662c80b2ef40db6b04fe0079a Mon Sep 17 00:00:00 2001 From: Jeod <47716344+JeodC@users.noreply.github.com> Date: Wed, 4 Feb 2026 18:31:02 -0500 Subject: [PATCH 1/4] Resolve AYN Thor touchscreens reporting as keyboards --- .../scripts/portmaster_sway_fullscreen.sh | 15 +-------------- .../sysutils/systemd/hwdb.d/61-thor-ft5x06.hwdb | 7 +++++++ .../compositor/sway/autostart/111-sway-init | 5 +++-- 3 files changed, 11 insertions(+), 16 deletions(-) create mode 100644 projects/ROCKNIX/packages/sysutils/systemd/hwdb.d/61-thor-ft5x06.hwdb diff --git a/projects/ROCKNIX/packages/apps/portmaster/scripts/portmaster_sway_fullscreen.sh b/projects/ROCKNIX/packages/apps/portmaster/scripts/portmaster_sway_fullscreen.sh index 64d69fe18f..5b9d5be7d0 100755 --- a/projects/ROCKNIX/packages/apps/portmaster/scripts/portmaster_sway_fullscreen.sh +++ b/projects/ROCKNIX/packages/apps/portmaster/scripts/portmaster_sway_fullscreen.sh @@ -11,20 +11,7 @@ if echo "${UI_SERVICE}" | grep -q "sway"; then if [[ "${DEVICE_HAS_DUAL_SCREEN}" == "true" ]]; then TSKEY=$(get_setting "rocknix.touchscreen-keyboard.enabled") if [[ "${TSKEY}" == "1" ]]; then - swaymsg 'output DSI-1 power on, seat seat1 fallback no' + swaymsg 'output DSI-1 power on' fi fi - - # The following conditionals deal with focus revocation quirks on specific devices - - # Force all inputs into seat1 to bypass the Thor's 0:0 input ID collisions - if [[ "${QUIRK_DEVICE}" == "AYN Thor" ]]; then - swaymsg 'seat seat1 attach "*"' - swaymsg 'seat * keyboard_grouping none' - fi - - # Put touchscreen into seat0 for Anbernic RG DS - if [[ "${QUIRK_DEVICE}" == "Anbernic RG DS" ]]; then - swaymsg seat seat0 attach "1046:911:Goodix_Capacitive_TouchScreen" - fi fi diff --git a/projects/ROCKNIX/packages/sysutils/systemd/hwdb.d/61-thor-ft5x06.hwdb b/projects/ROCKNIX/packages/sysutils/systemd/hwdb.d/61-thor-ft5x06.hwdb new file mode 100644 index 0000000000..eb17cd9650 --- /dev/null +++ b/projects/ROCKNIX/packages/sysutils/systemd/hwdb.d/61-thor-ft5x06.hwdb @@ -0,0 +1,7 @@ +# AYN Thor dual-screen ft5x06 touch panels +# Touchscreens expose BTN_TOUCH (EV_KEY) which inflates wlroots seat capabilities. +# Explicitly mark as touchscreen-only to prevent seat capability 4 (Keyboard) hijacking. + +evdev:name:*ft5x06*:* + ID_INPUT_KEYBOARD=0 + ID_INPUT_TOUCHSCREEN=1 diff --git a/projects/ROCKNIX/packages/wayland/compositor/sway/autostart/111-sway-init b/projects/ROCKNIX/packages/wayland/compositor/sway/autostart/111-sway-init index 4dd47fe7d9..334a8648f1 100755 --- a/projects/ROCKNIX/packages/wayland/compositor/sway/autostart/111-sway-init +++ b/projects/ROCKNIX/packages/wayland/compositor/sway/autostart/111-sway-init @@ -130,10 +130,11 @@ fi #disable switch focus to secondary screen if [ "${QUIRK_DEVICE}" = "AYN Thor" ]; then echo 'for_window [app_id="emulationstation"] reload' >> $SWAY_HOME/config - echo 'for_window [title=".*(Secondary|\[w2\]|Sub|Bottom|Screen 2|GamePad).*"] seat seat0 attach "*"' >> $SWAY_HOME/config echo "exec_always swaymsg '[app_id=\"emulationstation\"]' focus output ${con}" >> $SWAY_HOME/config echo "exec_always swaymsg '[app_id=\"emulationstation\"]' seat seat1 attach \"0:0:generic_ft5x06_(8d)\"" >> $SWAY_HOME/config - echo "exec_always swaymsg '[app_id=\"emulationstation\"]' seat seat1 fallback yes" >> $SWAY_HOME/config + # These two lines may belong elsewhere; needed for wvkbd to respond to touch input on bottom but be able to interact with top + echo "exec_always swaymsg '[app_id=\"emulationstation\"]' seat seat0 attach \"0:0:wlr_virtual_keyboard_v1\"" >> $SWAY_HOME/config + echo "exec_always swaymsg '[app_id=\"emulationstation\"]' seat seat1 attach \"0:0:wlr_virtual_keyboard_v1\"" >> $SWAY_HOME/config fi # Anbernic RG DS touchscreen setup From c5ce343161dc182a943c34c0b22a2552b1167e05 Mon Sep 17 00:00:00 2001 From: Jeod <47716344+JeodC@users.noreply.github.com> Date: Wed, 4 Feb 2026 19:11:59 -0500 Subject: [PATCH 2/4] Fix wvkbd not working in games --- .../apps/portmaster/scripts/portmaster_sway_fullscreen.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/projects/ROCKNIX/packages/apps/portmaster/scripts/portmaster_sway_fullscreen.sh b/projects/ROCKNIX/packages/apps/portmaster/scripts/portmaster_sway_fullscreen.sh index 5b9d5be7d0..d86b300f1f 100755 --- a/projects/ROCKNIX/packages/apps/portmaster/scripts/portmaster_sway_fullscreen.sh +++ b/projects/ROCKNIX/packages/apps/portmaster/scripts/portmaster_sway_fullscreen.sh @@ -12,6 +12,10 @@ if echo "${UI_SERVICE}" | grep -q "sway"; then TSKEY=$(get_setting "rocknix.touchscreen-keyboard.enabled") if [[ "${TSKEY}" == "1" ]]; then swaymsg 'output DSI-1 power on' + ( + sleep 2 + swaymsg 'seat seat1 fallback yes' + ) & fi fi fi From e952c150ab9cc01a88156e54d7f75d3329fe7017 Mon Sep 17 00:00:00 2001 From: Jeod <47716344+JeodC@users.noreply.github.com> Date: Wed, 4 Feb 2026 19:34:24 -0500 Subject: [PATCH 3/4] Move wlr_virtual_keyboard to DUAL_SCREEN block --- .../wayland/compositor/sway/autostart/111-sway-init | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/projects/ROCKNIX/packages/wayland/compositor/sway/autostart/111-sway-init b/projects/ROCKNIX/packages/wayland/compositor/sway/autostart/111-sway-init index 334a8648f1..1f0e0ae44c 100755 --- a/projects/ROCKNIX/packages/wayland/compositor/sway/autostart/111-sway-init +++ b/projects/ROCKNIX/packages/wayland/compositor/sway/autostart/111-sway-init @@ -125,6 +125,9 @@ if [ "${DEVICE_HAS_DUAL_SCREEN}" = "true" ]; then second_con=$([[ "${connected_cons[0]}" == "$con" ]] && echo "${connected_cons[1]}" || echo "${connected_cons[0]}") echo 'for_window [title=".*(Secondary|\[w2\]|Sub|Bottom|Screen 2|GamePad).*"] move window to output '"${second_con}" >> $SWAY_HOME/config echo 'for_window [title="RetroArch\s(melonDS|DeSmuME|VecX|MAME|FinalBurn|FB Alpha).*"] exec /usr/bin/vertical-check' >> $SWAY_HOME/config + # Required for the touch keyboard to both accept inputs on bottom screen and sent those events to the top screen + echo "exec_always swaymsg '[app_id=\"emulationstation\"]' seat seat0 attach \"0:0:wlr_virtual_keyboard_v1\"" >> $SWAY_HOME/config + echo "exec_always swaymsg '[app_id=\"emulationstation\"]' seat seat1 attach \"0:0:wlr_virtual_keyboard_v1\"" >> $SWAY_HOME/config fi #disable switch focus to secondary screen @@ -132,9 +135,6 @@ if [ "${QUIRK_DEVICE}" = "AYN Thor" ]; then echo 'for_window [app_id="emulationstation"] reload' >> $SWAY_HOME/config echo "exec_always swaymsg '[app_id=\"emulationstation\"]' focus output ${con}" >> $SWAY_HOME/config echo "exec_always swaymsg '[app_id=\"emulationstation\"]' seat seat1 attach \"0:0:generic_ft5x06_(8d)\"" >> $SWAY_HOME/config - # These two lines may belong elsewhere; needed for wvkbd to respond to touch input on bottom but be able to interact with top - echo "exec_always swaymsg '[app_id=\"emulationstation\"]' seat seat0 attach \"0:0:wlr_virtual_keyboard_v1\"" >> $SWAY_HOME/config - echo "exec_always swaymsg '[app_id=\"emulationstation\"]' seat seat1 attach \"0:0:wlr_virtual_keyboard_v1\"" >> $SWAY_HOME/config fi # Anbernic RG DS touchscreen setup From 7f915807de4057350b292199a99aa1da587d432e Mon Sep 17 00:00:00 2001 From: Jeod <47716344+JeodC@users.noreply.github.com> Date: Wed, 4 Feb 2026 19:37:42 -0500 Subject: [PATCH 4/4] Fix now invalid comment --- .../packages/wayland/compositor/sway/autostart/111-sway-init | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/ROCKNIX/packages/wayland/compositor/sway/autostart/111-sway-init b/projects/ROCKNIX/packages/wayland/compositor/sway/autostart/111-sway-init index 1f0e0ae44c..96b6f6edd3 100755 --- a/projects/ROCKNIX/packages/wayland/compositor/sway/autostart/111-sway-init +++ b/projects/ROCKNIX/packages/wayland/compositor/sway/autostart/111-sway-init @@ -130,7 +130,7 @@ if [ "${DEVICE_HAS_DUAL_SCREEN}" = "true" ]; then echo "exec_always swaymsg '[app_id=\"emulationstation\"]' seat seat1 attach \"0:0:wlr_virtual_keyboard_v1\"" >> $SWAY_HOME/config fi -#disable switch focus to secondary screen +# AYN Thor touchscreen setup if [ "${QUIRK_DEVICE}" = "AYN Thor" ]; then echo 'for_window [app_id="emulationstation"] reload' >> $SWAY_HOME/config echo "exec_always swaymsg '[app_id=\"emulationstation\"]' focus output ${con}" >> $SWAY_HOME/config