언어: HTML | XAML

키보드 조작에 응답(XAML)

Applies to Windows and Windows Phone

키보드 및 클래스 이벤트 처리기를 사용하여 앱에서 하드웨어 또는 터치 키보드의 키 입력 동작에 응답합니다.

중요  

일부 Windows 런타임 컨트롤은 입력 이벤트를 내부적으로 처리합니다. 이 경우 이벤트 수신기가 연결된 처리기를 호출하지 않으므로 입력 이벤트가 발생하지 않는 것처럼 보일 수도 있습니다. 일반적으로 이러한 키 하위 집합은 기본 키보드 접근성을 기본적으로 지원하기 위해 클래스 처리기에서 처리됩니다. 예를 들어 Button 클래스는 Space 키와 Enter 키 둘 다에 대해 OnKeyDown 이벤트(및 OnPointerPressed)를 재정의하고 컨트롤의 Click 이벤트로 라우팅합니다. 컨트롤 클래스에서 키 누름을 처리하는 경우 KeyDownKeyUp 이벤트가 발생하지 않습니다.

손가락으로 탭하기 또는 마우스로 클릭과 유사하게 단추를 호출하기 위한 기본 제공 키보드 기능이 제공됩니다. Space 키 또는 Enter 키 이외의 키를 누르면 KeyDownKeyUp 이벤트가 발생합니다. 클래스 기반 이벤트 처리의 작동 방식(특히 컨트롤의 입력 이벤트 처리기)에 대한 자세한 내용은 이벤트 및 라우트된 이벤트 개요를 참조하세요.

  이 항목의 내용은 C++, C# 또는 Visual Basic을 사용한 앱 개발과 관련이 있습니다.

JavaScript로 작성한 앱에 대해서는 키보드 조작에 응답(HTML)을 참조하세요.

사전 요구 사항:  다음 항목을 검토하여 여기서 설명하는 기술에 대해 알아보세요.

C# 또는 Visual Basic을 사용하여 첫 Windows 스토어 앱 만들기

C++를 사용하여 첫 Windows 스토어 앱 만들기

C# 또는 Visual Basic으로 작성한 Windows 스토어 앱용 로드맵

C++로 작성한 Windows 스토어 앱용 로드맵

이벤트에 대한 자세한 내용은 이벤트 및 라우트된 이벤트 개요를 참조하세요.

앱 기능 전체 프로세스:  앱 기능 전체 프로세스 시리즈의 일부로 이 기능을 자세히 살펴보세요.

사용자 조작 전체 프로세스(XAML)

사용자 조작 사용자 지정 전체 프로세스(XAML)

사용자 환경 지침:  

플랫폼 컨트롤 라이브러리(HTMLXAML)는 표준 조작, 애니메이션 물리적 효과 및 시각적 피드백을 비롯하여 사용자 조작 환경 전체를 제공합니다. 사용자 지정 조작 지원이 필요 없는 경우에는 이러한 기본 제공 컨트롤을 사용하세요.

플랫폼 컨트롤이 충분하지 않으면 다음 사용자 조작 지침을 통해 입력 모드 전체에서 멋진 몰입형 조작 환경을 일관되게 제공합니다. 이러한 지침은 주로 터치식 입력을 중심으로 다루지만 터치 패드, 마우스, 키보드 및 스타일러스 입력에도 관련이 있습니다.

샘플:  이 기능의 작동 방식을 보려면 앱 샘플을 참조하세요.

입력 샘플

입력: 장치 기능 샘플

입력: 터치 키보드 샘플

화상 키보드의 모양에 응답 샘플

개요

키보드 입력은 앱용 전체 사용자 조작 환경에서 중요한 부분을 차지합니다. 키보드가 앱을 조작하는 보다 효율적인 방법이라고 생각하는 사용자나 특정 장애를 가진 사람들에게는 키보드가 필수 도구입니다. 예를 들어 사용자가 Tab 및 화살표 키를 사용하여 앱을 탐색하고, 스페이스바 및 Enter 키를 사용하여 UI 요소를 활성화하고, 바로 가기 키를 사용하여 명령에 액세스할 수 있어야 합니다.

