私の環境は、英語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毎に変換モードを維持してもらいたい。
この他のkey board short cutはここにある) http://matome.replore.com/index.php?title=Mac%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88
ところが、Controlは、101, 106キーボードでは押しにくい位置にある。一方、ほとんど使わないCaps Lockが一番いい位置にある。なので、Caps LockもControlに割り付ける。これは、一番最初のスクリーンショットにもあるとおり、標準設定でやれる。
しかし、これでも問題が残る。左小指でControlを押すので、^G, ^Bが押しにくいのである。
しかし、これでも問題が残る。左小指で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おそらくは、上記URLに従い、/System/Library/Extensions/IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle/Contents/Info.plistを編集し、| | | | | {
| | | | | "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
| | | | | }
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レイアウトファイルの置き場所は三つのうちいずれか。
- /Library/Keyboard Layouts (available to all users on the machine)
- ~/Library/Keyboard Layouts (available to the user only)
- /Network/Library/Keyboard Layouts (available to all users on the network)
まずは1にする。
- Ukuleleを起動
- インストールセットにあった、System Keyboards/Roman/U.S..keylayout を開く
- このviewで、キーを押すと何が、反応するか見える
と、ここまでやって断念。
以上
以上