More cleaningup

Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
jpirnay
2026-04-26 17:12:52 +02:00
co-authored by Copilot
parent f0fe02d77a
commit 3046a1a94a
32 changed files with 83 additions and 230 deletions
-3
View File
@@ -67,7 +67,6 @@ STR_HIDE_BATTERY: "Схаваць % батарэі"
STR_EXTRA_SPACING: "Дадат. інтэрвал абзаца" STR_EXTRA_SPACING: "Дадат. інтэрвал абзаца"
STR_TEXT_AA: "Згладжванне тэксту" STR_TEXT_AA: "Згладжванне тэксту"
STR_ORIENTATION: "Арыентацыя чытання" STR_ORIENTATION: "Арыентацыя чытання"
STR_SIDE_BTN_LAYOUT: "Бакавыя кнопкі"
STR_LONG_PRESS_SKIP: "Доўгае націсканне - змена раздзела" STR_LONG_PRESS_SKIP: "Доўгае націсканне - змена раздзела"
STR_FONT_FAMILY: "Шрыфт чытання" STR_FONT_FAMILY: "Шрыфт чытання"
STR_FONT_SIZE: "Памер шрыфту інтэрфейсу" STR_FONT_SIZE: "Памер шрыфту інтэрфейсу"
@@ -122,8 +121,6 @@ STR_PORTRAIT: "Партрэт"
STR_LANDSCAPE_CW: "Ландшафт (CW)" STR_LANDSCAPE_CW: "Ландшафт (CW)"
STR_INVERTED: "Інверсія" STR_INVERTED: "Інверсія"
STR_LANDSCAPE_CCW: "Ландшафт (CCW)" STR_LANDSCAPE_CCW: "Ландшафт (CCW)"
STR_PREV_NEXT: "Назад/Наперад"
STR_NEXT_PREV: "Наперад/Назад"
STR_BOOKERLY: "Bookerly" STR_BOOKERLY: "Bookerly"
STR_NOTO_SANS: "Noto Sans" STR_NOTO_SANS: "Noto Sans"
STR_OPEN_DYSLEXIC: "Open Dyslexic" STR_OPEN_DYSLEXIC: "Open Dyslexic"
-3
View File
@@ -71,7 +71,6 @@ STR_IMAGES_DISPLAY: "Mostrar"
STR_IMAGES_PLACEHOLDER: "Text de mostra" STR_IMAGES_PLACEHOLDER: "Text de mostra"
STR_IMAGES_SUPPRESS: "Suprimir" STR_IMAGES_SUPPRESS: "Suprimir"
STR_ORIENTATION: "Orientació de lectura" STR_ORIENTATION: "Orientació de lectura"
STR_SIDE_BTN_LAYOUT: "Disposició botons laterals"
STR_LONG_PRESS_SKIP: "Pressió llarga omet el capítol" STR_LONG_PRESS_SKIP: "Pressió llarga omet el capítol"
STR_FONT_FAMILY: "Tipus de lletra" STR_FONT_FAMILY: "Tipus de lletra"
STR_FONT_SIZE: "Mida de la lletra (UI)" STR_FONT_SIZE: "Mida de la lletra (UI)"
@@ -127,8 +126,6 @@ STR_PORTRAIT: "Vertical"
STR_LANDSCAPE_CW: "Horitzontal horari" STR_LANDSCAPE_CW: "Horitzontal horari"
STR_INVERTED: "Invertit" STR_INVERTED: "Invertit"
STR_LANDSCAPE_CCW: "Horitzontal antihorari" STR_LANDSCAPE_CCW: "Horitzontal antihorari"
STR_PREV_NEXT: "Anterior/Següent"
STR_NEXT_PREV: "Següent/Anterior"
STR_BOOKERLY: "Bookerly" STR_BOOKERLY: "Bookerly"
STR_NOTO_SANS: "Noto Sans" STR_NOTO_SANS: "Noto Sans"
STR_OPEN_DYSLEXIC: "Open Dyslexic" STR_OPEN_DYSLEXIC: "Open Dyslexic"
-3
View File
@@ -67,7 +67,6 @@ STR_HIDE_BATTERY: "Skrýt baterii %"
STR_EXTRA_SPACING: "Extra mezery mezi odstavci" STR_EXTRA_SPACING: "Extra mezery mezi odstavci"
STR_TEXT_AA: "Vyhlazování textu" STR_TEXT_AA: "Vyhlazování textu"
STR_ORIENTATION: "Orientace čtení" STR_ORIENTATION: "Orientace čtení"
STR_SIDE_BTN_LAYOUT: "Rozvržení bočních tlačítek (čtečka)"
STR_LONG_PRESS_SKIP: "Dlouhé stisknutí Přeskočit kapitolu" STR_LONG_PRESS_SKIP: "Dlouhé stisknutí Přeskočit kapitolu"
STR_FONT_FAMILY: "Rodina písem čtečky" STR_FONT_FAMILY: "Rodina písem čtečky"
STR_FONT_SIZE: "Velikost písma rozhraní" STR_FONT_SIZE: "Velikost písma rozhraní"
@@ -122,8 +121,6 @@ STR_PORTRAIT: "Na výšku"
STR_LANDSCAPE_CW: "Na šířku po směru hod. ručiček" STR_LANDSCAPE_CW: "Na šířku po směru hod. ručiček"
STR_INVERTED: "Invertovaný" STR_INVERTED: "Invertovaný"
STR_LANDSCAPE_CCW: "Na šířku proti směru hod. ručiček" STR_LANDSCAPE_CCW: "Na šířku proti směru hod. ručiček"
STR_PREV_NEXT: "Předchozí/Další"
STR_NEXT_PREV: "Další/Předchozí"
STR_BOOKERLY: "Bookerly" STR_BOOKERLY: "Bookerly"
STR_NOTO_SANS: "Noto Sans" STR_NOTO_SANS: "Noto Sans"
STR_OPEN_DYSLEXIC: "Open Dyslexic" STR_OPEN_DYSLEXIC: "Open Dyslexic"
-3
View File
@@ -71,7 +71,6 @@ STR_IMAGES_DISPLAY: "Vis"
STR_IMAGES_PLACEHOLDER: "Pladsholder" STR_IMAGES_PLACEHOLDER: "Pladsholder"
STR_IMAGES_SUPPRESS: "Skjul" STR_IMAGES_SUPPRESS: "Skjul"
STR_ORIENTATION: "Læseretning" STR_ORIENTATION: "Læseretning"
STR_SIDE_BTN_LAYOUT: "Knaplayout på siden (læser)"
STR_LONG_PRESS_SKIP: "Langt tryk spring kapitel over" STR_LONG_PRESS_SKIP: "Langt tryk spring kapitel over"
STR_FONT_FAMILY: "Læser skrifttype" STR_FONT_FAMILY: "Læser skrifttype"
STR_FONT_SIZE: "Læser skriftstørrelse" STR_FONT_SIZE: "Læser skriftstørrelse"
@@ -127,8 +126,6 @@ STR_PORTRAIT: "Portræt"
STR_LANDSCAPE_CW: "Liggende med uret" STR_LANDSCAPE_CW: "Liggende med uret"
STR_INVERTED: "Inverteret" STR_INVERTED: "Inverteret"
STR_LANDSCAPE_CCW: "Liggende mod uret" STR_LANDSCAPE_CCW: "Liggende mod uret"
STR_PREV_NEXT: "Forrige/Næste"
STR_NEXT_PREV: "Næste/Forrige"
STR_BOOKERLY: "Bookerly" STR_BOOKERLY: "Bookerly"
STR_NOTO_SANS: "Noto Sans" STR_NOTO_SANS: "Noto Sans"
STR_OPEN_DYSLEXIC: "Open Dyslexic" STR_OPEN_DYSLEXIC: "Open Dyslexic"
-3
View File
@@ -97,7 +97,6 @@ STR_IMAGE_DITHER_ATKINSON: "Atkinson"
STR_IMAGE_DITHER_DIFFUSED_BAYER: "Gediffuseerde Bayer" STR_IMAGE_DITHER_DIFFUSED_BAYER: "Gediffuseerde Bayer"
STR_CREATE_FALLBACK_FOR_INVALID_TOC: "Maak fallback voor ongeldige inhoudsopgave" STR_CREATE_FALLBACK_FOR_INVALID_TOC: "Maak fallback voor ongeldige inhoudsopgave"
STR_ORIENTATION: "Leesstand" STR_ORIENTATION: "Leesstand"
STR_SIDE_BTN_LAYOUT: "Indeling zijknoppen (lezer)"
STR_LONG_PRESS_SKIP: "Hoofdstuk overslaan (lang indrukken)" STR_LONG_PRESS_SKIP: "Hoofdstuk overslaan (lang indrukken)"
STR_FONT_FAMILY: "Lettertype lezer" STR_FONT_FAMILY: "Lettertype lezer"
STR_FONT_SIZE: "Lettergrootte lezer" STR_FONT_SIZE: "Lettergrootte lezer"
@@ -202,8 +201,6 @@ STR_PORTRAIT: "Staand"
STR_LANDSCAPE_CW: "Liggend (rechtsom)" STR_LANDSCAPE_CW: "Liggend (rechtsom)"
STR_INVERTED: "Omgekeerd" STR_INVERTED: "Omgekeerd"
STR_LANDSCAPE_CCW: "Liggend (linksom)" STR_LANDSCAPE_CCW: "Liggend (linksom)"
STR_PREV_NEXT: "Vorige/Volgende"
STR_NEXT_PREV: "Volgende/Vorige"
STR_BOOKERLY: "Bookerly" STR_BOOKERLY: "Bookerly"
STR_NOTO_SANS: "Noto Sans" STR_NOTO_SANS: "Noto Sans"
STR_OPEN_DYSLEXIC: "Open Dyslexic" STR_OPEN_DYSLEXIC: "Open Dyslexic"
-5
View File
@@ -97,7 +97,6 @@ STR_IMAGE_DITHER_ATKINSON: "Atkinson"
STR_IMAGE_DITHER_DIFFUSED_BAYER: "Diffused Bayer" STR_IMAGE_DITHER_DIFFUSED_BAYER: "Diffused Bayer"
STR_CREATE_FALLBACK_FOR_INVALID_TOC: "Create fallback for invalid TOC" STR_CREATE_FALLBACK_FOR_INVALID_TOC: "Create fallback for invalid TOC"
STR_ORIENTATION: "Reading Orientation" STR_ORIENTATION: "Reading Orientation"
STR_SIDE_BTN_LAYOUT: "Side Button Layout (reader)"
STR_LONG_PRESS_SKIP: "Long-press Chapter Skip" STR_LONG_PRESS_SKIP: "Long-press Chapter Skip"
STR_FONT_FAMILY: "Reader Font Family" STR_FONT_FAMILY: "Reader Font Family"
STR_FONT_SIZE: "Reader Font Size" STR_FONT_SIZE: "Reader Font Size"
@@ -202,8 +201,6 @@ STR_PORTRAIT: "Portrait"
STR_LANDSCAPE_CW: "Landscape CW" STR_LANDSCAPE_CW: "Landscape CW"
STR_INVERTED: "Inverted" STR_INVERTED: "Inverted"
STR_LANDSCAPE_CCW: "Landscape CCW" STR_LANDSCAPE_CCW: "Landscape CCW"
STR_PREV_NEXT: "Prev/Next"
STR_NEXT_PREV: "Next/Prev"
STR_BOOKERLY: "Bookerly" STR_BOOKERLY: "Bookerly"
STR_NOTO_SANS: "Noto Sans" STR_NOTO_SANS: "Noto Sans"
STR_OPEN_DYSLEXIC: "Open Dyslexic" STR_OPEN_DYSLEXIC: "Open Dyslexic"
@@ -552,8 +549,6 @@ STR_BTN_BACK: "Back Button"
STR_BTN_CONFIRM: "Confirm Button" STR_BTN_CONFIRM: "Confirm Button"
STR_BTN_LEFT: "Left Button" STR_BTN_LEFT: "Left Button"
STR_BTN_RIGHT: "Right Button" STR_BTN_RIGHT: "Right Button"
STR_BTN_UP: "Up Button"
STR_BTN_DOWN: "Down Button"
STR_BTN_PAGE_BACK: "Page Back Button" STR_BTN_PAGE_BACK: "Page Back Button"
STR_BTN_PAGE_FORWARD: "Page Forward Button" STR_BTN_PAGE_FORWARD: "Page Forward Button"
STR_BTN_POWER: "Power Button" STR_BTN_POWER: "Power Button"
-3
View File
@@ -67,7 +67,6 @@ STR_HIDE_BATTERY: "Piilota akun %"
STR_EXTRA_SPACING: "Kappaleiden lisäväli" STR_EXTRA_SPACING: "Kappaleiden lisäväli"
STR_TEXT_AA: "Tekstin reunanpehmennys" STR_TEXT_AA: "Tekstin reunanpehmennys"
STR_ORIENTATION: "Lukusuunta" STR_ORIENTATION: "Lukusuunta"
STR_SIDE_BTN_LAYOUT: "Sivupainikkeiden asettelu (lukija)"
STR_LONG_PRESS_SKIP: "Pitkä painallus: lukuhyppy" STR_LONG_PRESS_SKIP: "Pitkä painallus: lukuhyppy"
STR_FONT_FAMILY: "Lukijan fonttiperhe" STR_FONT_FAMILY: "Lukijan fonttiperhe"
STR_FONT_SIZE: "Käyttöliittymän fonttikoko" STR_FONT_SIZE: "Käyttöliittymän fonttikoko"
@@ -122,8 +121,6 @@ STR_PORTRAIT: "Pysty"
STR_LANDSCAPE_CW: "Vaaka myötäpäivään" STR_LANDSCAPE_CW: "Vaaka myötäpäivään"
STR_INVERTED: "Käännetty" STR_INVERTED: "Käännetty"
STR_LANDSCAPE_CCW: "Vaaka vastapäivään" STR_LANDSCAPE_CCW: "Vaaka vastapäivään"
STR_PREV_NEXT: "Edell/Seur"
STR_NEXT_PREV: "Seur/Edell"
STR_BOOKERLY: "Bookerly" STR_BOOKERLY: "Bookerly"
STR_NOTO_SANS: "Noto Sans" STR_NOTO_SANS: "Noto Sans"
STR_OPEN_DYSLEXIC: "Open Dyslexic" STR_OPEN_DYSLEXIC: "Open Dyslexic"
-3
View File
@@ -92,7 +92,6 @@ STR_IMAGES_DISPLAY: "Affichage"
STR_IMAGES_PLACEHOLDER: "Espace réservé" STR_IMAGES_PLACEHOLDER: "Espace réservé"
STR_IMAGES_SUPPRESS: "Masquer" STR_IMAGES_SUPPRESS: "Masquer"
STR_ORIENTATION: "Orientation de lecture" STR_ORIENTATION: "Orientation de lecture"
STR_SIDE_BTN_LAYOUT: "Boutons latéraux"
STR_LONG_PRESS_SKIP: "Appui long saut de chapitre" STR_LONG_PRESS_SKIP: "Appui long saut de chapitre"
STR_FONT_FAMILY: "Police de caractères du lecteur" STR_FONT_FAMILY: "Police de caractères du lecteur"
STR_FONT_SIZE: "Taille texte interface" STR_FONT_SIZE: "Taille texte interface"
@@ -150,8 +149,6 @@ STR_PORTRAIT: "Portrait"
STR_LANDSCAPE_CW: "Paysage" STR_LANDSCAPE_CW: "Paysage"
STR_INVERTED: "Inversé" STR_INVERTED: "Inversé"
STR_LANDSCAPE_CCW: "Paysage inversé" STR_LANDSCAPE_CCW: "Paysage inversé"
STR_PREV_NEXT: "Préc/Suiv"
STR_NEXT_PREV: "Suiv/Préc"
STR_ABC: "abc" STR_ABC: "abc"
STR_FORCE_REFRESH: "Actualiser l'écran" STR_FORCE_REFRESH: "Actualiser l'écran"
STR_NEXT: "Suiv" STR_NEXT: "Suiv"
-3
View File
@@ -80,7 +80,6 @@ STR_IMAGE_DITHER_BAYER: "Bayer"
STR_IMAGE_DITHER_ATKINSON: "Atkinson" STR_IMAGE_DITHER_ATKINSON: "Atkinson"
STR_IMAGE_DITHER_DIFFUSED_BAYER: "Diffundiertes Bayer" STR_IMAGE_DITHER_DIFFUSED_BAYER: "Diffundiertes Bayer"
STR_ORIENTATION: "Leseausrichtung" STR_ORIENTATION: "Leseausrichtung"
STR_SIDE_BTN_LAYOUT: "Seitliche Tasten (Lesen)"
STR_LONG_PRESS_SKIP: "Langes Drücken springt Kap." STR_LONG_PRESS_SKIP: "Langes Drücken springt Kap."
STR_FONT_FAMILY: "Lese-Schriftfamilie" STR_FONT_FAMILY: "Lese-Schriftfamilie"
STR_FONT_SIZE: "Schriftgröße" STR_FONT_SIZE: "Schriftgröße"
@@ -141,8 +140,6 @@ STR_PORTRAIT: "Hochformat"
STR_LANDSCAPE_CW: "Querformat rechts" STR_LANDSCAPE_CW: "Querformat rechts"
STR_INVERTED: "Invertiert" STR_INVERTED: "Invertiert"
STR_LANDSCAPE_CCW: "Querformat links" STR_LANDSCAPE_CCW: "Querformat links"
STR_PREV_NEXT: "Zurück/Weiter"
STR_NEXT_PREV: "Weiter/Zurück"
STR_ABC: "abc" STR_ABC: "abc"
STR_FORCE_REFRESH: "Bildschirm aktualisieren" STR_FORCE_REFRESH: "Bildschirm aktualisieren"
STR_NEXT: "Weiter" STR_NEXT: "Weiter"
-3
View File
@@ -71,7 +71,6 @@ STR_IMAGES_DISPLAY: "Megjelenítés"
STR_IMAGES_PLACEHOLDER: "Helyőrző" STR_IMAGES_PLACEHOLDER: "Helyőrző"
STR_IMAGES_SUPPRESS: "Elnyomás" STR_IMAGES_SUPPRESS: "Elnyomás"
STR_ORIENTATION: "Olvasási irány" STR_ORIENTATION: "Olvasási irány"
STR_SIDE_BTN_LAYOUT: "Oldalsó gomb elrendezés (olvasó)"
STR_LONG_PRESS_SKIP: "Hosszú nyomás - fejezet ugrás" STR_LONG_PRESS_SKIP: "Hosszú nyomás - fejezet ugrás"
STR_FONT_FAMILY: "Olvasó betűkészlet" STR_FONT_FAMILY: "Olvasó betűkészlet"
STR_FONT_SIZE: "Olvasó betűméret" STR_FONT_SIZE: "Olvasó betűméret"
@@ -127,8 +126,6 @@ STR_PORTRAIT: "Álló"
STR_LANDSCAPE_CW: "Fekvő jobbra" STR_LANDSCAPE_CW: "Fekvő jobbra"
STR_INVERTED: "Fordított" STR_INVERTED: "Fordított"
STR_LANDSCAPE_CCW: "Fekvő balra" STR_LANDSCAPE_CCW: "Fekvő balra"
STR_PREV_NEXT: "Előző/Következő"
STR_NEXT_PREV: "Következő/Előző"
STR_BOOKERLY: "Bookerly" STR_BOOKERLY: "Bookerly"
STR_NOTO_SANS: "Noto Sans" STR_NOTO_SANS: "Noto Sans"
STR_OPEN_DYSLEXIC: "Open Dyslexic" STR_OPEN_DYSLEXIC: "Open Dyslexic"
-3
View File
@@ -92,7 +92,6 @@ STR_IMAGES_DISPLAY: "Visualizza"
STR_IMAGES_PLACEHOLDER: "Segnaposto" STR_IMAGES_PLACEHOLDER: "Segnaposto"
STR_IMAGES_SUPPRESS: "Nascondi" STR_IMAGES_SUPPRESS: "Nascondi"
STR_ORIENTATION: "Orientamento lettura" STR_ORIENTATION: "Orientamento lettura"
STR_SIDE_BTN_LAYOUT: "Pulsanti laterali (lettore)"
STR_LONG_PRESS_SKIP: "Pressione lunga: salta capitolo" STR_LONG_PRESS_SKIP: "Pressione lunga: salta capitolo"
STR_FONT_FAMILY: "Font lettore" STR_FONT_FAMILY: "Font lettore"
STR_FONT_SIZE: "Dimensione font lettore" STR_FONT_SIZE: "Dimensione font lettore"
@@ -150,8 +149,6 @@ STR_PORTRAIT: "Verticale"
STR_LANDSCAPE_CW: "Orizzontale ↻" STR_LANDSCAPE_CW: "Orizzontale ↻"
STR_INVERTED: "Invertito" STR_INVERTED: "Invertito"
STR_LANDSCAPE_CCW: "Orizzontale ↺" STR_LANDSCAPE_CCW: "Orizzontale ↺"
STR_PREV_NEXT: "Prec/Succ"
STR_NEXT_PREV: "Succ/Prec"
STR_ABC: "abc" STR_ABC: "abc"
STR_FORCE_REFRESH: "Aggiorna schermo" STR_FORCE_REFRESH: "Aggiorna schermo"
STR_NEXT: "Succ" STR_NEXT: "Succ"
-3
View File
@@ -66,7 +66,6 @@ STR_HIDE_BATTERY: "Батарея % жасыру"
STR_EXTRA_SPACING: "Қосымша абзац аралығы" STR_EXTRA_SPACING: "Қосымша абзац аралығы"
STR_TEXT_AA: "Мәтін сырғытпасы" STR_TEXT_AA: "Мәтін сырғытпасы"
STR_ORIENTATION: "Оқу бағдары" STR_ORIENTATION: "Оқу бағдары"
STR_SIDE_BTN_LAYOUT: "Бүйірлік түймелер орналасуы (оқырман)"
STR_LONG_PRESS_SKIP: "Ұзақ басу арқылы тарау өткізу" STR_LONG_PRESS_SKIP: "Ұзақ басу арқылы тарау өткізу"
STR_FONT_FAMILY: "Оқырман қаріп тобы" STR_FONT_FAMILY: "Оқырман қаріп тобы"
STR_FONT_SIZE: "Интерфейс қаріп өлшемі" STR_FONT_SIZE: "Интерфейс қаріп өлшемі"
@@ -121,8 +120,6 @@ STR_PORTRAIT: "Тік бағдар"
STR_LANDSCAPE_CW: "Көлденең (сағат бағытымен)" STR_LANDSCAPE_CW: "Көлденең (сағат бағытымен)"
STR_INVERTED: "Төңкерілген" STR_INVERTED: "Төңкерілген"
STR_LANDSCAPE_CCW: "Көлденең (сағат тіліне қарсы)" STR_LANDSCAPE_CCW: "Көлденең (сағат тіліне қарсы)"
STR_PREV_NEXT: "Алдыңғы/Келесі"
STR_NEXT_PREV: "Келесі/Алдыңғы"
STR_BOOKERLY: "Bookerly" STR_BOOKERLY: "Bookerly"
STR_NOTO_SANS: "Noto Sans" STR_NOTO_SANS: "Noto Sans"
STR_OPEN_DYSLEXIC: "Open Dyslexic" STR_OPEN_DYSLEXIC: "Open Dyslexic"
-3
View File
@@ -71,7 +71,6 @@ STR_IMAGES_DISPLAY: "Rodyti"
STR_IMAGES_PLACEHOLDER: "Vietaženklis" STR_IMAGES_PLACEHOLDER: "Vietaženklis"
STR_IMAGES_SUPPRESS: "Slėpti" STR_IMAGES_SUPPRESS: "Slėpti"
STR_ORIENTATION: "Orientacija" STR_ORIENTATION: "Orientacija"
STR_SIDE_BTN_LAYOUT: "Šoniniai mygtukai"
STR_LONG_PRESS_SKIP: "Praleisti skyrių (ilgai)" STR_LONG_PRESS_SKIP: "Praleisti skyrių (ilgai)"
STR_FONT_FAMILY: "Šriftas" STR_FONT_FAMILY: "Šriftas"
STR_FONT_SIZE: "Šrifto dydis" STR_FONT_SIZE: "Šrifto dydis"
@@ -127,8 +126,6 @@ STR_PORTRAIT: "Stačias"
STR_LANDSCAPE_CW: "Gulsčias (P)" STR_LANDSCAPE_CW: "Gulsčias (P)"
STR_INVERTED: "Apverstas" STR_INVERTED: "Apverstas"
STR_LANDSCAPE_CCW: "Gulsčias (A)" STR_LANDSCAPE_CCW: "Gulsčias (A)"
STR_PREV_NEXT: "Atgal/Pirmyn"
STR_NEXT_PREV: "Pirmyn/Atgal"
STR_BOOKERLY: "Bookerly" STR_BOOKERLY: "Bookerly"
STR_NOTO_SANS: "Noto Sans" STR_NOTO_SANS: "Noto Sans"
STR_OPEN_DYSLEXIC: "O. Dyslexic" STR_OPEN_DYSLEXIC: "O. Dyslexic"
-3
View File
@@ -97,7 +97,6 @@ STR_IMAGE_DITHER_ATKINSON: "Atkinson"
STR_IMAGE_DITHER_DIFFUSED_BAYER: "Dyfundowany Bayer" STR_IMAGE_DITHER_DIFFUSED_BAYER: "Dyfundowany Bayer"
STR_CREATE_FALLBACK_FOR_INVALID_TOC: "Utwórz fallback dla nieprawidłowego spisu treści" STR_CREATE_FALLBACK_FOR_INVALID_TOC: "Utwórz fallback dla nieprawidłowego spisu treści"
STR_ORIENTATION: "Układ czytania" STR_ORIENTATION: "Układ czytania"
STR_SIDE_BTN_LAYOUT: "Układ przycisków bocznych"
STR_LONG_PRESS_SKIP: "Przytrzymaj aby przeskoczyć rozdział" STR_LONG_PRESS_SKIP: "Przytrzymaj aby przeskoczyć rozdział"
STR_FONT_FAMILY: "Czcionka" STR_FONT_FAMILY: "Czcionka"
STR_FONT_SIZE: "Rozmiar czcionki" STR_FONT_SIZE: "Rozmiar czcionki"
@@ -202,8 +201,6 @@ STR_PORTRAIT: "Pionowo"
STR_LANDSCAPE_CW: "Poziomo P" STR_LANDSCAPE_CW: "Poziomo P"
STR_INVERTED: "Odwrócony" STR_INVERTED: "Odwrócony"
STR_LANDSCAPE_CCW: "Poziomo L" STR_LANDSCAPE_CCW: "Poziomo L"
STR_PREV_NEXT: "Poprz./Nast."
STR_NEXT_PREV: "Nast./Poprz."
STR_BOOKERLY: "Bookerly" STR_BOOKERLY: "Bookerly"
STR_NOTO_SANS: "Noto Sans" STR_NOTO_SANS: "Noto Sans"
STR_OPEN_DYSLEXIC: "Open Dyslexic" STR_OPEN_DYSLEXIC: "Open Dyslexic"
-3
View File
@@ -96,7 +96,6 @@ STR_IMAGE_DITHER_BAYER: "Bayer"
STR_IMAGE_DITHER_ATKINSON: "Atkinson" STR_IMAGE_DITHER_ATKINSON: "Atkinson"
STR_IMAGE_DITHER_DIFFUSED_BAYER: "Bayer difuso" STR_IMAGE_DITHER_DIFFUSED_BAYER: "Bayer difuso"
STR_ORIENTATION: "Orientação de leitura" STR_ORIENTATION: "Orientação de leitura"
STR_SIDE_BTN_LAYOUT: "Disposição dos botões laterais"
STR_LONG_PRESS_SKIP: "Pular capítulo com pressão longa" STR_LONG_PRESS_SKIP: "Pular capítulo com pressão longa"
STR_FONT_FAMILY: "Fonte do leitor" STR_FONT_FAMILY: "Fonte do leitor"
STR_FONT_SIZE: "Tam. da fonte da UI" STR_FONT_SIZE: "Tam. da fonte da UI"
@@ -154,8 +153,6 @@ STR_PORTRAIT: "Retrato"
STR_LANDSCAPE_CW: "Paisagem H" STR_LANDSCAPE_CW: "Paisagem H"
STR_INVERTED: "Invertido" STR_INVERTED: "Invertido"
STR_LANDSCAPE_CCW: "Paisagem AH" STR_LANDSCAPE_CCW: "Paisagem AH"
STR_PREV_NEXT: "Ant/Próx"
STR_NEXT_PREV: "Próx/Ant"
STR_BOOKERLY: "Bookerly" STR_BOOKERLY: "Bookerly"
STR_NOTO_SANS: "Noto Sans" STR_NOTO_SANS: "Noto Sans"
STR_OPEN_DYSLEXIC: "Open Dyslexic" STR_OPEN_DYSLEXIC: "Open Dyslexic"
-3
View File
@@ -88,7 +88,6 @@ STR_TEXT_DARKNESS: "Escuridão do texto"
STR_EXTRA_DARK: "Extra escuro" STR_EXTRA_DARK: "Extra escuro"
STR_MAX_DARK: "Máximo" STR_MAX_DARK: "Máximo"
STR_ORIENTATION: "Orientação de leitura" STR_ORIENTATION: "Orientação de leitura"
STR_SIDE_BTN_LAYOUT: "Disposição dos botões laterais"
STR_LONG_PRESS_SKIP: "Saltar capítulo com pressão longa" STR_LONG_PRESS_SKIP: "Saltar capítulo com pressão longa"
STR_FONT_FAMILY: "Tipo de letra do leitor" STR_FONT_FAMILY: "Tipo de letra do leitor"
STR_FONT_SIZE: "Tamanho da letra do leitor" STR_FONT_SIZE: "Tamanho da letra do leitor"
@@ -149,8 +148,6 @@ STR_PORTRAIT: "Retrato"
STR_LANDSCAPE_CW: "Paisagem H" STR_LANDSCAPE_CW: "Paisagem H"
STR_INVERTED: "Invertido" STR_INVERTED: "Invertido"
STR_LANDSCAPE_CCW: "Paisagem AH" STR_LANDSCAPE_CCW: "Paisagem AH"
STR_PREV_NEXT: "Ant./Próx."
STR_NEXT_PREV: "Próx./Ant."
STR_BOOKERLY: "Bookerly" STR_BOOKERLY: "Bookerly"
STR_NOTO_SANS: "Noto Sans" STR_NOTO_SANS: "Noto Sans"
STR_OPEN_DYSLEXIC: "Open Dyslexic" STR_OPEN_DYSLEXIC: "Open Dyslexic"
-3
View File
@@ -71,7 +71,6 @@ STR_IMAGES_DISPLAY: "Afişare"
STR_IMAGES_PLACEHOLDER: "Substituent" STR_IMAGES_PLACEHOLDER: "Substituent"
STR_IMAGES_SUPPRESS: "Suprimare" STR_IMAGES_SUPPRESS: "Suprimare"
STR_ORIENTATION: "Orientare lectură" STR_ORIENTATION: "Orientare lectură"
STR_SIDE_BTN_LAYOUT: "Aspect butoane laterale (lectură)"
STR_LONG_PRESS_SKIP: "Sărire capitol la apăsare lungă" STR_LONG_PRESS_SKIP: "Sărire capitol la apăsare lungă"
STR_FONT_FAMILY: "Familie font lectură" STR_FONT_FAMILY: "Familie font lectură"
STR_FONT_SIZE: "Dimensiune font" STR_FONT_SIZE: "Dimensiune font"
@@ -127,8 +126,6 @@ STR_PORTRAIT: "Vertical"
STR_LANDSCAPE_CW: "Orizontal dreapta" STR_LANDSCAPE_CW: "Orizontal dreapta"
STR_INVERTED: "Invers" STR_INVERTED: "Invers"
STR_LANDSCAPE_CCW: "Orizontal stânga" STR_LANDSCAPE_CCW: "Orizontal stânga"
STR_PREV_NEXT: "Înainte/Înapoi"
STR_NEXT_PREV: "Înapoi/Înainte"
STR_BOOKERLY: "Bookerly" STR_BOOKERLY: "Bookerly"
STR_NOTO_SANS: "Noto Sans" STR_NOTO_SANS: "Noto Sans"
STR_OPEN_DYSLEXIC: "Open Dyslexic" STR_OPEN_DYSLEXIC: "Open Dyslexic"
-3
View File
@@ -89,7 +89,6 @@ STR_IMAGES_DISPLAY: "Показать"
STR_IMAGES_PLACEHOLDER: "Заглушки" STR_IMAGES_PLACEHOLDER: "Заглушки"
STR_IMAGES_SUPPRESS: "Скрыть" STR_IMAGES_SUPPRESS: "Скрыть"
STR_ORIENTATION: "Ориентация чтения" STR_ORIENTATION: "Ориентация чтения"
STR_SIDE_BTN_LAYOUT: "Боковые кнопки"
STR_LONG_PRESS_SKIP: "Долгое нажатие - смена главы" STR_LONG_PRESS_SKIP: "Долгое нажатие - смена главы"
STR_FONT_FAMILY: "Шрифт чтения" STR_FONT_FAMILY: "Шрифт чтения"
STR_FONT_SIZE: "Размер шрифта интерфейса" STR_FONT_SIZE: "Размер шрифта интерфейса"
@@ -147,8 +146,6 @@ STR_PORTRAIT: "Портрет"
STR_LANDSCAPE_CW: "Ландшафт (CW)" STR_LANDSCAPE_CW: "Ландшафт (CW)"
STR_INVERTED: "Инверсия" STR_INVERTED: "Инверсия"
STR_LANDSCAPE_CCW: "Ландшафт (CCW)" STR_LANDSCAPE_CCW: "Ландшафт (CCW)"
STR_PREV_NEXT: "Назад/Вперёд"
STR_NEXT_PREV: "Вперёд/Назад"
STR_ABC: "abc" STR_ABC: "abc"
STR_FORCE_REFRESH: "Обновить экран" STR_FORCE_REFRESH: "Обновить экран"
STR_NEXT: "Далее" STR_NEXT: "Далее"
-3
View File
@@ -85,7 +85,6 @@ STR_IMAGE_DITHER_ATKINSON: "Atkinson"
STR_IMAGE_DITHER_DIFFUSED_BAYER: "Difuzni Bayer" STR_IMAGE_DITHER_DIFFUSED_BAYER: "Difuzni Bayer"
STR_CREATE_FALLBACK_FOR_INVALID_TOC: "Ustvari rezervo za neveljavno kazalo" STR_CREATE_FALLBACK_FOR_INVALID_TOC: "Ustvari rezervo za neveljavno kazalo"
STR_ORIENTATION: "Orientacija branja" STR_ORIENTATION: "Orientacija branja"
STR_SIDE_BTN_LAYOUT: "Razpored stranskih gumbov"
STR_LONG_PRESS_SKIP: "Dolgi pritisk za preskok poglavja" STR_LONG_PRESS_SKIP: "Dolgi pritisk za preskok poglavja"
STR_FONT_FAMILY: "Pisava bralnika" STR_FONT_FAMILY: "Pisava bralnika"
STR_FONT_SIZE: "Velikost pisave" STR_FONT_SIZE: "Velikost pisave"
@@ -184,8 +183,6 @@ STR_PORTRAIT: "Pokončno"
STR_LANDSCAPE_CW: "Ležeče (v smeri urinega kazalca)" STR_LANDSCAPE_CW: "Ležeče (v smeri urinega kazalca)"
STR_INVERTED: "Obrnjeno" STR_INVERTED: "Obrnjeno"
STR_LANDSCAPE_CCW: "Ležeče (proti smeri urinega kazalca)" STR_LANDSCAPE_CCW: "Ležeče (proti smeri urinega kazalca)"
STR_PREV_NEXT: "Nazaj/Naprej"
STR_NEXT_PREV: "Naprej/Nazaj"
STR_BOOKERLY: "Bookerly" STR_BOOKERLY: "Bookerly"
STR_NOTO_SANS: "Noto Sans" STR_NOTO_SANS: "Noto Sans"
STR_OPEN_DYSLEXIC: "Open Dyslexic" STR_OPEN_DYSLEXIC: "Open Dyslexic"
-3
View File
@@ -86,7 +86,6 @@ STR_IMAGES_DISPLAY: "Mostrar"
STR_IMAGES_PLACEHOLDER: "Reemplazar" STR_IMAGES_PLACEHOLDER: "Reemplazar"
STR_IMAGES_SUPPRESS: "Ocultar" STR_IMAGES_SUPPRESS: "Ocultar"
STR_ORIENTATION: "Orientación" STR_ORIENTATION: "Orientación"
STR_SIDE_BTN_LAYOUT: "Función botones laterales (lector)"
STR_LONG_PRESS_SKIP: "Saltar capítulo (pulsación larga)" STR_LONG_PRESS_SKIP: "Saltar capítulo (pulsación larga)"
STR_FONT_FAMILY: "Tipografía" STR_FONT_FAMILY: "Tipografía"
STR_FONT_SIZE: "Tamaño" STR_FONT_SIZE: "Tamaño"
@@ -144,8 +143,6 @@ STR_PORTRAIT: "Vertical"
STR_LANDSCAPE_CW: "Horizontal (horario)" STR_LANDSCAPE_CW: "Horizontal (horario)"
STR_INVERTED: "Invertido" STR_INVERTED: "Invertido"
STR_LANDSCAPE_CCW: "Horizontal (antihorario)" STR_LANDSCAPE_CCW: "Horizontal (antihorario)"
STR_PREV_NEXT: "Ant./Sig."
STR_NEXT_PREV: "Sig./Ant."
STR_ABC: "abc" STR_ABC: "abc"
STR_FORCE_REFRESH: "Actualizar pantalla" STR_FORCE_REFRESH: "Actualizar pantalla"
STR_NEXT: "Sig" STR_NEXT: "Sig"
-3
View File
@@ -97,7 +97,6 @@ STR_IMAGE_DITHER_ATKINSON: "Atkinson"
STR_IMAGE_DITHER_DIFFUSED_BAYER: "Diffus Bayer" STR_IMAGE_DITHER_DIFFUSED_BAYER: "Diffus Bayer"
STR_CREATE_FALLBACK_FOR_INVALID_TOC: "Skapa fallback för ogiltig innehållsförteckning" STR_CREATE_FALLBACK_FOR_INVALID_TOC: "Skapa fallback för ogiltig innehållsförteckning"
STR_ORIENTATION: "Läsrikting" STR_ORIENTATION: "Läsrikting"
STR_SIDE_BTN_LAYOUT: "Sidoknappslayout (Läsare)"
STR_LONG_PRESS_SKIP: "Lång-tryck Kapitelskippning" STR_LONG_PRESS_SKIP: "Lång-tryck Kapitelskippning"
STR_FONT_FAMILY: "Eboksläsarens typsnittsfamilj" STR_FONT_FAMILY: "Eboksläsarens typsnittsfamilj"
STR_FONT_SIZE: "Eboksläsarens typsnittsstorlek" STR_FONT_SIZE: "Eboksläsarens typsnittsstorlek"
@@ -202,8 +201,6 @@ STR_PORTRAIT: "Porträtt"
STR_LANDSCAPE_CW: "Landskap medurs" STR_LANDSCAPE_CW: "Landskap medurs"
STR_INVERTED: "Inverterad" STR_INVERTED: "Inverterad"
STR_LANDSCAPE_CCW: "Landskap moturs" STR_LANDSCAPE_CCW: "Landskap moturs"
STR_PREV_NEXT: "Förra/Nästa"
STR_NEXT_PREV: "Nästa/Förra"
STR_BOOKERLY: "Bookerly" STR_BOOKERLY: "Bookerly"
STR_NOTO_SANS: "Noto Sans" STR_NOTO_SANS: "Noto Sans"
STR_OPEN_DYSLEXIC: "Öppen Dyslexic" STR_OPEN_DYSLEXIC: "Öppen Dyslexic"
-3
View File
@@ -66,7 +66,6 @@ STR_HIDE_BATTERY: "Pil Yüzdesini Gizle"
STR_EXTRA_SPACING: "Ekstra Paragraf Boşluğu" STR_EXTRA_SPACING: "Ekstra Paragraf Boşluğu"
STR_TEXT_AA: "Metin Yumuşatma (AA)" STR_TEXT_AA: "Metin Yumuşatma (AA)"
STR_ORIENTATION: "Okuma Yönü" STR_ORIENTATION: "Okuma Yönü"
STR_SIDE_BTN_LAYOUT: "Yan Tuş Dizilimi (okuyucu)"
STR_LONG_PRESS_SKIP: "Uzun Basışla Bölüm Atla" STR_LONG_PRESS_SKIP: "Uzun Basışla Bölüm Atla"
STR_FONT_FAMILY: "Okuyucu Yazı Tipi Ailesi" STR_FONT_FAMILY: "Okuyucu Yazı Tipi Ailesi"
STR_FONT_SIZE: "Arayüz Yazı Boyutu" STR_FONT_SIZE: "Arayüz Yazı Boyutu"
@@ -123,8 +122,6 @@ STR_PORTRAIT: "Dikey"
STR_LANDSCAPE_CW: "Yatay (Saat Yönü)" STR_LANDSCAPE_CW: "Yatay (Saat Yönü)"
STR_INVERTED: "Ters" STR_INVERTED: "Ters"
STR_LANDSCAPE_CCW: "Yatay (Saat Yönü Tersi)" STR_LANDSCAPE_CCW: "Yatay (Saat Yönü Tersi)"
STR_PREV_NEXT: "Önceki/Sonraki"
STR_NEXT_PREV: "Sonraki/Önceki"
STR_BOOKERLY: "Bookerly" STR_BOOKERLY: "Bookerly"
STR_NOTO_SANS: "Noto Sans" STR_NOTO_SANS: "Noto Sans"
STR_OPEN_DYSLEXIC: "Open Dyslexic" STR_OPEN_DYSLEXIC: "Open Dyslexic"
-3
View File
@@ -96,7 +96,6 @@ STR_IMAGE_DITHER_BAYER: "Bayer"
STR_IMAGE_DITHER_ATKINSON: "Atkinson" STR_IMAGE_DITHER_ATKINSON: "Atkinson"
STR_IMAGE_DITHER_DIFFUSED_BAYER: "Дифузний Bayer" STR_IMAGE_DITHER_DIFFUSED_BAYER: "Дифузний Bayer"
STR_ORIENTATION: "Орієнтація читання" STR_ORIENTATION: "Орієнтація читання"
STR_SIDE_BTN_LAYOUT: "Розташування бічних кнопок (читач)"
STR_LONG_PRESS_SKIP: "Пропуск розділу при довгому натисканні" STR_LONG_PRESS_SKIP: "Пропуск розділу при довгому натисканні"
STR_FONT_FAMILY: "Сімейство шрифтів" STR_FONT_FAMILY: "Сімейство шрифтів"
STR_FONT_SIZE: "Розмір шрифту інтерфейсу" STR_FONT_SIZE: "Розмір шрифту інтерфейсу"
@@ -154,8 +153,6 @@ STR_PORTRAIT: "Портрет"
STR_LANDSCAPE_CW: "Альбомний за годинниковою" STR_LANDSCAPE_CW: "Альбомний за годинниковою"
STR_INVERTED: "Перевернутий" STR_INVERTED: "Перевернутий"
STR_LANDSCAPE_CCW: "Альбомний проти годинникової" STR_LANDSCAPE_CCW: "Альбомний проти годинникової"
STR_PREV_NEXT: "Попер/Наст"
STR_NEXT_PREV: "Наст/Попер"
STR_BOOKERLY: "Bookerly" STR_BOOKERLY: "Bookerly"
STR_NOTO_SANS: "Noto Sans" STR_NOTO_SANS: "Noto Sans"
STR_OPEN_DYSLEXIC: "Open Dyslexic" STR_OPEN_DYSLEXIC: "Open Dyslexic"
+2 -14
View File
@@ -7,11 +7,6 @@ constexpr ButtonEventManager::Button ButtonEventManager::ALL_BUTTONS[ButtonEvent
bool ButtonEventManager::hasDoubleAction(const Button button) { bool ButtonEventManager::hasDoubleAction(const Button button) {
using BA = CrossPointSettings::BUTTON_ACTION; using BA = CrossPointSettings::BUTTON_ACTION;
// Up/Down share physical pins with PageBack/PageForward via sideButtonLayout.
// Their double-action settings must be consulted when checking the PageBack/PageForward FSMs
// so that the disambiguation delay is applied when either role has a double action.
const bool prevNext = static_cast<CrossPointSettings::SIDE_BUTTON_LAYOUT>(SETTINGS.sideButtonLayout) ==
CrossPointSettings::SIDE_BUTTON_LAYOUT::PREV_NEXT;
switch (button) { switch (button) {
case Button::Back: case Button::Back:
return SETTINGS.btnDoubleBack != BA::BTN_DEFAULT; return SETTINGS.btnDoubleBack != BA::BTN_DEFAULT;
@@ -21,17 +16,10 @@ bool ButtonEventManager::hasDoubleAction(const Button button) {
return SETTINGS.btnDoubleLeft != BA::BTN_DEFAULT; return SETTINGS.btnDoubleLeft != BA::BTN_DEFAULT;
case Button::Right: case Button::Right:
return SETTINGS.btnDoubleRight != BA::BTN_DEFAULT; return SETTINGS.btnDoubleRight != BA::BTN_DEFAULT;
case Button::Up:
case Button::Down:
return false; // Up/Down have no dedicated FSM; handled via PageBack/PageForward
case Button::PageBack: case Button::PageBack:
// PREV_NEXT: BTN_UP = PageBack; NEXT_PREV: BTN_DOWN = PageBack return SETTINGS.btnDoublePageBack != BA::BTN_DEFAULT;
return SETTINGS.btnDoublePageBack != BA::BTN_DEFAULT ||
(prevNext ? SETTINGS.btnDoubleUp : SETTINGS.btnDoubleDown) != BA::BTN_DEFAULT;
case Button::PageForward: case Button::PageForward:
// PREV_NEXT: BTN_DOWN = PageForward; NEXT_PREV: BTN_UP = PageForward return SETTINGS.btnDoublePageForward != BA::BTN_DEFAULT;
return SETTINGS.btnDoublePageForward != BA::BTN_DEFAULT ||
(prevNext ? SETTINGS.btnDoubleDown : SETTINGS.btnDoubleUp) != BA::BTN_DEFAULT;
case Button::Power: case Button::Power:
return SETTINGS.btnDoublePower != BA::BTN_DEFAULT; return SETTINGS.btnDoublePower != BA::BTN_DEFAULT;
} }
-4
View File
@@ -54,10 +54,6 @@ class ButtonEventManager {
static bool hasDoubleAction(Button button); static bool hasDoubleAction(Button button);
private: private:
// Up and Down alias the same physical GPIO pins as PageBack/PageForward (via sideButtonLayout).
// Running separate FSMs for both would double-fire on every side button press.
// Up/Down are therefore excluded here; their configurable actions are resolved in main.cpp
// by treating a PageBack/PageForward event as the canonical side-button event.
static constexpr int NUM_BUTTONS = 7; static constexpr int NUM_BUTTONS = 7;
static constexpr Button ALL_BUTTONS[NUM_BUTTONS] = { static constexpr Button ALL_BUTTONS[NUM_BUTTONS] = {
Button::Back, Button::Confirm, Button::Left, Button::Right, Button::PageBack, Button::PageForward, Button::Power, Button::Back, Button::Confirm, Button::Left, Button::Right, Button::PageBack, Button::PageForward, Button::Power,
+4 -1
View File
@@ -151,7 +151,10 @@ bool CrossPointSettings::loadFromBinaryFile() {
if (++settingsRead >= fileSettingsCount) break; if (++settingsRead >= fileSettingsCount) break;
readAndValidate(inputFile, frontButtonLayout, FRONT_BUTTON_LAYOUT_COUNT); readAndValidate(inputFile, frontButtonLayout, FRONT_BUTTON_LAYOUT_COUNT);
if (++settingsRead >= fileSettingsCount) break; if (++settingsRead >= fileSettingsCount) break;
readAndValidate(inputFile, sideButtonLayout, SIDE_BUTTON_LAYOUT_COUNT); {
uint8_t ignored;
serialization::readPod(inputFile, ignored);
} // legacy sideButtonLayout field
if (++settingsRead >= fileSettingsCount) break; if (++settingsRead >= fileSettingsCount) break;
readAndValidate(inputFile, fontFamily, FONT_FAMILY_COUNT); readAndValidate(inputFile, fontFamily, FONT_FAMILY_COUNT);
if (++settingsRead >= fileSettingsCount) break; if (++settingsRead >= fileSettingsCount) break;
-12
View File
@@ -88,11 +88,6 @@ class CrossPointSettings {
FRONT_BUTTON_HARDWARE_COUNT FRONT_BUTTON_HARDWARE_COUNT
}; };
// Side button layout options
// Default: Previous, Next
// Swapped: Next, Previous
enum SIDE_BUTTON_LAYOUT { PREV_NEXT = 0, NEXT_PREV = 1, SIDE_BUTTON_LAYOUT_COUNT };
// Font family options // Font family options
enum FONT_FAMILY { BOOKERLY = 0, NOTOSANS = 1, OPENDYSLEXIC = 2, FONT_FAMILY_COUNT }; enum FONT_FAMILY { BOOKERLY = 0, NOTOSANS = 1, OPENDYSLEXIC = 2, FONT_FAMILY_COUNT };
// Font size options // Font size options
@@ -208,7 +203,6 @@ class CrossPointSettings {
uint8_t orientation = PORTRAIT; uint8_t orientation = PORTRAIT;
// Button layouts (front layout retained for migration only) // Button layouts (front layout retained for migration only)
uint8_t frontButtonLayout = BACK_CONFIRM_LEFT_RIGHT; uint8_t frontButtonLayout = BACK_CONFIRM_LEFT_RIGHT;
uint8_t sideButtonLayout = PREV_NEXT;
// Front button remap (logical -> hardware) // Front button remap (logical -> hardware)
// Used by MappedInputManager to translate logical buttons into physical front buttons. // Used by MappedInputManager to translate logical buttons into physical front buttons.
uint8_t frontButtonBack = FRONT_HW_BACK; uint8_t frontButtonBack = FRONT_HW_BACK;
@@ -292,8 +286,6 @@ class CrossPointSettings {
uint8_t btnShortConfirm = BTN_DEFAULT; uint8_t btnShortConfirm = BTN_DEFAULT;
uint8_t btnShortLeft = BTN_DEFAULT; uint8_t btnShortLeft = BTN_DEFAULT;
uint8_t btnShortRight = BTN_DEFAULT; uint8_t btnShortRight = BTN_DEFAULT;
uint8_t btnShortUp = BTN_DEFAULT;
uint8_t btnShortDown = BTN_DEFAULT;
uint8_t btnShortPageBack = BTN_DEFAULT; uint8_t btnShortPageBack = BTN_DEFAULT;
uint8_t btnShortPageForward = BTN_DEFAULT; uint8_t btnShortPageForward = BTN_DEFAULT;
uint8_t btnShortPower = BTN_DEFAULT; uint8_t btnShortPower = BTN_DEFAULT;
@@ -303,8 +295,6 @@ class CrossPointSettings {
uint8_t btnDoubleConfirm = BTN_DEFAULT; uint8_t btnDoubleConfirm = BTN_DEFAULT;
uint8_t btnDoubleLeft = BTN_DEFAULT; uint8_t btnDoubleLeft = BTN_DEFAULT;
uint8_t btnDoubleRight = BTN_DEFAULT; uint8_t btnDoubleRight = BTN_DEFAULT;
uint8_t btnDoubleUp = BTN_DEFAULT;
uint8_t btnDoubleDown = BTN_DEFAULT;
uint8_t btnDoublePageBack = BTN_DEFAULT; uint8_t btnDoublePageBack = BTN_DEFAULT;
uint8_t btnDoublePageForward = BTN_DEFAULT; uint8_t btnDoublePageForward = BTN_DEFAULT;
uint8_t btnDoublePower = BTN_DEFAULT; uint8_t btnDoublePower = BTN_DEFAULT;
@@ -314,8 +304,6 @@ class CrossPointSettings {
uint8_t btnLongConfirm = BTN_DEFAULT; uint8_t btnLongConfirm = BTN_DEFAULT;
uint8_t btnLongLeft = BTN_DEFAULT; uint8_t btnLongLeft = BTN_DEFAULT;
uint8_t btnLongRight = BTN_DEFAULT; uint8_t btnLongRight = BTN_DEFAULT;
uint8_t btnLongUp = BTN_DEFAULT;
uint8_t btnLongDown = BTN_DEFAULT;
uint8_t btnLongPageBack = BTN_DEFAULT; uint8_t btnLongPageBack = BTN_DEFAULT;
uint8_t btnLongPageForward = BTN_DEFAULT; uint8_t btnLongPageForward = BTN_DEFAULT;
uint8_t btnLongPower = BTN_DEFAULT; uint8_t btnLongPower = BTN_DEFAULT;
+2 -30
View File
@@ -2,55 +2,27 @@
#include "CrossPointSettings.h" #include "CrossPointSettings.h"
namespace {
using ButtonIndex = uint8_t;
struct SideLayoutMap {
ButtonIndex pageBack;
ButtonIndex pageForward;
};
// Order matches CrossPointSettings::SIDE_BUTTON_LAYOUT.
constexpr SideLayoutMap kSideLayouts[] = {
{HalGPIO::BTN_UP, HalGPIO::BTN_DOWN},
{HalGPIO::BTN_DOWN, HalGPIO::BTN_UP},
};
} // namespace
bool MappedInputManager::mapButton(const Button button, bool (HalGPIO::*fn)(uint8_t) const) const { bool MappedInputManager::mapButton(const Button button, bool (HalGPIO::*fn)(uint8_t) const) const {
const auto sideLayout = static_cast<CrossPointSettings::SIDE_BUTTON_LAYOUT>(SETTINGS.sideButtonLayout);
const auto& side = kSideLayouts[sideLayout];
switch (button) { switch (button) {
case Button::Back: case Button::Back:
// Logical Back maps to user-configured front button.
return (gpio.*fn)(SETTINGS.frontButtonBack); return (gpio.*fn)(SETTINGS.frontButtonBack);
case Button::Confirm: case Button::Confirm:
// Logical Confirm maps to user-configured front button.
return (gpio.*fn)(SETTINGS.frontButtonConfirm); return (gpio.*fn)(SETTINGS.frontButtonConfirm);
case Button::Left: case Button::Left:
// Logical Left maps to user-configured front button.
return (gpio.*fn)(SETTINGS.frontButtonLeft); return (gpio.*fn)(SETTINGS.frontButtonLeft);
case Button::Right: case Button::Right:
// Logical Right maps to user-configured front button.
return (gpio.*fn)(SETTINGS.frontButtonRight); return (gpio.*fn)(SETTINGS.frontButtonRight);
case Button::Up: case Button::Up:
// Side buttons remain fixed for Up/Down.
return (gpio.*fn)(HalGPIO::BTN_UP); return (gpio.*fn)(HalGPIO::BTN_UP);
case Button::Down: case Button::Down:
// Side buttons remain fixed for Up/Down.
return (gpio.*fn)(HalGPIO::BTN_DOWN); return (gpio.*fn)(HalGPIO::BTN_DOWN);
case Button::Power: case Button::Power:
// Power button bypasses remapping.
return (gpio.*fn)(HalGPIO::BTN_POWER); return (gpio.*fn)(HalGPIO::BTN_POWER);
case Button::PageBack: case Button::PageBack:
// Reader page navigation uses side buttons and can be swapped via settings. return (gpio.*fn)(HalGPIO::BTN_UP);
return (gpio.*fn)(side.pageBack);
case Button::PageForward: case Button::PageForward:
// Reader page navigation uses side buttons and can be swapped via settings. return (gpio.*fn)(HalGPIO::BTN_DOWN);
return (gpio.*fn)(side.pageForward);
} }
return false; return false;
} }
+6 -25
View File
@@ -131,9 +131,7 @@ inline const std::vector<SettingInfo> list = {
.withSubcategory(StrId::STR_MENU_READER_TWEAKS), .withSubcategory(StrId::STR_MENU_READER_TWEAKS),
// --- Controls --- // --- Controls ---
SettingInfo::Enum(StrId::STR_SIDE_BTN_LAYOUT, &CrossPointSettings::sideButtonLayout, SettingInfo::Separator(StrId::STR_MENU_BTN_PHYSICAL),
{StrId::STR_PREV_NEXT, StrId::STR_NEXT_PREV}, "sideButtonLayout", StrId::STR_CAT_CONTROLS)
.withSubcategory(StrId::STR_MENU_BTN_PHYSICAL),
// --- Button Actions (short / double / long press per logical button) --- // --- Button Actions (short / double / long press per logical button) ---
// All entries share the same ordered action-label list; the submenu groups them behind // All entries share the same ordered action-label list; the submenu groups them behind
@@ -147,6 +145,7 @@ inline const std::vector<SettingInfo> list = {
StrId::STR_BTN_ACT_PREV_SECTION, StrId::STR_BTN_ACT_EXIT_READER, StrId::STR_BTN_ACT_READER_MENU, \ StrId::STR_BTN_ACT_PREV_SECTION, StrId::STR_BTN_ACT_EXIT_READER, StrId::STR_BTN_ACT_READER_MENU, \
StrId::STR_BTN_ACT_KOREADER_SYNC StrId::STR_BTN_ACT_KOREADER_SYNC
SettingInfo::Separator(StrId::STR_MENU_BTN_ACTIONS),
// Back button: short=exit reader, double=ignore, long=go home // Back button: short=exit reader, double=ignore, long=go home
SettingInfo::Enum(StrId::STR_BTN_SHORT_PRESS, &CrossPointSettings::btnShortBack, SettingInfo::Enum(StrId::STR_BTN_SHORT_PRESS, &CrossPointSettings::btnShortBack,
{StrId::STR_BTN_DEF_EXIT_READER, BTN_ACT_OPTIONS}, "btnShortBack", StrId::STR_CAT_CONTROLS) {StrId::STR_BTN_DEF_EXIT_READER, BTN_ACT_OPTIONS}, "btnShortBack", StrId::STR_CAT_CONTROLS)
@@ -162,9 +161,11 @@ inline const std::vector<SettingInfo> list = {
{StrId::STR_BTN_DEF_READER_MENU, BTN_ACT_OPTIONS}, "btnShortConfirm", StrId::STR_CAT_CONTROLS) {StrId::STR_BTN_DEF_READER_MENU, BTN_ACT_OPTIONS}, "btnShortConfirm", StrId::STR_CAT_CONTROLS)
.withSubmenu(StrId::STR_BTN_CONFIRM), .withSubmenu(StrId::STR_BTN_CONFIRM),
SettingInfo::Enum(StrId::STR_BTN_DOUBLE_PRESS, &CrossPointSettings::btnDoubleConfirm, SettingInfo::Enum(StrId::STR_BTN_DOUBLE_PRESS, &CrossPointSettings::btnDoubleConfirm,
{StrId::STR_BTN_DEF_IGNORE, BTN_ACT_OPTIONS}, "btnDoubleConfirm", StrId::STR_CAT_CONTROLS), {StrId::STR_BTN_DEF_IGNORE, BTN_ACT_OPTIONS}, "btnDoubleConfirm", StrId::STR_CAT_CONTROLS)
.withSubmenu(StrId::STR_BTN_CONFIRM),
SettingInfo::Enum(StrId::STR_BTN_LONG_PRESS, &CrossPointSettings::btnLongConfirm, SettingInfo::Enum(StrId::STR_BTN_LONG_PRESS, &CrossPointSettings::btnLongConfirm,
{StrId::STR_BTN_DEF_KOREADER_SYNC, BTN_ACT_OPTIONS}, "btnLongConfirm", StrId::STR_CAT_CONTROLS), {StrId::STR_BTN_DEF_KOREADER_SYNC, BTN_ACT_OPTIONS}, "btnLongConfirm", StrId::STR_CAT_CONTROLS)
.withSubmenu(StrId::STR_BTN_CONFIRM),
// Left button: short=previous page, double=ignore, long=chapter back // Left button: short=previous page, double=ignore, long=chapter back
SettingInfo::Enum(StrId::STR_BTN_SHORT_PRESS, &CrossPointSettings::btnShortLeft, SettingInfo::Enum(StrId::STR_BTN_SHORT_PRESS, &CrossPointSettings::btnShortLeft,
{StrId::STR_BTN_DEF_PREV_PAGE, BTN_ACT_OPTIONS}, "btnShortLeft", StrId::STR_CAT_CONTROLS) {StrId::STR_BTN_DEF_PREV_PAGE, BTN_ACT_OPTIONS}, "btnShortLeft", StrId::STR_CAT_CONTROLS)
@@ -185,26 +186,6 @@ inline const std::vector<SettingInfo> list = {
SettingInfo::Enum(StrId::STR_BTN_LONG_PRESS, &CrossPointSettings::btnLongRight, SettingInfo::Enum(StrId::STR_BTN_LONG_PRESS, &CrossPointSettings::btnLongRight,
{StrId::STR_BTN_DEF_CHAPTER_FORWARD, BTN_ACT_OPTIONS}, "btnLongRight", StrId::STR_CAT_CONTROLS) {StrId::STR_BTN_DEF_CHAPTER_FORWARD, BTN_ACT_OPTIONS}, "btnLongRight", StrId::STR_CAT_CONTROLS)
.withSubmenu(StrId::STR_BTN_RIGHT), .withSubmenu(StrId::STR_BTN_RIGHT),
// Up button: short=previous page, double=ignore, long=chapter back
SettingInfo::Enum(StrId::STR_BTN_SHORT_PRESS, &CrossPointSettings::btnShortUp,
{StrId::STR_BTN_DEF_PREV_PAGE, BTN_ACT_OPTIONS}, "btnShortUp", StrId::STR_CAT_CONTROLS)
.withSubmenu(StrId::STR_BTN_UP),
SettingInfo::Enum(StrId::STR_BTN_DOUBLE_PRESS, &CrossPointSettings::btnDoubleUp,
{StrId::STR_BTN_DEF_IGNORE, BTN_ACT_OPTIONS}, "btnDoubleUp", StrId::STR_CAT_CONTROLS)
.withSubmenu(StrId::STR_BTN_UP),
SettingInfo::Enum(StrId::STR_BTN_LONG_PRESS, &CrossPointSettings::btnLongUp,
{StrId::STR_BTN_DEF_CHAPTER_BACK, BTN_ACT_OPTIONS}, "btnLongUp", StrId::STR_CAT_CONTROLS)
.withSubmenu(StrId::STR_BTN_UP),
// Down button: short=next page, double=ignore, long=chapter forward
SettingInfo::Enum(StrId::STR_BTN_SHORT_PRESS, &CrossPointSettings::btnShortDown,
{StrId::STR_BTN_DEF_NEXT_PAGE, BTN_ACT_OPTIONS}, "btnShortDown", StrId::STR_CAT_CONTROLS)
.withSubmenu(StrId::STR_BTN_DOWN),
SettingInfo::Enum(StrId::STR_BTN_DOUBLE_PRESS, &CrossPointSettings::btnDoubleDown,
{StrId::STR_BTN_DEF_IGNORE, BTN_ACT_OPTIONS}, "btnDoubleDown", StrId::STR_CAT_CONTROLS)
.withSubmenu(StrId::STR_BTN_DOWN),
SettingInfo::Enum(StrId::STR_BTN_LONG_PRESS, &CrossPointSettings::btnLongDown,
{StrId::STR_BTN_DEF_CHAPTER_FORWARD, BTN_ACT_OPTIONS}, "btnLongDown", StrId::STR_CAT_CONTROLS)
.withSubmenu(StrId::STR_BTN_DOWN),
// Page Back button: short=previous page, double=ignore, long=chapter back // Page Back button: short=previous page, double=ignore, long=chapter back
SettingInfo::Enum(StrId::STR_BTN_SHORT_PRESS, &CrossPointSettings::btnShortPageBack, SettingInfo::Enum(StrId::STR_BTN_SHORT_PRESS, &CrossPointSettings::btnShortPageBack,
{StrId::STR_BTN_DEF_PREV_PAGE, BTN_ACT_OPTIONS}, "btnShortPageBack", StrId::STR_CAT_CONTROLS) {StrId::STR_BTN_DEF_PREV_PAGE, BTN_ACT_OPTIONS}, "btnShortPageBack", StrId::STR_CAT_CONTROLS)
+3 -2
View File
@@ -2,6 +2,8 @@
#include <GfxRenderer.h> #include <GfxRenderer.h>
#include <HalClock.h> #include <HalClock.h>
#include <HalDisplay.h>
#include <HalGPIO.h>
#include <Logging.h> #include <Logging.h>
#include "CrossPointSettings.h" #include "CrossPointSettings.h"
@@ -277,6 +279,5 @@ void SettingsActivity::render(RenderLock&&) {
const auto labels = mappedInput.mapLabels(tr(STR_BACK), confirmLabel, tr(STR_DIR_UP), tr(STR_DIR_DOWN)); const auto labels = mappedInput.mapLabels(tr(STR_BACK), confirmLabel, tr(STR_DIR_UP), tr(STR_DIR_DOWN));
GUI.drawButtonHints(renderer, labels.btn1, labels.btn2, labels.btn3, labels.btn4); GUI.drawButtonHints(renderer, labels.btn1, labels.btn2, labels.btn3, labels.btn4);
// Always use standard refresh for settings screen renderer.displayBuffer(gpio.deviceIsX3() ? HalDisplay::HALF_REFRESH : HalDisplay::FAST_REFRESH);
renderer.displayBuffer();
} }
@@ -1,6 +1,8 @@
#include "SettingsSubmenuActivity.h" #include "SettingsSubmenuActivity.h"
#include <GfxRenderer.h> #include <GfxRenderer.h>
#include <HalDisplay.h>
#include <HalGPIO.h>
#include <I18n.h> #include <I18n.h>
#include "CrossPointSettings.h" #include "CrossPointSettings.h"
@@ -63,5 +65,5 @@ void SettingsSubmenuActivity::render(RenderLock&&) {
const auto labels = mappedInput.mapLabels(tr(STR_BACK), tr(STR_SELECT), tr(STR_DIR_UP), tr(STR_DIR_DOWN)); const auto labels = mappedInput.mapLabels(tr(STR_BACK), tr(STR_SELECT), tr(STR_DIR_UP), tr(STR_DIR_DOWN));
GUI.drawButtonHints(renderer, labels.btn1, labels.btn2, labels.btn3, labels.btn4); GUI.drawButtonHints(renderer, labels.btn1, labels.btn2, labels.btn3, labels.btn4);
renderer.displayBuffer(); renderer.displayBuffer(gpio.deviceIsX3() ? HalDisplay::HALF_REFRESH : HalDisplay::FAST_REFRESH);
} }
+63 -70
View File
@@ -387,87 +387,80 @@ void loop() {
using B = MappedInputManager::Button; using B = MappedInputManager::Button;
ButtonEventManager::ButtonEvent ev; ButtonEventManager::ButtonEvent ev;
while (buttonEventManager.consumeEvent(ev)) { while (buttonEventManager.consumeEvent(ev)) {
// Up/Down share physical pins with PageBack/PageForward via sideButtonLayout.
// ButtonEventManager only runs FSMs for PageBack/PageForward (not Up/Down) to avoid
// double-firing. Here we resolve Up/Down settings as aliases of the side-button events:
// with PREV_NEXT layout, PageBack = BTN_UP and PageForward = BTN_DOWN, so the
// btnShort/Double/LongUp/Down settings apply when PageBack/PageForward fires.
const bool prevNext = static_cast<CrossPointSettings::SIDE_BUTTON_LAYOUT>(SETTINGS.sideButtonLayout) ==
CrossPointSettings::SIDE_BUTTON_LAYOUT::PREV_NEXT;
auto actionFor = [&](B btn) -> uint8_t { auto actionFor = [&](B btn) -> uint8_t {
switch (ev.type) { switch (btn) {
case ButtonEventManager::PressType::Short: case B::Back:
switch (btn) { switch (ev.type) {
case B::Back: case ButtonEventManager::PressType::Short:
return SETTINGS.btnShortBack; return SETTINGS.btnShortBack;
case B::Confirm: case ButtonEventManager::PressType::Double:
return SETTINGS.btnShortConfirm;
case B::Left:
return SETTINGS.btnShortLeft;
case B::Right:
return SETTINGS.btnShortRight;
case B::Up:
return BA::BTN_DEFAULT; // no dedicated FSM
case B::Down:
return BA::BTN_DEFAULT; // no dedicated FSM
case B::PageBack:
if (SETTINGS.btnShortPageBack != BA::BTN_DEFAULT) return SETTINGS.btnShortPageBack;
return prevNext ? SETTINGS.btnShortUp : SETTINGS.btnShortDown;
case B::PageForward:
if (SETTINGS.btnShortPageForward != BA::BTN_DEFAULT) return SETTINGS.btnShortPageForward;
return prevNext ? SETTINGS.btnShortDown : SETTINGS.btnShortUp;
case B::Power:
return SETTINGS.btnShortPower;
}
break;
case ButtonEventManager::PressType::Double:
switch (btn) {
case B::Back:
return SETTINGS.btnDoubleBack; return SETTINGS.btnDoubleBack;
case B::Confirm: case ButtonEventManager::PressType::Long:
return SETTINGS.btnDoubleConfirm; return SETTINGS.btnLongBack;
case B::Left:
return SETTINGS.btnDoubleLeft;
case B::Right:
return SETTINGS.btnDoubleRight;
case B::Up:
return BA::BTN_DEFAULT; // no dedicated FSM
case B::Down:
return BA::BTN_DEFAULT; // no dedicated FSM
case B::PageBack:
if (SETTINGS.btnDoublePageBack != BA::BTN_DEFAULT) return SETTINGS.btnDoublePageBack;
return prevNext ? SETTINGS.btnDoubleUp : SETTINGS.btnDoubleDown;
case B::PageForward:
if (SETTINGS.btnDoublePageForward != BA::BTN_DEFAULT) return SETTINGS.btnDoublePageForward;
return prevNext ? SETTINGS.btnDoubleDown : SETTINGS.btnDoubleUp;
case B::Power:
return SETTINGS.btnDoublePower;
} }
break; break;
case ButtonEventManager::PressType::Long: case B::Confirm:
switch (btn) { switch (ev.type) {
case B::Back: case ButtonEventManager::PressType::Short:
return SETTINGS.btnLongBack; return SETTINGS.btnShortConfirm;
case B::Confirm: case ButtonEventManager::PressType::Double:
return SETTINGS.btnDoubleConfirm;
case ButtonEventManager::PressType::Long:
return SETTINGS.btnLongConfirm; return SETTINGS.btnLongConfirm;
case B::Left: }
break;
case B::Left:
switch (ev.type) {
case ButtonEventManager::PressType::Short:
return SETTINGS.btnShortLeft;
case ButtonEventManager::PressType::Double:
return SETTINGS.btnDoubleLeft;
case ButtonEventManager::PressType::Long:
return SETTINGS.btnLongLeft; return SETTINGS.btnLongLeft;
case B::Right: }
break;
case B::Right:
switch (ev.type) {
case ButtonEventManager::PressType::Short:
return SETTINGS.btnShortRight;
case ButtonEventManager::PressType::Double:
return SETTINGS.btnDoubleRight;
case ButtonEventManager::PressType::Long:
return SETTINGS.btnLongRight; return SETTINGS.btnLongRight;
case B::Up: }
return BA::BTN_DEFAULT; // no dedicated FSM break;
case B::Down: case B::PageBack:
return BA::BTN_DEFAULT; // no dedicated FSM switch (ev.type) {
case B::PageBack: case ButtonEventManager::PressType::Short:
if (SETTINGS.btnLongPageBack != BA::BTN_DEFAULT) return SETTINGS.btnLongPageBack; return SETTINGS.btnShortPageBack;
return prevNext ? SETTINGS.btnLongUp : SETTINGS.btnLongDown; case ButtonEventManager::PressType::Double:
case B::PageForward: return SETTINGS.btnDoublePageBack;
if (SETTINGS.btnLongPageForward != BA::BTN_DEFAULT) return SETTINGS.btnLongPageForward; case ButtonEventManager::PressType::Long:
return prevNext ? SETTINGS.btnLongDown : SETTINGS.btnLongUp; return SETTINGS.btnLongPageBack;
case B::Power: }
break;
case B::PageForward:
switch (ev.type) {
case ButtonEventManager::PressType::Short:
return SETTINGS.btnShortPageForward;
case ButtonEventManager::PressType::Double:
return SETTINGS.btnDoublePageForward;
case ButtonEventManager::PressType::Long:
return SETTINGS.btnLongPageForward;
}
break;
case B::Power:
switch (ev.type) {
case ButtonEventManager::PressType::Short:
return SETTINGS.btnShortPower;
case ButtonEventManager::PressType::Double:
return SETTINGS.btnDoublePower;
case ButtonEventManager::PressType::Long:
return SETTINGS.btnLongPower; return SETTINGS.btnLongPower;
} }
break; break;
default:
break; // Up/Down have no FSMs — ButtonEventManager never emits these
} }
return BA::BTN_DEFAULT; return BA::BTN_DEFAULT;
}; };