Udostępnij za pośrednictwem


Klucze dostępu

Klawisze dostępu to skróty klawiaturowe, które zwiększają użyteczność i dostępność aplikacji Windows, zapewniając intuicyjny sposób szybkiego nawigowania i interakcji z widocznym interfejsem użytkownika aplikacji za pomocą klawiatury zamiast urządzenia wskazującego (np. dotykowego interfejsu lub myszy).

Aplikacja systemu Windows zapewnia wbudowaną obsługę kontrolek platformy dla dostępu opartego na klawiaturze i sprzężenia zwrotnego interfejsu użytkownika za pośrednictwem wizualnych wskazówek nazywanych podpowiedziami klawiszy.

Uwaga / Notatka

Klawiatura jest niezbędna dla użytkowników z pewnymi niepełnosprawnościami (zobacz ułatwienia dostępu klawiatury), a także jest ważnym narzędziem dla użytkowników, którzy wolą go jako bardziej wydajny sposób interakcji z aplikacją.

Aby uzyskać szczegółowe informacje na temat wywoływania typowych akcji w aplikacji Windows za pomocą skrótów klawiaturowych, zobacz temat Klawisze akceleratora.

Aby utworzyć własne niestandardowe skróty klawiaturowe, zobacz sekcję Zdarzenia klawiatury.

Przegląd

Klucz dostępu jest kombinacją Alt i co najmniej jednego klucza alfanumerycznego — czasami nazywanego mnemonic — zwykle naciskaną sekwencyjnie, a nie jednocześnie.

Podpowiedzi klawiszy są wyświetlane obok kontrolek, które obsługują klawisze dostępu, gdy użytkownik naciska klawisz Alt. Każda etykietka klucza zawiera klucze alfanumeryczne, które aktywują skojarzona kontrolkę.

Uwaga / Notatka

Skróty klawiaturowe są automatycznie obsługiwane dla klawiszy dostępu z pojedynczym znakiem alfanumerycznym. Na przykład jednoczesne naciśnięcie Alt+F w programie Word otwiera menu Plik bez wyświetlania podpowiedzi klawiszy.

Wciśnięcie klawisza Alt inicjuje funkcję skrótu klawiaturowego i wyświetla wszystkie obecnie dostępne kombinacje w formie podpowiedzi klawiszowych. Kolejne naciśnięcia klawiszy są obsługiwane przez strukturę klawiszy dostępu, która odrzuca nieprawidłowe klawisze do momentu naciśnięcia prawidłowego klucza dostępu lub naciśnięcia Enter, Esc, Tab lub strzałki w celu dezaktywowania klawiszy dostępu i zwrócenia obsługi naciśnięć przez aplikację.

Aplikacje pakietu Microsoft Office zapewniają obszerną obsługę kluczy dostępu. Na poniższej ilustracji przedstawiono kartę Narzędzia główne programu Word z aktywowanymi kluczami dostępu (zwróć uwagę na obsługę liczb i wielu naciśnięć).

identyfikatory skrótów klawiszowych dla kluczy dostępu w programie Microsoft Word

znaczki KeyTip dla kluczy dostępu w programie Microsoft Word

Aby dodać klucz dostępu do kontrolki, użyj właściwości AccessKey. Wartość tej właściwości określa kombinację klawiszy dostępu, skróty (jeśli jest to pojedynczy znak alfanumeryczny) i podpowiedź dotyczącą klawisza.

<Button Content="Accept" AccessKey="A" Click="AcceptButtonClick" />

Kiedy należy używać kluczy dostępu

