小松鼠嚇了一跳,有了魔法眼鏡後,這世界看起來完全不一樣了

顯示具有 kindle 標籤的文章。 顯示所有文章
顯示具有 kindle 標籤的文章。 顯示所有文章

2011年9月12日 星期一

幾個關於 Kindle 3 firmware on Kindle DXG 的 Hack

之前由 Yifan Lu 發布的 Kindle 3.X updater 實現了讓 Kindle DXG/2 也能使用 Kindle 3.x 的 firmware。這應該是很多人的願望,對一般使用者而言,也遠比我之前的 kindle 3 Open Source on DXG 實用。
但是有三個問題:

2011年9月1日 星期四

WebKit for Kindle DX binary files

下面的 tar ball是一套可以在 kindle dx 執行的 directfb, gtk+, webkit 環境:
WebKitGtkKindleDXG.tar.xz
使用方式
  1. jailbreak, ssh 到你的 kindle DXG (2.5.8 版本)
  2.  解開 tar ball,放到一個 loop file system 下,然後 mount 到 /usr/local
  3. mount -o bind /usr/local/root /var/tmp/root
  4. 執行 /usr/local/bin/gwebkit 即可,會打開一個 html 檔。
  5. shift+方向鍵控制游標。Sym 是 Tab。Menu 可以跳到 URL 輸入框。
  6. Alt-x  離開,Alt-a Alt-z Zoom in, out。Alt-l 刷新螢幕。
  7. 雖然可以使用免費的 3G 網路,但是由於怕違反 Amazon 的使用規範,所以預設關閉,只能手動啟動,
  8. 沒有內附中文輸入法,但是許多的 gtk+ 的輸入法 module 都可以用。scim 不能用的原因有兩個,stdc++ 的版本,我編譯的 DirectFB 只允許單一程式。我自己是寫了個 chewing 的 gtk+ im-module,但是還不完整,沒有附在裡面。
  9. 其他一些程式,也可以試試看,如 gtk-demo, leafpad, gqview, vte, gtkterm2 等。
  10. 基本上是使用 kindle 3 source code,修改過的 source 在 /usr/local/src 。
(更新*****)
GitHub Project: https://github.com/tjwei/WebKitGtkKindleDXG

2011年8月21日 星期日

WebKit Kindle DX backport

Kindle DX 的 netfront 瀏覽器雖然堪用,但是很多網頁讀不出來。
比方說我的部落格首頁就會出現記憶體不足的訊息,網頁呈現的效果雖然似乎挺清爽乾淨,但是 DX 螢幕有 824x1200 的解析度,足以顯示完整的網頁。
整體來看,還是 kindle 3 的瀏覽器較佳。一個作法是直接讓 DX 執行 kindle 3 的作業系統。非常神奇的是,居然沒有什麼問題。但既然 kindle 基於 open source,也釋出了修改過的程式碼,所以我試著將 kindle 3 的 webkit 移植到 dx 上。
初步的結果如下:

