Menu Zamknij

Zegar w Kindle

W kindlach definitywnie brakowało mi zegarka. Podobno w pierwszej generacji dało się wyświetlić tekstowy za pomocą Alt+T. Dla nowszych modeli istnieje porada „wciśnij klawisz menu” – pojawia się pasek systemowy na górze z zegarkiem. Ale to nie jest żadne rozwiązanie.
Oczywiście – napisałem na to skrypt 🙂

Kindle - zegarek

Po pierwsze – potrzebny nam będzie Launchpad. LP to program pozwalający odpalać komendy za pomocą skrótów klawiaturowych. Rzecz jasna – „it may void your varranty„, ale kto by się przejmował. Szansa, że coś wybuchnie jest znikoma. Instrukcje – tutaj (minimum to LP). W skrócie instalacja polega na wgraniu na główną pamięć (tą dostępną po wpięciu do komputera przez USB) pliku .bin i wykonanie aktualizacji systemu.

Teraz możemy zacząć tworzyć skrypty.

Mój zegar.sh wykorzystuje polecenie eips pozwalające na prymitywne, acz sprawne pisanie po ekranie w trybie znakowym lub obrazkowym. Jego pełne możliwości są opisane na wiki. Nam będzie potrzebne ustawienie pozycji kursora i tekstu – eips pozycja_X pozycja_Y ‚napis’ .

Chwilę się zastanawiałem jak aktualizować zegar. Niestety zmiana strony angażuje pełne przeładowanie ekranu e-Ink, więc odświeżanie co 60 sekund czyli tyle ile wynosi precyzja tego zegara jest nieskuteczne.

Pierwsza wersja odświeżała (czyli dopisywała do ekranu) zegar co 1 sekundę. Ale to do rozwiązania produkcyjnego się nie nadaje – zużywa baterię (na wygaszaczu też to działa!) i chyba dla ekranu zdrowe nie jest.

Druga wersja miała korzystać z Launchpadowego przypisania do „Left<„, „Left>”, „Right<” i „Right>”, czyli bocznych klawiszy zmiany stron, ale okazało się, że tego LP nie umie. Spory research przyniósł poszukiwane polecenie `waitforkey`. Bez parametrów zwróci kod pierwszego wciśniętego klawisza i zakończy działanie (oczywiście dopiero po wciśnięciu). Kiedy dodamy kod klawisza w parametrze – zwróci exitcode 0 tylko po tym klawiszu.

Wersja ostateczna robi co następuje w pętli nieskończonej:

  • czeka na dowolny klawisz (wymusza zegar w każdym miejscu systemu – nawet w menu)
  • wstawia czas w formacie HH:MM w prawy dolny róg – niezagospodarowany przez system
  • czeka sekundę – ewentualne opóźnienie związane z wolniejszym ładowaniem strony (zwłaszcza poprzedniej w dużych książkach)
  • i ponownie wstawia zegar – czasami ekran nie zdąży się przeładować zanim wstawiony będzie tekst za pierwszym razem, a tryb wyświetlenia delay->show zamiast show->delay->show powoduje niemiłe opóźnienie, jeśli jednak ekran przeładowany będzie szybciej 😉

Kod do wstawienia gdziekolwiek do pliku zegar.sh , jednak modelowo umieszczam go w głównym katalogu

while [ true ]; do
    waitforkey && 
    eips 45 39 `date +"%H:%M"` && 
    sleep 1 && 
    eips 45 39 `date +"%H:%M"`
done;

Kod do wstawienia do pamięci głównej do pliku launchpad/zegar.ini :

[Actions]
Z = !/mnt/us/zegar.sh &
Z X = !kill `pgrep -f ".*zegar.sh"`

Ten plik ini ustawia, że wciśnięcie Shift, a potem szybko Z odpali skrypt zegar.sh  z /mnt/us , czyli dostępnej dla użytkownika pamięci (tej w FAT). Shift-Z-X ubija pętlę zegara.

Po wgraniu wciskamy Shift-Shift-Spacja (nie na raz, tylko z krótkimi odstępami), na ekranie pojawia się „Success!” – właśnie przeładowaliśmy LP – wystarczy tylko raz. Można dla odmiany zrobić restart urządzenia, ale to trwa wieczność. Aby odpalić nasz zegrar wciskamy Shift-Z i wracamy do czytania książek.

 

Przydatne linki:

 

1 Komentarz

  1. Pingback:Zegar w Kindle: ulepszenia part 1 | Daniel "assembler" Skowroński - blog.dsinf.net

Dodaj komentarz