Chiavi di accesso

I tasti di scelta rapida sono tasti di scelta rapida che migliorano l'usabilità e l'accessibilità delle applicazioni Windows offrendo agli utenti un modo intuitivo per spostarsi e interagire rapidamente con l'interfaccia utente visibile di un'app tramite una tastiera anziché un dispositivo puntatore (ad esempio tocco o mouse).

L'app Windows offre il supporto predefinito tra i controlli della piattaforma per i tasti di scelta basata su tastiera e il feedback dell'interfaccia utente associato tramite segnali visivi denominati key Suggerimenti.

Nota

Una tastiera è indispensabile per gli utenti con determinate disabilità (vedi Accessibilità della tastiera) ed è anche uno strumento importante per gli utenti che preferiscono come un modo più efficiente per interagire con un'app.

Vedere l'argomento Tasti di scelta rapida per informazioni dettagliate sulla chiamata di azioni comuni in un'applicazione Windows con tasti di scelta rapida.

Per creare scelte rapide da tastiera personalizzate, vedere l'argomento Eventi della tastiera .

Panoramica

Un tasto di scelta è una combinazione del tasto ALT e di uno o più tasti alfanumerici, talvolta chiamati mnemonic, in genere premuti in sequenza, anziché simultaneamente.

I suggerimenti per i tasti sono badge visualizzati accanto ai controlli che supportano i tasti di scelta quando l'utente preme il tasto ALT. Ogni suggerimento chiave contiene le chiavi alfanumerici che attivano il controllo associato.

Nota

I tasti di scelta rapida sono supportati automaticamente per i tasti di scelta con un singolo carattere alfanumerico. Ad esempio, premendo simultaneamente ALT+F in Word si apre il menu File senza visualizzare Il tasto Suggerimenti.

Premendo ALT si inizializza la funzionalità del tasto di scelta e vengono visualizzate tutte le combinazioni di tasti attualmente disponibili in Key Suggerimenti. Le sequenze di tasti successive vengono gestite dal framework dei tasti di scelta, che rifiuta i tasti non validi finché non viene premuto un tasto di scelta valido oppure i tasti INVIO, ESC, TAB o Freccia vengono premuti per disattivare i tasti di scelta e restituire la gestione delle sequenze di tasti all'app.

Microsoft Office le app offrono un supporto completo per le chiavi di accesso. L'immagine seguente mostra la scheda Home di Word con tasti di scelta attivati (si noti il supporto per numeri e più sequenze di tasti).

Key Tip badges for access keys in Microsoft Word

Badge di descrizione chiave per le chiavi di accesso in Microsoft Word

Per aggiungere una chiave di accesso a un controllo, utilizzare la proprietà AccessKey. Il valore di questa proprietà specifica la sequenza di tasti di scelta rapida, il tasto di scelta rapida (se un singolo alfanumerico) e il suggerimento per i tasti.

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

Quando usare le chiavi di accesso

È consigliabile specificare le chiavi di accesso ovunque sia appropriato nell'interfaccia utente e supportare le chiavi di accesso in tutti i controlli personalizzati.

  1. I tasti di scelta rendono l'app più accessibile per gli utenti con disabilità motorie, inclusi gli utenti che possono premere un solo tasto alla volta o avere difficoltà a usare un mouse.

    Un'interfaccia utente di tastiera ben progettata è un aspetto importante dell'accessibilità del software. Consente agli utenti con problemi di vista o con determinate disabilità motorie di esplorare un'app e interagire con le sue funzionalità. Questi utenti potrebbero non essere in grado di manovrare un mouse e fare affidamento su diversi strumenti di Assistive Technology, ad esempio strumenti per il miglioramento della tastiera, tastiere su schermo, strumenti per l'ingrandimento o per la lettura dello schermo e per utilità per l'input vocale. Per questi utenti, la copertura completa dei comandi è fondamentale.

  2. I tasti di scelta rendono l'app più utilizzabile per gli utenti esperti che preferiscono interagire tramite la tastiera.

    Gli utenti esperti hanno spesso una forte preferenza per l'uso della tastiera perché i comandi basati su tastiera possono essere immessi più rapidamente e non richiedono loro di rimuovere le mani dalla tastiera. Per questi utenti, efficienza e coerenza sono indispensabili. La completezza è importante solo per i comandi usati più di frequente.

Impostare l'ambito della chiave di accesso