Zalecamy określenie kluczy dostępu wszędzie tam, gdzie jest to odpowiednie w interfejsie użytkownika, i obsługę kluczy dostępu we wszystkich kontrolkach niestandardowych.

  1. Klucze dostępu sprawiają, że aplikacja jest bardziej dostępna dla użytkowników niepełnosprawnych ruchowo, w tym tych użytkowników, którzy mogą naciskać tylko jeden naraz lub mieć trudności z użyciem myszy.

    Dobrze zaprojektowany interfejs użytkownika klawiatury jest ważnym aspektem ułatwień dostępu do oprogramowania. Umożliwia użytkownikom upośledzenie wzroku lub osobom niepełnosprawnym ruchowym nawigowanie po aplikacji i interakcję z jej funkcjami. Tacy użytkownicy mogą nie być w stanie obsługiwać myszy i zamiast tego polegać na różnych technologiach pomocniczych, takich jak narzędzia do ulepszania klawiatury, klawiatury ekranowe, powiększacze ekranu, czytniki ekranu i narzędzia wprowadzania głosu. Dla tych użytkowników kluczowe jest zapewnienie kompleksowego pokrycia poleceń.

  2. Klucze dostępu sprawiają, że aplikacja będzie bardziej użyteczna dla użytkowników, którzy wolą korzystać z klawiatury.

    Doświadczeni użytkownicy często mają silne preferencje dotyczące używania klawiatury, ponieważ polecenia oparte na klawiaturze można wprowadzać szybciej i nie wymagają od nich usunięcia rąk z klawiatury. Dla tych użytkowników kluczowe znaczenie mają wydajność i spójność; kompleksowość jest ważna tylko w przypadku najczęściej używanych poleceń.

Ustawianie zakresu klucza dostępu

Jeśli na ekranie jest dostępnych wiele elementów obsługujących klawisze dostępu, zalecamy ograniczenie zasięgu klawiszy dostępu w celu zmniejszenia obciążenia poznawczego. Minimalizuje to liczbę kluczy dostępu na ekranie, co ułatwia ich lokalizowanie i poprawia wydajność i produktywność.

Na przykład, program Microsoft Word oferuje dwa obszary kluczy dostępu: główny obszar dla kart Wstążki i dodatkowy obszar dla poleceń na wybranej karcie.

Na poniższych obrazach przedstawiono dwa zakresy kluczy dostępu w programie Word. Pierwszy zestaw pokazuje podstawowe skróty klawiszowe, które pozwalają użytkownikowi wybrać kartę i inne główne polecenia, a drugi zestaw pokazuje pomocnicze skróty klawiszowe dla karty Start.

Podstawowe klucze dostępu w programie Microsoft Word w programie Microsoft Word

klawisze skrótu w programie Microsoft Word klawisze skrótu w programie Microsoft Word

Klucze dostępu można duplikować dla elementów w różnych zakresach. W poprzednim przykładzie "2" jest kluczem dostępu do cofania w zakresie podstawowym, a także do Kursywy w zakresie pomocniczym.

W tym miejscu pokazano, jak zdefiniować zakres klucza dostępu.

<CommandBar x:Name="MainCommandBar" AccessKey="M" >
    <AppBarButton AccessKey="G" Icon="Globe" Label="Go"/>
    <AppBarButton AccessKey="S" Icon="Stop" Label="Stop"/>
    <AppBarSeparator/>
    <AppBarButton AccessKey="R" Icon="Refresh" Label="Refresh" IsAccessKeyScope="True">
        <AppBarButton.Flyout>
            <MenuFlyout>
                <MenuFlyoutItem AccessKey="A" Icon="Globe" Text="Refresh A" />
                <MenuFlyoutItem AccessKey="B" Icon="Globe" Text="Refresh B" />
                <MenuFlyoutItem AccessKey="C" Icon="Globe" Text="Refresh C" />
                <MenuFlyoutItem AccessKey="D" Icon="Globe" Text="Refresh D" />
            </MenuFlyout>
        </AppBarButton.Flyout>
    </AppBarButton>
    <AppBarButton AccessKey="B" Icon="Back" Label="Back"/>
    <AppBarButton AccessKey="F" Icon="Forward" Label="Forward"/>
    <AppBarSeparator/>
    <AppBarToggleButton AccessKey="T" Icon="Favorite" Label="Favorite"/>
    <CommandBar.SecondaryCommands>
        <AppBarToggleButton Icon="Like" AccessKey="L" Label="Like"/>
        <AppBarButton Icon="Setting" AccessKey="S" Label="Settings" />
    </CommandBar.SecondaryCommands>
</CommandBar>

Podstawowe klucze dostępu dla CommandBar

Zakres podstawowy paska poleceń i obsługiwane klucze dostępu

dodatkowe klucze dostępu dla CommandBar

dodatkowy zakres CommandBar i obsługiwane klawisze dostępu

Windows 10 Creators Update i starsze

Przed aktualizacją Windows 10 Fall Creators Update niektóre kontrolki, takie jak CommandBar, nie obsługiwały wbudowanych zakresów kluczy dostępu.

