karakaram-blog

WindowsのCapsLockにCtrlを割り当て、キーバインドをMac風にする

 ツイート 10  シェア 1  Google+1 0  Hatena 14

keyboard-mac

この記事では、WindowsでMac風のcontorlキーバインドを再現する方法を紹介します。

前回の記事では、無変換、変換キーでWindowsのIMEを操作する方法を紹介しました。

今回は、Macのcontrolキーのショートカット(control+nでカーソルを下に移動など)を再現する方法を紹介します。前回の修正と組み合わせると、キーボードの入力環境はある程度Macぽくなります。

本記事で再現するキーボードショートカット一覧は下記です。

CapsLock + n : 下
CapsLock + p : 上
CapsLock + f : 右
CapsLock + b : 左
CapsLock + a : Home
CapsLock + e : End
CapsLock + v : PageDown
CapsLock + h : BackSpace
CapsLock + d : Delete
CapsLock + o : Enter
CapsLock + k : カーソルから行末まで削除

CapsLockキーにCtrlキーを割り当て、Macと同じ感覚でcontrolキーのショートカットを利用できるようにします。

gvimやemacsなど、上記のキーショートカットが機能しては困る環境がある場合は、アプリケーション単位で上記のキーバインドを無効にする方法も紹介します。

右下、左下にあるCtrlキーは、CapsLockと入れ替えても良かったのですが、長年染み付いたコピペの操作ができなくなるのが不便だったのと、他の人がキーボードを触ったりすることもあるので残しました。

目次

  1. 使用するアプリケーション
  2. KeySwapを利用してキーの割り当てを変更
  3. AutoHotKeyでキーの割り当てを変更

使用するアプリケーション

  • KeySwap for XP
  • AutoHotKey_L

KeySwap for XP

KeySwap for XPは、キーの割り当てを変更することができるフリーソフトです。

主にCapsLockキーにCtrlキーを割り当てる目的で使用します。レジストリを書き換えるため、幅広いアプリケーションでキー割り当てが有効になります。

下記からダウンロードできます。
http://www.vector.co.jp/soft/winnt/util/se228667.html

AutoHotKey_L

AutoHotKey_Lは、スクリプトを書くことで入力環境を自由にカスタマイズすることができるフリーソフトです。

主にCtrlキーにショートカットを割り当てる目的で使用します。OS上で動作するため、一部のアプリケーションにおいてはキー割り当てが機能しません。常駐型のアプリケーションですが、7年前に購入したWindowsXPマシンで使用しても不自由は感じません。

下記からダウンロードできます。
https://autohotkey.com

上記2つのソフトをダウンロードしてインストールしてください。インストール時の選択はデフォルトで構いません。

KeySwapを利用してキーの割り当てを変更

KeySwapを起動して、下記のようにキー割り当てを変更します。

keyswap
クリックで拡大表示します。

  1. CapsLock:左Ctrl
  2. 左Ctrl:右Ctrl
  3. かな:右Alt
  4. 右Alt:CapsLock

設定が完了したら「終了」ボタンをクリックして設定を反映し、Windowsを再起動してください。元の設定に戻したい場合は「設定を全て削除」して再起動すればOKです。

以下は設定の解説です。

CapsLockキーに左Ctrlキーを割り当て

Macのcontrolキーと同じ位置にCtrlキーが来ることになります。Vimやemacsの環境が快適になります。

左Ctrlキーに右Ctrlキーを割り当て

CapsLockに割り当てられている左Ctrlキーには、後ほどAutoHotKeyを使用してMacのcontrolキーショートカットを割り当てます。分かりづらいですが、このように設定することで左下にあるCtrlキーは今まで通りCtrlキーとして動作させることができます。

かなキーに右Altキーを割り当て

かなキーに右Altキーを割り当てて親指でAltを押せるようにします。かなキーは捨てます。

右AltキーにCapsLockキーを割り当て

CapsLockの機能を持つキーがなくなってしまうのは不便ですので、右Altキーに割り当てます。

AutoHotKeyでキーの割り当てを変更

任意の場所にmac.ahkというファイルを作成し、後述のスクリプトを貼りつけて保存します。

保存したらmac.ahkを右クリック、compile scriptを選択してスクリプトをコンパイルします。

mac.exeが作成されたらダブルクリックして起動します。mac.exeアイコンがタスクトレイに常駐すればOKです。

mac.exeがタスクトレイに常駐したら、CapsLock + n キーなどを押して動作確認を行ないます。

mac.exeをスタートアッププログラムに登録しておくと便利です。終了したいときはタスクトレイのmac.exeアイコンを右クリックして終了します。

mac.ahkの中身は下記の通り。

;================================================================
;auto hot key script for windows
;mac風キーバインド
;================================================================

#InstallKeybdHook
#UseHook

;================================================================
;関数
;================================================================

;----------------------------------------------------------------
;キーバインドを無効にするウィンドウかどうか判断する
; ahk_classはauto hot key付属のAU3_Spy.exeを使用して調べる。
;  引数 なし
;  戻り値 1:キーバインドを無効にするウィンドウ
;         0:キーバインドを有効にするウィンドウ
;----------------------------------------------------------------
is_disable_window()
{
	;gvim
	IfWinActive,ahk_class Vim
	{
		return 1
	}
	;tera term
	IfWinActive,ahk_class VTWin32
	{
		return 1
	}
	;vmware player
	IfWinActive,ahk_class VMPlayerFrame
	{
		return 1
	}
	return 0
}

;----------------------------------------------------------------
;キーを送信する
; キーバインドを無効にするウィンドウでは、送信されたキーをそのまま使用する
; キーバインドを有効にするウィンドウでは、送信されたキーを置き換える
;
;  引数 original_key:キーバインドを無効にするウィンドウの場合、送信するキー
;       replace_key:キーバインドを有効にするウィンドウの場合、送信するキー
;  戻り値 なし
;----------------------------------------------------------------
send_key(original_key,replace_key)
{
	if (is_disable_window())
	{
		Send,%original_key%
		return
	}
	Send,%replace_key%
	return
}

;================================================================
;ctrlキーバインド
;================================================================

;----------------------------------------------------------------
;移動系(shiftキーとの同時押し対応)
;ctrl + n : 下
;ctrl + p : 上
;ctrl + f : 右
;ctrl + b : 左
;ctrl + a : Home
;ctrl + e : End
;----------------------------------------------------------------

<^n::send_key("^n","{Down}")
<^+n::send_key("^+n","+{Down}")
<^p::send_key("^p","{Up}")
<^+p::send_key("^+p","+{Up}")
<^f::send_key("^f","{Right}")
<^+f::send_key("^+f","+{Right}")
<^b::send_key("^b","{Left}")
<^+b::send_key("^+b","+{Left}")
<^a::send_key("^a","{Home}")
<^+a::send_key("^+a","+{Home}")
<^e::send_key("^e","{End}")
<^+e::send_key("^+e","+{End}")

;----------------------------------------------------------------
;編集系
;ctrl + h : BackSpace
;ctrl + d : Delete
;ctrl + m : Enter
;ctrl + k : カーソルから行末まで削除
;----------------------------------------------------------------

<^h::send_key("^h","{BS}")
<^d::send_key("^d","{Del}")
<^m::send_key("^m","{Return}")
<^k::send_key("^k","+{End}{Del}")
 ツイート 10  シェア 1  Google+1 0  Hatena 14