Condividi tramite


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 rapidamente e interagire con l'interfaccia utente visibile di un'app tramite una tastiera anziché un dispositivo puntatore (ad esempio tocco o mouse).

L'app di Windows offre supporto integrato per i controlli della piattaforma sia per i tasti di accesso basati su tastiera che per il feedback visivo dell'interfaccia utente tramite segnali visivi denominati indicazioni dei tasti.

Annotazioni

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

Vedi 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, consultare l'argomento eventi di tastiera.

Informazioni generali

Un tasto di accesso è una combinazione del tasto Alt e di uno o più tasti alfanumerici, talvolta chiamati mnemonico, in genere premuti in sequenza, invece di simultaneamente.

I suggerimenti per i tasti sono badge visualizzati accanto ai controlli che supportano i tasti di scelta quando l'utente preme alt. Ogni keytip contiene i tasti alfanumerici che attivano il controllo associato.

Annotazioni

I tasti di scelta rapida sono supportati automaticamente per i tasti di accesso con un singolo carattere alfanumerico. Ad esempio, premendo contemporaneamente ALT+F in Word viene aperto il menu File senza visualizzare i suggerimenti per i tasti.

Premendo il tasto Alt si attiva la funzionalità del tasto di accesso e vengono visualizzate le combinazioni di tasti attualmente disponibili nei tasti di scelta. 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.

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

badge di suggerimento per i tasti di scelta in Microsoft Word

badge KeyTip per i tasti 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 accesso, la scorciatoia (se un singolo alfanumerico) e il suggerimento 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 rapida rendono l'app più accessibile per gli utenti con disabilità motorie, inclusi quelli che possono premere solo un tasto alla volta o hanno difficoltà a usare il mouse.

    Un'interfaccia utente della tastiera ben progettata è un aspetto importante dell'accessibilità software. Consente agli utenti con problemi di vista o con determinate disabilità motorie di navigare in un'app e interagire con le sue funzionalità. Tali utenti potrebbero non essere in grado di usare un mouse e si basano invece su varie tecnologie di assistive technology, ad esempio strumenti di miglioramento della tastiera, tastiere su schermo, ingrandimenti dello schermo, utilità per la lettura dello schermo e utilità di input vocale. Per questi utenti, la copertura completa dei comandi è fondamentale.

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

    Gli utenti esperti spesso hanno 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, l'efficienza e la coerenza sono fondamentali; 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 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 dei tasti di scelta: 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. La prima mostra le chiavi di accesso primarie che consentono a un utente di selezionare una scheda e altri comandi di primo livello e la seconda mostra i tasti di scelta secondari per la scheda Home.

Chiavi di accesso primarie in Microsoft Word Chiavi di accesso primarie in Microsoft Word

Chiavi di accesso secondarie in Microsoft Word chiavi 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.

Di seguito viene illustrato come definire un ambito della 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>

Chiavi di accesso primarie per CommandBar

L'ambito primario di CommandBar e le chiavi di accesso supportate

chiavi di accesso secondarie per CommandBar

Ambito secondario della CommandBar e tasti di scelta rapida supportati

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 mostrato come supportare i SecondaryCommands della CommandBar con i tasti di accesso rapido, che diventano disponibili una volta attivato un comando principale (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 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;
    }
}

Evitare conflitti di tasti di accesso

I conflitti tra i 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 alla struttura ad 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 accesso a un singolo carattere e ignora tutti gli altri.

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

Scegliere le chiavi di accesso

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

  • Usare un singolo carattere per ridurre al minimo le sequenze di tasti e supportare i tasti acceleratori (Alt+AccessKey) per impostazione predefinita.
  • Evitare di usare più di due caratteri
  • Evitare conflitti di tasti di accesso
  • 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 comuni, 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 ("V" per Visualizza)
    • Usare una vocale dal nome del comando.

Localizzare le chiavi di accesso

Se l'app verrà localizzata in più lingue, devi anche valutare la possibilità di 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 stringhe corrispondenti nel progetto:

cartelle di stringhe di risorse in inglese e spagnolo

cartelle di stringhe di risorse in inglese e spagnolo

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

Specificare la proprietà AccessKey specificata nel file resources.resw

Specificare la proprietà AccessKey specificata nel file resources.resw

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

Posizionamento dei suggerimenti per i tasti

I suggerimenti per i tasti vengono visualizzati come badge fluttuanti relativi all'elemento dell'interfaccia utente corrispondente, considerando la presenza di altri elementi dell'interfaccia utente, di altri suggerimenti per i tasti e dei bordi dello schermo.

In genere, la posizione predefinita del comando rapido è sufficiente e fornisce il supporto integrato per l'interfaccia utente adattiva.

esempio di posizionamento automatico dei tasti di scelta rapida

esempio di posizionamento automatico dei suggerimenti per i tasti di scelta rapida

Tuttavia, se è necessario un maggiore controllo sul posizionamento delle descrizioni dei tasti, è consigliabile quanto segue:

  1. principio di associazione ovvio: l'utente può associare facilmente il controllo al suggerimento del tasto.

    a) Il suggerimento chiave deve essere chiudere all'elemento con la chiave di accesso (il proprietario).
    b. Il suggerimento per i tasti deve evitare di coprire gli elementi abilitati con chiavi di accesso.
    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 tasto di scelta rapida.

    a) Il suggerimento chiave non mai si sovrappone altri suggerimenti chiave.  

  3. Facile scansione: L'utente può scorrere facilmente le scorciatoie da tastiera.

    a) i suggerimenti per i tasti devono essere allineati tra loro e con l'elemento dell'interfaccia utente. b. i suggerimenti chiave devono essere raggruppati il più possibile. 

Posizione relativa

Utilizzare la proprietà KeyTipPlacementMode per personalizzare la posizione del keytip su base per elemento o per gruppo.

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

Screenshot che mostra le posizioni relative delle modalità di posizionamento dei suggerimenti chiave

modalità di posizionamento dei suggerimenti per i tasti di scelta rapida

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

Nell'esempio seguente mostra come impostare il posizionamento di KeyTip di un gruppo di controlli usando la proprietà KeyTipPlacementMode di un contenitore di tipo StackPanel.

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

Compensazioni

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

Annotazioni

Non è possibile impostare offset quando KeyTipPlacementMode è impostato su Auto.

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

Screenshot degli offset verticali e orizzontali dei keytip per un pulsante

Impostare gli offset verticale e orizzontale dei prompt di scelta rapida per un pulsante

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

Allineamento dei bordi dello schermo {#screen-edge-alignment . ListParagraph}

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

Screenshot dell'allineamento al bordo della schermata delle scorciatoie da tastiera

i tasti di scelta rapida vengono posizionati automaticamente in base al bordo dello schermo

Stile suggerimento tasti

Si consiglia di utilizzare il supporto predefinito per i suggerimenti di tasti nei temi della piattaforma, incluso il contrasto elevato.

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

Screenshot delle opzioni di personalizzazione delle descrizioni dei tasti, tra cui carattere, ordine e colore

opzioni di personalizzazione delle descrizioni dei tasti

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>

Chiavi di accesso 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à, come Assistente vocale, leggono il valore di questa proprietà ogni volta che un elemento riceve il focus.

esempi di