Quando sono presenti molti elementi sullo schermo che supportano i tasti di scelta, è consigliabile definire l'ambito delle chiavi di accesso per ridurre il carico cognitivo. Ciò riduce al minimo il numero di tasti di scelta sullo schermo, che li rende più facili da individuare e migliora l'efficienza e la produttività.

Ad esempio, Microsoft Word fornisce due ambiti chiave di accesso: un ambito primario per le schede della barra multifunzione e un ambito secondario per i comandi nella scheda selezionata.

Le immagini seguenti illustrano i due ambiti chiave di accesso in Word. Il primo mostra i tasti di scelta primari che consentono a un utente di selezionare una scheda e altri comandi di primo livello e il secondo mostra i tasti di scelta secondari per la scheda Home.

Primary access keys in Microsoft WordChiavi di accesso primarie in Microsoft Word

Secondary access keys in Microsoft WordChiavi di accesso secondarie in Microsoft Word

Le chiavi di accesso possono essere duplicate per gli elementi in ambiti diversi. Nell'esempio precedente , "2" è la chiave di accesso per Annulla nell'ambito primario e anche "Corsivo" nell'ambito secondario.

In questo esempio viene illustrato come definire un ambito chiave di accesso.

<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>

Primary access keys for CommandBar

Ambito primario di CommandBar e chiavi di accesso supportate

Secondary access keys for CommandBar

Ambito secondario commandBar e chiavi di accesso supportate

Windows 10 Creators Update e versioni precedenti

Prima di Windows 10 Fall Creators Update, alcuni controlli, ad esempio CommandBar, non supportano gli ambiti predefiniti della chiave di accesso.

Nell'esempio seguente viene illustrato come supportare commandBar SecondaryCommands con i tasti di scelta, che sono disponibili quando viene richiamato un comando padre (simile alla barra multifunzione in 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 neccesay 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;
    }
}

Evitare conflitti di tasti di scelta

I conflitti di tasti di scelta si verificano quando due o più elementi nello stesso ambito hanno tasti di scelta duplicati o iniziano con gli stessi caratteri alfanumerici.

Il sistema risolve le chiavi di accesso duplicate elaborando la chiave di accesso del primo elemento aggiunto all'albero visuale, ignorando tutti gli altri.

Quando più tasti di scelta iniziano con lo stesso carattere (ad esempio, "A", "A1" e "AB"), il sistema elabora il tasto di scelta del singolo carattere e ignora tutti gli altri.

Evitare conflitti usando chiavi di accesso univoche o tramite comandi di ambito.

Scegliere i tasti di scelta

Quando si scelgono le chiavi di accesso, tenere presente quanto segue:

  • Usare un singolo carattere per ridurre al minimo le sequenze di tasti di scelta rapida e supportare i tasti di scelta rapida per impostazione predefinita (ALT+AccessKey)
  • Evitare di usare più di due caratteri
  • Evitare conflitti di tasti di scelta
  • Evitare caratteri difficili da distinguere da altri caratteri, ad esempio la lettera "I" e il numero "1" o la lettera "O" e il numero "0"
  • Usare precedenti noti di altre app popolari, ad esempio Word ("F" per "File", "H" per "Home" e così via)
  • Usare il primo carattere del nome del comando o un carattere con un'associazione stretta al comando che consente di richiamare
    • Se la prima lettera è già assegnata, usare una lettera il più vicina possibile alla prima lettera del nome del comando ("N" per Inserisci)
    • Usare una consonante distintiva dal nome del comando ("W" per View)
    • Usare una vocale dal nome del comando.

Localizzare le chiavi di accesso

Se l'app verrà localizzata in più lingue, è consigliabile anche localizzare le chiavi di accesso. Ad esempio, per "H" per "Home" in en-US e "I" per "Incio" in es-ES.

Usare l'estensione x:Uid nel markup per applicare risorse localizzate, come illustrato di seguito:

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

Le risorse per ogni lingua vengono aggiunte alle cartelle Stringa corrispondenti nel progetto:

English and Spanish resource string folders

Cartelle di stringhe di risorse in inglese e spagnolo

Le chiavi di accesso localizzate vengono specificate nel file resources.resw dei progetti:

Specify the AccessKey property specified in the resources.resw file

Specificare la proprietà AccessKey specificata nel file resources.resw

Per altre info, vedi Traduzione delle risorse dell'interfaccia utente

Posizionamento dei suggerimenti per i tasti

I suggerimenti per i tasti vengono visualizzati come badge mobili relativi all'elemento dell'interfaccia utente corrispondente, tenendo conto della presenza di altri elementi dell'interfaccia utente, di altri Suggerimenti chiave e del bordo dello schermo.

