はじめに

macOS上では、emacsのキーバインドが一部利用できて便利です。このキーバインドは大抵のテキストエデットアプリには、対応しているのですが、MicrosoftのOffice系アプリでは、これを使うことができません。うっかり慣れで、Ctrl+Hなどを押してしまうと、他の機能が動いてしまいます。

OfficeでEmacs

macOSで、キーバインドのカスタマイズを行おうと思った際にkarabiner-elementsというアプリが有名です。これを使ってOfficeでemacsを利用できるようにしていきます。
設定は、~/.config/karabiner/assets/complex_modifications/xxxxxx.json(xは数字)にファイルを作成し、以下のように記述します。尚この設定は、Ctrl+H,B,N,P,E,A,Dをサポートしていますが必要に応じて書き換えてください。

  1{
  2	"title": "MS-Office de Emacs key",
  3	"rules": [
  4		{
  5			"description": "MS-Office de Emacs key",
  6			"manipulators": [
  7				{
  8					"type": "basic",
  9					"from": {
 10						"key_code": "b",
 11						"modifiers": {
 12							"mandatory": [
 13								"control"
 14							]
 15						}
 16					},
 17					"to": [
 18						{
 19							"key_code": "left_arrow"
 20						}
 21					],
 22					"conditions": [
 23						{
 24							"type": "frontmost_application_if",
 25							"bundle_identifiers": [
 26								"^com\\.microsoft\\.Word$",
 27								"^com\\.microsoft\\.Excel$",
 28								"^com\\.microsoft\\.Powerpoint$"
 29							]
 30						}
 31					]
 32				},
 33				{
 34					"type": "basic",
 35					"from": {
 36						"key_code": "f",
 37						"modifiers": {
 38							"mandatory": [
 39								"control"
 40							]
 41						}
 42					},
 43					"to": [
 44						{
 45							"key_code": "right_arrow"
 46						}
 47					],
 48					"conditions": [
 49						{
 50							"type": "frontmost_application_if",
 51							"bundle_identifiers": [
 52								"^com\\.microsoft\\.Word$",
 53								"^com\\.microsoft\\.Excel$",
 54								"^com\\.microsoft\\.Powerpoint$"
 55							]
 56						}
 57					]
 58				},
 59				{
 60					"type": "basic",
 61					"from": {
 62						"key_code": "p",
 63						"modifiers": {
 64							"mandatory": [
 65								"control"
 66							]
 67						}
 68					},
 69					"to": [
 70						{
 71							"key_code": "up_arrow"
 72						}
 73					],
 74					"conditions": [
 75						{
 76							"type": "frontmost_application_if",
 77							"bundle_identifiers": [
 78								"^com\\.microsoft\\.Word$",
 79								"^com\\.microsoft\\.Excel$",
 80								"^com\\.microsoft\\.Powerpoint$"
 81							]
 82						}
 83					]
 84				},
 85				{
 86					"type": "basic",
 87					"from": {
 88						"key_code": "n",
 89						"modifiers": {
 90							"mandatory": [
 91								"control"
 92							]
 93						}
 94					},
 95					"to": [
 96						{
 97							"key_code": "down_arrow"
 98						}
 99					],
100					"conditions": [
101						{
102							"type": "frontmost_application_if",
103							"bundle_identifiers": [
104								"^com\\.microsoft\\.Word$",
105								"^com\\.microsoft\\.Excel$",
106								"^com\\.microsoft\\.Powerpoint$"
107							]
108						}
109					]
110				},
111				{
112					"type": "basic",
113					"from": {
114						"key_code": "a",
115						"modifiers": {
116							"mandatory": [
117								"control"
118							]
119						}
120					},
121					"to": [
122						{
123							"key_code": "home"
124						}
125					],
126					"conditions": [
127						{
128							"type": "frontmost_application_if",
129							"bundle_identifiers": [
130								"^com\\.microsoft\\.Word$",
131								"^com\\.microsoft\\.Excel$",
132								"^com\\.microsoft\\.Powerpoint$"
133							]
134						}
135					]
136				},
137				{
138					"type": "basic",
139					"from": {
140						"key_code": "e",
141						"modifiers": {
142							"mandatory": [
143								"control"
144							]
145						}
146					},
147					"to": [
148						{
149							"key_code": "end"
150						}
151					],
152					"conditions": [
153						{
154							"type": "frontmost_application_if",
155							"bundle_identifiers": [
156								"^com\\.microsoft\\.Word$",
157								"^com\\.microsoft\\.Excel$",
158								"^com\\.microsoft\\.Powerpoint$"
159							]
160						}
161					]
162				},
163				{
164					"type": "basic",
165					"from": {
166						"key_code": "h",
167						"modifiers": {
168							"mandatory": [
169								"control"
170							]
171						}
172					},
173					"to": [
174						{
175							"key_code": "delete_or_backspace"
176						}
177					],
178					"conditions": [
179						{
180							"type": "frontmost_application_if",
181							"bundle_identifiers": [
182								"^com\\.microsoft\\.Word$",
183								"^com\\.microsoft\\.Excel$",
184								"^com\\.microsoft\\.Powerpoint$"
185							]
186						}
187					]
188				},
189				{
190					"type": "basic",
191					"from": {
192						"key_code": "d",
193						"modifiers": {
194							"mandatory": [
195								"control"
196							]
197						}
198					},
199					"to": [
200						{
201							"key_code": "delete_forward"
202						}
203					],
204					"conditions": [
205						{
206							"type": "frontmost_application_if",
207							"bundle_identifiers": [
208								"^com\\.microsoft\\.Word$",
209								"^com\\.microsoft\\.Excel$",
210								"^com\\.microsoft\\.Powerpoint$"
211							]
212						}
213					]
214				}
215			]
216		}
217	]
218}