W poniższym przykładzie pokazano, jak obsługiwać pomocnicze polecenia CommandBar z kluczami dostępu, które są dostępne po wywołaniu polecenia nadrzędnego (podobnie jak wstążka w programie Word).

<local:CommandBarHack x:Name="MainCommandBar" AccessKey="M" >
    <AppBarButton AccessKey="G" Icon="Globe" Label="Go"/>
    <AppBarButton AccessKey="S" Icon="Stop" Label="Stop"/>
    <AppBarSeparator/>
    <AppBarButton AccessKey="R" Icon="Refresh" Label="Refresh" IsAccessKeyScope="True">
        <AppBarButton.Flyout>
            <MenuFlyout>
                <MenuFlyoutItem AccessKey="A" Icon="Globe" Text="Refresh A" />
                <MenuFlyoutItem AccessKey="B" Icon="Globe" Text="Refresh B" />
                <MenuFlyoutItem AccessKey="C" Icon="Globe" Text="Refresh C" />
                <MenuFlyoutItem AccessKey="D" Icon="Globe" Text="Refresh D" />
            </MenuFlyout>
        </AppBarButton.Flyout>
    </AppBarButton>
    <AppBarButton AccessKey="B" Icon="Back" Label="Back"/>
    <AppBarButton AccessKey="F" Icon="Forward" Label="Forward"/>
    <AppBarSeparator/>
    <AppBarToggleButton AccessKey="T" Icon="Favorite" Label="Favorite"/>
    <CommandBar.SecondaryCommands>
        <AppBarToggleButton Icon="Like" AccessKey="L" Label="Like"/>
        <AppBarButton Icon="Setting" AccessKey="S" Label="Settings" />
    </CommandBar.SecondaryCommands>
</local:CommandBarHack>
public class CommandBarHack : CommandBar
{
    CommandBarOverflowPresenter secondaryItemsControl;
    Popup overflowPopup;

    public CommandBarHack()
    {
        this.ExitDisplayModeOnAccessKeyInvoked = false;
        AccessKeyInvoked += OnAccessKeyInvoked;
    }

    protected override void OnApplyTemplate()
    {
        base.OnApplyTemplate();

        Button moreButton = GetTemplateChild("MoreButton") as Button;
        moreButton.SetValue(Control.IsTemplateKeyTipTargetProperty, true);
        moreButton.IsAccessKeyScope = true;

        // SecondaryItemsControl changes
        secondaryItemsControl = GetTemplateChild("SecondaryItemsControl") as CommandBarOverflowPresenter;
        secondaryItemsControl.AccessKeyScopeOwner = moreButton;

        overflowPopup = GetTemplateChild("OverflowPopup") as Popup;
    }

    private void OnAccessKeyInvoked(UIElement sender, AccessKeyInvokedEventArgs args)
    {
        if (overflowPopup != null)
        {
            overflowPopup.Opened += SecondaryMenuOpened;
        }
    }

    private void SecondaryMenuOpened(object sender, object e)
    {
        //This is not necessary given we are automatically pushing the scope.
        var item = secondaryItemsControl.Items.First();
        if (item != null && item is Control)
        {
            (item as Control).Focus(FocusState.Keyboard);
        }
        overflowPopup.Opened -= SecondaryMenuOpened;
    }
}

Unikaj kolizji kluczy dostępu

Kolizje klucza dostępu występują, gdy co najmniej dwa elementy w tym samym zakresie mają zduplikowane klucze dostępu lub zaczynają się od tych samych znaków alfanumerycznych.

System rozwiązuje zduplikowane klucze dostępu, przetwarzając klucz dostępu pierwszego elementu dodanego do drzewa wizualizacji, ignorując wszystkie inne.

Gdy wiele kluczy dostępu zaczyna się od tego samego znaku (na przykład "A", "A1" i "AB"), system przetwarza klucz dostępu z jednym znakiem i ignoruje wszystkie inne.

Unikaj kolizji, używając unikatowych kluczy dostępu lub ograniczając polecenia.

Wybieranie kluczy dostępu

