다음을 통해 공유


입력 디바이스 식별

Windows 앱에 연결된 입력 디바이스를 식별하고 해당 기능 및 특성을 식별합니다.

중요 API: Windows.Devices.Input, Windows.UI.Input, Windows.UI.Xaml.Input

마우스 속성 검색

Windows.Devices.Input 네임스페이스에는 연결된 마우스 하나 이상에 의해 노출되는 속성을 검색하는 데 사용되는 MouseCapabilities 클래스가 포함되어 있습니다. 새 MouseCapabilities 개체를 만들고 관심 있는 속성을 가져오기만 하면 됩니다.

참고 여기서 설명하는 속성에서 반환하는 값은 검색된 모든 마우스를 기반으로 합니다. 하나 이상의 마우스가 특정 기능을 지원하는 경우 부울 속성은 0이 아닌 값을 반환하고 숫자 속성은 한 마우스에서 노출하는 최대값을 반환합니다.

 

다음 코드는 일련의 TextBlock 요소를 사용하여 개별 마우스 속성 및 값을 표시합니다.

private void GetMouseProperties()
{
    MouseCapabilities mouseCapabilities = new Windows.Devices.Input.MouseCapabilities();
    MousePresent.Text = mouseCapabilities.MousePresent != 0 ? "Yes" : "No";
    VertWheel.Text = mouseCapabilities.VerticalWheelPresent != 0 ? "Yes" : "No";
    HorzWheel.Text = mouseCapabilities.HorizontalWheelPresent != 0 ? "Yes" : "No";
    SwappedButtons.Text = mouseCapabilities.SwapButtons != 0 ? "Yes" : "No";
    NumButtons.Text = mouseCapabilities.NumberOfButtons.ToString();
}

키보드 속성 검색

Windows.Devices.Input 네임스페이스에는 키보드가 연결되었는지 여부를 검색하는 데 사용되는 KeyboardCapabilities 클래스가 포함되어 있습니다. 새 KeyboardCapabilities 개체를 만들고 KeyboardPresent 속성을 가져오면 됩니다.

다음 코드에서는 TextBlock 요소를 사용하여 키보드 속성과 값을 표시합니다.

private void GetKeyboardProperties()
{
    KeyboardCapabilities keyboardCapabilities = new Windows.Devices.Input.KeyboardCapabilities();
    KeyboardPresent.Text = keyboardCapabilities.KeyboardPresent != 0 ? "Yes" : "No";
}

터치 속성 검색

Windows.Devices.Input 네임스페이스에는 터치 디지타이저가 연결되어 있는지 여부를 검색하는 데 사용되는 TouchCapabilities 클래스가 포함되어 있습니다. 새 TouchCapabilities 개체를 만들고 관심 있는 속성을 가져오면 됩니다

참고 여기서 설명하는 속성에서 반환하는 값은 검색된 모든 디지타이저를 기반으로 합니다. 하나 이상의 디지타이저가 특정 기능을 지원하는 경우 부울 속성은 0이 아닌 값을 반환하고 숫자 속성은 한 디지타이저에서 노출하는 최대값을 반환합니다.

 

다음 코드는 일련의 TextBlock 요소를 사용하여 터치 속성 및 값을 표시합니다.

private void GetTouchProperties()
{
    TouchCapabilities touchCapabilities = new Windows.Devices.Input.TouchCapabilities();
    TouchPresent.Text = touchCapabilities.TouchPresent != 0 ? "Yes" : "No";
    Contacts.Text = touchCapabilities.Contacts.ToString();
}

포인터 속성 검색

Windows.Devices.Input 네임스페이스에는 검색된 디바이스가 포인터 입력(터치, 터치 패드, 마우스 또는 펜)을 지원하는지 여부를 검색하는 데 사용되는 PointerDevice 클래스가 포함되어 있습니다. 새 PointerDevice 개체를 만들고 관심 있는 속성을 가져오면 됩니다

참고 여기서 설명하는 속성에서 반환하는 값은 검색된 모든 포인터 디바이스를 기반으로 합니다. 하나 이상의 디바이스가 특정 기능을 지원하는 경우 부울 속성은 0이 아닌 값을 반환하고 숫자 속성은 한 포인터 디바이스에서 노출하는 최대값을 반환합니다.

