~☆~ 우하하!!~ 개발블로그

[karabiner] PC Style 키보드 매핑 정의 내용 본문

macOS

[karabiner] PC Style 키보드 매핑 정의 내용

iwoohaha 2024. 10. 14. 08:59
728x90
반응형

윈도우 PC에서의 단축키(Control)에 익숙한 터라, macOS 를 사용하면서도 나도 모르게 해당 단축키를 누르고 있다.

그러나 기본적으로 macOS 는 Control 대신에 Command 키를 단축키에 사용하는 경우가 많고, 키보드에서 해당 키의 위치도 다르다.

따라서 키보드에서 가장 아래 왼쪽에 배치되어 있는 Control 키를 Command 키처럼 동작하도록 매핑하는 작업이 필요하다.

Karabiner(version 15.2.0, os:Sonoma 14.7, Mac mini M1 2020) 에서의 셋팅내용을 기록해두고자 한다.

Simple Modifications 의 항목에서 별도로 키 매핑은 전혀 하지 않았다.

For all devices 뿐만 아니라 아래 키보드 항목중 그 어떤 것도 키를 매핑하는 정의는 추가되어 있지 않다.

Complex Modifications 항목에서는 총 5개 항목을 등록하였다.

이 항목의 설정 내용은 아래와 같다. (~/.config/karabiner/karabiner.json)

