Mac OS에서 기본 한글 입력기 + Karabiner-Elements 이용 한글 입력 설정법

Mac OS X 10.13의 기본 한글입력기를 더 편리하게 사용하려고 Karabiner-Elements를 설치한 후 설정을 만들어 보았습니다. 원래 Karabiner라는 프로그램을 사용하여 잘 쓰고 있었는데 Mac OS 버젼이 올라가면서 이 프로그램은 더 이상 지원되지 않았고 대체하는 새 프로그램인 Karabiner-Elements가 처음에는 기능이 약하여 쓸 수 없었는데 이제 원하는 것이 대충 되는 것 같습니다.

아래와 같이 설정하면 다음 기능을 사용할 수 있습니다.

기능

  • Shift-Space로 한영 전환. 단, 자체 한글 입력 기능이 있는 Aquamacs와 Vmware Fusion에서는 Shift-Space 한영 전환을 막는다. (수정하면 VirtualBox, Parallels 등 자체 한글입력기능이 있는 프로그램에서 Shift-Space가 먹지 않도록 할 수 있습니다.)
  • 한글 모드에서 Ctrl키를 누르면 일시적으로 영문으로 전환되도록 하여서 한글 모드에서도 Ctrl-A과 같은 단축기를 누를 수 있게 한다. (Mac OS에서는 기본 한글입력기에서 Ctrl-A를 누르면 Ctrl-ㅁ으로 인식하여 아무 일도 일어나지 않습니다.)
  • Aquamacs와 VMWare Fusion에서는 한글 모드에서 Shift-Space를 누르면 영문으로 전환해준다. 그 외에는 자체 한글입력기능이 동작하도록 아무 것도 하지 않는다. 2018년 8월에 추가된 기능입니다. 이렇게 하는 이유는 간혹 한글 모드에서 Aquamacs로 들어간 경우 영어로 다시 전환되지 않아서 불편했기 때문입니다.

아래 설정에서는 한글 전환키가 Mac OS 기본인 Shift-Ctrl-Space가 한글전환키라고 가정한 것입니다.

설치방법: 아래 내용을 ~/.config/karabiner/assets/complex_modifications에 myfile.json이라는 식으로 json 확장자로 넣은 후 Karabiner-Elements 설정 화면에서 “Complex Modifications” 탭에서 Add rule을 눌러 세 가지 설정(Change shift space to shift+control+space, Make control key work in Korean mode, Make shift-space to make English mode in Aquamacs or VMWare)을 모두 선택하여 넣으면 됩니다.

{
    "title": "For Korean PC Keyboard (Sang-il)",
    "rules": [
	{
            "description": "Change shift space to shift+control+space",
            "manipulators": [
		{
		    "from": {
			"key_code": "spacebar",
			"modifiers": {
			    "mandatory": [
				"shift"
			    ]
			}
		    },
		    "conditions": [
			{
			    "type": "frontmost_application_unless",
			    "bundle_identifiers": [
				"^org\\.gnu\\.Aquamacs$",
				"^com\\.vmware\\.fusion$"
			    ]
			}
		    ],
		    "to": [
			{
			    "key_code": "spacebar",
			    "modifiers": [
				"right_control", "right_shift"
			    ]
			}
		    ],
		    "type": "basic"
		}
	    ]
	},
{
        "description": "Make shift-space to make English mode in Aquamacs or VMWare",
        "manipulators": [
    {
        "from": {
        "key_code": "spacebar",
        "modifiers": {
            "mandatory": [
            "shift"
            ]
        }
        },
        "conditions": [
        {
            "type": "frontmost_application_if",
            "bundle_identifiers": [
            "^org\\.gnu\\.Aquamacs$",
            "^com\\.vmware\\.fusion$"
            ]
        },
        {
            "type": "input_source_if",
            "input_sources": [
            {
                "language": "^ko$",
                "input_source_id": "^com\\.apple\\.inputmethod\\.Korean\\.2SetKorean$"
            }
            ]
        }
        ],
"to": [ { "select_input_source": { "language": "^en$" } } ], "type": "basic" } ] },
{ "description": "Make control key work in Korean mode", "manipulators": [ { "from": { "key_code": "left_control", "modifiers": { "optional": ["any"] } }, "conditions": [ { "type": "input_source_if", "input_sources": [ { "language": "^ko$", "input_source_id": "^com\\.apple\\.inputmethod\\.Korean\\.2SetKorean$" } ] } ], "to": [ { "select_input_source": { "language": "^en$" } }, { "key_code":"left_control" } ], "to_after_key_up": [ { "select_input_source": { "language": "^ko$" } } ], "type": "basic" } ] } ] }


3 thoughts on “Mac OS에서 기본 한글 입력기 + Karabiner-Elements 이용 한글 입력 설정법”

  1. 엄상일 교수님께서 올리신 코드를 약간 수정해서 emacs, parallels에서 shift+space로 한영전환을 쉽게 하고 있습니다.
    저는 VMWare Fusion 대신에 Parallels Desktop을 쓰고 있는데요, shift+space가 잘 먹히다가도 coherence mode에 진입하면 잘 안 되는 문제가 있습니다.
    Parallels Desktop의 coherence mode는 Vmware Fusion에서는 Unity 모드에 해당되는 것인데요..
    교수님의 코드는 Vmware의 unity 모드에서도 별 문제없이 작동하는지요?
    감사합니다.

    1. 저는 Unity 모드를 거의 안 써서 잘 모르겠어요.
      코드를 보면 중간에 com.\\vmware\\.fusion이라고 나오는 부분이 있는데요,
      그걸 Parallels에 해당하는 것으로 변경하시면 Parallels에서도 사용해보실 수 있을 것 같네요.
      댓글을 보니 이미 그렇게 하시는 것 같기도 하구요.

  2. Parallels의 coherence mode에서 한영전환 문제에 대한 해결책을 찾았네요.
    bundle_identifier 부분에 다음 한줄을 추가하면 됩니다.
    “^com.parallels.winapp[[:graph:]]*$”
    아마 vmware 도 비슷한 방법으로 해결할 수 있을 것 같습니다.

Leave a Reply

Your email address will not be published. Required fields are marked *