다음 코드는 테이블을 사용하여 각 포인터 디바이스의 속성과 값을 표시합니다.

private void GetPointerDevices()
{
    IReadOnlyList<PointerDevice> pointerDevices = Windows.Devices.Input.PointerDevice.GetPointerDevices();
    int gridRow = 0;
    int gridColumn = 0;

    for (int i = 0; i < pointerDevices.Count; i++)
    {
        // Pointer device type.
        TextBlock textBlock1 = new TextBlock();
        Grid_PointerProps.Children.Add(textBlock1);
        textBlock1.Text = (i + 1).ToString() + " Pointer Device Type:";
        Grid.SetRow(textBlock1, gridRow);
        Grid.SetColumn(textBlock1, gridColumn);

        TextBlock textBlock2 = new TextBlock();
        textBlock2.Text = pointerDevices[i].PointerDeviceType.ToString();
        Grid_PointerProps.Children.Add(textBlock2);
        Grid.SetRow(textBlock2, gridRow++);
        Grid.SetColumn(textBlock2, gridColumn + 1);

        // Is external?
        TextBlock textBlock3 = new TextBlock();
        Grid_PointerProps.Children.Add(textBlock3);
        textBlock3.Text = (i + 1).ToString() + " Is External?";
        Grid.SetRow(textBlock3, gridRow);
        Grid.SetColumn(textBlock3, gridColumn);

        TextBlock textBlock4 = new TextBlock();
        Grid_PointerProps.Children.Add(textBlock4);
        textBlock4.Text = pointerDevices[i].IsIntegrated.ToString();
        Grid.SetRow(textBlock4, gridRow++);
        Grid.SetColumn(textBlock4, gridColumn + 1);

        // Maximum contacts.
        TextBlock textBlock5 = new TextBlock();
        Grid_PointerProps.Children.Add(textBlock5);
        textBlock5.Text = (i + 1).ToString() + " Max Contacts:";
        Grid.SetRow(textBlock5, gridRow);
        Grid.SetColumn(textBlock5, gridColumn);

        TextBlock textBlock6 = new TextBlock();
        Grid_PointerProps.Children.Add(textBlock6);
        textBlock6.Text = pointerDevices[i].MaxContacts.ToString();
        Grid.SetRow(textBlock6, gridRow++);
        Grid.SetColumn(textBlock6, gridColumn + 1);

        // Physical device rectangle.
        TextBlock textBlock7 = new TextBlock();
        Grid_PointerProps.Children.Add(textBlock7);
        textBlock7.Text = (i + 1).ToString() + " Physical Device Rect:";
        Grid.SetRow(textBlock7, gridRow);
        Grid.SetColumn(textBlock7, gridColumn);

        TextBlock textBlock8 = new TextBlock();
        Grid_PointerProps.Children.Add(textBlock8);
        textBlock8.Text = pointerDevices[i].PhysicalDeviceRect.X.ToString() + "," +
            pointerDevices[i].PhysicalDeviceRect.Y.ToString() + "," +
            pointerDevices[i].PhysicalDeviceRect.Width.ToString() + "," +
            pointerDevices[i].PhysicalDeviceRect.Height.ToString();
        Grid.SetRow(textBlock8, gridRow++);
        Grid.SetColumn(textBlock8, gridColumn + 1);

        // Screen rectangle.
        TextBlock textBlock9 = new TextBlock();
        Grid_PointerProps.Children.Add(textBlock9);
        textBlock9.Text = (i + 1).ToString() + " Screen Rect:";
        Grid.SetRow(textBlock9, gridRow);
        Grid.SetColumn(textBlock9, gridColumn);

        TextBlock textBlock10 = new TextBlock();
        Grid_PointerProps.Children.Add(textBlock10);
        textBlock10.Text = pointerDevices[i].ScreenRect.X.ToString() + "," +
            pointerDevices[i].ScreenRect.Y.ToString() + "," +
            pointerDevices[i].ScreenRect.Width.ToString() + "," +
            pointerDevices[i].ScreenRect.Height.ToString();
        Grid.SetRow(textBlock10, gridRow++);
        Grid.SetColumn(textBlock10, gridColumn + 1);

        gridColumn += 2;
        gridRow = 0;
    }

샘플

보관 샘플