단축키 도우미

단축키 도우미를 사용하면 사용자가 플랫폼의 단축키를 검색하고 앱을 열 수 있습니다. Keyboard Shortcut Helper에 앱의 단축키를 게시하여 사용자 생산성과 사용 편의성을 개선하세요.

사용자가 Meta+/를 눌러 단축키 화면을 엽니다. 이 화면은 Android 7.0 (API 수준 24) 이상에서 사용할 수 있습니다.

그림 1. 단축키 도우미

단축키 도우미에 단축키 제공

onProvideKeyboardShortcuts() 창 콜백을 재정의하여 사용 가능한 단축키 목록을 단축키 도우미에 제공할 수 있습니다. 다음 스니펫은 4개의 바로가기 그룹을 추가하는 onProvideKeyboardShortcuts()의 구현을 보여줍니다.

class MainActivity : ComponentActivity() {
    // Activity codes such as overridden onStart method.

    override fun onProvideKeyboardShortcuts(
        data: MutableList<KeyboardShortcutGroup>?,
        menu: Menu?,
        deviceId: Int
    ) {
        val shortcutGroup = KeyboardShortcutGroup(
            "Cursor movement",
            listOf(
                KeyboardShortcutInfo("Up", KeyEvent.KEYCODE_P, KeyEvent.META_CTRL_ON),
                KeyboardShortcutInfo("Down", KeyEvent.KEYCODE_N, KeyEvent.META_CTRL_ON),
                KeyboardShortcutInfo("Forward", KeyEvent.KEYCODE_F, KeyEvent.META_CTRL_ON),
                KeyboardShortcutInfo("Backward", KeyEvent.KEYCODE_B, KeyEvent.META_CTRL_ON),
            )
        )
        data?.add(shortcutGroup)
    }
}

KeyboardShortcutInfo는 단축키를 설명합니다. 단축키 목록은 KeyboardShortcutGroup 객체로 래핑됩니다. 앱은 메서드의 첫 번째 매개변수로 전달된 변경 가능한 목록에 KeyboardShortcutGroup 객체를 추가하여 사용 가능한 단축키를 Keyboard Shortcut Helper에 알립니다.

그룹으로 단축키 정리하기

단축키 도우미는 사용자가 사용 사례 또는 앱 화면별로 단축키를 찾을 수 있도록 단축키를 별도의 그룹으로 표시합니다. 그림 2는 커서 이동과 메시지 수정이라는 두 그룹으로 분류된 단축키를 보여줍니다.

그림 2. 단축키 도우미의 카테고리입니다.

앱은 각 그룹의 KeyboardShortcutGroup 객체를 만들어 두 개 이상의 단축키 그룹을 등록합니다. 다음 스니펫에서는 두 개의 KeyboardShortCutGroup 객체가 onProvideKeyboardShortcuts() 메서드에 전달된 변경 가능한 목록에 추가됩니다. 객체는 그림 2와 같이 단축키 도우미에 카테고리로 표시됩니다.

override fun onProvideKeyboardShortcuts(
    data: MutableList<KeyboardShortcutGroup>?,
    menu: Menu?,
    deviceId: Int
) {
    val cursorMovement = KeyboardShortcutGroup(
        "Cursor movement",
        listOf(
            KeyboardShortcutInfo("Up", KeyEvent.KEYCODE_P, KeyEvent.META_CTRL_ON),
            KeyboardShortcutInfo("Down", KeyEvent.KEYCODE_N, KeyEvent.META_CTRL_ON),
            KeyboardShortcutInfo("Forward", KeyEvent.KEYCODE_F, KeyEvent.META_CTRL_ON),
            KeyboardShortcutInfo("Backward", KeyEvent.KEYCODE_B, KeyEvent.META_CTRL_ON),
        )
    )

    val messageEdit = KeyboardShortcutGroup(
        "Message editing",
        listOf(
            KeyboardShortcutInfo("Select All", KeyEvent.KEYCODE_A, KeyEvent.META_CTRL_ON),
            KeyboardShortcutInfo("Send a message", KeyEvent.KEYCODE_ENTER, KeyEvent.META_SHIFT_ON)
        )
    )

    data?.add(cursorMovement)
    data?.add(messageEdit)
}

코드에서 단축키 도우미 열기

앱은 requestShowKeyboardShortcuts() 메서드를 호출하여 단축키 화면을 표시합니다. 다음 스니펫에서는 사용자가 버튼을 탭하거나 클릭하거나 Enter 키를 누르면 단축키 도우미가 열립니다.

val activity = LocalContext.current as Activity

Button(onClick = { activity.requestShowKeyboardShortcuts() }) {
    Text(text = "Show keyboard shortcuts")
}