잘 디자인된 키보드 UI는 소프트웨어 접근성의 중요한 측면입니다. 시각 장애나 특정 거동 장애가 있는 사용자는 키보드 UI를 사용하여 앱을 탐색하고 기능을 조작할 수 있습니다. 이러한 사용자는 마우스를 작동할 수 없으며 다양한 보조 기술(예: 키보드 향상 도구, 화상 키보드, 화면 확대기, 화면 낭독 프로그램 및 음성 입력 유틸리티)을 대신 사용할 수 있습니다.

가장 일반적인 키보드 유형은 실제로 장치에 연결된 외부 하드웨어 키보드입니다. 하드웨어 키보드 외에 Windows 8에서는 다음 두 가상 키보드를 제공합니다.

    • Applies to Windows

    창:

    화상 키보드는 실제 키보드 대신 터치, 마우스, 펜/스타일러스 또는 기타 포인팅 장치로 데이터를 입력하는 데 사용할 수 있는 시각적 가상 키보드입니다(터치 스크린이 필요하지 않음). 실제 키보드가 없는 시스템이나 움직일 수 없어서 일반적인 입력 장치를 사용할 수 없는 사용자는 화상 키보드를 사용할 수 있습니다. 화상 키보드는 하드웨어 키보드의 기능을 전부는 아니라도 대부분 에뮬레이트합니다.

    화상 키보드

    • Applies to Windows

    창:

    터치 키보드는 터치식 입력과 함께 텍스트 입력에 사용되는 시각적 가상 키보드입니다. 터치 키보드는 텍스트 입력에만 사용되고(하드웨어 키보드를 에뮬레이트하지 않음) 텍스트 필드나 다른 편집 가능한 텍스트 컨트롤에 포커스가 있을 때만 표시되므로 화상 키보드를 대체하지 않습니다.

    참고  화상 키보드는 터치 키보드보다 우선하며, 현재 화상 키보드가 사용 중이면 터치 키보드는 나타나지 않습니다.

    다음은 터치 키보드의 예입니다. 첫 번째 이미지는 기본 레이아웃이고, 두 번째 이미지는 미리 보기 레이아웃으로 일부 언어에서는 사용할 수 없습니다.

    기본 레이아웃의 터치 키보드

    미리 보기 레이아웃의 터치 키보드

키보드 이벤트

다음 키보드 이벤트는 하드웨어 및 터치 키보드 둘 다에서 발생할 수 있습니다.

이벤트설명
KeyDown 키를 누를 때 발생합니다.
KeyUp 키를 놓을 때 발생합니다.

 

키보드 이벤트 및 포커스

UI의 컨트롤은 입력 포커스가 있는 경우에만 키보드 이벤트를 생성합니다. 개별 컨트롤은 사용자가 레이아웃에서 해당 컨트롤을 직접 클릭 또는 탭하거나 Tab 키를 사용하여 콘텐츠 영역 내에서 탭 시퀀스를 단계별로 이동할 때 포커스를 얻습니다.

컨트롤의 Focus 메서드를 호출하여 포커스를 강제 적용할 수도 있습니다. 이 작업은 사용자의 UI가 로드될 때 기본적으로 키보드 포커스가 설정되지 않으므로 바로 가기 키를 구현하는 경우에 필요합니다. 자세한 내용은 이 항목의 뒷부분에 있는 바로 가기 키 예제를 참조하세요.

컨트롤에 입력 포커스를 적용하려면 컨트롤이 활성화되고 표시되어야 하며 IsTabStopHitTestVisible 속성 값이 true여야 합니다. 대부분의 컨트롤은 이것이 기본 상태입니다. 컨트롤에 입력 포커스가 있으면 이 항목의 뒷부분에 설명된 대로 키보드 입력 이벤트를 발생시키고 응답할 수 있습니다. GotFocusLostFocus 이벤트를 처리하여 포커스를 받거나 잃는 컨트롤에 응답할 수도 있습니다.

