
念の為追記
動かないという報告を頂いています。んが、どういう場合に駄目なのか不明です。ほんのわずかだけ調整。
結局、効果が判る程使ってなかったりする。
10月31日の追記に訂正があります。
まず、F11の送出方法は、Meta-aではなく、Meta-Fn+aでした。
同様にF12は、Meta-sではなく、Meta-Fn+sが正しかったです。
しかし、今回のバージョンで、これをMeta-aとMeta-fに修正しました。
また、「SHIFT+ALT+CTRL+F1等も送出出来ることを確認したが、」は真っ赤な嘘でした。CTRLとALTの組合せは駄目でした。
割り当てるキーにもよるのかもしれないけど、CTRLとALTの同時押しをすると、その後のキーが入力出来ないようです。
| Zaurus | Windows側 |
| Meta-1〜0 ,a ,s | F1〜F12 |
| Meta-q | IME On/Off(Alt+半角/全角) |
| Meta-l | カナ入力モードLock |
| Meta-e | IMEを英数モードへ |
| Meta-h | IMEをひらがなモードへ |
| Meta-k | IMEをカタカナモードへ |
| Meta-o | IME On/Off(Meta-qと同じ様だが、キーコードが違う) |
| Meta-Space | 変換(普通のSpaceでも同じ様だが、キーコードが違う) |
| Meta-x | IME カタひら ←→ 英数 |
| Meta--(Spaceの左) | IME 全角半角 |
| 出したい文字 | Zaurus側キー |
| ぉ | Fn+W |
| け | SHIFT+2 |
| ぬ | 訂正。無いと思ったら普通にSHIFT+1でした |
| ね or め | keyhelperで','と'/'を入れ換えると'ね'が出ない。 入れ換えないと'め'が出ない。 keyhelperで','と'/'を違うキーに設定すれば大丈夫かも。 |
| へ | Fn+= |
| む | Fn+L |
| る | ?キー |
| れ | Fn+GとFn+Hどっちも |
| ろ | SHIFT+0 |
| を | SHIFT+9 |
本家RealVNCのViewer(on Linux)がServer(on Windows)とどんなやりとりしてるのかをダンプして、keypebble(on Zaurus)と比べてみました。
結論としては、特に特別な処理をしてる訳ではなかったです。
つまり、キーが押されれば、PressEventが出る。キーが離されればRelease Eventが出ると。
違いが認められたのは、Zaurusでは特殊キーがリピートしないのと、CTRLを押してもキーコードが出ない点でした。
それは私がkeyhelperでCTRLに、
・[カナ/ひら]をControlに割り当て。(キーコードマッピング無し)
してたからでした。さすがに脱力。CTRL+Xが押されたときにCTRLのキーコードを前置して送信する処理まで入れたのに…
keyhelper.xmlのContorl部分を、以下の様に変更した所、普通のViewerと同じ様にCTRLが送出されるようになりました。
| <define key="F26" type="Control" mapping="True"> <release key="F31"/> </define> |
これで、方式的には、ALT,CTRL,SHIFTの三大特殊キーを普通のキーと同時に使う目処は立ったのですが、大きな問題が。
例えばCTRL+F1を実現するには、今割り当ててるCTRL+1でF1になる方式は既に破綻してるし。
ALTをSHIFT「カナひら」に割り当てて試してみると、Windows側には、SHIFT+ALT+押したキーが出る。SHIFT押してるから当然なのかなぁ。
かといって、これ以上スペシャルキー(CalendarとかAddressとか)を潰しちゃうのは、Zaurus本来の機能をスポイルしちゃうし。
とは言っても、無いものはしかたないので、実用性はともかく、実現できるのかどうか気になったのでやってみた。
但し、私の場合、keyhelperで、以下のキーをマッピングしてみました。
まだまだダメでした。
WindowsのVNCサーバにF2,F4,F6,F8,F10,F11が届いてないとの事。
教えて頂いた、Windows上でkey codeを表示するツールを使って確かめてみると、全然ダメでした…。
正直に言います。Windows(のアプリ)でFnキーの何を押すと何が起きるかほとんど知らないのでした。
送れてないのは判明したけど、何故?と思ったら、案の定です。TABなんかと同じで、keypebble側には、KeyPressEventが発生してません。
デコーダにはキー押下は伝わってくるのですが、それはKeyReleaseEventとして上がってくるだけでした。
Qtが持ってっちゃってます。でも何故中途半端なキーだけなのか?
それはQtopia内部のgrabKeyboard()のみぞ知る事らしいです。ソース開示されてるんだろか?
あっさりFn+数字キーで入力するのはやめました。今度はCTRL+数字キーです。足りない分は、Fn+AとFn+Z…。
CTRLキーの扱いが環境に依存しちゃうけど、前よりは変則性も少なくなったとも言えるかも。
実は、Linux側でもFnキーって使ってない(私のキーボードには独立したFnキーも無いし)のでWindowsでしか使えないコードになってるのかもしれない。
新たな問題。
WindowsのVNC ServerにはCTRL+A〜Zは全然送られない様です。
linuxのtty系だと直感的にCTRL+A = 0x01で、実際そのとおりで期待通りの動きをするんですが、Windowsではダメらしい。
xev(linuxのkey code表示ツールみたいなの)で動きをみると、当然っちゃ当然なんだけど、CTRLが押下されて、その後にA等が押下されるシーケンス。
VNC ViewerがそのシーケンスをどうやってVNC Serverに伝えるのか、そしてVNC ServerがOSに対してどうやってこのシーケンスを発生させるのか…追いかける気力がないので、取りあえず試してみました。
CTRLキー押下シーケンスを、フリーになったFn+1に割り当ててみました。
keypebble上で、Fn+1を押下、離してから次に例えばcキーを押下すると……でました。DOSプロンプトに^Cが。
こんなので良いのか?と言う気もするけど、実際の所どうなんでしょう??
(10/30)駄目でした。違う環境で試したら(Win98SE+RealVNC3.3.5 -> Win2000+RealVNC3.3.7)全然駄目な事が判明。
ややこしい設定になっちゃいましたが、まとめると、
CTRL+C等を送出する際にはFn+1を押してからcを押す。
F1を送出するには、keyhelper等で割り当てたZaurus上のCTRLキーを押しながら、1を押す。
と言う事です。
| Zaurus | Windows側 |
| CTRL + 1 このCTRLは、keyhelper等で CTRLキーとしてZaurusに 割り当てたキー | F1 |
| CTRL + 2 | F2 |
| CTRL + 3 | F3 |
| CTRL + 4 | F4 |
| CTRL + 5 | F5 |
| CTRL + 6 | F6 |
| CTRL + 7 | F7 |
| CTRL + 8 | F8 |
| CTRL + 9 | F9 |
| CTRL + 0 | F10 |
| FN + A | F11 |
| FN + Z | F12 |
やっぱり場当たりな修正でbug作ってました。
オリジナルではちゃんと動くWindows用のVNCサーバに対する接続で、BSやEnterが全く効かなくなってました。
いかにWindowsを使う気が無いかがバレバレです。Guest bookにてバグを教えて頂き、ありがとうございました。
今回は、WindowsのVNCサーバとlinuxのVNCサーバ(=Zaurus上のXvnc)でちゃんと動くのを確認したつもり。
新たな発見。全画面モード時以外はTABキーは使えません。Ctrl-Iで代用はできるけど。
これはbugの作り込みじゃないです。Cancelキーと同様、keypebble側でイベントを横取りしてます。
tabを押すと右下の三角アイコンにフォーカスが移動し、スペースを押すとメニューがでるショートカット用です。
一応、念のため、お断りしておきますが、Windows用のVNC Serverって、Office上での日本語入力がほぼ全滅なのは
VNCの問題(大昔から製作者側でも認識しているけど、仕様上(かな?)実現できないらしい)です。
これさえ出来ればVNCは完璧なのにと大昔から思っているのですが…
'Next Click is Double Click'がなんでずっとグレイアウトされてるのかな?と、コードを眺めてたら、
わざわざ無効にされてる上に、デコード処理でRight Click用のフラグを使ってる事が判明。
旨く動かないから無効にしているのかも知れないけど、nextRightClickを使ってるのは何故?
なんとなくマウスのダブルクリック発生部分も怪しい雰囲気だけど、動くみたいなんで追加。
このarchiveをtar zxvfで展開すると、keypebble-c760-4が出てきますので、以下同様。ふと思い立って、WindowsのVNC Serverと繋げようと、Function keyを入力出来るようにしてみた。
Zaurusで使ってないキーコンビネーションをキーボードを眺めて割り当てた。| Zaurus | VNC Server側 |
| Fn + 1 | F1 |
| Fn + 2 | F2 |
| Fn + A | F3 |
| Fn + S | F4 |
| Fn + 5 | F5 |
| Fn + 6 | F6 |
| Fn + 7 | F7 |
| Fn + 8 | F8 |
| Fn + 9 | F9 |
| Fn + 0 | F10 |
| Fn + Q | F11 |
| Fn + Z | F12 |
SL-C760で使えるVNC viewerとしては、keypebbleがあります。 しかし、760で使ってみたところ、色々と問題があります。
但し、ソフトキーボードからなら入力できる。
全画面モードにすれば、Cancelキーを押すとEscapeになります。
8/7のCVSからソースをcheckoutして修正を加えています。 ipkをどこかからdownloadしてinstallしてから、keypebble実行ファイルだけを入れ換えれば動くと思う。
tar zxvf keypebble-c760.tgzすると、keypebble.C760ができるので、Zaurusにコピーした後、オリジナルと入れ換えましょう。