Podczas wybierania kluczy dostępu należy wziąć pod uwagę następujące kwestie:

  • Użyj pojedynczego znaku, aby zminimalizować naciśnięcia klawiszy i obsługiwać klawisze skrótu (Alt+AccessKey) domyślnie.
  • Unikaj używania więcej niż dwóch znaków
  • Unikaj kolizji kluczy dostępu
  • Unikaj znaków, które są trudne do odróżnienia od innych znaków, takich jak litera "I" i cyfra "1" lub litera "O" i cyfra "0"
  • Używaj dobrze znanych precedensów z innych popularnych aplikacji, takich jak Word ("F" dla "Plik", "H" dla "Strona główna", itd.)
  • Użyj pierwszego znaku nazwy polecenia lub znaku z bliskim skojarzeniem do polecenia, które pomaga przypomnieć
    • Jeśli pierwsza litera jest już przypisana, użyj litery, która jest jak najbardziej zbliżona do pierwszej litery nazwy polecenia ("N" dla Wstaw)
    • Użyj charakterystycznej spółgłoski z nazwy polecenia ("W" dla Widoku)
    • Użyj samogłoski z nazwy polecenia.

Lokalizowanie kluczy dostępu

Jeśli aplikacja będzie lokalizowana w wielu językach, należy również rozważyć zlokalizowanie kluczy dostępu. Na przykład „H” dla „Strona główna” w en-US i „I” dla „Inicio” w es-ES.

Użyj rozszerzenia x:Uid w znaczniku, aby zastosować zlokalizowane zasoby, jak pokazano poniżej:

<Button Content="Home" AccessKey="H" x:Uid="HomeButton" />

Zasoby dla każdego języka są dodawane do odpowiednich folderów Stringów w projekcie:

folderów ciągów zasobów w języku angielskim i hiszpańskim

foldery z ciągami zasobów w języku angielskim i hiszpańskim

Zlokalizowane klucze dostępu są określone w pliku resources.resw zasobów projektów.

Określ właściwość AccessKey określoną w pliku resources.resw

Określ właściwość AccessKey określoną w pliku resources.resw

Aby uzyskać więcej informacji, zobacz Tłumaczenie zasobów interfejsu użytkownika

Pozycjonowanie wskazówek klawiszy

Podpowiedzi klawiszowe są wyświetlane jako pływające etykiety względem odpowiedniego elementu interfejsu użytkownika, z uwzględnieniem obecności innych elementów interfejsu użytkownika, pozostałych podpowiedzi klawiszowych i krawędzi ekranu.

Zazwyczaj domyślna lokalizacja wskazówki klawisza jest wystarczająca i zapewnia wbudowaną obsługę adaptacyjnego interfejsu użytkownika.

** Przykład automatycznego umieszczania wskazówek klawiszy

Przykład automatycznego umieszczania podpowiedzi klawisza

Jednak jeśli potrzebujesz większej kontroli nad pozycjonowaniem klawiszowych wskazówek, zalecamy wykonanie następujących czynności:

  1. Oczywista zasada kojarzenia: użytkownik może łatwo skojarzyć kontrolkę z kluczem klawiszowym.

    a. Etykieta klucza powinna być blisko elementu, który ma przypisany klucz dostępu (właściciel).
    b. Wskaźnik dostępu powinien unikać zakrywania włączonych elementów posiadających klawisze dostępu.
    c. Jeśli nie można umieścić podpowiedzi klawiszowej blisko jej właściciela, powinna nakładać się na właściciela. 

  2. Odnajdywanie: Użytkownik może szybko odnaleźć element sterujący za pomocą podpowiedzi klawiszowej.

    a. Podpowiedź klawiszowa nigdy nie nachodzi na inne podpowiedzi klawiszowe.  

  3. Łatwe skanowanie: Użytkownik może łatwo przeglądać wskazówki klawiszy.

    a. podpowiedzi klawiszowe powinny być wyrównane ze sobą i z elementem interfejsu użytkownika. b. etykietki kluczy powinny być pogrupowane jak najwięcej. 

Położenie względne

Użyj właściwości KeyTipPlacementMode, aby dostosować umieszczanie etykietki klucza dla poszczególnych elementów lub poszczególnych grup.

Tryby umieszczania to: Górny, Dolny, Prawy, Lewy, Ukryty, Środkowy i Automatyczny.

Zrzut ekranu przedstawiający względne pozycje trybów umieszczania etykietek kluczy

tryby umieszczania wskazówek klawiszy

Środkowa linia kontrolki służy do obliczania wyrównania pionowego i poziomego oznaczenia klawisza.