還不是很完整,但至少能在 google 裡打個搜尋,顯示一些網頁。
過程是 Directfb -> Gtk+ -> WebKit
  • 編譯環境; scratchbox
    • toolchain 用的是 glibc2.5 2007q1。雖然說 libstdc++ 和 kindle dx 的不相容,但 2006q3 太舊了,很難編譯。而且 gtk+ 用的是 C 而不是 C++,webkit 雖然用 C++ 但是沒有用到 libstdc++ 而是自帶的程式庫,所以問題不大。這點從android 極為貧乏的 C++ runtime 可見端倪。因為顯然同樣是 WebKit based 的 Android web browser 不需要完整的 libstdc++。所以 glibc2.5 的 toolchain 應該都可以。
    • 在 amd64 的 linux 下使用 scratchbox i386 binary, kernel 要增加 vdso32=0 的參數,不然會有 Inconsistency detected by ld.so: rtld.c: 1192: dl_main: Assertion `(void *) ph->p_vaddr ==  的錯誤
    • 我的 cputransp 跑不起來,所以我自己編譯了一個 static linked x64 qemu-arm。然後寫了一個 wrapper 來吃 binfmt 餵進來  --sbox 的參數。除了 pthread 外,似乎沒什麼問題。跑 configure 時,一些 pthread 的測試程式會停不下來,也許是 qemu 的問題。當碰到這個問題的時候,都是手動修改 configure.in 裡面的測試程式,讓他直接通過。
  • 我在 /mnt/us 上弄了個 200mb 的 ext3 loop filesystem,mount 到 /usr/local 上。之後只要 設好 ld.so 或者設定 LD_LIBRARY_PATH=/usr/local/lib 即可,不會影響原系統。
  • 編譯 DirectFB
    • 用的是 kindle 3 的 source。設定 --prefix=/usr/local,gfxdriver=none
    • 編譯所需的 jepg 和 libpng 時,設定 --prefix=/usr。libpng 需要 1.2 版的。我當初一時不察,用了 libpng 1.4 ,所以修改了一點 DirectFB 的程式碼解決 libpng 1.2 的相容問題,還要額外的安裝 libpng 1.4 到 /usr/local
    • 編譯上沒有什麼問題,然後把 /usr/local copy 到 kindle 完成安裝上。可以利用 ssh+tar 或者 ssh mount 來複製檔案。
    •  kindle 的 eink framebuffer 是 4bit 灰階,無法被 directFB 直接支援,所以只好當成 indirect fb 來使用。如果你在這裡花上零點五秒來想想該怎麼解決這個問題,你會發現 amazon 的 lab126 想的解法和你一樣。他用了一個 LUT8 (8bit indexed color) 的 virtual framebuffer 來假裝是真正的 frame buffer,然後就能順利建構 DirectFB 。接下來只要設法讓 virtual frame buffer 和真正的 frame buffer 來互通有無即可。lab126 用的是 call back 的方式讓使用者程式自行決定如何處理。雖然從程式碼來看, lab126 取得 frame buffer address 的方式似乎有點不保險。
    • kindle 3 的 eink 比 DX 多了好幾種 update eink screen 的方式。
    • lab126 版的 DirectfB 基本上有考慮到 DX 的按鍵,除了一個 keymap 的檔案。所以要修改這個檔案,不然之後有些按鍵會出問題。我順便把 Sym 鍵設成 Tab。
    • 要用 no-vt 模式執行。可將 no-vt 加入 ~/.directfbrc 裡面。 
  • 編譯 GTK+
    • 編譯基本上沒有太大的問題,但是很繁雜。有些 kindle 3 source 沒有 autogen.sh 或者 configure 時,就 aclocal && autoconf && automake。還不行,就抓一份相同版本的正版 source ,然後把 lab126 版 copy 過去。
    • DX 的 glib 太舊了,要弄個新版的到 /usr/local 裡。在 scratchbox 中,我也順便把新版的 glib 裝到 /usr/ 下,之後編譯會比較輕鬆。
    • 雖然沒什麼道理,但 gtk-doc 似乎不裝到 /usr/ 下,automake 就抓不太到。雖然常常 configure 時可以關掉 gtk-doc,但有時需要 autogen 的時候, 不裝個  gtk-doc 就過不了關。autogen 應該是設計來簡化問題的,而不是用來增加問題的。 
    • automake 版本要用 SBOX_DEFAULT_AUTOMAKE 設定到 1.9。不然會有 tar-ustar 錯誤。
    •  直接編譯完,執行 gtk-demo 會出現像是 這裡的情形。我的作法是在 gdk_init 裡面加上自己的 kindle dirty rect callback ,把更動過得方塊更新到 eink screen 上。這樣, gtk-demo 就能正常顯示。
    • 如果前面 directfb 的 keymap 沒改好,會發生 gtk-demo 裡面上下鍵無法使用的狀況。
    • 我遇到了 字體都變成方格這個問題。google 查詢到,似乎某些 pango + cairo 的組合會發生這種情形,所以我將 pango 和 cairo 換成稍微新一點的版本。lab126 有更動 cairo 程式碼,不過看起來只是 hack 某些 font 資訊的問題,不是什麼致命的問題,所以我直接使用無修正板。
    • 我設定了 gtkrc-2.0 ,讓字體大一點,也設定了 fontconfig 來使用 /usr/java/lib/fonts 中相對應的字型。
    • 除了 gtk-demo,我試了 leafpad,gtkterm, gqview。 leafpad 和 gtkterm 都能正確編譯執行,但是視窗要修改或者設定成大一點,最好是全螢幕。原因是 gtk游標會在螢幕正中間,如果 gtk 程式的視窗太小,會因為鼠標沒有在視窗上而抓不到 keyboard focus。這大概是 directfb的 wm 的特性。gqview 也可執行和操作,但是似乎圖形顯示有問題。gtkterm 需要 vte,編譯 vte 時,需要 termcap。雖然用 ncurses 取代 termcap 也行,但是 ncurses 我編不起來,也懶得弄。除了 gtkterm 外,vte 本身應該也能跑。和 kindle 上其他的 terminal 程式相比,vte based terminal 的一大優點是可以顯示正確顯示 utf8 中文。LXDE 的 gpicview 雖然標榜純 gtk,但其實有用到 X11。光是 gdkx.h 也就罷了,其中有用到 X11 的檔案,所以無法直接編譯。gedit 因為需要 gtksourceview 一堆的,看起來太複雜了,就沒有真的弄起來。
  • WebKit
    • 查看 kindle 3 的 source code 裡的 Changelog,到 2009年5月18日,所以下載了 webkit r43841。
    • 解開後將 kindle 3 裡面修改過的 source 複製並且覆蓋過去。
    • 修改 configure.ac,讓 directfb 變成 default。因為 build-webkit 似乎沒有這個選項。
    • 執行 WebKitTools/Script/build-webkit --gtk,我選擇關掉 xslt還有一些不需要的選項。
    • make 過程會出現錯誤,因為一些 .h 檔沒有放對位置。可以修改 GNUMakefile 或者 source,或把 .h ln -s 到適當地位置。總之,依個人喜好,讓他編譯過去就是了。
    • 還有一些錯誤是 kindle profiling 相關的,我直接刪除相關的部份。
    • GtkPerf 的 link 會出問題,要把 .libs/libWebcore.a 連進去。
    • make install 後把 /usr/local copy 到 kindle 就行了。
    • 編出來的 GtkLauncher 可以執行,但是 kindle 的 proxy 需要特別的 x-fsn http header,所以暫時還不能上網。可以嘗試用 GtkLauncher 瀏覽 kindle 裡面的 local 檔案,要用完整檔名。如果發現只看到 html 的 source code,那是因為沒有 mime data。將你電腦裡面的 /usr/share/mime copy 去 kindle 即可。
    • 這個版本的 webkit settings 沒有支援 user-agent 修改,也沒有支援 proxy,更沒有支援客製化的 http header,所以修改程式碼送出適當的 header,和使用 proxy。
    • 修改被 lab126 修改過的 GtkLauncher 程式碼,讓 urlbar 顯示出來。
    • urlbar 可以輸入,但是 google 搜尋框無法輸入文字。經 google 查詢後,發現是 ICU 問題。我用的是 ICU 3.6,在 scratchbox 中無法順利編譯,因為 pkgdata 無法執行。我修改 makefile,讓 pkgdata 能順利執行,完成 make。但是顯然我漏了什麼。依照這裡的方式,重新編譯。這時,輸入框就能輸入了。
    • 我不曉得如何用鍵盤完整的操作,GtkLauncher,即使打開 caret browsing,也不知道怎麼操作,介面還需要修改。中文輸入法也還沒整合進去。 

2011年8月15日 星期一

Kindle DX 的酷音中文輸入法 (2)

(上接 Kindle DX 的酷音中文輸入法
(更新** GitHub 專案 https://github.com/tjwei/KindleChewing )
檔案 Source and Binary 在此 目前預設是使用許氏鍵盤,可用 Sym 切換漢語拼音。我沒有包入普通的注音鍵盤,因為 kindle 上面數字鍵比較不好打,而且鍵盤上沒有標注音符號。普通的注音輸入法,沒有特別不能用的理由,但雖然 alt-q alt-w 的方式,可以正確輸入 1,2 等等數字,但 . < ; - 這些鍵不能直接輸入,所以還是有些音打不出來,需要用其它鍵代替。
更新:
  • 修改 post key event 的方式,讓一些 kindlet 也能使用。
  • 簡單的處理了螢幕旋轉的狀況。
原理說明:
  1. khk.jar 是一個假的 msp.jar。msp.jar 就是 kindle 裡面的採地雷/五子棋小遊戲。Kindle 會在使用者介面啟動時,載入 msp.g 這個 class。msp 大致上還能猜出跟 Mine Sweeper 之間的關聯,但是一個 class 叫 g 就有點怪。不過這是由於 kindle 的程式碼被弄亂過得原因。總之,這個是寫死的。這個 class 不能叫做 msp.h, msp.g2, msp.gg, msp2.g,就只能叫做 msp.g,不然 kindle 主程式不會主動過來招呼你的,因為跟你不熟。當然你也可以假裝成為其他 kindle 認識的人,比方說像是 browser, pictureviewer, pdfreader, mobireader 之類的,甚至是 home,但比較起來,採地雷看起來最人畜無害,所以選擇假扮 msp。
  2. 假扮 msp 的方式參考 http://www.mobileread.com/forums/showthread.php?t=61093 ,但只有精神上類似,因為 kindle 內部改了很多。不用完全模仿 msp 的格式,任何 class 都行。只要記得把 meta info 包進去就行了。反正重點只是要讓 kindle 呼叫 g() 這個constructor。名稱叫 khk 的原因是要搶在 msp.jar 之前載入,先搶先贏。如果你叫做 msp2.jar,就只能繼續玩踩地雷了。不過這算是不太保險的 hack。因為沒有人保證 khk.jar 一定會在 msp.jar 前面載入。完全只是因為 kindle 啟動 script 裡面的 booklet/*.jar 造成 cvm 的 command option 中, khk 會比 msp 前面。
  3. khk 可用,msp 就不能用了。當然,其實可以修改 msp 程式碼,讓 msp.g 載入我們的程式碼之後,繼續他原來的功能。但這樣就失去這種方式的意義了。這個輸入法的優點就是不用修改主程式碼。
  4. 這版的 khk 用到了 AppContextBridge 這個(隱藏?)功能。不然我不知道怎麼送 keyEvent 到 kinlet 中。
  5. im 參考了 launchpad kiterm 。不過修改了很多地方,可能只剩下(沒用到的) daemonize,還有 screen 和 pixop。
  6. khk 是用 eclipse 然後包進所有的 kindle jar 用 cdc 1.0 模式編譯。
  7. im 是用 scratchbox 編譯。kindle dx 的 libstdc++ 分常舊,雖然網路上面常常看到推薦的 toolchain 是 scratchbox-toolchain-cs2007q3-glibc2.5-*,但裡面的 libstdc++.so 是 6.0.9,而 kindle 是 6.0.8,不要看這 8 和 9 差不多,這可能會造成一些 c++ 的程式發生 version `GLIBCXX_3.4.9' not found 錯誤。所以我用 scratchbox-toolchain-arm-linux-2006q3。如果不用 c++ 的話,似乎是沒什麼問題。用 c++ 也不見得總是會有問題。
  8. 原本想試試看加入 google 語音輸入,但錄了辦天才發現 dx 沒有辦法錄音。kindle 3 才行。不過錄音的時候,也不會產生錯誤訊息,只是沒有聲音而已。 原則上,khk 配合 curl, 和 flac 即可達到語音輸入的功能。kindle 內的 busybox wget 似乎無法送出客製化 header,不然連 curl 也不需要。
  9. freetype的用法 是參考 freetype 的教程和這篇
  10. DBus 的使用方式是參考這篇。 雖然 glib 裡面有 dbus 支援,但是 kindle dx 的 glib 太舊,所以只好用 C API了。
