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 🙂
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:
- Hacki na Kindle od strony systemowej: http://www.turnkeylinux.org/blog/kindle-root
- Polskojęzyczny tutorial: http://www.eksiazki.org/odpicuj-swojego-kindle/
- O triggerach i zdarzeniach: http://www.mobileread.mobi/forums/showthread.php?t=176090
- Lista modyfikacji - główny wątek z najnowszymi wersjami plików: http://www.mobileread.com/forums/showthread.php?t=128704
- Inna strona z modyfikacjami: http://jevopi.blogspot.com/2011/07/pimp-your-kindle.html