Windows & Linux Tips

Windows や Linux のTipsを集めています。 結構ちまちまとしたネタが多いのですが、 だからといって別々の章立てをするほどでもないので。

  1. WindowsNT4.0, 2000, XP で Ctrl と Caps を入れ替える方法
  2. BeOS の後継は Zeta
  3. Canna を FreeWnnにする方法
  4. Flash Player for Linux
  5. TortoiseSVN

WindowsNT4.0, 2000, XP で Ctrl と Caps を入れ替える方法


 IBM の 101 並びに 106 キーボードは、 何をトチ狂ったのか Caps Lock キーが A の左に、 Ctrl キーがその2つ下、 SHIFT キーの更に下側に存在します。

 このキー配置は恐ろしく使いづらく、 特に emacs や vi など、 unix 系のツールを多用する人間にとって、 この配置は作業効率を 120% ほど低下させる要因となっています。

 FreeBSD の場合、system keymap を差し換えて、 Caps と Ctrl を切り替えることができます。
/usr/share/syscons/keymaps/
に jp.106.kbd と jp.106x.kbd という例(106x の方がキーを入れ替えたもの)が ありますので、 これを参考にすればやり方は判ります。

 Windows95/98 の場合、 Wnn95 や Wnn98 をインストールしてかな漢字変換の環境を改善しているのですが、 ここで Caps と Ctrl の入れ替え指示もできます。

 しかし残念なことに、Windows NT 4.0 の場合、 Wnn では Caps と Ctrl を入れ替えることができません。 そこで、何らかの別の方法をとる必要があります。

 実際、選択肢はいくつもあります。

 HappyHackingKeyboard を使うなど、 キーボードレベルでキーバインドを置き換えてしまうものや、 あるいは 101 や 106 キーボードのクローンで 外部のスイッチで Caps, Ctrl を入れ替えられるようにできているもののように、 ハードウェアレベルで対応してしまう、というのも手です。

 Hook Driver を書いたり、 キーボード処理を司っている dll にパッチを当てる、 という方法もあるようです。

 ここでは、レジストリを弄って、 dll にパッチを当てるのと同じ効果を得る方法について述べます。 ここにある例などは、全て 情報源 からとったものですので、 オリジナルはそちらにあります

 用意するものは、 とりあえず regedit です。 これは 通常 c:\WinNT\ の下に置いてありますので、 その事実さえ知っていれば何ら問題ないでしょう。 知らなかった?今判ったよね?

  regedit を使い、以下のレジストリキーを新規作成します。

   HKEY_LOCAL_MACHINE
     \System
       \CurrentControlSet
         \Control
           \KeyBoard Layout
             \Scancode Map
  

 Scancode Map の値の型はバイナリにします。

 このバイナリは本来次のようなフォーマットの バイナリ列を表しています。

  DWORD:  0x00000000		ヘッダ
  DWORD:  0x00000000		ヘッダ
  DWORD:  		末尾NULL も含めた続くDWORD の個数
  DWORD:  Mapping 1
  ....
  DWORD:  Mapping n
  DWORD:  0x00000000		末尾NULL
  

 マッピングは、 入力スキャンコードを(この DWORD にとっての)上位 2byte で、 出力スキャンコードを下位 2byte で示します。

 たとえば、CapsLock(0x3a) を左Ctrl(0x1d)とすり替える場合は、 0x003a001d という DWORD を Mapping として指定すれば良いことになります。 i386 の場合 little endian ですので、 バイナリ列全体では次のようになります。

  0000 0000 0000 0000 0200 0000 1d00 3a00 0000 0000
  

 空白は見易くするためのもので、 実際の入力としては必要ありません。

 もう一つの例として、左の Ctrl と Caps Lock を入れ替える場合には、 次のように設定します。

  0000 0000 0000 0000 0300 0000 1d00 3a00 3a00 1d00 0000 0000
  

 特定のキーを単に無効にしたいだけの場合は、 出力コードとして 0x0000 を指定すれば良いようです。

 レジストリを操作するには Administrator の権限が必要です。 設定した値は再起動した後に有効になります。 また、この設定は「ユーザー全員」に有効になります。 つまり、各ユーザーごとの設定を作ることはできません。

 Control, Alt, Delete の3つのキーの設定を変えるときには注意が必要です。 この3つのキー全てが存在しないと、 NT への Login 操作ができなくなります。 うかつにもこれをやってしまった場合は、 ネットワークにつながった他のホストから、 regedt32で接続し、 Scancode Map を削除すると良いでしょう。

なお、レジストリを書き換えるのは勇気がいるので.regファイルが欲しい、 という人(そりゃ私だ)のために、次のURLを見つけました。

http://www.redout.net/diary/2000/1227.html

BeOS の後継は Zeta

これは一行ネタ。 http://www.jpbe.net/ BeOSは yellowTABという団体が後継OSを作っているらしい。

Canna を FreeWnnにする方法

RHL における仮名漢字変換は Canna がデフォルトだが、 これは Wnn 派の私には著しく使いにくい。 世の中には同じことを考えている人がいるらしい。 http://www.superpokke.com/comp/canna_wnn.html に詳細がある。

Flash Player for Linux

世の中には腐ったページがあるもので、 Flash Player が標準で装備されていないと WebPageとして全く機能しないものがある。

というわけで、Linux 用の Flash は http://www.macromedia.com/jp/shockwave/download/alternates/ からダウンロード可能だ。

TortoiseSVN

SubVersion という Revision Controller がある。 CVS 以上にお気に入りだ。 若干ディスクを大量に食う所が不満だが、 まぁ、ディスクサイズはお金で解決できる範囲のリソースだし。

が、cygwin のコマンドライン版SubVersion は、 日本語対応が十分ではない。 UTF-8 で文字を与える必要があるのに、 SJISで日本語ディレクトリや 日本語ファイル名を処理してしまうのだ。

さらに困ったことに、SubVersion は一部の処理を絶対パスで行う。 commit の段になって初めて、 絶対パスに日本語が入っているために commit できない、 というのは本当に困る。

TortoiseSVN は、Windows Explorer (Internet Explorer ではなく、 フォルダの中身をウィンドウ内に表示してくれるプログラム)に 対する addon で、 右クリックで出てくるコマンド一覧の中に svn checkin だの commit だのを追加する形の svn client だ。

Explorer は最初からファイル名もパス名も Unicode で扱っているので、 svn server へ UTF-8 でこれらの文字を送りつけるのも問題ない。

make とかとの連動が悪い、 emacs との連動が悪い、という弱点はあるものの、 まぁ、許容範囲だろう。