2017年
7月
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31

setup diary

2007|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|06|08|11|
2015|01|02|03|04|05|06|07|08|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|

2017-07-03 xvkbdを使ってみた

_ raspberry pi用の仮想キーボードのカスタマイズ

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

これでうまく動くようになった。シフトを押した時に、バックスペースがデリートになるが、まあ問題無いだろう。


2017-07-10 バイナリのレジストリ

_ regコマンドを使って

以前、HDDが死んで、HDDの入れ替えを行ったPCのソフトが不調になった。古いHDDの中身は取り出していたのだが、ソフトの部分を置き換えても、レジストリが違うので動かない。レジストリはバックアップしていなかったのだが、システムファイルがあるので、そこからレジストリの情報を取り出せないかと思って調べたら、できるようだ。

レジストリは、windows/system32/config内に保存されているが、バイナリなので、そのままでは読めない。レジストリをいじるためには、regeditを良く使っていたが、組み込まれていないレジストリはこれでは扱えない。XP以降ではregというツールを使えるようになっており、これを使うとバイナリファイルに保存されているレジストリを取り出すことができる。コマンドプロンプトでバックアップされたバイナリのレジストリファイルがあるところに行って、reg load HKLM\Temp_software softwareとすると、System\Temp_softwareというレジストリの下に、softwareというファイルに保存されていたレジストリが展開される。これをregeditを用いて取り出せば良い。注意しないといけないのは、regeditを立ち上げていると、エラーが出てしまうことである。このせいで、しばらく悪戦苦闘してしまった。

レジストリを入れ替えて、ソフトのファイルを古いHDDのものに入れ替えたら、無事に動くようになった。


2017-07-26 形式によるコマンドの違い

_ Rのグラフのセーブ

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()

ドットで構成された図の形式だと仕方ないのかも知れないが、面倒だ。


2017-07-30 シリアルをRで使ってみた

_ Rでarduino

arduinoとシリアルで通信するときに、その結果をグラフをにしたかったので、Rを使ってみた。少し検索してみたが、あまり情報が見つからなかったので、手探りでやってみた。まず、fileコマンドで/dev/ttyUSB0を開けて、読んだり書いたりしてみたら、多少は動くことが分かった。しかし、読むときに、最後まで読んでしまうと、それ以上読み込めなくなることが分かった。そこで、開いて読んで閉じるということを繰り返すことによって、やりたいことができることを確認したのだが、しばしばエラーが出てしまう。手でコマンドを打つと動くのだけど、コードにすると、エラーがでる。でも、それなりに動くからいいか。必ずしも必要かどうかは不明だが、適宜sleepを入れて、結果として以下のようなコードになった。もちろん、読み込んだデータの処理もしないといけないが、それは省略している。
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)
}