You can read this blog in any language using google translate as follows:

Goto http://translate.google.com/
Paste URL in the box and select "Japanese for From Language" and "To Language". Then click "Translate".

English translated pages are here:
http://bit.ly/xPuXoy

你可以閱讀這個博客,在任何使用“Google”的語言翻譯

本ブログのアクセス統計: 60万アクセスを達成しました。ご訪問ありがとうございました。

60万アクセスまでの経過

2009年12月に始めた本blog。2011年7月ごろに10万アクセスを達成し、2011年12月13日には15万アクセスを達成。
その後、私も更新しておらず、アクセスは少し減りましたが、3月1日には18万アクセス。2012/4/18に20万アクセス、2012/8/21に25万アクセス、2013/1/18に30万アクセス、2013/12/17に40万アクセスを達成しました。しばらく見ていなかったら、2015/5/1に50万2584アクセスになっていました。またまた、しばらく更新しないうちに、2017/6/11に60万7197アクセスになっていました。久しぶりに更新します。

2011年10月28日金曜日

Mac でkey layoutを変える

Macは、キーボード毎に配列を指定できる。システムメニューの設定→Keyboardから、Modifier Keys ボタンを押せばcontrolとcapslockの入れ替え等はできる。

私の環境は、英語101キーボードで、自宅では、Microsoft Natural Keyboard Eliteというエルゴノミックキーボードを導入している。AltがOption,に、よく使うCmdがWindowsキーと、本体キーボードと反対に割り付けられていて使いにくい。が、これもこのメニューから変更できる。(windowsでは、ツールの導入が必要になるし、キーボード毎のmodifierの指定はやりにくい。)

(以下)




もうすこし複雑な入れ替えもできる)

以下のサイトの情報に従い。

http://hints.macworld.com/article.php?story=20110113215328810

一番簡単なdouble commandというツールを用いた。

http://doublecommand.sourceforge.net/

これをインストールすると、Appleマークから出るSystem Preference (システム設定)
に、以下のようにdouble commandというメニューが現れる。

これを起動し、Active SettingsのEditボタンを押し、
Command Key act as Option Key

   Option Key act as Command Key
の両方にチェックをいれ、Activeをクリックする。
おそらくはSystemもクリックしたほうがいいのではないかと思う。
 これでも、OptionとCommandキーの位置の入れ替えになることを確認した。
別に、先の方法でやればいいのだが。

このツールを使うと右EnterをControlキーに割り付けられる。本来Enterは、Control-Mとして入力できる。Terminalではそうなっている。back spaceはControl-Hなど。ということなので、頻繁に使うのはControlキー(以下^で示す)であり。Enterをこの機能に置き換えるのは便利。
ちなみにMacでは、emacsのキーバインディングである以下が標準的に使える。

  • 右進む : ^F
  • 左進む : ^B
  • 上進む : ^P
  • 下進む : ^N
  • バックスペース: ^H
  • 行先頭に戻る: ^A
  • 行末に進む: ^E
  • カーソル位置から行末までCut: ^K
  • ペースト: ^Y
  • 半ページ下スクロール: ^V
  • キャンセル:  ^G
  • Enter: ^M
  • 私は、ATOKを使っており、仮名モードのon/offを^Jに割り付けている
    これは、ATOKメニューから「キー・ローマ字カスタマイザ」を起動し、キー設定で、英字入力のon/offを^Jにすれば良い。(以下スクリーンショット参照)

    • ただし、xterm, Terminalは、bashが^Jを食ってしまうように思う。~/.inputrcを設定してもうまくいかない。.inputrcの設定は以下など:  http://superuser.com/questions/269464/understanding-control-characters-in-inputrc

      keyboardの^J入力をterminalのレベルでATOKに送っていないのかもしれない。ATOK標準のControl-Shift-Cが英語モード、Control-Shift-Zが仮名モードの切り替えには使えるが面倒である。さらには、別windowで仮名モードにした状態で、xterm, Terminalに入ると、仮名になっている。これは使いにくい。本来は、window毎に変換モードを維持してもらいたい。

