Configurer le lecteur d'écran JAWS pour Unified Service Desk

JAWS (Job Access With Speech) est un programme de lecteur d’écran d’ordinateur pour Microsoft Windows qui permet aux utilisateurs aveugles et malvoyants de lire l’écran avec une sortie texte-voix ou via un affichage en Braille actualisable.

Unified Service Desk prend en charge JAWS version 18 pour le lecteur d’écran Windows pour sortie vocale dans le client Unified Service Desk. Tous les contrôles Unified Service Desk et contrôles personnalisés composant le package Client web sont compatibles avec la technologie JAWS. Pour les contrôles personnalisés que vous développez dans le cadre du package de solution, vous devez définir les propriétés nécessaires pour rendre les contrôles compatibles à la technologie JAWS.

Prise en charge de la technologie JAWS pour les contrôles pour lesquels le focus est possible (contrôles interactifs)

Vous pouvez configurer la prise en charge du lecteur d’écran JAWS pour les contrôles pour lesquels le focus est possible (contrôles interactifs), par exemple les boutons, les zones de liste, les menus, les options de menu et les cases à cocher.

Pour que le lecteur d’écran JAWS lise un contrôle pour lequel le focus est possible, vous devez spécifier une valeur pour AutomationProperties.Name Attached Property.

Par exemple :

<Button Width="30" Height="30" Name="Save" ToolTip="Click to save the doc." AutomationProperties.Name="Save" Focusable="True" IsTabStop="True">

Prise en charge de la technologie JAWS pour les info-bulles

Par défaut, le lecteur d’écran JAWS ne prend pas en charge la lecture du texte des info-bulles de la barre d’outils. Cependant, vous pouvez créer des scripts personnalisés JAWS pour permettre au lecteur d’écran JAWS de lire le texte d’une info-bulle.

Voici un exemple de script pour vérifier le texte du nom du bouton et celui de l'info-bulle (texte d'aide). Dans Unified Service Desk, si vous ne configurez pas le texte de l’info-bulle explicitement, le système applique le nom du bouton au texte de l’info-bulle. Dans ce cas, JAWS lit à la fois le nom du bouton et le texte de l’info-bulle. Pour éviter la lecture du texte du nom du bouton et de l'info-bulle, vous pouvez créer un script personnalisé pour vérifier si le texte du nom du bouton et de l'info-bulle est le même.

Dans l’exemple de script, si le texte d’aide est différent du nom du bouton, le lecteur d’écran JAWS lit l’info-bulle (texte d’aide).

include "hjConst.jsh"
void function SayObjectTypeAndText(int nLevel)
SayObjectTypeAndText(nLevel)
if nLevel == 0
   var string sHelp = GetObjectHelp()
   var string objName = GetObjectName()
   if sHelp && sHelp != objName // If help text is not equal to the object name, the JAWS screen reads the help text
      Say(sHelp,ot_help)
   endIf
endIf
EndFunction

Dans l'exemple d'image, le nom du bouton et le texte de l'info-bulle sont les mêmes : RAPPEL. Dans ce scénario, le script compare le texte du nom du bouton avec celui de l’info-bulle, qui sont différents et par conséquent, JAWS ne lit pas le texte de l’info-bulle.

Bouton Unified Service Desk avec la même info-bulle.

Dans l'exemple d'image, le nom du bouton RAPPEL et le texte de l'info-bulle sont différents : DÉFINIR UN RAPPEL. Dans ce scénario, l’écran JAWS indique le texte de l’info-bulle.

Bouton Unified Service Desk avec une info-bulle différente.

Vous pouvez saisir le script de votre application dans JAWS. Pour plus d'informations sur la rédaction des scripts, voir les notions de base de l'écriture d'un script.

Après avoir écrit le script, nommez le fichier en fonction du nom du produit (exemple : UnifiedServiceDesk.jss). Il s’agit du fichier script d’application qui doit être enregistré dans le dossier des paramètres utilisateur ou le dossier JAWS partagé afin de le charger avec l’application au moment de l’exécution. Informations supplémentaires : Scripts et fichiers script JAWS.

Prise en charge de la technologie JAWS pour les contrôles pour lesquels le focus n'est pas possible (contrôles non interactifs)

Selon la conception du produit, la position des onglets ne met pas l'accent sur les contrôles pour lesquels le focus n'est pas possible (contrôles non interactifs). Par conséquent, le lecteur d’écran JAWS ne lit pas les contrôles pour lesquels le focus n’est pas possible, comme les blocs de texte, les images et les étiquettes.

Solution de contournement

L’un des moyens de permettre au lecteur d’écran JAWS de lire les contrôles pour lesquels le focus n’est pas possible est d’encapsuler le contrôle à l’aide de l’élément UserControl, ce qui permet à la technologie JAWS de lire ces types de contrôles.

Note

Cette méthode d’activation de la prise en charge du lecteur d’écran JAWS pour les contrôles pour lesquels le focus n’est pas possible est aussi une solution, mais ce n’est pas la manière recommandée officiellement.

Lorsque le lecteur JAWS se positionne sur le premier contrôle pour lequel le focus est possible, il lit les contrôles pour lesquels le focus n’est pas possible, puis il lit les contrôles avec focus possible.