기본적으로 컨트롤의 탭 시퀀스는 XAML에 표시되는 순서입니다. 그러나 이 순서는 TabIndex 속성을 사용하여 수정할 수 있습니다. 자세한 내용은 키보드 접근성 구현을 참조하세요.

키보드 이벤트 처리기

입력 이벤트 처리기는 다음 정보를 제공하는 대리자를 구현합니다.

  • 이벤트를 보낸 사람. 보낸 사람은 이벤트 처리기가 연결된 개체를 보고합니다.
  • 이벤트 데이터. 키보드 이벤트의 경우 이 데이터는 KeyRoutedEventArgs의 인스턴스입니다. 처리기의 대리자는 KeyEventHandler입니다. 대부분의 처리기 시나리오에서 KeyRoutedEventArgs의 가장 관련된 속성은 KeyKeyStatus입니다.
  • OriginalSource. 키보드 이벤트는 라우트된 이벤트이므로 이벤트 데이터에서 OriginalSource를 제공합니다. 의도적으로 이벤트가 개체 트리를 통해 버블 업되도록 허용하는 경우 OriginalSource가 보낸 사람이 아니라 관련 개체일 수도 있지만 이것은 디자인에 따라 달라집니다. 보낸 사람 대신 OriginalSource를 사용하는 방법에 대한 자세한 내용은 이 항목의 "키보드 라우트된 이벤트" 섹션 또는 이벤트 및 라우트된 이벤트 개요를 참조하세요.

키보드 이벤트 처리기 연결

이벤트를 멤버로 포함하는 모든 개체에 대해 키보드 이벤트 처리기 함수를 연결할 수 있습니다. 임의의 UIElement 파생 클래스도 여기에 포함됩니다. 다음 XAML 예제는 GridKeyUp 이벤트에 대해 처리기를 연결하는 방법을 보여 줍니다.



<Grid KeyUp="Grid_KeyUp">
  ...
</Grid>


코드에서 이벤트 처리기를 연결할 수도 있습니다. 자세한 내용은 이벤트 및 라우트된 이벤트 개요를 참조하세요.

키보드 이벤트 처리기 정의

다음 예제에서는 이전 예제에서 연결된 KeyUp 이벤트 처리기의 불완전한 이벤트 처리기 정의를 보여 줍니다.


