# 단축키 관리자

> Manage keyboard shortcuts to speed up your workflow in the Unity Editor.

단축키 관리자에서 Unity의 키보드 단축키를 확인하고 관리할 수 있습니다.

단축키는 Unity 커맨드에 바인딩되는 모든 키 또는 키 조합입니다. 커맨드는 에디터에서 실행되는 작업입니다. 예를 들어, **R** 키는 씬 뷰의 **확대/축소** 툴을 활성화하는 커맨드에 바인딩됩니다.

단축키 관리자는 Unity의 메인 메뉴에서 액세스할 수 있습니다.

* Windows 및 Linux에서는 **Edit > Shortcuts**를 선택합니다.
* macOS에서는 **Unity > Shortcuts**를 선택합니다.


**단축키 관리자:**
![](/api/media?file=/engine/6000.0/media/images/ShortcutManager.png)

|       |                                                                                                                                                               |
| ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **A** | **프로파일 드롭다운 메뉴:** 여러 단축키 프로파일을 관리하고 전환할 수 있습니다. 자세한 내용은 [단축키 프로파일](#ShortcutProfiles)에서 확인하십시오.                                                               |
| **B** | **키 맵:** 어떤 키가 어느 커맨드에 할당되어 있는지 보여줍니다. 자세한 내용은 [키 맵](#KeyMap)을 참조하십시오. 키 맵을 사용하여 [단축키를 관리](#ManagingShortcuts)할 수도 있습니다.                                      |
| **C** | **카테고리 리스트:** 커맨드는 카테고리로 분류되며 이는 **카테고리** 리스트에 표시됩니다. 특정 카테고리를 선택하면 그에 속한 커맨드들이 오른쪽의 **커맨드** 리스트에 표시됩니다.                                                      |
| **D** | **커맨드** 및 **단축키 리스트:** 선택한 카테고리의 모든 커맨드와 그에 할당된 단축키를 표시합니다. 자세한 내용은 [커맨드 리스트](#CommandList)를 참조하십시오. 또한 커맨드 리스트를 사용하여 [단축키를 관리](#ManagingShortcuts)할 수도 있습니다. |

### 전역 커맨드와 컨텍스트 커맨드에 단축키 할당

Unity 커맨드는 전역 또는 컨텍스트 커맨드입니다.

전역 커맨드는 항상 사용할 수 있습니다. 예를 들어 실행한 작업을 취소하는 명령은 기본적으로 **Ctrl/Cmd + Z** 단축키에 할당되어 있습니다. 이 단축키를 사용하면 열려 있는 창과 활성화된 툴에 관계없이 마지막 작업이 항상 취소됩니다.

컨텍스트 커맨드는 특정 뷰 또는 툴 세트를 사용할 때만 작동합니다. 예를 들어 기본적으로 대괄호 키 **\[** 및 \*\*]\*\*는 터레인 툴의 한 커맨드 세트와 그리드 페인팅 툴의 다른 커맨드 세트에 할당됩니다. 이 두 개의 키 중 하나를 누르면 Unity는 활성화된 툴에 대한 커맨드를 실행합니다.

일반적으로 하나의 단축키는 하나의 전역 커맨드 또는 \_서로 다른 컨텍스트\_에 속하는 하나 이상의 컨텍스트 커맨드에 할당됩니다. 다른 다중 커맨드 조합(두 개의 전역 커맨드 또는 \_동일한 컨텍스트\_의 두 가지 컨텍스트 커맨드)은 충돌을 일으키므로 이는 수정되어야 합니다. 단축키 충돌 및 관리 방법에 대한 상세 내용은 [단축키 충돌](#ShortcutConflicts)을 참조하십시오.

Unity에는 충돌을 일으키지 않으면서 단축키를 다른 전역 커맨드와 공유할 수 있는 몇 가지 특수 전역 커맨드도 있습니다. 예를 들어 **Q**, **W** 및 **E** 키는 뷰, 이동, 회전 툴에 각각 할당되지만, **Flythrough** 모드를 활성화하면 이 키들을 사용하여 아래, 앞, 위로 이동할 수 있습니다.

### 키 맵

이 섹션에서는 키 맵을 사용하여 단축키 할당을 확인하는 방법을 설명합니다. 키 맵으로 단축키를 추가, 제거, 수정하는 방법은 [단축키 관리](#ManagingShortcuts)를 참조하십시오.

키 맵은 커맨드에 할당된 키 및 키 조합을 보여줍니다.

||| |-|| |
**Frame:**
![](/api/media?file=/engine/6000.0/media/images/ShortcutManagerGlobalKey.png)|분홍색 키는 전역 커맨드에 할당되어 있습니다. | |
**Frame:**
![](/api/media?file=/engine/6000.0/media/images/ShortcutManagerContextKey.png)|파란색 키는 컨텍스트 커맨드에 할당되어 있습니다. | |
**Frame:**
![](/api/media?file=/engine/6000.0/media/images/ShortcutManagerUnassignedKey.png)|흰색 키는 아무 커맨드에도 할당되어 있지 않습니다. | | |
**Frame:**
![](/api/media?file=/engine/6000.0/media/images/ShortcutManagerGreyKey.png)|회색 키는 커맨드에 할당할 수 없는 특수한 키입니다.

**Shift**, **Ctrl/Cmd** 같은 수정 키와 **Return**, **Esc** 같은 유틸리티 키가 이에 해당합니다.

**Shift**, **Ctrl/Cmd**, **Alt** 등과 같은 수정 키를 선택하면 키 맵이 업데이트되어 커맨드에 할당된 단축키 및 수정자 조합이 표시됩니다. 활성화된 수정 키는 키 맵에서 파란색으로 변합니다.


**수정 키를 활성화하면 키 맵을 변경되어 키 조합의 할당 방식이 표시됨:**
![](/api/media?file=/engine/6000.0/media/images/ShortCutManagerModifiers.png)

**팁:** 키 맵에서 수정 키를 일시적으로 활성화하려면 키보드에서 해당 키를 길게 누르십시오.

특정 키가 어느 커맨드에 할당되어 있는지 확인하려는 경우, 마우스 포인터를 단축키 위에 올려놓으면 키가 할당된 커맨드가 툴팁으로 표시됩니다.


**A 키는 3D 뷰포트의 Fly Mode Left 커맨드에 할당됨:**
![](/api/media?file=/engine/6000.0/media/images/ShortcutManagerHover.png)

키 조합의 경우에는 해당 수정 키를 키보드에서 길게 누르거나, 키 맵에서 클릭하여 활성화한 다음 마우스 포인터를 단축키 위에 올려놓으십시오.


**Ctrl/Cmd + A 키 조합은 Edit > Select All 커맨드에 할당됨:**
![](/api/media?file=/engine/6000.0/media/images/ShortcutManagerHoverMod.png)

하나의 단축키를 둘 이상의 커맨드에 할당할 수 있습니다. Unity가 해당 커맨드들을 동시에 실행할 수 없는 한 단축키는 문제 없이 동작합니다. 하지만 동시에 실행될 수 있는 여러 개의 커맨드에 단축키를 매핑하면 충돌이 일어납니다. 충돌을 확인하여 조정하는 방법은 아래의 [단축키 충돌](#ShortcutConflicts)을 참조하십시오.

### 커맨드 리스트

이 섹션에서는 **커맨드** 리스트를 사용하여 단축키 할당을 확인하는 방법을 설명합니다. **커맨드** 리스트를 사용하여 단축키를 추가, 제거 및 수정하는 방법에 대한 자세한 내용은 단축키 [관리](#ManagingShortcuts)를 참조하십시오.

**커맨드** 리스트에는 특정 명령에 할당된 단축키가 표시됩니다. **카테고리** 리스트에서 카테고리를 선택하면 그에 속하는 명령과 단축키가 **커맨드** 리스트에 표시됩니다.


**Frame:**
![](/api/media?file=/engine/6000.0/media/images/ShortcutManagerLists.png)

검색 상자에서 **커맨드** 리스트를 검색할 수도 있습니다. 검색어를 입력하면 **커맨드** 리스트가 자동으로 해당 범위를 좁힌 후 검색어와 일치하는 커맨드를 보여줍니다.

특정 카테고리를 검색하는 경우 **Search** 행에서 범위를 설정하면 선택된 카테고리의 결과와 **All Unity Commands** 카테고리의 결과를 전환할 수 있습니다.


**Frame:**
![](/api/media?file=/engine/6000.0/media/images/ShortcutManagerSearch.png)

## 단축키 관리

단축키 관리자는 단축키를 할당, 수정, 할당 취소, 재설정할 수 있는 다양한 방식을 제공합니다.

다음 중 하나를 수행하여 단축키를 할당하거나 수정할 수 있습니다.

* [커맨드 리스트에서 키 맵으로 커맨드를 끌어다 놓습니다.](#AssignKeyMap)

* [커맨드 리스트에 단축키를 입력합니다.](#AssignCommandList)

다음 중 하나를 수행하여 단축키를 할당 취소하거나 재설정할 수 있습니다.

* [커맨드 리스트 또는 키 맵의 컨텍스트 메뉴를 사용합니다.](#UnassignKeyMap)

* [커맨드 리스트에서 단축키 할당을 직접 삭제합니다.](#UnassignCommandList)

### 단축키를 커맨드에 할당

키 맵 또는 **커맨드** 리스트를 사용하여 단축키를 커맨드에 할당합니다.

**키 맵을 사용하여 단축키를 할당하는 방법은 다음과 같습니다.**

1. 단축키에 포함할 수정 키(예: **Shift** 또는 **Ctrl/Cmd**)를 클릭합니다.

2. **커맨드** 리스트에서 메인 단축키로 커맨드를 끌어다 놓습니다.

   키 맵에 마우스 커서를 올려 놓으면 어떤 할당이 가능한지 표시됩니다.


   **Frame:**
   ![](/api/media?file=/engine/6000.0/media/images/ShortcutManagerDnDAssign.png)

**커맨드 리스트에서 단축키를 할당하려면 다음 단계를 따르십시오.**

1. 리스트의 커맨드를 더블 클릭하여 단축키 필드를 편집합니다.

2. 단축키 필드에 커서를 놓고 평상시처럼 키보드에서 단축키를 누릅니다.


   **Frame:**
   ![](/api/media?file=/engine/6000.0/media/images/ShortcutManagerListAssign.png)

   이때 단축키에 포함할 수정 키(예: **Shift** or **Alt/Option**)를 길게 눌러야 합니다.

단축키가 커맨드에 이미 할당된 경우 새 할당으로 인해 충돌이 발생합니다. 충돌을 관리하는 상세한 방법은 [단축키 충돌](#ShortcutConflicts)에서 확인하십시오.

### 단축키 할당 취소 및 재설정

키 맵 또는 **커맨드** 리스트를 사용하여 커맨드에 할당된 단축키를 제거하거나 수정된 단축키를 기본 매핑으로 재설정할 수 있습니다.

**참고:** Unity는 기본 단축키 할당을 기본 프로파일에 저장합니다. 자세한 내용은 [단축키 프로파일](#ShortcutProfiles)을 참조하십시오.

**키 맵에서 단축키를 할당 취소하거나 재설정하려면 다음 단계를 따르십시오.**

1. 할당 취소하거나 재설정할 단축키를 마우스 오른쪽 버튼으로 클릭합니다.

   키 조합을 할당 취소/재설정하려는 경우에는 포함된 수정 키(예: **Shift** or **Ctrl/Cmd**)를 클릭한 후 단축키를 마우스 오른쪽 버튼으로 클릭하십시오.

2. 컨텍스트 메뉴에서 다음을 수행합니다.

   * **\[COMMAND] > Reset to default**를 선택하여 기본 단축키를 커맨드에 재할당합니다.

   * **\[COMMAND] > Remove shortcut**을 선택하여 커맨드에 대한 단축키 할당을 취소합니다.


**Frame:**
![](/api/media?file=/engine/6000.0/media/images/ShortcutManagerUnassignKeyMap.png)

**커맨드 리스트에서 단축키를 할당 취소하거나 재설정하려면 다음 단계를 따르십시오.**

1. 할당 취소하거나 재설정할 단축키의 커맨드를 마우스 오른쪽 버튼으로 클릭합니다.

2. 컨텍스트 메뉴에서 다음을 수행합니다.

   * **\[COMMAND] > Reset to default**를 선택하여 기본 단축키를 커맨드에 재할당합니다.
   * **\[COMMAND] > Remove shortcut**을 선택하여 커맨드에서 단축키를 할당 취소합니다.


**Frame:**
![](/api/media?file=/engine/6000.0/media/images/ShortcutMangerUnassignList.png)

아니면 다음을 수행할 수도 있습니다.

* 할당 취소할 단축키의 커맨드를 더블 클릭한 후 **Return/Enter** 키를 눌러 단축키 필드에서 단축키를 삭제합니다.


**Frame:**
![](/api/media?file=/engine/6000.0/media/images/ShortcutManagerListUnassign.png)

## 단축키 충돌

동시에 실행할 수 없는 둘 이상의 커맨드는 동일한 단축키에 할당할 수 있습니다. 예를 들면 동일한 단축키를 씬 뷰의 커맨드에 할당한 뒤 애니메이션 창의 또 다른 커맨드에도 할당할 수 있습니다. 두 창은 동시에 활성화될 수 없으므로, 해당 단축키를 누를 때 실행해야 하는 커맨드를 Unity가 명확히 판단할 수 있습니다.

*동시에 실행할 수 있는* 두 개의 커맨드에 하나의 단축키를 할당하면 충돌이 발생합니다. 예를 들어 하나의 단축키를 다음에 할당하면 충돌이 발생합니다.

* \_동일한 컨텍스트\_에서 하나 이상의 컨텍스트 커맨드

* 여러 개의 전역 커맨드

* 전역 및 컨텍스트 커맨드의 조합

단축키 관리자는 새로운 단축키 할당을 만들 때 그리고 충돌하는 커맨드에 할당된 단축키를 사용할 때 충돌을 처리할 수 있는 여러 옵션을 제공합니다.

### 단축키 관리자에서 충돌 확인

단축키 충돌이 있는 커맨드는 **Command** 리스트에 “주의” 아이콘이 표시됩니다.


**Frame:**
![](/api/media?file=/engine/6000.0/media/images/ShortcutManagerConflictCat.png)

**Category** 리스트에서 **Binding Conflicts** 카테고리를 선택하여 단축키 충돌이 일어나는 전체 커맨드 리스트를 가져올 수 있습니다.


**Frame:**
![](/api/media?file=/engine/6000.0/media/images/ShortctManagerBindingConflicts.png)

### 단축키 생성 시 충돌 관리

단축키를 두 개의 충돌하는 커맨드에 할당하면 **Binding conflict** 다이얼로그가 열립니다.


**Frame:**
![](/api/media?file=/engine/6000.0/media/images/ShortcutManagerDlgBindingConflict.png)

* 단축키를 기존에 할당된 커맨드 외에 다른 커맨드에도 할당하려면 **Create Conflict**를 선택합니다.

  Unity는 단축키에 할당된 모든 커맨드를 **Binding Conflicts** 카테고리에 추가합니다.

* **Reassign**을 선택하면 단축키를 충돌하는 커맨드에 다시 할당합니다. 이 경우 다른 모든 커맨드 할당이 지워집니다.

* **Cancel**을 선택하면 아무 동작도 하지 않고 종료합니다.

### 단축키 사용 시 충돌 관리

Unity에서 작업할 때 충돌하는 커맨드에 할당된 단축키를 사용하면 단축키 충돌 다이얼로그가 열립니다.


**Frame:**
![](/api/media?file=/engine/6000.0/media/images/ShortcutManagerDlgShortcutConflict.png)

* 리스트에서 커맨드를 선택하고 **Perform Selected** 버튼을 클릭하여 커맨드를 실행합니다.

  단축키가 선택한 커맨드에만 할당되도록 다른 할당을 지우려면 커맨드를 실행하기 전에 **Rebind to selected command** 옵션을 활성화합니다. 이는 다른 할당을 삭제하는 것과 동일합니다.

* **Resolve Conflict**를 선택하면 단축키 관리자가 열리고, 여기에서 단축키를 수정하여 충돌을 제거할 수 있습니다.

* **Cancel**을 선택하면 아무 동작도 하지 않고 종료합니다.

## 단축키 프로파일

단축키는 프로파일에 저장됩니다. 각 프로파일은 필요에 따라 수정할 수 있는 전체 Unity 단축키의 집합입니다. 프로파일은 얼마든지 많이 생성하여 필요에 따라 전환할 수 있습니다. 기본 프로파일을 제외한 모든 활성 프로파일에서 단축키를 추가, 제거, 수정할 수 있습니다(아래 참조). 활성 프로파일의 변경 사항은 즉시 적용됩니다. Unity는 변경 사항을 자동으로 저장하며 변경 사항을 수락하거나 거부하도록 요청하는 메시지를 표시하지 않습니다.

Unity는 단축키 프로파일을 프로젝트 외부의 Unity 환경 설정 디렉토리에 저장합니다.

* Windows: `%APPDATA%/Unity\Editor-5.x\Preferences\shortcuts`

* macOS: `~/Library/Preferences/Unity/Editor-5.x/shortcuts`

* Linux: `~/.config/unity3d/Preferences/Editor-5.x/shortcuts`

따라서 생성하는 프로파일을 모든 프로젝트에서 사용할 수 있습니다.

**업그레이드:** Unity 이전 버전을 업그레이드하는 경우 Unity는 환경 설정에서 설정된 모든 단축키를 UserProfile이라고 불리는 새로운 단축키 프로파일로 마이그레이션합니다.

### 단축키 프로파일 관리

단축키 관리자 상단에 있는 프로파일 드롭다운 메뉴에서 프로파일을 관리할 수 있습니다.


**Frame:**
![](/api/media?file=/engine/6000.0/media/images/ShortcutManagerProfileMenu.png)

|       |                                                                 |
| ----- | --------------------------------------------------------------- |
| **A** | **프로파일 리스트:** 사용 가능한 모든 프로파일을 나열합니다. 하나를 선택하여 활성 프로파일로 만드십시오    |
| **B** | **프로파일 옵션:** 새로운 프로파일을 만들거나, 활성 프로파일을 삭제하거나 이름을 변경할 수 있는 옵션입니다. |

#### 기본 단축키 프로파일

Unity에는 초기 단축키 설정이 포함된 기본 프로파일이 있습니다. 새 프로파일을 만들면 Unity는 기본 프로파일을 복사합니다.

기본 프로파일은 수정할 수 없습니다. 기본 프로파일을 수정하려고 하면 Unity가 자동으로 복사본(*Default copy*)을 만들어 해당 복사본을 활성 프로파일로 사용하며, 해당 복사본에 변경 사항을 적용합니다.

## 커스텀 툴을 위한 단축키 관리자 바이패스

키보드에서 키 또는 키 조합을 선택하면 Unity가 키보드 이벤트를 생성하고 해당 이벤트를 활성화된 뷰로 전송합니다. 활성화된 뷰가 해당 이벤트를 사용할 수 있는 경우(액션 트리거 등) 그렇게 합니다. 그렇지 않은 경우 이벤트는 단축키 관리자로 전송되고 Unity는 단축키가 할당된 커맨드를 실행합니다.

커스텀 툴을 개발하는 경우 키보드 이벤트가 단축키 관리자에 도달하기 전에 프로그래밍 방식으로 인터셉트할 수 있습니다. 예를 들어 커스텀 툴이 단축키 관리자를 사용하여 설정할 수 있는 것보다 더욱 복잡한 방식으로 키 입력에 반응하도록 만들 수 있습니다.

키보드 이벤트를 인터셉트하는 방법은 커스텀 툴용 인터페이스를 만들기 위해 사용하는 시스템에 따라 다릅니다.

[IMGUI](https://docs.unity3d.com/Manual/GUIScriptingGuide.html) 시스템을 사용하는 경우 다음 스크립팅 레퍼런스 항목을 참조하십시오.

* [Event.current](https://docs.unity3d.com/ScriptReference/Event-current.html)

[UI 요소](https://docs.unity3d.com/Manual/UIElements.html) 시스템을 사용하는 경우 다음 스크립팅 레퍼런스 항목을 참조하십시오.

* [KeyDownEvent](https://docs.unity3d.com/ScriptReference/UIElements.KeyDownEvent.html)

* [CallbackEventHandler.RegisterCallback](https://docs.unity3d.com/ScriptReference/UIElements.CallbackEventHandler.RegisterCallback.html)

* [CallbackEventHandler.HandleEvent](https://docs.unity3d.com/ScriptReference/UIElements.CallbackEventHandler.HandleEvent.html)

## 사용자 정의 단축키

단축키 관리자에서는 단축키를 수정할 수 있을 뿐만 아니라, UnityEditor.ShortcutManagement 네임스페이스의 클래스를 사용하여 스크립트 및 패키지와 같은 다른 위치의 커스텀 단축키를 정의할 수 있습니다. 예를 들어 [ShortcutAttribute](/engine/6000.0/script-reference/unity-editor-shortcut-management/shortcut-attribute.md) 및 [ClutchShortcutAttribute](/engine/6000.0/script-reference/unity-editor-shortcut-management/clutch-shortcut-attribute.md) 속성을 사용하여 새로운 단축키를 생성할 수 있습니다.

Unity가 다른 소스의 커맨드와 단축키를 로드할 때 다음을 수행합니다.

* 메인 메뉴의 신규 커맨드를 **커맨드** 리스트의 **All Unity Commands** 카테고리에 추가합니다. 그러면 단축키 관리자를 사용하여 커맨드에 대한 단축키를 만들 수 있습니다.

* 커스텀 커맨드 카테고리를 **Category** 리스트에 추가합니다.

* 커스텀 키보드 단축키를 단축키 데이터베이스에 추가하면 모든 단축키 프로파일에 표시됩니다.

* 커스텀 단축키와 현재 프로파일의 단축키 간 [충돌](#ShortcutConflicts)은 **커맨드** 리스트의 **Shortcut Conflicts** 카테고리에 표시됩니다.