CanBeFound 的 kindle 3 的中文輸入法 的比較:
  1. CanBeFound 的方式是修改 SymbolPopup 的方式來處理。這是一個好的方法。事實上,我的第一個想法也是如此,畢竟 symbol popup 是 kindle 裡面長得最像輸入法的東西,其實這也是我之前弄磚 kindle 的原因。 慘的是磚了之後才發現已經有人完成這個想法。
  2. 我的方式的最大優點是,source 可以公開。因為完全不用修改 kindle 的程式碼。 
  3. 第二個優點是使用 D-Bus 做訊息溝通。所以其他程式只要寫個 D-Bus 處理器就能使用。而且對於 kindle framework 的依賴可能比較小一點。
  4. kindle 裡面的程式,可以選擇輸入時不使用 symbol popup。這時,symbol popup based 方式就無效。比方 kindle 的 home 介面,你可以直接叫出酷音輸入文字,然後搜尋框就會跑出來。Sym 鍵則是要在搜尋框出來後,才能叫出 SymbolPopup。
  5. 但除此之外,都是 CanBeFound 使用 SymbolPopup 的方式比較直接比較好。
  6. 大部分輸入文字的地方,如果程式師不特地亂搞,照規矩來,其實都可以叫出 SymbolPopup。所以第 4 點沒有太大意義。
  7. SymbolPopup 可以很容易編譯。msp 比較麻煩一點。其實也可以把 DBus 處理的部份讓 SymbolPopup  來啟動。但主要的考量是能否公開程式碼的問題。
  8. 使用 SymbolPopup 的優點是簡潔。kindle 裡面的 eventqueue 不只一條,至少 msp.g 能抓到的那條,無法處理 kindlet 的訊息。所以我必須要用到 AppContextBridge 來跨越 context 送訊息。看起來似乎不太腳踏實地,也增加了對於 kindle framework 的依賴。而 SymbolPopup 的好處是,程式需要符號輸入時,會自己去把你叫出來,這就不用擔心什麼 context, thread group 什麼的問題了。
  9. SymbolPopup 因為在 Kindle 的框架內,所以不用擔心旋轉顯示的問題,也能在適當的位置顯示。我的外掛的方式,因為有個內奸在裡面,所以某種程度上也能整合的不錯,但比較累。
  10. CanBeFound 的輸入法可以在 browser 內輸入,但是我的 dx 沒辦法。我想應該是 browser 的問題。因為我也有讓 symbol popup 輸入中文字的測試程式,但是在 dx 的 browser 裡面,只有符號能輸入,中文不行。不過問題是我的外掛輸入法在 dx 的 browser 裡,連英文也無法輸入,這點我就不太清楚為什麼了。