void MyProject::MainPage::Grid_KeyUp(
  Platform::Object^ sender,
  Windows::UI::Xaml::Input::KeyRoutedEventArgs^ e)
{//handling code here}

KeyRoutedEventArgs 사용

모든 키보드 이벤트는 이벤트 데이터에 KeyRoutedEventArgs를 사용하며 KeyRoutedEventArgs에 다음 속성이 포함되어 있습니다.

키를 누르면 KeyDown 이벤트가 발생합니다. 마찬가지로, 키를 놓으면 KeyUp이 발생합니다. 일반적으로 특정 키 값을 처리하기 위해 이벤트를 수신 대기합니다. 어떤 키를 누르거나 놓았는지 알아보려면 이벤트 데이터에서 Key 값을 확인하세요. KeyVirtualKey 값을 반환합니다. VirtualKey 열거형에는 지원되는 모든 키가 포함됩니다.

보조 키

  • Applies to Windows

창:

보조 키는 Ctrl 또는 Shift 키와 같이 사용자가 일반적으로 다른 키와 함께 누르는 키입니다. 앱에서 이러한 조합을 바로 가기 키로 사용하여 앱 명령을 호출할 수 있습니다.

KeyDownKeyUp 이벤트 처리기에 코드를 사용하여 바로 가기 키 조합을 검색합니다. 그런 후 관심 있는 보조 키의 누른 상태를 추적할 수 있습니다. 비보조 키에 대해 키보드 이벤트가 발생하는 경우 보조 키가 누른 상태인지 여부도 동시에 확인할 수 있습니다.

참고  Alt 키는 VirtualKey.Menu 값으로 표시됩니다.

바로 가기 키 예제

  • Applies to Windows

창:

다음 예제에서는 바로 가기 키를 구현하는 방법을 보여 줍니다. 이 예제에서 사용자는 [재생], [일시 중지] 및 [증지] 단추나 .Ctrl+P, Ctrl+A 및 Ctrl+S 바로 가기 키를 사용하여 미디어 재생을 제어할 수 있습니다. 단추 XAML은 단추 레이블의 AutomationProperties 속성 및 도구 설명을 사용하여 바로 가기를 표시합니다. 이 자체 설명서는 앱의 유용성과 접근성을 향상시키는 데 중요합니다. 자세한 내용은 키보드 접근성 구현을 참조하세요.

페이지를 로드하면 입력 포커스가 페이지 자체에 설정됩니다. 이 단계가 없으면 컨트롤에 초기 입력 포커스가 없으며, 사용자가 컨트롤을 탭하거나 클릭하여 입력 포커스를 수동으로 설정할 때까지 앱에서 입력 이벤트를 발생시키지 않습니다.


<Grid KeyDown="Grid_KeyDown">

  <Grid.RowDefinitions>
    <RowDefinition Height="Auto" />
    <RowDefinition Height="Auto" />
  </Grid.RowDefinitions>

  <MediaElement x:Name="DemoMovie" Source="xbox.wmv" 
    Width="500" Height="500" Margin="20" HorizontalAlignment="Center" />

  <StackPanel Grid.Row="1" Margin="10"
    Orientation="Horizontal" HorizontalAlignment="Center">

    <Button x:Name="PlayButton" Click="MediaButton_Click"
      ToolTipService.ToolTip="Shortcut key: Ctrl+P"
      AutomationProperties.AcceleratorKey="Control P">
      <TextBlock>Play</TextBlock>
    </Button>

    <Button x:Name="PauseButton" Click="MediaButton_Click"
      ToolTipService.ToolTip="Shortcut key: Ctrl+A" 
      AutomationProperties.AcceleratorKey="Control A">
      <TextBlock>Pause</TextBlock>
    </Button>

    <Button x:Name="StopButton" Click="MediaButton_Click"
      ToolTipService.ToolTip="Shortcut key: Ctrl+S" 
      AutomationProperties.AcceleratorKey="Control S">
      <TextBlock>Stop</TextBlock>
    </Button>

  </StackPanel>

</Grid>



//showing implementations but not header definitions
void MainPage::OnNavigatedTo(NavigationEventArgs^ e)
{
    (void) e;    // Unused parameter
    this->Loaded+=ref new RoutedEventHandler(this,&MainPage::ProgrammaticFocus);
}
void MainPage::ProgrammaticFocus(Object^ sender, RoutedEventArgs^ e) {
    this->Focus(Windows::UI::Xaml::FocusState::Programmatic);
}

void KeyboardSupport::MainPage::MediaButton_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
{
    FrameworkElement^ fe = safe_cast<FrameworkElement^>(sender);
    if (fe->Name == "PlayButton") {DemoMovie->Play();}
    if (fe->Name == "PauseButton") {DemoMovie->Pause();}
    if (fe->Name == "StopButton") {DemoMovie->Stop();}
}


void KeyboardSupport::MainPage::Grid_KeyDown(Platform::Object^ sender, Windows::UI::Xaml::Input::KeyRoutedEventArgs^ e)
{
    if (e->Key == VirtualKey::Control) isCtrlKeyPressed = true;
}


void KeyboardSupport::MainPage::Grid_KeyUp(Platform::Object^ sender, Windows::UI::Xaml::Input::KeyRoutedEventArgs^ e)
{
    if (e->Key == VirtualKey::Control) isCtrlKeyPressed = true;
    else if (isCtrlKeyPressed) {
        if (e->Key==VirtualKey::P) {
            DemoMovie->Play();
        }
        if (e->Key==VirtualKey::A) {DemoMovie->Pause();}
        if (e->Key==VirtualKey::S) {DemoMovie->Stop();}
    }
}


참고  XAML에서 AutomationProperties.AcceleratorKey 또는 AutomationProperties.AccessKey를 설정하면 문자열 정보(해당 특정 작업을 호출하는 바로 가기 키를 문서화함)를 제공합니다. 이 정보는 Narrator와 같은 Microsoft UI 자동화 클라이언트에 의해 캡처되며 보통 사용자에게 직접 제공됩니다. AutomationProperties.AcceleratorKey 또는 AutomationProperties.AccessKey를 설정해도 그 자체로는 작업이 수행되지 않습니다. 앱에서 바로 가기 키 동작을 실제로 구현하려면 KeyDown 또는 KeyUp 이벤트에 대한 처리기를 연결해야 합니다. 또한 액세스 키에 대한 밑줄로 표시된 텍스트 장식은 자동으로 제공되지 않습니다. UI에서 밑줄로 표시된 텍스트를 표시하려면 니모닉에서 명시적으로 특정 키의 텍스트에 밑줄을 인라인 Underline 서식으로 표시해야 합니다.

키보드 라우트된 이벤트

KeyDown, KeyUp 등의 특정 이벤트는 라우트된 이벤트입니다. 라우트된 이벤트는 버블링 라우팅 전략을 사용합니다. 버블링 라우팅 전략은 이벤트가 자식 개체에서 발생한 다음 개체 트리에서 다음 부모 개체로 라우트됨을 의미합니다. 이 경우 동일한 이벤트를 처리하고 동일한 이벤트 데이터로 상호 작용할 수 있는 기회가 제공됩니다.

Canvas와 두 개의 Button 개체에 대해 KeyUp 이벤트를 처리하는 다음 XAML 예제를 살펴보세요. 이 경우 포커스가 Button 개체 중 하나에 있을 때 키를 놓으면 KeyUp 이벤트가 발생합니다. 이 이벤트는 부모 Canvas로 버블 업됩니다.


<StackPanel KeyUp="StackPanel_KeyUp">
  <Button Name="ButtonA" Content="Button A"/>
  <Button Name="ButtonB" Content="Button B"/>
  <TextBlock Name="statusTextBlock"/>
</StackPanel>


다음 예제에서는 이전 예제의 해당 XAML 콘텐츠에 대해 KeyUp 이벤트 처리기를 구현하는 방법을 보여 줍니다.


void StackPanel_KeyUp(object sender, KeyRoutedEventArgs e)
{
    statusTextBlock.Text = String.Format(
        "The key {0} was pressed while focus was on {1}",
        e.Key.ToString(), (e.OriginalSource as FrameworkElement).Name);
}


이전 처리기의 OriginalSource 속성 사용을 살펴보세요. 여기서 OriginalSource는 이벤트를 발생시킨 개체를 보고합니다. StackPanel은 컨트롤이 아니며 포커스를 가질 수 없으므로 개체가 StackPanel일 수는 없습니다. StackPanel 내의 두 단추 중 하나만 이벤트를 발생시킬 수 있는데 어떤 단추일까요? 부모 개체에서 이벤트를 처리하는 경우 OriginalSource를 사용하여 실제 이벤트 원본 개체를 구별합니다.

이벤트 데이터의 Handled 속성

이벤트 처리 전략에 따라 하나의 이벤트 처리기만 버블링 이벤트에 반응하도록 할 수 있습니다. 예를 들어 특정 KeyUp 처리기가 Button 컨트롤 중 하나에 연결되어 있는 경우 해당 이벤트를 처리할 수 있는 첫 번째 기회가 제공됩니다. 이 경우 부모 패널에서는 이벤트를 처리하지 않는 것이 좋습니다. 이 시나리오에서는 이벤트 데이터에 Handled 속성을 사용할 수 있습니다.

라우트된 이벤트 데이터 클래스의 Handled 속성은 이전에 이벤트 경로에 등록한 다른 처리기가 이미 적용되었음을 보고하는 데 사용됩니다. 이 속성은 라우트된 이벤트 시스템의 동작에 영향을 줍니다. 이벤트 처리기에서 Handledtrue로 설정하면 이 이벤트는 라우팅을 중지하고 다음 부모 요소로 전송되지 않습니다.

AddHandler 및 이미 처리된 키보드 이벤트

이미 처리된 것으로 표시된 이벤트에서 작동할 수 있는 처리기를 연결하는 특별한 기술을 사용할 수 있습니다. 이 기술은 XAML 특성 또는 C#에서 += 등의 처리기를 추가하는 언어별 구문을 사용하는 대신 AddHandler 메서드를 사용하여 처리기를 등록합니다. 이 기술의 제한 사항은 일반적으로 AddHandler API가 해당 라우트된 이벤트를 식별하는 RoutedEvent 유형의 매개 변수를 사용한다는 데 있습니다. 일부 라우트된 이벤트는 RoutedEvent 식별자를 제공하지 않으므로 이 경우 Handled에서 처리할 수 있는 라우트된 이벤트에 영향을 미칠 수 있습니다. KeyDownKeyUp 이벤트는 UIElement에 라우트된 이벤트 식별자(KeyDownEventKeyUpEvent)가 있습니다. 그러나 TextBox.TextChanged 등의 다른 이벤트에는 라우트된 이벤트 식별자가 없으므로 AddHandler 기술에 사용할 수 없습니다.

명령

일부 UI 요소는 명령 지원을 기본 제공합니다. 기본 구현에서 명령은 입력 관련 라우트된 이벤트를 사용합니다. 단일 명령 처리기를 호출하여 특정 포인터 작업이나 특정 액셀러레이터 키와 같은 관련 UI 입력을 처리할 수 있습니다.

UI 요소에 명령을 사용할 수 있는 경우 불연속 입력 이벤트 대신 명령 API를 사용하는 것이 좋습니다. 자세한 내용은 ButtonBase.Command를 참조하세요.

ICommand를 구현하여 일반 이벤트 처리기에서 호출하는 명령 기능을 캡슐화할 수도 있습니다. 이렇게 하면 사용 가능한 Command 속성이 없는 경우에도 명령을 사용할 수 있습니다.

텍스트 입력 및 컨트롤

일부 컨트롤은 직접 처리를 통해 키보드 이벤트에 반응합니다. 예를 들어 TextBox는 키보드로 입력된 텍스트를 캡처한 다음 시각적으로 표현하는 컨트롤입니다. 해당 논리에 KeyUpKeyDown을 사용하여 키 입력을 캡처한 다음 텍스트가 실제로 변경된 경우 고유한 TextChanged 이벤트도 발생시킵니다.

일반적으로 KeyUpKeyDown에 대한 처리기를 TextBox 또는 텍스트 입력을 처리하도록 고안된 관련 컨트롤에 추가할 수 있습니다. 그러나 디자인에서 의도된 대로 컨트롤이 키 이벤트를 통해 전달되는 모든 키 값에 응답하지 않을 수 있습니다. 동작은 각 컨트롤마다 다릅니다.

한 가지 예로 ButtonBase(Button의 기본 클래스)는 스페이스바 또는 Enter 키를 확인할 수 있게 KeyUp을 처리합니다. ButtonBaseKeyUpClick 이벤트를 발생시키기 위해 마우스 왼쪽 단추를 누르는 것과 동일한 것으로 간주합니다. 이러한 이벤트 처리는 ButtonBase가 가상 메서드 OnKeyUp을 재정의할 때 수행됩니다. 구현 시 Handledtrue로 설정합니다. 이 결과, 스페이스바의 경우 키 이벤트를 수신 대기하는 단추의 부모가 이미 처리된 이벤트를 해당 처리기에 받지 않습니다.

또 다른 예로 TextBox를 들 수 있습니다. 화살표 키와 같은 일부 키는 TextBox에서 텍스트로 간주되지 않고 컨트롤 UI 동작과 관련된 것으로 간주됩니다. TextBox는 이러한 이벤트를 처리된 것으로 표시합니다.

사용자 지정 컨트롤은 OnKeyDown/OnKeyUp을 재정의하여 키 이벤트에 대해 유사한 재정의 동작을 구현할 수 있습니다. 사용자 지정 컨트롤이 특정 액셀러레이터 키를 처리하거나 TextBox에 대해 설명된 시나리오와 비슷한 컨트롤 또는 포커스 동작을 갖는 경우 이 논리를 해당 OnKeyDown/OnKeyUp 재정의에 적용해야 합니다.

터치 키보드

텍스트 입력 컨트롤은 터치 키보드를 자동으로 지원합니다. 사용자가 터치식 입력을 사용하여 텍스트 컨트롤에 입력 포커스를 설정하면 터치 키보드가 자동으로 나타납니다. 텍스트 컨트롤에 입력 포커스가 없으면 터치 키보드가 숨겨집니다.

터치 키보드가 나타나면 포커스가 있는 요소가 표시되도록 UI 위치가 자동으로 조정됩니다. 이로 인해 UI의 다른 중요한 영역이 화면 바깥쪽으로 이동할 수 있습니다. 그러나 기본 동작을 사용하지 않도록 설정하고 터치 키보드가 나타날 때 직접 UI를 조정할 수 있습니다. 자세한 내용은 화상 키보드의 모양에 응답 샘플을 참조하세요.

텍스트 입력이 필요하지만 표준 텍스트 입력 컨트롤에서 파생되지 않는 사용자 지정 컨트롤을 만드는 경우 올바른 UI 자동화 제어 패턴을 구현하여 터치 키보드 지원을 추가할 수 있습니다. 자세한 내용은 터치 키보드 샘플을 참조하세요.

터치 키보드의 키를 누르면 하드웨어 키보드의 키를 누른 것처럼 KeyDownKeyUp 이벤트가 발생합니다. 그러나 터치 키보드는 입력 컨트롤에서 텍스트 조작에 예약된 Ctrl+A, Ctrl+Z, Ctrl+X, Ctrl+C 및 Ctrl+V에 대해 입력 이벤트를 발생시키지 않습니다.

키보드 상호 작용 지원을 위한 사용자 환경 지침

키보드 조작 지원을 위한 몇 가지 지침은 다음과 같습니다.

일반

    • Applies to Windows

    창:

    사용자가 하드웨어 키보드 또는 화상 키보드만 사용하여 앱이 지원하는 모든 작업을 수행할 수 있어야 합니다.

    참고  터치 키보드는 앱이나 시스템 명령이 아닌 텍스트 입력에만 사용됩니다.

  • 앱이 시작되면 사용자가 처음에 직관적으로 상호 작용하거나 가장 먼저 상호 작용하게 되는 요소에 초기 키보드 포커스를 설정합니다. 일반적으로 가장 적절한 위치는 사용자가 화살표 키를 사용하여 콘텐츠를 바로 스크롤할 수 있는 앱의 기본 콘텐츠 보기입니다. 포커스를 특정 컨트롤에 설정하는 방법에 대한 자세한 내용은 Focus를 참조하세요.
    • Applies to Windows

    창:

    Tab과 화살표 키가 왼쪽에서 오른쪽으로 콘텐츠를 이동하는지 확인합니다.
  • 기본적으로 탭 순서대로가 아닌 모든 대화형 UI 요소에 대해 TabIndex 속성을 0보다 크거나 같은 값으로 설정합니다. 화면 읽기 프로그램 사용자는 Tab 키를 사용하여 대화형 UI 요소 간을 이동하므로 TabIndex 속성을 설정하는 것이 중요합니다.
    • Applies to Windows

    창:

    복합 요소의 하위 요소 간의 적절한 내부 탐색을 위해 화살표 키를 바로 가기 키로 사용합니다. 트리 뷰 노드에 확장/축소 처리와 노드 활성화에 대한 별도의 하위 요소가 있는 경우 왼쪽 및 오른쪽 화살표 키를 사용하여 키보드 확장/축소 기능을 제공합니다.
  • 클릭할 수 있는 각 UI 요소를 키보드로도 호출할 수 있는지 확인합니다.
    • Applies to Windows

    창:

    주요 앱 기능에 대한 바로 가기 키를 구현합니다. 바로 가기는 사용자가 앱 기능에 액세스하는 효율적인 방법을 제공하여 생산성을 향상시키는 키 조합입니다.

    선택키는 앱의 UI 요소에 대한 바로 가기입니다. Alt 키와 문자 키로 구성됩니다.

    바로 가기 키는 앱 명령에 대한 바로 가기입니다. 앱은 명령에 정확히 일치하는 UI를 포함할 수 있습니다. 바로 가기 키는 Ctrl 키와 문자 키로 구성됩니다.

    따라서 화면 낭독 프로그램 및 다른 보조 기술을 사용하는 사용자에게 앱의 바로 가기 키를 찾을 수 있는 손쉬운 방법을 제공할 필요가 있습니다. AccessKey 속성을 사용하여 앱의 HTML 태그에서 바로 가기 키를 선언하고 도구 설명, 액세스 가능한 이름, 액세스 가능한 설명 또는 기타 화상 통신 형식을 사용하여 바로 가기 키를 전달합니다. 바로 가기 키에 대한 설명이 앱의 도움말 콘텐츠에 잘 나타나 있어야 합니다.

    바로 가기 키 구현에 대한 자세한 내용은 Windows 사용자 환경 지침에서 바로 가기 키를 참조하세요.

    사용자가 모든 Windows 스토어 앱 내에서 예상하는 기본 바로 가기 키를 다시 정의하지 마세요. 전체 목록은 바로 가기 키를 참조하세요.

하드웨어

키보드 장치 기능(KeyboardCapabilities)을 쿼리하여 키보드가 연결되어 있는지 확인하고 키보드 하드웨어에서 직접 액세스할 수 있는 앱 UI 측면을 식별합니다. 장치 기능 쿼리에 대한 자세한 내용은 빠른 시작: 포인터 장치 식별을 참조하세요.

키보드 단추를 앱의 적절한 UI(뒤로 및 앞으로 단추)에 연결합니다.

시각적 피드백

  • 키보드 조작 시에만 포커스 사각형을 사용합니다. 사용자가 터치 조작을 시작하는 경우 키보드 UI가 점점 사라지도록 합니다. 이렇게 하면 UI가 깔끔하고 간결하게 유지됩니다.
  • 요소가 조작을 지원하지 않는 경우(예: 정적 테스트) 시각적 피드백을 표시하지 마세요.
  • 동일한 입력 대상을 나타내는 모든 요소에 대해 동시에 시각적 피드백을 표시합니다.
  • 이동, 회전, 확대/축소 등의 터치 기반 조작을 에뮬레이트하기 위한 힌트로 화상 단추(예: + 및 -)를 제공합니다.

시각적 피드백에 대한 일반적인 내용은 시각적 피드백에 대한 지침을 참조하세요.

관련 항목

개념
사용자 조작에 응답
빠른 시작: HTML 컨트롤 추가 및 이벤트 처리
키보드 접근성 구현
C++, C# 또는 Visual Basic으로 작성한 Windows 스토어 앱의 접근성
텍스트 표시 및 편집
입력 호스팅 관리자 및 터치 키보드

 

 

표시:
© 2014 Microsoft