ところが、Controlは、101, 106キーボードでは押しにくい位置にある。一方、ほとんど使わないCaps Lockが一番いい位置にある。なので、Caps LockもControlに割り付ける。これは、一番最初のスクリーンショットにもあるとおり、標準設定でやれる。

しかし、これでも問題が残る。左小指でControlを押すので、^G, ^Bが押しにくいのである。
強引なやり方は、EnterもControlに割り付ける方法。これは、上記double commandでやれる。ただし、これに慣れると、他人のキーボードが打てない。他人が自分のキーボードを打とうとすると混乱するなどの問題が起きる。

また、MacのTerminalでは^Mをリターンとして認識するが、通常プログラムでは認識しないものが多い。これは、末尾に書いたUkuleleを用いてkeymapを編集すればできると思う。

設定ファイルの変更でもやれると思う)
が面倒なので途中まででやめた。

XMLファイルでマッピングを指定してやればいいらしい。キーボード毎の指定になっているのかは、未確認である。

http://hints.macworld.com/article.php?story=20110529094802391

- ターミナルウィンドウを立ち上げる
   ioreg -l | less
 と打つ。

私の場合、ちゃんとMicrosoft Natural Keyboard Elite が認識されており、上記コマンドで以下のように表示される。
 | |   |   +-o Microsoft Natural Keyboard Elite@fa131000      | |   |   | | {
    | |   |   | |   "sessionID" = 122321377430514
    | |   |   | |   "iManufacturer" = 0
    | |   |   | |   "bNumConfigurations" = 1
    | |   |   | |   "idProduct" = 11
    | |   |   | |   "bcdDevice" = 256
    | |   |   | |   "Bus Power Available" = 250
    | |   |   | |   "bMaxPacketSize0" = 8
    | |   |   | |   "USB Product Name" = "Microsoft Natural Keyboard Elite"
    | |   |   | |   "iProduct" = 1
    | |   |   | |   "iSerialNumber" = 0
    | |   |   | |   "USB Address" = 8
    | |   |   | |   "bDeviceClass" = 0
    | |   |   | |   "locationID" = 18446744073610137600
    | |   |   | |   "bDeviceSubClass" = 0
    | |   |   | |   "IOUserClientClass" = "IOUSBDeviceUserClientV2"
    | |   |   | |   "PortNum" = 1
    | |   |   | |   "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
    | |   |   | |   "bDeviceProtocol" = 0
    | |   |   | |   "Device Speed" = 0
    | |   |   | |   "idVendor" = 1118
    | |   |   | |   "Requested Power" = 50
    | |   |   | |   "IOGeneralInterest" = "IOCommand is not serializable"
    | |   |   | |   "Low Power Displayed" = No
    | |   |   | | }
おそらくは、上記URLに従い、/System/Library/Extensions/IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle/Contents/Info.plistを編集し、

 
 IOKitPersonalities
 のところに、
                        Swap command and alt
                        1
....

をいれれば良いと思う。が、キーボード毎に変わるのかは不明。

Ukeleleによる方法)
Ukelele 2.1.8をダウンロードし、これを使おうとしたが、これは通常キートップで入力されるキーの指定はできるが、modifierキー同士の変更できない模様。(以下)

フリーのキーマップエディタ Ukelele もここにある。
http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=ukelele

keyboardレイアウトファイルの置き場所は三つのうちいずれか。
  1. /Library/Keyboard Layouts (available to all users on the machine)
  2. ~/Library/Keyboard Layouts (available to the user only)
  3. /Network/Library/Keyboard Layouts (available to all users on the network)

まずは1にする。
  1. Ukuleleを起動
  2. インストールセットにあった、System Keyboards/Roman/U.S..keylayout を開く
  3. このviewで、キーを押すと何が、反応するか見える
と、ここまでやって断念。

以上
blog comments powered by Disqus