2011年8月10日 星期三

Kindle DX 的酷音中文輸入法


這是一個基於酷音輸入法的 kindle DXG 2.5.8 的中文輸入法。檔案 Source and Binary 在此
目前預設是使用許氏鍵盤,詳細的原理與使用方式之後再詳述。
(和 這個 kindle 3 的中文輸入法原理不同,各有優缺點)

使用方式:

  1. ssh 進 kindle
  2.  mntroot rw 然後將 khk.jar 放到 /opt/amazon/ebook/booklet 下。
  3. 將 mnt/us/chewing 下的 .so 和輸入法資料檔放到  /mnt/us/chewing
  4. 將 im 執行檔放在任何地方都可。
  5. /etc/init.d/framework restart
  6. 執行 LD_LIBRARY_PATH=/mnt/us/chewing ./im
  7. alt-shift-space 可叫出輸入法,sym 切換許氏/漢語拼音 。Aa 切換中英文。
 Bug:
  1. 瀏覽器裡面無法使用,應該是 kindle dx 的瀏覽器 netfront3 的問題。不過搜尋列可以使用。
  2. 我還沒有處理螢幕旋轉,所以螢幕選轉後,要 alt-shift-space 兩次叫出輸入視窗。
  3. 閱讀器裡面直接輸入中文不會跳出搜尋窗,不過先用英文按出搜尋窗之後,就能輸入中文。