L'exemple XAML du contrôle Vue d'ensemble de la session montre comment UserControl est encapsulé par rapport à la grille.

<TabControl xmlns:controlStyles="clr-namespace:Microsoft.Crm.UnifiedServiceDesk.Dynamics.Controls.Styles;assembly=Microsoft.Crm.UnifiedServiceDesk.Dynamics">
    <controlStyles:USDTab Header="General">
<UserControl>
        <Grid Margin="0"
          xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
          xmlns:CCA="clr-namespace:Microsoft.Crm.UnifiedServiceDesk.Dynamics;assembly=Microsoft.Crm.UnifiedServiceDesk.Dynamics">
<Grid.Resources>
<CCA:CRMImageConverter x:Key="CRMImageLoader" />
<Style x:Key="ImageLogo" TargetType="{x:Type Image}">
<Setter Property="Width" Value="16" /> 
<Setter Property="Height" Value="16" /> 
<!--<Setter Property="Margin" Value="5" /> -->
</Style>
    </Grid.Resources>            
<Grid.RowDefinitions>
                <RowDefinition Height="auto" />
                <RowDefinition Height="auto" />
                <RowDefinition Height="auto" />
                <RowDefinition Height="auto" />
                <RowDefinition Height="auto" />
                <RowDefinition Height="auto" />
            </Grid.RowDefinitions>
         <TextBlock Margin="5,6,0,0" Grid.Row="0" TextWrapping="Wrap" Padding="5,0,0,5"  FontFamily="Tohoma" FontSize="12" Text="Account Name: [[account.name]x]"   Foreground="#262626"/>
<TextBlock Margin="5,0,0,0" Grid.Row="4" TextWrapping="Wrap" Padding="3,0,0,3" FontFamily="Tohoma" FontSize="12" Style="{DynamicResource AutoCollapse}" Text="[[$Context.RevenuePotential]+]" />
<!--<TextBlock Margin="5,0,0,0" Grid.Row="1" TextWrapping="Wrap" Padding="3,0,0,3" Grid.ColumnSpan="3" FontFamily="Tohoma" FontSize="12" Style="{DynamicResource AutoCollapse}" Text="Phone: [[account.telephone1]x]"/>-->
<StackPanel  Orientation="Horizontal"  Grid.Row="2" Margin="5,0,0,0">
<Image Style="{DynamicResource ImageLogo}" Source="{Binding Source=msdyusd_Phone16, Converter={StaticResource CRMImageLoader}}" />
     <TextBlock  TextWrapping="Wrap" Padding="5,0,0,5" Text="Phone: " VerticalAlignment="Center"   Foreground="#262626" />
     <TextBlock  Padding="5,0,0,5" VerticalAlignment="Center">
     <Hyperlink Command="CCA:ActionCommands.DoActionCommand" CommandParameter="https://uii/CRM Global Manager/LaunchURL?callto:tel:[[account.telephone1]u+]" FontFamily="Tohoma" FontSize="12">[[account.telephone1]+]</Hyperlink>
       </TextBlock>
   </StackPanel >
<StackPanel  Orientation="Horizontal"  Grid.Row="1" Margin="5,0,0,0">
<Image Style="{DynamicResource ImageLogo}" Source="{Binding Source=msdyusd_Email16, Converter={StaticResource CRMImageLoader}}" />
<Label >
<TextBlock  TextWrapping="Wrap" Padding="3,0,0,3" Text="Email: [[Current Account.emailaddress1]+x]"   Foreground="#262626" />
</Label>
</StackPanel>
<TextBlock Margin="5,0,0,0" Grid.Row="3" TextWrapping="Wrap" Padding="5,0,0,5" Grid.ColumnSpan="3" FontFamily="Tohoma" FontSize="12" Style="{DynamicResource AutoCollapse}" Text="Primary Contact: [[account.primarycontactid.name]x]"   Foreground="#262626" />
</Grid>
</UserControl>
</controlStyles:USDTab>
<controlStyles:USDTab Header="Social Info">
    <Grid Margin="1"
       xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
       xmlns:CCA="clr-namespace:Microsoft.Crm.UnifiedServiceDesk.Dynamics;assembly=Microsoft.Crm.UnifiedServiceDesk.Dynamics">
     <Grid.RowDefinitions>
        <RowDefinition Height="auto" />
        <RowDefinition Height="auto" />
        <RowDefinition Height="auto" />
     </Grid.RowDefinitions>
      <TextBlock Margin="5,6,0,0" FontSize="12" Height="20" Grid.Row="0" Text="Twitter:     "   Foreground="#262626" >
       <Hyperlink Command="CCA:ActionCommands.DoActionCommand" CommandParameter="https://uii/Twitter/Navigate?about:blank">
               [[Account.msdyusd_twitter]x+]
       </Hyperlink>
     </TextBlock>
     <TextBlock Margin="5,0,0,0" FontSize="12" Height="50" Grid.Row="2"  Text="Facebook: "   Foreground="#262626">
        <Hyperlink Command="CCA:ActionCommands.DoActionCommand" CommandParameter="https://uii/Facebook/Navigate?about:blank">
                    [[Account.msdyusd_facebook]x+]
        </Hyperlink>
       </TextBlock>
        </Grid>
    </controlStyles:USDTab>
</TabControl>