{
    "profiles": [
        {
            "complex_modifications": {
                "parameters": {
                    "basic.to_delayed_action_delay_milliseconds": 100,
                    "basic.to_if_alone_timeout_milliseconds": 200,
                    "basic.to_if_held_down_threshold_milliseconds": 200
                },
                "rules": [
                    {
                        "description": "shift + 스페이스 를 사용하여 입력 소스 변경",
                        "manipulators": [
                            {
                                "conditions": [
                                    {
                                        "bundle_identifiers": [
                                            "^co\\.zeit\\.hyper$",
                                            "^co\\.zeit\\.hyperterm$",
                                            "^com\\.2X\\.Client\\.Mac$",
                                            "^com\\.apple\\.Terminal$",
                                            "^com\\.citrix\\.XenAppViewer$",
                                            "^com\\.itap-mobile\\.qmote$",
                                            "^com\\.microsoft\\.rdc$",
                                            "^com\\.microsoft\\.rdc\\.mac$",
                                            "^com\\.microsoft\\.rdc\\.macos$",
                                            "^com\\.microsoft\\.rdc\\.osx\\.beta$",
                                            "^com\\.nulana\\.remotixmac$",
                                            "^com\\.p5sys\\.jump\\.mac\\.viewer$",
                                            "^com\\.p5sys\\.jump\\.mac\\.viewer\\.web$",
                                            "^com\\.parallels\\.desktop$",
                                            "^com\\.parallels\\.desktop\\.console$",
                                            "^com\\.parallels\\.vm$",
                                            "^com\\.parallels\\.winapp\\.",
                                            "^com\\.teamviewer\\.TeamViewer$",
                                            "^com\\.thinomenon\\.RemoteDesktopConnection$",
                                            "^com\\.vmware\\.fusion$",
                                            "^com\\.vmware\\.horizon$",
                                            "^com\\.vmware\\.proxyApp\\.",
                                            "^com\\.vmware\\.view$",
                                            "^io\\.alacritty$",
                                            "^net\\.kovidgoyal\\.kitty$",
                                            "^net\\.sf\\.cord$",
                                            "^org\\.virtualbox\\.app\\.VirtualBoxVM$"
                                        ],
                                        "type": "frontmost_application_unless"
                                    }
                                ],
                                "from": {
                                    "key_code": "spacebar",
                                    "modifiers": { "mandatory": ["left_shift"] }
                                },
                                "to": [
                                    {
                                        "key_code": "spacebar",
                                        "modifiers": ["left_command"]
                                    }
                                ],
                                "type": "basic"
                            }
                        ]
                    },
                    {
                        "description": "Ctrl+End, Ctrl+Shift+End => Cmd+down arrow, Cmd+Shift+down arrow (Move cursor to end of file with and without selection)",
                        "manipulators": [
                            {
                                "conditions": [
                                    {
                                        "bundle_identifiers": [
                                            "^org\\.macports\\.X11$",
                                            "^com\\.apple\\.Terminal$",
                                            "^com\\.googlecode\\.iterm2$",
                                            "^co\\.zeit\\.hyper$",
                                            "^org\\.virtualbox\\.app\\.VirtualBoxVM$",
                                            "^com\\.microsoft\\.rdc\\.macos$",
                                            "^tv\\.parsec\\.www$"
                                        ],
                                        "type": "frontmost_application_unless"
                                    }
                                ],
                                "from": {
                                    "key_code": "end",
                                    "modifiers": {
                                        "mandatory": ["command"],
                                        "optional": ["shift"]
                                    }
                                },
                                "to": [
                                    {
                                        "key_code": "down_arrow",
                                        "modifiers": ["command"]
                                    }
                                ],
                                "type": "basic"
                            }
                        ]
                    },
                    {
                        "description": "Ctrl+Home, Ctrl+Shift+Home => Cmd+Up arrow, Cmd+Shift+Up arrow (Move cursor to beginning of file with and without selection)",
                        "manipulators": [
                            {
                                "conditions": [
                                    {
                                        "bundle_identifiers": [
                                            "^org\\.macports\\.X11$",
                                            "^com\\.apple\\.Terminal$",
                                            "^com\\.googlecode\\.iterm2$",
                                            "^co\\.zeit\\.hyper$",
                                            "^org\\.virtualbox\\.app\\.VirtualBoxVM$",
                                            "^com\\.microsoft\\.rdc\\.macos$",
                                            "^tv\\.parsec\\.www$"
                                        ],
                                        "type": "frontmost_application_unless"
                                    }
                                ],
                                "from": {
                                    "key_code": "home",
                                    "modifiers": {
                                        "mandatory": ["command"],
                                        "optional": ["shift"]
                                    }
                                },
                                "to": [
                                    {
                                        "key_code": "up_arrow",
                                        "modifiers": ["command"]
                                    }
                                ],
                                "type": "basic"
                            }
                        ]
                    },
                    {
                        "description": "End key to the end of the line (Control + e)",
                        "manipulators": [
                            {
                                "from": {
                                    "key_code": "end",
                                    "modifiers": { "optional": ["any"] }
                                },
                                "to": [
                                    {
                                        "key_code": "e",
                                        "modifiers": ["left_control"]
                                    }
                                ],
                                "type": "basic"
                            }
                        ]
                    },
                    {
                        "description": "Home key to the beginning of the line (Control + a)",
                        "manipulators": [
                            {
                                "from": {
                                    "key_code": "home",
                                    "modifiers": { "optional": ["any"] }
                                },
                                "to": [
                                    {
                                        "key_code": "a",
                                        "modifiers": ["left_control"]
                                    }
                                ],
                                "type": "basic"
                            }
                        ]
                    }
                ]
            },
            "devices": [
                {
                    "identifiers": {
                        "is_keyboard": true,
                        "is_pointing_device": true,
                        "product_id": 591,
                        "vendor_id": 1452
                    },
                    "ignore": false
                },
                {
                    "identifiers": {
                        "is_keyboard": true,
                        "product_id": 591,
                        "vendor_id": 1452
                    },
                    "treat_as_built_in_keyboard": true
                }
            ],
            "name": "Default profile",
            "selected": true,
            "virtual_hid_keyboard": { "keyboard_type_v2": "ansi" }
        }
    ]
}

Add predefined rule 버튼 => Import more rules from the Internet (Open a web browser) 버튼 을 선택하여 추가시킬 수가 있다.

 

반응형