(下接: Kindle DX 的酷音中文輸入法 (2))

2011年7月7日 星期四

用 kindle 顯示 LyX 的 PDF Preview

  •  環境為 Win 7 32bit, LyX 1.6.9,  Python 2.7, Cygwin, Kindle DX
  • Kindle DX 安裝 usbNetwork hack
  • Cygwin 安裝 openSSH
  • 將 ssh 環境設定成無密碼登入 kindle,要在 kindle 的 usbnet/etc 下設定 authorized_keys
  • 將下面的 python 程式用 py2exe 或者 cx_freeze 包裝成 exe 檔
  • 在 LyX 裡面,將 Tools -> Preferences -> File Handling -> File Format 下的 pdf (pdflatex) 的 viewer 由 pdfview 改成我們的 exe 檔的路徑。
  • 如此就完成了,LyX 的 preview 會自動傳送到 kindle,然後自動更新書目。

2011年6月27日 星期一

我的 Kindle DX 復活了

自從買了 Kindle DXG 後,使用率一直很高。不過說來也是我不小心,後來發生了一件慘劇。
原本有些小構想,決定要改寫 Kindle 裡面的一些 java 程式。
於是,我將 /opt/amazon 備份了一份成為 /opt/amazon2,然後將使用者介面停止。
一開始的計畫將修改的版本放入 /opt/amazon2 內,然後copy 並修改相關的 script裡面的 path。這樣,我就有一份可以修改的使用這介面,不會影響原本的系統。
由於都是 user mode 的東西,想來應該很安全,即使 script 失敗,最多就是程式終止罷了。
為了怕有些地方 path 沒改到,執行了原本的 /opt/amazon 裡的程式,所以我又將 /opt/amazon 改成 /opt/amazon0,執行 /opt/amazon2 的版本試試看。
結果執行新的 script ,失敗了,這不意外,因為難免會漏掉一些地方沒改到。
意外的是,機器非常迅速的重新開機。
這只能怪我沒有事先注意到這個起始使用這介面的 script 有個當掉會自動重開機的保護機制。由於只是一瞬間的事,我來不及將 /opt/amazon0 改回,所以機器就磚了。
總之,錯在於我過於大意,沒有將 usbnetwork 設為開機自動啟動。
上網搜尋了一下,找到所謂的進入 recovery mode的方式:按住電源 30 秒,然後長按 Home。
然後我就讓他回復了原廠設定。可惜回復原廠設定不包含讓 /opt/amazon 回復。
Recovery mode 可以讓你用 usb 傳入更新檔,然後更新。可惜這個階段的更新檔的格式和普通那種 font hack 之類從使用者介面選單更新的那種不同,update maker 還不支援。
想說送廠維修曠日費時,而且因為是自己 hack 的結果,所以難免有點心虛。所以就想自力救濟。
依照這個網頁的說明,拆解了 kindle 的塑膠頭蓋。沒有 iPad 拆解工具,所以就用一字起,指甲和卡片完成工作。
這張圖的最上端中間,j9 那個區域,有四塊明顯的方形金屬片,用這個區域來連 serial console。所以需要 USB to TTL 裝置,電壓需要 3.3v版本。四個金屬片由左至右分別為,3.3v, TX, RX, GND,所以要依序連上 USB to TTL 端的 3.3v RX TX GND(我其實不太懂,但就我的印像是 TX<->RX)。
理論上來說,應該要焊上去比較牢靠,但是我的銲錫和電烙鐵不知塵封何處,而且我之前只是拿來焊接舞台魔術道具的一些電線,所以其實技術非常糟糕。或者應該要做個像是這樣的接頭,但同樣我也沒有工具。
所以我剪開一條壞掉的網路線,抽出幾條短電線,然後在卡紙上用針穿了四個孔,把導線頭穿過針孔,然後膠帶貼好,用剪刀把導線頭剪齊,作成了這樣的接頭

