fix: some games never loaded their own Steam touch layout, and the sticks could not be placed (#1058)

This commit is contained in:
kingokksa authored and GitHub committed 2026-10-21 17:39:05 -04:00
1 parent aaaa18a7dc
commit a0dbdd6b9a
35 files changed
+40 -37

No files matched your search

@@ -211,7 +211,7 @@ object SteamTouchBindings {
fun libraryDir(context: Context) = File(SteamTouchConfig.steamRoot(context), "tenfoot/resource/images/library/controller/binding_icons")
fun gameIconsDir(context: Context, appId: Int): File? = try {
val manifest = File(SteamTouchConfig.steamRoot(context), "steamapps/appmanifest_$appId.acf")
val manifest = File(SteamTouchConfig.steamRoot(context), "steamapps/appmanifest_${SteamTouchConfig.steamId(appId)}.acf")
val installDir = KeyValues.parse(manifest.readText()).let { it.child("AppState") ?: it }.string("installdir")
installDir?.let { File(SteamTouchConfig.steamRoot(context), "steamapps/common/$it/TouchMenuIcons") }?.takeIf { it.isDirectory }
} catch (_: Exception) {
@@ -126,7 +126,11 @@ object SteamTouchConfig {
}
}
private val DEFAULT_SET = setOf(DPAD, A, B, X, Y, SELECT, START)
private val DEFAULT_SET = setOf(
JOYSTICK_LEFT, JOYSTICK_LEFT_BUTTON, JOYSTICK_RIGHT, JOYSTICK_RIGHT_BUTTON,
DPAD, A, B, X, Y, SELECT, START,
BUMPER_LEFT, BUMPER_RIGHT, TRIGGER_LEFT, TRIGGER_RIGHT,
)
private val ALWAYS = setOf(STEAM, THUMB, KEYBOARD)
fun steamId(appId: Int): String = Integer.toUnsignedString(appId)
@@ -301,9 +301,8 @@ class SteamTouchControls(
}
}
SteamTouchConfig.STEAM -> {
if (pressed) canvas.drawCircle(x, y, r, fill)
canvas.drawCircle(x, y, r, stroke)
drawMark(canvas, x, y, r * 0.5f, if (pressed) Color.argb(alpha, 23, 26, 33) else ink, alpha)
if (isSelected) canvas.drawCircle(x, y, r, stroke)
drawMark(canvas, x, y, r * 0.5f, if (pressed) accent else ink, alpha)
}
SteamTouchConfig.SELECT, SteamTouchConfig.START -> {
val binding = visuals[e.type]?.firstOrNull()?.binding
+1 -1
View File
@@ -2434,7 +2434,7 @@
<string name="touch_done">تم</string>
<string name="touch_save_failed">تعذّر حفظ تخطيط اللمس</string>
<string name="touch_saved">تم حفظ تخطيط اللمس في Steam</string>
<string name="touch_app_id">التطبيق %1$d</string>
<string name="touch_app_id">التطبيق %1$s</string>
<string name="touch_label_hint">التسمية (اختياري)</string>
<string name="touch_icons_missing">لم يتم العثور على أيقونات Steam</string>
<plurals name="touch_icons_found">
+1 -1
View File
@@ -2342,7 +2342,7 @@
<string name="touch_done">Готово</string>
<string name="touch_save_failed">Сензорното разположение не можа да се запази</string>
<string name="touch_saved">Сензорното разположение е запазено в Steam</string>
<string name="touch_app_id">Приложение %1$d</string>
<string name="touch_app_id">Приложение %1$s</string>
<string name="touch_label_hint">Етикет (незадължително)</string>
<string name="touch_icons_missing">Иконите на Steam не бяха намерени</string>
<plurals name="touch_icons_found">
+1 -1
View File
@@ -2388,7 +2388,7 @@
<string name="touch_done">Hotovo</string>
<string name="touch_save_failed">Dotykové rozložení se nepodařilo uložit</string>
<string name="touch_saved">Dotykové rozložení uloženo ve Steamu</string>
<string name="touch_app_id">Aplikace %1$d</string>
<string name="touch_app_id">Aplikace %1$s</string>
<string name="touch_label_hint">Popisek (nepovinné)</string>
<string name="touch_icons_missing">Ikony Steamu nebyly nalezeny</string>
<plurals name="touch_icons_found">
+1 -1
View File
@@ -2342,7 +2342,7 @@
<string name="touch_done">Udført</string>
<string name="touch_save_failed">Berøringslayoutet kunne ikke gemmes</string>
<string name="touch_saved">Berøringslayout gemt i Steam</string>
<string name="touch_app_id">App %1$d</string>
<string name="touch_app_id">App %1$s</string>
<string name="touch_label_hint">Etiket (valgfrit)</string>
<string name="touch_icons_missing">Steams ikoner blev ikke fundet</string>
<plurals name="touch_icons_found">
+1 -1
View File
@@ -2328,7 +2328,7 @@
<string name="touch_done">Fertig</string>
<string name="touch_save_failed">Das Touch-Layout konnte nicht gespeichert werden</string>
<string name="touch_saved">Touch-Layout in Steam gespeichert</string>
<string name="touch_app_id">App %1$d</string>
<string name="touch_app_id">App %1$s</string>
<string name="touch_label_hint">Bezeichnung (optional)</string>
<string name="touch_icons_missing">Steams Symbole wurden nicht gefunden</string>
<plurals name="touch_icons_found">
+1 -1
View File
@@ -2342,7 +2342,7 @@
<string name="touch_done">Τέλος</string>
<string name="touch_save_failed">Δεν ήταν δυνατή η αποθήκευση της διάταξης αφής</string>
<string name="touch_saved">Η διάταξη αφής αποθηκεύτηκε στο Steam</string>
<string name="touch_app_id">Εφαρμογή %1$d</string>
<string name="touch_app_id">Εφαρμογή %1$s</string>
<string name="touch_label_hint">Ετικέτα (προαιρετικό)</string>
<string name="touch_icons_missing">Τα εικονίδια του Steam δεν βρέθηκαν</string>
<plurals name="touch_icons_found">
+1 -1
View File
@@ -2359,7 +2359,7 @@
<string name="touch_done">Hecho</string>
<string name="touch_save_failed">No se pudo guardar la disposición táctil</string>
<string name="touch_saved">Disposición táctil guardada en Steam</string>
<string name="touch_app_id">App %1$d</string>
<string name="touch_app_id">App %1$s</string>
<string name="touch_label_hint">Etiqueta (opcional)</string>
<string name="touch_icons_missing">No se encontraron los iconos de Steam</string>
<plurals name="touch_icons_found">
+1 -1
View File
@@ -2342,7 +2342,7 @@
<string name="touch_done">Valmis</string>
<string name="touch_save_failed">Kosketusasettelua ei voitu tallentaa</string>
<string name="touch_saved">Kosketusasettelu tallennettu Steamiin</string>
<string name="touch_app_id">Sovellus %1$d</string>
<string name="touch_app_id">Sovellus %1$s</string>
<string name="touch_label_hint">Nimike (valinnainen)</string>
<string name="touch_icons_missing">Steamin kuvakkeita ei löytynyt</string>
<plurals name="touch_icons_found">
+1 -1
View File
@@ -2359,7 +2359,7 @@
<string name="touch_done">Terminé</string>
<string name="touch_save_failed">Impossible d\'enregistrer la disposition tactile</string>
<string name="touch_saved">Disposition tactile enregistrée sur Steam</string>
<string name="touch_app_id">Appli %1$d</string>
<string name="touch_app_id">Appli %1$s</string>
<string name="touch_label_hint">Libellé (facultatif)</string>
<string name="touch_icons_missing">Les icônes de Steam n\'ont pas été trouvées</string>
<plurals name="touch_icons_found">
+1 -1
View File
@@ -2342,7 +2342,7 @@
<string name="touch_done">हो गया</string>
<string name="touch_save_failed">टच लेआउट सेव नहीं हो सका</string>
<string name="touch_saved">टच लेआउट Steam में सेव हो गया</string>
<string name="touch_app_id">ऐप %1$d</string>
<string name="touch_app_id">ऐप %1$s</string>
<string name="touch_label_hint">लेबल (वैकल्पिक)</string>
<string name="touch_icons_missing">Steam के आइकॉन नहीं मिले</string>
<plurals name="touch_icons_found">
+1 -1
View File
@@ -2342,7 +2342,7 @@
<string name="touch_done">Kész</string>
<string name="touch_save_failed">Az érintőelrendezést nem sikerült elmenteni</string>
<string name="touch_saved">Az érintőelrendezés elmentve a Steambe</string>
<string name="touch_app_id">%1$d. alkalmazás</string>
<string name="touch_app_id">%1$s. alkalmazás</string>
<string name="touch_label_hint">Felirat (nem kötelező)</string>
<string name="touch_icons_missing">A Steam ikonjai nem találhatók</string>
<plurals name="touch_icons_found">
+1 -1
View File
@@ -2319,7 +2319,7 @@
<string name="touch_done">Selesai</string>
<string name="touch_save_failed">Tata letak sentuh tidak dapat disimpan</string>
<string name="touch_saved">Tata letak sentuh disimpan ke Steam</string>
<string name="touch_app_id">App %1$d</string>
<string name="touch_app_id">App %1$s</string>
<string name="touch_label_hint">Label (opsional)</string>
<string name="touch_icons_missing">Ikon Steam tidak ditemukan</string>
<plurals name="touch_icons_found">
+1 -1
View File
@@ -2351,7 +2351,7 @@
<string name="touch_done">Fine</string>
<string name="touch_save_failed">Impossibile salvare il layout touch</string>
<string name="touch_saved">Layout touch salvato su Steam</string>
<string name="touch_app_id">App %1$d</string>
<string name="touch_app_id">App %1$s</string>
<string name="touch_label_hint">Etichetta (opzionale)</string>
<string name="touch_icons_missing">Le icone di Steam non sono state trovate</string>
<plurals name="touch_icons_found">
+1 -1
View File
@@ -2319,7 +2319,7 @@
<string name="touch_done">完了</string>
<string name="touch_save_failed">タッチレイアウトを保存できませんでした</string>
<string name="touch_saved">タッチレイアウトをSteamに保存しました</string>
<string name="touch_app_id">アプリ%1$d</string>
<string name="touch_app_id">アプリ%1$s</string>
<string name="touch_label_hint">ラベル(任意)</string>
<string name="touch_icons_missing">Steamのアイコンが見つかりませんでした</string>
<plurals name="touch_icons_found">
+1 -1
View File
@@ -2319,7 +2319,7 @@
<string name="touch_done">완료</string>
<string name="touch_save_failed">터치 레이아웃을 저장할 수 없습니다</string>
<string name="touch_saved">터치 레이아웃이 Steam에 저장되었습니다</string>
<string name="touch_app_id">앱 %1$d</string>
<string name="touch_app_id">앱 %1$s</string>
<string name="touch_label_hint">라벨(선택 사항)</string>
<string name="touch_icons_missing">Steam 아이콘을 찾을 수 없습니다</string>
<plurals name="touch_icons_found">
+1 -1
View File
@@ -2319,7 +2319,7 @@
<string name="touch_done">Selesai</string>
<string name="touch_save_failed">Susun atur sentuh tidak dapat disimpan</string>
<string name="touch_saved">Susun atur sentuh disimpan ke Steam</string>
<string name="touch_app_id">Apl %1$d</string>
<string name="touch_app_id">Apl %1$s</string>
<string name="touch_label_hint">Label (pilihan)</string>
<string name="touch_icons_missing">Ikon Steam tidak dijumpai</string>
<plurals name="touch_icons_found">
+1 -1
View File
@@ -2342,7 +2342,7 @@
<string name="touch_done">Fullført</string>
<string name="touch_save_failed">Kunne ikke lagre berøringsoppsettet</string>
<string name="touch_saved">Berøringsoppsett lagret til Steam</string>
<string name="touch_app_id">App %1$d</string>
<string name="touch_app_id">App %1$s</string>
<string name="touch_label_hint">Etikett (valgfritt)</string>
<string name="touch_icons_missing">Steams ikoner ble ikke funnet</string>
<plurals name="touch_icons_found">
+1 -1
View File
@@ -2342,7 +2342,7 @@
<string name="touch_done">Klaar</string>
<string name="touch_save_failed">De aanraakindeling kon niet worden opgeslagen</string>
<string name="touch_saved">Aanraakindeling opgeslagen in Steam</string>
<string name="touch_app_id">App %1$d</string>
<string name="touch_app_id">App %1$s</string>
<string name="touch_label_hint">Label (optioneel)</string>
<string name="touch_icons_missing">Steams pictogrammen zijn niet gevonden</string>
<plurals name="touch_icons_found">
+1 -1
View File
@@ -2388,7 +2388,7 @@
<string name="touch_done">Gotowe</string>
<string name="touch_save_failed">Nie udało się zapisać układu dotykowego</string>
<string name="touch_saved">Układ dotykowy zapisany w Steam</string>
<string name="touch_app_id">Aplikacja %1$d</string>
<string name="touch_app_id">Aplikacja %1$s</string>
<string name="touch_label_hint">Etykieta (opcjonalnie)</string>
<string name="touch_icons_missing">Nie znaleziono ikon Steam</string>
<plurals name="touch_icons_found">
+1 -1
View File
@@ -2351,7 +2351,7 @@
<string name="touch_done">Concluído</string>
<string name="touch_save_failed">Não foi possível guardar o esquema tátil</string>
<string name="touch_saved">Esquema tátil guardado na Steam</string>
<string name="touch_app_id">Aplicação %1$d</string>
<string name="touch_app_id">Aplicação %1$s</string>
<string name="touch_label_hint">Etiqueta (opcional)</string>
<string name="touch_icons_missing">Os ícones da Steam não foram encontrados</string>
<plurals name="touch_icons_found">
+1 -1
View File
@@ -2351,7 +2351,7 @@
<string name="touch_done">Concluído</string>
<string name="touch_save_failed">Não foi possível salvar o layout de toque</string>
<string name="touch_saved">Layout de toque salvo na Steam</string>
<string name="touch_app_id">App %1$d</string>
<string name="touch_app_id">App %1$s</string>
<string name="touch_label_hint">Rótulo (opcional)</string>
<string name="touch_icons_missing">Os ícones da Steam não foram encontrados</string>
<plurals name="touch_icons_found">
+1 -1
View File
@@ -2365,7 +2365,7 @@
<string name="touch_done">Terminat</string>
<string name="touch_save_failed">Aranjamentul tactil nu a putut fi salvat</string>
<string name="touch_saved">Aranjamentul tactil a fost salvat în Steam</string>
<string name="touch_app_id">Aplicația %1$d</string>
<string name="touch_app_id">Aplicația %1$s</string>
<string name="touch_label_hint">Etichetă (opțional)</string>
<string name="touch_icons_missing">Pictogramele Steam nu au fost găsite</string>
<plurals name="touch_icons_found">
+1 -1
View File
@@ -2382,7 +2382,7 @@
<string name="touch_done">Готово</string>
<string name="touch_save_failed">Не удалось сохранить сенсорную раскладку</string>
<string name="touch_saved">Сенсорная раскладка сохранена в Steam</string>
<string name="touch_app_id">Приложение %1$d</string>
<string name="touch_app_id">Приложение %1$s</string>
<string name="touch_label_hint">Подпись (необязательно)</string>
<string name="touch_icons_missing">Значки Steam не найдены</string>
<plurals name="touch_icons_found">
+1 -1
View File
@@ -2342,7 +2342,7 @@
<string name="touch_done">Klar</string>
<string name="touch_save_failed">Det gick inte att spara pekskärmslayouten</string>
<string name="touch_saved">Pekskärmslayout sparad till Steam</string>
<string name="touch_app_id">App %1$d</string>
<string name="touch_app_id">App %1$s</string>
<string name="touch_label_hint">Etikett (valfritt)</string>
<string name="touch_icons_missing">Steams ikoner hittades inte</string>
<plurals name="touch_icons_found">
+1 -1
View File
@@ -2319,7 +2319,7 @@
<string name="touch_done">เสร็จสิ้น</string>
<string name="touch_save_failed">ไม่สามารถบันทึกเค้าโครงสัมผัสได้</string>
<string name="touch_saved">บันทึกเค้าโครงสัมผัสลง Steam แล้ว</string>
<string name="touch_app_id">แอป %1$d</string>
<string name="touch_app_id">แอป %1$s</string>
<string name="touch_label_hint">ป้ายชื่อ (ไม่บังคับ)</string>
<string name="touch_icons_missing">ไม่พบไอคอนของ Steam</string>
<plurals name="touch_icons_found">
+1 -1
View File
@@ -2328,7 +2328,7 @@
<string name="touch_done">Bitti</string>
<string name="touch_save_failed">Dokunmatik düzen kaydedilemedi</string>
<string name="touch_saved">Dokunmatik düzen Steam\'e kaydedildi</string>
<string name="touch_app_id">Uygulama %1$d</string>
<string name="touch_app_id">Uygulama %1$s</string>
<string name="touch_label_hint">Etiket (isteğe bağlı)</string>
<string name="touch_icons_missing">Steam\'in simgeleri bulunamadı</string>
<plurals name="touch_icons_found">
+1 -1
View File
@@ -2388,7 +2388,7 @@
<string name="touch_done">Готово</string>
<string name="touch_save_failed">Не вдалося зберегти сенсорну розкладку</string>
<string name="touch_saved">Сенсорну розкладку збережено в Steam</string>
<string name="touch_app_id">Застосунок %1$d</string>
<string name="touch_app_id">Застосунок %1$s</string>
<string name="touch_label_hint">Підпис (необов\'язково)</string>
<string name="touch_icons_missing">Значки Steam не знайдено</string>
<plurals name="touch_icons_found">
+1 -1
View File
@@ -2319,7 +2319,7 @@
<string name="touch_done">Xong</string>
<string name="touch_save_failed">Không thể lưu bố cục chạm</string>
<string name="touch_saved">Đã lưu bố cục chạm vào Steam</string>
<string name="touch_app_id">Ứng dụng %1$d</string>
<string name="touch_app_id">Ứng dụng %1$s</string>
<string name="touch_label_hint">Nhãn (không bắt buộc)</string>
<string name="touch_icons_missing">Không tìm thấy biểu tượng của Steam</string>
<plurals name="touch_icons_found">
+1 -1
View File
@@ -2319,7 +2319,7 @@
<string name="touch_done">完成</string>
<string name="touch_save_failed">无法保存触控布局</string>
<string name="touch_saved">触控布局已保存到 Steam</string>
<string name="touch_app_id">应用 %1$d</string>
<string name="touch_app_id">应用 %1$s</string>
<string name="touch_label_hint">标签(可选)</string>
<string name="touch_icons_missing">未找到 Steam 的图标</string>
<plurals name="touch_icons_found">
+1 -1
View File
@@ -2319,7 +2319,7 @@
<string name="touch_done">完成</string>
<string name="touch_save_failed">無法儲存觸控佈局</string>
<string name="touch_saved">觸控佈局已儲存至 Steam</string>
<string name="touch_app_id">應用程式 %1$d</string>
<string name="touch_app_id">應用程式 %1$s</string>
<string name="touch_label_hint">標籤(選用)</string>
<string name="touch_icons_missing">找不到 Steam 的圖示</string>
<plurals name="touch_icons_found">
+1 -1
View File
@@ -2319,7 +2319,7 @@
<string name="touch_done">完成</string>
<string name="touch_save_failed">無法儲存觸控版面配置</string>
<string name="touch_saved">觸控版面配置已儲存至 Steam</string>
<string name="touch_app_id">應用程式 %1$d</string>
<string name="touch_app_id">應用程式 %1$s</string>
<string name="touch_label_hint">標籤(選用)</string>
<string name="touch_icons_missing">找不到 Steam 的圖示</string>
<plurals name="touch_icons_found">
+1 -1
View File
@@ -2421,7 +2421,7 @@
<string name="touch_done">Done</string>
<string name="touch_save_failed">Could not save the touch layout</string>
<string name="touch_saved">Touch layout saved to Steam</string>
<string name="touch_app_id">App %1$d</string>
<string name="touch_app_id">App %1$s</string>
<string name="touch_label_hint">Label (optional)</string>
<string name="touch_icons_missing">Steam\'s icons were not found</string>
<plurals name="touch_icons_found">