KeyRemap4MacBookでWindowsキーボードをうまいことアレする設定。

WindowsキーボードをMacで使うとアレコレ不便なのでRemapした時の設定。
KeyRemap4MacBookのバージョンは7.7.0。

■譲れないポイントは以下の2点。
1 : VMware、リモデス等でMac環境以外でWindowsキーボードを使用するときには、是が非でもゲスト内ではそのままの使い勝手を維持してほしい。
2 : MacのターミナルでのHome / Endボタンの挙動をどうにかしたい。

■設定手順
1 : KeyRemap4MacBookをインストール。
2 : 環境設定のキーボード設定の修飾キーはデフォルト状態。
3 : private.xmlを以下の様に編集する。
※For Japaneseの項目で設定をするとゲスト内での挙動がおかしいのでこれだけ個別に定義する。





Backquote(`) to KANA/EISUU(toggle)(Except VirtualMachine, RDC)
private.JisBackquote2KanaEisuu
VIRTUALMACHINE, REMOTEDESKTOPCONNECTION
--KeyToKey-- KeyCode::BACKQUOTE, KeyCode::VK_JIS_TOGGLE_EISUU_KANA



4 : ReloadXMLを押す。
5 : private.xmlで追加した項目と、以下の項目にチェックを入れる。

▼Chanege Command_L Key (Left Command)
 □Command_L to Control_L (except Taerminal, VirtualMachine, RDC)
▼Chanege Control_L Key (Left Control)
 □Control_L to Command_L (except Taerminal, VirtualMachine, RDC)
▼For PC Users
  Use PC Style Home/End (except in Virtual Machine, RDC)
  (Change Home to Command + Left)
 □(Change End to Command + Right)
  ( + Change Home to Control + A in Emacs, Terminal, X11, Eclipse)
  ( + Change End to Control + E in Emacs, Terminal, X11, Eclipse)

 □Use PC Style PageUp/PageDown (except in Virtual Machine, RDC)
  (behave like Option + PageUp/PageDown)
▼For Japanese
 ▼Change Yen(\) Key
  □JIS Yen(\) to Backslash
   (except virtual machine, X11, RDC)

■参考サイト
http://onno.jp/dev/2012/01/mac-windows-keyremap4macbook.html
http://d.hatena.ne.jp/omoisan/20110901/1317048557

VMwarePlayer のアップデートでこける。

環境はFedora15(64bit)のVMwarePlayerは4.02。
過去に何度かVMwareのアップデートでこけては調べてパッチ当ててはいたので、「またかー」と思ってパッチを当てても今回はこけた。
今回のこけたモジュールはvmnetさん。エラーログは以下の通りでした。


(略)
2012-03-10T22:58:59.676+09:00| vthread-3| I120: Building module vmnet.
2012-03-10T22:58:59.676+09:00| vthread-3| I120: Extracting the sources of the vmnet module.
2012-03-10T22:58:59.686+09:00| vthread-3| I120: Building module with command: /usr/bin/make -j -C /tmp/vmware-root/modules/vmnet-only auto-build SUPPORT_SMP=1 HEADER_DIR=/lib/modules/2.6.41.1-1.fc15.x86_64/build/include CC=/usr/bin/gcc GREP=/usr/bin/make IS_GCC_3=no VMCCVER=4.6.1
2012-03-10T22:59:00.690+09:00| vthread-3| I120: Failed to compile module vmnet!
2012-03-10T22:59:00.697+09:00| vthread-3| I120: Trying to find a suitable PBM set for kernel 2.6.41.1-1.fc15.x86_64.
2012-03-10T22:59:00.697+09:00| vthread-3| I120: Validating path /lib/modules/2.6.41.1-1.fc15.x86_64/build/include for kernel release 2.6.41.1-1.fc15.x86_64
2012-03-10T22:59:00.700+09:00| vthread-3| I120: Your GCC version: 4.6
2012-03-10T22:59:00.711+09:00| vthread-3| I120: Your GCC version: 4.6
2012-03-10T22:59:00.732+09:00| vthread-3| I120: Header path /lib/modules/2.6.41.1-1.fc15.x86_64/build/include for kernel release 2.6.41.1-1.fc15.x86_64 is valid.
(略)

http://forums.fedoraforum.org/showthread.php?t=272733
上記URLの#6のvmnet.tarをダウンロードして、既存のと置き換える。これで問題なくアップデートされます。


# cd /usr/lib/vmware/modules/source/
# ls
vmblock.tar vmmon.tar vsock.tar vmci.tar vmnet.tar
//このディレクトリのvmnet.tarをダウンロードしたものと置き換える。
//念のためバックアップ作成
# mv vmnet.tar vmnet.tar.back
//ダウンロードしたvmnet.tarをコピー
# cp /your/download/directory/vmnet.tar .
この後、VMwarePlayer起動、アップデートが走る。すべての項目がうまく行ったらOK。ちなみに自分は全項目アップデートができたのに「スタートに失敗しました」とか言われましたが、VMwarePlayerをもう一度クリックしたら問題なくアップデートされました。

VMwarePlayerのアップデートでまたこける。

環境はFedora15(64bit)のVMwarePlayerは4.02。アップデートでKernel 2.6.42になったらまたもやこけた。

今回もこけたモジュールはvmnetさん。過去をずっと見てもこの子は定番でこける。

http://slackblogs.blogspot.com/2012/01/vmware-workstation-802-and-linux-kernel.html
上記URLからパッチをダウンロードする。


# cd /usr/lib/vmware/modules/source/
# ls
.patched vmci.tar vmnet.tar vmnet.tar.bak
vmblock.tar vmmon.tar vmnet.tar.back vsock.tar
//ここに.patchedがあるなら消しておく。
# rm .patched

# cd /your/download/directory
# ls
vmware802fixlinux320.tar.gz
//ダウンロードしたファイルを解凍
# tar -zvxf vmware802fixlinux320.tar.gz
patch-modules_3.2.0.sh
vmware3.2.0.patch

//パッチを当てる
# . patch-modules_3.2.0.sh

以上です。VMwareのバージョンが違うと当たりませんが、他のバージョンのパッチもちらほら見つけたので同じ手順で大丈夫だと思います。

Androidで画面遷移

AndroidでActivityの画面遷移でどのタイミング各メソッドが呼ばれているかを今更ながら調査。(※久々に触ってすっかり忘れてた)
ソースは公開するまでもない程の内容なので割愛。
FirstActivityとSecondActivityにボタンを用意。
FirstActivityのボタンを押すとSecondActivityが呼ばれる。
SecondActivityのボタンを押すとfinish()が呼ばれFirstActivityに戻る。
各ActivityのメソッドでLogを表示。その内容は下記。


FirstActivity : onCreate
FirstActivity : onStart
FirstActivity : onResume
FirstActivity : onPause
SecondActivity: onCreate
SecondActivity: onStart
SecondActivity: onResume
FirstActivity : onStop
SecondActivity: onPause
FirstActivity : onRestart
FirstActivity : onStart
FirstActivity : onResume
SecondActivity: onStop
SecondActivity: onDestroy

Shift_jisのファイル名をUTF8にする。

Windowsの日本語ファイル名のドキュメントをLinux上で扱うと文字化けが起こる。
これはファイル名の文字コードWindowsではShift_jisLinuxではUTF-8であることが原因。
化けた状態ではmvコマンドではファイル名を変更すらできないので、convmvをインストールする。

https://www.j3e.de/linux/convmv/
上記URLからダウンロードして解凍する。


# cd /your/dirctry/
# ls
convmv-1.15.tar.gz

//解凍する
# tar xvf convmv-1.15.tar.gz

//解凍フォルダに移動後、make installする。
# cd convmv-1.15
# make install

//確認
# convmv --help
Your Perl version has fleas #22111 #37757 #49830
convmv 1.15 - converts filenames from one encoding to another
Copyright (C) 2003-2011 Bjoern JACKE
.......(略

使い方


$ cd /sjis/folder/
$ ls
?????????????????????.jpg ??????.gif

//普通にコマンドを打つと変換してくれる詐欺、実際には変換していない。
//(とりあえずどのように変換されるかを表示してくれる
//ディレクトリ内のShift_jisファイル名をUTF-8に変換するには下記のコマンド
$ convmv -f sjis -t utf8 *
Starting a dry run without changes...
mv "./?????????????????????.jpg" "./光翼型近接支援残酷戦闘機エヴァカニア・ドゥーム.jpg"
mv "./??????.gif" "./炊飯器.gif"
No changes to your files done. Use --notest to finally rename the files.

//--notestオプションをつけると変換してくれます。
$ convmv --notest -f sjis -t utf8 *
mv "./?????????????????????.jpg" "./光翼型近接支援残酷戦闘機エヴァカニア・ドゥーム.jpg"
mv "./??????.gif" "./炊飯器.gif"
Ready!
$ ls
光翼型近接支援残酷戦闘機エヴァカニア・ドゥーム.jpg 炊飯器.gif

alternativesでjavaを選ぶ。

Fedora14にtomcat6をyumで突っ込むと、openJDKが依存で入る。sun-javaで動かしたい時はopenJDKを個別に単体でアンインストールした後にsun-javaを入れれば問題ないが、alternativesという管理方法のリストに追加して、alternavites越しに操作した方が自分的には美しく感じたのでやってみた。


# alternatives --display java
java -ステータスは自動です。
リンクは現在 /usr/lib/jvm/jre-1.6.0-openjdk/bin/java を指しています。
/usr/lib/jvm/jre-1.6.0-openjdk/bin/java - 優先項目 16000
スレーブ javaws: /usr/lib/jvm/jre-1.6.0-openjdk/bin/javaws
(中略)
スレーブ unpack200.1.gz: /usr/share/man/man1/unpack200-java-1.6.0-openjdk.1.gz
/usr/lib/jvm/jre-1.5.0-gcj/bin/java - 優先項目 1500
スレーブ javaws: (null)
(中略)
スレーブ unpack200.1.gz: (null)
現在の「最適」バージョンは /usr/lib/jvm/jre-1.6.0-openjdk/bin/java です。
openJDKとgcjが登録されてる。sun-javaは既にインストール済み(/usr/java/jdk〜)。
alternativesにsun-javaを追加する。

# update-alternatives --install /usr/bin/java java /usr/java/jdk1.6.0_24/bin/java 16001
構文 : update-alternatives --install 実行パス(which javaで出る先) グループ名(javaコマンドの候補群) プログラムパス(インストール先の実行ファイル) 優先度(数字が大きいと優先される)
openJDKの優先度が16000だったので16001で追加してみた。再びチェック。

# alternatives --display javajava -ステータスは自動です。
リンクは現在 /usr/java/jdk1.6.0_24/bin/java を指しています。
/usr/lib/jvm/jre-1.6.0-openjdk/bin/java - 優先項目 16000
スレーブ javaws: /usr/lib/jvm/jre-1.6.0-openjdk/bin/javaws
(中略)
スレーブ unpack200.1.gz: /usr/share/man/man1/unpack200-java-1.6.0-openjdk.1.gz
/usr/lib/jvm/jre-1.5.0-gcj/bin/java - 優先項目 1500
スレーブ javaws: (null)
(中略)
スレーブ unpack200.1.gz: (null)
/usr/java/jdk1.6.0_24/bin/java - 優先項目 16001
スレーブ javaws: (null)
(中略)
スレーブ unpack200.1.gz: (null)
現在の「最適」バージョンは /usr/java/jdk1.6.0_24/bin/java です。
[root@localhost java]# java -version
java version "1.6.0_24"
Java(TM) SE Runtime Environment (build 1.6.0_24-b07)
Java HotSpot(TM) Server VM (build 19.1-b02, mixed mode)
設定できてるみたいですね。