Disable Touchscreen w Voyage

2 minut(y)

Najnowszy czytnik Amazona – Kindle Oasis 2017 – ma kilka unikalnych funkcji. Niektóre z nich, np. wyłączenie ekranu dotykowego, mogą działać na starszych czytnikach… W czasie testów okazało się, że funkcja ta w przypadku Kindle Voyage działa trochę inaczej, niż można było oczekiwać.

Ta anomalia wynika z budowy czytnika – przyciski w Voyage’u są na tym samym poziomie co ekran dotykowy, dlatego odpowiednio silne dociśnięcie ekranu wpływa też na strefę pod przyciskami.

Do wgrania modyfikacji wymagany jest min. bridge.

Co osiągamy?

Po nałożeniu patcha, w menu otwartego e-booka pojawi się pozycja Disable Touchscreen. Po jej wybraniu otworzy się okienko z informacją widoczną poniżej.

Disable Touchscreen Menu Disable Touchscreen Window

Po zatwierdzeniu wyboru przyciskiem OK ekran Voyage’a zmieni swoje zachowanie. Nie robiłem testów na jakimkolwiek innym czytniku Kindle, ale przypuszczam, że w przypadku pierwszego Oasisa efekt będzie podobny jak w Oasis 2017 (i tym samym różny niż w Voyage).

Efekt modyfikacji

Po zatwierdzeniu wyłaczenia dotyku czytnik zachowuje się następująco:

  • przyciski zmiany stron działają normalnie;
  • dotknięcie górnej cześć ekranu, domyślnie wywołującej menu, nie powoduje żadnej reakcji;
  • podobnie nie można wywołać dolnego menu i funkcji PageFlip;
  • delikatne (lub po prostu krótkie) dotknięcie ekranu nie powoduje żadnej reakcji (domyślnie wystarcza do zmieniania stron);
  • próba zaznaczania tekstu, wywołania słownika, zmiany wielkości fontu itp. nie działa;
  • mocniejsze dotknięcie ekranu powoduje przejście do następnej strony – bez względu na to, czy dotknięcie będzie na środku, blisko lewej czy prawej krawędzi ekranu; siła dotknięcia powinna być nieco większa niż ustawiona wrażliwość przycisków;
  • efekt mija po uśpieniu i wybudzeniu czytnika (o czym informuje komunikat widoczny powyżej).

Warte zauważenia jest wyłączenie zaznaczania tekstu – w nowych wersjach FW irytujące jest to, że po przypadkowym wywołaniu zaznaczania natychmiast „zaśmiecany” jest plik My Clippings.txt. Dodatkowo strony można zmieniać do przodu dotykając ekranu zarówno z lewej, jak i prawej strony. Dużo rzadziej używany przycisk „wstecz” dostępny jest nadal pod przyciskiem na obudowie.

Kwestia techniczna

Jak powszechnie wiadomo Amazon przygotowuje jedno oprogramowanie dla wszystkich czytników od Paperwhite’a 2 (to stanowi bazę i pod ten czytnik jest optymalizowane oprogramowanie), aż po najnowszy Oasis 2017. O tym jakie funkcje są dostępne na jednym czytniku i niedostępne na innym decydują różne instrukcje warunkowe.

W tym przypadku odpowiednia opcja dostępna jest w klasie ReaderTouchControlPlugin.class z archiwum Reader-plugin.jar.

O tym czy odpowiednia opcja pojawi się w menu decyduje porównanie wartości screen.resolution.width z liczbą 1264. Ta druga wartość to oczywiście rozdzielczość pozioma ekranu Oasisa 2017. Wystarczy podmienić ją na 1072 (wartość właściwa dla Voyage’a) i to już koniec ingerencji.

Najdyskretniej można to zrobić hexedytorem. W tym celu trzeba rozpakować plik Reader-plugin.jar i otworzyć klasę ReaderTouchControlPlugin.class. Potem wystarczy pod adresem 0x177B podmienić znaczący bajt – w zapisie szesnastkowym F należy zamienić na 3. Na koniec trzeba ponownie spakować klasę do pliku Reader-plugin.jar.

Gotowy plik dla Voyage’a z FW 5.9.7 z nałożonym patchem udostępniam pod linkiem: Disable Touchscreen Voyage 5.9.7. Po pobraniu wystarczy podmienić nim plik o tej samej nazwie znajdujący się w katalogu /opt/amazon/ebook/lib/.

Alternatywne rozwiązanie

Inny, podobny efekt można uzyskać modyfikacją opisaną na mobileread – Kindle Voyage Intocable. Jednak jak dla mnie to opcja przekombinowana i sam nawet nie sprawdzam czy i jak działa.

To nadal nie wyczerpuje dostępnych możliwości, ale tutaj nie będę o nich szerzej pisał. Narzucającym się rozwiązaniem jest wyłączenie drivera warstwy dotykowej po jakimś zdarzeniu (lub np. po wpisaniu wybranej komendy w pole wyszukiwania) oraz ponowne załadowanie przy wychodzeniu z trybu wygaszacza (i oczywiście przy restarcie itp. zdarzeniach).