W poniższym przykładzie pokazano, jak ustawić położenie podpowiedzi klawiszowych grupy elementów sterujących przy użyciu właściwości KeyTipPlacementMode kontenera StackPanel.

<StackPanel Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" KeyTipPlacementMode="Top">
  <Button Content="File" AccessKey="F" />
  <Button Content="Home" AccessKey="H" />
  <Button Content="Insert" AccessKey="N" />
</StackPanel>

Przesunięcia

Użyj właściwości KeyTipHorizontalOffset i KeyTipVerticalOffset elementu, aby uzyskać jeszcze bardziej szczegółową kontrolę lokalizacji podpowiedzi klawisza.

Uwaga / Notatka

Nie można ustawić przesunięcia, gdy dla opcji KeyTipPlacementMode ustawiono wartość Auto.

Właściwość KeyTipHorizontalOffset wskazuje, jak daleko przenieść etykietkę klucza w lewo lub w prawo.

Zrzut ekranu przedstawiający pionowe i poziome offsety etykietek dla przycisku

Ustaw przesunięcia klawiszy dostępu w pionie i poziomie dla przycisku

<Button
  Content="File"
  AccessKey="F"
  KeyTipPlacementMode="Bottom"
  KeyTipHorizontalOffset="20"
  KeyTipVerticalOffset="-8" />

Wyrównanie krawędzi ekranu {#screen-edge-alignment .ListParagraph}

Lokalizacja keytipu jest automatycznie dostosowywana w oparciu o krawędź ekranu, aby była w pełni widoczna. W takim przypadku odległość między elementem sterującym a punktem wskazania klucza może się różnić od wartości określonych dla przesunięć poziomych i pionowych.

Zrzut ekranu przedstawiający wyrównanie krawędzi ekranu podpowiedzi klucza

podpowiedzi klawisza są automatycznie ustawiane na podstawie krawędzi ekranu

Styl skrótu klawiszowego

Zalecamy korzystanie z wbudowanego wsparcia dla skrótów klawiaturowych w motywach platformy, w tym z wysokiego kontrastu.

Jeśli musisz określić własne style wskazówek klawiszy, użyj zasobów aplikacji, takich jak KeyTipFontSize (rozmiar czcionki), KeyTipFontFamily (rodzina czcionek), KeyTipBackground (tło), KeyTipForeground (kolor czcionki), KeyTipPadding (margines wewnętrzny), KeyTipBorderBrush (kolor obramowania) i KeyTipBorderThemeThickness (grubość obramowania).

Zrzut ekranu przedstawiający dostępne opcje dostosowywania, w tym czcionkę, kolejność i kolor etykietki klucza

opcje dostosowywania kluczowej etykiety

W tym przykładzie pokazano, jak zmienić te zasoby aplikacji:

<Application.Resources>
 <SolidColorBrush Color="DarkGray" x:Key="MyBackgroundColor" />
 <SolidColorBrush Color="White" x:Key="MyForegroundColor" />
 <SolidColorBrush Color="Black" x:Key="MyBorderColor" />
 <StaticResource x:Key="KeyTipBackground" ResourceKey="MyBackgroundColor" />
 <StaticResource x:Key="KeyTipForeground" ResourceKey="MyForegroundColor" />
 <StaticResource x:Key="KeyTipBorderBrush" ResourceKey="MyBorderColor"/>
 <FontFamily x:Key="KeyTipFontFamily">Consolas</FontFamily>
 <x:Double x:Key="KeyTipContentThemeFontSize">18</x:Double>
 <Thickness x:Key="KeyTipBorderThemeThickness">2</Thickness>
 <Thickness x:Key="KeyTipThemePadding">4,4,4,4</Thickness>
</Application.Resources>

Klawisze dostępu i Narrator

Struktura XAML uwidacznia właściwości automatyzacji, które umożliwiają klientom automatyzacji interfejsu użytkownika odnajdywanie informacji o elementach w interfejsie użytkownika.

Jeśli określisz właściwość AccessKey w kontrolce UIElement lub TextElement, możesz użyć właściwości AutomationProperties.AccessKey , aby uzyskać tę wartość. Narzędzia ułatwień dostępu, takie jak Narrator, odczytują wartość tej właściwości za każdym razem, gdy element jest skupiony.

Próbki