|
setup diary |
raspberry piにLCDを取り付けたが、まだまだ使える状態に無かったので、少しいじってみた。タッチパネル用の仮想キーボードとしては、matchbox-keyboardを入れていたが、カスタマイズが難しそうだったので、xvkbdを使うことにした。デフォルトでコンパクトなタイプが立ち上がるように、.local/share/applications/xvkbd.desktopを編集して、以下のようにした。
[Desktop Entry] Name=xvkbd Exec=xvkbd -compact -modal Icon=xvkbd Type=Application Comment=Virtual Terminal=false Categories=Utility;
ここで、問題になるのが、バックスペースである。コンパクトモードにすると、デリートキーしか無くなって、直前の文字を消すためには、矢印で戻ってからデリートを押さなければならず、面倒である。そこで、/etc/X11/app-defaults/XVkbd-commonを編集して、設定を変える。まず、二つのキーのサイズを入れ替える。
!XVkbd*BackSpace.width: 75 XVkbd*BackSpace.width: 45 !XVkbd*Delete.width: 45 XVkbd*Delete.width: 75
そして、実際のキーの配置を入れ替えるために、このファイルの最後に以下を加えた。
xvkbd.NormalKeys: \ F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Delete \n\ Escape 1 2 3 4 5 6 7 8 9 0 - = \\ ` \n\ Tab q w e r t y u i o p [ ] BackSpace \n\ Control_L a s d f g h j k l ; ' Return \n\ Shift_L z x c v b n m , . / Compose Shift_R \n\ MainMenu Caps_Lock Alt_L Meta_L space Meta_R Alt_R Left Right Up Down Focus xvkbd.NormalKeyLabels: \ F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Del \n\ Esc 1 2 3 4 5 6 7 8 9 0 - = \\ ` \n\ Tab q w e r t y u i o p [ ] BS \n\ Ctrl a s d f g h j k l ; ' Return \n\ Shift z x c v b n m , . / Comp Shift \n\ MainMenu Caps Alt Meta space Meta Alt left right up down Focus
これでうまく動くようになった。シフトを押した時に、バックスペースがデリートになるが、まあ問題無いだろう。
以前、HDDが死んで、HDDの入れ替えを行ったPCのソフトが不調になった。古いHDDの中身は取り出していたのだが、ソフトの部分を置き換えても、レジストリが違うので動かない。レジストリはバックアップしていなかったのだが、システムファイルがあるので、そこからレジストリの情報を取り出せないかと思って調べたら、できるようだ。
レジストリは、windows/system32/config内に保存されているが、バイナリなので、そのままでは読めない。レジストリをいじるためには、regeditを良く使っていたが、組み込まれていないレジストリはこれでは扱えない。XP以降ではregというツールを使えるようになっており、これを使うとバイナリファイルに保存されているレジストリを取り出すことができる。コマンドプロンプトでバックアップされたバイナリのレジストリファイルがあるところに行って、reg load HKLM\Temp_software softwareとすると、System\Temp_softwareというレジストリの下に、softwareというファイルに保存されていたレジストリが展開される。これをregeditを用いて取り出せば良い。注意しないといけないのは、regeditを立ち上げていると、エラーが出てしまうことである。このせいで、しばらく悪戦苦闘してしまった。
レジストリを入れ替えて、ソフトのファイルを古いHDDのものに入れ替えたら、無事に動くようになった。
Rで作ったグラフを画像ファイルにセーブするときには、ファイル形式によって、コマンドが違う例えば、epsやpdfの場合には、
dev.copy2eps(file="temp.eps") dev.copy2pdf(file="temp.pdf")
とすると表示されているグラフがセーブできる。幅や高さも表示されている通りになる。具体的に指定するためには、グラフを書く前に、X11(width=6,height=4)として、指定すれば良い。ちなみに単位はインチである。一方pngやjpegの場合には、幅や高さのdefault値が四角くなっているらしく、表示されているグラフと、セーフされたグラフの形が違ってくる。 これを指定するためには、以下のように解像度をdpi単位で、幅と高さをpoint単位で指定する必要がある。
dev.copy(png,file="temp.png",width=72*6,height=72*4,res=72);dev.off() dev.copy(jpeg,file="temp.jpg",width=72*6,height=72*4,res=72);dev.off()
ドットで構成された図の形式だと仕方ないのかも知れないが、面倒だ。
while(TRUE){ f<-file("/dev/ttyUSB0","r+") Sys.sleep(0.1) cat("G0000\n",file=f) Sys.sleep(0.1) d<-scan(f,quiet=TRUE) Sys.sleep(0.1) close(f) Sys.sleep(1) }