這樣的接頭當然十分不穩,所以要一隻手用點力去讓導線頭和 kindle 上的金屬板接觸。更不幸的是,由於擺設方向的問題,我必需要用右手做這件事。也就是說,鍵盤、滑鼠、重開 kindle 的動作必須由左手來負責。
經過一點練習後,終於能成功的讓 hyperterm 連到 kindle 的開機畫面。
不過發現 login 時,會問密碼。
網路上搜尋了一下,發現真的要連進 shell ,要使用先進入  uboot 互動環境。
進入的方式是在 reboot 後第一時間按下 enter(也許是任意鍵,不過反正 enter 也是任意鍵)。
按的時間不對的話,會進入 developer mode,那是壞得更嚴重的時候才需要的。
在 uboot 下輸入
uboot> setenv bootargs $(bootargs_base) root=/dev/mmcblk0p1 rw init=/bin/sh
uboot> bootm 0xa0060000
這兩行指令就可以進入 shell 了。當然,由於我只有左手能工作,所以那兩行我是先 copy 起來,讓鬥在 hypterterm 裡面貼上。
經過漫長的努力後,終於看到睽違已久的 #  shell 命令列提示符號,不用再 root ,也不用再 remount ,不過 PATH 沒有設定,所以輸入完整的 /bin/mv 把 /opt/amazon0 改回 /opt/amazon。
然後 shutdown now, reboot 都無效,只好按電源紐重新啟動。其實有點緊張,不過很順利的重新開機。
唯一的遺憾是之前在 recovery mode 時,似乎把下載的藏書以及 font hack 等等都刪除了。不過amazon 的帳號資料還在,所以跟 amazon 買的書都還會在。

