"Dキー"の入力が渋いので返品修理を受けたGPD Pocket。
Facebookのユーザページを見ていたところ、ロットによってはハードウェアの変更が入っているようなので、開けてみてみた。
おー、しっかり更新されて、バッテリーコネクタの補強がただのスペーサからネジ止めカバーになっていた。
待てば海路のなんとやらで、よかったよかった。
GPD Pocketの日本語化でお悩みの貴兄に
まさかとは思うが、念のためにまとめ。
基本はここに書かれているWindows8 / 8.1の日本語化と一緒だ。
初回起動時に日本語を選択すれば、この作業は必要ない"はず"だ。
"はず"と書くのは、一度他の言語などで起動されたOSは、なぜか初期化しても"必要ないはず"の通りにはならない。
その場合には、上記の"Add Language"と日本語言語パックの導入が必要だ。
何度かやってみると"ようこそ"の画面などが日本語化しないことがあるので、その場合には"ようこそ"画面などが英語のままの場合を適用するとよい。
それと、起動時に日本語入力がデフォのほうがよい方は、日本語-Microsoft IMEがデフォルトでなく、起動時に英語入力になってしまう場合も適用すべし。
ガジェットリスト更新
- Blackberry KEYone(現地回線)
- iPhone 6s(日本回線)
- EOS Digital 7D
- Cube PC(Core i5 2500)
- MacBook Air 11" Mid 2013(Core i5 4250U)
- Surface Pro 4(Core i5 6300U)
- GPD Pocket
- Xperia Z3 Tablet Compact 16GB
- Garmin Forerunner 225
- Bose Quiet Comfort 15
Vaio Tap 11(Haswell Pentium-Y) -> Vaio Tap 11(Haswell i5-Y) -> Cube i5(Skylake m3) -> Surface Pro 3(Haswell i5) -> Surface Pro 4(Skylake i5)と、4度目の2 in 1の更新。
更新するたびに前の機種はebayなどで売り払っているので、差額はわずか。
今回の差額も$50ほどになりそうだ。
スタートから累計しても$700+なので、新品でSurface Pro 4を買うほどではない。
なかなかなわらしべ長者だ。
Virtual BoxでLinux Mint 18.1 on GPD Pocketーその2、うまく行きました
こちらで紹介した、VirtualBoxを入れるとGPD Pocketが正常にシャットダウンをしなくなる件だが、一度GPD Pocketを初期化をしたところ、ちゃんとシャットダウンをするようになった。
最近のOSの場合には画面が消えてからも中の小人さんたちが頑張って働いていて、実際に電源断するのはだいぶ後だ。
初期化する前は、VirtualBoxをインストールした後にGPD Pocketをシャットダウンすると、電源ボタンの白色LEDが消えずにずっと点いたままだったのだ。
これが初期化後は、20秒ほどで消えるようになった。
おそらくどれかのドライバがちゃんと入っておらず、そのせいでOSが落ちなかったのだろう。
ということで、同様の症状でお悩みの貴兄は、デバイスマネージャで片っ端からドライバの手動更新をかけてみるとよいだろう。
GPD Pocketをリイメージ、クリーンインストールしたらWiFiが接続しないとお悩みの貴兄に
果たして"きれいな躰"に戻ったGPD Pocket、ふと気が付くとWiFiに接続しない。
デバイスマネージャーで見てみると、ドライバはちゃんと入っているようだ。
ググってみると、RS2が適用されている場合にはスクリプトを入れる必要があるようだ。
GPD Winのものがそのまま使えるので、これを入れればよい。
https://mega.nz/#!VUhTWCja!_geaVwKq3tgTkFoFlviUrbPgbhH88WdCAtg3TN88bqk
GPD Pocket お帰りなさい&ケースいらっしゃい
こちらで郷里に返したGPD Pocketだが、一か月ぶりに帰ってきた。
着くまでに一週間、着いてから修理着手まで丸二週間、一日で修理、一日で発送、到着まではわずかに三日だった。
まだ件の"D"キーは若干渋いものの、前に比べればはるかに改善したので良いとしよう。
まだIndieGoGo向けの発送対応で忙しいところに、修理対応してくれたのはありがたい。
修理の内容なのだが・・・
- リイメージしたOSはそのまま
- ディスプレイ側の筐体にあった小さな傷もそのまま
- キーボード脇に貼ったフェルトがテープごとなくなっている、貼った形跡すら残っていない
なので、下側筐体を入れ替えたようだ。
確かに修理前は"D"キーと筐体がこすれるような渋さがあった。
下側筐体とキーマットのクリアランスに問題があったのかもしれない。
さてその一か月の間にケースなぞ買ってみた。
MacBook同様の総アルミの筐体は傷には弱い。
Facebookのユーザページを見ていたところ、Nexus 7の純正スリーブがよく合う、しかも今なら激安、との情報があった。
果たしてGPD Pocketとほぼ同時に到着した。
なかなか良い感じだ。
Google Nexus 7 純正スリーブ 専用ポーチ (ブラック/グレー)
- メディア: Personal Computers
EZ-USBでUSB HID
再びEZ-USB、目標のUSB HIDだ(再び既視感・・・)
DingDong EZ-USB FX2LP CY7C68013A USBコアボード13A-56 EZ-USB FX2LP USB開発モジュールロジックアナライザEEPROM
- 出版社/メーカー: CY7C68013A-Module
- メディア:
- この商品を含むブログを見る
この開発キットに入っている参照実装はCY3684用のものだ。
このキットにはスイッチや7セグLEDがついているのだが、これらはI2Cで接続されているのだ。
これらを扱うものはコンパイルはできるが、今回使っているEZ-USB FX2LP基板に焼くとチップが動作しなくなってしまうのだ。
なので、今回はまずサンプルの"hid_kb"を基板に焼けるようにする。
つまりI2C周りのコードを全て削除してしまう。
サンプルプロジェクトを開く
- (開発キットのルート)\Firmware\hid_kbの下の"hid_kb.Uv2"をダブルクリックして、Keil uVision 2を起動する
I2Cを使用する部分をコメントアウトする
- "periph.c"の"TD_Init()"の以下の表をコメントアウトする
EZUSB_InitI2C(); // Initialize EZ-USB I2C controller
- "periph.c"の"TD_Poll()"の以下の表をコメントアウトする
EZUSB_ReadI2C(BTN_ADDR,0x01,&buttons); // Read button states EZUSB_WriteI2C(LED_ADDR, 0x01, &leds); EZUSB_WaitForEEPROMWrite(LED_ADDR);
こりだけ。
ビルドして、EZ-USB FX2LPの基板に焼いてみる。
デバイスマネージャーでVIDが"0x04B4"、PIDが"0x1005"のキーボードがいれば、そいつです。
さて、これではあまりにも面白くない。
動作も確認できない。
そうだ、思い切ってマウスにしてやろう。
USBデバイスでスクリプターを書き換える
- Keil uVsion 2で"dscr.a51を開く
これはUSBデバイスでスクリプターが8051のアセンブラで書かれたものだ。
下の方にスクロールしていくと、"HIDReportDscr"という、HIDデバイスのでスクリプターがある。
これを以下のように書き換える。
HIDReportDscr: db 05h, 01h ; Usage Page (Generic Desktop), db 09h, 02h ; Usage (Mouse), db 0A1h, 01h ; Collection (Application), db 09h, 01h ; Usage (Pointer), db 0A1h, 00h ; Collection (Physical), db 95h, 03h ; Report Count (3), db 75h, 01h ; Report Size (1), db 05h, 09h ; Usage Page (Buttons), db 19h, 01h ; Usage minimum (1) db 29h, 03h ; Usage maximum (3) db 15h, 00h ; Logical minimum (0), db 25h, 01h ; Logical maximum (1), db 81h, 02h ; Input (Data, Variable, Absolute), (3 button bits) db 95h, 01h ; Report Count (1), db 75h, 05h ; Report Size (5), db 81h, 01h ; Input (Constant) db 75h, 08h ; Report Size (8) db 95h, 02h ; Report Count (2) db 05h, 01h ; Usage Page (Generic Desktop), db 09h, 30h ; Usage (X), db 09h, 31h ; Usage (Y), db 16h, 01h,80h ; Logical Minimum (-127), db 26h, 0ffh,7Fh ; Logical Maximum (+127), db 81h, 06h ; Input (Data, Variable, Relative), (2 position bytes - X & Y) db 0C0h ; End Collection db 0C0h ; End Collection HIDReportDscrEnd:
これでなんとマウスになってしまう。
嘘だと思うなら、ビルドしてフラッシュしてみるがよい。
さっきと同じVID、PIDのマウスがデバイスマネージャーにあるはずだ!
これだけでは面白くないので、右クリックと左クリックも実装しよう。
ボタンを読み出す関数を実装する
- "periph.c"に以下のread_buttonを実装する
BYTE read_buttons (void) { BYTE PortA, Buttons; PortA = IOA; switch (PortA) { case 0xFE: //PA0 is "L" Buttons = 0x01; break; case 0xFD: //PA1 is "L" Buttons = 0x02; break; default: Buttons = 0x00; break; } return Buttons; }
PA0を左クリックに、PA1を右クリックにマッピングした。
どちらのピンもGNDに下げられると、そのボタンを押したと検出するようにする。
ボタンの値をレポートするようにTD_Pollを変更する
- "periph.c"の"TD_Poll()"を以下のように変更する
void TD_Poll(void) // Called repeatedly while the device is idle { if( !(EP1INCS & 0x02) ) // Is the EP1INBUF available, { buttons = read_buttons(); if ((oldbuttons - buttons) != 0) //Change in button state { EP1INBUF[0] = buttons; EP1INBUF[1] = 0x00; // X is 0 EP1INBUF[2] = 0x00; // Y is 0 EP1INBC = 3; } oldbuttons = buttons; } }
後はビルドしてフラッシュすればEZ-USB FX2LP基板がマウスの右クリック、左クリックとして動作する。