In genere, il percorso predefinito del suggerimento per i tasti è sufficiente e fornisce il supporto predefinito per l'interfaccia utente adattiva.

Example of automatic Key Tip placement

Esempio di posizionamento automatico del suggerimento per i tasti

Tuttavia, se è necessario un maggiore controllo sul posizionamento del suggerimento per i tasti, è consigliabile:

  1. Principio di associazione ovvio: l'utente può associare facilmente il controllo al suggerimento per i tasti.

    a. Il suggerimento chiave deve essere vicino all'elemento che ha la chiave di accesso (il proprietario).
    b. Il suggerimento per i tasti deve evitare di coprire gli elementi abilitati con tasti di scelta.
    c. Se non è possibile posizionare un suggerimento chiave vicino al proprietario, deve sovrapporsi al proprietario. 

  2. Individuabilità: l'utente può individuare rapidamente il controllo con il suggerimento per i tasti.

    a. Il suggerimento chiave non si sovrappone mai ad altri Suggerimenti chiave.  

  3. Facile analisi: L'utente può ignorare facilmente il key Suggerimenti.

    a. Il Suggerimenti chiave deve essere allineato tra loro e con l'elemento dell'interfaccia utente. b. Le Suggerimenti chiave devono essere raggruppate il più possibile. 

Posizione relativa

Utilizzare la proprietà KeyTipPlacementMode per personalizzare la posizione del suggerimento per i tasti per elemento o per gruppo.

Le modalità di posizionamento sono: Top, Bottom, Right, Left, Hidden, Center e Auto.

Screenshot showing the relative positions of the Key tip placement modes

Modalità di posizionamento del suggerimento chiave

La linea centrale del controllo viene utilizzata per calcolare l'allineamento verticale e orizzontale del suggerimento tasto.

Nell'esempio seguente viene illustrato come impostare il posizionamento del suggerimento per i tasti di un gruppo di controlli usando la proprietà KeyTipPlacementMode di un contenitore StackPanel.

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

Offset

Usare le proprietà KeyTipHorizontalOffset e KeyTipVerticalOffset di un elemento per un controllo ancora più granulare della posizione del suggerimento per i tasti.

Nota

Gli offset non possono essere impostati quando KeyTipPlacementMode è impostato su Auto.

La proprietà KeyTipHorizontalOffset indica la distanza da cui spostare il suggerimento tasto a sinistra o a destra.

Screenshot of vertical and horizontal Key Tip offsets for a button

Impostare gli offset del suggerimento per i tasti verticali e orizzontali per un pulsante

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

Allineamento dei bordi dello schermo {allineamento bordo #screen. ListParagraph}

La posizione di un suggerimento per i tasti viene modificata automaticamente in base al bordo dello schermo per garantire che il suggerimento per i tasti sia completamente visibile. In questo caso, la distanza tra il controllo e il punto di allineamento suggerimento chiave può essere diversa dai valori specificati per gli offset orizzontali e verticali.

Screenshot of Key Tip screen edge alignment

I Suggerimenti chiave vengono posizionati automaticamente in base al bordo dello schermo

Stile suggerimento chiave

È consigliabile usare il supporto predefinito key tip per i temi della piattaforma, incluso il contrasto elevato.

Se è necessario specificare stili di suggerimento chiave personalizzati, usare risorse dell'applicazione come KeyTipFontSize (dimensioni del carattere), KeyTipFontFamily (famiglia di caratteri), KeyTipBackground (sfondo), KeyTipForeground (primo piano), KeyTipPadding (riempimento), KeyTipBorderBrush(Border color) e KeyTipBorderThemeThickness (spessore del bordo).

Screenshot of Key tip customization options, including font, order, and color

Opzioni di personalizzazione dei suggerimenti chiave

Questo esempio illustra come modificare queste risorse dell'applicazione:

<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>

Tasti di scelta e Assistente vocale

Il framework XAML espone proprietà di automazione che consentono ai client di Automazione interfaccia utente di individuare informazioni sugli elementi nell'interfaccia utente.

Se si specifica la proprietà AccessKey in un controllo UIElement o TextElement, è possibile utilizzare la proprietà AutomationProperties.AccessKey per ottenere questo valore. I client di accessibilità, ad esempio Assistente vocale, leggono il valore di questa proprietà ogni volta che un elemento ottiene lo stato attivo.

Esempi