2010年11月5日 星期五

Kindle 使用心得

拿到 Kindle DXG 兩個多月,基本滿意,讀起來很舒服,在車上看完了四本小說,還有幾本魔術電子書。不用眼睛對著燈閱讀,也不用帶厚重的書。
如果要說有什麼困擾,大概就是偶而在外面會碰到有人問:「這是哪種 iPad?」這樣的問題。有點像是下面的影片(影片基本上說的是,Kindle 螢幕在太陽下仍可閱讀,而且便宜,Kindle 3 入門價是 $139 美元)。



還好被問的次數不是很多,比被問路的次數少。
我覺得 Kindle 跟 iPad 或智慧手機的使用族群有一個很大的不同點,那就是 Kindle 是拿來用的,不是拿來秀的
我不是說 iPad 或者智慧手機只能拿來炫耀,我自己用 Android 也用得很開心,也完全能夠理解 iPad 要怎麼拿來用。 我深信五年後,機器人會統治世界。
只是大家的智慧手機或者 iPad 裡,很少沒裝一些很炫的遊戲或者很酷的軟體吧?像我的手機裡有 Doodle Jump,用到水平儀的功能,對於很多人來說,這還是很新鮮的。或者 Google Goggle,用到影像辨識技術。又像是 Talking Tom Cat,用到音訊處理。也有很多軟體可以拿來玩些小魔術、小把戲。對有些人來說,觸控、GPS 可能都算是新鮮的東西。總之,就算我並不是特意的拿出智慧手機來製造聊天話題,也不介意別人對這隻手機充滿好奇或者興趣。iPhone 和 iPad 更是如此,就像名牌包包一樣。
但是 Kindle 不一樣, Kindle 很難拿來炫耀。Kindle 沒觸控螢幕、沒相機、沒 GPS 就算了,連螢幕都還是黑白的。Kindle 的介面和上個世紀的 Palm III 或者 Macintosh Plus 放在一起,一點也不突兀。
總之,拿起 Kindle 時,唯一做而且也唯一做的事情就是閱讀。就跟你拿普通紙本書籍一樣。不對,就連拿出紙本書籍,你內心裡都還可能有種炫耀的心態,也許是很紅的 1Q84,也許是厚重的專業書籍,你可以用這種方式建立你的個人品味形象,就像是衣著和配件一樣。你也能夠拿紙本書籍來壓花、打蟑螂、墊桌腳。
但是 Kindle 不行,閱讀電子書時,旁人看不到封面,無法驚嘆你的文化氣質。放在書櫃上,也顯得單薄,不像傳統書籍可以讓訪客一進客廳,就被屋主的學識淵博所震攝。
你唯一能做的事情就是閱讀,半點社交的成份都沒有。
所以拿出 Kindle時,我一定是在閱讀。沒有人喜歡在閱讀時被打斷。更何況如果交談的內容是,「這是哪一種 iPad?」這類的問題。
 閱讀是很個人的事,是一種很自閉的活動。名牌、手機或者酷炫玩意是社交和溝通的工具。
所以 Kindle 和 iPad 兩者的購買動機以及使用時機存根本上就很不同。

如果你還需要問為什麼要買 Kindle,你大概就不是 Kindle 的目標族群。
(上面的話也同樣適用於 iPad ,只不過沒有人不是 iPad 的目標族群。價格要是低一點的話,我大概也會買一台吧!)